Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qEBcK-0002Cj-G5 for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Jun 2023 16:32:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1qEBcJ-0000aU-3N for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Jun 2023 16:32:35 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qEAwb-0000Xj-Bw for pgsql-hackers@lists.postgresql.org; Tue, 27 Jun 2023 15:49:29 +0000 Received: from forward501b.mail.yandex.net ([178.154.239.145]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qEAwX-000nwz-P7 for pgsql-hackers@postgresql.org; Tue, 27 Jun 2023 15:49:28 +0000 Received: from mail-nwsmtp-smtp-production-main-69.iva.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-69.iva.yp-c.yandex.net [IPv6:2a02:6b8:c0c:3c81:0:640:d488:0]) by forward501b.mail.yandex.net (Yandex) with ESMTP id B1CA05ECD4; Tue, 27 Jun 2023 18:49:23 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-69.iva.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id KnN2971DUSw0-mZlR3vuZ; Tue, 27 Jun 2023 18:49:21 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1687880961; bh=/NE5nFaTkK/v1uTf211sbnJOZwqT/GC2fX0gEai1ovM=; h=In-Reply-To:Cc:Date:References:To:Subject:Message-ID:From; b=WHC8J4DXqd6odReZ783/d6nk6LO7l7hN4TYjeoCAdtuiwBvhW7G4UH2gGlaRCORQO p7JEL/gab/jcn1566+mJlSLdpeqYpEFhgsH4e1IkZxee4PHXfY3/T59o4KaPqIaK0+ A3MgGvJkFF7Ru7yh0S/a1N1hhOkjhOMjPVf0KX94= Authentication-Results: mail-nwsmtp-smtp-production-main-69.iva.yp-c.yandex.net; dkim=pass header.i=@yandex.ru Content-Type: multipart/mixed; boundary="------------mTW9MCqgDuu08yQtZP7WvmpP" Message-ID: Date: Tue, 27 Jun 2023 18:49:20 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 Subject: Re: POC, WIP: OR-clause support for indexes Content-Language: en-US To: Peter Geoghegan Cc: Marcos Pegoraro , Alena Rybakina , Andrey Lepikhov , pgsql-hackers@postgresql.org, teodor@sigaev.ru References: <567ED6CA.2040504@sigaev.ru> <05838ca5-1c78-af81-34c1-19cae2516b61@postgrespro.ru> <919bfbcb-f812-758d-d687-71f89f0d9a68@postgrespro.ru> <7829312a-eb6b-b9ba-9719-71c9bc410884@yandex.ru> From: Alena Rybakina In-Reply-To: <7829312a-eb6b-b9ba-9719-71c9bc410884@yandex.ru> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------mTW9MCqgDuu08yQtZP7WvmpP Content-Type: multipart/alternative; boundary="------------EsVlMn8xvGGn4u3hKjH0Ne6l" --------------EsVlMn8xvGGn4u3hKjH0Ne6l Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 27.06.2023 16:19, Alena Rybakina wrote: > Thank you for your feedback, your work is also very interesting and > important, and I will be happy to review it. I learned something new > from your letter, thank you very much for that! > > I analyzed the buffer consumption when I ran control regression tests > using my patch. diff shows me that there is no difference between the > number of buffer block scans without and using my patch, as far as I > have seen. (regression.diffs) > > > In addition, I analyzed the scheduling and duration of the execution > time of the source code and with my applied patch. I generated 20 > billion data from pgbench and plotted the scheduling and execution > time depending on the number of "or" expressions. > By runtime, I noticed a clear acceleration for queries when using the > index, but I can't say the same when the index is disabled. > At first I turned it off in this way: > 1)enable_seqscan='off' > 2)enable_indexonlyscan='off' > enable_indexscan='off' > > Unfortunately, it is not yet clear which constant needs to be set when > the transformation needs to be done, I will still study in detail. > (the graph for all this is presented in graph1.svg) > \\ > -- > Regards, > Alena Rybakina Sorry, just now I noticed that there were incorrect names in the headings of the pictures, I corrected it. I also attach its html copy, because it may be more convenient for viewing it. -- Regards, Alena Rybakina --------------EsVlMn8xvGGn4u3hKjH0Ne6l Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On 27.06.2023 16:19, Alena Rybakina wrote:
Thank you for your feedback, your work is also very interesting and important, and I will be happy to review it. I learned something new from your letter, thank you very much for that!

I analyzed the buffer consumption when I ran control regression tests using my patch. diff shows me that there is no difference between the number of buffer block scans without and using my patch, as far as I have seen. (regression.diffs)


In addition, I analyzed the scheduling and duration of the execution time of the source code and with my applied patch. I generated 20 billion data from pgbench and plotted the scheduling and execution time depending on the number of "or" expressions.
= By runtime, I noticed a clear acceleration for queries when using the index, but I can't say the same when the index is disabled.
= At first I turned it off in this way:
1)enable_seqscan=3D'off'
2)enable_indexonlyscan=3D'off'
enable_indexscan=3D'off'

Unfortunately, it is not yet clear which constant needs to be set when the transformation needs to be done, I will still study in detail. (the graph for all this is presented in graph1.svg)
\\
--=20
Regards,
Alena Rybakina
Sorry, just now I noticed that there were incorrect names in the headings of the pictures, I corrected it. I also attach its html copy, because it may be more convenient for viewing it.
--=20
Regards,
Alena Rybakina
--------------EsVlMn8xvGGn4u3hKjH0Ne6l-- --------------mTW9MCqgDuu08yQtZP7WvmpP Content-Type: text/html; charset=UTF-8; name="graphs.html" Content-Disposition: attachment; filename="graphs.html" Content-Transfer-Encoding: base64 CjwhLS0gc2F2ZWQgZnJvbSB1cmw9KDAwNjIpZmlsZTovLy9ob21lL2FsZW5hL0Rvd25sb2Fk cy9UZWxlZ3JhbSUyMERlc2t0b3AvdGVtcC1wbG90Lmh0bWwgLS0+CjxodG1sPjxoZWFkPjxt ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy c2V0PVVURi04Ij48c3R5bGUgaWQ9InBsb3RseS5qcy1zdHlsZS1nbG9iYWwiPjwvc3R5bGU+ PHN0eWxlIGlkPSJwbG90bHkuanMtc3R5bGUtbW9kZWJhci0xYmQ4YTgiPjwvc3R5bGU+PC9o ZWFkPgo8Ym9keT4KICAgIDxkaXY+ICAgICAgICAgICAgICAgICAgICAgICAgPHNjcmlwdCB0 eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPndpbmRvdy5QbG90bHlDb25maWcgPSB7TWF0aEpheENv bmZpZzogJ2xvY2FsJ307PC9zY3JpcHQ+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph dmFzY3JpcHQiPi8qKgoqIHBsb3RseS5qcyB2Mi4xMi4xCiogQ29weXJpZ2h0IDIwMTItMjAy MiwgUGxvdGx5LCBJbmMuCiogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKiBMaWNlbnNlZCB1bmRl ciB0aGUgTUlUIGxpY2Vuc2UKKi8KIWZ1bmN0aW9uKHQpe2lmKCJvYmplY3QiPT10eXBlb2Yg ZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9dCgp O2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUo W10sdCk7ZWxzZXsoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRlZmlu ZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2Vs Zjp0aGlzKS5QbG90bHk9dCgpfX0oKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHQoZSxy LG4pe2Z1bmN0aW9uIGkobyxzKXtpZighcltvXSl7aWYoIWVbb10pe3ZhciBsPSJmdW5jdGlv biI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFzJiZsKXJldHVybiBsKG8sITApO2lm KGEpcmV0dXJuIGEobywhMCk7dmFyIGM9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUg JyIrbysiJyIpO3Rocm93IGMuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsY312YXIgdT1yW29d PXtleHBvcnRzOnt9fTtlW29dWzBdLmNhbGwodS5leHBvcnRzLChmdW5jdGlvbih0KXtyZXR1 cm4gaShlW29dWzFdW3RdfHx0KX0pLHUsdS5leHBvcnRzLHQsZSxyLG4pfXJldHVybiByW29d LmV4cG9ydHN9Zm9yKHZhciBhPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJl LG89MDtvPG4ubGVuZ3RoO28rKylpKG5bb10pO3JldHVybiBpfSh7MTpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9zcmMvbGliIiksaT17IlgsWCBkaXYiOidk aXJlY3Rpb246bHRyO2ZvbnQtZmFtaWx5OiJPcGVuIFNhbnMiLHZlcmRhbmEsYXJpYWwsc2Fu cy1zZXJpZjttYXJnaW46MDtwYWRkaW5nOjA7JywiWCBpbnB1dCxYIGJ1dHRvbiI6J2ZvbnQt ZmFtaWx5OiJPcGVuIFNhbnMiLHZlcmRhbmEsYXJpYWwsc2Fucy1zZXJpZjsnLCJYIGlucHV0 OmZvY3VzLFggYnV0dG9uOmZvY3VzIjoib3V0bGluZTpub25lOyIsIlggYSI6InRleHQtZGVj b3JhdGlvbjpub25lOyIsIlggYTpob3ZlciI6InRleHQtZGVjb3JhdGlvbjpub25lOyIsIlgg LmNyaXNwIjoic2hhcGUtcmVuZGVyaW5nOmNyaXNwRWRnZXM7IiwiWCAudXNlci1zZWxlY3Qt bm9uZSI6Ii13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7 LW1zLXVzZXItc2VsZWN0Om5vbmU7LW8tdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpu b25lOyIsIlggc3ZnIjoib3ZlcmZsb3c6aGlkZGVuOyIsIlggc3ZnIGEiOiJmaWxsOiM0NDdh ZGI7IiwiWCBzdmcgYTpob3ZlciI6ImZpbGw6IzNjNmRjNTsiLCJYIC5tYWluLXN2ZyI6InBv c2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtwb2ludGVyLWV2ZW50czpub25lOyIsIlgg Lm1haW4tc3ZnIC5kcmFnbGF5ZXIiOiJwb2ludGVyLWV2ZW50czphbGw7IiwiWCAuY3Vyc29y LWRlZmF1bHQiOiJjdXJzb3I6ZGVmYXVsdDsiLCJYIC5jdXJzb3ItcG9pbnRlciI6ImN1cnNv cjpwb2ludGVyOyIsIlggLmN1cnNvci1jcm9zc2hhaXIiOiJjdXJzb3I6Y3Jvc3NoYWlyOyIs IlggLmN1cnNvci1tb3ZlIjoiY3Vyc29yOm1vdmU7IiwiWCAuY3Vyc29yLWNvbC1yZXNpemUi OiJjdXJzb3I6Y29sLXJlc2l6ZTsiLCJYIC5jdXJzb3Itcm93LXJlc2l6ZSI6ImN1cnNvcjpy b3ctcmVzaXplOyIsIlggLmN1cnNvci1ucy1yZXNpemUiOiJjdXJzb3I6bnMtcmVzaXplOyIs IlggLmN1cnNvci1ldy1yZXNpemUiOiJjdXJzb3I6ZXctcmVzaXplOyIsIlggLmN1cnNvci1z dy1yZXNpemUiOiJjdXJzb3I6c3ctcmVzaXplOyIsIlggLmN1cnNvci1zLXJlc2l6ZSI6ImN1 cnNvcjpzLXJlc2l6ZTsiLCJYIC5jdXJzb3Itc2UtcmVzaXplIjoiY3Vyc29yOnNlLXJlc2l6 ZTsiLCJYIC5jdXJzb3Itdy1yZXNpemUiOiJjdXJzb3I6dy1yZXNpemU7IiwiWCAuY3Vyc29y LWUtcmVzaXplIjoiY3Vyc29yOmUtcmVzaXplOyIsIlggLmN1cnNvci1udy1yZXNpemUiOiJj dXJzb3I6bnctcmVzaXplOyIsIlggLmN1cnNvci1uLXJlc2l6ZSI6ImN1cnNvcjpuLXJlc2l6 ZTsiLCJYIC5jdXJzb3ItbmUtcmVzaXplIjoiY3Vyc29yOm5lLXJlc2l6ZTsiLCJYIC5jdXJz b3ItZ3JhYiI6ImN1cnNvcjotd2Via2l0LWdyYWI7Y3Vyc29yOmdyYWI7IiwiWCAubW9kZWJh ciI6InBvc2l0aW9uOmFic29sdXRlO3RvcDoycHg7cmlnaHQ6MnB4OyIsIlggLmVhc2UtYmci OiItd2Via2l0LXRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuM3MgZWFzZSAwczstbW96 LXRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuM3MgZWFzZSAwczstbXMtdHJhbnNpdGlv bjpiYWNrZ3JvdW5kLWNvbG9yIC4zcyBlYXNlIDBzOy1vLXRyYW5zaXRpb246YmFja2dyb3Vu ZC1jb2xvciAuM3MgZWFzZSAwczt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjNzIGVh c2UgMHM7IiwiWCAubW9kZWJhci0taG92ZXI+Om5vdCgud2F0ZXJtYXJrKSI6Im9wYWNpdHk6 MDstd2Via2l0LXRyYW5zaXRpb246b3BhY2l0eSAuM3MgZWFzZSAwczstbW96LXRyYW5zaXRp b246b3BhY2l0eSAuM3MgZWFzZSAwczstbXMtdHJhbnNpdGlvbjpvcGFjaXR5IC4zcyBlYXNl IDBzOy1vLXRyYW5zaXRpb246b3BhY2l0eSAuM3MgZWFzZSAwczt0cmFuc2l0aW9uOm9wYWNp dHkgLjNzIGVhc2UgMHM7IiwiWDpob3ZlciAubW9kZWJhci0taG92ZXIgLm1vZGViYXItZ3Jv dXAiOiJvcGFjaXR5OjE7IiwiWCAubW9kZWJhci1ncm91cCI6ImZsb2F0OmxlZnQ7ZGlzcGxh eTppbmxpbmUtYmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmctbGVmdDo4cHg7 cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246bWlkZGxlO3doaXRlLXNwYWNlOm5v d3JhcDsiLCJYIC5tb2RlYmFyLWJ0biI6InBvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZTox NnB4O3BhZGRpbmc6M3B4IDRweDtoZWlnaHQ6MjJweDtjdXJzb3I6cG9pbnRlcjtsaW5lLWhl aWdodDpub3JtYWw7Ym94LXNpemluZzpib3JkZXItYm94OyIsIlggLm1vZGViYXItYnRuIHN2 ZyI6InBvc2l0aW9uOnJlbGF0aXZlO3RvcDoycHg7IiwiWCAubW9kZWJhci52ZXJ0aWNhbCI6 ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC13cmFwOndyYXA7YWxp Z24tY29udGVudDpmbGV4LWVuZDttYXgtaGVpZ2h0OjEwMCU7IiwiWCAubW9kZWJhci52ZXJ0 aWNhbCBzdmciOiJ0b3A6LTFweDsiLCJYIC5tb2RlYmFyLnZlcnRpY2FsIC5tb2RlYmFyLWdy b3VwIjoiZGlzcGxheTpibG9jaztmbG9hdDpub25lO3BhZGRpbmctbGVmdDowcHg7cGFkZGlu Zy1ib3R0b206OHB4OyIsIlggLm1vZGViYXIudmVydGljYWwgLm1vZGViYXItZ3JvdXAgLm1v ZGViYXItYnRuIjoiZGlzcGxheTpibG9jazt0ZXh0LWFsaWduOmNlbnRlcjsiLCJYIFtkYXRh LXRpdGxlXTpiZWZvcmUsWCBbZGF0YS10aXRsZV06YWZ0ZXIiOiJwb3NpdGlvbjphYnNvbHV0 ZTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTstbW96LXRyYW5zZm9y bTp0cmFuc2xhdGUzZCgwLCAwLCAwKTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAs IDApOy1vLXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTt0cmFuc2Zvcm06dHJhbnNs YXRlM2QoMCwgMCwgMCk7ZGlzcGxheTpub25lO29wYWNpdHk6MDt6LWluZGV4OjEwMDE7cG9p bnRlci1ldmVudHM6bm9uZTt0b3A6MTEwJTtyaWdodDo1MCU7IiwiWCBbZGF0YS10aXRsZV06 aG92ZXI6YmVmb3JlLFggW2RhdGEtdGl0bGVdOmhvdmVyOmFmdGVyIjoiZGlzcGxheTpibG9j aztvcGFjaXR5OjE7IiwiWCBbZGF0YS10aXRsZV06YmVmb3JlIjonY29udGVudDoiIjtwb3Np dGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMCk7Ym9yZGVyOjZweCBzb2xp ZCByZ2JhKDAsMCwwLDApO3otaW5kZXg6MTAwMjttYXJnaW4tdG9wOi0xMnB4O2JvcmRlci1i b3R0b20tY29sb3I6IzY5NzM4YTttYXJnaW4tcmlnaHQ6LTZweDsnLCJYIFtkYXRhLXRpdGxl XTphZnRlciI6ImNvbnRlbnQ6YXR0cihkYXRhLXRpdGxlKTtiYWNrZ3JvdW5kOiM2OTczOGE7 Y29sb3I6I2ZmZjtwYWRkaW5nOjhweCAxMHB4O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0 OjEycHg7d2hpdGUtc3BhY2U6bm93cmFwO21hcmdpbi1yaWdodDotMThweDtib3JkZXItcmFk aXVzOjJweDsiLCJYIC52ZXJ0aWNhbCBbZGF0YS10aXRsZV06YmVmb3JlLFggLnZlcnRpY2Fs IFtkYXRhLXRpdGxlXTphZnRlciI6InRvcDowJTtyaWdodDoyMDAlOyIsIlggLnZlcnRpY2Fs IFtkYXRhLXRpdGxlXTpiZWZvcmUiOiJib3JkZXI6NnB4IHNvbGlkIHJnYmEoMCwwLDAsMCk7 Ym9yZGVyLWxlZnQtY29sb3I6IzY5NzM4YTttYXJnaW4tdG9wOjhweDttYXJnaW4tcmlnaHQ6 LTMwcHg7IiwiWCAuc2VsZWN0LW91dGxpbmUiOiJmaWxsOm5vbmU7c3Ryb2tlLXdpZHRoOjE7 c2hhcGUtcmVuZGVyaW5nOmNyaXNwRWRnZXM7IiwiWCAuc2VsZWN0LW91dGxpbmUtMSI6InN0 cm9rZTojZmZmOyIsIlggLnNlbGVjdC1vdXRsaW5lLTIiOiJzdHJva2U6IzAwMDtzdHJva2Ut ZGFzaGFycmF5OjJweCAycHg7IixZOidmb250LWZhbWlseToiT3BlbiBTYW5zIix2ZXJkYW5h LGFyaWFsLHNhbnMtc2VyaWY7cG9zaXRpb246Zml4ZWQ7dG9wOjUwcHg7cmlnaHQ6MjBweDt6 LWluZGV4OjEwMDAwO2ZvbnQtc2l6ZToxMHB0O21heC13aWR0aDoxODBweDsnLCJZIHAiOiJt YXJnaW46MDsiLCJZIC5ub3RpZmllci1ub3RlIjoibWluLXdpZHRoOjE4MHB4O21heC13aWR0 aDoyNTBweDtib3JkZXI6MXB4IHNvbGlkICNmZmY7ei1pbmRleDozMDAwO21hcmdpbjowO2Jh Y2tncm91bmQtY29sb3I6IzhjOTdhZjtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTQwLDE1MSwx NzUsLjkpO2NvbG9yOiNmZmY7cGFkZGluZzoxMHB4O292ZXJmbG93LXdyYXA6YnJlYWstd29y ZDt3b3JkLXdyYXA6YnJlYWstd29yZDstbXMtaHlwaGVuczphdXRvOy13ZWJraXQtaHlwaGVu czphdXRvO2h5cGhlbnM6YXV0bzsiLCJZIC5ub3RpZmllci1jbG9zZSI6ImNvbG9yOiNmZmY7 b3BhY2l0eTouODtmbG9hdDpyaWdodDtwYWRkaW5nOjAgNXB4O2JhY2tncm91bmQ6bm9uZTti b3JkZXI6bm9uZTtmb250LXNpemU6MjBweDtmb250LXdlaWdodDpib2xkO2xpbmUtaGVpZ2h0 OjIwcHg7IiwiWSAubm90aWZpZXItY2xvc2U6aG92ZXIiOiJjb2xvcjojNDQ0O3RleHQtZGVj b3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyOyJ9O2Zvcih2YXIgYSBpbiBpKXt2YXIgbz1h LnJlcGxhY2UoL14sLywiICwiKS5yZXBsYWNlKC9YL2csIi5qcy1wbG90bHktcGxvdCAucGxv dGx5IikucmVwbGFjZSgvWS9nLCIucGxvdGx5LW5vdGlmaWVyIik7bi5hZGRTdHlsZVJ1bGUo byxpW2FdKX19LHsiLi4vc3JjL2xpYiI6NTAzfV0sMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYW5zZm9ybXMvYWdncmVnYXRlIil9LHsi Li4vc3JjL3RyYW5zZm9ybXMvYWdncmVnYXRlIjoxMTE4fV0sMzpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9iYXIiKX0seyIuLi9z cmMvdHJhY2VzL2JhciI6NjU2fV0sNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijtl LmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9iYXJwb2xhciIpfSx7Ii4uL3NyYy90cmFjZXMv YmFycG9sYXIiOjY2OX1dLDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBv cnRzPXQoIi4uL3NyYy90cmFjZXMvYm94Iil9LHsiLi4vc3JjL3RyYWNlcy9ib3giOjY3OX1d LDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy9j b21wb25lbnRzL2NhbGVuZGFycyIpfSx7Ii4uL3NyYy9jb21wb25lbnRzL2NhbGVuZGFycyI6 MzY0fV0sNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4v c3JjL3RyYWNlcy9jYW5kbGVzdGljayIpfSx7Ii4uL3NyYy90cmFjZXMvY2FuZGxlc3RpY2si OjY4OH1dLDg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4u L3NyYy90cmFjZXMvY2FycGV0Iil9LHsiLi4vc3JjL3RyYWNlcy9jYXJwZXQiOjcwN31dLDk6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFj ZXMvY2hvcm9wbGV0aCIpfSx7Ii4uL3NyYy90cmFjZXMvY2hvcm9wbGV0aCI6NzIxfV0sMTA6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFj ZXMvY2hvcm9wbGV0aG1hcGJveCIpfSx7Ii4uL3NyYy90cmFjZXMvY2hvcm9wbGV0aG1hcGJv eCI6NzI4fV0sMTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQo Ii4uL3NyYy90cmFjZXMvY29uZSIpfSx7Ii4uL3NyYy90cmFjZXMvY29uZSI6NzM0fV0sMTI6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFj ZXMvY29udG91ciIpfSx7Ii4uL3NyYy90cmFjZXMvY29udG91ciI6NzQ5fV0sMTM6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvY29u dG91cmNhcnBldCIpfSx7Ii4uL3NyYy90cmFjZXMvY29udG91cmNhcnBldCI6NzYwfV0sMTQ6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy9jb3Jl Iil9LHsiLi4vc3JjL2NvcmUiOjQ4MX1dLDE1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL2RlbnNpdHltYXBib3giKX0seyIuLi9z cmMvdHJhY2VzL2RlbnNpdHltYXBib3giOjc2OH1dLDE2OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhbnNmb3Jtcy9maWx0ZXIiKX0seyIu Li9zcmMvdHJhbnNmb3Jtcy9maWx0ZXIiOjExMTl9XSwxNzpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9mdW5uZWwiKX0seyIuLi9z cmMvdHJhY2VzL2Z1bm5lbCI6Nzc4fV0sMTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvZnVubmVsYXJlYSIpfSx7Ii4uL3NyYy90 cmFjZXMvZnVubmVsYXJlYSI6Nzg3fV0sMTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFuc2Zvcm1zL2dyb3VwYnkiKX0seyIuLi9zcmMv dHJhbnNmb3Jtcy9ncm91cGJ5IjoxMTIwfV0sMjA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvaGVhdG1hcCIpfSx7Ii4uL3NyYy90 cmFjZXMvaGVhdG1hcCI6ODAwfV0sMjE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvaGVhdG1hcGdsIil9LHsiLi4vc3JjL3RyYWNl cy9oZWF0bWFwZ2wiOjgxMX1dLDIyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Uu ZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL2hpc3RvZ3JhbSIpfSx7Ii4uL3NyYy90cmFjZXMv aGlzdG9ncmFtIjo4MjN9XSwyMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4 cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9oaXN0b2dyYW0yZCIpfSx7Ii4uL3NyYy90cmFjZXMv aGlzdG9ncmFtMmQiOjgyOX1dLDI0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Uu ZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL2hpc3RvZ3JhbTJkY29udG91ciIpfSx7Ii4uL3Ny Yy90cmFjZXMvaGlzdG9ncmFtMmRjb250b3VyIjo4MzN9XSwyNTpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9pY2ljbGUiKX0seyIu Li9zcmMvdHJhY2VzL2ljaWNsZSI6ODM5fV0sMjY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvaW1hZ2UiKX0seyIuLi9zcmMvdHJh Y2VzL2ltYWdlIjo4NTJ9XSwyNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCIuL2NvcmUiKTtuLnJlZ2lzdGVyKFt0KCIuL2JhciIpLHQoIi4vYm94IiksdCgiLi9o ZWF0bWFwIiksdCgiLi9oaXN0b2dyYW0iKSx0KCIuL2hpc3RvZ3JhbTJkIiksdCgiLi9oaXN0 b2dyYW0yZGNvbnRvdXIiKSx0KCIuL2NvbnRvdXIiKSx0KCIuL3NjYXR0ZXJ0ZXJuYXJ5Iiks dCgiLi92aW9saW4iKSx0KCIuL2Z1bm5lbCIpLHQoIi4vd2F0ZXJmYWxsIiksdCgiLi9pbWFn ZSIpLHQoIi4vcGllIiksdCgiLi9zdW5idXJzdCIpLHQoIi4vdHJlZW1hcCIpLHQoIi4vaWNp Y2xlIiksdCgiLi9mdW5uZWxhcmVhIiksdCgiLi9zY2F0dGVyM2QiKSx0KCIuL3N1cmZhY2Ui KSx0KCIuL2lzb3N1cmZhY2UiKSx0KCIuL3ZvbHVtZSIpLHQoIi4vbWVzaDNkIiksdCgiLi9j b25lIiksdCgiLi9zdHJlYW10dWJlIiksdCgiLi9zY2F0dGVyZ2VvIiksdCgiLi9jaG9yb3Bs ZXRoIiksdCgiLi9zY2F0dGVyZ2wiKSx0KCIuL3NwbG9tIiksdCgiLi9wb2ludGNsb3VkIiks dCgiLi9oZWF0bWFwZ2wiKSx0KCIuL3BhcmNvb3JkcyIpLHQoIi4vcGFyY2F0cyIpLHQoIi4v c2NhdHRlcm1hcGJveCIpLHQoIi4vY2hvcm9wbGV0aG1hcGJveCIpLHQoIi4vZGVuc2l0eW1h cGJveCIpLHQoIi4vc2Fua2V5IiksdCgiLi9pbmRpY2F0b3IiKSx0KCIuL3RhYmxlIiksdCgi Li9jYXJwZXQiKSx0KCIuL3NjYXR0ZXJjYXJwZXQiKSx0KCIuL2NvbnRvdXJjYXJwZXQiKSx0 KCIuL29obGMiKSx0KCIuL2NhbmRsZXN0aWNrIiksdCgiLi9zY2F0dGVycG9sYXIiKSx0KCIu L3NjYXR0ZXJwb2xhcmdsIiksdCgiLi9iYXJwb2xhciIpLHQoIi4vc2NhdHRlcnNtaXRoIiks dCgiLi9hZ2dyZWdhdGUiKSx0KCIuL2ZpbHRlciIpLHQoIi4vZ3JvdXBieSIpLHQoIi4vc29y dCIpLHQoIi4vY2FsZW5kYXJzIildKSxlLmV4cG9ydHM9bn0seyIuL2FnZ3JlZ2F0ZSI6Miwi Li9iYXIiOjMsIi4vYmFycG9sYXIiOjQsIi4vYm94Ijo1LCIuL2NhbGVuZGFycyI6NiwiLi9j YW5kbGVzdGljayI6NywiLi9jYXJwZXQiOjgsIi4vY2hvcm9wbGV0aCI6OSwiLi9jaG9yb3Bs ZXRobWFwYm94IjoxMCwiLi9jb25lIjoxMSwiLi9jb250b3VyIjoxMiwiLi9jb250b3VyY2Fy cGV0IjoxMywiLi9jb3JlIjoxNCwiLi9kZW5zaXR5bWFwYm94IjoxNSwiLi9maWx0ZXIiOjE2 LCIuL2Z1bm5lbCI6MTcsIi4vZnVubmVsYXJlYSI6MTgsIi4vZ3JvdXBieSI6MTksIi4vaGVh dG1hcCI6MjAsIi4vaGVhdG1hcGdsIjoyMSwiLi9oaXN0b2dyYW0iOjIyLCIuL2hpc3RvZ3Jh bTJkIjoyMywiLi9oaXN0b2dyYW0yZGNvbnRvdXIiOjI0LCIuL2ljaWNsZSI6MjUsIi4vaW1h Z2UiOjI2LCIuL2luZGljYXRvciI6MjgsIi4vaXNvc3VyZmFjZSI6MjksIi4vbWVzaDNkIjoz MCwiLi9vaGxjIjozMSwiLi9wYXJjYXRzIjozMiwiLi9wYXJjb29yZHMiOjMzLCIuL3BpZSI6 MzQsIi4vcG9pbnRjbG91ZCI6MzUsIi4vc2Fua2V5IjozNiwiLi9zY2F0dGVyM2QiOjM3LCIu L3NjYXR0ZXJjYXJwZXQiOjM4LCIuL3NjYXR0ZXJnZW8iOjM5LCIuL3NjYXR0ZXJnbCI6NDAs Ii4vc2NhdHRlcm1hcGJveCI6NDEsIi4vc2NhdHRlcnBvbGFyIjo0MiwiLi9zY2F0dGVycG9s YXJnbCI6NDMsIi4vc2NhdHRlcnNtaXRoIjo0NCwiLi9zY2F0dGVydGVybmFyeSI6NDUsIi4v c29ydCI6NDYsIi4vc3Bsb20iOjQ3LCIuL3N0cmVhbXR1YmUiOjQ4LCIuL3N1bmJ1cnN0Ijo0 OSwiLi9zdXJmYWNlIjo1MCwiLi90YWJsZSI6NTEsIi4vdHJlZW1hcCI6NTIsIi4vdmlvbGlu Ijo1MywiLi92b2x1bWUiOjU0LCIuL3dhdGVyZmFsbCI6NTV9XSwyODpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9pbmRpY2F0b3Ii KX0seyIuLi9zcmMvdHJhY2VzL2luZGljYXRvciI6ODYwfV0sMjk6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvaXNvc3VyZmFjZSIp fSx7Ii4uL3NyYy90cmFjZXMvaXNvc3VyZmFjZSI6ODY2fV0sMzA6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvbWVzaDNkIil9LHsi Li4vc3JjL3RyYWNlcy9tZXNoM2QiOjg3MX1dLDMxOltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL29obGMiKX0seyIuLi9zcmMvdHJh Y2VzL29obGMiOjg3Nn1dLDMyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhw b3J0cz10KCIuLi9zcmMvdHJhY2VzL3BhcmNhdHMiKX0seyIuLi9zcmMvdHJhY2VzL3BhcmNh dHMiOjg4NX1dLDMzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10 KCIuLi9zcmMvdHJhY2VzL3BhcmNvb3JkcyIpfSx7Ii4uL3NyYy90cmFjZXMvcGFyY29vcmRz Ijo4OTZ9XSwzNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgi Li4vc3JjL3RyYWNlcy9waWUiKX0seyIuLi9zcmMvdHJhY2VzL3BpZSI6OTA3fV0sMzU6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMv cG9pbnRjbG91ZCIpfSx7Ii4uL3NyYy90cmFjZXMvcG9pbnRjbG91ZCI6OTE2fV0sMzY6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMv c2Fua2V5Iil9LHsiLi4vc3JjL3RyYWNlcy9zYW5rZXkiOjkyMn1dLDM3OltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL3NjYXR0ZXIz ZCIpfSx7Ii4uL3NyYy90cmFjZXMvc2NhdHRlcjNkIjo5NjB9XSwzODpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9zY2F0dGVyY2Fy cGV0Iil9LHsiLi4vc3JjL3RyYWNlcy9zY2F0dGVyY2FycGV0Ijo5Njd9XSwzOTpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9zY2F0 dGVyZ2VvIil9LHsiLi4vc3JjL3RyYWNlcy9zY2F0dGVyZ2VvIjo5NzV9XSw0MDpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy9zY2F0 dGVyZ2wiKX0seyIuLi9zcmMvdHJhY2VzL3NjYXR0ZXJnbCI6OTg5fV0sNDE6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvc2NhdHRl cm1hcGJveCIpfSx7Ii4uL3NyYy90cmFjZXMvc2NhdHRlcm1hcGJveCI6OTk5fV0sNDI6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMv c2NhdHRlcnBvbGFyIil9LHsiLi4vc3JjL3RyYWNlcy9zY2F0dGVycG9sYXIiOjEwMDd9XSw0 MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3Ry YWNlcy9zY2F0dGVycG9sYXJnbCIpfSx7Ii4uL3NyYy90cmFjZXMvc2NhdHRlcnBvbGFyZ2wi OjEwMTV9XSw0NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgi Li4vc3JjL3RyYWNlcy9zY2F0dGVyc21pdGgiKX0seyIuLi9zcmMvdHJhY2VzL3NjYXR0ZXJz bWl0aCI6MTAyMn1dLDQ1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0 cz10KCIuLi9zcmMvdHJhY2VzL3NjYXR0ZXJ0ZXJuYXJ5Iil9LHsiLi4vc3JjL3RyYWNlcy9z Y2F0dGVydGVybmFyeSI6MTAzMH1dLDQ2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhbnNmb3Jtcy9zb3J0Iil9LHsiLi4vc3JjL3RyYW5z Zm9ybXMvc29ydCI6MTEyMn1dLDQ3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Uu ZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL3NwbG9tIil9LHsiLi4vc3JjL3RyYWNlcy9zcGxv bSI6MTA0MH1dLDQ4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10 KCIuLi9zcmMvdHJhY2VzL3N0cmVhbXR1YmUiKX0seyIuLi9zcmMvdHJhY2VzL3N0cmVhbXR1 YmUiOjEwNDh9XSw0OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9 dCgiLi4vc3JjL3RyYWNlcy9zdW5idXJzdCIpfSx7Ii4uL3NyYy90cmFjZXMvc3VuYnVyc3Qi OjEwNTZ9XSw1MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgi Li4vc3JjL3RyYWNlcy9zdXJmYWNlIil9LHsiLi4vc3JjL3RyYWNlcy9zdXJmYWNlIjoxMDY1 fV0sNTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3Ny Yy90cmFjZXMvdGFibGUiKX0seyIuLi9zcmMvdHJhY2VzL3RhYmxlIjoxMDczfV0sNTI6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMv dHJlZW1hcCIpfSx7Ii4uL3NyYy90cmFjZXMvdHJlZW1hcCI6MTA4NH1dLDUzOltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCIuLi9zcmMvdHJhY2VzL3Zpb2xp biIpfSx7Ii4uL3NyYy90cmFjZXMvdmlvbGluIjoxMDk3fV0sNTQ6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4uL3NyYy90cmFjZXMvdm9sdW1lIil9LHsi Li4vc3JjL3RyYWNlcy92b2x1bWUiOjExMDV9XSw1NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0IjtlLmV4cG9ydHM9dCgiLi4vc3JjL3RyYWNlcy93YXRlcmZhbGwiKX0seyIuLi9z cmMvdHJhY2VzL3dhdGVyZmFsbCI6MTExM31dLDU2OltmdW5jdGlvbih0LGUscil7IWZ1bmN0 aW9uKG4saSl7Im9iamVjdCI9PXR5cGVvZiByJiZ2b2lkIDAhPT1lP2kocix0KCJkMy1hcnJh eSIpLHQoImQzLWNvbGxlY3Rpb24iKSx0KCJkMy1zaGFwZSIpLHQoImVsZW1lbnRhcnktY2ly Y3VpdHMtZGlyZWN0ZWQtZ3JhcGgiKSk6aShuLmQzPW4uZDN8fHt9LG4uZDMsbi5kMyxuLmQz LG51bGwpfSh0aGlzLChmdW5jdGlvbih0LGUscixuLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlv biBhKHQpe3JldHVybiB0LnRhcmdldC5kZXB0aH1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuIHQu c291cmNlTGlua3MubGVuZ3RoP3QuZGVwdGg6ZS0xfWZ1bmN0aW9uIHModCl7cmV0dXJuIGZ1 bmN0aW9uKCl7cmV0dXJuIHR9fWk9aSYmaS5oYXNPd25Qcm9wZXJ0eSgiZGVmYXVsdCIpP2ku ZGVmYXVsdDppO3ZhciBsPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10 eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVu Y3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3Ry dWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0 fTtmdW5jdGlvbiBjKHQsZSl7cmV0dXJuIGYodC5zb3VyY2UsZS5zb3VyY2UpfHx0LmluZGV4 LWUuaW5kZXh9ZnVuY3Rpb24gdSh0LGUpe3JldHVybiBmKHQudGFyZ2V0LGUudGFyZ2V0KXx8 dC5pbmRleC1lLmluZGV4fWZ1bmN0aW9uIGYodCxlKXtyZXR1cm4gdC5wYXJ0T2ZDeWNsZT09 PWUucGFydE9mQ3ljbGU/dC55MC1lLnkwOiJ0b3AiPT09dC5jaXJjdWxhckxpbmtUeXBlfHwi Ym90dG9tIj09PWUuY2lyY3VsYXJMaW5rVHlwZT8tMToxfWZ1bmN0aW9uIGgodCl7cmV0dXJu IHQudmFsdWV9ZnVuY3Rpb24gcCh0KXtyZXR1cm4odC55MCt0LnkxKS8yfWZ1bmN0aW9uIGQo dCl7cmV0dXJuIHAodC5zb3VyY2UpfWZ1bmN0aW9uIG0odCl7cmV0dXJuIHAodC50YXJnZXQp fWZ1bmN0aW9uIGcodCl7cmV0dXJuIHQuaW5kZXh9ZnVuY3Rpb24gdih0KXtyZXR1cm4gdC5u b2Rlc31mdW5jdGlvbiB5KHQpe3JldHVybiB0LmxpbmtzfWZ1bmN0aW9uIHgodCxlKXt2YXIg cj10LmdldChlKTtpZighcil0aHJvdyBuZXcgRXJyb3IoIm1pc3Npbmc6ICIrZSk7cmV0dXJu IHJ9ZnVuY3Rpb24gYih0LGUpe3JldHVybiBlKHQpfWZ1bmN0aW9uIF8odCxlLHIpe3ZhciBu PTA7aWYobnVsbD09PXIpe2Zvcih2YXIgYT1bXSxvPTA7bzx0LmxpbmtzLmxlbmd0aDtvKysp e3ZhciBzPXQubGlua3Nbb10sbD1zLnNvdXJjZS5pbmRleCxjPXMudGFyZ2V0LmluZGV4O2Fb bF18fChhW2xdPVtdKSxhW2NdfHwoYVtjXT1bXSksLTE9PT1hW2xdLmluZGV4T2YoYykmJmFb bF0ucHVzaChjKX12YXIgdT1pKGEpO3Uuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5s ZW5ndGgtZS5sZW5ndGh9KSk7dmFyIGY9e307Zm9yKG89MDtvPHUubGVuZ3RoO28rKyl7dmFy IGg9dVtvXS5zbGljZSgtMik7ZltoWzBdXXx8KGZbaFswXV09e30pLGZbaFswXV1baFsxXV09 ITB9dC5saW5rcy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LnRhcmdldC5pbmRleCxy PXQuc291cmNlLmluZGV4O2U9PT1yfHxmW3JdJiZmW3JdW2VdPyh0LmNpcmN1bGFyPSEwLHQu Y2lyY3VsYXJMaW5rSUQ9bixuKz0xKTp0LmNpcmN1bGFyPSExfSkpfWVsc2UgdC5saW5rcy5m b3JFYWNoKChmdW5jdGlvbih0KXt0LnNvdXJjZVtyXTx0LnRhcmdldFtyXT90LmNpcmN1bGFy PSExOih0LmNpcmN1bGFyPSEwLHQuY2lyY3VsYXJMaW5rSUQ9bixuKz0xKX0pKX1mdW5jdGlv biB3KHQsZSl7dmFyIHI9MCxuPTA7dC5saW5rcy5mb3JFYWNoKChmdW5jdGlvbihpKXtpLmNp cmN1bGFyJiYoaS5zb3VyY2UuY2lyY3VsYXJMaW5rVHlwZXx8aS50YXJnZXQuY2lyY3VsYXJM aW5rVHlwZT9pLmNpcmN1bGFyTGlua1R5cGU9aS5zb3VyY2UuY2lyY3VsYXJMaW5rVHlwZT9p LnNvdXJjZS5jaXJjdWxhckxpbmtUeXBlOmkudGFyZ2V0LmNpcmN1bGFyTGlua1R5cGU6aS5j aXJjdWxhckxpbmtUeXBlPXI8bj8idG9wIjoiYm90dG9tIiwidG9wIj09aS5jaXJjdWxhckxp bmtUeXBlP3IrPTE6bis9MSx0Lm5vZGVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2IodCxlKSE9 YihpLnNvdXJjZSxlKSYmYih0LGUpIT1iKGkudGFyZ2V0LGUpfHwodC5jaXJjdWxhckxpbmtU eXBlPWkuY2lyY3VsYXJMaW5rVHlwZSl9KSkpfSkpLHQubGlua3MuZm9yRWFjaCgoZnVuY3Rp b24odCl7dC5jaXJjdWxhciYmKHQuc291cmNlLmNpcmN1bGFyTGlua1R5cGU9PXQudGFyZ2V0 LmNpcmN1bGFyTGlua1R5cGUmJih0LmNpcmN1bGFyTGlua1R5cGU9dC5zb3VyY2UuY2lyY3Vs YXJMaW5rVHlwZSkscSh0LGUpJiYodC5jaXJjdWxhckxpbmtUeXBlPXQuc291cmNlLmNpcmN1 bGFyTGlua1R5cGUpKX0pKX1mdW5jdGlvbiBUKHQpe3ZhciBlPU1hdGguYWJzKHQueTEtdC55 MCkscj1NYXRoLmFicyh0LnRhcmdldC54MC10LnNvdXJjZS54MSk7cmV0dXJuIE1hdGguYXRh bihyL2UpfWZ1bmN0aW9uIGsodCxlKXt2YXIgcj0wO3Quc291cmNlTGlua3MuZm9yRWFjaCgo ZnVuY3Rpb24odCl7cj10LmNpcmN1bGFyJiYhcSh0LGUpP3IrMTpyfSkpO3ZhciBuPTA7cmV0 dXJuIHQudGFyZ2V0TGlua3MuZm9yRWFjaCgoZnVuY3Rpb24odCl7bj10LmNpcmN1bGFyJiYh cSh0LGUpP24rMTpufSkpLHIrbn1mdW5jdGlvbiBBKHQpe3ZhciBlPXQuc291cmNlLnNvdXJj ZUxpbmtzLHI9MDtlLmZvckVhY2goKGZ1bmN0aW9uKHQpe3I9dC5jaXJjdWxhcj9yKzE6cn0p KTt2YXIgbj10LnRhcmdldC50YXJnZXRMaW5rcyxpPTA7cmV0dXJuIG4uZm9yRWFjaCgoZnVu Y3Rpb24odCl7aT10LmNpcmN1bGFyP2krMTppfSkpLCEocj4xfHxpPjEpfWZ1bmN0aW9uIE0o dCxlLHIpe3JldHVybiB0LnNvcnQoRSksdC5mb3JFYWNoKChmdW5jdGlvbihuLGkpe3ZhciBh LG8scz0wO2lmKHEobixyKSYmQShuKSluLmNpcmN1bGFyUGF0aERhdGEudmVydGljYWxCdWZm ZXI9cytuLndpZHRoLzI7ZWxzZXtmb3IodmFyIGw9MDtsPGk7bCsrKWlmKGE9dFtpXSxvPXRb bF0sIShhLnNvdXJjZS5jb2x1bW48by50YXJnZXQuY29sdW1ufHxhLnRhcmdldC5jb2x1bW4+ by5zb3VyY2UuY29sdW1uKSl7dmFyIGM9dFtsXS5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2Fs QnVmZmVyK3RbbF0ud2lkdGgvMitlO3M9Yz5zP2M6c31uLmNpcmN1bGFyUGF0aERhdGEudmVy dGljYWxCdWZmZXI9cytuLndpZHRoLzJ9fSkpLHR9ZnVuY3Rpb24gUyh0LHIsaSxhKXt2YXIg bz1lLm1pbih0LmxpbmtzLChmdW5jdGlvbih0KXtyZXR1cm4gdC5zb3VyY2UueTB9KSk7dC5s aW5rcy5mb3JFYWNoKChmdW5jdGlvbih0KXt0LmNpcmN1bGFyJiYodC5jaXJjdWxhclBhdGhE YXRhPXt9KX0pKSxNKHQubGlua3MuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4idG9wIj09 dC5jaXJjdWxhckxpbmtUeXBlfSkpLHIsYSksTSh0LmxpbmtzLmZpbHRlcigoZnVuY3Rpb24o dCl7cmV0dXJuImJvdHRvbSI9PXQuY2lyY3VsYXJMaW5rVHlwZX0pKSxyLGEpLHQubGlua3Mu Zm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYoZS5jaXJjdWxhcil7aWYoZS5jaXJjdWxhclBhdGhE YXRhLmFyY1JhZGl1cz1lLndpZHRoKzEwLGUuY2lyY3VsYXJQYXRoRGF0YS5sZWZ0Tm9kZUJ1 ZmZlcj01LGUuY2lyY3VsYXJQYXRoRGF0YS5yaWdodE5vZGVCdWZmZXI9NSxlLmNpcmN1bGFy UGF0aERhdGEuc291cmNlV2lkdGg9ZS5zb3VyY2UueDEtZS5zb3VyY2UueDAsZS5jaXJjdWxh clBhdGhEYXRhLnNvdXJjZVg9ZS5zb3VyY2UueDArZS5jaXJjdWxhclBhdGhEYXRhLnNvdXJj ZVdpZHRoLGUuY2lyY3VsYXJQYXRoRGF0YS50YXJnZXRYPWUudGFyZ2V0LngwLGUuY2lyY3Vs YXJQYXRoRGF0YS5zb3VyY2VZPWUueTAsZS5jaXJjdWxhclBhdGhEYXRhLnRhcmdldFk9ZS55 MSxxKGUsYSkmJkEoZSkpZS5jaXJjdWxhclBhdGhEYXRhLmxlZnRTbWFsbEFyY1JhZGl1cz0x MCtlLndpZHRoLzIsZS5jaXJjdWxhclBhdGhEYXRhLmxlZnRMYXJnZUFyY1JhZGl1cz0xMCtl LndpZHRoLzIsZS5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0U21hbGxBcmNSYWRpdXM9MTArZS53 aWR0aC8yLGUuY2lyY3VsYXJQYXRoRGF0YS5yaWdodExhcmdlQXJjUmFkaXVzPTEwK2Uud2lk dGgvMiwiYm90dG9tIj09ZS5jaXJjdWxhckxpbmtUeXBlPyhlLmNpcmN1bGFyUGF0aERhdGEu dmVydGljYWxGdWxsRXh0ZW50PWUuc291cmNlLnkxKzI1K2UuY2lyY3VsYXJQYXRoRGF0YS52 ZXJ0aWNhbEJ1ZmZlcixlLmNpcmN1bGFyUGF0aERhdGEudmVydGljYWxMZWZ0SW5uZXJFeHRl bnQ9ZS5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsRnVsbEV4dGVudC1lLmNpcmN1bGFyUGF0 aERhdGEubGVmdExhcmdlQXJjUmFkaXVzLGUuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbFJp Z2h0SW5uZXJFeHRlbnQ9ZS5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsRnVsbEV4dGVudC1l LmNpcmN1bGFyUGF0aERhdGEucmlnaHRMYXJnZUFyY1JhZGl1cyk6KGUuY2lyY3VsYXJQYXRo RGF0YS52ZXJ0aWNhbEZ1bGxFeHRlbnQ9ZS5zb3VyY2UueTAtMjUtZS5jaXJjdWxhclBhdGhE YXRhLnZlcnRpY2FsQnVmZmVyLGUuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbExlZnRJbm5l ckV4dGVudD1lLmNpcmN1bGFyUGF0aERhdGEudmVydGljYWxGdWxsRXh0ZW50K2UuY2lyY3Vs YXJQYXRoRGF0YS5sZWZ0TGFyZ2VBcmNSYWRpdXMsZS5jaXJjdWxhclBhdGhEYXRhLnZlcnRp Y2FsUmlnaHRJbm5lckV4dGVudD1lLmNpcmN1bGFyUGF0aERhdGEudmVydGljYWxGdWxsRXh0 ZW50K2UuY2lyY3VsYXJQYXRoRGF0YS5yaWdodExhcmdlQXJjUmFkaXVzKTtlbHNle3ZhciBz PWUuc291cmNlLmNvbHVtbixsPWUuY2lyY3VsYXJMaW5rVHlwZSxjPXQubGlua3MuZmlsdGVy KChmdW5jdGlvbih0KXtyZXR1cm4gdC5zb3VyY2UuY29sdW1uPT1zJiZ0LmNpcmN1bGFyTGlu a1R5cGU9PWx9KSk7ImJvdHRvbSI9PWUuY2lyY3VsYXJMaW5rVHlwZT9jLnNvcnQoQyk6Yy5z b3J0KEwpO3ZhciB1PTA7Yy5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3QuY2lyY3VsYXJMaW5r SUQ9PWUuY2lyY3VsYXJMaW5rSUQmJihlLmNpcmN1bGFyUGF0aERhdGEubGVmdFNtYWxsQXJj UmFkaXVzPTEwK2Uud2lkdGgvMit1LGUuY2lyY3VsYXJQYXRoRGF0YS5sZWZ0TGFyZ2VBcmNS YWRpdXM9MTArZS53aWR0aC8yK24qcit1KSx1Kz10LndpZHRofSkpLHM9ZS50YXJnZXQuY29s dW1uLGM9dC5saW5rcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRhcmdldC5jb2x1 bW49PXMmJnQuY2lyY3VsYXJMaW5rVHlwZT09bH0pKSwiYm90dG9tIj09ZS5jaXJjdWxhckxp bmtUeXBlP2Muc29ydChJKTpjLnNvcnQoUCksdT0wLGMuZm9yRWFjaCgoZnVuY3Rpb24odCxu KXt0LmNpcmN1bGFyTGlua0lEPT1lLmNpcmN1bGFyTGlua0lEJiYoZS5jaXJjdWxhclBhdGhE YXRhLnJpZ2h0U21hbGxBcmNSYWRpdXM9MTArZS53aWR0aC8yK3UsZS5jaXJjdWxhclBhdGhE YXRhLnJpZ2h0TGFyZ2VBcmNSYWRpdXM9MTArZS53aWR0aC8yK24qcit1KSx1Kz10LndpZHRo fSkpLCJib3R0b20iPT1lLmNpcmN1bGFyTGlua1R5cGU/KGUuY2lyY3VsYXJQYXRoRGF0YS52 ZXJ0aWNhbEZ1bGxFeHRlbnQ9TWF0aC5tYXgoaSxlLnNvdXJjZS55MSxlLnRhcmdldC55MSkr MjUrZS5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsQnVmZmVyLGUuY2lyY3VsYXJQYXRoRGF0 YS52ZXJ0aWNhbExlZnRJbm5lckV4dGVudD1lLmNpcmN1bGFyUGF0aERhdGEudmVydGljYWxG dWxsRXh0ZW50LWUuY2lyY3VsYXJQYXRoRGF0YS5sZWZ0TGFyZ2VBcmNSYWRpdXMsZS5jaXJj dWxhclBhdGhEYXRhLnZlcnRpY2FsUmlnaHRJbm5lckV4dGVudD1lLmNpcmN1bGFyUGF0aERh dGEudmVydGljYWxGdWxsRXh0ZW50LWUuY2lyY3VsYXJQYXRoRGF0YS5yaWdodExhcmdlQXJj UmFkaXVzKTooZS5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsRnVsbEV4dGVudD1vLTI1LWUu Y2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbEJ1ZmZlcixlLmNpcmN1bGFyUGF0aERhdGEudmVy dGljYWxMZWZ0SW5uZXJFeHRlbnQ9ZS5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsRnVsbEV4 dGVudCtlLmNpcmN1bGFyUGF0aERhdGEubGVmdExhcmdlQXJjUmFkaXVzLGUuY2lyY3VsYXJQ YXRoRGF0YS52ZXJ0aWNhbFJpZ2h0SW5uZXJFeHRlbnQ9ZS5jaXJjdWxhclBhdGhEYXRhLnZl cnRpY2FsRnVsbEV4dGVudCtlLmNpcmN1bGFyUGF0aERhdGEucmlnaHRMYXJnZUFyY1JhZGl1 cyl9ZS5jaXJjdWxhclBhdGhEYXRhLmxlZnRJbm5lckV4dGVudD1lLmNpcmN1bGFyUGF0aERh dGEuc291cmNlWCtlLmNpcmN1bGFyUGF0aERhdGEubGVmdE5vZGVCdWZmZXIsZS5jaXJjdWxh clBhdGhEYXRhLnJpZ2h0SW5uZXJFeHRlbnQ9ZS5jaXJjdWxhclBhdGhEYXRhLnRhcmdldFgt ZS5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0Tm9kZUJ1ZmZlcixlLmNpcmN1bGFyUGF0aERhdGEu bGVmdEZ1bGxFeHRlbnQ9ZS5jaXJjdWxhclBhdGhEYXRhLnNvdXJjZVgrZS5jaXJjdWxhclBh dGhEYXRhLmxlZnRMYXJnZUFyY1JhZGl1cytlLmNpcmN1bGFyUGF0aERhdGEubGVmdE5vZGVC dWZmZXIsZS5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0RnVsbEV4dGVudD1lLmNpcmN1bGFyUGF0 aERhdGEudGFyZ2V0WC1lLmNpcmN1bGFyUGF0aERhdGEucmlnaHRMYXJnZUFyY1JhZGl1cy1l LmNpcmN1bGFyUGF0aERhdGEucmlnaHROb2RlQnVmZmVyfWlmKGUuY2lyY3VsYXIpZS5wYXRo PWZ1bmN0aW9uKHQpe3ZhciBlPSIiO2U9InRvcCI9PXQuY2lyY3VsYXJMaW5rVHlwZT8iTSIr dC5jaXJjdWxhclBhdGhEYXRhLnNvdXJjZVgrIiAiK3QuY2lyY3VsYXJQYXRoRGF0YS5zb3Vy Y2VZKyIgTCIrdC5jaXJjdWxhclBhdGhEYXRhLmxlZnRJbm5lckV4dGVudCsiICIrdC5jaXJj dWxhclBhdGhEYXRhLnNvdXJjZVkrIiBBIit0LmNpcmN1bGFyUGF0aERhdGEubGVmdExhcmdl QXJjUmFkaXVzKyIgIit0LmNpcmN1bGFyUGF0aERhdGEubGVmdFNtYWxsQXJjUmFkaXVzKyIg MCAwIDAgIit0LmNpcmN1bGFyUGF0aERhdGEubGVmdEZ1bGxFeHRlbnQrIiAiKyh0LmNpcmN1 bGFyUGF0aERhdGEuc291cmNlWS10LmNpcmN1bGFyUGF0aERhdGEubGVmdFNtYWxsQXJjUmFk aXVzKSsiIEwiK3QuY2lyY3VsYXJQYXRoRGF0YS5sZWZ0RnVsbEV4dGVudCsiICIrdC5jaXJj dWxhclBhdGhEYXRhLnZlcnRpY2FsTGVmdElubmVyRXh0ZW50KyIgQSIrdC5jaXJjdWxhclBh dGhEYXRhLmxlZnRMYXJnZUFyY1JhZGl1cysiICIrdC5jaXJjdWxhclBhdGhEYXRhLmxlZnRM YXJnZUFyY1JhZGl1cysiIDAgMCAwICIrdC5jaXJjdWxhclBhdGhEYXRhLmxlZnRJbm5lckV4 dGVudCsiICIrdC5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2FsRnVsbEV4dGVudCsiIEwiK3Qu Y2lyY3VsYXJQYXRoRGF0YS5yaWdodElubmVyRXh0ZW50KyIgIit0LmNpcmN1bGFyUGF0aERh dGEudmVydGljYWxGdWxsRXh0ZW50KyIgQSIrdC5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0TGFy Z2VBcmNSYWRpdXMrIiAiK3QuY2lyY3VsYXJQYXRoRGF0YS5yaWdodExhcmdlQXJjUmFkaXVz KyIgMCAwIDAgIit0LmNpcmN1bGFyUGF0aERhdGEucmlnaHRGdWxsRXh0ZW50KyIgIit0LmNp cmN1bGFyUGF0aERhdGEudmVydGljYWxSaWdodElubmVyRXh0ZW50KyIgTCIrdC5jaXJjdWxh clBhdGhEYXRhLnJpZ2h0RnVsbEV4dGVudCsiICIrKHQuY2lyY3VsYXJQYXRoRGF0YS50YXJn ZXRZLXQuY2lyY3VsYXJQYXRoRGF0YS5yaWdodFNtYWxsQXJjUmFkaXVzKSsiIEEiK3QuY2ly Y3VsYXJQYXRoRGF0YS5yaWdodExhcmdlQXJjUmFkaXVzKyIgIit0LmNpcmN1bGFyUGF0aERh dGEucmlnaHRTbWFsbEFyY1JhZGl1cysiIDAgMCAwICIrdC5jaXJjdWxhclBhdGhEYXRhLnJp Z2h0SW5uZXJFeHRlbnQrIiAiK3QuY2lyY3VsYXJQYXRoRGF0YS50YXJnZXRZKyIgTCIrdC5j aXJjdWxhclBhdGhEYXRhLnRhcmdldFgrIiAiK3QuY2lyY3VsYXJQYXRoRGF0YS50YXJnZXRZ OiJNIit0LmNpcmN1bGFyUGF0aERhdGEuc291cmNlWCsiICIrdC5jaXJjdWxhclBhdGhEYXRh LnNvdXJjZVkrIiBMIit0LmNpcmN1bGFyUGF0aERhdGEubGVmdElubmVyRXh0ZW50KyIgIit0 LmNpcmN1bGFyUGF0aERhdGEuc291cmNlWSsiIEEiK3QuY2lyY3VsYXJQYXRoRGF0YS5sZWZ0 TGFyZ2VBcmNSYWRpdXMrIiAiK3QuY2lyY3VsYXJQYXRoRGF0YS5sZWZ0U21hbGxBcmNSYWRp dXMrIiAwIDAgMSAiK3QuY2lyY3VsYXJQYXRoRGF0YS5sZWZ0RnVsbEV4dGVudCsiICIrKHQu Y2lyY3VsYXJQYXRoRGF0YS5zb3VyY2VZK3QuY2lyY3VsYXJQYXRoRGF0YS5sZWZ0U21hbGxB cmNSYWRpdXMpKyIgTCIrdC5jaXJjdWxhclBhdGhEYXRhLmxlZnRGdWxsRXh0ZW50KyIgIit0 LmNpcmN1bGFyUGF0aERhdGEudmVydGljYWxMZWZ0SW5uZXJFeHRlbnQrIiBBIit0LmNpcmN1 bGFyUGF0aERhdGEubGVmdExhcmdlQXJjUmFkaXVzKyIgIit0LmNpcmN1bGFyUGF0aERhdGEu bGVmdExhcmdlQXJjUmFkaXVzKyIgMCAwIDEgIit0LmNpcmN1bGFyUGF0aERhdGEubGVmdElu bmVyRXh0ZW50KyIgIit0LmNpcmN1bGFyUGF0aERhdGEudmVydGljYWxGdWxsRXh0ZW50KyIg TCIrdC5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0SW5uZXJFeHRlbnQrIiAiK3QuY2lyY3VsYXJQ YXRoRGF0YS52ZXJ0aWNhbEZ1bGxFeHRlbnQrIiBBIit0LmNpcmN1bGFyUGF0aERhdGEucmln aHRMYXJnZUFyY1JhZGl1cysiICIrdC5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0TGFyZ2VBcmNS YWRpdXMrIiAwIDAgMSAiK3QuY2lyY3VsYXJQYXRoRGF0YS5yaWdodEZ1bGxFeHRlbnQrIiAi K3QuY2lyY3VsYXJQYXRoRGF0YS52ZXJ0aWNhbFJpZ2h0SW5uZXJFeHRlbnQrIiBMIit0LmNp cmN1bGFyUGF0aERhdGEucmlnaHRGdWxsRXh0ZW50KyIgIisodC5jaXJjdWxhclBhdGhEYXRh LnRhcmdldFkrdC5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0U21hbGxBcmNSYWRpdXMpKyIgQSIr dC5jaXJjdWxhclBhdGhEYXRhLnJpZ2h0TGFyZ2VBcmNSYWRpdXMrIiAiK3QuY2lyY3VsYXJQ YXRoRGF0YS5yaWdodFNtYWxsQXJjUmFkaXVzKyIgMCAwIDEgIit0LmNpcmN1bGFyUGF0aERh dGEucmlnaHRJbm5lckV4dGVudCsiICIrdC5jaXJjdWxhclBhdGhEYXRhLnRhcmdldFkrIiBM Iit0LmNpcmN1bGFyUGF0aERhdGEudGFyZ2V0WCsiICIrdC5jaXJjdWxhclBhdGhEYXRhLnRh cmdldFk7cmV0dXJuIGV9KGUpO2Vsc2V7dmFyIGY9bi5saW5rSG9yaXpvbnRhbCgpLnNvdXJj ZSgoZnVuY3Rpb24odCl7cmV0dXJuW3Quc291cmNlLngwKyh0LnNvdXJjZS54MS10LnNvdXJj ZS54MCksdC55MF19KSkudGFyZ2V0KChmdW5jdGlvbih0KXtyZXR1cm5bdC50YXJnZXQueDAs dC55MV19KSk7ZS5wYXRoPWYoZSl9fSkpfWZ1bmN0aW9uIEUodCxlKXtyZXR1cm4gTyh0KT09 TyhlKT8iYm90dG9tIj09dC5jaXJjdWxhckxpbmtUeXBlP0ModCxlKTpMKHQsZSk6TyhlKS1P KHQpfWZ1bmN0aW9uIEwodCxlKXtyZXR1cm4gdC55MC1lLnkwfWZ1bmN0aW9uIEModCxlKXty ZXR1cm4gZS55MC10LnkwfWZ1bmN0aW9uIFAodCxlKXtyZXR1cm4gdC55MS1lLnkxfWZ1bmN0 aW9uIEkodCxlKXtyZXR1cm4gZS55MS10LnkxfWZ1bmN0aW9uIE8odCl7cmV0dXJuIHQudGFy Z2V0LmNvbHVtbi10LnNvdXJjZS5jb2x1bW59ZnVuY3Rpb24geih0KXtyZXR1cm4gdC50YXJn ZXQueDAtdC5zb3VyY2UueDF9ZnVuY3Rpb24gRCh0LGUpe3ZhciByPVQodCksbj16KGUpL01h dGgudGFuKHIpO3JldHVybiJ1cCI9PUgodCk/dC55MStuOnQueTEtbn1mdW5jdGlvbiBSKHQs ZSl7dmFyIHI9VCh0KSxuPXooZSkvTWF0aC50YW4ocik7cmV0dXJuInVwIj09SCh0KT90Lnkx LW46dC55MStufWZ1bmN0aW9uIEYodCxlLHIsbil7dC5saW5rcy5mb3JFYWNoKChmdW5jdGlv bihpKXtpZighaS5jaXJjdWxhciYmaS50YXJnZXQuY29sdW1uLWkuc291cmNlLmNvbHVtbj4x KXt2YXIgYT1pLnNvdXJjZS5jb2x1bW4rMSxvPWkudGFyZ2V0LmNvbHVtbi0xLHM9MSxsPW8t YSsxO2ZvcihzPTE7YTw9bzthKysscysrKXQubm9kZXMuZm9yRWFjaCgoZnVuY3Rpb24obyl7 aWYoby5jb2x1bW49PWEpe3ZhciBjLHU9cy8obCsxKSxmPU1hdGgucG93KDEtdSwzKSxoPTMq dSpNYXRoLnBvdygxLXUsMikscD0zKk1hdGgucG93KHUsMikqKDEtdSksZD1NYXRoLnBvdyh1 LDMpLG09ZippLnkwK2gqaS55MCtwKmkueTErZCppLnkxLGc9bS1pLndpZHRoLzIsdj1tK2ku d2lkdGgvMjtnPm8ueTAmJmc8by55MT8oYz1vLnkxLWcrMTAsYz0iYm90dG9tIj09by5jaXJj dWxhckxpbmtUeXBlP2M6LWMsbz1OKG8sYyxlLHIpLHQubm9kZXMuZm9yRWFjaCgoZnVuY3Rp b24odCl7Yih0LG4pIT1iKG8sbikmJnQuY29sdW1uPT1vLmNvbHVtbiYmQihvLHQpJiZOKHQs YyxlLHIpfSkpKToodj5vLnkwJiZ2PG8ueTF8fGc8by55MCYmdj5vLnkxKSYmKGM9di1vLnkw KzEwLG89TihvLGMsZSxyKSx0Lm5vZGVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2IodCxuKSE9 YihvLG4pJiZ0LmNvbHVtbj09by5jb2x1bW4mJnQueTA8by55MSYmdC55MT5vLnkxJiZOKHQs YyxlLHIpfSkpKX19KSl9fSkpfWZ1bmN0aW9uIEIodCxlKXtyZXR1cm4gdC55MD5lLnkwJiZ0 LnkwPGUueTF8fCh0LnkxPmUueTAmJnQueTE8ZS55MXx8dC55MDxlLnkwJiZ0LnkxPmUueTEp fWZ1bmN0aW9uIE4odCxlLHIsbil7cmV0dXJuIHQueTArZT49ciYmdC55MStlPD1uJiYodC55 MD10LnkwK2UsdC55MT10LnkxK2UsdC50YXJnZXRMaW5rcy5mb3JFYWNoKChmdW5jdGlvbih0 KXt0LnkxPXQueTErZX0pKSx0LnNvdXJjZUxpbmtzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3Qu eTA9dC55MCtlfSkpKSx0fWZ1bmN0aW9uIGoodCxlLHIsbil7dC5ub2Rlcy5mb3JFYWNoKChm dW5jdGlvbihpKXtuJiZpLnkrKGkueTEtaS55MCk+ZSYmKGkueT1pLnktKGkueSsoaS55MS1p LnkwKS1lKSk7dmFyIGE9dC5saW5rcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBiKHQu c291cmNlLHIpPT1iKGkscil9KSksbz1hLmxlbmd0aDtvPjEmJmEuc29ydCgoZnVuY3Rpb24o dCxlKXtpZighdC5jaXJjdWxhciYmIWUuY2lyY3VsYXIpe2lmKHQudGFyZ2V0LmNvbHVtbj09 ZS50YXJnZXQuY29sdW1uKXJldHVybiB0LnkxLWUueTE7aWYoIVYodCxlKSlyZXR1cm4gdC55 MS1lLnkxO2lmKHQudGFyZ2V0LmNvbHVtbj5lLnRhcmdldC5jb2x1bW4pe3ZhciByPVIoZSx0 KTtyZXR1cm4gdC55MS1yfWlmKGUudGFyZ2V0LmNvbHVtbj50LnRhcmdldC5jb2x1bW4pcmV0 dXJuIFIodCxlKS1lLnkxfXJldHVybiB0LmNpcmN1bGFyJiYhZS5jaXJjdWxhcj8idG9wIj09 dC5jaXJjdWxhckxpbmtUeXBlPy0xOjE6ZS5jaXJjdWxhciYmIXQuY2lyY3VsYXI/InRvcCI9 PWUuY2lyY3VsYXJMaW5rVHlwZT8xOi0xOnQuY2lyY3VsYXImJmUuY2lyY3VsYXI/dC5jaXJj dWxhckxpbmtUeXBlPT09ZS5jaXJjdWxhckxpbmtUeXBlJiYidG9wIj09dC5jaXJjdWxhckxp bmtUeXBlP3QudGFyZ2V0LmNvbHVtbj09PWUudGFyZ2V0LmNvbHVtbj90LnRhcmdldC55MS1l LnRhcmdldC55MTplLnRhcmdldC5jb2x1bW4tdC50YXJnZXQuY29sdW1uOnQuY2lyY3VsYXJM aW5rVHlwZT09PWUuY2lyY3VsYXJMaW5rVHlwZSYmImJvdHRvbSI9PXQuY2lyY3VsYXJMaW5r VHlwZT90LnRhcmdldC5jb2x1bW49PT1lLnRhcmdldC5jb2x1bW4/ZS50YXJnZXQueTEtdC50 YXJnZXQueTE6dC50YXJnZXQuY29sdW1uLWUudGFyZ2V0LmNvbHVtbjoidG9wIj09dC5jaXJj dWxhckxpbmtUeXBlPy0xOjE6dm9pZCAwfSkpO3ZhciBzPWkueTA7YS5mb3JFYWNoKChmdW5j dGlvbih0KXt0LnkwPXMrdC53aWR0aC8yLHMrPXQud2lkdGh9KSksYS5mb3JFYWNoKChmdW5j dGlvbih0LGUpe2lmKCJib3R0b20iPT10LmNpcmN1bGFyTGlua1R5cGUpe2Zvcih2YXIgcj1l KzEsbj0wO3I8bztyKyspbis9YVtyXS53aWR0aDt0LnkwPWkueTEtbi10LndpZHRoLzJ9fSkp fSkpfWZ1bmN0aW9uIFUodCxlLHIpe3Qubm9kZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFy IG49dC5saW5rcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBiKHQudGFyZ2V0LHIpPT1i KGUscil9KSksaT1uLmxlbmd0aDtpPjEmJm4uc29ydCgoZnVuY3Rpb24odCxlKXtpZighdC5j aXJjdWxhciYmIWUuY2lyY3VsYXIpe2lmKHQuc291cmNlLmNvbHVtbj09ZS5zb3VyY2UuY29s dW1uKXJldHVybiB0LnkwLWUueTA7aWYoIVYodCxlKSlyZXR1cm4gdC55MC1lLnkwO2lmKGUu c291cmNlLmNvbHVtbjx0LnNvdXJjZS5jb2x1bW4pe3ZhciByPUQoZSx0KTtyZXR1cm4gdC55 MC1yfWlmKHQuc291cmNlLmNvbHVtbjxlLnNvdXJjZS5jb2x1bW4pcmV0dXJuIEQodCxlKS1l LnkwfXJldHVybiB0LmNpcmN1bGFyJiYhZS5jaXJjdWxhcj8idG9wIj09dC5jaXJjdWxhckxp bmtUeXBlPy0xOjE6ZS5jaXJjdWxhciYmIXQuY2lyY3VsYXI/InRvcCI9PWUuY2lyY3VsYXJM aW5rVHlwZT8xOi0xOnQuY2lyY3VsYXImJmUuY2lyY3VsYXI/dC5jaXJjdWxhckxpbmtUeXBl PT09ZS5jaXJjdWxhckxpbmtUeXBlJiYidG9wIj09dC5jaXJjdWxhckxpbmtUeXBlP3Quc291 cmNlLmNvbHVtbj09PWUuc291cmNlLmNvbHVtbj90LnNvdXJjZS55MS1lLnNvdXJjZS55MTp0 LnNvdXJjZS5jb2x1bW4tZS5zb3VyY2UuY29sdW1uOnQuY2lyY3VsYXJMaW5rVHlwZT09PWUu Y2lyY3VsYXJMaW5rVHlwZSYmImJvdHRvbSI9PXQuY2lyY3VsYXJMaW5rVHlwZT90LnNvdXJj ZS5jb2x1bW49PT1lLnNvdXJjZS5jb2x1bW4/dC5zb3VyY2UueTEtZS5zb3VyY2UueTE6ZS5z b3VyY2UuY29sdW1uLXQuc291cmNlLmNvbHVtbjoidG9wIj09dC5jaXJjdWxhckxpbmtUeXBl Py0xOjE6dm9pZCAwfSkpO3ZhciBhPWUueTA7bi5mb3JFYWNoKChmdW5jdGlvbih0KXt0Lnkx PWErdC53aWR0aC8yLGErPXQud2lkdGh9KSksbi5mb3JFYWNoKChmdW5jdGlvbih0LHIpe2lm KCJib3R0b20iPT10LmNpcmN1bGFyTGlua1R5cGUpe2Zvcih2YXIgYT1yKzEsbz0wO2E8aTth Kyspbys9blthXS53aWR0aDt0LnkxPWUueTEtby10LndpZHRoLzJ9fSkpfSkpfWZ1bmN0aW9u IFYodCxlKXtyZXR1cm4gSCh0KT09SChlKX1mdW5jdGlvbiBIKHQpe3JldHVybiB0LnkwLXQu eTE+MD8idXAiOiJkb3duIn1mdW5jdGlvbiBxKHQsZSl7cmV0dXJuIGIodC5zb3VyY2UsZSk9 PWIodC50YXJnZXQsZSl9ZnVuY3Rpb24gRyh0LHIsbil7dmFyIGk9dC5ub2RlcyxhPXQubGlu a3Msbz0hMSxzPSExO2lmKGEuZm9yRWFjaCgoZnVuY3Rpb24odCl7InRvcCI9PXQuY2lyY3Vs YXJMaW5rVHlwZT9vPSEwOiJib3R0b20iPT10LmNpcmN1bGFyTGlua1R5cGUmJihzPSEwKX0p KSwwPT1vfHwwPT1zKXt2YXIgbD1lLm1pbihpLChmdW5jdGlvbih0KXtyZXR1cm4gdC55MH0p KSxjPShuLXIpLyhlLm1heChpLChmdW5jdGlvbih0KXtyZXR1cm4gdC55MX0pKS1sKTtpLmZv ckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPSh0LnkxLXQueTApKmM7dC55MD0odC55MC1sKSpj LHQueTE9dC55MCtlfSkpLGEuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC55MD0odC55MC1sKSpj LHQueTE9KHQueTEtbCkqYyx0LndpZHRoPXQud2lkdGgqY30pKX19dC5zYW5rZXlDaXJjdWxh cj1mdW5jdGlvbigpe3ZhciB0LG4saT0wLGE9MCxiPTEsVD0xLEE9MjQsTT1nLEU9byxMPXYs Qz15LFA9MzIsST0yLE89bnVsbDtmdW5jdGlvbiB6KCl7dmFyIHQ9e25vZGVzOkwuYXBwbHko bnVsbCxhcmd1bWVudHMpLGxpbmtzOkMuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtEKHQpLF8o dCxNLE8pLFIodCksQih0KSx3KHQsTSksTih0LFAsTSksVih0KTtmb3IodmFyIGU9NCxyPTA7 cjxlO3IrKylqKHQsVCxNKSxVKHQsVCxNKSxGKHQsYSxULE0pLGoodCxULE0pLFUodCxULE0p O3JldHVybiBHKHQsYSxUKSxTKHQsSSxULE0pLHR9ZnVuY3Rpb24gRCh0KXt0Lm5vZGVzLmZv ckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5pbmRleD1lLHQuc291cmNlTGlua3M9W10sdC50YXJn ZXRMaW5rcz1bXX0pKTt2YXIgZT1yLm1hcCh0Lm5vZGVzLE0pO3JldHVybiB0LmxpbmtzLmZv ckVhY2goKGZ1bmN0aW9uKHQscil7dC5pbmRleD1yO3ZhciBuPXQuc291cmNlLGk9dC50YXJn ZXQ7Im9iamVjdCIhPT0odm9pZCAwPT09bj8idW5kZWZpbmVkIjpsKG4pKSYmKG49dC5zb3Vy Y2U9eChlLG4pKSwib2JqZWN0IiE9PSh2b2lkIDA9PT1pPyJ1bmRlZmluZWQiOmwoaSkpJiYo aT10LnRhcmdldD14KGUsaSkpLG4uc291cmNlTGlua3MucHVzaCh0KSxpLnRhcmdldExpbmtz LnB1c2godCl9KSksdH1mdW5jdGlvbiBSKHQpe3Qubm9kZXMuZm9yRWFjaCgoZnVuY3Rpb24o dCl7dC5wYXJ0T2ZDeWNsZT0hMSx0LnZhbHVlPU1hdGgubWF4KGUuc3VtKHQuc291cmNlTGlu a3MsaCksZS5zdW0odC50YXJnZXRMaW5rcyxoKSksdC5zb3VyY2VMaW5rcy5mb3JFYWNoKChm dW5jdGlvbihlKXtlLmNpcmN1bGFyJiYodC5wYXJ0T2ZDeWNsZT0hMCx0LmNpcmN1bGFyTGlu a1R5cGU9ZS5jaXJjdWxhckxpbmtUeXBlKX0pKSx0LnRhcmdldExpbmtzLmZvckVhY2goKGZ1 bmN0aW9uKGUpe2UuY2lyY3VsYXImJih0LnBhcnRPZkN5Y2xlPSEwLHQuY2lyY3VsYXJMaW5r VHlwZT1lLmNpcmN1bGFyTGlua1R5cGUpfSkpfSkpfWZ1bmN0aW9uIEIodCl7dmFyIGUscixu O2ZvcihlPXQubm9kZXMscj1bXSxuPTA7ZS5sZW5ndGg7KytuLGU9cixyPVtdKWUuZm9yRWFj aCgoZnVuY3Rpb24odCl7dC5kZXB0aD1uLHQuc291cmNlTGlua3MuZm9yRWFjaCgoZnVuY3Rp b24odCl7ci5pbmRleE9mKHQudGFyZ2V0KTwwJiYhdC5jaXJjdWxhciYmci5wdXNoKHQudGFy Z2V0KX0pKX0pKTtmb3IoZT10Lm5vZGVzLHI9W10sbj0wO2UubGVuZ3RoOysrbixlPXIscj1b XSllLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuaGVpZ2h0PW4sdC50YXJnZXRMaW5rcy5mb3JF YWNoKChmdW5jdGlvbih0KXtyLmluZGV4T2YodC5zb3VyY2UpPDAmJiF0LmNpcmN1bGFyJiZy LnB1c2godC5zb3VyY2UpfSkpfSkpO3Qubm9kZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5j b2x1bW49TWF0aC5mbG9vcihFLmNhbGwobnVsbCx0LG4pKX0pKX1mdW5jdGlvbiBOKG8scyxs KXt2YXIgYz1yLm5lc3QoKS5rZXkoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNvbHVtbn0pKS5z b3J0S2V5cyhlLmFzY2VuZGluZykuZW50cmllcyhvLm5vZGVzKS5tYXAoKGZ1bmN0aW9uKHQp e3JldHVybiB0LnZhbHVlc30pKTshZnVuY3Rpb24ocil7aWYobil7dmFyIHM9MS8wO2MuZm9y RWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9VCpuLyh0Lmxlbmd0aCsxKTtzPWU8cz9lOnN9KSks dD1zfXZhciBsPWUubWluKGMsKGZ1bmN0aW9uKHIpe3JldHVybihULWEtKHIubGVuZ3RoLTEp KnQpL2Uuc3VtKHIsaCl9KSk7bCo9LjMsby5saW5rcy5mb3JFYWNoKChmdW5jdGlvbih0KXt0 LndpZHRoPXQudmFsdWUqbH0pKTt2YXIgdT1mdW5jdGlvbih0KXt2YXIgcj0wLG49MCxpPTAs YT0wLG89ZS5tYXgodC5ub2RlcywoZnVuY3Rpb24odCl7cmV0dXJuIHQuY29sdW1ufSkpO3Jl dHVybiB0LmxpbmtzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuY2lyY3VsYXImJigidG9wIj09 dC5jaXJjdWxhckxpbmtUeXBlP3IrPXQud2lkdGg6bis9dC53aWR0aCwwPT10LnRhcmdldC5j b2x1bW4mJihhKz10LndpZHRoKSx0LnNvdXJjZS5jb2x1bW49PW8mJihpKz10LndpZHRoKSl9 KSkse3RvcDpyPXI+MD9yKzI1KzEwOnIsYm90dG9tOm49bj4wP24rMjUrMTA6bixsZWZ0OmE9 YT4wP2ErMjUrMTA6YSxyaWdodDppPWk+MD9pKzI1KzEwOml9fShvKSxmPWZ1bmN0aW9uKHQs cil7dmFyIG49ZS5tYXgodC5ub2RlcywoZnVuY3Rpb24odCl7cmV0dXJuIHQuY29sdW1ufSkp LG89Yi1pLHM9VC1hLGw9by8obytyLnJpZ2h0K3IubGVmdCksYz1zLyhzK3IudG9wK3IuYm90 dG9tKTtyZXR1cm4gaT1pKmwrci5sZWZ0LGI9MD09ci5yaWdodD9iOmIqbCxhPWEqYytyLnRv cCxUKj1jLHQubm9kZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC54MD1pK3QuY29sdW1uKigo Yi1pLUEpL24pLHQueDE9dC54MCtBfSkpLGN9KG8sdSk7bCo9ZixvLmxpbmtzLmZvckVhY2go KGZ1bmN0aW9uKHQpe3Qud2lkdGg9dC52YWx1ZSpsfSkpLGMuZm9yRWFjaCgoZnVuY3Rpb24o dCl7dmFyIGU9dC5sZW5ndGg7dC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3QuZGVwdGg9PWMu bGVuZ3RoLTEmJjE9PWV8fDA9PXQuZGVwdGgmJjE9PWU/KHQueTA9VC8yLXQudmFsdWUqbCx0 LnkxPXQueTArdC52YWx1ZSpsKTp0LnBhcnRPZkN5Y2xlPzA9PWsodCxyKT8odC55MD1ULzIr bix0LnkxPXQueTArdC52YWx1ZSpsKToidG9wIj09dC5jaXJjdWxhckxpbmtUeXBlPyh0Lnkw PWErbix0LnkxPXQueTArdC52YWx1ZSpsKToodC55MD1ULXQudmFsdWUqbC1uLHQueTE9dC55 MCt0LnZhbHVlKmwpOjA9PXUudG9wfHwwPT11LmJvdHRvbT8odC55MD0oVC1hKS9lKm4sdC55 MT10LnkwK3QudmFsdWUqbCk6KHQueTA9KFQtYSkvMi1lLzIrbix0LnkxPXQueTArdC52YWx1 ZSpsKX0pKX0pKX0obCkseSgpO2Zvcih2YXIgdT0xLGc9cztnPjA7LS1nKXYodSo9Ljk5LGwp LHkoKTtmdW5jdGlvbiB2KHQscil7dmFyIG49Yy5sZW5ndGg7Yy5mb3JFYWNoKChmdW5jdGlv bihpKXt2YXIgYT1pLmxlbmd0aCxvPWlbMF0uZGVwdGg7aS5mb3JFYWNoKChmdW5jdGlvbihp KXt2YXIgcztpZihpLnNvdXJjZUxpbmtzLmxlbmd0aHx8aS50YXJnZXRMaW5rcy5sZW5ndGgp aWYoaS5wYXJ0T2ZDeWNsZSYmayhpLHIpPjApO2Vsc2UgaWYoMD09byYmMT09YSlzPWkueTEt aS55MCxpLnkwPVQvMi1zLzIsaS55MT1ULzIrcy8yO2Vsc2UgaWYobz09bi0xJiYxPT1hKXM9 aS55MS1pLnkwLGkueTA9VC8yLXMvMixpLnkxPVQvMitzLzI7ZWxzZXt2YXIgbD1lLm1lYW4o aS5zb3VyY2VMaW5rcyxtKSxjPWUubWVhbihpLnRhcmdldExpbmtzLGQpLHU9KChsJiZjPyhs K2MpLzI6bHx8YyktcChpKSkqdDtpLnkwKz11LGkueTErPXV9fSkpfSkpfWZ1bmN0aW9uIHko KXtjLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciByLG4saSxvPWEscz1lLmxlbmd0aDtmb3Io ZS5zb3J0KGYpLGk9MDtpPHM7KytpKShuPW8tKHI9ZVtpXSkueTApPjAmJihyLnkwKz1uLHIu eTErPW4pLG89ci55MSt0O2lmKChuPW8tdC1UKT4wKWZvcihvPXIueTAtPW4sci55MS09bixp PXMtMjtpPj0wOy0taSkobj0ocj1lW2ldKS55MSt0LW8pPjAmJihyLnkwLT1uLHIueTEtPW4p LG89ci55MH0pKX19ZnVuY3Rpb24gVih0KXt0Lm5vZGVzLmZvckVhY2goKGZ1bmN0aW9uKHQp e3Quc291cmNlTGlua3Muc29ydCh1KSx0LnRhcmdldExpbmtzLnNvcnQoYyl9KSksdC5ub2Rl cy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LnkwLHI9ZSxuPXQueTEsaT1uO3Quc291 cmNlTGlua3MuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5jaXJjdWxhcj8odC55MD1uLXQud2lk dGgvMixuLT10LndpZHRoKToodC55MD1lK3Qud2lkdGgvMixlKz10LndpZHRoKX0pKSx0LnRh cmdldExpbmtzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuY2lyY3VsYXI/KHQueTE9aS10Lndp ZHRoLzIsaS09dC53aWR0aCk6KHQueTE9cit0LndpZHRoLzIscis9dC53aWR0aCl9KSl9KSl9 cmV0dXJuIHoubm9kZUlkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhN PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cyh0KSx6KTpNfSx6Lm5vZGVBbGlnbj1mdW5jdGlv bih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT0iZnVuY3Rpb24iPT10eXBlb2YgdD90 OnModCkseik6RX0sei5ub2RlV2lkdGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5s ZW5ndGg/KEE9K3Qseik6QX0sei5ub2RlUGFkZGluZz1mdW5jdGlvbihlKXtyZXR1cm4gYXJn dW1lbnRzLmxlbmd0aD8odD0rZSx6KTp0fSx6Lm5vZGVzPWZ1bmN0aW9uKHQpe3JldHVybiBh cmd1bWVudHMubGVuZ3RoPyhMPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cyh0KSx6KTpMfSx6 LmxpbmtzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhDPSJmdW5jdGlv biI9PXR5cGVvZiB0P3Q6cyh0KSx6KTpDfSx6LnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFy Z3VtZW50cy5sZW5ndGg/KGk9YT0wLGI9K3RbMF0sVD0rdFsxXSx6KTpbYi1pLFQtYV19LHou ZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSt0WzBdWzBd LGI9K3RbMV1bMF0sYT0rdFswXVsxXSxUPSt0WzFdWzFdLHopOltbaSxhXSxbYixUXV19LHou aXRlcmF0aW9ucz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oUD0rdCx6 KTpQfSx6LmNpcmN1bGFyTGlua0dhcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl bmd0aD8oST0rdCx6KTpJfSx6Lm5vZGVQYWRkaW5nUmF0aW89ZnVuY3Rpb24odCl7cmV0dXJu IGFyZ3VtZW50cy5sZW5ndGg/KG49K3Qseik6bn0sei5zb3J0Tm9kZXM9ZnVuY3Rpb24odCl7 cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE89dCx6KTpPfSx6LnVwZGF0ZT1mdW5jdGlvbih0 KXtyZXR1cm4gdyh0LE0pLFYodCksdC5saW5rcy5mb3JFYWNoKChmdW5jdGlvbih0KXt0LmNp cmN1bGFyJiYodC5jaXJjdWxhckxpbmtUeXBlPXQueTArdC55MTxUPyJ0b3AiOiJib3R0b20i LHQuc291cmNlLmNpcmN1bGFyTGlua1R5cGU9dC5jaXJjdWxhckxpbmtUeXBlLHQudGFyZ2V0 LmNpcmN1bGFyTGlua1R5cGU9dC5jaXJjdWxhckxpbmtUeXBlKX0pKSxqKHQsVCxNLCExKSxV KHQsVCxNKSxTKHQsSSxULE0pLHR9LHp9LHQuc2Fua2V5Q2VudGVyPWZ1bmN0aW9uKHQpe3Jl dHVybiB0LnRhcmdldExpbmtzLmxlbmd0aD90LmRlcHRoOnQuc291cmNlTGlua3MubGVuZ3Ro P2UubWluKHQuc291cmNlTGlua3MsYSktMTowfSx0LnNhbmtleUxlZnQ9ZnVuY3Rpb24odCl7 cmV0dXJuIHQuZGVwdGh9LHQuc2Fua2V5UmlnaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS0x LXQuaGVpZ2h0fSx0LnNhbmtleUp1c3RpZnk9byxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwi X19lc01vZHVsZSIse3ZhbHVlOiEwfSl9KSl9LHsiZDMtYXJyYXkiOjEwNywiZDMtY29sbGVj dGlvbiI6MTA4LCJkMy1zaGFwZSI6MTE5LCJlbGVtZW50YXJ5LWNpcmN1aXRzLWRpcmVjdGVk LWdyYXBoIjoxMzB9XSw1NzpbZnVuY3Rpb24odCxlLHIpeyFmdW5jdGlvbihuLGkpeyJvYmpl Y3QiPT10eXBlb2YgciYmdm9pZCAwIT09ZT9pKHIsdCgiZDMtYXJyYXkiKSx0KCJkMy1jb2xs ZWN0aW9uIiksdCgiZDMtc2hhcGUiKSk6aShuLmQzPW4uZDN8fHt9LG4uZDMsbi5kMyxuLmQz KX0odGhpcywoZnVuY3Rpb24odCxlLHIsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkodCl7 cmV0dXJuIHQudGFyZ2V0LmRlcHRofWZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gdC5zb3VyY2VM aW5rcy5sZW5ndGg/dC5kZXB0aDplLTF9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gZnVuY3Rpb24o KXtyZXR1cm4gdH19ZnVuY3Rpb24gcyh0LGUpe3JldHVybiBjKHQuc291cmNlLGUuc291cmNl KXx8dC5pbmRleC1lLmluZGV4fWZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gYyh0LnRhcmdldCxl LnRhcmdldCl8fHQuaW5kZXgtZS5pbmRleH1mdW5jdGlvbiBjKHQsZSl7cmV0dXJuIHQueTAt ZS55MH1mdW5jdGlvbiB1KHQpe3JldHVybiB0LnZhbHVlfWZ1bmN0aW9uIGYodCl7cmV0dXJu KHQueTArdC55MSkvMn1mdW5jdGlvbiBoKHQpe3JldHVybiBmKHQuc291cmNlKSp0LnZhbHVl fWZ1bmN0aW9uIHAodCl7cmV0dXJuIGYodC50YXJnZXQpKnQudmFsdWV9ZnVuY3Rpb24gZCh0 KXtyZXR1cm4gdC5pbmRleH1mdW5jdGlvbiBtKHQpe3JldHVybiB0Lm5vZGVzfWZ1bmN0aW9u IGcodCl7cmV0dXJuIHQubGlua3N9ZnVuY3Rpb24gdih0LGUpe3ZhciByPXQuZ2V0KGUpO2lm KCFyKXRocm93IG5ldyBFcnJvcigibWlzc2luZzogIitlKTtyZXR1cm4gcn1mdW5jdGlvbiB5 KHQpe3JldHVyblt0LnNvdXJjZS54MSx0LnkwXX1mdW5jdGlvbiB4KHQpe3JldHVyblt0LnRh cmdldC54MCx0LnkxXX10LnNhbmtleT1mdW5jdGlvbigpe3ZhciB0PTAsbj0wLGk9MSx5PTEs eD0yNCxiPTgsXz1kLHc9YSxUPW0saz1nLEE9MzI7ZnVuY3Rpb24gTSgpe3ZhciB0PXtub2Rl czpULmFwcGx5KG51bGwsYXJndW1lbnRzKSxsaW5rczprLmFwcGx5KG51bGwsYXJndW1lbnRz KX07cmV0dXJuIFModCksRSh0KSxMKHQpLEModCksUCh0KSx0fWZ1bmN0aW9uIFModCl7dC5u b2Rlcy5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuaW5kZXg9ZSx0LnNvdXJjZUxpbmtzPVtd LHQudGFyZ2V0TGlua3M9W119KSk7dmFyIGU9ci5tYXAodC5ub2RlcyxfKTt0LmxpbmtzLmZv ckVhY2goKGZ1bmN0aW9uKHQscil7dC5pbmRleD1yO3ZhciBuPXQuc291cmNlLGk9dC50YXJn ZXQ7Im9iamVjdCIhPXR5cGVvZiBuJiYobj10LnNvdXJjZT12KGUsbikpLCJvYmplY3QiIT10 eXBlb2YgaSYmKGk9dC50YXJnZXQ9dihlLGkpKSxuLnNvdXJjZUxpbmtzLnB1c2godCksaS50 YXJnZXRMaW5rcy5wdXNoKHQpfSkpfWZ1bmN0aW9uIEUodCl7dC5ub2Rlcy5mb3JFYWNoKChm dW5jdGlvbih0KXt0LnZhbHVlPU1hdGgubWF4KGUuc3VtKHQuc291cmNlTGlua3MsdSksZS5z dW0odC50YXJnZXRMaW5rcyx1KSl9KSl9ZnVuY3Rpb24gTChlKXt2YXIgcixuLGE7Zm9yKHI9 ZS5ub2RlcyxuPVtdLGE9MDtyLmxlbmd0aDsrK2Escj1uLG49W10pci5mb3JFYWNoKChmdW5j dGlvbih0KXt0LmRlcHRoPWEsdC5zb3VyY2VMaW5rcy5mb3JFYWNoKChmdW5jdGlvbih0KXtu LmluZGV4T2YodC50YXJnZXQpPDAmJm4ucHVzaCh0LnRhcmdldCl9KSl9KSk7Zm9yKHI9ZS5u b2RlcyxuPVtdLGE9MDtyLmxlbmd0aDsrK2Escj1uLG49W10pci5mb3JFYWNoKChmdW5jdGlv bih0KXt0LmhlaWdodD1hLHQudGFyZ2V0TGlua3MuZm9yRWFjaCgoZnVuY3Rpb24odCl7bi5p bmRleE9mKHQuc291cmNlKTwwJiZuLnB1c2godC5zb3VyY2UpfSkpfSkpO3ZhciBvPShpLXQt eCkvKGEtMSk7ZS5ub2Rlcy5mb3JFYWNoKChmdW5jdGlvbihlKXtlLngxPShlLngwPXQrTWF0 aC5tYXgoMCxNYXRoLm1pbihhLTEsTWF0aC5mbG9vcih3LmNhbGwobnVsbCxlLGEpKSkpKm8p K3h9KSl9ZnVuY3Rpb24gQyh0KXt2YXIgaT1yLm5lc3QoKS5rZXkoKGZ1bmN0aW9uKHQpe3Jl dHVybiB0LngwfSkpLnNvcnRLZXlzKGUuYXNjZW5kaW5nKS5lbnRyaWVzKHQubm9kZXMpLm1h cCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWVzfSkpOyFmdW5jdGlvbigpe3ZhciByPWUu bWF4KGksKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aH0pKSxhPTIvMyooeS1uKS8oci0x KTtiPmEmJihiPWEpO3ZhciBvPWUubWluKGksKGZ1bmN0aW9uKHQpe3JldHVybih5LW4tKHQu bGVuZ3RoLTEpKmIpL2Uuc3VtKHQsdSl9KSk7aS5mb3JFYWNoKChmdW5jdGlvbih0KXt0LmZv ckVhY2goKGZ1bmN0aW9uKHQsZSl7dC55MT0odC55MD1lKSt0LnZhbHVlKm99KSl9KSksdC5s aW5rcy5mb3JFYWNoKChmdW5jdGlvbih0KXt0LndpZHRoPXQudmFsdWUqb30pKX0oKSxkKCk7 Zm9yKHZhciBhPTEsbz1BO28+MDstLW8pbChhKj0uOTkpLGQoKSxzKGEpLGQoKTtmdW5jdGlv biBzKHQpe2kuZm9yRWFjaCgoZnVuY3Rpb24ocil7ci5mb3JFYWNoKChmdW5jdGlvbihyKXtp ZihyLnRhcmdldExpbmtzLmxlbmd0aCl7dmFyIG49KGUuc3VtKHIudGFyZ2V0TGlua3MsaCkv ZS5zdW0oci50YXJnZXRMaW5rcyx1KS1mKHIpKSp0O3IueTArPW4sci55MSs9bn19KSl9KSl9 ZnVuY3Rpb24gbCh0KXtpLnNsaWNlKCkucmV2ZXJzZSgpLmZvckVhY2goKGZ1bmN0aW9uKHIp e3IuZm9yRWFjaCgoZnVuY3Rpb24ocil7aWYoci5zb3VyY2VMaW5rcy5sZW5ndGgpe3ZhciBu PShlLnN1bShyLnNvdXJjZUxpbmtzLHApL2Uuc3VtKHIuc291cmNlTGlua3MsdSktZihyKSkq dDtyLnkwKz1uLHIueTErPW59fSkpfSkpfWZ1bmN0aW9uIGQoKXtpLmZvckVhY2goKGZ1bmN0 aW9uKHQpe3ZhciBlLHIsaSxhPW4sbz10Lmxlbmd0aDtmb3IodC5zb3J0KGMpLGk9MDtpPG87 KytpKShyPWEtKGU9dFtpXSkueTApPjAmJihlLnkwKz1yLGUueTErPXIpLGE9ZS55MStiO2lm KChyPWEtYi15KT4wKWZvcihhPWUueTAtPXIsZS55MS09cixpPW8tMjtpPj0wOy0taSkocj0o ZT10W2ldKS55MStiLWEpPjAmJihlLnkwLT1yLGUueTEtPXIpLGE9ZS55MH0pKX19ZnVuY3Rp b24gUCh0KXt0Lm5vZGVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3Quc291cmNlTGlua3Muc29y dChsKSx0LnRhcmdldExpbmtzLnNvcnQocyl9KSksdC5ub2Rlcy5mb3JFYWNoKChmdW5jdGlv bih0KXt2YXIgZT10LnkwLHI9ZTt0LnNvdXJjZUxpbmtzLmZvckVhY2goKGZ1bmN0aW9uKHQp e3QueTA9ZSt0LndpZHRoLzIsZSs9dC53aWR0aH0pKSx0LnRhcmdldExpbmtzLmZvckVhY2go KGZ1bmN0aW9uKHQpe3QueTE9cit0LndpZHRoLzIscis9dC53aWR0aH0pKX0pKX1yZXR1cm4g TS51cGRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIFAodCksdH0sTS5ub2RlSWQ9ZnVuY3Rpb24o dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KF89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpv KHQpLE0pOl99LE0ubm9kZUFsaWduPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVu Z3RoPyh3PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6byh0KSxNKTp3fSxNLm5vZGVXaWR0aD1m dW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD0rdCxNKTp4fSxNLm5vZGVQ YWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPSt0LE0pOmJ9 LE0ubm9kZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFQ9ImZ1bmN0 aW9uIj09dHlwZW9mIHQ/dDpvKHQpLE0pOlR9LE0ubGlua3M9ZnVuY3Rpb24odCl7cmV0dXJu IGFyZ3VtZW50cy5sZW5ndGg/KGs9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpvKHQpLE0pOmt9 LE0uc2l6ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1uPTAsaT0r ZVswXSx5PStlWzFdLE0pOltpLXQseS1uXX0sTS5leHRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJu IGFyZ3VtZW50cy5sZW5ndGg/KHQ9K2VbMF1bMF0saT0rZVsxXVswXSxuPStlWzBdWzFdLHk9 K2VbMV1bMV0sTSk6W1t0LG5dLFtpLHldXX0sTS5pdGVyYXRpb25zPWZ1bmN0aW9uKHQpe3Jl dHVybiBhcmd1bWVudHMubGVuZ3RoPyhBPSt0LE0pOkF9LE19LHQuc2Fua2V5Q2VudGVyPWZ1 bmN0aW9uKHQpe3JldHVybiB0LnRhcmdldExpbmtzLmxlbmd0aD90LmRlcHRoOnQuc291cmNl TGlua3MubGVuZ3RoP2UubWluKHQuc291cmNlTGlua3MsaSktMTowfSx0LnNhbmtleUxlZnQ9 ZnVuY3Rpb24odCl7cmV0dXJuIHQuZGVwdGh9LHQuc2Fua2V5UmlnaHQ9ZnVuY3Rpb24odCxl KXtyZXR1cm4gZS0xLXQuaGVpZ2h0fSx0LnNhbmtleUp1c3RpZnk9YSx0LnNhbmtleUxpbmtI b3Jpem9udGFsPWZ1bmN0aW9uKCl7cmV0dXJuIG4ubGlua0hvcml6b250YWwoKS5zb3VyY2Uo eSkudGFyZ2V0KHgpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3Zh bHVlOiEwfSl9KSl9LHsiZDMtYXJyYXkiOjEwNywiZDMtY29sbGVjdGlvbiI6MTA4LCJkMy1z aGFwZSI6MTE5fV0sNTg6W2Z1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oKXt2YXIgdD17dmVy c2lvbjoiMy44LjAifSxyPVtdLnNsaWNlLG49ZnVuY3Rpb24odCl7cmV0dXJuIHIuY2FsbCh0 KX0saT1zZWxmLmRvY3VtZW50O2Z1bmN0aW9uIGEodCl7cmV0dXJuIHQmJih0Lm93bmVyRG9j dW1lbnR8fHQuZG9jdW1lbnR8fHQpLmRvY3VtZW50RWxlbWVudH1mdW5jdGlvbiBvKHQpe3Jl dHVybiB0JiYodC5vd25lckRvY3VtZW50JiZ0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8 fHQuZG9jdW1lbnQmJnR8fHQuZGVmYXVsdFZpZXcpfWlmKGkpdHJ5e24oaS5kb2N1bWVudEVs ZW1lbnQuY2hpbGROb2RlcylbMF0ubm9kZVR5cGV9Y2F0Y2godCl7bj1mdW5jdGlvbih0KXtm b3IodmFyIGU9dC5sZW5ndGgscj1uZXcgQXJyYXkoZSk7ZS0tOylyW2VdPXRbZV07cmV0dXJu IHJ9fWlmKERhdGUubm93fHwoRGF0ZS5ub3c9ZnVuY3Rpb24oKXtyZXR1cm4rbmV3IERhdGV9 KSxpKXRyeXtpLmNyZWF0ZUVsZW1lbnQoIkRJViIpLnN0eWxlLnNldFByb3BlcnR5KCJvcGFj aXR5IiwwLCIiKX1jYXRjaCh0KXt2YXIgcz10aGlzLkVsZW1lbnQucHJvdG90eXBlLGw9cy5z ZXRBdHRyaWJ1dGUsYz1zLnNldEF0dHJpYnV0ZU5TLHU9dGhpcy5DU1NTdHlsZURlY2xhcmF0 aW9uLnByb3RvdHlwZSxmPXUuc2V0UHJvcGVydHk7cy5zZXRBdHRyaWJ1dGU9ZnVuY3Rpb24o dCxlKXtsLmNhbGwodGhpcyx0LGUrIiIpfSxzLnNldEF0dHJpYnV0ZU5TPWZ1bmN0aW9uKHQs ZSxyKXtjLmNhbGwodGhpcyx0LGUscisiIil9LHUuc2V0UHJvcGVydHk9ZnVuY3Rpb24odCxl LHIpe2YuY2FsbCh0aGlzLHQsZSsiIixyKX19ZnVuY3Rpb24gaCh0LGUpe3JldHVybiB0PGU/ LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBwKHQpe3JldHVybiBudWxsPT09dD9OYU46 K3R9ZnVuY3Rpb24gZCh0KXtyZXR1cm4haXNOYU4odCl9ZnVuY3Rpb24gbSh0KXtyZXR1cm57 bGVmdDpmdW5jdGlvbihlLHIsbixpKXtmb3IoYXJndW1lbnRzLmxlbmd0aDwzJiYobj0wKSxh cmd1bWVudHMubGVuZ3RoPDQmJihpPWUubGVuZ3RoKTtuPGk7KXt2YXIgYT1uK2k+Pj4xO3Qo ZVthXSxyKTwwP249YSsxOmk9YX1yZXR1cm4gbn0scmlnaHQ6ZnVuY3Rpb24oZSxyLG4saSl7 Zm9yKGFyZ3VtZW50cy5sZW5ndGg8MyYmKG49MCksYXJndW1lbnRzLmxlbmd0aDw0JiYoaT1l Lmxlbmd0aCk7bjxpOyl7dmFyIGE9bitpPj4+MTt0KGVbYV0scik+MD9pPWE6bj1hKzF9cmV0 dXJuIG59fX10LmFzY2VuZGluZz1oLHQuZGVzY2VuZGluZz1mdW5jdGlvbih0LGUpe3JldHVy biBlPHQ/LTE6ZT50PzE6ZT49dD8wOk5hTn0sdC5taW49ZnVuY3Rpb24odCxlKXt2YXIgcixu LGk9LTEsYT10Lmxlbmd0aDtpZigxPT09YXJndW1lbnRzLmxlbmd0aCl7Zm9yKDsrK2k8YTsp aWYobnVsbCE9KG49dFtpXSkmJm4+PW4pe3I9bjticmVha31mb3IoOysraTxhOyludWxsIT0o bj10W2ldKSYmcj5uJiYocj1uKX1lbHNle2Zvcig7KytpPGE7KWlmKG51bGwhPShuPWUuY2Fs bCh0LHRbaV0saSkpJiZuPj1uKXtyPW47YnJlYWt9Zm9yKDsrK2k8YTspbnVsbCE9KG49ZS5j YWxsKHQsdFtpXSxpKSkmJnI+biYmKHI9bil9cmV0dXJuIHJ9LHQubWF4PWZ1bmN0aW9uKHQs ZSl7dmFyIHIsbixpPS0xLGE9dC5sZW5ndGg7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpe2Zv cig7KytpPGE7KWlmKG51bGwhPShuPXRbaV0pJiZuPj1uKXtyPW47YnJlYWt9Zm9yKDsrK2k8 YTspbnVsbCE9KG49dFtpXSkmJm4+ciYmKHI9bil9ZWxzZXtmb3IoOysraTxhOylpZihudWxs IT0obj1lLmNhbGwodCx0W2ldLGkpKSYmbj49bil7cj1uO2JyZWFrfWZvcig7KytpPGE7KW51 bGwhPShuPWUuY2FsbCh0LHRbaV0saSkpJiZuPnImJihyPW4pfXJldHVybiByfSx0LmV4dGVu dD1mdW5jdGlvbih0LGUpe3ZhciByLG4saSxhPS0xLG89dC5sZW5ndGg7aWYoMT09PWFyZ3Vt ZW50cy5sZW5ndGgpe2Zvcig7KythPG87KWlmKG51bGwhPShuPXRbYV0pJiZuPj1uKXtyPWk9 bjticmVha31mb3IoOysrYTxvOyludWxsIT0obj10W2FdKSYmKHI+biYmKHI9biksaTxuJiYo aT1uKSl9ZWxzZXtmb3IoOysrYTxvOylpZihudWxsIT0obj1lLmNhbGwodCx0W2FdLGEpKSYm bj49bil7cj1pPW47YnJlYWt9Zm9yKDsrK2E8bzspbnVsbCE9KG49ZS5jYWxsKHQsdFthXSxh KSkmJihyPm4mJihyPW4pLGk8biYmKGk9bikpfXJldHVybltyLGldfSx0LnN1bT1mdW5jdGlv bih0LGUpe3ZhciByLG49MCxpPXQubGVuZ3RoLGE9LTE7aWYoMT09PWFyZ3VtZW50cy5sZW5n dGgpZm9yKDsrK2E8aTspZChyPSt0W2FdKSYmKG4rPXIpO2Vsc2UgZm9yKDsrK2E8aTspZChy PStlLmNhbGwodCx0W2FdLGEpKSYmKG4rPXIpO3JldHVybiBufSx0Lm1lYW49ZnVuY3Rpb24o dCxlKXt2YXIgcixuPTAsaT10Lmxlbmd0aCxhPS0xLG89aTtpZigxPT09YXJndW1lbnRzLmxl bmd0aClmb3IoOysrYTxpOylkKHI9cCh0W2FdKSk/bis9cjotLW87ZWxzZSBmb3IoOysrYTxp OylkKHI9cChlLmNhbGwodCx0W2FdLGEpKSk/bis9cjotLW87aWYobylyZXR1cm4gbi9vfSx0 LnF1YW50aWxlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9KHQubGVuZ3RoLTEpKmUrMSxuPU1hdGgu Zmxvb3IociksaT0rdFtuLTFdLGE9ci1uO3JldHVybiBhP2krYSoodFtuXS1pKTppfSx0Lm1l ZGlhbj1mdW5jdGlvbihlLHIpe3ZhciBuLGk9W10sYT1lLmxlbmd0aCxvPS0xO2lmKDE9PT1h cmd1bWVudHMubGVuZ3RoKWZvcig7KytvPGE7KWQobj1wKGVbb10pKSYmaS5wdXNoKG4pO2Vs c2UgZm9yKDsrK288YTspZChuPXAoci5jYWxsKGUsZVtvXSxvKSkpJiZpLnB1c2gobik7aWYo aS5sZW5ndGgpcmV0dXJuIHQucXVhbnRpbGUoaS5zb3J0KGgpLC41KX0sdC52YXJpYW5jZT1m dW5jdGlvbih0LGUpe3ZhciByLG4saT10Lmxlbmd0aCxhPTAsbz0wLHM9LTEsbD0wO2lmKDE9 PT1hcmd1bWVudHMubGVuZ3RoKWZvcig7KytzPGk7KWQocj1wKHRbc10pKSYmKG8rPShuPXIt YSkqKHItKGErPW4vKytsKSkpO2Vsc2UgZm9yKDsrK3M8aTspZChyPXAoZS5jYWxsKHQsdFtz XSxzKSkpJiYobys9KG49ci1hKSooci0oYSs9bi8rK2wpKSk7aWYobD4xKXJldHVybiBvLyhs LTEpfSx0LmRldmlhdGlvbj1mdW5jdGlvbigpe3ZhciBlPXQudmFyaWFuY2UuYXBwbHkodGhp cyxhcmd1bWVudHMpO3JldHVybiBlP01hdGguc3FydChlKTplfTt2YXIgZz1tKGgpO2Z1bmN0 aW9uIHYodCl7cmV0dXJuIHQubGVuZ3RofXQuYmlzZWN0TGVmdD1nLmxlZnQsdC5iaXNlY3Q9 dC5iaXNlY3RSaWdodD1nLnJpZ2h0LHQuYmlzZWN0b3I9ZnVuY3Rpb24odCl7cmV0dXJuIG0o MT09PXQubGVuZ3RoP2Z1bmN0aW9uKGUscil7cmV0dXJuIGgodChlKSxyKX06dCl9LHQuc2h1 ZmZsZT1mdW5jdGlvbih0LGUscil7KGE9YXJndW1lbnRzLmxlbmd0aCk8MyYmKHI9dC5sZW5n dGgsYTwyJiYoZT0wKSk7Zm9yKHZhciBuLGksYT1yLWU7YTspaT1NYXRoLnJhbmRvbSgpKmEt LXwwLG49dFthK2VdLHRbYStlXT10W2krZV0sdFtpK2VdPW47cmV0dXJuIHR9LHQucGVybXV0 ZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1lLmxlbmd0aCxuPW5ldyBBcnJheShyKTtyLS07 KW5bcl09dFtlW3JdXTtyZXR1cm4gbn0sdC5wYWlycz1mdW5jdGlvbih0KXtmb3IodmFyIGU9 MCxyPXQubGVuZ3RoLTEsbj10WzBdLGk9bmV3IEFycmF5KHI8MD8wOnIpO2U8cjspaVtlXT1b bixuPXRbKytlXV07cmV0dXJuIGl9LHQudHJhbnNwb3NlPWZ1bmN0aW9uKGUpe2lmKCEoYT1l Lmxlbmd0aCkpcmV0dXJuW107Zm9yKHZhciByPS0xLG49dC5taW4oZSx2KSxpPW5ldyBBcnJh eShuKTsrK3I8bjspZm9yKHZhciBhLG89LTEscz1pW3JdPW5ldyBBcnJheShhKTsrK288YTsp c1tvXT1lW29dW3JdO3JldHVybiBpfSx0LnppcD1mdW5jdGlvbigpe3JldHVybiB0LnRyYW5z cG9zZShhcmd1bWVudHMpfSx0LmtleXM9ZnVuY3Rpb24odCl7dmFyIGU9W107Zm9yKHZhciBy IGluIHQpZS5wdXNoKHIpO3JldHVybiBlfSx0LnZhbHVlcz1mdW5jdGlvbih0KXt2YXIgZT1b XTtmb3IodmFyIHIgaW4gdCllLnB1c2godFtyXSk7cmV0dXJuIGV9LHQuZW50cmllcz1mdW5j dGlvbih0KXt2YXIgZT1bXTtmb3IodmFyIHIgaW4gdCllLnB1c2goe2tleTpyLHZhbHVlOnRb cl19KTtyZXR1cm4gZX0sdC5tZXJnZT1mdW5jdGlvbih0KXtmb3IodmFyIGUscixuLGk9dC5s ZW5ndGgsYT0tMSxvPTA7KythPGk7KW8rPXRbYV0ubGVuZ3RoO2ZvcihyPW5ldyBBcnJheShv KTstLWk+PTA7KWZvcihlPShuPXRbaV0pLmxlbmd0aDstLWU+PTA7KXJbLS1vXT1uW2VdO3Jl dHVybiByfTt2YXIgeT1NYXRoLmFicztmdW5jdGlvbiB4KHQpe2Zvcih2YXIgZT0xO3QqZSUx OyllKj0xMDtyZXR1cm4gZX1mdW5jdGlvbiBiKHQsZSl7Zm9yKHZhciByIGluIGUpT2JqZWN0 LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLHIse3ZhbHVlOmVbcl0sZW51bWVyYWJsZToh MX0pfWZ1bmN0aW9uIF8oKXt0aGlzLl89T2JqZWN0LmNyZWF0ZShudWxsKX10LnJhbmdlPWZ1 bmN0aW9uKHQsZSxyKXtpZihhcmd1bWVudHMubGVuZ3RoPDMmJihyPTEsYXJndW1lbnRzLmxl bmd0aDwyJiYoZT10LHQ9MCkpLChlLXQpL3I9PTEvMCl0aHJvdyBuZXcgRXJyb3IoImluZmlu aXRlIHJhbmdlIik7dmFyIG4saT1bXSxhPXgoeShyKSksbz0tMTtpZih0Kj1hLGUqPWEsKHIq PWEpPDApZm9yKDsobj10K3IqKytvKT5lOylpLnB1c2gobi9hKTtlbHNlIGZvcig7KG49dCty Kisrbyk8ZTspaS5wdXNoKG4vYSk7cmV0dXJuIGl9LHQubWFwPWZ1bmN0aW9uKHQsZSl7dmFy IHI9bmV3IF87aWYodCBpbnN0YW5jZW9mIF8pdC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3Iu c2V0KHQsZSl9KSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgbixpPS0xLGE9dC5s ZW5ndGg7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKDsrK2k8YTspci5zZXQoaSx0W2ld KTtlbHNlIGZvcig7KytpPGE7KXIuc2V0KGUuY2FsbCh0LG49dFtpXSxpKSxuKX1lbHNlIGZv cih2YXIgbyBpbiB0KXIuc2V0KG8sdFtvXSk7cmV0dXJuIHJ9O2Z1bmN0aW9uIHcodCl7cmV0 dXJuIl9fcHJvdG9fXyI9PSh0Kz0iIil8fCJcMCI9PT10WzBdPyJcMCIrdDp0fWZ1bmN0aW9u IFQodCl7cmV0dXJuIlwwIj09PSh0Kz0iIilbMF0/dC5zbGljZSgxKTp0fWZ1bmN0aW9uIGso dCl7cmV0dXJuIHcodClpbiB0aGlzLl99ZnVuY3Rpb24gQSh0KXtyZXR1cm4odD13KHQpKWlu IHRoaXMuXyYmZGVsZXRlIHRoaXMuX1t0XX1mdW5jdGlvbiBNKCl7dmFyIHQ9W107Zm9yKHZh ciBlIGluIHRoaXMuXyl0LnB1c2goVChlKSk7cmV0dXJuIHR9ZnVuY3Rpb24gUygpe3ZhciB0 PTA7Zm9yKHZhciBlIGluIHRoaXMuXykrK3Q7cmV0dXJuIHR9ZnVuY3Rpb24gRSgpe2Zvcih2 YXIgdCBpbiB0aGlzLl8pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gTCgpe3RoaXMuXz1P YmplY3QuY3JlYXRlKG51bGwpfWZ1bmN0aW9uIEModCl7cmV0dXJuIHR9ZnVuY3Rpb24gUCh0 LGUscil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ci5hcHBseShlLGFyZ3VtZW50cyk7cmV0 dXJuIG49PT1lP3Q6bn19ZnVuY3Rpb24gSSh0LGUpe2lmKGUgaW4gdClyZXR1cm4gZTtlPWUu Y2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKTtmb3IodmFyIHI9MCxuPU8ubGVu Z3RoO3I8bjsrK3Ipe3ZhciBpPU9bcl0rZTtpZihpIGluIHQpcmV0dXJuIGl9fWIoXyx7aGFz OmssZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9bdyh0KV19LHNldDpmdW5jdGlvbih0 LGUpe3JldHVybiB0aGlzLl9bdyh0KV09ZX0scmVtb3ZlOkEsa2V5czpNLHZhbHVlczpmdW5j dGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzLl8pdC5wdXNoKHRoaXMuX1tlXSk7 cmV0dXJuIHR9LGVudHJpZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhp cy5fKXQucHVzaCh7a2V5OlQoZSksdmFsdWU6dGhpcy5fW2VdfSk7cmV0dXJuIHR9LHNpemU6 UyxlbXB0eTpFLGZvckVhY2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHRoaXMuXyl0LmNh bGwodGhpcyxUKGUpLHRoaXMuX1tlXSl9fSksdC5uZXN0PWZ1bmN0aW9uKCl7dmFyIGUscixu PXt9LGk9W10sYT1bXTtmdW5jdGlvbiBvKHQsYSxzKXtpZihzPj1pLmxlbmd0aClyZXR1cm4g cj9yLmNhbGwobixhKTplP2Euc29ydChlKTphO2Zvcih2YXIgbCxjLHUsZixoPS0xLHA9YS5s ZW5ndGgsZD1pW3MrK10sbT1uZXcgXzsrK2g8cDspKGY9bS5nZXQobD1kKGM9YVtoXSkpKT9m LnB1c2goYyk6bS5zZXQobCxbY10pO3JldHVybiB0PyhjPXQoKSx1PWZ1bmN0aW9uKGUscil7 Yy5zZXQoZSxvKHQscixzKSl9KTooYz17fSx1PWZ1bmN0aW9uKGUscil7Y1tlXT1vKHQscixz KX0pLG0uZm9yRWFjaCh1KSxjfXJldHVybiBuLm1hcD1mdW5jdGlvbih0LGUpe3JldHVybiBv KGUsdCwwKX0sbi5lbnRyaWVzPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbiB0KGUscil7 aWYocj49aS5sZW5ndGgpcmV0dXJuIGU7dmFyIG49W10sbz1hW3IrK107cmV0dXJuIGUuZm9y RWFjaCgoZnVuY3Rpb24oZSxpKXtuLnB1c2goe2tleTplLHZhbHVlczp0KGkscil9KX0pKSxv P24uc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbyh0LmtleSxlLmtleSl9KSk6bn0obyh0 Lm1hcCxlLDApLDApfSxuLmtleT1mdW5jdGlvbih0KXtyZXR1cm4gaS5wdXNoKHQpLG59LG4u c29ydEtleXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFbaS5sZW5ndGgtMV09dCxufSxuLnNvcnRW YWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGU9dCxufSxuLnJvbGx1cD1mdW5jdGlvbih0KXty ZXR1cm4gcj10LG59LG59LHQuc2V0PWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBMO2lmKHQpZm9y KHZhciByPTAsbj10Lmxlbmd0aDtyPG47KytyKWUuYWRkKHRbcl0pO3JldHVybiBlfSxiKEws e2hhczprLGFkZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fW3codCs9IiIpXT0hMCx0fSxy ZW1vdmU6QSx2YWx1ZXM6TSxzaXplOlMsZW1wdHk6RSxmb3JFYWNoOmZ1bmN0aW9uKHQpe2Zv cih2YXIgZSBpbiB0aGlzLl8pdC5jYWxsKHRoaXMsVChlKSl9fSksdC5iZWhhdmlvcj17fSx0 LnJlYmluZD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcixuPTEsaT1hcmd1bWVudHMubGVuZ3Ro OysrbjxpOyl0W3I9YXJndW1lbnRzW25dXT1QKHQsZSxlW3JdKTtyZXR1cm4gdH07dmFyIE89 WyJ3ZWJraXQiLCJtcyIsIm1veiIsIk1veiIsIm8iLCJPIl07ZnVuY3Rpb24geigpe31mdW5j dGlvbiBEKCl7fWZ1bmN0aW9uIFIodCl7dmFyIGU9W10scj1uZXcgXztmdW5jdGlvbiBuKCl7 Zm9yKHZhciByLG49ZSxpPS0xLGE9bi5sZW5ndGg7KytpPGE7KShyPW5baV0ub24pJiZyLmFw cGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gdH1yZXR1cm4gbi5vbj1mdW5jdGlvbihuLGkp e3ZhciBhLG89ci5nZXQobik7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9vJiZvLm9uOihv JiYoby5vbj1udWxsLGU9ZS5zbGljZSgwLGE9ZS5pbmRleE9mKG8pKS5jb25jYXQoZS5zbGlj ZShhKzEpKSxyLnJlbW92ZShuKSksaSYmZS5wdXNoKHIuc2V0KG4se29uOml9KSksdCl9LG59 ZnVuY3Rpb24gRigpe3QuZXZlbnQucHJldmVudERlZmF1bHQoKX1mdW5jdGlvbiBCKCl7Zm9y KHZhciBlLHI9dC5ldmVudDtlPXIuc291cmNlRXZlbnQ7KXI9ZTtyZXR1cm4gcn1mdW5jdGlv biBOKGUpe2Zvcih2YXIgcj1uZXcgRCxuPTAsaT1hcmd1bWVudHMubGVuZ3RoOysrbjxpOyly W2FyZ3VtZW50c1tuXV09UihyKTtyZXR1cm4gci5vZj1mdW5jdGlvbihuLGkpe3JldHVybiBm dW5jdGlvbihhKXt0cnl7dmFyIG89YS5zb3VyY2VFdmVudD10LmV2ZW50O2EudGFyZ2V0PWUs dC5ldmVudD1hLHJbYS50eXBlXS5hcHBseShuLGkpfWZpbmFsbHl7dC5ldmVudD1vfX19LHJ9 dC5kaXNwYXRjaD1mdW5jdGlvbigpe2Zvcih2YXIgdD1uZXcgRCxlPS0xLHI9YXJndW1lbnRz Lmxlbmd0aDsrK2U8cjspdFthcmd1bWVudHNbZV1dPVIodCk7cmV0dXJuIHR9LEQucHJvdG90 eXBlLm9uPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5pbmRleE9mKCIuIiksbj0iIjtpZihyPj0w JiYobj10LnNsaWNlKHIrMSksdD10LnNsaWNlKDAscikpLHQpcmV0dXJuIGFyZ3VtZW50cy5s ZW5ndGg8Mj90aGlzW3RdLm9uKG4pOnRoaXNbdF0ub24obixlKTtpZigyPT09YXJndW1lbnRz Lmxlbmd0aCl7aWYobnVsbD09ZSlmb3IodCBpbiB0aGlzKXRoaXMuaGFzT3duUHJvcGVydHko dCkmJnRoaXNbdF0ub24obixudWxsKTtyZXR1cm4gdGhpc319LHQuZXZlbnQ9bnVsbCx0LnJl cXVvdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZShqLCJcXCQmIil9O3ZhciBqPS9b XFxcXlwkXCpcK1w/XHxcW1xdXChcKVwuXHtcfV0vZyxVPXt9Ll9fcHJvdG9fXz9mdW5jdGlv bih0LGUpe3QuX19wcm90b19fPWV9OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByIGluIGUpdFty XT1lW3JdfTtmdW5jdGlvbiBWKHQpe3JldHVybiBVKHQsWSksdH12YXIgSD1mdW5jdGlvbih0 LGUpe3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IodCl9LHE9ZnVuY3Rpb24odCxlKXtyZXR1cm4g ZS5xdWVyeVNlbGVjdG9yQWxsKHQpfSxHPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5tYXRjaGVz fHx0W0kodCwibWF0Y2hlc1NlbGVjdG9yIildO3JldHVybihHPWZ1bmN0aW9uKHQsZSl7cmV0 dXJuIHIuY2FsbCh0LGUpfSkodCxlKX07ImZ1bmN0aW9uIj09dHlwZW9mIFNpenpsZSYmKEg9 ZnVuY3Rpb24odCxlKXtyZXR1cm4gU2l6emxlKHQsZSlbMF18fG51bGx9LHE9U2l6emxlLEc9 U2l6emxlLm1hdGNoZXNTZWxlY3RvciksdC5zZWxlY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4g dC5zZWxlY3QoaS5kb2N1bWVudEVsZW1lbnQpfTt2YXIgWT10LnNlbGVjdGlvbi5wcm90b3R5 cGU9W107ZnVuY3Rpb24gVyh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90OmZ1bmN0 aW9uKCl7cmV0dXJuIEgodCx0aGlzKX19ZnVuY3Rpb24gWCh0KXtyZXR1cm4iZnVuY3Rpb24i PT10eXBlb2YgdD90OmZ1bmN0aW9uKCl7cmV0dXJuIHEodCx0aGlzKX19WS5zZWxlY3Q9ZnVu Y3Rpb24odCl7dmFyIGUscixuLGksYT1bXTt0PVcodCk7Zm9yKHZhciBvPS0xLHM9dGhpcy5s ZW5ndGg7KytvPHM7KXthLnB1c2goZT1bXSksZS5wYXJlbnROb2RlPShuPXRoaXNbb10pLnBh cmVudE5vZGU7Zm9yKHZhciBsPS0xLGM9bi5sZW5ndGg7KytsPGM7KShpPW5bbF0pPyhlLnB1 c2gocj10LmNhbGwoaSxpLl9fZGF0YV9fLGwsbykpLHImJiJfX2RhdGFfXyJpbiBpJiYoci5f X2RhdGFfXz1pLl9fZGF0YV9fKSk6ZS5wdXNoKG51bGwpfXJldHVybiBWKGEpfSxZLnNlbGVj dEFsbD1mdW5jdGlvbih0KXt2YXIgZSxyLGk9W107dD1YKHQpO2Zvcih2YXIgYT0tMSxvPXRo aXMubGVuZ3RoOysrYTxvOylmb3IodmFyIHM9dGhpc1thXSxsPS0xLGM9cy5sZW5ndGg7Kyts PGM7KShyPXNbbF0pJiYoaS5wdXNoKGU9bih0LmNhbGwocixyLl9fZGF0YV9fLGwsYSkpKSxl LnBhcmVudE5vZGU9cik7cmV0dXJuIFYoaSl9O3ZhciBaPSJodHRwOi8vd3d3LnczLm9yZy8x OTk5L3hodG1sIixKPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDpa LHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cu dzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIw MDAveG1sbnMvIn07ZnVuY3Rpb24gSyhlLHIpe3JldHVybiBlPXQubnMucXVhbGlmeShlKSxu dWxsPT1yP2UubG9jYWw/ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGUuc3Bh Y2UsZS5sb2NhbCl9OmZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUoZSl9OiJmdW5j dGlvbiI9PXR5cGVvZiByP2UubG9jYWw/ZnVuY3Rpb24oKXt2YXIgdD1yLmFwcGx5KHRoaXMs YXJndW1lbnRzKTtudWxsPT10P3RoaXMucmVtb3ZlQXR0cmlidXRlTlMoZS5zcGFjZSxlLmxv Y2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKGUuc3BhY2UsZS5sb2NhbCx0KX06ZnVuY3Rpb24o KXt2YXIgdD1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT10P3RoaXMucmVtb3ZlQXR0 cmlidXRlKGUpOnRoaXMuc2V0QXR0cmlidXRlKGUsdCl9OmUubG9jYWw/ZnVuY3Rpb24oKXt0 aGlzLnNldEF0dHJpYnV0ZU5TKGUuc3BhY2UsZS5sb2NhbCxyKX06ZnVuY3Rpb24oKXt0aGlz LnNldEF0dHJpYnV0ZShlLHIpfX1mdW5jdGlvbiBRKHQpe3JldHVybiB0LnRyaW0oKS5yZXBs YWNlKC9ccysvZywiICIpfWZ1bmN0aW9uICQoZSl7cmV0dXJuIG5ldyBSZWdFeHAoIig/Ol58 XFxzKykiK3QucmVxdW90ZShlKSsiKD86XFxzK3wkKSIsImciKX1mdW5jdGlvbiB0dCh0KXty ZXR1cm4odCsiIikudHJpbSgpLnNwbGl0KC9efFxzKy8pfWZ1bmN0aW9uIGV0KHQsZSl7dmFy IHI9KHQ9dHQodCkubWFwKHJ0KSkubGVuZ3RoO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBl P2Z1bmN0aW9uKCl7Zm9yKHZhciBuPS0xLGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7Kytu PHI7KXRbbl0odGhpcyxpKX06ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPHI7KXRbbl0o dGhpcyxlKX19ZnVuY3Rpb24gcnQodCl7dmFyIGU9JCh0KTtyZXR1cm4gZnVuY3Rpb24ocixu KXtpZihpPXIuY2xhc3NMaXN0KXJldHVybiBuP2kuYWRkKHQpOmkucmVtb3ZlKHQpO3ZhciBp PXIuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIjtuPyhlLmxhc3RJbmRleD0wLGUudGVzdChp KXx8ci5zZXRBdHRyaWJ1dGUoImNsYXNzIixRKGkrIiAiK3QpKSk6ci5zZXRBdHRyaWJ1dGUo ImNsYXNzIixRKGkucmVwbGFjZShlLCIgIikpKX19ZnVuY3Rpb24gbnQodCxlLHIpe3JldHVy biBudWxsPT1lP2Z1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX06ImZ1 bmN0aW9uIj09dHlwZW9mIGU/ZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1l bnRzKTtudWxsPT1uP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCk6dGhpcy5zdHlsZS5z ZXRQcm9wZXJ0eSh0LG4scil9OmZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0 LGUscil9fWZ1bmN0aW9uIGl0KHQsZSl7cmV0dXJuIG51bGw9PWU/ZnVuY3Rpb24oKXtkZWxl dGUgdGhpc1t0XX06ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZnVuY3Rpb24oKXt2YXIgcj1lLmFw cGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1yP2RlbGV0ZSB0aGlzW3RdOnRoaXNbdF09cn06 ZnVuY3Rpb24oKXt0aGlzW3RdPWV9fWZ1bmN0aW9uIGF0KGUpe3JldHVybiJmdW5jdGlvbiI9 PXR5cGVvZiBlP2U6KGU9dC5ucy5xdWFsaWZ5KGUpKS5sb2NhbD9mdW5jdGlvbigpe3JldHVy biB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuc3BhY2UsZS5sb2NhbCl9 OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vd25lckRvY3VtZW50LHI9dGhpcy5uYW1lc3BhY2VV Ukk7cmV0dXJuIHI9PT1aJiZ0LmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkk9PT1aP3Qu Y3JlYXRlRWxlbWVudChlKTp0LmNyZWF0ZUVsZW1lbnROUyhyLGUpfX1mdW5jdGlvbiBvdCgp e3ZhciB0PXRoaXMucGFyZW50Tm9kZTt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9u IHN0KHQpe3JldHVybntfX2RhdGFfXzp0fX1mdW5jdGlvbiBsdCh0KXtyZXR1cm4gZnVuY3Rp b24oKXtyZXR1cm4gRyh0aGlzLHQpfX1mdW5jdGlvbiBjdCh0KXtyZXR1cm4gYXJndW1lbnRz Lmxlbmd0aHx8KHQ9aCksZnVuY3Rpb24oZSxyKXtyZXR1cm4gZSYmcj90KGUuX19kYXRhX18s ci5fX2RhdGFfXyk6IWUtIXJ9fWZ1bmN0aW9uIHV0KHQsZSl7Zm9yKHZhciByPTAsbj10Lmxl bmd0aDtyPG47cisrKWZvcih2YXIgaSxhPXRbcl0sbz0wLHM9YS5sZW5ndGg7bzxzO28rKyko aT1hW29dKSYmZShpLG8scik7cmV0dXJuIHR9ZnVuY3Rpb24gZnQodCl7cmV0dXJuIFUodCxo dCksdH10Lm5zPXtwcmVmaXg6SixxdWFsaWZ5OmZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhP ZigiOiIpLHI9dDtyZXR1cm4gZT49MCYmInhtbG5zIiE9PShyPXQuc2xpY2UoMCxlKSkmJih0 PXQuc2xpY2UoZSsxKSksSi5oYXNPd25Qcm9wZXJ0eShyKT97c3BhY2U6SltyXSxsb2NhbDp0 fTp0fX0sWS5hdHRyPWZ1bmN0aW9uKGUscil7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtpZigi c3RyaW5nIj09dHlwZW9mIGUpe3ZhciBuPXRoaXMubm9kZSgpO3JldHVybihlPXQubnMucXVh bGlmeShlKSkubG9jYWw/bi5nZXRBdHRyaWJ1dGVOUyhlLnNwYWNlLGUubG9jYWwpOm4uZ2V0 QXR0cmlidXRlKGUpfWZvcihyIGluIGUpdGhpcy5lYWNoKEsocixlW3JdKSk7cmV0dXJuIHRo aXN9cmV0dXJuIHRoaXMuZWFjaChLKGUscikpfSxZLmNsYXNzZWQ9ZnVuY3Rpb24odCxlKXtp Zihhcmd1bWVudHMubGVuZ3RoPDIpe2lmKCJzdHJpbmciPT10eXBlb2YgdCl7dmFyIHI9dGhp cy5ub2RlKCksbj0odD10dCh0KSkubGVuZ3RoLGk9LTE7aWYoZT1yLmNsYXNzTGlzdCl7Zm9y KDsrK2k8bjspaWYoIWUuY29udGFpbnModFtpXSkpcmV0dXJuITF9ZWxzZSBmb3IoZT1yLmdl dEF0dHJpYnV0ZSgiY2xhc3MiKTsrK2k8bjspaWYoISQodFtpXSkudGVzdChlKSlyZXR1cm4h MTtyZXR1cm4hMH1mb3IoZSBpbiB0KXRoaXMuZWFjaChldChlLHRbZV0pKTtyZXR1cm4gdGhp c31yZXR1cm4gdGhpcy5lYWNoKGV0KHQsZSkpfSxZLnN0eWxlPWZ1bmN0aW9uKHQsZSxyKXt2 YXIgbj1hcmd1bWVudHMubGVuZ3RoO2lmKG48Myl7aWYoInN0cmluZyIhPXR5cGVvZiB0KXtm b3IociBpbiBuPDImJihlPSIiKSx0KXRoaXMuZWFjaChudChyLHRbcl0sZSkpO3JldHVybiB0 aGlzfWlmKG48Mil7dmFyIGk9dGhpcy5ub2RlKCk7cmV0dXJuIG8oaSkuZ2V0Q29tcHV0ZWRT dHlsZShpLG51bGwpLmdldFByb3BlcnR5VmFsdWUodCl9cj0iIn1yZXR1cm4gdGhpcy5lYWNo KG50KHQsZSxyKSl9LFkucHJvcGVydHk9ZnVuY3Rpb24odCxlKXtpZihhcmd1bWVudHMubGVu Z3RoPDIpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdGhpcy5ub2RlKClbdF07Zm9y KGUgaW4gdCl0aGlzLmVhY2goaXQoZSx0W2VdKSk7cmV0dXJuIHRoaXN9cmV0dXJuIHRoaXMu ZWFjaChpdCh0LGUpKX0sWS50ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVu Z3RoP3RoaXMuZWFjaCgiZnVuY3Rpb24iPT10eXBlb2YgdD9mdW5jdGlvbigpe3ZhciBlPXQu YXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfTpu dWxsPT10P2Z1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD0iIn06ZnVuY3Rpb24oKXt0aGlz LnRleHRDb250ZW50PXR9KTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0sWS5odG1sPWZ1bmN0 aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgiZnVuY3Rpb24iPT10 eXBlb2YgdD9mdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMu aW5uZXJIVE1MPW51bGw9PWU/IiI6ZX06bnVsbD09dD9mdW5jdGlvbigpe3RoaXMuaW5uZXJI VE1MPSIifTpmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPXR9KTp0aGlzLm5vZGUoKS5pbm5l ckhUTUx9LFkuYXBwZW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0PWF0KHQpLHRoaXMuc2VsZWN0 KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmFwcGVuZENoaWxkKHQuYXBwbHkodGhpcyxhcmd1 bWVudHMpKX0pKX0sWS5pbnNlcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD1hdCh0KSxlPVco ZSksdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKHQu YXBwbHkodGhpcyxhcmd1bWVudHMpLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHxudWxsKX0p KX0sWS5yZW1vdmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKG90KX0sWS5kYXRhPWZ1 bmN0aW9uKHQsZSl7dmFyIHIsbixpPS0xLGE9dGhpcy5sZW5ndGg7aWYoIWFyZ3VtZW50cy5s ZW5ndGgpe2Zvcih0PW5ldyBBcnJheShhPShyPXRoaXNbMF0pLmxlbmd0aCk7KytpPGE7KShu PXJbaV0pJiYodFtpXT1uLl9fZGF0YV9fKTtyZXR1cm4gdH1mdW5jdGlvbiBvKHQscil7dmFy IG4saSxhLG89dC5sZW5ndGgsdT1yLmxlbmd0aCxmPU1hdGgubWluKG8sdSksaD1uZXcgQXJy YXkodSkscD1uZXcgQXJyYXkodSksZD1uZXcgQXJyYXkobyk7aWYoZSl7dmFyIG0sZz1uZXcg Xyx2PW5ldyBBcnJheShvKTtmb3Iobj0tMTsrK248bzspKGk9dFtuXSkmJihnLmhhcyhtPWUu Y2FsbChpLGkuX19kYXRhX18sbikpP2Rbbl09aTpnLnNldChtLGkpLHZbbl09bSk7Zm9yKG49 LTE7KytuPHU7KShpPWcuZ2V0KG09ZS5jYWxsKHIsYT1yW25dLG4pKSk/ITAhPT1pJiYoaFtu XT1pLGkuX19kYXRhX189YSk6cFtuXT1zdChhKSxnLnNldChtLCEwKTtmb3Iobj0tMTsrK248 bzspbiBpbiB2JiYhMCE9PWcuZ2V0KHZbbl0pJiYoZFtuXT10W25dKX1lbHNle2ZvcihuPS0x OysrbjxmOylpPXRbbl0sYT1yW25dLGk/KGkuX19kYXRhX189YSxoW25dPWkpOnBbbl09c3Qo YSk7Zm9yKDtuPHU7KytuKXBbbl09c3QocltuXSk7Zm9yKDtuPG87KytuKWRbbl09dFtuXX1w LnVwZGF0ZT1oLHAucGFyZW50Tm9kZT1oLnBhcmVudE5vZGU9ZC5wYXJlbnROb2RlPXQucGFy ZW50Tm9kZSxzLnB1c2gocCksbC5wdXNoKGgpLGMucHVzaChkKX12YXIgcz1mdChbXSksbD1W KFtdKSxjPVYoW10pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KWZvcig7KytpPGE7KW8ocj10 aGlzW2ldLHQuY2FsbChyLHIucGFyZW50Tm9kZS5fX2RhdGFfXyxpKSk7ZWxzZSBmb3IoOysr aTxhOylvKHI9dGhpc1tpXSx0KTtyZXR1cm4gbC5lbnRlcj1mdW5jdGlvbigpe3JldHVybiBz fSxsLmV4aXQ9ZnVuY3Rpb24oKXtyZXR1cm4gY30sbH0sWS5kYXR1bT1mdW5jdGlvbih0KXty ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsdCk6dGhp cy5wcm9wZXJ0eSgiX19kYXRhX18iKX0sWS5maWx0ZXI9ZnVuY3Rpb24odCl7dmFyIGUscixu LGk9W107ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PWx0KHQpKTtmb3IodmFyIGE9MCxvPXRo aXMubGVuZ3RoO2E8bzthKyspe2kucHVzaChlPVtdKSxlLnBhcmVudE5vZGU9KHI9dGhpc1th XSkucGFyZW50Tm9kZTtmb3IodmFyIHM9MCxsPXIubGVuZ3RoO3M8bDtzKyspKG49cltzXSkm JnQuY2FsbChuLG4uX19kYXRhX18scyxhKSYmZS5wdXNoKG4pfXJldHVybiBWKGkpfSxZLm9y ZGVyPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PS0xLGU9dGhpcy5sZW5ndGg7Kyt0PGU7KWZvcih2 YXIgcixuPXRoaXNbdF0saT1uLmxlbmd0aC0xLGE9bltpXTstLWk+PTA7KShyPW5baV0pJiYo YSYmYSE9PXIubmV4dFNpYmxpbmcmJmEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocixhKSxh PXIpO3JldHVybiB0aGlzfSxZLnNvcnQ9ZnVuY3Rpb24odCl7dD1jdC5hcHBseSh0aGlzLGFy Z3VtZW50cyk7Zm9yKHZhciBlPS0xLHI9dGhpcy5sZW5ndGg7KytlPHI7KXRoaXNbZV0uc29y dCh0KTtyZXR1cm4gdGhpcy5vcmRlcigpfSxZLmVhY2g9ZnVuY3Rpb24odCl7cmV0dXJuIHV0 KHRoaXMsKGZ1bmN0aW9uKGUscixuKXt0LmNhbGwoZSxlLl9fZGF0YV9fLHIsbil9KSl9LFku Y2FsbD1mdW5jdGlvbih0KXt2YXIgZT1uKGFyZ3VtZW50cyk7cmV0dXJuIHQuYXBwbHkoZVsw XT10aGlzLGUpLHRoaXN9LFkuZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5ub2RlKCl9 LFkubm9kZT1mdW5jdGlvbigpe2Zvcih2YXIgdD0wLGU9dGhpcy5sZW5ndGg7dDxlO3QrKylm b3IodmFyIHI9dGhpc1t0XSxuPTAsaT1yLmxlbmd0aDtuPGk7bisrKXt2YXIgYT1yW25dO2lm KGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9LFkuc2l6ZT1mdW5jdGlvbigpe3ZhciB0PTA7cmV0 dXJuIHV0KHRoaXMsKGZ1bmN0aW9uKCl7Kyt0fSkpLHR9O3ZhciBodD1bXTtmdW5jdGlvbiBw dCh0KXt2YXIgZSxyO3JldHVybiBmdW5jdGlvbihuLGksYSl7dmFyIG8scz10W2FdLnVwZGF0 ZSxsPXMubGVuZ3RoO2ZvcihhIT1yJiYocj1hLGU9MCksaT49ZSYmKGU9aSsxKTshKG89c1tl XSkmJisrZTxsOyk7cmV0dXJuIG99fWZ1bmN0aW9uIGR0KGUscixpKXt2YXIgYT0iX19vbiIr ZSxvPWUuaW5kZXhPZigiLiIpLHM9Z3Q7bz4wJiYoZT1lLnNsaWNlKDAsbykpO3ZhciBsPW10 LmdldChlKTtmdW5jdGlvbiBjKCl7dmFyIHQ9dGhpc1thXTt0JiYodGhpcy5yZW1vdmVFdmVu dExpc3RlbmVyKGUsdCx0LiQpLGRlbGV0ZSB0aGlzW2FdKX1yZXR1cm4gbCYmKGU9bCxzPXZ0 KSxvP3I/ZnVuY3Rpb24oKXt2YXIgdD1zKHIsbihhcmd1bWVudHMpKTtjLmNhbGwodGhpcyks dGhpcy5hZGRFdmVudExpc3RlbmVyKGUsdGhpc1thXT10LHQuJD1pKSx0Ll89cn06YzpyP3o6 ZnVuY3Rpb24oKXt2YXIgcixuPW5ldyBSZWdFeHAoIl5fX29uKFteLl0rKSIrdC5yZXF1b3Rl KGUpKyIkIik7Zm9yKHZhciBpIGluIHRoaXMpaWYocj1pLm1hdGNoKG4pKXt2YXIgYT10aGlz W2ldO3RoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihyWzFdLGEsYS4kKSxkZWxldGUgdGhpc1tp XX19fXQuc2VsZWN0aW9uLmVudGVyPWZ0LHQuc2VsZWN0aW9uLmVudGVyLnByb3RvdHlwZT1o dCxodC5hcHBlbmQ9WS5hcHBlbmQsaHQuZW1wdHk9WS5lbXB0eSxodC5ub2RlPVkubm9kZSxo dC5jYWxsPVkuY2FsbCxodC5zaXplPVkuc2l6ZSxodC5zZWxlY3Q9ZnVuY3Rpb24odCl7Zm9y KHZhciBlLHIsbixpLGEsbz1bXSxzPS0xLGw9dGhpcy5sZW5ndGg7KytzPGw7KXtuPShpPXRo aXNbc10pLnVwZGF0ZSxvLnB1c2goZT1bXSksZS5wYXJlbnROb2RlPWkucGFyZW50Tm9kZTtm b3IodmFyIGM9LTEsdT1pLmxlbmd0aDsrK2M8dTspKGE9aVtjXSk/KGUucHVzaChuW2NdPXI9 dC5jYWxsKGkucGFyZW50Tm9kZSxhLl9fZGF0YV9fLGMscykpLHIuX19kYXRhX189YS5fX2Rh dGFfXyk6ZS5wdXNoKG51bGwpfXJldHVybiBWKG8pfSxodC5pbnNlcnQ9ZnVuY3Rpb24odCxl KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyJiYoZT1wdCh0aGlzKSksWS5pbnNlcnQuY2Fs bCh0aGlzLHQsZSl9LHQuc2VsZWN0PWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiJzdHJpbmci PT10eXBlb2YgdD8oZT1bSCh0LGkpXSkucGFyZW50Tm9kZT1pLmRvY3VtZW50RWxlbWVudDoo ZT1bdF0pLnBhcmVudE5vZGU9YSh0KSxWKFtlXSl9LHQuc2VsZWN0QWxsPWZ1bmN0aW9uKHQp e3ZhciBlO3JldHVybiJzdHJpbmciPT10eXBlb2YgdD8oZT1uKHEodCxpKSkpLnBhcmVudE5v ZGU9aS5kb2N1bWVudEVsZW1lbnQ6KGU9bih0KSkucGFyZW50Tm9kZT1udWxsLFYoW2VdKX0s WS5vbj1mdW5jdGlvbih0LGUscil7dmFyIG49YXJndW1lbnRzLmxlbmd0aDtpZihuPDMpe2lm KCJzdHJpbmciIT10eXBlb2YgdCl7Zm9yKHIgaW4gbjwyJiYoZT0hMSksdCl0aGlzLmVhY2go ZHQocix0W3JdLGUpKTtyZXR1cm4gdGhpc31pZihuPDIpcmV0dXJuKG49dGhpcy5ub2RlKClb Il9fb24iK3RdKSYmbi5fO3I9ITF9cmV0dXJuIHRoaXMuZWFjaChkdCh0LGUscikpfTt2YXIg bXQ9dC5tYXAoe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQi fSk7ZnVuY3Rpb24gZ3QoZSxyKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGk9dC5ldmVudDt0 LmV2ZW50PW4sclswXT10aGlzLl9fZGF0YV9fO3RyeXtlLmFwcGx5KHRoaXMscil9ZmluYWxs eXt0LmV2ZW50PWl9fX1mdW5jdGlvbiB2dCh0LGUpe3ZhciByPWd0KHQsZSk7cmV0dXJuIGZ1 bmN0aW9uKHQpe3ZhciBlPXQucmVsYXRlZFRhcmdldDtlJiYoZT09PXRoaXN8fDgmZS5jb21w YXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSl8fHIuY2FsbCh0aGlzLHQpfX1pJiZtdC5mb3JF YWNoKChmdW5jdGlvbih0KXsib24iK3QgaW4gaSYmbXQucmVtb3ZlKHQpfSkpO3ZhciB5dCx4 dD0wO2Z1bmN0aW9uIGJ0KGUpe3ZhciByPSIuZHJhZ3N1cHByZXNzLSIrICsreHQsbj0iY2xp Y2siK3IsaT10LnNlbGVjdChvKGUpKS5vbigidG91Y2htb3ZlIityLEYpLm9uKCJkcmFnc3Rh cnQiK3IsRikub24oInNlbGVjdHN0YXJ0IityLEYpO2lmKG51bGw9PXl0JiYoeXQ9ISgib25z ZWxlY3RzdGFydCJpbiBlKSYmSShlLnN0eWxlLCJ1c2VyU2VsZWN0IikpLHl0KXt2YXIgcz1h KGUpLnN0eWxlLGw9c1t5dF07c1t5dF09Im5vbmUifXJldHVybiBmdW5jdGlvbih0KXtpZihp Lm9uKHIsbnVsbCkseXQmJihzW3l0XT1sKSx0KXt2YXIgZT1mdW5jdGlvbigpe2kub24obixu dWxsKX07aS5vbihuLChmdW5jdGlvbigpe0YoKSxlKCl9KSwhMCksc2V0VGltZW91dChlLDAp fX19dC5tb3VzZT1mdW5jdGlvbih0KXtyZXR1cm4gd3QodCxCKCkpfTt2YXIgX3Q9dGhpcy5u YXZpZ2F0b3ImJi9XZWJLaXQvLnRlc3QodGhpcy5uYXZpZ2F0b3IudXNlckFnZW50KT8tMTow O2Z1bmN0aW9uIHd0KGUscil7ci5jaGFuZ2VkVG91Y2hlcyYmKHI9ci5jaGFuZ2VkVG91Y2hl c1swXSk7dmFyIG49ZS5vd25lclNWR0VsZW1lbnR8fGU7aWYobi5jcmVhdGVTVkdQb2ludCl7 dmFyIGk9bi5jcmVhdGVTVkdQb2ludCgpO2lmKF90PDApe3ZhciBhPW8oZSk7aWYoYS5zY3Jv bGxYfHxhLnNjcm9sbFkpe3ZhciBzPShuPXQuc2VsZWN0KCJib2R5IikuYXBwZW5kKCJzdmci KS5zdHlsZSh7cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsbWFyZ2luOjAscGFk ZGluZzowLGJvcmRlcjoibm9uZSJ9LCJpbXBvcnRhbnQiKSlbMF1bMF0uZ2V0U2NyZWVuQ1RN KCk7X3Q9IShzLmZ8fHMuZSksbi5yZW1vdmUoKX19cmV0dXJuIF90PyhpLng9ci5wYWdlWCxp Lnk9ci5wYWdlWSk6KGkueD1yLmNsaWVudFgsaS55PXIuY2xpZW50WSksWyhpPWkubWF0cml4 VHJhbnNmb3JtKGUuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpKSkueCxpLnldfXZhciBsPWUu Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuW3IuY2xpZW50WC1sLmxlZnQtZS5jbGll bnRMZWZ0LHIuY2xpZW50WS1sLnRvcC1lLmNsaWVudFRvcF19ZnVuY3Rpb24gVHQoKXtyZXR1 cm4gdC5ldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5pZGVudGlmaWVyfXQudG91Y2g9ZnVuY3Rp b24odCxlLHIpe2lmKGFyZ3VtZW50cy5sZW5ndGg8MyYmKHI9ZSxlPUIoKS5jaGFuZ2VkVG91 Y2hlcyksZSlmb3IodmFyIG4saT0wLGE9ZS5sZW5ndGg7aTxhOysraSlpZigobj1lW2ldKS5p ZGVudGlmaWVyPT09cilyZXR1cm4gd3QodCxuKX0sdC5iZWhhdmlvci5kcmFnPWZ1bmN0aW9u KCl7dmFyIGU9TihhLCJkcmFnIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIpLHI9bnVsbCxuPXMo eix0Lm1vdXNlLG8sIm1vdXNlbW92ZSIsIm1vdXNldXAiKSxpPXMoVHQsdC50b3VjaCxDLCJ0 b3VjaG1vdmUiLCJ0b3VjaGVuZCIpO2Z1bmN0aW9uIGEoKXt0aGlzLm9uKCJtb3VzZWRvd24u ZHJhZyIsbikub24oInRvdWNoc3RhcnQuZHJhZyIsaSl9ZnVuY3Rpb24gcyhuLGksYSxvLHMp e3JldHVybiBmdW5jdGlvbigpe3ZhciBsLGM9dGhpcyx1PXQuZXZlbnQudGFyZ2V0LmNvcnJl c3BvbmRpbmdFbGVtZW50fHx0LmV2ZW50LnRhcmdldCxmPWMucGFyZW50Tm9kZSxoPWUub2Yo Yyxhcmd1bWVudHMpLHA9MCxkPW4oKSxtPSIuZHJhZyIrKG51bGw9PWQ/IiI6Ii0iK2QpLGc9 dC5zZWxlY3QoYSh1KSkub24obyttLHgpLm9uKHMrbSxiKSx2PWJ0KHUpLHk9aShmLGQpO2Z1 bmN0aW9uIHgoKXt2YXIgdCxlLHI9aShmLGQpO3ImJih0PXJbMF0teVswXSxlPXJbMV0teVsx XSxwfD10fGUseT1yLGgoe3R5cGU6ImRyYWciLHg6clswXStsWzBdLHk6clsxXStsWzFdLGR4 OnQsZHk6ZX0pKX1mdW5jdGlvbiBiKCl7aShmLGQpJiYoZy5vbihvK20sbnVsbCkub24ocytt LG51bGwpLHYocCksaCh7dHlwZToiZHJhZ2VuZCJ9KSl9bD1yP1sobD1yLmFwcGx5KGMsYXJn dW1lbnRzKSkueC15WzBdLGwueS15WzFdXTpbMCwwXSxoKHt0eXBlOiJkcmFnc3RhcnQifSl9 fXJldHVybiBhLm9yaWdpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o cj10LGEpOnJ9LHQucmViaW5kKGEsZSwib24iKX0sdC50b3VjaGVzPWZ1bmN0aW9uKHQsZSl7 cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MiYmKGU9QigpLnRvdWNoZXMpLGU/bihlKS5tYXAo KGZ1bmN0aW9uKGUpe3ZhciByPXd0KHQsZSk7cmV0dXJuIHIuaWRlbnRpZmllcj1lLmlkZW50 aWZpZXIscn0pKTpbXX07dmFyIGt0PTFlLTYsQXQ9TWF0aC5QSSxNdD0yKkF0LFN0PU10LWt0 LEV0PUF0LzIsTHQ9QXQvMTgwLEN0PTE4MC9BdDtmdW5jdGlvbiBQdCh0KXtyZXR1cm4gdD4x P0V0OnQ8LTE/LUV0Ok1hdGguYXNpbih0KX1mdW5jdGlvbiBJdCh0KXtyZXR1cm4oKHQ9TWF0 aC5leHAodCkpKzEvdCkvMn12YXIgT3Q9TWF0aC5TUVJUMjt0LmludGVycG9sYXRlWm9vbT1m dW5jdGlvbih0LGUpe3ZhciByLG4saT10WzBdLGE9dFsxXSxvPXRbMl0scz1lWzBdLGw9ZVsx XSxjPWVbMl0sdT1zLWksZj1sLWEsaD11KnUrZipmO2lmKGg8MWUtMTIpbj1NYXRoLmxvZyhj L28pL090LHI9ZnVuY3Rpb24odCl7cmV0dXJuW2krdCp1LGErdCpmLG8qTWF0aC5leHAoT3Qq dCpuKV19O2Vsc2V7dmFyIHA9TWF0aC5zcXJ0KGgpLGQ9KGMqYy1vKm8rNCpoKS8oMipvKjIq cCksbT0oYypjLW8qby00KmgpLygyKmMqMipwKSxnPU1hdGgubG9nKE1hdGguc3FydChkKmQr MSktZCksdj1NYXRoLmxvZyhNYXRoLnNxcnQobSptKzEpLW0pO249KHYtZykvT3Qscj1mdW5j dGlvbih0KXt2YXIgZSxyPXQqbixzPUl0KGcpLGw9by8oMipwKSoocyooZT1PdCpyK2csKChl PU1hdGguZXhwKDIqZSkpLTEpLyhlKzEpKS1mdW5jdGlvbih0KXtyZXR1cm4oKHQ9TWF0aC5l eHAodCkpLTEvdCkvMn0oZykpO3JldHVybltpK2wqdSxhK2wqZixvKnMvSXQoT3QqcitnKV19 fXJldHVybiByLmR1cmF0aW9uPTFlMypuLHJ9LHQuYmVoYXZpb3Iuem9vbT1mdW5jdGlvbigp e3ZhciBlLHIsbixhLHMsbCxjLHUsZixoPXt4OjAseTowLGs6MX0scD1bOTYwLDUwMF0sZD1S dCxtPTI1MCxnPTAsdj0ibW91c2Vkb3duLnpvb20iLHk9Im1vdXNlbW92ZS56b29tIix4PSJt b3VzZXVwLnpvb20iLGI9InRvdWNoc3RhcnQuem9vbSIsXz1OKHcsInpvb21zdGFydCIsInpv b20iLCJ6b29tZW5kIik7ZnVuY3Rpb24gdyh0KXt0Lm9uKHYsUCkub24oRHQrIi56b29tIixP KS5vbigiZGJsY2xpY2suem9vbSIseikub24oYixJKX1mdW5jdGlvbiBUKHQpe3JldHVyblso dFswXS1oLngpL2guaywodFsxXS1oLnkpL2gua119ZnVuY3Rpb24gayh0KXtoLms9TWF0aC5t YXgoZFswXSxNYXRoLm1pbihkWzFdLHQpKX1mdW5jdGlvbiBBKHQsZSl7ZT1mdW5jdGlvbih0 KXtyZXR1cm5bdFswXSpoLmsraC54LHRbMV0qaC5rK2gueV19KGUpLGgueCs9dFswXS1lWzBd LGgueSs9dFsxXS1lWzFdfWZ1bmN0aW9uIE0oZSxuLGksYSl7ZS5fX2NoYXJ0X189e3g6aC54 LHk6aC55LGs6aC5rfSxrKE1hdGgucG93KDIsYSkpLEEocj1uLGkpLGU9dC5zZWxlY3QoZSks bT4wJiYoZT1lLnRyYW5zaXRpb24oKS5kdXJhdGlvbihtKSksZS5jYWxsKHcuZXZlbnQpfWZ1 bmN0aW9uIFMoKXtjJiZjLmRvbWFpbihsLnJhbmdlKCkubWFwKChmdW5jdGlvbih0KXtyZXR1 cm4odC1oLngpL2gua30pKS5tYXAobC5pbnZlcnQpKSxmJiZmLmRvbWFpbih1LnJhbmdlKCku bWFwKChmdW5jdGlvbih0KXtyZXR1cm4odC1oLnkpL2gua30pKS5tYXAodS5pbnZlcnQpKX1m dW5jdGlvbiBFKHQpe2crK3x8dCh7dHlwZToiem9vbXN0YXJ0In0pfWZ1bmN0aW9uIEwodCl7 UygpLHQoe3R5cGU6Inpvb20iLHNjYWxlOmguayx0cmFuc2xhdGU6W2gueCxoLnldfSl9ZnVu Y3Rpb24gQyh0KXstLWd8fCh0KHt0eXBlOiJ6b29tZW5kIn0pLHI9bnVsbCl9ZnVuY3Rpb24g UCgpe3ZhciBlPXRoaXMscj1fLm9mKGUsYXJndW1lbnRzKSxuPTAsaT10LnNlbGVjdChvKGUp KS5vbih5LGwpLm9uKHgsYyksYT1UKHQubW91c2UoZSkpLHM9YnQoZSk7ZnVuY3Rpb24gbCgp e249MSxBKHQubW91c2UoZSksYSksTChyKX1mdW5jdGlvbiBjKCl7aS5vbih5LG51bGwpLm9u KHgsbnVsbCkscyhuKSxDKHIpfURpLmNhbGwoZSksRShyKX1mdW5jdGlvbiBJKCl7dmFyIGUs cj10aGlzLG49Xy5vZihyLGFyZ3VtZW50cyksaT17fSxhPTAsbz0iLnpvb20tIit0LmV2ZW50 LmNoYW5nZWRUb3VjaGVzWzBdLmlkZW50aWZpZXIsbD0idG91Y2htb3ZlIitvLGM9InRvdWNo ZW5kIitvLHU9W10sZj10LnNlbGVjdChyKSxwPWJ0KHIpO2Z1bmN0aW9uIGQoKXt2YXIgbj10 LnRvdWNoZXMocik7cmV0dXJuIGU9aC5rLG4uZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5pZGVu dGlmaWVyIGluIGkmJihpW3QuaWRlbnRpZmllcl09VCh0KSl9KSksbn1mdW5jdGlvbiBtKCl7 dmFyIGU9dC5ldmVudC50YXJnZXQ7dC5zZWxlY3QoZSkub24obCxnKS5vbihjLHkpLHUucHVz aChlKTtmb3IodmFyIG49dC5ldmVudC5jaGFuZ2VkVG91Y2hlcyxvPTAsZj1uLmxlbmd0aDtv PGY7KytvKWlbbltvXS5pZGVudGlmaWVyXT1udWxsO3ZhciBwPWQoKSxtPURhdGUubm93KCk7 aWYoMT09PXAubGVuZ3RoKXtpZihtLXM8NTAwKXt2YXIgdj1wWzBdO00ocix2LGlbdi5pZGVu dGlmaWVyXSxNYXRoLmZsb29yKE1hdGgubG9nKGguaykvTWF0aC5MTjIpKzEpLEYoKX1zPW19 ZWxzZSBpZihwLmxlbmd0aD4xKXt2PXBbMF07dmFyIHg9cFsxXSxiPXZbMF0teFswXSxfPXZb MV0teFsxXTthPWIqYitfKl99fWZ1bmN0aW9uIGcoKXt2YXIgbyxsLGMsdSxmPXQudG91Y2hl cyhyKTtEaS5jYWxsKHIpO2Zvcih2YXIgaD0wLHA9Zi5sZW5ndGg7aDxwOysraCx1PW51bGwp aWYoYz1mW2hdLHU9aVtjLmlkZW50aWZpZXJdKXtpZihsKWJyZWFrO289YyxsPXV9aWYodSl7 dmFyIGQ9KGQ9Y1swXS1vWzBdKSpkKyhkPWNbMV0tb1sxXSkqZCxtPWEmJk1hdGguc3FydChk L2EpO289WyhvWzBdK2NbMF0pLzIsKG9bMV0rY1sxXSkvMl0sbD1bKGxbMF0rdVswXSkvMiwo bFsxXSt1WzFdKS8yXSxrKG0qZSl9cz1udWxsLEEobyxsKSxMKG4pfWZ1bmN0aW9uIHkoKXtp Zih0LmV2ZW50LnRvdWNoZXMubGVuZ3RoKXtmb3IodmFyIGU9dC5ldmVudC5jaGFuZ2VkVG91 Y2hlcyxyPTAsYT1lLmxlbmd0aDtyPGE7KytyKWRlbGV0ZSBpW2Vbcl0uaWRlbnRpZmllcl07 Zm9yKHZhciBzIGluIGkpcmV0dXJuIHZvaWQgZCgpfXQuc2VsZWN0QWxsKHUpLm9uKG8sbnVs bCksZi5vbih2LFApLm9uKGIsSSkscCgpLEMobil9bSgpLEUobiksZi5vbih2LG51bGwpLm9u KGIsbSl9ZnVuY3Rpb24gTygpe3ZhciBpPV8ub2YodGhpcyxhcmd1bWVudHMpO2E/Y2xlYXJU aW1lb3V0KGEpOihEaS5jYWxsKHRoaXMpLGU9VChyPW58fHQubW91c2UodGhpcykpLEUoaSkp LGE9c2V0VGltZW91dCgoZnVuY3Rpb24oKXthPW51bGwsQyhpKX0pLDUwKSxGKCksayhNYXRo LnBvdygyLC4wMDIqenQoKSkqaC5rKSxBKHIsZSksTChpKX1mdW5jdGlvbiB6KCl7dmFyIGU9 dC5tb3VzZSh0aGlzKSxyPU1hdGgubG9nKGguaykvTWF0aC5MTjI7TSh0aGlzLGUsVChlKSx0 LmV2ZW50LnNoaWZ0S2V5P01hdGguY2VpbChyKS0xOk1hdGguZmxvb3IocikrMSl9cmV0dXJu IER0fHwoRHQ9Im9ud2hlZWwiaW4gaT8oenQ9ZnVuY3Rpb24oKXtyZXR1cm4tdC5ldmVudC5k ZWx0YVkqKHQuZXZlbnQuZGVsdGFNb2RlPzEyMDoxKX0sIndoZWVsIik6Im9ubW91c2V3aGVl bCJpbiBpPyh6dD1mdW5jdGlvbigpe3JldHVybiB0LmV2ZW50LndoZWVsRGVsdGF9LCJtb3Vz ZXdoZWVsIik6KHp0PWZ1bmN0aW9uKCl7cmV0dXJuLXQuZXZlbnQuZGV0YWlsfSwiTW96TW91 c2VQaXhlbFNjcm9sbCIpKSx3LmV2ZW50PWZ1bmN0aW9uKGUpe2UuZWFjaCgoZnVuY3Rpb24o KXt2YXIgZT1fLm9mKHRoaXMsYXJndW1lbnRzKSxuPWg7Qmk/dC5zZWxlY3QodGhpcykudHJh bnNpdGlvbigpLmVhY2goInN0YXJ0Lnpvb20iLChmdW5jdGlvbigpe2g9dGhpcy5fX2NoYXJ0 X198fHt4OjAseTowLGs6MX0sRShlKX0pKS50d2Vlbigiem9vbTp6b29tIiwoZnVuY3Rpb24o KXt2YXIgaT1wWzBdLGE9cFsxXSxvPXI/clswXTppLzIscz1yP3JbMV06YS8yLGw9dC5pbnRl cnBvbGF0ZVpvb20oWyhvLWgueCkvaC5rLChzLWgueSkvaC5rLGkvaC5rXSxbKG8tbi54KS9u LmssKHMtbi55KS9uLmssaS9uLmtdKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI9bCh0KSxu PWkvclsyXTt0aGlzLl9fY2hhcnRfXz1oPXt4Om8tclswXSpuLHk6cy1yWzFdKm4sazpufSxM KGUpfX0pKS5lYWNoKCJpbnRlcnJ1cHQuem9vbSIsKGZ1bmN0aW9uKCl7QyhlKX0pKS5lYWNo KCJlbmQuem9vbSIsKGZ1bmN0aW9uKCl7QyhlKX0pKToodGhpcy5fX2NoYXJ0X189aCxFKGUp LEwoZSksQyhlKSl9KSl9LHcudHJhbnNsYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVu dHMubGVuZ3RoPyhoPXt4Oit0WzBdLHk6K3RbMV0sazpoLmt9LFMoKSx3KTpbaC54LGgueV19 LHcuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9e3g6aC54 LHk6aC55LGs6bnVsbH0saygrdCksUygpLHcpOmgua30sdy5zY2FsZUV4dGVudD1mdW5jdGlv bih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD1udWxsPT10P1J0OlsrdFswXSwrdFsx XV0sdyk6ZH0sdy5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ KG49dCYmWyt0WzBdLCt0WzFdXSx3KTpufSx3LnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFy Z3VtZW50cy5sZW5ndGg/KHA9dCYmWyt0WzBdLCt0WzFdXSx3KTpwfSx3LmR1cmF0aW9uPWZ1 bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPSt0LHcpOm19LHcueD1mdW5j dGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz10LGw9dC5jb3B5KCksaD17eDow LHk6MCxrOjF9LHcpOmN9LHcueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0 aD8oZj10LHU9dC5jb3B5KCksaD17eDowLHk6MCxrOjF9LHcpOmZ9LHQucmViaW5kKHcsXywi b24iKX07dmFyIHp0LER0LFJ0PVswLDEvMF07ZnVuY3Rpb24gRnQoKXt9ZnVuY3Rpb24gQnQo dCxlLHIpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgQnQ/KHRoaXMuaD0rdCx0aGlzLnM9K2Us dm9pZCh0aGlzLmw9K3IpKTphcmd1bWVudHMubGVuZ3RoPDI/dCBpbnN0YW5jZW9mIEJ0P25l dyBCdCh0LmgsdC5zLHQubCk6bmUoIiIrdCxpZSxCdCk6bmV3IEJ0KHQsZSxyKX10LmNvbG9y PUZ0LEZ0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigp KyIifSx0LmhzbD1CdDt2YXIgTnQ9QnQucHJvdG90eXBlPW5ldyBGdDtmdW5jdGlvbiBqdCh0 LGUscil7dmFyIG4saTtmdW5jdGlvbiBhKHQpe3JldHVybiBNYXRoLnJvdW5kKDI1NSpmdW5j dGlvbih0KXtyZXR1cm4gdD4zNjA/dC09MzYwOnQ8MCYmKHQrPTM2MCksdDw2MD9uKyhpLW4p KnQvNjA6dDwxODA/aTp0PDI0MD9uKyhpLW4pKigyNDAtdCkvNjA6bn0odCkpfXJldHVybiB0 PWlzTmFOKHQpPzA6KHQlPTM2MCk8MD90KzM2MDp0LGU9aXNOYU4oZSl8fGU8MD8wOmU+MT8x OmUsbj0yKihyPXI8MD8wOnI+MT8xOnIpLShpPXI8PS41P3IqKDErZSk6citlLXIqZSksbmV3 IFF0KGEodCsxMjApLGEodCksYSh0LTEyMCkpfWZ1bmN0aW9uIFV0KGUscixuKXtyZXR1cm4g dGhpcyBpbnN0YW5jZW9mIFV0Pyh0aGlzLmg9K2UsdGhpcy5jPStyLHZvaWQodGhpcy5sPStu KSk6YXJndW1lbnRzLmxlbmd0aDwyP2UgaW5zdGFuY2VvZiBVdD9uZXcgVXQoZS5oLGUuYyxl LmwpOlh0KGUgaW5zdGFuY2VvZiBxdD9lLmw6KGU9YWUoKGU9dC5yZ2IoZSkpLnIsZS5nLGUu YikpLmwsZS5hLGUuYik6bmV3IFV0KGUscixuKX1OdC5icmlnaHRlcj1mdW5jdGlvbih0KXty ZXR1cm4gdD1NYXRoLnBvdyguNyxhcmd1bWVudHMubGVuZ3RoP3Q6MSksbmV3IEJ0KHRoaXMu aCx0aGlzLnMsdGhpcy5sL3QpfSxOdC5kYXJrZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9TWF0 aC5wb3coLjcsYXJndW1lbnRzLmxlbmd0aD90OjEpLG5ldyBCdCh0aGlzLmgsdGhpcy5zLHQq dGhpcy5sKX0sTnQucmdiPWZ1bmN0aW9uKCl7cmV0dXJuIGp0KHRoaXMuaCx0aGlzLnMsdGhp cy5sKX0sdC5oY2w9VXQ7dmFyIFZ0PVV0LnByb3RvdHlwZT1uZXcgRnQ7ZnVuY3Rpb24gSHQo dCxlLHIpe3JldHVybiBpc05hTih0KSYmKHQ9MCksaXNOYU4oZSkmJihlPTApLG5ldyBxdChy LE1hdGguY29zKHQqPUx0KSplLE1hdGguc2luKHQpKmUpfWZ1bmN0aW9uIHF0KHQsZSxyKXty ZXR1cm4gdGhpcyBpbnN0YW5jZW9mIHF0Pyh0aGlzLmw9K3QsdGhpcy5hPStlLHZvaWQodGhp cy5iPStyKSk6YXJndW1lbnRzLmxlbmd0aDwyP3QgaW5zdGFuY2VvZiBxdD9uZXcgcXQodC5s LHQuYSx0LmIpOnQgaW5zdGFuY2VvZiBVdD9IdCh0LmgsdC5jLHQubCk6YWUoKHQ9UXQodCkp LnIsdC5nLHQuYik6bmV3IHF0KHQsZSxyKX1WdC5icmlnaHRlcj1mdW5jdGlvbih0KXtyZXR1 cm4gbmV3IFV0KHRoaXMuaCx0aGlzLmMsTWF0aC5taW4oMTAwLHRoaXMubCtHdCooYXJndW1l bnRzLmxlbmd0aD90OjEpKSl9LFZ0LmRhcmtlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFV0 KHRoaXMuaCx0aGlzLmMsTWF0aC5tYXgoMCx0aGlzLmwtR3QqKGFyZ3VtZW50cy5sZW5ndGg/ dDoxKSkpfSxWdC5yZ2I9ZnVuY3Rpb24oKXtyZXR1cm4gSHQodGhpcy5oLHRoaXMuYyx0aGlz LmwpLnJnYigpfSx0LmxhYj1xdDt2YXIgR3Q9MTgsWXQ9cXQucHJvdG90eXBlPW5ldyBGdDtm dW5jdGlvbiBXdCh0LGUscil7dmFyIG49KHQrMTYpLzExNixpPW4rZS81MDAsYT1uLXIvMjAw O3JldHVybiBuZXcgUXQoS3QoMy4yNDA0NTQyKihpPS45NTA0NypadChpKSktMS41MzcxMzg1 KihuPTEqWnQobikpLS40OTg1MzE0KihhPTEuMDg4ODMqWnQoYSkpKSxLdCgtLjk2OTI2Nipp KzEuODc2MDEwOCpuKy4wNDE1NTYqYSksS3QoLjA1NTY0MzQqaS0uMjA0MDI1OSpuKzEuMDU3 MjI1MiphKSl9ZnVuY3Rpb24gWHQodCxlLHIpe3JldHVybiB0PjA/bmV3IFV0KE1hdGguYXRh bjIocixlKSpDdCxNYXRoLnNxcnQoZSplK3IqciksdCk6bmV3IFV0KE5hTixOYU4sdCl9ZnVu Y3Rpb24gWnQodCl7cmV0dXJuIHQ+LjIwNjg5MzAzND90KnQqdDoodC00LzI5KS83Ljc4NzAz N31mdW5jdGlvbiBKdCh0KXtyZXR1cm4gdD4uMDA4ODU2P01hdGgucG93KHQsMS8zKTo3Ljc4 NzAzNyp0KzQvMjl9ZnVuY3Rpb24gS3QodCl7cmV0dXJuIE1hdGgucm91bmQoMjU1Kih0PD0u MDAzMDQ/MTIuOTIqdDoxLjA1NSpNYXRoLnBvdyh0LDEvMi40KS0uMDU1KSl9ZnVuY3Rpb24g UXQodCxlLHIpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgUXQ/KHRoaXMucj1+fnQsdGhpcy5n PX5+ZSx2b2lkKHRoaXMuYj1+fnIpKTphcmd1bWVudHMubGVuZ3RoPDI/dCBpbnN0YW5jZW9m IFF0P25ldyBRdCh0LnIsdC5nLHQuYik6bmUoIiIrdCxRdCxqdCk6bmV3IFF0KHQsZSxyKX1m dW5jdGlvbiAkdCh0KXtyZXR1cm4gbmV3IFF0KHQ+PjE2LHQ+PjgmMjU1LDI1NSZ0KX1mdW5j dGlvbiB0ZSh0KXtyZXR1cm4gJHQodCkrIiJ9WXQuYnJpZ2h0ZXI9ZnVuY3Rpb24odCl7cmV0 dXJuIG5ldyBxdChNYXRoLm1pbigxMDAsdGhpcy5sK0d0Kihhcmd1bWVudHMubGVuZ3RoP3Q6 MSkpLHRoaXMuYSx0aGlzLmIpfSxZdC5kYXJrZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBx dChNYXRoLm1heCgwLHRoaXMubC1HdCooYXJndW1lbnRzLmxlbmd0aD90OjEpKSx0aGlzLmEs dGhpcy5iKX0sWXQucmdiPWZ1bmN0aW9uKCl7cmV0dXJuIFd0KHRoaXMubCx0aGlzLmEsdGhp cy5iKX0sdC5yZ2I9UXQ7dmFyIGVlPVF0LnByb3RvdHlwZT1uZXcgRnQ7ZnVuY3Rpb24gcmUo dCl7cmV0dXJuIHQ8MTY/IjAiK01hdGgubWF4KDAsdCkudG9TdHJpbmcoMTYpOk1hdGgubWlu KDI1NSx0KS50b1N0cmluZygxNil9ZnVuY3Rpb24gbmUodCxlLHIpe3ZhciBuLGksYSxvPTAs cz0wLGw9MDtpZihuPS8oW2Etel0rKVwoKC4qKVwpLy5leGVjKHQ9dC50b0xvd2VyQ2FzZSgp KSlzd2l0Y2goaT1uWzJdLnNwbGl0KCIsIiksblsxXSl7Y2FzZSJoc2wiOnJldHVybiByKHBh cnNlRmxvYXQoaVswXSkscGFyc2VGbG9hdChpWzFdKS8xMDAscGFyc2VGbG9hdChpWzJdKS8x MDApO2Nhc2UicmdiIjpyZXR1cm4gZShzZShpWzBdKSxzZShpWzFdKSxzZShpWzJdKSl9cmV0 dXJuKGE9bGUuZ2V0KHQpKT9lKGEucixhLmcsYS5iKToobnVsbD09dHx8IiMiIT09dC5jaGFy QXQoMCl8fGlzTmFOKGE9cGFyc2VJbnQodC5zbGljZSgxKSwxNikpfHwoND09PXQubGVuZ3Ro PyhvPSgzODQwJmEpPj40LG98PW8+PjQscz0yNDAmYSxzfD1zPj40LGw9MTUmYSxsfD1sPDw0 KTo3PT09dC5sZW5ndGgmJihvPSgxNjcxMTY4MCZhKT4+MTYscz0oNjUyODAmYSk+PjgsbD0y NTUmYSkpLGUobyxzLGwpKX1mdW5jdGlvbiBpZSh0LGUscil7dmFyIG4saSxhPU1hdGgubWlu KHQvPTI1NSxlLz0yNTUsci89MjU1KSxvPU1hdGgubWF4KHQsZSxyKSxzPW8tYSxsPShvK2Ep LzI7cmV0dXJuIHM/KGk9bDwuNT9zLyhvK2EpOnMvKDItby1hKSxuPXQ9PW8/KGUtcikvcyso ZTxyPzY6MCk6ZT09bz8oci10KS9zKzI6KHQtZSkvcys0LG4qPTYwKToobj1OYU4saT1sPjAm Jmw8MT8wOm4pLG5ldyBCdChuLGksbCl9ZnVuY3Rpb24gYWUodCxlLHIpe3ZhciBuPUp0KCgu NDEyNDU2NCoodD1vZSh0KSkrLjM1NzU3NjEqKGU9b2UoZSkpKy4xODA0Mzc1KihyPW9lKHIp KSkvLjk1MDQ3KSxpPUp0KCguMjEyNjcyOSp0Ky43MTUxNTIyKmUrLjA3MjE3NSpyKS8xKTty ZXR1cm4gcXQoMTE2KmktMTYsNTAwKihuLWkpLDIwMCooaS1KdCgoLjAxOTMzMzkqdCsuMTE5 MTkyKmUrLjk1MDMwNDEqcikvMS4wODg4MykpKX1mdW5jdGlvbiBvZSh0KXtyZXR1cm4odC89 MjU1KTw9LjA0MDQ1P3QvMTIuOTI6TWF0aC5wb3coKHQrLjA1NSkvMS4wNTUsMi40KX1mdW5j dGlvbiBzZSh0KXt2YXIgZT1wYXJzZUZsb2F0KHQpO3JldHVybiIlIj09PXQuY2hhckF0KHQu bGVuZ3RoLTEpP01hdGgucm91bmQoMi41NSplKTplfWVlLmJyaWdodGVyPWZ1bmN0aW9uKHQp e3Q9TWF0aC5wb3coLjcsYXJndW1lbnRzLmxlbmd0aD90OjEpO3ZhciBlPXRoaXMucixyPXRo aXMuZyxuPXRoaXMuYixpPTMwO3JldHVybiBlfHxyfHxuPyhlJiZlPGkmJihlPWkpLHImJnI8 aSYmKHI9aSksbiYmbjxpJiYobj1pKSxuZXcgUXQoTWF0aC5taW4oMjU1LGUvdCksTWF0aC5t aW4oMjU1LHIvdCksTWF0aC5taW4oMjU1LG4vdCkpKTpuZXcgUXQoaSxpLGkpfSxlZS5kYXJr ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBRdCgodD1NYXRoLnBvdyguNyxhcmd1bWVudHMu bGVuZ3RoP3Q6MSkpKnRoaXMucix0KnRoaXMuZyx0KnRoaXMuYil9LGVlLmhzbD1mdW5jdGlv bigpe3JldHVybiBpZSh0aGlzLnIsdGhpcy5nLHRoaXMuYil9LGVlLnRvU3RyaW5nPWZ1bmN0 aW9uKCl7cmV0dXJuIiMiK3JlKHRoaXMucikrcmUodGhpcy5nKStyZSh0aGlzLmIpfTt2YXIg bGU9dC5tYXAoe2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1 YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTky NjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1 ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5 NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEz Nzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6 MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJr Y3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRh cmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFy a21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3 NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjox NTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFy a3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNl OjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1 ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAw MzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3Jl ZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdo aXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQy MTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9u ZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5k aWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUx MzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNo aWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYs bGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0 Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxp Z2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIx NDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdo dHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93 OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAs bWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3Mzcz MjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5 NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAs bWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVt dmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEy MTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6 MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZl ZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlk OjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBh bGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlw OjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEw MzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJl YmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJv eWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNh bmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxz aWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJs dWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2 Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4 MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lz ZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIx NSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0 NTA3NH0pO2Z1bmN0aW9uIGNlKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZnVu Y3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gdWUodCl7cmV0dXJuIGZ1bmN0aW9uKGUscixu KXtyZXR1cm4gMj09PWFyZ3VtZW50cy5sZW5ndGgmJiJmdW5jdGlvbiI9PXR5cGVvZiByJiYo bj1yLHI9bnVsbCksZmUoZSxyLHQsbil9fWZ1bmN0aW9uIGZlKGUscixpLGEpe3ZhciBvPXt9 LHM9dC5kaXNwYXRjaCgiYmVmb3Jlc2VuZCIsInByb2dyZXNzIiwibG9hZCIsImVycm9yIiks bD17fSxjPW5ldyBYTUxIdHRwUmVxdWVzdCx1PW51bGw7ZnVuY3Rpb24gZigpe3ZhciB0LGU9 Yy5zdGF0dXM7aWYoIWUmJmZ1bmN0aW9uKHQpe3ZhciBlPXQucmVzcG9uc2VUeXBlO3JldHVy biBlJiYidGV4dCIhPT1lP3QucmVzcG9uc2U6dC5yZXNwb25zZVRleHR9KGMpfHxlPj0yMDAm JmU8MzAwfHwzMDQ9PT1lKXt0cnl7dD1pLmNhbGwobyxjKX1jYXRjaCh0KXtyZXR1cm4gdm9p ZCBzLmVycm9yLmNhbGwobyx0KX1zLmxvYWQuY2FsbChvLHQpfWVsc2Ugcy5lcnJvci5jYWxs KG8sYyl9cmV0dXJuIHNlbGYuWERvbWFpblJlcXVlc3QmJiEoIndpdGhDcmVkZW50aWFscyJp biBjKSYmL14oaHR0cChzKT86KT9cL1wvLy50ZXN0KGUpJiYoYz1uZXcgWERvbWFpblJlcXVl c3QpLCJvbmxvYWQiaW4gYz9jLm9ubG9hZD1jLm9uZXJyb3I9ZjpjLm9ucmVhZHlzdGF0ZWNo YW5nZT1mdW5jdGlvbigpe2MucmVhZHlTdGF0ZT4zJiZmKCl9LGMub25wcm9ncmVzcz1mdW5j dGlvbihlKXt2YXIgcj10LmV2ZW50O3QuZXZlbnQ9ZTt0cnl7cy5wcm9ncmVzcy5jYWxsKG8s Yyl9ZmluYWxseXt0LmV2ZW50PXJ9fSxvLmhlYWRlcj1mdW5jdGlvbih0LGUpe3JldHVybiB0 PSh0KyIiKS50b0xvd2VyQ2FzZSgpLGFyZ3VtZW50cy5sZW5ndGg8Mj9sW3RdOihudWxsPT1l P2RlbGV0ZSBsW3RdOmxbdF09ZSsiIixvKX0sby5taW1lVHlwZT1mdW5jdGlvbih0KXtyZXR1 cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1udWxsPT10P251bGw6dCsiIixvKTpyfSxvLnJlc3Bv bnNlVHlwZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT10LG8pOnV9 LG8ucmVzcG9uc2U9ZnVuY3Rpb24odCl7cmV0dXJuIGk9dCxvfSxbImdldCIsInBvc3QiXS5m b3JFYWNoKChmdW5jdGlvbih0KXtvW3RdPWZ1bmN0aW9uKCl7cmV0dXJuIG8uc2VuZC5hcHBs eShvLFt0XS5jb25jYXQobihhcmd1bWVudHMpKSl9fSkpLG8uc2VuZD1mdW5jdGlvbih0LG4s aSl7aWYoMj09PWFyZ3VtZW50cy5sZW5ndGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBuJiYoaT1u LG49bnVsbCksYy5vcGVuKHQsZSwhMCksbnVsbD09cnx8ImFjY2VwdCJpbiBsfHwobC5hY2Nl cHQ9cisiLCovKiIpLGMuc2V0UmVxdWVzdEhlYWRlcilmb3IodmFyIGEgaW4gbCljLnNldFJl cXVlc3RIZWFkZXIoYSxsW2FdKTtyZXR1cm4gbnVsbCE9ciYmYy5vdmVycmlkZU1pbWVUeXBl JiZjLm92ZXJyaWRlTWltZVR5cGUociksbnVsbCE9dSYmKGMucmVzcG9uc2VUeXBlPXUpLG51 bGwhPWkmJm8ub24oImVycm9yIixpKS5vbigibG9hZCIsKGZ1bmN0aW9uKHQpe2kobnVsbCx0 KX0pKSxzLmJlZm9yZXNlbmQuY2FsbChvLGMpLGMuc2VuZChudWxsPT1uP251bGw6biksb30s by5hYm9ydD1mdW5jdGlvbigpe3JldHVybiBjLmFib3J0KCksb30sdC5yZWJpbmQobyxzLCJv biIpLG51bGw9PWE/bzpvLmdldChmdW5jdGlvbih0KXtyZXR1cm4gMT09PXQubGVuZ3RoP2Z1 bmN0aW9uKGUscil7dChudWxsPT1lP3I6bnVsbCl9OnR9KGEpKX1sZS5mb3JFYWNoKChmdW5j dGlvbih0LGUpe2xlLnNldCh0LCR0KGUpKX0pKSx0LmZ1bmN0b3I9Y2UsdC54aHI9dWUoQyks dC5kc3Y9ZnVuY3Rpb24odCxlKXt2YXIgcj1uZXcgUmVnRXhwKCdbIicrdCsiXG5dIiksbj10 LmNoYXJDb2RlQXQoMCk7ZnVuY3Rpb24gaSh0LHIsbil7YXJndW1lbnRzLmxlbmd0aDwzJiYo bj1yLHI9bnVsbCk7dmFyIGk9ZmUodCxlLG51bGw9PXI/YTpvKHIpLG4pO3JldHVybiBpLnJv dz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9pLnJlc3BvbnNlKG51bGw9 PShyPXQpP2E6byh0KSk6cn0saX1mdW5jdGlvbiBhKHQpe3JldHVybiBpLnBhcnNlKHQucmVz cG9uc2VUZXh0KX1mdW5jdGlvbiBvKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gaS5w YXJzZShlLnJlc3BvbnNlVGV4dCx0KX19ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZS5tYXAobCku am9pbih0KX1mdW5jdGlvbiBsKHQpe3JldHVybiByLnRlc3QodCk/JyInK3QucmVwbGFjZSgv XCIvZywnIiInKSsnIic6dH1yZXR1cm4gaS5wYXJzZT1mdW5jdGlvbih0LGUpe3ZhciByO3Jl dHVybiBpLnBhcnNlUm93cyh0LChmdW5jdGlvbih0LG4pe2lmKHIpcmV0dXJuIHIodCxuLTEp O3ZhciBpPWZ1bmN0aW9uKGUpe2Zvcih2YXIgcj17fSxuPXQubGVuZ3RoLGk9MDtpPG47Kytp KXJbdFtpXV09ZVtpXTtyZXR1cm4gcn07cj1lP2Z1bmN0aW9uKHQscil7cmV0dXJuIGUoaSh0 KSxyKX06aX0pKX0saS5wYXJzZVJvd3M9ZnVuY3Rpb24odCxlKXt2YXIgcixpLGE9e30sbz17 fSxzPVtdLGw9dC5sZW5ndGgsYz0wLHU9MDtmdW5jdGlvbiBmKCl7aWYoYz49bClyZXR1cm4g bztpZihpKXJldHVybiBpPSExLGE7dmFyIGU9YztpZigzND09PXQuY2hhckNvZGVBdChlKSl7 Zm9yKHZhciByPWU7cisrPGw7KWlmKDM0PT09dC5jaGFyQ29kZUF0KHIpKXtpZigzNCE9PXQu Y2hhckNvZGVBdChyKzEpKWJyZWFrOysrcn1yZXR1cm4gYz1yKzIsMTM9PT0ocz10LmNoYXJD b2RlQXQocisxKSk/KGk9ITAsMTA9PT10LmNoYXJDb2RlQXQocisyKSYmKytjKToxMD09PXMm JihpPSEwKSx0LnNsaWNlKGUrMSxyKS5yZXBsYWNlKC8iIi9nLCciJyl9Zm9yKDtjPGw7KXt2 YXIgcyx1PTE7aWYoMTA9PT0ocz10LmNoYXJDb2RlQXQoYysrKSkpaT0hMDtlbHNlIGlmKDEz PT09cylpPSEwLDEwPT09dC5jaGFyQ29kZUF0KGMpJiYoKytjLCsrdSk7ZWxzZSBpZihzIT09 biljb250aW51ZTtyZXR1cm4gdC5zbGljZShlLGMtdSl9cmV0dXJuIHQuc2xpY2UoZSl9Zm9y KDsocj1mKCkpIT09bzspe2Zvcih2YXIgaD1bXTtyIT09YSYmciE9PW87KWgucHVzaChyKSxy PWYoKTtlJiZudWxsPT0oaD1lKGgsdSsrKSl8fHMucHVzaChoKX1yZXR1cm4gc30saS5mb3Jt YXQ9ZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlWzBdKSlyZXR1cm4gaS5mb3JtYXRS b3dzKGUpO3ZhciByPW5ldyBMLG49W107cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24odCl7 Zm9yKHZhciBlIGluIHQpci5oYXMoZSl8fG4ucHVzaChyLmFkZChlKSl9KSksW24ubWFwKGwp LmpvaW4odCldLmNvbmNhdChlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG4ubWFwKChmdW5j dGlvbih0KXtyZXR1cm4gbChlW3RdKX0pKS5qb2luKHQpfSkpKS5qb2luKCJcbiIpfSxpLmZv cm1hdFJvd3M9ZnVuY3Rpb24odCl7cmV0dXJuIHQubWFwKHMpLmpvaW4oIlxuIil9LGl9LHQu Y3N2PXQuZHN2KCIsIiwidGV4dC9jc3YiKSx0LnRzdj10LmRzdigiXHQiLCJ0ZXh0L3RhYi1z ZXBhcmF0ZWQtdmFsdWVzIik7dmFyIGhlLHBlLGRlLG1lLGdlPXRoaXNbSSh0aGlzLCJyZXF1 ZXN0QW5pbWF0aW9uRnJhbWUiKV18fGZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1 bmN0aW9uIHZlKHQsZSxyKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoO248MiYmKGU9MCksbjwz JiYocj1EYXRlLm5vdygpKTt2YXIgaT1yK2UsYT17Yzp0LHQ6aSxuOm51bGx9O3JldHVybiBw ZT9wZS5uPWE6aGU9YSxwZT1hLGRlfHwobWU9Y2xlYXJUaW1lb3V0KG1lKSxkZT0xLGdlKHll KSksYX1mdW5jdGlvbiB5ZSgpe3ZhciB0PXhlKCksZT1iZSgpLXQ7ZT4yND8oaXNGaW5pdGUo ZSkmJihjbGVhclRpbWVvdXQobWUpLG1lPXNldFRpbWVvdXQoeWUsZSkpLGRlPTApOihkZT0x LGdlKHllKSl9ZnVuY3Rpb24geGUoKXtmb3IodmFyIHQ9RGF0ZS5ub3coKSxlPWhlO2U7KXQ+ PWUudCYmZS5jKHQtZS50KSYmKGUuYz1udWxsKSxlPWUubjtyZXR1cm4gdH1mdW5jdGlvbiBi ZSgpe2Zvcih2YXIgdCxlPWhlLHI9MS8wO2U7KWUuYz8oZS50PHImJihyPWUudCksZT0odD1l KS5uKTplPXQ/dC5uPWUubjpoZT1lLm47cmV0dXJuIHBlPXQscn1mdW5jdGlvbiBfZSh0KXty ZXR1cm4gdFswXX1mdW5jdGlvbiB3ZSh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBUZSh0KXtm b3IodmFyIGUscixuLGk9dC5sZW5ndGgsYT1bMCwxXSxvPTIscz0yO3M8aTtzKyspe2Zvcig7 bz4xJiYoZT10W2Fbby0yXV0scj10W2Fbby0xXV0sbj10W3NdLChyWzBdLWVbMF0pKihuWzFd LWVbMV0pLShyWzFdLWVbMV0pKihuWzBdLWVbMF0pPD0wKTspLS1vO2FbbysrXT1zfXJldHVy biBhLnNsaWNlKDAsbyl9ZnVuY3Rpb24ga2UodCxlKXtyZXR1cm4gdFswXS1lWzBdfHx0WzFd LWVbMV19dC50aW1lcj1mdW5jdGlvbigpe3ZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdC50 aW1lci5mbHVzaD1mdW5jdGlvbigpe3hlKCksYmUoKX0sdC5yb3VuZD1mdW5jdGlvbih0LGUp e3JldHVybiBlP01hdGgucm91bmQodCooZT1NYXRoLnBvdygxMCxlKSkpL2U6TWF0aC5yb3Vu ZCh0KX0sdC5nZW9tPXt9LHQuZ2VvbS5odWxsPWZ1bmN0aW9uKHQpe3ZhciBlPV9lLHI9d2U7 aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gbih0KTtmdW5jdGlvbiBuKHQpe2lmKHQubGVu Z3RoPDMpcmV0dXJuW107dmFyIG4saT1jZShlKSxhPWNlKHIpLG89dC5sZW5ndGgscz1bXSxs PVtdO2ZvcihuPTA7bjxvO24rKylzLnB1c2goWytpLmNhbGwodGhpcyx0W25dLG4pLCthLmNh bGwodGhpcyx0W25dLG4pLG5dKTtmb3Iocy5zb3J0KGtlKSxuPTA7bjxvO24rKylsLnB1c2go W3Nbbl1bMF0sLXNbbl1bMV1dKTt2YXIgYz1UZShzKSx1PVRlKGwpLGY9dVswXT09PWNbMF0s aD11W3UubGVuZ3RoLTFdPT09Y1tjLmxlbmd0aC0xXSxwPVtdO2ZvcihuPWMubGVuZ3RoLTE7 bj49MDstLW4pcC5wdXNoKHRbc1tjW25dXVsyXV0pO2ZvcihuPStmO248dS5sZW5ndGgtaDsr K24pcC5wdXNoKHRbc1t1W25dXVsyXV0pO3JldHVybiBwfXJldHVybiBuLng9ZnVuY3Rpb24o dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuKTplfSxuLnk9ZnVuY3Rpb24odCl7 cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxuKTpyfSxufSx0Lmdlb20ucG9seWdvbj1m dW5jdGlvbih0KXtyZXR1cm4gVSh0LEFlKSx0fTt2YXIgQWU9dC5nZW9tLnBvbHlnb24ucHJv dG90eXBlPVtdO2Z1bmN0aW9uIE1lKHQsZSxyKXtyZXR1cm4oclswXS1lWzBdKSoodFsxXS1l WzFdKTwoclsxXS1lWzFdKSoodFswXS1lWzBdKX1mdW5jdGlvbiBTZSh0LGUscixuKXt2YXIg aT10WzBdLGE9clswXSxvPWVbMF0taSxzPW5bMF0tYSxsPXRbMV0sYz1yWzFdLHU9ZVsxXS1s LGY9blsxXS1jLGg9KHMqKGwtYyktZiooaS1hKSkvKGYqby1zKnUpO3JldHVybltpK2gqbyxs K2gqdV19ZnVuY3Rpb24gRWUodCl7dmFyIGU9dFswXSxyPXRbdC5sZW5ndGgtMV07cmV0dXJu IShlWzBdLXJbMF18fGVbMV0tclsxXSl9QWUuYXJlYT1mdW5jdGlvbigpe2Zvcih2YXIgdCxl PS0xLHI9dGhpcy5sZW5ndGgsbj10aGlzW3ItMV0saT0wOysrZTxyOyl0PW4sbj10aGlzW2Vd LGkrPXRbMV0qblswXS10WzBdKm5bMV07cmV0dXJuLjUqaX0sQWUuY2VudHJvaWQ9ZnVuY3Rp b24odCl7dmFyIGUscixuPS0xLGk9dGhpcy5sZW5ndGgsYT0wLG89MCxzPXRoaXNbaS0xXTtm b3IoYXJndW1lbnRzLmxlbmd0aHx8KHQ9LTEvKDYqdGhpcy5hcmVhKCkpKTsrK248aTspZT1z LHM9dGhpc1tuXSxyPWVbMF0qc1sxXS1zWzBdKmVbMV0sYSs9KGVbMF0rc1swXSkqcixvKz0o ZVsxXStzWzFdKSpyO3JldHVyblthKnQsbyp0XX0sQWUuY2xpcD1mdW5jdGlvbih0KXtmb3Io dmFyIGUscixuLGksYSxvLHM9RWUodCksbD0tMSxjPXRoaXMubGVuZ3RoLUVlKHRoaXMpLHU9 dGhpc1tjLTFdOysrbDxjOyl7Zm9yKGU9dC5zbGljZSgpLHQubGVuZ3RoPTAsaT10aGlzW2xd LGE9ZVsobj1lLmxlbmd0aC1zKS0xXSxyPS0xOysrcjxuOylNZShvPWVbcl0sdSxpKT8oTWUo YSx1LGkpfHx0LnB1c2goU2UoYSxvLHUsaSkpLHQucHVzaChvKSk6TWUoYSx1LGkpJiZ0LnB1 c2goU2UoYSxvLHUsaSkpLGE9bztzJiZ0LnB1c2godFswXSksdT1pfXJldHVybiB0fTt2YXIg TGUsQ2UsUGUsSWUsT2UsemU9W10sRGU9W107ZnVuY3Rpb24gUmUoKXtlcih0aGlzKSx0aGlz LmVkZ2U9dGhpcy5zaXRlPXRoaXMuY2lyY2xlPW51bGx9ZnVuY3Rpb24gRmUodCl7dmFyIGU9 emUucG9wKCl8fG5ldyBSZTtyZXR1cm4gZS5zaXRlPXQsZX1mdW5jdGlvbiBCZSh0KXtXZSh0 KSxQZS5yZW1vdmUodCksemUucHVzaCh0KSxlcih0KX1mdW5jdGlvbiBOZSh0KXt2YXIgZT10 LmNpcmNsZSxyPWUueCxuPWUuY3ksaT17eDpyLHk6bn0sYT10LlAsbz10Lk4scz1bdF07QmUo dCk7Zm9yKHZhciBsPWE7bC5jaXJjbGUmJnkoci1sLmNpcmNsZS54KTxrdCYmeShuLWwuY2ly Y2xlLmN5KTxrdDspYT1sLlAscy51bnNoaWZ0KGwpLEJlKGwpLGw9YTtzLnVuc2hpZnQobCks V2UobCk7Zm9yKHZhciBjPW87Yy5jaXJjbGUmJnkoci1jLmNpcmNsZS54KTxrdCYmeShuLWMu Y2lyY2xlLmN5KTxrdDspbz1jLk4scy5wdXNoKGMpLEJlKGMpLGM9bztzLnB1c2goYyksV2Uo Yyk7dmFyIHUsZj1zLmxlbmd0aDtmb3IodT0xO3U8ZjsrK3UpYz1zW3VdLGw9c1t1LTFdLFFl KGMuZWRnZSxsLnNpdGUsYy5zaXRlLGkpO2w9c1swXSwoYz1zW2YtMV0pLmVkZ2U9SmUobC5z aXRlLGMuc2l0ZSxudWxsLGkpLFllKGwpLFllKGMpfWZ1bmN0aW9uIGplKHQpe2Zvcih2YXIg ZSxyLG4saSxhPXQueCxvPXQueSxzPVBlLl87czspaWYoKG49VWUocyxvKS1hKT5rdClzPXMu TDtlbHNle2lmKCEoKGk9YS1WZShzLG8pKT5rdCkpe24+LWt0PyhlPXMuUCxyPXMpOmk+LWt0 PyhlPXMscj1zLk4pOmU9cj1zO2JyZWFrfWlmKCFzLlIpe2U9czticmVha31zPXMuUn12YXIg bD1GZSh0KTtpZihQZS5pbnNlcnQoZSxsKSxlfHxyKXtpZihlPT09cilyZXR1cm4gV2UoZSks cj1GZShlLnNpdGUpLFBlLmluc2VydChsLHIpLGwuZWRnZT1yLmVkZ2U9SmUoZS5zaXRlLGwu c2l0ZSksWWUoZSksdm9pZCBZZShyKTtpZihyKXtXZShlKSxXZShyKTt2YXIgYz1lLnNpdGUs dT1jLngsZj1jLnksaD10LngtdSxwPXQueS1mLGQ9ci5zaXRlLG09ZC54LXUsZz1kLnktZix2 PTIqKGgqZy1wKm0pLHk9aCpoK3AqcCx4PW0qbStnKmcsYj17eDooZyp5LXAqeCkvdit1LHk6 KGgqeC1tKnkpL3YrZn07UWUoci5lZGdlLGMsZCxiKSxsLmVkZ2U9SmUoYyx0LG51bGwsYiks ci5lZGdlPUplKHQsZCxudWxsLGIpLFllKGUpLFllKHIpfWVsc2UgbC5lZGdlPUplKGUuc2l0 ZSxsLnNpdGUpfX1mdW5jdGlvbiBVZSh0LGUpe3ZhciByPXQuc2l0ZSxuPXIueCxpPXIueSxh PWktZTtpZighYSlyZXR1cm4gbjt2YXIgbz10LlA7aWYoIW8pcmV0dXJuLTEvMDt2YXIgcz0o cj1vLnNpdGUpLngsbD1yLnksYz1sLWU7aWYoIWMpcmV0dXJuIHM7dmFyIHU9cy1uLGY9MS9h LTEvYyxoPXUvYztyZXR1cm4gZj8oLWgrTWF0aC5zcXJ0KGgqaC0yKmYqKHUqdS8oLTIqYykt bCtjLzIraS1hLzIpKSkvZituOihuK3MpLzJ9ZnVuY3Rpb24gVmUodCxlKXt2YXIgcj10Lk47 aWYocilyZXR1cm4gVWUocixlKTt2YXIgbj10LnNpdGU7cmV0dXJuIG4ueT09PWU/bi54OjEv MH1mdW5jdGlvbiBIZSh0KXt0aGlzLnNpdGU9dCx0aGlzLmVkZ2VzPVtdfWZ1bmN0aW9uIHFl KHQsZSl7cmV0dXJuIGUuYW5nbGUtdC5hbmdsZX1mdW5jdGlvbiBHZSgpe2VyKHRoaXMpLHRo aXMueD10aGlzLnk9dGhpcy5hcmM9dGhpcy5zaXRlPXRoaXMuY3k9bnVsbH1mdW5jdGlvbiBZ ZSh0KXt2YXIgZT10LlAscj10Lk47aWYoZSYmcil7dmFyIG49ZS5zaXRlLGk9dC5zaXRlLGE9 ci5zaXRlO2lmKG4hPT1hKXt2YXIgbz1pLngscz1pLnksbD1uLngtbyxjPW4ueS1zLHU9YS54 LW8sZj0yKihsKihnPWEueS1zKS1jKnUpO2lmKCEoZj49LTFlLTEyKSl7dmFyIGg9bCpsK2Mq YyxwPXUqdStnKmcsZD0oZypoLWMqcCkvZixtPShsKnAtdSpoKS9mLGc9bStzLHY9RGUucG9w KCl8fG5ldyBHZTt2LmFyYz10LHYuc2l0ZT1pLHYueD1kK28sdi55PWcrTWF0aC5zcXJ0KGQq ZCttKm0pLHYuY3k9Zyx0LmNpcmNsZT12O2Zvcih2YXIgeT1udWxsLHg9T2UuXzt4OylpZih2 Lnk8eC55fHx2Lnk9PT14LnkmJnYueDw9eC54KXtpZigheC5MKXt5PXguUDticmVha314PXgu TH1lbHNle2lmKCF4LlIpe3k9eDticmVha314PXguUn1PZS5pbnNlcnQoeSx2KSx5fHwoSWU9 dil9fX19ZnVuY3Rpb24gV2UodCl7dmFyIGU9dC5jaXJjbGU7ZSYmKGUuUHx8KEllPWUuTiks T2UucmVtb3ZlKGUpLERlLnB1c2goZSksZXIoZSksdC5jaXJjbGU9bnVsbCl9ZnVuY3Rpb24g WGUodCxlKXt2YXIgcj10LmI7aWYocilyZXR1cm4hMDt2YXIgbixpLGE9dC5hLG89ZVswXVsw XSxzPWVbMV1bMF0sbD1lWzBdWzFdLGM9ZVsxXVsxXSx1PXQubCxmPXQucixoPXUueCxwPXUu eSxkPWYueCxtPWYueSxnPShoK2QpLzIsdj0ocCttKS8yO2lmKG09PT1wKXtpZihnPG98fGc+ PXMpcmV0dXJuO2lmKGg+ZCl7aWYoYSl7aWYoYS55Pj1jKXJldHVybn1lbHNlIGE9e3g6Zyx5 Omx9O3I9e3g6Zyx5OmN9fWVsc2V7aWYoYSl7aWYoYS55PGwpcmV0dXJufWVsc2UgYT17eDpn LHk6Y307cj17eDpnLHk6bH19fWVsc2UgaWYoaT12LShuPShoLWQpLyhtLXApKSpnLG48LTF8 fG4+MSlpZihoPmQpe2lmKGEpe2lmKGEueT49YylyZXR1cm59ZWxzZSBhPXt4OihsLWkpL24s eTpsfTtyPXt4OihjLWkpL24seTpjfX1lbHNle2lmKGEpe2lmKGEueTxsKXJldHVybn1lbHNl IGE9e3g6KGMtaSkvbix5OmN9O3I9e3g6KGwtaSkvbix5Omx9fWVsc2UgaWYocDxtKXtpZihh KXtpZihhLng+PXMpcmV0dXJufWVsc2UgYT17eDpvLHk6bipvK2l9O3I9e3g6cyx5Om4qcytp fX1lbHNle2lmKGEpe2lmKGEueDxvKXJldHVybn1lbHNlIGE9e3g6cyx5Om4qcytpfTtyPXt4 Om8seTpuKm8raX19cmV0dXJuIHQuYT1hLHQuYj1yLCEwfWZ1bmN0aW9uIFplKHQsZSl7dGhp cy5sPXQsdGhpcy5yPWUsdGhpcy5hPXRoaXMuYj1udWxsfWZ1bmN0aW9uIEplKHQsZSxyLG4p e3ZhciBpPW5ldyBaZSh0LGUpO3JldHVybiBMZS5wdXNoKGkpLHImJlFlKGksdCxlLHIpLG4m JlFlKGksZSx0LG4pLENlW3QuaV0uZWRnZXMucHVzaChuZXcgJGUoaSx0LGUpKSxDZVtlLmld LmVkZ2VzLnB1c2gobmV3ICRlKGksZSx0KSksaX1mdW5jdGlvbiBLZSh0LGUscil7dmFyIG49 bmV3IFplKHQsbnVsbCk7cmV0dXJuIG4uYT1lLG4uYj1yLExlLnB1c2gobiksbn1mdW5jdGlv biBRZSh0LGUscixuKXt0LmF8fHQuYj90Lmw9PT1yP3QuYj1uOnQuYT1uOih0LmE9bix0Lmw9 ZSx0LnI9cil9ZnVuY3Rpb24gJGUodCxlLHIpe3ZhciBuPXQuYSxpPXQuYjt0aGlzLmVkZ2U9 dCx0aGlzLnNpdGU9ZSx0aGlzLmFuZ2xlPXI/TWF0aC5hdGFuMihyLnktZS55LHIueC1lLngp OnQubD09PWU/TWF0aC5hdGFuMihpLngtbi54LG4ueS1pLnkpOk1hdGguYXRhbjIobi54LWku eCxpLnktbi55KX1mdW5jdGlvbiB0cigpe3RoaXMuXz1udWxsfWZ1bmN0aW9uIGVyKHQpe3Qu VT10LkM9dC5MPXQuUj10LlA9dC5OPW51bGx9ZnVuY3Rpb24gcnIodCxlKXt2YXIgcj1lLG49 ZS5SLGk9ci5VO2k/aS5MPT09cj9pLkw9bjppLlI9bjp0Ll89bixuLlU9aSxyLlU9bixyLlI9 bi5MLHIuUiYmKHIuUi5VPXIpLG4uTD1yfWZ1bmN0aW9uIG5yKHQsZSl7dmFyIHI9ZSxuPWUu TCxpPXIuVTtpP2kuTD09PXI/aS5MPW46aS5SPW46dC5fPW4sbi5VPWksci5VPW4sci5MPW4u UixyLkwmJihyLkwuVT1yKSxuLlI9cn1mdW5jdGlvbiBpcih0KXtmb3IoO3QuTDspdD10Lkw7 cmV0dXJuIHR9ZnVuY3Rpb24gYXIodCxlKXt2YXIgcixuLGksYT10LnNvcnQob3IpLnBvcCgp O2ZvcihMZT1bXSxDZT1uZXcgQXJyYXkodC5sZW5ndGgpLFBlPW5ldyB0cixPZT1uZXcgdHI7 OylpZihpPUllLGEmJighaXx8YS55PGkueXx8YS55PT09aS55JiZhLng8aS54KSlhLng9PT1y JiZhLnk9PT1ufHwoQ2VbYS5pXT1uZXcgSGUoYSksamUoYSkscj1hLngsbj1hLnkpLGE9dC5w b3AoKTtlbHNle2lmKCFpKWJyZWFrO05lKGkuYXJjKX1lJiYoZnVuY3Rpb24odCl7Zm9yKHZh ciBlLHIsbixpLGEsbz1MZSxzPShyPXRbMF1bMF0sbj10WzBdWzFdLGk9dFsxXVswXSxhPXRb MV1bMV0sZnVuY3Rpb24odCl7dmFyIGUsbz10LmEscz10LmIsbD1vLngsYz1vLnksdT0wLGY9 MSxoPXMueC1sLHA9cy55LWM7aWYoZT1yLWwsaHx8IShlPjApKXtpZihlLz1oLGg8MCl7aWYo ZTx1KXJldHVybjtlPGYmJihmPWUpfWVsc2UgaWYoaD4wKXtpZihlPmYpcmV0dXJuO2U+dSYm KHU9ZSl9aWYoZT1pLWwsaHx8IShlPDApKXtpZihlLz1oLGg8MCl7aWYoZT5mKXJldHVybjtl PnUmJih1PWUpfWVsc2UgaWYoaD4wKXtpZihlPHUpcmV0dXJuO2U8ZiYmKGY9ZSl9aWYoZT1u LWMscHx8IShlPjApKXtpZihlLz1wLHA8MCl7aWYoZTx1KXJldHVybjtlPGYmJihmPWUpfWVs c2UgaWYocD4wKXtpZihlPmYpcmV0dXJuO2U+dSYmKHU9ZSl9aWYoZT1hLWMscHx8IShlPDAp KXtpZihlLz1wLHA8MCl7aWYoZT5mKXJldHVybjtlPnUmJih1PWUpfWVsc2UgaWYocD4wKXtp ZihlPHUpcmV0dXJuO2U8ZiYmKGY9ZSl9cmV0dXJuIHU+MCYmKHQuYT17eDpsK3UqaCx5OmMr dSpwfSksZjwxJiYodC5iPXt4OmwrZipoLHk6YytmKnB9KSx0fX19fX0pLGw9by5sZW5ndGg7 bC0tOykoIVhlKGU9b1tsXSx0KXx8IXMoZSl8fHkoZS5hLngtZS5iLngpPGt0JiZ5KGUuYS55 LWUuYi55KTxrdCkmJihlLmE9ZS5iPW51bGwsby5zcGxpY2UobCwxKSl9KGUpLGZ1bmN0aW9u KHQpe2Zvcih2YXIgZSxyLG4saSxhLG8scyxsLGMsdSxmPXRbMF1bMF0saD10WzFdWzBdLHA9 dFswXVsxXSxkPXRbMV1bMV0sbT1DZSxnPW0ubGVuZ3RoO2ctLTspaWYoKGE9bVtnXSkmJmEu cHJlcGFyZSgpKWZvcihsPShzPWEuZWRnZXMpLmxlbmd0aCxvPTA7bzxsOyluPSh1PXNbb10u ZW5kKCkpLngsaT11LnksZT0oYz1zWysrbyVsXS5zdGFydCgpKS54LHI9Yy55LCh5KG4tZSk+ a3R8fHkoaS1yKT5rdCkmJihzLnNwbGljZShvLDAsbmV3ICRlKEtlKGEuc2l0ZSx1LHkobi1m KTxrdCYmZC1pPmt0P3t4OmYseTp5KGUtZik8a3Q/cjpkfTp5KGktZCk8a3QmJmgtbj5rdD97 eDp5KHItZCk8a3Q/ZTpoLHk6ZH06eShuLWgpPGt0JiZpLXA+a3Q/e3g6aCx5OnkoZS1oKTxr dD9yOnB9OnkoaS1wKTxrdCYmbi1mPmt0P3t4Onkoci1wKTxrdD9lOmYseTpwfTpudWxsKSxh LnNpdGUsbnVsbCkpLCsrbCl9KGUpKTt2YXIgbz17Y2VsbHM6Q2UsZWRnZXM6TGV9O3JldHVy biBQZT1PZT1MZT1DZT1udWxsLG99ZnVuY3Rpb24gb3IodCxlKXtyZXR1cm4gZS55LXQueXx8 ZS54LXQueH1IZS5wcm90b3R5cGUucHJlcGFyZT1mdW5jdGlvbigpe2Zvcih2YXIgdCxlPXRo aXMuZWRnZXMscj1lLmxlbmd0aDtyLS07KSh0PWVbcl0uZWRnZSkuYiYmdC5hfHxlLnNwbGlj ZShyLDEpO3JldHVybiBlLnNvcnQocWUpLGUubGVuZ3RofSwkZS5wcm90b3R5cGU9e3N0YXJ0 OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRnZS5sPT09dGhpcy5zaXRlP3RoaXMuZWRnZS5h OnRoaXMuZWRnZS5ifSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGdlLmw9PT10aGlz LnNpdGU/dGhpcy5lZGdlLmI6dGhpcy5lZGdlLmF9fSx0ci5wcm90b3R5cGU9e2luc2VydDpm dW5jdGlvbih0LGUpe3ZhciByLG4saTtpZih0KXtpZihlLlA9dCxlLk49dC5OLHQuTiYmKHQu Ti5QPWUpLHQuTj1lLHQuUil7Zm9yKHQ9dC5SO3QuTDspdD10Lkw7dC5MPWV9ZWxzZSB0LlI9 ZTtyPXR9ZWxzZSB0aGlzLl8/KHQ9aXIodGhpcy5fKSxlLlA9bnVsbCxlLk49dCx0LlA9dC5M PWUscj10KTooZS5QPWUuTj1udWxsLHRoaXMuXz1lLHI9bnVsbCk7Zm9yKGUuTD1lLlI9bnVs bCxlLlU9cixlLkM9ITAsdD1lO3ImJnIuQzspcj09PShuPXIuVSkuTD8oaT1uLlIpJiZpLkM/ KHIuQz1pLkM9ITEsbi5DPSEwLHQ9bik6KHQ9PT1yLlImJihycih0aGlzLHIpLHI9KHQ9ciku VSksci5DPSExLG4uQz0hMCxucih0aGlzLG4pKTooaT1uLkwpJiZpLkM/KHIuQz1pLkM9ITEs bi5DPSEwLHQ9bik6KHQ9PT1yLkwmJihucih0aGlzLHIpLHI9KHQ9cikuVSksci5DPSExLG4u Qz0hMCxycih0aGlzLG4pKSxyPXQuVTt0aGlzLl8uQz0hMX0scmVtb3ZlOmZ1bmN0aW9uKHQp e3QuTiYmKHQuTi5QPXQuUCksdC5QJiYodC5QLk49dC5OKSx0Lk49dC5QPW51bGw7dmFyIGUs cixuLGk9dC5VLGE9dC5MLG89dC5SO2lmKHI9YT9vP2lyKG8pOmE6byxpP2kuTD09PXQ/aS5M PXI6aS5SPXI6dGhpcy5fPXIsYSYmbz8obj1yLkMsci5DPXQuQyxyLkw9YSxhLlU9cixyIT09 bz8oaT1yLlUsci5VPXQuVSx0PXIuUixpLkw9dCxyLlI9byxvLlU9cik6KHIuVT1pLGk9cix0 PXIuUikpOihuPXQuQyx0PXIpLHQmJih0LlU9aSksIW4paWYodCYmdC5DKXQuQz0hMTtlbHNl e2Rve2lmKHQ9PT10aGlzLl8pYnJlYWs7aWYodD09PWkuTCl7aWYoKGU9aS5SKS5DJiYoZS5D PSExLGkuQz0hMCxycih0aGlzLGkpLGU9aS5SKSxlLkwmJmUuTC5DfHxlLlImJmUuUi5DKXtl LlImJmUuUi5DfHwoZS5MLkM9ITEsZS5DPSEwLG5yKHRoaXMsZSksZT1pLlIpLGUuQz1pLkMs aS5DPWUuUi5DPSExLHJyKHRoaXMsaSksdD10aGlzLl87YnJlYWt9fWVsc2UgaWYoKGU9aS5M KS5DJiYoZS5DPSExLGkuQz0hMCxucih0aGlzLGkpLGU9aS5MKSxlLkwmJmUuTC5DfHxlLlIm JmUuUi5DKXtlLkwmJmUuTC5DfHwoZS5SLkM9ITEsZS5DPSEwLHJyKHRoaXMsZSksZT1pLkwp LGUuQz1pLkMsaS5DPWUuTC5DPSExLG5yKHRoaXMsaSksdD10aGlzLl87YnJlYWt9ZS5DPSEw LHQ9aSxpPWkuVX13aGlsZSghdC5DKTt0JiYodC5DPSExKX19fSx0Lmdlb20udm9yb25vaT1m dW5jdGlvbih0KXt2YXIgZT1fZSxyPXdlLG49ZSxpPXIsYT1zcjtpZih0KXJldHVybiBvKHQp O2Z1bmN0aW9uIG8odCl7dmFyIGU9bmV3IEFycmF5KHQubGVuZ3RoKSxyPWFbMF1bMF0sbj1h WzBdWzFdLGk9YVsxXVswXSxvPWFbMV1bMV07cmV0dXJuIGFyKHModCksYSkuY2VsbHMuZm9y RWFjaCgoZnVuY3Rpb24oYSxzKXt2YXIgbD1hLmVkZ2VzLGM9YS5zaXRlOyhlW3NdPWwubGVu Z3RoP2wubWFwKChmdW5jdGlvbih0KXt2YXIgZT10LnN0YXJ0KCk7cmV0dXJuW2UueCxlLnld fSkpOmMueD49ciYmYy54PD1pJiZjLnk+PW4mJmMueTw9bz9bW3Isb10sW2ksb10sW2ksbl0s W3Isbl1dOltdKS5wb2ludD10W3NdfSkpLGV9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gdC5tYXAo KGZ1bmN0aW9uKHQsZSl7cmV0dXJue3g6TWF0aC5yb3VuZChuKHQsZSkva3QpKmt0LHk6TWF0 aC5yb3VuZChpKHQsZSkva3QpKmt0LGk6ZX19KSl9cmV0dXJuIG8ubGlua3M9ZnVuY3Rpb24o dCl7cmV0dXJuIGFyKHModCkpLmVkZ2VzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQu bCYmdC5yfSkpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJue3NvdXJjZTp0W2UubC5pXSx0YXJn ZXQ6dFtlLnIuaV19fSkpfSxvLnRyaWFuZ2xlcz1mdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1 cm4gYXIocyh0KSkuY2VsbHMuZm9yRWFjaCgoZnVuY3Rpb24ocixuKXtmb3IodmFyIGksYSxv LHMsbD1yLnNpdGUsYz1yLmVkZ2VzLnNvcnQocWUpLHU9LTEsZj1jLmxlbmd0aCxoPWNbZi0x XS5lZGdlLHA9aC5sPT09bD9oLnI6aC5sOysrdTxmOyloLGk9cCxwPShoPWNbdV0uZWRnZSku bD09PWw/aC5yOmgubCxuPGkuaSYmbjxwLmkmJihvPWkscz1wLCgoYT1sKS54LXMueCkqKG8u eS1hLnkpLShhLngtby54KSoocy55LWEueSk8MCkmJmUucHVzaChbdFtuXSx0W2kuaV0sdFtw LmldXSl9KSksZX0sby54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhu PWNlKGU9dCksbyk6ZX0sby55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro PyhpPWNlKHI9dCksbyk6cn0sby5jbGlwRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1 bWVudHMubGVuZ3RoPyhhPW51bGw9PXQ/c3I6dCxvKTphPT09c3I/bnVsbDphfSxvLnNpemU9 ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/by5jbGlwRXh0ZW50KHQmJltb MCwwXSx0XSk6YT09PXNyP251bGw6YSYmYVsxXX0sb307dmFyIHNyPVtbLTFlNiwtMWU2XSxb MWU2LDFlNl1dO2Z1bmN0aW9uIGxyKHQpe3JldHVybiB0Lnh9ZnVuY3Rpb24gY3IodCl7cmV0 dXJuIHQueX1mdW5jdGlvbiB1cih0LGUscixuLGksYSl7aWYoIXQoZSxyLG4saSxhKSl7dmFy IG89LjUqKHIraSkscz0uNSoobithKSxsPWUubm9kZXM7bFswXSYmdXIodCxsWzBdLHIsbixv LHMpLGxbMV0mJnVyKHQsbFsxXSxvLG4saSxzKSxsWzJdJiZ1cih0LGxbMl0scixzLG8sYSks bFszXSYmdXIodCxsWzNdLG8scyxpLGEpfX1mdW5jdGlvbiBmcih0LGUscixuLGksYSxvKXt2 YXIgcyxsPTEvMDtyZXR1cm4gZnVuY3Rpb24gdChjLHUsZixoLHApe2lmKCEodT5hfHxmPm98 fGg8bnx8cDxpKSl7aWYoZD1jLnBvaW50KXt2YXIgZCxtPWUtYy54LGc9ci1jLnksdj1tKm0r ZypnO2lmKHY8bCl7dmFyIHk9TWF0aC5zcXJ0KGw9dik7bj1lLXksaT1yLXksYT1lK3ksbz1y K3kscz1kfX1mb3IodmFyIHg9Yy5ub2RlcyxiPS41Kih1K2gpLF89LjUqKGYrcCksdz0ocj49 Xyk8PDF8ZT49YixUPXcrNDt3PFQ7Kyt3KWlmKGM9eFszJnddKXN3aXRjaCgzJncpe2Nhc2Ug MDp0KGMsdSxmLGIsXyk7YnJlYWs7Y2FzZSAxOnQoYyxiLGYsaCxfKTticmVhaztjYXNlIDI6 dChjLHUsXyxiLHApO2JyZWFrO2Nhc2UgMzp0KGMsYixfLGgscCl9fX0odCxuLGksYSxvKSxz fWZ1bmN0aW9uIGhyKGUscil7ZT10LnJnYihlKSxyPXQucmdiKHIpO3ZhciBuPWUucixpPWUu ZyxhPWUuYixvPXIuci1uLHM9ci5nLWksbD1yLmItYTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0 dXJuIiMiK3JlKE1hdGgucm91bmQobitvKnQpKStyZShNYXRoLnJvdW5kKGkrcyp0KSkrcmUo TWF0aC5yb3VuZChhK2wqdCkpfX1mdW5jdGlvbiBwcih0LGUpe3ZhciByLG49e30saT17fTtm b3IociBpbiB0KXIgaW4gZT9uW3JdPXlyKHRbcl0sZVtyXSk6aVtyXT10W3JdO2ZvcihyIGlu IGUpciBpbiB0fHwoaVtyXT1lW3JdKTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHIgaW4gbilp W3JdPW5bcl0odCk7cmV0dXJuIGl9fWZ1bmN0aW9uIGRyKHQsZSl7cmV0dXJuIHQ9K3QsZT0r ZSxmdW5jdGlvbihyKXtyZXR1cm4gdCooMS1yKStlKnJ9fWZ1bmN0aW9uIG1yKHQsZSl7dmFy IHIsbixpLGE9Z3IubGFzdEluZGV4PXZyLmxhc3RJbmRleD0wLG89LTEscz1bXSxsPVtdO2Zv cih0Kz0iIixlKz0iIjsocj1nci5leGVjKHQpKSYmKG49dnIuZXhlYyhlKSk7KShpPW4uaW5k ZXgpPmEmJihpPWUuc2xpY2UoYSxpKSxzW29dP3Nbb10rPWk6c1srK29dPWkpLChyPXJbMF0p PT09KG49blswXSk/c1tvXT9zW29dKz1uOnNbKytvXT1uOihzWysrb109bnVsbCxsLnB1c2go e2k6byx4OmRyKHIsbil9KSksYT12ci5sYXN0SW5kZXg7cmV0dXJuIGE8ZS5sZW5ndGgmJihp PWUuc2xpY2UoYSksc1tvXT9zW29dKz1pOnNbKytvXT1pKSxzLmxlbmd0aDwyP2xbMF0/KGU9 bFswXS54LGZ1bmN0aW9uKHQpe3JldHVybiBlKHQpKyIifSk6ZnVuY3Rpb24oKXtyZXR1cm4g ZX06KGU9bC5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciByLG49MDtuPGU7KytuKXNbKHI9 bFtuXSkuaV09ci54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9dC5nZW9tLmRlbGF1bmF5PWZ1 bmN0aW9uKGUpe3JldHVybiB0Lmdlb20udm9yb25vaSgpLnRyaWFuZ2xlcyhlKX0sdC5nZW9t LnF1YWR0cmVlPWZ1bmN0aW9uKHQsZSxyLG4saSl7dmFyIGEsbz1fZSxzPXdlO2lmKGE9YXJn dW1lbnRzLmxlbmd0aClyZXR1cm4gbz1scixzPWNyLDM9PT1hJiYoaT1yLG49ZSxyPWU9MCks bCh0KTtmdW5jdGlvbiBsKHQpe3ZhciBsLGMsdSxmLGgscCxkLG0sZyx2PWNlKG8pLHg9Y2Uo cyk7aWYobnVsbCE9ZSlwPWUsZD1yLG09bixnPWk7ZWxzZSBpZihtPWc9LShwPWQ9MS8wKSxj PVtdLHU9W10saD10Lmxlbmd0aCxhKWZvcihmPTA7ZjxoOysrZikobD10W2ZdKS54PHAmJihw PWwueCksbC55PGQmJihkPWwueSksbC54Pm0mJihtPWwueCksbC55PmcmJihnPWwueSksYy5w dXNoKGwueCksdS5wdXNoKGwueSk7ZWxzZSBmb3IoZj0wO2Y8aDsrK2Ype3ZhciBiPSt2KGw9 dFtmXSxmKSxfPSt4KGwsZik7YjxwJiYocD1iKSxfPGQmJihkPV8pLGI+bSYmKG09YiksXz5n JiYoZz1fKSxjLnB1c2goYiksdS5wdXNoKF8pfXZhciB3PW0tcCxUPWctZDtmdW5jdGlvbiBr KHQsZSxyLG4saSxhLG8scyl7aWYoIWlzTmFOKHIpJiYhaXNOYU4obikpaWYodC5sZWFmKXt2 YXIgbD10LngsYz10Lnk7aWYobnVsbCE9bClpZih5KGwtcikreShjLW4pPC4wMSlBKHQsZSxy LG4saSxhLG8scyk7ZWxzZXt2YXIgdT10LnBvaW50O3QueD10Lnk9dC5wb2ludD1udWxsLEEo dCx1LGwsYyxpLGEsbyxzKSxBKHQsZSxyLG4saSxhLG8scyl9ZWxzZSB0Lng9cix0Lnk9bix0 LnBvaW50PWV9ZWxzZSBBKHQsZSxyLG4saSxhLG8scyl9ZnVuY3Rpb24gQSh0LGUscixuLGks YSxvLHMpe3ZhciBsPS41KihpK28pLGM9LjUqKGErcyksdT1yPj1sLGY9bj49YyxoPWY8PDF8 dTt0LmxlYWY9ITEsdT9pPWw6bz1sLGY/YT1jOnM9YyxrKHQ9dC5ub2Rlc1toXXx8KHQubm9k ZXNbaF09e2xlYWY6ITAsbm9kZXM6W10scG9pbnQ6bnVsbCx4Om51bGwseTpudWxsfSksZSxy LG4saSxhLG8scyl9dz5UP2c9ZCt3Om09cCtUO3ZhciBNPXtsZWFmOiEwLG5vZGVzOltdLHBv aW50Om51bGwseDpudWxsLHk6bnVsbCxhZGQ6ZnVuY3Rpb24odCl7ayhNLHQsK3YodCwrK2Yp LCt4KHQsZikscCxkLG0sZyl9LHZpc2l0OmZ1bmN0aW9uKHQpe3VyKHQsTSxwLGQsbSxnKX0s ZmluZDpmdW5jdGlvbih0KXtyZXR1cm4gZnIoTSx0WzBdLHRbMV0scCxkLG0sZyl9fTtpZihm PS0xLG51bGw9PWUpe2Zvcig7KytmPGg7KWsoTSx0W2ZdLGNbZl0sdVtmXSxwLGQsbSxnKTst LWZ9ZWxzZSB0LmZvckVhY2goTS5hZGQpO3JldHVybiBjPXU9dD1sPW51bGwsTX1yZXR1cm4g bC54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXQsbCk6b30sbC55 PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPXQsbCk6c30sbC5leHRl bnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/ZT1yPW49 aT1udWxsOihlPSt0WzBdWzBdLHI9K3RbMF1bMV0sbj0rdFsxXVswXSxpPSt0WzFdWzFdKSxs KTpudWxsPT1lP251bGw6W1tlLHJdLFtuLGldXX0sbC5zaXplPWZ1bmN0aW9uKHQpe3JldHVy biBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P2U9cj1uPWk9bnVsbDooZT1yPTAsbj0rdFsw XSxpPSt0WzFdKSxsKTpudWxsPT1lP251bGw6W24tZSxpLXJdfSxsfSx0LmludGVycG9sYXRl UmdiPWhyLHQuaW50ZXJwb2xhdGVPYmplY3Q9cHIsdC5pbnRlcnBvbGF0ZU51bWJlcj1kcix0 LmludGVycG9sYXRlU3RyaW5nPW1yO3ZhciBncj0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQr KSg/OltlRV1bLStdP1xkKyk/L2csdnI9bmV3IFJlZ0V4cChnci5zb3VyY2UsImciKTtmdW5j dGlvbiB5cihlLHIpe2Zvcih2YXIgbixpPXQuaW50ZXJwb2xhdG9ycy5sZW5ndGg7LS1pPj0w JiYhKG49dC5pbnRlcnBvbGF0b3JzW2ldKGUscikpOyk7cmV0dXJuIG59ZnVuY3Rpb24geHIo dCxlKXt2YXIgcixuPVtdLGk9W10sYT10Lmxlbmd0aCxvPWUubGVuZ3RoLHM9TWF0aC5taW4o dC5sZW5ndGgsZS5sZW5ndGgpO2ZvcihyPTA7cjxzOysrciluLnB1c2goeXIodFtyXSxlW3Jd KSk7Zm9yKDtyPGE7KytyKWlbcl09dFtyXTtmb3IoO3I8bzsrK3IpaVtyXT1lW3JdO3JldHVy biBmdW5jdGlvbih0KXtmb3Iocj0wO3I8czsrK3IpaVtyXT1uW3JdKHQpO3JldHVybiBpfX10 LmludGVycG9sYXRlPXlyLHQuaW50ZXJwb2xhdG9ycz1bZnVuY3Rpb24odCxlKXt2YXIgcj10 eXBlb2YgZTtyZXR1cm4oInN0cmluZyI9PT1yP2xlLmhhcyhlLnRvTG93ZXJDYXNlKCkpfHwv XigjfHJnYlwofGhzbFwoKS9pLnRlc3QoZSk/aHI6bXI6ZSBpbnN0YW5jZW9mIEZ0P2hyOkFy cmF5LmlzQXJyYXkoZSk/eHI6Im9iamVjdCI9PT1yJiZpc05hTihlKT9wcjpkcikodCxlKX1d LHQuaW50ZXJwb2xhdGVBcnJheT14cjt2YXIgYnI9ZnVuY3Rpb24oKXtyZXR1cm4gQ30sX3I9 dC5tYXAoe2xpbmVhcjpicixwb2x5OmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXty ZXR1cm4gTWF0aC5wb3coZSx0KX19LHF1YWQ6ZnVuY3Rpb24oKXtyZXR1cm4gTXJ9LGN1Ymlj OmZ1bmN0aW9uKCl7cmV0dXJuIFNyfSxzaW46ZnVuY3Rpb24oKXtyZXR1cm4gTHJ9LGV4cDpm dW5jdGlvbigpe3JldHVybiBDcn0sY2lyY2xlOmZ1bmN0aW9uKCl7cmV0dXJuIFByfSxlbGFz dGljOmZ1bmN0aW9uKHQsZSl7dmFyIHI7YXJndW1lbnRzLmxlbmd0aDwyJiYoZT0uNDUpO2Fy Z3VtZW50cy5sZW5ndGg/cj1lL010Kk1hdGguYXNpbigxL3QpOih0PTEscj1lLzQpO3JldHVy biBmdW5jdGlvbihuKXtyZXR1cm4gMSt0Kk1hdGgucG93KDIsLTEwKm4pKk1hdGguc2luKChu LXIpKk10L2UpfX0sYmFjazpmdW5jdGlvbih0KXt0fHwodD0xLjcwMTU4KTtyZXR1cm4gZnVu Y3Rpb24oZSl7cmV0dXJuIGUqZSooKHQrMSkqZS10KX19LGJvdW5jZTpmdW5jdGlvbigpe3Jl dHVybiBJcn19KSx3cj10Lm1hcCh7aW46QyxvdXQ6a3IsImluLW91dCI6QXIsIm91dC1pbiI6 ZnVuY3Rpb24odCl7cmV0dXJuIEFyKGtyKHQpKX19KTtmdW5jdGlvbiBUcih0KXtyZXR1cm4g ZnVuY3Rpb24oZSl7cmV0dXJuIGU8PTA/MDplPj0xPzE6dChlKX19ZnVuY3Rpb24ga3IodCl7 cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiAxLXQoMS1lKX19ZnVuY3Rpb24gQXIodCl7cmV0 dXJuIGZ1bmN0aW9uKGUpe3JldHVybi41KihlPC41P3QoMiplKToyLXQoMi0yKmUpKX19ZnVu Y3Rpb24gTXIodCl7cmV0dXJuIHQqdH1mdW5jdGlvbiBTcih0KXtyZXR1cm4gdCp0KnR9ZnVu Y3Rpb24gRXIodCl7aWYodDw9MClyZXR1cm4gMDtpZih0Pj0xKXJldHVybiAxO3ZhciBlPXQq dCxyPWUqdDtyZXR1cm4gNCoodDwuNT9yOjMqKHQtZSkrci0uNzUpfWZ1bmN0aW9uIExyKHQp e3JldHVybiAxLU1hdGguY29zKHQqRXQpfWZ1bmN0aW9uIENyKHQpe3JldHVybiBNYXRoLnBv dygyLDEwKih0LTEpKX1mdW5jdGlvbiBQcih0KXtyZXR1cm4gMS1NYXRoLnNxcnQoMS10KnQp fWZ1bmN0aW9uIElyKHQpe3JldHVybiB0PDEvMi43NT83LjU2MjUqdCp0OnQ8Mi8yLjc1Pzcu NTYyNSoodC09MS41LzIuNzUpKnQrLjc1OnQ8Mi41LzIuNzU/Ny41NjI1Kih0LT0yLjI1LzIu NzUpKnQrLjkzNzU6Ny41NjI1Kih0LT0yLjYyNS8yLjc1KSp0Ky45ODQzNzV9ZnVuY3Rpb24g T3IodCxlKXtyZXR1cm4gZS09dCxmdW5jdGlvbihyKXtyZXR1cm4gTWF0aC5yb3VuZCh0K2Uq cil9fWZ1bmN0aW9uIHpyKHQpe3ZhciBlLHIsbixpPVt0LmEsdC5iXSxhPVt0LmMsdC5kXSxv PVJyKGkpLHM9RHIoaSxhKSxsPVJyKCgoZT1hKVswXSs9KG49LXMpKihyPWkpWzBdLGVbMV0r PW4qclsxXSxlKSl8fDA7aVswXSphWzFdPGFbMF0qaVsxXSYmKGlbMF0qPS0xLGlbMV0qPS0x LG8qPS0xLHMqPS0xKSx0aGlzLnJvdGF0ZT0obz9NYXRoLmF0YW4yKGlbMV0saVswXSk6TWF0 aC5hdGFuMigtYVswXSxhWzFdKSkqQ3QsdGhpcy50cmFuc2xhdGU9W3QuZSx0LmZdLHRoaXMu c2NhbGU9W28sbF0sdGhpcy5za2V3PWw/TWF0aC5hdGFuMihzLGwpKkN0OjB9ZnVuY3Rpb24g RHIodCxlKXtyZXR1cm4gdFswXSplWzBdK3RbMV0qZVsxXX1mdW5jdGlvbiBScih0KXt2YXIg ZT1NYXRoLnNxcnQoRHIodCx0KSk7cmV0dXJuIGUmJih0WzBdLz1lLHRbMV0vPWUpLGV9dC5l YXNlPWZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhPZigiLSIpLG49ZT49MD90LnNsaWNlKDAs ZSk6dCxpPWU+PTA/dC5zbGljZShlKzEpOiJpbiI7cmV0dXJuIG49X3IuZ2V0KG4pfHxicixU cigoaT13ci5nZXQoaSl8fEMpKG4uYXBwbHkobnVsbCxyLmNhbGwoYXJndW1lbnRzLDEpKSkp fSx0LmludGVycG9sYXRlSGNsPWZ1bmN0aW9uKGUscil7ZT10LmhjbChlKSxyPXQuaGNsKHIp O3ZhciBuPWUuaCxpPWUuYyxhPWUubCxvPXIuaC1uLHM9ci5jLWksbD1yLmwtYTtpc05hTihz KSYmKHM9MCxpPWlzTmFOKGkpP3IuYzppKTtpc05hTihvKT8obz0wLG49aXNOYU4obik/ci5o Om4pOm8+MTgwP28tPTM2MDpvPC0xODAmJihvKz0zNjApO3JldHVybiBmdW5jdGlvbih0KXty ZXR1cm4gSHQobitvKnQsaStzKnQsYStsKnQpKyIifX0sdC5pbnRlcnBvbGF0ZUhzbD1mdW5j dGlvbihlLHIpe2U9dC5oc2woZSkscj10LmhzbChyKTt2YXIgbj1lLmgsaT1lLnMsYT1lLmws bz1yLmgtbixzPXIucy1pLGw9ci5sLWE7aXNOYU4ocykmJihzPTAsaT1pc05hTihpKT9yLnM6 aSk7aXNOYU4obyk/KG89MCxuPWlzTmFOKG4pP3IuaDpuKTpvPjE4MD9vLT0zNjA6bzwtMTgw JiYobys9MzYwKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGp0KG4rbyp0LGkrcyp0LGEr bCp0KSsiIn19LHQuaW50ZXJwb2xhdGVMYWI9ZnVuY3Rpb24oZSxyKXtlPXQubGFiKGUpLHI9 dC5sYWIocik7dmFyIG49ZS5sLGk9ZS5hLGE9ZS5iLG89ci5sLW4scz1yLmEtaSxsPXIuYi1h O3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gV3QobitvKnQsaStzKnQsYStsKnQpKyIifX0s dC5pbnRlcnBvbGF0ZVJvdW5kPU9yLHQudHJhbnNmb3JtPWZ1bmN0aW9uKGUpe3ZhciByPWku Y3JlYXRlRWxlbWVudE5TKHQubnMucHJlZml4LnN2ZywiZyIpO3JldHVybih0LnRyYW5zZm9y bT1mdW5jdGlvbih0KXtpZihudWxsIT10KXtyLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIix0 KTt2YXIgZT1yLnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCl9cmV0dXJuIG5ldyB6 cihlP2UubWF0cml4OkZyKX0pKGUpfSx6ci5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24o KXtyZXR1cm4idHJhbnNsYXRlKCIrdGhpcy50cmFuc2xhdGUrIilyb3RhdGUoIit0aGlzLnJv dGF0ZSsiKXNrZXdYKCIrdGhpcy5za2V3KyIpc2NhbGUoIit0aGlzLnNjYWxlKyIpIn07dmFy IEZyPXthOjEsYjowLGM6MCxkOjEsZTowLGY6MH07ZnVuY3Rpb24gQnIodCl7cmV0dXJuIHQu bGVuZ3RoP3QucG9wKCkrIiwiOiIifWZ1bmN0aW9uIE5yKGUscil7dmFyIG49W10saT1bXTty ZXR1cm4gZT10LnRyYW5zZm9ybShlKSxyPXQudHJhbnNmb3JtKHIpLGZ1bmN0aW9uKHQsZSxy LG4pe2lmKHRbMF0hPT1lWzBdfHx0WzFdIT09ZVsxXSl7dmFyIGk9ci5wdXNoKCJ0cmFuc2xh dGUoIixudWxsLCIsIixudWxsLCIpIik7bi5wdXNoKHtpOmktNCx4OmRyKHRbMF0sZVswXSl9 LHtpOmktMix4OmRyKHRbMV0sZVsxXSl9KX1lbHNlKGVbMF18fGVbMV0pJiZyLnB1c2goInRy YW5zbGF0ZSgiK2UrIikiKX0oZS50cmFuc2xhdGUsci50cmFuc2xhdGUsbixpKSxmdW5jdGlv bih0LGUscixuKXt0IT09ZT8odC1lPjE4MD9lKz0zNjA6ZS10PjE4MCYmKHQrPTM2MCksbi5w dXNoKHtpOnIucHVzaChCcihyKSsicm90YXRlKCIsbnVsbCwiKSIpLTIseDpkcih0LGUpfSkp OmUmJnIucHVzaChCcihyKSsicm90YXRlKCIrZSsiKSIpfShlLnJvdGF0ZSxyLnJvdGF0ZSxu LGkpLGZ1bmN0aW9uKHQsZSxyLG4pe3QhPT1lP24ucHVzaCh7aTpyLnB1c2goQnIocikrInNr ZXdYKCIsbnVsbCwiKSIpLTIseDpkcih0LGUpfSk6ZSYmci5wdXNoKEJyKHIpKyJza2V3WCgi K2UrIikiKX0oZS5za2V3LHIuc2tldyxuLGkpLGZ1bmN0aW9uKHQsZSxyLG4pe2lmKHRbMF0h PT1lWzBdfHx0WzFdIT09ZVsxXSl7dmFyIGk9ci5wdXNoKEJyKHIpKyJzY2FsZSgiLG51bGws IiwiLG51bGwsIikiKTtuLnB1c2goe2k6aS00LHg6ZHIodFswXSxlWzBdKX0se2k6aS0yLHg6 ZHIodFsxXSxlWzFdKX0pfWVsc2UgMT09PWVbMF0mJjE9PT1lWzFdfHxyLnB1c2goQnIocikr InNjYWxlKCIrZSsiKSIpfShlLnNjYWxlLHIuc2NhbGUsbixpKSxlPXI9bnVsbCxmdW5jdGlv bih0KXtmb3IodmFyIGUscj0tMSxhPWkubGVuZ3RoOysrcjxhOyluWyhlPWlbcl0pLmldPWUu eCh0KTtyZXR1cm4gbi5qb2luKCIiKX19ZnVuY3Rpb24ganIodCxlKXtyZXR1cm4gZT0oZS09 dD0rdCl8fDEvZSxmdW5jdGlvbihyKXtyZXR1cm4oci10KS9lfX1mdW5jdGlvbiBVcih0LGUp e3JldHVybiBlPShlLT10PSt0KXx8MS9lLGZ1bmN0aW9uKHIpe3JldHVybiBNYXRoLm1heCgw LE1hdGgubWluKDEsKHItdCkvZSkpfX1mdW5jdGlvbiBWcih0KXtmb3IodmFyIGU9dC5zb3Vy Y2Uscj10LnRhcmdldCxuPWZ1bmN0aW9uKHQsZSl7aWYodD09PWUpcmV0dXJuIHQ7dmFyIHI9 SHIodCksbj1IcihlKSxpPXIucG9wKCksYT1uLnBvcCgpLG89bnVsbDtmb3IoO2k9PT1hOylv PWksaT1yLnBvcCgpLGE9bi5wb3AoKTtyZXR1cm4gb30oZSxyKSxpPVtlXTtlIT09bjspZT1l LnBhcmVudCxpLnB1c2goZSk7Zm9yKHZhciBhPWkubGVuZ3RoO3IhPT1uOylpLnNwbGljZShh LDAscikscj1yLnBhcmVudDtyZXR1cm4gaX1mdW5jdGlvbiBIcih0KXtmb3IodmFyIGU9W10s cj10LnBhcmVudDtudWxsIT1yOyllLnB1c2godCksdD1yLHI9ci5wYXJlbnQ7cmV0dXJuIGUu cHVzaCh0KSxlfWZ1bmN0aW9uIHFyKHQpe3QuZml4ZWR8PTJ9ZnVuY3Rpb24gR3IodCl7dC5m aXhlZCY9LTd9ZnVuY3Rpb24gWXIodCl7dC5maXhlZHw9NCx0LnB4PXQueCx0LnB5PXQueX1m dW5jdGlvbiBXcih0KXt0LmZpeGVkJj0tNX10LmludGVycG9sYXRlVHJhbnNmb3JtPU5yLHQu bGF5b3V0PXt9LHQubGF5b3V0LmJ1bmRsZT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0 KXtmb3IodmFyIGU9W10scj0tMSxuPXQubGVuZ3RoOysrcjxuOyllLnB1c2goVnIodFtyXSkp O3JldHVybiBlfX0sdC5sYXlvdXQuY2hvcmQ9ZnVuY3Rpb24oKXt2YXIgZSxyLG4saSxhLG8s cyxsPXt9LGM9MDtmdW5jdGlvbiB1KCl7dmFyIGwsdSxoLHAsZCxtPXt9LGc9W10sdj10LnJh bmdlKGkpLHk9W107Zm9yKGU9W10scj1bXSxsPTAscD0tMTsrK3A8aTspe2Zvcih1PTAsZD0t MTsrK2Q8aTspdSs9bltwXVtkXTtnLnB1c2godSkseS5wdXNoKHQucmFuZ2UoaSkpLGwrPXV9 Zm9yKGEmJnYuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gYShnW3RdLGdbZV0pfSkpLG8m JnkuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LnNvcnQoKGZ1bmN0aW9uKHQscil7cmV0dXJu IG8obltlXVt0XSxuW2VdW3JdKX0pKX0pKSxsPShNdC1jKmkpL2wsdT0wLHA9LTE7KytwPGk7 KXtmb3IoaD11LGQ9LTE7KytkPGk7KXt2YXIgeD12W3BdLGI9eVt4XVtkXSxfPW5beF1bYl0s dz11LFQ9dSs9XypsO21beCsiLSIrYl09e2luZGV4Ongsc3ViaW5kZXg6YixzdGFydEFuZ2xl OncsZW5kQW5nbGU6VCx2YWx1ZTpffX1yW3hdPXtpbmRleDp4LHN0YXJ0QW5nbGU6aCxlbmRB bmdsZTp1LHZhbHVlOmdbeF19LHUrPWN9Zm9yKHA9LTE7KytwPGk7KWZvcihkPXAtMTsrK2Q8 aTspe3ZhciBrPW1bcCsiLSIrZF0sQT1tW2QrIi0iK3BdOyhrLnZhbHVlfHxBLnZhbHVlKSYm ZS5wdXNoKGsudmFsdWU8QS52YWx1ZT97c291cmNlOkEsdGFyZ2V0Omt9Ontzb3VyY2U6ayx0 YXJnZXQ6QX0pfXMmJmYoKX1mdW5jdGlvbiBmKCl7ZS5zb3J0KChmdW5jdGlvbih0LGUpe3Jl dHVybiBzKCh0LnNvdXJjZS52YWx1ZSt0LnRhcmdldC52YWx1ZSkvMiwoZS5zb3VyY2UudmFs dWUrZS50YXJnZXQudmFsdWUpLzIpfSkpfXJldHVybiBsLm1hdHJpeD1mdW5jdGlvbih0KXty ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0obj10KSYmbi5sZW5ndGgsZT1yPW51bGwsbCk6 bn0sbC5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPXQs ZT1yPW51bGwsbCk6Y30sbC5zb3J0R3JvdXBzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVu dHMubGVuZ3RoPyhhPXQsZT1yPW51bGwsbCk6YX0sbC5zb3J0U3ViZ3JvdXBzPWZ1bmN0aW9u KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXQsZT1udWxsLGwpOm99LGwuc29ydENo b3Jkcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz10LGUmJmYoKSxs KTpzfSxsLmNob3Jkcz1mdW5jdGlvbigpe3JldHVybiBlfHx1KCksZX0sbC5ncm91cHM9ZnVu Y3Rpb24oKXtyZXR1cm4gcnx8dSgpLHJ9LGx9LHQubGF5b3V0LmZvcmNlPWZ1bmN0aW9uKCl7 dmFyIGUscixuLGksYSxvLHM9e30sbD10LmRpc3BhdGNoKCJzdGFydCIsInRpY2siLCJlbmQi KSxjPVsxLDFdLHU9LjksZj1YcixoPVpyLHA9LTMwLGQ9SnIsbT0uMSxnPS42NCx2PVtdLHk9 W107ZnVuY3Rpb24geCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxyLG4saSl7aWYoZS5wb2ludCE9 PXQpe3ZhciBhPWUuY3gtdC54LG89ZS5jeS10Lnkscz1pLXIsbD1hKmErbypvO2lmKHMqcy9n PGwpe2lmKGw8ZCl7dmFyIGM9ZS5jaGFyZ2UvbDt0LnB4LT1hKmMsdC5weS09bypjfXJldHVy biEwfWlmKGUucG9pbnQmJmwmJmw8ZCl7Yz1lLnBvaW50Q2hhcmdlL2w7dC5weC09YSpjLHQu cHktPW8qY319cmV0dXJuIWUuY2hhcmdlfX1mdW5jdGlvbiBiKGUpe2UucHg9dC5ldmVudC54 LGUucHk9dC5ldmVudC55LHMucmVzdW1lKCl9cmV0dXJuIHMudGljaz1mdW5jdGlvbigpe2lm KChuKj0uOTkpPC4wMDUpcmV0dXJuIGU9bnVsbCxsLmVuZCh7dHlwZToiZW5kIixhbHBoYTpu PTB9KSwhMDt2YXIgcixzLGYsaCxkLGcsYixfLHcsVD12Lmxlbmd0aCxrPXkubGVuZ3RoO2Zv cihzPTA7czxrOysrcyloPShmPXlbc10pLnNvdXJjZSwoZz0oXz0oZD1mLnRhcmdldCkueC1o LngpKl8rKHc9ZC55LWgueSkqdykmJihfKj1nPW4qYVtzXSooKGc9TWF0aC5zcXJ0KGcpKS1p W3NdKS9nLHcqPWcsZC54LT1fKihiPWgud2VpZ2h0K2Qud2VpZ2h0P2gud2VpZ2h0LyhoLndl aWdodCtkLndlaWdodCk6LjUpLGQueS09dypiLGgueCs9XyooYj0xLWIpLGgueSs9dypiKTtp ZigoYj1uKm0pJiYoXz1jWzBdLzIsdz1jWzFdLzIscz0tMSxiKSlmb3IoOysrczxUOykoZj12 W3NdKS54Kz0oXy1mLngpKmIsZi55Kz0ody1mLnkpKmI7aWYocClmb3IoIWZ1bmN0aW9uIHQo ZSxyLG4pe3ZhciBpPTAsYT0wO2lmKGUuY2hhcmdlPTAsIWUubGVhZilmb3IodmFyIG8scz1l Lm5vZGVzLGw9cy5sZW5ndGgsYz0tMTsrK2M8bDspbnVsbCE9KG89c1tjXSkmJih0KG8scixu KSxlLmNoYXJnZSs9by5jaGFyZ2UsaSs9by5jaGFyZ2Uqby5jeCxhKz1vLmNoYXJnZSpvLmN5 KTtpZihlLnBvaW50KXtlLmxlYWZ8fChlLnBvaW50LngrPU1hdGgucmFuZG9tKCktLjUsZS5w b2ludC55Kz1NYXRoLnJhbmRvbSgpLS41KTt2YXIgdT1yKm5bZS5wb2ludC5pbmRleF07ZS5j aGFyZ2UrPWUucG9pbnRDaGFyZ2U9dSxpKz11KmUucG9pbnQueCxhKz11KmUucG9pbnQueX1l LmN4PWkvZS5jaGFyZ2UsZS5jeT1hL2UuY2hhcmdlfShyPXQuZ2VvbS5xdWFkdHJlZSh2KSxu LG8pLHM9LTE7KytzPFQ7KShmPXZbc10pLmZpeGVkfHxyLnZpc2l0KHgoZikpO2ZvcihzPS0x OysrczxUOykoZj12W3NdKS5maXhlZD8oZi54PWYucHgsZi55PWYucHkpOihmLngtPShmLnB4 LShmLnB4PWYueCkpKnUsZi55LT0oZi5weS0oZi5weT1mLnkpKSp1KTtsLnRpY2soe3R5cGU6 InRpY2siLGFscGhhOm59KX0scy5ub2Rlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz Lmxlbmd0aD8odj10LHMpOnZ9LHMubGlua3M9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50 cy5sZW5ndGg/KHk9dCxzKTp5fSxzLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50 cy5sZW5ndGg/KGM9dCxzKTpjfSxzLmxpbmtEaXN0YW5jZT1mdW5jdGlvbih0KXtyZXR1cm4g YXJndW1lbnRzLmxlbmd0aD8oZj0iZnVuY3Rpb24iPT10eXBlb2YgdD90Oit0LHMpOmZ9LHMu ZGlzdGFuY2U9cy5saW5rRGlzdGFuY2Uscy5saW5rU3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0 dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDordCxzKTpo fSxzLmZyaWN0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSt0 LHMpOnV9LHMuY2hhcmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhw PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6K3Qscyk6cH0scy5jaGFyZ2VEaXN0YW5jZT1mdW5j dGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD10KnQscyk6TWF0aC5zcXJ0KGQp fSxzLmdyYXZpdHk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09K3Qs cyk6bX0scy50aGV0YT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz10 KnQscyk6TWF0aC5zcXJ0KGcpfSxzLmFscGhhPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVu dHMubGVuZ3RoPyh0PSt0LG4/dD4wP249dDooZS5jPW51bGwsZS50PU5hTixlPW51bGwsbC5l bmQoe3R5cGU6ImVuZCIsYWxwaGE6bj0wfSkpOnQ+MCYmKGwuc3RhcnQoe3R5cGU6InN0YXJ0 IixhbHBoYTpuPXR9KSxlPXZlKHMudGljaykpLHMpOm59LHMuc3RhcnQ9ZnVuY3Rpb24oKXt2 YXIgdCxlLHIsbj12Lmxlbmd0aCxsPXkubGVuZ3RoLHU9Y1swXSxkPWNbMV07Zm9yKHQ9MDt0 PG47Kyt0KShyPXZbdF0pLmluZGV4PXQsci53ZWlnaHQ9MDtmb3IodD0wO3Q8bDsrK3QpIm51 bWJlciI9PXR5cGVvZihyPXlbdF0pLnNvdXJjZSYmKHIuc291cmNlPXZbci5zb3VyY2VdKSwi bnVtYmVyIj09dHlwZW9mIHIudGFyZ2V0JiYoci50YXJnZXQ9dltyLnRhcmdldF0pLCsrci5z b3VyY2Uud2VpZ2h0LCsrci50YXJnZXQud2VpZ2h0O2Zvcih0PTA7dDxuOysrdClyPXZbdF0s aXNOYU4oci54KSYmKHIueD1tKCJ4Iix1KSksaXNOYU4oci55KSYmKHIueT1tKCJ5IixkKSks aXNOYU4oci5weCkmJihyLnB4PXIueCksaXNOYU4oci5weSkmJihyLnB5PXIueSk7aWYoaT1b XSwiZnVuY3Rpb24iPT10eXBlb2YgZilmb3IodD0wO3Q8bDsrK3QpaVt0XT0rZi5jYWxsKHRo aXMseVt0XSx0KTtlbHNlIGZvcih0PTA7dDxsOysrdClpW3RdPWY7aWYoYT1bXSwiZnVuY3Rp b24iPT10eXBlb2YgaClmb3IodD0wO3Q8bDsrK3QpYVt0XT0raC5jYWxsKHRoaXMseVt0XSx0 KTtlbHNlIGZvcih0PTA7dDxsOysrdClhW3RdPWg7aWYobz1bXSwiZnVuY3Rpb24iPT10eXBl b2YgcClmb3IodD0wO3Q8bjsrK3Qpb1t0XT0rcC5jYWxsKHRoaXMsdlt0XSx0KTtlbHNlIGZv cih0PTA7dDxuOysrdClvW3RdPXA7ZnVuY3Rpb24gbShyLGkpe2lmKCFlKXtmb3IoZT1uZXcg QXJyYXkobiksYz0wO2M8bjsrK2MpZVtjXT1bXTtmb3IoYz0wO2M8bDsrK2Mpe3ZhciBhPXlb Y107ZVthLnNvdXJjZS5pbmRleF0ucHVzaChhLnRhcmdldCksZVthLnRhcmdldC5pbmRleF0u cHVzaChhLnNvdXJjZSl9fWZvcih2YXIgbyxzPWVbdF0sYz0tMSx1PXMubGVuZ3RoOysrYzx1 OylpZighaXNOYU4obz1zW2NdW3JdKSlyZXR1cm4gbztyZXR1cm4gTWF0aC5yYW5kb20oKSpp fXJldHVybiBzLnJlc3VtZSgpfSxzLnJlc3VtZT1mdW5jdGlvbigpe3JldHVybiBzLmFscGhh KC4xKX0scy5zdG9wPWZ1bmN0aW9uKCl7cmV0dXJuIHMuYWxwaGEoMCl9LHMuZHJhZz1mdW5j dGlvbigpe2lmKHJ8fChyPXQuYmVoYXZpb3IuZHJhZygpLm9yaWdpbihDKS5vbigiZHJhZ3N0 YXJ0LmZvcmNlIixxcikub24oImRyYWcuZm9yY2UiLGIpLm9uKCJkcmFnZW5kLmZvcmNlIixH cikpLCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiByO3RoaXMub24oIm1vdXNlb3Zlci5mb3Jj ZSIsWXIpLm9uKCJtb3VzZW91dC5mb3JjZSIsV3IpLmNhbGwocil9LHQucmViaW5kKHMsbCwi b24iKX07dmFyIFhyPTIwLFpyPTEsSnI9MS8wO2Z1bmN0aW9uIEtyKGUscil7cmV0dXJuIHQu cmViaW5kKGUsciwic29ydCIsImNoaWxkcmVuIiwidmFsdWUiKSxlLm5vZGVzPWUsZS5saW5r cz1ubixlfWZ1bmN0aW9uIFFyKHQsZSl7Zm9yKHZhciByPVt0XTtudWxsIT0odD1yLnBvcCgp KTspaWYoZSh0KSwoaT10LmNoaWxkcmVuKSYmKG49aS5sZW5ndGgpKWZvcih2YXIgbixpOy0t bj49MDspci5wdXNoKGlbbl0pfWZ1bmN0aW9uICRyKHQsZSl7Zm9yKHZhciByPVt0XSxuPVtd O251bGwhPSh0PXIucG9wKCkpOylpZihuLnB1c2godCksKGE9dC5jaGlsZHJlbikmJihpPWEu bGVuZ3RoKSlmb3IodmFyIGksYSxvPS0xOysrbzxpOylyLnB1c2goYVtvXSk7Zm9yKDtudWxs IT0odD1uLnBvcCgpKTspZSh0KX1mdW5jdGlvbiB0bih0KXtyZXR1cm4gdC5jaGlsZHJlbn1m dW5jdGlvbiBlbih0KXtyZXR1cm4gdC52YWx1ZX1mdW5jdGlvbiBybih0LGUpe3JldHVybiBl LnZhbHVlLXQudmFsdWV9ZnVuY3Rpb24gbm4oZSl7cmV0dXJuIHQubWVyZ2UoZS5tYXAoKGZ1 bmN0aW9uKHQpe3JldHVybih0LmNoaWxkcmVufHxbXSkubWFwKChmdW5jdGlvbihlKXtyZXR1 cm57c291cmNlOnQsdGFyZ2V0OmV9fSkpfSkpKX10LmxheW91dC5oaWVyYXJjaHk9ZnVuY3Rp b24oKXt2YXIgdD1ybixlPXRuLHI9ZW47ZnVuY3Rpb24gbihpKXt2YXIgYSxvPVtpXSxzPVtd O2ZvcihpLmRlcHRoPTA7bnVsbCE9KGE9by5wb3AoKSk7KWlmKHMucHVzaChhKSwoYz1lLmNh bGwobixhLGEuZGVwdGgpKSYmKGw9Yy5sZW5ndGgpKXtmb3IodmFyIGwsYyx1Oy0tbD49MDsp by5wdXNoKHU9Y1tsXSksdS5wYXJlbnQ9YSx1LmRlcHRoPWEuZGVwdGgrMTtyJiYoYS52YWx1 ZT0wKSxhLmNoaWxkcmVuPWN9ZWxzZSByJiYoYS52YWx1ZT0rci5jYWxsKG4sYSxhLmRlcHRo KXx8MCksZGVsZXRlIGEuY2hpbGRyZW47cmV0dXJuICRyKGksKGZ1bmN0aW9uKGUpe3ZhciBu LGk7dCYmKG49ZS5jaGlsZHJlbikmJm4uc29ydCh0KSxyJiYoaT1lLnBhcmVudCkmJihpLnZh bHVlKz1lLnZhbHVlKX0pKSxzfXJldHVybiBuLnNvcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFy Z3VtZW50cy5sZW5ndGg/KHQ9ZSxuKTp0fSxuLmNoaWxkcmVuPWZ1bmN0aW9uKHQpe3JldHVy biBhcmd1bWVudHMubGVuZ3RoPyhlPXQsbik6ZX0sbi52YWx1ZT1mdW5jdGlvbih0KXtyZXR1 cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG4pOnJ9LG4ucmV2YWx1ZT1mdW5jdGlvbih0KXty ZXR1cm4gciYmKFFyKHQsKGZ1bmN0aW9uKHQpe3QuY2hpbGRyZW4mJih0LnZhbHVlPTApfSkp LCRyKHQsKGZ1bmN0aW9uKHQpe3ZhciBlO3QuY2hpbGRyZW58fCh0LnZhbHVlPStyLmNhbGwo bix0LHQuZGVwdGgpfHwwKSwoZT10LnBhcmVudCkmJihlLnZhbHVlKz10LnZhbHVlKX0pKSks dH0sbn0sdC5sYXlvdXQucGFydGl0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dC5sYXlvdXQuaGll cmFyY2h5KCkscj1bMSwxXTtmdW5jdGlvbiBuKHQsbil7dmFyIGk9ZS5jYWxsKHRoaXMsdCxu KTtyZXR1cm4gZnVuY3Rpb24gdChlLHIsbixpKXt2YXIgYT1lLmNoaWxkcmVuO2lmKGUueD1y LGUueT1lLmRlcHRoKmksZS5keD1uLGUuZHk9aSxhJiYobz1hLmxlbmd0aCkpe3ZhciBvLHMs bCxjPS0xO2ZvcihuPWUudmFsdWU/bi9lLnZhbHVlOjA7KytjPG87KXQocz1hW2NdLHIsbD1z LnZhbHVlKm4saSkscis9bH19KGlbMF0sMCxyWzBdLHJbMV0vZnVuY3Rpb24gdChlKXt2YXIg cj1lLmNoaWxkcmVuLG49MDtpZihyJiYoaT1yLmxlbmd0aCkpZm9yKHZhciBpLGE9LTE7Kyth PGk7KW49TWF0aC5tYXgobix0KHJbYV0pKTtyZXR1cm4gMStufShpWzBdKSksaX1yZXR1cm4g bi5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsbik6cn0s S3IobixlKX0sdC5sYXlvdXQucGllPWZ1bmN0aW9uKCl7dmFyIGU9TnVtYmVyLHI9YW4sbj0w LGk9TXQsYT0wO2Z1bmN0aW9uIG8ocyl7dmFyIGwsYz1zLmxlbmd0aCx1PXMubWFwKChmdW5j dGlvbih0LHIpe3JldHVybitlLmNhbGwobyx0LHIpfSkpLGY9KygiZnVuY3Rpb24iPT10eXBl b2Ygbj9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpuKSxoPSgiZnVuY3Rpb24iPT10eXBlb2Yg aT9pLmFwcGx5KHRoaXMsYXJndW1lbnRzKTppKS1mLHA9TWF0aC5taW4oTWF0aC5hYnMoaCkv YywrKCJmdW5jdGlvbiI9PXR5cGVvZiBhP2EuYXBwbHkodGhpcyxhcmd1bWVudHMpOmEpKSxk PXAqKGg8MD8tMToxKSxtPXQuc3VtKHUpLGc9bT8oaC1jKmQpL206MCx2PXQucmFuZ2UoYyks eT1bXTtyZXR1cm4gbnVsbCE9ciYmdi5zb3J0KHI9PT1hbj9mdW5jdGlvbih0LGUpe3JldHVy biB1W2VdLXVbdF19OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIoc1t0XSxzW2VdKX0pLHYuZm9y RWFjaCgoZnVuY3Rpb24odCl7eVt0XT17ZGF0YTpzW3RdLHZhbHVlOmw9dVt0XSxzdGFydEFu Z2xlOmYsZW5kQW5nbGU6Zis9bCpnK2QscGFkQW5nbGU6cH19KSkseX1yZXR1cm4gby52YWx1 ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG8pOmV9LG8uc29y dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG8pOnJ9LG8uc3Rh cnRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LG8pOm59 LG8uZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dCxv KTppfSxvLnBhZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhh PXQsbyk6YX0sb307dmFyIGFuPXt9O2Z1bmN0aW9uIG9uKHQpe3JldHVybiB0Lnh9ZnVuY3Rp b24gc24odCl7cmV0dXJuIHQueX1mdW5jdGlvbiBsbih0LGUscil7dC55MD1lLHQueT1yfXQu bGF5b3V0LnN0YWNrPWZ1bmN0aW9uKCl7dmFyIGU9QyxyPWZuLG49aG4saT1sbixhPW9uLG89 c247ZnVuY3Rpb24gcyhsLGMpe2lmKCEocD1sLmxlbmd0aCkpcmV0dXJuIGw7dmFyIHU9bC5t YXAoKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUuY2FsbChzLHQscil9KSksZj11Lm1hcCgoZnVu Y3Rpb24odCl7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0LGUpe3JldHVyblthLmNhbGwocyx0 LGUpLG8uY2FsbChzLHQsZSldfSkpfSkpLGg9ci5jYWxsKHMsZixjKTt1PXQucGVybXV0ZSh1 LGgpLGY9dC5wZXJtdXRlKGYsaCk7dmFyIHAsZCxtLGcsdj1uLmNhbGwocyxmLGMpLHk9dVsw XS5sZW5ndGg7Zm9yKG09MDttPHk7KyttKWZvcihpLmNhbGwocyx1WzBdW21dLGc9dlttXSxm WzBdW21dWzFdKSxkPTE7ZDxwOysrZClpLmNhbGwocyx1W2RdW21dLGcrPWZbZC0xXVttXVsx XSxmW2RdW21dWzFdKTtyZXR1cm4gbH1yZXR1cm4gcy52YWx1ZXM9ZnVuY3Rpb24odCl7cmV0 dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxzKTplfSxzLm9yZGVyPWZ1bmN0aW9uKHQpe3Jl dHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Y24uZ2V0 KHQpfHxmbixzKTpyfSxzLm9mZnNldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl bmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnVuLmdldCh0KXx8aG4scyk6bn0scy54 PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQscyk6YX0scy55PWZ1 bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXQscyk6b30scy5vdXQ9ZnVu Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dCxzKTppfSxzfTt2YXIgY249 dC5tYXAoeyJpbnNpZGUtb3V0IjpmdW5jdGlvbihlKXt2YXIgcixuLGk9ZS5sZW5ndGgsYT1l Lm1hcChwbiksbz1lLm1hcChkbikscz10LnJhbmdlKGkpLnNvcnQoKGZ1bmN0aW9uKHQsZSl7 cmV0dXJuIGFbdF0tYVtlXX0pKSxsPTAsYz0wLHU9W10sZj1bXTtmb3Iocj0wO3I8aTsrK3Ip bj1zW3JdLGw8Yz8obCs9b1tuXSx1LnB1c2gobikpOihjKz1vW25dLGYucHVzaChuKSk7cmV0 dXJuIGYucmV2ZXJzZSgpLmNvbmNhdCh1KX0scmV2ZXJzZTpmdW5jdGlvbihlKXtyZXR1cm4g dC5yYW5nZShlLmxlbmd0aCkucmV2ZXJzZSgpfSxkZWZhdWx0OmZufSksdW49dC5tYXAoe3Np bGhvdWV0dGU6ZnVuY3Rpb24odCl7dmFyIGUscixuLGk9dC5sZW5ndGgsYT10WzBdLmxlbmd0 aCxvPVtdLHM9MCxsPVtdO2ZvcihyPTA7cjxhOysrcil7Zm9yKGU9MCxuPTA7ZTxpO2UrKylu Kz10W2VdW3JdWzFdO24+cyYmKHM9biksby5wdXNoKG4pfWZvcihyPTA7cjxhOysrcilsW3Jd PShzLW9bcl0pLzI7cmV0dXJuIGx9LHdpZ2dsZTpmdW5jdGlvbih0KXt2YXIgZSxyLG4saSxh LG8scyxsLGMsdT10Lmxlbmd0aCxmPXRbMF0saD1mLmxlbmd0aCxwPVtdO2ZvcihwWzBdPWw9 Yz0wLHI9MTtyPGg7KytyKXtmb3IoZT0wLGk9MDtlPHU7KytlKWkrPXRbZV1bcl1bMV07Zm9y KGU9MCxhPTAscz1mW3JdWzBdLWZbci0xXVswXTtlPHU7KytlKXtmb3Iobj0wLG89KHRbZV1b cl1bMV0tdFtlXVtyLTFdWzFdKS8oMipzKTtuPGU7KytuKW8rPSh0W25dW3JdWzFdLXRbbl1b ci0xXVsxXSkvczthKz1vKnRbZV1bcl1bMV19cFtyXT1sLT1pP2EvaSpzOjAsbDxjJiYoYz1s KX1mb3Iocj0wO3I8aDsrK3IpcFtyXS09YztyZXR1cm4gcH0sZXhwYW5kOmZ1bmN0aW9uKHQp e3ZhciBlLHIsbixpPXQubGVuZ3RoLGE9dFswXS5sZW5ndGgsbz0xL2kscz1bXTtmb3Iocj0w O3I8YTsrK3Ipe2ZvcihlPTAsbj0wO2U8aTtlKyspbis9dFtlXVtyXVsxXTtpZihuKWZvcihl PTA7ZTxpO2UrKyl0W2VdW3JdWzFdLz1uO2Vsc2UgZm9yKGU9MDtlPGk7ZSsrKXRbZV1bcl1b MV09b31mb3Iocj0wO3I8YTsrK3Ipc1tyXT0wO3JldHVybiBzfSx6ZXJvOmhufSk7ZnVuY3Rp b24gZm4oZSl7cmV0dXJuIHQucmFuZ2UoZS5sZW5ndGgpfWZ1bmN0aW9uIGhuKHQpe2Zvcih2 YXIgZT0tMSxyPXRbMF0ubGVuZ3RoLG49W107KytlPHI7KW5bZV09MDtyZXR1cm4gbn1mdW5j dGlvbiBwbih0KXtmb3IodmFyIGUscj0xLG49MCxpPXRbMF1bMV0sYT10Lmxlbmd0aDtyPGE7 KytyKShlPXRbcl1bMV0pPmkmJihuPXIsaT1lKTtyZXR1cm4gbn1mdW5jdGlvbiBkbih0KXty ZXR1cm4gdC5yZWR1Y2UobW4sMCl9ZnVuY3Rpb24gbW4odCxlKXtyZXR1cm4gdCtlWzFdfWZ1 bmN0aW9uIGduKHQsZSl7cmV0dXJuIHZuKHQsTWF0aC5jZWlsKE1hdGgubG9nKGUubGVuZ3Ro KS9NYXRoLkxOMisxKSl9ZnVuY3Rpb24gdm4odCxlKXtmb3IodmFyIHI9LTEsbj0rdFswXSxp PSh0WzFdLW4pL2UsYT1bXTsrK3I8PWU7KWFbcl09aSpyK247cmV0dXJuIGF9ZnVuY3Rpb24g eW4oZSl7cmV0dXJuW3QubWluKGUpLHQubWF4KGUpXX1mdW5jdGlvbiB4bih0LGUpe3JldHVy biB0LnZhbHVlLWUudmFsdWV9ZnVuY3Rpb24gYm4odCxlKXt2YXIgcj10Ll9wYWNrX25leHQ7 dC5fcGFja19uZXh0PWUsZS5fcGFja19wcmV2PXQsZS5fcGFja19uZXh0PXIsci5fcGFja19w cmV2PWV9ZnVuY3Rpb24gX24odCxlKXt0Ll9wYWNrX25leHQ9ZSxlLl9wYWNrX3ByZXY9dH1m dW5jdGlvbiB3bih0LGUpe3ZhciByPWUueC10Lngsbj1lLnktdC55LGk9dC5yK2UucjtyZXR1 cm4uOTk5KmkqaT5yKnIrbipufWZ1bmN0aW9uIFRuKHQpe2lmKChlPXQuY2hpbGRyZW4pJiYo bD1lLmxlbmd0aCkpe3ZhciBlLHIsbixpLGEsbyxzLGwsYz0xLzAsdT0tMS8wLGY9MS8wLGg9 LTEvMDtpZihlLmZvckVhY2goa24pLChyPWVbMF0pLng9LXIucixyLnk9MCx4KHIpLGw+MSYm KChuPWVbMV0pLng9bi5yLG4ueT0wLHgobiksbD4yKSlmb3IoTW4ocixuLGk9ZVsyXSkseChp KSxibihyLGkpLHIuX3BhY2tfcHJldj1pLGJuKGksbiksbj1yLl9wYWNrX25leHQsYT0zO2E8 bDthKyspe01uKHIsbixpPWVbYV0pO3ZhciBwPTAsZD0xLG09MTtmb3Iobz1uLl9wYWNrX25l eHQ7byE9PW47bz1vLl9wYWNrX25leHQsZCsrKWlmKHduKG8saSkpe3A9MTticmVha31pZigx PT1wKWZvcihzPXIuX3BhY2tfcHJldjtzIT09by5fcGFja19wcmV2JiYhd24ocyxpKTtzPXMu X3BhY2tfcHJldixtKyspO3A/KGQ8bXx8ZD09bSYmbi5yPHIucj9fbihyLG49byk6X24ocj1z LG4pLGEtLSk6KGJuKHIsaSksbj1pLHgoaSkpfXZhciBnPShjK3UpLzIsdj0oZitoKS8yLHk9 MDtmb3IoYT0wO2E8bDthKyspKGk9ZVthXSkueC09ZyxpLnktPXYseT1NYXRoLm1heCh5LGku citNYXRoLnNxcnQoaS54KmkueCtpLnkqaS55KSk7dC5yPXksZS5mb3JFYWNoKEFuKX1mdW5j dGlvbiB4KHQpe2M9TWF0aC5taW4odC54LXQucixjKSx1PU1hdGgubWF4KHQueCt0LnIsdSks Zj1NYXRoLm1pbih0LnktdC5yLGYpLGg9TWF0aC5tYXgodC55K3QucixoKX19ZnVuY3Rpb24g a24odCl7dC5fcGFja19uZXh0PXQuX3BhY2tfcHJldj10fWZ1bmN0aW9uIEFuKHQpe2RlbGV0 ZSB0Ll9wYWNrX25leHQsZGVsZXRlIHQuX3BhY2tfcHJldn1mdW5jdGlvbiBNbih0LGUscil7 dmFyIG49dC5yK3IucixpPWUueC10LngsYT1lLnktdC55O2lmKG4mJihpfHxhKSl7dmFyIG89 ZS5yK3IucixzPWkqaSthKmEsbD0uNSsoKG4qPW4pLShvKj1vKSkvKDIqcyksYz1NYXRoLnNx cnQoTWF0aC5tYXgoMCwyKm8qKG4rcyktKG4tPXMpKm4tbypvKSkvKDIqcyk7ci54PXQueCts KmkrYyphLHIueT10LnkrbCphLWMqaX1lbHNlIHIueD10LngrbixyLnk9dC55fWZ1bmN0aW9u IFNuKHQsZSl7cmV0dXJuIHQucGFyZW50PT1lLnBhcmVudD8xOjJ9ZnVuY3Rpb24gRW4odCl7 dmFyIGU9dC5jaGlsZHJlbjtyZXR1cm4gZS5sZW5ndGg/ZVswXTp0LnR9ZnVuY3Rpb24gTG4o dCl7dmFyIGUscj10LmNoaWxkcmVuO3JldHVybihlPXIubGVuZ3RoKT9yW2UtMV06dC50fWZ1 bmN0aW9uIENuKHQsZSxyKXt2YXIgbj1yLyhlLmktdC5pKTtlLmMtPW4sZS5zKz1yLHQuYys9 bixlLnorPXIsZS5tKz1yfWZ1bmN0aW9uIFBuKHQsZSxyKXtyZXR1cm4gdC5hLnBhcmVudD09 PWUucGFyZW50P3QuYTpyfWZ1bmN0aW9uIEluKHQpe3JldHVybnt4OnQueCx5OnQueSxkeDp0 LmR4LGR5OnQuZHl9fWZ1bmN0aW9uIE9uKHQsZSl7dmFyIHI9dC54K2VbM10sbj10LnkrZVsw XSxpPXQuZHgtZVsxXS1lWzNdLGE9dC5keS1lWzBdLWVbMl07cmV0dXJuIGk8MCYmKHIrPWkv MixpPTApLGE8MCYmKG4rPWEvMixhPTApLHt4OnIseTpuLGR4OmksZHk6YX19ZnVuY3Rpb24g em4odCl7dmFyIGU9dFswXSxyPXRbdC5sZW5ndGgtMV07cmV0dXJuIGU8cj9bZSxyXTpbcixl XX1mdW5jdGlvbiBEbih0KXtyZXR1cm4gdC5yYW5nZUV4dGVudD90LnJhbmdlRXh0ZW50KCk6 em4odC5yYW5nZSgpKX1mdW5jdGlvbiBSbih0LGUscixuKXt2YXIgaT1yKHRbMF0sdFsxXSks YT1uKGVbMF0sZVsxXSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBhKGkodCkpfX1mdW5j dGlvbiBGbih0LGUpe3ZhciByLG49MCxpPXQubGVuZ3RoLTEsYT10W25dLG89dFtpXTtyZXR1 cm4gbzxhJiYocj1uLG49aSxpPXIscj1hLGE9byxvPXIpLHRbbl09ZS5mbG9vcihhKSx0W2ld PWUuY2VpbChvKSx0fWZ1bmN0aW9uIEJuKHQpe3JldHVybiB0P3tmbG9vcjpmdW5jdGlvbihl KXtyZXR1cm4gTWF0aC5mbG9vcihlL3QpKnR9LGNlaWw6ZnVuY3Rpb24oZSl7cmV0dXJuIE1h dGguY2VpbChlL3QpKnR9fTpObn10LmxheW91dC5oaXN0b2dyYW09ZnVuY3Rpb24oKXt2YXIg ZT0hMCxyPU51bWJlcixuPXluLGk9Z247ZnVuY3Rpb24gYShhLG8pe2Zvcih2YXIgcyxsLGM9 W10sdT1hLm1hcChyLHRoaXMpLGY9bi5jYWxsKHRoaXMsdSxvKSxoPWkuY2FsbCh0aGlzLGYs dSxvKSxwPShvPS0xLHUubGVuZ3RoKSxkPWgubGVuZ3RoLTEsbT1lPzE6MS9wOysrbzxkOyko cz1jW29dPVtdKS5keD1oW28rMV0tKHMueD1oW29dKSxzLnk9MDtpZihkPjApZm9yKG89LTE7 KytvPHA7KShsPXVbb10pPj1mWzBdJiZsPD1mWzFdJiYoKHM9Y1t0LmJpc2VjdChoLGwsMSxk KS0xXSkueSs9bSxzLnB1c2goYVtvXSkpO3JldHVybiBjfXJldHVybiBhLnZhbHVlPWZ1bmN0 aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsYSk6cn0sYS5yYW5nZT1mdW5j dGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1jZSh0KSxhKTpufSxhLmJpbnM9 ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9Im51bWJlciI9PXR5cGVv ZiB0P2Z1bmN0aW9uKGUpe3JldHVybiB2bihlLHQpfTpjZSh0KSxhKTppfSxhLmZyZXF1ZW5j eT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0hIXQsYSk6ZX0sYX0s dC5sYXlvdXQucGFjaz1mdW5jdGlvbigpe3ZhciBlLHI9dC5sYXlvdXQuaGllcmFyY2h5KCku c29ydCh4biksbj0wLGk9WzEsMV07ZnVuY3Rpb24gYSh0LGEpe3ZhciBvPXIuY2FsbCh0aGlz LHQsYSkscz1vWzBdLGw9aVswXSxjPWlbMV0sdT1udWxsPT1lP01hdGguc3FydDoiZnVuY3Rp b24iPT10eXBlb2YgZT9lOmZ1bmN0aW9uKCl7cmV0dXJuIGV9O2lmKHMueD1zLnk9MCwkcihz LChmdW5jdGlvbih0KXt0LnI9K3UodC52YWx1ZSl9KSksJHIocyxUbiksbil7dmFyIGY9bioo ZT8xOk1hdGgubWF4KDIqcy5yL2wsMipzLnIvYykpLzI7JHIocywoZnVuY3Rpb24odCl7dC5y Kz1mfSkpLCRyKHMsVG4pLCRyKHMsKGZ1bmN0aW9uKHQpe3Quci09Zn0pKX1yZXR1cm4gZnVu Y3Rpb24gdChlLHIsbixpKXt2YXIgYT1lLmNoaWxkcmVuO2lmKGUueD1yKz1pKmUueCxlLnk9 bis9aSplLnksZS5yKj1pLGEpZm9yKHZhciBvPS0xLHM9YS5sZW5ndGg7KytvPHM7KXQoYVtv XSxyLG4saSl9KHMsbC8yLGMvMixlPzE6MS9NYXRoLm1heCgyKnMuci9sLDIqcy5yL2MpKSxv fXJldHVybiBhLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9 dCxhKTppfSxhLnJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o ZT1udWxsPT10fHwiZnVuY3Rpb24iPT10eXBlb2YgdD90Oit0LGEpOmV9LGEucGFkZGluZz1m dW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdCxhKTpufSxLcihhLHIp fSx0LmxheW91dC50cmVlPWZ1bmN0aW9uKCl7dmFyIGU9dC5sYXlvdXQuaGllcmFyY2h5KCku c29ydChudWxsKS52YWx1ZShudWxsKSxyPVNuLG49WzEsMV0saT1udWxsO2Z1bmN0aW9uIGEo dCxhKXt2YXIgYz1lLmNhbGwodGhpcyx0LGEpLHU9Y1swXSxmPWZ1bmN0aW9uKHQpe3ZhciBl LHI9e0E6bnVsbCxjaGlsZHJlbjpbdF19LG49W3JdO2Zvcig7bnVsbCE9KGU9bi5wb3AoKSk7 KWZvcih2YXIgaSxhPWUuY2hpbGRyZW4sbz0wLHM9YS5sZW5ndGg7bzxzOysrbyluLnB1c2go KGFbb109aT17XzphW29dLHBhcmVudDplLGNoaWxkcmVuOihpPWFbb10uY2hpbGRyZW4pJiZp LnNsaWNlKCl8fFtdLEE6bnVsbCxhOm51bGwsejowLG06MCxjOjAsczowLHQ6bnVsbCxpOm99 KS5hPWkpO3JldHVybiByLmNoaWxkcmVuWzBdfSh1KTtpZigkcihmLG8pLGYucGFyZW50Lm09 LWYueixRcihmLHMpLGkpUXIodSxsKTtlbHNle3ZhciBoPXUscD11LGQ9dTtRcih1LChmdW5j dGlvbih0KXt0Lng8aC54JiYoaD10KSx0Lng+cC54JiYocD10KSx0LmRlcHRoPmQuZGVwdGgm JihkPXQpfSkpO3ZhciBtPXIoaCxwKS8yLWgueCxnPW5bMF0vKHAueCtyKHAsaCkvMittKSx2 PW5bMV0vKGQuZGVwdGh8fDEpO1FyKHUsKGZ1bmN0aW9uKHQpe3QueD0odC54K20pKmcsdC55 PXQuZGVwdGgqdn0pKX1yZXR1cm4gY31mdW5jdGlvbiBvKHQpe3ZhciBlPXQuY2hpbGRyZW4s bj10LnBhcmVudC5jaGlsZHJlbixpPXQuaT9uW3QuaS0xXTpudWxsO2lmKGUubGVuZ3RoKXsh ZnVuY3Rpb24odCl7dmFyIGUscj0wLG49MCxpPXQuY2hpbGRyZW4sYT1pLmxlbmd0aDtmb3Io Oy0tYT49MDspKGU9aVthXSkueis9cixlLm0rPXIscis9ZS5zKyhuKz1lLmMpfSh0KTt2YXIg YT0oZVswXS56K2VbZS5sZW5ndGgtMV0ueikvMjtpPyh0Lno9aS56K3IodC5fLGkuXyksdC5t PXQuei1hKTp0Lno9YX1lbHNlIGkmJih0Lno9aS56K3IodC5fLGkuXykpO3QucGFyZW50LkE9 ZnVuY3Rpb24odCxlLG4pe2lmKGUpe2Zvcih2YXIgaSxhPXQsbz10LHM9ZSxsPWEucGFyZW50 LmNoaWxkcmVuWzBdLGM9YS5tLHU9by5tLGY9cy5tLGg9bC5tO3M9TG4ocyksYT1FbihhKSxz JiZhOylsPUVuKGwpLChvPUxuKG8pKS5hPXQsKGk9cy56K2YtYS56LWMrcihzLl8sYS5fKSk+ MCYmKENuKFBuKHMsdCxuKSx0LGkpLGMrPWksdSs9aSksZis9cy5tLGMrPWEubSxoKz1sLm0s dSs9by5tO3MmJiFMbihvKSYmKG8udD1zLG8ubSs9Zi11KSxhJiYhRW4obCkmJihsLnQ9YSxs Lm0rPWMtaCxuPXQpfXJldHVybiBufSh0LGksdC5wYXJlbnQuQXx8blswXSl9ZnVuY3Rpb24g cyh0KXt0Ll8ueD10LnordC5wYXJlbnQubSx0Lm0rPXQucGFyZW50Lm19ZnVuY3Rpb24gbCh0 KXt0LngqPW5bMF0sdC55PXQuZGVwdGgqblsxXX1yZXR1cm4gYS5zZXBhcmF0aW9uPWZ1bmN0 aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsYSk6cn0sYS5zaXplPWZ1bmN0 aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PShuPXQpP2w6bnVsbCxh KTppP251bGw6bn0sYS5ub2RlU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl bmd0aD8oaT1udWxsPT0obj10KT9udWxsOmwsYSk6aT9uOm51bGx9LEtyKGEsZSl9LHQubGF5 b3V0LmNsdXN0ZXI9ZnVuY3Rpb24oKXt2YXIgZT10LmxheW91dC5oaWVyYXJjaHkoKS5zb3J0 KG51bGwpLnZhbHVlKG51bGwpLHI9U24sbj1bMSwxXSxpPSExO2Z1bmN0aW9uIGEoYSxvKXt2 YXIgcyxsPWUuY2FsbCh0aGlzLGEsbyksYz1sWzBdLHU9MDskcihjLChmdW5jdGlvbihlKXt2 YXIgbj1lLmNoaWxkcmVuO24mJm4ubGVuZ3RoPyhlLng9ZnVuY3Rpb24odCl7cmV0dXJuIHQu cmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2UueH0pLDApL3QubGVuZ3RofShuKSxl Lnk9ZnVuY3Rpb24oZSl7cmV0dXJuIDErdC5tYXgoZSwoZnVuY3Rpb24odCl7cmV0dXJuIHQu eX0pKX0obikpOihlLng9cz91Kz1yKGUscyk6MCxlLnk9MCxzPWUpfSkpO3ZhciBmPWZ1bmN0 aW9uIHQoZSl7dmFyIHI9ZS5jaGlsZHJlbjtyZXR1cm4gciYmci5sZW5ndGg/dChyWzBdKTpl fShjKSxoPWZ1bmN0aW9uIHQoZSl7dmFyIHIsbj1lLmNoaWxkcmVuO3JldHVybiBuJiYocj1u Lmxlbmd0aCk/dChuW3ItMV0pOmV9KGMpLHA9Zi54LXIoZixoKS8yLGQ9aC54K3IoaCxmKS8y O3JldHVybiAkcihjLGk/ZnVuY3Rpb24odCl7dC54PSh0LngtYy54KSpuWzBdLHQueT0oYy55 LXQueSkqblsxXX06ZnVuY3Rpb24odCl7dC54PSh0LngtcCkvKGQtcCkqblswXSx0Lnk9KDEt KGMueT90LnkvYy55OjEpKSpuWzFdfSksbH1yZXR1cm4gYS5zZXBhcmF0aW9uPWZ1bmN0aW9u KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsYSk6cn0sYS5zaXplPWZ1bmN0aW9u KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PShuPXQpLGEpOmk/bnVsbDpu fSxhLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51 bGwhPShuPXQpLGEpOmk/bjpudWxsfSxLcihhLGUpfSx0LmxheW91dC50cmVlbWFwPWZ1bmN0 aW9uKCl7dmFyIGUscj10LmxheW91dC5oaWVyYXJjaHkoKSxuPU1hdGgucm91bmQsaT1bMSwx XSxhPW51bGwsbz1JbixzPSExLGw9InNxdWFyaWZ5IixjPS41KigxK01hdGguc3FydCg1KSk7 ZnVuY3Rpb24gdSh0LGUpe2Zvcih2YXIgcixuLGk9LTEsYT10Lmxlbmd0aDsrK2k8YTspbj0o cj10W2ldKS52YWx1ZSooZTwwPzA6ZSksci5hcmVhPWlzTmFOKG4pfHxuPD0wPzA6bn1mdW5j dGlvbiBmKHQpe3ZhciBlPXQuY2hpbGRyZW47aWYoZSYmZS5sZW5ndGgpe3ZhciByLG4saSxh PW8odCkscz1bXSxjPWUuc2xpY2UoKSxoPTEvMCxtPSJzbGljZSI9PT1sP2EuZHg6ImRpY2Ui PT09bD9hLmR5OiJzbGljZS1kaWNlIj09PWw/MSZ0LmRlcHRoP2EuZHk6YS5keDpNYXRoLm1p bihhLmR4LGEuZHkpO2Zvcih1KGMsYS5keCphLmR5L3QudmFsdWUpLHMuYXJlYT0wOyhpPWMu bGVuZ3RoKT4wOylzLnB1c2gocj1jW2ktMV0pLHMuYXJlYSs9ci5hcmVhLCJzcXVhcmlmeSIh PT1sfHwobj1wKHMsbSkpPD1oPyhjLnBvcCgpLGg9bik6KHMuYXJlYS09cy5wb3AoKS5hcmVh LGQocyxtLGEsITEpLG09TWF0aC5taW4oYS5keCxhLmR5KSxzLmxlbmd0aD1zLmFyZWE9MCxo PTEvMCk7cy5sZW5ndGgmJihkKHMsbSxhLCEwKSxzLmxlbmd0aD1zLmFyZWE9MCksZS5mb3JF YWNoKGYpfX1mdW5jdGlvbiBoKHQpe3ZhciBlPXQuY2hpbGRyZW47aWYoZSYmZS5sZW5ndGgp e3ZhciByLG49byh0KSxpPWUuc2xpY2UoKSxhPVtdO2Zvcih1KGksbi5keCpuLmR5L3QudmFs dWUpLGEuYXJlYT0wO3I9aS5wb3AoKTspYS5wdXNoKHIpLGEuYXJlYSs9ci5hcmVhLG51bGwh PXIueiYmKGQoYSxyLno/bi5keDpuLmR5LG4sIWkubGVuZ3RoKSxhLmxlbmd0aD1hLmFyZWE9 MCk7ZS5mb3JFYWNoKGgpfX1mdW5jdGlvbiBwKHQsZSl7Zm9yKHZhciByLG49dC5hcmVhLGk9 MCxhPTEvMCxvPS0xLHM9dC5sZW5ndGg7KytvPHM7KShyPXRbb10uYXJlYSkmJihyPGEmJihh PXIpLHI+aSYmKGk9cikpO3JldHVybiBlKj1lLChuKj1uKT9NYXRoLm1heChlKmkqYy9uLG4v KGUqYSpjKSk6MS8wfWZ1bmN0aW9uIGQodCxlLHIsaSl7dmFyIGEsbz0tMSxzPXQubGVuZ3Ro LGw9ci54LGM9ci55LHU9ZT9uKHQuYXJlYS9lKTowO2lmKGU9PXIuZHgpe2ZvcigoaXx8dT5y LmR5KSYmKHU9ci5keSk7KytvPHM7KShhPXRbb10pLng9bCxhLnk9YyxhLmR5PXUsbCs9YS5k eD1NYXRoLm1pbihyLngrci5keC1sLHU/bihhLmFyZWEvdSk6MCk7YS56PSEwLGEuZHgrPXIu eCtyLmR4LWwsci55Kz11LHIuZHktPXV9ZWxzZXtmb3IoKGl8fHU+ci5keCkmJih1PXIuZHgp OysrbzxzOykoYT10W29dKS54PWwsYS55PWMsYS5keD11LGMrPWEuZHk9TWF0aC5taW4oci55 K3IuZHktYyx1P24oYS5hcmVhL3UpOjApO2Euej0hMSxhLmR5Kz1yLnkrci5keS1jLHIueCs9 dSxyLmR4LT11fX1mdW5jdGlvbiBtKHQpe3ZhciBuPWV8fHIodCksYT1uWzBdO3JldHVybiBh Lng9YS55PTAsYS52YWx1ZT8oYS5keD1pWzBdLGEuZHk9aVsxXSk6YS5keD1hLmR5PTAsZSYm ci5yZXZhbHVlKGEpLHUoW2FdLGEuZHgqYS5keS9hLnZhbHVlKSwoZT9oOmYpKGEpLHMmJihl PW4pLG59cmV0dXJuIG0uc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0 aD8oaT10LG0pOml9LG0ucGFkZGluZz1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0 aClyZXR1cm4gYTtmdW5jdGlvbiBlKGUpe3ZhciByPXQuY2FsbChtLGUsZS5kZXB0aCk7cmV0 dXJuIG51bGw9PXI/SW4oZSk6T24oZSwibnVtYmVyIj09dHlwZW9mIHI/W3IscixyLHJdOnIp fWZ1bmN0aW9uIHIoZSl7cmV0dXJuIE9uKGUsdCl9dmFyIG47cmV0dXJuIG89bnVsbD09KGE9 dCk/SW46ImZ1bmN0aW9uIj09KG49dHlwZW9mIHQpP2U6Im51bWJlciI9PT1uPyh0PVt0LHQs dCx0XSxyKTpyLG19LG0ucm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n dGg/KG49dD9NYXRoLnJvdW5kOk51bWJlcixtKTpuIT1OdW1iZXJ9LG0uc3RpY2t5PWZ1bmN0 aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPXQsZT1udWxsLG0pOnN9LG0ucmF0 aW89ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9dCxtKTpjfSxtLm1v ZGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9dCsiIixtKTpsfSxL cihtLHIpfSx0LnJhbmRvbT17bm9ybWFsOmZ1bmN0aW9uKHQsZSl7dmFyIHI9YXJndW1lbnRz Lmxlbmd0aDtyZXR1cm4gcjwyJiYoZT0xKSxyPDEmJih0PTApLGZ1bmN0aW9uKCl7dmFyIHIs bixpO2Rve2k9KHI9MipNYXRoLnJhbmRvbSgpLTEpKnIrKG49MipNYXRoLnJhbmRvbSgpLTEp Km59d2hpbGUoIWl8fGk+MSk7cmV0dXJuIHQrZSpyKk1hdGguc3FydCgtMipNYXRoLmxvZyhp KS9pKX19LGxvZ05vcm1hbDpmdW5jdGlvbigpe3ZhciBlPXQucmFuZG9tLm5vcm1hbC5hcHBs eSh0LGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZXhwKGUoKSl9 fSxiYXRlczpmdW5jdGlvbihlKXt2YXIgcj10LnJhbmRvbS5pcndpbkhhbGwoZSk7cmV0dXJu IGZ1bmN0aW9uKCl7cmV0dXJuIHIoKS9lfX0saXJ3aW5IYWxsOmZ1bmN0aW9uKHQpe3JldHVy biBmdW5jdGlvbigpe2Zvcih2YXIgZT0wLHI9MDtyPHQ7cisrKWUrPU1hdGgucmFuZG9tKCk7 cmV0dXJuIGV9fX0sdC5zY2FsZT17fTt2YXIgTm49e2Zsb29yOkMsY2VpbDpDfTtmdW5jdGlv biBqbihlLHIsbixpKXt2YXIgYT1bXSxvPVtdLHM9MCxsPU1hdGgubWluKGUubGVuZ3RoLHIu bGVuZ3RoKS0xO2ZvcihlW2xdPGVbMF0mJihlPWUuc2xpY2UoKS5yZXZlcnNlKCkscj1yLnNs aWNlKCkucmV2ZXJzZSgpKTsrK3M8PWw7KWEucHVzaChuKGVbcy0xXSxlW3NdKSksby5wdXNo KGkocltzLTFdLHJbc10pKTtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIG49dC5iaXNlY3QoZSxy LDEsbCktMTtyZXR1cm4gb1tuXShhW25dKHIpKX19ZnVuY3Rpb24gVW4oZSxyKXtyZXR1cm4g dC5yZWJpbmQoZSxyLCJyYW5nZSIsInJhbmdlUm91bmQiLCJpbnRlcnBvbGF0ZSIsImNsYW1w Iil9ZnVuY3Rpb24gVm4odCxlKXtyZXR1cm4gRm4odCxCbihIbih0LGUpWzJdKSksRm4odCxC bihIbih0LGUpWzJdKSksdH1mdW5jdGlvbiBIbih0LGUpe251bGw9PWUmJihlPTEwKTt2YXIg cj16bih0KSxuPXJbMV0tclswXSxpPU1hdGgucG93KDEwLE1hdGguZmxvb3IoTWF0aC5sb2co bi9lKS9NYXRoLkxOMTApKSxhPWUvbippO3JldHVybiBhPD0uMTU/aSo9MTA6YTw9LjM1P2kq PTU6YTw9Ljc1JiYoaSo9MiksclswXT1NYXRoLmNlaWwoclswXS9pKSppLHJbMV09TWF0aC5m bG9vcihyWzFdL2kpKmkrLjUqaSxyWzJdPWkscn1mdW5jdGlvbiBxbihlLHIpe3JldHVybiB0 LnJhbmdlLmFwcGx5KHQsSG4oZSxyKSl9dC5zY2FsZS5saW5lYXI9ZnVuY3Rpb24oKXtyZXR1 cm4gZnVuY3Rpb24gdChlLHIsbixpKXt2YXIgYSxvO2Z1bmN0aW9uIHMoKXt2YXIgdD1NYXRo Lm1pbihlLmxlbmd0aCxyLmxlbmd0aCk+Mj9qbjpSbixzPWk/VXI6anI7cmV0dXJuIGE9dChl LHIscyxuKSxvPXQocixlLHMseXIpLGx9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gYSh0KX1yZXR1 cm4gbC5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIG8odCl9LGwuZG9tYWluPWZ1bmN0aW9u KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQubWFwKE51bWJlcikscygpKTplfSxs LnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQscygpKTpy fSxsLnJhbmdlUm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGwucmFuZ2UodCkuaW50ZXJwb2xh dGUoT3IpfSxsLmNsYW1wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhp PXQscygpKTppfSxsLmludGVycG9sYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu bGVuZ3RoPyhuPXQscygpKTpufSxsLnRpY2tzPWZ1bmN0aW9uKHQpe3JldHVybiBxbihlLHQp fSxsLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxyKXtyZXR1cm4gZDNfc2NhbGVfbGluZWFyVGlj a0Zvcm1hdChlLHQscil9LGwubmljZT1mdW5jdGlvbih0KXtyZXR1cm4gVm4oZSx0KSxzKCl9 LGwuY29weT1mdW5jdGlvbigpe3JldHVybiB0KGUscixuLGkpfSxzKCl9KFswLDFdLFswLDFd LHlyLCExKX07dC5zY2FsZS5sb2c9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gdChlLHIs bixpKXtmdW5jdGlvbiBhKHQpe3JldHVybihuP01hdGgubG9nKHQ8MD8wOnQpOi1NYXRoLmxv Zyh0PjA/MDotdCkpL01hdGgubG9nKHIpfWZ1bmN0aW9uIG8odCl7cmV0dXJuIG4/TWF0aC5w b3cocix0KTotTWF0aC5wb3cociwtdCl9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gZShhKHQpKX1y ZXR1cm4gcy5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIG8oZS5pbnZlcnQodCkpfSxzLmRv bWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10WzBdPj0wLGUu ZG9tYWluKChpPXQubWFwKE51bWJlcikpLm1hcChhKSkscyk6aX0scy5iYXNlPWZ1bmN0aW9u KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LGUuZG9tYWluKGkubWFwKGEpKSxz KTpyfSxzLm5pY2U9ZnVuY3Rpb24oKXt2YXIgdD1GbihpLm1hcChhKSxuP01hdGg6R24pO3Jl dHVybiBlLmRvbWFpbih0KSxpPXQubWFwKG8pLHN9LHMudGlja3M9ZnVuY3Rpb24oKXt2YXIg dD16bihpKSxlPVtdLHM9dFswXSxsPXRbMV0sYz1NYXRoLmZsb29yKGEocykpLHU9TWF0aC5j ZWlsKGEobCkpLGY9ciUxPzI6cjtpZihpc0Zpbml0ZSh1LWMpKXtpZihuKXtmb3IoO2M8dTtj KyspZm9yKHZhciBoPTE7aDxmO2grKyllLnB1c2gobyhjKSpoKTtlLnB1c2gobyhjKSl9ZWxz ZSBmb3IoZS5wdXNoKG8oYykpO2MrKzx1Oylmb3IoaD1mLTE7aD4wO2gtLSllLnB1c2gobyhj KSpoKTtmb3IoYz0wO2VbY108cztjKyspO2Zvcih1PWUubGVuZ3RoO2VbdS0xXT5sO3UtLSk7 ZT1lLnNsaWNlKGMsdSl9cmV0dXJuIGV9LHMuY29weT1mdW5jdGlvbigpe3JldHVybiB0KGUu Y29weSgpLHIsbixpKX0sVW4ocyxlKX0odC5zY2FsZS5saW5lYXIoKS5kb21haW4oWzAsMV0p LDEwLCEwLFsxLDEwXSl9O3ZhciBHbj17Zmxvb3I6ZnVuY3Rpb24odCl7cmV0dXJuLU1hdGgu Y2VpbCgtdCl9LGNlaWw6ZnVuY3Rpb24odCl7cmV0dXJuLU1hdGguZmxvb3IoLXQpfX07ZnVu Y3Rpb24gWW4odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlPDA/LU1hdGgucG93KC1l LHQpOk1hdGgucG93KGUsdCl9fXQuc2NhbGUucG93PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0 aW9uIHQoZSxyLG4pe3ZhciBpPVluKHIpLGE9WW4oMS9yKTtmdW5jdGlvbiBvKHQpe3JldHVy biBlKGkodCkpfXJldHVybiBvLmludmVydD1mdW5jdGlvbih0KXtyZXR1cm4gYShlLmludmVy dCh0KSl9LG8uZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhl LmRvbWFpbigobj10Lm1hcChOdW1iZXIpKS5tYXAoaSkpLG8pOm59LG8udGlja3M9ZnVuY3Rp b24odCl7cmV0dXJuIHFuKG4sdCl9LG8udGlja0Zvcm1hdD1mdW5jdGlvbih0LGUpe3JldHVy biBkM19zY2FsZV9saW5lYXJUaWNrRm9ybWF0KG4sdCxlKX0sby5uaWNlPWZ1bmN0aW9uKHQp e3JldHVybiBvLmRvbWFpbihWbihuLHQpKX0sby5leHBvbmVudD1mdW5jdGlvbih0KXtyZXR1 cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1ZbihyPXQpLGE9WW4oMS9yKSxlLmRvbWFpbihuLm1h cChpKSksbyk6cn0sby5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoZS5jb3B5KCkscixuKX0s VW4obyxlKX0odC5zY2FsZS5saW5lYXIoKSwxLFswLDFdKX0sdC5zY2FsZS5zcXJ0PWZ1bmN0 aW9uKCl7cmV0dXJuIHQuc2NhbGUucG93KCkuZXhwb25lbnQoLjUpfSx0LnNjYWxlLm9yZGlu YWw9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZShyLG4pe3ZhciBpLGEsbztmdW5jdGlv biBzKHQpe3JldHVybiBhWygoaS5nZXQodCl8fCgicmFuZ2UiPT09bi50P2kuc2V0KHQsci5w dXNoKHQpKTpOYU4pKS0xKSVhLmxlbmd0aF19ZnVuY3Rpb24gbChlLG4pe3JldHVybiB0LnJh bmdlKHIubGVuZ3RoKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlK24qdH0pKX1yZXR1cm4g cy5kb21haW49ZnVuY3Rpb24odCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHI7cj1b XSxpPW5ldyBfO2Zvcih2YXIgZSxhPS0xLG89dC5sZW5ndGg7KythPG87KWkuaGFzKGU9dFth XSl8fGkuc2V0KGUsci5wdXNoKGUpKTtyZXR1cm4gc1tuLnRdLmFwcGx5KHMsbi5hKX0scy5y YW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT10LG89MCxuPXt0 OiJyYW5nZSIsYTphcmd1bWVudHN9LHMpOmF9LHMucmFuZ2VQb2ludHM9ZnVuY3Rpb24odCxl KXthcmd1bWVudHMubGVuZ3RoPDImJihlPTApO3ZhciBpPXRbMF0sYz10WzFdLHU9ci5sZW5n dGg8Mj8oaT0oaStjKS8yLDApOihjLWkpLyhyLmxlbmd0aC0xK2UpO3JldHVybiBhPWwoaSt1 KmUvMix1KSxvPTAsbj17dDoicmFuZ2VQb2ludHMiLGE6YXJndW1lbnRzfSxzfSxzLnJhbmdl Um91bmRQb2ludHM9ZnVuY3Rpb24odCxlKXthcmd1bWVudHMubGVuZ3RoPDImJihlPTApO3Zh ciBpPXRbMF0sYz10WzFdLHU9ci5sZW5ndGg8Mj8oaT1jPU1hdGgucm91bmQoKGkrYykvMiks MCk6KGMtaSkvKHIubGVuZ3RoLTErZSl8MDtyZXR1cm4gYT1sKGkrTWF0aC5yb3VuZCh1KmUv MisoYy1pLShyLmxlbmd0aC0xK2UpKnUpLzIpLHUpLG89MCxuPXt0OiJyYW5nZVJvdW5kUG9p bnRzIixhOmFyZ3VtZW50c30sc30scy5yYW5nZUJhbmRzPWZ1bmN0aW9uKHQsZSxpKXthcmd1 bWVudHMubGVuZ3RoPDImJihlPTApLGFyZ3VtZW50cy5sZW5ndGg8MyYmKGk9ZSk7dmFyIGM9 dFsxXTx0WzBdLHU9dFtjLTBdLGY9dFsxLWNdLGg9KGYtdSkvKHIubGVuZ3RoLWUrMippKTty ZXR1cm4gYT1sKHUraCppLGgpLGMmJmEucmV2ZXJzZSgpLG89aCooMS1lKSxuPXt0OiJyYW5n ZUJhbmRzIixhOmFyZ3VtZW50c30sc30scy5yYW5nZVJvdW5kQmFuZHM9ZnVuY3Rpb24odCxl LGkpe2FyZ3VtZW50cy5sZW5ndGg8MiYmKGU9MCksYXJndW1lbnRzLmxlbmd0aDwzJiYoaT1l KTt2YXIgYz10WzFdPHRbMF0sdT10W2MtMF0sZj10WzEtY10saD1NYXRoLmZsb29yKChmLXUp LyhyLmxlbmd0aC1lKzIqaSkpO3JldHVybiBhPWwodStNYXRoLnJvdW5kKChmLXUtKHIubGVu Z3RoLWUpKmgpLzIpLGgpLGMmJmEucmV2ZXJzZSgpLG89TWF0aC5yb3VuZChoKigxLWUpKSxu PXt0OiJyYW5nZVJvdW5kQmFuZHMiLGE6YXJndW1lbnRzfSxzfSxzLnJhbmdlQmFuZD1mdW5j dGlvbigpe3JldHVybiBvfSxzLnJhbmdlRXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHpuKG4u YVswXSl9LHMuY29weT1mdW5jdGlvbigpe3JldHVybiBlKHIsbil9LHMuZG9tYWluKHIpfShb XSx7dDoicmFuZ2UiLGE6W1tdXX0pfSx0LnNjYWxlLmNhdGVnb3J5MTA9ZnVuY3Rpb24oKXty ZXR1cm4gdC5zY2FsZS5vcmRpbmFsKCkucmFuZ2UoV24pfSx0LnNjYWxlLmNhdGVnb3J5MjA9 ZnVuY3Rpb24oKXtyZXR1cm4gdC5zY2FsZS5vcmRpbmFsKCkucmFuZ2UoWG4pfSx0LnNjYWxl LmNhdGVnb3J5MjBiPWZ1bmN0aW9uKCl7cmV0dXJuIHQuc2NhbGUub3JkaW5hbCgpLnJhbmdl KFpuKX0sdC5zY2FsZS5jYXRlZ29yeTIwYz1mdW5jdGlvbigpe3JldHVybiB0LnNjYWxlLm9y ZGluYWwoKS5yYW5nZShKbil9O3ZhciBXbj1bMjA2MjI2MCwxNjc0NDIwNiwyOTI0NTg4LDE0 MDM0NzI4LDk3MjU4ODUsOTE5NzEzMSwxNDkwNzMzMCw4MzU1NzExLDEyMzY5MTg2LDE1NTYx NzVdLm1hcCh0ZSksWG49WzIwNjIyNjAsMTE0NTQ0NDAsMTY3NDQyMDYsMTY3NTk2NzIsMjky NDU4OCwxMDAxODY5OCwxNDAzNDcyOCwxNjc1MDc0Miw5NzI1ODg1LDEyOTU1ODYxLDkxOTcx MzEsMTI4ODUxNDAsMTQ5MDczMzAsMTYyMzQxOTQsODM1NTcxMSwxMzA5MjgwNywxMjM2OTE4 NiwxNDQwODU4OSwxNTU2MTc1LDEwNDEwNzI1XS5tYXAodGUpLFpuPVszNzUwNzc3LDUzOTU2 MTksNzA0MDcxOSwxMDI2NDI4Niw2NTE5MDk3LDkyMTY1OTQsMTE5MTUxMTUsMTM1NTY2MzYs OTIwMjk5MywxMjQyNjgwOSwxNTE4NjUxNCwxNTE5MDkzMiw4NjY2MTY5LDExMzU2NDkwLDE0 MDQ5NjQzLDE1MTc3MzcyLDgwNzc2ODMsMTA4MzQzMjQsMTM1Mjg1MDksMTQ1ODk2NTRdLm1h cCh0ZSksSm49WzMyNDQ3MzMsNzA1NzExMCwxMDQwNjYyNSwxMzAzMjQzMSwxNTA5NTA1Mywx NjYxNjc2NCwxNjYyNTI1OSwxNjYzNDAxOCwzMjUzMDc2LDc2NTI0NzAsMTA2MDcwMDMsMTMx MDE1MDQsNzY5NTI4MSwxMDM5NDMxMiwxMjM2OTM3MiwxNDM0Mjg5MSw2NTEzNTA3LDk4Njg5 NTAsMTI0MzQ4NzcsMTQyNzcwODFdLm1hcCh0ZSk7ZnVuY3Rpb24gS24oKXtyZXR1cm4gMH10 LnNjYWxlLnF1YW50aWxlPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUocixuKXt2YXIg aTtmdW5jdGlvbiBhKCl7dmFyIGU9MCxhPW4ubGVuZ3RoO2ZvcihpPVtdOysrZTxhOylpW2Ut MV09dC5xdWFudGlsZShyLGUvYSk7cmV0dXJuIG99ZnVuY3Rpb24gbyhlKXtpZighaXNOYU4o ZT0rZSkpcmV0dXJuIG5bdC5iaXNlY3QoaSxlKV19cmV0dXJuIG8uZG9tYWluPWZ1bmN0aW9u KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQubWFwKHApLmZpbHRlcihkKS5zb3J0 KGgpLGEoKSk6cn0sby5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0 aD8obj10LGEoKSk6bn0sby5xdWFudGlsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gaX0sby5pbnZl cnRFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuKHQ9bi5pbmRleE9mKHQpKTwwP1tOYU4sTmFO XTpbdD4wP2lbdC0xXTpyWzBdLHQ8aS5sZW5ndGg/aVt0XTpyW3IubGVuZ3RoLTFdXX0sby5j b3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGUocixuKX0sYSgpfShbXSxbXSl9LHQuc2NhbGUucXVh bnRpemU9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gdChlLHIsbil7dmFyIGksYTtmdW5j dGlvbiBvKHQpe3JldHVybiBuW01hdGgubWF4KDAsTWF0aC5taW4oYSxNYXRoLmZsb29yKGkq KHQtZSkpKSldfWZ1bmN0aW9uIHMoKXtyZXR1cm4gaT1uLmxlbmd0aC8oci1lKSxhPW4ubGVu Z3RoLTEsb31yZXR1cm4gby5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5s ZW5ndGg/KGU9K3RbMF0scj0rdFt0Lmxlbmd0aC0xXSxzKCkpOltlLHJdfSxvLnJhbmdlPWZ1 bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQscygpKTpufSxvLmludmVy dEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm5bdD0odD1uLmluZGV4T2YodCkpPDA/TmFOOnQv aStlLHQrMS9pXX0sby5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoZSxyLG4pfSxzKCl9KDAs MSxbMCwxXSl9LHQuc2NhbGUudGhyZXNob2xkPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9u IGUocixuKXtmdW5jdGlvbiBpKGUpe2lmKGU8PWUpcmV0dXJuIG5bdC5iaXNlY3QocixlKV19 cmV0dXJuIGkuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhy PXQsaSk6cn0saS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o bj10LGkpOm59LGkuaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0PW4uaW5kZXhP Zih0KSxbclt0LTFdLHJbdF1dfSxpLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gZShyLG4pfSxp fShbLjVdLFswLDFdKX0sdC5zY2FsZS5pZGVudGl0eT1mdW5jdGlvbigpe3JldHVybiBmdW5j dGlvbiB0KGUpe2Z1bmN0aW9uIHIodCl7cmV0dXJuK3R9cmV0dXJuIHIuaW52ZXJ0PXIsci5k b21haW49ci5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10 Lm1hcChyKSxyKTplfSxyLnRpY2tzPWZ1bmN0aW9uKHQpe3JldHVybiBxbihlLHQpfSxyLnRp Y2tGb3JtYXQ9ZnVuY3Rpb24odCxyKXtyZXR1cm4gZDNfc2NhbGVfbGluZWFyVGlja0Zvcm1h dChlLHQscil9LHIuY29weT1mdW5jdGlvbigpe3JldHVybiB0KGUpfSxyfShbMCwxXSl9LHQu c3ZnPXt9LHQuc3ZnLmFyYz1mdW5jdGlvbigpe3ZhciB0PSRuLGU9dGkscj1LbixuPVFuLGk9 ZWksYT1yaSxvPW5pO2Z1bmN0aW9uIHMoKXt2YXIgcz1NYXRoLm1heCgwLCt0LmFwcGx5KHRo aXMsYXJndW1lbnRzKSksYz1NYXRoLm1heCgwLCtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSks dT1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1FdCxmPWEuYXBwbHkodGhpcyxhcmd1bWVudHMp LUV0LGg9TWF0aC5hYnMoZi11KSxwPXU+Zj8wOjE7aWYoYzxzJiYoZD1jLGM9cyxzPWQpLGg+ PVN0KXJldHVybiBsKGMscCkrKHM/bChzLDEtcCk6IiIpKyJaIjt2YXIgZCxtLGcsdix5LHgs YixfLHcsVCxrLEEsTT0wLFM9MCxFPVtdO2lmKCh2PSgrby5hcHBseSh0aGlzLGFyZ3VtZW50 cyl8fDApLzIpJiYoZz1uPT09UW4/TWF0aC5zcXJ0KHMqcytjKmMpOituLmFwcGx5KHRoaXMs YXJndW1lbnRzKSxwfHwoUyo9LTEpLGMmJihTPVB0KGcvYypNYXRoLnNpbih2KSkpLHMmJihN PVB0KGcvcypNYXRoLnNpbih2KSkpKSxjKXt5PWMqTWF0aC5jb3ModStTKSx4PWMqTWF0aC5z aW4odStTKSxiPWMqTWF0aC5jb3MoZi1TKSxfPWMqTWF0aC5zaW4oZi1TKTt2YXIgTD1NYXRo LmFicyhmLXUtMipTKTw9QXQ/MDoxO2lmKFMmJmlpKHkseCxiLF8pPT09cF5MKXt2YXIgQz0o dStmKS8yO3k9YypNYXRoLmNvcyhDKSx4PWMqTWF0aC5zaW4oQyksYj1fPW51bGx9fWVsc2Ug eT14PTA7aWYocyl7dz1zKk1hdGguY29zKGYtTSksVD1zKk1hdGguc2luKGYtTSksaz1zKk1h dGguY29zKHUrTSksQT1zKk1hdGguc2luKHUrTSk7dmFyIFA9TWF0aC5hYnModS1mKzIqTSk8 PUF0PzA6MTtpZihNJiZpaSh3LFQsayxBKT09PTEtcF5QKXt2YXIgST0odStmKS8yO3c9cypN YXRoLmNvcyhJKSxUPXMqTWF0aC5zaW4oSSksaz1BPW51bGx9fWVsc2Ugdz1UPTA7aWYoaD5r dCYmKGQ9TWF0aC5taW4oTWF0aC5hYnMoYy1zKS8yLCtyLmFwcGx5KHRoaXMsYXJndW1lbnRz KSkpPi4wMDEpe209czxjXnA/MDoxO3ZhciBPPWQsej1kO2lmKGg8QXQpe3ZhciBEPW51bGw9 PWs/W3csVF06bnVsbD09Yj9beSx4XTpTZShbeSx4XSxbayxBXSxbYixfXSxbdyxUXSksUj15 LURbMF0sRj14LURbMV0sQj1iLURbMF0sTj1fLURbMV0saj0xL01hdGguc2luKE1hdGguYWNv cygoUipCK0YqTikvKE1hdGguc3FydChSKlIrRipGKSpNYXRoLnNxcnQoQipCK04qTikpKS8y KSxVPU1hdGguc3FydChEWzBdKkRbMF0rRFsxXSpEWzFdKTt6PU1hdGgubWluKGQsKHMtVSkv KGotMSkpLE89TWF0aC5taW4oZCwoYy1VKS8oaisxKSl9aWYobnVsbCE9Yil7dmFyIFY9YWko bnVsbD09az9bdyxUXTpbayxBXSxbeSx4XSxjLE8scCksSD1haShbYixfXSxbdyxUXSxjLE8s cCk7ZD09PU8/RS5wdXNoKCJNIixWWzBdLCJBIixPLCIsIixPLCIgMCAwLCIsbSwiICIsVlsx XSwiQSIsYywiLCIsYywiIDAgIiwxLXBeaWkoVlsxXVswXSxWWzFdWzFdLEhbMV1bMF0sSFsx XVsxXSksIiwiLHAsIiAiLEhbMV0sIkEiLE8sIiwiLE8sIiAwIDAsIixtLCIgIixIWzBdKTpF LnB1c2goIk0iLFZbMF0sIkEiLE8sIiwiLE8sIiAwIDEsIixtLCIgIixIWzBdKX1lbHNlIEUu cHVzaCgiTSIseSwiLCIseCk7aWYobnVsbCE9ayl7dmFyIHE9YWkoW3kseF0sW2ssQV0scywt eixwKSxHPWFpKFt3LFRdLG51bGw9PWI/W3kseF06W2IsX10scywteixwKTtkPT09ej9FLnB1 c2goIkwiLEdbMF0sIkEiLHosIiwiLHosIiAwIDAsIixtLCIgIixHWzFdLCJBIixzLCIsIixz LCIgMCAiLHBeaWkoR1sxXVswXSxHWzFdWzFdLHFbMV1bMF0scVsxXVsxXSksIiwiLDEtcCwi ICIscVsxXSwiQSIseiwiLCIseiwiIDAgMCwiLG0sIiAiLHFbMF0pOkUucHVzaCgiTCIsR1sw XSwiQSIseiwiLCIseiwiIDAgMCwiLG0sIiAiLHFbMF0pfWVsc2UgRS5wdXNoKCJMIix3LCIs IixUKX1lbHNlIEUucHVzaCgiTSIseSwiLCIseCksbnVsbCE9YiYmRS5wdXNoKCJBIixjLCIs IixjLCIgMCAiLEwsIiwiLHAsIiAiLGIsIiwiLF8pLEUucHVzaCgiTCIsdywiLCIsVCksbnVs bCE9ayYmRS5wdXNoKCJBIixzLCIsIixzLCIgMCAiLFAsIiwiLDEtcCwiICIsaywiLCIsQSk7 cmV0dXJuIEUucHVzaCgiWiIpLEUuam9pbigiIil9ZnVuY3Rpb24gbCh0LGUpe3JldHVybiJN MCwiK3QrIkEiK3QrIiwiK3QrIiAwIDEsIitlKyIgMCwiKy10KyJBIit0KyIsIit0KyIgMCAx LCIrZSsiIDAsIit0fXJldHVybiBzLmlubmVyUmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBh cmd1bWVudHMubGVuZ3RoPyh0PWNlKGUpLHMpOnR9LHMub3V0ZXJSYWRpdXM9ZnVuY3Rpb24o dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9Y2UodCkscyk6ZX0scy5jb3JuZXJSYWRp dXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9Y2UodCkscyk6cn0s cy5wYWRSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dD09 UW4/UW46Y2UodCkscyk6bn0scy5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1 bWVudHMubGVuZ3RoPyhpPWNlKHQpLHMpOml9LHMuZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0 dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9Y2UodCkscyk6YX0scy5wYWRBbmdsZT1mdW5jdGlv bih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1jZSh0KSxzKTpvfSxzLmNlbnRyb2lk PWZ1bmN0aW9uKCl7dmFyIHI9KCt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSsgK2UuYXBwbHko dGhpcyxhcmd1bWVudHMpKS8yLG49KCtpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSsgK2EuYXBw bHkodGhpcyxhcmd1bWVudHMpKS8yLUV0O3JldHVybltNYXRoLmNvcyhuKSpyLE1hdGguc2lu KG4pKnJdfSxzfTt2YXIgUW49ImF1dG8iO2Z1bmN0aW9uICRuKHQpe3JldHVybiB0LmlubmVy UmFkaXVzfWZ1bmN0aW9uIHRpKHQpe3JldHVybiB0Lm91dGVyUmFkaXVzfWZ1bmN0aW9uIGVp KHQpe3JldHVybiB0LnN0YXJ0QW5nbGV9ZnVuY3Rpb24gcmkodCl7cmV0dXJuIHQuZW5kQW5n bGV9ZnVuY3Rpb24gbmkodCl7cmV0dXJuIHQmJnQucGFkQW5nbGV9ZnVuY3Rpb24gaWkodCxl LHIsbil7cmV0dXJuKHQtcikqZS0oZS1uKSp0PjA/MDoxfWZ1bmN0aW9uIGFpKHQsZSxyLG4s aSl7dmFyIGE9dFswXS1lWzBdLG89dFsxXS1lWzFdLHM9KGk/bjotbikvTWF0aC5zcXJ0KGEq YStvKm8pLGw9cypvLGM9LXMqYSx1PXRbMF0rbCxmPXRbMV0rYyxoPWVbMF0rbCxwPWVbMV0r YyxkPSh1K2gpLzIsbT0oZitwKS8yLGc9aC11LHY9cC1mLHk9ZypnK3Yqdix4PXItbixiPXUq cC1oKmYsXz0odjwwPy0xOjEpKk1hdGguc3FydChNYXRoLm1heCgwLHgqeCp5LWIqYikpLHc9 KGIqdi1nKl8pL3ksVD0oLWIqZy12Kl8pL3ksaz0oYip2K2cqXykveSxBPSgtYipnK3YqXykv eSxNPXctZCxTPVQtbSxFPWstZCxMPUEtbTtyZXR1cm4gTSpNK1MqUz5FKkUrTCpMJiYodz1r LFQ9QSksW1t3LWwsVC1jXSxbdypyL3gsVCpyL3hdXX1mdW5jdGlvbiBvaSgpe3JldHVybiEw fWZ1bmN0aW9uIHNpKHQpe3ZhciBlPV9lLHI9d2Usbj1vaSxpPWNpLGE9aS5rZXksbz0uNztm dW5jdGlvbiBzKGEpe3ZhciBzLGw9W10sYz1bXSx1PS0xLGY9YS5sZW5ndGgsaD1jZShlKSxw PWNlKHIpO2Z1bmN0aW9uIGQoKXtsLnB1c2goIk0iLGkodChjKSxvKSl9Zm9yKDsrK3U8Zjsp bi5jYWxsKHRoaXMscz1hW3VdLHUpP2MucHVzaChbK2guY2FsbCh0aGlzLHMsdSksK3AuY2Fs bCh0aGlzLHMsdSldKTpjLmxlbmd0aCYmKGQoKSxjPVtdKTtyZXR1cm4gYy5sZW5ndGgmJmQo KSxsLmxlbmd0aD9sLmpvaW4oIiIpOm51bGx9cmV0dXJuIHMueD1mdW5jdGlvbih0KXtyZXR1 cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LHMpOmV9LHMueT1mdW5jdGlvbih0KXtyZXR1cm4g YXJndW1lbnRzLmxlbmd0aD8ocj10LHMpOnJ9LHMuZGVmaW5lZD1mdW5jdGlvbih0KXtyZXR1 cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LHMpOm59LHMuaW50ZXJwb2xhdGU9ZnVuY3Rpb24o dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/aT10 OihpPWxpLmdldCh0KXx8Y2kpLmtleSxzKTphfSxzLnRlbnNpb249ZnVuY3Rpb24odCl7cmV0 dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89dCxzKTpvfSxzfXQuc3ZnLmxpbmU9ZnVuY3Rpb24o KXtyZXR1cm4gc2koQyl9O3ZhciBsaT10Lm1hcCh7bGluZWFyOmNpLCJsaW5lYXItY2xvc2Vk Ijp1aSxzdGVwOmZ1bmN0aW9uKHQpe3ZhciBlPTAscj10Lmxlbmd0aCxuPXRbMF0saT1bblsw XSwiLCIsblsxXV07Zm9yKDsrK2U8cjspaS5wdXNoKCJIIiwoblswXSsobj10W2VdKVswXSkv MiwiViIsblsxXSk7cj4xJiZpLnB1c2goIkgiLG5bMF0pO3JldHVybiBpLmpvaW4oIiIpfSwi c3RlcC1iZWZvcmUiOmZpLCJzdGVwLWFmdGVyIjpoaSxiYXNpczptaSwiYmFzaXMtb3BlbiI6 ZnVuY3Rpb24odCl7aWYodC5sZW5ndGg8NClyZXR1cm4gY2kodCk7dmFyIGUscj1bXSxuPS0x LGk9dC5sZW5ndGgsYT1bMF0sbz1bMF07Zm9yKDsrK248MzspZT10W25dLGEucHVzaChlWzBd KSxvLnB1c2goZVsxXSk7ci5wdXNoKGdpKHhpLGEpKyIsIitnaSh4aSxvKSksLS1uO2Zvcig7 KytuPGk7KWU9dFtuXSxhLnNoaWZ0KCksYS5wdXNoKGVbMF0pLG8uc2hpZnQoKSxvLnB1c2go ZVsxXSksYmkocixhLG8pO3JldHVybiByLmpvaW4oIiIpfSwiYmFzaXMtY2xvc2VkIjpmdW5j dGlvbih0KXt2YXIgZSxyLG49LTEsaT10Lmxlbmd0aCxhPWkrNCxvPVtdLHM9W107Zm9yKDsr K248NDspcj10W24laV0sby5wdXNoKHJbMF0pLHMucHVzaChyWzFdKTtlPVtnaSh4aSxvKSwi LCIsZ2koeGkscyldLC0tbjtmb3IoOysrbjxhOylyPXRbbiVpXSxvLnNoaWZ0KCksby5wdXNo KHJbMF0pLHMuc2hpZnQoKSxzLnB1c2goclsxXSksYmkoZSxvLHMpO3JldHVybiBlLmpvaW4o IiIpfSxidW5kbGU6ZnVuY3Rpb24odCxlKXt2YXIgcj10Lmxlbmd0aC0xO2lmKHIpZm9yKHZh ciBuLGksYT10WzBdWzBdLG89dFswXVsxXSxzPXRbcl1bMF0tYSxsPXRbcl1bMV0tbyxjPS0x OysrYzw9cjspbj10W2NdLGk9Yy9yLG5bMF09ZSpuWzBdKygxLWUpKihhK2kqcyksblsxXT1l Km5bMV0rKDEtZSkqKG8raSpsKTtyZXR1cm4gbWkodCl9LGNhcmRpbmFsOmZ1bmN0aW9uKHQs ZSl7cmV0dXJuIHQubGVuZ3RoPDM/Y2kodCk6dFswXStwaSh0LGRpKHQsZSkpfSwiY2FyZGlu YWwtb3BlbiI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5sZW5ndGg8ND9jaSh0KTp0WzFdK3Bp KHQuc2xpY2UoMSwtMSksZGkodCxlKSl9LCJjYXJkaW5hbC1jbG9zZWQiOmZ1bmN0aW9uKHQs ZSl7cmV0dXJuIHQubGVuZ3RoPDM/dWkodCk6dFswXStwaSgodC5wdXNoKHRbMF0pLHQpLGRp KFt0W3QubGVuZ3RoLTJdXS5jb25jYXQodCxbdFsxXV0pLGUpKX0sbW9ub3RvbmU6ZnVuY3Rp b24odCl7cmV0dXJuIHQubGVuZ3RoPDM/Y2kodCk6dFswXStwaSh0LGZ1bmN0aW9uKHQpe3Zh ciBlLHIsbixpLGE9W10sbz1mdW5jdGlvbih0KXt2YXIgZT0wLHI9dC5sZW5ndGgtMSxuPVtd LGk9dFswXSxhPXRbMV0sbz1uWzBdPV9pKGksYSk7Zm9yKDsrK2U8cjspbltlXT0obysobz1f aShpPWEsYT10W2UrMV0pKSkvMjtyZXR1cm4gbltlXT1vLG59KHQpLHM9LTEsbD10Lmxlbmd0 aC0xO2Zvcig7KytzPGw7KWU9X2kodFtzXSx0W3MrMV0pLHkoZSk8a3Q/b1tzXT1vW3MrMV09 MDoocj1vW3NdL2Usbj1vW3MrMV0vZSwoaT1yKnIrbipuKT45JiYoaT0zKmUvTWF0aC5zcXJ0 KGkpLG9bc109aSpyLG9bcysxXT1pKm4pKTtzPS0xO2Zvcig7KytzPD1sOylpPSh0W01hdGgu bWluKGwscysxKV1bMF0tdFtNYXRoLm1heCgwLHMtMSldWzBdKS8oNiooMStvW3NdKm9bc10p KSxhLnB1c2goW2l8fDAsb1tzXSppfHwwXSk7cmV0dXJuIGF9KHQpKX19KTtmdW5jdGlvbiBj aSh0KXtyZXR1cm4gdC5sZW5ndGg+MT90LmpvaW4oIkwiKTp0KyJaIn1mdW5jdGlvbiB1aSh0 KXtyZXR1cm4gdC5qb2luKCJMIikrIloifWZ1bmN0aW9uIGZpKHQpe2Zvcih2YXIgZT0wLHI9 dC5sZW5ndGgsbj10WzBdLGk9W25bMF0sIiwiLG5bMV1dOysrZTxyOylpLnB1c2goIlYiLChu PXRbZV0pWzFdLCJIIixuWzBdKTtyZXR1cm4gaS5qb2luKCIiKX1mdW5jdGlvbiBoaSh0KXtm b3IodmFyIGU9MCxyPXQubGVuZ3RoLG49dFswXSxpPVtuWzBdLCIsIixuWzFdXTsrK2U8cjsp aS5wdXNoKCJIIiwobj10W2VdKVswXSwiViIsblsxXSk7cmV0dXJuIGkuam9pbigiIil9ZnVu Y3Rpb24gcGkodCxlKXtpZihlLmxlbmd0aDwxfHx0Lmxlbmd0aCE9ZS5sZW5ndGgmJnQubGVu Z3RoIT1lLmxlbmd0aCsyKXJldHVybiBjaSh0KTt2YXIgcj10Lmxlbmd0aCE9ZS5sZW5ndGgs bj0iIixpPXRbMF0sYT10WzFdLG89ZVswXSxzPW8sbD0xO2lmKHImJihuKz0iUSIrKGFbMF0t MipvWzBdLzMpKyIsIisoYVsxXS0yKm9bMV0vMykrIiwiK2FbMF0rIiwiK2FbMV0saT10WzFd LGw9MiksZS5sZW5ndGg+MSl7cz1lWzFdLGE9dFtsXSxsKyssbis9IkMiKyhpWzBdK29bMF0p KyIsIisoaVsxXStvWzFdKSsiLCIrKGFbMF0tc1swXSkrIiwiKyhhWzFdLXNbMV0pKyIsIith WzBdKyIsIithWzFdO2Zvcih2YXIgYz0yO2M8ZS5sZW5ndGg7YysrLGwrKylhPXRbbF0scz1l W2NdLG4rPSJTIisoYVswXS1zWzBdKSsiLCIrKGFbMV0tc1sxXSkrIiwiK2FbMF0rIiwiK2Fb MV19aWYocil7dmFyIHU9dFtsXTtuKz0iUSIrKGFbMF0rMipzWzBdLzMpKyIsIisoYVsxXSsy KnNbMV0vMykrIiwiK3VbMF0rIiwiK3VbMV19cmV0dXJuIG59ZnVuY3Rpb24gZGkodCxlKXtm b3IodmFyIHIsbj1bXSxpPSgxLWUpLzIsYT10WzBdLG89dFsxXSxzPTEsbD10Lmxlbmd0aDsr K3M8bDspcj1hLGE9byxvPXRbc10sbi5wdXNoKFtpKihvWzBdLXJbMF0pLGkqKG9bMV0tclsx XSldKTtyZXR1cm4gbn1mdW5jdGlvbiBtaSh0KXtpZih0Lmxlbmd0aDwzKXJldHVybiBjaSh0 KTt2YXIgZT0xLHI9dC5sZW5ndGgsbj10WzBdLGk9blswXSxhPW5bMV0sbz1baSxpLGksKG49 dFsxXSlbMF1dLHM9W2EsYSxhLG5bMV1dLGw9W2ksIiwiLGEsIkwiLGdpKHhpLG8pLCIsIixn aSh4aSxzKV07Zm9yKHQucHVzaCh0W3ItMV0pOysrZTw9cjspbj10W2VdLG8uc2hpZnQoKSxv LnB1c2goblswXSkscy5zaGlmdCgpLHMucHVzaChuWzFdKSxiaShsLG8scyk7cmV0dXJuIHQu cG9wKCksbC5wdXNoKCJMIixuKSxsLmpvaW4oIiIpfWZ1bmN0aW9uIGdpKHQsZSl7cmV0dXJu IHRbMF0qZVswXSt0WzFdKmVbMV0rdFsyXSplWzJdK3RbM10qZVszXX1saS5mb3JFYWNoKChm dW5jdGlvbih0LGUpe2Uua2V5PXQsZS5jbG9zZWQ9Ly1jbG9zZWQkLy50ZXN0KHQpfSkpO3Zh ciB2aT1bMCwyLzMsMS8zLDBdLHlpPVswLDEvMywyLzMsMF0seGk9WzAsMS82LDIvMywxLzZd O2Z1bmN0aW9uIGJpKHQsZSxyKXt0LnB1c2goIkMiLGdpKHZpLGUpLCIsIixnaSh2aSxyKSwi LCIsZ2koeWksZSksIiwiLGdpKHlpLHIpLCIsIixnaSh4aSxlKSwiLCIsZ2koeGkscikpfWZ1 bmN0aW9uIF9pKHQsZSl7cmV0dXJuKGVbMV0tdFsxXSkvKGVbMF0tdFswXSl9ZnVuY3Rpb24g d2kodCl7Zm9yKHZhciBlLHIsbixpPS0xLGE9dC5sZW5ndGg7KytpPGE7KXI9KGU9dFtpXSlb MF0sbj1lWzFdLUV0LGVbMF09cipNYXRoLmNvcyhuKSxlWzFdPXIqTWF0aC5zaW4obik7cmV0 dXJuIHR9ZnVuY3Rpb24gVGkodCl7dmFyIGU9X2Uscj1fZSxuPTAsaT13ZSxhPW9pLG89Y2ks cz1vLmtleSxsPW8sYz0iTCIsdT0uNztmdW5jdGlvbiBmKHMpe3ZhciBmLGgscCxkPVtdLG09 W10sZz1bXSx2PS0xLHk9cy5sZW5ndGgseD1jZShlKSxiPWNlKG4pLF89ZT09PXI/ZnVuY3Rp b24oKXtyZXR1cm4gaH06Y2Uociksdz1uPT09aT9mdW5jdGlvbigpe3JldHVybiBwfTpjZShp KTtmdW5jdGlvbiBUKCl7ZC5wdXNoKCJNIixvKHQoZyksdSksYyxsKHQobS5yZXZlcnNlKCkp LHUpLCJaIil9Zm9yKDsrK3Y8eTspYS5jYWxsKHRoaXMsZj1zW3ZdLHYpPyhtLnB1c2goW2g9 K3guY2FsbCh0aGlzLGYsdikscD0rYi5jYWxsKHRoaXMsZix2KV0pLGcucHVzaChbK18uY2Fs bCh0aGlzLGYsdiksK3cuY2FsbCh0aGlzLGYsdildKSk6bS5sZW5ndGgmJihUKCksbT1bXSxn PVtdKTtyZXR1cm4gbS5sZW5ndGgmJlQoKSxkLmxlbmd0aD9kLmpvaW4oIiIpOm51bGx9cmV0 dXJuIGYueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1yPXQsZik6 cn0sZi54MD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LGYpOmV9 LGYueDE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxmKTpyfSxm Lnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49aT10LGYpOml9LGYu eTA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxmKTpufSxmLnkx PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXQsZik6aX0sZi5kZWZp bmVkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQsZik6YX0sZi5p bnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0iZnVu Y3Rpb24iPT10eXBlb2YgdD9vPXQ6KG89bGkuZ2V0KHQpfHxjaSkua2V5LGw9by5yZXZlcnNl fHxvLGM9by5jbG9zZWQ/Ik0iOiJMIixmKTpzfSxmLnRlbnNpb249ZnVuY3Rpb24odCl7cmV0 dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dCxmKTp1fSxmfWZ1bmN0aW9uIGtpKHQpe3JldHVy biB0LnNvdXJjZX1mdW5jdGlvbiBBaSh0KXtyZXR1cm4gdC50YXJnZXR9ZnVuY3Rpb24gTWko dCl7cmV0dXJuIHQucmFkaXVzfWZ1bmN0aW9uIFNpKHQpe3JldHVyblt0LngsdC55XX1mdW5j dGlvbiBFaSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1l bnRzKSxyPWVbMF0sbj1lWzFdLUV0O3JldHVybltyKk1hdGguY29zKG4pLHIqTWF0aC5zaW4o bildfX1mdW5jdGlvbiBMaSgpe3JldHVybiA2NH1mdW5jdGlvbiBDaSgpe3JldHVybiJjaXJj bGUifWZ1bmN0aW9uIFBpKHQpe3ZhciBlPU1hdGguc3FydCh0L0F0KTtyZXR1cm4iTTAsIitl KyJBIitlKyIsIitlKyIgMCAxLDEgMCwiKy1lKyJBIitlKyIsIitlKyIgMCAxLDEgMCwiK2Ur IloifXQuc3ZnLmxpbmUucmFkaWFsPWZ1bmN0aW9uKCl7dmFyIHQ9c2kod2kpO3JldHVybiB0 LnJhZGl1cz10LngsZGVsZXRlIHQueCx0LmFuZ2xlPXQueSxkZWxldGUgdC55LHR9LGZpLnJl dmVyc2U9aGksaGkucmV2ZXJzZT1maSx0LnN2Zy5hcmVhPWZ1bmN0aW9uKCl7cmV0dXJuIFRp KEMpfSx0LnN2Zy5hcmVhLnJhZGlhbD1mdW5jdGlvbigpe3ZhciB0PVRpKHdpKTtyZXR1cm4g dC5yYWRpdXM9dC54LGRlbGV0ZSB0LngsdC5pbm5lclJhZGl1cz10LngwLGRlbGV0ZSB0Lngw LHQub3V0ZXJSYWRpdXM9dC54MSxkZWxldGUgdC54MSx0LmFuZ2xlPXQueSxkZWxldGUgdC55 LHQuc3RhcnRBbmdsZT10LnkwLGRlbGV0ZSB0LnkwLHQuZW5kQW5nbGU9dC55MSxkZWxldGUg dC55MSx0fSx0LnN2Zy5jaG9yZD1mdW5jdGlvbigpe3ZhciB0PWtpLGU9QWkscj1NaSxuPWVp LGk9cmk7ZnVuY3Rpb24gYShyLG4pe3ZhciBpLGEsYz1vKHRoaXMsdCxyLG4pLHU9byh0aGlz LGUscixuKTtyZXR1cm4iTSIrYy5wMCtzKGMucixjLnAxLGMuYTEtYy5hMCkrKGE9dSwoKGk9 YykuYTA9PWEuYTAmJmkuYTE9PWEuYTE/bChjLnIsYy5wMSxjLnIsYy5wMCk6bChjLnIsYy5w MSx1LnIsdS5wMCkrcyh1LnIsdS5wMSx1LmExLXUuYTApK2wodS5yLHUucDEsYy5yLGMucDAp KSsiWiIpfWZ1bmN0aW9uIG8odCxlLGEsbyl7dmFyIHM9ZS5jYWxsKHQsYSxvKSxsPXIuY2Fs bCh0LHMsbyksYz1uLmNhbGwodCxzLG8pLUV0LHU9aS5jYWxsKHQscyxvKS1FdDtyZXR1cm57 cjpsLGEwOmMsYTE6dSxwMDpbbCpNYXRoLmNvcyhjKSxsKk1hdGguc2luKGMpXSxwMTpbbCpN YXRoLmNvcyh1KSxsKk1hdGguc2luKHUpXX19ZnVuY3Rpb24gcyh0LGUscil7cmV0dXJuIkEi K3QrIiwiK3QrIiAwICIrICsocj5BdCkrIiwxICIrZX1mdW5jdGlvbiBsKHQsZSxyLG4pe3Jl dHVybiJRIDAsMCAiK259cmV0dXJuIGEucmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1 bWVudHMubGVuZ3RoPyhyPWNlKHQpLGEpOnJ9LGEuc291cmNlPWZ1bmN0aW9uKGUpe3JldHVy biBhcmd1bWVudHMubGVuZ3RoPyh0PWNlKGUpLGEpOnR9LGEudGFyZ2V0PWZ1bmN0aW9uKHQp e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWNlKHQpLGEpOmV9LGEuc3RhcnRBbmdsZT1m dW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1jZSh0KSxhKTpufSxhLmVu ZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWNlKHQpLGEp Oml9LGF9LHQuc3ZnLmRpYWdvbmFsPWZ1bmN0aW9uKCl7dmFyIHQ9a2ksZT1BaSxyPVNpO2Z1 bmN0aW9uIG4obixpKXt2YXIgYT10LmNhbGwodGhpcyxuLGkpLG89ZS5jYWxsKHRoaXMsbixp KSxzPShhLnkrby55KS8yLGw9W2Ese3g6YS54LHk6c30se3g6by54LHk6c30sb107cmV0dXJu Ik0iKyhsPWwubWFwKHIpKVswXSsiQyIrbFsxXSsiICIrbFsyXSsiICIrbFszXX1yZXR1cm4g bi5zb3VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9Y2UoZSks bik6dH0sbi50YXJnZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9 Y2UodCksbik6ZX0sbi5wcm9qZWN0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu bGVuZ3RoPyhyPXQsbik6cn0sbn0sdC5zdmcuZGlhZ29uYWwucmFkaWFsPWZ1bmN0aW9uKCl7 dmFyIGU9dC5zdmcuZGlhZ29uYWwoKSxyPVNpLG49ZS5wcm9qZWN0aW9uO3JldHVybiBlLnBy b2plY3Rpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bihFaShyPXQp KTpyfSxlfSx0LnN2Zy5zeW1ib2w9ZnVuY3Rpb24oKXt2YXIgdD1DaSxlPUxpO2Z1bmN0aW9u IHIocixuKXtyZXR1cm4oSWkuZ2V0KHQuY2FsbCh0aGlzLHIsbikpfHxQaSkoZS5jYWxsKHRo aXMscixuKSl9cmV0dXJuIHIudHlwZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl bmd0aD8odD1jZShlKSxyKTp0fSxyLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50 cy5sZW5ndGg/KGU9Y2UodCkscik6ZX0scn07dmFyIElpPXQubWFwKHtjaXJjbGU6UGksY3Jv c3M6ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5zcXJ0KHQvNSkvMjtyZXR1cm4iTSIrLTMqZSsi LCIrLWUrIkgiKy1lKyJWIistMyplKyJIIitlKyJWIistZSsiSCIrMyplKyJWIitlKyJIIitl KyJWIiszKmUrIkgiKy1lKyJWIitlKyJIIistMyplKyJaIn0sZGlhbW9uZDpmdW5jdGlvbih0 KXt2YXIgZT1NYXRoLnNxcnQodC8oMip6aSkpLHI9ZSp6aTtyZXR1cm4iTTAsIistZSsiTCIr cisiLDAgMCwiK2UrIiAiKy1yKyIsMFoifSxzcXVhcmU6ZnVuY3Rpb24odCl7dmFyIGU9TWF0 aC5zcXJ0KHQpLzI7cmV0dXJuIk0iKy1lKyIsIistZSsiTCIrZSsiLCIrLWUrIiAiK2UrIiwi K2UrIiAiKy1lKyIsIitlKyJaIn0sInRyaWFuZ2xlLWRvd24iOmZ1bmN0aW9uKHQpe3ZhciBl PU1hdGguc3FydCh0L09pKSxyPWUqT2kvMjtyZXR1cm4iTTAsIityKyJMIitlKyIsIistcisi ICIrLWUrIiwiKy1yKyJaIn0sInRyaWFuZ2xlLXVwIjpmdW5jdGlvbih0KXt2YXIgZT1NYXRo LnNxcnQodC9PaSkscj1lKk9pLzI7cmV0dXJuIk0wLCIrLXIrIkwiK2UrIiwiK3IrIiAiKy1l KyIsIityKyJaIn19KTt0LnN2Zy5zeW1ib2xUeXBlcz1JaS5rZXlzKCk7dmFyIE9pPU1hdGgu c3FydCgzKSx6aT1NYXRoLnRhbigzMCpMdCk7WS50cmFuc2l0aW9uPWZ1bmN0aW9uKHQpe2Zv cih2YXIgZSxyLG49Qml8fCsrVWksaT1xaSh0KSxhPVtdLG89Tml8fHt0aW1lOkRhdGUubm93 KCksZWFzZTpFcixkZWxheTowLGR1cmF0aW9uOjI1MH0scz0tMSxsPXRoaXMubGVuZ3RoOysr czxsOyl7YS5wdXNoKGU9W10pO2Zvcih2YXIgYz10aGlzW3NdLHU9LTEsZj1jLmxlbmd0aDsr K3U8ZjspKHI9Y1t1XSkmJkdpKHIsdSxpLG4sbyksZS5wdXNoKHIpfXJldHVybiBGaShhLGks bil9LFkuaW50ZXJydXB0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVhY2gobnVsbD09dD9E aTpSaShxaSh0KSkpfTt2YXIgRGk9UmkocWkoKSk7ZnVuY3Rpb24gUmkodCl7cmV0dXJuIGZ1 bmN0aW9uKCl7dmFyIGUscixuOyhlPXRoaXNbdF0pJiYobj1lW3I9ZS5hY3RpdmVdKSYmKG4u dGltZXIuYz1udWxsLG4udGltZXIudD1OYU4sLS1lLmNvdW50P2RlbGV0ZSBlW3JdOmRlbGV0 ZSB0aGlzW3RdLGUuYWN0aXZlKz0uNSxuLmV2ZW50JiZuLmV2ZW50LmludGVycnVwdC5jYWxs KHRoaXMsdGhpcy5fX2RhdGFfXyxuLmluZGV4KSl9fWZ1bmN0aW9uIEZpKHQsZSxyKXtyZXR1 cm4gVSh0LGppKSx0Lm5hbWVzcGFjZT1lLHQuaWQ9cix0fXZhciBCaSxOaSxqaT1bXSxVaT0w O2Z1bmN0aW9uIFZpKHQsZSxyLG4pe3ZhciBpPXQuaWQsYT10Lm5hbWVzcGFjZTtyZXR1cm4g dXQodCwiZnVuY3Rpb24iPT10eXBlb2Ygcj9mdW5jdGlvbih0LG8scyl7dFthXVtpXS50d2Vl bi5zZXQoZSxuKHIuY2FsbCh0LHQuX19kYXRhX18sbyxzKSkpfToocj1uKHIpLGZ1bmN0aW9u KHQpe3RbYV1baV0udHdlZW4uc2V0KGUscil9KSl9ZnVuY3Rpb24gSGkodCl7cmV0dXJuIG51 bGw9PXQmJih0PSIiKSxmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19ZnVuY3Rpb24g cWkodCl7cmV0dXJuIG51bGw9PXQ/Il9fdHJhbnNpdGlvbl9fIjoiX190cmFuc2l0aW9uXyIr dCsiX18ifWZ1bmN0aW9uIEdpKHQsZSxyLG4saSl7dmFyIGEsbyxzLGwsYyx1PXRbcl18fCh0 W3JdPXthY3RpdmU6MCxjb3VudDowfSksZj11W25dO2Z1bmN0aW9uIGgocil7dmFyIGk9dS5h Y3RpdmUsaD11W2ldO2Zvcih2YXIgZCBpbiBoJiYoaC50aW1lci5jPW51bGwsaC50aW1lci50 PU5hTiwtLXUuY291bnQsZGVsZXRlIHVbaV0saC5ldmVudCYmaC5ldmVudC5pbnRlcnJ1cHQu Y2FsbCh0LHQuX19kYXRhX18saC5pbmRleCkpLHUpaWYoK2Q8bil7dmFyIG09dVtkXTttLnRp bWVyLmM9bnVsbCxtLnRpbWVyLnQ9TmFOLC0tdS5jb3VudCxkZWxldGUgdVtkXX1vLmM9cCx2 ZSgoZnVuY3Rpb24oKXtyZXR1cm4gby5jJiZwKHJ8fDEpJiYoby5jPW51bGwsby50PU5hTiks MX0pLDAsYSksdS5hY3RpdmU9bixmLmV2ZW50JiZmLmV2ZW50LnN0YXJ0LmNhbGwodCx0Ll9f ZGF0YV9fLGUpLGM9W10sZi50d2Vlbi5mb3JFYWNoKChmdW5jdGlvbihyLG4peyhuPW4uY2Fs bCh0LHQuX19kYXRhX18sZSkpJiZjLnB1c2gobil9KSksbD1mLmVhc2Uscz1mLmR1cmF0aW9u fWZ1bmN0aW9uIHAoaSl7Zm9yKHZhciBhPWkvcyxvPWwoYSksaD1jLmxlbmd0aDtoPjA7KWNb LS1oXS5jYWxsKHQsbyk7aWYoYT49MSlyZXR1cm4gZi5ldmVudCYmZi5ldmVudC5lbmQuY2Fs bCh0LHQuX19kYXRhX18sZSksLS11LmNvdW50P2RlbGV0ZSB1W25dOmRlbGV0ZSB0W3JdLDF9 Znx8KGE9aS50aW1lLG89dmUoKGZ1bmN0aW9uKHQpe3ZhciBlPWYuZGVsYXk7aWYoby50PWUr YSxlPD10KXJldHVybiBoKHQtZSk7by5jPWh9KSwwLGEpLGY9dVtuXT17dHdlZW46bmV3IF8s dGltZTphLHRpbWVyOm8sZGVsYXk6aS5kZWxheSxkdXJhdGlvbjppLmR1cmF0aW9uLGVhc2U6 aS5lYXNlLGluZGV4OmV9LGk9bnVsbCwrK3UuY291bnQpfWppLmNhbGw9WS5jYWxsLGppLmVt cHR5PVkuZW1wdHksamkubm9kZT1ZLm5vZGUsamkuc2l6ZT1ZLnNpemUsdC50cmFuc2l0aW9u PWZ1bmN0aW9uKGUscil7cmV0dXJuIGUmJmUudHJhbnNpdGlvbj9CaT9lLnRyYW5zaXRpb24o cik6ZTp0LnNlbGVjdGlvbigpLnRyYW5zaXRpb24oZSl9LHQudHJhbnNpdGlvbi5wcm90b3R5 cGU9amksamkuc2VsZWN0PWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpPXRoaXMuaWQsYT10aGlz Lm5hbWVzcGFjZSxvPVtdO3Q9Vyh0KTtmb3IodmFyIHM9LTEsbD10aGlzLmxlbmd0aDsrK3M8 bDspe28ucHVzaChlPVtdKTtmb3IodmFyIGM9dGhpc1tzXSx1PS0xLGY9Yy5sZW5ndGg7Kyt1 PGY7KShuPWNbdV0pJiYocj10LmNhbGwobixuLl9fZGF0YV9fLHUscykpPygiX19kYXRhX18i aW4gbiYmKHIuX19kYXRhX189bi5fX2RhdGFfXyksR2kocix1LGEsaSxuW2FdW2ldKSxlLnB1 c2gocikpOmUucHVzaChudWxsKX1yZXR1cm4gRmkobyxhLGkpfSxqaS5zZWxlY3RBbGw9ZnVu Y3Rpb24odCl7dmFyIGUscixuLGksYSxvPXRoaXMuaWQscz10aGlzLm5hbWVzcGFjZSxsPVtd O3Q9WCh0KTtmb3IodmFyIGM9LTEsdT10aGlzLmxlbmd0aDsrK2M8dTspZm9yKHZhciBmPXRo aXNbY10saD0tMSxwPWYubGVuZ3RoOysraDxwOylpZihuPWZbaF0pe2E9bltzXVtvXSxyPXQu Y2FsbChuLG4uX19kYXRhX18saCxjKSxsLnB1c2goZT1bXSk7Zm9yKHZhciBkPS0xLG09ci5s ZW5ndGg7KytkPG07KShpPXJbZF0pJiZHaShpLGQscyxvLGEpLGUucHVzaChpKX1yZXR1cm4g RmkobCxzLG8pfSxqaS5maWx0ZXI9ZnVuY3Rpb24odCl7dmFyIGUscixuPVtdOyJmdW5jdGlv biIhPXR5cGVvZiB0JiYodD1sdCh0KSk7Zm9yKHZhciBpPTAsYT10aGlzLmxlbmd0aDtpPGE7 aSsrKXtuLnB1c2goZT1bXSk7Zm9yKHZhciBvLHM9MCxsPShvPXRoaXNbaV0pLmxlbmd0aDtz PGw7cysrKShyPW9bc10pJiZ0LmNhbGwocixyLl9fZGF0YV9fLHMsaSkmJmUucHVzaChyKX1y ZXR1cm4gRmkobix0aGlzLm5hbWVzcGFjZSx0aGlzLmlkKX0samkudHdlZW49ZnVuY3Rpb24o dCxlKXt2YXIgcj10aGlzLmlkLG49dGhpcy5uYW1lc3BhY2U7cmV0dXJuIGFyZ3VtZW50cy5s ZW5ndGg8Mj90aGlzLm5vZGUoKVtuXVtyXS50d2Vlbi5nZXQodCk6dXQodGhpcyxudWxsPT1l P2Z1bmN0aW9uKGUpe2Vbbl1bcl0udHdlZW4ucmVtb3ZlKHQpfTpmdW5jdGlvbihpKXtpW25d W3JdLnR3ZWVuLnNldCh0LGUpfSl9LGppLmF0dHI9ZnVuY3Rpb24oZSxyKXtpZihhcmd1bWVu dHMubGVuZ3RoPDIpe2ZvcihyIGluIGUpdGhpcy5hdHRyKHIsZVtyXSk7cmV0dXJuIHRoaXN9 dmFyIG49InRyYW5zZm9ybSI9PWU/TnI6eXIsaT10Lm5zLnF1YWxpZnkoZSk7ZnVuY3Rpb24g YSgpe3RoaXMucmVtb3ZlQXR0cmlidXRlKGkpfWZ1bmN0aW9uIG8oKXt0aGlzLnJlbW92ZUF0 dHJpYnV0ZU5TKGkuc3BhY2UsaS5sb2NhbCl9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gbnVsbD09 dD9hOih0Kz0iIixmdW5jdGlvbigpe3ZhciBlLHI9dGhpcy5nZXRBdHRyaWJ1dGUoaSk7cmV0 dXJuIHIhPT10JiYoZT1uKHIsdCksZnVuY3Rpb24odCl7dGhpcy5zZXRBdHRyaWJ1dGUoaSxl KHQpKX0pfSl9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gbnVsbD09dD9vOih0Kz0iIixmdW5jdGlv bigpe3ZhciBlLHI9dGhpcy5nZXRBdHRyaWJ1dGVOUyhpLnNwYWNlLGkubG9jYWwpO3JldHVy biByIT09dCYmKGU9bihyLHQpLGZ1bmN0aW9uKHQpe3RoaXMuc2V0QXR0cmlidXRlTlMoaS5z cGFjZSxpLmxvY2FsLGUodCkpfSl9KX1yZXR1cm4gVmkodGhpcywiYXR0ci4iK2UscixpLmxv Y2FsP2w6cyl9LGppLmF0dHJUd2Vlbj1mdW5jdGlvbihlLHIpe3ZhciBuPXQubnMucXVhbGlm eShlKTtyZXR1cm4gdGhpcy50d2VlbigiYXR0ci4iK2Usbi5sb2NhbD9mdW5jdGlvbih0LGUp e3ZhciBpPXIuY2FsbCh0aGlzLHQsZSx0aGlzLmdldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5s b2NhbCkpO3JldHVybiBpJiZmdW5jdGlvbih0KXt0aGlzLnNldEF0dHJpYnV0ZU5TKG4uc3Bh Y2Usbi5sb2NhbCxpKHQpKX19OmZ1bmN0aW9uKHQsZSl7dmFyIGk9ci5jYWxsKHRoaXMsdCxl LHRoaXMuZ2V0QXR0cmlidXRlKG4pKTtyZXR1cm4gaSYmZnVuY3Rpb24odCl7dGhpcy5zZXRB dHRyaWJ1dGUobixpKHQpKX19KX0samkuc3R5bGU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWFy Z3VtZW50cy5sZW5ndGg7aWYobjwzKXtpZigic3RyaW5nIiE9dHlwZW9mIHQpe2ZvcihyIGlu IG48MiYmKGU9IiIpLHQpdGhpcy5zdHlsZShyLHRbcl0sZSk7cmV0dXJuIHRoaXN9cj0iIn1m dW5jdGlvbiBpKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX1mdW5jdGlvbiBhKGUp e3JldHVybiBudWxsPT1lP2k6KGUrPSIiLGZ1bmN0aW9uKCl7dmFyIG4saT1vKHRoaXMpLmdl dENvbXB1dGVkU3R5bGUodGhpcyxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKHQpO3JldHVybiBp IT09ZSYmKG49eXIoaSxlKSxmdW5jdGlvbihlKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQs bihlKSxyKX0pfSl9cmV0dXJuIFZpKHRoaXMsInN0eWxlLiIrdCxlLGEpfSxqaS5zdHlsZVR3 ZWVuPWZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKG4saSl7dmFyIGE9ZS5jYWxsKHRoaXMs bixpLG8odGhpcykuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLG51bGwpLmdldFByb3BlcnR5VmFs dWUodCkpO3JldHVybiBhJiZmdW5jdGlvbihlKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQs YShlKSxyKX19cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MyYmKHI9IiIpLHRoaXMudHdlZW4o InN0eWxlLiIrdCxuKX0samkudGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gVmkodGhpcywidGV4 dCIsdCxIaSl9LGppLnJlbW92ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMubmFtZXNwYWNlO3Jl dHVybiB0aGlzLmVhY2goImVuZC50cmFuc2l0aW9uIiwoZnVuY3Rpb24oKXt2YXIgZTt0aGlz W3RdLmNvdW50PDImJihlPXRoaXMucGFyZW50Tm9kZSkmJmUucmVtb3ZlQ2hpbGQodGhpcyl9 KSl9LGppLmVhc2U9ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcy5pZCxuPXRoaXMubmFtZXNwYWNl O3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDE/dGhpcy5ub2RlKClbbl1bcl0uZWFzZTooImZ1 bmN0aW9uIiE9dHlwZW9mIGUmJihlPXQuZWFzZS5hcHBseSh0LGFyZ3VtZW50cykpLHV0KHRo aXMsKGZ1bmN0aW9uKHQpe3Rbbl1bcl0uZWFzZT1lfSkpKX0samkuZGVsYXk9ZnVuY3Rpb24o dCl7dmFyIGU9dGhpcy5pZCxyPXRoaXMubmFtZXNwYWNlO3JldHVybiBhcmd1bWVudHMubGVu Z3RoPDE/dGhpcy5ub2RlKClbcl1bZV0uZGVsYXk6dXQodGhpcywiZnVuY3Rpb24iPT10eXBl b2YgdD9mdW5jdGlvbihuLGksYSl7bltyXVtlXS5kZWxheT0rdC5jYWxsKG4sbi5fX2RhdGFf XyxpLGEpfToodD0rdCxmdW5jdGlvbihuKXtuW3JdW2VdLmRlbGF5PXR9KSl9LGppLmR1cmF0 aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaWQscj10aGlzLm5hbWVzcGFjZTtyZXR1cm4g YXJndW1lbnRzLmxlbmd0aDwxP3RoaXMubm9kZSgpW3JdW2VdLmR1cmF0aW9uOnV0KHRoaXMs ImZ1bmN0aW9uIj09dHlwZW9mIHQ/ZnVuY3Rpb24obixpLGEpe25bcl1bZV0uZHVyYXRpb249 TWF0aC5tYXgoMSx0LmNhbGwobixuLl9fZGF0YV9fLGksYSkpfToodD1NYXRoLm1heCgxLHQp LGZ1bmN0aW9uKG4pe25bcl1bZV0uZHVyYXRpb249dH0pKX0samkuZWFjaD1mdW5jdGlvbihl LHIpe3ZhciBuPXRoaXMuaWQsaT10aGlzLm5hbWVzcGFjZTtpZihhcmd1bWVudHMubGVuZ3Ro PDIpe3ZhciBhPU5pLG89Qmk7dHJ5e0JpPW4sdXQodGhpcywoZnVuY3Rpb24odCxyLGEpe05p PXRbaV1bbl0sZS5jYWxsKHQsdC5fX2RhdGFfXyxyLGEpfSkpfWZpbmFsbHl7Tmk9YSxCaT1v fX1lbHNlIHV0KHRoaXMsKGZ1bmN0aW9uKGEpe3ZhciBvPWFbaV1bbl07KG8uZXZlbnR8fChv LmV2ZW50PXQuZGlzcGF0Y2goInN0YXJ0IiwiZW5kIiwiaW50ZXJydXB0IikpKS5vbihlLHIp fSkpO3JldHVybiB0aGlzfSxqaS50cmFuc2l0aW9uPWZ1bmN0aW9uKCl7Zm9yKHZhciB0LGUs cixuPXRoaXMuaWQsaT0rK1VpLGE9dGhpcy5uYW1lc3BhY2Usbz1bXSxzPTAsbD10aGlzLmxl bmd0aDtzPGw7cysrKXtvLnB1c2godD1bXSk7Zm9yKHZhciBjLHU9MCxmPShjPXRoaXNbc10p Lmxlbmd0aDt1PGY7dSsrKShlPWNbdV0pJiZHaShlLHUsYSxpLHt0aW1lOihyPWVbYV1bbl0p LnRpbWUsZWFzZTpyLmVhc2UsZGVsYXk6ci5kZWxheStyLmR1cmF0aW9uLGR1cmF0aW9uOnIu ZHVyYXRpb259KSx0LnB1c2goZSl9cmV0dXJuIEZpKG8sYSxpKX0sdC5zdmcuYXhpcz1mdW5j dGlvbigpe3ZhciBlLHI9dC5zY2FsZS5saW5lYXIoKSxpPVlpLGE9NixvPTYscz0zLGw9WzEw XSxjPW51bGw7ZnVuY3Rpb24gdShuKXtuLmVhY2goKGZ1bmN0aW9uKCl7dmFyIG4sdT10LnNl bGVjdCh0aGlzKSxmPXRoaXMuX19jaGFydF9ffHxyLGg9dGhpcy5fX2NoYXJ0X189ci5jb3B5 KCkscD1udWxsPT1jP2gudGlja3M/aC50aWNrcy5hcHBseShoLGwpOmguZG9tYWluKCk6Yyxk PW51bGw9PWU/aC50aWNrRm9ybWF0P2gudGlja0Zvcm1hdC5hcHBseShoLGwpOkM6ZSxtPXUu c2VsZWN0QWxsKCIudGljayIpLmRhdGEocCxoKSxnPW0uZW50ZXIoKS5pbnNlcnQoImciLCIu ZG9tYWluIikuYXR0cigiY2xhc3MiLCJ0aWNrIikuc3R5bGUoIm9wYWNpdHkiLGt0KSx2PXQu dHJhbnNpdGlvbihtLmV4aXQoKSkuc3R5bGUoIm9wYWNpdHkiLGt0KS5yZW1vdmUoKSx5PXQu dHJhbnNpdGlvbihtLm9yZGVyKCkpLnN0eWxlKCJvcGFjaXR5IiwxKSx4PU1hdGgubWF4KGEs MCkrcyxiPURuKGgpLF89dS5zZWxlY3RBbGwoIi5kb21haW4iKS5kYXRhKFswXSksdz0oXy5l bnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwiZG9tYWluIiksdC50cmFuc2l0 aW9uKF8pKTtnLmFwcGVuZCgibGluZSIpLGcuYXBwZW5kKCJ0ZXh0Iik7dmFyIFQsayxBLE0s Uz1nLnNlbGVjdCgibGluZSIpLEU9eS5zZWxlY3QoImxpbmUiKSxMPW0uc2VsZWN0KCJ0ZXh0 IikudGV4dChkKSxQPWcuc2VsZWN0KCJ0ZXh0IiksST15LnNlbGVjdCgidGV4dCIpLE89InRv cCI9PT1pfHwibGVmdCI9PT1pPy0xOjE7aWYoImJvdHRvbSI9PT1pfHwidG9wIj09PWk/KG49 WGksVD0ieCIsQT0ieSIsaz0ieDIiLE09InkyIixMLmF0dHIoImR5IixPPDA/IjBlbSI6Ii43 MWVtIikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIiksdy5hdHRyKCJkIiwiTSIrYlsw XSsiLCIrTypvKyJWMEgiK2JbMV0rIlYiK08qbykpOihuPVppLFQ9InkiLEE9IngiLGs9Inky IixNPSJ4MiIsTC5hdHRyKCJkeSIsIi4zMmVtIikuc3R5bGUoInRleHQtYW5jaG9yIixPPDA/ ImVuZCI6InN0YXJ0Iiksdy5hdHRyKCJkIiwiTSIrTypvKyIsIitiWzBdKyJIMFYiK2JbMV0r IkgiK08qbykpLFMuYXR0cihNLE8qYSksUC5hdHRyKEEsTyp4KSxFLmF0dHIoaywwKS5hdHRy KE0sTyphKSxJLmF0dHIoVCwwKS5hdHRyKEEsTyp4KSxoLnJhbmdlQmFuZCl7dmFyIHo9aCxE PXoucmFuZ2VCYW5kKCkvMjtmPWg9ZnVuY3Rpb24odCl7cmV0dXJuIHoodCkrRH19ZWxzZSBm LnJhbmdlQmFuZD9mPWg6di5jYWxsKG4saCxmKTtnLmNhbGwobixmLGgpLHkuY2FsbChuLGgs aCl9KSl9cmV0dXJuIHUuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n dGg/KHI9dCx1KTpyfSx1Lm9yaWVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl bmd0aD8oaT10IGluIFdpP3QrIiI6WWksdSk6aX0sdS50aWNrcz1mdW5jdGlvbigpe3JldHVy biBhcmd1bWVudHMubGVuZ3RoPyhsPW4oYXJndW1lbnRzKSx1KTpsfSx1LnRpY2tWYWx1ZXM9 ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9dCx1KTpjfSx1LnRpY2tG b3JtYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCx1KTplfSx1 LnRpY2tTaXplPWZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg7cmV0dXJuIGU/ KGE9K3Qsbz0rYXJndW1lbnRzW2UtMV0sdSk6YX0sdS5pbm5lclRpY2tTaXplPWZ1bmN0aW9u KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSt0LHUpOmF9LHUub3V0ZXJUaWNrU2l6 ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0rdCx1KTpvfSx1LnRp Y2tQYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSt0LHUp OnN9LHUudGlja1N1YmRpdmlkZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro JiZ1fSx1fTt2YXIgWWk9ImJvdHRvbSIsV2k9e3RvcDoxLHJpZ2h0OjEsYm90dG9tOjEsbGVm dDoxfTtmdW5jdGlvbiBYaSh0LGUscil7dC5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0 KXt2YXIgbj1lKHQpO3JldHVybiJ0cmFuc2xhdGUoIisoaXNGaW5pdGUobik/bjpyKHQpKSsi LDApIn0pKX1mdW5jdGlvbiBaaSh0LGUscil7dC5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlv bih0KXt2YXIgbj1lKHQpO3JldHVybiJ0cmFuc2xhdGUoMCwiKyhpc0Zpbml0ZShuKT9uOnIo dCkpKyIpIn0pKX10LnN2Zy5icnVzaD1mdW5jdGlvbigpe3ZhciBlLHIsbj1OKGgsImJydXNo c3RhcnQiLCJicnVzaCIsImJydXNoZW5kIiksaT1udWxsLGE9bnVsbCxzPVswLDBdLGw9WzAs MF0sYz0hMCx1PSEwLGY9S2lbMF07ZnVuY3Rpb24gaChlKXtlLmVhY2goKGZ1bmN0aW9uKCl7 dmFyIGU9dC5zZWxlY3QodGhpcykuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuc3R5 bGUoIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIsInJnYmEoMCwwLDAsMCkiKS5vbigi bW91c2Vkb3duLmJydXNoIixnKS5vbigidG91Y2hzdGFydC5icnVzaCIsZykscj1lLnNlbGVj dEFsbCgiLmJhY2tncm91bmQiKS5kYXRhKFswXSk7ci5lbnRlcigpLmFwcGVuZCgicmVjdCIp LmF0dHIoImNsYXNzIiwiYmFja2dyb3VuZCIpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVu Iikuc3R5bGUoImN1cnNvciIsImNyb3NzaGFpciIpLGUuc2VsZWN0QWxsKCIuZXh0ZW50Iiku ZGF0YShbMF0pLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJleHRlbnQi KS5zdHlsZSgiY3Vyc29yIiwibW92ZSIpO3ZhciBuPWUuc2VsZWN0QWxsKCIucmVzaXplIiku ZGF0YShmLEMpO24uZXhpdCgpLnJlbW92ZSgpLG4uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRy KCJjbGFzcyIsKGZ1bmN0aW9uKHQpe3JldHVybiJyZXNpemUgIit0fSkpLnN0eWxlKCJjdXJz b3IiLChmdW5jdGlvbih0KXtyZXR1cm4gSmlbdF19KSkuYXBwZW5kKCJyZWN0IikuYXR0cigi eCIsKGZ1bmN0aW9uKHQpe3JldHVybi9bZXddJC8udGVzdCh0KT8tMzpudWxsfSkpLmF0dHIo InkiLChmdW5jdGlvbih0KXtyZXR1cm4vXltuc10vLnRlc3QodCk/LTM6bnVsbH0pKS5hdHRy KCJ3aWR0aCIsNikuYXR0cigiaGVpZ2h0Iiw2KS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRl biIpLG4uc3R5bGUoImRpc3BsYXkiLGguZW1wdHkoKT8ibm9uZSI6bnVsbCk7dmFyIG8scz10 LnRyYW5zaXRpb24oZSksbD10LnRyYW5zaXRpb24ocik7aSYmKG89RG4oaSksbC5hdHRyKCJ4 IixvWzBdKS5hdHRyKCJ3aWR0aCIsb1sxXS1vWzBdKSxkKHMpKSxhJiYobz1EbihhKSxsLmF0 dHIoInkiLG9bMF0pLmF0dHIoImhlaWdodCIsb1sxXS1vWzBdKSxtKHMpKSxwKHMpfSkpfWZ1 bmN0aW9uIHAodCl7dC5zZWxlY3RBbGwoIi5yZXNpemUiKS5hdHRyKCJ0cmFuc2Zvcm0iLChm dW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKCIrc1srL2UkLy50ZXN0KHQpXSsiLCIrbFsr L15zLy50ZXN0KHQpXSsiKSJ9KSl9ZnVuY3Rpb24gZCh0KXt0LnNlbGVjdCgiLmV4dGVudCIp LmF0dHIoIngiLHNbMF0pLHQuc2VsZWN0QWxsKCIuZXh0ZW50LC5uPnJlY3QsLnM+cmVjdCIp LmF0dHIoIndpZHRoIixzWzFdLXNbMF0pfWZ1bmN0aW9uIG0odCl7dC5zZWxlY3QoIi5leHRl bnQiKS5hdHRyKCJ5IixsWzBdKSx0LnNlbGVjdEFsbCgiLmV4dGVudCwuZT5yZWN0LC53PnJl Y3QiKS5hdHRyKCJoZWlnaHQiLGxbMV0tbFswXSl9ZnVuY3Rpb24gZygpe3ZhciBmLGcsdj10 aGlzLHk9dC5zZWxlY3QodC5ldmVudC50YXJnZXQpLHg9bi5vZih2LGFyZ3VtZW50cyksYj10 LnNlbGVjdCh2KSxfPXkuZGF0dW0oKSx3PSEvXihufHMpJC8udGVzdChfKSYmaSxUPSEvXihl fHcpJC8udGVzdChfKSYmYSxrPXkuY2xhc3NlZCgiZXh0ZW50IiksQT1idCh2KSxNPXQubW91 c2UodiksUz10LnNlbGVjdChvKHYpKS5vbigia2V5ZG93bi5icnVzaCIsQykub24oImtleXVw LmJydXNoIixQKTtpZih0LmV2ZW50LmNoYW5nZWRUb3VjaGVzP1Mub24oInRvdWNobW92ZS5i cnVzaCIsSSkub24oInRvdWNoZW5kLmJydXNoIix6KTpTLm9uKCJtb3VzZW1vdmUuYnJ1c2gi LEkpLm9uKCJtb3VzZXVwLmJydXNoIix6KSxiLmludGVycnVwdCgpLnNlbGVjdEFsbCgiKiIp LmludGVycnVwdCgpLGspTVswXT1zWzBdLU1bMF0sTVsxXT1sWzBdLU1bMV07ZWxzZSBpZihf KXt2YXIgRT0rL3ckLy50ZXN0KF8pLEw9Ky9ebi8udGVzdChfKTtnPVtzWzEtRV0tTVswXSxs WzEtTF0tTVsxXV0sTVswXT1zW0VdLE1bMV09bFtMXX1lbHNlIHQuZXZlbnQuYWx0S2V5JiYo Zj1NLnNsaWNlKCkpO2Z1bmN0aW9uIEMoKXszMj09dC5ldmVudC5rZXlDb2RlJiYoa3x8KGY9 bnVsbCxNWzBdLT1zWzFdLE1bMV0tPWxbMV0saz0yKSxGKCkpfWZ1bmN0aW9uIFAoKXszMj09 dC5ldmVudC5rZXlDb2RlJiYyPT1rJiYoTVswXSs9c1sxXSxNWzFdKz1sWzFdLGs9MCxGKCkp fWZ1bmN0aW9uIEkoKXt2YXIgZT10Lm1vdXNlKHYpLHI9ITE7ZyYmKGVbMF0rPWdbMF0sZVsx XSs9Z1sxXSksa3x8KHQuZXZlbnQuYWx0S2V5PyhmfHwoZj1bKHNbMF0rc1sxXSkvMiwobFsw XStsWzFdKS8yXSksTVswXT1zWysoZVswXTxmWzBdKV0sTVsxXT1sWysoZVsxXTxmWzFdKV0p OmY9bnVsbCksdyYmTyhlLGksMCkmJihkKGIpLHI9ITApLFQmJk8oZSxhLDEpJiYobShiKSxy PSEwKSxyJiYocChiKSx4KHt0eXBlOiJicnVzaCIsbW9kZTprPyJtb3ZlIjoicmVzaXplIn0p KX1mdW5jdGlvbiBPKHQsbixpKXt2YXIgYSxvLGg9RG4obikscD1oWzBdLGQ9aFsxXSxtPU1b aV0sZz1pP2w6cyx2PWdbMV0tZ1swXTtpZihrJiYocC09bSxkLT12K20pLGE9KGk/dTpjKT9N YXRoLm1heChwLE1hdGgubWluKGQsdFtpXSkpOnRbaV0saz9vPShhKz1tKSt2OihmJiYobT1N YXRoLm1heChwLE1hdGgubWluKGQsMipmW2ldLWEpKSksbTxhPyhvPWEsYT1tKTpvPW0pLGdb MF0hPWF8fGdbMV0hPW8pcmV0dXJuIGk/cj1udWxsOmU9bnVsbCxnWzBdPWEsZ1sxXT1vLCEw fWZ1bmN0aW9uIHooKXtJKCksYi5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwiKS5zZWxl Y3RBbGwoIi5yZXNpemUiKS5zdHlsZSgiZGlzcGxheSIsaC5lbXB0eSgpPyJub25lIjpudWxs KSx0LnNlbGVjdCgiYm9keSIpLnN0eWxlKCJjdXJzb3IiLG51bGwpLFMub24oIm1vdXNlbW92 ZS5icnVzaCIsbnVsbCkub24oIm1vdXNldXAuYnJ1c2giLG51bGwpLm9uKCJ0b3VjaG1vdmUu YnJ1c2giLG51bGwpLm9uKCJ0b3VjaGVuZC5icnVzaCIsbnVsbCkub24oImtleWRvd24uYnJ1 c2giLG51bGwpLm9uKCJrZXl1cC5icnVzaCIsbnVsbCksQSgpLHgoe3R5cGU6ImJydXNoZW5k In0pfWIuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpLnNlbGVjdEFsbCgiLnJlc2l6 ZSIpLnN0eWxlKCJkaXNwbGF5IixudWxsKSx0LnNlbGVjdCgiYm9keSIpLnN0eWxlKCJjdXJz b3IiLHkuc3R5bGUoImN1cnNvciIpKSx4KHt0eXBlOiJicnVzaHN0YXJ0In0pLEkoKX1yZXR1 cm4gaC5ldmVudD1mdW5jdGlvbihpKXtpLmVhY2goKGZ1bmN0aW9uKCl7dmFyIGk9bi5vZih0 aGlzLGFyZ3VtZW50cyksYT17eDpzLHk6bCxpOmUsajpyfSxvPXRoaXMuX19jaGFydF9ffHxh O3RoaXMuX19jaGFydF9fPWEsQmk/dC5zZWxlY3QodGhpcykudHJhbnNpdGlvbigpLmVhY2go InN0YXJ0LmJydXNoIiwoZnVuY3Rpb24oKXtlPW8uaSxyPW8uaixzPW8ueCxsPW8ueSxpKHt0 eXBlOiJicnVzaHN0YXJ0In0pfSkpLnR3ZWVuKCJicnVzaDpicnVzaCIsKGZ1bmN0aW9uKCl7 dmFyIHQ9eHIocyxhLngpLG49eHIobCxhLnkpO3JldHVybiBlPXI9bnVsbCxmdW5jdGlvbihl KXtzPWEueD10KGUpLGw9YS55PW4oZSksaSh7dHlwZToiYnJ1c2giLG1vZGU6InJlc2l6ZSJ9 KX19KSkuZWFjaCgiZW5kLmJydXNoIiwoZnVuY3Rpb24oKXtlPWEuaSxyPWEuaixpKHt0eXBl OiJicnVzaCIsbW9kZToicmVzaXplIn0pLGkoe3R5cGU6ImJydXNoZW5kIn0pfSkpOihpKHt0 eXBlOiJicnVzaHN0YXJ0In0pLGkoe3R5cGU6ImJydXNoIixtb2RlOiJyZXNpemUifSksaSh7 dHlwZToiYnJ1c2hlbmQifSkpfSkpfSxoLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50 cy5sZW5ndGg/KGY9S2lbIShpPXQpPDwxfCFhXSxoKTppfSxoLnk9ZnVuY3Rpb24odCl7cmV0 dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9S2lbIWk8PDF8IShhPXQpXSxoKTphfSxoLmNsYW1w PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpJiZhPyhjPSEhdFswXSx1 PSEhdFsxXSk6aT9jPSEhdDphJiYodT0hIXQpLGgpOmkmJmE/W2MsdV06aT9jOmE/dTpudWxs fSxoLmV4dGVudD1mdW5jdGlvbih0KXt2YXIgbixvLGMsdSxmO3JldHVybiBhcmd1bWVudHMu bGVuZ3RoPyhpJiYobj10WzBdLG89dFsxXSxhJiYobj1uWzBdLG89b1swXSksZT1bbixvXSxp LmludmVydCYmKG49aShuKSxvPWkobykpLG88biYmKGY9bixuPW8sbz1mKSxuPT1zWzBdJiZv PT1zWzFdfHwocz1bbixvXSkpLGEmJihjPXRbMF0sdT10WzFdLGkmJihjPWNbMV0sdT11WzFd KSxyPVtjLHVdLGEuaW52ZXJ0JiYoYz1hKGMpLHU9YSh1KSksdTxjJiYoZj1jLGM9dSx1PWYp LGM9PWxbMF0mJnU9PWxbMV18fChsPVtjLHVdKSksaCk6KGkmJihlPyhuPWVbMF0sbz1lWzFd KToobj1zWzBdLG89c1sxXSxpLmludmVydCYmKG49aS5pbnZlcnQobiksbz1pLmludmVydChv KSksbzxuJiYoZj1uLG49byxvPWYpKSksYSYmKHI/KGM9clswXSx1PXJbMV0pOihjPWxbMF0s dT1sWzFdLGEuaW52ZXJ0JiYoYz1hLmludmVydChjKSx1PWEuaW52ZXJ0KHUpKSx1PGMmJihm PWMsYz11LHU9ZikpKSxpJiZhP1tbbixjXSxbbyx1XV06aT9bbixvXTphJiZbYyx1XSl9LGgu Y2xlYXI9ZnVuY3Rpb24oKXtyZXR1cm4gaC5lbXB0eSgpfHwocz1bMCwwXSxsPVswLDBdLGU9 cj1udWxsKSxofSxoLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuISFpJiZzWzBdPT1zWzFdfHwh IWEmJmxbMF09PWxbMV19LHQucmViaW5kKGgsbiwib24iKX07dmFyIEppPXtuOiJucy1yZXNp emUiLGU6ImV3LXJlc2l6ZSIsczoibnMtcmVzaXplIix3OiJldy1yZXNpemUiLG53OiJud3Nl LXJlc2l6ZSIsbmU6Im5lc3ctcmVzaXplIixzZToibndzZS1yZXNpemUiLHN3OiJuZXN3LXJl c2l6ZSJ9LEtpPVtbIm4iLCJlIiwicyIsInciLCJudyIsIm5lIiwic2UiLCJzdyJdLFsiZSIs InciXSxbIm4iLCJzIl0sW11dO2Z1bmN0aW9uIFFpKHQpe3JldHVybiBKU09OLnBhcnNlKHQu cmVzcG9uc2VUZXh0KX1mdW5jdGlvbiAkaSh0KXt2YXIgZT1pLmNyZWF0ZVJhbmdlKCk7cmV0 dXJuIGUuc2VsZWN0Tm9kZShpLmJvZHkpLGUuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KHQu cmVzcG9uc2VUZXh0KX10LnRleHQ9dWUoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlc3BvbnNl VGV4dH0pKSx0Lmpzb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gZmUodCwiYXBwbGljYXRpb24v anNvbiIsUWksZSl9LHQuaHRtbD1mdW5jdGlvbih0LGUpe3JldHVybiBmZSh0LCJ0ZXh0L2h0 bWwiLCRpLGUpfSx0LnhtbD11ZSgoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVzcG9uc2VYTUx9 KSksIm9iamVjdCI9PXR5cGVvZiBlJiZlLmV4cG9ydHM/ZS5leHBvcnRzPXQ6dGhpcy5kMz10 fSkuYXBwbHkoc2VsZil9LHt9XSw1OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijtl LmV4cG9ydHM9dCgiLi9xdWFkIil9LHsiLi9xdWFkIjo2MH1dLDYwOltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImJpbmFyeS1zZWFyY2gtYm91bmRzIiksaT10KCJj bGFtcCIpLGE9dCgicGFyc2UtcmVjdCIpLG89dCgiYXJyYXktYm91bmRzIikscz10KCJwaWNr LWJ5LWFsaWFzIiksbD10KCJkZWZpbmVkIiksYz10KCJmbGF0dGVuLXZlcnRleC1kYXRhIiks dT10KCJpcy1vYmoiKSxmPXQoImR0eXBlIiksaD10KCJtYXRoLWxvZzIiKTtmdW5jdGlvbiBw KHQsZSl7Zm9yKHZhciByPWVbMF0sbj1lWzFdLGE9MS8oZVsyXS1yKSxvPTEvKGVbM10tbiks cz1uZXcgQXJyYXkodC5sZW5ndGgpLGw9MCxjPXQubGVuZ3RoLzI7bDxjO2wrKylzWzIqbF09 aSgodFsyKmxdLXIpKmEsMCwxKSxzWzIqbCsxXT1pKCh0WzIqbCsxXS1uKSpvLDAsMSk7cmV0 dXJuIHN9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZXx8KGU9e30pLHQ9Yyh0LCJmbG9hdDY0 IiksZT1zKGUse2JvdW5kczoicmFuZ2UgYm91bmRzIGRhdGFCb3ggZGF0YWJveCIsbWF4RGVw dGg6ImRlcHRoIG1heERlcHRoIG1heGRlcHRoIGxldmVsIG1heExldmVsIG1heGxldmVsIGxl dmVscyIsZHR5cGU6InR5cGUgZHR5cGUgZm9ybWF0IG91dCBkc3Qgb3V0cHV0IGRlc3RpbmF0 aW9uIn0pO3ZhciByPWwoZS5tYXhEZXB0aCwyNTUpLGk9bChlLmJvdW5kcyxvKHQsMikpO2lb MF09PT1pWzJdJiZpWzJdKyssaVsxXT09PWlbM10mJmlbM10rKzt2YXIgZCxtPXAodCxpKSxn PXQubGVuZ3RoPj4+MTtlLmR0eXBlfHwoZS5kdHlwZT0iYXJyYXkiKSwic3RyaW5nIj09dHlw ZW9mIGUuZHR5cGU/ZD1uZXcoZihlLmR0eXBlKSkoZyk6ZS5kdHlwZSYmKGQ9ZS5kdHlwZSxB cnJheS5pc0FycmF5KGQpJiYoZC5sZW5ndGg9ZykpO2Zvcih2YXIgdj0wO3Y8ZzsrK3YpZFt2 XT12O3ZhciB5PVtdLHg9W10sYj1bXSxfPVtdOyFmdW5jdGlvbiB0KGUsbixpLGEsbyxzKXtp ZighYS5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIGw9eVtvXXx8KHlbb109W10pLGM9YltvXXx8 KGJbb109W10pLHU9eFtvXXx8KHhbb109W10pLGY9bC5sZW5ndGg7aWYoKytvPnJ8fHM+MTA3 Mzc0MTgyNCl7Zm9yKHZhciBoPTA7aDxhLmxlbmd0aDtoKyspbC5wdXNoKGFbaF0pLGMucHVz aChzKSx1LnB1c2gobnVsbCxudWxsLG51bGwsbnVsbCk7cmV0dXJuIGZ9aWYobC5wdXNoKGFb MF0pLGMucHVzaChzKSxhLmxlbmd0aDw9MSlyZXR1cm4gdS5wdXNoKG51bGwsbnVsbCxudWxs LG51bGwpLGY7Zm9yKHZhciBwPS41KmksZD1lK3AsZz1uK3Asdj1bXSxfPVtdLHc9W10sVD1b XSxrPTEsQT1hLmxlbmd0aDtrPEE7aysrKXt2YXIgTT1hW2tdLFM9bVsyKk1dLEU9bVsyKk0r MV07UzxkP0U8Zz92LnB1c2goTSk6Xy5wdXNoKE0pOkU8Zz93LnB1c2goTSk6VC5wdXNoKE0p fXJldHVybiBzPDw9Mix1LnB1c2godChlLG4scCx2LG8scyksdChlLGcscCxfLG8scysxKSx0 KGQsbixwLHcsbyxzKzIpLHQoZCxnLHAsVCxvLHMrMykpLGZ9KDAsMCwxLGQsMCwxKTtmb3Io dmFyIHc9MCxUPTA7VDx5Lmxlbmd0aDtUKyspe3ZhciBrPXlbVF07aWYoZC5zZXQpZC5zZXQo ayx3KTtlbHNlIGZvcih2YXIgQT0wLE09ay5sZW5ndGg7QTxNO0ErKylkW0Erd109a1tBXTt2 YXIgUz13K3lbVF0ubGVuZ3RoO19bVF09W3csU10sdz1TfXJldHVybiBkLnJhbmdlPWZ1bmN0 aW9uKCl7dmFyIGUscj1bXSxuPWFyZ3VtZW50cy5sZW5ndGg7Zm9yKDtuLS07KXJbbl09YXJn dW1lbnRzW25dO2lmKHUocltyLmxlbmd0aC0xXSkpe3ZhciBvPXIucG9wKCk7ci5sZW5ndGh8 fG51bGw9PW8ueCYmbnVsbD09by5sJiZudWxsPT1vLmxlZnR8fChyPVtvXSxlPXt9KSxlPXMo byx7bGV2ZWw6ImxldmVsIG1heExldmVsIixkOiJkIGRpYW0gZGlhbWV0ZXIgciByYWRpdXMg cHggcHhTaXplIHBpeGVsIHBpeGVsU2l6ZSBtYXhEIHNpemUgbWluU2l6ZSIsbG9kOiJsb2Qg ZGV0YWlscyByYW5nZXMgb2Zmc2V0cyJ9KX1lbHNlIGU9e307ci5sZW5ndGh8fChyPWkpO3Zh ciBjPWEuYXBwbHkodm9pZCAwLHIpLGY9W01hdGgubWluKGMueCxjLngrYy53aWR0aCksTWF0 aC5taW4oYy55LGMueStjLmhlaWdodCksTWF0aC5tYXgoYy54LGMueCtjLndpZHRoKSxNYXRo Lm1heChjLnksYy55K2MuaGVpZ2h0KV0sZD1mWzBdLG09ZlsxXSxnPWZbMl0sdj1mWzNdLGI9 cChbZCxtLGcsdl0saSksXz1iWzBdLHc9YlsxXSxUPWJbMl0saz1iWzNdLEE9bChlLmxldmVs LHkubGVuZ3RoKTtpZihudWxsIT1lLmQpe3ZhciBNOyJudW1iZXIiPT10eXBlb2YgZS5kP009 W2UuZCxlLmRdOmUuZC5sZW5ndGgmJihNPWUuZCksQT1NYXRoLm1pbihNYXRoLm1heChNYXRo LmNlaWwoLWgoTWF0aC5hYnMoTVswXSkvKGlbMl0taVswXSkpKSxNYXRoLmNlaWwoLWgoTWF0 aC5hYnMoTVsxXSkvKGlbM10taVsxXSkpKSksQSl9aWYoQT1NYXRoLm1pbihBLHkubGVuZ3Ro KSxlLmxvZClyZXR1cm4gRShfLHcsVCxrLEEpO3ZhciBTPVtdO2Z1bmN0aW9uIEwoZSxyLG4s aSxhLG8pe2lmKG51bGwhPT1hJiZudWxsIT09byYmIShfPmUrbnx8dz5yK258fFQ8ZXx8azxy fHxpPj1BfHxhPT09bykpe3ZhciBzPXlbaV07dm9pZCAwPT09byYmKG89cy5sZW5ndGgpO2Zv cih2YXIgbD1hO2w8bztsKyspe3ZhciBjPXNbbF0sdT10WzIqY10sZj10WzIqYysxXTt1Pj1k JiZ1PD1nJiZmPj1tJiZmPD12JiZTLnB1c2goYyl9dmFyIGg9eFtpXSxwPWhbNCphKzBdLGI9 aFs0KmErMV0sTT1oWzQqYSsyXSxFPWhbNCphKzNdLFA9QyhoLGErMSksST0uNSpuLE89aSsx O0woZSxyLEksTyxwLGJ8fE18fEV8fFApLEwoZSxyK0ksSSxPLGIsTXx8RXx8UCksTChlK0ks cixJLE8sTSxFfHxQKSxMKGUrSSxyK0ksSSxPLEUsUCl9fWZ1bmN0aW9uIEModCxlKXtmb3Io dmFyIHI9bnVsbCxuPTA7bnVsbD09PXI7KWlmKHI9dFs0KmUrbl0sKytuPnQubGVuZ3RoKXJl dHVybiBudWxsO3JldHVybiByfXJldHVybiBMKDAsMCwxLDAsMCwxKSxTfSxkO2Z1bmN0aW9u IEUodCxlLHIsaSxhKXtmb3IodmFyIG89W10scz0wO3M8YTtzKyspe3ZhciBsPWJbc10sYz1f W3NdWzBdLHU9TCh0LGUscyksZj1MKHIsaSxzKSxoPW4uZ2UobCx1KSxwPW4uZ3QobCxmLGgs bC5sZW5ndGgtMSk7b1tzXT1baCtjLHArY119cmV0dXJuIG99ZnVuY3Rpb24gTCh0LGUscil7 Zm9yKHZhciBuPTEsaT0uNSxhPS41LG89LjUscz0wO3M8cjtzKyspbjw8PTIsbis9dDxpP2U8 YT8wOjE6ZTxhPzI6MyxvKj0uNSxpKz10PGk/LW86byxhKz1lPGE/LW86bztyZXR1cm4gbn19 fSx7ImFycmF5LWJvdW5kcyI6NzEsImJpbmFyeS1zZWFyY2gtYm91bmRzIjo4MCxjbGFtcDo4 NixkZWZpbmVkOjEyNCxkdHlwZToxMjcsImZsYXR0ZW4tdmVydGV4LWRhdGEiOjE5MSwiaXMt b2JqIjoyMzUsIm1hdGgtbG9nMiI6MjQwLCJwYXJzZS1yZWN0IjoyNDksInBpY2stYnktYWxp YXMiOjI1M31dLDYxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZp bmVQcm9wZXJ0eShyLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj10KCJAdHVyZi9t ZXRhIik7ZnVuY3Rpb24gaSh0KXt2YXIgZT0wO2lmKHQmJnQubGVuZ3RoPjApe2UrPU1hdGgu YWJzKGEodFswXSkpO2Zvcih2YXIgcj0xO3I8dC5sZW5ndGg7cisrKWUtPU1hdGguYWJzKGEo dFtyXSkpfXJldHVybiBlfWZ1bmN0aW9uIGEodCl7dmFyIGUscixuLGksYSxzLGw9MCxjPXQu bGVuZ3RoO2lmKGM+Mil7Zm9yKHM9MDtzPGM7cysrKXM9PT1jLTI/KG49Yy0yLGk9Yy0xLGE9 MCk6cz09PWMtMT8obj1jLTEsaT0wLGE9MSk6KG49cyxpPXMrMSxhPXMrMiksZT10W25dLHI9 dFtpXSxsKz0obyh0W2FdWzBdKS1vKGVbMF0pKSpNYXRoLnNpbihvKHJbMV0pKTtsPTYzNzgx MzcqbCo2Mzc4MTM3LzJ9cmV0dXJuIGx9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCpNYXRoLlBJ LzE4MH1yLmRlZmF1bHQ9ZnVuY3Rpb24odCl7cmV0dXJuIG4uZ2VvbVJlZHVjZSh0LChmdW5j dGlvbih0LGUpe3JldHVybiB0K2Z1bmN0aW9uKHQpe3ZhciBlLHI9MDtzd2l0Y2godC50eXBl KXtjYXNlIlBvbHlnb24iOnJldHVybiBpKHQuY29vcmRpbmF0ZXMpO2Nhc2UiTXVsdGlQb2x5 Z29uIjpmb3IoZT0wO2U8dC5jb29yZGluYXRlcy5sZW5ndGg7ZSsrKXIrPWkodC5jb29yZGlu YXRlc1tlXSk7cmV0dXJuIHI7Y2FzZSJQb2ludCI6Y2FzZSJNdWx0aVBvaW50IjpjYXNlIkxp bmVTdHJpbmciOmNhc2UiTXVsdGlMaW5lU3RyaW5nIjpyZXR1cm4gMH1yZXR1cm4gMH0oZSl9 KSwwKX19LHsiQHR1cmYvbWV0YSI6NjN9XSw2MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0IjtmdW5jdGlvbiBuKHQsZSxyKXt2b2lkIDA9PT1yJiYocj17fSk7dmFyIG49e3R5cGU6 IkZlYXR1cmUifTtyZXR1cm4oMD09PXIuaWR8fHIuaWQpJiYobi5pZD1yLmlkKSxyLmJib3gm JihuLmJib3g9ci5iYm94KSxuLnByb3BlcnRpZXM9ZXx8e30sbi5nZW9tZXRyeT10LG59ZnVu Y3Rpb24gaSh0LGUscil7aWYodm9pZCAwPT09ciYmKHI9e30pLCF0KXRocm93IG5ldyBFcnJv cigiY29vcmRpbmF0ZXMgaXMgcmVxdWlyZWQiKTtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJv dyBuZXcgRXJyb3IoImNvb3JkaW5hdGVzIG11c3QgYmUgYW4gQXJyYXkiKTtpZih0Lmxlbmd0 aDwyKXRocm93IG5ldyBFcnJvcigiY29vcmRpbmF0ZXMgbXVzdCBiZSBhdCBsZWFzdCAyIG51 bWJlcnMgbG9uZyIpO2lmKCFkKHRbMF0pfHwhZCh0WzFdKSl0aHJvdyBuZXcgRXJyb3IoImNv b3JkaW5hdGVzIG11c3QgY29udGFpbiBudW1iZXJzIik7cmV0dXJuIG4oe3R5cGU6IlBvaW50 Iixjb29yZGluYXRlczp0fSxlLHIpfWZ1bmN0aW9uIGEodCxlLHIpe3ZvaWQgMD09PXImJihy PXt9KTtmb3IodmFyIGk9MCxhPXQ7aTxhLmxlbmd0aDtpKyspe3ZhciBvPWFbaV07aWYoby5s ZW5ndGg8NCl0aHJvdyBuZXcgRXJyb3IoIkVhY2ggTGluZWFyUmluZyBvZiBhIFBvbHlnb24g bXVzdCBoYXZlIDQgb3IgbW9yZSBQb3NpdGlvbnMuIik7Zm9yKHZhciBzPTA7czxvW28ubGVu Z3RoLTFdLmxlbmd0aDtzKyspaWYob1tvLmxlbmd0aC0xXVtzXSE9PW9bMF1bc10pdGhyb3cg bmV3IEVycm9yKCJGaXJzdCBhbmQgbGFzdCBQb3NpdGlvbiBhcmUgbm90IGVxdWl2YWxlbnQu Iil9cmV0dXJuIG4oe3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOnR9LGUscil9ZnVuY3Rp b24gbyh0LGUscil7aWYodm9pZCAwPT09ciYmKHI9e30pLHQubGVuZ3RoPDIpdGhyb3cgbmV3 IEVycm9yKCJjb29yZGluYXRlcyBtdXN0IGJlIGFuIGFycmF5IG9mIHR3byBvciBtb3JlIHBv c2l0aW9ucyIpO3JldHVybiBuKHt0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczp0fSxl LHIpfWZ1bmN0aW9uIHModCxlKXt2b2lkIDA9PT1lJiYoZT17fSk7dmFyIHI9e3R5cGU6IkZl YXR1cmVDb2xsZWN0aW9uIn07cmV0dXJuIGUuaWQmJihyLmlkPWUuaWQpLGUuYmJveCYmKHIu YmJveD1lLmJib3gpLHIuZmVhdHVyZXM9dCxyfWZ1bmN0aW9uIGwodCxlLHIpe3JldHVybiB2 b2lkIDA9PT1yJiYocj17fSksbih7dHlwZToiTXVsdGlMaW5lU3RyaW5nIixjb29yZGluYXRl czp0fSxlLHIpfWZ1bmN0aW9uIGModCxlLHIpe3JldHVybiB2b2lkIDA9PT1yJiYocj17fSks bih7dHlwZToiTXVsdGlQb2ludCIsY29vcmRpbmF0ZXM6dH0sZSxyKX1mdW5jdGlvbiB1KHQs ZSxyKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9e30pLG4oe3R5cGU6Ik11bHRpUG9seWdvbiIs Y29vcmRpbmF0ZXM6dH0sZSxyKX1mdW5jdGlvbiBmKHQsZSl7dm9pZCAwPT09ZSYmKGU9Imtp bG9tZXRlcnMiKTt2YXIgbj1yLmZhY3RvcnNbZV07aWYoIW4pdGhyb3cgbmV3IEVycm9yKGUr IiB1bml0cyBpcyBpbnZhbGlkIik7cmV0dXJuIHQqbn1mdW5jdGlvbiBoKHQsZSl7dm9pZCAw PT09ZSYmKGU9ImtpbG9tZXRlcnMiKTt2YXIgbj1yLmZhY3RvcnNbZV07aWYoIW4pdGhyb3cg bmV3IEVycm9yKGUrIiB1bml0cyBpcyBpbnZhbGlkIik7cmV0dXJuIHQvbn1mdW5jdGlvbiBw KHQpe3JldHVybiAxODAqKHQlKDIqTWF0aC5QSSkpL01hdGguUEl9ZnVuY3Rpb24gZCh0KXty ZXR1cm4haXNOYU4odCkmJm51bGwhPT10JiYhQXJyYXkuaXNBcnJheSh0KX1PYmplY3QuZGVm aW5lUHJvcGVydHkociwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksci5lYXJ0aFJhZGl1cz02 MzcxMDA4Ljgsci5mYWN0b3JzPXtjZW50aW1ldGVyczoxMDAqci5lYXJ0aFJhZGl1cyxjZW50 aW1ldHJlczoxMDAqci5lYXJ0aFJhZGl1cyxkZWdyZWVzOnIuZWFydGhSYWRpdXMvMTExMzI1 LGZlZXQ6My4yODA4NCpyLmVhcnRoUmFkaXVzLGluY2hlczozOS4zNypyLmVhcnRoUmFkaXVz LGtpbG9tZXRlcnM6ci5lYXJ0aFJhZGl1cy8xZTMsa2lsb21ldHJlczpyLmVhcnRoUmFkaXVz LzFlMyxtZXRlcnM6ci5lYXJ0aFJhZGl1cyxtZXRyZXM6ci5lYXJ0aFJhZGl1cyxtaWxlczpy LmVhcnRoUmFkaXVzLzE2MDkuMzQ0LG1pbGxpbWV0ZXJzOjFlMypyLmVhcnRoUmFkaXVzLG1p bGxpbWV0cmVzOjFlMypyLmVhcnRoUmFkaXVzLG5hdXRpY2FsbWlsZXM6ci5lYXJ0aFJhZGl1 cy8xODUyLHJhZGlhbnM6MSx5YXJkczoxLjA5MzYqci5lYXJ0aFJhZGl1c30sci51bml0c0Zh Y3RvcnM9e2NlbnRpbWV0ZXJzOjEwMCxjZW50aW1ldHJlczoxMDAsZGVncmVlczoxLzExMTMy NSxmZWV0OjMuMjgwODQsaW5jaGVzOjM5LjM3LGtpbG9tZXRlcnM6LjAwMSxraWxvbWV0cmVz Oi4wMDEsbWV0ZXJzOjEsbWV0cmVzOjEsbWlsZXM6MS8xNjA5LjM0NCxtaWxsaW1ldGVyczox ZTMsbWlsbGltZXRyZXM6MWUzLG5hdXRpY2FsbWlsZXM6MS8xODUyLHJhZGlhbnM6MS9yLmVh cnRoUmFkaXVzLHlhcmRzOjEuMDkzNjEzM30sci5hcmVhRmFjdG9ycz17YWNyZXM6MjQ3MTA1 ZS05LGNlbnRpbWV0ZXJzOjFlNCxjZW50aW1ldHJlczoxZTQsZmVldDoxMC43NjM5MTA0MTcs aGVjdGFyZXM6MWUtNCxpbmNoZXM6MTU1MC4wMDMxMDAwMDYsa2lsb21ldGVyczoxZS02LGtp bG9tZXRyZXM6MWUtNixtZXRlcnM6MSxtZXRyZXM6MSxtaWxlczozODZlLTksbWlsbGltZXRl cnM6MWU2LG1pbGxpbWV0cmVzOjFlNix5YXJkczoxLjE5NTk5MDA0Nn0sci5mZWF0dXJlPW4s ci5nZW9tZXRyeT1mdW5jdGlvbih0LGUscil7c3dpdGNoKHZvaWQgMD09PXImJihyPXt9KSx0 KXtjYXNlIlBvaW50IjpyZXR1cm4gaShlKS5nZW9tZXRyeTtjYXNlIkxpbmVTdHJpbmciOnJl dHVybiBvKGUpLmdlb21ldHJ5O2Nhc2UiUG9seWdvbiI6cmV0dXJuIGEoZSkuZ2VvbWV0cnk7 Y2FzZSJNdWx0aVBvaW50IjpyZXR1cm4gYyhlKS5nZW9tZXRyeTtjYXNlIk11bHRpTGluZVN0 cmluZyI6cmV0dXJuIGwoZSkuZ2VvbWV0cnk7Y2FzZSJNdWx0aVBvbHlnb24iOnJldHVybiB1 KGUpLmdlb21ldHJ5O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKHQrIiBpcyBpbnZhbGlkIil9 fSxyLnBvaW50PWksci5wb2ludHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB2b2lkIDA9PT1y JiYocj17fSkscyh0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGkodCxlKX0pKSxyKX0sci5w b2x5Z29uPWEsci5wb2x5Z29ucz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHZvaWQgMD09PXIm JihyPXt9KSxzKHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gYSh0LGUpfSkpLHIpfSxyLmxp bmVTdHJpbmc9byxyLmxpbmVTdHJpbmdzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdm9pZCAw PT09ciYmKHI9e30pLHModC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBvKHQsZSl9KSkscil9 LHIuZmVhdHVyZUNvbGxlY3Rpb249cyxyLm11bHRpTGluZVN0cmluZz1sLHIubXVsdGlQb2lu dD1jLHIubXVsdGlQb2x5Z29uPXUsci5nZW9tZXRyeUNvbGxlY3Rpb249ZnVuY3Rpb24odCxl LHIpe3JldHVybiB2b2lkIDA9PT1yJiYocj17fSksbih7dHlwZToiR2VvbWV0cnlDb2xsZWN0 aW9uIixnZW9tZXRyaWVzOnR9LGUscil9LHIucm91bmQ9ZnVuY3Rpb24odCxlKXtpZih2b2lk IDA9PT1lJiYoZT0wKSxlJiYhKGU+PTApKXRocm93IG5ldyBFcnJvcigicHJlY2lzaW9uIG11 c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIiKTt2YXIgcj1NYXRoLnBvdygxMCxlfHwwKTtyZXR1 cm4gTWF0aC5yb3VuZCh0KnIpL3J9LHIucmFkaWFuc1RvTGVuZ3RoPWYsci5sZW5ndGhUb1Jh ZGlhbnM9aCxyLmxlbmd0aFRvRGVncmVlcz1mdW5jdGlvbih0LGUpe3JldHVybiBwKGgodCxl KSl9LHIuYmVhcmluZ1RvQXppbXV0aD1mdW5jdGlvbih0KXt2YXIgZT10JTM2MDtyZXR1cm4g ZTwwJiYoZSs9MzYwKSxlfSxyLnJhZGlhbnNUb0RlZ3JlZXM9cCxyLmRlZ3JlZXNUb1JhZGlh bnM9ZnVuY3Rpb24odCl7cmV0dXJuIHQlMzYwKk1hdGguUEkvMTgwfSxyLmNvbnZlcnRMZW5n dGg9ZnVuY3Rpb24odCxlLHIpe2lmKHZvaWQgMD09PWUmJihlPSJraWxvbWV0ZXJzIiksdm9p ZCAwPT09ciYmKHI9ImtpbG9tZXRlcnMiKSwhKHQ+PTApKXRocm93IG5ldyBFcnJvcigibGVu Z3RoIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIiKTtyZXR1cm4gZihoKHQsZSkscil9LHIu Y29udmVydEFyZWE9ZnVuY3Rpb24odCxlLG4pe2lmKHZvaWQgMD09PWUmJihlPSJtZXRlcnMi KSx2b2lkIDA9PT1uJiYobj0ia2lsb21ldGVycyIpLCEodD49MCkpdGhyb3cgbmV3IEVycm9y KCJhcmVhIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIiKTt2YXIgaT1yLmFyZWFGYWN0b3Jz W2VdO2lmKCFpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBvcmlnaW5hbCB1bml0cyIpO3Zh ciBhPXIuYXJlYUZhY3RvcnNbbl07aWYoIWEpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZp bmFsIHVuaXRzIik7cmV0dXJuIHQvaSphfSxyLmlzTnVtYmVyPWQsci5pc09iamVjdD1mdW5j dGlvbih0KXtyZXR1cm4hIXQmJnQuY29uc3RydWN0b3I9PT1PYmplY3R9LHIudmFsaWRhdGVC Qm94PWZ1bmN0aW9uKHQpe2lmKCF0KXRocm93IG5ldyBFcnJvcigiYmJveCBpcyByZXF1aXJl ZCIpO2lmKCFBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBFcnJvcigiYmJveCBtdXN0IGJl IGFuIEFycmF5Iik7aWYoNCE9PXQubGVuZ3RoJiY2IT09dC5sZW5ndGgpdGhyb3cgbmV3IEVy cm9yKCJiYm94IG11c3QgYmUgYW4gQXJyYXkgb2YgNCBvciA2IG51bWJlcnMiKTt0LmZvckVh Y2goKGZ1bmN0aW9uKHQpe2lmKCFkKHQpKXRocm93IG5ldyBFcnJvcigiYmJveCBtdXN0IG9u bHkgY29udGFpbiBudW1iZXJzIil9KSl9LHIudmFsaWRhdGVJZD1mdW5jdGlvbih0KXtpZigh dCl0aHJvdyBuZXcgRXJyb3IoImlkIGlzIHJlcXVpcmVkIik7aWYoLTE9PT1bInN0cmluZyIs Im51bWJlciJdLmluZGV4T2YodHlwZW9mIHQpKXRocm93IG5ldyBFcnJvcigiaWQgbXVzdCBi ZSBhIG51bWJlciBvciBhIHN0cmluZyIpfX0se31dLDYzOltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLCJfX2VzTW9kdWxlIix7dmFsdWU6 ITB9KTt2YXIgbj10KCJAdHVyZi9oZWxwZXJzIik7ZnVuY3Rpb24gaSh0LGUscil7aWYobnVs bCE9PXQpZm9yKHZhciBuLGEsbyxzLGwsYyx1LGYsaD0wLHA9MCxkPXQudHlwZSxtPSJGZWF0 dXJlQ29sbGVjdGlvbiI9PT1kLGc9IkZlYXR1cmUiPT09ZCx2PW0/dC5mZWF0dXJlcy5sZW5n dGg6MSx5PTA7eTx2O3krKyl7bD0oZj0hISh1PW0/dC5mZWF0dXJlc1t5XS5nZW9tZXRyeTpn P3QuZ2VvbWV0cnk6dCkmJiJHZW9tZXRyeUNvbGxlY3Rpb24iPT09dS50eXBlKT91Lmdlb21l dHJpZXMubGVuZ3RoOjE7Zm9yKHZhciB4PTA7eDxsO3grKyl7dmFyIGI9MCxfPTA7aWYobnVs bCE9PShzPWY/dS5nZW9tZXRyaWVzW3hdOnUpKXtjPXMuY29vcmRpbmF0ZXM7dmFyIHc9cy50 eXBlO3N3aXRjaChoPSFyfHwiUG9seWdvbiIhPT13JiYiTXVsdGlQb2x5Z29uIiE9PXc/MDox LHcpe2Nhc2UgbnVsbDpicmVhaztjYXNlIlBvaW50IjppZighMT09PWUoYyxwLHksYixfKSly ZXR1cm4hMTtwKyssYisrO2JyZWFrO2Nhc2UiTGluZVN0cmluZyI6Y2FzZSJNdWx0aVBvaW50 Ijpmb3Iobj0wO248Yy5sZW5ndGg7bisrKXtpZighMT09PWUoY1tuXSxwLHksYixfKSlyZXR1 cm4hMTtwKyssIk11bHRpUG9pbnQiPT09dyYmYisrfSJMaW5lU3RyaW5nIj09PXcmJmIrKzti cmVhaztjYXNlIlBvbHlnb24iOmNhc2UiTXVsdGlMaW5lU3RyaW5nIjpmb3Iobj0wO248Yy5s ZW5ndGg7bisrKXtmb3IoYT0wO2E8Y1tuXS5sZW5ndGgtaDthKyspe2lmKCExPT09ZShjW25d W2FdLHAseSxiLF8pKXJldHVybiExO3ArK30iTXVsdGlMaW5lU3RyaW5nIj09PXcmJmIrKywi UG9seWdvbiI9PT13JiZfKyt9IlBvbHlnb24iPT09dyYmYisrO2JyZWFrO2Nhc2UiTXVsdGlQ b2x5Z29uIjpmb3Iobj0wO248Yy5sZW5ndGg7bisrKXtmb3IoXz0wLGE9MDthPGNbbl0ubGVu Z3RoO2ErKyl7Zm9yKG89MDtvPGNbbl1bYV0ubGVuZ3RoLWg7bysrKXtpZighMT09PWUoY1tu XVthXVtvXSxwLHksYixfKSlyZXR1cm4hMTtwKyt9XysrfWIrK31icmVhaztjYXNlIkdlb21l dHJ5Q29sbGVjdGlvbiI6Zm9yKG49MDtuPHMuZ2VvbWV0cmllcy5sZW5ndGg7bisrKWlmKCEx PT09aShzLmdlb21ldHJpZXNbbl0sZSxyKSlyZXR1cm4hMTticmVhaztkZWZhdWx0OnRocm93 IG5ldyBFcnJvcigiVW5rbm93biBHZW9tZXRyeSBUeXBlIil9fX19fWZ1bmN0aW9uIGEodCxl KXt2YXIgcjtzd2l0Y2godC50eXBlKXtjYXNlIkZlYXR1cmVDb2xsZWN0aW9uIjpmb3Iocj0w O3I8dC5mZWF0dXJlcy5sZW5ndGgmJiExIT09ZSh0LmZlYXR1cmVzW3JdLnByb3BlcnRpZXMs cik7cisrKTticmVhaztjYXNlIkZlYXR1cmUiOmUodC5wcm9wZXJ0aWVzLDApfX1mdW5jdGlv biBvKHQsZSl7aWYoIkZlYXR1cmUiPT09dC50eXBlKWUodCwwKTtlbHNlIGlmKCJGZWF0dXJl Q29sbGVjdGlvbiI9PT10LnR5cGUpZm9yKHZhciByPTA7cjx0LmZlYXR1cmVzLmxlbmd0aCYm ITEhPT1lKHQuZmVhdHVyZXNbcl0scik7cisrKTt9ZnVuY3Rpb24gcyh0LGUpe3ZhciByLG4s aSxhLG8scyxsLGMsdSxmLGg9MCxwPSJGZWF0dXJlQ29sbGVjdGlvbiI9PT10LnR5cGUsZD0i RmVhdHVyZSI9PT10LnR5cGUsbT1wP3QuZmVhdHVyZXMubGVuZ3RoOjE7Zm9yKHI9MDtyPG07 cisrKXtmb3Iocz1wP3QuZmVhdHVyZXNbcl0uZ2VvbWV0cnk6ZD90Lmdlb21ldHJ5OnQsYz1w P3QuZmVhdHVyZXNbcl0ucHJvcGVydGllczpkP3QucHJvcGVydGllczp7fSx1PXA/dC5mZWF0 dXJlc1tyXS5iYm94OmQ/dC5iYm94OnZvaWQgMCxmPXA/dC5mZWF0dXJlc1tyXS5pZDpkP3Qu aWQ6dm9pZCAwLG89KGw9ISFzJiYiR2VvbWV0cnlDb2xsZWN0aW9uIj09PXMudHlwZSk/cy5n ZW9tZXRyaWVzLmxlbmd0aDoxLGk9MDtpPG87aSsrKWlmKG51bGwhPT0oYT1sP3MuZ2VvbWV0 cmllc1tpXTpzKSlzd2l0Y2goYS50eXBlKXtjYXNlIlBvaW50IjpjYXNlIkxpbmVTdHJpbmci OmNhc2UiTXVsdGlQb2ludCI6Y2FzZSJQb2x5Z29uIjpjYXNlIk11bHRpTGluZVN0cmluZyI6 Y2FzZSJNdWx0aVBvbHlnb24iOmlmKCExPT09ZShhLGgsYyx1LGYpKXJldHVybiExO2JyZWFr O2Nhc2UiR2VvbWV0cnlDb2xsZWN0aW9uIjpmb3Iobj0wO248YS5nZW9tZXRyaWVzLmxlbmd0 aDtuKyspaWYoITE9PT1lKGEuZ2VvbWV0cmllc1tuXSxoLGMsdSxmKSlyZXR1cm4hMTticmVh aztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5rbm93biBHZW9tZXRyeSBUeXBlIil9ZWxz ZSBpZighMT09PWUobnVsbCxoLGMsdSxmKSlyZXR1cm4hMTtoKyt9fWZ1bmN0aW9uIGwodCxl KXtzKHQsKGZ1bmN0aW9uKHQscixpLGEsbyl7dmFyIHMsbD1udWxsPT09dD9udWxsOnQudHlw ZTtzd2l0Y2gobCl7Y2FzZSBudWxsOmNhc2UiUG9pbnQiOmNhc2UiTGluZVN0cmluZyI6Y2Fz ZSJQb2x5Z29uIjpyZXR1cm4hMSE9PWUobi5mZWF0dXJlKHQsaSx7YmJveDphLGlkOm99KSxy LDApJiZ2b2lkIDB9c3dpdGNoKGwpe2Nhc2UiTXVsdGlQb2ludCI6cz0iUG9pbnQiO2JyZWFr O2Nhc2UiTXVsdGlMaW5lU3RyaW5nIjpzPSJMaW5lU3RyaW5nIjticmVhaztjYXNlIk11bHRp UG9seWdvbiI6cz0iUG9seWdvbiJ9Zm9yKHZhciBjPTA7Yzx0LmNvb3JkaW5hdGVzLmxlbmd0 aDtjKyspe3ZhciB1PXt0eXBlOnMsY29vcmRpbmF0ZXM6dC5jb29yZGluYXRlc1tjXX07aWYo ITE9PT1lKG4uZmVhdHVyZSh1LGkpLHIsYykpcmV0dXJuITF9fSkpfWZ1bmN0aW9uIGModCxl KXtsKHQsKGZ1bmN0aW9uKHQscixhKXt2YXIgbz0wO2lmKHQuZ2VvbWV0cnkpe3ZhciBzPXQu Z2VvbWV0cnkudHlwZTtpZigiUG9pbnQiIT09cyYmIk11bHRpUG9pbnQiIT09cyl7dmFyIGws Yz0wLHU9MCxmPTA7cmV0dXJuITEhPT1pKHQsKGZ1bmN0aW9uKGkscyxoLHAsZCl7aWYodm9p ZCAwPT09bHx8cj5jfHxwPnV8fGQ+ZilyZXR1cm4gbD1pLGM9cix1PXAsZj1kLHZvaWQobz0w KTt2YXIgbT1uLmxpbmVTdHJpbmcoW2wsaV0sdC5wcm9wZXJ0aWVzKTtpZighMT09PWUobSxy LGEsZCxvKSlyZXR1cm4hMTtvKyssbD1pfSkpJiZ2b2lkIDB9fX0pKX1mdW5jdGlvbiB1KHQs ZSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJnZW9qc29uIGlzIHJlcXVpcmVkIik7bCh0LChm dW5jdGlvbih0LHIsaSl7aWYobnVsbCE9PXQuZ2VvbWV0cnkpe3ZhciBhPXQuZ2VvbWV0cnku dHlwZSxvPXQuZ2VvbWV0cnkuY29vcmRpbmF0ZXM7c3dpdGNoKGEpe2Nhc2UiTGluZVN0cmlu ZyI6aWYoITE9PT1lKHQscixpLDAsMCkpcmV0dXJuITE7YnJlYWs7Y2FzZSJQb2x5Z29uIjpm b3IodmFyIHM9MDtzPG8ubGVuZ3RoO3MrKylpZighMT09PWUobi5saW5lU3RyaW5nKG9bc10s dC5wcm9wZXJ0aWVzKSxyLGkscykpcmV0dXJuITF9fX0pKX1yLmNvb3JkRWFjaD1pLHIuY29v cmRSZWR1Y2U9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGE9cjtyZXR1cm4gaSh0LChmdW5jdGlv bih0LG4saSxvLHMpe2E9MD09PW4mJnZvaWQgMD09PXI/dDplKGEsdCxuLGksbyxzKX0pLG4p LGF9LHIucHJvcEVhY2g9YSxyLnByb3BSZWR1Y2U9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXI7 cmV0dXJuIGEodCwoZnVuY3Rpb24odCxpKXtuPTA9PT1pJiZ2b2lkIDA9PT1yP3Q6ZShuLHQs aSl9KSksbn0sci5mZWF0dXJlRWFjaD1vLHIuZmVhdHVyZVJlZHVjZT1mdW5jdGlvbih0LGUs cil7dmFyIG49cjtyZXR1cm4gbyh0LChmdW5jdGlvbih0LGkpe249MD09PWkmJnZvaWQgMD09 PXI/dDplKG4sdCxpKX0pKSxufSxyLmNvb3JkQWxsPWZ1bmN0aW9uKHQpe3ZhciBlPVtdO3Jl dHVybiBpKHQsKGZ1bmN0aW9uKHQpe2UucHVzaCh0KX0pKSxlfSxyLmdlb21FYWNoPXMsci5n ZW9tUmVkdWNlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yO3JldHVybiBzKHQsKGZ1bmN0aW9u KHQsaSxhLG8scyl7bj0wPT09aSYmdm9pZCAwPT09cj90OmUobix0LGksYSxvLHMpfSkpLG59 LHIuZmxhdHRlbkVhY2g9bCxyLmZsYXR0ZW5SZWR1Y2U9ZnVuY3Rpb24odCxlLHIpe3ZhciBu PXI7cmV0dXJuIGwodCwoZnVuY3Rpb24odCxpLGEpe249MD09PWkmJjA9PT1hJiZ2b2lkIDA9 PT1yP3Q6ZShuLHQsaSxhKX0pKSxufSxyLnNlZ21lbnRFYWNoPWMsci5zZWdtZW50UmVkdWNl PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yLGk9ITE7cmV0dXJuIGModCwoZnVuY3Rpb24odCxh LG8scyxsKXtuPSExPT09aSYmdm9pZCAwPT09cj90OmUobix0LGEsbyxzLGwpLGk9ITB9KSks bn0sci5saW5lRWFjaD11LHIubGluZVJlZHVjZT1mdW5jdGlvbih0LGUscil7dmFyIG49cjty ZXR1cm4gdSh0LChmdW5jdGlvbih0LGksYSxvKXtuPTA9PT1pJiZ2b2lkIDA9PT1yP3Q6ZShu LHQsaSxhLG8pfSkpLG59LHIuZmluZFNlZ21lbnQ9ZnVuY3Rpb24odCxlKXtpZihlPWV8fHt9 LCFuLmlzT2JqZWN0KGUpKXRocm93IG5ldyBFcnJvcigib3B0aW9ucyBpcyBpbnZhbGlkIik7 dmFyIHIsaT1lLmZlYXR1cmVJbmRleHx8MCxhPWUubXVsdGlGZWF0dXJlSW5kZXh8fDAsbz1l Lmdlb21ldHJ5SW5kZXh8fDAscz1lLnNlZ21lbnRJbmRleHx8MCxsPWUucHJvcGVydGllcztz d2l0Y2godC50eXBlKXtjYXNlIkZlYXR1cmVDb2xsZWN0aW9uIjppPDAmJihpPXQuZmVhdHVy ZXMubGVuZ3RoK2kpLGw9bHx8dC5mZWF0dXJlc1tpXS5wcm9wZXJ0aWVzLHI9dC5mZWF0dXJl c1tpXS5nZW9tZXRyeTticmVhaztjYXNlIkZlYXR1cmUiOmw9bHx8dC5wcm9wZXJ0aWVzLHI9 dC5nZW9tZXRyeTticmVhaztjYXNlIlBvaW50IjpjYXNlIk11bHRpUG9pbnQiOnJldHVybiBu dWxsO2Nhc2UiTGluZVN0cmluZyI6Y2FzZSJQb2x5Z29uIjpjYXNlIk11bHRpTGluZVN0cmlu ZyI6Y2FzZSJNdWx0aVBvbHlnb24iOnI9dDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJv cigiZ2VvanNvbiBpcyBpbnZhbGlkIil9aWYobnVsbD09PXIpcmV0dXJuIG51bGw7dmFyIGM9 ci5jb29yZGluYXRlcztzd2l0Y2goci50eXBlKXtjYXNlIlBvaW50IjpjYXNlIk11bHRpUG9p bnQiOnJldHVybiBudWxsO2Nhc2UiTGluZVN0cmluZyI6cmV0dXJuIHM8MCYmKHM9Yy5sZW5n dGgrcy0xKSxuLmxpbmVTdHJpbmcoW2Nbc10sY1tzKzFdXSxsLGUpO2Nhc2UiUG9seWdvbiI6 cmV0dXJuIG88MCYmKG89Yy5sZW5ndGgrbyksczwwJiYocz1jW29dLmxlbmd0aCtzLTEpLG4u bGluZVN0cmluZyhbY1tvXVtzXSxjW29dW3MrMV1dLGwsZSk7Y2FzZSJNdWx0aUxpbmVTdHJp bmciOnJldHVybiBhPDAmJihhPWMubGVuZ3RoK2EpLHM8MCYmKHM9Y1thXS5sZW5ndGgrcy0x KSxuLmxpbmVTdHJpbmcoW2NbYV1bc10sY1thXVtzKzFdXSxsLGUpO2Nhc2UiTXVsdGlQb2x5 Z29uIjpyZXR1cm4gYTwwJiYoYT1jLmxlbmd0aCthKSxvPDAmJihvPWNbYV0ubGVuZ3RoK28p LHM8MCYmKHM9Y1thXVtvXS5sZW5ndGgtcy0xKSxuLmxpbmVTdHJpbmcoW2NbYV1bb11bc10s Y1thXVtvXVtzKzFdXSxsLGUpfXRocm93IG5ldyBFcnJvcigiZ2VvanNvbiBpcyBpbnZhbGlk Iil9LHIuZmluZFBvaW50PWZ1bmN0aW9uKHQsZSl7aWYoZT1lfHx7fSwhbi5pc09iamVjdChl KSl0aHJvdyBuZXcgRXJyb3IoIm9wdGlvbnMgaXMgaW52YWxpZCIpO3ZhciByLGk9ZS5mZWF0 dXJlSW5kZXh8fDAsYT1lLm11bHRpRmVhdHVyZUluZGV4fHwwLG89ZS5nZW9tZXRyeUluZGV4 fHwwLHM9ZS5jb29yZEluZGV4fHwwLGw9ZS5wcm9wZXJ0aWVzO3N3aXRjaCh0LnR5cGUpe2Nh c2UiRmVhdHVyZUNvbGxlY3Rpb24iOmk8MCYmKGk9dC5mZWF0dXJlcy5sZW5ndGgraSksbD1s fHx0LmZlYXR1cmVzW2ldLnByb3BlcnRpZXMscj10LmZlYXR1cmVzW2ldLmdlb21ldHJ5O2Jy ZWFrO2Nhc2UiRmVhdHVyZSI6bD1sfHx0LnByb3BlcnRpZXMscj10Lmdlb21ldHJ5O2JyZWFr O2Nhc2UiUG9pbnQiOmNhc2UiTXVsdGlQb2ludCI6cmV0dXJuIG51bGw7Y2FzZSJMaW5lU3Ry aW5nIjpjYXNlIlBvbHlnb24iOmNhc2UiTXVsdGlMaW5lU3RyaW5nIjpjYXNlIk11bHRpUG9s eWdvbiI6cj10O2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJnZW9qc29uIGlzIGlu dmFsaWQiKX1pZihudWxsPT09cilyZXR1cm4gbnVsbDt2YXIgYz1yLmNvb3JkaW5hdGVzO3N3 aXRjaChyLnR5cGUpe2Nhc2UiUG9pbnQiOnJldHVybiBuLnBvaW50KGMsbCxlKTtjYXNlIk11 bHRpUG9pbnQiOnJldHVybiBhPDAmJihhPWMubGVuZ3RoK2EpLG4ucG9pbnQoY1thXSxsLGUp O2Nhc2UiTGluZVN0cmluZyI6cmV0dXJuIHM8MCYmKHM9Yy5sZW5ndGgrcyksbi5wb2ludChj W3NdLGwsZSk7Y2FzZSJQb2x5Z29uIjpyZXR1cm4gbzwwJiYobz1jLmxlbmd0aCtvKSxzPDAm JihzPWNbb10ubGVuZ3RoK3MpLG4ucG9pbnQoY1tvXVtzXSxsLGUpO2Nhc2UiTXVsdGlMaW5l U3RyaW5nIjpyZXR1cm4gYTwwJiYoYT1jLmxlbmd0aCthKSxzPDAmJihzPWNbYV0ubGVuZ3Ro K3MpLG4ucG9pbnQoY1thXVtzXSxsLGUpO2Nhc2UiTXVsdGlQb2x5Z29uIjpyZXR1cm4gYTww JiYoYT1jLmxlbmd0aCthKSxvPDAmJihvPWNbYV0ubGVuZ3RoK28pLHM8MCYmKHM9Y1thXVtv XS5sZW5ndGgtcyksbi5wb2ludChjW2FdW29dW3NdLGwsZSl9dGhyb3cgbmV3IEVycm9yKCJn ZW9qc29uIGlzIGludmFsaWQiKX19LHsiQHR1cmYvaGVscGVycyI6NjJ9XSw2NDpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkociwiX19lc01v ZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49dCgiQHR1cmYvbWV0YSIpO2Z1bmN0aW9uIGkodCl7 dmFyIGU9WzEvMCwxLzAsLTEvMCwtMS8wXTtyZXR1cm4gbi5jb29yZEVhY2godCwoZnVuY3Rp b24odCl7ZVswXT50WzBdJiYoZVswXT10WzBdKSxlWzFdPnRbMV0mJihlWzFdPXRbMV0pLGVb Ml08dFswXSYmKGVbMl09dFswXSksZVszXTx0WzFdJiYoZVszXT10WzFdKX0pKSxlfWkuZGVm YXVsdD1pLHIuZGVmYXVsdD1pfSx7IkB0dXJmL21ldGEiOjY2fV0sNjU6W2Z1bmN0aW9uKHQs ZSxyKXthcmd1bWVudHNbNF1bNjJdWzBdLmFwcGx5KHIsYXJndW1lbnRzKX0se2R1cDo2Mn1d LDY2OltmdW5jdGlvbih0LGUscil7YXJndW1lbnRzWzRdWzYzXVswXS5hcHBseShyLGFyZ3Vt ZW50cyl9LHsiQHR1cmYvaGVscGVycyI6NjUsZHVwOjYzfV0sNjc6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsIl9fZXNNb2R1bGUiLHt2 YWx1ZTohMH0pO3ZhciBuPXQoIkB0dXJmL21ldGEiKSxpPXQoIkB0dXJmL2hlbHBlcnMiKTty LmRlZmF1bHQ9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT17fSk7dmFyIHI9MCxhPTAs bz0wO3JldHVybiBuLmNvb3JkRWFjaCh0LChmdW5jdGlvbih0KXtyKz10WzBdLGErPXRbMV0s bysrfSkpLGkucG9pbnQoW3IvbyxhL29dLGUucHJvcGVydGllcyl9fSx7IkB0dXJmL2hlbHBl cnMiOjY4LCJAdHVyZi9tZXRhIjo2OX1dLDY4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO2Z1bmN0aW9uIG4odCxlLHIpe3ZvaWQgMD09PXImJihyPXt9KTt2YXIgbj17dHlwZToi RmVhdHVyZSJ9O3JldHVybigwPT09ci5pZHx8ci5pZCkmJihuLmlkPXIuaWQpLHIuYmJveCYm KG4uYmJveD1yLmJib3gpLG4ucHJvcGVydGllcz1lfHx7fSxuLmdlb21ldHJ5PXQsbn1mdW5j dGlvbiBpKHQsZSxyKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9e30pLG4oe3R5cGU6IlBvaW50 Iixjb29yZGluYXRlczp0fSxlLHIpfWZ1bmN0aW9uIGEodCxlLHIpe3ZvaWQgMD09PXImJihy PXt9KTtmb3IodmFyIGk9MCxhPXQ7aTxhLmxlbmd0aDtpKyspe3ZhciBvPWFbaV07aWYoby5s ZW5ndGg8NCl0aHJvdyBuZXcgRXJyb3IoIkVhY2ggTGluZWFyUmluZyBvZiBhIFBvbHlnb24g bXVzdCBoYXZlIDQgb3IgbW9yZSBQb3NpdGlvbnMuIik7Zm9yKHZhciBzPTA7czxvW28ubGVu Z3RoLTFdLmxlbmd0aDtzKyspaWYob1tvLmxlbmd0aC0xXVtzXSE9PW9bMF1bc10pdGhyb3cg bmV3IEVycm9yKCJGaXJzdCBhbmQgbGFzdCBQb3NpdGlvbiBhcmUgbm90IGVxdWl2YWxlbnQu Iil9cmV0dXJuIG4oe3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOnR9LGUscil9ZnVuY3Rp b24gbyh0LGUscil7aWYodm9pZCAwPT09ciYmKHI9e30pLHQubGVuZ3RoPDIpdGhyb3cgbmV3 IEVycm9yKCJjb29yZGluYXRlcyBtdXN0IGJlIGFuIGFycmF5IG9mIHR3byBvciBtb3JlIHBv c2l0aW9ucyIpO3JldHVybiBuKHt0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczp0fSxl LHIpfWZ1bmN0aW9uIHModCxlKXt2b2lkIDA9PT1lJiYoZT17fSk7dmFyIHI9e3R5cGU6IkZl YXR1cmVDb2xsZWN0aW9uIn07cmV0dXJuIGUuaWQmJihyLmlkPWUuaWQpLGUuYmJveCYmKHIu YmJveD1lLmJib3gpLHIuZmVhdHVyZXM9dCxyfWZ1bmN0aW9uIGwodCxlLHIpe3JldHVybiB2 b2lkIDA9PT1yJiYocj17fSksbih7dHlwZToiTXVsdGlMaW5lU3RyaW5nIixjb29yZGluYXRl czp0fSxlLHIpfWZ1bmN0aW9uIGModCxlLHIpe3JldHVybiB2b2lkIDA9PT1yJiYocj17fSks bih7dHlwZToiTXVsdGlQb2ludCIsY29vcmRpbmF0ZXM6dH0sZSxyKX1mdW5jdGlvbiB1KHQs ZSxyKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9e30pLG4oe3R5cGU6Ik11bHRpUG9seWdvbiIs Y29vcmRpbmF0ZXM6dH0sZSxyKX1mdW5jdGlvbiBmKHQsZSl7dm9pZCAwPT09ZSYmKGU9Imtp bG9tZXRlcnMiKTt2YXIgbj1yLmZhY3RvcnNbZV07aWYoIW4pdGhyb3cgbmV3IEVycm9yKGUr IiB1bml0cyBpcyBpbnZhbGlkIik7cmV0dXJuIHQqbn1mdW5jdGlvbiBoKHQsZSl7dm9pZCAw PT09ZSYmKGU9ImtpbG9tZXRlcnMiKTt2YXIgbj1yLmZhY3RvcnNbZV07aWYoIW4pdGhyb3cg bmV3IEVycm9yKGUrIiB1bml0cyBpcyBpbnZhbGlkIik7cmV0dXJuIHQvbn1mdW5jdGlvbiBw KHQpe3JldHVybiAxODAqKHQlKDIqTWF0aC5QSSkpL01hdGguUEl9ZnVuY3Rpb24gZCh0KXty ZXR1cm4haXNOYU4odCkmJm51bGwhPT10JiYhQXJyYXkuaXNBcnJheSh0KSYmIS9eXHMqJC8u dGVzdCh0KX1PYmplY3QuZGVmaW5lUHJvcGVydHkociwiX19lc01vZHVsZSIse3ZhbHVlOiEw fSksci5lYXJ0aFJhZGl1cz02MzcxMDA4Ljgsci5mYWN0b3JzPXtjZW50aW1ldGVyczoxMDAq ci5lYXJ0aFJhZGl1cyxjZW50aW1ldHJlczoxMDAqci5lYXJ0aFJhZGl1cyxkZWdyZWVzOnIu ZWFydGhSYWRpdXMvMTExMzI1LGZlZXQ6My4yODA4NCpyLmVhcnRoUmFkaXVzLGluY2hlczoz OS4zNypyLmVhcnRoUmFkaXVzLGtpbG9tZXRlcnM6ci5lYXJ0aFJhZGl1cy8xZTMsa2lsb21l dHJlczpyLmVhcnRoUmFkaXVzLzFlMyxtZXRlcnM6ci5lYXJ0aFJhZGl1cyxtZXRyZXM6ci5l YXJ0aFJhZGl1cyxtaWxlczpyLmVhcnRoUmFkaXVzLzE2MDkuMzQ0LG1pbGxpbWV0ZXJzOjFl MypyLmVhcnRoUmFkaXVzLG1pbGxpbWV0cmVzOjFlMypyLmVhcnRoUmFkaXVzLG5hdXRpY2Fs bWlsZXM6ci5lYXJ0aFJhZGl1cy8xODUyLHJhZGlhbnM6MSx5YXJkczpyLmVhcnRoUmFkaXVz LzEuMDkzNn0sci51bml0c0ZhY3RvcnM9e2NlbnRpbWV0ZXJzOjEwMCxjZW50aW1ldHJlczox MDAsZGVncmVlczoxLzExMTMyNSxmZWV0OjMuMjgwODQsaW5jaGVzOjM5LjM3LGtpbG9tZXRl cnM6LjAwMSxraWxvbWV0cmVzOi4wMDEsbWV0ZXJzOjEsbWV0cmVzOjEsbWlsZXM6MS8xNjA5 LjM0NCxtaWxsaW1ldGVyczoxZTMsbWlsbGltZXRyZXM6MWUzLG5hdXRpY2FsbWlsZXM6MS8x ODUyLHJhZGlhbnM6MS9yLmVhcnRoUmFkaXVzLHlhcmRzOjEvMS4wOTM2fSxyLmFyZWFGYWN0 b3JzPXthY3JlczoyNDcxMDVlLTksY2VudGltZXRlcnM6MWU0LGNlbnRpbWV0cmVzOjFlNCxm ZWV0OjEwLjc2MzkxMDQxNyxpbmNoZXM6MTU1MC4wMDMxMDAwMDYsa2lsb21ldGVyczoxZS02 LGtpbG9tZXRyZXM6MWUtNixtZXRlcnM6MSxtZXRyZXM6MSxtaWxlczozODZlLTksbWlsbGlt ZXRlcnM6MWU2LG1pbGxpbWV0cmVzOjFlNix5YXJkczoxLjE5NTk5MDA0Nn0sci5mZWF0dXJl PW4sci5nZW9tZXRyeT1mdW5jdGlvbih0LGUscil7c3dpdGNoKHZvaWQgMD09PXImJihyPXt9 KSx0KXtjYXNlIlBvaW50IjpyZXR1cm4gaShlKS5nZW9tZXRyeTtjYXNlIkxpbmVTdHJpbmci OnJldHVybiBvKGUpLmdlb21ldHJ5O2Nhc2UiUG9seWdvbiI6cmV0dXJuIGEoZSkuZ2VvbWV0 cnk7Y2FzZSJNdWx0aVBvaW50IjpyZXR1cm4gYyhlKS5nZW9tZXRyeTtjYXNlIk11bHRpTGlu ZVN0cmluZyI6cmV0dXJuIGwoZSkuZ2VvbWV0cnk7Y2FzZSJNdWx0aVBvbHlnb24iOnJldHVy biB1KGUpLmdlb21ldHJ5O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKHQrIiBpcyBpbnZhbGlk Iil9fSxyLnBvaW50PWksci5wb2ludHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB2b2lkIDA9 PT1yJiYocj17fSkscyh0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGkodCxlKX0pKSxyKX0s ci5wb2x5Z29uPWEsci5wb2x5Z29ucz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHZvaWQgMD09 PXImJihyPXt9KSxzKHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gYSh0LGUpfSkpLHIpfSxy LmxpbmVTdHJpbmc9byxyLmxpbmVTdHJpbmdzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdm9p ZCAwPT09ciYmKHI9e30pLHModC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBvKHQsZSl9KSks cil9LHIuZmVhdHVyZUNvbGxlY3Rpb249cyxyLm11bHRpTGluZVN0cmluZz1sLHIubXVsdGlQ b2ludD1jLHIubXVsdGlQb2x5Z29uPXUsci5nZW9tZXRyeUNvbGxlY3Rpb249ZnVuY3Rpb24o dCxlLHIpe3JldHVybiB2b2lkIDA9PT1yJiYocj17fSksbih7dHlwZToiR2VvbWV0cnlDb2xs ZWN0aW9uIixnZW9tZXRyaWVzOnR9LGUscil9LHIucm91bmQ9ZnVuY3Rpb24odCxlKXtpZih2 b2lkIDA9PT1lJiYoZT0wKSxlJiYhKGU+PTApKXRocm93IG5ldyBFcnJvcigicHJlY2lzaW9u IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIiKTt2YXIgcj1NYXRoLnBvdygxMCxlfHwwKTty ZXR1cm4gTWF0aC5yb3VuZCh0KnIpL3J9LHIucmFkaWFuc1RvTGVuZ3RoPWYsci5sZW5ndGhU b1JhZGlhbnM9aCxyLmxlbmd0aFRvRGVncmVlcz1mdW5jdGlvbih0LGUpe3JldHVybiBwKGgo dCxlKSl9LHIuYmVhcmluZ1RvQXppbXV0aD1mdW5jdGlvbih0KXt2YXIgZT10JTM2MDtyZXR1 cm4gZTwwJiYoZSs9MzYwKSxlfSxyLnJhZGlhbnNUb0RlZ3JlZXM9cCxyLmRlZ3JlZXNUb1Jh ZGlhbnM9ZnVuY3Rpb24odCl7cmV0dXJuIHQlMzYwKk1hdGguUEkvMTgwfSxyLmNvbnZlcnRM ZW5ndGg9ZnVuY3Rpb24odCxlLHIpe2lmKHZvaWQgMD09PWUmJihlPSJraWxvbWV0ZXJzIiks dm9pZCAwPT09ciYmKHI9ImtpbG9tZXRlcnMiKSwhKHQ+PTApKXRocm93IG5ldyBFcnJvcigi bGVuZ3RoIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIiKTtyZXR1cm4gZihoKHQsZSkscil9 LHIuY29udmVydEFyZWE9ZnVuY3Rpb24odCxlLG4pe2lmKHZvaWQgMD09PWUmJihlPSJtZXRl cnMiKSx2b2lkIDA9PT1uJiYobj0ia2lsb21ldGVycyIpLCEodD49MCkpdGhyb3cgbmV3IEVy cm9yKCJhcmVhIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIiKTt2YXIgaT1yLmFyZWFGYWN0 b3JzW2VdO2lmKCFpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBvcmlnaW5hbCB1bml0cyIp O3ZhciBhPXIuYXJlYUZhY3RvcnNbbl07aWYoIWEpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlk IGZpbmFsIHVuaXRzIik7cmV0dXJuIHQvaSphfSxyLmlzTnVtYmVyPWQsci5pc09iamVjdD1m dW5jdGlvbih0KXtyZXR1cm4hIXQmJnQuY29uc3RydWN0b3I9PT1PYmplY3R9LHIudmFsaWRh dGVCQm94PWZ1bmN0aW9uKHQpe2lmKCF0KXRocm93IG5ldyBFcnJvcigiYmJveCBpcyByZXF1 aXJlZCIpO2lmKCFBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBFcnJvcigiYmJveCBtdXN0 IGJlIGFuIEFycmF5Iik7aWYoNCE9PXQubGVuZ3RoJiY2IT09dC5sZW5ndGgpdGhyb3cgbmV3 IEVycm9yKCJiYm94IG11c3QgYmUgYW4gQXJyYXkgb2YgNCBvciA2IG51bWJlcnMiKTt0LmZv ckVhY2goKGZ1bmN0aW9uKHQpe2lmKCFkKHQpKXRocm93IG5ldyBFcnJvcigiYmJveCBtdXN0 IG9ubHkgY29udGFpbiBudW1iZXJzIil9KSl9LHIudmFsaWRhdGVJZD1mdW5jdGlvbih0KXtp ZighdCl0aHJvdyBuZXcgRXJyb3IoImlkIGlzIHJlcXVpcmVkIik7aWYoLTE9PT1bInN0cmlu ZyIsIm51bWJlciJdLmluZGV4T2YodHlwZW9mIHQpKXRocm93IG5ldyBFcnJvcigiaWQgbXVz dCBiZSBhIG51bWJlciBvciBhIHN0cmluZyIpfSxyLnJhZGlhbnMyZGVncmVlcz1mdW5jdGlv bigpe3Rocm93IG5ldyBFcnJvcigibWV0aG9kIGhhcyBiZWVuIHJlbmFtZWQgdG8gYHJhZGlh bnNUb0RlZ3JlZXNgIil9LHIuZGVncmVlczJyYWRpYW5zPWZ1bmN0aW9uKCl7dGhyb3cgbmV3 IEVycm9yKCJtZXRob2QgaGFzIGJlZW4gcmVuYW1lZCB0byBgZGVncmVlc1RvUmFkaWFuc2Ai KX0sci5kaXN0YW5jZVRvRGVncmVlcz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigibWV0 aG9kIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGxlbmd0aFRvRGVncmVlc2AiKX0sci5kaXN0YW5j ZVRvUmFkaWFucz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigibWV0aG9kIGhhcyBiZWVu IHJlbmFtZWQgdG8gYGxlbmd0aFRvUmFkaWFuc2AiKX0sci5yYWRpYW5zVG9EaXN0YW5jZT1m dW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigibWV0aG9kIGhhcyBiZWVuIHJlbmFtZWQgdG8g YHJhZGlhbnNUb0xlbmd0aGAiKX0sci5iZWFyaW5nVG9BbmdsZT1mdW5jdGlvbigpe3Rocm93 IG5ldyBFcnJvcigibWV0aG9kIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGJlYXJpbmdUb0F6aW11 dGhgIil9LHIuY29udmVydERpc3RhbmNlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJt ZXRob2QgaGFzIGJlZW4gcmVuYW1lZCB0byBgY29udmVydExlbmd0aGAiKX19LHt9XSw2OTpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkociwi X19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49dCgiQHR1cmYvaGVscGVycyIpO2Z1bmN0 aW9uIGkodCxlLHIpe2lmKG51bGwhPT10KWZvcih2YXIgbixhLG8scyxsLGMsdSxmLGg9MCxw PTAsZD10LnR5cGUsbT0iRmVhdHVyZUNvbGxlY3Rpb24iPT09ZCxnPSJGZWF0dXJlIj09PWQs dj1tP3QuZmVhdHVyZXMubGVuZ3RoOjEseT0wO3k8djt5Kyspe2w9KGY9ISEodT1tP3QuZmVh dHVyZXNbeV0uZ2VvbWV0cnk6Zz90Lmdlb21ldHJ5OnQpJiYiR2VvbWV0cnlDb2xsZWN0aW9u Ij09PXUudHlwZSk/dS5nZW9tZXRyaWVzLmxlbmd0aDoxO2Zvcih2YXIgeD0wO3g8bDt4Kysp e3ZhciBiPTAsXz0wO2lmKG51bGwhPT0ocz1mP3UuZ2VvbWV0cmllc1t4XTp1KSl7Yz1zLmNv b3JkaW5hdGVzO3ZhciB3PXMudHlwZTtzd2l0Y2goaD0hcnx8IlBvbHlnb24iIT09dyYmIk11 bHRpUG9seWdvbiIhPT13PzA6MSx3KXtjYXNlIG51bGw6YnJlYWs7Y2FzZSJQb2ludCI6aWYo ITE9PT1lKGMscCx5LGIsXykpcmV0dXJuITE7cCsrLGIrKzticmVhaztjYXNlIkxpbmVTdHJp bmciOmNhc2UiTXVsdGlQb2ludCI6Zm9yKG49MDtuPGMubGVuZ3RoO24rKyl7aWYoITE9PT1l KGNbbl0scCx5LGIsXykpcmV0dXJuITE7cCsrLCJNdWx0aVBvaW50Ij09PXcmJmIrK30iTGlu ZVN0cmluZyI9PT13JiZiKys7YnJlYWs7Y2FzZSJQb2x5Z29uIjpjYXNlIk11bHRpTGluZVN0 cmluZyI6Zm9yKG49MDtuPGMubGVuZ3RoO24rKyl7Zm9yKGE9MDthPGNbbl0ubGVuZ3RoLWg7 YSsrKXtpZighMT09PWUoY1tuXVthXSxwLHksYixfKSlyZXR1cm4hMTtwKyt9Ik11bHRpTGlu ZVN0cmluZyI9PT13JiZiKyssIlBvbHlnb24iPT09dyYmXysrfSJQb2x5Z29uIj09PXcmJmIr KzticmVhaztjYXNlIk11bHRpUG9seWdvbiI6Zm9yKG49MDtuPGMubGVuZ3RoO24rKyl7Zm9y KF89MCxhPTA7YTxjW25dLmxlbmd0aDthKyspe2ZvcihvPTA7bzxjW25dW2FdLmxlbmd0aC1o O28rKyl7aWYoITE9PT1lKGNbbl1bYV1bb10scCx5LGIsXykpcmV0dXJuITE7cCsrfV8rK31i Kyt9YnJlYWs7Y2FzZSJHZW9tZXRyeUNvbGxlY3Rpb24iOmZvcihuPTA7bjxzLmdlb21ldHJp ZXMubGVuZ3RoO24rKylpZighMT09PWkocy5nZW9tZXRyaWVzW25dLGUscikpcmV0dXJuITE7 YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gR2VvbWV0cnkgVHlwZSIp fX19fX1mdW5jdGlvbiBhKHQsZSl7dmFyIHI7c3dpdGNoKHQudHlwZSl7Y2FzZSJGZWF0dXJl Q29sbGVjdGlvbiI6Zm9yKHI9MDtyPHQuZmVhdHVyZXMubGVuZ3RoJiYhMSE9PWUodC5mZWF0 dXJlc1tyXS5wcm9wZXJ0aWVzLHIpO3IrKyk7YnJlYWs7Y2FzZSJGZWF0dXJlIjplKHQucHJv cGVydGllcywwKX19ZnVuY3Rpb24gbyh0LGUpe2lmKCJGZWF0dXJlIj09PXQudHlwZSllKHQs MCk7ZWxzZSBpZigiRmVhdHVyZUNvbGxlY3Rpb24iPT09dC50eXBlKWZvcih2YXIgcj0wO3I8 dC5mZWF0dXJlcy5sZW5ndGgmJiExIT09ZSh0LmZlYXR1cmVzW3JdLHIpO3IrKyk7fWZ1bmN0 aW9uIHModCxlKXt2YXIgcixuLGksYSxvLHMsbCxjLHUsZixoPTAscD0iRmVhdHVyZUNvbGxl Y3Rpb24iPT09dC50eXBlLGQ9IkZlYXR1cmUiPT09dC50eXBlLG09cD90LmZlYXR1cmVzLmxl bmd0aDoxO2ZvcihyPTA7cjxtO3IrKyl7Zm9yKHM9cD90LmZlYXR1cmVzW3JdLmdlb21ldHJ5 OmQ/dC5nZW9tZXRyeTp0LGM9cD90LmZlYXR1cmVzW3JdLnByb3BlcnRpZXM6ZD90LnByb3Bl cnRpZXM6e30sdT1wP3QuZmVhdHVyZXNbcl0uYmJveDpkP3QuYmJveDp2b2lkIDAsZj1wP3Qu ZmVhdHVyZXNbcl0uaWQ6ZD90LmlkOnZvaWQgMCxvPShsPSEhcyYmIkdlb21ldHJ5Q29sbGVj dGlvbiI9PT1zLnR5cGUpP3MuZ2VvbWV0cmllcy5sZW5ndGg6MSxpPTA7aTxvO2krKylpZihu dWxsIT09KGE9bD9zLmdlb21ldHJpZXNbaV06cykpc3dpdGNoKGEudHlwZSl7Y2FzZSJQb2lu dCI6Y2FzZSJMaW5lU3RyaW5nIjpjYXNlIk11bHRpUG9pbnQiOmNhc2UiUG9seWdvbiI6Y2Fz ZSJNdWx0aUxpbmVTdHJpbmciOmNhc2UiTXVsdGlQb2x5Z29uIjppZighMT09PWUoYSxoLGMs dSxmKSlyZXR1cm4hMTticmVhaztjYXNlIkdlb21ldHJ5Q29sbGVjdGlvbiI6Zm9yKG49MDtu PGEuZ2VvbWV0cmllcy5sZW5ndGg7bisrKWlmKCExPT09ZShhLmdlb21ldHJpZXNbbl0saCxj LHUsZikpcmV0dXJuITE7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVua25vd24g R2VvbWV0cnkgVHlwZSIpfWVsc2UgaWYoITE9PT1lKG51bGwsaCxjLHUsZikpcmV0dXJuITE7 aCsrfX1mdW5jdGlvbiBsKHQsZSl7cyh0LChmdW5jdGlvbih0LHIsaSxhLG8pe3ZhciBzLGw9 bnVsbD09PXQ/bnVsbDp0LnR5cGU7c3dpdGNoKGwpe2Nhc2UgbnVsbDpjYXNlIlBvaW50Ijpj YXNlIkxpbmVTdHJpbmciOmNhc2UiUG9seWdvbiI6cmV0dXJuITEhPT1lKG4uZmVhdHVyZSh0 LGkse2Jib3g6YSxpZDpvfSksciwwKSYmdm9pZCAwfXN3aXRjaChsKXtjYXNlIk11bHRpUG9p bnQiOnM9IlBvaW50IjticmVhaztjYXNlIk11bHRpTGluZVN0cmluZyI6cz0iTGluZVN0cmlu ZyI7YnJlYWs7Y2FzZSJNdWx0aVBvbHlnb24iOnM9IlBvbHlnb24ifWZvcih2YXIgYz0wO2M8 dC5jb29yZGluYXRlcy5sZW5ndGg7YysrKXt2YXIgdT17dHlwZTpzLGNvb3JkaW5hdGVzOnQu Y29vcmRpbmF0ZXNbY119O2lmKCExPT09ZShuLmZlYXR1cmUodSxpKSxyLGMpKXJldHVybiEx fX0pKX1mdW5jdGlvbiBjKHQsZSl7bCh0LChmdW5jdGlvbih0LHIsYSl7dmFyIG89MDtpZih0 Lmdlb21ldHJ5KXt2YXIgcz10Lmdlb21ldHJ5LnR5cGU7aWYoIlBvaW50IiE9PXMmJiJNdWx0 aVBvaW50IiE9PXMpe3ZhciBsLGM9MCx1PTAsZj0wO3JldHVybiExIT09aSh0LChmdW5jdGlv bihpLHMsaCxwLGQpe2lmKHZvaWQgMD09PWx8fHI+Y3x8cD51fHxkPmYpcmV0dXJuIGw9aSxj PXIsdT1wLGY9ZCx2b2lkKG89MCk7dmFyIG09bi5saW5lU3RyaW5nKFtsLGldLHQucHJvcGVy dGllcyk7aWYoITE9PT1lKG0scixhLGQsbykpcmV0dXJuITE7bysrLGw9aX0pKSYmdm9pZCAw fX19KSl9ZnVuY3Rpb24gdSh0LGUpe2lmKCF0KXRocm93IG5ldyBFcnJvcigiZ2VvanNvbiBp cyByZXF1aXJlZCIpO2wodCwoZnVuY3Rpb24odCxyLGkpe2lmKG51bGwhPT10Lmdlb21ldHJ5 KXt2YXIgYT10Lmdlb21ldHJ5LnR5cGUsbz10Lmdlb21ldHJ5LmNvb3JkaW5hdGVzO3N3aXRj aChhKXtjYXNlIkxpbmVTdHJpbmciOmlmKCExPT09ZSh0LHIsaSwwLDApKXJldHVybiExO2Jy ZWFrO2Nhc2UiUG9seWdvbiI6Zm9yKHZhciBzPTA7czxvLmxlbmd0aDtzKyspaWYoITE9PT1l KG4ubGluZVN0cmluZyhvW3NdLHQucHJvcGVydGllcykscixpLHMpKXJldHVybiExfX19KSl9 ci5jb29yZEVhY2g9aSxyLmNvb3JkUmVkdWNlPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXI7 cmV0dXJuIGkodCwoZnVuY3Rpb24odCxuLGksbyxzKXthPTA9PT1uJiZ2b2lkIDA9PT1yP3Q6 ZShhLHQsbixpLG8scyl9KSxuKSxhfSxyLnByb3BFYWNoPWEsci5wcm9wUmVkdWNlPWZ1bmN0 aW9uKHQsZSxyKXt2YXIgbj1yO3JldHVybiBhKHQsKGZ1bmN0aW9uKHQsaSl7bj0wPT09aSYm dm9pZCAwPT09cj90OmUobix0LGkpfSkpLG59LHIuZmVhdHVyZUVhY2g9byxyLmZlYXR1cmVS ZWR1Y2U9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXI7cmV0dXJuIG8odCwoZnVuY3Rpb24odCxp KXtuPTA9PT1pJiZ2b2lkIDA9PT1yP3Q6ZShuLHQsaSl9KSksbn0sci5jb29yZEFsbD1mdW5j dGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gaSh0LChmdW5jdGlvbih0KXtlLnB1c2godCl9KSks ZX0sci5nZW9tRWFjaD1zLHIuZ2VvbVJlZHVjZT1mdW5jdGlvbih0LGUscil7dmFyIG49cjty ZXR1cm4gcyh0LChmdW5jdGlvbih0LGksYSxvLHMpe249MD09PWkmJnZvaWQgMD09PXI/dDpl KG4sdCxpLGEsbyxzKX0pKSxufSxyLmZsYXR0ZW5FYWNoPWwsci5mbGF0dGVuUmVkdWNlPWZ1 bmN0aW9uKHQsZSxyKXt2YXIgbj1yO3JldHVybiBsKHQsKGZ1bmN0aW9uKHQsaSxhKXtuPTA9 PT1pJiYwPT09YSYmdm9pZCAwPT09cj90OmUobix0LGksYSl9KSksbn0sci5zZWdtZW50RWFj aD1jLHIuc2VnbWVudFJlZHVjZT1mdW5jdGlvbih0LGUscil7dmFyIG49cixpPSExO3JldHVy biBjKHQsKGZ1bmN0aW9uKHQsYSxvLHMsbCl7bj0hMT09PWkmJnZvaWQgMD09PXI/dDplKG4s dCxhLG8scyxsKSxpPSEwfSkpLG59LHIubGluZUVhY2g9dSxyLmxpbmVSZWR1Y2U9ZnVuY3Rp b24odCxlLHIpe3ZhciBuPXI7cmV0dXJuIHUodCwoZnVuY3Rpb24odCxpLGEsbyl7bj0wPT09 aSYmdm9pZCAwPT09cj90OmUobix0LGksYSxvKX0pKSxufSxyLmZpbmRTZWdtZW50PWZ1bmN0 aW9uKHQsZSl7aWYoZT1lfHx7fSwhbi5pc09iamVjdChlKSl0aHJvdyBuZXcgRXJyb3IoIm9w dGlvbnMgaXMgaW52YWxpZCIpO3ZhciByLGk9ZS5mZWF0dXJlSW5kZXh8fDAsYT1lLm11bHRp RmVhdHVyZUluZGV4fHwwLG89ZS5nZW9tZXRyeUluZGV4fHwwLHM9ZS5zZWdtZW50SW5kZXh8 fDAsbD1lLnByb3BlcnRpZXM7c3dpdGNoKHQudHlwZSl7Y2FzZSJGZWF0dXJlQ29sbGVjdGlv biI6aTwwJiYoaT10LmZlYXR1cmVzLmxlbmd0aCtpKSxsPWx8fHQuZmVhdHVyZXNbaV0ucHJv cGVydGllcyxyPXQuZmVhdHVyZXNbaV0uZ2VvbWV0cnk7YnJlYWs7Y2FzZSJGZWF0dXJlIjps PWx8fHQucHJvcGVydGllcyxyPXQuZ2VvbWV0cnk7YnJlYWs7Y2FzZSJQb2ludCI6Y2FzZSJN dWx0aVBvaW50IjpyZXR1cm4gbnVsbDtjYXNlIkxpbmVTdHJpbmciOmNhc2UiUG9seWdvbiI6 Y2FzZSJNdWx0aUxpbmVTdHJpbmciOmNhc2UiTXVsdGlQb2x5Z29uIjpyPXQ7YnJlYWs7ZGVm YXVsdDp0aHJvdyBuZXcgRXJyb3IoImdlb2pzb24gaXMgaW52YWxpZCIpfWlmKG51bGw9PT1y KXJldHVybiBudWxsO3ZhciBjPXIuY29vcmRpbmF0ZXM7c3dpdGNoKHIudHlwZSl7Y2FzZSJQ b2ludCI6Y2FzZSJNdWx0aVBvaW50IjpyZXR1cm4gbnVsbDtjYXNlIkxpbmVTdHJpbmciOnJl dHVybiBzPDAmJihzPWMubGVuZ3RoK3MtMSksbi5saW5lU3RyaW5nKFtjW3NdLGNbcysxXV0s bCxlKTtjYXNlIlBvbHlnb24iOnJldHVybiBvPDAmJihvPWMubGVuZ3RoK28pLHM8MCYmKHM9 Y1tvXS5sZW5ndGgrcy0xKSxuLmxpbmVTdHJpbmcoW2Nbb11bc10sY1tvXVtzKzFdXSxsLGUp O2Nhc2UiTXVsdGlMaW5lU3RyaW5nIjpyZXR1cm4gYTwwJiYoYT1jLmxlbmd0aCthKSxzPDAm JihzPWNbYV0ubGVuZ3RoK3MtMSksbi5saW5lU3RyaW5nKFtjW2FdW3NdLGNbYV1bcysxXV0s bCxlKTtjYXNlIk11bHRpUG9seWdvbiI6cmV0dXJuIGE8MCYmKGE9Yy5sZW5ndGgrYSksbzww JiYobz1jW2FdLmxlbmd0aCtvKSxzPDAmJihzPWNbYV1bb10ubGVuZ3RoLXMtMSksbi5saW5l U3RyaW5nKFtjW2FdW29dW3NdLGNbYV1bb11bcysxXV0sbCxlKX10aHJvdyBuZXcgRXJyb3Io Imdlb2pzb24gaXMgaW52YWxpZCIpfSxyLmZpbmRQb2ludD1mdW5jdGlvbih0LGUpe2lmKGU9 ZXx8e30sIW4uaXNPYmplY3QoZSkpdGhyb3cgbmV3IEVycm9yKCJvcHRpb25zIGlzIGludmFs aWQiKTt2YXIgcixpPWUuZmVhdHVyZUluZGV4fHwwLGE9ZS5tdWx0aUZlYXR1cmVJbmRleHx8 MCxvPWUuZ2VvbWV0cnlJbmRleHx8MCxzPWUuY29vcmRJbmRleHx8MCxsPWUucHJvcGVydGll cztzd2l0Y2godC50eXBlKXtjYXNlIkZlYXR1cmVDb2xsZWN0aW9uIjppPDAmJihpPXQuZmVh dHVyZXMubGVuZ3RoK2kpLGw9bHx8dC5mZWF0dXJlc1tpXS5wcm9wZXJ0aWVzLHI9dC5mZWF0 dXJlc1tpXS5nZW9tZXRyeTticmVhaztjYXNlIkZlYXR1cmUiOmw9bHx8dC5wcm9wZXJ0aWVz LHI9dC5nZW9tZXRyeTticmVhaztjYXNlIlBvaW50IjpjYXNlIk11bHRpUG9pbnQiOnJldHVy biBudWxsO2Nhc2UiTGluZVN0cmluZyI6Y2FzZSJQb2x5Z29uIjpjYXNlIk11bHRpTGluZVN0 cmluZyI6Y2FzZSJNdWx0aVBvbHlnb24iOnI9dDticmVhaztkZWZhdWx0OnRocm93IG5ldyBF cnJvcigiZ2VvanNvbiBpcyBpbnZhbGlkIil9aWYobnVsbD09PXIpcmV0dXJuIG51bGw7dmFy IGM9ci5jb29yZGluYXRlcztzd2l0Y2goci50eXBlKXtjYXNlIlBvaW50IjpyZXR1cm4gbi5w b2ludChjLGwsZSk7Y2FzZSJNdWx0aVBvaW50IjpyZXR1cm4gYTwwJiYoYT1jLmxlbmd0aCth KSxuLnBvaW50KGNbYV0sbCxlKTtjYXNlIkxpbmVTdHJpbmciOnJldHVybiBzPDAmJihzPWMu bGVuZ3RoK3MpLG4ucG9pbnQoY1tzXSxsLGUpO2Nhc2UiUG9seWdvbiI6cmV0dXJuIG88MCYm KG89Yy5sZW5ndGgrbyksczwwJiYocz1jW29dLmxlbmd0aCtzKSxuLnBvaW50KGNbb11bc10s bCxlKTtjYXNlIk11bHRpTGluZVN0cmluZyI6cmV0dXJuIGE8MCYmKGE9Yy5sZW5ndGgrYSks czwwJiYocz1jW2FdLmxlbmd0aCtzKSxuLnBvaW50KGNbYV1bc10sbCxlKTtjYXNlIk11bHRp UG9seWdvbiI6cmV0dXJuIGE8MCYmKGE9Yy5sZW5ndGgrYSksbzwwJiYobz1jW2FdLmxlbmd0 aCtvKSxzPDAmJihzPWNbYV1bb10ubGVuZ3RoLXMpLG4ucG9pbnQoY1thXVtvXVtzXSxsLGUp fXRocm93IG5ldyBFcnJvcigiZ2VvanNvbiBpcyBpbnZhbGlkIil9fSx7IkB0dXJmL2hlbHBl cnMiOjY4fV0sNzA6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFy IGU9MCxyPTAsbj0wLGk9MDtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBhPSh0PXQu c2xpY2UoKSlbMF0sbz1hLnRvVXBwZXJDYXNlKCk7aWYoYSE9bylzd2l0Y2godFswXT1vLGEp e2Nhc2UiYSI6dFs2XSs9bix0WzddKz1pO2JyZWFrO2Nhc2UidiI6dFsxXSs9aTticmVhaztj YXNlImgiOnRbMV0rPW47YnJlYWs7ZGVmYXVsdDpmb3IodmFyIHM9MTtzPHQubGVuZ3RoOyl0 W3MrK10rPW4sdFtzKytdKz1pfXN3aXRjaChvKXtjYXNlIloiOm49ZSxpPXI7YnJlYWs7Y2Fz ZSJIIjpuPXRbMV07YnJlYWs7Y2FzZSJWIjppPXRbMV07YnJlYWs7Y2FzZSJNIjpuPWU9dFsx XSxpPXI9dFsyXTticmVhaztkZWZhdWx0Om49dFt0Lmxlbmd0aC0yXSxpPXRbdC5sZW5ndGgt MV19cmV0dXJuIHR9KSl9fSx7fV0sNzE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYoIXR8fG51bGw9PXQubGVuZ3RoKXRocm93IEVy cm9yKCJBcmd1bWVudCBzaG91bGQgYmUgYW4gYXJyYXkiKTtlPW51bGw9PWU/MTpNYXRoLmZs b29yKGUpO2Zvcih2YXIgcj1BcnJheSgyKmUpLG49MDtuPGU7bisrKXtmb3IodmFyIGk9LTEv MCxhPTEvMCxvPW4scz10Lmxlbmd0aDtvPHM7bys9ZSl0W29dPmkmJihpPXRbb10pLHRbb108 YSYmKGE9dFtvXSk7cltuXT1hLHJbZStuXT1pfXJldHVybiByfX0se31dLDcyOltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7aWYoImZ1 bmN0aW9uIj09dHlwZW9mIEFycmF5LnByb3RvdHlwZS5maW5kSW5kZXgpcmV0dXJuIHQuZmlu ZEluZGV4KGUscik7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJv cigicHJlZGljYXRlIG11c3QgYmUgYSBmdW5jdGlvbiIpO3ZhciBuPU9iamVjdCh0KSxpPW4u bGVuZ3RoO2lmKDA9PT1pKXJldHVybi0xO2Zvcih2YXIgYT0wO2E8aTthKyspaWYoZS5jYWxs KHIsblthXSxhLG4pKXJldHVybiBhO3JldHVybi0xfX0se31dLDczOltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImFycmF5LWJvdW5kcyIpO2UuZXhwb3J0cz1mdW5j dGlvbih0LGUscil7aWYoIXR8fG51bGw9PXQubGVuZ3RoKXRocm93IEVycm9yKCJBcmd1bWVu dCBzaG91bGQgYmUgYW4gYXJyYXkiKTtudWxsPT1lJiYoZT0xKTtudWxsPT1yJiYocj1uKHQs ZSkpO2Zvcih2YXIgaT0wO2k8ZTtpKyspe3ZhciBhPXJbZStpXSxvPXJbaV0scz1pLGw9dC5s ZW5ndGg7aWYoYT09PTEvMCYmbz09PS0xLzApZm9yKHM9aTtzPGw7cys9ZSl0W3NdPXRbc109 PT1hPzE6dFtzXT09PW8/MDouNTtlbHNlIGlmKGE9PT0xLzApZm9yKHM9aTtzPGw7cys9ZSl0 W3NdPXRbc109PT1hPzE6MDtlbHNlIGlmKG89PT0tMS8wKWZvcihzPWk7czxsO3MrPWUpdFtz XT10W3NdPT09bz8wOjE7ZWxzZXt2YXIgYz1hLW87Zm9yKHM9aTtzPGw7cys9ZSlpc05hTih0 W3NdKXx8KHRbc109MD09PWM/LjU6KHRbc10tbykvYyl9fXJldHVybiB0fX0seyJhcnJheS1i b3VuZHMiOjcxfV0sNzQ6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxl KXt2YXIgcj0ibnVtYmVyIj09dHlwZW9mIHQsbj0ibnVtYmVyIj09dHlwZW9mIGU7ciYmIW4/ KGU9dCx0PTApOnJ8fG58fCh0PTAsZT0wKTt2YXIgaT0oZXw9MCktKHR8PTApO2lmKGk8MCl0 aHJvdyBuZXcgRXJyb3IoImFycmF5IGxlbmd0aCBtdXN0IGJlIHBvc2l0aXZlIik7Zm9yKHZh ciBhPW5ldyBBcnJheShpKSxvPTAscz10O288aTtvKysscysrKWFbb109cztyZXR1cm4gYX19 LHt9XSw3NTpbZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihyKXsoZnVuY3Rpb24oKXsidXNl IHN0cmljdCI7dmFyIG49dCgib2JqZWN0LWFzc2lnbiIpOwovKiEKICogVGhlIGJ1ZmZlciBt b2R1bGUgZnJvbSBub2RlLmpzLCBmb3IgdGhlIGJyb3dzZXIuCiAqCiAqIEBhdXRob3IgICBG ZXJvc3MgQWJvdWtoYWRpamVoIDxmZXJvc3NAZmVyb3NzLm9yZz4gPGh0dHA6Ly9mZXJvc3Mu b3JnPgogKiBAbGljZW5zZSAgTUlUCiAqL2Z1bmN0aW9uIGkodCxlKXtpZih0PT09ZSlyZXR1 cm4gMDtmb3IodmFyIHI9dC5sZW5ndGgsbj1lLmxlbmd0aCxpPTAsYT1NYXRoLm1pbihyLG4p O2k8YTsrK2kpaWYodFtpXSE9PWVbaV0pe3I9dFtpXSxuPWVbaV07YnJlYWt9cmV0dXJuIHI8 bj8tMTpuPHI/MTowfWZ1bmN0aW9uIGEodCl7cmV0dXJuIHIuQnVmZmVyJiYiZnVuY3Rpb24i PT10eXBlb2Ygci5CdWZmZXIuaXNCdWZmZXI/ci5CdWZmZXIuaXNCdWZmZXIodCk6IShudWxs PT10fHwhdC5faXNCdWZmZXIpfXZhciBvPXQoInV0aWwvIikscz1PYmplY3QucHJvdG90eXBl Lmhhc093blByb3BlcnR5LGw9QXJyYXkucHJvdG90eXBlLnNsaWNlLGM9ImZvbyI9PT1mdW5j dGlvbigpe30ubmFtZTtmdW5jdGlvbiB1KHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRv U3RyaW5nLmNhbGwodCl9ZnVuY3Rpb24gZih0KXtyZXR1cm4hYSh0KSYmKCJmdW5jdGlvbiI9 PXR5cGVvZiByLkFycmF5QnVmZmVyJiYoImZ1bmN0aW9uIj09dHlwZW9mIEFycmF5QnVmZmVy LmlzVmlldz9BcnJheUJ1ZmZlci5pc1ZpZXcodCk6ISF0JiYodCBpbnN0YW5jZW9mIERhdGFW aWV3fHwhISh0LmJ1ZmZlciYmdC5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikpKSl9 dmFyIGg9ZS5leHBvcnRzPXkscD0vXHMqZnVuY3Rpb25ccysoW15cKFxzXSopXHMqLztmdW5j dGlvbiBkKHQpe2lmKG8uaXNGdW5jdGlvbih0KSl7aWYoYylyZXR1cm4gdC5uYW1lO3ZhciBl PXQudG9TdHJpbmcoKS5tYXRjaChwKTtyZXR1cm4gZSYmZVsxXX19ZnVuY3Rpb24gbSh0LGUp e3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90Lmxlbmd0aDxlP3Q6dC5zbGljZSgwLGUpOnR9 ZnVuY3Rpb24gZyh0KXtpZihjfHwhby5pc0Z1bmN0aW9uKHQpKXJldHVybiBvLmluc3BlY3Qo dCk7dmFyIGU9ZCh0KTtyZXR1cm4iW0Z1bmN0aW9uIisoZT8iOiAiK2U6IiIpKyJdIn1mdW5j dGlvbiB2KHQsZSxyLG4saSl7dGhyb3cgbmV3IGguQXNzZXJ0aW9uRXJyb3Ioe21lc3NhZ2U6 cixhY3R1YWw6dCxleHBlY3RlZDplLG9wZXJhdG9yOm4sc3RhY2tTdGFydEZ1bmN0aW9uOml9 KX1mdW5jdGlvbiB5KHQsZSl7dHx8dih0LCEwLGUsIj09IixoLm9rKX1mdW5jdGlvbiB4KHQs ZSxyLG4pe2lmKHQ9PT1lKXJldHVybiEwO2lmKGEodCkmJmEoZSkpcmV0dXJuIDA9PT1pKHQs ZSk7aWYoby5pc0RhdGUodCkmJm8uaXNEYXRlKGUpKXJldHVybiB0LmdldFRpbWUoKT09PWUu Z2V0VGltZSgpO2lmKG8uaXNSZWdFeHAodCkmJm8uaXNSZWdFeHAoZSkpcmV0dXJuIHQuc291 cmNlPT09ZS5zb3VyY2UmJnQuZ2xvYmFsPT09ZS5nbG9iYWwmJnQubXVsdGlsaW5lPT09ZS5t dWx0aWxpbmUmJnQubGFzdEluZGV4PT09ZS5sYXN0SW5kZXgmJnQuaWdub3JlQ2FzZT09PWUu aWdub3JlQ2FzZTtpZihudWxsIT09dCYmIm9iamVjdCI9PXR5cGVvZiB0fHxudWxsIT09ZSYm Im9iamVjdCI9PXR5cGVvZiBlKXtpZihmKHQpJiZmKGUpJiZ1KHQpPT09dShlKSYmISh0IGlu c3RhbmNlb2YgRmxvYXQzMkFycmF5fHx0IGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5KSlyZXR1 cm4gMD09PWkobmV3IFVpbnQ4QXJyYXkodC5idWZmZXIpLG5ldyBVaW50OEFycmF5KGUuYnVm ZmVyKSk7aWYoYSh0KSE9PWEoZSkpcmV0dXJuITE7dmFyIHM9KG49bnx8e2FjdHVhbDpbXSxl eHBlY3RlZDpbXX0pLmFjdHVhbC5pbmRleE9mKHQpO3JldHVybi0xIT09cyYmcz09PW4uZXhw ZWN0ZWQuaW5kZXhPZihlKXx8KG4uYWN0dWFsLnB1c2godCksbi5leHBlY3RlZC5wdXNoKGUp LGZ1bmN0aW9uKHQsZSxyLG4pe2lmKG51bGw9PXR8fG51bGw9PWUpcmV0dXJuITE7aWYoby5p c1ByaW1pdGl2ZSh0KXx8by5pc1ByaW1pdGl2ZShlKSlyZXR1cm4gdD09PWU7aWYociYmT2Jq ZWN0LmdldFByb3RvdHlwZU9mKHQpIT09T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpKXJldHVy biExO3ZhciBpPWIodCksYT1iKGUpO2lmKGkmJiFhfHwhaSYmYSlyZXR1cm4hMTtpZihpKXJl dHVybiB0PWwuY2FsbCh0KSxlPWwuY2FsbChlKSx4KHQsZSxyKTt2YXIgcyxjLHU9VCh0KSxm PVQoZSk7aWYodS5sZW5ndGghPT1mLmxlbmd0aClyZXR1cm4hMTtmb3IodS5zb3J0KCksZi5z b3J0KCksYz11Lmxlbmd0aC0xO2M+PTA7Yy0tKWlmKHVbY10hPT1mW2NdKXJldHVybiExO2Zv cihjPXUubGVuZ3RoLTE7Yz49MDtjLS0paWYocz11W2NdLCF4KHRbc10sZVtzXSxyLG4pKXJl dHVybiExO3JldHVybiEwfSh0LGUscixuKSl9cmV0dXJuIHI/dD09PWU6dD09ZX1mdW5jdGlv biBiKHQpe3JldHVybiJbb2JqZWN0IEFyZ3VtZW50c10iPT1PYmplY3QucHJvdG90eXBlLnRv U3RyaW5nLmNhbGwodCl9ZnVuY3Rpb24gXyh0LGUpe2lmKCF0fHwhZSlyZXR1cm4hMTtpZigi W29iamVjdCBSZWdFeHBdIj09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpKXJl dHVybiBlLnRlc3QodCk7dHJ5e2lmKHQgaW5zdGFuY2VvZiBlKXJldHVybiEwfWNhdGNoKHQp e31yZXR1cm4hRXJyb3IuaXNQcm90b3R5cGVPZihlKSYmITA9PT1lLmNhbGwoe30sdCl9ZnVu Y3Rpb24gdyh0LGUscixuKXt2YXIgaTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBu ZXcgVHlwZUVycm9yKCciYmxvY2siIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpOyJz dHJpbmciPT10eXBlb2YgciYmKG49cixyPW51bGwpLGk9ZnVuY3Rpb24odCl7dmFyIGU7dHJ5 e3QoKX1jYXRjaCh0KXtlPXR9cmV0dXJuIGV9KGUpLG49KHImJnIubmFtZT8iICgiK3IubmFt ZSsiKS4iOiIuIikrKG4/IiAiK246Ii4iKSx0JiYhaSYmdihpLHIsIk1pc3NpbmcgZXhwZWN0 ZWQgZXhjZXB0aW9uIituKTt2YXIgYT0ic3RyaW5nIj09dHlwZW9mIG4scz0hdCYmaSYmIXI7 aWYoKCF0JiZvLmlzRXJyb3IoaSkmJmEmJl8oaSxyKXx8cykmJnYoaSxyLCJHb3QgdW53YW50 ZWQgZXhjZXB0aW9uIituKSx0JiZpJiZyJiYhXyhpLHIpfHwhdCYmaSl0aHJvdyBpfWguQXNz ZXJ0aW9uRXJyb3I9ZnVuY3Rpb24odCl7dGhpcy5uYW1lPSJBc3NlcnRpb25FcnJvciIsdGhp cy5hY3R1YWw9dC5hY3R1YWwsdGhpcy5leHBlY3RlZD10LmV4cGVjdGVkLHRoaXMub3BlcmF0 b3I9dC5vcGVyYXRvcix0Lm1lc3NhZ2U/KHRoaXMubWVzc2FnZT10Lm1lc3NhZ2UsdGhpcy5n ZW5lcmF0ZWRNZXNzYWdlPSExKToodGhpcy5tZXNzYWdlPWZ1bmN0aW9uKHQpe3JldHVybiBt KGcodC5hY3R1YWwpLDEyOCkrIiAiK3Qub3BlcmF0b3IrIiAiK20oZyh0LmV4cGVjdGVkKSwx MjgpfSh0aGlzKSx0aGlzLmdlbmVyYXRlZE1lc3NhZ2U9ITApO3ZhciBlPXQuc3RhY2tTdGFy dEZ1bmN0aW9ufHx2O2lmKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKUVycm9yLmNhcHR1cmVT dGFja1RyYWNlKHRoaXMsZSk7ZWxzZXt2YXIgcj1uZXcgRXJyb3I7aWYoci5zdGFjayl7dmFy IG49ci5zdGFjayxpPWQoZSksYT1uLmluZGV4T2YoIlxuIitpKTtpZihhPj0wKXt2YXIgbz1u LmluZGV4T2YoIlxuIixhKzEpO249bi5zdWJzdHJpbmcobysxKX10aGlzLnN0YWNrPW59fX0s by5pbmhlcml0cyhoLkFzc2VydGlvbkVycm9yLEVycm9yKSxoLmZhaWw9dixoLm9rPXksaC5l cXVhbD1mdW5jdGlvbih0LGUscil7dCE9ZSYmdih0LGUsciwiPT0iLGguZXF1YWwpfSxoLm5v dEVxdWFsPWZ1bmN0aW9uKHQsZSxyKXt0PT1lJiZ2KHQsZSxyLCIhPSIsaC5ub3RFcXVhbCl9 LGguZGVlcEVxdWFsPWZ1bmN0aW9uKHQsZSxyKXt4KHQsZSwhMSl8fHYodCxlLHIsImRlZXBF cXVhbCIsaC5kZWVwRXF1YWwpfSxoLmRlZXBTdHJpY3RFcXVhbD1mdW5jdGlvbih0LGUscil7 eCh0LGUsITApfHx2KHQsZSxyLCJkZWVwU3RyaWN0RXF1YWwiLGguZGVlcFN0cmljdEVxdWFs KX0saC5ub3REZWVwRXF1YWw9ZnVuY3Rpb24odCxlLHIpe3godCxlLCExKSYmdih0LGUsciwi bm90RGVlcEVxdWFsIixoLm5vdERlZXBFcXVhbCl9LGgubm90RGVlcFN0cmljdEVxdWFsPWZ1 bmN0aW9uIHQoZSxyLG4pe3goZSxyLCEwKSYmdihlLHIsbiwibm90RGVlcFN0cmljdEVxdWFs Iix0KX0saC5zdHJpY3RFcXVhbD1mdW5jdGlvbih0LGUscil7dCE9PWUmJnYodCxlLHIsIj09 PSIsaC5zdHJpY3RFcXVhbCl9LGgubm90U3RyaWN0RXF1YWw9ZnVuY3Rpb24odCxlLHIpe3Q9 PT1lJiZ2KHQsZSxyLCIhPT0iLGgubm90U3RyaWN0RXF1YWwpfSxoLnRocm93cz1mdW5jdGlv bih0LGUscil7dyghMCx0LGUscil9LGguZG9lc05vdFRocm93PWZ1bmN0aW9uKHQsZSxyKXt3 KCExLHQsZSxyKX0saC5pZkVycm9yPWZ1bmN0aW9uKHQpe2lmKHQpdGhyb3cgdH0saC5zdHJp Y3Q9bigoZnVuY3Rpb24gdChlLHIpe2V8fHYoZSwhMCxyLCI9PSIsdCl9KSxoLHtlcXVhbDpo LnN0cmljdEVxdWFsLGRlZXBFcXVhbDpoLmRlZXBTdHJpY3RFcXVhbCxub3RFcXVhbDpoLm5v dFN0cmljdEVxdWFsLG5vdERlZXBFcXVhbDpoLm5vdERlZXBTdHJpY3RFcXVhbH0pLGguc3Ry aWN0LnN0cmljdD1oLnN0cmljdDt2YXIgVD1PYmplY3Qua2V5c3x8ZnVuY3Rpb24odCl7dmFy IGU9W107Zm9yKHZhciByIGluIHQpcy5jYWxsKHQscikmJmUucHVzaChyKTtyZXR1cm4gZX19 KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2ds b2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9m IHdpbmRvdz93aW5kb3c6e30pfSx7Im9iamVjdC1hc3NpZ24iOjI0NywidXRpbC8iOjc4fV0s NzY6W2Z1bmN0aW9uKHQsZSxyKXsiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmNyZWF0ZT9l LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt0LnN1cGVyXz1lLHQucHJvdG90eXBlPU9iamVjdC5j cmVhdGUoZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LGVudW1lcmFibGU6ITEs d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pfTplLmV4cG9ydHM9ZnVuY3Rpb24odCxl KXt0LnN1cGVyXz1lO3ZhciByPWZ1bmN0aW9uKCl7fTtyLnByb3RvdHlwZT1lLnByb3RvdHlw ZSx0LnByb3RvdHlwZT1uZXcgcix0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10fX0se31dLDc3 OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0JiYib2Jq ZWN0Ij09dHlwZW9mIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LmNvcHkmJiJmdW5jdGlvbiI9 PXR5cGVvZiB0LmZpbGwmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnJlYWRVSW50OH19LHt9XSw3 ODpbZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihlLG4peyhmdW5jdGlvbigpe3ZhciBpPS8l W3NkaiVdL2c7ci5mb3JtYXQ9ZnVuY3Rpb24odCl7aWYoIXYodCkpe2Zvcih2YXIgZT1bXSxy PTA7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyllLnB1c2gocyhhcmd1bWVudHNbcl0pKTtyZXR1 cm4gZS5qb2luKCIgIil9cj0xO2Zvcih2YXIgbj1hcmd1bWVudHMsYT1uLmxlbmd0aCxvPVN0 cmluZyh0KS5yZXBsYWNlKGksKGZ1bmN0aW9uKHQpe2lmKCIlJSI9PT10KXJldHVybiIlIjtp ZihyPj1hKXJldHVybiB0O3N3aXRjaCh0KXtjYXNlIiVzIjpyZXR1cm4gU3RyaW5nKG5bcisr XSk7Y2FzZSIlZCI6cmV0dXJuIE51bWJlcihuW3IrK10pO2Nhc2UiJWoiOnRyeXtyZXR1cm4g SlNPTi5zdHJpbmdpZnkobltyKytdKX1jYXRjaCh0KXtyZXR1cm4iW0NpcmN1bGFyXSJ9ZGVm YXVsdDpyZXR1cm4gdH19KSksbD1uW3JdO3I8YTtsPW5bKytyXSltKGwpfHwhYihsKT9vKz0i ICIrbDpvKz0iICIrcyhsKTtyZXR1cm4gb30sci5kZXByZWNhdGU9ZnVuY3Rpb24odCxpKXtp Zih5KG4ucHJvY2VzcykpcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHIuZGVwcmVjYXRlKHQs aSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtpZighMD09PWUubm9EZXByZWNhdGlvbilyZXR1 cm4gdDt2YXIgYT0hMTtyZXR1cm4gZnVuY3Rpb24oKXtpZighYSl7aWYoZS50aHJvd0RlcHJl Y2F0aW9uKXRocm93IG5ldyBFcnJvcihpKTtlLnRyYWNlRGVwcmVjYXRpb24/Y29uc29sZS50 cmFjZShpKTpjb25zb2xlLmVycm9yKGkpLGE9ITB9cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1 bWVudHMpfX07dmFyIGEsbz17fTtmdW5jdGlvbiBzKHQsZSl7dmFyIG49e3NlZW46W10sc3R5 bGl6ZTpjfTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD49MyYmKG4uZGVwdGg9YXJndW1lbnRz WzJdKSxhcmd1bWVudHMubGVuZ3RoPj00JiYobi5jb2xvcnM9YXJndW1lbnRzWzNdKSxkKGUp P24uc2hvd0hpZGRlbj1lOmUmJnIuX2V4dGVuZChuLGUpLHkobi5zaG93SGlkZGVuKSYmKG4u c2hvd0hpZGRlbj0hMSkseShuLmRlcHRoKSYmKG4uZGVwdGg9MikseShuLmNvbG9ycykmJihu LmNvbG9ycz0hMSkseShuLmN1c3RvbUluc3BlY3QpJiYobi5jdXN0b21JbnNwZWN0PSEwKSxu LmNvbG9ycyYmKG4uc3R5bGl6ZT1sKSx1KG4sdCxuLmRlcHRoKX1mdW5jdGlvbiBsKHQsZSl7 dmFyIHI9cy5zdHlsZXNbZV07cmV0dXJuIHI/Ilx4MWJbIitzLmNvbG9yc1tyXVswXSsibSIr dCsiXHgxYlsiK3MuY29sb3JzW3JdWzFdKyJtIjp0fWZ1bmN0aW9uIGModCxlKXtyZXR1cm4g dH1mdW5jdGlvbiB1KHQsZSxuKXtpZih0LmN1c3RvbUluc3BlY3QmJmUmJlQoZS5pbnNwZWN0 KSYmZS5pbnNwZWN0IT09ci5pbnNwZWN0JiYoIWUuY29uc3RydWN0b3J8fGUuY29uc3RydWN0 b3IucHJvdG90eXBlIT09ZSkpe3ZhciBpPWUuaW5zcGVjdChuLHQpO3JldHVybiB2KGkpfHwo aT11KHQsaSxuKSksaX12YXIgYT1mdW5jdGlvbih0LGUpe2lmKHkoZSkpcmV0dXJuIHQuc3R5 bGl6ZSgidW5kZWZpbmVkIiwidW5kZWZpbmVkIik7aWYodihlKSl7dmFyIHI9IiciK0pTT04u c3RyaW5naWZ5KGUpLnJlcGxhY2UoL14ifCIkL2csIiIpLnJlcGxhY2UoLycvZywiXFwnIiku cmVwbGFjZSgvXFwiL2csJyInKSsiJyI7cmV0dXJuIHQuc3R5bGl6ZShyLCJzdHJpbmciKX1p ZihnKGUpKXJldHVybiB0LnN0eWxpemUoIiIrZSwibnVtYmVyIik7aWYoZChlKSlyZXR1cm4g dC5zdHlsaXplKCIiK2UsImJvb2xlYW4iKTtpZihtKGUpKXJldHVybiB0LnN0eWxpemUoIm51 bGwiLCJudWxsIil9KHQsZSk7aWYoYSlyZXR1cm4gYTt2YXIgbz1PYmplY3Qua2V5cyhlKSxz PWZ1bmN0aW9uKHQpe3ZhciBlPXt9O3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQscil7 ZVt0XT0hMH0pKSxlfShvKTtpZih0LnNob3dIaWRkZW4mJihvPU9iamVjdC5nZXRPd25Qcm9w ZXJ0eU5hbWVzKGUpKSx3KGUpJiYoby5pbmRleE9mKCJtZXNzYWdlIik+PTB8fG8uaW5kZXhP ZigiZGVzY3JpcHRpb24iKT49MCkpcmV0dXJuIGYoZSk7aWYoMD09PW8ubGVuZ3RoKXtpZihU KGUpKXt2YXIgbD1lLm5hbWU/IjogIitlLm5hbWU6IiI7cmV0dXJuIHQuc3R5bGl6ZSgiW0Z1 bmN0aW9uIitsKyJdIiwic3BlY2lhbCIpfWlmKHgoZSkpcmV0dXJuIHQuc3R5bGl6ZShSZWdF eHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSksInJlZ2V4cCIpO2lmKF8oZSkpcmV0dXJu IHQuc3R5bGl6ZShEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLCJkYXRlIik7aWYo dyhlKSlyZXR1cm4gZihlKX12YXIgYyxiPSIiLGs9ITEsQT1bInsiLCJ9Il07KHAoZSkmJihr PSEwLEE9WyJbIiwiXSJdKSxUKGUpKSYmKGI9IiBbRnVuY3Rpb24iKyhlLm5hbWU/IjogIitl Lm5hbWU6IiIpKyJdIik7cmV0dXJuIHgoZSkmJihiPSIgIitSZWdFeHAucHJvdG90eXBlLnRv U3RyaW5nLmNhbGwoZSkpLF8oZSkmJihiPSIgIitEYXRlLnByb3RvdHlwZS50b1VUQ1N0cmlu Zy5jYWxsKGUpKSx3KGUpJiYoYj0iICIrZihlKSksMCE9PW8ubGVuZ3RofHxrJiYwIT1lLmxl bmd0aD9uPDA/eChlKT90LnN0eWxpemUoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxs KGUpLCJyZWdleHAiKTp0LnN0eWxpemUoIltPYmplY3RdIiwic3BlY2lhbCIpOih0LnNlZW4u cHVzaChlKSxjPWs/ZnVuY3Rpb24odCxlLHIsbixpKXtmb3IodmFyIGE9W10sbz0wLHM9ZS5s ZW5ndGg7bzxzOysrbylFKGUsU3RyaW5nKG8pKT9hLnB1c2goaCh0LGUscixuLFN0cmluZyhv KSwhMCkpOmEucHVzaCgiIik7cmV0dXJuIGkuZm9yRWFjaCgoZnVuY3Rpb24oaSl7aS5tYXRj aCgvXlxkKyQvKXx8YS5wdXNoKGgodCxlLHIsbixpLCEwKSl9KSksYX0odCxlLG4scyxvKTpv Lm1hcCgoZnVuY3Rpb24ocil7cmV0dXJuIGgodCxlLG4scyxyLGspfSkpLHQuc2Vlbi5wb3Ao KSxmdW5jdGlvbih0LGUscil7aWYodC5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUu aW5kZXhPZigiXG4iKT49MCYmMCx0K2UucmVwbGFjZSgvXHUwMDFiXFtcZFxkP20vZywiIiku bGVuZ3RoKzF9KSwwKT42MClyZXR1cm4gclswXSsoIiI9PT1lPyIiOmUrIlxuICIpKyIgIit0 LmpvaW4oIixcbiAgIikrIiAiK3JbMV07cmV0dXJuIHJbMF0rZSsiICIrdC5qb2luKCIsICIp KyIgIityWzFdfShjLGIsQSkpOkFbMF0rYitBWzFdfWZ1bmN0aW9uIGYodCl7cmV0dXJuIlsi K0Vycm9yLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpKyJdIn1mdW5jdGlvbiBoKHQsZSxy LG4saSxhKXt2YXIgbyxzLGw7aWYoKGw9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv cihlLGkpfHx7dmFsdWU6ZVtpXX0pLmdldD9zPWwuc2V0P3Quc3R5bGl6ZSgiW0dldHRlci9T ZXR0ZXJdIiwic3BlY2lhbCIpOnQuc3R5bGl6ZSgiW0dldHRlcl0iLCJzcGVjaWFsIik6bC5z ZXQmJihzPXQuc3R5bGl6ZSgiW1NldHRlcl0iLCJzcGVjaWFsIikpLEUobixpKXx8KG89Ilsi K2krIl0iKSxzfHwodC5zZWVuLmluZGV4T2YobC52YWx1ZSk8MD8ocz1tKHIpP3UodCxsLnZh bHVlLG51bGwpOnUodCxsLnZhbHVlLHItMSkpLmluZGV4T2YoIlxuIik+LTEmJihzPWE/cy5z cGxpdCgiXG4iKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiIgICIrdH0pKS5qb2luKCJcbiIp LnN1YnN0cigyKToiXG4iK3Muc3BsaXQoIlxuIikubWFwKChmdW5jdGlvbih0KXtyZXR1cm4i ICAgIit0fSkpLmpvaW4oIlxuIikpOnM9dC5zdHlsaXplKCJbQ2lyY3VsYXJdIiwic3BlY2lh bCIpKSx5KG8pKXtpZihhJiZpLm1hdGNoKC9eXGQrJC8pKXJldHVybiBzOyhvPUpTT04uc3Ry aW5naWZ5KCIiK2kpKS5tYXRjaCgvXiIoW2EtekEtWl9dW2EtekEtWl8wLTldKikiJC8pPyhv PW8uc3Vic3RyKDEsby5sZW5ndGgtMiksbz10LnN0eWxpemUobywibmFtZSIpKToobz1vLnJl cGxhY2UoLycvZywiXFwnIikucmVwbGFjZSgvXFwiL2csJyInKS5yZXBsYWNlKC8oXiJ8IiQp L2csIiciKSxvPXQuc3R5bGl6ZShvLCJzdHJpbmciKSl9cmV0dXJuIG8rIjogIitzfWZ1bmN0 aW9uIHAodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4i Ym9vbGVhbiI9PXR5cGVvZiB0fWZ1bmN0aW9uIG0odCl7cmV0dXJuIG51bGw9PT10fWZ1bmN0 aW9uIGcodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0fWZ1bmN0aW9uIHYodCl7cmV0dXJu InN0cmluZyI9PXR5cGVvZiB0fWZ1bmN0aW9uIHkodCl7cmV0dXJuIHZvaWQgMD09PXR9ZnVu Y3Rpb24geCh0KXtyZXR1cm4gYih0KSYmIltvYmplY3QgUmVnRXhwXSI9PT1rKHQpfWZ1bmN0 aW9uIGIodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dH1mdW5jdGlvbiBf KHQpe3JldHVybiBiKHQpJiYiW29iamVjdCBEYXRlXSI9PT1rKHQpfWZ1bmN0aW9uIHcodCl7 cmV0dXJuIGIodCkmJigiW29iamVjdCBFcnJvcl0iPT09ayh0KXx8dCBpbnN0YW5jZW9mIEVy cm9yKX1mdW5jdGlvbiBUKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0fWZ1bmN0aW9u IGsodCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlv biBBKHQpe3JldHVybiB0PDEwPyIwIit0LnRvU3RyaW5nKDEwKTp0LnRvU3RyaW5nKDEwKX1y LmRlYnVnbG9nPWZ1bmN0aW9uKHQpe2lmKHkoYSkmJihhPWUuZW52Lk5PREVfREVCVUd8fCIi KSx0PXQudG9VcHBlckNhc2UoKSwhb1t0XSlpZihuZXcgUmVnRXhwKCJcXGIiK3QrIlxcYiIs ImkiKS50ZXN0KGEpKXt2YXIgbj1lLnBpZDtvW3RdPWZ1bmN0aW9uKCl7dmFyIGU9ci5mb3Jt YXQuYXBwbHkocixhcmd1bWVudHMpO2NvbnNvbGUuZXJyb3IoIiVzICVkOiAlcyIsdCxuLGUp fX1lbHNlIG9bdF09ZnVuY3Rpb24oKXt9O3JldHVybiBvW3RdfSxyLmluc3BlY3Q9cyxzLmNv bG9ycz17Ym9sZDpbMSwyMl0saXRhbGljOlszLDIzXSx1bmRlcmxpbmU6WzQsMjRdLGludmVy c2U6WzcsMjddLHdoaXRlOlszNywzOV0sZ3JleTpbOTAsMzldLGJsYWNrOlszMCwzOV0sYmx1 ZTpbMzQsMzldLGN5YW46WzM2LDM5XSxncmVlbjpbMzIsMzldLG1hZ2VudGE6WzM1LDM5XSxy ZWQ6WzMxLDM5XSx5ZWxsb3c6WzMzLDM5XX0scy5zdHlsZXM9e3NwZWNpYWw6ImN5YW4iLG51 bWJlcjoieWVsbG93Iixib29sZWFuOiJ5ZWxsb3ciLHVuZGVmaW5lZDoiZ3JleSIsbnVsbDoi Ym9sZCIsc3RyaW5nOiJncmVlbiIsZGF0ZToibWFnZW50YSIscmVnZXhwOiJyZWQifSxyLmlz QXJyYXk9cCxyLmlzQm9vbGVhbj1kLHIuaXNOdWxsPW0sci5pc051bGxPclVuZGVmaW5lZD1m dW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dH0sci5pc051bWJlcj1nLHIuaXNTdHJpbmc9dixy LmlzU3ltYm9sPWZ1bmN0aW9uKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdH0sci5pc1Vu ZGVmaW5lZD15LHIuaXNSZWdFeHA9eCxyLmlzT2JqZWN0PWIsci5pc0RhdGU9XyxyLmlzRXJy b3I9dyxyLmlzRnVuY3Rpb249VCxyLmlzUHJpbWl0aXZlPWZ1bmN0aW9uKHQpe3JldHVybiBu dWxsPT09dHx8ImJvb2xlYW4iPT10eXBlb2YgdHx8Im51bWJlciI9PXR5cGVvZiB0fHwic3Ry aW5nIj09dHlwZW9mIHR8fCJzeW1ib2wiPT10eXBlb2YgdHx8dm9pZCAwPT09dH0sci5pc0J1 ZmZlcj10KCIuL3N1cHBvcnQvaXNCdWZmZXIiKTt2YXIgTT1bIkphbiIsIkZlYiIsIk1hciIs IkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJd O2Z1bmN0aW9uIFMoKXt2YXIgdD1uZXcgRGF0ZSxlPVtBKHQuZ2V0SG91cnMoKSksQSh0Lmdl dE1pbnV0ZXMoKSksQSh0LmdldFNlY29uZHMoKSldLmpvaW4oIjoiKTtyZXR1cm5bdC5nZXRE YXRlKCksTVt0LmdldE1vbnRoKCldLGVdLmpvaW4oIiAiKX1mdW5jdGlvbiBFKHQsZSl7cmV0 dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpfXIubG9nPWZ1 bmN0aW9uKCl7Y29uc29sZS5sb2coIiVzIC0gJXMiLFMoKSxyLmZvcm1hdC5hcHBseShyLGFy Z3VtZW50cykpfSxyLmluaGVyaXRzPXQoImluaGVyaXRzIiksci5fZXh0ZW5kPWZ1bmN0aW9u KHQsZSl7aWYoIWV8fCFiKGUpKXJldHVybiB0O2Zvcih2YXIgcj1PYmplY3Qua2V5cyhlKSxu PXIubGVuZ3RoO24tLTspdFtyW25dXT1lW3Jbbl1dO3JldHVybiB0fX0pLmNhbGwodGhpcyl9 KS5jYWxsKHRoaXMsdCgiX3Byb2Nlc3MiKSwidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9n bG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVv ZiB3aW5kb3c/d2luZG93Ont9KX0seyIuL3N1cHBvcnQvaXNCdWZmZXIiOjc3LF9wcm9jZXNz OjI3Nyxpbmhlcml0czo3Nn1dLDc5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Iu Ynl0ZUxlbmd0aD1mdW5jdGlvbih0KXt2YXIgZT1jKHQpLHI9ZVswXSxuPWVbMV07cmV0dXJu IDMqKHIrbikvNC1ufSxyLnRvQnl0ZUFycmF5PWZ1bmN0aW9uKHQpe3ZhciBlLHIsbj1jKHQp LG89blswXSxzPW5bMV0sbD1uZXcgYShmdW5jdGlvbih0LGUscil7cmV0dXJuIDMqKGUrcikv NC1yfSgwLG8scykpLHU9MCxmPXM+MD9vLTQ6bztmb3Iocj0wO3I8ZjtyKz00KWU9aVt0LmNo YXJDb2RlQXQocildPDwxOHxpW3QuY2hhckNvZGVBdChyKzEpXTw8MTJ8aVt0LmNoYXJDb2Rl QXQocisyKV08PDZ8aVt0LmNoYXJDb2RlQXQociszKV0sbFt1KytdPWU+PjE2JjI1NSxsW3Ur K109ZT4+OCYyNTUsbFt1KytdPTI1NSZlOzI9PT1zJiYoZT1pW3QuY2hhckNvZGVBdChyKV08 PDJ8aVt0LmNoYXJDb2RlQXQocisxKV0+PjQsbFt1KytdPTI1NSZlKTsxPT09cyYmKGU9aVt0 LmNoYXJDb2RlQXQocildPDwxMHxpW3QuY2hhckNvZGVBdChyKzEpXTw8NHxpW3QuY2hhckNv ZGVBdChyKzIpXT4+MixsW3UrK109ZT4+OCYyNTUsbFt1KytdPTI1NSZlKTtyZXR1cm4gbH0s ci5mcm9tQnl0ZUFycmF5PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyPXQubGVuZ3RoLGk9ciUz LGE9W10sbz0wLHM9ci1pO288cztvKz0xNjM4MylhLnB1c2godSh0LG8sbysxNjM4Mz5zP3M6 bysxNjM4MykpOzE9PT1pPyhlPXRbci0xXSxhLnB1c2gobltlPj4yXStuW2U8PDQmNjNdKyI9 PSIpKToyPT09aSYmKGU9KHRbci0yXTw8OCkrdFtyLTFdLGEucHVzaChuW2U+PjEwXStuW2U+ PjQmNjNdK25bZTw8MiY2M10rIj0iKSk7cmV0dXJuIGEuam9pbigiIil9O2Zvcih2YXIgbj1b XSxpPVtdLGE9InVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OEFycmF5P1VpbnQ4QXJyYXk6QXJy YXksbz0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2 d3h5ejAxMjM0NTY3ODkrLyIscz0wLGw9by5sZW5ndGg7czxsOysrcyluW3NdPW9bc10saVtv LmNoYXJDb2RlQXQocyldPXM7ZnVuY3Rpb24gYyh0KXt2YXIgZT10Lmxlbmd0aDtpZihlJTQ+ MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11 bHRpcGxlIG9mIDQiKTt2YXIgcj10LmluZGV4T2YoIj0iKTtyZXR1cm4tMT09PXImJihyPWUp LFtyLHI9PT1lPzA6NC1yJTRdfWZ1bmN0aW9uIHUodCxlLHIpe2Zvcih2YXIgaSxhLG89W10s cz1lO3M8cjtzKz0zKWk9KHRbc108PDE2JjE2NzExNjgwKSsodFtzKzFdPDw4JjY1MjgwKSso MjU1JnRbcysyXSksby5wdXNoKG5bKGE9aSk+PjE4JjYzXStuW2E+PjEyJjYzXStuW2E+PjYm NjNdK25bNjMmYV0pO3JldHVybiBvLmpvaW4oIiIpfWlbIi0iLmNoYXJDb2RlQXQoMCldPTYy LGlbIl8iLmNoYXJDb2RlQXQoMCldPTYzfSx7fV0sODA6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscixuLGkpe2Zvcih2YXIgYT1pKzE7bjw9aTspe3Zh ciBvPW4raT4+PjEscz10W29dOyh2b2lkIDAhPT1yP3IocyxlKTpzLWUpPj0wPyhhPW8saT1v LTEpOm49bysxfXJldHVybiBhfWZ1bmN0aW9uIGkodCxlLHIsbixpKXtmb3IodmFyIGE9aSsx O248PWk7KXt2YXIgbz1uK2k+Pj4xLHM9dFtvXTsodm9pZCAwIT09cj9yKHMsZSk6cy1lKT4w PyhhPW8saT1vLTEpOm49bysxfXJldHVybiBhfWZ1bmN0aW9uIGEodCxlLHIsbixpKXtmb3Io dmFyIGE9bi0xO248PWk7KXt2YXIgbz1uK2k+Pj4xLHM9dFtvXTsodm9pZCAwIT09cj9yKHMs ZSk6cy1lKTwwPyhhPW8sbj1vKzEpOmk9by0xfXJldHVybiBhfWZ1bmN0aW9uIG8odCxlLHIs bixpKXtmb3IodmFyIGE9bi0xO248PWk7KXt2YXIgbz1uK2k+Pj4xLHM9dFtvXTsodm9pZCAw IT09cj9yKHMsZSk6cy1lKTw9MD8oYT1vLG49bysxKTppPW8tMX1yZXR1cm4gYX1mdW5jdGlv biBzKHQsZSxyLG4saSl7Zm9yKDtuPD1pOyl7dmFyIGE9bitpPj4+MSxvPXRbYV0scz12b2lk IDAhPT1yP3IobyxlKTpvLWU7aWYoMD09PXMpcmV0dXJuIGE7czw9MD9uPWErMTppPWEtMX1y ZXR1cm4tMX1mdW5jdGlvbiBsKHQsZSxyLG4saSxhKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBl b2Ygcj9hKHQsZSxyLHZvaWQgMD09PW4/MDowfG4sdm9pZCAwPT09aT90Lmxlbmd0aC0xOjB8 aSk6YSh0LGUsdm9pZCAwLHZvaWQgMD09PXI/MDowfHIsdm9pZCAwPT09bj90Lmxlbmd0aC0x OjB8bil9ZS5leHBvcnRzPXtnZTpmdW5jdGlvbih0LGUscixpLGEpe3JldHVybiBsKHQsZSxy LGksYSxuKX0sZ3Q6ZnVuY3Rpb24odCxlLHIsbixhKXtyZXR1cm4gbCh0LGUscixuLGEsaSl9 LGx0OmZ1bmN0aW9uKHQsZSxyLG4saSl7cmV0dXJuIGwodCxlLHIsbixpLGEpfSxsZTpmdW5j dGlvbih0LGUscixuLGkpe3JldHVybiBsKHQsZSxyLG4saSxvKX0sZXE6ZnVuY3Rpb24odCxl LHIsbixpKXtyZXR1cm4gbCh0LGUscixuLGkscyl9fX0se31dLDgxOltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7dmFyIGU9MzI7cmV0dXJuKHQmPS10KSYm ZS0tLDY1NTM1JnQmJihlLT0xNiksMTY3MTE5MzUmdCYmKGUtPTgpLDI1MjY0NTEzNSZ0JiYo ZS09NCksODU4OTkzNDU5JnQmJihlLT0yKSwxNDMxNjU1NzY1JnQmJihlLT0xKSxlfXIuSU5U X0JJVFM9MzIsci5JTlRfTUFYPTIxNDc0ODM2NDcsci5JTlRfTUlOPS0xPDwzMSxyLnNpZ249 ZnVuY3Rpb24odCl7cmV0dXJuKHQ+MCktKHQ8MCl9LHIuYWJzPWZ1bmN0aW9uKHQpe3ZhciBl PXQ+PjMxO3JldHVybih0XmUpLWV9LHIubWluPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGVeKHRe ZSkmLSh0PGUpfSxyLm1heD1mdW5jdGlvbih0LGUpe3JldHVybiB0Xih0XmUpJi0odDxlKX0s ci5pc1BvdzI9ZnVuY3Rpb24odCl7cmV0dXJuISh0JnQtMXx8IXQpfSxyLmxvZzI9ZnVuY3Rp b24odCl7dmFyIGUscjtyZXR1cm4gZT0odD42NTUzNSk8PDQsZXw9cj0oKHQ+Pj49ZSk+MjU1 KTw8MyxlfD1yPSgodD4+Pj1yKT4xNSk8PDIsKGV8PXI9KCh0Pj4+PXIpPjMpPDwxKXwodD4+ Pj1yKT4+MX0sci5sb2cxMD1mdW5jdGlvbih0KXtyZXR1cm4gdD49MWU5Pzk6dD49MWU4Pzg6 dD49MWU3Pzc6dD49MWU2PzY6dD49MWU1PzU6dD49MWU0PzQ6dD49MWUzPzM6dD49MTAwPzI6 dD49MTA/MTowfSxyLnBvcENvdW50PWZ1bmN0aW9uKHQpe3JldHVybiAxNjg0MzAwOSooKHQ9 KDg1ODk5MzQ1OSYodC09dD4+PjEmMTQzMTY1NTc2NSkpKyh0Pj4+MiY4NTg5OTM0NTkpKSso dD4+PjQpJjI1MjY0NTEzNSk+Pj4yNH0sci5jb3VudFRyYWlsaW5nWmVyb3M9bixyLm5leHRQ b3cyPWZ1bmN0aW9uKHQpe3JldHVybiB0Kz0wPT09dCwtLXQsdHw9dD4+PjEsdHw9dD4+PjIs dHw9dD4+PjQsdHw9dD4+PjgsKHR8PXQ+Pj4xNikrMX0sci5wcmV2UG93Mj1mdW5jdGlvbih0 KXtyZXR1cm4gdHw9dD4+PjEsdHw9dD4+PjIsdHw9dD4+PjQsdHw9dD4+PjgsKHR8PXQ+Pj4x NiktKHQ+Pj4xKX0sci5wYXJpdHk9ZnVuY3Rpb24odCl7cmV0dXJuIHRePXQ+Pj4xNix0Xj10 Pj4+OCx0Xj10Pj4+NCwyNzAzMD4+Pih0Jj0xNSkmMX07dmFyIGk9bmV3IEFycmF5KDI1Nik7 IWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8MjU2OysrZSl7dmFyIHI9ZSxuPWUsaT03O2Zv cihyPj4+PTE7cjtyPj4+PTEpbjw8PTEsbnw9MSZyLC0taTt0W2VdPW48PGkmMjU1fX0oaSks ci5yZXZlcnNlPWZ1bmN0aW9uKHQpe3JldHVybiBpWzI1NSZ0XTw8MjR8aVt0Pj4+OCYyNTVd PDwxNnxpW3Q+Pj4xNiYyNTVdPDw4fGlbdD4+PjI0JjI1NV19LHIuaW50ZXJsZWF2ZTI9ZnVu Y3Rpb24odCxlKXtyZXR1cm4odD0xNDMxNjU1NzY1JigodD04NTg5OTM0NTkmKCh0PTI1MjY0 NTEzNSYoKHQ9MTY3MTE5MzUmKCh0Jj02NTUzNSl8dDw8OCkpfHQ8PDQpKXx0PDwyKSl8dDw8 MSkpfChlPTE0MzE2NTU3NjUmKChlPTg1ODk5MzQ1OSYoKGU9MjUyNjQ1MTM1JigoZT0xNjcx MTkzNSYoKGUmPTY1NTM1KXxlPDw4KSl8ZTw8NCkpfGU8PDIpKXxlPDwxKSk8PDF9LHIuZGVp bnRlcmxlYXZlMj1mdW5jdGlvbih0LGUpe3JldHVybih0PTY1NTM1JigodD0xNjcxMTkzNSYo KHQ9MjUyNjQ1MTM1JigodD04NTg5OTM0NTkmKCh0PXQ+Pj5lJjE0MzE2NTU3NjUpfHQ+Pj4x KSl8dD4+PjIpKXx0Pj4+NCkpfHQ+Pj4xNikpPDwxNj4+MTZ9LHIuaW50ZXJsZWF2ZTM9ZnVu Y3Rpb24odCxlLHIpe3JldHVybiB0PTEyMjcxMzM1MTMmKCh0PTMyNzIzNTYwMzUmKCh0PTI1 MTcxOTY5NSYoKHQ9NDI3ODE5MDMzNSYoKHQmPTEwMjMpfHQ8PDE2KSl8dDw8OCkpfHQ8PDQp KXx0PDwyKSwodHw9KGU9MTIyNzEzMzUxMyYoKGU9MzI3MjM1NjAzNSYoKGU9MjUxNzE5Njk1 JigoZT00Mjc4MTkwMzM1JigoZSY9MTAyMyl8ZTw8MTYpKXxlPDw4KSl8ZTw8NCkpfGU8PDIp KTw8MSl8KHI9MTIyNzEzMzUxMyYoKHI9MzI3MjM1NjAzNSYoKHI9MjUxNzE5Njk1Jigocj00 Mjc4MTkwMzM1JigociY9MTAyMyl8cjw8MTYpKXxyPDw4KSl8cjw8NCkpfHI8PDIpKTw8Mn0s ci5kZWludGVybGVhdmUzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuKHQ9MTAyMyYoKHQ9NDI3ODE5 MDMzNSYoKHQ9MjUxNzE5Njk1JigodD0zMjcyMzU2MDM1JigodD10Pj4+ZSYxMjI3MTMzNTEz KXx0Pj4+MikpfHQ+Pj40KSl8dD4+PjgpKXx0Pj4+MTYpKTw8MjI+PjIyfSxyLm5leHRDb21i aW5hdGlvbj1mdW5jdGlvbih0KXt2YXIgZT10fHQtMTtyZXR1cm4gZSsxfCh+ZSYtfmUpLTE+ Pj5uKHQpKzF9fSx7fV0sODI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiY2xhbXAiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtlfHwoZT17fSk7dmFyIHIsbyxz LGwsYyx1LGYsaCxwLGQsbSxnPW51bGw9PWUuY3V0b2ZmPy4yNTplLmN1dG9mZix2PW51bGw9 PWUucmFkaXVzPzg6ZS5yYWRpdXMseT1lLmNoYW5uZWx8fDA7aWYoQXJyYXlCdWZmZXIuaXNW aWV3KHQpfHxBcnJheS5pc0FycmF5KHQpKXtpZighZS53aWR0aHx8IWUuaGVpZ2h0KXRocm93 IEVycm9yKCJGb3IgcmF3IGRhdGEgd2lkdGggYW5kIGhlaWdodCBzaG91bGQgYmUgcHJvdmlk ZWQgYnkgb3B0aW9ucyIpO3I9ZS53aWR0aCxvPWUuaGVpZ2h0LGw9dCx1PWUuc3RyaWRlP2Uu c3RyaWRlOk1hdGguZmxvb3IodC5sZW5ndGgvci9vKX1lbHNlIHdpbmRvdy5IVE1MQ2FudmFz RWxlbWVudCYmdCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MQ2FudmFzRWxlbWVudD8oZj0oaD10 KS5nZXRDb250ZXh0KCIyZCIpLHI9aC53aWR0aCxvPWguaGVpZ2h0LHA9Zi5nZXRJbWFnZURh dGEoMCwwLHIsbyksbD1wLmRhdGEsdT00KTp3aW5kb3cuQ2FudmFzUmVuZGVyaW5nQ29udGV4 dDJEJiZ0IGluc3RhbmNlb2Ygd2luZG93LkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD8oaD10 LmNhbnZhcyxmPXQscj1oLndpZHRoLG89aC5oZWlnaHQscD1mLmdldEltYWdlRGF0YSgwLDAs cixvKSxsPXAuZGF0YSx1PTQpOndpbmRvdy5JbWFnZURhdGEmJnQgaW5zdGFuY2VvZiB3aW5k b3cuSW1hZ2VEYXRhJiYocD10LHI9dC53aWR0aCxvPXQuaGVpZ2h0LGw9cC5kYXRhLHU9NCk7 aWYocz1NYXRoLm1heChyLG8pLHdpbmRvdy5VaW50OENsYW1wZWRBcnJheSYmbCBpbnN0YW5j ZW9mIHdpbmRvdy5VaW50OENsYW1wZWRBcnJheXx8d2luZG93LlVpbnQ4QXJyYXkmJmwgaW5z dGFuY2VvZiB3aW5kb3cuVWludDhBcnJheSlmb3IoYz1sLGw9QXJyYXkocipvKSxkPTAsbT1j Lmxlbmd0aDtkPG07ZCsrKWxbZF09Y1tkKnUreV0vMjU1O2Vsc2UgaWYoMSE9PXUpdGhyb3cg RXJyb3IoIlJhdyBkYXRhIGNhbiBoYXZlIG9ubHkgMSB2YWx1ZSBwZXIgcGl4ZWwiKTt2YXIg eD1BcnJheShyKm8pLGI9QXJyYXkocipvKSxfPUFycmF5KHMpLHc9QXJyYXkocyksVD1BcnJh eShzKzEpLGs9QXJyYXkocyk7Zm9yKGQ9MCxtPXIqbztkPG07ZCsrKXt2YXIgQT1sW2RdO3hb ZF09MT09PUE/MDowPT09QT9pOk1hdGgucG93KE1hdGgubWF4KDAsLjUtQSksMiksYltkXT0x PT09QT9pOjA9PT1BPzA6TWF0aC5wb3coTWF0aC5tYXgoMCxBLS41KSwyKX1hKHgscixvLF8s dyxrLFQpLGEoYixyLG8sXyx3LGssVCk7dmFyIE09d2luZG93LkZsb2F0MzJBcnJheT9uZXcg RmxvYXQzMkFycmF5KHIqbyk6bmV3IEFycmF5KHIqbyk7Zm9yKGQ9MCxtPXIqbztkPG07ZCsr KU1bZF09bigxLSgoeFtkXS1iW2RdKS92K2cpLDAsMSk7cmV0dXJuIE19O3ZhciBpPTFlMjA7 ZnVuY3Rpb24gYSh0LGUscixuLGksYSxzKXtmb3IodmFyIGw9MDtsPGU7bCsrKXtmb3IodmFy IGM9MDtjPHI7YysrKW5bY109dFtjKmUrbF07Zm9yKG8obixpLGEscyxyKSxjPTA7YzxyO2Mr Kyl0W2MqZStsXT1pW2NdfWZvcihjPTA7YzxyO2MrKyl7Zm9yKGw9MDtsPGU7bCsrKW5bbF09 dFtjKmUrbF07Zm9yKG8obixpLGEscyxlKSxsPTA7bDxlO2wrKyl0W2MqZStsXT1NYXRoLnNx cnQoaVtsXSl9fWZ1bmN0aW9uIG8odCxlLHIsbixhKXtyWzBdPTAsblswXT0taSxuWzFdPStp O2Zvcih2YXIgbz0xLHM9MDtvPGE7bysrKXtmb3IodmFyIGw9KHRbb10rbypvLSh0W3Jbc11d K3Jbc10qcltzXSkpLygyKm8tMipyW3NdKTtsPD1uW3NdOylzLS0sbD0odFtvXStvKm8tKHRb cltzXV0rcltzXSpyW3NdKSkvKDIqby0yKnJbc10pO3JbKytzXT1vLG5bc109bCxuW3MrMV09 K2l9Zm9yKG89MCxzPTA7bzxhO28rKyl7Zm9yKDtuW3MrMV08bzspcysrO2Vbb109KG8tcltz XSkqKG8tcltzXSkrdFtyW3NdXX19fSx7Y2xhbXA6ODZ9XSw4MzpbZnVuY3Rpb24odCxlLHIp e30se31dLDg0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuLGk9Im9iamVj dCI9PXR5cGVvZiBSZWZsZWN0P1JlZmxlY3Q6bnVsbCxhPWkmJiJmdW5jdGlvbiI9PXR5cGVv ZiBpLmFwcGx5P2kuYXBwbHk6ZnVuY3Rpb24odCxlLHIpe3JldHVybiBGdW5jdGlvbi5wcm90 b3R5cGUuYXBwbHkuY2FsbCh0LGUscil9O249aSYmImZ1bmN0aW9uIj09dHlwZW9mIGkub3du S2V5cz9pLm93bktleXM6T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scz9mdW5jdGlvbih0 KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkuY29uY2F0KE9iamVjdC5n ZXRPd25Qcm9wZXJ0eVN5bWJvbHModCkpfTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0Lmdl dE93blByb3BlcnR5TmFtZXModCl9O3ZhciBvPU51bWJlci5pc05hTnx8ZnVuY3Rpb24odCl7 cmV0dXJuIHQhPXR9O2Z1bmN0aW9uIHMoKXtzLmluaXQuY2FsbCh0aGlzKX1lLmV4cG9ydHM9 cyxlLmV4cG9ydHMub25jZT1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVu Y3Rpb24ocixuKXtmdW5jdGlvbiBpKCl7dm9pZCAwIT09YSYmdC5yZW1vdmVMaXN0ZW5lcigi ZXJyb3IiLGEpLHIoW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKX12YXIgYTsiZXJyb3IiIT09 ZSYmKGE9ZnVuY3Rpb24ocil7dC5yZW1vdmVMaXN0ZW5lcihlLGkpLG4ocil9LHQub25jZSgi ZXJyb3IiLGEpKSx0Lm9uY2UoZSxpKX0pKX0scy5FdmVudEVtaXR0ZXI9cyxzLnByb3RvdHlw ZS5fZXZlbnRzPXZvaWQgMCxzLnByb3RvdHlwZS5fZXZlbnRzQ291bnQ9MCxzLnByb3RvdHlw ZS5fbWF4TGlzdGVuZXJzPXZvaWQgMDt2YXIgbD0xMDtmdW5jdGlvbiBjKHQpe2lmKCJmdW5j dGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAibGlzdGVuZXIiIGFy Z3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVv ZiB0KX1mdW5jdGlvbiB1KHQpe3JldHVybiB2b2lkIDA9PT10Ll9tYXhMaXN0ZW5lcnM/cy5k ZWZhdWx0TWF4TGlzdGVuZXJzOnQuX21heExpc3RlbmVyc31mdW5jdGlvbiBmKHQsZSxyLG4p e3ZhciBpLGEsbyxzO2lmKGMociksdm9pZCAwPT09KGE9dC5fZXZlbnRzKT8oYT10Ll9ldmVu dHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0Ll9ldmVudHNDb3VudD0wKToodm9pZCAwIT09YS5u ZXdMaXN0ZW5lciYmKHQuZW1pdCgibmV3TGlzdGVuZXIiLGUsci5saXN0ZW5lcj9yLmxpc3Rl bmVyOnIpLGE9dC5fZXZlbnRzKSxvPWFbZV0pLHZvaWQgMD09PW8pbz1hW2VdPXIsKyt0Ll9l dmVudHNDb3VudDtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBvP289YVtlXT1uP1tyLG9d OltvLHJdOm4/by51bnNoaWZ0KHIpOm8ucHVzaChyKSwoaT11KHQpKT4wJiZvLmxlbmd0aD5p JiYhby53YXJuZWQpe28ud2FybmVkPSEwO3ZhciBsPW5ldyBFcnJvcigiUG9zc2libGUgRXZl bnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiAiK28ubGVuZ3RoKyIgIitTdHJpbmco ZSkrIiBsaXN0ZW5lcnMgYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRv IGluY3JlYXNlIGxpbWl0Iik7bC5uYW1lPSJNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmci LGwuZW1pdHRlcj10LGwudHlwZT1lLGwuY291bnQ9by5sZW5ndGgscz1sLGNvbnNvbGUmJmNv bnNvbGUud2FybiYmY29uc29sZS53YXJuKHMpfXJldHVybiB0fWZ1bmN0aW9uIGgoKXtpZigh dGhpcy5maXJlZClyZXR1cm4gdGhpcy50YXJnZXQucmVtb3ZlTGlzdGVuZXIodGhpcy50eXBl LHRoaXMud3JhcEZuKSx0aGlzLmZpcmVkPSEwLDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMu bGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCk6dGhpcy5saXN0ZW5lci5hcHBseSh0aGlzLnRh cmdldCxhcmd1bWVudHMpfWZ1bmN0aW9uIHAodCxlLHIpe3ZhciBuPXtmaXJlZDohMSx3cmFw Rm46dm9pZCAwLHRhcmdldDp0LHR5cGU6ZSxsaXN0ZW5lcjpyfSxpPWguYmluZChuKTtyZXR1 cm4gaS5saXN0ZW5lcj1yLG4ud3JhcEZuPWksaX1mdW5jdGlvbiBkKHQsZSxyKXt2YXIgbj10 Ll9ldmVudHM7aWYodm9pZCAwPT09bilyZXR1cm5bXTt2YXIgaT1uW2VdO3JldHVybiB2b2lk IDA9PT1pP1tdOiJmdW5jdGlvbiI9PXR5cGVvZiBpP3I/W2kubGlzdGVuZXJ8fGldOltpXTpy P2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgQXJyYXkodC5sZW5ndGgpLHI9MDtyPGUubGVu Z3RoOysrcillW3JdPXRbcl0ubGlzdGVuZXJ8fHRbcl07cmV0dXJuIGV9KGkpOmcoaSxpLmxl bmd0aCl9ZnVuY3Rpb24gbSh0KXt2YXIgZT10aGlzLl9ldmVudHM7aWYodm9pZCAwIT09ZSl7 dmFyIHI9ZVt0XTtpZigiZnVuY3Rpb24iPT10eXBlb2YgcilyZXR1cm4gMTtpZih2b2lkIDAh PT1yKXJldHVybiByLmxlbmd0aH1yZXR1cm4gMH1mdW5jdGlvbiBnKHQsZSl7Zm9yKHZhciBy PW5ldyBBcnJheShlKSxuPTA7bjxlOysrbilyW25dPXRbbl07cmV0dXJuIHJ9T2JqZWN0LmRl ZmluZVByb3BlcnR5KHMsImRlZmF1bHRNYXhMaXN0ZW5lcnMiLHtlbnVtZXJhYmxlOiEwLGdl dDpmdW5jdGlvbigpe3JldHVybiBsfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIm51bWJlciIhPXR5 cGVvZiB0fHx0PDB8fG8odCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiAi ZGVmYXVsdE1heExpc3RlbmVycyIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9u LW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJyt0KyIuIik7bD10fX0pLHMuaW5pdD1mdW5j dGlvbigpe3ZvaWQgMCE9PXRoaXMuX2V2ZW50cyYmdGhpcy5fZXZlbnRzIT09T2JqZWN0Lmdl dFByb3RvdHlwZU9mKHRoaXMpLl9ldmVudHN8fCh0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0 ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wKSx0aGlzLl9tYXhMaXN0ZW5lcnM9dGhpcy5f bWF4TGlzdGVuZXJzfHx2b2lkIDB9LHMucHJvdG90eXBlLnNldE1heExpc3RlbmVycz1mdW5j dGlvbih0KXtpZigibnVtYmVyIiE9dHlwZW9mIHR8fHQ8MHx8byh0KSl0aHJvdyBuZXcgUmFu Z2VFcnJvcignVGhlIHZhbHVlIG9mICJuIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUg YSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnK3QrIi4iKTtyZXR1cm4gdGhpcy5f bWF4TGlzdGVuZXJzPXQsdGhpc30scy5wcm90b3R5cGUuZ2V0TWF4TGlzdGVuZXJzPWZ1bmN0 aW9uKCl7cmV0dXJuIHUodGhpcyl9LHMucHJvdG90eXBlLmVtaXQ9ZnVuY3Rpb24odCl7Zm9y KHZhciBlPVtdLHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKWUucHVzaChhcmd1bWVudHNb cl0pO3ZhciBuPSJlcnJvciI9PT10LGk9dGhpcy5fZXZlbnRzO2lmKHZvaWQgMCE9PWkpbj1u JiZ2b2lkIDA9PT1pLmVycm9yO2Vsc2UgaWYoIW4pcmV0dXJuITE7aWYobil7dmFyIG87aWYo ZS5sZW5ndGg+MCYmKG89ZVswXSksbyBpbnN0YW5jZW9mIEVycm9yKXRocm93IG87dmFyIHM9 bmV3IEVycm9yKCJVbmhhbmRsZWQgZXJyb3IuIisobz8iICgiK28ubWVzc2FnZSsiKSI6IiIp KTt0aHJvdyBzLmNvbnRleHQ9byxzfXZhciBsPWlbdF07aWYodm9pZCAwPT09bClyZXR1cm4h MTtpZigiZnVuY3Rpb24iPT10eXBlb2YgbClhKGwsdGhpcyxlKTtlbHNle3ZhciBjPWwubGVu Z3RoLHU9ZyhsLGMpO2ZvcihyPTA7cjxjOysrcilhKHVbcl0sdGhpcyxlKX1yZXR1cm4hMH0s cy5wcm90b3R5cGUuYWRkTGlzdGVuZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZih0aGlzLHQs ZSwhMSl9LHMucHJvdG90eXBlLm9uPXMucHJvdG90eXBlLmFkZExpc3RlbmVyLHMucHJvdG90 eXBlLnByZXBlbmRMaXN0ZW5lcj1mdW5jdGlvbih0LGUpe3JldHVybiBmKHRoaXMsdCxlLCEw KX0scy5wcm90b3R5cGUub25jZT1mdW5jdGlvbih0LGUpe3JldHVybiBjKGUpLHRoaXMub24o dCxwKHRoaXMsdCxlKSksdGhpc30scy5wcm90b3R5cGUucHJlcGVuZE9uY2VMaXN0ZW5lcj1m dW5jdGlvbih0LGUpe3JldHVybiBjKGUpLHRoaXMucHJlcGVuZExpc3RlbmVyKHQscCh0aGlz LHQsZSkpLHRoaXN9LHMucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKHQsZSl7 dmFyIHIsbixpLGEsbztpZihjKGUpLHZvaWQgMD09PShuPXRoaXMuX2V2ZW50cykpcmV0dXJu IHRoaXM7aWYodm9pZCAwPT09KHI9blt0XSkpcmV0dXJuIHRoaXM7aWYocj09PWV8fHIubGlz dGVuZXI9PT1lKTA9PS0tdGhpcy5fZXZlbnRzQ291bnQ/dGhpcy5fZXZlbnRzPU9iamVjdC5j cmVhdGUobnVsbCk6KGRlbGV0ZSBuW3RdLG4ucmVtb3ZlTGlzdGVuZXImJnRoaXMuZW1pdCgi cmVtb3ZlTGlzdGVuZXIiLHQsci5saXN0ZW5lcnx8ZSkpO2Vsc2UgaWYoImZ1bmN0aW9uIiE9 dHlwZW9mIHIpe2ZvcihpPS0xLGE9ci5sZW5ndGgtMTthPj0wO2EtLSlpZihyW2FdPT09ZXx8 clthXS5saXN0ZW5lcj09PWUpe289clthXS5saXN0ZW5lcixpPWE7YnJlYWt9aWYoaTwwKXJl dHVybiB0aGlzOzA9PT1pP3Iuc2hpZnQoKTpmdW5jdGlvbih0LGUpe2Zvcig7ZSsxPHQubGVu Z3RoO2UrKyl0W2VdPXRbZSsxXTt0LnBvcCgpfShyLGkpLDE9PT1yLmxlbmd0aCYmKG5bdF09 clswXSksdm9pZCAwIT09bi5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KCJyZW1vdmVMaXN0 ZW5lciIsdCxvfHxlKX1yZXR1cm4gdGhpc30scy5wcm90b3R5cGUub2ZmPXMucHJvdG90eXBl LnJlbW92ZUxpc3RlbmVyLHMucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlv bih0KXt2YXIgZSxyLG47aWYodm9pZCAwPT09KHI9dGhpcy5fZXZlbnRzKSlyZXR1cm4gdGhp cztpZih2b2lkIDA9PT1yLnJlbW92ZUxpc3RlbmVyKXJldHVybiAwPT09YXJndW1lbnRzLmxl bmd0aD8odGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291 bnQ9MCk6dm9pZCAwIT09clt0XSYmKDA9PS0tdGhpcy5fZXZlbnRzQ291bnQ/dGhpcy5fZXZl bnRzPU9iamVjdC5jcmVhdGUobnVsbCk6ZGVsZXRlIHJbdF0pLHRoaXM7aWYoMD09PWFyZ3Vt ZW50cy5sZW5ndGgpe3ZhciBpLGE9T2JqZWN0LmtleXMocik7Zm9yKG49MDtuPGEubGVuZ3Ro OysrbikicmVtb3ZlTGlzdGVuZXIiIT09KGk9YVtuXSkmJnRoaXMucmVtb3ZlQWxsTGlzdGVu ZXJzKGkpO3JldHVybiB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygicmVtb3ZlTGlzdGVuZXIi KSx0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0w LHRoaXN9aWYoImZ1bmN0aW9uIj09dHlwZW9mKGU9clt0XSkpdGhpcy5yZW1vdmVMaXN0ZW5l cih0LGUpO2Vsc2UgaWYodm9pZCAwIT09ZSlmb3Iobj1lLmxlbmd0aC0xO24+PTA7bi0tKXRo aXMucmVtb3ZlTGlzdGVuZXIodCxlW25dKTtyZXR1cm4gdGhpc30scy5wcm90b3R5cGUubGlz dGVuZXJzPWZ1bmN0aW9uKHQpe3JldHVybiBkKHRoaXMsdCwhMCl9LHMucHJvdG90eXBlLnJh d0xpc3RlbmVycz1mdW5jdGlvbih0KXtyZXR1cm4gZCh0aGlzLHQsITEpfSxzLmxpc3RlbmVy Q291bnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdC5saXN0ZW5l ckNvdW50P3QubGlzdGVuZXJDb3VudChlKTptLmNhbGwodCxlKX0scy5wcm90b3R5cGUubGlz dGVuZXJDb3VudD1tLHMucHJvdG90eXBlLmV2ZW50TmFtZXM9ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5fZXZlbnRzQ291bnQ+MD9uKHRoaXMuX2V2ZW50cyk6W119fSx7fV0sODU6W2Z1bmN0 aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSl7KGZ1bmN0aW9uKCl7Ci8qIQogKiBUaGUgYnVmZmVy IG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci4KICoKICogQGF1dGhvciAg IEZlcm9zcyBBYm91a2hhZGlqZWggPGh0dHBzOi8vZmVyb3NzLm9yZz4KICogQGxpY2Vuc2Ug IE1JVAogKi8KInVzZSBzdHJpY3QiO3ZhciBlPXQoImJhc2U2NC1qcyIpLG49dCgiaWVlZTc1 NCIpO3IuQnVmZmVyPWEsci5TbG93QnVmZmVyPWZ1bmN0aW9uKHQpeyt0IT10JiYodD0wKTty ZXR1cm4gYS5hbGxvYygrdCl9LHIuSU5TUEVDVF9NQVhfQllURVM9NTA7ZnVuY3Rpb24gaSh0 KXtpZih0PjIxNDc0ODM2NDcpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSAiJyt0 KyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAic2l6ZSInKTt2YXIgZT1uZXcgVWludDhBcnJh eSh0KTtyZXR1cm4gZS5fX3Byb3RvX189YS5wcm90b3R5cGUsZX1mdW5jdGlvbiBhKHQsZSxy KXtpZigibnVtYmVyIj09dHlwZW9mIHQpe2lmKCJzdHJpbmciPT10eXBlb2YgZSl0aHJvdyBu ZXcgVHlwZUVycm9yKCdUaGUgInN0cmluZyIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIHN0 cmluZy4gUmVjZWl2ZWQgdHlwZSBudW1iZXInKTtyZXR1cm4gbCh0KX1yZXR1cm4gbyh0LGUs cil9ZnVuY3Rpb24gbyh0LGUscil7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBmdW5j dGlvbih0LGUpeyJzdHJpbmciPT10eXBlb2YgZSYmIiIhPT1lfHwoZT0idXRmOCIpO2lmKCFh LmlzRW5jb2RpbmcoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzog IitlKTt2YXIgcj0wfGYodCxlKSxuPWkociksbz1uLndyaXRlKHQsZSk7byE9PXImJihuPW4u c2xpY2UoMCxvKSk7cmV0dXJuIG59KHQsZSk7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KHQpKXJl dHVybiBjKHQpO2lmKG51bGw9PXQpdGhyb3cgVHlwZUVycm9yKCJUaGUgZmlyc3QgYXJndW1l bnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFy cmF5LCBvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAiK3R5cGVvZiB0KTtp ZihCKHQsQXJyYXlCdWZmZXIpfHx0JiZCKHQuYnVmZmVyLEFycmF5QnVmZmVyKSlyZXR1cm4g ZnVuY3Rpb24odCxlLHIpe2lmKGU8MHx8dC5ieXRlTGVuZ3RoPGUpdGhyb3cgbmV3IFJhbmdl RXJyb3IoJyJvZmZzZXQiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpO2lmKHQuYnl0 ZUxlbmd0aDxlKyhyfHwwKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignImxlbmd0aCIgaXMgb3V0 c2lkZSBvZiBidWZmZXIgYm91bmRzJyk7dmFyIG47bj12b2lkIDA9PT1lJiZ2b2lkIDA9PT1y P25ldyBVaW50OEFycmF5KHQpOnZvaWQgMD09PXI/bmV3IFVpbnQ4QXJyYXkodCxlKTpuZXcg VWludDhBcnJheSh0LGUscik7cmV0dXJuIG4uX19wcm90b19fPWEucHJvdG90eXBlLG59KHQs ZSxyKTtpZigibnVtYmVyIj09dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJ2 YWx1ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5 cGUgbnVtYmVyJyk7dmFyIG49dC52YWx1ZU9mJiZ0LnZhbHVlT2YoKTtpZihudWxsIT1uJiZu IT09dClyZXR1cm4gYS5mcm9tKG4sZSxyKTt2YXIgbz1mdW5jdGlvbih0KXtpZihhLmlzQnVm ZmVyKHQpKXt2YXIgZT0wfHUodC5sZW5ndGgpLHI9aShlKTtyZXR1cm4gMD09PXIubGVuZ3Ro fHx0LmNvcHkociwwLDAsZSkscn1pZih2b2lkIDAhPT10Lmxlbmd0aClyZXR1cm4ibnVtYmVy IiE9dHlwZW9mIHQubGVuZ3RofHxOKHQubGVuZ3RoKT9pKDApOmModCk7aWYoIkJ1ZmZlciI9 PT10LnR5cGUmJkFycmF5LmlzQXJyYXkodC5kYXRhKSlyZXR1cm4gYyh0LmRhdGEpfSh0KTtp ZihvKXJldHVybiBvO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1TeW1i b2wudG9QcmltaXRpdmUmJiJmdW5jdGlvbiI9PXR5cGVvZiB0W1N5bWJvbC50b1ByaW1pdGl2 ZV0pcmV0dXJuIGEuZnJvbSh0W1N5bWJvbC50b1ByaW1pdGl2ZV0oInN0cmluZyIpLGUscik7 dGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9m IHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlr ZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgIit0eXBlb2YgdCl9ZnVuY3Rpb24gcyh0KXtpZigi bnVtYmVyIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50 IG11c3QgYmUgb2YgdHlwZSBudW1iZXInKTtpZih0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3Io J1RoZSB2YWx1ZSAiJyt0KyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAic2l6ZSInKX1mdW5j dGlvbiBsKHQpe3JldHVybiBzKHQpLGkodDwwPzA6MHx1KHQpKX1mdW5jdGlvbiBjKHQpe2Zv cih2YXIgZT10Lmxlbmd0aDwwPzA6MHx1KHQubGVuZ3RoKSxyPWkoZSksbj0wO248ZTtuKz0x KXJbbl09MjU1JnRbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gdSh0KXtpZih0Pj0yMTQ3NDgzNjQ3 KXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJn ZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4IisyMTQ3NDgzNjQ3Li50b1N0cmluZygxNikrIiBi eXRlcyIpO3JldHVybiAwfHR9ZnVuY3Rpb24gZih0LGUpe2lmKGEuaXNCdWZmZXIodCkpcmV0 dXJuIHQubGVuZ3RoO2lmKEFycmF5QnVmZmVyLmlzVmlldyh0KXx8Qih0LEFycmF5QnVmZmVy KSlyZXR1cm4gdC5ieXRlTGVuZ3RoO2lmKCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBuZXcg VHlwZUVycm9yKCdUaGUgInN0cmluZyIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBz dHJpbmcsIEJ1ZmZlciwgb3IgQXJyYXlCdWZmZXIuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2Yg dCk7dmFyIHI9dC5sZW5ndGgsbj1hcmd1bWVudHMubGVuZ3RoPjImJiEwPT09YXJndW1lbnRz WzJdO2lmKCFuJiYwPT09cilyZXR1cm4gMDtmb3IodmFyIGk9ITE7Oylzd2l0Y2goZSl7Y2Fz ZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gcjtjYXNlInV0Zjgi OmNhc2UidXRmLTgiOnJldHVybiBEKHQpLmxlbmd0aDtjYXNlInVjczIiOmNhc2UidWNzLTIi OmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIDIqcjtjYXNlImhleCI6cmV0 dXJuIHI+Pj4xO2Nhc2UiYmFzZTY0IjpyZXR1cm4gUih0KS5sZW5ndGg7ZGVmYXVsdDppZihp KXJldHVybiBuPy0xOkQodCkubGVuZ3RoO2U9KCIiK2UpLnRvTG93ZXJDYXNlKCksaT0hMH19 ZnVuY3Rpb24gaCh0LGUscil7dmFyIG49ITE7aWYoKHZvaWQgMD09PWV8fGU8MCkmJihlPTAp LGU+dGhpcy5sZW5ndGgpcmV0dXJuIiI7aWYoKHZvaWQgMD09PXJ8fHI+dGhpcy5sZW5ndGgp JiYocj10aGlzLmxlbmd0aCkscjw9MClyZXR1cm4iIjtpZigocj4+Pj0wKTw9KGU+Pj49MCkp cmV0dXJuIiI7Zm9yKHR8fCh0PSJ1dGY4Iik7Oylzd2l0Y2godCl7Y2FzZSJoZXgiOnJldHVy biBNKHRoaXMsZSxyKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBUKHRoaXMsZSxy KTtjYXNlImFzY2lpIjpyZXR1cm4gayh0aGlzLGUscik7Y2FzZSJsYXRpbjEiOmNhc2UiYmlu YXJ5IjpyZXR1cm4gQSh0aGlzLGUscik7Y2FzZSJiYXNlNjQiOnJldHVybiB3KHRoaXMsZSxy KTtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6 cmV0dXJuIFModGhpcyxlLHIpO2RlZmF1bHQ6aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJV bmtub3duIGVuY29kaW5nOiAiK3QpO3Q9KHQrIiIpLnRvTG93ZXJDYXNlKCksbj0hMH19ZnVu Y3Rpb24gcCh0LGUscil7dmFyIG49dFtlXTt0W2VdPXRbcl0sdFtyXT1ufWZ1bmN0aW9uIGQo dCxlLHIsbixpKXtpZigwPT09dC5sZW5ndGgpcmV0dXJuLTE7aWYoInN0cmluZyI9PXR5cGVv ZiByPyhuPXIscj0wKTpyPjIxNDc0ODM2NDc/cj0yMTQ3NDgzNjQ3OnI8LTIxNDc0ODM2NDgm JihyPS0yMTQ3NDgzNjQ4KSxOKHI9K3IpJiYocj1pPzA6dC5sZW5ndGgtMSkscjwwJiYocj10 Lmxlbmd0aCtyKSxyPj10Lmxlbmd0aCl7aWYoaSlyZXR1cm4tMTtyPXQubGVuZ3RoLTF9ZWxz ZSBpZihyPDApe2lmKCFpKXJldHVybi0xO3I9MH1pZigic3RyaW5nIj09dHlwZW9mIGUmJihl PWEuZnJvbShlLG4pKSxhLmlzQnVmZmVyKGUpKXJldHVybiAwPT09ZS5sZW5ndGg/LTE6bSh0 LGUscixuLGkpO2lmKCJudW1iZXIiPT10eXBlb2YgZSlyZXR1cm4gZSY9MjU1LCJmdW5jdGlv biI9PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mP2k/VWludDhBcnJheS5w cm90b3R5cGUuaW5kZXhPZi5jYWxsKHQsZSxyKTpVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0 SW5kZXhPZi5jYWxsKHQsZSxyKTptKHQsW2VdLHIsbixpKTt0aHJvdyBuZXcgVHlwZUVycm9y KCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXIiKX1mdW5jdGlvbiBtKHQs ZSxyLG4saSl7dmFyIGEsbz0xLHM9dC5sZW5ndGgsbD1lLmxlbmd0aDtpZih2b2lkIDAhPT1u JiYoInVjczIiPT09KG49U3RyaW5nKG4pLnRvTG93ZXJDYXNlKCkpfHwidWNzLTIiPT09bnx8 InV0ZjE2bGUiPT09bnx8InV0Zi0xNmxlIj09PW4pKXtpZih0Lmxlbmd0aDwyfHxlLmxlbmd0 aDwyKXJldHVybi0xO289MixzLz0yLGwvPTIsci89Mn1mdW5jdGlvbiBjKHQsZSl7cmV0dXJu IDE9PT1vP3RbZV06dC5yZWFkVUludDE2QkUoZSpvKX1pZihpKXt2YXIgdT0tMTtmb3IoYT1y O2E8czthKyspaWYoYyh0LGEpPT09YyhlLC0xPT09dT8wOmEtdSkpe2lmKC0xPT09dSYmKHU9 YSksYS11KzE9PT1sKXJldHVybiB1Km99ZWxzZS0xIT09dSYmKGEtPWEtdSksdT0tMX1lbHNl IGZvcihyK2w+cyYmKHI9cy1sKSxhPXI7YT49MDthLS0pe2Zvcih2YXIgZj0hMCxoPTA7aDxs O2grKylpZihjKHQsYStoKSE9PWMoZSxoKSl7Zj0hMTticmVha31pZihmKXJldHVybiBhfXJl dHVybi0xfWZ1bmN0aW9uIGcodCxlLHIsbil7cj1OdW1iZXIocil8fDA7dmFyIGk9dC5sZW5n dGgtcjtuPyhuPU51bWJlcihuKSk+aSYmKG49aSk6bj1pO3ZhciBhPWUubGVuZ3RoO24+YS8y JiYobj1hLzIpO2Zvcih2YXIgbz0wO288bjsrK28pe3ZhciBzPXBhcnNlSW50KGUuc3Vic3Ry KDIqbywyKSwxNik7aWYoTihzKSlyZXR1cm4gbzt0W3Irb109c31yZXR1cm4gb31mdW5jdGlv biB2KHQsZSxyLG4pe3JldHVybiBGKEQoZSx0Lmxlbmd0aC1yKSx0LHIsbil9ZnVuY3Rpb24g eSh0LGUscixuKXtyZXR1cm4gRihmdW5jdGlvbih0KXtmb3IodmFyIGU9W10scj0wO3I8dC5s ZW5ndGg7KytyKWUucHVzaCgyNTUmdC5jaGFyQ29kZUF0KHIpKTtyZXR1cm4gZX0oZSksdCxy LG4pfWZ1bmN0aW9uIHgodCxlLHIsbil7cmV0dXJuIHkodCxlLHIsbil9ZnVuY3Rpb24gYih0 LGUscixuKXtyZXR1cm4gRihSKGUpLHQscixuKX1mdW5jdGlvbiBfKHQsZSxyLG4pe3JldHVy biBGKGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByLG4saSxhPVtdLG89MDtvPHQubGVuZ3RoJiYh KChlLT0yKTwwKTsrK28pcj10LmNoYXJDb2RlQXQobyksbj1yPj44LGk9ciUyNTYsYS5wdXNo KGkpLGEucHVzaChuKTtyZXR1cm4gYX0oZSx0Lmxlbmd0aC1yKSx0LHIsbil9ZnVuY3Rpb24g dyh0LHIsbil7cmV0dXJuIDA9PT1yJiZuPT09dC5sZW5ndGg/ZS5mcm9tQnl0ZUFycmF5KHQp OmUuZnJvbUJ5dGVBcnJheSh0LnNsaWNlKHIsbikpfWZ1bmN0aW9uIFQodCxlLHIpe3I9TWF0 aC5taW4odC5sZW5ndGgscik7Zm9yKHZhciBuPVtdLGk9ZTtpPHI7KXt2YXIgYSxvLHMsbCxj PXRbaV0sdT1udWxsLGY9Yz4yMzk/NDpjPjIyMz8zOmM+MTkxPzI6MTtpZihpK2Y8PXIpc3dp dGNoKGYpe2Nhc2UgMTpjPDEyOCYmKHU9Yyk7YnJlYWs7Y2FzZSAyOjEyOD09KDE5MiYoYT10 W2krMV0pKSYmKGw9KDMxJmMpPDw2fDYzJmEpPjEyNyYmKHU9bCk7YnJlYWs7Y2FzZSAzOmE9 dFtpKzFdLG89dFtpKzJdLDEyOD09KDE5MiZhKSYmMTI4PT0oMTkyJm8pJiYobD0oMTUmYyk8 PDEyfCg2MyZhKTw8Nnw2MyZvKT4yMDQ3JiYobDw1NTI5Nnx8bD41NzM0MykmJih1PWwpO2Jy ZWFrO2Nhc2UgNDphPXRbaSsxXSxvPXRbaSsyXSxzPXRbaSszXSwxMjg9PSgxOTImYSkmJjEy OD09KDE5MiZvKSYmMTI4PT0oMTkyJnMpJiYobD0oMTUmYyk8PDE4fCg2MyZhKTw8MTJ8KDYz Jm8pPDw2fDYzJnMpPjY1NTM1JiZsPDExMTQxMTImJih1PWwpfW51bGw9PT11Pyh1PTY1NTMz LGY9MSk6dT42NTUzNSYmKHUtPTY1NTM2LG4ucHVzaCh1Pj4+MTAmMTAyM3w1NTI5NiksdT01 NjMyMHwxMDIzJnUpLG4ucHVzaCh1KSxpKz1mfXJldHVybiBmdW5jdGlvbih0KXt2YXIgZT10 Lmxlbmd0aDtpZihlPD00MDk2KXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0 cmluZyx0KTt2YXIgcj0iIixuPTA7Zm9yKDtuPGU7KXIrPVN0cmluZy5mcm9tQ2hhckNvZGUu YXBwbHkoU3RyaW5nLHQuc2xpY2UobixuKz00MDk2KSk7cmV0dXJuIHJ9KG4pfXIua01heExl bmd0aD0yMTQ3NDgzNjQ3LGEuVFlQRURfQVJSQVlfU1VQUE9SVD1mdW5jdGlvbigpe3RyeXt2 YXIgdD1uZXcgVWludDhBcnJheSgxKTtyZXR1cm4gdC5fX3Byb3RvX189e19fcHJvdG9fXzpV aW50OEFycmF5LnByb3RvdHlwZSxmb286ZnVuY3Rpb24oKXtyZXR1cm4gNDJ9fSw0Mj09PXQu Zm9vKCl9Y2F0Y2godCl7cmV0dXJuITF9fSgpLGEuVFlQRURfQVJSQVlfU1VQUE9SVHx8InVu ZGVmaW5lZCI9PXR5cGVvZiBjb25zb2xlfHwiZnVuY3Rpb24iIT10eXBlb2YgY29uc29sZS5l cnJvcnx8Y29uc29sZS5lcnJvcigiVGhpcyBicm93c2VyIGxhY2tzIHR5cGVkIGFycmF5IChV aW50OEFycmF5KSBzdXBwb3J0IHdoaWNoIGlzIHJlcXVpcmVkIGJ5IGBidWZmZXJgIHY1Lngu IFVzZSBgYnVmZmVyYCB2NC54IGlmIHlvdSByZXF1aXJlIG9sZCBicm93c2VyIHN1cHBvcnQu IiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEucHJvdG90eXBlLCJwYXJlbnQiLHtlbnVtZXJh YmxlOiEwLGdldDpmdW5jdGlvbigpe2lmKGEuaXNCdWZmZXIodGhpcykpcmV0dXJuIHRoaXMu YnVmZmVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLnByb3RvdHlwZSwib2Zmc2V0Iix7 ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtpZihhLmlzQnVmZmVyKHRoaXMpKXJldHVy biB0aGlzLmJ5dGVPZmZzZXR9fSksInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwh PVN5bWJvbC5zcGVjaWVzJiZhW1N5bWJvbC5zcGVjaWVzXT09PWEmJk9iamVjdC5kZWZpbmVQ cm9wZXJ0eShhLFN5bWJvbC5zcGVjaWVzLHt2YWx1ZTpudWxsLGNvbmZpZ3VyYWJsZTohMCxl bnVtZXJhYmxlOiExLHdyaXRhYmxlOiExfSksYS5wb29sU2l6ZT04MTkyLGEuZnJvbT1mdW5j dGlvbih0LGUscil7cmV0dXJuIG8odCxlLHIpfSxhLnByb3RvdHlwZS5fX3Byb3RvX189VWlu dDhBcnJheS5wcm90b3R5cGUsYS5fX3Byb3RvX189VWludDhBcnJheSxhLmFsbG9jPWZ1bmN0 aW9uKHQsZSxyKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3JldHVybiBzKHQpLHQ8PTA/aSh0 KTp2b2lkIDAhPT1lPyJzdHJpbmciPT10eXBlb2Ygcj9pKHQpLmZpbGwoZSxyKTppKHQpLmZp bGwoZSk6aSh0KX0odCxlLHIpfSxhLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKHQpe3JldHVybiBs KHQpfSxhLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbih0KXtyZXR1cm4gbCh0KX0sYS5pc0J1 ZmZlcj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmITA9PT10Ll9pc0J1ZmZlciYmdCE9 PWEucHJvdG90eXBlfSxhLmNvbXBhcmU9ZnVuY3Rpb24odCxlKXtpZihCKHQsVWludDhBcnJh eSkmJih0PWEuZnJvbSh0LHQub2Zmc2V0LHQuYnl0ZUxlbmd0aCkpLEIoZSxVaW50OEFycmF5 KSYmKGU9YS5mcm9tKGUsZS5vZmZzZXQsZS5ieXRlTGVuZ3RoKSksIWEuaXNCdWZmZXIodCl8 fCFhLmlzQnVmZmVyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAiYnVmMSIsICJidWYy IiBhcmd1bWVudHMgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheScp O2lmKHQ9PT1lKXJldHVybiAwO2Zvcih2YXIgcj10Lmxlbmd0aCxuPWUubGVuZ3RoLGk9MCxv PU1hdGgubWluKHIsbik7aTxvOysraSlpZih0W2ldIT09ZVtpXSl7cj10W2ldLG49ZVtpXTti cmVha31yZXR1cm4gcjxuPy0xOm48cj8xOjB9LGEuaXNFbmNvZGluZz1mdW5jdGlvbih0KXtz d2l0Y2goU3RyaW5nKHQpLnRvTG93ZXJDYXNlKCkpe2Nhc2UiaGV4IjpjYXNlInV0ZjgiOmNh c2UidXRmLTgiOmNhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6Y2FzZSJi YXNlNjQiOmNhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0x NmxlIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0sYS5jb25jYXQ9ZnVuY3Rpb24odCxl KXtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJn dW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7aWYoMD09PXQubGVuZ3RoKXJl dHVybiBhLmFsbG9jKDApO3ZhciByO2lmKHZvaWQgMD09PWUpZm9yKGU9MCxyPTA7cjx0Lmxl bmd0aDsrK3IpZSs9dFtyXS5sZW5ndGg7dmFyIG49YS5hbGxvY1Vuc2FmZShlKSxpPTA7Zm9y KHI9MDtyPHQubGVuZ3RoOysrcil7dmFyIG89dFtyXTtpZihCKG8sVWludDhBcnJheSkmJihv PWEuZnJvbShvKSksIWEuaXNCdWZmZXIobykpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3Qi IGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO28uY29weShuLGkpLGkr PW8ubGVuZ3RofXJldHVybiBufSxhLmJ5dGVMZW5ndGg9ZixhLnByb3RvdHlwZS5faXNCdWZm ZXI9ITAsYS5wcm90b3R5cGUuc3dhcDE2PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5sZW5ndGg7 aWYodCUyIT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEg bXVsdGlwbGUgb2YgMTYtYml0cyIpO2Zvcih2YXIgZT0wO2U8dDtlKz0yKXAodGhpcyxlLGUr MSk7cmV0dXJuIHRoaXN9LGEucHJvdG90eXBlLnN3YXAzMj1mdW5jdGlvbigpe3ZhciB0PXRo aXMubGVuZ3RoO2lmKHQlNCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUg bXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHMiKTtmb3IodmFyIGU9MDtlPHQ7ZSs9NClw KHRoaXMsZSxlKzMpLHAodGhpcyxlKzEsZSsyKTtyZXR1cm4gdGhpc30sYS5wcm90b3R5cGUu c3dhcDY0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5sZW5ndGg7aWYodCU4IT0wKXRocm93IG5l dyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0 cyIpO2Zvcih2YXIgZT0wO2U8dDtlKz04KXAodGhpcyxlLGUrNykscCh0aGlzLGUrMSxlKzYp LHAodGhpcyxlKzIsZSs1KSxwKHRoaXMsZSszLGUrNCk7cmV0dXJuIHRoaXN9LGEucHJvdG90 eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5sZW5ndGg7cmV0dXJuIDA9PT10 PyIiOjA9PT1hcmd1bWVudHMubGVuZ3RoP1QodGhpcywwLHQpOmguYXBwbHkodGhpcyxhcmd1 bWVudHMpfSxhLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZz1hLnByb3RvdHlwZS50b1N0cmlu ZyxhLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7aWYoIWEuaXNCdWZmZXIodCkpdGhy b3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO3JldHVybiB0 aGlzPT09dHx8MD09PWEuY29tcGFyZSh0aGlzLHQpfSxhLnByb3RvdHlwZS5pbnNwZWN0PWZ1 bmN0aW9uKCl7dmFyIHQ9IiIsZT1yLklOU1BFQ1RfTUFYX0JZVEVTO3JldHVybiB0PXRoaXMu dG9TdHJpbmcoImhleCIsMCxlKS5yZXBsYWNlKC8oLnsyfSkvZywiJDEgIikudHJpbSgpLHRo aXMubGVuZ3RoPmUmJih0Kz0iIC4uLiAiKSwiPEJ1ZmZlciAiK3QrIj4ifSxhLnByb3RvdHlw ZS5jb21wYXJlPWZ1bmN0aW9uKHQsZSxyLG4saSl7aWYoQih0LFVpbnQ4QXJyYXkpJiYodD1h LmZyb20odCx0Lm9mZnNldCx0LmJ5dGVMZW5ndGgpKSwhYS5pc0J1ZmZlcih0KSl0aHJvdyBu ZXcgVHlwZUVycm9yKCdUaGUgInRhcmdldCIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlw ZSBCdWZmZXIgb3IgVWludDhBcnJheS4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiB0KTtpZih2 b2lkIDA9PT1lJiYoZT0wKSx2b2lkIDA9PT1yJiYocj10P3QubGVuZ3RoOjApLHZvaWQgMD09 PW4mJihuPTApLHZvaWQgMD09PWkmJihpPXRoaXMubGVuZ3RoKSxlPDB8fHI+dC5sZW5ndGh8 fG48MHx8aT50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdl IGluZGV4Iik7aWYobj49aSYmZT49cilyZXR1cm4gMDtpZihuPj1pKXJldHVybi0xO2lmKGU+ PXIpcmV0dXJuIDE7aWYodGhpcz09PXQpcmV0dXJuIDA7Zm9yKHZhciBvPShpPj4+PTApLShu Pj4+PTApLHM9KHI+Pj49MCktKGU+Pj49MCksbD1NYXRoLm1pbihvLHMpLGM9dGhpcy5zbGlj ZShuLGkpLHU9dC5zbGljZShlLHIpLGY9MDtmPGw7KytmKWlmKGNbZl0hPT11W2ZdKXtvPWNb Zl0scz11W2ZdO2JyZWFrfXJldHVybiBvPHM/LTE6czxvPzE6MH0sYS5wcm90b3R5cGUuaW5j bHVkZXM9ZnVuY3Rpb24odCxlLHIpe3JldHVybi0xIT09dGhpcy5pbmRleE9mKHQsZSxyKX0s YS5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbih0LGUscil7cmV0dXJuIGQodGhpcyx0LGUs ciwhMCl9LGEucHJvdG90eXBlLmxhc3RJbmRleE9mPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4g ZCh0aGlzLHQsZSxyLCExKX0sYS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCxlLHIsbil7 aWYodm9pZCAwPT09ZSluPSJ1dGY4IixyPXRoaXMubGVuZ3RoLGU9MDtlbHNlIGlmKHZvaWQg MD09PXImJiJzdHJpbmciPT10eXBlb2YgZSluPWUscj10aGlzLmxlbmd0aCxlPTA7ZWxzZXtp ZighaXNGaW5pdGUoZSkpdGhyb3cgbmV3IEVycm9yKCJCdWZmZXIud3JpdGUoc3RyaW5nLCBl bmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCIpO2U+ Pj49MCxpc0Zpbml0ZShyKT8ocj4+Pj0wLHZvaWQgMD09PW4mJihuPSJ1dGY4IikpOihuPXIs cj12b2lkIDApfXZhciBpPXRoaXMubGVuZ3RoLWU7aWYoKHZvaWQgMD09PXJ8fHI+aSkmJihy PWkpLHQubGVuZ3RoPjAmJihyPDB8fGU8MCl8fGU+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJh bmdlRXJyb3IoIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzIik7bnx8 KG49InV0ZjgiKTtmb3IodmFyIGE9ITE7Oylzd2l0Y2gobil7Y2FzZSJoZXgiOnJldHVybiBn KHRoaXMsdCxlLHIpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIHYodGhpcyx0LGUs cik7Y2FzZSJhc2NpaSI6cmV0dXJuIHkodGhpcyx0LGUscik7Y2FzZSJsYXRpbjEiOmNhc2Ui YmluYXJ5IjpyZXR1cm4geCh0aGlzLHQsZSxyKTtjYXNlImJhc2U2NCI6cmV0dXJuIGIodGhp cyx0LGUscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRm LTE2bGUiOnJldHVybiBfKHRoaXMsdCxlLHIpO2RlZmF1bHQ6aWYoYSl0aHJvdyBuZXcgVHlw ZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK24pO249KCIiK24pLnRvTG93ZXJDYXNlKCks YT0hMH19LGEucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJCdWZm ZXIiLGRhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyfHx0aGlzLDAp fX07ZnVuY3Rpb24gayh0LGUscil7dmFyIG49IiI7cj1NYXRoLm1pbih0Lmxlbmd0aCxyKTtm b3IodmFyIGk9ZTtpPHI7KytpKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUoMTI3JnRbaV0pO3Jl dHVybiBufWZ1bmN0aW9uIEEodCxlLHIpe3ZhciBuPSIiO3I9TWF0aC5taW4odC5sZW5ndGgs cik7Zm9yKHZhciBpPWU7aTxyOysraSluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRbaV0pO3Jl dHVybiBufWZ1bmN0aW9uIE0odCxlLHIpe3ZhciBuPXQubGVuZ3RoOyghZXx8ZTwwKSYmKGU9 MCksKCFyfHxyPDB8fHI+bikmJihyPW4pO2Zvcih2YXIgaT0iIixhPWU7YTxyOysrYSlpKz16 KHRbYV0pO3JldHVybiBpfWZ1bmN0aW9uIFModCxlLHIpe2Zvcih2YXIgbj10LnNsaWNlKGUs ciksaT0iIixhPTA7YTxuLmxlbmd0aDthKz0yKWkrPVN0cmluZy5mcm9tQ2hhckNvZGUoblth XSsyNTYqblthKzFdKTtyZXR1cm4gaX1mdW5jdGlvbiBFKHQsZSxyKXtpZih0JTEhPTB8fHQ8 MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYodCtlPnIp dGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBs ZW5ndGgiKX1mdW5jdGlvbiBMKHQsZSxyLG4saSxvKXtpZighYS5pc0J1ZmZlcih0KSl0aHJv dyBuZXcgVHlwZUVycm9yKCciYnVmZmVyIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGlu c3RhbmNlJyk7aWYoZT5pfHxlPG8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJ2YWx1ZSIgYXJn dW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKHIrbj50Lmxlbmd0aCl0aHJvdyBuZXcgUmFu Z2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gQyh0LGUscixuLGksYSl7 aWYocituPnQubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFu Z2UiKTtpZihyPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIp fWZ1bmN0aW9uIFAodCxlLHIsaSxhKXtyZXR1cm4gZT0rZSxyPj4+PTAsYXx8Qyh0LDAsciw0 KSxuLndyaXRlKHQsZSxyLGksMjMsNCkscis0fWZ1bmN0aW9uIEkodCxlLHIsaSxhKXtyZXR1 cm4gZT0rZSxyPj4+PTAsYXx8Qyh0LDAsciw4KSxuLndyaXRlKHQsZSxyLGksNTIsOCkscis4 fWEucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5sZW5ndGg7KHQ9 fn50KTwwPyh0Kz1yKTwwJiYodD0wKTp0PnImJih0PXIpLChlPXZvaWQgMD09PWU/cjp+fmUp PDA/KGUrPXIpPDAmJihlPTApOmU+ciYmKGU9ciksZTx0JiYoZT10KTt2YXIgbj10aGlzLnN1 YmFycmF5KHQsZSk7cmV0dXJuIG4uX19wcm90b19fPWEucHJvdG90eXBlLG59LGEucHJvdG90 eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24odCxlLHIpe3Q+Pj49MCxlPj4+PTAscnx8RSh0LGUs dGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW3RdLGk9MSxhPTA7KythPGUmJihpKj0yNTYp OyluKz10aGlzW3QrYV0qaTtyZXR1cm4gbn0sYS5wcm90b3R5cGUucmVhZFVJbnRCRT1mdW5j dGlvbih0LGUscil7dD4+Pj0wLGU+Pj49MCxyfHxFKHQsZSx0aGlzLmxlbmd0aCk7Zm9yKHZh ciBuPXRoaXNbdCstLWVdLGk9MTtlPjAmJihpKj0yNTYpOyluKz10aGlzW3QrLS1lXSppO3Jl dHVybiBufSxhLnByb3RvdHlwZS5yZWFkVUludDg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+ Pj0wLGV8fEUodCwxLHRoaXMubGVuZ3RoKSx0aGlzW3RdfSxhLnByb3RvdHlwZS5yZWFkVUlu dDE2TEU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEUodCwyLHRoaXMubGVuZ3Ro KSx0aGlzW3RdfHRoaXNbdCsxXTw8OH0sYS5wcm90b3R5cGUucmVhZFVJbnQxNkJFPWZ1bmN0 aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxFKHQsMix0aGlzLmxlbmd0aCksdGhpc1t0XTw8 OHx0aGlzW3QrMV19LGEucHJvdG90eXBlLnJlYWRVSW50MzJMRT1mdW5jdGlvbih0LGUpe3Jl dHVybiB0Pj4+PTAsZXx8RSh0LDQsdGhpcy5sZW5ndGgpLCh0aGlzW3RdfHRoaXNbdCsxXTw8 OHx0aGlzW3QrMl08PDE2KSsxNjc3NzIxNip0aGlzW3QrM119LGEucHJvdG90eXBlLnJlYWRV SW50MzJCRT1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8RSh0LDQsdGhpcy5sZW5n dGgpLDE2Nzc3MjE2KnRoaXNbdF0rKHRoaXNbdCsxXTw8MTZ8dGhpc1t0KzJdPDw4fHRoaXNb dCszXSl9LGEucHJvdG90eXBlLnJlYWRJbnRMRT1mdW5jdGlvbih0LGUscil7dD4+Pj0wLGU+ Pj49MCxyfHxFKHQsZSx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXRoaXNbdF0saT0xLGE9MDsr K2E8ZSYmKGkqPTI1Nik7KW4rPXRoaXNbdCthXSppO3JldHVybiBuPj0oaSo9MTI4KSYmKG4t PU1hdGgucG93KDIsOCplKSksbn0sYS5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uKHQs ZSxyKXt0Pj4+PTAsZT4+Pj0wLHJ8fEUodCxlLHRoaXMubGVuZ3RoKTtmb3IodmFyIG49ZSxp PTEsYT10aGlzW3QrLS1uXTtuPjAmJihpKj0yNTYpOylhKz10aGlzW3QrLS1uXSppO3JldHVy biBhPj0oaSo9MTI4KSYmKGEtPU1hdGgucG93KDIsOCplKSksYX0sYS5wcm90b3R5cGUucmVh ZEludDg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEUodCwxLHRoaXMubGVuZ3Ro KSwxMjgmdGhpc1t0XT8tMSooMjU1LXRoaXNbdF0rMSk6dGhpc1t0XX0sYS5wcm90b3R5cGUu cmVhZEludDE2TEU9ZnVuY3Rpb24odCxlKXt0Pj4+PTAsZXx8RSh0LDIsdGhpcy5sZW5ndGgp O3ZhciByPXRoaXNbdF18dGhpc1t0KzFdPDw4O3JldHVybiAzMjc2OCZyPzQyOTQ5MDE3NjB8 cjpyfSxhLnByb3RvdHlwZS5yZWFkSW50MTZCRT1mdW5jdGlvbih0LGUpe3Q+Pj49MCxlfHxF KHQsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1t0KzFdfHRoaXNbdF08PDg7cmV0dXJuIDMy NzY4JnI/NDI5NDkwMTc2MHxyOnJ9LGEucHJvdG90eXBlLnJlYWRJbnQzMkxFPWZ1bmN0aW9u KHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxFKHQsNCx0aGlzLmxlbmd0aCksdGhpc1t0XXx0aGlz W3QrMV08PDh8dGhpc1t0KzJdPDwxNnx0aGlzW3QrM108PDI0fSxhLnByb3RvdHlwZS5yZWFk SW50MzJCRT1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8RSh0LDQsdGhpcy5sZW5n dGgpLHRoaXNbdF08PDI0fHRoaXNbdCsxXTw8MTZ8dGhpc1t0KzJdPDw4fHRoaXNbdCszXX0s YS5wcm90b3R5cGUucmVhZEZsb2F0TEU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8 fEUodCw0LHRoaXMubGVuZ3RoKSxuLnJlYWQodGhpcyx0LCEwLDIzLDQpfSxhLnByb3RvdHlw ZS5yZWFkRmxvYXRCRT1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8RSh0LDQsdGhp cy5sZW5ndGgpLG4ucmVhZCh0aGlzLHQsITEsMjMsNCl9LGEucHJvdG90eXBlLnJlYWREb3Vi bGVMRT1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8RSh0LDgsdGhpcy5sZW5ndGgp LG4ucmVhZCh0aGlzLHQsITAsNTIsOCl9LGEucHJvdG90eXBlLnJlYWREb3VibGVCRT1mdW5j dGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8RSh0LDgsdGhpcy5sZW5ndGgpLG4ucmVhZCh0 aGlzLHQsITEsNTIsOCl9LGEucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKHQsZSxy LG4peyh0PSt0LGU+Pj49MCxyPj4+PTAsbil8fEwodGhpcyx0LGUscixNYXRoLnBvdygyLDgq ciktMSwwKTt2YXIgaT0xLGE9MDtmb3IodGhpc1tlXT0yNTUmdDsrK2E8ciYmKGkqPTI1Nik7 KXRoaXNbZSthXT10L2kmMjU1O3JldHVybiBlK3J9LGEucHJvdG90eXBlLndyaXRlVUludEJF PWZ1bmN0aW9uKHQsZSxyLG4peyh0PSt0LGU+Pj49MCxyPj4+PTAsbil8fEwodGhpcyx0LGUs cixNYXRoLnBvdygyLDgqciktMSwwKTt2YXIgaT1yLTEsYT0xO2Zvcih0aGlzW2UraV09MjU1 JnQ7LS1pPj0wJiYoYSo9MjU2KTspdGhpc1tlK2ldPXQvYSYyNTU7cmV0dXJuIGUrcn0sYS5w cm90b3R5cGUud3JpdGVVSW50OD1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0w LHJ8fEwodGhpcyx0LGUsMSwyNTUsMCksdGhpc1tlXT0yNTUmdCxlKzF9LGEucHJvdG90eXBl LndyaXRlVUludDE2TEU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PSt0LGU+Pj49MCxyfHxM KHRoaXMsdCxlLDIsNjU1MzUsMCksdGhpc1tlXT0yNTUmdCx0aGlzW2UrMV09dD4+PjgsZSsy fSxhLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0r dCxlPj4+PTAscnx8TCh0aGlzLHQsZSwyLDY1NTM1LDApLHRoaXNbZV09dD4+PjgsdGhpc1tl KzFdPTI1NSZ0LGUrMn0sYS5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbih0LGUs cil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fEwodGhpcyx0LGUsNCw0Mjk0OTY3Mjk1LDApLHRo aXNbZSszXT10Pj4+MjQsdGhpc1tlKzJdPXQ+Pj4xNix0aGlzW2UrMV09dD4+PjgsdGhpc1tl XT0yNTUmdCxlKzR9LGEucHJvdG90eXBlLndyaXRlVUludDMyQkU9ZnVuY3Rpb24odCxlLHIp e3JldHVybiB0PSt0LGU+Pj49MCxyfHxMKHRoaXMsdCxlLDQsNDI5NDk2NzI5NSwwKSx0aGlz W2VdPXQ+Pj4yNCx0aGlzW2UrMV09dD4+PjE2LHRoaXNbZSsyXT10Pj4+OCx0aGlzW2UrM109 MjU1JnQsZSs0fSxhLnByb3RvdHlwZS53cml0ZUludExFPWZ1bmN0aW9uKHQsZSxyLG4pe2lm KHQ9K3QsZT4+Pj0wLCFuKXt2YXIgaT1NYXRoLnBvdygyLDgqci0xKTtMKHRoaXMsdCxlLHIs aS0xLC1pKX12YXIgYT0wLG89MSxzPTA7Zm9yKHRoaXNbZV09MjU1JnQ7KythPHImJihvKj0y NTYpOyl0PDAmJjA9PT1zJiYwIT09dGhpc1tlK2EtMV0mJihzPTEpLHRoaXNbZSthXT0odC9v Pj4wKS1zJjI1NTtyZXR1cm4gZStyfSxhLnByb3RvdHlwZS53cml0ZUludEJFPWZ1bmN0aW9u KHQsZSxyLG4pe2lmKHQ9K3QsZT4+Pj0wLCFuKXt2YXIgaT1NYXRoLnBvdygyLDgqci0xKTtM KHRoaXMsdCxlLHIsaS0xLC1pKX12YXIgYT1yLTEsbz0xLHM9MDtmb3IodGhpc1tlK2FdPTI1 NSZ0Oy0tYT49MCYmKG8qPTI1Nik7KXQ8MCYmMD09PXMmJjAhPT10aGlzW2UrYSsxXSYmKHM9 MSksdGhpc1tlK2FdPSh0L28+PjApLXMmMjU1O3JldHVybiBlK3J9LGEucHJvdG90eXBlLndy aXRlSW50OD1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fEwodGhpcyx0 LGUsMSwxMjcsLTEyOCksdDwwJiYodD0yNTUrdCsxKSx0aGlzW2VdPTI1NSZ0LGUrMX0sYS5w cm90b3R5cGUud3JpdGVJbnQxNkxFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPj4+ PTAscnx8TCh0aGlzLHQsZSwyLDMyNzY3LC0zMjc2OCksdGhpc1tlXT0yNTUmdCx0aGlzW2Ur MV09dD4+PjgsZSsyfSxhLnByb3RvdHlwZS53cml0ZUludDE2QkU9ZnVuY3Rpb24odCxlLHIp e3JldHVybiB0PSt0LGU+Pj49MCxyfHxMKHRoaXMsdCxlLDIsMzI3NjcsLTMyNzY4KSx0aGlz W2VdPXQ+Pj44LHRoaXNbZSsxXT0yNTUmdCxlKzJ9LGEucHJvdG90eXBlLndyaXRlSW50MzJM RT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fEwodGhpcyx0LGUsNCwy MTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSx0aGlzW2VdPTI1NSZ0LHRoaXNbZSsxXT10Pj4+OCx0 aGlzW2UrMl09dD4+PjE2LHRoaXNbZSszXT10Pj4+MjQsZSs0fSxhLnByb3RvdHlwZS53cml0 ZUludDMyQkU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PSt0LGU+Pj49MCxyfHxMKHRoaXMs dCxlLDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksdDwwJiYodD00Mjk0OTY3Mjk1K3QrMSks dGhpc1tlXT10Pj4+MjQsdGhpc1tlKzFdPXQ+Pj4xNix0aGlzW2UrMl09dD4+PjgsdGhpc1tl KzNdPTI1NSZ0LGUrNH0sYS5wcm90b3R5cGUud3JpdGVGbG9hdExFPWZ1bmN0aW9uKHQsZSxy KXtyZXR1cm4gUCh0aGlzLHQsZSwhMCxyKX0sYS5wcm90b3R5cGUud3JpdGVGbG9hdEJFPWZ1 bmN0aW9uKHQsZSxyKXtyZXR1cm4gUCh0aGlzLHQsZSwhMSxyKX0sYS5wcm90b3R5cGUud3Jp dGVEb3VibGVMRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIEkodGhpcyx0LGUsITAscil9LGEu cHJvdG90eXBlLndyaXRlRG91YmxlQkU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBJKHRoaXMs dCxlLCExLHIpfSxhLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQsZSxyLG4pe2lmKCFhLmlz QnVmZmVyKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoImFyZ3VtZW50IHNob3VsZCBiZSBhIEJ1 ZmZlciIpO2lmKHJ8fChyPTApLG58fDA9PT1ufHwobj10aGlzLmxlbmd0aCksZT49dC5sZW5n dGgmJihlPXQubGVuZ3RoKSxlfHwoZT0wKSxuPjAmJm48ciYmKG49ciksbj09PXIpcmV0dXJu IDA7aWYoMD09PXQubGVuZ3RofHwwPT09dGhpcy5sZW5ndGgpcmV0dXJuIDA7aWYoZTwwKXRo cm93IG5ldyBSYW5nZUVycm9yKCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzIik7aWYocjww fHxyPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJh bmdlIik7aWYobjwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VFbmQgb3V0IG9mIGJv dW5kcyIpO24+dGhpcy5sZW5ndGgmJihuPXRoaXMubGVuZ3RoKSx0Lmxlbmd0aC1lPG4tciYm KG49dC5sZW5ndGgtZStyKTt2YXIgaT1uLXI7aWYodGhpcz09PXQmJiJmdW5jdGlvbiI9PXR5 cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluKXRoaXMuY29weVdpdGhpbihl LHIsbik7ZWxzZSBpZih0aGlzPT09dCYmcjxlJiZlPG4pZm9yKHZhciBvPWktMTtvPj0wOy0t byl0W28rZV09dGhpc1tvK3JdO2Vsc2UgVWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwo dCx0aGlzLnN1YmFycmF5KHIsbiksZSk7cmV0dXJuIGl9LGEucHJvdG90eXBlLmZpbGw9ZnVu Y3Rpb24odCxlLHIsbil7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtpZigic3RyaW5nIj09dHlw ZW9mIGU/KG49ZSxlPTAscj10aGlzLmxlbmd0aCk6InN0cmluZyI9PXR5cGVvZiByJiYobj1y LHI9dGhpcy5sZW5ndGgpLHZvaWQgMCE9PW4mJiJzdHJpbmciIT10eXBlb2Ygbil0aHJvdyBu ZXcgVHlwZUVycm9yKCJlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nIik7aWYoInN0cmluZyI9 PXR5cGVvZiBuJiYhYS5pc0VuY29kaW5nKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25v d24gZW5jb2Rpbmc6ICIrbik7aWYoMT09PXQubGVuZ3RoKXt2YXIgaT10LmNoYXJDb2RlQXQo MCk7KCJ1dGY4Ij09PW4mJmk8MTI4fHwibGF0aW4xIj09PW4pJiYodD1pKX19ZWxzZSJudW1i ZXIiPT10eXBlb2YgdCYmKHQmPTI1NSk7aWYoZTwwfHx0aGlzLmxlbmd0aDxlfHx0aGlzLmxl bmd0aDxyKXRocm93IG5ldyBSYW5nZUVycm9yKCJPdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihy PD1lKXJldHVybiB0aGlzO3ZhciBvO2lmKGU+Pj49MCxyPXZvaWQgMD09PXI/dGhpcy5sZW5n dGg6cj4+PjAsdHx8KHQ9MCksIm51bWJlciI9PXR5cGVvZiB0KWZvcihvPWU7bzxyOysrbyl0 aGlzW29dPXQ7ZWxzZXt2YXIgcz1hLmlzQnVmZmVyKHQpP3Q6YS5mcm9tKHQsbiksbD1zLmxl bmd0aDtpZigwPT09bCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgdmFsdWUgIicrdCsnIiBp cyBpbnZhbGlkIGZvciBhcmd1bWVudCAidmFsdWUiJyk7Zm9yKG89MDtvPHItZTsrK28pdGhp c1tvK2VdPXNbbyVsXX1yZXR1cm4gdGhpc307dmFyIE89L1teKy8wLTlBLVphLXotX10vZztm dW5jdGlvbiB6KHQpe3JldHVybiB0PDE2PyIwIit0LnRvU3RyaW5nKDE2KTp0LnRvU3RyaW5n KDE2KX1mdW5jdGlvbiBEKHQsZSl7dmFyIHI7ZT1lfHwxLzA7Zm9yKHZhciBuPXQubGVuZ3Ro LGk9bnVsbCxhPVtdLG89MDtvPG47KytvKXtpZigocj10LmNoYXJDb2RlQXQobykpPjU1Mjk1 JiZyPDU3MzQ0KXtpZighaSl7aWYocj41NjMxOSl7KGUtPTMpPi0xJiZhLnB1c2goMjM5LDE5 MSwxODkpO2NvbnRpbnVlfWlmKG8rMT09PW4peyhlLT0zKT4tMSYmYS5wdXNoKDIzOSwxOTEs MTg5KTtjb250aW51ZX1pPXI7Y29udGludWV9aWYocjw1NjMyMCl7KGUtPTMpPi0xJiZhLnB1 c2goMjM5LDE5MSwxODkpLGk9cjtjb250aW51ZX1yPTY1NTM2KyhpLTU1Mjk2PDwxMHxyLTU2 MzIwKX1lbHNlIGkmJihlLT0zKT4tMSYmYS5wdXNoKDIzOSwxOTEsMTg5KTtpZihpPW51bGws cjwxMjgpe2lmKChlLT0xKTwwKWJyZWFrO2EucHVzaChyKX1lbHNlIGlmKHI8MjA0OCl7aWYo KGUtPTIpPDApYnJlYWs7YS5wdXNoKHI+PjZ8MTkyLDYzJnJ8MTI4KX1lbHNlIGlmKHI8NjU1 MzYpe2lmKChlLT0zKTwwKWJyZWFrO2EucHVzaChyPj4xMnwyMjQscj4+NiY2M3wxMjgsNjMm cnwxMjgpfWVsc2V7aWYoIShyPDExMTQxMTIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBj b2RlIHBvaW50Iik7aWYoKGUtPTQpPDApYnJlYWs7YS5wdXNoKHI+PjE4fDI0MCxyPj4xMiY2 M3wxMjgscj4+NiY2M3wxMjgsNjMmcnwxMjgpfX1yZXR1cm4gYX1mdW5jdGlvbiBSKHQpe3Jl dHVybiBlLnRvQnl0ZUFycmF5KGZ1bmN0aW9uKHQpe2lmKCh0PSh0PXQuc3BsaXQoIj0iKVsw XSkudHJpbSgpLnJlcGxhY2UoTywiIikpLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7dC5sZW5n dGglNCE9MDspdCs9Ij0iO3JldHVybiB0fSh0KSl9ZnVuY3Rpb24gRih0LGUscixuKXtmb3Io dmFyIGk9MDtpPG4mJiEoaStyPj1lLmxlbmd0aHx8aT49dC5sZW5ndGgpOysraSllW2krcl09 dFtpXTtyZXR1cm4gaX1mdW5jdGlvbiBCKHQsZSl7cmV0dXJuIHQgaW5zdGFuY2VvZiBlfHxu dWxsIT10JiZudWxsIT10LmNvbnN0cnVjdG9yJiZudWxsIT10LmNvbnN0cnVjdG9yLm5hbWUm JnQuY29uc3RydWN0b3IubmFtZT09PWUubmFtZX1mdW5jdGlvbiBOKHQpe3JldHVybiB0IT10 fX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMsdCgiYnVmZmVyIikuQnVmZmVyKX0seyJiYXNl NjQtanMiOjc5LGJ1ZmZlcjo4NSxpZWVlNzU0OjIzMH1dLDg2OltmdW5jdGlvbih0LGUscil7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZTxyP3Q8ZT9lOnQ+cj9yOnQ6dDxy P3I6dD5lP2U6dH19LHt9XSw4NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCJjbGFtcCIpO2Z1bmN0aW9uIGkodCxlKXtudWxsPT1lJiYoZT0hMCk7dmFyIHI9dFsw XSxpPXRbMV0sYT10WzJdLG89dFszXTtyZXR1cm4gbnVsbD09byYmKG89ZT8xOjI1NSksZSYm KHIqPTI1NSxpKj0yNTUsYSo9MjU1LG8qPTI1NSksMTY3NzcyMTYqKHI9MjU1Jm4ociwwLDI1 NSkpKygoaT0yNTUmbihpLDAsMjU1KSk8PDE2KSsoKGE9MjU1Jm4oYSwwLDI1NSkpPDw4KSso bz0yNTUmbihvLDAsMjU1KSl9ZS5leHBvcnRzPWksZS5leHBvcnRzLnRvPWksZS5leHBvcnRz LmZyb209ZnVuY3Rpb24odCxlKXt2YXIgcj0odD0rdCk+Pj4yNCxuPSgxNjcxMTY4MCZ0KT4+ PjE2LGk9KDY1MjgwJnQpPj4+OCxhPTI1NSZ0O3JldHVybiExPT09ZT9bcixuLGksYV06W3Iv MjU1LG4vMjU1LGkvMjU1LGEvMjU1XX19LHtjbGFtcDo4Nn1dLDg4OltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YWxpY2VibHVlOlsyNDAsMjQ4LDI1NV0sYW50 aXF1ZXdoaXRlOlsyNTAsMjM1LDIxNV0sYXF1YTpbMCwyNTUsMjU1XSxhcXVhbWFyaW5lOlsx MjcsMjU1LDIxMl0sYXp1cmU6WzI0MCwyNTUsMjU1XSxiZWlnZTpbMjQ1LDI0NSwyMjBdLGJp c3F1ZTpbMjU1LDIyOCwxOTZdLGJsYWNrOlswLDAsMF0sYmxhbmNoZWRhbG1vbmQ6WzI1NSwy MzUsMjA1XSxibHVlOlswLDAsMjU1XSxibHVldmlvbGV0OlsxMzgsNDMsMjI2XSxicm93bjpb MTY1LDQyLDQyXSxidXJseXdvb2Q6WzIyMiwxODQsMTM1XSxjYWRldGJsdWU6Wzk1LDE1OCwx NjBdLGNoYXJ0cmV1c2U6WzEyNywyNTUsMF0sY2hvY29sYXRlOlsyMTAsMTA1LDMwXSxjb3Jh bDpbMjU1LDEyNyw4MF0sY29ybmZsb3dlcmJsdWU6WzEwMCwxNDksMjM3XSxjb3Juc2lsazpb MjU1LDI0OCwyMjBdLGNyaW1zb246WzIyMCwyMCw2MF0sY3lhbjpbMCwyNTUsMjU1XSxkYXJr Ymx1ZTpbMCwwLDEzOV0sZGFya2N5YW46WzAsMTM5LDEzOV0sZGFya2dvbGRlbnJvZDpbMTg0 LDEzNCwxMV0sZGFya2dyYXk6WzE2OSwxNjksMTY5XSxkYXJrZ3JlZW46WzAsMTAwLDBdLGRh cmtncmV5OlsxNjksMTY5LDE2OV0sZGFya2toYWtpOlsxODksMTgzLDEwN10sZGFya21hZ2Vu dGE6WzEzOSwwLDEzOV0sZGFya29saXZlZ3JlZW46Wzg1LDEwNyw0N10sZGFya29yYW5nZTpb MjU1LDE0MCwwXSxkYXJrb3JjaGlkOlsxNTMsNTAsMjA0XSxkYXJrcmVkOlsxMzksMCwwXSxk YXJrc2FsbW9uOlsyMzMsMTUwLDEyMl0sZGFya3NlYWdyZWVuOlsxNDMsMTg4LDE0M10sZGFy a3NsYXRlYmx1ZTpbNzIsNjEsMTM5XSxkYXJrc2xhdGVncmF5Ols0Nyw3OSw3OV0sZGFya3Ns YXRlZ3JleTpbNDcsNzksNzldLGRhcmt0dXJxdW9pc2U6WzAsMjA2LDIwOV0sZGFya3Zpb2xl dDpbMTQ4LDAsMjExXSxkZWVwcGluazpbMjU1LDIwLDE0N10sZGVlcHNreWJsdWU6WzAsMTkx LDI1NV0sZGltZ3JheTpbMTA1LDEwNSwxMDVdLGRpbWdyZXk6WzEwNSwxMDUsMTA1XSxkb2Rn ZXJibHVlOlszMCwxNDQsMjU1XSxmaXJlYnJpY2s6WzE3OCwzNCwzNF0sZmxvcmFsd2hpdGU6 WzI1NSwyNTAsMjQwXSxmb3Jlc3RncmVlbjpbMzQsMTM5LDM0XSxmdWNoc2lhOlsyNTUsMCwy NTVdLGdhaW5zYm9ybzpbMjIwLDIyMCwyMjBdLGdob3N0d2hpdGU6WzI0OCwyNDgsMjU1XSxn b2xkOlsyNTUsMjE1LDBdLGdvbGRlbnJvZDpbMjE4LDE2NSwzMl0sZ3JheTpbMTI4LDEyOCwx MjhdLGdyZWVuOlswLDEyOCwwXSxncmVlbnllbGxvdzpbMTczLDI1NSw0N10sZ3JleTpbMTI4 LDEyOCwxMjhdLGhvbmV5ZGV3OlsyNDAsMjU1LDI0MF0saG90cGluazpbMjU1LDEwNSwxODBd LGluZGlhbnJlZDpbMjA1LDkyLDkyXSxpbmRpZ286Wzc1LDAsMTMwXSxpdm9yeTpbMjU1LDI1 NSwyNDBdLGtoYWtpOlsyNDAsMjMwLDE0MF0sbGF2ZW5kZXI6WzIzMCwyMzAsMjUwXSxsYXZl bmRlcmJsdXNoOlsyNTUsMjQwLDI0NV0sbGF3bmdyZWVuOlsxMjQsMjUyLDBdLGxlbW9uY2hp ZmZvbjpbMjU1LDI1MCwyMDVdLGxpZ2h0Ymx1ZTpbMTczLDIxNiwyMzBdLGxpZ2h0Y29yYWw6 WzI0MCwxMjgsMTI4XSxsaWdodGN5YW46WzIyNCwyNTUsMjU1XSxsaWdodGdvbGRlbnJvZHll bGxvdzpbMjUwLDI1MCwyMTBdLGxpZ2h0Z3JheTpbMjExLDIxMSwyMTFdLGxpZ2h0Z3JlZW46 WzE0NCwyMzgsMTQ0XSxsaWdodGdyZXk6WzIxMSwyMTEsMjExXSxsaWdodHBpbms6WzI1NSwx ODIsMTkzXSxsaWdodHNhbG1vbjpbMjU1LDE2MCwxMjJdLGxpZ2h0c2VhZ3JlZW46WzMyLDE3 OCwxNzBdLGxpZ2h0c2t5Ymx1ZTpbMTM1LDIwNiwyNTBdLGxpZ2h0c2xhdGVncmF5OlsxMTks MTM2LDE1M10sbGlnaHRzbGF0ZWdyZXk6WzExOSwxMzYsMTUzXSxsaWdodHN0ZWVsYmx1ZTpb MTc2LDE5NiwyMjJdLGxpZ2h0eWVsbG93OlsyNTUsMjU1LDIyNF0sbGltZTpbMCwyNTUsMF0s bGltZWdyZWVuOls1MCwyMDUsNTBdLGxpbmVuOlsyNTAsMjQwLDIzMF0sbWFnZW50YTpbMjU1 LDAsMjU1XSxtYXJvb246WzEyOCwwLDBdLG1lZGl1bWFxdWFtYXJpbmU6WzEwMiwyMDUsMTcw XSxtZWRpdW1ibHVlOlswLDAsMjA1XSxtZWRpdW1vcmNoaWQ6WzE4Niw4NSwyMTFdLG1lZGl1 bXB1cnBsZTpbMTQ3LDExMiwyMTldLG1lZGl1bXNlYWdyZWVuOls2MCwxNzksMTEzXSxtZWRp dW1zbGF0ZWJsdWU6WzEyMywxMDQsMjM4XSxtZWRpdW1zcHJpbmdncmVlbjpbMCwyNTAsMTU0 XSxtZWRpdW10dXJxdW9pc2U6WzcyLDIwOSwyMDRdLG1lZGl1bXZpb2xldHJlZDpbMTk5LDIx LDEzM10sbWlkbmlnaHRibHVlOlsyNSwyNSwxMTJdLG1pbnRjcmVhbTpbMjQ1LDI1NSwyNTBd LG1pc3R5cm9zZTpbMjU1LDIyOCwyMjVdLG1vY2Nhc2luOlsyNTUsMjI4LDE4MV0sbmF2YWpv d2hpdGU6WzI1NSwyMjIsMTczXSxuYXZ5OlswLDAsMTI4XSxvbGRsYWNlOlsyNTMsMjQ1LDIz MF0sb2xpdmU6WzEyOCwxMjgsMF0sb2xpdmVkcmFiOlsxMDcsMTQyLDM1XSxvcmFuZ2U6WzI1 NSwxNjUsMF0sb3JhbmdlcmVkOlsyNTUsNjksMF0sb3JjaGlkOlsyMTgsMTEyLDIxNF0scGFs ZWdvbGRlbnJvZDpbMjM4LDIzMiwxNzBdLHBhbGVncmVlbjpbMTUyLDI1MSwxNTJdLHBhbGV0 dXJxdW9pc2U6WzE3NSwyMzgsMjM4XSxwYWxldmlvbGV0cmVkOlsyMTksMTEyLDE0N10scGFw YXlhd2hpcDpbMjU1LDIzOSwyMTNdLHBlYWNocHVmZjpbMjU1LDIxOCwxODVdLHBlcnU6WzIw NSwxMzMsNjNdLHBpbms6WzI1NSwxOTIsMjAzXSxwbHVtOlsyMjEsMTYwLDIyMV0scG93ZGVy Ymx1ZTpbMTc2LDIyNCwyMzBdLHB1cnBsZTpbMTI4LDAsMTI4XSxyZWJlY2NhcHVycGxlOlsx MDIsNTEsMTUzXSxyZWQ6WzI1NSwwLDBdLHJvc3licm93bjpbMTg4LDE0MywxNDNdLHJveWFs Ymx1ZTpbNjUsMTA1LDIyNV0sc2FkZGxlYnJvd246WzEzOSw2OSwxOV0sc2FsbW9uOlsyNTAs MTI4LDExNF0sc2FuZHlicm93bjpbMjQ0LDE2NCw5Nl0sc2VhZ3JlZW46WzQ2LDEzOSw4N10s c2Vhc2hlbGw6WzI1NSwyNDUsMjM4XSxzaWVubmE6WzE2MCw4Miw0NV0sc2lsdmVyOlsxOTIs MTkyLDE5Ml0sc2t5Ymx1ZTpbMTM1LDIwNiwyMzVdLHNsYXRlYmx1ZTpbMTA2LDkwLDIwNV0s c2xhdGVncmF5OlsxMTIsMTI4LDE0NF0sc2xhdGVncmV5OlsxMTIsMTI4LDE0NF0sc25vdzpb MjU1LDI1MCwyNTBdLHNwcmluZ2dyZWVuOlswLDI1NSwxMjddLHN0ZWVsYmx1ZTpbNzAsMTMw LDE4MF0sdGFuOlsyMTAsMTgwLDE0MF0sdGVhbDpbMCwxMjgsMTI4XSx0aGlzdGxlOlsyMTYs MTkxLDIxNl0sdG9tYXRvOlsyNTUsOTksNzFdLHR1cnF1b2lzZTpbNjQsMjI0LDIwOF0sdmlv bGV0OlsyMzgsMTMwLDIzOF0sd2hlYXQ6WzI0NSwyMjIsMTc5XSx3aGl0ZTpbMjU1LDI1NSwy NTVdLHdoaXRlc21va2U6WzI0NSwyNDUsMjQ1XSx5ZWxsb3c6WzI1NSwyNTUsMF0seWVsbG93 Z3JlZW46WzE1NCwyMDUsNTBdfX0se31dLDg5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoImNvbG9yLXJnYmEiKSxpPXQoImNsYW1wIiksYT10KCJkdHlwZSIpO2Uu ZXhwb3J0cz1mdW5jdGlvbih0LGUpeyJmbG9hdCIhPT1lJiZlfHwoZT0iYXJyYXkiKSwidWlu dCI9PT1lJiYoZT0idWludDgiKSwidWludF9jbGFtcGVkIj09PWUmJihlPSJ1aW50OF9jbGFt cGVkIik7dmFyIHI9bmV3KGEoZSkpKDQpLG89InVpbnQ4IiE9PWUmJiJ1aW50OF9jbGFtcGVk IiE9PWU7cmV0dXJuIHQubGVuZ3RoJiYic3RyaW5nIiE9dHlwZW9mIHR8fCgodD1uKHQpKVsw XS89MjU1LHRbMV0vPTI1NSx0WzJdLz0yNTUpLGZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3Rh bmNlb2YgVWludDhBcnJheXx8dCBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5fHwhIShB cnJheS5pc0FycmF5KHQpJiYodFswXT4xfHwwPT09dFswXSkmJih0WzFdPjF8fDA9PT10WzFd KSYmKHRbMl0+MXx8MD09PXRbMl0pJiYoIXRbM118fHRbM10+MSkpfSh0KT8oclswXT10WzBd LHJbMV09dFsxXSxyWzJdPXRbMl0sclszXT1udWxsIT10WzNdP3RbM106MjU1LG8mJihyWzBd Lz0yNTUsclsxXS89MjU1LHJbMl0vPTI1NSxyWzNdLz0yNTUpLHIpOihvPyhyWzBdPXRbMF0s clsxXT10WzFdLHJbMl09dFsyXSxyWzNdPW51bGwhPXRbM10/dFszXToxKTooclswXT1pKE1h dGguZmxvb3IoMjU1KnRbMF0pLDAsMjU1KSxyWzFdPWkoTWF0aC5mbG9vcigyNTUqdFsxXSks MCwyNTUpLHJbMl09aShNYXRoLmZsb29yKDI1NSp0WzJdKSwwLDI1NSksclszXT1udWxsPT10 WzNdPzI1NTppKE1hdGguZmxvb3IoMjU1KnRbM10pLDAsMjU1KSkscil9fSx7Y2xhbXA6ODYs ImNvbG9yLXJnYmEiOjkxLGR0eXBlOjEyN31dLDkwOltmdW5jdGlvbih0LGUscil7KGZ1bmN0 aW9uKHIpeyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJjb2xvci1uYW1lIiks aT10KCJpcy1wbGFpbi1vYmoiKSxhPXQoImRlZmluZWQiKTtlLmV4cG9ydHM9ZnVuY3Rpb24o dCl7dmFyIGUscyxsPVtdLGM9MTtpZigic3RyaW5nIj09dHlwZW9mIHQpaWYoblt0XSlsPW5b dF0uc2xpY2UoKSxzPSJyZ2IiO2Vsc2UgaWYoInRyYW5zcGFyZW50Ij09PXQpYz0wLHM9InJn YiIsbD1bMCwwLDBdO2Vsc2UgaWYoL14jW0EtRmEtZjAtOV0rJC8udGVzdCh0KSl7dmFyIHU9 KHA9dC5zbGljZSgxKSkubGVuZ3RoO2M9MSx1PD00PyhsPVtwYXJzZUludChwWzBdK3BbMF0s MTYpLHBhcnNlSW50KHBbMV0rcFsxXSwxNikscGFyc2VJbnQocFsyXStwWzJdLDE2KV0sND09 PXUmJihjPXBhcnNlSW50KHBbM10rcFszXSwxNikvMjU1KSk6KGw9W3BhcnNlSW50KHBbMF0r cFsxXSwxNikscGFyc2VJbnQocFsyXStwWzNdLDE2KSxwYXJzZUludChwWzRdK3BbNV0sMTYp XSw4PT09dSYmKGM9cGFyc2VJbnQocFs2XStwWzddLDE2KS8yNTUpKSxsWzBdfHwobFswXT0w KSxsWzFdfHwobFsxXT0wKSxsWzJdfHwobFsyXT0wKSxzPSJyZ2IifWVsc2UgaWYoZT0vXigo PzpyZ2J8aHNbbHZiXXxod2J8Y215az98eHlbenldfGdyYXl8bGFifGxjaHU/dj98W2x5XXV2 fGxtcylhPylccypcKChbXlwpXSopXCkvLmV4ZWModCkpe3ZhciBmPWVbMV0saD0icmdiIj09 PWYscD1mLnJlcGxhY2UoL2EkLywiIik7cz1wO3U9ImNteWsiPT09cD80OiJncmF5Ij09PXA/ MTozO2w9ZVsyXS50cmltKCkuc3BsaXQoL1xzKixccyovKS5tYXAoKGZ1bmN0aW9uKHQsZSl7 aWYoLyUkLy50ZXN0KHQpKXJldHVybiBlPT09dT9wYXJzZUZsb2F0KHQpLzEwMDoicmdiIj09 PXA/MjU1KnBhcnNlRmxvYXQodCkvMTAwOnBhcnNlRmxvYXQodCk7aWYoImgiPT09cFtlXSl7 aWYoL2RlZyQvLnRlc3QodCkpcmV0dXJuIHBhcnNlRmxvYXQodCk7aWYodm9pZCAwIT09b1t0 XSlyZXR1cm4gb1t0XX1yZXR1cm4gcGFyc2VGbG9hdCh0KX0pKSxmPT09cCYmbC5wdXNoKDEp LGM9aHx8dm9pZCAwPT09bFt1XT8xOmxbdV0sbD1sLnNsaWNlKDAsdSl9ZWxzZSB0Lmxlbmd0 aD4xMCYmL1swLTldKD86XHN8XC8pLy50ZXN0KHQpJiYobD10Lm1hdGNoKC8oWzAtOV0rKS9n KS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUZsb2F0KHQpfSkpLHM9dC5tYXRjaCgv KFthLXpdKS9naSkuam9pbigiIikudG9Mb3dlckNhc2UoKSk7ZWxzZSBpZihpc05hTih0KSlp ZihpKHQpKXt2YXIgZD1hKHQucix0LnJlZCx0LlIsbnVsbCk7bnVsbCE9PWQ/KHM9InJnYiIs bD1bZCxhKHQuZyx0LmdyZWVuLHQuRyksYSh0LmIsdC5ibHVlLHQuQildKToocz0iaHNsIixs PVthKHQuaCx0Lmh1ZSx0LkgpLGEodC5zLHQuc2F0dXJhdGlvbix0LlMpLGEodC5sLHQubGln aHRuZXNzLHQuTCx0LmIsdC5icmlnaHRuZXNzKV0pLGM9YSh0LmEsdC5hbHBoYSx0Lm9wYWNp dHksMSksbnVsbCE9dC5vcGFjaXR5JiYoYy89MTAwKX1lbHNlKEFycmF5LmlzQXJyYXkodCl8 fHIuQXJyYXlCdWZmZXImJkFycmF5QnVmZmVyLmlzVmlldyYmQXJyYXlCdWZmZXIuaXNWaWV3 KHQpKSYmKGw9W3RbMF0sdFsxXSx0WzJdXSxzPSJyZ2IiLGM9ND09PXQubGVuZ3RoP3RbM106 MSk7ZWxzZSBzPSJyZ2IiLGw9W3Q+Pj4xNiwoNjUyODAmdCk+Pj44LDI1NSZ0XTtyZXR1cm57 c3BhY2U6cyx2YWx1ZXM6bCxhbHBoYTpjfX07dmFyIG89e3JlZDowLG9yYW5nZTo2MCx5ZWxs b3c6MTIwLGdyZWVuOjE4MCxibHVlOjI0MCxwdXJwbGU6MzAwfX0pLmNhbGwodGhpcyl9KS5j YWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQi IT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7 fSl9LHsiY29sb3ItbmFtZSI6ODgsZGVmaW5lZDoxMjQsImlzLXBsYWluLW9iaiI6MjM2fV0s OTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiY29sb3ItcGFyc2Ui KSxpPXQoImNvbG9yLXNwYWNlL2hzbCIpLGE9dCgiY2xhbXAiKTtlLmV4cG9ydHM9ZnVuY3Rp b24odCl7dmFyIGUscj1uKHQpO3JldHVybiByLnNwYWNlPygoZT1BcnJheSgzKSlbMF09YShy LnZhbHVlc1swXSwwLDI1NSksZVsxXT1hKHIudmFsdWVzWzFdLDAsMjU1KSxlWzJdPWEoci52 YWx1ZXNbMl0sMCwyNTUpLCJoIj09PXIuc3BhY2VbMF0mJihlPWkucmdiKGUpKSxlLnB1c2go YShyLmFscGhhLDAsMSkpLGUpOltdfX0se2NsYW1wOjg2LCJjb2xvci1wYXJzZSI6OTAsImNv bG9yLXNwYWNlL2hzbCI6OTJ9XSw5MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCIuL3JnYiIpO2UuZXhwb3J0cz17bmFtZToiaHNsIixtaW46WzAsMCwwXSxtYXg6 WzM2MCwxMDAsMTAwXSxjaGFubmVsOlsiaHVlIiwic2F0dXJhdGlvbiIsImxpZ2h0bmVzcyJd LGFsaWFzOlsiSFNMIl0scmdiOmZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpLGEsbz10WzBdLzM2 MCxzPXRbMV0vMTAwLGw9dFsyXS8xMDA7aWYoMD09PXMpcmV0dXJuW2E9MjU1KmwsYSxhXTtl PTIqbC0ocj1sPC41P2wqKDErcyk6bCtzLWwqcyksaT1bMCwwLDBdO2Zvcih2YXIgYz0wO2M8 MztjKyspKG49bysxLzMqLShjLTEpKTwwP24rKzpuPjEmJm4tLSxhPTYqbjwxP2UrNiooci1l KSpuOjIqbjwxP3I6MypuPDI/ZSsoci1lKSooMi8zLW4pKjY6ZSxpW2NdPTI1NSphO3JldHVy biBpfX0sbi5oc2w9ZnVuY3Rpb24odCl7dmFyIGUscixuPXRbMF0vMjU1LGk9dFsxXS8yNTUs YT10WzJdLzI1NSxvPU1hdGgubWluKG4saSxhKSxzPU1hdGgubWF4KG4saSxhKSxsPXMtbzty ZXR1cm4gcz09PW8/ZT0wOm49PT1zP2U9KGktYSkvbDppPT09cz9lPTIrKGEtbikvbDphPT09 cyYmKGU9NCsobi1pKS9sKSwoZT1NYXRoLm1pbig2MCplLDM2MCkpPDAmJihlKz0zNjApLHI9 KG8rcykvMixbZSwxMDAqKHM9PT1vPzA6cjw9LjU/bC8ocytvKTpsLygyLXMtbykpLDEwMCpy XX19LHsiLi9yZ2IiOjkzfV0sOTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5l eHBvcnRzPXtuYW1lOiJyZ2IiLG1pbjpbMCwwLDBdLG1heDpbMjU1LDI1NSwyNTVdLGNoYW5u ZWw6WyJyZWQiLCJncmVlbiIsImJsdWUiXSxhbGlhczpbIlJHQiJdfX0se31dLDk0OltmdW5j dGlvbih0LGUscil7ZS5leHBvcnRzPXtBRkc6ImFmZ2hhbiIsQUxBOiJcXGJcXHdsYW5kIixB TEI6ImFsYmFuaWEiLERaQToiYWxnZXJpYSIsQVNNOiJeKD89LiphbWVyaWMpLipzYW1vYSIs QU5EOiJhbmRvcnJhIixBR086ImFuZ29sYSIsQUlBOiJhbmd1aWxsP2EiLEFUQToiYW50YXJj dGljYSIsQVRHOiJhbnRpZ3VhIixBUkc6ImFyZ2VudGluIixBUk06ImFybWVuaWEiLEFCVzoi Xig/IS4qYm9uYWlyZSkuKlxcYmFydWJhIixBVVM6ImF1c3RyYWxpYSIsQVVUOiJeKD8hLipo dW5nYXJ5KS4qYXVzdHJpYXxcXGJhdXN0cmkuKlxcYmVtcCIsQVpFOiJhemVyYmFpamFuIixC SFM6ImJhaGFtYXMiLEJIUjoiYmFocmFpbiIsQkdEOiJiYW5nbGFkZXNofF4oPz0uKmVhc3Qp LipwYWtpP3N0YW4iLEJSQjoiYmFyYmFkb3MiLEJMUjoiYmVsYXJ1c3xieWVsbyIsQkVMOiJe KD8hLipsdXhlbSkuKmJlbGdpdW0iLEJMWjoiYmVsaXplfF4oPz0uKmJyaXRpc2gpLipob25k dXJhcyIsQkVOOiJiZW5pbnxkYWhvbWUiLEJNVToiYmVybXVkYSIsQlROOiJiaHV0YW4iLEJP TDoiYm9saXZpYSIsQkVTOiJeKD89Lipib25haXJlKS4qZXVzdGF0aXVzfF4oPz0uKmNhcmli KS4qbmV0aGVybGFuZHN8XFxiYmVzLj9pc2xhbmRzIixCSUg6ImhlcnplZ292aW5hfGJvc25p YSIsQldBOiJib3Rzd2FuYXxiZWNodWFuYSIsQlZUOiJib3V2ZXQiLEJSQToiYnJhemlsIixJ T1Q6ImJyaXRpc2guP2luZGlhbi4/b2NlYW4iLEJSTjoiYnJ1bmVpIixCR1I6ImJ1bGdhcmlh IixCRkE6ImJ1cmtpbmF8XFxiZmFzb3x1cHBlci4/dm9sdGEiLEJESToiYnVydW5kaSIsQ1BW OiJ2ZXJkZSIsS0hNOiJjYW1ib2RpYXxrYW1wdWNoZWF8a2htZXIiLENNUjoiY2FtZXJvb24i LENBTjoiY2FuYWRhIixDWU06ImNheW1hbiIsQ0FGOiJcXGJjZW50cmFsLmFmcmljYW4ucmVw dWJsaWMiLFRDRDoiXFxiY2hhZCIsQ0hMOiJcXGJjaGlsZSIsQ0hOOiJeKD8hLipcXGJtYWMp KD8hLipcXGJob25nKSg/IS4qXFxidGFpKSg/IS4qXFxicmVwKS4qY2hpbmF8Xig/PS4qcGVv KSg/PS4qcmVwKS4qY2hpbmEiLENYUjoiY2hyaXN0bWFzIixDQ0s6IlxcYmNvY29zfGtlZWxp bmciLENPTDoiY29sb21iaWEiLENPTToiY29tb3JvIixDT0c6Il4oPyEuKlxcYmRlbSkoPyEu KlxcYmRbXFwuXT9yKSg/IS4qa2luc2hhc2EpKD8hLip6YWlyZSkoPyEuKmJlbGcpKD8hLips Lm9wb2xkdmlsbGUpKD8hLipmcmVlKS4qXFxiY29uZ28iLENPSzoiXFxiY29vayIsQ1JJOiJj b3N0YS4/cmljYSIsQ0lWOiJpdm9pcmV8aXZvcnkiLEhSVjoiY3JvYXRpYSIsQ1VCOiJcXGJj dWJhIixDVVc6Il4oPyEuKmJvbmFpcmUpLipcXGJjdXJhKGN8XHhlNylhbyIsQ1lQOiJjeXBy dXMiLENTSzoiY3plY2hvc2xvdmFraWEiLENaRToiXig/PS4qcmVwKS4qY3plY2h8Y3plY2hp YXxib2hlbWlhIixDT0Q6IlxcYmRlbS4qY29uZ298Y29uZ28uKlxcYmRlbXxjb25nby4qXFxi ZFtcXC5dP3J8XFxiZFtcXC5dP3IuKmNvbmdvfGJlbGdpYW4uP2NvbmdvfGNvbmdvLj9mcmVl Lj9zdGF0ZXxraW5zaGFzYXx6YWlyZXxsLm9wb2xkdmlsbGV8ZHJjfGRyb2N8cmRjIixETks6 ImRlbm1hcmsiLERKSToiZGppYm91dGkiLERNQToiZG9taW5pY2EoPyFuKSIsRE9NOiJkb21p bmljYW4ucmVwIixFQ1U6ImVjdWFkb3IiLEVHWToiZWd5cHQiLFNMVjoiZWwuP3NhbHZhZG9y IixHTlE6Imd1aW5lLiplcXxlcS4qZ3VpbmV8Xig/PS4qc3BhbikuKmd1aW5lYSIsRVJJOiJl cml0cmVhIixFU1Q6ImVzdG9uaWEiLEVUSDoiZXRoaW9waWF8YWJ5c3NpbmlhIixGTEs6ImZh bGtsYW5kfG1hbHZpbmFzIixGUk86ImZhcm9lfGZhZXJvZSIsRkpJOiJmaWppIixGSU46ImZp bmxhbmQiLEZSQToiXig/IS4qXFxiZGVwKSg/IS4qbWFydGluaXF1ZSkuKmZyYW5jZXxmcmVu Y2guP3JlcHVibGljfFxcYmdhdWwiLEdVRjoiXig/PS4qZnJlbmNoKS4qZ3VpYW5hIixQWUY6 ImZyZW5jaC4/cG9seW5lc2lhfHRhaGl0aSIsQVRGOiJmcmVuY2guP3NvdXRoZXJuIixHQUI6 ImdhYm9uIixHTUI6ImdhbWJpYSIsR0VPOiJeKD8hLipzb3V0aCkuKmdlb3JnaWEiLEREUjoi Z2VybWFuLj9kZW1vY3JhdGljLj9yZXB1YmxpY3xkZW1vY3JhdGljLj9yZXB1YmxpYy4qZ2Vy bWFueXxlYXN0Lmdlcm1hbnkiLERFVToiXig/IS4qZWFzdCkuKmdlcm1hbnl8Xig/PS4qXFxi ZmVkLipcXGJyZXApLipnZXJtYW4iLEdIQToiZ2hhbmF8Z29sZC4/Y29hc3QiLEdJQjoiZ2li cmFsdGFyIixHUkM6ImdyZWVjZXxoZWxsZW5pY3xoZWxsYXMiLEdSTDoiZ3JlZW5sYW5kIixH UkQ6ImdyZW5hZGEiLEdMUDoiZ3VhZGVsb3VwZSIsR1VNOiJcXGJndWFtIixHVE06Imd1YXRl bWFsYSIsR0dZOiJndWVybnNleSIsR0lOOiJeKD8hLiplcSkoPyEuKnNwYW4pKD8hLipiaXNz YXUpKD8hLipwb3J0dSkoPyEuKm5ldykuKmd1aW5lYSIsR05COiJiaXNzYXV8Xig/PS4qcG9y dHUpLipndWluZWEiLEdVWToiZ3V5YW5hfGJyaXRpc2guP2d1aWFuYSIsSFRJOiJoYWl0aSIs SE1EOiJoZWFyZC4qbWNkb25hbGQiLFZBVDoiaG9seS4/c2VlfHZhdGljYW58cGFwYWwuP3N0 IixITkQ6Il4oPyEuKmJyaXQpLipob25kdXJhcyIsSEtHOiJob25nLj9rb25nIixIVU46Il4o PyEuKmF1c3RyKS4qaHVuZ2FyeSIsSVNMOiJpY2VsYW5kIixJTkQ6ImluZGlhKD8hLipvY2Vh KSIsSUROOiJpbmRvbmVzaWEiLElSTjoiXFxiaXJhbnxwZXJzaWEiLElSUToiXFxiaXJhcXxt ZXNvcG90YW1pYSIsSVJMOiIoXmlyZWxhbmQpfChecmVwdWJsaWMuKmlyZWxhbmQpIixJTU46 Il4oPz0uKmlzbGUpLipcXGJtYW4iLElTUjoiaXNyYWVsIixJVEE6Iml0YWx5IixKQU06Imph bWFpY2EiLEpQTjoiamFwYW4iLEpFWToiamVyc2V5IixKT1I6ImpvcmRhbiIsS0FaOiJrYXph ayIsS0VOOiJrZW55YXxicml0aXNoLj9lYXN0Lj9hZnJpY2F8ZWFzdC4/YWZyaWNhLj9wcm90 IixLSVI6ImtpcmliYXRpIixQUks6Il4oPz0uKmRlbW9jcmF0fHBlb3BsZXxub3J0aHxkLipw LioucikuKlxcYmtvcmVhfGRwcmt8a29yZWEuKihkLipwLipyKSIsS1dUOiJrdXdhaXQiLEtH Wjoia3lyZ3l6fGtpcmdoaXoiLExBTzoiXFxibGFvcz9cXGIiLExWQToibGF0dmlhIixMQk46 ImxlYmFub24iLExTTzoibGVzb3Rob3xiYXN1dG8iLExCUjoibGliZXJpYSIsTEJZOiJsaWJ5 YSIsTElFOiJsaWVjaHRlbnN0ZWluIixMVFU6ImxpdGh1YW5pYSIsTFVYOiJeKD8hLipiZWxn KS4qbHV4ZW0iLE1BQzoibWFjYShvfHUpIixNREc6Im1hZGFnYXNjYXJ8bWFsYWdhc3kiLE1X SToibWFsYXdpfG55YXNhIixNWVM6Im1hbGF5c2lhIixNRFY6Im1hbGRpdmUiLE1MSToiXFxi bWFsaVxcYiIsTUxUOiJcXGJtYWx0YSIsTUhMOiJtYXJzaGFsbCIsTVRROiJtYXJ0aW5pcXVl IixNUlQ6Im1hdXJpdGFuaWEiLE1VUzoibWF1cml0aXVzIixNWVQ6IlxcYm1heW90dGUiLE1F WDoiXFxibWV4aWMiLEZTTToiZmVkLiptaWNyb25lc2lhfG1pY3JvbmVzaWEuKmZlZCIsTUNP OiJtb25hY28iLE1ORzoibW9uZ29saWEiLE1ORToiXig/IS4qc2VyYmlhKS4qbW9udGVuZWdy byIsTVNSOiJtb250c2VycmF0IixNQVI6Im1vcm9jY298XFxibWFyb2MiLE1PWjoibW96YW1i aXF1ZSIsTU1SOiJteWFubWFyfGJ1cm1hIixOQU06Im5hbWliaWEiLE5SVToibmF1cnUiLE5Q TDoibmVwYWwiLE5MRDoiXig/IS4qXFxiYW50KSg/IS4qXFxiY2FyaWIpLipuZXRoZXJsYW5k cyIsQU5UOiJeKD89LipcXGJhbnQpLioobmV0aGVyfGR1dGNoKSIsTkNMOiJuZXcuP2NhbGVk b25pYSIsTlpMOiJuZXcuP3plYWxhbmQiLE5JQzoibmljYXJhZ3VhIixORVI6IlxcYm5pZ2Vy KD8haWEpIixOR0E6Im5pZ2VyaWEiLE5JVToibml1ZSIsTkZLOiJub3Jmb2xrIixNTlA6Im1h cmlhbmEiLE5PUjoibm9yd2F5IixPTU46IlxcYm9tYW58dHJ1Y2lhbCIsUEFLOiJeKD8hLipl YXN0KS4qcGFraT9zdGFuIixQTFc6InBhbGF1IixQU0U6InBhbGVzdGlufFxcYmdhemF8d2Vz dC4/YmFuayIsUEFOOiJwYW5hbWEiLFBORzoicGFwdWF8bmV3Lj9ndWluZWEiLFBSWToicGFy YWd1YXkiLFBFUjoicGVydSIsUEhMOiJwaGlsaXBwaW5lcyIsUENOOiJwaXRjYWlybiIsUE9M OiJwb2xhbmQiLFBSVDoicG9ydHVnYWwiLFBSSToicHVlcnRvLj9yaWNvIixRQVQ6InFhdGFy IixLT1I6Il4oPyEuKmQuKnAuKnIpKD8hLipkZW1vY3JhdCkoPyEuKnBlb3BsZSkoPyEuKm5v cnRoKS4qXFxia29yZWEoPyEuKmQuKnAuKnIpIixNREE6Im1vbGRvdnxiKGF8ZSlzc2FyYWJp YSIsUkVVOiJyKGV8XHhlOSl1bmlvbiIsUk9VOiJyKG98dXxvdSltYW5pYSIsUlVTOiJcXGJy dXNzaWF8c292aWV0Lj91bmlvbnx1XFwuP3NcXC4/c1xcLj9yfHNvY2lhbGlzdC4/cmVwdWJs aWNzIixSV0E6InJ3YW5kYSIsQkxNOiJiYXJ0aChlfFx4ZTkpbGVteSIsU0hOOiJoZWxlbmEi LEtOQToia2l0dHN8XFxibmV2aXMiLExDQToiXFxibHVjaWEiLE1BRjoiXig/PS4qY29sbGVj dGl2aXR5KS4qbWFydGlufF4oPz0uKmZyYW5jZSkuKm1hcnRpbig/IWlxdWUpfF4oPz0uKmZy ZW5jaCkuKm1hcnRpbig/IWlxdWUpIixTUE06Im1pcXVlbG9uIixWQ1Q6InZpbmNlbnQiLFdT TToiXig/IS4qYW1lcikuKnNhbW9hIixTTVI6InNhbi4/bWFyaW5vIixTVFA6IlxcYnMoYXxc eGUzKW8uP3RvbShlfFx4ZTkpIixTQVU6IlxcYnNhXFx3Ki4/YXJhYmlhIixTRU46InNlbmVn YWwiLFNSQjoiXig/IS4qbW9udGUpLipzZXJiaWEiLFNZQzoic2V5Y2hlbGwiLFNMRToic2ll cnJhIixTR1A6InNpbmdhcG9yZSIsU1hNOiJeKD8hLiptYXJ0aW4pKD8hLipzYWJhKS4qbWFh cnRlbiIsU1ZLOiJeKD8hLipjemUpLipzbG92YWsiLFNWTjoic2xvdmVuaWEiLFNMQjoic29s b21vbiIsU09NOiJzb21hbGkiLFpBRjoic291dGguYWZyaWNhfHNcXFxcLi4/YWZyaWNhIixT R1M6InNvdXRoLj9nZW9yZ2lhfHNhbmR3aWNoIixTU0Q6IlxcYnNcXHcqLj9zdWRhbiIsRVNQ OiJzcGFpbiIsTEtBOiJzcmkuP2xhbmthfGNleWxvbiIsU0ROOiJeKD8hLipcXGJzKD8hdSkp LipzdWRhbiIsU1VSOiJzdXJpbmFtfGR1dGNoLj9ndWlhbmEiLFNKTToic3ZhbGJhcmQiLFNX Wjoic3dhemlsYW5kIixTV0U6InN3ZWRlbiIsQ0hFOiJzd2l0enxzd2lzcyIsU1lSOiJzeXJp YSIsVFdOOiJ0YWl3YW58dGFpcGVpfGZvcm1vc2F8Xig/IS4qcGVvKSg/PS4qcmVwKS4qY2hp bmEiLFRKSzoidGFqaWsiLFRIQToidGhhaWxhbmR8XFxic2lhbSIsTUtEOiJtYWNlZG9uaWF8 Znlyb20iLFRMUzoiXig/PS4qbGVzdGUpLip0aW1vcnxeKD89LiplYXN0KS4qdGltb3IiLFRH TzoidG9nbyIsVEtMOiJ0b2tlbGF1IixUT046InRvbmdhIixUVE86InRyaW5pZGFkfHRvYmFn byIsVFVOOiJ0dW5pc2lhIixUVVI6InR1cmtleSIsVEtNOiJ0dXJrbWVuIixUQ0E6InR1cmtz IixUVVY6InR1dmFsdSIsVUdBOiJ1Z2FuZGEiLFVLUjoidWtyYWluIixBUkU6ImVtaXJhdGVz fF51XFwuP2FcXC4/ZVxcLj8kfHVuaXRlZC4/YXJhYi4/ZW0iLEdCUjoidW5pdGVkLj9raW5n ZG9tfGJyaXRhaW58XnVcXC4/a1xcLj8kIixUWkE6InRhbnphbmlhIixVU0E6InVuaXRlZC4/ c3RhdGVzXFxiKD8hLippc2xhbmRzKXxcXGJ1XFwuP3NcXC4/YVxcLj9cXGJ8Xlxccyp1XFwu P3NcXC4/XFxiKD8hLippc2xhbmRzKSIsVU1JOiJtaW5vci4/b3V0bHlpbmcuP2lzIixVUlk6 InVydWd1YXkiLFVaQjoidXpiZWsiLFZVVDoidmFudWF0dXxuZXcuP2hlYnJpZGVzIixWRU46 InZlbmV6dWVsYSIsVk5NOiJeKD8hLipyZXB1YmxpYykuKnZpZXQuP25hbXxeKD89Lipzb2Np YWxpc3QpLip2aWV0Lj9uYW0iLFZHQjoiXig/PS4qXFxidVxcLj9cXHM/aykuKnZpcmdpbnxe KD89Lipicml0KS4qdmlyZ2lufF4oPz0uKmtpbmdkb20pLip2aXJnaW4iLFZJUjoiXig/PS4q XFxidVxcLj9cXHM/cykuKnZpcmdpbnxeKD89LipzdGF0ZXMpLip2aXJnaW4iLFdMRjoiZnV0 dW5hfHdhbGxpcyIsRVNIOiJ3ZXN0ZXJuLnNhaGFyYSIsWUVNOiJeKD8hLiphcmFiKSg/IS4q bm9ydGgpKD8hLipzYW5hKSg/IS4qcGVvKSg/IS4qZGVtKSg/IS4qc291dGgpKD8hLiphZGVu KSg/IS4qXFxicFxcLj9kXFwuP3IpLip5ZW1lbiIsWU1EOiJeKD89LipwZW8pLip5ZW1lbnxe KD8hLipyZXApKD89LipkZW0pLip5ZW1lbnxeKD89Lipzb3V0aCkuKnllbWVufF4oPz0uKmFk ZW4pLip5ZW1lbnxeKD89LipcXGJwXFwuP2RcXC4/cikuKnllbWVuIixZVUc6Inl1Z29zbGF2 aWEiLFpNQjoiemFtYmlhfG5vcnRoZXJuLj9yaG9kZXNpYSIsRUFaOiJ6YW56aWJhciIsWldF OiJ6aW1iYWJ3ZXxeKD8hLipub3J0aGVybikuKnJob2Rlc2lhIn19LHt9XSw5NTpbZnVuY3Rp b24odCxlLHIpe2UuZXhwb3J0cz1bInh4LXNtYWxsIiwieC1zbWFsbCIsInNtYWxsIiwibWVk aXVtIiwibGFyZ2UiLCJ4LWxhcmdlIiwieHgtbGFyZ2UiLCJsYXJnZXIiLCJzbWFsbGVyIl19 LHt9XSw5NjpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1bIm5vcm1hbCIsImNvbmRlbnNl ZCIsInNlbWktY29uZGVuc2VkIiwiZXh0cmEtY29uZGVuc2VkIiwidWx0cmEtY29uZGVuc2Vk IiwiZXhwYW5kZWQiLCJzZW1pLWV4cGFuZGVkIiwiZXh0cmEtZXhwYW5kZWQiLCJ1bHRyYS1l eHBhbmRlZCJdfSx7fV0sOTc6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9WyJub3JtYWwi LCJpdGFsaWMiLCJvYmxpcXVlIl19LHt9XSw5ODpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0 cz1bIm5vcm1hbCIsImJvbGQiLCJib2xkZXIiLCJsaWdodGVyIiwiMTAwIiwiMjAwIiwiMzAw IiwiNDAwIiwiNTAwIiwiNjAwIiwiNzAwIiwiODAwIiwiOTAwIl19LHt9XSw5OTpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e3BhcnNlOnQoIi4vcGFyc2UiKSxz dHJpbmdpZnk6dCgiLi9zdHJpbmdpZnkiKX19LHsiLi9wYXJzZSI6MTAxLCIuL3N0cmluZ2lm eSI6MTAyfV0sMTAwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImNz cy1mb250LXNpemUta2V5d29yZHMiKTtlLmV4cG9ydHM9e2lzU2l6ZTpmdW5jdGlvbih0KXty ZXR1cm4vXltcZFwuXS8udGVzdCh0KXx8LTEhPT10LmluZGV4T2YoIi8iKXx8LTEhPT1uLmlu ZGV4T2YodCl9fX0seyJjc3MtZm9udC1zaXplLWtleXdvcmRzIjo5NX1dLDEwMTpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJ1bnF1b3RlIiksaT10KCJjc3MtZ2xv YmFsLWtleXdvcmRzIiksYT10KCJjc3Mtc3lzdGVtLWZvbnQta2V5d29yZHMiKSxvPXQoImNz cy1mb250LXdlaWdodC1rZXl3b3JkcyIpLHM9dCgiY3NzLWZvbnQtc3R5bGUta2V5d29yZHMi KSxsPXQoImNzcy1mb250LXN0cmV0Y2gta2V5d29yZHMiKSxjPXQoInN0cmluZy1zcGxpdC1i eSIpLHU9dCgiLi9saWIvdXRpbCIpLmlzU2l6ZTtlLmV4cG9ydHM9aDt2YXIgZj1oLmNhY2hl PXt9O2Z1bmN0aW9uIGgodCl7aWYoInN0cmluZyIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJv cigiRm9udCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLiIpO2lmKGZbdF0pcmV0dXJuIGZb dF07aWYoIiI9PT10KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHBhcnNlIGFuIGVtcHR5IHN0 cmluZy4iKTtpZigtMSE9PWEuaW5kZXhPZih0KSlyZXR1cm4gZlt0XT17c3lzdGVtOnR9O2Zv cih2YXIgZSxyPXtzdHlsZToibm9ybWFsIix2YXJpYW50OiJub3JtYWwiLHdlaWdodDoibm9y bWFsIixzdHJldGNoOiJub3JtYWwiLGxpbmVIZWlnaHQ6Im5vcm1hbCIsc2l6ZToiMXJlbSIs ZmFtaWx5Olsic2VyaWYiXX0saD1jKHQsL1xzKy8pO2U9aC5zaGlmdCgpOyl7aWYoLTEhPT1p LmluZGV4T2YoZSkpcmV0dXJuWyJzdHlsZSIsInZhcmlhbnQiLCJ3ZWlnaHQiLCJzdHJldGNo Il0uZm9yRWFjaCgoZnVuY3Rpb24odCl7clt0XT1lfSkpLGZbdF09cjtpZigtMT09PXMuaW5k ZXhPZihlKSlpZigibm9ybWFsIiE9PWUmJiJzbWFsbC1jYXBzIiE9PWUpaWYoLTE9PT1sLmlu ZGV4T2YoZSkpe2lmKC0xPT09by5pbmRleE9mKGUpKXtpZih1KGUpKXt2YXIgZD1jKGUsIi8i KTtpZihyLnNpemU9ZFswXSxudWxsIT1kWzFdP3IubGluZUhlaWdodD1wKGRbMV0pOiIvIj09 PWhbMF0mJihoLnNoaWZ0KCksci5saW5lSGVpZ2h0PXAoaC5zaGlmdCgpKSksIWgubGVuZ3Ro KXRocm93IG5ldyBFcnJvcigiTWlzc2luZyByZXF1aXJlZCBmb250LWZhbWlseS4iKTtyZXR1 cm4gci5mYW1pbHk9YyhoLmpvaW4oIiAiKSwvXHMqLFxzKi8pLm1hcChuKSxmW3RdPXJ9dGhy b3cgbmV3IEVycm9yKCJVbmtub3duIG9yIHVuc3VwcG9ydGVkIGZvbnQgdG9rZW46ICIrZSl9 ci53ZWlnaHQ9ZX1lbHNlIHIuc3RyZXRjaD1lO2Vsc2Ugci52YXJpYW50PWU7ZWxzZSByLnN0 eWxlPWV9dGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIHJlcXVpcmVkIGZvbnQtc2l6ZS4iKX1m dW5jdGlvbiBwKHQpe3ZhciBlPXBhcnNlRmxvYXQodCk7cmV0dXJuIGUudG9TdHJpbmcoKT09 PXQ/ZTp0fX0seyIuL2xpYi91dGlsIjoxMDAsImNzcy1mb250LXN0cmV0Y2gta2V5d29yZHMi Ojk2LCJjc3MtZm9udC1zdHlsZS1rZXl3b3JkcyI6OTcsImNzcy1mb250LXdlaWdodC1rZXl3 b3JkcyI6OTgsImNzcy1nbG9iYWwta2V5d29yZHMiOjEwMywiY3NzLXN5c3RlbS1mb250LWtl eXdvcmRzIjoxMDQsInN0cmluZy1zcGxpdC1ieSI6MzA1LHVucXVvdGU6MzI4fV0sMTAyOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInBpY2stYnktYWxpYXMiKSxp PXQoIi4vbGliL3V0aWwiKS5pc1NpemUsYT1tKHQoImNzcy1nbG9iYWwta2V5d29yZHMiKSks bz1tKHQoImNzcy1zeXN0ZW0tZm9udC1rZXl3b3JkcyIpKSxzPW0odCgiY3NzLWZvbnQtd2Vp Z2h0LWtleXdvcmRzIikpLGw9bSh0KCJjc3MtZm9udC1zdHlsZS1rZXl3b3JkcyIpKSxjPW0o dCgiY3NzLWZvbnQtc3RyZXRjaC1rZXl3b3JkcyIpKSx1PXtub3JtYWw6MSwic21hbGwtY2Fw cyI6MX0sZj17c2VyaWY6MSwic2Fucy1zZXJpZiI6MSxtb25vc3BhY2U6MSxjdXJzaXZlOjEs ZmFudGFzeToxLCJzeXN0ZW0tdWkiOjF9LGg9IjFyZW0iLHA9InNlcmlmIjtmdW5jdGlvbiBk KHQsZSl7aWYodCYmIWVbdF0mJiFhW3RdKXRocm93IEVycm9yKCJVbmtub3duIGtleXdvcmQg YCIrdCsiYCIpO3JldHVybiB0fWZ1bmN0aW9uIG0odCl7Zm9yKHZhciBlPXt9LHI9MDtyPHQu bGVuZ3RoO3IrKyllW3Rbcl1dPTE7cmV0dXJuIGV9ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2lm KCh0PW4odCx7c3R5bGU6InN0eWxlIGZvbnRzdHlsZSBmb250U3R5bGUgZm9udC1zdHlsZSBz bG9wZSBkaXN0aW5jdGlvbiIsdmFyaWFudDoidmFyaWFudCBmb250LXZhcmlhbnQgZm9udFZh cmlhbnQgZm9udHZhcmlhbnQgdmFyIGNhcGl0YWxpemF0aW9uIix3ZWlnaHQ6IndlaWdodCB3 IGZvbnQtd2VpZ2h0IGZvbnRXZWlnaHQgZm9udHdlaWdodCIsc3RyZXRjaDoic3RyZXRjaCBm b250LXN0cmV0Y2ggZm9udFN0cmV0Y2ggZm9udHN0cmV0Y2ggd2lkdGgiLHNpemU6InNpemUg cyBmb250LXNpemUgZm9udFNpemUgZm9udHNpemUgaGVpZ2h0IGVtIGVtU2l6ZSIsbGluZUhl aWdodDoibGggbGluZS1oZWlnaHQgbGluZUhlaWdodCBsaW5laGVpZ2h0IGxlYWRpbmciLGZh bWlseToiZm9udCBmYW1pbHkgZm9udEZhbWlseSBmb250LWZhbWlseSBmb250ZmFtaWx5IHR5 cGUgdHlwZWZhY2UgZmFjZSIsc3lzdGVtOiJzeXN0ZW0gcmVzZXJ2ZWQgZGVmYXVsdCBnbG9i YWwifSkpLnN5c3RlbSlyZXR1cm4gdC5zeXN0ZW0mJmQodC5zeXN0ZW0sbyksdC5zeXN0ZW07 aWYoZCh0LnN0eWxlLGwpLGQodC52YXJpYW50LHUpLGQodC53ZWlnaHQscyksZCh0LnN0cmV0 Y2gsYyksbnVsbD09dC5zaXplJiYodC5zaXplPWgpLCJudW1iZXIiPT10eXBlb2YgdC5zaXpl JiYodC5zaXplKz0icHgiKSwhaSl0aHJvdyBFcnJvcigiQmFkIHNpemUgdmFsdWUgYCIrdC5z aXplKyJgIik7dC5mYW1pbHl8fCh0LmZhbWlseT1wKSxBcnJheS5pc0FycmF5KHQuZmFtaWx5 KSYmKHQuZmFtaWx5Lmxlbmd0aHx8KHQuZmFtaWx5PVtwXSksdC5mYW1pbHk9dC5mYW1pbHku bWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZlt0XT90OiciJyt0KyciJ30pKS5qb2luKCIsICIp KTt2YXIgZT1bXTtyZXR1cm4gZS5wdXNoKHQuc3R5bGUpLHQudmFyaWFudCE9PXQuc3R5bGUm JmUucHVzaCh0LnZhcmlhbnQpLHQud2VpZ2h0IT09dC52YXJpYW50JiZ0LndlaWdodCE9PXQu c3R5bGUmJmUucHVzaCh0LndlaWdodCksdC5zdHJldGNoIT09dC53ZWlnaHQmJnQuc3RyZXRj aCE9PXQudmFyaWFudCYmdC5zdHJldGNoIT09dC5zdHlsZSYmZS5wdXNoKHQuc3RyZXRjaCks ZS5wdXNoKHQuc2l6ZSsobnVsbD09dC5saW5lSGVpZ2h0fHwibm9ybWFsIj09PXQubGluZUhl aWdodHx8dC5saW5lSGVpZ2h0KyIiPT0iMSI/IiI6Ii8iK3QubGluZUhlaWdodCkpLGUucHVz aCh0LmZhbWlseSksZS5maWx0ZXIoQm9vbGVhbikuam9pbigiICIpfX0seyIuL2xpYi91dGls IjoxMDAsImNzcy1mb250LXN0cmV0Y2gta2V5d29yZHMiOjk2LCJjc3MtZm9udC1zdHlsZS1r ZXl3b3JkcyI6OTcsImNzcy1mb250LXdlaWdodC1rZXl3b3JkcyI6OTgsImNzcy1nbG9iYWwt a2V5d29yZHMiOjEwMywiY3NzLXN5c3RlbS1mb250LWtleXdvcmRzIjoxMDQsInBpY2stYnkt YWxpYXMiOjI1M31dLDEwMzpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1bImluaGVyaXQi LCJpbml0aWFsIiwidW5zZXQiXX0se31dLDEwNDpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0 cz1bImNhcHRpb24iLCJpY29uIiwibWVudSIsIm1lc3NhZ2UtYm94Iiwic21hbGwtY2FwdGlv biIsInN0YXR1cy1iYXIiXX0se31dLDEwNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbixpPXQoInR5cGUvdmFsdWUvaXMiKSxhPXQoInR5cGUvdmFsdWUvZW5zdXJlIiks bz10KCJ0eXBlL3BsYWluLWZ1bmN0aW9uL2Vuc3VyZSIpLHM9dCgiZXM1LWV4dC9vYmplY3Qv Y29weSIpLGw9dCgiZXM1LWV4dC9vYmplY3Qvbm9ybWFsaXplLW9wdGlvbnMiKSxjPXQoImVz NS1leHQvb2JqZWN0L21hcCIpLHU9RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQsZj1PYmplY3Qu ZGVmaW5lUHJvcGVydHksaD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O249ZnVu Y3Rpb24odCxlLHIpe3ZhciBuLGk9YShlKSYmbyhlLnZhbHVlKTtyZXR1cm4gZGVsZXRlKG49 cyhlKSkud3JpdGFibGUsZGVsZXRlIG4udmFsdWUsbi5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4h ci5vdmVyd3JpdGVEZWZpbml0aW9uJiZoLmNhbGwodGhpcyx0KT9pOihlLnZhbHVlPXUuY2Fs bChpLHIucmVzb2x2ZUNvbnRleHQ/ci5yZXNvbHZlQ29udGV4dCh0aGlzKTp0aGlzKSxmKHRo aXMsdCxlKSx0aGlzW3RdKX0sbn0sZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPWwoYXJn dW1lbnRzWzFdKTtyZXR1cm4gaShlLnJlc29sdmVDb250ZXh0KSYmbyhlLnJlc29sdmVDb250 ZXh0KSxjKHQsKGZ1bmN0aW9uKHQscil7cmV0dXJuIG4ocix0LGUpfSkpfX0seyJlczUtZXh0 L29iamVjdC9jb3B5IjoxNDcsImVzNS1leHQvb2JqZWN0L21hcCI6MTU1LCJlczUtZXh0L29i amVjdC9ub3JtYWxpemUtb3B0aW9ucyI6MTU2LCJ0eXBlL3BsYWluLWZ1bmN0aW9uL2Vuc3Vy ZSI6MzIxLCJ0eXBlL3ZhbHVlL2Vuc3VyZSI6MzI1LCJ0eXBlL3ZhbHVlL2lzIjozMjZ9XSwx MDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgidHlwZS92YWx1ZS9p cyIpLGk9dCgidHlwZS9wbGFpbi1mdW5jdGlvbi9pcyIpLGE9dCgiZXM1LWV4dC9vYmplY3Qv YXNzaWduIiksbz10KCJlczUtZXh0L29iamVjdC9ub3JtYWxpemUtb3B0aW9ucyIpLHM9dCgi ZXM1LWV4dC9zdHJpbmcvIy9jb250YWlucyIpOyhlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2 YXIgcixpLGwsYyx1O3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDJ8fCJzdHJpbmciIT10eXBl b2YgdD8oYz1lLGU9dCx0PW51bGwpOmM9YXJndW1lbnRzWzJdLG4odCk/KHI9cy5jYWxsKHQs ImMiKSxpPXMuY2FsbCh0LCJlIiksbD1zLmNhbGwodCwidyIpKToocj1sPSEwLGk9ITEpLHU9 e3ZhbHVlOmUsY29uZmlndXJhYmxlOnIsZW51bWVyYWJsZTppLHdyaXRhYmxlOmx9LGM/YShv KGMpLHUpOnV9KS5ncz1mdW5jdGlvbih0LGUscil7dmFyIGwsYyx1LGY7cmV0dXJuInN0cmlu ZyIhPXR5cGVvZiB0Pyh1PXIscj1lLGU9dCx0PW51bGwpOnU9YXJndW1lbnRzWzNdLG4oZSk/ aShlKT9uKHIpP2kocil8fCh1PXIscj12b2lkIDApOnI9dm9pZCAwOih1PWUsZT1yPXZvaWQg MCk6ZT12b2lkIDAsbih0KT8obD1zLmNhbGwodCwiYyIpLGM9cy5jYWxsKHQsImUiKSk6KGw9 ITAsYz0hMSksZj17Z2V0OmUsc2V0OnIsY29uZmlndXJhYmxlOmwsZW51bWVyYWJsZTpjfSx1 P2Eobyh1KSxmKTpmfX0seyJlczUtZXh0L29iamVjdC9hc3NpZ24iOjE0NCwiZXM1LWV4dC9v YmplY3Qvbm9ybWFsaXplLW9wdGlvbnMiOjE1NiwiZXM1LWV4dC9zdHJpbmcvIy9jb250YWlu cyI6MTYzLCJ0eXBlL3BsYWluLWZ1bmN0aW9uL2lzIjozMjIsInR5cGUvdmFsdWUvaXMiOjMy Nn1dLDEwNzpbZnVuY3Rpb24odCxlLHIpeyFmdW5jdGlvbih0LG4pe24oIm9iamVjdCI9PXR5 cGVvZiByJiZ2b2lkIDAhPT1lP3I6dC5kMz10LmQzfHx7fSl9KHRoaXMsKGZ1bmN0aW9uKHQp eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBlKHQsZSl7cmV0dXJuIHQ8ZT8tMTp0PmU/MTp0Pj1l PzA6TmFOfWZ1bmN0aW9uIHIodCl7dmFyIHI7cmV0dXJuIDE9PT10Lmxlbmd0aCYmKHI9dCx0 PWZ1bmN0aW9uKHQsbil7cmV0dXJuIGUocih0KSxuKX0pLHtsZWZ0OmZ1bmN0aW9uKGUscixu LGkpe2ZvcihudWxsPT1uJiYobj0wKSxudWxsPT1pJiYoaT1lLmxlbmd0aCk7bjxpOyl7dmFy IGE9bitpPj4+MTt0KGVbYV0scik8MD9uPWErMTppPWF9cmV0dXJuIG59LHJpZ2h0OmZ1bmN0 aW9uKGUscixuLGkpe2ZvcihudWxsPT1uJiYobj0wKSxudWxsPT1pJiYoaT1lLmxlbmd0aCk7 bjxpOyl7dmFyIGE9bitpPj4+MTt0KGVbYV0scik+MD9pPWE6bj1hKzF9cmV0dXJuIG59fX12 YXIgbj1yKGUpLGk9bi5yaWdodCxhPW4ubGVmdDtmdW5jdGlvbiBvKHQsZSl7cmV0dXJuW3Qs ZV19ZnVuY3Rpb24gcyh0KXtyZXR1cm4gbnVsbD09PXQ/TmFOOit0fWZ1bmN0aW9uIGwodCxl KXt2YXIgcixuLGk9dC5sZW5ndGgsYT0wLG89LTEsbD0wLGM9MDtpZihudWxsPT1lKWZvcig7 KytvPGk7KWlzTmFOKHI9cyh0W29dKSl8fChjKz0obj1yLWwpKihyLShsKz1uLysrYSkpKTtl bHNlIGZvcig7KytvPGk7KWlzTmFOKHI9cyhlKHRbb10sbyx0KSkpfHwoYys9KG49ci1sKSoo ci0obCs9bi8rK2EpKSk7aWYoYT4xKXJldHVybiBjLyhhLTEpfWZ1bmN0aW9uIGModCxlKXt2 YXIgcj1sKHQsZSk7cmV0dXJuIHI/TWF0aC5zcXJ0KHIpOnJ9ZnVuY3Rpb24gdSh0LGUpe3Zh ciByLG4saSxhPXQubGVuZ3RoLG89LTE7aWYobnVsbD09ZSl7Zm9yKDsrK288YTspaWYobnVs bCE9KHI9dFtvXSkmJnI+PXIpZm9yKG49aT1yOysrbzxhOyludWxsIT0ocj10W29dKSYmKG4+ ciYmKG49ciksaTxyJiYoaT1yKSl9ZWxzZSBmb3IoOysrbzxhOylpZihudWxsIT0ocj1lKHRb b10sbyx0KSkmJnI+PXIpZm9yKG49aT1yOysrbzxhOyludWxsIT0ocj1lKHRbb10sbyx0KSkm JihuPnImJihuPXIpLGk8ciYmKGk9cikpO3JldHVybltuLGldfXZhciBmPUFycmF5LnByb3Rv dHlwZSxoPWYuc2xpY2UscD1mLm1hcDtmdW5jdGlvbiBkKHQpe3JldHVybiBmdW5jdGlvbigp e3JldHVybiB0fX1mdW5jdGlvbiBtKHQpe3JldHVybiB0fWZ1bmN0aW9uIGcodCxlLHIpe3Q9 K3QsZT0rZSxyPShpPWFyZ3VtZW50cy5sZW5ndGgpPDI/KGU9dCx0PTAsMSk6aTwzPzE6K3I7 Zm9yKHZhciBuPS0xLGk9MHxNYXRoLm1heCgwLE1hdGguY2VpbCgoZS10KS9yKSksYT1uZXcg QXJyYXkoaSk7KytuPGk7KWFbbl09dCtuKnI7cmV0dXJuIGF9dmFyIHY9TWF0aC5zcXJ0KDUw KSx5PU1hdGguc3FydCgxMCkseD1NYXRoLnNxcnQoMik7ZnVuY3Rpb24gYih0LGUscil7dmFy IG49KGUtdCkvTWF0aC5tYXgoMCxyKSxpPU1hdGguZmxvb3IoTWF0aC5sb2cobikvTWF0aC5M TjEwKSxhPW4vTWF0aC5wb3coMTAsaSk7cmV0dXJuIGk+PTA/KGE+PXY/MTA6YT49eT81OmE+ PXg/MjoxKSpNYXRoLnBvdygxMCxpKTotTWF0aC5wb3coMTAsLWkpLyhhPj12PzEwOmE+PXk/ NTphPj14PzI6MSl9ZnVuY3Rpb24gXyh0LGUscil7dmFyIG49TWF0aC5hYnMoZS10KS9NYXRo Lm1heCgwLHIpLGk9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhuKS9NYXRoLkxO MTApKSxhPW4vaTtyZXR1cm4gYT49dj9pKj0xMDphPj15P2kqPTU6YT49eCYmKGkqPTIpLGU8 dD8taTppfWZ1bmN0aW9uIHcodCl7cmV0dXJuIE1hdGguY2VpbChNYXRoLmxvZyh0Lmxlbmd0 aCkvTWF0aC5MTjIpKzF9ZnVuY3Rpb24gVCh0LGUscil7aWYobnVsbD09ciYmKHI9cyksbj10 Lmxlbmd0aCl7aWYoKGU9K2UpPD0wfHxuPDIpcmV0dXJuK3IodFswXSwwLHQpO2lmKGU+PTEp cmV0dXJuK3IodFtuLTFdLG4tMSx0KTt2YXIgbixpPShuLTEpKmUsYT1NYXRoLmZsb29yKGkp LG89K3IodFthXSxhLHQpO3JldHVybiBvKygrcih0W2ErMV0sYSsxLHQpLW8pKihpLWEpfX1m dW5jdGlvbiBrKHQsZSl7dmFyIHIsbixpPXQubGVuZ3RoLGE9LTE7aWYobnVsbD09ZSl7Zm9y KDsrK2E8aTspaWYobnVsbCE9KHI9dFthXSkmJnI+PXIpZm9yKG49cjsrK2E8aTspbnVsbCE9 KHI9dFthXSkmJm4+ciYmKG49cil9ZWxzZSBmb3IoOysrYTxpOylpZihudWxsIT0ocj1lKHRb YV0sYSx0KSkmJnI+PXIpZm9yKG49cjsrK2E8aTspbnVsbCE9KHI9ZSh0W2FdLGEsdCkpJiZu PnImJihuPXIpO3JldHVybiBufWZ1bmN0aW9uIEEodCl7aWYoIShpPXQubGVuZ3RoKSlyZXR1 cm5bXTtmb3IodmFyIGU9LTEscj1rKHQsTSksbj1uZXcgQXJyYXkocik7KytlPHI7KWZvcih2 YXIgaSxhPS0xLG89bltlXT1uZXcgQXJyYXkoaSk7KythPGk7KW9bYV09dFthXVtlXTtyZXR1 cm4gbn1mdW5jdGlvbiBNKHQpe3JldHVybiB0Lmxlbmd0aH10LmJpc2VjdD1pLHQuYmlzZWN0 UmlnaHQ9aSx0LmJpc2VjdExlZnQ9YSx0LmFzY2VuZGluZz1lLHQuYmlzZWN0b3I9cix0LmNy b3NzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixpLGEscyxsPXQubGVuZ3RoLGM9ZS5sZW5ndGgs dT1uZXcgQXJyYXkobCpjKTtmb3IobnVsbD09ciYmKHI9byksbj1hPTA7bjxsOysrbilmb3Io cz10W25dLGk9MDtpPGM7KytpLCsrYSl1W2FdPXIocyxlW2ldKTtyZXR1cm4gdX0sdC5kZXNj ZW5kaW5nPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU8dD8tMTplPnQ/MTplPj10PzA6TmFOfSx0 LmRldmlhdGlvbj1jLHQuZXh0ZW50PXUsdC5oaXN0b2dyYW09ZnVuY3Rpb24oKXt2YXIgdD1t LGU9dSxyPXc7ZnVuY3Rpb24gbihuKXt2YXIgYSxvLHM9bi5sZW5ndGgsbD1uZXcgQXJyYXko cyk7Zm9yKGE9MDthPHM7KythKWxbYV09dChuW2FdLGEsbik7dmFyIGM9ZShsKSx1PWNbMF0s Zj1jWzFdLGg9cihsLHUsZik7QXJyYXkuaXNBcnJheShoKXx8KGg9Xyh1LGYsaCksaD1nKE1h dGguY2VpbCh1L2gpKmgsZixoKSk7Zm9yKHZhciBwPWgubGVuZ3RoO2hbMF08PXU7KWguc2hp ZnQoKSwtLXA7Zm9yKDtoW3AtMV0+ZjspaC5wb3AoKSwtLXA7dmFyIGQsbT1uZXcgQXJyYXko cCsxKTtmb3IoYT0wO2E8PXA7KythKShkPW1bYV09W10pLngwPWE+MD9oW2EtMV06dSxkLngx PWE8cD9oW2FdOmY7Zm9yKGE9MDthPHM7KythKXU8PShvPWxbYV0pJiZvPD1mJiZtW2koaCxv LDAscCldLnB1c2goblthXSk7cmV0dXJuIG19cmV0dXJuIG4udmFsdWU9ZnVuY3Rpb24oZSl7 cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpkKGUp LG4pOnR9LG4uZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhl PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZChbdFswXSx0WzFdXSksbik6ZX0sbi50aHJlc2hv bGRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9 PXR5cGVvZiB0P3Q6QXJyYXkuaXNBcnJheSh0KT9kKGguY2FsbCh0KSk6ZCh0KSxuKTpyfSxu fSx0LnRocmVzaG9sZEZyZWVkbWFuRGlhY29uaXM9ZnVuY3Rpb24odCxyLG4pe3JldHVybiB0 PXAuY2FsbCh0LHMpLnNvcnQoZSksTWF0aC5jZWlsKChuLXIpLygyKihUKHQsLjc1KS1UKHQs LjI1KSkqTWF0aC5wb3codC5sZW5ndGgsLTEvMykpKX0sdC50aHJlc2hvbGRTY290dD1mdW5j dGlvbih0LGUscil7cmV0dXJuIE1hdGguY2VpbCgoci1lKS8oMy41KmModCkqTWF0aC5wb3co dC5sZW5ndGgsLTEvMykpKX0sdC50aHJlc2hvbGRTdHVyZ2VzPXcsdC5tYXg9ZnVuY3Rpb24o dCxlKXt2YXIgcixuLGk9dC5sZW5ndGgsYT0tMTtpZihudWxsPT1lKXtmb3IoOysrYTxpOylp ZihudWxsIT0ocj10W2FdKSYmcj49cilmb3Iobj1yOysrYTxpOyludWxsIT0ocj10W2FdKSYm cj5uJiYobj1yKX1lbHNlIGZvcig7KythPGk7KWlmKG51bGwhPShyPWUodFthXSxhLHQpKSYm cj49cilmb3Iobj1yOysrYTxpOyludWxsIT0ocj1lKHRbYV0sYSx0KSkmJnI+biYmKG49cik7 cmV0dXJuIG59LHQubWVhbj1mdW5jdGlvbih0LGUpe3ZhciByLG49dC5sZW5ndGgsaT1uLGE9 LTEsbz0wO2lmKG51bGw9PWUpZm9yKDsrK2E8bjspaXNOYU4ocj1zKHRbYV0pKT8tLWk6bys9 cjtlbHNlIGZvcig7KythPG47KWlzTmFOKHI9cyhlKHRbYV0sYSx0KSkpPy0taTpvKz1yO2lm KGkpcmV0dXJuIG8vaX0sdC5tZWRpYW49ZnVuY3Rpb24odCxyKXt2YXIgbixpPXQubGVuZ3Ro LGE9LTEsbz1bXTtpZihudWxsPT1yKWZvcig7KythPGk7KWlzTmFOKG49cyh0W2FdKSl8fG8u cHVzaChuKTtlbHNlIGZvcig7KythPGk7KWlzTmFOKG49cyhyKHRbYV0sYSx0KSkpfHxvLnB1 c2gobik7cmV0dXJuIFQoby5zb3J0KGUpLC41KX0sdC5tZXJnZT1mdW5jdGlvbih0KXtmb3Io dmFyIGUscixuLGk9dC5sZW5ndGgsYT0tMSxvPTA7KythPGk7KW8rPXRbYV0ubGVuZ3RoO2Zv cihyPW5ldyBBcnJheShvKTstLWk+PTA7KWZvcihlPShuPXRbaV0pLmxlbmd0aDstLWU+PTA7 KXJbLS1vXT1uW2VdO3JldHVybiByfSx0Lm1pbj1rLHQucGFpcnM9ZnVuY3Rpb24odCxlKXtu dWxsPT1lJiYoZT1vKTtmb3IodmFyIHI9MCxuPXQubGVuZ3RoLTEsaT10WzBdLGE9bmV3IEFy cmF5KG48MD8wOm4pO3I8bjspYVtyXT1lKGksaT10Wysrcl0pO3JldHVybiBhfSx0LnBlcm11 dGU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9ZS5sZW5ndGgsbj1uZXcgQXJyYXkocik7ci0t OyluW3JdPXRbZVtyXV07cmV0dXJuIG59LHQucXVhbnRpbGU9VCx0LnJhbmdlPWcsdC5zY2Fu PWZ1bmN0aW9uKHQscil7aWYobj10Lmxlbmd0aCl7dmFyIG4saSxhPTAsbz0wLHM9dFtvXTtm b3IobnVsbD09ciYmKHI9ZSk7KythPG47KShyKGk9dFthXSxzKTwwfHwwIT09cihzLHMpKSYm KHM9aSxvPWEpO3JldHVybiAwPT09cihzLHMpP286dm9pZCAwfX0sdC5zaHVmZmxlPWZ1bmN0 aW9uKHQsZSxyKXtmb3IodmFyIG4saSxhPShudWxsPT1yP3QubGVuZ3RoOnIpLShlPW51bGw9 PWU/MDorZSk7YTspaT1NYXRoLnJhbmRvbSgpKmEtLXwwLG49dFthK2VdLHRbYStlXT10W2kr ZV0sdFtpK2VdPW47cmV0dXJuIHR9LHQuc3VtPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbj10Lmxl bmd0aCxpPS0xLGE9MDtpZihudWxsPT1lKWZvcig7KytpPG47KShyPSt0W2ldKSYmKGErPXIp O2Vsc2UgZm9yKDsrK2k8bjspKHI9K2UodFtpXSxpLHQpKSYmKGErPXIpO3JldHVybiBhfSx0 LnRpY2tzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixpLGEsbyxzPS0xO2lmKHI9K3IsKHQ9K3Qp PT09KGU9K2UpJiZyPjApcmV0dXJuW3RdO2lmKChuPWU8dCkmJihpPXQsdD1lLGU9aSksMD09 PShvPWIodCxlLHIpKXx8IWlzRmluaXRlKG8pKXJldHVybltdO2lmKG8+MClmb3IodD1NYXRo LmNlaWwodC9vKSxlPU1hdGguZmxvb3IoZS9vKSxhPW5ldyBBcnJheShpPU1hdGguY2VpbChl LXQrMSkpOysrczxpOylhW3NdPSh0K3MpKm87ZWxzZSBmb3IodD1NYXRoLmZsb29yKHQqbyks ZT1NYXRoLmNlaWwoZSpvKSxhPW5ldyBBcnJheShpPU1hdGguY2VpbCh0LWUrMSkpOysrczxp OylhW3NdPSh0LXMpL287cmV0dXJuIG4mJmEucmV2ZXJzZSgpLGF9LHQudGlja0luY3JlbWVu dD1iLHQudGlja1N0ZXA9Xyx0LnRyYW5zcG9zZT1BLHQudmFyaWFuY2U9bCx0LnppcD1mdW5j dGlvbigpe3JldHVybiBBKGFyZ3VtZW50cyl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJf X2VzTW9kdWxlIix7dmFsdWU6ITB9KX0pKX0se31dLDEwODpbZnVuY3Rpb24odCxlLHIpeyFm dW5jdGlvbih0LG4pe24oIm9iamVjdCI9PXR5cGVvZiByJiZ2b2lkIDAhPT1lP3I6dC5kMz10 LmQzfHx7fSl9KHRoaXMsKGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBlKCl7 fWZ1bmN0aW9uIHIodCxyKXt2YXIgbj1uZXcgZTtpZih0IGluc3RhbmNlb2YgZSl0LmVhY2go KGZ1bmN0aW9uKHQsZSl7bi5zZXQoZSx0KX0pKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkp e3ZhciBpLGE9LTEsbz10Lmxlbmd0aDtpZihudWxsPT1yKWZvcig7KythPG87KW4uc2V0KGEs dFthXSk7ZWxzZSBmb3IoOysrYTxvOyluLnNldChyKGk9dFthXSxhLHQpLGkpfWVsc2UgaWYo dClmb3IodmFyIHMgaW4gdCluLnNldChzLHRbc10pO3JldHVybiBufWZ1bmN0aW9uIG4oKXty ZXR1cm57fX1mdW5jdGlvbiBpKHQsZSxyKXt0W2VdPXJ9ZnVuY3Rpb24gYSgpe3JldHVybiBy KCl9ZnVuY3Rpb24gbyh0LGUscil7dC5zZXQoZSxyKX1mdW5jdGlvbiBzKCl7fWUucHJvdG90 eXBlPXIucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjplLGhhczpmdW5jdGlvbih0KXtyZXR1cm4i JCIrdCBpbiB0aGlzfSxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbIiQiK3RdfSxzZXQ6 ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpc1siJCIrdF09ZSx0aGlzfSxyZW1vdmU6ZnVuY3Rp b24odCl7dmFyIGU9IiQiK3Q7cmV0dXJuIGUgaW4gdGhpcyYmZGVsZXRlIHRoaXNbZV19LGNs ZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpIiQiPT09dFswXSYmZGVsZXRlIHRo aXNbdF19LGtleXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcykiJCI9 PT1lWzBdJiZ0LnB1c2goZS5zbGljZSgxKSk7cmV0dXJuIHR9LHZhbHVlczpmdW5jdGlvbigp e3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKSIkIj09PWVbMF0mJnQucHVzaCh0aGlzW2Vd KTtyZXR1cm4gdH0sZW50cmllczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0 aGlzKSIkIj09PWVbMF0mJnQucHVzaCh7a2V5OmUuc2xpY2UoMSksdmFsdWU6dGhpc1tlXX0p O3JldHVybiB0fSxzaXplOmZ1bmN0aW9uKCl7dmFyIHQ9MDtmb3IodmFyIGUgaW4gdGhpcyki JCI9PT1lWzBdJiYrK3Q7cmV0dXJuIHR9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGlu IHRoaXMpaWYoIiQiPT09dFswXSlyZXR1cm4hMTtyZXR1cm4hMH0sZWFjaDpmdW5jdGlvbih0 KXtmb3IodmFyIGUgaW4gdGhpcykiJCI9PT1lWzBdJiZ0KHRoaXNbZV0sZS5zbGljZSgxKSx0 aGlzKX19O3ZhciBsPXIucHJvdG90eXBlO2Z1bmN0aW9uIGModCxlKXt2YXIgcj1uZXcgcztp Zih0IGluc3RhbmNlb2Ygcyl0LmVhY2goKGZ1bmN0aW9uKHQpe3IuYWRkKHQpfSkpO2Vsc2Ug aWYodCl7dmFyIG49LTEsaT10Lmxlbmd0aDtpZihudWxsPT1lKWZvcig7KytuPGk7KXIuYWRk KHRbbl0pO2Vsc2UgZm9yKDsrK248aTspci5hZGQoZSh0W25dLG4sdCkpfXJldHVybiByfXMu cHJvdG90eXBlPWMucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpzLGhhczpsLmhhcyxhZGQ6ZnVu Y3Rpb24odCl7cmV0dXJuIHRoaXNbIiQiKyh0Kz0iIildPXQsdGhpc30scmVtb3ZlOmwucmVt b3ZlLGNsZWFyOmwuY2xlYXIsdmFsdWVzOmwua2V5cyxzaXplOmwuc2l6ZSxlbXB0eTpsLmVt cHR5LGVhY2g6bC5lYWNofSx0Lm5lc3Q9ZnVuY3Rpb24oKXt2YXIgdCxlLHMsbD1bXSxjPVtd O2Z1bmN0aW9uIHUobixpLGEsbyl7aWYoaT49bC5sZW5ndGgpcmV0dXJuIG51bGwhPXQmJm4u c29ydCh0KSxudWxsIT1lP2Uobik6bjtmb3IodmFyIHMsYyxmLGg9LTEscD1uLmxlbmd0aCxk PWxbaSsrXSxtPXIoKSxnPWEoKTsrK2g8cDspKGY9bS5nZXQocz1kKGM9bltoXSkrIiIpKT9m LnB1c2goYyk6bS5zZXQocyxbY10pO3JldHVybiBtLmVhY2goKGZ1bmN0aW9uKHQsZSl7byhn LGUsdSh0LGksYSxvKSl9KSksZ31yZXR1cm4gcz17b2JqZWN0OmZ1bmN0aW9uKHQpe3JldHVy biB1KHQsMCxuLGkpfSxtYXA6ZnVuY3Rpb24odCl7cmV0dXJuIHUodCwwLGEsbyl9LGVudHJp ZXM6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIHQocixuKXtpZigrK24+bC5sZW5ndGgp cmV0dXJuIHI7dmFyIGksYT1jW24tMV07cmV0dXJuIG51bGwhPWUmJm4+PWwubGVuZ3RoP2k9 ci5lbnRyaWVzKCk6KGk9W10sci5lYWNoKChmdW5jdGlvbihlLHIpe2kucHVzaCh7a2V5OnIs dmFsdWVzOnQoZSxuKX0pfSkpKSxudWxsIT1hP2kuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1 cm4gYSh0LmtleSxlLmtleSl9KSk6aX0odSh0LDAsYSxvKSwwKX0sa2V5OmZ1bmN0aW9uKHQp e3JldHVybiBsLnB1c2godCksc30sc29ydEtleXM6ZnVuY3Rpb24odCl7cmV0dXJuIGNbbC5s ZW5ndGgtMV09dCxzfSxzb3J0VmFsdWVzOmZ1bmN0aW9uKGUpe3JldHVybiB0PWUsc30scm9s bHVwOmZ1bmN0aW9uKHQpe3JldHVybiBlPXQsc319fSx0LnNldD1jLHQubWFwPXIsdC5rZXlz PWZ1bmN0aW9uKHQpe3ZhciBlPVtdO2Zvcih2YXIgciBpbiB0KWUucHVzaChyKTtyZXR1cm4g ZX0sdC52YWx1ZXM9ZnVuY3Rpb24odCl7dmFyIGU9W107Zm9yKHZhciByIGluIHQpZS5wdXNo KHRbcl0pO3JldHVybiBlfSx0LmVudHJpZXM9ZnVuY3Rpb24odCl7dmFyIGU9W107Zm9yKHZh ciByIGluIHQpZS5wdXNoKHtrZXk6cix2YWx1ZTp0W3JdfSk7cmV0dXJuIGV9LE9iamVjdC5k ZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0pKX0se31dLDEwOTpb ZnVuY3Rpb24odCxlLHIpeyFmdW5jdGlvbih0LG4peyJvYmplY3QiPT10eXBlb2YgciYmdm9p ZCAwIT09ZT9uKHIpOm4oKHQ9dHx8c2VsZikuZDM9dC5kM3x8e30pfSh0aGlzLChmdW5jdGlv bih0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZSh0LGUscil7dC5wcm90b3R5cGU9ZS5wcm90 b3R5cGU9cixyLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gcih0LGUpe3ZhciByPU9iamVjdC5j cmVhdGUodC5wcm90b3R5cGUpO2Zvcih2YXIgbiBpbiBlKXJbbl09ZVtuXTtyZXR1cm4gcn1m dW5jdGlvbiBuKCl7fXZhciBpPSJcXHMqKFsrLV0/XFxkKylcXHMqIixhPSJcXHMqKFsrLV0/ XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLG89IlxccyooWystXT9cXGQq XFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pJVxccyoiLHM9L14jKFswLTlhLWZdezMsOH0p JC8sbD1uZXcgUmVnRXhwKCJecmdiXFwoIitbaSxpLGldKyJcXCkkIiksYz1uZXcgUmVnRXhw KCJecmdiXFwoIitbbyxvLG9dKyJcXCkkIiksdT1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW2ks aSxpLGFdKyJcXCkkIiksZj1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW28sbyxvLGFdKyJcXCkk IiksaD1uZXcgUmVnRXhwKCJeaHNsXFwoIitbYSxvLG9dKyJcXCkkIikscD1uZXcgUmVnRXhw KCJeaHNsYVxcKCIrW2EsbyxvLGFdKyJcXCkkIiksZD17YWxpY2VibHVlOjE1NzkyMzgzLGFu dGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVy ZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFu Y2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246 MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1 c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dl cmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46 NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5 MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3 LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVu OjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmty ZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRh cmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3Jl eTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBw aW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5 OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3 aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2Fp bnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xk ZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjEx NDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQw LGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFr aToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxh d25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMy NTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5y b2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1 NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2 NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdo dHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJs dWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46 MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4 LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6 MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5Nyxt ZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10 dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVl OjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNp bjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQz NTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9y YW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEz MCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0 cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBl cnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1 OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4 MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEy NzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUw MzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYs c2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNs YXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxi bHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0 b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0 OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2 Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBtKCl7cmV0dXJuIHRoaXMu cmdiKCkuZm9ybWF0SGV4KCl9ZnVuY3Rpb24gZygpe3JldHVybiB0aGlzLnJnYigpLmZvcm1h dFJnYigpfWZ1bmN0aW9uIHYodCl7dmFyIGUscjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRv TG93ZXJDYXNlKCksKGU9cy5leGVjKHQpKT8ocj1lWzFdLmxlbmd0aCxlPXBhcnNlSW50KGVb MV0sMTYpLDY9PT1yP3koZSk6Mz09PXI/bmV3IHcoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1 fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1yP3goZT4+MjQmMjU1LGU+PjE2JjI1NSxl Pj44JjI1NSwoMjU1JmUpLzI1NSk6ND09PXI/eChlPj4xMiYxNXxlPj44JjI0MCxlPj44JjE1 fGU+PjQmMjQwLGU+PjQmMTV8MjQwJmUsKCgxNSZlKTw8NHwxNSZlKS8yNTUpOm51bGwpOihl PWwuZXhlYyh0KSk/bmV3IHcoZVsxXSxlWzJdLGVbM10sMSk6KGU9Yy5leGVjKHQpKT9uZXcg dygyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT11LmV4ZWMo dCkpP3goZVsxXSxlWzJdLGVbM10sZVs0XSk6KGU9Zi5leGVjKHQpKT94KDI1NSplWzFdLzEw MCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLGVbNF0pOihlPWguZXhlYyh0KSk/TShlWzFd LGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPXAuZXhlYyh0KSk/TShlWzFdLGVbMl0vMTAwLGVb M10vMTAwLGVbNF0pOmQuaGFzT3duUHJvcGVydHkodCk/eShkW3RdKToidHJhbnNwYXJlbnQi PT09dD9uZXcgdyhOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIHkodCl7cmV0dXJuIG5l dyB3KHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCwxKX1mdW5jdGlvbiB4KHQsZSxyLG4pe3Jl dHVybiBuPD0wJiYodD1lPXI9TmFOKSxuZXcgdyh0LGUscixuKX1mdW5jdGlvbiBiKHQpe3Jl dHVybiB0IGluc3RhbmNlb2Ygbnx8KHQ9dih0KSksdD9uZXcgdygodD10LnJnYigpKS5yLHQu Zyx0LmIsdC5vcGFjaXR5KTpuZXcgd31mdW5jdGlvbiBfKHQsZSxyLG4pe3JldHVybiAxPT09 YXJndW1lbnRzLmxlbmd0aD9iKHQpOm5ldyB3KHQsZSxyLG51bGw9PW4/MTpuKX1mdW5jdGlv biB3KHQsZSxyLG4pe3RoaXMucj0rdCx0aGlzLmc9K2UsdGhpcy5iPStyLHRoaXMub3BhY2l0 eT0rbn1mdW5jdGlvbiBUKCl7cmV0dXJuIiMiK0EodGhpcy5yKStBKHRoaXMuZykrQSh0aGlz LmIpfWZ1bmN0aW9uIGsoKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05h Tih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRo Lm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgu bWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5t YXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoi LCAiK3QrIikiKX1mdW5jdGlvbiBBKHQpe3JldHVybigodD1NYXRoLm1heCgwLE1hdGgubWlu KDI1NSxNYXRoLnJvdW5kKHQpfHwwKSkpPDE2PyIwIjoiIikrdC50b1N0cmluZygxNil9ZnVu Y3Rpb24gTSh0LGUscixuKXtyZXR1cm4gbjw9MD90PWU9cj1OYU46cjw9MHx8cj49MT90PWU9 TmFOOmU8PTAmJih0PU5hTiksbmV3IEwodCxlLHIsbil9ZnVuY3Rpb24gUyh0KXtpZih0IGlu c3RhbmNlb2YgTClyZXR1cm4gbmV3IEwodC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGlu c3RhbmNlb2Ygbnx8KHQ9dih0KSksIXQpcmV0dXJuIG5ldyBMO2lmKHQgaW5zdGFuY2VvZiBM KXJldHVybiB0O3ZhciBlPSh0PXQucmdiKCkpLnIvMjU1LHI9dC5nLzI1NSxpPXQuYi8yNTUs YT1NYXRoLm1pbihlLHIsaSksbz1NYXRoLm1heChlLHIsaSkscz1OYU4sbD1vLWEsYz0obyth KS8yO3JldHVybiBsPyhzPWU9PT1vPyhyLWkpL2wrNioocjxpKTpyPT09bz8oaS1lKS9sKzI6 KGUtcikvbCs0LGwvPWM8LjU/bythOjItby1hLHMqPTYwKTpsPWM+MCYmYzwxPzA6cyxuZXcg TChzLGwsYyx0Lm9wYWNpdHkpfWZ1bmN0aW9uIEUodCxlLHIsbil7cmV0dXJuIDE9PT1hcmd1 bWVudHMubGVuZ3RoP1ModCk6bmV3IEwodCxlLHIsbnVsbD09bj8xOm4pfWZ1bmN0aW9uIEwo dCxlLHIsbil7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K3IsdGhpcy5vcGFjaXR5PStu fWZ1bmN0aW9uIEModCxlLHIpe3JldHVybiAyNTUqKHQ8NjA/ZSsoci1lKSp0LzYwOnQ8MTgw P3I6dDwyNDA/ZSsoci1lKSooMjQwLXQpLzYwOmUpfWUobix2LHtjb3B5OmZ1bmN0aW9uKHQp e3JldHVybiBPYmplY3QuYXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLHRoaXMsdCl9LGRp c3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0s aGV4Om0sZm9ybWF0SGV4Om0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyku Zm9ybWF0SHNsKCl9LGZvcm1hdFJnYjpnLHRvU3RyaW5nOmd9KSxlKHcsXyxyKG4se2JyaWdo dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/MS8uNzpNYXRoLnBvdygxLy43LHQp LG5ldyB3KHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LGRhcmtl cjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10Py43Ok1hdGgucG93KC43LHQpLG5ldyB3 KHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlv bigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhp cy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhp cy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxo ZXg6VCxmb3JtYXRIZXg6VCxmb3JtYXRSZ2I6ayx0b1N0cmluZzprfSkpLGUoTCxFLHIobix7 YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD8xLy43Ok1hdGgucG93KDEv LjcsdCksbmV3IEwodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJr ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD8uNzpNYXRoLnBvdyguNyx0KSxuZXcg TCh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigp e3ZhciB0PXRoaXMuaCUzNjArMzYwKih0aGlzLmg8MCksZT1pc05hTih0KXx8aXNOYU4odGhp cy5zKT8wOnRoaXMucyxyPXRoaXMubCxuPXIrKHI8LjU/cjoxLXIpKmUsaT0yKnItbjtyZXR1 cm4gbmV3IHcoQyh0Pj0yNDA/dC0yNDA6dCsxMjAsaSxuKSxDKHQsaSxuKSxDKHQ8MTIwP3Qr MjQwOnQtMTIwLGksbiksdGhpcy5vcGFjaXR5KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXty ZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwm JnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGZvcm1hdEhz bDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3BhY2l0eTtyZXR1cm4oMT09PSh0PWlzTmFOKHQp PzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSk/ImhzbCgiOiJoc2xhKCIpKyh0aGlzLmh8 fDApKyIsICIrMTAwKih0aGlzLnN8fDApKyIlLCAiKzEwMCoodGhpcy5sfHwwKSsiJSIrKDE9 PT10PyIpIjoiLCAiK3QrIikiKX19KSk7dmFyIFA9TWF0aC5QSS8xODAsST0xODAvTWF0aC5Q SSxPPTYvMjksej0zKk8qTztmdW5jdGlvbiBEKHQpe2lmKHQgaW5zdGFuY2VvZiBGKXJldHVy biBuZXcgRih0LmwsdC5hLHQuYix0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBxKXJldHVy biBHKHQpO3QgaW5zdGFuY2VvZiB3fHwodD1iKHQpKTt2YXIgZSxyLG49VSh0LnIpLGk9VSh0 LmcpLGE9VSh0LmIpLG89QigoLjIyMjUwNDUqbisuNzE2ODc4NippKy4wNjA2MTY5KmEpLzEp O3JldHVybiBuPT09aSYmaT09PWE/ZT1yPW86KGU9QigoLjQzNjA3NDcqbisuMzg1MDY0OSpp Ky4xNDMwODA0KmEpLy45NjQyMikscj1CKCguMDEzOTMyMipuKy4wOTcxMDQ1KmkrLjcxNDE3 MzMqYSkvLjgyNTIxKSksbmV3IEYoMTE2Km8tMTYsNTAwKihlLW8pLDIwMCooby1yKSx0Lm9w YWNpdHkpfWZ1bmN0aW9uIFIodCxlLHIsbil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3Ro P0QodCk6bmV3IEYodCxlLHIsbnVsbD09bj8xOm4pfWZ1bmN0aW9uIEYodCxlLHIsbil7dGhp cy5sPSt0LHRoaXMuYT0rZSx0aGlzLmI9K3IsdGhpcy5vcGFjaXR5PStufWZ1bmN0aW9uIEIo dCl7cmV0dXJuIHQ+LjAwODg1NjQ1MTY3OTAzNTYzMT9NYXRoLnBvdyh0LDEvMyk6dC96KzQv Mjl9ZnVuY3Rpb24gTih0KXtyZXR1cm4gdD5PP3QqdCp0OnoqKHQtNC8yOSl9ZnVuY3Rpb24g aih0KXtyZXR1cm4gMjU1Kih0PD0uMDAzMTMwOD8xMi45Mip0OjEuMDU1Kk1hdGgucG93KHQs MS8yLjQpLS4wNTUpfWZ1bmN0aW9uIFUodCl7cmV0dXJuKHQvPTI1NSk8PS4wNDA0NT90LzEy LjkyOk1hdGgucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCl9ZnVuY3Rpb24gVih0KXtpZih0IGlu c3RhbmNlb2YgcSlyZXR1cm4gbmV3IHEodC5oLHQuYyx0LmwsdC5vcGFjaXR5KTtpZih0IGlu c3RhbmNlb2YgRnx8KHQ9RCh0KSksMD09PXQuYSYmMD09PXQuYilyZXR1cm4gbmV3IHEoTmFO LDA8dC5sJiZ0Lmw8MTAwPzA6TmFOLHQubCx0Lm9wYWNpdHkpO3ZhciBlPU1hdGguYXRhbjIo dC5iLHQuYSkqSTtyZXR1cm4gbmV3IHEoZTwwP2UrMzYwOmUsTWF0aC5zcXJ0KHQuYSp0LmEr dC5iKnQuYiksdC5sLHQub3BhY2l0eSl9ZnVuY3Rpb24gSCh0LGUscixuKXtyZXR1cm4gMT09 PWFyZ3VtZW50cy5sZW5ndGg/Vih0KTpuZXcgcSh0LGUscixudWxsPT1uPzE6bil9ZnVuY3Rp b24gcSh0LGUscixuKXt0aGlzLmg9K3QsdGhpcy5jPStlLHRoaXMubD0rcix0aGlzLm9wYWNp dHk9K259ZnVuY3Rpb24gRyh0KXtpZihpc05hTih0LmgpKXJldHVybiBuZXcgRih0LmwsMCww LHQub3BhY2l0eSk7dmFyIGU9dC5oKlA7cmV0dXJuIG5ldyBGKHQubCxNYXRoLmNvcyhlKSp0 LmMsTWF0aC5zaW4oZSkqdC5jLHQub3BhY2l0eSl9ZShGLFIscihuLHticmlnaHRlcjpmdW5j dGlvbih0KXtyZXR1cm4gbmV3IEYodGhpcy5sKzE4KihudWxsPT10PzE6dCksdGhpcy5hLHRo aXMuYix0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBGKHRo aXMubC0xOCoobnVsbD09dD8xOnQpLHRoaXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0scmdi OmZ1bmN0aW9uKCl7dmFyIHQ9KHRoaXMubCsxNikvMTE2LGU9aXNOYU4odGhpcy5hKT90OnQr dGhpcy5hLzUwMCxyPWlzTmFOKHRoaXMuYik/dDp0LXRoaXMuYi8yMDA7cmV0dXJuIG5ldyB3 KGooMy4xMzM4NTYxKihlPS45NjQyMipOKGUpKS0xLjYxNjg2NjcqKHQ9MSpOKHQpKS0uNDkw NjE0Nioocj0uODI1MjEqTihyKSkpLGooLS45Nzg3Njg0KmUrMS45MTYxNDE1KnQrLjAzMzQ1 NCpyKSxqKC4wNzE5NDUzKmUtLjIyODk5MTQqdCsxLjQwNTI0MjcqciksdGhpcy5vcGFjaXR5 KX19KSksZShxLEgscihuLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IHEodGhp cy5oLHRoaXMuYyx0aGlzLmwrMTgqKG51bGw9PXQ/MTp0KSx0aGlzLm9wYWNpdHkpfSxkYXJr ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBxKHRoaXMuaCx0aGlzLmMsdGhpcy5sLTE4Kihu dWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIEcodGhp cykucmdiKCl9fSkpO3ZhciBZPS0uMTQ4NjEsVz0xLjc4Mjc3LFg9LS4yOTIyNyxaPS0uOTA2 NDksSj0xLjk3Mjk0LEs9SipaLFE9SipXLCQ9VypYLVoqWTtmdW5jdGlvbiB0dCh0KXtpZih0 IGluc3RhbmNlb2YgcnQpcmV0dXJuIG5ldyBydCh0LmgsdC5zLHQubCx0Lm9wYWNpdHkpO3Qg aW5zdGFuY2VvZiB3fHwodD1iKHQpKTt2YXIgZT10LnIvMjU1LHI9dC5nLzI1NSxuPXQuYi8y NTUsaT0oJCpuK0sqZS1RKnIpLygkK0stUSksYT1uLWksbz0oSiooci1pKS1YKmEpL1oscz1N YXRoLnNxcnQobypvK2EqYSkvKEoqaSooMS1pKSksbD1zP01hdGguYXRhbjIobyxhKSpJLTEy MDpOYU47cmV0dXJuIG5ldyBydChsPDA/bCszNjA6bCxzLGksdC5vcGFjaXR5KX1mdW5jdGlv biBldCh0LGUscixuKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dHQodCk6bmV3IHJ0 KHQsZSxyLG51bGw9PW4/MTpuKX1mdW5jdGlvbiBydCh0LGUscixuKXt0aGlzLmg9K3QsdGhp cy5zPStlLHRoaXMubD0rcix0aGlzLm9wYWNpdHk9K259ZShydCxldCxyKG4se2JyaWdodGVy OmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/MS8uNzpNYXRoLnBvdygxLy43LHQpLG5l dyBydCh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5j dGlvbih0KXtyZXR1cm4gdD1udWxsPT10Py43Ok1hdGgucG93KC43LHQpLG5ldyBydCh0aGlz LmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0 PWlzTmFOKHRoaXMuaCk/MDoodGhpcy5oKzEyMCkqUCxlPSt0aGlzLmwscj1pc05hTih0aGlz LnMpPzA6dGhpcy5zKmUqKDEtZSksbj1NYXRoLmNvcyh0KSxpPU1hdGguc2luKHQpO3JldHVy biBuZXcgdygyNTUqKGUrciooWSpuK1cqaSkpLDI1NSooZStyKihYKm4rWippKSksMjU1Kihl K3IqKEoqbikpLHRoaXMub3BhY2l0eSl9fSkpLHQuY29sb3I9dix0LmN1YmVoZWxpeD1ldCx0 LmdyYXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IEYodCwwLDAsbnVsbD09ZT8xOmUpfSx0 LmhjbD1ILHQuaHNsPUUsdC5sYWI9Uix0LmxjaD1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4g MT09PWFyZ3VtZW50cy5sZW5ndGg/Vih0KTpuZXcgcShyLGUsdCxudWxsPT1uPzE6bil9LHQu cmdiPV8sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0p fSkpfSx7fV0sMTEwOltmdW5jdGlvbih0LGUscil7IWZ1bmN0aW9uKHQsbil7Im9iamVjdCI9 PXR5cGVvZiByJiZ2b2lkIDAhPT1lP24ocik6bigodD10fHxzZWxmKS5kMz10LmQzfHx7fSl9 KHRoaXMsKGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT17dmFsdWU6ZnVuY3Rpb24o KXt9fTtmdW5jdGlvbiByKCl7Zm9yKHZhciB0LGU9MCxyPWFyZ3VtZW50cy5sZW5ndGgsaT17 fTtlPHI7KytlKXtpZighKHQ9YXJndW1lbnRzW2VdKyIiKXx8dCBpbiBpfHwvW1xzLl0vLnRl c3QodCkpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrdCk7aVt0XT1bXX1yZXR1 cm4gbmV3IG4oaSl9ZnVuY3Rpb24gbih0KXt0aGlzLl89dH1mdW5jdGlvbiBpKHQsZSl7cmV0 dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIHI9IiIs bj10LmluZGV4T2YoIi4iKTtpZihuPj0wJiYocj10LnNsaWNlKG4rMSksdD10LnNsaWNlKDAs bikpLHQmJiFlLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0 eXBlOiAiK3QpO3JldHVybnt0eXBlOnQsbmFtZTpyfX0pKX1mdW5jdGlvbiBhKHQsZSl7Zm9y KHZhciByLG49MCxpPXQubGVuZ3RoO248aTsrK24paWYoKHI9dFtuXSkubmFtZT09PWUpcmV0 dXJuIHIudmFsdWV9ZnVuY3Rpb24gbyh0LHIsbil7Zm9yKHZhciBpPTAsYT10Lmxlbmd0aDtp PGE7KytpKWlmKHRbaV0ubmFtZT09PXIpe3RbaV09ZSx0PXQuc2xpY2UoMCxpKS5jb25jYXQo dC5zbGljZShpKzEpKTticmVha31yZXR1cm4gbnVsbCE9biYmdC5wdXNoKHtuYW1lOnIsdmFs dWU6bn0pLHR9bi5wcm90b3R5cGU9ci5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOm4sb246ZnVu Y3Rpb24odCxlKXt2YXIgcixuPXRoaXMuXyxzPWkodCsiIixuKSxsPS0xLGM9cy5sZW5ndGg7 aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBl b2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK2w8 YzspaWYocj0odD1zW2xdKS50eXBlKW5bcl09byhuW3JdLHQubmFtZSxlKTtlbHNlIGlmKG51 bGw9PWUpZm9yKHIgaW4gbiluW3JdPW8obltyXSx0Lm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9 Zm9yKDsrK2w8YzspaWYoKHI9KHQ9c1tsXSkudHlwZSkmJihyPWEobltyXSx0Lm5hbWUpKSly ZXR1cm4gcn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgciBp biBlKXRbcl09ZVtyXS5zbGljZSgpO3JldHVybiBuZXcgbih0KX0sY2FsbDpmdW5jdGlvbih0 LGUpe2lmKChyPWFyZ3VtZW50cy5sZW5ndGgtMik+MClmb3IodmFyIHIsbixpPW5ldyBBcnJh eShyKSxhPTA7YTxyOysrYSlpW2FdPWFyZ3VtZW50c1thKzJdO2lmKCF0aGlzLl8uaGFzT3du UHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKGE9 MCxyPShuPXRoaXMuX1t0XSkubGVuZ3RoO2E8cjsrK2EpblthXS52YWx1ZS5hcHBseShlLGkp fSxhcHBseTpmdW5jdGlvbih0LGUscil7aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0 aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3IodmFyIG49dGhpcy5fW3Rd LGk9MCxhPW4ubGVuZ3RoO2k8YTsrK2kpbltpXS52YWx1ZS5hcHBseShlLHIpfX0sdC5kaXNw YXRjaD1yLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9 KX0pKX0se31dLDExMTpbZnVuY3Rpb24odCxlLHIpeyFmdW5jdGlvbihuLGkpeyJvYmplY3Qi PT10eXBlb2YgciYmdm9pZCAwIT09ZT9pKHIsdCgiZDMtcXVhZHRyZWUiKSx0KCJkMy1jb2xs ZWN0aW9uIiksdCgiZDMtZGlzcGF0Y2giKSx0KCJkMy10aW1lciIpKTppKG4uZDM9bi5kM3x8 e30sbi5kMyxuLmQzLG4uZDMsbi5kMyl9KHRoaXMsKGZ1bmN0aW9uKHQsZSxyLG4saSl7InVz ZSBzdHJpY3QiO2Z1bmN0aW9uIGEodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1 bmN0aW9uIG8oKXtyZXR1cm4gMWUtNiooTWF0aC5yYW5kb20oKS0uNSl9ZnVuY3Rpb24gcyh0 KXtyZXR1cm4gdC54K3Qudnh9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gdC55K3Qudnl9ZnVuY3Rp b24gYyh0KXtyZXR1cm4gdC5pbmRleH1mdW5jdGlvbiB1KHQsZSl7dmFyIHI9dC5nZXQoZSk7 aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nOiAiK2UpO3JldHVybiByfWZ1bmN0aW9u IGYodCl7cmV0dXJuIHQueH1mdW5jdGlvbiBoKHQpe3JldHVybiB0Lnl9dmFyIHA9TWF0aC5Q SSooMy1NYXRoLnNxcnQoNSkpO3QuZm9yY2VDZW50ZXI9ZnVuY3Rpb24odCxlKXt2YXIgcjtm dW5jdGlvbiBuKCl7dmFyIG4saSxhPXIubGVuZ3RoLG89MCxzPTA7Zm9yKG49MDtuPGE7Kytu KW8rPShpPXJbbl0pLngscys9aS55O2ZvcihvPW8vYS10LHM9cy9hLWUsbj0wO248YTsrK24p KGk9cltuXSkueC09byxpLnktPXN9cmV0dXJuIG51bGw9PXQmJih0PTApLG51bGw9PWUmJihl PTApLG4uaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtyPXR9LG4ueD1mdW5jdGlvbihlKXtyZXR1 cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rZSxuKTp0fSxuLnk9ZnVuY3Rpb24odCl7cmV0dXJu IGFyZ3VtZW50cy5sZW5ndGg/KGU9K3Qsbik6ZX0sbn0sdC5mb3JjZUNvbGxpZGU9ZnVuY3Rp b24odCl7dmFyIHIsbixpPTEsYz0xO2Z1bmN0aW9uIHUoKXtmb3IodmFyIHQsYSx1LGgscCxk LG0sZz1yLmxlbmd0aCx2PTA7djxjOysrdilmb3IoYT1lLnF1YWR0cmVlKHIscyxsKS52aXNp dEFmdGVyKGYpLHQ9MDt0PGc7Kyt0KXU9clt0XSxkPW5bdS5pbmRleF0sbT1kKmQsaD11Lngr dS52eCxwPXUueSt1LnZ5LGEudmlzaXQoeSk7ZnVuY3Rpb24geSh0LGUscixuLGEpe3ZhciBz PXQuZGF0YSxsPXQucixjPWQrbDtpZighcylyZXR1cm4gZT5oK2N8fG48aC1jfHxyPnArY3x8 YTxwLWM7aWYocy5pbmRleD51LmluZGV4KXt2YXIgZj1oLXMueC1zLnZ4LGc9cC1zLnktcy52 eSx2PWYqZitnKmc7djxjKmMmJigwPT09ZiYmKHYrPShmPW8oKSkqZiksMD09PWcmJih2Kz0o Zz1vKCkpKmcpLHY9KGMtKHY9TWF0aC5zcXJ0KHYpKSkvdippLHUudngrPShmKj12KSooYz0o bCo9bCkvKG0rbCkpLHUudnkrPShnKj12KSpjLHMudngtPWYqKGM9MS1jKSxzLnZ5LT1nKmMp fX19ZnVuY3Rpb24gZih0KXtpZih0LmRhdGEpcmV0dXJuIHQucj1uW3QuZGF0YS5pbmRleF07 Zm9yKHZhciBlPXQucj0wO2U8NDsrK2UpdFtlXSYmdFtlXS5yPnQuciYmKHQucj10W2VdLnIp fWZ1bmN0aW9uIGgoKXtpZihyKXt2YXIgZSxpLGE9ci5sZW5ndGg7Zm9yKG49bmV3IEFycmF5 KGEpLGU9MDtlPGE7KytlKWk9cltlXSxuW2kuaW5kZXhdPSt0KGksZSxyKX19cmV0dXJuImZ1 bmN0aW9uIiE9dHlwZW9mIHQmJih0PWEobnVsbD09dD8xOit0KSksdS5pbml0aWFsaXplPWZ1 bmN0aW9uKHQpe3I9dCxoKCl9LHUuaXRlcmF0aW9ucz1mdW5jdGlvbih0KXtyZXR1cm4gYXJn dW1lbnRzLmxlbmd0aD8oYz0rdCx1KTpjfSx1LnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVy biBhcmd1bWVudHMubGVuZ3RoPyhpPSt0LHUpOml9LHUucmFkaXVzPWZ1bmN0aW9uKGUpe3Jl dHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6YSgrZSks aCgpLHUpOnR9LHV9LHQuZm9yY2VMaW5rPWZ1bmN0aW9uKHQpe3ZhciBlLG4saSxzLGwsZj1j LGg9ZnVuY3Rpb24odCl7cmV0dXJuIDEvTWF0aC5taW4oc1t0LnNvdXJjZS5pbmRleF0sc1t0 LnRhcmdldC5pbmRleF0pfSxwPWEoMzApLGQ9MTtmdW5jdGlvbiBtKHIpe2Zvcih2YXIgaT0w LGE9dC5sZW5ndGg7aTxkOysraSlmb3IodmFyIHMsYyx1LGYsaCxwLG0sZz0wO2c8YTsrK2cp Yz0ocz10W2ddKS5zb3VyY2UsZj0odT1zLnRhcmdldCkueCt1LnZ4LWMueC1jLnZ4fHxvKCks aD11LnkrdS52eS1jLnktYy52eXx8bygpLGYqPXA9KChwPU1hdGguc3FydChmKmYraCpoKSkt bltnXSkvcCpyKmVbZ10saCo9cCx1LnZ4LT1mKihtPWxbZ10pLHUudnktPWgqbSxjLnZ4Kz1m KihtPTEtbSksYy52eSs9aCptfWZ1bmN0aW9uIGcoKXtpZihpKXt2YXIgYSxvLGM9aS5sZW5n dGgsaD10Lmxlbmd0aCxwPXIubWFwKGksZik7Zm9yKGE9MCxzPW5ldyBBcnJheShjKTthPGg7 KythKShvPXRbYV0pLmluZGV4PWEsIm9iamVjdCIhPXR5cGVvZiBvLnNvdXJjZSYmKG8uc291 cmNlPXUocCxvLnNvdXJjZSkpLCJvYmplY3QiIT10eXBlb2Ygby50YXJnZXQmJihvLnRhcmdl dD11KHAsby50YXJnZXQpKSxzW28uc291cmNlLmluZGV4XT0oc1tvLnNvdXJjZS5pbmRleF18 fDApKzEsc1tvLnRhcmdldC5pbmRleF09KHNbby50YXJnZXQuaW5kZXhdfHwwKSsxO2Zvcihh PTAsbD1uZXcgQXJyYXkoaCk7YTxoOysrYSlvPXRbYV0sbFthXT1zW28uc291cmNlLmluZGV4 XS8oc1tvLnNvdXJjZS5pbmRleF0rc1tvLnRhcmdldC5pbmRleF0pO2U9bmV3IEFycmF5KGgp LHYoKSxuPW5ldyBBcnJheShoKSx5KCl9fWZ1bmN0aW9uIHYoKXtpZihpKWZvcih2YXIgcj0w LG49dC5sZW5ndGg7cjxuOysrcillW3JdPStoKHRbcl0scix0KX1mdW5jdGlvbiB5KCl7aWYo aSlmb3IodmFyIGU9MCxyPXQubGVuZ3RoO2U8cjsrK2UpbltlXT0rcCh0W2VdLGUsdCl9cmV0 dXJuIG51bGw9PXQmJih0PVtdKSxtLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7aT10LGcoKX0s bS5saW5rcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLGcoKSxt KTp0fSxtLmlkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPXQsbSk6 Zn0sbS5pdGVyYXRpb25zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhk PSt0LG0pOmR9LG0uc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n dGg/KGg9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDphKCt0KSx2KCksbSk6aH0sbS5kaXN0YW5j ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0iZnVuY3Rpb24iPT10 eXBlb2YgdD90OmEoK3QpLHkoKSxtKTpwfSxtfSx0LmZvcmNlTWFueUJvZHk9ZnVuY3Rpb24o KXt2YXIgdCxyLG4saSxzPWEoLTMwKSxsPTEsYz0xLzAsdT0uODE7ZnVuY3Rpb24gcChpKXt2 YXIgYSxvPXQubGVuZ3RoLHM9ZS5xdWFkdHJlZSh0LGYsaCkudmlzaXRBZnRlcihtKTtmb3Io bj1pLGE9MDthPG87KythKXI9dFthXSxzLnZpc2l0KGcpfWZ1bmN0aW9uIGQoKXtpZih0KXt2 YXIgZSxyLG49dC5sZW5ndGg7Zm9yKGk9bmV3IEFycmF5KG4pLGU9MDtlPG47KytlKXI9dFtl XSxpW3IuaW5kZXhdPStzKHIsZSx0KX19ZnVuY3Rpb24gbSh0KXt2YXIgZSxyLG4sYSxvLHM9 MCxsPTA7aWYodC5sZW5ndGgpe2ZvcihuPWE9bz0wO288NDsrK28pKGU9dFtvXSkmJihyPU1h dGguYWJzKGUudmFsdWUpKSYmKHMrPWUudmFsdWUsbCs9cixuKz1yKmUueCxhKz1yKmUueSk7 dC54PW4vbCx0Lnk9YS9sfWVsc2V7KGU9dCkueD1lLmRhdGEueCxlLnk9ZS5kYXRhLnk7ZG97 cys9aVtlLmRhdGEuaW5kZXhdfXdoaWxlKGU9ZS5uZXh0KX10LnZhbHVlPXN9ZnVuY3Rpb24g Zyh0LGUsYSxzKXtpZighdC52YWx1ZSlyZXR1cm4hMDt2YXIgZj10Lngtci54LGg9dC55LXIu eSxwPXMtZSxkPWYqZitoKmg7aWYocCpwL3U8ZClyZXR1cm4gZDxjJiYoMD09PWYmJihkKz0o Zj1vKCkpKmYpLDA9PT1oJiYoZCs9KGg9bygpKSpoKSxkPGwmJihkPU1hdGguc3FydChsKmQp KSxyLnZ4Kz1mKnQudmFsdWUqbi9kLHIudnkrPWgqdC52YWx1ZSpuL2QpLCEwO2lmKCEodC5s ZW5ndGh8fGQ+PWMpKXsodC5kYXRhIT09cnx8dC5uZXh0KSYmKDA9PT1mJiYoZCs9KGY9bygp KSpmKSwwPT09aCYmKGQrPShoPW8oKSkqaCksZDxsJiYoZD1NYXRoLnNxcnQobCpkKSkpO2Rv e3QuZGF0YSE9PXImJihwPWlbdC5kYXRhLmluZGV4XSpuL2Qsci52eCs9ZipwLHIudnkrPWgq cCl9d2hpbGUodD10Lm5leHQpfX1yZXR1cm4gcC5pbml0aWFsaXplPWZ1bmN0aW9uKGUpe3Q9 ZSxkKCl9LHAuc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ KHM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDphKCt0KSxkKCkscCk6c30scC5kaXN0YW5jZU1p bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD10KnQscCk6TWF0aC5z cXJ0KGwpfSxwLmRpc3RhbmNlTWF4PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVu Z3RoPyhjPXQqdCxwKTpNYXRoLnNxcnQoYyl9LHAudGhldGE9ZnVuY3Rpb24odCl7cmV0dXJu IGFyZ3VtZW50cy5sZW5ndGg/KHU9dCp0LHApOk1hdGguc3FydCh1KX0scH0sdC5mb3JjZVJh ZGlhbD1mdW5jdGlvbih0LGUscil7dmFyIG4saSxvLHM9YSguMSk7ZnVuY3Rpb24gbCh0KXtm b3IodmFyIGE9MCxzPW4ubGVuZ3RoO2E8czsrK2Epe3ZhciBsPW5bYV0sYz1sLngtZXx8MWUt Nix1PWwueS1yfHwxZS02LGY9TWF0aC5zcXJ0KGMqYyt1KnUpLGg9KG9bYV0tZikqaVthXSp0 L2Y7bC52eCs9YypoLGwudnkrPXUqaH19ZnVuY3Rpb24gYygpe2lmKG4pe3ZhciBlLHI9bi5s ZW5ndGg7Zm9yKGk9bmV3IEFycmF5KHIpLG89bmV3IEFycmF5KHIpLGU9MDtlPHI7KytlKW9b ZV09K3QobltlXSxlLG4pLGlbZV09aXNOYU4ob1tlXSk/MDorcyhuW2VdLGUsbil9fXJldHVy biJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1hKCt0KSksbnVsbD09ZSYmKGU9MCksbnVsbD09 ciYmKHI9MCksbC5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe249dCxjKCl9LGwuc3RyZW5ndGg9 ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ImZ1bmN0aW9uIj09dHlw ZW9mIHQ/dDphKCt0KSxjKCksbCk6c30sbC5yYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFy Z3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTphKCtlKSxjKCksbCk6 dH0sbC54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSt0LGwpOmV9 LGwueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0rdCxsKTpyfSxs fSx0LmZvcmNlU2ltdWxhdGlvbj1mdW5jdGlvbih0KXt2YXIgZSxhPTEsbz0uMDAxLHM9MS1N YXRoLnBvdyhvLDEvMzAwKSxsPTAsYz0uNix1PXIubWFwKCksZj1pLnRpbWVyKGQpLGg9bi5k aXNwYXRjaCgidGljayIsImVuZCIpO2Z1bmN0aW9uIGQoKXttKCksaC5jYWxsKCJ0aWNrIixl KSxhPG8mJihmLnN0b3AoKSxoLmNhbGwoImVuZCIsZSkpfWZ1bmN0aW9uIG0ocil7dmFyIG4s aSxvPXQubGVuZ3RoO3ZvaWQgMD09PXImJihyPTEpO2Zvcih2YXIgZj0wO2Y8cjsrK2YpZm9y KGErPShsLWEpKnMsdS5lYWNoKChmdW5jdGlvbih0KXt0KGEpfSkpLG49MDtuPG87KytuKW51 bGw9PShpPXRbbl0pLmZ4P2kueCs9aS52eCo9YzooaS54PWkuZngsaS52eD0wKSxudWxsPT1p LmZ5P2kueSs9aS52eSo9YzooaS55PWkuZnksaS52eT0wKTtyZXR1cm4gZX1mdW5jdGlvbiBn KCl7Zm9yKHZhciBlLHI9MCxuPXQubGVuZ3RoO3I8bjsrK3Ipe2lmKChlPXRbcl0pLmluZGV4 PXIsbnVsbCE9ZS5meCYmKGUueD1lLmZ4KSxudWxsIT1lLmZ5JiYoZS55PWUuZnkpLGlzTmFO KGUueCl8fGlzTmFOKGUueSkpe3ZhciBpPTEwKk1hdGguc3FydChyKSxhPXIqcDtlLng9aSpN YXRoLmNvcyhhKSxlLnk9aSpNYXRoLnNpbihhKX0oaXNOYU4oZS52eCl8fGlzTmFOKGUudnkp KSYmKGUudng9ZS52eT0wKX19ZnVuY3Rpb24gdihlKXtyZXR1cm4gZS5pbml0aWFsaXplJiZl LmluaXRpYWxpemUodCksZX1yZXR1cm4gbnVsbD09dCYmKHQ9W10pLGcoKSxlPXt0aWNrOm0s cmVzdGFydDpmdW5jdGlvbigpe3JldHVybiBmLnJlc3RhcnQoZCksZX0sc3RvcDpmdW5jdGlv bigpe3JldHVybiBmLnN0b3AoKSxlfSxub2RlczpmdW5jdGlvbihyKXtyZXR1cm4gYXJndW1l bnRzLmxlbmd0aD8odD1yLGcoKSx1LmVhY2godiksZSk6dH0sYWxwaGE6ZnVuY3Rpb24odCl7 cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9K3QsZSk6YX0sYWxwaGFNaW46ZnVuY3Rpb24o dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K3QsZSk6b30sYWxwaGFEZWNheTpmdW5j dGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0rdCxlKTorc30sYWxwaGFUYXJn ZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9K3QsZSk6bH0sdmVs b2NpdHlEZWNheTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0xLXQs ZSk6MS1jfSxmb3JjZTpmdW5jdGlvbih0LHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/ KG51bGw9PXI/dS5yZW1vdmUodCk6dS5zZXQodCx2KHIpKSxlKTp1LmdldCh0KX0sZmluZDpm dW5jdGlvbihlLHIsbil7dmFyIGksYSxvLHMsbCxjPTAsdT10Lmxlbmd0aDtmb3IobnVsbD09 bj9uPTEvMDpuKj1uLGM9MDtjPHU7KytjKShvPShpPWUtKHM9dFtjXSkueCkqaSsoYT1yLXMu eSkqYSk8biYmKGw9cyxuPW8pO3JldHVybiBsfSxvbjpmdW5jdGlvbih0LHIpe3JldHVybiBh cmd1bWVudHMubGVuZ3RoPjE/KGgub24odCxyKSxlKTpoLm9uKHQpfX19LHQuZm9yY2VYPWZ1 bmN0aW9uKHQpe3ZhciBlLHIsbixpPWEoLjEpO2Z1bmN0aW9uIG8odCl7Zm9yKHZhciBpLGE9 MCxvPWUubGVuZ3RoO2E8bzsrK2EpKGk9ZVthXSkudngrPShuW2FdLWkueCkqclthXSp0fWZ1 bmN0aW9uIHMoKXtpZihlKXt2YXIgYSxvPWUubGVuZ3RoO2ZvcihyPW5ldyBBcnJheShvKSxu PW5ldyBBcnJheShvKSxhPTA7YTxvOysrYSlyW2FdPWlzTmFOKG5bYV09K3QoZVthXSxhLGUp KT8wOitpKGVbYV0sYSxlKX19cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PWEobnVs bD09dD8wOit0KSksby5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe2U9dCxzKCl9LG8uc3RyZW5n dGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09 dHlwZW9mIHQ/dDphKCt0KSxzKCksbyk6aX0sby54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1 bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6YSgrZSkscygpLG8pOnR9 LG99LHQuZm9yY2VZPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpPWEoLjEpO2Z1bmN0aW9uIG8o dCl7Zm9yKHZhciBpLGE9MCxvPWUubGVuZ3RoO2E8bzsrK2EpKGk9ZVthXSkudnkrPShuW2Fd LWkueSkqclthXSp0fWZ1bmN0aW9uIHMoKXtpZihlKXt2YXIgYSxvPWUubGVuZ3RoO2Zvcihy PW5ldyBBcnJheShvKSxuPW5ldyBBcnJheShvKSxhPTA7YTxvOysrYSlyW2FdPWlzTmFOKG5b YV09K3QoZVthXSxhLGUpKT8wOitpKGVbYV0sYSxlKX19cmV0dXJuImZ1bmN0aW9uIiE9dHlw ZW9mIHQmJih0PWEobnVsbD09dD8wOit0KSksby5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe2U9 dCxzKCl9LG8uc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDphKCt0KSxzKCksbyk6aX0sby55PWZ1bmN0aW9u KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6 YSgrZSkscygpLG8pOnR9LG99LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxl Iix7dmFsdWU6ITB9KX0pKX0seyJkMy1jb2xsZWN0aW9uIjoxMDgsImQzLWRpc3BhdGNoIjox MTAsImQzLXF1YWR0cmVlIjoxMTgsImQzLXRpbWVyIjoxMjN9XSwxMTI6W2Z1bmN0aW9uKHQs ZSxyKXshZnVuY3Rpb24odCxuKXsib2JqZWN0Ij09dHlwZW9mIHImJnZvaWQgMCE9PWU/bihy KTpuKCh0PSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOnR8fHNl bGYpLmQzPXQuZDN8fHt9KX0odGhpcywoZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO2Z1bmN0 aW9uIGUodCxlKXtpZigocj0odD1lP3QudG9FeHBvbmVudGlhbChlLTEpOnQudG9FeHBvbmVu dGlhbCgpKS5pbmRleE9mKCJlIikpPDApcmV0dXJuIG51bGw7dmFyIHIsbj10LnNsaWNlKDAs cik7cmV0dXJuW24ubGVuZ3RoPjE/blswXStuLnNsaWNlKDIpOm4sK3Quc2xpY2UocisxKV19 ZnVuY3Rpb24gcih0KXtyZXR1cm4odD1lKE1hdGguYWJzKHQpKSk/dFsxXTpOYU59dmFyIG4s aT0vXig/OiguKT8oWzw+PV5dKSk/KFsrXC0oIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhc LlxkKyk/KH4pPyhbYS16JV0pPyQvaTtmdW5jdGlvbiBhKHQpe2lmKCEoZT1pLmV4ZWModCkp KXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBmb3JtYXQ6ICIrdCk7dmFyIGU7cmV0dXJuIG5l dyBvKHtmaWxsOmVbMV0sYWxpZ246ZVsyXSxzaWduOmVbM10sc3ltYm9sOmVbNF0semVybzpl WzVdLHdpZHRoOmVbNl0sY29tbWE6ZVs3XSxwcmVjaXNpb246ZVs4XSYmZVs4XS5zbGljZSgx KSx0cmltOmVbOV0sdHlwZTplWzEwXX0pfWZ1bmN0aW9uIG8odCl7dGhpcy5maWxsPXZvaWQg MD09PXQuZmlsbD8iICI6dC5maWxsKyIiLHRoaXMuYWxpZ249dm9pZCAwPT09dC5hbGlnbj8i PiI6dC5hbGlnbisiIix0aGlzLnNpZ249dm9pZCAwPT09dC5zaWduPyItIjp0LnNpZ24rIiIs dGhpcy5zeW1ib2w9dm9pZCAwPT09dC5zeW1ib2w/IiI6dC5zeW1ib2wrIiIsdGhpcy56ZXJv PSEhdC56ZXJvLHRoaXMud2lkdGg9dm9pZCAwPT09dC53aWR0aD92b2lkIDA6K3Qud2lkdGgs dGhpcy5jb21tYT0hIXQuY29tbWEsdGhpcy5wcmVjaXNpb249dm9pZCAwPT09dC5wcmVjaXNp b24/dm9pZCAwOit0LnByZWNpc2lvbix0aGlzLnRyaW09ISF0LnRyaW0sdGhpcy50eXBlPXZv aWQgMD09PXQudHlwZT8iIjp0LnR5cGUrIiJ9ZnVuY3Rpb24gcyh0LHIpe3ZhciBuPWUodCxy KTtpZighbilyZXR1cm4gdCsiIjt2YXIgaT1uWzBdLGE9blsxXTtyZXR1cm4gYTwwPyIwLiIr bmV3IEFycmF5KC1hKS5qb2luKCIwIikraTppLmxlbmd0aD5hKzE/aS5zbGljZSgwLGErMSkr Ii4iK2kuc2xpY2UoYSsxKTppK25ldyBBcnJheShhLWkubGVuZ3RoKzIpLmpvaW4oIjAiKX1h LnByb3RvdHlwZT1vLnByb3RvdHlwZSxvLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigp e3JldHVybiB0aGlzLmZpbGwrdGhpcy5hbGlnbit0aGlzLnNpZ24rdGhpcy5zeW1ib2wrKHRo aXMuemVybz8iMCI6IiIpKyh2b2lkIDA9PT10aGlzLndpZHRoPyIiOk1hdGgubWF4KDEsMHx0 aGlzLndpZHRoKSkrKHRoaXMuY29tbWE/IiwiOiIiKSsodm9pZCAwPT09dGhpcy5wcmVjaXNp b24/IiI6Ii4iK01hdGgubWF4KDAsMHx0aGlzLnByZWNpc2lvbikpKyh0aGlzLnRyaW0/In4i OiIiKSt0aGlzLnR5cGV9O3ZhciBsPXsiJSI6ZnVuY3Rpb24odCxlKXtyZXR1cm4oMTAwKnQp LnRvRml4ZWQoZSl9LGI6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJp bmcoMil9LGM6ZnVuY3Rpb24odCl7cmV0dXJuIHQrIiJ9LGQ6ZnVuY3Rpb24odCl7cmV0dXJu IE1hdGguYWJzKHQ9TWF0aC5yb3VuZCh0KSk+PTFlMjE/dC50b0xvY2FsZVN0cmluZygiZW4i KS5yZXBsYWNlKC8sL2csIiIpOnQudG9TdHJpbmcoMTApfSxlOmZ1bmN0aW9uKHQsZSl7cmV0 dXJuIHQudG9FeHBvbmVudGlhbChlKX0sZjpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvRml4 ZWQoZSl9LGc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50b1ByZWNpc2lvbihlKX0sbzpmdW5j dGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZyg4KX0scDpmdW5jdGlvbih0 LGUpe3JldHVybiBzKDEwMCp0LGUpfSxyOnMsczpmdW5jdGlvbih0LHIpe3ZhciBpPWUodCxy KTtpZighaSlyZXR1cm4gdCsiIjt2YXIgYT1pWzBdLG89aVsxXSxzPW8tKG49MypNYXRoLm1h eCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3Ioby8zKSkpKSsxLGw9YS5sZW5ndGg7cmV0dXJu IHM9PT1sP2E6cz5sP2ErbmV3IEFycmF5KHMtbCsxKS5qb2luKCIwIik6cz4wP2Euc2xpY2Uo MCxzKSsiLiIrYS5zbGljZShzKToiMC4iK25ldyBBcnJheSgxLXMpLmpvaW4oIjAiKStlKHQs TWF0aC5tYXgoMCxyK3MtMSkpWzBdfSxYOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5k KHQpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfSx4OmZ1bmN0aW9uKHQpe3JldHVybiBN YXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KX19O2Z1bmN0aW9uIGModCl7cmV0dXJuIHR9dmFy IHUsZj1BcnJheS5wcm90b3R5cGUubWFwLGg9WyJ5IiwieiIsImEiLCJmIiwicCIsIm4iLCJc eGI1IiwibSIsIiIsImsiLCJNIiwiRyIsIlQiLCJQIiwiRSIsIloiLCJZIl07ZnVuY3Rpb24g cCh0KXt2YXIgZSxpLG89dm9pZCAwPT09dC5ncm91cGluZ3x8dm9pZCAwPT09dC50aG91c2Fu ZHM/YzooZT1mLmNhbGwodC5ncm91cGluZyxOdW1iZXIpLGk9dC50aG91c2FuZHMrIiIsZnVu Y3Rpb24odCxyKXtmb3IodmFyIG49dC5sZW5ndGgsYT1bXSxvPTAscz1lWzBdLGw9MDtuPjAm JnM+MCYmKGwrcysxPnImJihzPU1hdGgubWF4KDEsci1sKSksYS5wdXNoKHQuc3Vic3RyaW5n KG4tPXMsbitzKSksISgobCs9cysxKT5yKSk7KXM9ZVtvPShvKzEpJWUubGVuZ3RoXTtyZXR1 cm4gYS5yZXZlcnNlKCkuam9pbihpKX0pLHM9dm9pZCAwPT09dC5jdXJyZW5jeT8iIjp0LmN1 cnJlbmN5WzBdKyIiLHU9dm9pZCAwPT09dC5jdXJyZW5jeT8iIjp0LmN1cnJlbmN5WzFdKyIi LHA9dm9pZCAwPT09dC5kZWNpbWFsPyIuIjp0LmRlY2ltYWwrIiIsZD12b2lkIDA9PT10Lm51 bWVyYWxzP2M6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxh Y2UoL1swLTldL2csKGZ1bmN0aW9uKGUpe3JldHVybiB0WytlXX0pKX19KGYuY2FsbCh0Lm51 bWVyYWxzLFN0cmluZykpLG09dm9pZCAwPT09dC5wZXJjZW50PyIlIjp0LnBlcmNlbnQrIiIs Zz12b2lkIDA9PT10Lm1pbnVzPyItIjp0Lm1pbnVzKyIiLHY9dm9pZCAwPT09dC5uYW4/Ik5h TiI6dC5uYW4rIiI7ZnVuY3Rpb24geSh0KXt2YXIgZT0odD1hKHQpKS5maWxsLHI9dC5hbGln bixpPXQuc2lnbixjPXQuc3ltYm9sLGY9dC56ZXJvLHk9dC53aWR0aCx4PXQuY29tbWEsYj10 LnByZWNpc2lvbixfPXQudHJpbSx3PXQudHlwZTsibiI9PT13Pyh4PSEwLHc9ImciKTpsW3dd fHwodm9pZCAwPT09YiYmKGI9MTIpLF89ITAsdz0iZyIpLChmfHwiMCI9PT1lJiYiPSI9PT1y KSYmKGY9ITAsZT0iMCIscj0iPSIpO3ZhciBUPSIkIj09PWM/czoiIyI9PT1jJiYvW2JveFhd Ly50ZXN0KHcpPyIwIit3LnRvTG93ZXJDYXNlKCk6IiIsaz0iJCI9PT1jP3U6L1slcF0vLnRl c3Qodyk/bToiIixBPWxbd10sTT0vW2RlZmdwcnMlXS8udGVzdCh3KTtmdW5jdGlvbiBTKHQp e3ZhciBhLHMsbCxjPVQsdT1rO2lmKCJjIj09PXcpdT1BKHQpK3UsdD0iIjtlbHNle3ZhciBt PSh0PSt0KTwwfHwxL3Q8MDtpZih0PWlzTmFOKHQpP3Y6QShNYXRoLmFicyh0KSxiKSxfJiYo dD1mdW5jdGlvbih0KXt0OmZvcih2YXIgZSxyPXQubGVuZ3RoLG49MSxpPS0xO248cjsrK24p c3dpdGNoKHRbbl0pe2Nhc2UiLiI6aT1lPW47YnJlYWs7Y2FzZSIwIjowPT09aSYmKGk9biks ZT1uO2JyZWFrO2RlZmF1bHQ6aWYoISt0W25dKWJyZWFrIHQ7aT4wJiYoaT0wKX1yZXR1cm4g aT4wP3Quc2xpY2UoMCxpKSt0LnNsaWNlKGUrMSk6dH0odCkpLG0mJjA9PSt0JiYiKyIhPT1p JiYobT0hMSksYz0obT8iKCI9PT1pP2k6ZzoiLSI9PT1pfHwiKCI9PT1pPyIiOmkpK2MsdT0o InMiPT09dz9oWzgrbi8zXToiIikrdSsobSYmIigiPT09aT8iKSI6IiIpLE0pZm9yKGE9LTEs cz10Lmxlbmd0aDsrK2E8czspaWYoNDg+KGw9dC5jaGFyQ29kZUF0KGEpKXx8bD41Nyl7dT0o NDY9PT1sP3ArdC5zbGljZShhKzEpOnQuc2xpY2UoYSkpK3UsdD10LnNsaWNlKDAsYSk7YnJl YWt9fXgmJiFmJiYodD1vKHQsMS8wKSk7dmFyIFM9Yy5sZW5ndGgrdC5sZW5ndGgrdS5sZW5n dGgsRT1TPHk/bmV3IEFycmF5KHktUysxKS5qb2luKGUpOiIiO3N3aXRjaCh4JiZmJiYodD1v KEUrdCxFLmxlbmd0aD95LXUubGVuZ3RoOjEvMCksRT0iIikscil7Y2FzZSI8Ijp0PWMrdCt1 K0U7YnJlYWs7Y2FzZSI9Ijp0PWMrRSt0K3U7YnJlYWs7Y2FzZSJeIjp0PUUuc2xpY2UoMCxT PUUubGVuZ3RoPj4xKStjK3QrdStFLnNsaWNlKFMpO2JyZWFrO2RlZmF1bHQ6dD1FK2MrdCt1 fXJldHVybiBkKHQpfXJldHVybiBiPXZvaWQgMD09PWI/NjovW2dwcnNdLy50ZXN0KHcpP01h dGgubWF4KDEsTWF0aC5taW4oMjEsYikpOk1hdGgubWF4KDAsTWF0aC5taW4oMjAsYikpLFMu dG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdCsiIn0sU31yZXR1cm57Zm9ybWF0OnksZm9y bWF0UHJlZml4OmZ1bmN0aW9uKHQsZSl7dmFyIG49eSgoKHQ9YSh0KSkudHlwZT0iZiIsdCkp LGk9MypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IocihlKS8zKSkpLG89TWF0 aC5wb3coMTAsLWkpLHM9aFs4K2kvM107cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBuKG8q dCkrc319fX1mdW5jdGlvbiBkKGUpe3JldHVybiB1PXAoZSksdC5mb3JtYXQ9dS5mb3JtYXQs dC5mb3JtYXRQcmVmaXg9dS5mb3JtYXRQcmVmaXgsdX1kKHtkZWNpbWFsOiIuIix0aG91c2Fu ZHM6IiwiLGdyb3VwaW5nOlszXSxjdXJyZW5jeTpbIiQiLCIiXSxtaW51czoiLSJ9KSx0LkZv cm1hdFNwZWNpZmllcj1vLHQuZm9ybWF0RGVmYXVsdExvY2FsZT1kLHQuZm9ybWF0TG9jYWxl PXAsdC5mb3JtYXRTcGVjaWZpZXI9YSx0LnByZWNpc2lvbkZpeGVkPWZ1bmN0aW9uKHQpe3Jl dHVybiBNYXRoLm1heCgwLC1yKE1hdGguYWJzKHQpKSl9LHQucHJlY2lzaW9uUHJlZml4PWZ1 bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KDAsMypNYXRoLm1heCgtOCxNYXRoLm1pbig4 LE1hdGguZmxvb3IocihlKS8zKSkpLXIoTWF0aC5hYnModCkpKX0sdC5wcmVjaXNpb25Sb3Vu ZD1mdW5jdGlvbih0LGUpe3JldHVybiB0PU1hdGguYWJzKHQpLGU9TWF0aC5hYnMoZSktdCxN YXRoLm1heCgwLHIoZSktcih0KSkrMX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNN b2R1bGUiLHt2YWx1ZTohMH0pfSkpfSx7fV0sMTEzOltmdW5jdGlvbih0LGUscil7IWZ1bmN0 aW9uKG4saSl7Im9iamVjdCI9PXR5cGVvZiByJiZ2b2lkIDAhPT1lP2kocix0KCJkMy1nZW8i KSx0KCJkMy1hcnJheSIpKTppKG4uZDM9bi5kM3x8e30sbi5kMyxuLmQzKX0odGhpcywoZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1NYXRoLmFicyxpPU1hdGguYXRhbixh PU1hdGguYXRhbjIsbz1NYXRoLmNvcyxzPU1hdGguZXhwLGw9TWF0aC5mbG9vcixjPU1hdGgu bG9nLHU9TWF0aC5tYXgsZj1NYXRoLm1pbixoPU1hdGgucG93LHA9TWF0aC5yb3VuZCxkPU1h dGguc2lnbnx8ZnVuY3Rpb24odCl7cmV0dXJuIHQ+MD8xOnQ8MD8tMTowfSxtPU1hdGguc2lu LGc9TWF0aC50YW4sdj0xZS02LHk9TWF0aC5QSSx4PXkvMixiPXkvNCxfPU1hdGguU1FSVDFf Mix3PUwoMiksVD1MKHkpLGs9Mip5LEE9MTgwL3ksTT15LzE4MDtmdW5jdGlvbiBTKHQpe3Jl dHVybiB0PjE/eDp0PC0xPy14Ok1hdGguYXNpbih0KX1mdW5jdGlvbiBFKHQpe3JldHVybiB0 PjE/MDp0PC0xP3k6TWF0aC5hY29zKHQpfWZ1bmN0aW9uIEwodCl7cmV0dXJuIHQ+MD9NYXRo LnNxcnQodCk6MH1mdW5jdGlvbiBDKHQpe3JldHVybihzKHQpLXMoLXQpKS8yfWZ1bmN0aW9u IFAodCl7cmV0dXJuKHModCkrcygtdCkpLzJ9ZnVuY3Rpb24gSSh0KXt2YXIgZT1nKHQvMiks cj0yKmMobyh0LzIpKS8oZSplKTtmdW5jdGlvbiBpKHQsZSl7dmFyIG49byh0KSxpPW8oZSks YT1tKGUpLHM9aSpuLGw9LSgoMS1zP2MoKDErcykvMikvKDEtcyk6LS41KStyLygxK3MpKTty ZXR1cm5bbCppKm0odCksbCphXX1yZXR1cm4gaS5pbnZlcnQ9ZnVuY3Rpb24oZSxpKXt2YXIg cyxsPUwoZSplK2kqaSksdT0tdC8yLGY9NTA7aWYoIWwpcmV0dXJuWzAsMF07ZG97dmFyIGg9 dS8yLHA9byhoKSxkPW0oaCksZz1kL3AseT0tYyhuKHApKTt1LT1zPSgyL2cqeS1yKmctbCkv KC15LyhkKmQpKzEtci8oMipwKnApKSoocDwwPy43OjEpfXdoaWxlKG4ocyk+diYmLS1mPjAp O3ZhciB4PW0odSk7cmV0dXJuW2EoZSp4LGwqbyh1KSksUyhpKngvbCldfSxpfWZ1bmN0aW9u IE8odCxlKXt2YXIgcj1vKGUpLG49ZnVuY3Rpb24odCl7cmV0dXJuIHQ/dC9NYXRoLnNpbih0 KToxfShFKHIqbyh0Lz0yKSkpO3JldHVyblsyKnIqbSh0KSpuLG0oZSkqbl19ZnVuY3Rpb24g eih0KXt2YXIgZT1tKHQpLHI9byh0KSxpPXQ+PTA/MTotMSxzPWcoaSp0KSxsPSgxK2Utcikv MjtmdW5jdGlvbiBjKHQsbil7dmFyIGM9byhuKSx1PW8odC89Mik7cmV0dXJuWygxK2MpKm0o dCksKGkqbj4tYSh1LHMpLS4wMDE/MDoxMCotaSkrbCttKG4pKnItKDErYykqZSp1XX1yZXR1 cm4gYy5pbnZlcnQ9ZnVuY3Rpb24odCxjKXt2YXIgdT0wLGY9MCxoPTUwO2Rve3ZhciBwPW8o dSksZD1tKHUpLGc9byhmKSx5PW0oZikseD0xK2csYj14KmQtdCxfPWwreSpyLXgqZSpwLWMs dz14KnAvMixUPS1kKnksaz1lKngqZC8yLEE9cipnK2UqcCp5LE09VCprLUEqdyxTPShfKlQt YipBKS9NLzIsRT0oYiprLV8qdykvTTtuKEUpPjImJihFLz0yKSx1LT1TLGYtPUV9d2hpbGUo KG4oUyk+dnx8bihFKT52KSYmLS1oPjApO3JldHVybiBpKmY+LWEobyh1KSxzKS0uMDAxP1sy KnUsZl06bnVsbH0sY31mdW5jdGlvbiBEKHQsZSl7dmFyIHI9ZyhlLzIpLG49TCgxLXIqciks aT0xK24qbyh0Lz0yKSxhPW0odCkqbi9pLHM9ci9pLGw9YSphLGM9cypzO3JldHVybls0LzMq YSooMytsLTMqYyksNC8zKnMqKDMrMypsLWMpXX1PLmludmVydD1mdW5jdGlvbih0LGUpe2lm KCEodCp0KzQqZSplPnkqeSt2KSl7dmFyIHI9dCxpPWUsYT0yNTtkb3t2YXIgcyxsPW0ociks Yz1tKHIvMiksdT1vKHIvMiksZj1tKGkpLGg9byhpKSxwPW0oMippKSxkPWYqZixnPWgqaCx4 PWMqYyxiPTEtZyp1KnUsXz1iP0UoaCp1KSpMKHM9MS9iKTpzPTAsdz0yKl8qaCpjLXQsVD1f KmYtZSxrPXMqKGcqeCtfKmgqdSpkKSxBPXMqKC41KmwqcC0yKl8qZipjKSxNPS4yNSpzKihw KmMtXypmKmcqbCksUz1zKihkKnUrXyp4KmgpLEM9QSpNLVMqaztpZighQylicmVhazt2YXIg UD0oVCpBLXcqUykvQyxJPSh3Kk0tVCprKS9DO3ItPVAsaS09SX13aGlsZSgobihQKT52fHxu KEkpPnYpJiYtLWE+MCk7cmV0dXJuW3IsaV19fSxELmludmVydD1mdW5jdGlvbih0LGUpe2lm KGUqPTMvOCwhKHQqPTMvOCkmJm4oZSk+MSlyZXR1cm4gbnVsbDt2YXIgcj0xK3QqdCtlKmUs aT1MKChyLUwocipyLTQqZSplKSkvMikscz1TKGkpLzMsbD1pP2Z1bmN0aW9uKHQpe3JldHVy biBjKHQrTCh0KnQtMSkpfShuKGUvaSkpLzM6ZnVuY3Rpb24odCl7cmV0dXJuIGModCtMKHQq dCsxKSl9KG4odCkpLzMsdT1vKHMpLGY9UChsKSxoPWYqZi11KnU7cmV0dXJuWzIqZCh0KSph KEMobCkqdSwuMjUtaCksMipkKGUpKmEoZiptKHMpLC4yNStoKV19O3ZhciBSPUwoOCksRj1j KDErdyk7ZnVuY3Rpb24gQih0LGUpe3ZhciByPW4oZSk7cmV0dXJuIHI8Yj9bdCxjKGcoYitl LzIpKV06W3QqbyhyKSooMip3LTEvbShyKSksZChlKSooMip3KihyLWIpLWMoZyhyLzIpKSld fWZ1bmN0aW9uIE4odCl7dmFyIHI9Mip5L3Q7ZnVuY3Rpb24gcyh0LGkpe3ZhciBzPWUuZ2Vv QXppbXV0aGFsRXF1aWRpc3RhbnRSYXcodCxpKTtpZihuKHQpPngpe3ZhciBsPWEoc1sxXSxz WzBdKSxjPUwoc1swXSpzWzBdK3NbMV0qc1sxXSksdT1yKnAoKGwteCkvcikreCxmPWEobShs LT11KSwyLW8obCkpO2w9dStTKHkvYyptKGYpKS1mLHNbMF09YypvKGwpLHNbMV09YyptKGwp fXJldHVybiBzfXJldHVybiBzLmludmVydD1mdW5jdGlvbih0LG4pe3ZhciBzPUwodCp0K24q bik7aWYocz54KXt2YXIgbD1hKG4sdCksYz1yKnAoKGwteCkvcikreCx1PWw+Yz8tMToxLGY9 cypvKGMtbCksaD0xL2codSpFKChmLXkpL0woeSooeS0yKmYpK3MqcykpKTtsPWMrMippKCho K3UqTChoKmgtMykpLzMpLHQ9cypvKGwpLG49cyptKGwpfXJldHVybiBlLmdlb0F6aW11dGhh bEVxdWlkaXN0YW50UmF3LmludmVydCh0LG4pfSxzfWZ1bmN0aW9uIGoodCxyKXtpZihhcmd1 bWVudHMubGVuZ3RoPDImJihyPXQpLDE9PT1yKXJldHVybiBlLmdlb0F6aW11dGhhbEVxdWFs QXJlYVJhdztpZihyPT09MS8wKXJldHVybiBVO2Z1bmN0aW9uIG4obixpKXt2YXIgYT1lLmdl b0F6aW11dGhhbEVxdWFsQXJlYVJhdyhuL3IsaSk7cmV0dXJuIGFbMF0qPXQsYX1yZXR1cm4g bi5pbnZlcnQ9ZnVuY3Rpb24obixpKXt2YXIgYT1lLmdlb0F6aW11dGhhbEVxdWFsQXJlYVJh dy5pbnZlcnQobi90LGkpO3JldHVybiBhWzBdKj1yLGF9LG59ZnVuY3Rpb24gVSh0LGUpe3Jl dHVyblt0Km8oZSkvbyhlLz0yKSwyKm0oZSldfWZ1bmN0aW9uIFYodCxlLHIpe3ZhciBpLGEs byxzPTEwMDtyPXZvaWQgMD09PXI/MDorcixlPStlO2RveyhhPXQocikpPT09KG89dChyK3Yp KSYmKG89YSt2KSxyLT1pPS0xKnYqKGEtZSkvKGEtbyl9d2hpbGUocy0tID4wJiZuKGkpPnYp O3JldHVybiBzPDA/TmFOOnJ9ZnVuY3Rpb24gSCh0LGUscil7cmV0dXJuIHZvaWQgMD09PWUm JihlPTQwKSx2b2lkIDA9PT1yJiYocj0xZS0xMiksZnVuY3Rpb24oaSxhLG8scyl7dmFyIGws Yyx1O289dm9pZCAwPT09bz8wOitvLHM9dm9pZCAwPT09cz8wOitzO2Zvcih2YXIgZj0wO2Y8 ZTtmKyspe3ZhciBoPXQobyxzKSxwPWhbMF0taSxkPWhbMV0tYTtpZihuKHApPHImJm4oZCk8 cilicmVhazt2YXIgbT1wKnArZCpkO2lmKG0+bClvLT1jLz0yLHMtPXUvPTI7ZWxzZXtsPW07 dmFyIGc9KG8+MD8tMToxKSpyLHY9KHM+MD8tMToxKSpyLHk9dChvK2cscykseD10KG8scyt2 KSxiPSh5WzBdLWhbMF0pL2csXz0oeVsxXS1oWzFdKS9nLHc9KHhbMF0taFswXSkvdixUPSh4 WzFdLWhbMV0pL3Ysaz1UKmItXyp3LEE9KG4oayk8LjU/LjU6MSkvaztpZihvKz1jPShkKnct cCpUKSpBLHMrPXU9KHAqXy1kKmIpKkEsbihjKTxyJiZuKHUpPHIpYnJlYWt9fXJldHVybltv LHNdfX1mdW5jdGlvbiBxKCl7dmFyIHQ9aigxLjY4LDIpO2Z1bmN0aW9uIGUoZSxyKXtpZihl K3I8LTEuNCl7dmFyIG49KGUtcisxLjYpKihlK3IrMS40KS84O2UrPW4sci09LjgqbiptKHIr eS8yKX12YXIgaT10KGUsciksYT0oMS1vKGUqcikpLzEyO3JldHVybiBpWzFdPDAmJihpWzBd Kj0xK2EpLGlbMV0+MCYmKGlbMV0qPTErYS8xLjUqaVswXSppWzBdKSxpfXJldHVybiBlLmlu dmVydD1IKGUpLGV9ZnVuY3Rpb24gRyh0LGUpe3ZhciByLGk9dCptKGUpLGE9MzA7ZG97ZS09 cj0oZSttKGUpLWkpLygxK28oZSkpfXdoaWxlKG4ocik+diYmLS1hPjApO3JldHVybiBlLzJ9 ZnVuY3Rpb24gWSh0LGUscil7ZnVuY3Rpb24gbihuLGkpe3JldHVyblt0Km4qbyhpPUcocixp KSksZSptKGkpXX1yZXR1cm4gbi5pbnZlcnQ9ZnVuY3Rpb24obixpKXtyZXR1cm4gaT1TKGkv ZSksW24vKHQqbyhpKSksUygoMippK20oMippKSkvcildfSxufUIuaW52ZXJ0PWZ1bmN0aW9u KHQsZSl7aWYoKGE9bihlKSk8RilyZXR1cm5bdCwyKmkocyhlKSkteF07dmFyIHIsYSxsPWIs dT0yNTtkb3t2YXIgZj1vKGwvMiksaD1nKGwvMik7bC09cj0oUioobC1iKS1jKGgpLWEpLyhS LWYqZi8oMipoKSl9d2hpbGUobihyKT4xZS0xMiYmLS11PjApO3JldHVyblt0LyhvKGwpKihS LTEvbShsKSkpLGQoZSkqbF19LFUuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9MipTKGUv Mik7cmV0dXJuW3QqbyhyLzIpL28ocikscl19O3ZhciBXPVkody94LHcseSk7dmFyIFg9Mi4w MDI3NixaPTEuMTEwNzI7ZnVuY3Rpb24gSih0LGUpe3ZhciByPUcoeSxlKTtyZXR1cm5bWCp0 LygxL28oZSkrWi9vKHIpKSwoZSt3Km0ocikpL1hdfWZ1bmN0aW9uIEsodCl7dmFyIHI9MCxu PWUuZ2VvUHJvamVjdGlvbk11dGF0b3IodCksaT1uKHIpO3JldHVybiBpLnBhcmFsbGVsPWZ1 bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP24ocj10Kk0pOnIqQX0saX1mdW5j dGlvbiBRKHQsZSl7cmV0dXJuW3QqbyhlKSxlXX1mdW5jdGlvbiAkKHQpe2lmKCF0KXJldHVy biBRO3ZhciBlPTEvZyh0KTtmdW5jdGlvbiByKHIsbil7dmFyIGk9ZSt0LW4sYT1pP3Iqbyhu KS9pOmk7cmV0dXJuW2kqbShhKSxlLWkqbyhhKV19cmV0dXJuIHIuaW52ZXJ0PWZ1bmN0aW9u KHIsbil7dmFyIGk9TChyKnIrKG49ZS1uKSpuKSxzPWUrdC1pO3JldHVybltpL28ocykqYShy LG4pLHNdfSxyfWZ1bmN0aW9uIHR0KHQpe2Z1bmN0aW9uIGUoZSxyKXt2YXIgbj14LXIsaT1u P2UqdCptKG4pL246bjtyZXR1cm5bbiptKGkpL3QseC1uKm8oaSldfXJldHVybiBlLmludmVy dD1mdW5jdGlvbihlLHIpe3ZhciBuPWUqdCxpPXgtcixvPUwobipuK2kqaSkscz1hKG4saSk7 cmV0dXJuWyhvP28vbShvKToxKSpzL3QseC1vXX0sZX1KLmludmVydD1mdW5jdGlvbih0LGUp e3ZhciByLGksYT1YKmUscz1lPDA/LWI6YixsPTI1O2Rve2k9YS13Km0ocykscy09cj0obSgy KnMpKzIqcy15Km0oaSkpLygyKm8oMipzKSsyK3kqbyhpKSp3Km8ocykpfXdoaWxlKG4ocik+ diYmLS1sPjApO3JldHVybiBpPWEtdyptKHMpLFt0KigxL28oaSkrWi9vKHMpKS9YLGldfSxR LmludmVydD1mdW5jdGlvbih0LGUpe3JldHVyblt0L28oZSksZV19O3ZhciBldD1ZKDEsNC95 LHkpO2Z1bmN0aW9uIHJ0KHQsZSxyLGkscyxsKXt2YXIgYyx1PW8obCk7aWYobih0KT4xfHxu KGwpPjEpYz1FKHIqcytlKmkqdSk7ZWxzZXt2YXIgZj1tKHQvMiksaD1tKGwvMik7Yz0yKlMo TChmKmYrZSppKmgqaCkpfXJldHVybiBuKGMpPnY/W2MsYShpKm0obCksZSpzLXIqaSp1KV06 WzAsMF19ZnVuY3Rpb24gbnQodCxlLHIpe3JldHVybiBFKCh0KnQrZSplLXIqcikvKDIqdCpl KSl9ZnVuY3Rpb24gaXQodCl7cmV0dXJuIHQtMip5KmwoKHQreSkvKDIqeSkpfWZ1bmN0aW9u IGF0KHQsZSxyKXtmb3IodmFyIG4saT1bW3RbMF0sdFsxXSxtKHRbMV0pLG8odFsxXSldLFtl WzBdLGVbMV0sbShlWzFdKSxvKGVbMV0pXSxbclswXSxyWzFdLG0oclsxXSksbyhyWzFdKV1d LGE9aVsyXSxzPTA7czwzOysrcyxhPW4pbj1pW3NdLGEudj1ydChuWzFdLWFbMV0sYVszXSxh WzJdLG5bM10sblsyXSxuWzBdLWFbMF0pLGEucG9pbnQ9WzAsMF07dmFyIGw9bnQoaVswXS52 WzBdLGlbMl0udlswXSxpWzFdLnZbMF0pLGM9bnQoaVswXS52WzBdLGlbMV0udlswXSxpWzJd LnZbMF0pLHU9eS1sO2lbMl0ucG9pbnRbMV09MCxpWzBdLnBvaW50WzBdPS0oaVsxXS5wb2lu dFswXT1pWzBdLnZbMF0vMik7dmFyIGY9W2lbMl0ucG9pbnRbMF09aVswXS5wb2ludFswXStp WzJdLnZbMF0qbyhsKSwyKihpWzBdLnBvaW50WzFdPWlbMV0ucG9pbnRbMV09aVsyXS52WzBd Km0obCkpXTtyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgcixuPW0oZSksYT1vKGUpLHM9bmV3 IEFycmF5KDMpO2ZvcihyPTA7cjwzOysrcil7dmFyIGw9aVtyXTtpZihzW3JdPXJ0KGUtbFsx XSxsWzNdLGxbMl0sYSxuLHQtbFswXSksIXNbcl1bMF0pcmV0dXJuIGwucG9pbnQ7c1tyXVsx XT1pdChzW3JdWzFdLWwudlsxXSl9dmFyIGg9Zi5zbGljZSgpO2ZvcihyPTA7cjwzOysrcil7 dmFyIHA9Mj09cj8wOnIrMSxkPW50KGlbcl0udlswXSxzW3JdWzBdLHNbcF1bMF0pO3Nbcl1b MV08MCYmKGQ9LWQpLHI/MT09cj8oZD1jLWQsaFswXS09c1tyXVswXSpvKGQpLGhbMV0tPXNb cl1bMF0qbShkKSk6KGQ9dS1kLGhbMF0rPXNbcl1bMF0qbyhkKSxoWzFdKz1zW3JdWzBdKm0o ZCkpOihoWzBdKz1zW3JdWzBdKm8oZCksaFsxXS09c1tyXVswXSptKGQpKX1yZXR1cm4gaFsw XS89MyxoWzFdLz0zLGh9fWZ1bmN0aW9uIG90KHQpe3JldHVybiB0WzBdKj1NLHRbMV0qPU0s dH1mdW5jdGlvbiBzdCh0LHIsbil7dmFyIGk9ZS5nZW9DZW50cm9pZCh7dHlwZToiTXVsdGlQ b2ludCIsY29vcmRpbmF0ZXM6W3QscixuXX0pLGE9Wy1pWzBdLC1pWzFdXSxvPWUuZ2VvUm90 YXRpb24oYSkscz1hdChvdChvKHQpKSxvdChvKHIpKSxvdChvKG4pKSk7cy5pbnZlcnQ9SChz KTt2YXIgbD1lLmdlb1Byb2plY3Rpb24ocykucm90YXRlKGEpLGM9bC5jZW50ZXI7cmV0dXJu IGRlbGV0ZSBsLnJvdGF0ZSxsLmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz Lmxlbmd0aD9jKG8odCkpOm8uaW52ZXJ0KGMoKSl9LGwuY2xpcEFuZ2xlKDkwKX1mdW5jdGlv biBsdCh0LGUpe3ZhciByPUwoMS1tKGUpKTtyZXR1cm5bMi9UKnQqcixUKigxLXIpXX1mdW5j dGlvbiBjdCh0KXt2YXIgZT1nKHQpO2Z1bmN0aW9uIHIodCxyKXtyZXR1cm5bdCwodD90L20o dCk6MSkqKG0ocikqbyh0KS1lKm8ocikpXX1yZXR1cm4gci5pbnZlcnQ9ZT9mdW5jdGlvbih0 LHIpe3QmJihyKj1tKHQpL3QpO3ZhciBuPW8odCk7cmV0dXJuW3QsMiphKEwobipuK2UqZS1y KnIpLW4sZS1yKV19OmZ1bmN0aW9uKHQsZSl7cmV0dXJuW3QsUyh0P2UqZyh0KS90OmUpXX0s cn1sdC5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgcj0ocj1lL1QtMSkqcjtyZXR1cm5bcj4w P3QqTCh5L3IpLzI6MCxTKDEtcildfTt2YXIgdXQ9TCgzKTtmdW5jdGlvbiBmdCh0LGUpe3Jl dHVyblt1dCp0KigyKm8oMiplLzMpLTEpL1QsdXQqVCptKGUvMyldfWZ1bmN0aW9uIGh0KHQp e3ZhciBlPW8odCk7ZnVuY3Rpb24gcih0LHIpe3JldHVyblt0KmUsbShyKS9lXX1yZXR1cm4g ci5pbnZlcnQ9ZnVuY3Rpb24odCxyKXtyZXR1cm5bdC9lLFMociplKV19LHJ9ZnVuY3Rpb24g cHQodCl7dmFyIGU9byh0KTtmdW5jdGlvbiByKHQscil7cmV0dXJuW3QqZSwoMStlKSpnKHIv MildfXJldHVybiByLmludmVydD1mdW5jdGlvbih0LHIpe3JldHVyblt0L2UsMippKHIvKDEr ZSkpXX0scn1mdW5jdGlvbiBkdCh0LGUpe3ZhciByPUwoOC8oMyp5KSk7cmV0dXJuW3IqdCoo MS1uKGUpL3kpLHIqZV19ZnVuY3Rpb24gbXQodCxlKXt2YXIgcj1MKDQtMyptKG4oZSkpKTty ZXR1cm5bMi9MKDYqeSkqdCpyLGQoZSkqTCgyKnkvMykqKDItcildfWZ1bmN0aW9uIGd0KHQs ZSl7dmFyIHI9TCh5Kig0K3kpKTtyZXR1cm5bMi9yKnQqKDErTCgxLTQqZSplLyh5KnkpKSks NC9yKmVdfWZ1bmN0aW9uIHZ0KHQsZSl7dmFyIHI9KDIreCkqbShlKTtlLz0yO2Zvcih2YXIg aT0wLGE9MS8wO2k8MTAmJm4oYSk+djtpKyspe3ZhciBzPW8oZSk7ZS09YT0oZSttKGUpKihz KzIpLXIpLygyKnMqKDErcykpfXJldHVyblsyL0woeSooNCt5KSkqdCooMStvKGUpKSwyKkwo eS8oNCt5KSkqbShlKV19ZnVuY3Rpb24geXQodCxlKXtyZXR1cm5bdCooMStvKGUpKS9MKDIr eSksMiplL0woMit5KV19ZnVuY3Rpb24geHQodCxlKXtmb3IodmFyIHI9KDEreCkqbShlKSxp PTAsYT0xLzA7aTwxMCYmbihhKT52O2krKyllLT1hPShlK20oZSktcikvKDErbyhlKSk7cmV0 dXJuIHI9TCgyK3kpLFt0KigxK28oZSkpL3IsMiplL3JdfWZ0LmludmVydD1mdW5jdGlvbih0 LGUpe3ZhciByPTMqUyhlLyh1dCpUKSk7cmV0dXJuW1QqdC8odXQqKDIqbygyKnIvMyktMSkp LHJdfSxkdC5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgcj1MKDgvKDMqeSkpLGk9ZS9yO3Jl dHVyblt0LyhyKigxLW4oaSkveSkpLGldfSxtdC5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIg cj0yLW4oZSkvTCgyKnkvMyk7cmV0dXJuW3QqTCg2KnkpLygyKnIpLGQoZSkqUygoNC1yKnIp LzMpXX0sZ3QuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9TCh5Kig0K3kpKS8yO3JldHVy blt0KnIvKDErTCgxLWUqZSooNCt5KS8oNCp5KSkpLGUqci8yXX0sdnQuaW52ZXJ0PWZ1bmN0 aW9uKHQsZSl7dmFyIHI9ZSpMKCg0K3kpL3kpLzIsbj1TKHIpLGk9byhuKTtyZXR1cm5bdC8o Mi9MKHkqKDQreSkpKigxK2kpKSxTKChuK3IqKGkrMikpLygyK3gpKV19LHl0LmludmVydD1m dW5jdGlvbih0LGUpe3ZhciByPUwoMit5KSxuPWUqci8yO3JldHVybltyKnQvKDErbyhuKSks bl19LHh0LmludmVydD1mdW5jdGlvbih0LGUpe3ZhciByPTEreCxuPUwoci8yKTtyZXR1cm5b Mip0Km4vKDErbyhlKj1uKSksUygoZSttKGUpKS9yKV19O3ZhciBidD0zKzIqdztmdW5jdGlv biBfdCh0LGUpe3ZhciByPW0odC89Miksbj1vKHQpLGE9TChvKGUpKSxzPW8oZS89MiksbD1t KGUpLyhzK3cqbiphKSx1PUwoMi8oMStsKmwpKSxmPUwoKHcqcysobityKSphKS8odypzKyhu LXIpKmEpKTtyZXR1cm5bYnQqKHUqKGYtMS9mKS0yKmMoZikpLGJ0Kih1KmwqKGYrMS9mKS0y KmkobCkpXX1fdC5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtpZighKHI9RC5pbnZlcnQodC8xLjIs MS4wNjUqZSkpKXJldHVybiBudWxsO3ZhciByLGE9clswXSxzPXJbMV0sbD0yMDt0Lz1idCxl Lz1idDtkb3t2YXIgaD1hLzIscD1zLzIsZD1tKGgpLGc9byhoKSx5PW0ocCksYj1vKHApLFQ9 byhzKSxrPUwoVCksQT15LyhiK3cqZyprKSxNPUEqQSxTPUwoMi8oMStNKSksRT0odypiKyhn K2QpKmspLyh3KmIrKGctZCkqayksQz1MKEUpLFA9Qy0xL0MsST1DKzEvQyxPPVMqUC0yKmMo QyktdCx6PVMqQSpJLTIqaShBKS1lLFI9eSYmXyprKmQqTS95LEY9KHcqZypiK2spLygyKihi K3cqZyprKSooYit3KmcqaykqayksQj0tLjUqQSpTKlMqUyxOPUIqUixqPUIqRixVPShVPTIq Yit3KmsqKGctZCkpKlUqQyxWPSh3KmcqYiprK1QpL1UsSD0tdypkKnkvKGsqVSkscT1QKk4t MipWL0MrUyooVitWL0UpLEc9UCpqLTIqSC9DK1MqKEgrSC9FKSxZPUEqSSpOLTIqUi8oMStN KStTKkkqUitTKkEqKFYtVi9FKSxXPUEqSSpqLTIqRi8oMStNKStTKkkqRitTKkEqKEgtSC9F KSxYPUcqWS1XKnE7aWYoIVgpYnJlYWs7dmFyIFo9KHoqRy1PKlcpL1gsSj0oTypZLXoqcSkv WDthLT1aLHM9dSgteCxmKHgscy1KKSl9d2hpbGUoKG4oWik+dnx8bihKKT52KSYmLS1sPjAp O3JldHVybiBuKG4ocykteCk8dj9bMCxzXTpsJiZbYSxzXX07dmFyIHd0PW8oMzUqTSk7ZnVu Y3Rpb24gVHQodCxlKXt2YXIgcj1nKGUvMik7cmV0dXJuW3Qqd3QqTCgxLXIqciksKDErd3Qp KnJdfWZ1bmN0aW9uIGt0KHQsZSl7dmFyIHI9ZS8yLG49byhyKTtyZXR1cm5bMip0L1Qqbyhl KSpuKm4sVCpnKHIpXX1mdW5jdGlvbiBBdCh0KXt2YXIgZT0xLXQscj1pKHksMClbMF0taSgt eSwwKVswXSxuPUwoMiooaSgwLHgpWzFdLWkoMCwteClbMV0pL3IpO2Z1bmN0aW9uIGkocixu KXt2YXIgaT1vKG4pLGE9bShuKTtyZXR1cm5baS8oZSt0KmkpKnIsZSpuK3QqYV19ZnVuY3Rp b24gYSh0LGUpe3ZhciByPWkodCxlKTtyZXR1cm5bclswXSpuLHJbMV0vbl19ZnVuY3Rpb24g cyh0KXtyZXR1cm4gYSgwLHQpWzFdfXJldHVybiBhLmludmVydD1mdW5jdGlvbihyLGkpe3Zh ciBhPVYocyxpKTtyZXR1cm5bci9uKih0K2UvbyhhKSksYV19LGF9ZnVuY3Rpb24gTXQodCl7 cmV0dXJuW3RbMF0vMixTKGcodFsxXS8yKk0pKSpBXX1mdW5jdGlvbiBTdCh0KXtyZXR1cm5b Mip0WzBdLDIqaShtKHRbMV0qTSkpKkFdfWZ1bmN0aW9uIEV0KHQscil7dmFyIGk9Mip5L3Is cz10KnQ7ZnVuY3Rpb24gbChyLGwpe3ZhciBjPWUuZ2VvQXppbXV0aGFsRXF1aWRpc3RhbnRS YXcocixsKSx1PWNbMF0sZj1jWzFdLGg9dSp1K2YqZjtpZihoPnMpe3ZhciBkPUwoaCksZz1h KGYsdSksYj1pKnAoZy9pKSxfPWctYix3PXQqbyhfKSxUPSh0Km0oXyktXyptKHcpKS8oeC13 KSxrPUx0KF8sVCksQT0oeS10KS9DdChrLHcseSk7dT1kO3ZhciBNLFM9NTA7ZG97dS09TT0o dCtDdChrLHcsdSkqQS1kKS8oayh1KSpBKX13aGlsZShuKE0pPnYmJi0tUz4wKTtmPV8qbSh1 KSx1PHgmJihmLT1UKih1LXgpKTt2YXIgRT1tKGIpLEM9byhiKTtjWzBdPXUqQy1mKkUsY1sx XT11KkUrZipDfXJldHVybiBjfXJldHVybiBsLmludmVydD1mdW5jdGlvbihyLGwpe3ZhciBj PXIqcitsKmw7aWYoYz5zKXt2YXIgdT1MKGMpLGY9YShsLHIpLGg9aSpwKGYvaSksZD1mLWg7 cj11Km8oZCksbD11Km0oZCk7Zm9yKHZhciBnPXIteCx2PW0ociksYj1sL3YsXz1yPHg/MS8w OjAsdz0xMDs7KXt2YXIgVD10Km0oYiksaz10Km8oYiksQT1tKGspLE09eC1rLFM9KFQtYipB KS9NLEU9THQoYixTKTtpZihuKF8pPDFlLTEyfHwhLS13KWJyZWFrO2ItPV89KGIqdi1TKmct bCkvKHYtMipnKihNKihrK2IqVCpvKGspLUEpLVQqKFQtYipBKSkvKE0qTSkpfXI9KHU9dCtD dChFLGsscikqKHktdCkvQ3QoRSxrLHkpKSpvKGY9aCtiKSxsPXUqbShmKX1yZXR1cm4gZS5n ZW9BemltdXRoYWxFcXVpZGlzdGFudFJhdy5pbnZlcnQocixsKX0sbH1mdW5jdGlvbiBMdCh0 LGUpe3JldHVybiBmdW5jdGlvbihyKXt2YXIgbj10Km8ocik7cmV0dXJuIHI8eCYmKG4tPWUp LEwoMStuKm4pfX1mdW5jdGlvbiBDdCh0LGUscil7Zm9yKHZhciBuPShyLWUpLzUwLGk9dChl KSt0KHIpLGE9MSxvPWU7YTw1MDsrK2EpaSs9Mip0KG8rPW4pO3JldHVybi41Kmkqbn1mdW5j dGlvbiBQdCh0LGUscixpLGEscyxsLGMpe2Z1bmN0aW9uIHUobix1KXtpZighdSlyZXR1cm5b dCpuL3ksMF07dmFyIGY9dSp1LGg9dCtmKihlK2YqKHIrZippKSkscD11KihhLTErZioocy1j K2YqbCkpLGQ9KGgqaCtwKnApLygyKnApLGc9bipTKGgvZCkveTtyZXR1cm5bZCptKGcpLHUq KDErZipjKStkKigxLW8oZykpXX1yZXR1cm4gYXJndW1lbnRzLmxlbmd0aDw4JiYoYz0wKSx1 LmludmVydD1mdW5jdGlvbih1LGYpe3ZhciBoLHAsZD15KnUvdCxnPWYseD01MDtkb3t2YXIg Yj1nKmcsXz10K2IqKGUrYioocitiKmkpKSx3PWcqKGEtMStiKihzLWMrYipsKSksVD1fKl8r dyp3LGs9Mip3LEE9VC9rLE09QSpBLEU9UyhfL0EpL3ksQz1kKkUsUD1fKl8sST0oMiplK2Iq KDQqcis2KmIqaSkpKmcsTz1hK2IqKDMqcys1KmIqbCksej0oMiooXypJK3cqKE8tMSkpKmst VCooMiooTy0xKSkpLyhrKmspLEQ9byhDKSxSPW0oQyksRj1BKkQsQj1BKlIsTj1kL3kqKDEv TCgxLVAvTSkpKihJKkEtXyp6KS9NLGo9Qi11LFU9ZyooMStiKmMpK0EtRi1mLFY9eipSK0Yq TixIPUYqRSxxPTErei0oeipELUIqTiksRz1CKkUsWT1WKkctcSpIO2lmKCFZKWJyZWFrO2Qt PWg9KFUqVi1qKnEpL1ksZy09cD0oaipHLVUqSCkvWX13aGlsZSgobihoKT52fHxuKHApPnYp JiYtLXg+MCk7cmV0dXJuW2QsZ119LHV9VHQuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9 ZS8oMSt3dCk7cmV0dXJuW3QmJnQvKHd0KkwoMS1yKnIpKSwyKmkocildfSxrdC5pbnZlcnQ9 ZnVuY3Rpb24odCxlKXt2YXIgcj1pKGUvVCksbj1vKHIpLGE9MipyO3JldHVyblt0KlQvMi8o byhhKSpuKm4pLGFdfTt2YXIgSXQ9UHQoMi44Mjg0LC0xLjY5ODgsLjc1NDMyLC0uMTgwNzEs MS43NjAwMywtLjM4OTE0LC4wNDI1NTUpO3ZhciBPdD1QdCgyLjU4MzgxOSwtLjgzNTgyNywu MTcwMzU0LC0uMDM4MDk0LDEuNTQzMzEzLC0uNDExNDM1LC4wODI3NDIpO3ZhciB6dD1QdCg1 LzYqeSwtLjYyNjM2LC0uMDM0NCwwLDEuMzQ5MywtLjA1NTI0LDAsLjA0NSk7ZnVuY3Rpb24g RHQodCxlKXt2YXIgcj10KnQsbj1lKmU7cmV0dXJuW3QqKDEtLjE2MjM4OCpuKSooLjg3LTk1 MjQyNmUtOSpyKnIpLGUqKDErbi8xMildfUR0LmludmVydD1mdW5jdGlvbih0LGUpe3ZhciBy LGk9dCxhPWUsbz01MDtkb3t2YXIgcz1hKmE7YS09cj0oYSooMStzLzEyKS1lKS8oMStzLzQp fXdoaWxlKG4ocik+diYmLS1vPjApO289NTAsdC89MS0uMTYyMzg4KnM7ZG97dmFyIGw9KGw9 aSppKSpsO2ktPXI9KGkqKC44Ny05NTI0MjZlLTkqbCktdCkvKC44Ny0uMDA0NzYyMTMqbCl9 d2hpbGUobihyKT52JiYtLW8+MCk7cmV0dXJuW2ksYV19O3ZhciBSdD1QdCgyLjY1MTYsLS43 NjUzNCwuMTkxMjMsLS4wNDcwOTQsMS4zNjI4OSwtLjEzOTY1LC4wMzE3NjIpO2Z1bmN0aW9u IEZ0KHQpe3ZhciBlPXQoeCwwKVswXS10KC14LDApWzBdO2Z1bmN0aW9uIHIocixuKXt2YXIg aT1yPjA/LS41Oi41LGE9dChyK2kqeSxuKTtyZXR1cm4gYVswXS09aSplLGF9cmV0dXJuIHQu aW52ZXJ0JiYoci5pbnZlcnQ9ZnVuY3Rpb24ocixuKXt2YXIgaT1yPjA/LS41Oi41LGE9dC5p bnZlcnQocitpKmUsbiksbz1hWzBdLWkqeTtyZXR1cm4gbzwteT9vKz0yKnk6bz55JiYoby09 Mip5KSxhWzBdPW8sYX0pLHJ9ZnVuY3Rpb24gQnQodCxlKXt2YXIgcj1kKHQpLGk9ZChlKSxz PW8oZSksbD1vKHQpKnMsYz1tKHQpKnMsdT1tKGkqZSk7dD1uKGEoYyx1KSksZT1TKGwpLG4o dC14KT52JiYodCU9eCk7dmFyIGY9ZnVuY3Rpb24odCxlKXtpZihlPT09eClyZXR1cm5bMCww XTt2YXIgcixpLGE9bShlKSxzPWEqYSxsPXMqcyxjPTErbCx1PTErMypsLGY9MS1sLGg9Uygx L0woYykpLHA9ZitzKmMqaCxkPSgxLWEpL3AsZz1MKGQpLGI9ZCpjLF89TChiKSx3PWcqZjtp ZigwPT09dClyZXR1cm5bMCwtKHcrcypfKV07dmFyIFQsaz1vKGUpLEE9MS9rLE09MiphKmss RT0oLXAqay0oLTMqcytoKnUpKk0qKDEtYSkpLyhwKnApLEM9LUEqTSxQPS1BKihzKmMqRStk KnUqTSksST0tMipBKihmKiguNSpFL2cpLTIqcypnKk0pLE89NCp0L3k7aWYodD4uMjIyKnl8 fGU8eS80JiZ0Pi4xNzUqeSl7aWYocj0odytzKkwoYiooMStsKS13KncpKS8oMStsKSx0Pnkv NClyZXR1cm5bcixyXTt2YXIgej1yLEQ9LjUqcjtyPS41KihEK3opLGk9NTA7ZG97dmFyIFI9 TChiLXIqciksRj1yKihJK0MqUikrUCpTKHIvXyktTztpZighRilicmVhaztGPDA/RD1yOno9 cixyPS41KihEK3opfXdoaWxlKG4oei1EKT52JiYtLWk+MCl9ZWxzZXtyPXYsaT0yNTtkb3t2 YXIgQj1yKnIsTj1MKGItQiksaj1JK0MqTixVPXIqaitQKlMoci9fKS1PLFY9aisoUC1DKkIp L047ci09VD1OP1UvVjowfXdoaWxlKG4oVCk+diYmLS1pPjApfXJldHVybltyLC13LXMqTChi LXIqcildfSh0PnkvND94LXQ6dCxlKTtyZXR1cm4gdD55LzQmJih1PWZbMF0sZlswXT0tZlsx XSxmWzFdPS11KSxmWzBdKj1yLGZbMV0qPS1pLGZ9ZnVuY3Rpb24gTnQodCxlKXt2YXIgcixh LGwsYyx1LGY7aWYoZTx2KXJldHVyblsoYz1tKHQpKS0ocj1lKih0LWMqKGE9byh0KSkpLzQp KmEsYStyKmMsMS1lKmMqYy8yLHQtcl07aWYoZT49MS12KXJldHVybiByPSgxLWUpLzQsbD0x LyhhPVAodCkpLFsoYz0oKGY9cygyKihmPXQpKSktMSkvKGYrMSkpK3IqKCh1PWEqQyh0KSkt dCkvKGEqYSksbC1yKmMqbCoodS10KSxsK3IqYypsKih1K3QpLDIqaShzKHQpKS14K3IqKHUt dCkvYV07dmFyIGg9WzEsMCwwLDAsMCwwLDAsMCwwXSxwPVtMKGUpLDAsMCwwLDAsMCwwLDAs MF0sZD0wO2ZvcihhPUwoMS1lKSx1PTE7bihwW2RdL2hbZF0pPnYmJmQ8ODspcj1oW2QrK10s cFtkXT0oci1hKS8yLGhbZF09KHIrYSkvMixhPUwociphKSx1Kj0yO2w9dSpoW2RdKnQ7ZG97 bD0oUyhjPXBbZF0qbShhPWwpL2hbZF0pK2wpLzJ9d2hpbGUoLS1kKTtyZXR1cm5bbShsKSxj PW8obCksYy9vKGwtYSksbF19ZnVuY3Rpb24ganQodCxlKXtpZighZSlyZXR1cm4gdDtpZigx PT09ZSlyZXR1cm4gYyhnKHQvMitiKSk7Zm9yKHZhciByPTEsYT1MKDEtZSksbz1MKGUpLHM9 MDtuKG8pPnY7cysrKXtpZih0JXkpe3ZhciBsPWkoYSpnKHQpL3IpO2w8MCYmKGwrPXkpLHQr PWwrfn4odC95KSp5fWVsc2UgdCs9dDtvPShyK2EpLzIsYT1MKHIqYSksbz0oKHI9byktYSkv Mn1yZXR1cm4gdC8oaCgyLHMpKnIpfWZ1bmN0aW9uIFV0KHQsZSl7dmFyIHI9KHctMSkvKHcr MSksbD1MKDEtcipyKSx1PWp0KHgsbCpsKSxmPWMoZyh5LzQrbihlKS8yKSksaD1zKC0xKmYp L0wocikscD1mdW5jdGlvbih0LGUpe3ZhciByPXQqdCxuPWUrMSxpPTEtci1lKmU7cmV0dXJu Wy41KigodD49MD94Oi14KS1hKGksMip0KSksLS4yNSpjKGkqaSs0KnIpKy41KmMobipuK3Ip XX0oaCpvKC0xKnQpLGgqbSgtMSp0KSksdj1mdW5jdGlvbih0LGUscil7dmFyIGE9bih0KSxv PUMobihlKSk7aWYoYSl7dmFyIHM9MS9tKGEpLGw9MS8oZyhhKSpnKGEpKSxjPS0obCtyKihv Km8qcypzKS0xK3IpLHU9KC1jK0woYypjLTQqKChyLTEpKmwpKSkvMjtyZXR1cm5banQoaSgx L0wodSkpLHIpKmQodCksanQoaShMKCh1L2wtMSkvcikpLDEtcikqZChlKV19cmV0dXJuWzAs anQoaShvKSwxLXIpKmQoZSldfShwWzBdLHBbMV0sbCpsKTtyZXR1cm5bLXZbMV0sKGU+PTA/ MTotMSkqKC41KnUtdlswXSldfWZ1bmN0aW9uIFZ0KHQpe3ZhciBlPW0odCkscj1vKHQpLGk9 SHQodCk7ZnVuY3Rpb24gcyh0LGEpe3ZhciBzPWkodCxhKTt0PXNbMF0sYT1zWzFdO3ZhciBs PW0oYSksYz1vKGEpLHU9byh0KSxmPUUoZSpsK3IqYyp1KSxoPW0oZikscD1uKGgpPnY/Zi9o OjE7cmV0dXJuW3AqciptKHQpLChuKHQpPng/cDotcCkqKGUqYy1yKmwqdSldfXJldHVybiBp LmludmVydD1IdCgtdCkscy5pbnZlcnQ9ZnVuY3Rpb24odCxyKXt2YXIgbj1MKHQqdCtyKnIp LHM9LW0obiksbD1vKG4pLGM9bipsLHU9LXIqcyxmPW4qZSxoPUwoYypjK3UqdS1mKmYpLHA9 YShjKmYrdSpoLHUqZi1jKmgpLGQ9KG4+eD8tMToxKSphKHQqcyxuKm8ocCkqbCtyKm0ocCkq cyk7cmV0dXJuIGkuaW52ZXJ0KGQscCl9LHN9ZnVuY3Rpb24gSHQodCl7dmFyIGU9bSh0KSxy PW8odCk7cmV0dXJuIGZ1bmN0aW9uKHQsbil7dmFyIGk9byhuKSxzPW8odCkqaSxsPW0odCkq aSxjPW0obik7cmV0dXJuW2EobCxzKnItYyplKSxTKGMqcitzKmUpXX19QnQuaW52ZXJ0PWZ1 bmN0aW9uKHQsZSl7bih0KT4xJiYodD0yKmQodCktdCksbihlKT4xJiYoZT0yKmQoZSktZSk7 dmFyIHI9ZCh0KSxpPWQoZSkscz0tcip0LGw9LWkqZSxjPWwvczwxLHU9ZnVuY3Rpb24odCxl KXt2YXIgcj0wLGk9MSxhPS41LHM9NTA7Zm9yKDs7KXt2YXIgbD1hKmEsYz1MKGEpLHU9Uygx L0woMStsKSksZj0xLWwrYSooMStsKSp1LGg9KDEtYykvZixwPUwoaCksZD1oKigxK2wpLG09 cCooMS1sKSxnPUwoZC10KnQpLHY9ZSttK2EqZztpZihuKGktcik8MWUtMTJ8fDA9PS0tc3x8 MD09PXYpYnJlYWs7dj4wP3I9YTppPWEsYT0uNSoocitpKX1pZighcylyZXR1cm4gbnVsbDt2 YXIgeD1TKGMpLGI9byh4KSxfPTEvYix3PTIqYypiLFQ9KC1mKmItKC0zKmErdSooMSszKmwp KSp3KigxLWMpKS8oZipmKTtyZXR1cm5beS80Kih0KigtMipfKiguNSpUL3AqKDEtbCktMiph KnAqdykrLV8qdypnKSstXyooYSooMStsKSpUK2gqKDErMypsKSp3KSpTKHQvTChkKSkpLHhd fShjP2w6cyxjP3M6bCksZj11WzBdLGg9dVsxXSxwPW8oaCk7cmV0dXJuIGMmJihmPS14LWYp LFtyKihhKG0oZikqcCwtbShoKSkreSksaSpTKG8oZikqcCldfSxVdC5pbnZlcnQ9ZnVuY3Rp b24odCxlKXt2YXIgcixuLG8sbCx1LGYsaD0ody0xKS8odysxKSxwPUwoMS1oKmgpLGQ9anQo eCxwKnApLG09KG49LXQsbz1wKnAsKHI9LjUqZC1lKT8obD1OdChyLG8pLG4/KGY9KHU9TnQo biwxLW8pKVsxXSp1WzFdK28qbFswXSpsWzBdKnVbMF0qdVswXSxbW2xbMF0qdVsyXS9mLGxb MV0qbFsyXSp1WzBdKnVbMV0vZl0sW2xbMV0qdVsxXS9mLC1sWzBdKmxbMl0qdVswXSp1WzJd L2ZdLFtsWzJdKnVbMV0qdVsyXS9mLC1vKmxbMF0qbFsxXSp1WzBdL2ZdXSk6W1tsWzBdLDBd LFtsWzFdLDBdLFtsWzJdLDBdXSk6W1swLCh1PU50KG4sMS1vKSlbMF0vdVsxXV0sWzEvdVsx XSwwXSxbdVsyXS91WzFdLDBdXSksZz1mdW5jdGlvbih0LGUpe3ZhciByPWVbMF0qZVswXStl WzFdKmVbMV07cmV0dXJuWyh0WzBdKmVbMF0rdFsxXSplWzFdKS9yLCh0WzFdKmVbMF0tdFsw XSplWzFdKS9yXX0obVswXSxtWzFdKTtyZXR1cm5bYShnWzFdLGdbMF0pLy0xLDIqaShzKC0u NSpjKGgqZ1swXSpnWzBdK2gqZ1sxXSpnWzFdKSkpLXhdfTt2YXIgcXQ9UygxLTEvMykqQSxH dD1odCgwKTtmdW5jdGlvbiBZdCh0KXt2YXIgZT1xdCpNLHI9bHQoeSxlKVswXS1sdCgteSxl KVswXSxpPUd0KDAsZSlbMV0sYT1sdCgwLGUpWzFdLG89VC1hLHM9ay90LGM9NC9rLGg9aStv Km8qNC9rO2Z1bmN0aW9uIHAocCxkKXt2YXIgbSxnPW4oZCk7aWYoZz5lKXt2YXIgdj1mKHQt MSx1KDAsbCgocCt5KS9zKSkpOyhtPWx0KHArPXkqKHQtMSkvdC12KnMsZykpWzBdPW1bMF0q ay9yLWsqKHQtMSkvKDIqdCkrdiprL3QsbVsxXT1pKzQqKG1bMV0tYSkqby9rLGQ8MCYmKG1b MV09LW1bMV0pfWVsc2UgbT1HdChwLGQpO3JldHVybiBtWzBdKj1jLG1bMV0vPWgsbX1yZXR1 cm4gcC5pbnZlcnQ9ZnVuY3Rpb24oZSxwKXtlLz1jO3ZhciBkPW4ocCo9aCk7aWYoZD5pKXt2 YXIgbT1mKHQtMSx1KDAsbCgoZSt5KS9zKSkpO2U9KGUreSoodC0xKS90LW0qcykqci9rO3Zh ciBnPWx0LmludmVydChlLC4yNSooZC1pKSprL28rYSk7cmV0dXJuIGdbMF0tPXkqKHQtMSkv dC1tKnMscDwwJiYoZ1sxXT0tZ1sxXSksZ31yZXR1cm4gR3QuaW52ZXJ0KGUscCl9LHB9ZnVu Y3Rpb24gV3QodCxlKXtyZXR1cm5bdCwxJmU/OTAtdjpxdF19ZnVuY3Rpb24gWHQodCxlKXty ZXR1cm5bdCwxJmU/LTkwK3Y6LXF0XX1mdW5jdGlvbiBadCh0KXtyZXR1cm5bdFswXSooMS12 KSx0WzFdXX1mdW5jdGlvbiBKdCh0KXt2YXIgZSxyPTErdCxpPVMobSgxL3IpKSxzPTIqTCh5 LyhlPXkrNCppKnIpKSxsPS41KnMqKHIrTCh0KigyK3QpKSksYz10KnQsdT1yKnI7ZnVuY3Rp b24gZihmLGgpe3ZhciBwLGQsZz0xLW0oaCk7aWYoZyYmZzwyKXt2YXIgdixiPXgtaCxfPTI1 O2Rve3ZhciB3PW0oYiksVD1vKGIpLGs9aSthKHcsci1UKSxBPTErdS0yKnIqVDtiLT12PShi LWMqaS1yKncrQSprLS41KmcqZSkvKDIqcip3KmspfXdoaWxlKG4odik+MWUtMTImJi0tXz4w KTtwPXMqTChBKSxkPWYqay95fWVsc2UgcD1zKih0K2cpLGQ9ZippL3k7cmV0dXJuW3AqbShk KSxsLXAqbyhkKV19cmV0dXJuIGYuaW52ZXJ0PWZ1bmN0aW9uKHQsbil7dmFyIG89dCp0Kyhu LT1sKSpuLGY9KDErdS1vLyhzKnMpKS8oMipyKSxoPUUoZikscD1tKGgpLGQ9aSthKHAsci1m KTtyZXR1cm5bUyh0L0wobykpKnkvZCxTKDEtMiooaC1jKmktcipwKygxK3UtMipyKmYpKmQp L2UpXX0sZn1mdW5jdGlvbiBLdCh0LGUpe3JldHVybiBlPi0uNzEwOTg4OTU5NjIwNzU2Nz8o KHQ9Vyh0LGUpKVsxXSs9LjA1MjgwMzUyNzQ1NDIsdCk6USh0LGUpfWZ1bmN0aW9uIFF0KHQs ZSl7cmV0dXJuIG4oZSk+LjcxMDk4ODk1OTYyMDc1Njc/KCh0PVcodCxlKSlbMV0tPWU+MD8u MDUyODAzNTI3NDU0MjotLjA1MjgwMzUyNzQ1NDIsdCk6USh0LGUpfWZ1bmN0aW9uICR0KHQs ZSxyLG4pe3ZhciBpPUwoNCp5LygyKnIrKDErdC1lLzIpKm0oMipyKSsodCtlKS8yKm0oNCpy KStlLzIqbSg2KnIpKSksYT1MKG4qbShyKSpMKCgxK3QqbygyKnIpK2Uqbyg0KnIpKS8oMSt0 K2UpKSkscz1yKmMoMSk7ZnVuY3Rpb24gbChyKXtyZXR1cm4gTCgxK3QqbygyKnIpK2Uqbyg0 KnIpKX1mdW5jdGlvbiBjKG4pe3ZhciBpPW4qcjtyZXR1cm4oMippKygxK3QtZS8yKSptKDIq aSkrKHQrZSkvMiptKDQqaSkrZS8yKm0oNippKSkvcn1mdW5jdGlvbiB1KHQpe3JldHVybiBs KHQpKm0odCl9dmFyIGY9ZnVuY3Rpb24odCxlKXt2YXIgbj1yKlYoYyxzKm0oZSkvcixlL3kp O2lzTmFOKG4pJiYobj1yKmQoZSkpO3ZhciB1PWkqbChuKTtyZXR1cm5bdSphKnQveSpvKG4p LHUvYSptKG4pXX07cmV0dXJuIGYuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49Vih1LGUq YS9pKTtyZXR1cm5bdCp5LyhvKG4pKmkqYSpsKG4pKSxTKHIqYyhuL3IpL3MpXX0sMD09PXIm JihpPUwobi95KSwoZj1mdW5jdGlvbih0LGUpe3JldHVyblt0KmksbShlKS9pXX0pLmludmVy dD1mdW5jdGlvbih0LGUpe3JldHVyblt0L2ksUyhlKmkpXX0pLGZ9ZnVuY3Rpb24gdGUodCxl LHIsbixpKXt2b2lkIDA9PT1uJiYobj0xZS04KSx2b2lkIDA9PT1pJiYoaT0yMCk7dmFyIGE9 dChlKSxvPXQoLjUqKGUrcikpLHM9dChyKTtyZXR1cm4gZnVuY3Rpb24gdChlLHIsbixpLGEs byxzLGwsYyx1LGYpe2lmKGYubmFuRW5jb3VudGVyZWQpcmV0dXJuIE5hTjt2YXIgaCxwLGQs bSxnLHYseSx4LGIsXztpZihwPWUocisuMjUqKGg9bi1yKSksZD1lKG4tLjI1KmgpLGlzTmFO KHApKWYubmFuRW5jb3VudGVyZWQ9ITA7ZWxzZXtpZighaXNOYU4oZCkpcmV0dXJuIF89KCh2 PShtPWgqKGkrNCpwK2EpLzEyKSsoZz1oKihhKzQqZCtvKS8xMikpLXMpLzE1LHU+Yz8oZi5t YXhEZXB0aENvdW50KyssditfKTpNYXRoLmFicyhfKTxsP3YrXzooeD10KGUscix5PXIrLjUq aCxpLHAsYSxtLC41KmwsYyx1KzEsZiksaXNOYU4oeCk/KGYubmFuRW5jb3VudGVyZWQ9ITAs TmFOKTooYj10KGUseSxuLGEsZCxvLGcsLjUqbCxjLHUrMSxmKSxpc05hTihiKT8oZi5uYW5F bmNvdW50ZXJlZD0hMCxOYU4pOngrYikpO2YubmFuRW5jb3VudGVyZWQ9ITB9fSh0LGUscixh LG8scywoYSs0Km8rcykqKHItZSkvNixuLGksMSx7bWF4RGVwdGhDb3VudDowLG5hbkVuY291 bnRlcmVkOiExfSl9ZnVuY3Rpb24gZWUodCxlLHIpe2Z1bmN0aW9uIGkocil7cmV0dXJuIHQr KDEtdCkqaCgxLWgocixlKSwxL2UpfWZ1bmN0aW9uIGEodCl7cmV0dXJuIHRlKGksMCx0LDFl LTQpfWZvcih2YXIgbz0xL2EoMSkscz0xZTMsbD0oMSsxZS04KSpvLGM9W10sdT0wO3U8PXM7 dSsrKWMucHVzaChhKHUvcykqbCk7ZnVuY3Rpb24gZih0KXt2YXIgZT0wLHI9cyxuPTUwMDtk b3tjW25dPnQ/cj1uOmU9bixuPWUrcj4+MX13aGlsZShuPmUpO3ZhciBpPWNbbisxXS1jW25d O3JldHVybiBpJiYoaT0odC1jW24rMV0pL2kpLChuKzEraSkvc312YXIgcD0yKmYoMSkveSpv L3IsZz1mdW5jdGlvbih0LGUpe3ZhciByPWYobihtKGUpKSksYT1pKHIpKnQ7cmV0dXJuIHIv PXAsW2EsZT49MD9yOi1yXX07cmV0dXJuIGcuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIHI7 cmV0dXJuIG4oZSo9cCk8MSYmKHI9ZChlKSpTKGEobihlKSkqbykpLFt0L2kobihlKSkscl19 LGd9ZnVuY3Rpb24gcmUodCxlKXtyZXR1cm4gbih0WzBdLWVbMF0pPHYmJm4odFsxXS1lWzFd KTx2fWZ1bmN0aW9uIG5lKHQsZSl7Zm9yKHZhciByLG4saSxhPS0xLG89dC5sZW5ndGgscz10 WzBdLGw9W107KythPG87KXtuPSgocj10W2FdKVswXS1zWzBdKS9lLGk9KHJbMV0tc1sxXSkv ZTtmb3IodmFyIGM9MDtjPGU7KytjKWwucHVzaChbc1swXStjKm4sc1sxXStjKmldKTtzPXJ9 cmV0dXJuIGwucHVzaChyKSxsfWZ1bmN0aW9uIGllKHQpe3ZhciBlLG4saSxhLG8scyxsLGM9 W10sdT10WzBdLmxlbmd0aDtmb3IobD0wO2w8dTsrK2wpbj0oZT10WzBdW2xdKVswXVswXSxp PWVbMF1bMV0sYT1lWzFdWzFdLG89ZVsyXVswXSxzPWVbMl1bMV0sYy5wdXNoKG5lKFtbbit2 LGkrdl0sW24rdixhLXZdLFtvLXYsYS12XSxbby12LHMrdl1dLDMwKSk7Zm9yKGw9dFsxXS5s ZW5ndGgtMTtsPj0wOy0tbCluPShlPXRbMV1bbF0pWzBdWzBdLGk9ZVswXVsxXSxhPWVbMV1b MV0sbz1lWzJdWzBdLHM9ZVsyXVsxXSxjLnB1c2gobmUoW1tvLXYscy12XSxbby12LGErdl0s W24rdixhK3ZdLFtuK3YsaS12XV0sMzApKTtyZXR1cm57dHlwZToiUG9seWdvbiIsY29vcmRp bmF0ZXM6W3IubWVyZ2UoYyldfX1mdW5jdGlvbiBhZSh0LHIsbil7dmFyIGksYTtmdW5jdGlv biBvKGUsbil7Zm9yKHZhciBpPW48MD8tMToxLGE9clsrKG48MCldLG89MCxzPWEubGVuZ3Ro LTE7bzxzJiZlPmFbb11bMl1bMF07KytvKTt2YXIgbD10KGUtYVtvXVsxXVswXSxuKTtyZXR1 cm4gbFswXSs9dChhW29dWzFdWzBdLGkqbj5pKmFbb11bMF1bMV0/YVtvXVswXVsxXTpuKVsw XSxsfW4/by5pbnZlcnQ9bihvKTp0LmludmVydCYmKG8uaW52ZXJ0PWZ1bmN0aW9uKGUsbil7 Zm9yKHZhciBpPWFbKyhuPDApXSxzPXJbKyhuPDApXSxsPTAsYz1pLmxlbmd0aDtsPGM7Kyts KXt2YXIgdT1pW2xdO2lmKHVbMF1bMF08PWUmJmU8dVsxXVswXSYmdVswXVsxXTw9biYmbjx1 WzFdWzFdKXt2YXIgZj10LmludmVydChlLXQoc1tsXVsxXVswXSwwKVswXSxuKTtyZXR1cm4g ZlswXSs9c1tsXVsxXVswXSxyZShvKGZbMF0sZlsxXSksW2Usbl0pP2Y6bnVsbH19fSk7dmFy IHM9ZS5nZW9Qcm9qZWN0aW9uKG8pLGw9cy5zdHJlYW07cmV0dXJuIHMuc3RyZWFtPWZ1bmN0 aW9uKHQpe3ZhciByPXMucm90YXRlKCksbj1sKHQpLGE9KHMucm90YXRlKFswLDBdKSxsKHQp KTtyZXR1cm4gcy5yb3RhdGUociksbi5zcGhlcmU9ZnVuY3Rpb24oKXtlLmdlb1N0cmVhbShp LGEpfSxufSxzLmxvYmVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhp PWllKGUpLHI9ZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hcCgoZnVuY3Rpb24odCl7 cmV0dXJuW1t0WzBdWzBdKk0sdFswXVsxXSpNXSxbdFsxXVswXSpNLHRbMV1bMV0qTV0sW3Rb Ml1bMF0qTSx0WzJdWzFdKk1dXX0pKX0pKSxhPXIubWFwKChmdW5jdGlvbihlKXtyZXR1cm4g ZS5tYXAoKGZ1bmN0aW9uKGUpe3ZhciByLG49dChlWzBdWzBdLGVbMF1bMV0pWzBdLGk9dChl WzJdWzBdLGVbMl1bMV0pWzBdLGE9dChlWzFdWzBdLGVbMF1bMV0pWzFdLG89dChlWzFdWzBd LGVbMV1bMV0pWzFdO3JldHVybiBhPm8mJihyPWEsYT1vLG89ciksW1tuLGFdLFtpLG9dXX0p KX0pKSxzKTpyLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXty ZXR1cm5bW3RbMF1bMF0qQSx0WzBdWzFdKkFdLFt0WzFdWzBdKkEsdFsxXVsxXSpBXSxbdFsy XVswXSpBLHRbMl1bMV0qQV1dfSkpfSkpfSxudWxsIT1yJiZzLmxvYmVzKHIpLHN9S3QuaW52 ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU+LS43MTA5ODg5NTk2MjA3NTY3P1cuaW52ZXJ0 KHQsZS0uMDUyODAzNTI3NDU0Mik6US5pbnZlcnQodCxlKX0sUXQuaW52ZXJ0PWZ1bmN0aW9u KHQsZSl7cmV0dXJuIG4oZSk+LjcxMDk4ODk1OTYyMDc1Njc/Vy5pbnZlcnQodCxlKyhlPjA/ LjA1MjgwMzUyNzQ1NDI6LS4wNTI4MDM1Mjc0NTQyKSk6US5pbnZlcnQodCxlKX07dmFyIG9l PVtbW1stMTgwLDBdLFstMTAwLDkwXSxbLTQwLDBdXSxbWy00MCwwXSxbMzAsOTBdLFsxODAs MF1dXSxbW1stMTgwLDBdLFstMTYwLC05MF0sWy0xMDAsMF1dLFtbLTEwMCwwXSxbLTYwLC05 MF0sWy0yMCwwXV0sW1stMjAsMF0sWzIwLC05MF0sWzgwLDBdXSxbWzgwLDBdLFsxNDAsLTkw XSxbMTgwLDBdXV1dO3ZhciBzZT1bW1tbLTE4MCwwXSxbLTEwMCw5MF0sWy00MCwwXV0sW1st NDAsMF0sWzMwLDkwXSxbMTgwLDBdXV0sW1tbLTE4MCwwXSxbLTE2MCwtOTBdLFstMTAwLDBd XSxbWy0xMDAsMF0sWy02MCwtOTBdLFstMjAsMF1dLFtbLTIwLDBdLFsyMCwtOTBdLFs4MCww XV0sW1s4MCwwXSxbMTQwLC05MF0sWzE4MCwwXV1dXTt2YXIgbGU9W1tbWy0xODAsMF0sWy0x MDAsOTBdLFstNDAsMF1dLFtbLTQwLDBdLFszMCw5MF0sWzE4MCwwXV1dLFtbWy0xODAsMF0s Wy0xNjAsLTkwXSxbLTEwMCwwXV0sW1stMTAwLDBdLFstNjAsLTkwXSxbLTIwLDBdXSxbWy0y MCwwXSxbMjAsLTkwXSxbODAsMF1dLFtbODAsMF0sWzE0MCwtOTBdLFsxODAsMF1dXV07dmFy IGNlPVtbW1stMTgwLDBdLFstOTAsOTBdLFswLDBdXSxbWzAsMF0sWzkwLDkwXSxbMTgwLDBd XV0sW1tbLTE4MCwwXSxbLTkwLC05MF0sWzAsMF1dLFtbMCwwXSxbOTAsLTkwXSxbMTgwLDBd XV1dO3ZhciB1ZT1bW1tbLTE4MCwzNV0sWy0zMCw5MF0sWzAsMzVdXSxbWzAsMzVdLFszMCw5 MF0sWzE4MCwzNV1dXSxbW1stMTgwLC0xMF0sWy0xMDIsLTkwXSxbLTY1LC0xMF1dLFtbLTY1 LC0xMF0sWzUsLTkwXSxbNzcsLTEwXV0sW1s3NywtMTBdLFsxMDMsLTkwXSxbMTgwLC0xMF1d XV07dmFyIGZlPVtbW1stMTgwLDBdLFstMTEwLDkwXSxbLTQwLDBdXSxbWy00MCwwXSxbMCw5 MF0sWzQwLDBdXSxbWzQwLDBdLFsxMTAsOTBdLFsxODAsMF1dXSxbW1stMTgwLDBdLFstMTEw LC05MF0sWy00MCwwXV0sW1stNDAsMF0sWzAsLTkwXSxbNDAsMF1dLFtbNDAsMF0sWzExMCwt OTBdLFsxODAsMF1dXV07ZnVuY3Rpb24gaGUodCxlKXtyZXR1cm5bMy9rKnQqTCh5KnkvMy1l KmUpLGVdfWZ1bmN0aW9uIHBlKHQpe2Z1bmN0aW9uIGUoZSxyKXtpZihuKG4ocikteCk8dily ZXR1cm5bMCxyPDA/LTI6Ml07dmFyIGk9bShyKSxhPWgoKDEraSkvKDEtaSksdC8yKSxzPS41 KihhKzEvYSkrbyhlKj10KTtyZXR1cm5bMiptKGUpL3MsKGEtMS9hKS9zXX1yZXR1cm4gZS5p bnZlcnQ9ZnVuY3Rpb24oZSxyKXt2YXIgaT1uKHIpO2lmKG4oaS0yKTx2KXJldHVybiBlP251 bGw6WzAsZChyKSp4XTtpZihpPjIpcmV0dXJuIG51bGw7dmFyIG89KGUvPTIpKmUscz0oci89 MikqcixsPTIqci8oMStvK3MpO3JldHVybiBsPWgoKDErbCkvKDEtbCksMS90KSxbYSgyKmUs MS1vLXMpL3QsUygobC0xKS8obCsxKSldfSxlfWhlLmludmVydD1mdW5jdGlvbih0LGUpe3Jl dHVybltrLzMqdC9MKHkqeS8zLWUqZSksZV19O3ZhciBkZT15L3c7ZnVuY3Rpb24gbWUodCxl KXtyZXR1cm5bdCooMStMKG8oZSkpKS8yLGUvKG8oZS8yKSpvKHQvNikpXX1mdW5jdGlvbiBn ZSh0LGUpe3ZhciByPXQqdCxuPWUqZTtyZXR1cm5bdCooLjk3NTUzNCtuKigtLjAxNDMwNTkq ci0uMTE5MTYxKy0uMDU0NzAwOSpuKSksZSooMS4wMDM4NCtyKiguMDgwMjg5NCstLjAyODU1 Km4rMTk5MDI1ZS05KnIpK24qKC4wOTk4OTA5Ky0uMDQ5MTAzMipuKSldfWZ1bmN0aW9uIHZl KHQsZSl7cmV0dXJuW20odCkvbyhlKSxnKGUpKm8odCldfWZ1bmN0aW9uIHllKHQpe3ZhciBl PW8odCkscj1nKGIrdC8yKTtmdW5jdGlvbiBpKGksYSl7dmFyIG89YS10LHM9bihvKTx2P2kq ZTpuKHM9YithLzIpPHZ8fG4obihzKS14KTx2PzA6aSpvL2MoZyhzKS9yKTtyZXR1cm5bcyxv XX1yZXR1cm4gaS5pbnZlcnQ9ZnVuY3Rpb24oaSxhKXt2YXIgbyxzPWErdDtyZXR1cm5bbihh KTx2P2kvZTpuKG89YitzLzIpPHZ8fG4obihvKS14KTx2PzA6aSpjKGcobykvcikvYSxzXX0s aX1mdW5jdGlvbiB4ZSh0LGUpe3JldHVyblt0LDEuMjUqYyhnKGIrLjQqZSkpXX1mdW5jdGlv biBiZSh0KXt2YXIgZT10Lmxlbmd0aC0xO2Z1bmN0aW9uIHIocixuKXtmb3IodmFyIGksYT1v KG4pLHM9Mi8oMSthKm8ocikpLGw9cyphKm0ociksYz1zKm0obiksdT1lLGY9dFt1XSxoPWZb MF0scD1mWzFdOy0tdT49MDspaD0oZj10W3VdKVswXStsKihpPWgpLWMqcCxwPWZbMV0rbCpw K2MqaTtyZXR1cm5baD1sKihpPWgpLWMqcCxwPWwqcCtjKmldfXJldHVybiByLmludmVydD1m dW5jdGlvbihyLHMpe3ZhciBsPTIwLGM9cix1PXM7ZG97Zm9yKHZhciBmLGg9ZSxwPXRbaF0s ZD1wWzBdLGc9cFsxXSx2PTAseT0wOy0taD49MDspdj1kK2MqKGY9diktdSp5LHk9ZytjKnkr dSpmLGQ9KHA9dFtoXSlbMF0rYyooZj1kKS11KmcsZz1wWzFdK2MqZyt1KmY7dmFyIHgsYixf PSh2PWQrYyooZj12KS11KnkpKnYrKHk9ZytjKnkrdSpmKSp5O2MtPXg9KChkPWMqKGY9ZCkt dSpnLXIpKnYrKGc9YypnK3UqZi1zKSp5KS9fLHUtPWI9KGcqdi1kKnkpL199d2hpbGUobih4 KStuKGIpPjFlLTEyJiYtLWw+MCk7aWYobCl7dmFyIHc9TChjKmMrdSp1KSxUPTIqaSguNSp3 KSxrPW0oVCk7cmV0dXJuW2EoYyprLHcqbyhUKSksdz9TKHUqay93KTowXX19LHJ9bWUuaW52 ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bih0KSxpPW4oZSksYT12LHM9eDtpPGRlP3MqPWkv ZGU6YSs9NipFKGRlL2kpO2Zvcih2YXIgbD0wO2w8MjU7bCsrKXt2YXIgYz1tKHMpLHU9TChv KHMpKSxmPW0ocy8yKSxoPW8ocy8yKSxwPW0oYS82KSxkPW8oYS82KSxnPS41KmEqKDErdSkt cix5PXMvKGgqZCktaSxiPXU/LS4yNSphKmMvdTowLF89LjUqKDErdSksdz0oMSsuNSpzKmYv aCkvKGgqZCksVD1zL2gqKHAvNikvKGQqZCksaz1iKlQtdypfLEE9KGcqVC15Kl8pL2ssTT0o eSpiLWcqdykvaztpZihzLT1BLGEtPU0sbihBKTx2JiZuKE0pPHYpYnJlYWt9cmV0dXJuW3Q8 MD8tYTphLGU8MD8tczpzXX0sZ2UuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZCh0KSp5 LGk9ZS8yLGE9NTA7ZG97dmFyIG89cipyLHM9aSppLGw9cippLGM9ciooLjk3NTUzNCtzKigt LjAxNDMwNTkqby0uMTE5MTYxKy0uMDU0NzAwOSpzKSktdCx1PWkqKDEuMDAzODQrbyooLjA4 MDI4OTQrLS4wMjg1NSpzKzE5OTAyNWUtOSpvKStzKiguMDk5ODkwOSstLjA0OTEwMzIqcykp LWUsZj0uOTc1NTM0LXMqKC4xMTkxNjErMypvKi4wMTQzMDU5Ky4wNTQ3MDA5KnMpLGg9LWwq KC4yMzgzMjIrLjIxODgwMzYqcysuMDI4NjExOCpvKSxwPWwqKC4xNjA1Nzg4Kzc5NjFlLTcq bystLjA1NzEqcyksbT0xLjAwMzg0K28qKC4wODAyODk0KzE5OTAyNWUtOSpvKStzKigzKigu MDk5ODkwOS0uMDI4NTUqbyktLjI0NTUxNipzKSxnPWgqcC1tKmYseD0odSpoLWMqbSkvZyxi PShjKnAtdSpmKS9nO3ItPXgsaS09Yn13aGlsZSgobih4KT52fHxuKGIpPnYpJiYtLWE+MCk7 cmV0dXJuIGEmJltyLGldfSx2ZS5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10KnQsbj1l KmUrMSxpPXIrbixhPXQ/XypMKChpLUwoaSppLTQqcikpL3IpOjEvTChuKTtyZXR1cm5bUyh0 KmEpLGQoZSkqRShhKV19LHhlLmludmVydD1mdW5jdGlvbih0LGUpe3JldHVyblt0LDIuNSpp KHMoLjgqZSkpLS42MjUqeV19O3ZhciBfZT1bWy45OTcyNTIzLDBdLFsuMDA1MjUxMywtLjAw NDExNzVdLFsuMDA3NDYwNiwuMDA0ODEyNV0sWy0uMDE1Mzc4MywtLjE5NjgyNTNdLFsuMDYz Njg3MSwtLjE0MDgwMjddLFsuMzY2MDk3NiwtLjI5MzczODJdXSx3ZT1bWy45ODg3OSwwXSxb MCwwXSxbLS4wNTA5MDksMF0sWzAsMF0sWy4wNzU1MjgsMF1dLFRlPVtbLjk4NDI5OSwwXSxb LjAyMTE2NDIsLjAwMzc2MDhdLFstLjEwMzYwMTgsLS4wNTc1MTAyXSxbLS4wMzI5MDk1LC0u MDMyMDExOV0sWy4wNDk5NDcxLC4xMjIzMzM1XSxbLjAyNjA0NiwuMDg5OTgwNV0sWzczODhl LTcsLS4xNDM1NzkyXSxbLjAwNzU4NDgsLS4xMzM0MTA4XSxbLS4wMjE2NDczLC4wNzc2NjQ1 XSxbLS4wMjI1MTYxLC4wODUzNjczXV0sa2U9W1suOTI0NSwwXSxbMCwwXSxbLjAxOTQzLDBd XSxBZT1bWy43MjEzMTYsMF0sWzAsMF0sWy0uMDA4ODE2MjUsLS4wMDYxNzMyNV1dO2Z1bmN0 aW9uIE1lKHQscil7dmFyIG49ZS5nZW9Qcm9qZWN0aW9uKGJlKHQpKS5yb3RhdGUocikuY2xp cEFuZ2xlKDkwKSxpPWUuZ2VvUm90YXRpb24ociksYT1uLmNlbnRlcjtyZXR1cm4gZGVsZXRl IG4ucm90YXRlLG4uY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro P2EoaSh0KSk6aS5pbnZlcnQoYSgpKX0sbn12YXIgU2U9TCg2KSxFZT1MKDcpO2Z1bmN0aW9u IExlKHQsZSl7dmFyIHI9Uyg3Km0oZSkvKDMqU2UpKTtyZXR1cm5bU2UqdCooMipvKDIqci8z KS0xKS9FZSw5Km0oci8zKS9FZV19ZnVuY3Rpb24gQ2UodCxlKXtmb3IodmFyIHIsaT0oMStf KSptKGUpLGE9ZSxzPTA7czwyNSYmKGEtPXI9KG0oYS8yKSttKGEpLWkpLyguNSpvKGEvMikr byhhKSksIShuKHIpPHYpKTtzKyspO3JldHVyblt0KigxKzIqbyhhKS9vKGEvMikpLygzKncp LDIqTCgzKSptKGEvMikvTCgyK3cpXX1mdW5jdGlvbiBQZSh0LGUpe2Zvcih2YXIgcixpPUwo Ni8oNCt5KSksYT0oMSt5LzQpKm0oZSkscz1lLzIsbD0wO2w8MjUmJihzLT1yPShzLzIrbShz KS1hKS8oLjUrbyhzKSksIShuKHIpPHYpKTtsKyspO3JldHVybltpKiguNStvKHMpKSp0LzEu NSxpKnNdfWZ1bmN0aW9uIEllKHQsZSl7dmFyIHI9ZSplLG49cipyLGk9cipuO3JldHVyblt0 KiguODQ3MTktLjEzMDYzKnIraSppKiguMDU0OTQqci0uMDQ1MTUtLjAyMzI2Km4rLjAwMzMx KmkpKSxlKigxLjAxMTgzK24qbiooLjAxOTI2KnItLjAyNjI1LS4wMDM5NipuKSldfWZ1bmN0 aW9uIE9lKHQsZSl7cmV0dXJuW3QqKDErbyhlKSkvMiwyKihlLWcoZS8yKSldfUxlLmludmVy dD1mdW5jdGlvbih0LGUpe3ZhciByPTMqUyhlKkVlLzkpO3JldHVyblt0KkVlLyhTZSooMipv KDIqci8zKS0xKSksUygzKm0ocikqU2UvNyldfSxDZS5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2 YXIgcj1lKkwoMit3KS8oMipMKDMpKSxuPTIqUyhyKTtyZXR1cm5bMyp3KnQvKDErMipvKG4p L28obi8yKSksUygocittKG4pKS8oMStfKSldfSxQZS5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2 YXIgcj1MKDYvKDQreSkpLGk9ZS9yO3JldHVybiBuKG4oaSkteCk8diYmKGk9aTwwPy14Ongp LFsxLjUqdC8ociooLjUrbyhpKSkpLFMoKGkvMittKGkpKS8oMSt5LzQpKV19LEllLmludmVy dD1mdW5jdGlvbih0LGUpe3ZhciByLGksYSxvLHM9ZSxsPTI1O2Rve3MtPXI9KHMqKDEuMDEx ODMrKGE9KGk9cypzKSppKSphKiguMDE5MjYqaS0uMDI2MjUtLjAwMzk2KmEpKS1lKS8oMS4w MTE4MythKmEqKC4yMTE4NippLS4yMzYyNSstLjA1MTQ4KmEpKX13aGlsZShuKHIpPjFlLTEy JiYtLWw+MCk7cmV0dXJuW3QvKC44NDcxOS0uMTMwNjMqKGk9cypzKSsobz1pKihhPWkqaSkp Km8qKC4wNTQ5NCppLS4wNDUxNS0uMDIzMjYqYSsuMDAzMzEqbykpLHNdfSxPZS5pbnZlcnQ9 ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9ZS8yLGk9MCxhPTEvMDtpPDEwJiZuKGEpPnY7Kytp KXt2YXIgcz1vKGUvMik7ZS09YT0oZS1nKGUvMiktcikvKDEtLjUvKHMqcykpfXJldHVyblsy KnQvKDErbyhlKSksZV19O3ZhciB6ZT1bW1tbLTE4MCwwXSxbLTkwLDkwXSxbMCwwXV0sW1sw LDBdLFs5MCw5MF0sWzE4MCwwXV1dLFtbWy0xODAsMF0sWy05MCwtOTBdLFswLDBdXSxbWzAs MF0sWzkwLC05MF0sWzE4MCwwXV1dXTtmdW5jdGlvbiBEZSh0LGUpe3ZhciByPW0oZSksaT1v KGUpLGE9ZCh0KTtpZigwPT09dHx8bihlKT09PXgpcmV0dXJuWzAsZV07aWYoMD09PWUpcmV0 dXJuW3QsMF07aWYobih0KT09PXgpcmV0dXJuW3QqaSx4KnJdO3ZhciBzPXkvKDIqdCktMip0 L3ksbD0yKmUveSxjPSgxLWwqbCkvKHItbCksdT1zKnMsZj1jKmMsaD0xK3UvZixwPTErZi91 LGc9KHMqci9jLXMvMikvaCx2PShmKnIvdStjLzIpL3AsYj12KnYtKGYqcipyL3UrYypyLTEp L3A7cmV0dXJuW3gqKGcrTChnKmcraSppL2gpKmEpLHgqKHYrTChiPDA/MDpiKSpkKC1lKnMp KmEpXX1EZS5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgcj0odC89eCkqdCxuPXIrKGUvPXgp KmUsaT15Knk7cmV0dXJuW3Q/KG4tMStMKCgxLW4pKigxLW4pKzQqcikpLygyKnQpKng6MCxW KChmdW5jdGlvbih0KXtyZXR1cm4gbiooeSptKHQpLTIqdCkqeSs0KnQqdCooZS1tKHQpKSsy KnkqdC1pKmV9KSwwKV19O2Z1bmN0aW9uIFJlKHQsZSl7dmFyIHI9ZSplO3JldHVyblt0LGUq KDEuMDE0OCtyKnIqKC4yMzE4NStyKiguMDI0MDYqci0uMTQ0OTkpKSldfWZ1bmN0aW9uIEZl KHQsZSl7aWYobihlKTx2KXJldHVyblt0LDBdO3ZhciByPWcoZSksaT10Km0oZSk7cmV0dXJu W20oaSkvcixlKygxLW8oaSkpL3JdfWZ1bmN0aW9uIEJlKHQsZSl7dmFyIHI9amUodFsxXSx0 WzBdKSxuPWplKGVbMV0sZVswXSksaT1mdW5jdGlvbih0LGUpe3JldHVybiBhKHRbMF0qZVsx XS10WzFdKmVbMF0sdFswXSplWzBdK3RbMV0qZVsxXSl9KHIsbikscz1VZShyKS9VZShuKTty ZXR1cm4gTmUoWzEsMCx0WzBdWzBdLDAsMSx0WzBdWzFdXSxOZShbcywwLDAsMCxzLDBdLE5l KFtvKGkpLG0oaSksMCwtbShpKSxvKGkpLDBdLFsxLDAsLWVbMF1bMF0sMCwxLC1lWzBdWzFd XSkpKX1mdW5jdGlvbiBOZSh0LGUpe3JldHVyblt0WzBdKmVbMF0rdFsxXSplWzNdLHRbMF0q ZVsxXSt0WzFdKmVbNF0sdFswXSplWzJdK3RbMV0qZVs1XSt0WzJdLHRbM10qZVswXSt0WzRd KmVbM10sdFszXSplWzFdK3RbNF0qZVs0XSx0WzNdKmVbMl0rdFs0XSplWzVdK3RbNV1dfWZ1 bmN0aW9uIGplKHQsZSl7cmV0dXJuW3RbMF0tZVswXSx0WzFdLWVbMV1dfWZ1bmN0aW9uIFVl KHQpe3JldHVybiBMKHRbMF0qdFswXSt0WzFdKnRbMV0pfWZ1bmN0aW9uIFZlKHQscixpKXtm dW5jdGlvbiBhKHQsZSl7dmFyIG4saT1yKHQsZSksYT1pLnByb2plY3QoW3QqQSxlKkFdKTty ZXR1cm4obj1pLnRyYW5zZm9ybSk/W25bMF0qYVswXStuWzFdKmFbMV0rblsyXSwtKG5bM10q YVswXStuWzRdKmFbMV0rbls1XSldOihhWzFdPS1hWzFdLGEpfSFmdW5jdGlvbiB0KGUscil7 aWYoZS5lZGdlcz1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGgscj1bXSxuPXRbZS0x XSxpPTA7aTxlOysraSlyLnB1c2goW24sbj10W2ldXSk7cmV0dXJuIHJ9KGUuZmFjZSksci5m YWNlKXt2YXIgbj1lLnNoYXJlZD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcixuLGk9dC5sZW5n dGgsYT1udWxsLG89MDtvPGk7KytvKXtyPXRbb107Zm9yKHZhciBzPWUubGVuZ3RoOy0tcz49 MDspaWYobj1lW3NdLHJbMF09PT1uWzBdJiZyWzFdPT09blsxXSl7aWYoYSlyZXR1cm5bYSxy XTthPXJ9fX0oZS5mYWNlLHIuZmFjZSksaT1CZShuLm1hcChyLnByb2plY3QpLG4ubWFwKGUu cHJvamVjdCkpO2UudHJhbnNmb3JtPXIudHJhbnNmb3JtP05lKHIudHJhbnNmb3JtLGkpOmk7 Zm9yKHZhciBhPXIuZWRnZXMsbz0wLHM9YS5sZW5ndGg7bzxzOysrbylIZShuWzBdLGFbb11b MV0pJiZIZShuWzFdLGFbb11bMF0pJiYoYVtvXT1lKSxIZShuWzBdLGFbb11bMF0pJiZIZShu WzFdLGFbb11bMV0pJiYoYVtvXT1lKTtmb3IoYT1lLmVkZ2VzLG89MCxzPWEubGVuZ3RoO288 czsrK28pSGUoblswXSxhW29dWzBdKSYmSGUoblsxXSxhW29dWzFdKSYmKGFbb109ciksSGUo blswXSxhW29dWzFdKSYmSGUoblsxXSxhW29dWzBdKSYmKGFbb109cil9ZWxzZSBlLnRyYW5z Zm9ybT1yLnRyYW5zZm9ybTtlLmNoaWxkcmVuJiZlLmNoaWxkcmVuLmZvckVhY2goKGZ1bmN0 aW9uKHIpe3QocixlKX0pKTtyZXR1cm4gZX0odCx7dHJhbnNmb3JtOm51bGx9KSxxZSh0KSYm KGEuaW52ZXJ0PWZ1bmN0aW9uKGUsbil7dmFyIGk9ZnVuY3Rpb24gdChlLG4pe3ZhciBpPWUu cHJvamVjdC5pbnZlcnQsYT1lLnRyYW5zZm9ybSxvPW47YSYmKGE9ZnVuY3Rpb24odCl7dmFy IGU9MS8odFswXSp0WzRdLXRbMV0qdFszXSk7cmV0dXJuW2UqdFs0XSwtZSp0WzFdLGUqKHRb MV0qdFs1XS10WzJdKnRbNF0pLC1lKnRbM10sZSp0WzBdLGUqKHRbMl0qdFszXS10WzBdKnRb NV0pXX0oYSksbz1bYVswXSpvWzBdK2FbMV0qb1sxXSthWzJdLGFbM10qb1swXSthWzRdKm9b MV0rYVs1XV0pO2lmKGkmJmU9PT1mdW5jdGlvbih0KXtyZXR1cm4gcih0WzBdKk0sdFsxXSpN KX0ocz1pKG8pKSlyZXR1cm4gcztmb3IodmFyIHMsbD1lLmNoaWxkcmVuLGM9MCx1PWwmJmwu bGVuZ3RoO2M8dTsrK2MpaWYocz10KGxbY10sbikpcmV0dXJuIHN9KHQsW2UsLW5dKTtyZXR1 cm4gaSYmKGlbMF0qPU0saVsxXSo9TSxpKX0pO3ZhciBvPWUuZ2VvUHJvamVjdGlvbihhKSxz PW8uc3RyZWFtO3JldHVybiBvLnN0cmVhbT1mdW5jdGlvbihyKXt2YXIgaT1vLnJvdGF0ZSgp LGE9cyhyKSxsPShvLnJvdGF0ZShbMCwwXSkscyhyKSk7cmV0dXJuIG8ucm90YXRlKGkpLGEu c3BoZXJlPWZ1bmN0aW9uKCl7bC5wb2x5Z29uU3RhcnQoKSxsLmxpbmVTdGFydCgpLGZ1bmN0 aW9uIHQocixpLGEpe3ZhciBvLHMsbD1pLmVkZ2VzLGM9bC5sZW5ndGgsdT17dHlwZToiTXVs dGlQb2ludCIsY29vcmRpbmF0ZXM6aS5mYWNlfSxmPWkuZmFjZS5maWx0ZXIoKGZ1bmN0aW9u KHQpe3JldHVybiA5MCE9PW4odFsxXSl9KSksaD1lLmdlb0JvdW5kcyh7dHlwZToiTXVsdGlQ b2ludCIsY29vcmRpbmF0ZXM6Zn0pLHA9ITEsZD0tMSxtPWhbMV1bMF0taFswXVswXSxnPTE4 MD09PW18fDM2MD09PW0/WyhoWzBdWzBdK2hbMV1bMF0pLzIsKGhbMF1bMV0raFsxXVsxXSkv Ml06ZS5nZW9DZW50cm9pZCh1KTtpZihhKWZvcig7KytkPGMmJmxbZF0hPT1hOyk7KytkO2Zv cih2YXIgeT0wO3k8YzsrK3kpcz1sWyh5K2QpJWNdLEFycmF5LmlzQXJyYXkocyk/KHB8fChy LnBvaW50KChvPWUuZ2VvSW50ZXJwb2xhdGUoc1swXSxnKSh2KSlbMF0sb1sxXSkscD0hMCks ci5wb2ludCgobz1lLmdlb0ludGVycG9sYXRlKHNbMV0sZykodikpWzBdLG9bMV0pKToocD0h MSxzIT09YSYmdChyLHMsaSkpfShsLHQpLGwubGluZUVuZCgpLGwucG9seWdvbkVuZCgpfSxh fSxvLmFuZ2xlKG51bGw9PWk/LTMwOmkqQSl9ZnVuY3Rpb24gSGUodCxlKXtyZXR1cm4gdCYm ZSYmdFswXT09PWVbMF0mJnRbMV09PT1lWzFdfWZ1bmN0aW9uIHFlKHQpe3JldHVybiB0LnBy b2plY3QuaW52ZXJ0fHx0LmNoaWxkcmVuJiZ0LmNoaWxkcmVuLnNvbWUocWUpfVJlLmludmVy dD1mdW5jdGlvbih0LGUpe2U+MS43OTA4NTcxODM/ZT0xLjc5MDg1NzE4MzplPC0xLjc5MDg1 NzE4MyYmKGU9LTEuNzkwODU3MTgzKTt2YXIgcixpPWU7ZG97dmFyIGE9aSppO2ktPXI9KGkq KDEuMDE0OCthKmEqKC4yMzE4NSthKiguMDI0MDYqYS0uMTQ0OTkpKSktZSkvKDEuMDE0OCth KmEqKDUqLjIzMTg1K2EqKC4yMTY1NCphLTEuMDE0OTMpKSl9d2hpbGUobihyKT52KTtyZXR1 cm5bdCxpXX0sRmUuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7aWYobihlKTx2KXJldHVyblt0LDBd O3ZhciByLGk9dCp0K2UqZSxhPS41KmUscz0xMDtkb3t2YXIgbD1nKGEpLGM9MS9vKGEpLHU9 aS0yKmUqYSthKmE7YS09cj0obCp1KzIqKGEtZSkpLygyK3UqYypjKzIqKGEtZSkqbCl9d2hp bGUobihyKT52JiYtLXM+MCk7cmV0dXJuIGw9ZyhhKSxbKG4oZSk8bihhKzEvbCk/Uyh0Kmwp OmQoZSkqZCh0KSooRShuKHQqbCkpK3gpKS9tKGEpLGFdfTt2YXIgR2U9W1swLDkwXSxbLTkw LDBdLFswLDBdLFs5MCwwXSxbMTgwLDBdLFswLC05MF1dLFllPVtbMCwyLDFdLFswLDMsMl0s WzUsMSwyXSxbNSwyLDNdLFswLDEsNF0sWzAsNCwzXSxbNSw0LDFdLFs1LDMsNF1dLm1hcCgo ZnVuY3Rpb24odCl7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gR2VbdF19KSl9 KSk7dmFyIFdlPTIvTCgzKTtmdW5jdGlvbiBYZSh0LGUpe3ZhciByPWx0KHQsZSk7cmV0dXJu W3JbMF0qV2UsclsxXV19ZnVuY3Rpb24gWmUodCxlKXtmb3IodmFyIHI9MCxuPXQubGVuZ3Ro LGk9MDtyPG47KytyKWkrPXRbcl0qZVtyXTtyZXR1cm4gaX1mdW5jdGlvbiBKZSh0KXtyZXR1 cm5bYSh0WzFdLHRbMF0pKkEsUyh1KC0xLGYoMSx0WzJdKSkpKkFdfWZ1bmN0aW9uIEtlKHQp e3ZhciBlPXRbMF0qTSxyPXRbMV0qTSxuPW8ocik7cmV0dXJuW24qbyhlKSxuKm0oZSksbShy KV19ZnVuY3Rpb24gUWUoKXt9ZnVuY3Rpb24gJGUodCxlKXtyZXR1cm57dHlwZToiRmVhdHVy ZUNvbGxlY3Rpb24iLGZlYXR1cmVzOnQuZmVhdHVyZXMubWFwKChmdW5jdGlvbih0KXtyZXR1 cm4gdHIodCxlKX0pKX19ZnVuY3Rpb24gdHIodCxlKXtyZXR1cm57dHlwZToiRmVhdHVyZSIs aWQ6dC5pZCxwcm9wZXJ0aWVzOnQucHJvcGVydGllcyxnZW9tZXRyeTplcih0Lmdlb21ldHJ5 LGUpfX1mdW5jdGlvbiBlcih0LHIpe2lmKCF0KXJldHVybiBudWxsO2lmKCJHZW9tZXRyeUNv bGxlY3Rpb24iPT09dC50eXBlKXJldHVybiBmdW5jdGlvbih0LGUpe3JldHVybnt0eXBlOiJH ZW9tZXRyeUNvbGxlY3Rpb24iLGdlb21ldHJpZXM6dC5nZW9tZXRyaWVzLm1hcCgoZnVuY3Rp b24odCl7cmV0dXJuIGVyKHQsZSl9KSl9fSh0LHIpO3ZhciBuO3N3aXRjaCh0LnR5cGUpe2Nh c2UiUG9pbnQiOmNhc2UiTXVsdGlQb2ludCI6bj1pcjticmVhaztjYXNlIkxpbmVTdHJpbmci OmNhc2UiTXVsdGlMaW5lU3RyaW5nIjpuPWFyO2JyZWFrO2Nhc2UiUG9seWdvbiI6Y2FzZSJN dWx0aVBvbHlnb24iOmNhc2UiU3BoZXJlIjpuPW9yO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIG51 bGx9cmV0dXJuIGUuZ2VvU3RyZWFtKHQscihuKSksbi5yZXN1bHQoKX1YZS5pbnZlcnQ9ZnVu Y3Rpb24odCxlKXtyZXR1cm4gbHQuaW52ZXJ0KHQvV2UsZSl9O3ZhciBycj1bXSxucj1bXSxp cj17cG9pbnQ6ZnVuY3Rpb24odCxlKXtyci5wdXNoKFt0LGVdKX0scmVzdWx0OmZ1bmN0aW9u KCl7dmFyIHQ9cnIubGVuZ3RoP3JyLmxlbmd0aDwyP3t0eXBlOiJQb2ludCIsY29vcmRpbmF0 ZXM6cnJbMF19Ont0eXBlOiJNdWx0aVBvaW50Iixjb29yZGluYXRlczpycn06bnVsbDtyZXR1 cm4gcnI9W10sdH19LGFyPXtsaW5lU3RhcnQ6UWUscG9pbnQ6ZnVuY3Rpb24odCxlKXtyci5w dXNoKFt0LGVdKX0sbGluZUVuZDpmdW5jdGlvbigpe3JyLmxlbmd0aCYmKG5yLnB1c2gocnIp LHJyPVtdKX0scmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9bnIubGVuZ3RoP25yLmxlbmd0aDwy P3t0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczpuclswXX06e3R5cGU6Ik11bHRpTGlu ZVN0cmluZyIsY29vcmRpbmF0ZXM6bnJ9Om51bGw7cmV0dXJuIG5yPVtdLHR9fSxvcj17cG9s eWdvblN0YXJ0OlFlLGxpbmVTdGFydDpRZSxwb2ludDpmdW5jdGlvbih0LGUpe3JyLnB1c2go W3QsZV0pfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9cnIubGVuZ3RoO2lmKHQpe2Rve3Jy LnB1c2gocnJbMF0uc2xpY2UoKSl9d2hpbGUoKyt0PDQpO25yLnB1c2gocnIpLHJyPVtdfX0s cG9seWdvbkVuZDpRZSxyZXN1bHQ6ZnVuY3Rpb24oKXtpZighbnIubGVuZ3RoKXJldHVybiBu dWxsO3ZhciB0PVtdLGU9W107cmV0dXJuIG5yLmZvckVhY2goKGZ1bmN0aW9uKHIpeyFmdW5j dGlvbih0KXtpZigoZT10Lmxlbmd0aCk8NClyZXR1cm4hMTtmb3IodmFyIGUscj0wLG49dFtl LTFdWzFdKnRbMF1bMF0tdFtlLTFdWzBdKnRbMF1bMV07KytyPGU7KW4rPXRbci0xXVsxXSp0 W3JdWzBdLXRbci0xXVswXSp0W3JdWzFdO3JldHVybiBuPD0wfShyKT9lLnB1c2gocik6dC5w dXNoKFtyXSl9KSksZS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgcj1lWzBdO3Quc29tZSgo ZnVuY3Rpb24odCl7aWYoZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9ZVswXSxuPWVbMV0saT0h MSxhPTAsbz10Lmxlbmd0aCxzPW8tMTthPG87cz1hKyspe3ZhciBsPXRbYV0sYz1sWzBdLHU9 bFsxXSxmPXRbc10saD1mWzBdLHA9ZlsxXTt1Pm5ecD5uJiZyPChoLWMpKihuLXUpLyhwLXUp K2MmJihpPSFpKX1yZXR1cm4gaX0odFswXSxyKSlyZXR1cm4gdC5wdXNoKGUpLCEwfSkpfHx0 LnB1c2goW2VdKX0pKSxucj1bXSx0Lmxlbmd0aD90Lmxlbmd0aD4xP3t0eXBlOiJNdWx0aVBv bHlnb24iLGNvb3JkaW5hdGVzOnR9Ont0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczp0WzBd fTpudWxsfX07ZnVuY3Rpb24gc3IodCl7dmFyIHI9dCh4LDApWzBdLXQoLXgsMClbMF07ZnVu Y3Rpb24gaShlLGkpe3ZhciBhPW4oZSk8eCxvPXQoYT9lOmU+MD9lLXk6ZSt5LGkpLHM9KG9b MF0tb1sxXSkqXyxsPShvWzBdK29bMV0pKl87aWYoYSlyZXR1cm5bcyxsXTt2YXIgYz1yKl8s dT1zPjBebD4wPy0xOjE7cmV0dXJuW3Uqcy1kKGwpKmMsdSpsLWQocykqY119cmV0dXJuIHQu aW52ZXJ0JiYoaS5pbnZlcnQ9ZnVuY3Rpb24oZSxpKXt2YXIgYT0oZStpKSpfLG89KGktZSkq XyxzPW4oYSk8LjUqciYmbihvKTwuNSpyO2lmKCFzKXt2YXIgbD1yKl8sYz1hPjBebz4wPy0x OjEsdT0tYyplKyhvPjA/MTotMSkqbCxmPS1jKmkrKGE+MD8xOi0xKSpsO2E9KC11LWYpKl8s bz0odS1mKSpffXZhciBoPXQuaW52ZXJ0KGEsbyk7cmV0dXJuIHN8fChoWzBdKz1hPjA/eTot eSksaH0pLGUuZ2VvUHJvamVjdGlvbihpKS5yb3RhdGUoWy05MCwtOTAsNDVdKS5jbGlwQW5n bGUoMTc5Ljk5OSl9ZnVuY3Rpb24gbHIoKXtyZXR1cm4gc3IoVXQpLnNjYWxlKDExMS40OCl9 ZnVuY3Rpb24gY3IodCl7dmFyIGU9bSh0KTtmdW5jdGlvbiByKHIsbil7dmFyIGE9ZT9nKHIq ZS8yKS9lOnIvMjtpZighbilyZXR1cm5bMiphLC10XTt2YXIgcz0yKmkoYSptKG4pKSxsPTEv ZyhuKTtyZXR1cm5bbShzKSpsLG4rKDEtbyhzKSkqbC10XX1yZXR1cm4gci5pbnZlcnQ9ZnVu Y3Rpb24ocixhKXtpZihuKGErPXQpPHYpcmV0dXJuW2U/MippKGUqci8yKS9lOnIsMF07dmFy IHMsbD1yKnIrYSphLGM9MCx1PTEwO2Rve3ZhciBmPWcoYyksaD0xL28oYykscD1sLTIqYSpj K2MqYztjLT1zPShmKnArMiooYy1hKSkvKDIrcCpoKmgrMiooYy1hKSpmKX13aGlsZShuKHMp PnYmJi0tdT4wKTt2YXIgZD1yKihmPWcoYykpLHg9ZyhuKGEpPG4oYysxL2YpPy41KlMoZCk6 LjUqRShkKSt5LzQpL20oYyk7cmV0dXJuW2U/MippKGUqeCkvZToyKngsY119LHJ9dmFyIHVy PVtbLjk5ODYsLS4wNjJdLFsxLDBdLFsuOTk4NiwuMDYyXSxbLjk5NTQsLjEyNF0sWy45OSwu MTg2XSxbLjk4MjIsLjI0OF0sWy45NzMsLjMxXSxbLjk2LC4zNzJdLFsuOTQyNywuNDM0XSxb LjkyMTYsLjQ5NThdLFsuODk2MiwuNTU3MV0sWy44Njc5LC42MTc2XSxbLjgzNSwuNjc2OV0s Wy43OTg2LC43MzQ2XSxbLjc1OTcsLjc5MDNdLFsuNzE4NiwuODQzNV0sWy42NzMyLC44OTM2 XSxbLjYyMTMsLjkzOTRdLFsuNTcyMiwuOTc2MV0sWy41MzIyLDFdXTtmdW5jdGlvbiBmcih0 LGUpe3ZhciByLGk9ZigxOCwzNipuKGUpL3kpLGE9bChpKSxvPWktYSxzPShyPXVyW2FdKVsw XSxjPXJbMV0sdT0ocj11clsrK2FdKVswXSxoPXJbMV0scD0ocj11cltmKDE5LCsrYSldKVsw XSxkPXJbMV07cmV0dXJuW3QqKHUrbyoocC1zKS8yK28qbyoocC0yKnUrcykvMiksKGU+MD94 Oi14KSooaCtvKihkLWMpLzIrbypvKihkLTIqaCtjKS8yKV19ZnVuY3Rpb24gaHIodCxlKXt2 YXIgcj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUscil7dmFyIG49byhyKSxpPSh0LTEpLyh0 LW4qbyhlKSk7cmV0dXJuW2kqbiptKGUpLGkqbShyKV19cmV0dXJuIGUuaW52ZXJ0PWZ1bmN0 aW9uKGUscil7dmFyIG49ZSplK3IqcixpPUwobiksbz0odC1MKDEtbioodCsxKS8odC0xKSkp LygodC0xKS9pK2kvKHQtMSkpO3JldHVyblthKGUqbyxpKkwoMS1vKm8pKSxpP1MocipvL2kp OjBdfSxlfSh0KTtpZighZSlyZXR1cm4gcjt2YXIgbj1vKGUpLGk9bShlKTtmdW5jdGlvbiBz KGUsYSl7dmFyIG89cihlLGEpLHM9b1sxXSxsPXMqaS8odC0xKStuO3JldHVybltvWzBdKm4v bCxzL2xdfXJldHVybiBzLmludmVydD1mdW5jdGlvbihlLGEpe3ZhciBvPSh0LTEpLyh0LTEt YSppKTtyZXR1cm4gci5pbnZlcnQobyplLG8qYSpuKX0sc311ci5mb3JFYWNoKChmdW5jdGlv bih0KXt0WzFdKj0xLjAxNDR9KSksZnIuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS94 LGk9OTAqcixhPWYoMTgsbihpLzUpKSxvPXUoMCxsKGEpKTtkb3t2YXIgcz11cltvXVsxXSxj PXVyW28rMV1bMV0saD11cltmKDE5LG8rMildWzFdLHA9aC1zLGQ9aC0yKmMrcyxtPTIqKG4o ciktYykvcCxnPWQvcCx2PW0qKDEtZyptKigxLTIqZyptKSk7aWYodj49MHx8MT09PW8pe2k9 KGU+PTA/NTotNSkqKHYrYSk7dmFyIHksYj01MDtkb3t2PShhPWYoMTgsbihpKS81KSktKG89 bChhKSkscz11cltvXVsxXSxjPXVyW28rMV1bMV0saD11cltmKDE5LG8rMildWzFdLGktPSh5 PShlPj0wP3g6LXgpKihjK3YqKGgtcykvMit2KnYqKGgtMipjK3MpLzIpLWUpKkF9d2hpbGUo bih5KT4xZS0xMiYmLS1iPjApO2JyZWFrfX13aGlsZSgtLW8+PTApO3ZhciBfPXVyW29dWzBd LHc9dXJbbysxXVswXSxUPXVyW2YoMTksbysyKV1bMF07cmV0dXJuW3QvKHcrdiooVC1fKS8y K3YqdiooVC0yKncrXykvMiksaSpNXX07dmFyIHByPS0xNzkuOTk5OSxkcj0xNzkuOTk5OSxt cj0tODkuOTk5OTtmdW5jdGlvbiBncih0KXtyZXR1cm4gdC5sZW5ndGg+MH1mdW5jdGlvbiB2 cih0KXtyZXR1cm4tOTA9PT10fHw5MD09PXQ/WzAsdF06Wy0xODAsKGU9dCxNYXRoLmZsb29y KDFlNCplKS8xZTQpXTt2YXIgZX1mdW5jdGlvbiB5cih0KXt2YXIgZT10WzBdLHI9dFsxXSxu PSExO3JldHVybiBlPD1wcj8oZT0tMTgwLG49ITApOmU+PWRyJiYoZT0xODAsbj0hMCkscjw9 bXI/KHI9LTkwLG49ITApOnI+PTg5Ljk5OTkmJihyPTkwLG49ITApLG4/W2Uscl06dH1mdW5j dGlvbiB4cih0KXtyZXR1cm4gdC5tYXAoeXIpfWZ1bmN0aW9uIGJyKHQsZSxyKXtmb3IodmFy IG49MCxpPXQubGVuZ3RoO248aTsrK24pe3ZhciBhPXRbbl0uc2xpY2UoKTtyLnB1c2goe2lu ZGV4Oi0xLHBvbHlnb246ZSxyaW5nOmF9KTtmb3IodmFyIG89MCxzPWEubGVuZ3RoO288czsr K28pe3ZhciBsPWFbb10sYz1sWzBdLHU9bFsxXTtpZihjPD1wcnx8Yz49ZHJ8fHU8PW1yfHx1 Pj04OS45OTk5KXthW29dPXlyKGwpO2Zvcih2YXIgZj1vKzE7ZjxzOysrZil7dmFyIGg9YVtm XSxwPWhbMF0sZD1oWzFdO2lmKHA+cHImJnA8ZHImJmQ+bXImJmQ8ODkuOTk5OSlicmVha31p ZihmPT09bysxKWNvbnRpbnVlO2lmKG8pe3ZhciBtPXtpbmRleDotMSxwb2x5Z29uOmUscmlu ZzphLnNsaWNlKDAsbysxKX07bS5yaW5nW20ucmluZy5sZW5ndGgtMV09dnIodSkscltyLmxl bmd0aC0xXT1tfWVsc2Ugci5wb3AoKTtpZihmPj1zKWJyZWFrO3IucHVzaCh7aW5kZXg6LTEs cG9seWdvbjplLHJpbmc6YT1hLnNsaWNlKGYtMSl9KSxhWzBdPXZyKGFbMF1bMV0pLG89LTEs cz1hLmxlbmd0aH19fX1mdW5jdGlvbiBfcih0KXt2YXIgZSxyLG4saSxhLG8scz10Lmxlbmd0 aCxsPXt9LGM9e307Zm9yKGU9MDtlPHM7KytlKW49KHI9dFtlXSkucmluZ1swXSxhPXIucmlu Z1tyLnJpbmcubGVuZ3RoLTFdLG5bMF0hPT1hWzBdfHxuWzFdIT09YVsxXT8oci5pbmRleD1l LGxbbl09Y1thXT1yKTooci5wb2x5Z29uLnB1c2goci5yaW5nKSx0W2VdPW51bGwpO2Zvcihl PTA7ZTxzOysrZSlpZihyPXRbZV0pe2lmKG49ci5yaW5nWzBdLGE9ci5yaW5nW3IucmluZy5s ZW5ndGgtMV0saT1jW25dLG89bFthXSxkZWxldGUgbFtuXSxkZWxldGUgY1thXSxuWzBdPT09 YVswXSYmblsxXT09PWFbMV0pe3IucG9seWdvbi5wdXNoKHIucmluZyk7Y29udGludWV9aT8o ZGVsZXRlIGNbbl0sZGVsZXRlIGxbaS5yaW5nWzBdXSxpLnJpbmcucG9wKCksdFtpLmluZGV4 XT1udWxsLHI9e2luZGV4Oi0xLHBvbHlnb246aS5wb2x5Z29uLHJpbmc6aS5yaW5nLmNvbmNh dChyLnJpbmcpfSxpPT09bz9yLnBvbHlnb24ucHVzaChyLnJpbmcpOihyLmluZGV4PXMrKyx0 LnB1c2gobFtyLnJpbmdbMF1dPWNbci5yaW5nW3IucmluZy5sZW5ndGgtMV1dPXIpKSk6bz8o ZGVsZXRlIGxbYV0sZGVsZXRlIGNbby5yaW5nW28ucmluZy5sZW5ndGgtMV1dLHIucmluZy5w b3AoKSxyPXtpbmRleDpzKysscG9seWdvbjpvLnBvbHlnb24scmluZzpyLnJpbmcuY29uY2F0 KG8ucmluZyl9LHRbby5pbmRleF09bnVsbCx0LnB1c2gobFtyLnJpbmdbMF1dPWNbci5yaW5n W3IucmluZy5sZW5ndGgtMV1dPXIpKTooci5yaW5nLnB1c2goci5yaW5nWzBdKSxyLnBvbHln b24ucHVzaChyLnJpbmcpKX19ZnVuY3Rpb24gd3IodCl7dmFyIGU9e3R5cGU6IkZlYXR1cmUi LGdlb21ldHJ5OlRyKHQuZ2VvbWV0cnkpfTtyZXR1cm4gbnVsbCE9dC5pZCYmKGUuaWQ9dC5p ZCksbnVsbCE9dC5iYm94JiYoZS5iYm94PXQuYmJveCksbnVsbCE9dC5wcm9wZXJ0aWVzJiYo ZS5wcm9wZXJ0aWVzPXQucHJvcGVydGllcyksZX1mdW5jdGlvbiBUcih0KXtpZihudWxsPT10 KXJldHVybiB0O3ZhciBlLHIsbixpO3N3aXRjaCh0LnR5cGUpe2Nhc2UiR2VvbWV0cnlDb2xs ZWN0aW9uIjplPXt0eXBlOiJHZW9tZXRyeUNvbGxlY3Rpb24iLGdlb21ldHJpZXM6dC5nZW9t ZXRyaWVzLm1hcChUcil9O2JyZWFrO2Nhc2UiUG9pbnQiOmU9e3R5cGU6IlBvaW50Iixjb29y ZGluYXRlczp5cih0LmNvb3JkaW5hdGVzKX07YnJlYWs7Y2FzZSJNdWx0aVBvaW50IjpjYXNl IkxpbmVTdHJpbmciOmU9e3R5cGU6dC50eXBlLGNvb3JkaW5hdGVzOnhyKHQuY29vcmRpbmF0 ZXMpfTticmVhaztjYXNlIk11bHRpTGluZVN0cmluZyI6ZT17dHlwZToiTXVsdGlMaW5lU3Ry aW5nIixjb29yZGluYXRlczp0LmNvb3JkaW5hdGVzLm1hcCh4cil9O2JyZWFrO2Nhc2UiUG9s eWdvbiI6dmFyIGE9W107YnIodC5jb29yZGluYXRlcyxhLHI9W10pLF9yKHIpLGU9e3R5cGU6 IlBvbHlnb24iLGNvb3JkaW5hdGVzOmF9O2JyZWFrO2Nhc2UiTXVsdGlQb2x5Z29uIjpyPVtd LG49LTEsaT10LmNvb3JkaW5hdGVzLmxlbmd0aDtmb3IodmFyIG89bmV3IEFycmF5KGkpOysr bjxpOylicih0LmNvb3JkaW5hdGVzW25dLG9bbl09W10scik7X3IociksZT17dHlwZToiTXVs dGlQb2x5Z29uIixjb29yZGluYXRlczpvLmZpbHRlcihncil9O2JyZWFrO2RlZmF1bHQ6cmV0 dXJuIHR9cmV0dXJuIG51bGwhPXQuYmJveCYmKGUuYmJveD10LmJib3gpLGV9ZnVuY3Rpb24g a3IodCxlKXt2YXIgcj1nKGUvMiksbj1tKGIqcik7cmV0dXJuW3QqKC43NDQ4Mi0uMzQ1ODgq bipuKSwxLjcwNzExKnJdfWZ1bmN0aW9uIEFyKHQscixuKXt2YXIgaT1lLmdlb0ludGVycG9s YXRlKHIsbiksYT1pKC41KSxvPWUuZ2VvUm90YXRpb24oWy1hWzBdLC1hWzFdXSkocikscz1p LmRpc3RhbmNlLzIsbD0tUyhtKG9bMV0qTSkvbShzKSksYz1bLWFbMF0sLWFbMV0sLShvWzBd PjA/eS1sOmwpKkFdLHU9ZS5nZW9Qcm9qZWN0aW9uKHQocykpLnJvdGF0ZShjKSxmPWUuZ2Vv Um90YXRpb24oYyksaD11LmNlbnRlcjtyZXR1cm4gZGVsZXRlIHUucm90YXRlLHUuY2VudGVy PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2goZih0KSk6Zi5pbnZlcnQo aCgpKX0sdS5jbGlwQW5nbGUoOTApfWZ1bmN0aW9uIE1yKHQpe3ZhciByPW8odCk7ZnVuY3Rp b24gbih0LG4pe3ZhciBpPWUuZ2VvR25vbW9uaWNSYXcodCxuKTtyZXR1cm4gaVswXSo9cixp fXJldHVybiBuLmludmVydD1mdW5jdGlvbih0LG4pe3JldHVybiBlLmdlb0dub21vbmljUmF3 LmludmVydCh0L3Isbil9LG59ZnVuY3Rpb24gU3IodCxlKXtyZXR1cm4gQXIoTXIsdCxlKX1m dW5jdGlvbiBFcih0KXtpZighKHQqPTIpKXJldHVybiBlLmdlb0F6aW11dGhhbEVxdWlkaXN0 YW50UmF3O3ZhciByPS10LzIsbj0tcixpPXQqdCxzPWcobiksbD0uNS9tKG4pO2Z1bmN0aW9u IGMoZSxhKXt2YXIgcz1FKG8oYSkqbyhlLXIpKSxsPUUobyhhKSpvKGUtbikpO3JldHVyblso KHMqPXMpLShsKj1sKSkvKDIqdCksKGE8MD8tMToxKSpMKDQqaSpsLShpLXMrbCkqKGktcyts KSkvKDIqdCldfXJldHVybiBjLmludmVydD1mdW5jdGlvbih0LGUpe3ZhciBpLGMsdT1lKmUs Zj1vKEwodSsoaT10K3IpKmkpKSxoPW8oTCh1KyhpPXQrbikqaSkpO3JldHVyblthKGM9Zi1o LGk9KGYraCkqcyksKGU8MD8tMToxKSpFKEwoaSppK2MqYykqbCldfSxjfWZ1bmN0aW9uIExy KHQsZSl7cmV0dXJuIEFyKEVyLHQsZSl9ZnVuY3Rpb24gQ3IodCxlKXtpZihuKGUpPHYpcmV0 dXJuW3QsMF07dmFyIHI9bihlL3gpLGk9UyhyKTtpZihuKHQpPHZ8fG4obihlKS14KTx2KXJl dHVyblswLGQoZSkqeSpnKGkvMildO3ZhciBhPW8oaSkscz1uKHkvdC10L3kpLzIsbD1zKnMs Yz1hLyhyK2EtMSksdT1jKigyL3ItMSksZj11KnUsaD1mK2wscD1jLWYsbT1sK2M7cmV0dXJu W2QodCkqeSoocypwK0wobCpwKnAtaCooYypjLWYpKSkvaCxkKGUpKnkqKHUqbS1zKkwoKGwr MSkqaC1tKm0pKS9oXX1mdW5jdGlvbiBQcih0LGUpe2lmKG4oZSk8dilyZXR1cm5bdCwwXTt2 YXIgcj1uKGUveCksaT1TKHIpO2lmKG4odCk8dnx8bihuKGUpLXgpPHYpcmV0dXJuWzAsZChl KSp5KmcoaS8yKV07dmFyIGE9byhpKSxzPW4oeS90LXQveSkvMixsPXMqcyxjPWEqKEwoMSts KS1zKmEpLygxK2wqcipyKTtyZXR1cm5bZCh0KSp5KmMsZChlKSp5KkwoMS1jKigyKnMrYykp XX1mdW5jdGlvbiBJcih0LGUpe2lmKG4oZSk8dilyZXR1cm5bdCwwXTt2YXIgcj1lL3gsaT1T KHIpO2lmKG4odCk8dnx8bihuKGUpLXgpPHYpcmV0dXJuWzAseSpnKGkvMildO3ZhciBhPSh5 L3QtdC95KS8yLHM9ci8oMStvKGkpKTtyZXR1cm5beSooZCh0KSpMKGEqYSsxLXMqcyktYSks eSpzXX1mdW5jdGlvbiBPcih0LGUpe2lmKCFlKXJldHVyblt0LDBdO3ZhciByPW4oZSk7aWYo IXR8fHI9PT14KXJldHVyblswLGVdO3ZhciBpPXIveCxhPWkqaSxvPSg4KmktYSooYSsyKS01 KS8oMiphKihpLTEpKSxzPW8qbyxsPWkqbyxjPWErcysyKmwsdT1pKzMqbyxmPXQveCxoPWYr MS9mLHA9ZChuKHQpLXgpKkwoaCpoLTQpLG09cCpwLGc9KHAqKGMrcy0xKSsyKkwoYyooYStz Km0tMSkrKDEtYSkqKGEqKHUqdSs0KnMpKzEyKmwqcys0KnMqcykpKS8oNCpjK20pO3JldHVy bltkKHQpKngqZyxkKGUpKngqTCgxK3AqbihnKS1nKmcpXX1mdW5jdGlvbiB6cih0LGUscixu KXt2YXIgaT15LzM7dD11KHQsdiksZT11KGUsdiksdD1mKHQseCksZT1mKGUseS12KSxyPXUo ciwwKSxyPWYociwxMDAtdik7dmFyIHM9KG49dShuLHYpKS8xMDAsbD1FKChyLzEwMCsxKSpv KGkpKS9pLGM9bSh0KS9tKGwqeCksaD1lL3kscD1MKHMqbSh0LzIpL20oZS8yKSk7cmV0dXJu IGZ1bmN0aW9uKHQsZSxyLG4saSl7ZnVuY3Rpb24gcyhhLHMpe3ZhciBsPXIqbShuKnMpLGM9 TCgxLWwqbCksdT1MKDIvKDErYypvKGEqPWkpKSk7cmV0dXJuW3QqYyp1Km0oYSksZSpsKnVd fXJldHVybiBzLmludmVydD1mdW5jdGlvbihvLHMpe3ZhciBsPW8vdCxjPXMvZSx1PUwobCps K2MqYyksZj0yKlModS8yKTtyZXR1cm5bYShvKmcoZiksdCp1KS9pLHUmJlMocyptKGYpLyhl KnIqdSkpL25dfSxzfShwL0woaCpjKmwpLDEvKHAqTChoKmMqbCkpLGMsbCxoKX1mdW5jdGlv biBEcigpe3ZhciB0PTY1Kk0scj02MCpNLG49MjAsaT0yMDAsYT1lLmdlb1Byb2plY3Rpb25N dXRhdG9yKHpyKSxvPWEodCxyLG4saSk7cmV0dXJuIG8ucG9sZWxpbmU9ZnVuY3Rpb24oZSl7 cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/YSh0PStlKk0scixuLGkpOnQqQX0sby5wYXJhbGxl bHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/YSh0LHI9K2UqTSxuLGkp OnIqQX0sby5pbmZsYXRpb249ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ YSh0LHIsbj0rZSxpKTpufSxvLnJhdGlvPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu bGVuZ3RoP2EodCxyLG4saT0rZSk6aX0sby5zY2FsZSgxNjMuNzc1KX1rci5pbnZlcnQ9ZnVu Y3Rpb24odCxlKXt2YXIgcj1lLzEuNzA3MTEsbj1tKGIqcik7cmV0dXJuW3QvKC43NDQ4Mi0u MzQ1ODgqbipuKSwyKmkocildfSxDci5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtpZihuKGUpPHYp cmV0dXJuW3QsMF07aWYobih0KTx2KXJldHVyblswLHgqbSgyKmkoZS95KSldO3ZhciByPSh0 Lz15KSp0LGE9KGUvPXkpKmUscz1yK2EsbD1zKnMsYz0tbihlKSooMStzKSx1PWMtMiphK3Is Zj0tMipjKzErMiphK2wsaD1hL2YrKDIqdSp1KnUvKGYqZipmKS05KmMqdS8oZipmKSkvMjcs cD0oYy11KnUvKDMqZikpL2YsZz0yKkwoLXAvMyksYj1FKDMqaC8ocCpnKSkvMztyZXR1cm5b eSoocy0xK0woMSsyKihyLWEpK2wpKS8oMip0KSxkKGUpKnkqKC1nKm8oYit5LzMpLXUvKDMq ZikpXX0sUHIuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7aWYoIXQpcmV0dXJuWzAseCptKDIqaShl L3kpKV07dmFyIHI9bih0L3kpLG89KDEtcipyLShlLz15KSplKS8oMipyKSxzPUwobypvKzEp O3JldHVybltkKHQpKnkqKHMtbyksZChlKSp4Km0oMiphKEwoKDEtMipvKnIpKihvK3MpLXIp LEwocytvK3IpKSldfSxJci5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtpZighZSlyZXR1cm5bdCww XTt2YXIgcj1lL3ksbj0oeSp5KigxLXIqciktdCp0KS8oMip5KnQpO3JldHVyblt0P3kqKGQo dCkqTChuKm4rMSktbik6MCx4Km0oMippKHIpKV19LE9yLmludmVydD1mdW5jdGlvbih0LGUp e3ZhciByO2lmKCF0fHwhZSlyZXR1cm5bdCxlXTtlLz15O3ZhciBpPWQodCkqdC94LGE9KGkq aS0xKzQqZSplKS9uKGkpLG89YSphLHM9MiplLGw9NTA7ZG97dmFyIGM9cypzLHU9KDgqcy1j KihjKzIpLTUpLygyKmMqKHMtMSkpLGY9KDMqcy1jKnMtMTApLygyKmMqcyksaD11KnUscD1z KnUsbT1zK3UsZz1tKm0sYj1zKzMqdSxfPS0yKm0qKDQqcCpoKygxLTQqYyszKmMqYykqKDEr ZikraCooMTQqYy02LW8rKDgqYy04LTIqbykqZikrcCooMTIqYy04KygxMCpjLTEwLW8pKmYp KSx3PUwoZyooYytoKm8tMSkrKDEtYykqKGMqKGIqYis0KmgpK2gqKDEyKnArNCpoKSkpO3Mt PXI9KGEqKGcraC0xKSsyKnctaSooNCpnK28pKS8oYSooMip1KmYrMiptKigxK2YpKStfL3ct OCptKihhKigtMStoK2cpKzIqdykqKDErZikvKG8rNCpnKSl9d2hpbGUocj52JiYtLWw+MCk7 cmV0dXJuW2QodCkqKEwoYSphKzQpK2EpKnkvNCx4KnNdfTt2YXIgUnI9NCp5KzMqTCgzKSxG cj0yKkwoMip5KkwoMykvUnIpLEJyPVkoRnIqTCgzKS95LEZyLFJyLzYpO2Z1bmN0aW9uIE5y KHQsZSl7cmV0dXJuW3QqTCgxLTMqZSplLyh5KnkpKSxlXX1mdW5jdGlvbiBqcih0LGUpe3Zh ciByPW8oZSksbj1vKHQpKnIsaT0xLW4scz1vKHQ9YShtKHQpKnIsLW0oZSkpKSxsPW0odCk7 cmV0dXJuW2wqKHI9TCgxLW4qbikpLXMqaSwtcypyLWwqaV19ZnVuY3Rpb24gVXIodCxlKXt2 YXIgcj1PKHQsZSk7cmV0dXJuWyhyWzBdK3QveCkvMiwoclsxXStlKS8yXX1Oci5pbnZlcnQ9 ZnVuY3Rpb24odCxlKXtyZXR1cm5bdC9MKDEtMyplKmUvKHkqeSkpLGVdfSxqci5pbnZlcnQ9 ZnVuY3Rpb24odCxlKXt2YXIgcj0odCp0K2UqZSkvLTIsbj1MKC1yKigyK3IpKSxpPWUqcit0 Km4sbz10KnItZSpuLHM9TChvKm8raSppKTtyZXR1cm5bYShuKmkscyooMStyKSkscz8tUyhu Km8vcyk6MF19LFVyLmludmVydD1mdW5jdGlvbih0LGUpe3ZhciByPXQsaT1lLGE9MjU7ZG97 dmFyIHMsbD1vKGkpLGM9bShpKSx1PW0oMippKSxmPWMqYyxoPWwqbCxwPW0ociksZD1vKHIv MiksZz1tKHIvMikseT1nKmcsYj0xLWgqZCpkLF89Yj9FKGwqZCkqTChzPTEvYik6cz0wLHc9 LjUqKDIqXypsKmcrci94KS10LFQ9LjUqKF8qYytpKS1lLGs9LjUqcyooaCp5K18qbCpkKmYp Ky41L3gsQT1zKihwKnUvNC1fKmMqZyksTT0uMTI1KnMqKHUqZy1fKmMqaCpwKSxTPS41KnMq KGYqZCtfKnkqbCkrLjUsQz1BKk0tUyprLFA9KFQqQS13KlMpL0MsST0odypNLVQqaykvQzty LT1QLGktPUl9d2hpbGUoKG4oUCk+dnx8bihJKT52KSYmLS1hPjApO3JldHVybltyLGldfSx0 Lmdlb05hdHVyYWxFYXJ0aD1lLmdlb05hdHVyYWxFYXJ0aDEsdC5nZW9OYXR1cmFsRWFydGhS YXc9ZS5nZW9OYXR1cmFsRWFydGgxUmF3LHQuZ2VvQWlyeT1mdW5jdGlvbigpe3ZhciB0PXgs cj1lLmdlb1Byb2plY3Rpb25NdXRhdG9yKEkpLG49cih0KTtyZXR1cm4gbi5yYWRpdXM9ZnVu Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/cih0PWUqTSk6dCpBfSxuLnNjYWxl KDE3OS45NzYpLmNsaXBBbmdsZSgxNDcpfSx0Lmdlb0FpcnlSYXc9SSx0Lmdlb0FpdG9mZj1m dW5jdGlvbigpe3JldHVybiBlLmdlb1Byb2plY3Rpb24oTykuc2NhbGUoMTUyLjYzKX0sdC5n ZW9BaXRvZmZSYXc9Tyx0Lmdlb0FybWFkaWxsbz1mdW5jdGlvbigpe3ZhciB0PTIwKk0scj10 Pj0wPzE6LTEsbj1nKHIqdCksaT1lLmdlb1Byb2plY3Rpb25NdXRhdG9yKHopLHM9aSh0KSxs PXMuc3RyZWFtO3JldHVybiBzLnBhcmFsbGVsPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu dHMubGVuZ3RoPyhuPWcoKHI9KHQ9ZSpNKT49MD8xOi0xKSp0KSxpKHQpKTp0KkF9LHMuc3Ry ZWFtPWZ1bmN0aW9uKGUpe3ZhciBpPXMucm90YXRlKCksYz1sKGUpLHU9KHMucm90YXRlKFsw LDBdKSxsKGUpKSxmPXMucHJlY2lzaW9uKCk7cmV0dXJuIHMucm90YXRlKGkpLGMuc3BoZXJl PWZ1bmN0aW9uKCl7dS5wb2x5Z29uU3RhcnQoKSx1LmxpbmVTdGFydCgpO2Zvcih2YXIgZT0t MTgwKnI7ciplPDE4MDtlKz05MCpyKXUucG9pbnQoZSw5MCpyKTtpZih0KWZvcig7ciooZS09 MypyKmYpPj0tMTgwOyl1LnBvaW50KGUsciotYShvKGUqTS8yKSxuKSpBKTt1LmxpbmVFbmQo KSx1LnBvbHlnb25FbmQoKX0sY30scy5zY2FsZSgyMTguNjk1KS5jZW50ZXIoWzAsMjguMDk3 NF0pfSx0Lmdlb0FybWFkaWxsb1Jhdz16LHQuZ2VvQXVndXN0PWZ1bmN0aW9uKCl7cmV0dXJu IGUuZ2VvUHJvamVjdGlvbihEKS5zY2FsZSg2Ni4xNjAzKX0sdC5nZW9BdWd1c3RSYXc9RCx0 Lmdlb0Jha2VyPWZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2VvUHJvamVjdGlvbihCKS5zY2FsZSgx MTIuMzE0KX0sdC5nZW9CYWtlclJhdz1CLHQuZ2VvQmVyZ2hhdXM9ZnVuY3Rpb24oKXt2YXIg dD01LHI9ZS5nZW9Qcm9qZWN0aW9uTXV0YXRvcihOKSxuPXIodCksaT1uLnN0cmVhbSxzPS1v KC4wMSpNKSxsPW0oLjAxKk0pO3JldHVybiBuLmxvYmVzPWZ1bmN0aW9uKGUpe3JldHVybiBh cmd1bWVudHMubGVuZ3RoP3IodD0rZSk6dH0sbi5zdHJlYW09ZnVuY3Rpb24oZSl7dmFyIHI9 bi5yb3RhdGUoKSxjPWkoZSksdT0obi5yb3RhdGUoWzAsMF0pLGkoZSkpO3JldHVybiBuLnJv dGF0ZShyKSxjLnNwaGVyZT1mdW5jdGlvbigpe3UucG9seWdvblN0YXJ0KCksdS5saW5lU3Rh cnQoKTtmb3IodmFyIGU9MCxyPTM2MC90LG49Mip5L3QsaT05MC0xODAvdCxjPXg7ZTx0Oysr ZSxpLT1yLGMtPW4pdS5wb2ludChhKGwqbyhjKSxzKSpBLFMobCptKGMpKSpBKSxpPC05MD8o dS5wb2ludCgtOTAsLTE4MC1pLS4wMSksdS5wb2ludCgtOTAsLTE4MC1pKy4wMSkpOih1LnBv aW50KDkwLGkrLjAxKSx1LnBvaW50KDkwLGktLjAxKSk7dS5saW5lRW5kKCksdS5wb2x5Z29u RW5kKCl9LGN9LG4uc2NhbGUoODcuODA3NikuY2VudGVyKFswLDE3LjE4NzVdKS5jbGlwQW5n bGUoMTc5Ljk5OSl9LHQuZ2VvQmVyZ2hhdXNSYXc9Tix0Lmdlb0JlcnRpbjE5NTM9ZnVuY3Rp b24oKXtyZXR1cm4gZS5nZW9Qcm9qZWN0aW9uKHEoKSkucm90YXRlKFstMTYuNSwtNDJdKS5z Y2FsZSgxNzYuNTcpLmNlbnRlcihbNy45MywuMDldKX0sdC5nZW9CZXJ0aW4xOTUzUmF3PXEs dC5nZW9Cb2dncz1mdW5jdGlvbigpe3JldHVybiBlLmdlb1Byb2plY3Rpb24oSikuc2NhbGUo MTYwLjg1Nyl9LHQuZ2VvQm9nZ3NSYXc9Six0Lmdlb0Jvbm5lPWZ1bmN0aW9uKCl7cmV0dXJu IEsoJCkuc2NhbGUoMTIzLjA4MikuY2VudGVyKFswLDI2LjE0NDFdKS5wYXJhbGxlbCg0NSl9 LHQuZ2VvQm9ubmVSYXc9JCx0Lmdlb0JvdHRvbWxleT1mdW5jdGlvbigpe3ZhciB0PS41LHI9 ZS5nZW9Qcm9qZWN0aW9uTXV0YXRvcih0dCksbj1yKHQpO3JldHVybiBuLmZyYWN0aW9uPWZ1 bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3IodD0rZSk6dH0sbi5zY2FsZSgx NTguODM3KX0sdC5nZW9Cb3R0b21sZXlSYXc9dHQsdC5nZW9Ccm9tbGV5PWZ1bmN0aW9uKCl7 cmV0dXJuIGUuZ2VvUHJvamVjdGlvbihldCkuc2NhbGUoMTUyLjYzKX0sdC5nZW9Ccm9tbGV5 UmF3PWV0LHQuZ2VvQ2hhbWJlcmxpbj1zdCx0Lmdlb0NoYW1iZXJsaW5SYXc9YXQsdC5nZW9D aGFtYmVybGluQWZyaWNhPWZ1bmN0aW9uKCl7cmV0dXJuIHN0KFswLDIyXSxbNDUsMjJdLFsy Mi41LC0yMl0pLnNjYWxlKDM4MCkuY2VudGVyKFsyMi41LDJdKX0sdC5nZW9Db2xsaWdub249 ZnVuY3Rpb24oKXtyZXR1cm4gZS5nZW9Qcm9qZWN0aW9uKGx0KS5zY2FsZSg5NS42NDY0KS5j ZW50ZXIoWzAsMzBdKX0sdC5nZW9Db2xsaWdub25SYXc9bHQsdC5nZW9DcmFpZz1mdW5jdGlv bigpe3JldHVybiBLKGN0KS5zY2FsZSgyNDkuODI4KS5jbGlwQW5nbGUoOTApfSx0Lmdlb0Ny YWlnUmF3PWN0LHQuZ2VvQ3Jhc3Rlcj1mdW5jdGlvbigpe3JldHVybiBlLmdlb1Byb2plY3Rp b24oZnQpLnNjYWxlKDE1Ni4xOSl9LHQuZ2VvQ3Jhc3RlclJhdz1mdCx0Lmdlb0N5bGluZHJp Y2FsRXF1YWxBcmVhPWZ1bmN0aW9uKCl7cmV0dXJuIEsoaHQpLnBhcmFsbGVsKDM4LjU4KS5z Y2FsZSgxOTUuMDQ0KX0sdC5nZW9DeWxpbmRyaWNhbEVxdWFsQXJlYVJhdz1odCx0Lmdlb0N5 bGluZHJpY2FsU3RlcmVvZ3JhcGhpYz1mdW5jdGlvbigpe3JldHVybiBLKHB0KS5zY2FsZSgx MjQuNzUpfSx0Lmdlb0N5bGluZHJpY2FsU3RlcmVvZ3JhcGhpY1Jhdz1wdCx0Lmdlb0Vja2Vy dDE9ZnVuY3Rpb24oKXtyZXR1cm4gZS5nZW9Qcm9qZWN0aW9uKGR0KS5zY2FsZSgxNjUuNjY0 KX0sdC5nZW9FY2tlcnQxUmF3PWR0LHQuZ2VvRWNrZXJ0Mj1mdW5jdGlvbigpe3JldHVybiBl Lmdlb1Byb2plY3Rpb24obXQpLnNjYWxlKDE2NS42NjQpfSx0Lmdlb0Vja2VydDJSYXc9bXQs dC5nZW9FY2tlcnQzPWZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2VvUHJvamVjdGlvbihndCkuc2Nh bGUoMTgwLjczOSl9LHQuZ2VvRWNrZXJ0M1Jhdz1ndCx0Lmdlb0Vja2VydDQ9ZnVuY3Rpb24o KXtyZXR1cm4gZS5nZW9Qcm9qZWN0aW9uKHZ0KS5zY2FsZSgxODAuNzM5KX0sdC5nZW9FY2tl cnQ0UmF3PXZ0LHQuZ2VvRWNrZXJ0NT1mdW5jdGlvbigpe3JldHVybiBlLmdlb1Byb2plY3Rp b24oeXQpLnNjYWxlKDE3My4wNDQpfSx0Lmdlb0Vja2VydDVSYXc9eXQsdC5nZW9FY2tlcnQ2 PWZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2VvUHJvamVjdGlvbih4dCkuc2NhbGUoMTczLjA0NCl9 LHQuZ2VvRWNrZXJ0NlJhdz14dCx0Lmdlb0Vpc2VubG9ocj1mdW5jdGlvbigpe3JldHVybiBl Lmdlb1Byb2plY3Rpb24oX3QpLnNjYWxlKDYyLjUyNzEpfSx0Lmdlb0Vpc2VubG9oclJhdz1f dCx0Lmdlb0ZhaGV5PWZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2VvUHJvamVjdGlvbihUdCkuc2Nh bGUoMTM3LjE1Mil9LHQuZ2VvRmFoZXlSYXc9VHQsdC5nZW9Gb3VjYXV0PWZ1bmN0aW9uKCl7 cmV0dXJuIGUuZ2VvUHJvamVjdGlvbihrdCkuc2NhbGUoMTM1LjI2NCl9LHQuZ2VvRm91Y2F1 dFJhdz1rdCx0Lmdlb0ZvdWNhdXRTaW51c29pZGFsPWZ1bmN0aW9uKCl7dmFyIHQ9LjUscj1l Lmdlb1Byb2plY3Rpb25NdXRhdG9yKEF0KSxuPXIodCk7cmV0dXJuIG4uYWxwaGE9ZnVuY3Rp b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/cih0PStlKTp0fSxuLnNjYWxlKDE2OC43 MjUpfSx0Lmdlb0ZvdWNhdXRTaW51c29pZGFsUmF3PUF0LHQuZ2VvR2lsYmVydD1mdW5jdGlv bih0KXtudWxsPT10JiYodD1lLmdlb09ydGhvZ3JhcGhpYyk7dmFyIHI9dCgpLG49ZS5nZW9F cXVpcmVjdGFuZ3VsYXIoKS5zY2FsZShBKS5wcmVjaXNpb24oMCkuY2xpcEFuZ2xlKG51bGwp LnRyYW5zbGF0ZShbMCwwXSk7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gcihNdCh0KSl9ZnVuY3Rp b24gYSh0KXtpW3RdPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHJbdF0u YXBwbHkocixhcmd1bWVudHMpLGkpOnJbdF0oKX19cmV0dXJuIHIuaW52ZXJ0JiYoaS5pbnZl cnQ9ZnVuY3Rpb24odCl7cmV0dXJuIFN0KHIuaW52ZXJ0KHQpKX0pLGkuc3RyZWFtPWZ1bmN0 aW9uKHQpe3ZhciBlPXIuc3RyZWFtKHQpLGk9bi5zdHJlYW0oe3BvaW50OmZ1bmN0aW9uKHQs cil7ZS5wb2ludCh0LzIsUyhnKC1yLzIqTSkpKkEpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtl LmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7ZS5saW5lRW5kKCl9LHBvbHlnb25T dGFydDpmdW5jdGlvbigpe2UucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24o KXtlLnBvbHlnb25FbmQoKX19KTtyZXR1cm4gaS5zcGhlcmU9ZS5zcGhlcmUsaX0saS5yb3Rh dGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4ucm90YXRlKHQpLGkp Om4ucm90YXRlKCl9LGkuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVu Z3RoPyhyLmNlbnRlcihNdCh0KSksaSk6U3Qoci5jZW50ZXIoKSl9LGEoImFuZ2xlIiksYSgi Y2xpcEFuZ2xlIiksYSgiY2xpcEV4dGVudCIpLGEoImZpdEV4dGVudCIpLGEoImZpdEhlaWdo dCIpLGEoImZpdFNpemUiKSxhKCJmaXRXaWR0aCIpLGEoInNjYWxlIiksYSgidHJhbnNsYXRl IiksYSgicHJlY2lzaW9uIiksaS5zY2FsZSgyNDkuNSl9LHQuZ2VvR2luZ2VyeT1mdW5jdGlv bigpe3ZhciB0PTYscj0zMCpNLG49byhyKSxpPW0ocikscz1lLmdlb1Byb2plY3Rpb25NdXRh dG9yKEV0KSxsPXMocix0KSxjPWwuc3RyZWFtLHU9LW8oLjAxKk0pLGY9bSguMDEqTSk7cmV0 dXJuIGwucmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW8o cj1lKk0pLGk9bShyKSxzKHIsdCkpOnIqQX0sbC5sb2Jlcz1mdW5jdGlvbihlKXtyZXR1cm4g YXJndW1lbnRzLmxlbmd0aD9zKHIsdD0rZSk6dH0sbC5zdHJlYW09ZnVuY3Rpb24oZSl7dmFy IHI9bC5yb3RhdGUoKSxzPWMoZSksaD0obC5yb3RhdGUoWzAsMF0pLGMoZSkpO3JldHVybiBs LnJvdGF0ZShyKSxzLnNwaGVyZT1mdW5jdGlvbigpe2gucG9seWdvblN0YXJ0KCksaC5saW5l U3RhcnQoKTtmb3IodmFyIGU9MCxyPTIqeS90LHM9MDtlPHQ7KytlLHMtPXIpaC5wb2ludChh KGYqbyhzKSx1KSpBLFMoZiptKHMpKSpBKSxoLnBvaW50KGEoaSpvKHMtci8yKSxuKSpBLFMo aSptKHMtci8yKSkqQSk7aC5saW5lRW5kKCksaC5wb2x5Z29uRW5kKCl9LHN9LGwucm90YXRl KFs5MCwtNDBdKS5zY2FsZSg5MS43MDk1KS5jbGlwQW5nbGUoMTc5Ljk5OSl9LHQuZ2VvR2lu Z2VyeVJhdz1FdCx0Lmdlb0dpbnpidXJnND1mdW5jdGlvbigpe3JldHVybiBlLmdlb1Byb2pl Y3Rpb24oSXQpLnNjYWxlKDE0OS45OTUpfSx0Lmdlb0dpbnpidXJnNFJhdz1JdCx0Lmdlb0dp bnpidXJnNT1mdW5jdGlvbigpe3JldHVybiBlLmdlb1Byb2plY3Rpb24oT3QpLnNjYWxlKDE1 My45Myl9LHQuZ2VvR2luemJ1cmc1UmF3PU90LHQuZ2VvR2luemJ1cmc2PWZ1bmN0aW9uKCl7 cmV0dXJuIGUuZ2VvUHJvamVjdGlvbih6dCkuc2NhbGUoMTMwLjk0NSl9LHQuZ2VvR2luemJ1 cmc2UmF3PXp0LHQuZ2VvR2luemJ1cmc4PWZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2VvUHJvamVj dGlvbihEdCkuc2NhbGUoMTMxLjc0Nyl9LHQuZ2VvR2luemJ1cmc4UmF3PUR0LHQuZ2VvR2lu emJ1cmc5PWZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2VvUHJvamVjdGlvbihSdCkuc2NhbGUoMTMx LjA4Nyl9LHQuZ2VvR2luemJ1cmc5UmF3PVJ0LHQuZ2VvR3JpbmdvcnRlbj1mdW5jdGlvbigp e3JldHVybiBlLmdlb1Byb2plY3Rpb24oRnQoQnQpKS5zY2FsZSgyMzkuNzUpfSx0Lmdlb0dy aW5nb3J0ZW5SYXc9QnQsdC5nZW9HdXlvdT1mdW5jdGlvbigpe3JldHVybiBlLmdlb1Byb2pl Y3Rpb24oRnQoVXQpKS5zY2FsZSgxNTEuNDk2KX0sdC5nZW9HdXlvdVJhdz1VdCx0Lmdlb0hh bW1lcj1mdW5jdGlvbigpe3ZhciB0PTIscj1lLmdlb1Byb2plY3Rpb25NdXRhdG9yKGopLG49 cih0KTtyZXR1cm4gbi5jb2VmZmljaWVudD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz Lmxlbmd0aD9yKHQ9K2UpOnR9LG4uc2NhbGUoMTY5LjUyOSl9LHQuZ2VvSGFtbWVyUmF3PWos dC5nZW9IYW1tZXJSZXRyb2F6aW11dGhhbD1mdW5jdGlvbigpe3ZhciB0PTAscj1lLmdlb1By b2plY3Rpb25NdXRhdG9yKFZ0KSxuPXIodCksaT1uLnJvdGF0ZSxhPW4uc3RyZWFtLG89ZS5n ZW9DaXJjbGUoKTtyZXR1cm4gbi5wYXJhbGxlbD1mdW5jdGlvbihlKXtpZighYXJndW1lbnRz Lmxlbmd0aClyZXR1cm4gdCpBO3ZhciBpPW4ucm90YXRlKCk7cmV0dXJuIHIodD1lKk0pLnJv dGF0ZShpKX0sbi5yb3RhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ KGkuY2FsbChuLFtlWzBdLGVbMV0tdCpBXSksby5jZW50ZXIoWy1lWzBdLC1lWzFdXSksbik6 KChlPWkuY2FsbChuKSlbMV0rPXQqQSxlKX0sbi5zdHJlYW09ZnVuY3Rpb24odCl7cmV0dXJu KHQ9YSh0KSkuc3BoZXJlPWZ1bmN0aW9uKCl7dC5wb2x5Z29uU3RhcnQoKTt2YXIgZSxyPW8u cmFkaXVzKDg5Ljk5KSgpLmNvb3JkaW5hdGVzWzBdLG49ci5sZW5ndGgtMSxpPS0xO2Zvcih0 LmxpbmVTdGFydCgpOysraTxuOyl0LnBvaW50KChlPXJbaV0pWzBdLGVbMV0pO2Zvcih0Lmxp bmVFbmQoKSxuPShyPW8ucmFkaXVzKDkwLjAxKSgpLmNvb3JkaW5hdGVzWzBdKS5sZW5ndGgt MSx0LmxpbmVTdGFydCgpOy0taT49MDspdC5wb2ludCgoZT1yW2ldKVswXSxlWzFdKTt0Lmxp bmVFbmQoKSx0LnBvbHlnb25FbmQoKX0sdH0sbi5zY2FsZSg3OS40MTg3KS5wYXJhbGxlbCg0 NSkuY2xpcEFuZ2xlKDE3OS45OTkpfSx0Lmdlb0hhbW1lclJldHJvYXppbXV0aGFsUmF3PVZ0 LHQuZ2VvSGVhbHBpeD1mdW5jdGlvbigpe3ZhciB0PTQsbj1lLmdlb1Byb2plY3Rpb25NdXRh dG9yKFl0KSxpPW4odCksYT1pLnN0cmVhbTtyZXR1cm4gaS5sb2Jlcz1mdW5jdGlvbihlKXty ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9uKHQ9K2UpOnR9LGkuc3RyZWFtPWZ1bmN0aW9uKG4p e3ZhciBvPWkucm90YXRlKCkscz1hKG4pLGw9KGkucm90YXRlKFswLDBdKSxhKG4pKTtyZXR1 cm4gaS5yb3RhdGUobykscy5zcGhlcmU9ZnVuY3Rpb24oKXt2YXIgbixpO2UuZ2VvU3RyZWFt KChuPTE4MC90LGk9W10uY29uY2F0KHIucmFuZ2UoLTE4MCwxODArbi8yLG4pLm1hcChXdCks ci5yYW5nZSgxODAsLTE4MC1uLzIsLW4pLm1hcChYdCkpLHt0eXBlOiJQb2x5Z29uIixjb29y ZGluYXRlczpbMTgwPT09bj9pLm1hcChadCk6aV19KSxsKX0sc30saS5zY2FsZSgyMzkuNzUp fSx0Lmdlb0hlYWxwaXhSYXc9WXQsdC5nZW9IaWxsPWZ1bmN0aW9uKCl7dmFyIHQ9MSxyPWUu Z2VvUHJvamVjdGlvbk11dGF0b3IoSnQpLG49cih0KTtyZXR1cm4gbi5yYXRpbz1mdW5jdGlv bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9yKHQ9K2UpOnR9LG4uc2NhbGUoMTY3Ljc3 NCkuY2VudGVyKFswLDE4LjY3XSl9LHQuZ2VvSGlsbFJhdz1KdCx0Lmdlb0hvbW9sb3NpbmU9 ZnVuY3Rpb24oKXtyZXR1cm4gZS5nZW9Qcm9qZWN0aW9uKFF0KS5zY2FsZSgxNTIuNjMpfSx0 Lmdlb0hvbW9sb3NpbmVSYXc9UXQsdC5nZW9IdWZuYWdlbD1mdW5jdGlvbigpe3ZhciB0PTEs cj0wLG49NDUqTSxpPTIsYT1lLmdlb1Byb2plY3Rpb25NdXRhdG9yKCR0KSxvPWEodCxyLG4s aSk7cmV0dXJuIG8uYT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9hKHQ9 K2UscixuLGkpOnR9LG8uYj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9h KHQscj0rZSxuLGkpOnJ9LG8ucHNpTWF4PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu bGVuZ3RoP2EodCxyLG49K2UqTSxpKTpuKkF9LG8ucmF0aW89ZnVuY3Rpb24oZSl7cmV0dXJu IGFyZ3VtZW50cy5sZW5ndGg/YSh0LHIsbixpPStlKTppfSxvLnNjYWxlKDE4MC43MzkpfSx0 Lmdlb0h1Zm5hZ2VsUmF3PSR0LHQuZ2VvSHlwZXJlbGxpcHRpY2FsPWZ1bmN0aW9uKCl7dmFy IHQ9MCxyPTIuNSxuPTEuMTgzMTM2LGk9ZS5nZW9Qcm9qZWN0aW9uTXV0YXRvcihlZSksYT1p KHQscixuKTtyZXR1cm4gYS5hbHBoYT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl bmd0aD9pKHQ9K2UscixuKTp0fSxhLms9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s ZW5ndGg/aSh0LHI9K2Usbik6cn0sYS5nYW1tYT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l bnRzLmxlbmd0aD9pKHQscixuPStlKTpufSxhLnNjYWxlKDE1Mi42Myl9LHQuZ2VvSHlwZXJl bGxpcHRpY2FsUmF3PWVlLHQuZ2VvSW50ZXJydXB0PWFlLHQuZ2VvSW50ZXJydXB0ZWRCb2dn cz1mdW5jdGlvbigpe3JldHVybiBhZShKLG9lKS5zY2FsZSgxNjAuODU3KX0sdC5nZW9JbnRl cnJ1cHRlZEhvbW9sb3NpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gYWUoUXQsc2UpLnNjYWxlKDE1 Mi42Myl9LHQuZ2VvSW50ZXJydXB0ZWRNb2xsd2VpZGU9ZnVuY3Rpb24oKXtyZXR1cm4gYWUo VyxsZSkuc2NhbGUoMTY5LjUyOSl9LHQuZ2VvSW50ZXJydXB0ZWRNb2xsd2VpZGVIZW1pc3Bo ZXJlcz1mdW5jdGlvbigpe3JldHVybiBhZShXLGNlKS5zY2FsZSgxNjkuNTI5KS5yb3RhdGUo WzIwLDBdKX0sdC5nZW9JbnRlcnJ1cHRlZFNpbnVNb2xsd2VpZGU9ZnVuY3Rpb24oKXtyZXR1 cm4gYWUoS3QsdWUsSCkucm90YXRlKFstMjAsLTU1XSkuc2NhbGUoMTY0LjI2MykuY2VudGVy KFswLC01LjQwMzZdKX0sdC5nZW9JbnRlcnJ1cHRlZFNpbnVzb2lkYWw9ZnVuY3Rpb24oKXty ZXR1cm4gYWUoUSxmZSkuc2NhbGUoMTUyLjYzKS5yb3RhdGUoWy0yMCwwXSl9LHQuZ2VvS2F2 cmF5c2tpeTc9ZnVuY3Rpb24oKXtyZXR1cm4gZS5nZW9Qcm9qZWN0aW9uKGhlKS5zY2FsZSgx NTguODM3KX0sdC5nZW9LYXZyYXlza2l5N1Jhdz1oZSx0Lmdlb0xhZ3JhbmdlPWZ1bmN0aW9u KCl7dmFyIHQ9LjUscj1lLmdlb1Byb2plY3Rpb25NdXRhdG9yKHBlKSxuPXIodCk7cmV0dXJu IG4uc3BhY2luZz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9yKHQ9K2Up OnR9LG4uc2NhbGUoMTI0Ljc1KX0sdC5nZW9MYWdyYW5nZVJhdz1wZSx0Lmdlb0xhcnJpdmVl PWZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2VvUHJvamVjdGlvbihtZSkuc2NhbGUoOTcuMjY3Mil9 LHQuZ2VvTGFycml2ZWVSYXc9bWUsdC5nZW9MYXNrb3dza2k9ZnVuY3Rpb24oKXtyZXR1cm4g ZS5nZW9Qcm9qZWN0aW9uKGdlKS5zY2FsZSgxMzkuOTgpfSx0Lmdlb0xhc2tvd3NraVJhdz1n ZSx0Lmdlb0xpdHRyb3c9ZnVuY3Rpb24oKXtyZXR1cm4gZS5nZW9Qcm9qZWN0aW9uKHZlKS5z Y2FsZSgxNDQuMDQ5KS5jbGlwQW5nbGUoODkuOTk5KX0sdC5nZW9MaXR0cm93UmF3PXZlLHQu Z2VvTG94aW11dGhhbD1mdW5jdGlvbigpe3JldHVybiBLKHllKS5wYXJhbGxlbCg0MCkuc2Nh bGUoMTU4LjgzNyl9LHQuZ2VvTG94aW11dGhhbFJhdz15ZSx0Lmdlb01pbGxlcj1mdW5jdGlv bigpe3JldHVybiBlLmdlb1Byb2plY3Rpb24oeGUpLnNjYWxlKDEwOC4zMTgpfSx0Lmdlb01p bGxlclJhdz14ZSx0Lmdlb01vZGlmaWVkU3RlcmVvZ3JhcGhpYz1NZSx0Lmdlb01vZGlmaWVk U3RlcmVvZ3JhcGhpY1Jhdz1iZSx0Lmdlb01vZGlmaWVkU3RlcmVvZ3JhcGhpY0FsYXNrYT1m dW5jdGlvbigpe3JldHVybiBNZShfZSxbMTUyLC02NF0pLnNjYWxlKDE0MDApLmNlbnRlcihb LTE2MC45MDgsNjIuNDg2NF0pLmNsaXBBbmdsZSgzMCkuYW5nbGUoNy44KX0sdC5nZW9Nb2Rp ZmllZFN0ZXJlb2dyYXBoaWNHczQ4PWZ1bmN0aW9uKCl7cmV0dXJuIE1lKHdlLFs5NSwtMzhd KS5zY2FsZSgxZTMpLmNsaXBBbmdsZSg1NSkuY2VudGVyKFstOTYuNTU2MywzOC44Njc1XSl9 LHQuZ2VvTW9kaWZpZWRTdGVyZW9ncmFwaGljR3M1MD1mdW5jdGlvbigpe3JldHVybiBNZShU ZSxbMTIwLC00NV0pLnNjYWxlKDM1OS41MTMpLmNsaXBBbmdsZSg1NSkuY2VudGVyKFstMTE3 LjQ3NCw1My4wNjI4XSl9LHQuZ2VvTW9kaWZpZWRTdGVyZW9ncmFwaGljTWlsbGVyPWZ1bmN0 aW9uKCl7cmV0dXJuIE1lKGtlLFstMjAsLTE4XSkuc2NhbGUoMjA5LjA5MSkuY2VudGVyKFsy MCwxNi43MjE0XSkuY2xpcEFuZ2xlKDgyKX0sdC5nZW9Nb2RpZmllZFN0ZXJlb2dyYXBoaWNM ZWU9ZnVuY3Rpb24oKXtyZXR1cm4gTWUoQWUsWzE2NSwxMF0pLnNjYWxlKDI1MCkuY2xpcEFu Z2xlKDEzMCkuY2VudGVyKFstMTY1LC0xMF0pfSx0Lmdlb01vbGx3ZWlkZT1mdW5jdGlvbigp e3JldHVybiBlLmdlb1Byb2plY3Rpb24oVykuc2NhbGUoMTY5LjUyOSl9LHQuZ2VvTW9sbHdl aWRlUmF3PVcsdC5nZW9NdEZsYXRQb2xhclBhcmFib2xpYz1mdW5jdGlvbigpe3JldHVybiBl Lmdlb1Byb2plY3Rpb24oTGUpLnNjYWxlKDE2NC44NTkpfSx0Lmdlb010RmxhdFBvbGFyUGFy YWJvbGljUmF3PUxlLHQuZ2VvTXRGbGF0UG9sYXJRdWFydGljPWZ1bmN0aW9uKCl7cmV0dXJu IGUuZ2VvUHJvamVjdGlvbihDZSkuc2NhbGUoMTg4LjIwOSl9LHQuZ2VvTXRGbGF0UG9sYXJR dWFydGljUmF3PUNlLHQuZ2VvTXRGbGF0UG9sYXJTaW51c29pZGFsPWZ1bmN0aW9uKCl7cmV0 dXJuIGUuZ2VvUHJvamVjdGlvbihQZSkuc2NhbGUoMTY2LjUxOCl9LHQuZ2VvTXRGbGF0UG9s YXJTaW51c29pZGFsUmF3PVBlLHQuZ2VvTmF0dXJhbEVhcnRoMj1mdW5jdGlvbigpe3JldHVy biBlLmdlb1Byb2plY3Rpb24oSWUpLnNjYWxlKDE3NS4yOTUpfSx0Lmdlb05hdHVyYWxFYXJ0 aDJSYXc9SWUsdC5nZW9OZWxsSGFtbWVyPWZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2VvUHJvamVj dGlvbihPZSkuc2NhbGUoMTUyLjYzKX0sdC5nZW9OZWxsSGFtbWVyUmF3PU9lLHQuZ2VvSW50 ZXJydXB0ZWRRdWFydGljQXV0aGFsaWM9ZnVuY3Rpb24oKXtyZXR1cm4gYWUoaigxLzApLHpl KS5yb3RhdGUoWzIwLDBdKS5zY2FsZSgxNTIuNjMpfSx0Lmdlb05pY29sb3NpPWZ1bmN0aW9u KCl7cmV0dXJuIGUuZ2VvUHJvamVjdGlvbihEZSkuc2NhbGUoMTI3LjI2Nyl9LHQuZ2VvTmlj b2xvc2lSYXc9RGUsdC5nZW9QYXR0ZXJzb249ZnVuY3Rpb24oKXtyZXR1cm4gZS5nZW9Qcm9q ZWN0aW9uKFJlKS5zY2FsZSgxMzkuMzE5KX0sdC5nZW9QYXR0ZXJzb25SYXc9UmUsdC5nZW9Q b2x5Y29uaWM9ZnVuY3Rpb24oKXtyZXR1cm4gZS5nZW9Qcm9qZWN0aW9uKEZlKS5zY2FsZSgx MDMuNzQpfSx0Lmdlb1BvbHljb25pY1Jhdz1GZSx0Lmdlb1BvbHloZWRyYWw9VmUsdC5nZW9Q b2x5aGVkcmFsQnV0dGVyZmx5PWZ1bmN0aW9uKHQpe3Q9dHx8ZnVuY3Rpb24odCl7dmFyIHI9 ZS5nZW9DZW50cm9pZCh7dHlwZToiTXVsdGlQb2ludCIsY29vcmRpbmF0ZXM6dH0pO3JldHVy biBlLmdlb0dub21vbmljKCkuc2NhbGUoMSkudHJhbnNsYXRlKFswLDBdKS5yb3RhdGUoWy1y WzBdLC1yWzFdXSl9O3ZhciByPVllLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJue2ZhY2U6ZSxw cm9qZWN0OnQoZSl9fSkpO3JldHVyblstMSwwLDAsMSwwLDEsNCw1XS5mb3JFYWNoKChmdW5j dGlvbih0LGUpe3ZhciBuPXJbdF07biYmKG4uY2hpbGRyZW58fChuLmNoaWxkcmVuPVtdKSku cHVzaChyW2VdKX0pKSxWZShyWzBdLChmdW5jdGlvbih0LGUpe3JldHVybiByW3Q8LXkvMj9l PDA/Njo0OnQ8MD9lPDA/MjowOnQ8eS8yP2U8MD8zOjE6ZTwwPzc6NV19KSkuYW5nbGUoLTMw KS5zY2FsZSgxMDEuODU4KS5jZW50ZXIoWzAsNDVdKX0sdC5nZW9Qb2x5aGVkcmFsQ29sbGln bm9uPWZ1bmN0aW9uKHQpe3Q9dHx8ZnVuY3Rpb24odCl7dmFyIHI9ZS5nZW9DZW50cm9pZCh7 dHlwZToiTXVsdGlQb2ludCIsY29vcmRpbmF0ZXM6dH0pO3JldHVybiBlLmdlb1Byb2plY3Rp b24oWGUpLnRyYW5zbGF0ZShbMCwwXSkuc2NhbGUoMSkucm90YXRlKHJbMV0+MD9bLXJbMF0s MF06WzE4MC1yWzBdLDE4MF0pfTt2YXIgcj1ZZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybntm YWNlOmUscHJvamVjdDp0KGUpfX0pKTtyZXR1cm5bLTEsMCwwLDEsMCwxLDQsNV0uZm9yRWFj aCgoZnVuY3Rpb24odCxlKXt2YXIgbj1yW3RdO24mJihuLmNoaWxkcmVufHwobi5jaGlsZHJl bj1bXSkpLnB1c2gocltlXSl9KSksVmUoclswXSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gclt0 PC15LzI/ZTwwPzY6NDp0PDA/ZTwwPzI6MDp0PHkvMj9lPDA/MzoxOmU8MD83OjVdfSkpLmFu Z2xlKC0zMCkuc2NhbGUoMTIxLjkwNikuY2VudGVyKFswLDQ4LjU5MDRdKX0sdC5nZW9Qb2x5 aGVkcmFsV2F0ZXJtYW49ZnVuY3Rpb24odCl7dD10fHxmdW5jdGlvbih0KXt2YXIgcj02PT09 dC5sZW5ndGg/ZS5nZW9DZW50cm9pZCh7dHlwZToiTXVsdGlQb2ludCIsY29vcmRpbmF0ZXM6 dH0pOnRbMF07cmV0dXJuIGUuZ2VvR25vbW9uaWMoKS5zY2FsZSgxKS50cmFuc2xhdGUoWzAs MF0pLnJvdGF0ZShbLXJbMF0sLXJbMV1dKX07dmFyIHI9WWUubWFwKChmdW5jdGlvbih0KXtm b3IodmFyIGUscj10Lm1hcChLZSksbj1yLmxlbmd0aCxpPXJbbi0xXSxhPVtdLG89MDtvPG47 KytvKWU9cltvXSxhLnB1c2goSmUoWy45NDg2ODMyOTgwNTA1MTM4KmlbMF0rLjMxNjIyNzc2 NjAxNjgzNzk0KmVbMF0sLjk0ODY4MzI5ODA1MDUxMzgqaVsxXSsuMzE2MjI3NzY2MDE2ODM3 OTQqZVsxXSwuOTQ4NjgzMjk4MDUwNTEzOCppWzJdKy4zMTYyMjc3NjYwMTY4Mzc5NCplWzJd XSksSmUoWy45NDg2ODMyOTgwNTA1MTM4KmVbMF0rLjMxNjIyNzc2NjAxNjgzNzk0KmlbMF0s Ljk0ODY4MzI5ODA1MDUxMzgqZVsxXSsuMzE2MjI3NzY2MDE2ODM3OTQqaVsxXSwuOTQ4Njgz Mjk4MDUwNTEzOCplWzJdKy4zMTYyMjc3NjYwMTY4Mzc5NCppWzJdXSkpLGk9ZTtyZXR1cm4g YX0pKSxuPVtdLGk9Wy0xLDAsMCwxLDAsMSw0LDVdO3IuZm9yRWFjaCgoZnVuY3Rpb24odCxl KXtmb3IodmFyIGEsbyxzPVllW2VdLGw9cy5sZW5ndGgsYz1uW2VdPVtdLHU9MDt1PGw7Kyt1 KXIucHVzaChbc1t1XSx0WygyKnUrMiklKDIqbCldLHRbKDIqdSsxKSUoMipsKV1dKSxpLnB1 c2goZSksYy5wdXNoKChhPUtlKHRbKDIqdSsyKSUoMipsKV0pLG89S2UodFsoMip1KzEpJSgy KmwpXSksW2FbMV0qb1syXS1hWzJdKm9bMV0sYVsyXSpvWzBdLWFbMF0qb1syXSxhWzBdKm9b MV0tYVsxXSpvWzBdXSkpfSkpO3ZhciBhPXIubWFwKChmdW5jdGlvbihlKXtyZXR1cm57cHJv amVjdDp0KGUpLGZhY2U6ZX19KSk7cmV0dXJuIGkuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt2 YXIgcj1hW3RdO3ImJihyLmNoaWxkcmVufHwoci5jaGlsZHJlbj1bXSkpLnB1c2goYVtlXSl9 KSksVmUoYVswXSwoZnVuY3Rpb24odCxlKXt2YXIgcj1vKGUpLGk9W3Iqbyh0KSxyKm0odCks bShlKV0scz10PC15LzI/ZTwwPzY6NDp0PDA/ZTwwPzI6MDp0PHkvMj9lPDA/MzoxOmU8MD83 OjUsbD1uW3NdO3JldHVybiBhW1plKGxbMF0saSk8MD84KzMqczpaZShsWzFdLGkpPDA/OCsz KnMrMTpaZShsWzJdLGkpPDA/OCszKnMrMjpzXX0pKS5hbmdsZSgtMzApLnNjYWxlKDExMC42 MjUpLmNlbnRlcihbMCw0NV0pfSx0Lmdlb1Byb2plY3Q9ZnVuY3Rpb24odCxlKXt2YXIgcixu PWUuc3RyZWFtO2lmKCFuKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBwcm9qZWN0aW9uIik7 c3dpdGNoKHQmJnQudHlwZSl7Y2FzZSJGZWF0dXJlIjpyPXRyO2JyZWFrO2Nhc2UiRmVhdHVy ZUNvbGxlY3Rpb24iOnI9JGU7YnJlYWs7ZGVmYXVsdDpyPWVyfXJldHVybiByKHQsbil9LHQu Z2VvR3JpbmdvcnRlblF1aW5jdW5jaWFsPWZ1bmN0aW9uKCl7cmV0dXJuIHNyKEJ0KS5zY2Fs ZSgxNzYuNDIzKX0sdC5nZW9QZWlyY2VRdWluY3VuY2lhbD1scix0Lmdlb1BpZXJjZVF1aW5j dW5jaWFsPWxyLHQuZ2VvUXVhbnRpemU9ZnVuY3Rpb24odCxlKXtpZighKDA8PShlPStlKSYm ZTw9MjApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBkaWdpdHMiKTtmdW5jdGlvbiByKHQp e3ZhciByPXQubGVuZ3RoLG49MixpPW5ldyBBcnJheShyKTtmb3IoaVswXT0rdFswXS50b0Zp eGVkKGUpLGlbMV09K3RbMV0udG9GaXhlZChlKTtuPHI7KWlbbl09dFtuXSwrK247cmV0dXJu IGl9ZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5tYXAocil9ZnVuY3Rpb24gaSh0KXtmb3IodmFy IGU9cih0WzBdKSxuPVtlXSxpPTE7aTx0Lmxlbmd0aDtpKyspe3ZhciBhPXIodFtpXSk7KGEu bGVuZ3RoPjJ8fGFbMF0hPWVbMF18fGFbMV0hPWVbMV0pJiYobi5wdXNoKGEpLGU9YSl9cmV0 dXJuIDE9PT1uLmxlbmd0aCYmdC5sZW5ndGg+MSYmbi5wdXNoKHIodFt0Lmxlbmd0aC0xXSkp LG59ZnVuY3Rpb24gYSh0KXtyZXR1cm4gdC5tYXAoaSl9ZnVuY3Rpb24gbyh0KXtpZihudWxs PT10KXJldHVybiB0O3ZhciBlO3N3aXRjaCh0LnR5cGUpe2Nhc2UiR2VvbWV0cnlDb2xsZWN0 aW9uIjplPXt0eXBlOiJHZW9tZXRyeUNvbGxlY3Rpb24iLGdlb21ldHJpZXM6dC5nZW9tZXRy aWVzLm1hcChvKX07YnJlYWs7Y2FzZSJQb2ludCI6ZT17dHlwZToiUG9pbnQiLGNvb3JkaW5h dGVzOnIodC5jb29yZGluYXRlcyl9O2JyZWFrO2Nhc2UiTXVsdGlQb2ludCI6ZT17dHlwZTp0 LnR5cGUsY29vcmRpbmF0ZXM6bih0LmNvb3JkaW5hdGVzKX07YnJlYWs7Y2FzZSJMaW5lU3Ry aW5nIjplPXt0eXBlOnQudHlwZSxjb29yZGluYXRlczppKHQuY29vcmRpbmF0ZXMpfTticmVh aztjYXNlIk11bHRpTGluZVN0cmluZyI6Y2FzZSJQb2x5Z29uIjplPXt0eXBlOnQudHlwZSxj b29yZGluYXRlczphKHQuY29vcmRpbmF0ZXMpfTticmVhaztjYXNlIk11bHRpUG9seWdvbiI6 ZT17dHlwZToiTXVsdGlQb2x5Z29uIixjb29yZGluYXRlczp0LmNvb3JkaW5hdGVzLm1hcChh KX07YnJlYWs7ZGVmYXVsdDpyZXR1cm4gdH1yZXR1cm4gbnVsbCE9dC5iYm94JiYoZS5iYm94 PXQuYmJveCksZX1mdW5jdGlvbiBzKHQpe3ZhciBlPXt0eXBlOiJGZWF0dXJlIixwcm9wZXJ0 aWVzOnQucHJvcGVydGllcyxnZW9tZXRyeTpvKHQuZ2VvbWV0cnkpfTtyZXR1cm4gbnVsbCE9 dC5pZCYmKGUuaWQ9dC5pZCksbnVsbCE9dC5iYm94JiYoZS5iYm94PXQuYmJveCksZX1pZihu dWxsIT10KXN3aXRjaCh0LnR5cGUpe2Nhc2UiRmVhdHVyZSI6cmV0dXJuIHModCk7Y2FzZSJG ZWF0dXJlQ29sbGVjdGlvbiI6dmFyIGw9e3R5cGU6IkZlYXR1cmVDb2xsZWN0aW9uIixmZWF0 dXJlczp0LmZlYXR1cmVzLm1hcChzKX07cmV0dXJuIG51bGwhPXQuYmJveCYmKGwuYmJveD10 LmJib3gpLGw7ZGVmYXVsdDpyZXR1cm4gbyh0KX1yZXR1cm4gdH0sdC5nZW9RdWluY3VuY2lh bD1zcix0Lmdlb1JlY3Rhbmd1bGFyUG9seWNvbmljPWZ1bmN0aW9uKCl7cmV0dXJuIEsoY3Ip LnNjYWxlKDEzMS4yMTUpfSx0Lmdlb1JlY3Rhbmd1bGFyUG9seWNvbmljUmF3PWNyLHQuZ2Vv Um9iaW5zb249ZnVuY3Rpb24oKXtyZXR1cm4gZS5nZW9Qcm9qZWN0aW9uKGZyKS5zY2FsZSgx NTIuNjMpfSx0Lmdlb1JvYmluc29uUmF3PWZyLHQuZ2VvU2F0ZWxsaXRlPWZ1bmN0aW9uKCl7 dmFyIHQ9MixyPTAsbj1lLmdlb1Byb2plY3Rpb25NdXRhdG9yKGhyKSxpPW4odCxyKTtyZXR1 cm4gaS5kaXN0YW5jZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9uKHQ9 K2Uscik6dH0saS50aWx0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP24o dCxyPWUqTSk6cipBfSxpLnNjYWxlKDQzMi4xNDcpLmNsaXBBbmdsZShFKDEvdCkqQS0xZS02 KX0sdC5nZW9TYXRlbGxpdGVSYXc9aHIsdC5nZW9TaW51TW9sbHdlaWRlPWZ1bmN0aW9uKCl7 cmV0dXJuIGUuZ2VvUHJvamVjdGlvbihLdCkucm90YXRlKFstMjAsLTU1XSkuc2NhbGUoMTY0 LjI2MykuY2VudGVyKFswLC01LjQwMzZdKX0sdC5nZW9TaW51TW9sbHdlaWRlUmF3PUt0LHQu Z2VvU2ludXNvaWRhbD1mdW5jdGlvbigpe3JldHVybiBlLmdlb1Byb2plY3Rpb24oUSkuc2Nh bGUoMTUyLjYzKX0sdC5nZW9TaW51c29pZGFsUmF3PVEsdC5nZW9TdGl0Y2g9ZnVuY3Rpb24o dCl7aWYobnVsbD09dClyZXR1cm4gdDtzd2l0Y2godC50eXBlKXtjYXNlIkZlYXR1cmUiOnJl dHVybiB3cih0KTtjYXNlIkZlYXR1cmVDb2xsZWN0aW9uIjp2YXIgZT17dHlwZToiRmVhdHVy ZUNvbGxlY3Rpb24iLGZlYXR1cmVzOnQuZmVhdHVyZXMubWFwKHdyKX07cmV0dXJuIG51bGwh PXQuYmJveCYmKGUuYmJveD10LmJib3gpLGU7ZGVmYXVsdDpyZXR1cm4gVHIodCl9fSx0Lmdl b1RpbWVzPWZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2VvUHJvamVjdGlvbihrcikuc2NhbGUoMTQ2 LjE1Myl9LHQuZ2VvVGltZXNSYXc9a3IsdC5nZW9Ud29Qb2ludEF6aW11dGhhbD1Tcix0Lmdl b1R3b1BvaW50QXppbXV0aGFsUmF3PU1yLHQuZ2VvVHdvUG9pbnRBemltdXRoYWxVc2E9ZnVu Y3Rpb24oKXtyZXR1cm4gU3IoWy0xNTgsMjEuNV0sWy03NywzOV0pLmNsaXBBbmdsZSg2MCku c2NhbGUoNDAwKX0sdC5nZW9Ud29Qb2ludEVxdWlkaXN0YW50PUxyLHQuZ2VvVHdvUG9pbnRF cXVpZGlzdGFudFJhdz1Fcix0Lmdlb1R3b1BvaW50RXF1aWRpc3RhbnRVc2E9ZnVuY3Rpb24o KXtyZXR1cm4gTHIoWy0xNTgsMjEuNV0sWy03NywzOV0pLmNsaXBBbmdsZSgxMzApLnNjYWxl KDEyMi41NzEpfSx0Lmdlb1ZhbkRlckdyaW50ZW49ZnVuY3Rpb24oKXtyZXR1cm4gZS5nZW9Q cm9qZWN0aW9uKENyKS5zY2FsZSg3OS40MTgzKX0sdC5nZW9WYW5EZXJHcmludGVuUmF3PUNy LHQuZ2VvVmFuRGVyR3JpbnRlbjI9ZnVuY3Rpb24oKXtyZXR1cm4gZS5nZW9Qcm9qZWN0aW9u KFByKS5zY2FsZSg3OS40MTgzKX0sdC5nZW9WYW5EZXJHcmludGVuMlJhdz1Qcix0Lmdlb1Zh bkRlckdyaW50ZW4zPWZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2VvUHJvamVjdGlvbihJcikuc2Nh bGUoNzkuNDE4Myl9LHQuZ2VvVmFuRGVyR3JpbnRlbjNSYXc9SXIsdC5nZW9WYW5EZXJHcmlu dGVuND1mdW5jdGlvbigpe3JldHVybiBlLmdlb1Byb2plY3Rpb24oT3IpLnNjYWxlKDEyNy4x Nil9LHQuZ2VvVmFuRGVyR3JpbnRlbjRSYXc9T3IsdC5nZW9XYWduZXI9RHIsdC5nZW9XYWdu ZXI3PWZ1bmN0aW9uKCl7cmV0dXJuIERyKCkucG9sZWxpbmUoNjUpLnBhcmFsbGVscyg2MCku aW5mbGF0aW9uKDApLnJhdGlvKDIwMCkuc2NhbGUoMTcyLjYzMyl9LHQuZ2VvV2FnbmVyUmF3 PXpyLHQuZ2VvV2FnbmVyND1mdW5jdGlvbigpe3JldHVybiBlLmdlb1Byb2plY3Rpb24oQnIp LnNjYWxlKDE3Ni44NCl9LHQuZ2VvV2FnbmVyNFJhdz1Ccix0Lmdlb1dhZ25lcjY9ZnVuY3Rp b24oKXtyZXR1cm4gZS5nZW9Qcm9qZWN0aW9uKE5yKS5zY2FsZSgxNTIuNjMpfSx0Lmdlb1dh Z25lcjZSYXc9TnIsdC5nZW9XaWVjaGVsPWZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2VvUHJvamVj dGlvbihqcikucm90YXRlKFswLC05MCw0NV0pLnNjYWxlKDEyNC43NSkuY2xpcEFuZ2xlKDE3 OS45OTkpfSx0Lmdlb1dpZWNoZWxSYXc9anIsdC5nZW9XaW5rZWwzPWZ1bmN0aW9uKCl7cmV0 dXJuIGUuZ2VvUHJvamVjdGlvbihVcikuc2NhbGUoMTU4LjgzNyl9LHQuZ2VvV2lua2VsM1Jh dz1VcixPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9 KSl9LHsiZDMtYXJyYXkiOjEwNywiZDMtZ2VvIjoxMTR9XSwxMTQ6W2Z1bmN0aW9uKHQsZSxy KXshZnVuY3Rpb24obixpKXsib2JqZWN0Ij09dHlwZW9mIHImJnZvaWQgMCE9PWU/aShyLHQo ImQzLWFycmF5IikpOmkoKG49bnx8c2VsZikuZDM9bi5kM3x8e30sbi5kMyl9KHRoaXMsKGZ1 bmN0aW9uKHQsZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtyZXR1cm4gbmV3IG59ZnVu Y3Rpb24gbigpe3RoaXMucmVzZXQoKX1uLnByb3RvdHlwZT17Y29uc3RydWN0b3I6bixyZXNl dDpmdW5jdGlvbigpe3RoaXMucz10aGlzLnQ9MH0sYWRkOmZ1bmN0aW9uKHQpe2EoaSx0LHRo aXMudCksYSh0aGlzLGkucyx0aGlzLnMpLHRoaXMucz90aGlzLnQrPWkudDp0aGlzLnM9aS50 fSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc319O3ZhciBpPW5ldyBuO2Z1bmN0 aW9uIGEodCxlLHIpe3ZhciBuPXQucz1lK3IsaT1uLWUsYT1uLWk7dC50PWUtYSsoci1pKX12 YXIgbz0xZS02LHM9TWF0aC5QSSxsPXMvMixjPXMvNCx1PTIqcyxmPTE4MC9zLGg9cy8xODAs cD1NYXRoLmFicyxkPU1hdGguYXRhbixtPU1hdGguYXRhbjIsZz1NYXRoLmNvcyx2PU1hdGgu Y2VpbCx5PU1hdGguZXhwLHg9TWF0aC5sb2csYj1NYXRoLnBvdyxfPU1hdGguc2luLHc9TWF0 aC5zaWdufHxmdW5jdGlvbih0KXtyZXR1cm4gdD4wPzE6dDwwPy0xOjB9LFQ9TWF0aC5zcXJ0 LGs9TWF0aC50YW47ZnVuY3Rpb24gQSh0KXtyZXR1cm4gdD4xPzA6dDwtMT9zOk1hdGguYWNv cyh0KX1mdW5jdGlvbiBNKHQpe3JldHVybiB0PjE/bDp0PC0xPy1sOk1hdGguYXNpbih0KX1m dW5jdGlvbiBTKHQpe3JldHVybih0PV8odC8yKSkqdH1mdW5jdGlvbiBFKCl7fWZ1bmN0aW9u IEwodCxlKXt0JiZQLmhhc093blByb3BlcnR5KHQudHlwZSkmJlBbdC50eXBlXSh0LGUpfXZh ciBDPXtGZWF0dXJlOmZ1bmN0aW9uKHQsZSl7TCh0Lmdlb21ldHJ5LGUpfSxGZWF0dXJlQ29s bGVjdGlvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10LmZlYXR1cmVzLG49LTEsaT1yLmxl bmd0aDsrK248aTspTChyW25dLmdlb21ldHJ5LGUpfX0sUD17U3BoZXJlOmZ1bmN0aW9uKHQs ZSl7ZS5zcGhlcmUoKX0sUG9pbnQ6ZnVuY3Rpb24odCxlKXt0PXQuY29vcmRpbmF0ZXMsZS5w b2ludCh0WzBdLHRbMV0sdFsyXSl9LE11bHRpUG9pbnQ6ZnVuY3Rpb24odCxlKXtmb3IodmFy IHI9dC5jb29yZGluYXRlcyxuPS0xLGk9ci5sZW5ndGg7KytuPGk7KXQ9cltuXSxlLnBvaW50 KHRbMF0sdFsxXSx0WzJdKX0sTGluZVN0cmluZzpmdW5jdGlvbih0LGUpe0kodC5jb29yZGlu YXRlcyxlLDApfSxNdWx0aUxpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5j b29yZGluYXRlcyxuPS0xLGk9ci5sZW5ndGg7KytuPGk7KUkocltuXSxlLDApfSxQb2x5Z29u OmZ1bmN0aW9uKHQsZSl7Tyh0LmNvb3JkaW5hdGVzLGUpfSxNdWx0aVBvbHlnb246ZnVuY3Rp b24odCxlKXtmb3IodmFyIHI9dC5jb29yZGluYXRlcyxuPS0xLGk9ci5sZW5ndGg7KytuPGk7 KU8ocltuXSxlKX0sR2VvbWV0cnlDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBy PXQuZ2VvbWV0cmllcyxuPS0xLGk9ci5sZW5ndGg7KytuPGk7KUwocltuXSxlKX19O2Z1bmN0 aW9uIEkodCxlLHIpe3ZhciBuLGk9LTEsYT10Lmxlbmd0aC1yO2ZvcihlLmxpbmVTdGFydCgp OysraTxhOyluPXRbaV0sZS5wb2ludChuWzBdLG5bMV0sblsyXSk7ZS5saW5lRW5kKCl9ZnVu Y3Rpb24gTyh0LGUpe3ZhciByPS0xLG49dC5sZW5ndGg7Zm9yKGUucG9seWdvblN0YXJ0KCk7 KytyPG47KUkodFtyXSxlLDEpO2UucG9seWdvbkVuZCgpfWZ1bmN0aW9uIHoodCxlKXt0JiZD Lmhhc093blByb3BlcnR5KHQudHlwZSk/Q1t0LnR5cGVdKHQsZSk6TCh0LGUpfXZhciBELFIs RixCLE4saj1yKCksVT1yKCksVj17cG9pbnQ6RSxsaW5lU3RhcnQ6RSxsaW5lRW5kOkUscG9s eWdvblN0YXJ0OmZ1bmN0aW9uKCl7ai5yZXNldCgpLFYubGluZVN0YXJ0PUgsVi5saW5lRW5k PXF9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt2YXIgdD0rajtVLmFkZCh0PDA/dSt0OnQpLHRo aXMubGluZVN0YXJ0PXRoaXMubGluZUVuZD10aGlzLnBvaW50PUV9LHNwaGVyZTpmdW5jdGlv bigpe1UuYWRkKHUpfX07ZnVuY3Rpb24gSCgpe1YucG9pbnQ9R31mdW5jdGlvbiBxKCl7WShE LFIpfWZ1bmN0aW9uIEcodCxlKXtWLnBvaW50PVksRD10LFI9ZSxGPXQqPWgsQj1nKGU9KGUq PWgpLzIrYyksTj1fKGUpfWZ1bmN0aW9uIFkodCxlKXt2YXIgcj0odCo9aCktRixuPXI+PTA/ MTotMSxpPW4qcixhPWcoZT0oZSo9aCkvMitjKSxvPV8oZSkscz1OKm8sbD1CKmErcypnKGkp LHU9cypuKl8oaSk7ai5hZGQobSh1LGwpKSxGPXQsQj1hLE49b31mdW5jdGlvbiBXKHQpe3Jl dHVyblttKHRbMV0sdFswXSksTSh0WzJdKV19ZnVuY3Rpb24gWCh0KXt2YXIgZT10WzBdLHI9 dFsxXSxuPWcocik7cmV0dXJuW24qZyhlKSxuKl8oZSksXyhyKV19ZnVuY3Rpb24gWih0LGUp e3JldHVybiB0WzBdKmVbMF0rdFsxXSplWzFdK3RbMl0qZVsyXX1mdW5jdGlvbiBKKHQsZSl7 cmV0dXJuW3RbMV0qZVsyXS10WzJdKmVbMV0sdFsyXSplWzBdLXRbMF0qZVsyXSx0WzBdKmVb MV0tdFsxXSplWzBdXX1mdW5jdGlvbiBLKHQsZSl7dFswXSs9ZVswXSx0WzFdKz1lWzFdLHRb Ml0rPWVbMl19ZnVuY3Rpb24gUSh0LGUpe3JldHVyblt0WzBdKmUsdFsxXSplLHRbMl0qZV19 ZnVuY3Rpb24gJCh0KXt2YXIgZT1UKHRbMF0qdFswXSt0WzFdKnRbMV0rdFsyXSp0WzJdKTt0 WzBdLz1lLHRbMV0vPWUsdFsyXS89ZX12YXIgdHQsZXQscnQsbnQsaXQsYXQsb3Qsc3QsbHQs Y3QsdXQsZnQsaHQscHQsZHQsbXQsZ3QsdnQseXQseHQsYnQsX3Qsd3QsVHQsa3QsQXQsTXQ9 cigpLFN0PXtwb2ludDpFdCxsaW5lU3RhcnQ6Q3QsbGluZUVuZDpQdCxwb2x5Z29uU3RhcnQ6 ZnVuY3Rpb24oKXtTdC5wb2ludD1JdCxTdC5saW5lU3RhcnQ9T3QsU3QubGluZUVuZD16dCxN dC5yZXNldCgpLFYucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtWLnBv bHlnb25FbmQoKSxTdC5wb2ludD1FdCxTdC5saW5lU3RhcnQ9Q3QsU3QubGluZUVuZD1QdCxq PDA/KHR0PS0ocnQ9MTgwKSxldD0tKG50PTkwKSk6TXQ+bz9udD05MDpNdDwtbyYmKGV0PS05 MCksY3RbMF09dHQsY3RbMV09cnR9LHNwaGVyZTpmdW5jdGlvbigpe3R0PS0ocnQ9MTgwKSxl dD0tKG50PTkwKX19O2Z1bmN0aW9uIEV0KHQsZSl7bHQucHVzaChjdD1bdHQ9dCxydD10XSks ZTxldCYmKGV0PWUpLGU+bnQmJihudD1lKX1mdW5jdGlvbiBMdCh0LGUpe3ZhciByPVgoW3Qq aCxlKmhdKTtpZihzdCl7dmFyIG49SihzdCxyKSxpPUooW25bMV0sLW5bMF0sMF0sbik7JChp KSxpPVcoaSk7dmFyIGEsbz10LWl0LHM9bz4wPzE6LTEsbD1pWzBdKmYqcyxjPXAobyk+MTgw O2NeKHMqaXQ8bCYmbDxzKnQpPyhhPWlbMV0qZik+bnQmJihudD1hKTpjXihzKml0PChsPShs KzM2MCklMzYwLTE4MCkmJmw8cyp0KT8oYT0taVsxXSpmKTxldCYmKGV0PWEpOihlPGV0JiYo ZXQ9ZSksZT5udCYmKG50PWUpKSxjP3Q8aXQ/RHQodHQsdCk+RHQodHQscnQpJiYocnQ9dCk6 RHQodCxydCk+RHQodHQscnQpJiYodHQ9dCk6cnQ+PXR0Pyh0PHR0JiYodHQ9dCksdD5ydCYm KHJ0PXQpKTp0Pml0P0R0KHR0LHQpPkR0KHR0LHJ0KSYmKHJ0PXQpOkR0KHQscnQpPkR0KHR0 LHJ0KSYmKHR0PXQpfWVsc2UgbHQucHVzaChjdD1bdHQ9dCxydD10XSk7ZTxldCYmKGV0PWUp LGU+bnQmJihudD1lKSxzdD1yLGl0PXR9ZnVuY3Rpb24gQ3QoKXtTdC5wb2ludD1MdH1mdW5j dGlvbiBQdCgpe2N0WzBdPXR0LGN0WzFdPXJ0LFN0LnBvaW50PUV0LHN0PW51bGx9ZnVuY3Rp b24gSXQodCxlKXtpZihzdCl7dmFyIHI9dC1pdDtNdC5hZGQocChyKT4xODA/cisocj4wPzM2 MDotMzYwKTpyKX1lbHNlIGF0PXQsb3Q9ZTtWLnBvaW50KHQsZSksTHQodCxlKX1mdW5jdGlv biBPdCgpe1YubGluZVN0YXJ0KCl9ZnVuY3Rpb24genQoKXtJdChhdCxvdCksVi5saW5lRW5k KCkscChNdCk+byYmKHR0PS0ocnQ9MTgwKSksY3RbMF09dHQsY3RbMV09cnQsc3Q9bnVsbH1m dW5jdGlvbiBEdCh0LGUpe3JldHVybihlLT10KTwwP2UrMzYwOmV9ZnVuY3Rpb24gUnQodCxl KXtyZXR1cm4gdFswXS1lWzBdfWZ1bmN0aW9uIEZ0KHQsZSl7cmV0dXJuIHRbMF08PXRbMV0/ dFswXTw9ZSYmZTw9dFsxXTplPHRbMF18fHRbMV08ZX12YXIgQnQ9e3NwaGVyZTpFLHBvaW50 Ok50LGxpbmVTdGFydDpVdCxsaW5lRW5kOnF0LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe0J0 LmxpbmVTdGFydD1HdCxCdC5saW5lRW5kPVl0fSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7QnQu bGluZVN0YXJ0PVV0LEJ0LmxpbmVFbmQ9cXR9fTtmdW5jdGlvbiBOdCh0LGUpe3QqPWg7dmFy IHI9ZyhlKj1oKTtqdChyKmcodCkscipfKHQpLF8oZSkpfWZ1bmN0aW9uIGp0KHQsZSxyKXsr K3V0LGh0Kz0odC1odCkvdXQscHQrPShlLXB0KS91dCxkdCs9KHItZHQpL3V0fWZ1bmN0aW9u IFV0KCl7QnQucG9pbnQ9VnR9ZnVuY3Rpb24gVnQodCxlKXt0Kj1oO3ZhciByPWcoZSo9aCk7 VHQ9cipnKHQpLGt0PXIqXyh0KSxBdD1fKGUpLEJ0LnBvaW50PUh0LGp0KFR0LGt0LEF0KX1m dW5jdGlvbiBIdCh0LGUpe3QqPWg7dmFyIHI9ZyhlKj1oKSxuPXIqZyh0KSxpPXIqXyh0KSxh PV8oZSksbz1tKFQoKG89a3QqYS1BdCppKSpvKyhvPUF0Km4tVHQqYSkqbysobz1UdCppLWt0 Km4pKm8pLFR0Km4ra3QqaStBdCphKTtmdCs9byxtdCs9byooVHQrKFR0PW4pKSxndCs9byoo a3QrKGt0PWkpKSx2dCs9byooQXQrKEF0PWEpKSxqdChUdCxrdCxBdCl9ZnVuY3Rpb24gcXQo KXtCdC5wb2ludD1OdH1mdW5jdGlvbiBHdCgpe0J0LnBvaW50PVd0fWZ1bmN0aW9uIFl0KCl7 WHQoX3Qsd3QpLEJ0LnBvaW50PU50fWZ1bmN0aW9uIFd0KHQsZSl7X3Q9dCx3dD1lLHQqPWgs ZSo9aCxCdC5wb2ludD1YdDt2YXIgcj1nKGUpO1R0PXIqZyh0KSxrdD1yKl8odCksQXQ9Xyhl KSxqdChUdCxrdCxBdCl9ZnVuY3Rpb24gWHQodCxlKXt0Kj1oO3ZhciByPWcoZSo9aCksbj1y KmcodCksaT1yKl8odCksYT1fKGUpLG89a3QqYS1BdCppLHM9QXQqbi1UdCphLGw9VHQqaS1r dCpuLGM9VChvKm8rcypzK2wqbCksdT1NKGMpLGY9YyYmLXUvYzt5dCs9ZipvLHh0Kz1mKnMs YnQrPWYqbCxmdCs9dSxtdCs9dSooVHQrKFR0PW4pKSxndCs9dSooa3QrKGt0PWkpKSx2dCs9 dSooQXQrKEF0PWEpKSxqdChUdCxrdCxBdCl9ZnVuY3Rpb24gWnQodCl7cmV0dXJuIGZ1bmN0 aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIEp0KHQsZSl7ZnVuY3Rpb24gcihyLG4pe3JldHVy biByPXQocixuKSxlKHJbMF0sclsxXSl9cmV0dXJuIHQuaW52ZXJ0JiZlLmludmVydCYmKHIu aW52ZXJ0PWZ1bmN0aW9uKHIsbil7cmV0dXJuKHI9ZS5pbnZlcnQocixuKSkmJnQuaW52ZXJ0 KHJbMF0sclsxXSl9KSxyfWZ1bmN0aW9uIEt0KHQsZSl7cmV0dXJuW3AodCk+cz90K01hdGgu cm91bmQoLXQvdSkqdTp0LGVdfWZ1bmN0aW9uIFF0KHQsZSxyKXtyZXR1cm4odCU9dSk/ZXx8 cj9KdCh0ZSh0KSxlZShlLHIpKTp0ZSh0KTplfHxyP2VlKGUscik6S3R9ZnVuY3Rpb24gJHQo dCl7cmV0dXJuIGZ1bmN0aW9uKGUscil7cmV0dXJuWyhlKz10KT5zP2UtdTplPC1zP2UrdTpl LHJdfX1mdW5jdGlvbiB0ZSh0KXt2YXIgZT0kdCh0KTtyZXR1cm4gZS5pbnZlcnQ9JHQoLXQp LGV9ZnVuY3Rpb24gZWUodCxlKXt2YXIgcj1nKHQpLG49Xyh0KSxpPWcoZSksYT1fKGUpO2Z1 bmN0aW9uIG8odCxlKXt2YXIgbz1nKGUpLHM9Zyh0KSpvLGw9Xyh0KSpvLGM9XyhlKSx1PWMq citzKm47cmV0dXJuW20obCppLXUqYSxzKnItYypuKSxNKHUqaStsKmEpXX1yZXR1cm4gby5p bnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgbz1nKGUpLHM9Zyh0KSpvLGw9Xyh0KSpvLGM9Xyhl KSx1PWMqaS1sKmE7cmV0dXJuW20obCppK2MqYSxzKnIrdSpuKSxNKHUqci1zKm4pXX0sb31m dW5jdGlvbiByZSh0KXtmdW5jdGlvbiBlKGUpe3JldHVybihlPXQoZVswXSpoLGVbMV0qaCkp WzBdKj1mLGVbMV0qPWYsZX1yZXR1cm4gdD1RdCh0WzBdKmgsdFsxXSpoLHQubGVuZ3RoPjI/ dFsyXSpoOjApLGUuaW52ZXJ0PWZ1bmN0aW9uKGUpe3JldHVybihlPXQuaW52ZXJ0KGVbMF0q aCxlWzFdKmgpKVswXSo9ZixlWzFdKj1mLGV9LGV9ZnVuY3Rpb24gbmUodCxlLHIsbixpLGEp e2lmKHIpe3ZhciBvPWcoZSkscz1fKGUpLGw9bipyO251bGw9PWk/KGk9ZStuKnUsYT1lLWwv Mik6KGk9aWUobyxpKSxhPWllKG8sYSksKG4+MD9pPGE6aT5hKSYmKGkrPW4qdSkpO2Zvcih2 YXIgYyxmPWk7bj4wP2Y+YTpmPGE7Zi09bCljPVcoW28sLXMqZyhmKSwtcypfKGYpXSksdC5w b2ludChjWzBdLGNbMV0pfX1mdW5jdGlvbiBpZSh0LGUpeyhlPVgoZSkpWzBdLT10LCQoZSk7 dmFyIHI9QSgtZVsxXSk7cmV0dXJuKCgtZVsyXTwwPy1yOnIpK3UtbykldX1mdW5jdGlvbiBh ZSgpe3ZhciB0LGU9W107cmV0dXJue3BvaW50OmZ1bmN0aW9uKGUscixuKXt0LnB1c2goW2Us cixuXSl9LGxpbmVTdGFydDpmdW5jdGlvbigpe2UucHVzaCh0PVtdKX0sbGluZUVuZDpFLHJl am9pbjpmdW5jdGlvbigpe2UubGVuZ3RoPjEmJmUucHVzaChlLnBvcCgpLmNvbmNhdChlLnNo aWZ0KCkpKX0scmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHI9ZTtyZXR1cm4gZT1bXSx0PW51bGws cn19fWZ1bmN0aW9uIG9lKHQsZSl7cmV0dXJuIHAodFswXS1lWzBdKTxvJiZwKHRbMV0tZVsx XSk8b31mdW5jdGlvbiBzZSh0LGUscixuKXt0aGlzLng9dCx0aGlzLno9ZSx0aGlzLm89cix0 aGlzLmU9bix0aGlzLnY9ITEsdGhpcy5uPXRoaXMucD1udWxsfWZ1bmN0aW9uIGxlKHQsZSxy LG4saSl7dmFyIGEscyxsPVtdLGM9W107aWYodC5mb3JFYWNoKChmdW5jdGlvbih0KXtpZigh KChlPXQubGVuZ3RoLTEpPD0wKSl7dmFyIGUscixuPXRbMF0scz10W2VdO2lmKG9lKG4scykp e2lmKCFuWzJdJiYhc1syXSl7Zm9yKGkubGluZVN0YXJ0KCksYT0wO2E8ZTsrK2EpaS5wb2lu dCgobj10W2FdKVswXSxuWzFdKTtyZXR1cm4gdm9pZCBpLmxpbmVFbmQoKX1zWzBdKz0yKm99 bC5wdXNoKHI9bmV3IHNlKG4sdCxudWxsLCEwKSksYy5wdXNoKHIubz1uZXcgc2UobixudWxs LHIsITEpKSxsLnB1c2gocj1uZXcgc2Uocyx0LG51bGwsITEpKSxjLnB1c2goci5vPW5ldyBz ZShzLG51bGwsciwhMCkpfX0pKSxsLmxlbmd0aCl7Zm9yKGMuc29ydChlKSxjZShsKSxjZShj KSxhPTAscz1jLmxlbmd0aDthPHM7KythKWNbYV0uZT1yPSFyO2Zvcih2YXIgdSxmLGg9bFsw XTs7KXtmb3IodmFyIHA9aCxkPSEwO3AudjspaWYoKHA9cC5uKT09PWgpcmV0dXJuO3U9cC56 LGkubGluZVN0YXJ0KCk7ZG97aWYocC52PXAuby52PSEwLHAuZSl7aWYoZClmb3IoYT0wLHM9 dS5sZW5ndGg7YTxzOysrYSlpLnBvaW50KChmPXVbYV0pWzBdLGZbMV0pO2Vsc2UgbihwLngs cC5uLngsMSxpKTtwPXAubn1lbHNle2lmKGQpZm9yKHU9cC5wLnosYT11Lmxlbmd0aC0xO2E+ PTA7LS1hKWkucG9pbnQoKGY9dVthXSlbMF0sZlsxXSk7ZWxzZSBuKHAueCxwLnAueCwtMSxp KTtwPXAucH11PShwPXAubykueixkPSFkfXdoaWxlKCFwLnYpO2kubGluZUVuZCgpfX19ZnVu Y3Rpb24gY2UodCl7aWYoZT10Lmxlbmd0aCl7Zm9yKHZhciBlLHIsbj0wLGk9dFswXTsrK248 ZTspaS5uPXI9dFtuXSxyLnA9aSxpPXI7aS5uPXI9dFswXSxyLnA9aX19S3QuaW52ZXJ0PUt0 O3ZhciB1ZT1yKCk7ZnVuY3Rpb24gZmUodCl7cmV0dXJuIHAodFswXSk8PXM/dFswXTp3KHRb MF0pKigocCh0WzBdKStzKSV1LXMpfWZ1bmN0aW9uIGhlKHQsZSl7dmFyIHI9ZmUoZSksbj1l WzFdLGk9XyhuKSxhPVtfKHIpLC1nKHIpLDBdLGY9MCxoPTA7dWUucmVzZXQoKSwxPT09aT9u PWwrbzotMT09PWkmJihuPS1sLW8pO2Zvcih2YXIgcD0wLGQ9dC5sZW5ndGg7cDxkOysrcClp Zih5PSh2PXRbcF0pLmxlbmd0aClmb3IodmFyIHYseSx4PXZbeS0xXSxiPWZlKHgpLHc9eFsx XS8yK2MsVD1fKHcpLGs9Zyh3KSxBPTA7QTx5OysrQSxiPUUsVD1DLGs9UCx4PVMpe3ZhciBT PXZbQV0sRT1mZShTKSxMPVNbMV0vMitjLEM9XyhMKSxQPWcoTCksST1FLWIsTz1JPj0wPzE6 LTEsej1PKkksRD16PnMsUj1UKkM7aWYodWUuYWRkKG0oUipPKl8oeiksaypQK1IqZyh6KSkp LGYrPUQ/SStPKnU6SSxEXmI+PXJeRT49cil7dmFyIEY9SihYKHgpLFgoUykpOyQoRik7dmFy IEI9SihhLEYpOyQoQik7dmFyIE49KEReST49MD8tMToxKSpNKEJbMl0pOyhuPk58fG49PT1O JiYoRlswXXx8RlsxXSkpJiYoaCs9RF5JPj0wPzE6LTEpfX1yZXR1cm4oZjwtb3x8ZjxvJiZ1 ZTwtbyleMSZofWZ1bmN0aW9uIHBlKHQscixuLGkpe3JldHVybiBmdW5jdGlvbihhKXt2YXIg byxzLGwsYz1yKGEpLHU9YWUoKSxmPXIodSksaD0hMSxwPXtwb2ludDpkLGxpbmVTdGFydDpn LGxpbmVFbmQ6dixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtwLnBvaW50PXkscC5saW5lU3Rh cnQ9eCxwLmxpbmVFbmQ9YixzPVtdLG89W119LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtwLnBv aW50PWQscC5saW5lU3RhcnQ9ZyxwLmxpbmVFbmQ9dixzPWUubWVyZ2Uocyk7dmFyIHQ9aGUo byxpKTtzLmxlbmd0aD8oaHx8KGEucG9seWdvblN0YXJ0KCksaD0hMCksbGUocyxtZSx0LG4s YSkpOnQmJihofHwoYS5wb2x5Z29uU3RhcnQoKSxoPSEwKSxhLmxpbmVTdGFydCgpLG4obnVs bCxudWxsLDEsYSksYS5saW5lRW5kKCkpLGgmJihhLnBvbHlnb25FbmQoKSxoPSExKSxzPW89 bnVsbH0sc3BoZXJlOmZ1bmN0aW9uKCl7YS5wb2x5Z29uU3RhcnQoKSxhLmxpbmVTdGFydCgp LG4obnVsbCxudWxsLDEsYSksYS5saW5lRW5kKCksYS5wb2x5Z29uRW5kKCl9fTtmdW5jdGlv biBkKGUscil7dChlLHIpJiZhLnBvaW50KGUscil9ZnVuY3Rpb24gbSh0LGUpe2MucG9pbnQo dCxlKX1mdW5jdGlvbiBnKCl7cC5wb2ludD1tLGMubGluZVN0YXJ0KCl9ZnVuY3Rpb24gdigp e3AucG9pbnQ9ZCxjLmxpbmVFbmQoKX1mdW5jdGlvbiB5KHQsZSl7bC5wdXNoKFt0LGVdKSxm LnBvaW50KHQsZSl9ZnVuY3Rpb24geCgpe2YubGluZVN0YXJ0KCksbD1bXX1mdW5jdGlvbiBi KCl7eShsWzBdWzBdLGxbMF1bMV0pLGYubGluZUVuZCgpO3ZhciB0LGUscixuLGk9Zi5jbGVh bigpLGM9dS5yZXN1bHQoKSxwPWMubGVuZ3RoO2lmKGwucG9wKCksby5wdXNoKGwpLGw9bnVs bCxwKWlmKDEmaSl7aWYoKGU9KHI9Y1swXSkubGVuZ3RoLTEpPjApe2ZvcihofHwoYS5wb2x5 Z29uU3RhcnQoKSxoPSEwKSxhLmxpbmVTdGFydCgpLHQ9MDt0PGU7Kyt0KWEucG9pbnQoKG49 clt0XSlbMF0sblsxXSk7YS5saW5lRW5kKCl9fWVsc2UgcD4xJiYyJmkmJmMucHVzaChjLnBv cCgpLmNvbmNhdChjLnNoaWZ0KCkpKSxzLnB1c2goYy5maWx0ZXIoZGUpKX1yZXR1cm4gcH19 ZnVuY3Rpb24gZGUodCl7cmV0dXJuIHQubGVuZ3RoPjF9ZnVuY3Rpb24gbWUodCxlKXtyZXR1 cm4oKHQ9dC54KVswXTwwP3RbMV0tbC1vOmwtdFsxXSktKChlPWUueClbMF08MD9lWzFdLWwt bzpsLWVbMV0pfXZhciBnZT1wZSgoZnVuY3Rpb24oKXtyZXR1cm4hMH0pLChmdW5jdGlvbih0 KXt2YXIgZSxyPU5hTixuPU5hTixpPU5hTjtyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7 dC5saW5lU3RhcnQoKSxlPTF9LHBvaW50OmZ1bmN0aW9uKGEsYyl7dmFyIHU9YT4wP3M6LXMs Zj1wKGEtcik7cChmLXMpPG8/KHQucG9pbnQocixuPShuK2MpLzI+MD9sOi1sKSx0LnBvaW50 KGksbiksdC5saW5lRW5kKCksdC5saW5lU3RhcnQoKSx0LnBvaW50KHUsbiksdC5wb2ludChh LG4pLGU9MCk6aSE9PXUmJmY+PXMmJihwKHItaSk8byYmKHItPWkqbykscChhLXUpPG8mJihh LT11Km8pLG49ZnVuY3Rpb24odCxlLHIsbil7dmFyIGksYSxzPV8odC1yKTtyZXR1cm4gcChz KT5vP2QoKF8oZSkqKGE9ZyhuKSkqXyhyKS1fKG4pKihpPWcoZSkpKl8odCkpLyhpKmEqcykp OihlK24pLzJ9KHIsbixhLGMpLHQucG9pbnQoaSxuKSx0LmxpbmVFbmQoKSx0LmxpbmVTdGFy dCgpLHQucG9pbnQodSxuKSxlPTApLHQucG9pbnQocj1hLG49YyksaT11fSxsaW5lRW5kOmZ1 bmN0aW9uKCl7dC5saW5lRW5kKCkscj1uPU5hTn0sY2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4g Mi1lfX19KSwoZnVuY3Rpb24odCxlLHIsbil7dmFyIGk7aWYobnVsbD09dClpPXIqbCxuLnBv aW50KC1zLGkpLG4ucG9pbnQoMCxpKSxuLnBvaW50KHMsaSksbi5wb2ludChzLDApLG4ucG9p bnQocywtaSksbi5wb2ludCgwLC1pKSxuLnBvaW50KC1zLC1pKSxuLnBvaW50KC1zLDApLG4u cG9pbnQoLXMsaSk7ZWxzZSBpZihwKHRbMF0tZVswXSk+byl7dmFyIGE9dFswXTxlWzBdP3M6 LXM7aT1yKmEvMixuLnBvaW50KC1hLGkpLG4ucG9pbnQoMCxpKSxuLnBvaW50KGEsaSl9ZWxz ZSBuLnBvaW50KGVbMF0sZVsxXSl9KSxbLXMsLWxdKTtmdW5jdGlvbiB2ZSh0KXt2YXIgZT1n KHQpLHI9NipoLG49ZT4wLGk9cChlKT5vO2Z1bmN0aW9uIGEodCxyKXtyZXR1cm4gZyh0KSpn KHIpPmV9ZnVuY3Rpb24gbCh0LHIsbil7dmFyIGk9WzEsMCwwXSxhPUooWCh0KSxYKHIpKSxs PVooYSxhKSxjPWFbMF0sdT1sLWMqYztpZighdSlyZXR1cm4hbiYmdDt2YXIgZj1lKmwvdSxo PS1lKmMvdSxkPUooaSxhKSxtPVEoaSxmKTtLKG0sUShhLGgpKTt2YXIgZz1kLHY9WihtLGcp LHk9WihnLGcpLHg9dip2LXkqKFoobSxtKS0xKTtpZighKHg8MCkpe3ZhciBiPVQoeCksXz1R KGcsKC12LWIpL3kpO2lmKEsoXyxtKSxfPVcoXyksIW4pcmV0dXJuIF87dmFyIHcsaz10WzBd LEE9clswXSxNPXRbMV0sUz1yWzFdO0E8ayYmKHc9ayxrPUEsQT13KTt2YXIgRT1BLWssTD1w KEUtcyk8bztpZighTCYmUzxNJiYodz1NLE09UyxTPXcpLEx8fEU8bz9MP00rUz4wXl9bMV08 KHAoX1swXS1rKTxvP006Uyk6TTw9X1sxXSYmX1sxXTw9UzpFPnNeKGs8PV9bMF0mJl9bMF08 PUEpKXt2YXIgQz1RKGcsKC12K2IpL3kpO3JldHVybiBLKEMsbSksW18sVyhDKV19fX1mdW5j dGlvbiBjKGUscil7dmFyIGk9bj90OnMtdCxhPTA7cmV0dXJuIGU8LWk/YXw9MTplPmkmJihh fD0yKSxyPC1pP2F8PTQ6cj5pJiYoYXw9OCksYX1yZXR1cm4gcGUoYSwoZnVuY3Rpb24odCl7 dmFyIGUscixvLHUsZjtyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dT1vPSExLGY9MX0s cG9pbnQ6ZnVuY3Rpb24oaCxwKXt2YXIgZCxtPVtoLHBdLGc9YShoLHApLHY9bj9nPzA6Yyho LHApOmc/YyhoKyhoPDA/czotcykscCk6MDtpZighZSYmKHU9bz1nKSYmdC5saW5lU3RhcnQo KSxnIT09byYmKCEoZD1sKGUsbSkpfHxvZShlLGQpfHxvZShtLGQpKSYmKG1bMl09MSksZyE9 PW8pZj0wLGc/KHQubGluZVN0YXJ0KCksZD1sKG0sZSksdC5wb2ludChkWzBdLGRbMV0pKToo ZD1sKGUsbSksdC5wb2ludChkWzBdLGRbMV0sMiksdC5saW5lRW5kKCkpLGU9ZDtlbHNlIGlm KGkmJmUmJm5eZyl7dmFyIHk7diZyfHwhKHk9bChtLGUsITApKXx8KGY9MCxuPyh0LmxpbmVT dGFydCgpLHQucG9pbnQoeVswXVswXSx5WzBdWzFdKSx0LnBvaW50KHlbMV1bMF0seVsxXVsx XSksdC5saW5lRW5kKCkpOih0LnBvaW50KHlbMV1bMF0seVsxXVsxXSksdC5saW5lRW5kKCks dC5saW5lU3RhcnQoKSx0LnBvaW50KHlbMF1bMF0seVswXVsxXSwzKSkpfSFnfHxlJiZvZShl LG0pfHx0LnBvaW50KG1bMF0sbVsxXSksZT1tLG89ZyxyPXZ9LGxpbmVFbmQ6ZnVuY3Rpb24o KXtvJiZ0LmxpbmVFbmQoKSxlPW51bGx9LGNsZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIGZ8KHUm Jm8pPDwxfX19KSwoZnVuY3Rpb24oZSxuLGksYSl7bmUoYSx0LHIsaSxlLG4pfSksbj9bMCwt dF06Wy1zLHQtc10pfWZ1bmN0aW9uIHllKHQscixuLGkpe2Z1bmN0aW9uIGEoZSxhKXtyZXR1 cm4gdDw9ZSYmZTw9biYmcjw9YSYmYTw9aX1mdW5jdGlvbiBzKGUsYSxvLHMpe3ZhciBjPTAs Zj0wO2lmKG51bGw9PWV8fChjPWwoZSxvKSkhPT0oZj1sKGEsbykpfHx1KGUsYSk8MF5vPjAp ZG97cy5wb2ludCgwPT09Y3x8Mz09PWM/dDpuLGM+MT9pOnIpfXdoaWxlKChjPShjK28rNCkl NCkhPT1mKTtlbHNlIHMucG9pbnQoYVswXSxhWzFdKX1mdW5jdGlvbiBsKGUsaSl7cmV0dXJu IHAoZVswXS10KTxvP2k+MD8wOjM6cChlWzBdLW4pPG8/aT4wPzI6MTpwKGVbMV0tcik8bz9p PjA/MTowOmk+MD8zOjJ9ZnVuY3Rpb24gYyh0LGUpe3JldHVybiB1KHQueCxlLngpfWZ1bmN0 aW9uIHUodCxlKXt2YXIgcj1sKHQsMSksbj1sKGUsMSk7cmV0dXJuIHIhPT1uP3ItbjowPT09 cj9lWzFdLXRbMV06MT09PXI/dFswXS1lWzBdOjI9PT1yP3RbMV0tZVsxXTplWzBdLXRbMF19 cmV0dXJuIGZ1bmN0aW9uKG8pe3ZhciBsLHUsZixoLHAsZCxtLGcsdix5LHgsYj1vLF89YWUo KSx3PXtwb2ludDpULGxpbmVTdGFydDpmdW5jdGlvbigpe3cucG9pbnQ9ayx1JiZ1LnB1c2go Zj1bXSk7eT0hMCx2PSExLG09Zz1OYU59LGxpbmVFbmQ6ZnVuY3Rpb24oKXtsJiYoayhoLHAp LGQmJnYmJl8ucmVqb2luKCksbC5wdXNoKF8ucmVzdWx0KCkpKTt3LnBvaW50PVQsdiYmYi5s aW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2I9XyxsPVtdLHU9W10seD0hMH0s cG9seWdvbkVuZDpmdW5jdGlvbigpe3ZhciByPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTAscj0w LG49dS5sZW5ndGg7cjxuOysrcilmb3IodmFyIGEsbyxzPXVbcl0sbD0xLGM9cy5sZW5ndGgs Zj1zWzBdLGg9ZlswXSxwPWZbMV07bDxjOysrbClhPWgsbz1wLGY9c1tsXSxoPWZbMF0scD1m WzFdLG88PWk/cD5pJiYoaC1hKSooaS1vKT4ocC1vKSoodC1hKSYmKytlOnA8PWkmJihoLWEp KihpLW8pPChwLW8pKih0LWEpJiYtLWU7cmV0dXJuIGV9KCksbj14JiZyLGE9KGw9ZS5tZXJn ZShsKSkubGVuZ3RoOyhufHxhKSYmKG8ucG9seWdvblN0YXJ0KCksbiYmKG8ubGluZVN0YXJ0 KCkscyhudWxsLG51bGwsMSxvKSxvLmxpbmVFbmQoKSksYSYmbGUobCxjLHIscyxvKSxvLnBv bHlnb25FbmQoKSk7Yj1vLGw9dT1mPW51bGx9fTtmdW5jdGlvbiBUKHQsZSl7YSh0LGUpJiZi LnBvaW50KHQsZSl9ZnVuY3Rpb24gayhlLG8pe3ZhciBzPWEoZSxvKTtpZih1JiZmLnB1c2go W2Usb10pLHkpaD1lLHA9byxkPXMseT0hMSxzJiYoYi5saW5lU3RhcnQoKSxiLnBvaW50KGUs bykpO2Vsc2UgaWYocyYmdiliLnBvaW50KGUsbyk7ZWxzZXt2YXIgbD1bbT1NYXRoLm1heCgt MWU5LE1hdGgubWluKDFlOSxtKSksZz1NYXRoLm1heCgtMWU5LE1hdGgubWluKDFlOSxnKSld LGM9W2U9TWF0aC5tYXgoLTFlOSxNYXRoLm1pbigxZTksZSkpLG89TWF0aC5tYXgoLTFlOSxN YXRoLm1pbigxZTksbykpXTshZnVuY3Rpb24odCxlLHIsbixpLGEpe3ZhciBvLHM9dFswXSxs PXRbMV0sYz0wLHU9MSxmPWVbMF0tcyxoPWVbMV0tbDtpZihvPXItcyxmfHwhKG8+MCkpe2lm KG8vPWYsZjwwKXtpZihvPGMpcmV0dXJuO288dSYmKHU9byl9ZWxzZSBpZihmPjApe2lmKG8+ dSlyZXR1cm47bz5jJiYoYz1vKX1pZihvPWktcyxmfHwhKG88MCkpe2lmKG8vPWYsZjwwKXtp ZihvPnUpcmV0dXJuO28+YyYmKGM9byl9ZWxzZSBpZihmPjApe2lmKG88YylyZXR1cm47bzx1 JiYodT1vKX1pZihvPW4tbCxofHwhKG8+MCkpe2lmKG8vPWgsaDwwKXtpZihvPGMpcmV0dXJu O288dSYmKHU9byl9ZWxzZSBpZihoPjApe2lmKG8+dSlyZXR1cm47bz5jJiYoYz1vKX1pZihv PWEtbCxofHwhKG88MCkpe2lmKG8vPWgsaDwwKXtpZihvPnUpcmV0dXJuO28+YyYmKGM9byl9 ZWxzZSBpZihoPjApe2lmKG88YylyZXR1cm47bzx1JiYodT1vKX1yZXR1cm4gYz4wJiYodFsw XT1zK2MqZix0WzFdPWwrYypoKSx1PDEmJihlWzBdPXMrdSpmLGVbMV09bCt1KmgpLCEwfX19 fX0obCxjLHQscixuLGkpP3MmJihiLmxpbmVTdGFydCgpLGIucG9pbnQoZSxvKSx4PSExKToo dnx8KGIubGluZVN0YXJ0KCksYi5wb2ludChsWzBdLGxbMV0pKSxiLnBvaW50KGNbMF0sY1sx XSksc3x8Yi5saW5lRW5kKCkseD0hMSl9bT1lLGc9byx2PXN9cmV0dXJuIHd9fXZhciB4ZSxi ZSxfZSx3ZT1yKCksVGU9e3NwaGVyZTpFLHBvaW50OkUsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7 VGUucG9pbnQ9QWUsVGUubGluZUVuZD1rZX0sbGluZUVuZDpFLHBvbHlnb25TdGFydDpFLHBv bHlnb25FbmQ6RX07ZnVuY3Rpb24ga2UoKXtUZS5wb2ludD1UZS5saW5lRW5kPUV9ZnVuY3Rp b24gQWUodCxlKXt4ZT10Kj1oLGJlPV8oZSo9aCksX2U9ZyhlKSxUZS5wb2ludD1NZX1mdW5j dGlvbiBNZSh0LGUpe3QqPWg7dmFyIHI9XyhlKj1oKSxuPWcoZSksaT1wKHQteGUpLGE9Zyhp KSxvPW4qXyhpKSxzPV9lKnItYmUqbiphLGw9YmUqcitfZSpuKmE7d2UuYWRkKG0oVChvKm8r cypzKSxsKSkseGU9dCxiZT1yLF9lPW59ZnVuY3Rpb24gU2UodCl7cmV0dXJuIHdlLnJlc2V0 KCkseih0LFRlKSwrd2V9dmFyIEVlPVtudWxsLG51bGxdLExlPXt0eXBlOiJMaW5lU3RyaW5n Iixjb29yZGluYXRlczpFZX07ZnVuY3Rpb24gQ2UodCxlKXtyZXR1cm4gRWVbMF09dCxFZVsx XT1lLFNlKExlKX12YXIgUGU9e0ZlYXR1cmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gT2UodC5n ZW9tZXRyeSxlKX0sRmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9 dC5mZWF0dXJlcyxuPS0xLGk9ci5sZW5ndGg7KytuPGk7KWlmKE9lKHJbbl0uZ2VvbWV0cnks ZSkpcmV0dXJuITA7cmV0dXJuITF9fSxJZT17U3BoZXJlOmZ1bmN0aW9uKCl7cmV0dXJuITB9 LFBvaW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHplKHQuY29vcmRpbmF0ZXMsZSl9LE11bHRp UG9pbnQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5jb29yZGluYXRlcyxuPS0xLGk9ci5s ZW5ndGg7KytuPGk7KWlmKHplKHJbbl0sZSkpcmV0dXJuITA7cmV0dXJuITF9LExpbmVTdHJp bmc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gRGUodC5jb29yZGluYXRlcyxlKX0sTXVsdGlMaW5l U3RyaW5nOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQuY29vcmRpbmF0ZXMsbj0tMSxpPXIu bGVuZ3RoOysrbjxpOylpZihEZShyW25dLGUpKXJldHVybiEwO3JldHVybiExfSxQb2x5Z29u OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIFJlKHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9seWdv bjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10LmNvb3JkaW5hdGVzLG49LTEsaT1yLmxlbmd0 aDsrK248aTspaWYoUmUocltuXSxlKSlyZXR1cm4hMDtyZXR1cm4hMX0sR2VvbWV0cnlDb2xs ZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQuZ2VvbWV0cmllcyxuPS0xLGk9ci5s ZW5ndGg7KytuPGk7KWlmKE9lKHJbbl0sZSkpcmV0dXJuITA7cmV0dXJuITF9fTtmdW5jdGlv biBPZSh0LGUpe3JldHVybiEoIXR8fCFJZS5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpKSYmSWVb dC50eXBlXSh0LGUpfWZ1bmN0aW9uIHplKHQsZSl7cmV0dXJuIDA9PT1DZSh0LGUpfWZ1bmN0 aW9uIERlKHQsZSl7Zm9yKHZhciByLG4saSxhPTAsbz10Lmxlbmd0aDthPG87YSsrKXtpZigw PT09KG49Q2UodFthXSxlKSkpcmV0dXJuITA7aWYoYT4wJiYoaT1DZSh0W2FdLHRbYS0xXSkp PjAmJnI8PWkmJm48PWkmJihyK24taSkqKDEtTWF0aC5wb3coKHItbikvaSwyKSk8MWUtMTIq aSlyZXR1cm4hMDtyPW59cmV0dXJuITF9ZnVuY3Rpb24gUmUodCxlKXtyZXR1cm4hIWhlKHQu bWFwKEZlKSxCZShlKSl9ZnVuY3Rpb24gRmUodCl7cmV0dXJuKHQ9dC5tYXAoQmUpKS5wb3Ao KSx0fWZ1bmN0aW9uIEJlKHQpe3JldHVyblt0WzBdKmgsdFsxXSpoXX1mdW5jdGlvbiBOZSh0 LHIsbil7dmFyIGk9ZS5yYW5nZSh0LHItbyxuKS5jb25jYXQocik7cmV0dXJuIGZ1bmN0aW9u KHQpe3JldHVybiBpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuW3QsZV19KSl9fWZ1bmN0aW9u IGplKHQscixuKXt2YXIgaT1lLnJhbmdlKHQsci1vLG4pLmNvbmNhdChyKTtyZXR1cm4gZnVu Y3Rpb24odCl7cmV0dXJuIGkubWFwKChmdW5jdGlvbihlKXtyZXR1cm5bZSx0XX0pKX19ZnVu Y3Rpb24gVWUoKXt2YXIgdCxyLG4saSxhLHMsbCxjLHUsZixoLGQsbT0xMCxnPW0seT05MCx4 PTM2MCxiPTIuNTtmdW5jdGlvbiBfKCl7cmV0dXJue3R5cGU6Ik11bHRpTGluZVN0cmluZyIs Y29vcmRpbmF0ZXM6dygpfX1mdW5jdGlvbiB3KCl7cmV0dXJuIGUucmFuZ2UodihpL3kpKnks bix5KS5tYXAoaCkuY29uY2F0KGUucmFuZ2UodihjL3gpKngsbCx4KS5tYXAoZCkpLmNvbmNh dChlLnJhbmdlKHYoci9tKSptLHQsbSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gcCh0 JXkpPm99KSkubWFwKHUpKS5jb25jYXQoZS5yYW5nZSh2KHMvZykqZyxhLGcpLmZpbHRlcigo ZnVuY3Rpb24odCl7cmV0dXJuIHAodCV4KT5vfSkpLm1hcChmKSl9cmV0dXJuIF8ubGluZXM9 ZnVuY3Rpb24oKXtyZXR1cm4gdygpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6Ikxp bmVTdHJpbmciLGNvb3JkaW5hdGVzOnR9fSkpfSxfLm91dGxpbmU9ZnVuY3Rpb24oKXtyZXR1 cm57dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6W2goaSkuY29uY2F0KGQobCkuc2xpY2Uo MSksaChuKS5yZXZlcnNlKCkuc2xpY2UoMSksZChjKS5yZXZlcnNlKCkuc2xpY2UoMSkpXX19 LF8uZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP18uZXh0ZW50 TWFqb3IodCkuZXh0ZW50TWlub3IodCk6Xy5leHRlbnRNaW5vcigpfSxfLmV4dGVudE1ham9y PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSt0WzBdWzBdLG49K3Rb MV1bMF0sYz0rdFswXVsxXSxsPSt0WzFdWzFdLGk+biYmKHQ9aSxpPW4sbj10KSxjPmwmJih0 PWMsYz1sLGw9dCksXy5wcmVjaXNpb24oYikpOltbaSxjXSxbbixsXV19LF8uZXh0ZW50TWlu b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K2VbMF1bMF0sdD0r ZVsxXVswXSxzPStlWzBdWzFdLGE9K2VbMV1bMV0scj50JiYoZT1yLHI9dCx0PWUpLHM+YSYm KGU9cyxzPWEsYT1lKSxfLnByZWNpc2lvbihiKSk6W1tyLHNdLFt0LGFdXX0sXy5zdGVwPWZ1 bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP18uc3RlcE1ham9yKHQpLnN0ZXBN aW5vcih0KTpfLnN0ZXBNaW5vcigpfSxfLnN0ZXBNYWpvcj1mdW5jdGlvbih0KXtyZXR1cm4g YXJndW1lbnRzLmxlbmd0aD8oeT0rdFswXSx4PSt0WzFdLF8pOlt5LHhdfSxfLnN0ZXBNaW5v cj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0rdFswXSxnPSt0WzFd LF8pOlttLGddfSxfLnByZWNpc2lvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl bmd0aD8oYj0rZSx1PU5lKHMsYSw5MCksZj1qZShyLHQsYiksaD1OZShjLGwsOTApLGQ9amUo aSxuLGIpLF8pOmJ9LF8uZXh0ZW50TWFqb3IoW1stMTgwLC05MCtvXSxbMTgwLDkwLW9dXSku ZXh0ZW50TWlub3IoW1stMTgwLC04MC1vXSxbMTgwLDgwK29dXSl9ZnVuY3Rpb24gVmUodCl7 cmV0dXJuIHR9dmFyIEhlLHFlLEdlLFllLFdlPXIoKSxYZT1yKCksWmU9e3BvaW50OkUsbGlu ZVN0YXJ0OkUsbGluZUVuZDpFLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe1plLmxpbmVTdGFy dD1KZSxaZS5saW5lRW5kPSRlfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7WmUubGluZVN0YXJ0 PVplLmxpbmVFbmQ9WmUucG9pbnQ9RSxXZS5hZGQocChYZSkpLFhlLnJlc2V0KCl9LHJlc3Vs dDpmdW5jdGlvbigpe3ZhciB0PVdlLzI7cmV0dXJuIFdlLnJlc2V0KCksdH19O2Z1bmN0aW9u IEplKCl7WmUucG9pbnQ9S2V9ZnVuY3Rpb24gS2UodCxlKXtaZS5wb2ludD1RZSxIZT1HZT10 LHFlPVllPWV9ZnVuY3Rpb24gUWUodCxlKXtYZS5hZGQoWWUqdC1HZSplKSxHZT10LFllPWV9 ZnVuY3Rpb24gJGUoKXtRZShIZSxxZSl9dmFyIHRyPTEvMCxlcj10cixycj0tdHIsbnI9cnIs aXI9e3BvaW50OmZ1bmN0aW9uKHQsZSl7dDx0ciYmKHRyPXQpO3Q+cnImJihycj10KTtlPGVy JiYoZXI9ZSk7ZT5uciYmKG5yPWUpfSxsaW5lU3RhcnQ6RSxsaW5lRW5kOkUscG9seWdvblN0 YXJ0OkUscG9seWdvbkVuZDpFLHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PVtbdHIsZXJdLFty cixucl1dO3JldHVybiBycj1ucj0tKGVyPXRyPTEvMCksdH19O3ZhciBhcixvcixzcixscixj cj0wLHVyPTAsZnI9MCxocj0wLHByPTAsZHI9MCxtcj0wLGdyPTAsdnI9MCx5cj17cG9pbnQ6 eHIsbGluZVN0YXJ0OmJyLGxpbmVFbmQ6VHIscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7eXIu bGluZVN0YXJ0PWtyLHlyLmxpbmVFbmQ9QXJ9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt5ci5w b2ludD14cix5ci5saW5lU3RhcnQ9YnIseXIubGluZUVuZD1Ucn0scmVzdWx0OmZ1bmN0aW9u KCl7dmFyIHQ9dnI/W21yL3ZyLGdyL3ZyXTpkcj9baHIvZHIscHIvZHJdOmZyP1tjci9mcix1 ci9mcl06W05hTixOYU5dO3JldHVybiBjcj11cj1mcj1ocj1wcj1kcj1tcj1ncj12cj0wLHR9 fTtmdW5jdGlvbiB4cih0LGUpe2NyKz10LHVyKz1lLCsrZnJ9ZnVuY3Rpb24gYnIoKXt5ci5w b2ludD1fcn1mdW5jdGlvbiBfcih0LGUpe3lyLnBvaW50PXdyLHhyKHNyPXQsbHI9ZSl9ZnVu Y3Rpb24gd3IodCxlKXt2YXIgcj10LXNyLG49ZS1scixpPVQocipyK24qbik7aHIrPWkqKHNy K3QpLzIscHIrPWkqKGxyK2UpLzIsZHIrPWkseHIoc3I9dCxscj1lKX1mdW5jdGlvbiBUcigp e3lyLnBvaW50PXhyfWZ1bmN0aW9uIGtyKCl7eXIucG9pbnQ9TXJ9ZnVuY3Rpb24gQXIoKXtT cihhcixvcil9ZnVuY3Rpb24gTXIodCxlKXt5ci5wb2ludD1Tcix4cihhcj1zcj10LG9yPWxy PWUpfWZ1bmN0aW9uIFNyKHQsZSl7dmFyIHI9dC1zcixuPWUtbHIsaT1UKHIqcituKm4pO2hy Kz1pKihzcit0KS8yLHByKz1pKihscitlKS8yLGRyKz1pLG1yKz0oaT1scip0LXNyKmUpKihz cit0KSxncis9aSoobHIrZSksdnIrPTMqaSx4cihzcj10LGxyPWUpfWZ1bmN0aW9uIEVyKHQp e3RoaXMuX2NvbnRleHQ9dH1Fci5wcm90b3R5cGU9e19yYWRpdXM6NC41LHBvaW50UmFkaXVz OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yYWRpdXM9dCx0aGlzfSxwb2x5Z29uU3RhcnQ6 ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt0aGlzLl9s aW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpm dW5jdGlvbigpezA9PT10aGlzLl9saW5lJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRo aXMuX3BvaW50PU5hTn0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godGhpcy5fcG9pbnQp e2Nhc2UgMDp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpLHRoaXMuX3BvaW50PTE7YnJlYWs7 Y2FzZSAxOnRoaXMuX2NvbnRleHQubGluZVRvKHQsZSk7YnJlYWs7ZGVmYXVsdDp0aGlzLl9j b250ZXh0Lm1vdmVUbyh0K3RoaXMuX3JhZGl1cyxlKSx0aGlzLl9jb250ZXh0LmFyYyh0LGUs dGhpcy5fcmFkaXVzLDAsdSl9fSxyZXN1bHQ6RX07dmFyIExyLENyLFByLElyLE9yLHpyPXIo KSxEcj17cG9pbnQ6RSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtEci5wb2ludD1Scn0sbGluZUVu ZDpmdW5jdGlvbigpe0xyJiZGcihDcixQciksRHIucG9pbnQ9RX0scG9seWdvblN0YXJ0OmZ1 bmN0aW9uKCl7THI9ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtMcj1udWxsfSxyZXN1bHQ6 ZnVuY3Rpb24oKXt2YXIgdD0renI7cmV0dXJuIHpyLnJlc2V0KCksdH19O2Z1bmN0aW9uIFJy KHQsZSl7RHIucG9pbnQ9RnIsQ3I9SXI9dCxQcj1Pcj1lfWZ1bmN0aW9uIEZyKHQsZSl7SXIt PXQsT3ItPWUsenIuYWRkKFQoSXIqSXIrT3IqT3IpKSxJcj10LE9yPWV9ZnVuY3Rpb24gQnIo KXt0aGlzLl9zdHJpbmc9W119ZnVuY3Rpb24gTnIodCl7cmV0dXJuIm0wLCIrdCsiYSIrdCsi LCIrdCsiIDAgMSwxIDAsIistMip0KyJhIit0KyIsIit0KyIgMCAxLDEgMCwiKzIqdCsieiJ9 ZnVuY3Rpb24ganIodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciByPW5ldyBVcjtmb3IodmFy IG4gaW4gdClyW25dPXRbbl07cmV0dXJuIHIuc3RyZWFtPWUscn19ZnVuY3Rpb24gVXIoKXt9 ZnVuY3Rpb24gVnIodCxlLHIpe3ZhciBuPXQuY2xpcEV4dGVudCYmdC5jbGlwRXh0ZW50KCk7 cmV0dXJuIHQuc2NhbGUoMTUwKS50cmFuc2xhdGUoWzAsMF0pLG51bGwhPW4mJnQuY2xpcEV4 dGVudChudWxsKSx6KHIsdC5zdHJlYW0oaXIpKSxlKGlyLnJlc3VsdCgpKSxudWxsIT1uJiZ0 LmNsaXBFeHRlbnQobiksdH1mdW5jdGlvbiBIcih0LGUscil7cmV0dXJuIFZyKHQsKGZ1bmN0 aW9uKHIpe3ZhciBuPWVbMV1bMF0tZVswXVswXSxpPWVbMV1bMV0tZVswXVsxXSxhPU1hdGgu bWluKG4vKHJbMV1bMF0tclswXVswXSksaS8oclsxXVsxXS1yWzBdWzFdKSksbz0rZVswXVsw XSsobi1hKihyWzFdWzBdK3JbMF1bMF0pKS8yLHM9K2VbMF1bMV0rKGktYSooclsxXVsxXSty WzBdWzFdKSkvMjt0LnNjYWxlKDE1MCphKS50cmFuc2xhdGUoW28sc10pfSkscil9ZnVuY3Rp b24gcXIodCxlLHIpe3JldHVybiBIcih0LFtbMCwwXSxlXSxyKX1mdW5jdGlvbiBHcih0LGUs cil7cmV0dXJuIFZyKHQsKGZ1bmN0aW9uKHIpe3ZhciBuPStlLGk9bi8oclsxXVswXS1yWzBd WzBdKSxhPShuLWkqKHJbMV1bMF0rclswXVswXSkpLzIsbz0taSpyWzBdWzFdO3Quc2NhbGUo MTUwKmkpLnRyYW5zbGF0ZShbYSxvXSl9KSxyKX1mdW5jdGlvbiBZcih0LGUscil7cmV0dXJu IFZyKHQsKGZ1bmN0aW9uKHIpe3ZhciBuPStlLGk9bi8oclsxXVsxXS1yWzBdWzFdKSxhPS1p KnJbMF1bMF0sbz0obi1pKihyWzFdWzFdK3JbMF1bMV0pKS8yO3Quc2NhbGUoMTUwKmkpLnRy YW5zbGF0ZShbYSxvXSl9KSxyKX1Cci5wcm90b3R5cGU9e19yYWRpdXM6NC41LF9jaXJjbGU6 TnIoNC41KSxwb2ludFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4odD0rdCkhPT10aGlzLl9y YWRpdXMmJih0aGlzLl9yYWRpdXM9dCx0aGlzLl9jaXJjbGU9bnVsbCksdGhpc30scG9seWdv blN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7 dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxp bmVFbmQ6ZnVuY3Rpb24oKXswPT09dGhpcy5fbGluZSYmdGhpcy5fc3RyaW5nLnB1c2goIloi KSx0aGlzLl9wb2ludD1OYU59LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHRoaXMuX3Bv aW50KXtjYXNlIDA6dGhpcy5fc3RyaW5nLnB1c2goIk0iLHQsIiwiLGUpLHRoaXMuX3BvaW50 PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3N0cmluZy5wdXNoKCJMIix0LCIsIixlKTticmVhaztk ZWZhdWx0Om51bGw9PXRoaXMuX2NpcmNsZSYmKHRoaXMuX2NpcmNsZT1Ocih0aGlzLl9yYWRp dXMpKSx0aGlzLl9zdHJpbmcucHVzaCgiTSIsdCwiLCIsZSx0aGlzLl9jaXJjbGUpfX0scmVz dWx0OmZ1bmN0aW9uKCl7aWYodGhpcy5fc3RyaW5nLmxlbmd0aCl7dmFyIHQ9dGhpcy5fc3Ry aW5nLmpvaW4oIiIpO3JldHVybiB0aGlzLl9zdHJpbmc9W10sdH1yZXR1cm4gbnVsbH19LFVy LnByb3RvdHlwZT17Y29uc3RydWN0b3I6VXIscG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLnN0 cmVhbS5wb2ludCh0LGUpfSxzcGhlcmU6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5zcGhlcmUo KX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZVN0YXJ0KCl9LGxpbmVF bmQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5j dGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9u KCl7dGhpcy5zdHJlYW0ucG9seWdvbkVuZCgpfX07dmFyIFdyPWcoMzAqaCk7ZnVuY3Rpb24g WHIodCxlKXtyZXR1cm4rZT9mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHIobixpLGEscyxsLGMs dSxmLGgsZCxnLHYseSx4KXt2YXIgYj11LW4sXz1mLWksdz1iKmIrXypfO2lmKHc+NCplJiZ5 LS0pe3ZhciBrPXMrZCxBPWwrZyxTPWMrdixFPVQoayprK0EqQStTKlMpLEw9TShTLz1FKSxD PXAocChTKS0xKTxvfHxwKGEtaCk8bz8oYStoKS8yOm0oQSxrKSxQPXQoQyxMKSxJPVBbMF0s Tz1QWzFdLHo9SS1uLEQ9Ty1pLFI9Xyp6LWIqRDsoUipSL3c+ZXx8cCgoYip6K18qRCkvdy0u NSk+LjN8fHMqZCtsKmcrYyp2PFdyKSYmKHIobixpLGEscyxsLGMsSSxPLEMsay89RSxBLz1F LFMseSx4KSx4LnBvaW50KEksTykscihJLE8sQyxrLEEsUyx1LGYsaCxkLGcsdix5LHgpKX19 cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuLGksYSxvLHMsbCxjLHUsZixoLHAsZCxtPXtwb2lu dDpnLGxpbmVTdGFydDp2LGxpbmVFbmQ6eCxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtlLnBv bHlnb25TdGFydCgpLG0ubGluZVN0YXJ0PWJ9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtlLnBv bHlnb25FbmQoKSxtLmxpbmVTdGFydD12fX07ZnVuY3Rpb24gZyhyLG4pe3I9dChyLG4pLGUu cG9pbnQoclswXSxyWzFdKX1mdW5jdGlvbiB2KCl7dT1OYU4sbS5wb2ludD15LGUubGluZVN0 YXJ0KCl9ZnVuY3Rpb24geShuLGkpe3ZhciBhPVgoW24saV0pLG89dChuLGkpO3IodSxmLGMs aCxwLGQsdT1vWzBdLGY9b1sxXSxjPW4saD1hWzBdLHA9YVsxXSxkPWFbMl0sMTYsZSksZS5w b2ludCh1LGYpfWZ1bmN0aW9uIHgoKXttLnBvaW50PWcsZS5saW5lRW5kKCl9ZnVuY3Rpb24g Yigpe3YoKSxtLnBvaW50PV8sbS5saW5lRW5kPXd9ZnVuY3Rpb24gXyh0LGUpe3kobj10LGUp LGk9dSxhPWYsbz1oLHM9cCxsPWQsbS5wb2ludD15fWZ1bmN0aW9uIHcoKXtyKHUsZixjLGgs cCxkLGksYSxuLG8scyxsLDE2LGUpLG0ubGluZUVuZD14LHgoKX1yZXR1cm4gbX19KHQsZSk6 ZnVuY3Rpb24odCl7cmV0dXJuIGpyKHtwb2ludDpmdW5jdGlvbihlLHIpe2U9dChlLHIpLHRo aXMuc3RyZWFtLnBvaW50KGVbMF0sZVsxXSl9fSl9KHQpfXZhciBacj1qcih7cG9pbnQ6ZnVu Y3Rpb24odCxlKXt0aGlzLnN0cmVhbS5wb2ludCh0KmgsZSpoKX19KTtmdW5jdGlvbiBKcih0 LGUscixuLGkpe2Z1bmN0aW9uIGEoYSxvKXtyZXR1cm5bZSt0KihhKj1uKSxyLXQqKG8qPWkp XX1yZXR1cm4gYS5pbnZlcnQ9ZnVuY3Rpb24oYSxvKXtyZXR1cm5bKGEtZSkvdCpuLChyLW8p L3QqaV19LGF9ZnVuY3Rpb24gS3IodCxlLHIsbixpLGEpe3ZhciBvPWcoYSkscz1fKGEpLGw9 byp0LGM9cyp0LHU9by90LGY9cy90LGg9KHMqci1vKmUpL3QscD0ocyplK28qcikvdDtmdW5j dGlvbiBkKHQsYSl7cmV0dXJuW2wqKHQqPW4pLWMqKGEqPWkpK2Usci1jKnQtbCphXX1yZXR1 cm4gZC5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm5bbioodSp0LWYqZStoKSxpKihwLWYq dC11KmUpXX0sZH1mdW5jdGlvbiBRcih0KXtyZXR1cm4gJHIoKGZ1bmN0aW9uKCl7cmV0dXJu IHR9KSkoKX1mdW5jdGlvbiAkcih0KXt2YXIgZSxyLG4saSxhLG8scyxsLGMsdSxwPTE1MCxk PTQ4MCxtPTI1MCxnPTAsdj0wLHk9MCx4PTAsYj0wLF89MCx3PTEsaz0xLEE9bnVsbCxNPWdl LFM9bnVsbCxFPVZlLEw9LjU7ZnVuY3Rpb24gQyh0KXtyZXR1cm4gbCh0WzBdKmgsdFsxXSpo KX1mdW5jdGlvbiBQKHQpe3JldHVybih0PWwuaW52ZXJ0KHRbMF0sdFsxXSkpJiZbdFswXSpm LHRbMV0qZl19ZnVuY3Rpb24gSSgpe3ZhciB0PUtyKHAsMCwwLHcsayxfKS5hcHBseShudWxs LGUoZyx2KSksbj0oXz9LcjpKcikocCxkLXRbMF0sbS10WzFdLHcsayxfKTtyZXR1cm4gcj1R dCh5LHgsYikscz1KdChlLG4pLGw9SnQocixzKSxvPVhyKHMsTCksTygpfWZ1bmN0aW9uIE8o KXtyZXR1cm4gYz11PW51bGwsQ31yZXR1cm4gQy5zdHJlYW09ZnVuY3Rpb24odCl7cmV0dXJu IGMmJnU9PT10P2M6Yz1acihmdW5jdGlvbih0KXtyZXR1cm4ganIoe3BvaW50OmZ1bmN0aW9u KGUscil7dmFyIG49dChlLHIpO3JldHVybiB0aGlzLnN0cmVhbS5wb2ludChuWzBdLG5bMV0p fX0pfShyKShNKG8oRSh1PXQpKSkpKX0sQy5wcmVjbGlwPWZ1bmN0aW9uKHQpe3JldHVybiBh cmd1bWVudHMubGVuZ3RoPyhNPXQsQT12b2lkIDAsTygpKTpNfSxDLnBvc3RjbGlwPWZ1bmN0 aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPXQsUz1uPWk9YT1udWxsLE8oKSk6 RX0sQy5jbGlwQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE09 K3Q/dmUoQT10KmgpOihBPW51bGwsZ2UpLE8oKSk6QSpmfSxDLmNsaXBFeHRlbnQ9ZnVuY3Rp b24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9bnVsbD09dD8oUz1uPWk9YT1udWxs LFZlKTp5ZShTPSt0WzBdWzBdLG49K3RbMF1bMV0saT0rdFsxXVswXSxhPSt0WzFdWzFdKSxP KCkpOm51bGw9PVM/bnVsbDpbW1Msbl0sW2ksYV1dfSxDLnNjYWxlPWZ1bmN0aW9uKHQpe3Jl dHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPSt0LEkoKSk6cH0sQy50cmFuc2xhdGU9ZnVuY3Rp b24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9K3RbMF0sbT0rdFsxXSxJKCkpOltk LG1dfSxDLmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz10 WzBdJTM2MCpoLHY9dFsxXSUzNjAqaCxJKCkpOltnKmYsdipmXX0sQy5yb3RhdGU9ZnVuY3Rp b24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9dFswXSUzNjAqaCx4PXRbMV0lMzYw KmgsYj10Lmxlbmd0aD4yP3RbMl0lMzYwKmg6MCxJKCkpOlt5KmYseCpmLGIqZl19LEMuYW5n bGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KF89dCUzNjAqaCxJKCkp Ol8qZn0sQy5yZWZsZWN0WD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o dz10Py0xOjEsSSgpKTp3PDB9LEMucmVmbGVjdFk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3Vt ZW50cy5sZW5ndGg/KGs9dD8tMToxLEkoKSk6azwwfSxDLnByZWNpc2lvbj1mdW5jdGlvbih0 KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1YcihzLEw9dCp0KSxPKCkpOlQoTCl9LEMu Zml0RXh0ZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEhyKEMsdCxlKX0sQy5maXRTaXplPWZ1 bmN0aW9uKHQsZSl7cmV0dXJuIHFyKEMsdCxlKX0sQy5maXRXaWR0aD1mdW5jdGlvbih0LGUp e3JldHVybiBHcihDLHQsZSl9LEMuZml0SGVpZ2h0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFly KEMsdCxlKX0sZnVuY3Rpb24oKXtyZXR1cm4gZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxD LmludmVydD1lLmludmVydCYmUCxJKCl9fWZ1bmN0aW9uIHRuKHQpe3ZhciBlPTAscj1zLzMs bj0kcih0KSxpPW4oZSxyKTtyZXR1cm4gaS5wYXJhbGxlbHM9ZnVuY3Rpb24odCl7cmV0dXJu IGFyZ3VtZW50cy5sZW5ndGg/bihlPXRbMF0qaCxyPXRbMV0qaCk6W2UqZixyKmZdfSxpfWZ1 bmN0aW9uIGVuKHQsZSl7dmFyIHI9Xyh0KSxuPShyK18oZSkpLzI7aWYocChuKTxvKXJldHVy biBmdW5jdGlvbih0KXt2YXIgZT1nKHQpO2Z1bmN0aW9uIHIodCxyKXtyZXR1cm5bdCplLF8o cikvZV19cmV0dXJuIHIuaW52ZXJ0PWZ1bmN0aW9uKHQscil7cmV0dXJuW3QvZSxNKHIqZSld fSxyfSh0KTt2YXIgaT0xK3IqKDIqbi1yKSxhPVQoaSkvbjtmdW5jdGlvbiBsKHQsZSl7dmFy IHI9VChpLTIqbipfKGUpKS9uO3JldHVybltyKl8odCo9biksYS1yKmcodCldfXJldHVybiBs LmludmVydD1mdW5jdGlvbih0LGUpe3ZhciByPWEtZSxvPW0odCxwKHIpKSp3KHIpO3JldHVy biByKm48MCYmKG8tPXMqdyh0KSp3KHIpKSxbby9uLE0oKGktKHQqdCtyKnIpKm4qbikvKDIq bikpXX0sbH1mdW5jdGlvbiBybigpe3JldHVybiB0bihlbikuc2NhbGUoMTU1LjQyNCkuY2Vu dGVyKFswLDMzLjY0NDJdKX1mdW5jdGlvbiBubigpe3JldHVybiBybigpLnBhcmFsbGVscyhb MjkuNSw0NS41XSkuc2NhbGUoMTA3MCkudHJhbnNsYXRlKFs0ODAsMjUwXSkucm90YXRlKFs5 NiwwXSkuY2VudGVyKFstLjYsMzguN10pfWZ1bmN0aW9uIGFuKHQpe3JldHVybiBmdW5jdGlv bihlLHIpe3ZhciBuPWcoZSksaT1nKHIpLGE9dChuKmkpO3JldHVyblthKmkqXyhlKSxhKl8o cildfX1mdW5jdGlvbiBvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxyKXt2YXIgbj1UKGUqZSty KnIpLGk9dChuKSxhPV8oaSksbz1nKGkpO3JldHVyblttKGUqYSxuKm8pLE0obiYmciphL24p XX19dmFyIHNuPWFuKChmdW5jdGlvbih0KXtyZXR1cm4gVCgyLygxK3QpKX0pKTtzbi5pbnZl cnQ9b24oKGZ1bmN0aW9uKHQpe3JldHVybiAyKk0odC8yKX0pKTt2YXIgbG49YW4oKGZ1bmN0 aW9uKHQpe3JldHVybih0PUEodCkpJiZ0L18odCl9KSk7ZnVuY3Rpb24gY24odCxlKXtyZXR1 cm5bdCx4KGsoKGwrZSkvMikpXX1mdW5jdGlvbiB1bih0KXt2YXIgZSxyLG4saT1Rcih0KSxh PWkuY2VudGVyLG89aS5zY2FsZSxsPWkudHJhbnNsYXRlLGM9aS5jbGlwRXh0ZW50LHU9bnVs bDtmdW5jdGlvbiBmKCl7dmFyIGE9cypvKCksbD1pKHJlKGkucm90YXRlKCkpLmludmVydChb MCwwXSkpO3JldHVybiBjKG51bGw9PXU/W1tsWzBdLWEsbFsxXS1hXSxbbFswXSthLGxbMV0r YV1dOnQ9PT1jbj9bW01hdGgubWF4KGxbMF0tYSx1KSxlXSxbTWF0aC5taW4obFswXSthLHIp LG5dXTpbW3UsTWF0aC5tYXgobFsxXS1hLGUpXSxbcixNYXRoLm1pbihsWzFdK2EsbildXSl9 cmV0dXJuIGkuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG8o dCksZigpKTpvKCl9LGkudHJhbnNsYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu bGVuZ3RoPyhsKHQpLGYoKSk6bCgpfSxpLmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJn dW1lbnRzLmxlbmd0aD8oYSh0KSxmKCkpOmEoKX0saS5jbGlwRXh0ZW50PWZ1bmN0aW9uKHQp e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P3U9ZT1yPW49bnVsbDoodT0rdFsw XVswXSxlPSt0WzBdWzFdLHI9K3RbMV1bMF0sbj0rdFsxXVsxXSksZigpKTpudWxsPT11P251 bGw6W1t1LGVdLFtyLG5dXX0sZigpfWZ1bmN0aW9uIGZuKHQpe3JldHVybiBrKChsK3QpLzIp fWZ1bmN0aW9uIGhuKHQsZSl7dmFyIHI9Zyh0KSxuPXQ9PT1lP18odCk6eChyL2coZSkpL3go Zm4oZSkvZm4odCkpLGk9cipiKGZuKHQpLG4pL247aWYoIW4pcmV0dXJuIGNuO2Z1bmN0aW9u IGEodCxlKXtpPjA/ZTwtbCtvJiYoZT0tbCtvKTplPmwtbyYmKGU9bC1vKTt2YXIgcj1pL2Io Zm4oZSksbik7cmV0dXJuW3IqXyhuKnQpLGktcipnKG4qdCldfXJldHVybiBhLmludmVydD1m dW5jdGlvbih0LGUpe3ZhciByPWktZSxhPXcobikqVCh0KnQrcipyKSxvPW0odCxwKHIpKSp3 KHIpO3JldHVybiByKm48MCYmKG8tPXMqdyh0KSp3KHIpKSxbby9uLDIqZChiKGkvYSwxL24p KS1sXX0sYX1mdW5jdGlvbiBwbih0LGUpe3JldHVyblt0LGVdfWZ1bmN0aW9uIGRuKHQsZSl7 dmFyIHI9Zyh0KSxuPXQ9PT1lP18odCk6KHItZyhlKSkvKGUtdCksaT1yL24rdDtpZihwKG4p PG8pcmV0dXJuIHBuO2Z1bmN0aW9uIGEodCxlKXt2YXIgcj1pLWUsYT1uKnQ7cmV0dXJuW3Iq XyhhKSxpLXIqZyhhKV19cmV0dXJuIGEuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9aS1l LGE9bSh0LHAocikpKncocik7cmV0dXJuIHIqbjwwJiYoYS09cyp3KHQpKncocikpLFthL24s aS13KG4pKlQodCp0K3IqcildfSxhfWxuLmludmVydD1vbigoZnVuY3Rpb24odCl7cmV0dXJu IHR9KSksY24uaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuW3QsMipkKHkoZSkpLWxdfSxw bi5pbnZlcnQ9cG47dmFyIG1uPTEuMzQwMjY0LGduPS0uMDgxMTA2LHZuPTg5M2UtNix5bj0u MDAzNzk2LHhuPVQoMykvMjtmdW5jdGlvbiBibih0LGUpe3ZhciByPU0oeG4qXyhlKSksbj1y KnIsaT1uKm4qbjtyZXR1cm5bdCpnKHIpLyh4bioobW4rMypnbipuK2kqKDcqdm4rOSp5bipu KSkpLHIqKG1uK2duKm4raSoodm4reW4qbikpXX1mdW5jdGlvbiBfbih0LGUpe3ZhciByPWco ZSksbj1nKHQpKnI7cmV0dXJuW3IqXyh0KS9uLF8oZSkvbl19ZnVuY3Rpb24gd24odCxlKXt2 YXIgcj1lKmUsbj1yKnI7cmV0dXJuW3QqKC44NzA3LS4xMzE5NzkqcituKihuKiguMDAzOTcx KnItLjAwMTUyOSpuKS0uMDEzNzkxKSksZSooMS4wMDcyMjYrciooLjAxNTA4NStuKiguMDI4 ODc0KnItLjA0NDQ3NS0uMDA1OTE2Km4pKSldfWZ1bmN0aW9uIFRuKHQsZSl7cmV0dXJuW2co ZSkqXyh0KSxfKGUpXX1mdW5jdGlvbiBrbih0LGUpe3ZhciByPWcoZSksbj0xK2codCkqcjty ZXR1cm5bcipfKHQpL24sXyhlKS9uXX1mdW5jdGlvbiBBbih0LGUpe3JldHVyblt4KGsoKGwr ZSkvMikpLC10XX1ibi5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHIsbj1lLGk9bipu LGE9aSppKmksbz0wO288MTImJihhPShpPShuLT1yPShuKihtbitnbippK2EqKHZuK3luKmkp KS1lKS8obW4rMypnbippK2EqKDcqdm4rOSp5bippKSkpKm4pKmkqaSwhKHAocik8MWUtMTIp KTsrK28pO3JldHVyblt4bip0KihtbiszKmduKmkrYSooNyp2bis5KnluKmkpKS9nKG4pLE0o XyhuKS94bildfSxfbi5pbnZlcnQ9b24oZCksd24uaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFy IHIsbj1lLGk9MjU7ZG97dmFyIGE9bipuLHM9YSphO24tPXI9KG4qKDEuMDA3MjI2K2EqKC4w MTUwODUrcyooLjAyODg3NCphLS4wNDQ0NzUtLjAwNTkxNipzKSkpLWUpLygxLjAwNzIyNith KiguMDQ1MjU1K3MqKC4yNTk4NjYqYS0uMzExMzI1LS4wMDU5MTYqMTEqcykpKX13aGlsZShw KHIpPm8mJi0taT4wKTtyZXR1cm5bdC8oLjg3MDcrKGE9bipuKSooYSooYSphKmEqKC4wMDM5 NzEtLjAwMTUyOSphKS0uMDEzNzkxKS0uMTMxOTc5KSksbl19LFRuLmludmVydD1vbihNKSxr bi5pbnZlcnQ9b24oKGZ1bmN0aW9uKHQpe3JldHVybiAyKmQodCl9KSksQW4uaW52ZXJ0PWZ1 bmN0aW9uKHQsZSl7cmV0dXJuWy1lLDIqZCh5KHQpKS1sXX0sdC5nZW9BbGJlcnM9bm4sdC5n ZW9BbGJlcnNVc2E9ZnVuY3Rpb24oKXt2YXIgdCxlLHIsbixpLGEscz1ubigpLGw9cm4oKS5y b3RhdGUoWzE1NCwwXSkuY2VudGVyKFstMiw1OC41XSkucGFyYWxsZWxzKFs1NSw2NV0pLGM9 cm4oKS5yb3RhdGUoWzE1NywwXSkuY2VudGVyKFstMywxOS45XSkucGFyYWxsZWxzKFs4LDE4 XSksdT17cG9pbnQ6ZnVuY3Rpb24odCxlKXthPVt0LGVdfX07ZnVuY3Rpb24gZih0KXt2YXIg ZT10WzBdLG89dFsxXTtyZXR1cm4gYT1udWxsLHIucG9pbnQoZSxvKSxhfHwobi5wb2ludChl LG8pLGEpfHwoaS5wb2ludChlLG8pLGEpfWZ1bmN0aW9uIGgoKXtyZXR1cm4gdD1lPW51bGws Zn1yZXR1cm4gZi5pbnZlcnQ9ZnVuY3Rpb24odCl7dmFyIGU9cy5zY2FsZSgpLHI9cy50cmFu c2xhdGUoKSxuPSh0WzBdLXJbMF0pL2UsaT0odFsxXS1yWzFdKS9lO3JldHVybihpPj0uMTIm Jmk8LjIzNCYmbj49LS40MjUmJm48LS4yMTQ/bDppPj0uMTY2JiZpPC4yMzQmJm4+PS0uMjE0 JiZuPC0uMTE1P2M6cykuaW52ZXJ0KHQpfSxmLnN0cmVhbT1mdW5jdGlvbihyKXtyZXR1cm4g dCYmZT09PXI/dDoobj1bcy5zdHJlYW0oZT1yKSxsLnN0cmVhbShyKSxjLnN0cmVhbShyKV0s aT1uLmxlbmd0aCx0PXtwb2ludDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMTsrK3I8aTsp bltyXS5wb2ludCh0LGUpfSxzcGhlcmU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9LTE7Kyt0PGk7 KW5bdF0uc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe2Zvcih2YXIgdD0tMTsrK3Q8 aTspblt0XS5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe2Zvcih2YXIgdD0tMTsr K3Q8aTspblt0XS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2Zvcih2YXIg dD0tMTsrK3Q8aTspblt0XS5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigp e2Zvcih2YXIgdD0tMTsrK3Q8aTspblt0XS5wb2x5Z29uRW5kKCl9fSk7dmFyIG4saX0sZi5w cmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHMucHJlY2lz aW9uKHQpLGwucHJlY2lzaW9uKHQpLGMucHJlY2lzaW9uKHQpLGgoKSk6cy5wcmVjaXNpb24o KX0sZi5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocy5zY2Fs ZSh0KSxsLnNjYWxlKC4zNSp0KSxjLnNjYWxlKHQpLGYudHJhbnNsYXRlKHMudHJhbnNsYXRl KCkpKTpzLnNjYWxlKCl9LGYudHJhbnNsYXRlPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMu bGVuZ3RoKXJldHVybiBzLnRyYW5zbGF0ZSgpO3ZhciBlPXMuc2NhbGUoKSxhPSt0WzBdLGY9 K3RbMV07cmV0dXJuIHI9cy50cmFuc2xhdGUodCkuY2xpcEV4dGVudChbW2EtLjQ1NSplLGYt LjIzOCplXSxbYSsuNDU1KmUsZisuMjM4KmVdXSkuc3RyZWFtKHUpLG49bC50cmFuc2xhdGUo W2EtLjMwNyplLGYrLjIwMSplXSkuY2xpcEV4dGVudChbW2EtLjQyNSplK28sZisuMTIqZStv XSxbYS0uMjE0KmUtbyxmKy4yMzQqZS1vXV0pLnN0cmVhbSh1KSxpPWMudHJhbnNsYXRlKFth LS4yMDUqZSxmKy4yMTIqZV0pLmNsaXBFeHRlbnQoW1thLS4yMTQqZStvLGYrLjE2NiplK29d LFthLS4xMTUqZS1vLGYrLjIzNCplLW9dXSkuc3RyZWFtKHUpLGgoKX0sZi5maXRFeHRlbnQ9 ZnVuY3Rpb24odCxlKXtyZXR1cm4gSHIoZix0LGUpfSxmLmZpdFNpemU9ZnVuY3Rpb24odCxl KXtyZXR1cm4gcXIoZix0LGUpfSxmLmZpdFdpZHRoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEdy KGYsdCxlKX0sZi5maXRIZWlnaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gWXIoZix0LGUpfSxm LnNjYWxlKDEwNzApfSx0Lmdlb0FyZWE9ZnVuY3Rpb24odCl7cmV0dXJuIFUucmVzZXQoKSx6 KHQsViksMipVfSx0Lmdlb0F6aW11dGhhbEVxdWFsQXJlYT1mdW5jdGlvbigpe3JldHVybiBR cihzbikuc2NhbGUoMTI0Ljc1KS5jbGlwQW5nbGUoMTc5Ljk5OSl9LHQuZ2VvQXppbXV0aGFs RXF1YWxBcmVhUmF3PXNuLHQuZ2VvQXppbXV0aGFsRXF1aWRpc3RhbnQ9ZnVuY3Rpb24oKXty ZXR1cm4gUXIobG4pLnNjYWxlKDc5LjQxODgpLmNsaXBBbmdsZSgxNzkuOTk5KX0sdC5nZW9B emltdXRoYWxFcXVpZGlzdGFudFJhdz1sbix0Lmdlb0JvdW5kcz1mdW5jdGlvbih0KXt2YXIg ZSxyLG4saSxhLG8scztpZihudD1ydD0tKHR0PWV0PTEvMCksbHQ9W10seih0LFN0KSxyPWx0 Lmxlbmd0aCl7Zm9yKGx0LnNvcnQoUnQpLGU9MSxhPVtuPWx0WzBdXTtlPHI7KytlKUZ0KG4s KGk9bHRbZV0pWzBdKXx8RnQobixpWzFdKT8oRHQoblswXSxpWzFdKT5EdChuWzBdLG5bMV0p JiYoblsxXT1pWzFdKSxEdChpWzBdLG5bMV0pPkR0KG5bMF0sblsxXSkmJihuWzBdPWlbMF0p KTphLnB1c2gobj1pKTtmb3Iobz0tMS8wLGU9MCxuPWFbcj1hLmxlbmd0aC0xXTtlPD1yO249 aSwrK2UpaT1hW2VdLChzPUR0KG5bMV0saVswXSkpPm8mJihvPXMsdHQ9aVswXSxydD1uWzFd KX1yZXR1cm4gbHQ9Y3Q9bnVsbCx0dD09PTEvMHx8ZXQ9PT0xLzA/W1tOYU4sTmFOXSxbTmFO LE5hTl1dOltbdHQsZXRdLFtydCxudF1dfSx0Lmdlb0NlbnRyb2lkPWZ1bmN0aW9uKHQpe3V0 PWZ0PWh0PXB0PWR0PW10PWd0PXZ0PXl0PXh0PWJ0PTAseih0LEJ0KTt2YXIgZT15dCxyPXh0 LG49YnQsaT1lKmUrcipyK24qbjtyZXR1cm4gaTwxZS0xMiYmKGU9bXQscj1ndCxuPXZ0LGZ0 PG8mJihlPWh0LHI9cHQsbj1kdCksKGk9ZSplK3IqcituKm4pPDFlLTEyKT9bTmFOLE5hTl06 W20ocixlKSpmLE0obi9UKGkpKSpmXX0sdC5nZW9DaXJjbGU9ZnVuY3Rpb24oKXt2YXIgdCxl LHI9WnQoWzAsMF0pLG49WnQoOTApLGk9WnQoNiksYT17cG9pbnQ6ZnVuY3Rpb24ocixuKXt0 LnB1c2gocj1lKHIsbikpLHJbMF0qPWYsclsxXSo9Zn19O2Z1bmN0aW9uIG8oKXt2YXIgbz1y LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxzPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpKmgsbD1p LmFwcGx5KHRoaXMsYXJndW1lbnRzKSpoO3JldHVybiB0PVtdLGU9UXQoLW9bMF0qaCwtb1sx XSpoLDApLmludmVydCxuZShhLHMsbCwxKSxvPXt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRl czpbdF19LHQ9ZT1udWxsLG99cmV0dXJuIG8uY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBh cmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6WnQoWyt0WzBdLCt0 WzFdXSksbyk6cn0sby5yYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n dGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpadCgrdCksbyk6bn0sby5wcmVjaXNpb249 ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlw ZW9mIHQ/dDpadCgrdCksbyk6aX0sb30sdC5nZW9DbGlwQW50aW1lcmlkaWFuPWdlLHQuZ2Vv Q2xpcENpcmNsZT12ZSx0Lmdlb0NsaXBFeHRlbnQ9ZnVuY3Rpb24oKXt2YXIgdCxlLHIsbj0w LGk9MCxhPTk2MCxvPTUwMDtyZXR1cm4gcj17c3RyZWFtOmZ1bmN0aW9uKHIpe3JldHVybiB0 JiZlPT09cj90OnQ9eWUobixpLGEsbykoZT1yKX0sZXh0ZW50OmZ1bmN0aW9uKHMpe3JldHVy biBhcmd1bWVudHMubGVuZ3RoPyhuPStzWzBdWzBdLGk9K3NbMF1bMV0sYT0rc1sxXVswXSxv PStzWzFdWzFdLHQ9ZT1udWxsLHIpOltbbixpXSxbYSxvXV19fX0sdC5nZW9DbGlwUmVjdGFu Z2xlPXllLHQuZ2VvQ29uaWNDb25mb3JtYWw9ZnVuY3Rpb24oKXtyZXR1cm4gdG4oaG4pLnNj YWxlKDEwOS41KS5wYXJhbGxlbHMoWzMwLDMwXSl9LHQuZ2VvQ29uaWNDb25mb3JtYWxSYXc9 aG4sdC5nZW9Db25pY0VxdWFsQXJlYT1ybix0Lmdlb0NvbmljRXF1YWxBcmVhUmF3PWVuLHQu Z2VvQ29uaWNFcXVpZGlzdGFudD1mdW5jdGlvbigpe3JldHVybiB0bihkbikuc2NhbGUoMTMx LjE1NCkuY2VudGVyKFswLDEzLjkzODldKX0sdC5nZW9Db25pY0VxdWlkaXN0YW50UmF3PWRu LHQuZ2VvQ29udGFpbnM9ZnVuY3Rpb24odCxlKXtyZXR1cm4odCYmUGUuaGFzT3duUHJvcGVy dHkodC50eXBlKT9QZVt0LnR5cGVdOk9lKSh0LGUpfSx0Lmdlb0Rpc3RhbmNlPUNlLHQuZ2Vv RXF1YWxFYXJ0aD1mdW5jdGlvbigpe3JldHVybiBRcihibikuc2NhbGUoMTc3LjE1OCl9LHQu Z2VvRXF1YWxFYXJ0aFJhdz1ibix0Lmdlb0VxdWlyZWN0YW5ndWxhcj1mdW5jdGlvbigpe3Jl dHVybiBRcihwbikuc2NhbGUoMTUyLjYzKX0sdC5nZW9FcXVpcmVjdGFuZ3VsYXJSYXc9cG4s dC5nZW9Hbm9tb25pYz1mdW5jdGlvbigpe3JldHVybiBRcihfbikuc2NhbGUoMTQ0LjA0OSku Y2xpcEFuZ2xlKDYwKX0sdC5nZW9Hbm9tb25pY1Jhdz1fbix0Lmdlb0dyYXRpY3VsZT1VZSx0 Lmdlb0dyYXRpY3VsZTEwPWZ1bmN0aW9uKCl7cmV0dXJuIFVlKCkoKX0sdC5nZW9JZGVudGl0 eT1mdW5jdGlvbigpe3ZhciB0LGUscixuLGksYSxvLHM9MSxsPTAsYz0wLHU9MSxwPTEsZD0w LG09bnVsbCx2PTEseT0xLHg9anIoe3BvaW50OmZ1bmN0aW9uKHQsZSl7dmFyIHI9VChbdCxl XSk7dGhpcy5zdHJlYW0ucG9pbnQoclswXSxyWzFdKX19KSxiPVZlO2Z1bmN0aW9uIHcoKXty ZXR1cm4gdj1zKnUseT1zKnAsYT1vPW51bGwsVH1mdW5jdGlvbiBUKHIpe3ZhciBuPXJbMF0q dixpPXJbMV0qeTtpZihkKXt2YXIgYT1pKnQtbiplO249bip0K2kqZSxpPWF9cmV0dXJuW24r bCxpK2NdfXJldHVybiBULmludmVydD1mdW5jdGlvbihyKXt2YXIgbj1yWzBdLWwsaT1yWzFd LWM7aWYoZCl7dmFyIGE9aSp0K24qZTtuPW4qdC1pKmUsaT1hfXJldHVybltuL3YsaS95XX0s VC5zdHJlYW09ZnVuY3Rpb24odCl7cmV0dXJuIGEmJm89PT10P2E6YT14KGIobz10KSl9LFQu cG9zdGNsaXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9dCxtPXI9 bj1pPW51bGwsdygpKTpifSxULmNsaXBFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3Vt ZW50cy5sZW5ndGg/KGI9bnVsbD09dD8obT1yPW49aT1udWxsLFZlKTp5ZShtPSt0WzBdWzBd LHI9K3RbMF1bMV0sbj0rdFsxXVswXSxpPSt0WzFdWzFdKSx3KCkpOm51bGw9PW0/bnVsbDpb W20scl0sW24saV1dfSxULnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVu Z3RoPyhzPSt0LHcoKSk6c30sVC50cmFuc2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3Vt ZW50cy5sZW5ndGg/KGw9K3RbMF0sYz0rdFsxXSx3KCkpOltsLGNdfSxULmFuZ2xlPWZ1bmN0 aW9uKHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPV8oZD1yJTM2MCpoKSx0PWcoZCks dygpKTpkKmZ9LFQucmVmbGVjdFg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n dGg/KHU9dD8tMToxLHcoKSk6dTwwfSxULnJlZmxlY3RZPWZ1bmN0aW9uKHQpe3JldHVybiBh cmd1bWVudHMubGVuZ3RoPyhwPXQ/LTE6MSx3KCkpOnA8MH0sVC5maXRFeHRlbnQ9ZnVuY3Rp b24odCxlKXtyZXR1cm4gSHIoVCx0LGUpfSxULmZpdFNpemU9ZnVuY3Rpb24odCxlKXtyZXR1 cm4gcXIoVCx0LGUpfSxULmZpdFdpZHRoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEdyKFQsdCxl KX0sVC5maXRIZWlnaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gWXIoVCx0LGUpfSxUfSx0Lmdl b0ludGVycG9sYXRlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dFswXSpoLG49dFsxXSpoLGk9ZVsw XSpoLGE9ZVsxXSpoLG89ZyhuKSxzPV8obiksbD1nKGEpLGM9XyhhKSx1PW8qZyhyKSxwPW8q XyhyKSxkPWwqZyhpKSx2PWwqXyhpKSx5PTIqTShUKFMoYS1uKStvKmwqUyhpLXIpKSkseD1f KHkpLGI9eT9mdW5jdGlvbih0KXt2YXIgZT1fKHQqPXkpL3gscj1fKHktdCkveCxuPXIqdStl KmQsaT1yKnArZSp2LGE9cipzK2UqYztyZXR1cm5bbShpLG4pKmYsbShhLFQobipuK2kqaSkp KmZdfTpmdW5jdGlvbigpe3JldHVybltyKmYsbipmXX07cmV0dXJuIGIuZGlzdGFuY2U9eSxi fSx0Lmdlb0xlbmd0aD1TZSx0Lmdlb01lcmNhdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIHVuKGNu KS5zY2FsZSg5NjEvdSl9LHQuZ2VvTWVyY2F0b3JSYXc9Y24sdC5nZW9OYXR1cmFsRWFydGgx PWZ1bmN0aW9uKCl7cmV0dXJuIFFyKHduKS5zY2FsZSgxNzUuMjk1KX0sdC5nZW9OYXR1cmFs RWFydGgxUmF3PXduLHQuZ2VvT3J0aG9ncmFwaGljPWZ1bmN0aW9uKCl7cmV0dXJuIFFyKFRu KS5zY2FsZSgyNDkuNSkuY2xpcEFuZ2xlKDkwK28pfSx0Lmdlb09ydGhvZ3JhcGhpY1Jhdz1U bix0Lmdlb1BhdGg9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGk9NC41O2Z1bmN0aW9uIGEodCl7 cmV0dXJuIHQmJigiZnVuY3Rpb24iPT10eXBlb2YgaSYmbi5wb2ludFJhZGl1cygraS5hcHBs eSh0aGlzLGFyZ3VtZW50cykpLHoodCxyKG4pKSksbi5yZXN1bHQoKX1yZXR1cm4gYS5hcmVh PWZ1bmN0aW9uKHQpe3JldHVybiB6KHQscihaZSkpLFplLnJlc3VsdCgpfSxhLm1lYXN1cmU9 ZnVuY3Rpb24odCl7cmV0dXJuIHoodCxyKERyKSksRHIucmVzdWx0KCl9LGEuYm91bmRzPWZ1 bmN0aW9uKHQpe3JldHVybiB6KHQscihpcikpLGlyLnJlc3VsdCgpfSxhLmNlbnRyb2lkPWZ1 bmN0aW9uKHQpe3JldHVybiB6KHQscih5cikpLHlyLnJlc3VsdCgpfSxhLnByb2plY3Rpb249 ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bnVsbD09ZT8odD1udWxs LFZlKToodD1lKS5zdHJlYW0sYSk6dH0sYS5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBh cmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/KGU9bnVsbCxuZXcgQnIpOm5ldyBFcihlPXQp LCJmdW5jdGlvbiIhPXR5cGVvZiBpJiZuLnBvaW50UmFkaXVzKGkpLGEpOmV9LGEucG9pbnRS YWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9u Ij09dHlwZW9mIHQ/dDoobi5wb2ludFJhZGl1cygrdCksK3QpLGEpOml9LGEucHJvamVjdGlv bih0KS5jb250ZXh0KGUpfSx0Lmdlb1Byb2plY3Rpb249UXIsdC5nZW9Qcm9qZWN0aW9uTXV0 YXRvcj0kcix0Lmdlb1JvdGF0aW9uPXJlLHQuZ2VvU3RlcmVvZ3JhcGhpYz1mdW5jdGlvbigp e3JldHVybiBRcihrbikuc2NhbGUoMjUwKS5jbGlwQW5nbGUoMTQyKX0sdC5nZW9TdGVyZW9n cmFwaGljUmF3PWtuLHQuZ2VvU3RyZWFtPXosdC5nZW9UcmFuc2Zvcm09ZnVuY3Rpb24odCl7 cmV0dXJue3N0cmVhbTpqcih0KX19LHQuZ2VvVHJhbnN2ZXJzZU1lcmNhdG9yPWZ1bmN0aW9u KCl7dmFyIHQ9dW4oQW4pLGU9dC5jZW50ZXIscj10LnJvdGF0ZTtyZXR1cm4gdC5jZW50ZXI9 ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShbLXRbMV0sdFswXV0pOlso dD1lKCkpWzFdLC10WzBdXX0sdC5yb3RhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50 cy5sZW5ndGg/cihbdFswXSx0WzFdLHQubGVuZ3RoPjI/dFsyXSs5MDo5MF0pOlsodD1yKCkp WzBdLHRbMV0sdFsyXS05MF19LHIoWzAsMCw5MF0pLnNjYWxlKDE1OS4xNTUpfSx0Lmdlb1Ry YW5zdmVyc2VNZXJjYXRvclJhdz1BbixPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01v ZHVsZSIse3ZhbHVlOiEwfSl9KSl9LHsiZDMtYXJyYXkiOjEwN31dLDExNTpbZnVuY3Rpb24o dCxlLHIpeyFmdW5jdGlvbih0LG4peyJvYmplY3QiPT10eXBlb2YgciYmdm9pZCAwIT09ZT9u KHIpOm4oKHQ9dHx8c2VsZikuZDM9dC5kM3x8e30pfSh0aGlzLChmdW5jdGlvbih0KXsidXNl IHN0cmljdCI7ZnVuY3Rpb24gZSh0LGUpe3JldHVybiB0LnBhcmVudD09PWUucGFyZW50PzE6 Mn1mdW5jdGlvbiByKHQsZSl7cmV0dXJuIHQrZS54fWZ1bmN0aW9uIG4odCxlKXtyZXR1cm4g TWF0aC5tYXgodCxlLnkpfWZ1bmN0aW9uIGkodCl7dmFyIGU9MCxyPXQuY2hpbGRyZW4sbj1y JiZyLmxlbmd0aDtpZihuKWZvcig7LS1uPj0wOyllKz1yW25dLnZhbHVlO2Vsc2UgZT0xO3Qu dmFsdWU9ZX1mdW5jdGlvbiBhKHQsZSl7dmFyIHIsbixpLGEscyx1PW5ldyBjKHQpLGY9K3Qu dmFsdWUmJih1LnZhbHVlPXQudmFsdWUpLGg9W3VdO2ZvcihudWxsPT1lJiYoZT1vKTtyPWgu cG9wKCk7KWlmKGYmJihyLnZhbHVlPStyLmRhdGEudmFsdWUpLChpPWUoci5kYXRhKSkmJihz PWkubGVuZ3RoKSlmb3Ioci5jaGlsZHJlbj1uZXcgQXJyYXkocyksYT1zLTE7YT49MDstLWEp aC5wdXNoKG49ci5jaGlsZHJlblthXT1uZXcgYyhpW2FdKSksbi5wYXJlbnQ9cixuLmRlcHRo PXIuZGVwdGgrMTtyZXR1cm4gdS5lYWNoQmVmb3JlKGwpfWZ1bmN0aW9uIG8odCl7cmV0dXJu IHQuY2hpbGRyZW59ZnVuY3Rpb24gcyh0KXt0LmRhdGE9dC5kYXRhLmRhdGF9ZnVuY3Rpb24g bCh0KXt2YXIgZT0wO2Rve3QuaGVpZ2h0PWV9d2hpbGUoKHQ9dC5wYXJlbnQpJiZ0LmhlaWdo dDwrK2UpfWZ1bmN0aW9uIGModCl7dGhpcy5kYXRhPXQsdGhpcy5kZXB0aD10aGlzLmhlaWdo dD0wLHRoaXMucGFyZW50PW51bGx9Yy5wcm90b3R5cGU9YS5wcm90b3R5cGU9e2NvbnN0cnVj dG9yOmMsY291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoQWZ0ZXIoaSl9LGVhY2g6 ZnVuY3Rpb24odCl7dmFyIGUscixuLGksYT10aGlzLG89W2FdO2Rve2ZvcihlPW8ucmV2ZXJz ZSgpLG89W107YT1lLnBvcCgpOylpZih0KGEpLHI9YS5jaGlsZHJlbilmb3Iobj0wLGk9ci5s ZW5ndGg7bjxpOysrbilvLnB1c2gocltuXSl9d2hpbGUoby5sZW5ndGgpO3JldHVybiB0aGlz fSxlYWNoQWZ0ZXI6ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHIsbixpPXRoaXMsYT1baV0sbz1b XTtpPWEucG9wKCk7KWlmKG8ucHVzaChpKSxlPWkuY2hpbGRyZW4pZm9yKHI9MCxuPWUubGVu Z3RoO3I8bjsrK3IpYS5wdXNoKGVbcl0pO2Zvcig7aT1vLnBvcCgpOyl0KGkpO3JldHVybiB0 aGlzfSxlYWNoQmVmb3JlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyLG49dGhpcyxpPVtuXTtu PWkucG9wKCk7KWlmKHQobiksZT1uLmNoaWxkcmVuKWZvcihyPWUubGVuZ3RoLTE7cj49MDst LXIpaS5wdXNoKGVbcl0pO3JldHVybiB0aGlzfSxzdW06ZnVuY3Rpb24odCl7cmV0dXJuIHRo aXMuZWFjaEFmdGVyKChmdW5jdGlvbihlKXtmb3IodmFyIHI9K3QoZS5kYXRhKXx8MCxuPWUu Y2hpbGRyZW4saT1uJiZuLmxlbmd0aDstLWk+PTA7KXIrPW5baV0udmFsdWU7ZS52YWx1ZT1y fSkpfSxzb3J0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVhY2hCZWZvcmUoKGZ1bmN0aW9u KGUpe2UuY2hpbGRyZW4mJmUuY2hpbGRyZW4uc29ydCh0KX0pKX0scGF0aDpmdW5jdGlvbih0 KXtmb3IodmFyIGU9dGhpcyxyPWZ1bmN0aW9uKHQsZSl7aWYodD09PWUpcmV0dXJuIHQ7dmFy IHI9dC5hbmNlc3RvcnMoKSxuPWUuYW5jZXN0b3JzKCksaT1udWxsO3Q9ci5wb3AoKSxlPW4u cG9wKCk7Zm9yKDt0PT09ZTspaT10LHQ9ci5wb3AoKSxlPW4ucG9wKCk7cmV0dXJuIGl9KGUs dCksbj1bZV07ZSE9PXI7KWU9ZS5wYXJlbnQsbi5wdXNoKGUpO2Zvcih2YXIgaT1uLmxlbmd0 aDt0IT09cjspbi5zcGxpY2UoaSwwLHQpLHQ9dC5wYXJlbnQ7cmV0dXJuIG59LGFuY2VzdG9y czpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9W3RdO3Q9dC5wYXJlbnQ7KWUucHVzaCh0 KTtyZXR1cm4gZX0sZGVzY2VuZGFudHM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdGhp cy5lYWNoKChmdW5jdGlvbihlKXt0LnB1c2goZSl9KSksdH0sbGVhdmVzOmZ1bmN0aW9uKCl7 dmFyIHQ9W107cmV0dXJuIHRoaXMuZWFjaEJlZm9yZSgoZnVuY3Rpb24oZSl7ZS5jaGlsZHJl bnx8dC5wdXNoKGUpfSkpLHR9LGxpbmtzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPVtdO3Jl dHVybiB0LmVhY2goKGZ1bmN0aW9uKHIpe3IhPT10JiZlLnB1c2goe3NvdXJjZTpyLnBhcmVu dCx0YXJnZXQ6cn0pfSkpLGV9LGNvcHk6ZnVuY3Rpb24oKXtyZXR1cm4gYSh0aGlzKS5lYWNo QmVmb3JlKHMpfX07dmFyIHU9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIGYodCl7 Zm9yKHZhciBlLHIsbj0wLGk9KHQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHIsbj10Lmxlbmd0 aDtuOylyPU1hdGgucmFuZG9tKCkqbi0tfDAsZT10W25dLHRbbl09dFtyXSx0W3JdPWU7cmV0 dXJuIHR9KHUuY2FsbCh0KSkpLmxlbmd0aCxhPVtdO248aTspZT10W25dLHImJmQocixlKT8r K246KHI9ZyhhPWgoYSxlKSksbj0wKTtyZXR1cm4gcn1mdW5jdGlvbiBoKHQsZSl7dmFyIHIs bjtpZihtKGUsdCkpcmV0dXJuW2VdO2ZvcihyPTA7cjx0Lmxlbmd0aDsrK3IpaWYocChlLHRb cl0pJiZtKHYodFtyXSxlKSx0KSlyZXR1cm5bdFtyXSxlXTtmb3Iocj0wO3I8dC5sZW5ndGgt MTsrK3IpZm9yKG49cisxO248dC5sZW5ndGg7KytuKWlmKHAodih0W3JdLHRbbl0pLGUpJiZw KHYodFtyXSxlKSx0W25dKSYmcCh2KHRbbl0sZSksdFtyXSkmJm0oeSh0W3JdLHRbbl0sZSks dCkpcmV0dXJuW3Rbcl0sdFtuXSxlXTt0aHJvdyBuZXcgRXJyb3J9ZnVuY3Rpb24gcCh0LGUp e3ZhciByPXQuci1lLnIsbj1lLngtdC54LGk9ZS55LXQueTtyZXR1cm4gcjwwfHxyKnI8bipu K2kqaX1mdW5jdGlvbiBkKHQsZSl7dmFyIHI9dC5yLWUucisxZS02LG49ZS54LXQueCxpPWUu eS10Lnk7cmV0dXJuIHI+MCYmcipyPm4qbitpKml9ZnVuY3Rpb24gbSh0LGUpe2Zvcih2YXIg cj0wO3I8ZS5sZW5ndGg7KytyKWlmKCFkKHQsZVtyXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVu Y3Rpb24gZyh0KXtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMTpyZXR1cm57eDooZT10WzBdKS54 LHk6ZS55LHI6ZS5yfTtjYXNlIDI6cmV0dXJuIHYodFswXSx0WzFdKTtjYXNlIDM6cmV0dXJu IHkodFswXSx0WzFdLHRbMl0pfXZhciBlfWZ1bmN0aW9uIHYodCxlKXt2YXIgcj10Lngsbj10 LnksaT10LnIsYT1lLngsbz1lLnkscz1lLnIsbD1hLXIsYz1vLW4sdT1zLWksZj1NYXRoLnNx cnQobCpsK2MqYyk7cmV0dXJue3g6KHIrYStsL2YqdSkvMix5OihuK28rYy9mKnUpLzIscjoo ZitpK3MpLzJ9fWZ1bmN0aW9uIHkodCxlLHIpe3ZhciBuPXQueCxpPXQueSxhPXQucixvPWUu eCxzPWUueSxsPWUucixjPXIueCx1PXIueSxmPXIucixoPW4tbyxwPW4tYyxkPWktcyxtPWkt dSxnPWwtYSx2PWYtYSx5PW4qbitpKmktYSphLHg9eS1vKm8tcypzK2wqbCxiPXktYypjLXUq dStmKmYsXz1wKmQtaCptLHc9KGQqYi1tKngpLygyKl8pLW4sVD0obSpnLWQqdikvXyxrPShw KngtaCpiKS8oMipfKS1pLEE9KGgqdi1wKmcpL18sTT1UKlQrQSpBLTEsUz0yKihhK3cqVCtr KkEpLEU9dyp3K2sqay1hKmEsTD0tKE0/KFMrTWF0aC5zcXJ0KFMqUy00Kk0qRSkpLygyKk0p OkUvUyk7cmV0dXJue3g6bit3K1QqTCx5OmkraytBKkwscjpMfX1mdW5jdGlvbiB4KHQsZSxy KXt2YXIgbixpLGEsbyxzPXQueC1lLngsbD10LnktZS55LGM9cypzK2wqbDtjPyhpPWUucity LnIsaSo9aSxvPXQucityLnIsaT4obyo9byk/KG49KGMrby1pKS8oMipjKSxhPU1hdGguc3Fy dChNYXRoLm1heCgwLG8vYy1uKm4pKSxyLng9dC54LW4qcy1hKmwsci55PXQueS1uKmwrYSpz KToobj0oYytpLW8pLygyKmMpLGE9TWF0aC5zcXJ0KE1hdGgubWF4KDAsaS9jLW4qbikpLHIu eD1lLngrbipzLWEqbCxyLnk9ZS55K24qbCthKnMpKTooci54PWUueCtyLnIsci55PWUueSl9 ZnVuY3Rpb24gYih0LGUpe3ZhciByPXQucitlLnItMWUtNixuPWUueC10LngsaT1lLnktdC55 O3JldHVybiByPjAmJnIqcj5uKm4raSppfWZ1bmN0aW9uIF8odCl7dmFyIGU9dC5fLHI9dC5u ZXh0Ll8sbj1lLnIrci5yLGk9KGUueCpyLnIrci54KmUucikvbixhPShlLnkqci5yK3IueSpl LnIpL247cmV0dXJuIGkqaSthKmF9ZnVuY3Rpb24gdyh0KXt0aGlzLl89dCx0aGlzLm5leHQ9 bnVsbCx0aGlzLnByZXZpb3VzPW51bGx9ZnVuY3Rpb24gVCh0KXtpZighKGk9dC5sZW5ndGgp KXJldHVybiAwO3ZhciBlLHIsbixpLGEsbyxzLGwsYyx1LGg7aWYoKGU9dFswXSkueD0wLGUu eT0wLCEoaT4xKSlyZXR1cm4gZS5yO2lmKHI9dFsxXSxlLng9LXIucixyLng9ZS5yLHIueT0w LCEoaT4yKSlyZXR1cm4gZS5yK3Iucjt4KHIsZSxuPXRbMl0pLGU9bmV3IHcoZSkscj1uZXcg dyhyKSxuPW5ldyB3KG4pLGUubmV4dD1uLnByZXZpb3VzPXIsci5uZXh0PWUucHJldmlvdXM9 bixuLm5leHQ9ci5wcmV2aW91cz1lO3Q6Zm9yKHM9MztzPGk7KytzKXt4KGUuXyxyLl8sbj10 W3NdKSxuPW5ldyB3KG4pLGw9ci5uZXh0LGM9ZS5wcmV2aW91cyx1PXIuXy5yLGg9ZS5fLnI7 ZG97aWYodTw9aCl7aWYoYihsLl8sbi5fKSl7cj1sLGUubmV4dD1yLHIucHJldmlvdXM9ZSwt LXM7Y29udGludWUgdH11Kz1sLl8ucixsPWwubmV4dH1lbHNle2lmKGIoYy5fLG4uXykpeyhl PWMpLm5leHQ9cixyLnByZXZpb3VzPWUsLS1zO2NvbnRpbnVlIHR9aCs9Yy5fLnIsYz1jLnBy ZXZpb3VzfX13aGlsZShsIT09Yy5uZXh0KTtmb3Iobi5wcmV2aW91cz1lLG4ubmV4dD1yLGUu bmV4dD1yLnByZXZpb3VzPXI9bixhPV8oZSk7KG49bi5uZXh0KSE9PXI7KShvPV8obikpPGEm JihlPW4sYT1vKTtyPWUubmV4dH1mb3IoZT1bci5fXSxuPXI7KG49bi5uZXh0KSE9PXI7KWUu cHVzaChuLl8pO2ZvcihuPWYoZSkscz0wO3M8aTsrK3MpKGU9dFtzXSkueC09bi54LGUueS09 bi55O3JldHVybiBuLnJ9ZnVuY3Rpb24gayh0KXtyZXR1cm4gbnVsbD09dD9udWxsOkEodCl9 ZnVuY3Rpb24gQSh0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7 cmV0dXJuIHR9ZnVuY3Rpb24gTSgpe3JldHVybiAwfWZ1bmN0aW9uIFModCl7cmV0dXJuIGZ1 bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIEUodCl7cmV0dXJuIE1hdGguc3FydCh0LnZh bHVlKX1mdW5jdGlvbiBMKHQpe3JldHVybiBmdW5jdGlvbihlKXtlLmNoaWxkcmVufHwoZS5y PU1hdGgubWF4KDAsK3QoZSl8fDApKX19ZnVuY3Rpb24gQyh0LGUpe3JldHVybiBmdW5jdGlv bihyKXtpZihuPXIuY2hpbGRyZW4pe3ZhciBuLGksYSxvPW4ubGVuZ3RoLHM9dChyKSplfHww O2lmKHMpZm9yKGk9MDtpPG87KytpKW5baV0ucis9cztpZihhPVQobikscylmb3IoaT0wO2k8 bzsrK2kpbltpXS5yLT1zO3Iucj1hK3N9fX1mdW5jdGlvbiBQKHQpe3JldHVybiBmdW5jdGlv bihlKXt2YXIgcj1lLnBhcmVudDtlLnIqPXQsciYmKGUueD1yLngrdCplLngsZS55PXIueSt0 KmUueSl9fWZ1bmN0aW9uIEkodCl7dC54MD1NYXRoLnJvdW5kKHQueDApLHQueTA9TWF0aC5y b3VuZCh0LnkwKSx0LngxPU1hdGgucm91bmQodC54MSksdC55MT1NYXRoLnJvdW5kKHQueTEp fWZ1bmN0aW9uIE8odCxlLHIsbixpKXtmb3IodmFyIGEsbz10LmNoaWxkcmVuLHM9LTEsbD1v Lmxlbmd0aCxjPXQudmFsdWUmJihuLWUpL3QudmFsdWU7KytzPGw7KShhPW9bc10pLnkwPXIs YS55MT1pLGEueDA9ZSxhLngxPWUrPWEudmFsdWUqY312YXIgej17ZGVwdGg6LTF9LEQ9e307 ZnVuY3Rpb24gUih0KXtyZXR1cm4gdC5pZH1mdW5jdGlvbiBGKHQpe3JldHVybiB0LnBhcmVu dElkfWZ1bmN0aW9uIEIodCxlKXtyZXR1cm4gdC5wYXJlbnQ9PT1lLnBhcmVudD8xOjJ9ZnVu Y3Rpb24gTih0KXt2YXIgZT10LmNoaWxkcmVuO3JldHVybiBlP2VbMF06dC50fWZ1bmN0aW9u IGoodCl7dmFyIGU9dC5jaGlsZHJlbjtyZXR1cm4gZT9lW2UubGVuZ3RoLTFdOnQudH1mdW5j dGlvbiBVKHQsZSxyKXt2YXIgbj1yLyhlLmktdC5pKTtlLmMtPW4sZS5zKz1yLHQuYys9bixl LnorPXIsZS5tKz1yfWZ1bmN0aW9uIFYodCxlLHIpe3JldHVybiB0LmEucGFyZW50PT09ZS5w YXJlbnQ/dC5hOnJ9ZnVuY3Rpb24gSCh0LGUpe3RoaXMuXz10LHRoaXMucGFyZW50PW51bGws dGhpcy5jaGlsZHJlbj1udWxsLHRoaXMuQT1udWxsLHRoaXMuYT10aGlzLHRoaXMuej0wLHRo aXMubT0wLHRoaXMuYz0wLHRoaXMucz0wLHRoaXMudD1udWxsLHRoaXMuaT1lfWZ1bmN0aW9u IHEodCxlLHIsbixpKXtmb3IodmFyIGEsbz10LmNoaWxkcmVuLHM9LTEsbD1vLmxlbmd0aCxj PXQudmFsdWUmJihpLXIpL3QudmFsdWU7KytzPGw7KShhPW9bc10pLngwPWUsYS54MT1uLGEu eTA9cixhLnkxPXIrPWEudmFsdWUqY31ILnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGMucHJv dG90eXBlKTt2YXIgRz0oMStNYXRoLnNxcnQoNSkpLzI7ZnVuY3Rpb24gWSh0LGUscixuLGks YSl7Zm9yKHZhciBvLHMsbCxjLHUsZixoLHAsZCxtLGcsdj1bXSx5PWUuY2hpbGRyZW4seD0w LGI9MCxfPXkubGVuZ3RoLHc9ZS52YWx1ZTt4PF87KXtsPWktcixjPWEtbjtkb3t1PXlbYisr XS52YWx1ZX13aGlsZSghdSYmYjxfKTtmb3IoZj1oPXUsZz11KnUqKG09TWF0aC5tYXgoYy9s LGwvYykvKHcqdCkpLGQ9TWF0aC5tYXgoaC9nLGcvZik7YjxfOysrYil7aWYodSs9cz15W2Jd LnZhbHVlLHM8ZiYmKGY9cykscz5oJiYoaD1zKSxnPXUqdSptLChwPU1hdGgubWF4KGgvZyxn L2YpKT5kKXt1LT1zO2JyZWFrfWQ9cH12LnB1c2gobz17dmFsdWU6dSxkaWNlOmw8YyxjaGls ZHJlbjp5LnNsaWNlKHgsYil9KSxvLmRpY2U/TyhvLHIsbixpLHc/bis9Yyp1L3c6YSk6cShv LHIsbix3P3IrPWwqdS93OmksYSksdy09dSx4PWJ9cmV0dXJuIHZ9dmFyIFc9ZnVuY3Rpb24g dChlKXtmdW5jdGlvbiByKHQscixuLGksYSl7WShlLHQscixuLGksYSl9cmV0dXJuIHIucmF0 aW89ZnVuY3Rpb24oZSl7cmV0dXJuIHQoKGU9K2UpPjE/ZToxKX0scn0oRyk7dmFyIFg9ZnVu Y3Rpb24gdChlKXtmdW5jdGlvbiByKHQscixuLGksYSl7aWYoKG89dC5fc3F1YXJpZnkpJiZv LnJhdGlvPT09ZSlmb3IodmFyIG8scyxsLGMsdSxmPS0xLGg9by5sZW5ndGgscD10LnZhbHVl OysrZjxoOyl7Zm9yKGw9KHM9b1tmXSkuY2hpbGRyZW4sYz1zLnZhbHVlPTAsdT1sLmxlbmd0 aDtjPHU7KytjKXMudmFsdWUrPWxbY10udmFsdWU7cy5kaWNlP08ocyxyLG4saSxuKz0oYS1u KSpzLnZhbHVlL3ApOnEocyxyLG4scis9KGktcikqcy52YWx1ZS9wLGEpLHAtPXMudmFsdWV9 ZWxzZSB0Ll9zcXVhcmlmeT1vPVkoZSx0LHIsbixpLGEpLG8ucmF0aW89ZX1yZXR1cm4gci5y YXRpbz1mdW5jdGlvbihlKXtyZXR1cm4gdCgoZT0rZSk+MT9lOjEpfSxyfShHKTt0LmNsdXN0 ZXI9ZnVuY3Rpb24oKXt2YXIgdD1lLGk9MSxhPTEsbz0hMTtmdW5jdGlvbiBzKGUpe3ZhciBz LGw9MDtlLmVhY2hBZnRlcigoZnVuY3Rpb24oZSl7dmFyIGk9ZS5jaGlsZHJlbjtpPyhlLng9 ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVkdWNlKHIsMCkvdC5sZW5ndGh9KGkpLGUueT1mdW5j dGlvbih0KXtyZXR1cm4gMSt0LnJlZHVjZShuLDApfShpKSk6KGUueD1zP2wrPXQoZSxzKTow LGUueT0wLHM9ZSl9KSk7dmFyIGM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlO2U9dC5jaGlsZHJl bjspdD1lWzBdO3JldHVybiB0fShlKSx1PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZTtlPXQuY2hp bGRyZW47KXQ9ZVtlLmxlbmd0aC0xXTtyZXR1cm4gdH0oZSksZj1jLngtdChjLHUpLzIsaD11 LngrdCh1LGMpLzI7cmV0dXJuIGUuZWFjaEFmdGVyKG8/ZnVuY3Rpb24odCl7dC54PSh0Lngt ZS54KSppLHQueT0oZS55LXQueSkqYX06ZnVuY3Rpb24odCl7dC54PSh0LngtZikvKGgtZikq aSx0Lnk9KDEtKGUueT90LnkvZS55OjEpKSphfSl9cmV0dXJuIHMuc2VwYXJhdGlvbj1mdW5j dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLHMpOnR9LHMuc2l6ZT1mdW5j dGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0hMSxpPSt0WzBdLGE9K3RbMV0s cyk6bz9udWxsOltpLGFdfSxzLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVu dHMubGVuZ3RoPyhvPSEwLGk9K3RbMF0sYT0rdFsxXSxzKTpvP1tpLGFdOm51bGx9LHN9LHQu aGllcmFyY2h5PWEsdC5wYWNrPWZ1bmN0aW9uKCl7dmFyIHQ9bnVsbCxlPTEscj0xLG49TTtm dW5jdGlvbiBpKGkpe3JldHVybiBpLng9ZS8yLGkueT1yLzIsdD9pLmVhY2hCZWZvcmUoTCh0 KSkuZWFjaEFmdGVyKEMobiwuNSkpLmVhY2hCZWZvcmUoUCgxKSk6aS5lYWNoQmVmb3JlKEwo RSkpLmVhY2hBZnRlcihDKE0sMSkpLmVhY2hBZnRlcihDKG4saS5yL01hdGgubWluKGUscikp KS5lYWNoQmVmb3JlKFAoTWF0aC5taW4oZSxyKS8oMippLnIpKSksaX1yZXR1cm4gaS5yYWRp dXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ayhlKSxpKTp0fSxp LnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3RbMF0scj0r dFsxXSxpKTpbZSxyXX0saS5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu bGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UygrdCksaSk6bn0saX0sdC5wYWNr RW5jbG9zZT1mLHQucGFja1NpYmxpbmdzPWZ1bmN0aW9uKHQpe3JldHVybiBUKHQpLHR9LHQu cGFydGl0aW9uPWZ1bmN0aW9uKCl7dmFyIHQ9MSxlPTEscj0wLG49ITE7ZnVuY3Rpb24gaShp KXt2YXIgYT1pLmhlaWdodCsxO3JldHVybiBpLngwPWkueTA9cixpLngxPXQsaS55MT1lL2Es aS5lYWNoQmVmb3JlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe24uY2hpbGRy ZW4mJk8obixuLngwLHQqKG4uZGVwdGgrMSkvZSxuLngxLHQqKG4uZGVwdGgrMikvZSk7dmFy IGk9bi54MCxhPW4ueTAsbz1uLngxLXIscz1uLnkxLXI7bzxpJiYoaT1vPShpK28pLzIpLHM8 YSYmKGE9cz0oYStzKS8yKSxuLngwPWksbi55MD1hLG4ueDE9byxuLnkxPXN9fShlLGEpKSxu JiZpLmVhY2hCZWZvcmUoSSksaX1yZXR1cm4gaS5yb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4g YXJndW1lbnRzLmxlbmd0aD8obj0hIXQsaSk6bn0saS5zaXplPWZ1bmN0aW9uKHIpe3JldHVy biBhcmd1bWVudHMubGVuZ3RoPyh0PStyWzBdLGU9K3JbMV0saSk6W3QsZV19LGkucGFkZGlu Zz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0rdCxpKTpyfSxpfSx0 LnN0cmF0aWZ5PWZ1bmN0aW9uKCl7dmFyIHQ9UixlPUY7ZnVuY3Rpb24gcihyKXt2YXIgbixp LGEsbyxzLHUsZixoPXIubGVuZ3RoLHA9bmV3IEFycmF5KGgpLGQ9e307Zm9yKGk9MDtpPGg7 KytpKW49cltpXSxzPXBbaV09bmV3IGMobiksbnVsbCE9KHU9dChuLGkscikpJiYodSs9IiIp JiYoZFtmPSIkIisocy5pZD11KV09ZiBpbiBkP0Q6cyk7Zm9yKGk9MDtpPGg7KytpKWlmKHM9 cFtpXSxudWxsIT0odT1lKHJbaV0saSxyKSkmJih1Kz0iIikpe2lmKCEobz1kWyIkIit1XSkp dGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nOiAiK3UpO2lmKG89PT1EKXRocm93IG5ldyBFcnJv cigiYW1iaWd1b3VzOiAiK3UpO28uY2hpbGRyZW4/by5jaGlsZHJlbi5wdXNoKHMpOm8uY2hp bGRyZW49W3NdLHMucGFyZW50PW99ZWxzZXtpZihhKXRocm93IG5ldyBFcnJvcigibXVsdGlw bGUgcm9vdHMiKTthPXN9aWYoIWEpdGhyb3cgbmV3IEVycm9yKCJubyByb290Iik7aWYoYS5w YXJlbnQ9eixhLmVhY2hCZWZvcmUoKGZ1bmN0aW9uKHQpe3QuZGVwdGg9dC5wYXJlbnQuZGVw dGgrMSwtLWh9KSkuZWFjaEJlZm9yZShsKSxhLnBhcmVudD1udWxsLGg+MCl0aHJvdyBuZXcg RXJyb3IoImN5Y2xlIik7cmV0dXJuIGF9cmV0dXJuIHIuaWQ9ZnVuY3Rpb24oZSl7cmV0dXJu IGFyZ3VtZW50cy5sZW5ndGg/KHQ9QShlKSxyKTp0fSxyLnBhcmVudElkPWZ1bmN0aW9uKHQp e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPUEodCkscik6ZX0scn0sdC50cmVlPWZ1bmN0 aW9uKCl7dmFyIHQ9QixlPTEscj0xLG49bnVsbDtmdW5jdGlvbiBpKGkpe3ZhciBsPWZ1bmN0 aW9uKHQpe2Zvcih2YXIgZSxyLG4saSxhLG89bmV3IEgodCwwKSxzPVtvXTtlPXMucG9wKCk7 KWlmKG49ZS5fLmNoaWxkcmVuKWZvcihlLmNoaWxkcmVuPW5ldyBBcnJheShhPW4ubGVuZ3Ro KSxpPWEtMTtpPj0wOy0taSlzLnB1c2gocj1lLmNoaWxkcmVuW2ldPW5ldyBIKG5baV0saSkp LHIucGFyZW50PWU7cmV0dXJuKG8ucGFyZW50PW5ldyBIKG51bGwsMCkpLmNoaWxkcmVuPVtv XSxvfShpKTtpZihsLmVhY2hBZnRlcihhKSxsLnBhcmVudC5tPS1sLnosbC5lYWNoQmVmb3Jl KG8pLG4paS5lYWNoQmVmb3JlKHMpO2Vsc2V7dmFyIGM9aSx1PWksZj1pO2kuZWFjaEJlZm9y ZSgoZnVuY3Rpb24odCl7dC54PGMueCYmKGM9dCksdC54PnUueCYmKHU9dCksdC5kZXB0aD5m LmRlcHRoJiYoZj10KX0pKTt2YXIgaD1jPT09dT8xOnQoYyx1KS8yLHA9aC1jLngsZD1lLyh1 LngraCtwKSxtPXIvKGYuZGVwdGh8fDEpO2kuZWFjaEJlZm9yZSgoZnVuY3Rpb24odCl7dC54 PSh0LngrcCkqZCx0Lnk9dC5kZXB0aCptfSkpfXJldHVybiBpfWZ1bmN0aW9uIGEoZSl7dmFy IHI9ZS5jaGlsZHJlbixuPWUucGFyZW50LmNoaWxkcmVuLGk9ZS5pP25bZS5pLTFdOm51bGw7 aWYocil7IWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyPTAsbj0wLGk9dC5jaGlsZHJlbixhPWku bGVuZ3RoOy0tYT49MDspKGU9aVthXSkueis9cixlLm0rPXIscis9ZS5zKyhuKz1lLmMpfShl KTt2YXIgYT0oclswXS56K3Jbci5sZW5ndGgtMV0ueikvMjtpPyhlLno9aS56K3QoZS5fLGku XyksZS5tPWUuei1hKTplLno9YX1lbHNlIGkmJihlLno9aS56K3QoZS5fLGkuXykpO2UucGFy ZW50LkE9ZnVuY3Rpb24oZSxyLG4pe2lmKHIpe2Zvcih2YXIgaSxhPWUsbz1lLHM9cixsPWEu cGFyZW50LmNoaWxkcmVuWzBdLGM9YS5tLHU9by5tLGY9cy5tLGg9bC5tO3M9aihzKSxhPU4o YSkscyYmYTspbD1OKGwpLChvPWoobykpLmE9ZSwoaT1zLnorZi1hLnotYyt0KHMuXyxhLl8p KT4wJiYoVShWKHMsZSxuKSxlLGkpLGMrPWksdSs9aSksZis9cy5tLGMrPWEubSxoKz1sLm0s dSs9by5tO3MmJiFqKG8pJiYoby50PXMsby5tKz1mLXUpLGEmJiFOKGwpJiYobC50PWEsbC5t Kz1jLWgsbj1lKX1yZXR1cm4gbn0oZSxpLGUucGFyZW50LkF8fG5bMF0pfWZ1bmN0aW9uIG8o dCl7dC5fLng9dC56K3QucGFyZW50Lm0sdC5tKz10LnBhcmVudC5tfWZ1bmN0aW9uIHModCl7 dC54Kj1lLHQueT10LmRlcHRoKnJ9cmV0dXJuIGkuc2VwYXJhdGlvbj1mdW5jdGlvbihlKXty ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLGkpOnR9LGkuc2l6ZT1mdW5jdGlvbih0KXty ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0hMSxlPSt0WzBdLHI9K3RbMV0saSk6bj9udWxs OltlLHJdfSxpLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro PyhuPSEwLGU9K3RbMF0scj0rdFsxXSxpKTpuP1tlLHJdOm51bGx9LGl9LHQudHJlZW1hcD1m dW5jdGlvbigpe3ZhciB0PVcsZT0hMSxyPTEsbj0xLGk9WzBdLGE9TSxvPU0scz1NLGw9TSxj PU07ZnVuY3Rpb24gdSh0KXtyZXR1cm4gdC54MD10LnkwPTAsdC54MT1yLHQueTE9bix0LmVh Y2hCZWZvcmUoZiksaT1bMF0sZSYmdC5lYWNoQmVmb3JlKEkpLHR9ZnVuY3Rpb24gZihlKXt2 YXIgcj1pW2UuZGVwdGhdLG49ZS54MCtyLHU9ZS55MCtyLGY9ZS54MS1yLGg9ZS55MS1yO2Y8 biYmKG49Zj0obitmKS8yKSxoPHUmJih1PWg9KHUraCkvMiksZS54MD1uLGUueTA9dSxlLngx PWYsZS55MT1oLGUuY2hpbGRyZW4mJihyPWlbZS5kZXB0aCsxXT1hKGUpLzIsbis9YyhlKS1y LHUrPW8oZSktciwoZi09cyhlKS1yKTxuJiYobj1mPShuK2YpLzIpLChoLT1sKGUpLXIpPHUm Jih1PWg9KHUraCkvMiksdChlLG4sdSxmLGgpKX1yZXR1cm4gdS5yb3VuZD1mdW5jdGlvbih0 KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0hIXQsdSk6ZX0sdS5zaXplPWZ1bmN0aW9u KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0WzBdLG49K3RbMV0sdSk6W3Isbl19 LHUudGlsZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1BKGUpLHUp OnR9LHUucGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD91LnBh ZGRpbmdJbm5lcih0KS5wYWRkaW5nT3V0ZXIodCk6dS5wYWRkaW5nSW5uZXIoKX0sdS5wYWRk aW5nSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0 aW9uIj09dHlwZW9mIHQ/dDpTKCt0KSx1KTphfSx1LnBhZGRpbmdPdXRlcj1mdW5jdGlvbih0 KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD91LnBhZGRpbmdUb3AodCkucGFkZGluZ1JpZ2h0 KHQpLnBhZGRpbmdCb3R0b20odCkucGFkZGluZ0xlZnQodCk6dS5wYWRkaW5nVG9wKCl9LHUu cGFkZGluZ1RvcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVu Y3Rpb24iPT10eXBlb2YgdD90OlMoK3QpLHUpOm99LHUucGFkZGluZ1JpZ2h0PWZ1bmN0aW9u KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6 UygrdCksdSk6c30sdS5wYWRkaW5nQm90dG9tPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVu dHMubGVuZ3RoPyhsPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UygrdCksdSk6bH0sdS5wYWRk aW5nTGVmdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0iZnVuY3Rp b24iPT10eXBlb2YgdD90OlMoK3QpLHUpOmN9LHV9LHQudHJlZW1hcEJpbmFyeT1mdW5jdGlv bih0LGUscixuLGkpe3ZhciBhLG8scz10LmNoaWxkcmVuLGw9cy5sZW5ndGgsYz1uZXcgQXJy YXkobCsxKTtmb3IoY1swXT1vPWE9MDthPGw7KythKWNbYSsxXT1vKz1zW2FdLnZhbHVlOyFm dW5jdGlvbiB0KGUscixuLGksYSxvLGwpe2lmKGU+PXItMSl7dmFyIHU9c1tlXTtyZXR1cm4g dS54MD1pLHUueTA9YSx1LngxPW8sdm9pZCh1LnkxPWwpfXZhciBmPWNbZV0saD1uLzIrZixw PWUrMSxkPXItMTtmb3IoO3A8ZDspe3ZhciBtPXArZD4+PjE7Y1ttXTxoP3A9bSsxOmQ9bX1o LWNbcC0xXTxjW3BdLWgmJmUrMTxwJiYtLXA7dmFyIGc9Y1twXS1mLHY9bi1nO2lmKG8taT5s LWEpe3ZhciB5PShpKnYrbypnKS9uO3QoZSxwLGcsaSxhLHksbCksdChwLHIsdix5LGEsbyxs KX1lbHNle3ZhciB4PShhKnYrbCpnKS9uO3QoZSxwLGcsaSxhLG8seCksdChwLHIsdixpLHgs byxsKX19KDAsbCx0LnZhbHVlLGUscixuLGkpfSx0LnRyZWVtYXBEaWNlPU8sdC50cmVlbWFw UmVzcXVhcmlmeT1YLHQudHJlZW1hcFNsaWNlPXEsdC50cmVlbWFwU2xpY2VEaWNlPWZ1bmN0 aW9uKHQsZSxyLG4saSl7KDEmdC5kZXB0aD9xOk8pKHQsZSxyLG4saSl9LHQudHJlZW1hcFNx dWFyaWZ5PVcsT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZToh MH0pfSkpfSx7fV0sMTE2OltmdW5jdGlvbih0LGUscil7IWZ1bmN0aW9uKG4saSl7Im9iamVj dCI9PXR5cGVvZiByJiZ2b2lkIDAhPT1lP2kocix0KCJkMy1jb2xvciIpKTppKChuPW58fHNl bGYpLmQzPW4uZDN8fHt9LG4uZDMpfSh0aGlzLChmdW5jdGlvbih0LGUpeyJ1c2Ugc3RyaWN0 IjtmdW5jdGlvbiByKHQsZSxyLG4saSl7dmFyIGE9dCp0LG89YSp0O3JldHVybigoMS0zKnQr MyphLW8pKmUrKDQtNiphKzMqbykqcisoMSszKnQrMyphLTMqbykqbitvKmkpLzZ9ZnVuY3Rp b24gbih0KXt2YXIgZT10Lmxlbmd0aC0xO3JldHVybiBmdW5jdGlvbihuKXt2YXIgaT1uPD0w P249MDpuPj0xPyhuPTEsZS0xKTpNYXRoLmZsb29yKG4qZSksYT10W2ldLG89dFtpKzFdLHM9 aT4wP3RbaS0xXToyKmEtbyxsPWk8ZS0xP3RbaSsyXToyKm8tYTtyZXR1cm4gcigobi1pL2Up KmUscyxhLG8sbCl9fWZ1bmN0aW9uIGkodCl7dmFyIGU9dC5sZW5ndGg7cmV0dXJuIGZ1bmN0 aW9uKG4pe3ZhciBpPU1hdGguZmxvb3IoKChuJT0xKTwwPysrbjpuKSplKSxhPXRbKGkrZS0x KSVlXSxvPXRbaSVlXSxzPXRbKGkrMSklZV0sbD10WyhpKzIpJWVdO3JldHVybiByKChuLWkv ZSkqZSxhLG8scyxsKX19ZnVuY3Rpb24gYSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4g dH19ZnVuY3Rpb24gbyh0LGUpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gdCtyKmV9fWZ1 bmN0aW9uIHModCxlKXt2YXIgcj1lLXQ7cmV0dXJuIHI/byh0LHI+MTgwfHxyPC0xODA/ci0z NjAqTWF0aC5yb3VuZChyLzM2MCk6cik6YShpc05hTih0KT9lOnQpfWZ1bmN0aW9uIGwodCl7 cmV0dXJuIDE9PSh0PSt0KT9jOmZ1bmN0aW9uKGUscil7cmV0dXJuIHItZT9mdW5jdGlvbih0 LGUscil7cmV0dXJuIHQ9TWF0aC5wb3codCxyKSxlPU1hdGgucG93KGUsciktdCxyPTEvcixm dW5jdGlvbihuKXtyZXR1cm4gTWF0aC5wb3codCtuKmUscil9fShlLHIsdCk6YShpc05hTihl KT9yOmUpfX1mdW5jdGlvbiBjKHQsZSl7dmFyIHI9ZS10O3JldHVybiByP28odCxyKTphKGlz TmFOKHQpP2U6dCl9dmFyIHU9ZnVuY3Rpb24gdChyKXt2YXIgbj1sKHIpO2Z1bmN0aW9uIGko dCxyKXt2YXIgaT1uKCh0PWUucmdiKHQpKS5yLChyPWUucmdiKHIpKS5yKSxhPW4odC5nLHIu Zyksbz1uKHQuYixyLmIpLHM9Yyh0Lm9wYWNpdHksci5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rp b24oZSl7cmV0dXJuIHQucj1pKGUpLHQuZz1hKGUpLHQuYj1vKGUpLHQub3BhY2l0eT1zKGUp LHQrIiJ9fXJldHVybiBpLmdhbW1hPXQsaX0oMSk7ZnVuY3Rpb24gZih0KXtyZXR1cm4gZnVu Y3Rpb24ocil7dmFyIG4saSxhPXIubGVuZ3RoLG89bmV3IEFycmF5KGEpLHM9bmV3IEFycmF5 KGEpLGw9bmV3IEFycmF5KGEpO2ZvcihuPTA7bjxhOysrbilpPWUucmdiKHJbbl0pLG9bbl09 aS5yfHwwLHNbbl09aS5nfHwwLGxbbl09aS5ifHwwO3JldHVybiBvPXQobykscz10KHMpLGw9 dChsKSxpLm9wYWNpdHk9MSxmdW5jdGlvbih0KXtyZXR1cm4gaS5yPW8odCksaS5nPXModCks aS5iPWwodCksaSsiIn19fXZhciBoPWYobikscD1mKGkpO2Z1bmN0aW9uIGQodCxlKXtlfHwo ZT1bXSk7dmFyIHIsbj10P01hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoKTowLGk9ZS5zbGlj ZSgpO3JldHVybiBmdW5jdGlvbihhKXtmb3Iocj0wO3I8bjsrK3IpaVtyXT10W3JdKigxLWEp K2Vbcl0qYTtyZXR1cm4gaX19ZnVuY3Rpb24gbSh0KXtyZXR1cm4gQXJyYXlCdWZmZXIuaXNW aWV3KHQpJiYhKHQgaW5zdGFuY2VvZiBEYXRhVmlldyl9ZnVuY3Rpb24gZyh0LGUpe3ZhciBy LG49ZT9lLmxlbmd0aDowLGk9dD9NYXRoLm1pbihuLHQubGVuZ3RoKTowLGE9bmV3IEFycmF5 KGkpLG89bmV3IEFycmF5KG4pO2ZvcihyPTA7cjxpOysrcilhW3JdPVQodFtyXSxlW3JdKTtm b3IoO3I8bjsrK3Ipb1tyXT1lW3JdO3JldHVybiBmdW5jdGlvbih0KXtmb3Iocj0wO3I8aTsr K3Ipb1tyXT1hW3JdKHQpO3JldHVybiBvfX1mdW5jdGlvbiB2KHQsZSl7dmFyIHI9bmV3IERh dGU7cmV0dXJuIHQ9K3QsZT0rZSxmdW5jdGlvbihuKXtyZXR1cm4gci5zZXRUaW1lKHQqKDEt bikrZSpuKSxyfX1mdW5jdGlvbiB5KHQsZSl7cmV0dXJuIHQ9K3QsZT0rZSxmdW5jdGlvbihy KXtyZXR1cm4gdCooMS1yKStlKnJ9fWZ1bmN0aW9uIHgodCxlKXt2YXIgcixuPXt9LGk9e307 Zm9yKHIgaW4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1l JiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlKXIgaW4gdD9uW3JdPVQodFtyXSxlW3Jd KTppW3JdPWVbcl07cmV0dXJuIGZ1bmN0aW9uKHQpe2ZvcihyIGluIG4paVtyXT1uW3JdKHQp O3JldHVybiBpfX12YXIgYj0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStd P1xkKyk/L2csXz1uZXcgUmVnRXhwKGIuc291cmNlLCJnIik7ZnVuY3Rpb24gdyh0LGUpe3Zh ciByLG4saSxhPWIubGFzdEluZGV4PV8ubGFzdEluZGV4PTAsbz0tMSxzPVtdLGw9W107Zm9y KHQrPSIiLGUrPSIiOyhyPWIuZXhlYyh0KSkmJihuPV8uZXhlYyhlKSk7KShpPW4uaW5kZXgp PmEmJihpPWUuc2xpY2UoYSxpKSxzW29dP3Nbb10rPWk6c1srK29dPWkpLChyPXJbMF0pPT09 KG49blswXSk/c1tvXT9zW29dKz1uOnNbKytvXT1uOihzWysrb109bnVsbCxsLnB1c2goe2k6 byx4OnkocixuKX0pKSxhPV8ubGFzdEluZGV4O3JldHVybiBhPGUubGVuZ3RoJiYoaT1lLnNs aWNlKGEpLHNbb10/c1tvXSs9aTpzWysrb109aSkscy5sZW5ndGg8Mj9sWzBdP2Z1bmN0aW9u KHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChlKSsiIn19KGxbMF0ueCk6ZnVuY3Rp b24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fShlKTooZT1sLmxlbmd0aCxmdW5j dGlvbih0KXtmb3IodmFyIHIsbj0wO248ZTsrK24pc1socj1sW25dKS5pXT1yLngodCk7cmV0 dXJuIHMuam9pbigiIil9KX1mdW5jdGlvbiBUKHQscil7dmFyIG4saT10eXBlb2YgcjtyZXR1 cm4gbnVsbD09cnx8ImJvb2xlYW4iPT09aT9hKHIpOigibnVtYmVyIj09PWk/eToic3RyaW5n Ij09PWk/KG49ZS5jb2xvcihyKSk/KHI9bix1KTp3OnIgaW5zdGFuY2VvZiBlLmNvbG9yP3U6 ciBpbnN0YW5jZW9mIERhdGU/djptKHIpP2Q6QXJyYXkuaXNBcnJheShyKT9nOiJmdW5jdGlv biIhPXR5cGVvZiByLnZhbHVlT2YmJiJmdW5jdGlvbiIhPXR5cGVvZiByLnRvU3RyaW5nfHxp c05hTihyKT94OnkpKHQscil9dmFyIGssQSxNLFMsRT0xODAvTWF0aC5QSSxMPXt0cmFuc2xh dGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9 O2Z1bmN0aW9uIEModCxlLHIsbixpLGEpe3ZhciBvLHMsbDtyZXR1cm4obz1NYXRoLnNxcnQo dCp0K2UqZSkpJiYodC89byxlLz1vKSwobD10KnIrZSpuKSYmKHItPXQqbCxuLT1lKmwpLChz PU1hdGguc3FydChyKnIrbipuKSkmJihyLz1zLG4vPXMsbC89cyksdCpuPGUqciYmKHQ9LXQs ZT0tZSxsPS1sLG89LW8pLHt0cmFuc2xhdGVYOmksdHJhbnNsYXRlWTphLHJvdGF0ZTpNYXRo LmF0YW4yKGUsdCkqRSxza2V3WDpNYXRoLmF0YW4obCkqRSxzY2FsZVg6byxzY2FsZVk6c319 ZnVuY3Rpb24gUCh0LGUscixuKXtmdW5jdGlvbiBpKHQpe3JldHVybiB0Lmxlbmd0aD90LnBv cCgpKyIgIjoiIn1yZXR1cm4gZnVuY3Rpb24oYSxvKXt2YXIgcz1bXSxsPVtdO3JldHVybiBh PXQoYSksbz10KG8pLGZ1bmN0aW9uKHQsbixpLGEsbyxzKXtpZih0IT09aXx8biE9PWEpe3Zh ciBsPW8ucHVzaCgidHJhbnNsYXRlKCIsbnVsbCxlLG51bGwscik7cy5wdXNoKHtpOmwtNCx4 OnkodCxpKX0se2k6bC0yLHg6eShuLGEpfSl9ZWxzZShpfHxhKSYmby5wdXNoKCJ0cmFuc2xh dGUoIitpK2UrYStyKX0oYS50cmFuc2xhdGVYLGEudHJhbnNsYXRlWSxvLnRyYW5zbGF0ZVgs by50cmFuc2xhdGVZLHMsbCksZnVuY3Rpb24odCxlLHIsYSl7dCE9PWU/KHQtZT4xODA/ZSs9 MzYwOmUtdD4xODAmJih0Kz0zNjApLGEucHVzaCh7aTpyLnB1c2goaShyKSsicm90YXRlKCIs bnVsbCxuKS0yLHg6eSh0LGUpfSkpOmUmJnIucHVzaChpKHIpKyJyb3RhdGUoIitlK24pfShh LnJvdGF0ZSxvLnJvdGF0ZSxzLGwpLGZ1bmN0aW9uKHQsZSxyLGEpe3QhPT1lP2EucHVzaCh7 aTpyLnB1c2goaShyKSsic2tld1goIixudWxsLG4pLTIseDp5KHQsZSl9KTplJiZyLnB1c2go aShyKSsic2tld1goIitlK24pfShhLnNrZXdYLG8uc2tld1gscyxsKSxmdW5jdGlvbih0LGUs cixuLGEsbyl7aWYodCE9PXJ8fGUhPT1uKXt2YXIgcz1hLnB1c2goaShhKSsic2NhbGUoIixu dWxsLCIsIixudWxsLCIpIik7by5wdXNoKHtpOnMtNCx4OnkodCxyKX0se2k6cy0yLHg6eShl LG4pfSl9ZWxzZSAxPT09ciYmMT09PW58fGEucHVzaChpKGEpKyJzY2FsZSgiK3IrIiwiK24r IikiKX0oYS5zY2FsZVgsYS5zY2FsZVksby5zY2FsZVgsby5zY2FsZVkscyxsKSxhPW89bnVs bCxmdW5jdGlvbih0KXtmb3IodmFyIGUscj0tMSxuPWwubGVuZ3RoOysrcjxuOylzWyhlPWxb cl0pLmldPWUueCh0KTtyZXR1cm4gcy5qb2luKCIiKX19fXZhciBJPVAoKGZ1bmN0aW9uKHQp e3JldHVybiJub25lIj09PXQ/TDooa3x8KGs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElW IiksQT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsTT1kb2N1bWVudC5kZWZhdWx0Vmlldyks ay5zdHlsZS50cmFuc2Zvcm09dCx0PU0uZ2V0Q29tcHV0ZWRTdHlsZShBLmFwcGVuZENoaWxk KGspLG51bGwpLmdldFByb3BlcnR5VmFsdWUoInRyYW5zZm9ybSIpLEEucmVtb3ZlQ2hpbGQo ayksQygrKHQ9dC5zbGljZSg3LC0xKS5zcGxpdCgiLCIpKVswXSwrdFsxXSwrdFsyXSwrdFsz XSwrdFs0XSwrdFs1XSkpfSksInB4LCAiLCJweCkiLCJkZWcpIiksTz1QKChmdW5jdGlvbih0 KXtyZXR1cm4gbnVsbD09dD9MOihTfHwoUz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0 dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSxTLnNldEF0dHJpYnV0ZSgidHJhbnNm b3JtIix0KSwodD1TLnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkpP0MoKHQ9dC5t YXRyaXgpLmEsdC5iLHQuYyx0LmQsdC5lLHQuZik6TCl9KSwiLCAiLCIpIiwiKSIpLHo9TWF0 aC5TUVJUMjtmdW5jdGlvbiBEKHQpe3JldHVybigodD1NYXRoLmV4cCh0KSkrMS90KS8yfWZ1 bmN0aW9uIFIodCl7cmV0dXJuIGZ1bmN0aW9uKHIsbil7dmFyIGk9dCgocj1lLmhzbChyKSku aCwobj1lLmhzbChuKSkuaCksYT1jKHIucyxuLnMpLG89YyhyLmwsbi5sKSxzPWMoci5vcGFj aXR5LG4ub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiByLmg9aSh0KSxyLnM9 YSh0KSxyLmw9byh0KSxyLm9wYWNpdHk9cyh0KSxyKyIifX19dmFyIEY9UihzKSxCPVIoYyk7 ZnVuY3Rpb24gTih0KXtyZXR1cm4gZnVuY3Rpb24ocixuKXt2YXIgaT10KChyPWUuaGNsKHIp KS5oLChuPWUuaGNsKG4pKS5oKSxhPWMoci5jLG4uYyksbz1jKHIubCxuLmwpLHM9YyhyLm9w YWNpdHksbi5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHIuaD1pKHQpLHIu Yz1hKHQpLHIubD1vKHQpLHIub3BhY2l0eT1zKHQpLHIrIiJ9fX12YXIgaj1OKHMpLFU9Tihj KTtmdW5jdGlvbiBWKHQpe3JldHVybiBmdW5jdGlvbiByKG4pe2Z1bmN0aW9uIGkocixpKXt2 YXIgYT10KChyPWUuY3ViZWhlbGl4KHIpKS5oLChpPWUuY3ViZWhlbGl4KGkpKS5oKSxvPWMo ci5zLGkucykscz1jKHIubCxpLmwpLGw9YyhyLm9wYWNpdHksaS5vcGFjaXR5KTtyZXR1cm4g ZnVuY3Rpb24odCl7cmV0dXJuIHIuaD1hKHQpLHIucz1vKHQpLHIubD1zKE1hdGgucG93KHQs bikpLHIub3BhY2l0eT1sKHQpLHIrIiJ9fXJldHVybiBuPStuLGkuZ2FtbWE9cixpfSgxKX12 YXIgSD1WKHMpLHE9VihjKTt0LmludGVycG9sYXRlPVQsdC5pbnRlcnBvbGF0ZUFycmF5PWZ1 bmN0aW9uKHQsZSl7cmV0dXJuKG0oZSk/ZDpnKSh0LGUpfSx0LmludGVycG9sYXRlQmFzaXM9 bix0LmludGVycG9sYXRlQmFzaXNDbG9zZWQ9aSx0LmludGVycG9sYXRlQ3ViZWhlbGl4PUgs dC5pbnRlcnBvbGF0ZUN1YmVoZWxpeExvbmc9cSx0LmludGVycG9sYXRlRGF0ZT12LHQuaW50 ZXJwb2xhdGVEaXNjcmV0ZT1mdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm4gZnVu Y3Rpb24ocil7cmV0dXJuIHRbTWF0aC5tYXgoMCxNYXRoLm1pbihlLTEsTWF0aC5mbG9vcihy KmUpKSldfX0sdC5pbnRlcnBvbGF0ZUhjbD1qLHQuaW50ZXJwb2xhdGVIY2xMb25nPVUsdC5p bnRlcnBvbGF0ZUhzbD1GLHQuaW50ZXJwb2xhdGVIc2xMb25nPUIsdC5pbnRlcnBvbGF0ZUh1 ZT1mdW5jdGlvbih0LGUpe3ZhciByPXMoK3QsK2UpO3JldHVybiBmdW5jdGlvbih0KXt2YXIg ZT1yKHQpO3JldHVybiBlLTM2MCpNYXRoLmZsb29yKGUvMzYwKX19LHQuaW50ZXJwb2xhdGVM YWI9ZnVuY3Rpb24odCxyKXt2YXIgbj1jKCh0PWUubGFiKHQpKS5sLChyPWUubGFiKHIpKS5s KSxpPWModC5hLHIuYSksYT1jKHQuYixyLmIpLG89Yyh0Lm9wYWNpdHksci5vcGFjaXR5KTty ZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQubD1uKGUpLHQuYT1pKGUpLHQuYj1hKGUpLHQu b3BhY2l0eT1vKGUpLHQrIiJ9fSx0LmludGVycG9sYXRlTnVtYmVyPXksdC5pbnRlcnBvbGF0 ZU51bWJlckFycmF5PWQsdC5pbnRlcnBvbGF0ZU9iamVjdD14LHQuaW50ZXJwb2xhdGVSZ2I9 dSx0LmludGVycG9sYXRlUmdiQmFzaXM9aCx0LmludGVycG9sYXRlUmdiQmFzaXNDbG9zZWQ9 cCx0LmludGVycG9sYXRlUm91bmQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1 bmN0aW9uKHIpe3JldHVybiBNYXRoLnJvdW5kKHQqKDEtcikrZSpyKX19LHQuaW50ZXJwb2xh dGVTdHJpbmc9dyx0LmludGVycG9sYXRlVHJhbnNmb3JtQ3NzPUksdC5pbnRlcnBvbGF0ZVRy YW5zZm9ybVN2Zz1PLHQuaW50ZXJwb2xhdGVab29tPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixp PXRbMF0sYT10WzFdLG89dFsyXSxzPWVbMF0sbD1lWzFdLGM9ZVsyXSx1PXMtaSxmPWwtYSxo PXUqdStmKmY7aWYoaDwxZS0xMiluPU1hdGgubG9nKGMvbykveixyPWZ1bmN0aW9uKHQpe3Jl dHVybltpK3QqdSxhK3QqZixvKk1hdGguZXhwKHoqdCpuKV19O2Vsc2V7dmFyIHA9TWF0aC5z cXJ0KGgpLGQ9KGMqYy1vKm8rNCpoKS8oMipvKjIqcCksbT0oYypjLW8qby00KmgpLygyKmMq MipwKSxnPU1hdGgubG9nKE1hdGguc3FydChkKmQrMSktZCksdj1NYXRoLmxvZyhNYXRoLnNx cnQobSptKzEpLW0pO249KHYtZykveixyPWZ1bmN0aW9uKHQpe3ZhciBlLHI9dCpuLHM9RChn KSxsPW8vKDIqcCkqKHMqKGU9eipyK2csKChlPU1hdGguZXhwKDIqZSkpLTEpLyhlKzEpKS1m dW5jdGlvbih0KXtyZXR1cm4oKHQ9TWF0aC5leHAodCkpLTEvdCkvMn0oZykpO3JldHVybltp K2wqdSxhK2wqZixvKnMvRCh6KnIrZyldfX1yZXR1cm4gci5kdXJhdGlvbj0xZTMqbixyfSx0 LnBpZWNld2lzZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wLG49ZS5sZW5ndGgtMSxpPWVb MF0sYT1uZXcgQXJyYXkobjwwPzA6bik7cjxuOylhW3JdPXQoaSxpPWVbKytyXSk7cmV0dXJu IGZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgubWF4KDAsTWF0aC5taW4obi0xLE1hdGguZmxvb3Io dCo9bikpKTtyZXR1cm4gYVtlXSh0LWUpfX0sdC5xdWFudGl6ZT1mdW5jdGlvbih0LGUpe2Zv cih2YXIgcj1uZXcgQXJyYXkoZSksbj0wO248ZTsrK24pcltuXT10KG4vKGUtMSkpO3JldHVy biByfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9 KSl9LHsiZDMtY29sb3IiOjEwOX1dLDExNzpbZnVuY3Rpb24odCxlLHIpeyFmdW5jdGlvbih0 LG4peyJvYmplY3QiPT10eXBlb2YgciYmdm9pZCAwIT09ZT9uKHIpOm4oKHQ9dHx8c2VsZiku ZDM9dC5kM3x8e30pfSh0aGlzLChmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7dmFyIGU9TWF0 aC5QSSxyPTIqZSxuPXItMWUtNjtmdW5jdGlvbiBpKCl7dGhpcy5feDA9dGhpcy5feTA9dGhp cy5feDE9dGhpcy5feTE9bnVsbCx0aGlzLl89IiJ9ZnVuY3Rpb24gYSgpe3JldHVybiBuZXcg aX1pLnByb3RvdHlwZT1hLnByb3RvdHlwZT17Y29uc3RydWN0b3I6aSxtb3ZlVG86ZnVuY3Rp b24odCxlKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5f eTA9dGhpcy5feTE9K2UpfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXtudWxsIT09dGhpcy5feDEm Jih0aGlzLl94MT10aGlzLl94MCx0aGlzLl95MT10aGlzLl95MCx0aGlzLl8rPSJaIil9LGxp bmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuXys9IkwiKyh0aGlzLl94MT0rdCkrIiwiKyh0aGlz Ll95MT0rZSl9LHF1YWRyYXRpY0N1cnZlVG86ZnVuY3Rpb24odCxlLHIsbil7dGhpcy5fKz0i USIrICt0KyIsIisgK2UrIiwiKyh0aGlzLl94MT0rcikrIiwiKyh0aGlzLl95MT0rbil9LGJl emllckN1cnZlVG86ZnVuY3Rpb24odCxlLHIsbixpLGEpe3RoaXMuXys9IkMiKyArdCsiLCIr ICtlKyIsIisgK3IrIiwiKyArbisiLCIrKHRoaXMuX3gxPStpKSsiLCIrKHRoaXMuX3kxPSth KX0sYXJjVG86ZnVuY3Rpb24odCxyLG4saSxhKXt0PSt0LHI9K3Isbj0rbixpPStpLGE9K2E7 dmFyIG89dGhpcy5feDEscz10aGlzLl95MSxsPW4tdCxjPWktcix1PW8tdCxmPXMtcixoPXUq dStmKmY7aWYoYTwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK2EpO2lm KG51bGw9PT10aGlzLl94MSl0aGlzLl8rPSJNIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95 MT1yKTtlbHNlIGlmKGg+MWUtNilpZihNYXRoLmFicyhmKmwtYyp1KT4xZS02JiZhKXt2YXIg cD1uLW8sZD1pLXMsbT1sKmwrYypjLGc9cCpwK2QqZCx2PU1hdGguc3FydChtKSx5PU1hdGgu c3FydChoKSx4PWEqTWF0aC50YW4oKGUtTWF0aC5hY29zKChtK2gtZykvKDIqdip5KSkpLzIp LGI9eC95LF89eC92O01hdGguYWJzKGItMSk+MWUtNiYmKHRoaXMuXys9IkwiKyh0K2IqdSkr IiwiKyhyK2IqZikpLHRoaXMuXys9IkEiK2ErIiwiK2ErIiwwLDAsIisgKyhmKnA+dSpkKSsi LCIrKHRoaXMuX3gxPXQrXypsKSsiLCIrKHRoaXMuX3kxPXIrXypjKX1lbHNlIHRoaXMuXys9 IkwiKyh0aGlzLl94MT10KSsiLCIrKHRoaXMuX3kxPXIpO2Vsc2U7fSxhcmM6ZnVuY3Rpb24o dCxpLGEsbyxzLGwpe3Q9K3QsaT0raSxsPSEhbDt2YXIgYz0oYT0rYSkqTWF0aC5jb3Mobyks dT1hKk1hdGguc2luKG8pLGY9dCtjLGg9aSt1LHA9MV5sLGQ9bD9vLXM6cy1vO2lmKGE8MCl0 aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIithKTtudWxsPT09dGhpcy5feDE/ dGhpcy5fKz0iTSIrZisiLCIraDooTWF0aC5hYnModGhpcy5feDEtZik+MWUtNnx8TWF0aC5h YnModGhpcy5feTEtaCk+MWUtNikmJih0aGlzLl8rPSJMIitmKyIsIitoKSxhJiYoZDwwJiYo ZD1kJXIrciksZD5uP3RoaXMuXys9IkEiK2ErIiwiK2ErIiwwLDEsIitwKyIsIisodC1jKSsi LCIrKGktdSkrIkEiK2ErIiwiK2ErIiwwLDEsIitwKyIsIisodGhpcy5feDE9ZikrIiwiKyh0 aGlzLl95MT1oKTpkPjFlLTYmJih0aGlzLl8rPSJBIithKyIsIithKyIsMCwiKyArKGQ+PWUp KyIsIitwKyIsIisodGhpcy5feDE9dCthKk1hdGguY29zKHMpKSsiLCIrKHRoaXMuX3kxPWkr YSpNYXRoLnNpbihzKSkpKX0scmVjdDpmdW5jdGlvbih0LGUscixuKXt0aGlzLl8rPSJNIiso dGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpKyJoIisg K3IrInYiKyArbisiaCIrLXIrIloifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlz Ll99fSx0LnBhdGg9YSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3Zh bHVlOiEwfSl9KSl9LHt9XSwxMTg6W2Z1bmN0aW9uKHQsZSxyKXshZnVuY3Rpb24odCxuKXsi b2JqZWN0Ij09dHlwZW9mIHImJnZvaWQgMCE9PWU/bihyKTpuKCh0PXR8fHNlbGYpLmQzPXQu ZDN8fHt9KX0odGhpcywoZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGUodCxl LHIsbil7aWYoaXNOYU4oZSl8fGlzTmFOKHIpKXJldHVybiB0O3ZhciBpLGEsbyxzLGwsYyx1 LGYsaCxwPXQuX3Jvb3QsZD17ZGF0YTpufSxtPXQuX3gwLGc9dC5feTAsdj10Ll94MSx5PXQu X3kxO2lmKCFwKXJldHVybiB0Ll9yb290PWQsdDtmb3IoO3AubGVuZ3RoOylpZigoYz1lPj0o YT0obSt2KS8yKSk/bT1hOnY9YSwodT1yPj0obz0oZyt5KS8yKSk/Zz1vOnk9byxpPXAsIShw PXBbZj11PDwxfGNdKSlyZXR1cm4gaVtmXT1kLHQ7aWYocz0rdC5feC5jYWxsKG51bGwscC5k YXRhKSxsPSt0Ll95LmNhbGwobnVsbCxwLmRhdGEpLGU9PT1zJiZyPT09bClyZXR1cm4gZC5u ZXh0PXAsaT9pW2ZdPWQ6dC5fcm9vdD1kLHQ7ZG97aT1pP2lbZl09bmV3IEFycmF5KDQpOnQu X3Jvb3Q9bmV3IEFycmF5KDQpLChjPWU+PShhPShtK3YpLzIpKT9tPWE6dj1hLCh1PXI+PShv PShnK3kpLzIpKT9nPW86eT1vfXdoaWxlKChmPXU8PDF8Yyk9PShoPShsPj1vKTw8MXxzPj1h KSk7cmV0dXJuIGlbaF09cCxpW2ZdPWQsdH1mdW5jdGlvbiByKHQsZSxyLG4saSl7dGhpcy5u b2RlPXQsdGhpcy54MD1lLHRoaXMueTA9cix0aGlzLngxPW4sdGhpcy55MT1pfWZ1bmN0aW9u IG4odCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBh KHQsZSxyKXt2YXIgYT1uZXcgbyhudWxsPT1lP246ZSxudWxsPT1yP2k6cixOYU4sTmFOLE5h TixOYU4pO3JldHVybiBudWxsPT10P2E6YS5hZGRBbGwodCl9ZnVuY3Rpb24gbyh0LGUscixu LGksYSl7dGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl94MD1yLHRoaXMuX3kwPW4sdGhpcy5f eDE9aSx0aGlzLl95MT1hLHRoaXMuX3Jvb3Q9dm9pZCAwfWZ1bmN0aW9uIHModCl7Zm9yKHZh ciBlPXtkYXRhOnQuZGF0YX0scj1lO3Q9dC5uZXh0OylyPXIubmV4dD17ZGF0YTp0LmRhdGF9 O3JldHVybiBlfXZhciBsPWEucHJvdG90eXBlPW8ucHJvdG90eXBlO2wuY29weT1mdW5jdGlv bigpe3ZhciB0LGUscj1uZXcgbyh0aGlzLl94LHRoaXMuX3ksdGhpcy5feDAsdGhpcy5feTAs dGhpcy5feDEsdGhpcy5feTEpLG49dGhpcy5fcm9vdDtpZighbilyZXR1cm4gcjtpZighbi5s ZW5ndGgpcmV0dXJuIHIuX3Jvb3Q9cyhuKSxyO2Zvcih0PVt7c291cmNlOm4sdGFyZ2V0OnIu X3Jvb3Q9bmV3IEFycmF5KDQpfV07bj10LnBvcCgpOylmb3IodmFyIGk9MDtpPDQ7KytpKShl PW4uc291cmNlW2ldKSYmKGUubGVuZ3RoP3QucHVzaCh7c291cmNlOmUsdGFyZ2V0Om4udGFy Z2V0W2ldPW5ldyBBcnJheSg0KX0pOm4udGFyZ2V0W2ldPXMoZSkpO3JldHVybiByfSxsLmFk ZD1mdW5jdGlvbih0KXt2YXIgcj0rdGhpcy5feC5jYWxsKG51bGwsdCksbj0rdGhpcy5feS5j YWxsKG51bGwsdCk7cmV0dXJuIGUodGhpcy5jb3ZlcihyLG4pLHIsbix0KX0sbC5hZGRBbGw9 ZnVuY3Rpb24odCl7dmFyIHIsbixpLGEsbz10Lmxlbmd0aCxzPW5ldyBBcnJheShvKSxsPW5l dyBBcnJheShvKSxjPTEvMCx1PTEvMCxmPS0xLzAsaD0tMS8wO2ZvcihuPTA7bjxvOysrbilp c05hTihpPSt0aGlzLl94LmNhbGwobnVsbCxyPXRbbl0pKXx8aXNOYU4oYT0rdGhpcy5feS5j YWxsKG51bGwscikpfHwoc1tuXT1pLGxbbl09YSxpPGMmJihjPWkpLGk+ZiYmKGY9aSksYTx1 JiYodT1hKSxhPmgmJihoPWEpKTtpZihjPmZ8fHU+aClyZXR1cm4gdGhpcztmb3IodGhpcy5j b3ZlcihjLHUpLmNvdmVyKGYsaCksbj0wO248bzsrK24pZSh0aGlzLHNbbl0sbFtuXSx0W25d KTtyZXR1cm4gdGhpc30sbC5jb3Zlcj1mdW5jdGlvbih0LGUpe2lmKGlzTmFOKHQ9K3QpfHxp c05hTihlPStlKSlyZXR1cm4gdGhpczt2YXIgcj10aGlzLl94MCxuPXRoaXMuX3kwLGk9dGhp cy5feDEsYT10aGlzLl95MTtpZihpc05hTihyKSlpPShyPU1hdGguZmxvb3IodCkpKzEsYT0o bj1NYXRoLmZsb29yKGUpKSsxO2Vsc2V7Zm9yKHZhciBvLHMsbD1pLXIsYz10aGlzLl9yb290 O3I+dHx8dD49aXx8bj5lfHxlPj1hOylzd2l0Y2gocz0oZTxuKTw8MXx0PHIsKG89bmV3IEFy cmF5KDQpKVtzXT1jLGM9byxsKj0yLHMpe2Nhc2UgMDppPXIrbCxhPW4rbDticmVhaztjYXNl IDE6cj1pLWwsYT1uK2w7YnJlYWs7Y2FzZSAyOmk9citsLG49YS1sO2JyZWFrO2Nhc2UgMzpy PWktbCxuPWEtbH10aGlzLl9yb290JiZ0aGlzLl9yb290Lmxlbmd0aCYmKHRoaXMuX3Jvb3Q9 Yyl9cmV0dXJuIHRoaXMuX3gwPXIsdGhpcy5feTA9bix0aGlzLl94MT1pLHRoaXMuX3kxPWEs dGhpc30sbC5kYXRhPWZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIHRoaXMudmlzaXQoKGZ1 bmN0aW9uKGUpe2lmKCFlLmxlbmd0aClkb3t0LnB1c2goZS5kYXRhKX13aGlsZShlPWUubmV4 dCl9KSksdH0sbC5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ dGhpcy5jb3ZlcigrdFswXVswXSwrdFswXVsxXSkuY292ZXIoK3RbMV1bMF0sK3RbMV1bMV0p OmlzTmFOKHRoaXMuX3gwKT92b2lkIDA6W1t0aGlzLl94MCx0aGlzLl95MF0sW3RoaXMuX3gx LHRoaXMuX3kxXV19LGwuZmluZD1mdW5jdGlvbih0LGUsbil7dmFyIGksYSxvLHMsbCxjLHUs Zj10aGlzLl94MCxoPXRoaXMuX3kwLHA9dGhpcy5feDEsZD10aGlzLl95MSxtPVtdLGc9dGhp cy5fcm9vdDtmb3IoZyYmbS5wdXNoKG5ldyByKGcsZixoLHAsZCkpLG51bGw9PW4/bj0xLzA6 KGY9dC1uLGg9ZS1uLHA9dCtuLGQ9ZStuLG4qPW4pO2M9bS5wb3AoKTspaWYoISghKGc9Yy5u b2RlKXx8KGE9Yy54MCk+cHx8KG89Yy55MCk+ZHx8KHM9Yy54MSk8Znx8KGw9Yy55MSk8aCkp aWYoZy5sZW5ndGgpe3ZhciB2PShhK3MpLzIseT0obytsKS8yO20ucHVzaChuZXcgcihnWzNd LHYseSxzLGwpLG5ldyByKGdbMl0sYSx5LHYsbCksbmV3IHIoZ1sxXSx2LG8scyx5KSxuZXcg cihnWzBdLGEsbyx2LHkpKSwodT0oZT49eSk8PDF8dD49dikmJihjPW1bbS5sZW5ndGgtMV0s bVttLmxlbmd0aC0xXT1tW20ubGVuZ3RoLTEtdV0sbVttLmxlbmd0aC0xLXVdPWMpfWVsc2V7 dmFyIHg9dC0rdGhpcy5feC5jYWxsKG51bGwsZy5kYXRhKSxiPWUtK3RoaXMuX3kuY2FsbChu dWxsLGcuZGF0YSksXz14KngrYipiO2lmKF88bil7dmFyIHc9TWF0aC5zcXJ0KG49Xyk7Zj10 LXcsaD1lLXcscD10K3csZD1lK3csaT1nLmRhdGF9fXJldHVybiBpfSxsLnJlbW92ZT1mdW5j dGlvbih0KXtpZihpc05hTihhPSt0aGlzLl94LmNhbGwobnVsbCx0KSl8fGlzTmFOKG89K3Ro aXMuX3kuY2FsbChudWxsLHQpKSlyZXR1cm4gdGhpczt2YXIgZSxyLG4saSxhLG8scyxsLGMs dSxmLGgscD10aGlzLl9yb290LGQ9dGhpcy5feDAsbT10aGlzLl95MCxnPXRoaXMuX3gxLHY9 dGhpcy5feTE7aWYoIXApcmV0dXJuIHRoaXM7aWYocC5sZW5ndGgpZm9yKDs7KXtpZigoYz1h Pj0ocz0oZCtnKS8yKSk/ZD1zOmc9cywodT1vPj0obD0obSt2KS8yKSk/bT1sOnY9bCxlPXAs IShwPXBbZj11PDwxfGNdKSlyZXR1cm4gdGhpcztpZighcC5sZW5ndGgpYnJlYWs7KGVbZisx JjNdfHxlW2YrMiYzXXx8ZVtmKzMmM10pJiYocj1lLGg9Zil9Zm9yKDtwLmRhdGEhPT10Oylp ZihuPXAsIShwPXAubmV4dCkpcmV0dXJuIHRoaXM7cmV0dXJuKGk9cC5uZXh0KSYmZGVsZXRl IHAubmV4dCxuPyhpP24ubmV4dD1pOmRlbGV0ZSBuLm5leHQsdGhpcyk6ZT8oaT9lW2ZdPWk6 ZGVsZXRlIGVbZl0sKHA9ZVswXXx8ZVsxXXx8ZVsyXXx8ZVszXSkmJnA9PT0oZVszXXx8ZVsy XXx8ZVsxXXx8ZVswXSkmJiFwLmxlbmd0aCYmKHI/cltoXT1wOnRoaXMuX3Jvb3Q9cCksdGhp cyk6KHRoaXMuX3Jvb3Q9aSx0aGlzKX0sbC5yZW1vdmVBbGw9ZnVuY3Rpb24odCl7Zm9yKHZh ciBlPTAscj10Lmxlbmd0aDtlPHI7KytlKXRoaXMucmVtb3ZlKHRbZV0pO3JldHVybiB0aGlz fSxsLnJvb3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcm9vdH0sbC5zaXplPWZ1bmN0aW9u KCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy52aXNpdCgoZnVuY3Rpb24oZSl7aWYoIWUubGVuZ3Ro KWRveysrdH13aGlsZShlPWUubmV4dCl9KSksdH0sbC52aXNpdD1mdW5jdGlvbih0KXt2YXIg ZSxuLGksYSxvLHMsbD1bXSxjPXRoaXMuX3Jvb3Q7Zm9yKGMmJmwucHVzaChuZXcgcihjLHRo aXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSk7ZT1sLnBvcCgpOylpZighdChj PWUubm9kZSxpPWUueDAsYT1lLnkwLG89ZS54MSxzPWUueTEpJiZjLmxlbmd0aCl7dmFyIHU9 KGkrbykvMixmPShhK3MpLzI7KG49Y1szXSkmJmwucHVzaChuZXcgcihuLHUsZixvLHMpKSwo bj1jWzJdKSYmbC5wdXNoKG5ldyByKG4saSxmLHUscykpLChuPWNbMV0pJiZsLnB1c2gobmV3 IHIobix1LGEsbyxmKSksKG49Y1swXSkmJmwucHVzaChuZXcgcihuLGksYSx1LGYpKX1yZXR1 cm4gdGhpc30sbC52aXNpdEFmdGVyPWZ1bmN0aW9uKHQpe3ZhciBlLG49W10saT1bXTtmb3Io dGhpcy5fcm9vdCYmbi5wdXNoKG5ldyByKHRoaXMuX3Jvb3QsdGhpcy5feDAsdGhpcy5feTAs dGhpcy5feDEsdGhpcy5feTEpKTtlPW4ucG9wKCk7KXt2YXIgYT1lLm5vZGU7aWYoYS5sZW5n dGgpe3ZhciBvLHM9ZS54MCxsPWUueTAsYz1lLngxLHU9ZS55MSxmPShzK2MpLzIsaD0obCt1 KS8yOyhvPWFbMF0pJiZuLnB1c2gobmV3IHIobyxzLGwsZixoKSksKG89YVsxXSkmJm4ucHVz aChuZXcgcihvLGYsbCxjLGgpKSwobz1hWzJdKSYmbi5wdXNoKG5ldyByKG8scyxoLGYsdSkp LChvPWFbM10pJiZuLnB1c2gobmV3IHIobyxmLGgsYyx1KSl9aS5wdXNoKGUpfWZvcig7ZT1p LnBvcCgpOyl0KGUubm9kZSxlLngwLGUueTAsZS54MSxlLnkxKTtyZXR1cm4gdGhpc30sbC54 PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLl94PXQsdGhpcyk6 dGhpcy5feH0sbC55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlz Ll95PXQsdGhpcyk6dGhpcy5feX0sdC5xdWFkdHJlZT1hLE9iamVjdC5kZWZpbmVQcm9wZXJ0 eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0pKX0se31dLDExOTpbZnVuY3Rpb24odCxl LHIpeyFmdW5jdGlvbihuLGkpeyJvYmplY3QiPT10eXBlb2YgciYmdm9pZCAwIT09ZT9pKHIs dCgiZDMtcGF0aCIpKTppKChuPW58fHNlbGYpLmQzPW4uZDN8fHt9LG4uZDMpfSh0aGlzLChm dW5jdGlvbih0LGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3JldHVybiBmdW5jdGlv bigpe3JldHVybiB0fX12YXIgbj1NYXRoLmFicyxpPU1hdGguYXRhbjIsYT1NYXRoLmNvcyxv PU1hdGgubWF4LHM9TWF0aC5taW4sbD1NYXRoLnNpbixjPU1hdGguc3FydCx1PU1hdGguUEks Zj11LzIsaD0yKnU7ZnVuY3Rpb24gcCh0KXtyZXR1cm4gdD4xPzA6dDwtMT91Ok1hdGguYWNv cyh0KX1mdW5jdGlvbiBkKHQpe3JldHVybiB0Pj0xP2Y6dDw9LTE/LWY6TWF0aC5hc2luKHQp fWZ1bmN0aW9uIG0odCl7cmV0dXJuIHQuaW5uZXJSYWRpdXN9ZnVuY3Rpb24gZyh0KXtyZXR1 cm4gdC5vdXRlclJhZGl1c31mdW5jdGlvbiB2KHQpe3JldHVybiB0LnN0YXJ0QW5nbGV9ZnVu Y3Rpb24geSh0KXtyZXR1cm4gdC5lbmRBbmdsZX1mdW5jdGlvbiB4KHQpe3JldHVybiB0JiZ0 LnBhZEFuZ2xlfWZ1bmN0aW9uIGIodCxlLHIsbixpLGEsbyxzKXt2YXIgbD1yLXQsYz1uLWUs dT1vLWksZj1zLWEsaD1mKmwtdSpjO2lmKCEoaCpoPDFlLTEyKSlyZXR1cm5bdCsoaD0odSoo ZS1hKS1mKih0LWkpKS9oKSpsLGUraCpjXX1mdW5jdGlvbiBfKHQsZSxyLG4saSxhLHMpe3Zh ciBsPXQtcix1PWUtbixmPShzP2E6LWEpL2MobCpsK3UqdSksaD1mKnUscD0tZipsLGQ9dCto LG09ZStwLGc9citoLHY9bitwLHk9KGQrZykvMix4PShtK3YpLzIsYj1nLWQsXz12LW0sdz1i KmIrXypfLFQ9aS1hLGs9ZCp2LWcqbSxBPShfPDA/LTE6MSkqYyhvKDAsVCpUKnctayprKSks TT0oaypfLWIqQSkvdyxTPSgtaypiLV8qQSkvdyxFPShrKl8rYipBKS93LEw9KC1rKmIrXypB KS93LEM9TS15LFA9Uy14LEk9RS15LE89TC14O3JldHVybiBDKkMrUCpQPkkqSStPKk8mJihN PUUsUz1MKSx7Y3g6TSxjeTpTLHgwMTotaCx5MDE6LXAseDExOk0qKGkvVC0xKSx5MTE6Uyoo aS9ULTEpfX1mdW5jdGlvbiB3KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBUKHQpe3Jl dHVybiBuZXcgdyh0KX1mdW5jdGlvbiBrKHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIEEodCl7 cmV0dXJuIHRbMV19ZnVuY3Rpb24gTSgpe3ZhciB0PWssbj1BLGk9cighMCksYT1udWxsLG89 VCxzPW51bGw7ZnVuY3Rpb24gbChyKXt2YXIgbCxjLHUsZj1yLmxlbmd0aCxoPSExO2Zvcihu dWxsPT1hJiYocz1vKHU9ZS5wYXRoKCkpKSxsPTA7bDw9ZjsrK2wpIShsPGYmJmkoYz1yW2xd LGwscikpPT09aCYmKChoPSFoKT9zLmxpbmVTdGFydCgpOnMubGluZUVuZCgpKSxoJiZzLnBv aW50KCt0KGMsbCxyKSwrbihjLGwscikpO2lmKHUpcmV0dXJuIHM9bnVsbCx1KyIifHxudWxs fXJldHVybiBsLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1 bmN0aW9uIj09dHlwZW9mIGU/ZTpyKCtlKSxsKTp0fSxsLnk9ZnVuY3Rpb24odCl7cmV0dXJu IGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpyKCt0KSxsKTpu fSxsLmRlZmluZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1 bmN0aW9uIj09dHlwZW9mIHQ/dDpyKCEhdCksbCk6aX0sbC5jdXJ2ZT1mdW5jdGlvbih0KXty ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz10LG51bGwhPWEmJihzPW8oYSkpLGwpOm99LGwu Y29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD9h PXM9bnVsbDpzPW8oYT10KSxsKTphfSxsfWZ1bmN0aW9uIFMoKXt2YXIgdD1rLG49bnVsbCxp PXIoMCksYT1BLG89cighMCkscz1udWxsLGw9VCxjPW51bGw7ZnVuY3Rpb24gdShyKXt2YXIg dSxmLGgscCxkLG09ci5sZW5ndGgsZz0hMSx2PW5ldyBBcnJheShtKSx5PW5ldyBBcnJheSht KTtmb3IobnVsbD09cyYmKGM9bChkPWUucGF0aCgpKSksdT0wO3U8PW07Kyt1KXtpZighKHU8 bSYmbyhwPXJbdV0sdSxyKSk9PT1nKWlmKGc9IWcpZj11LGMuYXJlYVN0YXJ0KCksYy5saW5l U3RhcnQoKTtlbHNle2ZvcihjLmxpbmVFbmQoKSxjLmxpbmVTdGFydCgpLGg9dS0xO2g+PWY7 LS1oKWMucG9pbnQodltoXSx5W2hdKTtjLmxpbmVFbmQoKSxjLmFyZWFFbmQoKX1nJiYodlt1 XT0rdChwLHUscikseVt1XT0raShwLHUsciksYy5wb2ludChuPytuKHAsdSxyKTp2W3VdLGE/ K2EocCx1LHIpOnlbdV0pKX1pZihkKXJldHVybiBjPW51bGwsZCsiInx8bnVsbH1mdW5jdGlv biBmKCl7cmV0dXJuIE0oKS5kZWZpbmVkKG8pLmN1cnZlKGwpLmNvbnRleHQocyl9cmV0dXJu IHUueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24i PT10eXBlb2YgZT9lOnIoK2UpLG49bnVsbCx1KTp0fSx1LngwPWZ1bmN0aW9uKGUpe3JldHVy biBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6cigrZSksdSk6 dH0sdS54MT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT10 P251bGw6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpyKCt0KSx1KTpufSx1Lnk9ZnVuY3Rpb24o dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpy KCt0KSxhPW51bGwsdSk6aX0sdS55MD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl bmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnIoK3QpLHUpOml9LHUueTE9ZnVuY3Rp b24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bnVsbD09dD9udWxsOiJmdW5jdGlv biI9PXR5cGVvZiB0P3Q6cigrdCksdSk6YX0sdS5saW5lWDA9dS5saW5lWTA9ZnVuY3Rpb24o KXtyZXR1cm4gZigpLngodCkueShpKX0sdS5saW5lWTE9ZnVuY3Rpb24oKXtyZXR1cm4gZigp LngodCkueShhKX0sdS5saW5lWDE9ZnVuY3Rpb24oKXtyZXR1cm4gZigpLngobikueShpKX0s dS5kZWZpbmVkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5j dGlvbiI9PXR5cGVvZiB0P3Q6cighIXQpLHUpOm99LHUuY3VydmU9ZnVuY3Rpb24odCl7cmV0 dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9dCxudWxsIT1zJiYoYz1sKHMpKSx1KTpsfSx1LmNv bnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/cz1j PW51bGw6Yz1sKHM9dCksdSk6c30sdX1mdW5jdGlvbiBFKHQsZSl7cmV0dXJuIGU8dD8tMTpl PnQ/MTplPj10PzA6TmFOfWZ1bmN0aW9uIEwodCl7cmV0dXJuIHR9dy5wcm90b3R5cGU9e2Fy ZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3Ro aXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5l RW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5f cG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9s aW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQp e2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8o dCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2lu dD0yO2RlZmF1bHQ6dGhpcy5fY29udGV4dC5saW5lVG8odCxlKX19fTt2YXIgQz1JKFQpO2Z1 bmN0aW9uIFAodCl7dGhpcy5fY3VydmU9dH1mdW5jdGlvbiBJKHQpe2Z1bmN0aW9uIGUoZSl7 cmV0dXJuIG5ldyBQKHQoZSkpfXJldHVybiBlLl9jdXJ2ZT10LGV9ZnVuY3Rpb24gTyh0KXt2 YXIgZT10LmN1cnZlO3JldHVybiB0LmFuZ2xlPXQueCxkZWxldGUgdC54LHQucmFkaXVzPXQu eSxkZWxldGUgdC55LHQuY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n dGg/ZShJKHQpKTplKCkuX2N1cnZlfSx0fWZ1bmN0aW9uIHooKXtyZXR1cm4gTyhNKCkuY3Vy dmUoQykpfWZ1bmN0aW9uIEQoKXt2YXIgdD1TKCkuY3VydmUoQyksZT10LmN1cnZlLHI9dC5s aW5lWDAsbj10LmxpbmVYMSxpPXQubGluZVkwLGE9dC5saW5lWTE7cmV0dXJuIHQuYW5nbGU9 dC54LGRlbGV0ZSB0LngsdC5zdGFydEFuZ2xlPXQueDAsZGVsZXRlIHQueDAsdC5lbmRBbmds ZT10LngxLGRlbGV0ZSB0LngxLHQucmFkaXVzPXQueSxkZWxldGUgdC55LHQuaW5uZXJSYWRp dXM9dC55MCxkZWxldGUgdC55MCx0Lm91dGVyUmFkaXVzPXQueTEsZGVsZXRlIHQueTEsdC5s aW5lU3RhcnRBbmdsZT1mdW5jdGlvbigpe3JldHVybiBPKHIoKSl9LGRlbGV0ZSB0LmxpbmVY MCx0LmxpbmVFbmRBbmdsZT1mdW5jdGlvbigpe3JldHVybiBPKG4oKSl9LGRlbGV0ZSB0Lmxp bmVYMSx0LmxpbmVJbm5lclJhZGl1cz1mdW5jdGlvbigpe3JldHVybiBPKGkoKSl9LGRlbGV0 ZSB0LmxpbmVZMCx0LmxpbmVPdXRlclJhZGl1cz1mdW5jdGlvbigpe3JldHVybiBPKGEoKSl9 LGRlbGV0ZSB0LmxpbmVZMSx0LmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu bGVuZ3RoP2UoSSh0KSk6ZSgpLl9jdXJ2ZX0sdH1mdW5jdGlvbiBSKHQsZSl7cmV0dXJuWyhl PStlKSpNYXRoLmNvcyh0LT1NYXRoLlBJLzIpLGUqTWF0aC5zaW4odCldfVAucHJvdG90eXBl PXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5hcmVhU3RhcnQoKX0sYXJlYUVu ZDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmFyZWFFbmQoKX0sbGluZVN0YXJ0OmZ1bmN0aW9u KCl7dGhpcy5fY3VydmUubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9j dXJ2ZS5saW5lRW5kKCl9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dGhpcy5fY3VydmUucG9pbnQo ZSpNYXRoLnNpbih0KSxlKi1NYXRoLmNvcyh0KSl9fTt2YXIgRj1BcnJheS5wcm90b3R5cGUu c2xpY2U7ZnVuY3Rpb24gQih0KXtyZXR1cm4gdC5zb3VyY2V9ZnVuY3Rpb24gTih0KXtyZXR1 cm4gdC50YXJnZXR9ZnVuY3Rpb24gaih0KXt2YXIgbj1CLGk9TixhPWssbz1BLHM9bnVsbDtm dW5jdGlvbiBsKCl7dmFyIHIsbD1GLmNhbGwoYXJndW1lbnRzKSxjPW4uYXBwbHkodGhpcyxs KSx1PWkuYXBwbHkodGhpcyxsKTtpZihzfHwocz1yPWUucGF0aCgpKSx0KHMsK2EuYXBwbHko dGhpcywobFswXT1jLGwpKSwrby5hcHBseSh0aGlzLGwpLCthLmFwcGx5KHRoaXMsKGxbMF09 dSxsKSksK28uYXBwbHkodGhpcyxsKSkscilyZXR1cm4gcz1udWxsLHIrIiJ8fG51bGx9cmV0 dXJuIGwuc291cmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQs bCk6bn0sbC50YXJnZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9 dCxsKTppfSxsLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1 bmN0aW9uIj09dHlwZW9mIHQ/dDpyKCt0KSxsKTphfSxsLnk9ZnVuY3Rpb24odCl7cmV0dXJu IGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpyKCt0KSxsKTpv fSxsLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bnVs bD09dD9udWxsOnQsbCk6c30sbH1mdW5jdGlvbiBVKHQsZSxyLG4saSl7dC5tb3ZlVG8oZSxy KSx0LmJlemllckN1cnZlVG8oZT0oZStuKS8yLHIsZSxpLG4saSl9ZnVuY3Rpb24gVih0LGUs cixuLGkpe3QubW92ZVRvKGUsciksdC5iZXppZXJDdXJ2ZVRvKGUscj0ocitpKS8yLG4scixu LGkpfWZ1bmN0aW9uIEgodCxlLHIsbixpKXt2YXIgYT1SKGUsciksbz1SKGUscj0ocitpKS8y KSxzPVIobixyKSxsPVIobixpKTt0Lm1vdmVUbyhhWzBdLGFbMV0pLHQuYmV6aWVyQ3VydmVU byhvWzBdLG9bMV0sc1swXSxzWzFdLGxbMF0sbFsxXSl9dmFyIHE9e2RyYXc6ZnVuY3Rpb24o dCxlKXt2YXIgcj1NYXRoLnNxcnQoZS91KTt0Lm1vdmVUbyhyLDApLHQuYXJjKDAsMCxyLDAs aCl9fSxHPXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIHI9TWF0aC5zcXJ0KGUvNSkvMjt0Lm1v dmVUbygtMypyLC1yKSx0LmxpbmVUbygtciwtciksdC5saW5lVG8oLXIsLTMqciksdC5saW5l VG8ociwtMypyKSx0LmxpbmVUbyhyLC1yKSx0LmxpbmVUbygzKnIsLXIpLHQubGluZVRvKDMq cixyKSx0LmxpbmVUbyhyLHIpLHQubGluZVRvKHIsMypyKSx0LmxpbmVUbygtciwzKnIpLHQu bGluZVRvKC1yLHIpLHQubGluZVRvKC0zKnIsciksdC5jbG9zZVBhdGgoKX19LFk9TWF0aC5z cXJ0KDEvMyksVz0yKlksWD17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciByPU1hdGguc3FydChl L1cpLG49cipZO3QubW92ZVRvKDAsLXIpLHQubGluZVRvKG4sMCksdC5saW5lVG8oMCxyKSx0 LmxpbmVUbygtbiwwKSx0LmNsb3NlUGF0aCgpfX0sWj1NYXRoLnNpbih1LzEwKS9NYXRoLnNp big3KnUvMTApLEo9TWF0aC5zaW4oaC8xMCkqWixLPS1NYXRoLmNvcyhoLzEwKSpaLFE9e2Ry YXc6ZnVuY3Rpb24odCxlKXt2YXIgcj1NYXRoLnNxcnQoLjg5MDgxMzA5MTUyOTI4NTIqZSks bj1KKnIsaT1LKnI7dC5tb3ZlVG8oMCwtciksdC5saW5lVG8obixpKTtmb3IodmFyIGE9MTth PDU7KythKXt2YXIgbz1oKmEvNSxzPU1hdGguY29zKG8pLGw9TWF0aC5zaW4obyk7dC5saW5l VG8obCpyLC1zKnIpLHQubGluZVRvKHMqbi1sKmksbCpuK3MqaSl9dC5jbG9zZVBhdGgoKX19 LCQ9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgcj1NYXRoLnNxcnQoZSksbj0tci8yO3QucmVj dChuLG4scixyKX19LHR0PU1hdGguc3FydCgzKSxldD17ZHJhdzpmdW5jdGlvbih0LGUpe3Zh ciByPS1NYXRoLnNxcnQoZS8oMyp0dCkpO3QubW92ZVRvKDAsMipyKSx0LmxpbmVUbygtdHQq ciwtciksdC5saW5lVG8odHQqciwtciksdC5jbG9zZVBhdGgoKX19LHJ0PS0uNSxudD1NYXRo LnNxcnQoMykvMixpdD0xL01hdGguc3FydCgxMiksYXQ9MyooaXQvMisxKSxvdD17ZHJhdzpm dW5jdGlvbih0LGUpe3ZhciByPU1hdGguc3FydChlL2F0KSxuPXIvMixpPXIqaXQsYT1uLG89 cippdCtyLHM9LWEsbD1vO3QubW92ZVRvKG4saSksdC5saW5lVG8oYSxvKSx0LmxpbmVUbyhz LGwpLHQubGluZVRvKHJ0Km4tbnQqaSxudCpuK3J0KmkpLHQubGluZVRvKHJ0KmEtbnQqbyxu dCphK3J0Km8pLHQubGluZVRvKHJ0KnMtbnQqbCxudCpzK3J0KmwpLHQubGluZVRvKHJ0Km4r bnQqaSxydCppLW50Km4pLHQubGluZVRvKHJ0KmErbnQqbyxydCpvLW50KmEpLHQubGluZVRv KHJ0KnMrbnQqbCxydCpsLW50KnMpLHQuY2xvc2VQYXRoKCl9fSxzdD1bcSxHLFgsJCxRLGV0 LG90XTtmdW5jdGlvbiBsdCgpe31mdW5jdGlvbiBjdCh0LGUscil7dC5fY29udGV4dC5iZXpp ZXJDdXJ2ZVRvKCgyKnQuX3gwK3QuX3gxKS8zLCgyKnQuX3kwK3QuX3kxKS8zLCh0Ll94MCsy KnQuX3gxKS8zLCh0Ll95MCsyKnQuX3kxKS8zLCh0Ll94MCs0KnQuX3gxK2UpLzYsKHQuX3kw KzQqdC5feTErcikvNil9ZnVuY3Rpb24gdXQodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9u IGZ0KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBodCh0KXt0aGlzLl9jb250ZXh0PXR9 ZnVuY3Rpb24gcHQodCxlKXt0aGlzLl9iYXNpcz1uZXcgdXQodCksdGhpcy5fYmV0YT1lfXV0 LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5k OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMu X3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPU5hTix0aGlzLl9wb2ludD0wfSxsaW5l RW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDM6Y3QodGhpcyx0aGlz Ll94MSx0aGlzLl95MSk7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gxLHRo aXMuX3kxKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkm JnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBv aW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAw OnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRo aXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJl YWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fY29udGV4dC5saW5lVG8oKDUqdGhpcy5f eDArdGhpcy5feDEpLzYsKDUqdGhpcy5feTArdGhpcy5feTEpLzYpO2RlZmF1bHQ6Y3QodGhp cyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEs dGhpcy5feTE9ZX19LGZ0LnByb3RvdHlwZT17YXJlYVN0YXJ0Omx0LGFyZWFFbmQ6bHQsbGlu ZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feDM9 dGhpcy5feDQ9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9dGhpcy5feTM9dGhpcy5feTQ9 TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9p bnQpe2Nhc2UgMTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95MiksdGhp cy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDI6dGhpcy5fY29udGV4dC5tb3Zl VG8oKHRoaXMuX3gyKzIqdGhpcy5feDMpLzMsKHRoaXMuX3kyKzIqdGhpcy5feTMpLzMpLHRo aXMuX2NvbnRleHQubGluZVRvKCh0aGlzLl94MysyKnRoaXMuX3gyKS8zLCh0aGlzLl95Mysy KnRoaXMuX3kyKS8zKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMzp0 aGlzLnBvaW50KHRoaXMuX3gyLHRoaXMuX3kyKSx0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMu X3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KX19LHBvaW50OmZ1bmN0aW9uKHQs ZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEs dGhpcy5feDI9dCx0aGlzLl95Mj1lO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMu X3gzPXQsdGhpcy5feTM9ZTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl94ND10 LHRoaXMuX3k0PWUsdGhpcy5fY29udGV4dC5tb3ZlVG8oKHRoaXMuX3gwKzQqdGhpcy5feDEr dCkvNiwodGhpcy5feTArNCp0aGlzLl95MStlKS82KTticmVhaztkZWZhdWx0OmN0KHRoaXMs dCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRo aXMuX3kxPWV9fSxodC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xp bmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVu Y3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl95MD10aGlzLl95MT1OYU4sdGhpcy5f cG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGlu ZSYmMz09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9s aW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStl LHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5f cG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Mzt2YXIgcj0odGhpcy5feDArNCp0 aGlzLl94MSt0KS82LG49KHRoaXMuX3kwKzQqdGhpcy5feTErZSkvNjt0aGlzLl9saW5lP3Ro aXMuX2NvbnRleHQubGluZVRvKHIsbik6dGhpcy5fY29udGV4dC5tb3ZlVG8ocixuKTticmVh aztjYXNlIDM6dGhpcy5fcG9pbnQ9NDtkZWZhdWx0OmN0KHRoaXMsdCxlKX10aGlzLl94MD10 aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPWV9fSxwdC5w cm90b3R5cGU9e2xpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9W10sdGhpcy5feT1bXSx0 aGlzLl9iYXNpcy5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMu X3gsZT10aGlzLl95LHI9dC5sZW5ndGgtMTtpZihyPjApZm9yKHZhciBuLGk9dFswXSxhPWVb MF0sbz10W3JdLWkscz1lW3JdLWEsbD0tMTsrK2w8PXI7KW49bC9yLHRoaXMuX2Jhc2lzLnBv aW50KHRoaXMuX2JldGEqdFtsXSsoMS10aGlzLl9iZXRhKSooaStuKm8pLHRoaXMuX2JldGEq ZVtsXSsoMS10aGlzLl9iZXRhKSooYStuKnMpKTt0aGlzLl94PXRoaXMuX3k9bnVsbCx0aGlz Ll9iYXNpcy5saW5lRW5kKCl9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dGhpcy5feC5wdXNoKCt0 KSx0aGlzLl95LnB1c2goK2UpfX07dmFyIGR0PWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gcih0 KXtyZXR1cm4gMT09PWU/bmV3IHV0KHQpOm5ldyBwdCh0LGUpfXJldHVybiByLmJldGE9ZnVu Y3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxyfSguODUpO2Z1bmN0aW9uIG10KHQsZSxyKXt0Ll9j b250ZXh0LmJlemllckN1cnZlVG8odC5feDErdC5fayoodC5feDItdC5feDApLHQuX3kxK3Qu X2sqKHQuX3kyLXQuX3kwKSx0Ll94Mit0Ll9rKih0Ll94MS1lKSx0Ll95Mit0Ll9rKih0Ll95 MS1yKSx0Ll94Mix0Ll95Mil9ZnVuY3Rpb24gZ3QodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhp cy5faz0oMS1lKS82fWd0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5f bGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpm dW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kx PXRoaXMuX3kyPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNo KHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhp cy5feTIpO2JyZWFrO2Nhc2UgMzptdCh0aGlzLHRoaXMuX3gxLHRoaXMuX3kxKX0odGhpcy5f bGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQu Y2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQs ZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEs dGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92 ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5feDE9dCx0aGlzLl95 MT1lO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO2RlZmF1bHQ6bXQodGhpcyx0LGUpfXRo aXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9 dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciB2dD1mdW5jdGlv biB0KGUpe2Z1bmN0aW9uIHIodCl7cmV0dXJuIG5ldyBndCh0LGUpfXJldHVybiByLnRlbnNp b249ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxyfSgwKTtmdW5jdGlvbiB5dCh0LGUpe3Ro aXMuX2NvbnRleHQ9dCx0aGlzLl9rPSgxLWUpLzZ9eXQucHJvdG90eXBlPXthcmVhU3RhcnQ6 bHQsYXJlYUVuZDpsdCxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10 aGlzLl94Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl94NT10aGlzLl95MD10aGlzLl95MT10 aGlzLl95Mj10aGlzLl95Mz10aGlzLl95ND10aGlzLl95NT1OYU4sdGhpcy5fcG9pbnQ9MH0s bGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAxOnRoaXMuX2Nv bnRleHQubW92ZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0 aCgpO2JyZWFrO2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Myx0aGlzLl95 MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDM6dGhpcy5wb2ludCh0 aGlzLl94Myx0aGlzLl95MyksdGhpcy5wb2ludCh0aGlzLl94NCx0aGlzLl95NCksdGhpcy5w b2ludCh0aGlzLl94NSx0aGlzLl95NSl9fSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0 PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX3gzPXQs dGhpcy5feTM9ZTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl9jb250ZXh0Lm1v dmVUbyh0aGlzLl94ND10LHRoaXMuX3k0PWUpO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0z LHRoaXMuX3g1PXQsdGhpcy5feTU9ZTticmVhaztkZWZhdWx0Om10KHRoaXMsdCxlKX10aGlz Ll94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRo aXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIgeHQ9ZnVuY3Rpb24g dChlKXtmdW5jdGlvbiByKHQpe3JldHVybiBuZXcgeXQodCxlKX1yZXR1cm4gci50ZW5zaW9u PWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0scn0oMCk7ZnVuY3Rpb24gYnQodCxlKXt0aGlz Ll9jb250ZXh0PXQsdGhpcy5faz0oMS1lKS82fWJ0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1 bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1O YU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRo aXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1 bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQp JiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxw b2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2Ug MDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2Ug Mjp0aGlzLl9wb2ludD0zLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5f eDIsdGhpcy5feTIpOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTti cmVhaztjYXNlIDM6dGhpcy5fcG9pbnQ9NDtkZWZhdWx0Om10KHRoaXMsdCxlKX10aGlzLl94 MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMu X3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIgX3Q9ZnVuY3Rpb24gdChl KXtmdW5jdGlvbiByKHQpe3JldHVybiBuZXcgYnQodCxlKX1yZXR1cm4gci50ZW5zaW9uPWZ1 bmN0aW9uKGUpe3JldHVybiB0KCtlKX0scn0oMCk7ZnVuY3Rpb24gd3QodCxlLHIpe3ZhciBu PXQuX3gxLGk9dC5feTEsYT10Ll94MixvPXQuX3kyO2lmKHQuX2wwMV9hPjFlLTEyKXt2YXIg cz0yKnQuX2wwMV8yYSszKnQuX2wwMV9hKnQuX2wxMl9hK3QuX2wxMl8yYSxsPTMqdC5fbDAx X2EqKHQuX2wwMV9hK3QuX2wxMl9hKTtuPShuKnMtdC5feDAqdC5fbDEyXzJhK3QuX3gyKnQu X2wwMV8yYSkvbCxpPShpKnMtdC5feTAqdC5fbDEyXzJhK3QuX3kyKnQuX2wwMV8yYSkvbH1p Zih0Ll9sMjNfYT4xZS0xMil7dmFyIGM9Mip0Ll9sMjNfMmErMyp0Ll9sMjNfYSp0Ll9sMTJf YSt0Ll9sMTJfMmEsdT0zKnQuX2wyM19hKih0Ll9sMjNfYSt0Ll9sMTJfYSk7YT0oYSpjK3Qu X3gxKnQuX2wyM18yYS1lKnQuX2wxMl8yYSkvdSxvPShvKmMrdC5feTEqdC5fbDIzXzJhLXIq dC5fbDEyXzJhKS91fXQuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhuLGksYSxvLHQuX3gyLHQu X3kyKX1mdW5jdGlvbiBUdCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9hbHBoYT1lfVR0 LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5k OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMu X3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0 aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5f bDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7 c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5f eDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gyLHRoaXMuX3ky KX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMu X2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1 bmN0aW9uKHQsZSl7aWYodD0rdCxlPStlLHRoaXMuX3BvaW50KXt2YXIgcj10aGlzLl94Mi10 LG49dGhpcy5feTItZTt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgu cG93KHIqcituKm4sdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0 aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlz Ll9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFr O2Nhc2UgMjp0aGlzLl9wb2ludD0zO2RlZmF1bHQ6d3QodGhpcyx0LGUpfXRoaXMuX2wwMV9h PXRoaXMuX2wxMl9hLHRoaXMuX2wxMl9hPXRoaXMuX2wyM19hLHRoaXMuX2wwMV8yYT10aGlz Ll9sMTJfMmEsdGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYSx0aGlzLl94MD10aGlzLl94MSx0 aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kx PXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIga3Q9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBy KHQpe3JldHVybiBlP25ldyBUdCh0LGUpOm5ldyBndCh0LDApfXJldHVybiByLmFscGhhPWZ1 bmN0aW9uKGUpe3JldHVybiB0KCtlKX0scn0oLjUpO2Z1bmN0aW9uIEF0KHQsZSl7dGhpcy5f Y29udGV4dD10LHRoaXMuX2FscGhhPWV9QXQucHJvdG90eXBlPXthcmVhU3RhcnQ6bHQsYXJl YUVuZDpsdCxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94 Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl94NT10aGlzLl95MD10aGlzLl95MT10aGlzLl95 Mj10aGlzLl95Mz10aGlzLl95ND10aGlzLl95NT1OYU4sdGhpcy5fbDAxX2E9dGhpcy5fbDEy X2E9dGhpcy5fbDIzX2E9dGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmE9 dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7 Y2FzZSAxOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9j b250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0 aGlzLl94Myx0aGlzLl95MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNl IDM6dGhpcy5wb2ludCh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5wb2ludCh0aGlzLl94NCx0 aGlzLl95NCksdGhpcy5wb2ludCh0aGlzLl94NSx0aGlzLl95NSl9fSxwb2ludDpmdW5jdGlv bih0LGUpe2lmKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7dmFyIHI9dGhpcy5feDItdCxuPXRo aXMuX3kyLWU7dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhy KnIrbipuLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5f cG9pbnQ9MSx0aGlzLl94Mz10LHRoaXMuX3kzPWU7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50 PTIsdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDQ9dCx0aGlzLl95ND1lKTticmVhaztj YXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl94NT10LHRoaXMuX3k1PWU7YnJlYWs7ZGVmYXVs dDp3dCh0aGlzLHQsZSl9dGhpcy5fbDAxX2E9dGhpcy5fbDEyX2EsdGhpcy5fbDEyX2E9dGhp cy5fbDIzX2EsdGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYSx0aGlzLl9sMTJfMmE9dGhpcy5f bDIzXzJhLHRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQs dGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBN dD1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIHIodCl7cmV0dXJuIGU/bmV3IEF0KHQsZSk6bmV3 IHl0KHQsMCl9cmV0dXJuIHIuYWxwaGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxyfSgu NSk7ZnVuY3Rpb24gU3QodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fYWxwaGE9ZX1TdC5w cm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpm dW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94 MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhp cy5fbDAxX2E9dGhpcy5fbDEyX2E9dGhpcy5fbDIzX2E9dGhpcy5fbDAxXzJhPXRoaXMuX2wx Ml8yYT10aGlzLl9sMjNfMmE9dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0 aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMz09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29u dGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rp b24odCxlKXtpZih0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe3ZhciByPXRoaXMuX3gyLXQsbj10 aGlzLl95Mi1lO3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNfMmE9TWF0aC5wb3co cipyK24qbix0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMu X3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMu X3BvaW50PTMsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlz Ll95Mik6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nh c2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6d3QodGhpcyx0LGUpfXRoaXMuX2wwMV9hPXRo aXMuX2wxMl9hLHRoaXMuX2wxMl9hPXRoaXMuX2wyM19hLHRoaXMuX2wwMV8yYT10aGlzLl9s MTJfMmEsdGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYSx0aGlzLl94MD10aGlzLl94MSx0aGlz Ll94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRo aXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIgRXQ9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiByKHQp e3JldHVybiBlP25ldyBTdCh0LGUpOm5ldyBidCh0LDApfXJldHVybiByLmFscGhhPWZ1bmN0 aW9uKGUpe3JldHVybiB0KCtlKX0scn0oLjUpO2Z1bmN0aW9uIEx0KHQpe3RoaXMuX2NvbnRl eHQ9dH1mdW5jdGlvbiBDdCh0KXtyZXR1cm4gdDwwPy0xOjF9ZnVuY3Rpb24gUHQodCxlLHIp e3ZhciBuPXQuX3gxLXQuX3gwLGk9ZS10Ll94MSxhPSh0Ll95MS10Ll95MCkvKG58fGk8MCYm LTApLG89KHItdC5feTEpLyhpfHxuPDAmJi0wKSxzPShhKmkrbypuKS8obitpKTtyZXR1cm4o Q3QoYSkrQ3QobykpKk1hdGgubWluKE1hdGguYWJzKGEpLE1hdGguYWJzKG8pLC41Kk1hdGgu YWJzKHMpKXx8MH1mdW5jdGlvbiBJdCh0LGUpe3ZhciByPXQuX3gxLXQuX3gwO3JldHVybiBy PygzKih0Ll95MS10Ll95MCkvci1lKS8yOmV9ZnVuY3Rpb24gT3QodCxlLHIpe3ZhciBuPXQu X3gwLGk9dC5feTAsYT10Ll94MSxvPXQuX3kxLHM9KGEtbikvMzt0Ll9jb250ZXh0LmJlemll ckN1cnZlVG8obitzLGkrcyplLGEtcyxvLXMqcixhLG8pfWZ1bmN0aW9uIHp0KHQpe3RoaXMu X2NvbnRleHQ9dH1mdW5jdGlvbiBEdCh0KXt0aGlzLl9jb250ZXh0PW5ldyBSdCh0KX1mdW5j dGlvbiBSdCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gRnQodCl7dGhpcy5fY29udGV4 dD10fWZ1bmN0aW9uIEJ0KHQpe3ZhciBlLHIsbj10Lmxlbmd0aC0xLGk9bmV3IEFycmF5KG4p LGE9bmV3IEFycmF5KG4pLG89bmV3IEFycmF5KG4pO2ZvcihpWzBdPTAsYVswXT0yLG9bMF09 dFswXSsyKnRbMV0sZT0xO2U8bi0xOysrZSlpW2VdPTEsYVtlXT00LG9bZV09NCp0W2VdKzIq dFtlKzFdO2ZvcihpW24tMV09MixhW24tMV09NyxvW24tMV09OCp0W24tMV0rdFtuXSxlPTE7 ZTxuOysrZSlyPWlbZV0vYVtlLTFdLGFbZV0tPXIsb1tlXS09cipvW2UtMV07Zm9yKGlbbi0x XT1vW24tMV0vYVtuLTFdLGU9bi0yO2U+PTA7LS1lKWlbZV09KG9bZV0taVtlKzFdKS9hW2Vd O2ZvcihhW24tMV09KHRbbl0raVtuLTFdKS8yLGU9MDtlPG4tMTsrK2UpYVtlXT0yKnRbZSsx XS1pW2UrMV07cmV0dXJuW2ksYV19ZnVuY3Rpb24gTnQodCxlKXt0aGlzLl9jb250ZXh0PXQs dGhpcy5fdD1lfWZ1bmN0aW9uIGp0KHQsZSl7aWYoKGk9dC5sZW5ndGgpPjEpZm9yKHZhciBy LG4saSxhPTEsbz10W2VbMF1dLHM9by5sZW5ndGg7YTxpOysrYSlmb3Iobj1vLG89dFtlW2Fd XSxyPTA7cjxzOysrcilvW3JdWzFdKz1vW3JdWzBdPWlzTmFOKG5bcl1bMV0pP25bcl1bMF06 bltyXVsxXX1mdW5jdGlvbiBVdCh0KXtmb3IodmFyIGU9dC5sZW5ndGgscj1uZXcgQXJyYXko ZSk7LS1lPj0wOylyW2VdPWU7cmV0dXJuIHJ9ZnVuY3Rpb24gVnQodCxlKXtyZXR1cm4gdFtl XX1mdW5jdGlvbiBIdCh0KXt2YXIgZT10Lm1hcChxdCk7cmV0dXJuIFV0KHQpLnNvcnQoKGZ1 bmN0aW9uKHQscil7cmV0dXJuIGVbdF0tZVtyXX0pKX1mdW5jdGlvbiBxdCh0KXtmb3IodmFy IGUscj0tMSxuPTAsaT10Lmxlbmd0aCxhPS0xLzA7KytyPGk7KShlPSt0W3JdWzFdKT5hJiYo YT1lLG49cik7cmV0dXJuIG59ZnVuY3Rpb24gR3QodCl7dmFyIGU9dC5tYXAoWXQpO3JldHVy biBVdCh0KS5zb3J0KChmdW5jdGlvbih0LHIpe3JldHVybiBlW3RdLWVbcl19KSl9ZnVuY3Rp b24gWXQodCl7Zm9yKHZhciBlLHI9MCxuPS0xLGk9dC5sZW5ndGg7KytuPGk7KShlPSt0W25d WzFdKSYmKHIrPWUpO3JldHVybiByfUx0LnByb3RvdHlwZT17YXJlYVN0YXJ0Omx0LGFyZWFF bmQ6bHQsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5j dGlvbigpe3RoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpfSxwb2ludDpm dW5jdGlvbih0LGUpe3Q9K3QsZT0rZSx0aGlzLl9wb2ludD90aGlzLl9jb250ZXh0LmxpbmVU byh0LGUpOih0aGlzLl9wb2ludD0xLHRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSkpfX0senQu cHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6 ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5f eDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5fdDA9TmFOLHRoaXMuX3BvaW50 PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlz Ll9jb250ZXh0LmxpbmVUbyh0aGlzLl94MSx0aGlzLl95MSk7YnJlYWs7Y2FzZSAzOk90KHRo aXMsdGhpcy5fdDAsSXQodGhpcyx0aGlzLl90MCkpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5f bGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlz Ll9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt2YXIgcj1OYU47aWYo ZT0rZSwodD0rdCkhPT10aGlzLl94MXx8ZSE9PXRoaXMuX3kxKXtzd2l0Y2godGhpcy5fcG9p bnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5l VG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9w b2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLE90KHRoaXMsSXQodGhpcyxyPVB0 KHRoaXMsdCxlKSkscik7YnJlYWs7ZGVmYXVsdDpPdCh0aGlzLHRoaXMuX3QwLHI9UHQodGhp cyx0LGUpKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kx LHRoaXMuX3kxPWUsdGhpcy5fdDA9cn19fSwoRHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUo enQucHJvdG90eXBlKSkucG9pbnQ9ZnVuY3Rpb24odCxlKXt6dC5wcm90b3R5cGUucG9pbnQu Y2FsbCh0aGlzLGUsdCl9LFJ0LnByb3RvdHlwZT17bW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhp cy5fY29udGV4dC5tb3ZlVG8oZSx0KX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7dGhpcy5fY29u dGV4dC5jbG9zZVBhdGgoKX0sbGluZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fY29udGV4dC5s aW5lVG8oZSx0KX0sYmV6aWVyQ3VydmVUbzpmdW5jdGlvbih0LGUscixuLGksYSl7dGhpcy5f Y29udGV4dC5iZXppZXJDdXJ2ZVRvKGUsdCxuLHIsYSxpKX19LEZ0LnByb3RvdHlwZT17YXJl YVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhp cy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9W10sdGhpcy5feT1b XX0sbGluZUVuZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3gsZT10aGlzLl95LHI9dC5sZW5n dGg7aWYocilpZih0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHRbMF0sZVswXSk6 dGhpcy5fY29udGV4dC5tb3ZlVG8odFswXSxlWzBdKSwyPT09cil0aGlzLl9jb250ZXh0Lmxp bmVUbyh0WzFdLGVbMV0pO2Vsc2UgZm9yKHZhciBuPUJ0KHQpLGk9QnQoZSksYT0wLG89MTtv PHI7KythLCsrbyl0aGlzLl9jb250ZXh0LmJlemllckN1cnZlVG8oblswXVthXSxpWzBdW2Fd LG5bMV1bYV0saVsxXVthXSx0W29dLGVbb10pOyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGlu ZSYmMT09PXIpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlz Ll9saW5lLHRoaXMuX3g9dGhpcy5feT1udWxsfSxwb2ludDpmdW5jdGlvbih0LGUpe3RoaXMu X3gucHVzaCgrdCksdGhpcy5feS5wdXNoKCtlKX19LE50LnByb3RvdHlwZT17YXJlYVN0YXJ0 OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGlu ZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9dGhpcy5feT1OYU4sdGhpcy5f cG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpezA8dGhpcy5fdCYmdGhpcy5fdDwxJiYyPT09 dGhpcy5fcG9pbnQmJnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gsdGhpcy5feSksKHRo aXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250 ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU+PTAmJih0aGlzLl90PTEtdGhpcy5fdCx0aGlz Ll9saW5lPTEtdGhpcy5fbGluZSl9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3Qs ZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlz Ll9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7 Y2FzZSAxOnRoaXMuX3BvaW50PTI7ZGVmYXVsdDppZih0aGlzLl90PD0wKXRoaXMuX2NvbnRl eHQubGluZVRvKHRoaXMuX3gsZSksdGhpcy5fY29udGV4dC5saW5lVG8odCxlKTtlbHNle3Zh ciByPXRoaXMuX3gqKDEtdGhpcy5fdCkrdCp0aGlzLl90O3RoaXMuX2NvbnRleHQubGluZVRv KHIsdGhpcy5feSksdGhpcy5fY29udGV4dC5saW5lVG8ocixlKX19dGhpcy5feD10LHRoaXMu X3k9ZX19LHQuYXJjPWZ1bmN0aW9uKCl7dmFyIHQ9bSxvPWcsdz1yKDApLFQ9bnVsbCxrPXYs QT15LE09eCxTPW51bGw7ZnVuY3Rpb24gRSgpe3ZhciByLG0sZz0rdC5hcHBseSh0aGlzLGFy Z3VtZW50cyksdj0rby5hcHBseSh0aGlzLGFyZ3VtZW50cykseT1rLmFwcGx5KHRoaXMsYXJn dW1lbnRzKS1mLHg9QS5hcHBseSh0aGlzLGFyZ3VtZW50cyktZixFPW4oeC15KSxMPXg+eTtp ZihTfHwoUz1yPWUucGF0aCgpKSx2PGcmJihtPXYsdj1nLGc9bSksdj4xZS0xMilpZihFPmgt MWUtMTIpUy5tb3ZlVG8odiphKHkpLHYqbCh5KSksUy5hcmMoMCwwLHYseSx4LCFMKSxnPjFl LTEyJiYoUy5tb3ZlVG8oZyphKHgpLGcqbCh4KSksUy5hcmMoMCwwLGcseCx5LEwpKTtlbHNl e3ZhciBDLFAsST15LE89eCx6PXksRD14LFI9RSxGPUUsQj1NLmFwcGx5KHRoaXMsYXJndW1l bnRzKS8yLE49Qj4xZS0xMiYmKFQ/K1QuYXBwbHkodGhpcyxhcmd1bWVudHMpOmMoZypnK3Yq dikpLGo9cyhuKHYtZykvMiwrdy5hcHBseSh0aGlzLGFyZ3VtZW50cykpLFU9aixWPWo7aWYo Tj4xZS0xMil7dmFyIEg9ZChOL2cqbChCKSkscT1kKE4vdipsKEIpKTsoUi09MipIKT4xZS0x Mj8oeis9SCo9TD8xOi0xLEQtPUgpOihSPTAsej1EPSh5K3gpLzIpLChGLT0yKnEpPjFlLTEy PyhJKz1xKj1MPzE6LTEsTy09cSk6KEY9MCxJPU89KHkreCkvMil9dmFyIEc9diphKEkpLFk9 dipsKEkpLFc9ZyphKEQpLFg9ZypsKEQpO2lmKGo+MWUtMTIpe3ZhciBaLEo9diphKE8pLEs9 dipsKE8pLFE9ZyphKHopLCQ9ZypsKHopO2lmKEU8dSYmKFo9YihHLFksUSwkLEosSyxXLFgp KSl7dmFyIHR0PUctWlswXSxldD1ZLVpbMV0scnQ9Si1aWzBdLG50PUstWlsxXSxpdD0xL2wo cCgodHQqcnQrZXQqbnQpLyhjKHR0KnR0K2V0KmV0KSpjKHJ0KnJ0K250Km50KSkpLzIpLGF0 PWMoWlswXSpaWzBdK1pbMV0qWlsxXSk7VT1zKGosKGctYXQpLyhpdC0xKSksVj1zKGosKHYt YXQpLyhpdCsxKSl9fUY+MWUtMTI/Vj4xZS0xMj8oQz1fKFEsJCxHLFksdixWLEwpLFA9XyhK LEssVyxYLHYsVixMKSxTLm1vdmVUbyhDLmN4K0MueDAxLEMuY3krQy55MDEpLFY8aj9TLmFy YyhDLmN4LEMuY3ksVixpKEMueTAxLEMueDAxKSxpKFAueTAxLFAueDAxKSwhTCk6KFMuYXJj KEMuY3gsQy5jeSxWLGkoQy55MDEsQy54MDEpLGkoQy55MTEsQy54MTEpLCFMKSxTLmFyYygw LDAsdixpKEMuY3krQy55MTEsQy5jeCtDLngxMSksaShQLmN5K1AueTExLFAuY3grUC54MTEp LCFMKSxTLmFyYyhQLmN4LFAuY3ksVixpKFAueTExLFAueDExKSxpKFAueTAxLFAueDAxKSwh TCkpKTooUy5tb3ZlVG8oRyxZKSxTLmFyYygwLDAsdixJLE8sIUwpKTpTLm1vdmVUbyhHLFkp LGc+MWUtMTImJlI+MWUtMTI/VT4xZS0xMj8oQz1fKFcsWCxKLEssZywtVSxMKSxQPV8oRyxZ LFEsJCxnLC1VLEwpLFMubGluZVRvKEMuY3grQy54MDEsQy5jeStDLnkwMSksVTxqP1MuYXJj KEMuY3gsQy5jeSxVLGkoQy55MDEsQy54MDEpLGkoUC55MDEsUC54MDEpLCFMKTooUy5hcmMo Qy5jeCxDLmN5LFUsaShDLnkwMSxDLngwMSksaShDLnkxMSxDLngxMSksIUwpLFMuYXJjKDAs MCxnLGkoQy5jeStDLnkxMSxDLmN4K0MueDExKSxpKFAuY3krUC55MTEsUC5jeCtQLngxMSks TCksUy5hcmMoUC5jeCxQLmN5LFUsaShQLnkxMSxQLngxMSksaShQLnkwMSxQLngwMSksIUwp KSk6Uy5hcmMoMCwwLGcsRCx6LEwpOlMubGluZVRvKFcsWCl9ZWxzZSBTLm1vdmVUbygwLDAp O2lmKFMuY2xvc2VQYXRoKCkscilyZXR1cm4gUz1udWxsLHIrIiJ8fG51bGx9cmV0dXJuIEUu Y2VudHJvaWQ9ZnVuY3Rpb24oKXt2YXIgZT0oK3QuYXBwbHkodGhpcyxhcmd1bWVudHMpKyAr by5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIscj0oK2suYXBwbHkodGhpcyxhcmd1bWVudHMp KyArQS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzItdS8yO3JldHVyblthKHIpKmUsbChyKSpl XX0sRS5pbm5lclJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o dD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOnIoK2UpLEUpOnR9LEUub3V0ZXJSYWRpdXM9ZnVu Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9m IHQ/dDpyKCt0KSxFKTpvfSxFLmNvcm5lclJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJn dW1lbnRzLmxlbmd0aD8odz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnIoK3QpLEUpOnd9LEUu cGFkUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhUPW51bGw9 PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OnIoK3QpLEUpOlR9LEUuc3RhcnRBbmds ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaz0iZnVuY3Rpb24iPT10 eXBlb2YgdD90OnIoK3QpLEUpOmt9LEUuZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFy Z3VtZW50cy5sZW5ndGg/KEE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpyKCt0KSxFKTpBfSxF LnBhZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhNPSJmdW5j dGlvbiI9PXR5cGVvZiB0P3Q6cigrdCksRSk6TX0sRS5jb250ZXh0PWZ1bmN0aW9uKHQpe3Jl dHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPW51bGw9PXQ/bnVsbDp0LEUpOlN9LEV9LHQuYXJl YT1TLHQuYXJlYVJhZGlhbD1ELHQuY3VydmVCYXNpcz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3 IHV0KHQpfSx0LmN1cnZlQmFzaXNDbG9zZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBmdCh0 KX0sdC5jdXJ2ZUJhc2lzT3Blbj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGh0KHQpfSx0LmN1 cnZlQnVuZGxlPWR0LHQuY3VydmVDYXJkaW5hbD12dCx0LmN1cnZlQ2FyZGluYWxDbG9zZWQ9 eHQsdC5jdXJ2ZUNhcmRpbmFsT3Blbj1fdCx0LmN1cnZlQ2F0bXVsbFJvbT1rdCx0LmN1cnZl Q2F0bXVsbFJvbUNsb3NlZD1NdCx0LmN1cnZlQ2F0bXVsbFJvbU9wZW49RXQsdC5jdXJ2ZUxp bmVhcj1ULHQuY3VydmVMaW5lYXJDbG9zZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBMdCh0 KX0sdC5jdXJ2ZU1vbm90b25lWD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHp0KHQpfSx0LmN1 cnZlTW9ub3RvbmVZPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRHQodCl9LHQuY3VydmVOYXR1 cmFsPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRnQodCl9LHQuY3VydmVTdGVwPWZ1bmN0aW9u KHQpe3JldHVybiBuZXcgTnQodCwuNSl9LHQuY3VydmVTdGVwQWZ0ZXI9ZnVuY3Rpb24odCl7 cmV0dXJuIG5ldyBOdCh0LDEpfSx0LmN1cnZlU3RlcEJlZm9yZT1mdW5jdGlvbih0KXtyZXR1 cm4gbmV3IE50KHQsMCl9LHQubGluZT1NLHQubGluZVJhZGlhbD16LHQubGlua0hvcml6b250 YWw9ZnVuY3Rpb24oKXtyZXR1cm4gaihVKX0sdC5saW5rUmFkaWFsPWZ1bmN0aW9uKCl7dmFy IHQ9aihIKTtyZXR1cm4gdC5hbmdsZT10LngsZGVsZXRlIHQueCx0LnJhZGl1cz10LnksZGVs ZXRlIHQueSx0fSx0LmxpbmtWZXJ0aWNhbD1mdW5jdGlvbigpe3JldHVybiBqKFYpfSx0LnBp ZT1mdW5jdGlvbigpe3ZhciB0PUwsZT1FLG49bnVsbCxpPXIoMCksYT1yKGgpLG89cigwKTtm dW5jdGlvbiBzKHIpe3ZhciBzLGwsYyx1LGYscD1yLmxlbmd0aCxkPTAsbT1uZXcgQXJyYXko cCksZz1uZXcgQXJyYXkocCksdj0raS5hcHBseSh0aGlzLGFyZ3VtZW50cykseT1NYXRoLm1p bihoLE1hdGgubWF4KC1oLGEuYXBwbHkodGhpcyxhcmd1bWVudHMpLXYpKSx4PU1hdGgubWlu KE1hdGguYWJzKHkpL3Asby5hcHBseSh0aGlzLGFyZ3VtZW50cykpLGI9eCooeTwwPy0xOjEp O2ZvcihzPTA7czxwOysrcykoZj1nW21bc109c109K3QocltzXSxzLHIpKT4wJiYoZCs9Zik7 Zm9yKG51bGwhPWU/bS5zb3J0KChmdW5jdGlvbih0LHIpe3JldHVybiBlKGdbdF0sZ1tyXSl9 KSk6bnVsbCE9biYmbS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBuKHJbdF0scltlXSl9 KSkscz0wLGM9ZD8oeS1wKmIpL2Q6MDtzPHA7KytzLHY9dSlsPW1bc10sdT12KygoZj1nW2xd KT4wP2YqYzowKStiLGdbbF09e2RhdGE6cltsXSxpbmRleDpzLHZhbHVlOmYsc3RhcnRBbmds ZTp2LGVuZEFuZ2xlOnUscGFkQW5nbGU6eH07cmV0dXJuIGd9cmV0dXJuIHMudmFsdWU9ZnVu Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9m IGU/ZTpyKCtlKSxzKTp0fSxzLnNvcnRWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3Vt ZW50cy5sZW5ndGg/KGU9dCxuPW51bGwscyk6ZX0scy5zb3J0PWZ1bmN0aW9uKHQpe3JldHVy biBhcmd1bWVudHMubGVuZ3RoPyhuPXQsZT1udWxsLHMpOm59LHMuc3RhcnRBbmdsZT1mdW5j dGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2Yg dD90OnIoK3QpLHMpOml9LHMuZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50 cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpyKCt0KSxzKTphfSxzLnBhZEFu Z2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9 PXR5cGVvZiB0P3Q6cigrdCkscyk6b30sc30sdC5wb2ludFJhZGlhbD1SLHQucmFkaWFsQXJl YT1ELHQucmFkaWFsTGluZT16LHQuc3RhY2s9ZnVuY3Rpb24oKXt2YXIgdD1yKFtdKSxlPVV0 LG49anQsaT1WdDtmdW5jdGlvbiBhKHIpe3ZhciBhLG8scz10LmFwcGx5KHRoaXMsYXJndW1l bnRzKSxsPXIubGVuZ3RoLGM9cy5sZW5ndGgsdT1uZXcgQXJyYXkoYyk7Zm9yKGE9MDthPGM7 KythKXtmb3IodmFyIGYsaD1zW2FdLHA9dVthXT1uZXcgQXJyYXkobCksZD0wO2Q8bDsrK2Qp cFtkXT1mPVswLCtpKHJbZF0saCxkLHIpXSxmLmRhdGE9cltkXTtwLmtleT1ofWZvcihhPTAs bz1lKHUpO2E8YzsrK2EpdVtvW2FdXS5pbmRleD1hO3JldHVybiBuKHUsbyksdX1yZXR1cm4g YS5rZXlzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlv biI9PXR5cGVvZiBlP2U6cihGLmNhbGwoZSkpLGEpOnR9LGEudmFsdWU9ZnVuY3Rpb24odCl7 cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpyKCt0 KSxhKTppfSxhLm9yZGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhl PW51bGw9PXQ/VXQ6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpyKEYuY2FsbCh0KSksYSk6ZX0s YS5vZmZzZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09 dD9qdDp0LGEpOm59LGF9LHQuc3RhY2tPZmZzZXREaXZlcmdpbmc9ZnVuY3Rpb24odCxlKXtp Zigocz10Lmxlbmd0aCk+MClmb3IodmFyIHIsbixpLGEsbyxzLGw9MCxjPXRbZVswXV0ubGVu Z3RoO2w8YzsrK2wpZm9yKGE9bz0wLHI9MDtyPHM7KytyKShpPShuPXRbZVtyXV1bbF0pWzFd LW5bMF0pPjA/KG5bMF09YSxuWzFdPWErPWkpOmk8MD8oblsxXT1vLG5bMF09bys9aSk6KG5b MF09MCxuWzFdPWkpfSx0LnN0YWNrT2Zmc2V0RXhwYW5kPWZ1bmN0aW9uKHQsZSl7aWYoKG49 dC5sZW5ndGgpPjApe2Zvcih2YXIgcixuLGksYT0wLG89dFswXS5sZW5ndGg7YTxvOysrYSl7 Zm9yKGk9cj0wO3I8bjsrK3IpaSs9dFtyXVthXVsxXXx8MDtpZihpKWZvcihyPTA7cjxuOysr cil0W3JdW2FdWzFdLz1pfWp0KHQsZSl9fSx0LnN0YWNrT2Zmc2V0Tm9uZT1qdCx0LnN0YWNr T2Zmc2V0U2lsaG91ZXR0ZT1mdW5jdGlvbih0LGUpe2lmKChyPXQubGVuZ3RoKT4wKXtmb3Io dmFyIHIsbj0wLGk9dFtlWzBdXSxhPWkubGVuZ3RoO248YTsrK24pe2Zvcih2YXIgbz0wLHM9 MDtvPHI7KytvKXMrPXRbb11bbl1bMV18fDA7aVtuXVsxXSs9aVtuXVswXT0tcy8yfWp0KHQs ZSl9fSx0LnN0YWNrT2Zmc2V0V2lnZ2xlPWZ1bmN0aW9uKHQsZSl7aWYoKGk9dC5sZW5ndGgp PjAmJihuPShyPXRbZVswXV0pLmxlbmd0aCk+MCl7Zm9yKHZhciByLG4saSxhPTAsbz0xO288 bjsrK28pe2Zvcih2YXIgcz0wLGw9MCxjPTA7czxpOysrcyl7Zm9yKHZhciB1PXRbZVtzXV0s Zj11W29dWzFdfHwwLGg9KGYtKHVbby0xXVsxXXx8MCkpLzIscD0wO3A8czsrK3Ape3ZhciBk PXRbZVtwXV07aCs9KGRbb11bMV18fDApLShkW28tMV1bMV18fDApfWwrPWYsYys9aCpmfXJb by0xXVsxXSs9cltvLTFdWzBdPWEsbCYmKGEtPWMvbCl9cltvLTFdWzFdKz1yW28tMV1bMF09 YSxqdCh0LGUpfX0sdC5zdGFja09yZGVyQXBwZWFyYW5jZT1IdCx0LnN0YWNrT3JkZXJBc2Nl bmRpbmc9R3QsdC5zdGFja09yZGVyRGVzY2VuZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gR3Qo dCkucmV2ZXJzZSgpfSx0LnN0YWNrT3JkZXJJbnNpZGVPdXQ9ZnVuY3Rpb24odCl7dmFyIGUs cixuPXQubGVuZ3RoLGk9dC5tYXAoWXQpLGE9SHQodCksbz0wLHM9MCxsPVtdLGM9W107Zm9y KGU9MDtlPG47KytlKXI9YVtlXSxvPHM/KG8rPWlbcl0sbC5wdXNoKHIpKToocys9aVtyXSxj LnB1c2gocikpO3JldHVybiBjLnJldmVyc2UoKS5jb25jYXQobCl9LHQuc3RhY2tPcmRlck5v bmU9VXQsdC5zdGFja09yZGVyUmV2ZXJzZT1mdW5jdGlvbih0KXtyZXR1cm4gVXQodCkucmV2 ZXJzZSgpfSx0LnN5bWJvbD1mdW5jdGlvbigpe3ZhciB0PXIocSksbj1yKDY0KSxpPW51bGw7 ZnVuY3Rpb24gYSgpe3ZhciByO2lmKGl8fChpPXI9ZS5wYXRoKCkpLHQuYXBwbHkodGhpcyxh cmd1bWVudHMpLmRyYXcoaSwrbi5hcHBseSh0aGlzLGFyZ3VtZW50cykpLHIpcmV0dXJuIGk9 bnVsbCxyKyIifHxudWxsfXJldHVybiBhLnR5cGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt ZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpyKGUpLGEpOnR9LGEuc2l6 ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10 eXBlb2YgdD90OnIoK3QpLGEpOm59LGEuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJn dW1lbnRzLmxlbmd0aD8oaT1udWxsPT10P251bGw6dCxhKTppfSxhfSx0LnN5bWJvbENpcmNs ZT1xLHQuc3ltYm9sQ3Jvc3M9Ryx0LnN5bWJvbERpYW1vbmQ9WCx0LnN5bWJvbFNxdWFyZT0k LHQuc3ltYm9sU3Rhcj1RLHQuc3ltYm9sVHJpYW5nbGU9ZXQsdC5zeW1ib2xXeWU9b3QsdC5z eW1ib2xzPXN0LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6 ITB9KX0pKX0seyJkMy1wYXRoIjoxMTd9XSwxMjA6W2Z1bmN0aW9uKHQsZSxyKXshZnVuY3Rp b24obixpKXsib2JqZWN0Ij09dHlwZW9mIHImJnZvaWQgMCE9PWU/aShyLHQoImQzLXRpbWUi KSk6aSgobj1ufHxzZWxmKS5kMz1uLmQzfHx7fSxuLmQzKX0odGhpcywoZnVuY3Rpb24odCxl KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXtpZigwPD10LnkmJnQueTwxMDApe3ZhciBl PW5ldyBEYXRlKC0xLHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKTtyZXR1cm4gZS5zZXRGdWxs WWVhcih0LnkpLGV9cmV0dXJuIG5ldyBEYXRlKHQueSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQu TCl9ZnVuY3Rpb24gbih0KXtpZigwPD10LnkmJnQueTwxMDApe3ZhciBlPW5ldyBEYXRlKERh dGUuVVRDKC0xLHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSk7cmV0dXJuIGUuc2V0VVRDRnVs bFllYXIodC55KSxlfXJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh0LnksdC5tLHQuZCx0Lkgs dC5NLHQuUyx0LkwpKX1mdW5jdGlvbiBpKHQsZSxyKXtyZXR1cm57eTp0LG06ZSxkOnIsSDow LE06MCxTOjAsTDowfX1mdW5jdGlvbiBhKHQpe3ZhciBhPXQuZGF0ZVRpbWUsbz10LmRhdGUs bD10LnRpbWUsYz10LnBlcmlvZHMsdT10LmRheXMsZj10LnNob3J0RGF5cyxoPXQubW9udGhz LHl0PXQuc2hvcnRNb250aHMseHQ9cChjKSxidD1kKGMpLF90PXAodSksd3Q9ZCh1KSxUdD1w KGYpLGt0PWQoZiksQXQ9cChoKSxNdD1kKGgpLFN0PXAoeXQpLEV0PWQoeXQpLEx0PXthOmZ1 bmN0aW9uKHQpe3JldHVybiBmW3QuZ2V0RGF5KCldfSxBOmZ1bmN0aW9uKHQpe3JldHVybiB1 W3QuZ2V0RGF5KCldfSxiOmZ1bmN0aW9uKHQpe3JldHVybiB5dFt0LmdldE1vbnRoKCldfSxC OmZ1bmN0aW9uKHQpe3JldHVybiBoW3QuZ2V0TW9udGgoKV19LGM6bnVsbCxkOkQsZTpELGY6 aixIOlIsSTpGLGo6QixMOk4sbTpVLE06VixwOmZ1bmN0aW9uKHQpe3JldHVybiBjWysodC5n ZXRIb3VycygpPj0xMildfSxxOmZ1bmN0aW9uKHQpe3JldHVybiAxK35+KHQuZ2V0TW9udGgo KS8zKX0sUTpndCxzOnZ0LFM6SCx1OnEsVTpHLFY6WSx3OlcsVzpYLHg6bnVsbCxYOm51bGws eTpaLFk6SixaOkssIiUiOm10fSxDdD17YTpmdW5jdGlvbih0KXtyZXR1cm4gZlt0LmdldFVU Q0RheSgpXX0sQTpmdW5jdGlvbih0KXtyZXR1cm4gdVt0LmdldFVUQ0RheSgpXX0sYjpmdW5j dGlvbih0KXtyZXR1cm4geXRbdC5nZXRVVENNb250aCgpXX0sQjpmdW5jdGlvbih0KXtyZXR1 cm4gaFt0LmdldFVUQ01vbnRoKCldfSxjOm51bGwsZDpRLGU6USxmOm50LEg6JCxJOnR0LGo6 ZXQsTDpydCxtOml0LE06YXQscDpmdW5jdGlvbih0KXtyZXR1cm4gY1srKHQuZ2V0VVRDSG91 cnMoKT49MTIpXX0scTpmdW5jdGlvbih0KXtyZXR1cm4gMSt+fih0LmdldFVUQ01vbnRoKCkv Myl9LFE6Z3Qsczp2dCxTOm90LHU6c3QsVTpsdCxWOmN0LHc6dXQsVzpmdCx4Om51bGwsWDpu dWxsLHk6aHQsWTpwdCxaOmR0LCIlIjptdH0sUHQ9e2E6ZnVuY3Rpb24odCxlLHIpe3ZhciBu PVR0LmV4ZWMoZS5zbGljZShyKSk7cmV0dXJuIG4/KHQudz1rdFtuWzBdLnRvTG93ZXJDYXNl KCldLHIrblswXS5sZW5ndGgpOi0xfSxBOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1fdC5leGVj KGUuc2xpY2UocikpO3JldHVybiBuPyh0Lnc9d3RbblswXS50b0xvd2VyQ2FzZSgpXSxyK25b MF0ubGVuZ3RoKTotMX0sYjpmdW5jdGlvbih0LGUscil7dmFyIG49U3QuZXhlYyhlLnNsaWNl KHIpKTtyZXR1cm4gbj8odC5tPUV0W25bMF0udG9Mb3dlckNhc2UoKV0scituWzBdLmxlbmd0 aCk6LTF9LEI6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPUF0LmV4ZWMoZS5zbGljZShyKSk7cmV0 dXJuIG4/KHQubT1NdFtuWzBdLnRvTG93ZXJDYXNlKCldLHIrblswXS5sZW5ndGgpOi0xfSxj OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4genQodCxhLGUscil9LGQ6QSxlOkEsZjpQLEg6UyxJ OlMsajpNLEw6QyxtOmssTTpFLHA6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXh0LmV4ZWMoZS5z bGljZShyKSk7cmV0dXJuIG4/KHQucD1idFtuWzBdLnRvTG93ZXJDYXNlKCldLHIrblswXS5s ZW5ndGgpOi0xfSxxOlQsUTpPLHM6eixTOkwsdTpnLFU6dixWOnksdzptLFc6eCx4OmZ1bmN0 aW9uKHQsZSxyKXtyZXR1cm4genQodCxvLGUscil9LFg6ZnVuY3Rpb24odCxlLHIpe3JldHVy biB6dCh0LGwsZSxyKX0seTpfLFk6YixaOncsIiUiOkl9O2Z1bmN0aW9uIEl0KHQsZSl7cmV0 dXJuIGZ1bmN0aW9uKHIpe3ZhciBuLGksYSxvPVtdLGw9LTEsYz0wLHU9dC5sZW5ndGg7Zm9y KHIgaW5zdGFuY2VvZiBEYXRlfHwocj1uZXcgRGF0ZSgrcikpOysrbDx1OykzNz09PXQuY2hh ckNvZGVBdChsKSYmKG8ucHVzaCh0LnNsaWNlKGMsbCkpLG51bGwhPShpPXNbbj10LmNoYXJB dCgrK2wpXSk/bj10LmNoYXJBdCgrK2wpOmk9ImUiPT09bj8iICI6IjAiLChhPWVbbl0pJiYo bj1hKHIsaSkpLG8ucHVzaChuKSxjPWwrMSk7cmV0dXJuIG8ucHVzaCh0LnNsaWNlKGMsbCkp LG8uam9pbigiIil9fWZ1bmN0aW9uIE90KHQsYSl7cmV0dXJuIGZ1bmN0aW9uKG8pe3ZhciBz LGwsYz1pKDE5MDAsdm9pZCAwLDEpO2lmKHp0KGMsdCxvKz0iIiwwKSE9by5sZW5ndGgpcmV0 dXJuIG51bGw7aWYoIlEiaW4gYylyZXR1cm4gbmV3IERhdGUoYy5RKTtpZigicyJpbiBjKXJl dHVybiBuZXcgRGF0ZSgxZTMqYy5zKygiTCJpbiBjP2MuTDowKSk7aWYoYSYmISgiWiJpbiBj KSYmKGMuWj0wKSwicCJpbiBjJiYoYy5IPWMuSCUxMisxMipjLnApLHZvaWQgMD09PWMubSYm KGMubT0icSJpbiBjP2MucTowKSwiViJpbiBjKXtpZihjLlY8MXx8Yy5WPjUzKXJldHVybiBu dWxsOyJ3ImluIGN8fChjLnc9MSksIloiaW4gYz8obD0ocz1uKGkoYy55LDAsMSkpKS5nZXRV VENEYXkoKSxzPWw+NHx8MD09PWw/ZS51dGNNb25kYXkuY2VpbChzKTplLnV0Y01vbmRheShz KSxzPWUudXRjRGF5Lm9mZnNldChzLDcqKGMuVi0xKSksYy55PXMuZ2V0VVRDRnVsbFllYXIo KSxjLm09cy5nZXRVVENNb250aCgpLGMuZD1zLmdldFVUQ0RhdGUoKSsoYy53KzYpJTcpOihs PShzPXIoaShjLnksMCwxKSkpLmdldERheSgpLHM9bD40fHwwPT09bD9lLnRpbWVNb25kYXku Y2VpbChzKTplLnRpbWVNb25kYXkocykscz1lLnRpbWVEYXkub2Zmc2V0KHMsNyooYy5WLTEp KSxjLnk9cy5nZXRGdWxsWWVhcigpLGMubT1zLmdldE1vbnRoKCksYy5kPXMuZ2V0RGF0ZSgp KyhjLncrNiklNyl9ZWxzZSgiVyJpbiBjfHwiVSJpbiBjKSYmKCJ3ImluIGN8fChjLnc9InUi aW4gYz9jLnUlNzoiVyJpbiBjPzE6MCksbD0iWiJpbiBjP24oaShjLnksMCwxKSkuZ2V0VVRD RGF5KCk6cihpKGMueSwwLDEpKS5nZXREYXkoKSxjLm09MCxjLmQ9IlciaW4gYz8oYy53KzYp JTcrNypjLlctKGwrNSklNzpjLncrNypjLlUtKGwrNiklNyk7cmV0dXJuIloiaW4gYz8oYy5I Kz1jLlovMTAwfDAsYy5NKz1jLlolMTAwLG4oYykpOnIoYyl9fWZ1bmN0aW9uIHp0KHQsZSxy LG4pe2Zvcih2YXIgaSxhLG89MCxsPWUubGVuZ3RoLGM9ci5sZW5ndGg7bzxsOyl7aWYobj49 YylyZXR1cm4tMTtpZigzNz09PShpPWUuY2hhckNvZGVBdChvKyspKSl7aWYoaT1lLmNoYXJB dChvKyspLCEoYT1QdFtpIGluIHM/ZS5jaGFyQXQobysrKTppXSl8fChuPWEodCxyLG4pKTww KXJldHVybi0xfWVsc2UgaWYoaSE9ci5jaGFyQ29kZUF0KG4rKykpcmV0dXJuLTF9cmV0dXJu IG59cmV0dXJuIEx0Lng9SXQobyxMdCksTHQuWD1JdChsLEx0KSxMdC5jPUl0KGEsTHQpLEN0 Lng9SXQobyxDdCksQ3QuWD1JdChsLEN0KSxDdC5jPUl0KGEsQ3QpLHtmb3JtYXQ6ZnVuY3Rp b24odCl7dmFyIGU9SXQodCs9IiIsTHQpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7 cmV0dXJuIHR9LGV9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPU90KHQrPSIiLCExKTtyZXR1 cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSx1dGNGb3JtYXQ6ZnVuY3Rp b24odCl7dmFyIGU9SXQodCs9IiIsQ3QpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7 cmV0dXJuIHR9LGV9LHV0Y1BhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPU90KHQrPSIiLCEwKTty ZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfX19dmFyIG8scz17Ii0i OiIiLF86IiAiLDA6IjAifSxsPS9eXHMqXGQrLyxjPS9eJS8sdT0vW1xcXiQqKz98W1xdKCku e31dL2c7ZnVuY3Rpb24gZih0LGUscil7dmFyIG49dDwwPyItIjoiIixpPShuPy10OnQpKyIi LGE9aS5sZW5ndGg7cmV0dXJuIG4rKGE8cj9uZXcgQXJyYXkoci1hKzEpLmpvaW4oZSkraTpp KX1mdW5jdGlvbiBoKHQpe3JldHVybiB0LnJlcGxhY2UodSwiXFwkJiIpfWZ1bmN0aW9uIHAo dCl7cmV0dXJuIG5ldyBSZWdFeHAoIl4oPzoiK3QubWFwKGgpLmpvaW4oInwiKSsiKSIsImki KX1mdW5jdGlvbiBkKHQpe2Zvcih2YXIgZT17fSxyPS0xLG49dC5sZW5ndGg7KytyPG47KWVb dFtyXS50b0xvd2VyQ2FzZSgpXT1yO3JldHVybiBlfWZ1bmN0aW9uIG0odCxlLHIpe3ZhciBu PWwuZXhlYyhlLnNsaWNlKHIscisxKSk7cmV0dXJuIG4/KHQudz0rblswXSxyK25bMF0ubGVu Z3RoKTotMX1mdW5jdGlvbiBnKHQsZSxyKXt2YXIgbj1sLmV4ZWMoZS5zbGljZShyLHIrMSkp O3JldHVybiBuPyh0LnU9K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdih0LGUs cil7dmFyIG49bC5leGVjKGUuc2xpY2UocixyKzIpKTtyZXR1cm4gbj8odC5VPStuWzBdLHIr blswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHkodCxlLHIpe3ZhciBuPWwuZXhlYyhlLnNsaWNl KHIscisyKSk7cmV0dXJuIG4/KHQuVj0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlv biB4KHQsZSxyKXt2YXIgbj1sLmV4ZWMoZS5zbGljZShyLHIrMikpO3JldHVybiBuPyh0Llc9 K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gYih0LGUscil7dmFyIG49bC5leGVj KGUuc2xpY2UocixyKzQpKTtyZXR1cm4gbj8odC55PStuWzBdLHIrblswXS5sZW5ndGgpOi0x fWZ1bmN0aW9uIF8odCxlLHIpe3ZhciBuPWwuZXhlYyhlLnNsaWNlKHIscisyKSk7cmV0dXJu IG4/KHQueT0rblswXSsoK25bMF0+Njg/MTkwMDoyZTMpLHIrblswXS5sZW5ndGgpOi0xfWZ1 bmN0aW9uIHcodCxlLHIpe3ZhciBuPS9eKFopfChbKy1dXGRcZCkoPzo6PyhcZFxkKSk/Ly5l eGVjKGUuc2xpY2UocixyKzYpKTtyZXR1cm4gbj8odC5aPW5bMV0/MDotKG5bMl0rKG5bM118 fCIwMCIpKSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBUKHQsZSxyKXt2YXIgbj1sLmV4 ZWMoZS5zbGljZShyLHIrMSkpO3JldHVybiBuPyh0LnE9MypuWzBdLTMscituWzBdLmxlbmd0 aCk6LTF9ZnVuY3Rpb24gayh0LGUscil7dmFyIG49bC5leGVjKGUuc2xpY2UocixyKzIpKTty ZXR1cm4gbj8odC5tPW5bMF0tMSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBBKHQsZSxy KXt2YXIgbj1sLmV4ZWMoZS5zbGljZShyLHIrMikpO3JldHVybiBuPyh0LmQ9K25bMF0scitu WzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTSh0LGUscil7dmFyIG49bC5leGVjKGUuc2xpY2Uo cixyKzMpKTtyZXR1cm4gbj8odC5tPTAsdC5kPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1 bmN0aW9uIFModCxlLHIpe3ZhciBuPWwuZXhlYyhlLnNsaWNlKHIscisyKSk7cmV0dXJuIG4/ KHQuSD0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBFKHQsZSxyKXt2YXIgbj1s LmV4ZWMoZS5zbGljZShyLHIrMikpO3JldHVybiBuPyh0Lk09K25bMF0scituWzBdLmxlbmd0 aCk6LTF9ZnVuY3Rpb24gTCh0LGUscil7dmFyIG49bC5leGVjKGUuc2xpY2UocixyKzIpKTty ZXR1cm4gbj8odC5TPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEModCxlLHIp e3ZhciBuPWwuZXhlYyhlLnNsaWNlKHIsciszKSk7cmV0dXJuIG4/KHQuTD0rblswXSxyK25b MF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBQKHQsZSxyKXt2YXIgbj1sLmV4ZWMoZS5zbGljZShy LHIrNikpO3JldHVybiBuPyh0Lkw9TWF0aC5mbG9vcihuWzBdLzFlMykscituWzBdLmxlbmd0 aCk6LTF9ZnVuY3Rpb24gSSh0LGUscil7dmFyIG49Yy5leGVjKGUuc2xpY2UocixyKzEpKTty ZXR1cm4gbj9yK25bMF0ubGVuZ3RoOi0xfWZ1bmN0aW9uIE8odCxlLHIpe3ZhciBuPWwuZXhl YyhlLnNsaWNlKHIpKTtyZXR1cm4gbj8odC5RPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1 bmN0aW9uIHoodCxlLHIpe3ZhciBuPWwuZXhlYyhlLnNsaWNlKHIpKTtyZXR1cm4gbj8odC5z PStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEQodCxlKXtyZXR1cm4gZih0Lmdl dERhdGUoKSxlLDIpfWZ1bmN0aW9uIFIodCxlKXtyZXR1cm4gZih0LmdldEhvdXJzKCksZSwy KX1mdW5jdGlvbiBGKHQsZSl7cmV0dXJuIGYodC5nZXRIb3VycygpJTEyfHwxMixlLDIpfWZ1 bmN0aW9uIEIodCxyKXtyZXR1cm4gZigxK2UudGltZURheS5jb3VudChlLnRpbWVZZWFyKHQp LHQpLHIsMyl9ZnVuY3Rpb24gTih0LGUpe3JldHVybiBmKHQuZ2V0TWlsbGlzZWNvbmRzKCks ZSwzKX1mdW5jdGlvbiBqKHQsZSl7cmV0dXJuIE4odCxlKSsiMDAwIn1mdW5jdGlvbiBVKHQs ZSl7cmV0dXJuIGYodC5nZXRNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBWKHQsZSl7cmV0dXJu IGYodC5nZXRNaW51dGVzKCksZSwyKX1mdW5jdGlvbiBIKHQsZSl7cmV0dXJuIGYodC5nZXRT ZWNvbmRzKCksZSwyKX1mdW5jdGlvbiBxKHQpe3ZhciBlPXQuZ2V0RGF5KCk7cmV0dXJuIDA9 PT1lPzc6ZX1mdW5jdGlvbiBHKHQscil7cmV0dXJuIGYoZS50aW1lU3VuZGF5LmNvdW50KGUu dGltZVllYXIodCktMSx0KSxyLDIpfWZ1bmN0aW9uIFkodCxyKXt2YXIgbj10LmdldERheSgp O3JldHVybiB0PW4+PTR8fDA9PT1uP2UudGltZVRodXJzZGF5KHQpOmUudGltZVRodXJzZGF5 LmNlaWwodCksZihlLnRpbWVUaHVyc2RheS5jb3VudChlLnRpbWVZZWFyKHQpLHQpKyg0PT09 ZS50aW1lWWVhcih0KS5nZXREYXkoKSksciwyKX1mdW5jdGlvbiBXKHQpe3JldHVybiB0Lmdl dERheSgpfWZ1bmN0aW9uIFgodCxyKXtyZXR1cm4gZihlLnRpbWVNb25kYXkuY291bnQoZS50 aW1lWWVhcih0KS0xLHQpLHIsMil9ZnVuY3Rpb24gWih0LGUpe3JldHVybiBmKHQuZ2V0RnVs bFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBKKHQsZSl7cmV0dXJuIGYodC5nZXRGdWxsWWVh cigpJTFlNCxlLDQpfWZ1bmN0aW9uIEsodCl7dmFyIGU9dC5nZXRUaW1lem9uZU9mZnNldCgp O3JldHVybihlPjA/Ii0iOihlKj0tMSwiKyIpKStmKGUvNjB8MCwiMCIsMikrZihlJTYwLCIw IiwyKX1mdW5jdGlvbiBRKHQsZSl7cmV0dXJuIGYodC5nZXRVVENEYXRlKCksZSwyKX1mdW5j dGlvbiAkKHQsZSl7cmV0dXJuIGYodC5nZXRVVENIb3VycygpLGUsMil9ZnVuY3Rpb24gdHQo dCxlKXtyZXR1cm4gZih0LmdldFVUQ0hvdXJzKCklMTJ8fDEyLGUsMil9ZnVuY3Rpb24gZXQo dCxyKXtyZXR1cm4gZigxK2UudXRjRGF5LmNvdW50KGUudXRjWWVhcih0KSx0KSxyLDMpfWZ1 bmN0aW9uIHJ0KHQsZSl7cmV0dXJuIGYodC5nZXRVVENNaWxsaXNlY29uZHMoKSxlLDMpfWZ1 bmN0aW9uIG50KHQsZSl7cmV0dXJuIHJ0KHQsZSkrIjAwMCJ9ZnVuY3Rpb24gaXQodCxlKXty ZXR1cm4gZih0LmdldFVUQ01vbnRoKCkrMSxlLDIpfWZ1bmN0aW9uIGF0KHQsZSl7cmV0dXJu IGYodC5nZXRVVENNaW51dGVzKCksZSwyKX1mdW5jdGlvbiBvdCh0LGUpe3JldHVybiBmKHQu Z2V0VVRDU2Vjb25kcygpLGUsMil9ZnVuY3Rpb24gc3QodCl7dmFyIGU9dC5nZXRVVENEYXko KTtyZXR1cm4gMD09PWU/NzplfWZ1bmN0aW9uIGx0KHQscil7cmV0dXJuIGYoZS51dGNTdW5k YXkuY291bnQoZS51dGNZZWFyKHQpLTEsdCksciwyKX1mdW5jdGlvbiBjdCh0LHIpe3ZhciBu PXQuZ2V0VVRDRGF5KCk7cmV0dXJuIHQ9bj49NHx8MD09PW4/ZS51dGNUaHVyc2RheSh0KTpl LnV0Y1RodXJzZGF5LmNlaWwodCksZihlLnV0Y1RodXJzZGF5LmNvdW50KGUudXRjWWVhcih0 KSx0KSsoND09PWUudXRjWWVhcih0KS5nZXRVVENEYXkoKSksciwyKX1mdW5jdGlvbiB1dCh0 KXtyZXR1cm4gdC5nZXRVVENEYXkoKX1mdW5jdGlvbiBmdCh0LHIpe3JldHVybiBmKGUudXRj TW9uZGF5LmNvdW50KGUudXRjWWVhcih0KS0xLHQpLHIsMil9ZnVuY3Rpb24gaHQodCxlKXty ZXR1cm4gZih0LmdldFVUQ0Z1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gcHQodCxlKXty ZXR1cm4gZih0LmdldFVUQ0Z1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gZHQoKXtyZXR1 cm4iKzAwMDAifWZ1bmN0aW9uIG10KCl7cmV0dXJuIiUifWZ1bmN0aW9uIGd0KHQpe3JldHVy bit0fWZ1bmN0aW9uIHZ0KHQpe3JldHVybiBNYXRoLmZsb29yKCt0LzFlMyl9ZnVuY3Rpb24g eXQoZSl7cmV0dXJuIG89YShlKSx0LnRpbWVGb3JtYXQ9by5mb3JtYXQsdC50aW1lUGFyc2U9 by5wYXJzZSx0LnV0Y0Zvcm1hdD1vLnV0Y0Zvcm1hdCx0LnV0Y1BhcnNlPW8udXRjUGFyc2Us b315dCh7ZGF0ZVRpbWU6IiV4LCAlWCIsZGF0ZToiJS1tLyUtZC8lWSIsdGltZToiJS1JOiVN OiVTICVwIixwZXJpb2RzOlsiQU0iLCJQTSJdLGRheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJU dWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLHNo b3J0RGF5czpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLG1v bnRoczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5l IiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRl Y2VtYmVyIl0sc2hvcnRNb250aHM6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJK dW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXX0pO3ZhciB4dD1EYXRl LnByb3RvdHlwZS50b0lTT1N0cmluZz9mdW5jdGlvbih0KXtyZXR1cm4gdC50b0lTT1N0cmlu ZygpfTp0LnV0Y0Zvcm1hdCgiJVktJW0tJWRUJUg6JU06JVMuJUxaIik7dmFyIGJ0PStuZXcg RGF0ZSgiMjAwMC0wMS0wMVQwMDowMDowMC4wMDBaIik/ZnVuY3Rpb24odCl7dmFyIGU9bmV3 IERhdGUodCk7cmV0dXJuIGlzTmFOKGUpP251bGw6ZX06dC51dGNQYXJzZSgiJVktJW0tJWRU JUg6JU06JVMuJUxaIik7dC5pc29Gb3JtYXQ9eHQsdC5pc29QYXJzZT1idCx0LnRpbWVGb3Jt YXREZWZhdWx0TG9jYWxlPXl0LHQudGltZUZvcm1hdExvY2FsZT1hLE9iamVjdC5kZWZpbmVQ cm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0pKX0seyJkMy10aW1lIjoxMjF9 XSwxMjE6W2Z1bmN0aW9uKHQsZSxyKXshZnVuY3Rpb24odCxuKXsib2JqZWN0Ij09dHlwZW9m IHImJnZvaWQgMCE9PWU/bihyKTpuKCh0PXR8fHNlbGYpLmQzPXQuZDN8fHt9KX0odGhpcywo ZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO3ZhciBlPW5ldyBEYXRlLHI9bmV3IERhdGU7ZnVu Y3Rpb24gbih0LGksYSxvKXtmdW5jdGlvbiBzKGUpe3JldHVybiB0KGU9MD09PWFyZ3VtZW50 cy5sZW5ndGg/bmV3IERhdGU6bmV3IERhdGUoK2UpKSxlfXJldHVybiBzLmZsb29yPWZ1bmN0 aW9uKGUpe3JldHVybiB0KGU9bmV3IERhdGUoK2UpKSxlfSxzLmNlaWw9ZnVuY3Rpb24oZSl7 cmV0dXJuIHQoZT1uZXcgRGF0ZShlLTEpKSxpKGUsMSksdChlKSxlfSxzLnJvdW5kPWZ1bmN0 aW9uKHQpe3ZhciBlPXModCkscj1zLmNlaWwodCk7cmV0dXJuIHQtZTxyLXQ/ZTpyfSxzLm9m ZnNldD1mdW5jdGlvbih0LGUpe3JldHVybiBpKHQ9bmV3IERhdGUoK3QpLG51bGw9PWU/MTpN YXRoLmZsb29yKGUpKSx0fSxzLnJhbmdlPWZ1bmN0aW9uKGUscixuKXt2YXIgYSxvPVtdO2lm KGU9cy5jZWlsKGUpLG49bnVsbD09bj8xOk1hdGguZmxvb3IobiksIShlPHImJm4+MCkpcmV0 dXJuIG87ZG97by5wdXNoKGE9bmV3IERhdGUoK2UpKSxpKGUsbiksdChlKX13aGlsZShhPGUm JmU8cik7cmV0dXJuIG99LHMuZmlsdGVyPWZ1bmN0aW9uKGUpe3JldHVybiBuKChmdW5jdGlv bihyKXtpZihyPj1yKWZvcig7dChyKSwhZShyKTspci5zZXRUaW1lKHItMSl9KSwoZnVuY3Rp b24odCxyKXtpZih0Pj10KWlmKHI8MClmb3IoOysrcjw9MDspZm9yKDtpKHQsLTEpLCFlKHQp Oyk7ZWxzZSBmb3IoOy0tcj49MDspZm9yKDtpKHQsMSksIWUodCk7KTt9KSl9LGEmJihzLmNv dW50PWZ1bmN0aW9uKG4saSl7cmV0dXJuIGUuc2V0VGltZSgrbiksci5zZXRUaW1lKCtpKSx0 KGUpLHQociksTWF0aC5mbG9vcihhKGUscikpfSxzLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVy biB0PU1hdGguZmxvb3IodCksaXNGaW5pdGUodCkmJnQ+MD90PjE/cy5maWx0ZXIobz9mdW5j dGlvbihlKXtyZXR1cm4gbyhlKSV0PT0wfTpmdW5jdGlvbihlKXtyZXR1cm4gcy5jb3VudCgw LGUpJXQ9PTB9KTpzOm51bGx9KSxzfXZhciBpPW4oKGZ1bmN0aW9uKCl7fSksKGZ1bmN0aW9u KHQsZSl7dC5zZXRUaW1lKCt0K2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUtdH0pKTtp LmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksaXNGaW5pdGUodCkm JnQ+MD90PjE/bigoZnVuY3Rpb24oZSl7ZS5zZXRUaW1lKE1hdGguZmxvb3IoZS90KSp0KX0p LChmdW5jdGlvbihlLHIpe2Uuc2V0VGltZSgrZStyKnQpfSksKGZ1bmN0aW9uKGUscil7cmV0 dXJuKHItZSkvdH0pKTppOm51bGx9O3ZhciBhPWkucmFuZ2Usbz1uKChmdW5jdGlvbih0KXt0 LnNldFRpbWUodC10LmdldE1pbGxpc2Vjb25kcygpKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0 VGltZSgrdCsxZTMqZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS8xZTN9KSwoZnVu Y3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDU2Vjb25kcygpfSkpLHM9by5yYW5nZSxsPW4oKGZ1 bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCktMWUzKnQuZ2V0U2Vj b25kcygpKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCs2ZTQqZSl9KSwoZnVuY3Rp b24odCxlKXtyZXR1cm4oZS10KS82ZTR9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TWlu dXRlcygpfSkpLGM9bC5yYW5nZSx1PW4oKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0 TWlsbGlzZWNvbmRzKCktMWUzKnQuZ2V0U2Vjb25kcygpLTZlNCp0LmdldE1pbnV0ZXMoKSl9 KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrMzZlNSplKX0pLChmdW5jdGlvbih0LGUp e3JldHVybihlLXQpLzM2ZTV9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0SG91cnMoKX0p KSxmPXUucmFuZ2UsaD1uKChmdW5jdGlvbih0KXt0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1 bmN0aW9uKHQsZSl7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7 cmV0dXJuKGUtdC02ZTQqKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zm c2V0KCkpKS84NjRlNX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREYXRlKCktMX0pKSxw PWgucmFuZ2U7ZnVuY3Rpb24gZCh0KXtyZXR1cm4gbigoZnVuY3Rpb24oZSl7ZS5zZXREYXRl KGUuZ2V0RGF0ZSgpLShlLmdldERheSgpKzctdCklNyksZS5zZXRIb3VycygwLDAsMCwwKX0p LChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKSs3KmUpfSksKGZ1bmN0aW9u KHQsZSl7cmV0dXJuKGUtdC02ZTQqKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6 b25lT2Zmc2V0KCkpKS82MDQ4ZTV9KSl9dmFyIG09ZCgwKSxnPWQoMSksdj1kKDIpLHk9ZCgz KSx4PWQoNCksYj1kKDUpLF89ZCg2KSx3PW0ucmFuZ2UsVD1nLnJhbmdlLGs9di5yYW5nZSxB PXkucmFuZ2UsTT14LnJhbmdlLFM9Yi5yYW5nZSxFPV8ucmFuZ2UsTD1uKChmdW5jdGlvbih0 KXt0LnNldERhdGUoMSksdC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Qu c2V0TW9udGgodC5nZXRNb250aCgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0 TW9udGgoKS10LmdldE1vbnRoKCkrMTIqKGUuZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFy KCkpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1vbnRoKCl9KSksQz1MLnJhbmdlLFA9 bigoZnVuY3Rpb24odCl7dC5zZXRNb250aCgwLDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9KSwo ZnVuY3Rpb24odCxlKXt0LnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKStlKX0pLChmdW5j dGlvbih0LGUpe3JldHVybiBlLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpfSksKGZ1 bmN0aW9uKHQpe3JldHVybiB0LmdldEZ1bGxZZWFyKCl9KSk7UC5ldmVyeT1mdW5jdGlvbih0 KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP24oKGZ1bmN0aW9uKGUp e2Uuc2V0RnVsbFllYXIoTWF0aC5mbG9vcihlLmdldEZ1bGxZZWFyKCkvdCkqdCksZS5zZXRN b250aCgwLDEpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxyKXtlLnNldEZ1 bGxZZWFyKGUuZ2V0RnVsbFllYXIoKStyKnQpfSkpOm51bGx9O3ZhciBJPVAucmFuZ2UsTz1u KChmdW5jdGlvbih0KXt0LnNldFVUQ1NlY29uZHMoMCwwKX0pLChmdW5jdGlvbih0LGUpe3Qu c2V0VGltZSgrdCs2ZTQqZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS82ZTR9KSwo ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTWludXRlcygpfSkpLHo9Ty5yYW5nZSxEPW4o KGZ1bmN0aW9uKHQpe3Quc2V0VVRDTWludXRlcygwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0 LnNldFRpbWUoK3QrMzZlNSplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpLzM2ZTV9 KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDSG91cnMoKX0pKSxSPUQucmFuZ2UsRj1u KChmdW5jdGlvbih0KXt0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7 dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJu KGUtdCkvODY0ZTV9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRGF0ZSgpLTF9KSks Qj1GLnJhbmdlO2Z1bmN0aW9uIE4odCl7cmV0dXJuIG4oKGZ1bmN0aW9uKGUpe2Uuc2V0VVRD RGF0ZShlLmdldFVUQ0RhdGUoKS0oZS5nZXRVVENEYXkoKSs3LXQpJTcpLGUuc2V0VVRDSG91 cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRl KCkrNyplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpLzYwNDhlNX0pKX12YXIgaj1O KDApLFU9TigxKSxWPU4oMiksSD1OKDMpLHE9Tig0KSxHPU4oNSksWT1OKDYpLFc9ai5yYW5n ZSxYPVUucmFuZ2UsWj1WLnJhbmdlLEo9SC5yYW5nZSxLPXEucmFuZ2UsUT1HLnJhbmdlLCQ9 WS5yYW5nZSx0dD1uKChmdW5jdGlvbih0KXt0LnNldFVUQ0RhdGUoMSksdC5zZXRVVENIb3Vy cygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDTW9udGgodC5nZXRVVENNb250 aCgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0VVRDTW9udGgoKS10LmdldFVU Q01vbnRoKCkrMTIqKGUuZ2V0VVRDRnVsbFllYXIoKS10LmdldFVUQ0Z1bGxZZWFyKCkpfSks KGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ01vbnRoKCl9KSksZXQ9dHQucmFuZ2UscnQ9 bigoZnVuY3Rpb24odCl7dC5zZXRVVENNb250aCgwLDEpLHQuc2V0VVRDSG91cnMoMCwwLDAs MCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0Z1bGxZZWFyKHQuZ2V0VVRDRnVsbFllYXIo KStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldFVUQ0Z1bGxZZWFyKCktdC5nZXRV VENGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0Z1bGxZZWFyKCl9 KSk7cnQuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0 KSkmJnQ+MD9uKChmdW5jdGlvbihlKXtlLnNldFVUQ0Z1bGxZZWFyKE1hdGguZmxvb3IoZS5n ZXRVVENGdWxsWWVhcigpL3QpKnQpLGUuc2V0VVRDTW9udGgoMCwxKSxlLnNldFVUQ0hvdXJz KDAsMCwwLDApfSksKGZ1bmN0aW9uKGUscil7ZS5zZXRVVENGdWxsWWVhcihlLmdldFVUQ0Z1 bGxZZWFyKCkrcip0KX0pKTpudWxsfTt2YXIgbnQ9cnQucmFuZ2U7dC50aW1lRGF5PWgsdC50 aW1lRGF5cz1wLHQudGltZUZyaWRheT1iLHQudGltZUZyaWRheXM9Uyx0LnRpbWVIb3VyPXUs dC50aW1lSG91cnM9Zix0LnRpbWVJbnRlcnZhbD1uLHQudGltZU1pbGxpc2Vjb25kPWksdC50 aW1lTWlsbGlzZWNvbmRzPWEsdC50aW1lTWludXRlPWwsdC50aW1lTWludXRlcz1jLHQudGlt ZU1vbmRheT1nLHQudGltZU1vbmRheXM9VCx0LnRpbWVNb250aD1MLHQudGltZU1vbnRocz1D LHQudGltZVNhdHVyZGF5PV8sdC50aW1lU2F0dXJkYXlzPUUsdC50aW1lU2Vjb25kPW8sdC50 aW1lU2Vjb25kcz1zLHQudGltZVN1bmRheT1tLHQudGltZVN1bmRheXM9dyx0LnRpbWVUaHVy c2RheT14LHQudGltZVRodXJzZGF5cz1NLHQudGltZVR1ZXNkYXk9dix0LnRpbWVUdWVzZGF5 cz1rLHQudGltZVdlZG5lc2RheT15LHQudGltZVdlZG5lc2RheXM9QSx0LnRpbWVXZWVrPW0s dC50aW1lV2Vla3M9dyx0LnRpbWVZZWFyPVAsdC50aW1lWWVhcnM9SSx0LnV0Y0RheT1GLHQu dXRjRGF5cz1CLHQudXRjRnJpZGF5PUcsdC51dGNGcmlkYXlzPVEsdC51dGNIb3VyPUQsdC51 dGNIb3Vycz1SLHQudXRjTWlsbGlzZWNvbmQ9aSx0LnV0Y01pbGxpc2Vjb25kcz1hLHQudXRj TWludXRlPU8sdC51dGNNaW51dGVzPXosdC51dGNNb25kYXk9VSx0LnV0Y01vbmRheXM9WCx0 LnV0Y01vbnRoPXR0LHQudXRjTW9udGhzPWV0LHQudXRjU2F0dXJkYXk9WSx0LnV0Y1NhdHVy ZGF5cz0kLHQudXRjU2Vjb25kPW8sdC51dGNTZWNvbmRzPXMsdC51dGNTdW5kYXk9aix0LnV0 Y1N1bmRheXM9Vyx0LnV0Y1RodXJzZGF5PXEsdC51dGNUaHVyc2RheXM9Syx0LnV0Y1R1ZXNk YXk9Vix0LnV0Y1R1ZXNkYXlzPVosdC51dGNXZWRuZXNkYXk9SCx0LnV0Y1dlZG5lc2RheXM9 Six0LnV0Y1dlZWs9aix0LnV0Y1dlZWtzPVcsdC51dGNZZWFyPXJ0LHQudXRjWWVhcnM9bnQs T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSkpfSx7 fV0sMTIyOltmdW5jdGlvbih0LGUscil7YXJndW1lbnRzWzRdWzEyMV1bMF0uYXBwbHkocixh cmd1bWVudHMpfSx7ZHVwOjEyMX1dLDEyMzpbZnVuY3Rpb24odCxlLHIpeyFmdW5jdGlvbih0 LG4peyJvYmplY3QiPT10eXBlb2YgciYmdm9pZCAwIT09ZT9uKHIpOm4oKHQ9dHx8c2VsZiku ZDM9dC5kM3x8e30pfSh0aGlzLChmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7dmFyIGUscixu PTAsaT0wLGE9MCxvPTAscz0wLGw9MCxjPSJvYmplY3QiPT10eXBlb2YgcGVyZm9ybWFuY2Um JnBlcmZvcm1hbmNlLm5vdz9wZXJmb3JtYW5jZTpEYXRlLHU9Im9iamVjdCI9PXR5cGVvZiB3 aW5kb3cmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmlt YXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6ZnVuY3Rpb24odCl7c2V0VGltZW91dCh0LDE3KX07 ZnVuY3Rpb24gZigpe3JldHVybiBzfHwodShoKSxzPWMubm93KCkrbCl9ZnVuY3Rpb24gaCgp e3M9MH1mdW5jdGlvbiBwKCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVs bH1mdW5jdGlvbiBkKHQsZSxyKXt2YXIgbj1uZXcgcDtyZXR1cm4gbi5yZXN0YXJ0KHQsZSxy KSxufWZ1bmN0aW9uIG0oKXtmKCksKytuO2Zvcih2YXIgdCxyPWU7cjspKHQ9cy1yLl90aW1l KT49MCYmci5fY2FsbC5jYWxsKG51bGwsdCkscj1yLl9uZXh0Oy0tbn1mdW5jdGlvbiBnKCl7 cz0obz1jLm5vdygpKStsLG49aT0wO3RyeXttKCl9ZmluYWxseXtuPTAsZnVuY3Rpb24oKXt2 YXIgdCxuLGk9ZSxhPTEvMDtmb3IoO2k7KWkuX2NhbGw/KGE+aS5fdGltZSYmKGE9aS5fdGlt ZSksdD1pLGk9aS5fbmV4dCk6KG49aS5fbmV4dCxpLl9uZXh0PW51bGwsaT10P3QuX25leHQ9 bjplPW4pO3I9dCx5KGEpfSgpLHM9MH19ZnVuY3Rpb24gdigpe3ZhciB0PWMubm93KCksZT10 LW87ZT4xZTMmJihsLT1lLG89dCl9ZnVuY3Rpb24geSh0KXtufHwoaSYmKGk9Y2xlYXJUaW1l b3V0KGkpKSx0LXM+MjQ/KHQ8MS8wJiYoaT1zZXRUaW1lb3V0KGcsdC1jLm5vdygpLWwpKSxh JiYoYT1jbGVhckludGVydmFsKGEpKSk6KGF8fChvPWMubm93KCksYT1zZXRJbnRlcnZhbCh2 LDFlMykpLG49MSx1KGcpKSl9cC5wcm90b3R5cGU9ZC5wcm90b3R5cGU9e2NvbnN0cnVjdG9y OnAscmVzdGFydDpmdW5jdGlvbih0LG4saSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhy b3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTtpPShudWxs PT1pP2YoKToraSkrKG51bGw9PW4/MDorbiksdGhpcy5fbmV4dHx8cj09PXRoaXN8fChyP3Iu X25leHQ9dGhpczplPXRoaXMscj10aGlzKSx0aGlzLl9jYWxsPXQsdGhpcy5fdGltZT1pLHko KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2NhbGwmJih0aGlzLl9jYWxsPW51bGwsdGhpcy5f dGltZT0xLzAseSgpKX19LHQuaW50ZXJ2YWw9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPW5ldyBw LGk9ZTtyZXR1cm4gbnVsbD09ZT8obi5yZXN0YXJ0KHQsZSxyKSxuKTooZT0rZSxyPW51bGw9 PXI/ZigpOityLG4ucmVzdGFydCgoZnVuY3Rpb24gYShvKXtvKz1pLG4ucmVzdGFydChhLGkr PWUsciksdChvKX0pLGUsciksbil9LHQubm93PWYsdC50aW1lb3V0PWZ1bmN0aW9uKHQsZSxy KXt2YXIgbj1uZXcgcDtyZXR1cm4gZT1udWxsPT1lPzA6K2Usbi5yZXN0YXJ0KChmdW5jdGlv bihyKXtuLnN0b3AoKSx0KHIrZSl9KSxlLHIpLG59LHQudGltZXI9ZCx0LnRpbWVyRmx1c2g9 bSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9KSl9 LHt9XSwxMjQ6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtmb3IodmFy IHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWlmKHZvaWQgMCE9PWFyZ3VtZW50c1t0XSly ZXR1cm4gYXJndW1lbnRzW3RdfX0se31dLDEyNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0IjtlLmV4cG9ydHM9YTt2YXIgbj0oYS5jYW52YXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVu dCgiY2FudmFzIikpLmdldENvbnRleHQoIjJkIiksaT1vKFszMiwxMjZdKTtmdW5jdGlvbiBh KHQsZSl7QXJyYXkuaXNBcnJheSh0KSYmKHQ9dC5qb2luKCIsICIpKTt2YXIgcixhPXt9LHM9 MTYsbD0uMDU7ZSYmKDI9PT1lLmxlbmd0aCYmIm51bWJlciI9PXR5cGVvZiBlWzBdP3I9byhl KTpBcnJheS5pc0FycmF5KGUpP3I9ZTooZS5vP3I9byhlLm8pOmUucGFpcnMmJihyPWUucGFp cnMpLGUuZm9udFNpemUmJihzPWUuZm9udFNpemUpLG51bGwhPWUudGhyZXNob2xkJiYobD1l LnRocmVzaG9sZCkpKSxyfHwocj1pKSxuLmZvbnQ9cysicHggIit0O2Zvcih2YXIgYz0wO2M8 ci5sZW5ndGg7YysrKXt2YXIgdT1yW2NdLGY9bi5tZWFzdXJlVGV4dCh1WzBdKS53aWR0aCtu Lm1lYXN1cmVUZXh0KHVbMV0pLndpZHRoLGg9bi5tZWFzdXJlVGV4dCh1KS53aWR0aDtpZihN YXRoLmFicyhmLWgpPnMqbCl7dmFyIHA9KGgtZikvczthW3VdPTFlMypwfX1yZXR1cm4gYX1m dW5jdGlvbiBvKHQpe2Zvcih2YXIgZT1bXSxyPXRbMF07cjw9dFsxXTtyKyspZm9yKHZhciBu PVN0cmluZy5mcm9tQ2hhckNvZGUociksaT10WzBdO2k8dFsxXTtpKyspe3ZhciBhPW4rU3Ry aW5nLmZyb21DaGFyQ29kZShpKTtlLnB1c2goYSl9cmV0dXJuIGV9YS5jcmVhdGVQYWlycz1v LGEuYXNjaWk9aX0se31dLDEyNjpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoImFicy1zdmct cGF0aCIpLGk9dCgibm9ybWFsaXplLXN2Zy1wYXRoIiksYT17TToibW92ZVRvIixDOiJiZXpp ZXJDdXJ2ZVRvIn07ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dC5iZWdpblBhdGgoKSxpKG4o ZSkpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciByPWVbMF0sbj1lLnNsaWNlKDEpO3RbYVty XV0uYXBwbHkodCxuKX0pKSx0LmNsb3NlUGF0aCgpfX0seyJhYnMtc3ZnLXBhdGgiOjcwLCJu b3JtYWxpemUtc3ZnLXBhdGgiOjI0Nn1dLDEyNzpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0 cz1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSJpbnQ4IjpyZXR1cm4gSW50OEFycmF5O2Nh c2UiaW50MTYiOnJldHVybiBJbnQxNkFycmF5O2Nhc2UiaW50MzIiOnJldHVybiBJbnQzMkFy cmF5O2Nhc2UidWludDgiOnJldHVybiBVaW50OEFycmF5O2Nhc2UidWludDE2IjpyZXR1cm4g VWludDE2QXJyYXk7Y2FzZSJ1aW50MzIiOnJldHVybiBVaW50MzJBcnJheTtjYXNlImZsb2F0 MzIiOnJldHVybiBGbG9hdDMyQXJyYXk7Y2FzZSJmbG9hdDY0IjpyZXR1cm4gRmxvYXQ2NEFy cmF5O2Nhc2UiYXJyYXkiOnJldHVybiBBcnJheTtjYXNlInVpbnQ4X2NsYW1wZWQiOnJldHVy biBVaW50OENsYW1wZWRBcnJheX19fSx7fV0sMTI4OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3N3aXRjaCh2b2lkIDA9PT1lJiYoZT0w KSx0eXBlb2YgdCl7Y2FzZSJudW1iZXIiOmlmKHQ+MClyZXR1cm4gZnVuY3Rpb24odCxlKXt2 YXIgcixuO2ZvcihyPW5ldyBBcnJheSh0KSxuPTA7bjx0OysrbilyW25dPWU7cmV0dXJuIHJ9 KDB8dCxlKTticmVhaztjYXNlIm9iamVjdCI6aWYoIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0 aClyZXR1cm4gZnVuY3Rpb24gdChlLHIsbil7dmFyIGk9MHxlW25dO2lmKGk8PTApcmV0dXJu W107dmFyIGEsbz1uZXcgQXJyYXkoaSk7aWYobj09PWUubGVuZ3RoLTEpZm9yKGE9MDthPGk7 KythKW9bYV09cjtlbHNlIGZvcihhPTA7YTxpOysrYSlvW2FdPXQoZSxyLG4rMSk7cmV0dXJu IG99KHQsZSwwKX1yZXR1cm5bXX19LHt9XSwxMjk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZnVuY3Rpb24gbih0LGUscil7cj1yfHwyO3ZhciBuLHMsbCxjLHUscCxkLGc9ZSYm ZS5sZW5ndGgsdj1nP2VbMF0qcjp0Lmxlbmd0aCx5PWkodCwwLHYsciwhMCkseD1bXTtpZigh eXx8eS5uZXh0PT09eS5wcmV2KXJldHVybiB4O2lmKGcmJih5PWZ1bmN0aW9uKHQsZSxyLG4p e3ZhciBvLHMsbCxjLHUscD1bXTtmb3Iobz0wLHM9ZS5sZW5ndGg7bzxzO28rKylsPWVbb10q bixjPW88cy0xP2VbbysxXSpuOnQubGVuZ3RoLCh1PWkodCxsLGMsbiwhMSkpPT09dS5uZXh0 JiYodS5zdGVpbmVyPSEwKSxwLnB1c2gobSh1KSk7Zm9yKHAuc29ydChmKSxvPTA7bzxwLmxl bmd0aDtvKyspaChwW29dLHIpLHI9YShyLHIubmV4dCk7cmV0dXJuIHJ9KHQsZSx5LHIpKSx0 Lmxlbmd0aD44MCpyKXtuPWw9dFswXSxzPWM9dFsxXTtmb3IodmFyIGI9cjtiPHY7Yis9ciko dT10W2JdKTxuJiYobj11KSwocD10W2IrMV0pPHMmJihzPXApLHU+bCYmKGw9dSkscD5jJiYo Yz1wKTtkPTAhPT0oZD1NYXRoLm1heChsLW4sYy1zKSk/MS9kOjB9cmV0dXJuIG8oeSx4LHIs bixzLGQpLHh9ZnVuY3Rpb24gaSh0LGUscixuLGkpe3ZhciBhLG87aWYoaT09PUUodCxlLHIs bik+MClmb3IoYT1lO2E8cjthKz1uKW89QShhLHRbYV0sdFthKzFdLG8pO2Vsc2UgZm9yKGE9 ci1uO2E+PWU7YS09bilvPUEoYSx0W2FdLHRbYSsxXSxvKTtyZXR1cm4gbyYmeChvLG8ubmV4 dCkmJihNKG8pLG89by5uZXh0KSxvfWZ1bmN0aW9uIGEodCxlKXtpZighdClyZXR1cm4gdDtl fHwoZT10KTt2YXIgcixuPXQ7ZG97aWYocj0hMSxuLnN0ZWluZXJ8fCF4KG4sbi5uZXh0KSYm MCE9PXkobi5wcmV2LG4sbi5uZXh0KSluPW4ubmV4dDtlbHNle2lmKE0obiksKG49ZT1uLnBy ZXYpPT09bi5uZXh0KWJyZWFrO3I9ITB9fXdoaWxlKHJ8fG4hPT1lKTtyZXR1cm4gZX1mdW5j dGlvbiBvKHQsZSxyLG4saSxmLGgpe2lmKHQpeyFoJiZmJiZmdW5jdGlvbih0LGUscixuKXt2 YXIgaT10O2Rve251bGw9PT1pLnomJihpLno9ZChpLngsaS55LGUscixuKSksaS5wcmV2Wj1p LnByZXYsaS5uZXh0Wj1pLm5leHQsaT1pLm5leHR9d2hpbGUoaSE9PXQpO2kucHJldloubmV4 dFo9bnVsbCxpLnByZXZaPW51bGwsZnVuY3Rpb24odCl7dmFyIGUscixuLGksYSxvLHMsbCxj PTE7ZG97Zm9yKHI9dCx0PW51bGwsYT1udWxsLG89MDtyOyl7Zm9yKG8rKyxuPXIscz0wLGU9 MDtlPGMmJihzKyssbj1uLm5leHRaKTtlKyspO2ZvcihsPWM7cz4wfHxsPjAmJm47KTAhPT1z JiYoMD09PWx8fCFufHxyLno8PW4ueik/KGk9cixyPXIubmV4dFoscy0tKTooaT1uLG49bi5u ZXh0WixsLS0pLGE/YS5uZXh0Wj1pOnQ9aSxpLnByZXZaPWEsYT1pO3I9bn1hLm5leHRaPW51 bGwsYyo9Mn13aGlsZShvPjEpfShpKX0odCxuLGksZik7Zm9yKHZhciBwLG0sZz10O3QucHJl diE9PXQubmV4dDspaWYocD10LnByZXYsbT10Lm5leHQsZj9sKHQsbixpLGYpOnModCkpZS5w dXNoKHAuaS9yKSxlLnB1c2godC5pL3IpLGUucHVzaChtLmkvciksTSh0KSx0PW0ubmV4dCxn PW0ubmV4dDtlbHNlIGlmKCh0PW0pPT09Zyl7aD8xPT09aD9vKHQ9YyhhKHQpLGUsciksZSxy LG4saSxmLDIpOjI9PT1oJiZ1KHQsZSxyLG4saSxmKTpvKGEodCksZSxyLG4saSxmLDEpO2Jy ZWFrfX19ZnVuY3Rpb24gcyh0KXt2YXIgZT10LnByZXYscj10LG49dC5uZXh0O2lmKHkoZSxy LG4pPj0wKXJldHVybiExO2Zvcih2YXIgaT10Lm5leHQubmV4dDtpIT09dC5wcmV2Oyl7aWYo ZyhlLngsZS55LHIueCxyLnksbi54LG4ueSxpLngsaS55KSYmeShpLnByZXYsaSxpLm5leHQp Pj0wKXJldHVybiExO2k9aS5uZXh0fXJldHVybiEwfWZ1bmN0aW9uIGwodCxlLHIsbil7dmFy IGk9dC5wcmV2LGE9dCxvPXQubmV4dDtpZih5KGksYSxvKT49MClyZXR1cm4hMTtmb3IodmFy IHM9aS54PGEueD9pLng8by54P2kueDpvLng6YS54PG8ueD9hLng6by54LGw9aS55PGEueT9p Lnk8by55P2kueTpvLnk6YS55PG8ueT9hLnk6by55LGM9aS54PmEueD9pLng+by54P2kueDpv Lng6YS54Pm8ueD9hLng6by54LHU9aS55PmEueT9pLnk+by55P2kueTpvLnk6YS55Pm8ueT9h Lnk6by55LGY9ZChzLGwsZSxyLG4pLGg9ZChjLHUsZSxyLG4pLHA9dC5wcmV2WixtPXQubmV4 dFo7cCYmcC56Pj1mJiZtJiZtLno8PWg7KXtpZihwIT09dC5wcmV2JiZwIT09dC5uZXh0JiZn KGkueCxpLnksYS54LGEueSxvLngsby55LHAueCxwLnkpJiZ5KHAucHJldixwLHAubmV4dCk+ PTApcmV0dXJuITE7aWYocD1wLnByZXZaLG0hPT10LnByZXYmJm0hPT10Lm5leHQmJmcoaS54 LGkueSxhLngsYS55LG8ueCxvLnksbS54LG0ueSkmJnkobS5wcmV2LG0sbS5uZXh0KT49MCly ZXR1cm4hMTttPW0ubmV4dFp9Zm9yKDtwJiZwLno+PWY7KXtpZihwIT09dC5wcmV2JiZwIT09 dC5uZXh0JiZnKGkueCxpLnksYS54LGEueSxvLngsby55LHAueCxwLnkpJiZ5KHAucHJldixw LHAubmV4dCk+PTApcmV0dXJuITE7cD1wLnByZXZafWZvcig7bSYmbS56PD1oOyl7aWYobSE9 PXQucHJldiYmbSE9PXQubmV4dCYmZyhpLngsaS55LGEueCxhLnksby54LG8ueSxtLngsbS55 KSYmeShtLnByZXYsbSxtLm5leHQpPj0wKXJldHVybiExO209bS5uZXh0Wn1yZXR1cm4hMH1m dW5jdGlvbiBjKHQsZSxyKXt2YXIgbj10O2Rve3ZhciBpPW4ucHJldixvPW4ubmV4dC5uZXh0 OyF4KGksbykmJmIoaSxuLG4ubmV4dCxvKSYmVChpLG8pJiZUKG8saSkmJihlLnB1c2goaS5p L3IpLGUucHVzaChuLmkvciksZS5wdXNoKG8uaS9yKSxNKG4pLE0obi5uZXh0KSxuPXQ9byks bj1uLm5leHR9d2hpbGUobiE9PXQpO3JldHVybiBhKG4pfWZ1bmN0aW9uIHUodCxlLHIsbixp LHMpe3ZhciBsPXQ7ZG97Zm9yKHZhciBjPWwubmV4dC5uZXh0O2MhPT1sLnByZXY7KXtpZihs LmkhPT1jLmkmJnYobCxjKSl7dmFyIHU9ayhsLGMpO3JldHVybiBsPWEobCxsLm5leHQpLHU9 YSh1LHUubmV4dCksbyhsLGUscixuLGkscyksdm9pZCBvKHUsZSxyLG4saSxzKX1jPWMubmV4 dH1sPWwubmV4dH13aGlsZShsIT09dCl9ZnVuY3Rpb24gZih0LGUpe3JldHVybiB0LngtZS54 fWZ1bmN0aW9uIGgodCxlKXtpZihlPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbj1lLGk9dC54LGE9 dC55LG89LTEvMDtkb3tpZihhPD1uLnkmJmE+PW4ubmV4dC55JiZuLm5leHQueSE9PW4ueSl7 dmFyIHM9bi54KyhhLW4ueSkqKG4ubmV4dC54LW4ueCkvKG4ubmV4dC55LW4ueSk7aWYoczw9 aSYmcz5vKXtpZihvPXMscz09PWkpe2lmKGE9PT1uLnkpcmV0dXJuIG47aWYoYT09PW4ubmV4 dC55KXJldHVybiBuLm5leHR9cj1uLng8bi5uZXh0Lng/bjpuLm5leHR9fW49bi5uZXh0fXdo aWxlKG4hPT1lKTtpZighcilyZXR1cm4gbnVsbDtpZihpPT09bylyZXR1cm4gcjt2YXIgbCxj PXIsdT1yLngsZj1yLnksaD0xLzA7bj1yO2Rve2k+PW4ueCYmbi54Pj11JiZpIT09bi54JiZn KGE8Zj9pOm8sYSx1LGYsYTxmP286aSxhLG4ueCxuLnkpJiYobD1NYXRoLmFicyhhLW4ueSkv KGktbi54KSxUKG4sdCkmJihsPGh8fGw9PT1oJiYobi54PnIueHx8bi54PT09ci54JiZwKHIs bikpKSYmKHI9bixoPWwpKSxuPW4ubmV4dH13aGlsZShuIT09Yyk7cmV0dXJuIHJ9KHQsZSkp e3ZhciByPWsoZSx0KTthKGUsZS5uZXh0KSxhKHIsci5uZXh0KX19ZnVuY3Rpb24gcCh0LGUp e3JldHVybiB5KHQucHJldix0LGUucHJldik8MCYmeShlLm5leHQsdCx0Lm5leHQpPDB9ZnVu Y3Rpb24gZCh0LGUscixuLGkpe3JldHVybih0PTE0MzE2NTU3NjUmKCh0PTg1ODk5MzQ1OSYo KHQ9MjUyNjQ1MTM1JigodD0xNjcxMTkzNSYoKHQ9MzI3NjcqKHQtcikqaSl8dDw8OCkpfHQ8 PDQpKXx0PDwyKSl8dDw8MSkpfChlPTE0MzE2NTU3NjUmKChlPTg1ODk5MzQ1OSYoKGU9MjUy NjQ1MTM1JigoZT0xNjcxMTkzNSYoKGU9MzI3NjcqKGUtbikqaSl8ZTw8OCkpfGU8PDQpKXxl PDwyKSl8ZTw8MSkpPDwxfWZ1bmN0aW9uIG0odCl7dmFyIGU9dCxyPXQ7ZG97KGUueDxyLnh8 fGUueD09PXIueCYmZS55PHIueSkmJihyPWUpLGU9ZS5uZXh0fXdoaWxlKGUhPT10KTtyZXR1 cm4gcn1mdW5jdGlvbiBnKHQsZSxyLG4saSxhLG8scyl7cmV0dXJuKGktbykqKGUtcyktKHQt bykqKGEtcyk+PTAmJih0LW8pKihuLXMpLShyLW8pKihlLXMpPj0wJiYoci1vKSooYS1zKS0o aS1vKSoobi1zKT49MH1mdW5jdGlvbiB2KHQsZSl7cmV0dXJuIHQubmV4dC5pIT09ZS5pJiZ0 LnByZXYuaSE9PWUuaSYmIWZ1bmN0aW9uKHQsZSl7dmFyIHI9dDtkb3tpZihyLmkhPT10Lmkm JnIubmV4dC5pIT09dC5pJiZyLmkhPT1lLmkmJnIubmV4dC5pIT09ZS5pJiZiKHIsci5uZXh0 LHQsZSkpcmV0dXJuITA7cj1yLm5leHR9d2hpbGUociE9PXQpO3JldHVybiExfSh0LGUpJiYo VCh0LGUpJiZUKGUsdCkmJmZ1bmN0aW9uKHQsZSl7dmFyIHI9dCxuPSExLGk9KHQueCtlLngp LzIsYT0odC55K2UueSkvMjtkb3tyLnk+YSE9ci5uZXh0Lnk+YSYmci5uZXh0LnkhPT1yLnkm Jmk8KHIubmV4dC54LXIueCkqKGEtci55KS8oci5uZXh0Lnktci55KStyLngmJihuPSFuKSxy PXIubmV4dH13aGlsZShyIT09dCk7cmV0dXJuIG59KHQsZSkmJih5KHQucHJldix0LGUucHJl dil8fHkodCxlLnByZXYsZSkpfHx4KHQsZSkmJnkodC5wcmV2LHQsdC5uZXh0KT4wJiZ5KGUu cHJldixlLGUubmV4dCk+MCl9ZnVuY3Rpb24geSh0LGUscil7cmV0dXJuKGUueS10LnkpKihy LngtZS54KS0oZS54LXQueCkqKHIueS1lLnkpfWZ1bmN0aW9uIHgodCxlKXtyZXR1cm4gdC54 PT09ZS54JiZ0Lnk9PT1lLnl9ZnVuY3Rpb24gYih0LGUscixuKXt2YXIgaT13KHkodCxlLHIp KSxhPXcoeSh0LGUsbikpLG89dyh5KHIsbix0KSkscz13KHkocixuLGUpKTtyZXR1cm4gaSE9 PWEmJm8hPT1zfHwoISgwIT09aXx8IV8odCxyLGUpKXx8KCEoMCE9PWF8fCFfKHQsbixlKSl8 fCghKDAhPT1vfHwhXyhyLHQsbikpfHwhKDAhPT1zfHwhXyhyLGUsbikpKSkpfWZ1bmN0aW9u IF8odCxlLHIpe3JldHVybiBlLng8PU1hdGgubWF4KHQueCxyLngpJiZlLng+PU1hdGgubWlu KHQueCxyLngpJiZlLnk8PU1hdGgubWF4KHQueSxyLnkpJiZlLnk+PU1hdGgubWluKHQueSxy LnkpfWZ1bmN0aW9uIHcodCl7cmV0dXJuIHQ+MD8xOnQ8MD8tMTowfWZ1bmN0aW9uIFQodCxl KXtyZXR1cm4geSh0LnByZXYsdCx0Lm5leHQpPDA/eSh0LGUsdC5uZXh0KT49MCYmeSh0LHQu cHJldixlKT49MDp5KHQsZSx0LnByZXYpPDB8fHkodCx0Lm5leHQsZSk8MH1mdW5jdGlvbiBr KHQsZSl7dmFyIHI9bmV3IFModC5pLHQueCx0LnkpLG49bmV3IFMoZS5pLGUueCxlLnkpLGk9 dC5uZXh0LGE9ZS5wcmV2O3JldHVybiB0Lm5leHQ9ZSxlLnByZXY9dCxyLm5leHQ9aSxpLnBy ZXY9cixuLm5leHQ9cixyLnByZXY9bixhLm5leHQ9bixuLnByZXY9YSxufWZ1bmN0aW9uIEEo dCxlLHIsbil7dmFyIGk9bmV3IFModCxlLHIpO3JldHVybiBuPyhpLm5leHQ9bi5uZXh0LGku cHJldj1uLG4ubmV4dC5wcmV2PWksbi5uZXh0PWkpOihpLnByZXY9aSxpLm5leHQ9aSksaX1m dW5jdGlvbiBNKHQpe3QubmV4dC5wcmV2PXQucHJldix0LnByZXYubmV4dD10Lm5leHQsdC5w cmV2WiYmKHQucHJldloubmV4dFo9dC5uZXh0WiksdC5uZXh0WiYmKHQubmV4dFoucHJldlo9 dC5wcmV2Wil9ZnVuY3Rpb24gUyh0LGUscil7dGhpcy5pPXQsdGhpcy54PWUsdGhpcy55PXIs dGhpcy5wcmV2PW51bGwsdGhpcy5uZXh0PW51bGwsdGhpcy56PW51bGwsdGhpcy5wcmV2Wj1u dWxsLHRoaXMubmV4dFo9bnVsbCx0aGlzLnN0ZWluZXI9ITF9ZnVuY3Rpb24gRSh0LGUscixu KXtmb3IodmFyIGk9MCxhPWUsbz1yLW47YTxyO2ErPW4paSs9KHRbb10tdFthXSkqKHRbYSsx XSt0W28rMV0pLG89YTtyZXR1cm4gaX1lLmV4cG9ydHM9bixlLmV4cG9ydHMuZGVmYXVsdD1u LG4uZGV2aWF0aW9uPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPWUmJmUubGVuZ3RoLGE9aT9l WzBdKnI6dC5sZW5ndGgsbz1NYXRoLmFicyhFKHQsMCxhLHIpKTtpZihpKWZvcih2YXIgcz0w LGw9ZS5sZW5ndGg7czxsO3MrKyl7dmFyIGM9ZVtzXSpyLHU9czxsLTE/ZVtzKzFdKnI6dC5s ZW5ndGg7by09TWF0aC5hYnMoRSh0LGMsdSxyKSl9dmFyIGY9MDtmb3Iocz0wO3M8bi5sZW5n dGg7cys9Myl7dmFyIGg9bltzXSpyLHA9bltzKzFdKnIsZD1uW3MrMl0qcjtmKz1NYXRoLmFi cygodFtoXS10W2RdKSoodFtwKzFdLXRbaCsxXSktKHRbaF0tdFtwXSkqKHRbZCsxXS10W2gr MV0pKX1yZXR1cm4gMD09PW8mJjA9PT1mPzA6TWF0aC5hYnMoKGYtbykvbyl9LG4uZmxhdHRl bj1mdW5jdGlvbih0KXtmb3IodmFyIGU9dFswXVswXS5sZW5ndGgscj17dmVydGljZXM6W10s aG9sZXM6W10sZGltZW5zaW9uczplfSxuPTAsaT0wO2k8dC5sZW5ndGg7aSsrKXtmb3IodmFy IGE9MDthPHRbaV0ubGVuZ3RoO2ErKylmb3IodmFyIG89MDtvPGU7bysrKXIudmVydGljZXMu cHVzaCh0W2ldW2FdW29dKTtpPjAmJihuKz10W2ktMV0ubGVuZ3RoLHIuaG9sZXMucHVzaChu KSl9cmV0dXJuIHJ9fSx7fV0sMTMwOltmdW5jdGlvbih0LGUscil7dmFyIG49dCgic3Ryb25n bHktY29ubmVjdGVkLWNvbXBvbmVudHMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIg cixpPVtdLGE9W10sbz1bXSxzPXt9LGw9W107ZnVuY3Rpb24gYyh0KXt2YXIgZSxuLGk9ITE7 Zm9yKGEucHVzaCh0KSxvW3RdPSEwLGU9MDtlPGxbdF0ubGVuZ3RoO2UrKykobj1sW3RdW2Vd KT09PXI/KHUocixhKSxpPSEwKTpvW25dfHwoaT1jKG4pKTtpZihpKSFmdW5jdGlvbiB0KGUp e29bZV09ITEscy5oYXNPd25Qcm9wZXJ0eShlKSYmT2JqZWN0LmtleXMoc1tlXSkuZm9yRWFj aCgoZnVuY3Rpb24ocil7ZGVsZXRlIHNbZV1bcl0sb1tyXSYmdChyKX0pKX0odCk7ZWxzZSBm b3IoZT0wO2U8bFt0XS5sZW5ndGg7ZSsrKXtuPWxbdF1bZV07dmFyIGY9c1tuXTtmfHwoZj17 fSxzW25dPWYpLGZbbl09ITB9cmV0dXJuIGEucG9wKCksaX1mdW5jdGlvbiB1KHQscil7dmFy IG49W10uY29uY2F0KHIpLmNvbmNhdCh0KTtlP2UoYyk6aS5wdXNoKG4pfWZ1bmN0aW9uIGYo ZSl7IWZ1bmN0aW9uKGUpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXI8ZSYmKHRbcl09 W10pLHRbcl09dFtyXS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0Pj1lfSkpfShlKTtm b3IodmFyIHIsaT1uKHQpLmNvbXBvbmVudHMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4g dC5sZW5ndGg+MX0pKSxhPTEvMCxvPTA7bzxpLmxlbmd0aDtvKyspZm9yKHZhciBzPTA7czxp W29dLmxlbmd0aDtzKyspaVtvXVtzXTxhJiYoYT1pW29dW3NdLHI9byk7dmFyIGw9aVtyXTty ZXR1cm4hIWwmJntsZWFzdFZlcnRleDphLGFkakxpc3Q6dC5tYXAoKGZ1bmN0aW9uKHQsZSl7 cmV0dXJuLTE9PT1sLmluZGV4T2YoZSk/W106dC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVy bi0xIT09bC5pbmRleE9mKHQpfSkpfSkpfX1yPTA7Zm9yKHZhciBoPXQubGVuZ3RoO3I8aDsp e3ZhciBwPWYocik7aWYocj1wLmxlYXN0VmVydGV4LGw9cC5hZGpMaXN0KXtmb3IodmFyIGQ9 MDtkPGwubGVuZ3RoO2QrKylmb3IodmFyIG09MDttPGxbZF0ubGVuZ3RoO20rKyl7dmFyIGc9 bFtkXVttXTtvWytnXT0hMSxzW2ddPXt9fWMocikscis9MX1lbHNlIHI9aH1yZXR1cm4gZT92 b2lkIDA6aX19LHsic3Ryb25nbHktY29ubmVjdGVkLWNvbXBvbmVudHMiOjMwNn1dLDEzMTpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9vYmplY3QvdmFs aWQtdmFsdWUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzKS5sZW5ndGg9 MCx0aGlzfX0seyIuLi8uLi9vYmplY3QvdmFsaWQtdmFsdWUiOjE2Mn1dLDEzMjpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9dCgiLi9pcy1pbXBsZW1lbnRlZCIp KCk/QXJyYXkuZnJvbTp0KCIuL3NoaW0iKX0seyIuL2lzLWltcGxlbWVudGVkIjoxMzMsIi4v c2hpbSI6MTM0fV0sMTMzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0 cz1mdW5jdGlvbigpe3ZhciB0LGUscj1BcnJheS5mcm9tO3JldHVybiJmdW5jdGlvbiI9PXR5 cGVvZiByJiYoZT1yKHQ9WyJyYXoiLCJkd2EiXSksQm9vbGVhbihlJiZlIT09dCYmImR3YSI9 PT1lWzFdKSl9fSx7fV0sMTM0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoImVzNi1zeW1ib2wiKS5pdGVyYXRvcixpPXQoIi4uLy4uL2Z1bmN0aW9uL2lzLWFyZ3Vt ZW50cyIpLGE9dCgiLi4vLi4vZnVuY3Rpb24vaXMtZnVuY3Rpb24iKSxvPXQoIi4uLy4uL251 bWJlci90by1wb3MtaW50ZWdlciIpLHM9dCgiLi4vLi4vb2JqZWN0L3ZhbGlkLWNhbGxhYmxl IiksbD10KCIuLi8uLi9vYmplY3QvdmFsaWQtdmFsdWUiKSxjPXQoIi4uLy4uL29iamVjdC9p cy12YWx1ZSIpLHU9dCgiLi4vLi4vc3RyaW5nL2lzLXN0cmluZyIpLGY9QXJyYXkuaXNBcnJh eSxoPUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLHA9e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJh YmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOm51bGx9LGQ9T2JqZWN0LmRlZmluZVByb3BlcnR5 O2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZSxyLG0sZyx2LHkseCxiLF8sdyxUPWFyZ3Vt ZW50c1sxXSxrPWFyZ3VtZW50c1syXTtpZih0PU9iamVjdChsKHQpKSxjKFQpJiZzKFQpLHRo aXMmJnRoaXMhPT1BcnJheSYmYSh0aGlzKSllPXRoaXM7ZWxzZXtpZighVCl7aWYoaSh0KSly ZXR1cm4gMSE9PSh2PXQubGVuZ3RoKT9BcnJheS5hcHBseShudWxsLHQpOigoZz1uZXcgQXJy YXkoMSkpWzBdPXRbMF0sZyk7aWYoZih0KSl7Zm9yKGc9bmV3IEFycmF5KHY9dC5sZW5ndGgp LHI9MDtyPHY7KytyKWdbcl09dFtyXTtyZXR1cm4gZ319Zz1bXX1pZighZih0KSlpZih2b2lk IDAhPT0oXz10W25dKSl7Zm9yKHg9cyhfKS5jYWxsKHQpLGUmJihnPW5ldyBlKSxiPXgubmV4 dCgpLHI9MDshYi5kb25lOyl3PVQ/aC5jYWxsKFQsayxiLnZhbHVlLHIpOmIudmFsdWUsZT8o cC52YWx1ZT13LGQoZyxyLHApKTpnW3JdPXcsYj14Lm5leHQoKSwrK3I7dj1yfWVsc2UgaWYo dSh0KSl7Zm9yKHY9dC5sZW5ndGgsZSYmKGc9bmV3IGUpLHI9MCxtPTA7cjx2Oysrcil3PXRb cl0scisxPHYmJih5PXcuY2hhckNvZGVBdCgwKSk+PTU1Mjk2JiZ5PD01NjMxOSYmKHcrPXRb KytyXSksdz1UP2guY2FsbChULGssdyxtKTp3LGU/KHAudmFsdWU9dyxkKGcsbSxwKSk6Z1tt XT13LCsrbTt2PW19aWYodm9pZCAwPT09dilmb3Iodj1vKHQubGVuZ3RoKSxlJiYoZz1uZXcg ZSh2KSkscj0wO3I8djsrK3Ipdz1UP2guY2FsbChULGssdFtyXSxyKTp0W3JdLGU/KHAudmFs dWU9dyxkKGcscixwKSk6Z1tyXT13O3JldHVybiBlJiYocC52YWx1ZT1udWxsLGcubGVuZ3Ro PXYpLGd9fSx7Ii4uLy4uL2Z1bmN0aW9uL2lzLWFyZ3VtZW50cyI6MTM1LCIuLi8uLi9mdW5j dGlvbi9pcy1mdW5jdGlvbiI6MTM2LCIuLi8uLi9udW1iZXIvdG8tcG9zLWludGVnZXIiOjE0 MiwiLi4vLi4vb2JqZWN0L2lzLXZhbHVlIjoxNTEsIi4uLy4uL29iamVjdC92YWxpZC1jYWxs YWJsZSI6MTYwLCIuLi8uLi9vYmplY3QvdmFsaWQtdmFsdWUiOjE2MiwiLi4vLi4vc3RyaW5n L2lzLXN0cmluZyI6MTY2LCJlczYtc3ltYm9sIjoxNzV9XSwxMzU6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxpPW4uY2Fs bChmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpO2UuZXhwb3J0cz1mdW5jdGlvbih0 KXtyZXR1cm4gbi5jYWxsKHQpPT09aX19LHt9XSwxMzY6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxpPVJlZ0V4cC5wcm90 b3R5cGUudGVzdC5iaW5kKC9eW29iamVjdCBbQS1aYS16MC05XSpGdW5jdGlvbl0kLyk7ZS5l eHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0JiZpKG4uY2Fs bCh0KSl9fSx7fV0sMTM3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0 cz1mdW5jdGlvbigpe319LHt9XSwxMzg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 ZS5leHBvcnRzPXQoIi4vaXMtaW1wbGVtZW50ZWQiKSgpP01hdGguc2lnbjp0KCIuL3NoaW0i KX0seyIuL2lzLWltcGxlbWVudGVkIjoxMzksIi4vc2hpbSI6MTQwfV0sMTM5OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciB0PU1hdGgu c2lnbjtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmKDE9PT10KDEwKSYmLTE9PT10KC0y MCkpfX0se31dLDE0MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9 ZnVuY3Rpb24odCl7cmV0dXJuIHQ9TnVtYmVyKHQpLGlzTmFOKHQpfHwwPT09dD90OnQ+MD8x Oi0xfX0se31dLDE0MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIu Li9tYXRoL3NpZ24iKSxpPU1hdGguYWJzLGE9TWF0aC5mbG9vcjtlLmV4cG9ydHM9ZnVuY3Rp b24odCl7cmV0dXJuIGlzTmFOKHQpPzA6MCE9PSh0PU51bWJlcih0KSkmJmlzRmluaXRlKHQp P24odCkqYShpKHQpKTp0fX0seyIuLi9tYXRoL3NpZ24iOjEzOH1dLDE0MjpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL3RvLWludGVnZXIiKSxpPU1hdGgubWF4 O2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaSgwLG4odCkpfX0seyIuL3RvLWludGVn ZXIiOjE0MX1dLDE0MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIu L3ZhbGlkLWNhbGxhYmxlIiksaT10KCIuL3ZhbGlkLXZhbHVlIiksYT1GdW5jdGlvbi5wcm90 b3R5cGUuYmluZCxvPUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLHM9T2JqZWN0LmtleXMsbD1P YmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO2UuZXhwb3J0cz1mdW5jdGlv bih0LGUpe3JldHVybiBmdW5jdGlvbihyLGMpe3ZhciB1LGY9YXJndW1lbnRzWzJdLGg9YXJn dW1lbnRzWzNdO3JldHVybiByPU9iamVjdChpKHIpKSxuKGMpLHU9cyhyKSxoJiZ1LnNvcnQo ImZ1bmN0aW9uIj09dHlwZW9mIGg/YS5jYWxsKGgscik6dm9pZCAwKSwiZnVuY3Rpb24iIT10 eXBlb2YgdCYmKHQ9dVt0XSksby5jYWxsKHQsdSwoZnVuY3Rpb24odCxuKXtyZXR1cm4gbC5j YWxsKHIsdCk/by5jYWxsKGMsZixyW3RdLHQscixuKTplfSkpfX19LHsiLi92YWxpZC1jYWxs YWJsZSI6MTYwLCIuL3ZhbGlkLXZhbHVlIjoxNjJ9XSwxNDQ6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4vaXMtaW1wbGVtZW50ZWQiKSgpP09iamVjdC5h c3NpZ246dCgiLi9zaGltIil9LHsiLi9pcy1pbXBsZW1lbnRlZCI6MTQ1LCIuL3NoaW0iOjE0 Nn1dLDE0NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rp b24oKXt2YXIgdCxlPU9iamVjdC5hc3NpZ247cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUm JihlKHQ9e2ZvbzoicmF6In0se2JhcjoiZHdhIn0se3Ryenk6InRyenkifSksdC5mb28rdC5i YXIrdC50cnp5PT09InJhemR3YXRyenkiKX19LHt9XSwxNDY6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiLi4va2V5cyIpLGk9dCgiLi4vdmFsaWQtdmFsdWUiKSxh PU1hdGgubWF4O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLG8scyxsPWEoYXJndW1l bnRzLmxlbmd0aCwyKTtmb3IodD1PYmplY3QoaSh0KSkscz1mdW5jdGlvbihuKXt0cnl7dFtu XT1lW25dfWNhdGNoKHQpe3J8fChyPXQpfX0sbz0xO288bDsrK28pbihlPWFyZ3VtZW50c1tv XSkuZm9yRWFjaChzKTtpZih2b2lkIDAhPT1yKXRocm93IHI7cmV0dXJuIHR9fSx7Ii4uL2tl eXMiOjE1MiwiLi4vdmFsaWQtdmFsdWUiOjE2Mn1dLDE0NzpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9hcnJheS9mcm9tIiksaT10KCIuL2Fzc2lnbiIpLGE9 dCgiLi92YWxpZC12YWx1ZSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3Qo YSh0KSkscj1hcmd1bWVudHNbMV0sbz1PYmplY3QoYXJndW1lbnRzWzJdKTtpZihlIT09dCYm IXIpcmV0dXJuIGU7dmFyIHM9e307cmV0dXJuIHI/bihyLChmdW5jdGlvbihlKXsoby5lbnN1 cmV8fGUgaW4gdCkmJihzW2VdPXRbZV0pfSkpOmkocyx0KSxzfX0seyIuLi9hcnJheS9mcm9t IjoxMzIsIi4vYXNzaWduIjoxNDQsIi4vdmFsaWQtdmFsdWUiOjE2Mn1dLDE0ODpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbixpLGEsbyxzPU9iamVjdC5jcmVhdGU7dCgi Li9zZXQtcHJvdG90eXBlLW9mL2lzLWltcGxlbWVudGVkIikoKXx8KG49dCgiLi9zZXQtcHJv dG90eXBlLW9mL3NoaW0iKSksZS5leHBvcnRzPW4/MSE9PW4ubGV2ZWw/czooaT17fSxhPXt9 LG89e2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLHZhbHVlOnZv aWQgMH0sT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0LnByb3RvdHlwZSkuZm9y RWFjaCgoZnVuY3Rpb24odCl7YVt0XT0iX19wcm90b19fIiE9PXQ/bzp7Y29uZmlndXJhYmxl OiEwLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfX0pKSxPYmplY3Qu ZGVmaW5lUHJvcGVydGllcyhpLGEpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJudWxsUG9s eWZpbGwiLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMSx2YWx1 ZTppfSksZnVuY3Rpb24odCxlKXtyZXR1cm4gcyhudWxsPT09dD9pOnQsZSl9KTpzfSx7Ii4v c2V0LXByb3RvdHlwZS1vZi9pcy1pbXBsZW1lbnRlZCI6MTU4LCIuL3NldC1wcm90b3R5cGUt b2Yvc2hpbSI6MTU5fV0sMTQ5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhw b3J0cz10KCIuL19pdGVyYXRlIikoImZvckVhY2giKX0seyIuL19pdGVyYXRlIjoxNDN9XSwx NTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9pcy12YWx1ZSIp LGk9e2Z1bmN0aW9uOiEwLG9iamVjdDohMH07ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVy biBuKHQpJiZpW3R5cGVvZiB0XXx8ITF9fSx7Ii4vaXMtdmFsdWUiOjE1MX1dLDE1MTpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9mdW5jdGlvbi9ub29wIiko KTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1uJiZudWxsIT09dH19LHsiLi4v ZnVuY3Rpb24vbm9vcCI6MTM3fV0sMTUyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O2UuZXhwb3J0cz10KCIuL2lzLWltcGxlbWVudGVkIikoKT9PYmplY3Qua2V5czp0KCIuL3No aW0iKX0seyIuL2lzLWltcGxlbWVudGVkIjoxNTMsIi4vc2hpbSI6MTU0fV0sMTUzOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbigpe3RyeXtyZXR1 cm4gT2JqZWN0LmtleXMoInByaW1pdGl2ZSIpLCEwfWNhdGNoKHQpe3JldHVybiExfX19LHt9 XSwxNTQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vaXMtdmFs dWUiKSxpPU9iamVjdC5rZXlzO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaShuKHQp P09iamVjdCh0KTp0KX19LHsiLi4vaXMtdmFsdWUiOjE1MX1dLDE1NTpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL3ZhbGlkLWNhbGxhYmxlIiksaT10KCIuL2Zv ci1lYWNoIiksYT1GdW5jdGlvbi5wcm90b3R5cGUuY2FsbDtlLmV4cG9ydHM9ZnVuY3Rpb24o dCxlKXt2YXIgcj17fSxvPWFyZ3VtZW50c1syXTtyZXR1cm4gbihlKSxpKHQsKGZ1bmN0aW9u KHQsbixpLHMpe3Jbbl09YS5jYWxsKGUsbyx0LG4saSxzKX0pKSxyfX0seyIuL2Zvci1lYWNo IjoxNDksIi4vdmFsaWQtY2FsbGFibGUiOjE2MH1dLDE1NjpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2lzLXZhbHVlIiksaT1BcnJheS5wcm90b3R5cGUuZm9y RWFjaCxhPU9iamVjdC5jcmVhdGUsbz1mdW5jdGlvbih0LGUpe3ZhciByO2ZvcihyIGluIHQp ZVtyXT10W3JdfTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9YShudWxsKTtyZXR1cm4g aS5jYWxsKGFyZ3VtZW50cywoZnVuY3Rpb24odCl7bih0KSYmbyhPYmplY3QodCksZSl9KSks ZX19LHsiLi9pcy12YWx1ZSI6MTUxfV0sMTU3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO2UuZXhwb3J0cz10KCIuL2lzLWltcGxlbWVudGVkIikoKT9PYmplY3Quc2V0UHJvdG90 eXBlT2Y6dCgiLi9zaGltIil9LHsiLi9pcy1pbXBsZW1lbnRlZCI6MTU4LCIuL3NoaW0iOjE1 OX1dLDE1ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1PYmplY3QuY3Jl YXRlLGk9T2JqZWN0LmdldFByb3RvdHlwZU9mLGE9e307ZS5leHBvcnRzPWZ1bmN0aW9uKCl7 dmFyIHQ9T2JqZWN0LnNldFByb3RvdHlwZU9mLGU9YXJndW1lbnRzWzBdfHxuO3JldHVybiJm dW5jdGlvbiI9PXR5cGVvZiB0JiZpKHQoZShudWxsKSxhKSk9PT1hfX0se31dLDE1OTpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbixpPXQoIi4uL2lzLW9iamVjdCIpLGE9 dCgiLi4vdmFsaWQtdmFsdWUiKSxvPU9iamVjdC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZixz PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxsPXtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZToh MSx3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9O249ZnVuY3Rpb24odCxlKXtpZihhKHQpLG51 bGw9PT1lfHxpKGUpKXJldHVybiB0O3Rocm93IG5ldyBUeXBlRXJyb3IoIlByb3RvdHlwZSBt dXN0IGJlIG51bGwgb3IgYW4gb2JqZWN0Iil9LGUuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIg ZSxyO3JldHVybiB0PygyPT09dC5sZXZlbD90LnNldD8ocj10LnNldCxlPWZ1bmN0aW9uKHQs ZSl7cmV0dXJuIHIuY2FsbChuKHQsZSksZSksdH0pOmU9ZnVuY3Rpb24odCxlKXtyZXR1cm4g bih0LGUpLl9fcHJvdG9fXz1lLHR9OmU9ZnVuY3Rpb24gdChlLHIpe3ZhciBpO3JldHVybiBu KGUsciksKGk9by5jYWxsKHQubnVsbFBvbHlmaWxsLGUpKSYmZGVsZXRlIHQubnVsbFBvbHlm aWxsLl9fcHJvdG9fXyxudWxsPT09ciYmKHI9dC5udWxsUG9seWZpbGwpLGUuX19wcm90b19f PXIsaSYmcyh0Lm51bGxQb2x5ZmlsbCwiX19wcm90b19fIixsKSxlfSxPYmplY3QuZGVmaW5l UHJvcGVydHkoZSwibGV2ZWwiLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMSx3cml0 YWJsZTohMSx2YWx1ZTp0LmxldmVsfSkpOm51bGx9KGZ1bmN0aW9uKCl7dmFyIHQsZT1PYmpl Y3QuY3JlYXRlKG51bGwpLHI9e30sbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y KE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIpO2lmKG4pe3RyeXsodD1uLnNldCkuY2Fs bChlLHIpfWNhdGNoKHQpe31pZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk9PT1yKXJldHVy bntzZXQ6dCxsZXZlbDoyfX1yZXR1cm4gZS5fX3Byb3RvX189cixPYmplY3QuZ2V0UHJvdG90 eXBlT2YoZSk9PT1yP3tsZXZlbDoyfTooKGU9e30pLl9fcHJvdG9fXz1yLE9iamVjdC5nZXRQ cm90b3R5cGVPZihlKT09PXImJntsZXZlbDoxfSl9KCkpLHQoIi4uL2NyZWF0ZSIpfSx7Ii4u L2NyZWF0ZSI6MTQ4LCIuLi9pcy1vYmplY3QiOjE1MCwiLi4vdmFsaWQtdmFsdWUiOjE2Mn1d LDE2MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24o dCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcih0KyIgaXMg bm90IGEgZnVuY3Rpb24iKTtyZXR1cm4gdH19LHt9XSwxNjE6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiLi9pcy1vYmplY3QiKTtlLmV4cG9ydHM9ZnVuY3Rpb24o dCl7aWYoIW4odCkpdGhyb3cgbmV3IFR5cGVFcnJvcih0KyIgaXMgbm90IGFuIE9iamVjdCIp O3JldHVybiB0fX0seyIuL2lzLW9iamVjdCI6MTUwfV0sMTYyOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vaXMtdmFsdWUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24o dCl7aWYoIW4odCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IHVzZSBudWxsIG9yIHVu ZGVmaW5lZCIpO3JldHVybiB0fX0seyIuL2lzLXZhbHVlIjoxNTF9XSwxNjM6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4vaXMtaW1wbGVtZW50ZWQiKSgp P1N0cmluZy5wcm90b3R5cGUuY29udGFpbnM6dCgiLi9zaGltIil9LHsiLi9pcy1pbXBsZW1l bnRlZCI6MTY0LCIuL3NoaW0iOjE2NX1dLDE2NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj0icmF6ZHdhdHJ6eSI7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuImZ1 bmN0aW9uIj09dHlwZW9mIG4uY29udGFpbnMmJighMD09PW4uY29udGFpbnMoImR3YSIpJiYh MT09PW4uY29udGFpbnMoImZvbyIpKX19LHt9XSwxNjU6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49U3RyaW5nLnByb3RvdHlwZS5pbmRleE9mO2UuZXhwb3J0cz1mdW5j dGlvbih0KXtyZXR1cm4gbi5jYWxsKHRoaXMsdCxhcmd1bWVudHNbMV0pPi0xfX0se31dLDE2 NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1PYmplY3QucHJvdG90eXBl LnRvU3RyaW5nLGk9bi5jYWxsKCIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuInN0 cmluZyI9PXR5cGVvZiB0fHx0JiYib2JqZWN0Ij09dHlwZW9mIHQmJih0IGluc3RhbmNlb2Yg U3RyaW5nfHxuLmNhbGwodCk9PT1pKXx8ITF9fSx7fV0sMTY3OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPU9iamVjdC5jcmVhdGUobnVsbCksaT1NYXRoLnJhbmRvbTtl LmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdDtkb3t0PWkoKS50b1N0cmluZygzNikuc2xpY2Uo Mil9d2hpbGUoblt0XSk7cmV0dXJuIHR9fSx7fV0sMTY4OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuLGk9dCgiZXM1LWV4dC9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZiIp LGE9dCgiZXM1LWV4dC9zdHJpbmcvIy9jb250YWlucyIpLG89dCgiZCIpLHM9dCgiZXM2LXN5 bWJvbCIpLGw9dCgiLi8iKSxjPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtuPWUuZXhwb3J0cz1m dW5jdGlvbih0LGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIG4pKXRocm93IG5ldyBUeXBlRXJy b3IoIkNvbnN0cnVjdG9yIHJlcXVpcmVzICduZXcnIik7bC5jYWxsKHRoaXMsdCksZT1lP2Eu Y2FsbChlLCJrZXkrdmFsdWUiKT8ia2V5K3ZhbHVlIjphLmNhbGwoZSwia2V5Iik/ImtleSI6 InZhbHVlIjoidmFsdWUiLGModGhpcywiX19raW5kX18iLG8oIiIsZSkpfSxpJiZpKG4sbCks ZGVsZXRlIG4ucHJvdG90eXBlLmNvbnN0cnVjdG9yLG4ucHJvdG90eXBlPU9iamVjdC5jcmVh dGUobC5wcm90b3R5cGUse19yZXNvbHZlOm8oKGZ1bmN0aW9uKHQpe3JldHVybiJ2YWx1ZSI9 PT10aGlzLl9fa2luZF9fP3RoaXMuX19saXN0X19bdF06ImtleSt2YWx1ZSI9PT10aGlzLl9f a2luZF9fP1t0LHRoaXMuX19saXN0X19bdF1dOnR9KSl9KSxjKG4ucHJvdG90eXBlLHMudG9T dHJpbmdUYWcsbygiYyIsIkFycmF5IEl0ZXJhdG9yIikpfSx7Ii4vIjoxNzEsZDoxMDYsImVz NS1leHQvb2JqZWN0L3NldC1wcm90b3R5cGUtb2YiOjE1NywiZXM1LWV4dC9zdHJpbmcvIy9j b250YWlucyI6MTYzLCJlczYtc3ltYm9sIjoxNzV9XSwxNjk6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiZXM1LWV4dC9mdW5jdGlvbi9pcy1hcmd1bWVudHMiKSxp PXQoImVzNS1leHQvb2JqZWN0L3ZhbGlkLWNhbGxhYmxlIiksYT10KCJlczUtZXh0L3N0cmlu Zy9pcy1zdHJpbmciKSxvPXQoIi4vZ2V0Iikscz1BcnJheS5pc0FycmF5LGw9RnVuY3Rpb24u cHJvdG90eXBlLmNhbGwsYz1BcnJheS5wcm90b3R5cGUuc29tZTtlLmV4cG9ydHM9ZnVuY3Rp b24odCxlKXt2YXIgcix1LGYsaCxwLGQsbSxnLHY9YXJndW1lbnRzWzJdO2lmKHModCl8fG4o dCk/cj0iYXJyYXkiOmEodCk/cj0ic3RyaW5nIjp0PW8odCksaShlKSxmPWZ1bmN0aW9uKCl7 aD0hMH0sImFycmF5IiE9PXIpaWYoInN0cmluZyIhPT1yKWZvcih1PXQubmV4dCgpOyF1LmRv bmU7KXtpZihsLmNhbGwoZSx2LHUudmFsdWUsZiksaClyZXR1cm47dT10Lm5leHQoKX1lbHNl IGZvcihkPXQubGVuZ3RoLHA9MDtwPGQmJihtPXRbcF0scCsxPGQmJihnPW0uY2hhckNvZGVB dCgwKSk+PTU1Mjk2JiZnPD01NjMxOSYmKG0rPXRbKytwXSksbC5jYWxsKGUsdixtLGYpLCFo KTsrK3ApO2Vsc2UgYy5jYWxsKHQsKGZ1bmN0aW9uKHQpe3JldHVybiBsLmNhbGwoZSx2LHQs ZiksaH0pKX19LHsiLi9nZXQiOjE3MCwiZXM1LWV4dC9mdW5jdGlvbi9pcy1hcmd1bWVudHMi OjEzNSwiZXM1LWV4dC9vYmplY3QvdmFsaWQtY2FsbGFibGUiOjE2MCwiZXM1LWV4dC9zdHJp bmcvaXMtc3RyaW5nIjoxNjZ9XSwxNzA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiZXM1LWV4dC9mdW5jdGlvbi9pcy1hcmd1bWVudHMiKSxpPXQoImVzNS1leHQv c3RyaW5nL2lzLXN0cmluZyIpLGE9dCgiLi9hcnJheSIpLG89dCgiLi9zdHJpbmciKSxzPXQo Ii4vdmFsaWQtaXRlcmFibGUiKSxsPXQoImVzNi1zeW1ib2wiKS5pdGVyYXRvcjtlLmV4cG9y dHM9ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHModClbbF0/dFtsXSgp Om4odCk/bmV3IGEodCk6aSh0KT9uZXcgbyh0KTpuZXcgYSh0KX19LHsiLi9hcnJheSI6MTY4 LCIuL3N0cmluZyI6MTczLCIuL3ZhbGlkLWl0ZXJhYmxlIjoxNzQsImVzNS1leHQvZnVuY3Rp b24vaXMtYXJndW1lbnRzIjoxMzUsImVzNS1leHQvc3RyaW5nL2lzLXN0cmluZyI6MTY2LCJl czYtc3ltYm9sIjoxNzV9XSwxNzE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG4saT10KCJlczUtZXh0L2FycmF5LyMvY2xlYXIiKSxhPXQoImVzNS1leHQvb2JqZWN0L2Fz c2lnbiIpLG89dCgiZXM1LWV4dC9vYmplY3QvdmFsaWQtY2FsbGFibGUiKSxzPXQoImVzNS1l eHQvb2JqZWN0L3ZhbGlkLXZhbHVlIiksbD10KCJkIiksYz10KCJkL2F1dG8tYmluZCIpLHU9 dCgiZXM2LXN5bWJvbCIpLGY9T2JqZWN0LmRlZmluZVByb3BlcnR5LGg9T2JqZWN0LmRlZmlu ZVByb3BlcnRpZXM7ZS5leHBvcnRzPW49ZnVuY3Rpb24odCxlKXtpZighKHRoaXMgaW5zdGFu Y2VvZiBuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDb25zdHJ1Y3RvciByZXF1aXJlcyAnbmV3 JyIpO2godGhpcyx7X19saXN0X186bCgidyIscyh0KSksX19jb250ZXh0X186bCgidyIsZSks X19uZXh0SW5kZXhfXzpsKCJ3IiwwKX0pLGUmJihvKGUub24pLGUub24oIl9hZGQiLHRoaXMu X29uQWRkKSxlLm9uKCJfZGVsZXRlIix0aGlzLl9vbkRlbGV0ZSksZS5vbigiX2NsZWFyIix0 aGlzLl9vbkNsZWFyKSl9LGRlbGV0ZSBuLnByb3RvdHlwZS5jb25zdHJ1Y3RvcixoKG4ucHJv dG90eXBlLGEoe19uZXh0OmwoKGZ1bmN0aW9uKCl7dmFyIHQ7aWYodGhpcy5fX2xpc3RfXyly ZXR1cm4gdGhpcy5fX3JlZG9fXyYmdm9pZCAwIT09KHQ9dGhpcy5fX3JlZG9fXy5zaGlmdCgp KT90OnRoaXMuX19uZXh0SW5kZXhfXzx0aGlzLl9fbGlzdF9fLmxlbmd0aD90aGlzLl9fbmV4 dEluZGV4X18rKzp2b2lkIHRoaXMuX3VuQmluZCgpfSkpLG5leHQ6bCgoZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5fY3JlYXRlUmVzdWx0KHRoaXMuX25leHQoKSl9KSksX2NyZWF0ZVJlc3Vs dDpsKChmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dD97ZG9uZTohMCx2YWx1ZTp2b2lk IDB9Ontkb25lOiExLHZhbHVlOnRoaXMuX3Jlc29sdmUodCl9fSkpLF9yZXNvbHZlOmwoKGZ1 bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fbGlzdF9fW3RdfSkpLF91bkJpbmQ6bCgoZnVuY3Rp b24oKXt0aGlzLl9fbGlzdF9fPW51bGwsZGVsZXRlIHRoaXMuX19yZWRvX18sdGhpcy5fX2Nv bnRleHRfXyYmKHRoaXMuX19jb250ZXh0X18ub2ZmKCJfYWRkIix0aGlzLl9vbkFkZCksdGhp cy5fX2NvbnRleHRfXy5vZmYoIl9kZWxldGUiLHRoaXMuX29uRGVsZXRlKSx0aGlzLl9fY29u dGV4dF9fLm9mZigiX2NsZWFyIix0aGlzLl9vbkNsZWFyKSx0aGlzLl9fY29udGV4dF9fPW51 bGwpfSkpLHRvU3RyaW5nOmwoKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgIisodGhpc1t1 LnRvU3RyaW5nVGFnXXx8Ik9iamVjdCIpKyJdIn0pKX0sYyh7X29uQWRkOmwoKGZ1bmN0aW9u KHQpe3Q+PXRoaXMuX19uZXh0SW5kZXhfX3x8KCsrdGhpcy5fX25leHRJbmRleF9fLHRoaXMu X19yZWRvX18/KHRoaXMuX19yZWRvX18uZm9yRWFjaCgoZnVuY3Rpb24oZSxyKXtlPj10JiYo dGhpcy5fX3JlZG9fX1tyXT0rK2UpfSksdGhpcyksdGhpcy5fX3JlZG9fXy5wdXNoKHQpKTpm KHRoaXMsIl9fcmVkb19fIixsKCJjIixbdF0pKSl9KSksX29uRGVsZXRlOmwoKGZ1bmN0aW9u KHQpe3ZhciBlO3Q+PXRoaXMuX19uZXh0SW5kZXhfX3x8KC0tdGhpcy5fX25leHRJbmRleF9f LHRoaXMuX19yZWRvX18mJigtMSE9PShlPXRoaXMuX19yZWRvX18uaW5kZXhPZih0KSkmJnRo aXMuX19yZWRvX18uc3BsaWNlKGUsMSksdGhpcy5fX3JlZG9fXy5mb3JFYWNoKChmdW5jdGlv bihlLHIpe2U+dCYmKHRoaXMuX19yZWRvX19bcl09LS1lKX0pLHRoaXMpKSl9KSksX29uQ2xl YXI6bCgoZnVuY3Rpb24oKXt0aGlzLl9fcmVkb19fJiZpLmNhbGwodGhpcy5fX3JlZG9fXyks dGhpcy5fX25leHRJbmRleF9fPTB9KSl9KSkpLGYobi5wcm90b3R5cGUsdS5pdGVyYXRvcixs KChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpKX0se2Q6MTA2LCJkL2F1dG8tYmluZCI6MTA1 LCJlczUtZXh0L2FycmF5LyMvY2xlYXIiOjEzMSwiZXM1LWV4dC9vYmplY3QvYXNzaWduIjox NDQsImVzNS1leHQvb2JqZWN0L3ZhbGlkLWNhbGxhYmxlIjoxNjAsImVzNS1leHQvb2JqZWN0 L3ZhbGlkLXZhbHVlIjoxNjIsImVzNi1zeW1ib2wiOjE3NX1dLDE3MjpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJlczUtZXh0L2Z1bmN0aW9uL2lzLWFyZ3VtZW50 cyIpLGk9dCgiZXM1LWV4dC9vYmplY3QvaXMtdmFsdWUiKSxhPXQoImVzNS1leHQvc3RyaW5n L2lzLXN0cmluZyIpLG89dCgiZXM2LXN5bWJvbCIpLml0ZXJhdG9yLHM9QXJyYXkuaXNBcnJh eTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuISFpKHQpJiYoISFzKHQpfHwoISFhKHQp fHwoISFuKHQpfHwiZnVuY3Rpb24iPT10eXBlb2YgdFtvXSkpKX19LHsiZXM1LWV4dC9mdW5j dGlvbi9pcy1hcmd1bWVudHMiOjEzNSwiZXM1LWV4dC9vYmplY3QvaXMtdmFsdWUiOjE1MSwi ZXM1LWV4dC9zdHJpbmcvaXMtc3RyaW5nIjoxNjYsImVzNi1zeW1ib2wiOjE3NX1dLDE3Mzpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbixpPXQoImVzNS1leHQvb2JqZWN0 L3NldC1wcm90b3R5cGUtb2YiKSxhPXQoImQiKSxvPXQoImVzNi1zeW1ib2wiKSxzPXQoIi4v IiksbD1PYmplY3QuZGVmaW5lUHJvcGVydHk7bj1lLmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYo ISh0aGlzIGluc3RhbmNlb2YgbikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ29uc3RydWN0b3Ig cmVxdWlyZXMgJ25ldyciKTt0PVN0cmluZyh0KSxzLmNhbGwodGhpcyx0KSxsKHRoaXMsIl9f bGVuZ3RoX18iLGEoIiIsdC5sZW5ndGgpKX0saSYmaShuLHMpLGRlbGV0ZSBuLnByb3RvdHlw ZS5jb25zdHJ1Y3RvcixuLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHMucHJvdG90eXBlLHtf bmV4dDphKChmdW5jdGlvbigpe2lmKHRoaXMuX19saXN0X18pcmV0dXJuIHRoaXMuX19uZXh0 SW5kZXhfXzx0aGlzLl9fbGVuZ3RoX18/dGhpcy5fX25leHRJbmRleF9fKys6dm9pZCB0aGlz Ll91bkJpbmQoKX0pKSxfcmVzb2x2ZTphKChmdW5jdGlvbih0KXt2YXIgZSxyPXRoaXMuX19s aXN0X19bdF07cmV0dXJuIHRoaXMuX19uZXh0SW5kZXhfXz09PXRoaXMuX19sZW5ndGhfXz9y OihlPXIuY2hhckNvZGVBdCgwKSk+PTU1Mjk2JiZlPD01NjMxOT9yK3RoaXMuX19saXN0X19b dGhpcy5fX25leHRJbmRleF9fKytdOnJ9KSl9KSxsKG4ucHJvdG90eXBlLG8udG9TdHJpbmdU YWcsYSgiYyIsIlN0cmluZyBJdGVyYXRvciIpKX0seyIuLyI6MTcxLGQ6MTA2LCJlczUtZXh0 L29iamVjdC9zZXQtcHJvdG90eXBlLW9mIjoxNTcsImVzNi1zeW1ib2wiOjE3NX1dLDE3NDpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2lzLWl0ZXJhYmxlIik7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCFuKHQpKXRocm93IG5ldyBUeXBlRXJyb3IodCsi IGlzIG5vdCBpdGVyYWJsZSIpO3JldHVybiB0fX0seyIuL2lzLWl0ZXJhYmxlIjoxNzJ9XSwx NzU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXQoIi4vaXMtaW1w bGVtZW50ZWQiKSgpP3QoImV4dC9nbG9iYWwtdGhpcyIpLlN5bWJvbDp0KCIuL3BvbHlmaWxs Iil9LHsiLi9pcy1pbXBsZW1lbnRlZCI6MTc2LCIuL3BvbHlmaWxsIjoxODEsImV4dC9nbG9i YWwtdGhpcyI6MTg4fV0sMTc2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoImV4dC9nbG9iYWwtdGhpcyIpLGk9e29iamVjdDohMCxzeW1ib2w6ITB9O2UuZXhwb3J0 cz1mdW5jdGlvbigpe3ZhciB0LGU9bi5TeW1ib2w7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUp cmV0dXJuITE7dD1lKCJ0ZXN0IHN5bWJvbCIpO3RyeXtTdHJpbmcodCl9Y2F0Y2godCl7cmV0 dXJuITF9cmV0dXJuISFpW3R5cGVvZiBlLml0ZXJhdG9yXSYmKCEhaVt0eXBlb2YgZS50b1By aW1pdGl2ZV0mJiEhaVt0eXBlb2YgZS50b1N0cmluZ1RhZ10pfX0seyJleHQvZ2xvYmFsLXRo aXMiOjE4OH1dLDE3NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9 ZnVuY3Rpb24odCl7cmV0dXJuISF0JiYoInN5bWJvbCI9PXR5cGVvZiB0fHwhIXQuY29uc3Ry dWN0b3ImJigiU3ltYm9sIj09PXQuY29uc3RydWN0b3IubmFtZSYmIlN5bWJvbCI9PT10W3Qu Y29uc3RydWN0b3IudG9TdHJpbmdUYWddKSl9fSx7fV0sMTc4OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoImQiKSxpPU9iamVjdC5jcmVhdGUsYT1PYmplY3QuZGVm aW5lUHJvcGVydHksbz1PYmplY3QucHJvdG90eXBlLHM9aShudWxsKTtlLmV4cG9ydHM9ZnVu Y3Rpb24odCl7Zm9yKHZhciBlLHIsaT0wO3NbdCsoaXx8IiIpXTspKytpO3JldHVybiBzW3Qr PWl8fCIiXT0hMCxhKG8sZT0iQEAiK3Qsbi5ncyhudWxsLChmdW5jdGlvbih0KXtyfHwocj0h MCxhKHRoaXMsZSxuKHQpKSxyPSExKX0pKSksZX19LHtkOjEwNn1dLDE3OTpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkIiksaT10KCJleHQvZ2xvYmFsLXRoaXMi KS5TeW1ib2w7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZGVmaW5lUHJv cGVydGllcyh0LHtoYXNJbnN0YW5jZTpuKCIiLGkmJmkuaGFzSW5zdGFuY2V8fHQoImhhc0lu c3RhbmNlIikpLGlzQ29uY2F0U3ByZWFkYWJsZTpuKCIiLGkmJmkuaXNDb25jYXRTcHJlYWRh YmxlfHx0KCJpc0NvbmNhdFNwcmVhZGFibGUiKSksaXRlcmF0b3I6bigiIixpJiZpLml0ZXJh dG9yfHx0KCJpdGVyYXRvciIpKSxtYXRjaDpuKCIiLGkmJmkubWF0Y2h8fHQoIm1hdGNoIikp LHJlcGxhY2U6bigiIixpJiZpLnJlcGxhY2V8fHQoInJlcGxhY2UiKSksc2VhcmNoOm4oIiIs aSYmaS5zZWFyY2h8fHQoInNlYXJjaCIpKSxzcGVjaWVzOm4oIiIsaSYmaS5zcGVjaWVzfHx0 KCJzcGVjaWVzIikpLHNwbGl0Om4oIiIsaSYmaS5zcGxpdHx8dCgic3BsaXQiKSksdG9Qcmlt aXRpdmU6bigiIixpJiZpLnRvUHJpbWl0aXZlfHx0KCJ0b1ByaW1pdGl2ZSIpKSx0b1N0cmlu Z1RhZzpuKCIiLGkmJmkudG9TdHJpbmdUYWd8fHQoInRvU3RyaW5nVGFnIikpLHVuc2NvcGFi bGVzOm4oIiIsaSYmaS51bnNjb3BhYmxlc3x8dCgidW5zY29wYWJsZXMiKSl9KX19LHtkOjEw NiwiZXh0L2dsb2JhbC10aGlzIjoxODh9XSwxODA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiZCIpLGk9dCgiLi4vLi4vLi4vdmFsaWRhdGUtc3ltYm9sIiksYT1P YmplY3QuY3JlYXRlKG51bGwpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0 LmRlZmluZVByb3BlcnRpZXModCx7Zm9yOm4oKGZ1bmN0aW9uKGUpe3JldHVybiBhW2VdP2Fb ZV06YVtlXT10KFN0cmluZyhlKSl9KSksa2V5Rm9yOm4oKGZ1bmN0aW9uKHQpe3ZhciBlO2Zv cihlIGluIGkodCksYSlpZihhW2VdPT09dClyZXR1cm4gZX0pKX0pfX0seyIuLi8uLi8uLi92 YWxpZGF0ZS1zeW1ib2wiOjE4MixkOjEwNn1dLDE4MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbixpLGEsbz10KCJkIikscz10KCIuL3ZhbGlkYXRlLXN5bWJvbCIpLGw9 dCgiZXh0L2dsb2JhbC10aGlzIikuU3ltYm9sLGM9dCgiLi9saWIvcHJpdmF0ZS9nZW5lcmF0 ZS1uYW1lIiksdT10KCIuL2xpYi9wcml2YXRlL3NldHVwL3N0YW5kYXJkLXN5bWJvbHMiKSxm PXQoIi4vbGliL3ByaXZhdGUvc2V0dXAvc3ltYm9sLXJlZ2lzdHJ5IiksaD1PYmplY3QuY3Jl YXRlLHA9T2JqZWN0LmRlZmluZVByb3BlcnRpZXMsZD1PYmplY3QuZGVmaW5lUHJvcGVydHk7 aWYoImZ1bmN0aW9uIj09dHlwZW9mIGwpdHJ5e1N0cmluZyhsKCkpLGE9ITB9Y2F0Y2godCl7 fWVsc2UgbD1udWxsO2k9ZnVuY3Rpb24odCl7aWYodGhpcyBpbnN0YW5jZW9mIGkpdGhyb3cg bmV3IFR5cGVFcnJvcigiU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yIik7cmV0dXJuIG4o dCl9LGUuZXhwb3J0cz1uPWZ1bmN0aW9uIHQoZSl7dmFyIHI7aWYodGhpcyBpbnN0YW5jZW9m IHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yIik7 cmV0dXJuIGE/bChlKToocj1oKGkucHJvdG90eXBlKSxlPXZvaWQgMD09PWU/IiI6U3RyaW5n KGUpLHAocix7X19kZXNjcmlwdGlvbl9fOm8oIiIsZSksX19uYW1lX186bygiIixjKGUpKX0p KX0sdShuKSxmKG4pLHAoaS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOm8obiksdG9TdHJpbmc6 bygiIiwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX25hbWVfX30pKX0pLHAobi5wcm90b3R5 cGUse3RvU3RyaW5nOm8oKGZ1bmN0aW9uKCl7cmV0dXJuIlN5bWJvbCAoIitzKHRoaXMpLl9f ZGVzY3JpcHRpb25fXysiKSJ9KSksdmFsdWVPZjpvKChmdW5jdGlvbigpe3JldHVybiBzKHRo aXMpfSkpfSksZChuLnByb3RvdHlwZSxuLnRvUHJpbWl0aXZlLG8oIiIsKGZ1bmN0aW9uKCl7 dmFyIHQ9cyh0aGlzKTtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHQ/dDp0LnRvU3RyaW5nKCl9 KSkpLGQobi5wcm90b3R5cGUsbi50b1N0cmluZ1RhZyxvKCJjIiwiU3ltYm9sIikpLGQoaS5w cm90b3R5cGUsbi50b1N0cmluZ1RhZyxvKCJjIixuLnByb3RvdHlwZVtuLnRvU3RyaW5nVGFn XSkpLGQoaS5wcm90b3R5cGUsbi50b1ByaW1pdGl2ZSxvKCJjIixuLnByb3RvdHlwZVtuLnRv UHJpbWl0aXZlXSkpfSx7Ii4vbGliL3ByaXZhdGUvZ2VuZXJhdGUtbmFtZSI6MTc4LCIuL2xp Yi9wcml2YXRlL3NldHVwL3N0YW5kYXJkLXN5bWJvbHMiOjE3OSwiLi9saWIvcHJpdmF0ZS9z ZXR1cC9zeW1ib2wtcmVnaXN0cnkiOjE4MCwiLi92YWxpZGF0ZS1zeW1ib2wiOjE4MixkOjEw NiwiZXh0L2dsb2JhbC10aGlzIjoxODh9XSwxODI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiLi9pcy1zeW1ib2wiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYo IW4odCkpdGhyb3cgbmV3IFR5cGVFcnJvcih0KyIgaXMgbm90IGEgc3ltYm9sIik7cmV0dXJu IHR9fSx7Ii4vaXMtc3ltYm9sIjoxNzd9XSwxODM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZS5leHBvcnRzPXQoIi4vaXMtaW1wbGVtZW50ZWQiKSgpP1dlYWtNYXA6dCgiLi9w b2x5ZmlsbCIpfSx7Ii4vaXMtaW1wbGVtZW50ZWQiOjE4NCwiLi9wb2x5ZmlsbCI6MTg2fV0s MTg0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbigp e3ZhciB0LGU7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFdlYWtNYXApcmV0dXJuITE7dHJ5e3Q9 bmV3IFdlYWtNYXAoW1tlPXt9LCJvbmUiXSxbe30sInR3byJdLFt7fSwidGhyZWUiXV0pfWNh dGNoKHQpe3JldHVybiExfXJldHVybiJbb2JqZWN0IFdlYWtNYXBdIj09PVN0cmluZyh0KSYm KCJmdW5jdGlvbiI9PXR5cGVvZiB0LnNldCYmKHQuc2V0KHt9LDEpPT09dCYmKCJmdW5jdGlv biI9PXR5cGVvZiB0LmRlbGV0ZSYmKCJmdW5jdGlvbiI9PXR5cGVvZiB0LmhhcyYmIm9uZSI9 PT10LmdldChlKSkpKSl9fSx7fV0sMTg1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O2UuZXhwb3J0cz0iZnVuY3Rpb24iPT10eXBlb2YgV2Vha01hcCYmIltvYmplY3QgV2Vha01h cF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBXZWFrTWFwKX0se31d LDE4NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbixpPXQoImVzNS1leHQv b2JqZWN0L2lzLXZhbHVlIiksYT10KCJlczUtZXh0L29iamVjdC9zZXQtcHJvdG90eXBlLW9m Iiksbz10KCJlczUtZXh0L29iamVjdC92YWxpZC1vYmplY3QiKSxzPXQoImVzNS1leHQvb2Jq ZWN0L3ZhbGlkLXZhbHVlIiksbD10KCJlczUtZXh0L3N0cmluZy9yYW5kb20tdW5pcSIpLGM9 dCgiZCIpLHU9dCgiZXM2LWl0ZXJhdG9yL2dldCIpLGY9dCgiZXM2LWl0ZXJhdG9yL2Zvci1v ZiIpLGg9dCgiZXM2LXN5bWJvbCIpLnRvU3RyaW5nVGFnLHA9dCgiLi9pcy1uYXRpdmUtaW1w bGVtZW50ZWQiKSxkPUFycmF5LmlzQXJyYXksbT1PYmplY3QuZGVmaW5lUHJvcGVydHksZz1P YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHY9T2JqZWN0LmdldFByb3RvdHlwZU9m O2UuZXhwb3J0cz1uPWZ1bmN0aW9uKCl7dmFyIHQsZT1hcmd1bWVudHNbMF07aWYoISh0aGlz IGluc3RhbmNlb2YgbikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ29uc3RydWN0b3IgcmVxdWly ZXMgJ25ldyciKTtyZXR1cm4gdD1wJiZhJiZXZWFrTWFwIT09bj9hKG5ldyBXZWFrTWFwLHYo dGhpcykpOnRoaXMsaShlKSYmKGQoZSl8fChlPXUoZSkpKSxtKHQsIl9fd2Vha01hcERhdGFf XyIsYygiYyIsIiR3ZWFrTWFwJCIrbCgpKSksZT8oZihlLChmdW5jdGlvbihlKXtzKGUpLHQu c2V0KGVbMF0sZVsxXSl9KSksdCk6dH0scCYmKGEmJmEobixXZWFrTWFwKSxuLnByb3RvdHlw ZT1PYmplY3QuY3JlYXRlKFdlYWtNYXAucHJvdG90eXBlLHtjb25zdHJ1Y3RvcjpjKG4pfSkp LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG4ucHJvdG90eXBlLHtkZWxldGU6YygoZnVuY3Rp b24odCl7cmV0dXJuISFnLmNhbGwobyh0KSx0aGlzLl9fd2Vha01hcERhdGFfXykmJihkZWxl dGUgdFt0aGlzLl9fd2Vha01hcERhdGFfX10sITApfSkpLGdldDpjKChmdW5jdGlvbih0KXtp ZihnLmNhbGwobyh0KSx0aGlzLl9fd2Vha01hcERhdGFfXykpcmV0dXJuIHRbdGhpcy5fX3dl YWtNYXBEYXRhX19dfSkpLGhhczpjKChmdW5jdGlvbih0KXtyZXR1cm4gZy5jYWxsKG8odCks dGhpcy5fX3dlYWtNYXBEYXRhX18pfSkpLHNldDpjKChmdW5jdGlvbih0LGUpe3JldHVybiBt KG8odCksdGhpcy5fX3dlYWtNYXBEYXRhX18sYygiYyIsZSkpLHRoaXN9KSksdG9TdHJpbmc6 YygoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBXZWFrTWFwXSJ9KSl9KSxtKG4ucHJvdG90 eXBlLGgsYygiYyIsIldlYWtNYXAiKSl9LHsiLi9pcy1uYXRpdmUtaW1wbGVtZW50ZWQiOjE4 NSxkOjEwNiwiZXM1LWV4dC9vYmplY3QvaXMtdmFsdWUiOjE1MSwiZXM1LWV4dC9vYmplY3Qv c2V0LXByb3RvdHlwZS1vZiI6MTU3LCJlczUtZXh0L29iamVjdC92YWxpZC1vYmplY3QiOjE2 MSwiZXM1LWV4dC9vYmplY3QvdmFsaWQtdmFsdWUiOjE2MiwiZXM1LWV4dC9zdHJpbmcvcmFu ZG9tLXVuaXEiOjE2NywiZXM2LWl0ZXJhdG9yL2Zvci1vZiI6MTY5LCJlczYtaXRlcmF0b3Iv Z2V0IjoxNzAsImVzNi1zeW1ib2wiOjE3NX1dLDE4NzpbZnVuY3Rpb24odCxlLHIpe3ZhciBu PWZ1bmN0aW9uKCl7aWYoIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmKXJldHVybiBzZWxm O2lmKCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cpcmV0dXJuIHdpbmRvdzt0aHJv dyBuZXcgRXJyb3IoIlVuYWJsZSB0byByZXNvbHZlIGdsb2JhbCBgdGhpc2AiKX07ZS5leHBv cnRzPWZ1bmN0aW9uKCl7aWYodGhpcylyZXR1cm4gdGhpczt0cnl7T2JqZWN0LmRlZmluZVBy b3BlcnR5KE9iamVjdC5wcm90b3R5cGUsIl9fZ2xvYmFsX18iLHtnZXQ6ZnVuY3Rpb24oKXty ZXR1cm4gdGhpc30sY29uZmlndXJhYmxlOiEwfSl9Y2F0Y2godCl7cmV0dXJuIG4oKX10cnl7 cmV0dXJuIF9fZ2xvYmFsX198fG4oKX1maW5hbGx5e2RlbGV0ZSBPYmplY3QucHJvdG90eXBl Ll9fZ2xvYmFsX199fSgpfSx7fV0sMTg4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O2UuZXhwb3J0cz10KCIuL2lzLWltcGxlbWVudGVkIikoKT9nbG9iYWxUaGlzOnQoIi4vaW1w bGVtZW50YXRpb24iKX0seyIuL2ltcGxlbWVudGF0aW9uIjoxODcsIi4vaXMtaW1wbGVtZW50 ZWQiOjE4OX1dLDE4OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9 ZnVuY3Rpb24oKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJighIWdsb2Jh bFRoaXMmJmdsb2JhbFRoaXMuQXJyYXk9PT1BcnJheSl9fSx7fV0sMTkwOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImlzLXN0cmluZy1ibGFuayIpO2UuZXhwb3J0 cz1mdW5jdGlvbih0KXt2YXIgZT10eXBlb2YgdDtpZigic3RyaW5nIj09PWUpe3ZhciByPXQ7 aWYoMD09PSh0PSt0KSYmbihyKSlyZXR1cm4hMX1lbHNlIGlmKCJudW1iZXIiIT09ZSlyZXR1 cm4hMTtyZXR1cm4gdC10PDF9fSx7ImlzLXN0cmluZy1ibGFuayI6MjM3fV0sMTkxOltmdW5j dGlvbih0LGUscil7dmFyIG49dCgiZHR5cGUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIp e2lmKCF0KXRocm93IG5ldyBUeXBlRXJyb3IoIm11c3Qgc3BlY2lmeSBkYXRhIGFzIGZpcnN0 IHBhcmFtZXRlciIpO2lmKHI9MHwrKHJ8fDApLEFycmF5LmlzQXJyYXkodCkmJnRbMF0mJiJu dW1iZXIiPT10eXBlb2YgdFswXVswXSl7dmFyIGksYSxvLHMsbD10WzBdLmxlbmd0aCxjPXQu bGVuZ3RoKmw7ZSYmInN0cmluZyIhPXR5cGVvZiBlfHwoZT1uZXcobihlfHwiZmxvYXQzMiIp KShjK3IpKTt2YXIgdT1lLmxlbmd0aC1yO2lmKGMhPT11KXRocm93IG5ldyBFcnJvcigic291 cmNlIGxlbmd0aCAiK2MrIiAoIitsKyJ4Iit0Lmxlbmd0aCsiKSBkb2VzIG5vdCBtYXRjaCBk ZXN0aW5hdGlvbiBsZW5ndGggIit1KTtmb3IoaT0wLG89cjtpPHQubGVuZ3RoO2krKylmb3Io YT0wO2E8bDthKyspZVtvKytdPW51bGw9PT10W2ldW2FdP05hTjp0W2ldW2FdfWVsc2UgaWYo ZSYmInN0cmluZyIhPXR5cGVvZiBlKWUuc2V0KHQscik7ZWxzZXt2YXIgZj1uKGV8fCJmbG9h dDMyIik7aWYoQXJyYXkuaXNBcnJheSh0KXx8ImFycmF5Ij09PWUpZm9yKGU9bmV3IGYodC5s ZW5ndGgrciksaT0wLG89cixzPWUubGVuZ3RoO288cztvKyssaSsrKWVbb109bnVsbD09PXRb aV0/TmFOOnRbaV07ZWxzZSAwPT09cj9lPW5ldyBmKHQpOihlPW5ldyBmKHQubGVuZ3RoK3Ip KS5zZXQodCxyKX1yZXR1cm4gZX19LHtkdHlwZToxMjd9XSwxOTI6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiY3NzLWZvbnQvc3RyaW5naWZ5IiksaT1bMzIsMTI2 XTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9KHQ9dHx8e30pLnNoYXBlP3Quc2hhcGU6 dC5jYW52YXM/W3QuY2FudmFzLndpZHRoLHQuY2FudmFzLmhlaWdodF06WzUxMiw1MTJdLHI9 dC5jYW52YXN8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLGE9dC5mb250LG89 Im51bWJlciI9PXR5cGVvZiB0LnN0ZXA/W3Quc3RlcCx0LnN0ZXBdOnQuc3RlcHx8WzMyLDMy XSxzPXQuY2hhcnN8fGk7YSYmInN0cmluZyIhPXR5cGVvZiBhJiYoYT1uKGEpKTtpZihBcnJh eS5pc0FycmF5KHMpKXtpZigyPT09cy5sZW5ndGgmJiJudW1iZXIiPT10eXBlb2Ygc1swXSYm Im51bWJlciI9PXR5cGVvZiBzWzFdKXtmb3IodmFyIGw9W10sYz1zWzBdLHU9MDtjPD1zWzFd O2MrKylsW3UrK109U3RyaW5nLmZyb21DaGFyQ29kZShjKTtzPWx9fWVsc2Ugcz1TdHJpbmco cykuc3BsaXQoIiIpO2U9ZS5zbGljZSgpLHIud2lkdGg9ZVswXSxyLmhlaWdodD1lWzFdO3Zh ciBmPXIuZ2V0Q29udGV4dCgiMmQiKTtmLmZpbGxTdHlsZT0iIzAwMCIsZi5maWxsUmVjdCgw LDAsci53aWR0aCxyLmhlaWdodCksZi5mb250PWEsZi50ZXh0QWxpZ249ImNlbnRlciIsZi50 ZXh0QmFzZWxpbmU9Im1pZGRsZSIsZi5maWxsU3R5bGU9IiNmZmYiO3ZhciBoPW9bMF0vMixw PW9bMV0vMjtmb3IoYz0wO2M8cy5sZW5ndGg7YysrKWYuZmlsbFRleHQoc1tjXSxoLHApLCho Kz1vWzBdKT5lWzBdLW9bMF0vMiYmKGg9b1swXS8yLHArPW9bMV0pO3JldHVybiByfX0seyJj c3MtZm9udC9zdHJpbmdpZnkiOjEwMn1dLDE5MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0IjtmdW5jdGlvbiBuKHQsZSl7ZXx8KGU9e30pLCgic3RyaW5nIj09dHlwZW9mIHR8fEFy cmF5LmlzQXJyYXkodCkpJiYoZS5mYW1pbHk9dCk7dmFyIHI9QXJyYXkuaXNBcnJheShlLmZh bWlseSk/ZS5mYW1pbHkuam9pbigiLCAiKTplLmZhbWlseTtpZighcil0aHJvdyBFcnJvcigi YGZhbWlseWAgbXVzdCBiZSBkZWZpbmVkIik7dmFyIHM9ZS5zaXplfHxlLmZvbnRTaXplfHxl LmVtfHw0OCxsPWUud2VpZ2h0fHxlLmZvbnRXZWlnaHR8fCIiLGM9KHQ9W2Uuc3R5bGV8fGUu Zm9udFN0eWxlfHwiIixsLHNdLmpvaW4oIiAiKSsicHggIityLGUub3JpZ2lufHwidG9wIik7 aWYobi5jYWNoZVtyXSYmczw9bi5jYWNoZVtyXS5lbSlyZXR1cm4gaShuLmNhY2hlW3JdLGMp O3ZhciB1PWUuY2FudmFzfHxuLmNhbnZhcyxmPXUuZ2V0Q29udGV4dCgiMmQiKSxoPXt1cHBl cjp2b2lkIDAhPT1lLnVwcGVyP2UudXBwZXI6IkgiLGxvd2VyOnZvaWQgMCE9PWUubG93ZXI/ ZS5sb3dlcjoieCIsZGVzY2VudDp2b2lkIDAhPT1lLmRlc2NlbnQ/ZS5kZXNjZW50OiJwIixh c2NlbnQ6dm9pZCAwIT09ZS5hc2NlbnQ/ZS5hc2NlbnQ6ImgiLHRpdHRsZTp2b2lkIDAhPT1l LnRpdHRsZT9lLnRpdHRsZToiaSIsb3ZlcnNob290OnZvaWQgMCE9PWUub3ZlcnNob290P2Uu b3ZlcnNob290OiJPIn0scD1NYXRoLmNlaWwoMS41KnMpO3UuaGVpZ2h0PXAsdS53aWR0aD0u NSpwLGYuZm9udD10O3ZhciBkPXt0b3A6MH07Zi5jbGVhclJlY3QoMCwwLHAscCksZi50ZXh0 QmFzZWxpbmU9InRvcCIsZi5maWxsU3R5bGU9ImJsYWNrIixmLmZpbGxUZXh0KCJIIiwwLDAp O3ZhciBtPWEoZi5nZXRJbWFnZURhdGEoMCwwLHAscCkpO2YuY2xlYXJSZWN0KDAsMCxwLHAp LGYudGV4dEJhc2VsaW5lPSJib3R0b20iLGYuZmlsbFRleHQoIkgiLDAscCk7dmFyIGc9YShm LmdldEltYWdlRGF0YSgwLDAscCxwKSk7ZC5saW5lSGVpZ2h0PWQuYm90dG9tPXAtZyttLGYu Y2xlYXJSZWN0KDAsMCxwLHApLGYudGV4dEJhc2VsaW5lPSJhbHBoYWJldGljIixmLmZpbGxU ZXh0KCJIIiwwLHApO3ZhciB2PXAtYShmLmdldEltYWdlRGF0YSgwLDAscCxwKSktMSttO2Qu YmFzZWxpbmU9ZC5hbHBoYWJldGljPXYsZi5jbGVhclJlY3QoMCwwLHAscCksZi50ZXh0QmFz ZWxpbmU9Im1pZGRsZSIsZi5maWxsVGV4dCgiSCIsMCwuNSpwKTt2YXIgeT1hKGYuZ2V0SW1h Z2VEYXRhKDAsMCxwLHApKTtkLm1lZGlhbj1kLm1pZGRsZT1wLXktMSttLS41KnAsZi5jbGVh clJlY3QoMCwwLHAscCksZi50ZXh0QmFzZWxpbmU9ImhhbmdpbmciLGYuZmlsbFRleHQoIkgi LDAsLjUqcCk7dmFyIHg9YShmLmdldEltYWdlRGF0YSgwLDAscCxwKSk7ZC5oYW5naW5nPXAt eC0xK20tLjUqcCxmLmNsZWFyUmVjdCgwLDAscCxwKSxmLnRleHRCYXNlbGluZT0iaWRlb2dy YXBoaWMiLGYuZmlsbFRleHQoIkgiLDAscCk7dmFyIGI9YShmLmdldEltYWdlRGF0YSgwLDAs cCxwKSk7aWYoZC5pZGVvZ3JhcGhpYz1wLWItMSttLGgudXBwZXImJihmLmNsZWFyUmVjdCgw LDAscCxwKSxmLnRleHRCYXNlbGluZT0idG9wIixmLmZpbGxUZXh0KGgudXBwZXIsMCwwKSxk LnVwcGVyPWEoZi5nZXRJbWFnZURhdGEoMCwwLHAscCkpLGQuY2FwSGVpZ2h0PWQuYmFzZWxp bmUtZC51cHBlciksaC5sb3dlciYmKGYuY2xlYXJSZWN0KDAsMCxwLHApLGYudGV4dEJhc2Vs aW5lPSJ0b3AiLGYuZmlsbFRleHQoaC5sb3dlciwwLDApLGQubG93ZXI9YShmLmdldEltYWdl RGF0YSgwLDAscCxwKSksZC54SGVpZ2h0PWQuYmFzZWxpbmUtZC5sb3dlciksaC50aXR0bGUm JihmLmNsZWFyUmVjdCgwLDAscCxwKSxmLnRleHRCYXNlbGluZT0idG9wIixmLmZpbGxUZXh0 KGgudGl0dGxlLDAsMCksZC50aXR0bGU9YShmLmdldEltYWdlRGF0YSgwLDAscCxwKSkpLGgu YXNjZW50JiYoZi5jbGVhclJlY3QoMCwwLHAscCksZi50ZXh0QmFzZWxpbmU9InRvcCIsZi5m aWxsVGV4dChoLmFzY2VudCwwLDApLGQuYXNjZW50PWEoZi5nZXRJbWFnZURhdGEoMCwwLHAs cCkpKSxoLmRlc2NlbnQmJihmLmNsZWFyUmVjdCgwLDAscCxwKSxmLnRleHRCYXNlbGluZT0i dG9wIixmLmZpbGxUZXh0KGguZGVzY2VudCwwLDApLGQuZGVzY2VudD1vKGYuZ2V0SW1hZ2VE YXRhKDAsMCxwLHApKSksaC5vdmVyc2hvb3Qpe2YuY2xlYXJSZWN0KDAsMCxwLHApLGYudGV4 dEJhc2VsaW5lPSJ0b3AiLGYuZmlsbFRleHQoaC5vdmVyc2hvb3QsMCwwKTt2YXIgXz1vKGYu Z2V0SW1hZ2VEYXRhKDAsMCxwLHApKTtkLm92ZXJzaG9vdD1fLXZ9Zm9yKHZhciB3IGluIGQp ZFt3XS89cztyZXR1cm4gZC5lbT1zLG4uY2FjaGVbcl09ZCxpKGQsYyl9ZnVuY3Rpb24gaSh0 LGUpe3ZhciByPXt9O2Zvcih2YXIgbiBpbiJzdHJpbmciPT10eXBlb2YgZSYmKGU9dFtlXSks dCkiZW0iIT09biYmKHJbbl09dFtuXS1lKTtyZXR1cm4gcn1mdW5jdGlvbiBhKHQpe2Zvcih2 YXIgZT10LmhlaWdodCxyPXQuZGF0YSxuPTM7bjxyLmxlbmd0aDtuKz00KWlmKDAhPT1yW25d KXJldHVybiBNYXRoLmZsb29yKC4yNSoobi0zKS9lKX1mdW5jdGlvbiBvKHQpe2Zvcih2YXIg ZT10LmhlaWdodCxyPXQuZGF0YSxuPXIubGVuZ3RoLTE7bj4wO24tPTQpaWYoMCE9PXJbbl0p cmV0dXJuIE1hdGguZmxvb3IoLjI1KihuLTMpL2UpfWUuZXhwb3J0cz1uLG4uY2FudmFzPWRv Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLG4uY2FjaGU9e319LHt9XSwxOTQ6W2Z1 bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZigic3RyaW5nIiE9dHlw ZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigibXVzdCBzcGVjaWZ5IHR5cGUgc3RyaW5nIik7 aWYoZT1lfHx7fSwidW5kZWZpbmVkIj09dHlwZW9mIGRvY3VtZW50JiYhZS5jYW52YXMpcmV0 dXJuIG51bGw7dmFyIHI9ZS5jYW52YXN8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZh cyIpOyJudW1iZXIiPT10eXBlb2YgZS53aWR0aCYmKHIud2lkdGg9ZS53aWR0aCk7Im51bWJl ciI9PXR5cGVvZiBlLmhlaWdodCYmKHIuaGVpZ2h0PWUuaGVpZ2h0KTt2YXIgbixpPWU7dHJ5 e3ZhciBhPVt0XTswPT09dC5pbmRleE9mKCJ3ZWJnbCIpJiZhLnB1c2goImV4cGVyaW1lbnRh bC0iK3QpO2Zvcih2YXIgbz0wO288YS5sZW5ndGg7bysrKWlmKG49ci5nZXRDb250ZXh0KGFb b10saSkpcmV0dXJuIG59Y2F0Y2godCl7bj1udWxsfXJldHVybiBufHxudWxsfX0se31dLDE5 NTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPWVbMF0s bj1lWzFdLGk9ZVsyXSxhPWVbM10sbz1lWzRdLHM9ZVs1XSxsPWVbNl0sYz1lWzddLHU9ZVs4 XSxmPWVbOV0saD1lWzEwXSxwPWVbMTFdLGQ9ZVsxMl0sbT1lWzEzXSxnPWVbMTRdLHY9ZVsx NV07cmV0dXJuIHRbMF09cyooaCp2LXAqZyktZioobCp2LWMqZykrbSoobCpwLWMqaCksdFsx XT0tKG4qKGgqdi1wKmcpLWYqKGkqdi1hKmcpK20qKGkqcC1hKmgpKSx0WzJdPW4qKGwqdi1j KmcpLXMqKGkqdi1hKmcpK20qKGkqYy1hKmwpLHRbM109LShuKihsKnAtYypoKS1zKihpKnAt YSpoKStmKihpKmMtYSpsKSksdFs0XT0tKG8qKGgqdi1wKmcpLXUqKGwqdi1jKmcpK2QqKGwq cC1jKmgpKSx0WzVdPXIqKGgqdi1wKmcpLXUqKGkqdi1hKmcpK2QqKGkqcC1hKmgpLHRbNl09 LShyKihsKnYtYypnKS1vKihpKnYtYSpnKStkKihpKmMtYSpsKSksdFs3XT1yKihsKnAtYypo KS1vKihpKnAtYSpoKSt1KihpKmMtYSpsKSx0WzhdPW8qKGYqdi1wKm0pLXUqKHMqdi1jKm0p K2QqKHMqcC1jKmYpLHRbOV09LShyKihmKnYtcCptKS11KihuKnYtYSptKStkKihuKnAtYSpm KSksdFsxMF09cioocyp2LWMqbSktbyoobip2LWEqbSkrZCoobipjLWEqcyksdFsxMV09LShy KihzKnAtYypmKS1vKihuKnAtYSpmKSt1KihuKmMtYSpzKSksdFsxMl09LShvKihmKmctaCpt KS11KihzKmctbCptKStkKihzKmgtbCpmKSksdFsxM109ciooZipnLWgqbSktdSoobipnLWkq bSkrZCoobipoLWkqZiksdFsxNF09LShyKihzKmctbCptKS1vKihuKmctaSptKStkKihuKmwt aSpzKSksdFsxNV09cioocypoLWwqZiktbyoobipoLWkqZikrdSoobipsLWkqcyksdH19LHt9 XSwxOTY6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9bmV3 IEZsb2F0MzJBcnJheSgxNik7cmV0dXJuIGVbMF09dFswXSxlWzFdPXRbMV0sZVsyXT10WzJd LGVbM109dFszXSxlWzRdPXRbNF0sZVs1XT10WzVdLGVbNl09dFs2XSxlWzddPXRbN10sZVs4 XT10WzhdLGVbOV09dFs5XSxlWzEwXT10WzEwXSxlWzExXT10WzExXSxlWzEyXT10WzEyXSxl WzEzXT10WzEzXSxlWzE0XT10WzE0XSxlWzE1XT10WzE1XSxlfX0se31dLDE5NzpbZnVuY3Rp b24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0WzBdPWVbMF0sdFsx XT1lWzFdLHRbMl09ZVsyXSx0WzNdPWVbM10sdFs0XT1lWzRdLHRbNV09ZVs1XSx0WzZdPWVb Nl0sdFs3XT1lWzddLHRbOF09ZVs4XSx0WzldPWVbOV0sdFsxMF09ZVsxMF0sdFsxMV09ZVsx MV0sdFsxMl09ZVsxMl0sdFsxM109ZVsxM10sdFsxNF09ZVsxNF0sdFsxNV09ZVsxNV0sdH19 LHt9XSwxOTg6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdD1u ZXcgRmxvYXQzMkFycmF5KDE2KTtyZXR1cm4gdFswXT0xLHRbMV09MCx0WzJdPTAsdFszXT0w LHRbNF09MCx0WzVdPTEsdFs2XT0wLHRbN109MCx0WzhdPTAsdFs5XT0wLHRbMTBdPTEsdFsx MV09MCx0WzEyXT0wLHRbMTNdPTAsdFsxNF09MCx0WzE1XT0xLHR9fSx7fV0sMTk5OltmdW5j dGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0scj10WzFdLG49 dFsyXSxpPXRbM10sYT10WzRdLG89dFs1XSxzPXRbNl0sbD10WzddLGM9dFs4XSx1PXRbOV0s Zj10WzEwXSxoPXRbMTFdLHA9dFsxMl0sZD10WzEzXSxtPXRbMTRdLGc9dFsxNV07cmV0dXJu KGUqby1yKmEpKihmKmctaCptKS0oZSpzLW4qYSkqKHUqZy1oKmQpKyhlKmwtaSphKSoodSpt LWYqZCkrKHIqcy1uKm8pKihjKmctaCpwKS0ocipsLWkqbykqKGMqbS1mKnApKyhuKmwtaSpz KSooYypkLXUqcCl9fSx7fV0sMjAwOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0 aW9uKHQsZSl7dmFyIHI9ZVswXSxuPWVbMV0saT1lWzJdLGE9ZVszXSxvPXIrcixzPW4rbixs PWkraSxjPXIqbyx1PW4qbyxmPW4qcyxoPWkqbyxwPWkqcyxkPWkqbCxtPWEqbyxnPWEqcyx2 PWEqbDtyZXR1cm4gdFswXT0xLWYtZCx0WzFdPXUrdix0WzJdPWgtZyx0WzNdPTAsdFs0XT11 LXYsdFs1XT0xLWMtZCx0WzZdPXArbSx0WzddPTAsdFs4XT1oK2csdFs5XT1wLW0sdFsxMF09 MS1jLWYsdFsxMV09MCx0WzEyXT0wLHRbMTNdPTAsdFsxNF09MCx0WzE1XT0xLHR9fSx7fV0s MjAxOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixp LGEsbz1yWzBdLHM9clsxXSxsPXJbMl0sYz1NYXRoLnNxcnQobypvK3MqcytsKmwpO2lmKE1h dGguYWJzKGMpPDFlLTYpcmV0dXJuIG51bGw7cmV0dXJuIG8qPWM9MS9jLHMqPWMsbCo9Yyxu PU1hdGguc2luKGUpLGk9TWF0aC5jb3MoZSksYT0xLWksdFswXT1vKm8qYStpLHRbMV09cypv KmErbCpuLHRbMl09bCpvKmEtcypuLHRbM109MCx0WzRdPW8qcyphLWwqbix0WzVdPXMqcyph K2ksdFs2XT1sKnMqYStvKm4sdFs3XT0wLHRbOF09bypsKmErcypuLHRbOV09cypsKmEtbypu LHRbMTBdPWwqbCphK2ksdFsxMV09MCx0WzEyXT0wLHRbMTNdPTAsdFsxNF09MCx0WzE1XT0x LHR9fSx7fV0sMjAyOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxy KXt2YXIgbj1lWzBdLGk9ZVsxXSxhPWVbMl0sbz1lWzNdLHM9bituLGw9aStpLGM9YSthLHU9 bipzLGY9bipsLGg9bipjLHA9aSpsLGQ9aSpjLG09YSpjLGc9bypzLHY9bypsLHk9bypjO3Jl dHVybiB0WzBdPTEtKHArbSksdFsxXT1mK3ksdFsyXT1oLXYsdFszXT0wLHRbNF09Zi15LHRb NV09MS0odSttKSx0WzZdPWQrZyx0WzddPTAsdFs4XT1oK3YsdFs5XT1kLWcsdFsxMF09MS0o dStwKSx0WzExXT0wLHRbMTJdPXJbMF0sdFsxM109clsxXSx0WzE0XT1yWzJdLHRbMTVdPTEs dH19LHt9XSwyMDM6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXty ZXR1cm4gdFswXT1lWzBdLHRbMV09MCx0WzJdPTAsdFszXT0wLHRbNF09MCx0WzVdPWVbMV0s dFs2XT0wLHRbN109MCx0WzhdPTAsdFs5XT0wLHRbMTBdPWVbMl0sdFsxMV09MCx0WzEyXT0w LHRbMTNdPTAsdFsxNF09MCx0WzE1XT0xLHR9fSx7fV0sMjA0OltmdW5jdGlvbih0LGUscil7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbMF09MSx0WzFdPTAsdFsyXT0wLHRb M109MCx0WzRdPTAsdFs1XT0xLHRbNl09MCx0WzddPTAsdFs4XT0wLHRbOV09MCx0WzEwXT0x LHRbMTFdPTAsdFsxMl09ZVswXSx0WzEzXT1lWzFdLHRbMTRdPWVbMl0sdFsxNV09MSx0fX0s e31dLDIwNTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBy PU1hdGguc2luKGUpLG49TWF0aC5jb3MoZSk7cmV0dXJuIHRbMF09MSx0WzFdPTAsdFsyXT0w LHRbM109MCx0WzRdPTAsdFs1XT1uLHRbNl09cix0WzddPTAsdFs4XT0wLHRbOV09LXIsdFsx MF09bix0WzExXT0wLHRbMTJdPTAsdFsxM109MCx0WzE0XT0wLHRbMTVdPTEsdH19LHt9XSwy MDY6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1NYXRo LnNpbihlKSxuPU1hdGguY29zKGUpO3JldHVybiB0WzBdPW4sdFsxXT0wLHRbMl09LXIsdFsz XT0wLHRbNF09MCx0WzVdPTEsdFs2XT0wLHRbN109MCx0WzhdPXIsdFs5XT0wLHRbMTBdPW4s dFsxMV09MCx0WzEyXT0wLHRbMTNdPTAsdFsxNF09MCx0WzE1XT0xLHR9fSx7fV0sMjA3Oltm dW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9TWF0aC5zaW4o ZSksbj1NYXRoLmNvcyhlKTtyZXR1cm4gdFswXT1uLHRbMV09cix0WzJdPTAsdFszXT0wLHRb NF09LXIsdFs1XT1uLHRbNl09MCx0WzddPTAsdFs4XT0wLHRbOV09MCx0WzEwXT0xLHRbMTFd PTAsdFsxMl09MCx0WzEzXT0wLHRbMTRdPTAsdFsxNV09MSx0fX0se31dLDIwODpbZnVuY3Rp b24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuLGksYSxvKXt2YXIgcz0xLyhy LWUpLGw9MS8oaS1uKSxjPTEvKGEtbyk7cmV0dXJuIHRbMF09MiphKnMsdFsxXT0wLHRbMl09 MCx0WzNdPTAsdFs0XT0wLHRbNV09MiphKmwsdFs2XT0wLHRbN109MCx0WzhdPShyK2UpKnMs dFs5XT0oaStuKSpsLHRbMTBdPShvK2EpKmMsdFsxMV09LTEsdFsxMl09MCx0WzEzXT0wLHRb MTRdPW8qYSoyKmMsdFsxNV09MCx0fX0se31dLDIwOTpbZnVuY3Rpb24odCxlLHIpe2UuZXhw b3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdFswXT0xLHRbMV09MCx0WzJdPTAsdFszXT0wLHRb NF09MCx0WzVdPTEsdFs2XT0wLHRbN109MCx0WzhdPTAsdFs5XT0wLHRbMTBdPTEsdFsxMV09 MCx0WzEyXT0wLHRbMTNdPTAsdFsxNF09MCx0WzE1XT0xLHR9fSx7fV0sMjEwOltmdW5jdGlv bih0LGUscil7ZS5leHBvcnRzPXtjcmVhdGU6dCgiLi9jcmVhdGUiKSxjbG9uZTp0KCIuL2Ns b25lIiksY29weTp0KCIuL2NvcHkiKSxpZGVudGl0eTp0KCIuL2lkZW50aXR5IiksdHJhbnNw b3NlOnQoIi4vdHJhbnNwb3NlIiksaW52ZXJ0OnQoIi4vaW52ZXJ0IiksYWRqb2ludDp0KCIu L2Fkam9pbnQiKSxkZXRlcm1pbmFudDp0KCIuL2RldGVybWluYW50IiksbXVsdGlwbHk6dCgi Li9tdWx0aXBseSIpLHRyYW5zbGF0ZTp0KCIuL3RyYW5zbGF0ZSIpLHNjYWxlOnQoIi4vc2Nh bGUiKSxyb3RhdGU6dCgiLi9yb3RhdGUiKSxyb3RhdGVYOnQoIi4vcm90YXRlWCIpLHJvdGF0 ZVk6dCgiLi9yb3RhdGVZIikscm90YXRlWjp0KCIuL3JvdGF0ZVoiKSxmcm9tUm90YXRpb246 dCgiLi9mcm9tUm90YXRpb24iKSxmcm9tUm90YXRpb25UcmFuc2xhdGlvbjp0KCIuL2Zyb21S b3RhdGlvblRyYW5zbGF0aW9uIiksZnJvbVNjYWxpbmc6dCgiLi9mcm9tU2NhbGluZyIpLGZy b21UcmFuc2xhdGlvbjp0KCIuL2Zyb21UcmFuc2xhdGlvbiIpLGZyb21YUm90YXRpb246dCgi Li9mcm9tWFJvdGF0aW9uIiksZnJvbVlSb3RhdGlvbjp0KCIuL2Zyb21ZUm90YXRpb24iKSxm cm9tWlJvdGF0aW9uOnQoIi4vZnJvbVpSb3RhdGlvbiIpLGZyb21RdWF0OnQoIi4vZnJvbVF1 YXQiKSxmcnVzdHVtOnQoIi4vZnJ1c3R1bSIpLHBlcnNwZWN0aXZlOnQoIi4vcGVyc3BlY3Rp dmUiKSxwZXJzcGVjdGl2ZUZyb21GaWVsZE9mVmlldzp0KCIuL3BlcnNwZWN0aXZlRnJvbUZp ZWxkT2ZWaWV3Iiksb3J0aG86dCgiLi9vcnRobyIpLGxvb2tBdDp0KCIuL2xvb2tBdCIpLHN0 cjp0KCIuL3N0ciIpfX0seyIuL2Fkam9pbnQiOjE5NSwiLi9jbG9uZSI6MTk2LCIuL2NvcHki OjE5NywiLi9jcmVhdGUiOjE5OCwiLi9kZXRlcm1pbmFudCI6MTk5LCIuL2Zyb21RdWF0Ijoy MDAsIi4vZnJvbVJvdGF0aW9uIjoyMDEsIi4vZnJvbVJvdGF0aW9uVHJhbnNsYXRpb24iOjIw MiwiLi9mcm9tU2NhbGluZyI6MjAzLCIuL2Zyb21UcmFuc2xhdGlvbiI6MjA0LCIuL2Zyb21Y Um90YXRpb24iOjIwNSwiLi9mcm9tWVJvdGF0aW9uIjoyMDYsIi4vZnJvbVpSb3RhdGlvbiI6 MjA3LCIuL2ZydXN0dW0iOjIwOCwiLi9pZGVudGl0eSI6MjA5LCIuL2ludmVydCI6MjExLCIu L2xvb2tBdCI6MjEyLCIuL211bHRpcGx5IjoyMTMsIi4vb3J0aG8iOjIxNCwiLi9wZXJzcGVj dGl2ZSI6MjE1LCIuL3BlcnNwZWN0aXZlRnJvbUZpZWxkT2ZWaWV3IjoyMTYsIi4vcm90YXRl IjoyMTcsIi4vcm90YXRlWCI6MjE4LCIuL3JvdGF0ZVkiOjIxOSwiLi9yb3RhdGVaIjoyMjAs Ii4vc2NhbGUiOjIyMSwiLi9zdHIiOjIyMiwiLi90cmFuc2xhdGUiOjIyMywiLi90cmFuc3Bv c2UiOjIyNH1dLDIxMTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUp e3ZhciByPWVbMF0sbj1lWzFdLGk9ZVsyXSxhPWVbM10sbz1lWzRdLHM9ZVs1XSxsPWVbNl0s Yz1lWzddLHU9ZVs4XSxmPWVbOV0saD1lWzEwXSxwPWVbMTFdLGQ9ZVsxMl0sbT1lWzEzXSxn PWVbMTRdLHY9ZVsxNV0seT1yKnMtbipvLHg9cipsLWkqbyxiPXIqYy1hKm8sXz1uKmwtaSpz LHc9bipjLWEqcyxUPWkqYy1hKmwsaz11Km0tZipkLEE9dSpnLWgqZCxNPXUqdi1wKmQsUz1m KmctaCptLEU9Zip2LXAqbSxMPWgqdi1wKmcsQz15KkwteCpFK2IqUytfKk0tdypBK1Qqaztp ZighQylyZXR1cm4gbnVsbDtyZXR1cm4gQz0xL0MsdFswXT0ocypMLWwqRStjKlMpKkMsdFsx XT0oaSpFLW4qTC1hKlMpKkMsdFsyXT0obSpULWcqdyt2Kl8pKkMsdFszXT0oaCp3LWYqVC1w Kl8pKkMsdFs0XT0obCpNLW8qTC1jKkEpKkMsdFs1XT0ocipMLWkqTSthKkEpKkMsdFs2XT0o ZypiLWQqVC12KngpKkMsdFs3XT0odSpULWgqYitwKngpKkMsdFs4XT0obypFLXMqTStjKmsp KkMsdFs5XT0obipNLXIqRS1hKmspKkMsdFsxMF09KGQqdy1tKmIrdip5KSpDLHRbMTFdPShm KmItdSp3LXAqeSkqQyx0WzEyXT0ocypBLW8qUy1sKmspKkMsdFsxM109KHIqUy1uKkEraSpr KSpDLHRbMTRdPShtKngtZCpfLWcqeSkqQyx0WzE1XT0odSpfLWYqeCtoKnkpKkMsdH19LHt9 XSwyMTI6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCIuL2lkZW50aXR5Iik7ZS5leHBvcnRz PWZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBhLG8scyxsLGMsdSxmLGgscCxkLG09ZVswXSxnPWVb MV0sdj1lWzJdLHk9aVswXSx4PWlbMV0sYj1pWzJdLF89clswXSx3PXJbMV0sVD1yWzJdO2lm KE1hdGguYWJzKG0tXyk8MWUtNiYmTWF0aC5hYnMoZy13KTwxZS02JiZNYXRoLmFicyh2LVQp PDFlLTYpcmV0dXJuIG4odCk7Zj1tLV8saD1nLXcscD12LVQsZD0xL01hdGguc3FydChmKmYr aCpoK3AqcCksYT14KihwKj1kKS1iKihoKj1kKSxvPWIqKGYqPWQpLXkqcCxzPXkqaC14KmYs KGQ9TWF0aC5zcXJ0KGEqYStvKm8rcypzKSk/KGEqPWQ9MS9kLG8qPWQscyo9ZCk6KGE9MCxv PTAscz0wKTtsPWgqcy1wKm8sYz1wKmEtZipzLHU9ZipvLWgqYSwoZD1NYXRoLnNxcnQobCps K2MqYyt1KnUpKT8obCo9ZD0xL2QsYyo9ZCx1Kj1kKToobD0wLGM9MCx1PTApO3JldHVybiB0 WzBdPWEsdFsxXT1sLHRbMl09Zix0WzNdPTAsdFs0XT1vLHRbNV09Yyx0WzZdPWgsdFs3XT0w LHRbOF09cyx0WzldPXUsdFsxMF09cCx0WzExXT0wLHRbMTJdPS0oYSptK28qZytzKnYpLHRb MTNdPS0obCptK2MqZyt1KnYpLHRbMTRdPS0oZiptK2gqZytwKnYpLHRbMTVdPTEsdH19LHsi Li9pZGVudGl0eSI6MjA5fV0sMjEzOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0 aW9uKHQsZSxyKXt2YXIgbj1lWzBdLGk9ZVsxXSxhPWVbMl0sbz1lWzNdLHM9ZVs0XSxsPWVb NV0sYz1lWzZdLHU9ZVs3XSxmPWVbOF0saD1lWzldLHA9ZVsxMF0sZD1lWzExXSxtPWVbMTJd LGc9ZVsxM10sdj1lWzE0XSx5PWVbMTVdLHg9clswXSxiPXJbMV0sXz1yWzJdLHc9clszXTty ZXR1cm4gdFswXT14Km4rYipzK18qZit3Km0sdFsxXT14KmkrYipsK18qaCt3KmcsdFsyXT14 KmErYipjK18qcCt3KnYsdFszXT14Km8rYip1K18qZCt3KnkseD1yWzRdLGI9cls1XSxfPXJb Nl0sdz1yWzddLHRbNF09eCpuK2IqcytfKmYrdyptLHRbNV09eCppK2IqbCtfKmgrdypnLHRb Nl09eCphK2IqYytfKnArdyp2LHRbN109eCpvK2IqdStfKmQrdyp5LHg9cls4XSxiPXJbOV0s Xz1yWzEwXSx3PXJbMTFdLHRbOF09eCpuK2IqcytfKmYrdyptLHRbOV09eCppK2IqbCtfKmgr dypnLHRbMTBdPXgqYStiKmMrXypwK3cqdix0WzExXT14Km8rYip1K18qZCt3KnkseD1yWzEy XSxiPXJbMTNdLF89clsxNF0sdz1yWzE1XSx0WzEyXT14Km4rYipzK18qZit3Km0sdFsxM109 eCppK2IqbCtfKmgrdypnLHRbMTRdPXgqYStiKmMrXypwK3cqdix0WzE1XT14Km8rYip1K18q ZCt3KnksdH19LHt9XSwyMTQ6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24o dCxlLHIsbixpLGEsbyl7dmFyIHM9MS8oZS1yKSxsPTEvKG4taSksYz0xLyhhLW8pO3JldHVy biB0WzBdPS0yKnMsdFsxXT0wLHRbMl09MCx0WzNdPTAsdFs0XT0wLHRbNV09LTIqbCx0WzZd PTAsdFs3XT0wLHRbOF09MCx0WzldPTAsdFsxMF09MipjLHRbMTFdPTAsdFsxMl09KGUrcikq cyx0WzEzXT0oaStuKSpsLHRbMTRdPShvK2EpKmMsdFsxNV09MSx0fX0se31dLDIxNTpbZnVu Y3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuLGkpe3ZhciBhPTEvTWF0 aC50YW4oZS8yKSxvPTEvKG4taSk7cmV0dXJuIHRbMF09YS9yLHRbMV09MCx0WzJdPTAsdFsz XT0wLHRbNF09MCx0WzVdPWEsdFs2XT0wLHRbN109MCx0WzhdPTAsdFs5XT0wLHRbMTBdPShp K24pKm8sdFsxMV09LTEsdFsxMl09MCx0WzEzXT0wLHRbMTRdPTIqaSpuKm8sdFsxNV09MCx0 fX0se31dLDIxNjpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixu KXt2YXIgaT1NYXRoLnRhbihlLnVwRGVncmVlcypNYXRoLlBJLzE4MCksYT1NYXRoLnRhbihl LmRvd25EZWdyZWVzKk1hdGguUEkvMTgwKSxvPU1hdGgudGFuKGUubGVmdERlZ3JlZXMqTWF0 aC5QSS8xODApLHM9TWF0aC50YW4oZS5yaWdodERlZ3JlZXMqTWF0aC5QSS8xODApLGw9Mi8o bytzKSxjPTIvKGkrYSk7cmV0dXJuIHRbMF09bCx0WzFdPTAsdFsyXT0wLHRbM109MCx0WzRd PTAsdFs1XT1jLHRbNl09MCx0WzddPTAsdFs4XT0tKG8tcykqbCouNSx0WzldPShpLWEpKmMq LjUsdFsxMF09bi8oci1uKSx0WzExXT0tMSx0WzEyXT0wLHRbMTNdPTAsdFsxNF09bipyLyhy LW4pLHRbMTVdPTAsdH19LHt9XSwyMTc6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlLHIsbil7dmFyIGksYSxvLHMsbCxjLHUsZixoLHAsZCxtLGcsdix5LHgsYixf LHcsVCxrLEEsTSxTLEU9blswXSxMPW5bMV0sQz1uWzJdLFA9TWF0aC5zcXJ0KEUqRStMKkwr QypDKTtpZihNYXRoLmFicyhQKTwxZS02KXJldHVybiBudWxsO0UqPVA9MS9QLEwqPVAsQyo9 UCxpPU1hdGguc2luKHIpLGE9TWF0aC5jb3Mociksbz0xLWEscz1lWzBdLGw9ZVsxXSxjPWVb Ml0sdT1lWzNdLGY9ZVs0XSxoPWVbNV0scD1lWzZdLGQ9ZVs3XSxtPWVbOF0sZz1lWzldLHY9 ZVsxMF0seT1lWzExXSx4PUUqRSpvK2EsYj1MKkUqbytDKmksXz1DKkUqby1MKmksdz1FKkwq by1DKmksVD1MKkwqbythLGs9QypMKm8rRSppLEE9RSpDKm8rTCppLE09TCpDKm8tRSppLFM9 QypDKm8rYSx0WzBdPXMqeCtmKmIrbSpfLHRbMV09bCp4K2gqYitnKl8sdFsyXT1jKngrcCpi K3YqXyx0WzNdPXUqeCtkKmIreSpfLHRbNF09cyp3K2YqVCttKmssdFs1XT1sKncraCpUK2cq ayx0WzZdPWMqdytwKlQrdiprLHRbN109dSp3K2QqVCt5KmssdFs4XT1zKkErZipNK20qUyx0 WzldPWwqQStoKk0rZypTLHRbMTBdPWMqQStwKk0rdipTLHRbMTFdPXUqQStkKk0reSpTLGUh PT10JiYodFsxMl09ZVsxMl0sdFsxM109ZVsxM10sdFsxNF09ZVsxNF0sdFsxNV09ZVsxNV0p O3JldHVybiB0fX0se31dLDIxODpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlv bih0LGUscil7dmFyIG49TWF0aC5zaW4ociksaT1NYXRoLmNvcyhyKSxhPWVbNF0sbz1lWzVd LHM9ZVs2XSxsPWVbN10sYz1lWzhdLHU9ZVs5XSxmPWVbMTBdLGg9ZVsxMV07ZSE9PXQmJih0 WzBdPWVbMF0sdFsxXT1lWzFdLHRbMl09ZVsyXSx0WzNdPWVbM10sdFsxMl09ZVsxMl0sdFsx M109ZVsxM10sdFsxNF09ZVsxNF0sdFsxNV09ZVsxNV0pO3JldHVybiB0WzRdPWEqaStjKm4s dFs1XT1vKmkrdSpuLHRbNl09cyppK2Yqbix0WzddPWwqaStoKm4sdFs4XT1jKmktYSpuLHRb OV09dSppLW8qbix0WzEwXT1mKmktcypuLHRbMTFdPWgqaS1sKm4sdH19LHt9XSwyMTk6W2Z1 bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPU1hdGguc2lu KHIpLGk9TWF0aC5jb3MociksYT1lWzBdLG89ZVsxXSxzPWVbMl0sbD1lWzNdLGM9ZVs4XSx1 PWVbOV0sZj1lWzEwXSxoPWVbMTFdO2UhPT10JiYodFs0XT1lWzRdLHRbNV09ZVs1XSx0WzZd PWVbNl0sdFs3XT1lWzddLHRbMTJdPWVbMTJdLHRbMTNdPWVbMTNdLHRbMTRdPWVbMTRdLHRb MTVdPWVbMTVdKTtyZXR1cm4gdFswXT1hKmktYypuLHRbMV09byppLXUqbix0WzJdPXMqaS1m Km4sdFszXT1sKmktaCpuLHRbOF09YSpuK2MqaSx0WzldPW8qbit1KmksdFsxMF09cypuK2Yq aSx0WzExXT1sKm4raCppLHR9fSx7fV0sMjIwOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRz PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1NYXRoLnNpbihyKSxpPU1hdGguY29zKHIpLGE9ZVsw XSxvPWVbMV0scz1lWzJdLGw9ZVszXSxjPWVbNF0sdT1lWzVdLGY9ZVs2XSxoPWVbN107ZSE9 PXQmJih0WzhdPWVbOF0sdFs5XT1lWzldLHRbMTBdPWVbMTBdLHRbMTFdPWVbMTFdLHRbMTJd PWVbMTJdLHRbMTNdPWVbMTNdLHRbMTRdPWVbMTRdLHRbMTVdPWVbMTVdKTtyZXR1cm4gdFsw XT1hKmkrYypuLHRbMV09byppK3Uqbix0WzJdPXMqaStmKm4sdFszXT1sKmkraCpuLHRbNF09 YyppLWEqbix0WzVdPXUqaS1vKm4sdFs2XT1mKmktcypuLHRbN109aCppLWwqbix0fX0se31d LDIyMTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIG49 clswXSxpPXJbMV0sYT1yWzJdO3JldHVybiB0WzBdPWVbMF0qbix0WzFdPWVbMV0qbix0WzJd PWVbMl0qbix0WzNdPWVbM10qbix0WzRdPWVbNF0qaSx0WzVdPWVbNV0qaSx0WzZdPWVbNl0q aSx0WzddPWVbN10qaSx0WzhdPWVbOF0qYSx0WzldPWVbOV0qYSx0WzEwXT1lWzEwXSphLHRb MTFdPWVbMTFdKmEsdFsxMl09ZVsxMl0sdFsxM109ZVsxM10sdFsxNF09ZVsxNF0sdFsxNV09 ZVsxNV0sdH19LHt9XSwyMjI6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24o dCl7cmV0dXJuIm1hdDQoIit0WzBdKyIsICIrdFsxXSsiLCAiK3RbMl0rIiwgIit0WzNdKyIs ICIrdFs0XSsiLCAiK3RbNV0rIiwgIit0WzZdKyIsICIrdFs3XSsiLCAiK3RbOF0rIiwgIit0 WzldKyIsICIrdFsxMF0rIiwgIit0WzExXSsiLCAiK3RbMTJdKyIsICIrdFsxM10rIiwgIit0 WzE0XSsiLCAiK3RbMTVdKyIpIn19LHt9XSwyMjM6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9y dHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGksYSxvLHMsbCxjLHUsZixoLHAsZCxtPXJbMF0s Zz1yWzFdLHY9clsyXTtlPT09dD8odFsxMl09ZVswXSptK2VbNF0qZytlWzhdKnYrZVsxMl0s dFsxM109ZVsxXSptK2VbNV0qZytlWzldKnYrZVsxM10sdFsxNF09ZVsyXSptK2VbNl0qZytl WzEwXSp2K2VbMTRdLHRbMTVdPWVbM10qbStlWzddKmcrZVsxMV0qditlWzE1XSk6KG49ZVsw XSxpPWVbMV0sYT1lWzJdLG89ZVszXSxzPWVbNF0sbD1lWzVdLGM9ZVs2XSx1PWVbN10sZj1l WzhdLGg9ZVs5XSxwPWVbMTBdLGQ9ZVsxMV0sdFswXT1uLHRbMV09aSx0WzJdPWEsdFszXT1v LHRbNF09cyx0WzVdPWwsdFs2XT1jLHRbN109dSx0WzhdPWYsdFs5XT1oLHRbMTBdPXAsdFsx MV09ZCx0WzEyXT1uKm0rcypnK2YqditlWzEyXSx0WzEzXT1pKm0rbCpnK2gqditlWzEzXSx0 WzE0XT1hKm0rYypnK3AqditlWzE0XSx0WzE1XT1vKm0rdSpnK2QqditlWzE1XSk7cmV0dXJu IHR9fSx7fV0sMjI0OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7 aWYodD09PWUpe3ZhciByPWVbMV0sbj1lWzJdLGk9ZVszXSxhPWVbNl0sbz1lWzddLHM9ZVsx MV07dFsxXT1lWzRdLHRbMl09ZVs4XSx0WzNdPWVbMTJdLHRbNF09cix0WzZdPWVbOV0sdFs3 XT1lWzEzXSx0WzhdPW4sdFs5XT1hLHRbMTFdPWVbMTRdLHRbMTJdPWksdFsxM109byx0WzE0 XT1zfWVsc2UgdFswXT1lWzBdLHRbMV09ZVs0XSx0WzJdPWVbOF0sdFszXT1lWzEyXSx0WzRd PWVbMV0sdFs1XT1lWzVdLHRbNl09ZVs5XSx0WzddPWVbMTNdLHRbOF09ZVsyXSx0WzldPWVb Nl0sdFsxMF09ZVsxMF0sdFsxMV09ZVsxNF0sdFsxMl09ZVszXSx0WzEzXT1lWzddLHRbMTRd PWVbMTFdLHRbMTVdPWVbMTVdO3JldHVybiB0fX0se31dLDIyNTpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJjc3MtZm9udCIpLGk9dCgicGljay1ieS1hbGlhcyIp LGE9dCgicmVnbCIpLG89dCgiZ2wtdXRpbC9jb250ZXh0Iikscz10KCJlczYtd2Vhay1tYXAi KSxsPXQoImNvbG9yLW5vcm1hbGl6ZSIpLGM9dCgiZm9udC1hdGxhcyIpLHU9dCgidHlwZWRh cnJheS1wb29sIiksZj10KCJwYXJzZS1yZWN0IiksaD10KCJpcy1wbGFpbi1vYmoiKSxwPXQo InBhcnNlLXVuaXQiKSxkPXQoInRvLXB4IiksbT10KCJkZXRlY3Qta2VybmluZyIpLGc9dCgi b2JqZWN0LWFzc2lnbiIpLHY9dCgiZm9udC1tZWFzdXJlIikseT10KCJmbGF0dGVuLXZlcnRl eC1kYXRhIikseD10KCJiaXQtdHdpZGRsZSIpLm5leHRQb3cyLGI9bmV3IHMsXz0hMTtpZihk b2N1bWVudC5ib2R5KXt2YXIgdz1kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTt3LnN0eWxlLmZvbnQ9Iml0YWxpYyBzbWFsbC1jYXBz IGJvbGQgY29uZGVuc2VkIDE2cHgvMiBjdXJzaXZlIixnZXRDb21wdXRlZFN0eWxlKHcpLmZv bnRTdHJldGNoJiYoXz0hMCksZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh3KX12YXIgVD1m dW5jdGlvbih0KXshZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQu X2dsJiZ0LnByb3AmJnQudGV4dHVyZSYmdC5idWZmZXJ9KHQpP3RoaXMuZ2w9byh0KToodD17 cmVnbDp0fSx0aGlzLmdsPXQucmVnbC5fZ2wpLHRoaXMuc2hhZGVyPWIuZ2V0KHRoaXMuZ2wp LHRoaXMuc2hhZGVyP3RoaXMucmVnbD10aGlzLnNoYWRlci5yZWdsOnRoaXMucmVnbD10LnJl Z2x8fGEoe2dsOnRoaXMuZ2x9KSx0aGlzLmNoYXJCdWZmZXI9dGhpcy5yZWdsLmJ1ZmZlcih7 dHlwZToidWludDgiLHVzYWdlOiJzdHJlYW0ifSksdGhpcy5zaXplQnVmZmVyPXRoaXMucmVn bC5idWZmZXIoe3R5cGU6ImZsb2F0Iix1c2FnZToic3RyZWFtIn0pLHRoaXMuc2hhZGVyfHwo dGhpcy5zaGFkZXI9dGhpcy5jcmVhdGVTaGFkZXIoKSxiLnNldCh0aGlzLmdsLHRoaXMuc2hh ZGVyKSksdGhpcy5iYXRjaD1bXSx0aGlzLmZvbnRTaXplPVtdLHRoaXMuZm9udD1bXSx0aGlz LmZvbnRBdGxhcz1bXSx0aGlzLmRyYXc9dGhpcy5zaGFkZXIuZHJhdy5iaW5kKHRoaXMpLHRo aXMucmVuZGVyPWZ1bmN0aW9uKCl7dGhpcy5yZWdsLl9yZWZyZXNoKCksdGhpcy5kcmF3KHRo aXMuYmF0Y2gpfSx0aGlzLmNhbnZhcz10aGlzLmdsLmNhbnZhcyx0aGlzLnVwZGF0ZShoKHQp P3Q6e30pfTtULnByb3RvdHlwZS5jcmVhdGVTaGFkZXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlz LnJlZ2wsZT10KHtibGVuZDp7ZW5hYmxlOiEwLGNvbG9yOlswLDAsMCwxXSxmdW5jOntzcmNS R0I6InNyYyBhbHBoYSIsZHN0UkdCOiJvbmUgbWludXMgc3JjIGFscGhhIixzcmNBbHBoYToi b25lIG1pbnVzIGRzdCBhbHBoYSIsZHN0QWxwaGE6Im9uZSJ9fSxzdGVuY2lsOntlbmFibGU6 ITF9LGRlcHRoOntlbmFibGU6ITF9LGNvdW50OnQucHJvcCgiY291bnQiKSxvZmZzZXQ6dC5w cm9wKCJvZmZzZXQiKSxhdHRyaWJ1dGVzOntjaGFyT2Zmc2V0OntvZmZzZXQ6NCxzdHJpZGU6 OCxidWZmZXI6dC50aGlzKCJzaXplQnVmZmVyIil9LHdpZHRoOntvZmZzZXQ6MCxzdHJpZGU6 OCxidWZmZXI6dC50aGlzKCJzaXplQnVmZmVyIil9LGNoYXI6dC50aGlzKCJjaGFyQnVmZmVy IikscG9zaXRpb246dC50aGlzKCJwb3NpdGlvbiIpfSx1bmlmb3Jtczp7YXRsYXNTaXplOmZ1 bmN0aW9uKHQsZSl7cmV0dXJuW2UuYXRsYXMud2lkdGgsZS5hdGxhcy5oZWlnaHRdfSxhdGxh c0RpbTpmdW5jdGlvbih0LGUpe3JldHVybltlLmF0bGFzLmNvbHMsZS5hdGxhcy5yb3dzXX0s YXRsYXM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5hdGxhcy50ZXh0dXJlfSxjaGFyU3RlcDpm dW5jdGlvbih0LGUpe3JldHVybiBlLmF0bGFzLnN0ZXB9LGVtOmZ1bmN0aW9uKHQsZSl7cmV0 dXJuIGUuYXRsYXMuZW19LGNvbG9yOnQucHJvcCgiY29sb3IiKSxvcGFjaXR5OnQucHJvcCgi b3BhY2l0eSIpLHZpZXdwb3J0OnQudGhpcygidmlld3BvcnRBcnJheSIpLHNjYWxlOnQudGhp cygic2NhbGUiKSxhbGlnbjp0LnByb3AoImFsaWduIiksYmFzZWxpbmU6dC5wcm9wKCJiYXNl bGluZSIpLHRyYW5zbGF0ZTp0LnRoaXMoInRyYW5zbGF0ZSIpLHBvc2l0aW9uT2Zmc2V0OnQu cHJvcCgicG9zaXRpb25PZmZzZXQiKX0scHJpbWl0aXZlOiJwb2ludHMiLHZpZXdwb3J0OnQu dGhpcygidmlld3BvcnQiKSx2ZXJ0OiJcblx0XHRcdHByZWNpc2lvbiBoaWdocCBmbG9hdDtc blx0XHRcdGF0dHJpYnV0ZSBmbG9hdCB3aWR0aCwgY2hhck9mZnNldCwgY2hhcjtcblx0XHRc dGF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xuXHRcdFx0dW5pZm9ybSBmbG9hdCBmb250U2l6 ZSwgY2hhclN0ZXAsIGVtLCBhbGlnbiwgYmFzZWxpbmU7XG5cdFx0XHR1bmlmb3JtIHZlYzQg dmlld3BvcnQ7XG5cdFx0XHR1bmlmb3JtIHZlYzQgY29sb3I7XG5cdFx0XHR1bmlmb3JtIHZl YzIgYXRsYXNTaXplLCBhdGxhc0RpbSwgc2NhbGUsIHRyYW5zbGF0ZSwgcG9zaXRpb25PZmZz ZXQ7XG5cdFx0XHR2YXJ5aW5nIHZlYzIgY2hhckNvb3JkLCBjaGFySWQ7XG5cdFx0XHR2YXJ5 aW5nIGZsb2F0IGNoYXJXaWR0aDtcblx0XHRcdHZhcnlpbmcgdmVjNCBmb250Q29sb3I7XG5c dFx0XHR2b2lkIG1haW4gKCkge1xuXHRcdFx0XHR2ZWMyIG9mZnNldCA9IGZsb29yKGVtICog KHZlYzIoYWxpZ24gKyBjaGFyT2Zmc2V0LCBiYXNlbGluZSlcblx0XHRcdFx0XHQrIHZlYzIo cG9zaXRpb25PZmZzZXQueCwgLXBvc2l0aW9uT2Zmc2V0LnkpKSlcblx0XHRcdFx0XHQvICh2 aWV3cG9ydC56dyAqIHNjYWxlLnh5KTtcblxuXHRcdFx0XHR2ZWMyIHBvc2l0aW9uID0gKHBv c2l0aW9uICsgdHJhbnNsYXRlKSAqIHNjYWxlO1xuXHRcdFx0XHRwb3NpdGlvbiArPSBvZmZz ZXQgKiBzY2FsZTtcblxuXHRcdFx0XHRjaGFyQ29vcmQgPSBwb3NpdGlvbiAqIHZpZXdwb3J0 Lnp3ICsgdmlld3BvcnQueHk7XG5cblx0XHRcdFx0Z2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0 aW9uICogMi4gLSAxLiwgMCwgMSk7XG5cblx0XHRcdFx0Z2xfUG9pbnRTaXplID0gY2hhclN0 ZXA7XG5cblx0XHRcdFx0Y2hhcklkLnggPSBtb2QoY2hhciwgYXRsYXNEaW0ueCk7XG5cdFx0 XHRcdGNoYXJJZC55ID0gZmxvb3IoY2hhciAvIGF0bGFzRGltLngpO1xuXG5cdFx0XHRcdGNo YXJXaWR0aCA9IHdpZHRoICogZW07XG5cblx0XHRcdFx0Zm9udENvbG9yID0gY29sb3IgLyAy NTUuO1xuXHRcdFx0fSIsZnJhZzoiXG5cdFx0XHRwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG5c dFx0XHR1bmlmb3JtIGZsb2F0IGZvbnRTaXplLCBjaGFyU3RlcCwgb3BhY2l0eTtcblx0XHRc dHVuaWZvcm0gdmVjMiBhdGxhc1NpemU7XG5cdFx0XHR1bmlmb3JtIHZlYzQgdmlld3BvcnQ7 XG5cdFx0XHR1bmlmb3JtIHNhbXBsZXIyRCBhdGxhcztcblx0XHRcdHZhcnlpbmcgdmVjNCBm b250Q29sb3I7XG5cdFx0XHR2YXJ5aW5nIHZlYzIgY2hhckNvb3JkLCBjaGFySWQ7XG5cdFx0 XHR2YXJ5aW5nIGZsb2F0IGNoYXJXaWR0aDtcblxuXHRcdFx0ZmxvYXQgbGlnaHRuZXNzKHZl YzQgY29sb3IpIHtcblx0XHRcdFx0cmV0dXJuIGNvbG9yLnIgKiAwLjI5OSArIGNvbG9yLmcg KiAwLjU4NyArIGNvbG9yLmIgKiAwLjExNDtcblx0XHRcdH1cblxuXHRcdFx0dm9pZCBtYWlu ICgpIHtcblx0XHRcdFx0dmVjMiB1diA9IGdsX0ZyYWdDb29yZC54eSAtIGNoYXJDb29yZCAr IGNoYXJTdGVwICogLjU7XG5cdFx0XHRcdGZsb2F0IGhhbGZDaGFyU3RlcCA9IGZsb29yKGNo YXJTdGVwICogLjUgKyAuNSk7XG5cblx0XHRcdFx0Ly8gaW52ZXJ0IHkgYW5kIHNoaWZ0IGJ5 IDFweCAoRkYgZXhwZWNpYWxseSBuZWVkcyB0aGF0KVxuXHRcdFx0XHR1di55ID0gY2hhclN0 ZXAgLSB1di55O1xuXG5cdFx0XHRcdC8vIGlnbm9yZSBwb2ludHMgb3V0c2lkZSBvZiBjaGFy YWN0ZXIgYm91bmRpbmcgYm94XG5cdFx0XHRcdGZsb2F0IGhhbGZDaGFyV2lkdGggPSBjZWls KGNoYXJXaWR0aCAqIC41KTtcblx0XHRcdFx0aWYgKGZsb29yKHV2LngpID4gaGFsZkNoYXJT dGVwICsgaGFsZkNoYXJXaWR0aCB8fFxuXHRcdFx0XHRcdGZsb29yKHV2LngpIDwgaGFsZkNo YXJTdGVwIC0gaGFsZkNoYXJXaWR0aCkgcmV0dXJuO1xuXG5cdFx0XHRcdHV2ICs9IGNoYXJJ ZCAqIGNoYXJTdGVwO1xuXHRcdFx0XHR1diA9IHV2IC8gYXRsYXNTaXplO1xuXG5cdFx0XHRc dHZlYzQgY29sb3IgPSBmb250Q29sb3I7XG5cdFx0XHRcdHZlYzQgbWFzayA9IHRleHR1cmUy RChhdGxhcywgdXYpO1xuXG5cdFx0XHRcdGZsb2F0IG1hc2tZID0gbGlnaHRuZXNzKG1hc2sp O1xuXHRcdFx0XHQvLyBmbG9hdCBjb2xvclkgPSBsaWdodG5lc3MoY29sb3IpO1xuXHRcdFx0 XHRjb2xvci5hICo9IG1hc2tZO1xuXHRcdFx0XHRjb2xvci5hICo9IG9wYWNpdHk7XG5cblx0 XHRcdFx0Ly8gY29sb3IuYSArPSAuMTtcblxuXHRcdFx0XHQvLyBhbnRpYWxpYXNpbmcsIHNl ZSB5aXEgY29sb3Igc3BhY2UgeS1jaGFubmVsIGZvcm11bGFcblx0XHRcdFx0Ly8gY29sb3Iu cmdiICs9ICgxLiAtIGNvbG9yLnJnYikgKiAoMS4gLSBtYXNrLnJnYik7XG5cblx0XHRcdFx0 Z2xfRnJhZ0NvbG9yID0gY29sb3I7XG5cdFx0XHR9In0pO3JldHVybntyZWdsOnQsZHJhdzpl LGF0bGFzOnt9fX0sVC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7 aWYoInN0cmluZyI9PXR5cGVvZiB0KXQ9e3RleHQ6dH07ZWxzZSBpZighdClyZXR1cm47bnVs bCE9KHQ9aSh0LHtwb3NpdGlvbjoicG9zaXRpb24gcG9zaXRpb25zIGNvb3JkIGNvb3JkcyBj b29yZGluYXRlcyIsZm9udDoiZm9udCBmb250RmFjZSBmb250ZmFjZSB0eXBlZmFjZSBjc3NG b250IGNzcy1mb250IGZhbWlseSBmb250RmFtaWx5Iixmb250U2l6ZToiZm9udFNpemUgZm9u dHNpemUgc2l6ZSBmb250LXNpemUiLHRleHQ6InRleHQgdGV4dHMgY2hhcnMgY2hhcmFjdGVy cyB2YWx1ZSB2YWx1ZXMgc3ltYm9scyIsYWxpZ246ImFsaWduIGFsaWdubWVudCB0ZXh0QWxp Z24gdGV4dGJhc2VsaW5lIixiYXNlbGluZToiYmFzZWxpbmUgdGV4dEJhc2VsaW5lIHRleHRi YXNlbGluZSIsZGlyZWN0aW9uOiJkaXIgZGlyZWN0aW9uIHRleHREaXJlY3Rpb24iLGNvbG9y OiJjb2xvciBjb2xvdXIgZmlsbCBmaWxsLWNvbG9yIGZpbGxDb2xvciB0ZXh0Q29sb3IgdGV4 dGNvbG9yIixrZXJuaW5nOiJrZXJuaW5nIGtlcm4iLHJhbmdlOiJyYW5nZSBkYXRhQm94Iix2 aWV3cG9ydDoidnAgdmlld3BvcnQgdmlld0JveCB2aWV3Ym94IHZpZXdQb3J0IixvcGFjaXR5 OiJvcGFjaXR5IGFscGhhIHRyYW5zcGFyZW5jeSB2aXNpYmxlIHZpc2liaWxpdHkgb3BhcXVl IixvZmZzZXQ6Im9mZnNldCBwb3NpdGlvbk9mZnNldCBwYWRkaW5nIHNoaWZ0IGluZGVudCBp bmRlbnRhdGlvbiJ9LCEwKSkub3BhY2l0eSYmKEFycmF5LmlzQXJyYXkodC5vcGFjaXR5KT90 aGlzLm9wYWNpdHk9dC5vcGFjaXR5Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlRmxv YXQodCl9KSk6dGhpcy5vcGFjaXR5PXBhcnNlRmxvYXQodC5vcGFjaXR5KSksbnVsbCE9dC52 aWV3cG9ydCYmKHRoaXMudmlld3BvcnQ9Zih0LnZpZXdwb3J0KSx0aGlzLnZpZXdwb3J0QXJy YXk9W3RoaXMudmlld3BvcnQueCx0aGlzLnZpZXdwb3J0LnksdGhpcy52aWV3cG9ydC53aWR0 aCx0aGlzLnZpZXdwb3J0LmhlaWdodF0pLG51bGw9PXRoaXMudmlld3BvcnQmJih0aGlzLnZp ZXdwb3J0PXt4OjAseTowLHdpZHRoOnRoaXMuZ2wuZHJhd2luZ0J1ZmZlcldpZHRoLGhlaWdo dDp0aGlzLmdsLmRyYXdpbmdCdWZmZXJIZWlnaHR9LHRoaXMudmlld3BvcnRBcnJheT1bdGhp cy52aWV3cG9ydC54LHRoaXMudmlld3BvcnQueSx0aGlzLnZpZXdwb3J0LndpZHRoLHRoaXMu dmlld3BvcnQuaGVpZ2h0XSksbnVsbCE9dC5rZXJuaW5nJiYodGhpcy5rZXJuaW5nPXQua2Vy bmluZyksbnVsbCE9dC5vZmZzZXQmJigibnVtYmVyIj09dHlwZW9mIHQub2Zmc2V0JiYodC5v ZmZzZXQ9W3Qub2Zmc2V0LDBdKSx0aGlzLnBvc2l0aW9uT2Zmc2V0PXkodC5vZmZzZXQpKSx0 LmRpcmVjdGlvbiYmKHRoaXMuZGlyZWN0aW9uPXQuZGlyZWN0aW9uKSx0LnJhbmdlJiYodGhp cy5yYW5nZT10LnJhbmdlLHRoaXMuc2NhbGU9WzEvKHQucmFuZ2VbMl0tdC5yYW5nZVswXSks MS8odC5yYW5nZVszXS10LnJhbmdlWzFdKV0sdGhpcy50cmFuc2xhdGU9Wy10LnJhbmdlWzBd LC10LnJhbmdlWzFdXSksdC5zY2FsZSYmKHRoaXMuc2NhbGU9dC5zY2FsZSksdC50cmFuc2xh dGUmJih0aGlzLnRyYW5zbGF0ZT10LnRyYW5zbGF0ZSksdGhpcy5zY2FsZXx8KHRoaXMuc2Nh bGU9WzEvdGhpcy52aWV3cG9ydC53aWR0aCwxL3RoaXMudmlld3BvcnQuaGVpZ2h0XSksdGhp cy50cmFuc2xhdGV8fCh0aGlzLnRyYW5zbGF0ZT1bMCwwXSksdGhpcy5mb250Lmxlbmd0aHx8 dC5mb250fHwodC5mb250PVQuYmFzZUZvbnRTaXplKyJweCBzYW5zLXNlcmlmIik7dmFyIHIs YT0hMSxvPSExO2lmKHQuZm9udCYmKEFycmF5LmlzQXJyYXkodC5mb250KT90LmZvbnQ6W3Qu Zm9udF0pLmZvckVhY2goKGZ1bmN0aW9uKHQscil7aWYoInN0cmluZyI9PXR5cGVvZiB0KXRy eXt0PW4ucGFyc2UodCl9Y2F0Y2goZSl7dD1uLnBhcnNlKFQuYmFzZUZvbnRTaXplKyJweCAi K3QpfWVsc2UgdD1uLnBhcnNlKG4uc3RyaW5naWZ5KHQpKTt2YXIgaT1uLnN0cmluZ2lmeSh7 c2l6ZTpULmJhc2VGb250U2l6ZSxmYW1pbHk6dC5mYW1pbHksc3RyZXRjaDpfP3Quc3RyZXRj aDp2b2lkIDAsdmFyaWFudDp0LnZhcmlhbnQsd2VpZ2h0OnQud2VpZ2h0LHN0eWxlOnQuc3R5 bGV9KSxzPXAodC5zaXplKSxsPU1hdGgucm91bmQoc1swXSpkKHNbMV0pKTtpZihsIT09ZS5m b250U2l6ZVtyXSYmKG89ITAsZS5mb250U2l6ZVtyXT1sKSwhKGUuZm9udFtyXSYmaT09ZS5m b250W3JdLmJhc2VTdHJpbmd8fChhPSEwLGUuZm9udFtyXT1ULmZvbnRzW2ldLGUuZm9udFty XSkpKXt2YXIgYz10LmZhbWlseS5qb2luKCIsICIpLHU9W3Quc3R5bGVdO3Quc3R5bGUhPXQu dmFyaWFudCYmdS5wdXNoKHQudmFyaWFudCksdC52YXJpYW50IT10LndlaWdodCYmdS5wdXNo KHQud2VpZ2h0KSxfJiZ0LndlaWdodCE9dC5zdHJldGNoJiZ1LnB1c2godC5zdHJldGNoKSxl LmZvbnRbcl09e2Jhc2VTdHJpbmc6aSxmYW1pbHk6Yyx3ZWlnaHQ6dC53ZWlnaHQsc3RyZXRj aDp0LnN0cmV0Y2gsc3R5bGU6dC5zdHlsZSx2YXJpYW50OnQudmFyaWFudCx3aWR0aDp7fSxr ZXJuaW5nOnt9LG1ldHJpY3M6dihjLHtvcmlnaW46InRvcCIsZm9udFNpemU6VC5iYXNlRm9u dFNpemUsZm9udFN0eWxlOnUuam9pbigiICIpfSl9LFQuZm9udHNbaV09ZS5mb250W3JdfX0p KSwoYXx8bykmJnRoaXMuZm9udC5mb3JFYWNoKChmdW5jdGlvbihyLGkpe3ZhciBhPW4uc3Ry aW5naWZ5KHtzaXplOmUuZm9udFNpemVbaV0sZmFtaWx5OnIuZmFtaWx5LHN0cmV0Y2g6Xz9y LnN0cmV0Y2g6dm9pZCAwLHZhcmlhbnQ6ci52YXJpYW50LHdlaWdodDpyLndlaWdodCxzdHls ZTpyLnN0eWxlfSk7aWYoZS5mb250QXRsYXNbaV09ZS5zaGFkZXIuYXRsYXNbYV0sIWUuZm9u dEF0bGFzW2ldKXt2YXIgbz1yLm1ldHJpY3M7ZS5zaGFkZXIuYXRsYXNbYV09ZS5mb250QXRs YXNbaV09e2ZvbnRTdHJpbmc6YSxzdGVwOjIqTWF0aC5jZWlsKGUuZm9udFNpemVbaV0qby5i b3R0b20qLjUpLGVtOmUuZm9udFNpemVbaV0sY29sczowLHJvd3M6MCxoZWlnaHQ6MCx3aWR0 aDowLGNoYXJzOltdLGlkczp7fSx0ZXh0dXJlOmUucmVnbC50ZXh0dXJlKCl9fW51bGw9PXQu dGV4dCYmKHQudGV4dD1lLnRleHQpfSkpLCJzdHJpbmciPT10eXBlb2YgdC50ZXh0JiZ0LnBv c2l0aW9uJiZ0LnBvc2l0aW9uLmxlbmd0aD4yKXtmb3IodmFyIHM9QXJyYXkoLjUqdC5wb3Np dGlvbi5sZW5ndGgpLGg9MDtoPHMubGVuZ3RoO2grKylzW2hdPXQudGV4dDt0LnRleHQ9c31p ZihudWxsIT10LnRleHR8fGEpe2lmKHRoaXMudGV4dE9mZnNldHM9WzBdLEFycmF5LmlzQXJy YXkodC50ZXh0KSl7dGhpcy5jb3VudD10LnRleHRbMF0ubGVuZ3RoLHRoaXMuY291bnRzPVt0 aGlzLmNvdW50XTtmb3IodmFyIGI9MTtiPHQudGV4dC5sZW5ndGg7YisrKXRoaXMudGV4dE9m ZnNldHNbYl09dGhpcy50ZXh0T2Zmc2V0c1tiLTFdK3QudGV4dFtiLTFdLmxlbmd0aCx0aGlz LmNvdW50Kz10LnRleHRbYl0ubGVuZ3RoLHRoaXMuY291bnRzLnB1c2godC50ZXh0W2JdLmxl bmd0aCk7dGhpcy50ZXh0PXQudGV4dC5qb2luKCIiKX1lbHNlIHRoaXMudGV4dD10LnRleHQs dGhpcy5jb3VudD10aGlzLnRleHQubGVuZ3RoLHRoaXMuY291bnRzPVt0aGlzLmNvdW50XTty PVtdLHRoaXMuZm9udC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe1QuYXRsYXNDb250ZXh0LmZv bnQ9dC5iYXNlU3RyaW5nO2Zvcih2YXIgaT1lLmZvbnRBdGxhc1tuXSxhPTA7YTxlLnRleHQu bGVuZ3RoO2ErKyl7dmFyIG89ZS50ZXh0LmNoYXJBdChhKTtpZihudWxsPT1pLmlkc1tvXSYm KGkuaWRzW29dPWkuY2hhcnMubGVuZ3RoLGkuY2hhcnMucHVzaChvKSxyLnB1c2gobykpLG51 bGw9PXQud2lkdGhbb10mJih0LndpZHRoW29dPVQuYXRsYXNDb250ZXh0Lm1lYXN1cmVUZXh0 KG8pLndpZHRoL1QuYmFzZUZvbnRTaXplLGUua2VybmluZykpe3ZhciBzPVtdO2Zvcih2YXIg bCBpbiB0LndpZHRoKXMucHVzaChsK28sbytsKTtnKHQua2VybmluZyxtKHQuZmFtaWx5LHtw YWlyczpzfSkpfX19KSl9aWYodC5wb3NpdGlvbilpZih0LnBvc2l0aW9uLmxlbmd0aD4yKXtm b3IodmFyIHc9IXQucG9zaXRpb25bMF0ubGVuZ3RoLGs9dS5tYWxsb2NGbG9hdCgyKnRoaXMu Y291bnQpLEE9MCxNPTA7QTx0aGlzLmNvdW50cy5sZW5ndGg7QSsrKXt2YXIgUz10aGlzLmNv dW50c1tBXTtpZih3KWZvcih2YXIgRT0wO0U8UztFKyspa1tNKytdPXQucG9zaXRpb25bMipB XSxrW00rK109dC5wb3NpdGlvblsyKkErMV07ZWxzZSBmb3IodmFyIEw9MDtMPFM7TCsrKWtb TSsrXT10LnBvc2l0aW9uW0FdWzBdLGtbTSsrXT10LnBvc2l0aW9uW0FdWzFdfXRoaXMucG9z aXRpb24uY2FsbD90aGlzLnBvc2l0aW9uKHt0eXBlOiJmbG9hdCIsZGF0YTprfSk6dGhpcy5w b3NpdGlvbj10aGlzLnJlZ2wuYnVmZmVyKHt0eXBlOiJmbG9hdCIsZGF0YTprfSksdS5mcmVl RmxvYXQoayl9ZWxzZSB0aGlzLnBvc2l0aW9uLmRlc3Ryb3kmJnRoaXMucG9zaXRpb24uZGVz dHJveSgpLHRoaXMucG9zaXRpb249e2NvbnN0YW50OnQucG9zaXRpb259O2lmKHQudGV4dHx8 YSl7dmFyIEM9dS5tYWxsb2NVaW50OCh0aGlzLmNvdW50KSxQPXUubWFsbG9jRmxvYXQoMip0 aGlzLmNvdW50KTt0aGlzLnRleHRXaWR0aD1bXTtmb3IodmFyIEk9MCxPPTA7STx0aGlzLmNv dW50cy5sZW5ndGg7SSsrKXtmb3IodmFyIHo9dGhpcy5jb3VudHNbSV0sRD10aGlzLmZvbnRb SV18fHRoaXMuZm9udFswXSxSPXRoaXMuZm9udEF0bGFzW0ldfHx0aGlzLmZvbnRBdGxhc1sw XSxGPTA7Rjx6O0YrKyl7dmFyIEI9dGhpcy50ZXh0LmNoYXJBdChPKSxOPXRoaXMudGV4dC5j aGFyQXQoTy0xKTtpZihDW09dPVIuaWRzW0JdLFBbMipPXT1ELndpZHRoW0JdLEYpe3ZhciBq PVBbMipPLTJdLFU9UFsyKk9dLFY9UFsyKk8tMV0rLjUqaisuNSpVO2lmKHRoaXMua2Vybmlu Zyl7dmFyIEg9RC5rZXJuaW5nW04rQl07SCYmKFYrPS4wMDEqSCl9UFsyKk8rMV09Vn1lbHNl IFBbMipPKzFdPS41KlBbMipPXTtPKyt9dGhpcy50ZXh0V2lkdGgucHVzaChQLmxlbmd0aD8u NSpQWzIqTy0yXStQWzIqTy0xXTowKX10LmFsaWdufHwodC5hbGlnbj10aGlzLmFsaWduKSx0 aGlzLmNoYXJCdWZmZXIoe2RhdGE6Qyx0eXBlOiJ1aW50OCIsdXNhZ2U6InN0cmVhbSJ9KSx0 aGlzLnNpemVCdWZmZXIoe2RhdGE6UCx0eXBlOiJmbG9hdCIsdXNhZ2U6InN0cmVhbSJ9KSx1 LmZyZWVVaW50OChDKSx1LmZyZWVGbG9hdChQKSxyLmxlbmd0aCYmdGhpcy5mb250LmZvckVh Y2goKGZ1bmN0aW9uKHQscil7dmFyIG49ZS5mb250QXRsYXNbcl0saT1uLnN0ZXAsYT1NYXRo LmZsb29yKFQubWF4QXRsYXNTaXplL2kpLG89TWF0aC5taW4oYSxuLmNoYXJzLmxlbmd0aCks cz1NYXRoLmNlaWwobi5jaGFycy5sZW5ndGgvbyksbD14KG8qaSksdT14KHMqaSk7bi53aWR0 aD1sLG4uaGVpZ2h0PXUsbi5yb3dzPXMsbi5jb2xzPW8sbi5lbSYmbi50ZXh0dXJlKHtkYXRh OmMoe2NhbnZhczpULmF0bGFzQ2FudmFzLGZvbnQ6bi5mb250U3RyaW5nLGNoYXJzOm4uY2hh cnMsc2hhcGU6W2wsdV0sc3RlcDpbaSxpXX0pfSl9KSl9aWYodC5hbGlnbiYmKHRoaXMuYWxp Z249dC5hbGlnbix0aGlzLmFsaWduT2Zmc2V0PXRoaXMudGV4dFdpZHRoLm1hcCgoZnVuY3Rp b24odCxyKXt2YXIgbj1BcnJheS5pc0FycmF5KGUuYWxpZ24pP2UuYWxpZ24ubGVuZ3RoPjE/ ZS5hbGlnbltyXTplLmFsaWduWzBdOmUuYWxpZ247aWYoIm51bWJlciI9PXR5cGVvZiBuKXJl dHVybiBuO3N3aXRjaChuKXtjYXNlInJpZ2h0IjpjYXNlImVuZCI6cmV0dXJuLXQ7Y2FzZSJj ZW50ZXIiOmNhc2UiY2VudHJlIjpjYXNlIm1pZGRsZSI6cmV0dXJuLjUqLXR9cmV0dXJuIDB9 KSkpLG51bGw9PXRoaXMuYmFzZWxpbmUmJm51bGw9PXQuYmFzZWxpbmUmJih0LmJhc2VsaW5l PTApLG51bGwhPXQuYmFzZWxpbmUmJih0aGlzLmJhc2VsaW5lPXQuYmFzZWxpbmUsQXJyYXku aXNBcnJheSh0aGlzLmJhc2VsaW5lKXx8KHRoaXMuYmFzZWxpbmU9W3RoaXMuYmFzZWxpbmVd KSx0aGlzLmJhc2VsaW5lT2Zmc2V0PXRoaXMuYmFzZWxpbmUubWFwKChmdW5jdGlvbih0LHIp e3ZhciBuPShlLmZvbnRbcl18fGUuZm9udFswXSkubWV0cmljcyxpPTA7cmV0dXJuIGkrPS41 Km4uYm90dG9tLGkrPSJudW1iZXIiPT10eXBlb2YgdD90LW4uYmFzZWxpbmU6LW5bdF0saSo9 LTF9KSkpLG51bGwhPXQuY29sb3IpaWYodC5jb2xvcnx8KHQuY29sb3I9InRyYW5zcGFyZW50 IiksInN0cmluZyIhPXR5cGVvZiB0LmNvbG9yJiZpc05hTih0LmNvbG9yKSl7dmFyIHE7aWYo Im51bWJlciI9PXR5cGVvZiB0LmNvbG9yWzBdJiZ0LmNvbG9yLmxlbmd0aD50aGlzLmNvdW50 cy5sZW5ndGgpe3ZhciBHPXQuY29sb3IubGVuZ3RoO3E9dS5tYWxsb2NVaW50OChHKTtmb3Io dmFyIFk9KHQuY29sb3Iuc3ViYXJyYXl8fHQuY29sb3Iuc2xpY2UpLmJpbmQodC5jb2xvciks Vz0wO1c8RztXKz00KXEuc2V0KGwoWShXLFcrNCksInVpbnQ4IiksVyl9ZWxzZXt2YXIgWD10 LmNvbG9yLmxlbmd0aDtxPXUubWFsbG9jVWludDgoNCpYKTtmb3IodmFyIFo9MDtaPFg7Wisr KXEuc2V0KGwodC5jb2xvcltaXXx8MCwidWludDgiKSw0KlopfXRoaXMuY29sb3I9cX1lbHNl IHRoaXMuY29sb3I9bCh0LmNvbG9yLCJ1aW50OCIpO2lmKHQucG9zaXRpb258fHQudGV4dHx8 dC5jb2xvcnx8dC5iYXNlbGluZXx8dC5hbGlnbnx8dC5mb250fHx0Lm9mZnNldHx8dC5vcGFj aXR5KWlmKHRoaXMuY29sb3IubGVuZ3RoPjR8fHRoaXMuYmFzZWxpbmVPZmZzZXQubGVuZ3Ro PjF8fHRoaXMuYWxpZ24mJnRoaXMuYWxpZ24ubGVuZ3RoPjF8fHRoaXMuZm9udEF0bGFzLmxl bmd0aD4xfHx0aGlzLnBvc2l0aW9uT2Zmc2V0Lmxlbmd0aD4yKXt2YXIgSj1NYXRoLm1heCgu NSp0aGlzLnBvc2l0aW9uLmxlbmd0aHx8MCwuMjUqdGhpcy5jb2xvci5sZW5ndGh8fDAsdGhp cy5iYXNlbGluZU9mZnNldC5sZW5ndGh8fDAsdGhpcy5hbGlnbk9mZnNldC5sZW5ndGh8fDAs dGhpcy5mb250Lmxlbmd0aHx8MCx0aGlzLm9wYWNpdHkubGVuZ3RofHwwLC41KnRoaXMucG9z aXRpb25PZmZzZXQubGVuZ3RofHwwKTt0aGlzLmJhdGNoPUFycmF5KEopO2Zvcih2YXIgSz0w O0s8dGhpcy5iYXRjaC5sZW5ndGg7SysrKXRoaXMuYmF0Y2hbS109e2NvdW50OnRoaXMuY291 bnRzLmxlbmd0aD4xP3RoaXMuY291bnRzW0tdOnRoaXMuY291bnRzWzBdLG9mZnNldDp0aGlz LnRleHRPZmZzZXRzLmxlbmd0aD4xP3RoaXMudGV4dE9mZnNldHNbS106dGhpcy50ZXh0T2Zm c2V0c1swXSxjb2xvcjp0aGlzLmNvbG9yP3RoaXMuY29sb3IubGVuZ3RoPD00P3RoaXMuY29s b3I6dGhpcy5jb2xvci5zdWJhcnJheSg0KkssNCpLKzQpOlswLDAsMCwyNTVdLG9wYWNpdHk6 QXJyYXkuaXNBcnJheSh0aGlzLm9wYWNpdHkpP3RoaXMub3BhY2l0eVtLXTp0aGlzLm9wYWNp dHksYmFzZWxpbmU6bnVsbCE9dGhpcy5iYXNlbGluZU9mZnNldFtLXT90aGlzLmJhc2VsaW5l T2Zmc2V0W0tdOnRoaXMuYmFzZWxpbmVPZmZzZXRbMF0sYWxpZ246dGhpcy5hbGlnbj9udWxs IT10aGlzLmFsaWduT2Zmc2V0W0tdP3RoaXMuYWxpZ25PZmZzZXRbS106dGhpcy5hbGlnbk9m ZnNldFswXTowLGF0bGFzOnRoaXMuZm9udEF0bGFzW0tdfHx0aGlzLmZvbnRBdGxhc1swXSxw b3NpdGlvbk9mZnNldDp0aGlzLnBvc2l0aW9uT2Zmc2V0Lmxlbmd0aD4yP3RoaXMucG9zaXRp b25PZmZzZXQuc3ViYXJyYXkoMipLLDIqSysyKTp0aGlzLnBvc2l0aW9uT2Zmc2V0fX1lbHNl IHRoaXMuY291bnQ/dGhpcy5iYXRjaD1be2NvdW50OnRoaXMuY291bnQsb2Zmc2V0OjAsY29s b3I6dGhpcy5jb2xvcnx8WzAsMCwwLDI1NV0sb3BhY2l0eTpBcnJheS5pc0FycmF5KHRoaXMu b3BhY2l0eSk/dGhpcy5vcGFjaXR5WzBdOnRoaXMub3BhY2l0eSxiYXNlbGluZTp0aGlzLmJh c2VsaW5lT2Zmc2V0WzBdLGFsaWduOnRoaXMuYWxpZ25PZmZzZXQ/dGhpcy5hbGlnbk9mZnNl dFswXTowLGF0bGFzOnRoaXMuZm9udEF0bGFzWzBdLHBvc2l0aW9uT2Zmc2V0OnRoaXMucG9z aXRpb25PZmZzZXR9XTp0aGlzLmJhdGNoPVtdfSxULnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0 aW9uKCl7fSxULnByb3RvdHlwZS5rZXJuaW5nPSEwLFQucHJvdG90eXBlLnBvc2l0aW9uPXtj b25zdGFudDpuZXcgRmxvYXQzMkFycmF5KDIpfSxULnByb3RvdHlwZS50cmFuc2xhdGU9bnVs bCxULnByb3RvdHlwZS5zY2FsZT1udWxsLFQucHJvdG90eXBlLmZvbnQ9bnVsbCxULnByb3Rv dHlwZS50ZXh0PSIiLFQucHJvdG90eXBlLnBvc2l0aW9uT2Zmc2V0PVswLDBdLFQucHJvdG90 eXBlLm9wYWNpdHk9MSxULnByb3RvdHlwZS5jb2xvcj1uZXcgVWludDhBcnJheShbMCwwLDAs MjU1XSksVC5wcm90b3R5cGUuYWxpZ25PZmZzZXQ9WzAsMF0sVC5tYXhBdGxhc1NpemU9MTAy NCxULmF0bGFzQ2FudmFzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLFQuYXRs YXNDb250ZXh0PVQuYXRsYXNDYW52YXMuZ2V0Q29udGV4dCgiMmQiLHthbHBoYTohMX0pLFQu YmFzZUZvbnRTaXplPTY0LFQuZm9udHM9e30sZS5leHBvcnRzPVR9LHsiYml0LXR3aWRkbGUi OjgxLCJjb2xvci1ub3JtYWxpemUiOjg5LCJjc3MtZm9udCI6OTksImRldGVjdC1rZXJuaW5n IjoxMjUsImVzNi13ZWFrLW1hcCI6MTgzLCJmbGF0dGVuLXZlcnRleC1kYXRhIjoxOTEsImZv bnQtYXRsYXMiOjE5MiwiZm9udC1tZWFzdXJlIjoxOTMsImdsLXV0aWwvY29udGV4dCI6MjI2 LCJpcy1wbGFpbi1vYmoiOjIzNiwib2JqZWN0LWFzc2lnbiI6MjQ3LCJwYXJzZS1yZWN0Ijoy NDksInBhcnNlLXVuaXQiOjI1MSwicGljay1ieS1hbGlhcyI6MjUzLHJlZ2w6MjgzLCJ0by1w eCI6MzE0LCJ0eXBlZGFycmF5LXBvb2wiOjMyN31dLDIyNjpbZnVuY3Rpb24odCxlLHIpeyhm dW5jdGlvbihyKXsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIG49dCgicGljay1ieS1h bGlhcyIpO2Z1bmN0aW9uIGkodCl7aWYodC5jb250YWluZXIpaWYodC5jb250YWluZXI9PWRv Y3VtZW50LmJvZHkpZG9jdW1lbnQuYm9keS5zdHlsZS53aWR0aHx8KHQuY2FudmFzLndpZHRo PXQud2lkdGh8fHQucGl4ZWxSYXRpbypyLmlubmVyV2lkdGgpLGRvY3VtZW50LmJvZHkuc3R5 bGUuaGVpZ2h0fHwodC5jYW52YXMuaGVpZ2h0PXQuaGVpZ2h0fHx0LnBpeGVsUmF0aW8qci5p bm5lckhlaWdodCk7ZWxzZXt2YXIgZT10LmNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJl Y3QoKTt0LmNhbnZhcy53aWR0aD10LndpZHRofHxlLnJpZ2h0LWUubGVmdCx0LmNhbnZhcy5o ZWlnaHQ9dC5oZWlnaHR8fGUuYm90dG9tLWUudG9wfX1mdW5jdGlvbiBhKHQpe3JldHVybiJm dW5jdGlvbiI9PXR5cGVvZiB0LmdldENvbnRleHQmJiJ3aWR0aCJpbiB0JiYiaGVpZ2h0Imlu IHR9ZnVuY3Rpb24gbygpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIp O3JldHVybiB0LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdC5zdHlsZS50b3A9MCx0LnN0 eWxlLmxlZnQ9MCx0fWUuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZTtpZih0PyJzdHJpbmci PT10eXBlb2YgdCYmKHQ9e2NvbnRhaW5lcjp0fSk6dD17fSxhKHQpP3Q9e2NvbnRhaW5lcjp0 fTp0PSJzdHJpbmciPT10eXBlb2YoZT10KS5ub2RlTmFtZSYmImZ1bmN0aW9uIj09dHlwZW9m IGUuYXBwZW5kQ2hpbGQmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmdldEJvdW5kaW5nQ2xpZW50 UmVjdD97Y29udGFpbmVyOnR9OmZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVv ZiB0LmRyYXdBcnJheXN8fCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRyYXdFbGVtZW50c30odCk/ e2dsOnR9Om4odCx7Y29udGFpbmVyOiJjb250YWluZXIgdGFyZ2V0IGVsZW1lbnQgZWwgY2Fu dmFzIGhvbGRlciBwYXJlbnQgcGFyZW50Tm9kZSB3cmFwcGVyIHVzZSByZWYgcm9vdCBub2Rl IixnbDoiZ2wgY29udGV4dCB3ZWJnbCBnbENvbnRleHQiLGF0dHJzOiJhdHRyaWJ1dGVzIGF0 dHJzIGNvbnRleHRBdHRyaWJ1dGVzIixwaXhlbFJhdGlvOiJwaXhlbFJhdGlvIHB4UmF0aW8g cHggcmF0aW8gcHhyYXRpbyBwaXhlbHJhdGlvIix3aWR0aDoidyB3aWR0aCIsaGVpZ2h0OiJo IGhlaWdodCJ9LCEwKSx0LnBpeGVsUmF0aW98fCh0LnBpeGVsUmF0aW89ci5waXhlbFJhdGlv fHwxKSx0LmdsKXJldHVybiB0LmdsO2lmKHQuY2FudmFzJiYodC5jb250YWluZXI9dC5jYW52 YXMucGFyZW50Tm9kZSksdC5jb250YWluZXIpe2lmKCJzdHJpbmciPT10eXBlb2YgdC5jb250 YWluZXIpe3ZhciBzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodC5jb250YWluZXIpO2lmKCFz KXRocm93IEVycm9yKCJFbGVtZW50ICIrdC5jb250YWluZXIrIiBpcyBub3QgZm91bmQiKTt0 LmNvbnRhaW5lcj1zfWEodC5jb250YWluZXIpPyh0LmNhbnZhcz10LmNvbnRhaW5lcix0LmNv bnRhaW5lcj10LmNhbnZhcy5wYXJlbnROb2RlKTp0LmNhbnZhc3x8KHQuY2FudmFzPW8oKSx0 LmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0LmNhbnZhcyksaSh0KSl9ZWxzZSBpZighdC5jYW52 YXMpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgZG9jdW1lbnQpdGhyb3cgRXJyb3IoIk5vdCBE T00gZW52aXJvbm1lbnQuIFVzZSBoZWFkbGVzcy1nbC4iKTt0LmNvbnRhaW5lcj1kb2N1bWVu dC5ib2R5fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsdC5jYW52YXM9bygpLHQuY29udGFp bmVyLmFwcGVuZENoaWxkKHQuY2FudmFzKSxpKHQpfXJldHVybiB0LmdsfHxbIndlYmdsIiwi ZXhwZXJpbWVudGFsLXdlYmdsIiwid2ViZ2wtZXhwZXJpbWVudGFsIl0uc29tZSgoZnVuY3Rp b24oZSl7dHJ5e3QuZ2w9dC5jYW52YXMuZ2V0Q29udGV4dChlLHQuYXR0cnMpfWNhdGNoKHQp e31yZXR1cm4gdC5nbH0pKSx0LmdsfX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMsInVuZGVm aW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9z ZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHsicGljay1ieS1h bGlhcyI6MjUzfV0sMjI3OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQp eyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9W3RdKTtmb3IodmFyIGU9W10uc2xpY2UuY2FsbChh cmd1bWVudHMsMSkscj1bXSxuPTA7bjx0Lmxlbmd0aC0xO24rKylyLnB1c2godFtuXSxlW25d fHwiIik7cmV0dXJuIHIucHVzaCh0W25dKSxyLmpvaW4oIiIpfX0se31dLDIyODpbZnVuY3Rp b24odCxlLHIpeyhmdW5jdGlvbihyKXsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIG4s aT10KCJpcy1icm93c2VyIik7bj0iZnVuY3Rpb24iPT10eXBlb2Ygci5tYXRjaE1lZGlhPyFy Lm1hdGNoTWVkaWEoIihob3Zlcjogbm9uZSkiKS5tYXRjaGVzOmksZS5leHBvcnRzPW59KS5j YWxsKHRoaXMpfSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2Jh bDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdp bmRvdz93aW5kb3c6e30pfSx7ImlzLWJyb3dzZXIiOjIzMn1dLDIyOTpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJpcy1icm93c2VyIik7ZS5leHBvcnRzPW4mJmZ1 bmN0aW9uKCl7dmFyIHQ9ITE7dHJ5e3ZhciBlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwi cGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe3Q9ITB9fSk7d2luZG93LmFkZEV2ZW50TGlzdGVu ZXIoInRlc3QiLG51bGwsZSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3QiLG51 bGwsZSl9Y2F0Y2goZSl7dD0hMX1yZXR1cm4gdH0oKX0seyJpcy1icm93c2VyIjoyMzJ9XSwy MzA6W2Z1bmN0aW9uKHQsZSxyKXtyLnJlYWQ9ZnVuY3Rpb24odCxlLHIsbixpKXt2YXIgYSxv LHM9OCppLW4tMSxsPSgxPDxzKS0xLGM9bD4+MSx1PS03LGY9cj9pLTE6MCxoPXI/LTE6MSxw PXRbZStmXTtmb3IoZis9aCxhPXAmKDE8PC11KS0xLHA+Pj0tdSx1Kz1zO3U+MDthPTI1Niph K3RbZStmXSxmKz1oLHUtPTgpO2ZvcihvPWEmKDE8PC11KS0xLGE+Pj0tdSx1Kz1uO3U+MDtv PTI1NipvK3RbZStmXSxmKz1oLHUtPTgpO2lmKDA9PT1hKWE9MS1jO2Vsc2V7aWYoYT09PWwp cmV0dXJuIG8/TmFOOjEvMCoocD8tMToxKTtvKz1NYXRoLnBvdygyLG4pLGEtPWN9cmV0dXJu KHA/LTE6MSkqbypNYXRoLnBvdygyLGEtbil9LHIud3JpdGU9ZnVuY3Rpb24odCxlLHIsbixp LGEpe3ZhciBvLHMsbCxjPTgqYS1pLTEsdT0oMTw8YyktMSxmPXU+PjEsaD0yMz09PWk/TWF0 aC5wb3coMiwtMjQpLU1hdGgucG93KDIsLTc3KTowLHA9bj8wOmEtMSxkPW4/MTotMSxtPWU8 MHx8MD09PWUmJjEvZTwwPzE6MDtmb3IoZT1NYXRoLmFicyhlKSxpc05hTihlKXx8ZT09PTEv MD8ocz1pc05hTihlKT8xOjAsbz11KToobz1NYXRoLmZsb29yKE1hdGgubG9nKGUpL01hdGgu TE4yKSxlKihsPU1hdGgucG93KDIsLW8pKTwxJiYoby0tLGwqPTIpLChlKz1vK2Y+PTE/aC9s OmgqTWF0aC5wb3coMiwxLWYpKSpsPj0yJiYobysrLGwvPTIpLG8rZj49dT8ocz0wLG89dSk6 bytmPj0xPyhzPShlKmwtMSkqTWF0aC5wb3coMixpKSxvKz1mKToocz1lKk1hdGgucG93KDIs Zi0xKSpNYXRoLnBvdygyLGkpLG89MCkpO2k+PTg7dFtyK3BdPTI1NSZzLHArPWQscy89MjU2 LGktPTgpO2ZvcihvPW88PGl8cyxjKz1pO2M+MDt0W3IrcF09MjU1Jm8scCs9ZCxvLz0yNTYs Yy09OCk7dFtyK3AtZF18PTEyOCptfX0se31dLDIzMTpbZnVuY3Rpb24odCxlLHIpeyJmdW5j dGlvbiI9PXR5cGVvZiBPYmplY3QuY3JlYXRlP2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Um Jih0LnN1cGVyXz1lLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUse2Nv bnN0cnVjdG9yOnt2YWx1ZTp0LGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJh YmxlOiEwfX0pKX06ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYoZSl7dC5zdXBlcl89ZTt2 YXIgcj1mdW5jdGlvbigpe307ci5wcm90b3R5cGU9ZS5wcm90b3R5cGUsdC5wcm90b3R5cGU9 bmV3IHIsdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dH19fSx7fV0sMjMyOltmdW5jdGlvbih0 LGUscil7ZS5leHBvcnRzPSEwfSx7fV0sMjMzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO2UuZXhwb3J0cz0idW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmKC9NU0lFLy50 ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpfHwvVHJpZGVudFwvLy50ZXN0KG5hdmlnYXRvci5h cHBWZXJzaW9uKSl9LHt9XSwyMzQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5l eHBvcnRzPWEsZS5leHBvcnRzLmlzTW9iaWxlPWEsZS5leHBvcnRzLmRlZmF1bHQ9YTt2YXIg bj0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2ti ZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhv bmV8b2QpfGlyaXN8a2luZGxlfGxnZSB8bWFlbW98bWlkcHxtbXB8bW9iaWxlLitmaXJlZm94 fG5ldGZyb250fG9wZXJhIG0ob2J8aW4paXxwYWxtKCBvcyk/fHBob25lfHAoaXhpfHJlKVwv fHBsdWNrZXJ8cG9ja2V0fHBzcHxzZXJpZXNbNDZdMHxzeW1iaWFufHRyZW98dXBcLihicm93 c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vL2ks aT0vKGFuZHJvaWR8YmJcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXC98YmxhY2ti ZXJyeXxibGF6ZXJ8Y29tcGFsfGVsYWluZXxmZW5uZWN8aGlwdG9wfGllbW9iaWxlfGlwKGhv bmV8b2QpfGlyaXN8a2luZGxlfGxnZSB8bWFlbW98bWlkcHxtbXB8bW9iaWxlLitmaXJlZm94 fG5ldGZyb250fG9wZXJhIG0ob2J8aW4paXxwYWxtKCBvcyk/fHBob25lfHAoaXhpfHJlKVwv fHBsdWNrZXJ8cG9ja2V0fHBzcHxzZXJpZXNbNDZdMHxzeW1iaWFufHRyZW98dXBcLihicm93 c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vfGFu ZHJvaWR8aXBhZHxwbGF5Ym9va3xzaWxrL2k7ZnVuY3Rpb24gYSh0KXt0fHwodD17fSk7dmFy IGU9dC51YTtpZihlfHwidW5kZWZpbmVkIj09dHlwZW9mIG5hdmlnYXRvcnx8KGU9bmF2aWdh dG9yLnVzZXJBZ2VudCksZSYmZS5oZWFkZXJzJiYic3RyaW5nIj09dHlwZW9mIGUuaGVhZGVy c1sidXNlci1hZ2VudCJdJiYoZT1lLmhlYWRlcnNbInVzZXItYWdlbnQiXSksInN0cmluZyIh PXR5cGVvZiBlKXJldHVybiExO3ZhciByPXQudGFibGV0P2kudGVzdChlKTpuLnRlc3QoZSk7 cmV0dXJuIXImJnQudGFibGV0JiZ0LmZlYXR1cmVEZXRlY3QmJm5hdmlnYXRvciYmbmF2aWdh dG9yLm1heFRvdWNoUG9pbnRzPjEmJi0xIT09ZS5pbmRleE9mKCJNYWNpbnRvc2giKSYmLTEh PT1lLmluZGV4T2YoIlNhZmFyaSIpJiYocj0hMCkscn19LHt9XSwyMzU6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXR5cGVvZiB0 O3JldHVybiBudWxsIT09dCYmKCJvYmplY3QiPT09ZXx8ImZ1bmN0aW9uIj09PWUpfX0se31d LDIzNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1PYmplY3QucHJvdG90 eXBlLnRvU3RyaW5nO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4iW29iamVj dCBPYmplY3RdIj09PW4uY2FsbCh0KSYmKG51bGw9PT0oZT1PYmplY3QuZ2V0UHJvdG90eXBl T2YodCkpfHxlPT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHt9KSl9fSx7fV0sMjM3OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFy IGUscj10Lmxlbmd0aCxuPTA7bjxyO24rKylpZigoKGU9dC5jaGFyQ29kZUF0KG4pKTw5fHxl PjEzKSYmMzIhPT1lJiYxMzMhPT1lJiYxNjAhPT1lJiY1NzYwIT09ZSYmNjE1OCE9PWUmJihl PDgxOTJ8fGU+ODIwNSkmJjgyMzIhPT1lJiY4MjMzIT09ZSYmODIzOSE9PWUmJjgyODchPT1l JiY4Mjg4IT09ZSYmMTIyODghPT1lJiY2NTI3OSE9PWUpcmV0dXJuITE7cmV0dXJuITB9fSx7 fV0sMjM4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlv bih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJih0PXQudHJpbSgpLCEhKC9eW216bGh2 Y3NxdGFdXHMqWy0rLjAtOV1bXm1saHZ6Y3NxdGFdKy9pLnRlc3QodCkmJi9bXGR6XSQvaS50 ZXN0KHQpJiZ0Lmxlbmd0aD40KSl9fSx7fV0sMjM5OltmdW5jdGlvbih0LGUscil7IWZ1bmN0 aW9uKHQsbil7Im9iamVjdCI9PXR5cGVvZiByJiZ2b2lkIDAhPT1lP2UuZXhwb3J0cz1uKCk6 KHQ9dHx8c2VsZikubWFwYm94Z2w9bigpfSh0aGlzLChmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0 Ijt2YXIgdCxlLHI7ZnVuY3Rpb24gbihuLGkpe2lmKHQpaWYoZSl7dmFyIGE9InZhciBzaGFy ZWRDaHVuayA9IHt9OyAoIit0KyIpKHNoYXJlZENodW5rKTsgKCIrZSsiKShzaGFyZWRDaHVu ayk7IixvPXt9O3QobyksKHI9aShvKSkud29ya2VyVXJsPXdpbmRvdy5VUkwuY3JlYXRlT2Jq ZWN0VVJMKG5ldyBCbG9iKFthXSx7dHlwZToidGV4dC9qYXZhc2NyaXB0In0pKX1lbHNlIGU9 aTtlbHNlIHQ9aX1yZXR1cm4gbigwLChmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQsZSl7cmV0 dXJuIHQoZT17ZXhwb3J0czp7fX0sZS5leHBvcnRzKSxlLmV4cG9ydHN9dmFyIHI9bjtmdW5j dGlvbiBuKHQsZSxyLG4pe3RoaXMuY3g9Myp0LHRoaXMuYng9Myooci10KS10aGlzLmN4LHRo aXMuYXg9MS10aGlzLmN4LXRoaXMuYngsdGhpcy5jeT0zKmUsdGhpcy5ieT0zKihuLWUpLXRo aXMuY3ksdGhpcy5heT0xLXRoaXMuY3ktdGhpcy5ieSx0aGlzLnAxeD10LHRoaXMucDF5PW4s dGhpcy5wMng9cix0aGlzLnAyeT1ufW4ucHJvdG90eXBlLnNhbXBsZUN1cnZlWD1mdW5jdGlv bih0KXtyZXR1cm4oKHRoaXMuYXgqdCt0aGlzLmJ4KSp0K3RoaXMuY3gpKnR9LG4ucHJvdG90 eXBlLnNhbXBsZUN1cnZlWT1mdW5jdGlvbih0KXtyZXR1cm4oKHRoaXMuYXkqdCt0aGlzLmJ5 KSp0K3RoaXMuY3kpKnR9LG4ucHJvdG90eXBlLnNhbXBsZUN1cnZlRGVyaXZhdGl2ZVg9ZnVu Y3Rpb24odCl7cmV0dXJuKDMqdGhpcy5heCp0KzIqdGhpcy5ieCkqdCt0aGlzLmN4fSxuLnBy b3RvdHlwZS5zb2x2ZUN1cnZlWD1mdW5jdGlvbih0LGUpe3ZhciByLG4saSxhLG87Zm9yKHZv aWQgMD09PWUmJihlPTFlLTYpLGk9dCxvPTA7bzw4O28rKyl7aWYoYT10aGlzLnNhbXBsZUN1 cnZlWChpKS10LE1hdGguYWJzKGEpPGUpcmV0dXJuIGk7dmFyIHM9dGhpcy5zYW1wbGVDdXJ2 ZURlcml2YXRpdmVYKGkpO2lmKE1hdGguYWJzKHMpPDFlLTYpYnJlYWs7aS09YS9zfWlmKChp PXQpPChyPTApKXJldHVybiByO2lmKGk+KG49MSkpcmV0dXJuIG47Zm9yKDtyPG47KXtpZihh PXRoaXMuc2FtcGxlQ3VydmVYKGkpLE1hdGguYWJzKGEtdCk8ZSlyZXR1cm4gaTt0PmE/cj1p Om49aSxpPS41KihuLXIpK3J9cmV0dXJuIGl9LG4ucHJvdG90eXBlLnNvbHZlPWZ1bmN0aW9u KHQsZSl7cmV0dXJuIHRoaXMuc2FtcGxlQ3VydmVZKHRoaXMuc29sdmVDdXJ2ZVgodCxlKSl9 O3ZhciBpPWE7ZnVuY3Rpb24gYSh0LGUpe3RoaXMueD10LHRoaXMueT1lfWZ1bmN0aW9uIG8o dCxlLG4saSl7dmFyIGE9bmV3IHIodCxlLG4saSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVy biBhLnNvbHZlKHQpfX1hLnByb3RvdHlwZT17Y2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3 IGEodGhpcy54LHRoaXMueSl9LGFkZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgp Ll9hZGQodCl9LHN1YjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9zdWIodCl9 LG11bHRCeVBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX211bHRCeVBv aW50KHQpfSxkaXZCeVBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX2Rp dkJ5UG9pbnQodCl9LG11bHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fbXVs dCh0KX0sZGl2OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX2Rpdih0KX0scm90 YXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX3JvdGF0ZSh0KX0scm90YXRl QXJvdW5kOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fcm90YXRlQXJvdW5k KHQsZSl9LG1hdE11bHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fbWF0TXVs dCh0KX0sdW5pdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuX3VuaXQoKX0scGVy cDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuX3BlcnAoKX0scm91bmQ6ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9yb3VuZCgpfSxtYWc6ZnVuY3Rpb24oKXtyZXR1 cm4gTWF0aC5zcXJ0KHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSl9LGVxdWFsczpmdW5j dGlvbih0KXtyZXR1cm4gdGhpcy54PT09dC54JiZ0aGlzLnk9PT10Lnl9LGRpc3Q6ZnVuY3Rp b24odCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLmRpc3RTcXIodCkpfSxkaXN0U3FyOmZ1bmN0 aW9uKHQpe3ZhciBlPXQueC10aGlzLngscj10LnktdGhpcy55O3JldHVybiBlKmUrcipyfSxh bmdsZTpmdW5jdGlvbigpe3JldHVybiBNYXRoLmF0YW4yKHRoaXMueSx0aGlzLngpfSxhbmds ZVRvOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmF0YW4yKHRoaXMueS10LnksdGhpcy54LXQu eCl9LGFuZ2xlV2l0aDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hbmdsZVdpdGhTZXAodC54 LHQueSl9LGFuZ2xlV2l0aFNlcDpmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLmF0YW4yKHRo aXMueCplLXRoaXMueSp0LHRoaXMueCp0K3RoaXMueSplKX0sX21hdE11bHQ6ZnVuY3Rpb24o dCl7dmFyIGU9dFswXSp0aGlzLngrdFsxXSp0aGlzLnkscj10WzJdKnRoaXMueCt0WzNdKnRo aXMueTtyZXR1cm4gdGhpcy54PWUsdGhpcy55PXIsdGhpc30sX2FkZDpmdW5jdGlvbih0KXty ZXR1cm4gdGhpcy54Kz10LngsdGhpcy55Kz10LnksdGhpc30sX3N1YjpmdW5jdGlvbih0KXty ZXR1cm4gdGhpcy54LT10LngsdGhpcy55LT10LnksdGhpc30sX211bHQ6ZnVuY3Rpb24odCl7 cmV0dXJuIHRoaXMueCo9dCx0aGlzLnkqPXQsdGhpc30sX2RpdjpmdW5jdGlvbih0KXtyZXR1 cm4gdGhpcy54Lz10LHRoaXMueS89dCx0aGlzfSxfbXVsdEJ5UG9pbnQ6ZnVuY3Rpb24odCl7 cmV0dXJuIHRoaXMueCo9dC54LHRoaXMueSo9dC55LHRoaXN9LF9kaXZCeVBvaW50OmZ1bmN0 aW9uKHQpe3JldHVybiB0aGlzLngvPXQueCx0aGlzLnkvPXQueSx0aGlzfSxfdW5pdDpmdW5j dGlvbigpe3JldHVybiB0aGlzLl9kaXYodGhpcy5tYWcoKSksdGhpc30sX3BlcnA6ZnVuY3Rp b24oKXt2YXIgdD10aGlzLnk7cmV0dXJuIHRoaXMueT10aGlzLngsdGhpcy54PS10LHRoaXN9 LF9yb3RhdGU6ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5jb3ModCkscj1NYXRoLnNpbih0KSxu PWUqdGhpcy54LXIqdGhpcy55LGk9cip0aGlzLngrZSp0aGlzLnk7cmV0dXJuIHRoaXMueD1u LHRoaXMueT1pLHRoaXN9LF9yb3RhdGVBcm91bmQ6ZnVuY3Rpb24odCxlKXt2YXIgcj1NYXRo LmNvcyh0KSxuPU1hdGguc2luKHQpLGk9ZS54K3IqKHRoaXMueC1lLngpLW4qKHRoaXMueS1l LnkpLGE9ZS55K24qKHRoaXMueC1lLngpK3IqKHRoaXMueS1lLnkpO3JldHVybiB0aGlzLng9 aSx0aGlzLnk9YSx0aGlzfSxfcm91bmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54PU1hdGgu cm91bmQodGhpcy54KSx0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXN9fSxhLmNvbnZl cnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBhP3Q6QXJyYXkuaXNBcnJheSh0 KT9uZXcgYSh0WzBdLHRbMV0pOnR9O3ZhciBzPW8oLjI1LC4xLC4yNSwxKTtmdW5jdGlvbiBs KHQsZSxyKXtyZXR1cm4gTWF0aC5taW4ocixNYXRoLm1heChlLHQpKX1mdW5jdGlvbiBjKHQs ZSxyKXt2YXIgbj1yLWUsaT0oKHQtZSklbituKSVuK2U7cmV0dXJuIGk9PT1lP3I6aX1mdW5j dGlvbiB1KHQpe2Zvcih2YXIgZT1bXSxyPWFyZ3VtZW50cy5sZW5ndGgtMTtyLS0gPjA7KWVb cl09YXJndW1lbnRzW3IrMV07Zm9yKHZhciBuPTAsaT1lO248aS5sZW5ndGg7bis9MSl7dmFy IGE9aVtuXTtmb3IodmFyIG8gaW4gYSl0W29dPWFbb119cmV0dXJuIHR9dmFyIGY9MTtmdW5j dGlvbiBoKCl7cmV0dXJuIGYrK31mdW5jdGlvbiBwKCl7cmV0dXJuIGZ1bmN0aW9uIHQoZSl7 cmV0dXJuIGU/KGVeMTYqTWF0aC5yYW5kb20oKT4+ZS80KS50b1N0cmluZygxNik6KFsxZTdd Ky1bMWUzXSstNGUzKy04ZTMrLTFlMTEpLnJlcGxhY2UoL1swMThdL2csdCl9KCl9ZnVuY3Rp b24gZCh0KXtyZXR1cm4hIXQmJi9eWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzRdWzAtOWEt Zl17M30tWzg5YWJdWzAtOWEtZl17M30tWzAtOWEtZl17MTJ9JC9pLnRlc3QodCl9ZnVuY3Rp b24gbSh0LGUpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZVt0XSYmKGVbdF09ZVt0XS5iaW5k KGUpKX0pKX1mdW5jdGlvbiBnKHQsZSl7cmV0dXJuLTEhPT10LmluZGV4T2YoZSx0Lmxlbmd0 aC1lLmxlbmd0aCl9ZnVuY3Rpb24gdih0LGUscil7dmFyIG49e307Zm9yKHZhciBpIGluIHQp bltpXT1lLmNhbGwocnx8dGhpcyx0W2ldLGksdCk7cmV0dXJuIG59ZnVuY3Rpb24geSh0LGUs cil7dmFyIG49e307Zm9yKHZhciBpIGluIHQpZS5jYWxsKHJ8fHRoaXMsdFtpXSxpLHQpJiYo bltpXT10W2ldKTtyZXR1cm4gbn1mdW5jdGlvbiB4KHQpe3JldHVybiBBcnJheS5pc0FycmF5 KHQpP3QubWFwKHgpOiJvYmplY3QiPT10eXBlb2YgdCYmdD92KHQseCk6dH12YXIgYj17fTtm dW5jdGlvbiBfKHQpe2JbdF18fCgidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJmNvbnNv bGUud2Fybih0KSxiW3RdPSEwKX1mdW5jdGlvbiB3KHQsZSxyKXtyZXR1cm4oci55LXQueSkq KGUueC10LngpPihlLnktdC55KSooci54LXQueCl9ZnVuY3Rpb24gVCh0KXtmb3IodmFyIGU9 MCxyPTAsbj10Lmxlbmd0aCxpPW4tMSxhPXZvaWQgMCxvPXZvaWQgMDtyPG47aT1yKyspYT10 W3JdLGUrPSgobz10W2ldKS54LWEueCkqKGEueStvLnkpO3JldHVybiBlfWZ1bmN0aW9uIGso KXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlJiYidW5kZWZp bmVkIiE9dHlwZW9mIHNlbGYmJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZX1m dW5jdGlvbiBBKHQpe3ZhciBlPXt9O2lmKHQucmVwbGFjZSgvKD86XnwoPzpccypcLFxzKikp KFteXHgwMC1ceDIwXChcKTw+QFwsO1w6XFwiXC9cW1xdXD9cPVx7XH1ceDdGXSspKD86XD0o PzooW15ceDAwLVx4MjBcKFwpPD5AXCw7XDpcXCJcL1xbXF1cP1w9XHtcfVx4N0ZdKyl8KD86 XCIoKD86W14iXFxdfFxcLikqKVwiKSkpPy9nLChmdW5jdGlvbih0LHIsbixpKXt2YXIgYT1u fHxpO3JldHVybiBlW3JdPSFhfHxhLnRvTG93ZXJDYXNlKCksIiJ9KSksZVsibWF4LWFnZSJd KXt2YXIgcj1wYXJzZUludChlWyJtYXgtYWdlIl0sMTApO2lzTmFOKHIpP2RlbGV0ZSBlWyJt YXgtYWdlIl06ZVsibWF4LWFnZSJdPXJ9cmV0dXJuIGV9dmFyIE09bnVsbDtmdW5jdGlvbiBT KHQpe2lmKG51bGw9PU0pe3ZhciBlPXQubmF2aWdhdG9yP3QubmF2aWdhdG9yLnVzZXJBZ2Vu dDpudWxsO009ISF0LnNhZmFyaXx8ISghZXx8ISgvXGIoaVBhZHxpUGhvbmV8aVBvZClcYi8u dGVzdChlKXx8ZS5tYXRjaCgiU2FmYXJpIikmJiFlLm1hdGNoKCJDaHJvbWUiKSkpfXJldHVy biBNfWZ1bmN0aW9uIEUodCl7dHJ5e3ZhciBlPXNlbGZbdF07cmV0dXJuIGUuc2V0SXRlbSgi X21hcGJveF90ZXN0XyIsMSksZS5yZW1vdmVJdGVtKCJfbWFwYm94X3Rlc3RfIiksITB9Y2F0 Y2godCl7cmV0dXJuITF9fXZhciBMLEMsUCxJLE89c2VsZi5wZXJmb3JtYW5jZSYmc2VsZi5w ZXJmb3JtYW5jZS5ub3c/c2VsZi5wZXJmb3JtYW5jZS5ub3cuYmluZChzZWxmLnBlcmZvcm1h bmNlKTpEYXRlLm5vdy5iaW5kKERhdGUpLHo9c2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8 fHNlbGYubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxzZWxmLndlYmtpdFJlcXVlc3RBbmlt YXRpb25GcmFtZXx8c2VsZi5tc1JlcXVlc3RBbmltYXRpb25GcmFtZSxEPXNlbGYuY2FuY2Vs QW5pbWF0aW9uRnJhbWV8fHNlbGYubW96Q2FuY2VsQW5pbWF0aW9uRnJhbWV8fHNlbGYud2Vi a2l0Q2FuY2VsQW5pbWF0aW9uRnJhbWV8fHNlbGYubXNDYW5jZWxBbmltYXRpb25GcmFtZSxS PXtub3c6TyxmcmFtZTpmdW5jdGlvbih0KXt2YXIgZT16KHQpO3JldHVybntjYW5jZWw6ZnVu Y3Rpb24oKXtyZXR1cm4gRChlKX19fSxnZXRJbWFnZURhdGE6ZnVuY3Rpb24odCxlKXt2b2lk IDA9PT1lJiYoZT0wKTt2YXIgcj1zZWxmLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZh cyIpLG49ci5nZXRDb250ZXh0KCIyZCIpO2lmKCFuKXRocm93IG5ldyBFcnJvcigiZmFpbGVk IHRvIGNyZWF0ZSBjYW52YXMgMmQgY29udGV4dCIpO3JldHVybiByLndpZHRoPXQud2lkdGgs ci5oZWlnaHQ9dC5oZWlnaHQsbi5kcmF3SW1hZ2UodCwwLDAsdC53aWR0aCx0LmhlaWdodCks bi5nZXRJbWFnZURhdGEoLWUsLWUsdC53aWR0aCsyKmUsdC5oZWlnaHQrMiplKX0scmVzb2x2 ZVVSTDpmdW5jdGlvbih0KXtyZXR1cm4gTHx8KEw9c2VsZi5kb2N1bWVudC5jcmVhdGVFbGVt ZW50KCJhIikpLEwuaHJlZj10LEwuaHJlZn0saGFyZHdhcmVDb25jdXJyZW5jeTpzZWxmLm5h dmlnYXRvci5oYXJkd2FyZUNvbmN1cnJlbmN5fHw0LGdldCBkZXZpY2VQaXhlbFJhdGlvKCl7 cmV0dXJuIHNlbGYuZGV2aWNlUGl4ZWxSYXRpb30sZ2V0IHByZWZlcnNSZWR1Y2VkTW90aW9u KCl7cmV0dXJuISFzZWxmLm1hdGNoTWVkaWEmJihudWxsPT1DJiYoQz1zZWxmLm1hdGNoTWVk aWEoIihwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIikpLEMubWF0Y2hlcyl9fSxG PXtBUElfVVJMOiJodHRwczovL2FwaS5tYXBib3guY29tIixnZXQgRVZFTlRTX1VSTCgpe3Jl dHVybiB0aGlzLkFQSV9VUkw/MD09PXRoaXMuQVBJX1VSTC5pbmRleE9mKCJodHRwczovL2Fw aS5tYXBib3guY24iKT8iaHR0cHM6Ly9ldmVudHMubWFwYm94LmNuL2V2ZW50cy92MiI6MD09 PXRoaXMuQVBJX1VSTC5pbmRleE9mKCJodHRwczovL2FwaS5tYXBib3guY29tIik/Imh0dHBz Oi8vZXZlbnRzLm1hcGJveC5jb20vZXZlbnRzL3YyIjpudWxsOm51bGx9LEZFRURCQUNLX1VS TDoiaHR0cHM6Ly9hcHBzLm1hcGJveC5jb20vZmVlZGJhY2siLFJFUVVJUkVfQUNDRVNTX1RP S0VOOiEwLEFDQ0VTU19UT0tFTjpudWxsLE1BWF9QQVJBTExFTF9JTUFHRV9SRVFVRVNUUzox Nn0sQj17c3VwcG9ydGVkOiExLHRlc3RTdXBwb3J0OmZ1bmN0aW9uKHQpe2lmKE58fCFJKXJl dHVybjtqP1UodCk6UD10fX0sTj0hMSxqPSExO2Z1bmN0aW9uIFUodCl7dmFyIGU9dC5jcmVh dGVUZXh0dXJlKCk7dC5iaW5kVGV4dHVyZSh0LlRFWFRVUkVfMkQsZSk7dHJ5e2lmKHQudGV4 SW1hZ2UyRCh0LlRFWFRVUkVfMkQsMCx0LlJHQkEsdC5SR0JBLHQuVU5TSUdORURfQllURSxJ KSx0LmlzQ29udGV4dExvc3QoKSlyZXR1cm47Qi5zdXBwb3J0ZWQ9ITB9Y2F0Y2godCl7fXQu ZGVsZXRlVGV4dHVyZShlKSxOPSEwfXNlbGYuZG9jdW1lbnQmJigoST1zZWxmLmRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoImltZyIpKS5vbmxvYWQ9ZnVuY3Rpb24oKXtQJiZVKFApLFA9bnVs bCxqPSEwfSxJLm9uZXJyb3I9ZnVuY3Rpb24oKXtOPSEwLFA9bnVsbH0sSS5zcmM9ImRhdGE6 aW1hZ2Uvd2VicDtiYXNlNjQsVWtsR1JoNEFBQUJYUlVKUVZsQTRUQkVBQUFBdkFRQUFBQWZR Ly83M3YvK0JpT2gvQUFBPSIpO3ZhciBWPSIwMSI7dmFyIEg9ZnVuY3Rpb24odCxlKXt0aGlz Ll90cmFuc2Zvcm1SZXF1ZXN0Rm49dCx0aGlzLl9jdXN0b21BY2Nlc3NUb2tlbj1lLHRoaXMu X2NyZWF0ZVNrdVRva2VuKCl9O2Z1bmN0aW9uIHEodCl7cmV0dXJuIDA9PT10LmluZGV4T2Yo Im1hcGJveDoiKX1ILnByb3RvdHlwZS5fY3JlYXRlU2t1VG9rZW49ZnVuY3Rpb24oKXt2YXIg dD1mdW5jdGlvbigpe2Zvcih2YXIgdD0iIixlPTA7ZTwxMDtlKyspdCs9IjAxMjM0NTY3ODlh YmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIltN YXRoLmZsb29yKDYyKk1hdGgucmFuZG9tKCkpXTtyZXR1cm57dG9rZW46WyIxIixWLHRdLmpv aW4oIiIpLHRva2VuRXhwaXJlc0F0OkRhdGUubm93KCkrNDMyZTV9fSgpO3RoaXMuX3NrdVRv a2VuPXQudG9rZW4sdGhpcy5fc2t1VG9rZW5FeHBpcmVzQXQ9dC50b2tlbkV4cGlyZXNBdH0s SC5wcm90b3R5cGUuX2lzU2t1VG9rZW5FeHBpcmVkPWZ1bmN0aW9uKCl7cmV0dXJuIERhdGUu bm93KCk+dGhpcy5fc2t1VG9rZW5FeHBpcmVzQXR9LEgucHJvdG90eXBlLnRyYW5zZm9ybVJl cXVlc3Q9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fdHJhbnNmb3JtUmVxdWVzdEZuJiZ0 aGlzLl90cmFuc2Zvcm1SZXF1ZXN0Rm4odCxlKXx8e3VybDp0fX0sSC5wcm90b3R5cGUubm9y bWFsaXplU3R5bGVVUkw9ZnVuY3Rpb24odCxlKXtpZighcSh0KSlyZXR1cm4gdDt2YXIgcj1Y KHQpO3JldHVybiByLnBhdGg9Ii9zdHlsZXMvdjEiK3IucGF0aCx0aGlzLl9tYWtlQVBJVVJM KHIsdGhpcy5fY3VzdG9tQWNjZXNzVG9rZW58fGUpfSxILnByb3RvdHlwZS5ub3JtYWxpemVH bHlwaHNVUkw9ZnVuY3Rpb24odCxlKXtpZighcSh0KSlyZXR1cm4gdDt2YXIgcj1YKHQpO3Jl dHVybiByLnBhdGg9Ii9mb250cy92MSIrci5wYXRoLHRoaXMuX21ha2VBUElVUkwocix0aGlz Ll9jdXN0b21BY2Nlc3NUb2tlbnx8ZSl9LEgucHJvdG90eXBlLm5vcm1hbGl6ZVNvdXJjZVVS TD1mdW5jdGlvbih0LGUpe2lmKCFxKHQpKXJldHVybiB0O3ZhciByPVgodCk7cmV0dXJuIHIu cGF0aD0iL3Y0LyIrci5hdXRob3JpdHkrIi5qc29uIixyLnBhcmFtcy5wdXNoKCJzZWN1cmUi KSx0aGlzLl9tYWtlQVBJVVJMKHIsdGhpcy5fY3VzdG9tQWNjZXNzVG9rZW58fGUpfSxILnBy b3RvdHlwZS5ub3JtYWxpemVTcHJpdGVVUkw9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9WCh0 KTtyZXR1cm4gcSh0KT8oaS5wYXRoPSIvc3R5bGVzL3YxIitpLnBhdGgrIi9zcHJpdGUiK2Ur cix0aGlzLl9tYWtlQVBJVVJMKGksdGhpcy5fY3VzdG9tQWNjZXNzVG9rZW58fG4pKTooaS5w YXRoKz0iIitlK3IsWihpKSl9LEgucHJvdG90eXBlLm5vcm1hbGl6ZVRpbGVVUkw9ZnVuY3Rp b24odCxlKXtpZih0aGlzLl9pc1NrdVRva2VuRXhwaXJlZCgpJiZ0aGlzLl9jcmVhdGVTa3VU b2tlbigpLHQmJiFxKHQpKXJldHVybiB0O3ZhciByPVgodCksbj1SLmRldmljZVBpeGVsUmF0 aW8+PTJ8fDUxMj09PWU/IkAyeCI6IiIsaT1CLnN1cHBvcnRlZD8iLndlYnAiOiIkMSI7ci5w YXRoPXIucGF0aC5yZXBsYWNlKC8oXC4ocG5nfGpwZylcZCopKD89JCkvLCIiK24raSksci5w YXRoPXIucGF0aC5yZXBsYWNlKC9eLitcL3Y0XC8vLCIvIiksci5wYXRoPSIvdjQiK3IucGF0 aDt2YXIgYT10aGlzLl9jdXN0b21BY2Nlc3NUb2tlbnx8ZnVuY3Rpb24odCl7Zm9yKHZhciBl PTAscj10O2U8ci5sZW5ndGg7ZSs9MSl7dmFyIG49cltlXS5tYXRjaCgvXmFjY2Vzc190b2tl bj0oLiopJC8pO2lmKG4pcmV0dXJuIG5bMV19cmV0dXJuIG51bGx9KHIucGFyYW1zKXx8Ri5B Q0NFU1NfVE9LRU47cmV0dXJuIEYuUkVRVUlSRV9BQ0NFU1NfVE9LRU4mJmEmJnRoaXMuX3Nr dVRva2VuJiZyLnBhcmFtcy5wdXNoKCJza3U9Iit0aGlzLl9za3VUb2tlbiksdGhpcy5fbWFr ZUFQSVVSTChyLGEpfSxILnByb3RvdHlwZS5jYW5vbmljYWxpemVUaWxlVVJMPWZ1bmN0aW9u KHQsZSl7dmFyIHI9WCh0KTtpZighci5wYXRoLm1hdGNoKC8oXlwvdjRcLykvKXx8IXIucGF0 aC5tYXRjaCgvXC5bXHddKyQvKSlyZXR1cm4gdDt2YXIgbj0ibWFwYm94Oi8vdGlsZXMvIjtu Kz1yLnBhdGgucmVwbGFjZSgiL3Y0LyIsIiIpO3ZhciBpPXIucGFyYW1zO3JldHVybiBlJiYo aT1pLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIXQubWF0Y2goL15hY2Nlc3NfdG9rZW49 Lyl9KSkpLGkubGVuZ3RoJiYobis9Ij8iK2kuam9pbigiJiIpKSxufSxILnByb3RvdHlwZS5j YW5vbmljYWxpemVUaWxlc2V0PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPSEhZSYmcShlKSxu PVtdLGk9MCxhPXQudGlsZXN8fFtdO2k8YS5sZW5ndGg7aSs9MSl7dmFyIG89YVtpXTtZKG8p P24ucHVzaCh0aGlzLmNhbm9uaWNhbGl6ZVRpbGVVUkwobyxyKSk6bi5wdXNoKG8pfXJldHVy biBufSxILnByb3RvdHlwZS5fbWFrZUFQSVVSTD1mdW5jdGlvbih0LGUpe3ZhciByPSJTZWUg aHR0cHM6Ly93d3cubWFwYm94LmNvbS9hcGktZG9jdW1lbnRhdGlvbi8jYWNjZXNzLXRva2Vu cy1hbmQtdG9rZW4tc2NvcGVzIixuPVgoRi5BUElfVVJMKTtpZih0LnByb3RvY29sPW4ucHJv dG9jb2wsdC5hdXRob3JpdHk9bi5hdXRob3JpdHksIi8iIT09bi5wYXRoJiYodC5wYXRoPSIi K24ucGF0aCt0LnBhdGgpLCFGLlJFUVVJUkVfQUNDRVNTX1RPS0VOKXJldHVybiBaKHQpO2lm KCEoZT1lfHxGLkFDQ0VTU19UT0tFTikpdGhyb3cgbmV3IEVycm9yKCJBbiBBUEkgYWNjZXNz IHRva2VuIGlzIHJlcXVpcmVkIHRvIHVzZSBNYXBib3ggR0wuICIrcik7aWYoInMiPT09ZVsw XSl0aHJvdyBuZXcgRXJyb3IoIlVzZSBhIHB1YmxpYyBhY2Nlc3MgdG9rZW4gKHBrLiopIHdp dGggTWFwYm94IEdMLCBub3QgYSBzZWNyZXQgYWNjZXNzIHRva2VuIChzay4qKS4gIityKTty ZXR1cm4gdC5wYXJhbXM9dC5wYXJhbXMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4tMT09 PXQuaW5kZXhPZigiYWNjZXNzX3Rva2VuIil9KSksdC5wYXJhbXMucHVzaCgiYWNjZXNzX3Rv a2VuPSIrZSksWih0KX07dmFyIEc9L14oKGh0dHBzPzopP1wvXC8pPyhbXlwvXStcLik/bWFw Ym94XC5jKG58b20pKFwvfFw/fCQpL2k7ZnVuY3Rpb24gWSh0KXtyZXR1cm4gRy50ZXN0KHQp fXZhciBXPS9eKFx3Kyk6XC9cLyhbXi8/XSopKFwvW14/XSspP1w/PyguKyk/LztmdW5jdGlv biBYKHQpe3ZhciBlPXQubWF0Y2goVyk7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJVbmFibGUg dG8gcGFyc2UgVVJMIG9iamVjdCIpO3JldHVybntwcm90b2NvbDplWzFdLGF1dGhvcml0eTpl WzJdLHBhdGg6ZVszXXx8Ii8iLHBhcmFtczplWzRdP2VbNF0uc3BsaXQoIiYiKTpbXX19ZnVu Y3Rpb24gWih0KXt2YXIgZT10LnBhcmFtcy5sZW5ndGg/Ij8iK3QucGFyYW1zLmpvaW4oIiYi KToiIjtyZXR1cm4gdC5wcm90b2NvbCsiOi8vIit0LmF1dGhvcml0eSt0LnBhdGgrZX1mdW5j dGlvbiBKKHQpe2lmKCF0KXJldHVybiBudWxsO3ZhciBlLHI9dC5zcGxpdCgiLiIpO2lmKCFy fHwzIT09ci5sZW5ndGgpcmV0dXJuIG51bGw7dHJ5e3JldHVybiBKU09OLnBhcnNlKChlPXJb MV0sZGVjb2RlVVJJQ29tcG9uZW50KHNlbGYuYXRvYihlKS5zcGxpdCgiIikubWFwKChmdW5j dGlvbih0KXtyZXR1cm4iJSIrKCIwMCIrdC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSku c2xpY2UoLTIpfSkpLmpvaW4oIiIpKSkpfWNhdGNoKHQpe3JldHVybiBudWxsfX12YXIgSz1m dW5jdGlvbih0KXt0aGlzLnR5cGU9dCx0aGlzLmFub25JZD1udWxsLHRoaXMuZXZlbnREYXRh PXt9LHRoaXMucXVldWU9W10sdGhpcy5wZW5kaW5nUmVxdWVzdD1udWxsfTtLLnByb3RvdHlw ZS5nZXRTdG9yYWdlS2V5PWZ1bmN0aW9uKHQpe3ZhciBlLHI9SihGLkFDQ0VTU19UT0tFTiks bj0iIjtyZXR1cm4gciYmci51PyhlPXIudSxuPXNlbGYuYnRvYShlbmNvZGVVUklDb21wb25l bnQoZSkucmVwbGFjZSgvJShbMC05QS1GXXsyfSkvZywoZnVuY3Rpb24odCxlKXtyZXR1cm4g U3RyaW5nLmZyb21DaGFyQ29kZShOdW1iZXIoIjB4IitlKSl9KSkpKTpuPUYuQUNDRVNTX1RP S0VOfHwiIix0PyJtYXBib3guZXZlbnREYXRhLiIrdCsiOiIrbjoibWFwYm94LmV2ZW50RGF0 YToiK259LEsucHJvdG90eXBlLmZldGNoRXZlbnREYXRhPWZ1bmN0aW9uKCl7dmFyIHQ9RSgi bG9jYWxTdG9yYWdlIiksZT10aGlzLmdldFN0b3JhZ2VLZXkoKSxyPXRoaXMuZ2V0U3RvcmFn ZUtleSgidXVpZCIpO2lmKHQpdHJ5e3ZhciBuPXNlbGYubG9jYWxTdG9yYWdlLmdldEl0ZW0o ZSk7biYmKHRoaXMuZXZlbnREYXRhPUpTT04ucGFyc2UobikpO3ZhciBpPXNlbGYubG9jYWxT dG9yYWdlLmdldEl0ZW0ocik7aSYmKHRoaXMuYW5vbklkPWkpfWNhdGNoKHQpe18oIlVuYWJs ZSB0byByZWFkIGZyb20gTG9jYWxTdG9yYWdlIil9fSxLLnByb3RvdHlwZS5zYXZlRXZlbnRE YXRhPWZ1bmN0aW9uKCl7dmFyIHQ9RSgibG9jYWxTdG9yYWdlIiksZT10aGlzLmdldFN0b3Jh Z2VLZXkoKSxyPXRoaXMuZ2V0U3RvcmFnZUtleSgidXVpZCIpO2lmKHQpdHJ5e3NlbGYubG9j YWxTdG9yYWdlLnNldEl0ZW0ocix0aGlzLmFub25JZCksT2JqZWN0LmtleXModGhpcy5ldmVu dERhdGEpLmxlbmd0aD49MSYmc2VsZi5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShlLEpTT04uc3Ry aW5naWZ5KHRoaXMuZXZlbnREYXRhKSl9Y2F0Y2godCl7XygiVW5hYmxlIHRvIHdyaXRlIHRv IExvY2FsU3RvcmFnZSIpfX0sSy5wcm90b3R5cGUucHJvY2Vzc1JlcXVlc3RzPWZ1bmN0aW9u KHQpe30sSy5wcm90b3R5cGUucG9zdEV2ZW50PWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXRo aXM7aWYoRi5FVkVOVFNfVVJMKXt2YXIgYT1YKEYuRVZFTlRTX1VSTCk7YS5wYXJhbXMucHVz aCgiYWNjZXNzX3Rva2VuPSIrKG58fEYuQUNDRVNTX1RPS0VOfHwiIikpO3ZhciBvPXtldmVu dDp0aGlzLnR5cGUsY3JlYXRlZDpuZXcgRGF0ZSh0KS50b0lTT1N0cmluZygpLHNka0lkZW50 aWZpZXI6Im1hcGJveC1nbC1qcyIsc2RrVmVyc2lvbjoiMS4xMC4xIixza3VJZDpWLHVzZXJJ ZDp0aGlzLmFub25JZH0scz1lP3UobyxlKTpvLGw9e3VybDpaKGEpLGhlYWRlcnM6eyJDb250 ZW50LVR5cGUiOiJ0ZXh0L3BsYWluIn0sYm9keTpKU09OLnN0cmluZ2lmeShbc10pfTt0aGlz LnBlbmRpbmdSZXF1ZXN0PWJ0KGwsKGZ1bmN0aW9uKHQpe2kucGVuZGluZ1JlcXVlc3Q9bnVs bCxyKHQpLGkuc2F2ZUV2ZW50RGF0YSgpLGkucHJvY2Vzc1JlcXVlc3RzKG4pfSkpfX0sSy5w cm90b3R5cGUucXVldWVSZXF1ZXN0PWZ1bmN0aW9uKHQsZSl7dGhpcy5xdWV1ZS5wdXNoKHQp LHRoaXMucHJvY2Vzc1JlcXVlc3RzKGUpfTt2YXIgUSwkLHR0PWZ1bmN0aW9uKHQpe2Z1bmN0 aW9uIGUoKXt0LmNhbGwodGhpcywibWFwLmxvYWQiKSx0aGlzLnN1Y2Nlc3M9e30sdGhpcy5z a3VUb2tlbj0iIn1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVj dC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5w cm90b3R5cGUucG9zdE1hcExvYWRFdmVudD1mdW5jdGlvbih0LGUscixuKXt0aGlzLnNrdVRv a2VuPXIsKEYuRVZFTlRTX1VSTCYmbnx8Ri5BQ0NFU1NfVE9LRU4mJkFycmF5LmlzQXJyYXko dCkmJnQuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIHEodCl8fFkodCl9KSkpJiZ0aGlzLnF1 ZXVlUmVxdWVzdCh7aWQ6ZSx0aW1lc3RhbXA6RGF0ZS5ub3coKX0sbil9LGUucHJvdG90eXBl LnByb2Nlc3NSZXF1ZXN0cz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKCF0aGlzLnBlbmRp bmdSZXF1ZXN0JiYwIT09dGhpcy5xdWV1ZS5sZW5ndGgpe3ZhciByPXRoaXMucXVldWUuc2hp ZnQoKSxuPXIuaWQsaT1yLnRpbWVzdGFtcDtuJiZ0aGlzLnN1Y2Nlc3Nbbl18fCh0aGlzLmFu b25JZHx8dGhpcy5mZXRjaEV2ZW50RGF0YSgpLGQodGhpcy5hbm9uSWQpfHwodGhpcy5hbm9u SWQ9cCgpKSx0aGlzLnBvc3RFdmVudChpLHtza3VUb2tlbjp0aGlzLnNrdVRva2VufSwoZnVu Y3Rpb24odCl7dHx8biYmKGUuc3VjY2Vzc1tuXT0hMCl9KSx0KSl9fSxlfShLKSxldD1uZXco ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt0LmNhbGwodGhpcywiYXBwVXNlclR1cm5zdGls ZSIpLHRoaXMuX2N1c3RvbUFjY2Vzc1Rva2VuPWV9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10 KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlw ZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLnBvc3RUdXJuc3RpbGVFdmVudD1mdW5jdGlv bih0LGUpe0YuRVZFTlRTX1VSTCYmRi5BQ0NFU1NfVE9LRU4mJkFycmF5LmlzQXJyYXkodCkm JnQuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIHEodCl8fFkodCl9KSkmJnRoaXMucXVldWVS ZXF1ZXN0KERhdGUubm93KCksZSl9LGUucHJvdG90eXBlLnByb2Nlc3NSZXF1ZXN0cz1mdW5j dGlvbih0KXt2YXIgZT10aGlzO2lmKCF0aGlzLnBlbmRpbmdSZXF1ZXN0JiYwIT09dGhpcy5x dWV1ZS5sZW5ndGgpe3RoaXMuYW5vbklkJiZ0aGlzLmV2ZW50RGF0YS5sYXN0U3VjY2VzcyYm dGhpcy5ldmVudERhdGEudG9rZW5VfHx0aGlzLmZldGNoRXZlbnREYXRhKCk7dmFyIHI9SihG LkFDQ0VTU19UT0tFTiksbj1yP3IudTpGLkFDQ0VTU19UT0tFTixpPW4hPT10aGlzLmV2ZW50 RGF0YS50b2tlblU7ZCh0aGlzLmFub25JZCl8fCh0aGlzLmFub25JZD1wKCksaT0hMCk7dmFy IGE9dGhpcy5xdWV1ZS5zaGlmdCgpO2lmKHRoaXMuZXZlbnREYXRhLmxhc3RTdWNjZXNzKXt2 YXIgbz1uZXcgRGF0ZSh0aGlzLmV2ZW50RGF0YS5sYXN0U3VjY2Vzcykscz1uZXcgRGF0ZShh KSxsPShhLXRoaXMuZXZlbnREYXRhLmxhc3RTdWNjZXNzKS84NjRlNTtpPWl8fGw+PTF8fGw8 LTF8fG8uZ2V0RGF0ZSgpIT09cy5nZXREYXRlKCl9ZWxzZSBpPSEwO2lmKCFpKXJldHVybiB0 aGlzLnByb2Nlc3NSZXF1ZXN0cygpO3RoaXMucG9zdEV2ZW50KGEseyJlbmFibGVkLnRlbGVt ZXRyeSI6ITF9LChmdW5jdGlvbih0KXt0fHwoZS5ldmVudERhdGEubGFzdFN1Y2Nlc3M9YSxl LmV2ZW50RGF0YS50b2tlblU9bil9KSx0KX19LGV9KEspKSxydD1ldC5wb3N0VHVybnN0aWxl RXZlbnQuYmluZChldCksbnQ9bmV3IHR0LGl0PW50LnBvc3RNYXBMb2FkRXZlbnQuYmluZChu dCksYXQ9NTAwLG90PTUwO2Z1bmN0aW9uIHN0KCl7c2VsZi5jYWNoZXMmJiFRJiYoUT1zZWxm LmNhY2hlcy5vcGVuKCJtYXBib3gtdGlsZXMiKSl9ZnVuY3Rpb24gbHQodCxlLHIpe2lmKHN0 KCksUSl7dmFyIG49e3N0YXR1czplLnN0YXR1cyxzdGF0dXNUZXh0OmUuc3RhdHVzVGV4dCxo ZWFkZXJzOm5ldyBzZWxmLkhlYWRlcnN9O2UuaGVhZGVycy5mb3JFYWNoKChmdW5jdGlvbih0 LGUpe3JldHVybiBuLmhlYWRlcnMuc2V0KGUsdCl9KSk7dmFyIGk9QShlLmhlYWRlcnMuZ2V0 KCJDYWNoZS1Db250cm9sIil8fCIiKTtpZighaVsibm8tc3RvcmUiXSlpWyJtYXgtYWdlIl0m Jm4uaGVhZGVycy5zZXQoIkV4cGlyZXMiLG5ldyBEYXRlKHIrMWUzKmlbIm1heC1hZ2UiXSku dG9VVENTdHJpbmcoKSksbmV3IERhdGUobi5oZWFkZXJzLmdldCgiRXhwaXJlcyIpKS5nZXRU aW1lKCktcjw0MmU0fHxmdW5jdGlvbih0LGUpe2lmKHZvaWQgMD09PSQpdHJ5e25ldyBSZXNw b25zZShuZXcgUmVhZGFibGVTdHJlYW0pLCQ9ITB9Y2F0Y2godCl7JD0hMX0kP2UodC5ib2R5 KTp0LmJsb2IoKS50aGVuKGUpfShlLChmdW5jdGlvbihlKXt2YXIgcj1uZXcgc2VsZi5SZXNw b25zZShlLG4pO3N0KCksUSYmUS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5wdXQoY3Qo dC51cmwpLHIpfSkpLmNhdGNoKChmdW5jdGlvbih0KXtyZXR1cm4gXyh0Lm1lc3NhZ2UpfSkp fSkpfX1mdW5jdGlvbiBjdCh0KXt2YXIgZT10LmluZGV4T2YoIj8iKTtyZXR1cm4gZTwwP3Q6 dC5zbGljZSgwLGUpfWZ1bmN0aW9uIHV0KHQsZSl7aWYoc3QoKSwhUSlyZXR1cm4gZShudWxs KTt2YXIgcj1jdCh0LnVybCk7US50aGVuKChmdW5jdGlvbih0KXt0Lm1hdGNoKHIpLnRoZW4o KGZ1bmN0aW9uKG4pe3ZhciBpPWZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiExO3ZhciBlPW5l dyBEYXRlKHQuaGVhZGVycy5nZXQoIkV4cGlyZXMiKXx8MCkscj1BKHQuaGVhZGVycy5nZXQo IkNhY2hlLUNvbnRyb2wiKXx8IiIpO3JldHVybiBlPkRhdGUubm93KCkmJiFyWyJuby1jYWNo ZSJdfShuKTt0LmRlbGV0ZShyKSxpJiZ0LnB1dChyLG4uY2xvbmUoKSksZShudWxsLG4saSl9 KSkuY2F0Y2goZSl9KSkuY2F0Y2goZSl9dmFyIGZ0LGh0PTEvMDtmdW5jdGlvbiBwdCgpe3Jl dHVybiBudWxsPT1mdCYmKGZ0PXNlbGYuT2Zmc2NyZWVuQ2FudmFzJiZuZXcgc2VsZi5PZmZz Y3JlZW5DYW52YXMoMSwxKS5nZXRDb250ZXh0KCIyZCIpJiYiZnVuY3Rpb24iPT10eXBlb2Yg c2VsZi5jcmVhdGVJbWFnZUJpdG1hcCksZnR9dmFyIGR0PXtVbmtub3duOiJVbmtub3duIixT dHlsZToiU3R5bGUiLFNvdXJjZToiU291cmNlIixUaWxlOiJUaWxlIixHbHlwaHM6IkdseXBo cyIsU3ByaXRlSW1hZ2U6IlNwcml0ZUltYWdlIixTcHJpdGVKU09OOiJTcHJpdGVKU09OIixJ bWFnZToiSW1hZ2UifTsiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmZyZWV6ZSYmT2JqZWN0 LmZyZWV6ZShkdCk7dmFyIG10PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxyLG4pezQwMT09 PXImJlkobikmJihlKz0iOiB5b3UgbWF5IGhhdmUgcHJvdmlkZWQgYW4gaW52YWxpZCBNYXBi b3ggYWNjZXNzIHRva2VuLiBTZWUgaHR0cHM6Ly93d3cubWFwYm94LmNvbS9hcGktZG9jdW1l bnRhdGlvbi8jYWNjZXNzLXRva2Vucy1hbmQtdG9rZW4tc2NvcGVzIiksdC5jYWxsKHRoaXMs ZSksdGhpcy5zdGF0dXM9cix0aGlzLnVybD1uLHRoaXMubmFtZT10aGlzLmNvbnN0cnVjdG9y Lm5hbWUsdGhpcy5tZXNzYWdlPWV9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3Rv dHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1 Y3Rvcj1lLGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFt ZSsiOiAiK3RoaXMubWVzc2FnZSsiICgiK3RoaXMuc3RhdHVzKyIpOiAiK3RoaXMudXJsfSxl fShFcnJvciksZ3Q9aygpP2Z1bmN0aW9uKCl7cmV0dXJuIHNlbGYud29ya2VyJiZzZWxmLndv cmtlci5yZWZlcnJlcn06ZnVuY3Rpb24oKXtyZXR1cm4oImJsb2I6Ij09PXNlbGYubG9jYXRp b24ucHJvdG9jb2w/c2VsZi5wYXJlbnQ6c2VsZikubG9jYXRpb24uaHJlZn07ZnVuY3Rpb24g dnQodCxlKXt2YXIgcixuPW5ldyBzZWxmLkFib3J0Q29udHJvbGxlcixpPW5ldyBzZWxmLlJl cXVlc3QodC51cmwse21ldGhvZDp0Lm1ldGhvZHx8IkdFVCIsYm9keTp0LmJvZHksY3JlZGVu dGlhbHM6dC5jcmVkZW50aWFscyxoZWFkZXJzOnQuaGVhZGVycyxyZWZlcnJlcjpndCgpLHNp Z25hbDpuLnNpZ25hbH0pLGE9ITEsbz0hMSxzPShyPWkudXJsKS5pbmRleE9mKCJza3U9Iik+ MCYmWShyKTsianNvbiI9PT10LnR5cGUmJmkuaGVhZGVycy5zZXQoIkFjY2VwdCIsImFwcGxp Y2F0aW9uL2pzb24iKTt2YXIgbD1mdW5jdGlvbihyLG4sYSl7aWYoIW8pe2lmKHImJiJTZWN1 cml0eUVycm9yIiE9PXIubWVzc2FnZSYmXyhyKSxuJiZhKXJldHVybiBjKG4pO3ZhciBsPURh dGUubm93KCk7c2VsZi5mZXRjaChpKS50aGVuKChmdW5jdGlvbihyKXtpZihyLm9rKXt2YXIg bj1zP3IuY2xvbmUoKTpudWxsO3JldHVybiBjKHIsbixsKX1yZXR1cm4gZShuZXcgbXQoci5z dGF0dXNUZXh0LHIuc3RhdHVzLHQudXJsKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpezIwIT09 dC5jb2RlJiZlKG5ldyBFcnJvcih0Lm1lc3NhZ2UpKX0pKX19LGM9ZnVuY3Rpb24ocixuLHMp eygiYXJyYXlCdWZmZXIiPT09dC50eXBlP3IuYXJyYXlCdWZmZXIoKToianNvbiI9PT10LnR5 cGU/ci5qc29uKCk6ci50ZXh0KCkpLnRoZW4oKGZ1bmN0aW9uKHQpe298fChuJiZzJiZsdChp LG4scyksYT0hMCxlKG51bGwsdCxyLmhlYWRlcnMuZ2V0KCJDYWNoZS1Db250cm9sIiksci5o ZWFkZXJzLmdldCgiRXhwaXJlcyIpKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpe298fGUobmV3 IEVycm9yKHQubWVzc2FnZSkpfSkpfTtyZXR1cm4gcz91dChpLGwpOmwobnVsbCxudWxsKSx7 Y2FuY2VsOmZ1bmN0aW9uKCl7bz0hMCxhfHxuLmFib3J0KCl9fX12YXIgeXQ9ZnVuY3Rpb24o dCxlKXtpZihyPXQudXJsLCEoL15maWxlOi8udGVzdChyKXx8L15maWxlOi8udGVzdChndCgp KSYmIS9eXHcrOi8udGVzdChyKSkpe2lmKHNlbGYuZmV0Y2gmJnNlbGYuUmVxdWVzdCYmc2Vs Zi5BYm9ydENvbnRyb2xsZXImJnNlbGYuUmVxdWVzdC5wcm90b3R5cGUuaGFzT3duUHJvcGVy dHkoInNpZ25hbCIpKXJldHVybiB2dCh0LGUpO2lmKGsoKSYmc2VsZi53b3JrZXImJnNlbGYu d29ya2VyLmFjdG9yKXtyZXR1cm4gc2VsZi53b3JrZXIuYWN0b3Iuc2VuZCgiZ2V0UmVzb3Vy Y2UiLHQsZSx2b2lkIDAsITApfX12YXIgcjtyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgcj1u ZXcgc2VsZi5YTUxIdHRwUmVxdWVzdDtmb3IodmFyIG4gaW4gci5vcGVuKHQubWV0aG9kfHwi R0VUIix0LnVybCwhMCksImFycmF5QnVmZmVyIj09PXQudHlwZSYmKHIucmVzcG9uc2VUeXBl PSJhcnJheWJ1ZmZlciIpLHQuaGVhZGVycylyLnNldFJlcXVlc3RIZWFkZXIobix0LmhlYWRl cnNbbl0pO3JldHVybiJqc29uIj09PXQudHlwZSYmKHIucmVzcG9uc2VUeXBlPSJ0ZXh0Iixy LnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsImFwcGxpY2F0aW9uL2pzb24iKSksci53aXRo Q3JlZGVudGlhbHM9ImluY2x1ZGUiPT09dC5jcmVkZW50aWFscyxyLm9uZXJyb3I9ZnVuY3Rp b24oKXtlKG5ldyBFcnJvcihyLnN0YXR1c1RleHQpKX0sci5vbmxvYWQ9ZnVuY3Rpb24oKXtp Zigoci5zdGF0dXM+PTIwMCYmci5zdGF0dXM8MzAwfHwwPT09ci5zdGF0dXMpJiZudWxsIT09 ci5yZXNwb25zZSl7dmFyIG49ci5yZXNwb25zZTtpZigianNvbiI9PT10LnR5cGUpdHJ5e249 SlNPTi5wYXJzZShyLnJlc3BvbnNlKX1jYXRjaCh0KXtyZXR1cm4gZSh0KX1lKG51bGwsbixy LmdldFJlc3BvbnNlSGVhZGVyKCJDYWNoZS1Db250cm9sIiksci5nZXRSZXNwb25zZUhlYWRl cigiRXhwaXJlcyIpKX1lbHNlIGUobmV3IG10KHIuc3RhdHVzVGV4dCxyLnN0YXR1cyx0LnVy bCkpfSxyLnNlbmQodC5ib2R5KSx7Y2FuY2VsOmZ1bmN0aW9uKCl7cmV0dXJuIHIuYWJvcnQo KX19fSh0LGUpfSx4dD1mdW5jdGlvbih0LGUpe3JldHVybiB5dCh1KHQse3R5cGU6ImFycmF5 QnVmZmVyIn0pLGUpfSxidD1mdW5jdGlvbih0LGUpe3JldHVybiB5dCh1KHQse21ldGhvZDoi UE9TVCJ9KSxlKX07dmFyIF90LHd0O190PVtdLHd0PTA7dmFyIFR0PWZ1bmN0aW9uKHQsZSl7 aWYoQi5zdXBwb3J0ZWQmJih0LmhlYWRlcnN8fCh0LmhlYWRlcnM9e30pLHQuaGVhZGVycy5h Y2NlcHQ9ImltYWdlL3dlYnAsKi8qIiksd3Q+PUYuTUFYX1BBUkFMTEVMX0lNQUdFX1JFUVVF U1RTKXt2YXIgcj17cmVxdWVzdFBhcmFtZXRlcnM6dCxjYWxsYmFjazplLGNhbmNlbGxlZDoh MSxjYW5jZWw6ZnVuY3Rpb24oKXt0aGlzLmNhbmNlbGxlZD0hMH19O3JldHVybiBfdC5wdXNo KHIpLHJ9d3QrKzt2YXIgbj0hMSxpPWZ1bmN0aW9uKCl7aWYoIW4pZm9yKG49ITAsd3QtLTtf dC5sZW5ndGgmJnd0PEYuTUFYX1BBUkFMTEVMX0lNQUdFX1JFUVVFU1RTOyl7dmFyIHQ9X3Qu c2hpZnQoKSxlPXQucmVxdWVzdFBhcmFtZXRlcnMscj10LmNhbGxiYWNrO3QuY2FuY2VsbGVk fHwodC5jYW5jZWw9VHQoZSxyKS5jYW5jZWwpfX0sYT14dCh0LChmdW5jdGlvbih0LHIsbixh KXtpKCksdD9lKHQpOnImJihwdCgpP2Z1bmN0aW9uKHQsZSl7dmFyIHI9bmV3IHNlbGYuQmxv YihbbmV3IFVpbnQ4QXJyYXkodCldLHt0eXBlOiJpbWFnZS9wbmcifSk7c2VsZi5jcmVhdGVJ bWFnZUJpdG1hcChyKS50aGVuKChmdW5jdGlvbih0KXtlKG51bGwsdCl9KSkuY2F0Y2goKGZ1 bmN0aW9uKHQpe2UobmV3IEVycm9yKCJDb3VsZCBub3QgbG9hZCBpbWFnZSBiZWNhdXNlIG9m ICIrdC5tZXNzYWdlKyIuIFBsZWFzZSBtYWtlIHN1cmUgdG8gdXNlIGEgc3VwcG9ydGVkIGlt YWdlIHR5cGUgc3VjaCBhcyBQTkcgb3IgSlBFRy4gTm90ZSB0aGF0IFNWR3MgYXJlIG5vdCBz dXBwb3J0ZWQuIikpfSkpfShyLGUpOmZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPW5ldyBzZWxm LkltYWdlLGE9c2VsZi5VUkw7aS5vbmxvYWQ9ZnVuY3Rpb24oKXtlKG51bGwsaSksYS5yZXZv a2VPYmplY3RVUkwoaS5zcmMpfSxpLm9uZXJyb3I9ZnVuY3Rpb24oKXtyZXR1cm4gZShuZXcg RXJyb3IoIkNvdWxkIG5vdCBsb2FkIGltYWdlLiBQbGVhc2UgbWFrZSBzdXJlIHRvIHVzZSBh IHN1cHBvcnRlZCBpbWFnZSB0eXBlIHN1Y2ggYXMgUE5HIG9yIEpQRUcuIE5vdGUgdGhhdCBT VkdzIGFyZSBub3Qgc3VwcG9ydGVkLiIpKX07dmFyIG89bmV3IHNlbGYuQmxvYihbbmV3IFVp bnQ4QXJyYXkodCldLHt0eXBlOiJpbWFnZS9wbmcifSk7aS5jYWNoZUNvbnRyb2w9cixpLmV4 cGlyZXM9bixpLnNyYz10LmJ5dGVMZW5ndGg/YS5jcmVhdGVPYmplY3RVUkwobyk6ImRhdGE6 aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQUVBQUFBQkNBWUFB QUFmRmNTSkFBQUFDMGxFUVZRWVYyTmdBQUlBQUFVQUFhclZ5RkVBQUFBQVNVVk9SSzVDWUlJ PSJ9KHIsZSxuLGEpKX0pKTtyZXR1cm57Y2FuY2VsOmZ1bmN0aW9uKCl7YS5jYW5jZWwoKSxp KCl9fX07ZnVuY3Rpb24ga3QodCxlLHIpe3JbdF0mJi0xIT09clt0XS5pbmRleE9mKGUpfHwo clt0XT1yW3RdfHxbXSxyW3RdLnB1c2goZSkpfWZ1bmN0aW9uIEF0KHQsZSxyKXtpZihyJiZy W3RdKXt2YXIgbj1yW3RdLmluZGV4T2YoZSk7LTEhPT1uJiZyW3RdLnNwbGljZShuLDEpfX12 YXIgTXQ9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT17fSksdSh0aGlzLGUpLHRoaXMu dHlwZT10fSxTdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUscil7dm9pZCAwPT09ciYmKHI9 e30pLHQuY2FsbCh0aGlzLCJlcnJvciIsdSh7ZXJyb3I6ZX0scikpfXJldHVybiB0JiYoZS5f X3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSks ZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlfShNdCksRXQ9ZnVuY3Rpb24oKXt9O0V0LnBy b3RvdHlwZS5vbj1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9saXN0ZW5lcnM9dGhpcy5f bGlzdGVuZXJzfHx7fSxrdCh0LGUsdGhpcy5fbGlzdGVuZXJzKSx0aGlzfSxFdC5wcm90b3R5 cGUub2ZmPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEF0KHQsZSx0aGlzLl9saXN0ZW5lcnMpLEF0 KHQsZSx0aGlzLl9vbmVUaW1lTGlzdGVuZXJzKSx0aGlzfSxFdC5wcm90b3R5cGUub25jZT1m dW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9vbmVUaW1lTGlzdGVuZXJzPXRoaXMuX29uZVRp bWVMaXN0ZW5lcnN8fHt9LGt0KHQsZSx0aGlzLl9vbmVUaW1lTGlzdGVuZXJzKSx0aGlzfSxF dC5wcm90b3R5cGUuZmlyZT1mdW5jdGlvbih0LGUpeyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9 bmV3IE10KHQsZXx8e30pKTt2YXIgcj10LnR5cGU7aWYodGhpcy5saXN0ZW5zKHIpKXt0LnRh cmdldD10aGlzO2Zvcih2YXIgbj0wLGk9dGhpcy5fbGlzdGVuZXJzJiZ0aGlzLl9saXN0ZW5l cnNbcl0/dGhpcy5fbGlzdGVuZXJzW3JdLnNsaWNlKCk6W107bjxpLmxlbmd0aDtuKz0xKXtp W25dLmNhbGwodGhpcyx0KX1mb3IodmFyIGE9MCxvPXRoaXMuX29uZVRpbWVMaXN0ZW5lcnMm JnRoaXMuX29uZVRpbWVMaXN0ZW5lcnNbcl0/dGhpcy5fb25lVGltZUxpc3RlbmVyc1tyXS5z bGljZSgpOltdO2E8by5sZW5ndGg7YSs9MSl7dmFyIHM9b1thXTtBdChyLHMsdGhpcy5fb25l VGltZUxpc3RlbmVycykscy5jYWxsKHRoaXMsdCl9dmFyIGw9dGhpcy5fZXZlbnRlZFBhcmVu dDtsJiYodSh0LCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLl9ldmVudGVkUGFyZW50RGF0YT90 aGlzLl9ldmVudGVkUGFyZW50RGF0YSgpOnRoaXMuX2V2ZW50ZWRQYXJlbnREYXRhKSxsLmZp cmUodCkpfWVsc2UgdCBpbnN0YW5jZW9mIFN0JiZjb25zb2xlLmVycm9yKHQuZXJyb3IpO3Jl dHVybiB0aGlzfSxFdC5wcm90b3R5cGUubGlzdGVucz1mdW5jdGlvbih0KXtyZXR1cm4gdGhp cy5fbGlzdGVuZXJzJiZ0aGlzLl9saXN0ZW5lcnNbdF0mJnRoaXMuX2xpc3RlbmVyc1t0XS5s ZW5ndGg+MHx8dGhpcy5fb25lVGltZUxpc3RlbmVycyYmdGhpcy5fb25lVGltZUxpc3RlbmVy c1t0XSYmdGhpcy5fb25lVGltZUxpc3RlbmVyc1t0XS5sZW5ndGg+MHx8dGhpcy5fZXZlbnRl ZFBhcmVudCYmdGhpcy5fZXZlbnRlZFBhcmVudC5saXN0ZW5zKHQpfSxFdC5wcm90b3R5cGUu c2V0RXZlbnRlZFBhcmVudD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9ldmVudGVkUGFy ZW50PXQsdGhpcy5fZXZlbnRlZFBhcmVudERhdGE9ZSx0aGlzfTt2YXIgTHQ9eyR2ZXJzaW9u OjgsJHJvb3Q6e3ZlcnNpb246e3JlcXVpcmVkOiEwLHR5cGU6ImVudW0iLHZhbHVlczpbOF19 LG5hbWU6e3R5cGU6InN0cmluZyJ9LG1ldGFkYXRhOnt0eXBlOiIqIn0sY2VudGVyOnt0eXBl OiJhcnJheSIsdmFsdWU6Im51bWJlciJ9LHpvb206e3R5cGU6Im51bWJlciJ9LGJlYXJpbmc6 e3R5cGU6Im51bWJlciIsZGVmYXVsdDowLHBlcmlvZDozNjAsdW5pdHM6ImRlZ3JlZXMifSxw aXRjaDp7dHlwZToibnVtYmVyIixkZWZhdWx0OjAsdW5pdHM6ImRlZ3JlZXMifSxsaWdodDp7 dHlwZToibGlnaHQifSxzb3VyY2VzOntyZXF1aXJlZDohMCx0eXBlOiJzb3VyY2VzIn0sc3By aXRlOnt0eXBlOiJzdHJpbmcifSxnbHlwaHM6e3R5cGU6InN0cmluZyJ9LHRyYW5zaXRpb246 e3R5cGU6InRyYW5zaXRpb24ifSxsYXllcnM6e3JlcXVpcmVkOiEwLHR5cGU6ImFycmF5Iix2 YWx1ZToibGF5ZXIifX0sc291cmNlczp7IioiOnt0eXBlOiJzb3VyY2UifX0sc291cmNlOlsi c291cmNlX3ZlY3RvciIsInNvdXJjZV9yYXN0ZXIiLCJzb3VyY2VfcmFzdGVyX2RlbSIsInNv dXJjZV9nZW9qc29uIiwic291cmNlX3ZpZGVvIiwic291cmNlX2ltYWdlIl0sc291cmNlX3Zl Y3Rvcjp7dHlwZTp7cmVxdWlyZWQ6ITAsdHlwZToiZW51bSIsdmFsdWVzOnt2ZWN0b3I6e319 fSx1cmw6e3R5cGU6InN0cmluZyJ9LHRpbGVzOnt0eXBlOiJhcnJheSIsdmFsdWU6InN0cmlu ZyJ9LGJvdW5kczp7dHlwZToiYXJyYXkiLHZhbHVlOiJudW1iZXIiLGxlbmd0aDo0LGRlZmF1 bHQ6Wy0xODAsLTg1LjA1MTEyOSwxODAsODUuMDUxMTI5XX0sc2NoZW1lOnt0eXBlOiJlbnVt Iix2YWx1ZXM6e3h5ejp7fSx0bXM6e319LGRlZmF1bHQ6Inh5eiJ9LG1pbnpvb206e3R5cGU6 Im51bWJlciIsZGVmYXVsdDowfSxtYXh6b29tOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MjJ9 LGF0dHJpYnV0aW9uOnt0eXBlOiJzdHJpbmcifSxwcm9tb3RlSWQ6e3R5cGU6InByb21vdGVJ ZCJ9LCIqIjp7dHlwZToiKiJ9fSxzb3VyY2VfcmFzdGVyOnt0eXBlOntyZXF1aXJlZDohMCx0 eXBlOiJlbnVtIix2YWx1ZXM6e3Jhc3Rlcjp7fX19LHVybDp7dHlwZToic3RyaW5nIn0sdGls ZXM6e3R5cGU6ImFycmF5Iix2YWx1ZToic3RyaW5nIn0sYm91bmRzOnt0eXBlOiJhcnJheSIs dmFsdWU6Im51bWJlciIsbGVuZ3RoOjQsZGVmYXVsdDpbLTE4MCwtODUuMDUxMTI5LDE4MCw4 NS4wNTExMjldfSxtaW56b29tOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MH0sbWF4em9vbTp7 dHlwZToibnVtYmVyIixkZWZhdWx0OjIyfSx0aWxlU2l6ZTp7dHlwZToibnVtYmVyIixkZWZh dWx0OjUxMix1bml0czoicGl4ZWxzIn0sc2NoZW1lOnt0eXBlOiJlbnVtIix2YWx1ZXM6e3h5 ejp7fSx0bXM6e319LGRlZmF1bHQ6Inh5eiJ9LGF0dHJpYnV0aW9uOnt0eXBlOiJzdHJpbmci fSwiKiI6e3R5cGU6IioifX0sc291cmNlX3Jhc3Rlcl9kZW06e3R5cGU6e3JlcXVpcmVkOiEw LHR5cGU6ImVudW0iLHZhbHVlczp7InJhc3Rlci1kZW0iOnt9fX0sdXJsOnt0eXBlOiJzdHJp bmcifSx0aWxlczp7dHlwZToiYXJyYXkiLHZhbHVlOiJzdHJpbmcifSxib3VuZHM6e3R5cGU6 ImFycmF5Iix2YWx1ZToibnVtYmVyIixsZW5ndGg6NCxkZWZhdWx0OlstMTgwLC04NS4wNTEx MjksMTgwLDg1LjA1MTEyOV19LG1pbnpvb206e3R5cGU6Im51bWJlciIsZGVmYXVsdDowfSxt YXh6b29tOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MjJ9LHRpbGVTaXplOnt0eXBlOiJudW1i ZXIiLGRlZmF1bHQ6NTEyLHVuaXRzOiJwaXhlbHMifSxhdHRyaWJ1dGlvbjp7dHlwZToic3Ry aW5nIn0sZW5jb2Rpbmc6e3R5cGU6ImVudW0iLHZhbHVlczp7dGVycmFyaXVtOnt9LG1hcGJv eDp7fX0sZGVmYXVsdDoibWFwYm94In0sIioiOnt0eXBlOiIqIn19LHNvdXJjZV9nZW9qc29u Ont0eXBlOntyZXF1aXJlZDohMCx0eXBlOiJlbnVtIix2YWx1ZXM6e2dlb2pzb246e319fSxk YXRhOnt0eXBlOiIqIn0sbWF4em9vbTp7dHlwZToibnVtYmVyIixkZWZhdWx0OjE4fSxhdHRy aWJ1dGlvbjp7dHlwZToic3RyaW5nIn0sYnVmZmVyOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6 MTI4LG1heGltdW06NTEyLG1pbmltdW06MH0sdG9sZXJhbmNlOnt0eXBlOiJudW1iZXIiLGRl ZmF1bHQ6LjM3NX0sY2x1c3Rlcjp7dHlwZToiYm9vbGVhbiIsZGVmYXVsdDohMX0sY2x1c3Rl clJhZGl1czp7dHlwZToibnVtYmVyIixkZWZhdWx0OjUwLG1pbmltdW06MH0sY2x1c3Rlck1h eFpvb206e3R5cGU6Im51bWJlciJ9LGNsdXN0ZXJQcm9wZXJ0aWVzOnt0eXBlOiIqIn0sbGlu ZU1ldHJpY3M6e3R5cGU6ImJvb2xlYW4iLGRlZmF1bHQ6ITF9LGdlbmVyYXRlSWQ6e3R5cGU6 ImJvb2xlYW4iLGRlZmF1bHQ6ITF9LHByb21vdGVJZDp7dHlwZToicHJvbW90ZUlkIn19LHNv dXJjZV92aWRlbzp7dHlwZTp7cmVxdWlyZWQ6ITAsdHlwZToiZW51bSIsdmFsdWVzOnt2aWRl bzp7fX19LHVybHM6e3JlcXVpcmVkOiEwLHR5cGU6ImFycmF5Iix2YWx1ZToic3RyaW5nIn0s Y29vcmRpbmF0ZXM6e3JlcXVpcmVkOiEwLHR5cGU6ImFycmF5IixsZW5ndGg6NCx2YWx1ZTp7 dHlwZToiYXJyYXkiLGxlbmd0aDoyLHZhbHVlOiJudW1iZXIifX19LHNvdXJjZV9pbWFnZTp7 dHlwZTp7cmVxdWlyZWQ6ITAsdHlwZToiZW51bSIsdmFsdWVzOntpbWFnZTp7fX19LHVybDp7 cmVxdWlyZWQ6ITAsdHlwZToic3RyaW5nIn0sY29vcmRpbmF0ZXM6e3JlcXVpcmVkOiEwLHR5 cGU6ImFycmF5IixsZW5ndGg6NCx2YWx1ZTp7dHlwZToiYXJyYXkiLGxlbmd0aDoyLHZhbHVl OiJudW1iZXIifX19LGxheWVyOntpZDp7dHlwZToic3RyaW5nIixyZXF1aXJlZDohMH0sdHlw ZTp7dHlwZToiZW51bSIsdmFsdWVzOntmaWxsOnt9LGxpbmU6e30sc3ltYm9sOnt9LGNpcmNs ZTp7fSxoZWF0bWFwOnt9LCJmaWxsLWV4dHJ1c2lvbiI6e30scmFzdGVyOnt9LGhpbGxzaGFk ZTp7fSxiYWNrZ3JvdW5kOnt9fSxyZXF1aXJlZDohMH0sbWV0YWRhdGE6e3R5cGU6IioifSxz b3VyY2U6e3R5cGU6InN0cmluZyJ9LCJzb3VyY2UtbGF5ZXIiOnt0eXBlOiJzdHJpbmcifSxt aW56b29tOnt0eXBlOiJudW1iZXIiLG1pbmltdW06MCxtYXhpbXVtOjI0fSxtYXh6b29tOnt0 eXBlOiJudW1iZXIiLG1pbmltdW06MCxtYXhpbXVtOjI0fSxmaWx0ZXI6e3R5cGU6ImZpbHRl ciJ9LGxheW91dDp7dHlwZToibGF5b3V0In0scGFpbnQ6e3R5cGU6InBhaW50In19LGxheW91 dDpbImxheW91dF9maWxsIiwibGF5b3V0X2xpbmUiLCJsYXlvdXRfY2lyY2xlIiwibGF5b3V0 X2hlYXRtYXAiLCJsYXlvdXRfZmlsbC1leHRydXNpb24iLCJsYXlvdXRfc3ltYm9sIiwibGF5 b3V0X3Jhc3RlciIsImxheW91dF9oaWxsc2hhZGUiLCJsYXlvdXRfYmFja2dyb3VuZCJdLGxh eW91dF9iYWNrZ3JvdW5kOnt2aXNpYmlsaXR5Ont0eXBlOiJlbnVtIix2YWx1ZXM6e3Zpc2li bGU6e30sbm9uZTp7fX0sZGVmYXVsdDoidmlzaWJsZSIsInByb3BlcnR5LXR5cGUiOiJjb25z dGFudCJ9fSxsYXlvdXRfZmlsbDp7ImZpbGwtc29ydC1rZXkiOnt0eXBlOiJudW1iZXIiLGV4 cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUi XX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LHZpc2liaWxpdHk6e3R5cGU6ImVu dW0iLHZhbHVlczp7dmlzaWJsZTp7fSxub25lOnt9fSxkZWZhdWx0OiJ2aXNpYmxlIiwicHJv cGVydHktdHlwZSI6ImNvbnN0YW50In19LGxheW91dF9jaXJjbGU6eyJjaXJjbGUtc29ydC1r ZXkiOnt0eXBlOiJudW1iZXIiLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0 ZXJzOlsiem9vbSIsImZlYXR1cmUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9 LHZpc2liaWxpdHk6e3R5cGU6ImVudW0iLHZhbHVlczp7dmlzaWJsZTp7fSxub25lOnt9fSxk ZWZhdWx0OiJ2aXNpYmxlIiwicHJvcGVydHktdHlwZSI6ImNvbnN0YW50In19LGxheW91dF9o ZWF0bWFwOnt2aXNpYmlsaXR5Ont0eXBlOiJlbnVtIix2YWx1ZXM6e3Zpc2libGU6e30sbm9u ZTp7fX0sZGVmYXVsdDoidmlzaWJsZSIsInByb3BlcnR5LXR5cGUiOiJjb25zdGFudCJ9fSwi bGF5b3V0X2ZpbGwtZXh0cnVzaW9uIjp7dmlzaWJpbGl0eTp7dHlwZToiZW51bSIsdmFsdWVz Ont2aXNpYmxlOnt9LG5vbmU6e319LGRlZmF1bHQ6InZpc2libGUiLCJwcm9wZXJ0eS10eXBl IjoiY29uc3RhbnQifX0sbGF5b3V0X2xpbmU6eyJsaW5lLWNhcCI6e3R5cGU6ImVudW0iLHZh bHVlczp7YnV0dDp7fSxyb3VuZDp7fSxzcXVhcmU6e319LGRlZmF1bHQ6ImJ1dHQiLGV4cHJl c3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHkt dHlwZSI6ImRhdGEtY29uc3RhbnQifSwibGluZS1qb2luIjp7dHlwZToiZW51bSIsdmFsdWVz OntiZXZlbDp7fSxyb3VuZDp7fSxtaXRlcjp7fX0sZGVmYXVsdDoibWl0ZXIiLGV4cHJlc3Np b246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiXX0sInBy b3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJsaW5lLW1pdGVyLWxpbWl0Ijp7dHlwZToi bnVtYmVyIixkZWZhdWx0OjIscmVxdWlyZXM6W3sibGluZS1qb2luIjoibWl0ZXIifV0sZXhw cmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0 eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJsaW5lLXJvdW5kLWxpbWl0Ijp7dHlwZToibnVt YmVyIixkZWZhdWx0OjEuMDUscmVxdWlyZXM6W3sibGluZS1qb2luIjoicm91bmQifV0sZXhw cmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0 eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJsaW5lLXNvcnQta2V5Ijp7dHlwZToibnVtYmVy IixleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iLCJmZWF0 dXJlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSx2aXNpYmlsaXR5Ont0eXBl OiJlbnVtIix2YWx1ZXM6e3Zpc2libGU6e30sbm9uZTp7fX0sZGVmYXVsdDoidmlzaWJsZSIs InByb3BlcnR5LXR5cGUiOiJjb25zdGFudCJ9fSxsYXlvdXRfc3ltYm9sOnsic3ltYm9sLXBs YWNlbWVudCI6e3R5cGU6ImVudW0iLHZhbHVlczp7cG9pbnQ6e30sbGluZTp7fSwibGluZS1j ZW50ZXIiOnt9fSxkZWZhdWx0OiJwb2ludCIsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEx LHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9 LCJzeW1ib2wtc3BhY2luZyI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDoyNTAsbWluaW11bTox LHVuaXRzOiJwaXhlbHMiLHJlcXVpcmVzOlt7InN5bWJvbC1wbGFjZW1lbnQiOiJsaW5lIn1d LGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJv cGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwic3ltYm9sLWF2b2lkLWVkZ2VzIjp7dHlw ZToiYm9vbGVhbiIsZGVmYXVsdDohMSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFy YW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInN5 bWJvbC1zb3J0LWtleSI6e3R5cGU6Im51bWJlciIsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVk OiExLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSJdfSwicHJvcGVydHktdHlwZSI6ImRh dGEtZHJpdmVuIn0sInN5bWJvbC16LW9yZGVyIjp7dHlwZToiZW51bSIsdmFsdWVzOnthdXRv Ont9LCJ2aWV3cG9ydC15Ijp7fSxzb3VyY2U6e319LGRlZmF1bHQ6ImF1dG8iLGV4cHJlc3Np b246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlw ZSI6ImRhdGEtY29uc3RhbnQifSwiaWNvbi1hbGxvdy1vdmVybGFwIjp7dHlwZToiYm9vbGVh biIsZGVmYXVsdDohMSxyZXF1aXJlczpbImljb24taW1hZ2UiXSxleHByZXNzaW9uOntpbnRl cnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRh LWNvbnN0YW50In0sImljb24taWdub3JlLXBsYWNlbWVudCI6e3R5cGU6ImJvb2xlYW4iLGRl ZmF1bHQ6ITEscmVxdWlyZXM6WyJpY29uLWltYWdlIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xh dGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25z dGFudCJ9LCJpY29uLW9wdGlvbmFsIjp7dHlwZToiYm9vbGVhbiIsZGVmYXVsdDohMSxyZXF1 aXJlczpbImljb24taW1hZ2UiLCJ0ZXh0LWZpZWxkIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xh dGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25z dGFudCJ9LCJpY29uLXJvdGF0aW9uLWFsaWdubWVudCI6e3R5cGU6ImVudW0iLHZhbHVlczp7 bWFwOnt9LHZpZXdwb3J0Ont9LGF1dG86e319LGRlZmF1bHQ6ImF1dG8iLHJlcXVpcmVzOlsi aWNvbi1pbWFnZSJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsi em9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwiaWNvbi1zaXplIjp7 dHlwZToibnVtYmVyIixkZWZhdWx0OjEsbWluaW11bTowLHVuaXRzOiJmYWN0b3Igb2YgdGhl IG9yaWdpbmFsIGljb24gc2l6ZSIscmVxdWlyZXM6WyJpY29uLWltYWdlIl0sZXhwcmVzc2lv bjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSJdfSwicHJv cGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImljb24tdGV4dC1maXQiOnt0eXBlOiJlbnVt Iix2YWx1ZXM6e25vbmU6e30sd2lkdGg6e30saGVpZ2h0Ont9LGJvdGg6e319LGRlZmF1bHQ6 Im5vbmUiLHJlcXVpcmVzOlsiaWNvbi1pbWFnZSIsInRleHQtZmllbGQiXSxleHByZXNzaW9u OntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUi OiJkYXRhLWNvbnN0YW50In0sImljb24tdGV4dC1maXQtcGFkZGluZyI6e3R5cGU6ImFycmF5 Iix2YWx1ZToibnVtYmVyIixsZW5ndGg6NCxkZWZhdWx0OlswLDAsMCwwXSx1bml0czoicGl4 ZWxzIixyZXF1aXJlczpbImljb24taW1hZ2UiLCJ0ZXh0LWZpZWxkIix7Imljb24tdGV4dC1m aXQiOlsiYm90aCIsIndpZHRoIiwiaGVpZ2h0Il19XSxleHByZXNzaW9uOntpbnRlcnBvbGF0 ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0 YW50In0sImljb24taW1hZ2UiOnt0eXBlOiJyZXNvbHZlZEltYWdlIix0b2tlbnM6ITAsZXhw cmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSJd fSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImljb24tcm90YXRlIjp7dHlwZToi bnVtYmVyIixkZWZhdWx0OjAscGVyaW9kOjM2MCx1bml0czoiZGVncmVlcyIscmVxdWlyZXM6 WyJpY29uLWltYWdlIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6 WyJ6b29tIiwiZmVhdHVyZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImlj b24tcGFkZGluZyI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDoyLG1pbmltdW06MCx1bml0czoi cGl4ZWxzIixyZXF1aXJlczpbImljb24taW1hZ2UiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0 ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0 YW50In0sImljb24ta2VlcC11cHJpZ2h0Ijp7dHlwZToiYm9vbGVhbiIsZGVmYXVsdDohMSxy ZXF1aXJlczpbImljb24taW1hZ2UiLHsiaWNvbi1yb3RhdGlvbi1hbGlnbm1lbnQiOiJtYXAi fSx7InN5bWJvbC1wbGFjZW1lbnQiOlsibGluZSIsImxpbmUtY2VudGVyIl19XSxleHByZXNz aW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5 cGUiOiJkYXRhLWNvbnN0YW50In0sImljb24tb2Zmc2V0Ijp7dHlwZToiYXJyYXkiLHZhbHVl OiJudW1iZXIiLGxlbmd0aDoyLGRlZmF1bHQ6WzAsMF0scmVxdWlyZXM6WyJpY29uLWltYWdl Il0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVh dHVyZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImljb24tYW5jaG9yIjp7 dHlwZToiZW51bSIsdmFsdWVzOntjZW50ZXI6e30sbGVmdDp7fSxyaWdodDp7fSx0b3A6e30s Ym90dG9tOnt9LCJ0b3AtbGVmdCI6e30sInRvcC1yaWdodCI6e30sImJvdHRvbS1sZWZ0Ijp7 fSwiYm90dG9tLXJpZ2h0Ijp7fX0sZGVmYXVsdDoiY2VudGVyIixyZXF1aXJlczpbImljb24t aW1hZ2UiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20i LCJmZWF0dXJlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwiaWNvbi1waXRj aC1hbGlnbm1lbnQiOnt0eXBlOiJlbnVtIix2YWx1ZXM6e21hcDp7fSx2aWV3cG9ydDp7fSxh dXRvOnt9fSxkZWZhdWx0OiJhdXRvIixyZXF1aXJlczpbImljb24taW1hZ2UiXSxleHByZXNz aW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5 cGUiOiJkYXRhLWNvbnN0YW50In0sInRleHQtcGl0Y2gtYWxpZ25tZW50Ijp7dHlwZToiZW51 bSIsdmFsdWVzOnttYXA6e30sdmlld3BvcnQ6e30sYXV0bzp7fX0sZGVmYXVsdDoiYXV0byIs cmVxdWlyZXM6WyJ0ZXh0LWZpZWxkIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBh cmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJ0 ZXh0LXJvdGF0aW9uLWFsaWdubWVudCI6e3R5cGU6ImVudW0iLHZhbHVlczp7bWFwOnt9LHZp ZXdwb3J0Ont9LGF1dG86e319LGRlZmF1bHQ6ImF1dG8iLHJlcXVpcmVzOlsidGV4dC1maWVs ZCJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSJdfSwi cHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwidGV4dC1maWVsZCI6e3R5cGU6ImZv cm1hdHRlZCIsZGVmYXVsdDoiIix0b2tlbnM6ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVk OiExLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSJdfSwicHJvcGVydHktdHlwZSI6ImRh dGEtZHJpdmVuIn0sInRleHQtZm9udCI6e3R5cGU6ImFycmF5Iix2YWx1ZToic3RyaW5nIixk ZWZhdWx0OlsiT3BlbiBTYW5zIFJlZ3VsYXIiLCJBcmlhbCBVbmljb2RlIE1TIFJlZ3VsYXIi XSxyZXF1aXJlczpbInRleHQtZmllbGQiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEs cGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1k cml2ZW4ifSwidGV4dC1zaXplIjp7dHlwZToibnVtYmVyIixkZWZhdWx0OjE2LG1pbmltdW06 MCx1bml0czoicGl4ZWxzIixyZXF1aXJlczpbInRleHQtZmllbGQiXSxleHByZXNzaW9uOntp bnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIl19LCJwcm9wZXJ0 eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwidGV4dC1tYXgtd2lkdGgiOnt0eXBlOiJudW1iZXIi LGRlZmF1bHQ6MTAsbWluaW11bTowLHVuaXRzOiJlbXMiLHJlcXVpcmVzOlsidGV4dC1maWVs ZCJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZl YXR1cmUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJ0ZXh0LWxpbmUtaGVp Z2h0Ijp7dHlwZToibnVtYmVyIixkZWZhdWx0OjEuMix1bml0czoiZW1zIixyZXF1aXJlczpb InRleHQtZmllbGQiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpb Inpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInRleHQtbGV0dGVy LXNwYWNpbmciOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MCx1bml0czoiZW1zIixyZXF1aXJl czpbInRleHQtZmllbGQiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVy czpbInpvb20iLCJmZWF0dXJlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwi dGV4dC1qdXN0aWZ5Ijp7dHlwZToiZW51bSIsdmFsdWVzOnthdXRvOnt9LGxlZnQ6e30sY2Vu dGVyOnt9LHJpZ2h0Ont9fSxkZWZhdWx0OiJjZW50ZXIiLHJlcXVpcmVzOlsidGV4dC1maWVs ZCJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSIsImZl YXR1cmUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJ0ZXh0LXJhZGlhbC1v ZmZzZXQiOnt0eXBlOiJudW1iZXIiLHVuaXRzOiJlbXMiLGRlZmF1bHQ6MCxyZXF1aXJlczpb InRleHQtZmllbGQiXSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIixleHByZXNzaW9u OntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIl19fSwidGV4 dC12YXJpYWJsZS1hbmNob3IiOnt0eXBlOiJhcnJheSIsdmFsdWU6ImVudW0iLHZhbHVlczp7 Y2VudGVyOnt9LGxlZnQ6e30scmlnaHQ6e30sdG9wOnt9LGJvdHRvbTp7fSwidG9wLWxlZnQi Ont9LCJ0b3AtcmlnaHQiOnt9LCJib3R0b20tbGVmdCI6e30sImJvdHRvbS1yaWdodCI6e319 LHJlcXVpcmVzOlsidGV4dC1maWVsZCIseyJzeW1ib2wtcGxhY2VtZW50IjpbInBvaW50Il19 XSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInBy b3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInRleHQtYW5jaG9yIjp7dHlwZToiZW51 bSIsdmFsdWVzOntjZW50ZXI6e30sbGVmdDp7fSxyaWdodDp7fSx0b3A6e30sYm90dG9tOnt9 LCJ0b3AtbGVmdCI6e30sInRvcC1yaWdodCI6e30sImJvdHRvbS1sZWZ0Ijp7fSwiYm90dG9t LXJpZ2h0Ijp7fX0sZGVmYXVsdDoiY2VudGVyIixyZXF1aXJlczpbInRleHQtZmllbGQiLHsi ISI6InRleHQtdmFyaWFibGUtYW5jaG9yIn1dLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDoh MSxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRh LWRyaXZlbiJ9LCJ0ZXh0LW1heC1hbmdsZSI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDo0NSx1 bml0czoiZGVncmVlcyIscmVxdWlyZXM6WyJ0ZXh0LWZpZWxkIix7InN5bWJvbC1wbGFjZW1l bnQiOlsibGluZSIsImxpbmUtY2VudGVyIl19XSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6 ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50 In0sInRleHQtd3JpdGluZy1tb2RlIjp7dHlwZToiYXJyYXkiLHZhbHVlOiJlbnVtIix2YWx1 ZXM6e2hvcml6b250YWw6e30sdmVydGljYWw6e319LHJlcXVpcmVzOlsidGV4dC1maWVsZCIs eyJzeW1ib2wtcGxhY2VtZW50IjpbInBvaW50Il19XSxleHByZXNzaW9uOntpbnRlcnBvbGF0 ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0 YW50In0sInRleHQtcm90YXRlIjp7dHlwZToibnVtYmVyIixkZWZhdWx0OjAscGVyaW9kOjM2 MCx1bml0czoiZGVncmVlcyIscmVxdWlyZXM6WyJ0ZXh0LWZpZWxkIl0sZXhwcmVzc2lvbjp7 aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSJdfSwicHJvcGVy dHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sInRleHQtcGFkZGluZyI6e3R5cGU6Im51bWJlciIs ZGVmYXVsdDoyLG1pbmltdW06MCx1bml0czoicGl4ZWxzIixyZXF1aXJlczpbInRleHQtZmll bGQiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0s InByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInRleHQta2VlcC11cHJpZ2h0Ijp7 dHlwZToiYm9vbGVhbiIsZGVmYXVsdDohMCxyZXF1aXJlczpbInRleHQtZmllbGQiLHsidGV4 dC1yb3RhdGlvbi1hbGlnbm1lbnQiOiJtYXAifSx7InN5bWJvbC1wbGFjZW1lbnQiOlsibGlu ZSIsImxpbmUtY2VudGVyIl19XSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1l dGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInRleHQt dHJhbnNmb3JtIjp7dHlwZToiZW51bSIsdmFsdWVzOntub25lOnt9LHVwcGVyY2FzZTp7fSxs b3dlcmNhc2U6e319LGRlZmF1bHQ6Im5vbmUiLHJlcXVpcmVzOlsidGV4dC1maWVsZCJdLGV4 cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUi XX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJ0ZXh0LW9mZnNldCI6e3R5cGU6 ImFycmF5Iix2YWx1ZToibnVtYmVyIix1bml0czoiZW1zIixsZW5ndGg6MixkZWZhdWx0Olsw LDBdLHJlcXVpcmVzOlsidGV4dC1maWVsZCIseyIhIjoidGV4dC1yYWRpYWwtb2Zmc2V0In1d LGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1 cmUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJ0ZXh0LWFsbG93LW92ZXJs YXAiOnt0eXBlOiJib29sZWFuIixkZWZhdWx0OiExLHJlcXVpcmVzOlsidGV4dC1maWVsZCJd LGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJv cGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwidGV4dC1pZ25vcmUtcGxhY2VtZW50Ijp7 dHlwZToiYm9vbGVhbiIsZGVmYXVsdDohMSxyZXF1aXJlczpbInRleHQtZmllbGQiXSxleHBy ZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5 LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInRleHQtb3B0aW9uYWwiOnt0eXBlOiJib29sZWFu IixkZWZhdWx0OiExLHJlcXVpcmVzOlsidGV4dC1maWVsZCIsImljb24taW1hZ2UiXSxleHBy ZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5 LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sdmlzaWJpbGl0eTp7dHlwZToiZW51bSIsdmFsdWVz Ont2aXNpYmxlOnt9LG5vbmU6e319LGRlZmF1bHQ6InZpc2libGUiLCJwcm9wZXJ0eS10eXBl IjoiY29uc3RhbnQifX0sbGF5b3V0X3Jhc3Rlcjp7dmlzaWJpbGl0eTp7dHlwZToiZW51bSIs dmFsdWVzOnt2aXNpYmxlOnt9LG5vbmU6e319LGRlZmF1bHQ6InZpc2libGUiLCJwcm9wZXJ0 eS10eXBlIjoiY29uc3RhbnQifX0sbGF5b3V0X2hpbGxzaGFkZTp7dmlzaWJpbGl0eTp7dHlw ZToiZW51bSIsdmFsdWVzOnt2aXNpYmxlOnt9LG5vbmU6e319LGRlZmF1bHQ6InZpc2libGUi LCJwcm9wZXJ0eS10eXBlIjoiY29uc3RhbnQifX0sZmlsdGVyOnt0eXBlOiJhcnJheSIsdmFs dWU6IioifSxmaWx0ZXJfb3BlcmF0b3I6e3R5cGU6ImVudW0iLHZhbHVlczp7Ij09Ijp7fSwi IT0iOnt9LCI+Ijp7fSwiPj0iOnt9LCI8Ijp7fSwiPD0iOnt9LGluOnt9LCIhaW4iOnt9LGFs bDp7fSxhbnk6e30sbm9uZTp7fSxoYXM6e30sIiFoYXMiOnt9LHdpdGhpbjp7fX19LGdlb21l dHJ5X3R5cGU6e3R5cGU6ImVudW0iLHZhbHVlczp7UG9pbnQ6e30sTGluZVN0cmluZzp7fSxQ b2x5Z29uOnt9fX0sZnVuY3Rpb246e2V4cHJlc3Npb246e3R5cGU6ImV4cHJlc3Npb24ifSxz dG9wczp7dHlwZToiYXJyYXkiLHZhbHVlOiJmdW5jdGlvbl9zdG9wIn0sYmFzZTp7dHlwZToi bnVtYmVyIixkZWZhdWx0OjEsbWluaW11bTowfSxwcm9wZXJ0eTp7dHlwZToic3RyaW5nIixk ZWZhdWx0OiIkem9vbSJ9LHR5cGU6e3R5cGU6ImVudW0iLHZhbHVlczp7aWRlbnRpdHk6e30s ZXhwb25lbnRpYWw6e30saW50ZXJ2YWw6e30sY2F0ZWdvcmljYWw6e319LGRlZmF1bHQ6ImV4 cG9uZW50aWFsIn0sY29sb3JTcGFjZTp7dHlwZToiZW51bSIsdmFsdWVzOntyZ2I6e30sbGFi Ont9LGhjbDp7fX0sZGVmYXVsdDoicmdiIn0sZGVmYXVsdDp7dHlwZToiKiIscmVxdWlyZWQ6 ITF9fSxmdW5jdGlvbl9zdG9wOnt0eXBlOiJhcnJheSIsbWluaW11bTowLG1heGltdW06MjQs dmFsdWU6WyJudW1iZXIiLCJjb2xvciJdLGxlbmd0aDoyfSxleHByZXNzaW9uOnt0eXBlOiJh cnJheSIsdmFsdWU6IioiLG1pbmltdW06MX0sZXhwcmVzc2lvbl9uYW1lOnt0eXBlOiJlbnVt Iix2YWx1ZXM6e2xldDp7Z3JvdXA6IlZhcmlhYmxlIGJpbmRpbmcifSx2YXI6e2dyb3VwOiJW YXJpYWJsZSBiaW5kaW5nIn0sbGl0ZXJhbDp7Z3JvdXA6IlR5cGVzIn0sYXJyYXk6e2dyb3Vw OiJUeXBlcyJ9LGF0Ontncm91cDoiTG9va3VwIn0saW46e2dyb3VwOiJMb29rdXAifSwiaW5k ZXgtb2YiOntncm91cDoiTG9va3VwIn0sc2xpY2U6e2dyb3VwOiJMb29rdXAifSxjYXNlOntn cm91cDoiRGVjaXNpb24ifSxtYXRjaDp7Z3JvdXA6IkRlY2lzaW9uIn0sY29hbGVzY2U6e2dy b3VwOiJEZWNpc2lvbiJ9LHN0ZXA6e2dyb3VwOiJSYW1wcywgc2NhbGVzLCBjdXJ2ZXMifSxp bnRlcnBvbGF0ZTp7Z3JvdXA6IlJhbXBzLCBzY2FsZXMsIGN1cnZlcyJ9LCJpbnRlcnBvbGF0 ZS1oY2wiOntncm91cDoiUmFtcHMsIHNjYWxlcywgY3VydmVzIn0sImludGVycG9sYXRlLWxh YiI6e2dyb3VwOiJSYW1wcywgc2NhbGVzLCBjdXJ2ZXMifSxsbjI6e2dyb3VwOiJNYXRoIn0s cGk6e2dyb3VwOiJNYXRoIn0sZTp7Z3JvdXA6Ik1hdGgifSx0eXBlb2Y6e2dyb3VwOiJUeXBl cyJ9LHN0cmluZzp7Z3JvdXA6IlR5cGVzIn0sbnVtYmVyOntncm91cDoiVHlwZXMifSxib29s ZWFuOntncm91cDoiVHlwZXMifSxvYmplY3Q6e2dyb3VwOiJUeXBlcyJ9LGNvbGxhdG9yOntn cm91cDoiVHlwZXMifSxmb3JtYXQ6e2dyb3VwOiJUeXBlcyJ9LGltYWdlOntncm91cDoiVHlw ZXMifSwibnVtYmVyLWZvcm1hdCI6e2dyb3VwOiJUeXBlcyJ9LCJ0by1zdHJpbmciOntncm91 cDoiVHlwZXMifSwidG8tbnVtYmVyIjp7Z3JvdXA6IlR5cGVzIn0sInRvLWJvb2xlYW4iOntn cm91cDoiVHlwZXMifSwidG8tcmdiYSI6e2dyb3VwOiJDb2xvciJ9LCJ0by1jb2xvciI6e2dy b3VwOiJUeXBlcyJ9LHJnYjp7Z3JvdXA6IkNvbG9yIn0scmdiYTp7Z3JvdXA6IkNvbG9yIn0s Z2V0Ontncm91cDoiTG9va3VwIn0saGFzOntncm91cDoiTG9va3VwIn0sbGVuZ3RoOntncm91 cDoiTG9va3VwIn0scHJvcGVydGllczp7Z3JvdXA6IkZlYXR1cmUgZGF0YSJ9LCJmZWF0dXJl LXN0YXRlIjp7Z3JvdXA6IkZlYXR1cmUgZGF0YSJ9LCJnZW9tZXRyeS10eXBlIjp7Z3JvdXA6 IkZlYXR1cmUgZGF0YSJ9LGlkOntncm91cDoiRmVhdHVyZSBkYXRhIn0sem9vbTp7Z3JvdXA6 Ilpvb20ifSwiaGVhdG1hcC1kZW5zaXR5Ijp7Z3JvdXA6IkhlYXRtYXAifSwibGluZS1wcm9n cmVzcyI6e2dyb3VwOiJGZWF0dXJlIGRhdGEifSxhY2N1bXVsYXRlZDp7Z3JvdXA6IkZlYXR1 cmUgZGF0YSJ9LCIrIjp7Z3JvdXA6Ik1hdGgifSwiKiI6e2dyb3VwOiJNYXRoIn0sIi0iOntn cm91cDoiTWF0aCJ9LCIvIjp7Z3JvdXA6Ik1hdGgifSwiJSI6e2dyb3VwOiJNYXRoIn0sIl4i Ontncm91cDoiTWF0aCJ9LHNxcnQ6e2dyb3VwOiJNYXRoIn0sbG9nMTA6e2dyb3VwOiJNYXRo In0sbG46e2dyb3VwOiJNYXRoIn0sbG9nMjp7Z3JvdXA6Ik1hdGgifSxzaW46e2dyb3VwOiJN YXRoIn0sY29zOntncm91cDoiTWF0aCJ9LHRhbjp7Z3JvdXA6Ik1hdGgifSxhc2luOntncm91 cDoiTWF0aCJ9LGFjb3M6e2dyb3VwOiJNYXRoIn0sYXRhbjp7Z3JvdXA6Ik1hdGgifSxtaW46 e2dyb3VwOiJNYXRoIn0sbWF4Ontncm91cDoiTWF0aCJ9LHJvdW5kOntncm91cDoiTWF0aCJ9 LGFiczp7Z3JvdXA6Ik1hdGgifSxjZWlsOntncm91cDoiTWF0aCJ9LGZsb29yOntncm91cDoi TWF0aCJ9LGRpc3RhbmNlOntncm91cDoiTWF0aCJ9LCI9PSI6e2dyb3VwOiJEZWNpc2lvbiJ9 LCIhPSI6e2dyb3VwOiJEZWNpc2lvbiJ9LCI+Ijp7Z3JvdXA6IkRlY2lzaW9uIn0sIjwiOntn cm91cDoiRGVjaXNpb24ifSwiPj0iOntncm91cDoiRGVjaXNpb24ifSwiPD0iOntncm91cDoi RGVjaXNpb24ifSxhbGw6e2dyb3VwOiJEZWNpc2lvbiJ9LGFueTp7Z3JvdXA6IkRlY2lzaW9u In0sIiEiOntncm91cDoiRGVjaXNpb24ifSx3aXRoaW46e2dyb3VwOiJEZWNpc2lvbiJ9LCJp cy1zdXBwb3J0ZWQtc2NyaXB0Ijp7Z3JvdXA6IlN0cmluZyJ9LHVwY2FzZTp7Z3JvdXA6IlN0 cmluZyJ9LGRvd25jYXNlOntncm91cDoiU3RyaW5nIn0sY29uY2F0Ontncm91cDoiU3RyaW5n In0sInJlc29sdmVkLWxvY2FsZSI6e2dyb3VwOiJTdHJpbmcifX19LGxpZ2h0OnthbmNob3I6 e3R5cGU6ImVudW0iLGRlZmF1bHQ6InZpZXdwb3J0Iix2YWx1ZXM6e21hcDp7fSx2aWV3cG9y dDp7fX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50Iix0cmFuc2l0aW9uOiExLGV4 cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSJdfX0scG9zaXRp b246e3R5cGU6ImFycmF5IixkZWZhdWx0OlsxLjE1LDIxMCwzMF0sbGVuZ3RoOjMsdmFsdWU6 Im51bWJlciIsInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50Iix0cmFuc2l0aW9uOiEw LGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSJdfX0sY29s b3I6e3R5cGU6ImNvbG9yIiwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQiLGRlZmF1 bHQ6IiNmZmZmZmYiLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsi em9vbSJdfSx0cmFuc2l0aW9uOiEwfSxpbnRlbnNpdHk6e3R5cGU6Im51bWJlciIsInByb3Bl cnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50IixkZWZhdWx0Oi41LG1pbmltdW06MCxtYXhpbXVt OjEsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIl19LHRy YW5zaXRpb246ITB9fSxwYWludDpbInBhaW50X2ZpbGwiLCJwYWludF9saW5lIiwicGFpbnRf Y2lyY2xlIiwicGFpbnRfaGVhdG1hcCIsInBhaW50X2ZpbGwtZXh0cnVzaW9uIiwicGFpbnRf c3ltYm9sIiwicGFpbnRfcmFzdGVyIiwicGFpbnRfaGlsbHNoYWRlIiwicGFpbnRfYmFja2dy b3VuZCJdLHBhaW50X2ZpbGw6eyJmaWxsLWFudGlhbGlhcyI6e3R5cGU6ImJvb2xlYW4iLGRl ZmF1bHQ6ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29t Il19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJmaWxsLW9wYWNpdHkiOnt0 eXBlOiJudW1iZXIiLGRlZmF1bHQ6MSxtaW5pbXVtOjAsbWF4aW11bToxLHRyYW5zaXRpb246 ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVh dHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9 LCJmaWxsLWNvbG9yIjp7dHlwZToiY29sb3IiLGRlZmF1bHQ6IiMwMDAwMDAiLHRyYW5zaXRp b246ITAscmVxdWlyZXM6W3siISI6ImZpbGwtcGF0dGVybiJ9XSxleHByZXNzaW9uOntpbnRl cnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIiwiZmVhdHVyZS1zdGF0 ZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImZpbGwtb3V0bGluZS1jb2xv ciI6e3R5cGU6ImNvbG9yIix0cmFuc2l0aW9uOiEwLHJlcXVpcmVzOlt7IiEiOiJmaWxsLXBh dHRlcm4ifSx7ImZpbGwtYW50aWFsaWFzIjohMH1dLGV4cHJlc3Npb246e2ludGVycG9sYXRl ZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJw cm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwiZmlsbC10cmFuc2xhdGUiOnt0eXBlOiJh cnJheSIsdmFsdWU6Im51bWJlciIsbGVuZ3RoOjIsZGVmYXVsdDpbMCwwXSx0cmFuc2l0aW9u OiEwLHVuaXRzOiJwaXhlbHMiLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0 ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQifSwiZmlsbC10 cmFuc2xhdGUtYW5jaG9yIjp7dHlwZToiZW51bSIsdmFsdWVzOnttYXA6e30sdmlld3BvcnQ6 e319LGRlZmF1bHQ6Im1hcCIscmVxdWlyZXM6WyJmaWxsLXRyYW5zbGF0ZSJdLGV4cHJlc3Np b246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlw ZSI6ImRhdGEtY29uc3RhbnQifSwiZmlsbC1wYXR0ZXJuIjp7dHlwZToicmVzb2x2ZWRJbWFn ZSIsdHJhbnNpdGlvbjohMCxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1ldGVy czpbInpvb20iLCJmZWF0dXJlIl19LCJwcm9wZXJ0eS10eXBlIjoiY3Jvc3MtZmFkZWQtZGF0 YS1kcml2ZW4ifX0sInBhaW50X2ZpbGwtZXh0cnVzaW9uIjp7ImZpbGwtZXh0cnVzaW9uLW9w YWNpdHkiOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MSxtaW5pbXVtOjAsbWF4aW11bToxLHRy YW5zaXRpb246ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6 b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJmaWxsLWV4dHJ1c2lv bi1jb2xvciI6e3R5cGU6ImNvbG9yIixkZWZhdWx0OiIjMDAwMDAwIix0cmFuc2l0aW9uOiEw LHJlcXVpcmVzOlt7IiEiOiJmaWxsLWV4dHJ1c2lvbi1wYXR0ZXJuIn1dLGV4cHJlc3Npb246 e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiLCJmZWF0dXJl LXN0YXRlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwiZmlsbC1leHRydXNp b24tdHJhbnNsYXRlIjp7dHlwZToiYXJyYXkiLHZhbHVlOiJudW1iZXIiLGxlbmd0aDoyLGRl ZmF1bHQ6WzAsMF0sdHJhbnNpdGlvbjohMCx1bml0czoicGl4ZWxzIixleHByZXNzaW9uOntp bnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJk YXRhLWNvbnN0YW50In0sImZpbGwtZXh0cnVzaW9uLXRyYW5zbGF0ZS1hbmNob3IiOnt0eXBl OiJlbnVtIix2YWx1ZXM6e21hcDp7fSx2aWV3cG9ydDp7fX0sZGVmYXVsdDoibWFwIixyZXF1 aXJlczpbImZpbGwtZXh0cnVzaW9uLXRyYW5zbGF0ZSJdLGV4cHJlc3Npb246e2ludGVycG9s YXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29u c3RhbnQifSwiZmlsbC1leHRydXNpb24tcGF0dGVybiI6e3R5cGU6InJlc29sdmVkSW1hZ2Ui LHRyYW5zaXRpb246ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6 WyJ6b29tIiwiZmVhdHVyZSJdfSwicHJvcGVydHktdHlwZSI6ImNyb3NzLWZhZGVkLWRhdGEt ZHJpdmVuIn0sImZpbGwtZXh0cnVzaW9uLWhlaWdodCI6e3R5cGU6Im51bWJlciIsZGVmYXVs dDowLG1pbmltdW06MCx1bml0czoibWV0ZXJzIix0cmFuc2l0aW9uOiEwLGV4cHJlc3Npb246 e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiLCJmZWF0dXJl LXN0YXRlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwiZmlsbC1leHRydXNp b24tYmFzZSI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDowLG1pbmltdW06MCx1bml0czoibWV0 ZXJzIix0cmFuc2l0aW9uOiEwLHJlcXVpcmVzOlsiZmlsbC1leHRydXNpb24taGVpZ2h0Il0s ZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVy ZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJm aWxsLWV4dHJ1c2lvbi12ZXJ0aWNhbC1ncmFkaWVudCI6e3R5cGU6ImJvb2xlYW4iLGRlZmF1 bHQ6ITAsdHJhbnNpdGlvbjohMSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFyYW1l dGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In19LHBhaW50 X2xpbmU6eyJsaW5lLW9wYWNpdHkiOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MSxtaW5pbXVt OjAsbWF4aW11bToxLHRyYW5zaXRpb246ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEw LHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3Bl cnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJsaW5lLWNvbG9yIjp7dHlwZToiY29sb3IiLGRl ZmF1bHQ6IiMwMDAwMDAiLHRyYW5zaXRpb246ITAscmVxdWlyZXM6W3siISI6ImxpbmUtcGF0 dGVybiJ9XSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20i LCJmZWF0dXJlIiwiZmVhdHVyZS1zdGF0ZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJp dmVuIn0sImxpbmUtdHJhbnNsYXRlIjp7dHlwZToiYXJyYXkiLHZhbHVlOiJudW1iZXIiLGxl bmd0aDoyLGRlZmF1bHQ6WzAsMF0sdHJhbnNpdGlvbjohMCx1bml0czoicGl4ZWxzIixleHBy ZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5 LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImxpbmUtdHJhbnNsYXRlLWFuY2hvciI6e3R5cGU6 ImVudW0iLHZhbHVlczp7bWFwOnt9LHZpZXdwb3J0Ont9fSxkZWZhdWx0OiJtYXAiLHJlcXVp cmVzOlsibGluZS10cmFuc2xhdGUiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITEscGFy YW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImxp bmUtd2lkdGgiOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MSxtaW5pbXVtOjAsdHJhbnNpdGlv bjohMCx1bml0czoicGl4ZWxzIixleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1l dGVyczpbInpvb20iLCJmZWF0dXJlIiwiZmVhdHVyZS1zdGF0ZSJdfSwicHJvcGVydHktdHlw ZSI6ImRhdGEtZHJpdmVuIn0sImxpbmUtZ2FwLXdpZHRoIjp7dHlwZToibnVtYmVyIixkZWZh dWx0OjAsbWluaW11bTowLHRyYW5zaXRpb246ITAsdW5pdHM6InBpeGVscyIsZXhwcmVzc2lv bjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1 cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJsaW5lLW9mZnNl dCI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDowLHRyYW5zaXRpb246ITAsdW5pdHM6InBpeGVs cyIsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVh dHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9 LCJsaW5lLWJsdXIiOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MCxtaW5pbXVtOjAsdHJhbnNp dGlvbjohMCx1bml0czoicGl4ZWxzIixleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFy YW1ldGVyczpbInpvb20iLCJmZWF0dXJlIiwiZmVhdHVyZS1zdGF0ZSJdfSwicHJvcGVydHkt dHlwZSI6ImRhdGEtZHJpdmVuIn0sImxpbmUtZGFzaGFycmF5Ijp7dHlwZToiYXJyYXkiLHZh bHVlOiJudW1iZXIiLG1pbmltdW06MCx0cmFuc2l0aW9uOiEwLHVuaXRzOiJsaW5lIHdpZHRo cyIscmVxdWlyZXM6W3siISI6ImxpbmUtcGF0dGVybiJ9XSxleHByZXNzaW9uOntpbnRlcnBv bGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJjcm9zcy1m YWRlZCJ9LCJsaW5lLXBhdHRlcm4iOnt0eXBlOiJyZXNvbHZlZEltYWdlIix0cmFuc2l0aW9u OiEwLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSIsImZl YXR1cmUiXX0sInByb3BlcnR5LXR5cGUiOiJjcm9zcy1mYWRlZC1kYXRhLWRyaXZlbiJ9LCJs aW5lLWdyYWRpZW50Ijp7dHlwZToiY29sb3IiLHRyYW5zaXRpb246ITEscmVxdWlyZXM6W3si ISI6ImxpbmUtZGFzaGFycmF5In0seyIhIjoibGluZS1wYXR0ZXJuIn0se3NvdXJjZToiZ2Vv anNvbiIsaGFzOntsaW5lTWV0cmljczohMH19XSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6 ITAscGFyYW1ldGVyczpbImxpbmUtcHJvZ3Jlc3MiXX0sInByb3BlcnR5LXR5cGUiOiJjb2xv ci1yYW1wIn19LHBhaW50X2NpcmNsZTp7ImNpcmNsZS1yYWRpdXMiOnt0eXBlOiJudW1iZXIi LGRlZmF1bHQ6NSxtaW5pbXVtOjAsdHJhbnNpdGlvbjohMCx1bml0czoicGl4ZWxzIixleHBy ZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIiwi ZmVhdHVyZS1zdGF0ZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImNpcmNs ZS1jb2xvciI6e3R5cGU6ImNvbG9yIixkZWZhdWx0OiIjMDAwMDAwIix0cmFuc2l0aW9uOiEw LGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1 cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwi Y2lyY2xlLWJsdXIiOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MCx0cmFuc2l0aW9uOiEwLGV4 cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUi LCJmZWF0dXJlLXN0YXRlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwiY2ly Y2xlLW9wYWNpdHkiOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MSxtaW5pbXVtOjAsbWF4aW11 bToxLHRyYW5zaXRpb246ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRl cnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUi OiJkYXRhLWRyaXZlbiJ9LCJjaXJjbGUtdHJhbnNsYXRlIjp7dHlwZToiYXJyYXkiLHZhbHVl OiJudW1iZXIiLGxlbmd0aDoyLGRlZmF1bHQ6WzAsMF0sdHJhbnNpdGlvbjohMCx1bml0czoi cGl4ZWxzIixleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20i XX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImNpcmNsZS10cmFuc2xhdGUt YW5jaG9yIjp7dHlwZToiZW51bSIsdmFsdWVzOnttYXA6e30sdmlld3BvcnQ6e319LGRlZmF1 bHQ6Im1hcCIscmVxdWlyZXM6WyJjaXJjbGUtdHJhbnNsYXRlIl0sZXhwcmVzc2lvbjp7aW50 ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0 YS1jb25zdGFudCJ9LCJjaXJjbGUtcGl0Y2gtc2NhbGUiOnt0eXBlOiJlbnVtIix2YWx1ZXM6 e21hcDp7fSx2aWV3cG9ydDp7fX0sZGVmYXVsdDoibWFwIixleHByZXNzaW9uOntpbnRlcnBv bGF0ZWQ6ITEscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNv bnN0YW50In0sImNpcmNsZS1waXRjaC1hbGlnbm1lbnQiOnt0eXBlOiJlbnVtIix2YWx1ZXM6 e21hcDp7fSx2aWV3cG9ydDp7fX0sZGVmYXVsdDoidmlld3BvcnQiLGV4cHJlc3Npb246e2lu dGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRh dGEtY29uc3RhbnQifSwiY2lyY2xlLXN0cm9rZS13aWR0aCI6e3R5cGU6Im51bWJlciIsZGVm YXVsdDowLG1pbmltdW06MCx0cmFuc2l0aW9uOiEwLHVuaXRzOiJwaXhlbHMiLGV4cHJlc3Np b246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiLCJmZWF0 dXJlLXN0YXRlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwiY2lyY2xlLXN0 cm9rZS1jb2xvciI6e3R5cGU6ImNvbG9yIixkZWZhdWx0OiIjMDAwMDAwIix0cmFuc2l0aW9u OiEwLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZl YXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4i fSwiY2lyY2xlLXN0cm9rZS1vcGFjaXR5Ijp7dHlwZToibnVtYmVyIixkZWZhdWx0OjEsbWlu aW11bTowLG1heGltdW06MSx0cmFuc2l0aW9uOiEwLGV4cHJlc3Npb246e2ludGVycG9sYXRl ZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJw cm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2ZW4ifX0scGFpbnRfaGVhdG1hcDp7ImhlYXRtYXAt cmFkaXVzIjp7dHlwZToibnVtYmVyIixkZWZhdWx0OjMwLG1pbmltdW06MSx0cmFuc2l0aW9u OiEwLHVuaXRzOiJwaXhlbHMiLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0 ZXJzOlsiem9vbSIsImZlYXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJwcm9wZXJ0eS10eXBl IjoiZGF0YS1kcml2ZW4ifSwiaGVhdG1hcC13ZWlnaHQiOnt0eXBlOiJudW1iZXIiLGRlZmF1 bHQ6MSxtaW5pbXVtOjAsdHJhbnNpdGlvbjohMSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6 ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIiwiZmVhdHVyZS1zdGF0ZSJdfSwicHJv cGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImhlYXRtYXAtaW50ZW5zaXR5Ijp7dHlwZToi bnVtYmVyIixkZWZhdWx0OjEsbWluaW11bTowLHRyYW5zaXRpb246ITAsZXhwcmVzc2lvbjp7 aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoi ZGF0YS1jb25zdGFudCJ9LCJoZWF0bWFwLWNvbG9yIjp7dHlwZToiY29sb3IiLGRlZmF1bHQ6 WyJpbnRlcnBvbGF0ZSIsWyJsaW5lYXIiXSxbImhlYXRtYXAtZGVuc2l0eSJdLDAsInJnYmEo MCwgMCwgMjU1LCAwKSIsLjEsInJveWFsYmx1ZSIsLjMsImN5YW4iLC41LCJsaW1lIiwuNywi eWVsbG93IiwxLCJyZWQiXSx0cmFuc2l0aW9uOiExLGV4cHJlc3Npb246e2ludGVycG9sYXRl ZDohMCxwYXJhbWV0ZXJzOlsiaGVhdG1hcC1kZW5zaXR5Il19LCJwcm9wZXJ0eS10eXBlIjoi Y29sb3ItcmFtcCJ9LCJoZWF0bWFwLW9wYWNpdHkiOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6 MSxtaW5pbXVtOjAsbWF4aW11bToxLHRyYW5zaXRpb246ITAsZXhwcmVzc2lvbjp7aW50ZXJw b2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1j b25zdGFudCJ9fSxwYWludF9zeW1ib2w6eyJpY29uLW9wYWNpdHkiOnt0eXBlOiJudW1iZXIi LGRlZmF1bHQ6MSxtaW5pbXVtOjAsbWF4aW11bToxLHRyYW5zaXRpb246ITAscmVxdWlyZXM6 WyJpY29uLWltYWdlIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6 WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJk YXRhLWRyaXZlbiJ9LCJpY29uLWNvbG9yIjp7dHlwZToiY29sb3IiLGRlZmF1bHQ6IiMwMDAw MDAiLHRyYW5zaXRpb246ITAscmVxdWlyZXM6WyJpY29uLWltYWdlIl0sZXhwcmVzc2lvbjp7 aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1cmUt c3RhdGUiXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJpY29uLWhhbG8tY29s b3IiOnt0eXBlOiJjb2xvciIsZGVmYXVsdDoicmdiYSgwLCAwLCAwLCAwKSIsdHJhbnNpdGlv bjohMCxyZXF1aXJlczpbImljb24taW1hZ2UiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6 ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0dXJlIiwiZmVhdHVyZS1zdGF0ZSJdfSwicHJv cGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0sImljb24taGFsby13aWR0aCI6e3R5cGU6Im51 bWJlciIsZGVmYXVsdDowLG1pbmltdW06MCx0cmFuc2l0aW9uOiEwLHVuaXRzOiJwaXhlbHMi LHJlcXVpcmVzOlsiaWNvbi1pbWFnZSJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxw YXJhbWV0ZXJzOlsiem9vbSIsImZlYXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJwcm9wZXJ0 eS10eXBlIjoiZGF0YS1kcml2ZW4ifSwiaWNvbi1oYWxvLWJsdXIiOnt0eXBlOiJudW1iZXIi LGRlZmF1bHQ6MCxtaW5pbXVtOjAsdHJhbnNpdGlvbjohMCx1bml0czoicGl4ZWxzIixyZXF1 aXJlczpbImljb24taW1hZ2UiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1l dGVyczpbInpvb20iLCJmZWF0dXJlIiwiZmVhdHVyZS1zdGF0ZSJdfSwicHJvcGVydHktdHlw ZSI6ImRhdGEtZHJpdmVuIn0sImljb24tdHJhbnNsYXRlIjp7dHlwZToiYXJyYXkiLHZhbHVl OiJudW1iZXIiLGxlbmd0aDoyLGRlZmF1bHQ6WzAsMF0sdHJhbnNpdGlvbjohMCx1bml0czoi cGl4ZWxzIixyZXF1aXJlczpbImljb24taW1hZ2UiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0 ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0 YW50In0sImljb24tdHJhbnNsYXRlLWFuY2hvciI6e3R5cGU6ImVudW0iLHZhbHVlczp7bWFw Ont9LHZpZXdwb3J0Ont9fSxkZWZhdWx0OiJtYXAiLHJlcXVpcmVzOlsiaWNvbi1pbWFnZSIs Imljb24tdHJhbnNsYXRlIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRl cnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJ0ZXh0LW9w YWNpdHkiOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MSxtaW5pbXVtOjAsbWF4aW11bToxLHRy YW5zaXRpb246ITAscmVxdWlyZXM6WyJ0ZXh0LWZpZWxkIl0sZXhwcmVzc2lvbjp7aW50ZXJw b2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1cmUtc3RhdGUi XX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJ0ZXh0LWNvbG9yIjp7dHlwZToi Y29sb3IiLGRlZmF1bHQ6IiMwMDAwMDAiLHRyYW5zaXRpb246ITAsb3ZlcnJpZGFibGU6ITAs cmVxdWlyZXM6WyJ0ZXh0LWZpZWxkIl0sZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBh cmFtZXRlcnM6WyJ6b29tIiwiZmVhdHVyZSIsImZlYXR1cmUtc3RhdGUiXX0sInByb3BlcnR5 LXR5cGUiOiJkYXRhLWRyaXZlbiJ9LCJ0ZXh0LWhhbG8tY29sb3IiOnt0eXBlOiJjb2xvciIs ZGVmYXVsdDoicmdiYSgwLCAwLCAwLCAwKSIsdHJhbnNpdGlvbjohMCxyZXF1aXJlczpbInRl eHQtZmllbGQiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpv b20iLCJmZWF0dXJlIiwiZmVhdHVyZS1zdGF0ZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEt ZHJpdmVuIn0sInRleHQtaGFsby13aWR0aCI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDowLG1p bmltdW06MCx0cmFuc2l0aW9uOiEwLHVuaXRzOiJwaXhlbHMiLHJlcXVpcmVzOlsidGV4dC1m aWVsZCJdLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMCxwYXJhbWV0ZXJzOlsiem9vbSIs ImZlYXR1cmUiLCJmZWF0dXJlLXN0YXRlIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1kcml2 ZW4ifSwidGV4dC1oYWxvLWJsdXIiOnt0eXBlOiJudW1iZXIiLGRlZmF1bHQ6MCxtaW5pbXVt OjAsdHJhbnNpdGlvbjohMCx1bml0czoicGl4ZWxzIixyZXF1aXJlczpbInRleHQtZmllbGQi XSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iLCJmZWF0 dXJlIiwiZmVhdHVyZS1zdGF0ZSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtZHJpdmVuIn0s InRleHQtdHJhbnNsYXRlIjp7dHlwZToiYXJyYXkiLHZhbHVlOiJudW1iZXIiLGxlbmd0aDoy LGRlZmF1bHQ6WzAsMF0sdHJhbnNpdGlvbjohMCx1bml0czoicGl4ZWxzIixyZXF1aXJlczpb InRleHQtZmllbGQiXSxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpb Inpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInRleHQtdHJhbnNs YXRlLWFuY2hvciI6e3R5cGU6ImVudW0iLHZhbHVlczp7bWFwOnt9LHZpZXdwb3J0Ont9fSxk ZWZhdWx0OiJtYXAiLHJlcXVpcmVzOlsidGV4dC1maWVsZCIsInRleHQtdHJhbnNsYXRlIl0s ZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9w ZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9fSxwYWludF9yYXN0ZXI6eyJyYXN0ZXItb3Bh Y2l0eSI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDoxLG1pbmltdW06MCxtYXhpbXVtOjEsdHJh bnNpdGlvbjohMCxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpv b20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInJhc3Rlci1odWUtcm90 YXRlIjp7dHlwZToibnVtYmVyIixkZWZhdWx0OjAscGVyaW9kOjM2MCx0cmFuc2l0aW9uOiEw LHVuaXRzOiJkZWdyZWVzIixleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVy czpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInJhc3Rlci1i cmlnaHRuZXNzLW1pbiI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDowLG1pbmltdW06MCxtYXhp bXVtOjEsdHJhbnNpdGlvbjohMCxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1l dGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInJhc3Rl ci1icmlnaHRuZXNzLW1heCI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDoxLG1pbmltdW06MCxt YXhpbXVtOjEsdHJhbnNpdGlvbjohMCxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFy YW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInJh c3Rlci1zYXR1cmF0aW9uIjp7dHlwZToibnVtYmVyIixkZWZhdWx0OjAsbWluaW11bTotMSxt YXhpbXVtOjEsdHJhbnNpdGlvbjohMCxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFy YW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sInJh c3Rlci1jb250cmFzdCI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDowLG1pbmltdW06LTEsbWF4 aW11bToxLHRyYW5zaXRpb246ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFt ZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJyYXN0 ZXItcmVzYW1wbGluZyI6e3R5cGU6ImVudW0iLHZhbHVlczp7bGluZWFyOnt9LG5lYXJlc3Q6 e319LGRlZmF1bHQ6ImxpbmVhciIsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiExLHBhcmFt ZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJyYXN0 ZXItZmFkZS1kdXJhdGlvbiI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDozMDAsbWluaW11bTow LHRyYW5zaXRpb246ITEsdW5pdHM6Im1pbGxpc2Vjb25kcyIsZXhwcmVzc2lvbjp7aW50ZXJw b2xhdGVkOiEwLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1j b25zdGFudCJ9fSxwYWludF9oaWxsc2hhZGU6eyJoaWxsc2hhZGUtaWxsdW1pbmF0aW9uLWRp cmVjdGlvbiI6e3R5cGU6Im51bWJlciIsZGVmYXVsdDozMzUsbWluaW11bTowLG1heGltdW06 MzU5LHRyYW5zaXRpb246ITEsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVkOiEwLHBhcmFtZXRl cnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFudCJ9LCJoaWxsc2hh ZGUtaWxsdW1pbmF0aW9uLWFuY2hvciI6e3R5cGU6ImVudW0iLHZhbHVlczp7bWFwOnt9LHZp ZXdwb3J0Ont9fSxkZWZhdWx0OiJ2aWV3cG9ydCIsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVk OiExLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiZGF0YS1jb25zdGFu dCJ9LCJoaWxsc2hhZGUtZXhhZ2dlcmF0aW9uIjp7dHlwZToibnVtYmVyIixkZWZhdWx0Oi41 LG1pbmltdW06MCxtYXhpbXVtOjEsdHJhbnNpdGlvbjohMCxleHByZXNzaW9uOntpbnRlcnBv bGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNv bnN0YW50In0sImhpbGxzaGFkZS1zaGFkb3ctY29sb3IiOnt0eXBlOiJjb2xvciIsZGVmYXVs dDoiIzAwMDAwMCIsdHJhbnNpdGlvbjohMCxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAs cGFyYW1ldGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0s ImhpbGxzaGFkZS1oaWdobGlnaHQtY29sb3IiOnt0eXBlOiJjb2xvciIsZGVmYXVsdDoiI0ZG RkZGRiIsdHJhbnNpdGlvbjohMCxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1l dGVyczpbInpvb20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImhpbGxz aGFkZS1hY2NlbnQtY29sb3IiOnt0eXBlOiJjb2xvciIsZGVmYXVsdDoiIzAwMDAwMCIsdHJh bnNpdGlvbjohMCxleHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpv b20iXX0sInByb3BlcnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In19LHBhaW50X2JhY2tncm91 bmQ6eyJiYWNrZ3JvdW5kLWNvbG9yIjp7dHlwZToiY29sb3IiLGRlZmF1bHQ6IiMwMDAwMDAi LHRyYW5zaXRpb246ITAscmVxdWlyZXM6W3siISI6ImJhY2tncm91bmQtcGF0dGVybiJ9XSxl eHByZXNzaW9uOntpbnRlcnBvbGF0ZWQ6ITAscGFyYW1ldGVyczpbInpvb20iXX0sInByb3Bl cnR5LXR5cGUiOiJkYXRhLWNvbnN0YW50In0sImJhY2tncm91bmQtcGF0dGVybiI6e3R5cGU6 InJlc29sdmVkSW1hZ2UiLHRyYW5zaXRpb246ITAsZXhwcmVzc2lvbjp7aW50ZXJwb2xhdGVk OiExLHBhcmFtZXRlcnM6WyJ6b29tIl19LCJwcm9wZXJ0eS10eXBlIjoiY3Jvc3MtZmFkZWQi fSwiYmFja2dyb3VuZC1vcGFjaXR5Ijp7dHlwZToibnVtYmVyIixkZWZhdWx0OjEsbWluaW11 bTowLG1heGltdW06MSx0cmFuc2l0aW9uOiEwLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDoh MCxwYXJhbWV0ZXJzOlsiem9vbSJdfSwicHJvcGVydHktdHlwZSI6ImRhdGEtY29uc3RhbnQi fX0sdHJhbnNpdGlvbjp7ZHVyYXRpb246e3R5cGU6Im51bWJlciIsZGVmYXVsdDozMDAsbWlu aW11bTowLHVuaXRzOiJtaWxsaXNlY29uZHMifSxkZWxheTp7dHlwZToibnVtYmVyIixkZWZh dWx0OjAsbWluaW11bTowLHVuaXRzOiJtaWxsaXNlY29uZHMifX0sInByb3BlcnR5LXR5cGUi OnsiZGF0YS1kcml2ZW4iOnt0eXBlOiJwcm9wZXJ0eS10eXBlIn0sImNyb3NzLWZhZGVkIjp7 dHlwZToicHJvcGVydHktdHlwZSJ9LCJjcm9zcy1mYWRlZC1kYXRhLWRyaXZlbiI6e3R5cGU6 InByb3BlcnR5LXR5cGUifSwiY29sb3ItcmFtcCI6e3R5cGU6InByb3BlcnR5LXR5cGUifSwi ZGF0YS1jb25zdGFudCI6e3R5cGU6InByb3BlcnR5LXR5cGUifSxjb25zdGFudDp7dHlwZToi cHJvcGVydHktdHlwZSJ9fSxwcm9tb3RlSWQ6eyIqIjp7dHlwZToic3RyaW5nIn19fSxDdD1m dW5jdGlvbih0LGUscixuKXt0aGlzLm1lc3NhZ2U9KHQ/dCsiOiAiOiIiKStyLG4mJih0aGlz LmlkZW50aWZpZXI9biksbnVsbCE9ZSYmZS5fX2xpbmVfXyYmKHRoaXMubGluZT1lLl9fbGlu ZV9fKX07ZnVuY3Rpb24gUHQodCl7dmFyIGU9dC5rZXkscj10LnZhbHVlO3JldHVybiByP1tu ZXcgQ3QoZSxyLCJjb25zdGFudHMgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgYXMgb2YgdjgiKV06 W119ZnVuY3Rpb24gSXQodCl7Zm9yKHZhciBlPVtdLHI9YXJndW1lbnRzLmxlbmd0aC0xO3It LSA+MDspZVtyXT1hcmd1bWVudHNbcisxXTtmb3IodmFyIG49MCxpPWU7bjxpLmxlbmd0aDtu Kz0xKXt2YXIgYT1pW25dO2Zvcih2YXIgbyBpbiBhKXRbb109YVtvXX1yZXR1cm4gdH1mdW5j dGlvbiBPdCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIE51bWJlcnx8dCBpbnN0YW5jZW9mIFN0 cmluZ3x8dCBpbnN0YW5jZW9mIEJvb2xlYW4/dC52YWx1ZU9mKCk6dH1mdW5jdGlvbiB6dCh0 KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0Lm1hcCh6dCk7aWYodCBpbnN0YW5jZW9m IE9iamVjdCYmISh0IGluc3RhbmNlb2YgTnVtYmVyfHx0IGluc3RhbmNlb2YgU3RyaW5nfHx0 IGluc3RhbmNlb2YgQm9vbGVhbikpe3ZhciBlPXt9O2Zvcih2YXIgciBpbiB0KWVbcl09enQo dFtyXSk7cmV0dXJuIGV9cmV0dXJuIE90KHQpfXZhciBEdD1mdW5jdGlvbih0KXtmdW5jdGlv biBlKGUscil7dC5jYWxsKHRoaXMsciksdGhpcy5tZXNzYWdlPXIsdGhpcy5rZXk9ZX1yZXR1 cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5w cm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZX0oRXJyb3IpLFJ0PWZ1bmN0 aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9W10pLHRoaXMucGFyZW50PXQsdGhpcy5iaW5kaW5n cz17fTtmb3IodmFyIHI9MCxuPWU7cjxuLmxlbmd0aDtyKz0xKXt2YXIgaT1uW3JdLGE9aVsw XSxvPWlbMV07dGhpcy5iaW5kaW5nc1thXT1vfX07UnQucHJvdG90eXBlLmNvbmNhdD1mdW5j dGlvbih0KXtyZXR1cm4gbmV3IFJ0KHRoaXMsdCl9LFJ0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rp b24odCl7aWYodGhpcy5iaW5kaW5nc1t0XSlyZXR1cm4gdGhpcy5iaW5kaW5nc1t0XTtpZih0 aGlzLnBhcmVudClyZXR1cm4gdGhpcy5wYXJlbnQuZ2V0KHQpO3Rocm93IG5ldyBFcnJvcih0 KyIgbm90IGZvdW5kIGluIHNjb3BlLiIpfSxSdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQp e3JldHVybiEhdGhpcy5iaW5kaW5nc1t0XXx8ISF0aGlzLnBhcmVudCYmdGhpcy5wYXJlbnQu aGFzKHQpfTt2YXIgRnQ9e2tpbmQ6Im51bGwifSxCdD17a2luZDoibnVtYmVyIn0sTnQ9e2tp bmQ6InN0cmluZyJ9LGp0PXtraW5kOiJib29sZWFuIn0sVXQ9e2tpbmQ6ImNvbG9yIn0sVnQ9 e2tpbmQ6Im9iamVjdCJ9LEh0PXtraW5kOiJ2YWx1ZSJ9LHF0PXtraW5kOiJjb2xsYXRvciJ9 LEd0PXtraW5kOiJmb3JtYXR0ZWQifSxZdD17a2luZDoicmVzb2x2ZWRJbWFnZSJ9O2Z1bmN0 aW9uIFd0KHQsZSl7cmV0dXJue2tpbmQ6ImFycmF5IixpdGVtVHlwZTp0LE46ZX19ZnVuY3Rp b24gWHQodCl7aWYoImFycmF5Ij09PXQua2luZCl7dmFyIGU9WHQodC5pdGVtVHlwZSk7cmV0 dXJuIm51bWJlciI9PXR5cGVvZiB0Lk4/ImFycmF5PCIrZSsiLCAiK3QuTisiPiI6InZhbHVl Ij09PXQuaXRlbVR5cGUua2luZD8iYXJyYXkiOiJhcnJheTwiK2UrIj4ifXJldHVybiB0Lmtp bmR9dmFyIFp0PVtGdCxCdCxOdCxqdCxVdCxHdCxWdCxXdChIdCksWXRdO2Z1bmN0aW9uIEp0 KHQsZSl7aWYoImVycm9yIj09PWUua2luZClyZXR1cm4gbnVsbDtpZigiYXJyYXkiPT09dC5r aW5kKXtpZigiYXJyYXkiPT09ZS5raW5kJiYoMD09PWUuTiYmInZhbHVlIj09PWUuaXRlbVR5 cGUua2luZHx8IUp0KHQuaXRlbVR5cGUsZS5pdGVtVHlwZSkpJiYoIm51bWJlciIhPXR5cGVv ZiB0Lk58fHQuTj09PWUuTikpcmV0dXJuIG51bGx9ZWxzZXtpZih0LmtpbmQ9PT1lLmtpbmQp cmV0dXJuIG51bGw7aWYoInZhbHVlIj09PXQua2luZClmb3IodmFyIHI9MCxuPVp0O3I8bi5s ZW5ndGg7cis9MSl7aWYoIUp0KG5bcl0sZSkpcmV0dXJuIG51bGx9fXJldHVybiJFeHBlY3Rl ZCAiK1h0KHQpKyIgYnV0IGZvdW5kICIrWHQoZSkrIiBpbnN0ZWFkLiJ9ZnVuY3Rpb24gS3Qo dCxlKXtyZXR1cm4gZS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gZS5raW5kPT09dC5raW5k fSkpfWZ1bmN0aW9uIFF0KHQsZSl7cmV0dXJuIGUuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJu Im51bGwiPT09ZT9udWxsPT09dDoiYXJyYXkiPT09ZT9BcnJheS5pc0FycmF5KHQpOiJvYmpl Y3QiPT09ZT90JiYhQXJyYXkuaXNBcnJheSh0KSYmIm9iamVjdCI9PXR5cGVvZiB0OmU9PT10 eXBlb2YgdH0pKX12YXIgJHQ9ZSgoZnVuY3Rpb24odCxlKXt2YXIgcj17dHJhbnNwYXJlbnQ6 WzAsMCwwLDBdLGFsaWNlYmx1ZTpbMjQwLDI0OCwyNTUsMV0sYW50aXF1ZXdoaXRlOlsyNTAs MjM1LDIxNSwxXSxhcXVhOlswLDI1NSwyNTUsMV0sYXF1YW1hcmluZTpbMTI3LDI1NSwyMTIs MV0sYXp1cmU6WzI0MCwyNTUsMjU1LDFdLGJlaWdlOlsyNDUsMjQ1LDIyMCwxXSxiaXNxdWU6 WzI1NSwyMjgsMTk2LDFdLGJsYWNrOlswLDAsMCwxXSxibGFuY2hlZGFsbW9uZDpbMjU1LDIz NSwyMDUsMV0sYmx1ZTpbMCwwLDI1NSwxXSxibHVldmlvbGV0OlsxMzgsNDMsMjI2LDFdLGJy b3duOlsxNjUsNDIsNDIsMV0sYnVybHl3b29kOlsyMjIsMTg0LDEzNSwxXSxjYWRldGJsdWU6 Wzk1LDE1OCwxNjAsMV0sY2hhcnRyZXVzZTpbMTI3LDI1NSwwLDFdLGNob2NvbGF0ZTpbMjEw LDEwNSwzMCwxXSxjb3JhbDpbMjU1LDEyNyw4MCwxXSxjb3JuZmxvd2VyYmx1ZTpbMTAwLDE0 OSwyMzcsMV0sY29ybnNpbGs6WzI1NSwyNDgsMjIwLDFdLGNyaW1zb246WzIyMCwyMCw2MCwx XSxjeWFuOlswLDI1NSwyNTUsMV0sZGFya2JsdWU6WzAsMCwxMzksMV0sZGFya2N5YW46WzAs MTM5LDEzOSwxXSxkYXJrZ29sZGVucm9kOlsxODQsMTM0LDExLDFdLGRhcmtncmF5OlsxNjks MTY5LDE2OSwxXSxkYXJrZ3JlZW46WzAsMTAwLDAsMV0sZGFya2dyZXk6WzE2OSwxNjksMTY5 LDFdLGRhcmtraGFraTpbMTg5LDE4MywxMDcsMV0sZGFya21hZ2VudGE6WzEzOSwwLDEzOSwx XSxkYXJrb2xpdmVncmVlbjpbODUsMTA3LDQ3LDFdLGRhcmtvcmFuZ2U6WzI1NSwxNDAsMCwx XSxkYXJrb3JjaGlkOlsxNTMsNTAsMjA0LDFdLGRhcmtyZWQ6WzEzOSwwLDAsMV0sZGFya3Nh bG1vbjpbMjMzLDE1MCwxMjIsMV0sZGFya3NlYWdyZWVuOlsxNDMsMTg4LDE0MywxXSxkYXJr c2xhdGVibHVlOls3Miw2MSwxMzksMV0sZGFya3NsYXRlZ3JheTpbNDcsNzksNzksMV0sZGFy a3NsYXRlZ3JleTpbNDcsNzksNzksMV0sZGFya3R1cnF1b2lzZTpbMCwyMDYsMjA5LDFdLGRh cmt2aW9sZXQ6WzE0OCwwLDIxMSwxXSxkZWVwcGluazpbMjU1LDIwLDE0NywxXSxkZWVwc2t5 Ymx1ZTpbMCwxOTEsMjU1LDFdLGRpbWdyYXk6WzEwNSwxMDUsMTA1LDFdLGRpbWdyZXk6WzEw NSwxMDUsMTA1LDFdLGRvZGdlcmJsdWU6WzMwLDE0NCwyNTUsMV0sZmlyZWJyaWNrOlsxNzgs MzQsMzQsMV0sZmxvcmFsd2hpdGU6WzI1NSwyNTAsMjQwLDFdLGZvcmVzdGdyZWVuOlszNCwx MzksMzQsMV0sZnVjaHNpYTpbMjU1LDAsMjU1LDFdLGdhaW5zYm9ybzpbMjIwLDIyMCwyMjAs MV0sZ2hvc3R3aGl0ZTpbMjQ4LDI0OCwyNTUsMV0sZ29sZDpbMjU1LDIxNSwwLDFdLGdvbGRl bnJvZDpbMjE4LDE2NSwzMiwxXSxncmF5OlsxMjgsMTI4LDEyOCwxXSxncmVlbjpbMCwxMjgs MCwxXSxncmVlbnllbGxvdzpbMTczLDI1NSw0NywxXSxncmV5OlsxMjgsMTI4LDEyOCwxXSxo b25leWRldzpbMjQwLDI1NSwyNDAsMV0saG90cGluazpbMjU1LDEwNSwxODAsMV0saW5kaWFu cmVkOlsyMDUsOTIsOTIsMV0saW5kaWdvOls3NSwwLDEzMCwxXSxpdm9yeTpbMjU1LDI1NSwy NDAsMV0sa2hha2k6WzI0MCwyMzAsMTQwLDFdLGxhdmVuZGVyOlsyMzAsMjMwLDI1MCwxXSxs YXZlbmRlcmJsdXNoOlsyNTUsMjQwLDI0NSwxXSxsYXduZ3JlZW46WzEyNCwyNTIsMCwxXSxs ZW1vbmNoaWZmb246WzI1NSwyNTAsMjA1LDFdLGxpZ2h0Ymx1ZTpbMTczLDIxNiwyMzAsMV0s bGlnaHRjb3JhbDpbMjQwLDEyOCwxMjgsMV0sbGlnaHRjeWFuOlsyMjQsMjU1LDI1NSwxXSxs aWdodGdvbGRlbnJvZHllbGxvdzpbMjUwLDI1MCwyMTAsMV0sbGlnaHRncmF5OlsyMTEsMjEx LDIxMSwxXSxsaWdodGdyZWVuOlsxNDQsMjM4LDE0NCwxXSxsaWdodGdyZXk6WzIxMSwyMTEs MjExLDFdLGxpZ2h0cGluazpbMjU1LDE4MiwxOTMsMV0sbGlnaHRzYWxtb246WzI1NSwxNjAs MTIyLDFdLGxpZ2h0c2VhZ3JlZW46WzMyLDE3OCwxNzAsMV0sbGlnaHRza3libHVlOlsxMzUs MjA2LDI1MCwxXSxsaWdodHNsYXRlZ3JheTpbMTE5LDEzNiwxNTMsMV0sbGlnaHRzbGF0ZWdy ZXk6WzExOSwxMzYsMTUzLDFdLGxpZ2h0c3RlZWxibHVlOlsxNzYsMTk2LDIyMiwxXSxsaWdo dHllbGxvdzpbMjU1LDI1NSwyMjQsMV0sbGltZTpbMCwyNTUsMCwxXSxsaW1lZ3JlZW46WzUw LDIwNSw1MCwxXSxsaW5lbjpbMjUwLDI0MCwyMzAsMV0sbWFnZW50YTpbMjU1LDAsMjU1LDFd LG1hcm9vbjpbMTI4LDAsMCwxXSxtZWRpdW1hcXVhbWFyaW5lOlsxMDIsMjA1LDE3MCwxXSxt ZWRpdW1ibHVlOlswLDAsMjA1LDFdLG1lZGl1bW9yY2hpZDpbMTg2LDg1LDIxMSwxXSxtZWRp dW1wdXJwbGU6WzE0NywxMTIsMjE5LDFdLG1lZGl1bXNlYWdyZWVuOls2MCwxNzksMTEzLDFd LG1lZGl1bXNsYXRlYmx1ZTpbMTIzLDEwNCwyMzgsMV0sbWVkaXVtc3ByaW5nZ3JlZW46WzAs MjUwLDE1NCwxXSxtZWRpdW10dXJxdW9pc2U6WzcyLDIwOSwyMDQsMV0sbWVkaXVtdmlvbGV0 cmVkOlsxOTksMjEsMTMzLDFdLG1pZG5pZ2h0Ymx1ZTpbMjUsMjUsMTEyLDFdLG1pbnRjcmVh bTpbMjQ1LDI1NSwyNTAsMV0sbWlzdHlyb3NlOlsyNTUsMjI4LDIyNSwxXSxtb2NjYXNpbjpb MjU1LDIyOCwxODEsMV0sbmF2YWpvd2hpdGU6WzI1NSwyMjIsMTczLDFdLG5hdnk6WzAsMCwx MjgsMV0sb2xkbGFjZTpbMjUzLDI0NSwyMzAsMV0sb2xpdmU6WzEyOCwxMjgsMCwxXSxvbGl2 ZWRyYWI6WzEwNywxNDIsMzUsMV0sb3JhbmdlOlsyNTUsMTY1LDAsMV0sb3JhbmdlcmVkOlsy NTUsNjksMCwxXSxvcmNoaWQ6WzIxOCwxMTIsMjE0LDFdLHBhbGVnb2xkZW5yb2Q6WzIzOCwy MzIsMTcwLDFdLHBhbGVncmVlbjpbMTUyLDI1MSwxNTIsMV0scGFsZXR1cnF1b2lzZTpbMTc1 LDIzOCwyMzgsMV0scGFsZXZpb2xldHJlZDpbMjE5LDExMiwxNDcsMV0scGFwYXlhd2hpcDpb MjU1LDIzOSwyMTMsMV0scGVhY2hwdWZmOlsyNTUsMjE4LDE4NSwxXSxwZXJ1OlsyMDUsMTMz LDYzLDFdLHBpbms6WzI1NSwxOTIsMjAzLDFdLHBsdW06WzIyMSwxNjAsMjIxLDFdLHBvd2Rl cmJsdWU6WzE3NiwyMjQsMjMwLDFdLHB1cnBsZTpbMTI4LDAsMTI4LDFdLHJlYmVjY2FwdXJw bGU6WzEwMiw1MSwxNTMsMV0scmVkOlsyNTUsMCwwLDFdLHJvc3licm93bjpbMTg4LDE0Mywx NDMsMV0scm95YWxibHVlOls2NSwxMDUsMjI1LDFdLHNhZGRsZWJyb3duOlsxMzksNjksMTks MV0sc2FsbW9uOlsyNTAsMTI4LDExNCwxXSxzYW5keWJyb3duOlsyNDQsMTY0LDk2LDFdLHNl YWdyZWVuOls0NiwxMzksODcsMV0sc2Vhc2hlbGw6WzI1NSwyNDUsMjM4LDFdLHNpZW5uYTpb MTYwLDgyLDQ1LDFdLHNpbHZlcjpbMTkyLDE5MiwxOTIsMV0sc2t5Ymx1ZTpbMTM1LDIwNiwy MzUsMV0sc2xhdGVibHVlOlsxMDYsOTAsMjA1LDFdLHNsYXRlZ3JheTpbMTEyLDEyOCwxNDQs MV0sc2xhdGVncmV5OlsxMTIsMTI4LDE0NCwxXSxzbm93OlsyNTUsMjUwLDI1MCwxXSxzcHJp bmdncmVlbjpbMCwyNTUsMTI3LDFdLHN0ZWVsYmx1ZTpbNzAsMTMwLDE4MCwxXSx0YW46WzIx MCwxODAsMTQwLDFdLHRlYWw6WzAsMTI4LDEyOCwxXSx0aGlzdGxlOlsyMTYsMTkxLDIxNiwx XSx0b21hdG86WzI1NSw5OSw3MSwxXSx0dXJxdW9pc2U6WzY0LDIyNCwyMDgsMV0sdmlvbGV0 OlsyMzgsMTMwLDIzOCwxXSx3aGVhdDpbMjQ1LDIyMiwxNzksMV0sd2hpdGU6WzI1NSwyNTUs MjU1LDFdLHdoaXRlc21va2U6WzI0NSwyNDUsMjQ1LDFdLHllbGxvdzpbMjU1LDI1NSwwLDFd LHllbGxvd2dyZWVuOlsxNTQsMjA1LDUwLDFdfTtmdW5jdGlvbiBuKHQpe3JldHVybih0PU1h dGgucm91bmQodCkpPDA/MDp0PjI1NT8yNTU6dH1mdW5jdGlvbiBpKHQpe3JldHVybiB0PDA/ MDp0PjE/MTp0fWZ1bmN0aW9uIGEodCl7cmV0dXJuIiUiPT09dFt0Lmxlbmd0aC0xXT9uKHBh cnNlRmxvYXQodCkvMTAwKjI1NSk6bihwYXJzZUludCh0KSl9ZnVuY3Rpb24gbyh0KXtyZXR1 cm4iJSI9PT10W3QubGVuZ3RoLTFdP2kocGFyc2VGbG9hdCh0KS8xMDApOmkocGFyc2VGbG9h dCh0KSl9ZnVuY3Rpb24gcyh0LGUscil7cmV0dXJuIHI8MD9yKz0xOnI+MSYmKHItPTEpLDYq cjwxP3QrKGUtdCkqcio2OjIqcjwxP2U6MypyPDI/dCsoZS10KSooMi8zLXIpKjY6dH10cnl7 ZS5wYXJzZUNTU0NvbG9yPWZ1bmN0aW9uKHQpe3ZhciBlLGk9dC5yZXBsYWNlKC8gL2csIiIp LnRvTG93ZXJDYXNlKCk7aWYoaSBpbiByKXJldHVybiByW2ldLnNsaWNlKCk7aWYoIiMiPT09 aVswXSlyZXR1cm4gND09PWkubGVuZ3RoPyhlPXBhcnNlSW50KGkuc3Vic3RyKDEpLDE2KSk+ PTAmJmU8PTQwOTU/WygzODQwJmUpPj40fCgzODQwJmUpPj44LDI0MCZlfCgyNDAmZSk+PjQs MTUmZXwoMTUmZSk8PDQsMV06bnVsbDo3PT09aS5sZW5ndGgmJihlPXBhcnNlSW50KGkuc3Vi c3RyKDEpLDE2KSk+PTAmJmU8PTE2Nzc3MjE1P1soMTY3MTE2ODAmZSk+PjE2LCg2NTI4MCZl KT4+OCwyNTUmZSwxXTpudWxsO3ZhciBsPWkuaW5kZXhPZigiKCIpLGM9aS5pbmRleE9mKCIp Iik7aWYoLTEhPT1sJiZjKzE9PT1pLmxlbmd0aCl7dmFyIHU9aS5zdWJzdHIoMCxsKSxmPWku c3Vic3RyKGwrMSxjLShsKzEpKS5zcGxpdCgiLCIpLGg9MTtzd2l0Y2godSl7Y2FzZSJyZ2Jh IjppZig0IT09Zi5sZW5ndGgpcmV0dXJuIG51bGw7aD1vKGYucG9wKCkpO2Nhc2UicmdiIjpy ZXR1cm4gMyE9PWYubGVuZ3RoP251bGw6W2EoZlswXSksYShmWzFdKSxhKGZbMl0pLGhdO2Nh c2UiaHNsYSI6aWYoNCE9PWYubGVuZ3RoKXJldHVybiBudWxsO2g9byhmLnBvcCgpKTtjYXNl ImhzbCI6aWYoMyE9PWYubGVuZ3RoKXJldHVybiBudWxsO3ZhciBwPShwYXJzZUZsb2F0KGZb MF0pJTM2MCszNjApJTM2MC8zNjAsZD1vKGZbMV0pLG09byhmWzJdKSxnPW08PS41P20qKGQr MSk6bStkLW0qZCx2PTIqbS1nO3JldHVybltuKDI1NSpzKHYsZyxwKzEvMykpLG4oMjU1KnMo dixnLHApKSxuKDI1NSpzKHYsZyxwLTEvMykpLGhdO2RlZmF1bHQ6cmV0dXJuIG51bGx9fXJl dHVybiBudWxsfX1jYXRjaCh0KXt9fSkpLnBhcnNlQ1NTQ29sb3IsdGU9ZnVuY3Rpb24odCxl LHIsbil7dm9pZCAwPT09biYmKG49MSksdGhpcy5yPXQsdGhpcy5nPWUsdGhpcy5iPXIsdGhp cy5hPW59O3RlLnBhcnNlPWZ1bmN0aW9uKHQpe2lmKHQpe2lmKHQgaW5zdGFuY2VvZiB0ZSly ZXR1cm4gdDtpZigic3RyaW5nIj09dHlwZW9mIHQpe3ZhciBlPSR0KHQpO2lmKGUpcmV0dXJu IG5ldyB0ZShlWzBdLzI1NSplWzNdLGVbMV0vMjU1KmVbM10sZVsyXS8yNTUqZVszXSxlWzNd KX19fSx0ZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnRvQXJy YXkoKSxlPXRbMF0scj10WzFdLG49dFsyXSxpPXRbM107cmV0dXJuInJnYmEoIitNYXRoLnJv dW5kKGUpKyIsIitNYXRoLnJvdW5kKHIpKyIsIitNYXRoLnJvdW5kKG4pKyIsIitpKyIpIn0s dGUucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnIsZT10aGlzLmcs cj10aGlzLmIsbj10aGlzLmE7cmV0dXJuIDA9PT1uP1swLDAsMCwwXTpbMjU1KnQvbiwyNTUq ZS9uLDI1NSpyL24sbl19LHRlLmJsYWNrPW5ldyB0ZSgwLDAsMCwxKSx0ZS53aGl0ZT1uZXcg dGUoMSwxLDEsMSksdGUudHJhbnNwYXJlbnQ9bmV3IHRlKDAsMCwwLDApLHRlLnJlZD1uZXcg dGUoMSwwLDAsMSk7dmFyIGVlPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLnNlbnNpdGl2aXR5PXQ/ ZT8idmFyaWFudCI6ImNhc2UiOmU/ImFjY2VudCI6ImJhc2UiLHRoaXMubG9jYWxlPXIsdGhp cy5jb2xsYXRvcj1uZXcgSW50bC5Db2xsYXRvcih0aGlzLmxvY2FsZT90aGlzLmxvY2FsZTpb XSx7c2Vuc2l0aXZpdHk6dGhpcy5zZW5zaXRpdml0eSx1c2FnZToic2VhcmNoIn0pfTtlZS5w cm90b3R5cGUuY29tcGFyZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmNvbGxhdG9yLmNv bXBhcmUodCxlKX0sZWUucHJvdG90eXBlLnJlc29sdmVkTG9jYWxlPWZ1bmN0aW9uKCl7cmV0 dXJuIG5ldyBJbnRsLkNvbGxhdG9yKHRoaXMubG9jYWxlP3RoaXMubG9jYWxlOltdKS5yZXNv bHZlZE9wdGlvbnMoKS5sb2NhbGV9O3ZhciByZT1mdW5jdGlvbih0LGUscixuLGkpe3RoaXMu dGV4dD10LHRoaXMuaW1hZ2U9ZSx0aGlzLnNjYWxlPXIsdGhpcy5mb250U3RhY2s9bix0aGlz LnRleHRDb2xvcj1pfSxuZT1mdW5jdGlvbih0KXt0aGlzLnNlY3Rpb25zPXR9O25lLmZyb21T dHJpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBuZShbbmV3IHJlKHQsbnVsbCxudWxsLG51 bGwsbnVsbCldKX0sbmUucHJvdG90eXBlLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gMD09 PXRoaXMuc2VjdGlvbnMubGVuZ3RofHwhdGhpcy5zZWN0aW9ucy5zb21lKChmdW5jdGlvbih0 KXtyZXR1cm4gMCE9PXQudGV4dC5sZW5ndGh8fHQuaW1hZ2UmJjAhPT10LmltYWdlLm5hbWUu bGVuZ3RofSkpfSxuZS5mYWN0b3J5PWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2Yg bmU/dDpuZS5mcm9tU3RyaW5nKHQpfSxuZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24o KXtyZXR1cm4gMD09PXRoaXMuc2VjdGlvbnMubGVuZ3RoPyIiOnRoaXMuc2VjdGlvbnMubWFw KChmdW5jdGlvbih0KXtyZXR1cm4gdC50ZXh0fSkpLmpvaW4oIiIpfSxuZS5wcm90b3R5cGUu c2VyaWFsaXplPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVsiZm9ybWF0Il0sZT0wLHI9dGhpcy5z ZWN0aW9ucztlPHIubGVuZ3RoO2UrPTEpe3ZhciBuPXJbZV07aWYobi5pbWFnZSl0LnB1c2go WyJpbWFnZSIsbi5pbWFnZS5uYW1lXSk7ZWxzZXt0LnB1c2gobi50ZXh0KTt2YXIgaT17fTtu LmZvbnRTdGFjayYmKGlbInRleHQtZm9udCJdPVsibGl0ZXJhbCIsbi5mb250U3RhY2suc3Bs aXQoIiwiKV0pLG4uc2NhbGUmJihpWyJmb250LXNjYWxlIl09bi5zY2FsZSksbi50ZXh0Q29s b3ImJihpWyJ0ZXh0LWNvbG9yIl09WyJyZ2JhIl0uY29uY2F0KG4udGV4dENvbG9yLnRvQXJy YXkoKSkpLHQucHVzaChpKX19cmV0dXJuIHR9O3ZhciBpZT1mdW5jdGlvbih0KXt0aGlzLm5h bWU9dC5uYW1lLHRoaXMuYXZhaWxhYmxlPXQuYXZhaWxhYmxlfTtmdW5jdGlvbiBhZSh0LGUs cixuKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJnQ+PTAmJnQ8PTI1NSYmIm51bWJlciI9 PXR5cGVvZiBlJiZlPj0wJiZlPD0yNTUmJiJudW1iZXIiPT10eXBlb2YgciYmcj49MCYmcjw9 MjU1P3ZvaWQgMD09PW58fCJudW1iZXIiPT10eXBlb2YgbiYmbj49MCYmbjw9MT9udWxsOiJJ bnZhbGlkIHJnYmEgdmFsdWUgWyIrW3QsZSxyLG5dLmpvaW4oIiwgIikrIl06ICdhJyBtdXN0 IGJlIGJldHdlZW4gMCBhbmQgMS4iOiJJbnZhbGlkIHJnYmEgdmFsdWUgWyIrKCJudW1iZXIi PT10eXBlb2Ygbj9bdCxlLHIsbl06W3QsZSxyXSkuam9pbigiLCAiKSsiXTogJ3InLCAnZycs IGFuZCAnYicgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI1NS4ifWZ1bmN0aW9uIG9lKHQpe2lm KG51bGw9PT10KXJldHVybiEwO2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4hMDtpZigi Ym9vbGVhbiI9PXR5cGVvZiB0KXJldHVybiEwO2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1 cm4hMDtpZih0IGluc3RhbmNlb2YgdGUpcmV0dXJuITA7aWYodCBpbnN0YW5jZW9mIGVlKXJl dHVybiEwO2lmKHQgaW5zdGFuY2VvZiBuZSlyZXR1cm4hMDtpZih0IGluc3RhbmNlb2YgaWUp cmV0dXJuITA7aWYoQXJyYXkuaXNBcnJheSh0KSl7Zm9yKHZhciBlPTAscj10O2U8ci5sZW5n dGg7ZSs9MSl7aWYoIW9lKHJbZV0pKXJldHVybiExfXJldHVybiEwfWlmKCJvYmplY3QiPT10 eXBlb2YgdCl7Zm9yKHZhciBuIGluIHQpaWYoIW9lKHRbbl0pKXJldHVybiExO3JldHVybiEw fXJldHVybiExfWZ1bmN0aW9uIHNlKHQpe2lmKG51bGw9PT10KXJldHVybiBGdDtpZigic3Ry aW5nIj09dHlwZW9mIHQpcmV0dXJuIE50O2lmKCJib29sZWFuIj09dHlwZW9mIHQpcmV0dXJu IGp0O2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gQnQ7aWYodCBpbnN0YW5jZW9mIHRl KXJldHVybiBVdDtpZih0IGluc3RhbmNlb2YgZWUpcmV0dXJuIHF0O2lmKHQgaW5zdGFuY2Vv ZiBuZSlyZXR1cm4gR3Q7aWYodCBpbnN0YW5jZW9mIGllKXJldHVybiBZdDtpZihBcnJheS5p c0FycmF5KHQpKXtmb3IodmFyIGUscj10Lmxlbmd0aCxuPTAsaT10O248aS5sZW5ndGg7bis9 MSl7dmFyIGE9c2UoaVtuXSk7aWYoZSl7aWYoZT09PWEpY29udGludWU7ZT1IdDticmVha31l PWF9cmV0dXJuIFd0KGV8fEh0LHIpfXJldHVybiBWdH1mdW5jdGlvbiBsZSh0KXt2YXIgZT10 eXBlb2YgdDtyZXR1cm4gbnVsbD09PXQ/IiI6InN0cmluZyI9PT1lfHwibnVtYmVyIj09PWV8 fCJib29sZWFuIj09PWU/U3RyaW5nKHQpOnQgaW5zdGFuY2VvZiB0ZXx8dCBpbnN0YW5jZW9m IG5lfHx0IGluc3RhbmNlb2YgaWU/dC50b1N0cmluZygpOkpTT04uc3RyaW5naWZ5KHQpfWll LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5hbWV9LGllLmZy b21TdHJpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIHQ/bmV3IGllKHtuYW1lOnQsYXZhaWxhYmxl OiExfSk6bnVsbH0saWUucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe3JldHVyblsi aW1hZ2UiLHRoaXMubmFtZV19O3ZhciBjZT1mdW5jdGlvbih0LGUpe3RoaXMudHlwZT10LHRo aXMudmFsdWU9ZX07Y2UucGFyc2U9ZnVuY3Rpb24odCxlKXtpZigyIT09dC5sZW5ndGgpcmV0 dXJuIGUuZXJyb3IoIidsaXRlcmFsJyBleHByZXNzaW9uIHJlcXVpcmVzIGV4YWN0bHkgb25l IGFyZ3VtZW50LCBidXQgZm91bmQgIisodC5sZW5ndGgtMSkrIiBpbnN0ZWFkLiIpO2lmKCFv ZSh0WzFdKSlyZXR1cm4gZS5lcnJvcigiaW52YWxpZCB2YWx1ZSIpO3ZhciByPXRbMV0sbj1z ZShyKSxpPWUuZXhwZWN0ZWRUeXBlO3JldHVybiJhcnJheSIhPT1uLmtpbmR8fDAhPT1uLk58 fCFpfHwiYXJyYXkiIT09aS5raW5kfHwibnVtYmVyIj09dHlwZW9mIGkuTiYmMCE9PWkuTnx8 KG49aSksbmV3IGNlKG4scil9LGNlLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbigpe3Jl dHVybiB0aGlzLnZhbHVlfSxjZS5wcm90b3R5cGUuZWFjaENoaWxkPWZ1bmN0aW9uKCl7fSxj ZS5wcm90b3R5cGUub3V0cHV0RGVmaW5lZD1mdW5jdGlvbigpe3JldHVybiEwfSxjZS5wcm90 b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJuImFycmF5Ij09PXRoaXMudHlwZS5r aW5kfHwib2JqZWN0Ij09PXRoaXMudHlwZS5raW5kP1sibGl0ZXJhbCIsdGhpcy52YWx1ZV06 dGhpcy52YWx1ZSBpbnN0YW5jZW9mIHRlP1sicmdiYSJdLmNvbmNhdCh0aGlzLnZhbHVlLnRv QXJyYXkoKSk6dGhpcy52YWx1ZSBpbnN0YW5jZW9mIG5lP3RoaXMudmFsdWUuc2VyaWFsaXpl KCk6dGhpcy52YWx1ZX07dmFyIHVlPWZ1bmN0aW9uKHQpe3RoaXMubmFtZT0iRXhwcmVzc2lv bkV2YWx1YXRpb25FcnJvciIsdGhpcy5tZXNzYWdlPXR9O3VlLnByb3RvdHlwZS50b0pTT049 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZXNzYWdlfTt2YXIgZmU9e3N0cmluZzpOdCxudW1i ZXI6QnQsYm9vbGVhbjpqdCxvYmplY3Q6VnR9LGhlPWZ1bmN0aW9uKHQsZSl7dGhpcy50eXBl PXQsdGhpcy5hcmdzPWV9O2hlLnBhcnNlPWZ1bmN0aW9uKHQsZSl7aWYodC5sZW5ndGg8Mily ZXR1cm4gZS5lcnJvcigiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiIpO3ZhciBy LG49MSxpPXRbMF07aWYoImFycmF5Ij09PWkpe3ZhciBhLG87aWYodC5sZW5ndGg+Mil7dmFy IHM9dFsxXTtpZigic3RyaW5nIiE9dHlwZW9mIHN8fCEocyBpbiBmZSl8fCJvYmplY3QiPT09 cylyZXR1cm4gZS5lcnJvcignVGhlIGl0ZW0gdHlwZSBhcmd1bWVudCBvZiAiYXJyYXkiIG11 c3QgYmUgb25lIG9mIHN0cmluZywgbnVtYmVyLCBib29sZWFuJywxKTthPWZlW3NdLG4rK31l bHNlIGE9SHQ7aWYodC5sZW5ndGg+Myl7aWYobnVsbCE9PXRbMl0mJigibnVtYmVyIiE9dHlw ZW9mIHRbMl18fHRbMl08MHx8dFsyXSE9PU1hdGguZmxvb3IodFsyXSkpKXJldHVybiBlLmVy cm9yKCdUaGUgbGVuZ3RoIGFyZ3VtZW50IHRvICJhcnJheSIgbXVzdCBiZSBhIHBvc2l0aXZl IGludGVnZXIgbGl0ZXJhbCcsMik7bz10WzJdLG4rK31yPVd0KGEsbyl9ZWxzZSByPWZlW2ld O2Zvcih2YXIgbD1bXTtuPHQubGVuZ3RoO24rKyl7dmFyIGM9ZS5wYXJzZSh0W25dLG4sSHQp O2lmKCFjKXJldHVybiBudWxsO2wucHVzaChjKX1yZXR1cm4gbmV3IGhlKHIsbCl9LGhlLnBy b3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHRoaXMuYXJncy5s ZW5ndGg7ZSsrKXt2YXIgcj10aGlzLmFyZ3NbZV0uZXZhbHVhdGUodCk7aWYoIUp0KHRoaXMu dHlwZSxzZShyKSkpcmV0dXJuIHI7aWYoZT09PXRoaXMuYXJncy5sZW5ndGgtMSl0aHJvdyBu ZXcgdWUoIkV4cGVjdGVkIHZhbHVlIHRvIGJlIG9mIHR5cGUgIitYdCh0aGlzLnR5cGUpKyIs IGJ1dCBmb3VuZCAiK1h0KHNlKHIpKSsiIGluc3RlYWQuIil9cmV0dXJuIG51bGx9LGhlLnBy b3RvdHlwZS5lYWNoQ2hpbGQ9ZnVuY3Rpb24odCl7dGhpcy5hcmdzLmZvckVhY2godCl9LGhl LnByb3RvdHlwZS5vdXRwdXREZWZpbmVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXJncy5l dmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQub3V0cHV0RGVmaW5lZCgpfSkpfSxoZS5wcm90 b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy50eXBlLGU9W3Qua2luZF07 aWYoImFycmF5Ij09PXQua2luZCl7dmFyIHI9dC5pdGVtVHlwZTtpZigic3RyaW5nIj09PXIu a2luZHx8Im51bWJlciI9PT1yLmtpbmR8fCJib29sZWFuIj09PXIua2luZCl7ZS5wdXNoKHIu a2luZCk7dmFyIG49dC5OOygibnVtYmVyIj09dHlwZW9mIG58fHRoaXMuYXJncy5sZW5ndGg+ MSkmJmUucHVzaChuKX19cmV0dXJuIGUuY29uY2F0KHRoaXMuYXJncy5tYXAoKGZ1bmN0aW9u KHQpe3JldHVybiB0LnNlcmlhbGl6ZSgpfSkpKX07dmFyIHBlPWZ1bmN0aW9uKHQpe3RoaXMu dHlwZT1HdCx0aGlzLnNlY3Rpb25zPXR9O3BlLnBhcnNlPWZ1bmN0aW9uKHQsZSl7aWYodC5s ZW5ndGg8MilyZXR1cm4gZS5lcnJvcigiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50 LiIpO3ZhciByPXRbMV07aWYoIUFycmF5LmlzQXJyYXkocikmJiJvYmplY3QiPT10eXBlb2Yg cilyZXR1cm4gZS5lcnJvcigiRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhbiBpbWFnZSBvciB0 ZXh0IHNlY3Rpb24uIik7Zm9yKHZhciBuPVtdLGk9ITEsYT0xO2E8PXQubGVuZ3RoLTE7Kyth KXt2YXIgbz10W2FdO2lmKGkmJiJvYmplY3QiPT10eXBlb2YgbyYmIUFycmF5LmlzQXJyYXko bykpe2k9ITE7dmFyIHM9bnVsbDtpZihvWyJmb250LXNjYWxlIl0mJiEocz1lLnBhcnNlKG9b ImZvbnQtc2NhbGUiXSwxLEJ0KSkpcmV0dXJuIG51bGw7dmFyIGw9bnVsbDtpZihvWyJ0ZXh0 LWZvbnQiXSYmIShsPWUucGFyc2Uob1sidGV4dC1mb250Il0sMSxXdChOdCkpKSlyZXR1cm4g bnVsbDt2YXIgYz1udWxsO2lmKG9bInRleHQtY29sb3IiXSYmIShjPWUucGFyc2Uob1sidGV4 dC1jb2xvciJdLDEsVXQpKSlyZXR1cm4gbnVsbDt2YXIgdT1uW24ubGVuZ3RoLTFdO3Uuc2Nh bGU9cyx1LmZvbnQ9bCx1LnRleHRDb2xvcj1jfWVsc2V7dmFyIGY9ZS5wYXJzZSh0W2FdLDEs SHQpO2lmKCFmKXJldHVybiBudWxsO3ZhciBoPWYudHlwZS5raW5kO2lmKCJzdHJpbmciIT09 aCYmInZhbHVlIiE9PWgmJiJudWxsIiE9PWgmJiJyZXNvbHZlZEltYWdlIiE9PWgpcmV0dXJu IGUuZXJyb3IoIkZvcm1hdHRlZCB0ZXh0IHR5cGUgbXVzdCBiZSAnc3RyaW5nJywgJ3ZhbHVl JywgJ2ltYWdlJyBvciAnbnVsbCcuIik7aT0hMCxuLnB1c2goe2NvbnRlbnQ6ZixzY2FsZTpu dWxsLGZvbnQ6bnVsbCx0ZXh0Q29sb3I6bnVsbH0pfX1yZXR1cm4gbmV3IHBlKG4pfSxwZS5w cm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBuZSh0aGlzLnNlY3Rp b25zLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHI9ZS5jb250ZW50LmV2YWx1YXRlKHQpO3JldHVy biBzZShyKT09PVl0P25ldyByZSgiIixyLG51bGwsbnVsbCxudWxsKTpuZXcgcmUobGUociks bnVsbCxlLnNjYWxlP2Uuc2NhbGUuZXZhbHVhdGUodCk6bnVsbCxlLmZvbnQ/ZS5mb250LmV2 YWx1YXRlKHQpLmpvaW4oIiwiKTpudWxsLGUudGV4dENvbG9yP2UudGV4dENvbG9yLmV2YWx1 YXRlKHQpOm51bGwpfSkpKX0scGUucHJvdG90eXBlLmVhY2hDaGlsZD1mdW5jdGlvbih0KXtm b3IodmFyIGU9MCxyPXRoaXMuc2VjdGlvbnM7ZTxyLmxlbmd0aDtlKz0xKXt2YXIgbj1yW2Vd O3Qobi5jb250ZW50KSxuLnNjYWxlJiZ0KG4uc2NhbGUpLG4uZm9udCYmdChuLmZvbnQpLG4u dGV4dENvbG9yJiZ0KG4udGV4dENvbG9yKX19LHBlLnByb3RvdHlwZS5vdXRwdXREZWZpbmVk PWZ1bmN0aW9uKCl7cmV0dXJuITF9LHBlLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24o KXtmb3IodmFyIHQ9WyJmb3JtYXQiXSxlPTAscj10aGlzLnNlY3Rpb25zO2U8ci5sZW5ndGg7 ZSs9MSl7dmFyIG49cltlXTt0LnB1c2gobi5jb250ZW50LnNlcmlhbGl6ZSgpKTt2YXIgaT17 fTtuLnNjYWxlJiYoaVsiZm9udC1zY2FsZSJdPW4uc2NhbGUuc2VyaWFsaXplKCkpLG4uZm9u dCYmKGlbInRleHQtZm9udCJdPW4uZm9udC5zZXJpYWxpemUoKSksbi50ZXh0Q29sb3ImJihp WyJ0ZXh0LWNvbG9yIl09bi50ZXh0Q29sb3Iuc2VyaWFsaXplKCkpLHQucHVzaChpKX1yZXR1 cm4gdH07dmFyIGRlPWZ1bmN0aW9uKHQpe3RoaXMudHlwZT1ZdCx0aGlzLmlucHV0PXR9O2Rl LnBhcnNlPWZ1bmN0aW9uKHQsZSl7aWYoMiE9PXQubGVuZ3RoKXJldHVybiBlLmVycm9yKCJF eHBlY3RlZCB0d28gYXJndW1lbnRzLiIpO3ZhciByPWUucGFyc2UodFsxXSwxLE50KTtyZXR1 cm4gcj9uZXcgZGUocik6ZS5lcnJvcigiTm8gaW1hZ2UgbmFtZSBwcm92aWRlZC4iKX0sZGUu cHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaW5wdXQuZXZhbHVh dGUodCkscj1pZS5mcm9tU3RyaW5nKGUpO3JldHVybiByJiZ0LmF2YWlsYWJsZUltYWdlcyYm KHIuYXZhaWxhYmxlPXQuYXZhaWxhYmxlSW1hZ2VzLmluZGV4T2YoZSk+LTEpLHJ9LGRlLnBy b3RvdHlwZS5lYWNoQ2hpbGQ9ZnVuY3Rpb24odCl7dCh0aGlzLmlucHV0KX0sZGUucHJvdG90 eXBlLm91dHB1dERlZmluZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZGUucHJvdG90eXBlLnNl cmlhbGl6ZT1mdW5jdGlvbigpe3JldHVyblsiaW1hZ2UiLHRoaXMuaW5wdXQuc2VyaWFsaXpl KCldfTt2YXIgbWU9eyJ0by1ib29sZWFuIjpqdCwidG8tY29sb3IiOlV0LCJ0by1udW1iZXIi OkJ0LCJ0by1zdHJpbmciOk50fSxnZT1mdW5jdGlvbih0LGUpe3RoaXMudHlwZT10LHRoaXMu YXJncz1lfTtnZS5wYXJzZT1mdW5jdGlvbih0LGUpe2lmKHQubGVuZ3RoPDIpcmV0dXJuIGUu ZXJyb3IoIkV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4iKTt2YXIgcj10WzBdO2lm KCgidG8tYm9vbGVhbiI9PT1yfHwidG8tc3RyaW5nIj09PXIpJiYyIT09dC5sZW5ndGgpcmV0 dXJuIGUuZXJyb3IoIkV4cGVjdGVkIG9uZSBhcmd1bWVudC4iKTtmb3IodmFyIG49bWVbcl0s aT1bXSxhPTE7YTx0Lmxlbmd0aDthKyspe3ZhciBvPWUucGFyc2UodFthXSxhLEh0KTtpZigh bylyZXR1cm4gbnVsbDtpLnB1c2gobyl9cmV0dXJuIG5ldyBnZShuLGkpfSxnZS5wcm90b3R5 cGUuZXZhbHVhdGU9ZnVuY3Rpb24odCl7aWYoImJvb2xlYW4iPT09dGhpcy50eXBlLmtpbmQp cmV0dXJuIEJvb2xlYW4odGhpcy5hcmdzWzBdLmV2YWx1YXRlKHQpKTtpZigiY29sb3IiPT09 dGhpcy50eXBlLmtpbmQpe2Zvcih2YXIgZSxyLG49MCxpPXRoaXMuYXJncztuPGkubGVuZ3Ro O24rPTEpe2lmKHI9bnVsbCwoZT1pW25dLmV2YWx1YXRlKHQpKWluc3RhbmNlb2YgdGUpcmV0 dXJuIGU7aWYoInN0cmluZyI9PXR5cGVvZiBlKXt2YXIgYT10LnBhcnNlQ29sb3IoZSk7aWYo YSlyZXR1cm4gYX1lbHNlIGlmKEFycmF5LmlzQXJyYXkoZSkmJiEocj1lLmxlbmd0aDwzfHxl Lmxlbmd0aD40PyJJbnZhbGlkIHJiZ2EgdmFsdWUgIitKU09OLnN0cmluZ2lmeShlKSsiOiBl eHBlY3RlZCBhbiBhcnJheSBjb250YWluaW5nIGVpdGhlciB0aHJlZSBvciBmb3VyIG51bWVy aWMgdmFsdWVzLiI6YWUoZVswXSxlWzFdLGVbMl0sZVszXSkpKXJldHVybiBuZXcgdGUoZVsw XS8yNTUsZVsxXS8yNTUsZVsyXS8yNTUsZVszXSl9dGhyb3cgbmV3IHVlKHJ8fCJDb3VsZCBu b3QgcGFyc2UgY29sb3IgZnJvbSB2YWx1ZSAnIisoInN0cmluZyI9PXR5cGVvZiBlP2U6U3Ry aW5nKEpTT04uc3RyaW5naWZ5KGUpKSkrIiciKX1pZigibnVtYmVyIj09PXRoaXMudHlwZS5r aW5kKXtmb3IodmFyIG89bnVsbCxzPTAsbD10aGlzLmFyZ3M7czxsLmxlbmd0aDtzKz0xKXtp ZihudWxsPT09KG89bFtzXS5ldmFsdWF0ZSh0KSkpcmV0dXJuIDA7dmFyIGM9TnVtYmVyKG8p O2lmKCFpc05hTihjKSlyZXR1cm4gY310aHJvdyBuZXcgdWUoIkNvdWxkIG5vdCBjb252ZXJ0 ICIrSlNPTi5zdHJpbmdpZnkobykrIiB0byBudW1iZXIuIil9cmV0dXJuImZvcm1hdHRlZCI9 PT10aGlzLnR5cGUua2luZD9uZS5mcm9tU3RyaW5nKGxlKHRoaXMuYXJnc1swXS5ldmFsdWF0 ZSh0KSkpOiJyZXNvbHZlZEltYWdlIj09PXRoaXMudHlwZS5raW5kP2llLmZyb21TdHJpbmco bGUodGhpcy5hcmdzWzBdLmV2YWx1YXRlKHQpKSk6bGUodGhpcy5hcmdzWzBdLmV2YWx1YXRl KHQpKX0sZ2UucHJvdG90eXBlLmVhY2hDaGlsZD1mdW5jdGlvbih0KXt0aGlzLmFyZ3MuZm9y RWFjaCh0KX0sZ2UucHJvdG90eXBlLm91dHB1dERlZmluZWQ9ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5hcmdzLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdC5vdXRwdXREZWZpbmVkKCl9 KSl9LGdlLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXtpZigiZm9ybWF0dGVkIj09 PXRoaXMudHlwZS5raW5kKXJldHVybiBuZXcgcGUoW3tjb250ZW50OnRoaXMuYXJnc1swXSxz Y2FsZTpudWxsLGZvbnQ6bnVsbCx0ZXh0Q29sb3I6bnVsbH1dKS5zZXJpYWxpemUoKTtpZigi cmVzb2x2ZWRJbWFnZSI9PT10aGlzLnR5cGUua2luZClyZXR1cm4gbmV3IGRlKHRoaXMuYXJn c1swXSkuc2VyaWFsaXplKCk7dmFyIHQ9WyJ0by0iK3RoaXMudHlwZS5raW5kXTtyZXR1cm4g dGhpcy5lYWNoQ2hpbGQoKGZ1bmN0aW9uKGUpe3QucHVzaChlLnNlcmlhbGl6ZSgpKX0pKSx0 fTt2YXIgdmU9WyJVbmtub3duIiwiUG9pbnQiLCJMaW5lU3RyaW5nIiwiUG9seWdvbiJdLHll PWZ1bmN0aW9uKCl7dGhpcy5nbG9iYWxzPW51bGwsdGhpcy5mZWF0dXJlPW51bGwsdGhpcy5m ZWF0dXJlU3RhdGU9bnVsbCx0aGlzLmZvcm1hdHRlZFNlY3Rpb249bnVsbCx0aGlzLl9wYXJz ZUNvbG9yQ2FjaGU9e30sdGhpcy5hdmFpbGFibGVJbWFnZXM9bnVsbCx0aGlzLmNhbm9uaWNh bD1udWxsfTt5ZS5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mZWF0dXJl JiYiaWQiaW4gdGhpcy5mZWF0dXJlP3RoaXMuZmVhdHVyZS5pZDpudWxsfSx5ZS5wcm90b3R5 cGUuZ2VvbWV0cnlUeXBlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmVhdHVyZT8ibnVtYmVy Ij09dHlwZW9mIHRoaXMuZmVhdHVyZS50eXBlP3ZlW3RoaXMuZmVhdHVyZS50eXBlXTp0aGlz LmZlYXR1cmUudHlwZTpudWxsfSx5ZS5wcm90b3R5cGUuZ2VvbWV0cnk9ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5mZWF0dXJlJiYiZ2VvbWV0cnkiaW4gdGhpcy5mZWF0dXJlP3RoaXMuZmVh dHVyZS5nZW9tZXRyeTpudWxsfSx5ZS5wcm90b3R5cGUuY2Fub25pY2FsSUQ9ZnVuY3Rpb24o KXtyZXR1cm4gdGhpcy5jYW5vbmljYWx9LHllLnByb3RvdHlwZS5wcm9wZXJ0aWVzPWZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuZmVhdHVyZSYmdGhpcy5mZWF0dXJlLnByb3BlcnRpZXN8fHt9 fSx5ZS5wcm90b3R5cGUucGFyc2VDb2xvcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9wYXJz ZUNvbG9yQ2FjaGVbdF07cmV0dXJuIGV8fChlPXRoaXMuX3BhcnNlQ29sb3JDYWNoZVt0XT10 ZS5wYXJzZSh0KSksZX07dmFyIHhlPWZ1bmN0aW9uKHQsZSxyLG4pe3RoaXMubmFtZT10LHRo aXMudHlwZT1lLHRoaXMuX2V2YWx1YXRlPXIsdGhpcy5hcmdzPW59O3hlLnByb3RvdHlwZS5l dmFsdWF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZXZhbHVhdGUodCx0aGlzLmFyZ3Mp fSx4ZS5wcm90b3R5cGUuZWFjaENoaWxkPWZ1bmN0aW9uKHQpe3RoaXMuYXJncy5mb3JFYWNo KHQpfSx4ZS5wcm90b3R5cGUub3V0cHV0RGVmaW5lZD1mdW5jdGlvbigpe3JldHVybiExfSx4 ZS5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJuW3RoaXMubmFtZV0uY29u Y2F0KHRoaXMuYXJncy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnNlcmlhbGl6ZSgpfSkp KX0seGUucGFyc2U9ZnVuY3Rpb24odCxlKXt2YXIgcixuPXRbMF0saT14ZS5kZWZpbml0aW9u c1tuXTtpZighaSlyZXR1cm4gZS5lcnJvcignVW5rbm93biBleHByZXNzaW9uICInK24rJyIu IElmIHlvdSB3YW50ZWQgYSBsaXRlcmFsIGFycmF5LCB1c2UgWyJsaXRlcmFsIiwgWy4uLl1d LicsMCk7Zm9yKHZhciBhPUFycmF5LmlzQXJyYXkoaSk/aVswXTppLnR5cGUsbz1BcnJheS5p c0FycmF5KGkpP1tbaVsxXSxpWzJdXV06aS5vdmVybG9hZHMscz1vLmZpbHRlcigoZnVuY3Rp b24oZSl7dmFyIHI9ZVswXTtyZXR1cm4hQXJyYXkuaXNBcnJheShyKXx8ci5sZW5ndGg9PT10 Lmxlbmd0aC0xfSkpLGw9bnVsbCxjPTAsdT1zO2M8dS5sZW5ndGg7Yys9MSl7dmFyIGY9dVtj XSxoPWZbMF0scD1mWzFdO2w9bmV3IFVlKGUucmVnaXN0cnksZS5wYXRoLG51bGwsZS5zY29w ZSk7Zm9yKHZhciBkPVtdLG09ITEsZz0xO2c8dC5sZW5ndGg7ZysrKXt2YXIgdj10W2ddLHk9 QXJyYXkuaXNBcnJheShoKT9oW2ctMV06aC50eXBlLHg9bC5wYXJzZSh2LDErZC5sZW5ndGgs eSk7aWYoIXgpe209ITA7YnJlYWt9ZC5wdXNoKHgpfWlmKCFtKWlmKEFycmF5LmlzQXJyYXko aCkmJmgubGVuZ3RoIT09ZC5sZW5ndGgpbC5lcnJvcigiRXhwZWN0ZWQgIitoLmxlbmd0aCsi IGFyZ3VtZW50cywgYnV0IGZvdW5kICIrZC5sZW5ndGgrIiBpbnN0ZWFkLiIpO2Vsc2V7Zm9y KHZhciBiPTA7YjxkLmxlbmd0aDtiKyspe3ZhciBfPUFycmF5LmlzQXJyYXkoaCk/aFtiXTpo LnR5cGUsdz1kW2JdO2wuY29uY2F0KGIrMSkuY2hlY2tTdWJ0eXBlKF8sdy50eXBlKX1pZigw PT09bC5lcnJvcnMubGVuZ3RoKXJldHVybiBuZXcgeGUobixhLHAsZCl9fWlmKDE9PT1zLmxl bmd0aCkocj1lLmVycm9ycykucHVzaC5hcHBseShyLGwuZXJyb3JzKTtlbHNle2Zvcih2YXIg VD0ocy5sZW5ndGg/czpvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlLHI9dFswXTtyZXR1cm4g ZT1yLEFycmF5LmlzQXJyYXkoZSk/IigiK2UubWFwKFh0KS5qb2luKCIsICIpKyIpIjoiKCIr WHQoZS50eXBlKSsiLi4uKSJ9KSkuam9pbigiIHwgIiksaz1bXSxBPTE7QTx0Lmxlbmd0aDtB Kyspe3ZhciBNPWUucGFyc2UodFtBXSwxK2subGVuZ3RoKTtpZighTSlyZXR1cm4gbnVsbDtr LnB1c2goWHQoTS50eXBlKSl9ZS5lcnJvcigiRXhwZWN0ZWQgYXJndW1lbnRzIG9mIHR5cGUg IitUKyIsIGJ1dCBmb3VuZCAoIitrLmpvaW4oIiwgIikrIikgaW5zdGVhZC4iKX1yZXR1cm4g bnVsbH0seGUucmVnaXN0ZXI9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHIgaW4geGUuZGVmaW5p dGlvbnM9ZSxlKXRbcl09eGV9O3ZhciBiZT1mdW5jdGlvbih0LGUscil7dGhpcy50eXBlPXF0 LHRoaXMubG9jYWxlPXIsdGhpcy5jYXNlU2Vuc2l0aXZlPXQsdGhpcy5kaWFjcml0aWNTZW5z aXRpdmU9ZX07YmUucGFyc2U9ZnVuY3Rpb24odCxlKXtpZigyIT09dC5sZW5ndGgpcmV0dXJu IGUuZXJyb3IoIkV4cGVjdGVkIG9uZSBhcmd1bWVudC4iKTt2YXIgcj10WzFdO2lmKCJvYmpl Y3QiIT10eXBlb2Ygcnx8QXJyYXkuaXNBcnJheShyKSlyZXR1cm4gZS5lcnJvcigiQ29sbGF0 b3Igb3B0aW9ucyBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdC4iKTt2YXIgbj1lLnBhcnNl KHZvaWQgMCE9PXJbImNhc2Utc2Vuc2l0aXZlIl0mJnJbImNhc2Utc2Vuc2l0aXZlIl0sMSxq dCk7aWYoIW4pcmV0dXJuIG51bGw7dmFyIGk9ZS5wYXJzZSh2b2lkIDAhPT1yWyJkaWFjcml0 aWMtc2Vuc2l0aXZlIl0mJnJbImRpYWNyaXRpYy1zZW5zaXRpdmUiXSwxLGp0KTtpZighaSly ZXR1cm4gbnVsbDt2YXIgYT1udWxsO3JldHVybiByLmxvY2FsZSYmIShhPWUucGFyc2Uoci5s b2NhbGUsMSxOdCkpP251bGw6bmV3IGJlKG4saSxhKX0sYmUucHJvdG90eXBlLmV2YWx1YXRl PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgZWUodGhpcy5jYXNlU2Vuc2l0aXZlLmV2YWx1YXRl KHQpLHRoaXMuZGlhY3JpdGljU2Vuc2l0aXZlLmV2YWx1YXRlKHQpLHRoaXMubG9jYWxlP3Ro aXMubG9jYWxlLmV2YWx1YXRlKHQpOm51bGwpfSxiZS5wcm90b3R5cGUuZWFjaENoaWxkPWZ1 bmN0aW9uKHQpe3QodGhpcy5jYXNlU2Vuc2l0aXZlKSx0KHRoaXMuZGlhY3JpdGljU2Vuc2l0 aXZlKSx0aGlzLmxvY2FsZSYmdCh0aGlzLmxvY2FsZSl9LGJlLnByb3RvdHlwZS5vdXRwdXRE ZWZpbmVkPWZ1bmN0aW9uKCl7cmV0dXJuITF9LGJlLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVu Y3Rpb24oKXt2YXIgdD17fTtyZXR1cm4gdFsiY2FzZS1zZW5zaXRpdmUiXT10aGlzLmNhc2VT ZW5zaXRpdmUuc2VyaWFsaXplKCksdFsiZGlhY3JpdGljLXNlbnNpdGl2ZSJdPXRoaXMuZGlh Y3JpdGljU2Vuc2l0aXZlLnNlcmlhbGl6ZSgpLHRoaXMubG9jYWxlJiYodC5sb2NhbGU9dGhp cy5sb2NhbGUuc2VyaWFsaXplKCkpLFsiY29sbGF0b3IiLHRdfTtmdW5jdGlvbiBfZSh0LGUp e3RbMF09TWF0aC5taW4odFswXSxlWzBdKSx0WzFdPU1hdGgubWluKHRbMV0sZVsxXSksdFsy XT1NYXRoLm1heCh0WzJdLGVbMF0pLHRbM109TWF0aC5tYXgodFszXSxlWzFdKX1mdW5jdGlv biB3ZSh0LGUpe3JldHVybiEodFswXTw9ZVswXSkmJighKHRbMl0+PWVbMl0pJiYoISh0WzFd PD1lWzFdKSYmISh0WzNdPj1lWzNdKSkpfWZ1bmN0aW9uIFRlKHQsZSl7dmFyIHIsbj0oMTgw K3RbMF0pLzM2MCxpPShyPXRbMV0sKDE4MC0xODAvTWF0aC5QSSpNYXRoLmxvZyhNYXRoLnRh bihNYXRoLlBJLzQrcipNYXRoLlBJLzM2MCkpKS8zNjApLGE9TWF0aC5wb3coMixlLnopO3Jl dHVybltNYXRoLnJvdW5kKG4qYSo4MTkyKSxNYXRoLnJvdW5kKGkqYSo4MTkyKV19ZnVuY3Rp b24ga2UodCxlLHIpe3JldHVybiBlWzFdPnRbMV0hPXJbMV0+dFsxXSYmdFswXTwoclswXS1l WzBdKSoodFsxXS1lWzFdKS8oclsxXS1lWzFdKStlWzBdfWZ1bmN0aW9uIEFlKHQsZSl7Zm9y KHZhciByLG4saSxhLG8scyxsLGM9ITEsdT0wLGY9ZS5sZW5ndGg7dTxmO3UrKylmb3IodmFy IGg9ZVt1XSxwPTAsZD1oLmxlbmd0aDtwPGQtMTtwKyspe2lmKHI9dCxuPWhbcF0saT1oW3Ar MV0sYT12b2lkIDAsbz12b2lkIDAscz12b2lkIDAsbD12b2lkIDAsYT1yWzBdLW5bMF0sbz1y WzFdLW5bMV0scz1yWzBdLWlbMF0sbD1yWzFdLWlbMV0sYSpsLXMqbz09MCYmYSpzPD0wJiZv Kmw8PTApcmV0dXJuITE7a2UodCxoW3BdLGhbcCsxXSkmJihjPSFjKX1yZXR1cm4gY31mdW5j dGlvbiBNZSh0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKWlmKEFlKHQsZVtyXSkp cmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gU2UodCxlLHIsbil7dmFyIGk9dFswXS1yWzBd LGE9dFsxXS1yWzFdLG89ZVswXS1yWzBdLHM9ZVsxXS1yWzFdLGw9blswXS1yWzBdLGM9blsx XS1yWzFdLHU9aSpjLWwqYSxmPW8qYy1sKnM7cmV0dXJuIHU+MCYmZjwwfHx1PDAmJmY+MH1m dW5jdGlvbiBFZSh0LGUscil7Zm9yKHZhciBuPTAsaT1yO248aS5sZW5ndGg7bis9MSlmb3Io dmFyIGE9aVtuXSxvPTA7bzxhLmxlbmd0aC0xOysrbylpZihzPXQsbD1lLGM9YVtvXSx1PWFb bysxXSxmPXZvaWQgMCxoPXZvaWQgMCxwPXZvaWQgMCxkPXZvaWQgMCxwPVtsWzBdLXNbMF0s bFsxXS1zWzFdXSxkPVt1WzBdLWNbMF0sdVsxXS1jWzFdXSwwIT0oZj1kKVswXSooaD1wKVsx XS1mWzFdKmhbMF0mJlNlKHMsbCxjLHUpJiZTZShjLHUscyxsKSlyZXR1cm4hMDt2YXIgcyxs LGMsdSxmLGgscCxkO3JldHVybiExfWZ1bmN0aW9uIExlKHQsZSl7Zm9yKHZhciByPTA7cjx0 Lmxlbmd0aDsrK3IpaWYoIUFlKHRbcl0sZSkpcmV0dXJuITE7Zm9yKHZhciBuPTA7bjx0Lmxl bmd0aC0xOysrbilpZihFZSh0W25dLHRbbisxXSxlKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5j dGlvbiBDZSh0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKWlmKExlKHQsZVtyXSkp cmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gUGUodCxlLHIpe2Zvcih2YXIgbj1bXSxpPTA7 aTx0Lmxlbmd0aDtpKyspe2Zvcih2YXIgYT1bXSxvPTA7bzx0W2ldLmxlbmd0aDtvKyspe3Zh ciBzPVRlKHRbaV1bb10scik7X2UoZSxzKSxhLnB1c2gocyl9bi5wdXNoKGEpfXJldHVybiBu fWZ1bmN0aW9uIEllKHQsZSxyKXtmb3IodmFyIG49W10saT0wO2k8dC5sZW5ndGg7aSsrKXt2 YXIgYT1QZSh0W2ldLGUscik7bi5wdXNoKGEpfXJldHVybiBufWZ1bmN0aW9uIE9lKHQsZSxy LG4pe2lmKHRbMF08clswXXx8dFswXT5yWzJdKXt2YXIgaT0uNSpuLGE9dFswXS1yWzBdPmk/ LW46clswXS10WzBdPmk/bjowOzA9PT1hJiYoYT10WzBdLXJbMl0+aT8tbjpyWzJdLXRbMF0+ aT9uOjApLHRbMF0rPWF9X2UoZSx0KX1mdW5jdGlvbiB6ZSh0LGUscixuKXtmb3IodmFyIGk9 ODE5MipNYXRoLnBvdygyLG4ueiksYT1bODE5MipuLngsODE5MipuLnldLG89W10scz0wLGw9 dDtzPGwubGVuZ3RoO3MrPTEpZm9yKHZhciBjPTAsdT1sW3NdO2M8dS5sZW5ndGg7Yys9MSl7 dmFyIGY9dVtjXSxoPVtmLngrYVswXSxmLnkrYVsxXV07T2UoaCxlLHIsaSksby5wdXNoKGgp fXJldHVybiBvfWZ1bmN0aW9uIERlKHQsZSxyLG4pe2Zvcih2YXIgaSxhPTgxOTIqTWF0aC5w b3coMixuLnopLG89WzgxOTIqbi54LDgxOTIqbi55XSxzPVtdLGw9MCxjPXQ7bDxjLmxlbmd0 aDtsKz0xKXtmb3IodmFyIHU9W10sZj0wLGg9Y1tsXTtmPGgubGVuZ3RoO2YrPTEpe3ZhciBw PWhbZl0sZD1bcC54K29bMF0scC55K29bMV1dO19lKGUsZCksdS5wdXNoKGQpfXMucHVzaCh1 KX1pZihlWzJdLWVbMF08PWEvMil7KGk9ZSlbMF09aVsxXT0xLzAsaVsyXT1pWzNdPS0xLzA7 Zm9yKHZhciBtPTAsZz1zO208Zy5sZW5ndGg7bSs9MSlmb3IodmFyIHY9MCx5PWdbbV07djx5 Lmxlbmd0aDt2Kz0xKXtPZSh5W3ZdLGUscixhKX19cmV0dXJuIHN9dmFyIFJlPWZ1bmN0aW9u KHQsZSl7dGhpcy50eXBlPWp0LHRoaXMuZ2VvanNvbj10LHRoaXMuZ2VvbWV0cmllcz1lfTtm dW5jdGlvbiBGZSh0KXtpZih0IGluc3RhbmNlb2YgeGUpe2lmKCJnZXQiPT09dC5uYW1lJiYx PT09dC5hcmdzLmxlbmd0aClyZXR1cm4hMTtpZigiZmVhdHVyZS1zdGF0ZSI9PT10Lm5hbWUp cmV0dXJuITE7aWYoImhhcyI9PT10Lm5hbWUmJjE9PT10LmFyZ3MubGVuZ3RoKXJldHVybiEx O2lmKCJwcm9wZXJ0aWVzIj09PXQubmFtZXx8Imdlb21ldHJ5LXR5cGUiPT09dC5uYW1lfHwi aWQiPT09dC5uYW1lKXJldHVybiExO2lmKC9eZmlsdGVyLS8udGVzdCh0Lm5hbWUpKXJldHVy biExfWlmKHQgaW5zdGFuY2VvZiBSZSlyZXR1cm4hMTt2YXIgZT0hMDtyZXR1cm4gdC5lYWNo Q2hpbGQoKGZ1bmN0aW9uKHQpe2UmJiFGZSh0KSYmKGU9ITEpfSkpLGV9ZnVuY3Rpb24gQmUo dCl7aWYodCBpbnN0YW5jZW9mIHhlJiYiZmVhdHVyZS1zdGF0ZSI9PT10Lm5hbWUpcmV0dXJu ITE7dmFyIGU9ITA7cmV0dXJuIHQuZWFjaENoaWxkKChmdW5jdGlvbih0KXtlJiYhQmUodCkm JihlPSExKX0pKSxlfWZ1bmN0aW9uIE5lKHQsZSl7aWYodCBpbnN0YW5jZW9mIHhlJiZlLmlu ZGV4T2YodC5uYW1lKT49MClyZXR1cm4hMTt2YXIgcj0hMDtyZXR1cm4gdC5lYWNoQ2hpbGQo KGZ1bmN0aW9uKHQpe3ImJiFOZSh0LGUpJiYocj0hMSl9KSkscn1SZS5wYXJzZT1mdW5jdGlv bih0LGUpe2lmKDIhPT10Lmxlbmd0aClyZXR1cm4gZS5lcnJvcigiJ3dpdGhpbicgZXhwcmVz c2lvbiByZXF1aXJlcyBleGFjdGx5IG9uZSBhcmd1bWVudCwgYnV0IGZvdW5kICIrKHQubGVu Z3RoLTEpKyIgaW5zdGVhZC4iKTtpZihvZSh0WzFdKSl7dmFyIHI9dFsxXTtpZigiRmVhdHVy ZUNvbGxlY3Rpb24iPT09ci50eXBlKWZvcih2YXIgbj0wO248ci5mZWF0dXJlcy5sZW5ndGg7 KytuKXt2YXIgaT1yLmZlYXR1cmVzW25dLmdlb21ldHJ5LnR5cGU7aWYoIlBvbHlnb24iPT09 aXx8Ik11bHRpUG9seWdvbiI9PT1pKXJldHVybiBuZXcgUmUocixyLmZlYXR1cmVzW25dLmdl b21ldHJ5KX1lbHNlIGlmKCJGZWF0dXJlIj09PXIudHlwZSl7dmFyIGE9ci5nZW9tZXRyeS50 eXBlO2lmKCJQb2x5Z29uIj09PWF8fCJNdWx0aVBvbHlnb24iPT09YSlyZXR1cm4gbmV3IFJl KHIsci5nZW9tZXRyeSl9ZWxzZSBpZigiUG9seWdvbiI9PT1yLnR5cGV8fCJNdWx0aVBvbHln b24iPT09ci50eXBlKXJldHVybiBuZXcgUmUocixyKX1yZXR1cm4gZS5lcnJvcigiJ3dpdGhp bicgZXhwcmVzc2lvbiByZXF1aXJlcyB2YWxpZCBnZW9qc29uIG9iamVjdCB0aGF0IGNvbnRh aW5zIHBvbHlnb24gZ2VvbWV0cnkgdHlwZS4iKX0sUmUucHJvdG90eXBlLmV2YWx1YXRlPWZ1 bmN0aW9uKHQpe2lmKG51bGwhPXQuZ2VvbWV0cnkoKSYmbnVsbCE9dC5jYW5vbmljYWxJRCgp KXtpZigiUG9pbnQiPT09dC5nZW9tZXRyeVR5cGUoKSlyZXR1cm4gZnVuY3Rpb24odCxlKXt2 YXIgcj1bMS8wLDEvMCwtMS8wLC0xLzBdLG49WzEvMCwxLzAsLTEvMCwtMS8wXSxpPXQuY2Fu b25pY2FsSUQoKTtpZigiUG9seWdvbiI9PT1lLnR5cGUpe3ZhciBhPVBlKGUuY29vcmRpbmF0 ZXMsbixpKSxvPXplKHQuZ2VvbWV0cnkoKSxyLG4saSk7aWYoIXdlKHIsbikpcmV0dXJuITE7 Zm9yKHZhciBzPTAsbD1vO3M8bC5sZW5ndGg7cys9MSl7aWYoIUFlKGxbc10sYSkpcmV0dXJu ITF9fWlmKCJNdWx0aVBvbHlnb24iPT09ZS50eXBlKXt2YXIgYz1JZShlLmNvb3JkaW5hdGVz LG4saSksdT16ZSh0Lmdlb21ldHJ5KCkscixuLGkpO2lmKCF3ZShyLG4pKXJldHVybiExO2Zv cih2YXIgZj0wLGg9dTtmPGgubGVuZ3RoO2YrPTEpe2lmKCFNZShoW2ZdLGMpKXJldHVybiEx fX1yZXR1cm4hMH0odCx0aGlzLmdlb21ldHJpZXMpO2lmKCJMaW5lU3RyaW5nIj09PXQuZ2Vv bWV0cnlUeXBlKCkpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIHI9WzEvMCwxLzAsLTEvMCwt MS8wXSxuPVsxLzAsMS8wLC0xLzAsLTEvMF0saT10LmNhbm9uaWNhbElEKCk7aWYoIlBvbHln b24iPT09ZS50eXBlKXt2YXIgYT1QZShlLmNvb3JkaW5hdGVzLG4saSksbz1EZSh0Lmdlb21l dHJ5KCkscixuLGkpO2lmKCF3ZShyLG4pKXJldHVybiExO2Zvcih2YXIgcz0wLGw9bztzPGwu bGVuZ3RoO3MrPTEpe2lmKCFMZShsW3NdLGEpKXJldHVybiExfX1pZigiTXVsdGlQb2x5Z29u Ij09PWUudHlwZSl7dmFyIGM9SWUoZS5jb29yZGluYXRlcyxuLGkpLHU9RGUodC5nZW9tZXRy eSgpLHIsbixpKTtpZighd2UocixuKSlyZXR1cm4hMTtmb3IodmFyIGY9MCxoPXU7ZjxoLmxl bmd0aDtmKz0xKXtpZighQ2UoaFtmXSxjKSlyZXR1cm4hMX19cmV0dXJuITB9KHQsdGhpcy5n ZW9tZXRyaWVzKX1yZXR1cm4hMX0sUmUucHJvdG90eXBlLmVhY2hDaGlsZD1mdW5jdGlvbigp e30sUmUucHJvdG90eXBlLm91dHB1dERlZmluZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sUmUu cHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe3JldHVyblsid2l0aGluIix0aGlzLmdl b2pzb25dfTt2YXIgamU9ZnVuY3Rpb24odCxlKXt0aGlzLnR5cGU9ZS50eXBlLHRoaXMubmFt ZT10LHRoaXMuYm91bmRFeHByZXNzaW9uPWV9O2plLnBhcnNlPWZ1bmN0aW9uKHQsZSl7aWYo MiE9PXQubGVuZ3RofHwic3RyaW5nIiE9dHlwZW9mIHRbMV0pcmV0dXJuIGUuZXJyb3IoIid2 YXInIGV4cHJlc3Npb24gcmVxdWlyZXMgZXhhY3RseSBvbmUgc3RyaW5nIGxpdGVyYWwgYXJn dW1lbnQuIik7dmFyIHI9dFsxXTtyZXR1cm4gZS5zY29wZS5oYXMocik/bmV3IGplKHIsZS5z Y29wZS5nZXQocikpOmUuZXJyb3IoJ1Vua25vd24gdmFyaWFibGUgIicrcisnIi4gTWFrZSBz dXJlICInK3IrJyIgaGFzIGJlZW4gYm91bmQgaW4gYW4gZW5jbG9zaW5nICJsZXQiIGV4cHJl c3Npb24gYmVmb3JlIHVzaW5nIGl0LicsMSl9LGplLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5j dGlvbih0KXtyZXR1cm4gdGhpcy5ib3VuZEV4cHJlc3Npb24uZXZhbHVhdGUodCl9LGplLnBy b3RvdHlwZS5lYWNoQ2hpbGQ9ZnVuY3Rpb24oKXt9LGplLnByb3RvdHlwZS5vdXRwdXREZWZp bmVkPWZ1bmN0aW9uKCl7cmV0dXJuITF9LGplLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rp b24oKXtyZXR1cm5bInZhciIsdGhpcy5uYW1lXX07dmFyIFVlPWZ1bmN0aW9uKHQsZSxyLG4s aSl7dm9pZCAwPT09ZSYmKGU9W10pLHZvaWQgMD09PW4mJihuPW5ldyBSdCksdm9pZCAwPT09 aSYmKGk9W10pLHRoaXMucmVnaXN0cnk9dCx0aGlzLnBhdGg9ZSx0aGlzLmtleT1lLm1hcCgo ZnVuY3Rpb24odCl7cmV0dXJuIlsiK3QrIl0ifSkpLmpvaW4oIiIpLHRoaXMuc2NvcGU9bix0 aGlzLmVycm9ycz1pLHRoaXMuZXhwZWN0ZWRUeXBlPXJ9O2Z1bmN0aW9uIFZlKHQsZSl7Zm9y KHZhciByLG4saT10Lmxlbmd0aC0xLGE9MCxvPWkscz0wO2E8PW87KWlmKHI9dFtzPU1hdGgu Zmxvb3IoKGErbykvMildLG49dFtzKzFdLHI8PWUpe2lmKHM9PT1pfHxlPG4pcmV0dXJuIHM7 YT1zKzF9ZWxzZXtpZighKHI+ZSkpdGhyb3cgbmV3IHVlKCJJbnB1dCBpcyBub3QgYSBudW1i ZXIuIik7bz1zLTF9cmV0dXJuIDB9VWUucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKHQsZSxy LG4saSl7cmV0dXJuIHZvaWQgMD09PWkmJihpPXt9KSxlP3RoaXMuY29uY2F0KGUscixuKS5f cGFyc2UodCxpKTp0aGlzLl9wYXJzZSh0LGkpfSxVZS5wcm90b3R5cGUuX3BhcnNlPWZ1bmN0 aW9uKHQsZSl7ZnVuY3Rpb24gcih0LGUscil7cmV0dXJuImFzc2VydCI9PT1yP25ldyBoZShl LFt0XSk6ImNvZXJjZSI9PT1yP25ldyBnZShlLFt0XSk6dH1pZihudWxsIT09dCYmInN0cmlu ZyIhPXR5cGVvZiB0JiYiYm9vbGVhbiIhPXR5cGVvZiB0JiYibnVtYmVyIiE9dHlwZW9mIHR8 fCh0PVsibGl0ZXJhbCIsdF0pLEFycmF5LmlzQXJyYXkodCkpe2lmKDA9PT10Lmxlbmd0aCly ZXR1cm4gdGhpcy5lcnJvcignRXhwZWN0ZWQgYW4gYXJyYXkgd2l0aCBhdCBsZWFzdCBvbmUg ZWxlbWVudC4gSWYgeW91IHdhbnRlZCBhIGxpdGVyYWwgYXJyYXksIHVzZSBbImxpdGVyYWwi LCBbXV0uJyk7dmFyIG49dFswXTtpZigic3RyaW5nIiE9dHlwZW9mIG4pcmV0dXJuIHRoaXMu ZXJyb3IoIkV4cHJlc3Npb24gbmFtZSBtdXN0IGJlIGEgc3RyaW5nLCBidXQgZm91bmQgIit0 eXBlb2YgbisnIGluc3RlYWQuIElmIHlvdSB3YW50ZWQgYSBsaXRlcmFsIGFycmF5LCB1c2Ug WyJsaXRlcmFsIiwgWy4uLl1dLicsMCksbnVsbDt2YXIgaT10aGlzLnJlZ2lzdHJ5W25dO2lm KGkpe3ZhciBhPWkucGFyc2UodCx0aGlzKTtpZighYSlyZXR1cm4gbnVsbDtpZih0aGlzLmV4 cGVjdGVkVHlwZSl7dmFyIG89dGhpcy5leHBlY3RlZFR5cGUscz1hLnR5cGU7aWYoInN0cmlu ZyIhPT1vLmtpbmQmJiJudW1iZXIiIT09by5raW5kJiYiYm9vbGVhbiIhPT1vLmtpbmQmJiJv YmplY3QiIT09by5raW5kJiYiYXJyYXkiIT09by5raW5kfHwidmFsdWUiIT09cy5raW5kKWlm KCJjb2xvciIhPT1vLmtpbmQmJiJmb3JtYXR0ZWQiIT09by5raW5kJiYicmVzb2x2ZWRJbWFn ZSIhPT1vLmtpbmR8fCJ2YWx1ZSIhPT1zLmtpbmQmJiJzdHJpbmciIT09cy5raW5kKXtpZih0 aGlzLmNoZWNrU3VidHlwZShvLHMpKXJldHVybiBudWxsfWVsc2UgYT1yKGEsbyxlLnR5cGVB bm5vdGF0aW9ufHwiY29lcmNlIik7ZWxzZSBhPXIoYSxvLGUudHlwZUFubm90YXRpb258fCJh c3NlcnQiKX1pZighKGEgaW5zdGFuY2VvZiBjZSkmJiJyZXNvbHZlZEltYWdlIiE9PWEudHlw ZS5raW5kJiZmdW5jdGlvbiB0KGUpe2lmKGUgaW5zdGFuY2VvZiBqZSlyZXR1cm4gdChlLmJv dW5kRXhwcmVzc2lvbik7aWYoZSBpbnN0YW5jZW9mIHhlJiYiZXJyb3IiPT09ZS5uYW1lKXJl dHVybiExO2lmKGUgaW5zdGFuY2VvZiBiZSlyZXR1cm4hMTtpZihlIGluc3RhbmNlb2YgUmUp cmV0dXJuITE7dmFyIHI9ZSBpbnN0YW5jZW9mIGdlfHxlIGluc3RhbmNlb2YgaGUsbj0hMDtp ZihlLmVhY2hDaGlsZCgoZnVuY3Rpb24oZSl7bj1yP24mJnQoZSk6biYmZSBpbnN0YW5jZW9m IGNlfSkpLCFuKXJldHVybiExO3JldHVybiBGZShlKSYmTmUoZSxbInpvb20iLCJoZWF0bWFw LWRlbnNpdHkiLCJsaW5lLXByb2dyZXNzIiwiYWNjdW11bGF0ZWQiLCJpcy1zdXBwb3J0ZWQt c2NyaXB0Il0pfShhKSl7dmFyIGw9bmV3IHllO3RyeXthPW5ldyBjZShhLnR5cGUsYS5ldmFs dWF0ZShsKSl9Y2F0Y2godCl7cmV0dXJuIHRoaXMuZXJyb3IodC5tZXNzYWdlKSxudWxsfX1y ZXR1cm4gYX1yZXR1cm4gdGhpcy5lcnJvcignVW5rbm93biBleHByZXNzaW9uICInK24rJyIu IElmIHlvdSB3YW50ZWQgYSBsaXRlcmFsIGFycmF5LCB1c2UgWyJsaXRlcmFsIiwgWy4uLl1d LicsMCl9cmV0dXJuIHZvaWQgMD09PXQ/dGhpcy5lcnJvcigiJ3VuZGVmaW5lZCcgdmFsdWUg aW52YWxpZC4gVXNlIG51bGwgaW5zdGVhZC4iKToib2JqZWN0Ij09dHlwZW9mIHQ/dGhpcy5l cnJvcignQmFyZSBvYmplY3RzIGludmFsaWQuIFVzZSBbImxpdGVyYWwiLCB7Li4ufV0gaW5z dGVhZC4nKTp0aGlzLmVycm9yKCJFeHBlY3RlZCBhbiBhcnJheSwgYnV0IGZvdW5kICIrdHlw ZW9mIHQrIiBpbnN0ZWFkLiIpfSxVZS5wcm90b3R5cGUuY29uY2F0PWZ1bmN0aW9uKHQsZSxy KXt2YXIgbj0ibnVtYmVyIj09dHlwZW9mIHQ/dGhpcy5wYXRoLmNvbmNhdCh0KTp0aGlzLnBh dGgsaT1yP3RoaXMuc2NvcGUuY29uY2F0KHIpOnRoaXMuc2NvcGU7cmV0dXJuIG5ldyBVZSh0 aGlzLnJlZ2lzdHJ5LG4sZXx8bnVsbCxpLHRoaXMuZXJyb3JzKX0sVWUucHJvdG90eXBlLmVy cm9yPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxyPWFyZ3VtZW50cy5sZW5ndGgtMTtyLS0g PjA7KWVbcl09YXJndW1lbnRzW3IrMV07dmFyIG49IiIrdGhpcy5rZXkrZS5tYXAoKGZ1bmN0 aW9uKHQpe3JldHVybiJbIit0KyJdIn0pKS5qb2luKCIiKTt0aGlzLmVycm9ycy5wdXNoKG5l dyBEdChuLHQpKX0sVWUucHJvdG90eXBlLmNoZWNrU3VidHlwZT1mdW5jdGlvbih0LGUpe3Zh ciByPUp0KHQsZSk7cmV0dXJuIHImJnRoaXMuZXJyb3Iocikscn07dmFyIEhlPWZ1bmN0aW9u KHQsZSxyKXt0aGlzLnR5cGU9dCx0aGlzLmlucHV0PWUsdGhpcy5sYWJlbHM9W10sdGhpcy5v dXRwdXRzPVtdO2Zvcih2YXIgbj0wLGk9cjtuPGkubGVuZ3RoO24rPTEpe3ZhciBhPWlbbl0s bz1hWzBdLHM9YVsxXTt0aGlzLmxhYmVscy5wdXNoKG8pLHRoaXMub3V0cHV0cy5wdXNoKHMp fX07ZnVuY3Rpb24gcWUodCxlLHIpe3JldHVybiB0KigxLXIpK2Uqcn1IZS5wYXJzZT1mdW5j dGlvbih0LGUpe2lmKHQubGVuZ3RoLTE8NClyZXR1cm4gZS5lcnJvcigiRXhwZWN0ZWQgYXQg bGVhc3QgNCBhcmd1bWVudHMsIGJ1dCBmb3VuZCBvbmx5ICIrKHQubGVuZ3RoLTEpKyIuIik7 aWYoKHQubGVuZ3RoLTEpJTIhPTApcmV0dXJuIGUuZXJyb3IoIkV4cGVjdGVkIGFuIGV2ZW4g bnVtYmVyIG9mIGFyZ3VtZW50cy4iKTt2YXIgcj1lLnBhcnNlKHRbMV0sMSxCdCk7aWYoIXIp cmV0dXJuIG51bGw7dmFyIG49W10saT1udWxsO2UuZXhwZWN0ZWRUeXBlJiYidmFsdWUiIT09 ZS5leHBlY3RlZFR5cGUua2luZCYmKGk9ZS5leHBlY3RlZFR5cGUpO2Zvcih2YXIgYT0xO2E8 dC5sZW5ndGg7YSs9Mil7dmFyIG89MT09PWE/LTEvMDp0W2FdLHM9dFthKzFdLGw9YSxjPWEr MTtpZigibnVtYmVyIiE9dHlwZW9mIG8pcmV0dXJuIGUuZXJyb3IoJ0lucHV0L291dHB1dCBw YWlycyBmb3IgInN0ZXAiIGV4cHJlc3Npb25zIG11c3QgYmUgZGVmaW5lZCB1c2luZyBsaXRl cmFsIG51bWVyaWMgdmFsdWVzIChub3QgY29tcHV0ZWQgZXhwcmVzc2lvbnMpIGZvciB0aGUg aW5wdXQgdmFsdWVzLicsbCk7aWYobi5sZW5ndGgmJm5bbi5sZW5ndGgtMV1bMF0+PW8pcmV0 dXJuIGUuZXJyb3IoJ0lucHV0L291dHB1dCBwYWlycyBmb3IgInN0ZXAiIGV4cHJlc3Npb25z IG11c3QgYmUgYXJyYW5nZWQgd2l0aCBpbnB1dCB2YWx1ZXMgaW4gc3RyaWN0bHkgYXNjZW5k aW5nIG9yZGVyLicsbCk7dmFyIHU9ZS5wYXJzZShzLGMsaSk7aWYoIXUpcmV0dXJuIG51bGw7 aT1pfHx1LnR5cGUsbi5wdXNoKFtvLHVdKX1yZXR1cm4gbmV3IEhlKGkscixuKX0sSGUucHJv dG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubGFiZWxzLHI9dGhpcy5v dXRwdXRzO2lmKDE9PT1lLmxlbmd0aClyZXR1cm4gclswXS5ldmFsdWF0ZSh0KTt2YXIgbj10 aGlzLmlucHV0LmV2YWx1YXRlKHQpO2lmKG48PWVbMF0pcmV0dXJuIHJbMF0uZXZhbHVhdGUo dCk7dmFyIGk9ZS5sZW5ndGg7cmV0dXJuIG4+PWVbaS0xXT9yW2ktMV0uZXZhbHVhdGUodCk6 cltWZShlLG4pXS5ldmFsdWF0ZSh0KX0sSGUucHJvdG90eXBlLmVhY2hDaGlsZD1mdW5jdGlv bih0KXt0KHRoaXMuaW5wdXQpO2Zvcih2YXIgZT0wLHI9dGhpcy5vdXRwdXRzO2U8ci5sZW5n dGg7ZSs9MSl7dChyW2VdKX19LEhlLnByb3RvdHlwZS5vdXRwdXREZWZpbmVkPWZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMub3V0cHV0cy5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQub3V0 cHV0RGVmaW5lZCgpfSkpfSxIZS5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7Zm9y KHZhciB0PVsic3RlcCIsdGhpcy5pbnB1dC5zZXJpYWxpemUoKV0sZT0wO2U8dGhpcy5sYWJl bHMubGVuZ3RoO2UrKyllPjAmJnQucHVzaCh0aGlzLmxhYmVsc1tlXSksdC5wdXNoKHRoaXMu b3V0cHV0c1tlXS5zZXJpYWxpemUoKSk7cmV0dXJuIHR9O3ZhciBHZT1PYmplY3QuZnJlZXpl KHtfX3Byb3RvX186bnVsbCxudW1iZXI6cWUsY29sb3I6ZnVuY3Rpb24odCxlLHIpe3JldHVy biBuZXcgdGUocWUodC5yLGUucixyKSxxZSh0LmcsZS5nLHIpLHFlKHQuYixlLmIscikscWUo dC5hLGUuYSxyKSl9LGFycmF5OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdC5tYXAoKGZ1bmN0 aW9uKHQsbil7cmV0dXJuIHFlKHQsZVtuXSxyKX0pKX19KSxZZT02LzI5LFdlPTMqWWUqWWUs WGU9TWF0aC5QSS8xODAsWmU9MTgwL01hdGguUEk7ZnVuY3Rpb24gSmUodCl7cmV0dXJuIHQ+ LjAwODg1NjQ1MTY3OTAzNTYzMT9NYXRoLnBvdyh0LDEvMyk6dC9XZSs0LzI5fWZ1bmN0aW9u IEtlKHQpe3JldHVybiB0PlllP3QqdCp0OldlKih0LTQvMjkpfWZ1bmN0aW9uIFFlKHQpe3Jl dHVybiAyNTUqKHQ8PS4wMDMxMzA4PzEyLjkyKnQ6MS4wNTUqTWF0aC5wb3codCwxLzIuNCkt LjA1NSl9ZnVuY3Rpb24gJGUodCl7cmV0dXJuKHQvPTI1NSk8PS4wNDA0NT90LzEyLjkyOk1h dGgucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCl9ZnVuY3Rpb24gdHIodCl7dmFyIGU9JGUodC5y KSxyPSRlKHQuZyksbj0kZSh0LmIpLGk9SmUoKC40MTI0NTY0KmUrLjM1NzU3NjEqcisuMTgw NDM3NSpuKS8uOTUwNDcpLGE9SmUoKC4yMTI2NzI5KmUrLjcxNTE1MjIqcisuMDcyMTc1Km4p LzEpO3JldHVybntsOjExNiphLTE2LGE6NTAwKihpLWEpLGI6MjAwKihhLUplKCguMDE5MzMz OSplKy4xMTkxOTIqcisuOTUwMzA0MSpuKS8xLjA4ODgzKSksYWxwaGE6dC5hfX1mdW5jdGlv biBlcih0KXt2YXIgZT0odC5sKzE2KS8xMTYscj1pc05hTih0LmEpP2U6ZSt0LmEvNTAwLG49 aXNOYU4odC5iKT9lOmUtdC5iLzIwMDtyZXR1cm4gZT0xKktlKGUpLHI9Ljk1MDQ3KktlKHIp LG49MS4wODg4MypLZShuKSxuZXcgdGUoUWUoMy4yNDA0NTQyKnItMS41MzcxMzg1KmUtLjQ5 ODUzMTQqbiksUWUoLS45NjkyNjYqcisxLjg3NjAxMDgqZSsuMDQxNTU2Km4pLFFlKC4wNTU2 NDM0KnItLjIwNDAyNTkqZSsxLjA1NzIyNTIqbiksdC5hbHBoYSl9ZnVuY3Rpb24gcnIodCxl LHIpe3ZhciBuPWUtdDtyZXR1cm4gdCtyKihuPjE4MHx8bjwtMTgwP24tMzYwKk1hdGgucm91 bmQobi8zNjApOm4pfXZhciBucj17Zm9yd2FyZDp0cixyZXZlcnNlOmVyLGludGVycG9sYXRl OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm57bDpxZSh0LmwsZS5sLHIpLGE6cWUodC5hLGUuYSxy KSxiOnFlKHQuYixlLmIsciksYWxwaGE6cWUodC5hbHBoYSxlLmFscGhhLHIpfX19LGlyPXtm b3J3YXJkOmZ1bmN0aW9uKHQpe3ZhciBlPXRyKHQpLHI9ZS5sLG49ZS5hLGk9ZS5iLGE9TWF0 aC5hdGFuMihpLG4pKlplO3JldHVybntoOmE8MD9hKzM2MDphLGM6TWF0aC5zcXJ0KG4qbitp KmkpLGw6cixhbHBoYTp0LmF9fSxyZXZlcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaCpYZSxy PXQuYztyZXR1cm4gZXIoe2w6dC5sLGE6TWF0aC5jb3MoZSkqcixiOk1hdGguc2luKGUpKnIs YWxwaGE6dC5hbHBoYX0pfSxpbnRlcnBvbGF0ZTpmdW5jdGlvbih0LGUscil7cmV0dXJue2g6 cnIodC5oLGUuaCxyKSxjOnFlKHQuYyxlLmMsciksbDpxZSh0LmwsZS5sLHIpLGFscGhhOnFl KHQuYWxwaGEsZS5hbHBoYSxyKX19fSxhcj1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVs bCxsYWI6bnIsaGNsOmlyfSksb3I9ZnVuY3Rpb24odCxlLHIsbixpKXt0aGlzLnR5cGU9dCx0 aGlzLm9wZXJhdG9yPWUsdGhpcy5pbnRlcnBvbGF0aW9uPXIsdGhpcy5pbnB1dD1uLHRoaXMu bGFiZWxzPVtdLHRoaXMub3V0cHV0cz1bXTtmb3IodmFyIGE9MCxvPWk7YTxvLmxlbmd0aDth Kz0xKXt2YXIgcz1vW2FdLGw9c1swXSxjPXNbMV07dGhpcy5sYWJlbHMucHVzaChsKSx0aGlz Lm91dHB1dHMucHVzaChjKX19O2Z1bmN0aW9uIHNyKHQsZSxyLG4pe3ZhciBpPW4tcixhPXQt cjtyZXR1cm4gMD09PWk/MDoxPT09ZT9hL2k6KE1hdGgucG93KGUsYSktMSkvKE1hdGgucG93 KGUsaSktMSl9b3IuaW50ZXJwb2xhdGlvbkZhY3Rvcj1mdW5jdGlvbih0LGUsbixpKXt2YXIg YT0wO2lmKCJleHBvbmVudGlhbCI9PT10Lm5hbWUpYT1zcihlLHQuYmFzZSxuLGkpO2Vsc2Ug aWYoImxpbmVhciI9PT10Lm5hbWUpYT1zcihlLDEsbixpKTtlbHNlIGlmKCJjdWJpYy1iZXpp ZXIiPT09dC5uYW1lKXt2YXIgbz10LmNvbnRyb2xQb2ludHM7YT1uZXcgcihvWzBdLG9bMV0s b1syXSxvWzNdKS5zb2x2ZShzcihlLDEsbixpKSl9cmV0dXJuIGF9LG9yLnBhcnNlPWZ1bmN0 aW9uKHQsZSl7dmFyIHI9dFswXSxuPXRbMV0saT10WzJdLGE9dC5zbGljZSgzKTtpZighQXJy YXkuaXNBcnJheShuKXx8MD09PW4ubGVuZ3RoKXJldHVybiBlLmVycm9yKCJFeHBlY3RlZCBh biBpbnRlcnBvbGF0aW9uIHR5cGUgZXhwcmVzc2lvbi4iLDEpO2lmKCJsaW5lYXIiPT09blsw XSluPXtuYW1lOiJsaW5lYXIifTtlbHNlIGlmKCJleHBvbmVudGlhbCI9PT1uWzBdKXt2YXIg bz1uWzFdO2lmKCJudW1iZXIiIT10eXBlb2YgbylyZXR1cm4gZS5lcnJvcigiRXhwb25lbnRp YWwgaW50ZXJwb2xhdGlvbiByZXF1aXJlcyBhIG51bWVyaWMgYmFzZS4iLDEsMSk7bj17bmFt ZToiZXhwb25lbnRpYWwiLGJhc2U6b319ZWxzZXtpZigiY3ViaWMtYmV6aWVyIiE9PW5bMF0p cmV0dXJuIGUuZXJyb3IoIlVua25vd24gaW50ZXJwb2xhdGlvbiB0eXBlICIrU3RyaW5nKG5b MF0pLDEsMCk7dmFyIHM9bi5zbGljZSgxKTtpZig0IT09cy5sZW5ndGh8fHMuc29tZSgoZnVu Y3Rpb24odCl7cmV0dXJuIm51bWJlciIhPXR5cGVvZiB0fHx0PDB8fHQ+MX0pKSlyZXR1cm4g ZS5lcnJvcigiQ3ViaWMgYmV6aWVyIGludGVycG9sYXRpb24gcmVxdWlyZXMgZm91ciBudW1l cmljIGFyZ3VtZW50cyB3aXRoIHZhbHVlcyBiZXR3ZWVuIDAgYW5kIDEuIiwxKTtuPXtuYW1l OiJjdWJpYy1iZXppZXIiLGNvbnRyb2xQb2ludHM6c319aWYodC5sZW5ndGgtMTw0KXJldHVy biBlLmVycm9yKCJFeHBlY3RlZCBhdCBsZWFzdCA0IGFyZ3VtZW50cywgYnV0IGZvdW5kIG9u bHkgIisodC5sZW5ndGgtMSkrIi4iKTtpZigodC5sZW5ndGgtMSklMiE9MClyZXR1cm4gZS5l cnJvcigiRXhwZWN0ZWQgYW4gZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzLiIpO2lmKCEoaT1l LnBhcnNlKGksMixCdCkpKXJldHVybiBudWxsO3ZhciBsPVtdLGM9bnVsbDsiaW50ZXJwb2xh dGUtaGNsIj09PXJ8fCJpbnRlcnBvbGF0ZS1sYWIiPT09cj9jPVV0OmUuZXhwZWN0ZWRUeXBl JiYidmFsdWUiIT09ZS5leHBlY3RlZFR5cGUua2luZCYmKGM9ZS5leHBlY3RlZFR5cGUpO2Zv cih2YXIgdT0wO3U8YS5sZW5ndGg7dSs9Mil7dmFyIGY9YVt1XSxoPWFbdSsxXSxwPXUrMyxk PXUrNDtpZigibnVtYmVyIiE9dHlwZW9mIGYpcmV0dXJuIGUuZXJyb3IoJ0lucHV0L291dHB1 dCBwYWlycyBmb3IgImludGVycG9sYXRlIiBleHByZXNzaW9ucyBtdXN0IGJlIGRlZmluZWQg dXNpbmcgbGl0ZXJhbCBudW1lcmljIHZhbHVlcyAobm90IGNvbXB1dGVkIGV4cHJlc3Npb25z KSBmb3IgdGhlIGlucHV0IHZhbHVlcy4nLHApO2lmKGwubGVuZ3RoJiZsW2wubGVuZ3RoLTFd WzBdPj1mKXJldHVybiBlLmVycm9yKCdJbnB1dC9vdXRwdXQgcGFpcnMgZm9yICJpbnRlcnBv bGF0ZSIgZXhwcmVzc2lvbnMgbXVzdCBiZSBhcnJhbmdlZCB3aXRoIGlucHV0IHZhbHVlcyBp biBzdHJpY3RseSBhc2NlbmRpbmcgb3JkZXIuJyxwKTt2YXIgbT1lLnBhcnNlKGgsZCxjKTtp ZighbSlyZXR1cm4gbnVsbDtjPWN8fG0udHlwZSxsLnB1c2goW2YsbV0pfXJldHVybiJudW1i ZXIiPT09Yy5raW5kfHwiY29sb3IiPT09Yy5raW5kfHwiYXJyYXkiPT09Yy5raW5kJiYibnVt YmVyIj09PWMuaXRlbVR5cGUua2luZCYmIm51bWJlciI9PXR5cGVvZiBjLk4/bmV3IG9yKGMs cixuLGksbCk6ZS5lcnJvcigiVHlwZSAiK1h0KGMpKyIgaXMgbm90IGludGVycG9sYXRhYmxl LiIpfSxvci5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5sYWJl bHMscj10aGlzLm91dHB1dHM7aWYoMT09PWUubGVuZ3RoKXJldHVybiByWzBdLmV2YWx1YXRl KHQpO3ZhciBuPXRoaXMuaW5wdXQuZXZhbHVhdGUodCk7aWYobjw9ZVswXSlyZXR1cm4gclsw XS5ldmFsdWF0ZSh0KTt2YXIgaT1lLmxlbmd0aDtpZihuPj1lW2ktMV0pcmV0dXJuIHJbaS0x XS5ldmFsdWF0ZSh0KTt2YXIgYT1WZShlLG4pLG89ZVthXSxzPWVbYSsxXSxsPW9yLmludGVy cG9sYXRpb25GYWN0b3IodGhpcy5pbnRlcnBvbGF0aW9uLG4sbyxzKSxjPXJbYV0uZXZhbHVh dGUodCksdT1yW2ErMV0uZXZhbHVhdGUodCk7cmV0dXJuImludGVycG9sYXRlIj09PXRoaXMu b3BlcmF0b3I/R2VbdGhpcy50eXBlLmtpbmQudG9Mb3dlckNhc2UoKV0oYyx1LGwpOiJpbnRl cnBvbGF0ZS1oY2wiPT09dGhpcy5vcGVyYXRvcj9pci5yZXZlcnNlKGlyLmludGVycG9sYXRl KGlyLmZvcndhcmQoYyksaXIuZm9yd2FyZCh1KSxsKSk6bnIucmV2ZXJzZShuci5pbnRlcnBv bGF0ZShuci5mb3J3YXJkKGMpLG5yLmZvcndhcmQodSksbCkpfSxvci5wcm90b3R5cGUuZWFj aENoaWxkPWZ1bmN0aW9uKHQpe3QodGhpcy5pbnB1dCk7Zm9yKHZhciBlPTAscj10aGlzLm91 dHB1dHM7ZTxyLmxlbmd0aDtlKz0xKXt0KHJbZV0pfX0sb3IucHJvdG90eXBlLm91dHB1dERl ZmluZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vdXRwdXRzLmV2ZXJ5KChmdW5jdGlvbih0 KXtyZXR1cm4gdC5vdXRwdXREZWZpbmVkKCl9KSl9LG9yLnByb3RvdHlwZS5zZXJpYWxpemU9 ZnVuY3Rpb24oKXt2YXIgdDt0PSJsaW5lYXIiPT09dGhpcy5pbnRlcnBvbGF0aW9uLm5hbWU/ WyJsaW5lYXIiXToiZXhwb25lbnRpYWwiPT09dGhpcy5pbnRlcnBvbGF0aW9uLm5hbWU/MT09 PXRoaXMuaW50ZXJwb2xhdGlvbi5iYXNlP1sibGluZWFyIl06WyJleHBvbmVudGlhbCIsdGhp cy5pbnRlcnBvbGF0aW9uLmJhc2VdOlsiY3ViaWMtYmV6aWVyIl0uY29uY2F0KHRoaXMuaW50 ZXJwb2xhdGlvbi5jb250cm9sUG9pbnRzKTtmb3IodmFyIGU9W3RoaXMub3BlcmF0b3IsdCx0 aGlzLmlucHV0LnNlcmlhbGl6ZSgpXSxyPTA7cjx0aGlzLmxhYmVscy5sZW5ndGg7cisrKWUu cHVzaCh0aGlzLmxhYmVsc1tyXSx0aGlzLm91dHB1dHNbcl0uc2VyaWFsaXplKCkpO3JldHVy biBlfTt2YXIgbHI9ZnVuY3Rpb24odCxlKXt0aGlzLnR5cGU9dCx0aGlzLmFyZ3M9ZX07bHIu cGFyc2U9ZnVuY3Rpb24odCxlKXtpZih0Lmxlbmd0aDwyKXJldHVybiBlLmVycm9yKCJFeHBl Y3RlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQuIik7dmFyIHI9bnVsbCxuPWUuZXhwZWN0 ZWRUeXBlO24mJiJ2YWx1ZSIhPT1uLmtpbmQmJihyPW4pO2Zvcih2YXIgaT1bXSxhPTAsbz10 LnNsaWNlKDEpO2E8by5sZW5ndGg7YSs9MSl7dmFyIHM9b1thXSxsPWUucGFyc2UocywxK2ku bGVuZ3RoLHIsdm9pZCAwLHt0eXBlQW5ub3RhdGlvbjoib21pdCJ9KTtpZighbClyZXR1cm4g bnVsbDtyPXJ8fGwudHlwZSxpLnB1c2gobCl9dmFyIGM9biYmaS5zb21lKChmdW5jdGlvbih0 KXtyZXR1cm4gSnQobix0LnR5cGUpfSkpO3JldHVybiBuZXcgbHIoYz9IdDpyLGkpfSxsci5w cm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9bnVsbCxuPTAsaT0w LGE9dGhpcy5hcmdzO2k8YS5sZW5ndGg7aSs9MSl7aWYobisrLChyPWFbaV0uZXZhbHVhdGUo dCkpJiZyIGluc3RhbmNlb2YgaWUmJiFyLmF2YWlsYWJsZSYmKGV8fChlPXIubmFtZSkscj1u dWxsLG49PT10aGlzLmFyZ3MubGVuZ3RoJiYocj1lKSksbnVsbCE9PXIpYnJlYWt9cmV0dXJu IHJ9LGxyLnByb3RvdHlwZS5lYWNoQ2hpbGQ9ZnVuY3Rpb24odCl7dGhpcy5hcmdzLmZvckVh Y2godCl9LGxyLnByb3RvdHlwZS5vdXRwdXREZWZpbmVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMuYXJncy5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQub3V0cHV0RGVmaW5lZCgpfSkp fSxsci5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7dmFyIHQ9WyJjb2FsZXNjZSJd O3JldHVybiB0aGlzLmVhY2hDaGlsZCgoZnVuY3Rpb24oZSl7dC5wdXNoKGUuc2VyaWFsaXpl KCkpfSkpLHR9O3ZhciBjcj1mdW5jdGlvbih0LGUpe3RoaXMudHlwZT1lLnR5cGUsdGhpcy5i aW5kaW5ncz1bXS5jb25jYXQodCksdGhpcy5yZXN1bHQ9ZX07Y3IucHJvdG90eXBlLmV2YWx1 YXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlc3VsdC5ldmFsdWF0ZSh0KX0sY3IucHJv dG90eXBlLmVhY2hDaGlsZD1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxyPXRoaXMuYmluZGlu Z3M7ZTxyLmxlbmd0aDtlKz0xKXt0KHJbZV1bMV0pfXQodGhpcy5yZXN1bHQpfSxjci5wYXJz ZT1mdW5jdGlvbih0LGUpe2lmKHQubGVuZ3RoPDQpcmV0dXJuIGUuZXJyb3IoIkV4cGVjdGVk IGF0IGxlYXN0IDMgYXJndW1lbnRzLCBidXQgZm91bmQgIisodC5sZW5ndGgtMSkrIiBpbnN0 ZWFkLiIpO2Zvcih2YXIgcj1bXSxuPTE7bjx0Lmxlbmd0aC0xO24rPTIpe3ZhciBpPXRbbl07 aWYoInN0cmluZyIhPXR5cGVvZiBpKXJldHVybiBlLmVycm9yKCJFeHBlY3RlZCBzdHJpbmcs IGJ1dCBmb3VuZCAiK3R5cGVvZiBpKyIgaW5zdGVhZC4iLG4pO2lmKC9bXmEtekEtWjAtOV9d Ly50ZXN0KGkpKXJldHVybiBlLmVycm9yKCJWYXJpYWJsZSBuYW1lcyBtdXN0IGNvbnRhaW4g b25seSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBvciAnXycuIixuKTt2YXIgYT1lLnBhcnNl KHRbbisxXSxuKzEpO2lmKCFhKXJldHVybiBudWxsO3IucHVzaChbaSxhXSl9dmFyIG89ZS5w YXJzZSh0W3QubGVuZ3RoLTFdLHQubGVuZ3RoLTEsZS5leHBlY3RlZFR5cGUscik7cmV0dXJu IG8/bmV3IGNyKHIsbyk6bnVsbH0sY3IucHJvdG90eXBlLm91dHB1dERlZmluZWQ9ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5yZXN1bHQub3V0cHV0RGVmaW5lZCgpfSxjci5wcm90b3R5cGUu c2VyaWFsaXplPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVsibGV0Il0sZT0wLHI9dGhpcy5iaW5k aW5ncztlPHIubGVuZ3RoO2UrPTEpe3ZhciBuPXJbZV0saT1uWzBdLGE9blsxXTt0LnB1c2go aSxhLnNlcmlhbGl6ZSgpKX1yZXR1cm4gdC5wdXNoKHRoaXMucmVzdWx0LnNlcmlhbGl6ZSgp KSx0fTt2YXIgdXI9ZnVuY3Rpb24odCxlLHIpe3RoaXMudHlwZT10LHRoaXMuaW5kZXg9ZSx0 aGlzLmlucHV0PXJ9O3VyLnBhcnNlPWZ1bmN0aW9uKHQsZSl7aWYoMyE9PXQubGVuZ3RoKXJl dHVybiBlLmVycm9yKCJFeHBlY3RlZCAyIGFyZ3VtZW50cywgYnV0IGZvdW5kICIrKHQubGVu Z3RoLTEpKyIgaW5zdGVhZC4iKTt2YXIgcj1lLnBhcnNlKHRbMV0sMSxCdCksbj1lLnBhcnNl KHRbMl0sMixXdChlLmV4cGVjdGVkVHlwZXx8SHQpKTtpZighcnx8IW4pcmV0dXJuIG51bGw7 dmFyIGk9bi50eXBlO3JldHVybiBuZXcgdXIoaS5pdGVtVHlwZSxyLG4pfSx1ci5wcm90b3R5 cGUuZXZhbHVhdGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pbmRleC5ldmFsdWF0ZSh0KSxy PXRoaXMuaW5wdXQuZXZhbHVhdGUodCk7aWYoZTwwKXRocm93IG5ldyB1ZSgiQXJyYXkgaW5k ZXggb3V0IG9mIGJvdW5kczogIitlKyIgPCAwLiIpO2lmKGU+PXIubGVuZ3RoKXRocm93IG5l dyB1ZSgiQXJyYXkgaW5kZXggb3V0IG9mIGJvdW5kczogIitlKyIgPiAiKyhyLmxlbmd0aC0x KSsiLiIpO2lmKGUhPT1NYXRoLmZsb29yKGUpKXRocm93IG5ldyB1ZSgiQXJyYXkgaW5kZXgg bXVzdCBiZSBhbiBpbnRlZ2VyLCBidXQgZm91bmQgIitlKyIgaW5zdGVhZC4iKTtyZXR1cm4g cltlXX0sdXIucHJvdG90eXBlLmVhY2hDaGlsZD1mdW5jdGlvbih0KXt0KHRoaXMuaW5kZXgp LHQodGhpcy5pbnB1dCl9LHVyLnByb3RvdHlwZS5vdXRwdXREZWZpbmVkPWZ1bmN0aW9uKCl7 cmV0dXJuITF9LHVyLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm5bImF0 Iix0aGlzLmluZGV4LnNlcmlhbGl6ZSgpLHRoaXMuaW5wdXQuc2VyaWFsaXplKCldfTt2YXIg ZnI9ZnVuY3Rpb24odCxlKXt0aGlzLnR5cGU9anQsdGhpcy5uZWVkbGU9dCx0aGlzLmhheXN0 YWNrPWV9O2ZyLnBhcnNlPWZ1bmN0aW9uKHQsZSl7aWYoMyE9PXQubGVuZ3RoKXJldHVybiBl LmVycm9yKCJFeHBlY3RlZCAyIGFyZ3VtZW50cywgYnV0IGZvdW5kICIrKHQubGVuZ3RoLTEp KyIgaW5zdGVhZC4iKTt2YXIgcj1lLnBhcnNlKHRbMV0sMSxIdCksbj1lLnBhcnNlKHRbMl0s MixIdCk7cmV0dXJuIHImJm4/S3Qoci50eXBlLFtqdCxOdCxCdCxGdCxIdF0pP25ldyBmcihy LG4pOmUuZXJyb3IoIkV4cGVjdGVkIGZpcnN0IGFyZ3VtZW50IHRvIGJlIG9mIHR5cGUgYm9v bGVhbiwgc3RyaW5nLCBudW1iZXIgb3IgbnVsbCwgYnV0IGZvdW5kICIrWHQoci50eXBlKSsi IGluc3RlYWQiKTpudWxsfSxmci5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24odCl7dmFy IGU9dGhpcy5uZWVkbGUuZXZhbHVhdGUodCkscj10aGlzLmhheXN0YWNrLmV2YWx1YXRlKHQp O2lmKCFyKXJldHVybiExO2lmKCFRdChlLFsiYm9vbGVhbiIsInN0cmluZyIsIm51bWJlciIs Im51bGwiXSkpdGhyb3cgbmV3IHVlKCJFeHBlY3RlZCBmaXJzdCBhcmd1bWVudCB0byBiZSBv ZiB0eXBlIGJvb2xlYW4sIHN0cmluZywgbnVtYmVyIG9yIG51bGwsIGJ1dCBmb3VuZCAiK1h0 KHNlKGUpKSsiIGluc3RlYWQuIik7aWYoIVF0KHIsWyJzdHJpbmciLCJhcnJheSJdKSl0aHJv dyBuZXcgdWUoIkV4cGVjdGVkIHNlY29uZCBhcmd1bWVudCB0byBiZSBvZiB0eXBlIGFycmF5 IG9yIHN0cmluZywgYnV0IGZvdW5kICIrWHQoc2UocikpKyIgaW5zdGVhZC4iKTtyZXR1cm4g ci5pbmRleE9mKGUpPj0wfSxmci5wcm90b3R5cGUuZWFjaENoaWxkPWZ1bmN0aW9uKHQpe3Qo dGhpcy5uZWVkbGUpLHQodGhpcy5oYXlzdGFjayl9LGZyLnByb3RvdHlwZS5vdXRwdXREZWZp bmVkPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGZyLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rp b24oKXtyZXR1cm5bImluIix0aGlzLm5lZWRsZS5zZXJpYWxpemUoKSx0aGlzLmhheXN0YWNr LnNlcmlhbGl6ZSgpXX07dmFyIGhyPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLnR5cGU9QnQsdGhp cy5uZWVkbGU9dCx0aGlzLmhheXN0YWNrPWUsdGhpcy5mcm9tSW5kZXg9cn07aHIucGFyc2U9 ZnVuY3Rpb24odCxlKXtpZih0Lmxlbmd0aDw9Mnx8dC5sZW5ndGg+PTUpcmV0dXJuIGUuZXJy b3IoIkV4cGVjdGVkIDMgb3IgNCBhcmd1bWVudHMsIGJ1dCBmb3VuZCAiKyh0Lmxlbmd0aC0x KSsiIGluc3RlYWQuIik7dmFyIHI9ZS5wYXJzZSh0WzFdLDEsSHQpLG49ZS5wYXJzZSh0WzJd LDIsSHQpO2lmKCFyfHwhbilyZXR1cm4gbnVsbDtpZighS3Qoci50eXBlLFtqdCxOdCxCdCxG dCxIdF0pKXJldHVybiBlLmVycm9yKCJFeHBlY3RlZCBmaXJzdCBhcmd1bWVudCB0byBiZSBv ZiB0eXBlIGJvb2xlYW4sIHN0cmluZywgbnVtYmVyIG9yIG51bGwsIGJ1dCBmb3VuZCAiK1h0 KHIudHlwZSkrIiBpbnN0ZWFkIik7aWYoND09PXQubGVuZ3RoKXt2YXIgaT1lLnBhcnNlKHRb M10sMyxCdCk7cmV0dXJuIGk/bmV3IGhyKHIsbixpKTpudWxsfXJldHVybiBuZXcgaHIocixu KX0saHIucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubmVlZGxl LmV2YWx1YXRlKHQpLHI9dGhpcy5oYXlzdGFjay5ldmFsdWF0ZSh0KTtpZighUXQoZSxbImJv b2xlYW4iLCJzdHJpbmciLCJudW1iZXIiLCJudWxsIl0pKXRocm93IG5ldyB1ZSgiRXhwZWN0 ZWQgZmlyc3QgYXJndW1lbnQgdG8gYmUgb2YgdHlwZSBib29sZWFuLCBzdHJpbmcsIG51bWJl ciBvciBudWxsLCBidXQgZm91bmQgIitYdChzZShlKSkrIiBpbnN0ZWFkLiIpO2lmKCFRdChy LFsic3RyaW5nIiwiYXJyYXkiXSkpdGhyb3cgbmV3IHVlKCJFeHBlY3RlZCBzZWNvbmQgYXJn dW1lbnQgdG8gYmUgb2YgdHlwZSBhcnJheSBvciBzdHJpbmcsIGJ1dCBmb3VuZCAiK1h0KHNl KHIpKSsiIGluc3RlYWQuIik7aWYodGhpcy5mcm9tSW5kZXgpe3ZhciBuPXRoaXMuZnJvbUlu ZGV4LmV2YWx1YXRlKHQpO3JldHVybiByLmluZGV4T2YoZSxuKX1yZXR1cm4gci5pbmRleE9m KGUpfSxoci5wcm90b3R5cGUuZWFjaENoaWxkPWZ1bmN0aW9uKHQpe3QodGhpcy5uZWVkbGUp LHQodGhpcy5oYXlzdGFjayksdGhpcy5mcm9tSW5kZXgmJnQodGhpcy5mcm9tSW5kZXgpfSxo ci5wcm90b3R5cGUub3V0cHV0RGVmaW5lZD1mdW5jdGlvbigpe3JldHVybiExfSxoci5wcm90 b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7aWYobnVsbCE9dGhpcy5mcm9tSW5kZXgmJnZv aWQgMCE9PXRoaXMuZnJvbUluZGV4KXt2YXIgdD10aGlzLmZyb21JbmRleC5zZXJpYWxpemUo KTtyZXR1cm5bImluZGV4LW9mIix0aGlzLm5lZWRsZS5zZXJpYWxpemUoKSx0aGlzLmhheXN0 YWNrLnNlcmlhbGl6ZSgpLHRdfXJldHVyblsiaW5kZXgtb2YiLHRoaXMubmVlZGxlLnNlcmlh bGl6ZSgpLHRoaXMuaGF5c3RhY2suc2VyaWFsaXplKCldfTt2YXIgcHI9ZnVuY3Rpb24odCxl LHIsbixpLGEpe3RoaXMuaW5wdXRUeXBlPXQsdGhpcy50eXBlPWUsdGhpcy5pbnB1dD1yLHRo aXMuY2FzZXM9bix0aGlzLm91dHB1dHM9aSx0aGlzLm90aGVyd2lzZT1hfTtwci5wYXJzZT1m dW5jdGlvbih0LGUpe2lmKHQubGVuZ3RoPDUpcmV0dXJuIGUuZXJyb3IoIkV4cGVjdGVkIGF0 IGxlYXN0IDQgYXJndW1lbnRzLCBidXQgZm91bmQgb25seSAiKyh0Lmxlbmd0aC0xKSsiLiIp O2lmKHQubGVuZ3RoJTIhPTEpcmV0dXJuIGUuZXJyb3IoIkV4cGVjdGVkIGFuIGV2ZW4gbnVt YmVyIG9mIGFyZ3VtZW50cy4iKTt2YXIgcixuO2UuZXhwZWN0ZWRUeXBlJiYidmFsdWUiIT09 ZS5leHBlY3RlZFR5cGUua2luZCYmKG49ZS5leHBlY3RlZFR5cGUpO2Zvcih2YXIgaT17fSxh PVtdLG89MjtvPHQubGVuZ3RoLTE7bys9Mil7dmFyIHM9dFtvXSxsPXRbbysxXTtBcnJheS5p c0FycmF5KHMpfHwocz1bc10pO3ZhciBjPWUuY29uY2F0KG8pO2lmKDA9PT1zLmxlbmd0aCly ZXR1cm4gYy5lcnJvcigiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGJyYW5jaCBsYWJlbC4iKTtm b3IodmFyIHU9MCxmPXM7dTxmLmxlbmd0aDt1Kz0xKXt2YXIgaD1mW3VdO2lmKCJudW1iZXIi IT10eXBlb2YgaCYmInN0cmluZyIhPXR5cGVvZiBoKXJldHVybiBjLmVycm9yKCJCcmFuY2gg bGFiZWxzIG11c3QgYmUgbnVtYmVycyBvciBzdHJpbmdzLiIpO2lmKCJudW1iZXIiPT10eXBl b2YgaCYmTWF0aC5hYnMoaCk+TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpcmV0dXJuIGMuZXJy b3IoIkJyYW5jaCBsYWJlbHMgbXVzdCBiZSBpbnRlZ2VycyBubyBsYXJnZXIgdGhhbiAiK051 bWJlci5NQVhfU0FGRV9JTlRFR0VSKyIuIik7aWYoIm51bWJlciI9PXR5cGVvZiBoJiZNYXRo LmZsb29yKGgpIT09aClyZXR1cm4gYy5lcnJvcigiTnVtZXJpYyBicmFuY2ggbGFiZWxzIG11 c3QgYmUgaW50ZWdlciB2YWx1ZXMuIik7aWYocil7aWYoYy5jaGVja1N1YnR5cGUocixzZSho KSkpcmV0dXJuIG51bGx9ZWxzZSByPXNlKGgpO2lmKHZvaWQgMCE9PWlbU3RyaW5nKGgpXSly ZXR1cm4gYy5lcnJvcigiQnJhbmNoIGxhYmVscyBtdXN0IGJlIHVuaXF1ZS4iKTtpW1N0cmlu ZyhoKV09YS5sZW5ndGh9dmFyIHA9ZS5wYXJzZShsLG8sbik7aWYoIXApcmV0dXJuIG51bGw7 bj1ufHxwLnR5cGUsYS5wdXNoKHApfXZhciBkPWUucGFyc2UodFsxXSwxLEh0KTtpZighZCly ZXR1cm4gbnVsbDt2YXIgbT1lLnBhcnNlKHRbdC5sZW5ndGgtMV0sdC5sZW5ndGgtMSxuKTty ZXR1cm4gbT8idmFsdWUiIT09ZC50eXBlLmtpbmQmJmUuY29uY2F0KDEpLmNoZWNrU3VidHlw ZShyLGQudHlwZSk/bnVsbDpuZXcgcHIocixuLGQsaSxhLG0pOm51bGx9LHByLnByb3RvdHlw ZS5ldmFsdWF0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmlucHV0LmV2YWx1YXRlKHQpO3Jl dHVybihzZShlKT09PXRoaXMuaW5wdXRUeXBlJiZ0aGlzLm91dHB1dHNbdGhpcy5jYXNlc1tl XV18fHRoaXMub3RoZXJ3aXNlKS5ldmFsdWF0ZSh0KX0scHIucHJvdG90eXBlLmVhY2hDaGls ZD1mdW5jdGlvbih0KXt0KHRoaXMuaW5wdXQpLHRoaXMub3V0cHV0cy5mb3JFYWNoKHQpLHQo dGhpcy5vdGhlcndpc2UpfSxwci5wcm90b3R5cGUub3V0cHV0RGVmaW5lZD1mdW5jdGlvbigp e3JldHVybiB0aGlzLm91dHB1dHMuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm91dHB1 dERlZmluZWQoKX0pKSYmdGhpcy5vdGhlcndpc2Uub3V0cHV0RGVmaW5lZCgpfSxwci5wcm90 b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMsZT1bIm1hdGNoIix0 aGlzLmlucHV0LnNlcmlhbGl6ZSgpXSxyPVtdLG49e30saT0wLGE9T2JqZWN0LmtleXModGhp cy5jYXNlcykuc29ydCgpO2k8YS5sZW5ndGg7aSs9MSl7dmFyIG89YVtpXTt2b2lkIDA9PT0o Zj1uW3RoaXMuY2FzZXNbb11dKT8oblt0aGlzLmNhc2VzW29dXT1yLmxlbmd0aCxyLnB1c2go W3RoaXMuY2FzZXNbb10sW29dXSkpOnJbZl1bMV0ucHVzaChvKX1mb3IodmFyIHM9ZnVuY3Rp b24oZSl7cmV0dXJuIm51bWJlciI9PT10LmlucHV0VHlwZS5raW5kP051bWJlcihlKTplfSxs PTAsYz1yO2w8Yy5sZW5ndGg7bCs9MSl7dmFyIHU9Y1tsXSxmPXVbMF0saD11WzFdOzE9PT1o Lmxlbmd0aD9lLnB1c2gocyhoWzBdKSk6ZS5wdXNoKGgubWFwKHMpKSxlLnB1c2godGhpcy5v dXRwdXRzW291dHB1dEluZGV4JDFdLnNlcmlhbGl6ZSgpKX1yZXR1cm4gZS5wdXNoKHRoaXMu b3RoZXJ3aXNlLnNlcmlhbGl6ZSgpKSxlfTt2YXIgZHI9ZnVuY3Rpb24odCxlLHIpe3RoaXMu dHlwZT10LHRoaXMuYnJhbmNoZXM9ZSx0aGlzLm90aGVyd2lzZT1yfTtkci5wYXJzZT1mdW5j dGlvbih0LGUpe2lmKHQubGVuZ3RoPDQpcmV0dXJuIGUuZXJyb3IoIkV4cGVjdGVkIGF0IGxl YXN0IDMgYXJndW1lbnRzLCBidXQgZm91bmQgb25seSAiKyh0Lmxlbmd0aC0xKSsiLiIpO2lm KHQubGVuZ3RoJTIhPTApcmV0dXJuIGUuZXJyb3IoIkV4cGVjdGVkIGFuIG9kZCBudW1iZXIg b2YgYXJndW1lbnRzLiIpO3ZhciByO2UuZXhwZWN0ZWRUeXBlJiYidmFsdWUiIT09ZS5leHBl Y3RlZFR5cGUua2luZCYmKHI9ZS5leHBlY3RlZFR5cGUpO2Zvcih2YXIgbj1bXSxpPTE7aTx0 Lmxlbmd0aC0xO2krPTIpe3ZhciBhPWUucGFyc2UodFtpXSxpLGp0KTtpZighYSlyZXR1cm4g bnVsbDt2YXIgbz1lLnBhcnNlKHRbaSsxXSxpKzEscik7aWYoIW8pcmV0dXJuIG51bGw7bi5w dXNoKFthLG9dKSxyPXJ8fG8udHlwZX12YXIgcz1lLnBhcnNlKHRbdC5sZW5ndGgtMV0sdC5s ZW5ndGgtMSxyKTtyZXR1cm4gcz9uZXcgZHIocixuLHMpOm51bGx9LGRyLnByb3RvdHlwZS5l dmFsdWF0ZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxyPXRoaXMuYnJhbmNoZXM7ZTxyLmxl bmd0aDtlKz0xKXt2YXIgbj1yW2VdLGk9blswXSxhPW5bMV07aWYoaS5ldmFsdWF0ZSh0KSly ZXR1cm4gYS5ldmFsdWF0ZSh0KX1yZXR1cm4gdGhpcy5vdGhlcndpc2UuZXZhbHVhdGUodCl9 LGRyLnByb3RvdHlwZS5lYWNoQ2hpbGQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj10aGlz LmJyYW5jaGVzO2U8ci5sZW5ndGg7ZSs9MSl7dmFyIG49cltlXSxpPW5bMF0sYT1uWzFdO3Qo aSksdChhKX10KHRoaXMub3RoZXJ3aXNlKX0sZHIucHJvdG90eXBlLm91dHB1dERlZmluZWQ9 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5icmFuY2hlcy5ldmVyeSgoZnVuY3Rpb24odCl7dFsw XTtyZXR1cm4gdFsxXS5vdXRwdXREZWZpbmVkKCl9KSkmJnRoaXMub3RoZXJ3aXNlLm91dHB1 dERlZmluZWQoKX0sZHIucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe3ZhciB0PVsi Y2FzZSJdO3JldHVybiB0aGlzLmVhY2hDaGlsZCgoZnVuY3Rpb24oZSl7dC5wdXNoKGUuc2Vy aWFsaXplKCkpfSkpLHR9O3ZhciBtcj1mdW5jdGlvbih0LGUscixuKXt0aGlzLnR5cGU9dCx0 aGlzLmlucHV0PWUsdGhpcy5iZWdpbkluZGV4PXIsdGhpcy5lbmRJbmRleD1ufTtmdW5jdGlv biBncih0LGUpe3JldHVybiI9PSI9PT10fHwiIT0iPT09dD8iYm9vbGVhbiI9PT1lLmtpbmR8 fCJzdHJpbmciPT09ZS5raW5kfHwibnVtYmVyIj09PWUua2luZHx8Im51bGwiPT09ZS5raW5k fHwidmFsdWUiPT09ZS5raW5kOiJzdHJpbmciPT09ZS5raW5kfHwibnVtYmVyIj09PWUua2lu ZHx8InZhbHVlIj09PWUua2luZH1mdW5jdGlvbiB2cih0LGUscixuKXtyZXR1cm4gMD09PW4u Y29tcGFyZShlLHIpfWZ1bmN0aW9uIHlyKHQsZSxyKXt2YXIgbj0iPT0iIT09dCYmIiE9IiE9 PXQ7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gaSh0LGUscil7dGhpcy50eXBlPWp0LHRo aXMubGhzPXQsdGhpcy5yaHM9ZSx0aGlzLmNvbGxhdG9yPXIsdGhpcy5oYXNVbnR5cGVkQXJn dW1lbnQ9InZhbHVlIj09PXQudHlwZS5raW5kfHwidmFsdWUiPT09ZS50eXBlLmtpbmR9cmV0 dXJuIGkucGFyc2U9ZnVuY3Rpb24odCxlKXtpZigzIT09dC5sZW5ndGgmJjQhPT10Lmxlbmd0 aClyZXR1cm4gZS5lcnJvcigiRXhwZWN0ZWQgdHdvIG9yIHRocmVlIGFyZ3VtZW50cy4iKTt2 YXIgcj10WzBdLGE9ZS5wYXJzZSh0WzFdLDEsSHQpO2lmKCFhKXJldHVybiBudWxsO2lmKCFn cihyLGEudHlwZSkpcmV0dXJuIGUuY29uY2F0KDEpLmVycm9yKCciJytyKyJcIiBjb21wYXJp c29ucyBhcmUgbm90IHN1cHBvcnRlZCBmb3IgdHlwZSAnIitYdChhLnR5cGUpKyInLiIpO3Zh ciBvPWUucGFyc2UodFsyXSwyLEh0KTtpZighbylyZXR1cm4gbnVsbDtpZighZ3IocixvLnR5 cGUpKXJldHVybiBlLmNvbmNhdCgyKS5lcnJvcignIicrcisiXCIgY29tcGFyaXNvbnMgYXJl IG5vdCBzdXBwb3J0ZWQgZm9yIHR5cGUgJyIrWHQoby50eXBlKSsiJy4iKTtpZihhLnR5cGUu a2luZCE9PW8udHlwZS5raW5kJiYidmFsdWUiIT09YS50eXBlLmtpbmQmJiJ2YWx1ZSIhPT1v LnR5cGUua2luZClyZXR1cm4gZS5lcnJvcigiQ2Fubm90IGNvbXBhcmUgdHlwZXMgJyIrWHQo YS50eXBlKSsiJyBhbmQgJyIrWHQoby50eXBlKSsiJy4iKTtuJiYoInZhbHVlIj09PWEudHlw ZS5raW5kJiYidmFsdWUiIT09by50eXBlLmtpbmQ/YT1uZXcgaGUoby50eXBlLFthXSk6InZh bHVlIiE9PWEudHlwZS5raW5kJiYidmFsdWUiPT09by50eXBlLmtpbmQmJihvPW5ldyBoZShh LnR5cGUsW29dKSkpO3ZhciBzPW51bGw7aWYoND09PXQubGVuZ3RoKXtpZigic3RyaW5nIiE9 PWEudHlwZS5raW5kJiYic3RyaW5nIiE9PW8udHlwZS5raW5kJiYidmFsdWUiIT09YS50eXBl LmtpbmQmJiJ2YWx1ZSIhPT1vLnR5cGUua2luZClyZXR1cm4gZS5lcnJvcigiQ2Fubm90IHVz ZSBjb2xsYXRvciB0byBjb21wYXJlIG5vbi1zdHJpbmcgdHlwZXMuIik7aWYoIShzPWUucGFy c2UodFszXSwzLHF0KSkpcmV0dXJuIG51bGx9cmV0dXJuIG5ldyBpKGEsbyxzKX0saS5wcm90 b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24oaSl7dmFyIGE9dGhpcy5saHMuZXZhbHVhdGUoaSks bz10aGlzLnJocy5ldmFsdWF0ZShpKTtpZihuJiZ0aGlzLmhhc1VudHlwZWRBcmd1bWVudCl7 dmFyIHM9c2UoYSksbD1zZShvKTtpZihzLmtpbmQhPT1sLmtpbmR8fCJzdHJpbmciIT09cy5r aW5kJiYibnVtYmVyIiE9PXMua2luZCl0aHJvdyBuZXcgdWUoJ0V4cGVjdGVkIGFyZ3VtZW50 cyBmb3IgIicrdCsnIiB0byBiZSAoc3RyaW5nLCBzdHJpbmcpIG9yIChudW1iZXIsIG51bWJl ciksIGJ1dCBmb3VuZCAoJytzLmtpbmQrIiwgIitsLmtpbmQrIikgaW5zdGVhZC4iKX1pZih0 aGlzLmNvbGxhdG9yJiYhbiYmdGhpcy5oYXNVbnR5cGVkQXJndW1lbnQpe3ZhciBjPXNlKGEp LHU9c2Uobyk7aWYoInN0cmluZyIhPT1jLmtpbmR8fCJzdHJpbmciIT09dS5raW5kKXJldHVy biBlKGksYSxvKX1yZXR1cm4gdGhpcy5jb2xsYXRvcj9yKGksYSxvLHRoaXMuY29sbGF0b3Iu ZXZhbHVhdGUoaSkpOmUoaSxhLG8pfSxpLnByb3RvdHlwZS5lYWNoQ2hpbGQ9ZnVuY3Rpb24o dCl7dCh0aGlzLmxocyksdCh0aGlzLnJocyksdGhpcy5jb2xsYXRvciYmdCh0aGlzLmNvbGxh dG9yKX0saS5wcm90b3R5cGUub3V0cHV0RGVmaW5lZD1mdW5jdGlvbigpe3JldHVybiEwfSxp LnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXt2YXIgZT1bdF07cmV0dXJuIHRoaXMu ZWFjaENoaWxkKChmdW5jdGlvbih0KXtlLnB1c2godC5zZXJpYWxpemUoKSl9KSksZX0saX0o KX1tci5wYXJzZT1mdW5jdGlvbih0LGUpe2lmKHQubGVuZ3RoPD0yfHx0Lmxlbmd0aD49NSly ZXR1cm4gZS5lcnJvcigiRXhwZWN0ZWQgMyBvciA0IGFyZ3VtZW50cywgYnV0IGZvdW5kICIr KHQubGVuZ3RoLTEpKyIgaW5zdGVhZC4iKTt2YXIgcj1lLnBhcnNlKHRbMV0sMSxIdCksbj1l LnBhcnNlKHRbMl0sMixCdCk7aWYoIXJ8fCFuKXJldHVybiBudWxsO2lmKCFLdChyLnR5cGUs W1d0KEh0KSxOdCxIdF0pKXJldHVybiBlLmVycm9yKCJFeHBlY3RlZCBmaXJzdCBhcmd1bWVu dCB0byBiZSBvZiB0eXBlIGFycmF5IG9yIHN0cmluZywgYnV0IGZvdW5kICIrWHQoci50eXBl KSsiIGluc3RlYWQiKTtpZig0PT09dC5sZW5ndGgpe3ZhciBpPWUucGFyc2UodFszXSwzLEJ0 KTtyZXR1cm4gaT9uZXcgbXIoci50eXBlLHIsbixpKTpudWxsfXJldHVybiBuZXcgbXIoci50 eXBlLHIsbil9LG1yLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlz LmlucHV0LmV2YWx1YXRlKHQpLHI9dGhpcy5iZWdpbkluZGV4LmV2YWx1YXRlKHQpO2lmKCFR dChlLFsic3RyaW5nIiwiYXJyYXkiXSkpdGhyb3cgbmV3IHVlKCJFeHBlY3RlZCBmaXJzdCBh cmd1bWVudCB0byBiZSBvZiB0eXBlIGFycmF5IG9yIHN0cmluZywgYnV0IGZvdW5kICIrWHQo c2UoZSkpKyIgaW5zdGVhZC4iKTtpZih0aGlzLmVuZEluZGV4KXt2YXIgbj10aGlzLmVuZElu ZGV4LmV2YWx1YXRlKHQpO3JldHVybiBlLnNsaWNlKHIsbil9cmV0dXJuIGUuc2xpY2Uocil9 LG1yLnByb3RvdHlwZS5lYWNoQ2hpbGQ9ZnVuY3Rpb24odCl7dCh0aGlzLmlucHV0KSx0KHRo aXMuYmVnaW5JbmRleCksdGhpcy5lbmRJbmRleCYmdCh0aGlzLmVuZEluZGV4KX0sbXIucHJv dG90eXBlLm91dHB1dERlZmluZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sbXIucHJvdG90eXBl LnNlcmlhbGl6ZT1mdW5jdGlvbigpe2lmKG51bGwhPXRoaXMuZW5kSW5kZXgmJnZvaWQgMCE9 PXRoaXMuZW5kSW5kZXgpe3ZhciB0PXRoaXMuZW5kSW5kZXguc2VyaWFsaXplKCk7cmV0dXJu WyJzbGljZSIsdGhpcy5pbnB1dC5zZXJpYWxpemUoKSx0aGlzLmJlZ2luSW5kZXguc2VyaWFs aXplKCksdF19cmV0dXJuWyJzbGljZSIsdGhpcy5pbnB1dC5zZXJpYWxpemUoKSx0aGlzLmJl Z2luSW5kZXguc2VyaWFsaXplKCldfTt2YXIgeHI9eXIoIj09IiwoZnVuY3Rpb24odCxlLHIp e3JldHVybiBlPT09cn0pLHZyKSxicj15cigiIT0iLChmdW5jdGlvbih0LGUscil7cmV0dXJu IGUhPT1yfSksKGZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiF2cigwLGUscixuKX0pKSxfcj15 cigiPCIsKGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZTxyfSksKGZ1bmN0aW9uKHQsZSxyLG4p e3JldHVybiBuLmNvbXBhcmUoZSxyKTwwfSkpLHdyPXlyKCI+IiwoZnVuY3Rpb24odCxlLHIp e3JldHVybiBlPnJ9KSwoZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIG4uY29tcGFyZShlLHIp PjB9KSksVHI9eXIoIjw9IiwoZnVuY3Rpb24odCxlLHIpe3JldHVybiBlPD1yfSksKGZ1bmN0 aW9uKHQsZSxyLG4pe3JldHVybiBuLmNvbXBhcmUoZSxyKTw9MH0pKSxrcj15cigiPj0iLChm dW5jdGlvbih0LGUscil7cmV0dXJuIGU+PXJ9KSwoZnVuY3Rpb24odCxlLHIsbil7cmV0dXJu IG4uY29tcGFyZShlLHIpPj0wfSkpLEFyPWZ1bmN0aW9uKHQsZSxyLG4saSl7dGhpcy50eXBl PU50LHRoaXMubnVtYmVyPXQsdGhpcy5sb2NhbGU9ZSx0aGlzLmN1cnJlbmN5PXIsdGhpcy5t aW5GcmFjdGlvbkRpZ2l0cz1uLHRoaXMubWF4RnJhY3Rpb25EaWdpdHM9aX07QXIucGFyc2U9 ZnVuY3Rpb24odCxlKXtpZigzIT09dC5sZW5ndGgpcmV0dXJuIGUuZXJyb3IoIkV4cGVjdGVk IHR3byBhcmd1bWVudHMuIik7dmFyIHI9ZS5wYXJzZSh0WzFdLDEsQnQpO2lmKCFyKXJldHVy biBudWxsO3ZhciBuPXRbMl07aWYoIm9iamVjdCIhPXR5cGVvZiBufHxBcnJheS5pc0FycmF5 KG4pKXJldHVybiBlLmVycm9yKCJOdW1iZXJGb3JtYXQgb3B0aW9ucyBhcmd1bWVudCBtdXN0 IGJlIGFuIG9iamVjdC4iKTt2YXIgaT1udWxsO2lmKG4ubG9jYWxlJiYhKGk9ZS5wYXJzZShu LmxvY2FsZSwxLE50KSkpcmV0dXJuIG51bGw7dmFyIGE9bnVsbDtpZihuLmN1cnJlbmN5JiYh KGE9ZS5wYXJzZShuLmN1cnJlbmN5LDEsTnQpKSlyZXR1cm4gbnVsbDt2YXIgbz1udWxsO2lm KG5bIm1pbi1mcmFjdGlvbi1kaWdpdHMiXSYmIShvPWUucGFyc2UoblsibWluLWZyYWN0aW9u LWRpZ2l0cyJdLDEsQnQpKSlyZXR1cm4gbnVsbDt2YXIgcz1udWxsO3JldHVybiBuWyJtYXgt ZnJhY3Rpb24tZGlnaXRzIl0mJiEocz1lLnBhcnNlKG5bIm1heC1mcmFjdGlvbi1kaWdpdHMi XSwxLEJ0KSk/bnVsbDpuZXcgQXIocixpLGEsbyxzKX0sQXIucHJvdG90eXBlLmV2YWx1YXRl PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5sb2NhbGU/ dGhpcy5sb2NhbGUuZXZhbHVhdGUodCk6W10se3N0eWxlOnRoaXMuY3VycmVuY3k/ImN1cnJl bmN5IjoiZGVjaW1hbCIsY3VycmVuY3k6dGhpcy5jdXJyZW5jeT90aGlzLmN1cnJlbmN5LmV2 YWx1YXRlKHQpOnZvaWQgMCxtaW5pbXVtRnJhY3Rpb25EaWdpdHM6dGhpcy5taW5GcmFjdGlv bkRpZ2l0cz90aGlzLm1pbkZyYWN0aW9uRGlnaXRzLmV2YWx1YXRlKHQpOnZvaWQgMCxtYXhp bXVtRnJhY3Rpb25EaWdpdHM6dGhpcy5tYXhGcmFjdGlvbkRpZ2l0cz90aGlzLm1heEZyYWN0 aW9uRGlnaXRzLmV2YWx1YXRlKHQpOnZvaWQgMH0pLmZvcm1hdCh0aGlzLm51bWJlci5ldmFs dWF0ZSh0KSl9LEFyLnByb3RvdHlwZS5lYWNoQ2hpbGQ9ZnVuY3Rpb24odCl7dCh0aGlzLm51 bWJlciksdGhpcy5sb2NhbGUmJnQodGhpcy5sb2NhbGUpLHRoaXMuY3VycmVuY3kmJnQodGhp cy5jdXJyZW5jeSksdGhpcy5taW5GcmFjdGlvbkRpZ2l0cyYmdCh0aGlzLm1pbkZyYWN0aW9u RGlnaXRzKSx0aGlzLm1heEZyYWN0aW9uRGlnaXRzJiZ0KHRoaXMubWF4RnJhY3Rpb25EaWdp dHMpfSxBci5wcm90b3R5cGUub3V0cHV0RGVmaW5lZD1mdW5jdGlvbigpe3JldHVybiExfSxB ci5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7dmFyIHQ9e307cmV0dXJuIHRoaXMu bG9jYWxlJiYodC5sb2NhbGU9dGhpcy5sb2NhbGUuc2VyaWFsaXplKCkpLHRoaXMuY3VycmVu Y3kmJih0LmN1cnJlbmN5PXRoaXMuY3VycmVuY3kuc2VyaWFsaXplKCkpLHRoaXMubWluRnJh Y3Rpb25EaWdpdHMmJih0WyJtaW4tZnJhY3Rpb24tZGlnaXRzIl09dGhpcy5taW5GcmFjdGlv bkRpZ2l0cy5zZXJpYWxpemUoKSksdGhpcy5tYXhGcmFjdGlvbkRpZ2l0cyYmKHRbIm1heC1m cmFjdGlvbi1kaWdpdHMiXT10aGlzLm1heEZyYWN0aW9uRGlnaXRzLnNlcmlhbGl6ZSgpKSxb Im51bWJlci1mb3JtYXQiLHRoaXMubnVtYmVyLnNlcmlhbGl6ZSgpLHRdfTt2YXIgTXI9ZnVu Y3Rpb24odCl7dGhpcy50eXBlPUJ0LHRoaXMuaW5wdXQ9dH07TXIucGFyc2U9ZnVuY3Rpb24o dCxlKXtpZigyIT09dC5sZW5ndGgpcmV0dXJuIGUuZXJyb3IoIkV4cGVjdGVkIDEgYXJndW1l bnQsIGJ1dCBmb3VuZCAiKyh0Lmxlbmd0aC0xKSsiIGluc3RlYWQuIik7dmFyIHI9ZS5wYXJz ZSh0WzFdLDEpO3JldHVybiByPyJhcnJheSIhPT1yLnR5cGUua2luZCYmInN0cmluZyIhPT1y LnR5cGUua2luZCYmInZhbHVlIiE9PXIudHlwZS5raW5kP2UuZXJyb3IoIkV4cGVjdGVkIGFy Z3VtZW50IG9mIHR5cGUgc3RyaW5nIG9yIGFycmF5LCBidXQgZm91bmQgIitYdChyLnR5cGUp KyIgaW5zdGVhZC4iKTpuZXcgTXIocik6bnVsbH0sTXIucHJvdG90eXBlLmV2YWx1YXRlPWZ1 bmN0aW9uKHQpe3ZhciBlPXRoaXMuaW5wdXQuZXZhbHVhdGUodCk7aWYoInN0cmluZyI9PXR5 cGVvZiBlKXJldHVybiBlLmxlbmd0aDtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlLmxl bmd0aDt0aHJvdyBuZXcgdWUoIkV4cGVjdGVkIHZhbHVlIHRvIGJlIG9mIHR5cGUgc3RyaW5n IG9yIGFycmF5LCBidXQgZm91bmQgIitYdChzZShlKSkrIiBpbnN0ZWFkLiIpfSxNci5wcm90 b3R5cGUuZWFjaENoaWxkPWZ1bmN0aW9uKHQpe3QodGhpcy5pbnB1dCl9LE1yLnByb3RvdHlw ZS5vdXRwdXREZWZpbmVkPWZ1bmN0aW9uKCl7cmV0dXJuITF9LE1yLnByb3RvdHlwZS5zZXJp YWxpemU9ZnVuY3Rpb24oKXt2YXIgdD1bImxlbmd0aCJdO3JldHVybiB0aGlzLmVhY2hDaGls ZCgoZnVuY3Rpb24oZSl7dC5wdXNoKGUuc2VyaWFsaXplKCkpfSkpLHR9O3ZhciBTcj17Ij09 Ijp4ciwiIT0iOmJyLCI+Ijp3ciwiPCI6X3IsIj49IjprciwiPD0iOlRyLGFycmF5OmhlLGF0 OnVyLGJvb2xlYW46aGUsY2FzZTpkcixjb2FsZXNjZTpscixjb2xsYXRvcjpiZSxmb3JtYXQ6 cGUsaW1hZ2U6ZGUsaW46ZnIsImluZGV4LW9mIjpocixpbnRlcnBvbGF0ZTpvciwiaW50ZXJw b2xhdGUtaGNsIjpvciwiaW50ZXJwb2xhdGUtbGFiIjpvcixsZW5ndGg6TXIsbGV0OmNyLGxp dGVyYWw6Y2UsbWF0Y2g6cHIsbnVtYmVyOmhlLCJudW1iZXItZm9ybWF0IjpBcixvYmplY3Q6 aGUsc2xpY2U6bXIsc3RlcDpIZSxzdHJpbmc6aGUsInRvLWJvb2xlYW4iOmdlLCJ0by1jb2xv ciI6Z2UsInRvLW51bWJlciI6Z2UsInRvLXN0cmluZyI6Z2UsdmFyOmplLHdpdGhpbjpSZX07 ZnVuY3Rpb24gRXIodCxlKXt2YXIgcj1lWzBdLG49ZVsxXSxpPWVbMl0sYT1lWzNdO3I9ci5l dmFsdWF0ZSh0KSxuPW4uZXZhbHVhdGUodCksaT1pLmV2YWx1YXRlKHQpO3ZhciBvPWE/YS5l dmFsdWF0ZSh0KToxLHM9YWUocixuLGksbyk7aWYocyl0aHJvdyBuZXcgdWUocyk7cmV0dXJu IG5ldyB0ZShyLzI1NSpvLG4vMjU1Km8saS8yNTUqbyxvKX1mdW5jdGlvbiBMcih0LGUpe3Jl dHVybiB0IGluIGV9ZnVuY3Rpb24gQ3IodCxlKXt2YXIgcj1lW3RdO3JldHVybiB2b2lkIDA9 PT1yP251bGw6cn1mdW5jdGlvbiBQcih0KXtyZXR1cm57dHlwZTp0fX1mdW5jdGlvbiBJcih0 KXtyZXR1cm57cmVzdWx0OiJzdWNjZXNzIix2YWx1ZTp0fX1mdW5jdGlvbiBPcih0KXtyZXR1 cm57cmVzdWx0OiJlcnJvciIsdmFsdWU6dH19ZnVuY3Rpb24genIodCl7cmV0dXJuImRhdGEt ZHJpdmVuIj09PXRbInByb3BlcnR5LXR5cGUiXXx8ImNyb3NzLWZhZGVkLWRhdGEtZHJpdmVu Ij09PXRbInByb3BlcnR5LXR5cGUiXX1mdW5jdGlvbiBEcih0KXtyZXR1cm4hIXQuZXhwcmVz c2lvbiYmdC5leHByZXNzaW9uLnBhcmFtZXRlcnMuaW5kZXhPZigiem9vbSIpPi0xfWZ1bmN0 aW9uIFJyKHQpe3JldHVybiEhdC5leHByZXNzaW9uJiZ0LmV4cHJlc3Npb24uaW50ZXJwb2xh dGVkfWZ1bmN0aW9uIEZyKHQpe3JldHVybiB0IGluc3RhbmNlb2YgTnVtYmVyPyJudW1iZXIi OnQgaW5zdGFuY2VvZiBTdHJpbmc/InN0cmluZyI6dCBpbnN0YW5jZW9mIEJvb2xlYW4/ImJv b2xlYW4iOkFycmF5LmlzQXJyYXkodCk/ImFycmF5IjpudWxsPT09dD8ibnVsbCI6dHlwZW9m IHR9ZnVuY3Rpb24gQnIodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dCYm IUFycmF5LmlzQXJyYXkodCl9ZnVuY3Rpb24gTnIodCl7cmV0dXJuIHR9ZnVuY3Rpb24ganIo dCxlLHIpe3JldHVybiB2b2lkIDAhPT10P3Q6dm9pZCAwIT09ZT9lOnZvaWQgMCE9PXI/cjp2 b2lkIDB9ZnVuY3Rpb24gVXIodCxlLHIsbixpKXtyZXR1cm4ganIodHlwZW9mIHI9PT1pP25b cl06dm9pZCAwLHQuZGVmYXVsdCxlLmRlZmF1bHQpfWZ1bmN0aW9uIFZyKHQsZSxyKXtpZigi bnVtYmVyIiE9PUZyKHIpKXJldHVybiBqcih0LmRlZmF1bHQsZS5kZWZhdWx0KTt2YXIgbj10 LnN0b3BzLmxlbmd0aDtpZigxPT09bilyZXR1cm4gdC5zdG9wc1swXVsxXTtpZihyPD10LnN0 b3BzWzBdWzBdKXJldHVybiB0LnN0b3BzWzBdWzFdO2lmKHI+PXQuc3RvcHNbbi0xXVswXSly ZXR1cm4gdC5zdG9wc1tuLTFdWzFdO3ZhciBpPVZlKHQuc3RvcHMubWFwKChmdW5jdGlvbih0 KXtyZXR1cm4gdFswXX0pKSxyKTtyZXR1cm4gdC5zdG9wc1tpXVsxXX1mdW5jdGlvbiBIcih0 LGUscil7dmFyIG49dm9pZCAwIT09dC5iYXNlP3QuYmFzZToxO2lmKCJudW1iZXIiIT09RnIo cikpcmV0dXJuIGpyKHQuZGVmYXVsdCxlLmRlZmF1bHQpO3ZhciBpPXQuc3RvcHMubGVuZ3Ro O2lmKDE9PT1pKXJldHVybiB0LnN0b3BzWzBdWzFdO2lmKHI8PXQuc3RvcHNbMF1bMF0pcmV0 dXJuIHQuc3RvcHNbMF1bMV07aWYocj49dC5zdG9wc1tpLTFdWzBdKXJldHVybiB0LnN0b3Bz W2ktMV1bMV07dmFyIGE9VmUodC5zdG9wcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0WzBd fSkpLHIpLG89ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9bi1yLGE9dC1yO3JldHVybiAwPT09 aT8wOjE9PT1lP2EvaTooTWF0aC5wb3coZSxhKS0xKS8oTWF0aC5wb3coZSxpKS0xKX0ocixu LHQuc3RvcHNbYV1bMF0sdC5zdG9wc1thKzFdWzBdKSxzPXQuc3RvcHNbYV1bMV0sbD10LnN0 b3BzW2ErMV1bMV0sYz1HZVtlLnR5cGVdfHxOcjtpZih0LmNvbG9yU3BhY2UmJiJyZ2IiIT09 dC5jb2xvclNwYWNlKXt2YXIgdT1hclt0LmNvbG9yU3BhY2VdO2M9ZnVuY3Rpb24odCxlKXty ZXR1cm4gdS5yZXZlcnNlKHUuaW50ZXJwb2xhdGUodS5mb3J3YXJkKHQpLHUuZm9yd2FyZChl KSxvKSl9fXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBzLmV2YWx1YXRlP3tldmFsdWF0ZTpm dW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPWFyZ3VtZW50cy5sZW5ndGg7ZS0tOyl0W2VdPWFy Z3VtZW50c1tlXTt2YXIgcj1zLmV2YWx1YXRlLmFwcGx5KHZvaWQgMCx0KSxuPWwuZXZhbHVh dGUuYXBwbHkodm9pZCAwLHQpO2lmKHZvaWQgMCE9PXImJnZvaWQgMCE9PW4pcmV0dXJuIGMo cixuLG8pfX06YyhzLGwsbyl9ZnVuY3Rpb24gcXIodCxlLHIpe3JldHVybiJjb2xvciI9PT1l LnR5cGU/cj10ZS5wYXJzZShyKToiZm9ybWF0dGVkIj09PWUudHlwZT9yPW5lLmZyb21TdHJp bmcoci50b1N0cmluZygpKToicmVzb2x2ZWRJbWFnZSI9PT1lLnR5cGU/cj1pZS5mcm9tU3Ry aW5nKHIudG9TdHJpbmcoKSk6RnIocik9PT1lLnR5cGV8fCJlbnVtIj09PWUudHlwZSYmZS52 YWx1ZXNbcl18fChyPXZvaWQgMCksanIocix0LmRlZmF1bHQsZS5kZWZhdWx0KX14ZS5yZWdp c3RlcihTcix7ZXJyb3I6W3traW5kOiJlcnJvciJ9LFtOdF0sZnVuY3Rpb24odCxlKXt2YXIg cj1lWzBdO3Rocm93IG5ldyB1ZShyLmV2YWx1YXRlKHQpKX1dLHR5cGVvZjpbTnQsW0h0XSxm dW5jdGlvbih0LGUpe3JldHVybiBYdChzZShlWzBdLmV2YWx1YXRlKHQpKSl9XSwidG8tcmdi YSI6W1d0KEJ0LDQpLFtVdF0sZnVuY3Rpb24odCxlKXtyZXR1cm4gZVswXS5ldmFsdWF0ZSh0 KS50b0FycmF5KCl9XSxyZ2I6W1V0LFtCdCxCdCxCdF0sRXJdLHJnYmE6W1V0LFtCdCxCdCxC dCxCdF0sRXJdLGhhczp7dHlwZTpqdCxvdmVybG9hZHM6W1tbTnRdLGZ1bmN0aW9uKHQsZSl7 cmV0dXJuIExyKGVbMF0uZXZhbHVhdGUodCksdC5wcm9wZXJ0aWVzKCkpfV0sW1tOdCxWdF0s ZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLG49ZVsxXTtyZXR1cm4gTHIoci5ldmFsdWF0ZSh0 KSxuLmV2YWx1YXRlKHQpKX1dXX0sZ2V0Ont0eXBlOkh0LG92ZXJsb2FkczpbW1tOdF0sZnVu Y3Rpb24odCxlKXtyZXR1cm4gQ3IoZVswXS5ldmFsdWF0ZSh0KSx0LnByb3BlcnRpZXMoKSl9 XSxbW050LFZ0XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF0sbj1lWzFdO3JldHVybiBDcihy LmV2YWx1YXRlKHQpLG4uZXZhbHVhdGUodCkpfV1dfSwiZmVhdHVyZS1zdGF0ZSI6W0h0LFtO dF0sZnVuY3Rpb24odCxlKXtyZXR1cm4gQ3IoZVswXS5ldmFsdWF0ZSh0KSx0LmZlYXR1cmVT dGF0ZXx8e30pfV0scHJvcGVydGllczpbVnQsW10sZnVuY3Rpb24odCl7cmV0dXJuIHQucHJv cGVydGllcygpfV0sImdlb21ldHJ5LXR5cGUiOltOdCxbXSxmdW5jdGlvbih0KXtyZXR1cm4g dC5nZW9tZXRyeVR5cGUoKX1dLGlkOltIdCxbXSxmdW5jdGlvbih0KXtyZXR1cm4gdC5pZCgp fV0sem9vbTpbQnQsW10sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2xvYmFscy56b29tfV0sImhl YXRtYXAtZGVuc2l0eSI6W0J0LFtdLGZ1bmN0aW9uKHQpe3JldHVybiB0Lmdsb2JhbHMuaGVh dG1hcERlbnNpdHl8fDB9XSwibGluZS1wcm9ncmVzcyI6W0J0LFtdLGZ1bmN0aW9uKHQpe3Jl dHVybiB0Lmdsb2JhbHMubGluZVByb2dyZXNzfHwwfV0sYWNjdW11bGF0ZWQ6W0h0LFtdLGZ1 bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10Lmdsb2JhbHMuYWNjdW11bGF0ZWQ/bnVsbDp0 Lmdsb2JhbHMuYWNjdW11bGF0ZWR9XSwiKyI6W0J0LFByKEJ0KSxmdW5jdGlvbih0LGUpe2Zv cih2YXIgcj0wLG49MCxpPWU7bjxpLmxlbmd0aDtuKz0xKXtyKz1pW25dLmV2YWx1YXRlKHQp fXJldHVybiByfV0sIioiOltCdCxQcihCdCksZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MSxu PTAsaT1lO248aS5sZW5ndGg7bis9MSl7cio9aVtuXS5ldmFsdWF0ZSh0KX1yZXR1cm4gcn1d LCItIjp7dHlwZTpCdCxvdmVybG9hZHM6W1tbQnQsQnRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9 ZVswXSxuPWVbMV07cmV0dXJuIHIuZXZhbHVhdGUodCktbi5ldmFsdWF0ZSh0KX1dLFtbQnRd LGZ1bmN0aW9uKHQsZSl7cmV0dXJuLWVbMF0uZXZhbHVhdGUodCl9XV19LCIvIjpbQnQsW0J0 LEJ0XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF0sbj1lWzFdO3JldHVybiByLmV2YWx1YXRl KHQpL24uZXZhbHVhdGUodCl9XSwiJSI6W0J0LFtCdCxCdF0sZnVuY3Rpb24odCxlKXt2YXIg cj1lWzBdLG49ZVsxXTtyZXR1cm4gci5ldmFsdWF0ZSh0KSVuLmV2YWx1YXRlKHQpfV0sbG4y OltCdCxbXSxmdW5jdGlvbigpe3JldHVybiBNYXRoLkxOMn1dLHBpOltCdCxbXSxmdW5jdGlv bigpe3JldHVybiBNYXRoLlBJfV0sZTpbQnQsW10sZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5F fV0sIl4iOltCdCxbQnQsQnRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxuPWVbMV07cmV0 dXJuIE1hdGgucG93KHIuZXZhbHVhdGUodCksbi5ldmFsdWF0ZSh0KSl9XSxzcXJ0OltCdCxb QnRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXTtyZXR1cm4gTWF0aC5zcXJ0KHIuZXZhbHVh dGUodCkpfV0sbG9nMTA6W0J0LFtCdF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdO3JldHVy biBNYXRoLmxvZyhyLmV2YWx1YXRlKHQpKS9NYXRoLkxOMTB9XSxsbjpbQnQsW0J0XSxmdW5j dGlvbih0LGUpe3ZhciByPWVbMF07cmV0dXJuIE1hdGgubG9nKHIuZXZhbHVhdGUodCkpfV0s bG9nMjpbQnQsW0J0XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF07cmV0dXJuIE1hdGgubG9n KHIuZXZhbHVhdGUodCkpL01hdGguTE4yfV0sc2luOltCdCxbQnRdLGZ1bmN0aW9uKHQsZSl7 dmFyIHI9ZVswXTtyZXR1cm4gTWF0aC5zaW4oci5ldmFsdWF0ZSh0KSl9XSxjb3M6W0J0LFtC dF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdO3JldHVybiBNYXRoLmNvcyhyLmV2YWx1YXRl KHQpKX1dLHRhbjpbQnQsW0J0XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF07cmV0dXJuIE1h dGgudGFuKHIuZXZhbHVhdGUodCkpfV0sYXNpbjpbQnQsW0J0XSxmdW5jdGlvbih0LGUpe3Zh ciByPWVbMF07cmV0dXJuIE1hdGguYXNpbihyLmV2YWx1YXRlKHQpKX1dLGFjb3M6W0J0LFtC dF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdO3JldHVybiBNYXRoLmFjb3Moci5ldmFsdWF0 ZSh0KSl9XSxhdGFuOltCdCxbQnRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXTtyZXR1cm4g TWF0aC5hdGFuKHIuZXZhbHVhdGUodCkpfV0sbWluOltCdCxQcihCdCksZnVuY3Rpb24odCxl KXtyZXR1cm4gTWF0aC5taW4uYXBwbHkoTWF0aCxlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJu IGUuZXZhbHVhdGUodCl9KSkpfV0sbWF4OltCdCxQcihCdCksZnVuY3Rpb24odCxlKXtyZXR1 cm4gTWF0aC5tYXguYXBwbHkoTWF0aCxlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZXZh bHVhdGUodCl9KSkpfV0sYWJzOltCdCxbQnRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXTty ZXR1cm4gTWF0aC5hYnMoci5ldmFsdWF0ZSh0KSl9XSxyb3VuZDpbQnQsW0J0XSxmdW5jdGlv bih0LGUpe3ZhciByPWVbMF0uZXZhbHVhdGUodCk7cmV0dXJuIHI8MD8tTWF0aC5yb3VuZCgt cik6TWF0aC5yb3VuZChyKX1dLGZsb29yOltCdCxbQnRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9 ZVswXTtyZXR1cm4gTWF0aC5mbG9vcihyLmV2YWx1YXRlKHQpKX1dLGNlaWw6W0J0LFtCdF0s ZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdO3JldHVybiBNYXRoLmNlaWwoci5ldmFsdWF0ZSh0 KSl9XSwiZmlsdGVyLT09IjpbanQsW050LEh0XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF0s bj1lWzFdO3JldHVybiB0LnByb3BlcnRpZXMoKVtyLnZhbHVlXT09PW4udmFsdWV9XSwiZmls dGVyLWlkLT09IjpbanQsW0h0XSxmdW5jdGlvbih0LGUpe3ZhciByPWVbMF07cmV0dXJuIHQu aWQoKT09PXIudmFsdWV9XSwiZmlsdGVyLXR5cGUtPT0iOltqdCxbTnRdLGZ1bmN0aW9uKHQs ZSl7dmFyIHI9ZVswXTtyZXR1cm4gdC5nZW9tZXRyeVR5cGUoKT09PXIudmFsdWV9XSwiZmls dGVyLTwiOltqdCxbTnQsSHRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxuPWVbMV0saT10 LnByb3BlcnRpZXMoKVtyLnZhbHVlXSxhPW4udmFsdWU7cmV0dXJuIHR5cGVvZiBpPT10eXBl b2YgYSYmaTxhfV0sImZpbHRlci1pZC08IjpbanQsW0h0XSxmdW5jdGlvbih0LGUpe3ZhciBy PWVbMF0sbj10LmlkKCksaT1yLnZhbHVlO3JldHVybiB0eXBlb2Ygbj09dHlwZW9mIGkmJm48 aX1dLCJmaWx0ZXItPiI6W2p0LFtOdCxIdF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLG49 ZVsxXSxpPXQucHJvcGVydGllcygpW3IudmFsdWVdLGE9bi52YWx1ZTtyZXR1cm4gdHlwZW9m IGk9PXR5cGVvZiBhJiZpPmF9XSwiZmlsdGVyLWlkLT4iOltqdCxbSHRdLGZ1bmN0aW9uKHQs ZSl7dmFyIHI9ZVswXSxuPXQuaWQoKSxpPXIudmFsdWU7cmV0dXJuIHR5cGVvZiBuPT10eXBl b2YgaSYmbj5pfV0sImZpbHRlci08PSI6W2p0LFtOdCxIdF0sZnVuY3Rpb24odCxlKXt2YXIg cj1lWzBdLG49ZVsxXSxpPXQucHJvcGVydGllcygpW3IudmFsdWVdLGE9bi52YWx1ZTtyZXR1 cm4gdHlwZW9mIGk9PXR5cGVvZiBhJiZpPD1hfV0sImZpbHRlci1pZC08PSI6W2p0LFtIdF0s ZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLG49dC5pZCgpLGk9ci52YWx1ZTtyZXR1cm4gdHlw ZW9mIG49PXR5cGVvZiBpJiZuPD1pfV0sImZpbHRlci0+PSI6W2p0LFtOdCxIdF0sZnVuY3Rp b24odCxlKXt2YXIgcj1lWzBdLG49ZVsxXSxpPXQucHJvcGVydGllcygpW3IudmFsdWVdLGE9 bi52YWx1ZTtyZXR1cm4gdHlwZW9mIGk9PXR5cGVvZiBhJiZpPj1hfV0sImZpbHRlci1pZC0+ PSI6W2p0LFtIdF0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLG49dC5pZCgpLGk9ci52YWx1 ZTtyZXR1cm4gdHlwZW9mIG49PXR5cGVvZiBpJiZuPj1pfV0sImZpbHRlci1oYXMiOltqdCxb SHRdLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGVbMF0udmFsdWUgaW4gdC5wcm9wZXJ0aWVzKCl9 XSwiZmlsdGVyLWhhcy1pZCI6W2p0LFtdLGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dC5p ZCgpJiZ2b2lkIDAhPT10LmlkKCl9XSwiZmlsdGVyLXR5cGUtaW4iOltqdCxbV3QoTnQpXSxm dW5jdGlvbih0LGUpe3JldHVybiBlWzBdLnZhbHVlLmluZGV4T2YodC5nZW9tZXRyeVR5cGUo KSk+PTB9XSwiZmlsdGVyLWlkLWluIjpbanQsW1d0KEh0KV0sZnVuY3Rpb24odCxlKXtyZXR1 cm4gZVswXS52YWx1ZS5pbmRleE9mKHQuaWQoKSk+PTB9XSwiZmlsdGVyLWluLXNtYWxsIjpb anQsW050LFd0KEh0KV0sZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdO3JldHVybiBlWzFdLnZh bHVlLmluZGV4T2YodC5wcm9wZXJ0aWVzKClbci52YWx1ZV0pPj0wfV0sImZpbHRlci1pbi1s YXJnZSI6W2p0LFtOdCxXdChIdCldLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxuPWVbMV07 cmV0dXJuIGZ1bmN0aW9uKHQsZSxyLG4pe2Zvcig7cjw9bjspe3ZhciBpPXIrbj4+MTtpZihl W2ldPT09dClyZXR1cm4hMDtlW2ldPnQ/bj1pLTE6cj1pKzF9cmV0dXJuITF9KHQucHJvcGVy dGllcygpW3IudmFsdWVdLG4udmFsdWUsMCxuLnZhbHVlLmxlbmd0aC0xKX1dLGFsbDp7dHlw ZTpqdCxvdmVybG9hZHM6W1tbanQsanRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxuPWVb MV07cmV0dXJuIHIuZXZhbHVhdGUodCkmJm4uZXZhbHVhdGUodCl9XSxbUHIoanQpLGZ1bmN0 aW9uKHQsZSl7Zm9yKHZhciByPTAsbj1lO3I8bi5sZW5ndGg7cis9MSl7aWYoIW5bcl0uZXZh bHVhdGUodCkpcmV0dXJuITF9cmV0dXJuITB9XV19LGFueTp7dHlwZTpqdCxvdmVybG9hZHM6 W1tbanQsanRdLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXSxuPWVbMV07cmV0dXJuIHIuZXZh bHVhdGUodCl8fG4uZXZhbHVhdGUodCl9XSxbUHIoanQpLGZ1bmN0aW9uKHQsZSl7Zm9yKHZh ciByPTAsbj1lO3I8bi5sZW5ndGg7cis9MSl7aWYobltyXS5ldmFsdWF0ZSh0KSlyZXR1cm4h MH1yZXR1cm4hMX1dXX0sIiEiOltqdCxbanRdLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIWVbMF0u ZXZhbHVhdGUodCl9XSwiaXMtc3VwcG9ydGVkLXNjcmlwdCI6W2p0LFtOdF0sZnVuY3Rpb24o dCxlKXt2YXIgcj1lWzBdLG49dC5nbG9iYWxzJiZ0Lmdsb2JhbHMuaXNTdXBwb3J0ZWRTY3Jp cHQ7cmV0dXJuIW58fG4oci5ldmFsdWF0ZSh0KSl9XSx1cGNhc2U6W050LFtOdF0sZnVuY3Rp b24odCxlKXtyZXR1cm4gZVswXS5ldmFsdWF0ZSh0KS50b1VwcGVyQ2FzZSgpfV0sZG93bmNh c2U6W050LFtOdF0sZnVuY3Rpb24odCxlKXtyZXR1cm4gZVswXS5ldmFsdWF0ZSh0KS50b0xv d2VyQ2FzZSgpfV0sY29uY2F0OltOdCxQcihIdCksZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5t YXAoKGZ1bmN0aW9uKGUpe3JldHVybiBsZShlLmV2YWx1YXRlKHQpKX0pKS5qb2luKCIiKX1d LCJyZXNvbHZlZC1sb2NhbGUiOltOdCxbcXRdLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGVbMF0u ZXZhbHVhdGUodCkucmVzb2x2ZWRMb2NhbGUoKX1dfSk7dmFyIEdyPWZ1bmN0aW9uKHQsZSl7 dGhpcy5leHByZXNzaW9uPXQsdGhpcy5fd2FybmluZ0hpc3Rvcnk9e30sdGhpcy5fZXZhbHVh dG9yPW5ldyB5ZSx0aGlzLl9kZWZhdWx0VmFsdWU9ZT9mdW5jdGlvbih0KXtyZXR1cm4iY29s b3IiPT09dC50eXBlJiZCcih0LmRlZmF1bHQpP25ldyB0ZSgwLDAsMCwwKToiY29sb3IiPT09 dC50eXBlP3RlLnBhcnNlKHQuZGVmYXVsdCl8fG51bGw6dm9pZCAwPT09dC5kZWZhdWx0P251 bGw6dC5kZWZhdWx0fShlKTpudWxsLHRoaXMuX2VudW1WYWx1ZXM9ZSYmImVudW0iPT09ZS50 eXBlP2UudmFsdWVzOm51bGx9O2Z1bmN0aW9uIFlyKHQpe3JldHVybiBBcnJheS5pc0FycmF5 KHQpJiZ0Lmxlbmd0aD4wJiYic3RyaW5nIj09dHlwZW9mIHRbMF0mJnRbMF1pbiBTcn1mdW5j dGlvbiBXcih0LGUpe3ZhciByPW5ldyBVZShTcixbXSxlP2Z1bmN0aW9uKHQpe3ZhciBlPXtj b2xvcjpVdCxzdHJpbmc6TnQsbnVtYmVyOkJ0LGVudW06TnQsYm9vbGVhbjpqdCxmb3JtYXR0 ZWQ6R3QscmVzb2x2ZWRJbWFnZTpZdH07aWYoImFycmF5Ij09PXQudHlwZSlyZXR1cm4gV3Qo ZVt0LnZhbHVlXXx8SHQsdC5sZW5ndGgpO3JldHVybiBlW3QudHlwZV19KGUpOnZvaWQgMCks bj1yLnBhcnNlKHQsdm9pZCAwLHZvaWQgMCx2b2lkIDAsZSYmInN0cmluZyI9PT1lLnR5cGU/ e3R5cGVBbm5vdGF0aW9uOiJjb2VyY2UifTp2b2lkIDApO3JldHVybiBuP0lyKG5ldyBHcihu LGUpKTpPcihyLmVycm9ycyl9R3IucHJvdG90eXBlLmV2YWx1YXRlV2l0aG91dEVycm9ySGFu ZGxpbmc9ZnVuY3Rpb24odCxlLHIsbixpLGEpe3JldHVybiB0aGlzLl9ldmFsdWF0b3IuZ2xv YmFscz10LHRoaXMuX2V2YWx1YXRvci5mZWF0dXJlPWUsdGhpcy5fZXZhbHVhdG9yLmZlYXR1 cmVTdGF0ZT1yLHRoaXMuX2V2YWx1YXRvci5jYW5vbmljYWw9bix0aGlzLl9ldmFsdWF0b3Iu YXZhaWxhYmxlSW1hZ2VzPWl8fG51bGwsdGhpcy5fZXZhbHVhdG9yLmZvcm1hdHRlZFNlY3Rp b249YSx0aGlzLmV4cHJlc3Npb24uZXZhbHVhdGUodGhpcy5fZXZhbHVhdG9yKX0sR3IucHJv dG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKHQsZSxyLG4saSxhKXt0aGlzLl9ldmFsdWF0b3Iu Z2xvYmFscz10LHRoaXMuX2V2YWx1YXRvci5mZWF0dXJlPWV8fG51bGwsdGhpcy5fZXZhbHVh dG9yLmZlYXR1cmVTdGF0ZT1yfHxudWxsLHRoaXMuX2V2YWx1YXRvci5jYW5vbmljYWw9bix0 aGlzLl9ldmFsdWF0b3IuYXZhaWxhYmxlSW1hZ2VzPWl8fG51bGwsdGhpcy5fZXZhbHVhdG9y LmZvcm1hdHRlZFNlY3Rpb249YXx8bnVsbDt0cnl7dmFyIG89dGhpcy5leHByZXNzaW9uLmV2 YWx1YXRlKHRoaXMuX2V2YWx1YXRvcik7aWYobnVsbD09b3x8Im51bWJlciI9PXR5cGVvZiBv JiZvIT1vKXJldHVybiB0aGlzLl9kZWZhdWx0VmFsdWU7aWYodGhpcy5fZW51bVZhbHVlcyYm IShvIGluIHRoaXMuX2VudW1WYWx1ZXMpKXRocm93IG5ldyB1ZSgiRXhwZWN0ZWQgdmFsdWUg dG8gYmUgb25lIG9mICIrT2JqZWN0LmtleXModGhpcy5fZW51bVZhbHVlcykubWFwKChmdW5j dGlvbih0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCl9KSkuam9pbigiLCAiKSsiLCBidXQg Zm91bmQgIitKU09OLnN0cmluZ2lmeShvKSsiIGluc3RlYWQuIik7cmV0dXJuIG99Y2F0Y2go dCl7cmV0dXJuIHRoaXMuX3dhcm5pbmdIaXN0b3J5W3QubWVzc2FnZV18fCh0aGlzLl93YXJu aW5nSGlzdG9yeVt0Lm1lc3NhZ2VdPSEwLCJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYm Y29uc29sZS53YXJuKHQubWVzc2FnZSkpLHRoaXMuX2RlZmF1bHRWYWx1ZX19O3ZhciBYcj1m dW5jdGlvbih0LGUpe3RoaXMua2luZD10LHRoaXMuX3N0eWxlRXhwcmVzc2lvbj1lLHRoaXMu aXNTdGF0ZURlcGVuZGVudD0iY29uc3RhbnQiIT09dCYmIUJlKGUuZXhwcmVzc2lvbil9O1hy LnByb3RvdHlwZS5ldmFsdWF0ZVdpdGhvdXRFcnJvckhhbmRsaW5nPWZ1bmN0aW9uKHQsZSxy LG4saSxhKXtyZXR1cm4gdGhpcy5fc3R5bGVFeHByZXNzaW9uLmV2YWx1YXRlV2l0aG91dEVy cm9ySGFuZGxpbmcodCxlLHIsbixpLGEpfSxYci5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rp b24odCxlLHIsbixpLGEpe3JldHVybiB0aGlzLl9zdHlsZUV4cHJlc3Npb24uZXZhbHVhdGUo dCxlLHIsbixpLGEpfTt2YXIgWnI9ZnVuY3Rpb24odCxlLHIsbil7dGhpcy5raW5kPXQsdGhp cy56b29tU3RvcHM9cix0aGlzLl9zdHlsZUV4cHJlc3Npb249ZSx0aGlzLmlzU3RhdGVEZXBl bmRlbnQ9ImNhbWVyYSIhPT10JiYhQmUoZS5leHByZXNzaW9uKSx0aGlzLmludGVycG9sYXRp b25UeXBlPW59O2Z1bmN0aW9uIEpyKHQsZSl7aWYoImVycm9yIj09PSh0PVdyKHQsZSkpLnJl c3VsdClyZXR1cm4gdDt2YXIgcj10LnZhbHVlLmV4cHJlc3Npb24sbj1GZShyKTtpZighbiYm IXpyKGUpKXJldHVybiBPcihbbmV3IER0KCIiLCJkYXRhIGV4cHJlc3Npb25zIG5vdCBzdXBw b3J0ZWQiKV0pO3ZhciBpPU5lKHIsWyJ6b29tIl0pO2lmKCFpJiYhRHIoZSkpcmV0dXJuIE9y KFtuZXcgRHQoIiIsInpvb20gZXhwcmVzc2lvbnMgbm90IHN1cHBvcnRlZCIpXSk7dmFyIGE9 ZnVuY3Rpb24gdChlKXt2YXIgcj1udWxsO2lmKGUgaW5zdGFuY2VvZiBjcilyPXQoZS5yZXN1 bHQpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIGxyKWZvcih2YXIgbj0wLGk9ZS5hcmdzO248aS5s ZW5ndGg7bis9MSl7dmFyIGE9aVtuXTtpZihyPXQoYSkpYnJlYWt9ZWxzZShlIGluc3RhbmNl b2YgSGV8fGUgaW5zdGFuY2VvZiBvcikmJmUuaW5wdXQgaW5zdGFuY2VvZiB4ZSYmInpvb20i PT09ZS5pbnB1dC5uYW1lJiYocj1lKTtpZihyIGluc3RhbmNlb2YgRHQpcmV0dXJuIHI7cmV0 dXJuIGUuZWFjaENoaWxkKChmdW5jdGlvbihlKXt2YXIgbj10KGUpO24gaW5zdGFuY2VvZiBE dD9yPW46IXImJm4/cj1uZXcgRHQoIiIsJyJ6b29tIiBleHByZXNzaW9uIG1heSBvbmx5IGJl IHVzZWQgYXMgaW5wdXQgdG8gYSB0b3AtbGV2ZWwgInN0ZXAiIG9yICJpbnRlcnBvbGF0ZSIg ZXhwcmVzc2lvbi4nKTpyJiZuJiZyIT09biYmKHI9bmV3IER0KCIiLCdPbmx5IG9uZSB6b29t LWJhc2VkICJzdGVwIiBvciAiaW50ZXJwb2xhdGUiIHN1YmV4cHJlc3Npb24gbWF5IGJlIHVz ZWQgaW4gYW4gZXhwcmVzc2lvbi4nKSl9KSkscn0ocik7aWYoIWEmJiFpKXJldHVybiBPcihb bmV3IER0KCIiLCciem9vbSIgZXhwcmVzc2lvbiBtYXkgb25seSBiZSB1c2VkIGFzIGlucHV0 IHRvIGEgdG9wLWxldmVsICJzdGVwIiBvciAiaW50ZXJwb2xhdGUiIGV4cHJlc3Npb24uJyld KTtpZihhIGluc3RhbmNlb2YgRHQpcmV0dXJuIE9yKFthXSk7aWYoYSBpbnN0YW5jZW9mIG9y JiYhUnIoZSkpcmV0dXJuIE9yKFtuZXcgRHQoIiIsJyJpbnRlcnBvbGF0ZSIgZXhwcmVzc2lv bnMgY2Fubm90IGJlIHVzZWQgd2l0aCB0aGlzIHByb3BlcnR5JyldKTtpZighYSlyZXR1cm4g SXIobmV3IFhyKG4/ImNvbnN0YW50Ijoic291cmNlIix0LnZhbHVlKSk7dmFyIG89YSBpbnN0 YW5jZW9mIG9yP2EuaW50ZXJwb2xhdGlvbjp2b2lkIDA7cmV0dXJuIElyKG5ldyBacihuPyJj YW1lcmEiOiJjb21wb3NpdGUiLHQudmFsdWUsYS5sYWJlbHMsbykpfVpyLnByb3RvdHlwZS5l dmFsdWF0ZVdpdGhvdXRFcnJvckhhbmRsaW5nPWZ1bmN0aW9uKHQsZSxyLG4saSxhKXtyZXR1 cm4gdGhpcy5fc3R5bGVFeHByZXNzaW9uLmV2YWx1YXRlV2l0aG91dEVycm9ySGFuZGxpbmco dCxlLHIsbixpLGEpfSxaci5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24odCxlLHIsbixp LGEpe3JldHVybiB0aGlzLl9zdHlsZUV4cHJlc3Npb24uZXZhbHVhdGUodCxlLHIsbixpLGEp fSxaci5wcm90b3R5cGUuaW50ZXJwb2xhdGlvbkZhY3Rvcj1mdW5jdGlvbih0LGUscil7cmV0 dXJuIHRoaXMuaW50ZXJwb2xhdGlvblR5cGU/b3IuaW50ZXJwb2xhdGlvbkZhY3Rvcih0aGlz LmludGVycG9sYXRpb25UeXBlLHQsZSxyKTowfTt2YXIgS3I9ZnVuY3Rpb24odCxlKXt0aGlz Ll9wYXJhbWV0ZXJzPXQsdGhpcy5fc3BlY2lmaWNhdGlvbj1lLEl0KHRoaXMsZnVuY3Rpb24g dChlLHIpe3ZhciBuLGksYSxvPSJjb2xvciI9PT1yLnR5cGUscz1lLnN0b3BzJiYib2JqZWN0 Ij09dHlwZW9mIGUuc3RvcHNbMF1bMF0sbD1zfHx2b2lkIDAhPT1lLnByb3BlcnR5LGM9c3x8 IWwsdT1lLnR5cGV8fChScihyKT8iZXhwb25lbnRpYWwiOiJpbnRlcnZhbCIpO2lmKG8mJigo ZT1JdCh7fSxlKSkuc3RvcHMmJihlLnN0b3BzPWUuc3RvcHMubWFwKChmdW5jdGlvbih0KXty ZXR1cm5bdFswXSx0ZS5wYXJzZSh0WzFdKV19KSkpLGUuZGVmYXVsdD9lLmRlZmF1bHQ9dGUu cGFyc2UoZS5kZWZhdWx0KTplLmRlZmF1bHQ9dGUucGFyc2Uoci5kZWZhdWx0KSksZS5jb2xv clNwYWNlJiYicmdiIiE9PWUuY29sb3JTcGFjZSYmIWFyW2UuY29sb3JTcGFjZV0pdGhyb3cg bmV3IEVycm9yKCJVbmtub3duIGNvbG9yIHNwYWNlOiAiK2UuY29sb3JTcGFjZSk7aWYoImV4 cG9uZW50aWFsIj09PXUpbj1IcjtlbHNlIGlmKCJpbnRlcnZhbCI9PT11KW49VnI7ZWxzZSBp ZigiY2F0ZWdvcmljYWwiPT09dSl7bj1VcixpPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKHZh ciBmPTAsaD1lLnN0b3BzO2Y8aC5sZW5ndGg7Zis9MSl7dmFyIHA9aFtmXTtpW3BbMF1dPXBb MV19YT10eXBlb2YgZS5zdG9wc1swXVswXX1lbHNle2lmKCJpZGVudGl0eSIhPT11KXRocm93 IG5ldyBFcnJvcignVW5rbm93biBmdW5jdGlvbiB0eXBlICInK3UrJyInKTtuPXFyfWlmKHMp e2Zvcih2YXIgZD17fSxtPVtdLGc9MDtnPGUuc3RvcHMubGVuZ3RoO2crKyl7dmFyIHY9ZS5z dG9wc1tnXSx5PXZbMF0uem9vbTt2b2lkIDA9PT1kW3ldJiYoZFt5XT17em9vbTp5LHR5cGU6 ZS50eXBlLHByb3BlcnR5OmUucHJvcGVydHksZGVmYXVsdDplLmRlZmF1bHQsc3RvcHM6W119 LG0ucHVzaCh5KSksZFt5XS5zdG9wcy5wdXNoKFt2WzBdLnZhbHVlLHZbMV1dKX1mb3IodmFy IHg9W10sYj0wLF89bTtiPF8ubGVuZ3RoO2IrPTEpe3ZhciB3PV9bYl07eC5wdXNoKFtkW3dd Lnpvb20sdChkW3ddLHIpXSl9dmFyIFQ9e25hbWU6ImxpbmVhciJ9O3JldHVybntraW5kOiJj b21wb3NpdGUiLGludGVycG9sYXRpb25UeXBlOlQsaW50ZXJwb2xhdGlvbkZhY3Rvcjpvci5p bnRlcnBvbGF0aW9uRmFjdG9yLmJpbmQodm9pZCAwLFQpLHpvb21TdG9wczp4Lm1hcCgoZnVu Y3Rpb24odCl7cmV0dXJuIHRbMF19KSksZXZhbHVhdGU6ZnVuY3Rpb24odCxuKXt2YXIgaT10 Lnpvb207cmV0dXJuIEhyKHtzdG9wczp4LGJhc2U6ZS5iYXNlfSxyLGkpLmV2YWx1YXRlKGks bil9fX1pZihjKXt2YXIgaz0iZXhwb25lbnRpYWwiPT09dT97bmFtZToiZXhwb25lbnRpYWwi LGJhc2U6dm9pZCAwIT09ZS5iYXNlP2UuYmFzZToxfTpudWxsO3JldHVybntraW5kOiJjYW1l cmEiLGludGVycG9sYXRpb25UeXBlOmssaW50ZXJwb2xhdGlvbkZhY3Rvcjpvci5pbnRlcnBv bGF0aW9uRmFjdG9yLmJpbmQodm9pZCAwLGspLHpvb21TdG9wczplLnN0b3BzLm1hcCgoZnVu Y3Rpb24odCl7cmV0dXJuIHRbMF19KSksZXZhbHVhdGU6ZnVuY3Rpb24odCl7dmFyIG89dC56 b29tO3JldHVybiBuKGUscixvLGksYSl9fX1yZXR1cm57a2luZDoic291cmNlIixldmFsdWF0 ZTpmdW5jdGlvbih0LG8pe3ZhciBzPW8mJm8ucHJvcGVydGllcz9vLnByb3BlcnRpZXNbZS5w cm9wZXJ0eV06dm9pZCAwO3JldHVybiB2b2lkIDA9PT1zP2pyKGUuZGVmYXVsdCxyLmRlZmF1 bHQpOm4oZSxyLHMsaSxhKX19fSh0aGlzLl9wYXJhbWV0ZXJzLHRoaXMuX3NwZWNpZmljYXRp b24pKX07ZnVuY3Rpb24gUXIodCl7dmFyIGU9dC5rZXkscj10LnZhbHVlLG49dC52YWx1ZVNw ZWN8fHt9LGk9dC5vYmplY3RFbGVtZW50VmFsaWRhdG9yc3x8e30sYT10LnN0eWxlLG89dC5z dHlsZVNwZWMscz1bXSxsPUZyKHIpO2lmKCJvYmplY3QiIT09bClyZXR1cm5bbmV3IEN0KGUs ciwib2JqZWN0IGV4cGVjdGVkLCAiK2wrIiBmb3VuZCIpXTtmb3IodmFyIGMgaW4gcil7dmFy IHU9Yy5zcGxpdCgiLiIpWzBdLGY9blt1XXx8blsiKiJdLGg9dm9pZCAwO2lmKGlbdV0paD1p W3VdO2Vsc2UgaWYoblt1XSloPWtuO2Vsc2UgaWYoaVsiKiJdKWg9aVsiKiJdO2Vsc2V7aWYo IW5bIioiXSl7cy5wdXNoKG5ldyBDdChlLHJbY10sJ3Vua25vd24gcHJvcGVydHkgIicrYysn IicpKTtjb250aW51ZX1oPWtufXM9cy5jb25jYXQoaCh7a2V5OihlP2UrIi4iOmUpK2MsdmFs dWU6cltjXSx2YWx1ZVNwZWM6ZixzdHlsZTphLHN0eWxlU3BlYzpvLG9iamVjdDpyLG9iamVj dEtleTpjfSxyKSl9Zm9yKHZhciBwIGluIG4paVtwXXx8bltwXS5yZXF1aXJlZCYmdm9pZCAw PT09bltwXS5kZWZhdWx0JiZ2b2lkIDA9PT1yW3BdJiZzLnB1c2gobmV3IEN0KGUsciwnbWlz c2luZyByZXF1aXJlZCBwcm9wZXJ0eSAiJytwKyciJykpO3JldHVybiBzfWZ1bmN0aW9uICRy KHQpe3ZhciBlPXQudmFsdWUscj10LnZhbHVlU3BlYyxuPXQuc3R5bGUsaT10LnN0eWxlU3Bl YyxhPXQua2V5LG89dC5hcnJheUVsZW1lbnRWYWxpZGF0b3J8fGtuO2lmKCJhcnJheSIhPT1G cihlKSlyZXR1cm5bbmV3IEN0KGEsZSwiYXJyYXkgZXhwZWN0ZWQsICIrRnIoZSkrIiBmb3Vu ZCIpXTtpZihyLmxlbmd0aCYmZS5sZW5ndGghPT1yLmxlbmd0aClyZXR1cm5bbmV3IEN0KGEs ZSwiYXJyYXkgbGVuZ3RoICIrci5sZW5ndGgrIiBleHBlY3RlZCwgbGVuZ3RoICIrZS5sZW5n dGgrIiBmb3VuZCIpXTtpZihyWyJtaW4tbGVuZ3RoIl0mJmUubGVuZ3RoPHJbIm1pbi1sZW5n dGgiXSlyZXR1cm5bbmV3IEN0KGEsZSwiYXJyYXkgbGVuZ3RoIGF0IGxlYXN0ICIrclsibWlu LWxlbmd0aCJdKyIgZXhwZWN0ZWQsIGxlbmd0aCAiK2UubGVuZ3RoKyIgZm91bmQiKV07dmFy IHM9e3R5cGU6ci52YWx1ZSx2YWx1ZXM6ci52YWx1ZXN9O2kuJHZlcnNpb248NyYmKHMuZnVu Y3Rpb249ci5mdW5jdGlvbiksIm9iamVjdCI9PT1GcihyLnZhbHVlKSYmKHM9ci52YWx1ZSk7 Zm9yKHZhciBsPVtdLGM9MDtjPGUubGVuZ3RoO2MrKylsPWwuY29uY2F0KG8oe2FycmF5OmUs YXJyYXlJbmRleDpjLHZhbHVlOmVbY10sdmFsdWVTcGVjOnMsc3R5bGU6bixzdHlsZVNwZWM6 aSxrZXk6YSsiWyIrYysiXSJ9KSk7cmV0dXJuIGx9ZnVuY3Rpb24gdG4odCl7dmFyIGU9dC5r ZXkscj10LnZhbHVlLG49dC52YWx1ZVNwZWMsaT1GcihyKTtyZXR1cm4ibnVtYmVyIj09PWkm JnIhPXImJihpPSJOYU4iKSwibnVtYmVyIiE9PWk/W25ldyBDdChlLHIsIm51bWJlciBleHBl Y3RlZCwgIitpKyIgZm91bmQiKV06Im1pbmltdW0iaW4gbiYmcjxuLm1pbmltdW0/W25ldyBD dChlLHIscisiIGlzIGxlc3MgdGhhbiB0aGUgbWluaW11bSB2YWx1ZSAiK24ubWluaW11bSld OiJtYXhpbXVtImluIG4mJnI+bi5tYXhpbXVtP1tuZXcgQ3QoZSxyLHIrIiBpcyBncmVhdGVy IHRoYW4gdGhlIG1heGltdW0gdmFsdWUgIituLm1heGltdW0pXTpbXX1mdW5jdGlvbiBlbih0 KXt2YXIgZSxyLG4saT10LnZhbHVlU3BlYyxhPU90KHQudmFsdWUudHlwZSksbz17fSxzPSJj YXRlZ29yaWNhbCIhPT1hJiZ2b2lkIDA9PT10LnZhbHVlLnByb3BlcnR5LGw9IXMsYz0iYXJy YXkiPT09RnIodC52YWx1ZS5zdG9wcykmJiJhcnJheSI9PT1Gcih0LnZhbHVlLnN0b3BzWzBd KSYmIm9iamVjdCI9PT1Gcih0LnZhbHVlLnN0b3BzWzBdWzBdKSx1PVFyKHtrZXk6dC5rZXks dmFsdWU6dC52YWx1ZSx2YWx1ZVNwZWM6dC5zdHlsZVNwZWMuZnVuY3Rpb24sc3R5bGU6dC5z dHlsZSxzdHlsZVNwZWM6dC5zdHlsZVNwZWMsb2JqZWN0RWxlbWVudFZhbGlkYXRvcnM6e3N0 b3BzOmZ1bmN0aW9uKHQpe2lmKCJpZGVudGl0eSI9PT1hKXJldHVybltuZXcgQ3QodC5rZXks dC52YWx1ZSwnaWRlbnRpdHkgZnVuY3Rpb24gbWF5IG5vdCBoYXZlIGEgInN0b3BzIiBwcm9w ZXJ0eScpXTt2YXIgZT1bXSxyPXQudmFsdWU7ZT1lLmNvbmNhdCgkcih7a2V5OnQua2V5LHZh bHVlOnIsdmFsdWVTcGVjOnQudmFsdWVTcGVjLHN0eWxlOnQuc3R5bGUsc3R5bGVTcGVjOnQu c3R5bGVTcGVjLGFycmF5RWxlbWVudFZhbGlkYXRvcjpmfSkpLCJhcnJheSI9PT1GcihyKSYm MD09PXIubGVuZ3RoJiZlLnB1c2gobmV3IEN0KHQua2V5LHIsImFycmF5IG11c3QgaGF2ZSBh dCBsZWFzdCBvbmUgc3RvcCIpKTtyZXR1cm4gZX0sZGVmYXVsdDpmdW5jdGlvbih0KXtyZXR1 cm4ga24oe2tleTp0LmtleSx2YWx1ZTp0LnZhbHVlLHZhbHVlU3BlYzppLHN0eWxlOnQuc3R5 bGUsc3R5bGVTcGVjOnQuc3R5bGVTcGVjfSl9fX0pO3JldHVybiJpZGVudGl0eSI9PT1hJiZz JiZ1LnB1c2gobmV3IEN0KHQua2V5LHQudmFsdWUsJ21pc3NpbmcgcmVxdWlyZWQgcHJvcGVy dHkgInByb3BlcnR5IicpKSwiaWRlbnRpdHkiPT09YXx8dC52YWx1ZS5zdG9wc3x8dS5wdXNo KG5ldyBDdCh0LmtleSx0LnZhbHVlLCdtaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5ICJzdG9w cyInKSksImV4cG9uZW50aWFsIj09PWEmJnQudmFsdWVTcGVjLmV4cHJlc3Npb24mJiFScih0 LnZhbHVlU3BlYykmJnUucHVzaChuZXcgQ3QodC5rZXksdC52YWx1ZSwiZXhwb25lbnRpYWwg ZnVuY3Rpb25zIG5vdCBzdXBwb3J0ZWQiKSksdC5zdHlsZVNwZWMuJHZlcnNpb24+PTgmJihs JiYhenIodC52YWx1ZVNwZWMpP3UucHVzaChuZXcgQ3QodC5rZXksdC52YWx1ZSwicHJvcGVy dHkgZnVuY3Rpb25zIG5vdCBzdXBwb3J0ZWQiKSk6cyYmIURyKHQudmFsdWVTcGVjKSYmdS5w dXNoKG5ldyBDdCh0LmtleSx0LnZhbHVlLCJ6b29tIGZ1bmN0aW9ucyBub3Qgc3VwcG9ydGVk IikpKSwiY2F0ZWdvcmljYWwiIT09YSYmIWN8fHZvaWQgMCE9PXQudmFsdWUucHJvcGVydHl8 fHUucHVzaChuZXcgQ3QodC5rZXksdC52YWx1ZSwnInByb3BlcnR5IiBwcm9wZXJ0eSBpcyBy ZXF1aXJlZCcpKSx1O2Z1bmN0aW9uIGYodCl7dmFyIGU9W10sYT10LnZhbHVlLHM9dC5rZXk7 aWYoImFycmF5IiE9PUZyKGEpKXJldHVybltuZXcgQ3QocyxhLCJhcnJheSBleHBlY3RlZCwg IitGcihhKSsiIGZvdW5kIildO2lmKDIhPT1hLmxlbmd0aClyZXR1cm5bbmV3IEN0KHMsYSwi YXJyYXkgbGVuZ3RoIDIgZXhwZWN0ZWQsIGxlbmd0aCAiK2EubGVuZ3RoKyIgZm91bmQiKV07 aWYoYyl7aWYoIm9iamVjdCIhPT1GcihhWzBdKSlyZXR1cm5bbmV3IEN0KHMsYSwib2JqZWN0 IGV4cGVjdGVkLCAiK0ZyKGFbMF0pKyIgZm91bmQiKV07aWYodm9pZCAwPT09YVswXS56b29t KXJldHVybltuZXcgQ3QocyxhLCJvYmplY3Qgc3RvcCBrZXkgbXVzdCBoYXZlIHpvb20iKV07 aWYodm9pZCAwPT09YVswXS52YWx1ZSlyZXR1cm5bbmV3IEN0KHMsYSwib2JqZWN0IHN0b3Ag a2V5IG11c3QgaGF2ZSB2YWx1ZSIpXTtpZihuJiZuPk90KGFbMF0uem9vbSkpcmV0dXJuW25l dyBDdChzLGFbMF0uem9vbSwic3RvcCB6b29tIHZhbHVlcyBtdXN0IGFwcGVhciBpbiBhc2Nl bmRpbmcgb3JkZXIiKV07T3QoYVswXS56b29tKSE9PW4mJihuPU90KGFbMF0uem9vbSkscj12 b2lkIDAsbz17fSksZT1lLmNvbmNhdChRcih7a2V5OnMrIlswXSIsdmFsdWU6YVswXSx2YWx1 ZVNwZWM6e3pvb206e319LHN0eWxlOnQuc3R5bGUsc3R5bGVTcGVjOnQuc3R5bGVTcGVjLG9i amVjdEVsZW1lbnRWYWxpZGF0b3JzOnt6b29tOnRuLHZhbHVlOmh9fSkpfWVsc2UgZT1lLmNv bmNhdChoKHtrZXk6cysiWzBdIix2YWx1ZTphWzBdLHZhbHVlU3BlYzp7fSxzdHlsZTp0LnN0 eWxlLHN0eWxlU3BlYzp0LnN0eWxlU3BlY30sYSkpO3JldHVybiBZcih6dChhWzFdKSk/ZS5j b25jYXQoW25ldyBDdChzKyJbMV0iLGFbMV0sImV4cHJlc3Npb25zIGFyZSBub3QgYWxsb3dl ZCBpbiBmdW5jdGlvbiBzdG9wcy4iKV0pOmUuY29uY2F0KGtuKHtrZXk6cysiWzFdIix2YWx1 ZTphWzFdLHZhbHVlU3BlYzppLHN0eWxlOnQuc3R5bGUsc3R5bGVTcGVjOnQuc3R5bGVTcGVj fSkpfWZ1bmN0aW9uIGgodCxuKXt2YXIgcz1Gcih0LnZhbHVlKSxsPU90KHQudmFsdWUpLGM9 bnVsbCE9PXQudmFsdWU/dC52YWx1ZTpuO2lmKGUpe2lmKHMhPT1lKXJldHVybltuZXcgQ3Qo dC5rZXksYyxzKyIgc3RvcCBkb21haW4gdHlwZSBtdXN0IG1hdGNoIHByZXZpb3VzIHN0b3Ag ZG9tYWluIHR5cGUgIitlKV19ZWxzZSBlPXM7aWYoIm51bWJlciIhPT1zJiYic3RyaW5nIiE9 PXMmJiJib29sZWFuIiE9PXMpcmV0dXJuW25ldyBDdCh0LmtleSxjLCJzdG9wIGRvbWFpbiB2 YWx1ZSBtdXN0IGJlIGEgbnVtYmVyLCBzdHJpbmcsIG9yIGJvb2xlYW4iKV07aWYoIm51bWJl ciIhPT1zJiYiY2F0ZWdvcmljYWwiIT09YSl7dmFyIHU9Im51bWJlciBleHBlY3RlZCwgIitz KyIgZm91bmQiO3JldHVybiB6cihpKSYmdm9pZCAwPT09YSYmKHUrPSdcbklmIHlvdSBpbnRl bmRlZCB0byB1c2UgYSBjYXRlZ29yaWNhbCBmdW5jdGlvbiwgc3BlY2lmeSBgInR5cGUiOiAi Y2F0ZWdvcmljYWwiYC4nKSxbbmV3IEN0KHQua2V5LGMsdSldfXJldHVybiJjYXRlZ29yaWNh bCIhPT1hfHwibnVtYmVyIiE9PXN8fGlzRmluaXRlKGwpJiZNYXRoLmZsb29yKGwpPT09bD8i Y2F0ZWdvcmljYWwiIT09YSYmIm51bWJlciI9PT1zJiZ2b2lkIDAhPT1yJiZsPHI/W25ldyBD dCh0LmtleSxjLCJzdG9wIGRvbWFpbiB2YWx1ZXMgbXVzdCBhcHBlYXIgaW4gYXNjZW5kaW5n IG9yZGVyIildOihyPWwsImNhdGVnb3JpY2FsIj09PWEmJmwgaW4gbz9bbmV3IEN0KHQua2V5 LGMsInN0b3AgZG9tYWluIHZhbHVlcyBtdXN0IGJlIHVuaXF1ZSIpXToob1tsXT0hMCxbXSkp OltuZXcgQ3QodC5rZXksYywiaW50ZWdlciBleHBlY3RlZCwgZm91bmQgIitsKV19fWZ1bmN0 aW9uIHJuKHQpe3ZhciBlPSgicHJvcGVydHkiPT09dC5leHByZXNzaW9uQ29udGV4dD9KcjpX cikoenQodC52YWx1ZSksdC52YWx1ZVNwZWMpO2lmKCJlcnJvciI9PT1lLnJlc3VsdClyZXR1 cm4gZS52YWx1ZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgQ3QoIiIrdC5rZXkrZS5r ZXksdC52YWx1ZSxlLm1lc3NhZ2UpfSkpO3ZhciByPWUudmFsdWUuZXhwcmVzc2lvbnx8ZS52 YWx1ZS5fc3R5bGVFeHByZXNzaW9uLmV4cHJlc3Npb247aWYoInByb3BlcnR5Ij09PXQuZXhw cmVzc2lvbkNvbnRleHQmJiJ0ZXh0LWZvbnQiPT09dC5wcm9wZXJ0eUtleSYmIXIub3V0cHV0 RGVmaW5lZCgpKXJldHVybltuZXcgQ3QodC5rZXksdC52YWx1ZSwnSW52YWxpZCBkYXRhIGV4 cHJlc3Npb24gZm9yICInK3QucHJvcGVydHlLZXkrJyIuIE91dHB1dCB2YWx1ZXMgbXVzdCBi ZSBjb250YWluZWQgYXMgbGl0ZXJhbHMgd2l0aGluIHRoZSBleHByZXNzaW9uLicpXTtpZigi cHJvcGVydHkiPT09dC5leHByZXNzaW9uQ29udGV4dCYmImxheW91dCI9PT10LnByb3BlcnR5 VHlwZSYmIUJlKHIpKXJldHVybltuZXcgQ3QodC5rZXksdC52YWx1ZSwnImZlYXR1cmUtc3Rh dGUiIGRhdGEgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgd2l0aCBsYXlvdXQgcHJv cGVydGllcy4nKV07aWYoImZpbHRlciI9PT10LmV4cHJlc3Npb25Db250ZXh0JiYhQmUocikp cmV0dXJuW25ldyBDdCh0LmtleSx0LnZhbHVlLCciZmVhdHVyZS1zdGF0ZSIgZGF0YSBleHBy ZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZCB3aXRoIGZpbHRlcnMuJyldO2lmKHQuZXhwcmVz c2lvbkNvbnRleHQmJjA9PT10LmV4cHJlc3Npb25Db250ZXh0LmluZGV4T2YoImNsdXN0ZXIi KSl7aWYoIU5lKHIsWyJ6b29tIiwiZmVhdHVyZS1zdGF0ZSJdKSlyZXR1cm5bbmV3IEN0KHQu a2V5LHQudmFsdWUsJyJ6b29tIiBhbmQgImZlYXR1cmUtc3RhdGUiIGV4cHJlc3Npb25zIGFy ZSBub3Qgc3VwcG9ydGVkIHdpdGggY2x1c3RlciBwcm9wZXJ0aWVzLicpXTtpZigiY2x1c3Rl ci1pbml0aWFsIj09PXQuZXhwcmVzc2lvbkNvbnRleHQmJiFGZShyKSlyZXR1cm5bbmV3IEN0 KHQua2V5LHQudmFsdWUsIkZlYXR1cmUgZGF0YSBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBv cnRlZCB3aXRoIGluaXRpYWwgZXhwcmVzc2lvbiBwYXJ0IG9mIGNsdXN0ZXIgcHJvcGVydGll cy4iKV19cmV0dXJuW119ZnVuY3Rpb24gbm4odCl7dmFyIGU9dC5rZXkscj10LnZhbHVlLG49 dC52YWx1ZVNwZWMsaT1bXTtyZXR1cm4gQXJyYXkuaXNBcnJheShuLnZhbHVlcyk/LTE9PT1u LnZhbHVlcy5pbmRleE9mKE90KHIpKSYmaS5wdXNoKG5ldyBDdChlLHIsImV4cGVjdGVkIG9u ZSBvZiBbIituLnZhbHVlcy5qb2luKCIsICIpKyJdLCAiK0pTT04uc3RyaW5naWZ5KHIpKyIg Zm91bmQiKSk6LTE9PT1PYmplY3Qua2V5cyhuLnZhbHVlcykuaW5kZXhPZihPdChyKSkmJmku cHVzaChuZXcgQ3QoZSxyLCJleHBlY3RlZCBvbmUgb2YgWyIrT2JqZWN0LmtleXMobi52YWx1 ZXMpLmpvaW4oIiwgIikrIl0sICIrSlNPTi5zdHJpbmdpZnkocikrIiBmb3VuZCIpKSxpfWZ1 bmN0aW9uIGFuKHQpe2lmKCEwPT09dHx8ITE9PT10KXJldHVybiEwO2lmKCFBcnJheS5pc0Fy cmF5KHQpfHwwPT09dC5sZW5ndGgpcmV0dXJuITE7c3dpdGNoKHRbMF0pe2Nhc2UiaGFzIjpy ZXR1cm4gdC5sZW5ndGg+PTImJiIkaWQiIT09dFsxXSYmIiR0eXBlIiE9PXRbMV07Y2FzZSJp biI6cmV0dXJuIHQubGVuZ3RoPj0zJiYoInN0cmluZyIhPXR5cGVvZiB0WzFdfHxBcnJheS5p c0FycmF5KHRbMl0pKTtjYXNlIiFpbiI6Y2FzZSIhaGFzIjpjYXNlIm5vbmUiOnJldHVybiEx O2Nhc2UiPT0iOmNhc2UiIT0iOmNhc2UiPiI6Y2FzZSI+PSI6Y2FzZSI8IjpjYXNlIjw9Ijpy ZXR1cm4gMyE9PXQubGVuZ3RofHxBcnJheS5pc0FycmF5KHRbMV0pfHxBcnJheS5pc0FycmF5 KHRbMl0pO2Nhc2UiYW55IjpjYXNlImFsbCI6Zm9yKHZhciBlPTAscj10LnNsaWNlKDEpO2U8 ci5sZW5ndGg7ZSs9MSl7dmFyIG49cltlXTtpZighYW4obikmJiJib29sZWFuIiE9dHlwZW9m IG4pcmV0dXJuITF9cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMH19S3IuZGVzZXJpYWxpemU9 ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBLcih0Ll9wYXJhbWV0ZXJzLHQuX3NwZWNpZmljYXRp b24pfSxLci5zZXJpYWxpemU9ZnVuY3Rpb24odCl7cmV0dXJue19wYXJhbWV0ZXJzOnQuX3Bh cmFtZXRlcnMsX3NwZWNpZmljYXRpb246dC5fc3BlY2lmaWNhdGlvbn19O3ZhciBvbj17dHlw ZToiYm9vbGVhbiIsZGVmYXVsdDohMSx0cmFuc2l0aW9uOiExLCJwcm9wZXJ0eS10eXBlIjoi ZGF0YS1kcml2ZW4iLGV4cHJlc3Npb246e2ludGVycG9sYXRlZDohMSxwYXJhbWV0ZXJzOlsi em9vbSIsImZlYXR1cmUiXX19O2Z1bmN0aW9uIHNuKHQpe2lmKG51bGw9PXQpcmV0dXJue2Zp bHRlcjpmdW5jdGlvbigpe3JldHVybiEwfSxuZWVkR2VvbWV0cnk6ITF9O2FuKHQpfHwodD1j bih0KSk7dmFyIGU9V3IodCxvbik7aWYoImVycm9yIj09PWUucmVzdWx0KXRocm93IG5ldyBF cnJvcihlLnZhbHVlLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQua2V5KyI6ICIrdC5tZXNz YWdlfSkpLmpvaW4oIiwgIikpO3JldHVybntmaWx0ZXI6ZnVuY3Rpb24odCxyLG4pe3JldHVy biBlLnZhbHVlLmV2YWx1YXRlKHQscix7fSxuKX0sbmVlZEdlb21ldHJ5OmZ1bmN0aW9uIHQo ZSl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuITE7aWYoIndpdGhpbiI9PT1lWzBdKXJl dHVybiEwO2Zvcih2YXIgcj0xO3I8ZS5sZW5ndGg7cisrKWlmKHQoZVtyXSkpcmV0dXJuITA7 cmV0dXJuITF9KHQpfX1mdW5jdGlvbiBsbih0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6MH1m dW5jdGlvbiBjbih0KXtpZighdClyZXR1cm4hMDt2YXIgZSxyPXRbMF07cmV0dXJuIHQubGVu Z3RoPD0xPyJhbnkiIT09cjoiPT0iPT09cj91bih0WzFdLHRbMl0sIj09Iik6IiE9Ij09PXI/ cG4odW4odFsxXSx0WzJdLCI9PSIpKToiPCI9PT1yfHwiPiI9PT1yfHwiPD0iPT09cnx8Ij49 Ij09PXI/dW4odFsxXSx0WzJdLHIpOiJhbnkiPT09cj8oZT10LnNsaWNlKDEpLFsiYW55Il0u Y29uY2F0KGUubWFwKGNuKSkpOiJhbGwiPT09cj9bImFsbCJdLmNvbmNhdCh0LnNsaWNlKDEp Lm1hcChjbikpOiJub25lIj09PXI/WyJhbGwiXS5jb25jYXQodC5zbGljZSgxKS5tYXAoY24p Lm1hcChwbikpOiJpbiI9PT1yP2ZuKHRbMV0sdC5zbGljZSgyKSk6IiFpbiI9PT1yP3BuKGZu KHRbMV0sdC5zbGljZSgyKSkpOiJoYXMiPT09cj9obih0WzFdKToiIWhhcyI9PT1yP3BuKGhu KHRbMV0pKToid2l0aGluIiE9PXJ8fHR9ZnVuY3Rpb24gdW4odCxlLHIpe3N3aXRjaCh0KXtj YXNlIiR0eXBlIjpyZXR1cm5bImZpbHRlci10eXBlLSIrcixlXTtjYXNlIiRpZCI6cmV0dXJu WyJmaWx0ZXItaWQtIityLGVdO2RlZmF1bHQ6cmV0dXJuWyJmaWx0ZXItIityLHQsZV19fWZ1 bmN0aW9uIGZuKHQsZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybiExO3N3aXRjaCh0KXtjYXNl IiR0eXBlIjpyZXR1cm5bImZpbHRlci10eXBlLWluIixbImxpdGVyYWwiLGVdXTtjYXNlIiRp ZCI6cmV0dXJuWyJmaWx0ZXItaWQtaW4iLFsibGl0ZXJhbCIsZV1dO2RlZmF1bHQ6cmV0dXJu IGUubGVuZ3RoPjIwMCYmIWUuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0IT10 eXBlb2YgZVswXX0pKT9bImZpbHRlci1pbi1sYXJnZSIsdCxbImxpdGVyYWwiLGUuc29ydChs bildXTpbImZpbHRlci1pbi1zbWFsbCIsdCxbImxpdGVyYWwiLGVdXX19ZnVuY3Rpb24gaG4o dCl7c3dpdGNoKHQpe2Nhc2UiJHR5cGUiOnJldHVybiEwO2Nhc2UiJGlkIjpyZXR1cm5bImZp bHRlci1oYXMtaWQiXTtkZWZhdWx0OnJldHVyblsiZmlsdGVyLWhhcyIsdF19fWZ1bmN0aW9u IHBuKHQpe3JldHVyblsiISIsdF19ZnVuY3Rpb24gZG4odCl7cmV0dXJuIGFuKHp0KHQudmFs dWUpKT9ybihJdCh7fSx0LHtleHByZXNzaW9uQ29udGV4dDoiZmlsdGVyIix2YWx1ZVNwZWM6 e3ZhbHVlOiJib29sZWFuIn19KSk6ZnVuY3Rpb24gdChlKXt2YXIgcj1lLnZhbHVlLG49ZS5r ZXk7aWYoImFycmF5IiE9PUZyKHIpKXJldHVybltuZXcgQ3QobixyLCJhcnJheSBleHBlY3Rl ZCwgIitGcihyKSsiIGZvdW5kIildO3ZhciBpLGE9ZS5zdHlsZVNwZWMsbz1bXTtpZihyLmxl bmd0aDwxKXJldHVybltuZXcgQ3QobixyLCJmaWx0ZXIgYXJyYXkgbXVzdCBoYXZlIGF0IGxl YXN0IDEgZWxlbWVudCIpXTtzd2l0Y2gobz1vLmNvbmNhdChubih7a2V5Om4rIlswXSIsdmFs dWU6clswXSx2YWx1ZVNwZWM6YS5maWx0ZXJfb3BlcmF0b3Isc3R5bGU6ZS5zdHlsZSxzdHls ZVNwZWM6ZS5zdHlsZVNwZWN9KSksT3QoclswXSkpe2Nhc2UiPCI6Y2FzZSI8PSI6Y2FzZSI+ IjpjYXNlIj49IjpyLmxlbmd0aD49MiYmIiR0eXBlIj09PU90KHJbMV0pJiZvLnB1c2gobmV3 IEN0KG4sciwnIiR0eXBlIiBjYW5ub3QgYmUgdXNlIHdpdGggb3BlcmF0b3IgIicrclswXSsn IicpKTtjYXNlIj09IjpjYXNlIiE9IjozIT09ci5sZW5ndGgmJm8ucHVzaChuZXcgQ3Qobixy LCdmaWx0ZXIgYXJyYXkgZm9yIG9wZXJhdG9yICInK3JbMF0rJyIgbXVzdCBoYXZlIDMgZWxl bWVudHMnKSk7Y2FzZSJpbiI6Y2FzZSIhaW4iOnIubGVuZ3RoPj0yJiYic3RyaW5nIiE9PShp PUZyKHJbMV0pKSYmby5wdXNoKG5ldyBDdChuKyJbMV0iLHJbMV0sInN0cmluZyBleHBlY3Rl ZCwgIitpKyIgZm91bmQiKSk7Zm9yKHZhciBzPTI7czxyLmxlbmd0aDtzKyspaT1GcihyW3Nd KSwiJHR5cGUiPT09T3QoclsxXSk/bz1vLmNvbmNhdChubih7a2V5Om4rIlsiK3MrIl0iLHZh bHVlOnJbc10sdmFsdWVTcGVjOmEuZ2VvbWV0cnlfdHlwZSxzdHlsZTplLnN0eWxlLHN0eWxl U3BlYzplLnN0eWxlU3BlY30pKToic3RyaW5nIiE9PWkmJiJudW1iZXIiIT09aSYmImJvb2xl YW4iIT09aSYmby5wdXNoKG5ldyBDdChuKyJbIitzKyJdIixyW3NdLCJzdHJpbmcsIG51bWJl ciwgb3IgYm9vbGVhbiBleHBlY3RlZCwgIitpKyIgZm91bmQiKSk7YnJlYWs7Y2FzZSJhbnki OmNhc2UiYWxsIjpjYXNlIm5vbmUiOmZvcih2YXIgbD0xO2w8ci5sZW5ndGg7bCsrKW89by5j b25jYXQodCh7a2V5Om4rIlsiK2wrIl0iLHZhbHVlOnJbbF0sc3R5bGU6ZS5zdHlsZSxzdHls ZVNwZWM6ZS5zdHlsZVNwZWN9KSk7YnJlYWs7Y2FzZSJoYXMiOmNhc2UiIWhhcyI6aT1Gcihy WzFdKSwyIT09ci5sZW5ndGg/by5wdXNoKG5ldyBDdChuLHIsJ2ZpbHRlciBhcnJheSBmb3Ig IicrclswXSsnIiBvcGVyYXRvciBtdXN0IGhhdmUgMiBlbGVtZW50cycpKToic3RyaW5nIiE9 PWkmJm8ucHVzaChuZXcgQ3QobisiWzFdIixyWzFdLCJzdHJpbmcgZXhwZWN0ZWQsICIraSsi IGZvdW5kIikpO2JyZWFrO2Nhc2Uid2l0aGluIjppPUZyKHJbMV0pLDIhPT1yLmxlbmd0aD9v LnB1c2gobmV3IEN0KG4sciwnZmlsdGVyIGFycmF5IGZvciAiJytyWzBdKyciIG9wZXJhdG9y IG11c3QgaGF2ZSAyIGVsZW1lbnRzJykpOiJvYmplY3QiIT09aSYmby5wdXNoKG5ldyBDdChu KyJbMV0iLHJbMV0sIm9iamVjdCBleHBlY3RlZCwgIitpKyIgZm91bmQiKSl9cmV0dXJuIG99 KHQpfWZ1bmN0aW9uIG1uKHQsZSl7dmFyIHI9dC5rZXksbj10LnN0eWxlLGk9dC5zdHlsZVNw ZWMsYT10LnZhbHVlLG89dC5vYmplY3RLZXkscz1pW2UrIl8iK3QubGF5ZXJUeXBlXTtpZigh cylyZXR1cm5bXTt2YXIgbD1vLm1hdGNoKC9eKC4qKS10cmFuc2l0aW9uJC8pO2lmKCJwYWlu dCI9PT1lJiZsJiZzW2xbMV1dJiZzW2xbMV1dLnRyYW5zaXRpb24pcmV0dXJuIGtuKHtrZXk6 cix2YWx1ZTphLHZhbHVlU3BlYzppLnRyYW5zaXRpb24sc3R5bGU6bixzdHlsZVNwZWM6aX0p O3ZhciBjLHU9dC52YWx1ZVNwZWN8fHNbb107aWYoIXUpcmV0dXJuW25ldyBDdChyLGEsJ3Vu a25vd24gcHJvcGVydHkgIicrbysnIicpXTtpZigic3RyaW5nIj09PUZyKGEpJiZ6cih1KSYm IXUudG9rZW5zJiYoYz0vXnsoW159XSspfSQvLmV4ZWMoYSkpKXJldHVybltuZXcgQ3Qocixh LCciJytvKyciIGRvZXMgbm90IHN1cHBvcnQgaW50ZXJwb2xhdGlvbiBzeW50YXhcblVzZSBh biBpZGVudGl0eSBwcm9wZXJ0eSBmdW5jdGlvbiBpbnN0ZWFkOiBgeyAidHlwZSI6ICJpZGVu dGl0eSIsICJwcm9wZXJ0eSI6ICcrSlNPTi5zdHJpbmdpZnkoY1sxXSkrIiB9YC4iKV07dmFy IGY9W107cmV0dXJuInN5bWJvbCI9PT10LmxheWVyVHlwZSYmKCJ0ZXh0LWZpZWxkIj09PW8m Jm4mJiFuLmdseXBocyYmZi5wdXNoKG5ldyBDdChyLGEsJ3VzZSBvZiAidGV4dC1maWVsZCIg cmVxdWlyZXMgYSBzdHlsZSAiZ2x5cGhzIiBwcm9wZXJ0eScpKSwidGV4dC1mb250Ij09PW8m JkJyKHp0KGEpKSYmImlkZW50aXR5Ij09PU90KGEudHlwZSkmJmYucHVzaChuZXcgQ3Qocixh LCcidGV4dC1mb250IiBkb2VzIG5vdCBzdXBwb3J0IGlkZW50aXR5IGZ1bmN0aW9ucycpKSks Zi5jb25jYXQoa24oe2tleTp0LmtleSx2YWx1ZTphLHZhbHVlU3BlYzp1LHN0eWxlOm4sc3R5 bGVTcGVjOmksZXhwcmVzc2lvbkNvbnRleHQ6InByb3BlcnR5Iixwcm9wZXJ0eVR5cGU6ZSxw cm9wZXJ0eUtleTpvfSkpfWZ1bmN0aW9uIGduKHQpe3JldHVybiBtbih0LCJwYWludCIpfWZ1 bmN0aW9uIHZuKHQpe3JldHVybiBtbih0LCJsYXlvdXQiKX1mdW5jdGlvbiB5bih0KXt2YXIg ZT1bXSxyPXQudmFsdWUsbj10LmtleSxpPXQuc3R5bGUsYT10LnN0eWxlU3BlYztyLnR5cGV8 fHIucmVmfHxlLnB1c2gobmV3IEN0KG4sciwnZWl0aGVyICJ0eXBlIiBvciAicmVmIiBpcyBy ZXF1aXJlZCcpKTt2YXIgbyxzPU90KHIudHlwZSksbD1PdChyLnJlZik7aWYoci5pZClmb3Io dmFyIGM9T3Qoci5pZCksdT0wO3U8dC5hcnJheUluZGV4O3UrKyl7dmFyIGY9aS5sYXllcnNb dV07T3QoZi5pZCk9PT1jJiZlLnB1c2gobmV3IEN0KG4sci5pZCwnZHVwbGljYXRlIGxheWVy IGlkICInK3IuaWQrJyIsIHByZXZpb3VzbHkgdXNlZCBhdCBsaW5lICcrZi5pZC5fX2xpbmVf XykpfWlmKCJyZWYiaW4gcilbInR5cGUiLCJzb3VyY2UiLCJzb3VyY2UtbGF5ZXIiLCJmaWx0 ZXIiLCJsYXlvdXQiXS5mb3JFYWNoKChmdW5jdGlvbih0KXt0IGluIHImJmUucHVzaChuZXcg Q3QobixyW3RdLCciJyt0KyciIGlzIHByb2hpYml0ZWQgZm9yIHJlZiBsYXllcnMnKSl9KSks aS5sYXllcnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7T3QodC5pZCk9PT1sJiYobz10KX0pKSxv P28ucmVmP2UucHVzaChuZXcgQ3QobixyLnJlZiwicmVmIGNhbm5vdCByZWZlcmVuY2UgYW5v dGhlciByZWYgbGF5ZXIiKSk6cz1PdChvLnR5cGUpOmUucHVzaChuZXcgQ3QobixyLnJlZiwn cmVmIGxheWVyICInK2wrJyIgbm90IGZvdW5kJykpO2Vsc2UgaWYoImJhY2tncm91bmQiIT09 cylpZihyLnNvdXJjZSl7dmFyIGg9aS5zb3VyY2VzJiZpLnNvdXJjZXNbci5zb3VyY2VdLHA9 aCYmT3QoaC50eXBlKTtoPyJ2ZWN0b3IiPT09cCYmInJhc3RlciI9PT1zP2UucHVzaChuZXcg Q3QobixyLnNvdXJjZSwnbGF5ZXIgIicrci5pZCsnIiByZXF1aXJlcyBhIHJhc3RlciBzb3Vy Y2UnKSk6InJhc3RlciI9PT1wJiYicmFzdGVyIiE9PXM/ZS5wdXNoKG5ldyBDdChuLHIuc291 cmNlLCdsYXllciAiJytyLmlkKyciIHJlcXVpcmVzIGEgdmVjdG9yIHNvdXJjZScpKToidmVj dG9yIiE9PXB8fHJbInNvdXJjZS1sYXllciJdPyJyYXN0ZXItZGVtIj09PXAmJiJoaWxsc2hh ZGUiIT09cz9lLnB1c2gobmV3IEN0KG4sci5zb3VyY2UsInJhc3Rlci1kZW0gc291cmNlIGNh biBvbmx5IGJlIHVzZWQgd2l0aCBsYXllciB0eXBlICdoaWxsc2hhZGUnLiIpKToibGluZSIh PT1zfHwhci5wYWludHx8IXIucGFpbnRbImxpbmUtZ3JhZGllbnQiXXx8Imdlb2pzb24iPT09 cCYmaC5saW5lTWV0cmljc3x8ZS5wdXNoKG5ldyBDdChuLHIsJ2xheWVyICInK3IuaWQrJyIg c3BlY2lmaWVzIGEgbGluZS1ncmFkaWVudCwgd2hpY2ggcmVxdWlyZXMgYSBHZW9KU09OIHNv dXJjZSB3aXRoIGBsaW5lTWV0cmljc2AgZW5hYmxlZC4nKSk6ZS5wdXNoKG5ldyBDdChuLHIs J2xheWVyICInK3IuaWQrJyIgbXVzdCBzcGVjaWZ5IGEgInNvdXJjZS1sYXllciInKSk6ZS5w dXNoKG5ldyBDdChuLHIuc291cmNlLCdzb3VyY2UgIicrci5zb3VyY2UrJyIgbm90IGZvdW5k JykpfWVsc2UgZS5wdXNoKG5ldyBDdChuLHIsJ21pc3NpbmcgcmVxdWlyZWQgcHJvcGVydHkg InNvdXJjZSInKSk7cmV0dXJuIGU9ZS5jb25jYXQoUXIoe2tleTpuLHZhbHVlOnIsdmFsdWVT cGVjOmEubGF5ZXIsc3R5bGU6dC5zdHlsZSxzdHlsZVNwZWM6dC5zdHlsZVNwZWMsb2JqZWN0 RWxlbWVudFZhbGlkYXRvcnM6eyIqIjpmdW5jdGlvbigpe3JldHVybltdfSx0eXBlOmZ1bmN0 aW9uKCl7cmV0dXJuIGtuKHtrZXk6bisiLnR5cGUiLHZhbHVlOnIudHlwZSx2YWx1ZVNwZWM6 YS5sYXllci50eXBlLHN0eWxlOnQuc3R5bGUsc3R5bGVTcGVjOnQuc3R5bGVTcGVjLG9iamVj dDpyLG9iamVjdEtleToidHlwZSJ9KX0sZmlsdGVyOmRuLGxheW91dDpmdW5jdGlvbih0KXty ZXR1cm4gUXIoe2xheWVyOnIsa2V5OnQua2V5LHZhbHVlOnQudmFsdWUsc3R5bGU6dC5zdHls ZSxzdHlsZVNwZWM6dC5zdHlsZVNwZWMsb2JqZWN0RWxlbWVudFZhbGlkYXRvcnM6eyIqIjpm dW5jdGlvbih0KXtyZXR1cm4gdm4oSXQoe2xheWVyVHlwZTpzfSx0KSl9fX0pfSxwYWludDpm dW5jdGlvbih0KXtyZXR1cm4gUXIoe2xheWVyOnIsa2V5OnQua2V5LHZhbHVlOnQudmFsdWUs c3R5bGU6dC5zdHlsZSxzdHlsZVNwZWM6dC5zdHlsZVNwZWMsb2JqZWN0RWxlbWVudFZhbGlk YXRvcnM6eyIqIjpmdW5jdGlvbih0KXtyZXR1cm4gZ24oSXQoe2xheWVyVHlwZTpzfSx0KSl9 fX0pfX19KSl9ZnVuY3Rpb24geG4odCl7dmFyIGU9dC52YWx1ZSxyPXQua2V5LG49RnIoZSk7 cmV0dXJuInN0cmluZyIhPT1uP1tuZXcgQ3QocixlLCJzdHJpbmcgZXhwZWN0ZWQsICIrbisi IGZvdW5kIildOltdfXZhciBibj17cHJvbW90ZUlkOmZ1bmN0aW9uKHQpe3ZhciBlPXQua2V5 LHI9dC52YWx1ZTtpZigic3RyaW5nIj09PUZyKHIpKXJldHVybiB4bih7a2V5OmUsdmFsdWU6 cn0pO3ZhciBuPVtdO2Zvcih2YXIgaSBpbiByKW4ucHVzaC5hcHBseShuLHhuKHtrZXk6ZSsi LiIraSx2YWx1ZTpyW2ldfSkpO3JldHVybiBufX07ZnVuY3Rpb24gX24odCl7dmFyIGU9dC52 YWx1ZSxyPXQua2V5LG49dC5zdHlsZVNwZWMsaT10LnN0eWxlO2lmKCFlLnR5cGUpcmV0dXJu W25ldyBDdChyLGUsJyJ0eXBlIiBpcyByZXF1aXJlZCcpXTt2YXIgYSxvPU90KGUudHlwZSk7 c3dpdGNoKG8pe2Nhc2UidmVjdG9yIjpjYXNlInJhc3RlciI6Y2FzZSJyYXN0ZXItZGVtIjpy ZXR1cm4gYT1Rcih7a2V5OnIsdmFsdWU6ZSx2YWx1ZVNwZWM6blsic291cmNlXyIrby5yZXBs YWNlKCItIiwiXyIpXSxzdHlsZTp0LnN0eWxlLHN0eWxlU3BlYzpuLG9iamVjdEVsZW1lbnRW YWxpZGF0b3JzOmJufSk7Y2FzZSJnZW9qc29uIjppZihhPVFyKHtrZXk6cix2YWx1ZTplLHZh bHVlU3BlYzpuLnNvdXJjZV9nZW9qc29uLHN0eWxlOmksc3R5bGVTcGVjOm4sb2JqZWN0RWxl bWVudFZhbGlkYXRvcnM6Ym59KSxlLmNsdXN0ZXIpZm9yKHZhciBzIGluIGUuY2x1c3RlclBy b3BlcnRpZXMpe3ZhciBsPWUuY2x1c3RlclByb3BlcnRpZXNbc10sYz1sWzBdLHU9bFsxXSxm PSJzdHJpbmciPT10eXBlb2YgYz9bYyxbImFjY3VtdWxhdGVkIl0sWyJnZXQiLHNdXTpjO2Eu cHVzaC5hcHBseShhLHJuKHtrZXk6cisiLiIrcysiLm1hcCIsdmFsdWU6dSxleHByZXNzaW9u Q29udGV4dDoiY2x1c3Rlci1tYXAifSkpLGEucHVzaC5hcHBseShhLHJuKHtrZXk6cisiLiIr cysiLnJlZHVjZSIsdmFsdWU6ZixleHByZXNzaW9uQ29udGV4dDoiY2x1c3Rlci1yZWR1Y2Ui fSkpfXJldHVybiBhO2Nhc2UidmlkZW8iOnJldHVybiBRcih7a2V5OnIsdmFsdWU6ZSx2YWx1 ZVNwZWM6bi5zb3VyY2VfdmlkZW8sc3R5bGU6aSxzdHlsZVNwZWM6bn0pO2Nhc2UiaW1hZ2Ui OnJldHVybiBRcih7a2V5OnIsdmFsdWU6ZSx2YWx1ZVNwZWM6bi5zb3VyY2VfaW1hZ2Usc3R5 bGU6aSxzdHlsZVNwZWM6bn0pO2Nhc2UiY2FudmFzIjpyZXR1cm5bbmV3IEN0KHIsbnVsbCwi UGxlYXNlIHVzZSBydW50aW1lIEFQSXMgdG8gYWRkIGNhbnZhcyBzb3VyY2VzLCByYXRoZXIg dGhhbiBpbmNsdWRpbmcgdGhlbSBpbiBzdHlsZXNoZWV0cy4iLCJzb3VyY2UuY2FudmFzIild O2RlZmF1bHQ6cmV0dXJuIG5uKHtrZXk6cisiLnR5cGUiLHZhbHVlOmUudHlwZSx2YWx1ZVNw ZWM6e3ZhbHVlczpbInZlY3RvciIsInJhc3RlciIsInJhc3Rlci1kZW0iLCJnZW9qc29uIiwi dmlkZW8iLCJpbWFnZSJdfSxzdHlsZTppLHN0eWxlU3BlYzpufSl9fWZ1bmN0aW9uIHduKHQp e3ZhciBlPXQudmFsdWUscj10LnN0eWxlU3BlYyxuPXIubGlnaHQsaT10LnN0eWxlLGE9W10s bz1GcihlKTtpZih2b2lkIDA9PT1lKXJldHVybiBhO2lmKCJvYmplY3QiIT09bylyZXR1cm4g YT1hLmNvbmNhdChbbmV3IEN0KCJsaWdodCIsZSwib2JqZWN0IGV4cGVjdGVkLCAiK28rIiBm b3VuZCIpXSk7Zm9yKHZhciBzIGluIGUpe3ZhciBsPXMubWF0Y2goL14oLiopLXRyYW5zaXRp b24kLyk7YT1sJiZuW2xbMV1dJiZuW2xbMV1dLnRyYW5zaXRpb24/YS5jb25jYXQoa24oe2tl eTpzLHZhbHVlOmVbc10sdmFsdWVTcGVjOnIudHJhbnNpdGlvbixzdHlsZTppLHN0eWxlU3Bl YzpyfSkpOm5bc10/YS5jb25jYXQoa24oe2tleTpzLHZhbHVlOmVbc10sdmFsdWVTcGVjOm5b c10sc3R5bGU6aSxzdHlsZVNwZWM6cn0pKTphLmNvbmNhdChbbmV3IEN0KHMsZVtzXSwndW5r bm93biBwcm9wZXJ0eSAiJytzKyciJyldKX1yZXR1cm4gYX12YXIgVG49eyIqIjpmdW5jdGlv bigpe3JldHVybltdfSxhcnJheTokcixib29sZWFuOmZ1bmN0aW9uKHQpe3ZhciBlPXQudmFs dWUscj10LmtleSxuPUZyKGUpO3JldHVybiJib29sZWFuIiE9PW4/W25ldyBDdChyLGUsImJv b2xlYW4gZXhwZWN0ZWQsICIrbisiIGZvdW5kIildOltdfSxudW1iZXI6dG4sY29sb3I6ZnVu Y3Rpb24odCl7dmFyIGU9dC5rZXkscj10LnZhbHVlLG49RnIocik7cmV0dXJuInN0cmluZyIh PT1uP1tuZXcgQ3QoZSxyLCJjb2xvciBleHBlY3RlZCwgIituKyIgZm91bmQiKV06bnVsbD09 PSR0KHIpP1tuZXcgQ3QoZSxyLCdjb2xvciBleHBlY3RlZCwgIicrcisnIiBmb3VuZCcpXTpb XX0sY29uc3RhbnRzOlB0LGVudW06bm4sZmlsdGVyOmRuLGZ1bmN0aW9uOmVuLGxheWVyOnlu LG9iamVjdDpRcixzb3VyY2U6X24sbGlnaHQ6d24sc3RyaW5nOnhuLGZvcm1hdHRlZDpmdW5j dGlvbih0KXtyZXR1cm4gMD09PXhuKHQpLmxlbmd0aD9bXTpybih0KX0scmVzb2x2ZWRJbWFn ZTpmdW5jdGlvbih0KXtyZXR1cm4gMD09PXhuKHQpLmxlbmd0aD9bXTpybih0KX19O2Z1bmN0 aW9uIGtuKHQpe3ZhciBlPXQudmFsdWUscj10LnZhbHVlU3BlYyxuPXQuc3R5bGVTcGVjO3Jl dHVybiByLmV4cHJlc3Npb24mJkJyKE90KGUpKT9lbih0KTpyLmV4cHJlc3Npb24mJllyKHp0 KGUpKT9ybih0KTpyLnR5cGUmJlRuW3IudHlwZV0/VG5bci50eXBlXSh0KTpRcihJdCh7fSx0 LHt2YWx1ZVNwZWM6ci50eXBlP25bci50eXBlXTpyfSkpfWZ1bmN0aW9uIEFuKHQpe3ZhciBl PXQudmFsdWUscj10LmtleSxuPXhuKHQpO3JldHVybiBuLmxlbmd0aHx8KC0xPT09ZS5pbmRl eE9mKCJ7Zm9udHN0YWNrfSIpJiZuLnB1c2gobmV3IEN0KHIsZSwnImdseXBocyIgdXJsIG11 c3QgaW5jbHVkZSBhICJ7Zm9udHN0YWNrfSIgdG9rZW4nKSksLTE9PT1lLmluZGV4T2YoInty YW5nZX0iKSYmbi5wdXNoKG5ldyBDdChyLGUsJyJnbHlwaHMiIHVybCBtdXN0IGluY2x1ZGUg YSAie3JhbmdlfSIgdG9rZW4nKSkpLG59ZnVuY3Rpb24gTW4odCxlKXt2b2lkIDA9PT1lJiYo ZT1MdCk7dmFyIHI9W107cmV0dXJuIHI9ci5jb25jYXQoa24oe2tleToiIix2YWx1ZTp0LHZh bHVlU3BlYzplLiRyb290LHN0eWxlU3BlYzplLHN0eWxlOnQsb2JqZWN0RWxlbWVudFZhbGlk YXRvcnM6e2dseXBoczpBbiwiKiI6ZnVuY3Rpb24oKXtyZXR1cm5bXX19fSkpLHQuY29uc3Rh bnRzJiYocj1yLmNvbmNhdChQdCh7a2V5OiJjb25zdGFudHMiLHZhbHVlOnQuY29uc3RhbnRz LHN0eWxlOnQsc3R5bGVTcGVjOmV9KSkpLFNuKHIpfWZ1bmN0aW9uIFNuKHQpe3JldHVybltd LmNvbmNhdCh0KS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0LmxpbmUtZS5saW5lfSkp fWZ1bmN0aW9uIEVuKHQpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSxyPWFyZ3Vt ZW50cy5sZW5ndGg7ci0tOyllW3JdPWFyZ3VtZW50c1tyXTtyZXR1cm4gU24odC5hcHBseSh0 aGlzLGUpKX19TW4uc291cmNlPUVuKF9uKSxNbi5saWdodD1Fbih3biksTW4ubGF5ZXI9RW4o eW4pLE1uLmZpbHRlcj1FbihkbiksTW4ucGFpbnRQcm9wZXJ0eT1FbihnbiksTW4ubGF5b3V0 UHJvcGVydHk9RW4odm4pO3ZhciBMbj1NbixDbj1Mbi5saWdodCxQbj1Mbi5wYWludFByb3Bl cnR5LEluPUxuLmxheW91dFByb3BlcnR5O2Z1bmN0aW9uIE9uKHQsZSl7dmFyIHI9ITE7aWYo ZSYmZS5sZW5ndGgpZm9yKHZhciBuPTAsaT1lO248aS5sZW5ndGg7bis9MSl7dmFyIGE9aVtu XTt0LmZpcmUobmV3IFN0KG5ldyBFcnJvcihhLm1lc3NhZ2UpKSkscj0hMH1yZXR1cm4gcn12 YXIgem49RG47ZnVuY3Rpb24gRG4odCxlLHIpe3ZhciBuPXRoaXMuY2VsbHM9W107aWYodCBp bnN0YW5jZW9mIEFycmF5QnVmZmVyKXt0aGlzLmFycmF5QnVmZmVyPXQ7dmFyIGk9bmV3IElu dDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlcik7dD1pWzBdLGU9aVsxXSxyPWlbMl0sdGhpcy5k PWUrMipyO2Zvcih2YXIgYT0wO2E8dGhpcy5kKnRoaXMuZDthKyspe3ZhciBvPWlbMythXSxz PWlbMythKzFdO24ucHVzaChvPT09cz9udWxsOmkuc3ViYXJyYXkobyxzKSl9dmFyIGw9aVsz K24ubGVuZ3RoXSxjPWlbMytuLmxlbmd0aCsxXTt0aGlzLmtleXM9aS5zdWJhcnJheShsLGMp LHRoaXMuYmJveGVzPWkuc3ViYXJyYXkoYyksdGhpcy5pbnNlcnQ9dGhpcy5faW5zZXJ0UmVh ZG9ubHl9ZWxzZXt0aGlzLmQ9ZSsyKnI7Zm9yKHZhciB1PTA7dTx0aGlzLmQqdGhpcy5kO3Ur KyluLnB1c2goW10pO3RoaXMua2V5cz1bXSx0aGlzLmJib3hlcz1bXX10aGlzLm49ZSx0aGlz LmV4dGVudD10LHRoaXMucGFkZGluZz1yLHRoaXMuc2NhbGU9ZS90LHRoaXMudWlkPTA7dmFy IGY9ci9lKnQ7dGhpcy5taW49LWYsdGhpcy5tYXg9dCtmfURuLnByb3RvdHlwZS5pbnNlcnQ9 ZnVuY3Rpb24odCxlLHIsbixpKXt0aGlzLl9mb3JFYWNoQ2VsbChlLHIsbixpLHRoaXMuX2lu c2VydENlbGwsdGhpcy51aWQrKyksdGhpcy5rZXlzLnB1c2godCksdGhpcy5iYm94ZXMucHVz aChlKSx0aGlzLmJib3hlcy5wdXNoKHIpLHRoaXMuYmJveGVzLnB1c2gobiksdGhpcy5iYm94 ZXMucHVzaChpKX0sRG4ucHJvdG90eXBlLl9pbnNlcnRSZWFkb25seT1mdW5jdGlvbigpe3Ro cm93IkNhbm5vdCBpbnNlcnQgaW50byBhIEdyaWRJbmRleCBjcmVhdGVkIGZyb20gYW4gQXJy YXlCdWZmZXIuIn0sRG4ucHJvdG90eXBlLl9pbnNlcnRDZWxsPWZ1bmN0aW9uKHQsZSxyLG4s aSxhKXt0aGlzLmNlbGxzW2ldLnB1c2goYSl9LERuLnByb3RvdHlwZS5xdWVyeT1mdW5jdGlv bih0LGUscixuLGkpe3ZhciBhPXRoaXMubWluLG89dGhpcy5tYXg7aWYodDw9YSYmZTw9YSYm bzw9ciYmbzw9biYmIWkpcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMu a2V5cyk7dmFyIHM9W107cmV0dXJuIHRoaXMuX2ZvckVhY2hDZWxsKHQsZSxyLG4sdGhpcy5f cXVlcnlDZWxsLHMse30saSksc30sRG4ucHJvdG90eXBlLl9xdWVyeUNlbGw9ZnVuY3Rpb24o dCxlLHIsbixpLGEsbyxzKXt2YXIgbD10aGlzLmNlbGxzW2ldO2lmKG51bGwhPT1sKWZvcih2 YXIgYz10aGlzLmtleXMsdT10aGlzLmJib3hlcyxmPTA7ZjxsLmxlbmd0aDtmKyspe3ZhciBo PWxbZl07aWYodm9pZCAwPT09b1toXSl7dmFyIHA9NCpoOyhzP3ModVtwKzBdLHVbcCsxXSx1 W3ArMl0sdVtwKzNdKTp0PD11W3ArMl0mJmU8PXVbcCszXSYmcj49dVtwKzBdJiZuPj11W3Ar MV0pPyhvW2hdPSEwLGEucHVzaChjW2hdKSk6b1toXT0hMX19fSxEbi5wcm90b3R5cGUuX2Zv ckVhY2hDZWxsPWZ1bmN0aW9uKHQsZSxyLG4saSxhLG8scyl7Zm9yKHZhciBsPXRoaXMuX2Nv bnZlcnRUb0NlbGxDb29yZCh0KSxjPXRoaXMuX2NvbnZlcnRUb0NlbGxDb29yZChlKSx1PXRo aXMuX2NvbnZlcnRUb0NlbGxDb29yZChyKSxmPXRoaXMuX2NvbnZlcnRUb0NlbGxDb29yZChu KSxoPWw7aDw9dTtoKyspZm9yKHZhciBwPWM7cDw9ZjtwKyspe3ZhciBkPXRoaXMuZCpwK2g7 aWYoKCFzfHxzKHRoaXMuX2NvbnZlcnRGcm9tQ2VsbENvb3JkKGgpLHRoaXMuX2NvbnZlcnRG cm9tQ2VsbENvb3JkKHApLHRoaXMuX2NvbnZlcnRGcm9tQ2VsbENvb3JkKGgrMSksdGhpcy5f Y29udmVydEZyb21DZWxsQ29vcmQocCsxKSkpJiZpLmNhbGwodGhpcyx0LGUscixuLGQsYSxv LHMpKXJldHVybn19LERuLnByb3RvdHlwZS5fY29udmVydEZyb21DZWxsQ29vcmQ9ZnVuY3Rp b24odCl7cmV0dXJuKHQtdGhpcy5wYWRkaW5nKS90aGlzLnNjYWxlfSxEbi5wcm90b3R5cGUu X2NvbnZlcnRUb0NlbGxDb29yZD1mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRo Lm1pbih0aGlzLmQtMSxNYXRoLmZsb29yKHQqdGhpcy5zY2FsZSkrdGhpcy5wYWRkaW5nKSl9 LERuLnByb3RvdHlwZS50b0FycmF5QnVmZmVyPWZ1bmN0aW9uKCl7aWYodGhpcy5hcnJheUJ1 ZmZlcilyZXR1cm4gdGhpcy5hcnJheUJ1ZmZlcjtmb3IodmFyIHQ9dGhpcy5jZWxscyxlPTMr dGhpcy5jZWxscy5sZW5ndGgrMSsxLHI9MCxuPTA7bjx0aGlzLmNlbGxzLmxlbmd0aDtuKysp cis9dGhpcy5jZWxsc1tuXS5sZW5ndGg7dmFyIGk9bmV3IEludDMyQXJyYXkoZStyK3RoaXMu a2V5cy5sZW5ndGgrdGhpcy5iYm94ZXMubGVuZ3RoKTtpWzBdPXRoaXMuZXh0ZW50LGlbMV09 dGhpcy5uLGlbMl09dGhpcy5wYWRkaW5nO2Zvcih2YXIgYT1lLG89MDtvPHQubGVuZ3RoO28r Kyl7dmFyIHM9dFtvXTtpWzMrb109YSxpLnNldChzLGEpLGErPXMubGVuZ3RofXJldHVybiBp WzMrdC5sZW5ndGhdPWEsaS5zZXQodGhpcy5rZXlzLGEpLGErPXRoaXMua2V5cy5sZW5ndGgs aVszK3QubGVuZ3RoKzFdPWEsaS5zZXQodGhpcy5iYm94ZXMsYSksYSs9dGhpcy5iYm94ZXMu bGVuZ3RoLGkuYnVmZmVyfTt2YXIgUm49c2VsZi5JbWFnZURhdGEsRm49c2VsZi5JbWFnZUJp dG1hcCxCbj17fTtmdW5jdGlvbiBObih0LGUscil7dm9pZCAwPT09ciYmKHI9e30pLE9iamVj dC5kZWZpbmVQcm9wZXJ0eShlLCJfY2xhc3NSZWdpc3RyeUtleSIse3ZhbHVlOnQsd3JpdGVh YmxlOiExfSksQm5bdF09e2tsYXNzOmUsb21pdDpyLm9taXR8fFtdLHNoYWxsb3c6ci5zaGFs bG93fHxbXX19Zm9yKHZhciBqbiBpbiBObigiT2JqZWN0IixPYmplY3QpLHpuLnNlcmlhbGl6 ZT1mdW5jdGlvbih0LGUpe3ZhciByPXQudG9BcnJheUJ1ZmZlcigpO3JldHVybiBlJiZlLnB1 c2gocikse2J1ZmZlcjpyfX0sem4uZGVzZXJpYWxpemU9ZnVuY3Rpb24odCl7cmV0dXJuIG5l dyB6bih0LmJ1ZmZlcil9LE5uKCJHcmlkIix6biksTm4oIkNvbG9yIix0ZSksTm4oIkVycm9y IixFcnJvciksTm4oIlJlc29sdmVkSW1hZ2UiLGllKSxObigiU3R5bGVQcm9wZXJ0eUZ1bmN0 aW9uIixLciksTm4oIlN0eWxlRXhwcmVzc2lvbiIsR3Ise29taXQ6WyJfZXZhbHVhdG9yIl19 KSxObigiWm9vbURlcGVuZGVudEV4cHJlc3Npb24iLFpyKSxObigiWm9vbUNvbnN0YW50RXhw cmVzc2lvbiIsWHIpLE5uKCJDb21wb3VuZEV4cHJlc3Npb24iLHhlLHtvbWl0OlsiX2V2YWx1 YXRlIl19KSxTcilTcltqbl0uX2NsYXNzUmVnaXN0cnlLZXl8fE5uKCJFeHByZXNzaW9uXyIr am4sU3Jbam5dKTtmdW5jdGlvbiBVbih0KXtyZXR1cm4gdCYmInVuZGVmaW5lZCIhPXR5cGVv ZiBBcnJheUJ1ZmZlciYmKHQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8dC5jb25zdHJ1Y3Rv ciYmIkFycmF5QnVmZmVyIj09PXQuY29uc3RydWN0b3IubmFtZSl9ZnVuY3Rpb24gVm4odCl7 cmV0dXJuIEZuJiZ0IGluc3RhbmNlb2YgRm59ZnVuY3Rpb24gSG4odCxlKXtpZihudWxsPT10 fHwiYm9vbGVhbiI9PXR5cGVvZiB0fHwibnVtYmVyIj09dHlwZW9mIHR8fCJzdHJpbmciPT10 eXBlb2YgdHx8dCBpbnN0YW5jZW9mIEJvb2xlYW58fHQgaW5zdGFuY2VvZiBOdW1iZXJ8fHQg aW5zdGFuY2VvZiBTdHJpbmd8fHQgaW5zdGFuY2VvZiBEYXRlfHx0IGluc3RhbmNlb2YgUmVn RXhwKXJldHVybiB0O2lmKFVuKHQpfHxWbih0KSlyZXR1cm4gZSYmZS5wdXNoKHQpLHQ7aWYo QXJyYXlCdWZmZXIuaXNWaWV3KHQpKXt2YXIgcj10O3JldHVybiBlJiZlLnB1c2goci5idWZm ZXIpLHJ9aWYodCBpbnN0YW5jZW9mIFJuKXJldHVybiBlJiZlLnB1c2godC5kYXRhLmJ1ZmZl ciksdDtpZihBcnJheS5pc0FycmF5KHQpKXtmb3IodmFyIG49W10saT0wLGE9dDtpPGEubGVu Z3RoO2krPTEpe3ZhciBvPWFbaV07bi5wdXNoKEhuKG8sZSkpfXJldHVybiBufWlmKCJvYmpl Y3QiPT10eXBlb2YgdCl7dmFyIHM9dC5jb25zdHJ1Y3RvcixsPXMuX2NsYXNzUmVnaXN0cnlL ZXk7aWYoIWwpdGhyb3cgbmV3IEVycm9yKCJjYW4ndCBzZXJpYWxpemUgb2JqZWN0IG9mIHVu cmVnaXN0ZXJlZCBjbGFzcyIpO3ZhciBjPXMuc2VyaWFsaXplP3Muc2VyaWFsaXplKHQsZSk6 e307aWYoIXMuc2VyaWFsaXplKXtmb3IodmFyIHUgaW4gdClpZih0Lmhhc093blByb3BlcnR5 KHUpJiYhKEJuW2xdLm9taXQuaW5kZXhPZih1KT49MCkpe3ZhciBmPXRbdV07Y1t1XT1Cblts XS5zaGFsbG93LmluZGV4T2YodSk+PTA/ZjpIbihmLGUpfXQgaW5zdGFuY2VvZiBFcnJvciYm KGMubWVzc2FnZT10Lm1lc3NhZ2UpfWlmKGMuJG5hbWUpdGhyb3cgbmV3IEVycm9yKCIkbmFt ZSBwcm9wZXJ0eSBpcyByZXNlcnZlZCBmb3Igd29ya2VyIHNlcmlhbGl6YXRpb24gbG9naWMu Iik7cmV0dXJuIk9iamVjdCIhPT1sJiYoYy4kbmFtZT1sKSxjfXRocm93IG5ldyBFcnJvcigi Y2FuJ3Qgc2VyaWFsaXplIG9iamVjdCBvZiB0eXBlICIrdHlwZW9mIHQpfWZ1bmN0aW9uIHFu KHQpe2lmKG51bGw9PXR8fCJib29sZWFuIj09dHlwZW9mIHR8fCJudW1iZXIiPT10eXBlb2Yg dHx8InN0cmluZyI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgQm9vbGVhbnx8dCBpbnN0YW5j ZW9mIE51bWJlcnx8dCBpbnN0YW5jZW9mIFN0cmluZ3x8dCBpbnN0YW5jZW9mIERhdGV8fHQg aW5zdGFuY2VvZiBSZWdFeHB8fFVuKHQpfHxWbih0KXx8QXJyYXlCdWZmZXIuaXNWaWV3KHQp fHx0IGluc3RhbmNlb2YgUm4pcmV0dXJuIHQ7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4g dC5tYXAocW4pO2lmKCJvYmplY3QiPT10eXBlb2YgdCl7dmFyIGU9dC4kbmFtZXx8Ik9iamVj dCIscj1CbltlXS5rbGFzcztpZighcil0aHJvdyBuZXcgRXJyb3IoImNhbid0IGRlc2VyaWFs aXplIHVucmVnaXN0ZXJlZCBjbGFzcyAiK2UpO2lmKHIuZGVzZXJpYWxpemUpcmV0dXJuIHIu ZGVzZXJpYWxpemUodCk7Zm9yKHZhciBuPU9iamVjdC5jcmVhdGUoci5wcm90b3R5cGUpLGk9 MCxhPU9iamVjdC5rZXlzKHQpO2k8YS5sZW5ndGg7aSs9MSl7dmFyIG89YVtpXTtpZigiJG5h bWUiIT09byl7dmFyIHM9dFtvXTtuW29dPUJuW2VdLnNoYWxsb3cuaW5kZXhPZihvKT49MD9z OnFuKHMpfX1yZXR1cm4gbn10aHJvdyBuZXcgRXJyb3IoImNhbid0IGRlc2VyaWFsaXplIG9i amVjdCBvZiB0eXBlICIrdHlwZW9mIHQpfXZhciBHbj1mdW5jdGlvbigpe3RoaXMuZmlyc3Q9 ITB9O0duLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCxlKXt2YXIgcj1NYXRoLmZsb29y KHQpO3JldHVybiB0aGlzLmZpcnN0Pyh0aGlzLmZpcnN0PSExLHRoaXMubGFzdEludGVnZXJa b29tPXIsdGhpcy5sYXN0SW50ZWdlclpvb21UaW1lPTAsdGhpcy5sYXN0Wm9vbT10LHRoaXMu bGFzdEZsb29yWm9vbT1yLCEwKToodGhpcy5sYXN0Rmxvb3Jab29tPnI/KHRoaXMubGFzdElu dGVnZXJab29tPXIrMSx0aGlzLmxhc3RJbnRlZ2VyWm9vbVRpbWU9ZSk6dGhpcy5sYXN0Rmxv b3Jab29tPHImJih0aGlzLmxhc3RJbnRlZ2VyWm9vbT1yLHRoaXMubGFzdEludGVnZXJab29t VGltZT1lKSx0IT09dGhpcy5sYXN0Wm9vbSYmKHRoaXMubGFzdFpvb209dCx0aGlzLmxhc3RG bG9vclpvb209ciwhMCkpfTt2YXIgWW49eyJMYXRpbi0xIFN1cHBsZW1lbnQiOmZ1bmN0aW9u KHQpe3JldHVybiB0Pj0xMjgmJnQ8PTI1NX0sQXJhYmljOmZ1bmN0aW9uKHQpe3JldHVybiB0 Pj0xNTM2JiZ0PD0xNzkxfSwiQXJhYmljIFN1cHBsZW1lbnQiOmZ1bmN0aW9uKHQpe3JldHVy biB0Pj0xODcyJiZ0PD0xOTE5fSwiQXJhYmljIEV4dGVuZGVkLUEiOmZ1bmN0aW9uKHQpe3Jl dHVybiB0Pj0yMjA4JiZ0PD0yMzAzfSwiSGFuZ3VsIEphbW8iOmZ1bmN0aW9uKHQpe3JldHVy biB0Pj00MzUyJiZ0PD00NjA3fSwiVW5pZmllZCBDYW5hZGlhbiBBYm9yaWdpbmFsIFN5bGxh YmljcyI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTUxMjAmJnQ8PTU3NTl9LEtobWVyOmZ1bmN0 aW9uKHQpe3JldHVybiB0Pj02MDE2JiZ0PD02MTQzfSwiVW5pZmllZCBDYW5hZGlhbiBBYm9y aWdpbmFsIFN5bGxhYmljcyBFeHRlbmRlZCI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTYzMjAm JnQ8PTYzOTl9LCJHZW5lcmFsIFB1bmN0dWF0aW9uIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49 ODE5MiYmdDw9ODMwM30sIkxldHRlcmxpa2UgU3ltYm9scyI6ZnVuY3Rpb24odCl7cmV0dXJu IHQ+PTg0NDgmJnQ8PTg1Mjd9LCJOdW1iZXIgRm9ybXMiOmZ1bmN0aW9uKHQpe3JldHVybiB0 Pj04NTI4JiZ0PD04NTkxfSwiTWlzY2VsbGFuZW91cyBUZWNobmljYWwiOmZ1bmN0aW9uKHQp e3JldHVybiB0Pj04OTYwJiZ0PD05MjE1fSwiQ29udHJvbCBQaWN0dXJlcyI6ZnVuY3Rpb24o dCl7cmV0dXJuIHQ+PTkyMTYmJnQ8PTkyNzl9LCJPcHRpY2FsIENoYXJhY3RlciBSZWNvZ25p dGlvbiI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTkyODAmJnQ8PTkzMTF9LCJFbmNsb3NlZCBB bHBoYW51bWVyaWNzIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49OTMxMiYmdDw9OTQ3MX0sIkdl b21ldHJpYyBTaGFwZXMiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj05NjMyJiZ0PD05NzI3fSwi TWlzY2VsbGFuZW91cyBTeW1ib2xzIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49OTcyOCYmdDw9 OTk4M30sIk1pc2NlbGxhbmVvdXMgU3ltYm9scyBhbmQgQXJyb3dzIjpmdW5jdGlvbih0KXty ZXR1cm4gdD49MTEwMDgmJnQ8PTExMjYzfSwiQ0pLIFJhZGljYWxzIFN1cHBsZW1lbnQiOmZ1 bmN0aW9uKHQpe3JldHVybiB0Pj0xMTkwNCYmdDw9MTIwMzF9LCJLYW5neGkgUmFkaWNhbHMi OmZ1bmN0aW9uKHQpe3JldHVybiB0Pj0xMjAzMiYmdDw9MTIyNTV9LCJJZGVvZ3JhcGhpYyBE ZXNjcmlwdGlvbiBDaGFyYWN0ZXJzIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49MTIyNzImJnQ8 PTEyMjg3fSwiQ0pLIFN5bWJvbHMgYW5kIFB1bmN0dWF0aW9uIjpmdW5jdGlvbih0KXtyZXR1 cm4gdD49MTIyODgmJnQ8PTEyMzUxfSxIaXJhZ2FuYTpmdW5jdGlvbih0KXtyZXR1cm4gdD49 MTIzNTImJnQ8PTEyNDQ3fSxLYXRha2FuYTpmdW5jdGlvbih0KXtyZXR1cm4gdD49MTI0NDgm JnQ8PTEyNTQzfSxCb3BvbW9mbzpmdW5jdGlvbih0KXtyZXR1cm4gdD49MTI1NDQmJnQ8PTEy NTkxfSwiSGFuZ3VsIENvbXBhdGliaWxpdHkgSmFtbyI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+ PTEyNTkyJiZ0PD0xMjY4N30sS2FuYnVuOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj0xMjY4OCYm dDw9MTI3MDN9LCJCb3BvbW9mbyBFeHRlbmRlZCI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTEy NzA0JiZ0PD0xMjczNX0sIkNKSyBTdHJva2VzIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49MTI3 MzYmJnQ8PTEyNzgzfSwiS2F0YWthbmEgUGhvbmV0aWMgRXh0ZW5zaW9ucyI6ZnVuY3Rpb24o dCl7cmV0dXJuIHQ+PTEyNzg0JiZ0PD0xMjc5OX0sIkVuY2xvc2VkIENKSyBMZXR0ZXJzIGFu ZCBNb250aHMiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj0xMjgwMCYmdDw9MTMwNTV9LCJDSksg Q29tcGF0aWJpbGl0eSI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTEzMDU2JiZ0PD0xMzMxMX0s IkNKSyBVbmlmaWVkIElkZW9ncmFwaHMgRXh0ZW5zaW9uIEEiOmZ1bmN0aW9uKHQpe3JldHVy biB0Pj0xMzMxMiYmdDw9MTk5MDN9LCJZaWppbmcgSGV4YWdyYW0gU3ltYm9scyI6ZnVuY3Rp b24odCl7cmV0dXJuIHQ+PTE5OTA0JiZ0PD0xOTk2N30sIkNKSyBVbmlmaWVkIElkZW9ncmFw aHMiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj0xOTk2OCYmdDw9NDA5NTl9LCJZaSBTeWxsYWJs ZXMiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj00MDk2MCYmdDw9NDIxMjd9LCJZaSBSYWRpY2Fs cyI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTQyMTI4JiZ0PD00MjE5MX0sIkhhbmd1bCBKYW1v IEV4dGVuZGVkLUEiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj00MzM2MCYmdDw9NDMzOTF9LCJI YW5ndWwgU3lsbGFibGVzIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49NDQwMzImJnQ8PTU1MjE1 fSwiSGFuZ3VsIEphbW8gRXh0ZW5kZWQtQiI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTU1MjE2 JiZ0PD01NTI5NX0sIlByaXZhdGUgVXNlIEFyZWEiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj01 NzM0NCYmdDw9NjM3NDN9LCJDSksgQ29tcGF0aWJpbGl0eSBJZGVvZ3JhcGhzIjpmdW5jdGlv bih0KXtyZXR1cm4gdD49NjM3NDQmJnQ8PTY0MjU1fSwiQXJhYmljIFByZXNlbnRhdGlvbiBG b3Jtcy1BIjpmdW5jdGlvbih0KXtyZXR1cm4gdD49NjQzMzYmJnQ8PTY1MDIzfSwiVmVydGlj YWwgRm9ybXMiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj02NTA0MCYmdDw9NjUwNTV9LCJDSksg Q29tcGF0aWJpbGl0eSBGb3JtcyI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTY1MDcyJiZ0PD02 NTEwM30sIlNtYWxsIEZvcm0gVmFyaWFudHMiOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj02NTEw NCYmdDw9NjUxMzV9LCJBcmFiaWMgUHJlc2VudGF0aW9uIEZvcm1zLUIiOmZ1bmN0aW9uKHQp e3JldHVybiB0Pj02NTEzNiYmdDw9NjUyNzl9LCJIYWxmd2lkdGggYW5kIEZ1bGx3aWR0aCBG b3JtcyI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTY1MjgwJiZ0PD02NTUxOX19O2Z1bmN0aW9u IFduKHQpe2Zvcih2YXIgZT0wLHI9dDtlPHIubGVuZ3RoO2UrPTEpe2lmKFpuKHJbZV0uY2hh ckNvZGVBdCgwKSkpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gWG4odCl7cmV0dXJuIVlu LkFyYWJpYyh0KSYmKCFZblsiQXJhYmljIFN1cHBsZW1lbnQiXSh0KSYmKCFZblsiQXJhYmlj IEV4dGVuZGVkLUEiXSh0KSYmKCFZblsiQXJhYmljIFByZXNlbnRhdGlvbiBGb3Jtcy1BIl0o dCkmJiFZblsiQXJhYmljIFByZXNlbnRhdGlvbiBGb3Jtcy1CIl0odCkpKSl9ZnVuY3Rpb24g Wm4odCl7cmV0dXJuIDc0Nj09PXR8fDc0Nz09PXR8fCEodDw0MzUyKSYmKCEhWW5bIkJvcG9t b2ZvIEV4dGVuZGVkIl0odCl8fCghIVluLkJvcG9tb2ZvKHQpfHwoISghWW5bIkNKSyBDb21w YXRpYmlsaXR5IEZvcm1zIl0odCl8fHQ+PTY1MDk3JiZ0PD02NTEwMyl8fCghIVluWyJDSksg Q29tcGF0aWJpbGl0eSBJZGVvZ3JhcGhzIl0odCl8fCghIVluWyJDSksgQ29tcGF0aWJpbGl0 eSJdKHQpfHwoISFZblsiQ0pLIFJhZGljYWxzIFN1cHBsZW1lbnQiXSh0KXx8KCEhWW5bIkNK SyBTdHJva2VzIl0odCl8fCghKCFZblsiQ0pLIFN5bWJvbHMgYW5kIFB1bmN0dWF0aW9uIl0o dCl8fHQ+PTEyMjk2JiZ0PD0xMjMwNXx8dD49MTIzMDgmJnQ8PTEyMzE5fHwxMjMzNj09PXQp fHwoISFZblsiQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyBFeHRlbnNpb24gQSJdKHQpfHwoISFZ blsiQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyJdKHQpfHwoISFZblsiRW5jbG9zZWQgQ0pLIExl dHRlcnMgYW5kIE1vbnRocyJdKHQpfHwoISFZblsiSGFuZ3VsIENvbXBhdGliaWxpdHkgSmFt byJdKHQpfHwoISFZblsiSGFuZ3VsIEphbW8gRXh0ZW5kZWQtQSJdKHQpfHwoISFZblsiSGFu Z3VsIEphbW8gRXh0ZW5kZWQtQiJdKHQpfHwoISFZblsiSGFuZ3VsIEphbW8iXSh0KXx8KCEh WW5bIkhhbmd1bCBTeWxsYWJsZXMiXSh0KXx8KCEhWW4uSGlyYWdhbmEodCl8fCghIVluWyJJ ZGVvZ3JhcGhpYyBEZXNjcmlwdGlvbiBDaGFyYWN0ZXJzIl0odCl8fCghIVluLkthbmJ1bih0 KXx8KCEhWW5bIkthbmd4aSBSYWRpY2FscyJdKHQpfHwoISFZblsiS2F0YWthbmEgUGhvbmV0 aWMgRXh0ZW5zaW9ucyJdKHQpfHwoISghWW4uS2F0YWthbmEodCl8fDEyNTQwPT09dCl8fCgh KCFZblsiSGFsZndpZHRoIGFuZCBGdWxsd2lkdGggRm9ybXMiXSh0KXx8NjUyODg9PT10fHw2 NTI4OT09PXR8fDY1MjkzPT09dHx8dD49NjUzMDYmJnQ8PTY1MzEwfHw2NTMzOT09PXR8fDY1 MzQxPT09dHx8NjUzNDM9PT10fHx0Pj02NTM3MSYmdDw9NjU1MDN8fDY1NTA3PT09dHx8dD49 NjU1MTImJnQ8PTY1NTE5KXx8KCEoIVluWyJTbWFsbCBGb3JtIFZhcmlhbnRzIl0odCl8fHQ+ PTY1MTEyJiZ0PD02NTExOHx8dD49NjUxMjMmJnQ8PTY1MTI2KXx8KCEhWW5bIlVuaWZpZWQg Q2FuYWRpYW4gQWJvcmlnaW5hbCBTeWxsYWJpY3MiXSh0KXx8KCEhWW5bIlVuaWZpZWQgQ2Fu YWRpYW4gQWJvcmlnaW5hbCBTeWxsYWJpY3MgRXh0ZW5kZWQiXSh0KXx8KCEhWW5bIlZlcnRp Y2FsIEZvcm1zIl0odCl8fCghIVluWyJZaWppbmcgSGV4YWdyYW0gU3ltYm9scyJdKHQpfHwo ISFZblsiWWkgU3lsbGFibGVzIl0odCl8fCEhWW5bIllpIFJhZGljYWxzIl0odCkpKSkpKSkp KSkpKSkpKSkpKSkpKSkpKSkpKSkpKX1mdW5jdGlvbiBKbih0KXtyZXR1cm4hKFpuKHQpfHxm dW5jdGlvbih0KXtyZXR1cm4hKCFZblsiTGF0aW4tMSBTdXBwbGVtZW50Il0odCl8fDE2NyE9 PXQmJjE2OSE9PXQmJjE3NCE9PXQmJjE3NyE9PXQmJjE4OCE9PXQmJjE4OSE9PXQmJjE5MCE9 PXQmJjIxNSE9PXQmJjI0NyE9PXQpfHwoISghWW5bIkdlbmVyYWwgUHVuY3R1YXRpb24iXSh0 KXx8ODIxNCE9PXQmJjgyMjQhPT10JiY4MjI1IT09dCYmODI0MCE9PXQmJjgyNDEhPT10JiY4 MjUxIT09dCYmODI1MiE9PXQmJjgyNTghPT10JiY4MjYzIT09dCYmODI2NCE9PXQmJjgyNjUh PT10JiY4MjczIT09dCl8fCghIVluWyJMZXR0ZXJsaWtlIFN5bWJvbHMiXSh0KXx8KCEhWW5b Ik51bWJlciBGb3JtcyJdKHQpfHwoISghWW5bIk1pc2NlbGxhbmVvdXMgVGVjaG5pY2FsIl0o dCl8fCEodD49ODk2MCYmdDw9ODk2N3x8dD49ODk3MiYmdDw9ODk5MXx8dD49ODk5NiYmdDw9 OWUzfHw5MDAzPT09dHx8dD49OTA4NSYmdDw9OTExNHx8dD49OTE1MCYmdDw9OTE2NXx8OTE2 Nz09PXR8fHQ+PTkxNjkmJnQ8PTkxNzl8fHQ+PTkxODYmJnQ8PTkyMTUpKXx8KCEoIVluWyJD b250cm9sIFBpY3R1cmVzIl0odCl8fDkyNTE9PT10KXx8KCEhWW5bIk9wdGljYWwgQ2hhcmFj dGVyIFJlY29nbml0aW9uIl0odCl8fCghIVluWyJFbmNsb3NlZCBBbHBoYW51bWVyaWNzIl0o dCl8fCghIVluWyJHZW9tZXRyaWMgU2hhcGVzIl0odCl8fCghKCFZblsiTWlzY2VsbGFuZW91 cyBTeW1ib2xzIl0odCl8fHQ+PTk3NTQmJnQ8PTk3NTkpfHwoISghWW5bIk1pc2NlbGxhbmVv dXMgU3ltYm9scyBhbmQgQXJyb3dzIl0odCl8fCEodD49MTEwMjYmJnQ8PTExMDU1fHx0Pj0x MTA4OCYmdDw9MTEwOTd8fHQ+PTExMTkyJiZ0PD0xMTI0MykpfHwoISFZblsiQ0pLIFN5bWJv bHMgYW5kIFB1bmN0dWF0aW9uIl0odCl8fCghIVluLkthdGFrYW5hKHQpfHwoISFZblsiUHJp dmF0ZSBVc2UgQXJlYSJdKHQpfHwoISFZblsiQ0pLIENvbXBhdGliaWxpdHkgRm9ybXMiXSh0 KXx8KCEhWW5bIlNtYWxsIEZvcm0gVmFyaWFudHMiXSh0KXx8KCEhWW5bIkhhbGZ3aWR0aCBh bmQgRnVsbHdpZHRoIEZvcm1zIl0odCl8fCg4NzM0PT09dHx8ODc1Nj09PXR8fDg3NTc9PT10 fHx0Pj05OTg0JiZ0PD0xMDA4N3x8dD49MTAxMDImJnQ8PTEwMTMxfHw2NTUzMj09PXR8fDY1 NTMzPT09dCkpKSkpKSkpKSkpKSkpKSkpfSh0KSl9ZnVuY3Rpb24gS24odCl7cmV0dXJuIHQ+ PTE0MjQmJnQ8PTIzMDN8fFluWyJBcmFiaWMgUHJlc2VudGF0aW9uIEZvcm1zLUEiXSh0KXx8 WW5bIkFyYWJpYyBQcmVzZW50YXRpb24gRm9ybXMtQiJdKHQpfWZ1bmN0aW9uIFFuKHQsZSl7 cmV0dXJuISghZSYmS24odCkpJiYhKHQ+PTIzMDQmJnQ8PTM1ODN8fHQ+PTM4NDAmJnQ8PTQy NTV8fFluLktobWVyKHQpKX1mdW5jdGlvbiAkbih0KXtmb3IodmFyIGU9MCxyPXQ7ZTxyLmxl bmd0aDtlKz0xKXtpZihLbihyW2VdLmNoYXJDb2RlQXQoMCkpKXJldHVybiEwfXJldHVybiEx fXZhciB0aT0iZGVmZXJyZWQiLGVpPSJsb2FkaW5nIixyaT0ibG9hZGVkIixuaT0iZXJyb3Ii LGlpPW51bGwsYWk9InVuYXZhaWxhYmxlIixvaT1udWxsLHNpPWZ1bmN0aW9uKHQpe3QmJiJz dHJpbmciPT10eXBlb2YgdCYmdC5pbmRleE9mKCJOZXR3b3JrRXJyb3IiKT4tMSYmKGFpPW5p KSxpaSYmaWkodCl9O2Z1bmN0aW9uIGxpKCl7Y2kuZmlyZShuZXcgTXQoInBsdWdpblN0YXRl Q2hhbmdlIix7cGx1Z2luU3RhdHVzOmFpLHBsdWdpblVSTDpvaX0pKX12YXIgY2k9bmV3IEV0 LHVpPWZ1bmN0aW9uKCl7cmV0dXJuIGFpfSxmaT1mdW5jdGlvbigpe2lmKGFpIT09dGl8fCFv aSl0aHJvdyBuZXcgRXJyb3IoInJ0bC10ZXh0LXBsdWdpbiBjYW5ub3QgYmUgZG93bmxvYWRl ZCB1bmxlc3MgYSBwbHVnaW5VUkwgaXMgc3BlY2lmaWVkIik7YWk9ZWksbGkoKSxvaSYmeHQo e3VybDpvaX0sKGZ1bmN0aW9uKHQpe3Q/c2kodCk6KGFpPXJpLGxpKCkpfSkpfSxoaT17YXBw bHlBcmFiaWNTaGFwaW5nOm51bGwscHJvY2Vzc0JpZGlyZWN0aW9uYWxUZXh0Om51bGwscHJv Y2Vzc1N0eWxlZEJpZGlyZWN0aW9uYWxUZXh0Om51bGwsaXNMb2FkZWQ6ZnVuY3Rpb24oKXty ZXR1cm4gYWk9PT1yaXx8bnVsbCE9aGkuYXBwbHlBcmFiaWNTaGFwaW5nfSxpc0xvYWRpbmc6 ZnVuY3Rpb24oKXtyZXR1cm4gYWk9PT1laX0sc2V0U3RhdGU6ZnVuY3Rpb24odCl7YWk9dC5w bHVnaW5TdGF0dXMsb2k9dC5wbHVnaW5VUkx9LGlzUGFyc2VkOmZ1bmN0aW9uKCl7cmV0dXJu IG51bGwhPWhpLmFwcGx5QXJhYmljU2hhcGluZyYmbnVsbCE9aGkucHJvY2Vzc0JpZGlyZWN0 aW9uYWxUZXh0JiZudWxsIT1oaS5wcm9jZXNzU3R5bGVkQmlkaXJlY3Rpb25hbFRleHR9LGdl dFBsdWdpblVSTDpmdW5jdGlvbigpe3JldHVybiBvaX19LHBpPWZ1bmN0aW9uKHQsZSl7dGhp cy56b29tPXQsZT8odGhpcy5ub3c9ZS5ub3csdGhpcy5mYWRlRHVyYXRpb249ZS5mYWRlRHVy YXRpb24sdGhpcy56b29tSGlzdG9yeT1lLnpvb21IaXN0b3J5LHRoaXMudHJhbnNpdGlvbj1l LnRyYW5zaXRpb24pOih0aGlzLm5vdz0wLHRoaXMuZmFkZUR1cmF0aW9uPTAsdGhpcy56b29t SGlzdG9yeT1uZXcgR24sdGhpcy50cmFuc2l0aW9uPXt9KX07cGkucHJvdG90eXBlLmlzU3Vw cG9ydGVkU2NyaXB0PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LGUpe2Zvcih2YXIg cj0wLG49dDtyPG4ubGVuZ3RoO3IrPTEpe2lmKCFRbihuW3JdLmNoYXJDb2RlQXQoMCksZSkp cmV0dXJuITF9cmV0dXJuITB9KHQsaGkuaXNMb2FkZWQoKSl9LHBpLnByb3RvdHlwZS5jcm9z c0ZhZGluZ0ZhY3Rvcj1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5mYWRlRHVyYXRpb24/ MTpNYXRoLm1pbigodGhpcy5ub3ctdGhpcy56b29tSGlzdG9yeS5sYXN0SW50ZWdlclpvb21U aW1lKS90aGlzLmZhZGVEdXJhdGlvbiwxKX0scGkucHJvdG90eXBlLmdldENyb3NzZmFkZVBh cmFtZXRlcnM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnpvb20sZT10LU1hdGguZmxvb3IodCks cj10aGlzLmNyb3NzRmFkaW5nRmFjdG9yKCk7cmV0dXJuIHQ+dGhpcy56b29tSGlzdG9yeS5s YXN0SW50ZWdlclpvb20/e2Zyb21TY2FsZToyLHRvU2NhbGU6MSx0OmUrKDEtZSkqcn06e2Zy b21TY2FsZTouNSx0b1NjYWxlOjEsdDoxLSgxLXIpKmV9fTt2YXIgZGk9ZnVuY3Rpb24odCxl KXt0aGlzLnByb3BlcnR5PXQsdGhpcy52YWx1ZT1lLHRoaXMuZXhwcmVzc2lvbj1mdW5jdGlv bih0LGUpe2lmKEJyKHQpKXJldHVybiBuZXcgS3IodCxlKTtpZihZcih0KSl7dmFyIHI9SnIo dCxlKTtpZigiZXJyb3IiPT09ci5yZXN1bHQpdGhyb3cgbmV3IEVycm9yKHIudmFsdWUubWFw KChmdW5jdGlvbih0KXtyZXR1cm4gdC5rZXkrIjogIit0Lm1lc3NhZ2V9KSkuam9pbigiLCAi KSk7cmV0dXJuIHIudmFsdWV9dmFyIG49dDtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJiJj b2xvciI9PT1lLnR5cGUmJihuPXRlLnBhcnNlKHQpKSx7a2luZDoiY29uc3RhbnQiLGV2YWx1 YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIG59fX0odm9pZCAwPT09ZT90LnNwZWNpZmljYXRpb24u ZGVmYXVsdDplLHQuc3BlY2lmaWNhdGlvbil9O2RpLnByb3RvdHlwZS5pc0RhdGFEcml2ZW49 ZnVuY3Rpb24oKXtyZXR1cm4ic291cmNlIj09PXRoaXMuZXhwcmVzc2lvbi5raW5kfHwiY29t cG9zaXRlIj09PXRoaXMuZXhwcmVzc2lvbi5raW5kfSxkaS5wcm90b3R5cGUucG9zc2libHlF dmFsdWF0ZT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRoaXMucHJvcGVydHkucG9zc2libHlF dmFsdWF0ZSh0aGlzLHQsZSxyKX07dmFyIG1pPWZ1bmN0aW9uKHQpe3RoaXMucHJvcGVydHk9 dCx0aGlzLnZhbHVlPW5ldyBkaSh0LHZvaWQgMCl9O21pLnByb3RvdHlwZS50cmFuc2l0aW9u ZWQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IHZpKHRoaXMucHJvcGVydHksdGhpcy52YWx1 ZSxlLHUoe30sdC50cmFuc2l0aW9uLHRoaXMudHJhbnNpdGlvbiksdC5ub3cpfSxtaS5wcm90 b3R5cGUudW50cmFuc2l0aW9uZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHZpKHRoaXMucHJv cGVydHksdGhpcy52YWx1ZSxudWxsLHt9LDApfTt2YXIgZ2k9ZnVuY3Rpb24odCl7dGhpcy5f cHJvcGVydGllcz10LHRoaXMuX3ZhbHVlcz1PYmplY3QuY3JlYXRlKHQuZGVmYXVsdFRyYW5z aXRpb25hYmxlUHJvcGVydHlWYWx1ZXMpfTtnaS5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVuY3Rp b24odCl7cmV0dXJuIHgodGhpcy5fdmFsdWVzW3RdLnZhbHVlLnZhbHVlKX0sZ2kucHJvdG90 eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSl7dGhpcy5fdmFsdWVzLmhhc093blByb3BlcnR5 KHQpfHwodGhpcy5fdmFsdWVzW3RdPW5ldyBtaSh0aGlzLl92YWx1ZXNbdF0ucHJvcGVydHkp KSx0aGlzLl92YWx1ZXNbdF0udmFsdWU9bmV3IGRpKHRoaXMuX3ZhbHVlc1t0XS5wcm9wZXJ0 eSxudWxsPT09ZT92b2lkIDA6eChlKSl9LGdpLnByb3RvdHlwZS5nZXRUcmFuc2l0aW9uPWZ1 bmN0aW9uKHQpe3JldHVybiB4KHRoaXMuX3ZhbHVlc1t0XS50cmFuc2l0aW9uKX0sZ2kucHJv dG90eXBlLnNldFRyYW5zaXRpb249ZnVuY3Rpb24odCxlKXt0aGlzLl92YWx1ZXMuaGFzT3du UHJvcGVydHkodCl8fCh0aGlzLl92YWx1ZXNbdF09bmV3IG1pKHRoaXMuX3ZhbHVlc1t0XS5w cm9wZXJ0eSkpLHRoaXMuX3ZhbHVlc1t0XS50cmFuc2l0aW9uPXgoZSl8fHZvaWQgMH0sZ2ku cHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe2Zvcih2YXIgdD17fSxlPTAscj1PYmpl Y3Qua2V5cyh0aGlzLl92YWx1ZXMpO2U8ci5sZW5ndGg7ZSs9MSl7dmFyIG49cltlXSxpPXRo aXMuZ2V0VmFsdWUobik7dm9pZCAwIT09aSYmKHRbbl09aSk7dmFyIGE9dGhpcy5nZXRUcmFu c2l0aW9uKG4pO3ZvaWQgMCE9PWEmJih0W24rIi10cmFuc2l0aW9uIl09YSl9cmV0dXJuIHR9 LGdpLnByb3RvdHlwZS50cmFuc2l0aW9uZWQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9bmV3 IHlpKHRoaXMuX3Byb3BlcnRpZXMpLG49MCxpPU9iamVjdC5rZXlzKHRoaXMuX3ZhbHVlcyk7 bjxpLmxlbmd0aDtuKz0xKXt2YXIgYT1pW25dO3IuX3ZhbHVlc1thXT10aGlzLl92YWx1ZXNb YV0udHJhbnNpdGlvbmVkKHQsZS5fdmFsdWVzW2FdKX1yZXR1cm4gcn0sZ2kucHJvdG90eXBl LnVudHJhbnNpdGlvbmVkPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PW5ldyB5aSh0aGlzLl9wcm9w ZXJ0aWVzKSxlPTAscj1PYmplY3Qua2V5cyh0aGlzLl92YWx1ZXMpO2U8ci5sZW5ndGg7ZSs9 MSl7dmFyIG49cltlXTt0Ll92YWx1ZXNbbl09dGhpcy5fdmFsdWVzW25dLnVudHJhbnNpdGlv bmVkKCl9cmV0dXJuIHR9O3ZhciB2aT1mdW5jdGlvbih0LGUscixuLGkpe3RoaXMucHJvcGVy dHk9dCx0aGlzLnZhbHVlPWUsdGhpcy5iZWdpbj1pK24uZGVsYXl8fDAsdGhpcy5lbmQ9dGhp cy5iZWdpbituLmR1cmF0aW9ufHwwLHQuc3BlY2lmaWNhdGlvbi50cmFuc2l0aW9uJiYobi5k ZWxheXx8bi5kdXJhdGlvbikmJih0aGlzLnByaW9yPXIpfTt2aS5wcm90b3R5cGUucG9zc2li bHlFdmFsdWF0ZT1mdW5jdGlvbih0LGUscil7dmFyIG49dC5ub3d8fDAsaT10aGlzLnZhbHVl LnBvc3NpYmx5RXZhbHVhdGUodCxlLHIpLGE9dGhpcy5wcmlvcjtpZihhKXtpZihuPnRoaXMu ZW5kKXJldHVybiB0aGlzLnByaW9yPW51bGwsaTtpZih0aGlzLnZhbHVlLmlzRGF0YURyaXZl bigpKXJldHVybiB0aGlzLnByaW9yPW51bGwsaTtpZihuPHRoaXMuYmVnaW4pcmV0dXJuIGEu cG9zc2libHlFdmFsdWF0ZSh0LGUscik7dmFyIG89KG4tdGhpcy5iZWdpbikvKHRoaXMuZW5k LXRoaXMuYmVnaW4pO3JldHVybiB0aGlzLnByb3BlcnR5LmludGVycG9sYXRlKGEucG9zc2li bHlFdmFsdWF0ZSh0LGUsciksaSxmdW5jdGlvbih0KXtpZih0PD0wKXJldHVybiAwO2lmKHQ+ PTEpcmV0dXJuIDE7dmFyIGU9dCp0LHI9ZSp0O3JldHVybiA0Kih0PC41P3I6MyoodC1lKSty LS43NSl9KG8pKX1yZXR1cm4gaX07dmFyIHlpPWZ1bmN0aW9uKHQpe3RoaXMuX3Byb3BlcnRp ZXM9dCx0aGlzLl92YWx1ZXM9T2JqZWN0LmNyZWF0ZSh0LmRlZmF1bHRUcmFuc2l0aW9uaW5n UHJvcGVydHlWYWx1ZXMpfTt5aS5wcm90b3R5cGUucG9zc2libHlFdmFsdWF0ZT1mdW5jdGlv bih0LGUscil7Zm9yKHZhciBuPW5ldyBfaSh0aGlzLl9wcm9wZXJ0aWVzKSxpPTAsYT1PYmpl Y3Qua2V5cyh0aGlzLl92YWx1ZXMpO2k8YS5sZW5ndGg7aSs9MSl7dmFyIG89YVtpXTtuLl92 YWx1ZXNbb109dGhpcy5fdmFsdWVzW29dLnBvc3NpYmx5RXZhbHVhdGUodCxlLHIpfXJldHVy biBufSx5aS5wcm90b3R5cGUuaGFzVHJhbnNpdGlvbj1mdW5jdGlvbigpe2Zvcih2YXIgdD0w LGU9T2JqZWN0LmtleXModGhpcy5fdmFsdWVzKTt0PGUubGVuZ3RoO3QrPTEpe3ZhciByPWVb dF07aWYodGhpcy5fdmFsdWVzW3JdLnByaW9yKXJldHVybiEwfXJldHVybiExfTt2YXIgeGk9 ZnVuY3Rpb24odCl7dGhpcy5fcHJvcGVydGllcz10LHRoaXMuX3ZhbHVlcz1PYmplY3QuY3Jl YXRlKHQuZGVmYXVsdFByb3BlcnR5VmFsdWVzKX07eGkucHJvdG90eXBlLmdldFZhbHVlPWZ1 bmN0aW9uKHQpe3JldHVybiB4KHRoaXMuX3ZhbHVlc1t0XS52YWx1ZSl9LHhpLnByb3RvdHlw ZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUpe3RoaXMuX3ZhbHVlc1t0XT1uZXcgZGkodGhpcy5f dmFsdWVzW3RdLnByb3BlcnR5LG51bGw9PT1lP3ZvaWQgMDp4KGUpKX0seGkucHJvdG90eXBl LnNlcmlhbGl6ZT1mdW5jdGlvbigpe2Zvcih2YXIgdD17fSxlPTAscj1PYmplY3Qua2V5cyh0 aGlzLl92YWx1ZXMpO2U8ci5sZW5ndGg7ZSs9MSl7dmFyIG49cltlXSxpPXRoaXMuZ2V0VmFs dWUobik7dm9pZCAwIT09aSYmKHRbbl09aSl9cmV0dXJuIHR9LHhpLnByb3RvdHlwZS5wb3Nz aWJseUV2YWx1YXRlPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49bmV3IF9pKHRoaXMuX3By b3BlcnRpZXMpLGk9MCxhPU9iamVjdC5rZXlzKHRoaXMuX3ZhbHVlcyk7aTxhLmxlbmd0aDtp Kz0xKXt2YXIgbz1hW2ldO24uX3ZhbHVlc1tvXT10aGlzLl92YWx1ZXNbb10ucG9zc2libHlF dmFsdWF0ZSh0LGUscil9cmV0dXJuIG59O3ZhciBiaT1mdW5jdGlvbih0LGUscil7dGhpcy5w cm9wZXJ0eT10LHRoaXMudmFsdWU9ZSx0aGlzLnBhcmFtZXRlcnM9cn07YmkucHJvdG90eXBl LmlzQ29uc3RhbnQ9ZnVuY3Rpb24oKXtyZXR1cm4iY29uc3RhbnQiPT09dGhpcy52YWx1ZS5r aW5kfSxiaS5wcm90b3R5cGUuY29uc3RhbnRPcj1mdW5jdGlvbih0KXtyZXR1cm4iY29uc3Rh bnQiPT09dGhpcy52YWx1ZS5raW5kP3RoaXMudmFsdWUudmFsdWU6dH0sYmkucHJvdG90eXBl LmV2YWx1YXRlPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiB0aGlzLnByb3BlcnR5LmV2YWx1 YXRlKHRoaXMudmFsdWUsdGhpcy5wYXJhbWV0ZXJzLHQsZSxyLG4pfTt2YXIgX2k9ZnVuY3Rp b24odCl7dGhpcy5fcHJvcGVydGllcz10LHRoaXMuX3ZhbHVlcz1PYmplY3QuY3JlYXRlKHQu ZGVmYXVsdFBvc3NpYmx5RXZhbHVhdGVkVmFsdWVzKX07X2kucHJvdG90eXBlLmdldD1mdW5j dGlvbih0KXtyZXR1cm4gdGhpcy5fdmFsdWVzW3RdfTt2YXIgd2k9ZnVuY3Rpb24odCl7dGhp cy5zcGVjaWZpY2F0aW9uPXR9O3dpLnByb3RvdHlwZS5wb3NzaWJseUV2YWx1YXRlPWZ1bmN0 aW9uKHQsZSl7cmV0dXJuIHQuZXhwcmVzc2lvbi5ldmFsdWF0ZShlKX0sd2kucHJvdG90eXBl LmludGVycG9sYXRlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1HZVt0aGlzLnNwZWNpZmljYXRp b24udHlwZV07cmV0dXJuIG4/bih0LGUscik6dH07dmFyIFRpPWZ1bmN0aW9uKHQsZSl7dGhp cy5zcGVjaWZpY2F0aW9uPXQsdGhpcy5vdmVycmlkZXM9ZX07VGkucHJvdG90eXBlLnBvc3Np Ymx5RXZhbHVhdGU9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuImNvbnN0YW50Ij09PXQuZXhw cmVzc2lvbi5raW5kfHwiY2FtZXJhIj09PXQuZXhwcmVzc2lvbi5raW5kP25ldyBiaSh0aGlz LHtraW5kOiJjb25zdGFudCIsdmFsdWU6dC5leHByZXNzaW9uLmV2YWx1YXRlKGUsbnVsbCx7 fSxyLG4pfSxlKTpuZXcgYmkodGhpcyx0LmV4cHJlc3Npb24sZSl9LFRpLnByb3RvdHlwZS5p bnRlcnBvbGF0ZT1mdW5jdGlvbih0LGUscil7aWYoImNvbnN0YW50IiE9PXQudmFsdWUua2lu ZHx8ImNvbnN0YW50IiE9PWUudmFsdWUua2luZClyZXR1cm4gdDtpZih2b2lkIDA9PT10LnZh bHVlLnZhbHVlfHx2b2lkIDA9PT1lLnZhbHVlLnZhbHVlKXJldHVybiBuZXcgYmkodGhpcyx7 a2luZDoiY29uc3RhbnQiLHZhbHVlOnZvaWQgMH0sdC5wYXJhbWV0ZXJzKTt2YXIgbj1HZVt0 aGlzLnNwZWNpZmljYXRpb24udHlwZV07cmV0dXJuIG4/bmV3IGJpKHRoaXMse2tpbmQ6ImNv bnN0YW50Iix2YWx1ZTpuKHQudmFsdWUudmFsdWUsZS52YWx1ZS52YWx1ZSxyKX0sdC5wYXJh bWV0ZXJzKTp0fSxUaS5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24odCxlLHIsbixpLGEp e3JldHVybiJjb25zdGFudCI9PT10LmtpbmQ/dC52YWx1ZTp0LmV2YWx1YXRlKGUscixuLGks YSl9O3ZhciBraT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3Vt ZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3Jl YXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90 eXBlLnBvc3NpYmx5RXZhbHVhdGU9ZnVuY3Rpb24odCxlLHIsbil7aWYodm9pZCAwPT09dC52 YWx1ZSlyZXR1cm4gbmV3IGJpKHRoaXMse2tpbmQ6ImNvbnN0YW50Iix2YWx1ZTp2b2lkIDB9 LGUpO2lmKCJjb25zdGFudCI9PT10LmV4cHJlc3Npb24ua2luZCl7dmFyIGk9dC5leHByZXNz aW9uLmV2YWx1YXRlKGUsbnVsbCx7fSxyLG4pLGE9InJlc29sdmVkSW1hZ2UiPT09dC5wcm9w ZXJ0eS5zcGVjaWZpY2F0aW9uLnR5cGUmJiJzdHJpbmciIT10eXBlb2YgaT9pLm5hbWU6aSxv PXRoaXMuX2NhbGN1bGF0ZShhLGEsYSxlKTtyZXR1cm4gbmV3IGJpKHRoaXMse2tpbmQ6ImNv bnN0YW50Iix2YWx1ZTpvfSxlKX1pZigiY2FtZXJhIj09PXQuZXhwcmVzc2lvbi5raW5kKXt2 YXIgcz10aGlzLl9jYWxjdWxhdGUodC5leHByZXNzaW9uLmV2YWx1YXRlKHt6b29tOmUuem9v bS0xfSksdC5leHByZXNzaW9uLmV2YWx1YXRlKHt6b29tOmUuem9vbX0pLHQuZXhwcmVzc2lv bi5ldmFsdWF0ZSh7em9vbTplLnpvb20rMX0pLGUpO3JldHVybiBuZXcgYmkodGhpcyx7a2lu ZDoiY29uc3RhbnQiLHZhbHVlOnN9LGUpfXJldHVybiBuZXcgYmkodGhpcyx0LmV4cHJlc3Np b24sZSl9LGUucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKHQsZSxyLG4saSxhKXtpZigi c291cmNlIj09PXQua2luZCl7dmFyIG89dC5ldmFsdWF0ZShlLHIsbixpLGEpO3JldHVybiB0 aGlzLl9jYWxjdWxhdGUobyxvLG8sZSl9cmV0dXJuImNvbXBvc2l0ZSI9PT10LmtpbmQ/dGhp cy5fY2FsY3VsYXRlKHQuZXZhbHVhdGUoe3pvb206TWF0aC5mbG9vcihlLnpvb20pLTF9LHIs biksdC5ldmFsdWF0ZSh7em9vbTpNYXRoLmZsb29yKGUuem9vbSl9LHIsbiksdC5ldmFsdWF0 ZSh7em9vbTpNYXRoLmZsb29yKGUuem9vbSkrMX0scixuKSxlKTp0LnZhbHVlfSxlLnByb3Rv dHlwZS5fY2FsY3VsYXRlPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiBuLnpvb20+bi56b29t SGlzdG9yeS5sYXN0SW50ZWdlclpvb20/e2Zyb206dCx0bzplfTp7ZnJvbTpyLHRvOmV9fSxl LnByb3RvdHlwZS5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdH0sZX0oVGkpLEFp PWZ1bmN0aW9uKHQpe3RoaXMuc3BlY2lmaWNhdGlvbj10fTtBaS5wcm90b3R5cGUucG9zc2li bHlFdmFsdWF0ZT1mdW5jdGlvbih0LGUscixuKXtpZih2b2lkIDAhPT10LnZhbHVlKXtpZigi Y29uc3RhbnQiPT09dC5leHByZXNzaW9uLmtpbmQpe3ZhciBpPXQuZXhwcmVzc2lvbi5ldmFs dWF0ZShlLG51bGwse30scixuKTtyZXR1cm4gdGhpcy5fY2FsY3VsYXRlKGksaSxpLGUpfXJl dHVybiB0aGlzLl9jYWxjdWxhdGUodC5leHByZXNzaW9uLmV2YWx1YXRlKG5ldyBwaShNYXRo LmZsb29yKGUuem9vbS0xKSxlKSksdC5leHByZXNzaW9uLmV2YWx1YXRlKG5ldyBwaShNYXRo LmZsb29yKGUuem9vbSksZSkpLHQuZXhwcmVzc2lvbi5ldmFsdWF0ZShuZXcgcGkoTWF0aC5m bG9vcihlLnpvb20rMSksZSkpLGUpfX0sQWkucHJvdG90eXBlLl9jYWxjdWxhdGU9ZnVuY3Rp b24odCxlLHIsbil7cmV0dXJuIG4uem9vbT5uLnpvb21IaXN0b3J5Lmxhc3RJbnRlZ2VyWm9v bT97ZnJvbTp0LHRvOmV9Ontmcm9tOnIsdG86ZX19LEFpLnByb3RvdHlwZS5pbnRlcnBvbGF0 ZT1mdW5jdGlvbih0KXtyZXR1cm4gdH07dmFyIE1pPWZ1bmN0aW9uKHQpe3RoaXMuc3BlY2lm aWNhdGlvbj10fTtNaS5wcm90b3R5cGUucG9zc2libHlFdmFsdWF0ZT1mdW5jdGlvbih0LGUs cixuKXtyZXR1cm4hIXQuZXhwcmVzc2lvbi5ldmFsdWF0ZShlLG51bGwse30scixuKX0sTWku cHJvdG90eXBlLmludGVycG9sYXRlPWZ1bmN0aW9uKCl7cmV0dXJuITF9O3ZhciBTaT1mdW5j dGlvbih0KXtmb3IodmFyIGUgaW4gdGhpcy5wcm9wZXJ0aWVzPXQsdGhpcy5kZWZhdWx0UHJv cGVydHlWYWx1ZXM9e30sdGhpcy5kZWZhdWx0VHJhbnNpdGlvbmFibGVQcm9wZXJ0eVZhbHVl cz17fSx0aGlzLmRlZmF1bHRUcmFuc2l0aW9uaW5nUHJvcGVydHlWYWx1ZXM9e30sdGhpcy5k ZWZhdWx0UG9zc2libHlFdmFsdWF0ZWRWYWx1ZXM9e30sdGhpcy5vdmVycmlkYWJsZVByb3Bl cnRpZXM9W10sdCl7dmFyIHI9dFtlXTtyLnNwZWNpZmljYXRpb24ub3ZlcnJpZGFibGUmJnRo aXMub3ZlcnJpZGFibGVQcm9wZXJ0aWVzLnB1c2goZSk7dmFyIG49dGhpcy5kZWZhdWx0UHJv cGVydHlWYWx1ZXNbZV09bmV3IGRpKHIsdm9pZCAwKSxpPXRoaXMuZGVmYXVsdFRyYW5zaXRp b25hYmxlUHJvcGVydHlWYWx1ZXNbZV09bmV3IG1pKHIpO3RoaXMuZGVmYXVsdFRyYW5zaXRp b25pbmdQcm9wZXJ0eVZhbHVlc1tlXT1pLnVudHJhbnNpdGlvbmVkKCksdGhpcy5kZWZhdWx0 UG9zc2libHlFdmFsdWF0ZWRWYWx1ZXNbZV09bi5wb3NzaWJseUV2YWx1YXRlKHt9KX19O05u KCJEYXRhRHJpdmVuUHJvcGVydHkiLFRpKSxObigiRGF0YUNvbnN0YW50UHJvcGVydHkiLHdp KSxObigiQ3Jvc3NGYWRlZERhdGFEcml2ZW5Qcm9wZXJ0eSIsa2kpLE5uKCJDcm9zc0ZhZGVk UHJvcGVydHkiLEFpKSxObigiQ29sb3JSYW1wUHJvcGVydHkiLE1pKTt2YXIgRWk9ZnVuY3Rp b24odCl7ZnVuY3Rpb24gZShlLHIpe2lmKHQuY2FsbCh0aGlzKSx0aGlzLmlkPWUuaWQsdGhp cy50eXBlPWUudHlwZSx0aGlzLl9mZWF0dXJlRmlsdGVyPXtmaWx0ZXI6ZnVuY3Rpb24oKXty ZXR1cm4hMH0sbmVlZEdlb21ldHJ5OiExfSwiY3VzdG9tIiE9PWUudHlwZSYmKGU9ZSx0aGlz Lm1ldGFkYXRhPWUubWV0YWRhdGEsdGhpcy5taW56b29tPWUubWluem9vbSx0aGlzLm1heHpv b209ZS5tYXh6b29tLCJiYWNrZ3JvdW5kIiE9PWUudHlwZSYmKHRoaXMuc291cmNlPWUuc291 cmNlLHRoaXMuc291cmNlTGF5ZXI9ZVsic291cmNlLWxheWVyIl0sdGhpcy5maWx0ZXI9ZS5m aWx0ZXIpLHIubGF5b3V0JiYodGhpcy5fdW5ldmFsdWF0ZWRMYXlvdXQ9bmV3IHhpKHIubGF5 b3V0KSksci5wYWludCkpe2Zvcih2YXIgbiBpbiB0aGlzLl90cmFuc2l0aW9uYWJsZVBhaW50 PW5ldyBnaShyLnBhaW50KSxlLnBhaW50KXRoaXMuc2V0UGFpbnRQcm9wZXJ0eShuLGUucGFp bnRbbl0se3ZhbGlkYXRlOiExfSk7Zm9yKHZhciBpIGluIGUubGF5b3V0KXRoaXMuc2V0TGF5 b3V0UHJvcGVydHkoaSxlLmxheW91dFtpXSx7dmFsaWRhdGU6ITF9KTt0aGlzLl90cmFuc2l0 aW9uaW5nUGFpbnQ9dGhpcy5fdHJhbnNpdGlvbmFibGVQYWludC51bnRyYW5zaXRpb25lZCgp LHRoaXMucGFpbnQ9bmV3IF9pKHIucGFpbnQpfX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQp LGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBl LmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0Q3Jvc3NmYWRlUGFyYW1ldGVycz1mdW5j dGlvbigpe3JldHVybiB0aGlzLl9jcm9zc2ZhZGVQYXJhbWV0ZXJzfSxlLnByb3RvdHlwZS5n ZXRMYXlvdXRQcm9wZXJ0eT1mdW5jdGlvbih0KXtyZXR1cm4idmlzaWJpbGl0eSI9PT10P3Ro aXMudmlzaWJpbGl0eTp0aGlzLl91bmV2YWx1YXRlZExheW91dC5nZXRWYWx1ZSh0KX0sZS5w cm90b3R5cGUuc2V0TGF5b3V0UHJvcGVydHk9ZnVuY3Rpb24odCxlLHIpe2lmKHZvaWQgMD09 PXImJihyPXt9KSxudWxsIT1lKXt2YXIgbj0ibGF5ZXJzLiIrdGhpcy5pZCsiLmxheW91dC4i K3Q7aWYodGhpcy5fdmFsaWRhdGUoSW4sbix0LGUscikpcmV0dXJufSJ2aXNpYmlsaXR5IiE9 PXQ/dGhpcy5fdW5ldmFsdWF0ZWRMYXlvdXQuc2V0VmFsdWUodCxlKTp0aGlzLnZpc2liaWxp dHk9ZX0sZS5wcm90b3R5cGUuZ2V0UGFpbnRQcm9wZXJ0eT1mdW5jdGlvbih0KXtyZXR1cm4g Zyh0LCItdHJhbnNpdGlvbiIpP3RoaXMuX3RyYW5zaXRpb25hYmxlUGFpbnQuZ2V0VHJhbnNp dGlvbih0LnNsaWNlKDAsLSItdHJhbnNpdGlvbiIubGVuZ3RoKSk6dGhpcy5fdHJhbnNpdGlv bmFibGVQYWludC5nZXRWYWx1ZSh0KX0sZS5wcm90b3R5cGUuc2V0UGFpbnRQcm9wZXJ0eT1m dW5jdGlvbih0LGUscil7aWYodm9pZCAwPT09ciYmKHI9e30pLG51bGwhPWUpe3ZhciBuPSJs YXllcnMuIit0aGlzLmlkKyIucGFpbnQuIit0O2lmKHRoaXMuX3ZhbGlkYXRlKFBuLG4sdCxl LHIpKXJldHVybiExfWlmKGcodCwiLXRyYW5zaXRpb24iKSlyZXR1cm4gdGhpcy5fdHJhbnNp dGlvbmFibGVQYWludC5zZXRUcmFuc2l0aW9uKHQuc2xpY2UoMCwtIi10cmFuc2l0aW9uIi5s ZW5ndGgpLGV8fHZvaWQgMCksITE7dmFyIGk9dGhpcy5fdHJhbnNpdGlvbmFibGVQYWludC5f dmFsdWVzW3RdLGE9ImNyb3NzLWZhZGVkLWRhdGEtZHJpdmVuIj09PWkucHJvcGVydHkuc3Bl Y2lmaWNhdGlvblsicHJvcGVydHktdHlwZSJdLG89aS52YWx1ZS5pc0RhdGFEcml2ZW4oKSxz PWkudmFsdWU7dGhpcy5fdHJhbnNpdGlvbmFibGVQYWludC5zZXRWYWx1ZSh0LGUpLHRoaXMu X2hhbmRsZVNwZWNpYWxQYWludFByb3BlcnR5VXBkYXRlKHQpO3ZhciBsPXRoaXMuX3RyYW5z aXRpb25hYmxlUGFpbnQuX3ZhbHVlc1t0XS52YWx1ZTtyZXR1cm4gbC5pc0RhdGFEcml2ZW4o KXx8b3x8YXx8dGhpcy5faGFuZGxlT3ZlcnJpZGFibGVQYWludFByb3BlcnR5VXBkYXRlKHQs cyxsKX0sZS5wcm90b3R5cGUuX2hhbmRsZVNwZWNpYWxQYWludFByb3BlcnR5VXBkYXRlPWZ1 bmN0aW9uKHQpe30sZS5wcm90b3R5cGUuX2hhbmRsZU92ZXJyaWRhYmxlUGFpbnRQcm9wZXJ0 eVVwZGF0ZT1mdW5jdGlvbih0LGUscil7cmV0dXJuITF9LGUucHJvdG90eXBlLmlzSGlkZGVu PWZ1bmN0aW9uKHQpe3JldHVybiEhKHRoaXMubWluem9vbSYmdDx0aGlzLm1pbnpvb20pfHwo ISEodGhpcy5tYXh6b29tJiZ0Pj10aGlzLm1heHpvb20pfHwibm9uZSI9PT10aGlzLnZpc2li aWxpdHkpfSxlLnByb3RvdHlwZS51cGRhdGVUcmFuc2l0aW9ucz1mdW5jdGlvbih0KXt0aGlz Ll90cmFuc2l0aW9uaW5nUGFpbnQ9dGhpcy5fdHJhbnNpdGlvbmFibGVQYWludC50cmFuc2l0 aW9uZWQodCx0aGlzLl90cmFuc2l0aW9uaW5nUGFpbnQpfSxlLnByb3RvdHlwZS5oYXNUcmFu c2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zaXRpb25pbmdQYWludC5oYXNU cmFuc2l0aW9uKCl9LGUucHJvdG90eXBlLnJlY2FsY3VsYXRlPWZ1bmN0aW9uKHQsZSl7dC5n ZXRDcm9zc2ZhZGVQYXJhbWV0ZXJzJiYodGhpcy5fY3Jvc3NmYWRlUGFyYW1ldGVycz10Lmdl dENyb3NzZmFkZVBhcmFtZXRlcnMoKSksdGhpcy5fdW5ldmFsdWF0ZWRMYXlvdXQmJih0aGlz LmxheW91dD10aGlzLl91bmV2YWx1YXRlZExheW91dC5wb3NzaWJseUV2YWx1YXRlKHQsdm9p ZCAwLGUpKSx0aGlzLnBhaW50PXRoaXMuX3RyYW5zaXRpb25pbmdQYWludC5wb3NzaWJseUV2 YWx1YXRlKHQsdm9pZCAwLGUpfSxlLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXt2 YXIgdD17aWQ6dGhpcy5pZCx0eXBlOnRoaXMudHlwZSxzb3VyY2U6dGhpcy5zb3VyY2UsInNv dXJjZS1sYXllciI6dGhpcy5zb3VyY2VMYXllcixtZXRhZGF0YTp0aGlzLm1ldGFkYXRhLG1p bnpvb206dGhpcy5taW56b29tLG1heHpvb206dGhpcy5tYXh6b29tLGZpbHRlcjp0aGlzLmZp bHRlcixsYXlvdXQ6dGhpcy5fdW5ldmFsdWF0ZWRMYXlvdXQmJnRoaXMuX3VuZXZhbHVhdGVk TGF5b3V0LnNlcmlhbGl6ZSgpLHBhaW50OnRoaXMuX3RyYW5zaXRpb25hYmxlUGFpbnQmJnRo aXMuX3RyYW5zaXRpb25hYmxlUGFpbnQuc2VyaWFsaXplKCl9O3JldHVybiB0aGlzLnZpc2li aWxpdHkmJih0LmxheW91dD10LmxheW91dHx8e30sdC5sYXlvdXQudmlzaWJpbGl0eT10aGlz LnZpc2liaWxpdHkpLHkodCwoZnVuY3Rpb24odCxlKXtyZXR1cm4hKHZvaWQgMD09PXR8fCJs YXlvdXQiPT09ZSYmIU9iamVjdC5rZXlzKHQpLmxlbmd0aHx8InBhaW50Ij09PWUmJiFPYmpl Y3Qua2V5cyh0KS5sZW5ndGgpfSkpfSxlLnByb3RvdHlwZS5fdmFsaWRhdGU9ZnVuY3Rpb24o dCxlLHIsbixpKXtyZXR1cm4gdm9pZCAwPT09aSYmKGk9e30pLCghaXx8ITEhPT1pLnZhbGlk YXRlKSYmT24odGhpcyx0LmNhbGwoTG4se2tleTplLGxheWVyVHlwZTp0aGlzLnR5cGUsb2Jq ZWN0S2V5OnIsdmFsdWU6bixzdHlsZVNwZWM6THQsc3R5bGU6e2dseXBoczohMCxzcHJpdGU6 ITB9fSkpfSxlLnByb3RvdHlwZS5pczNEPWZ1bmN0aW9uKCl7cmV0dXJuITF9LGUucHJvdG90 eXBlLmlzVGlsZUNsaXBwZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZS5wcm90b3R5cGUuaGFz T2Zmc2NyZWVuUGFzcz1mdW5jdGlvbigpe3JldHVybiExfSxlLnByb3RvdHlwZS5yZXNpemU9 ZnVuY3Rpb24oKXt9LGUucHJvdG90eXBlLmlzU3RhdGVEZXBlbmRlbnQ9ZnVuY3Rpb24oKXtm b3IodmFyIHQgaW4gdGhpcy5wYWludC5fdmFsdWVzKXt2YXIgZT10aGlzLnBhaW50LmdldCh0 KTtpZihlIGluc3RhbmNlb2YgYmkmJnpyKGUucHJvcGVydHkuc3BlY2lmaWNhdGlvbikmJigo InNvdXJjZSI9PT1lLnZhbHVlLmtpbmR8fCJjb21wb3NpdGUiPT09ZS52YWx1ZS5raW5kKSYm ZS52YWx1ZS5pc1N0YXRlRGVwZW5kZW50KSlyZXR1cm4hMH1yZXR1cm4hMX0sZX0oRXQpLExp PXtJbnQ4OkludDhBcnJheSxVaW50ODpVaW50OEFycmF5LEludDE2OkludDE2QXJyYXksVWlu dDE2OlVpbnQxNkFycmF5LEludDMyOkludDMyQXJyYXksVWludDMyOlVpbnQzMkFycmF5LEZs b2F0MzI6RmxvYXQzMkFycmF5fSxDaT1mdW5jdGlvbih0LGUpe3RoaXMuX3N0cnVjdEFycmF5 PXQsdGhpcy5fcG9zMT1lKnRoaXMuc2l6ZSx0aGlzLl9wb3MyPXRoaXMuX3BvczEvMix0aGlz Ll9wb3M0PXRoaXMuX3BvczEvNCx0aGlzLl9wb3M4PXRoaXMuX3BvczEvOH0sUGk9ZnVuY3Rp b24oKXt0aGlzLmlzVHJhbnNmZXJyZWQ9ITEsdGhpcy5jYXBhY2l0eT0tMSx0aGlzLnJlc2l6 ZSgwKX07ZnVuY3Rpb24gSWkodCxlKXt2b2lkIDA9PT1lJiYoZT0xKTt2YXIgcj0wLG49MDty ZXR1cm57bWVtYmVyczp0Lm1hcCgoZnVuY3Rpb24odCl7dmFyIGksYT0oaT10LnR5cGUsTGlb aV0uQllURVNfUEVSX0VMRU1FTlQpLG89cj1PaShyLE1hdGgubWF4KGUsYSkpLHM9dC5jb21w b25lbnRzfHwxO3JldHVybiBuPU1hdGgubWF4KG4sYSkscis9YSpzLHtuYW1lOnQubmFtZSx0 eXBlOnQudHlwZSxjb21wb25lbnRzOnMsb2Zmc2V0Om99fSkpLHNpemU6T2kocixNYXRoLm1h eChuLGUpKSxhbGlnbm1lbnQ6ZX19ZnVuY3Rpb24gT2kodCxlKXtyZXR1cm4gTWF0aC5jZWls KHQvZSkqZX1QaS5zZXJpYWxpemU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5fdHJpbSgpLGUm Jih0LmlzVHJhbnNmZXJyZWQ9ITAsZS5wdXNoKHQuYXJyYXlCdWZmZXIpKSx7bGVuZ3RoOnQu bGVuZ3RoLGFycmF5QnVmZmVyOnQuYXJyYXlCdWZmZXJ9fSxQaS5kZXNlcmlhbGl6ZT1mdW5j dGlvbih0KXt2YXIgZT1PYmplY3QuY3JlYXRlKHRoaXMucHJvdG90eXBlKTtyZXR1cm4gZS5h cnJheUJ1ZmZlcj10LmFycmF5QnVmZmVyLGUubGVuZ3RoPXQubGVuZ3RoLGUuY2FwYWNpdHk9 dC5hcnJheUJ1ZmZlci5ieXRlTGVuZ3RoL2UuYnl0ZXNQZXJFbGVtZW50LGUuX3JlZnJlc2hW aWV3cygpLGV9LFBpLnByb3RvdHlwZS5fdHJpbT1mdW5jdGlvbigpe3RoaXMubGVuZ3RoIT09 dGhpcy5jYXBhY2l0eSYmKHRoaXMuY2FwYWNpdHk9dGhpcy5sZW5ndGgsdGhpcy5hcnJheUJ1 ZmZlcj10aGlzLmFycmF5QnVmZmVyLnNsaWNlKDAsdGhpcy5sZW5ndGgqdGhpcy5ieXRlc1Bl ckVsZW1lbnQpLHRoaXMuX3JlZnJlc2hWaWV3cygpKX0sUGkucHJvdG90eXBlLmNsZWFyPWZ1 bmN0aW9uKCl7dGhpcy5sZW5ndGg9MH0sUGkucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbih0 KXt0aGlzLnJlc2VydmUodCksdGhpcy5sZW5ndGg9dH0sUGkucHJvdG90eXBlLnJlc2VydmU9 ZnVuY3Rpb24odCl7aWYodD50aGlzLmNhcGFjaXR5KXt0aGlzLmNhcGFjaXR5PU1hdGgubWF4 KHQsTWF0aC5mbG9vcig1KnRoaXMuY2FwYWNpdHkpLDEyOCksdGhpcy5hcnJheUJ1ZmZlcj1u ZXcgQXJyYXlCdWZmZXIodGhpcy5jYXBhY2l0eSp0aGlzLmJ5dGVzUGVyRWxlbWVudCk7dmFy IGU9dGhpcy51aW50ODt0aGlzLl9yZWZyZXNoVmlld3MoKSxlJiZ0aGlzLnVpbnQ4LnNldChl KX19LFBpLnByb3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVy cm9yKCJfcmVmcmVzaFZpZXdzKCkgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBlYWNoIGNvbmNy ZXRlIFN0cnVjdEFycmF5IGxheW91dCIpfTt2YXIgemk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24g ZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCks ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUu Y29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7dGhp cy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmludDE2PW5l dyBJbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpfSxlLnByb3RvdHlwZS5lbXBsYWNlQmFj az1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShy KzEpLHRoaXMuZW1wbGFjZShyLHQsZSl9LGUucHJvdG90eXBlLmVtcGxhY2U9ZnVuY3Rpb24o dCxlLHIpe3ZhciBuPTIqdDtyZXR1cm4gdGhpcy5pbnQxNltuKzBdPWUsdGhpcy5pbnQxNltu KzFdPXIsdH0sZX0oUGkpO3ppLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9NCxObigiU3Ry dWN0QXJyYXlMYXlvdXQyaTQiLHppKTt2YXIgRGk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgp e3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5w cm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29u c3RydWN0b3I9ZSxlLnByb3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7dGhpcy51 aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmludDE2PW5ldyBJ bnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpfSxlLnByb3RvdHlwZS5lbXBsYWNlQmFjaz1m dW5jdGlvbih0LGUscixuKXt2YXIgaT10aGlzLmxlbmd0aDtyZXR1cm4gdGhpcy5yZXNpemUo aSsxKSx0aGlzLmVtcGxhY2UoaSx0LGUscixuKX0sZS5wcm90b3R5cGUuZW1wbGFjZT1mdW5j dGlvbih0LGUscixuLGkpe3ZhciBhPTQqdDtyZXR1cm4gdGhpcy5pbnQxNlthKzBdPWUsdGhp cy5pbnQxNlthKzFdPXIsdGhpcy5pbnQxNlthKzJdPW4sdGhpcy5pbnQxNlthKzNdPWksdH0s ZX0oUGkpO0RpLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9OCxObigiU3RydWN0QXJyYXlM YXlvdXQ0aTgiLERpKTt2YXIgUmk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHko dGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9 T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9 ZSxlLnByb3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7dGhpcy51aW50OD1uZXcg VWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmludDE2PW5ldyBJbnQxNkFycmF5 KHRoaXMuYXJyYXlCdWZmZXIpfSxlLnByb3RvdHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlvbih0 LGUscixuLGksYSl7dmFyIG89dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKG8rMSks dGhpcy5lbXBsYWNlKG8sdCxlLHIsbixpLGEpfSxlLnByb3RvdHlwZS5lbXBsYWNlPWZ1bmN0 aW9uKHQsZSxyLG4saSxhLG8pe3ZhciBzPTYqdDtyZXR1cm4gdGhpcy5pbnQxNltzKzBdPWUs dGhpcy5pbnQxNltzKzFdPXIsdGhpcy5pbnQxNltzKzJdPW4sdGhpcy5pbnQxNltzKzNdPWks dGhpcy5pbnQxNltzKzRdPWEsdGhpcy5pbnQxNltzKzVdPW8sdH0sZX0oUGkpO1JpLnByb3Rv dHlwZS5ieXRlc1BlckVsZW1lbnQ9MTIsTm4oIlN0cnVjdEFycmF5TGF5b3V0Mmk0aTEyIixS aSk7dmFyIEZpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1l bnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVh dGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5 cGUuX3JlZnJlc2hWaWV3cz1mdW5jdGlvbigpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXko dGhpcy5hcnJheUJ1ZmZlciksdGhpcy5pbnQxNj1uZXcgSW50MTZBcnJheSh0aGlzLmFycmF5 QnVmZmVyKX0sZS5wcm90b3R5cGUuZW1wbGFjZUJhY2s9ZnVuY3Rpb24odCxlLHIsbixpLGEp e3ZhciBvPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6ZShvKzEpLHRoaXMuZW1wbGFj ZShvLHQsZSxyLG4saSxhKX0sZS5wcm90b3R5cGUuZW1wbGFjZT1mdW5jdGlvbih0LGUscixu LGksYSxvKXt2YXIgcz00KnQsbD04KnQ7cmV0dXJuIHRoaXMuaW50MTZbcyswXT1lLHRoaXMu aW50MTZbcysxXT1yLHRoaXMudWludDhbbCs0XT1uLHRoaXMudWludDhbbCs1XT1pLHRoaXMu dWludDhbbCs2XT1hLHRoaXMudWludDhbbCs3XT1vLHR9LGV9KFBpKTtGaS5wcm90b3R5cGUu Ynl0ZXNQZXJFbGVtZW50PTgsTm4oIlN0cnVjdEFycmF5TGF5b3V0Mmk0dWI4IixGaSk7dmFy IEJpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1y ZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYm dC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuX3Jl ZnJlc2hWaWV3cz1mdW5jdGlvbigpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5h cnJheUJ1ZmZlciksdGhpcy51aW50MTY9bmV3IFVpbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZm ZXIpfSxlLnByb3RvdHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlvbih0LGUscixuLGksYSxvLHMs bCxjKXt2YXIgdT10aGlzLmxlbmd0aDtyZXR1cm4gdGhpcy5yZXNpemUodSsxKSx0aGlzLmVt cGxhY2UodSx0LGUscixuLGksYSxvLHMsbCxjKX0sZS5wcm90b3R5cGUuZW1wbGFjZT1mdW5j dGlvbih0LGUscixuLGksYSxvLHMsbCxjLHUpe3ZhciBmPTkqdCxoPTE4KnQ7cmV0dXJuIHRo aXMudWludDE2W2YrMF09ZSx0aGlzLnVpbnQxNltmKzFdPXIsdGhpcy51aW50MTZbZisyXT1u LHRoaXMudWludDE2W2YrM109aSx0aGlzLnVpbnQxNltmKzRdPWEsdGhpcy51aW50MTZbZis1 XT1vLHRoaXMudWludDE2W2YrNl09cyx0aGlzLnVpbnQxNltmKzddPWwsdGhpcy51aW50OFto KzE2XT1jLHRoaXMudWludDhbaCsxN109dSx0fSxlfShQaSk7QmkucHJvdG90eXBlLmJ5dGVz UGVyRWxlbWVudD0xOCxObigiU3RydWN0QXJyYXlMYXlvdXQ4dWkydWIxOCIsQmkpO3ZhciBO aT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0 dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQu cHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLl9yZWZy ZXNoVmlld3M9ZnVuY3Rpb24oKXt0aGlzLnVpbnQ4PW5ldyBVaW50OEFycmF5KHRoaXMuYXJy YXlCdWZmZXIpLHRoaXMuaW50MTY9bmV3IEludDE2QXJyYXkodGhpcy5hcnJheUJ1ZmZlciks dGhpcy51aW50MTY9bmV3IFVpbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpfSxlLnByb3Rv dHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlvbih0LGUscixuLGksYSxvLHMsbCxjLHUsZil7dmFy IGg9dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKGgrMSksdGhpcy5lbXBsYWNlKGgs dCxlLHIsbixpLGEsbyxzLGwsYyx1LGYpfSxlLnByb3RvdHlwZS5lbXBsYWNlPWZ1bmN0aW9u KHQsZSxyLG4saSxhLG8scyxsLGMsdSxmLGgpe3ZhciBwPTEyKnQ7cmV0dXJuIHRoaXMuaW50 MTZbcCswXT1lLHRoaXMuaW50MTZbcCsxXT1yLHRoaXMuaW50MTZbcCsyXT1uLHRoaXMuaW50 MTZbcCszXT1pLHRoaXMudWludDE2W3ArNF09YSx0aGlzLnVpbnQxNltwKzVdPW8sdGhpcy51 aW50MTZbcCs2XT1zLHRoaXMudWludDE2W3ArN109bCx0aGlzLmludDE2W3ArOF09Yyx0aGlz LmludDE2W3ArOV09dSx0aGlzLmludDE2W3ArMTBdPWYsdGhpcy5pbnQxNltwKzExXT1oLHR9 LGV9KFBpKTtOaS5wcm90b3R5cGUuYnl0ZXNQZXJFbGVtZW50PTI0LE5uKCJTdHJ1Y3RBcnJh eUxheW91dDRpNHVpNGkyNCIsTmkpO3ZhciBqaT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7 dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnBy b3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25z dHJ1Y3Rvcj1lLGUucHJvdG90eXBlLl9yZWZyZXNoVmlld3M9ZnVuY3Rpb24oKXt0aGlzLnVp bnQ4PW5ldyBVaW50OEFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMuZmxvYXQzMj1uZXcg RmxvYXQzMkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpfSxlLnByb3RvdHlwZS5lbXBsYWNlQmFj az1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXpl KG4rMSksdGhpcy5lbXBsYWNlKG4sdCxlLHIpfSxlLnByb3RvdHlwZS5lbXBsYWNlPWZ1bmN0 aW9uKHQsZSxyLG4pe3ZhciBpPTMqdDtyZXR1cm4gdGhpcy5mbG9hdDMyW2krMF09ZSx0aGlz LmZsb2F0MzJbaSsxXT1yLHRoaXMuZmxvYXQzMltpKzJdPW4sdH0sZX0oUGkpO2ppLnByb3Rv dHlwZS5ieXRlc1BlckVsZW1lbnQ9MTIsTm4oIlN0cnVjdEFycmF5TGF5b3V0M2YxMiIsamkp O3ZhciBVaT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50 cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRl KHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBl Ll9yZWZyZXNoVmlld3M9ZnVuY3Rpb24oKXt0aGlzLnVpbnQ4PW5ldyBVaW50OEFycmF5KHRo aXMuYXJyYXlCdWZmZXIpLHRoaXMudWludDMyPW5ldyBVaW50MzJBcnJheSh0aGlzLmFycmF5 QnVmZmVyKX0sZS5wcm90b3R5cGUuZW1wbGFjZUJhY2s9ZnVuY3Rpb24odCl7dmFyIGU9dGhp cy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKGUrMSksdGhpcy5lbXBsYWNlKGUsdCl9LGUu cHJvdG90eXBlLmVtcGxhY2U9ZnVuY3Rpb24odCxlKXt2YXIgcj0xKnQ7cmV0dXJuIHRoaXMu dWludDMyW3IrMF09ZSx0fSxlfShQaSk7VWkucHJvdG90eXBlLmJ5dGVzUGVyRWxlbWVudD00 LE5uKCJTdHJ1Y3RBcnJheUxheW91dDF1bDQiLFVpKTt2YXIgVmk9ZnVuY3Rpb24odCl7ZnVu Y3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3Rv X189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90 b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9u KCl7dGhpcy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmlu dDE2PW5ldyBJbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMudWludDMyPW5ldyBV aW50MzJBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLnVpbnQxNj1uZXcgVWludDE2QXJy YXkodGhpcy5hcnJheUJ1ZmZlcil9LGUucHJvdG90eXBlLmVtcGxhY2VCYWNrPWZ1bmN0aW9u KHQsZSxyLG4saSxhLG8scyxsKXt2YXIgYz10aGlzLmxlbmd0aDtyZXR1cm4gdGhpcy5yZXNp emUoYysxKSx0aGlzLmVtcGxhY2UoYyx0LGUscixuLGksYSxvLHMsbCl9LGUucHJvdG90eXBl LmVtcGxhY2U9ZnVuY3Rpb24odCxlLHIsbixpLGEsbyxzLGwsYyl7dmFyIHU9MTAqdCxmPTUq dDtyZXR1cm4gdGhpcy5pbnQxNlt1KzBdPWUsdGhpcy5pbnQxNlt1KzFdPXIsdGhpcy5pbnQx Nlt1KzJdPW4sdGhpcy5pbnQxNlt1KzNdPWksdGhpcy5pbnQxNlt1KzRdPWEsdGhpcy5pbnQx Nlt1KzVdPW8sdGhpcy51aW50MzJbZiszXT1zLHRoaXMudWludDE2W3UrOF09bCx0aGlzLnVp bnQxNlt1KzldPWMsdH0sZX0oUGkpO1ZpLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9MjAs Tm4oIlN0cnVjdEFycmF5TGF5b3V0NmkxdWwydWkyMCIsVmkpO3ZhciBIaT1mdW5jdGlvbih0 KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9f cHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxl LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLl9yZWZyZXNoVmlld3M9ZnVu Y3Rpb24oKXt0aGlzLnVpbnQ4PW5ldyBVaW50OEFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRo aXMuaW50MTY9bmV3IEludDE2QXJyYXkodGhpcy5hcnJheUJ1ZmZlcil9LGUucHJvdG90eXBl LmVtcGxhY2VCYWNrPWZ1bmN0aW9uKHQsZSxyLG4saSxhKXt2YXIgbz10aGlzLmxlbmd0aDty ZXR1cm4gdGhpcy5yZXNpemUobysxKSx0aGlzLmVtcGxhY2Uobyx0LGUscixuLGksYSl9LGUu cHJvdG90eXBlLmVtcGxhY2U9ZnVuY3Rpb24odCxlLHIsbixpLGEsbyl7dmFyIHM9Nip0O3Jl dHVybiB0aGlzLmludDE2W3MrMF09ZSx0aGlzLmludDE2W3MrMV09cix0aGlzLmludDE2W3Mr Ml09bix0aGlzLmludDE2W3MrM109aSx0aGlzLmludDE2W3MrNF09YSx0aGlzLmludDE2W3Mr NV09byx0fSxlfShQaSk7SGkucHJvdG90eXBlLmJ5dGVzUGVyRWxlbWVudD0xMixObigiU3Ry dWN0QXJyYXlMYXlvdXQyaTJpMmkxMiIsSGkpO3ZhciBxaT1mdW5jdGlvbih0KXtmdW5jdGlv biBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10 KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlw ZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLl9yZWZyZXNoVmlld3M9ZnVuY3Rpb24oKXt0 aGlzLnVpbnQ4PW5ldyBVaW50OEFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMuZmxvYXQz Mj1uZXcgRmxvYXQzMkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMuaW50MTY9bmV3IElu dDE2QXJyYXkodGhpcy5hcnJheUJ1ZmZlcil9LGUucHJvdG90eXBlLmVtcGxhY2VCYWNrPWZ1 bmN0aW9uKHQsZSxyLG4saSl7dmFyIGE9dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXpl KGErMSksdGhpcy5lbXBsYWNlKGEsdCxlLHIsbixpKX0sZS5wcm90b3R5cGUuZW1wbGFjZT1m dW5jdGlvbih0LGUscixuLGksYSl7dmFyIG89NCp0LHM9OCp0O3JldHVybiB0aGlzLmZsb2F0 MzJbbyswXT1lLHRoaXMuZmxvYXQzMltvKzFdPXIsdGhpcy5mbG9hdDMyW28rMl09bix0aGlz LmludDE2W3MrNl09aSx0aGlzLmludDE2W3MrN109YSx0fSxlfShQaSk7cWkucHJvdG90eXBl LmJ5dGVzUGVyRWxlbWVudD0xNixObigiU3RydWN0QXJyYXlMYXlvdXQyZjFmMmkxNiIscWkp O3ZhciBHaT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50 cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRl KHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBl Ll9yZWZyZXNoVmlld3M9ZnVuY3Rpb24oKXt0aGlzLnVpbnQ4PW5ldyBVaW50OEFycmF5KHRo aXMuYXJyYXlCdWZmZXIpLHRoaXMuZmxvYXQzMj1uZXcgRmxvYXQzMkFycmF5KHRoaXMuYXJy YXlCdWZmZXIpfSxlLnByb3RvdHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlvbih0LGUscixuKXt2 YXIgaT10aGlzLmxlbmd0aDtyZXR1cm4gdGhpcy5yZXNpemUoaSsxKSx0aGlzLmVtcGxhY2Uo aSx0LGUscixuKX0sZS5wcm90b3R5cGUuZW1wbGFjZT1mdW5jdGlvbih0LGUscixuLGkpe3Zh ciBhPTEyKnQsbz0zKnQ7cmV0dXJuIHRoaXMudWludDhbYSswXT1lLHRoaXMudWludDhbYSsx XT1yLHRoaXMuZmxvYXQzMltvKzFdPW4sdGhpcy5mbG9hdDMyW28rMl09aSx0fSxlfShQaSk7 R2kucHJvdG90eXBlLmJ5dGVzUGVyRWxlbWVudD0xMixObigiU3RydWN0QXJyYXlMYXlvdXQy dWIyZjEyIixHaSk7dmFyIFlpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRo aXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9i amVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUs ZS5wcm90b3R5cGUuX3JlZnJlc2hWaWV3cz1mdW5jdGlvbigpe3RoaXMudWludDg9bmV3IFVp bnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy51aW50MTY9bmV3IFVpbnQxNkFycmF5 KHRoaXMuYXJyYXlCdWZmZXIpfSxlLnByb3RvdHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlvbih0 LGUscil7dmFyIG49dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKG4rMSksdGhpcy5l bXBsYWNlKG4sdCxlLHIpfSxlLnByb3RvdHlwZS5lbXBsYWNlPWZ1bmN0aW9uKHQsZSxyLG4p e3ZhciBpPTMqdDtyZXR1cm4gdGhpcy51aW50MTZbaSswXT1lLHRoaXMudWludDE2W2krMV09 cix0aGlzLnVpbnQxNltpKzJdPW4sdH0sZX0oUGkpO1lpLnByb3RvdHlwZS5ieXRlc1BlckVs ZW1lbnQ9NixObigiU3RydWN0QXJyYXlMYXlvdXQzdWk2IixZaSk7dmFyIFdpPWZ1bmN0aW9u KHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUu X19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUp LGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuX3JlZnJlc2hWaWV3cz1m dW5jdGlvbigpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciks dGhpcy5pbnQxNj1uZXcgSW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLnVpbnQx Nj1uZXcgVWludDE2QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy51aW50MzI9bmV3IFVp bnQzMkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpLHRoaXMuZmxvYXQzMj1uZXcgRmxvYXQzMkFy cmF5KHRoaXMuYXJyYXlCdWZmZXIpfSxlLnByb3RvdHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlv bih0LGUscixuLGksYSxvLHMsbCxjLHUsZixoLHAsZCxtLGcpe3ZhciB2PXRoaXMubGVuZ3Ro O3JldHVybiB0aGlzLnJlc2l6ZSh2KzEpLHRoaXMuZW1wbGFjZSh2LHQsZSxyLG4saSxhLG8s cyxsLGMsdSxmLGgscCxkLG0sZyl9LGUucHJvdG90eXBlLmVtcGxhY2U9ZnVuY3Rpb24odCxl LHIsbixpLGEsbyxzLGwsYyx1LGYsaCxwLGQsbSxnLHYpe3ZhciB5PTI0KnQseD0xMip0LGI9 NDgqdDtyZXR1cm4gdGhpcy5pbnQxNlt5KzBdPWUsdGhpcy5pbnQxNlt5KzFdPXIsdGhpcy51 aW50MTZbeSsyXT1uLHRoaXMudWludDE2W3krM109aSx0aGlzLnVpbnQzMlt4KzJdPWEsdGhp cy51aW50MzJbeCszXT1vLHRoaXMudWludDMyW3grNF09cyx0aGlzLnVpbnQxNlt5KzEwXT1s LHRoaXMudWludDE2W3krMTFdPWMsdGhpcy51aW50MTZbeSsxMl09dSx0aGlzLmZsb2F0MzJb eCs3XT1mLHRoaXMuZmxvYXQzMlt4KzhdPWgsdGhpcy51aW50OFtiKzM2XT1wLHRoaXMudWlu dDhbYiszN109ZCx0aGlzLnVpbnQ4W2IrMzhdPW0sdGhpcy51aW50MzJbeCsxMF09Zyx0aGlz LmludDE2W3krMjJdPXYsdH0sZX0oUGkpO1dpLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9 NDgsTm4oIlN0cnVjdEFycmF5TGF5b3V0MmkydWkzdWwzdWkyZjN1YjF1bDFpNDgiLFdpKTt2 YXIgWGk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMp fXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0 JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5f cmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7dGhpcy51aW50OD1uZXcgVWludDhBcnJheSh0aGlz LmFycmF5QnVmZmVyKSx0aGlzLmludDE2PW5ldyBJbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZm ZXIpLHRoaXMudWludDE2PW5ldyBVaW50MTZBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlz LnVpbnQzMj1uZXcgVWludDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5mbG9hdDMy PW5ldyBGbG9hdDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlcil9LGUucHJvdG90eXBlLmVtcGxh Y2VCYWNrPWZ1bmN0aW9uKHQsZSxyLG4saSxhLG8scyxsLGMsdSxmLGgscCxkLG0sZyx2LHks eCxiLF8sdyxULGssQSxNLFMpe3ZhciBFPXRoaXMubGVuZ3RoO3JldHVybiB0aGlzLnJlc2l6 ZShFKzEpLHRoaXMuZW1wbGFjZShFLHQsZSxyLG4saSxhLG8scyxsLGMsdSxmLGgscCxkLG0s Zyx2LHkseCxiLF8sdyxULGssQSxNLFMpfSxlLnByb3RvdHlwZS5lbXBsYWNlPWZ1bmN0aW9u KHQsZSxyLG4saSxhLG8scyxsLGMsdSxmLGgscCxkLG0sZyx2LHkseCxiLF8sdyxULGssQSxN LFMsRSl7dmFyIEw9MzQqdCxDPTE3KnQ7cmV0dXJuIHRoaXMuaW50MTZbTCswXT1lLHRoaXMu aW50MTZbTCsxXT1yLHRoaXMuaW50MTZbTCsyXT1uLHRoaXMuaW50MTZbTCszXT1pLHRoaXMu aW50MTZbTCs0XT1hLHRoaXMuaW50MTZbTCs1XT1vLHRoaXMuaW50MTZbTCs2XT1zLHRoaXMu aW50MTZbTCs3XT1sLHRoaXMudWludDE2W0wrOF09Yyx0aGlzLnVpbnQxNltMKzldPXUsdGhp cy51aW50MTZbTCsxMF09Zix0aGlzLnVpbnQxNltMKzExXT1oLHRoaXMudWludDE2W0wrMTJd PXAsdGhpcy51aW50MTZbTCsxM109ZCx0aGlzLnVpbnQxNltMKzE0XT1tLHRoaXMudWludDE2 W0wrMTVdPWcsdGhpcy51aW50MTZbTCsxNl09dix0aGlzLnVpbnQxNltMKzE3XT15LHRoaXMu dWludDE2W0wrMThdPXgsdGhpcy51aW50MTZbTCsxOV09Yix0aGlzLnVpbnQxNltMKzIwXT1f LHRoaXMudWludDE2W0wrMjFdPXcsdGhpcy51aW50MTZbTCsyMl09VCx0aGlzLnVpbnQzMltD KzEyXT1rLHRoaXMuZmxvYXQzMltDKzEzXT1BLHRoaXMuZmxvYXQzMltDKzE0XT1NLHRoaXMu ZmxvYXQzMltDKzE1XT1TLHRoaXMuZmxvYXQzMltDKzE2XT1FLHR9LGV9KFBpKTtYaS5wcm90 b3R5cGUuYnl0ZXNQZXJFbGVtZW50PTY4LE5uKCJTdHJ1Y3RBcnJheUxheW91dDhpMTV1aTF1 bDRmNjgiLFhpKTt2YXIgWmk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhp cyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2Jq ZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxl LnByb3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7dGhpcy51aW50OD1uZXcgVWlu dDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmZsb2F0MzI9bmV3IEZsb2F0MzJBcnJh eSh0aGlzLmFycmF5QnVmZmVyKX0sZS5wcm90b3R5cGUuZW1wbGFjZUJhY2s9ZnVuY3Rpb24o dCl7dmFyIGU9dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKGUrMSksdGhpcy5lbXBs YWNlKGUsdCl9LGUucHJvdG90eXBlLmVtcGxhY2U9ZnVuY3Rpb24odCxlKXt2YXIgcj0xKnQ7 cmV0dXJuIHRoaXMuZmxvYXQzMltyKzBdPWUsdH0sZX0oUGkpO1ppLnByb3RvdHlwZS5ieXRl c1BlckVsZW1lbnQ9NCxObigiU3RydWN0QXJyYXlMYXlvdXQxZjQiLFppKTt2YXIgSmk9ZnVu Y3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0 JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3Rv dHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5fcmVmcmVzaFZp ZXdzPWZ1bmN0aW9uKCl7dGhpcy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVm ZmVyKSx0aGlzLmludDE2PW5ldyBJbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpfSxlLnBy b3RvdHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5sZW5ndGg7 cmV0dXJuIHRoaXMucmVzaXplKG4rMSksdGhpcy5lbXBsYWNlKG4sdCxlLHIpfSxlLnByb3Rv dHlwZS5lbXBsYWNlPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPTMqdDtyZXR1cm4gdGhpcy5p bnQxNltpKzBdPWUsdGhpcy5pbnQxNltpKzFdPXIsdGhpcy5pbnQxNltpKzJdPW4sdH0sZX0o UGkpO0ppLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9NixObigiU3RydWN0QXJyYXlMYXlv dXQzaTYiLEppKTt2YXIgS2k9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhp cyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2Jq ZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxl LnByb3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7dGhpcy51aW50OD1uZXcgVWlu dDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLnVpbnQzMj1uZXcgVWludDMyQXJyYXko dGhpcy5hcnJheUJ1ZmZlciksdGhpcy51aW50MTY9bmV3IFVpbnQxNkFycmF5KHRoaXMuYXJy YXlCdWZmZXIpfSxlLnByb3RvdHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlvbih0LGUscil7dmFy IG49dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKG4rMSksdGhpcy5lbXBsYWNlKG4s dCxlLHIpfSxlLnByb3RvdHlwZS5lbXBsYWNlPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPTIq dCxhPTQqdDtyZXR1cm4gdGhpcy51aW50MzJbaSswXT1lLHRoaXMudWludDE2W2ErMl09cix0 aGlzLnVpbnQxNlthKzNdPW4sdH0sZX0oUGkpO0tpLnByb3RvdHlwZS5ieXRlc1BlckVsZW1l bnQ9OCxObigiU3RydWN0QXJyYXlMYXlvdXQxdWwydWk4IixLaSk7dmFyIFFpPWZ1bmN0aW9u KHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUu X19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUp LGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuX3JlZnJlc2hWaWV3cz1m dW5jdGlvbigpe3RoaXMudWludDg9bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciks dGhpcy51aW50MTY9bmV3IFVpbnQxNkFycmF5KHRoaXMuYXJyYXlCdWZmZXIpfSxlLnByb3Rv dHlwZS5lbXBsYWNlQmFjaz1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMubGVuZ3RoO3JldHVy biB0aGlzLnJlc2l6ZShyKzEpLHRoaXMuZW1wbGFjZShyLHQsZSl9LGUucHJvdG90eXBlLmVt cGxhY2U9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPTIqdDtyZXR1cm4gdGhpcy51aW50MTZbbisw XT1lLHRoaXMudWludDE2W24rMV09cix0fSxlfShQaSk7UWkucHJvdG90eXBlLmJ5dGVzUGVy RWxlbWVudD00LE5uKCJTdHJ1Y3RBcnJheUxheW91dDJ1aTQiLFFpKTt2YXIgJGk9ZnVuY3Rp b24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYo ZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlw ZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5fcmVmcmVzaFZpZXdz PWZ1bmN0aW9uKCl7dGhpcy51aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVy KSx0aGlzLnVpbnQxNj1uZXcgVWludDE2QXJyYXkodGhpcy5hcnJheUJ1ZmZlcil9LGUucHJv dG90eXBlLmVtcGxhY2VCYWNrPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubGVuZ3RoO3JldHVy biB0aGlzLnJlc2l6ZShlKzEpLHRoaXMuZW1wbGFjZShlLHQpfSxlLnByb3RvdHlwZS5lbXBs YWNlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9MSp0O3JldHVybiB0aGlzLnVpbnQxNltyKzBdPWUs dH0sZX0oUGkpOyRpLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9MixObigiU3RydWN0QXJy YXlMYXlvdXQxdWkyIiwkaSk7dmFyIHRhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFw cGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90 eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVj dG9yPWUsZS5wcm90b3R5cGUuX3JlZnJlc2hWaWV3cz1mdW5jdGlvbigpe3RoaXMudWludDg9 bmV3IFVpbnQ4QXJyYXkodGhpcy5hcnJheUJ1ZmZlciksdGhpcy5mbG9hdDMyPW5ldyBGbG9h dDMyQXJyYXkodGhpcy5hcnJheUJ1ZmZlcil9LGUucHJvdG90eXBlLmVtcGxhY2VCYWNrPWZ1 bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVzaXplKHIrMSks dGhpcy5lbXBsYWNlKHIsdCxlKX0sZS5wcm90b3R5cGUuZW1wbGFjZT1mdW5jdGlvbih0LGUs cil7dmFyIG49Mip0O3JldHVybiB0aGlzLmZsb2F0MzJbbiswXT1lLHRoaXMuZmxvYXQzMltu KzFdPXIsdH0sZX0oUGkpO3RhLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9OCxObigiU3Ry dWN0QXJyYXlMYXlvdXQyZjgiLHRhKTt2YXIgZWE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgp e3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5w cm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29u c3RydWN0b3I9ZSxlLnByb3RvdHlwZS5fcmVmcmVzaFZpZXdzPWZ1bmN0aW9uKCl7dGhpcy51 aW50OD1uZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKSx0aGlzLmZsb2F0MzI9bmV3 IEZsb2F0MzJBcnJheSh0aGlzLmFycmF5QnVmZmVyKX0sZS5wcm90b3R5cGUuZW1wbGFjZUJh Y2s9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9dGhpcy5sZW5ndGg7cmV0dXJuIHRoaXMucmVz aXplKGkrMSksdGhpcy5lbXBsYWNlKGksdCxlLHIsbil9LGUucHJvdG90eXBlLmVtcGxhY2U9 ZnVuY3Rpb24odCxlLHIsbixpKXt2YXIgYT00KnQ7cmV0dXJuIHRoaXMuZmxvYXQzMlthKzBd PWUsdGhpcy5mbG9hdDMyW2ErMV09cix0aGlzLmZsb2F0MzJbYSsyXT1uLHRoaXMuZmxvYXQz MlthKzNdPWksdH0sZX0oUGkpO2VhLnByb3RvdHlwZS5ieXRlc1BlckVsZW1lbnQ9MTYsTm4o IlN0cnVjdEFycmF5TGF5b3V0NGYxNiIsZWEpO3ZhciByYT1mdW5jdGlvbih0KXtmdW5jdGlv biBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dCYmKGUuX19wcm90b19fPXQpLGUucHJv dG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0 cnVjdG9yPWU7dmFyIHI9e2FuY2hvclBvaW50WDp7Y29uZmlndXJhYmxlOiEwfSxhbmNob3JQ b2ludFk6e2NvbmZpZ3VyYWJsZTohMH0seDE6e2NvbmZpZ3VyYWJsZTohMH0seTE6e2NvbmZp Z3VyYWJsZTohMH0seDI6e2NvbmZpZ3VyYWJsZTohMH0seTI6e2NvbmZpZ3VyYWJsZTohMH0s ZmVhdHVyZUluZGV4Ontjb25maWd1cmFibGU6ITB9LHNvdXJjZUxheWVySW5kZXg6e2NvbmZp Z3VyYWJsZTohMH0sYnVja2V0SW5kZXg6e2NvbmZpZ3VyYWJsZTohMH0sYW5jaG9yUG9pbnQ6 e2NvbmZpZ3VyYWJsZTohMH19O3JldHVybiByLmFuY2hvclBvaW50WC5nZXQ9ZnVuY3Rpb24o KXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMiswXX0sci5hbmNo b3JQb2ludFkuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LmludDE2 W3RoaXMuX3BvczIrMV19LHIueDEuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVj dEFycmF5LmludDE2W3RoaXMuX3BvczIrMl19LHIueTEuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrM119LHIueDIuZ2V0PWZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrNF19LHIu eTIuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMu X3BvczIrNV19LHIuZmVhdHVyZUluZGV4LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9z dHJ1Y3RBcnJheS51aW50MzJbdGhpcy5fcG9zNCszXX0sci5zb3VyY2VMYXllckluZGV4Lmdl dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9z Mis4XX0sci5idWNrZXRJbmRleC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0 QXJyYXkudWludDE2W3RoaXMuX3BvczIrOV19LHIuYW5jaG9yUG9pbnQuZ2V0PWZ1bmN0aW9u KCl7cmV0dXJuIG5ldyBpKHRoaXMuYW5jaG9yUG9pbnRYLHRoaXMuYW5jaG9yUG9pbnRZKX0s T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsciksZX0oQ2kpO3JhLnByb3Rv dHlwZS5zaXplPTIwO3ZhciBuYT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0 aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1P YmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1l LGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHJhKHRoaXMsdCl9LGV9 KFZpKTtObigiQ29sbGlzaW9uQm94QXJyYXkiLG5hKTt2YXIgaWE9ZnVuY3Rpb24odCl7ZnVu Y3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXQmJihlLl9fcHJvdG9fXz10KSxl LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5j b25zdHJ1Y3Rvcj1lO3ZhciByPXthbmNob3JYOntjb25maWd1cmFibGU6ITB9LGFuY2hvclk6 e2NvbmZpZ3VyYWJsZTohMH0sZ2x5cGhTdGFydEluZGV4Ontjb25maWd1cmFibGU6ITB9LG51 bUdseXBoczp7Y29uZmlndXJhYmxlOiEwfSx2ZXJ0ZXhTdGFydEluZGV4Ontjb25maWd1cmFi bGU6ITB9LGxpbmVTdGFydEluZGV4Ontjb25maWd1cmFibGU6ITB9LGxpbmVMZW5ndGg6e2Nv bmZpZ3VyYWJsZTohMH0sc2VnbWVudDp7Y29uZmlndXJhYmxlOiEwfSxsb3dlclNpemU6e2Nv bmZpZ3VyYWJsZTohMH0sdXBwZXJTaXplOntjb25maWd1cmFibGU6ITB9LGxpbmVPZmZzZXRY Ontjb25maWd1cmFibGU6ITB9LGxpbmVPZmZzZXRZOntjb25maWd1cmFibGU6ITB9LHdyaXRp bmdNb2RlOntjb25maWd1cmFibGU6ITB9LHBsYWNlZE9yaWVudGF0aW9uOntjb25maWd1cmFi bGU6ITB9LGhpZGRlbjp7Y29uZmlndXJhYmxlOiEwfSxjcm9zc1RpbGVJRDp7Y29uZmlndXJh YmxlOiEwfSxhc3NvY2lhdGVkSWNvbkluZGV4Ontjb25maWd1cmFibGU6ITB9fTtyZXR1cm4g ci5hbmNob3JYLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5pbnQx Nlt0aGlzLl9wb3MyKzBdfSxyLmFuY2hvclkuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu X3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrMV19LHIuZ2x5cGhTdGFydEluZGV4Lmdl dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9z MisyXX0sci5udW1HbHlwaHMuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFy cmF5LnVpbnQxNlt0aGlzLl9wb3MyKzNdfSxyLnZlcnRleFN0YXJ0SW5kZXguZ2V0PWZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQzMlt0aGlzLl9wb3M0KzJdfSxy LmxpbmVTdGFydEluZGV4LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJh eS51aW50MzJbdGhpcy5fcG9zNCszXX0sci5saW5lTGVuZ3RoLmdldD1mdW5jdGlvbigpe3Jl dHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MzJbdGhpcy5fcG9zNCs0XX0sci5zZWdtZW50 LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5f cG9zMisxMF19LHIubG93ZXJTaXplLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1 Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMisxMV19LHIudXBwZXJTaXplLmdldD1mdW5jdGlv bigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMisxMl19LHIu bGluZU9mZnNldFguZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LmZs b2F0MzJbdGhpcy5fcG9zNCs3XX0sci5saW5lT2Zmc2V0WS5nZXQ9ZnVuY3Rpb24oKXtyZXR1 cm4gdGhpcy5fc3RydWN0QXJyYXkuZmxvYXQzMlt0aGlzLl9wb3M0KzhdfSxyLndyaXRpbmdN b2RlLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50OFt0aGlz Ll9wb3MxKzM2XX0sci5wbGFjZWRPcmllbnRhdGlvbi5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5fc3RydWN0QXJyYXkudWludDhbdGhpcy5fcG9zMSszN119LHIucGxhY2VkT3JpZW50 YXRpb24uc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3N0cnVjdEFycmF5LnVpbnQ4W3RoaXMuX3Bv czErMzddPXR9LHIuaGlkZGVuLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RB cnJheS51aW50OFt0aGlzLl9wb3MxKzM4XX0sci5oaWRkZW4uc2V0PWZ1bmN0aW9uKHQpe3Ro aXMuX3N0cnVjdEFycmF5LnVpbnQ4W3RoaXMuX3BvczErMzhdPXR9LHIuY3Jvc3NUaWxlSUQu Z2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQzMlt0aGlzLl9w b3M0KzEwXX0sci5jcm9zc1RpbGVJRC5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fc3RydWN0QXJy YXkudWludDMyW3RoaXMuX3BvczQrMTBdPXR9LHIuYXNzb2NpYXRlZEljb25JbmRleC5nZXQ9 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkuaW50MTZbdGhpcy5fcG9zMisy Ml19LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLHIpLGV9KENpKTtpYS5w cm90b3R5cGUuc2l6ZT00ODt2YXIgYWE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBw bHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5 cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0 b3I9ZSxlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBpYSh0aGlzLHQp fSxlfShXaSk7Tm4oIlBsYWNlZFN5bWJvbEFycmF5IixhYSk7dmFyIG9hPWZ1bmN0aW9uKHQp e2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX10JiYoZS5fX3Byb3RvX189 dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5 cGUuY29uc3RydWN0b3I9ZTt2YXIgcj17YW5jaG9yWDp7Y29uZmlndXJhYmxlOiEwfSxhbmNo b3JZOntjb25maWd1cmFibGU6ITB9LHJpZ2h0SnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4Ontj b25maWd1cmFibGU6ITB9LGNlbnRlckp1c3RpZmllZFRleHRTeW1ib2xJbmRleDp7Y29uZmln dXJhYmxlOiEwfSxsZWZ0SnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4Ontjb25maWd1cmFibGU6 ITB9LHZlcnRpY2FsUGxhY2VkVGV4dFN5bWJvbEluZGV4Ontjb25maWd1cmFibGU6ITB9LHBs YWNlZEljb25TeW1ib2xJbmRleDp7Y29uZmlndXJhYmxlOiEwfSx2ZXJ0aWNhbFBsYWNlZElj b25TeW1ib2xJbmRleDp7Y29uZmlndXJhYmxlOiEwfSxrZXk6e2NvbmZpZ3VyYWJsZTohMH0s dGV4dEJveFN0YXJ0SW5kZXg6e2NvbmZpZ3VyYWJsZTohMH0sdGV4dEJveEVuZEluZGV4Ontj b25maWd1cmFibGU6ITB9LHZlcnRpY2FsVGV4dEJveFN0YXJ0SW5kZXg6e2NvbmZpZ3VyYWJs ZTohMH0sdmVydGljYWxUZXh0Qm94RW5kSW5kZXg6e2NvbmZpZ3VyYWJsZTohMH0saWNvbkJv eFN0YXJ0SW5kZXg6e2NvbmZpZ3VyYWJsZTohMH0saWNvbkJveEVuZEluZGV4Ontjb25maWd1 cmFibGU6ITB9LHZlcnRpY2FsSWNvbkJveFN0YXJ0SW5kZXg6e2NvbmZpZ3VyYWJsZTohMH0s dmVydGljYWxJY29uQm94RW5kSW5kZXg6e2NvbmZpZ3VyYWJsZTohMH0sZmVhdHVyZUluZGV4 Ontjb25maWd1cmFibGU6ITB9LG51bUhvcml6b250YWxHbHlwaFZlcnRpY2VzOntjb25maWd1 cmFibGU6ITB9LG51bVZlcnRpY2FsR2x5cGhWZXJ0aWNlczp7Y29uZmlndXJhYmxlOiEwfSxu dW1JY29uVmVydGljZXM6e2NvbmZpZ3VyYWJsZTohMH0sbnVtVmVydGljYWxJY29uVmVydGlj ZXM6e2NvbmZpZ3VyYWJsZTohMH0sdXNlUnVudGltZUNvbGxpc2lvbkNpcmNsZXM6e2NvbmZp Z3VyYWJsZTohMH0sY3Jvc3NUaWxlSUQ6e2NvbmZpZ3VyYWJsZTohMH0sdGV4dEJveFNjYWxl Ontjb25maWd1cmFibGU6ITB9LHRleHRPZmZzZXQwOntjb25maWd1cmFibGU6ITB9LHRleHRP ZmZzZXQxOntjb25maWd1cmFibGU6ITB9LGNvbGxpc2lvbkNpcmNsZURpYW1ldGVyOntjb25m aWd1cmFibGU6ITB9fTtyZXR1cm4gci5hbmNob3JYLmdldD1mdW5jdGlvbigpe3JldHVybiB0 aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlzLl9wb3MyKzBdfSxyLmFuY2hvclkuZ2V0PWZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrMV19 LHIucmlnaHRKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXguZ2V0PWZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrMl19LHIuY2VudGVySnVzdGlm aWVkVGV4dFN5bWJvbEluZGV4LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RB cnJheS5pbnQxNlt0aGlzLl9wb3MyKzNdfSxyLmxlZnRKdXN0aWZpZWRUZXh0U3ltYm9sSW5k ZXguZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMu X3BvczIrNF19LHIudmVydGljYWxQbGFjZWRUZXh0U3ltYm9sSW5kZXguZ2V0PWZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LmludDE2W3RoaXMuX3BvczIrNV19LHIucGxh Y2VkSWNvblN5bWJvbEluZGV4LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RB cnJheS5pbnQxNlt0aGlzLl9wb3MyKzZdfSxyLnZlcnRpY2FsUGxhY2VkSWNvblN5bWJvbElu ZGV4LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5pbnQxNlt0aGlz Ll9wb3MyKzddfSxyLmtleS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJy YXkudWludDE2W3RoaXMuX3BvczIrOF19LHIudGV4dEJveFN0YXJ0SW5kZXguZ2V0PWZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzldfSxy LnRleHRCb3hFbmRJbmRleC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJy YXkudWludDE2W3RoaXMuX3BvczIrMTBdfSxyLnZlcnRpY2FsVGV4dEJveFN0YXJ0SW5kZXgu Z2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9w b3MyKzExXX0sci52ZXJ0aWNhbFRleHRCb3hFbmRJbmRleC5nZXQ9ZnVuY3Rpb24oKXtyZXR1 cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3BvczIrMTJdfSxyLmljb25Cb3hT dGFydEluZGV4LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50 MTZbdGhpcy5fcG9zMisxM119LHIuaWNvbkJveEVuZEluZGV4LmdldD1mdW5jdGlvbigpe3Jl dHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMisxNF19LHIudmVydGlj YWxJY29uQm94U3RhcnRJbmRleC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0 QXJyYXkudWludDE2W3RoaXMuX3BvczIrMTVdfSxyLnZlcnRpY2FsSWNvbkJveEVuZEluZGV4 LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5f cG9zMisxNl19LHIuZmVhdHVyZUluZGV4LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9z dHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMisxN119LHIubnVtSG9yaXpvbnRhbEdseXBo VmVydGljZXMuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQx Nlt0aGlzLl9wb3MyKzE4XX0sci5udW1WZXJ0aWNhbEdseXBoVmVydGljZXMuZ2V0PWZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzE5XX0s ci5udW1JY29uVmVydGljZXMuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFy cmF5LnVpbnQxNlt0aGlzLl9wb3MyKzIwXX0sci5udW1WZXJ0aWNhbEljb25WZXJ0aWNlcy5n ZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDE2W3RoaXMuX3Bv czIrMjFdfSxyLnVzZVJ1bnRpbWVDb2xsaXNpb25DaXJjbGVzLmdldD1mdW5jdGlvbigpe3Jl dHVybiB0aGlzLl9zdHJ1Y3RBcnJheS51aW50MTZbdGhpcy5fcG9zMisyMl19LHIuY3Jvc3NU aWxlSUQuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQzMlt0 aGlzLl9wb3M0KzEyXX0sci5jcm9zc1RpbGVJRC5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fc3Ry dWN0QXJyYXkudWludDMyW3RoaXMuX3BvczQrMTJdPXR9LHIudGV4dEJveFNjYWxlLmdldD1m dW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5mbG9hdDMyW3RoaXMuX3BvczQr MTNdfSxyLnRleHRPZmZzZXQwLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdHJ1Y3RB cnJheS5mbG9hdDMyW3RoaXMuX3BvczQrMTRdfSxyLnRleHRPZmZzZXQxLmdldD1mdW5jdGlv bigpe3JldHVybiB0aGlzLl9zdHJ1Y3RBcnJheS5mbG9hdDMyW3RoaXMuX3BvczQrMTVdfSxy LmNvbGxpc2lvbkNpcmNsZURpYW1ldGVyLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9z dHJ1Y3RBcnJheS5mbG9hdDMyW3RoaXMuX3BvczQrMTZdfSxPYmplY3QuZGVmaW5lUHJvcGVy dGllcyhlLnByb3RvdHlwZSxyKSxlfShDaSk7b2EucHJvdG90eXBlLnNpemU9Njg7dmFyIHNh PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1 cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5w cm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0PWZ1 bmN0aW9uKHQpe3JldHVybiBuZXcgb2EodGhpcyx0KX0sZX0oWGkpO05uKCJTeW1ib2xJbnN0 YW5jZUFycmF5IixzYSk7dmFyIGxhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5 KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBl PU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9y PWUsZS5wcm90b3R5cGUuZ2V0b2Zmc2V0WD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5mbG9h dDMyWzEqdCswXX0sZX0oWmkpO05uKCJHbHlwaE9mZnNldEFycmF5IixsYSk7dmFyIGNhPWZ1 bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4g dCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90 b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0eD1mdW5j dGlvbih0KXtyZXR1cm4gdGhpcy5pbnQxNlszKnQrMF19LGUucHJvdG90eXBlLmdldHk9ZnVu Y3Rpb24odCl7cmV0dXJuIHRoaXMuaW50MTZbMyp0KzFdfSxlLnByb3RvdHlwZS5nZXR0aWxl VW5pdERpc3RhbmNlRnJvbUFuY2hvcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbnQxNlsz KnQrMl19LGV9KEppKTtObigiU3ltYm9sTGluZVZlcnRleEFycmF5IixjYSk7dmFyIHVhPWZ1 bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX10JiYoZS5f X3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSks ZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZTt2YXIgcj17ZmVhdHVyZUluZGV4Ontjb25maWd1 cmFibGU6ITB9LHNvdXJjZUxheWVySW5kZXg6e2NvbmZpZ3VyYWJsZTohMH0sYnVja2V0SW5k ZXg6e2NvbmZpZ3VyYWJsZTohMH19O3JldHVybiByLmZlYXR1cmVJbmRleC5nZXQ9ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJyYXkudWludDMyW3RoaXMuX3BvczQrMF19LHIu c291cmNlTGF5ZXJJbmRleC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RydWN0QXJy YXkudWludDE2W3RoaXMuX3BvczIrMl19LHIuYnVja2V0SW5kZXguZ2V0PWZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMuX3N0cnVjdEFycmF5LnVpbnQxNlt0aGlzLl9wb3MyKzNdfSxPYmplY3Qu ZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSxyKSxlfShDaSk7dWEucHJvdG90eXBlLnNp emU9ODt2YXIgZmE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1 bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNy ZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3Rv dHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyB1YSh0aGlzLHQpfSxlfShLaSk7Tm4o IkZlYXR1cmVJbmRleEFycmF5IixmYSk7dmFyIGhhPUlpKFt7bmFtZToiYV9wb3MiLGNvbXBv bmVudHM6Mix0eXBlOiJJbnQxNiJ9XSw0KS5tZW1iZXJzLHBhPWZ1bmN0aW9uKHQpe3ZvaWQg MD09PXQmJih0PVtdKSx0aGlzLnNlZ21lbnRzPXR9O2Z1bmN0aW9uIGRhKHQsZSl7cmV0dXJu IDI1NioodD1sKE1hdGguZmxvb3IodCksMCwyNTUpKSsoZT1sKE1hdGguZmxvb3IoZSksMCwy NTUpKX1wYS5wcm90b3R5cGUucHJlcGFyZVNlZ21lbnQ9ZnVuY3Rpb24odCxlLHIsbil7dmFy IGk9dGhpcy5zZWdtZW50c1t0aGlzLnNlZ21lbnRzLmxlbmd0aC0xXTtyZXR1cm4gdD5wYS5N QVhfVkVSVEVYX0FSUkFZX0xFTkdUSCYmXygiTWF4IHZlcnRpY2VzIHBlciBzZWdtZW50IGlz ICIrcGEuTUFYX1ZFUlRFWF9BUlJBWV9MRU5HVEgrIjogYnVja2V0IHJlcXVlc3RlZCAiK3Qp LCghaXx8aS52ZXJ0ZXhMZW5ndGgrdD5wYS5NQVhfVkVSVEVYX0FSUkFZX0xFTkdUSHx8aS5z b3J0S2V5IT09bikmJihpPXt2ZXJ0ZXhPZmZzZXQ6ZS5sZW5ndGgscHJpbWl0aXZlT2Zmc2V0 OnIubGVuZ3RoLHZlcnRleExlbmd0aDowLHByaW1pdGl2ZUxlbmd0aDowfSx2b2lkIDAhPT1u JiYoaS5zb3J0S2V5PW4pLHRoaXMuc2VnbWVudHMucHVzaChpKSksaX0scGEucHJvdG90eXBl LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlZ21lbnRzfSxwYS5wcm90b3R5cGUuZGVz dHJveT1mdW5jdGlvbigpe2Zvcih2YXIgdD0wLGU9dGhpcy5zZWdtZW50czt0PGUubGVuZ3Ro O3QrPTEpe3ZhciByPWVbdF07Zm9yKHZhciBuIGluIHIudmFvcylyLnZhb3Nbbl0uZGVzdHJv eSgpfX0scGEuc2ltcGxlU2VnbWVudD1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gbmV3IHBh KFt7dmVydGV4T2Zmc2V0OnQscHJpbWl0aXZlT2Zmc2V0OmUsdmVydGV4TGVuZ3RoOnIscHJp bWl0aXZlTGVuZ3RoOm4sdmFvczp7fSxzb3J0S2V5OjB9XSl9LHBhLk1BWF9WRVJURVhfQVJS QVlfTEVOR1RIPU1hdGgucG93KDIsMTYpLTEsTm4oIlNlZ21lbnRWZWN0b3IiLHBhKTt2YXIg bWE9SWkoW3tuYW1lOiJhX3BhdHRlcm5fZnJvbSIsY29tcG9uZW50czo0LHR5cGU6IlVpbnQx NiJ9LHtuYW1lOiJhX3BhdHRlcm5fdG8iLGNvbXBvbmVudHM6NCx0eXBlOiJVaW50MTYifSx7 bmFtZToiYV9waXhlbF9yYXRpb19mcm9tIixjb21wb25lbnRzOjEsdHlwZToiVWludDgifSx7 bmFtZToiYV9waXhlbF9yYXRpb190byIsY29tcG9uZW50czoxLHR5cGU6IlVpbnQ4In1dKSxn YT1lKChmdW5jdGlvbih0KXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGksYSxv LHMsbCxjO2ZvcihyPTMmdC5sZW5ndGgsbj10Lmxlbmd0aC1yLGk9ZSxvPTM0MzI5MTgzNTMs cz00NjE4NDU5MDcsYz0wO2M8bjspbD0yNTUmdC5jaGFyQ29kZUF0KGMpfCgyNTUmdC5jaGFy Q29kZUF0KCsrYykpPDw4fCgyNTUmdC5jaGFyQ29kZUF0KCsrYykpPDwxNnwoMjU1JnQuY2hh ckNvZGVBdCgrK2MpKTw8MjQsKytjLGk9Mjc0OTIrKDY1NTM1JihhPTUqKDY1NTM1JihpPShp Xj1sPSg2NTUzNSYobD0obD0oNjU1MzUmbCkqbysoKChsPj4+MTYpKm8mNjU1MzUpPDwxNikm NDI5NDk2NzI5NSk8PDE1fGw+Pj4xNykpKnMrKCgobD4+PjE2KSpzJjY1NTM1KTw8MTYpJjQy OTQ5NjcyOTUpPDwxM3xpPj4+MTkpKSsoKDUqKGk+Pj4xNikmNjU1MzUpPDwxNikmNDI5NDk2 NzI5NSkpKygoNTg5NjQrKGE+Pj4xNikmNjU1MzUpPDwxNik7c3dpdGNoKGw9MCxyKXtjYXNl IDM6bF49KDI1NSZ0LmNoYXJDb2RlQXQoYysyKSk8PDE2O2Nhc2UgMjpsXj0oMjU1JnQuY2hh ckNvZGVBdChjKzEpKTw8ODtjYXNlIDE6aV49bD0oNjU1MzUmKGw9KGw9KDY1NTM1JihsXj0y NTUmdC5jaGFyQ29kZUF0KGMpKSkqbysoKChsPj4+MTYpKm8mNjU1MzUpPDwxNikmNDI5NDk2 NzI5NSk8PDE1fGw+Pj4xNykpKnMrKCgobD4+PjE2KSpzJjY1NTM1KTw8MTYpJjQyOTQ5Njcy OTV9cmV0dXJuIGlePXQubGVuZ3RoLGk9MjI0NjgyMjUwNyooNjU1MzUmKGlePWk+Pj4xNikp KygoMjI0NjgyMjUwNyooaT4+PjE2KSY2NTUzNSk8PDE2KSY0Mjk0OTY3Mjk1LGk9MzI2NjQ4 OTkwOSooNjU1MzUmKGlePWk+Pj4xMykpKygoMzI2NjQ4OTkwOSooaT4+PjE2KSY2NTUzNSk8 PDE2KSY0Mjk0OTY3Mjk1LChpXj1pPj4+MTYpPj4+MH19KSksdmE9ZSgoZnVuY3Rpb24odCl7 dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByLG49dC5sZW5ndGgsaT1lXm4sYT0w O24+PTQ7KXI9MTU0MDQ4MzQ3NyooNjU1MzUmKHI9MjU1JnQuY2hhckNvZGVBdChhKXwoMjU1 JnQuY2hhckNvZGVBdCgrK2EpKTw8OHwoMjU1JnQuY2hhckNvZGVBdCgrK2EpKTw8MTZ8KDI1 NSZ0LmNoYXJDb2RlQXQoKythKSk8PDI0KSkrKCgxNTQwNDgzNDc3KihyPj4+MTYpJjY1NTM1 KTw8MTYpLGk9MTU0MDQ4MzQ3NyooNjU1MzUmaSkrKCgxNTQwNDgzNDc3KihpPj4+MTYpJjY1 NTM1KTw8MTYpXihyPTE1NDA0ODM0NzcqKDY1NTM1JihyXj1yPj4+MjQpKSsoKDE1NDA0ODM0 NzcqKHI+Pj4xNikmNjU1MzUpPDwxNikpLG4tPTQsKythO3N3aXRjaChuKXtjYXNlIDM6aV49 KDI1NSZ0LmNoYXJDb2RlQXQoYSsyKSk8PDE2O2Nhc2UgMjppXj0oMjU1JnQuY2hhckNvZGVB dChhKzEpKTw8ODtjYXNlIDE6aT0xNTQwNDgzNDc3Kig2NTUzNSYoaV49MjU1JnQuY2hhckNv ZGVBdChhKSkpKygoMTU0MDQ4MzQ3NyooaT4+PjE2KSY2NTUzNSk8PDE2KX1yZXR1cm4gaT0x NTQwNDgzNDc3Kig2NTUzNSYoaV49aT4+PjEzKSkrKCgxNTQwNDgzNDc3KihpPj4+MTYpJjY1 NTM1KTw8MTYpLChpXj1pPj4+MTUpPj4+MH19KSkseWE9Z2EseGE9Z2EsYmE9dmE7eWEubXVy bXVyMz14YSx5YS5tdXJtdXIyPWJhO3ZhciBfYT1mdW5jdGlvbigpe3RoaXMuaWRzPVtdLHRo aXMucG9zaXRpb25zPVtdLHRoaXMuaW5kZXhlZD0hMX07X2EucHJvdG90eXBlLmFkZD1mdW5j dGlvbih0LGUscixuKXt0aGlzLmlkcy5wdXNoKFRhKHQpKSx0aGlzLnBvc2l0aW9ucy5wdXNo KGUscixuKX0sX2EucHJvdG90eXBlLmdldFBvc2l0aW9ucz1mdW5jdGlvbih0KXtmb3IodmFy IGU9VGEodCkscj0wLG49dGhpcy5pZHMubGVuZ3RoLTE7cjxuOyl7dmFyIGk9cituPj4xO3Ro aXMuaWRzW2ldPj1lP249aTpyPWkrMX1mb3IodmFyIGE9W107dGhpcy5pZHNbcl09PT1lOyl7 dmFyIG89dGhpcy5wb3NpdGlvbnNbMypyXSxzPXRoaXMucG9zaXRpb25zWzMqcisxXSxsPXRo aXMucG9zaXRpb25zWzMqcisyXTthLnB1c2goe2luZGV4Om8sc3RhcnQ6cyxlbmQ6bH0pLHIr K31yZXR1cm4gYX0sX2Euc2VyaWFsaXplPWZ1bmN0aW9uKHQsZSl7dmFyIHI9bmV3IEZsb2F0 NjRBcnJheSh0Lmlkcyksbj1uZXcgVWludDMyQXJyYXkodC5wb3NpdGlvbnMpO3JldHVybiBm dW5jdGlvbiB0KGUscixuLGkpe2Zvcig7bjxpOyl7Zm9yKHZhciBhPWVbbitpPj4xXSxvPW4t MSxzPWkrMTs7KXtkb3tvKyt9d2hpbGUoZVtvXTxhKTtkb3tzLS19d2hpbGUoZVtzXT5hKTtp ZihvPj1zKWJyZWFrO2thKGUsbyxzKSxrYShyLDMqbywzKnMpLGthKHIsMypvKzEsMypzKzEp LGthKHIsMypvKzIsMypzKzIpfXMtbjxpLXM/KHQoZSxyLG4scyksbj1zKzEpOih0KGUscixz KzEsaSksaT1zKX19KHIsbiwwLHIubGVuZ3RoLTEpLGUmJmUucHVzaChyLmJ1ZmZlcixuLmJ1 ZmZlcikse2lkczpyLHBvc2l0aW9uczpufX0sX2EuZGVzZXJpYWxpemU9ZnVuY3Rpb24odCl7 dmFyIGU9bmV3IF9hO3JldHVybiBlLmlkcz10LmlkcyxlLnBvc2l0aW9ucz10LnBvc2l0aW9u cyxlLmluZGV4ZWQ9ITAsZX07dmFyIHdhPU1hdGgucG93KDIsNTMpLTE7ZnVuY3Rpb24gVGEo dCl7dmFyIGU9K3Q7cmV0dXJuIWlzTmFOKGUpJiZlPD13YT9lOnlhKFN0cmluZyh0KSl9ZnVu Y3Rpb24ga2EodCxlLHIpe3ZhciBuPXRbZV07dFtlXT10W3JdLHRbcl09bn1ObigiRmVhdHVy ZVBvc2l0aW9uTWFwIixfYSk7dmFyIEFhPWZ1bmN0aW9uKHQsZSl7dGhpcy5nbD10LmdsLHRo aXMubG9jYXRpb249ZX0sTWE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLHIpe3QuY2FsbCh0 aGlzLGUsciksdGhpcy5jdXJyZW50PTB9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnBy b3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25z dHJ1Y3Rvcj1lLGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXt0aGlzLmN1cnJlbnQhPT10 JiYodGhpcy5jdXJyZW50PXQsdGhpcy5nbC51bmlmb3JtMWkodGhpcy5sb2NhdGlvbix0KSl9 LGV9KEFhKSxTYT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUscil7dC5jYWxsKHRoaXMsZSxy KSx0aGlzLmN1cnJlbnQ9MH1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBl PU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9y PWUsZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuY3VycmVudCE9PXQmJih0aGlz LmN1cnJlbnQ9dCx0aGlzLmdsLnVuaWZvcm0xZih0aGlzLmxvY2F0aW9uLHQpKX0sZX0oQWEp LEVhPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxyKXt0LmNhbGwodGhpcyxlLHIpLHRoaXMu Y3VycmVudD1bMCwwXX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9i amVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUs ZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpe3RbMF09PT10aGlzLmN1cnJlbnRbMF0mJnRb MV09PT10aGlzLmN1cnJlbnRbMV18fCh0aGlzLmN1cnJlbnQ9dCx0aGlzLmdsLnVuaWZvcm0y Zih0aGlzLmxvY2F0aW9uLHRbMF0sdFsxXSkpfSxlfShBYSksTGE9ZnVuY3Rpb24odCl7ZnVu Y3Rpb24gZShlLHIpe3QuY2FsbCh0aGlzLGUsciksdGhpcy5jdXJyZW50PVswLDAsMF19cmV0 dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQu cHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLnNldD1m dW5jdGlvbih0KXt0WzBdPT09dGhpcy5jdXJyZW50WzBdJiZ0WzFdPT09dGhpcy5jdXJyZW50 WzFdJiZ0WzJdPT09dGhpcy5jdXJyZW50WzJdfHwodGhpcy5jdXJyZW50PXQsdGhpcy5nbC51 bmlmb3JtM2YodGhpcy5sb2NhdGlvbix0WzBdLHRbMV0sdFsyXSkpfSxlfShBYSksQ2E9ZnVu Y3Rpb24odCl7ZnVuY3Rpb24gZShlLHIpe3QuY2FsbCh0aGlzLGUsciksdGhpcy5jdXJyZW50 PVswLDAsMCwwXX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVj dC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5w cm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpe3RbMF09PT10aGlzLmN1cnJlbnRbMF0mJnRbMV09 PT10aGlzLmN1cnJlbnRbMV0mJnRbMl09PT10aGlzLmN1cnJlbnRbMl0mJnRbM109PT10aGlz LmN1cnJlbnRbM118fCh0aGlzLmN1cnJlbnQ9dCx0aGlzLmdsLnVuaWZvcm00Zih0aGlzLmxv Y2F0aW9uLHRbMF0sdFsxXSx0WzJdLHRbM10pKX0sZX0oQWEpLFBhPWZ1bmN0aW9uKHQpe2Z1 bmN0aW9uIGUoZSxyKXt0LmNhbGwodGhpcyxlLHIpLHRoaXMuY3VycmVudD10ZS50cmFuc3Bh cmVudH1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVh dGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5 cGUuc2V0PWZ1bmN0aW9uKHQpe3Qucj09PXRoaXMuY3VycmVudC5yJiZ0Lmc9PT10aGlzLmN1 cnJlbnQuZyYmdC5iPT09dGhpcy5jdXJyZW50LmImJnQuYT09PXRoaXMuY3VycmVudC5hfHwo dGhpcy5jdXJyZW50PXQsdGhpcy5nbC51bmlmb3JtNGYodGhpcy5sb2NhdGlvbix0LnIsdC5n LHQuYix0LmEpKX0sZX0oQWEpLElhPW5ldyBGbG9hdDMyQXJyYXkoMTYpLE9hPWZ1bmN0aW9u KHQpe2Z1bmN0aW9uIGUoZSxyKXt0LmNhbGwodGhpcyxlLHIpLHRoaXMuY3VycmVudD1JYX1y ZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYm dC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuc2V0 PWZ1bmN0aW9uKHQpe2lmKHRbMTJdIT09dGhpcy5jdXJyZW50WzEyXXx8dFswXSE9PXRoaXMu Y3VycmVudFswXSlyZXR1cm4gdGhpcy5jdXJyZW50PXQsdm9pZCB0aGlzLmdsLnVuaWZvcm1N YXRyaXg0ZnYodGhpcy5sb2NhdGlvbiwhMSx0KTtmb3IodmFyIGU9MTtlPDE2O2UrKylpZih0 W2VdIT09dGhpcy5jdXJyZW50W2VdKXt0aGlzLmN1cnJlbnQ9dCx0aGlzLmdsLnVuaWZvcm1N YXRyaXg0ZnYodGhpcy5sb2NhdGlvbiwhMSx0KTticmVha319LGV9KEFhKTtmdW5jdGlvbiB6 YSh0KXtyZXR1cm5bZGEoMjU1KnQuciwyNTUqdC5nKSxkYSgyNTUqdC5iLDI1NSp0LmEpXX12 YXIgRGE9ZnVuY3Rpb24odCxlLHIpe3RoaXMudmFsdWU9dCx0aGlzLnVuaWZvcm1OYW1lcz1l Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuInVfIit0fSkpLHRoaXMudHlwZT1yfTtEYS5wcm90 b3R5cGUuc2V0VW5pZm9ybT1mdW5jdGlvbih0LGUscil7dC5zZXQoci5jb25zdGFudE9yKHRo aXMudmFsdWUpKX0sRGEucHJvdG90eXBlLmdldEJpbmRpbmc9ZnVuY3Rpb24odCxlLHIpe3Jl dHVybiJjb2xvciI9PT10aGlzLnR5cGU/bmV3IFBhKHQsZSk6bmV3IFNhKHQsZSl9O3ZhciBS YT1mdW5jdGlvbih0LGUpe3RoaXMudW5pZm9ybU5hbWVzPWUubWFwKChmdW5jdGlvbih0KXty ZXR1cm4idV8iK3R9KSksdGhpcy5wYXR0ZXJuRnJvbT1udWxsLHRoaXMucGF0dGVyblRvPW51 bGwsdGhpcy5waXhlbFJhdGlvRnJvbT0xLHRoaXMucGl4ZWxSYXRpb1RvPTF9O1JhLnByb3Rv dHlwZS5zZXRDb25zdGFudFBhdHRlcm5Qb3NpdGlvbnM9ZnVuY3Rpb24odCxlKXt0aGlzLnBp eGVsUmF0aW9Gcm9tPWUucGl4ZWxSYXRpbyx0aGlzLnBpeGVsUmF0aW9Ubz10LnBpeGVsUmF0 aW8sdGhpcy5wYXR0ZXJuRnJvbT1lLnRsYnIsdGhpcy5wYXR0ZXJuVG89dC50bGJyfSxSYS5w cm90b3R5cGUuc2V0VW5pZm9ybT1mdW5jdGlvbih0LGUscixuKXt2YXIgaT0idV9wYXR0ZXJu X3RvIj09PW4/dGhpcy5wYXR0ZXJuVG86InVfcGF0dGVybl9mcm9tIj09PW4/dGhpcy5wYXR0 ZXJuRnJvbToidV9waXhlbF9yYXRpb190byI9PT1uP3RoaXMucGl4ZWxSYXRpb1RvOiJ1X3Bp eGVsX3JhdGlvX2Zyb20iPT09bj90aGlzLnBpeGVsUmF0aW9Gcm9tOm51bGw7aSYmdC5zZXQo aSl9LFJhLnByb3RvdHlwZS5nZXRCaW5kaW5nPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4idV9w YXR0ZXJuIj09PXIuc3Vic3RyKDAsOSk/bmV3IENhKHQsZSk6bmV3IFNhKHQsZSl9O3ZhciBG YT1mdW5jdGlvbih0LGUscixuKXt0aGlzLmV4cHJlc3Npb249dCx0aGlzLnR5cGU9cix0aGlz Lm1heFZhbHVlPTAsdGhpcy5wYWludFZlcnRleEF0dHJpYnV0ZXM9ZS5tYXAoKGZ1bmN0aW9u KHQpe3JldHVybntuYW1lOiJhXyIrdCx0eXBlOiJGbG9hdDMyIixjb21wb25lbnRzOiJjb2xv ciI9PT1yPzI6MSxvZmZzZXQ6MH19KSksdGhpcy5wYWludFZlcnRleEFycmF5PW5ldyBufTtG YS5wcm90b3R5cGUucG9wdWxhdGVQYWludEFycmF5PWZ1bmN0aW9uKHQsZSxyLG4saSl7dmFy IGE9dGhpcy5wYWludFZlcnRleEFycmF5Lmxlbmd0aCxvPXRoaXMuZXhwcmVzc2lvbi5ldmFs dWF0ZShuZXcgcGkoMCksZSx7fSxuLFtdLGkpO3RoaXMucGFpbnRWZXJ0ZXhBcnJheS5yZXNp emUodCksdGhpcy5fc2V0UGFpbnRWYWx1ZShhLHQsbyl9LEZhLnByb3RvdHlwZS51cGRhdGVQ YWludEFycmF5PWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXRoaXMuZXhwcmVzc2lvbi5ldmFs dWF0ZSh7em9vbTowfSxyLG4pO3RoaXMuX3NldFBhaW50VmFsdWUodCxlLGkpfSxGYS5wcm90 b3R5cGUuX3NldFBhaW50VmFsdWU9ZnVuY3Rpb24odCxlLHIpe2lmKCJjb2xvciI9PT10aGlz LnR5cGUpZm9yKHZhciBuPXphKHIpLGk9dDtpPGU7aSsrKXRoaXMucGFpbnRWZXJ0ZXhBcnJh eS5lbXBsYWNlKGksblswXSxuWzFdKTtlbHNle2Zvcih2YXIgYT10O2E8ZTthKyspdGhpcy5w YWludFZlcnRleEFycmF5LmVtcGxhY2UoYSxyKTt0aGlzLm1heFZhbHVlPU1hdGgubWF4KHRo aXMubWF4VmFsdWUsTWF0aC5hYnMocikpfX0sRmEucHJvdG90eXBlLnVwbG9hZD1mdW5jdGlv bih0KXt0aGlzLnBhaW50VmVydGV4QXJyYXkmJnRoaXMucGFpbnRWZXJ0ZXhBcnJheS5hcnJh eUJ1ZmZlciYmKHRoaXMucGFpbnRWZXJ0ZXhCdWZmZXImJnRoaXMucGFpbnRWZXJ0ZXhCdWZm ZXIuYnVmZmVyP3RoaXMucGFpbnRWZXJ0ZXhCdWZmZXIudXBkYXRlRGF0YSh0aGlzLnBhaW50 VmVydGV4QXJyYXkpOnRoaXMucGFpbnRWZXJ0ZXhCdWZmZXI9dC5jcmVhdGVWZXJ0ZXhCdWZm ZXIodGhpcy5wYWludFZlcnRleEFycmF5LHRoaXMucGFpbnRWZXJ0ZXhBdHRyaWJ1dGVzLHRo aXMuZXhwcmVzc2lvbi5pc1N0YXRlRGVwZW5kZW50KSl9LEZhLnByb3RvdHlwZS5kZXN0cm95 PWZ1bmN0aW9uKCl7dGhpcy5wYWludFZlcnRleEJ1ZmZlciYmdGhpcy5wYWludFZlcnRleEJ1 ZmZlci5kZXN0cm95KCl9O3ZhciBCYT1mdW5jdGlvbih0LGUscixuLGksYSl7dGhpcy5leHBy ZXNzaW9uPXQsdGhpcy51bmlmb3JtTmFtZXM9ZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiJ1 XyIrdCsiX3QifSkpLHRoaXMudHlwZT1yLHRoaXMudXNlSW50ZWdlclpvb209bix0aGlzLnpv b209aSx0aGlzLm1heFZhbHVlPTAsdGhpcy5wYWludFZlcnRleEF0dHJpYnV0ZXM9ZS5tYXAo KGZ1bmN0aW9uKHQpe3JldHVybntuYW1lOiJhXyIrdCx0eXBlOiJGbG9hdDMyIixjb21wb25l bnRzOiJjb2xvciI9PT1yPzQ6MixvZmZzZXQ6MH19KSksdGhpcy5wYWludFZlcnRleEFycmF5 PW5ldyBhfTtCYS5wcm90b3R5cGUucG9wdWxhdGVQYWludEFycmF5PWZ1bmN0aW9uKHQsZSxy LG4saSl7dmFyIGE9dGhpcy5leHByZXNzaW9uLmV2YWx1YXRlKG5ldyBwaSh0aGlzLnpvb20p LGUse30sbixbXSxpKSxvPXRoaXMuZXhwcmVzc2lvbi5ldmFsdWF0ZShuZXcgcGkodGhpcy56 b29tKzEpLGUse30sbixbXSxpKSxzPXRoaXMucGFpbnRWZXJ0ZXhBcnJheS5sZW5ndGg7dGhp cy5wYWludFZlcnRleEFycmF5LnJlc2l6ZSh0KSx0aGlzLl9zZXRQYWludFZhbHVlKHMsdCxh LG8pfSxCYS5wcm90b3R5cGUudXBkYXRlUGFpbnRBcnJheT1mdW5jdGlvbih0LGUscixuKXt2 YXIgaT10aGlzLmV4cHJlc3Npb24uZXZhbHVhdGUoe3pvb206dGhpcy56b29tfSxyLG4pLGE9 dGhpcy5leHByZXNzaW9uLmV2YWx1YXRlKHt6b29tOnRoaXMuem9vbSsxfSxyLG4pO3RoaXMu X3NldFBhaW50VmFsdWUodCxlLGksYSl9LEJhLnByb3RvdHlwZS5fc2V0UGFpbnRWYWx1ZT1m dW5jdGlvbih0LGUscixuKXtpZigiY29sb3IiPT09dGhpcy50eXBlKWZvcih2YXIgaT16YShy KSxhPXphKG4pLG89dDtvPGU7bysrKXRoaXMucGFpbnRWZXJ0ZXhBcnJheS5lbXBsYWNlKG8s aVswXSxpWzFdLGFbMF0sYVsxXSk7ZWxzZXtmb3IodmFyIHM9dDtzPGU7cysrKXRoaXMucGFp bnRWZXJ0ZXhBcnJheS5lbXBsYWNlKHMscixuKTt0aGlzLm1heFZhbHVlPU1hdGgubWF4KHRo aXMubWF4VmFsdWUsTWF0aC5hYnMociksTWF0aC5hYnMobikpfX0sQmEucHJvdG90eXBlLnVw bG9hZD1mdW5jdGlvbih0KXt0aGlzLnBhaW50VmVydGV4QXJyYXkmJnRoaXMucGFpbnRWZXJ0 ZXhBcnJheS5hcnJheUJ1ZmZlciYmKHRoaXMucGFpbnRWZXJ0ZXhCdWZmZXImJnRoaXMucGFp bnRWZXJ0ZXhCdWZmZXIuYnVmZmVyP3RoaXMucGFpbnRWZXJ0ZXhCdWZmZXIudXBkYXRlRGF0 YSh0aGlzLnBhaW50VmVydGV4QXJyYXkpOnRoaXMucGFpbnRWZXJ0ZXhCdWZmZXI9dC5jcmVh dGVWZXJ0ZXhCdWZmZXIodGhpcy5wYWludFZlcnRleEFycmF5LHRoaXMucGFpbnRWZXJ0ZXhB dHRyaWJ1dGVzLHRoaXMuZXhwcmVzc2lvbi5pc1N0YXRlRGVwZW5kZW50KSl9LEJhLnByb3Rv dHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5wYWludFZlcnRleEJ1ZmZlciYmdGhpcy5w YWludFZlcnRleEJ1ZmZlci5kZXN0cm95KCl9LEJhLnByb3RvdHlwZS5zZXRVbmlmb3JtPWZ1 bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy51c2VJbnRlZ2VyWm9vbT9NYXRoLmZsb29yKGUuem9v bSk6ZS56b29tLG49bCh0aGlzLmV4cHJlc3Npb24uaW50ZXJwb2xhdGlvbkZhY3RvcihyLHRo aXMuem9vbSx0aGlzLnpvb20rMSksMCwxKTt0LnNldChuKX0sQmEucHJvdG90eXBlLmdldEJp bmRpbmc9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBuZXcgU2EodCxlKX07dmFyIE5hPWZ1bmN0 aW9uKHQsZSxyLG4saSxhKXt0aGlzLmV4cHJlc3Npb249dCx0aGlzLnR5cGU9ZSx0aGlzLnVz ZUludGVnZXJab29tPXIsdGhpcy56b29tPW4sdGhpcy5sYXllcklkPWEsdGhpcy56b29tSW5Q YWludFZlcnRleEFycmF5PW5ldyBpLHRoaXMuem9vbU91dFBhaW50VmVydGV4QXJyYXk9bmV3 IGl9O05hLnByb3RvdHlwZS5wb3B1bGF0ZVBhaW50QXJyYXk9ZnVuY3Rpb24odCxlLHIpe3Zh ciBuPXRoaXMuem9vbUluUGFpbnRWZXJ0ZXhBcnJheS5sZW5ndGg7dGhpcy56b29tSW5QYWlu dFZlcnRleEFycmF5LnJlc2l6ZSh0KSx0aGlzLnpvb21PdXRQYWludFZlcnRleEFycmF5LnJl c2l6ZSh0KSx0aGlzLl9zZXRQYWludFZhbHVlcyhuLHQsZS5wYXR0ZXJucyYmZS5wYXR0ZXJu c1t0aGlzLmxheWVySWRdLHIpfSxOYS5wcm90b3R5cGUudXBkYXRlUGFpbnRBcnJheT1mdW5j dGlvbih0LGUscixuLGkpe3RoaXMuX3NldFBhaW50VmFsdWVzKHQsZSxyLnBhdHRlcm5zJiZy LnBhdHRlcm5zW3RoaXMubGF5ZXJJZF0saSl9LE5hLnByb3RvdHlwZS5fc2V0UGFpbnRWYWx1 ZXM9ZnVuY3Rpb24odCxlLHIsbil7aWYobiYmcil7dmFyIGk9ci5taW4sYT1yLm1pZCxvPXIu bWF4LHM9bltpXSxsPW5bYV0sYz1uW29dO2lmKHMmJmwmJmMpZm9yKHZhciB1PXQ7dTxlO3Ur Kyl0aGlzLnpvb21JblBhaW50VmVydGV4QXJyYXkuZW1wbGFjZSh1LGwudGxbMF0sbC50bFsx XSxsLmJyWzBdLGwuYnJbMV0scy50bFswXSxzLnRsWzFdLHMuYnJbMF0scy5iclsxXSxsLnBp eGVsUmF0aW8scy5waXhlbFJhdGlvKSx0aGlzLnpvb21PdXRQYWludFZlcnRleEFycmF5LmVt cGxhY2UodSxsLnRsWzBdLGwudGxbMV0sbC5iclswXSxsLmJyWzFdLGMudGxbMF0sYy50bFsx XSxjLmJyWzBdLGMuYnJbMV0sbC5waXhlbFJhdGlvLGMucGl4ZWxSYXRpbyl9fSxOYS5wcm90 b3R5cGUudXBsb2FkPWZ1bmN0aW9uKHQpe3RoaXMuem9vbUluUGFpbnRWZXJ0ZXhBcnJheSYm dGhpcy56b29tSW5QYWludFZlcnRleEFycmF5LmFycmF5QnVmZmVyJiZ0aGlzLnpvb21PdXRQ YWludFZlcnRleEFycmF5JiZ0aGlzLnpvb21PdXRQYWludFZlcnRleEFycmF5LmFycmF5QnVm ZmVyJiYodGhpcy56b29tSW5QYWludFZlcnRleEJ1ZmZlcj10LmNyZWF0ZVZlcnRleEJ1ZmZl cih0aGlzLnpvb21JblBhaW50VmVydGV4QXJyYXksbWEubWVtYmVycyx0aGlzLmV4cHJlc3Np b24uaXNTdGF0ZURlcGVuZGVudCksdGhpcy56b29tT3V0UGFpbnRWZXJ0ZXhCdWZmZXI9dC5j cmVhdGVWZXJ0ZXhCdWZmZXIodGhpcy56b29tT3V0UGFpbnRWZXJ0ZXhBcnJheSxtYS5tZW1i ZXJzLHRoaXMuZXhwcmVzc2lvbi5pc1N0YXRlRGVwZW5kZW50KSl9LE5hLnByb3RvdHlwZS5k ZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy56b29tT3V0UGFpbnRWZXJ0ZXhCdWZmZXImJnRoaXMu em9vbU91dFBhaW50VmVydGV4QnVmZmVyLmRlc3Ryb3koKSx0aGlzLnpvb21JblBhaW50VmVy dGV4QnVmZmVyJiZ0aGlzLnpvb21JblBhaW50VmVydGV4QnVmZmVyLmRlc3Ryb3koKX07dmFy IGphPWZ1bmN0aW9uKHQsZSxyLG4pe3RoaXMuYmluZGVycz17fSx0aGlzLmxheW91dEF0dHJp YnV0ZXM9bix0aGlzLl9idWZmZXJzPVtdO3ZhciBpPVtdO2Zvcih2YXIgYSBpbiB0LnBhaW50 Ll92YWx1ZXMpaWYocihhKSl7dmFyIG89dC5wYWludC5nZXQoYSk7aWYobyBpbnN0YW5jZW9m IGJpJiZ6cihvLnByb3BlcnR5LnNwZWNpZmljYXRpb24pKXt2YXIgcz1WYShhLHQudHlwZSks bD1vLnZhbHVlLGM9by5wcm9wZXJ0eS5zcGVjaWZpY2F0aW9uLnR5cGUsdT1vLnByb3BlcnR5 LnVzZUludGVnZXJab29tLGY9by5wcm9wZXJ0eS5zcGVjaWZpY2F0aW9uWyJwcm9wZXJ0eS10 eXBlIl0saD0iY3Jvc3MtZmFkZWQiPT09Znx8ImNyb3NzLWZhZGVkLWRhdGEtZHJpdmVuIj09 PWY7aWYoImNvbnN0YW50Ij09PWwua2luZCl0aGlzLmJpbmRlcnNbYV09aD9uZXcgUmEobC52 YWx1ZSxzKTpuZXcgRGEobC52YWx1ZSxzLGMpLGkucHVzaCgiL3VfIithKTtlbHNlIGlmKCJz b3VyY2UiPT09bC5raW5kfHxoKXt2YXIgcD1IYShhLGMsInNvdXJjZSIpO3RoaXMuYmluZGVy c1thXT1oP25ldyBOYShsLGMsdSxlLHAsdC5pZCk6bmV3IEZhKGwscyxjLHApLGkucHVzaCgi L2FfIithKX1lbHNle3ZhciBkPUhhKGEsYywiY29tcG9zaXRlIik7dGhpcy5iaW5kZXJzW2Fd PW5ldyBCYShsLHMsYyx1LGUsZCksaS5wdXNoKCIvel8iK2EpfX19dGhpcy5jYWNoZUtleT1p LnNvcnQoKS5qb2luKCIiKX07amEucHJvdG90eXBlLmdldE1heFZhbHVlPWZ1bmN0aW9uKHQp e3ZhciBlPXRoaXMuYmluZGVyc1t0XTtyZXR1cm4gZSBpbnN0YW5jZW9mIEZhfHxlIGluc3Rh bmNlb2YgQmE/ZS5tYXhWYWx1ZTowfSxqYS5wcm90b3R5cGUucG9wdWxhdGVQYWludEFycmF5 cz1mdW5jdGlvbih0LGUscixuLGkpe2Zvcih2YXIgYSBpbiB0aGlzLmJpbmRlcnMpe3ZhciBv PXRoaXMuYmluZGVyc1thXTsobyBpbnN0YW5jZW9mIEZhfHxvIGluc3RhbmNlb2YgQmF8fG8g aW5zdGFuY2VvZiBOYSkmJm8ucG9wdWxhdGVQYWludEFycmF5KHQsZSxyLG4saSl9fSxqYS5w cm90b3R5cGUuc2V0Q29uc3RhbnRQYXR0ZXJuUG9zaXRpb25zPWZ1bmN0aW9uKHQsZSl7Zm9y KHZhciByIGluIHRoaXMuYmluZGVycyl7dmFyIG49dGhpcy5iaW5kZXJzW3JdO24gaW5zdGFu Y2VvZiBSYSYmbi5zZXRDb25zdGFudFBhdHRlcm5Qb3NpdGlvbnModCxlKX19LGphLnByb3Rv dHlwZS51cGRhdGVQYWludEFycmF5cz1mdW5jdGlvbih0LGUscixuLGkpe3ZhciBhPSExO2Zv cih2YXIgbyBpbiB0KWZvcih2YXIgcz0wLGw9ZS5nZXRQb3NpdGlvbnMobyk7czxsLmxlbmd0 aDtzKz0xKXt2YXIgYz1sW3NdLHU9ci5mZWF0dXJlKGMuaW5kZXgpO2Zvcih2YXIgZiBpbiB0 aGlzLmJpbmRlcnMpe3ZhciBoPXRoaXMuYmluZGVyc1tmXTtpZigoaCBpbnN0YW5jZW9mIEZh fHxoIGluc3RhbmNlb2YgQmF8fGggaW5zdGFuY2VvZiBOYSkmJiEwPT09aC5leHByZXNzaW9u LmlzU3RhdGVEZXBlbmRlbnQpe3ZhciBwPW4ucGFpbnQuZ2V0KGYpO2guZXhwcmVzc2lvbj1w LnZhbHVlLGgudXBkYXRlUGFpbnRBcnJheShjLnN0YXJ0LGMuZW5kLHUsdFtvXSxpKSxhPSEw fX19cmV0dXJuIGF9LGphLnByb3RvdHlwZS5kZWZpbmVzPWZ1bmN0aW9uKCl7dmFyIHQ9W107 Zm9yKHZhciBlIGluIHRoaXMuYmluZGVycyl7dmFyIHI9dGhpcy5iaW5kZXJzW2VdOyhyIGlu c3RhbmNlb2YgRGF8fHIgaW5zdGFuY2VvZiBSYSkmJnQucHVzaC5hcHBseSh0LHIudW5pZm9y bU5hbWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIiNkZWZpbmUgSEFTX1VOSUZPUk1fIit0 fSkpKX1yZXR1cm4gdH0samEucHJvdG90eXBlLmdldFBhaW50VmVydGV4QnVmZmVycz1mdW5j dGlvbigpe3JldHVybiB0aGlzLl9idWZmZXJzfSxqYS5wcm90b3R5cGUuZ2V0VW5pZm9ybXM9 ZnVuY3Rpb24odCxlKXt2YXIgcj1bXTtmb3IodmFyIG4gaW4gdGhpcy5iaW5kZXJzKXt2YXIg aT10aGlzLmJpbmRlcnNbbl07aWYoaSBpbnN0YW5jZW9mIERhfHxpIGluc3RhbmNlb2YgUmF8 fGkgaW5zdGFuY2VvZiBCYSlmb3IodmFyIGE9MCxvPWkudW5pZm9ybU5hbWVzO2E8by5sZW5n dGg7YSs9MSl7dmFyIHM9b1thXTtpZihlW3NdKXt2YXIgbD1pLmdldEJpbmRpbmcodCxlW3Nd LHMpO3IucHVzaCh7bmFtZTpzLHByb3BlcnR5Om4sYmluZGluZzpsfSl9fX1yZXR1cm4gcn0s amEucHJvdG90eXBlLnNldFVuaWZvcm1zPWZ1bmN0aW9uKHQsZSxyLG4pe2Zvcih2YXIgaT0w LGE9ZTtpPGEubGVuZ3RoO2krPTEpe3ZhciBvPWFbaV0scz1vLm5hbWUsbD1vLnByb3BlcnR5 LGM9by5iaW5kaW5nO3RoaXMuYmluZGVyc1tsXS5zZXRVbmlmb3JtKGMsbixyLmdldChsKSxz KX19LGphLnByb3RvdHlwZS51cGRhdGVQYWludEJ1ZmZlcnM9ZnVuY3Rpb24odCl7Zm9yKHZh ciBlIGluIHRoaXMuX2J1ZmZlcnM9W10sdGhpcy5iaW5kZXJzKXt2YXIgcj10aGlzLmJpbmRl cnNbZV07aWYodCYmciBpbnN0YW5jZW9mIE5hKXt2YXIgbj0yPT09dC5mcm9tU2NhbGU/ci56 b29tSW5QYWludFZlcnRleEJ1ZmZlcjpyLnpvb21PdXRQYWludFZlcnRleEJ1ZmZlcjtuJiZ0 aGlzLl9idWZmZXJzLnB1c2gobil9ZWxzZShyIGluc3RhbmNlb2YgRmF8fHIgaW5zdGFuY2Vv ZiBCYSkmJnIucGFpbnRWZXJ0ZXhCdWZmZXImJnRoaXMuX2J1ZmZlcnMucHVzaChyLnBhaW50 VmVydGV4QnVmZmVyKX19LGphLnByb3RvdHlwZS51cGxvYWQ9ZnVuY3Rpb24odCl7Zm9yKHZh ciBlIGluIHRoaXMuYmluZGVycyl7dmFyIHI9dGhpcy5iaW5kZXJzW2VdOyhyIGluc3RhbmNl b2YgRmF8fHIgaW5zdGFuY2VvZiBCYXx8ciBpbnN0YW5jZW9mIE5hKSYmci51cGxvYWQodCl9 dGhpcy51cGRhdGVQYWludEJ1ZmZlcnMoKX0samEucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rp b24oKXtmb3IodmFyIHQgaW4gdGhpcy5iaW5kZXJzKXt2YXIgZT10aGlzLmJpbmRlcnNbdF07 KGUgaW5zdGFuY2VvZiBGYXx8ZSBpbnN0YW5jZW9mIEJhfHxlIGluc3RhbmNlb2YgTmEpJiZl LmRlc3Ryb3koKX19O3ZhciBVYT1mdW5jdGlvbih0LGUscixuKXt2b2lkIDA9PT1uJiYobj1m dW5jdGlvbigpe3JldHVybiEwfSksdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnM9e307Zm9y KHZhciBpPTAsYT1lO2k8YS5sZW5ndGg7aSs9MSl7dmFyIG89YVtpXTt0aGlzLnByb2dyYW1D b25maWd1cmF0aW9uc1tvLmlkXT1uZXcgamEobyxyLG4sdCl9dGhpcy5uZWVkc1VwbG9hZD0h MSx0aGlzLl9mZWF0dXJlTWFwPW5ldyBfYSx0aGlzLl9idWZmZXJPZmZzZXQ9MH07ZnVuY3Rp b24gVmEodCxlKXtyZXR1cm57InRleHQtb3BhY2l0eSI6WyJvcGFjaXR5Il0sImljb24tb3Bh Y2l0eSI6WyJvcGFjaXR5Il0sInRleHQtY29sb3IiOlsiZmlsbF9jb2xvciJdLCJpY29uLWNv bG9yIjpbImZpbGxfY29sb3IiXSwidGV4dC1oYWxvLWNvbG9yIjpbImhhbG9fY29sb3IiXSwi aWNvbi1oYWxvLWNvbG9yIjpbImhhbG9fY29sb3IiXSwidGV4dC1oYWxvLWJsdXIiOlsiaGFs b19ibHVyIl0sImljb24taGFsby1ibHVyIjpbImhhbG9fYmx1ciJdLCJ0ZXh0LWhhbG8td2lk dGgiOlsiaGFsb193aWR0aCJdLCJpY29uLWhhbG8td2lkdGgiOlsiaGFsb193aWR0aCJdLCJs aW5lLWdhcC13aWR0aCI6WyJnYXB3aWR0aCJdLCJsaW5lLXBhdHRlcm4iOlsicGF0dGVybl90 byIsInBhdHRlcm5fZnJvbSIsInBpeGVsX3JhdGlvX3RvIiwicGl4ZWxfcmF0aW9fZnJvbSJd LCJmaWxsLXBhdHRlcm4iOlsicGF0dGVybl90byIsInBhdHRlcm5fZnJvbSIsInBpeGVsX3Jh dGlvX3RvIiwicGl4ZWxfcmF0aW9fZnJvbSJdLCJmaWxsLWV4dHJ1c2lvbi1wYXR0ZXJuIjpb InBhdHRlcm5fdG8iLCJwYXR0ZXJuX2Zyb20iLCJwaXhlbF9yYXRpb190byIsInBpeGVsX3Jh dGlvX2Zyb20iXX1bdF18fFt0LnJlcGxhY2UoZSsiLSIsIiIpLnJlcGxhY2UoLy0vZywiXyIp XX1mdW5jdGlvbiBIYSh0LGUscil7dmFyIG49e2NvbG9yOntzb3VyY2U6dGEsY29tcG9zaXRl OmVhfSxudW1iZXI6e3NvdXJjZTpaaSxjb21wb3NpdGU6dGF9fSxpPWZ1bmN0aW9uKHQpe3Jl dHVybnsibGluZS1wYXR0ZXJuIjp7c291cmNlOkJpLGNvbXBvc2l0ZTpCaX0sImZpbGwtcGF0 dGVybiI6e3NvdXJjZTpCaSxjb21wb3NpdGU6Qml9LCJmaWxsLWV4dHJ1c2lvbi1wYXR0ZXJu Ijp7c291cmNlOkJpLGNvbXBvc2l0ZTpCaX19W3RdfSh0KTtyZXR1cm4gaSYmaVtyXXx8bltl XVtyXX1VYS5wcm90b3R5cGUucG9wdWxhdGVQYWludEFycmF5cz1mdW5jdGlvbih0LGUscixu LGksYSl7Zm9yKHZhciBvIGluIHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zKXRoaXMucHJv Z3JhbUNvbmZpZ3VyYXRpb25zW29dLnBvcHVsYXRlUGFpbnRBcnJheXModCxlLG4saSxhKTt2 b2lkIDAhPT1lLmlkJiZ0aGlzLl9mZWF0dXJlTWFwLmFkZChlLmlkLHIsdGhpcy5fYnVmZmVy T2Zmc2V0LHQpLHRoaXMuX2J1ZmZlck9mZnNldD10LHRoaXMubmVlZHNVcGxvYWQ9ITB9LFVh LnByb3RvdHlwZS51cGRhdGVQYWludEFycmF5cz1mdW5jdGlvbih0LGUscixuKXtmb3IodmFy IGk9MCxhPXI7aTxhLmxlbmd0aDtpKz0xKXt2YXIgbz1hW2ldO3RoaXMubmVlZHNVcGxvYWQ9 dGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnNbby5pZF0udXBkYXRlUGFpbnRBcnJheXModCx0 aGlzLl9mZWF0dXJlTWFwLGUsbyxuKXx8dGhpcy5uZWVkc1VwbG9hZH19LFVhLnByb3RvdHlw ZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zW3Rd fSxVYS5wcm90b3R5cGUudXBsb2FkPWZ1bmN0aW9uKHQpe2lmKHRoaXMubmVlZHNVcGxvYWQp e2Zvcih2YXIgZSBpbiB0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucyl0aGlzLnByb2dyYW1D b25maWd1cmF0aW9uc1tlXS51cGxvYWQodCk7dGhpcy5uZWVkc1VwbG9hZD0hMX19LFVhLnBy b3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMucHJvZ3JhbUNv bmZpZ3VyYXRpb25zKXRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zW3RdLmRlc3Ryb3koKX0s Tm4oIkNvbnN0YW50QmluZGVyIixEYSksTm4oIkNyb3NzRmFkZWRDb25zdGFudEJpbmRlciIs UmEpLE5uKCJTb3VyY2VFeHByZXNzaW9uQmluZGVyIixGYSksTm4oIkNyb3NzRmFkZWRDb21w b3NpdGVCaW5kZXIiLE5hKSxObigiQ29tcG9zaXRlRXhwcmVzc2lvbkJpbmRlciIsQmEpLE5u KCJQcm9ncmFtQ29uZmlndXJhdGlvbiIsamEse29taXQ6WyJfYnVmZmVycyJdfSksTm4oIlBy b2dyYW1Db25maWd1cmF0aW9uU2V0IixVYSk7dmFyIHFhLEdhPShxYT0xNSx7bWluOi0xKk1h dGgucG93KDIscWEtMSksbWF4Ok1hdGgucG93KDIscWEtMSktMX0pO2Z1bmN0aW9uIFlhKHQp e2Zvcih2YXIgZT04MTkyL3QuZXh0ZW50LHI9dC5sb2FkR2VvbWV0cnkoKSxuPTA7bjxyLmxl bmd0aDtuKyspZm9yKHZhciBpPXJbbl0sYT0wO2E8aS5sZW5ndGg7YSsrKXt2YXIgbz1pW2Fd O28ueD1NYXRoLnJvdW5kKG8ueCplKSxvLnk9TWF0aC5yb3VuZChvLnkqZSksKG8ueDxHYS5t aW58fG8ueD5HYS5tYXh8fG8ueTxHYS5taW58fG8ueT5HYS5tYXgpJiYoXygiR2VvbWV0cnkg ZXhjZWVkcyBhbGxvd2VkIGV4dGVudCwgcmVkdWNlIHlvdXIgdmVjdG9yIHRpbGUgYnVmZmVy IHNpemUiKSxvLng9bChvLngsR2EubWluLEdhLm1heCksby55PWwoby55LEdhLm1pbixHYS5t YXgpKX1yZXR1cm4gcn1mdW5jdGlvbiBXYSh0LGUscixuLGkpe3QuZW1wbGFjZUJhY2soMipl KyhuKzEpLzIsMipyKyhpKzEpLzIpfXZhciBYYT1mdW5jdGlvbih0KXt0aGlzLnpvb209dC56 b29tLHRoaXMub3ZlcnNjYWxpbmc9dC5vdmVyc2NhbGluZyx0aGlzLmxheWVycz10LmxheWVy cyx0aGlzLmxheWVySWRzPXRoaXMubGF5ZXJzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQu aWR9KSksdGhpcy5pbmRleD10LmluZGV4LHRoaXMuaGFzUGF0dGVybj0hMSx0aGlzLmxheW91 dFZlcnRleEFycmF5PW5ldyB6aSx0aGlzLmluZGV4QXJyYXk9bmV3IFlpLHRoaXMuc2VnbWVu dHM9bmV3IHBhLHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zPW5ldyBVYShoYSx0LmxheWVy cyx0Lnpvb20pLHRoaXMuc3RhdGVEZXBlbmRlbnRMYXllcklkcz10aGlzLmxheWVycy5maWx0 ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlzU3RhdGVEZXBlbmRlbnQoKX0pKS5tYXAoKGZ1 bmN0aW9uKHQpe3JldHVybiB0LmlkfSkpfTtmdW5jdGlvbiBaYSh0LGUpe2Zvcih2YXIgcj0w O3I8dC5sZW5ndGg7cisrKWlmKGlvKGUsdFtyXSkpcmV0dXJuITA7Zm9yKHZhciBuPTA7bjxl Lmxlbmd0aDtuKyspaWYoaW8odCxlW25dKSlyZXR1cm4hMDtyZXR1cm4hISRhKHQsZSl9ZnVu Y3Rpb24gSmEodCxlLHIpe3JldHVybiEhaW8odCxlKXx8ISFlbyhlLHQscil9ZnVuY3Rpb24g S2EodCxlKXtpZigxPT09dC5sZW5ndGgpcmV0dXJuIG5vKGUsdFswXSk7Zm9yKHZhciByPTA7 cjxlLmxlbmd0aDtyKyspZm9yKHZhciBuPWVbcl0saT0wO2k8bi5sZW5ndGg7aSsrKWlmKGlv KHQsbltpXSkpcmV0dXJuITA7Zm9yKHZhciBhPTA7YTx0Lmxlbmd0aDthKyspaWYobm8oZSx0 W2FdKSlyZXR1cm4hMDtmb3IodmFyIG89MDtvPGUubGVuZ3RoO28rKylpZigkYSh0LGVbb10p KXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFFhKHQsZSxyKXtpZih0Lmxlbmd0aD4xKXtp ZigkYSh0LGUpKXJldHVybiEwO2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKWlmKGVvKGVb bl0sdCxyKSlyZXR1cm4hMH1mb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krKylpZihlbyh0W2ld LGUscikpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gJGEodCxlKXtpZigwPT09dC5sZW5n dGh8fDA9PT1lLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoLTE7cisr KWZvcih2YXIgbj10W3JdLGk9dFtyKzFdLGE9MDthPGUubGVuZ3RoLTE7YSsrKXtpZih0byhu LGksZVthXSxlW2ErMV0pKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHRvKHQsZSxyLG4p e3JldHVybiB3KHQscixuKSE9PXcoZSxyLG4pJiZ3KHQsZSxyKSE9PXcodCxlLG4pfWZ1bmN0 aW9uIGVvKHQsZSxyKXt2YXIgbj1yKnI7aWYoMT09PWUubGVuZ3RoKXJldHVybiB0LmRpc3RT cXIoZVswXSk8bjtmb3IodmFyIGk9MTtpPGUubGVuZ3RoO2krKyl7aWYocm8odCxlW2ktMV0s ZVtpXSk8bilyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBybyh0LGUscil7dmFyIG49ZS5k aXN0U3FyKHIpO2lmKDA9PT1uKXJldHVybiB0LmRpc3RTcXIoZSk7dmFyIGk9KCh0LngtZS54 KSooci54LWUueCkrKHQueS1lLnkpKihyLnktZS55KSkvbjtyZXR1cm4gaTwwP3QuZGlzdFNx cihlKTppPjE/dC5kaXN0U3FyKHIpOnQuZGlzdFNxcihyLnN1YihlKS5fbXVsdChpKS5fYWRk KGUpKX1mdW5jdGlvbiBubyh0LGUpe2Zvcih2YXIgcixuLGksYT0hMSxvPTA7bzx0Lmxlbmd0 aDtvKyspZm9yKHZhciBzPTAsbD0ocj10W29dKS5sZW5ndGgtMTtzPHIubGVuZ3RoO2w9cysr KW49cltzXSxpPXJbbF0sbi55PmUueSE9aS55PmUueSYmZS54PChpLngtbi54KSooZS55LW4u eSkvKGkueS1uLnkpK24ueCYmKGE9IWEpO3JldHVybiBhfWZ1bmN0aW9uIGlvKHQsZSl7Zm9y KHZhciByPSExLG49MCxpPXQubGVuZ3RoLTE7bjx0Lmxlbmd0aDtpPW4rKyl7dmFyIGE9dFtu XSxvPXRbaV07YS55PmUueSE9by55PmUueSYmZS54PChvLngtYS54KSooZS55LWEueSkvKG8u eS1hLnkpK2EueCYmKHI9IXIpfXJldHVybiByfWZ1bmN0aW9uIGFvKHQsZSxyKXt2YXIgbj1y WzBdLGk9clsyXTtpZih0Lng8bi54JiZlLng8bi54fHx0Lng+aS54JiZlLng+aS54fHx0Lnk8 bi55JiZlLnk8bi55fHx0Lnk+aS55JiZlLnk+aS55KXJldHVybiExO3ZhciBhPXcodCxlLHJb MF0pO3JldHVybiBhIT09dyh0LGUsclsxXSl8fGEhPT13KHQsZSxyWzJdKXx8YSE9PXcodCxl LHJbM10pfWZ1bmN0aW9uIG9vKHQsZSxyKXt2YXIgbj1lLnBhaW50LmdldCh0KS52YWx1ZTty ZXR1cm4iY29uc3RhbnQiPT09bi5raW5kP24udmFsdWU6ci5wcm9ncmFtQ29uZmlndXJhdGlv bnMuZ2V0KGUuaWQpLmdldE1heFZhbHVlKHQpfWZ1bmN0aW9uIHNvKHQpe3JldHVybiBNYXRo LnNxcnQodFswXSp0WzBdK3RbMV0qdFsxXSl9ZnVuY3Rpb24gbG8odCxlLHIsbixhKXtpZigh ZVswXSYmIWVbMV0pcmV0dXJuIHQ7dmFyIG89aS5jb252ZXJ0KGUpLl9tdWx0KGEpOyJ2aWV3 cG9ydCI9PT1yJiZvLl9yb3RhdGUoLW4pO2Zvcih2YXIgcz1bXSxsPTA7bDx0Lmxlbmd0aDts Kyspe3ZhciBjPXRbbF07cy5wdXNoKGMuc3ViKG8pKX1yZXR1cm4gc31YYS5wcm90b3R5cGUu cG9wdWxhdGU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMubGF5ZXJzWzBdLGk9W10sYT1u dWxsOyJjaXJjbGUiPT09bi50eXBlJiYoYT1uLmxheW91dC5nZXQoImNpcmNsZS1zb3J0LWtl eSIpKTtmb3IodmFyIG89MCxzPXQ7bzxzLmxlbmd0aDtvKz0xKXt2YXIgbD1zW29dLGM9bC5m ZWF0dXJlLHU9bC5pZCxmPWwuaW5kZXgsaD1sLnNvdXJjZUxheWVySW5kZXgscD10aGlzLmxh eWVyc1swXS5fZmVhdHVyZUZpbHRlci5uZWVkR2VvbWV0cnksZD17dHlwZTpjLnR5cGUsaWQ6 dSxwcm9wZXJ0aWVzOmMucHJvcGVydGllcyxnZW9tZXRyeTpwP1lhKGMpOltdfTtpZih0aGlz LmxheWVyc1swXS5fZmVhdHVyZUZpbHRlci5maWx0ZXIobmV3IHBpKHRoaXMuem9vbSksZCxy KSl7cHx8KGQuZ2VvbWV0cnk9WWEoYykpO3ZhciBtPWE/YS5ldmFsdWF0ZShkLHt9LHIpOnZv aWQgMCxnPXtpZDp1LHByb3BlcnRpZXM6Yy5wcm9wZXJ0aWVzLHR5cGU6Yy50eXBlLHNvdXJj ZUxheWVySW5kZXg6aCxpbmRleDpmLGdlb21ldHJ5OmQuZ2VvbWV0cnkscGF0dGVybnM6e30s c29ydEtleTptfTtpLnB1c2goZyl9fWEmJmkuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4g dC5zb3J0S2V5LWUuc29ydEtleX0pKTtmb3IodmFyIHY9MCx5PWk7djx5Lmxlbmd0aDt2Kz0x KXt2YXIgeD15W3ZdLGI9eCxfPWIuZ2VvbWV0cnksdz1iLmluZGV4LFQ9Yi5zb3VyY2VMYXll ckluZGV4LGs9dFt3XS5mZWF0dXJlO3RoaXMuYWRkRmVhdHVyZSh4LF8sdyxyKSxlLmZlYXR1 cmVJbmRleC5pbnNlcnQoayxfLHcsVCx0aGlzLmluZGV4KX19LFhhLnByb3RvdHlwZS51cGRh dGU9ZnVuY3Rpb24odCxlLHIpe3RoaXMuc3RhdGVEZXBlbmRlbnRMYXllcnMubGVuZ3RoJiZ0 aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy51cGRhdGVQYWludEFycmF5cyh0LGUsdGhpcy5z dGF0ZURlcGVuZGVudExheWVycyxyKX0sWGEucHJvdG90eXBlLmlzRW1wdHk9ZnVuY3Rpb24o KXtyZXR1cm4gMD09PXRoaXMubGF5b3V0VmVydGV4QXJyYXkubGVuZ3RofSxYYS5wcm90b3R5 cGUudXBsb2FkUGVuZGluZz1mdW5jdGlvbigpe3JldHVybiF0aGlzLnVwbG9hZGVkfHx0aGlz LnByb2dyYW1Db25maWd1cmF0aW9ucy5uZWVkc1VwbG9hZH0sWGEucHJvdG90eXBlLnVwbG9h ZD1mdW5jdGlvbih0KXt0aGlzLnVwbG9hZGVkfHwodGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXI9 dC5jcmVhdGVWZXJ0ZXhCdWZmZXIodGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSxoYSksdGhpcy5p bmRleEJ1ZmZlcj10LmNyZWF0ZUluZGV4QnVmZmVyKHRoaXMuaW5kZXhBcnJheSkpLHRoaXMu cHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnVwbG9hZCh0KSx0aGlzLnVwbG9hZGVkPSEwfSxYYS5w cm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMubGF5b3V0VmVydGV4QnVmZmVyJiYo dGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMuaW5kZXhCdWZmZXIuZGVz dHJveSgpLHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmRlc3Ryb3koKSx0aGlzLnNlZ21l bnRzLmRlc3Ryb3koKSl9LFhhLnByb3RvdHlwZS5hZGRGZWF0dXJlPWZ1bmN0aW9uKHQsZSxy LG4pe2Zvcih2YXIgaT0wLGE9ZTtpPGEubGVuZ3RoO2krPTEpZm9yKHZhciBvPTAscz1hW2ld O288cy5sZW5ndGg7bys9MSl7dmFyIGw9c1tvXSxjPWwueCx1PWwueTtpZighKGM8MHx8Yz49 ODE5Mnx8dTwwfHx1Pj04MTkyKSl7dmFyIGY9dGhpcy5zZWdtZW50cy5wcmVwYXJlU2VnbWVu dCg0LHRoaXMubGF5b3V0VmVydGV4QXJyYXksdGhpcy5pbmRleEFycmF5LHQuc29ydEtleSks aD1mLnZlcnRleExlbmd0aDtXYSh0aGlzLmxheW91dFZlcnRleEFycmF5LGMsdSwtMSwtMSks V2EodGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSxjLHUsMSwtMSksV2EodGhpcy5sYXlvdXRWZXJ0 ZXhBcnJheSxjLHUsMSwxKSxXYSh0aGlzLmxheW91dFZlcnRleEFycmF5LGMsdSwtMSwxKSx0 aGlzLmluZGV4QXJyYXkuZW1wbGFjZUJhY2soaCxoKzEsaCsyKSx0aGlzLmluZGV4QXJyYXku ZW1wbGFjZUJhY2soaCxoKzMsaCsyKSxmLnZlcnRleExlbmd0aCs9NCxmLnByaW1pdGl2ZUxl bmd0aCs9Mn19dGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMucG9wdWxhdGVQYWludEFycmF5 cyh0aGlzLmxheW91dFZlcnRleEFycmF5Lmxlbmd0aCx0LHIse30sbil9LE5uKCJDaXJjbGVC dWNrZXQiLFhhLHtvbWl0OlsibGF5ZXJzIl19KTt2YXIgY289bmV3IFNpKHsiY2lyY2xlLXNv cnQta2V5IjpuZXcgVGkoTHQubGF5b3V0X2NpcmNsZVsiY2lyY2xlLXNvcnQta2V5Il0pfSks dW89e3BhaW50Om5ldyBTaSh7ImNpcmNsZS1yYWRpdXMiOm5ldyBUaShMdC5wYWludF9jaXJj bGVbImNpcmNsZS1yYWRpdXMiXSksImNpcmNsZS1jb2xvciI6bmV3IFRpKEx0LnBhaW50X2Np cmNsZVsiY2lyY2xlLWNvbG9yIl0pLCJjaXJjbGUtYmx1ciI6bmV3IFRpKEx0LnBhaW50X2Np cmNsZVsiY2lyY2xlLWJsdXIiXSksImNpcmNsZS1vcGFjaXR5IjpuZXcgVGkoTHQucGFpbnRf Y2lyY2xlWyJjaXJjbGUtb3BhY2l0eSJdKSwiY2lyY2xlLXRyYW5zbGF0ZSI6bmV3IHdpKEx0 LnBhaW50X2NpcmNsZVsiY2lyY2xlLXRyYW5zbGF0ZSJdKSwiY2lyY2xlLXRyYW5zbGF0ZS1h bmNob3IiOm5ldyB3aShMdC5wYWludF9jaXJjbGVbImNpcmNsZS10cmFuc2xhdGUtYW5jaG9y Il0pLCJjaXJjbGUtcGl0Y2gtc2NhbGUiOm5ldyB3aShMdC5wYWludF9jaXJjbGVbImNpcmNs ZS1waXRjaC1zY2FsZSJdKSwiY2lyY2xlLXBpdGNoLWFsaWdubWVudCI6bmV3IHdpKEx0LnBh aW50X2NpcmNsZVsiY2lyY2xlLXBpdGNoLWFsaWdubWVudCJdKSwiY2lyY2xlLXN0cm9rZS13 aWR0aCI6bmV3IFRpKEx0LnBhaW50X2NpcmNsZVsiY2lyY2xlLXN0cm9rZS13aWR0aCJdKSwi Y2lyY2xlLXN0cm9rZS1jb2xvciI6bmV3IFRpKEx0LnBhaW50X2NpcmNsZVsiY2lyY2xlLXN0 cm9rZS1jb2xvciJdKSwiY2lyY2xlLXN0cm9rZS1vcGFjaXR5IjpuZXcgVGkoTHQucGFpbnRf Y2lyY2xlWyJjaXJjbGUtc3Ryb2tlLW9wYWNpdHkiXSl9KSxsYXlvdXQ6Y299LGZvPSJ1bmRl ZmluZWQiIT10eXBlb2YgRmxvYXQzMkFycmF5P0Zsb2F0MzJBcnJheTpBcnJheTtmdW5jdGlv biBobyh0KXtyZXR1cm4gdFswXT0xLHRbMV09MCx0WzJdPTAsdFszXT0wLHRbNF09MCx0WzVd PTEsdFs2XT0wLHRbN109MCx0WzhdPTAsdFs5XT0wLHRbMTBdPTEsdFsxMV09MCx0WzEyXT0w LHRbMTNdPTAsdFsxNF09MCx0WzE1XT0xLHR9ZnVuY3Rpb24gcG8odCxlLHIpe3ZhciBuPWVb MF0saT1lWzFdLGE9ZVsyXSxvPWVbM10scz1lWzRdLGw9ZVs1XSxjPWVbNl0sdT1lWzddLGY9 ZVs4XSxoPWVbOV0scD1lWzEwXSxkPWVbMTFdLG09ZVsxMl0sZz1lWzEzXSx2PWVbMTRdLHk9 ZVsxNV0seD1yWzBdLGI9clsxXSxfPXJbMl0sdz1yWzNdO3JldHVybiB0WzBdPXgqbitiKnMr XypmK3cqbSx0WzFdPXgqaStiKmwrXypoK3cqZyx0WzJdPXgqYStiKmMrXypwK3cqdix0WzNd PXgqbytiKnUrXypkK3cqeSx4PXJbNF0sYj1yWzVdLF89cls2XSx3PXJbN10sdFs0XT14Km4r YipzK18qZit3Km0sdFs1XT14KmkrYipsK18qaCt3KmcsdFs2XT14KmErYipjK18qcCt3KnYs dFs3XT14Km8rYip1K18qZCt3KnkseD1yWzhdLGI9cls5XSxfPXJbMTBdLHc9clsxMV0sdFs4 XT14Km4rYipzK18qZit3Km0sdFs5XT14KmkrYipsK18qaCt3KmcsdFsxMF09eCphK2IqYytf KnArdyp2LHRbMTFdPXgqbytiKnUrXypkK3cqeSx4PXJbMTJdLGI9clsxM10sXz1yWzE0XSx3 PXJbMTVdLHRbMTJdPXgqbitiKnMrXypmK3cqbSx0WzEzXT14KmkrYipsK18qaCt3KmcsdFsx NF09eCphK2IqYytfKnArdyp2LHRbMTVdPXgqbytiKnUrXypkK3cqeSx0fU1hdGguaHlwb3R8 fChNYXRoLmh5cG90PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cyxlPTAscj1hcmd1 bWVudHMubGVuZ3RoO3ItLTspZSs9dFtyXSp0W3JdO3JldHVybiBNYXRoLnNxcnQoZSl9KTt2 YXIgbW89cG87dmFyIGdvLHZvLHlvPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdFswXT1lWzBd LXJbMF0sdFsxXT1lWzFdLXJbMV0sdFsyXT1lWzJdLXJbMl0sdH07Z289bmV3IGZvKDMpLGZv IT1GbG9hdDMyQXJyYXkmJihnb1swXT0wLGdvWzFdPTAsZ29bMl09MCksdm89Z287ZnVuY3Rp b24geG8odCxlLHIpe3ZhciBuPWVbMF0saT1lWzFdLGE9ZVsyXSxvPWVbM107cmV0dXJuIHRb MF09clswXSpuK3JbNF0qaStyWzhdKmErclsxMl0qbyx0WzFdPXJbMV0qbityWzVdKmkrcls5 XSphK3JbMTNdKm8sdFsyXT1yWzJdKm4rcls2XSppK3JbMTBdKmErclsxNF0qbyx0WzNdPXJb M10qbityWzddKmkrclsxMV0qYStyWzE1XSpvLHR9IWZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rp b24oKXt2YXIgdD1uZXcgZm8oNCk7cmV0dXJuIGZvIT1GbG9hdDMyQXJyYXkmJih0WzBdPTAs dFsxXT0wLHRbMl09MCx0WzNdPTApLHR9KCl9KCk7dmFyIGJvPWZ1bmN0aW9uKHQpe3ZhciBl PXRbMF0scj10WzFdO3JldHVybiBlKmUrcipyfSxfbz0oZnVuY3Rpb24oKXt2YXIgdD1mdW5j dGlvbigpe3ZhciB0PW5ldyBmbygyKTtyZXR1cm4gZm8hPUZsb2F0MzJBcnJheSYmKHRbMF09 MCx0WzFdPTApLHR9KCl9KCksZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt0LmNhbGwodGhp cyxlLHVvKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5j cmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90 b3R5cGUuY3JlYXRlQnVja2V0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgWGEodCl9LGUucHJv dG90eXBlLnF1ZXJ5UmFkaXVzPWZ1bmN0aW9uKHQpe3ZhciBlPXQ7cmV0dXJuIG9vKCJjaXJj bGUtcmFkaXVzIix0aGlzLGUpK29vKCJjaXJjbGUtc3Ryb2tlLXdpZHRoIix0aGlzLGUpK3Nv KHRoaXMucGFpbnQuZ2V0KCJjaXJjbGUtdHJhbnNsYXRlIikpfSxlLnByb3RvdHlwZS5xdWVy eUludGVyc2VjdHNGZWF0dXJlPWZ1bmN0aW9uKHQsZSxyLG4saSxhLG8scyl7Zm9yKHZhciBs PWxvKHQsdGhpcy5wYWludC5nZXQoImNpcmNsZS10cmFuc2xhdGUiKSx0aGlzLnBhaW50Lmdl dCgiY2lyY2xlLXRyYW5zbGF0ZS1hbmNob3IiKSxhLmFuZ2xlLG8pLGM9dGhpcy5wYWludC5n ZXQoImNpcmNsZS1yYWRpdXMiKS5ldmFsdWF0ZShlLHIpK3RoaXMucGFpbnQuZ2V0KCJjaXJj bGUtc3Ryb2tlLXdpZHRoIikuZXZhbHVhdGUoZSxyKSx1PSJtYXAiPT09dGhpcy5wYWludC5n ZXQoImNpcmNsZS1waXRjaC1hbGlnbm1lbnQiKSxmPXU/bDpmdW5jdGlvbih0LGUpe3JldHVy biB0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHdvKHQsZSl9KSl9KGwscyksaD11P2Mqbzpj LHA9MCxkPW47cDxkLmxlbmd0aDtwKz0xKWZvcih2YXIgbT0wLGc9ZFtwXTttPGcubGVuZ3Ro O20rPTEpe3ZhciB2PWdbbV0seT11P3Y6d28odixzKSx4PWgsYj14byhbXSxbdi54LHYueSww LDFdLHMpO2lmKCJ2aWV3cG9ydCI9PT10aGlzLnBhaW50LmdldCgiY2lyY2xlLXBpdGNoLXNj YWxlIikmJiJtYXAiPT09dGhpcy5wYWludC5nZXQoImNpcmNsZS1waXRjaC1hbGlnbm1lbnQi KT94Kj1iWzNdL2EuY2FtZXJhVG9DZW50ZXJEaXN0YW5jZToibWFwIj09PXRoaXMucGFpbnQu Z2V0KCJjaXJjbGUtcGl0Y2gtc2NhbGUiKSYmInZpZXdwb3J0Ij09PXRoaXMucGFpbnQuZ2V0 KCJjaXJjbGUtcGl0Y2gtYWxpZ25tZW50IikmJih4Kj1hLmNhbWVyYVRvQ2VudGVyRGlzdGFu Y2UvYlszXSksSmEoZix5LHgpKXJldHVybiEwfXJldHVybiExfSxlfShFaSkpO2Z1bmN0aW9u IHdvKHQsZSl7dmFyIHI9eG8oW10sW3QueCx0LnksMCwxXSxlKTtyZXR1cm4gbmV3IGkoclsw XS9yWzNdLHJbMV0vclszXSl9dmFyIFRvPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFw cGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90 eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVj dG9yPWUsZX0oWGEpO2Z1bmN0aW9uIGtvKHQsZSxyLG4pe3ZhciBpPWUud2lkdGgsYT1lLmhl aWdodDtpZihuKXtpZihuIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpbj1uZXcgVWlu dDhBcnJheShuLmJ1ZmZlcik7ZWxzZSBpZihuLmxlbmd0aCE9PWkqYSpyKXRocm93IG5ldyBS YW5nZUVycm9yKCJtaXNtYXRjaGVkIGltYWdlIHNpemUiKX1lbHNlIG49bmV3IFVpbnQ4QXJy YXkoaSphKnIpO3JldHVybiB0LndpZHRoPWksdC5oZWlnaHQ9YSx0LmRhdGE9bix0fWZ1bmN0 aW9uIEFvKHQsZSxyKXt2YXIgbj1lLndpZHRoLGk9ZS5oZWlnaHQ7aWYobiE9PXQud2lkdGh8 fGkhPT10LmhlaWdodCl7dmFyIGE9a28oe30se3dpZHRoOm4saGVpZ2h0Oml9LHIpO01vKHQs YSx7eDowLHk6MH0se3g6MCx5OjB9LHt3aWR0aDpNYXRoLm1pbih0LndpZHRoLG4pLGhlaWdo dDpNYXRoLm1pbih0LmhlaWdodCxpKX0sciksdC53aWR0aD1uLHQuaGVpZ2h0PWksdC5kYXRh PWEuZGF0YX19ZnVuY3Rpb24gTW8odCxlLHIsbixpLGEpe2lmKDA9PT1pLndpZHRofHwwPT09 aS5oZWlnaHQpcmV0dXJuIGU7aWYoaS53aWR0aD50LndpZHRofHxpLmhlaWdodD50LmhlaWdo dHx8ci54PnQud2lkdGgtaS53aWR0aHx8ci55PnQuaGVpZ2h0LWkuaGVpZ2h0KXRocm93IG5l dyBSYW5nZUVycm9yKCJvdXQgb2YgcmFuZ2Ugc291cmNlIGNvb3JkaW5hdGVzIGZvciBpbWFn ZSBjb3B5Iik7aWYoaS53aWR0aD5lLndpZHRofHxpLmhlaWdodD5lLmhlaWdodHx8bi54PmUu d2lkdGgtaS53aWR0aHx8bi55PmUuaGVpZ2h0LWkuaGVpZ2h0KXRocm93IG5ldyBSYW5nZUVy cm9yKCJvdXQgb2YgcmFuZ2UgZGVzdGluYXRpb24gY29vcmRpbmF0ZXMgZm9yIGltYWdlIGNv cHkiKTtmb3IodmFyIG89dC5kYXRhLHM9ZS5kYXRhLGw9MDtsPGkuaGVpZ2h0O2wrKylmb3Io dmFyIGM9KChyLnkrbCkqdC53aWR0aCtyLngpKmEsdT0oKG4ueStsKSplLndpZHRoK24ueCkq YSxmPTA7ZjxpLndpZHRoKmE7ZisrKXNbdStmXT1vW2MrZl07cmV0dXJuIGV9Tm4oIkhlYXRt YXBCdWNrZXQiLFRvLHtvbWl0OlsibGF5ZXJzIl19KTt2YXIgU289ZnVuY3Rpb24odCxlKXtr byh0aGlzLHQsMSxlKX07U28ucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbih0KXtBbyh0aGlz LHQsMSl9LFNvLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgU28oe3dp ZHRoOnRoaXMud2lkdGgsaGVpZ2h0OnRoaXMuaGVpZ2h0fSxuZXcgVWludDhBcnJheSh0aGlz LmRhdGEpKX0sU28uY29weT1mdW5jdGlvbih0LGUscixuLGkpe01vKHQsZSxyLG4saSwxKX07 dmFyIEVvPWZ1bmN0aW9uKHQsZSl7a28odGhpcyx0LDQsZSl9O0VvLnByb3RvdHlwZS5yZXNp emU9ZnVuY3Rpb24odCl7QW8odGhpcyx0LDQpfSxFby5wcm90b3R5cGUucmVwbGFjZT1mdW5j dGlvbih0LGUpe2U/dGhpcy5kYXRhLnNldCh0KTp0IGluc3RhbmNlb2YgVWludDhDbGFtcGVk QXJyYXk/dGhpcy5kYXRhPW5ldyBVaW50OEFycmF5KHQuYnVmZmVyKTp0aGlzLmRhdGE9dH0s RW8ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBFbyh7d2lkdGg6dGhp cy53aWR0aCxoZWlnaHQ6dGhpcy5oZWlnaHR9LG5ldyBVaW50OEFycmF5KHRoaXMuZGF0YSkp fSxFby5jb3B5PWZ1bmN0aW9uKHQsZSxyLG4saSl7TW8odCxlLHIsbixpLDQpfSxObigiQWxw aGFJbWFnZSIsU28pLE5uKCJSR0JBSW1hZ2UiLEVvKTt2YXIgTG89e3BhaW50Om5ldyBTaSh7 ImhlYXRtYXAtcmFkaXVzIjpuZXcgVGkoTHQucGFpbnRfaGVhdG1hcFsiaGVhdG1hcC1yYWRp dXMiXSksImhlYXRtYXAtd2VpZ2h0IjpuZXcgVGkoTHQucGFpbnRfaGVhdG1hcFsiaGVhdG1h cC13ZWlnaHQiXSksImhlYXRtYXAtaW50ZW5zaXR5IjpuZXcgd2koTHQucGFpbnRfaGVhdG1h cFsiaGVhdG1hcC1pbnRlbnNpdHkiXSksImhlYXRtYXAtY29sb3IiOm5ldyBNaShMdC5wYWlu dF9oZWF0bWFwWyJoZWF0bWFwLWNvbG9yIl0pLCJoZWF0bWFwLW9wYWNpdHkiOm5ldyB3aShM dC5wYWludF9oZWF0bWFwWyJoZWF0bWFwLW9wYWNpdHkiXSl9KX07ZnVuY3Rpb24gQ28odCxl KXtmb3IodmFyIHI9bmV3IFVpbnQ4QXJyYXkoMTAyNCksbj17fSxpPTAsYT0wO2k8MjU2O2kr KyxhKz00KXtuW2VdPWkvMjU1O3ZhciBvPXQuZXZhbHVhdGUobik7clthKzBdPU1hdGguZmxv b3IoMjU1Km8uci9vLmEpLHJbYSsxXT1NYXRoLmZsb29yKDI1NSpvLmcvby5hKSxyW2ErMl09 TWF0aC5mbG9vcigyNTUqby5iL28uYSksclthKzNdPU1hdGguZmxvb3IoMjU1Km8uYSl9cmV0 dXJuIG5ldyBFbyh7d2lkdGg6MjU2LGhlaWdodDoxfSxyKX12YXIgUG89ZnVuY3Rpb24odCl7 ZnVuY3Rpb24gZShlKXt0LmNhbGwodGhpcyxlLExvKSx0aGlzLl91cGRhdGVDb2xvclJhbXAo KX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUo dCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUu Y3JlYXRlQnVja2V0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgVG8odCl9LGUucHJvdG90eXBl Ll9oYW5kbGVTcGVjaWFsUGFpbnRQcm9wZXJ0eVVwZGF0ZT1mdW5jdGlvbih0KXsiaGVhdG1h cC1jb2xvciI9PT10JiZ0aGlzLl91cGRhdGVDb2xvclJhbXAoKX0sZS5wcm90b3R5cGUuX3Vw ZGF0ZUNvbG9yUmFtcD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3RyYW5zaXRpb25hYmxlUGFp bnQuX3ZhbHVlc1siaGVhdG1hcC1jb2xvciJdLnZhbHVlLmV4cHJlc3Npb247dGhpcy5jb2xv clJhbXA9Q28odCwiaGVhdG1hcERlbnNpdHkiKSx0aGlzLmNvbG9yUmFtcFRleHR1cmU9bnVs bH0sZS5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKCl7dGhpcy5oZWF0bWFwRmJvJiYodGhp cy5oZWF0bWFwRmJvLmRlc3Ryb3koKSx0aGlzLmhlYXRtYXBGYm89bnVsbCl9LGUucHJvdG90 eXBlLnF1ZXJ5UmFkaXVzPWZ1bmN0aW9uKCl7cmV0dXJuIDB9LGUucHJvdG90eXBlLnF1ZXJ5 SW50ZXJzZWN0c0ZlYXR1cmU9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZS5wcm90b3R5cGUuaGFz T2Zmc2NyZWVuUGFzcz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5wYWludC5nZXQoImhl YXRtYXAtb3BhY2l0eSIpJiYibm9uZSIhPT10aGlzLnZpc2liaWxpdHl9LGV9KEVpKSxJbz17 cGFpbnQ6bmV3IFNpKHsiaGlsbHNoYWRlLWlsbHVtaW5hdGlvbi1kaXJlY3Rpb24iOm5ldyB3 aShMdC5wYWludF9oaWxsc2hhZGVbImhpbGxzaGFkZS1pbGx1bWluYXRpb24tZGlyZWN0aW9u Il0pLCJoaWxsc2hhZGUtaWxsdW1pbmF0aW9uLWFuY2hvciI6bmV3IHdpKEx0LnBhaW50X2hp bGxzaGFkZVsiaGlsbHNoYWRlLWlsbHVtaW5hdGlvbi1hbmNob3IiXSksImhpbGxzaGFkZS1l eGFnZ2VyYXRpb24iOm5ldyB3aShMdC5wYWludF9oaWxsc2hhZGVbImhpbGxzaGFkZS1leGFn Z2VyYXRpb24iXSksImhpbGxzaGFkZS1zaGFkb3ctY29sb3IiOm5ldyB3aShMdC5wYWludF9o aWxsc2hhZGVbImhpbGxzaGFkZS1zaGFkb3ctY29sb3IiXSksImhpbGxzaGFkZS1oaWdobGln aHQtY29sb3IiOm5ldyB3aShMdC5wYWludF9oaWxsc2hhZGVbImhpbGxzaGFkZS1oaWdobGln aHQtY29sb3IiXSksImhpbGxzaGFkZS1hY2NlbnQtY29sb3IiOm5ldyB3aShMdC5wYWludF9o aWxsc2hhZGVbImhpbGxzaGFkZS1hY2NlbnQtY29sb3IiXSl9KX0sT289ZnVuY3Rpb24odCl7 ZnVuY3Rpb24gZShlKXt0LmNhbGwodGhpcyxlLElvKX1yZXR1cm4gdCYmKGUuX19wcm90b19f PXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90 eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuaGFzT2Zmc2NyZWVuUGFzcz1mdW5jdGlv bigpe3JldHVybiAwIT09dGhpcy5wYWludC5nZXQoImhpbGxzaGFkZS1leGFnZ2VyYXRpb24i KSYmIm5vbmUiIT09dGhpcy52aXNpYmlsaXR5fSxlfShFaSksem89SWkoW3tuYW1lOiJhX3Bv cyIsY29tcG9uZW50czoyLHR5cGU6IkludDE2In1dLDQpLm1lbWJlcnMsRG89Rm8sUm89Rm87 ZnVuY3Rpb24gRm8odCxlLHIpe3I9cnx8Mjt2YXIgbixpLGEsbyxzLGwsYyx1PWUmJmUubGVu Z3RoLGY9dT9lWzBdKnI6dC5sZW5ndGgsaD1Cbyh0LDAsZixyLCEwKSxwPVtdO2lmKCFofHxo Lm5leHQ9PT1oLnByZXYpcmV0dXJuIHA7aWYodSYmKGg9ZnVuY3Rpb24odCxlLHIsbil7dmFy IGksYSxvLHMsbCxjPVtdO2ZvcihpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKW89ZVtpXSpuLHM9 aTxhLTE/ZVtpKzFdKm46dC5sZW5ndGgsKGw9Qm8odCxvLHMsbiwhMSkpPT09bC5uZXh0JiYo bC5zdGVpbmVyPSEwKSxjLnB1c2goWm8obCkpO2ZvcihjLnNvcnQoR28pLGk9MDtpPGMubGVu Z3RoO2krKylZbyhjW2ldLHIpLHI9Tm8ocixyLm5leHQpO3JldHVybiByfSh0LGUsaCxyKSks dC5sZW5ndGg+ODAqcil7bj1hPXRbMF0saT1vPXRbMV07Zm9yKHZhciBkPXI7ZDxmO2QrPXIp KHM9dFtkXSk8biYmKG49cyksKGw9dFtkKzFdKTxpJiYoaT1sKSxzPmEmJihhPXMpLGw+byYm KG89bCk7Yz0wIT09KGM9TWF0aC5tYXgoYS1uLG8taSkpPzEvYzowfXJldHVybiBqbyhoLHAs cixuLGksYykscH1mdW5jdGlvbiBCbyh0LGUscixuLGkpe3ZhciBhLG87aWYoaT09PWxzKHQs ZSxyLG4pPjApZm9yKGE9ZTthPHI7YSs9bilvPWFzKGEsdFthXSx0W2ErMV0sbyk7ZWxzZSBm b3IoYT1yLW47YT49ZTthLT1uKW89YXMoYSx0W2FdLHRbYSsxXSxvKTtyZXR1cm4gbyYmJG8o byxvLm5leHQpJiYob3Mobyksbz1vLm5leHQpLG99ZnVuY3Rpb24gTm8odCxlKXtpZighdCly ZXR1cm4gdDtlfHwoZT10KTt2YXIgcixuPXQ7ZG97aWYocj0hMSxuLnN0ZWluZXJ8fCEkbyhu LG4ubmV4dCkmJjAhPT1RbyhuLnByZXYsbixuLm5leHQpKW49bi5uZXh0O2Vsc2V7aWYob3Mo biksKG49ZT1uLnByZXYpPT09bi5uZXh0KWJyZWFrO3I9ITB9fXdoaWxlKHJ8fG4hPT1lKTty ZXR1cm4gZX1mdW5jdGlvbiBqbyh0LGUscixuLGksYSxvKXtpZih0KXshbyYmYSYmZnVuY3Rp b24odCxlLHIsbil7dmFyIGk9dDtkb3tudWxsPT09aS56JiYoaS56PVhvKGkueCxpLnksZSxy LG4pKSxpLnByZXZaPWkucHJldixpLm5leHRaPWkubmV4dCxpPWkubmV4dH13aGlsZShpIT09 dCk7aS5wcmV2Wi5uZXh0Wj1udWxsLGkucHJldlo9bnVsbCxmdW5jdGlvbih0KXt2YXIgZSxy LG4saSxhLG8scyxsLGM9MTtkb3tmb3Iocj10LHQ9bnVsbCxhPW51bGwsbz0wO3I7KXtmb3Io bysrLG49cixzPTAsZT0wO2U8YyYmKHMrKyxuPW4ubmV4dFopO2UrKyk7Zm9yKGw9YztzPjB8 fGw+MCYmbjspMCE9PXMmJigwPT09bHx8IW58fHIuejw9bi56KT8oaT1yLHI9ci5uZXh0Wixz LS0pOihpPW4sbj1uLm5leHRaLGwtLSksYT9hLm5leHRaPWk6dD1pLGkucHJldlo9YSxhPWk7 cj1ufWEubmV4dFo9bnVsbCxjKj0yfXdoaWxlKG8+MSl9KGkpfSh0LG4saSxhKTtmb3IodmFy IHMsbCxjPXQ7dC5wcmV2IT09dC5uZXh0OylpZihzPXQucHJldixsPXQubmV4dCxhP1ZvKHQs bixpLGEpOlVvKHQpKWUucHVzaChzLmkvciksZS5wdXNoKHQuaS9yKSxlLnB1c2gobC5pL3Ip LG9zKHQpLHQ9bC5uZXh0LGM9bC5uZXh0O2Vsc2UgaWYoKHQ9bCk9PT1jKXtvPzE9PT1vP2pv KHQ9SG8oTm8odCksZSxyKSxlLHIsbixpLGEsMik6Mj09PW8mJnFvKHQsZSxyLG4saSxhKTpq byhObyh0KSxlLHIsbixpLGEsMSk7YnJlYWt9fX1mdW5jdGlvbiBVbyh0KXt2YXIgZT10LnBy ZXYscj10LG49dC5uZXh0O2lmKFFvKGUscixuKT49MClyZXR1cm4hMTtmb3IodmFyIGk9dC5u ZXh0Lm5leHQ7aSE9PXQucHJldjspe2lmKEpvKGUueCxlLnksci54LHIueSxuLngsbi55LGku eCxpLnkpJiZRbyhpLnByZXYsaSxpLm5leHQpPj0wKXJldHVybiExO2k9aS5uZXh0fXJldHVy biEwfWZ1bmN0aW9uIFZvKHQsZSxyLG4pe3ZhciBpPXQucHJldixhPXQsbz10Lm5leHQ7aWYo UW8oaSxhLG8pPj0wKXJldHVybiExO2Zvcih2YXIgcz1pLng8YS54P2kueDxvLng/aS54Om8u eDphLng8by54P2EueDpvLngsbD1pLnk8YS55P2kueTxvLnk/aS55Om8ueTphLnk8by55P2Eu eTpvLnksYz1pLng+YS54P2kueD5vLng/aS54Om8ueDphLng+by54P2EueDpvLngsdT1pLnk+ YS55P2kueT5vLnk/aS55Om8ueTphLnk+by55P2EueTpvLnksZj1YbyhzLGwsZSxyLG4pLGg9 WG8oYyx1LGUscixuKSxwPXQucHJldlosZD10Lm5leHRaO3AmJnAuej49ZiYmZCYmZC56PD1o Oyl7aWYocCE9PXQucHJldiYmcCE9PXQubmV4dCYmSm8oaS54LGkueSxhLngsYS55LG8ueCxv LnkscC54LHAueSkmJlFvKHAucHJldixwLHAubmV4dCk+PTApcmV0dXJuITE7aWYocD1wLnBy ZXZaLGQhPT10LnByZXYmJmQhPT10Lm5leHQmJkpvKGkueCxpLnksYS54LGEueSxvLngsby55 LGQueCxkLnkpJiZRbyhkLnByZXYsZCxkLm5leHQpPj0wKXJldHVybiExO2Q9ZC5uZXh0Wn1m b3IoO3AmJnAuej49Zjspe2lmKHAhPT10LnByZXYmJnAhPT10Lm5leHQmJkpvKGkueCxpLnks YS54LGEueSxvLngsby55LHAueCxwLnkpJiZRbyhwLnByZXYscCxwLm5leHQpPj0wKXJldHVy biExO3A9cC5wcmV2Wn1mb3IoO2QmJmQuejw9aDspe2lmKGQhPT10LnByZXYmJmQhPT10Lm5l eHQmJkpvKGkueCxpLnksYS54LGEueSxvLngsby55LGQueCxkLnkpJiZRbyhkLnByZXYsZCxk Lm5leHQpPj0wKXJldHVybiExO2Q9ZC5uZXh0Wn1yZXR1cm4hMH1mdW5jdGlvbiBIbyh0LGUs cil7dmFyIG49dDtkb3t2YXIgaT1uLnByZXYsYT1uLm5leHQubmV4dDshJG8oaSxhKSYmdHMo aSxuLG4ubmV4dCxhKSYmbnMoaSxhKSYmbnMoYSxpKSYmKGUucHVzaChpLmkvciksZS5wdXNo KG4uaS9yKSxlLnB1c2goYS5pL3IpLG9zKG4pLG9zKG4ubmV4dCksbj10PWEpLG49bi5uZXh0 fXdoaWxlKG4hPT10KTtyZXR1cm4gTm8obil9ZnVuY3Rpb24gcW8odCxlLHIsbixpLGEpe3Zh ciBvPXQ7ZG97Zm9yKHZhciBzPW8ubmV4dC5uZXh0O3MhPT1vLnByZXY7KXtpZihvLmkhPT1z LmkmJktvKG8scykpe3ZhciBsPWlzKG8scyk7cmV0dXJuIG89Tm8obyxvLm5leHQpLGw9Tm8o bCxsLm5leHQpLGpvKG8sZSxyLG4saSxhKSx2b2lkIGpvKGwsZSxyLG4saSxhKX1zPXMubmV4 dH1vPW8ubmV4dH13aGlsZShvIT09dCl9ZnVuY3Rpb24gR28odCxlKXtyZXR1cm4gdC54LWUu eH1mdW5jdGlvbiBZbyh0LGUpe2lmKGU9ZnVuY3Rpb24odCxlKXt2YXIgcixuPWUsaT10Lngs YT10Lnksbz0tMS8wO2Rve2lmKGE8PW4ueSYmYT49bi5uZXh0LnkmJm4ubmV4dC55IT09bi55 KXt2YXIgcz1uLngrKGEtbi55KSoobi5uZXh0Lngtbi54KS8obi5uZXh0Lnktbi55KTtpZihz PD1pJiZzPm8pe2lmKG89cyxzPT09aSl7aWYoYT09PW4ueSlyZXR1cm4gbjtpZihhPT09bi5u ZXh0LnkpcmV0dXJuIG4ubmV4dH1yPW4ueDxuLm5leHQueD9uOm4ubmV4dH19bj1uLm5leHR9 d2hpbGUobiE9PWUpO2lmKCFyKXJldHVybiBudWxsO2lmKGk9PT1vKXJldHVybiByO3ZhciBs LGM9cix1PXIueCxmPXIueSxoPTEvMDtuPXI7ZG97aT49bi54JiZuLng+PXUmJmkhPT1uLngm JkpvKGE8Zj9pOm8sYSx1LGYsYTxmP286aSxhLG4ueCxuLnkpJiYobD1NYXRoLmFicyhhLW4u eSkvKGktbi54KSxucyhuLHQpJiYobDxofHxsPT09aCYmKG4ueD5yLnh8fG4ueD09PXIueCYm V28ocixuKSkpJiYocj1uLGg9bCkpLG49bi5uZXh0fXdoaWxlKG4hPT1jKTtyZXR1cm4gcn0o dCxlKSl7dmFyIHI9aXMoZSx0KTtObyhlLGUubmV4dCksTm8ocixyLm5leHQpfX1mdW5jdGlv biBXbyh0LGUpe3JldHVybiBRbyh0LnByZXYsdCxlLnByZXYpPDAmJlFvKGUubmV4dCx0LHQu bmV4dCk8MH1mdW5jdGlvbiBYbyh0LGUscixuLGkpe3JldHVybih0PTE0MzE2NTU3NjUmKCh0 PTg1ODk5MzQ1OSYoKHQ9MjUyNjQ1MTM1JigodD0xNjcxMTkzNSYoKHQ9MzI3NjcqKHQtcikq aSl8dDw8OCkpfHQ8PDQpKXx0PDwyKSl8dDw8MSkpfChlPTE0MzE2NTU3NjUmKChlPTg1ODk5 MzQ1OSYoKGU9MjUyNjQ1MTM1JigoZT0xNjcxMTkzNSYoKGU9MzI3NjcqKGUtbikqaSl8ZTw8 OCkpfGU8PDQpKXxlPDwyKSl8ZTw8MSkpPDwxfWZ1bmN0aW9uIFpvKHQpe3ZhciBlPXQscj10 O2RveyhlLng8ci54fHxlLng9PT1yLngmJmUueTxyLnkpJiYocj1lKSxlPWUubmV4dH13aGls ZShlIT09dCk7cmV0dXJuIHJ9ZnVuY3Rpb24gSm8odCxlLHIsbixpLGEsbyxzKXtyZXR1cm4o aS1vKSooZS1zKS0odC1vKSooYS1zKT49MCYmKHQtbykqKG4tcyktKHItbykqKGUtcyk+PTAm JihyLW8pKihhLXMpLShpLW8pKihuLXMpPj0wfWZ1bmN0aW9uIEtvKHQsZSl7cmV0dXJuIHQu bmV4dC5pIT09ZS5pJiZ0LnByZXYuaSE9PWUuaSYmIWZ1bmN0aW9uKHQsZSl7dmFyIHI9dDtk b3tpZihyLmkhPT10LmkmJnIubmV4dC5pIT09dC5pJiZyLmkhPT1lLmkmJnIubmV4dC5pIT09 ZS5pJiZ0cyhyLHIubmV4dCx0LGUpKXJldHVybiEwO3I9ci5uZXh0fXdoaWxlKHIhPT10KTty ZXR1cm4hMX0odCxlKSYmKG5zKHQsZSkmJm5zKGUsdCkmJmZ1bmN0aW9uKHQsZSl7dmFyIHI9 dCxuPSExLGk9KHQueCtlLngpLzIsYT0odC55K2UueSkvMjtkb3tyLnk+YSE9ci5uZXh0Lnk+ YSYmci5uZXh0LnkhPT1yLnkmJmk8KHIubmV4dC54LXIueCkqKGEtci55KS8oci5uZXh0Lnkt ci55KStyLngmJihuPSFuKSxyPXIubmV4dH13aGlsZShyIT09dCk7cmV0dXJuIG59KHQsZSkm JihRbyh0LnByZXYsdCxlLnByZXYpfHxRbyh0LGUucHJldixlKSl8fCRvKHQsZSkmJlFvKHQu cHJldix0LHQubmV4dCk+MCYmUW8oZS5wcmV2LGUsZS5uZXh0KT4wKX1mdW5jdGlvbiBRbyh0 LGUscil7cmV0dXJuKGUueS10LnkpKihyLngtZS54KS0oZS54LXQueCkqKHIueS1lLnkpfWZ1 bmN0aW9uICRvKHQsZSl7cmV0dXJuIHQueD09PWUueCYmdC55PT09ZS55fWZ1bmN0aW9uIHRz KHQsZSxyLG4pe3ZhciBpPXJzKFFvKHQsZSxyKSksYT1ycyhRbyh0LGUsbikpLG89cnMoUW8o cixuLHQpKSxzPXJzKFFvKHIsbixlKSk7cmV0dXJuIGkhPT1hJiZvIT09c3x8KCEoMCE9PWl8 fCFlcyh0LHIsZSkpfHwoISgwIT09YXx8IWVzKHQsbixlKSl8fCghKDAhPT1vfHwhZXMocix0 LG4pKXx8ISgwIT09c3x8IWVzKHIsZSxuKSkpKSl9ZnVuY3Rpb24gZXModCxlLHIpe3JldHVy biBlLng8PU1hdGgubWF4KHQueCxyLngpJiZlLng+PU1hdGgubWluKHQueCxyLngpJiZlLnk8 PU1hdGgubWF4KHQueSxyLnkpJiZlLnk+PU1hdGgubWluKHQueSxyLnkpfWZ1bmN0aW9uIHJz KHQpe3JldHVybiB0PjA/MTp0PDA/LTE6MH1mdW5jdGlvbiBucyh0LGUpe3JldHVybiBRbyh0 LnByZXYsdCx0Lm5leHQpPDA/UW8odCxlLHQubmV4dCk+PTAmJlFvKHQsdC5wcmV2LGUpPj0w OlFvKHQsZSx0LnByZXYpPDB8fFFvKHQsdC5uZXh0LGUpPDB9ZnVuY3Rpb24gaXModCxlKXt2 YXIgcj1uZXcgc3ModC5pLHQueCx0LnkpLG49bmV3IHNzKGUuaSxlLngsZS55KSxpPXQubmV4 dCxhPWUucHJldjtyZXR1cm4gdC5uZXh0PWUsZS5wcmV2PXQsci5uZXh0PWksaS5wcmV2PXIs bi5uZXh0PXIsci5wcmV2PW4sYS5uZXh0PW4sbi5wcmV2PWEsbn1mdW5jdGlvbiBhcyh0LGUs cixuKXt2YXIgaT1uZXcgc3ModCxlLHIpO3JldHVybiBuPyhpLm5leHQ9bi5uZXh0LGkucHJl dj1uLG4ubmV4dC5wcmV2PWksbi5uZXh0PWkpOihpLnByZXY9aSxpLm5leHQ9aSksaX1mdW5j dGlvbiBvcyh0KXt0Lm5leHQucHJldj10LnByZXYsdC5wcmV2Lm5leHQ9dC5uZXh0LHQucHJl dlomJih0LnByZXZaLm5leHRaPXQubmV4dFopLHQubmV4dFomJih0Lm5leHRaLnByZXZaPXQu cHJldlopfWZ1bmN0aW9uIHNzKHQsZSxyKXt0aGlzLmk9dCx0aGlzLng9ZSx0aGlzLnk9cix0 aGlzLnByZXY9bnVsbCx0aGlzLm5leHQ9bnVsbCx0aGlzLno9bnVsbCx0aGlzLnByZXZaPW51 bGwsdGhpcy5uZXh0Wj1udWxsLHRoaXMuc3RlaW5lcj0hMX1mdW5jdGlvbiBscyh0LGUscixu KXtmb3IodmFyIGk9MCxhPWUsbz1yLW47YTxyO2ErPW4paSs9KHRbb10tdFthXSkqKHRbYSsx XSt0W28rMV0pLG89YTtyZXR1cm4gaX1mdW5jdGlvbiBjcyh0LGUscixuLGkpeyFmdW5jdGlv biB0KGUscixuLGksYSl7Zm9yKDtpPm47KXtpZihpLW4+NjAwKXt2YXIgbz1pLW4rMSxzPXIt bisxLGw9TWF0aC5sb2cobyksYz0uNSpNYXRoLmV4cCgyKmwvMyksdT0uNSpNYXRoLnNxcnQo bCpjKihvLWMpL28pKihzLW8vMjwwPy0xOjEpLGY9TWF0aC5tYXgobixNYXRoLmZsb29yKHIt cypjL28rdSkpLGg9TWF0aC5taW4oaSxNYXRoLmZsb29yKHIrKG8tcykqYy9vK3UpKTt0KGUs cixmLGgsYSl9dmFyIHA9ZVtyXSxkPW4sbT1pO2Zvcih1cyhlLG4sciksYShlW2ldLHApPjAm JnVzKGUsbixpKTtkPG07KXtmb3IodXMoZSxkLG0pLGQrKyxtLS07YShlW2RdLHApPDA7KWQr Kztmb3IoO2EoZVttXSxwKT4wOyltLS19MD09PWEoZVtuXSxwKT91cyhlLG4sbSk6KG0rKyx1 cyhlLG0saSkpLG08PXImJihuPW0rMSkscjw9bSYmKGk9bS0xKX19KHQsZSxyfHwwLG58fHQu bGVuZ3RoLTEsaXx8ZnMpfWZ1bmN0aW9uIHVzKHQsZSxyKXt2YXIgbj10W2VdO3RbZV09dFty XSx0W3JdPW59ZnVuY3Rpb24gZnModCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOjB9ZnVuY3Rp b24gaHModCxlKXt2YXIgcj10Lmxlbmd0aDtpZihyPD0xKXJldHVyblt0XTtmb3IodmFyIG4s aSxhPVtdLG89MDtvPHI7bysrKXt2YXIgcz1UKHRbb10pOzAhPT1zJiYodFtvXS5hcmVhPU1h dGguYWJzKHMpLHZvaWQgMD09PWkmJihpPXM8MCksaT09PXM8MD8obiYmYS5wdXNoKG4pLG49 W3Rbb11dKTpuLnB1c2godFtvXSkpfWlmKG4mJmEucHVzaChuKSxlPjEpZm9yKHZhciBsPTA7 bDxhLmxlbmd0aDtsKyspYVtsXS5sZW5ndGg8PWV8fChjcyhhW2xdLGUsMSxhW2xdLmxlbmd0 aC0xLHBzKSxhW2xdPWFbbF0uc2xpY2UoMCxlKSk7cmV0dXJuIGF9ZnVuY3Rpb24gcHModCxl KXtyZXR1cm4gZS5hcmVhLXQuYXJlYX1mdW5jdGlvbiBkcyh0LGUscil7Zm9yKHZhciBuPXIu cGF0dGVybkRlcGVuZGVuY2llcyxpPSExLGE9MCxvPWU7YTxvLmxlbmd0aDthKz0xKXt2YXIg cz1vW2FdLnBhaW50LmdldCh0KyItcGF0dGVybiIpO3MuaXNDb25zdGFudCgpfHwoaT0hMCk7 dmFyIGw9cy5jb25zdGFudE9yKG51bGwpO2wmJihpPSEwLG5bbC50b109ITAsbltsLmZyb21d PSEwKX1yZXR1cm4gaX1mdW5jdGlvbiBtcyh0LGUscixuLGkpe2Zvcih2YXIgYT1pLnBhdHRl cm5EZXBlbmRlbmNpZXMsbz0wLHM9ZTtvPHMubGVuZ3RoO28rPTEpe3ZhciBsPXNbb10sYz1s LnBhaW50LmdldCh0KyItcGF0dGVybiIpLnZhbHVlO2lmKCJjb25zdGFudCIhPT1jLmtpbmQp e3ZhciB1PWMuZXZhbHVhdGUoe3pvb206bi0xfSxyLHt9LGkuYXZhaWxhYmxlSW1hZ2VzKSxm PWMuZXZhbHVhdGUoe3pvb206bn0scix7fSxpLmF2YWlsYWJsZUltYWdlcyksaD1jLmV2YWx1 YXRlKHt6b29tOm4rMX0scix7fSxpLmF2YWlsYWJsZUltYWdlcyk7dT11JiZ1Lm5hbWU/dS5u YW1lOnUsZj1mJiZmLm5hbWU/Zi5uYW1lOmYsaD1oJiZoLm5hbWU/aC5uYW1lOmgsYVt1XT0h MCxhW2ZdPSEwLGFbaF09ITAsci5wYXR0ZXJuc1tsLmlkXT17bWluOnUsbWlkOmYsbWF4Omh9 fX1yZXR1cm4gcn1Gby5kZXZpYXRpb249ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9ZSYmZS5s ZW5ndGgsYT1pP2VbMF0qcjp0Lmxlbmd0aCxvPU1hdGguYWJzKGxzKHQsMCxhLHIpKTtpZihp KWZvcih2YXIgcz0wLGw9ZS5sZW5ndGg7czxsO3MrKyl7dmFyIGM9ZVtzXSpyLHU9czxsLTE/ ZVtzKzFdKnI6dC5sZW5ndGg7by09TWF0aC5hYnMobHModCxjLHUscikpfXZhciBmPTA7Zm9y KHM9MDtzPG4ubGVuZ3RoO3MrPTMpe3ZhciBoPW5bc10qcixwPW5bcysxXSpyLGQ9bltzKzJd KnI7Zis9TWF0aC5hYnMoKHRbaF0tdFtkXSkqKHRbcCsxXS10W2grMV0pLSh0W2hdLXRbcF0p Kih0W2QrMV0tdFtoKzFdKSl9cmV0dXJuIDA9PT1vJiYwPT09Zj8wOk1hdGguYWJzKChmLW8p L28pfSxGby5mbGF0dGVuPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10WzBdWzBdLmxlbmd0aCxy PXt2ZXJ0aWNlczpbXSxob2xlczpbXSxkaW1lbnNpb25zOmV9LG49MCxpPTA7aTx0Lmxlbmd0 aDtpKyspe2Zvcih2YXIgYT0wO2E8dFtpXS5sZW5ndGg7YSsrKWZvcih2YXIgbz0wO288ZTtv Kyspci52ZXJ0aWNlcy5wdXNoKHRbaV1bYV1bb10pO2k+MCYmKG4rPXRbaS0xXS5sZW5ndGgs ci5ob2xlcy5wdXNoKG4pKX1yZXR1cm4gcn0sRG8uZGVmYXVsdD1Sbzt2YXIgZ3M9ZnVuY3Rp b24odCl7dGhpcy56b29tPXQuem9vbSx0aGlzLm92ZXJzY2FsaW5nPXQub3ZlcnNjYWxpbmcs dGhpcy5sYXllcnM9dC5sYXllcnMsdGhpcy5sYXllcklkcz10aGlzLmxheWVycy5tYXAoKGZ1 bmN0aW9uKHQpe3JldHVybiB0LmlkfSkpLHRoaXMuaW5kZXg9dC5pbmRleCx0aGlzLmhhc1Bh dHRlcm49ITEsdGhpcy5wYXR0ZXJuRmVhdHVyZXM9W10sdGhpcy5sYXlvdXRWZXJ0ZXhBcnJh eT1uZXcgemksdGhpcy5pbmRleEFycmF5PW5ldyBZaSx0aGlzLmluZGV4QXJyYXkyPW5ldyBR aSx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucz1uZXcgVWEoem8sdC5sYXllcnMsdC56b29t KSx0aGlzLnNlZ21lbnRzPW5ldyBwYSx0aGlzLnNlZ21lbnRzMj1uZXcgcGEsdGhpcy5zdGF0 ZURlcGVuZGVudExheWVySWRzPXRoaXMubGF5ZXJzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0 dXJuIHQuaXNTdGF0ZURlcGVuZGVudCgpfSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQu aWR9KSl9O2dzLnByb3RvdHlwZS5wb3B1bGF0ZT1mdW5jdGlvbih0LGUscil7dGhpcy5oYXNQ YXR0ZXJuPWRzKCJmaWxsIix0aGlzLmxheWVycyxlKTtmb3IodmFyIG49dGhpcy5sYXllcnNb MF0ubGF5b3V0LmdldCgiZmlsbC1zb3J0LWtleSIpLGk9W10sYT0wLG89dDthPG8ubGVuZ3Ro O2ErPTEpe3ZhciBzPW9bYV0sbD1zLmZlYXR1cmUsYz1zLmlkLHU9cy5pbmRleCxmPXMuc291 cmNlTGF5ZXJJbmRleCxoPXRoaXMubGF5ZXJzWzBdLl9mZWF0dXJlRmlsdGVyLm5lZWRHZW9t ZXRyeSxwPXt0eXBlOmwudHlwZSxpZDpjLHByb3BlcnRpZXM6bC5wcm9wZXJ0aWVzLGdlb21l dHJ5Omg/WWEobCk6W119O2lmKHRoaXMubGF5ZXJzWzBdLl9mZWF0dXJlRmlsdGVyLmZpbHRl cihuZXcgcGkodGhpcy56b29tKSxwLHIpKXtofHwocC5nZW9tZXRyeT1ZYShsKSk7dmFyIGQ9 bj9uLmV2YWx1YXRlKHAse30scixlLmF2YWlsYWJsZUltYWdlcyk6dm9pZCAwLG09e2lkOmMs cHJvcGVydGllczpsLnByb3BlcnRpZXMsdHlwZTpsLnR5cGUsc291cmNlTGF5ZXJJbmRleDpm LGluZGV4OnUsZ2VvbWV0cnk6cC5nZW9tZXRyeSxwYXR0ZXJuczp7fSxzb3J0S2V5OmR9O2ku cHVzaChtKX19biYmaS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0LnNvcnRLZXktZS5z b3J0S2V5fSkpO2Zvcih2YXIgZz0wLHY9aTtnPHYubGVuZ3RoO2crPTEpe3ZhciB5PXZbZ10s eD15LGI9eC5nZW9tZXRyeSxfPXguaW5kZXgsdz14LnNvdXJjZUxheWVySW5kZXg7aWYodGhp cy5oYXNQYXR0ZXJuKXt2YXIgVD1tcygiZmlsbCIsdGhpcy5sYXllcnMseSx0aGlzLnpvb20s ZSk7dGhpcy5wYXR0ZXJuRmVhdHVyZXMucHVzaChUKX1lbHNlIHRoaXMuYWRkRmVhdHVyZSh5 LGIsXyxyLHt9KTt2YXIgaz10W19dLmZlYXR1cmU7ZS5mZWF0dXJlSW5kZXguaW5zZXJ0KGss YixfLHcsdGhpcy5pbmRleCl9fSxncy5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQsZSxy KXt0aGlzLnN0YXRlRGVwZW5kZW50TGF5ZXJzLmxlbmd0aCYmdGhpcy5wcm9ncmFtQ29uZmln dXJhdGlvbnMudXBkYXRlUGFpbnRBcnJheXModCxlLHRoaXMuc3RhdGVEZXBlbmRlbnRMYXll cnMscil9LGdzLnByb3RvdHlwZS5hZGRGZWF0dXJlcz1mdW5jdGlvbih0LGUscil7Zm9yKHZh ciBuPTAsaT10aGlzLnBhdHRlcm5GZWF0dXJlcztuPGkubGVuZ3RoO24rPTEpe3ZhciBhPWlb bl07dGhpcy5hZGRGZWF0dXJlKGEsYS5nZW9tZXRyeSxhLmluZGV4LGUscil9fSxncy5wcm90 b3R5cGUuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5sYXlvdXRWZXJ0ZXhB cnJheS5sZW5ndGh9LGdzLnByb3RvdHlwZS51cGxvYWRQZW5kaW5nPWZ1bmN0aW9uKCl7cmV0 dXJuIXRoaXMudXBsb2FkZWR8fHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLm5lZWRzVXBs b2FkfSxncy5wcm90b3R5cGUudXBsb2FkPWZ1bmN0aW9uKHQpe3RoaXMudXBsb2FkZWR8fCh0 aGlzLmxheW91dFZlcnRleEJ1ZmZlcj10LmNyZWF0ZVZlcnRleEJ1ZmZlcih0aGlzLmxheW91 dFZlcnRleEFycmF5LHpvKSx0aGlzLmluZGV4QnVmZmVyPXQuY3JlYXRlSW5kZXhCdWZmZXIo dGhpcy5pbmRleEFycmF5KSx0aGlzLmluZGV4QnVmZmVyMj10LmNyZWF0ZUluZGV4QnVmZmVy KHRoaXMuaW5kZXhBcnJheTIpKSx0aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy51cGxvYWQo dCksdGhpcy51cGxvYWRlZD0hMH0sZ3MucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0 aGlzLmxheW91dFZlcnRleEJ1ZmZlciYmKHRoaXMubGF5b3V0VmVydGV4QnVmZmVyLmRlc3Ry b3koKSx0aGlzLmluZGV4QnVmZmVyLmRlc3Ryb3koKSx0aGlzLmluZGV4QnVmZmVyMi5kZXN0 cm95KCksdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMuZGVzdHJveSgpLHRoaXMuc2VnbWVu dHMuZGVzdHJveSgpLHRoaXMuc2VnbWVudHMyLmRlc3Ryb3koKSl9LGdzLnByb3RvdHlwZS5h ZGRGZWF0dXJlPWZ1bmN0aW9uKHQsZSxyLG4saSl7Zm9yKHZhciBhPTAsbz1ocyhlLDUwMCk7 YTxvLmxlbmd0aDthKz0xKXtmb3IodmFyIHM9b1thXSxsPTAsYz0wLHU9cztjPHUubGVuZ3Ro O2MrPTEpe2wrPXVbY10ubGVuZ3RofWZvcih2YXIgZj10aGlzLnNlZ21lbnRzLnByZXBhcmVT ZWdtZW50KGwsdGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSx0aGlzLmluZGV4QXJyYXkpLGg9Zi52 ZXJ0ZXhMZW5ndGgscD1bXSxkPVtdLG09MCxnPXM7bTxnLmxlbmd0aDttKz0xKXt2YXIgdj1n W21dO2lmKDAhPT12Lmxlbmd0aCl7diE9PXNbMF0mJmQucHVzaChwLmxlbmd0aC8yKTt2YXIg eT10aGlzLnNlZ21lbnRzMi5wcmVwYXJlU2VnbWVudCh2Lmxlbmd0aCx0aGlzLmxheW91dFZl cnRleEFycmF5LHRoaXMuaW5kZXhBcnJheTIpLHg9eS52ZXJ0ZXhMZW5ndGg7dGhpcy5sYXlv dXRWZXJ0ZXhBcnJheS5lbXBsYWNlQmFjayh2WzBdLngsdlswXS55KSx0aGlzLmluZGV4QXJy YXkyLmVtcGxhY2VCYWNrKHgrdi5sZW5ndGgtMSx4KSxwLnB1c2godlswXS54KSxwLnB1c2go dlswXS55KTtmb3IodmFyIGI9MTtiPHYubGVuZ3RoO2IrKyl0aGlzLmxheW91dFZlcnRleEFy cmF5LmVtcGxhY2VCYWNrKHZbYl0ueCx2W2JdLnkpLHRoaXMuaW5kZXhBcnJheTIuZW1wbGFj ZUJhY2soeCtiLTEseCtiKSxwLnB1c2godltiXS54KSxwLnB1c2godltiXS55KTt5LnZlcnRl eExlbmd0aCs9di5sZW5ndGgseS5wcmltaXRpdmVMZW5ndGgrPXYubGVuZ3RofX1mb3IodmFy IF89RG8ocCxkKSx3PTA7dzxfLmxlbmd0aDt3Kz0zKXRoaXMuaW5kZXhBcnJheS5lbXBsYWNl QmFjayhoK19bd10saCtfW3crMV0saCtfW3crMl0pO2YudmVydGV4TGVuZ3RoKz1sLGYucHJp bWl0aXZlTGVuZ3RoKz1fLmxlbmd0aC8zfXRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnBv cHVsYXRlUGFpbnRBcnJheXModGhpcy5sYXlvdXRWZXJ0ZXhBcnJheS5sZW5ndGgsdCxyLGks bil9LE5uKCJGaWxsQnVja2V0Iixncyx7b21pdDpbImxheWVycyIsInBhdHRlcm5GZWF0dXJl cyJdfSk7dmFyIHZzPW5ldyBTaSh7ImZpbGwtc29ydC1rZXkiOm5ldyBUaShMdC5sYXlvdXRf ZmlsbFsiZmlsbC1zb3J0LWtleSJdKX0pLHlzPXtwYWludDpuZXcgU2koeyJmaWxsLWFudGlh bGlhcyI6bmV3IHdpKEx0LnBhaW50X2ZpbGxbImZpbGwtYW50aWFsaWFzIl0pLCJmaWxsLW9w YWNpdHkiOm5ldyBUaShMdC5wYWludF9maWxsWyJmaWxsLW9wYWNpdHkiXSksImZpbGwtY29s b3IiOm5ldyBUaShMdC5wYWludF9maWxsWyJmaWxsLWNvbG9yIl0pLCJmaWxsLW91dGxpbmUt Y29sb3IiOm5ldyBUaShMdC5wYWludF9maWxsWyJmaWxsLW91dGxpbmUtY29sb3IiXSksImZp bGwtdHJhbnNsYXRlIjpuZXcgd2koTHQucGFpbnRfZmlsbFsiZmlsbC10cmFuc2xhdGUiXSks ImZpbGwtdHJhbnNsYXRlLWFuY2hvciI6bmV3IHdpKEx0LnBhaW50X2ZpbGxbImZpbGwtdHJh bnNsYXRlLWFuY2hvciJdKSwiZmlsbC1wYXR0ZXJuIjpuZXcga2koTHQucGFpbnRfZmlsbFsi ZmlsbC1wYXR0ZXJuIl0pfSksbGF5b3V0OnZzfSx4cz1mdW5jdGlvbih0KXtmdW5jdGlvbiBl KGUpe3QuY2FsbCh0aGlzLGUseXMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90 b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3Ry dWN0b3I9ZSxlLnByb3RvdHlwZS5yZWNhbGN1bGF0ZT1mdW5jdGlvbihlLHIpe3QucHJvdG90 eXBlLnJlY2FsY3VsYXRlLmNhbGwodGhpcyxlLHIpO3ZhciBuPXRoaXMucGFpbnQuX3ZhbHVl c1siZmlsbC1vdXRsaW5lLWNvbG9yIl07ImNvbnN0YW50Ij09PW4udmFsdWUua2luZCYmdm9p ZCAwPT09bi52YWx1ZS52YWx1ZSYmKHRoaXMucGFpbnQuX3ZhbHVlc1siZmlsbC1vdXRsaW5l LWNvbG9yIl09dGhpcy5wYWludC5fdmFsdWVzWyJmaWxsLWNvbG9yIl0pfSxlLnByb3RvdHlw ZS5jcmVhdGVCdWNrZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBncyh0KX0sZS5wcm90b3R5 cGUucXVlcnlSYWRpdXM9ZnVuY3Rpb24oKXtyZXR1cm4gc28odGhpcy5wYWludC5nZXQoImZp bGwtdHJhbnNsYXRlIikpfSxlLnByb3RvdHlwZS5xdWVyeUludGVyc2VjdHNGZWF0dXJlPWZ1 bmN0aW9uKHQsZSxyLG4saSxhLG8pe3JldHVybiBLYShsbyh0LHRoaXMucGFpbnQuZ2V0KCJm aWxsLXRyYW5zbGF0ZSIpLHRoaXMucGFpbnQuZ2V0KCJmaWxsLXRyYW5zbGF0ZS1hbmNob3Ii KSxhLmFuZ2xlLG8pLG4pfSxlLnByb3RvdHlwZS5pc1RpbGVDbGlwcGVkPWZ1bmN0aW9uKCl7 cmV0dXJuITB9LGV9KEVpKSxicz1JaShbe25hbWU6ImFfcG9zIixjb21wb25lbnRzOjIsdHlw ZToiSW50MTYifSx7bmFtZToiYV9ub3JtYWxfZWQiLGNvbXBvbmVudHM6NCx0eXBlOiJJbnQx NiJ9XSw0KS5tZW1iZXJzLF9zPXdzO2Z1bmN0aW9uIHdzKHQsZSxyLG4saSl7dGhpcy5wcm9w ZXJ0aWVzPXt9LHRoaXMuZXh0ZW50PXIsdGhpcy50eXBlPTAsdGhpcy5fcGJmPXQsdGhpcy5f Z2VvbWV0cnk9LTEsdGhpcy5fa2V5cz1uLHRoaXMuX3ZhbHVlcz1pLHQucmVhZEZpZWxkcyhU cyx0aGlzLGUpfWZ1bmN0aW9uIFRzKHQsZSxyKXsxPT10P2UuaWQ9ci5yZWFkVmFyaW50KCk6 Mj09dD9mdW5jdGlvbih0LGUpe3ZhciByPXQucmVhZFZhcmludCgpK3QucG9zO2Zvcig7dC5w b3M8cjspe3ZhciBuPWUuX2tleXNbdC5yZWFkVmFyaW50KCldLGk9ZS5fdmFsdWVzW3QucmVh ZFZhcmludCgpXTtlLnByb3BlcnRpZXNbbl09aX19KHIsZSk6Mz09dD9lLnR5cGU9ci5yZWFk VmFyaW50KCk6ND09dCYmKGUuX2dlb21ldHJ5PXIucG9zKX1mdW5jdGlvbiBrcyh0KXtmb3Io dmFyIGUscixuPTAsaT0wLGE9dC5sZW5ndGgsbz1hLTE7aTxhO289aSsrKWU9dFtpXSxuKz0o KHI9dFtvXSkueC1lLngpKihlLnkrci55KTtyZXR1cm4gbn13cy50eXBlcz1bIlVua25vd24i LCJQb2ludCIsIkxpbmVTdHJpbmciLCJQb2x5Z29uIl0sd3MucHJvdG90eXBlLmxvYWRHZW9t ZXRyeT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3BiZjt0LnBvcz10aGlzLl9nZW9tZXRyeTtm b3IodmFyIGUscj10LnJlYWRWYXJpbnQoKSt0LnBvcyxuPTEsYT0wLG89MCxzPTAsbD1bXTt0 LnBvczxyOyl7aWYoYTw9MCl7dmFyIGM9dC5yZWFkVmFyaW50KCk7bj03JmMsYT1jPj4zfWlm KGEtLSwxPT09bnx8Mj09PW4pbys9dC5yZWFkU1ZhcmludCgpLHMrPXQucmVhZFNWYXJpbnQo KSwxPT09biYmKGUmJmwucHVzaChlKSxlPVtdKSxlLnB1c2gobmV3IGkobyxzKSk7ZWxzZXtp Zig3IT09bil0aHJvdyBuZXcgRXJyb3IoInVua25vd24gY29tbWFuZCAiK24pO2UmJmUucHVz aChlWzBdLmNsb25lKCkpfX1yZXR1cm4gZSYmbC5wdXNoKGUpLGx9LHdzLnByb3RvdHlwZS5i Ym94PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fcGJmO3QucG9zPXRoaXMuX2dlb21ldHJ5O2Zv cih2YXIgZT10LnJlYWRWYXJpbnQoKSt0LnBvcyxyPTEsbj0wLGk9MCxhPTAsbz0xLzAscz0t MS8wLGw9MS8wLGM9LTEvMDt0LnBvczxlOyl7aWYobjw9MCl7dmFyIHU9dC5yZWFkVmFyaW50 KCk7cj03JnUsbj11Pj4zfWlmKG4tLSwxPT09cnx8Mj09PXIpKGkrPXQucmVhZFNWYXJpbnQo KSk8byYmKG89aSksaT5zJiYocz1pKSwoYSs9dC5yZWFkU1ZhcmludCgpKTxsJiYobD1hKSxh PmMmJihjPWEpO2Vsc2UgaWYoNyE9PXIpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIGNvbW1h bmQgIityKX1yZXR1cm5bbyxsLHMsY119LHdzLnByb3RvdHlwZS50b0dlb0pTT049ZnVuY3Rp b24odCxlLHIpe3ZhciBuLGksYT10aGlzLmV4dGVudCpNYXRoLnBvdygyLHIpLG89dGhpcy5l eHRlbnQqdCxzPXRoaXMuZXh0ZW50KmUsbD10aGlzLmxvYWRHZW9tZXRyeSgpLGM9d3MudHlw ZXNbdGhpcy50eXBlXTtmdW5jdGlvbiB1KHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsr KXt2YXIgcj10W2VdLG49MTgwLTM2MCooci55K3MpL2E7dFtlXT1bMzYwKihyLngrbykvYS0x ODAsMzYwL01hdGguUEkqTWF0aC5hdGFuKE1hdGguZXhwKG4qTWF0aC5QSS8xODApKS05MF19 fXN3aXRjaCh0aGlzLnR5cGUpe2Nhc2UgMTp2YXIgZj1bXTtmb3Iobj0wO248bC5sZW5ndGg7 bisrKWZbbl09bFtuXVswXTt1KGw9Zik7YnJlYWs7Y2FzZSAyOmZvcihuPTA7bjxsLmxlbmd0 aDtuKyspdShsW25dKTticmVhaztjYXNlIDM6Zm9yKGw9ZnVuY3Rpb24odCl7dmFyIGU9dC5s ZW5ndGg7aWYoZTw9MSlyZXR1cm5bdF07Zm9yKHZhciByLG4saT1bXSxhPTA7YTxlO2ErKyl7 dmFyIG89a3ModFthXSk7MCE9PW8mJih2b2lkIDA9PT1uJiYobj1vPDApLG49PT1vPDA/KHIm JmkucHVzaChyKSxyPVt0W2FdXSk6ci5wdXNoKHRbYV0pKX1yJiZpLnB1c2gocik7cmV0dXJu IGl9KGwpLG49MDtuPGwubGVuZ3RoO24rKylmb3IoaT0wO2k8bFtuXS5sZW5ndGg7aSsrKXUo bFtuXVtpXSl9MT09PWwubGVuZ3RoP2w9bFswXTpjPSJNdWx0aSIrYzt2YXIgaD17dHlwZToi RmVhdHVyZSIsZ2VvbWV0cnk6e3R5cGU6Yyxjb29yZGluYXRlczpsfSxwcm9wZXJ0aWVzOnRo aXMucHJvcGVydGllc307cmV0dXJuImlkImluIHRoaXMmJihoLmlkPXRoaXMuaWQpLGh9O3Zh ciBBcz1NcztmdW5jdGlvbiBNcyh0LGUpe3RoaXMudmVyc2lvbj0xLHRoaXMubmFtZT1udWxs LHRoaXMuZXh0ZW50PTQwOTYsdGhpcy5sZW5ndGg9MCx0aGlzLl9wYmY9dCx0aGlzLl9rZXlz PVtdLHRoaXMuX3ZhbHVlcz1bXSx0aGlzLl9mZWF0dXJlcz1bXSx0LnJlYWRGaWVsZHMoU3Ms dGhpcyxlKSx0aGlzLmxlbmd0aD10aGlzLl9mZWF0dXJlcy5sZW5ndGh9ZnVuY3Rpb24gU3Mo dCxlLHIpezE1PT09dD9lLnZlcnNpb249ci5yZWFkVmFyaW50KCk6MT09PXQ/ZS5uYW1lPXIu cmVhZFN0cmluZygpOjU9PT10P2UuZXh0ZW50PXIucmVhZFZhcmludCgpOjI9PT10P2UuX2Zl YXR1cmVzLnB1c2goci5wb3MpOjM9PT10P2UuX2tleXMucHVzaChyLnJlYWRTdHJpbmcoKSk6 ND09PXQmJmUuX3ZhbHVlcy5wdXNoKGZ1bmN0aW9uKHQpe3ZhciBlPW51bGwscj10LnJlYWRW YXJpbnQoKSt0LnBvcztmb3IoO3QucG9zPHI7KXt2YXIgbj10LnJlYWRWYXJpbnQoKT4+Mztl PTE9PT1uP3QucmVhZFN0cmluZygpOjI9PT1uP3QucmVhZEZsb2F0KCk6Mz09PW4/dC5yZWFk RG91YmxlKCk6ND09PW4/dC5yZWFkVmFyaW50NjQoKTo1PT09bj90LnJlYWRWYXJpbnQoKTo2 PT09bj90LnJlYWRTVmFyaW50KCk6Nz09PW4/dC5yZWFkQm9vbGVhbigpOm51bGx9cmV0dXJu IGV9KHIpKX1mdW5jdGlvbiBFcyh0LGUscil7aWYoMz09PXQpe3ZhciBuPW5ldyBBcyhyLHIu cmVhZFZhcmludCgpK3IucG9zKTtuLmxlbmd0aCYmKGVbbi5uYW1lXT1uKX19TXMucHJvdG90 eXBlLmZlYXR1cmU9ZnVuY3Rpb24odCl7aWYodDwwfHx0Pj10aGlzLl9mZWF0dXJlcy5sZW5n dGgpdGhyb3cgbmV3IEVycm9yKCJmZWF0dXJlIGluZGV4IG91dCBvZiBib3VuZHMiKTt0aGlz Ll9wYmYucG9zPXRoaXMuX2ZlYXR1cmVzW3RdO3ZhciBlPXRoaXMuX3BiZi5yZWFkVmFyaW50 KCkrdGhpcy5fcGJmLnBvcztyZXR1cm4gbmV3IF9zKHRoaXMuX3BiZixlLHRoaXMuZXh0ZW50 LHRoaXMuX2tleXMsdGhpcy5fdmFsdWVzKX07dmFyIExzPXtWZWN0b3JUaWxlOmZ1bmN0aW9u KHQsZSl7dGhpcy5sYXllcnM9dC5yZWFkRmllbGRzKEVzLHt9LGUpfSxWZWN0b3JUaWxlRmVh dHVyZTpfcyxWZWN0b3JUaWxlTGF5ZXI6QXN9LENzPUxzLlZlY3RvclRpbGVGZWF0dXJlLnR5 cGVzLFBzPU1hdGgucG93KDIsMTMpO2Z1bmN0aW9uIElzKHQsZSxyLG4saSxhLG8scyl7dC5l bXBsYWNlQmFjayhlLHIsMipNYXRoLmZsb29yKG4qUHMpK28saSpQcyoyLGEqUHMqMixNYXRo LnJvdW5kKHMpKX12YXIgT3M9ZnVuY3Rpb24odCl7dGhpcy56b29tPXQuem9vbSx0aGlzLm92 ZXJzY2FsaW5nPXQub3ZlcnNjYWxpbmcsdGhpcy5sYXllcnM9dC5sYXllcnMsdGhpcy5sYXll cklkcz10aGlzLmxheWVycy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkfSkpLHRoaXMu aW5kZXg9dC5pbmRleCx0aGlzLmhhc1BhdHRlcm49ITEsdGhpcy5sYXlvdXRWZXJ0ZXhBcnJh eT1uZXcgUmksdGhpcy5pbmRleEFycmF5PW5ldyBZaSx0aGlzLnByb2dyYW1Db25maWd1cmF0 aW9ucz1uZXcgVWEoYnMsdC5sYXllcnMsdC56b29tKSx0aGlzLnNlZ21lbnRzPW5ldyBwYSx0 aGlzLnN0YXRlRGVwZW5kZW50TGF5ZXJJZHM9dGhpcy5sYXllcnMuZmlsdGVyKChmdW5jdGlv bih0KXtyZXR1cm4gdC5pc1N0YXRlRGVwZW5kZW50KCl9KSkubWFwKChmdW5jdGlvbih0KXty ZXR1cm4gdC5pZH0pKX07ZnVuY3Rpb24genModCxlKXtyZXR1cm4gdC54PT09ZS54JiYodC54 PDB8fHQueD44MTkyKXx8dC55PT09ZS55JiYodC55PDB8fHQueT44MTkyKX1mdW5jdGlvbiBE cyh0KXtyZXR1cm4gdC5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQueDwwfSkpfHx0LmV2 ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdC54PjgxOTJ9KSl8fHQuZXZlcnkoKGZ1bmN0aW9u KHQpe3JldHVybiB0Lnk8MH0pKXx8dC5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQueT44 MTkyfSkpfU9zLnByb3RvdHlwZS5wb3B1bGF0ZT1mdW5jdGlvbih0LGUscil7dGhpcy5mZWF0 dXJlcz1bXSx0aGlzLmhhc1BhdHRlcm49ZHMoImZpbGwtZXh0cnVzaW9uIix0aGlzLmxheWVy cyxlKTtmb3IodmFyIG49MCxpPXQ7bjxpLmxlbmd0aDtuKz0xKXt2YXIgYT1pW25dLG89YS5m ZWF0dXJlLHM9YS5pZCxsPWEuaW5kZXgsYz1hLnNvdXJjZUxheWVySW5kZXgsdT10aGlzLmxh eWVyc1swXS5fZmVhdHVyZUZpbHRlci5uZWVkR2VvbWV0cnksZj17dHlwZTpvLnR5cGUsaWQ6 cyxwcm9wZXJ0aWVzOm8ucHJvcGVydGllcyxnZW9tZXRyeTp1P1lhKG8pOltdfTtpZih0aGlz LmxheWVyc1swXS5fZmVhdHVyZUZpbHRlci5maWx0ZXIobmV3IHBpKHRoaXMuem9vbSksZixy KSl7dmFyIGg9e2lkOnMsc291cmNlTGF5ZXJJbmRleDpjLGluZGV4OmwsZ2VvbWV0cnk6dT9m Lmdlb21ldHJ5OllhKG8pLHByb3BlcnRpZXM6by5wcm9wZXJ0aWVzLHR5cGU6by50eXBlLHBh dHRlcm5zOnt9fTt2b2lkIDAhPT1vLmlkJiYoaC5pZD1vLmlkKSx0aGlzLmhhc1BhdHRlcm4/ dGhpcy5mZWF0dXJlcy5wdXNoKG1zKCJmaWxsLWV4dHJ1c2lvbiIsdGhpcy5sYXllcnMsaCx0 aGlzLnpvb20sZSkpOnRoaXMuYWRkRmVhdHVyZShoLGguZ2VvbWV0cnksbCxyLHt9KSxlLmZl YXR1cmVJbmRleC5pbnNlcnQobyxoLmdlb21ldHJ5LGwsYyx0aGlzLmluZGV4LCEwKX19fSxP cy5wcm90b3R5cGUuYWRkRmVhdHVyZXM9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0wLGk9 dGhpcy5mZWF0dXJlcztuPGkubGVuZ3RoO24rPTEpe3ZhciBhPWlbbl0sbz1hLmdlb21ldHJ5 O3RoaXMuYWRkRmVhdHVyZShhLG8sYS5pbmRleCxlLHIpfX0sT3MucHJvdG90eXBlLnVwZGF0 ZT1mdW5jdGlvbih0LGUscil7dGhpcy5zdGF0ZURlcGVuZGVudExheWVycy5sZW5ndGgmJnRo aXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnVwZGF0ZVBhaW50QXJyYXlzKHQsZSx0aGlzLnN0 YXRlRGVwZW5kZW50TGF5ZXJzLHIpfSxPcy5wcm90b3R5cGUuaXNFbXB0eT1mdW5jdGlvbigp e3JldHVybiAwPT09dGhpcy5sYXlvdXRWZXJ0ZXhBcnJheS5sZW5ndGh9LE9zLnByb3RvdHlw ZS51cGxvYWRQZW5kaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMudXBsb2FkZWR8fHRoaXMu cHJvZ3JhbUNvbmZpZ3VyYXRpb25zLm5lZWRzVXBsb2FkfSxPcy5wcm90b3R5cGUudXBsb2Fk PWZ1bmN0aW9uKHQpe3RoaXMudXBsb2FkZWR8fCh0aGlzLmxheW91dFZlcnRleEJ1ZmZlcj10 LmNyZWF0ZVZlcnRleEJ1ZmZlcih0aGlzLmxheW91dFZlcnRleEFycmF5LGJzKSx0aGlzLmlu ZGV4QnVmZmVyPXQuY3JlYXRlSW5kZXhCdWZmZXIodGhpcy5pbmRleEFycmF5KSksdGhpcy5w cm9ncmFtQ29uZmlndXJhdGlvbnMudXBsb2FkKHQpLHRoaXMudXBsb2FkZWQ9ITB9LE9zLnBy b3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXImJih0 aGlzLmxheW91dFZlcnRleEJ1ZmZlci5kZXN0cm95KCksdGhpcy5pbmRleEJ1ZmZlci5kZXN0 cm95KCksdGhpcy5wcm9ncmFtQ29uZmlndXJhdGlvbnMuZGVzdHJveSgpLHRoaXMuc2VnbWVu dHMuZGVzdHJveSgpKX0sT3MucHJvdG90eXBlLmFkZEZlYXR1cmU9ZnVuY3Rpb24odCxlLHIs bixpKXtmb3IodmFyIGE9MCxvPWhzKGUsNTAwKTthPG8ubGVuZ3RoO2ErPTEpe2Zvcih2YXIg cz1vW2FdLGw9MCxjPTAsdT1zO2M8dS5sZW5ndGg7Yys9MSl7bCs9dVtjXS5sZW5ndGh9Zm9y KHZhciBmPXRoaXMuc2VnbWVudHMucHJlcGFyZVNlZ21lbnQoNCx0aGlzLmxheW91dFZlcnRl eEFycmF5LHRoaXMuaW5kZXhBcnJheSksaD0wLHA9cztoPHAubGVuZ3RoO2grPTEpe3ZhciBk PXBbaF07aWYoMCE9PWQubGVuZ3RoJiYhRHMoZCkpZm9yKHZhciBtPTAsZz0wO2c8ZC5sZW5n dGg7ZysrKXt2YXIgdj1kW2ddO2lmKGc+PTEpe3ZhciB5PWRbZy0xXTtpZighenModix5KSl7 Zi52ZXJ0ZXhMZW5ndGgrND5wYS5NQVhfVkVSVEVYX0FSUkFZX0xFTkdUSCYmKGY9dGhpcy5z ZWdtZW50cy5wcmVwYXJlU2VnbWVudCg0LHRoaXMubGF5b3V0VmVydGV4QXJyYXksdGhpcy5p bmRleEFycmF5KSk7dmFyIHg9di5zdWIoeSkuX3BlcnAoKS5fdW5pdCgpLGI9eS5kaXN0KHYp O20rYj4zMjc2OCYmKG09MCksSXModGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSx2Lngsdi55LHgu eCx4LnksMCwwLG0pLElzKHRoaXMubGF5b3V0VmVydGV4QXJyYXksdi54LHYueSx4LngseC55 LDAsMSxtKSxtKz1iLElzKHRoaXMubGF5b3V0VmVydGV4QXJyYXkseS54LHkueSx4LngseC55 LDAsMCxtKSxJcyh0aGlzLmxheW91dFZlcnRleEFycmF5LHkueCx5LnkseC54LHgueSwwLDEs bSk7dmFyIF89Zi52ZXJ0ZXhMZW5ndGg7dGhpcy5pbmRleEFycmF5LmVtcGxhY2VCYWNrKF8s XysyLF8rMSksdGhpcy5pbmRleEFycmF5LmVtcGxhY2VCYWNrKF8rMSxfKzIsXyszKSxmLnZl cnRleExlbmd0aCs9NCxmLnByaW1pdGl2ZUxlbmd0aCs9Mn19fX1pZihmLnZlcnRleExlbmd0 aCtsPnBhLk1BWF9WRVJURVhfQVJSQVlfTEVOR1RIJiYoZj10aGlzLnNlZ21lbnRzLnByZXBh cmVTZWdtZW50KGwsdGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSx0aGlzLmluZGV4QXJyYXkpKSwi UG9seWdvbiI9PT1Dc1t0LnR5cGVdKXtmb3IodmFyIHc9W10sVD1bXSxrPWYudmVydGV4TGVu Z3RoLEE9MCxNPXM7QTxNLmxlbmd0aDtBKz0xKXt2YXIgUz1NW0FdO2lmKDAhPT1TLmxlbmd0 aCl7UyE9PXNbMF0mJlQucHVzaCh3Lmxlbmd0aC8yKTtmb3IodmFyIEU9MDtFPFMubGVuZ3Ro O0UrKyl7dmFyIEw9U1tFXTtJcyh0aGlzLmxheW91dFZlcnRleEFycmF5LEwueCxMLnksMCww LDEsMSwwKSx3LnB1c2goTC54KSx3LnB1c2goTC55KX19fWZvcih2YXIgQz1Ebyh3LFQpLFA9 MDtQPEMubGVuZ3RoO1ArPTMpdGhpcy5pbmRleEFycmF5LmVtcGxhY2VCYWNrKGsrQ1tQXSxr K0NbUCsyXSxrK0NbUCsxXSk7Zi5wcmltaXRpdmVMZW5ndGgrPUMubGVuZ3RoLzMsZi52ZXJ0 ZXhMZW5ndGgrPWx9fXRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnBvcHVsYXRlUGFpbnRB cnJheXModGhpcy5sYXlvdXRWZXJ0ZXhBcnJheS5sZW5ndGgsdCxyLGksbil9LE5uKCJGaWxs RXh0cnVzaW9uQnVja2V0IixPcyx7b21pdDpbImxheWVycyIsImZlYXR1cmVzIl19KTt2YXIg UnM9e3BhaW50Om5ldyBTaSh7ImZpbGwtZXh0cnVzaW9uLW9wYWNpdHkiOm5ldyB3aShMdFsi cGFpbnRfZmlsbC1leHRydXNpb24iXVsiZmlsbC1leHRydXNpb24tb3BhY2l0eSJdKSwiZmls bC1leHRydXNpb24tY29sb3IiOm5ldyBUaShMdFsicGFpbnRfZmlsbC1leHRydXNpb24iXVsi ZmlsbC1leHRydXNpb24tY29sb3IiXSksImZpbGwtZXh0cnVzaW9uLXRyYW5zbGF0ZSI6bmV3 IHdpKEx0WyJwYWludF9maWxsLWV4dHJ1c2lvbiJdWyJmaWxsLWV4dHJ1c2lvbi10cmFuc2xh dGUiXSksImZpbGwtZXh0cnVzaW9uLXRyYW5zbGF0ZS1hbmNob3IiOm5ldyB3aShMdFsicGFp bnRfZmlsbC1leHRydXNpb24iXVsiZmlsbC1leHRydXNpb24tdHJhbnNsYXRlLWFuY2hvciJd KSwiZmlsbC1leHRydXNpb24tcGF0dGVybiI6bmV3IGtpKEx0WyJwYWludF9maWxsLWV4dHJ1 c2lvbiJdWyJmaWxsLWV4dHJ1c2lvbi1wYXR0ZXJuIl0pLCJmaWxsLWV4dHJ1c2lvbi1oZWln aHQiOm5ldyBUaShMdFsicGFpbnRfZmlsbC1leHRydXNpb24iXVsiZmlsbC1leHRydXNpb24t aGVpZ2h0Il0pLCJmaWxsLWV4dHJ1c2lvbi1iYXNlIjpuZXcgVGkoTHRbInBhaW50X2ZpbGwt ZXh0cnVzaW9uIl1bImZpbGwtZXh0cnVzaW9uLWJhc2UiXSksImZpbGwtZXh0cnVzaW9uLXZl cnRpY2FsLWdyYWRpZW50IjpuZXcgd2koTHRbInBhaW50X2ZpbGwtZXh0cnVzaW9uIl1bImZp bGwtZXh0cnVzaW9uLXZlcnRpY2FsLWdyYWRpZW50Il0pfSl9LEZzPWZ1bmN0aW9uKHQpe2Z1 bmN0aW9uIGUoZSl7dC5jYWxsKHRoaXMsZSxScyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10 KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlw ZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmNyZWF0ZUJ1Y2tldD1mdW5jdGlvbih0KXty ZXR1cm4gbmV3IE9zKHQpfSxlLnByb3RvdHlwZS5xdWVyeVJhZGl1cz1mdW5jdGlvbigpe3Jl dHVybiBzbyh0aGlzLnBhaW50LmdldCgiZmlsbC1leHRydXNpb24tdHJhbnNsYXRlIikpfSxl LnByb3RvdHlwZS5pczNEPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGUucHJvdG90eXBlLnF1ZXJ5 SW50ZXJzZWN0c0ZlYXR1cmU9ZnVuY3Rpb24odCxlLHIsbixhLG8scyxsKXt2YXIgYz1sbyh0 LHRoaXMucGFpbnQuZ2V0KCJmaWxsLWV4dHJ1c2lvbi10cmFuc2xhdGUiKSx0aGlzLnBhaW50 LmdldCgiZmlsbC1leHRydXNpb24tdHJhbnNsYXRlLWFuY2hvciIpLG8uYW5nbGUscyksdT10 aGlzLnBhaW50LmdldCgiZmlsbC1leHRydXNpb24taGVpZ2h0IikuZXZhbHVhdGUoZSxyKSxm PXRoaXMucGFpbnQuZ2V0KCJmaWxsLWV4dHJ1c2lvbi1iYXNlIikuZXZhbHVhdGUoZSxyKSxo PWZ1bmN0aW9uKHQsZSxyLG4pe2Zvcih2YXIgYT1bXSxvPTAscz10O288cy5sZW5ndGg7bys9 MSl7dmFyIGw9c1tvXSxjPVtsLngsbC55LG4sMV07eG8oYyxjLGUpLGEucHVzaChuZXcgaShj WzBdL2NbM10sY1sxXS9jWzNdKSl9cmV0dXJuIGF9KGMsbCwwLDApLHA9ZnVuY3Rpb24odCxl LHIsbil7Zm9yKHZhciBhPVtdLG89W10scz1uWzhdKmUsbD1uWzldKmUsYz1uWzEwXSplLHU9 blsxMV0qZSxmPW5bOF0qcixoPW5bOV0qcixwPW5bMTBdKnIsZD1uWzExXSpyLG09MCxnPXQ7 bTxnLmxlbmd0aDttKz0xKXtmb3IodmFyIHY9Z1ttXSx5PVtdLHg9W10sYj0wLF89djtiPF8u bGVuZ3RoO2IrPTEpe3ZhciB3PV9bYl0sVD13Lngsaz13LnksQT1uWzBdKlQrbls0XSprK25b MTJdLE09blsxXSpUK25bNV0qaytuWzEzXSxTPW5bMl0qVCtuWzZdKmsrblsxNF0sRT1uWzNd KlQrbls3XSprK25bMTVdLEw9UytjLEM9RSt1LFA9QStmLEk9TStoLE89UytwLHo9RStkLEQ9 bmV3IGkoKEErcykvQywoTStsKS9DKTtELno9TC9DLHkucHVzaChEKTt2YXIgUj1uZXcgaShQ L3osSS96KTtSLno9Ty96LHgucHVzaChSKX1hLnB1c2goeSksby5wdXNoKHgpfXJldHVyblth LG9dfShuLGYsdSxsKTtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3ZhciBuPTEvMDtLYShyLGUp JiYobj1OcyhyLGVbMF0pKTtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKylmb3IodmFyIGE9 ZVtpXSxvPXRbaV0scz0wO3M8YS5sZW5ndGgtMTtzKyspe3ZhciBsPWFbc10sYz1hW3MrMV0s dT1vW3NdLGY9b1tzKzFdLGg9W2wsYyxmLHUsbF07WmEocixoKSYmKG49TWF0aC5taW4obixO cyhyLGgpKSl9cmV0dXJuIG4hPT0xLzAmJm59KHBbMF0scFsxXSxoKX0sZX0oRWkpO2Z1bmN0 aW9uIEJzKHQsZSl7cmV0dXJuIHQueCplLngrdC55KmUueX1mdW5jdGlvbiBOcyh0LGUpe2lm KDE9PT10Lmxlbmd0aCl7Zm9yKHZhciByLG49MCxpPWVbbisrXTshcnx8aS5lcXVhbHMocik7 KWlmKCEocj1lW24rK10pKXJldHVybiAxLzA7Zm9yKDtuPGUubGVuZ3RoO24rKyl7dmFyIGE9 ZVtuXSxvPXRbMF0scz1yLnN1YihpKSxsPWEuc3ViKGkpLGM9by5zdWIoaSksdT1CcyhzLHMp LGY9QnMocyxsKSxoPUJzKGwsbCkscD1CcyhjLHMpLGQ9QnMoYyxsKSxtPXUqaC1mKmYsZz0o aCpwLWYqZCkvbSx2PSh1KmQtZipwKS9tLHk9MS1nLXYseD1pLnoqeStyLnoqZythLnoqdjtp Zihpc0Zpbml0ZSh4KSlyZXR1cm4geH1yZXR1cm4gMS8wfWZvcih2YXIgYj0xLzAsXz0wLHc9 ZTtfPHcubGVuZ3RoO18rPTEpe3ZhciBUPXdbX107Yj1NYXRoLm1pbihiLFQueil9cmV0dXJu IGJ9dmFyIGpzPUlpKFt7bmFtZToiYV9wb3Nfbm9ybWFsIixjb21wb25lbnRzOjIsdHlwZToi SW50MTYifSx7bmFtZToiYV9kYXRhIixjb21wb25lbnRzOjQsdHlwZToiVWludDgifV0sNCku bWVtYmVycyxVcz1Mcy5WZWN0b3JUaWxlRmVhdHVyZS50eXBlcyxWcz1NYXRoLmNvcyhNYXRo LlBJLzE4MCozNy41KSxIcz1NYXRoLnBvdygyLDE0KS8uNSxxcz1mdW5jdGlvbih0KXt0aGlz Lnpvb209dC56b29tLHRoaXMub3ZlcnNjYWxpbmc9dC5vdmVyc2NhbGluZyx0aGlzLmxheWVy cz10LmxheWVycyx0aGlzLmxheWVySWRzPXRoaXMubGF5ZXJzLm1hcCgoZnVuY3Rpb24odCl7 cmV0dXJuIHQuaWR9KSksdGhpcy5pbmRleD10LmluZGV4LHRoaXMuaGFzUGF0dGVybj0hMSx0 aGlzLnBhdHRlcm5GZWF0dXJlcz1bXSx0aGlzLmxheW91dFZlcnRleEFycmF5PW5ldyBGaSx0 aGlzLmluZGV4QXJyYXk9bmV3IFlpLHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zPW5ldyBV YShqcyx0LmxheWVycyx0Lnpvb20pLHRoaXMuc2VnbWVudHM9bmV3IHBhLHRoaXMuc3RhdGVE ZXBlbmRlbnRMYXllcklkcz10aGlzLmxheWVycy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVy biB0LmlzU3RhdGVEZXBlbmRlbnQoKX0pKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmlk fSkpfTtxcy5wcm90b3R5cGUucG9wdWxhdGU9ZnVuY3Rpb24odCxlLHIpe3RoaXMuaGFzUGF0 dGVybj1kcygibGluZSIsdGhpcy5sYXllcnMsZSk7Zm9yKHZhciBuPXRoaXMubGF5ZXJzWzBd LmxheW91dC5nZXQoImxpbmUtc29ydC1rZXkiKSxpPVtdLGE9MCxvPXQ7YTxvLmxlbmd0aDth Kz0xKXt2YXIgcz1vW2FdLGw9cy5mZWF0dXJlLGM9cy5pZCx1PXMuaW5kZXgsZj1zLnNvdXJj ZUxheWVySW5kZXgsaD10aGlzLmxheWVyc1swXS5fZmVhdHVyZUZpbHRlci5uZWVkR2VvbWV0 cnkscD17dHlwZTpsLnR5cGUsaWQ6Yyxwcm9wZXJ0aWVzOmwucHJvcGVydGllcyxnZW9tZXRy eTpoP1lhKGwpOltdfTtpZih0aGlzLmxheWVyc1swXS5fZmVhdHVyZUZpbHRlci5maWx0ZXIo bmV3IHBpKHRoaXMuem9vbSkscCxyKSl7aHx8KHAuZ2VvbWV0cnk9WWEobCkpO3ZhciBkPW4/ bi5ldmFsdWF0ZShwLHt9LHIpOnZvaWQgMCxtPXtpZDpjLHByb3BlcnRpZXM6bC5wcm9wZXJ0 aWVzLHR5cGU6bC50eXBlLHNvdXJjZUxheWVySW5kZXg6ZixpbmRleDp1LGdlb21ldHJ5OnAu Z2VvbWV0cnkscGF0dGVybnM6e30sc29ydEtleTpkfTtpLnB1c2gobSl9fW4mJmkuc29ydCgo ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5zb3J0S2V5LWUuc29ydEtleX0pKTtmb3IodmFyIGc9 MCx2PWk7Zzx2Lmxlbmd0aDtnKz0xKXt2YXIgeT12W2ddLHg9eSxiPXguZ2VvbWV0cnksXz14 LmluZGV4LHc9eC5zb3VyY2VMYXllckluZGV4O2lmKHRoaXMuaGFzUGF0dGVybil7dmFyIFQ9 bXMoImxpbmUiLHRoaXMubGF5ZXJzLHksdGhpcy56b29tLGUpO3RoaXMucGF0dGVybkZlYXR1 cmVzLnB1c2goVCl9ZWxzZSB0aGlzLmFkZEZlYXR1cmUoeSxiLF8scix7fSk7dmFyIGs9dFtf XS5mZWF0dXJlO2UuZmVhdHVyZUluZGV4Lmluc2VydChrLGIsXyx3LHRoaXMuaW5kZXgpfX0s cXMucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0LGUscil7dGhpcy5zdGF0ZURlcGVuZGVu dExheWVycy5sZW5ndGgmJnRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnVwZGF0ZVBhaW50 QXJyYXlzKHQsZSx0aGlzLnN0YXRlRGVwZW5kZW50TGF5ZXJzLHIpfSxxcy5wcm90b3R5cGUu YWRkRmVhdHVyZXM9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0wLGk9dGhpcy5wYXR0ZXJu RmVhdHVyZXM7bjxpLmxlbmd0aDtuKz0xKXt2YXIgYT1pW25dO3RoaXMuYWRkRmVhdHVyZShh LGEuZ2VvbWV0cnksYS5pbmRleCxlLHIpfX0scXMucHJvdG90eXBlLmlzRW1wdHk9ZnVuY3Rp b24oKXtyZXR1cm4gMD09PXRoaXMubGF5b3V0VmVydGV4QXJyYXkubGVuZ3RofSxxcy5wcm90 b3R5cGUudXBsb2FkUGVuZGluZz1mdW5jdGlvbigpe3JldHVybiF0aGlzLnVwbG9hZGVkfHx0 aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy5uZWVkc1VwbG9hZH0scXMucHJvdG90eXBlLnVw bG9hZD1mdW5jdGlvbih0KXt0aGlzLnVwbG9hZGVkfHwodGhpcy5sYXlvdXRWZXJ0ZXhCdWZm ZXI9dC5jcmVhdGVWZXJ0ZXhCdWZmZXIodGhpcy5sYXlvdXRWZXJ0ZXhBcnJheSxqcyksdGhp cy5pbmRleEJ1ZmZlcj10LmNyZWF0ZUluZGV4QnVmZmVyKHRoaXMuaW5kZXhBcnJheSkpLHRo aXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLnVwbG9hZCh0KSx0aGlzLnVwbG9hZGVkPSEwfSxx cy5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMubGF5b3V0VmVydGV4QnVmZmVy JiYodGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMuaW5kZXhCdWZmZXIu ZGVzdHJveSgpLHRoaXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmRlc3Ryb3koKSx0aGlzLnNl Z21lbnRzLmRlc3Ryb3koKSl9LHFzLnByb3RvdHlwZS5hZGRGZWF0dXJlPWZ1bmN0aW9uKHQs ZSxyLG4saSl7Zm9yKHZhciBhPXRoaXMubGF5ZXJzWzBdLmxheW91dCxvPWEuZ2V0KCJsaW5l LWpvaW4iKS5ldmFsdWF0ZSh0LHt9KSxzPWEuZ2V0KCJsaW5lLWNhcCIpLGw9YS5nZXQoImxp bmUtbWl0ZXItbGltaXQiKSxjPWEuZ2V0KCJsaW5lLXJvdW5kLWxpbWl0IiksdT0wLGY9ZTt1 PGYubGVuZ3RoO3UrPTEpe3ZhciBoPWZbdV07dGhpcy5hZGRMaW5lKGgsdCxvLHMsbCxjKX10 aGlzLnByb2dyYW1Db25maWd1cmF0aW9ucy5wb3B1bGF0ZVBhaW50QXJyYXlzKHRoaXMubGF5 b3V0VmVydGV4QXJyYXkubGVuZ3RoLHQscixpLG4pfSxxcy5wcm90b3R5cGUuYWRkTGluZT1m dW5jdGlvbih0LGUscixuLGksYSl7aWYodGhpcy5kaXN0YW5jZT0wLHRoaXMuc2NhbGVkRGlz dGFuY2U9MCx0aGlzLnRvdGFsRGlzdGFuY2U9MCxlLnByb3BlcnRpZXMmJmUucHJvcGVydGll cy5oYXNPd25Qcm9wZXJ0eSgibWFwYm94X2NsaXBfc3RhcnQiKSYmZS5wcm9wZXJ0aWVzLmhh c093blByb3BlcnR5KCJtYXBib3hfY2xpcF9lbmQiKSl7dGhpcy5jbGlwU3RhcnQ9K2UucHJv cGVydGllcy5tYXBib3hfY2xpcF9zdGFydCx0aGlzLmNsaXBFbmQ9K2UucHJvcGVydGllcy5t YXBib3hfY2xpcF9lbmQ7Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aC0xO28rKyl0aGlzLnRvdGFs RGlzdGFuY2UrPXRbb10uZGlzdCh0W28rMV0pO3RoaXMudXBkYXRlU2NhbGVkRGlzdGFuY2Uo KX1mb3IodmFyIHM9IlBvbHlnb24iPT09VXNbZS50eXBlXSxsPXQubGVuZ3RoO2w+PTImJnRb bC0xXS5lcXVhbHModFtsLTJdKTspbC0tO2Zvcih2YXIgYz0wO2M8bC0xJiZ0W2NdLmVxdWFs cyh0W2MrMV0pOyljKys7aWYoIShsPChzPzM6MikpKXsiYmV2ZWwiPT09ciYmKGk9MS4wNSk7 dmFyIHUsZj10aGlzLm92ZXJzY2FsaW5nPD0xNj8xMjI4ODAvKDUxMip0aGlzLm92ZXJzY2Fs aW5nKTowLGg9dGhpcy5zZWdtZW50cy5wcmVwYXJlU2VnbWVudCgxMCpsLHRoaXMubGF5b3V0 VmVydGV4QXJyYXksdGhpcy5pbmRleEFycmF5KSxwPXZvaWQgMCxkPXZvaWQgMCxtPXZvaWQg MCxnPXZvaWQgMDt0aGlzLmUxPXRoaXMuZTI9LTEscyYmKHU9dFtsLTJdLGc9dFtjXS5zdWIo dSkuX3VuaXQoKS5fcGVycCgpKTtmb3IodmFyIHY9Yzt2PGw7disrKWlmKCEoZD12PT09bC0x P3M/dFtjKzFdOnZvaWQgMDp0W3YrMV0pfHwhdFt2XS5lcXVhbHMoZCkpe2cmJihtPWcpLHUm JihwPXUpLHU9dFt2XSxnPWQ/ZC5zdWIodSkuX3VuaXQoKS5fcGVycCgpOm07dmFyIHk9KG09 bXx8ZykuYWRkKGcpOzA9PT15LngmJjA9PT15Lnl8fHkuX3VuaXQoKTt2YXIgeD1tLngqZy54 K20ueSpnLnksYj15LngqZy54K3kueSpnLnksXz0wIT09Yj8xL2I6MS8wLHc9MipNYXRoLnNx cnQoMi0yKmIpLFQ9YjxWcyYmcCYmZCxrPW0ueCpnLnktbS55KmcueD4wO2lmKFQmJnY+Yyl7 dmFyIEE9dS5kaXN0KHApO2lmKEE+MipmKXt2YXIgTT11LnN1Yih1LnN1YihwKS5fbXVsdChm L0EpLl9yb3VuZCgpKTt0aGlzLnVwZGF0ZURpc3RhbmNlKHAsTSksdGhpcy5hZGRDdXJyZW50 VmVydGV4KE0sbSwwLDAsaCkscD1NfX12YXIgUz1wJiZkLEU9Uz9yOnM/ImJ1dHQiOm47aWYo UyYmInJvdW5kIj09PUUmJihfPGE/RT0ibWl0ZXIiOl88PTImJihFPSJmYWtlcm91bmQiKSks Im1pdGVyIj09PUUmJl8+aSYmKEU9ImJldmVsIiksImJldmVsIj09PUUmJihfPjImJihFPSJm bGlwYmV2ZWwiKSxfPGkmJihFPSJtaXRlciIpKSxwJiZ0aGlzLnVwZGF0ZURpc3RhbmNlKHAs dSksIm1pdGVyIj09PUUpeS5fbXVsdChfKSx0aGlzLmFkZEN1cnJlbnRWZXJ0ZXgodSx5LDAs MCxoKTtlbHNlIGlmKCJmbGlwYmV2ZWwiPT09RSl7aWYoXz4xMDApeT1nLm11bHQoLTEpO2Vs c2V7dmFyIEw9XyptLmFkZChnKS5tYWcoKS9tLnN1YihnKS5tYWcoKTt5Ll9wZXJwKCkuX211 bHQoTCooaz8tMToxKSl9dGhpcy5hZGRDdXJyZW50VmVydGV4KHUseSwwLDAsaCksdGhpcy5h ZGRDdXJyZW50VmVydGV4KHUseS5tdWx0KC0xKSwwLDAsaCl9ZWxzZSBpZigiYmV2ZWwiPT09 RXx8ImZha2Vyb3VuZCI9PT1FKXt2YXIgQz0tTWF0aC5zcXJ0KF8qXy0xKSxQPWs/QzowLEk9 az8wOkM7aWYocCYmdGhpcy5hZGRDdXJyZW50VmVydGV4KHUsbSxQLEksaCksImZha2Vyb3Vu ZCI9PT1FKWZvcih2YXIgTz1NYXRoLnJvdW5kKDE4MCp3L01hdGguUEkvMjApLHo9MTt6PE87 eisrKXt2YXIgRD16L087aWYoLjUhPT1EKXt2YXIgUj1ELS41O0QrPUQqUiooRC0xKSooKDEu MDkwNCt4Kih4KigzLjU1NjQ1LTEuNDM1MTkqeCktMy4yNDUyKSkqUipSKyguODQ4MDEzK3gq KC4yMTU2MzgqeC0xLjA2MDIxKSkpfXZhciBGPWcuc3ViKG0pLl9tdWx0KEQpLl9hZGQobSku X3VuaXQoKS5fbXVsdChrPy0xOjEpO3RoaXMuYWRkSGFsZlZlcnRleCh1LEYueCxGLnksITEs aywwLGgpfWQmJnRoaXMuYWRkQ3VycmVudFZlcnRleCh1LGcsLVAsLUksaCl9ZWxzZSBpZigi YnV0dCI9PT1FKXRoaXMuYWRkQ3VycmVudFZlcnRleCh1LHksMCwwLGgpO2Vsc2UgaWYoInNx dWFyZSI9PT1FKXt2YXIgQj1wPzE6LTE7dGhpcy5hZGRDdXJyZW50VmVydGV4KHUseSxCLEIs aCl9ZWxzZSJyb3VuZCI9PT1FJiYocCYmKHRoaXMuYWRkQ3VycmVudFZlcnRleCh1LG0sMCww LGgpLHRoaXMuYWRkQ3VycmVudFZlcnRleCh1LG0sMSwxLGgsITApKSxkJiYodGhpcy5hZGRD dXJyZW50VmVydGV4KHUsZywtMSwtMSxoLCEwKSx0aGlzLmFkZEN1cnJlbnRWZXJ0ZXgodSxn LDAsMCxoKSkpO2lmKFQmJnY8bC0xKXt2YXIgTj11LmRpc3QoZCk7aWYoTj4yKmYpe3ZhciBq PXUuYWRkKGQuc3ViKHUpLl9tdWx0KGYvTikuX3JvdW5kKCkpO3RoaXMudXBkYXRlRGlzdGFu Y2UodSxqKSx0aGlzLmFkZEN1cnJlbnRWZXJ0ZXgoaixnLDAsMCxoKSx1PWp9fX19fSxxcy5w cm90b3R5cGUuYWRkQ3VycmVudFZlcnRleD1mdW5jdGlvbih0LGUscixuLGksYSl7dm9pZCAw PT09YSYmKGE9ITEpO3ZhciBvPWUueCtlLnkqcixzPWUueS1lLngqcixsPS1lLngrZS55Km4s Yz0tZS55LWUueCpuO3RoaXMuYWRkSGFsZlZlcnRleCh0LG8scyxhLCExLHIsaSksdGhpcy5h ZGRIYWxmVmVydGV4KHQsbCxjLGEsITAsLW4saSksdGhpcy5kaXN0YW5jZT5Icy8yJiYwPT09 dGhpcy50b3RhbERpc3RhbmNlJiYodGhpcy5kaXN0YW5jZT0wLHRoaXMuYWRkQ3VycmVudFZl cnRleCh0LGUscixuLGksYSkpfSxxcy5wcm90b3R5cGUuYWRkSGFsZlZlcnRleD1mdW5jdGlv bih0LGUscixuLGksYSxvKXt2YXIgcz10LngsbD10LnksYz0uNSp0aGlzLnNjYWxlZERpc3Rh bmNlO3RoaXMubGF5b3V0VmVydGV4QXJyYXkuZW1wbGFjZUJhY2soKHM8PDEpKyhuPzE6MCks KGw8PDEpKyhpPzE6MCksTWF0aC5yb3VuZCg2MyplKSsxMjgsTWF0aC5yb3VuZCg2MypyKSsx MjgsMSsoMD09PWE/MDphPDA/LTE6MSl8KDYzJmMpPDwyLGM+PjYpO3ZhciB1PW8udmVydGV4 TGVuZ3RoKys7dGhpcy5lMT49MCYmdGhpcy5lMj49MCYmKHRoaXMuaW5kZXhBcnJheS5lbXBs YWNlQmFjayh0aGlzLmUxLHRoaXMuZTIsdSksby5wcmltaXRpdmVMZW5ndGgrKyksaT90aGlz LmUyPXU6dGhpcy5lMT11fSxxcy5wcm90b3R5cGUudXBkYXRlU2NhbGVkRGlzdGFuY2U9ZnVu Y3Rpb24oKXt0aGlzLnNjYWxlZERpc3RhbmNlPXRoaXMudG90YWxEaXN0YW5jZT4wPyh0aGlz LmNsaXBTdGFydCsodGhpcy5jbGlwRW5kLXRoaXMuY2xpcFN0YXJ0KSp0aGlzLmRpc3RhbmNl L3RoaXMudG90YWxEaXN0YW5jZSkqKEhzLTEpOnRoaXMuZGlzdGFuY2V9LHFzLnByb3RvdHlw ZS51cGRhdGVEaXN0YW5jZT1mdW5jdGlvbih0LGUpe3RoaXMuZGlzdGFuY2UrPXQuZGlzdChl KSx0aGlzLnVwZGF0ZVNjYWxlZERpc3RhbmNlKCl9LE5uKCJMaW5lQnVja2V0Iixxcyx7b21p dDpbImxheWVycyIsInBhdHRlcm5GZWF0dXJlcyJdfSk7dmFyIEdzPW5ldyBTaSh7ImxpbmUt Y2FwIjpuZXcgd2koTHQubGF5b3V0X2xpbmVbImxpbmUtY2FwIl0pLCJsaW5lLWpvaW4iOm5l dyBUaShMdC5sYXlvdXRfbGluZVsibGluZS1qb2luIl0pLCJsaW5lLW1pdGVyLWxpbWl0Ijpu ZXcgd2koTHQubGF5b3V0X2xpbmVbImxpbmUtbWl0ZXItbGltaXQiXSksImxpbmUtcm91bmQt bGltaXQiOm5ldyB3aShMdC5sYXlvdXRfbGluZVsibGluZS1yb3VuZC1saW1pdCJdKSwibGlu ZS1zb3J0LWtleSI6bmV3IFRpKEx0LmxheW91dF9saW5lWyJsaW5lLXNvcnQta2V5Il0pfSks WXM9e3BhaW50Om5ldyBTaSh7ImxpbmUtb3BhY2l0eSI6bmV3IFRpKEx0LnBhaW50X2xpbmVb ImxpbmUtb3BhY2l0eSJdKSwibGluZS1jb2xvciI6bmV3IFRpKEx0LnBhaW50X2xpbmVbImxp bmUtY29sb3IiXSksImxpbmUtdHJhbnNsYXRlIjpuZXcgd2koTHQucGFpbnRfbGluZVsibGlu ZS10cmFuc2xhdGUiXSksImxpbmUtdHJhbnNsYXRlLWFuY2hvciI6bmV3IHdpKEx0LnBhaW50 X2xpbmVbImxpbmUtdHJhbnNsYXRlLWFuY2hvciJdKSwibGluZS13aWR0aCI6bmV3IFRpKEx0 LnBhaW50X2xpbmVbImxpbmUtd2lkdGgiXSksImxpbmUtZ2FwLXdpZHRoIjpuZXcgVGkoTHQu cGFpbnRfbGluZVsibGluZS1nYXAtd2lkdGgiXSksImxpbmUtb2Zmc2V0IjpuZXcgVGkoTHQu cGFpbnRfbGluZVsibGluZS1vZmZzZXQiXSksImxpbmUtYmx1ciI6bmV3IFRpKEx0LnBhaW50 X2xpbmVbImxpbmUtYmx1ciJdKSwibGluZS1kYXNoYXJyYXkiOm5ldyBBaShMdC5wYWludF9s aW5lWyJsaW5lLWRhc2hhcnJheSJdKSwibGluZS1wYXR0ZXJuIjpuZXcga2koTHQucGFpbnRf bGluZVsibGluZS1wYXR0ZXJuIl0pLCJsaW5lLWdyYWRpZW50IjpuZXcgTWkoTHQucGFpbnRf bGluZVsibGluZS1ncmFkaWVudCJdKX0pLGxheW91dDpHc30sV3M9bmV3KGZ1bmN0aW9uKHQp e2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19w cm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUu cHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUucG9zc2libHlFdmFsdWF0ZT1m dW5jdGlvbihlLHIpe3JldHVybiByPW5ldyBwaShNYXRoLmZsb29yKHIuem9vbSkse25vdzpy Lm5vdyxmYWRlRHVyYXRpb246ci5mYWRlRHVyYXRpb24sem9vbUhpc3Rvcnk6ci56b29tSGlz dG9yeSx0cmFuc2l0aW9uOnIudHJhbnNpdGlvbn0pLHQucHJvdG90eXBlLnBvc3NpYmx5RXZh bHVhdGUuY2FsbCh0aGlzLGUscil9LGUucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKGUs cixuLGkpe3JldHVybiByPXUoe30scix7em9vbTpNYXRoLmZsb29yKHIuem9vbSl9KSx0LnBy b3RvdHlwZS5ldmFsdWF0ZS5jYWxsKHRoaXMsZSxyLG4saSl9LGV9KFRpKSkoWXMucGFpbnQu cHJvcGVydGllc1sibGluZS13aWR0aCJdLnNwZWNpZmljYXRpb24pO1dzLnVzZUludGVnZXJa b29tPSEwO3ZhciBYcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3QuY2FsbCh0aGlzLGUs WXMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0 ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlw ZS5faGFuZGxlU3BlY2lhbFBhaW50UHJvcGVydHlVcGRhdGU9ZnVuY3Rpb24odCl7ImxpbmUt Z3JhZGllbnQiPT09dCYmdGhpcy5fdXBkYXRlR3JhZGllbnQoKX0sZS5wcm90b3R5cGUuX3Vw ZGF0ZUdyYWRpZW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fdHJhbnNpdGlvbmFibGVQYWlu dC5fdmFsdWVzWyJsaW5lLWdyYWRpZW50Il0udmFsdWUuZXhwcmVzc2lvbjt0aGlzLmdyYWRp ZW50PUNvKHQsImxpbmVQcm9ncmVzcyIpLHRoaXMuZ3JhZGllbnRUZXh0dXJlPW51bGx9LGUu cHJvdG90eXBlLnJlY2FsY3VsYXRlPWZ1bmN0aW9uKGUscil7dC5wcm90b3R5cGUucmVjYWxj dWxhdGUuY2FsbCh0aGlzLGUsciksdGhpcy5wYWludC5fdmFsdWVzWyJsaW5lLWZsb29yd2lk dGgiXT1Xcy5wb3NzaWJseUV2YWx1YXRlKHRoaXMuX3RyYW5zaXRpb25pbmdQYWludC5fdmFs dWVzWyJsaW5lLXdpZHRoIl0udmFsdWUsZSl9LGUucHJvdG90eXBlLmNyZWF0ZUJ1Y2tldD1m dW5jdGlvbih0KXtyZXR1cm4gbmV3IHFzKHQpfSxlLnByb3RvdHlwZS5xdWVyeVJhZGl1cz1m dW5jdGlvbih0KXt2YXIgZT10LHI9WnMob28oImxpbmUtd2lkdGgiLHRoaXMsZSksb28oImxp bmUtZ2FwLXdpZHRoIix0aGlzLGUpKSxuPW9vKCJsaW5lLW9mZnNldCIsdGhpcyxlKTtyZXR1 cm4gci8yK01hdGguYWJzKG4pK3NvKHRoaXMucGFpbnQuZ2V0KCJsaW5lLXRyYW5zbGF0ZSIp KX0sZS5wcm90b3R5cGUucXVlcnlJbnRlcnNlY3RzRmVhdHVyZT1mdW5jdGlvbih0LGUscixu LGEsbyxzKXt2YXIgbD1sbyh0LHRoaXMucGFpbnQuZ2V0KCJsaW5lLXRyYW5zbGF0ZSIpLHRo aXMucGFpbnQuZ2V0KCJsaW5lLXRyYW5zbGF0ZS1hbmNob3IiKSxvLmFuZ2xlLHMpLGM9cy8y KlpzKHRoaXMucGFpbnQuZ2V0KCJsaW5lLXdpZHRoIikuZXZhbHVhdGUoZSxyKSx0aGlzLnBh aW50LmdldCgibGluZS1nYXAtd2lkdGgiKS5ldmFsdWF0ZShlLHIpKSx1PXRoaXMucGFpbnQu Z2V0KCJsaW5lLW9mZnNldCIpLmV2YWx1YXRlKGUscik7cmV0dXJuIHUmJihuPWZ1bmN0aW9u KHQsZSl7Zm9yKHZhciByPVtdLG49bmV3IGkoMCwwKSxhPTA7YTx0Lmxlbmd0aDthKyspe2Zv cih2YXIgbz10W2FdLHM9W10sbD0wO2w8by5sZW5ndGg7bCsrKXt2YXIgYz1vW2wtMV0sdT1v W2xdLGY9b1tsKzFdLGg9MD09PWw/bjp1LnN1YihjKS5fdW5pdCgpLl9wZXJwKCkscD1sPT09 by5sZW5ndGgtMT9uOmYuc3ViKHUpLl91bml0KCkuX3BlcnAoKSxkPWguX2FkZChwKS5fdW5p dCgpLG09ZC54KnAueCtkLnkqcC55O2QuX211bHQoMS9tKSxzLnB1c2goZC5fbXVsdChlKS5f YWRkKHUpKX1yLnB1c2gocyl9cmV0dXJuIHJ9KG4sdSpzKSksZnVuY3Rpb24odCxlLHIpe2Zv cih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgaT1lW25dO2lmKHQubGVuZ3RoPj0zKWZv cih2YXIgYT0wO2E8aS5sZW5ndGg7YSsrKWlmKGlvKHQsaVthXSkpcmV0dXJuITA7aWYoUWEo dCxpLHIpKXJldHVybiEwfXJldHVybiExfShsLG4sYyl9LGUucHJvdG90eXBlLmlzVGlsZUNs aXBwZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZX0oRWkpO2Z1bmN0aW9uIFpzKHQsZSl7cmV0 dXJuIGU+MD9lKzIqdDp0fXZhciBKcz1JaShbe25hbWU6ImFfcG9zX29mZnNldCIsY29tcG9u ZW50czo0LHR5cGU6IkludDE2In0se25hbWU6ImFfZGF0YSIsY29tcG9uZW50czo0LHR5cGU6 IlVpbnQxNiJ9LHtuYW1lOiJhX3BpeGVsb2Zmc2V0Iixjb21wb25lbnRzOjQsdHlwZToiSW50 MTYifV0sNCksS3M9SWkoW3tuYW1lOiJhX3Byb2plY3RlZF9wb3MiLGNvbXBvbmVudHM6Myx0 eXBlOiJGbG9hdDMyIn1dLDQpLFFzPShJaShbe25hbWU6ImFfZmFkZV9vcGFjaXR5Iixjb21w b25lbnRzOjEsdHlwZToiVWludDMyIn1dLDQpLElpKFt7bmFtZToiYV9wbGFjZWQiLGNvbXBv bmVudHM6Mix0eXBlOiJVaW50OCJ9LHtuYW1lOiJhX3NoaWZ0Iixjb21wb25lbnRzOjIsdHlw ZToiRmxvYXQzMiJ9XSkpLCRzPShJaShbe3R5cGU6IkludDE2IixuYW1lOiJhbmNob3JQb2lu dFgifSx7dHlwZToiSW50MTYiLG5hbWU6ImFuY2hvclBvaW50WSJ9LHt0eXBlOiJJbnQxNiIs bmFtZToieDEifSx7dHlwZToiSW50MTYiLG5hbWU6InkxIn0se3R5cGU6IkludDE2IixuYW1l OiJ4MiJ9LHt0eXBlOiJJbnQxNiIsbmFtZToieTIifSx7dHlwZToiVWludDMyIixuYW1lOiJm ZWF0dXJlSW5kZXgifSx7dHlwZToiVWludDE2IixuYW1lOiJzb3VyY2VMYXllckluZGV4In0s e3R5cGU6IlVpbnQxNiIsbmFtZToiYnVja2V0SW5kZXgifV0pLElpKFt7bmFtZToiYV9wb3Mi LGNvbXBvbmVudHM6Mix0eXBlOiJJbnQxNiJ9LHtuYW1lOiJhX2FuY2hvcl9wb3MiLGNvbXBv bmVudHM6Mix0eXBlOiJJbnQxNiJ9LHtuYW1lOiJhX2V4dHJ1ZGUiLGNvbXBvbmVudHM6Mix0 eXBlOiJJbnQxNiJ9XSw0KSksdGw9SWkoW3tuYW1lOiJhX3BvcyIsY29tcG9uZW50czoyLHR5 cGU6IkZsb2F0MzIifSx7bmFtZToiYV9yYWRpdXMiLGNvbXBvbmVudHM6MSx0eXBlOiJGbG9h dDMyIn0se25hbWU6ImFfZmxhZ3MiLGNvbXBvbmVudHM6Mix0eXBlOiJJbnQxNiJ9XSw0KTtJ aShbe25hbWU6InRyaWFuZ2xlIixjb21wb25lbnRzOjMsdHlwZToiVWludDE2In1dKSxJaShb e3R5cGU6IkludDE2IixuYW1lOiJhbmNob3JYIn0se3R5cGU6IkludDE2IixuYW1lOiJhbmNo b3JZIn0se3R5cGU6IlVpbnQxNiIsbmFtZToiZ2x5cGhTdGFydEluZGV4In0se3R5cGU6IlVp bnQxNiIsbmFtZToibnVtR2x5cGhzIn0se3R5cGU6IlVpbnQzMiIsbmFtZToidmVydGV4U3Rh cnRJbmRleCJ9LHt0eXBlOiJVaW50MzIiLG5hbWU6ImxpbmVTdGFydEluZGV4In0se3R5cGU6 IlVpbnQzMiIsbmFtZToibGluZUxlbmd0aCJ9LHt0eXBlOiJVaW50MTYiLG5hbWU6InNlZ21l bnQifSx7dHlwZToiVWludDE2IixuYW1lOiJsb3dlclNpemUifSx7dHlwZToiVWludDE2Iixu YW1lOiJ1cHBlclNpemUifSx7dHlwZToiRmxvYXQzMiIsbmFtZToibGluZU9mZnNldFgifSx7 dHlwZToiRmxvYXQzMiIsbmFtZToibGluZU9mZnNldFkifSx7dHlwZToiVWludDgiLG5hbWU6 IndyaXRpbmdNb2RlIn0se3R5cGU6IlVpbnQ4IixuYW1lOiJwbGFjZWRPcmllbnRhdGlvbiJ9 LHt0eXBlOiJVaW50OCIsbmFtZToiaGlkZGVuIn0se3R5cGU6IlVpbnQzMiIsbmFtZToiY3Jv c3NUaWxlSUQifSx7dHlwZToiSW50MTYiLG5hbWU6ImFzc29jaWF0ZWRJY29uSW5kZXgifV0p LElpKFt7dHlwZToiSW50MTYiLG5hbWU6ImFuY2hvclgifSx7dHlwZToiSW50MTYiLG5hbWU6 ImFuY2hvclkifSx7dHlwZToiSW50MTYiLG5hbWU6InJpZ2h0SnVzdGlmaWVkVGV4dFN5bWJv bEluZGV4In0se3R5cGU6IkludDE2IixuYW1lOiJjZW50ZXJKdXN0aWZpZWRUZXh0U3ltYm9s SW5kZXgifSx7dHlwZToiSW50MTYiLG5hbWU6ImxlZnRKdXN0aWZpZWRUZXh0U3ltYm9sSW5k ZXgifSx7dHlwZToiSW50MTYiLG5hbWU6InZlcnRpY2FsUGxhY2VkVGV4dFN5bWJvbEluZGV4 In0se3R5cGU6IkludDE2IixuYW1lOiJwbGFjZWRJY29uU3ltYm9sSW5kZXgifSx7dHlwZToi SW50MTYiLG5hbWU6InZlcnRpY2FsUGxhY2VkSWNvblN5bWJvbEluZGV4In0se3R5cGU6IlVp bnQxNiIsbmFtZToia2V5In0se3R5cGU6IlVpbnQxNiIsbmFtZToidGV4dEJveFN0YXJ0SW5k ZXgifSx7dHlwZToiVWludDE2IixuYW1lOiJ0ZXh0Qm94RW5kSW5kZXgifSx7dHlwZToiVWlu dDE2IixuYW1lOiJ2ZXJ0aWNhbFRleHRCb3hTdGFydEluZGV4In0se3R5cGU6IlVpbnQxNiIs bmFtZToidmVydGljYWxUZXh0Qm94RW5kSW5kZXgifSx7dHlwZToiVWludDE2IixuYW1lOiJp Y29uQm94U3RhcnRJbmRleCJ9LHt0eXBlOiJVaW50MTYiLG5hbWU6Imljb25Cb3hFbmRJbmRl eCJ9LHt0eXBlOiJVaW50MTYiLG5hbWU6InZlcnRpY2FsSWNvbkJveFN0YXJ0SW5kZXgifSx7 dHlwZToiVWludDE2IixuYW1lOiJ2ZXJ0aWNhbEljb25Cb3hFbmRJbmRleCJ9LHt0eXBlOiJV aW50MTYiLG5hbWU6ImZlYXR1cmVJbmRleCJ9LHt0eXBlOiJVaW50MTYiLG5hbWU6Im51bUhv cml6b250YWxHbHlwaFZlcnRpY2VzIn0se3R5cGU6IlVpbnQxNiIsbmFtZToibnVtVmVydGlj YWxHbHlwaFZlcnRpY2VzIn0se3R5cGU6IlVpbnQxNiIsbmFtZToibnVtSWNvblZlcnRpY2Vz In0se3R5cGU6IlVpbnQxNiIsbmFtZToibnVtVmVydGljYWxJY29uVmVydGljZXMifSx7dHlw ZToiVWludDE2IixuYW1lOiJ1c2VSdW50aW1lQ29sbGlzaW9uQ2lyY2xlcyJ9LHt0eXBlOiJV aW50MzIiLG5hbWU6ImNyb3NzVGlsZUlEIn0se3R5cGU6IkZsb2F0MzIiLG5hbWU6InRleHRC b3hTY2FsZSJ9LHt0eXBlOiJGbG9hdDMyIixjb21wb25lbnRzOjIsbmFtZToidGV4dE9mZnNl dCJ9LHt0eXBlOiJGbG9hdDMyIixuYW1lOiJjb2xsaXNpb25DaXJjbGVEaWFtZXRlciJ9XSks SWkoW3t0eXBlOiJGbG9hdDMyIixuYW1lOiJvZmZzZXRYIn1dKSxJaShbe3R5cGU6IkludDE2 IixuYW1lOiJ4In0se3R5cGU6IkludDE2IixuYW1lOiJ5In0se3R5cGU6IkludDE2IixuYW1l OiJ0aWxlVW5pdERpc3RhbmNlRnJvbUFuY2hvciJ9XSk7ZnVuY3Rpb24gZWwodCxlLHIpe3Jl dHVybiB0LnNlY3Rpb25zLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QudGV4dD1mdW5jdGlvbih0 LGUscil7dmFyIG49ZS5sYXlvdXQuZ2V0KCJ0ZXh0LXRyYW5zZm9ybSIpLmV2YWx1YXRlKHIs e30pO3JldHVybiJ1cHBlcmNhc2UiPT09bj90PXQudG9Mb2NhbGVVcHBlckNhc2UoKToibG93 ZXJjYXNlIj09PW4mJih0PXQudG9Mb2NhbGVMb3dlckNhc2UoKSksaGkuYXBwbHlBcmFiaWNT aGFwaW5nJiYodD1oaS5hcHBseUFyYWJpY1NoYXBpbmcodCkpLHR9KHQudGV4dCxlLHIpfSkp LHR9dmFyIHJsPXsiISI6Ilx1ZmUxNSIsIiMiOiJcdWZmMDMiLCQ6Ilx1ZmYwNCIsIiUiOiJc dWZmMDUiLCImIjoiXHVmZjA2IiwiKCI6Ilx1ZmUzNSIsIikiOiJcdWZlMzYiLCIqIjoiXHVm ZjBhIiwiKyI6Ilx1ZmYwYiIsIiwiOiJcdWZlMTAiLCItIjoiXHVmZTMyIiwiLiI6Ilx1MzBm YiIsIi8iOiJcdWZmMGYiLCI6IjoiXHVmZTEzIiwiOyI6Ilx1ZmUxNCIsIjwiOiJcdWZlM2Yi LCI9IjoiXHVmZjFkIiwiPiI6Ilx1ZmU0MCIsIj8iOiJcdWZlMTYiLCJAIjoiXHVmZjIwIiwi WyI6Ilx1ZmU0NyIsIlxcIjoiXHVmZjNjIiwiXSI6Ilx1ZmU0OCIsIl4iOiJcdWZmM2UiLF86 Ilx1ZmUzMyIsImAiOiJcdWZmNDAiLCJ7IjoiXHVmZTM3IiwifCI6Ilx1MjAxNSIsIn0iOiJc dWZlMzgiLCJ+IjoiXHVmZjVlIiwiXHhhMiI6Ilx1ZmZlMCIsIlx4YTMiOiJcdWZmZTEiLCJc eGE1IjoiXHVmZmU1IiwiXHhhNiI6Ilx1ZmZlNCIsIlx4YWMiOiJcdWZmZTIiLCJceGFmIjoi XHVmZmUzIiwiXHUyMDEzIjoiXHVmZTMyIiwiXHUyMDE0IjoiXHVmZTMxIiwiXHUyMDE4Ijoi XHVmZTQzIiwiXHUyMDE5IjoiXHVmZTQ0IiwiXHUyMDFjIjoiXHVmZTQxIiwiXHUyMDFkIjoi XHVmZTQyIiwiXHUyMDI2IjoiXHVmZTE5IiwiXHUyMDI3IjoiXHUzMGZiIiwiXHUyMGE5Ijoi XHVmZmU2IiwiXHUzMDAxIjoiXHVmZTExIiwiXHUzMDAyIjoiXHVmZTEyIiwiXHUzMDA4Ijoi XHVmZTNmIiwiXHUzMDA5IjoiXHVmZTQwIiwiXHUzMDBhIjoiXHVmZTNkIiwiXHUzMDBiIjoi XHVmZTNlIiwiXHUzMDBjIjoiXHVmZTQxIiwiXHUzMDBkIjoiXHVmZTQyIiwiXHUzMDBlIjoi XHVmZTQzIiwiXHUzMDBmIjoiXHVmZTQ0IiwiXHUzMDEwIjoiXHVmZTNiIiwiXHUzMDExIjoi XHVmZTNjIiwiXHUzMDE0IjoiXHVmZTM5IiwiXHUzMDE1IjoiXHVmZTNhIiwiXHUzMDE2Ijoi XHVmZTE3IiwiXHUzMDE3IjoiXHVmZTE4IiwiXHVmZjAxIjoiXHVmZTE1IiwiXHVmZjA4Ijoi XHVmZTM1IiwiXHVmZjA5IjoiXHVmZTM2IiwiXHVmZjBjIjoiXHVmZTEwIiwiXHVmZjBkIjoi XHVmZTMyIiwiXHVmZjBlIjoiXHUzMGZiIiwiXHVmZjFhIjoiXHVmZTEzIiwiXHVmZjFiIjoi XHVmZTE0IiwiXHVmZjFjIjoiXHVmZTNmIiwiXHVmZjFlIjoiXHVmZTQwIiwiXHVmZjFmIjoi XHVmZTE2IiwiXHVmZjNiIjoiXHVmZTQ3IiwiXHVmZjNkIjoiXHVmZTQ4IiwiXHVmZjNmIjoi XHVmZTMzIiwiXHVmZjViIjoiXHVmZTM3IiwiXHVmZjVjIjoiXHUyMDE1IiwiXHVmZjVkIjoi XHVmZTM4IiwiXHVmZjVmIjoiXHVmZTM1IiwiXHVmZjYwIjoiXHVmZTM2IiwiXHVmZjYxIjoi XHVmZTEyIiwiXHVmZjYyIjoiXHVmZTQxIiwiXHVmZjYzIjoiXHVmZTQyIn07dmFyIG5sPWZ1 bmN0aW9uKHQsZSxyLG4saSl7dmFyIGEsbyxzPTgqaS1uLTEsbD0oMTw8cyktMSxjPWw+PjEs dT0tNyxmPXI/aS0xOjAsaD1yPy0xOjEscD10W2UrZl07Zm9yKGYrPWgsYT1wJigxPDwtdSkt MSxwPj49LXUsdSs9czt1PjA7YT0yNTYqYSt0W2UrZl0sZis9aCx1LT04KTtmb3Iobz1hJigx PDwtdSktMSxhPj49LXUsdSs9bjt1PjA7bz0yNTYqbyt0W2UrZl0sZis9aCx1LT04KTtpZigw PT09YSlhPTEtYztlbHNle2lmKGE9PT1sKXJldHVybiBvP05hTjoxLzAqKHA/LTE6MSk7bys9 TWF0aC5wb3coMixuKSxhLT1jfXJldHVybihwPy0xOjEpKm8qTWF0aC5wb3coMixhLW4pfSxp bD1mdW5jdGlvbih0LGUscixuLGksYSl7dmFyIG8scyxsLGM9OCphLWktMSx1PSgxPDxjKS0x LGY9dT4+MSxoPTIzPT09aT9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcpOjAscD1u PzA6YS0xLGQ9bj8xOi0xLG09ZTwwfHwwPT09ZSYmMS9lPDA/MTowO2ZvcihlPU1hdGguYWJz KGUpLGlzTmFOKGUpfHxlPT09MS8wPyhzPWlzTmFOKGUpPzE6MCxvPXUpOihvPU1hdGguZmxv b3IoTWF0aC5sb2coZSkvTWF0aC5MTjIpLGUqKGw9TWF0aC5wb3coMiwtbykpPDEmJihvLS0s bCo9MiksKGUrPW8rZj49MT9oL2w6aCpNYXRoLnBvdygyLDEtZikpKmw+PTImJihvKyssbC89 MiksbytmPj11PyhzPTAsbz11KTpvK2Y+PTE/KHM9KGUqbC0xKSpNYXRoLnBvdygyLGkpLG8r PWYpOihzPWUqTWF0aC5wb3coMixmLTEpKk1hdGgucG93KDIsaSksbz0wKSk7aT49ODt0W3Ir cF09MjU1JnMscCs9ZCxzLz0yNTYsaS09OCk7Zm9yKG89bzw8aXxzLGMrPWk7Yz4wO3Rbcitw XT0yNTUmbyxwKz1kLG8vPTI1NixjLT04KTt0W3IrcC1kXXw9MTI4Km19LGFsPW9sO2Z1bmN0 aW9uIG9sKHQpe3RoaXMuYnVmPUFycmF5QnVmZmVyLmlzVmlldyYmQXJyYXlCdWZmZXIuaXNW aWV3KHQpP3Q6bmV3IFVpbnQ4QXJyYXkodHx8MCksdGhpcy5wb3M9MCx0aGlzLnR5cGU9MCx0 aGlzLmxlbmd0aD10aGlzLmJ1Zi5sZW5ndGh9b2wuVmFyaW50PTAsb2wuRml4ZWQ2ND0xLG9s LkJ5dGVzPTIsb2wuRml4ZWQzMj01O3ZhciBzbD0idW5kZWZpbmVkIj09dHlwZW9mIFRleHRE ZWNvZGVyP251bGw6bmV3IFRleHREZWNvZGVyKCJ1dGY4Iik7ZnVuY3Rpb24gbGwodCl7cmV0 dXJuIHQudHlwZT09PW9sLkJ5dGVzP3QucmVhZFZhcmludCgpK3QucG9zOnQucG9zKzF9ZnVu Y3Rpb24gY2wodCxlLHIpe3JldHVybiByPzQyOTQ5NjcyOTYqZSsodD4+PjApOjQyOTQ5Njcy OTYqKGU+Pj4wKSsodD4+PjApfWZ1bmN0aW9uIHVsKHQsZSxyKXt2YXIgbj1lPD0xNjM4Mz8x OmU8PTIwOTcxNTE/MjplPD0yNjg0MzU0NTU/MzpNYXRoLmZsb29yKE1hdGgubG9nKGUpLyg3 Kk1hdGguTE4yKSk7ci5yZWFsbG9jKG4pO2Zvcih2YXIgaT1yLnBvcy0xO2k+PXQ7aS0tKXIu YnVmW2krbl09ci5idWZbaV19ZnVuY3Rpb24gZmwodCxlKXtmb3IodmFyIHI9MDtyPHQubGVu Z3RoO3IrKyllLndyaXRlVmFyaW50KHRbcl0pfWZ1bmN0aW9uIGhsKHQsZSl7Zm9yKHZhciBy PTA7cjx0Lmxlbmd0aDtyKyspZS53cml0ZVNWYXJpbnQodFtyXSl9ZnVuY3Rpb24gcGwodCxl KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyllLndyaXRlRmxvYXQodFtyXSl9ZnVuY3Rp b24gZGwodCxlKXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyllLndyaXRlRG91YmxlKHRb cl0pfWZ1bmN0aW9uIG1sKHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspZS53cml0 ZUJvb2xlYW4odFtyXSl9ZnVuY3Rpb24gZ2wodCxlKXtmb3IodmFyIHI9MDtyPHQubGVuZ3Ro O3IrKyllLndyaXRlRml4ZWQzMih0W3JdKX1mdW5jdGlvbiB2bCh0LGUpe2Zvcih2YXIgcj0w O3I8dC5sZW5ndGg7cisrKWUud3JpdGVTRml4ZWQzMih0W3JdKX1mdW5jdGlvbiB5bCh0LGUp e2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKWUud3JpdGVGaXhlZDY0KHRbcl0pfWZ1bmN0 aW9uIHhsKHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspZS53cml0ZVNGaXhlZDY0 KHRbcl0pfWZ1bmN0aW9uIGJsKHQsZSl7cmV0dXJuKHRbZV18dFtlKzFdPDw4fHRbZSsyXTw8 MTYpKzE2Nzc3MjE2KnRbZSszXX1mdW5jdGlvbiBfbCh0LGUscil7dFtyXT1lLHRbcisxXT1l Pj4+OCx0W3IrMl09ZT4+PjE2LHRbciszXT1lPj4+MjR9ZnVuY3Rpb24gd2wodCxlKXtyZXR1 cm4odFtlXXx0W2UrMV08PDh8dFtlKzJdPDwxNikrKHRbZSszXTw8MjQpfW9sLnByb3RvdHlw ZT17ZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuYnVmPW51bGx9LHJlYWRGaWVsZHM6ZnVuY3Rp b24odCxlLHIpe2ZvcihyPXJ8fHRoaXMubGVuZ3RoO3RoaXMucG9zPHI7KXt2YXIgbj10aGlz LnJlYWRWYXJpbnQoKSxpPW4+PjMsYT10aGlzLnBvczt0aGlzLnR5cGU9NyZuLHQoaSxlLHRo aXMpLHRoaXMucG9zPT09YSYmdGhpcy5za2lwKG4pfXJldHVybiBlfSxyZWFkTWVzc2FnZTpm dW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnJlYWRGaWVsZHModCxlLHRoaXMucmVhZFZhcmlu dCgpK3RoaXMucG9zKX0scmVhZEZpeGVkMzI6ZnVuY3Rpb24oKXt2YXIgdD1ibCh0aGlzLmJ1 Zix0aGlzLnBvcyk7cmV0dXJuIHRoaXMucG9zKz00LHR9LHJlYWRTRml4ZWQzMjpmdW5jdGlv bigpe3ZhciB0PXdsKHRoaXMuYnVmLHRoaXMucG9zKTtyZXR1cm4gdGhpcy5wb3MrPTQsdH0s cmVhZEZpeGVkNjQ6ZnVuY3Rpb24oKXt2YXIgdD1ibCh0aGlzLmJ1Zix0aGlzLnBvcykrNDI5 NDk2NzI5NipibCh0aGlzLmJ1Zix0aGlzLnBvcys0KTtyZXR1cm4gdGhpcy5wb3MrPTgsdH0s cmVhZFNGaXhlZDY0OmZ1bmN0aW9uKCl7dmFyIHQ9YmwodGhpcy5idWYsdGhpcy5wb3MpKzQy OTQ5NjcyOTYqd2wodGhpcy5idWYsdGhpcy5wb3MrNCk7cmV0dXJuIHRoaXMucG9zKz04LHR9 LHJlYWRGbG9hdDpmdW5jdGlvbigpe3ZhciB0PW5sKHRoaXMuYnVmLHRoaXMucG9zLCEwLDIz LDQpO3JldHVybiB0aGlzLnBvcys9NCx0fSxyZWFkRG91YmxlOmZ1bmN0aW9uKCl7dmFyIHQ9 bmwodGhpcy5idWYsdGhpcy5wb3MsITAsNTIsOCk7cmV0dXJuIHRoaXMucG9zKz04LHR9LHJl YWRWYXJpbnQ6ZnVuY3Rpb24odCl7dmFyIGUscixuPXRoaXMuYnVmO3JldHVybiBlPTEyNyYo cj1uW3RoaXMucG9zKytdKSxyPDEyOD9lOihlfD0oMTI3JihyPW5bdGhpcy5wb3MrK10pKTw8 NyxyPDEyOD9lOihlfD0oMTI3JihyPW5bdGhpcy5wb3MrK10pKTw8MTQscjwxMjg/ZTooZXw9 KDEyNyYocj1uW3RoaXMucG9zKytdKSk8PDIxLHI8MTI4P2U6ZnVuY3Rpb24odCxlLHIpe3Zh ciBuLGksYT1yLmJ1ZjtpZihpPWFbci5wb3MrK10sbj0oMTEyJmkpPj40LGk8MTI4KXJldHVy biBjbCh0LG4sZSk7aWYoaT1hW3IucG9zKytdLG58PSgxMjcmaSk8PDMsaTwxMjgpcmV0dXJu IGNsKHQsbixlKTtpZihpPWFbci5wb3MrK10sbnw9KDEyNyZpKTw8MTAsaTwxMjgpcmV0dXJu IGNsKHQsbixlKTtpZihpPWFbci5wb3MrK10sbnw9KDEyNyZpKTw8MTcsaTwxMjgpcmV0dXJu IGNsKHQsbixlKTtpZihpPWFbci5wb3MrK10sbnw9KDEyNyZpKTw8MjQsaTwxMjgpcmV0dXJu IGNsKHQsbixlKTtpZihpPWFbci5wb3MrK10sbnw9KDEmaSk8PDMxLGk8MTI4KXJldHVybiBj bCh0LG4sZSk7dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB2YXJpbnQgbm90IG1vcmUgdGhh biAxMCBieXRlcyIpfShlfD0oMTUmKHI9blt0aGlzLnBvc10pKTw8MjgsdCx0aGlzKSkpKX0s cmVhZFZhcmludDY0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFZhcmludCghMCl9LHJl YWRTVmFyaW50OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5yZWFkVmFyaW50KCk7cmV0dXJuIHQl Mj09MT8odCsxKS8tMjp0LzJ9LHJlYWRCb29sZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xl YW4odGhpcy5yZWFkVmFyaW50KCkpfSxyZWFkU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIHQ9dGhp cy5yZWFkVmFyaW50KCkrdGhpcy5wb3MsZT10aGlzLnBvcztyZXR1cm4gdGhpcy5wb3M9dCx0 LWU+PTEyJiZzbD9mdW5jdGlvbih0LGUscil7cmV0dXJuIHNsLmRlY29kZSh0LnN1YmFycmF5 KGUscikpfSh0aGlzLmJ1ZixlLHQpOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj0iIixpPWU7Zm9y KDtpPHI7KXt2YXIgYSxvLHMsbD10W2ldLGM9bnVsbCx1PWw+MjM5PzQ6bD4yMjM/MzpsPjE5 MT8yOjE7aWYoaSt1PnIpYnJlYWs7MT09PXU/bDwxMjgmJihjPWwpOjI9PT11PzEyOD09KDE5 MiYoYT10W2krMV0pKSYmKGM9KDMxJmwpPDw2fDYzJmEpPD0xMjcmJihjPW51bGwpOjM9PT11 PyhhPXRbaSsxXSxvPXRbaSsyXSwxMjg9PSgxOTImYSkmJjEyOD09KDE5MiZvKSYmKChjPSgx NSZsKTw8MTJ8KDYzJmEpPDw2fDYzJm8pPD0yMDQ3fHxjPj01NTI5NiYmYzw9NTczNDMpJiYo Yz1udWxsKSk6ND09PXUmJihhPXRbaSsxXSxvPXRbaSsyXSxzPXRbaSszXSwxMjg9PSgxOTIm YSkmJjEyOD09KDE5MiZvKSYmMTI4PT0oMTkyJnMpJiYoKGM9KDE1JmwpPDwxOHwoNjMmYSk8 PDEyfCg2MyZvKTw8Nnw2MyZzKTw9NjU1MzV8fGM+PTExMTQxMTIpJiYoYz1udWxsKSksbnVs bD09PWM/KGM9NjU1MzMsdT0xKTpjPjY1NTM1JiYoYy09NjU1MzYsbis9U3RyaW5nLmZyb21D aGFyQ29kZShjPj4+MTAmMTAyM3w1NTI5NiksYz01NjMyMHwxMDIzJmMpLG4rPVN0cmluZy5m cm9tQ2hhckNvZGUoYyksaSs9dX1yZXR1cm4gbn0odGhpcy5idWYsZSx0KX0scmVhZEJ5dGVz OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5yZWFkVmFyaW50KCkrdGhpcy5wb3MsZT10aGlzLmJ1 Zi5zdWJhcnJheSh0aGlzLnBvcyx0KTtyZXR1cm4gdGhpcy5wb3M9dCxlfSxyZWFkUGFja2Vk VmFyaW50OmZ1bmN0aW9uKHQsZSl7aWYodGhpcy50eXBlIT09b2wuQnl0ZXMpcmV0dXJuIHQu cHVzaCh0aGlzLnJlYWRWYXJpbnQoZSkpO3ZhciByPWxsKHRoaXMpO2Zvcih0PXR8fFtdO3Ro aXMucG9zPHI7KXQucHVzaCh0aGlzLnJlYWRWYXJpbnQoZSkpO3JldHVybiB0fSxyZWFkUGFj a2VkU1ZhcmludDpmdW5jdGlvbih0KXtpZih0aGlzLnR5cGUhPT1vbC5CeXRlcylyZXR1cm4g dC5wdXNoKHRoaXMucmVhZFNWYXJpbnQoKSk7dmFyIGU9bGwodGhpcyk7Zm9yKHQ9dHx8W107 dGhpcy5wb3M8ZTspdC5wdXNoKHRoaXMucmVhZFNWYXJpbnQoKSk7cmV0dXJuIHR9LHJlYWRQ YWNrZWRCb29sZWFuOmZ1bmN0aW9uKHQpe2lmKHRoaXMudHlwZSE9PW9sLkJ5dGVzKXJldHVy biB0LnB1c2godGhpcy5yZWFkQm9vbGVhbigpKTt2YXIgZT1sbCh0aGlzKTtmb3IodD10fHxb XTt0aGlzLnBvczxlOyl0LnB1c2godGhpcy5yZWFkQm9vbGVhbigpKTtyZXR1cm4gdH0scmVh ZFBhY2tlZEZsb2F0OmZ1bmN0aW9uKHQpe2lmKHRoaXMudHlwZSE9PW9sLkJ5dGVzKXJldHVy biB0LnB1c2godGhpcy5yZWFkRmxvYXQoKSk7dmFyIGU9bGwodGhpcyk7Zm9yKHQ9dHx8W107 dGhpcy5wb3M8ZTspdC5wdXNoKHRoaXMucmVhZEZsb2F0KCkpO3JldHVybiB0fSxyZWFkUGFj a2VkRG91YmxlOmZ1bmN0aW9uKHQpe2lmKHRoaXMudHlwZSE9PW9sLkJ5dGVzKXJldHVybiB0 LnB1c2godGhpcy5yZWFkRG91YmxlKCkpO3ZhciBlPWxsKHRoaXMpO2Zvcih0PXR8fFtdO3Ro aXMucG9zPGU7KXQucHVzaCh0aGlzLnJlYWREb3VibGUoKSk7cmV0dXJuIHR9LHJlYWRQYWNr ZWRGaXhlZDMyOmZ1bmN0aW9uKHQpe2lmKHRoaXMudHlwZSE9PW9sLkJ5dGVzKXJldHVybiB0 LnB1c2godGhpcy5yZWFkRml4ZWQzMigpKTt2YXIgZT1sbCh0aGlzKTtmb3IodD10fHxbXTt0 aGlzLnBvczxlOyl0LnB1c2godGhpcy5yZWFkRml4ZWQzMigpKTtyZXR1cm4gdH0scmVhZFBh Y2tlZFNGaXhlZDMyOmZ1bmN0aW9uKHQpe2lmKHRoaXMudHlwZSE9PW9sLkJ5dGVzKXJldHVy biB0LnB1c2godGhpcy5yZWFkU0ZpeGVkMzIoKSk7dmFyIGU9bGwodGhpcyk7Zm9yKHQ9dHx8 W107dGhpcy5wb3M8ZTspdC5wdXNoKHRoaXMucmVhZFNGaXhlZDMyKCkpO3JldHVybiB0fSxy ZWFkUGFja2VkRml4ZWQ2NDpmdW5jdGlvbih0KXtpZih0aGlzLnR5cGUhPT1vbC5CeXRlcyly ZXR1cm4gdC5wdXNoKHRoaXMucmVhZEZpeGVkNjQoKSk7dmFyIGU9bGwodGhpcyk7Zm9yKHQ9 dHx8W107dGhpcy5wb3M8ZTspdC5wdXNoKHRoaXMucmVhZEZpeGVkNjQoKSk7cmV0dXJuIHR9 LHJlYWRQYWNrZWRTRml4ZWQ2NDpmdW5jdGlvbih0KXtpZih0aGlzLnR5cGUhPT1vbC5CeXRl cylyZXR1cm4gdC5wdXNoKHRoaXMucmVhZFNGaXhlZDY0KCkpO3ZhciBlPWxsKHRoaXMpO2Zv cih0PXR8fFtdO3RoaXMucG9zPGU7KXQucHVzaCh0aGlzLnJlYWRTRml4ZWQ2NCgpKTtyZXR1 cm4gdH0sc2tpcDpmdW5jdGlvbih0KXt2YXIgZT03JnQ7aWYoZT09PW9sLlZhcmludClmb3Io O3RoaXMuYnVmW3RoaXMucG9zKytdPjEyNzspO2Vsc2UgaWYoZT09PW9sLkJ5dGVzKXRoaXMu cG9zPXRoaXMucmVhZFZhcmludCgpK3RoaXMucG9zO2Vsc2UgaWYoZT09PW9sLkZpeGVkMzIp dGhpcy5wb3MrPTQ7ZWxzZXtpZihlIT09b2wuRml4ZWQ2NCl0aHJvdyBuZXcgRXJyb3IoIlVu aW1wbGVtZW50ZWQgdHlwZTogIitlKTt0aGlzLnBvcys9OH19LHdyaXRlVGFnOmZ1bmN0aW9u KHQsZSl7dGhpcy53cml0ZVZhcmludCh0PDwzfGUpfSxyZWFsbG9jOmZ1bmN0aW9uKHQpe2Zv cih2YXIgZT10aGlzLmxlbmd0aHx8MTY7ZTx0aGlzLnBvcyt0OyllKj0yO2lmKGUhPT10aGlz Lmxlbmd0aCl7dmFyIHI9bmV3IFVpbnQ4QXJyYXkoZSk7ci5zZXQodGhpcy5idWYpLHRoaXMu YnVmPXIsdGhpcy5sZW5ndGg9ZX19LGZpbmlzaDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxl bmd0aD10aGlzLnBvcyx0aGlzLnBvcz0wLHRoaXMuYnVmLnN1YmFycmF5KDAsdGhpcy5sZW5n dGgpfSx3cml0ZUZpeGVkMzI6ZnVuY3Rpb24odCl7dGhpcy5yZWFsbG9jKDQpLF9sKHRoaXMu YnVmLHQsdGhpcy5wb3MpLHRoaXMucG9zKz00fSx3cml0ZVNGaXhlZDMyOmZ1bmN0aW9uKHQp e3RoaXMucmVhbGxvYyg0KSxfbCh0aGlzLmJ1Zix0LHRoaXMucG9zKSx0aGlzLnBvcys9NH0s d3JpdGVGaXhlZDY0OmZ1bmN0aW9uKHQpe3RoaXMucmVhbGxvYyg4KSxfbCh0aGlzLmJ1Ziwt MSZ0LHRoaXMucG9zKSxfbCh0aGlzLmJ1ZixNYXRoLmZsb29yKHQqKDEvNDI5NDk2NzI5Nikp LHRoaXMucG9zKzQpLHRoaXMucG9zKz04fSx3cml0ZVNGaXhlZDY0OmZ1bmN0aW9uKHQpe3Ro aXMucmVhbGxvYyg4KSxfbCh0aGlzLmJ1ZiwtMSZ0LHRoaXMucG9zKSxfbCh0aGlzLmJ1ZixN YXRoLmZsb29yKHQqKDEvNDI5NDk2NzI5NikpLHRoaXMucG9zKzQpLHRoaXMucG9zKz04fSx3 cml0ZVZhcmludDpmdW5jdGlvbih0KXsodD0rdHx8MCk+MjY4NDM1NDU1fHx0PDA/ZnVuY3Rp b24odCxlKXt2YXIgcixuO3Q+PTA/KHI9dCU0Mjk0OTY3Mjk2fDAsbj10LzQyOTQ5NjcyOTZ8 MCk6KG49figtdC80Mjk0OTY3Mjk2KSw0Mjk0OTY3Mjk1XihyPX4oLXQlNDI5NDk2NzI5Nikp P3I9cisxfDA6KHI9MCxuPW4rMXwwKSk7aWYodD49MHgxMDAwMDAwMDAwMDAwMDAwMHx8dDwt MHgxMDAwMDAwMDAwMDAwMDAwMCl0aHJvdyBuZXcgRXJyb3IoIkdpdmVuIHZhcmludCBkb2Vz bid0IGZpdCBpbnRvIDEwIGJ5dGVzIik7ZS5yZWFsbG9jKDEwKSxmdW5jdGlvbih0LGUscil7 ci5idWZbci5wb3MrK109MTI3JnR8MTI4LHQ+Pj49NyxyLmJ1ZltyLnBvcysrXT0xMjcmdHwx MjgsdD4+Pj03LHIuYnVmW3IucG9zKytdPTEyNyZ0fDEyOCx0Pj4+PTcsci5idWZbci5wb3Mr K109MTI3JnR8MTI4LHQ+Pj49NyxyLmJ1ZltyLnBvc109MTI3JnR9KHIsMCxlKSxmdW5jdGlv bih0LGUpe3ZhciByPSg3JnQpPDw0O2lmKGUuYnVmW2UucG9zKytdfD1yfCgodD4+Pj0zKT8x Mjg6MCksIXQpcmV0dXJuO2lmKGUuYnVmW2UucG9zKytdPTEyNyZ0fCgodD4+Pj03KT8xMjg6 MCksIXQpcmV0dXJuO2lmKGUuYnVmW2UucG9zKytdPTEyNyZ0fCgodD4+Pj03KT8xMjg6MCks IXQpcmV0dXJuO2lmKGUuYnVmW2UucG9zKytdPTEyNyZ0fCgodD4+Pj03KT8xMjg6MCksIXQp cmV0dXJuO2lmKGUuYnVmW2UucG9zKytdPTEyNyZ0fCgodD4+Pj03KT8xMjg6MCksIXQpcmV0 dXJuO2UuYnVmW2UucG9zKytdPTEyNyZ0fShuLGUpfSh0LHRoaXMpOih0aGlzLnJlYWxsb2Mo NCksdGhpcy5idWZbdGhpcy5wb3MrK109MTI3JnR8KHQ+MTI3PzEyODowKSx0PD0xMjd8fCh0 aGlzLmJ1Zlt0aGlzLnBvcysrXT0xMjcmKHQ+Pj49Nyl8KHQ+MTI3PzEyODowKSx0PD0xMjd8 fCh0aGlzLmJ1Zlt0aGlzLnBvcysrXT0xMjcmKHQ+Pj49Nyl8KHQ+MTI3PzEyODowKSx0PD0x Mjd8fCh0aGlzLmJ1Zlt0aGlzLnBvcysrXT10Pj4+NyYxMjcpKSkpfSx3cml0ZVNWYXJpbnQ6 ZnVuY3Rpb24odCl7dGhpcy53cml0ZVZhcmludCh0PDA/MiotdC0xOjIqdCl9LHdyaXRlQm9v bGVhbjpmdW5jdGlvbih0KXt0aGlzLndyaXRlVmFyaW50KEJvb2xlYW4odCkpfSx3cml0ZVN0 cmluZzpmdW5jdGlvbih0KXt0PVN0cmluZyh0KSx0aGlzLnJlYWxsb2MoNCp0Lmxlbmd0aCks dGhpcy5wb3MrKzt2YXIgZT10aGlzLnBvczt0aGlzLnBvcz1mdW5jdGlvbih0LGUscil7Zm9y KHZhciBuLGksYT0wO2E8ZS5sZW5ndGg7YSsrKXtpZigobj1lLmNoYXJDb2RlQXQoYSkpPjU1 Mjk1JiZuPDU3MzQ0KXtpZighaSl7bj41NjMxOXx8YSsxPT09ZS5sZW5ndGg/KHRbcisrXT0y MzksdFtyKytdPTE5MSx0W3IrK109MTg5KTppPW47Y29udGludWV9aWYobjw1NjMyMCl7dFty KytdPTIzOSx0W3IrK109MTkxLHRbcisrXT0xODksaT1uO2NvbnRpbnVlfW49aS01NTI5Njw8 MTB8bi01NjMyMHw2NTUzNixpPW51bGx9ZWxzZSBpJiYodFtyKytdPTIzOSx0W3IrK109MTkx LHRbcisrXT0xODksaT1udWxsKTtuPDEyOD90W3IrK109bjoobjwyMDQ4P3RbcisrXT1uPj42 fDE5Mjoobjw2NTUzNj90W3IrK109bj4+MTJ8MjI0Oih0W3IrK109bj4+MTh8MjQwLHRbcisr XT1uPj4xMiY2M3wxMjgpLHRbcisrXT1uPj42JjYzfDEyOCksdFtyKytdPTYzJm58MTI4KX1y ZXR1cm4gcn0odGhpcy5idWYsdCx0aGlzLnBvcyk7dmFyIHI9dGhpcy5wb3MtZTtyPj0xMjgm JnVsKGUscix0aGlzKSx0aGlzLnBvcz1lLTEsdGhpcy53cml0ZVZhcmludChyKSx0aGlzLnBv cys9cn0sd3JpdGVGbG9hdDpmdW5jdGlvbih0KXt0aGlzLnJlYWxsb2MoNCksaWwodGhpcy5i dWYsdCx0aGlzLnBvcywhMCwyMyw0KSx0aGlzLnBvcys9NH0sd3JpdGVEb3VibGU6ZnVuY3Rp b24odCl7dGhpcy5yZWFsbG9jKDgpLGlsKHRoaXMuYnVmLHQsdGhpcy5wb3MsITAsNTIsOCks dGhpcy5wb3MrPTh9LHdyaXRlQnl0ZXM6ZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGg7dGhp cy53cml0ZVZhcmludChlKSx0aGlzLnJlYWxsb2MoZSk7Zm9yKHZhciByPTA7cjxlO3IrKyl0 aGlzLmJ1Zlt0aGlzLnBvcysrXT10W3JdfSx3cml0ZVJhd01lc3NhZ2U6ZnVuY3Rpb24odCxl KXt0aGlzLnBvcysrO3ZhciByPXRoaXMucG9zO3QoZSx0aGlzKTt2YXIgbj10aGlzLnBvcy1y O24+PTEyOCYmdWwocixuLHRoaXMpLHRoaXMucG9zPXItMSx0aGlzLndyaXRlVmFyaW50KG4p LHRoaXMucG9zKz1ufSx3cml0ZU1lc3NhZ2U6ZnVuY3Rpb24odCxlLHIpe3RoaXMud3JpdGVU YWcodCxvbC5CeXRlcyksdGhpcy53cml0ZVJhd01lc3NhZ2UoZSxyKX0sd3JpdGVQYWNrZWRW YXJpbnQ6ZnVuY3Rpb24odCxlKXtlLmxlbmd0aCYmdGhpcy53cml0ZU1lc3NhZ2UodCxmbCxl KX0sd3JpdGVQYWNrZWRTVmFyaW50OmZ1bmN0aW9uKHQsZSl7ZS5sZW5ndGgmJnRoaXMud3Jp dGVNZXNzYWdlKHQsaGwsZSl9LHdyaXRlUGFja2VkQm9vbGVhbjpmdW5jdGlvbih0LGUpe2Uu bGVuZ3RoJiZ0aGlzLndyaXRlTWVzc2FnZSh0LG1sLGUpfSx3cml0ZVBhY2tlZEZsb2F0OmZ1 bmN0aW9uKHQsZSl7ZS5sZW5ndGgmJnRoaXMud3JpdGVNZXNzYWdlKHQscGwsZSl9LHdyaXRl UGFja2VkRG91YmxlOmZ1bmN0aW9uKHQsZSl7ZS5sZW5ndGgmJnRoaXMud3JpdGVNZXNzYWdl KHQsZGwsZSl9LHdyaXRlUGFja2VkRml4ZWQzMjpmdW5jdGlvbih0LGUpe2UubGVuZ3RoJiZ0 aGlzLndyaXRlTWVzc2FnZSh0LGdsLGUpfSx3cml0ZVBhY2tlZFNGaXhlZDMyOmZ1bmN0aW9u KHQsZSl7ZS5sZW5ndGgmJnRoaXMud3JpdGVNZXNzYWdlKHQsdmwsZSl9LHdyaXRlUGFja2Vk Rml4ZWQ2NDpmdW5jdGlvbih0LGUpe2UubGVuZ3RoJiZ0aGlzLndyaXRlTWVzc2FnZSh0LHls LGUpfSx3cml0ZVBhY2tlZFNGaXhlZDY0OmZ1bmN0aW9uKHQsZSl7ZS5sZW5ndGgmJnRoaXMu d3JpdGVNZXNzYWdlKHQseGwsZSl9LHdyaXRlQnl0ZXNGaWVsZDpmdW5jdGlvbih0LGUpe3Ro aXMud3JpdGVUYWcodCxvbC5CeXRlcyksdGhpcy53cml0ZUJ5dGVzKGUpfSx3cml0ZUZpeGVk MzJGaWVsZDpmdW5jdGlvbih0LGUpe3RoaXMud3JpdGVUYWcodCxvbC5GaXhlZDMyKSx0aGlz LndyaXRlRml4ZWQzMihlKX0sd3JpdGVTRml4ZWQzMkZpZWxkOmZ1bmN0aW9uKHQsZSl7dGhp cy53cml0ZVRhZyh0LG9sLkZpeGVkMzIpLHRoaXMud3JpdGVTRml4ZWQzMihlKX0sd3JpdGVG aXhlZDY0RmllbGQ6ZnVuY3Rpb24odCxlKXt0aGlzLndyaXRlVGFnKHQsb2wuRml4ZWQ2NCks dGhpcy53cml0ZUZpeGVkNjQoZSl9LHdyaXRlU0ZpeGVkNjRGaWVsZDpmdW5jdGlvbih0LGUp e3RoaXMud3JpdGVUYWcodCxvbC5GaXhlZDY0KSx0aGlzLndyaXRlU0ZpeGVkNjQoZSl9LHdy aXRlVmFyaW50RmllbGQ6ZnVuY3Rpb24odCxlKXt0aGlzLndyaXRlVGFnKHQsb2wuVmFyaW50 KSx0aGlzLndyaXRlVmFyaW50KGUpfSx3cml0ZVNWYXJpbnRGaWVsZDpmdW5jdGlvbih0LGUp e3RoaXMud3JpdGVUYWcodCxvbC5WYXJpbnQpLHRoaXMud3JpdGVTVmFyaW50KGUpfSx3cml0 ZVN0cmluZ0ZpZWxkOmZ1bmN0aW9uKHQsZSl7dGhpcy53cml0ZVRhZyh0LG9sLkJ5dGVzKSx0 aGlzLndyaXRlU3RyaW5nKGUpfSx3cml0ZUZsb2F0RmllbGQ6ZnVuY3Rpb24odCxlKXt0aGlz LndyaXRlVGFnKHQsb2wuRml4ZWQzMiksdGhpcy53cml0ZUZsb2F0KGUpfSx3cml0ZURvdWJs ZUZpZWxkOmZ1bmN0aW9uKHQsZSl7dGhpcy53cml0ZVRhZyh0LG9sLkZpeGVkNjQpLHRoaXMu d3JpdGVEb3VibGUoZSl9LHdyaXRlQm9vbGVhbkZpZWxkOmZ1bmN0aW9uKHQsZSl7dGhpcy53 cml0ZVZhcmludEZpZWxkKHQsQm9vbGVhbihlKSl9fTtmdW5jdGlvbiBUbCh0LGUscil7MT09 PXQmJnIucmVhZE1lc3NhZ2Uoa2wsZSl9ZnVuY3Rpb24ga2wodCxlLHIpe2lmKDM9PT10KXt2 YXIgbj1yLnJlYWRNZXNzYWdlKEFsLHt9KSxpPW4uaWQsYT1uLmJpdG1hcCxvPW4ud2lkdGgs cz1uLmhlaWdodCxsPW4ubGVmdCxjPW4udG9wLHU9bi5hZHZhbmNlO2UucHVzaCh7aWQ6aSxi aXRtYXA6bmV3IFNvKHt3aWR0aDpvKzYsaGVpZ2h0OnMrNn0sYSksbWV0cmljczp7d2lkdGg6 byxoZWlnaHQ6cyxsZWZ0OmwsdG9wOmMsYWR2YW5jZTp1fX0pfX1mdW5jdGlvbiBBbCh0LGUs cil7MT09PXQ/ZS5pZD1yLnJlYWRWYXJpbnQoKToyPT09dD9lLmJpdG1hcD1yLnJlYWRCeXRl cygpOjM9PT10P2Uud2lkdGg9ci5yZWFkVmFyaW50KCk6ND09PXQ/ZS5oZWlnaHQ9ci5yZWFk VmFyaW50KCk6NT09PXQ/ZS5sZWZ0PXIucmVhZFNWYXJpbnQoKTo2PT09dD9lLnRvcD1yLnJl YWRTVmFyaW50KCk6Nz09PXQmJihlLmFkdmFuY2U9ci5yZWFkVmFyaW50KCkpfWZ1bmN0aW9u IE1sKHQpe2Zvcih2YXIgZT0wLHI9MCxuPTAsaT10O248aS5sZW5ndGg7bis9MSl7dmFyIGE9 aVtuXTtlKz1hLncqYS5oLHI9TWF0aC5tYXgocixhLncpfXQuc29ydCgoZnVuY3Rpb24odCxl KXtyZXR1cm4gZS5oLXQuaH0pKTtmb3IodmFyIG89W3t4OjAseTowLHc6TWF0aC5tYXgoTWF0 aC5jZWlsKE1hdGguc3FydChlLy45NSkpLHIpLGg6MS8wfV0scz0wLGw9MCxjPTAsdT10O2M8 dS5sZW5ndGg7Yys9MSlmb3IodmFyIGY9dVtjXSxoPW8ubGVuZ3RoLTE7aD49MDtoLS0pe3Zh ciBwPW9baF07aWYoIShmLnc+cC53fHxmLmg+cC5oKSl7aWYoZi54PXAueCxmLnk9cC55LGw9 TWF0aC5tYXgobCxmLnkrZi5oKSxzPU1hdGgubWF4KHMsZi54K2YudyksZi53PT09cC53JiZm Lmg9PT1wLmgpe3ZhciBkPW8ucG9wKCk7aDxvLmxlbmd0aCYmKG9baF09ZCl9ZWxzZSBmLmg9 PT1wLmg/KHAueCs9Zi53LHAudy09Zi53KTpmLnc9PT1wLnc/KHAueSs9Zi5oLHAuaC09Zi5o KTooby5wdXNoKHt4OnAueCtmLncseTpwLnksdzpwLnctZi53LGg6Zi5ofSkscC55Kz1mLmgs cC5oLT1mLmgpO2JyZWFrfX1yZXR1cm57dzpzLGg6bCxmaWxsOmUvKHMqbCl8fDB9fXZhciBT bD1mdW5jdGlvbih0LGUpe3ZhciByPWUucGl4ZWxSYXRpbyxuPWUudmVyc2lvbixpPWUuc3Ry ZXRjaFgsYT1lLnN0cmV0Y2hZLG89ZS5jb250ZW50O3RoaXMucGFkZGVkUmVjdD10LHRoaXMu cGl4ZWxSYXRpbz1yLHRoaXMuc3RyZXRjaFg9aSx0aGlzLnN0cmV0Y2hZPWEsdGhpcy5jb250 ZW50PW8sdGhpcy52ZXJzaW9uPW59LEVsPXt0bDp7Y29uZmlndXJhYmxlOiEwfSxicjp7Y29u ZmlndXJhYmxlOiEwfSx0bGJyOntjb25maWd1cmFibGU6ITB9LGRpc3BsYXlTaXplOntjb25m aWd1cmFibGU6ITB9fTtFbC50bC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm5bdGhpcy5wYWRkZWRS ZWN0LngrMSx0aGlzLnBhZGRlZFJlY3QueSsxXX0sRWwuYnIuZ2V0PWZ1bmN0aW9uKCl7cmV0 dXJuW3RoaXMucGFkZGVkUmVjdC54K3RoaXMucGFkZGVkUmVjdC53LTEsdGhpcy5wYWRkZWRS ZWN0LnkrdGhpcy5wYWRkZWRSZWN0LmgtMV19LEVsLnRsYnIuZ2V0PWZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMudGwuY29uY2F0KHRoaXMuYnIpfSxFbC5kaXNwbGF5U2l6ZS5nZXQ9ZnVuY3Rp b24oKXtyZXR1cm5bKHRoaXMucGFkZGVkUmVjdC53LTIpL3RoaXMucGl4ZWxSYXRpbywodGhp cy5wYWRkZWRSZWN0LmgtMikvdGhpcy5waXhlbFJhdGlvXX0sT2JqZWN0LmRlZmluZVByb3Bl cnRpZXMoU2wucHJvdG90eXBlLEVsKTt2YXIgTGw9ZnVuY3Rpb24odCxlKXt2YXIgcj17fSxu PXt9O3RoaXMuaGF2ZVJlbmRlckNhbGxiYWNrcz1bXTt2YXIgaT1bXTt0aGlzLmFkZEltYWdl cyh0LHIsaSksdGhpcy5hZGRJbWFnZXMoZSxuLGkpO3ZhciBhPU1sKGkpLG89YS53LHM9YS5o LGw9bmV3IEVvKHt3aWR0aDpvfHwxLGhlaWdodDpzfHwxfSk7Zm9yKHZhciBjIGluIHQpe3Zh ciB1PXRbY10sZj1yW2NdLnBhZGRlZFJlY3Q7RW8uY29weSh1LmRhdGEsbCx7eDowLHk6MH0s e3g6Zi54KzEseTpmLnkrMX0sdS5kYXRhKX1mb3IodmFyIGggaW4gZSl7dmFyIHA9ZVtoXSxk PW5baF0ucGFkZGVkUmVjdCxtPWQueCsxLGc9ZC55KzEsdj1wLmRhdGEud2lkdGgseT1wLmRh dGEuaGVpZ2h0O0VvLmNvcHkocC5kYXRhLGwse3g6MCx5OjB9LHt4Om0seTpnfSxwLmRhdGEp LEVvLmNvcHkocC5kYXRhLGwse3g6MCx5OnktMX0se3g6bSx5OmctMX0se3dpZHRoOnYsaGVp Z2h0OjF9KSxFby5jb3B5KHAuZGF0YSxsLHt4OjAseTowfSx7eDptLHk6Zyt5fSx7d2lkdGg6 dixoZWlnaHQ6MX0pLEVvLmNvcHkocC5kYXRhLGwse3g6di0xLHk6MH0se3g6bS0xLHk6Z30s e3dpZHRoOjEsaGVpZ2h0Onl9KSxFby5jb3B5KHAuZGF0YSxsLHt4OjAseTowfSx7eDptK3Ys eTpnfSx7d2lkdGg6MSxoZWlnaHQ6eX0pfXRoaXMuaW1hZ2U9bCx0aGlzLmljb25Qb3NpdGlv bnM9cix0aGlzLnBhdHRlcm5Qb3NpdGlvbnM9bn07TGwucHJvdG90eXBlLmFkZEltYWdlcz1m dW5jdGlvbih0LGUscil7Zm9yKHZhciBuIGluIHQpe3ZhciBpPXRbbl0sYT17eDowLHk6MCx3 OmkuZGF0YS53aWR0aCsyLGg6aS5kYXRhLmhlaWdodCsyfTtyLnB1c2goYSksZVtuXT1uZXcg U2woYSxpKSxpLmhhc1JlbmRlckNhbGxiYWNrJiZ0aGlzLmhhdmVSZW5kZXJDYWxsYmFja3Mu cHVzaChuKX19LExsLnByb3RvdHlwZS5wYXRjaFVwZGF0ZWRJbWFnZXM9ZnVuY3Rpb24odCxl KXtmb3IodmFyIHIgaW4gdC5kaXNwYXRjaFJlbmRlckNhbGxiYWNrcyh0aGlzLmhhdmVSZW5k ZXJDYWxsYmFja3MpLHQudXBkYXRlZEltYWdlcyl0aGlzLnBhdGNoVXBkYXRlZEltYWdlKHRo aXMuaWNvblBvc2l0aW9uc1tyXSx0LmdldEltYWdlKHIpLGUpLHRoaXMucGF0Y2hVcGRhdGVk SW1hZ2UodGhpcy5wYXR0ZXJuUG9zaXRpb25zW3JdLHQuZ2V0SW1hZ2UociksZSl9LExsLnBy b3RvdHlwZS5wYXRjaFVwZGF0ZWRJbWFnZT1mdW5jdGlvbih0LGUscil7aWYodCYmZSYmdC52 ZXJzaW9uIT09ZS52ZXJzaW9uKXt0LnZlcnNpb249ZS52ZXJzaW9uO3ZhciBuPXQudGwsaT1u WzBdLGE9blsxXTtyLnVwZGF0ZShlLmRhdGEsdm9pZCAwLHt4OmkseTphfSl9fSxObigiSW1h Z2VQb3NpdGlvbiIsU2wpLE5uKCJJbWFnZUF0bGFzIixMbCk7dmFyIENsPXtob3Jpem9udGFs OjEsdmVydGljYWw6Mixob3Jpem9udGFsT25seTozfTt2YXIgUGw9ZnVuY3Rpb24oKXt0aGlz LnNjYWxlPTEsdGhpcy5mb250U3RhY2s9IiIsdGhpcy5pbWFnZU5hbWU9bnVsbH07UGwuZm9y VGV4dD1mdW5jdGlvbih0LGUpe3ZhciByPW5ldyBQbDtyZXR1cm4gci5zY2FsZT10fHwxLHIu Zm9udFN0YWNrPWUscn0sUGwuZm9ySW1hZ2U9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IFBsO3Jl dHVybiBlLmltYWdlTmFtZT10LGV9O3ZhciBJbD1mdW5jdGlvbigpe3RoaXMudGV4dD0iIix0 aGlzLnNlY3Rpb25JbmRleD1bXSx0aGlzLnNlY3Rpb25zPVtdLHRoaXMuaW1hZ2VTZWN0aW9u SUQ9bnVsbH07ZnVuY3Rpb24gT2wodCxlLHIsbixpLGEsbyxzLGwsYyx1LGYsaCxwLGQsbSl7 dmFyIGcsdj1JbC5mcm9tRmVhdHVyZSh0LGkpO2Y9PT1DbC52ZXJ0aWNhbCYmdi52ZXJ0aWNh bGl6ZVB1bmN0dWF0aW9uKCk7dmFyIHk9aGkucHJvY2Vzc0JpZGlyZWN0aW9uYWxUZXh0LHg9 aGkucHJvY2Vzc1N0eWxlZEJpZGlyZWN0aW9uYWxUZXh0O2lmKHkmJjE9PT12LnNlY3Rpb25z Lmxlbmd0aCl7Zz1bXTtmb3IodmFyIGI9MCxfPXkodi50b1N0cmluZygpLGpsKHYsYyxhLGUs bixwLGQpKTtiPF8ubGVuZ3RoO2IrPTEpe3ZhciB3PV9bYl0sVD1uZXcgSWw7VC50ZXh0PXcs VC5zZWN0aW9ucz12LnNlY3Rpb25zO2Zvcih2YXIgaz0wO2s8dy5sZW5ndGg7aysrKVQuc2Vj dGlvbkluZGV4LnB1c2goMCk7Zy5wdXNoKFQpfX1lbHNlIGlmKHgpe2c9W107Zm9yKHZhciBB PTAsTT14KHYudGV4dCx2LnNlY3Rpb25JbmRleCxqbCh2LGMsYSxlLG4scCxkKSk7QTxNLmxl bmd0aDtBKz0xKXt2YXIgUz1NW0FdLEU9bmV3IElsO0UudGV4dD1TWzBdLEUuc2VjdGlvbklu ZGV4PVNbMV0sRS5zZWN0aW9ucz12LnNlY3Rpb25zLGcucHVzaChFKX19ZWxzZSBnPWZ1bmN0 aW9uKHQsZSl7Zm9yKHZhciByPVtdLG49dC50ZXh0LGk9MCxhPTAsbz1lO2E8by5sZW5ndGg7 YSs9MSl7dmFyIHM9b1thXTtyLnB1c2godC5zdWJzdHJpbmcoaSxzKSksaT1zfXJldHVybiBp PG4ubGVuZ3RoJiZyLnB1c2godC5zdWJzdHJpbmcoaSxuLmxlbmd0aCkpLHJ9KHYsamwodixj LGEsZSxuLHAsZCkpO3ZhciBMPVtdLEM9e3Bvc2l0aW9uZWRMaW5lczpMLHRleHQ6di50b1N0 cmluZygpLHRvcDp1WzFdLGJvdHRvbTp1WzFdLGxlZnQ6dVswXSxyaWdodDp1WzBdLHdyaXRp bmdNb2RlOmYsaWNvbnNJblRleHQ6ITEsdmVydGljYWxpemFibGU6ITF9O3JldHVybiBmdW5j dGlvbih0LGUscixuLGksYSxvLHMsbCxjLHUsZil7Zm9yKHZhciBoPTAscD0tMTcsZD0wLG09 MCxnPSJyaWdodCI9PT1zPzE6ImxlZnQiPT09cz8wOi41LHY9MCx5PTAseD1pO3k8eC5sZW5n dGg7eSs9MSl7dmFyIGI9eFt5XTtiLnRyaW0oKTt2YXIgXz1iLmdldE1heFNjYWxlKCksdz0y NCooXy0xKSxUPXtwb3NpdGlvbmVkR2x5cGhzOltdLGxpbmVPZmZzZXQ6MH07dC5wb3NpdGlv bmVkTGluZXNbdl09VDt2YXIgaz1ULnBvc2l0aW9uZWRHbHlwaHMsQT0wO2lmKGIubGVuZ3Ro KCkpe2Zvcih2YXIgTT0wO008Yi5sZW5ndGgoKTtNKyspe3ZhciBTPWIuZ2V0U2VjdGlvbihN KSxFPWIuZ2V0U2VjdGlvbkluZGV4KE0pLEw9Yi5nZXRDaGFyQ29kZShNKSxDPTAsUD1udWxs LEk9bnVsbCxPPW51bGwsej0yNCxEPSEobD09PUNsLmhvcml6b250YWx8fCF1JiYhWm4oTCl8 fHUmJih6bFtMXXx8KFk9TCxZbi5BcmFiaWMoWSl8fFluWyJBcmFiaWMgU3VwcGxlbWVudCJd KFkpfHxZblsiQXJhYmljIEV4dGVuZGVkLUEiXShZKXx8WW5bIkFyYWJpYyBQcmVzZW50YXRp b24gRm9ybXMtQSJdKFkpfHxZblsiQXJhYmljIFByZXNlbnRhdGlvbiBGb3Jtcy1CIl0oWSkp KSk7aWYoUy5pbWFnZU5hbWUpe3ZhciBSPW5bUy5pbWFnZU5hbWVdO2lmKCFSKWNvbnRpbnVl O089Uy5pbWFnZU5hbWUsdC5pY29uc0luVGV4dD10Lmljb25zSW5UZXh0fHwhMCxJPVIucGFk ZGVkUmVjdDt2YXIgRj1SLmRpc3BsYXlTaXplO1Muc2NhbGU9MjQqUy5zY2FsZS9mLFA9e3dp ZHRoOkZbMF0saGVpZ2h0OkZbMV0sbGVmdDoxLHRvcDotMyxhZHZhbmNlOkQ/RlsxXTpGWzBd fTt2YXIgQj0yNC1GWzFdKlMuc2NhbGU7Qz13K0Isej1QLmFkdmFuY2U7dmFyIE49RD9GWzBd KlMuc2NhbGUtMjQqXzpGWzFdKlMuc2NhbGUtMjQqXztOPjAmJk4+QSYmKEE9Til9ZWxzZXt2 YXIgaj1yW1MuZm9udFN0YWNrXSxVPWomJmpbTF07aWYoVSYmVS5yZWN0KUk9VS5yZWN0LFA9 VS5tZXRyaWNzO2Vsc2V7dmFyIFY9ZVtTLmZvbnRTdGFja10sSD1WJiZWW0xdO2lmKCFIKWNv bnRpbnVlO1A9SC5tZXRyaWNzfUM9MjQqKF8tUy5zY2FsZSl9RD8odC52ZXJ0aWNhbGl6YWJs ZT0hMCxrLnB1c2goe2dseXBoOkwsaW1hZ2VOYW1lOk8seDpoLHk6cCtDLHZlcnRpY2FsOkQs c2NhbGU6Uy5zY2FsZSxmb250U3RhY2s6Uy5mb250U3RhY2ssc2VjdGlvbkluZGV4OkUsbWV0 cmljczpQLHJlY3Q6SX0pLGgrPXoqUy5zY2FsZStjKTooay5wdXNoKHtnbHlwaDpMLGltYWdl TmFtZTpPLHg6aCx5OnArQyx2ZXJ0aWNhbDpELHNjYWxlOlMuc2NhbGUsZm9udFN0YWNrOlMu Zm9udFN0YWNrLHNlY3Rpb25JbmRleDpFLG1ldHJpY3M6UCxyZWN0Okl9KSxoKz1QLmFkdmFu Y2UqUy5zY2FsZStjKX1pZigwIT09ay5sZW5ndGgpe3ZhciBxPWgtYztkPU1hdGgubWF4KHEs ZCksVmwoaywwLGsubGVuZ3RoLTEsZyxBKX1oPTA7dmFyIEc9YSpfK0E7VC5saW5lT2Zmc2V0 PU1hdGgubWF4KEEsdykscCs9RyxtPU1hdGgubWF4KEcsbSksKyt2fWVsc2UgcCs9YSwrK3Z9 dmFyIFk7dmFyIFc9cC0gLTE3LFg9VWwobyksWj1YLmhvcml6b250YWxBbGlnbixKPVgudmVy dGljYWxBbGlnbjsoZnVuY3Rpb24odCxlLHIsbixpLGEsbyxzLGwpe3ZhciBjPShlLXIpKmks dT0wO3U9YSE9PW8/LXMqbi0gLTE3OigtbipsKy41KSpvO2Zvcih2YXIgZj0wLGg9dDtmPGgu bGVuZ3RoO2YrPTEpZm9yKHZhciBwPWhbZl0sZD0wLG09cC5wb3NpdGlvbmVkR2x5cGhzO2Q8 bS5sZW5ndGg7ZCs9MSl7dmFyIGc9bVtkXTtnLngrPWMsZy55Kz11fX0pKHQucG9zaXRpb25l ZExpbmVzLGcsWixKLGQsbSxhLFcsaS5sZW5ndGgpLHQudG9wKz0tSipXLHQuYm90dG9tPXQu dG9wK1csdC5sZWZ0Kz0tWipkLHQucmlnaHQ9dC5sZWZ0K2R9KEMsZSxyLG4sZyxvLHMsbCxm LGMsaCxtKSwhZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj10O2U8ci5sZW5ndGg7ZSs9MSl7 aWYoMCE9PXJbZV0ucG9zaXRpb25lZEdseXBocy5sZW5ndGgpcmV0dXJuITF9cmV0dXJuITB9 KEwpJiZDfUlsLmZyb21GZWF0dXJlPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPW5ldyBJbCxu PTA7bjx0LnNlY3Rpb25zLmxlbmd0aDtuKyspe3ZhciBpPXQuc2VjdGlvbnNbbl07aS5pbWFn ZT9yLmFkZEltYWdlU2VjdGlvbihpKTpyLmFkZFRleHRTZWN0aW9uKGksZSl9cmV0dXJuIHJ9 LElsLnByb3RvdHlwZS5sZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50ZXh0Lmxlbmd0 aH0sSWwucHJvdG90eXBlLmdldFNlY3Rpb249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2Vj dGlvbnNbdGhpcy5zZWN0aW9uSW5kZXhbdF1dfSxJbC5wcm90b3R5cGUuZ2V0U2VjdGlvbklu ZGV4PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNlY3Rpb25JbmRleFt0XX0sSWwucHJvdG90 eXBlLmdldENoYXJDb2RlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRleHQuY2hhckNvZGVB dCh0KX0sSWwucHJvdG90eXBlLnZlcnRpY2FsaXplUHVuY3R1YXRpb249ZnVuY3Rpb24oKXt0 aGlzLnRleHQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPSIiLHI9MDtyPHQubGVuZ3RoO3IrKyl7 dmFyIG49dC5jaGFyQ29kZUF0KHIrMSl8fG51bGwsaT10LmNoYXJDb2RlQXQoci0xKXx8bnVs bDsoIW58fCFKbihuKXx8cmxbdFtyKzFdXSkmJighaXx8IUpuKGkpfHxybFt0W3ItMV1dKSYm cmxbdFtyXV0/ZSs9cmxbdFtyXV06ZSs9dFtyXX1yZXR1cm4gZX0odGhpcy50ZXh0KX0sSWwu cHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxlPTA7ZTx0aGlzLnRleHQu bGVuZ3RoJiZ6bFt0aGlzLnRleHQuY2hhckNvZGVBdChlKV07ZSsrKXQrKztmb3IodmFyIHI9 dGhpcy50ZXh0Lmxlbmd0aCxuPXRoaXMudGV4dC5sZW5ndGgtMTtuPj0wJiZuPj10JiZ6bFt0 aGlzLnRleHQuY2hhckNvZGVBdChuKV07bi0tKXItLTt0aGlzLnRleHQ9dGhpcy50ZXh0LnN1 YnN0cmluZyh0LHIpLHRoaXMuc2VjdGlvbkluZGV4PXRoaXMuc2VjdGlvbkluZGV4LnNsaWNl KHQscil9LElsLnByb3RvdHlwZS5zdWJzdHJpbmc9ZnVuY3Rpb24odCxlKXt2YXIgcj1uZXcg SWw7cmV0dXJuIHIudGV4dD10aGlzLnRleHQuc3Vic3RyaW5nKHQsZSksci5zZWN0aW9uSW5k ZXg9dGhpcy5zZWN0aW9uSW5kZXguc2xpY2UodCxlKSxyLnNlY3Rpb25zPXRoaXMuc2VjdGlv bnMscn0sSWwucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGV4 dH0sSWwucHJvdG90eXBlLmdldE1heFNjYWxlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1 cm4gdGhpcy5zZWN0aW9uSW5kZXgucmVkdWNlKChmdW5jdGlvbihlLHIpe3JldHVybiBNYXRo Lm1heChlLHQuc2VjdGlvbnNbcl0uc2NhbGUpfSksMCl9LElsLnByb3RvdHlwZS5hZGRUZXh0 U2VjdGlvbj1mdW5jdGlvbih0LGUpe3RoaXMudGV4dCs9dC50ZXh0LHRoaXMuc2VjdGlvbnMu cHVzaChQbC5mb3JUZXh0KHQuc2NhbGUsdC5mb250U3RhY2t8fGUpKTtmb3IodmFyIHI9dGhp cy5zZWN0aW9ucy5sZW5ndGgtMSxuPTA7bjx0LnRleHQubGVuZ3RoOysrbil0aGlzLnNlY3Rp b25JbmRleC5wdXNoKHIpfSxJbC5wcm90b3R5cGUuYWRkSW1hZ2VTZWN0aW9uPWZ1bmN0aW9u KHQpe3ZhciBlPXQuaW1hZ2U/dC5pbWFnZS5uYW1lOiIiO2lmKDAhPT1lLmxlbmd0aCl7dmFy IHI9dGhpcy5nZXROZXh0SW1hZ2VTZWN0aW9uQ2hhckNvZGUoKTtyPyh0aGlzLnRleHQrPVN0 cmluZy5mcm9tQ2hhckNvZGUociksdGhpcy5zZWN0aW9ucy5wdXNoKFBsLmZvckltYWdlKGUp KSx0aGlzLnNlY3Rpb25JbmRleC5wdXNoKHRoaXMuc2VjdGlvbnMubGVuZ3RoLTEpKTpfKCJS ZWFjaGVkIG1heGltdW0gbnVtYmVyIG9mIGltYWdlcyA2NDAxIil9ZWxzZSBfKCJDYW4ndCBh ZGQgRm9ybWF0dGVkU2VjdGlvbiB3aXRoIGFuIGVtcHR5IGltYWdlLiIpfSxJbC5wcm90b3R5 cGUuZ2V0TmV4dEltYWdlU2VjdGlvbkNoYXJDb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu aW1hZ2VTZWN0aW9uSUQ/dGhpcy5pbWFnZVNlY3Rpb25JRD49NjM3NDM/bnVsbDorK3RoaXMu aW1hZ2VTZWN0aW9uSUQ6KHRoaXMuaW1hZ2VTZWN0aW9uSUQ9NTczNDQsdGhpcy5pbWFnZVNl Y3Rpb25JRCl9O3ZhciB6bD17OTohMCwxMDohMCwxMTohMCwxMjohMCwxMzohMCwzMjohMH0s RGw9e307ZnVuY3Rpb24gUmwodCxlLHIsbixpLGEpe2lmKGUuaW1hZ2VOYW1lKXt2YXIgbz1u W2UuaW1hZ2VOYW1lXTtyZXR1cm4gbz9vLmRpc3BsYXlTaXplWzBdKmUuc2NhbGUqMjQvYStp OjB9dmFyIHM9cltlLmZvbnRTdGFja10sbD1zJiZzW3RdO3JldHVybiBsP2wubWV0cmljcy5h ZHZhbmNlKmUuc2NhbGUraTowfWZ1bmN0aW9uIEZsKHQsZSxyLG4pe3ZhciBpPU1hdGgucG93 KHQtZSwyKTtyZXR1cm4gbj90PGU/aS8yOjIqaTppK01hdGguYWJzKHIpKnJ9ZnVuY3Rpb24g QmwodCxlLHIpe3ZhciBuPTA7cmV0dXJuIDEwPT09dCYmKG4tPTFlNCksciYmKG4rPTE1MCks NDAhPT10JiY2NTI4OCE9PXR8fChuKz01MCksNDEhPT1lJiY2NTI4OSE9PWV8fChuKz01MCks bn1mdW5jdGlvbiBObCh0LGUscixuLGksYSl7Zm9yKHZhciBvPW51bGwscz1GbChlLHIsaSxh KSxsPTAsYz1uO2w8Yy5sZW5ndGg7bCs9MSl7dmFyIHU9Y1tsXSxmPUZsKGUtdS54LHIsaSxh KSt1LmJhZG5lc3M7Zjw9cyYmKG89dSxzPWYpfXJldHVybntpbmRleDp0LHg6ZSxwcmlvckJy ZWFrOm8sYmFkbmVzczpzfX1mdW5jdGlvbiBqbCh0LGUscixuLGksYSxvKXtpZigicG9pbnQi IT09YSlyZXR1cm5bXTtpZighdClyZXR1cm5bXTtmb3IodmFyIHMsbD1bXSxjPWZ1bmN0aW9u KHQsZSxyLG4saSxhKXtmb3IodmFyIG89MCxzPTA7czx0Lmxlbmd0aCgpO3MrKyl7dmFyIGw9 dC5nZXRTZWN0aW9uKHMpO28rPVJsKHQuZ2V0Q2hhckNvZGUocyksbCxuLGksZSxhKX1yZXR1 cm4gby9NYXRoLm1heCgxLE1hdGguY2VpbChvL3IpKX0odCxlLHIsbixpLG8pLHU9dC50ZXh0 LmluZGV4T2YoIlx1MjAwYiIpPj0wLGY9MCxoPTA7aDx0Lmxlbmd0aCgpO2grKyl7dmFyIHA9 dC5nZXRTZWN0aW9uKGgpLGQ9dC5nZXRDaGFyQ29kZShoKTtpZih6bFtkXXx8KGYrPVJsKGQs cCxuLGksZSxvKSksaDx0Lmxlbmd0aCgpLTEpe3ZhciBtPSEhKCEoKHM9ZCk8MTE5MDQpJiYo WW5bIkJvcG9tb2ZvIEV4dGVuZGVkIl0ocyl8fFluLkJvcG9tb2ZvKHMpfHxZblsiQ0pLIENv bXBhdGliaWxpdHkgRm9ybXMiXShzKXx8WW5bIkNKSyBDb21wYXRpYmlsaXR5IElkZW9ncmFw aHMiXShzKXx8WW5bIkNKSyBDb21wYXRpYmlsaXR5Il0ocyl8fFluWyJDSksgUmFkaWNhbHMg U3VwcGxlbWVudCJdKHMpfHxZblsiQ0pLIFN0cm9rZXMiXShzKXx8WW5bIkNKSyBTeW1ib2xz IGFuZCBQdW5jdHVhdGlvbiJdKHMpfHxZblsiQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyBFeHRl bnNpb24gQSJdKHMpfHxZblsiQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyJdKHMpfHxZblsiRW5j bG9zZWQgQ0pLIExldHRlcnMgYW5kIE1vbnRocyJdKHMpfHxZblsiSGFsZndpZHRoIGFuZCBG dWxsd2lkdGggRm9ybXMiXShzKXx8WW4uSGlyYWdhbmEocyl8fFluWyJJZGVvZ3JhcGhpYyBE ZXNjcmlwdGlvbiBDaGFyYWN0ZXJzIl0ocyl8fFluWyJLYW5neGkgUmFkaWNhbHMiXShzKXx8 WW5bIkthdGFrYW5hIFBob25ldGljIEV4dGVuc2lvbnMiXShzKXx8WW4uS2F0YWthbmEocyl8 fFluWyJWZXJ0aWNhbCBGb3JtcyJdKHMpfHxZblsiWWkgUmFkaWNhbHMiXShzKXx8WW5bIllp IFN5bGxhYmxlcyJdKHMpKSk7KERsW2RdfHxtfHxwLmltYWdlTmFtZSkmJmwucHVzaChObCho KzEsZixjLGwsQmwoZCx0LmdldENoYXJDb2RlKGgrMSksbSYmdSksITEpKX19cmV0dXJuIGZ1 bmN0aW9uIHQoZSl7cmV0dXJuIGU/dChlLnByaW9yQnJlYWspLmNvbmNhdChlLmluZGV4KTpb XX0oTmwodC5sZW5ndGgoKSxmLGMsbCwwLCEwKSl9ZnVuY3Rpb24gVWwodCl7dmFyIGU9LjUs cj0uNTtzd2l0Y2godCl7Y2FzZSJyaWdodCI6Y2FzZSJ0b3AtcmlnaHQiOmNhc2UiYm90dG9t LXJpZ2h0IjplPTE7YnJlYWs7Y2FzZSJsZWZ0IjpjYXNlInRvcC1sZWZ0IjpjYXNlImJvdHRv bS1sZWZ0IjplPTB9c3dpdGNoKHQpe2Nhc2UiYm90dG9tIjpjYXNlImJvdHRvbS1yaWdodCI6 Y2FzZSJib3R0b20tbGVmdCI6cj0xO2JyZWFrO2Nhc2UidG9wIjpjYXNlInRvcC1yaWdodCI6 Y2FzZSJ0b3AtbGVmdCI6cj0wfXJldHVybntob3Jpem9udGFsQWxpZ246ZSx2ZXJ0aWNhbEFs aWduOnJ9fWZ1bmN0aW9uIFZsKHQsZSxyLG4saSl7aWYobnx8aSlmb3IodmFyIGE9dFtyXSxv PWEubWV0cmljcy5hZHZhbmNlKmEuc2NhbGUscz0odFtyXS54K28pKm4sbD1lO2w8PXI7bCsr KXRbbF0ueC09cyx0W2xdLnkrPWl9ZnVuY3Rpb24gSGwodCxlLHIsbixpLGEpe3ZhciBvLHM9 dC5pbWFnZTtpZihzLmNvbnRlbnQpe3ZhciBsPXMuY29udGVudCxjPXMucGl4ZWxSYXRpb3x8 MTtvPVtsWzBdL2MsbFsxXS9jLHMuZGlzcGxheVNpemVbMF0tbFsyXS9jLHMuZGlzcGxheVNp emVbMV0tbFszXS9jXX12YXIgdSxmLGgscCxkPWUubGVmdCphLG09ZS5yaWdodCphOyJ3aWR0 aCI9PT1yfHwiYm90aCI9PT1yPyhwPWlbMF0rZC1uWzNdLGY9aVswXSttK25bMV0pOmY9KHA9 aVswXSsoZCttLXMuZGlzcGxheVNpemVbMF0pLzIpK3MuZGlzcGxheVNpemVbMF07dmFyIGc9 ZS50b3AqYSx2PWUuYm90dG9tKmE7cmV0dXJuImhlaWdodCI9PT1yfHwiYm90aCI9PT1yPyh1 PWlbMV0rZy1uWzBdLGg9aVsxXSt2K25bMl0pOmg9KHU9aVsxXSsoZyt2LXMuZGlzcGxheVNp emVbMV0pLzIpK3MuZGlzcGxheVNpemVbMV0se2ltYWdlOnMsdG9wOnUscmlnaHQ6Zixib3R0 b206aCxsZWZ0OnAsY29sbGlzaW9uUGFkZGluZzpvfX1EbFsxMF09ITAsRGxbMzJdPSEwLERs WzM4XT0hMCxEbFs0MF09ITAsRGxbNDFdPSEwLERsWzQzXT0hMCxEbFs0NV09ITAsRGxbNDdd PSEwLERsWzE3M109ITAsRGxbMTgzXT0hMCxEbFs4MjAzXT0hMCxEbFs4MjA4XT0hMCxEbFs4 MjExXT0hMCxEbFs4MjMxXT0hMDt2YXIgcWw9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLHIs bixpKXt0LmNhbGwodGhpcyxlLHIpLHRoaXMuYW5nbGU9bix2b2lkIDAhPT1pJiYodGhpcy5z ZWdtZW50PWkpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0 LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnBy b3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgZSh0aGlzLngsdGhpcy55LHRo aXMuYW5nbGUsdGhpcy5zZWdtZW50KX0sZX0oaSk7Tm4oIkFuY2hvciIscWwpO2Z1bmN0aW9u IEdsKHQsZSl7dmFyIHI9ZS5leHByZXNzaW9uO2lmKCJjb25zdGFudCI9PT1yLmtpbmQpcmV0 dXJue2tpbmQ6ImNvbnN0YW50IixsYXlvdXRTaXplOnIuZXZhbHVhdGUobmV3IHBpKHQrMSkp fTtpZigic291cmNlIj09PXIua2luZClyZXR1cm57a2luZDoic291cmNlIn07Zm9yKHZhciBu PXIuem9vbVN0b3BzLGk9ci5pbnRlcnBvbGF0aW9uVHlwZSxhPTA7YTxuLmxlbmd0aCYmblth XTw9dDspYSsrO2Zvcih2YXIgbz1hPU1hdGgubWF4KDAsYS0xKTtvPG4ubGVuZ3RoJiZuW29d PHQrMTspbysrO289TWF0aC5taW4obi5sZW5ndGgtMSxvKTt2YXIgcz1uW2FdLGw9bltvXTty ZXR1cm4iY29tcG9zaXRlIj09PXIua2luZD97a2luZDoiY29tcG9zaXRlIixtaW5ab29tOnMs bWF4Wm9vbTpsLGludGVycG9sYXRpb25UeXBlOml9OntraW5kOiJjYW1lcmEiLG1pblpvb206 cyxtYXhab29tOmwsbWluU2l6ZTpyLmV2YWx1YXRlKG5ldyBwaShzKSksbWF4U2l6ZTpyLmV2 YWx1YXRlKG5ldyBwaShsKSksaW50ZXJwb2xhdGlvblR5cGU6aX19ZnVuY3Rpb24gWWwodCxl LHIpe3ZhciBuPWUudVNpemUsaT1lLnVTaXplVCxhPXIubG93ZXJTaXplLG89ci51cHBlclNp emU7cmV0dXJuInNvdXJjZSI9PT10LmtpbmQ/YS8xMjg6ImNvbXBvc2l0ZSI9PT10LmtpbmQ/ cWUoYS8xMjgsby8xMjgsaSk6bn1mdW5jdGlvbiBXbCh0LGUpe3ZhciByPTAsbj0wO2lmKCJj b25zdGFudCI9PT10LmtpbmQpbj10LmxheW91dFNpemU7ZWxzZSBpZigic291cmNlIiE9PXQu a2luZCl7dmFyIGk9dC5pbnRlcnBvbGF0aW9uVHlwZSxhPXQubWluWm9vbSxvPXQubWF4Wm9v bSxzPWk/bChvci5pbnRlcnBvbGF0aW9uRmFjdG9yKGksZSxhLG8pLDAsMSk6MDsiY2FtZXJh Ij09PXQua2luZD9uPXFlKHQubWluU2l6ZSx0Lm1heFNpemUscyk6cj1zfXJldHVybnt1U2l6 ZVQ6cix1U2l6ZTpufX12YXIgWGw9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsZ2V0 U2l6ZURhdGE6R2wsZXZhbHVhdGVTaXplRm9yRmVhdHVyZTpZbCxldmFsdWF0ZVNpemVGb3Ja b29tOldsLFNJWkVfUEFDS19GQUNUT1I6MTI4fSk7ZnVuY3Rpb24gWmwodCxlLHIsbixpKXtp Zih2b2lkIDA9PT1lLnNlZ21lbnQpcmV0dXJuITA7Zm9yKHZhciBhPWUsbz1lLnNlZ21lbnQr MSxzPTA7cz4tci8yOyl7aWYoLS1vPDApcmV0dXJuITE7cy09dFtvXS5kaXN0KGEpLGE9dFtv XX1zKz10W29dLmRpc3QodFtvKzFdKSxvKys7Zm9yKHZhciBsPVtdLGM9MDtzPHIvMjspe3Zh ciB1PXRbby0xXSxmPXRbb10saD10W28rMV07aWYoIWgpcmV0dXJuITE7dmFyIHA9dS5hbmds ZVRvKGYpLWYuYW5nbGVUbyhoKTtmb3IocD1NYXRoLmFicygocCszKk1hdGguUEkpJSgyKk1h dGguUEkpLU1hdGguUEkpLGwucHVzaCh7ZGlzdGFuY2U6cyxhbmdsZURlbHRhOnB9KSxjKz1w O3MtbFswXS5kaXN0YW5jZT5uOyljLT1sLnNoaWZ0KCkuYW5nbGVEZWx0YTtpZihjPmkpcmV0 dXJuITE7bysrLHMrPWYuZGlzdChoKX1yZXR1cm4hMH1mdW5jdGlvbiBKbCh0KXtmb3IodmFy IGU9MCxyPTA7cjx0Lmxlbmd0aC0xO3IrKyllKz10W3JdLmRpc3QodFtyKzFdKTtyZXR1cm4g ZX1mdW5jdGlvbiBLbCh0LGUscil7cmV0dXJuIHQ/LjYqZSpyOjB9ZnVuY3Rpb24gUWwodCxl KXtyZXR1cm4gTWF0aC5tYXgodD90LnJpZ2h0LXQubGVmdDowLGU/ZS5yaWdodC1lLmxlZnQ6 MCl9ZnVuY3Rpb24gJGwodCxlLHIsbixpLGEpe2Zvcih2YXIgbz1LbChyLGksYSkscz1RbChy LG4pKmEsbD0wLGM9SmwodCkvMix1PTA7dTx0Lmxlbmd0aC0xO3UrKyl7dmFyIGY9dFt1XSxo PXRbdSsxXSxwPWYuZGlzdChoKTtpZihsK3A+Yyl7dmFyIGQ9KGMtbCkvcCxtPXFlKGYueCxo LngsZCksZz1xZShmLnksaC55LGQpLHY9bmV3IHFsKG0sZyxoLmFuZ2xlVG8oZiksdSk7cmV0 dXJuIHYuX3JvdW5kKCksIW98fFpsKHQsdixzLG8sZSk/djp2b2lkIDB9bCs9cH19ZnVuY3Rp b24gdGModCxlLHIsbixpLGEsbyxzLGwpe3ZhciBjPUtsKG4sYSxvKSx1PVFsKG4saSksZj11 Km8saD0wPT09dFswXS54fHx0WzBdLng9PT1sfHwwPT09dFswXS55fHx0WzBdLnk9PT1sO3Jl dHVybiBlLWY8ZS80JiYoZT1mK2UvNCksZnVuY3Rpb24gdChlLHIsbixpLGEsbyxzLGwsYyl7 Zm9yKHZhciB1PW8vMixmPUpsKGUpLGg9MCxwPXItbixkPVtdLG09MDttPGUubGVuZ3RoLTE7 bSsrKXtmb3IodmFyIGc9ZVttXSx2PWVbbSsxXSx5PWcuZGlzdCh2KSx4PXYuYW5nbGVUbyhn KTtwK248aCt5Oyl7dmFyIGI9KChwKz1uKS1oKS95LF89cWUoZy54LHYueCxiKSx3PXFlKGcu eSx2LnksYik7aWYoXz49MCYmXzxjJiZ3Pj0wJiZ3PGMmJnAtdT49MCYmcCt1PD1mKXt2YXIg VD1uZXcgcWwoXyx3LHgsbSk7VC5fcm91bmQoKSxpJiYhWmwoZSxULG8saSxhKXx8ZC5wdXNo KFQpfX1oKz15fWx8fGQubGVuZ3RofHxzfHwoZD10KGUsaC8yLG4saSxhLG8scywhMCxjKSk7 cmV0dXJuIGR9KHQsaD9lLzIqcyVlOih1LzIrMiphKSpvKnMlZSxlLGMscixmLGgsITEsbCl9 ZnVuY3Rpb24gZWModCxlLHIsbixhKXtmb3IodmFyIG89W10scz0wO3M8dC5sZW5ndGg7cysr KWZvcih2YXIgbD10W3NdLGM9dm9pZCAwLHU9MDt1PGwubGVuZ3RoLTE7dSsrKXt2YXIgZj1s W3VdLGg9bFt1KzFdO2YueDxlJiZoLng8ZXx8KGYueDxlP2Y9bmV3IGkoZSxmLnkrKGgueS1m LnkpKigoZS1mLngpLyhoLngtZi54KSkpLl9yb3VuZCgpOmgueDxlJiYoaD1uZXcgaShlLGYu eSsoaC55LWYueSkqKChlLWYueCkvKGgueC1mLngpKSkuX3JvdW5kKCkpLGYueTxyJiZoLnk8 cnx8KGYueTxyP2Y9bmV3IGkoZi54KyhoLngtZi54KSooKHItZi55KS8oaC55LWYueSkpLHIp Ll9yb3VuZCgpOmgueTxyJiYoaD1uZXcgaShmLngrKGgueC1mLngpKigoci1mLnkpLyhoLnkt Zi55KSkscikuX3JvdW5kKCkpLGYueD49biYmaC54Pj1ufHwoZi54Pj1uP2Y9bmV3IGkobixm LnkrKGgueS1mLnkpKigobi1mLngpLyhoLngtZi54KSkpLl9yb3VuZCgpOmgueD49biYmKGg9 bmV3IGkobixmLnkrKGgueS1mLnkpKigobi1mLngpLyhoLngtZi54KSkpLl9yb3VuZCgpKSxm Lnk+PWEmJmgueT49YXx8KGYueT49YT9mPW5ldyBpKGYueCsoaC54LWYueCkqKChhLWYueSkv KGgueS1mLnkpKSxhKS5fcm91bmQoKTpoLnk+PWEmJihoPW5ldyBpKGYueCsoaC54LWYueCkq KChhLWYueSkvKGgueS1mLnkpKSxhKS5fcm91bmQoKSksYyYmZi5lcXVhbHMoY1tjLmxlbmd0 aC0xXSl8fChjPVtmXSxvLnB1c2goYykpLGMucHVzaChoKSkpKSl9cmV0dXJuIG99ZnVuY3Rp b24gcmModCxlLHIsbil7dmFyIGE9W10sbz10LmltYWdlLHM9by5waXhlbFJhdGlvLGw9by5w YWRkZWRSZWN0LnctMixjPW8ucGFkZGVkUmVjdC5oLTIsdT10LnJpZ2h0LXQubGVmdCxmPXQu Ym90dG9tLXQudG9wLGg9by5zdHJldGNoWHx8W1swLGxdXSxwPW8uc3RyZXRjaFl8fFtbMCxj XV0sZD1mdW5jdGlvbih0LGUpe3JldHVybiB0K2VbMV0tZVswXX0sbT1oLnJlZHVjZShkLDAp LGc9cC5yZWR1Y2UoZCwwKSx2PWwtbSx5PWMtZyx4PTAsYj1tLF89MCx3PWcsVD0wLGs9dixB PTAsTT15O2lmKG8uY29udGVudCYmbil7dmFyIFM9by5jb250ZW50O3g9bmMoaCwwLFNbMF0p LF89bmMocCwwLFNbMV0pLGI9bmMoaCxTWzBdLFNbMl0pLHc9bmMocCxTWzFdLFNbM10pLFQ9 U1swXS14LEE9U1sxXS1fLGs9U1syXS1TWzBdLWIsTT1TWzNdLVNbMV0td312YXIgRT1mdW5j dGlvbihuLGEsbCxjKXt2YXIgaD1hYyhuLnN0cmV0Y2gteCxiLHUsdC5sZWZ0KSxwPW9jKG4u Zml4ZWQtVCxrLG4uc3RyZXRjaCxtKSxkPWFjKGEuc3RyZXRjaC1fLHcsZix0LnRvcCksdj1v YyhhLmZpeGVkLUEsTSxhLnN0cmV0Y2gsZykseT1hYyhsLnN0cmV0Y2gteCxiLHUsdC5sZWZ0 KSxTPW9jKGwuZml4ZWQtVCxrLGwuc3RyZXRjaCxtKSxFPWFjKGMuc3RyZXRjaC1fLHcsZix0 LnRvcCksTD1vYyhjLmZpeGVkLUEsTSxjLnN0cmV0Y2gsZyksQz1uZXcgaShoLGQpLFA9bmV3 IGkoeSxkKSxJPW5ldyBpKHksRSksTz1uZXcgaShoLEUpLHo9bmV3IGkocC9zLHYvcyksRD1u ZXcgaShTL3MsTC9zKSxSPWUqTWF0aC5QSS8xODA7aWYoUil7dmFyIEY9TWF0aC5zaW4oUiks Qj1NYXRoLmNvcyhSKSxOPVtCLC1GLEYsQl07Qy5fbWF0TXVsdChOKSxQLl9tYXRNdWx0KE4p LE8uX21hdE11bHQoTiksSS5fbWF0TXVsdChOKX12YXIgaj1uLnN0cmV0Y2grbi5maXhlZCxV PWwuc3RyZXRjaCtsLmZpeGVkLFY9YS5zdHJldGNoK2EuZml4ZWQsSD1jLnN0cmV0Y2grYy5m aXhlZDtyZXR1cm57dGw6Qyx0cjpQLGJsOk8sYnI6SSx0ZXg6e3g6by5wYWRkZWRSZWN0Lngr MStqLHk6by5wYWRkZWRSZWN0LnkrMStWLHc6VS1qLGg6SC1WfSx3cml0aW5nTW9kZTp2b2lk IDAsZ2x5cGhPZmZzZXQ6WzAsMF0sc2VjdGlvbkluZGV4OjAscGl4ZWxPZmZzZXRUTDp6LHBp eGVsT2Zmc2V0QlI6RCxtaW5Gb250U2NhbGVYOmsvcy91LG1pbkZvbnRTY2FsZVk6TS9zL2Ys aXNTREY6cn19O2lmKG4mJihvLnN0cmV0Y2hYfHxvLnN0cmV0Y2hZKSlmb3IodmFyIEw9aWMo aCx2LG0pLEM9aWMocCx5LGcpLFA9MDtQPEwubGVuZ3RoLTE7UCsrKWZvcih2YXIgST1MW1Bd LE89TFtQKzFdLHo9MDt6PEMubGVuZ3RoLTE7eisrKXt2YXIgRD1DW3pdLFI9Q1t6KzFdO2Eu cHVzaChFKEksRCxPLFIpKX1lbHNlIGEucHVzaChFKHtmaXhlZDowLHN0cmV0Y2g6LTF9LHtm aXhlZDowLHN0cmV0Y2g6LTF9LHtmaXhlZDowLHN0cmV0Y2g6bCsxfSx7Zml4ZWQ6MCxzdHJl dGNoOmMrMX0pKTtyZXR1cm4gYX1mdW5jdGlvbiBuYyh0LGUscil7Zm9yKHZhciBuPTAsaT0w LGE9dDtpPGEubGVuZ3RoO2krPTEpe3ZhciBvPWFbaV07bis9TWF0aC5tYXgoZSxNYXRoLm1p bihyLG9bMV0pKS1NYXRoLm1heChlLE1hdGgubWluKHIsb1swXSkpfXJldHVybiBufWZ1bmN0 aW9uIGljKHQsZSxyKXtmb3IodmFyIG49W3tmaXhlZDotMSxzdHJldGNoOjB9XSxpPTAsYT10 O2k8YS5sZW5ndGg7aSs9MSl7dmFyIG89YVtpXSxzPW9bMF0sbD1vWzFdLGM9bltuLmxlbmd0 aC0xXTtuLnB1c2goe2ZpeGVkOnMtYy5zdHJldGNoLHN0cmV0Y2g6Yy5zdHJldGNofSksbi5w dXNoKHtmaXhlZDpzLWMuc3RyZXRjaCxzdHJldGNoOmMuc3RyZXRjaCsobC1zKX0pfXJldHVy biBuLnB1c2goe2ZpeGVkOmUrMSxzdHJldGNoOnJ9KSxufWZ1bmN0aW9uIGFjKHQsZSxyLG4p e3JldHVybiB0L2UqcitufWZ1bmN0aW9uIG9jKHQsZSxyLG4pe3JldHVybiB0LWUqci9ufXZh ciBzYz1mdW5jdGlvbih0LGUscixuLGEsbyxzLGwsYyx1KXtpZih0aGlzLmJveFN0YXJ0SW5k ZXg9dC5sZW5ndGgsYyl7dmFyIGY9by50b3AsaD1vLmJvdHRvbSxwPW8uY29sbGlzaW9uUGFk ZGluZztwJiYoZi09cFsxXSxoKz1wWzNdKTt2YXIgZD1oLWY7ZD4wJiYoZD1NYXRoLm1heCgx MCxkKSx0aGlzLmNpcmNsZURpYW1ldGVyPWQpfWVsc2V7dmFyIG09by50b3Aqcy1sLGc9by5i b3R0b20qcytsLHY9by5sZWZ0KnMtbCx5PW8ucmlnaHQqcytsLHg9by5jb2xsaXNpb25QYWRk aW5nO2lmKHgmJih2LT14WzBdKnMsbS09eFsxXSpzLHkrPXhbMl0qcyxnKz14WzNdKnMpLHUp e3ZhciBiPW5ldyBpKHYsbSksXz1uZXcgaSh5LG0pLHc9bmV3IGkodixnKSxUPW5ldyBpKHks Zyksaz11Kk1hdGguUEkvMTgwO2IuX3JvdGF0ZShrKSxfLl9yb3RhdGUoayksdy5fcm90YXRl KGspLFQuX3JvdGF0ZShrKSx2PU1hdGgubWluKGIueCxfLngsdy54LFQueCkseT1NYXRoLm1h eChiLngsXy54LHcueCxULngpLG09TWF0aC5taW4oYi55LF8ueSx3LnksVC55KSxnPU1hdGgu bWF4KGIueSxfLnksdy55LFQueSl9dC5lbXBsYWNlQmFjayhlLngsZS55LHYsbSx5LGcscixu LGEpfXRoaXMuYm94RW5kSW5kZXg9dC5sZW5ndGh9LGxjPWZ1bmN0aW9uKHQsZSl7aWYodm9p ZCAwPT09dCYmKHQ9W10pLHZvaWQgMD09PWUmJihlPWNjKSx0aGlzLmRhdGE9dCx0aGlzLmxl bmd0aD10aGlzLmRhdGEubGVuZ3RoLHRoaXMuY29tcGFyZT1lLHRoaXMubGVuZ3RoPjApZm9y KHZhciByPSh0aGlzLmxlbmd0aD4+MSktMTtyPj0wO3ItLSl0aGlzLl9kb3duKHIpfTtmdW5j dGlvbiBjYyh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6MH1mdW5jdGlvbiB1Yyh0LGUscil7 dm9pZCAwPT09ZSYmKGU9MSksdm9pZCAwPT09ciYmKHI9ITEpO2Zvcih2YXIgbj0xLzAsYT0x LzAsbz0tMS8wLHM9LTEvMCxsPXRbMF0sYz0wO2M8bC5sZW5ndGg7YysrKXt2YXIgdT1sW2Nd OyghY3x8dS54PG4pJiYobj11LngpLCghY3x8dS55PGEpJiYoYT11LnkpLCghY3x8dS54Pm8p JiYobz11LngpLCghY3x8dS55PnMpJiYocz11LnkpfXZhciBmPW8tbixoPXMtYSxwPU1hdGgu bWluKGYsaCksZD1wLzIsbT1uZXcgbGMoW10sZmMpO2lmKDA9PT1wKXJldHVybiBuZXcgaShu LGEpO2Zvcih2YXIgZz1uO2c8bztnKz1wKWZvcih2YXIgdj1hO3Y8czt2Kz1wKW0ucHVzaChu ZXcgaGMoZytkLHYrZCxkLHQpKTtmb3IodmFyIHk9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAs cj0wLG49MCxpPXRbMF0sYT0wLG89aS5sZW5ndGgscz1vLTE7YTxvO3M9YSsrKXt2YXIgbD1p W2FdLGM9aVtzXSx1PWwueCpjLnktYy54KmwueTtyKz0obC54K2MueCkqdSxuKz0obC55K2Mu eSkqdSxlKz0zKnV9cmV0dXJuIG5ldyBoYyhyL2Usbi9lLDAsdCl9KHQpLHg9bS5sZW5ndGg7 bS5sZW5ndGg7KXt2YXIgYj1tLnBvcCgpOyhiLmQ+eS5kfHwheS5kKSYmKHk9YixyJiZjb25z b2xlLmxvZygiZm91bmQgYmVzdCAlZCBhZnRlciAlZCBwcm9iZXMiLE1hdGgucm91bmQoMWU0 KmIuZCkvMWU0LHgpKSxiLm1heC15LmQ8PWV8fChkPWIuaC8yLG0ucHVzaChuZXcgaGMoYi5w LngtZCxiLnAueS1kLGQsdCkpLG0ucHVzaChuZXcgaGMoYi5wLngrZCxiLnAueS1kLGQsdCkp LG0ucHVzaChuZXcgaGMoYi5wLngtZCxiLnAueStkLGQsdCkpLG0ucHVzaChuZXcgaGMoYi5w LngrZCxiLnAueStkLGQsdCkpLHgrPTQpfXJldHVybiByJiYoY29uc29sZS5sb2coIm51bSBw cm9iZXM6ICIreCksY29uc29sZS5sb2coImJlc3QgZGlzdGFuY2U6ICIreS5kKSkseS5wfWZ1 bmN0aW9uIGZjKHQsZSl7cmV0dXJuIGUubWF4LXQubWF4fWZ1bmN0aW9uIGhjKHQsZSxyLG4p e3RoaXMucD1uZXcgaSh0LGUpLHRoaXMuaD1yLHRoaXMuZD1mdW5jdGlvbih0LGUpe2Zvcih2 YXIgcj0hMSxuPTEvMCxpPTA7aTxlLmxlbmd0aDtpKyspZm9yKHZhciBhPWVbaV0sbz0wLHM9 YS5sZW5ndGgsbD1zLTE7bzxzO2w9bysrKXt2YXIgYz1hW29dLHU9YVtsXTtjLnk+dC55IT11 Lnk+dC55JiZ0Lng8KHUueC1jLngpKih0LnktYy55KS8odS55LWMueSkrYy54JiYocj0hciks bj1NYXRoLm1pbihuLHJvKHQsYyx1KSl9cmV0dXJuKHI/MTotMSkqTWF0aC5zcXJ0KG4pfSh0 aGlzLnAsbiksdGhpcy5tYXg9dGhpcy5kK3RoaXMuaCpNYXRoLlNRUlQyfWxjLnByb3RvdHlw ZS5wdXNoPWZ1bmN0aW9uKHQpe3RoaXMuZGF0YS5wdXNoKHQpLHRoaXMubGVuZ3RoKyssdGhp cy5fdXAodGhpcy5sZW5ndGgtMSl9LGxjLnByb3RvdHlwZS5wb3A9ZnVuY3Rpb24oKXtpZigw IT09dGhpcy5sZW5ndGgpe3ZhciB0PXRoaXMuZGF0YVswXSxlPXRoaXMuZGF0YS5wb3AoKTty ZXR1cm4gdGhpcy5sZW5ndGgtLSx0aGlzLmxlbmd0aD4wJiYodGhpcy5kYXRhWzBdPWUsdGhp cy5fZG93bigwKSksdH19LGxjLnByb3RvdHlwZS5wZWVrPWZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMuZGF0YVswXX0sbGMucHJvdG90eXBlLl91cD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhp cy5kYXRhLHI9dGhpcy5jb21wYXJlLG49ZVt0XTt0PjA7KXt2YXIgaT10LTE+PjEsYT1lW2ld O2lmKHIobixhKT49MClicmVhaztlW3RdPWEsdD1pfWVbdF09bn0sbGMucHJvdG90eXBlLl9k b3duPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLmRhdGEscj10aGlzLmNvbXBhcmUsbj10 aGlzLmxlbmd0aD4+MSxpPWVbdF07dDxuOyl7dmFyIGE9MSsodDw8MSksbz1lW2FdLHM9YSsx O2lmKHM8dGhpcy5sZW5ndGgmJnIoZVtzXSxvKTwwJiYoYT1zLG89ZVtzXSkscihvLGkpPj0w KWJyZWFrO2VbdF09byx0PWF9ZVt0XT1pfTt2YXIgcGM9TnVtYmVyLlBPU0lUSVZFX0lORklO SVRZO2Z1bmN0aW9uIGRjKHQsZSl7cmV0dXJuIGVbMV0hPT1wYz9mdW5jdGlvbih0LGUscil7 dmFyIG49MCxpPTA7c3dpdGNoKGU9TWF0aC5hYnMoZSkscj1NYXRoLmFicyhyKSx0KXtjYXNl InRvcC1yaWdodCI6Y2FzZSJ0b3AtbGVmdCI6Y2FzZSJ0b3AiOmk9ci03O2JyZWFrO2Nhc2Ui Ym90dG9tLXJpZ2h0IjpjYXNlImJvdHRvbS1sZWZ0IjpjYXNlImJvdHRvbSI6aT03LXJ9c3dp dGNoKHQpe2Nhc2UidG9wLXJpZ2h0IjpjYXNlImJvdHRvbS1yaWdodCI6Y2FzZSJyaWdodCI6 bj0tZTticmVhaztjYXNlInRvcC1sZWZ0IjpjYXNlImJvdHRvbS1sZWZ0IjpjYXNlImxlZnQi Om49ZX1yZXR1cm5bbixpXX0odCxlWzBdLGVbMV0pOmZ1bmN0aW9uKHQsZSl7dmFyIHI9MCxu PTA7ZTwwJiYoZT0wKTt2YXIgaT1lL01hdGguc3FydCgyKTtzd2l0Y2godCl7Y2FzZSJ0b3At cmlnaHQiOmNhc2UidG9wLWxlZnQiOm49aS03O2JyZWFrO2Nhc2UiYm90dG9tLXJpZ2h0Ijpj YXNlImJvdHRvbS1sZWZ0IjpuPTctaTticmVhaztjYXNlImJvdHRvbSI6bj03LWU7YnJlYWs7 Y2FzZSJ0b3AiOm49ZS03fXN3aXRjaCh0KXtjYXNlInRvcC1yaWdodCI6Y2FzZSJib3R0b20t cmlnaHQiOnI9LWk7YnJlYWs7Y2FzZSJ0b3AtbGVmdCI6Y2FzZSJib3R0b20tbGVmdCI6cj1p O2JyZWFrO2Nhc2UibGVmdCI6cj1lO2JyZWFrO2Nhc2UicmlnaHQiOnI9LWV9cmV0dXJuW3Is bl19KHQsZVswXSl9ZnVuY3Rpb24gbWModCl7c3dpdGNoKHQpe2Nhc2UicmlnaHQiOmNhc2Ui dG9wLXJpZ2h0IjpjYXNlImJvdHRvbS1yaWdodCI6cmV0dXJuInJpZ2h0IjtjYXNlImxlZnQi OmNhc2UidG9wLWxlZnQiOmNhc2UiYm90dG9tLWxlZnQiOnJldHVybiJsZWZ0In1yZXR1cm4i Y2VudGVyIn1mdW5jdGlvbiBnYyh0LGUscixuLGEsbyxzLGwsYyx1LGYsaCxwLGQsbSl7dmFy IGc9ZnVuY3Rpb24odCxlLHIsbixhLG8scyxsKXtmb3IodmFyIGM9bi5sYXlvdXQuZ2V0KCJ0 ZXh0LXJvdGF0ZSIpLmV2YWx1YXRlKG8se30pKk1hdGguUEkvMTgwLHU9W10sZj0wLGg9ZS5w b3NpdGlvbmVkTGluZXM7ZjxoLmxlbmd0aDtmKz0xKWZvcih2YXIgcD1oW2ZdLGQ9MCxtPXAu cG9zaXRpb25lZEdseXBocztkPG0ubGVuZ3RoO2QrPTEpe3ZhciBnPW1bZF07aWYoZy5yZWN0 KXt2YXIgdj1nLnJlY3R8fHt9LHk9NCx4PSEwLGI9MSxfPTAsdz0oYXx8bCkmJmcudmVydGlj YWwsVD1nLm1ldHJpY3MuYWR2YW5jZSpnLnNjYWxlLzI7aWYobCYmZS52ZXJ0aWNhbGl6YWJs ZSl7dmFyIGs9MjQqKGcuc2NhbGUtMSksQT0oMjQtZy5tZXRyaWNzLndpZHRoKmcuc2NhbGUp LzI7Xz1wLmxpbmVPZmZzZXQvMi0oZy5pbWFnZU5hbWU/LUE6ayl9aWYoZy5pbWFnZU5hbWUp e3ZhciBNPXNbZy5pbWFnZU5hbWVdO3g9TS5zZGYseT0xLyhiPU0ucGl4ZWxSYXRpbyl9dmFy IFM9YT9bZy54K1QsZy55XTpbMCwwXSxFPWE/WzAsMF06W2cueCtUK3JbMF0sZy55K3JbMV0t X10sTD1bMCwwXTt3JiYoTD1FLEU9WzAsMF0pO3ZhciBDPShnLm1ldHJpY3MubGVmdC15KSpn LnNjYWxlLVQrRVswXSxQPSgtZy5tZXRyaWNzLnRvcC15KSpnLnNjYWxlK0VbMV0sST1DK3Yu dypnLnNjYWxlL2IsTz1QK3YuaCpnLnNjYWxlL2Isej1uZXcgaShDLFApLEQ9bmV3IGkoSSxQ KSxSPW5ldyBpKEMsTyksRj1uZXcgaShJLE8pO2lmKHcpe3ZhciBCPW5ldyBpKC1ULFQtIC0x NyksTj0tTWF0aC5QSS8yLGo9MTItVCxVPWcuaW1hZ2VOYW1lP2o6MCxWPW5ldyBpKDIyLWos LVUpLEg9bmV3KEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmFwcGx5KGksW251bGxdLmNvbmNh dChMKSkpO3ouX3JvdGF0ZUFyb3VuZChOLEIpLl9hZGQoVikuX2FkZChIKSxELl9yb3RhdGVB cm91bmQoTixCKS5fYWRkKFYpLl9hZGQoSCksUi5fcm90YXRlQXJvdW5kKE4sQikuX2FkZChW KS5fYWRkKEgpLEYuX3JvdGF0ZUFyb3VuZChOLEIpLl9hZGQoVikuX2FkZChIKX1pZihjKXt2 YXIgcT1NYXRoLnNpbihjKSxHPU1hdGguY29zKGMpLFk9W0csLXEscSxHXTt6Ll9tYXRNdWx0 KFkpLEQuX21hdE11bHQoWSksUi5fbWF0TXVsdChZKSxGLl9tYXRNdWx0KFkpfXZhciBXPW5l dyBpKDAsMCksWD1uZXcgaSgwLDApO3UucHVzaCh7dGw6eix0cjpELGJsOlIsYnI6Rix0ZXg6 dix3cml0aW5nTW9kZTplLndyaXRpbmdNb2RlLGdseXBoT2Zmc2V0OlMsc2VjdGlvbkluZGV4 Omcuc2VjdGlvbkluZGV4LGlzU0RGOngscGl4ZWxPZmZzZXRUTDpXLHBpeGVsT2Zmc2V0QlI6 WCxtaW5Gb250U2NhbGVYOjAsbWluRm9udFNjYWxlWTowfSl9fXJldHVybiB1fSgwLHIsbCxh LG8scyxuLHQuYWxsb3dWZXJ0aWNhbFBsYWNlbWVudCksdj10LnRleHRTaXplRGF0YSx5PW51 bGw7InNvdXJjZSI9PT12LmtpbmQ/KHk9WzEyOCphLmxheW91dC5nZXQoInRleHQtc2l6ZSIp LmV2YWx1YXRlKHMse30pXSlbMF0+MzI2NDAmJl8odC5sYXllcklkc1swXSsnOiBWYWx1ZSBm b3IgInRleHQtc2l6ZSIgaXMgPj0gMjU1LiBSZWR1Y2UgeW91ciAidGV4dC1zaXplIi4nKToi Y29tcG9zaXRlIj09PXYua2luZCYmKCh5PVsxMjgqZC5jb21wb3NpdGVUZXh0U2l6ZXNbMF0u ZXZhbHVhdGUocyx7fSxtKSwxMjgqZC5jb21wb3NpdGVUZXh0U2l6ZXNbMV0uZXZhbHVhdGUo cyx7fSxtKV0pWzBdPjMyNjQwfHx5WzFdPjMyNjQwKSYmXyh0LmxheWVySWRzWzBdKyc6IFZh bHVlIGZvciAidGV4dC1zaXplIiBpcyA+PSAyNTUuIFJlZHVjZSB5b3VyICJ0ZXh0LXNpemUi LicpLHQuYWRkU3ltYm9scyh0LnRleHQsZyx5LGwsbyxzLHUsZSxjLmxpbmVTdGFydEluZGV4 LGMubGluZUxlbmd0aCxwLG0pO2Zvcih2YXIgeD0wLGI9Zjt4PGIubGVuZ3RoO3grPTEpe2hb Ylt4XV09dC50ZXh0LnBsYWNlZFN5bWJvbEFycmF5Lmxlbmd0aC0xfXJldHVybiA0KmcubGVu Z3RofWZ1bmN0aW9uIHZjKHQpe2Zvcih2YXIgZSBpbiB0KXJldHVybiB0W2VdO3JldHVybiBu dWxsfWZ1bmN0aW9uIHljKHQsZSxyLG4pe3ZhciBpPXQuY29tcGFyZVRleHQ7aWYoZSBpbiBp KXtmb3IodmFyIGE9aVtlXSxvPWEubGVuZ3RoLTE7bz49MDtvLS0paWYobi5kaXN0KGFbb10p PHIpcmV0dXJuITB9ZWxzZSBpW2VdPVtdO3JldHVybiBpW2VdLnB1c2gobiksITF9dmFyIHhj PUxzLlZlY3RvclRpbGVGZWF0dXJlLnR5cGVzLGJjPVt7bmFtZToiYV9mYWRlX29wYWNpdHki LGNvbXBvbmVudHM6MSx0eXBlOiJVaW50OCIsb2Zmc2V0OjB9XTtmdW5jdGlvbiBfYyh0LGUs cixuLGksYSxvLHMsbCxjLHUsZixoKXt2YXIgcD1zP01hdGgubWluKDMyNjQwLE1hdGgucm91 bmQoc1swXSkpOjAsZD1zP01hdGgubWluKDMyNjQwLE1hdGgucm91bmQoc1sxXSkpOjA7dC5l bXBsYWNlQmFjayhlLHIsTWF0aC5yb3VuZCgzMipuKSxNYXRoLnJvdW5kKDMyKmkpLGEsbywo cDw8MSkrKGw/MTowKSxkLDE2KmMsMTYqdSwyNTYqZiwyNTYqaCl9ZnVuY3Rpb24gd2ModCxl LHIpe3QuZW1wbGFjZUJhY2soZS54LGUueSxyKSx0LmVtcGxhY2VCYWNrKGUueCxlLnksciks dC5lbXBsYWNlQmFjayhlLngsZS55LHIpLHQuZW1wbGFjZUJhY2soZS54LGUueSxyKX1mdW5j dGlvbiBUYyh0KXtmb3IodmFyIGU9MCxyPXQuc2VjdGlvbnM7ZTxyLmxlbmd0aDtlKz0xKXtp ZigkbihyW2VdLnRleHQpKXJldHVybiEwfXJldHVybiExfXZhciBrYz1mdW5jdGlvbih0KXt0 aGlzLmxheW91dFZlcnRleEFycmF5PW5ldyBOaSx0aGlzLmluZGV4QXJyYXk9bmV3IFlpLHRo aXMucHJvZ3JhbUNvbmZpZ3VyYXRpb25zPXQsdGhpcy5zZWdtZW50cz1uZXcgcGEsdGhpcy5k eW5hbWljTGF5b3V0VmVydGV4QXJyYXk9bmV3IGppLHRoaXMub3BhY2l0eVZlcnRleEFycmF5 PW5ldyBVaSx0aGlzLnBsYWNlZFN5bWJvbEFycmF5PW5ldyBhYX07a2MucHJvdG90eXBlLmlz RW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMubGF5b3V0VmVydGV4QXJyYXkubGVu Z3RoJiYwPT09dGhpcy5pbmRleEFycmF5Lmxlbmd0aCYmMD09PXRoaXMuZHluYW1pY0xheW91 dFZlcnRleEFycmF5Lmxlbmd0aCYmMD09PXRoaXMub3BhY2l0eVZlcnRleEFycmF5Lmxlbmd0 aH0sa2MucHJvdG90eXBlLnVwbG9hZD1mdW5jdGlvbih0LGUscixuKXt0aGlzLmlzRW1wdHko KXx8KHImJih0aGlzLmxheW91dFZlcnRleEJ1ZmZlcj10LmNyZWF0ZVZlcnRleEJ1ZmZlcih0 aGlzLmxheW91dFZlcnRleEFycmF5LEpzLm1lbWJlcnMpLHRoaXMuaW5kZXhCdWZmZXI9dC5j cmVhdGVJbmRleEJ1ZmZlcih0aGlzLmluZGV4QXJyYXksZSksdGhpcy5keW5hbWljTGF5b3V0 VmVydGV4QnVmZmVyPXQuY3JlYXRlVmVydGV4QnVmZmVyKHRoaXMuZHluYW1pY0xheW91dFZl cnRleEFycmF5LEtzLm1lbWJlcnMsITApLHRoaXMub3BhY2l0eVZlcnRleEJ1ZmZlcj10LmNy ZWF0ZVZlcnRleEJ1ZmZlcih0aGlzLm9wYWNpdHlWZXJ0ZXhBcnJheSxiYywhMCksdGhpcy5v cGFjaXR5VmVydGV4QnVmZmVyLml0ZW1TaXplPTEpLChyfHxuKSYmdGhpcy5wcm9ncmFtQ29u ZmlndXJhdGlvbnMudXBsb2FkKHQpKX0sa2MucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24o KXt0aGlzLmxheW91dFZlcnRleEJ1ZmZlciYmKHRoaXMubGF5b3V0VmVydGV4QnVmZmVyLmRl c3Ryb3koKSx0aGlzLmluZGV4QnVmZmVyLmRlc3Ryb3koKSx0aGlzLnByb2dyYW1Db25maWd1 cmF0aW9ucy5kZXN0cm95KCksdGhpcy5zZWdtZW50cy5kZXN0cm95KCksdGhpcy5keW5hbWlj TGF5b3V0VmVydGV4QnVmZmVyLmRlc3Ryb3koKSx0aGlzLm9wYWNpdHlWZXJ0ZXhCdWZmZXIu ZGVzdHJveSgpKX0sTm4oIlN5bWJvbEJ1ZmZlcnMiLGtjKTt2YXIgQWM9ZnVuY3Rpb24odCxl LHIpe3RoaXMubGF5b3V0VmVydGV4QXJyYXk9bmV3IHQsdGhpcy5sYXlvdXRBdHRyaWJ1dGVz PWUsdGhpcy5pbmRleEFycmF5PW5ldyByLHRoaXMuc2VnbWVudHM9bmV3IHBhLHRoaXMuY29s bGlzaW9uVmVydGV4QXJyYXk9bmV3IEdpfTtBYy5wcm90b3R5cGUudXBsb2FkPWZ1bmN0aW9u KHQpe3RoaXMubGF5b3V0VmVydGV4QnVmZmVyPXQuY3JlYXRlVmVydGV4QnVmZmVyKHRoaXMu bGF5b3V0VmVydGV4QXJyYXksdGhpcy5sYXlvdXRBdHRyaWJ1dGVzKSx0aGlzLmluZGV4QnVm ZmVyPXQuY3JlYXRlSW5kZXhCdWZmZXIodGhpcy5pbmRleEFycmF5KSx0aGlzLmNvbGxpc2lv blZlcnRleEJ1ZmZlcj10LmNyZWF0ZVZlcnRleEJ1ZmZlcih0aGlzLmNvbGxpc2lvblZlcnRl eEFycmF5LFFzLm1lbWJlcnMsITApfSxBYy5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigp e3RoaXMubGF5b3V0VmVydGV4QnVmZmVyJiYodGhpcy5sYXlvdXRWZXJ0ZXhCdWZmZXIuZGVz dHJveSgpLHRoaXMuaW5kZXhCdWZmZXIuZGVzdHJveSgpLHRoaXMuc2VnbWVudHMuZGVzdHJv eSgpLHRoaXMuY29sbGlzaW9uVmVydGV4QnVmZmVyLmRlc3Ryb3koKSl9LE5uKCJDb2xsaXNp b25CdWZmZXJzIixBYyk7dmFyIE1jPWZ1bmN0aW9uKHQpe3RoaXMuY29sbGlzaW9uQm94QXJy YXk9dC5jb2xsaXNpb25Cb3hBcnJheSx0aGlzLnpvb209dC56b29tLHRoaXMub3ZlcnNjYWxp bmc9dC5vdmVyc2NhbGluZyx0aGlzLmxheWVycz10LmxheWVycyx0aGlzLmxheWVySWRzPXRo aXMubGF5ZXJzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWR9KSksdGhpcy5pbmRleD10 LmluZGV4LHRoaXMucGl4ZWxSYXRpbz10LnBpeGVsUmF0aW8sdGhpcy5zb3VyY2VMYXllcklu ZGV4PXQuc291cmNlTGF5ZXJJbmRleCx0aGlzLmhhc1BhdHRlcm49ITEsdGhpcy5oYXNSVExU ZXh0PSExLHRoaXMuc29ydEtleVJhbmdlcz1bXSx0aGlzLmNvbGxpc2lvbkNpcmNsZUFycmF5 PVtdLHRoaXMucGxhY2VtZW50SW52UHJvak1hdHJpeD1obyhbXSksdGhpcy5wbGFjZW1lbnRW aWV3cG9ydE1hdHJpeD1obyhbXSk7dmFyIGU9dGhpcy5sYXllcnNbMF0uX3VuZXZhbHVhdGVk TGF5b3V0Ll92YWx1ZXM7dGhpcy50ZXh0U2l6ZURhdGE9R2wodGhpcy56b29tLGVbInRleHQt c2l6ZSJdKSx0aGlzLmljb25TaXplRGF0YT1HbCh0aGlzLnpvb20sZVsiaWNvbi1zaXplIl0p O3ZhciByPXRoaXMubGF5ZXJzWzBdLmxheW91dCxuPXIuZ2V0KCJzeW1ib2wtc29ydC1rZXki KSxpPXIuZ2V0KCJzeW1ib2wtei1vcmRlciIpO3RoaXMuc29ydEZlYXR1cmVzQnlLZXk9InZp ZXdwb3J0LXkiIT09aSYmdm9pZCAwIT09bi5jb25zdGFudE9yKDEpO3ZhciBhPSJ2aWV3cG9y dC15Ij09PWl8fCJhdXRvIj09PWkmJiF0aGlzLnNvcnRGZWF0dXJlc0J5S2V5O3RoaXMuc29y dEZlYXR1cmVzQnlZPWEmJihyLmdldCgidGV4dC1hbGxvdy1vdmVybGFwIil8fHIuZ2V0KCJp Y29uLWFsbG93LW92ZXJsYXAiKXx8ci5nZXQoInRleHQtaWdub3JlLXBsYWNlbWVudCIpfHxy LmdldCgiaWNvbi1pZ25vcmUtcGxhY2VtZW50IikpLCJwb2ludCI9PT1yLmdldCgic3ltYm9s LXBsYWNlbWVudCIpJiYodGhpcy53cml0aW5nTW9kZXM9ci5nZXQoInRleHQtd3JpdGluZy1t b2RlIikubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gQ2xbdF19KSkpLHRoaXMuc3RhdGVEZXBl bmRlbnRMYXllcklkcz10aGlzLmxheWVycy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0 LmlzU3RhdGVEZXBlbmRlbnQoKX0pKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkfSkp LHRoaXMuc291cmNlSUQ9dC5zb3VyY2VJRH07TWMucHJvdG90eXBlLmNyZWF0ZUFycmF5cz1m dW5jdGlvbigpe3RoaXMudGV4dD1uZXcga2MobmV3IFVhKEpzLm1lbWJlcnMsdGhpcy5sYXll cnMsdGhpcy56b29tLChmdW5jdGlvbih0KXtyZXR1cm4vXnRleHQvLnRlc3QodCl9KSkpLHRo aXMuaWNvbj1uZXcga2MobmV3IFVhKEpzLm1lbWJlcnMsdGhpcy5sYXllcnMsdGhpcy56b29t LChmdW5jdGlvbih0KXtyZXR1cm4vXmljb24vLnRlc3QodCl9KSkpLHRoaXMuZ2x5cGhPZmZz ZXRBcnJheT1uZXcgbGEsdGhpcy5saW5lVmVydGV4QXJyYXk9bmV3IGNhLHRoaXMuc3ltYm9s SW5zdGFuY2VzPW5ldyBzYX0sTWMucHJvdG90eXBlLmNhbGN1bGF0ZUdseXBoRGVwZW5kZW5j aWVzPWZ1bmN0aW9uKHQsZSxyLG4saSl7Zm9yKHZhciBhPTA7YTx0Lmxlbmd0aDthKyspaWYo ZVt0LmNoYXJDb2RlQXQoYSldPSEwLChyfHxuKSYmaSl7dmFyIG89cmxbdC5jaGFyQXQoYSld O28mJihlW28uY2hhckNvZGVBdCgwKV09ITApfX0sTWMucHJvdG90eXBlLnBvcHVsYXRlPWZ1 bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLmxheWVyc1swXSxpPW4ubGF5b3V0LGE9aS5nZXQo InRleHQtZm9udCIpLG89aS5nZXQoInRleHQtZmllbGQiKSxzPWkuZ2V0KCJpY29uLWltYWdl IiksbD0oImNvbnN0YW50IiE9PW8udmFsdWUua2luZHx8by52YWx1ZS52YWx1ZSBpbnN0YW5j ZW9mIG5lJiYhby52YWx1ZS52YWx1ZS5pc0VtcHR5KCl8fG8udmFsdWUudmFsdWUudG9TdHJp bmcoKS5sZW5ndGg+MCkmJigiY29uc3RhbnQiIT09YS52YWx1ZS5raW5kfHxhLnZhbHVlLnZh bHVlLmxlbmd0aD4wKSxjPSJjb25zdGFudCIhPT1zLnZhbHVlLmtpbmR8fCEhcy52YWx1ZS52 YWx1ZXx8T2JqZWN0LmtleXMocy5wYXJhbWV0ZXJzKS5sZW5ndGg+MCx1PWkuZ2V0KCJzeW1i b2wtc29ydC1rZXkiKTtpZih0aGlzLmZlYXR1cmVzPVtdLGx8fGMpe2Zvcih2YXIgZj1lLmlj b25EZXBlbmRlbmNpZXMsaD1lLmdseXBoRGVwZW5kZW5jaWVzLHA9ZS5hdmFpbGFibGVJbWFn ZXMsZD1uZXcgcGkodGhpcy56b29tKSxtPTAsZz10O208Zy5sZW5ndGg7bSs9MSl7dmFyIHY9 Z1ttXSx5PXYuZmVhdHVyZSx4PXYuaWQsYj12LmluZGV4LF89di5zb3VyY2VMYXllckluZGV4 LHc9bi5fZmVhdHVyZUZpbHRlci5uZWVkR2VvbWV0cnksVD17dHlwZTp5LnR5cGUsaWQ6eCxw cm9wZXJ0aWVzOnkucHJvcGVydGllcyxnZW9tZXRyeTp3P1lhKHkpOltdfTtpZihuLl9mZWF0 dXJlRmlsdGVyLmZpbHRlcihkLFQscikpe3d8fChULmdlb21ldHJ5PVlhKHkpKTt2YXIgaz12 b2lkIDA7aWYobCl7dmFyIEE9bi5nZXRWYWx1ZUFuZFJlc29sdmVUb2tlbnMoInRleHQtZmll bGQiLFQscixwKSxNPW5lLmZhY3RvcnkoQSk7VGMoTSkmJih0aGlzLmhhc1JUTFRleHQ9ITAp LCghdGhpcy5oYXNSVExUZXh0fHwidW5hdmFpbGFibGUiPT09dWkoKXx8dGhpcy5oYXNSVExU ZXh0JiZoaS5pc1BhcnNlZCgpKSYmKGs9ZWwoTSxuLFQpKX12YXIgUz12b2lkIDA7aWYoYyl7 dmFyIEU9bi5nZXRWYWx1ZUFuZFJlc29sdmVUb2tlbnMoImljb24taW1hZ2UiLFQscixwKTtT PUUgaW5zdGFuY2VvZiBpZT9FOmllLmZyb21TdHJpbmcoRSl9aWYoa3x8Uyl7dmFyIEw9dGhp cy5zb3J0RmVhdHVyZXNCeUtleT91LmV2YWx1YXRlKFQse30scik6dm9pZCAwLEM9e2lkOngs dGV4dDprLGljb246UyxpbmRleDpiLHNvdXJjZUxheWVySW5kZXg6XyxnZW9tZXRyeTpZYSh5 KSxwcm9wZXJ0aWVzOnkucHJvcGVydGllcyx0eXBlOnhjW3kudHlwZV0sc29ydEtleTpMfTtp Zih0aGlzLmZlYXR1cmVzLnB1c2goQyksUyYmKGZbUy5uYW1lXT0hMCksayl7dmFyIFA9YS5l dmFsdWF0ZShULHt9LHIpLmpvaW4oIiwiKSxJPSJtYXAiPT09aS5nZXQoInRleHQtcm90YXRp b24tYWxpZ25tZW50IikmJiJwb2ludCIhPT1pLmdldCgic3ltYm9sLXBsYWNlbWVudCIpO3Ro aXMuYWxsb3dWZXJ0aWNhbFBsYWNlbWVudD10aGlzLndyaXRpbmdNb2RlcyYmdGhpcy53cml0 aW5nTW9kZXMuaW5kZXhPZihDbC52ZXJ0aWNhbCk+PTA7Zm9yKHZhciBPPTAsej1rLnNlY3Rp b25zO088ei5sZW5ndGg7Tys9MSl7dmFyIEQ9eltPXTtpZihELmltYWdlKWZbRC5pbWFnZS5u YW1lXT0hMDtlbHNle3ZhciBSPVduKGsudG9TdHJpbmcoKSksRj1ELmZvbnRTdGFja3x8UCxC PWhbRl09aFtGXXx8e307dGhpcy5jYWxjdWxhdGVHbHlwaERlcGVuZGVuY2llcyhELnRleHQs QixJLHRoaXMuYWxsb3dWZXJ0aWNhbFBsYWNlbWVudCxSKX19fX19fSJsaW5lIj09PWkuZ2V0 KCJzeW1ib2wtcGxhY2VtZW50IikmJih0aGlzLmZlYXR1cmVzPWZ1bmN0aW9uKHQpe3ZhciBl PXt9LHI9e30sbj1bXSxpPTA7ZnVuY3Rpb24gYShlKXtuLnB1c2godFtlXSksaSsrfWZ1bmN0 aW9uIG8odCxlLGkpe3ZhciBhPXJbdF07cmV0dXJuIGRlbGV0ZSByW3RdLHJbZV09YSxuW2Fd Lmdlb21ldHJ5WzBdLnBvcCgpLG5bYV0uZ2VvbWV0cnlbMF09blthXS5nZW9tZXRyeVswXS5j b25jYXQoaVswXSksYX1mdW5jdGlvbiBzKHQscixpKXt2YXIgYT1lW3JdO3JldHVybiBkZWxl dGUgZVtyXSxlW3RdPWEsblthXS5nZW9tZXRyeVswXS5zaGlmdCgpLG5bYV0uZ2VvbWV0cnlb MF09aVswXS5jb25jYXQoblthXS5nZW9tZXRyeVswXSksYX1mdW5jdGlvbiBsKHQsZSxyKXt2 YXIgbj1yP2VbMF1bZVswXS5sZW5ndGgtMV06ZVswXVswXTtyZXR1cm4gdCsiOiIrbi54KyI6 IituLnl9Zm9yKHZhciBjPTA7Yzx0Lmxlbmd0aDtjKyspe3ZhciB1PXRbY10sZj11Lmdlb21l dHJ5LGg9dS50ZXh0P3UudGV4dC50b1N0cmluZygpOm51bGw7aWYoaCl7dmFyIHA9bChoLGYp LGQ9bChoLGYsITApO2lmKHAgaW4gciYmZCBpbiBlJiZyW3BdIT09ZVtkXSl7dmFyIG09cyhw LGQsZiksZz1vKHAsZCxuW21dLmdlb21ldHJ5KTtkZWxldGUgZVtwXSxkZWxldGUgcltkXSxy W2woaCxuW2ddLmdlb21ldHJ5LCEwKV09ZyxuW21dLmdlb21ldHJ5PW51bGx9ZWxzZSBwIGlu IHI/byhwLGQsZik6ZCBpbiBlP3MocCxkLGYpOihhKGMpLGVbcF09aS0xLHJbZF09aS0xKX1l bHNlIGEoYyl9cmV0dXJuIG4uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZW9tZXRy eX0pKX0odGhpcy5mZWF0dXJlcykpLHRoaXMuc29ydEZlYXR1cmVzQnlLZXkmJnRoaXMuZmVh dHVyZXMuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5zb3J0S2V5LWUuc29ydEtleX0p KX19LE1jLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCxlLHIpe3RoaXMuc3RhdGVEZXBl bmRlbnRMYXllcnMubGVuZ3RoJiYodGhpcy50ZXh0LnByb2dyYW1Db25maWd1cmF0aW9ucy51 cGRhdGVQYWludEFycmF5cyh0LGUsdGhpcy5sYXllcnMsciksdGhpcy5pY29uLnByb2dyYW1D b25maWd1cmF0aW9ucy51cGRhdGVQYWludEFycmF5cyh0LGUsdGhpcy5sYXllcnMscikpfSxN Yy5wcm90b3R5cGUuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5zeW1ib2xJ bnN0YW5jZXMubGVuZ3RoJiYhdGhpcy5oYXNSVExUZXh0fSxNYy5wcm90b3R5cGUudXBsb2Fk UGVuZGluZz1mdW5jdGlvbigpe3JldHVybiF0aGlzLnVwbG9hZGVkfHx0aGlzLnRleHQucHJv Z3JhbUNvbmZpZ3VyYXRpb25zLm5lZWRzVXBsb2FkfHx0aGlzLmljb24ucHJvZ3JhbUNvbmZp Z3VyYXRpb25zLm5lZWRzVXBsb2FkfSxNYy5wcm90b3R5cGUudXBsb2FkPWZ1bmN0aW9uKHQp eyF0aGlzLnVwbG9hZGVkJiZ0aGlzLmhhc0RlYnVnRGF0YSgpJiYodGhpcy50ZXh0Q29sbGlz aW9uQm94LnVwbG9hZCh0KSx0aGlzLmljb25Db2xsaXNpb25Cb3gudXBsb2FkKHQpKSx0aGlz LnRleHQudXBsb2FkKHQsdGhpcy5zb3J0RmVhdHVyZXNCeVksIXRoaXMudXBsb2FkZWQsdGhp cy50ZXh0LnByb2dyYW1Db25maWd1cmF0aW9ucy5uZWVkc1VwbG9hZCksdGhpcy5pY29uLnVw bG9hZCh0LHRoaXMuc29ydEZlYXR1cmVzQnlZLCF0aGlzLnVwbG9hZGVkLHRoaXMuaWNvbi5w cm9ncmFtQ29uZmlndXJhdGlvbnMubmVlZHNVcGxvYWQpLHRoaXMudXBsb2FkZWQ9ITB9LE1j LnByb3RvdHlwZS5kZXN0cm95RGVidWdEYXRhPWZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29sbGlz aW9uQm94LmRlc3Ryb3koKSx0aGlzLmljb25Db2xsaXNpb25Cb3guZGVzdHJveSgpfSxNYy5w cm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMudGV4dC5kZXN0cm95KCksdGhpcy5p Y29uLmRlc3Ryb3koKSx0aGlzLmhhc0RlYnVnRGF0YSgpJiZ0aGlzLmRlc3Ryb3lEZWJ1Z0Rh dGEoKX0sTWMucHJvdG90eXBlLmFkZFRvTGluZVZlcnRleEFycmF5PWZ1bmN0aW9uKHQsZSl7 dmFyIHI9dGhpcy5saW5lVmVydGV4QXJyYXkubGVuZ3RoO2lmKHZvaWQgMCE9PXQuc2VnbWVu dCl7Zm9yKHZhciBuPXQuZGlzdChlW3Quc2VnbWVudCsxXSksaT10LmRpc3QoZVt0LnNlZ21l bnRdKSxhPXt9LG89dC5zZWdtZW50KzE7bzxlLmxlbmd0aDtvKyspYVtvXT17eDplW29dLngs eTplW29dLnksdGlsZVVuaXREaXN0YW5jZUZyb21BbmNob3I6bn0sbzxlLmxlbmd0aC0xJiYo bis9ZVtvKzFdLmRpc3QoZVtvXSkpO2Zvcih2YXIgcz10LnNlZ21lbnR8fDA7cz49MDtzLS0p YVtzXT17eDplW3NdLngseTplW3NdLnksdGlsZVVuaXREaXN0YW5jZUZyb21BbmNob3I6aX0s cz4wJiYoaSs9ZVtzLTFdLmRpc3QoZVtzXSkpO2Zvcih2YXIgbD0wO2w8ZS5sZW5ndGg7bCsr KXt2YXIgYz1hW2xdO3RoaXMubGluZVZlcnRleEFycmF5LmVtcGxhY2VCYWNrKGMueCxjLnks Yy50aWxlVW5pdERpc3RhbmNlRnJvbUFuY2hvcil9fXJldHVybntsaW5lU3RhcnRJbmRleDpy LGxpbmVMZW5ndGg6dGhpcy5saW5lVmVydGV4QXJyYXkubGVuZ3RoLXJ9fSxNYy5wcm90b3R5 cGUuYWRkU3ltYm9scz1mdW5jdGlvbih0LGUscixuLGksYSxvLHMsbCxjLHUsZil7Zm9yKHZh ciBoPXQuaW5kZXhBcnJheSxwPXQubGF5b3V0VmVydGV4QXJyYXksZD10LnNlZ21lbnRzLnBy ZXBhcmVTZWdtZW50KDQqZS5sZW5ndGgscCxoLGEuc29ydEtleSksbT10aGlzLmdseXBoT2Zm c2V0QXJyYXkubGVuZ3RoLGc9ZC52ZXJ0ZXhMZW5ndGgsdj10aGlzLmFsbG93VmVydGljYWxQ bGFjZW1lbnQmJm89PT1DbC52ZXJ0aWNhbD9NYXRoLlBJLzI6MCx5PWEudGV4dCYmYS50ZXh0 LnNlY3Rpb25zLHg9MDt4PGUubGVuZ3RoO3grKyl7dmFyIGI9ZVt4XSxfPWIudGwsdz1iLnRy LFQ9Yi5ibCxrPWIuYnIsQT1iLnRleCxNPWIucGl4ZWxPZmZzZXRUTCxTPWIucGl4ZWxPZmZz ZXRCUixFPWIubWluRm9udFNjYWxlWCxMPWIubWluRm9udFNjYWxlWSxDPWIuZ2x5cGhPZmZz ZXQsUD1iLmlzU0RGLEk9Yi5zZWN0aW9uSW5kZXgsTz1kLnZlcnRleExlbmd0aCx6PUNbMV07 X2MocCxzLngscy55LF8ueCx6K18ueSxBLngsQS55LHIsUCxNLngsTS55LEUsTCksX2MocCxz Lngscy55LHcueCx6K3cueSxBLngrQS53LEEueSxyLFAsUy54LE0ueSxFLEwpLF9jKHAscy54 LHMueSxULngseitULnksQS54LEEueStBLmgscixQLE0ueCxTLnksRSxMKSxfYyhwLHMueCxz Lnksay54LHoray55LEEueCtBLncsQS55K0EuaCxyLFAsUy54LFMueSxFLEwpLHdjKHQuZHlu YW1pY0xheW91dFZlcnRleEFycmF5LHMsdiksaC5lbXBsYWNlQmFjayhPLE8rMSxPKzIpLGgu ZW1wbGFjZUJhY2soTysxLE8rMixPKzMpLGQudmVydGV4TGVuZ3RoKz00LGQucHJpbWl0aXZl TGVuZ3RoKz0yLHRoaXMuZ2x5cGhPZmZzZXRBcnJheS5lbXBsYWNlQmFjayhDWzBdKSx4IT09 ZS5sZW5ndGgtMSYmST09PWVbeCsxXS5zZWN0aW9uSW5kZXh8fHQucHJvZ3JhbUNvbmZpZ3Vy YXRpb25zLnBvcHVsYXRlUGFpbnRBcnJheXMocC5sZW5ndGgsYSxhLmluZGV4LHt9LGYseSYm eVtJXSl9dC5wbGFjZWRTeW1ib2xBcnJheS5lbXBsYWNlQmFjayhzLngscy55LG0sdGhpcy5n bHlwaE9mZnNldEFycmF5Lmxlbmd0aC1tLGcsbCxjLHMuc2VnbWVudCxyP3JbMF06MCxyP3Jb MV06MCxuWzBdLG5bMV0sbywwLCExLDAsdSl9LE1jLnByb3RvdHlwZS5fYWRkQ29sbGlzaW9u RGVidWdWZXJ0ZXg9ZnVuY3Rpb24odCxlLHIsbixpLGEpe3JldHVybiBlLmVtcGxhY2VCYWNr KDAsMCksdC5lbXBsYWNlQmFjayhyLngsci55LG4saSxNYXRoLnJvdW5kKGEueCksTWF0aC5y b3VuZChhLnkpKX0sTWMucHJvdG90eXBlLmFkZENvbGxpc2lvbkRlYnVnVmVydGljZXM9ZnVu Y3Rpb24odCxlLHIsbixhLG8scyl7dmFyIGw9YS5zZWdtZW50cy5wcmVwYXJlU2VnbWVudCg0 LGEubGF5b3V0VmVydGV4QXJyYXksYS5pbmRleEFycmF5KSxjPWwudmVydGV4TGVuZ3RoLHU9 YS5sYXlvdXRWZXJ0ZXhBcnJheSxmPWEuY29sbGlzaW9uVmVydGV4QXJyYXksaD1zLmFuY2hv clgscD1zLmFuY2hvclk7dGhpcy5fYWRkQ29sbGlzaW9uRGVidWdWZXJ0ZXgodSxmLG8saCxw LG5ldyBpKHQsZSkpLHRoaXMuX2FkZENvbGxpc2lvbkRlYnVnVmVydGV4KHUsZixvLGgscCxu ZXcgaShyLGUpKSx0aGlzLl9hZGRDb2xsaXNpb25EZWJ1Z1ZlcnRleCh1LGYsbyxoLHAsbmV3 IGkocixuKSksdGhpcy5fYWRkQ29sbGlzaW9uRGVidWdWZXJ0ZXgodSxmLG8saCxwLG5ldyBp KHQsbikpLGwudmVydGV4TGVuZ3RoKz00O3ZhciBkPWEuaW5kZXhBcnJheTtkLmVtcGxhY2VC YWNrKGMsYysxKSxkLmVtcGxhY2VCYWNrKGMrMSxjKzIpLGQuZW1wbGFjZUJhY2soYysyLGMr MyksZC5lbXBsYWNlQmFjayhjKzMsYyksbC5wcmltaXRpdmVMZW5ndGgrPTR9LE1jLnByb3Rv dHlwZS5hZGREZWJ1Z0NvbGxpc2lvbkJveGVzPWZ1bmN0aW9uKHQsZSxyLG4pe2Zvcih2YXIg aT10O2k8ZTtpKyspe3ZhciBhPXRoaXMuY29sbGlzaW9uQm94QXJyYXkuZ2V0KGkpLG89YS54 MSxzPWEueTEsbD1hLngyLGM9YS55Mjt0aGlzLmFkZENvbGxpc2lvbkRlYnVnVmVydGljZXMo byxzLGwsYyxuP3RoaXMudGV4dENvbGxpc2lvbkJveDp0aGlzLmljb25Db2xsaXNpb25Cb3gs YS5hbmNob3JQb2ludCxyKX19LE1jLnByb3RvdHlwZS5nZW5lcmF0ZUNvbGxpc2lvbkRlYnVn QnVmZmVycz1mdW5jdGlvbigpe3RoaXMuaGFzRGVidWdEYXRhKCkmJnRoaXMuZGVzdHJveURl YnVnRGF0YSgpLHRoaXMudGV4dENvbGxpc2lvbkJveD1uZXcgQWMoSGksJHMubWVtYmVycyxR aSksdGhpcy5pY29uQ29sbGlzaW9uQm94PW5ldyBBYyhIaSwkcy5tZW1iZXJzLFFpKTtmb3Io dmFyIHQ9MDt0PHRoaXMuc3ltYm9sSW5zdGFuY2VzLmxlbmd0aDt0Kyspe3ZhciBlPXRoaXMu c3ltYm9sSW5zdGFuY2VzLmdldCh0KTt0aGlzLmFkZERlYnVnQ29sbGlzaW9uQm94ZXMoZS50 ZXh0Qm94U3RhcnRJbmRleCxlLnRleHRCb3hFbmRJbmRleCxlLCEwKSx0aGlzLmFkZERlYnVn Q29sbGlzaW9uQm94ZXMoZS52ZXJ0aWNhbFRleHRCb3hTdGFydEluZGV4LGUudmVydGljYWxU ZXh0Qm94RW5kSW5kZXgsZSwhMCksdGhpcy5hZGREZWJ1Z0NvbGxpc2lvbkJveGVzKGUuaWNv bkJveFN0YXJ0SW5kZXgsZS5pY29uQm94RW5kSW5kZXgsZSwhMSksdGhpcy5hZGREZWJ1Z0Nv bGxpc2lvbkJveGVzKGUudmVydGljYWxJY29uQm94U3RhcnRJbmRleCxlLnZlcnRpY2FsSWNv bkJveEVuZEluZGV4LGUsITEpfX0sTWMucHJvdG90eXBlLl9kZXNlcmlhbGl6ZUNvbGxpc2lv bkJveGVzRm9yU3ltYm9sPWZ1bmN0aW9uKHQsZSxyLG4saSxhLG8scyxsKXtmb3IodmFyIGM9 e30sdT1lO3U8cjt1Kyspe3ZhciBmPXQuZ2V0KHUpO2MudGV4dEJveD17eDE6Zi54MSx5MTpm LnkxLHgyOmYueDIseTI6Zi55MixhbmNob3JQb2ludFg6Zi5hbmNob3JQb2ludFgsYW5jaG9y UG9pbnRZOmYuYW5jaG9yUG9pbnRZfSxjLnRleHRGZWF0dXJlSW5kZXg9Zi5mZWF0dXJlSW5k ZXg7YnJlYWt9Zm9yKHZhciBoPW47aDxpO2grKyl7dmFyIHA9dC5nZXQoaCk7Yy52ZXJ0aWNh bFRleHRCb3g9e3gxOnAueDEseTE6cC55MSx4MjpwLngyLHkyOnAueTIsYW5jaG9yUG9pbnRY OnAuYW5jaG9yUG9pbnRYLGFuY2hvclBvaW50WTpwLmFuY2hvclBvaW50WX0sYy52ZXJ0aWNh bFRleHRGZWF0dXJlSW5kZXg9cC5mZWF0dXJlSW5kZXg7YnJlYWt9Zm9yKHZhciBkPWE7ZDxv O2QrKyl7dmFyIG09dC5nZXQoZCk7Yy5pY29uQm94PXt4MTptLngxLHkxOm0ueTEseDI6bS54 Mix5MjptLnkyLGFuY2hvclBvaW50WDptLmFuY2hvclBvaW50WCxhbmNob3JQb2ludFk6bS5h bmNob3JQb2ludFl9LGMuaWNvbkZlYXR1cmVJbmRleD1tLmZlYXR1cmVJbmRleDticmVha31m b3IodmFyIGc9cztnPGw7ZysrKXt2YXIgdj10LmdldChnKTtjLnZlcnRpY2FsSWNvbkJveD17 eDE6di54MSx5MTp2LnkxLHgyOnYueDIseTI6di55MixhbmNob3JQb2ludFg6di5hbmNob3JQ b2ludFgsYW5jaG9yUG9pbnRZOnYuYW5jaG9yUG9pbnRZfSxjLnZlcnRpY2FsSWNvbkZlYXR1 cmVJbmRleD12LmZlYXR1cmVJbmRleDticmVha31yZXR1cm4gY30sTWMucHJvdG90eXBlLmRl c2VyaWFsaXplQ29sbGlzaW9uQm94ZXM9ZnVuY3Rpb24odCl7dGhpcy5jb2xsaXNpb25BcnJh eXM9W107Zm9yKHZhciBlPTA7ZTx0aGlzLnN5bWJvbEluc3RhbmNlcy5sZW5ndGg7ZSsrKXt2 YXIgcj10aGlzLnN5bWJvbEluc3RhbmNlcy5nZXQoZSk7dGhpcy5jb2xsaXNpb25BcnJheXMu cHVzaCh0aGlzLl9kZXNlcmlhbGl6ZUNvbGxpc2lvbkJveGVzRm9yU3ltYm9sKHQsci50ZXh0 Qm94U3RhcnRJbmRleCxyLnRleHRCb3hFbmRJbmRleCxyLnZlcnRpY2FsVGV4dEJveFN0YXJ0 SW5kZXgsci52ZXJ0aWNhbFRleHRCb3hFbmRJbmRleCxyLmljb25Cb3hTdGFydEluZGV4LHIu aWNvbkJveEVuZEluZGV4LHIudmVydGljYWxJY29uQm94U3RhcnRJbmRleCxyLnZlcnRpY2Fs SWNvbkJveEVuZEluZGV4KSl9fSxNYy5wcm90b3R5cGUuaGFzVGV4dERhdGE9ZnVuY3Rpb24o KXtyZXR1cm4gdGhpcy50ZXh0LnNlZ21lbnRzLmdldCgpLmxlbmd0aD4wfSxNYy5wcm90b3R5 cGUuaGFzSWNvbkRhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pY29uLnNlZ21lbnRzLmdl dCgpLmxlbmd0aD4wfSxNYy5wcm90b3R5cGUuaGFzRGVidWdEYXRhPWZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMudGV4dENvbGxpc2lvbkJveCYmdGhpcy5pY29uQ29sbGlzaW9uQm94fSxNYy5w cm90b3R5cGUuaGFzVGV4dENvbGxpc2lvbkJveERhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy5oYXNEZWJ1Z0RhdGEoKSYmdGhpcy50ZXh0Q29sbGlzaW9uQm94LnNlZ21lbnRzLmdldCgp Lmxlbmd0aD4wfSxNYy5wcm90b3R5cGUuaGFzSWNvbkNvbGxpc2lvbkJveERhdGE9ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5oYXNEZWJ1Z0RhdGEoKSYmdGhpcy5pY29uQ29sbGlzaW9uQm94 LnNlZ21lbnRzLmdldCgpLmxlbmd0aD4wfSxNYy5wcm90b3R5cGUuYWRkSW5kaWNlc0ZvclBs YWNlZFN5bWJvbD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10LnBsYWNlZFN5bWJvbEFycmF5 LmdldChlKSxuPXIudmVydGV4U3RhcnRJbmRleCs0KnIubnVtR2x5cGhzLGk9ci52ZXJ0ZXhT dGFydEluZGV4O2k8bjtpKz00KXQuaW5kZXhBcnJheS5lbXBsYWNlQmFjayhpLGkrMSxpKzIp LHQuaW5kZXhBcnJheS5lbXBsYWNlQmFjayhpKzEsaSsyLGkrMyl9LE1jLnByb3RvdHlwZS5n ZXRTb3J0ZWRTeW1ib2xJbmRleGVzPWZ1bmN0aW9uKHQpe2lmKHRoaXMuc29ydGVkQW5nbGU9 PT10JiZ2b2lkIDAhPT10aGlzLnN5bWJvbEluc3RhbmNlSW5kZXhlcylyZXR1cm4gdGhpcy5z eW1ib2xJbnN0YW5jZUluZGV4ZXM7Zm9yKHZhciBlPU1hdGguc2luKHQpLHI9TWF0aC5jb3Mo dCksbj1bXSxpPVtdLGE9W10sbz0wO288dGhpcy5zeW1ib2xJbnN0YW5jZXMubGVuZ3RoOysr byl7YS5wdXNoKG8pO3ZhciBzPXRoaXMuc3ltYm9sSW5zdGFuY2VzLmdldChvKTtuLnB1c2go MHxNYXRoLnJvdW5kKGUqcy5hbmNob3JYK3Iqcy5hbmNob3JZKSksaS5wdXNoKHMuZmVhdHVy ZUluZGV4KX1yZXR1cm4gYS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBuW3RdLW5bZV18 fGlbZV0taVt0XX0pKSxhfSxNYy5wcm90b3R5cGUuYWRkVG9Tb3J0S2V5UmFuZ2VzPWZ1bmN0 aW9uKHQsZSl7dmFyIHI9dGhpcy5zb3J0S2V5UmFuZ2VzW3RoaXMuc29ydEtleVJhbmdlcy5s ZW5ndGgtMV07ciYmci5zb3J0S2V5PT09ZT9yLnN5bWJvbEluc3RhbmNlRW5kPXQrMTp0aGlz LnNvcnRLZXlSYW5nZXMucHVzaCh7c29ydEtleTplLHN5bWJvbEluc3RhbmNlU3RhcnQ6dCxz eW1ib2xJbnN0YW5jZUVuZDp0KzF9KX0sTWMucHJvdG90eXBlLnNvcnRGZWF0dXJlcz1mdW5j dGlvbih0KXt2YXIgZT10aGlzO2lmKHRoaXMuc29ydEZlYXR1cmVzQnlZJiZ0aGlzLnNvcnRl ZEFuZ2xlIT09dCYmISh0aGlzLnRleHQuc2VnbWVudHMuZ2V0KCkubGVuZ3RoPjF8fHRoaXMu aWNvbi5zZWdtZW50cy5nZXQoKS5sZW5ndGg+MSkpe3RoaXMuc3ltYm9sSW5zdGFuY2VJbmRl eGVzPXRoaXMuZ2V0U29ydGVkU3ltYm9sSW5kZXhlcyh0KSx0aGlzLnNvcnRlZEFuZ2xlPXQs dGhpcy50ZXh0LmluZGV4QXJyYXkuY2xlYXIoKSx0aGlzLmljb24uaW5kZXhBcnJheS5jbGVh cigpLHRoaXMuZmVhdHVyZVNvcnRPcmRlcj1bXTtmb3IodmFyIHI9MCxuPXRoaXMuc3ltYm9s SW5zdGFuY2VJbmRleGVzO3I8bi5sZW5ndGg7cis9MSl7dmFyIGk9bltyXSxhPXRoaXMuc3lt Ym9sSW5zdGFuY2VzLmdldChpKTt0aGlzLmZlYXR1cmVTb3J0T3JkZXIucHVzaChhLmZlYXR1 cmVJbmRleCksW2EucmlnaHRKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXgsYS5jZW50ZXJKdXN0 aWZpZWRUZXh0U3ltYm9sSW5kZXgsYS5sZWZ0SnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4XS5m b3JFYWNoKChmdW5jdGlvbih0LHIsbil7dD49MCYmbi5pbmRleE9mKHQpPT09ciYmZS5hZGRJ bmRpY2VzRm9yUGxhY2VkU3ltYm9sKGUudGV4dCx0KX0pKSxhLnZlcnRpY2FsUGxhY2VkVGV4 dFN5bWJvbEluZGV4Pj0wJiZ0aGlzLmFkZEluZGljZXNGb3JQbGFjZWRTeW1ib2wodGhpcy50 ZXh0LGEudmVydGljYWxQbGFjZWRUZXh0U3ltYm9sSW5kZXgpLGEucGxhY2VkSWNvblN5bWJv bEluZGV4Pj0wJiZ0aGlzLmFkZEluZGljZXNGb3JQbGFjZWRTeW1ib2wodGhpcy5pY29uLGEu cGxhY2VkSWNvblN5bWJvbEluZGV4KSxhLnZlcnRpY2FsUGxhY2VkSWNvblN5bWJvbEluZGV4 Pj0wJiZ0aGlzLmFkZEluZGljZXNGb3JQbGFjZWRTeW1ib2wodGhpcy5pY29uLGEudmVydGlj YWxQbGFjZWRJY29uU3ltYm9sSW5kZXgpfXRoaXMudGV4dC5pbmRleEJ1ZmZlciYmdGhpcy50 ZXh0LmluZGV4QnVmZmVyLnVwZGF0ZURhdGEodGhpcy50ZXh0LmluZGV4QXJyYXkpLHRoaXMu aWNvbi5pbmRleEJ1ZmZlciYmdGhpcy5pY29uLmluZGV4QnVmZmVyLnVwZGF0ZURhdGEodGhp cy5pY29uLmluZGV4QXJyYXkpfX0sTm4oIlN5bWJvbEJ1Y2tldCIsTWMse29taXQ6WyJsYXll cnMiLCJjb2xsaXNpb25Cb3hBcnJheSIsImZlYXR1cmVzIiwiY29tcGFyZVRleHQiXX0pLE1j Lk1BWF9HTFlQSFM9NjU1MzUsTWMuYWRkRHluYW1pY0F0dHJpYnV0ZXM9d2M7dmFyIFNjPW5l dyBTaSh7InN5bWJvbC1wbGFjZW1lbnQiOm5ldyB3aShMdC5sYXlvdXRfc3ltYm9sWyJzeW1i b2wtcGxhY2VtZW50Il0pLCJzeW1ib2wtc3BhY2luZyI6bmV3IHdpKEx0LmxheW91dF9zeW1i b2xbInN5bWJvbC1zcGFjaW5nIl0pLCJzeW1ib2wtYXZvaWQtZWRnZXMiOm5ldyB3aShMdC5s YXlvdXRfc3ltYm9sWyJzeW1ib2wtYXZvaWQtZWRnZXMiXSksInN5bWJvbC1zb3J0LWtleSI6 bmV3IFRpKEx0LmxheW91dF9zeW1ib2xbInN5bWJvbC1zb3J0LWtleSJdKSwic3ltYm9sLXot b3JkZXIiOm5ldyB3aShMdC5sYXlvdXRfc3ltYm9sWyJzeW1ib2wtei1vcmRlciJdKSwiaWNv bi1hbGxvdy1vdmVybGFwIjpuZXcgd2koTHQubGF5b3V0X3N5bWJvbFsiaWNvbi1hbGxvdy1v dmVybGFwIl0pLCJpY29uLWlnbm9yZS1wbGFjZW1lbnQiOm5ldyB3aShMdC5sYXlvdXRfc3lt Ym9sWyJpY29uLWlnbm9yZS1wbGFjZW1lbnQiXSksImljb24tb3B0aW9uYWwiOm5ldyB3aShM dC5sYXlvdXRfc3ltYm9sWyJpY29uLW9wdGlvbmFsIl0pLCJpY29uLXJvdGF0aW9uLWFsaWdu bWVudCI6bmV3IHdpKEx0LmxheW91dF9zeW1ib2xbImljb24tcm90YXRpb24tYWxpZ25tZW50 Il0pLCJpY29uLXNpemUiOm5ldyBUaShMdC5sYXlvdXRfc3ltYm9sWyJpY29uLXNpemUiXSks Imljb24tdGV4dC1maXQiOm5ldyB3aShMdC5sYXlvdXRfc3ltYm9sWyJpY29uLXRleHQtZml0 Il0pLCJpY29uLXRleHQtZml0LXBhZGRpbmciOm5ldyB3aShMdC5sYXlvdXRfc3ltYm9sWyJp Y29uLXRleHQtZml0LXBhZGRpbmciXSksImljb24taW1hZ2UiOm5ldyBUaShMdC5sYXlvdXRf c3ltYm9sWyJpY29uLWltYWdlIl0pLCJpY29uLXJvdGF0ZSI6bmV3IFRpKEx0LmxheW91dF9z eW1ib2xbImljb24tcm90YXRlIl0pLCJpY29uLXBhZGRpbmciOm5ldyB3aShMdC5sYXlvdXRf c3ltYm9sWyJpY29uLXBhZGRpbmciXSksImljb24ta2VlcC11cHJpZ2h0IjpuZXcgd2koTHQu bGF5b3V0X3N5bWJvbFsiaWNvbi1rZWVwLXVwcmlnaHQiXSksImljb24tb2Zmc2V0IjpuZXcg VGkoTHQubGF5b3V0X3N5bWJvbFsiaWNvbi1vZmZzZXQiXSksImljb24tYW5jaG9yIjpuZXcg VGkoTHQubGF5b3V0X3N5bWJvbFsiaWNvbi1hbmNob3IiXSksImljb24tcGl0Y2gtYWxpZ25t ZW50IjpuZXcgd2koTHQubGF5b3V0X3N5bWJvbFsiaWNvbi1waXRjaC1hbGlnbm1lbnQiXSks InRleHQtcGl0Y2gtYWxpZ25tZW50IjpuZXcgd2koTHQubGF5b3V0X3N5bWJvbFsidGV4dC1w aXRjaC1hbGlnbm1lbnQiXSksInRleHQtcm90YXRpb24tYWxpZ25tZW50IjpuZXcgd2koTHQu bGF5b3V0X3N5bWJvbFsidGV4dC1yb3RhdGlvbi1hbGlnbm1lbnQiXSksInRleHQtZmllbGQi Om5ldyBUaShMdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LWZpZWxkIl0pLCJ0ZXh0LWZvbnQiOm5l dyBUaShMdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LWZvbnQiXSksInRleHQtc2l6ZSI6bmV3IFRp KEx0LmxheW91dF9zeW1ib2xbInRleHQtc2l6ZSJdKSwidGV4dC1tYXgtd2lkdGgiOm5ldyBU aShMdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LW1heC13aWR0aCJdKSwidGV4dC1saW5lLWhlaWdo dCI6bmV3IHdpKEx0LmxheW91dF9zeW1ib2xbInRleHQtbGluZS1oZWlnaHQiXSksInRleHQt bGV0dGVyLXNwYWNpbmciOm5ldyBUaShMdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LWxldHRlci1z cGFjaW5nIl0pLCJ0ZXh0LWp1c3RpZnkiOm5ldyBUaShMdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0 LWp1c3RpZnkiXSksInRleHQtcmFkaWFsLW9mZnNldCI6bmV3IFRpKEx0LmxheW91dF9zeW1i b2xbInRleHQtcmFkaWFsLW9mZnNldCJdKSwidGV4dC12YXJpYWJsZS1hbmNob3IiOm5ldyB3 aShMdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LXZhcmlhYmxlLWFuY2hvciJdKSwidGV4dC1hbmNo b3IiOm5ldyBUaShMdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LWFuY2hvciJdKSwidGV4dC1tYXgt YW5nbGUiOm5ldyB3aShMdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LW1heC1hbmdsZSJdKSwidGV4 dC13cml0aW5nLW1vZGUiOm5ldyB3aShMdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LXdyaXRpbmct bW9kZSJdKSwidGV4dC1yb3RhdGUiOm5ldyBUaShMdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LXJv dGF0ZSJdKSwidGV4dC1wYWRkaW5nIjpuZXcgd2koTHQubGF5b3V0X3N5bWJvbFsidGV4dC1w YWRkaW5nIl0pLCJ0ZXh0LWtlZXAtdXByaWdodCI6bmV3IHdpKEx0LmxheW91dF9zeW1ib2xb InRleHQta2VlcC11cHJpZ2h0Il0pLCJ0ZXh0LXRyYW5zZm9ybSI6bmV3IFRpKEx0LmxheW91 dF9zeW1ib2xbInRleHQtdHJhbnNmb3JtIl0pLCJ0ZXh0LW9mZnNldCI6bmV3IFRpKEx0Lmxh eW91dF9zeW1ib2xbInRleHQtb2Zmc2V0Il0pLCJ0ZXh0LWFsbG93LW92ZXJsYXAiOm5ldyB3 aShMdC5sYXlvdXRfc3ltYm9sWyJ0ZXh0LWFsbG93LW92ZXJsYXAiXSksInRleHQtaWdub3Jl LXBsYWNlbWVudCI6bmV3IHdpKEx0LmxheW91dF9zeW1ib2xbInRleHQtaWdub3JlLXBsYWNl bWVudCJdKSwidGV4dC1vcHRpb25hbCI6bmV3IHdpKEx0LmxheW91dF9zeW1ib2xbInRleHQt b3B0aW9uYWwiXSl9KSxFYz17cGFpbnQ6bmV3IFNpKHsiaWNvbi1vcGFjaXR5IjpuZXcgVGko THQucGFpbnRfc3ltYm9sWyJpY29uLW9wYWNpdHkiXSksImljb24tY29sb3IiOm5ldyBUaShM dC5wYWludF9zeW1ib2xbImljb24tY29sb3IiXSksImljb24taGFsby1jb2xvciI6bmV3IFRp KEx0LnBhaW50X3N5bWJvbFsiaWNvbi1oYWxvLWNvbG9yIl0pLCJpY29uLWhhbG8td2lkdGgi Om5ldyBUaShMdC5wYWludF9zeW1ib2xbImljb24taGFsby13aWR0aCJdKSwiaWNvbi1oYWxv LWJsdXIiOm5ldyBUaShMdC5wYWludF9zeW1ib2xbImljb24taGFsby1ibHVyIl0pLCJpY29u LXRyYW5zbGF0ZSI6bmV3IHdpKEx0LnBhaW50X3N5bWJvbFsiaWNvbi10cmFuc2xhdGUiXSks Imljb24tdHJhbnNsYXRlLWFuY2hvciI6bmV3IHdpKEx0LnBhaW50X3N5bWJvbFsiaWNvbi10 cmFuc2xhdGUtYW5jaG9yIl0pLCJ0ZXh0LW9wYWNpdHkiOm5ldyBUaShMdC5wYWludF9zeW1i b2xbInRleHQtb3BhY2l0eSJdKSwidGV4dC1jb2xvciI6bmV3IFRpKEx0LnBhaW50X3N5bWJv bFsidGV4dC1jb2xvciJdLHtydW50aW1lVHlwZTpVdCxnZXRPdmVycmlkZTpmdW5jdGlvbih0 KXtyZXR1cm4gdC50ZXh0Q29sb3J9LGhhc092ZXJyaWRlOmZ1bmN0aW9uKHQpe3JldHVybiEh dC50ZXh0Q29sb3J9fSksInRleHQtaGFsby1jb2xvciI6bmV3IFRpKEx0LnBhaW50X3N5bWJv bFsidGV4dC1oYWxvLWNvbG9yIl0pLCJ0ZXh0LWhhbG8td2lkdGgiOm5ldyBUaShMdC5wYWlu dF9zeW1ib2xbInRleHQtaGFsby13aWR0aCJdKSwidGV4dC1oYWxvLWJsdXIiOm5ldyBUaShM dC5wYWludF9zeW1ib2xbInRleHQtaGFsby1ibHVyIl0pLCJ0ZXh0LXRyYW5zbGF0ZSI6bmV3 IHdpKEx0LnBhaW50X3N5bWJvbFsidGV4dC10cmFuc2xhdGUiXSksInRleHQtdHJhbnNsYXRl LWFuY2hvciI6bmV3IHdpKEx0LnBhaW50X3N5bWJvbFsidGV4dC10cmFuc2xhdGUtYW5jaG9y Il0pfSksbGF5b3V0OlNjfSxMYz1mdW5jdGlvbih0KXt0aGlzLnR5cGU9dC5wcm9wZXJ0eS5v dmVycmlkZXM/dC5wcm9wZXJ0eS5vdmVycmlkZXMucnVudGltZVR5cGU6RnQsdGhpcy5kZWZh dWx0VmFsdWU9dH07TGMucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKHQpe2lmKHQuZm9y bWF0dGVkU2VjdGlvbil7dmFyIGU9dGhpcy5kZWZhdWx0VmFsdWUucHJvcGVydHkub3ZlcnJp ZGVzO2lmKGUmJmUuaGFzT3ZlcnJpZGUodC5mb3JtYXR0ZWRTZWN0aW9uKSlyZXR1cm4gZS5n ZXRPdmVycmlkZSh0LmZvcm1hdHRlZFNlY3Rpb24pfXJldHVybiB0LmZlYXR1cmUmJnQuZmVh dHVyZVN0YXRlP3RoaXMuZGVmYXVsdFZhbHVlLmV2YWx1YXRlKHQuZmVhdHVyZSx0LmZlYXR1 cmVTdGF0ZSk6dGhpcy5kZWZhdWx0VmFsdWUucHJvcGVydHkuc3BlY2lmaWNhdGlvbi5kZWZh dWx0fSxMYy5wcm90b3R5cGUuZWFjaENoaWxkPWZ1bmN0aW9uKHQpe3RoaXMuZGVmYXVsdFZh bHVlLmlzQ29uc3RhbnQoKXx8dCh0aGlzLmRlZmF1bHRWYWx1ZS52YWx1ZS5fc3R5bGVFeHBy ZXNzaW9uLmV4cHJlc3Npb24pfSxMYy5wcm90b3R5cGUub3V0cHV0RGVmaW5lZD1mdW5jdGlv bigpe3JldHVybiExfSxMYy5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJu IG51bGx9LE5uKCJGb3JtYXRTZWN0aW9uT3ZlcnJpZGUiLExjLHtvbWl0OlsiZGVmYXVsdFZh bHVlIl19KTt2YXIgQ2M9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt0LmNhbGwodGhpcyxl LEVjKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVh dGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5 cGUucmVjYWxjdWxhdGU9ZnVuY3Rpb24oZSxyKXtpZih0LnByb3RvdHlwZS5yZWNhbGN1bGF0 ZS5jYWxsKHRoaXMsZSxyKSwiYXV0byI9PT10aGlzLmxheW91dC5nZXQoImljb24tcm90YXRp b24tYWxpZ25tZW50IikmJigicG9pbnQiIT09dGhpcy5sYXlvdXQuZ2V0KCJzeW1ib2wtcGxh Y2VtZW50Iik/dGhpcy5sYXlvdXQuX3ZhbHVlc1siaWNvbi1yb3RhdGlvbi1hbGlnbm1lbnQi XT0ibWFwIjp0aGlzLmxheW91dC5fdmFsdWVzWyJpY29uLXJvdGF0aW9uLWFsaWdubWVudCJd PSJ2aWV3cG9ydCIpLCJhdXRvIj09PXRoaXMubGF5b3V0LmdldCgidGV4dC1yb3RhdGlvbi1h bGlnbm1lbnQiKSYmKCJwb2ludCIhPT10aGlzLmxheW91dC5nZXQoInN5bWJvbC1wbGFjZW1l bnQiKT90aGlzLmxheW91dC5fdmFsdWVzWyJ0ZXh0LXJvdGF0aW9uLWFsaWdubWVudCJdPSJt YXAiOnRoaXMubGF5b3V0Ll92YWx1ZXNbInRleHQtcm90YXRpb24tYWxpZ25tZW50Il09InZp ZXdwb3J0IiksImF1dG8iPT09dGhpcy5sYXlvdXQuZ2V0KCJ0ZXh0LXBpdGNoLWFsaWdubWVu dCIpJiYodGhpcy5sYXlvdXQuX3ZhbHVlc1sidGV4dC1waXRjaC1hbGlnbm1lbnQiXT10aGlz LmxheW91dC5nZXQoInRleHQtcm90YXRpb24tYWxpZ25tZW50IikpLCJhdXRvIj09PXRoaXMu bGF5b3V0LmdldCgiaWNvbi1waXRjaC1hbGlnbm1lbnQiKSYmKHRoaXMubGF5b3V0Ll92YWx1 ZXNbImljb24tcGl0Y2gtYWxpZ25tZW50Il09dGhpcy5sYXlvdXQuZ2V0KCJpY29uLXJvdGF0 aW9uLWFsaWdubWVudCIpKSwicG9pbnQiPT09dGhpcy5sYXlvdXQuZ2V0KCJzeW1ib2wtcGxh Y2VtZW50Iikpe3ZhciBuPXRoaXMubGF5b3V0LmdldCgidGV4dC13cml0aW5nLW1vZGUiKTtp ZihuKXtmb3IodmFyIGk9W10sYT0wLG89bjthPG8ubGVuZ3RoO2ErPTEpe3ZhciBzPW9bYV07 aS5pbmRleE9mKHMpPDAmJmkucHVzaChzKX10aGlzLmxheW91dC5fdmFsdWVzWyJ0ZXh0LXdy aXRpbmctbW9kZSJdPWl9ZWxzZSB0aGlzLmxheW91dC5fdmFsdWVzWyJ0ZXh0LXdyaXRpbmct bW9kZSJdPVsiaG9yaXpvbnRhbCJdfXRoaXMuX3NldFBhaW50T3ZlcnJpZGVzKCl9LGUucHJv dG90eXBlLmdldFZhbHVlQW5kUmVzb2x2ZVRva2Vucz1mdW5jdGlvbih0LGUscixuKXt2YXIg aT10aGlzLmxheW91dC5nZXQodCkuZXZhbHVhdGUoZSx7fSxyLG4pLGE9dGhpcy5fdW5ldmFs dWF0ZWRMYXlvdXQuX3ZhbHVlc1t0XTtyZXR1cm4gYS5pc0RhdGFEcml2ZW4oKXx8WXIoYS52 YWx1ZSl8fCFpP2k6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5yZXBsYWNlKC97KFtee31dKyl9 L2csKGZ1bmN0aW9uKGUscil7cmV0dXJuIHIgaW4gdD9TdHJpbmcodFtyXSk6IiJ9KSl9KGUu cHJvcGVydGllcyxpKX0sZS5wcm90b3R5cGUuY3JlYXRlQnVja2V0PWZ1bmN0aW9uKHQpe3Jl dHVybiBuZXcgTWModCl9LGUucHJvdG90eXBlLnF1ZXJ5UmFkaXVzPWZ1bmN0aW9uKCl7cmV0 dXJuIDB9LGUucHJvdG90eXBlLnF1ZXJ5SW50ZXJzZWN0c0ZlYXR1cmU9ZnVuY3Rpb24oKXty ZXR1cm4hMX0sZS5wcm90b3R5cGUuX3NldFBhaW50T3ZlcnJpZGVzPWZ1bmN0aW9uKCl7Zm9y KHZhciB0PTAscj1FYy5wYWludC5vdmVycmlkYWJsZVByb3BlcnRpZXM7dDxyLmxlbmd0aDt0 Kz0xKXt2YXIgbj1yW3RdO2lmKGUuaGFzUGFpbnRPdmVycmlkZSh0aGlzLmxheW91dCxuKSl7 dmFyIGk9dGhpcy5wYWludC5nZXQobiksYT1uZXcgTGMoaSksbz1uZXcgR3IoYSxpLnByb3Bl cnR5LnNwZWNpZmljYXRpb24pLHM9bnVsbDtzPSJjb25zdGFudCI9PT1pLnZhbHVlLmtpbmR8 fCJzb3VyY2UiPT09aS52YWx1ZS5raW5kP25ldyBYcigic291cmNlIixvKTpuZXcgWnIoImNv bXBvc2l0ZSIsbyxpLnZhbHVlLnpvb21TdG9wcyxpLnZhbHVlLl9pbnRlcnBvbGF0aW9uVHlw ZSksdGhpcy5wYWludC5fdmFsdWVzW25dPW5ldyBiaShpLnByb3BlcnR5LHMsaS5wYXJhbWV0 ZXJzKX19fSxlLnByb3RvdHlwZS5faGFuZGxlT3ZlcnJpZGFibGVQYWludFByb3BlcnR5VXBk YXRlPWZ1bmN0aW9uKHQscixuKXtyZXR1cm4hKCF0aGlzLmxheW91dHx8ci5pc0RhdGFEcml2 ZW4oKXx8bi5pc0RhdGFEcml2ZW4oKSkmJmUuaGFzUGFpbnRPdmVycmlkZSh0aGlzLmxheW91 dCx0KX0sZS5oYXNQYWludE92ZXJyaWRlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5nZXQoInRl eHQtZmllbGQiKSxuPUVjLnBhaW50LnByb3BlcnRpZXNbZV0saT0hMSxhPWZ1bmN0aW9uKHQp e2Zvcih2YXIgZT0wLHI9dDtlPHIubGVuZ3RoO2UrPTEpe3ZhciBhPXJbZV07aWYobi5vdmVy cmlkZXMmJm4ub3ZlcnJpZGVzLmhhc092ZXJyaWRlKGEpKXJldHVybiB2b2lkKGk9ITApfX07 aWYoImNvbnN0YW50Ij09PXIudmFsdWUua2luZCYmci52YWx1ZS52YWx1ZSBpbnN0YW5jZW9m IG5lKWEoci52YWx1ZS52YWx1ZS5zZWN0aW9ucyk7ZWxzZSBpZigic291cmNlIj09PXIudmFs dWUua2luZCl7dmFyIG89ZnVuY3Rpb24odCl7aWYoIWkpaWYodCBpbnN0YW5jZW9mIGNlJiZz ZSh0LnZhbHVlKT09PUd0KXt2YXIgZT10LnZhbHVlO2EoZS5zZWN0aW9ucyl9ZWxzZSB0IGlu c3RhbmNlb2YgcGU/YSh0LnNlY3Rpb25zKTp0LmVhY2hDaGlsZChvKX0scz1yLnZhbHVlO3Mu X3N0eWxlRXhwcmVzc2lvbiYmbyhzLl9zdHlsZUV4cHJlc3Npb24uZXhwcmVzc2lvbil9cmV0 dXJuIGl9LGV9KEVpKSxQYz17cGFpbnQ6bmV3IFNpKHsiYmFja2dyb3VuZC1jb2xvciI6bmV3 IHdpKEx0LnBhaW50X2JhY2tncm91bmRbImJhY2tncm91bmQtY29sb3IiXSksImJhY2tncm91 bmQtcGF0dGVybiI6bmV3IEFpKEx0LnBhaW50X2JhY2tncm91bmRbImJhY2tncm91bmQtcGF0 dGVybiJdKSwiYmFja2dyb3VuZC1vcGFjaXR5IjpuZXcgd2koTHQucGFpbnRfYmFja2dyb3Vu ZFsiYmFja2dyb3VuZC1vcGFjaXR5Il0pfSl9LEljPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUo ZSl7dC5jYWxsKHRoaXMsZSxQYyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3Rv dHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1 Y3Rvcj1lLGV9KEVpKSxPYz17cGFpbnQ6bmV3IFNpKHsicmFzdGVyLW9wYWNpdHkiOm5ldyB3 aShMdC5wYWludF9yYXN0ZXJbInJhc3Rlci1vcGFjaXR5Il0pLCJyYXN0ZXItaHVlLXJvdGF0 ZSI6bmV3IHdpKEx0LnBhaW50X3Jhc3RlclsicmFzdGVyLWh1ZS1yb3RhdGUiXSksInJhc3Rl ci1icmlnaHRuZXNzLW1pbiI6bmV3IHdpKEx0LnBhaW50X3Jhc3RlclsicmFzdGVyLWJyaWdo dG5lc3MtbWluIl0pLCJyYXN0ZXItYnJpZ2h0bmVzcy1tYXgiOm5ldyB3aShMdC5wYWludF9y YXN0ZXJbInJhc3Rlci1icmlnaHRuZXNzLW1heCJdKSwicmFzdGVyLXNhdHVyYXRpb24iOm5l dyB3aShMdC5wYWludF9yYXN0ZXJbInJhc3Rlci1zYXR1cmF0aW9uIl0pLCJyYXN0ZXItY29u dHJhc3QiOm5ldyB3aShMdC5wYWludF9yYXN0ZXJbInJhc3Rlci1jb250cmFzdCJdKSwicmFz dGVyLXJlc2FtcGxpbmciOm5ldyB3aShMdC5wYWludF9yYXN0ZXJbInJhc3Rlci1yZXNhbXBs aW5nIl0pLCJyYXN0ZXItZmFkZS1kdXJhdGlvbiI6bmV3IHdpKEx0LnBhaW50X3Jhc3Rlclsi cmFzdGVyLWZhZGUtZHVyYXRpb24iXSl9KX0semM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShl KXt0LmNhbGwodGhpcyxlLE9jKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90 eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVj dG9yPWUsZX0oRWkpO3ZhciBEYz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3QuY2FsbCh0 aGlzLGUse30pLHRoaXMuaW1wbGVtZW50YXRpb249ZX1yZXR1cm4gdCYmKGUuX19wcm90b19f PXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90 eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuaXMzRD1mdW5jdGlvbigpe3JldHVybiIz ZCI9PT10aGlzLmltcGxlbWVudGF0aW9uLnJlbmRlcmluZ01vZGV9LGUucHJvdG90eXBlLmhh c09mZnNjcmVlblBhc3M9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5pbXBsZW1l bnRhdGlvbi5wcmVyZW5kZXJ9LGUucHJvdG90eXBlLnJlY2FsY3VsYXRlPWZ1bmN0aW9uKCl7 fSxlLnByb3RvdHlwZS51cGRhdGVUcmFuc2l0aW9ucz1mdW5jdGlvbigpe30sZS5wcm90b3R5 cGUuaGFzVHJhbnNpdGlvbj1mdW5jdGlvbigpe30sZS5wcm90b3R5cGUuc2VyaWFsaXplPWZ1 bmN0aW9uKCl7fSxlLnByb3RvdHlwZS5vbkFkZD1mdW5jdGlvbih0KXt0aGlzLmltcGxlbWVu dGF0aW9uLm9uQWRkJiZ0aGlzLmltcGxlbWVudGF0aW9uLm9uQWRkKHQsdC5wYWludGVyLmNv bnRleHQuZ2wpfSxlLnByb3RvdHlwZS5vblJlbW92ZT1mdW5jdGlvbih0KXt0aGlzLmltcGxl bWVudGF0aW9uLm9uUmVtb3ZlJiZ0aGlzLmltcGxlbWVudGF0aW9uLm9uUmVtb3ZlKHQsdC5w YWludGVyLmNvbnRleHQuZ2wpfSxlfShFaSksUmM9e2NpcmNsZTpfbyxoZWF0bWFwOlBvLGhp bGxzaGFkZTpPbyxmaWxsOnhzLCJmaWxsLWV4dHJ1c2lvbiI6RnMsbGluZTpYcyxzeW1ib2w6 Q2MsYmFja2dyb3VuZDpJYyxyYXN0ZXI6emN9O3ZhciBGYz1zZWxmLkhUTUxJbWFnZUVsZW1l bnQsQmM9c2VsZi5IVE1MQ2FudmFzRWxlbWVudCxOYz1zZWxmLkhUTUxWaWRlb0VsZW1lbnQs amM9c2VsZi5JbWFnZURhdGEsVWM9c2VsZi5JbWFnZUJpdG1hcCxWYz1mdW5jdGlvbih0LGUs cixuKXt0aGlzLmNvbnRleHQ9dCx0aGlzLmZvcm1hdD1yLHRoaXMudGV4dHVyZT10LmdsLmNy ZWF0ZVRleHR1cmUoKSx0aGlzLnVwZGF0ZShlLG4pfTtWYy5wcm90b3R5cGUudXBkYXRlPWZ1 bmN0aW9uKHQsZSxyKXt2YXIgbj10LndpZHRoLGk9dC5oZWlnaHQsYT0hKHRoaXMuc2l6ZSYm dGhpcy5zaXplWzBdPT09biYmdGhpcy5zaXplWzFdPT09aXx8ciksbz10aGlzLmNvbnRleHQs cz1vLmdsO2lmKHRoaXMudXNlTWlwbWFwPUJvb2xlYW4oZSYmZS51c2VNaXBtYXApLHMuYmlu ZFRleHR1cmUocy5URVhUVVJFXzJELHRoaXMudGV4dHVyZSksby5waXhlbFN0b3JlVW5wYWNr RmxpcFkuc2V0KCExKSxvLnBpeGVsU3RvcmVVbnBhY2suc2V0KDEpLG8ucGl4ZWxTdG9yZVVu cGFja1ByZW11bHRpcGx5QWxwaGEuc2V0KHRoaXMuZm9ybWF0PT09cy5SR0JBJiYoIWV8fCEx IT09ZS5wcmVtdWx0aXBseSkpLGEpdGhpcy5zaXplPVtuLGldLHQgaW5zdGFuY2VvZiBGY3x8 dCBpbnN0YW5jZW9mIEJjfHx0IGluc3RhbmNlb2YgTmN8fHQgaW5zdGFuY2VvZiBqY3x8VWMm JnQgaW5zdGFuY2VvZiBVYz9zLnRleEltYWdlMkQocy5URVhUVVJFXzJELDAsdGhpcy5mb3Jt YXQsdGhpcy5mb3JtYXQscy5VTlNJR05FRF9CWVRFLHQpOnMudGV4SW1hZ2UyRChzLlRFWFRV UkVfMkQsMCx0aGlzLmZvcm1hdCxuLGksMCx0aGlzLmZvcm1hdCxzLlVOU0lHTkVEX0JZVEUs dC5kYXRhKTtlbHNle3ZhciBsPXJ8fHt4OjAseTowfSxjPWwueCx1PWwueTt0IGluc3RhbmNl b2YgRmN8fHQgaW5zdGFuY2VvZiBCY3x8dCBpbnN0YW5jZW9mIE5jfHx0IGluc3RhbmNlb2Yg amN8fFVjJiZ0IGluc3RhbmNlb2YgVWM/cy50ZXhTdWJJbWFnZTJEKHMuVEVYVFVSRV8yRCww LGMsdSxzLlJHQkEscy5VTlNJR05FRF9CWVRFLHQpOnMudGV4U3ViSW1hZ2UyRChzLlRFWFRV UkVfMkQsMCxjLHUsbixpLHMuUkdCQSxzLlVOU0lHTkVEX0JZVEUsdC5kYXRhKX10aGlzLnVz ZU1pcG1hcCYmdGhpcy5pc1NpemVQb3dlck9mVHdvKCkmJnMuZ2VuZXJhdGVNaXBtYXAocy5U RVhUVVJFXzJEKX0sVmMucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRo aXMuY29udGV4dC5nbDtuLmJpbmRUZXh0dXJlKG4uVEVYVFVSRV8yRCx0aGlzLnRleHR1cmUp LHIhPT1uLkxJTkVBUl9NSVBNQVBfTkVBUkVTVHx8dGhpcy5pc1NpemVQb3dlck9mVHdvKCl8 fChyPW4uTElORUFSKSx0IT09dGhpcy5maWx0ZXImJihuLnRleFBhcmFtZXRlcmkobi5URVhU VVJFXzJELG4uVEVYVFVSRV9NQUdfRklMVEVSLHQpLG4udGV4UGFyYW1ldGVyaShuLlRFWFRV UkVfMkQsbi5URVhUVVJFX01JTl9GSUxURVIscnx8dCksdGhpcy5maWx0ZXI9dCksZSE9PXRo aXMud3JhcCYmKG4udGV4UGFyYW1ldGVyaShuLlRFWFRVUkVfMkQsbi5URVhUVVJFX1dSQVBf UyxlKSxuLnRleFBhcmFtZXRlcmkobi5URVhUVVJFXzJELG4uVEVYVFVSRV9XUkFQX1QsZSks dGhpcy53cmFwPWUpfSxWYy5wcm90b3R5cGUuaXNTaXplUG93ZXJPZlR3bz1mdW5jdGlvbigp e3JldHVybiB0aGlzLnNpemVbMF09PT10aGlzLnNpemVbMV0mJk1hdGgubG9nKHRoaXMuc2l6 ZVswXSkvTWF0aC5MTjIlMT09MH0sVmMucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0 aGlzLmNvbnRleHQuZ2wuZGVsZXRlVGV4dHVyZSh0aGlzLnRleHR1cmUpLHRoaXMudGV4dHVy ZT1udWxsfTt2YXIgSGM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9jYWxsYmFjaz10 LHRoaXMuX3RyaWdnZXJlZD0hMSwidW5kZWZpbmVkIiE9dHlwZW9mIE1lc3NhZ2VDaGFubmVs JiYodGhpcy5fY2hhbm5lbD1uZXcgTWVzc2FnZUNoYW5uZWwsdGhpcy5fY2hhbm5lbC5wb3J0 Mi5vbm1lc3NhZ2U9ZnVuY3Rpb24oKXtlLl90cmlnZ2VyZWQ9ITEsZS5fY2FsbGJhY2soKX0p fTtIYy5wcm90b3R5cGUudHJpZ2dlcj1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fdHJp Z2dlcmVkfHwodGhpcy5fdHJpZ2dlcmVkPSEwLHRoaXMuX2NoYW5uZWw/dGhpcy5fY2hhbm5l bC5wb3J0MS5wb3N0TWVzc2FnZSghMCk6c2V0VGltZW91dCgoZnVuY3Rpb24oKXt0Ll90cmln Z2VyZWQ9ITEsdC5fY2FsbGJhY2soKX0pLDApKX0sSGMucHJvdG90eXBlLnJlbW92ZT1mdW5j dGlvbigpe2RlbGV0ZSB0aGlzLl9jaGFubmVsLHRoaXMuX2NhbGxiYWNrPWZ1bmN0aW9uKCl7 fX07dmFyIHFjPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLnRhcmdldD10LHRoaXMucGFyZW50PWUs dGhpcy5tYXBJZD1yLHRoaXMuY2FsbGJhY2tzPXt9LHRoaXMudGFza3M9e30sdGhpcy50YXNr UXVldWU9W10sdGhpcy5jYW5jZWxDYWxsYmFja3M9e30sbShbInJlY2VpdmUiLCJwcm9jZXNz Il0sdGhpcyksdGhpcy5pbnZva2VyPW5ldyBIYyh0aGlzLnByb2Nlc3MpLHRoaXMudGFyZ2V0 LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMucmVjZWl2ZSwhMSksdGhpcy5nbG9i YWxTY29wZT1rKCk/dDpzZWxmfTtmdW5jdGlvbiBHYyh0LGUscil7dmFyIG49MipNYXRoLlBJ KjYzNzgxMzcvMjU2L01hdGgucG93KDIscik7cmV0dXJuW3Qqbi0yKk1hdGguUEkqNjM3ODEz Ny8yLGUqbi0yKk1hdGguUEkqNjM3ODEzNy8yXX1xYy5wcm90b3R5cGUuc2VuZD1mdW5jdGlv bih0LGUscixuLGkpe3ZhciBhPXRoaXM7dm9pZCAwPT09aSYmKGk9ITEpO3ZhciBvPU1hdGgu cm91bmQoMWUxOCpNYXRoLnJhbmRvbSgpKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDAsMTAp O3ImJih0aGlzLmNhbGxiYWNrc1tvXT1yKTt2YXIgcz1TKHRoaXMuZ2xvYmFsU2NvcGUpP3Zv aWQgMDpbXTtyZXR1cm4gdGhpcy50YXJnZXQucG9zdE1lc3NhZ2Uoe2lkOm8sdHlwZTp0LGhh c0NhbGxiYWNrOiEhcix0YXJnZXRNYXBJZDpuLG11c3RRdWV1ZTppLHNvdXJjZU1hcElkOnRo aXMubWFwSWQsZGF0YTpIbihlLHMpfSxzKSx7Y2FuY2VsOmZ1bmN0aW9uKCl7ciYmZGVsZXRl IGEuY2FsbGJhY2tzW29dLGEudGFyZ2V0LnBvc3RNZXNzYWdlKHtpZDpvLHR5cGU6IjxjYW5j ZWw+Iix0YXJnZXRNYXBJZDpuLHNvdXJjZU1hcElkOmEubWFwSWR9KX19fSxxYy5wcm90b3R5 cGUucmVjZWl2ZT1mdW5jdGlvbih0KXt2YXIgZT10LmRhdGEscj1lLmlkO2lmKHImJighZS50 YXJnZXRNYXBJZHx8dGhpcy5tYXBJZD09PWUudGFyZ2V0TWFwSWQpKWlmKCI8Y2FuY2VsPiI9 PT1lLnR5cGUpe2RlbGV0ZSB0aGlzLnRhc2tzW3JdO3ZhciBuPXRoaXMuY2FuY2VsQ2FsbGJh Y2tzW3JdO2RlbGV0ZSB0aGlzLmNhbmNlbENhbGxiYWNrc1tyXSxuJiZuKCl9ZWxzZSBrKCl8 fGUubXVzdFF1ZXVlPyh0aGlzLnRhc2tzW3JdPWUsdGhpcy50YXNrUXVldWUucHVzaChyKSx0 aGlzLmludm9rZXIudHJpZ2dlcigpKTp0aGlzLnByb2Nlc3NUYXNrKHIsZSl9LHFjLnByb3Rv dHlwZS5wcm9jZXNzPWZ1bmN0aW9uKCl7aWYodGhpcy50YXNrUXVldWUubGVuZ3RoKXt2YXIg dD10aGlzLnRhc2tRdWV1ZS5zaGlmdCgpLGU9dGhpcy50YXNrc1t0XTtkZWxldGUgdGhpcy50 YXNrc1t0XSx0aGlzLnRhc2tRdWV1ZS5sZW5ndGgmJnRoaXMuaW52b2tlci50cmlnZ2VyKCks ZSYmdGhpcy5wcm9jZXNzVGFzayh0LGUpfX0scWMucHJvdG90eXBlLnByb2Nlc3NUYXNrPWZ1 bmN0aW9uKHQsZSl7dmFyIHI9dGhpcztpZigiPHJlc3BvbnNlPiI9PT1lLnR5cGUpe3ZhciBu PXRoaXMuY2FsbGJhY2tzW3RdO2RlbGV0ZSB0aGlzLmNhbGxiYWNrc1t0XSxuJiYoZS5lcnJv cj9uKHFuKGUuZXJyb3IpKTpuKG51bGwscW4oZS5kYXRhKSkpfWVsc2V7dmFyIGk9ITEsYT1T KHRoaXMuZ2xvYmFsU2NvcGUpP3ZvaWQgMDpbXSxvPWUuaGFzQ2FsbGJhY2s/ZnVuY3Rpb24o ZSxuKXtpPSEwLGRlbGV0ZSByLmNhbmNlbENhbGxiYWNrc1t0XSxyLnRhcmdldC5wb3N0TWVz c2FnZSh7aWQ6dCx0eXBlOiI8cmVzcG9uc2U+Iixzb3VyY2VNYXBJZDpyLm1hcElkLGVycm9y OmU/SG4oZSk6bnVsbCxkYXRhOkhuKG4sYSl9LGEpfTpmdW5jdGlvbih0KXtpPSEwfSxzPW51 bGwsbD1xbihlLmRhdGEpO2lmKHRoaXMucGFyZW50W2UudHlwZV0pcz10aGlzLnBhcmVudFtl LnR5cGVdKGUuc291cmNlTWFwSWQsbCxvKTtlbHNlIGlmKHRoaXMucGFyZW50LmdldFdvcmtl clNvdXJjZSl7dmFyIGM9ZS50eXBlLnNwbGl0KCIuIik7cz10aGlzLnBhcmVudC5nZXRXb3Jr ZXJTb3VyY2UoZS5zb3VyY2VNYXBJZCxjWzBdLGwuc291cmNlKVtjWzFdXShsLG8pfWVsc2Ug byhuZXcgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIGZ1bmN0aW9uICIrZS50eXBlKSk7IWkmJnMm JnMuY2FuY2VsJiYodGhpcy5jYW5jZWxDYWxsYmFja3NbdF09cy5jYW5jZWwpfX0scWMucHJv dG90eXBlLnJlbW92ZT1mdW5jdGlvbigpe3RoaXMuaW52b2tlci5yZW1vdmUoKSx0aGlzLnRh cmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLnJlY2VpdmUsITEpfTt2 YXIgWWM9ZnVuY3Rpb24odCxlKXt0JiYoZT90aGlzLnNldFNvdXRoV2VzdCh0KS5zZXROb3J0 aEVhc3QoZSk6ND09PXQubGVuZ3RoP3RoaXMuc2V0U291dGhXZXN0KFt0WzBdLHRbMV1dKS5z ZXROb3J0aEVhc3QoW3RbMl0sdFszXV0pOnRoaXMuc2V0U291dGhXZXN0KHRbMF0pLnNldE5v cnRoRWFzdCh0WzFdKSl9O1ljLnByb3RvdHlwZS5zZXROb3J0aEVhc3Q9ZnVuY3Rpb24odCl7 cmV0dXJuIHRoaXMuX25lPXQgaW5zdGFuY2VvZiBXYz9uZXcgV2ModC5sbmcsdC5sYXQpOldj LmNvbnZlcnQodCksdGhpc30sWWMucHJvdG90eXBlLnNldFNvdXRoV2VzdD1mdW5jdGlvbih0 KXtyZXR1cm4gdGhpcy5fc3c9dCBpbnN0YW5jZW9mIFdjP25ldyBXYyh0LmxuZyx0LmxhdCk6 V2MuY29udmVydCh0KSx0aGlzfSxZYy5wcm90b3R5cGUuZXh0ZW5kPWZ1bmN0aW9uKHQpe3Zh ciBlLHIsbj10aGlzLl9zdyxpPXRoaXMuX25lO2lmKHQgaW5zdGFuY2VvZiBXYyllPXQscj10 O2Vsc2V7aWYoISh0IGluc3RhbmNlb2YgWWMpKXtpZihBcnJheS5pc0FycmF5KHQpKXtpZig0 PT09dC5sZW5ndGh8fHQuZXZlcnkoQXJyYXkuaXNBcnJheSkpe3ZhciBhPXQ7cmV0dXJuIHRo aXMuZXh0ZW5kKFljLmNvbnZlcnQoYSkpfXZhciBvPXQ7cmV0dXJuIHRoaXMuZXh0ZW5kKFdj LmNvbnZlcnQobykpfXJldHVybiB0aGlzfWlmKGU9dC5fc3cscj10Ll9uZSwhZXx8IXIpcmV0 dXJuIHRoaXN9cmV0dXJuIG58fGk/KG4ubG5nPU1hdGgubWluKGUubG5nLG4ubG5nKSxuLmxh dD1NYXRoLm1pbihlLmxhdCxuLmxhdCksaS5sbmc9TWF0aC5tYXgoci5sbmcsaS5sbmcpLGku bGF0PU1hdGgubWF4KHIubGF0LGkubGF0KSk6KHRoaXMuX3N3PW5ldyBXYyhlLmxuZyxlLmxh dCksdGhpcy5fbmU9bmV3IFdjKHIubG5nLHIubGF0KSksdGhpc30sWWMucHJvdG90eXBlLmdl dENlbnRlcj1mdW5jdGlvbigpe3JldHVybiBuZXcgV2MoKHRoaXMuX3N3LmxuZyt0aGlzLl9u ZS5sbmcpLzIsKHRoaXMuX3N3LmxhdCt0aGlzLl9uZS5sYXQpLzIpfSxZYy5wcm90b3R5cGUu Z2V0U291dGhXZXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N3fSxZYy5wcm90b3R5cGUu Z2V0Tm9ydGhFYXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25lfSxZYy5wcm90b3R5cGUu Z2V0Tm9ydGhXZXN0PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBXYyh0aGlzLmdldFdlc3QoKSx0 aGlzLmdldE5vcnRoKCkpfSxZYy5wcm90b3R5cGUuZ2V0U291dGhFYXN0PWZ1bmN0aW9uKCl7 cmV0dXJuIG5ldyBXYyh0aGlzLmdldEVhc3QoKSx0aGlzLmdldFNvdXRoKCkpfSxZYy5wcm90 b3R5cGUuZ2V0V2VzdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdy5sbmd9LFljLnByb3Rv dHlwZS5nZXRTb3V0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdy5sYXR9LFljLnByb3Rv dHlwZS5nZXRFYXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25lLmxuZ30sWWMucHJvdG90 eXBlLmdldE5vcnRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25lLmxhdH0sWWMucHJvdG90 eXBlLnRvQXJyYXk9ZnVuY3Rpb24oKXtyZXR1cm5bdGhpcy5fc3cudG9BcnJheSgpLHRoaXMu X25lLnRvQXJyYXkoKV19LFljLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVy biJMbmdMYXRCb3VuZHMoIit0aGlzLl9zdy50b1N0cmluZygpKyIsICIrdGhpcy5fbmUudG9T dHJpbmcoKSsiKSJ9LFljLnByb3RvdHlwZS5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuISh0 aGlzLl9zdyYmdGhpcy5fbmUpfSxZYy5wcm90b3R5cGUuY29udGFpbnM9ZnVuY3Rpb24odCl7 dmFyIGU9V2MuY29udmVydCh0KSxyPWUubG5nLG49ZS5sYXQsaT10aGlzLl9zdy5sYXQ8PW4m Jm48PXRoaXMuX25lLmxhdCxhPXRoaXMuX3N3LmxuZzw9ciYmcjw9dGhpcy5fbmUubG5nO3Jl dHVybiB0aGlzLl9zdy5sbmc+dGhpcy5fbmUubG5nJiYoYT10aGlzLl9zdy5sbmc+PXImJnI+ PXRoaXMuX25lLmxuZyksaSYmYX0sWWMuY29udmVydD1mdW5jdGlvbih0KXtyZXR1cm4hdHx8 dCBpbnN0YW5jZW9mIFljP3Q6bmV3IFljKHQpfTt2YXIgV2M9ZnVuY3Rpb24odCxlKXtpZihp c05hTih0KXx8aXNOYU4oZSkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIExuZ0xhdCBvYmpl Y3Q6ICgiK3QrIiwgIitlKyIpIik7aWYodGhpcy5sbmc9K3QsdGhpcy5sYXQ9K2UsdGhpcy5s YXQ+OTB8fHRoaXMubGF0PC05MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgTG5nTGF0IGxh dGl0dWRlIHZhbHVlOiBtdXN0IGJlIGJldHdlZW4gLTkwIGFuZCA5MCIpfTtXYy5wcm90b3R5 cGUud3JhcD1mdW5jdGlvbigpe3JldHVybiBuZXcgV2MoYyh0aGlzLmxuZywtMTgwLDE4MCks dGhpcy5sYXQpfSxXYy5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbigpe3JldHVyblt0aGlz LmxuZyx0aGlzLmxhdF19LFdjLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVy biJMbmdMYXQoIit0aGlzLmxuZysiLCAiK3RoaXMubGF0KyIpIn0sV2MucHJvdG90eXBlLmRp c3RhbmNlVG89ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5QSS8xODAscj10aGlzLmxhdCplLG49 dC5sYXQqZSxpPU1hdGguc2luKHIpKk1hdGguc2luKG4pK01hdGguY29zKHIpKk1hdGguY29z KG4pKk1hdGguY29zKCh0LmxuZy10aGlzLmxuZykqZSk7cmV0dXJuIDYzNzEwMDguOCpNYXRo LmFjb3MoTWF0aC5taW4oaSwxKSl9LFdjLnByb3RvdHlwZS50b0JvdW5kcz1mdW5jdGlvbih0 KXt2b2lkIDA9PT10JiYodD0wKTt2YXIgZT0zNjAqdC80MDA3NTAxNyxyPWUvTWF0aC5jb3Mo TWF0aC5QSS8xODAqdGhpcy5sYXQpO3JldHVybiBuZXcgWWMobmV3IFdjKHRoaXMubG5nLXIs dGhpcy5sYXQtZSksbmV3IFdjKHRoaXMubG5nK3IsdGhpcy5sYXQrZSkpfSxXYy5jb252ZXJ0 PWZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBXYylyZXR1cm4gdDtpZihBcnJheS5pc0Fy cmF5KHQpJiYoMj09PXQubGVuZ3RofHwzPT09dC5sZW5ndGgpKXJldHVybiBuZXcgV2MoTnVt YmVyKHRbMF0pLE51bWJlcih0WzFdKSk7aWYoIUFycmF5LmlzQXJyYXkodCkmJiJvYmplY3Qi PT10eXBlb2YgdCYmbnVsbCE9PXQpcmV0dXJuIG5ldyBXYyhOdW1iZXIoImxuZyJpbiB0P3Qu bG5nOnQubG9uKSxOdW1iZXIodC5sYXQpKTt0aHJvdyBuZXcgRXJyb3IoImBMbmdMYXRMaWtl YCBhcmd1bWVudCBtdXN0IGJlIHNwZWNpZmllZCBhcyBhIExuZ0xhdCBpbnN0YW5jZSwgYW4g b2JqZWN0IHtsbmc6IDxsbmc+LCBsYXQ6IDxsYXQ+fSwgYW4gb2JqZWN0IHtsb246IDxsbmc+ LCBsYXQ6IDxsYXQ+fSwgb3IgYW4gYXJyYXkgb2YgWzxsbmc+LCA8bGF0Pl0iKX07dmFyIFhj PTIqTWF0aC5QSSo2MzcxMDA4Ljg7ZnVuY3Rpb24gWmModCl7cmV0dXJuIFhjKk1hdGguY29z KHQqTWF0aC5QSS8xODApfWZ1bmN0aW9uIEpjKHQpe3JldHVybigxODArdCkvMzYwfWZ1bmN0 aW9uIEtjKHQpe3JldHVybigxODAtMTgwL01hdGguUEkqTWF0aC5sb2coTWF0aC50YW4oTWF0 aC5QSS80K3QqTWF0aC5QSS8zNjApKSkvMzYwfWZ1bmN0aW9uIFFjKHQsZSl7cmV0dXJuIHQv WmMoZSl9ZnVuY3Rpb24gJGModCl7dmFyIGU9MTgwLTM2MCp0O3JldHVybiAzNjAvTWF0aC5Q SSpNYXRoLmF0YW4oTWF0aC5leHAoZSpNYXRoLlBJLzE4MCkpLTkwfXZhciB0dT1mdW5jdGlv bih0LGUscil7dm9pZCAwPT09ciYmKHI9MCksdGhpcy54PSt0LHRoaXMueT0rZSx0aGlzLno9 K3J9O3R1LmZyb21MbmdMYXQ9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT0wKTt2YXIg cj1XYy5jb252ZXJ0KHQpO3JldHVybiBuZXcgdHUoSmMoci5sbmcpLEtjKHIubGF0KSxRYyhl LHIubGF0KSl9LHR1LnByb3RvdHlwZS50b0xuZ0xhdD1mdW5jdGlvbigpe3JldHVybiBuZXcg V2MoMzYwKnRoaXMueC0xODAsJGModGhpcy55KSl9LHR1LnByb3RvdHlwZS50b0FsdGl0dWRl PWZ1bmN0aW9uKCl7cmV0dXJuIHQ9dGhpcy56LGU9dGhpcy55LHQqWmMoJGMoZSkpO3ZhciB0 LGV9LHR1LnByb3RvdHlwZS5tZXRlckluTWVyY2F0b3JDb29yZGluYXRlVW5pdHM9ZnVuY3Rp b24oKXtyZXR1cm4gMS9YYyoodD0kYyh0aGlzLnkpLDEvTWF0aC5jb3ModCpNYXRoLlBJLzE4 MCkpO3ZhciB0fTt2YXIgZXU9ZnVuY3Rpb24odCxlLHIpe3RoaXMuej10LHRoaXMueD1lLHRo aXMueT1yLHRoaXMua2V5PWl1KDAsdCx0LGUscil9O2V1LnByb3RvdHlwZS5lcXVhbHM9ZnVu Y3Rpb24odCl7cmV0dXJuIHRoaXMuej09PXQueiYmdGhpcy54PT09dC54JiZ0aGlzLnk9PT10 Lnl9LGV1LnByb3RvdHlwZS51cmw9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGksYSxvLHM9KHI9 dGhpcy54LG49dGhpcy55LGk9dGhpcy56LGE9R2MoMjU2KnIsMjU2KihuPU1hdGgucG93KDIs aSktbi0xKSxpKSxvPUdjKDI1NioocisxKSwyNTYqKG4rMSksaSksYVswXSsiLCIrYVsxXSsi LCIrb1swXSsiLCIrb1sxXSksbD1mdW5jdGlvbih0LGUscil7Zm9yKHZhciBuLGk9IiIsYT10 O2E+MDthLS0paSs9KGUmKG49MTw8YS0xKT8xOjApKyhyJm4/MjowKTtyZXR1cm4gaX0odGhp cy56LHRoaXMueCx0aGlzLnkpO3JldHVybiB0Wyh0aGlzLngrdGhpcy55KSV0Lmxlbmd0aF0u cmVwbGFjZSgie3ByZWZpeH0iLCh0aGlzLnglMTYpLnRvU3RyaW5nKDE2KSsodGhpcy55JTE2 KS50b1N0cmluZygxNikpLnJlcGxhY2UoInt6fSIsU3RyaW5nKHRoaXMueikpLnJlcGxhY2Uo Int4fSIsU3RyaW5nKHRoaXMueCkpLnJlcGxhY2UoInt5fSIsU3RyaW5nKCJ0bXMiPT09ZT9N YXRoLnBvdygyLHRoaXMueiktdGhpcy55LTE6dGhpcy55KSkucmVwbGFjZSgie3F1YWRrZXl9 IixsKS5yZXBsYWNlKCJ7YmJveC1lcHNnLTM4NTd9IixzKX0sZXUucHJvdG90eXBlLmdldFRp bGVQb2ludD1mdW5jdGlvbih0KXt2YXIgZT1NYXRoLnBvdygyLHRoaXMueik7cmV0dXJuIG5l dyBpKDgxOTIqKHQueCplLXRoaXMueCksODE5MioodC55KmUtdGhpcy55KSl9LGV1LnByb3Rv dHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnorIi8iK3RoaXMueCsiLyIr dGhpcy55fTt2YXIgcnU9ZnVuY3Rpb24odCxlKXt0aGlzLndyYXA9dCx0aGlzLmNhbm9uaWNh bD1lLHRoaXMua2V5PWl1KHQsZS56LGUueixlLngsZS55KX0sbnU9ZnVuY3Rpb24odCxlLHIs bixpKXt0aGlzLm92ZXJzY2FsZWRaPXQsdGhpcy53cmFwPWUsdGhpcy5jYW5vbmljYWw9bmV3 IGV1KHIsK24sK2kpLHRoaXMua2V5PWl1KGUsdCxyLG4saSl9O2Z1bmN0aW9uIGl1KHQsZSxy LG4saSl7KHQqPTIpPDAmJih0PS0xKnQtMSk7dmFyIGE9MTw8cjtyZXR1cm4oYSphKnQrYSpp K24pLnRvU3RyaW5nKDM2KStyLnRvU3RyaW5nKDM2KStlLnRvU3RyaW5nKDM2KX1udS5wcm90 b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm92ZXJzY2FsZWRaPT09dC5v dmVyc2NhbGVkWiYmdGhpcy53cmFwPT09dC53cmFwJiZ0aGlzLmNhbm9uaWNhbC5lcXVhbHMo dC5jYW5vbmljYWwpfSxudS5wcm90b3R5cGUuc2NhbGVkVG89ZnVuY3Rpb24odCl7dmFyIGU9 dGhpcy5jYW5vbmljYWwuei10O3JldHVybiB0PnRoaXMuY2Fub25pY2FsLno/bmV3IG51KHQs dGhpcy53cmFwLHRoaXMuY2Fub25pY2FsLnosdGhpcy5jYW5vbmljYWwueCx0aGlzLmNhbm9u aWNhbC55KTpuZXcgbnUodCx0aGlzLndyYXAsdCx0aGlzLmNhbm9uaWNhbC54Pj5lLHRoaXMu Y2Fub25pY2FsLnk+PmUpfSxudS5wcm90b3R5cGUuY2FsY3VsYXRlU2NhbGVkS2V5PWZ1bmN0 aW9uKHQsZSl7dmFyIHI9dGhpcy5jYW5vbmljYWwuei10O3JldHVybiB0PnRoaXMuY2Fub25p Y2FsLno/aXUodGhpcy53cmFwKitlLHQsdGhpcy5jYW5vbmljYWwueix0aGlzLmNhbm9uaWNh bC54LHRoaXMuY2Fub25pY2FsLnkpOml1KHRoaXMud3JhcCorZSx0LHQsdGhpcy5jYW5vbmlj YWwueD4+cix0aGlzLmNhbm9uaWNhbC55Pj5yKX0sbnUucHJvdG90eXBlLmlzQ2hpbGRPZj1m dW5jdGlvbih0KXtpZih0LndyYXAhPT10aGlzLndyYXApcmV0dXJuITE7dmFyIGU9dGhpcy5j YW5vbmljYWwuei10LmNhbm9uaWNhbC56O3JldHVybiAwPT09dC5vdmVyc2NhbGVkWnx8dC5v dmVyc2NhbGVkWjx0aGlzLm92ZXJzY2FsZWRaJiZ0LmNhbm9uaWNhbC54PT09dGhpcy5jYW5v bmljYWwueD4+ZSYmdC5jYW5vbmljYWwueT09PXRoaXMuY2Fub25pY2FsLnk+PmV9LG51LnBy b3RvdHlwZS5jaGlsZHJlbj1mdW5jdGlvbih0KXtpZih0aGlzLm92ZXJzY2FsZWRaPj10KXJl dHVybltuZXcgbnUodGhpcy5vdmVyc2NhbGVkWisxLHRoaXMud3JhcCx0aGlzLmNhbm9uaWNh bC56LHRoaXMuY2Fub25pY2FsLngsdGhpcy5jYW5vbmljYWwueSldO3ZhciBlPXRoaXMuY2Fu b25pY2FsLnorMSxyPTIqdGhpcy5jYW5vbmljYWwueCxuPTIqdGhpcy5jYW5vbmljYWwueTty ZXR1cm5bbmV3IG51KGUsdGhpcy53cmFwLGUscixuKSxuZXcgbnUoZSx0aGlzLndyYXAsZSxy KzEsbiksbmV3IG51KGUsdGhpcy53cmFwLGUscixuKzEpLG5ldyBudShlLHRoaXMud3JhcCxl LHIrMSxuKzEpXX0sbnUucHJvdG90eXBlLmlzTGVzc1RoYW49ZnVuY3Rpb24odCl7cmV0dXJu IHRoaXMud3JhcDx0LndyYXB8fCEodGhpcy53cmFwPnQud3JhcCkmJih0aGlzLm92ZXJzY2Fs ZWRaPHQub3ZlcnNjYWxlZFp8fCEodGhpcy5vdmVyc2NhbGVkWj50Lm92ZXJzY2FsZWRaKSYm KHRoaXMuY2Fub25pY2FsLng8dC5jYW5vbmljYWwueHx8ISh0aGlzLmNhbm9uaWNhbC54PnQu Y2Fub25pY2FsLngpJiZ0aGlzLmNhbm9uaWNhbC55PHQuY2Fub25pY2FsLnkpKX0sbnUucHJv dG90eXBlLndyYXBwZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG51KHRoaXMub3ZlcnNjYWxl ZFosMCx0aGlzLmNhbm9uaWNhbC56LHRoaXMuY2Fub25pY2FsLngsdGhpcy5jYW5vbmljYWwu eSl9LG51LnByb3RvdHlwZS51bndyYXBUbz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IG51KHRo aXMub3ZlcnNjYWxlZFosdCx0aGlzLmNhbm9uaWNhbC56LHRoaXMuY2Fub25pY2FsLngsdGhp cy5jYW5vbmljYWwueSl9LG51LnByb3RvdHlwZS5vdmVyc2NhbGVGYWN0b3I9ZnVuY3Rpb24o KXtyZXR1cm4gTWF0aC5wb3coMix0aGlzLm92ZXJzY2FsZWRaLXRoaXMuY2Fub25pY2FsLnop fSxudS5wcm90b3R5cGUudG9VbndyYXBwZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHJ1KHRo aXMud3JhcCx0aGlzLmNhbm9uaWNhbCl9LG51LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlv bigpe3JldHVybiB0aGlzLm92ZXJzY2FsZWRaKyIvIit0aGlzLmNhbm9uaWNhbC54KyIvIit0 aGlzLmNhbm9uaWNhbC55fSxudS5wcm90b3R5cGUuZ2V0VGlsZVBvaW50PWZ1bmN0aW9uKHQp e3JldHVybiB0aGlzLmNhbm9uaWNhbC5nZXRUaWxlUG9pbnQobmV3IHR1KHQueC10aGlzLndy YXAsdC55KSl9LE5uKCJDYW5vbmljYWxUaWxlSUQiLGV1KSxObigiT3ZlcnNjYWxlZFRpbGVJ RCIsbnUse29taXQ6WyJwb3NNYXRyaXgiXX0pO3ZhciBhdT1mdW5jdGlvbih0LGUscil7aWYo dGhpcy51aWQ9dCxlLmhlaWdodCE9PWUud2lkdGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkRF TSB0aWxlcyBtdXN0IGJlIHNxdWFyZSIpO2lmKHImJiJtYXBib3giIT09ciYmInRlcnJhcml1 bSIhPT1yKXJldHVybiBfKCciJytyKyciIGlzIG5vdCBhIHZhbGlkIGVuY29kaW5nIHR5cGUu IFZhbGlkIHR5cGVzIGluY2x1ZGUgIm1hcGJveCIgYW5kICJ0ZXJyYXJpdW0iLicpO3RoaXMu c3RyaWRlPWUuaGVpZ2h0O3ZhciBuPXRoaXMuZGltPWUuaGVpZ2h0LTI7dGhpcy5kYXRhPW5l dyBVaW50MzJBcnJheShlLmRhdGEuYnVmZmVyKSx0aGlzLmVuY29kaW5nPXJ8fCJtYXBib3gi O2Zvcih2YXIgaT0wO2k8bjtpKyspdGhpcy5kYXRhW3RoaXMuX2lkeCgtMSxpKV09dGhpcy5k YXRhW3RoaXMuX2lkeCgwLGkpXSx0aGlzLmRhdGFbdGhpcy5faWR4KG4saSldPXRoaXMuZGF0 YVt0aGlzLl9pZHgobi0xLGkpXSx0aGlzLmRhdGFbdGhpcy5faWR4KGksLTEpXT10aGlzLmRh dGFbdGhpcy5faWR4KGksMCldLHRoaXMuZGF0YVt0aGlzLl9pZHgoaSxuKV09dGhpcy5kYXRh W3RoaXMuX2lkeChpLG4tMSldO3RoaXMuZGF0YVt0aGlzLl9pZHgoLTEsLTEpXT10aGlzLmRh dGFbdGhpcy5faWR4KDAsMCldLHRoaXMuZGF0YVt0aGlzLl9pZHgobiwtMSldPXRoaXMuZGF0 YVt0aGlzLl9pZHgobi0xLDApXSx0aGlzLmRhdGFbdGhpcy5faWR4KC0xLG4pXT10aGlzLmRh dGFbdGhpcy5faWR4KDAsbi0xKV0sdGhpcy5kYXRhW3RoaXMuX2lkeChuLG4pXT10aGlzLmRh dGFbdGhpcy5faWR4KG4tMSxuLTEpXX07YXUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0LGUp e3ZhciByPW5ldyBVaW50OEFycmF5KHRoaXMuZGF0YS5idWZmZXIpLG49NCp0aGlzLl9pZHgo dCxlKTtyZXR1cm4oInRlcnJhcml1bSI9PT10aGlzLmVuY29kaW5nP3RoaXMuX3VucGFja1Rl cnJhcml1bTp0aGlzLl91bnBhY2tNYXBib3gpKHJbbl0scltuKzFdLHJbbisyXSl9LGF1LnBy b3RvdHlwZS5nZXRVbnBhY2tWZWN0b3I9ZnVuY3Rpb24oKXtyZXR1cm4idGVycmFyaXVtIj09 PXRoaXMuZW5jb2Rpbmc/WzI1NiwxLDEvMjU2LDMyNzY4XTpbNjU1My42LDI1LjYsLjEsMWU0 XX0sYXUucHJvdG90eXBlLl9pZHg9ZnVuY3Rpb24odCxlKXtpZih0PC0xfHx0Pj10aGlzLmRp bSsxfHxlPC0xfHxlPj10aGlzLmRpbSsxKXRocm93IG5ldyBSYW5nZUVycm9yKCJvdXQgb2Yg cmFuZ2Ugc291cmNlIGNvb3JkaW5hdGVzIGZvciBERU0gZGF0YSIpO3JldHVybihlKzEpKnRo aXMuc3RyaWRlKyh0KzEpfSxhdS5wcm90b3R5cGUuX3VucGFja01hcGJveD1mdW5jdGlvbih0 LGUscil7cmV0dXJuKDI1Nip0KjI1NisyNTYqZStyKS8xMC0xZTR9LGF1LnByb3RvdHlwZS5f dW5wYWNrVGVycmFyaXVtPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gMjU2KnQrZStyLzI1Ni0z Mjc2OH0sYXUucHJvdG90eXBlLmdldFBpeGVscz1mdW5jdGlvbigpe3JldHVybiBuZXcgRW8o e3dpZHRoOnRoaXMuc3RyaWRlLGhlaWdodDp0aGlzLnN0cmlkZX0sbmV3IFVpbnQ4QXJyYXko dGhpcy5kYXRhLmJ1ZmZlcikpfSxhdS5wcm90b3R5cGUuYmFja2ZpbGxCb3JkZXI9ZnVuY3Rp b24odCxlLHIpe2lmKHRoaXMuZGltIT09dC5kaW0pdGhyb3cgbmV3IEVycm9yKCJkZW0gZGlt ZW5zaW9uIG1pc21hdGNoIik7dmFyIG49ZSp0aGlzLmRpbSxpPWUqdGhpcy5kaW0rdGhpcy5k aW0sYT1yKnRoaXMuZGltLG89cip0aGlzLmRpbSt0aGlzLmRpbTtzd2l0Y2goZSl7Y2FzZS0x Om49aS0xO2JyZWFrO2Nhc2UgMTppPW4rMX1zd2l0Y2gocil7Y2FzZS0xOmE9by0xO2JyZWFr O2Nhc2UgMTpvPWErMX1mb3IodmFyIHM9LWUqdGhpcy5kaW0sbD0tcip0aGlzLmRpbSxjPWE7 YzxvO2MrKylmb3IodmFyIHU9bjt1PGk7dSsrKXRoaXMuZGF0YVt0aGlzLl9pZHgodSxjKV09 dC5kYXRhW3RoaXMuX2lkeCh1K3MsYytsKV19LE5uKCJERU1EYXRhIixhdSk7dmFyIG91PWZ1 bmN0aW9uKHQpe3RoaXMuX3N0cmluZ1RvTnVtYmVyPXt9LHRoaXMuX251bWJlclRvU3RyaW5n PVtdO2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgcj10W2VdO3RoaXMuX3N0cmlu Z1RvTnVtYmVyW3JdPWUsdGhpcy5fbnVtYmVyVG9TdHJpbmdbZV09cn19O291LnByb3RvdHlw ZS5lbmNvZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3N0cmluZ1RvTnVtYmVyW3RdfSxv dS5wcm90b3R5cGUuZGVjb2RlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9udW1iZXJUb1N0 cmluZ1t0XX07dmFyIHN1PWZ1bmN0aW9uKHQsZSxyLG4saSl7dGhpcy50eXBlPSJGZWF0dXJl Iix0aGlzLl92ZWN0b3JUaWxlRmVhdHVyZT10LHQuX3o9ZSx0Ll94PXIsdC5feT1uLHRoaXMu cHJvcGVydGllcz10LnByb3BlcnRpZXMsdGhpcy5pZD1pfSxsdT17Z2VvbWV0cnk6e2NvbmZp Z3VyYWJsZTohMH19O2x1Lmdlb21ldHJ5LmdldD1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9 PT10aGlzLl9nZW9tZXRyeSYmKHRoaXMuX2dlb21ldHJ5PXRoaXMuX3ZlY3RvclRpbGVGZWF0 dXJlLnRvR2VvSlNPTih0aGlzLl92ZWN0b3JUaWxlRmVhdHVyZS5feCx0aGlzLl92ZWN0b3JU aWxlRmVhdHVyZS5feSx0aGlzLl92ZWN0b3JUaWxlRmVhdHVyZS5feikuZ2VvbWV0cnkpLHRo aXMuX2dlb21ldHJ5fSxsdS5nZW9tZXRyeS5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fZ2VvbWV0 cnk9dH0sc3UucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciB0PXtnZW9tZXRyeTp0 aGlzLmdlb21ldHJ5fTtmb3IodmFyIGUgaW4gdGhpcykiX2dlb21ldHJ5IiE9PWUmJiJfdmVj dG9yVGlsZUZlYXR1cmUiIT09ZSYmKHRbZV09dGhpc1tlXSk7cmV0dXJuIHR9LE9iamVjdC5k ZWZpbmVQcm9wZXJ0aWVzKHN1LnByb3RvdHlwZSxsdSk7dmFyIGN1PWZ1bmN0aW9uKCl7dGhp cy5zdGF0ZT17fSx0aGlzLnN0YXRlQ2hhbmdlcz17fSx0aGlzLmRlbGV0ZWRTdGF0ZXM9e319 O2N1LnByb3RvdHlwZS51cGRhdGVTdGF0ZT1mdW5jdGlvbih0LGUscil7dmFyIG49U3RyaW5n KGUpO2lmKHRoaXMuc3RhdGVDaGFuZ2VzW3RdPXRoaXMuc3RhdGVDaGFuZ2VzW3RdfHx7fSx0 aGlzLnN0YXRlQ2hhbmdlc1t0XVtuXT10aGlzLnN0YXRlQ2hhbmdlc1t0XVtuXXx8e30sdSh0 aGlzLnN0YXRlQ2hhbmdlc1t0XVtuXSxyKSxudWxsPT09dGhpcy5kZWxldGVkU3RhdGVzW3Rd KWZvcih2YXIgaSBpbiB0aGlzLmRlbGV0ZWRTdGF0ZXNbdF09e30sdGhpcy5zdGF0ZVt0XSlp IT09biYmKHRoaXMuZGVsZXRlZFN0YXRlc1t0XVtpXT1udWxsKTtlbHNlIGlmKHRoaXMuZGVs ZXRlZFN0YXRlc1t0XSYmbnVsbD09PXRoaXMuZGVsZXRlZFN0YXRlc1t0XVtuXSlmb3IodmFy IGEgaW4gdGhpcy5kZWxldGVkU3RhdGVzW3RdW25dPXt9LHRoaXMuc3RhdGVbdF1bbl0pclth XXx8KHRoaXMuZGVsZXRlZFN0YXRlc1t0XVtuXVthXT1udWxsKTtlbHNlIGZvcih2YXIgbyBp biByKXt0aGlzLmRlbGV0ZWRTdGF0ZXNbdF0mJnRoaXMuZGVsZXRlZFN0YXRlc1t0XVtuXSYm bnVsbD09PXRoaXMuZGVsZXRlZFN0YXRlc1t0XVtuXVtvXSYmZGVsZXRlIHRoaXMuZGVsZXRl ZFN0YXRlc1t0XVtuXVtvXX19LGN1LnByb3RvdHlwZS5yZW1vdmVGZWF0dXJlU3RhdGU9ZnVu Y3Rpb24odCxlLHIpe2lmKCEobnVsbD09PXRoaXMuZGVsZXRlZFN0YXRlc1t0XSkpe3ZhciBu PVN0cmluZyhlKTtpZih0aGlzLmRlbGV0ZWRTdGF0ZXNbdF09dGhpcy5kZWxldGVkU3RhdGVz W3RdfHx7fSxyJiZ2b2lkIDAhPT1lKW51bGwhPT10aGlzLmRlbGV0ZWRTdGF0ZXNbdF1bbl0m Jih0aGlzLmRlbGV0ZWRTdGF0ZXNbdF1bbl09dGhpcy5kZWxldGVkU3RhdGVzW3RdW25dfHx7 fSx0aGlzLmRlbGV0ZWRTdGF0ZXNbdF1bbl1bcl09bnVsbCk7ZWxzZSBpZih2b2lkIDAhPT1l KXtpZih0aGlzLnN0YXRlQ2hhbmdlc1t0XSYmdGhpcy5zdGF0ZUNoYW5nZXNbdF1bbl0pZm9y KHIgaW4gdGhpcy5kZWxldGVkU3RhdGVzW3RdW25dPXt9LHRoaXMuc3RhdGVDaGFuZ2VzW3Rd W25dKXRoaXMuZGVsZXRlZFN0YXRlc1t0XVtuXVtyXT1udWxsO2Vsc2UgdGhpcy5kZWxldGVk U3RhdGVzW3RdW25dPW51bGx9ZWxzZSB0aGlzLmRlbGV0ZWRTdGF0ZXNbdF09bnVsbH19LGN1 LnByb3RvdHlwZS5nZXRTdGF0ZT1mdW5jdGlvbih0LGUpe3ZhciByPVN0cmluZyhlKSxuPXRo aXMuc3RhdGVbdF18fHt9LGk9dGhpcy5zdGF0ZUNoYW5nZXNbdF18fHt9LGE9dSh7fSxuW3Jd LGlbcl0pO2lmKG51bGw9PT10aGlzLmRlbGV0ZWRTdGF0ZXNbdF0pcmV0dXJue307aWYodGhp cy5kZWxldGVkU3RhdGVzW3RdKXt2YXIgbz10aGlzLmRlbGV0ZWRTdGF0ZXNbdF1bZV07aWYo bnVsbD09PW8pcmV0dXJue307Zm9yKHZhciBzIGluIG8pZGVsZXRlIGFbc119cmV0dXJuIGF9 LGN1LnByb3RvdHlwZS5pbml0aWFsaXplVGlsZVN0YXRlPWZ1bmN0aW9uKHQsZSl7dC5zZXRG ZWF0dXJlU3RhdGUodGhpcy5zdGF0ZSxlKX0sY3UucHJvdG90eXBlLmNvYWxlc2NlQ2hhbmdl cz1mdW5jdGlvbih0LGUpe3ZhciByPXt9O2Zvcih2YXIgbiBpbiB0aGlzLnN0YXRlQ2hhbmdl cyl7dGhpcy5zdGF0ZVtuXT10aGlzLnN0YXRlW25dfHx7fTt2YXIgaT17fTtmb3IodmFyIGEg aW4gdGhpcy5zdGF0ZUNoYW5nZXNbbl0pdGhpcy5zdGF0ZVtuXVthXXx8KHRoaXMuc3RhdGVb bl1bYV09e30pLHUodGhpcy5zdGF0ZVtuXVthXSx0aGlzLnN0YXRlQ2hhbmdlc1tuXVthXSks aVthXT10aGlzLnN0YXRlW25dW2FdO3Jbbl09aX1mb3IodmFyIG8gaW4gdGhpcy5kZWxldGVk U3RhdGVzKXt0aGlzLnN0YXRlW29dPXRoaXMuc3RhdGVbb118fHt9O3ZhciBzPXt9O2lmKG51 bGw9PT10aGlzLmRlbGV0ZWRTdGF0ZXNbb10pZm9yKHZhciBsIGluIHRoaXMuc3RhdGVbb10p c1tsXT17fSx0aGlzLnN0YXRlW29dW2xdPXt9O2Vsc2UgZm9yKHZhciBjIGluIHRoaXMuZGVs ZXRlZFN0YXRlc1tvXSl7aWYobnVsbD09PXRoaXMuZGVsZXRlZFN0YXRlc1tvXVtjXSl0aGlz LnN0YXRlW29dW2NdPXt9O2Vsc2UgZm9yKHZhciBmPTAsaD1PYmplY3Qua2V5cyh0aGlzLmRl bGV0ZWRTdGF0ZXNbb11bY10pO2Y8aC5sZW5ndGg7Zis9MSl7dmFyIHA9aFtmXTtkZWxldGUg dGhpcy5zdGF0ZVtvXVtjXVtwXX1zW2NdPXRoaXMuc3RhdGVbb11bY119cltvXT1yW29dfHx7 fSx1KHJbb10scyl9aWYodGhpcy5zdGF0ZUNoYW5nZXM9e30sdGhpcy5kZWxldGVkU3RhdGVz PXt9LDAhPT1PYmplY3Qua2V5cyhyKS5sZW5ndGgpZm9yKHZhciBkIGluIHQpe3RbZF0uc2V0 RmVhdHVyZVN0YXRlKHIsZSl9fTt2YXIgdXU9ZnVuY3Rpb24odCxlKXt0aGlzLnRpbGVJRD10 LHRoaXMueD10LmNhbm9uaWNhbC54LHRoaXMueT10LmNhbm9uaWNhbC55LHRoaXMuej10LmNh bm9uaWNhbC56LHRoaXMuZ3JpZD1uZXcgem4oODE5MiwxNiwwKSx0aGlzLmdyaWQzRD1uZXcg em4oODE5MiwxNiwwKSx0aGlzLmZlYXR1cmVJbmRleEFycmF5PW5ldyBmYSx0aGlzLnByb21v dGVJZD1lfTtmdW5jdGlvbiBmdSh0LGUscixuLGkpe3JldHVybiB2KHQsKGZ1bmN0aW9uKHQs YSl7dmFyIG89ZSBpbnN0YW5jZW9mIF9pP2UuZ2V0KGEpOm51bGw7cmV0dXJuIG8mJm8uZXZh bHVhdGU/by5ldmFsdWF0ZShyLG4saSk6b30pKX1mdW5jdGlvbiBodSh0KXtmb3IodmFyIGU9 MS8wLHI9MS8wLG49LTEvMCxpPS0xLzAsYT0wLG89dDthPG8ubGVuZ3RoO2ErPTEpe3ZhciBz PW9bYV07ZT1NYXRoLm1pbihlLHMueCkscj1NYXRoLm1pbihyLHMueSksbj1NYXRoLm1heChu LHMueCksaT1NYXRoLm1heChpLHMueSl9cmV0dXJue21pblg6ZSxtaW5ZOnIsbWF4WDpuLG1h eFk6aX19ZnVuY3Rpb24gcHUodCxlKXtyZXR1cm4gZS10fXV1LnByb3RvdHlwZS5pbnNlcnQ9 ZnVuY3Rpb24odCxlLHIsbixpLGEpe3ZhciBvPXRoaXMuZmVhdHVyZUluZGV4QXJyYXkubGVu Z3RoO3RoaXMuZmVhdHVyZUluZGV4QXJyYXkuZW1wbGFjZUJhY2socixuLGkpO2Zvcih2YXIg cz1hP3RoaXMuZ3JpZDNEOnRoaXMuZ3JpZCxsPTA7bDxlLmxlbmd0aDtsKyspe2Zvcih2YXIg Yz1lW2xdLHU9WzEvMCwxLzAsLTEvMCwtMS8wXSxmPTA7ZjxjLmxlbmd0aDtmKyspe3ZhciBo PWNbZl07dVswXT1NYXRoLm1pbih1WzBdLGgueCksdVsxXT1NYXRoLm1pbih1WzFdLGgueSks dVsyXT1NYXRoLm1heCh1WzJdLGgueCksdVszXT1NYXRoLm1heCh1WzNdLGgueSl9dVswXTw4 MTkyJiZ1WzFdPDgxOTImJnVbMl0+PTAmJnVbM10+PTAmJnMuaW5zZXJ0KG8sdVswXSx1WzFd LHVbMl0sdVszXSl9fSx1dS5wcm90b3R5cGUubG9hZFZUTGF5ZXJzPWZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMudnRMYXllcnN8fCh0aGlzLnZ0TGF5ZXJzPW5ldyBMcy5WZWN0b3JUaWxlKG5l dyBhbCh0aGlzLnJhd1RpbGVEYXRhKSkubGF5ZXJzLHRoaXMuc291cmNlTGF5ZXJDb2Rlcj1u ZXcgb3UodGhpcy52dExheWVycz9PYmplY3Qua2V5cyh0aGlzLnZ0TGF5ZXJzKS5zb3J0KCk6 WyJfZ2VvanNvblRpbGVMYXllciJdKSksdGhpcy52dExheWVyc30sdXUucHJvdG90eXBlLnF1 ZXJ5PWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXRoaXM7dGhpcy5sb2FkVlRMYXllcnMoKTtm b3IodmFyIG89dC5wYXJhbXN8fHt9LHM9ODE5Mi90LnRpbGVTaXplL3Quc2NhbGUsbD1zbihv LmZpbHRlciksYz10LnF1ZXJ5R2VvbWV0cnksdT10LnF1ZXJ5UGFkZGluZypzLGY9aHUoYyks aD10aGlzLmdyaWQucXVlcnkoZi5taW5YLXUsZi5taW5ZLXUsZi5tYXhYK3UsZi5tYXhZK3Up LHA9aHUodC5jYW1lcmFRdWVyeUdlb21ldHJ5KSxkPXRoaXMuZ3JpZDNELnF1ZXJ5KHAubWlu WC11LHAubWluWS11LHAubWF4WCt1LHAubWF4WSt1LChmdW5jdGlvbihlLHIsbixhKXtyZXR1 cm4gZnVuY3Rpb24odCxlLHIsbixhKXtmb3IodmFyIG89MCxzPXQ7bzxzLmxlbmd0aDtvKz0x KXt2YXIgbD1zW29dO2lmKGU8PWwueCYmcjw9bC55JiZuPj1sLngmJmE+PWwueSlyZXR1cm4h MH12YXIgYz1bbmV3IGkoZSxyKSxuZXcgaShlLGEpLG5ldyBpKG4sYSksbmV3IGkobixyKV07 aWYodC5sZW5ndGg+Milmb3IodmFyIHU9MCxmPWM7dTxmLmxlbmd0aDt1Kz0xKXtpZihpbyh0 LGZbdV0pKXJldHVybiEwfWZvcih2YXIgaD0wO2g8dC5sZW5ndGgtMTtoKyspe2lmKGFvKHRb aF0sdFtoKzFdLGMpKXJldHVybiEwfXJldHVybiExfSh0LmNhbWVyYVF1ZXJ5R2VvbWV0cnks ZS11LHItdSxuK3UsYSt1KX0pKSxtPTAsZz1kO208Zy5sZW5ndGg7bSs9MSl7dmFyIHY9Z1tt XTtoLnB1c2godil9aC5zb3J0KHB1KTtmb3IodmFyIHkseD17fSxiPWZ1bmN0aW9uKGkpe3Zh ciB1PWhbaV07aWYodSE9PXkpe3k9dTt2YXIgZj1hLmZlYXR1cmVJbmRleEFycmF5LmdldCh1 KSxwPW51bGw7YS5sb2FkTWF0Y2hpbmdGZWF0dXJlKHgsZi5idWNrZXRJbmRleCxmLnNvdXJj ZUxheWVySW5kZXgsZi5mZWF0dXJlSW5kZXgsbCxvLmxheWVycyxvLmF2YWlsYWJsZUltYWdl cyxlLHIsbiwoZnVuY3Rpb24oZSxyLG4pe3JldHVybiBwfHwocD1ZYShlKSksci5xdWVyeUlu dGVyc2VjdHNGZWF0dXJlKGMsZSxuLHAsYS56LHQudHJhbnNmb3JtLHMsdC5waXhlbFBvc01h dHJpeCl9KSl9fSxfPTA7XzxoLmxlbmd0aDtfKyspYihfKTtyZXR1cm4geH0sdXUucHJvdG90 eXBlLmxvYWRNYXRjaGluZ0ZlYXR1cmU9ZnVuY3Rpb24odCxlLHIsbixpLGEsbyxzLGwsYyx1 KXt2YXIgZj10aGlzLmJ1Y2tldExheWVySURzW2VdO2lmKCFhfHxmdW5jdGlvbih0LGUpe2Zv cih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKWlmKGUuaW5kZXhPZih0W3JdKT49MClyZXR1cm4h MDtyZXR1cm4hMX0oYSxmKSl7dmFyIGg9dGhpcy5zb3VyY2VMYXllckNvZGVyLmRlY29kZShy KSxwPXRoaXMudnRMYXllcnNbaF0uZmVhdHVyZShuKTtpZihpLmZpbHRlcihuZXcgcGkodGhp cy50aWxlSUQub3ZlcnNjYWxlZFopLHApKWZvcih2YXIgZD10aGlzLmdldElkKHAsaCksbT0w O208Zi5sZW5ndGg7bSsrKXt2YXIgZz1mW21dO2lmKCEoYSYmYS5pbmRleE9mKGcpPDApKXt2 YXIgdj1zW2ddO2lmKHYpe3ZhciB5PXt9O3ZvaWQgMCE9PWQmJmMmJih5PWMuZ2V0U3RhdGUo di5zb3VyY2VMYXllcnx8Il9nZW9qc29uVGlsZUxheWVyIixkKSk7dmFyIHg9bFtnXTt4LnBh aW50PWZ1KHgucGFpbnQsdi5wYWludCxwLHksbykseC5sYXlvdXQ9ZnUoeC5sYXlvdXQsdi5s YXlvdXQscCx5LG8pO3ZhciBiPSF1fHx1KHAsdix5KTtpZihiKXt2YXIgXz1uZXcgc3UocCx0 aGlzLnosdGhpcy54LHRoaXMueSxkKTtfLmxheWVyPXg7dmFyIHc9dFtnXTt2b2lkIDA9PT13 JiYodz10W2ddPVtdKSx3LnB1c2goe2ZlYXR1cmVJbmRleDpuLGZlYXR1cmU6XyxpbnRlcnNl Y3Rpb25aOmJ9KX19fX19fSx1dS5wcm90b3R5cGUubG9va3VwU3ltYm9sRmVhdHVyZXM9ZnVu Y3Rpb24odCxlLHIsbixpLGEsbyxzKXt2YXIgbD17fTt0aGlzLmxvYWRWVExheWVycygpO2Zv cih2YXIgYz1zbihpKSx1PTAsZj10O3U8Zi5sZW5ndGg7dSs9MSl7dmFyIGg9Zlt1XTt0aGlz LmxvYWRNYXRjaGluZ0ZlYXR1cmUobCxyLG4saCxjLGEsbyxzLGUpfXJldHVybiBsfSx1dS5w cm90b3R5cGUuaGFzTGF5ZXI9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj10aGlzLmJ1Y2tl dExheWVySURzO2U8ci5sZW5ndGg7ZSs9MSlmb3IodmFyIG49MCxpPXJbZV07bjxpLmxlbmd0 aDtuKz0xKXtpZih0PT09aVtuXSlyZXR1cm4hMH1yZXR1cm4hMX0sdXUucHJvdG90eXBlLmdl dElkPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5pZDtpZih0aGlzLnByb21vdGVJZCl7dmFyIG49 InN0cmluZyI9PXR5cGVvZiB0aGlzLnByb21vdGVJZD90aGlzLnByb21vdGVJZDp0aGlzLnBy b21vdGVJZFtlXTsiYm9vbGVhbiI9PXR5cGVvZihyPXQucHJvcGVydGllc1tuXSkmJihyPU51 bWJlcihyKSl9cmV0dXJuIHJ9LE5uKCJGZWF0dXJlSW5kZXgiLHV1LHtvbWl0OlsicmF3VGls ZURhdGEiLCJzb3VyY2VMYXllckNvZGVyIl19KTt2YXIgZHU9ZnVuY3Rpb24odCxlKXt0aGlz LnRpbGVJRD10LHRoaXMudWlkPWgoKSx0aGlzLnVzZXM9MCx0aGlzLnRpbGVTaXplPWUsdGhp cy5idWNrZXRzPXt9LHRoaXMuZXhwaXJhdGlvblRpbWU9bnVsbCx0aGlzLnF1ZXJ5UGFkZGlu Zz0wLHRoaXMuaGFzU3ltYm9sQnVja2V0cz0hMSx0aGlzLmhhc1JUTFRleHQ9ITEsdGhpcy5k ZXBlbmRlbmNpZXM9e30sdGhpcy5leHBpcmVkUmVxdWVzdENvdW50PTAsdGhpcy5zdGF0ZT0i bG9hZGluZyJ9O2R1LnByb3RvdHlwZS5yZWdpc3RlckZhZGVEdXJhdGlvbj1mdW5jdGlvbih0 KXt2YXIgZT10K3RoaXMudGltZUFkZGVkO2U8Ui5ub3coKXx8dGhpcy5mYWRlRW5kVGltZSYm ZTx0aGlzLmZhZGVFbmRUaW1lfHwodGhpcy5mYWRlRW5kVGltZT1lKX0sZHUucHJvdG90eXBl Lndhc1JlcXVlc3RlZD1mdW5jdGlvbigpe3JldHVybiJlcnJvcmVkIj09PXRoaXMuc3RhdGV8 fCJsb2FkZWQiPT09dGhpcy5zdGF0ZXx8InJlbG9hZGluZyI9PT10aGlzLnN0YXRlfSxkdS5w cm90b3R5cGUubG9hZFZlY3RvckRhdGE9ZnVuY3Rpb24odCxlLHIpe2lmKHRoaXMuaGFzRGF0 YSgpJiZ0aGlzLnVubG9hZFZlY3RvckRhdGEoKSx0aGlzLnN0YXRlPSJsb2FkZWQiLHQpe2Zv cih2YXIgbiBpbiB0LmZlYXR1cmVJbmRleCYmKHRoaXMubGF0ZXN0RmVhdHVyZUluZGV4PXQu ZmVhdHVyZUluZGV4LHQucmF3VGlsZURhdGE/KHRoaXMubGF0ZXN0UmF3VGlsZURhdGE9dC5y YXdUaWxlRGF0YSx0aGlzLmxhdGVzdEZlYXR1cmVJbmRleC5yYXdUaWxlRGF0YT10LnJhd1Rp bGVEYXRhKTp0aGlzLmxhdGVzdFJhd1RpbGVEYXRhJiYodGhpcy5sYXRlc3RGZWF0dXJlSW5k ZXgucmF3VGlsZURhdGE9dGhpcy5sYXRlc3RSYXdUaWxlRGF0YSkpLHRoaXMuY29sbGlzaW9u Qm94QXJyYXk9dC5jb2xsaXNpb25Cb3hBcnJheSx0aGlzLmJ1Y2tldHM9ZnVuY3Rpb24odCxl KXt2YXIgcj17fTtpZighZSlyZXR1cm4gcjtmb3IodmFyIG49ZnVuY3Rpb24oKXt2YXIgdD1h W2ldLG49dC5sYXllcklkcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmdldExheWVyKHQp fSkpLmZpbHRlcihCb29sZWFuKTtpZigwIT09bi5sZW5ndGgpe3QubGF5ZXJzPW4sdC5zdGF0 ZURlcGVuZGVudExheWVySWRzJiYodC5zdGF0ZURlcGVuZGVudExheWVycz10LnN0YXRlRGVw ZW5kZW50TGF5ZXJJZHMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbi5maWx0ZXIoKGZ1bmN0 aW9uKGUpe3JldHVybiBlLmlkPT09dH0pKVswXX0pKSk7Zm9yKHZhciBvPTAscz1uO288cy5s ZW5ndGg7bys9MSl7dmFyIGw9c1tvXTtyW2wuaWRdPXR9fX0saT0wLGE9dDtpPGEubGVuZ3Ro O2krPTEpbigpO3JldHVybiByfSh0LmJ1Y2tldHMsZS5zdHlsZSksdGhpcy5oYXNTeW1ib2xC dWNrZXRzPSExLHRoaXMuYnVja2V0cyl7dmFyIGk9dGhpcy5idWNrZXRzW25dO2lmKGkgaW5z dGFuY2VvZiBNYyl7aWYodGhpcy5oYXNTeW1ib2xCdWNrZXRzPSEwLCFyKWJyZWFrO2kuanVz dFJlbG9hZGVkPSEwfX1pZih0aGlzLmhhc1JUTFRleHQ9ITEsdGhpcy5oYXNTeW1ib2xCdWNr ZXRzKWZvcih2YXIgYSBpbiB0aGlzLmJ1Y2tldHMpe3ZhciBvPXRoaXMuYnVja2V0c1thXTtp ZihvIGluc3RhbmNlb2YgTWMmJm8uaGFzUlRMVGV4dCl7dGhpcy5oYXNSVExUZXh0PSEwLGhp LmlzTG9hZGluZygpfHxoaS5pc0xvYWRlZCgpfHwiZGVmZXJyZWQiIT09dWkoKXx8ZmkoKTti cmVha319Zm9yKHZhciBzIGluIHRoaXMucXVlcnlQYWRkaW5nPTAsdGhpcy5idWNrZXRzKXt2 YXIgbD10aGlzLmJ1Y2tldHNbc107dGhpcy5xdWVyeVBhZGRpbmc9TWF0aC5tYXgodGhpcy5x dWVyeVBhZGRpbmcsZS5zdHlsZS5nZXRMYXllcihzKS5xdWVyeVJhZGl1cyhsKSl9dC5pbWFn ZUF0bGFzJiYodGhpcy5pbWFnZUF0bGFzPXQuaW1hZ2VBdGxhcyksdC5nbHlwaEF0bGFzSW1h Z2UmJih0aGlzLmdseXBoQXRsYXNJbWFnZT10LmdseXBoQXRsYXNJbWFnZSl9ZWxzZSB0aGlz LmNvbGxpc2lvbkJveEFycmF5PW5ldyBuYX0sZHUucHJvdG90eXBlLnVubG9hZFZlY3RvckRh dGE9ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5idWNrZXRzKXRoaXMuYnVja2V0c1t0 XS5kZXN0cm95KCk7dGhpcy5idWNrZXRzPXt9LHRoaXMuaW1hZ2VBdGxhc1RleHR1cmUmJnRo aXMuaW1hZ2VBdGxhc1RleHR1cmUuZGVzdHJveSgpLHRoaXMuaW1hZ2VBdGxhcyYmKHRoaXMu aW1hZ2VBdGxhcz1udWxsKSx0aGlzLmdseXBoQXRsYXNUZXh0dXJlJiZ0aGlzLmdseXBoQXRs YXNUZXh0dXJlLmRlc3Ryb3koKSx0aGlzLmxhdGVzdEZlYXR1cmVJbmRleD1udWxsLHRoaXMu c3RhdGU9InVubG9hZGVkIn0sZHUucHJvdG90eXBlLmdldEJ1Y2tldD1mdW5jdGlvbih0KXty ZXR1cm4gdGhpcy5idWNrZXRzW3QuaWRdfSxkdS5wcm90b3R5cGUudXBsb2FkPWZ1bmN0aW9u KHQpe2Zvcih2YXIgZSBpbiB0aGlzLmJ1Y2tldHMpe3ZhciByPXRoaXMuYnVja2V0c1tlXTty LnVwbG9hZFBlbmRpbmcoKSYmci51cGxvYWQodCl9dmFyIG49dC5nbDt0aGlzLmltYWdlQXRs YXMmJiF0aGlzLmltYWdlQXRsYXMudXBsb2FkZWQmJih0aGlzLmltYWdlQXRsYXNUZXh0dXJl PW5ldyBWYyh0LHRoaXMuaW1hZ2VBdGxhcy5pbWFnZSxuLlJHQkEpLHRoaXMuaW1hZ2VBdGxh cy51cGxvYWRlZD0hMCksdGhpcy5nbHlwaEF0bGFzSW1hZ2UmJih0aGlzLmdseXBoQXRsYXNU ZXh0dXJlPW5ldyBWYyh0LHRoaXMuZ2x5cGhBdGxhc0ltYWdlLG4uQUxQSEEpLHRoaXMuZ2x5 cGhBdGxhc0ltYWdlPW51bGwpfSxkdS5wcm90b3R5cGUucHJlcGFyZT1mdW5jdGlvbih0KXt0 aGlzLmltYWdlQXRsYXMmJnRoaXMuaW1hZ2VBdGxhcy5wYXRjaFVwZGF0ZWRJbWFnZXModCx0 aGlzLmltYWdlQXRsYXNUZXh0dXJlKX0sZHUucHJvdG90eXBlLnF1ZXJ5UmVuZGVyZWRGZWF0 dXJlcz1mdW5jdGlvbih0LGUscixuLGksYSxvLHMsbCxjKXtyZXR1cm4gdGhpcy5sYXRlc3RG ZWF0dXJlSW5kZXgmJnRoaXMubGF0ZXN0RmVhdHVyZUluZGV4LnJhd1RpbGVEYXRhP3RoaXMu bGF0ZXN0RmVhdHVyZUluZGV4LnF1ZXJ5KHtxdWVyeUdlb21ldHJ5Om4sY2FtZXJhUXVlcnlH ZW9tZXRyeTppLHNjYWxlOmEsdGlsZVNpemU6dGhpcy50aWxlU2l6ZSxwaXhlbFBvc01hdHJp eDpjLHRyYW5zZm9ybTpzLHBhcmFtczpvLHF1ZXJ5UGFkZGluZzp0aGlzLnF1ZXJ5UGFkZGlu ZypsfSx0LGUscik6e319LGR1LnByb3RvdHlwZS5xdWVyeVNvdXJjZUZlYXR1cmVzPWZ1bmN0 aW9uKHQsZSl7dmFyIHI9dGhpcy5sYXRlc3RGZWF0dXJlSW5kZXg7aWYociYmci5yYXdUaWxl RGF0YSl7dmFyIG49ci5sb2FkVlRMYXllcnMoKSxpPWU/ZS5zb3VyY2VMYXllcjoiIixhPW4u X2dlb2pzb25UaWxlTGF5ZXJ8fG5baV07aWYoYSlmb3IodmFyIG89c24oZSYmZS5maWx0ZXIp LHM9dGhpcy50aWxlSUQuY2Fub25pY2FsLGw9cy56LGM9cy54LHU9cy55LGY9e3o6bCx4OmMs eTp1fSxoPTA7aDxhLmxlbmd0aDtoKyspe3ZhciBwPWEuZmVhdHVyZShoKTtpZihvLmZpbHRl cihuZXcgcGkodGhpcy50aWxlSUQub3ZlcnNjYWxlZFopLHApKXt2YXIgZD1yLmdldElkKHAs aSksbT1uZXcgc3UocCxsLGMsdSxkKTttLnRpbGU9Zix0LnB1c2gobSl9fX19LGR1LnByb3Rv dHlwZS5oYXNEYXRhPWZ1bmN0aW9uKCl7cmV0dXJuImxvYWRlZCI9PT10aGlzLnN0YXRlfHwi cmVsb2FkaW5nIj09PXRoaXMuc3RhdGV8fCJleHBpcmVkIj09PXRoaXMuc3RhdGV9LGR1LnBy b3RvdHlwZS5wYXR0ZXJuc0xvYWRlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltYWdlQXRs YXMmJiEhT2JqZWN0LmtleXModGhpcy5pbWFnZUF0bGFzLnBhdHRlcm5Qb3NpdGlvbnMpLmxl bmd0aH0sZHUucHJvdG90eXBlLnNldEV4cGlyeURhdGE9ZnVuY3Rpb24odCl7dmFyIGU9dGhp cy5leHBpcmF0aW9uVGltZTtpZih0LmNhY2hlQ29udHJvbCl7dmFyIHI9QSh0LmNhY2hlQ29u dHJvbCk7clsibWF4LWFnZSJdJiYodGhpcy5leHBpcmF0aW9uVGltZT1EYXRlLm5vdygpKzFl MypyWyJtYXgtYWdlIl0pfWVsc2UgdC5leHBpcmVzJiYodGhpcy5leHBpcmF0aW9uVGltZT1u ZXcgRGF0ZSh0LmV4cGlyZXMpLmdldFRpbWUoKSk7aWYodGhpcy5leHBpcmF0aW9uVGltZSl7 dmFyIG49RGF0ZS5ub3coKSxpPSExO2lmKHRoaXMuZXhwaXJhdGlvblRpbWU+bilpPSExO2Vs c2UgaWYoZSlpZih0aGlzLmV4cGlyYXRpb25UaW1lPGUpaT0hMDtlbHNle3ZhciBhPXRoaXMu ZXhwaXJhdGlvblRpbWUtZTthP3RoaXMuZXhwaXJhdGlvblRpbWU9bitNYXRoLm1heChhLDNl NCk6aT0hMH1lbHNlIGk9ITA7aT8odGhpcy5leHBpcmVkUmVxdWVzdENvdW50KyssdGhpcy5z dGF0ZT0iZXhwaXJlZCIpOnRoaXMuZXhwaXJlZFJlcXVlc3RDb3VudD0wfX0sZHUucHJvdG90 eXBlLmdldEV4cGlyeVRpbWVvdXQ9ZnVuY3Rpb24oKXtpZih0aGlzLmV4cGlyYXRpb25UaW1l KXJldHVybiB0aGlzLmV4cGlyZWRSZXF1ZXN0Q291bnQ/MWUzKigxPDxNYXRoLm1pbih0aGlz LmV4cGlyZWRSZXF1ZXN0Q291bnQtMSwzMSkpOk1hdGgubWluKHRoaXMuZXhwaXJhdGlvblRp bWUtKG5ldyBEYXRlKS5nZXRUaW1lKCksTWF0aC5wb3coMiwzMSktMSl9LGR1LnByb3RvdHlw ZS5zZXRGZWF0dXJlU3RhdGU9ZnVuY3Rpb24odCxlKXtpZih0aGlzLmxhdGVzdEZlYXR1cmVJ bmRleCYmdGhpcy5sYXRlc3RGZWF0dXJlSW5kZXgucmF3VGlsZURhdGEmJjAhPT1PYmplY3Qu a2V5cyh0KS5sZW5ndGgpe3ZhciByPXRoaXMubGF0ZXN0RmVhdHVyZUluZGV4LmxvYWRWVExh eWVycygpO2Zvcih2YXIgbiBpbiB0aGlzLmJ1Y2tldHMpaWYoZS5zdHlsZS5oYXNMYXllcihu KSl7dmFyIGk9dGhpcy5idWNrZXRzW25dLGE9aS5sYXllcnNbMF0uc291cmNlTGF5ZXJ8fCJf Z2VvanNvblRpbGVMYXllciIsbz1yW2FdLHM9dFthXTtpZihvJiZzJiYwIT09T2JqZWN0Lmtl eXMocykubGVuZ3RoKXtpLnVwZGF0ZShzLG8sdGhpcy5pbWFnZUF0bGFzJiZ0aGlzLmltYWdl QXRsYXMucGF0dGVyblBvc2l0aW9uc3x8e30pO3ZhciBsPWUmJmUuc3R5bGUmJmUuc3R5bGUu Z2V0TGF5ZXIobik7bCYmKHRoaXMucXVlcnlQYWRkaW5nPU1hdGgubWF4KHRoaXMucXVlcnlQ YWRkaW5nLGwucXVlcnlSYWRpdXMoaSkpKX19fX0sZHUucHJvdG90eXBlLmhvbGRpbmdGb3JG YWRlPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuc3ltYm9sRmFkZUhvbGRVbnRp bH0sZHUucHJvdG90eXBlLnN5bWJvbEZhZGVGaW5pc2hlZD1mdW5jdGlvbigpe3JldHVybiF0 aGlzLnN5bWJvbEZhZGVIb2xkVW50aWx8fHRoaXMuc3ltYm9sRmFkZUhvbGRVbnRpbDxSLm5v dygpfSxkdS5wcm90b3R5cGUuY2xlYXJGYWRlSG9sZD1mdW5jdGlvbigpe3RoaXMuc3ltYm9s RmFkZUhvbGRVbnRpbD12b2lkIDB9LGR1LnByb3RvdHlwZS5zZXRIb2xkRHVyYXRpb249ZnVu Y3Rpb24odCl7dGhpcy5zeW1ib2xGYWRlSG9sZFVudGlsPVIubm93KCkrdH0sZHUucHJvdG90 eXBlLnNldERlcGVuZGVuY2llcz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj17fSxuPTAsaT1l O248aS5sZW5ndGg7bis9MSl7cltpW25dXT0hMH10aGlzLmRlcGVuZGVuY2llc1t0XT1yfSxk dS5wcm90b3R5cGUuaGFzRGVwZW5kZW5jeT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wLG49 dDtyPG4ubGVuZ3RoO3IrPTEpe3ZhciBpPW5bcl0sYT10aGlzLmRlcGVuZGVuY2llc1tpXTtp ZihhKWZvcih2YXIgbz0wLHM9ZTtvPHMubGVuZ3RoO28rPTEpe2lmKGFbc1tvXV0pcmV0dXJu ITB9fXJldHVybiExfTt2YXIgbXU9c2VsZi5wZXJmb3JtYW5jZSxndT1mdW5jdGlvbih0KXt0 aGlzLl9tYXJrcz17c3RhcnQ6W3QudXJsLCJzdGFydCJdLmpvaW4oIiMiKSxlbmQ6W3QudXJs LCJlbmQiXS5qb2luKCIjIiksbWVhc3VyZTp0LnVybC50b1N0cmluZygpfSxtdS5tYXJrKHRo aXMuX21hcmtzLnN0YXJ0KX07Z3UucHJvdG90eXBlLmZpbmlzaD1mdW5jdGlvbigpe211Lm1h cmsodGhpcy5fbWFya3MuZW5kKTt2YXIgdD1tdS5nZXRFbnRyaWVzQnlOYW1lKHRoaXMuX21h cmtzLm1lYXN1cmUpO3JldHVybiAwPT09dC5sZW5ndGgmJihtdS5tZWFzdXJlKHRoaXMuX21h cmtzLm1lYXN1cmUsdGhpcy5fbWFya3Muc3RhcnQsdGhpcy5fbWFya3MuZW5kKSx0PW11Lmdl dEVudHJpZXNCeU5hbWUodGhpcy5fbWFya3MubWVhc3VyZSksbXUuY2xlYXJNYXJrcyh0aGlz Ll9tYXJrcy5zdGFydCksbXUuY2xlYXJNYXJrcyh0aGlzLl9tYXJrcy5lbmQpLG11LmNsZWFy TWVhc3VyZXModGhpcy5fbWFya3MubWVhc3VyZSkpLHR9LHQuQWN0b3I9cWMsdC5BbHBoYUlt YWdlPVNvLHQuQ2Fub25pY2FsVGlsZUlEPWV1LHQuQ29sbGlzaW9uQm94QXJyYXk9bmEsdC5D b2xvcj10ZSx0LkRFTURhdGE9YXUsdC5EYXRhQ29uc3RhbnRQcm9wZXJ0eT13aSx0LkRpY3Rp b25hcnlDb2Rlcj1vdSx0LkVYVEVOVD04MTkyLHQuRXJyb3JFdmVudD1TdCx0LkV2YWx1YXRp b25QYXJhbWV0ZXJzPXBpLHQuRXZlbnQ9TXQsdC5FdmVudGVkPUV0LHQuRmVhdHVyZUluZGV4 PXV1LHQuRmlsbEJ1Y2tldD1ncyx0LkZpbGxFeHRydXNpb25CdWNrZXQ9T3MsdC5JbWFnZUF0 bGFzPUxsLHQuSW1hZ2VQb3NpdGlvbj1TbCx0LkxpbmVCdWNrZXQ9cXMsdC5MbmdMYXQ9V2Ms dC5MbmdMYXRCb3VuZHM9WWMsdC5NZXJjYXRvckNvb3JkaW5hdGU9dHUsdC5PTkVfRU09MjQs dC5PdmVyc2NhbGVkVGlsZUlEPW51LHQuUG9pbnQ9aSx0LlBvaW50JDE9aSx0LlByb3BlcnRp ZXM9U2ksdC5Qcm90b2J1Zj1hbCx0LlJHQkFJbWFnZT1Fbyx0LlJlcXVlc3RNYW5hZ2VyPUgs dC5SZXF1ZXN0UGVyZm9ybWFuY2U9Z3UsdC5SZXNvdXJjZVR5cGU9ZHQsdC5TZWdtZW50VmVj dG9yPXBhLHQuU291cmNlRmVhdHVyZVN0YXRlPWN1LHQuU3RydWN0QXJyYXlMYXlvdXQxdWky PSRpLHQuU3RydWN0QXJyYXlMYXlvdXQyZjFmMmkxNj1xaSx0LlN0cnVjdEFycmF5TGF5b3V0 Mmk0PXppLHQuU3RydWN0QXJyYXlMYXlvdXQzdWk2PVlpLHQuU3RydWN0QXJyYXlMYXlvdXQ0 aTg9RGksdC5TeW1ib2xCdWNrZXQ9TWMsdC5UZXh0dXJlPVZjLHQuVGlsZT1kdSx0LlRyYW5z aXRpb25hYmxlPWdpLHQuVW5pZm9ybTFmPVNhLHQuVW5pZm9ybTFpPU1hLHQuVW5pZm9ybTJm PUVhLHQuVW5pZm9ybTNmPUxhLHQuVW5pZm9ybTRmPUNhLHQuVW5pZm9ybUNvbG9yPVBhLHQu VW5pZm9ybU1hdHJpeDRmPU9hLHQuVW53cmFwcGVkVGlsZUlEPXJ1LHQuVmFsaWRhdGlvbkVy cm9yPUN0LHQuV3JpdGluZ01vZGU9Q2wsdC5ab29tSGlzdG9yeT1Hbix0LmFkZD1mdW5jdGlv bih0LGUscil7cmV0dXJuIHRbMF09ZVswXStyWzBdLHRbMV09ZVsxXStyWzFdLHRbMl09ZVsy XStyWzJdLHR9LHQuYWRkRHluYW1pY0F0dHJpYnV0ZXM9d2MsdC5hc3luY0FsbD1mdW5jdGlv bih0LGUscil7aWYoIXQubGVuZ3RoKXJldHVybiByKG51bGwsW10pO3ZhciBuPXQubGVuZ3Ro LGk9bmV3IEFycmF5KHQubGVuZ3RoKSxhPW51bGw7dC5mb3JFYWNoKChmdW5jdGlvbih0LG8p e2UodCwoZnVuY3Rpb24odCxlKXt0JiYoYT10KSxpW29dPWUsMD09LS1uJiZyKGEsaSl9KSl9 KSl9LHQuYmV6aWVyPW8sdC5iaW5kQWxsPW0sdC5icm93c2VyPVIsdC5jYWNoZUVudHJ5UG9z c2libHlBZGRlZD1mdW5jdGlvbih0KXsrK2h0Pm90JiYodC5nZXRBY3RvcigpLnNlbmQoImVu Zm9yY2VDYWNoZVNpemVMaW1pdCIsYXQpLGh0PTApfSx0LmNsYW1wPWwsdC5jbGVhclRpbGVD YWNoZT1mdW5jdGlvbih0KXt2YXIgZT1zZWxmLmNhY2hlcy5kZWxldGUoIm1hcGJveC10aWxl cyIpO3QmJmUuY2F0Y2godCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gdCgpfSkpfSx0LmNs aXBMaW5lPWVjLHQuY2xvbmU9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IGZvKDE2KTtyZXR1cm4g ZVswXT10WzBdLGVbMV09dFsxXSxlWzJdPXRbMl0sZVszXT10WzNdLGVbNF09dFs0XSxlWzVd PXRbNV0sZVs2XT10WzZdLGVbN109dFs3XSxlWzhdPXRbOF0sZVs5XT10WzldLGVbMTBdPXRb MTBdLGVbMTFdPXRbMTFdLGVbMTJdPXRbMTJdLGVbMTNdPXRbMTNdLGVbMTRdPXRbMTRdLGVb MTVdPXRbMTVdLGV9LHQuY2xvbmUkMT14LHQuY2xvbmUkMj1mdW5jdGlvbih0KXt2YXIgZT1u ZXcgZm8oMyk7cmV0dXJuIGVbMF09dFswXSxlWzFdPXRbMV0sZVsyXT10WzJdLGV9LHQuY29s bGlzaW9uQ2lyY2xlTGF5b3V0PXRsLHQuY29uZmlnPUYsdC5jcmVhdGU9ZnVuY3Rpb24oKXt2 YXIgdD1uZXcgZm8oMTYpO3JldHVybiBmbyE9RmxvYXQzMkFycmF5JiYodFsxXT0wLHRbMl09 MCx0WzNdPTAsdFs0XT0wLHRbNl09MCx0WzddPTAsdFs4XT0wLHRbOV09MCx0WzExXT0wLHRb MTJdPTAsdFsxM109MCx0WzE0XT0wKSx0WzBdPTEsdFs1XT0xLHRbMTBdPTEsdFsxNV09MSx0 fSx0LmNyZWF0ZSQxPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IGZvKDkpO3JldHVybiBmbyE9Rmxv YXQzMkFycmF5JiYodFsxXT0wLHRbMl09MCx0WzNdPTAsdFs1XT0wLHRbNl09MCx0WzddPTAp LHRbMF09MSx0WzRdPTEsdFs4XT0xLHR9LHQuY3JlYXRlJDI9ZnVuY3Rpb24oKXt2YXIgdD1u ZXcgZm8oNCk7cmV0dXJuIGZvIT1GbG9hdDMyQXJyYXkmJih0WzFdPTAsdFsyXT0wKSx0WzBd PTEsdFszXT0xLHR9LHQuY3JlYXRlQ29tbW9uanNNb2R1bGU9ZSx0LmNyZWF0ZUV4cHJlc3Np b249V3IsdC5jcmVhdGVMYXlvdXQ9SWksdC5jcmVhdGVTdHlsZUxheWVyPWZ1bmN0aW9uKHQp e3JldHVybiJjdXN0b20iPT09dC50eXBlP25ldyBEYyh0KTpuZXcgUmNbdC50eXBlXSh0KX0s dC5jcm9zcz1mdW5jdGlvbih0LGUscil7dmFyIG49ZVswXSxpPWVbMV0sYT1lWzJdLG89clsw XSxzPXJbMV0sbD1yWzJdO3JldHVybiB0WzBdPWkqbC1hKnMsdFsxXT1hKm8tbipsLHRbMl09 bipzLWkqbyx0fSx0LmRlZXBFcXVhbD1mdW5jdGlvbiB0KGUscil7aWYoQXJyYXkuaXNBcnJh eShlKSl7aWYoIUFycmF5LmlzQXJyYXkocil8fGUubGVuZ3RoIT09ci5sZW5ndGgpcmV0dXJu ITE7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspaWYoIXQoZVtuXSxyW25dKSlyZXR1cm4h MTtyZXR1cm4hMH1pZigib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiZudWxsIT09cil7 aWYoIm9iamVjdCIhPXR5cGVvZiByKXJldHVybiExO2lmKE9iamVjdC5rZXlzKGUpLmxlbmd0 aCE9PU9iamVjdC5rZXlzKHIpLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIGkgaW4gZSlpZigh dChlW2ldLHJbaV0pKXJldHVybiExO3JldHVybiEwfXJldHVybiBlPT09cn0sdC5kb3Q9ZnVu Y3Rpb24odCxlKXtyZXR1cm4gdFswXSplWzBdK3RbMV0qZVsxXSt0WzJdKmVbMl19LHQuZG90 JDE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFswXSplWzBdK3RbMV0qZVsxXSt0WzJdKmVbMl0r dFszXSplWzNdfSx0LmVhc2U9cyx0LmVtaXRWYWxpZGF0aW9uRXJyb3JzPU9uLHQuZW5kc1dp dGg9Zyx0LmVuZm9yY2VDYWNoZVNpemVMaW1pdD1mdW5jdGlvbih0KXtzdCgpLFEmJlEudGhl bigoZnVuY3Rpb24oZSl7ZS5rZXlzKCkudGhlbigoZnVuY3Rpb24ocil7Zm9yKHZhciBuPTA7 bjxyLmxlbmd0aC10O24rKyllLmRlbGV0ZShyW25dKX0pKX0pKX0sdC5ldmFsdWF0ZVNpemVG b3JGZWF0dXJlPVlsLHQuZXZhbHVhdGVTaXplRm9yWm9vbT1XbCx0LmV2YWx1YXRlVmFyaWFi bGVPZmZzZXQ9ZGMsdC5ldmVudGVkPWNpLHQuZXh0ZW5kPXUsdC5mZWF0dXJlRmlsdGVyPXNu LHQuZmlsdGVyT2JqZWN0PXksdC5mcm9tUm90YXRpb249ZnVuY3Rpb24odCxlKXt2YXIgcj1N YXRoLnNpbihlKSxuPU1hdGguY29zKGUpO3JldHVybiB0WzBdPW4sdFsxXT1yLHRbMl09MCx0 WzNdPS1yLHRbNF09bix0WzVdPTAsdFs2XT0wLHRbN109MCx0WzhdPTEsdH0sdC5nZXRBbmNo b3JBbGlnbm1lbnQ9VWwsdC5nZXRBbmNob3JKdXN0aWZpY2F0aW9uPW1jLHQuZ2V0QXJyYXlC dWZmZXI9eHQsdC5nZXRJbWFnZT1UdCx0LmdldEpTT049ZnVuY3Rpb24odCxlKXtyZXR1cm4g eXQodSh0LHt0eXBlOiJqc29uIn0pLGUpfSx0LmdldFJUTFRleHRQbHVnaW5TdGF0dXM9dWks dC5nZXRSZWZlcnJlcj1ndCx0LmdldFZpZGVvPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixpPXNl bGYuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidmlkZW8iKTtpLm11dGVkPSEwLGkub25sb2Fk c3RhcnQ9ZnVuY3Rpb24oKXtlKG51bGwsaSl9O2Zvcih2YXIgYT0wO2E8dC5sZW5ndGg7YSsr KXt2YXIgbz1zZWxmLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNvdXJjZSIpO3I9dFthXSxu PXZvaWQgMCwobj1zZWxmLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSkuaHJlZj1yLChu LnByb3RvY29sIT09c2VsZi5kb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbHx8bi5ob3N0IT09 c2VsZi5kb2N1bWVudC5sb2NhdGlvbi5ob3N0KSYmKGkuY3Jvc3NPcmlnaW49IkFub255bW91 cyIpLG8uc3JjPXRbYV0saS5hcHBlbmRDaGlsZChvKX1yZXR1cm57Y2FuY2VsOmZ1bmN0aW9u KCl7fX19LHQuaWRlbnRpdHk9aG8sdC5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBd LG49ZVsxXSxpPWVbMl0sYT1lWzNdLG89ZVs0XSxzPWVbNV0sbD1lWzZdLGM9ZVs3XSx1PWVb OF0sZj1lWzldLGg9ZVsxMF0scD1lWzExXSxkPWVbMTJdLG09ZVsxM10sZz1lWzE0XSx2PWVb MTVdLHk9cipzLW4qbyx4PXIqbC1pKm8sYj1yKmMtYSpvLF89bipsLWkqcyx3PW4qYy1hKnMs VD1pKmMtYSpsLGs9dSptLWYqZCxBPXUqZy1oKmQsTT11KnYtcCpkLFM9ZipnLWgqbSxFPWYq di1wKm0sTD1oKnYtcCpnLEM9eSpMLXgqRStiKlMrXypNLXcqQStUKms7cmV0dXJuIEM/KEM9 MS9DLHRbMF09KHMqTC1sKkUrYypTKSpDLHRbMV09KGkqRS1uKkwtYSpTKSpDLHRbMl09KG0q VC1nKncrdipfKSpDLHRbM109KGgqdy1mKlQtcCpfKSpDLHRbNF09KGwqTS1vKkwtYypBKSpD LHRbNV09KHIqTC1pKk0rYSpBKSpDLHRbNl09KGcqYi1kKlQtdip4KSpDLHRbN109KHUqVC1o KmIrcCp4KSpDLHRbOF09KG8qRS1zKk0rYyprKSpDLHRbOV09KG4qTS1yKkUtYSprKSpDLHRb MTBdPShkKnctbSpiK3YqeSkqQyx0WzExXT0oZipiLXUqdy1wKnkpKkMsdFsxMl09KHMqQS1v KlMtbCprKSpDLHRbMTNdPShyKlMtbipBK2kqaykqQyx0WzE0XT0obSp4LWQqXy1nKnkpKkMs dFsxNV09KHUqXy1mKngraCp5KSpDLHQpOm51bGx9LHQuaXNDaGFyPVluLHQuaXNNYXBib3hV Ukw9cSx0LmtleXNEaWZmZXJlbmNlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9W107Zm9yKHZhciBu IGluIHQpbiBpbiBlfHxyLnB1c2gobik7cmV0dXJuIHJ9LHQubWFrZVJlcXVlc3Q9eXQsdC5t YXBPYmplY3Q9dix0Lm1lcmNhdG9yWGZyb21Mbmc9SmMsdC5tZXJjYXRvcllmcm9tTGF0PUtj LHQubWVyY2F0b3JaZnJvbUFsdGl0dWRlPVFjLHQubXVsPW1vLHQubXVsdGlwbHk9cG8sdC5t dnQ9THMsdC5ub3JtYWxpemU9ZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLG49ZVsxXSxpPWVb Ml0sYT1yKnIrbipuK2kqaTtyZXR1cm4gYT4wJiYoYT0xL01hdGguc3FydChhKSksdFswXT1l WzBdKmEsdFsxXT1lWzFdKmEsdFsyXT1lWzJdKmEsdH0sdC5udW1iZXI9cWUsdC5vZmZzY3Jl ZW5DYW52YXNTdXBwb3J0ZWQ9cHQsdC5vcnRobz1mdW5jdGlvbih0LGUscixuLGksYSxvKXt2 YXIgcz0xLyhlLXIpLGw9MS8obi1pKSxjPTEvKGEtbyk7cmV0dXJuIHRbMF09LTIqcyx0WzFd PTAsdFsyXT0wLHRbM109MCx0WzRdPTAsdFs1XT0tMipsLHRbNl09MCx0WzddPTAsdFs4XT0w LHRbOV09MCx0WzEwXT0yKmMsdFsxMV09MCx0WzEyXT0oZStyKSpzLHRbMTNdPShpK24pKmws dFsxNF09KG8rYSkqYyx0WzE1XT0xLHR9LHQucGFyc2VHbHlwaFBCRj1mdW5jdGlvbih0KXty ZXR1cm4gbmV3IGFsKHQpLnJlYWRGaWVsZHMoVGwsW10pfSx0LnBiZj1hbCx0LnBlcmZvcm1T eW1ib2xMYXlvdXQ9ZnVuY3Rpb24odCxlLHIsbixpLGEsbyl7dC5jcmVhdGVBcnJheXMoKTt2 YXIgcz01MTIqdC5vdmVyc2NhbGluZzt0LnRpbGVQaXhlbFJhdGlvPTgxOTIvcyx0LmNvbXBh cmVUZXh0PXt9LHQuaWNvbnNOZWVkTGluZWFyPSExO3ZhciBsPXQubGF5ZXJzWzBdLmxheW91 dCxjPXQubGF5ZXJzWzBdLl91bmV2YWx1YXRlZExheW91dC5fdmFsdWVzLHU9e307aWYoImNv bXBvc2l0ZSI9PT10LnRleHRTaXplRGF0YS5raW5kKXt2YXIgZj10LnRleHRTaXplRGF0YSxo PWYubWluWm9vbSxwPWYubWF4Wm9vbTt1LmNvbXBvc2l0ZVRleHRTaXplcz1bY1sidGV4dC1z aXplIl0ucG9zc2libHlFdmFsdWF0ZShuZXcgcGkoaCksbyksY1sidGV4dC1zaXplIl0ucG9z c2libHlFdmFsdWF0ZShuZXcgcGkocCksbyldfWlmKCJjb21wb3NpdGUiPT09dC5pY29uU2l6 ZURhdGEua2luZCl7dmFyIGQ9dC5pY29uU2l6ZURhdGEsbT1kLm1pblpvb20sZz1kLm1heFpv b207dS5jb21wb3NpdGVJY29uU2l6ZXM9W2NbImljb24tc2l6ZSJdLnBvc3NpYmx5RXZhbHVh dGUobmV3IHBpKG0pLG8pLGNbImljb24tc2l6ZSJdLnBvc3NpYmx5RXZhbHVhdGUobmV3IHBp KGcpLG8pXX11LmxheW91dFRleHRTaXplPWNbInRleHQtc2l6ZSJdLnBvc3NpYmx5RXZhbHVh dGUobmV3IHBpKHQuem9vbSsxKSxvKSx1LmxheW91dEljb25TaXplPWNbImljb24tc2l6ZSJd LnBvc3NpYmx5RXZhbHVhdGUobmV3IHBpKHQuem9vbSsxKSxvKSx1LnRleHRNYXhTaXplPWNb InRleHQtc2l6ZSJdLnBvc3NpYmx5RXZhbHVhdGUobmV3IHBpKDE4KSk7Zm9yKHZhciB2PTI0 KmwuZ2V0KCJ0ZXh0LWxpbmUtaGVpZ2h0IikseT0ibWFwIj09PWwuZ2V0KCJ0ZXh0LXJvdGF0 aW9uLWFsaWdubWVudCIpJiYicG9pbnQiIT09bC5nZXQoInN5bWJvbC1wbGFjZW1lbnQiKSx4 PWwuZ2V0KCJ0ZXh0LWtlZXAtdXByaWdodCIpLGI9bC5nZXQoInRleHQtc2l6ZSIpLHc9ZnVu Y3Rpb24oKXt2YXIgYT1rW1RdLHM9bC5nZXQoInRleHQtZm9udCIpLmV2YWx1YXRlKGEse30s bykuam9pbigiLCIpLGM9Yi5ldmFsdWF0ZShhLHt9LG8pLGY9dS5sYXlvdXRUZXh0U2l6ZS5l dmFsdWF0ZShhLHt9LG8pLGg9dS5sYXlvdXRJY29uU2l6ZS5ldmFsdWF0ZShhLHt9LG8pLHA9 e2hvcml6b250YWw6e30sdmVydGljYWw6dm9pZCAwfSxkPWEudGV4dCxtPVswLDBdO2lmKGQp e3ZhciBnPWQudG9TdHJpbmcoKSx3PTI0KmwuZ2V0KCJ0ZXh0LWxldHRlci1zcGFjaW5nIiku ZXZhbHVhdGUoYSx7fSxvKSxBPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLHI9dDtlPHIubGVu Z3RoO2UrPTEpe2lmKCFYbihyW2VdLmNoYXJDb2RlQXQoMCkpKXJldHVybiExfXJldHVybiEw fShnKT93OjAsTT1sLmdldCgidGV4dC1hbmNob3IiKS5ldmFsdWF0ZShhLHt9LG8pLFM9bC5n ZXQoInRleHQtdmFyaWFibGUtYW5jaG9yIik7aWYoIVMpe3ZhciBFPWwuZ2V0KCJ0ZXh0LXJh ZGlhbC1vZmZzZXQiKS5ldmFsdWF0ZShhLHt9LG8pO209RT9kYyhNLFsyNCpFLHBjXSk6bC5n ZXQoInRleHQtb2Zmc2V0IikuZXZhbHVhdGUoYSx7fSxvKS5tYXAoKGZ1bmN0aW9uKHQpe3Jl dHVybiAyNCp0fSkpfXZhciBMPXk/ImNlbnRlciI6bC5nZXQoInRleHQtanVzdGlmeSIpLmV2 YWx1YXRlKGEse30sbyksQz1sLmdldCgic3ltYm9sLXBsYWNlbWVudCIpLFA9InBvaW50Ij09 PUM/MjQqbC5nZXQoInRleHQtbWF4LXdpZHRoIikuZXZhbHVhdGUoYSx7fSxvKTowLEk9ZnVu Y3Rpb24oKXt0LmFsbG93VmVydGljYWxQbGFjZW1lbnQmJlduKGcpJiYocC52ZXJ0aWNhbD1P bChkLGUscixpLHMsUCx2LE0sImxlZnQiLEEsbSxDbC52ZXJ0aWNhbCwhMCxDLGYsYykpfTtp ZigheSYmUyl7Zm9yKHZhciBPPSJhdXRvIj09PUw/Uy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVy biBtYyh0KX0pKTpbTF0sej0hMSxEPTA7RDxPLmxlbmd0aDtEKyspe3ZhciBSPU9bRF07aWYo IXAuaG9yaXpvbnRhbFtSXSlpZih6KXAuaG9yaXpvbnRhbFtSXT1wLmhvcml6b250YWxbMF07 ZWxzZXt2YXIgRj1PbChkLGUscixpLHMsUCx2LCJjZW50ZXIiLFIsQSxtLENsLmhvcml6b250 YWwsITEsQyxmLGMpO0YmJihwLmhvcml6b250YWxbUl09Rix6PTE9PT1GLnBvc2l0aW9uZWRM aW5lcy5sZW5ndGgpfX1JKCl9ZWxzZXsiYXV0byI9PT1MJiYoTD1tYyhNKSk7dmFyIEI9T2wo ZCxlLHIsaSxzLFAsdixNLEwsQSxtLENsLmhvcml6b250YWwsITEsQyxmLGMpO0ImJihwLmhv cml6b250YWxbTF09QiksSSgpLFduKGcpJiZ5JiZ4JiYocC52ZXJ0aWNhbD1PbChkLGUscixp LHMsUCx2LE0sTCxBLG0sQ2wudmVydGljYWwsITEsQyxmLGMpKX19dmFyIE49dm9pZCAwLGo9 ITE7aWYoYS5pY29uJiZhLmljb24ubmFtZSl7dmFyIFU9blthLmljb24ubmFtZV07VSYmKE49 ZnVuY3Rpb24odCxlLHIpe3ZhciBuPVVsKHIpLGk9bi5ob3Jpem9udGFsQWxpZ24sYT1uLnZl cnRpY2FsQWxpZ24sbz1lWzBdLHM9ZVsxXSxsPW8tdC5kaXNwbGF5U2l6ZVswXSppLGM9bCt0 LmRpc3BsYXlTaXplWzBdLHU9cy10LmRpc3BsYXlTaXplWzFdKmE7cmV0dXJue2ltYWdlOnQs dG9wOnUsYm90dG9tOnUrdC5kaXNwbGF5U2l6ZVsxXSxsZWZ0OmwscmlnaHQ6Y319KGlbYS5p Y29uLm5hbWVdLGwuZ2V0KCJpY29uLW9mZnNldCIpLmV2YWx1YXRlKGEse30sbyksbC5nZXQo Imljb24tYW5jaG9yIikuZXZhbHVhdGUoYSx7fSxvKSksaj1VLnNkZix2b2lkIDA9PT10LnNk Zkljb25zP3Quc2RmSWNvbnM9VS5zZGY6dC5zZGZJY29ucyE9PVUuc2RmJiZfKCJTdHlsZSBz aGVldCB3YXJuaW5nOiBDYW5ub3QgbWl4IFNERiBhbmQgbm9uLVNERiBpY29ucyBpbiBvbmUg YnVmZmVyIiksKFUucGl4ZWxSYXRpbyE9PXQucGl4ZWxSYXRpb3x8MCE9PWwuZ2V0KCJpY29u LXJvdGF0ZSIpLmNvbnN0YW50T3IoMSkpJiYodC5pY29uc05lZWRMaW5lYXI9ITApKX12YXIg Vj12YyhwLmhvcml6b250YWwpfHxwLnZlcnRpY2FsO3QuaWNvbnNJblRleHQ9ISFWJiZWLmlj b25zSW5UZXh0LChWfHxOKSYmZnVuY3Rpb24odCxlLHIsbixpLGEsbyxzLGwsYyx1KXt2YXIg Zj1hLnRleHRNYXhTaXplLmV2YWx1YXRlKGUse30pO3ZvaWQgMD09PWYmJihmPW8pO3ZhciBo LHA9dC5sYXllcnNbMF0ubGF5b3V0LGQ9cC5nZXQoImljb24tb2Zmc2V0IikuZXZhbHVhdGUo ZSx7fSx1KSxtPXZjKHIuaG9yaXpvbnRhbCksZz1vLzI0LHY9dC50aWxlUGl4ZWxSYXRpbypn LHk9dC50aWxlUGl4ZWxSYXRpbypmLzI0LHg9dC50aWxlUGl4ZWxSYXRpbypzLGI9dC50aWxl UGl4ZWxSYXRpbypwLmdldCgic3ltYm9sLXNwYWNpbmciKSx3PXAuZ2V0KCJ0ZXh0LXBhZGRp bmciKSp0LnRpbGVQaXhlbFJhdGlvLFQ9cC5nZXQoImljb24tcGFkZGluZyIpKnQudGlsZVBp eGVsUmF0aW8saz1wLmdldCgidGV4dC1tYXgtYW5nbGUiKS8xODAqTWF0aC5QSSxBPSJtYXAi PT09cC5nZXQoInRleHQtcm90YXRpb24tYWxpZ25tZW50IikmJiJwb2ludCIhPT1wLmdldCgi c3ltYm9sLXBsYWNlbWVudCIpLE09Im1hcCI9PT1wLmdldCgiaWNvbi1yb3RhdGlvbi1hbGln bm1lbnQiKSYmInBvaW50IiE9PXAuZ2V0KCJzeW1ib2wtcGxhY2VtZW50IiksUz1wLmdldCgi c3ltYm9sLXBsYWNlbWVudCIpLEU9Yi8yLEw9cC5nZXQoImljb24tdGV4dC1maXQiKTtuJiYi bm9uZSIhPT1MJiYodC5hbGxvd1ZlcnRpY2FsUGxhY2VtZW50JiZyLnZlcnRpY2FsJiYoaD1I bChuLHIudmVydGljYWwsTCxwLmdldCgiaWNvbi10ZXh0LWZpdC1wYWRkaW5nIiksZCxnKSks bSYmKG49SGwobixtLEwscC5nZXQoImljb24tdGV4dC1maXQtcGFkZGluZyIpLGQsZykpKTt2 YXIgQz1mdW5jdGlvbihzLGYpe2YueDwwfHxmLng+PTgxOTJ8fGYueTwwfHxmLnk+PTgxOTJ8 fGZ1bmN0aW9uKHQsZSxyLG4saSxhLG8scyxsLGMsdSxmLGgscCxkLG0sZyx2LHkseCxiLHcs VCxrLEEpe3ZhciBNLFMsRSxMLEMsUD10LmFkZFRvTGluZVZlcnRleEFycmF5KGUsciksST0w LE89MCx6PTAsRD0wLFI9LTEsRj0tMSxCPXt9LE49eWEoIiIpLGo9MCxVPTA7dm9pZCAwPT09 cy5fdW5ldmFsdWF0ZWRMYXlvdXQuZ2V0VmFsdWUoInRleHQtcmFkaWFsLW9mZnNldCIpPyhN PXMubGF5b3V0LmdldCgidGV4dC1vZmZzZXQiKS5ldmFsdWF0ZShiLHt9LGspLm1hcCgoZnVu Y3Rpb24odCl7cmV0dXJuIDI0KnR9KSksaj1NWzBdLFU9TVsxXSk6KGo9MjQqcy5sYXlvdXQu Z2V0KCJ0ZXh0LXJhZGlhbC1vZmZzZXQiKS5ldmFsdWF0ZShiLHt9LGspLFU9cGMpO2lmKHQu YWxsb3dWZXJ0aWNhbFBsYWNlbWVudCYmbi52ZXJ0aWNhbCl7dmFyIFY9cy5sYXlvdXQuZ2V0 KCJ0ZXh0LXJvdGF0ZSIpLmV2YWx1YXRlKGIse30saykrOTAsSD1uLnZlcnRpY2FsO0w9bmV3 IHNjKGwsZSxjLHUsZixILGgscCxkLFYpLG8mJihDPW5ldyBzYyhsLGUsYyx1LGYsbyxnLHYs ZCxWKSl9aWYoaSl7dmFyIHE9cy5sYXlvdXQuZ2V0KCJpY29uLXJvdGF0ZSIpLmV2YWx1YXRl KGIse30pLEc9Im5vbmUiIT09cy5sYXlvdXQuZ2V0KCJpY29uLXRleHQtZml0IiksWT1yYyhp LHEsVCxHKSxXPW8/cmMobyxxLFQsRyk6dm9pZCAwO0U9bmV3IHNjKGwsZSxjLHUsZixpLGcs diwhMSxxKSxJPTQqWS5sZW5ndGg7dmFyIFg9dC5pY29uU2l6ZURhdGEsWj1udWxsOyJzb3Vy Y2UiPT09WC5raW5kPyhaPVsxMjgqcy5sYXlvdXQuZ2V0KCJpY29uLXNpemUiKS5ldmFsdWF0 ZShiLHt9KV0pWzBdPjMyNjQwJiZfKHQubGF5ZXJJZHNbMF0rJzogVmFsdWUgZm9yICJpY29u LXNpemUiIGlzID49IDI1NS4gUmVkdWNlIHlvdXIgImljb24tc2l6ZSIuJyk6ImNvbXBvc2l0 ZSI9PT1YLmtpbmQmJigoWj1bMTI4KncuY29tcG9zaXRlSWNvblNpemVzWzBdLmV2YWx1YXRl KGIse30sayksMTI4KncuY29tcG9zaXRlSWNvblNpemVzWzFdLmV2YWx1YXRlKGIse30sayld KVswXT4zMjY0MHx8WlsxXT4zMjY0MCkmJl8odC5sYXllcklkc1swXSsnOiBWYWx1ZSBmb3Ig Imljb24tc2l6ZSIgaXMgPj0gMjU1LiBSZWR1Y2UgeW91ciAiaWNvbi1zaXplIi4nKSx0LmFk ZFN5bWJvbHModC5pY29uLFksWix4LHksYiwhMSxlLFAubGluZVN0YXJ0SW5kZXgsUC5saW5l TGVuZ3RoLC0xLGspLFI9dC5pY29uLnBsYWNlZFN5bWJvbEFycmF5Lmxlbmd0aC0xLFcmJihP PTQqVy5sZW5ndGgsdC5hZGRTeW1ib2xzKHQuaWNvbixXLFoseCx5LGIsQ2wudmVydGljYWws ZSxQLmxpbmVTdGFydEluZGV4LFAubGluZUxlbmd0aCwtMSxrKSxGPXQuaWNvbi5wbGFjZWRT eW1ib2xBcnJheS5sZW5ndGgtMSl9Zm9yKHZhciBKIGluIG4uaG9yaXpvbnRhbCl7dmFyIEs9 bi5ob3Jpem9udGFsW0pdO2lmKCFTKXtOPXlhKEsudGV4dCk7dmFyIFE9cy5sYXlvdXQuZ2V0 KCJ0ZXh0LXJvdGF0ZSIpLmV2YWx1YXRlKGIse30sayk7Uz1uZXcgc2MobCxlLGMsdSxmLEss aCxwLGQsUSl9dmFyICQ9MT09PUsucG9zaXRpb25lZExpbmVzLmxlbmd0aDtpZih6Kz1nYyh0 LGUsSyxhLHMsZCxiLG0sUCxuLnZlcnRpY2FsP0NsLmhvcml6b250YWw6Q2wuaG9yaXpvbnRh bE9ubHksJD9PYmplY3Qua2V5cyhuLmhvcml6b250YWwpOltKXSxCLFIsdyxrKSwkKWJyZWFr fW4udmVydGljYWwmJihEKz1nYyh0LGUsbi52ZXJ0aWNhbCxhLHMsZCxiLG0sUCxDbC52ZXJ0 aWNhbCxbInZlcnRpY2FsIl0sQixGLHcsaykpO3ZhciB0dD1TP1MuYm94U3RhcnRJbmRleDp0 LmNvbGxpc2lvbkJveEFycmF5Lmxlbmd0aCxldD1TP1MuYm94RW5kSW5kZXg6dC5jb2xsaXNp b25Cb3hBcnJheS5sZW5ndGgscnQ9TD9MLmJveFN0YXJ0SW5kZXg6dC5jb2xsaXNpb25Cb3hB cnJheS5sZW5ndGgsbnQ9TD9MLmJveEVuZEluZGV4OnQuY29sbGlzaW9uQm94QXJyYXkubGVu Z3RoLGl0PUU/RS5ib3hTdGFydEluZGV4OnQuY29sbGlzaW9uQm94QXJyYXkubGVuZ3RoLGF0 PUU/RS5ib3hFbmRJbmRleDp0LmNvbGxpc2lvbkJveEFycmF5Lmxlbmd0aCxvdD1DP0MuYm94 U3RhcnRJbmRleDp0LmNvbGxpc2lvbkJveEFycmF5Lmxlbmd0aCxzdD1DP0MuYm94RW5kSW5k ZXg6dC5jb2xsaXNpb25Cb3hBcnJheS5sZW5ndGgsbHQ9LTEsY3Q9ZnVuY3Rpb24odCxlKXty ZXR1cm4gdCYmdC5jaXJjbGVEaWFtZXRlcj9NYXRoLm1heCh0LmNpcmNsZURpYW1ldGVyLGUp OmV9O2x0PWN0KFMsbHQpLGx0PWN0KEwsbHQpLGx0PWN0KEUsbHQpO3ZhciB1dD0obHQ9Y3Qo QyxsdCkpPi0xPzE6MDt1dCYmKGx0Kj1BLzI0KTt0LmdseXBoT2Zmc2V0QXJyYXkubGVuZ3Ro Pj1NYy5NQVhfR0xZUEhTJiZfKCJUb28gbWFueSBnbHlwaHMgYmVpbmcgcmVuZGVyZWQgaW4g YSB0aWxlLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL21hcGJveC9tYXBib3gtZ2wtanMvaXNz dWVzLzI5MDciKTt2b2lkIDAhPT1iLnNvcnRLZXkmJnQuYWRkVG9Tb3J0S2V5UmFuZ2VzKHQu c3ltYm9sSW5zdGFuY2VzLmxlbmd0aCxiLnNvcnRLZXkpO3Quc3ltYm9sSW5zdGFuY2VzLmVt cGxhY2VCYWNrKGUueCxlLnksQi5yaWdodD49MD9CLnJpZ2h0Oi0xLEIuY2VudGVyPj0wP0Iu Y2VudGVyOi0xLEIubGVmdD49MD9CLmxlZnQ6LTEsQi52ZXJ0aWNhbHx8LTEsUixGLE4sdHQs ZXQscnQsbnQsaXQsYXQsb3Qsc3QsYyx6LEQsSSxPLHV0LDAsaCxqLFUsbHQpfSh0LGYscyxy LG4saSxoLHQubGF5ZXJzWzBdLHQuY29sbGlzaW9uQm94QXJyYXksZS5pbmRleCxlLnNvdXJj ZUxheWVySW5kZXgsdC5pbmRleCx2LHcsQSxsLHgsVCxNLGQsZSxhLGMsdSxvKX07aWYoImxp bmUiPT09Uylmb3IodmFyIFA9MCxJPWVjKGUuZ2VvbWV0cnksMCwwLDgxOTIsODE5Mik7UDxJ Lmxlbmd0aDtQKz0xKWZvcih2YXIgTz1JW1BdLHo9dGMoTyxiLGssci52ZXJ0aWNhbHx8bSxu LDI0LHksdC5vdmVyc2NhbGluZyw4MTkyKSxEPTAsUj16O0Q8Ui5sZW5ndGg7RCs9MSl7dmFy IEY9UltEXSxCPW07QiYmeWModCxCLnRleHQsRSxGKXx8QyhPLEYpfWVsc2UgaWYoImxpbmUt Y2VudGVyIj09PVMpZm9yKHZhciBOPTAsaj1lLmdlb21ldHJ5O048ai5sZW5ndGg7Tis9MSl7 dmFyIFU9altOXTtpZihVLmxlbmd0aD4xKXt2YXIgVj0kbChVLGssci52ZXJ0aWNhbHx8bSxu LDI0LHkpO1YmJkMoVSxWKX19ZWxzZSBpZigiUG9seWdvbiI9PT1lLnR5cGUpZm9yKHZhciBI PTAscT1ocyhlLmdlb21ldHJ5LDApO0g8cS5sZW5ndGg7SCs9MSl7dmFyIEc9cVtIXSxZPXVj KEcsMTYpO0MoR1swXSxuZXcgcWwoWS54LFkueSwwKSl9ZWxzZSBpZigiTGluZVN0cmluZyI9 PT1lLnR5cGUpZm9yKHZhciBXPTAsWD1lLmdlb21ldHJ5O1c8WC5sZW5ndGg7Vys9MSl7dmFy IFo9WFtXXTtDKFosbmV3IHFsKFpbMF0ueCxaWzBdLnksMCkpfWVsc2UgaWYoIlBvaW50Ij09 PWUudHlwZSlmb3IodmFyIEo9MCxLPWUuZ2VvbWV0cnk7SjxLLmxlbmd0aDtKKz0xKWZvcih2 YXIgUT1LW0pdLCQ9MCx0dD1ROyQ8dHQubGVuZ3RoOyQrPTEpe3ZhciBldD10dFskXTtDKFtl dF0sbmV3IHFsKGV0LngsZXQueSwwKSl9fSh0LGEscCxOLG4sdSxmLGgsbSxqLG8pfSxUPTAs az10LmZlYXR1cmVzO1Q8ay5sZW5ndGg7VCs9MSl3KCk7YSYmdC5nZW5lcmF0ZUNvbGxpc2lv bkRlYnVnQnVmZmVycygpfSx0LnBlcnNwZWN0aXZlPWZ1bmN0aW9uKHQsZSxyLG4saSl7dmFy IGEsbz0xL01hdGgudGFuKGUvMik7cmV0dXJuIHRbMF09by9yLHRbMV09MCx0WzJdPTAsdFsz XT0wLHRbNF09MCx0WzVdPW8sdFs2XT0wLHRbN109MCx0WzhdPTAsdFs5XT0wLHRbMTFdPS0x LHRbMTJdPTAsdFsxM109MCx0WzE1XT0wLG51bGwhPWkmJmkhPT0xLzA/KGE9MS8obi1pKSx0 WzEwXT0oaStuKSphLHRbMTRdPTIqaSpuKmEpOih0WzEwXT0tMSx0WzE0XT0tMipuKSx0fSx0 LnBpY2s9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9e30sbj0wO248ZS5sZW5ndGg7bisrKXt2 YXIgaT1lW25dO2kgaW4gdCYmKHJbaV09dFtpXSl9cmV0dXJuIHJ9LHQucGx1Z2luPWhpLHQu cG9seWdvbkludGVyc2VjdHNQb2x5Z29uPVphLHQucG9zdE1hcExvYWRFdmVudD1pdCx0LnBv c3RUdXJuc3RpbGVFdmVudD1ydCx0LnBvdHBhY2s9TWwsdC5yZWZQcm9wZXJ0aWVzPVsidHlw ZSIsInNvdXJjZSIsInNvdXJjZS1sYXllciIsIm1pbnpvb20iLCJtYXh6b29tIiwiZmlsdGVy IiwibGF5b3V0Il0sdC5yZWdpc3Rlcj1Obix0LnJlZ2lzdGVyRm9yUGx1Z2luU3RhdGVDaGFu Z2U9ZnVuY3Rpb24odCl7cmV0dXJuIHQoe3BsdWdpblN0YXR1czphaSxwbHVnaW5VUkw6b2l9 KSxjaS5vbigicGx1Z2luU3RhdGVDaGFuZ2UiLHQpLHR9LHQucm90YXRlPWZ1bmN0aW9uKHQs ZSxyKXt2YXIgbj1lWzBdLGk9ZVsxXSxhPWVbMl0sbz1lWzNdLHM9TWF0aC5zaW4ociksbD1N YXRoLmNvcyhyKTtyZXR1cm4gdFswXT1uKmwrYSpzLHRbMV09aSpsK28qcyx0WzJdPW4qLXMr YSpsLHRbM109aSotcytvKmwsdH0sdC5yb3RhdGVYPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1N YXRoLnNpbihyKSxpPU1hdGguY29zKHIpLGE9ZVs0XSxvPWVbNV0scz1lWzZdLGw9ZVs3XSxj PWVbOF0sdT1lWzldLGY9ZVsxMF0saD1lWzExXTtyZXR1cm4gZSE9PXQmJih0WzBdPWVbMF0s dFsxXT1lWzFdLHRbMl09ZVsyXSx0WzNdPWVbM10sdFsxMl09ZVsxMl0sdFsxM109ZVsxM10s dFsxNF09ZVsxNF0sdFsxNV09ZVsxNV0pLHRbNF09YSppK2Mqbix0WzVdPW8qaSt1Km4sdFs2 XT1zKmkrZipuLHRbN109bCppK2gqbix0WzhdPWMqaS1hKm4sdFs5XT11KmktbypuLHRbMTBd PWYqaS1zKm4sdFsxMV09aCppLWwqbix0fSx0LnJvdGF0ZVo9ZnVuY3Rpb24odCxlLHIpe3Zh ciBuPU1hdGguc2luKHIpLGk9TWF0aC5jb3MociksYT1lWzBdLG89ZVsxXSxzPWVbMl0sbD1l WzNdLGM9ZVs0XSx1PWVbNV0sZj1lWzZdLGg9ZVs3XTtyZXR1cm4gZSE9PXQmJih0WzhdPWVb OF0sdFs5XT1lWzldLHRbMTBdPWVbMTBdLHRbMTFdPWVbMTFdLHRbMTJdPWVbMTJdLHRbMTNd PWVbMTNdLHRbMTRdPWVbMTRdLHRbMTVdPWVbMTVdKSx0WzBdPWEqaStjKm4sdFsxXT1vKmkr dSpuLHRbMl09cyppK2Yqbix0WzNdPWwqaStoKm4sdFs0XT1jKmktYSpuLHRbNV09dSppLW8q bix0WzZdPWYqaS1zKm4sdFs3XT1oKmktbCpuLHR9LHQuc2NhbGU9ZnVuY3Rpb24odCxlLHIp e3ZhciBuPXJbMF0saT1yWzFdLGE9clsyXTtyZXR1cm4gdFswXT1lWzBdKm4sdFsxXT1lWzFd Km4sdFsyXT1lWzJdKm4sdFszXT1lWzNdKm4sdFs0XT1lWzRdKmksdFs1XT1lWzVdKmksdFs2 XT1lWzZdKmksdFs3XT1lWzddKmksdFs4XT1lWzhdKmEsdFs5XT1lWzldKmEsdFsxMF09ZVsx MF0qYSx0WzExXT1lWzExXSphLHRbMTJdPWVbMTJdLHRbMTNdPWVbMTNdLHRbMTRdPWVbMTRd LHRbMTVdPWVbMTVdLHR9LHQuc2NhbGUkMT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRbMF09 ZVswXSpyLHRbMV09ZVsxXSpyLHRbMl09ZVsyXSpyLHRbM109ZVszXSpyLHR9LHQuc2NhbGUk Mj1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRbMF09ZVswXSpyLHRbMV09ZVsxXSpyLHRbMl09 ZVsyXSpyLHR9LHQuc2V0Q2FjaGVMaW1pdHM9ZnVuY3Rpb24odCxlKXthdD10LG90PWV9LHQu c2V0UlRMVGV4dFBsdWdpbj1mdW5jdGlvbih0LGUscil7aWYodm9pZCAwPT09ciYmKHI9ITEp LGFpPT09dGl8fGFpPT09ZWl8fGFpPT09cmkpdGhyb3cgbmV3IEVycm9yKCJzZXRSVExUZXh0 UGx1Z2luIGNhbm5vdCBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMuIik7b2k9Ui5yZXNvbHZl VVJMKHQpLGFpPXRpLGlpPWUsbGkoKSxyfHxmaSgpfSx0LnNwaGVyaWNhbFRvQ2FydGVzaWFu PWZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0scj10WzFdLG49dFsyXTtyZXR1cm4gcis9OTAscio9 TWF0aC5QSS8xODAsbio9TWF0aC5QSS8xODAse3g6ZSpNYXRoLmNvcyhyKSpNYXRoLnNpbihu KSx5OmUqTWF0aC5zaW4ocikqTWF0aC5zaW4obiksejplKk1hdGguY29zKG4pfX0sdC5zcXJM ZW49Ym8sdC5zdHlsZVNwZWM9THQsdC5zdWI9eW8sdC5zeW1ib2xTaXplPVhsLHQudHJhbnNm b3JtTWF0Mz1mdW5jdGlvbih0LGUscil7dmFyIG49ZVswXSxpPWVbMV0sYT1lWzJdO3JldHVy biB0WzBdPW4qclswXStpKnJbM10rYSpyWzZdLHRbMV09bipyWzFdK2kqcls0XSthKnJbN10s dFsyXT1uKnJbMl0raSpyWzVdK2Eqcls4XSx0fSx0LnRyYW5zZm9ybU1hdDQ9eG8sdC50cmFu c2xhdGU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGksYSxvLHMsbCxjLHUsZixoLHAsZCxtPXJb MF0sZz1yWzFdLHY9clsyXTtyZXR1cm4gZT09PXQ/KHRbMTJdPWVbMF0qbStlWzRdKmcrZVs4 XSp2K2VbMTJdLHRbMTNdPWVbMV0qbStlWzVdKmcrZVs5XSp2K2VbMTNdLHRbMTRdPWVbMl0q bStlWzZdKmcrZVsxMF0qditlWzE0XSx0WzE1XT1lWzNdKm0rZVs3XSpnK2VbMTFdKnYrZVsx NV0pOihuPWVbMF0saT1lWzFdLGE9ZVsyXSxvPWVbM10scz1lWzRdLGw9ZVs1XSxjPWVbNl0s dT1lWzddLGY9ZVs4XSxoPWVbOV0scD1lWzEwXSxkPWVbMTFdLHRbMF09bix0WzFdPWksdFsy XT1hLHRbM109byx0WzRdPXMsdFs1XT1sLHRbNl09Yyx0WzddPXUsdFs4XT1mLHRbOV09aCx0 WzEwXT1wLHRbMTFdPWQsdFsxMl09biptK3MqZytmKnYrZVsxMl0sdFsxM109aSptK2wqZyto KnYrZVsxM10sdFsxNF09YSptK2MqZytwKnYrZVsxNF0sdFsxNV09byptK3UqZytkKnYrZVsx NV0pLHR9LHQudHJpZ2dlclBsdWdpbkNvbXBsZXRpb25FdmVudD1zaSx0LnVuaXF1ZUlkPWgs dC52YWxpZGF0ZUN1c3RvbVN0eWxlTGF5ZXI9ZnVuY3Rpb24odCl7dmFyIGU9W10scj10Lmlk O3JldHVybiB2b2lkIDA9PT1yJiZlLnB1c2goe21lc3NhZ2U6ImxheWVycy4iK3IrJzogbWlz c2luZyByZXF1aXJlZCBwcm9wZXJ0eSAiaWQiJ30pLHZvaWQgMD09PXQucmVuZGVyJiZlLnB1 c2goe21lc3NhZ2U6ImxheWVycy4iK3IrJzogbWlzc2luZyByZXF1aXJlZCBtZXRob2QgInJl bmRlciInfSksdC5yZW5kZXJpbmdNb2RlJiYiMmQiIT09dC5yZW5kZXJpbmdNb2RlJiYiM2Qi IT09dC5yZW5kZXJpbmdNb2RlJiZlLnB1c2goe21lc3NhZ2U6ImxheWVycy4iK3IrJzogcHJv cGVydHkgInJlbmRlcmluZ01vZGUiIG11c3QgYmUgZWl0aGVyICIyZCIgb3IgIjNkIid9KSxl fSx0LnZhbGlkYXRlTGlnaHQ9Q24sdC52YWxpZGF0ZVN0eWxlPUxuLHQudmFsdWVzPWZ1bmN0 aW9uKHQpe3ZhciBlPVtdO2Zvcih2YXIgciBpbiB0KWUucHVzaCh0W3JdKTtyZXR1cm4gZX0s dC52ZWN0b3JUaWxlPUxzLHQudmVyc2lvbj0iMS4xMC4xIix0Lndhcm5PbmNlPV8sdC53ZWJw U3VwcG9ydGVkPUIsdC53aW5kb3c9c2VsZix0LndyYXA9Y30pKSxuKDAsKGZ1bmN0aW9uKHQp e2Z1bmN0aW9uIGUodCl7dmFyIHI9dHlwZW9mIHQ7aWYoIm51bWJlciI9PT1yfHwiYm9vbGVh biI9PT1yfHwic3RyaW5nIj09PXJ8fG51bGw9PXQpcmV0dXJuIEpTT04uc3RyaW5naWZ5KHQp O2lmKEFycmF5LmlzQXJyYXkodCkpe2Zvcih2YXIgbj0iWyIsaT0wLGE9dDtpPGEubGVuZ3Ro O2krPTEpe24rPWUoYVtpXSkrIiwifXJldHVybiBuKyJdIn1mb3IodmFyIG89T2JqZWN0Lmtl eXModCkuc29ydCgpLHM9InsiLGw9MDtsPG8ubGVuZ3RoO2wrKylzKz1KU09OLnN0cmluZ2lm eShvW2xdKSsiOiIrZSh0W29bbF1dKSsiLCI7cmV0dXJuIHMrIn0ifWZ1bmN0aW9uIHIocil7 Zm9yKHZhciBuPSIiLGk9MCxhPXQucmVmUHJvcGVydGllcztpPGEubGVuZ3RoO2krPTEpe24r PSIvIitlKHJbYVtpXV0pfXJldHVybiBufXZhciBuPWZ1bmN0aW9uKHQpe3RoaXMua2V5Q2Fj aGU9e30sdCYmdGhpcy5yZXBsYWNlKHQpfTtuLnByb3RvdHlwZS5yZXBsYWNlPWZ1bmN0aW9u KHQpe3RoaXMuX2xheWVyQ29uZmlncz17fSx0aGlzLl9sYXllcnM9e30sdGhpcy51cGRhdGUo dCxbXSl9LG4ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlLG4pe2Zvcih2YXIgaT10aGlz LGE9MCxvPWU7YTxvLmxlbmd0aDthKz0xKXt2YXIgcz1vW2FdO3RoaXMuX2xheWVyQ29uZmln c1tzLmlkXT1zO3ZhciBsPXRoaXMuX2xheWVyc1tzLmlkXT10LmNyZWF0ZVN0eWxlTGF5ZXIo cyk7bC5fZmVhdHVyZUZpbHRlcj10LmZlYXR1cmVGaWx0ZXIobC5maWx0ZXIpLHRoaXMua2V5 Q2FjaGVbcy5pZF0mJmRlbGV0ZSB0aGlzLmtleUNhY2hlW3MuaWRdfWZvcih2YXIgYz0wLHU9 bjtjPHUubGVuZ3RoO2MrPTEpe3ZhciBmPXVbY107ZGVsZXRlIHRoaXMua2V5Q2FjaGVbZl0s ZGVsZXRlIHRoaXMuX2xheWVyQ29uZmlnc1tmXSxkZWxldGUgdGhpcy5fbGF5ZXJzW2ZdfXRo aXMuZmFtaWxpZXNCeVNvdXJjZT17fTtmb3IodmFyIGg9MCxwPWZ1bmN0aW9uKHQsZSl7Zm9y KHZhciBuPXt9LGk9MDtpPHQubGVuZ3RoO2krKyl7dmFyIGE9ZSYmZVt0W2ldLmlkXXx8cih0 W2ldKTtlJiYoZVt0W2ldLmlkXT1hKTt2YXIgbz1uW2FdO298fChvPW5bYV09W10pLG8ucHVz aCh0W2ldKX12YXIgcz1bXTtmb3IodmFyIGwgaW4gbilzLnB1c2gobltsXSk7cmV0dXJuIHN9 KHQudmFsdWVzKHRoaXMuX2xheWVyQ29uZmlncyksdGhpcy5rZXlDYWNoZSk7aDxwLmxlbmd0 aDtoKz0xKXt2YXIgZD1wW2hdLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGkuX2xheWVyc1t0 LmlkXX0pKSxtPWRbMF07aWYoIm5vbmUiIT09bS52aXNpYmlsaXR5KXt2YXIgZz1tLnNvdXJj ZXx8IiIsdj10aGlzLmZhbWlsaWVzQnlTb3VyY2VbZ107dnx8KHY9dGhpcy5mYW1pbGllc0J5 U291cmNlW2ddPXt9KTt2YXIgeT1tLnNvdXJjZUxheWVyfHwiX2dlb2pzb25UaWxlTGF5ZXIi LHg9dlt5XTt4fHwoeD12W3ldPVtdKSx4LnB1c2goZCl9fX07dmFyIGk9ZnVuY3Rpb24oZSl7 dmFyIHI9e30sbj1bXTtmb3IodmFyIGkgaW4gZSl7dmFyIGE9ZVtpXSxvPXJbaV09e307Zm9y KHZhciBzIGluIGEpe3ZhciBsPWFbK3NdO2lmKGwmJjAhPT1sLmJpdG1hcC53aWR0aCYmMCE9 PWwuYml0bWFwLmhlaWdodCl7dmFyIGM9e3g6MCx5OjAsdzpsLmJpdG1hcC53aWR0aCsyLGg6 bC5iaXRtYXAuaGVpZ2h0KzJ9O24ucHVzaChjKSxvW3NdPXtyZWN0OmMsbWV0cmljczpsLm1l dHJpY3N9fX19dmFyIHU9dC5wb3RwYWNrKG4pLGY9dS53LGg9dS5oLHA9bmV3IHQuQWxwaGFJ bWFnZSh7d2lkdGg6Znx8MSxoZWlnaHQ6aHx8MX0pO2Zvcih2YXIgZCBpbiBlKXt2YXIgbT1l W2RdO2Zvcih2YXIgZyBpbiBtKXt2YXIgdj1tWytnXTtpZih2JiYwIT09di5iaXRtYXAud2lk dGgmJjAhPT12LmJpdG1hcC5oZWlnaHQpe3ZhciB5PXJbZF1bZ10ucmVjdDt0LkFscGhhSW1h Z2UuY29weSh2LmJpdG1hcCxwLHt4OjAseTowfSx7eDp5LngrMSx5OnkueSsxfSx2LmJpdG1h cCl9fX10aGlzLmltYWdlPXAsdGhpcy5wb3NpdGlvbnM9cn07dC5yZWdpc3RlcigiR2x5cGhB dGxhcyIsaSk7dmFyIGE9ZnVuY3Rpb24oZSl7dGhpcy50aWxlSUQ9bmV3IHQuT3ZlcnNjYWxl ZFRpbGVJRChlLnRpbGVJRC5vdmVyc2NhbGVkWixlLnRpbGVJRC53cmFwLGUudGlsZUlELmNh bm9uaWNhbC56LGUudGlsZUlELmNhbm9uaWNhbC54LGUudGlsZUlELmNhbm9uaWNhbC55KSx0 aGlzLnVpZD1lLnVpZCx0aGlzLnpvb209ZS56b29tLHRoaXMucGl4ZWxSYXRpbz1lLnBpeGVs UmF0aW8sdGhpcy50aWxlU2l6ZT1lLnRpbGVTaXplLHRoaXMuc291cmNlPWUuc291cmNlLHRo aXMub3ZlcnNjYWxpbmc9dGhpcy50aWxlSUQub3ZlcnNjYWxlRmFjdG9yKCksdGhpcy5zaG93 Q29sbGlzaW9uQm94ZXM9ZS5zaG93Q29sbGlzaW9uQm94ZXMsdGhpcy5jb2xsZWN0UmVzb3Vy Y2VUaW1pbmc9ISFlLmNvbGxlY3RSZXNvdXJjZVRpbWluZyx0aGlzLnJldHVybkRlcGVuZGVu Y2llcz0hIWUucmV0dXJuRGVwZW5kZW5jaWVzLHRoaXMucHJvbW90ZUlkPWUucHJvbW90ZUlk fTtmdW5jdGlvbiBvKGUscixuKXtmb3IodmFyIGk9bmV3IHQuRXZhbHVhdGlvblBhcmFtZXRl cnMociksYT0wLG89ZTthPG8ubGVuZ3RoO2ErPTEpe29bYV0ucmVjYWxjdWxhdGUoaSxuKX19 ZnVuY3Rpb24gcyhlLHIpe3ZhciBuPXQuZ2V0QXJyYXlCdWZmZXIoZS5yZXF1ZXN0LChmdW5j dGlvbihlLG4saSxhKXtlP3IoZSk6biYmcihudWxsLHt2ZWN0b3JUaWxlOm5ldyB0LnZlY3Rv clRpbGUuVmVjdG9yVGlsZShuZXcgdC5wYmYobikpLHJhd0RhdGE6bixjYWNoZUNvbnRyb2w6 aSxleHBpcmVzOmF9KX0pKTtyZXR1cm4gZnVuY3Rpb24oKXtuLmNhbmNlbCgpLHIoKX19YS5w cm90b3R5cGUucGFyc2U9ZnVuY3Rpb24oZSxyLG4sYSxzKXt2YXIgbD10aGlzO3RoaXMuc3Rh dHVzPSJwYXJzaW5nIix0aGlzLmRhdGE9ZSx0aGlzLmNvbGxpc2lvbkJveEFycmF5PW5ldyB0 LkNvbGxpc2lvbkJveEFycmF5O3ZhciBjPW5ldyB0LkRpY3Rpb25hcnlDb2RlcihPYmplY3Qu a2V5cyhlLmxheWVycykuc29ydCgpKSx1PW5ldyB0LkZlYXR1cmVJbmRleCh0aGlzLnRpbGVJ RCx0aGlzLnByb21vdGVJZCk7dS5idWNrZXRMYXllcklEcz1bXTt2YXIgZixoLHAsZCxtPXt9 LGc9e2ZlYXR1cmVJbmRleDp1LGljb25EZXBlbmRlbmNpZXM6e30scGF0dGVybkRlcGVuZGVu Y2llczp7fSxnbHlwaERlcGVuZGVuY2llczp7fSxhdmFpbGFibGVJbWFnZXM6bn0sdj1yLmZh bWlsaWVzQnlTb3VyY2VbdGhpcy5zb3VyY2VdO2Zvcih2YXIgeSBpbiB2KXt2YXIgeD1lLmxh eWVyc1t5XTtpZih4KXsxPT09eC52ZXJzaW9uJiZ0Lndhcm5PbmNlKCdWZWN0b3IgdGlsZSBz b3VyY2UgIicrdGhpcy5zb3VyY2UrJyIgbGF5ZXIgIicreSsnIiBkb2VzIG5vdCB1c2UgdmVj dG9yIHRpbGUgc3BlYyB2MiBhbmQgdGhlcmVmb3JlIG1heSBoYXZlIHNvbWUgcmVuZGVyaW5n IGVycm9ycy4nKTtmb3IodmFyIGI9Yy5lbmNvZGUoeSksXz1bXSx3PTA7dzx4Lmxlbmd0aDt3 Kyspe3ZhciBUPXguZmVhdHVyZSh3KSxrPXUuZ2V0SWQoVCx5KTtfLnB1c2goe2ZlYXR1cmU6 VCxpZDprLGluZGV4Oncsc291cmNlTGF5ZXJJbmRleDpifSl9Zm9yKHZhciBBPTAsTT12W3ld O0E8TS5sZW5ndGg7QSs9MSl7dmFyIFM9TVtBXSxFPVNbMF07aWYoIShFLm1pbnpvb20mJnRo aXMuem9vbTxNYXRoLmZsb29yKEUubWluem9vbSkpKWlmKCEoRS5tYXh6b29tJiZ0aGlzLnpv b20+PUUubWF4em9vbSkpaWYoIm5vbmUiIT09RS52aXNpYmlsaXR5KW8oUyx0aGlzLnpvb20s biksKG1bRS5pZF09RS5jcmVhdGVCdWNrZXQoe2luZGV4OnUuYnVja2V0TGF5ZXJJRHMubGVu Z3RoLGxheWVyczpTLHpvb206dGhpcy56b29tLHBpeGVsUmF0aW86dGhpcy5waXhlbFJhdGlv LG92ZXJzY2FsaW5nOnRoaXMub3ZlcnNjYWxpbmcsY29sbGlzaW9uQm94QXJyYXk6dGhpcy5j b2xsaXNpb25Cb3hBcnJheSxzb3VyY2VMYXllckluZGV4OmIsc291cmNlSUQ6dGhpcy5zb3Vy Y2V9KSkucG9wdWxhdGUoXyxnLHRoaXMudGlsZUlELmNhbm9uaWNhbCksdS5idWNrZXRMYXll cklEcy5wdXNoKFMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZH0pKSl9fX12YXIgTD10 Lm1hcE9iamVjdChnLmdseXBoRGVwZW5kZW5jaWVzLChmdW5jdGlvbih0KXtyZXR1cm4gT2Jq ZWN0LmtleXModCkubWFwKE51bWJlcil9KSk7T2JqZWN0LmtleXMoTCkubGVuZ3RoP2Euc2Vu ZCgiZ2V0R2x5cGhzIix7dWlkOnRoaXMudWlkLHN0YWNrczpMfSwoZnVuY3Rpb24odCxlKXtm fHwoZj10LGg9ZSxJLmNhbGwobCkpfSkpOmg9e307dmFyIEM9T2JqZWN0LmtleXMoZy5pY29u RGVwZW5kZW5jaWVzKTtDLmxlbmd0aD9hLnNlbmQoImdldEltYWdlcyIse2ljb25zOkMsc291 cmNlOnRoaXMuc291cmNlLHRpbGVJRDp0aGlzLnRpbGVJRCx0eXBlOiJpY29ucyJ9LChmdW5j dGlvbih0LGUpe2Z8fChmPXQscD1lLEkuY2FsbChsKSl9KSk6cD17fTt2YXIgUD1PYmplY3Qu a2V5cyhnLnBhdHRlcm5EZXBlbmRlbmNpZXMpO2Z1bmN0aW9uIEkoKXtpZihmKXJldHVybiBz KGYpO2lmKGgmJnAmJmQpe3ZhciBlPW5ldyBpKGgpLHI9bmV3IHQuSW1hZ2VBdGxhcyhwLGQp O2Zvcih2YXIgYSBpbiBtKXt2YXIgbD1tW2FdO2wgaW5zdGFuY2VvZiB0LlN5bWJvbEJ1Y2tl dD8obyhsLmxheWVycyx0aGlzLnpvb20sbiksdC5wZXJmb3JtU3ltYm9sTGF5b3V0KGwsaCxl LnBvc2l0aW9ucyxwLHIuaWNvblBvc2l0aW9ucyx0aGlzLnNob3dDb2xsaXNpb25Cb3hlcyx0 aGlzLnRpbGVJRC5jYW5vbmljYWwpKTpsLmhhc1BhdHRlcm4mJihsIGluc3RhbmNlb2YgdC5M aW5lQnVja2V0fHxsIGluc3RhbmNlb2YgdC5GaWxsQnVja2V0fHxsIGluc3RhbmNlb2YgdC5G aWxsRXh0cnVzaW9uQnVja2V0KSYmKG8obC5sYXllcnMsdGhpcy56b29tLG4pLGwuYWRkRmVh dHVyZXMoZyx0aGlzLnRpbGVJRC5jYW5vbmljYWwsci5wYXR0ZXJuUG9zaXRpb25zKSl9dGhp cy5zdGF0dXM9ImRvbmUiLHMobnVsbCx7YnVja2V0czp0LnZhbHVlcyhtKS5maWx0ZXIoKGZ1 bmN0aW9uKHQpe3JldHVybiF0LmlzRW1wdHkoKX0pKSxmZWF0dXJlSW5kZXg6dSxjb2xsaXNp b25Cb3hBcnJheTp0aGlzLmNvbGxpc2lvbkJveEFycmF5LGdseXBoQXRsYXNJbWFnZTplLmlt YWdlLGltYWdlQXRsYXM6cixnbHlwaE1hcDp0aGlzLnJldHVybkRlcGVuZGVuY2llcz9oOm51 bGwsaWNvbk1hcDp0aGlzLnJldHVybkRlcGVuZGVuY2llcz9wOm51bGwsZ2x5cGhQb3NpdGlv bnM6dGhpcy5yZXR1cm5EZXBlbmRlbmNpZXM/ZS5wb3NpdGlvbnM6bnVsbH0pfX1QLmxlbmd0 aD9hLnNlbmQoImdldEltYWdlcyIse2ljb25zOlAsc291cmNlOnRoaXMuc291cmNlLHRpbGVJ RDp0aGlzLnRpbGVJRCx0eXBlOiJwYXR0ZXJucyJ9LChmdW5jdGlvbih0LGUpe2Z8fChmPXQs ZD1lLEkuY2FsbChsKSl9KSk6ZD17fSxJLmNhbGwodGhpcyl9O3ZhciBsPWZ1bmN0aW9uKHQs ZSxyLG4pe3RoaXMuYWN0b3I9dCx0aGlzLmxheWVySW5kZXg9ZSx0aGlzLmF2YWlsYWJsZUlt YWdlcz1yLHRoaXMubG9hZFZlY3RvckRhdGE9bnx8cyx0aGlzLmxvYWRpbmc9e30sdGhpcy5s b2FkZWQ9e319O2wucHJvdG90eXBlLmxvYWRUaWxlPWZ1bmN0aW9uKGUscil7dmFyIG49dGhp cyxpPWUudWlkO3RoaXMubG9hZGluZ3x8KHRoaXMubG9hZGluZz17fSk7dmFyIG89ISEoZSYm ZS5yZXF1ZXN0JiZlLnJlcXVlc3QuY29sbGVjdFJlc291cmNlVGltaW5nKSYmbmV3IHQuUmVx dWVzdFBlcmZvcm1hbmNlKGUucmVxdWVzdCkscz10aGlzLmxvYWRpbmdbaV09bmV3IGEoZSk7 cy5hYm9ydD10aGlzLmxvYWRWZWN0b3JEYXRhKGUsKGZ1bmN0aW9uKGUsYSl7aWYoZGVsZXRl IG4ubG9hZGluZ1tpXSxlfHwhYSlyZXR1cm4gcy5zdGF0dXM9ImRvbmUiLG4ubG9hZGVkW2ld PXMscihlKTt2YXIgbD1hLnJhd0RhdGEsYz17fTthLmV4cGlyZXMmJihjLmV4cGlyZXM9YS5l eHBpcmVzKSxhLmNhY2hlQ29udHJvbCYmKGMuY2FjaGVDb250cm9sPWEuY2FjaGVDb250cm9s KTt2YXIgdT17fTtpZihvKXt2YXIgZj1vLmZpbmlzaCgpO2YmJih1LnJlc291cmNlVGltaW5n PUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZikpKX1zLnZlY3RvclRpbGU9YS52ZWN0b3JU aWxlLHMucGFyc2UoYS52ZWN0b3JUaWxlLG4ubGF5ZXJJbmRleCxuLmF2YWlsYWJsZUltYWdl cyxuLmFjdG9yLChmdW5jdGlvbihlLG4pe2lmKGV8fCFuKXJldHVybiByKGUpO3IobnVsbCx0 LmV4dGVuZCh7cmF3VGlsZURhdGE6bC5zbGljZSgwKX0sbixjLHUpKX0pKSxuLmxvYWRlZD1u LmxvYWRlZHx8e30sbi5sb2FkZWRbaV09c30pKX0sbC5wcm90b3R5cGUucmVsb2FkVGlsZT1m dW5jdGlvbih0LGUpe3ZhciByPXRoaXMsbj10aGlzLmxvYWRlZCxpPXQudWlkLGE9dGhpcztp ZihuJiZuW2ldKXt2YXIgbz1uW2ldO28uc2hvd0NvbGxpc2lvbkJveGVzPXQuc2hvd0NvbGxp c2lvbkJveGVzO3ZhciBzPWZ1bmN0aW9uKHQsbil7dmFyIGk9by5yZWxvYWRDYWxsYmFjaztp JiYoZGVsZXRlIG8ucmVsb2FkQ2FsbGJhY2ssby5wYXJzZShvLnZlY3RvclRpbGUsYS5sYXll ckluZGV4LHIuYXZhaWxhYmxlSW1hZ2VzLGEuYWN0b3IsaSkpLGUodCxuKX07InBhcnNpbmci PT09by5zdGF0dXM/by5yZWxvYWRDYWxsYmFjaz1zOiJkb25lIj09PW8uc3RhdHVzJiYoby52 ZWN0b3JUaWxlP28ucGFyc2Uoby52ZWN0b3JUaWxlLHRoaXMubGF5ZXJJbmRleCx0aGlzLmF2 YWlsYWJsZUltYWdlcyx0aGlzLmFjdG9yLHMpOnMoKSl9fSxsLnByb3RvdHlwZS5hYm9ydFRp bGU9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmxvYWRpbmcsbj10LnVpZDtyJiZyW25dJiZy W25dLmFib3J0JiYocltuXS5hYm9ydCgpLGRlbGV0ZSByW25dKSxlKCl9LGwucHJvdG90eXBl LnJlbW92ZVRpbGU9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmxvYWRlZCxuPXQudWlkO3Im JnJbbl0mJmRlbGV0ZSByW25dLGUoKX07dmFyIGM9dC53aW5kb3cuSW1hZ2VCaXRtYXAsdT1m dW5jdGlvbigpe3RoaXMubG9hZGVkPXt9fTt1LnByb3RvdHlwZS5sb2FkVGlsZT1mdW5jdGlv bihlLHIpe3ZhciBuPWUudWlkLGk9ZS5lbmNvZGluZyxhPWUucmF3SW1hZ2VEYXRhLG89YyYm YSBpbnN0YW5jZW9mIGM/dGhpcy5nZXRJbWFnZURhdGEoYSk6YSxzPW5ldyB0LkRFTURhdGEo bixvLGkpO3RoaXMubG9hZGVkPXRoaXMubG9hZGVkfHx7fSx0aGlzLmxvYWRlZFtuXT1zLHIo bnVsbCxzKX0sdS5wcm90b3R5cGUuZ2V0SW1hZ2VEYXRhPWZ1bmN0aW9uKGUpe3RoaXMub2Zm c2NyZWVuQ2FudmFzJiZ0aGlzLm9mZnNjcmVlbkNhbnZhc0NvbnRleHR8fCh0aGlzLm9mZnNj cmVlbkNhbnZhcz1uZXcgT2Zmc2NyZWVuQ2FudmFzKGUud2lkdGgsZS5oZWlnaHQpLHRoaXMu b2Zmc2NyZWVuQ2FudmFzQ29udGV4dD10aGlzLm9mZnNjcmVlbkNhbnZhcy5nZXRDb250ZXh0 KCIyZCIpKSx0aGlzLm9mZnNjcmVlbkNhbnZhcy53aWR0aD1lLndpZHRoLHRoaXMub2Zmc2Ny ZWVuQ2FudmFzLmhlaWdodD1lLmhlaWdodCx0aGlzLm9mZnNjcmVlbkNhbnZhc0NvbnRleHQu ZHJhd0ltYWdlKGUsMCwwLGUud2lkdGgsZS5oZWlnaHQpO3ZhciByPXRoaXMub2Zmc2NyZWVu Q2FudmFzQ29udGV4dC5nZXRJbWFnZURhdGEoLTEsLTEsZS53aWR0aCsyLGUuaGVpZ2h0KzIp O3JldHVybiB0aGlzLm9mZnNjcmVlbkNhbnZhc0NvbnRleHQuY2xlYXJSZWN0KDAsMCx0aGlz Lm9mZnNjcmVlbkNhbnZhcy53aWR0aCx0aGlzLm9mZnNjcmVlbkNhbnZhcy5oZWlnaHQpLG5l dyB0LlJHQkFJbWFnZSh7d2lkdGg6ci53aWR0aCxoZWlnaHQ6ci5oZWlnaHR9LHIuZGF0YSl9 LHUucHJvdG90eXBlLnJlbW92ZVRpbGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5sb2FkZWQs cj10LnVpZDtlJiZlW3JdJiZkZWxldGUgZVtyXX07dmFyIGY9ZnVuY3Rpb24gdChlLHIpe3Zh ciBuLGk9ZSYmZS50eXBlO2lmKCJGZWF0dXJlQ29sbGVjdGlvbiI9PT1pKWZvcihuPTA7bjxl LmZlYXR1cmVzLmxlbmd0aDtuKyspdChlLmZlYXR1cmVzW25dLHIpO2Vsc2UgaWYoIkdlb21l dHJ5Q29sbGVjdGlvbiI9PT1pKWZvcihuPTA7bjxlLmdlb21ldHJpZXMubGVuZ3RoO24rKyl0 KGUuZ2VvbWV0cmllc1tuXSxyKTtlbHNlIGlmKCJGZWF0dXJlIj09PWkpdChlLmdlb21ldHJ5 LHIpO2Vsc2UgaWYoIlBvbHlnb24iPT09aSloKGUuY29vcmRpbmF0ZXMscik7ZWxzZSBpZigi TXVsdGlQb2x5Z29uIj09PWkpZm9yKG49MDtuPGUuY29vcmRpbmF0ZXMubGVuZ3RoO24rKylo KGUuY29vcmRpbmF0ZXNbbl0scik7cmV0dXJuIGV9O2Z1bmN0aW9uIGgodCxlKXtpZigwIT09 dC5sZW5ndGgpe3AodFswXSxlKTtmb3IodmFyIHI9MTtyPHQubGVuZ3RoO3IrKylwKHRbcl0s IWUpfX1mdW5jdGlvbiBwKHQsZSl7Zm9yKHZhciByPTAsbj0wLGk9dC5sZW5ndGgsYT1pLTE7 bjxpO2E9bisrKXIrPSh0W25dWzBdLXRbYV1bMF0pKih0W2FdWzFdK3Rbbl1bMV0pO3I+PTAh PSEhZSYmdC5yZXZlcnNlKCl9dmFyIGQ9dC52ZWN0b3JUaWxlLlZlY3RvclRpbGVGZWF0dXJl LnByb3RvdHlwZS50b0dlb0pTT04sbT1mdW5jdGlvbihlKXt0aGlzLl9mZWF0dXJlPWUsdGhp cy5leHRlbnQ9dC5FWFRFTlQsdGhpcy50eXBlPWUudHlwZSx0aGlzLnByb3BlcnRpZXM9ZS50 YWdzLCJpZCJpbiBlJiYhaXNOYU4oZS5pZCkmJih0aGlzLmlkPXBhcnNlSW50KGUuaWQsMTAp KX07bS5wcm90b3R5cGUubG9hZEdlb21ldHJ5PWZ1bmN0aW9uKCl7aWYoMT09PXRoaXMuX2Zl YXR1cmUudHlwZSl7Zm9yKHZhciBlPVtdLHI9MCxuPXRoaXMuX2ZlYXR1cmUuZ2VvbWV0cnk7 cjxuLmxlbmd0aDtyKz0xKXt2YXIgaT1uW3JdO2UucHVzaChbbmV3IHQuUG9pbnQkMShpWzBd LGlbMV0pXSl9cmV0dXJuIGV9Zm9yKHZhciBhPVtdLG89MCxzPXRoaXMuX2ZlYXR1cmUuZ2Vv bWV0cnk7bzxzLmxlbmd0aDtvKz0xKXtmb3IodmFyIGw9W10sYz0wLHU9c1tvXTtjPHUubGVu Z3RoO2MrPTEpe3ZhciBmPXVbY107bC5wdXNoKG5ldyB0LlBvaW50JDEoZlswXSxmWzFdKSl9 YS5wdXNoKGwpfXJldHVybiBhfSxtLnByb3RvdHlwZS50b0dlb0pTT049ZnVuY3Rpb24odCxl LHIpe3JldHVybiBkLmNhbGwodGhpcyx0LGUscil9O3ZhciBnPWZ1bmN0aW9uKGUpe3RoaXMu bGF5ZXJzPXtfZ2VvanNvblRpbGVMYXllcjp0aGlzfSx0aGlzLm5hbWU9Il9nZW9qc29uVGls ZUxheWVyIix0aGlzLmV4dGVudD10LkVYVEVOVCx0aGlzLmxlbmd0aD1lLmxlbmd0aCx0aGlz Ll9mZWF0dXJlcz1lfTtnLnByb3RvdHlwZS5mZWF0dXJlPWZ1bmN0aW9uKHQpe3JldHVybiBu ZXcgbSh0aGlzLl9mZWF0dXJlc1t0XSl9O3ZhciB2PXQudmVjdG9yVGlsZS5WZWN0b3JUaWxl RmVhdHVyZSx5PXg7ZnVuY3Rpb24geCh0LGUpe3RoaXMub3B0aW9ucz1lfHx7fSx0aGlzLmZl YXR1cmVzPXQsdGhpcy5sZW5ndGg9dC5sZW5ndGh9ZnVuY3Rpb24gYih0LGUpe3RoaXMuaWQ9 Im51bWJlciI9PXR5cGVvZiB0LmlkP3QuaWQ6dm9pZCAwLHRoaXMudHlwZT10LnR5cGUsdGhp cy5yYXdHZW9tZXRyeT0xPT09dC50eXBlP1t0Lmdlb21ldHJ5XTp0Lmdlb21ldHJ5LHRoaXMu cHJvcGVydGllcz10LnRhZ3MsdGhpcy5leHRlbnQ9ZXx8NDA5Nn14LnByb3RvdHlwZS5mZWF0 dXJlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgYih0aGlzLmZlYXR1cmVzW3RdLHRoaXMub3B0 aW9ucy5leHRlbnQpfSxiLnByb3RvdHlwZS5sb2FkR2VvbWV0cnk9ZnVuY3Rpb24oKXt2YXIg ZT10aGlzLnJhd0dlb21ldHJ5O3RoaXMuZ2VvbWV0cnk9W107Zm9yKHZhciByPTA7cjxlLmxl bmd0aDtyKyspe2Zvcih2YXIgbj1lW3JdLGk9W10sYT0wO2E8bi5sZW5ndGg7YSsrKWkucHVz aChuZXcgdC5Qb2ludCQxKG5bYV1bMF0sblthXVsxXSkpO3RoaXMuZ2VvbWV0cnkucHVzaChp KX1yZXR1cm4gdGhpcy5nZW9tZXRyeX0sYi5wcm90b3R5cGUuYmJveD1mdW5jdGlvbigpe3Ro aXMuZ2VvbWV0cnl8fHRoaXMubG9hZEdlb21ldHJ5KCk7Zm9yKHZhciB0PXRoaXMuZ2VvbWV0 cnksZT0xLzAscj0tMS8wLG49MS8wLGk9LTEvMCxhPTA7YTx0Lmxlbmd0aDthKyspZm9yKHZh ciBvPXRbYV0scz0wO3M8by5sZW5ndGg7cysrKXt2YXIgbD1vW3NdO2U9TWF0aC5taW4oZSxs LngpLHI9TWF0aC5tYXgocixsLngpLG49TWF0aC5taW4obixsLnkpLGk9TWF0aC5tYXgoaSxs LnkpfXJldHVybltlLG4scixpXX0sYi5wcm90b3R5cGUudG9HZW9KU09OPXYucHJvdG90eXBl LnRvR2VvSlNPTjt2YXIgXz1BLHc9QSxUPWZ1bmN0aW9uKHQsZSl7ZT1lfHx7fTt2YXIgcj17 fTtmb3IodmFyIG4gaW4gdClyW25dPW5ldyB5KHRbbl0uZmVhdHVyZXMsZSkscltuXS5uYW1l PW4scltuXS52ZXJzaW9uPWUudmVyc2lvbixyW25dLmV4dGVudD1lLmV4dGVudDtyZXR1cm4g QSh7bGF5ZXJzOnJ9KX0saz15O2Z1bmN0aW9uIEEoZSl7dmFyIHI9bmV3IHQucGJmO3JldHVy biBmdW5jdGlvbih0LGUpe2Zvcih2YXIgciBpbiB0LmxheWVycyllLndyaXRlTWVzc2FnZSgz LE0sdC5sYXllcnNbcl0pfShlLHIpLHIuZmluaXNoKCl9ZnVuY3Rpb24gTSh0LGUpe3ZhciBy O2Uud3JpdGVWYXJpbnRGaWVsZCgxNSx0LnZlcnNpb258fDEpLGUud3JpdGVTdHJpbmdGaWVs ZCgxLHQubmFtZXx8IiIpLGUud3JpdGVWYXJpbnRGaWVsZCg1LHQuZXh0ZW50fHw0MDk2KTt2 YXIgbj17a2V5czpbXSx2YWx1ZXM6W10sa2V5Y2FjaGU6e30sdmFsdWVjYWNoZTp7fX07Zm9y KHI9MDtyPHQubGVuZ3RoO3IrKyluLmZlYXR1cmU9dC5mZWF0dXJlKHIpLGUud3JpdGVNZXNz YWdlKDIsUyxuKTt2YXIgaT1uLmtleXM7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyllLndyaXRl U3RyaW5nRmllbGQoMyxpW3JdKTt2YXIgYT1uLnZhbHVlcztmb3Iocj0wO3I8YS5sZW5ndGg7 cisrKWUud3JpdGVNZXNzYWdlKDQsSSxhW3JdKX1mdW5jdGlvbiBTKHQsZSl7dmFyIHI9dC5m ZWF0dXJlO3ZvaWQgMCE9PXIuaWQmJmUud3JpdGVWYXJpbnRGaWVsZCgxLHIuaWQpLGUud3Jp dGVNZXNzYWdlKDIsRSx0KSxlLndyaXRlVmFyaW50RmllbGQoMyxyLnR5cGUpLGUud3JpdGVN ZXNzYWdlKDQsUCxyKX1mdW5jdGlvbiBFKHQsZSl7dmFyIHI9dC5mZWF0dXJlLG49dC5rZXlz LGk9dC52YWx1ZXMsYT10LmtleWNhY2hlLG89dC52YWx1ZWNhY2hlO2Zvcih2YXIgcyBpbiBy LnByb3BlcnRpZXMpe3ZhciBsPWFbc107dm9pZCAwPT09bCYmKG4ucHVzaChzKSxsPW4ubGVu Z3RoLTEsYVtzXT1sKSxlLndyaXRlVmFyaW50KGwpO3ZhciBjPXIucHJvcGVydGllc1tzXSx1 PXR5cGVvZiBjOyJzdHJpbmciIT09dSYmImJvb2xlYW4iIT09dSYmIm51bWJlciIhPT11JiYo Yz1KU09OLnN0cmluZ2lmeShjKSk7dmFyIGY9dSsiOiIrYyxoPW9bZl07dm9pZCAwPT09aCYm KGkucHVzaChjKSxoPWkubGVuZ3RoLTEsb1tmXT1oKSxlLndyaXRlVmFyaW50KGgpfX1mdW5j dGlvbiBMKHQsZSl7cmV0dXJuKGU8PDMpKyg3JnQpfWZ1bmN0aW9uIEModCl7cmV0dXJuIHQ8 PDFedD4+MzF9ZnVuY3Rpb24gUCh0LGUpe2Zvcih2YXIgcj10LmxvYWRHZW9tZXRyeSgpLG49 dC50eXBlLGk9MCxhPTAsbz1yLmxlbmd0aCxzPTA7czxvO3MrKyl7dmFyIGw9cltzXSxjPTE7 MT09PW4mJihjPWwubGVuZ3RoKSxlLndyaXRlVmFyaW50KEwoMSxjKSk7Zm9yKHZhciB1PTM9 PT1uP2wubGVuZ3RoLTE6bC5sZW5ndGgsZj0wO2Y8dTtmKyspezE9PT1mJiYxIT09biYmZS53 cml0ZVZhcmludChMKDIsdS0xKSk7dmFyIGg9bFtmXS54LWkscD1sW2ZdLnktYTtlLndyaXRl VmFyaW50KEMoaCkpLGUud3JpdGVWYXJpbnQoQyhwKSksaSs9aCxhKz1wfTM9PT1uJiZlLndy aXRlVmFyaW50KEwoNywxKSl9fWZ1bmN0aW9uIEkodCxlKXt2YXIgcj10eXBlb2YgdDsic3Ry aW5nIj09PXI/ZS53cml0ZVN0cmluZ0ZpZWxkKDEsdCk6ImJvb2xlYW4iPT09cj9lLndyaXRl Qm9vbGVhbkZpZWxkKDcsdCk6Im51bWJlciI9PT1yJiYodCUxIT0wP2Uud3JpdGVEb3VibGVG aWVsZCgzLHQpOnQ8MD9lLndyaXRlU1ZhcmludEZpZWxkKDYsdCk6ZS53cml0ZVZhcmludEZp ZWxkKDUsdCkpfWZ1bmN0aW9uIE8odCxlLHIsbixpLGEpe2lmKCEoaS1uPD1yKSl7dmFyIG89 bitpPj4xOyFmdW5jdGlvbiB0KGUscixuLGksYSxvKXtmb3IoO2E+aTspe2lmKGEtaT42MDAp e3ZhciBzPWEtaSsxLGw9bi1pKzEsYz1NYXRoLmxvZyhzKSx1PS41Kk1hdGguZXhwKDIqYy8z KSxmPS41Kk1hdGguc3FydChjKnUqKHMtdSkvcykqKGwtcy8yPDA/LTE6MSksaD1NYXRoLm1h eChpLE1hdGguZmxvb3Iobi1sKnUvcytmKSkscD1NYXRoLm1pbihhLE1hdGguZmxvb3Iobiso cy1sKSp1L3MrZikpO3QoZSxyLG4saCxwLG8pfXZhciBkPXJbMipuK29dLG09aSxnPWE7Zm9y KHooZSxyLGksbiksclsyKmErb10+ZCYmeihlLHIsaSxhKTttPGc7KXtmb3IoeihlLHIsbSxn KSxtKyssZy0tO3JbMiptK29dPGQ7KW0rKztmb3IoO3JbMipnK29dPmQ7KWctLX1yWzIqaStv XT09PWQ/eihlLHIsaSxnKTooZysrLHooZSxyLGcsYSkpLGc8PW4mJihpPWcrMSksbjw9ZyYm KGE9Zy0xKX19KHQsZSxvLG4saSxhJTIpLE8odCxlLHIsbixvLTEsYSsxKSxPKHQsZSxyLG8r MSxpLGErMSl9fWZ1bmN0aW9uIHoodCxlLHIsbil7RCh0LHIsbiksRChlLDIqciwyKm4pLEQo ZSwyKnIrMSwyKm4rMSl9ZnVuY3Rpb24gRCh0LGUscil7dmFyIG49dFtlXTt0W2VdPXRbcl0s dFtyXT1ufWZ1bmN0aW9uIFIodCxlLHIsbil7dmFyIGk9dC1yLGE9ZS1uO3JldHVybiBpKmkr YSphfV8uZnJvbVZlY3RvclRpbGVKcz13LF8uZnJvbUdlb2pzb25WdD1ULF8uR2VvSlNPTldy YXBwZXI9azt2YXIgRj1mdW5jdGlvbih0KXtyZXR1cm4gdFswXX0sQj1mdW5jdGlvbih0KXty ZXR1cm4gdFsxXX0sTj1mdW5jdGlvbih0LGUscixuLGkpe3ZvaWQgMD09PWUmJihlPUYpLHZv aWQgMD09PXImJihyPUIpLHZvaWQgMD09PW4mJihuPTY0KSx2b2lkIDA9PT1pJiYoaT1GbG9h dDY0QXJyYXkpLHRoaXMubm9kZVNpemU9bix0aGlzLnBvaW50cz10O2Zvcih2YXIgYT10Lmxl bmd0aDw2NTUzNj9VaW50MTZBcnJheTpVaW50MzJBcnJheSxvPXRoaXMuaWRzPW5ldyBhKHQu bGVuZ3RoKSxzPXRoaXMuY29vcmRzPW5ldyBpKDIqdC5sZW5ndGgpLGw9MDtsPHQubGVuZ3Ro O2wrKylvW2xdPWwsc1syKmxdPWUodFtsXSksc1syKmwrMV09cih0W2xdKTtPKG8scyxuLDAs by5sZW5ndGgtMSwwKX07Ti5wcm90b3R5cGUucmFuZ2U9ZnVuY3Rpb24odCxlLHIsbil7cmV0 dXJuIGZ1bmN0aW9uKHQsZSxyLG4saSxhLG8pe2Zvcih2YXIgcyxsLGM9WzAsdC5sZW5ndGgt MSwwXSx1PVtdO2MubGVuZ3RoOyl7dmFyIGY9Yy5wb3AoKSxoPWMucG9wKCkscD1jLnBvcCgp O2lmKGgtcDw9bylmb3IodmFyIGQ9cDtkPD1oO2QrKylzPWVbMipkXSxsPWVbMipkKzFdLHM+ PXImJnM8PWkmJmw+PW4mJmw8PWEmJnUucHVzaCh0W2RdKTtlbHNle3ZhciBtPU1hdGguZmxv b3IoKHAraCkvMik7cz1lWzIqbV0sbD1lWzIqbSsxXSxzPj1yJiZzPD1pJiZsPj1uJiZsPD1h JiZ1LnB1c2godFttXSk7dmFyIGc9KGYrMSklMjsoMD09PWY/cjw9czpuPD1sKSYmKGMucHVz aChwKSxjLnB1c2gobS0xKSxjLnB1c2goZykpLCgwPT09Zj9pPj1zOmE+PWwpJiYoYy5wdXNo KG0rMSksYy5wdXNoKGgpLGMucHVzaChnKSl9fXJldHVybiB1fSh0aGlzLmlkcyx0aGlzLmNv b3Jkcyx0LGUscixuLHRoaXMubm9kZVNpemUpfSxOLnByb3RvdHlwZS53aXRoaW49ZnVuY3Rp b24odCxlLHIpe3JldHVybiBmdW5jdGlvbih0LGUscixuLGksYSl7Zm9yKHZhciBvPVswLHQu bGVuZ3RoLTEsMF0scz1bXSxsPWkqaTtvLmxlbmd0aDspe3ZhciBjPW8ucG9wKCksdT1vLnBv cCgpLGY9by5wb3AoKTtpZih1LWY8PWEpZm9yKHZhciBoPWY7aDw9dTtoKyspUihlWzIqaF0s ZVsyKmgrMV0scixuKTw9bCYmcy5wdXNoKHRbaF0pO2Vsc2V7dmFyIHA9TWF0aC5mbG9vcigo Zit1KS8yKSxkPWVbMipwXSxtPWVbMipwKzFdO1IoZCxtLHIsbik8PWwmJnMucHVzaCh0W3Bd KTt2YXIgZz0oYysxKSUyOygwPT09Yz9yLWk8PWQ6bi1pPD1tKSYmKG8ucHVzaChmKSxvLnB1 c2gocC0xKSxvLnB1c2goZykpLCgwPT09Yz9yK2k+PWQ6bitpPj1tKSYmKG8ucHVzaChwKzEp LG8ucHVzaCh1KSxvLnB1c2goZykpfX1yZXR1cm4gc30odGhpcy5pZHMsdGhpcy5jb29yZHMs dCxlLHIsdGhpcy5ub2RlU2l6ZSl9O3ZhciBqPXttaW5ab29tOjAsbWF4Wm9vbToxNixyYWRp dXM6NDAsZXh0ZW50OjUxMixub2RlU2l6ZTo2NCxsb2c6ITEsZ2VuZXJhdGVJZDohMSxyZWR1 Y2U6bnVsbCxtYXA6ZnVuY3Rpb24odCl7cmV0dXJuIHR9fSxVPWZ1bmN0aW9uKHQpe3RoaXMu b3B0aW9ucz1YKE9iamVjdC5jcmVhdGUoaiksdCksdGhpcy50cmVlcz1uZXcgQXJyYXkodGhp cy5vcHRpb25zLm1heFpvb20rMSl9O2Z1bmN0aW9uIFYodCxlLHIsbixpKXtyZXR1cm57eDp0 LHk6ZSx6b29tOjEvMCxpZDpyLHBhcmVudElkOi0xLG51bVBvaW50czpuLHByb3BlcnRpZXM6 aX19ZnVuY3Rpb24gSCh0LGUpe3ZhciByPXQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsbj1yWzBd LGk9clsxXTtyZXR1cm57eDpZKG4pLHk6VyhpKSx6b29tOjEvMCxpbmRleDplLHBhcmVudElk Oi0xfX1mdW5jdGlvbiBxKHQpe3JldHVybnt0eXBlOiJGZWF0dXJlIixpZDp0LmlkLHByb3Bl cnRpZXM6Ryh0KSxnZW9tZXRyeTp7dHlwZToiUG9pbnQiLGNvb3JkaW5hdGVzOlsobj10Lngs MzYwKihuLS41KSksKGU9dC55LHI9KDE4MC0zNjAqZSkqTWF0aC5QSS8xODAsMzYwKk1hdGgu YXRhbihNYXRoLmV4cChyKSkvTWF0aC5QSS05MCldfX07dmFyIGUscixufWZ1bmN0aW9uIEco dCl7dmFyIGU9dC5udW1Qb2ludHMscj1lPj0xZTQ/TWF0aC5yb3VuZChlLzFlMykrImsiOmU+ PTFlMz9NYXRoLnJvdW5kKGUvMTAwKS8xMCsiayI6ZTtyZXR1cm4gWChYKHt9LHQucHJvcGVy dGllcykse2NsdXN0ZXI6ITAsY2x1c3Rlcl9pZDp0LmlkLHBvaW50X2NvdW50OmUscG9pbnRf Y291bnRfYWJicmV2aWF0ZWQ6cn0pfWZ1bmN0aW9uIFkodCl7cmV0dXJuIHQvMzYwKy41fWZ1 bmN0aW9uIFcodCl7dmFyIGU9TWF0aC5zaW4odCpNYXRoLlBJLzE4MCkscj0uNS0uMjUqTWF0 aC5sb2coKDErZSkvKDEtZSkpL01hdGguUEk7cmV0dXJuIHI8MD8wOnI+MT8xOnJ9ZnVuY3Rp b24gWCh0LGUpe2Zvcih2YXIgciBpbiBlKXRbcl09ZVtyXTtyZXR1cm4gdH1mdW5jdGlvbiBa KHQpe3JldHVybiB0Lnh9ZnVuY3Rpb24gSih0KXtyZXR1cm4gdC55fWZ1bmN0aW9uIEsodCxl LHIsbixpLGEpe3ZhciBvPWktcixzPWEtbjtpZigwIT09b3x8MCE9PXMpe3ZhciBsPSgodC1y KSpvKyhlLW4pKnMpLyhvKm8rcypzKTtsPjE/KHI9aSxuPWEpOmw+MCYmKHIrPW8qbCxuKz1z KmwpfXJldHVybihvPXQtcikqbysocz1lLW4pKnN9ZnVuY3Rpb24gUSh0LGUscixuKXt2YXIg aT17aWQ6dm9pZCAwPT09dD9udWxsOnQsdHlwZTplLGdlb21ldHJ5OnIsdGFnczpuLG1pblg6 MS8wLG1pblk6MS8wLG1heFg6LTEvMCxtYXhZOi0xLzB9O3JldHVybiBmdW5jdGlvbih0KXt2 YXIgZT10Lmdlb21ldHJ5LHI9dC50eXBlO2lmKCJQb2ludCI9PT1yfHwiTXVsdGlQb2ludCI9 PT1yfHwiTGluZVN0cmluZyI9PT1yKSQodCxlKTtlbHNlIGlmKCJQb2x5Z29uIj09PXJ8fCJN dWx0aUxpbmVTdHJpbmciPT09cilmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKykkKHQsZVtu XSk7ZWxzZSBpZigiTXVsdGlQb2x5Z29uIj09PXIpZm9yKG49MDtuPGUubGVuZ3RoO24rKylm b3IodmFyIGk9MDtpPGVbbl0ubGVuZ3RoO2krKykkKHQsZVtuXVtpXSl9KGkpLGl9ZnVuY3Rp b24gJCh0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cis9Myl0Lm1pblg9TWF0aC5taW4o dC5taW5YLGVbcl0pLHQubWluWT1NYXRoLm1pbih0Lm1pblksZVtyKzFdKSx0Lm1heFg9TWF0 aC5tYXgodC5tYXhYLGVbcl0pLHQubWF4WT1NYXRoLm1heCh0Lm1heFksZVtyKzFdKX1mdW5j dGlvbiB0dCh0LGUscixuKXtpZihlLmdlb21ldHJ5KXt2YXIgaT1lLmdlb21ldHJ5LmNvb3Jk aW5hdGVzLGE9ZS5nZW9tZXRyeS50eXBlLG89TWF0aC5wb3coci50b2xlcmFuY2UvKCgxPDxy Lm1heFpvb20pKnIuZXh0ZW50KSwyKSxzPVtdLGw9ZS5pZDtpZihyLnByb21vdGVJZD9sPWUu cHJvcGVydGllc1tyLnByb21vdGVJZF06ci5nZW5lcmF0ZUlkJiYobD1ufHwwKSwiUG9pbnQi PT09YSlldChpLHMpO2Vsc2UgaWYoIk11bHRpUG9pbnQiPT09YSlmb3IodmFyIGM9MDtjPGku bGVuZ3RoO2MrKylldChpW2NdLHMpO2Vsc2UgaWYoIkxpbmVTdHJpbmciPT09YSlydChpLHMs bywhMSk7ZWxzZSBpZigiTXVsdGlMaW5lU3RyaW5nIj09PWEpe2lmKHIubGluZU1ldHJpY3Mp e2ZvcihjPTA7YzxpLmxlbmd0aDtjKyspcz1bXSxydChpW2NdLHMsbywhMSksdC5wdXNoKFEo bCwiTGluZVN0cmluZyIscyxlLnByb3BlcnRpZXMpKTtyZXR1cm59bnQoaSxzLG8sITEpfWVs c2UgaWYoIlBvbHlnb24iPT09YSludChpLHMsbywhMCk7ZWxzZXtpZigiTXVsdGlQb2x5Z29u IiE9PWEpe2lmKCJHZW9tZXRyeUNvbGxlY3Rpb24iPT09YSl7Zm9yKGM9MDtjPGUuZ2VvbWV0 cnkuZ2VvbWV0cmllcy5sZW5ndGg7YysrKXR0KHQse2lkOmwsZ2VvbWV0cnk6ZS5nZW9tZXRy eS5nZW9tZXRyaWVzW2NdLHByb3BlcnRpZXM6ZS5wcm9wZXJ0aWVzfSxyLG4pO3JldHVybn10 aHJvdyBuZXcgRXJyb3IoIklucHV0IGRhdGEgaXMgbm90IGEgdmFsaWQgR2VvSlNPTiBvYmpl Y3QuIil9Zm9yKGM9MDtjPGkubGVuZ3RoO2MrKyl7dmFyIHU9W107bnQoaVtjXSx1LG8sITAp LHMucHVzaCh1KX19dC5wdXNoKFEobCxhLHMsZS5wcm9wZXJ0aWVzKSl9fWZ1bmN0aW9uIGV0 KHQsZSl7ZS5wdXNoKGl0KHRbMF0pKSxlLnB1c2goYXQodFsxXSkpLGUucHVzaCgwKX1mdW5j dGlvbiBydCh0LGUscixuKXtmb3IodmFyIGksYSxvPTAscz0wO3M8dC5sZW5ndGg7cysrKXt2 YXIgbD1pdCh0W3NdWzBdKSxjPWF0KHRbc11bMV0pO2UucHVzaChsKSxlLnB1c2goYyksZS5w dXNoKDApLHM+MCYmKG8rPW4/KGkqYy1sKmEpLzI6TWF0aC5zcXJ0KE1hdGgucG93KGwtaSwy KStNYXRoLnBvdyhjLWEsMikpKSxpPWwsYT1jfXZhciB1PWUubGVuZ3RoLTM7ZVsyXT0xLGZ1 bmN0aW9uIHQoZSxyLG4saSl7Zm9yKHZhciBhLG89aSxzPW4tcj4+MSxsPW4tcixjPWVbcl0s dT1lW3IrMV0sZj1lW25dLGg9ZVtuKzFdLHA9ciszO3A8bjtwKz0zKXt2YXIgZD1LKGVbcF0s ZVtwKzFdLGMsdSxmLGgpO2lmKGQ+bylhPXAsbz1kO2Vsc2UgaWYoZD09PW8pe3ZhciBtPU1h dGguYWJzKHAtcyk7bTxsJiYoYT1wLGw9bSl9fW8+aSYmKGEtcj4zJiZ0KGUscixhLGkpLGVb YSsyXT1vLG4tYT4zJiZ0KGUsYSxuLGkpKX0oZSwwLHUsciksZVt1KzJdPTEsZS5zaXplPU1h dGguYWJzKG8pLGUuc3RhcnQ9MCxlLmVuZD1lLnNpemV9ZnVuY3Rpb24gbnQodCxlLHIsbil7 Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBhPVtdO3J0KHRbaV0sYSxyLG4pLGUu cHVzaChhKX19ZnVuY3Rpb24gaXQodCl7cmV0dXJuIHQvMzYwKy41fWZ1bmN0aW9uIGF0KHQp e3ZhciBlPU1hdGguc2luKHQqTWF0aC5QSS8xODApLHI9LjUtLjI1Kk1hdGgubG9nKCgxK2Up LygxLWUpKS9NYXRoLlBJO3JldHVybiByPDA/MDpyPjE/MTpyfWZ1bmN0aW9uIG90KHQsZSxy LG4saSxhLG8scyl7aWYobi89ZSxhPj0oci89ZSkmJm88bilyZXR1cm4gdDtpZihvPHJ8fGE+ PW4pcmV0dXJuIG51bGw7Zm9yKHZhciBsPVtdLGM9MDtjPHQubGVuZ3RoO2MrKyl7dmFyIHU9 dFtjXSxmPXUuZ2VvbWV0cnksaD11LnR5cGUscD0wPT09aT91Lm1pblg6dS5taW5ZLGQ9MD09 PWk/dS5tYXhYOnUubWF4WTtpZihwPj1yJiZkPG4pbC5wdXNoKHUpO2Vsc2UgaWYoIShkPHJ8 fHA+PW4pKXt2YXIgbT1bXTtpZigiUG9pbnQiPT09aHx8Ik11bHRpUG9pbnQiPT09aClzdChm LG0scixuLGkpO2Vsc2UgaWYoIkxpbmVTdHJpbmciPT09aClsdChmLG0scixuLGksITEscy5s aW5lTWV0cmljcyk7ZWxzZSBpZigiTXVsdGlMaW5lU3RyaW5nIj09PWgpdXQoZixtLHIsbixp LCExKTtlbHNlIGlmKCJQb2x5Z29uIj09PWgpdXQoZixtLHIsbixpLCEwKTtlbHNlIGlmKCJN dWx0aVBvbHlnb24iPT09aClmb3IodmFyIGc9MDtnPGYubGVuZ3RoO2crKyl7dmFyIHY9W107 dXQoZltnXSx2LHIsbixpLCEwKSx2Lmxlbmd0aCYmbS5wdXNoKHYpfWlmKG0ubGVuZ3RoKXtp ZihzLmxpbmVNZXRyaWNzJiYiTGluZVN0cmluZyI9PT1oKXtmb3IoZz0wO2c8bS5sZW5ndGg7 ZysrKWwucHVzaChRKHUuaWQsaCxtW2ddLHUudGFncykpO2NvbnRpbnVlfSJMaW5lU3RyaW5n IiE9PWgmJiJNdWx0aUxpbmVTdHJpbmciIT09aHx8KDE9PT1tLmxlbmd0aD8oaD0iTGluZVN0 cmluZyIsbT1tWzBdKTpoPSJNdWx0aUxpbmVTdHJpbmciKSwiUG9pbnQiIT09aCYmIk11bHRp UG9pbnQiIT09aHx8KGg9Mz09PW0ubGVuZ3RoPyJQb2ludCI6Ik11bHRpUG9pbnQiKSxsLnB1 c2goUSh1LmlkLGgsbSx1LnRhZ3MpKX19fXJldHVybiBsLmxlbmd0aD9sOm51bGx9ZnVuY3Rp b24gc3QodCxlLHIsbixpKXtmb3IodmFyIGE9MDthPHQubGVuZ3RoO2ErPTMpe3ZhciBvPXRb YStpXTtvPj1yJiZvPD1uJiYoZS5wdXNoKHRbYV0pLGUucHVzaCh0W2ErMV0pLGUucHVzaCh0 W2ErMl0pKX19ZnVuY3Rpb24gbHQodCxlLHIsbixpLGEsbyl7Zm9yKHZhciBzLGwsYz1jdCh0 KSx1PTA9PT1pP2h0OnB0LGY9dC5zdGFydCxoPTA7aDx0Lmxlbmd0aC0zO2grPTMpe3ZhciBw PXRbaF0sZD10W2grMV0sbT10W2grMl0sZz10W2grM10sdj10W2grNF0seT0wPT09aT9wOmQs eD0wPT09aT9nOnYsYj0hMTtvJiYocz1NYXRoLnNxcnQoTWF0aC5wb3cocC1nLDIpK01hdGgu cG93KGQtdiwyKSkpLHk8cj94PnImJihsPXUoYyxwLGQsZyx2LHIpLG8mJihjLnN0YXJ0PWYr cypsKSk6eT5uP3g8biYmKGw9dShjLHAsZCxnLHYsbiksbyYmKGMuc3RhcnQ9ZitzKmwpKTpm dChjLHAsZCxtKSx4PHImJnk+PXImJihsPXUoYyxwLGQsZyx2LHIpLGI9ITApLHg+biYmeTw9 biYmKGw9dShjLHAsZCxnLHYsbiksYj0hMCksIWEmJmImJihvJiYoYy5lbmQ9ZitzKmwpLGUu cHVzaChjKSxjPWN0KHQpKSxvJiYoZis9cyl9dmFyIF89dC5sZW5ndGgtMztwPXRbX10sZD10 W18rMV0sbT10W18rMl0sKHk9MD09PWk/cDpkKT49ciYmeTw9biYmZnQoYyxwLGQsbSksXz1j Lmxlbmd0aC0zLGEmJl8+PTMmJihjW19dIT09Y1swXXx8Y1tfKzFdIT09Y1sxXSkmJmZ0KGMs Y1swXSxjWzFdLGNbMl0pLGMubGVuZ3RoJiZlLnB1c2goYyl9ZnVuY3Rpb24gY3QodCl7dmFy IGU9W107cmV0dXJuIGUuc2l6ZT10LnNpemUsZS5zdGFydD10LnN0YXJ0LGUuZW5kPXQuZW5k LGV9ZnVuY3Rpb24gdXQodCxlLHIsbixpLGEpe2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysr KWx0KHRbb10sZSxyLG4saSxhLCExKX1mdW5jdGlvbiBmdCh0LGUscixuKXt0LnB1c2goZSks dC5wdXNoKHIpLHQucHVzaChuKX1mdW5jdGlvbiBodCh0LGUscixuLGksYSl7dmFyIG89KGEt ZSkvKG4tZSk7cmV0dXJuIHQucHVzaChhKSx0LnB1c2gocisoaS1yKSpvKSx0LnB1c2goMSks b31mdW5jdGlvbiBwdCh0LGUscixuLGksYSl7dmFyIG89KGEtcikvKGktcik7cmV0dXJuIHQu cHVzaChlKyhuLWUpKm8pLHQucHVzaChhKSx0LnB1c2goMSksb31mdW5jdGlvbiBkdCh0LGUp e2Zvcih2YXIgcj1bXSxuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpLGE9dFtuXSxvPWEudHlw ZTtpZigiUG9pbnQiPT09b3x8Ik11bHRpUG9pbnQiPT09b3x8IkxpbmVTdHJpbmciPT09bylp PW10KGEuZ2VvbWV0cnksZSk7ZWxzZSBpZigiTXVsdGlMaW5lU3RyaW5nIj09PW98fCJQb2x5 Z29uIj09PW8pe2k9W107Zm9yKHZhciBzPTA7czxhLmdlb21ldHJ5Lmxlbmd0aDtzKyspaS5w dXNoKG10KGEuZ2VvbWV0cnlbc10sZSkpfWVsc2UgaWYoIk11bHRpUG9seWdvbiI9PT1vKWZv cihpPVtdLHM9MDtzPGEuZ2VvbWV0cnkubGVuZ3RoO3MrKyl7Zm9yKHZhciBsPVtdLGM9MDtj PGEuZ2VvbWV0cnlbc10ubGVuZ3RoO2MrKylsLnB1c2gobXQoYS5nZW9tZXRyeVtzXVtjXSxl KSk7aS5wdXNoKGwpfXIucHVzaChRKGEuaWQsbyxpLGEudGFncykpfXJldHVybiByfWZ1bmN0 aW9uIG10KHQsZSl7dmFyIHI9W107ci5zaXplPXQuc2l6ZSx2b2lkIDAhPT10LnN0YXJ0JiYo ci5zdGFydD10LnN0YXJ0LHIuZW5kPXQuZW5kKTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24r PTMpci5wdXNoKHRbbl0rZSx0W24rMV0sdFtuKzJdKTtyZXR1cm4gcn1mdW5jdGlvbiBndCh0 LGUpe2lmKHQudHJhbnNmb3JtZWQpcmV0dXJuIHQ7dmFyIHIsbixpLGE9MTw8dC56LG89dC54 LHM9dC55O2ZvcihyPTA7cjx0LmZlYXR1cmVzLmxlbmd0aDtyKyspe3ZhciBsPXQuZmVhdHVy ZXNbcl0sYz1sLmdlb21ldHJ5LHU9bC50eXBlO2lmKGwuZ2VvbWV0cnk9W10sMT09PXUpZm9y KG49MDtuPGMubGVuZ3RoO24rPTIpbC5nZW9tZXRyeS5wdXNoKHZ0KGNbbl0sY1tuKzFdLGUs YSxvLHMpKTtlbHNlIGZvcihuPTA7bjxjLmxlbmd0aDtuKyspe3ZhciBmPVtdO2ZvcihpPTA7 aTxjW25dLmxlbmd0aDtpKz0yKWYucHVzaCh2dChjW25dW2ldLGNbbl1baSsxXSxlLGEsbyxz KSk7bC5nZW9tZXRyeS5wdXNoKGYpfX1yZXR1cm4gdC50cmFuc2Zvcm1lZD0hMCx0fWZ1bmN0 aW9uIHZ0KHQsZSxyLG4saSxhKXtyZXR1cm5bTWF0aC5yb3VuZChyKih0Km4taSkpLE1hdGgu cm91bmQociooZSpuLWEpKV19ZnVuY3Rpb24geXQodCxlLHIsbixpKXtmb3IodmFyIGE9ZT09 PWkubWF4Wm9vbT8wOmkudG9sZXJhbmNlLygoMTw8ZSkqaS5leHRlbnQpLG89e2ZlYXR1cmVz OltdLG51bVBvaW50czowLG51bVNpbXBsaWZpZWQ6MCxudW1GZWF0dXJlczowLHNvdXJjZTpu dWxsLHg6cix5Om4sejplLHRyYW5zZm9ybWVkOiExLG1pblg6MixtaW5ZOjEsbWF4WDotMSxt YXhZOjB9LHM9MDtzPHQubGVuZ3RoO3MrKyl7by5udW1GZWF0dXJlcysrLHh0KG8sdFtzXSxh LGkpO3ZhciBsPXRbc10ubWluWCxjPXRbc10ubWluWSx1PXRbc10ubWF4WCxmPXRbc10ubWF4 WTtsPG8ubWluWCYmKG8ubWluWD1sKSxjPG8ubWluWSYmKG8ubWluWT1jKSx1Pm8ubWF4WCYm KG8ubWF4WD11KSxmPm8ubWF4WSYmKG8ubWF4WT1mKX1yZXR1cm4gb31mdW5jdGlvbiB4dCh0 LGUscixuKXt2YXIgaT1lLmdlb21ldHJ5LGE9ZS50eXBlLG89W107aWYoIlBvaW50Ij09PWF8 fCJNdWx0aVBvaW50Ij09PWEpZm9yKHZhciBzPTA7czxpLmxlbmd0aDtzKz0zKW8ucHVzaChp W3NdKSxvLnB1c2goaVtzKzFdKSx0Lm51bVBvaW50cysrLHQubnVtU2ltcGxpZmllZCsrO2Vs c2UgaWYoIkxpbmVTdHJpbmciPT09YSlidChvLGksdCxyLCExLCExKTtlbHNlIGlmKCJNdWx0 aUxpbmVTdHJpbmciPT09YXx8IlBvbHlnb24iPT09YSlmb3Iocz0wO3M8aS5sZW5ndGg7cysr KWJ0KG8saVtzXSx0LHIsIlBvbHlnb24iPT09YSwwPT09cyk7ZWxzZSBpZigiTXVsdGlQb2x5 Z29uIj09PWEpZm9yKHZhciBsPTA7bDxpLmxlbmd0aDtsKyspe3ZhciBjPWlbbF07Zm9yKHM9 MDtzPGMubGVuZ3RoO3MrKylidChvLGNbc10sdCxyLCEwLDA9PT1zKX1pZihvLmxlbmd0aCl7 dmFyIHU9ZS50YWdzfHxudWxsO2lmKCJMaW5lU3RyaW5nIj09PWEmJm4ubGluZU1ldHJpY3Mp e2Zvcih2YXIgZiBpbiB1PXt9LGUudGFncyl1W2ZdPWUudGFnc1tmXTt1Lm1hcGJveF9jbGlw X3N0YXJ0PWkuc3RhcnQvaS5zaXplLHUubWFwYm94X2NsaXBfZW5kPWkuZW5kL2kuc2l6ZX12 YXIgaD17Z2VvbWV0cnk6byx0eXBlOiJQb2x5Z29uIj09PWF8fCJNdWx0aVBvbHlnb24iPT09 YT8zOiJMaW5lU3RyaW5nIj09PWF8fCJNdWx0aUxpbmVTdHJpbmciPT09YT8yOjEsdGFnczp1 fTtudWxsIT09ZS5pZCYmKGguaWQ9ZS5pZCksdC5mZWF0dXJlcy5wdXNoKGgpfX1mdW5jdGlv biBidCh0LGUscixuLGksYSl7dmFyIG89bipuO2lmKG4+MCYmZS5zaXplPChpP286bikpci5u dW1Qb2ludHMrPWUubGVuZ3RoLzM7ZWxzZXtmb3IodmFyIHM9W10sbD0wO2w8ZS5sZW5ndGg7 bCs9MykoMD09PW58fGVbbCsyXT5vKSYmKHIubnVtU2ltcGxpZmllZCsrLHMucHVzaChlW2xd KSxzLnB1c2goZVtsKzFdKSksci5udW1Qb2ludHMrKztpJiZmdW5jdGlvbih0LGUpe2Zvcih2 YXIgcj0wLG49MCxpPXQubGVuZ3RoLGE9aS0yO248aTthPW4sbis9MilyKz0odFtuXS10W2Fd KSoodFtuKzFdK3RbYSsxXSk7aWYocj4wPT09ZSlmb3Iobj0wLGk9dC5sZW5ndGg7bjxpLzI7 bis9Mil7dmFyIG89dFtuXSxzPXRbbisxXTt0W25dPXRbaS0yLW5dLHRbbisxXT10W2ktMS1u XSx0W2ktMi1uXT1vLHRbaS0xLW5dPXN9fShzLGEpLHQucHVzaChzKX19ZnVuY3Rpb24gX3Qo dCxlKXt2YXIgcj0oZT10aGlzLm9wdGlvbnM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHIgaW4g ZSl0W3JdPWVbcl07cmV0dXJuIHR9KE9iamVjdC5jcmVhdGUodGhpcy5vcHRpb25zKSxlKSku ZGVidWc7aWYociYmY29uc29sZS50aW1lKCJwcmVwcm9jZXNzIGRhdGEiKSxlLm1heFpvb208 MHx8ZS5tYXhab29tPjI0KXRocm93IG5ldyBFcnJvcigibWF4Wm9vbSBzaG91bGQgYmUgaW4g dGhlIDAtMjQgcmFuZ2UiKTtpZihlLnByb21vdGVJZCYmZS5nZW5lcmF0ZUlkKXRocm93IG5l dyBFcnJvcigicHJvbW90ZUlkIGFuZCBnZW5lcmF0ZUlkIGNhbm5vdCBiZSB1c2VkIHRvZ2V0 aGVyLiIpO3ZhciBuPWZ1bmN0aW9uKHQsZSl7dmFyIHI9W107aWYoIkZlYXR1cmVDb2xsZWN0 aW9uIj09PXQudHlwZSlmb3IodmFyIG49MDtuPHQuZmVhdHVyZXMubGVuZ3RoO24rKyl0dChy LHQuZmVhdHVyZXNbbl0sZSxuKTtlbHNlIkZlYXR1cmUiPT09dC50eXBlP3R0KHIsdCxlKTp0 dChyLHtnZW9tZXRyeTp0fSxlKTtyZXR1cm4gcn0odCxlKTt0aGlzLnRpbGVzPXt9LHRoaXMu dGlsZUNvb3Jkcz1bXSxyJiYoY29uc29sZS50aW1lRW5kKCJwcmVwcm9jZXNzIGRhdGEiKSxj b25zb2xlLmxvZygiaW5kZXg6IG1heFpvb206ICVkLCBtYXhQb2ludHM6ICVkIixlLmluZGV4 TWF4Wm9vbSxlLmluZGV4TWF4UG9pbnRzKSxjb25zb2xlLnRpbWUoImdlbmVyYXRlIHRpbGVz IiksdGhpcy5zdGF0cz17fSx0aGlzLnRvdGFsPTApLChuPWZ1bmN0aW9uKHQsZSl7dmFyIHI9 ZS5idWZmZXIvZS5leHRlbnQsbj10LGk9b3QodCwxLC0xLXIsciwwLC0xLDIsZSksYT1vdCh0 LDEsMS1yLDIrciwwLC0xLDIsZSk7cmV0dXJuKGl8fGEpJiYobj1vdCh0LDEsLXIsMStyLDAs LTEsMixlKXx8W10saSYmKG49ZHQoaSwxKS5jb25jYXQobikpLGEmJihuPW4uY29uY2F0KGR0 KGEsLTEpKSkpLG59KG4sZSkpLmxlbmd0aCYmdGhpcy5zcGxpdFRpbGUobiwwLDAsMCksciYm KG4ubGVuZ3RoJiZjb25zb2xlLmxvZygiZmVhdHVyZXM6ICVkLCBwb2ludHM6ICVkIix0aGlz LnRpbGVzWzBdLm51bUZlYXR1cmVzLHRoaXMudGlsZXNbMF0ubnVtUG9pbnRzKSxjb25zb2xl LnRpbWVFbmQoImdlbmVyYXRlIHRpbGVzIiksY29uc29sZS5sb2coInRpbGVzIGdlbmVyYXRl ZDoiLHRoaXMudG90YWwsSlNPTi5zdHJpbmdpZnkodGhpcy5zdGF0cykpKX1mdW5jdGlvbiB3 dCh0LGUscil7cmV0dXJuIDMyKigoMTw8dCkqcitlKSt0fWZ1bmN0aW9uIFR0KHQsZSl7dmFy IHI9dC50aWxlSUQuY2Fub25pY2FsO2lmKCF0aGlzLl9nZW9KU09OSW5kZXgpcmV0dXJuIGUo bnVsbCxudWxsKTt2YXIgbj10aGlzLl9nZW9KU09OSW5kZXguZ2V0VGlsZShyLnosci54LHIu eSk7aWYoIW4pcmV0dXJuIGUobnVsbCxudWxsKTt2YXIgaT1uZXcgZyhuLmZlYXR1cmVzKSxh PV8oaSk7MD09PWEuYnl0ZU9mZnNldCYmYS5ieXRlTGVuZ3RoPT09YS5idWZmZXIuYnl0ZUxl bmd0aHx8KGE9bmV3IFVpbnQ4QXJyYXkoYSkpLGUobnVsbCx7dmVjdG9yVGlsZTppLHJhd0Rh dGE6YS5idWZmZXJ9KX1VLnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMu b3B0aW9ucyxyPWUubG9nLG49ZS5taW5ab29tLGk9ZS5tYXhab29tLGE9ZS5ub2RlU2l6ZTty JiZjb25zb2xlLnRpbWUoInRvdGFsIHRpbWUiKTt2YXIgbz0icHJlcGFyZSAiK3QubGVuZ3Ro KyIgcG9pbnRzIjtyJiZjb25zb2xlLnRpbWUobyksdGhpcy5wb2ludHM9dDtmb3IodmFyIHM9 W10sbD0wO2w8dC5sZW5ndGg7bCsrKXRbbF0uZ2VvbWV0cnkmJnMucHVzaChIKHRbbF0sbCkp O3RoaXMudHJlZXNbaSsxXT1uZXcgTihzLFosSixhLEZsb2F0MzJBcnJheSksciYmY29uc29s ZS50aW1lRW5kKG8pO2Zvcih2YXIgYz1pO2M+PW47Yy0tKXt2YXIgdT0rRGF0ZS5ub3coKTtz PXRoaXMuX2NsdXN0ZXIocyxjKSx0aGlzLnRyZWVzW2NdPW5ldyBOKHMsWixKLGEsRmxvYXQz MkFycmF5KSxyJiZjb25zb2xlLmxvZygieiVkOiAlZCBjbHVzdGVycyBpbiAlZG1zIixjLHMu bGVuZ3RoLCtEYXRlLm5vdygpLXUpfXJldHVybiByJiZjb25zb2xlLnRpbWVFbmQoInRvdGFs IHRpbWUiKSx0aGlzfSxVLnByb3RvdHlwZS5nZXRDbHVzdGVycz1mdW5jdGlvbih0LGUpe3Zh ciByPSgodFswXSsxODApJTM2MCszNjApJTM2MC0xODAsbj1NYXRoLm1heCgtOTAsTWF0aC5t aW4oOTAsdFsxXSkpLGk9MTgwPT09dFsyXT8xODA6KCh0WzJdKzE4MCklMzYwKzM2MCklMzYw LTE4MCxhPU1hdGgubWF4KC05MCxNYXRoLm1pbig5MCx0WzNdKSk7aWYodFsyXS10WzBdPj0z NjApcj0tMTgwLGk9MTgwO2Vsc2UgaWYocj5pKXt2YXIgbz10aGlzLmdldENsdXN0ZXJzKFty LG4sMTgwLGFdLGUpLHM9dGhpcy5nZXRDbHVzdGVycyhbLTE4MCxuLGksYV0sZSk7cmV0dXJu IG8uY29uY2F0KHMpfWZvcih2YXIgbD10aGlzLnRyZWVzW3RoaXMuX2xpbWl0Wm9vbShlKV0s Yz1bXSx1PTAsZj1sLnJhbmdlKFkociksVyhhKSxZKGkpLFcobikpO3U8Zi5sZW5ndGg7dSs9 MSl7dmFyIGg9Zlt1XSxwPWwucG9pbnRzW2hdO2MucHVzaChwLm51bVBvaW50cz9xKHApOnRo aXMucG9pbnRzW3AuaW5kZXhdKX1yZXR1cm4gY30sVS5wcm90b3R5cGUuZ2V0Q2hpbGRyZW49 ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZ2V0T3JpZ2luSWQodCkscj10aGlzLl9nZXRPcmln aW5ab29tKHQpLG49Ik5vIGNsdXN0ZXIgd2l0aCB0aGUgc3BlY2lmaWVkIGlkLiIsaT10aGlz LnRyZWVzW3JdO2lmKCFpKXRocm93IG5ldyBFcnJvcihuKTt2YXIgYT1pLnBvaW50c1tlXTtp ZighYSl0aHJvdyBuZXcgRXJyb3Iobik7Zm9yKHZhciBvPXRoaXMub3B0aW9ucy5yYWRpdXMv KHRoaXMub3B0aW9ucy5leHRlbnQqTWF0aC5wb3coMixyLTEpKSxzPVtdLGw9MCxjPWkud2l0 aGluKGEueCxhLnksbyk7bDxjLmxlbmd0aDtsKz0xKXt2YXIgdT1jW2xdLGY9aS5wb2ludHNb dV07Zi5wYXJlbnRJZD09PXQmJnMucHVzaChmLm51bVBvaW50cz9xKGYpOnRoaXMucG9pbnRz W2YuaW5kZXhdKX1pZigwPT09cy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKG4pO3JldHVybiBz fSxVLnByb3RvdHlwZS5nZXRMZWF2ZXM9ZnVuY3Rpb24odCxlLHIpe2U9ZXx8MTAscj1yfHww O3ZhciBuPVtdO3JldHVybiB0aGlzLl9hcHBlbmRMZWF2ZXMobix0LGUsciwwKSxufSxVLnBy b3RvdHlwZS5nZXRUaWxlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLnRyZWVzW3RoaXMu X2xpbWl0Wm9vbSh0KV0saT1NYXRoLnBvdygyLHQpLGE9dGhpcy5vcHRpb25zLG89YS5leHRl bnQscz1hLnJhZGl1cy9vLGw9KHItcykvaSxjPShyKzErcykvaSx1PXtmZWF0dXJlczpbXX07 cmV0dXJuIHRoaXMuX2FkZFRpbGVGZWF0dXJlcyhuLnJhbmdlKChlLXMpL2ksbCwoZSsxK3Mp L2ksYyksbi5wb2ludHMsZSxyLGksdSksMD09PWUmJnRoaXMuX2FkZFRpbGVGZWF0dXJlcyhu LnJhbmdlKDEtcy9pLGwsMSxjKSxuLnBvaW50cyxpLHIsaSx1KSxlPT09aS0xJiZ0aGlzLl9h ZGRUaWxlRmVhdHVyZXMobi5yYW5nZSgwLGwscy9pLGMpLG4ucG9pbnRzLC0xLHIsaSx1KSx1 LmZlYXR1cmVzLmxlbmd0aD91Om51bGx9LFUucHJvdG90eXBlLmdldENsdXN0ZXJFeHBhbnNp b25ab29tPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl9nZXRPcmlnaW5ab29tKHQpLTE7 ZTw9dGhpcy5vcHRpb25zLm1heFpvb207KXt2YXIgcj10aGlzLmdldENoaWxkcmVuKHQpO2lm KGUrKywxIT09ci5sZW5ndGgpYnJlYWs7dD1yWzBdLnByb3BlcnRpZXMuY2x1c3Rlcl9pZH1y ZXR1cm4gZX0sVS5wcm90b3R5cGUuX2FwcGVuZExlYXZlcz1mdW5jdGlvbih0LGUscixuLGkp e2Zvcih2YXIgYT0wLG89dGhpcy5nZXRDaGlsZHJlbihlKTthPG8ubGVuZ3RoO2ErPTEpe3Zh ciBzPW9bYV0sbD1zLnByb3BlcnRpZXM7aWYobCYmbC5jbHVzdGVyP2krbC5wb2ludF9jb3Vu dDw9bj9pKz1sLnBvaW50X2NvdW50Omk9dGhpcy5fYXBwZW5kTGVhdmVzKHQsbC5jbHVzdGVy X2lkLHIsbixpKTppPG4/aSsrOnQucHVzaChzKSx0Lmxlbmd0aD09PXIpYnJlYWt9cmV0dXJu IGl9LFUucHJvdG90eXBlLl9hZGRUaWxlRmVhdHVyZXM9ZnVuY3Rpb24odCxlLHIsbixpLGEp e2Zvcih2YXIgbz0wLHM9dDtvPHMubGVuZ3RoO28rPTEpe3ZhciBsPWVbc1tvXV0sYz1sLm51 bVBvaW50cyx1PXt0eXBlOjEsZ2VvbWV0cnk6W1tNYXRoLnJvdW5kKHRoaXMub3B0aW9ucy5l eHRlbnQqKGwueCppLXIpKSxNYXRoLnJvdW5kKHRoaXMub3B0aW9ucy5leHRlbnQqKGwueSpp LW4pKV1dLHRhZ3M6Yz9HKGwpOnRoaXMucG9pbnRzW2wuaW5kZXhdLnByb3BlcnRpZXN9LGY9 dm9pZCAwO2M/Zj1sLmlkOnRoaXMub3B0aW9ucy5nZW5lcmF0ZUlkP2Y9bC5pbmRleDp0aGlz LnBvaW50c1tsLmluZGV4XS5pZCYmKGY9dGhpcy5wb2ludHNbbC5pbmRleF0uaWQpLHZvaWQg MCE9PWYmJih1LmlkPWYpLGEuZmVhdHVyZXMucHVzaCh1KX19LFUucHJvdG90eXBlLl9saW1p dFpvb209ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubWF4KHRoaXMub3B0aW9ucy5taW5ab29t LE1hdGgubWluKHQsdGhpcy5vcHRpb25zLm1heFpvb20rMSkpfSxVLnByb3RvdHlwZS5fY2x1 c3Rlcj1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1bXSxuPXRoaXMub3B0aW9ucyxpPW4ucmFk aXVzLGE9bi5leHRlbnQsbz1uLnJlZHVjZSxzPWkvKGEqTWF0aC5wb3coMixlKSksbD0wO2w8 dC5sZW5ndGg7bCsrKXt2YXIgYz10W2xdO2lmKCEoYy56b29tPD1lKSl7Yy56b29tPWU7Zm9y KHZhciB1PXRoaXMudHJlZXNbZSsxXSxmPXUud2l0aGluKGMueCxjLnkscyksaD1jLm51bVBv aW50c3x8MSxwPWMueCpoLGQ9Yy55KmgsbT1vJiZoPjE/dGhpcy5fbWFwKGMsITApOm51bGws Zz0obDw8NSkrKGUrMSkrdGhpcy5wb2ludHMubGVuZ3RoLHY9MCx5PWY7djx5Lmxlbmd0aDt2 Kz0xKXt2YXIgeD15W3ZdLGI9dS5wb2ludHNbeF07aWYoIShiLnpvb208PWUpKXtiLnpvb209 ZTt2YXIgXz1iLm51bVBvaW50c3x8MTtwKz1iLngqXyxkKz1iLnkqXyxoKz1fLGIucGFyZW50 SWQ9ZyxvJiYobXx8KG09dGhpcy5fbWFwKGMsITApKSxvKG0sdGhpcy5fbWFwKGIpKSl9fTE9 PT1oP3IucHVzaChjKTooYy5wYXJlbnRJZD1nLHIucHVzaChWKHAvaCxkL2gsZyxoLG0pKSl9 fXJldHVybiByfSxVLnByb3RvdHlwZS5fZ2V0T3JpZ2luSWQ9ZnVuY3Rpb24odCl7cmV0dXJu IHQtdGhpcy5wb2ludHMubGVuZ3RoPj41fSxVLnByb3RvdHlwZS5fZ2V0T3JpZ2luWm9vbT1m dW5jdGlvbih0KXtyZXR1cm4odC10aGlzLnBvaW50cy5sZW5ndGgpJTMyfSxVLnByb3RvdHlw ZS5fbWFwPWZ1bmN0aW9uKHQsZSl7aWYodC5udW1Qb2ludHMpcmV0dXJuIGU/WCh7fSx0LnBy b3BlcnRpZXMpOnQucHJvcGVydGllczt2YXIgcj10aGlzLnBvaW50c1t0LmluZGV4XS5wcm9w ZXJ0aWVzLG49dGhpcy5vcHRpb25zLm1hcChyKTtyZXR1cm4gZSYmbj09PXI/WCh7fSxuKTpu fSxfdC5wcm90b3R5cGUub3B0aW9ucz17bWF4Wm9vbToxNCxpbmRleE1heFpvb206NSxpbmRl eE1heFBvaW50czoxZTUsdG9sZXJhbmNlOjMsZXh0ZW50OjQwOTYsYnVmZmVyOjY0LGxpbmVN ZXRyaWNzOiExLHByb21vdGVJZDpudWxsLGdlbmVyYXRlSWQ6ITEsZGVidWc6MH0sX3QucHJv dG90eXBlLnNwbGl0VGlsZT1mdW5jdGlvbih0LGUscixuLGksYSxvKXtmb3IodmFyIHM9W3Qs ZSxyLG5dLGw9dGhpcy5vcHRpb25zLGM9bC5kZWJ1ZztzLmxlbmd0aDspe249cy5wb3AoKSxy PXMucG9wKCksZT1zLnBvcCgpLHQ9cy5wb3AoKTt2YXIgdT0xPDxlLGY9d3QoZSxyLG4pLGg9 dGhpcy50aWxlc1tmXTtpZighaCYmKGM+MSYmY29uc29sZS50aW1lKCJjcmVhdGlvbiIpLGg9 dGhpcy50aWxlc1tmXT15dCh0LGUscixuLGwpLHRoaXMudGlsZUNvb3Jkcy5wdXNoKHt6OmUs eDpyLHk6bn0pLGMpKXtjPjEmJihjb25zb2xlLmxvZygidGlsZSB6JWQtJWQtJWQgKGZlYXR1 cmVzOiAlZCwgcG9pbnRzOiAlZCwgc2ltcGxpZmllZDogJWQpIixlLHIsbixoLm51bUZlYXR1 cmVzLGgubnVtUG9pbnRzLGgubnVtU2ltcGxpZmllZCksY29uc29sZS50aW1lRW5kKCJjcmVh dGlvbiIpKTt2YXIgcD0ieiIrZTt0aGlzLnN0YXRzW3BdPSh0aGlzLnN0YXRzW3BdfHwwKSsx LHRoaXMudG90YWwrK31pZihoLnNvdXJjZT10LGkpe2lmKGU9PT1sLm1heFpvb218fGU9PT1p KWNvbnRpbnVlO3ZhciBkPTE8PGktZTtpZihyIT09TWF0aC5mbG9vcihhL2QpfHxuIT09TWF0 aC5mbG9vcihvL2QpKWNvbnRpbnVlfWVsc2UgaWYoZT09PWwuaW5kZXhNYXhab29tfHxoLm51 bVBvaW50czw9bC5pbmRleE1heFBvaW50cyljb250aW51ZTtpZihoLnNvdXJjZT1udWxsLDAh PT10Lmxlbmd0aCl7Yz4xJiZjb25zb2xlLnRpbWUoImNsaXBwaW5nIik7dmFyIG0sZyx2LHks eCxiLF89LjUqbC5idWZmZXIvbC5leHRlbnQsdz0uNS1fLFQ9LjUrXyxrPTErXzttPWc9dj15 PW51bGwseD1vdCh0LHUsci1fLHIrVCwwLGgubWluWCxoLm1heFgsbCksYj1vdCh0LHUscit3 LHIraywwLGgubWluWCxoLm1heFgsbCksdD1udWxsLHgmJihtPW90KHgsdSxuLV8sbitULDEs aC5taW5ZLGgubWF4WSxsKSxnPW90KHgsdSxuK3csbitrLDEsaC5taW5ZLGgubWF4WSxsKSx4 PW51bGwpLGImJih2PW90KGIsdSxuLV8sbitULDEsaC5taW5ZLGgubWF4WSxsKSx5PW90KGIs dSxuK3csbitrLDEsaC5taW5ZLGgubWF4WSxsKSxiPW51bGwpLGM+MSYmY29uc29sZS50aW1l RW5kKCJjbGlwcGluZyIpLHMucHVzaChtfHxbXSxlKzEsMipyLDIqbikscy5wdXNoKGd8fFtd LGUrMSwyKnIsMipuKzEpLHMucHVzaCh2fHxbXSxlKzEsMipyKzEsMipuKSxzLnB1c2goeXx8 W10sZSsxLDIqcisxLDIqbisxKX19fSxfdC5wcm90b3R5cGUuZ2V0VGlsZT1mdW5jdGlvbih0 LGUscil7dmFyIG49dGhpcy5vcHRpb25zLGk9bi5leHRlbnQsYT1uLmRlYnVnO2lmKHQ8MHx8 dD4yNClyZXR1cm4gbnVsbDt2YXIgbz0xPDx0LHM9d3QodCxlPShlJW8rbyklbyxyKTtpZih0 aGlzLnRpbGVzW3NdKXJldHVybiBndCh0aGlzLnRpbGVzW3NdLGkpO2E+MSYmY29uc29sZS5s b2coImRyaWxsaW5nIGRvd24gdG8geiVkLSVkLSVkIix0LGUscik7Zm9yKHZhciBsLGM9dCx1 PWUsZj1yOyFsJiZjPjA7KWMtLSx1PU1hdGguZmxvb3IodS8yKSxmPU1hdGguZmxvb3IoZi8y KSxsPXRoaXMudGlsZXNbd3QoYyx1LGYpXTtyZXR1cm4gbCYmbC5zb3VyY2U/KGE+MSYmY29u c29sZS5sb2coImZvdW5kIHBhcmVudCB0aWxlIHolZC0lZC0lZCIsYyx1LGYpLGE+MSYmY29u c29sZS50aW1lKCJkcmlsbGluZyBkb3duIiksdGhpcy5zcGxpdFRpbGUobC5zb3VyY2UsYyx1 LGYsdCxlLHIpLGE+MSYmY29uc29sZS50aW1lRW5kKCJkcmlsbGluZyBkb3duIiksdGhpcy50 aWxlc1tzXT9ndCh0aGlzLnRpbGVzW3NdLGkpOm51bGwpOm51bGx9O3ZhciBrdD1mdW5jdGlv bihlKXtmdW5jdGlvbiByKHQscixuLGkpe2UuY2FsbCh0aGlzLHQscixuLFR0KSxpJiYodGhp cy5sb2FkR2VvSlNPTj1pKX1yZXR1cm4gZSYmKHIuX19wcm90b19fPWUpLHIucHJvdG90eXBl PU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUpLHIucHJvdG90eXBlLmNvbnN0cnVjdG9y PXIsci5wcm90b3R5cGUubG9hZERhdGE9ZnVuY3Rpb24odCxlKXt0aGlzLl9wZW5kaW5nQ2Fs bGJhY2smJnRoaXMuX3BlbmRpbmdDYWxsYmFjayhudWxsLHthYmFuZG9uZWQ6ITB9KSx0aGlz Ll9wZW5kaW5nQ2FsbGJhY2s9ZSx0aGlzLl9wZW5kaW5nTG9hZERhdGFQYXJhbXM9dCx0aGlz Ll9zdGF0ZSYmIklkbGUiIT09dGhpcy5fc3RhdGU/dGhpcy5fc3RhdGU9Ik5lZWRzTG9hZERh dGEiOih0aGlzLl9zdGF0ZT0iQ29hbGVzY2luZyIsdGhpcy5fbG9hZERhdGEoKSl9LHIucHJv dG90eXBlLl9sb2FkRGF0YT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYodGhpcy5fcGVuZGlu Z0NhbGxiYWNrJiZ0aGlzLl9wZW5kaW5nTG9hZERhdGFQYXJhbXMpe3ZhciByPXRoaXMuX3Bl bmRpbmdDYWxsYmFjayxuPXRoaXMuX3BlbmRpbmdMb2FkRGF0YVBhcmFtcztkZWxldGUgdGhp cy5fcGVuZGluZ0NhbGxiYWNrLGRlbGV0ZSB0aGlzLl9wZW5kaW5nTG9hZERhdGFQYXJhbXM7 dmFyIGk9ISEobiYmbi5yZXF1ZXN0JiZuLnJlcXVlc3QuY29sbGVjdFJlc291cmNlVGltaW5n KSYmbmV3IHQuUmVxdWVzdFBlcmZvcm1hbmNlKG4ucmVxdWVzdCk7dGhpcy5sb2FkR2VvSlNP TihuLChmdW5jdGlvbihhLG8pe2lmKGF8fCFvKXJldHVybiByKGEpO2lmKCJvYmplY3QiIT10 eXBlb2YgbylyZXR1cm4gcihuZXcgRXJyb3IoIklucHV0IGRhdGEgZ2l2ZW4gdG8gJyIrbi5z b3VyY2UrIicgaXMgbm90IGEgdmFsaWQgR2VvSlNPTiBvYmplY3QuIikpO2YobywhMCk7dHJ5 e2UuX2dlb0pTT05JbmRleD1uLmNsdXN0ZXI/bmV3IFUoZnVuY3Rpb24oZSl7dmFyIHI9ZS5z dXBlcmNsdXN0ZXJPcHRpb25zLG49ZS5jbHVzdGVyUHJvcGVydGllcztpZighbnx8IXIpcmV0 dXJuIHI7Zm9yKHZhciBpPXt9LGE9e30sbz17YWNjdW11bGF0ZWQ6bnVsbCx6b29tOjB9LHM9 e3Byb3BlcnRpZXM6bnVsbH0sbD1PYmplY3Qua2V5cyhuKSxjPTAsdT1sO2M8dS5sZW5ndGg7 Yys9MSl7dmFyIGY9dVtjXSxoPW5bZl0scD1oWzBdLGQ9aFsxXSxtPXQuY3JlYXRlRXhwcmVz c2lvbihkKSxnPXQuY3JlYXRlRXhwcmVzc2lvbigic3RyaW5nIj09dHlwZW9mIHA/W3AsWyJh Y2N1bXVsYXRlZCJdLFsiZ2V0IixmXV06cCk7aVtmXT1tLnZhbHVlLGFbZl09Zy52YWx1ZX1y ZXR1cm4gci5tYXA9ZnVuY3Rpb24odCl7cy5wcm9wZXJ0aWVzPXQ7Zm9yKHZhciBlPXt9LHI9 MCxuPWw7cjxuLmxlbmd0aDtyKz0xKXt2YXIgYT1uW3JdO2VbYV09aVthXS5ldmFsdWF0ZShv LHMpfXJldHVybiBlfSxyLnJlZHVjZT1mdW5jdGlvbih0LGUpe3MucHJvcGVydGllcz1lO2Zv cih2YXIgcj0wLG49bDtyPG4ubGVuZ3RoO3IrPTEpe3ZhciBpPW5bcl07by5hY2N1bXVsYXRl ZD10W2ldLHRbaV09YVtpXS5ldmFsdWF0ZShvLHMpfX0scn0obikpLmxvYWQoby5mZWF0dXJl cyk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IF90KHQsZSl9KG8sbi5nZW9qc29uVnRPcHRp b25zKX1jYXRjaChhKXtyZXR1cm4gcihhKX1lLmxvYWRlZD17fTt2YXIgcz17fTtpZihpKXt2 YXIgbD1pLmZpbmlzaCgpO2wmJihzLnJlc291cmNlVGltaW5nPXt9LHMucmVzb3VyY2VUaW1p bmdbbi5zb3VyY2VdPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobCkpKX1yKG51bGwscyl9 KSl9fSxyLnByb3RvdHlwZS5jb2FsZXNjZT1mdW5jdGlvbigpeyJDb2FsZXNjaW5nIj09PXRo aXMuX3N0YXRlP3RoaXMuX3N0YXRlPSJJZGxlIjoiTmVlZHNMb2FkRGF0YSI9PT10aGlzLl9z dGF0ZSYmKHRoaXMuX3N0YXRlPSJDb2FsZXNjaW5nIix0aGlzLl9sb2FkRGF0YSgpKX0sci5w cm90b3R5cGUucmVsb2FkVGlsZT1mdW5jdGlvbih0LHIpe3ZhciBuPXRoaXMubG9hZGVkLGk9 dC51aWQ7cmV0dXJuIG4mJm5baV0/ZS5wcm90b3R5cGUucmVsb2FkVGlsZS5jYWxsKHRoaXMs dCxyKTp0aGlzLmxvYWRUaWxlKHQscil9LHIucHJvdG90eXBlLmxvYWRHZW9KU09OPWZ1bmN0 aW9uKGUscil7aWYoZS5yZXF1ZXN0KXQuZ2V0SlNPTihlLnJlcXVlc3Qscik7ZWxzZXtpZigi c3RyaW5nIiE9dHlwZW9mIGUuZGF0YSlyZXR1cm4gcihuZXcgRXJyb3IoIklucHV0IGRhdGEg Z2l2ZW4gdG8gJyIrZS5zb3VyY2UrIicgaXMgbm90IGEgdmFsaWQgR2VvSlNPTiBvYmplY3Qu IikpO3RyeXtyZXR1cm4gcihudWxsLEpTT04ucGFyc2UoZS5kYXRhKSl9Y2F0Y2godCl7cmV0 dXJuIHIobmV3IEVycm9yKCJJbnB1dCBkYXRhIGdpdmVuIHRvICciK2Uuc291cmNlKyInIGlz IG5vdCBhIHZhbGlkIEdlb0pTT04gb2JqZWN0LiIpKX19fSxyLnByb3RvdHlwZS5yZW1vdmVT b3VyY2U9ZnVuY3Rpb24odCxlKXt0aGlzLl9wZW5kaW5nQ2FsbGJhY2smJnRoaXMuX3BlbmRp bmdDYWxsYmFjayhudWxsLHthYmFuZG9uZWQ6ITB9KSxlKCl9LHIucHJvdG90eXBlLmdldENs dXN0ZXJFeHBhbnNpb25ab29tPWZ1bmN0aW9uKHQsZSl7dHJ5e2UobnVsbCx0aGlzLl9nZW9K U09OSW5kZXguZ2V0Q2x1c3RlckV4cGFuc2lvblpvb20odC5jbHVzdGVySWQpKX1jYXRjaCh0 KXtlKHQpfX0sci5wcm90b3R5cGUuZ2V0Q2x1c3RlckNoaWxkcmVuPWZ1bmN0aW9uKHQsZSl7 dHJ5e2UobnVsbCx0aGlzLl9nZW9KU09OSW5kZXguZ2V0Q2hpbGRyZW4odC5jbHVzdGVySWQp KX1jYXRjaCh0KXtlKHQpfX0sci5wcm90b3R5cGUuZ2V0Q2x1c3RlckxlYXZlcz1mdW5jdGlv bih0LGUpe3RyeXtlKG51bGwsdGhpcy5fZ2VvSlNPTkluZGV4LmdldExlYXZlcyh0LmNsdXN0 ZXJJZCx0LmxpbWl0LHQub2Zmc2V0KSl9Y2F0Y2godCl7ZSh0KX19LHJ9KGwpO3ZhciBBdD1m dW5jdGlvbihlKXt2YXIgcj10aGlzO3RoaXMuc2VsZj1lLHRoaXMuYWN0b3I9bmV3IHQuQWN0 b3IoZSx0aGlzKSx0aGlzLmxheWVySW5kZXhlcz17fSx0aGlzLmF2YWlsYWJsZUltYWdlcz17 fSx0aGlzLndvcmtlclNvdXJjZVR5cGVzPXt2ZWN0b3I6bCxnZW9qc29uOmt0fSx0aGlzLndv cmtlclNvdXJjZXM9e30sdGhpcy5kZW1Xb3JrZXJTb3VyY2VzPXt9LHRoaXMuc2VsZi5yZWdp c3RlcldvcmtlclNvdXJjZT1mdW5jdGlvbih0LGUpe2lmKHIud29ya2VyU291cmNlVHlwZXNb dF0pdGhyb3cgbmV3IEVycm9yKCdXb3JrZXIgc291cmNlIHdpdGggbmFtZSAiJyt0KyciIGFs cmVhZHkgcmVnaXN0ZXJlZC4nKTtyLndvcmtlclNvdXJjZVR5cGVzW3RdPWV9LHRoaXMuc2Vs Zi5yZWdpc3RlclJUTFRleHRQbHVnaW49ZnVuY3Rpb24oZSl7aWYodC5wbHVnaW4uaXNQYXJz ZWQoKSl0aHJvdyBuZXcgRXJyb3IoIlJUTCB0ZXh0IHBsdWdpbiBhbHJlYWR5IHJlZ2lzdGVy ZWQuIik7dC5wbHVnaW4uYXBwbHlBcmFiaWNTaGFwaW5nPWUuYXBwbHlBcmFiaWNTaGFwaW5n LHQucGx1Z2luLnByb2Nlc3NCaWRpcmVjdGlvbmFsVGV4dD1lLnByb2Nlc3NCaWRpcmVjdGlv bmFsVGV4dCx0LnBsdWdpbi5wcm9jZXNzU3R5bGVkQmlkaXJlY3Rpb25hbFRleHQ9ZS5wcm9j ZXNzU3R5bGVkQmlkaXJlY3Rpb25hbFRleHR9fTtyZXR1cm4gQXQucHJvdG90eXBlLnNldFJl ZmVycmVyPWZ1bmN0aW9uKHQsZSl7dGhpcy5yZWZlcnJlcj1lfSxBdC5wcm90b3R5cGUuc2V0 SW1hZ2VzPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG4gaW4gdGhpcy5hdmFpbGFibGVJbWFn ZXNbdF09ZSx0aGlzLndvcmtlclNvdXJjZXNbdF0pe3ZhciBpPXRoaXMud29ya2VyU291cmNl c1t0XVtuXTtmb3IodmFyIGEgaW4gaSlpW2FdLmF2YWlsYWJsZUltYWdlcz1lfXIoKX0sQXQu cHJvdG90eXBlLnNldExheWVycz1mdW5jdGlvbih0LGUscil7dGhpcy5nZXRMYXllckluZGV4 KHQpLnJlcGxhY2UoZSkscigpfSxBdC5wcm90b3R5cGUudXBkYXRlTGF5ZXJzPWZ1bmN0aW9u KHQsZSxyKXt0aGlzLmdldExheWVySW5kZXgodCkudXBkYXRlKGUubGF5ZXJzLGUucmVtb3Zl ZElkcykscigpfSxBdC5wcm90b3R5cGUubG9hZFRpbGU9ZnVuY3Rpb24odCxlLHIpe3RoaXMu Z2V0V29ya2VyU291cmNlKHQsZS50eXBlLGUuc291cmNlKS5sb2FkVGlsZShlLHIpfSxBdC5w cm90b3R5cGUubG9hZERFTVRpbGU9ZnVuY3Rpb24odCxlLHIpe3RoaXMuZ2V0REVNV29ya2Vy U291cmNlKHQsZS5zb3VyY2UpLmxvYWRUaWxlKGUscil9LEF0LnByb3RvdHlwZS5yZWxvYWRU aWxlPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLmdldFdvcmtlclNvdXJjZSh0LGUudHlwZSxlLnNv dXJjZSkucmVsb2FkVGlsZShlLHIpfSxBdC5wcm90b3R5cGUuYWJvcnRUaWxlPWZ1bmN0aW9u KHQsZSxyKXt0aGlzLmdldFdvcmtlclNvdXJjZSh0LGUudHlwZSxlLnNvdXJjZSkuYWJvcnRU aWxlKGUscil9LEF0LnByb3RvdHlwZS5yZW1vdmVUaWxlPWZ1bmN0aW9uKHQsZSxyKXt0aGlz LmdldFdvcmtlclNvdXJjZSh0LGUudHlwZSxlLnNvdXJjZSkucmVtb3ZlVGlsZShlLHIpfSxB dC5wcm90b3R5cGUucmVtb3ZlREVNVGlsZT1mdW5jdGlvbih0LGUpe3RoaXMuZ2V0REVNV29y a2VyU291cmNlKHQsZS5zb3VyY2UpLnJlbW92ZVRpbGUoZSl9LEF0LnByb3RvdHlwZS5yZW1v dmVTb3VyY2U9ZnVuY3Rpb24odCxlLHIpe2lmKHRoaXMud29ya2VyU291cmNlc1t0XSYmdGhp cy53b3JrZXJTb3VyY2VzW3RdW2UudHlwZV0mJnRoaXMud29ya2VyU291cmNlc1t0XVtlLnR5 cGVdW2Uuc291cmNlXSl7dmFyIG49dGhpcy53b3JrZXJTb3VyY2VzW3RdW2UudHlwZV1bZS5z b3VyY2VdO2RlbGV0ZSB0aGlzLndvcmtlclNvdXJjZXNbdF1bZS50eXBlXVtlLnNvdXJjZV0s dm9pZCAwIT09bi5yZW1vdmVTb3VyY2U/bi5yZW1vdmVTb3VyY2UoZSxyKTpyKCl9fSxBdC5w cm90b3R5cGUubG9hZFdvcmtlclNvdXJjZT1mdW5jdGlvbih0LGUscil7dHJ5e3RoaXMuc2Vs Zi5pbXBvcnRTY3JpcHRzKGUudXJsKSxyKCl9Y2F0Y2godCl7cih0LnRvU3RyaW5nKCkpfX0s QXQucHJvdG90eXBlLnN5bmNSVExQbHVnaW5TdGF0ZT1mdW5jdGlvbihlLHIsbil7dHJ5e3Qu cGx1Z2luLnNldFN0YXRlKHIpO3ZhciBpPXQucGx1Z2luLmdldFBsdWdpblVSTCgpO2lmKHQu cGx1Z2luLmlzTG9hZGVkKCkmJiF0LnBsdWdpbi5pc1BhcnNlZCgpJiZudWxsIT1pKXt0aGlz LnNlbGYuaW1wb3J0U2NyaXB0cyhpKTt2YXIgYT10LnBsdWdpbi5pc1BhcnNlZCgpO24oYT92 b2lkIDA6bmV3IEVycm9yKCJSVEwgVGV4dCBQbHVnaW4gZmFpbGVkIHRvIGltcG9ydCBzY3Jp cHRzIGZyb20gIitpKSxhKX19Y2F0Y2godCl7bih0LnRvU3RyaW5nKCkpfX0sQXQucHJvdG90 eXBlLmdldEF2YWlsYWJsZUltYWdlcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmF2YWlsYWJs ZUltYWdlc1t0XTtyZXR1cm4gZXx8KGU9W10pLGV9LEF0LnByb3RvdHlwZS5nZXRMYXllcklu ZGV4PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubGF5ZXJJbmRleGVzW3RdO3JldHVybiBlfHwo ZT10aGlzLmxheWVySW5kZXhlc1t0XT1uZXcgbiksZX0sQXQucHJvdG90eXBlLmdldFdvcmtl clNvdXJjZT1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcztpZih0aGlzLndvcmtlclNvdXJj ZXNbdF18fCh0aGlzLndvcmtlclNvdXJjZXNbdF09e30pLHRoaXMud29ya2VyU291cmNlc1t0 XVtlXXx8KHRoaXMud29ya2VyU291cmNlc1t0XVtlXT17fSksIXRoaXMud29ya2VyU291cmNl c1t0XVtlXVtyXSl7dmFyIGk9e3NlbmQ6ZnVuY3Rpb24oZSxyLGkpe24uYWN0b3Iuc2VuZChl LHIsaSx0KX19O3RoaXMud29ya2VyU291cmNlc1t0XVtlXVtyXT1uZXcgdGhpcy53b3JrZXJT b3VyY2VUeXBlc1tlXShpLHRoaXMuZ2V0TGF5ZXJJbmRleCh0KSx0aGlzLmdldEF2YWlsYWJs ZUltYWdlcyh0KSl9cmV0dXJuIHRoaXMud29ya2VyU291cmNlc1t0XVtlXVtyXX0sQXQucHJv dG90eXBlLmdldERFTVdvcmtlclNvdXJjZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmRl bVdvcmtlclNvdXJjZXNbdF18fCh0aGlzLmRlbVdvcmtlclNvdXJjZXNbdF09e30pLHRoaXMu ZGVtV29ya2VyU291cmNlc1t0XVtlXXx8KHRoaXMuZGVtV29ya2VyU291cmNlc1t0XVtlXT1u ZXcgdSksdGhpcy5kZW1Xb3JrZXJTb3VyY2VzW3RdW2VdfSxBdC5wcm90b3R5cGUuZW5mb3Jj ZUNhY2hlU2l6ZUxpbWl0PWZ1bmN0aW9uKGUscil7dC5lbmZvcmNlQ2FjaGVTaXplTGltaXQo cil9LCJ1bmRlZmluZWQiIT10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnZvaWQgMCE9PXQu d2luZG93JiZ0LndpbmRvdyBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlJiYodC53aW5k b3cud29ya2VyPW5ldyBBdCh0LndpbmRvdykpLEF0fSkpLG4oMCwoZnVuY3Rpb24odCl7dmFy IGU9dC5jcmVhdGVDb21tb25qc01vZHVsZSgoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0KXty ZXR1cm4hcih0KX1mdW5jdGlvbiByKHQpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2Ygd2lu ZG93fHwidW5kZWZpbmVkIj09dHlwZW9mIGRvY3VtZW50PyJub3QgYSBicm93c2VyIjpBcnJh eS5wcm90b3R5cGUmJkFycmF5LnByb3RvdHlwZS5ldmVyeSYmQXJyYXkucHJvdG90eXBlLmZp bHRlciYmQXJyYXkucHJvdG90eXBlLmZvckVhY2gmJkFycmF5LnByb3RvdHlwZS5pbmRleE9m JiZBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YmJkFycmF5LnByb3RvdHlwZS5tYXAmJkFy cmF5LnByb3RvdHlwZS5zb21lJiZBcnJheS5wcm90b3R5cGUucmVkdWNlJiZBcnJheS5wcm90 b3R5cGUucmVkdWNlUmlnaHQmJkFycmF5LmlzQXJyYXk/RnVuY3Rpb24ucHJvdG90eXBlJiZG dW5jdGlvbi5wcm90b3R5cGUuYmluZD9PYmplY3Qua2V5cyYmT2JqZWN0LmNyZWF0ZSYmT2Jq ZWN0LmdldFByb3RvdHlwZU9mJiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyYmT2JqZWN0 LmlzU2VhbGVkJiZPYmplY3QuaXNGcm96ZW4mJk9iamVjdC5pc0V4dGVuc2libGUmJk9iamVj dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3ImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSYmT2Jq ZWN0LmRlZmluZVByb3BlcnRpZXMmJk9iamVjdC5zZWFsJiZPYmplY3QuZnJlZXplJiZPYmpl Y3QucHJldmVudEV4dGVuc2lvbnM/IkpTT04iaW4gd2luZG93JiYicGFyc2UiaW4gSlNPTiYm InN0cmluZ2lmeSJpbiBKU09OP2Z1bmN0aW9uKCl7aWYoISgiV29ya2VyImluIHdpbmRvdyYm IkJsb2IiaW4gd2luZG93JiYiVVJMImluIHdpbmRvdykpcmV0dXJuITE7dmFyIHQsZSxyPW5l dyBCbG9iKFsiIl0se3R5cGU6InRleHQvamF2YXNjcmlwdCJ9KSxuPVVSTC5jcmVhdGVPYmpl Y3RVUkwocik7dHJ5e2U9bmV3IFdvcmtlcihuKSx0PSEwfWNhdGNoKGUpe3Q9ITF9ZSYmZS50 ZXJtaW5hdGUoKTtyZXR1cm4gVVJMLnJldm9rZU9iamVjdFVSTChuKSx0fSgpPyJVaW50OENs YW1wZWRBcnJheSJpbiB3aW5kb3c/QXJyYXlCdWZmZXIuaXNWaWV3P2Z1bmN0aW9uKCl7dmFy IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7dC53aWR0aD10LmhlaWdodD0x O3ZhciBlPXQuZ2V0Q29udGV4dCgiMmQiKTtpZighZSlyZXR1cm4hMTt2YXIgcj1lLmdldElt YWdlRGF0YSgwLDAsMSwxKTtyZXR1cm4gciYmci53aWR0aD09PXQud2lkdGh9KCk/ZnVuY3Rp b24odCl7dm9pZCAwPT09blt0XSYmKG5bdF09ZnVuY3Rpb24odCl7dmFyIHI9ZnVuY3Rpb24o dCl7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksbj1PYmplY3QuY3Jl YXRlKGUud2ViR0xDb250ZXh0QXR0cmlidXRlcyk7cmV0dXJuIG4uZmFpbElmTWFqb3JQZXJm b3JtYW5jZUNhdmVhdD10LHIucHJvYmFibHlTdXBwb3J0c0NvbnRleHQ/ci5wcm9iYWJseVN1 cHBvcnRzQ29udGV4dCgid2ViZ2wiLG4pfHxyLnByb2JhYmx5U3VwcG9ydHNDb250ZXh0KCJl eHBlcmltZW50YWwtd2ViZ2wiLG4pOnIuc3VwcG9ydHNDb250ZXh0P3Iuc3VwcG9ydHNDb250 ZXh0KCJ3ZWJnbCIsbil8fHIuc3VwcG9ydHNDb250ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wi LG4pOnIuZ2V0Q29udGV4dCgid2ViZ2wiLG4pfHxyLmdldENvbnRleHQoImV4cGVyaW1lbnRh bC13ZWJnbCIsbil9KHQpO2lmKCFyKXJldHVybiExO3ZhciBuPXIuY3JlYXRlU2hhZGVyKHIu VkVSVEVYX1NIQURFUik7aWYoIW58fHIuaXNDb250ZXh0TG9zdCgpKXJldHVybiExO3JldHVy biByLnNoYWRlclNvdXJjZShuLCJ2b2lkIG1haW4oKSB7fSIpLHIuY29tcGlsZVNoYWRlcihu KSwhMD09PXIuZ2V0U2hhZGVyUGFyYW1ldGVyKG4sci5DT01QSUxFX1NUQVRVUyl9KHQpKTty ZXR1cm4gblt0XX0odCYmdC5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0KT92b2lkIDA6 Imluc3VmZmljaWVudCBXZWJHTCBzdXBwb3J0IjoiaW5zdWZmaWNpZW50IENhbnZhcy9nZXRJ bWFnZURhdGEgc3VwcG9ydCI6Imluc3VmZmljaWVudCBBcnJheUJ1ZmZlciBzdXBwb3J0Ijoi aW5zdWZmaWNpZW50IFVpbnQ4Q2xhbXBlZEFycmF5IHN1cHBvcnQiOiJpbnN1ZmZpY2llbnQg d29ya2VyIHN1cHBvcnQiOiJpbnN1ZmZpY2llbnQgSlNPTiBzdXBwb3J0IjoiaW5zdWZmaWNp ZW50IE9iamVjdCBzdXBwb3J0IjoiaW5zdWZmaWNpZW50IEZ1bmN0aW9uIHN1cHBvcnQiOiJp bnN1ZmZpY2VudCBBcnJheSBzdXBwb3J0In10LmV4cG9ydHM/dC5leHBvcnRzPWU6d2luZG93 JiYod2luZG93Lm1hcGJveGdsPXdpbmRvdy5tYXBib3hnbHx8e30sd2luZG93Lm1hcGJveGds LnN1cHBvcnRlZD1lLHdpbmRvdy5tYXBib3hnbC5ub3RTdXBwb3J0ZWRSZWFzb249cik7dmFy IG49e307ZS53ZWJHTENvbnRleHRBdHRyaWJ1dGVzPXthbnRpYWxpYXM6ITEsYWxwaGE6ITAs c3RlbmNpbDohMCxkZXB0aDohMH19KSkscj17Y3JlYXRlOmZ1bmN0aW9uKGUscixuKXt2YXIg aT10LndpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpO3JldHVybiB2b2lkIDAhPT1y JiYoaS5jbGFzc05hbWU9ciksbiYmbi5hcHBlbmRDaGlsZChpKSxpfSxjcmVhdGVOUzpmdW5j dGlvbihlLHIpe3JldHVybiB0LndpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZSxy KX19LG49dC53aW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlO2Z1bmN0aW9u IGkodCl7aWYoIW4pcmV0dXJuIHRbMF07Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYo dFtlXWluIG4pcmV0dXJuIHRbZV07cmV0dXJuIHRbMF19dmFyIGEsbz1pKFsidXNlclNlbGVj dCIsIk1velVzZXJTZWxlY3QiLCJXZWJraXRVc2VyU2VsZWN0IiwibXNVc2VyU2VsZWN0Il0p O3IuZGlzYWJsZURyYWc9ZnVuY3Rpb24oKXtuJiZvJiYoYT1uW29dLG5bb109Im5vbmUiKX0s ci5lbmFibGVEcmFnPWZ1bmN0aW9uKCl7biYmbyYmKG5bb109YSl9O3ZhciBzPWkoWyJ0cmFu c2Zvcm0iLCJXZWJraXRUcmFuc2Zvcm0iXSk7ci5zZXRUcmFuc2Zvcm09ZnVuY3Rpb24odCxl KXt0LnN0eWxlW3NdPWV9O3ZhciBsPSExO3RyeXt2YXIgYz1PYmplY3QuZGVmaW5lUHJvcGVy dHkoe30sInBhc3NpdmUiLHtnZXQ6ZnVuY3Rpb24oKXtsPSEwfX0pO3Qud2luZG93LmFkZEV2 ZW50TGlzdGVuZXIoInRlc3QiLGMsYyksdC53aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigi dGVzdCIsYyxjKX1jYXRjaCh0KXtsPSExfXIuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0 LGUscixuKXt2b2lkIDA9PT1uJiYobj17fSksInBhc3NpdmUiaW4gbiYmbD90LmFkZEV2ZW50 TGlzdGVuZXIoZSxyLG4pOnQuYWRkRXZlbnRMaXN0ZW5lcihlLHIsbi5jYXB0dXJlKX0sci5y ZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsZSxyLG4pe3ZvaWQgMD09PW4mJihuPXt9 KSwicGFzc2l2ZSJpbiBuJiZsP3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLHIsbik6dC5yZW1v dmVFdmVudExpc3RlbmVyKGUscixuLmNhcHR1cmUpfTt2YXIgdT1mdW5jdGlvbihlKXtlLnBy ZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSx0LndpbmRvdy5yZW1vdmVFdmVu dExpc3RlbmVyKCJjbGljayIsdSwhMCl9O2Z1bmN0aW9uIGYodCl7dmFyIGU9dC51c2VySW1h Z2U7aWYoZSYmZS5yZW5kZXImJmUucmVuZGVyKCkpcmV0dXJuIHQuZGF0YS5yZXBsYWNlKG5l dyBVaW50OEFycmF5KGUuZGF0YS5idWZmZXIpKSwhMDtyZXR1cm4hMX1yLnN1cHByZXNzQ2xp Y2s9ZnVuY3Rpb24oKXt0LndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdSwhMCks dC53aW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXt0LndpbmRvdy5yZW1vdmVFdmVudExp c3RlbmVyKCJjbGljayIsdSwhMCl9KSwwKX0sci5tb3VzZVBvcz1mdW5jdGlvbihlLHIpe3Zh ciBuPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIG5ldyB0LlBvaW50KHIuY2xp ZW50WC1uLmxlZnQtZS5jbGllbnRMZWZ0LHIuY2xpZW50WS1uLnRvcC1lLmNsaWVudFRvcCl9 LHIudG91Y2hQb3M9ZnVuY3Rpb24oZSxyKXtmb3IodmFyIG49ZS5nZXRCb3VuZGluZ0NsaWVu dFJlY3QoKSxpPVtdLGE9MDthPHIubGVuZ3RoO2ErKylpLnB1c2gobmV3IHQuUG9pbnQoclth XS5jbGllbnRYLW4ubGVmdC1lLmNsaWVudExlZnQsclthXS5jbGllbnRZLW4udG9wLWUuY2xp ZW50VG9wKSk7cmV0dXJuIGl9LHIubW91c2VCdXR0b249ZnVuY3Rpb24oZSl7cmV0dXJuIHZv aWQgMCE9PXQud2luZG93Lkluc3RhbGxUcmlnZ2VyJiYyPT09ZS5idXR0b24mJmUuY3RybEtl eSYmdC53aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtLnRvVXBwZXJDYXNlKCkuaW5kZXhPZigi TUFDIik+PTA/MDplLmJ1dHRvbn0sci5yZW1vdmU9ZnVuY3Rpb24odCl7dC5wYXJlbnROb2Rl JiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCl9O3ZhciBoPWZ1bmN0aW9uKGUpe2Z1bmN0 aW9uIHIoKXtlLmNhbGwodGhpcyksdGhpcy5pbWFnZXM9e30sdGhpcy51cGRhdGVkSW1hZ2Vz PXt9LHRoaXMuY2FsbGJhY2tEaXNwYXRjaGVkVGhpc0ZyYW1lPXt9LHRoaXMubG9hZGVkPSEx LHRoaXMucmVxdWVzdG9ycz1bXSx0aGlzLnBhdHRlcm5zPXt9LHRoaXMuYXRsYXNJbWFnZT1u ZXcgdC5SR0JBSW1hZ2Uoe3dpZHRoOjEsaGVpZ2h0OjF9KSx0aGlzLmRpcnR5PSEwfXJldHVy biBlJiYoci5fX3Byb3RvX189ZSksci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnBy b3RvdHlwZSksci5wcm90b3R5cGUuY29uc3RydWN0b3I9cixyLnByb3RvdHlwZS5pc0xvYWRl ZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxvYWRlZH0sci5wcm90b3R5cGUuc2V0TG9hZGVk PWZ1bmN0aW9uKHQpe2lmKHRoaXMubG9hZGVkIT09dCYmKHRoaXMubG9hZGVkPXQsdCkpe2Zv cih2YXIgZT0wLHI9dGhpcy5yZXF1ZXN0b3JzO2U8ci5sZW5ndGg7ZSs9MSl7dmFyIG49cltl XSxpPW4uaWRzLGE9bi5jYWxsYmFjazt0aGlzLl9ub3RpZnkoaSxhKX10aGlzLnJlcXVlc3Rv cnM9W119fSxyLnByb3RvdHlwZS5nZXRJbWFnZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5p bWFnZXNbdF19LHIucHJvdG90eXBlLmFkZEltYWdlPWZ1bmN0aW9uKHQsZSl7dGhpcy5fdmFs aWRhdGUodCxlKSYmKHRoaXMuaW1hZ2VzW3RdPWUpfSxyLnByb3RvdHlwZS5fdmFsaWRhdGU9 ZnVuY3Rpb24oZSxyKXt2YXIgbj0hMDtyZXR1cm4gdGhpcy5fdmFsaWRhdGVTdHJldGNoKHIu c3RyZXRjaFgsci5kYXRhJiZyLmRhdGEud2lkdGgpfHwodGhpcy5maXJlKG5ldyB0LkVycm9y RXZlbnQobmV3IEVycm9yKCdJbWFnZSAiJytlKyciIGhhcyBpbnZhbGlkICJzdHJldGNoWCIg dmFsdWUnKSkpLG49ITEpLHRoaXMuX3ZhbGlkYXRlU3RyZXRjaChyLnN0cmV0Y2hZLHIuZGF0 YSYmci5kYXRhLmhlaWdodCl8fCh0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJy b3IoJ0ltYWdlICInK2UrJyIgaGFzIGludmFsaWQgInN0cmV0Y2hZIiB2YWx1ZScpKSksbj0h MSksdGhpcy5fdmFsaWRhdGVDb250ZW50KHIuY29udGVudCxyKXx8KHRoaXMuZmlyZShuZXcg dC5FcnJvckV2ZW50KG5ldyBFcnJvcignSW1hZ2UgIicrZSsnIiBoYXMgaW52YWxpZCAiY29u dGVudCIgdmFsdWUnKSkpLG49ITEpLG59LHIucHJvdG90eXBlLl92YWxpZGF0ZVN0cmV0Y2g9 ZnVuY3Rpb24odCxlKXtpZighdClyZXR1cm4hMDtmb3IodmFyIHI9MCxuPTAsaT10O248aS5s ZW5ndGg7bis9MSl7dmFyIGE9aVtuXTtpZihhWzBdPHJ8fGFbMV08YVswXXx8ZTxhWzFdKXJl dHVybiExO3I9YVsxXX1yZXR1cm4hMH0sci5wcm90b3R5cGUuX3ZhbGlkYXRlQ29udGVudD1m dW5jdGlvbih0LGUpe3JldHVybiF0fHw0PT09dC5sZW5ndGgmJighKHRbMF08MHx8ZS5kYXRh LndpZHRoPHRbMF0pJiYoISh0WzFdPDB8fGUuZGF0YS5oZWlnaHQ8dFsxXSkmJighKHRbMl08 MHx8ZS5kYXRhLndpZHRoPHRbMl0pJiYoISh0WzNdPDB8fGUuZGF0YS5oZWlnaHQ8dFszXSkm JighKHRbMl08dFswXSkmJiEodFszXTx0WzFdKSkpKSkpfSxyLnByb3RvdHlwZS51cGRhdGVJ bWFnZT1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuaW1hZ2VzW3RdO2UudmVyc2lvbj1yLnZl cnNpb24rMSx0aGlzLmltYWdlc1t0XT1lLHRoaXMudXBkYXRlZEltYWdlc1t0XT0hMH0sci5w cm90b3R5cGUucmVtb3ZlSW1hZ2U9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pbWFnZXNbdF07 ZGVsZXRlIHRoaXMuaW1hZ2VzW3RdLGRlbGV0ZSB0aGlzLnBhdHRlcm5zW3RdLGUudXNlcklt YWdlJiZlLnVzZXJJbWFnZS5vblJlbW92ZSYmZS51c2VySW1hZ2Uub25SZW1vdmUoKX0sci5w cm90b3R5cGUubGlzdEltYWdlcz1mdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyh0aGlz LmltYWdlcyl9LHIucHJvdG90eXBlLmdldEltYWdlcz1mdW5jdGlvbih0LGUpe3ZhciByPSEw O2lmKCF0aGlzLmlzTG9hZGVkKCkpZm9yKHZhciBuPTAsaT10O248aS5sZW5ndGg7bis9MSl7 dmFyIGE9aVtuXTt0aGlzLmltYWdlc1thXXx8KHI9ITEpfXRoaXMuaXNMb2FkZWQoKXx8cj90 aGlzLl9ub3RpZnkodCxlKTp0aGlzLnJlcXVlc3RvcnMucHVzaCh7aWRzOnQsY2FsbGJhY2s6 ZX0pfSxyLnByb3RvdHlwZS5fbm90aWZ5PWZ1bmN0aW9uKGUscil7Zm9yKHZhciBuPXt9LGk9 MCxhPWU7aTxhLmxlbmd0aDtpKz0xKXt2YXIgbz1hW2ldO3RoaXMuaW1hZ2VzW29dfHx0aGlz LmZpcmUobmV3IHQuRXZlbnQoInN0eWxlaW1hZ2VtaXNzaW5nIix7aWQ6b30pKTt2YXIgcz10 aGlzLmltYWdlc1tvXTtzP25bb109e2RhdGE6cy5kYXRhLmNsb25lKCkscGl4ZWxSYXRpbzpz LnBpeGVsUmF0aW8sc2RmOnMuc2RmLHZlcnNpb246cy52ZXJzaW9uLHN0cmV0Y2hYOnMuc3Ry ZXRjaFgsc3RyZXRjaFk6cy5zdHJldGNoWSxjb250ZW50OnMuY29udGVudCxoYXNSZW5kZXJD YWxsYmFjazpCb29sZWFuKHMudXNlckltYWdlJiZzLnVzZXJJbWFnZS5yZW5kZXIpfTp0Lndh cm5PbmNlKCdJbWFnZSAiJytvKyciIGNvdWxkIG5vdCBiZSBsb2FkZWQuIFBsZWFzZSBtYWtl IHN1cmUgeW91IGhhdmUgYWRkZWQgdGhlIGltYWdlIHdpdGggbWFwLmFkZEltYWdlKCkgb3Ig YSAic3ByaXRlIiBwcm9wZXJ0eSBpbiB5b3VyIHN0eWxlLiBZb3UgY2FuIHByb3ZpZGUgbWlz c2luZyBpbWFnZXMgYnkgbGlzdGVuaW5nIGZvciB0aGUgInN0eWxlaW1hZ2VtaXNzaW5nIiBt YXAgZXZlbnQuJyl9cihudWxsLG4pfSxyLnByb3RvdHlwZS5nZXRQaXhlbFNpemU9ZnVuY3Rp b24oKXt2YXIgdD10aGlzLmF0bGFzSW1hZ2U7cmV0dXJue3dpZHRoOnQud2lkdGgsaGVpZ2h0 OnQuaGVpZ2h0fX0sci5wcm90b3R5cGUuZ2V0UGF0dGVybj1mdW5jdGlvbihlKXt2YXIgcj10 aGlzLnBhdHRlcm5zW2VdLG49dGhpcy5nZXRJbWFnZShlKTtpZighbilyZXR1cm4gbnVsbDtp ZihyJiZyLnBvc2l0aW9uLnZlcnNpb249PT1uLnZlcnNpb24pcmV0dXJuIHIucG9zaXRpb247 aWYocilyLnBvc2l0aW9uLnZlcnNpb249bi52ZXJzaW9uO2Vsc2V7dmFyIGk9e3c6bi5kYXRh LndpZHRoKzIsaDpuLmRhdGEuaGVpZ2h0KzIseDowLHk6MH0sYT1uZXcgdC5JbWFnZVBvc2l0 aW9uKGksbik7dGhpcy5wYXR0ZXJuc1tlXT17YmluOmkscG9zaXRpb246YX19cmV0dXJuIHRo aXMuX3VwZGF0ZVBhdHRlcm5BdGxhcygpLHRoaXMucGF0dGVybnNbZV0ucG9zaXRpb259LHIu cHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oZSl7dmFyIHI9ZS5nbDt0aGlzLmF0bGFzVGV4dHVy ZT90aGlzLmRpcnR5JiYodGhpcy5hdGxhc1RleHR1cmUudXBkYXRlKHRoaXMuYXRsYXNJbWFn ZSksdGhpcy5kaXJ0eT0hMSk6dGhpcy5hdGxhc1RleHR1cmU9bmV3IHQuVGV4dHVyZShlLHRo aXMuYXRsYXNJbWFnZSxyLlJHQkEpLHRoaXMuYXRsYXNUZXh0dXJlLmJpbmQoci5MSU5FQVIs ci5DTEFNUF9UT19FREdFKX0sci5wcm90b3R5cGUuX3VwZGF0ZVBhdHRlcm5BdGxhcz1mdW5j dGlvbigpe3ZhciBlPVtdO2Zvcih2YXIgciBpbiB0aGlzLnBhdHRlcm5zKWUucHVzaCh0aGlz LnBhdHRlcm5zW3JdLmJpbik7dmFyIG49dC5wb3RwYWNrKGUpLGk9bi53LGE9bi5oLG89dGhp cy5hdGxhc0ltYWdlO2Zvcih2YXIgcyBpbiBvLnJlc2l6ZSh7d2lkdGg6aXx8MSxoZWlnaHQ6 YXx8MX0pLHRoaXMucGF0dGVybnMpe3ZhciBsPXRoaXMucGF0dGVybnNbc10uYmluLGM9bC54 KzEsdT1sLnkrMSxmPXRoaXMuaW1hZ2VzW3NdLmRhdGEsaD1mLndpZHRoLHA9Zi5oZWlnaHQ7 dC5SR0JBSW1hZ2UuY29weShmLG8se3g6MCx5OjB9LHt4OmMseTp1fSx7d2lkdGg6aCxoZWln aHQ6cH0pLHQuUkdCQUltYWdlLmNvcHkoZixvLHt4OjAseTpwLTF9LHt4OmMseTp1LTF9LHt3 aWR0aDpoLGhlaWdodDoxfSksdC5SR0JBSW1hZ2UuY29weShmLG8se3g6MCx5OjB9LHt4OmMs eTp1K3B9LHt3aWR0aDpoLGhlaWdodDoxfSksdC5SR0JBSW1hZ2UuY29weShmLG8se3g6aC0x LHk6MH0se3g6Yy0xLHk6dX0se3dpZHRoOjEsaGVpZ2h0OnB9KSx0LlJHQkFJbWFnZS5jb3B5 KGYsbyx7eDowLHk6MH0se3g6YytoLHk6dX0se3dpZHRoOjEsaGVpZ2h0OnB9KX10aGlzLmRp cnR5PSEwfSxyLnByb3RvdHlwZS5iZWdpbkZyYW1lPWZ1bmN0aW9uKCl7dGhpcy5jYWxsYmFj a0Rpc3BhdGNoZWRUaGlzRnJhbWU9e319LHIucHJvdG90eXBlLmRpc3BhdGNoUmVuZGVyQ2Fs bGJhY2tzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLHI9dDtlPHIubGVuZ3RoO2UrPTEpe3Zh ciBuPXJbZV07aWYoIXRoaXMuY2FsbGJhY2tEaXNwYXRjaGVkVGhpc0ZyYW1lW25dKXt0aGlz LmNhbGxiYWNrRGlzcGF0Y2hlZFRoaXNGcmFtZVtuXT0hMDt2YXIgaT10aGlzLmltYWdlc1tu XTtmKGkpJiZ0aGlzLnVwZGF0ZUltYWdlKG4saSl9fX0scn0odC5FdmVudGVkKTt2YXIgcD1n LGQ9ZyxtPTFlMjA7ZnVuY3Rpb24gZyh0LGUscixuLGksYSl7dGhpcy5mb250U2l6ZT10fHwy NCx0aGlzLmJ1ZmZlcj12b2lkIDA9PT1lPzM6ZSx0aGlzLmN1dG9mZj1ufHwuMjUsdGhpcy5m b250RmFtaWx5PWl8fCJzYW5zLXNlcmlmIix0aGlzLmZvbnRXZWlnaHQ9YXx8Im5vcm1hbCIs dGhpcy5yYWRpdXM9cnx8ODt2YXIgbz10aGlzLnNpemU9dGhpcy5mb250U2l6ZSsyKnRoaXMu YnVmZmVyO3RoaXMuY2FudmFzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLHRo aXMuY2FudmFzLndpZHRoPXRoaXMuY2FudmFzLmhlaWdodD1vLHRoaXMuY3R4PXRoaXMuY2Fu dmFzLmdldENvbnRleHQoIjJkIiksdGhpcy5jdHguZm9udD10aGlzLmZvbnRXZWlnaHQrIiAi K3RoaXMuZm9udFNpemUrInB4ICIrdGhpcy5mb250RmFtaWx5LHRoaXMuY3R4LnRleHRCYXNl bGluZT0ibWlkZGxlIix0aGlzLmN0eC5maWxsU3R5bGU9ImJsYWNrIix0aGlzLmdyaWRPdXRl cj1uZXcgRmxvYXQ2NEFycmF5KG8qbyksdGhpcy5ncmlkSW5uZXI9bmV3IEZsb2F0NjRBcnJh eShvKm8pLHRoaXMuZj1uZXcgRmxvYXQ2NEFycmF5KG8pLHRoaXMuZD1uZXcgRmxvYXQ2NEFy cmF5KG8pLHRoaXMuej1uZXcgRmxvYXQ2NEFycmF5KG8rMSksdGhpcy52PW5ldyBJbnQxNkFy cmF5KG8pLHRoaXMubWlkZGxlPU1hdGgucm91bmQoby8yKihuYXZpZ2F0b3IudXNlckFnZW50 LmluZGV4T2YoIkdlY2tvLyIpPj0wPzEuMjoxKSl9ZnVuY3Rpb24gdih0LGUscixuLGksYSxv KXtmb3IodmFyIHM9MDtzPGU7cysrKXtmb3IodmFyIGw9MDtsPHI7bCsrKW5bbF09dFtsKmUr c107Zm9yKHkobixpLGEsbyxyKSxsPTA7bDxyO2wrKyl0W2wqZStzXT1pW2xdfWZvcihsPTA7 bDxyO2wrKyl7Zm9yKHM9MDtzPGU7cysrKW5bc109dFtsKmUrc107Zm9yKHkobixpLGEsbyxl KSxzPTA7czxlO3MrKyl0W2wqZStzXT1NYXRoLnNxcnQoaVtzXSl9fWZ1bmN0aW9uIHkodCxl LHIsbixpKXtyWzBdPTAsblswXT0tbSxuWzFdPSttO2Zvcih2YXIgYT0xLG89MDthPGk7YSsr KXtmb3IodmFyIHM9KHRbYV0rYSphLSh0W3Jbb11dK3Jbb10qcltvXSkpLygyKmEtMipyW29d KTtzPD1uW29dOylvLS0scz0odFthXSthKmEtKHRbcltvXV0rcltvXSpyW29dKSkvKDIqYS0y KnJbb10pO3JbKytvXT1hLG5bb109cyxuW28rMV09K219Zm9yKGE9MCxvPTA7YTxpO2ErKyl7 Zm9yKDtuW28rMV08YTspbysrO2VbYV09KGEtcltvXSkqKGEtcltvXSkrdFtyW29dXX19Zy5w cm90b3R5cGUuZHJhdz1mdW5jdGlvbih0KXt0aGlzLmN0eC5jbGVhclJlY3QoMCwwLHRoaXMu c2l6ZSx0aGlzLnNpemUpLHRoaXMuY3R4LmZpbGxUZXh0KHQsdGhpcy5idWZmZXIsdGhpcy5t aWRkbGUpO2Zvcih2YXIgZT10aGlzLmN0eC5nZXRJbWFnZURhdGEoMCwwLHRoaXMuc2l6ZSx0 aGlzLnNpemUpLHI9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHRoaXMuc2l6ZSp0aGlzLnNpemUp LG49MDtuPHRoaXMuc2l6ZSp0aGlzLnNpemU7bisrKXt2YXIgaT1lLmRhdGFbNCpuKzNdLzI1 NTt0aGlzLmdyaWRPdXRlcltuXT0xPT09aT8wOjA9PT1pP206TWF0aC5wb3coTWF0aC5tYXgo MCwuNS1pKSwyKSx0aGlzLmdyaWRJbm5lcltuXT0xPT09aT9tOjA9PT1pPzA6TWF0aC5wb3co TWF0aC5tYXgoMCxpLS41KSwyKX1mb3Iodih0aGlzLmdyaWRPdXRlcix0aGlzLnNpemUsdGhp cy5zaXplLHRoaXMuZix0aGlzLmQsdGhpcy52LHRoaXMueiksdih0aGlzLmdyaWRJbm5lcix0 aGlzLnNpemUsdGhpcy5zaXplLHRoaXMuZix0aGlzLmQsdGhpcy52LHRoaXMueiksbj0wO248 dGhpcy5zaXplKnRoaXMuc2l6ZTtuKyspe3ZhciBhPXRoaXMuZ3JpZE91dGVyW25dLXRoaXMu Z3JpZElubmVyW25dO3Jbbl09TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCgy NTUtMjU1KihhL3RoaXMucmFkaXVzK3RoaXMuY3V0b2ZmKSkpKX1yZXR1cm4gcn0scC5kZWZh dWx0PWQ7dmFyIHg9ZnVuY3Rpb24odCxlKXt0aGlzLnJlcXVlc3RNYW5hZ2VyPXQsdGhpcy5s b2NhbElkZW9ncmFwaEZvbnRGYW1pbHk9ZSx0aGlzLmVudHJpZXM9e319O3gucHJvdG90eXBl LnNldFVSTD1mdW5jdGlvbih0KXt0aGlzLnVybD10fSx4LnByb3RvdHlwZS5nZXRHbHlwaHM9 ZnVuY3Rpb24oZSxyKXt2YXIgbj10aGlzLGk9W107Zm9yKHZhciBhIGluIGUpZm9yKHZhciBv PTAscz1lW2FdO288cy5sZW5ndGg7bys9MSl7dmFyIGw9c1tvXTtpLnB1c2goe3N0YWNrOmEs aWQ6bH0pfXQuYXN5bmNBbGwoaSwoZnVuY3Rpb24odCxlKXt2YXIgcj10LnN0YWNrLGk9dC5p ZCxhPW4uZW50cmllc1tyXTthfHwoYT1uLmVudHJpZXNbcl09e2dseXBoczp7fSxyZXF1ZXN0 czp7fSxyYW5nZXM6e319KTt2YXIgbz1hLmdseXBoc1tpXTtpZih2b2lkIDA9PT1vKXtpZihv PW4uX3RpbnlTREYoYSxyLGkpKXJldHVybiBhLmdseXBoc1tpXT1vLHZvaWQgZShudWxsLHtz dGFjazpyLGlkOmksZ2x5cGg6b30pO3ZhciBzPU1hdGguZmxvb3IoaS8yNTYpO2lmKDI1Nipz PjY1NTM1KWUobmV3IEVycm9yKCJnbHlwaHMgPiA2NTUzNSBub3Qgc3VwcG9ydGVkIikpO2Vs c2UgaWYoYS5yYW5nZXNbc10pZShudWxsLHtzdGFjazpyLGlkOmksZ2x5cGg6b30pO2Vsc2V7 dmFyIGw9YS5yZXF1ZXN0c1tzXTtsfHwobD1hLnJlcXVlc3RzW3NdPVtdLHgubG9hZEdseXBo UmFuZ2UocixzLG4udXJsLG4ucmVxdWVzdE1hbmFnZXIsKGZ1bmN0aW9uKHQsZSl7aWYoZSl7 Zm9yKHZhciByIGluIGUpbi5fZG9lc0NoYXJTdXBwb3J0TG9jYWxHbHlwaCgrcil8fChhLmds eXBoc1srcl09ZVsrcl0pO2EucmFuZ2VzW3NdPSEwfWZvcih2YXIgaT0wLG89bDtpPG8ubGVu Z3RoO2krPTEpeygwLG9baV0pKHQsZSl9ZGVsZXRlIGEucmVxdWVzdHNbc119KSkpLGwucHVz aCgoZnVuY3Rpb24odCxuKXt0P2UodCk6biYmZShudWxsLHtzdGFjazpyLGlkOmksZ2x5cGg6 bltpXXx8bnVsbH0pfSkpfX1lbHNlIGUobnVsbCx7c3RhY2s6cixpZDppLGdseXBoOm99KX0p LChmdW5jdGlvbih0LGUpe2lmKHQpcih0KTtlbHNlIGlmKGUpe2Zvcih2YXIgbj17fSxpPTAs YT1lO2k8YS5sZW5ndGg7aSs9MSl7dmFyIG89YVtpXSxzPW8uc3RhY2ssbD1vLmlkLGM9by5n bHlwaDsobltzXXx8KG5bc109e30pKVtsXT1jJiZ7aWQ6Yy5pZCxiaXRtYXA6Yy5iaXRtYXAu Y2xvbmUoKSxtZXRyaWNzOmMubWV0cmljc319cihudWxsLG4pfX0pKX0seC5wcm90b3R5cGUu X2RvZXNDaGFyU3VwcG9ydExvY2FsR2x5cGg9ZnVuY3Rpb24oZSl7cmV0dXJuISF0aGlzLmxv Y2FsSWRlb2dyYXBoRm9udEZhbWlseSYmKHQuaXNDaGFyWyJDSksgVW5pZmllZCBJZGVvZ3Jh cGhzIl0oZSl8fHQuaXNDaGFyWyJIYW5ndWwgU3lsbGFibGVzIl0oZSl8fHQuaXNDaGFyLkhp cmFnYW5hKGUpfHx0LmlzQ2hhci5LYXRha2FuYShlKSl9LHgucHJvdG90eXBlLl90aW55U0RG PWZ1bmN0aW9uKGUscixuKXt2YXIgaT10aGlzLmxvY2FsSWRlb2dyYXBoRm9udEZhbWlseTtp ZihpJiZ0aGlzLl9kb2VzQ2hhclN1cHBvcnRMb2NhbEdseXBoKG4pKXt2YXIgYT1lLnRpbnlT REY7aWYoIWEpe3ZhciBvPSI0MDAiOy9ib2xkL2kudGVzdChyKT9vPSI5MDAiOi9tZWRpdW0v aS50ZXN0KHIpP289IjUwMCI6L2xpZ2h0L2kudGVzdChyKSYmKG89IjIwMCIpLGE9ZS50aW55 U0RGPW5ldyB4LlRpbnlTREYoMjQsMyw4LC4yNSxpLG8pfXJldHVybntpZDpuLGJpdG1hcDpu ZXcgdC5BbHBoYUltYWdlKHt3aWR0aDozMCxoZWlnaHQ6MzB9LGEuZHJhdyhTdHJpbmcuZnJv bUNoYXJDb2RlKG4pKSksbWV0cmljczp7d2lkdGg6MjQsaGVpZ2h0OjI0LGxlZnQ6MCx0b3A6 LTgsYWR2YW5jZToyNH19fX0seC5sb2FkR2x5cGhSYW5nZT1mdW5jdGlvbihlLHIsbixpLGEp e3ZhciBvPTI1NipyLHM9bysyNTUsbD1pLnRyYW5zZm9ybVJlcXVlc3QoaS5ub3JtYWxpemVH bHlwaHNVUkwobikucmVwbGFjZSgie2ZvbnRzdGFja30iLGUpLnJlcGxhY2UoIntyYW5nZX0i LG8rIi0iK3MpLHQuUmVzb3VyY2VUeXBlLkdseXBocyk7dC5nZXRBcnJheUJ1ZmZlcihsLChm dW5jdGlvbihlLHIpe2lmKGUpYShlKTtlbHNlIGlmKHIpe2Zvcih2YXIgbj17fSxpPTAsbz10 LnBhcnNlR2x5cGhQQkYocik7aTxvLmxlbmd0aDtpKz0xKXt2YXIgcz1vW2ldO25bcy5pZF09 c31hKG51bGwsbil9fSkpfSx4LlRpbnlTREY9cDt2YXIgYj1mdW5jdGlvbigpe3RoaXMuc3Bl Y2lmaWNhdGlvbj10LnN0eWxlU3BlYy5saWdodC5wb3NpdGlvbn07Yi5wcm90b3R5cGUucG9z c2libHlFdmFsdWF0ZT1mdW5jdGlvbihlLHIpe3JldHVybiB0LnNwaGVyaWNhbFRvQ2FydGVz aWFuKGUuZXhwcmVzc2lvbi5ldmFsdWF0ZShyKSl9LGIucHJvdG90eXBlLmludGVycG9sYXRl PWZ1bmN0aW9uKGUscixuKXtyZXR1cm57eDp0Lm51bWJlcihlLngsci54LG4pLHk6dC5udW1i ZXIoZS55LHIueSxuKSx6OnQubnVtYmVyKGUueixyLnosbil9fTt2YXIgXz1uZXcgdC5Qcm9w ZXJ0aWVzKHthbmNob3I6bmV3IHQuRGF0YUNvbnN0YW50UHJvcGVydHkodC5zdHlsZVNwZWMu bGlnaHQuYW5jaG9yKSxwb3NpdGlvbjpuZXcgYixjb2xvcjpuZXcgdC5EYXRhQ29uc3RhbnRQ cm9wZXJ0eSh0LnN0eWxlU3BlYy5saWdodC5jb2xvciksaW50ZW5zaXR5Om5ldyB0LkRhdGFD b25zdGFudFByb3BlcnR5KHQuc3R5bGVTcGVjLmxpZ2h0LmludGVuc2l0eSl9KSx3PWZ1bmN0 aW9uKGUpe2Z1bmN0aW9uIHIocil7ZS5jYWxsKHRoaXMpLHRoaXMuX3RyYW5zaXRpb25hYmxl PW5ldyB0LlRyYW5zaXRpb25hYmxlKF8pLHRoaXMuc2V0TGlnaHQociksdGhpcy5fdHJhbnNp dGlvbmluZz10aGlzLl90cmFuc2l0aW9uYWJsZS51bnRyYW5zaXRpb25lZCgpfXJldHVybiBl JiYoci5fX3Byb3RvX189ZSksci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3Rv dHlwZSksci5wcm90b3R5cGUuY29uc3RydWN0b3I9cixyLnByb3RvdHlwZS5nZXRMaWdodD1m dW5jdGlvbigpe3JldHVybiB0aGlzLl90cmFuc2l0aW9uYWJsZS5zZXJpYWxpemUoKX0sci5w cm90b3R5cGUuc2V0TGlnaHQ9ZnVuY3Rpb24oZSxyKXtpZih2b2lkIDA9PT1yJiYocj17fSks IXRoaXMuX3ZhbGlkYXRlKHQudmFsaWRhdGVMaWdodCxlLHIpKWZvcih2YXIgbiBpbiBlKXt2 YXIgaT1lW25dO3QuZW5kc1dpdGgobiwiLXRyYW5zaXRpb24iKT90aGlzLl90cmFuc2l0aW9u YWJsZS5zZXRUcmFuc2l0aW9uKG4uc2xpY2UoMCwtIi10cmFuc2l0aW9uIi5sZW5ndGgpLGkp OnRoaXMuX3RyYW5zaXRpb25hYmxlLnNldFZhbHVlKG4saSl9fSxyLnByb3RvdHlwZS51cGRh dGVUcmFuc2l0aW9ucz1mdW5jdGlvbih0KXt0aGlzLl90cmFuc2l0aW9uaW5nPXRoaXMuX3Ry YW5zaXRpb25hYmxlLnRyYW5zaXRpb25lZCh0LHRoaXMuX3RyYW5zaXRpb25pbmcpfSxyLnBy b3RvdHlwZS5oYXNUcmFuc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zaXRp b25pbmcuaGFzVHJhbnNpdGlvbigpfSxyLnByb3RvdHlwZS5yZWNhbGN1bGF0ZT1mdW5jdGlv bih0KXt0aGlzLnByb3BlcnRpZXM9dGhpcy5fdHJhbnNpdGlvbmluZy5wb3NzaWJseUV2YWx1 YXRlKHQpfSxyLnByb3RvdHlwZS5fdmFsaWRhdGU9ZnVuY3Rpb24oZSxyLG4pe3JldHVybigh bnx8ITEhPT1uLnZhbGlkYXRlKSYmdC5lbWl0VmFsaWRhdGlvbkVycm9ycyh0aGlzLGUuY2Fs bCh0LnZhbGlkYXRlU3R5bGUsdC5leHRlbmQoe3ZhbHVlOnIsc3R5bGU6e2dseXBoczohMCxz cHJpdGU6ITB9LHN0eWxlU3BlYzp0LnN0eWxlU3BlY30pKSl9LHJ9KHQuRXZlbnRlZCksVD1m dW5jdGlvbih0LGUpe3RoaXMud2lkdGg9dCx0aGlzLmhlaWdodD1lLHRoaXMubmV4dFJvdz0w LHRoaXMuZGF0YT1uZXcgVWludDhBcnJheSh0aGlzLndpZHRoKnRoaXMuaGVpZ2h0KSx0aGlz LmRhc2hFbnRyeT17fX07VC5wcm90b3R5cGUuZ2V0RGFzaD1mdW5jdGlvbih0LGUpe3ZhciBy PXQuam9pbigiLCIpK1N0cmluZyhlKTtyZXR1cm4gdGhpcy5kYXNoRW50cnlbcl18fCh0aGlz LmRhc2hFbnRyeVtyXT10aGlzLmFkZERhc2godCxlKSksdGhpcy5kYXNoRW50cnlbcl19LFQu cHJvdG90eXBlLmdldERhc2hSYW5nZXM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPVtdLGk9dC5s ZW5ndGglMj09MT8tdFt0Lmxlbmd0aC0xXSpyOjAsYT10WzBdKnIsbz0hMDtuLnB1c2goe2xl ZnQ6aSxyaWdodDphLGlzRGFzaDpvLHplcm9MZW5ndGg6MD09PXRbMF19KTtmb3IodmFyIHM9 dFswXSxsPTE7bDx0Lmxlbmd0aDtsKyspe289IW87dmFyIGM9dFtsXTtpPXMqcixhPShzKz1j KSpyLG4ucHVzaCh7bGVmdDppLHJpZ2h0OmEsaXNEYXNoOm8semVyb0xlbmd0aDowPT09Y30p fXJldHVybiBufSxULnByb3RvdHlwZS5hZGRSb3VuZERhc2g9ZnVuY3Rpb24odCxlLHIpe2Zv cih2YXIgbj1lLzIsaT0tcjtpPD1yO2krKylmb3IodmFyIGE9dGhpcy5uZXh0Um93K3IraSxv PXRoaXMud2lkdGgqYSxzPTAsbD10W3NdLGM9MDtjPHRoaXMud2lkdGg7YysrKXtjL2wucmln aHQ+MSYmKGw9dFsrK3NdKTt2YXIgdT1NYXRoLmFicyhjLWwubGVmdCksZj1NYXRoLmFicyhj LWwucmlnaHQpLGg9TWF0aC5taW4odSxmKSxwPXZvaWQgMCxkPWkvcioobisxKTtpZihsLmlz RGFzaCl7dmFyIG09bi1NYXRoLmFicyhkKTtwPU1hdGguc3FydChoKmgrbSptKX1lbHNlIHA9 bi1NYXRoLnNxcnQoaCpoK2QqZCk7dGhpcy5kYXRhW28rY109TWF0aC5tYXgoMCxNYXRoLm1p bigyNTUscCsxMjgpKX19LFQucHJvdG90eXBlLmFkZFJlZ3VsYXJEYXNoPWZ1bmN0aW9uKHQp e2Zvcih2YXIgZT10Lmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgcj10W2VdLG49dFtlKzFdO3Iu emVyb0xlbmd0aD90LnNwbGljZShlLDEpOm4mJm4uaXNEYXNoPT09ci5pc0Rhc2gmJihuLmxl ZnQ9ci5sZWZ0LHQuc3BsaWNlKGUsMSkpfXZhciBpPXRbMF0sYT10W3QubGVuZ3RoLTFdO2ku aXNEYXNoPT09YS5pc0Rhc2gmJihpLmxlZnQ9YS5sZWZ0LXRoaXMud2lkdGgsYS5yaWdodD1p LnJpZ2h0K3RoaXMud2lkdGgpO2Zvcih2YXIgbz10aGlzLndpZHRoKnRoaXMubmV4dFJvdyxz PTAsbD10W3NdLGM9MDtjPHRoaXMud2lkdGg7YysrKXtjL2wucmlnaHQ+MSYmKGw9dFsrK3Nd KTt2YXIgdT1NYXRoLmFicyhjLWwubGVmdCksZj1NYXRoLmFicyhjLWwucmlnaHQpLGg9TWF0 aC5taW4odSxmKSxwPWwuaXNEYXNoP2g6LWg7dGhpcy5kYXRhW28rY109TWF0aC5tYXgoMCxN YXRoLm1pbigyNTUscCsxMjgpKX19LFQucHJvdG90eXBlLmFkZERhc2g9ZnVuY3Rpb24oZSxy KXt2YXIgbj1yPzc6MCxpPTIqbisxO2lmKHRoaXMubmV4dFJvdytpPnRoaXMuaGVpZ2h0KXJl dHVybiB0Lndhcm5PbmNlKCJMaW5lQXRsYXMgb3V0IG9mIHNwYWNlIiksbnVsbDtmb3IodmFy IGE9MCxvPTA7bzxlLmxlbmd0aDtvKyspYSs9ZVtvXTtpZigwIT09YSl7dmFyIHM9dGhpcy53 aWR0aC9hLGw9dGhpcy5nZXREYXNoUmFuZ2VzKGUsdGhpcy53aWR0aCxzKTtyP3RoaXMuYWRk Um91bmREYXNoKGwscyxuKTp0aGlzLmFkZFJlZ3VsYXJEYXNoKGwpfXZhciBjPXt5Oih0aGlz Lm5leHRSb3crbisuNSkvdGhpcy5oZWlnaHQsaGVpZ2h0OjIqbi90aGlzLmhlaWdodCx3aWR0 aDphfTtyZXR1cm4gdGhpcy5uZXh0Um93Kz1pLHRoaXMuZGlydHk9ITAsY30sVC5wcm90b3R5 cGUuYmluZD1mdW5jdGlvbih0KXt2YXIgZT10LmdsO3RoaXMudGV4dHVyZT8oZS5iaW5kVGV4 dHVyZShlLlRFWFRVUkVfMkQsdGhpcy50ZXh0dXJlKSx0aGlzLmRpcnR5JiYodGhpcy5kaXJ0 eT0hMSxlLnRleFN1YkltYWdlMkQoZS5URVhUVVJFXzJELDAsMCwwLHRoaXMud2lkdGgsdGhp cy5oZWlnaHQsZS5BTFBIQSxlLlVOU0lHTkVEX0JZVEUsdGhpcy5kYXRhKSkpOih0aGlzLnRl eHR1cmU9ZS5jcmVhdGVUZXh0dXJlKCksZS5iaW5kVGV4dHVyZShlLlRFWFRVUkVfMkQsdGhp cy50ZXh0dXJlKSxlLnRleFBhcmFtZXRlcmkoZS5URVhUVVJFXzJELGUuVEVYVFVSRV9XUkFQ X1MsZS5SRVBFQVQpLGUudGV4UGFyYW1ldGVyaShlLlRFWFRVUkVfMkQsZS5URVhUVVJFX1dS QVBfVCxlLlJFUEVBVCksZS50ZXhQYXJhbWV0ZXJpKGUuVEVYVFVSRV8yRCxlLlRFWFRVUkVf TUlOX0ZJTFRFUixlLkxJTkVBUiksZS50ZXhQYXJhbWV0ZXJpKGUuVEVYVFVSRV8yRCxlLlRF WFRVUkVfTUFHX0ZJTFRFUixlLkxJTkVBUiksZS50ZXhJbWFnZTJEKGUuVEVYVFVSRV8yRCww LGUuQUxQSEEsdGhpcy53aWR0aCx0aGlzLmhlaWdodCwwLGUuQUxQSEEsZS5VTlNJR05FRF9C WVRFLHRoaXMuZGF0YSkpfTt2YXIgaz1mdW5jdGlvbiBlKHIsbil7dGhpcy53b3JrZXJQb29s PXIsdGhpcy5hY3RvcnM9W10sdGhpcy5jdXJyZW50QWN0b3I9MCx0aGlzLmlkPXQudW5pcXVl SWQoKTtmb3IodmFyIGk9dGhpcy53b3JrZXJQb29sLmFjcXVpcmUodGhpcy5pZCksYT0wO2E8 aS5sZW5ndGg7YSsrKXt2YXIgbz1pW2FdLHM9bmV3IGUuQWN0b3IobyxuLHRoaXMuaWQpO3Mu bmFtZT0iV29ya2VyICIrYSx0aGlzLmFjdG9ycy5wdXNoKHMpfX07ZnVuY3Rpb24gQShlLHIs bil7dmFyIGk9ZnVuY3Rpb24oaSxhKXtpZihpKXJldHVybiBuKGkpO2lmKGEpe3ZhciBvPXQu cGljayh0LmV4dGVuZChhLGUpLFsidGlsZXMiLCJtaW56b29tIiwibWF4em9vbSIsImF0dHJp YnV0aW9uIiwibWFwYm94X2xvZ28iLCJib3VuZHMiLCJzY2hlbWUiLCJ0aWxlU2l6ZSIsImVu Y29kaW5nIl0pO2EudmVjdG9yX2xheWVycyYmKG8udmVjdG9yTGF5ZXJzPWEudmVjdG9yX2xh eWVycyxvLnZlY3RvckxheWVySWRzPW8udmVjdG9yTGF5ZXJzLm1hcCgoZnVuY3Rpb24odCl7 cmV0dXJuIHQuaWR9KSkpLG8udGlsZXM9ci5jYW5vbmljYWxpemVUaWxlc2V0KG8sZS51cmwp LG4obnVsbCxvKX19O3JldHVybiBlLnVybD90LmdldEpTT04oci50cmFuc2Zvcm1SZXF1ZXN0 KHIubm9ybWFsaXplU291cmNlVVJMKGUudXJsKSx0LlJlc291cmNlVHlwZS5Tb3VyY2UpLGkp OnQuYnJvd3Nlci5mcmFtZSgoZnVuY3Rpb24oKXtyZXR1cm4gaShudWxsLGUpfSkpfWsucHJv dG90eXBlLmJyb2FkY2FzdD1mdW5jdGlvbihlLHIsbil7bj1ufHxmdW5jdGlvbigpe30sdC5h c3luY0FsbCh0aGlzLmFjdG9ycywoZnVuY3Rpb24odCxuKXt0LnNlbmQoZSxyLG4pfSksbil9 LGsucHJvdG90eXBlLmdldEFjdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudEFj dG9yPSh0aGlzLmN1cnJlbnRBY3RvcisxKSV0aGlzLmFjdG9ycy5sZW5ndGgsdGhpcy5hY3Rv cnNbdGhpcy5jdXJyZW50QWN0b3JdfSxrLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXt0 aGlzLmFjdG9ycy5mb3JFYWNoKChmdW5jdGlvbih0KXt0LnJlbW92ZSgpfSkpLHRoaXMuYWN0 b3JzPVtdLHRoaXMud29ya2VyUG9vbC5yZWxlYXNlKHRoaXMuaWQpfSxrLkFjdG9yPXQuQWN0 b3I7dmFyIE09ZnVuY3Rpb24oZSxyLG4pe3RoaXMuYm91bmRzPXQuTG5nTGF0Qm91bmRzLmNv bnZlcnQodGhpcy52YWxpZGF0ZUJvdW5kcyhlKSksdGhpcy5taW56b29tPXJ8fDAsdGhpcy5t YXh6b29tPW58fDI0fTtNLnByb3RvdHlwZS52YWxpZGF0ZUJvdW5kcz1mdW5jdGlvbih0KXty ZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmND09PXQubGVuZ3RoP1tNYXRoLm1heCgtMTgwLHRb MF0pLE1hdGgubWF4KC05MCx0WzFdKSxNYXRoLm1pbigxODAsdFsyXSksTWF0aC5taW4oOTAs dFszXSldOlstMTgwLC05MCwxODAsOTBdfSxNLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlv bihlKXt2YXIgcj1NYXRoLnBvdygyLGUueiksbj1NYXRoLmZsb29yKHQubWVyY2F0b3JYZnJv bUxuZyh0aGlzLmJvdW5kcy5nZXRXZXN0KCkpKnIpLGk9TWF0aC5mbG9vcih0Lm1lcmNhdG9y WWZyb21MYXQodGhpcy5ib3VuZHMuZ2V0Tm9ydGgoKSkqciksYT1NYXRoLmNlaWwodC5tZXJj YXRvclhmcm9tTG5nKHRoaXMuYm91bmRzLmdldEVhc3QoKSkqciksbz1NYXRoLmNlaWwodC5t ZXJjYXRvcllmcm9tTGF0KHRoaXMuYm91bmRzLmdldFNvdXRoKCkpKnIpO3JldHVybiBlLng+ PW4mJmUueDxhJiZlLnk+PWkmJmUueTxvfTt2YXIgUz1mdW5jdGlvbihlKXtmdW5jdGlvbiBy KHIsbixpLGEpe2lmKGUuY2FsbCh0aGlzKSx0aGlzLmlkPXIsdGhpcy5kaXNwYXRjaGVyPWks dGhpcy50eXBlPSJ2ZWN0b3IiLHRoaXMubWluem9vbT0wLHRoaXMubWF4em9vbT0yMix0aGlz LnNjaGVtZT0ieHl6Iix0aGlzLnRpbGVTaXplPTUxMix0aGlzLnJlcGFyc2VPdmVyc2NhbGVk PSEwLHRoaXMuaXNUaWxlQ2xpcHBlZD0hMCx0aGlzLl9sb2FkZWQ9ITEsdC5leHRlbmQodGhp cyx0LnBpY2sobixbInVybCIsInNjaGVtZSIsInRpbGVTaXplIiwicHJvbW90ZUlkIl0pKSx0 aGlzLl9vcHRpb25zPXQuZXh0ZW5kKHt0eXBlOiJ2ZWN0b3IifSxuKSx0aGlzLl9jb2xsZWN0 UmVzb3VyY2VUaW1pbmc9bi5jb2xsZWN0UmVzb3VyY2VUaW1pbmcsNTEyIT09dGhpcy50aWxl U2l6ZSl0aHJvdyBuZXcgRXJyb3IoInZlY3RvciB0aWxlIHNvdXJjZXMgbXVzdCBoYXZlIGEg dGlsZVNpemUgb2YgNTEyIik7dGhpcy5zZXRFdmVudGVkUGFyZW50KGEpfXJldHVybiBlJiYo ci5fX3Byb3RvX189ZSksci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlw ZSksci5wcm90b3R5cGUuY29uc3RydWN0b3I9cixyLnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9u KCl7dmFyIGU9dGhpczt0aGlzLl9sb2FkZWQ9ITEsdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJk YXRhbG9hZGluZyIse2RhdGFUeXBlOiJzb3VyY2UifSkpLHRoaXMuX3RpbGVKU09OUmVxdWVz dD1BKHRoaXMuX29wdGlvbnMsdGhpcy5tYXAuX3JlcXVlc3RNYW5hZ2VyLChmdW5jdGlvbihy LG4pe2UuX3RpbGVKU09OUmVxdWVzdD1udWxsLGUuX2xvYWRlZD0hMCxyP2UuZmlyZShuZXcg dC5FcnJvckV2ZW50KHIpKTpuJiYodC5leHRlbmQoZSxuKSxuLmJvdW5kcyYmKGUudGlsZUJv dW5kcz1uZXcgTShuLmJvdW5kcyxlLm1pbnpvb20sZS5tYXh6b29tKSksdC5wb3N0VHVybnN0 aWxlRXZlbnQobi50aWxlcyxlLm1hcC5fcmVxdWVzdE1hbmFnZXIuX2N1c3RvbUFjY2Vzc1Rv a2VuKSx0LnBvc3RNYXBMb2FkRXZlbnQobi50aWxlcyxlLm1hcC5fZ2V0TWFwSWQoKSxlLm1h cC5fcmVxdWVzdE1hbmFnZXIuX3NrdVRva2VuLGUubWFwLl9yZXF1ZXN0TWFuYWdlci5fY3Vz dG9tQWNjZXNzVG9rZW4pLGUuZmlyZShuZXcgdC5FdmVudCgiZGF0YSIse2RhdGFUeXBlOiJz b3VyY2UiLHNvdXJjZURhdGFUeXBlOiJtZXRhZGF0YSJ9KSksZS5maXJlKG5ldyB0LkV2ZW50 KCJkYXRhIix7ZGF0YVR5cGU6InNvdXJjZSIsc291cmNlRGF0YVR5cGU6ImNvbnRlbnQifSkp KX0pKX0sci5wcm90b3R5cGUubG9hZGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xvYWRl ZH0sci5wcm90b3R5cGUuaGFzVGlsZT1mdW5jdGlvbih0KXtyZXR1cm4hdGhpcy50aWxlQm91 bmRzfHx0aGlzLnRpbGVCb3VuZHMuY29udGFpbnModC5jYW5vbmljYWwpfSxyLnByb3RvdHlw ZS5vbkFkZD1mdW5jdGlvbih0KXt0aGlzLm1hcD10LHRoaXMubG9hZCgpfSxyLnByb3RvdHlw ZS5vblJlbW92ZT1mdW5jdGlvbigpe3RoaXMuX3RpbGVKU09OUmVxdWVzdCYmKHRoaXMuX3Rp bGVKU09OUmVxdWVzdC5jYW5jZWwoKSx0aGlzLl90aWxlSlNPTlJlcXVlc3Q9bnVsbCl9LHIu cHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbigpe3JldHVybiB0LmV4dGVuZCh7fSx0aGlz Ll9vcHRpb25zKX0sci5wcm90b3R5cGUubG9hZFRpbGU9ZnVuY3Rpb24oZSxyKXt2YXIgbj10 aGlzLm1hcC5fcmVxdWVzdE1hbmFnZXIubm9ybWFsaXplVGlsZVVSTChlLnRpbGVJRC5jYW5v bmljYWwudXJsKHRoaXMudGlsZXMsdGhpcy5zY2hlbWUpKSxpPXtyZXF1ZXN0OnRoaXMubWFw Ll9yZXF1ZXN0TWFuYWdlci50cmFuc2Zvcm1SZXF1ZXN0KG4sdC5SZXNvdXJjZVR5cGUuVGls ZSksdWlkOmUudWlkLHRpbGVJRDplLnRpbGVJRCx6b29tOmUudGlsZUlELm92ZXJzY2FsZWRa LHRpbGVTaXplOnRoaXMudGlsZVNpemUqZS50aWxlSUQub3ZlcnNjYWxlRmFjdG9yKCksdHlw ZTp0aGlzLnR5cGUsc291cmNlOnRoaXMuaWQscGl4ZWxSYXRpbzp0LmJyb3dzZXIuZGV2aWNl UGl4ZWxSYXRpbyxzaG93Q29sbGlzaW9uQm94ZXM6dGhpcy5tYXAuc2hvd0NvbGxpc2lvbkJv eGVzLHByb21vdGVJZDp0aGlzLnByb21vdGVJZH07ZnVuY3Rpb24gYShuLGkpe3JldHVybiBk ZWxldGUgZS5yZXF1ZXN0LGUuYWJvcnRlZD9yKG51bGwpOm4mJjQwNCE9PW4uc3RhdHVzP3Io bik6KGkmJmkucmVzb3VyY2VUaW1pbmcmJihlLnJlc291cmNlVGltaW5nPWkucmVzb3VyY2VU aW1pbmcpLHRoaXMubWFwLl9yZWZyZXNoRXhwaXJlZFRpbGVzJiZpJiZlLnNldEV4cGlyeURh dGEoaSksZS5sb2FkVmVjdG9yRGF0YShpLHRoaXMubWFwLnBhaW50ZXIpLHQuY2FjaGVFbnRy eVBvc3NpYmx5QWRkZWQodGhpcy5kaXNwYXRjaGVyKSxyKG51bGwpLHZvaWQoZS5yZWxvYWRD YWxsYmFjayYmKHRoaXMubG9hZFRpbGUoZSxlLnJlbG9hZENhbGxiYWNrKSxlLnJlbG9hZENh bGxiYWNrPW51bGwpKSl9aS5yZXF1ZXN0LmNvbGxlY3RSZXNvdXJjZVRpbWluZz10aGlzLl9j b2xsZWN0UmVzb3VyY2VUaW1pbmcsZS5hY3RvciYmImV4cGlyZWQiIT09ZS5zdGF0ZT8ibG9h ZGluZyI9PT1lLnN0YXRlP2UucmVsb2FkQ2FsbGJhY2s9cjplLnJlcXVlc3Q9ZS5hY3Rvci5z ZW5kKCJyZWxvYWRUaWxlIixpLGEuYmluZCh0aGlzKSk6KGUuYWN0b3I9dGhpcy5kaXNwYXRj aGVyLmdldEFjdG9yKCksZS5yZXF1ZXN0PWUuYWN0b3Iuc2VuZCgibG9hZFRpbGUiLGksYS5i aW5kKHRoaXMpKSl9LHIucHJvdG90eXBlLmFib3J0VGlsZT1mdW5jdGlvbih0KXt0LnJlcXVl c3QmJih0LnJlcXVlc3QuY2FuY2VsKCksZGVsZXRlIHQucmVxdWVzdCksdC5hY3RvciYmdC5h Y3Rvci5zZW5kKCJhYm9ydFRpbGUiLHt1aWQ6dC51aWQsdHlwZTp0aGlzLnR5cGUsc291cmNl OnRoaXMuaWR9LHZvaWQgMCl9LHIucHJvdG90eXBlLnVubG9hZFRpbGU9ZnVuY3Rpb24odCl7 dC51bmxvYWRWZWN0b3JEYXRhKCksdC5hY3RvciYmdC5hY3Rvci5zZW5kKCJyZW1vdmVUaWxl Iix7dWlkOnQudWlkLHR5cGU6dGhpcy50eXBlLHNvdXJjZTp0aGlzLmlkfSx2b2lkIDApfSxy LnByb3RvdHlwZS5oYXNUcmFuc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuITF9LHJ9KHQuRXZl bnRlZCksRT1mdW5jdGlvbihlKXtmdW5jdGlvbiByKHIsbixpLGEpe2UuY2FsbCh0aGlzKSx0 aGlzLmlkPXIsdGhpcy5kaXNwYXRjaGVyPWksdGhpcy5zZXRFdmVudGVkUGFyZW50KGEpLHRo aXMudHlwZT0icmFzdGVyIix0aGlzLm1pbnpvb209MCx0aGlzLm1heHpvb209MjIsdGhpcy5y b3VuZFpvb209ITAsdGhpcy5zY2hlbWU9Inh5eiIsdGhpcy50aWxlU2l6ZT01MTIsdGhpcy5f bG9hZGVkPSExLHRoaXMuX29wdGlvbnM9dC5leHRlbmQoe3R5cGU6InJhc3RlciJ9LG4pLHQu ZXh0ZW5kKHRoaXMsdC5waWNrKG4sWyJ1cmwiLCJzY2hlbWUiLCJ0aWxlU2l6ZSJdKSl9cmV0 dXJuIGUmJihyLl9fcHJvdG9fXz1lKSxyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUu cHJvdG90eXBlKSxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yLHIucHJvdG90eXBlLmxvYWQ9 ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuX2xvYWRlZD0hMSx0aGlzLmZpcmUobmV3IHQu RXZlbnQoImRhdGFsb2FkaW5nIix7ZGF0YVR5cGU6InNvdXJjZSJ9KSksdGhpcy5fdGlsZUpT T05SZXF1ZXN0PUEodGhpcy5fb3B0aW9ucyx0aGlzLm1hcC5fcmVxdWVzdE1hbmFnZXIsKGZ1 bmN0aW9uKHIsbil7ZS5fdGlsZUpTT05SZXF1ZXN0PW51bGwsZS5fbG9hZGVkPSEwLHI/ZS5m aXJlKG5ldyB0LkVycm9yRXZlbnQocikpOm4mJih0LmV4dGVuZChlLG4pLG4uYm91bmRzJiYo ZS50aWxlQm91bmRzPW5ldyBNKG4uYm91bmRzLGUubWluem9vbSxlLm1heHpvb20pKSx0LnBv c3RUdXJuc3RpbGVFdmVudChuLnRpbGVzKSx0LnBvc3RNYXBMb2FkRXZlbnQobi50aWxlcyxl Lm1hcC5fZ2V0TWFwSWQoKSxlLm1hcC5fcmVxdWVzdE1hbmFnZXIuX3NrdVRva2VuKSxlLmZp cmUobmV3IHQuRXZlbnQoImRhdGEiLHtkYXRhVHlwZToic291cmNlIixzb3VyY2VEYXRhVHlw ZToibWV0YWRhdGEifSkpLGUuZmlyZShuZXcgdC5FdmVudCgiZGF0YSIse2RhdGFUeXBlOiJz b3VyY2UiLHNvdXJjZURhdGFUeXBlOiJjb250ZW50In0pKSl9KSl9LHIucHJvdG90eXBlLmxv YWRlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9sb2FkZWR9LHIucHJvdG90eXBlLm9uQWRk PWZ1bmN0aW9uKHQpe3RoaXMubWFwPXQsdGhpcy5sb2FkKCl9LHIucHJvdG90eXBlLm9uUmVt b3ZlPWZ1bmN0aW9uKCl7dGhpcy5fdGlsZUpTT05SZXF1ZXN0JiYodGhpcy5fdGlsZUpTT05S ZXF1ZXN0LmNhbmNlbCgpLHRoaXMuX3RpbGVKU09OUmVxdWVzdD1udWxsKX0sci5wcm90b3R5 cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHQuZXh0ZW5kKHt9LHRoaXMuX29wdGlv bnMpfSxyLnByb3RvdHlwZS5oYXNUaWxlPWZ1bmN0aW9uKHQpe3JldHVybiF0aGlzLnRpbGVC b3VuZHN8fHRoaXMudGlsZUJvdW5kcy5jb250YWlucyh0LmNhbm9uaWNhbCl9LHIucHJvdG90 eXBlLmxvYWRUaWxlPWZ1bmN0aW9uKGUscil7dmFyIG49dGhpcyxpPXRoaXMubWFwLl9yZXF1 ZXN0TWFuYWdlci5ub3JtYWxpemVUaWxlVVJMKGUudGlsZUlELmNhbm9uaWNhbC51cmwodGhp cy50aWxlcyx0aGlzLnNjaGVtZSksdGhpcy50aWxlU2l6ZSk7ZS5yZXF1ZXN0PXQuZ2V0SW1h Z2UodGhpcy5tYXAuX3JlcXVlc3RNYW5hZ2VyLnRyYW5zZm9ybVJlcXVlc3QoaSx0LlJlc291 cmNlVHlwZS5UaWxlKSwoZnVuY3Rpb24oaSxhKXtpZihkZWxldGUgZS5yZXF1ZXN0LGUuYWJv cnRlZCllLnN0YXRlPSJ1bmxvYWRlZCIscihudWxsKTtlbHNlIGlmKGkpZS5zdGF0ZT0iZXJy b3JlZCIscihpKTtlbHNlIGlmKGEpe24ubWFwLl9yZWZyZXNoRXhwaXJlZFRpbGVzJiZlLnNl dEV4cGlyeURhdGEoYSksZGVsZXRlIGEuY2FjaGVDb250cm9sLGRlbGV0ZSBhLmV4cGlyZXM7 dmFyIG89bi5tYXAucGFpbnRlci5jb250ZXh0LHM9by5nbDtlLnRleHR1cmU9bi5tYXAucGFp bnRlci5nZXRUaWxlVGV4dHVyZShhLndpZHRoKSxlLnRleHR1cmU/ZS50ZXh0dXJlLnVwZGF0 ZShhLHt1c2VNaXBtYXA6ITB9KTooZS50ZXh0dXJlPW5ldyB0LlRleHR1cmUobyxhLHMuUkdC QSx7dXNlTWlwbWFwOiEwfSksZS50ZXh0dXJlLmJpbmQocy5MSU5FQVIscy5DTEFNUF9UT19F REdFLHMuTElORUFSX01JUE1BUF9ORUFSRVNUKSxvLmV4dFRleHR1cmVGaWx0ZXJBbmlzb3Ry b3BpYyYmcy50ZXhQYXJhbWV0ZXJmKHMuVEVYVFVSRV8yRCxvLmV4dFRleHR1cmVGaWx0ZXJB bmlzb3Ryb3BpYy5URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCxvLmV4dFRleHR1cmVGaWx0 ZXJBbmlzb3Ryb3BpY01heCkpLGUuc3RhdGU9ImxvYWRlZCIsdC5jYWNoZUVudHJ5UG9zc2li bHlBZGRlZChuLmRpc3BhdGNoZXIpLHIobnVsbCl9fSkpfSxyLnByb3RvdHlwZS5hYm9ydFRp bGU9ZnVuY3Rpb24odCxlKXt0LnJlcXVlc3QmJih0LnJlcXVlc3QuY2FuY2VsKCksZGVsZXRl IHQucmVxdWVzdCksZSgpfSxyLnByb3RvdHlwZS51bmxvYWRUaWxlPWZ1bmN0aW9uKHQsZSl7 dC50ZXh0dXJlJiZ0aGlzLm1hcC5wYWludGVyLnNhdmVUaWxlVGV4dHVyZSh0LnRleHR1cmUp LGUoKX0sci5wcm90b3R5cGUuaGFzVHJhbnNpdGlvbj1mdW5jdGlvbigpe3JldHVybiExfSxy fSh0LkV2ZW50ZWQpLEw9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcihyLG4saSxhKXtlLmNhbGwo dGhpcyxyLG4saSxhKSx0aGlzLnR5cGU9InJhc3Rlci1kZW0iLHRoaXMubWF4em9vbT0yMix0 aGlzLl9vcHRpb25zPXQuZXh0ZW5kKHt0eXBlOiJyYXN0ZXItZGVtIn0sbiksdGhpcy5lbmNv ZGluZz1uLmVuY29kaW5nfHwibWFwYm94In1yZXR1cm4gZSYmKHIuX19wcm90b19fPWUpLHIu cHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUpLHIucHJvdG90eXBlLmNv bnN0cnVjdG9yPXIsci5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJue3R5 cGU6InJhc3Rlci1kZW0iLHVybDp0aGlzLnVybCx0aWxlU2l6ZTp0aGlzLnRpbGVTaXplLHRp bGVzOnRoaXMudGlsZXMsYm91bmRzOnRoaXMuYm91bmRzLGVuY29kaW5nOnRoaXMuZW5jb2Rp bmd9fSxyLnByb3RvdHlwZS5sb2FkVGlsZT1mdW5jdGlvbihlLHIpe3ZhciBuPXRoaXMubWFw Ll9yZXF1ZXN0TWFuYWdlci5ub3JtYWxpemVUaWxlVVJMKGUudGlsZUlELmNhbm9uaWNhbC51 cmwodGhpcy50aWxlcyx0aGlzLnNjaGVtZSksdGhpcy50aWxlU2l6ZSk7ZnVuY3Rpb24gaSh0 LG4pe3QmJihlLnN0YXRlPSJlcnJvcmVkIixyKHQpKSxuJiYoZS5kZW09bixlLm5lZWRzSGls bHNoYWRlUHJlcGFyZT0hMCxlLnN0YXRlPSJsb2FkZWQiLHIobnVsbCkpfWUucmVxdWVzdD10 LmdldEltYWdlKHRoaXMubWFwLl9yZXF1ZXN0TWFuYWdlci50cmFuc2Zvcm1SZXF1ZXN0KG4s dC5SZXNvdXJjZVR5cGUuVGlsZSksZnVuY3Rpb24obixhKXtpZihkZWxldGUgZS5yZXF1ZXN0 LGUuYWJvcnRlZCllLnN0YXRlPSJ1bmxvYWRlZCIscihudWxsKTtlbHNlIGlmKG4pZS5zdGF0 ZT0iZXJyb3JlZCIscihuKTtlbHNlIGlmKGEpe3RoaXMubWFwLl9yZWZyZXNoRXhwaXJlZFRp bGVzJiZlLnNldEV4cGlyeURhdGEoYSksZGVsZXRlIGEuY2FjaGVDb250cm9sLGRlbGV0ZSBh LmV4cGlyZXM7dmFyIG89dC53aW5kb3cuSW1hZ2VCaXRtYXAmJmEgaW5zdGFuY2VvZiB0Lndp bmRvdy5JbWFnZUJpdG1hcCYmdC5vZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQoKT9hOnQuYnJv d3Nlci5nZXRJbWFnZURhdGEoYSwxKSxzPXt1aWQ6ZS51aWQsY29vcmQ6ZS50aWxlSUQsc291 cmNlOnRoaXMuaWQscmF3SW1hZ2VEYXRhOm8sZW5jb2Rpbmc6dGhpcy5lbmNvZGluZ307ZS5h Y3RvciYmImV4cGlyZWQiIT09ZS5zdGF0ZXx8KGUuYWN0b3I9dGhpcy5kaXNwYXRjaGVyLmdl dEFjdG9yKCksZS5hY3Rvci5zZW5kKCJsb2FkREVNVGlsZSIscyxpLmJpbmQodGhpcykpKX19 LmJpbmQodGhpcykpLGUubmVpZ2hib3JpbmdUaWxlcz10aGlzLl9nZXROZWlnaGJvcmluZ1Rp bGVzKGUudGlsZUlEKX0sci5wcm90b3R5cGUuX2dldE5laWdoYm9yaW5nVGlsZXM9ZnVuY3Rp b24oZSl7dmFyIHI9ZS5jYW5vbmljYWwsbj1NYXRoLnBvdygyLHIueiksaT0oci54LTErbikl bixhPTA9PT1yLng/ZS53cmFwLTE6ZS53cmFwLG89KHIueCsxK24pJW4scz1yLngrMT09PW4/ ZS53cmFwKzE6ZS53cmFwLGw9e307cmV0dXJuIGxbbmV3IHQuT3ZlcnNjYWxlZFRpbGVJRChl Lm92ZXJzY2FsZWRaLGEsci56LGksci55KS5rZXldPXtiYWNrZmlsbGVkOiExfSxsW25ldyB0 Lk92ZXJzY2FsZWRUaWxlSUQoZS5vdmVyc2NhbGVkWixzLHIueixvLHIueSkua2V5XT17YmFj a2ZpbGxlZDohMX0sci55PjAmJihsW25ldyB0Lk92ZXJzY2FsZWRUaWxlSUQoZS5vdmVyc2Nh bGVkWixhLHIueixpLHIueS0xKS5rZXldPXtiYWNrZmlsbGVkOiExfSxsW25ldyB0Lk92ZXJz Y2FsZWRUaWxlSUQoZS5vdmVyc2NhbGVkWixlLndyYXAsci56LHIueCxyLnktMSkua2V5XT17 YmFja2ZpbGxlZDohMX0sbFtuZXcgdC5PdmVyc2NhbGVkVGlsZUlEKGUub3ZlcnNjYWxlZFos cyxyLnosbyxyLnktMSkua2V5XT17YmFja2ZpbGxlZDohMX0pLHIueSsxPG4mJihsW25ldyB0 Lk92ZXJzY2FsZWRUaWxlSUQoZS5vdmVyc2NhbGVkWixhLHIueixpLHIueSsxKS5rZXldPXti YWNrZmlsbGVkOiExfSxsW25ldyB0Lk92ZXJzY2FsZWRUaWxlSUQoZS5vdmVyc2NhbGVkWixl LndyYXAsci56LHIueCxyLnkrMSkua2V5XT17YmFja2ZpbGxlZDohMX0sbFtuZXcgdC5PdmVy c2NhbGVkVGlsZUlEKGUub3ZlcnNjYWxlZFoscyxyLnosbyxyLnkrMSkua2V5XT17YmFja2Zp bGxlZDohMX0pLGx9LHIucHJvdG90eXBlLnVubG9hZFRpbGU9ZnVuY3Rpb24odCl7dC5kZW1U ZXh0dXJlJiZ0aGlzLm1hcC5wYWludGVyLnNhdmVUaWxlVGV4dHVyZSh0LmRlbVRleHR1cmUp LHQuZmJvJiYodC5mYm8uZGVzdHJveSgpLGRlbGV0ZSB0LmZibyksdC5kZW0mJmRlbGV0ZSB0 LmRlbSxkZWxldGUgdC5uZWlnaGJvcmluZ1RpbGVzLHQuc3RhdGU9InVubG9hZGVkIix0LmFj dG9yJiZ0LmFjdG9yLnNlbmQoInJlbW92ZURFTVRpbGUiLHt1aWQ6dC51aWQsc291cmNlOnRo aXMuaWR9KX0scn0oRSksQz1mdW5jdGlvbihlKXtmdW5jdGlvbiByKHIsbixpLGEpe2UuY2Fs bCh0aGlzKSx0aGlzLmlkPXIsdGhpcy50eXBlPSJnZW9qc29uIix0aGlzLm1pbnpvb209MCx0 aGlzLm1heHpvb209MTgsdGhpcy50aWxlU2l6ZT01MTIsdGhpcy5pc1RpbGVDbGlwcGVkPSEw LHRoaXMucmVwYXJzZU92ZXJzY2FsZWQ9ITAsdGhpcy5fcmVtb3ZlZD0hMSx0aGlzLl9sb2Fk ZWQ9ITEsdGhpcy5hY3Rvcj1pLmdldEFjdG9yKCksdGhpcy5zZXRFdmVudGVkUGFyZW50KGEp LHRoaXMuX2RhdGE9bi5kYXRhLHRoaXMuX29wdGlvbnM9dC5leHRlbmQoe30sbiksdGhpcy5f Y29sbGVjdFJlc291cmNlVGltaW5nPW4uY29sbGVjdFJlc291cmNlVGltaW5nLHRoaXMuX3Jl c291cmNlVGltaW5nPVtdLHZvaWQgMCE9PW4ubWF4em9vbSYmKHRoaXMubWF4em9vbT1uLm1h eHpvb20pLG4udHlwZSYmKHRoaXMudHlwZT1uLnR5cGUpLG4uYXR0cmlidXRpb24mJih0aGlz LmF0dHJpYnV0aW9uPW4uYXR0cmlidXRpb24pLHRoaXMucHJvbW90ZUlkPW4ucHJvbW90ZUlk O3ZhciBvPXQuRVhURU5UL3RoaXMudGlsZVNpemU7dGhpcy53b3JrZXJPcHRpb25zPXQuZXh0 ZW5kKHtzb3VyY2U6dGhpcy5pZCxjbHVzdGVyOm4uY2x1c3Rlcnx8ITEsZ2VvanNvblZ0T3B0 aW9uczp7YnVmZmVyOih2b2lkIDAhPT1uLmJ1ZmZlcj9uLmJ1ZmZlcjoxMjgpKm8sdG9sZXJh bmNlOih2b2lkIDAhPT1uLnRvbGVyYW5jZT9uLnRvbGVyYW5jZTouMzc1KSpvLGV4dGVudDp0 LkVYVEVOVCxtYXhab29tOnRoaXMubWF4em9vbSxsaW5lTWV0cmljczpuLmxpbmVNZXRyaWNz fHwhMSxnZW5lcmF0ZUlkOm4uZ2VuZXJhdGVJZHx8ITF9LHN1cGVyY2x1c3Rlck9wdGlvbnM6 e21heFpvb206dm9pZCAwIT09bi5jbHVzdGVyTWF4Wm9vbT9NYXRoLm1pbihuLmNsdXN0ZXJN YXhab29tLHRoaXMubWF4em9vbS0xKTp0aGlzLm1heHpvb20tMSxleHRlbnQ6dC5FWFRFTlQs cmFkaXVzOihuLmNsdXN0ZXJSYWRpdXN8fDUwKSpvLGxvZzohMSxnZW5lcmF0ZUlkOm4uZ2Vu ZXJhdGVJZHx8ITF9LGNsdXN0ZXJQcm9wZXJ0aWVzOm4uY2x1c3RlclByb3BlcnRpZXN9LG4u d29ya2VyT3B0aW9ucyl9cmV0dXJuIGUmJihyLl9fcHJvdG9fXz1lKSxyLnByb3RvdHlwZT1P YmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlKSxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1y LHIucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuZmlyZShuZXcg dC5FdmVudCgiZGF0YWxvYWRpbmciLHtkYXRhVHlwZToic291cmNlIn0pKSx0aGlzLl91cGRh dGVXb3JrZXJEYXRhKChmdW5jdGlvbihyKXtpZihyKWUuZmlyZShuZXcgdC5FcnJvckV2ZW50 KHIpKTtlbHNle3ZhciBuPXtkYXRhVHlwZToic291cmNlIixzb3VyY2VEYXRhVHlwZToibWV0 YWRhdGEifTtlLl9jb2xsZWN0UmVzb3VyY2VUaW1pbmcmJmUuX3Jlc291cmNlVGltaW5nJiZl Ll9yZXNvdXJjZVRpbWluZy5sZW5ndGg+MCYmKG4ucmVzb3VyY2VUaW1pbmc9ZS5fcmVzb3Vy Y2VUaW1pbmcsZS5fcmVzb3VyY2VUaW1pbmc9W10pLGUuZmlyZShuZXcgdC5FdmVudCgiZGF0 YSIsbikpfX0pKX0sci5wcm90b3R5cGUub25BZGQ9ZnVuY3Rpb24odCl7dGhpcy5tYXA9dCx0 aGlzLmxvYWQoKX0sci5wcm90b3R5cGUuc2V0RGF0YT1mdW5jdGlvbihlKXt2YXIgcj10aGlz O3JldHVybiB0aGlzLl9kYXRhPWUsdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJkYXRhbG9hZGlu ZyIse2RhdGFUeXBlOiJzb3VyY2UifSkpLHRoaXMuX3VwZGF0ZVdvcmtlckRhdGEoKGZ1bmN0 aW9uKGUpe2lmKGUpci5maXJlKG5ldyB0LkVycm9yRXZlbnQoZSkpO2Vsc2V7dmFyIG49e2Rh dGFUeXBlOiJzb3VyY2UiLHNvdXJjZURhdGFUeXBlOiJjb250ZW50In07ci5fY29sbGVjdFJl c291cmNlVGltaW5nJiZyLl9yZXNvdXJjZVRpbWluZyYmci5fcmVzb3VyY2VUaW1pbmcubGVu Z3RoPjAmJihuLnJlc291cmNlVGltaW5nPXIuX3Jlc291cmNlVGltaW5nLHIuX3Jlc291cmNl VGltaW5nPVtdKSxyLmZpcmUobmV3IHQuRXZlbnQoImRhdGEiLG4pKX19KSksdGhpc30sci5w cm90b3R5cGUuZ2V0Q2x1c3RlckV4cGFuc2lvblpvb209ZnVuY3Rpb24odCxlKXtyZXR1cm4g dGhpcy5hY3Rvci5zZW5kKCJnZW9qc29uLmdldENsdXN0ZXJFeHBhbnNpb25ab29tIix7Y2x1 c3RlcklkOnQsc291cmNlOnRoaXMuaWR9LGUpLHRoaXN9LHIucHJvdG90eXBlLmdldENsdXN0 ZXJDaGlsZHJlbj1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmFjdG9yLnNlbmQoImdlb2pz b24uZ2V0Q2x1c3RlckNoaWxkcmVuIix7Y2x1c3RlcklkOnQsc291cmNlOnRoaXMuaWR9LGUp LHRoaXN9LHIucHJvdG90eXBlLmdldENsdXN0ZXJMZWF2ZXM9ZnVuY3Rpb24odCxlLHIsbil7 cmV0dXJuIHRoaXMuYWN0b3Iuc2VuZCgiZ2VvanNvbi5nZXRDbHVzdGVyTGVhdmVzIix7c291 cmNlOnRoaXMuaWQsY2x1c3RlcklkOnQsbGltaXQ6ZSxvZmZzZXQ6cn0sbiksdGhpc30sci5w cm90b3R5cGUuX3VwZGF0ZVdvcmtlckRhdGE9ZnVuY3Rpb24oZSl7dmFyIHI9dGhpczt0aGlz Ll9sb2FkZWQ9ITE7dmFyIG49dC5leHRlbmQoe30sdGhpcy53b3JrZXJPcHRpb25zKSxpPXRo aXMuX2RhdGE7InN0cmluZyI9PXR5cGVvZiBpPyhuLnJlcXVlc3Q9dGhpcy5tYXAuX3JlcXVl c3RNYW5hZ2VyLnRyYW5zZm9ybVJlcXVlc3QodC5icm93c2VyLnJlc29sdmVVUkwoaSksdC5S ZXNvdXJjZVR5cGUuU291cmNlKSxuLnJlcXVlc3QuY29sbGVjdFJlc291cmNlVGltaW5nPXRo aXMuX2NvbGxlY3RSZXNvdXJjZVRpbWluZyk6bi5kYXRhPUpTT04uc3RyaW5naWZ5KGkpLHRo aXMuYWN0b3Iuc2VuZCh0aGlzLnR5cGUrIi5sb2FkRGF0YSIsbiwoZnVuY3Rpb24odCxpKXty Ll9yZW1vdmVkfHxpJiZpLmFiYW5kb25lZHx8KHIuX2xvYWRlZD0hMCxpJiZpLnJlc291cmNl VGltaW5nJiZpLnJlc291cmNlVGltaW5nW3IuaWRdJiYoci5fcmVzb3VyY2VUaW1pbmc9aS5y ZXNvdXJjZVRpbWluZ1tyLmlkXS5zbGljZSgwKSksci5hY3Rvci5zZW5kKHIudHlwZSsiLmNv YWxlc2NlIix7c291cmNlOm4uc291cmNlfSxudWxsKSxlKHQpKX0pKX0sci5wcm90b3R5cGUu bG9hZGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xvYWRlZH0sci5wcm90b3R5cGUubG9h ZFRpbGU9ZnVuY3Rpb24oZSxyKXt2YXIgbj10aGlzLGk9ZS5hY3Rvcj8icmVsb2FkVGlsZSI6 ImxvYWRUaWxlIjtlLmFjdG9yPXRoaXMuYWN0b3I7dmFyIGE9e3R5cGU6dGhpcy50eXBlLHVp ZDplLnVpZCx0aWxlSUQ6ZS50aWxlSUQsem9vbTplLnRpbGVJRC5vdmVyc2NhbGVkWixtYXha b29tOnRoaXMubWF4em9vbSx0aWxlU2l6ZTp0aGlzLnRpbGVTaXplLHNvdXJjZTp0aGlzLmlk LHBpeGVsUmF0aW86dC5icm93c2VyLmRldmljZVBpeGVsUmF0aW8sc2hvd0NvbGxpc2lvbkJv eGVzOnRoaXMubWFwLnNob3dDb2xsaXNpb25Cb3hlcyxwcm9tb3RlSWQ6dGhpcy5wcm9tb3Rl SWR9O2UucmVxdWVzdD10aGlzLmFjdG9yLnNlbmQoaSxhLChmdW5jdGlvbih0LGEpe3JldHVy biBkZWxldGUgZS5yZXF1ZXN0LGUudW5sb2FkVmVjdG9yRGF0YSgpLGUuYWJvcnRlZD9yKG51 bGwpOnQ/cih0KTooZS5sb2FkVmVjdG9yRGF0YShhLG4ubWFwLnBhaW50ZXIsInJlbG9hZFRp bGUiPT09aSkscihudWxsKSl9KSl9LHIucHJvdG90eXBlLmFib3J0VGlsZT1mdW5jdGlvbih0 KXt0LnJlcXVlc3QmJih0LnJlcXVlc3QuY2FuY2VsKCksZGVsZXRlIHQucmVxdWVzdCksdC5h Ym9ydGVkPSEwfSxyLnByb3RvdHlwZS51bmxvYWRUaWxlPWZ1bmN0aW9uKHQpe3QudW5sb2Fk VmVjdG9yRGF0YSgpLHRoaXMuYWN0b3Iuc2VuZCgicmVtb3ZlVGlsZSIse3VpZDp0LnVpZCx0 eXBlOnRoaXMudHlwZSxzb3VyY2U6dGhpcy5pZH0pfSxyLnByb3RvdHlwZS5vblJlbW92ZT1m dW5jdGlvbigpe3RoaXMuX3JlbW92ZWQ9ITAsdGhpcy5hY3Rvci5zZW5kKCJyZW1vdmVTb3Vy Y2UiLHt0eXBlOnRoaXMudHlwZSxzb3VyY2U6dGhpcy5pZH0pfSxyLnByb3RvdHlwZS5zZXJp YWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdC5leHRlbmQoe30sdGhpcy5fb3B0aW9ucyx7dHlw ZTp0aGlzLnR5cGUsZGF0YTp0aGlzLl9kYXRhfSl9LHIucHJvdG90eXBlLmhhc1RyYW5zaXRp b249ZnVuY3Rpb24oKXtyZXR1cm4hMX0scn0odC5FdmVudGVkKSxQPXQuY3JlYXRlTGF5b3V0 KFt7bmFtZToiYV9wb3MiLHR5cGU6IkludDE2Iixjb21wb25lbnRzOjJ9LHtuYW1lOiJhX3Rl eHR1cmVfcG9zIix0eXBlOiJJbnQxNiIsY29tcG9uZW50czoyfV0pLEk9ZnVuY3Rpb24oZSl7 ZnVuY3Rpb24gcih0LHIsbixpKXtlLmNhbGwodGhpcyksdGhpcy5pZD10LHRoaXMuZGlzcGF0 Y2hlcj1uLHRoaXMuY29vcmRpbmF0ZXM9ci5jb29yZGluYXRlcyx0aGlzLnR5cGU9ImltYWdl Iix0aGlzLm1pbnpvb209MCx0aGlzLm1heHpvb209MjIsdGhpcy50aWxlU2l6ZT01MTIsdGhp cy50aWxlcz17fSx0aGlzLl9sb2FkZWQ9ITEsdGhpcy5zZXRFdmVudGVkUGFyZW50KGkpLHRo aXMub3B0aW9ucz1yfXJldHVybiBlJiYoci5fX3Byb3RvX189ZSksci5wcm90b3R5cGU9T2Jq ZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSksci5wcm90b3R5cGUuY29uc3RydWN0b3I9cixy LnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKGUscil7dmFyIG49dGhpczt0aGlzLl9sb2FkZWQ9 ITEsdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJkYXRhbG9hZGluZyIse2RhdGFUeXBlOiJzb3Vy Y2UifSkpLHRoaXMudXJsPXRoaXMub3B0aW9ucy51cmwsdC5nZXRJbWFnZSh0aGlzLm1hcC5f cmVxdWVzdE1hbmFnZXIudHJhbnNmb3JtUmVxdWVzdCh0aGlzLnVybCx0LlJlc291cmNlVHlw ZS5JbWFnZSksKGZ1bmN0aW9uKGksYSl7bi5fbG9hZGVkPSEwLGk/bi5maXJlKG5ldyB0LkVy cm9yRXZlbnQoaSkpOmEmJihuLmltYWdlPWEsZSYmKG4uY29vcmRpbmF0ZXM9ZSksciYmcigp LG4uX2ZpbmlzaExvYWRpbmcoKSl9KSl9LHIucHJvdG90eXBlLmxvYWRlZD1mdW5jdGlvbigp e3JldHVybiB0aGlzLl9sb2FkZWR9LHIucHJvdG90eXBlLnVwZGF0ZUltYWdlPWZ1bmN0aW9u KHQpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMuaW1hZ2UmJnQudXJsPyh0aGlzLm9wdGlvbnMu dXJsPXQudXJsLHRoaXMubG9hZCh0LmNvb3JkaW5hdGVzLChmdW5jdGlvbigpe2UudGV4dHVy ZT1udWxsfSkpLHRoaXMpOnRoaXN9LHIucHJvdG90eXBlLl9maW5pc2hMb2FkaW5nPWZ1bmN0 aW9uKCl7dGhpcy5tYXAmJih0aGlzLnNldENvb3JkaW5hdGVzKHRoaXMuY29vcmRpbmF0ZXMp LHRoaXMuZmlyZShuZXcgdC5FdmVudCgiZGF0YSIse2RhdGFUeXBlOiJzb3VyY2UiLHNvdXJj ZURhdGFUeXBlOiJtZXRhZGF0YSJ9KSkpfSxyLnByb3RvdHlwZS5vbkFkZD1mdW5jdGlvbih0 KXt0aGlzLm1hcD10LHRoaXMubG9hZCgpfSxyLnByb3RvdHlwZS5zZXRDb29yZGluYXRlcz1m dW5jdGlvbihlKXt2YXIgcj10aGlzO3RoaXMuY29vcmRpbmF0ZXM9ZTt2YXIgbj1lLm1hcCh0 Lk1lcmNhdG9yQ29vcmRpbmF0ZS5mcm9tTG5nTGF0KTt0aGlzLnRpbGVJRD1mdW5jdGlvbihl KXtmb3IodmFyIHI9MS8wLG49MS8wLGk9LTEvMCxhPS0xLzAsbz0wLHM9ZTtvPHMubGVuZ3Ro O28rPTEpe3ZhciBsPXNbb107cj1NYXRoLm1pbihyLGwueCksbj1NYXRoLm1pbihuLGwueSks aT1NYXRoLm1heChpLGwueCksYT1NYXRoLm1heChhLGwueSl9dmFyIGM9aS1yLHU9YS1uLGY9 TWF0aC5tYXgoYyx1KSxoPU1hdGgubWF4KDAsTWF0aC5mbG9vcigtTWF0aC5sb2coZikvTWF0 aC5MTjIpKSxwPU1hdGgucG93KDIsaCk7cmV0dXJuIG5ldyB0LkNhbm9uaWNhbFRpbGVJRCho LE1hdGguZmxvb3IoKHIraSkvMipwKSxNYXRoLmZsb29yKChuK2EpLzIqcCkpfShuKSx0aGlz Lm1pbnpvb209dGhpcy5tYXh6b29tPXRoaXMudGlsZUlELno7dmFyIGk9bi5tYXAoKGZ1bmN0 aW9uKHQpe3JldHVybiByLnRpbGVJRC5nZXRUaWxlUG9pbnQodCkuX3JvdW5kKCl9KSk7cmV0 dXJuIHRoaXMuX2JvdW5kc0FycmF5PW5ldyB0LlN0cnVjdEFycmF5TGF5b3V0NGk4LHRoaXMu X2JvdW5kc0FycmF5LmVtcGxhY2VCYWNrKGlbMF0ueCxpWzBdLnksMCwwKSx0aGlzLl9ib3Vu ZHNBcnJheS5lbXBsYWNlQmFjayhpWzFdLngsaVsxXS55LHQuRVhURU5ULDApLHRoaXMuX2Jv dW5kc0FycmF5LmVtcGxhY2VCYWNrKGlbM10ueCxpWzNdLnksMCx0LkVYVEVOVCksdGhpcy5f Ym91bmRzQXJyYXkuZW1wbGFjZUJhY2soaVsyXS54LGlbMl0ueSx0LkVYVEVOVCx0LkVYVEVO VCksdGhpcy5ib3VuZHNCdWZmZXImJih0aGlzLmJvdW5kc0J1ZmZlci5kZXN0cm95KCksZGVs ZXRlIHRoaXMuYm91bmRzQnVmZmVyKSx0aGlzLmZpcmUobmV3IHQuRXZlbnQoImRhdGEiLHtk YXRhVHlwZToic291cmNlIixzb3VyY2VEYXRhVHlwZToiY29udGVudCJ9KSksdGhpc30sci5w cm90b3R5cGUucHJlcGFyZT1mdW5jdGlvbigpe2lmKDAhPT1PYmplY3Qua2V5cyh0aGlzLnRp bGVzKS5sZW5ndGgmJnRoaXMuaW1hZ2Upe3ZhciBlPXRoaXMubWFwLnBhaW50ZXIuY29udGV4 dCxyPWUuZ2w7Zm9yKHZhciBuIGluIHRoaXMuYm91bmRzQnVmZmVyfHwodGhpcy5ib3VuZHNC dWZmZXI9ZS5jcmVhdGVWZXJ0ZXhCdWZmZXIodGhpcy5fYm91bmRzQXJyYXksUC5tZW1iZXJz KSksdGhpcy5ib3VuZHNTZWdtZW50c3x8KHRoaXMuYm91bmRzU2VnbWVudHM9dC5TZWdtZW50 VmVjdG9yLnNpbXBsZVNlZ21lbnQoMCwwLDQsMikpLHRoaXMudGV4dHVyZXx8KHRoaXMudGV4 dHVyZT1uZXcgdC5UZXh0dXJlKGUsdGhpcy5pbWFnZSxyLlJHQkEpLHRoaXMudGV4dHVyZS5i aW5kKHIuTElORUFSLHIuQ0xBTVBfVE9fRURHRSkpLHRoaXMudGlsZXMpe3ZhciBpPXRoaXMu dGlsZXNbbl07ImxvYWRlZCIhPT1pLnN0YXRlJiYoaS5zdGF0ZT0ibG9hZGVkIixpLnRleHR1 cmU9dGhpcy50ZXh0dXJlKX19fSxyLnByb3RvdHlwZS5sb2FkVGlsZT1mdW5jdGlvbih0LGUp e3RoaXMudGlsZUlEJiZ0aGlzLnRpbGVJRC5lcXVhbHModC50aWxlSUQuY2Fub25pY2FsKT8o dGhpcy50aWxlc1tTdHJpbmcodC50aWxlSUQud3JhcCldPXQsdC5idWNrZXRzPXt9LGUobnVs bCkpOih0LnN0YXRlPSJlcnJvcmVkIixlKG51bGwpKX0sci5wcm90b3R5cGUuc2VyaWFsaXpl PWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6ImltYWdlIix1cmw6dGhpcy5vcHRpb25zLnVybCxj b29yZGluYXRlczp0aGlzLmNvb3JkaW5hdGVzfX0sci5wcm90b3R5cGUuaGFzVHJhbnNpdGlv bj1mdW5jdGlvbigpe3JldHVybiExfSxyfSh0LkV2ZW50ZWQpO3ZhciBPPWZ1bmN0aW9uKGUp e2Z1bmN0aW9uIHIodCxyLG4saSl7ZS5jYWxsKHRoaXMsdCxyLG4saSksdGhpcy5yb3VuZFpv b209ITAsdGhpcy50eXBlPSJ2aWRlbyIsdGhpcy5vcHRpb25zPXJ9cmV0dXJuIGUmJihyLl9f cHJvdG9fXz1lKSxyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlKSxy LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yLHIucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oKXt2 YXIgZT10aGlzO3RoaXMuX2xvYWRlZD0hMTt2YXIgcj10aGlzLm9wdGlvbnM7dGhpcy51cmxz PVtdO2Zvcih2YXIgbj0wLGk9ci51cmxzO248aS5sZW5ndGg7bis9MSl7dmFyIGE9aVtuXTt0 aGlzLnVybHMucHVzaCh0aGlzLm1hcC5fcmVxdWVzdE1hbmFnZXIudHJhbnNmb3JtUmVxdWVz dChhLHQuUmVzb3VyY2VUeXBlLlNvdXJjZSkudXJsKX10LmdldFZpZGVvKHRoaXMudXJscywo ZnVuY3Rpb24ocixuKXtlLl9sb2FkZWQ9ITAscj9lLmZpcmUobmV3IHQuRXJyb3JFdmVudChy KSk6biYmKGUudmlkZW89bixlLnZpZGVvLmxvb3A9ITAsZS52aWRlby5hZGRFdmVudExpc3Rl bmVyKCJwbGF5aW5nIiwoZnVuY3Rpb24oKXtlLm1hcC50cmlnZ2VyUmVwYWludCgpfSkpLGUu bWFwJiZlLnZpZGVvLnBsYXkoKSxlLl9maW5pc2hMb2FkaW5nKCkpfSkpfSxyLnByb3RvdHlw ZS5wYXVzZT1mdW5jdGlvbigpe3RoaXMudmlkZW8mJnRoaXMudmlkZW8ucGF1c2UoKX0sci5w cm90b3R5cGUucGxheT1mdW5jdGlvbigpe3RoaXMudmlkZW8mJnRoaXMudmlkZW8ucGxheSgp fSxyLnByb3RvdHlwZS5zZWVrPWZ1bmN0aW9uKGUpe2lmKHRoaXMudmlkZW8pe3ZhciByPXRo aXMudmlkZW8uc2Vla2FibGU7ZTxyLnN0YXJ0KDApfHxlPnIuZW5kKDApP3RoaXMuZmlyZShu ZXcgdC5FcnJvckV2ZW50KG5ldyB0LlZhbGlkYXRpb25FcnJvcigic291cmNlcy4iK3RoaXMu aWQsbnVsbCwiUGxheWJhY2sgZm9yIHRoaXMgdmlkZW8gY2FuIGJlIHNldCBvbmx5IGJldHdl ZW4gdGhlICIrci5zdGFydCgwKSsiIGFuZCAiK3IuZW5kKDApKyItc2Vjb25kIG1hcmsuIikp KTp0aGlzLnZpZGVvLmN1cnJlbnRUaW1lPWV9fSxyLnByb3RvdHlwZS5nZXRWaWRlbz1mdW5j dGlvbigpe3JldHVybiB0aGlzLnZpZGVvfSxyLnByb3RvdHlwZS5vbkFkZD1mdW5jdGlvbih0 KXt0aGlzLm1hcHx8KHRoaXMubWFwPXQsdGhpcy5sb2FkKCksdGhpcy52aWRlbyYmKHRoaXMu dmlkZW8ucGxheSgpLHRoaXMuc2V0Q29vcmRpbmF0ZXModGhpcy5jb29yZGluYXRlcykpKX0s ci5wcm90b3R5cGUucHJlcGFyZT1mdW5jdGlvbigpe2lmKCEoMD09PU9iamVjdC5rZXlzKHRo aXMudGlsZXMpLmxlbmd0aHx8dGhpcy52aWRlby5yZWFkeVN0YXRlPDIpKXt2YXIgZT10aGlz Lm1hcC5wYWludGVyLmNvbnRleHQscj1lLmdsO2Zvcih2YXIgbiBpbiB0aGlzLmJvdW5kc0J1 ZmZlcnx8KHRoaXMuYm91bmRzQnVmZmVyPWUuY3JlYXRlVmVydGV4QnVmZmVyKHRoaXMuX2Jv dW5kc0FycmF5LFAubWVtYmVycykpLHRoaXMuYm91bmRzU2VnbWVudHN8fCh0aGlzLmJvdW5k c1NlZ21lbnRzPXQuU2VnbWVudFZlY3Rvci5zaW1wbGVTZWdtZW50KDAsMCw0LDIpKSx0aGlz LnRleHR1cmU/dGhpcy52aWRlby5wYXVzZWR8fCh0aGlzLnRleHR1cmUuYmluZChyLkxJTkVB UixyLkNMQU1QX1RPX0VER0UpLHIudGV4U3ViSW1hZ2UyRChyLlRFWFRVUkVfMkQsMCwwLDAs ci5SR0JBLHIuVU5TSUdORURfQllURSx0aGlzLnZpZGVvKSk6KHRoaXMudGV4dHVyZT1uZXcg dC5UZXh0dXJlKGUsdGhpcy52aWRlbyxyLlJHQkEpLHRoaXMudGV4dHVyZS5iaW5kKHIuTElO RUFSLHIuQ0xBTVBfVE9fRURHRSkpLHRoaXMudGlsZXMpe3ZhciBpPXRoaXMudGlsZXNbbl07 ImxvYWRlZCIhPT1pLnN0YXRlJiYoaS5zdGF0ZT0ibG9hZGVkIixpLnRleHR1cmU9dGhpcy50 ZXh0dXJlKX19fSxyLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm57dHlw ZToidmlkZW8iLHVybHM6dGhpcy51cmxzLGNvb3JkaW5hdGVzOnRoaXMuY29vcmRpbmF0ZXN9 fSxyLnByb3RvdHlwZS5oYXNUcmFuc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmlk ZW8mJiF0aGlzLnZpZGVvLnBhdXNlZH0scn0oSSksej1mdW5jdGlvbihlKXtmdW5jdGlvbiBy KHIsbixpLGEpe2UuY2FsbCh0aGlzLHIsbixpLGEpLG4uY29vcmRpbmF0ZXM/QXJyYXkuaXNB cnJheShuLmNvb3JkaW5hdGVzKSYmND09PW4uY29vcmRpbmF0ZXMubGVuZ3RoJiYhbi5jb29y ZGluYXRlcy5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4hQXJyYXkuaXNBcnJheSh0KXx8MiE9 PXQubGVuZ3RofHx0LnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiJudW1iZXIiIT10eXBlb2Yg dH0pKX0pKXx8dGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IHQuVmFsaWRhdGlvbkVy cm9yKCJzb3VyY2VzLiIrcixudWxsLCciY29vcmRpbmF0ZXMiIHByb3BlcnR5IG11c3QgYmUg YW4gYXJyYXkgb2YgNCBsb25naXR1ZGUvbGF0aXR1ZGUgYXJyYXkgcGFpcnMnKSkpOnRoaXMu ZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyB0LlZhbGlkYXRpb25FcnJvcigic291cmNlcy4i K3IsbnVsbCwnbWlzc2luZyByZXF1aXJlZCBwcm9wZXJ0eSAiY29vcmRpbmF0ZXMiJykpKSxu LmFuaW1hdGUmJiJib29sZWFuIiE9dHlwZW9mIG4uYW5pbWF0ZSYmdGhpcy5maXJlKG5ldyB0 LkVycm9yRXZlbnQobmV3IHQuVmFsaWRhdGlvbkVycm9yKCJzb3VyY2VzLiIrcixudWxsLCdv cHRpb25hbCAiYW5pbWF0ZSIgcHJvcGVydHkgbXVzdCBiZSBhIGJvb2xlYW4gdmFsdWUnKSkp LG4uY2FudmFzPyJzdHJpbmciPT10eXBlb2Ygbi5jYW52YXN8fG4uY2FudmFzIGluc3RhbmNl b2YgdC53aW5kb3cuSFRNTENhbnZhc0VsZW1lbnR8fHRoaXMuZmlyZShuZXcgdC5FcnJvckV2 ZW50KG5ldyB0LlZhbGlkYXRpb25FcnJvcigic291cmNlcy4iK3IsbnVsbCwnImNhbnZhcyIg bXVzdCBiZSBlaXRoZXIgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBJRCBvZiB0aGUgY2Fu dmFzIGVsZW1lbnQgZnJvbSB3aGljaCB0byByZWFkLCBvciBhbiBIVE1MQ2FudmFzRWxlbWVu dCBpbnN0YW5jZScpKSk6dGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IHQuVmFsaWRh dGlvbkVycm9yKCJzb3VyY2VzLiIrcixudWxsLCdtaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5 ICJjYW52YXMiJykpKSx0aGlzLm9wdGlvbnM9bix0aGlzLmFuaW1hdGU9dm9pZCAwPT09bi5h bmltYXRlfHxuLmFuaW1hdGV9cmV0dXJuIGUmJihyLl9fcHJvdG9fXz1lKSxyLnByb3RvdHlw ZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlKSxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rv cj1yLHIucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oKXt0aGlzLl9sb2FkZWQ9ITAsdGhpcy5j YW52YXN8fCh0aGlzLmNhbnZhcz10aGlzLm9wdGlvbnMuY2FudmFzIGluc3RhbmNlb2YgdC53 aW5kb3cuSFRNTENhbnZhc0VsZW1lbnQ/dGhpcy5vcHRpb25zLmNhbnZhczp0LndpbmRvdy5k b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLm9wdGlvbnMuY2FudmFzKSksdGhpcy53aWR0 aD10aGlzLmNhbnZhcy53aWR0aCx0aGlzLmhlaWdodD10aGlzLmNhbnZhcy5oZWlnaHQsdGhp cy5faGFzSW52YWxpZERpbWVuc2lvbnMoKT90aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChu ZXcgRXJyb3IoIkNhbnZhcyBkaW1lbnNpb25zIGNhbm5vdCBiZSBsZXNzIHRoYW4gb3IgZXF1 YWwgdG8gemVyby4iKSkpOih0aGlzLnBsYXk9ZnVuY3Rpb24oKXt0aGlzLl9wbGF5aW5nPSEw LHRoaXMubWFwLnRyaWdnZXJSZXBhaW50KCl9LHRoaXMucGF1c2U9ZnVuY3Rpb24oKXt0aGlz Ll9wbGF5aW5nJiYodGhpcy5wcmVwYXJlKCksdGhpcy5fcGxheWluZz0hMSl9LHRoaXMuX2Zp bmlzaExvYWRpbmcoKSl9LHIucHJvdG90eXBlLmdldENhbnZhcz1mdW5jdGlvbigpe3JldHVy biB0aGlzLmNhbnZhc30sci5wcm90b3R5cGUub25BZGQ9ZnVuY3Rpb24odCl7dGhpcy5tYXA9 dCx0aGlzLmxvYWQoKSx0aGlzLmNhbnZhcyYmdGhpcy5hbmltYXRlJiZ0aGlzLnBsYXkoKX0s ci5wcm90b3R5cGUub25SZW1vdmU9ZnVuY3Rpb24oKXt0aGlzLnBhdXNlKCl9LHIucHJvdG90 eXBlLnByZXBhcmU9ZnVuY3Rpb24oKXt2YXIgZT0hMTtpZih0aGlzLmNhbnZhcy53aWR0aCE9 PXRoaXMud2lkdGgmJih0aGlzLndpZHRoPXRoaXMuY2FudmFzLndpZHRoLGU9ITApLHRoaXMu Y2FudmFzLmhlaWdodCE9PXRoaXMuaGVpZ2h0JiYodGhpcy5oZWlnaHQ9dGhpcy5jYW52YXMu aGVpZ2h0LGU9ITApLCF0aGlzLl9oYXNJbnZhbGlkRGltZW5zaW9ucygpJiYwIT09T2JqZWN0 LmtleXModGhpcy50aWxlcykubGVuZ3RoKXt2YXIgcj10aGlzLm1hcC5wYWludGVyLmNvbnRl eHQsbj1yLmdsO2Zvcih2YXIgaSBpbiB0aGlzLmJvdW5kc0J1ZmZlcnx8KHRoaXMuYm91bmRz QnVmZmVyPXIuY3JlYXRlVmVydGV4QnVmZmVyKHRoaXMuX2JvdW5kc0FycmF5LFAubWVtYmVy cykpLHRoaXMuYm91bmRzU2VnbWVudHN8fCh0aGlzLmJvdW5kc1NlZ21lbnRzPXQuU2VnbWVu dFZlY3Rvci5zaW1wbGVTZWdtZW50KDAsMCw0LDIpKSx0aGlzLnRleHR1cmU/KGV8fHRoaXMu X3BsYXlpbmcpJiZ0aGlzLnRleHR1cmUudXBkYXRlKHRoaXMuY2FudmFzLHtwcmVtdWx0aXBs eTohMH0pOnRoaXMudGV4dHVyZT1uZXcgdC5UZXh0dXJlKHIsdGhpcy5jYW52YXMsbi5SR0JB LHtwcmVtdWx0aXBseTohMH0pLHRoaXMudGlsZXMpe3ZhciBhPXRoaXMudGlsZXNbaV07Imxv YWRlZCIhPT1hLnN0YXRlJiYoYS5zdGF0ZT0ibG9hZGVkIixhLnRleHR1cmU9dGhpcy50ZXh0 dXJlKX19fSxyLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToi Y2FudmFzIixjb29yZGluYXRlczp0aGlzLmNvb3JkaW5hdGVzfX0sci5wcm90b3R5cGUuaGFz VHJhbnNpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wbGF5aW5nfSxyLnByb3RvdHlw ZS5faGFzSW52YWxpZERpbWVuc2lvbnM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxlPVt0aGlz LmNhbnZhcy53aWR0aCx0aGlzLmNhbnZhcy5oZWlnaHRdO3Q8ZS5sZW5ndGg7dCs9MSl7dmFy IHI9ZVt0XTtpZihpc05hTihyKXx8cjw9MClyZXR1cm4hMH1yZXR1cm4hMX0scn0oSSksRD17 dmVjdG9yOlMscmFzdGVyOkUsInJhc3Rlci1kZW0iOkwsZ2VvanNvbjpDLHZpZGVvOk8saW1h Z2U6SSxjYW52YXM6en07ZnVuY3Rpb24gUihlLHIpe3ZhciBuPXQuaWRlbnRpdHkoW10pO3Jl dHVybiB0LnRyYW5zbGF0ZShuLG4sWzEsMSwwXSksdC5zY2FsZShuLG4sWy41KmUud2lkdGgs LjUqZS5oZWlnaHQsMV0pLHQubXVsdGlwbHkobixuLGUuY2FsY3VsYXRlUG9zTWF0cml4KHIu dG9VbndyYXBwZWQoKSkpfWZ1bmN0aW9uIEYodCxlLHIsbixpLGEpe3ZhciBvPWZ1bmN0aW9u KHQsZSxyKXtpZih0KWZvcih2YXIgbj0wLGk9dDtuPGkubGVuZ3RoO24rPTEpe3ZhciBhPWVb aVtuXV07aWYoYSYmYS5zb3VyY2U9PT1yJiYiZmlsbC1leHRydXNpb24iPT09YS50eXBlKXJl dHVybiEwfWVsc2UgZm9yKHZhciBvIGluIGUpe3ZhciBzPWVbb107aWYocy5zb3VyY2U9PT1y JiYiZmlsbC1leHRydXNpb24iPT09cy50eXBlKXJldHVybiEwfXJldHVybiExfShpJiZpLmxh eWVycyxlLHQuaWQpLHM9YS5tYXhQaXRjaFNjYWxlRmFjdG9yKCksbD10LnRpbGVzSW4obixz LG8pO2wuc29ydChCKTtmb3IodmFyIGM9W10sdT0wLGY9bDt1PGYubGVuZ3RoO3UrPTEpe3Zh ciBoPWZbdV07Yy5wdXNoKHt3cmFwcGVkVGlsZUlEOmgudGlsZUlELndyYXBwZWQoKS5rZXks cXVlcnlSZXN1bHRzOmgudGlsZS5xdWVyeVJlbmRlcmVkRmVhdHVyZXMoZSxyLHQuX3N0YXRl LGgucXVlcnlHZW9tZXRyeSxoLmNhbWVyYVF1ZXJ5R2VvbWV0cnksaC5zY2FsZSxpLGEscyxS KHQudHJhbnNmb3JtLGgudGlsZUlEKSl9KX12YXIgcD1mdW5jdGlvbih0KXtmb3IodmFyIGU9 e30scj17fSxuPTAsaT10O248aS5sZW5ndGg7bis9MSl7dmFyIGE9aVtuXSxvPWEucXVlcnlS ZXN1bHRzLHM9YS53cmFwcGVkVGlsZUlELGw9cltzXT1yW3NdfHx7fTtmb3IodmFyIGMgaW4g bylmb3IodmFyIHU9b1tjXSxmPWxbY109bFtjXXx8e30saD1lW2NdPWVbY118fFtdLHA9MCxk PXU7cDxkLmxlbmd0aDtwKz0xKXt2YXIgbT1kW3BdO2ZbbS5mZWF0dXJlSW5kZXhdfHwoZltt LmZlYXR1cmVJbmRleF09ITAsaC5wdXNoKG0pKX19cmV0dXJuIGV9KGMpO2Zvcih2YXIgZCBp biBwKXBbZF0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHI9ZS5mZWF0dXJlLG49dC5nZXRG ZWF0dXJlU3RhdGUoci5sYXllclsic291cmNlLWxheWVyIl0sci5pZCk7ci5zb3VyY2U9ci5s YXllci5zb3VyY2Usci5sYXllclsic291cmNlLWxheWVyIl0mJihyLnNvdXJjZUxheWVyPXIu bGF5ZXJbInNvdXJjZS1sYXllciJdKSxyLnN0YXRlPW59KSk7cmV0dXJuIHB9ZnVuY3Rpb24g Qih0LGUpe3ZhciByPXQudGlsZUlELG49ZS50aWxlSUQ7cmV0dXJuIHIub3ZlcnNjYWxlZFot bi5vdmVyc2NhbGVkWnx8ci5jYW5vbmljYWwueS1uLmNhbm9uaWNhbC55fHxyLndyYXAtbi53 cmFwfHxyLmNhbm9uaWNhbC54LW4uY2Fub25pY2FsLnh9dmFyIE49ZnVuY3Rpb24odCxlKXt0 aGlzLm1heD10LHRoaXMub25SZW1vdmU9ZSx0aGlzLnJlc2V0KCl9O04ucHJvdG90eXBlLnJl c2V0PWZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMuZGF0YSlmb3IodmFyIGU9MCxyPXRo aXMuZGF0YVt0XTtlPHIubGVuZ3RoO2UrPTEpe3ZhciBuPXJbZV07bi50aW1lb3V0JiZjbGVh clRpbWVvdXQobi50aW1lb3V0KSx0aGlzLm9uUmVtb3ZlKG4udmFsdWUpfXJldHVybiB0aGlz LmRhdGE9e30sdGhpcy5vcmRlcj1bXSx0aGlzfSxOLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24o dCxlLHIpe3ZhciBuPXRoaXMsaT10LndyYXBwZWQoKS5rZXk7dm9pZCAwPT09dGhpcy5kYXRh W2ldJiYodGhpcy5kYXRhW2ldPVtdKTt2YXIgYT17dmFsdWU6ZSx0aW1lb3V0OnZvaWQgMH07 aWYodm9pZCAwIT09ciYmKGEudGltZW91dD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe24ucmVt b3ZlKHQsYSl9KSxyKSksdGhpcy5kYXRhW2ldLnB1c2goYSksdGhpcy5vcmRlci5wdXNoKGkp LHRoaXMub3JkZXIubGVuZ3RoPnRoaXMubWF4KXt2YXIgbz10aGlzLl9nZXRBbmRSZW1vdmVC eUtleSh0aGlzLm9yZGVyWzBdKTtvJiZ0aGlzLm9uUmVtb3ZlKG8pfXJldHVybiB0aGlzfSxO LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHQud3JhcHBlZCgpLmtleSBpbiB0 aGlzLmRhdGF9LE4ucHJvdG90eXBlLmdldEFuZFJlbW92ZT1mdW5jdGlvbih0KXtyZXR1cm4g dGhpcy5oYXModCk/dGhpcy5fZ2V0QW5kUmVtb3ZlQnlLZXkodC53cmFwcGVkKCkua2V5KTpu dWxsfSxOLnByb3RvdHlwZS5fZ2V0QW5kUmVtb3ZlQnlLZXk9ZnVuY3Rpb24odCl7dmFyIGU9 dGhpcy5kYXRhW3RdLnNoaWZ0KCk7cmV0dXJuIGUudGltZW91dCYmY2xlYXJUaW1lb3V0KGUu dGltZW91dCksMD09PXRoaXMuZGF0YVt0XS5sZW5ndGgmJmRlbGV0ZSB0aGlzLmRhdGFbdF0s dGhpcy5vcmRlci5zcGxpY2UodGhpcy5vcmRlci5pbmRleE9mKHQpLDEpLGUudmFsdWV9LE4u cHJvdG90eXBlLmdldEJ5S2V5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGF0YVt0XTtyZXR1 cm4gZT9lWzBdLnZhbHVlOm51bGx9LE4ucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1 cm4gdGhpcy5oYXModCk/dGhpcy5kYXRhW3Qud3JhcHBlZCgpLmtleV1bMF0udmFsdWU6bnVs bH0sTi5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMuaGFzKHQpKXJl dHVybiB0aGlzO3ZhciByPXQud3JhcHBlZCgpLmtleSxuPXZvaWQgMD09PWU/MDp0aGlzLmRh dGFbcl0uaW5kZXhPZihlKSxpPXRoaXMuZGF0YVtyXVtuXTtyZXR1cm4gdGhpcy5kYXRhW3Jd LnNwbGljZShuLDEpLGkudGltZW91dCYmY2xlYXJUaW1lb3V0KGkudGltZW91dCksMD09PXRo aXMuZGF0YVtyXS5sZW5ndGgmJmRlbGV0ZSB0aGlzLmRhdGFbcl0sdGhpcy5vblJlbW92ZShp LnZhbHVlKSx0aGlzLm9yZGVyLnNwbGljZSh0aGlzLm9yZGVyLmluZGV4T2YociksMSksdGhp c30sTi5wcm90b3R5cGUuc2V0TWF4U2l6ZT1mdW5jdGlvbih0KXtmb3IodGhpcy5tYXg9dDt0 aGlzLm9yZGVyLmxlbmd0aD50aGlzLm1heDspe3ZhciBlPXRoaXMuX2dldEFuZFJlbW92ZUJ5 S2V5KHRoaXMub3JkZXJbMF0pO2UmJnRoaXMub25SZW1vdmUoZSl9cmV0dXJuIHRoaXN9LE4u cHJvdG90eXBlLmZpbHRlcj1mdW5jdGlvbih0KXt2YXIgZT1bXTtmb3IodmFyIHIgaW4gdGhp cy5kYXRhKWZvcih2YXIgbj0wLGk9dGhpcy5kYXRhW3JdO248aS5sZW5ndGg7bis9MSl7dmFy IGE9aVtuXTt0KGEudmFsdWUpfHxlLnB1c2goYSl9Zm9yKHZhciBvPTAscz1lO288cy5sZW5n dGg7bys9MSl7dmFyIGw9c1tvXTt0aGlzLnJlbW92ZShsLnZhbHVlLnRpbGVJRCxsKX19O3Zh ciBqPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLmNvbnRleHQ9dDt2YXIgbj10LmdsO3RoaXMuYnVm ZmVyPW4uY3JlYXRlQnVmZmVyKCksdGhpcy5keW5hbWljRHJhdz1Cb29sZWFuKHIpLHRoaXMu Y29udGV4dC51bmJpbmRWQU8oKSx0LmJpbmRFbGVtZW50QnVmZmVyLnNldCh0aGlzLmJ1ZmZl ciksbi5idWZmZXJEYXRhKG4uRUxFTUVOVF9BUlJBWV9CVUZGRVIsZS5hcnJheUJ1ZmZlcix0 aGlzLmR5bmFtaWNEcmF3P24uRFlOQU1JQ19EUkFXOm4uU1RBVElDX0RSQVcpLHRoaXMuZHlu YW1pY0RyYXd8fGRlbGV0ZSBlLmFycmF5QnVmZmVyfTtqLnByb3RvdHlwZS5iaW5kPWZ1bmN0 aW9uKCl7dGhpcy5jb250ZXh0LmJpbmRFbGVtZW50QnVmZmVyLnNldCh0aGlzLmJ1ZmZlcil9 LGoucHJvdG90eXBlLnVwZGF0ZURhdGE9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jb250ZXh0 LmdsO3RoaXMuY29udGV4dC51bmJpbmRWQU8oKSx0aGlzLmJpbmQoKSxlLmJ1ZmZlclN1YkRh dGEoZS5FTEVNRU5UX0FSUkFZX0JVRkZFUiwwLHQuYXJyYXlCdWZmZXIpfSxqLnByb3RvdHlw ZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb250ZXh0LmdsO3RoaXMuYnVmZmVy JiYodC5kZWxldGVCdWZmZXIodGhpcy5idWZmZXIpLGRlbGV0ZSB0aGlzLmJ1ZmZlcil9O3Zh ciBVPXtJbnQ4OiJCWVRFIixVaW50ODoiVU5TSUdORURfQllURSIsSW50MTY6IlNIT1JUIixV aW50MTY6IlVOU0lHTkVEX1NIT1JUIixJbnQzMjoiSU5UIixVaW50MzI6IlVOU0lHTkVEX0lO VCIsRmxvYXQzMjoiRkxPQVQifSxWPWZ1bmN0aW9uKHQsZSxyLG4pe3RoaXMubGVuZ3RoPWUu bGVuZ3RoLHRoaXMuYXR0cmlidXRlcz1yLHRoaXMuaXRlbVNpemU9ZS5ieXRlc1BlckVsZW1l bnQsdGhpcy5keW5hbWljRHJhdz1uLHRoaXMuY29udGV4dD10O3ZhciBpPXQuZ2w7dGhpcy5i dWZmZXI9aS5jcmVhdGVCdWZmZXIoKSx0LmJpbmRWZXJ0ZXhCdWZmZXIuc2V0KHRoaXMuYnVm ZmVyKSxpLmJ1ZmZlckRhdGEoaS5BUlJBWV9CVUZGRVIsZS5hcnJheUJ1ZmZlcix0aGlzLmR5 bmFtaWNEcmF3P2kuRFlOQU1JQ19EUkFXOmkuU1RBVElDX0RSQVcpLHRoaXMuZHluYW1pY0Ry YXd8fGRlbGV0ZSBlLmFycmF5QnVmZmVyfTtWLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKCl7 dGhpcy5jb250ZXh0LmJpbmRWZXJ0ZXhCdWZmZXIuc2V0KHRoaXMuYnVmZmVyKX0sVi5wcm90 b3R5cGUudXBkYXRlRGF0YT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmNvbnRleHQuZ2w7dGhp cy5iaW5kKCksZS5idWZmZXJTdWJEYXRhKGUuQVJSQVlfQlVGRkVSLDAsdC5hcnJheUJ1ZmZl cil9LFYucHJvdG90eXBlLmVuYWJsZUF0dHJpYnV0ZXM9ZnVuY3Rpb24odCxlKXtmb3IodmFy IHI9MDtyPHRoaXMuYXR0cmlidXRlcy5sZW5ndGg7cisrKXt2YXIgbj10aGlzLmF0dHJpYnV0 ZXNbcl0saT1lLmF0dHJpYnV0ZXNbbi5uYW1lXTt2b2lkIDAhPT1pJiZ0LmVuYWJsZVZlcnRl eEF0dHJpYkFycmF5KGkpfX0sVi5wcm90b3R5cGUuc2V0VmVydGV4QXR0cmliUG9pbnRlcnM9 ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0wO248dGhpcy5hdHRyaWJ1dGVzLmxlbmd0aDtu Kyspe3ZhciBpPXRoaXMuYXR0cmlidXRlc1tuXSxhPWUuYXR0cmlidXRlc1tpLm5hbWVdO3Zv aWQgMCE9PWEmJnQudmVydGV4QXR0cmliUG9pbnRlcihhLGkuY29tcG9uZW50cyx0W1VbaS50 eXBlXV0sITEsdGhpcy5pdGVtU2l6ZSxpLm9mZnNldCt0aGlzLml0ZW1TaXplKihyfHwwKSl9 fSxWLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb250ZXh0Lmds O3RoaXMuYnVmZmVyJiYodC5kZWxldGVCdWZmZXIodGhpcy5idWZmZXIpLGRlbGV0ZSB0aGlz LmJ1ZmZlcil9O3ZhciBIPWZ1bmN0aW9uKHQpe3RoaXMuZ2w9dC5nbCx0aGlzLmRlZmF1bHQ9 dGhpcy5nZXREZWZhdWx0KCksdGhpcy5jdXJyZW50PXRoaXMuZGVmYXVsdCx0aGlzLmRpcnR5 PSExfTtILnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50fSxI LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7fSxILnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVmYXVsdH0sSC5wcm90b3R5cGUuc2V0RGVmYXVsdD1m dW5jdGlvbigpe3RoaXMuc2V0KHRoaXMuZGVmYXVsdCl9O3ZhciBxPWZ1bmN0aW9uKGUpe2Z1 bmN0aW9uIHIoKXtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gZSYmKHIuX19wcm90 b19fPWUpLHIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUpLHIucHJv dG90eXBlLmNvbnN0cnVjdG9yPXIsci5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigp e3JldHVybiB0LkNvbG9yLnRyYW5zcGFyZW50fSxyLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24o dCl7dmFyIGU9dGhpcy5jdXJyZW50Oyh0LnIhPT1lLnJ8fHQuZyE9PWUuZ3x8dC5iIT09ZS5i fHx0LmEhPT1lLmF8fHRoaXMuZGlydHkpJiYodGhpcy5nbC5jbGVhckNvbG9yKHQucix0Lmcs dC5iLHQuYSksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMSl9LHJ9KEgpLEc9ZnVuY3Rp b24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYo ZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlw ZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1 bmN0aW9uKCl7cmV0dXJuIDF9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXsodCE9PXRo aXMuY3VycmVudHx8dGhpcy5kaXJ0eSkmJih0aGlzLmdsLmNsZWFyRGVwdGgodCksdGhpcy5j dXJyZW50PXQsdGhpcy5kaXJ0eT0hMSl9LGV9KEgpLFk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24g ZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCks ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUu Y29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJu IDB9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXsodCE9PXRoaXMuY3VycmVudHx8dGhp cy5kaXJ0eSkmJih0aGlzLmdsLmNsZWFyU3RlbmNpbCh0KSx0aGlzLmN1cnJlbnQ9dCx0aGlz LmRpcnR5PSExKX0sZX0oSCksVz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0 aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1P YmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1l LGUucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm5bITAsITAsITAsITBd fSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jdXJyZW50Oyh0WzBd IT09ZVswXXx8dFsxXSE9PWVbMV18fHRbMl0hPT1lWzJdfHx0WzNdIT09ZVszXXx8dGhpcy5k aXJ0eSkmJih0aGlzLmdsLmNvbG9yTWFzayh0WzBdLHRbMV0sdFsyXSx0WzNdKSx0aGlzLmN1 cnJlbnQ9dCx0aGlzLmRpcnR5PSExKX0sZX0oSCksWD1mdW5jdGlvbih0KXtmdW5jdGlvbiBl KCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxl LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5j b25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4h MH0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpeyh0IT09dGhpcy5jdXJyZW50fHx0aGlz LmRpcnR5KSYmKHRoaXMuZ2wuZGVwdGhNYXNrKHQpLHRoaXMuY3VycmVudD10LHRoaXMuZGly dHk9ITEpfSxlfShIKSxaPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMs YXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVj dC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5w cm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiAyNTV9LGUucHJvdG90eXBl LnNldD1mdW5jdGlvbih0KXsodCE9PXRoaXMuY3VycmVudHx8dGhpcy5kaXJ0eSkmJih0aGlz LmdsLnN0ZW5jaWxNYXNrKHQpLHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITEpfSxlfShI KSxKPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1y ZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYm dC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0 RGVmYXVsdD1mdW5jdGlvbigpe3JldHVybntmdW5jOnRoaXMuZ2wuQUxXQVlTLHJlZjowLG1h c2s6MjU1fX0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY3VycmVu dDsodC5mdW5jIT09ZS5mdW5jfHx0LnJlZiE9PWUucmVmfHx0Lm1hc2shPT1lLm1hc2t8fHRo aXMuZGlydHkpJiYodGhpcy5nbC5zdGVuY2lsRnVuYyh0LmZ1bmMsdC5yZWYsdC5tYXNrKSx0 aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExKX0sZX0oSCksSz1mdW5jdGlvbih0KXtmdW5j dGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9f Xz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3Rv dHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rpb24oKXt2 YXIgdD10aGlzLmdsO3JldHVyblt0LktFRVAsdC5LRUVQLHQuS0VFUF19LGUucHJvdG90eXBl LnNldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmN1cnJlbnQ7KHRbMF0hPT1lWzBdfHx0WzFd IT09ZVsxXXx8dFsyXSE9PWVbMl18fHRoaXMuZGlydHkpJiYodGhpcy5nbC5zdGVuY2lsT3Ao dFswXSx0WzFdLHRbMl0pLHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITEpfSxlfShIKSxR PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1 cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5w cm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVm YXVsdD1mdW5jdGlvbigpe3JldHVybiExfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7 aWYodCE9PXRoaXMuY3VycmVudHx8dGhpcy5kaXJ0eSl7dmFyIGU9dGhpcy5nbDt0P2UuZW5h YmxlKGUuU1RFTkNJTF9URVNUKTplLmRpc2FibGUoZS5TVEVOQ0lMX1RFU1QpLHRoaXMuY3Vy cmVudD10LHRoaXMuZGlydHk9ITF9fSxlfShIKSwkPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUo KXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUu cHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNv bnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3JldHVyblsw LDFdfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jdXJyZW50Oyh0 WzBdIT09ZVswXXx8dFsxXSE9PWVbMV18fHRoaXMuZGlydHkpJiYodGhpcy5nbC5kZXB0aFJh bmdlKHRbMF0sdFsxXSksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMSl9LGV9KEgpLHR0 PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1 cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5w cm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVm YXVsdD1mdW5jdGlvbigpe3JldHVybiExfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7 aWYodCE9PXRoaXMuY3VycmVudHx8dGhpcy5kaXJ0eSl7dmFyIGU9dGhpcy5nbDt0P2UuZW5h YmxlKGUuREVQVEhfVEVTVCk6ZS5kaXNhYmxlKGUuREVQVEhfVEVTVCksdGhpcy5jdXJyZW50 PXQsdGhpcy5kaXJ0eT0hMX19LGV9KEgpLGV0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0 LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJv dG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0 cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiB0aGlz LmdsLkxFU1N9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXsodCE9PXRoaXMuY3VycmVu dHx8dGhpcy5kaXJ0eSkmJih0aGlzLmdsLmRlcHRoRnVuYyh0KSx0aGlzLmN1cnJlbnQ9dCx0 aGlzLmRpcnR5PSExKX0sZX0oSCkscnQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBw bHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5 cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0 b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJuITF9LGUucHJv dG90eXBlLnNldD1mdW5jdGlvbih0KXtpZih0IT09dGhpcy5jdXJyZW50fHx0aGlzLmRpcnR5 KXt2YXIgZT10aGlzLmdsO3Q/ZS5lbmFibGUoZS5CTEVORCk6ZS5kaXNhYmxlKGUuQkxFTkQp LHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITF9fSxlfShIKSxudD1mdW5jdGlvbih0KXtm dW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJv dG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnBy b3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rpb24o KXt2YXIgdD10aGlzLmdsO3JldHVyblt0Lk9ORSx0LlpFUk9dfSxlLnByb3RvdHlwZS5zZXQ9 ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jdXJyZW50Oyh0WzBdIT09ZVswXXx8dFsxXSE9PWVb MV18fHRoaXMuZGlydHkpJiYodGhpcy5nbC5ibGVuZEZ1bmModFswXSx0WzFdKSx0aGlzLmN1 cnJlbnQ9dCx0aGlzLmRpcnR5PSExKX0sZX0oSCksaXQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24g cigpe2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBlJiYoci5fX3Byb3RvX189ZSks ci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSksci5wcm90b3R5cGUu Y29uc3RydWN0b3I9cixyLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJu IHQuQ29sb3IudHJhbnNwYXJlbnR9LHIucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXt2YXIg ZT10aGlzLmN1cnJlbnQ7KHQuciE9PWUucnx8dC5nIT09ZS5nfHx0LmIhPT1lLmJ8fHQuYSE9 PWUuYXx8dGhpcy5kaXJ0eSkmJih0aGlzLmdsLmJsZW5kQ29sb3IodC5yLHQuZyx0LmIsdC5h KSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExKX0scn0oSCksYXQ9ZnVuY3Rpb24odCl7 ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3By b3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5w cm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMuZ2wuRlVOQ19BRER9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0 KXsodCE9PXRoaXMuY3VycmVudHx8dGhpcy5kaXJ0eSkmJih0aGlzLmdsLmJsZW5kRXF1YXRp b24odCksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMSl9LGV9KEgpLG90PWZ1bmN0aW9u KHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUu X19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUp LGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5j dGlvbigpe3JldHVybiExfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7aWYodCE9PXRo aXMuY3VycmVudHx8dGhpcy5kaXJ0eSl7dmFyIGU9dGhpcy5nbDt0P2UuZW5hYmxlKGUuQ1VM TF9GQUNFKTplLmRpc2FibGUoZS5DVUxMX0ZBQ0UpLHRoaXMuY3VycmVudD10LHRoaXMuZGly dHk9ITF9fSxlfShIKSxzdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlz LGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmpl Y3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUu cHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nbC5CQUNLfSxl LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7KHQhPT10aGlzLmN1cnJlbnR8fHRoaXMuZGly dHkpJiYodGhpcy5nbC5jdWxsRmFjZSh0KSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSEx KX0sZX0oSCksbHQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1 bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNy ZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3Rv dHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2wuQ0NXfSxlLnByb3Rv dHlwZS5zZXQ9ZnVuY3Rpb24odCl7KHQhPT10aGlzLmN1cnJlbnR8fHRoaXMuZGlydHkpJiYo dGhpcy5nbC5mcm9udEZhY2UodCksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMSl9LGV9 KEgpLGN0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRz KX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUo dCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUu Z2V0RGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiBudWxsfSxlLnByb3RvdHlwZS5zZXQ9ZnVu Y3Rpb24odCl7KHQhPT10aGlzLmN1cnJlbnR8fHRoaXMuZGlydHkpJiYodGhpcy5nbC51c2VQ cm9ncmFtKHQpLHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITEpfSxlfShIKSx1dD1mdW5j dGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQm JihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90 eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdldERlZmF1bHQ9 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nbC5URVhUVVJFMH0sZS5wcm90b3R5cGUuc2V0PWZ1 bmN0aW9uKHQpeyh0IT09dGhpcy5jdXJyZW50fHx0aGlzLmRpcnR5KSYmKHRoaXMuZ2wuYWN0 aXZlVGV4dHVyZSh0KSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExKX0sZX0oSCksZnQ9 ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVy biB0JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnBy b3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZh dWx0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nbDtyZXR1cm5bMCwwLHQuZHJhd2luZ0J1ZmZl cldpZHRoLHQuZHJhd2luZ0J1ZmZlckhlaWdodF19LGUucHJvdG90eXBlLnNldD1mdW5jdGlv bih0KXt2YXIgZT10aGlzLmN1cnJlbnQ7KHRbMF0hPT1lWzBdfHx0WzFdIT09ZVsxXXx8dFsy XSE9PWVbMl18fHRbM10hPT1lWzNdfHx0aGlzLmRpcnR5KSYmKHRoaXMuZ2wudmlld3BvcnQo dFswXSx0WzFdLHRbMl0sdFszXSksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMSl9LGV9 KEgpLGh0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRz KX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUo dCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUu Z2V0RGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiBudWxsfSxlLnByb3RvdHlwZS5zZXQ9ZnVu Y3Rpb24odCl7aWYodCE9PXRoaXMuY3VycmVudHx8dGhpcy5kaXJ0eSl7dmFyIGU9dGhpcy5n bDtlLmJpbmRGcmFtZWJ1ZmZlcihlLkZSQU1FQlVGRkVSLHQpLHRoaXMuY3VycmVudD10LHRo aXMuZGlydHk9ITF9fSxlfShIKSxwdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBs eSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlw ZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rv cj1lLGUucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZS5w cm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpe2lmKHQhPT10aGlzLmN1cnJlbnR8fHRoaXMuZGly dHkpe3ZhciBlPXRoaXMuZ2w7ZS5iaW5kUmVuZGVyYnVmZmVyKGUuUkVOREVSQlVGRkVSLHQp LHRoaXMuY3VycmVudD10LHRoaXMuZGlydHk9ITF9fSxlfShIKSxkdD1mdW5jdGlvbih0KXtm dW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJv dG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnBy b3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rpb24o KXtyZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpe2lmKHQhPT10aGlz LmN1cnJlbnR8fHRoaXMuZGlydHkpe3ZhciBlPXRoaXMuZ2w7ZS5iaW5kVGV4dHVyZShlLlRF WFRVUkVfMkQsdCksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMX19LGV9KEgpLG10PWZ1 bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4g dCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90 b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVs dD1mdW5jdGlvbigpe3JldHVybiBudWxsfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7 aWYodCE9PXRoaXMuY3VycmVudHx8dGhpcy5kaXJ0eSl7dmFyIGU9dGhpcy5nbDtlLmJpbmRC dWZmZXIoZS5BUlJBWV9CVUZGRVIsdCksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMX19 LGV9KEgpLGd0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1l bnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVh dGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5 cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiBudWxsfSxlLnByb3RvdHlwZS5zZXQ9 ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nbDtlLmJpbmRCdWZmZXIoZS5FTEVNRU5UX0FSUkFZ X0JVRkZFUix0KSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExfSxlfShIKSx2dD1mdW5j dGlvbih0KXtmdW5jdGlvbiBlKGUpe3QuY2FsbCh0aGlzLGUpLHRoaXMudmFvPWUuZXh0VmVy dGV4QXJyYXlPYmplY3R9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1P YmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1l LGUucHJvdG90eXBlLmdldERlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZS5wcm90 b3R5cGUuc2V0PWZ1bmN0aW9uKHQpe3RoaXMudmFvJiYodCE9PXRoaXMuY3VycmVudHx8dGhp cy5kaXJ0eSkmJih0aGlzLnZhby5iaW5kVmVydGV4QXJyYXlPRVModCksdGhpcy5jdXJyZW50 PXQsdGhpcy5kaXJ0eT0hMSl9LGV9KEgpLHl0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0 LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJv dG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0 cnVjdG9yPWUsZS5wcm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiA0fSxl LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCl7aWYodCE9PXRoaXMuY3VycmVudHx8dGhpcy5k aXJ0eSl7dmFyIGU9dGhpcy5nbDtlLnBpeGVsU3RvcmVpKGUuVU5QQUNLX0FMSUdOTUVOVCx0 KSx0aGlzLmN1cnJlbnQ9dCx0aGlzLmRpcnR5PSExfX0sZX0oSCkseHQ9ZnVuY3Rpb24odCl7 ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3By b3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5w cm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5nZXREZWZhdWx0PWZ1bmN0aW9u KCl7cmV0dXJuITF9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXtpZih0IT09dGhpcy5j dXJyZW50fHx0aGlzLmRpcnR5KXt2YXIgZT10aGlzLmdsO2UucGl4ZWxTdG9yZWkoZS5VTlBB Q0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wsdCksdGhpcy5jdXJyZW50PXQsdGhpcy5kaXJ0 eT0hMX19LGV9KEgpLGJ0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMs YXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVj dC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5w cm90b3R5cGUuZ2V0RGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiExfSxlLnByb3RvdHlwZS5z ZXQ9ZnVuY3Rpb24odCl7aWYodCE9PXRoaXMuY3VycmVudHx8dGhpcy5kaXJ0eSl7dmFyIGU9 dGhpcy5nbDtlLnBpeGVsU3RvcmVpKGUuVU5QQUNLX0ZMSVBfWV9XRUJHTCx0KSx0aGlzLmN1 cnJlbnQ9dCx0aGlzLmRpcnR5PSExfX0sZX0oSCksX3Q9ZnVuY3Rpb24odCl7ZnVuY3Rpb24g ZShlLHIpe3QuY2FsbCh0aGlzLGUpLHRoaXMuY29udGV4dD1lLHRoaXMucGFyZW50PXJ9cmV0 dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQu cHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdldERl ZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZX0oSCksd3Q9ZnVuY3Rpb24odCl7ZnVu Y3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3Rv X189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90 b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5zZXREaXJ0eT1mdW5jdGlvbigpe3Ro aXMuZGlydHk9ITB9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXtpZih0IT09dGhpcy5j dXJyZW50fHx0aGlzLmRpcnR5KXt0aGlzLmNvbnRleHQuYmluZEZyYW1lYnVmZmVyLnNldCh0 aGlzLnBhcmVudCk7dmFyIGU9dGhpcy5nbDtlLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGUuRlJB TUVCVUZGRVIsZS5DT0xPUl9BVFRBQ0hNRU5UMCxlLlRFWFRVUkVfMkQsdCwwKSx0aGlzLmN1 cnJlbnQ9dCx0aGlzLmRpcnR5PSExfX0sZX0oX3QpLFR0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9u IGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdCYmKGUuX19wcm90b19fPXQp LGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUpLGUucHJvdG90eXBl LmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQpe2lmKHQhPT10aGlz LmN1cnJlbnR8fHRoaXMuZGlydHkpe3RoaXMuY29udGV4dC5iaW5kRnJhbWVidWZmZXIuc2V0 KHRoaXMucGFyZW50KTt2YXIgZT10aGlzLmdsO2UuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo ZS5GUkFNRUJVRkZFUixlLkRFUFRIX0FUVEFDSE1FTlQsZS5SRU5ERVJCVUZGRVIsdCksdGhp cy5jdXJyZW50PXQsdGhpcy5kaXJ0eT0hMX19LGV9KF90KSxrdD1mdW5jdGlvbih0LGUscixu KXt0aGlzLmNvbnRleHQ9dCx0aGlzLndpZHRoPWUsdGhpcy5oZWlnaHQ9cjt2YXIgaT10Lmds LGE9dGhpcy5mcmFtZWJ1ZmZlcj1pLmNyZWF0ZUZyYW1lYnVmZmVyKCk7dGhpcy5jb2xvckF0 dGFjaG1lbnQ9bmV3IHd0KHQsYSksbiYmKHRoaXMuZGVwdGhBdHRhY2htZW50PW5ldyBUdCh0 LGEpKX07a3QucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNvbnRl eHQuZ2wsZT10aGlzLmNvbG9yQXR0YWNobWVudC5nZXQoKTtpZihlJiZ0LmRlbGV0ZVRleHR1 cmUoZSksdGhpcy5kZXB0aEF0dGFjaG1lbnQpe3ZhciByPXRoaXMuZGVwdGhBdHRhY2htZW50 LmdldCgpO3ImJnQuZGVsZXRlUmVuZGVyYnVmZmVyKHIpfXQuZGVsZXRlRnJhbWVidWZmZXIo dGhpcy5mcmFtZWJ1ZmZlcil9O3ZhciBBdD1mdW5jdGlvbih0LGUscil7dGhpcy5mdW5jPXQs dGhpcy5tYXNrPWUsdGhpcy5yYW5nZT1yfTtBdC5SZWFkT25seT0hMSxBdC5SZWFkV3JpdGU9 ITAsQXQuZGlzYWJsZWQ9bmV3IEF0KDUxOSxBdC5SZWFkT25seSxbMCwxXSk7dmFyIE10PWZ1 bmN0aW9uKHQsZSxyLG4saSxhKXt0aGlzLnRlc3Q9dCx0aGlzLnJlZj1lLHRoaXMubWFzaz1y LHRoaXMuZmFpbD1uLHRoaXMuZGVwdGhGYWlsPWksdGhpcy5wYXNzPWF9O010LmRpc2FibGVk PW5ldyBNdCh7ZnVuYzo1MTksbWFzazowfSwwLDAsNzY4MCw3NjgwLDc2ODApO3ZhciBTdD1m dW5jdGlvbih0LGUscil7dGhpcy5ibGVuZEZ1bmN0aW9uPXQsdGhpcy5ibGVuZENvbG9yPWUs dGhpcy5tYXNrPXJ9O1N0LmRpc2FibGVkPW5ldyBTdChTdC5SZXBsYWNlPVsxLDBdLHQuQ29s b3IudHJhbnNwYXJlbnQsWyExLCExLCExLCExXSksU3QudW5ibGVuZGVkPW5ldyBTdChTdC5S ZXBsYWNlLHQuQ29sb3IudHJhbnNwYXJlbnQsWyEwLCEwLCEwLCEwXSksU3QuYWxwaGFCbGVu ZGVkPW5ldyBTdChbMSw3NzFdLHQuQ29sb3IudHJhbnNwYXJlbnQsWyEwLCEwLCEwLCEwXSk7 dmFyIEV0PWZ1bmN0aW9uKHQsZSxyKXt0aGlzLmVuYWJsZT10LHRoaXMubW9kZT1lLHRoaXMu ZnJvbnRGYWNlPXJ9O0V0LmRpc2FibGVkPW5ldyBFdCghMSwxMDI5LDIzMDUpLEV0LmJhY2tD Q1c9bmV3IEV0KCEwLDEwMjksMjMwNSk7dmFyIEx0PWZ1bmN0aW9uKHQpe3RoaXMuZ2w9dCx0 aGlzLmV4dFZlcnRleEFycmF5T2JqZWN0PXRoaXMuZ2wuZ2V0RXh0ZW5zaW9uKCJPRVNfdmVy dGV4X2FycmF5X29iamVjdCIpLHRoaXMuY2xlYXJDb2xvcj1uZXcgcSh0aGlzKSx0aGlzLmNs ZWFyRGVwdGg9bmV3IEcodGhpcyksdGhpcy5jbGVhclN0ZW5jaWw9bmV3IFkodGhpcyksdGhp cy5jb2xvck1hc2s9bmV3IFcodGhpcyksdGhpcy5kZXB0aE1hc2s9bmV3IFgodGhpcyksdGhp cy5zdGVuY2lsTWFzaz1uZXcgWih0aGlzKSx0aGlzLnN0ZW5jaWxGdW5jPW5ldyBKKHRoaXMp LHRoaXMuc3RlbmNpbE9wPW5ldyBLKHRoaXMpLHRoaXMuc3RlbmNpbFRlc3Q9bmV3IFEodGhp cyksdGhpcy5kZXB0aFJhbmdlPW5ldyAkKHRoaXMpLHRoaXMuZGVwdGhUZXN0PW5ldyB0dCh0 aGlzKSx0aGlzLmRlcHRoRnVuYz1uZXcgZXQodGhpcyksdGhpcy5ibGVuZD1uZXcgcnQodGhp cyksdGhpcy5ibGVuZEZ1bmM9bmV3IG50KHRoaXMpLHRoaXMuYmxlbmRDb2xvcj1uZXcgaXQo dGhpcyksdGhpcy5ibGVuZEVxdWF0aW9uPW5ldyBhdCh0aGlzKSx0aGlzLmN1bGxGYWNlPW5l dyBvdCh0aGlzKSx0aGlzLmN1bGxGYWNlU2lkZT1uZXcgc3QodGhpcyksdGhpcy5mcm9udEZh Y2U9bmV3IGx0KHRoaXMpLHRoaXMucHJvZ3JhbT1uZXcgY3QodGhpcyksdGhpcy5hY3RpdmVU ZXh0dXJlPW5ldyB1dCh0aGlzKSx0aGlzLnZpZXdwb3J0PW5ldyBmdCh0aGlzKSx0aGlzLmJp bmRGcmFtZWJ1ZmZlcj1uZXcgaHQodGhpcyksdGhpcy5iaW5kUmVuZGVyYnVmZmVyPW5ldyBw dCh0aGlzKSx0aGlzLmJpbmRUZXh0dXJlPW5ldyBkdCh0aGlzKSx0aGlzLmJpbmRWZXJ0ZXhC dWZmZXI9bmV3IG10KHRoaXMpLHRoaXMuYmluZEVsZW1lbnRCdWZmZXI9bmV3IGd0KHRoaXMp LHRoaXMuYmluZFZlcnRleEFycmF5T0VTPXRoaXMuZXh0VmVydGV4QXJyYXlPYmplY3QmJm5l dyB2dCh0aGlzKSx0aGlzLnBpeGVsU3RvcmVVbnBhY2s9bmV3IHl0KHRoaXMpLHRoaXMucGl4 ZWxTdG9yZVVucGFja1ByZW11bHRpcGx5QWxwaGE9bmV3IHh0KHRoaXMpLHRoaXMucGl4ZWxT dG9yZVVucGFja0ZsaXBZPW5ldyBidCh0aGlzKSx0aGlzLmV4dFRleHR1cmVGaWx0ZXJBbmlz b3Ryb3BpYz10LmdldEV4dGVuc2lvbigiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGlj Iil8fHQuZ2V0RXh0ZW5zaW9uKCJNT1pfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGlj Iil8fHQuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJv cGljIiksdGhpcy5leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMmJih0aGlzLmV4dFRleHR1 cmVGaWx0ZXJBbmlzb3Ryb3BpY01heD10LmdldFBhcmFtZXRlcih0aGlzLmV4dFRleHR1cmVG aWx0ZXJBbmlzb3Ryb3BpYy5NQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpKSx0aGlz LmV4dFRleHR1cmVIYWxmRmxvYXQ9dC5nZXRFeHRlbnNpb24oIk9FU190ZXh0dXJlX2hhbGZf ZmxvYXQiKSx0aGlzLmV4dFRleHR1cmVIYWxmRmxvYXQmJih0LmdldEV4dGVuc2lvbigiT0VT X3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSx0aGlzLmV4dFJlbmRlclRvVGV4dHVyZUhh bGZGbG9hdD10LmdldEV4dGVuc2lvbigiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Iikp LHRoaXMuZXh0VGltZXJRdWVyeT10LmdldEV4dGVuc2lvbigiRVhUX2Rpc2pvaW50X3RpbWVy X3F1ZXJ5Iil9O0x0LnByb3RvdHlwZS5zZXREZWZhdWx0PWZ1bmN0aW9uKCl7dGhpcy51bmJp bmRWQU8oKSx0aGlzLmNsZWFyQ29sb3Iuc2V0RGVmYXVsdCgpLHRoaXMuY2xlYXJEZXB0aC5z ZXREZWZhdWx0KCksdGhpcy5jbGVhclN0ZW5jaWwuc2V0RGVmYXVsdCgpLHRoaXMuY29sb3JN YXNrLnNldERlZmF1bHQoKSx0aGlzLmRlcHRoTWFzay5zZXREZWZhdWx0KCksdGhpcy5zdGVu Y2lsTWFzay5zZXREZWZhdWx0KCksdGhpcy5zdGVuY2lsRnVuYy5zZXREZWZhdWx0KCksdGhp cy5zdGVuY2lsT3Auc2V0RGVmYXVsdCgpLHRoaXMuc3RlbmNpbFRlc3Quc2V0RGVmYXVsdCgp LHRoaXMuZGVwdGhSYW5nZS5zZXREZWZhdWx0KCksdGhpcy5kZXB0aFRlc3Quc2V0RGVmYXVs dCgpLHRoaXMuZGVwdGhGdW5jLnNldERlZmF1bHQoKSx0aGlzLmJsZW5kLnNldERlZmF1bHQo KSx0aGlzLmJsZW5kRnVuYy5zZXREZWZhdWx0KCksdGhpcy5ibGVuZENvbG9yLnNldERlZmF1 bHQoKSx0aGlzLmJsZW5kRXF1YXRpb24uc2V0RGVmYXVsdCgpLHRoaXMuY3VsbEZhY2Uuc2V0 RGVmYXVsdCgpLHRoaXMuY3VsbEZhY2VTaWRlLnNldERlZmF1bHQoKSx0aGlzLmZyb250RmFj ZS5zZXREZWZhdWx0KCksdGhpcy5wcm9ncmFtLnNldERlZmF1bHQoKSx0aGlzLmFjdGl2ZVRl eHR1cmUuc2V0RGVmYXVsdCgpLHRoaXMuYmluZEZyYW1lYnVmZmVyLnNldERlZmF1bHQoKSx0 aGlzLnBpeGVsU3RvcmVVbnBhY2suc2V0RGVmYXVsdCgpLHRoaXMucGl4ZWxTdG9yZVVucGFj a1ByZW11bHRpcGx5QWxwaGEuc2V0RGVmYXVsdCgpLHRoaXMucGl4ZWxTdG9yZVVucGFja0Zs aXBZLnNldERlZmF1bHQoKX0sTHQucHJvdG90eXBlLnNldERpcnR5PWZ1bmN0aW9uKCl7dGhp cy5jbGVhckNvbG9yLmRpcnR5PSEwLHRoaXMuY2xlYXJEZXB0aC5kaXJ0eT0hMCx0aGlzLmNs ZWFyU3RlbmNpbC5kaXJ0eT0hMCx0aGlzLmNvbG9yTWFzay5kaXJ0eT0hMCx0aGlzLmRlcHRo TWFzay5kaXJ0eT0hMCx0aGlzLnN0ZW5jaWxNYXNrLmRpcnR5PSEwLHRoaXMuc3RlbmNpbEZ1 bmMuZGlydHk9ITAsdGhpcy5zdGVuY2lsT3AuZGlydHk9ITAsdGhpcy5zdGVuY2lsVGVzdC5k aXJ0eT0hMCx0aGlzLmRlcHRoUmFuZ2UuZGlydHk9ITAsdGhpcy5kZXB0aFRlc3QuZGlydHk9 ITAsdGhpcy5kZXB0aEZ1bmMuZGlydHk9ITAsdGhpcy5ibGVuZC5kaXJ0eT0hMCx0aGlzLmJs ZW5kRnVuYy5kaXJ0eT0hMCx0aGlzLmJsZW5kQ29sb3IuZGlydHk9ITAsdGhpcy5ibGVuZEVx dWF0aW9uLmRpcnR5PSEwLHRoaXMuY3VsbEZhY2UuZGlydHk9ITAsdGhpcy5jdWxsRmFjZVNp ZGUuZGlydHk9ITAsdGhpcy5mcm9udEZhY2UuZGlydHk9ITAsdGhpcy5wcm9ncmFtLmRpcnR5 PSEwLHRoaXMuYWN0aXZlVGV4dHVyZS5kaXJ0eT0hMCx0aGlzLnZpZXdwb3J0LmRpcnR5PSEw LHRoaXMuYmluZEZyYW1lYnVmZmVyLmRpcnR5PSEwLHRoaXMuYmluZFJlbmRlcmJ1ZmZlci5k aXJ0eT0hMCx0aGlzLmJpbmRUZXh0dXJlLmRpcnR5PSEwLHRoaXMuYmluZFZlcnRleEJ1ZmZl ci5kaXJ0eT0hMCx0aGlzLmJpbmRFbGVtZW50QnVmZmVyLmRpcnR5PSEwLHRoaXMuZXh0VmVy dGV4QXJyYXlPYmplY3QmJih0aGlzLmJpbmRWZXJ0ZXhBcnJheU9FUy5kaXJ0eT0hMCksdGhp cy5waXhlbFN0b3JlVW5wYWNrLmRpcnR5PSEwLHRoaXMucGl4ZWxTdG9yZVVucGFja1ByZW11 bHRpcGx5QWxwaGEuZGlydHk9ITAsdGhpcy5waXhlbFN0b3JlVW5wYWNrRmxpcFkuZGlydHk9 ITB9LEx0LnByb3RvdHlwZS5jcmVhdGVJbmRleEJ1ZmZlcj1mdW5jdGlvbih0LGUpe3JldHVy biBuZXcgaih0aGlzLHQsZSl9LEx0LnByb3RvdHlwZS5jcmVhdGVWZXJ0ZXhCdWZmZXI9ZnVu Y3Rpb24odCxlLHIpe3JldHVybiBuZXcgVih0aGlzLHQsZSxyKX0sTHQucHJvdG90eXBlLmNy ZWF0ZVJlbmRlcmJ1ZmZlcj1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5nbCxpPW4uY3Jl YXRlUmVuZGVyYnVmZmVyKCk7cmV0dXJuIHRoaXMuYmluZFJlbmRlcmJ1ZmZlci5zZXQoaSks bi5yZW5kZXJidWZmZXJTdG9yYWdlKG4uUkVOREVSQlVGRkVSLHQsZSxyKSx0aGlzLmJpbmRS ZW5kZXJidWZmZXIuc2V0KG51bGwpLGl9LEx0LnByb3RvdHlwZS5jcmVhdGVGcmFtZWJ1ZmZl cj1mdW5jdGlvbih0LGUscil7cmV0dXJuIG5ldyBrdCh0aGlzLHQsZSxyKX0sTHQucHJvdG90 eXBlLmNsZWFyPWZ1bmN0aW9uKHQpe3ZhciBlPXQuY29sb3Iscj10LmRlcHRoLG49dGhpcy5n bCxpPTA7ZSYmKGl8PW4uQ09MT1JfQlVGRkVSX0JJVCx0aGlzLmNsZWFyQ29sb3Iuc2V0KGUp LHRoaXMuY29sb3JNYXNrLnNldChbITAsITAsITAsITBdKSksdm9pZCAwIT09ciYmKGl8PW4u REVQVEhfQlVGRkVSX0JJVCx0aGlzLmRlcHRoUmFuZ2Uuc2V0KFswLDFdKSx0aGlzLmNsZWFy RGVwdGguc2V0KHIpLHRoaXMuZGVwdGhNYXNrLnNldCghMCkpLG4uY2xlYXIoaSl9LEx0LnBy b3RvdHlwZS5zZXRDdWxsRmFjZT1mdW5jdGlvbih0KXshMT09PXQuZW5hYmxlP3RoaXMuY3Vs bEZhY2Uuc2V0KCExKToodGhpcy5jdWxsRmFjZS5zZXQoITApLHRoaXMuY3VsbEZhY2VTaWRl LnNldCh0Lm1vZGUpLHRoaXMuZnJvbnRGYWNlLnNldCh0LmZyb250RmFjZSkpfSxMdC5wcm90 b3R5cGUuc2V0RGVwdGhNb2RlPWZ1bmN0aW9uKHQpe3QuZnVuYyE9PXRoaXMuZ2wuQUxXQVlT fHx0Lm1hc2s/KHRoaXMuZGVwdGhUZXN0LnNldCghMCksdGhpcy5kZXB0aEZ1bmMuc2V0KHQu ZnVuYyksdGhpcy5kZXB0aE1hc2suc2V0KHQubWFzayksdGhpcy5kZXB0aFJhbmdlLnNldCh0 LnJhbmdlKSk6dGhpcy5kZXB0aFRlc3Quc2V0KCExKX0sTHQucHJvdG90eXBlLnNldFN0ZW5j aWxNb2RlPWZ1bmN0aW9uKHQpe3QudGVzdC5mdW5jIT09dGhpcy5nbC5BTFdBWVN8fHQubWFz az8odGhpcy5zdGVuY2lsVGVzdC5zZXQoITApLHRoaXMuc3RlbmNpbE1hc2suc2V0KHQubWFz ayksdGhpcy5zdGVuY2lsT3Auc2V0KFt0LmZhaWwsdC5kZXB0aEZhaWwsdC5wYXNzXSksdGhp cy5zdGVuY2lsRnVuYy5zZXQoe2Z1bmM6dC50ZXN0LmZ1bmMscmVmOnQucmVmLG1hc2s6dC50 ZXN0Lm1hc2t9KSk6dGhpcy5zdGVuY2lsVGVzdC5zZXQoITEpfSxMdC5wcm90b3R5cGUuc2V0 Q29sb3JNb2RlPWZ1bmN0aW9uKGUpe3QuZGVlcEVxdWFsKGUuYmxlbmRGdW5jdGlvbixTdC5S ZXBsYWNlKT90aGlzLmJsZW5kLnNldCghMSk6KHRoaXMuYmxlbmQuc2V0KCEwKSx0aGlzLmJs ZW5kRnVuYy5zZXQoZS5ibGVuZEZ1bmN0aW9uKSx0aGlzLmJsZW5kQ29sb3Iuc2V0KGUuYmxl bmRDb2xvcikpLHRoaXMuY29sb3JNYXNrLnNldChlLm1hc2spfSxMdC5wcm90b3R5cGUudW5i aW5kVkFPPWZ1bmN0aW9uKCl7dGhpcy5leHRWZXJ0ZXhBcnJheU9iamVjdCYmdGhpcy5iaW5k VmVydGV4QXJyYXlPRVMuc2V0KG51bGwpfTt2YXIgQ3Q9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24g cihyLG4saSl7dmFyIGE9dGhpcztlLmNhbGwodGhpcyksdGhpcy5pZD1yLHRoaXMuZGlzcGF0 Y2hlcj1pLHRoaXMub24oImRhdGEiLChmdW5jdGlvbih0KXsic291cmNlIj09PXQuZGF0YVR5 cGUmJiJtZXRhZGF0YSI9PT10LnNvdXJjZURhdGFUeXBlJiYoYS5fc291cmNlTG9hZGVkPSEw KSxhLl9zb3VyY2VMb2FkZWQmJiFhLl9wYXVzZWQmJiJzb3VyY2UiPT09dC5kYXRhVHlwZSYm ImNvbnRlbnQiPT09dC5zb3VyY2VEYXRhVHlwZSYmKGEucmVsb2FkKCksYS50cmFuc2Zvcm0m JmEudXBkYXRlKGEudHJhbnNmb3JtKSl9KSksdGhpcy5vbigiZXJyb3IiLChmdW5jdGlvbigp e2EuX3NvdXJjZUVycm9yZWQ9ITB9KSksdGhpcy5fc291cmNlPWZ1bmN0aW9uKGUscixuLGkp e3ZhciBhPW5ldyBEW3IudHlwZV0oZSxyLG4saSk7aWYoYS5pZCE9PWUpdGhyb3cgbmV3IEVy cm9yKCJFeHBlY3RlZCBTb3VyY2UgaWQgdG8gYmUgIitlKyIgaW5zdGVhZCBvZiAiK2EuaWQp O3JldHVybiB0LmJpbmRBbGwoWyJsb2FkIiwiYWJvcnQiLCJ1bmxvYWQiLCJzZXJpYWxpemUi LCJwcmVwYXJlIl0sYSksYX0ocixuLGksdGhpcyksdGhpcy5fdGlsZXM9e30sdGhpcy5fY2Fj aGU9bmV3IE4oMCx0aGlzLl91bmxvYWRUaWxlLmJpbmQodGhpcykpLHRoaXMuX3RpbWVycz17 fSx0aGlzLl9jYWNoZVRpbWVycz17fSx0aGlzLl9tYXhUaWxlQ2FjaGVTaXplPW51bGwsdGhp cy5fbG9hZGVkUGFyZW50VGlsZXM9e30sdGhpcy5fY292ZXJlZFRpbGVzPXt9LHRoaXMuX3N0 YXRlPW5ldyB0LlNvdXJjZUZlYXR1cmVTdGF0ZX1yZXR1cm4gZSYmKHIuX19wcm90b19fPWUp LHIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUpLHIucHJvdG90eXBl LmNvbnN0cnVjdG9yPXIsci5wcm90b3R5cGUub25BZGQ9ZnVuY3Rpb24odCl7dGhpcy5tYXA9 dCx0aGlzLl9tYXhUaWxlQ2FjaGVTaXplPXQ/dC5fbWF4VGlsZUNhY2hlU2l6ZTpudWxsLHRo aXMuX3NvdXJjZSYmdGhpcy5fc291cmNlLm9uQWRkJiZ0aGlzLl9zb3VyY2Uub25BZGQodCl9 LHIucHJvdG90eXBlLm9uUmVtb3ZlPWZ1bmN0aW9uKHQpe3RoaXMuX3NvdXJjZSYmdGhpcy5f c291cmNlLm9uUmVtb3ZlJiZ0aGlzLl9zb3VyY2Uub25SZW1vdmUodCl9LHIucHJvdG90eXBl LmxvYWRlZD1mdW5jdGlvbigpe2lmKHRoaXMuX3NvdXJjZUVycm9yZWQpcmV0dXJuITA7aWYo IXRoaXMuX3NvdXJjZUxvYWRlZClyZXR1cm4hMTtpZighdGhpcy5fc291cmNlLmxvYWRlZCgp KXJldHVybiExO2Zvcih2YXIgdCBpbiB0aGlzLl90aWxlcyl7dmFyIGU9dGhpcy5fdGlsZXNb dF07aWYoImxvYWRlZCIhPT1lLnN0YXRlJiYiZXJyb3JlZCIhPT1lLnN0YXRlKXJldHVybiEx fXJldHVybiEwfSxyLnByb3RvdHlwZS5nZXRTb3VyY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy5fc291cmNlfSxyLnByb3RvdHlwZS5wYXVzZT1mdW5jdGlvbigpe3RoaXMuX3BhdXNlZD0h MH0sci5wcm90b3R5cGUucmVzdW1lPWZ1bmN0aW9uKCl7aWYodGhpcy5fcGF1c2VkKXt2YXIg dD10aGlzLl9zaG91bGRSZWxvYWRPblJlc3VtZTt0aGlzLl9wYXVzZWQ9ITEsdGhpcy5fc2hv dWxkUmVsb2FkT25SZXN1bWU9ITEsdCYmdGhpcy5yZWxvYWQoKSx0aGlzLnRyYW5zZm9ybSYm dGhpcy51cGRhdGUodGhpcy50cmFuc2Zvcm0pfX0sci5wcm90b3R5cGUuX2xvYWRUaWxlPWZ1 bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3NvdXJjZS5sb2FkVGlsZSh0LGUpfSxyLnByb3Rv dHlwZS5fdW5sb2FkVGlsZT1mdW5jdGlvbih0KXtpZih0aGlzLl9zb3VyY2UudW5sb2FkVGls ZSlyZXR1cm4gdGhpcy5fc291cmNlLnVubG9hZFRpbGUodCwoZnVuY3Rpb24oKXt9KSl9LHIu cHJvdG90eXBlLl9hYm9ydFRpbGU9ZnVuY3Rpb24odCl7aWYodGhpcy5fc291cmNlLmFib3J0 VGlsZSlyZXR1cm4gdGhpcy5fc291cmNlLmFib3J0VGlsZSh0LChmdW5jdGlvbigpe30pKX0s ci5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NvdXJjZS5z ZXJpYWxpemUoKX0sci5wcm90b3R5cGUucHJlcGFyZT1mdW5jdGlvbih0KXtmb3IodmFyIGUg aW4gdGhpcy5fc291cmNlLnByZXBhcmUmJnRoaXMuX3NvdXJjZS5wcmVwYXJlKCksdGhpcy5f c3RhdGUuY29hbGVzY2VDaGFuZ2VzKHRoaXMuX3RpbGVzLHRoaXMubWFwP3RoaXMubWFwLnBh aW50ZXI6bnVsbCksdGhpcy5fdGlsZXMpe3ZhciByPXRoaXMuX3RpbGVzW2VdO3IudXBsb2Fk KHQpLHIucHJlcGFyZSh0aGlzLm1hcC5zdHlsZS5pbWFnZU1hbmFnZXIpfX0sci5wcm90b3R5 cGUuZ2V0SWRzPWZ1bmN0aW9uKCl7cmV0dXJuIHQudmFsdWVzKHRoaXMuX3RpbGVzKS5tYXAo KGZ1bmN0aW9uKHQpe3JldHVybiB0LnRpbGVJRH0pKS5zb3J0KFB0KS5tYXAoKGZ1bmN0aW9u KHQpe3JldHVybiB0LmtleX0pKX0sci5wcm90b3R5cGUuZ2V0UmVuZGVyYWJsZUlkcz1mdW5j dGlvbihlKXt2YXIgcj10aGlzLG49W107Zm9yKHZhciBpIGluIHRoaXMuX3RpbGVzKXRoaXMu X2lzSWRSZW5kZXJhYmxlKGksZSkmJm4ucHVzaCh0aGlzLl90aWxlc1tpXSk7cmV0dXJuIGU/ bi5zb3J0KChmdW5jdGlvbihlLG4pe3ZhciBpPWUudGlsZUlELGE9bi50aWxlSUQsbz1uZXcg dC5Qb2ludChpLmNhbm9uaWNhbC54LGkuY2Fub25pY2FsLnkpLl9yb3RhdGUoci50cmFuc2Zv cm0uYW5nbGUpLHM9bmV3IHQuUG9pbnQoYS5jYW5vbmljYWwueCxhLmNhbm9uaWNhbC55KS5f cm90YXRlKHIudHJhbnNmb3JtLmFuZ2xlKTtyZXR1cm4gaS5vdmVyc2NhbGVkWi1hLm92ZXJz Y2FsZWRafHxzLnktby55fHxzLngtby54fSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQu dGlsZUlELmtleX0pKTpuLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudGlsZUlEfSkpLnNv cnQoUHQpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQua2V5fSkpfSxyLnByb3RvdHlwZS5o YXNSZW5kZXJhYmxlUGFyZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZmluZExvYWRlZFBh cmVudCh0LDApO3JldHVybiEhZSYmdGhpcy5faXNJZFJlbmRlcmFibGUoZS50aWxlSUQua2V5 KX0sci5wcm90b3R5cGUuX2lzSWRSZW5kZXJhYmxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRo aXMuX3RpbGVzW3RdJiZ0aGlzLl90aWxlc1t0XS5oYXNEYXRhKCkmJiF0aGlzLl9jb3ZlcmVk VGlsZXNbdF0mJihlfHwhdGhpcy5fdGlsZXNbdF0uaG9sZGluZ0ZvckZhZGUoKSl9LHIucHJv dG90eXBlLnJlbG9hZD1mdW5jdGlvbigpe2lmKHRoaXMuX3BhdXNlZCl0aGlzLl9zaG91bGRS ZWxvYWRPblJlc3VtZT0hMDtlbHNlIGZvcih2YXIgdCBpbiB0aGlzLl9jYWNoZS5yZXNldCgp LHRoaXMuX3RpbGVzKSJlcnJvcmVkIiE9PXRoaXMuX3RpbGVzW3RdLnN0YXRlJiZ0aGlzLl9y ZWxvYWRUaWxlKHQsInJlbG9hZGluZyIpfSxyLnByb3RvdHlwZS5fcmVsb2FkVGlsZT1mdW5j dGlvbih0LGUpe3ZhciByPXRoaXMuX3RpbGVzW3RdO3ImJigibG9hZGluZyIhPT1yLnN0YXRl JiYoci5zdGF0ZT1lKSx0aGlzLl9sb2FkVGlsZShyLHRoaXMuX3RpbGVMb2FkZWQuYmluZCh0 aGlzLHIsdCxlKSkpfSxyLnByb3RvdHlwZS5fdGlsZUxvYWRlZD1mdW5jdGlvbihlLHIsbixp KXtpZihpKXJldHVybiBlLnN0YXRlPSJlcnJvcmVkIix2b2lkKDQwNCE9PWkuc3RhdHVzP3Ro aXMuX3NvdXJjZS5maXJlKG5ldyB0LkVycm9yRXZlbnQoaSx7dGlsZTplfSkpOnRoaXMudXBk YXRlKHRoaXMudHJhbnNmb3JtKSk7ZS50aW1lQWRkZWQ9dC5icm93c2VyLm5vdygpLCJleHBp cmVkIj09PW4mJihlLnJlZnJlc2hlZFVwb25FeHBpcmF0aW9uPSEwKSx0aGlzLl9zZXRUaWxl UmVsb2FkVGltZXIocixlKSwicmFzdGVyLWRlbSI9PT10aGlzLmdldFNvdXJjZSgpLnR5cGUm JmUuZGVtJiZ0aGlzLl9iYWNrZmlsbERFTShlKSx0aGlzLl9zdGF0ZS5pbml0aWFsaXplVGls ZVN0YXRlKGUsdGhpcy5tYXA/dGhpcy5tYXAucGFpbnRlcjpudWxsKSx0aGlzLl9zb3VyY2Uu ZmlyZShuZXcgdC5FdmVudCgiZGF0YSIse2RhdGFUeXBlOiJzb3VyY2UiLHRpbGU6ZSxjb29y ZDplLnRpbGVJRH0pKX0sci5wcm90b3R5cGUuX2JhY2tmaWxsREVNPWZ1bmN0aW9uKHQpe2Zv cih2YXIgZT10aGlzLmdldFJlbmRlcmFibGVJZHMoKSxyPTA7cjxlLmxlbmd0aDtyKyspe3Zh ciBuPWVbcl07aWYodC5uZWlnaGJvcmluZ1RpbGVzJiZ0Lm5laWdoYm9yaW5nVGlsZXNbbl0p e3ZhciBpPXRoaXMuZ2V0VGlsZUJ5SUQobik7YSh0LGkpLGEoaSx0KX19ZnVuY3Rpb24gYSh0 LGUpe3QubmVlZHNIaWxsc2hhZGVQcmVwYXJlPSEwO3ZhciByPWUudGlsZUlELmNhbm9uaWNh bC54LXQudGlsZUlELmNhbm9uaWNhbC54LG49ZS50aWxlSUQuY2Fub25pY2FsLnktdC50aWxl SUQuY2Fub25pY2FsLnksaT1NYXRoLnBvdygyLHQudGlsZUlELmNhbm9uaWNhbC56KSxhPWUu dGlsZUlELmtleTswPT09ciYmMD09PW58fE1hdGguYWJzKG4pPjF8fChNYXRoLmFicyhyKT4x JiYoMT09PU1hdGguYWJzKHIraSk/cis9aToxPT09TWF0aC5hYnMoci1pKSYmKHItPWkpKSxl LmRlbSYmdC5kZW0mJih0LmRlbS5iYWNrZmlsbEJvcmRlcihlLmRlbSxyLG4pLHQubmVpZ2hi b3JpbmdUaWxlcyYmdC5uZWlnaGJvcmluZ1RpbGVzW2FdJiYodC5uZWlnaGJvcmluZ1RpbGVz W2FdLmJhY2tmaWxsZWQ9ITApKSl9fSxyLnByb3RvdHlwZS5nZXRUaWxlPWZ1bmN0aW9uKHQp e3JldHVybiB0aGlzLmdldFRpbGVCeUlEKHQua2V5KX0sci5wcm90b3R5cGUuZ2V0VGlsZUJ5 SUQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3RpbGVzW3RdfSxyLnByb3RvdHlwZS5fcmV0 YWluTG9hZGVkQ2hpbGRyZW49ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBpIGluIHRoaXMu X3RpbGVzKXt2YXIgYT10aGlzLl90aWxlc1tpXTtpZighKG5baV18fCFhLmhhc0RhdGEoKXx8 YS50aWxlSUQub3ZlcnNjYWxlZFo8PWV8fGEudGlsZUlELm92ZXJzY2FsZWRaPnIpKXtmb3Io dmFyIG89YS50aWxlSUQ7YSYmYS50aWxlSUQub3ZlcnNjYWxlZFo+ZSsxOyl7dmFyIHM9YS50 aWxlSUQuc2NhbGVkVG8oYS50aWxlSUQub3ZlcnNjYWxlZFotMSk7KGE9dGhpcy5fdGlsZXNb cy5rZXldKSYmYS5oYXNEYXRhKCkmJihvPXMpfWZvcih2YXIgbD1vO2wub3ZlcnNjYWxlZFo+ ZTspaWYodFsobD1sLnNjYWxlZFRvKGwub3ZlcnNjYWxlZFotMSkpLmtleV0pe25bby5rZXld PW87YnJlYWt9fX19LHIucHJvdG90eXBlLmZpbmRMb2FkZWRQYXJlbnQ9ZnVuY3Rpb24odCxl KXtpZih0LmtleSBpbiB0aGlzLl9sb2FkZWRQYXJlbnRUaWxlcyl7dmFyIHI9dGhpcy5fbG9h ZGVkUGFyZW50VGlsZXNbdC5rZXldO3JldHVybiByJiZyLnRpbGVJRC5vdmVyc2NhbGVkWj49 ZT9yOm51bGx9Zm9yKHZhciBuPXQub3ZlcnNjYWxlZFotMTtuPj1lO24tLSl7dmFyIGk9dC5z Y2FsZWRUbyhuKSxhPXRoaXMuX2dldExvYWRlZFRpbGUoaSk7aWYoYSlyZXR1cm4gYX19LHIu cHJvdG90eXBlLl9nZXRMb2FkZWRUaWxlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3RpbGVz W3Qua2V5XTtyZXR1cm4gZSYmZS5oYXNEYXRhKCk/ZTp0aGlzLl9jYWNoZS5nZXRCeUtleSh0 LndyYXBwZWQoKS5rZXkpfSxyLnByb3RvdHlwZS51cGRhdGVDYWNoZVNpemU9ZnVuY3Rpb24o dCl7dmFyIGU9KE1hdGguY2VpbCh0LndpZHRoL3RoaXMuX3NvdXJjZS50aWxlU2l6ZSkrMSkq KE1hdGguY2VpbCh0LmhlaWdodC90aGlzLl9zb3VyY2UudGlsZVNpemUpKzEpLHI9TWF0aC5m bG9vcig1KmUpLG49Im51bWJlciI9PXR5cGVvZiB0aGlzLl9tYXhUaWxlQ2FjaGVTaXplP01h dGgubWluKHRoaXMuX21heFRpbGVDYWNoZVNpemUscik6cjt0aGlzLl9jYWNoZS5zZXRNYXhT aXplKG4pfSxyLnByb3RvdHlwZS5oYW5kbGVXcmFwSnVtcD1mdW5jdGlvbih0KXt2YXIgZT0o dC0odm9pZCAwPT09dGhpcy5fcHJldkxuZz90OnRoaXMuX3ByZXZMbmcpKS8zNjAscj1NYXRo LnJvdW5kKGUpO2lmKHRoaXMuX3ByZXZMbmc9dCxyKXt2YXIgbj17fTtmb3IodmFyIGkgaW4g dGhpcy5fdGlsZXMpe3ZhciBhPXRoaXMuX3RpbGVzW2ldO2EudGlsZUlEPWEudGlsZUlELnVu d3JhcFRvKGEudGlsZUlELndyYXArciksblthLnRpbGVJRC5rZXldPWF9Zm9yKHZhciBvIGlu IHRoaXMuX3RpbGVzPW4sdGhpcy5fdGltZXJzKWNsZWFyVGltZW91dCh0aGlzLl90aW1lcnNb b10pLGRlbGV0ZSB0aGlzLl90aW1lcnNbb107Zm9yKHZhciBzIGluIHRoaXMuX3RpbGVzKXt2 YXIgbD10aGlzLl90aWxlc1tzXTt0aGlzLl9zZXRUaWxlUmVsb2FkVGltZXIocyxsKX19fSxy LnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcztpZih0aGlzLnRyYW5z Zm9ybT1lLHRoaXMuX3NvdXJjZUxvYWRlZCYmIXRoaXMuX3BhdXNlZCl7dmFyIGk7dGhpcy51 cGRhdGVDYWNoZVNpemUoZSksdGhpcy5oYW5kbGVXcmFwSnVtcCh0aGlzLnRyYW5zZm9ybS5j ZW50ZXIubG5nKSx0aGlzLl9jb3ZlcmVkVGlsZXM9e30sdGhpcy51c2VkP3RoaXMuX3NvdXJj ZS50aWxlSUQ/aT1lLmdldFZpc2libGVVbndyYXBwZWRDb29yZGluYXRlcyh0aGlzLl9zb3Vy Y2UudGlsZUlEKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdC5PdmVyc2NhbGVkVGls ZUlEKGUuY2Fub25pY2FsLnosZS53cmFwLGUuY2Fub25pY2FsLnosZS5jYW5vbmljYWwueCxl LmNhbm9uaWNhbC55KX0pKTooaT1lLmNvdmVyaW5nVGlsZXMoe3RpbGVTaXplOnRoaXMuX3Nv dXJjZS50aWxlU2l6ZSxtaW56b29tOnRoaXMuX3NvdXJjZS5taW56b29tLG1heHpvb206dGhp cy5fc291cmNlLm1heHpvb20scm91bmRab29tOnRoaXMuX3NvdXJjZS5yb3VuZFpvb20scmVw YXJzZU92ZXJzY2FsZWQ6dGhpcy5fc291cmNlLnJlcGFyc2VPdmVyc2NhbGVkfSksdGhpcy5f c291cmNlLmhhc1RpbGUmJihpPWkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbi5fc291 cmNlLmhhc1RpbGUodCl9KSkpKTppPVtdO3ZhciBhPWUuY292ZXJpbmdab29tTGV2ZWwodGhp cy5fc291cmNlKSxvPU1hdGgubWF4KGEtci5tYXhPdmVyem9vbWluZyx0aGlzLl9zb3VyY2Uu bWluem9vbSkscz1NYXRoLm1heChhK3IubWF4VW5kZXJ6b29taW5nLHRoaXMuX3NvdXJjZS5t aW56b29tKSxsPXRoaXMuX3VwZGF0ZVJldGFpbmVkVGlsZXMoaSxhKTtpZihJdCh0aGlzLl9z b3VyY2UudHlwZSkpe2Zvcih2YXIgYz17fSx1PXt9LGY9MCxoPU9iamVjdC5rZXlzKGwpO2Y8 aC5sZW5ndGg7Zis9MSl7dmFyIHA9aFtmXSxkPWxbcF0sbT10aGlzLl90aWxlc1twXTtpZiht JiYhKG0uZmFkZUVuZFRpbWUmJm0uZmFkZUVuZFRpbWU8PXQuYnJvd3Nlci5ub3coKSkpe3Zh ciBnPXRoaXMuZmluZExvYWRlZFBhcmVudChkLG8pO2cmJih0aGlzLl9hZGRUaWxlKGcudGls ZUlEKSxjW2cudGlsZUlELmtleV09Zy50aWxlSUQpLHVbcF09ZH19Zm9yKHZhciB2IGluIHRo aXMuX3JldGFpbkxvYWRlZENoaWxkcmVuKHUsYSxzLGwpLGMpbFt2XXx8KHRoaXMuX2NvdmVy ZWRUaWxlc1t2XT0hMCxsW3ZdPWNbdl0pfWZvcih2YXIgeSBpbiBsKXRoaXMuX3RpbGVzW3ld LmNsZWFyRmFkZUhvbGQoKTtmb3IodmFyIHg9MCxiPXQua2V5c0RpZmZlcmVuY2UodGhpcy5f dGlsZXMsbCk7eDxiLmxlbmd0aDt4Kz0xKXt2YXIgXz1iW3hdLHc9dGhpcy5fdGlsZXNbX107 dy5oYXNTeW1ib2xCdWNrZXRzJiYhdy5ob2xkaW5nRm9yRmFkZSgpP3cuc2V0SG9sZER1cmF0 aW9uKHRoaXMubWFwLl9mYWRlRHVyYXRpb24pOncuaGFzU3ltYm9sQnVja2V0cyYmIXcuc3lt Ym9sRmFkZUZpbmlzaGVkKCl8fHRoaXMuX3JlbW92ZVRpbGUoXyl9dGhpcy5fdXBkYXRlTG9h ZGVkUGFyZW50VGlsZUNhY2hlKCl9fSxyLnByb3RvdHlwZS5yZWxlYXNlU3ltYm9sRmFkZVRp bGVzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMuX3RpbGVzKXRoaXMuX3RpbGVzW3Rd LmhvbGRpbmdGb3JGYWRlKCkmJnRoaXMuX3JlbW92ZVRpbGUodCl9LHIucHJvdG90eXBlLl91 cGRhdGVSZXRhaW5lZFRpbGVzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXt9LGk9e30sYT1N YXRoLm1heChlLXIubWF4T3Zlcnpvb21pbmcsdGhpcy5fc291cmNlLm1pbnpvb20pLG89TWF0 aC5tYXgoZStyLm1heFVuZGVyem9vbWluZyx0aGlzLl9zb3VyY2UubWluem9vbSkscz17fSxs PTAsYz10O2w8Yy5sZW5ndGg7bCs9MSl7dmFyIHU9Y1tsXSxmPXRoaXMuX2FkZFRpbGUodSk7 blt1LmtleV09dSxmLmhhc0RhdGEoKXx8ZTx0aGlzLl9zb3VyY2UubWF4em9vbSYmKHNbdS5r ZXldPXUpfXRoaXMuX3JldGFpbkxvYWRlZENoaWxkcmVuKHMsZSxvLG4pO2Zvcih2YXIgaD0w LHA9dDtoPHAubGVuZ3RoO2grPTEpe3ZhciBkPXBbaF0sbT10aGlzLl90aWxlc1tkLmtleV07 aWYoIW0uaGFzRGF0YSgpKXtpZihlKzE+dGhpcy5fc291cmNlLm1heHpvb20pe3ZhciBnPWQu Y2hpbGRyZW4odGhpcy5fc291cmNlLm1heHpvb20pWzBdLHY9dGhpcy5nZXRUaWxlKGcpO2lm KHYmJnYuaGFzRGF0YSgpKXtuW2cua2V5XT1nO2NvbnRpbnVlfX1lbHNle3ZhciB5PWQuY2hp bGRyZW4odGhpcy5fc291cmNlLm1heHpvb20pO2lmKG5beVswXS5rZXldJiZuW3lbMV0ua2V5 XSYmblt5WzJdLmtleV0mJm5beVszXS5rZXldKWNvbnRpbnVlfWZvcih2YXIgeD1tLndhc1Jl cXVlc3RlZCgpLGI9ZC5vdmVyc2NhbGVkWi0xO2I+PWE7LS1iKXt2YXIgXz1kLnNjYWxlZFRv KGIpO2lmKGlbXy5rZXldKWJyZWFrO2lmKGlbXy5rZXldPSEwLCEobT10aGlzLmdldFRpbGUo XykpJiZ4JiYobT10aGlzLl9hZGRUaWxlKF8pKSxtJiYobltfLmtleV09Xyx4PW0ud2FzUmVx dWVzdGVkKCksbS5oYXNEYXRhKCkpKWJyZWFrfX19cmV0dXJuIG59LHIucHJvdG90eXBlLl91 cGRhdGVMb2FkZWRQYXJlbnRUaWxlQ2FjaGU9ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhp cy5fbG9hZGVkUGFyZW50VGlsZXM9e30sdGhpcy5fdGlsZXMpe2Zvcih2YXIgZT1bXSxyPXZv aWQgMCxuPXRoaXMuX3RpbGVzW3RdLnRpbGVJRDtuLm92ZXJzY2FsZWRaPjA7KXtpZihuLmtl eSBpbiB0aGlzLl9sb2FkZWRQYXJlbnRUaWxlcyl7cj10aGlzLl9sb2FkZWRQYXJlbnRUaWxl c1tuLmtleV07YnJlYWt9ZS5wdXNoKG4ua2V5KTt2YXIgaT1uLnNjYWxlZFRvKG4ub3ZlcnNj YWxlZFotMSk7aWYocj10aGlzLl9nZXRMb2FkZWRUaWxlKGkpKWJyZWFrO249aX1mb3IodmFy IGE9MCxvPWU7YTxvLmxlbmd0aDthKz0xKXt2YXIgcz1vW2FdO3RoaXMuX2xvYWRlZFBhcmVu dFRpbGVzW3NdPXJ9fX0sci5wcm90b3R5cGUuX2FkZFRpbGU9ZnVuY3Rpb24oZSl7dmFyIHI9 dGhpcy5fdGlsZXNbZS5rZXldO2lmKHIpcmV0dXJuIHI7KHI9dGhpcy5fY2FjaGUuZ2V0QW5k UmVtb3ZlKGUpKSYmKHRoaXMuX3NldFRpbGVSZWxvYWRUaW1lcihlLmtleSxyKSxyLnRpbGVJ RD1lLHRoaXMuX3N0YXRlLmluaXRpYWxpemVUaWxlU3RhdGUocix0aGlzLm1hcD90aGlzLm1h cC5wYWludGVyOm51bGwpLHRoaXMuX2NhY2hlVGltZXJzW2Uua2V5XSYmKGNsZWFyVGltZW91 dCh0aGlzLl9jYWNoZVRpbWVyc1tlLmtleV0pLGRlbGV0ZSB0aGlzLl9jYWNoZVRpbWVyc1tl LmtleV0sdGhpcy5fc2V0VGlsZVJlbG9hZFRpbWVyKGUua2V5LHIpKSk7dmFyIG49Qm9vbGVh bihyKTtyZXR1cm4gbnx8KHI9bmV3IHQuVGlsZShlLHRoaXMuX3NvdXJjZS50aWxlU2l6ZSpl Lm92ZXJzY2FsZUZhY3RvcigpKSx0aGlzLl9sb2FkVGlsZShyLHRoaXMuX3RpbGVMb2FkZWQu YmluZCh0aGlzLHIsZS5rZXksci5zdGF0ZSkpKSxyPyhyLnVzZXMrKyx0aGlzLl90aWxlc1tl LmtleV09cixufHx0aGlzLl9zb3VyY2UuZmlyZShuZXcgdC5FdmVudCgiZGF0YWxvYWRpbmci LHt0aWxlOnIsY29vcmQ6ci50aWxlSUQsZGF0YVR5cGU6InNvdXJjZSJ9KSkscik6bnVsbH0s ci5wcm90b3R5cGUuX3NldFRpbGVSZWxvYWRUaW1lcj1mdW5jdGlvbih0LGUpe3ZhciByPXRo aXM7dCBpbiB0aGlzLl90aW1lcnMmJihjbGVhclRpbWVvdXQodGhpcy5fdGltZXJzW3RdKSxk ZWxldGUgdGhpcy5fdGltZXJzW3RdKTt2YXIgbj1lLmdldEV4cGlyeVRpbWVvdXQoKTtuJiYo dGhpcy5fdGltZXJzW3RdPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ci5fcmVsb2FkVGlsZSh0 LCJleHBpcmVkIiksZGVsZXRlIHIuX3RpbWVyc1t0XX0pLG4pKX0sci5wcm90b3R5cGUuX3Jl bW92ZVRpbGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdGlsZXNbdF07ZSYmKGUudXNlcy0t LGRlbGV0ZSB0aGlzLl90aWxlc1t0XSx0aGlzLl90aW1lcnNbdF0mJihjbGVhclRpbWVvdXQo dGhpcy5fdGltZXJzW3RdKSxkZWxldGUgdGhpcy5fdGltZXJzW3RdKSxlLnVzZXM+MHx8KGUu aGFzRGF0YSgpJiYicmVsb2FkaW5nIiE9PWUuc3RhdGU/dGhpcy5fY2FjaGUuYWRkKGUudGls ZUlELGUsZS5nZXRFeHBpcnlUaW1lb3V0KCkpOihlLmFib3J0ZWQ9ITAsdGhpcy5fYWJvcnRU aWxlKGUpLHRoaXMuX3VubG9hZFRpbGUoZSkpKSl9LHIucHJvdG90eXBlLmNsZWFyVGlsZXM9 ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5fc2hvdWxkUmVsb2FkT25SZXN1bWU9ITEs dGhpcy5fcGF1c2VkPSExLHRoaXMuX3RpbGVzKXRoaXMuX3JlbW92ZVRpbGUodCk7dGhpcy5f Y2FjaGUucmVzZXQoKX0sci5wcm90b3R5cGUudGlsZXNJbj1mdW5jdGlvbihlLHIsbil7dmFy IGk9dGhpcyxhPVtdLG89dGhpcy50cmFuc2Zvcm07aWYoIW8pcmV0dXJuIGE7Zm9yKHZhciBz PW4/by5nZXRDYW1lcmFRdWVyeUdlb21ldHJ5KGUpOmUsbD1lLm1hcCgoZnVuY3Rpb24odCl7 cmV0dXJuIG8ucG9pbnRDb29yZGluYXRlKHQpfSkpLGM9cy5tYXAoKGZ1bmN0aW9uKHQpe3Jl dHVybiBvLnBvaW50Q29vcmRpbmF0ZSh0KX0pKSx1PXRoaXMuZ2V0SWRzKCksZj0xLzAsaD0x LzAscD0tMS8wLGQ9LTEvMCxtPTAsZz1jO208Zy5sZW5ndGg7bSs9MSl7dmFyIHY9Z1ttXTtm PU1hdGgubWluKGYsdi54KSxoPU1hdGgubWluKGgsdi55KSxwPU1hdGgubWF4KHAsdi54KSxk PU1hdGgubWF4KGQsdi55KX1mb3IodmFyIHk9ZnVuY3Rpb24oZSl7dmFyIG49aS5fdGlsZXNb dVtlXV07aWYoIW4uaG9sZGluZ0ZvckZhZGUoKSl7dmFyIHM9bi50aWxlSUQsbT1NYXRoLnBv dygyLG8uem9vbS1uLnRpbGVJRC5vdmVyc2NhbGVkWiksZz1yKm4ucXVlcnlQYWRkaW5nKnQu RVhURU5UL24udGlsZVNpemUvbSx2PVtzLmdldFRpbGVQb2ludChuZXcgdC5NZXJjYXRvckNv b3JkaW5hdGUoZixoKSkscy5nZXRUaWxlUG9pbnQobmV3IHQuTWVyY2F0b3JDb29yZGluYXRl KHAsZCkpXTtpZih2WzBdLngtZzx0LkVYVEVOVCYmdlswXS55LWc8dC5FWFRFTlQmJnZbMV0u eCtnPj0wJiZ2WzFdLnkrZz49MCl7dmFyIHk9bC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBz LmdldFRpbGVQb2ludCh0KX0pKSx4PWMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gcy5nZXRU aWxlUG9pbnQodCl9KSk7YS5wdXNoKHt0aWxlOm4sdGlsZUlEOnMscXVlcnlHZW9tZXRyeTp5 LGNhbWVyYVF1ZXJ5R2VvbWV0cnk6eCxzY2FsZTptfSl9fX0seD0wO3g8dS5sZW5ndGg7eCsr KXkoeCk7cmV0dXJuIGF9LHIucHJvdG90eXBlLmdldFZpc2libGVDb29yZGluYXRlcz1mdW5j dGlvbih0KXtmb3IodmFyIGU9dGhpcyxyPXRoaXMuZ2V0UmVuZGVyYWJsZUlkcyh0KS5tYXAo KGZ1bmN0aW9uKHQpe3JldHVybiBlLl90aWxlc1t0XS50aWxlSUR9KSksbj0wLGk9cjtuPGku bGVuZ3RoO24rPTEpe3ZhciBhPWlbbl07YS5wb3NNYXRyaXg9dGhpcy50cmFuc2Zvcm0uY2Fs Y3VsYXRlUG9zTWF0cml4KGEudG9VbndyYXBwZWQoKSl9cmV0dXJuIHJ9LHIucHJvdG90eXBl Lmhhc1RyYW5zaXRpb249ZnVuY3Rpb24oKXtpZih0aGlzLl9zb3VyY2UuaGFzVHJhbnNpdGlv bigpKXJldHVybiEwO2lmKEl0KHRoaXMuX3NvdXJjZS50eXBlKSlmb3IodmFyIGUgaW4gdGhp cy5fdGlsZXMpe3ZhciByPXRoaXMuX3RpbGVzW2VdO2lmKHZvaWQgMCE9PXIuZmFkZUVuZFRp bWUmJnIuZmFkZUVuZFRpbWU+PXQuYnJvd3Nlci5ub3coKSlyZXR1cm4hMH1yZXR1cm4hMX0s ci5wcm90b3R5cGUuc2V0RmVhdHVyZVN0YXRlPWZ1bmN0aW9uKHQsZSxyKXt0PXR8fCJfZ2Vv anNvblRpbGVMYXllciIsdGhpcy5fc3RhdGUudXBkYXRlU3RhdGUodCxlLHIpfSxyLnByb3Rv dHlwZS5yZW1vdmVGZWF0dXJlU3RhdGU9ZnVuY3Rpb24odCxlLHIpe3Q9dHx8Il9nZW9qc29u VGlsZUxheWVyIix0aGlzLl9zdGF0ZS5yZW1vdmVGZWF0dXJlU3RhdGUodCxlLHIpfSxyLnBy b3RvdHlwZS5nZXRGZWF0dXJlU3RhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD10fHwiX2dl b2pzb25UaWxlTGF5ZXIiLHRoaXMuX3N0YXRlLmdldFN0YXRlKHQsZSl9LHIucHJvdG90eXBl LnNldERlcGVuZGVuY2llcz1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5fdGlsZXNbdF07 biYmbi5zZXREZXBlbmRlbmNpZXMoZSxyKX0sci5wcm90b3R5cGUucmVsb2FkVGlsZXNGb3JE ZXBlbmRlbmNpZXM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHIgaW4gdGhpcy5fdGlsZXMpe3Ro aXMuX3RpbGVzW3JdLmhhc0RlcGVuZGVuY3kodCxlKSYmdGhpcy5fcmVsb2FkVGlsZShyLCJy ZWxvYWRpbmciKX10aGlzLl9jYWNoZS5maWx0ZXIoKGZ1bmN0aW9uKHIpe3JldHVybiFyLmhh c0RlcGVuZGVuY3kodCxlKX0pKX0scn0odC5FdmVudGVkKTtmdW5jdGlvbiBQdCh0LGUpe3Zh ciByPU1hdGguYWJzKDIqdC53cmFwKS0rKHQud3JhcDwwKSxuPU1hdGguYWJzKDIqZS53cmFw KS0rKGUud3JhcDwwKTtyZXR1cm4gdC5vdmVyc2NhbGVkWi1lLm92ZXJzY2FsZWRafHxuLXJ8 fGUuY2Fub25pY2FsLnktdC5jYW5vbmljYWwueXx8ZS5jYW5vbmljYWwueC10LmNhbm9uaWNh bC54fWZ1bmN0aW9uIEl0KHQpe3JldHVybiJyYXN0ZXIiPT09dHx8ImltYWdlIj09PXR8fCJ2 aWRlbyI9PT10fWZ1bmN0aW9uIE90KCl7cmV0dXJuIG5ldyB0LndpbmRvdy5Xb3JrZXIoWmku d29ya2VyVXJsKX1DdC5tYXhPdmVyem9vbWluZz0xMCxDdC5tYXhVbmRlcnpvb21pbmc9Mzt2 YXIgenQ9Im1hcGJveGdsX3ByZWxvYWRlZF93b3JrZXJfcG9vbCIsRHQ9ZnVuY3Rpb24oKXt0 aGlzLmFjdGl2ZT17fX07RHQucHJvdG90eXBlLmFjcXVpcmU9ZnVuY3Rpb24odCl7aWYoIXRo aXMud29ya2Vycylmb3IodGhpcy53b3JrZXJzPVtdO3RoaXMud29ya2Vycy5sZW5ndGg8RHQu d29ya2VyQ291bnQ7KXRoaXMud29ya2Vycy5wdXNoKG5ldyBPdCk7cmV0dXJuIHRoaXMuYWN0 aXZlW3RdPSEwLHRoaXMud29ya2Vycy5zbGljZSgpfSxEdC5wcm90b3R5cGUucmVsZWFzZT1m dW5jdGlvbih0KXtkZWxldGUgdGhpcy5hY3RpdmVbdF0sMD09PXRoaXMubnVtQWN0aXZlKCkm Jih0aGlzLndvcmtlcnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC50ZXJtaW5hdGUoKX0pKSx0 aGlzLndvcmtlcnM9bnVsbCl9LER0LnByb3RvdHlwZS5pc1ByZWxvYWRlZD1mdW5jdGlvbigp e3JldHVybiEhdGhpcy5hY3RpdmVbenRdfSxEdC5wcm90b3R5cGUubnVtQWN0aXZlPWZ1bmN0 aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuYWN0aXZlKS5sZW5ndGh9O3ZhciBSdCxG dD1NYXRoLmZsb29yKHQuYnJvd3Nlci5oYXJkd2FyZUNvbmN1cnJlbmN5LzIpO2Z1bmN0aW9u IEJ0KCl7cmV0dXJuIFJ0fHwoUnQ9bmV3IER0KSxSdH1mdW5jdGlvbiBOdChlLHIpe3ZhciBu PXt9O2Zvcih2YXIgaSBpbiBlKSJyZWYiIT09aSYmKG5baV09ZVtpXSk7cmV0dXJuIHQucmVm UHJvcGVydGllcy5mb3JFYWNoKChmdW5jdGlvbih0KXt0IGluIHImJihuW3RdPXJbdF0pfSkp LG59ZnVuY3Rpb24ganQodCl7dD10LnNsaWNlKCk7Zm9yKHZhciBlPU9iamVjdC5jcmVhdGUo bnVsbCkscj0wO3I8dC5sZW5ndGg7cisrKWVbdFtyXS5pZF09dFtyXTtmb3IodmFyIG49MDtu PHQubGVuZ3RoO24rKykicmVmImluIHRbbl0mJih0W25dPU50KHRbbl0sZVt0W25dLnJlZl0p KTtyZXR1cm4gdH1EdC53b3JrZXJDb3VudD1NYXRoLm1heChNYXRoLm1pbihGdCw2KSwxKTt2 YXIgVXQ9e3NldFN0eWxlOiJzZXRTdHlsZSIsYWRkTGF5ZXI6ImFkZExheWVyIixyZW1vdmVM YXllcjoicmVtb3ZlTGF5ZXIiLHNldFBhaW50UHJvcGVydHk6InNldFBhaW50UHJvcGVydHki LHNldExheW91dFByb3BlcnR5OiJzZXRMYXlvdXRQcm9wZXJ0eSIsc2V0RmlsdGVyOiJzZXRG aWx0ZXIiLGFkZFNvdXJjZToiYWRkU291cmNlIixyZW1vdmVTb3VyY2U6InJlbW92ZVNvdXJj ZSIsc2V0R2VvSlNPTlNvdXJjZURhdGE6InNldEdlb0pTT05Tb3VyY2VEYXRhIixzZXRMYXll clpvb21SYW5nZToic2V0TGF5ZXJab29tUmFuZ2UiLHNldExheWVyUHJvcGVydHk6InNldExh eWVyUHJvcGVydHkiLHNldENlbnRlcjoic2V0Q2VudGVyIixzZXRab29tOiJzZXRab29tIixz ZXRCZWFyaW5nOiJzZXRCZWFyaW5nIixzZXRQaXRjaDoic2V0UGl0Y2giLHNldFNwcml0ZToi c2V0U3ByaXRlIixzZXRHbHlwaHM6InNldEdseXBocyIsc2V0VHJhbnNpdGlvbjoic2V0VHJh bnNpdGlvbiIsc2V0TGlnaHQ6InNldExpZ2h0In07ZnVuY3Rpb24gVnQodCxlLHIpe3IucHVz aCh7Y29tbWFuZDpVdC5hZGRTb3VyY2UsYXJnczpbdCxlW3RdXX0pfWZ1bmN0aW9uIEh0KHQs ZSxyKXtlLnB1c2goe2NvbW1hbmQ6VXQucmVtb3ZlU291cmNlLGFyZ3M6W3RdfSksclt0XT0h MH1mdW5jdGlvbiBxdCh0LGUscixuKXtIdCh0LHIsbiksVnQodCxlLHIpfWZ1bmN0aW9uIEd0 KGUscixuKXt2YXIgaTtmb3IoaSBpbiBlW25dKWlmKGVbbl0uaGFzT3duUHJvcGVydHkoaSkm JiJkYXRhIiE9PWkmJiF0LmRlZXBFcXVhbChlW25dW2ldLHJbbl1baV0pKXJldHVybiExO2Zv cihpIGluIHJbbl0paWYocltuXS5oYXNPd25Qcm9wZXJ0eShpKSYmImRhdGEiIT09aSYmIXQu ZGVlcEVxdWFsKGVbbl1baV0scltuXVtpXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24g WXQoZSxyLG4saSxhLG8pe3ZhciBzO2ZvcihzIGluIHI9cnx8e30sZT1lfHx7fSllLmhhc093 blByb3BlcnR5KHMpJiYodC5kZWVwRXF1YWwoZVtzXSxyW3NdKXx8bi5wdXNoKHtjb21tYW5k Om8sYXJnczpbaSxzLHJbc10sYV19KSk7Zm9yKHMgaW4gcilyLmhhc093blByb3BlcnR5KHMp JiYhZS5oYXNPd25Qcm9wZXJ0eShzKSYmKHQuZGVlcEVxdWFsKGVbc10scltzXSl8fG4ucHVz aCh7Y29tbWFuZDpvLGFyZ3M6W2kscyxyW3NdLGFdfSkpfWZ1bmN0aW9uIFd0KHQpe3JldHVy biB0LmlkfWZ1bmN0aW9uIFh0KHQsZSl7cmV0dXJuIHRbZS5pZF09ZSx0fWZ1bmN0aW9uIFp0 KGUscil7aWYoIWUpcmV0dXJuW3tjb21tYW5kOlV0LnNldFN0eWxlLGFyZ3M6W3JdfV07dmFy IG49W107dHJ5e2lmKCF0LmRlZXBFcXVhbChlLnZlcnNpb24sci52ZXJzaW9uKSlyZXR1cm5b e2NvbW1hbmQ6VXQuc2V0U3R5bGUsYXJnczpbcl19XTt0LmRlZXBFcXVhbChlLmNlbnRlcixy LmNlbnRlcil8fG4ucHVzaCh7Y29tbWFuZDpVdC5zZXRDZW50ZXIsYXJnczpbci5jZW50ZXJd fSksdC5kZWVwRXF1YWwoZS56b29tLHIuem9vbSl8fG4ucHVzaCh7Y29tbWFuZDpVdC5zZXRa b29tLGFyZ3M6W3Iuem9vbV19KSx0LmRlZXBFcXVhbChlLmJlYXJpbmcsci5iZWFyaW5nKXx8 bi5wdXNoKHtjb21tYW5kOlV0LnNldEJlYXJpbmcsYXJnczpbci5iZWFyaW5nXX0pLHQuZGVl cEVxdWFsKGUucGl0Y2gsci5waXRjaCl8fG4ucHVzaCh7Y29tbWFuZDpVdC5zZXRQaXRjaCxh cmdzOltyLnBpdGNoXX0pLHQuZGVlcEVxdWFsKGUuc3ByaXRlLHIuc3ByaXRlKXx8bi5wdXNo KHtjb21tYW5kOlV0LnNldFNwcml0ZSxhcmdzOltyLnNwcml0ZV19KSx0LmRlZXBFcXVhbChl LmdseXBocyxyLmdseXBocyl8fG4ucHVzaCh7Y29tbWFuZDpVdC5zZXRHbHlwaHMsYXJnczpb ci5nbHlwaHNdfSksdC5kZWVwRXF1YWwoZS50cmFuc2l0aW9uLHIudHJhbnNpdGlvbil8fG4u cHVzaCh7Y29tbWFuZDpVdC5zZXRUcmFuc2l0aW9uLGFyZ3M6W3IudHJhbnNpdGlvbl19KSx0 LmRlZXBFcXVhbChlLmxpZ2h0LHIubGlnaHQpfHxuLnB1c2goe2NvbW1hbmQ6VXQuc2V0TGln aHQsYXJnczpbci5saWdodF19KTt2YXIgaT17fSxhPVtdOyFmdW5jdGlvbihlLHIsbixpKXt2 YXIgYTtmb3IoYSBpbiByPXJ8fHt9LGU9ZXx8e30pZS5oYXNPd25Qcm9wZXJ0eShhKSYmKHIu aGFzT3duUHJvcGVydHkoYSl8fEh0KGEsbixpKSk7Zm9yKGEgaW4gcilyLmhhc093blByb3Bl cnR5KGEpJiYoZS5oYXNPd25Qcm9wZXJ0eShhKT90LmRlZXBFcXVhbChlW2FdLHJbYV0pfHwo Imdlb2pzb24iPT09ZVthXS50eXBlJiYiZ2VvanNvbiI9PT1yW2FdLnR5cGUmJkd0KGUscixh KT9uLnB1c2goe2NvbW1hbmQ6VXQuc2V0R2VvSlNPTlNvdXJjZURhdGEsYXJnczpbYSxyW2Fd LmRhdGFdfSk6cXQoYSxyLG4saSkpOlZ0KGEscixuKSl9KGUuc291cmNlcyxyLnNvdXJjZXMs YSxpKTt2YXIgbz1bXTtlLmxheWVycyYmZS5sYXllcnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7 aVt0LnNvdXJjZV0/bi5wdXNoKHtjb21tYW5kOlV0LnJlbW92ZUxheWVyLGFyZ3M6W3QuaWRd fSk6by5wdXNoKHQpfSkpLG49bi5jb25jYXQoYSksZnVuY3Rpb24oZSxyLG4pe3I9cnx8W107 dmFyIGksYSxvLHMsbCxjLHUsZj0oZT1lfHxbXSkubWFwKFd0KSxoPXIubWFwKFd0KSxwPWUu cmVkdWNlKFh0LHt9KSxkPXIucmVkdWNlKFh0LHt9KSxtPWYuc2xpY2UoKSxnPU9iamVjdC5j cmVhdGUobnVsbCk7Zm9yKGk9MCxhPTA7aTxmLmxlbmd0aDtpKyspbz1mW2ldLGQuaGFzT3du UHJvcGVydHkobyk/YSsrOihuLnB1c2goe2NvbW1hbmQ6VXQucmVtb3ZlTGF5ZXIsYXJnczpb b119KSxtLnNwbGljZShtLmluZGV4T2YobyxhKSwxKSk7Zm9yKGk9MCxhPTA7aTxoLmxlbmd0 aDtpKyspbz1oW2gubGVuZ3RoLTEtaV0sbVttLmxlbmd0aC0xLWldIT09byYmKHAuaGFzT3du UHJvcGVydHkobyk/KG4ucHVzaCh7Y29tbWFuZDpVdC5yZW1vdmVMYXllcixhcmdzOltvXX0p LG0uc3BsaWNlKG0ubGFzdEluZGV4T2YobyxtLmxlbmd0aC1hKSwxKSk6YSsrLGM9bVttLmxl bmd0aC1pXSxuLnB1c2goe2NvbW1hbmQ6VXQuYWRkTGF5ZXIsYXJnczpbZFtvXSxjXX0pLG0u c3BsaWNlKG0ubGVuZ3RoLWksMCxvKSxnW29dPSEwKTtmb3IoaT0wO2k8aC5sZW5ndGg7aSsr KWlmKHM9cFtvPWhbaV1dLGw9ZFtvXSwhZ1tvXSYmIXQuZGVlcEVxdWFsKHMsbCkpaWYodC5k ZWVwRXF1YWwocy5zb3VyY2UsbC5zb3VyY2UpJiZ0LmRlZXBFcXVhbChzWyJzb3VyY2UtbGF5 ZXIiXSxsWyJzb3VyY2UtbGF5ZXIiXSkmJnQuZGVlcEVxdWFsKHMudHlwZSxsLnR5cGUpKXtm b3IodSBpbiBZdChzLmxheW91dCxsLmxheW91dCxuLG8sbnVsbCxVdC5zZXRMYXlvdXRQcm9w ZXJ0eSksWXQocy5wYWludCxsLnBhaW50LG4sbyxudWxsLFV0LnNldFBhaW50UHJvcGVydHkp LHQuZGVlcEVxdWFsKHMuZmlsdGVyLGwuZmlsdGVyKXx8bi5wdXNoKHtjb21tYW5kOlV0LnNl dEZpbHRlcixhcmdzOltvLGwuZmlsdGVyXX0pLHQuZGVlcEVxdWFsKHMubWluem9vbSxsLm1p bnpvb20pJiZ0LmRlZXBFcXVhbChzLm1heHpvb20sbC5tYXh6b29tKXx8bi5wdXNoKHtjb21t YW5kOlV0LnNldExheWVyWm9vbVJhbmdlLGFyZ3M6W28sbC5taW56b29tLGwubWF4em9vbV19 KSxzKXMuaGFzT3duUHJvcGVydHkodSkmJiJsYXlvdXQiIT09dSYmInBhaW50IiE9PXUmJiJm aWx0ZXIiIT09dSYmIm1ldGFkYXRhIiE9PXUmJiJtaW56b29tIiE9PXUmJiJtYXh6b29tIiE9 PXUmJigwPT09dS5pbmRleE9mKCJwYWludC4iKT9ZdChzW3VdLGxbdV0sbixvLHUuc2xpY2Uo NiksVXQuc2V0UGFpbnRQcm9wZXJ0eSk6dC5kZWVwRXF1YWwoc1t1XSxsW3VdKXx8bi5wdXNo KHtjb21tYW5kOlV0LnNldExheWVyUHJvcGVydHksYXJnczpbbyx1LGxbdV1dfSkpO2Zvcih1 IGluIGwpbC5oYXNPd25Qcm9wZXJ0eSh1KSYmIXMuaGFzT3duUHJvcGVydHkodSkmJiJsYXlv dXQiIT09dSYmInBhaW50IiE9PXUmJiJmaWx0ZXIiIT09dSYmIm1ldGFkYXRhIiE9PXUmJiJt aW56b29tIiE9PXUmJiJtYXh6b29tIiE9PXUmJigwPT09dS5pbmRleE9mKCJwYWludC4iKT9Z dChzW3VdLGxbdV0sbixvLHUuc2xpY2UoNiksVXQuc2V0UGFpbnRQcm9wZXJ0eSk6dC5kZWVw RXF1YWwoc1t1XSxsW3VdKXx8bi5wdXNoKHtjb21tYW5kOlV0LnNldExheWVyUHJvcGVydHks YXJnczpbbyx1LGxbdV1dfSkpfWVsc2Ugbi5wdXNoKHtjb21tYW5kOlV0LnJlbW92ZUxheWVy LGFyZ3M6W29dfSksYz1tW20ubGFzdEluZGV4T2YobykrMV0sbi5wdXNoKHtjb21tYW5kOlV0 LmFkZExheWVyLGFyZ3M6W2wsY119KX0obyxyLmxheWVycyxuKX1jYXRjaCh0KXtjb25zb2xl Lndhcm4oIlVuYWJsZSB0byBjb21wdXRlIHN0eWxlIGRpZmY6Iix0KSxuPVt7Y29tbWFuZDpV dC5zZXRTdHlsZSxhcmdzOltyXX1dfXJldHVybiBufXZhciBKdD1mdW5jdGlvbih0LGUpe3Ro aXMucmVzZXQodCxlKX07SnQucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKHQsZSl7dGhpcy5w b2ludHM9dHx8W10sdGhpcy5fZGlzdGFuY2VzPVswXTtmb3IodmFyIHI9MTtyPHRoaXMucG9p bnRzLmxlbmd0aDtyKyspdGhpcy5fZGlzdGFuY2VzW3JdPXRoaXMuX2Rpc3RhbmNlc1tyLTFd K3RoaXMucG9pbnRzW3JdLmRpc3QodGhpcy5wb2ludHNbci0xXSk7dGhpcy5sZW5ndGg9dGhp cy5fZGlzdGFuY2VzW3RoaXMuX2Rpc3RhbmNlcy5sZW5ndGgtMV0sdGhpcy5wYWRkaW5nPU1h dGgubWluKGV8fDAsLjUqdGhpcy5sZW5ndGgpLHRoaXMucGFkZGVkTGVuZ3RoPXRoaXMubGVu Z3RoLTIqdGhpcy5wYWRkaW5nfSxKdC5wcm90b3R5cGUubGVycD1mdW5jdGlvbihlKXtpZigx PT09dGhpcy5wb2ludHMubGVuZ3RoKXJldHVybiB0aGlzLnBvaW50c1swXTtlPXQuY2xhbXAo ZSwwLDEpO2Zvcih2YXIgcj0xLG49dGhpcy5fZGlzdGFuY2VzW3JdLGk9ZSp0aGlzLnBhZGRl ZExlbmd0aCt0aGlzLnBhZGRpbmc7bjxpJiZyPHRoaXMuX2Rpc3RhbmNlcy5sZW5ndGg7KW49 dGhpcy5fZGlzdGFuY2VzWysrcl07dmFyIGE9ci0xLG89dGhpcy5fZGlzdGFuY2VzW2FdLHM9 bi1vLGw9cz4wPyhpLW8pL3M6MDtyZXR1cm4gdGhpcy5wb2ludHNbYV0ubXVsdCgxLWwpLmFk ZCh0aGlzLnBvaW50c1tyXS5tdWx0KGwpKX07dmFyIEt0PWZ1bmN0aW9uKHQsZSxyKXt2YXIg bj10aGlzLmJveENlbGxzPVtdLGk9dGhpcy5jaXJjbGVDZWxscz1bXTt0aGlzLnhDZWxsQ291 bnQ9TWF0aC5jZWlsKHQvciksdGhpcy55Q2VsbENvdW50PU1hdGguY2VpbChlL3IpO2Zvcih2 YXIgYT0wO2E8dGhpcy54Q2VsbENvdW50KnRoaXMueUNlbGxDb3VudDthKyspbi5wdXNoKFtd KSxpLnB1c2goW10pO3RoaXMuY2lyY2xlS2V5cz1bXSx0aGlzLmJveEtleXM9W10sdGhpcy5i Ym94ZXM9W10sdGhpcy5jaXJjbGVzPVtdLHRoaXMud2lkdGg9dCx0aGlzLmhlaWdodD1lLHRo aXMueFNjYWxlPXRoaXMueENlbGxDb3VudC90LHRoaXMueVNjYWxlPXRoaXMueUNlbGxDb3Vu dC9lLHRoaXMuYm94VWlkPTAsdGhpcy5jaXJjbGVVaWQ9MH07ZnVuY3Rpb24gUXQoZSxyLG4s aSxhKXt2YXIgbz10LmNyZWF0ZSgpO3JldHVybiByPyh0LnNjYWxlKG8sbyxbMS9hLDEvYSwx XSksbnx8dC5yb3RhdGVaKG8sbyxpLmFuZ2xlKSk6dC5tdWx0aXBseShvLGkubGFiZWxQbGFu ZU1hdHJpeCxlKSxvfWZ1bmN0aW9uICR0KGUscixuLGksYSl7aWYocil7dmFyIG89dC5jbG9u ZShlKTtyZXR1cm4gdC5zY2FsZShvLG8sW2EsYSwxXSksbnx8dC5yb3RhdGVaKG8sbywtaS5h bmdsZSksb31yZXR1cm4gaS5nbENvb3JkTWF0cml4fWZ1bmN0aW9uIHRlKGUscil7dmFyIG49 W2UueCxlLnksMCwxXTtmZShuLG4scik7dmFyIGk9blszXTtyZXR1cm57cG9pbnQ6bmV3IHQu UG9pbnQoblswXS9pLG5bMV0vaSksc2lnbmVkRGlzdGFuY2VGcm9tQ2FtZXJhOml9fWZ1bmN0 aW9uIGVlKHQsZSl7cmV0dXJuLjUrdC9lKi41fWZ1bmN0aW9uIHJlKHQsZSl7dmFyIHI9dFsw XS90WzNdLG49dFsxXS90WzNdO3JldHVybiByPj0tZVswXSYmcjw9ZVswXSYmbj49LWVbMV0m Jm48PWVbMV19ZnVuY3Rpb24gbmUoZSxyLG4saSxhLG8scyxsKXt2YXIgYz1pP2UudGV4dFNp emVEYXRhOmUuaWNvblNpemVEYXRhLHU9dC5ldmFsdWF0ZVNpemVGb3Jab29tKGMsbi50cmFu c2Zvcm0uem9vbSksZj1bMjU2L24ud2lkdGgqMisxLDI1Ni9uLmhlaWdodCoyKzFdLGg9aT9l LnRleHQuZHluYW1pY0xheW91dFZlcnRleEFycmF5OmUuaWNvbi5keW5hbWljTGF5b3V0VmVy dGV4QXJyYXk7aC5jbGVhcigpO2Zvcih2YXIgcD1lLmxpbmVWZXJ0ZXhBcnJheSxkPWk/ZS50 ZXh0LnBsYWNlZFN5bWJvbEFycmF5OmUuaWNvbi5wbGFjZWRTeW1ib2xBcnJheSxtPW4udHJh bnNmb3JtLndpZHRoL24udHJhbnNmb3JtLmhlaWdodCxnPSExLHY9MDt2PGQubGVuZ3RoO3Yr Kyl7dmFyIHk9ZC5nZXQodik7aWYoeS5oaWRkZW58fHkud3JpdGluZ01vZGU9PT10LldyaXRp bmdNb2RlLnZlcnRpY2FsJiYhZyl1ZSh5Lm51bUdseXBocyxoKTtlbHNle2c9ITE7dmFyIHg9 W3kuYW5jaG9yWCx5LmFuY2hvclksMCwxXTtpZih0LnRyYW5zZm9ybU1hdDQoeCx4LHIpLHJl KHgsZikpe3ZhciBiPXhbM10sXz1lZShuLnRyYW5zZm9ybS5jYW1lcmFUb0NlbnRlckRpc3Rh bmNlLGIpLHc9dC5ldmFsdWF0ZVNpemVGb3JGZWF0dXJlKGMsdSx5KSxUPXM/dy9fOncqXyxr PW5ldyB0LlBvaW50KHkuYW5jaG9yWCx5LmFuY2hvclkpLEE9dGUoayxhKS5wb2ludCxNPXt9 LFM9b2UoeSxULCExLGwscixhLG8sZS5nbHlwaE9mZnNldEFycmF5LHAsaCxBLGssTSxtKTtn PVMudXNlVmVydGljYWwsKFMubm90RW5vdWdoUm9vbXx8Z3x8Uy5uZWVkc0ZsaXBwaW5nJiZv ZSh5LFQsITAsbCxyLGEsbyxlLmdseXBoT2Zmc2V0QXJyYXkscCxoLEEsayxNLG0pLm5vdEVu b3VnaFJvb20pJiZ1ZSh5Lm51bUdseXBocyxoKX1lbHNlIHVlKHkubnVtR2x5cGhzLGgpfX1p P2UudGV4dC5keW5hbWljTGF5b3V0VmVydGV4QnVmZmVyLnVwZGF0ZURhdGEoaCk6ZS5pY29u LmR5bmFtaWNMYXlvdXRWZXJ0ZXhCdWZmZXIudXBkYXRlRGF0YShoKX1mdW5jdGlvbiBpZSh0 LGUscixuLGksYSxvLHMsbCxjLHUpe3ZhciBmPXMuZ2x5cGhTdGFydEluZGV4K3MubnVtR2x5 cGhzLGg9cy5saW5lU3RhcnRJbmRleCxwPXMubGluZVN0YXJ0SW5kZXgrcy5saW5lTGVuZ3Ro LGQ9ZS5nZXRvZmZzZXRYKHMuZ2x5cGhTdGFydEluZGV4KSxtPWUuZ2V0b2Zmc2V0WChmLTEp LGc9bGUodCpkLHIsbixpLGEsbyxzLnNlZ21lbnQsaCxwLGwsYyx1KTtpZighZylyZXR1cm4g bnVsbDt2YXIgdj1sZSh0Km0scixuLGksYSxvLHMuc2VnbWVudCxoLHAsbCxjLHUpO3JldHVy biB2P3tmaXJzdDpnLGxhc3Q6dn06bnVsbH1mdW5jdGlvbiBhZShlLHIsbixpKXtpZihlPT09 dC5Xcml0aW5nTW9kZS5ob3Jpem9udGFsJiZNYXRoLmFicyhuLnktci55KT5NYXRoLmFicyhu Lngtci54KSppKXJldHVybnt1c2VWZXJ0aWNhbDohMH07cmV0dXJuKGU9PT10LldyaXRpbmdN b2RlLnZlcnRpY2FsP3IueTxuLnk6ci54Pm4ueCk/e25lZWRzRmxpcHBpbmc6ITB9Om51bGx9 ZnVuY3Rpb24gb2UoZSxyLG4saSxhLG8scyxsLGMsdSxmLGgscCxkKXt2YXIgbSxnPXIvMjQs dj1lLmxpbmVPZmZzZXRYKmcseT1lLmxpbmVPZmZzZXRZKmc7aWYoZS5udW1HbHlwaHM+MSl7 dmFyIHg9ZS5nbHlwaFN0YXJ0SW5kZXgrZS5udW1HbHlwaHMsYj1lLmxpbmVTdGFydEluZGV4 LF89ZS5saW5lU3RhcnRJbmRleCtlLmxpbmVMZW5ndGgsdz1pZShnLGwsdix5LG4sZixoLGUs YyxvLHApO2lmKCF3KXJldHVybntub3RFbm91Z2hSb29tOiEwfTt2YXIgVD10ZSh3LmZpcnN0 LnBvaW50LHMpLnBvaW50LGs9dGUody5sYXN0LnBvaW50LHMpLnBvaW50O2lmKGkmJiFuKXt2 YXIgQT1hZShlLndyaXRpbmdNb2RlLFQsayxkKTtpZihBKXJldHVybiBBfW09W3cuZmlyc3Rd O2Zvcih2YXIgTT1lLmdseXBoU3RhcnRJbmRleCsxO008eC0xO00rKyltLnB1c2gobGUoZyps LmdldG9mZnNldFgoTSksdix5LG4sZixoLGUuc2VnbWVudCxiLF8sYyxvLHApKTttLnB1c2go dy5sYXN0KX1lbHNle2lmKGkmJiFuKXt2YXIgUz10ZShoLGEpLnBvaW50LEU9ZS5saW5lU3Rh cnRJbmRleCtlLnNlZ21lbnQrMSxMPW5ldyB0LlBvaW50KGMuZ2V0eChFKSxjLmdldHkoRSkp LEM9dGUoTCxhKSxQPUMuc2lnbmVkRGlzdGFuY2VGcm9tQ2FtZXJhPjA/Qy5wb2ludDpzZSho LEwsUywxLGEpLEk9YWUoZS53cml0aW5nTW9kZSxTLFAsZCk7aWYoSSlyZXR1cm4gSX12YXIg Tz1sZShnKmwuZ2V0b2Zmc2V0WChlLmdseXBoU3RhcnRJbmRleCksdix5LG4sZixoLGUuc2Vn bWVudCxlLmxpbmVTdGFydEluZGV4LGUubGluZVN0YXJ0SW5kZXgrZS5saW5lTGVuZ3RoLGMs byxwKTtpZighTylyZXR1cm57bm90RW5vdWdoUm9vbTohMH07bT1bT119Zm9yKHZhciB6PTAs RD1tO3o8RC5sZW5ndGg7eis9MSl7dmFyIFI9RFt6XTt0LmFkZER5bmFtaWNBdHRyaWJ1dGVz KHUsUi5wb2ludCxSLmFuZ2xlKX1yZXR1cm57fX1mdW5jdGlvbiBzZSh0LGUscixuLGkpe3Zh ciBhPXRlKHQuYWRkKHQuc3ViKGUpLl91bml0KCkpLGkpLnBvaW50LG89ci5zdWIoYSk7cmV0 dXJuIHIuYWRkKG8uX211bHQobi9vLm1hZygpKSl9ZnVuY3Rpb24gbGUoZSxyLG4saSxhLG8s cyxsLGMsdSxmLGgpe3ZhciBwPWk/ZS1yOmUrcixkPXA+MD8xOi0xLG09MDtpJiYoZCo9LTEs bT1NYXRoLlBJKSxkPDAmJihtKz1NYXRoLlBJKTtmb3IodmFyIGc9ZD4wP2wrczpsK3MrMSx2 PWEseT1hLHg9MCxiPTAsXz1NYXRoLmFicyhwKSx3PVtdO3grYjw9Xzspe2lmKChnKz1kKTxs fHxnPj1jKXJldHVybiBudWxsO2lmKHk9dix3LnB1c2godiksdm9pZCAwPT09KHY9aFtnXSkp e3ZhciBUPW5ldyB0LlBvaW50KHUuZ2V0eChnKSx1LmdldHkoZykpLGs9dGUoVCxmKTtpZihr LnNpZ25lZERpc3RhbmNlRnJvbUNhbWVyYT4wKXY9aFtnXT1rLnBvaW50O2Vsc2V7dmFyIEE9 Zy1kO3Y9c2UoMD09PXg/bzpuZXcgdC5Qb2ludCh1LmdldHgoQSksdS5nZXR5KEEpKSxULHks Xy14KzEsZil9fXgrPWIsYj15LmRpc3Qodil9dmFyIE09KF8teCkvYixTPXYuc3ViKHkpLEU9 Uy5tdWx0KE0pLl9hZGQoeSk7RS5fYWRkKFMuX3VuaXQoKS5fcGVycCgpLl9tdWx0KG4qZCkp O3ZhciBMPW0rTWF0aC5hdGFuMih2LnkteS55LHYueC15LngpO3JldHVybiB3LnB1c2goRSks e3BvaW50OkUsYW5nbGU6TCxwYXRoOnd9fUt0LnByb3RvdHlwZS5rZXlzTGVuZ3RoPWZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuYm94S2V5cy5sZW5ndGgrdGhpcy5jaXJjbGVLZXlzLmxlbmd0 aH0sS3QucHJvdG90eXBlLmluc2VydD1mdW5jdGlvbih0LGUscixuLGkpe3RoaXMuX2ZvckVh Y2hDZWxsKGUscixuLGksdGhpcy5faW5zZXJ0Qm94Q2VsbCx0aGlzLmJveFVpZCsrKSx0aGlz LmJveEtleXMucHVzaCh0KSx0aGlzLmJib3hlcy5wdXNoKGUpLHRoaXMuYmJveGVzLnB1c2go ciksdGhpcy5iYm94ZXMucHVzaChuKSx0aGlzLmJib3hlcy5wdXNoKGkpfSxLdC5wcm90b3R5 cGUuaW5zZXJ0Q2lyY2xlPWZ1bmN0aW9uKHQsZSxyLG4pe3RoaXMuX2ZvckVhY2hDZWxsKGUt bixyLW4sZStuLHIrbix0aGlzLl9pbnNlcnRDaXJjbGVDZWxsLHRoaXMuY2lyY2xlVWlkKysp LHRoaXMuY2lyY2xlS2V5cy5wdXNoKHQpLHRoaXMuY2lyY2xlcy5wdXNoKGUpLHRoaXMuY2ly Y2xlcy5wdXNoKHIpLHRoaXMuY2lyY2xlcy5wdXNoKG4pfSxLdC5wcm90b3R5cGUuX2luc2Vy dEJveENlbGw9ZnVuY3Rpb24odCxlLHIsbixpLGEpe3RoaXMuYm94Q2VsbHNbaV0ucHVzaChh KX0sS3QucHJvdG90eXBlLl9pbnNlcnRDaXJjbGVDZWxsPWZ1bmN0aW9uKHQsZSxyLG4saSxh KXt0aGlzLmNpcmNsZUNlbGxzW2ldLnB1c2goYSl9LEt0LnByb3RvdHlwZS5fcXVlcnk9ZnVu Y3Rpb24odCxlLHIsbixpLGEpe2lmKHI8MHx8dD50aGlzLndpZHRofHxuPDB8fGU+dGhpcy5o ZWlnaHQpcmV0dXJuIWkmJltdO3ZhciBvPVtdO2lmKHQ8PTAmJmU8PTAmJnRoaXMud2lkdGg8 PXImJnRoaXMuaGVpZ2h0PD1uKXtpZihpKXJldHVybiEwO2Zvcih2YXIgcz0wO3M8dGhpcy5i b3hLZXlzLmxlbmd0aDtzKyspby5wdXNoKHtrZXk6dGhpcy5ib3hLZXlzW3NdLHgxOnRoaXMu YmJveGVzWzQqc10seTE6dGhpcy5iYm94ZXNbNCpzKzFdLHgyOnRoaXMuYmJveGVzWzQqcysy XSx5Mjp0aGlzLmJib3hlc1s0KnMrM119KTtmb3IodmFyIGw9MDtsPHRoaXMuY2lyY2xlS2V5 cy5sZW5ndGg7bCsrKXt2YXIgYz10aGlzLmNpcmNsZXNbMypsXSx1PXRoaXMuY2lyY2xlc1sz KmwrMV0sZj10aGlzLmNpcmNsZXNbMypsKzJdO28ucHVzaCh7a2V5OnRoaXMuY2lyY2xlS2V5 c1tsXSx4MTpjLWYseTE6dS1mLHgyOmMrZix5Mjp1K2Z9KX1yZXR1cm4gYT9vLmZpbHRlcihh KTpvfXZhciBoPXtoaXRUZXN0Omksc2VlblVpZHM6e2JveDp7fSxjaXJjbGU6e319fTtyZXR1 cm4gdGhpcy5fZm9yRWFjaENlbGwodCxlLHIsbix0aGlzLl9xdWVyeUNlbGwsbyxoLGEpLGk/ by5sZW5ndGg+MDpvfSxLdC5wcm90b3R5cGUuX3F1ZXJ5Q2lyY2xlPWZ1bmN0aW9uKHQsZSxy LG4saSl7dmFyIGE9dC1yLG89dCtyLHM9ZS1yLGw9ZStyO2lmKG88MHx8YT50aGlzLndpZHRo fHxsPDB8fHM+dGhpcy5oZWlnaHQpcmV0dXJuIW4mJltdO3ZhciBjPVtdLHU9e2hpdFRlc3Q6 bixjaXJjbGU6e3g6dCx5OmUscmFkaXVzOnJ9LHNlZW5VaWRzOntib3g6e30sY2lyY2xlOnt9 fX07cmV0dXJuIHRoaXMuX2ZvckVhY2hDZWxsKGEscyxvLGwsdGhpcy5fcXVlcnlDZWxsQ2ly Y2xlLGMsdSxpKSxuP2MubGVuZ3RoPjA6Y30sS3QucHJvdG90eXBlLnF1ZXJ5PWZ1bmN0aW9u KHQsZSxyLG4saSl7cmV0dXJuIHRoaXMuX3F1ZXJ5KHQsZSxyLG4sITEsaSl9LEt0LnByb3Rv dHlwZS5oaXRUZXN0PWZ1bmN0aW9uKHQsZSxyLG4saSl7cmV0dXJuIHRoaXMuX3F1ZXJ5KHQs ZSxyLG4sITAsaSl9LEt0LnByb3RvdHlwZS5oaXRUZXN0Q2lyY2xlPWZ1bmN0aW9uKHQsZSxy LG4pe3JldHVybiB0aGlzLl9xdWVyeUNpcmNsZSh0LGUsciwhMCxuKX0sS3QucHJvdG90eXBl Ll9xdWVyeUNlbGw9ZnVuY3Rpb24odCxlLHIsbixpLGEsbyxzKXt2YXIgbD1vLnNlZW5VaWRz LGM9dGhpcy5ib3hDZWxsc1tpXTtpZihudWxsIT09Yylmb3IodmFyIHU9dGhpcy5iYm94ZXMs Zj0wLGg9YztmPGgubGVuZ3RoO2YrPTEpe3ZhciBwPWhbZl07aWYoIWwuYm94W3BdKXtsLmJv eFtwXT0hMDt2YXIgZD00KnA7aWYodDw9dVtkKzJdJiZlPD11W2QrM10mJnI+PXVbZCswXSYm bj49dVtkKzFdJiYoIXN8fHModGhpcy5ib3hLZXlzW3BdKSkpe2lmKG8uaGl0VGVzdClyZXR1 cm4gYS5wdXNoKCEwKSwhMDthLnB1c2goe2tleTp0aGlzLmJveEtleXNbcF0seDE6dVtkXSx5 MTp1W2QrMV0seDI6dVtkKzJdLHkyOnVbZCszXX0pfX19dmFyIG09dGhpcy5jaXJjbGVDZWxs c1tpXTtpZihudWxsIT09bSlmb3IodmFyIGc9dGhpcy5jaXJjbGVzLHY9MCx5PW07djx5Lmxl bmd0aDt2Kz0xKXt2YXIgeD15W3ZdO2lmKCFsLmNpcmNsZVt4XSl7bC5jaXJjbGVbeF09ITA7 dmFyIGI9Myp4O2lmKHRoaXMuX2NpcmNsZUFuZFJlY3RDb2xsaWRlKGdbYl0sZ1tiKzFdLGdb YisyXSx0LGUscixuKSYmKCFzfHxzKHRoaXMuY2lyY2xlS2V5c1t4XSkpKXtpZihvLmhpdFRl c3QpcmV0dXJuIGEucHVzaCghMCksITA7dmFyIF89Z1tiXSx3PWdbYisxXSxUPWdbYisyXTth LnB1c2goe2tleTp0aGlzLmNpcmNsZUtleXNbeF0seDE6Xy1ULHkxOnctVCx4MjpfK1QseTI6 dytUfSl9fX19LEt0LnByb3RvdHlwZS5fcXVlcnlDZWxsQ2lyY2xlPWZ1bmN0aW9uKHQsZSxy LG4saSxhLG8scyl7dmFyIGw9by5jaXJjbGUsYz1vLnNlZW5VaWRzLHU9dGhpcy5ib3hDZWxs c1tpXTtpZihudWxsIT09dSlmb3IodmFyIGY9dGhpcy5iYm94ZXMsaD0wLHA9dTtoPHAubGVu Z3RoO2grPTEpe3ZhciBkPXBbaF07aWYoIWMuYm94W2RdKXtjLmJveFtkXT0hMDt2YXIgbT00 KmQ7aWYodGhpcy5fY2lyY2xlQW5kUmVjdENvbGxpZGUobC54LGwueSxsLnJhZGl1cyxmW20r MF0sZlttKzFdLGZbbSsyXSxmW20rM10pJiYoIXN8fHModGhpcy5ib3hLZXlzW2RdKSkpcmV0 dXJuIGEucHVzaCghMCksITB9fXZhciBnPXRoaXMuY2lyY2xlQ2VsbHNbaV07aWYobnVsbCE9 PWcpZm9yKHZhciB2PXRoaXMuY2lyY2xlcyx5PTAseD1nO3k8eC5sZW5ndGg7eSs9MSl7dmFy IGI9eFt5XTtpZighYy5jaXJjbGVbYl0pe2MuY2lyY2xlW2JdPSEwO3ZhciBfPTMqYjtpZih0 aGlzLl9jaXJjbGVzQ29sbGlkZSh2W19dLHZbXysxXSx2W18rMl0sbC54LGwueSxsLnJhZGl1 cykmJighc3x8cyh0aGlzLmNpcmNsZUtleXNbYl0pKSlyZXR1cm4gYS5wdXNoKCEwKSwhMH19 fSxLdC5wcm90b3R5cGUuX2ZvckVhY2hDZWxsPWZ1bmN0aW9uKHQsZSxyLG4saSxhLG8scyl7 Zm9yKHZhciBsPXRoaXMuX2NvbnZlcnRUb1hDZWxsQ29vcmQodCksYz10aGlzLl9jb252ZXJ0 VG9ZQ2VsbENvb3JkKGUpLHU9dGhpcy5fY29udmVydFRvWENlbGxDb29yZChyKSxmPXRoaXMu X2NvbnZlcnRUb1lDZWxsQ29vcmQobiksaD1sO2g8PXU7aCsrKWZvcih2YXIgcD1jO3A8PWY7 cCsrKXt2YXIgZD10aGlzLnhDZWxsQ291bnQqcCtoO2lmKGkuY2FsbCh0aGlzLHQsZSxyLG4s ZCxhLG8scykpcmV0dXJufX0sS3QucHJvdG90eXBlLl9jb252ZXJ0VG9YQ2VsbENvb3JkPWZ1 bmN0aW9uKHQpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKHRoaXMueENlbGxDb3VudC0x LE1hdGguZmxvb3IodCp0aGlzLnhTY2FsZSkpKX0sS3QucHJvdG90eXBlLl9jb252ZXJ0VG9Z Q2VsbENvb3JkPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKHRoaXMu eUNlbGxDb3VudC0xLE1hdGguZmxvb3IodCp0aGlzLnlTY2FsZSkpKX0sS3QucHJvdG90eXBl Ll9jaXJjbGVzQ29sbGlkZT1mdW5jdGlvbih0LGUscixuLGksYSl7dmFyIG89bi10LHM9aS1l LGw9cithO3JldHVybiBsKmw+bypvK3Mqc30sS3QucHJvdG90eXBlLl9jaXJjbGVBbmRSZWN0 Q29sbGlkZT1mdW5jdGlvbih0LGUscixuLGksYSxvKXt2YXIgcz0oYS1uKS8yLGw9TWF0aC5h YnModC0obitzKSk7aWYobD5zK3IpcmV0dXJuITE7dmFyIGM9KG8taSkvMix1PU1hdGguYWJz KGUtKGkrYykpO2lmKHU+YytyKXJldHVybiExO2lmKGw8PXN8fHU8PWMpcmV0dXJuITA7dmFy IGY9bC1zLGg9dS1jO3JldHVybiBmKmYraCpoPD1yKnJ9O3ZhciBjZT1uZXcgRmxvYXQzMkFy cmF5KFstMS8wLC0xLzAsMCwtMS8wLC0xLzAsMCwtMS8wLC0xLzAsMCwtMS8wLC0xLzAsMF0p O2Z1bmN0aW9uIHVlKHQsZSl7Zm9yKHZhciByPTA7cjx0O3IrKyl7dmFyIG49ZS5sZW5ndGg7 ZS5yZXNpemUobis0KSxlLmZsb2F0MzIuc2V0KGNlLDMqbil9fWZ1bmN0aW9uIGZlKHQsZSxy KXt2YXIgbj1lWzBdLGk9ZVsxXTtyZXR1cm4gdFswXT1yWzBdKm4rcls0XSppK3JbMTJdLHRb MV09clsxXSpuK3JbNV0qaStyWzEzXSx0WzNdPXJbM10qbityWzddKmkrclsxNV0sdH12YXIg aGU9ZnVuY3Rpb24odCxlLHIpe3ZvaWQgMD09PWUmJihlPW5ldyBLdCh0LndpZHRoKzIwMCx0 LmhlaWdodCsyMDAsMjUpKSx2b2lkIDA9PT1yJiYocj1uZXcgS3QodC53aWR0aCsyMDAsdC5o ZWlnaHQrMjAwLDI1KSksdGhpcy50cmFuc2Zvcm09dCx0aGlzLmdyaWQ9ZSx0aGlzLmlnbm9y ZWRHcmlkPXIsdGhpcy5waXRjaGZhY3Rvcj1NYXRoLmNvcyh0Ll9waXRjaCkqdC5jYW1lcmFU b0NlbnRlckRpc3RhbmNlLHRoaXMuc2NyZWVuUmlnaHRCb3VuZGFyeT10LndpZHRoKzEwMCx0 aGlzLnNjcmVlbkJvdHRvbUJvdW5kYXJ5PXQuaGVpZ2h0KzEwMCx0aGlzLmdyaWRSaWdodEJv dW5kYXJ5PXQud2lkdGgrMjAwLHRoaXMuZ3JpZEJvdHRvbUJvdW5kYXJ5PXQuaGVpZ2h0KzIw MH07ZnVuY3Rpb24gcGUoZSxyLG4pe3JldHVybiByKih0LkVYVEVOVC8oZS50aWxlU2l6ZSpN YXRoLnBvdygyLG4tZS50aWxlSUQub3ZlcnNjYWxlZFopKSl9aGUucHJvdG90eXBlLnBsYWNl Q29sbGlzaW9uQm94PWZ1bmN0aW9uKHQsZSxyLG4saSl7dmFyIGE9dGhpcy5wcm9qZWN0QW5k R2V0UGVyc3BlY3RpdmVSYXRpbyhuLHQuYW5jaG9yUG9pbnRYLHQuYW5jaG9yUG9pbnRZKSxv PXIqYS5wZXJzcGVjdGl2ZVJhdGlvLHM9dC54MSpvK2EucG9pbnQueCxsPXQueTEqbythLnBv aW50LnksYz10LngyKm8rYS5wb2ludC54LHU9dC55MipvK2EucG9pbnQueTtyZXR1cm4hdGhp cy5pc0luc2lkZUdyaWQocyxsLGMsdSl8fCFlJiZ0aGlzLmdyaWQuaGl0VGVzdChzLGwsYyx1 LGkpP3tib3g6W10sb2Zmc2NyZWVuOiExfTp7Ym94OltzLGwsYyx1XSxvZmZzY3JlZW46dGhp cy5pc09mZnNjcmVlbihzLGwsYyx1KX19LGhlLnByb3RvdHlwZS5wbGFjZUNvbGxpc2lvbkNp cmNsZXM9ZnVuY3Rpb24oZSxyLG4saSxhLG8scyxsLGMsdSxmLGgscCl7dmFyIGQ9W10sbT1u ZXcgdC5Qb2ludChyLmFuY2hvclgsci5hbmNob3JZKSxnPXRlKG0sbyksdj1lZSh0aGlzLnRy YW5zZm9ybS5jYW1lcmFUb0NlbnRlckRpc3RhbmNlLGcuc2lnbmVkRGlzdGFuY2VGcm9tQ2Ft ZXJhKSx5PSh1P2EvdjphKnYpL3QuT05FX0VNLHg9dGUobSxzKS5wb2ludCxiPWllKHksaSxy LmxpbmVPZmZzZXRYKnksci5saW5lT2Zmc2V0WSp5LCExLHgsbSxyLG4scyx7fSksXz0hMSx3 PSExLFQ9ITA7aWYoYil7Zm9yKHZhciBrPS41KmgqditwLEE9bmV3IHQuUG9pbnQoLTEwMCwt MTAwKSxNPW5ldyB0LlBvaW50KHRoaXMuc2NyZWVuUmlnaHRCb3VuZGFyeSx0aGlzLnNjcmVl bkJvdHRvbUJvdW5kYXJ5KSxTPW5ldyBKdCxFPWIuZmlyc3QsTD1iLmxhc3QsQz1bXSxQPUUu cGF0aC5sZW5ndGgtMTtQPj0xO1AtLSlDLnB1c2goRS5wYXRoW1BdKTtmb3IodmFyIEk9MTtJ PEwucGF0aC5sZW5ndGg7SSsrKUMucHVzaChMLnBhdGhbSV0pO3ZhciBPPTIuNSprO2lmKGwp e3ZhciB6PUMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdGUodCxsKX0pKTtDPXouc29tZSgo ZnVuY3Rpb24odCl7cmV0dXJuIHQuc2lnbmVkRGlzdGFuY2VGcm9tQ2FtZXJhPD0wfSkpP1td OnoubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5wb2ludH0pKX12YXIgRD1bXTtpZihDLmxl bmd0aD4wKXtmb3IodmFyIFI9Q1swXS5jbG9uZSgpLEY9Q1swXS5jbG9uZSgpLEI9MTtCPEMu bGVuZ3RoO0IrKylSLng9TWF0aC5taW4oUi54LENbQl0ueCksUi55PU1hdGgubWluKFIueSxD W0JdLnkpLEYueD1NYXRoLm1heChGLngsQ1tCXS54KSxGLnk9TWF0aC5tYXgoRi55LENbQl0u eSk7RD1SLng+PUEueCYmRi54PD1NLngmJlIueT49QS55JiZGLnk8PU0ueT9bQ106Ri54PEEu eHx8Ui54Pk0ueHx8Ri55PEEueXx8Ui55Pk0ueT9bXTp0LmNsaXBMaW5lKFtDXSxBLngsQS55 LE0ueCxNLnkpfWZvcih2YXIgTj0wLGo9RDtOPGoubGVuZ3RoO04rPTEpe3ZhciBVPWpbTl07 Uy5yZXNldChVLC4yNSprKTt2YXIgVj0wO1Y9Uy5sZW5ndGg8PS41Kms/MTpNYXRoLmNlaWwo Uy5wYWRkZWRMZW5ndGgvTykrMTtmb3IodmFyIEg9MDtIPFY7SCsrKXt2YXIgcT1IL01hdGgu bWF4KFYtMSwxKSxHPVMubGVycChxKSxZPUcueCsxMDAsVz1HLnkrMTAwO2QucHVzaChZLFcs aywwKTt2YXIgWD1ZLWssWj1XLWssSj1ZK2ssSz1XK2s7aWYoVD1UJiZ0aGlzLmlzT2Zmc2Ny ZWVuKFgsWixKLEspLHc9d3x8dGhpcy5pc0luc2lkZUdyaWQoWCxaLEosSyksIWUmJnRoaXMu Z3JpZC5oaXRUZXN0Q2lyY2xlKFksVyxrLGYpJiYoXz0hMCwhYykpcmV0dXJue2NpcmNsZXM6 W10sb2Zmc2NyZWVuOiExLGNvbGxpc2lvbkRldGVjdGVkOl99fX19cmV0dXJue2NpcmNsZXM6 IWMmJl98fCF3P1tdOmQsb2Zmc2NyZWVuOlQsY29sbGlzaW9uRGV0ZWN0ZWQ6X319LGhlLnBy b3RvdHlwZS5xdWVyeVJlbmRlcmVkU3ltYm9scz1mdW5jdGlvbihlKXtpZigwPT09ZS5sZW5n dGh8fDA9PT10aGlzLmdyaWQua2V5c0xlbmd0aCgpJiYwPT09dGhpcy5pZ25vcmVkR3JpZC5r ZXlzTGVuZ3RoKCkpcmV0dXJue307Zm9yKHZhciByPVtdLG49MS8wLGk9MS8wLGE9LTEvMCxv PS0xLzAscz0wLGw9ZTtzPGwubGVuZ3RoO3MrPTEpe3ZhciBjPWxbc10sdT1uZXcgdC5Qb2lu dChjLngrMTAwLGMueSsxMDApO249TWF0aC5taW4obix1LngpLGk9TWF0aC5taW4oaSx1Lnkp LGE9TWF0aC5tYXgoYSx1LngpLG89TWF0aC5tYXgobyx1LnkpLHIucHVzaCh1KX1mb3IodmFy IGY9e30saD17fSxwPTAsZD10aGlzLmdyaWQucXVlcnkobixpLGEsbykuY29uY2F0KHRoaXMu aWdub3JlZEdyaWQucXVlcnkobixpLGEsbykpO3A8ZC5sZW5ndGg7cCs9MSl7dmFyIG09ZFtw XSxnPW0ua2V5O2lmKHZvaWQgMD09PWZbZy5idWNrZXRJbnN0YW5jZUlkXSYmKGZbZy5idWNr ZXRJbnN0YW5jZUlkXT17fSksIWZbZy5idWNrZXRJbnN0YW5jZUlkXVtnLmZlYXR1cmVJbmRl eF0pe3ZhciB2PVtuZXcgdC5Qb2ludChtLngxLG0ueTEpLG5ldyB0LlBvaW50KG0ueDIsbS55 MSksbmV3IHQuUG9pbnQobS54MixtLnkyKSxuZXcgdC5Qb2ludChtLngxLG0ueTIpXTt0LnBv bHlnb25JbnRlcnNlY3RzUG9seWdvbihyLHYpJiYoZltnLmJ1Y2tldEluc3RhbmNlSWRdW2cu ZmVhdHVyZUluZGV4XT0hMCx2b2lkIDA9PT1oW2cuYnVja2V0SW5zdGFuY2VJZF0mJihoW2cu YnVja2V0SW5zdGFuY2VJZF09W10pLGhbZy5idWNrZXRJbnN0YW5jZUlkXS5wdXNoKGcuZmVh dHVyZUluZGV4KSl9fXJldHVybiBofSxoZS5wcm90b3R5cGUuaW5zZXJ0Q29sbGlzaW9uQm94 PWZ1bmN0aW9uKHQsZSxyLG4saSl7dmFyIGE9e2J1Y2tldEluc3RhbmNlSWQ6cixmZWF0dXJl SW5kZXg6bixjb2xsaXNpb25Hcm91cElEOml9OyhlP3RoaXMuaWdub3JlZEdyaWQ6dGhpcy5n cmlkKS5pbnNlcnQoYSx0WzBdLHRbMV0sdFsyXSx0WzNdKX0saGUucHJvdG90eXBlLmluc2Vy dENvbGxpc2lvbkNpcmNsZXM9ZnVuY3Rpb24odCxlLHIsbixpKXtmb3IodmFyIGE9ZT90aGlz Lmlnbm9yZWRHcmlkOnRoaXMuZ3JpZCxvPXtidWNrZXRJbnN0YW5jZUlkOnIsZmVhdHVyZUlu ZGV4Om4sY29sbGlzaW9uR3JvdXBJRDppfSxzPTA7czx0Lmxlbmd0aDtzKz00KWEuaW5zZXJ0 Q2lyY2xlKG8sdFtzXSx0W3MrMV0sdFtzKzJdKX0saGUucHJvdG90eXBlLnByb2plY3RBbmRH ZXRQZXJzcGVjdGl2ZVJhdGlvPWZ1bmN0aW9uKGUscixuKXt2YXIgaT1bcixuLDAsMV07cmV0 dXJuIGZlKGksaSxlKSx7cG9pbnQ6bmV3IHQuUG9pbnQoKGlbMF0vaVszXSsxKS8yKnRoaXMu dHJhbnNmb3JtLndpZHRoKzEwMCwoLWlbMV0vaVszXSsxKS8yKnRoaXMudHJhbnNmb3JtLmhl aWdodCsxMDApLHBlcnNwZWN0aXZlUmF0aW86LjUrdGhpcy50cmFuc2Zvcm0uY2FtZXJhVG9D ZW50ZXJEaXN0YW5jZS9pWzNdKi41fX0saGUucHJvdG90eXBlLmlzT2Zmc2NyZWVuPWZ1bmN0 aW9uKHQsZSxyLG4pe3JldHVybiByPDEwMHx8dD49dGhpcy5zY3JlZW5SaWdodEJvdW5kYXJ5 fHxuPDEwMHx8ZT50aGlzLnNjcmVlbkJvdHRvbUJvdW5kYXJ5fSxoZS5wcm90b3R5cGUuaXNJ bnNpZGVHcmlkPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiByPj0wJiZ0PHRoaXMuZ3JpZFJp Z2h0Qm91bmRhcnkmJm4+PTAmJmU8dGhpcy5ncmlkQm90dG9tQm91bmRhcnl9LGhlLnByb3Rv dHlwZS5nZXRWaWV3cG9ydE1hdHJpeD1mdW5jdGlvbigpe3ZhciBlPXQuaWRlbnRpdHkoW10p O3JldHVybiB0LnRyYW5zbGF0ZShlLGUsWy0xMDAsLTEwMCwwXSksZX07dmFyIGRlPWZ1bmN0 aW9uKHQsZSxyLG4pe3RoaXMub3BhY2l0eT10P01hdGgubWF4KDAsTWF0aC5taW4oMSx0Lm9w YWNpdHkrKHQucGxhY2VkP2U6LWUpKSk6biYmcj8xOjAsdGhpcy5wbGFjZWQ9cn07ZGUucHJv dG90eXBlLmlzSGlkZGVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLm9wYWNpdHkmJiF0 aGlzLnBsYWNlZH07dmFyIG1lPWZ1bmN0aW9uKHQsZSxyLG4saSl7dGhpcy50ZXh0PW5ldyBk ZSh0P3QudGV4dDpudWxsLGUscixpKSx0aGlzLmljb249bmV3IGRlKHQ/dC5pY29uOm51bGws ZSxuLGkpfTttZS5wcm90b3R5cGUuaXNIaWRkZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50 ZXh0LmlzSGlkZGVuKCkmJnRoaXMuaWNvbi5pc0hpZGRlbigpfTt2YXIgZ2U9ZnVuY3Rpb24o dCxlLHIpe3RoaXMudGV4dD10LHRoaXMuaWNvbj1lLHRoaXMuc2tpcEZhZGU9cn0sdmU9ZnVu Y3Rpb24oKXt0aGlzLmludlByb2pNYXRyaXg9dC5jcmVhdGUoKSx0aGlzLnZpZXdwb3J0TWF0 cml4PXQuY3JlYXRlKCksdGhpcy5jaXJjbGVzPVtdfSx5ZT1mdW5jdGlvbih0LGUscixuLGkp e3RoaXMuYnVja2V0SW5zdGFuY2VJZD10LHRoaXMuZmVhdHVyZUluZGV4PWUsdGhpcy5zb3Vy Y2VMYXllckluZGV4PXIsdGhpcy5idWNrZXRJbmRleD1uLHRoaXMudGlsZUlEPWl9LHhlPWZ1 bmN0aW9uKHQpe3RoaXMuY3Jvc3NTb3VyY2VDb2xsaXNpb25zPXQsdGhpcy5tYXhHcm91cElE PTAsdGhpcy5jb2xsaXNpb25Hcm91cHM9e319O2Z1bmN0aW9uIGJlKGUscixuLGksYSl7dmFy IG89dC5nZXRBbmNob3JBbGlnbm1lbnQoZSkscz0tKG8uaG9yaXpvbnRhbEFsaWduLS41KSpy LGw9LShvLnZlcnRpY2FsQWxpZ24tLjUpKm4sYz10LmV2YWx1YXRlVmFyaWFibGVPZmZzZXQo ZSxpKTtyZXR1cm4gbmV3IHQuUG9pbnQocytjWzBdKmEsbCtjWzFdKmEpfWZ1bmN0aW9uIF9l KGUscixuLGksYSxvKXt2YXIgcz1lLngxLGw9ZS54MixjPWUueTEsdT1lLnkyLGY9ZS5hbmNo b3JQb2ludFgsaD1lLmFuY2hvclBvaW50WSxwPW5ldyB0LlBvaW50KHIsbik7cmV0dXJuIGkm JnAuX3JvdGF0ZShhP286LW8pLHt4MTpzK3AueCx5MTpjK3AueSx4MjpsK3AueCx5Mjp1K3Au eSxhbmNob3JQb2ludFg6ZixhbmNob3JQb2ludFk6aH19eGUucHJvdG90eXBlLmdldD1mdW5j dGlvbih0KXtpZih0aGlzLmNyb3NzU291cmNlQ29sbGlzaW9ucylyZXR1cm57SUQ6MCxwcmVk aWNhdGU6bnVsbH07aWYoIXRoaXMuY29sbGlzaW9uR3JvdXBzW3RdKXt2YXIgZT0rK3RoaXMu bWF4R3JvdXBJRDt0aGlzLmNvbGxpc2lvbkdyb3Vwc1t0XT17SUQ6ZSxwcmVkaWNhdGU6ZnVu Y3Rpb24odCl7cmV0dXJuIHQuY29sbGlzaW9uR3JvdXBJRD09PWV9fX1yZXR1cm4gdGhpcy5j b2xsaXNpb25Hcm91cHNbdF19O3ZhciB3ZT1mdW5jdGlvbih0LGUscixuKXt0aGlzLnRyYW5z Zm9ybT10LmNsb25lKCksdGhpcy5jb2xsaXNpb25JbmRleD1uZXcgaGUodGhpcy50cmFuc2Zv cm0pLHRoaXMucGxhY2VtZW50cz17fSx0aGlzLm9wYWNpdGllcz17fSx0aGlzLnZhcmlhYmxl T2Zmc2V0cz17fSx0aGlzLnN0YWxlPSExLHRoaXMuY29tbWl0VGltZT0wLHRoaXMuZmFkZUR1 cmF0aW9uPWUsdGhpcy5yZXRhaW5lZFF1ZXJ5RGF0YT17fSx0aGlzLmNvbGxpc2lvbkdyb3Vw cz1uZXcgeGUociksdGhpcy5jb2xsaXNpb25DaXJjbGVBcnJheXM9e30sdGhpcy5wcmV2UGxh Y2VtZW50PW4sbiYmKG4ucHJldlBsYWNlbWVudD12b2lkIDApLHRoaXMucGxhY2VkT3JpZW50 YXRpb25zPXt9fTtmdW5jdGlvbiBUZSh0LGUscixuLGkpe3QuZW1wbGFjZUJhY2soZT8xOjAs cj8xOjAsbnx8MCxpfHwwKSx0LmVtcGxhY2VCYWNrKGU/MTowLHI/MTowLG58fDAsaXx8MCks dC5lbXBsYWNlQmFjayhlPzE6MCxyPzE6MCxufHwwLGl8fDApLHQuZW1wbGFjZUJhY2soZT8x OjAscj8xOjAsbnx8MCxpfHwwKX13ZS5wcm90b3R5cGUuZ2V0QnVja2V0UGFydHM9ZnVuY3Rp b24oZSxyLG4saSl7dmFyIGE9bi5nZXRCdWNrZXQociksbz1uLmxhdGVzdEZlYXR1cmVJbmRl eDtpZihhJiZvJiZyLmlkPT09YS5sYXllcklkc1swXSl7dmFyIHM9bi5jb2xsaXNpb25Cb3hB cnJheSxsPWEubGF5ZXJzWzBdLmxheW91dCxjPU1hdGgucG93KDIsdGhpcy50cmFuc2Zvcm0u em9vbS1uLnRpbGVJRC5vdmVyc2NhbGVkWiksdT1uLnRpbGVTaXplL3QuRVhURU5ULGY9dGhp cy50cmFuc2Zvcm0uY2FsY3VsYXRlUG9zTWF0cml4KG4udGlsZUlELnRvVW53cmFwcGVkKCkp LGg9Im1hcCI9PT1sLmdldCgidGV4dC1waXRjaC1hbGlnbm1lbnQiKSxwPSJtYXAiPT09bC5n ZXQoInRleHQtcm90YXRpb24tYWxpZ25tZW50IiksZD1wZShuLDEsdGhpcy50cmFuc2Zvcm0u em9vbSksbT1RdChmLGgscCx0aGlzLnRyYW5zZm9ybSxkKSxnPW51bGw7aWYoaCl7dmFyIHY9 JHQoZixoLHAsdGhpcy50cmFuc2Zvcm0sZCk7Zz10Lm11bHRpcGx5KFtdLHRoaXMudHJhbnNm b3JtLmxhYmVsUGxhbmVNYXRyaXgsdil9dGhpcy5yZXRhaW5lZFF1ZXJ5RGF0YVthLmJ1Y2tl dEluc3RhbmNlSWRdPW5ldyB5ZShhLmJ1Y2tldEluc3RhbmNlSWQsbyxhLnNvdXJjZUxheWVy SW5kZXgsYS5pbmRleCxuLnRpbGVJRCk7dmFyIHk9e2J1Y2tldDphLGxheW91dDpsLHBvc01h dHJpeDpmLHRleHRMYWJlbFBsYW5lTWF0cml4Om0sbGFiZWxUb1NjcmVlbk1hdHJpeDpnLHNj YWxlOmMsdGV4dFBpeGVsUmF0aW86dSxob2xkaW5nRm9yRmFkZTpuLmhvbGRpbmdGb3JGYWRl KCksY29sbGlzaW9uQm94QXJyYXk6cyxwYXJ0aWFsbHlFdmFsdWF0ZWRUZXh0U2l6ZTp0LmV2 YWx1YXRlU2l6ZUZvclpvb20oYS50ZXh0U2l6ZURhdGEsdGhpcy50cmFuc2Zvcm0uem9vbSks Y29sbGlzaW9uR3JvdXA6dGhpcy5jb2xsaXNpb25Hcm91cHMuZ2V0KGEuc291cmNlSUQpfTtp ZihpKWZvcih2YXIgeD0wLGI9YS5zb3J0S2V5UmFuZ2VzO3g8Yi5sZW5ndGg7eCs9MSl7dmFy IF89Ylt4XSx3PV8uc29ydEtleSxUPV8uc3ltYm9sSW5zdGFuY2VTdGFydCxrPV8uc3ltYm9s SW5zdGFuY2VFbmQ7ZS5wdXNoKHtzb3J0S2V5Oncsc3ltYm9sSW5zdGFuY2VTdGFydDpULHN5 bWJvbEluc3RhbmNlRW5kOmsscGFyYW1ldGVyczp5fSl9ZWxzZSBlLnB1c2goe3N5bWJvbElu c3RhbmNlU3RhcnQ6MCxzeW1ib2xJbnN0YW5jZUVuZDphLnN5bWJvbEluc3RhbmNlcy5sZW5n dGgscGFyYW1ldGVyczp5fSl9fSx3ZS5wcm90b3R5cGUuYXR0ZW1wdEFuY2hvclBsYWNlbWVu dD1mdW5jdGlvbih0LGUscixuLGksYSxvLHMsbCxjLHUsZixoLHAsZCl7dmFyIG0sZz1bZi50 ZXh0T2Zmc2V0MCxmLnRleHRPZmZzZXQxXSx2PWJlKHQscixuLGcsaSkseT10aGlzLmNvbGxp c2lvbkluZGV4LnBsYWNlQ29sbGlzaW9uQm94KF9lKGUsdi54LHYueSxhLG8sdGhpcy50cmFu c2Zvcm0uYW5nbGUpLHUscyxsLGMucHJlZGljYXRlKTtpZihkJiYwPT09dGhpcy5jb2xsaXNp b25JbmRleC5wbGFjZUNvbGxpc2lvbkJveChfZShkLHYueCx2LnksYSxvLHRoaXMudHJhbnNm b3JtLmFuZ2xlKSx1LHMsbCxjLnByZWRpY2F0ZSkuYm94Lmxlbmd0aClyZXR1cm47aWYoeS5i b3gubGVuZ3RoPjApcmV0dXJuIHRoaXMucHJldlBsYWNlbWVudCYmdGhpcy5wcmV2UGxhY2Vt ZW50LnZhcmlhYmxlT2Zmc2V0c1tmLmNyb3NzVGlsZUlEXSYmdGhpcy5wcmV2UGxhY2VtZW50 LnBsYWNlbWVudHNbZi5jcm9zc1RpbGVJRF0mJnRoaXMucHJldlBsYWNlbWVudC5wbGFjZW1l bnRzW2YuY3Jvc3NUaWxlSURdLnRleHQmJihtPXRoaXMucHJldlBsYWNlbWVudC52YXJpYWJs ZU9mZnNldHNbZi5jcm9zc1RpbGVJRF0uYW5jaG9yKSx0aGlzLnZhcmlhYmxlT2Zmc2V0c1tm LmNyb3NzVGlsZUlEXT17dGV4dE9mZnNldDpnLHdpZHRoOnIsaGVpZ2h0Om4sYW5jaG9yOnQs dGV4dEJveFNjYWxlOmkscHJldkFuY2hvcjptfSx0aGlzLm1hcmtVc2VkSnVzdGlmaWNhdGlv bihoLHQsZixwKSxoLmFsbG93VmVydGljYWxQbGFjZW1lbnQmJih0aGlzLm1hcmtVc2VkT3Jp ZW50YXRpb24oaCxwLGYpLHRoaXMucGxhY2VkT3JpZW50YXRpb25zW2YuY3Jvc3NUaWxlSURd PXApLHtzaGlmdDp2LHBsYWNlZEdseXBoQm94ZXM6eX19LHdlLnByb3RvdHlwZS5wbGFjZUxh eWVyQnVja2V0UGFydD1mdW5jdGlvbihlLHIsbil7dmFyIGk9dGhpcyxhPWUucGFyYW1ldGVy cyxvPWEuYnVja2V0LHM9YS5sYXlvdXQsbD1hLnBvc01hdHJpeCxjPWEudGV4dExhYmVsUGxh bmVNYXRyaXgsdT1hLmxhYmVsVG9TY3JlZW5NYXRyaXgsZj1hLnRleHRQaXhlbFJhdGlvLGg9 YS5ob2xkaW5nRm9yRmFkZSxwPWEuY29sbGlzaW9uQm94QXJyYXksZD1hLnBhcnRpYWxseUV2 YWx1YXRlZFRleHRTaXplLG09YS5jb2xsaXNpb25Hcm91cCxnPXMuZ2V0KCJ0ZXh0LW9wdGlv bmFsIiksdj1zLmdldCgiaWNvbi1vcHRpb25hbCIpLHk9cy5nZXQoInRleHQtYWxsb3ctb3Zl cmxhcCIpLHg9cy5nZXQoImljb24tYWxsb3ctb3ZlcmxhcCIpLGI9Im1hcCI9PT1zLmdldCgi dGV4dC1yb3RhdGlvbi1hbGlnbm1lbnQiKSxfPSJtYXAiPT09cy5nZXQoInRleHQtcGl0Y2gt YWxpZ25tZW50Iiksdz0ibm9uZSIhPT1zLmdldCgiaWNvbi10ZXh0LWZpdCIpLFQ9InZpZXdw b3J0LXkiPT09cy5nZXQoInN5bWJvbC16LW9yZGVyIiksaz15JiYoeHx8IW8uaGFzSWNvbkRh dGEoKXx8diksQT14JiYoeXx8IW8uaGFzVGV4dERhdGEoKXx8Zyk7IW8uY29sbGlzaW9uQXJy YXlzJiZwJiZvLmRlc2VyaWFsaXplQ29sbGlzaW9uQm94ZXMocCk7dmFyIE09ZnVuY3Rpb24o ZSxhKXtpZighcltlLmNyb3NzVGlsZUlEXSlpZihoKWkucGxhY2VtZW50c1tlLmNyb3NzVGls ZUlEXT1uZXcgZ2UoITEsITEsITEpO2Vsc2V7dmFyIHAsVD0hMSxNPSExLFM9ITAsRT1udWxs LEw9e2JveDpudWxsLG9mZnNjcmVlbjpudWxsfSxDPXtib3g6bnVsbCxvZmZzY3JlZW46bnVs bH0sUD1udWxsLEk9bnVsbCxPPTAsej0wLEQ9MDthLnRleHRGZWF0dXJlSW5kZXg/Tz1hLnRl eHRGZWF0dXJlSW5kZXg6ZS51c2VSdW50aW1lQ29sbGlzaW9uQ2lyY2xlcyYmKE89ZS5mZWF0 dXJlSW5kZXgpLGEudmVydGljYWxUZXh0RmVhdHVyZUluZGV4JiYoej1hLnZlcnRpY2FsVGV4 dEZlYXR1cmVJbmRleCk7dmFyIFI9YS50ZXh0Qm94O2lmKFIpe3ZhciBGPWZ1bmN0aW9uKHIp e3ZhciBuPXQuV3JpdGluZ01vZGUuaG9yaXpvbnRhbDtpZihvLmFsbG93VmVydGljYWxQbGFj ZW1lbnQmJiFyJiZpLnByZXZQbGFjZW1lbnQpe3ZhciBhPWkucHJldlBsYWNlbWVudC5wbGFj ZWRPcmllbnRhdGlvbnNbZS5jcm9zc1RpbGVJRF07YSYmKGkucGxhY2VkT3JpZW50YXRpb25z W2UuY3Jvc3NUaWxlSURdPWEsbj1hLGkubWFya1VzZWRPcmllbnRhdGlvbihvLG4sZSkpfXJl dHVybiBufSxCPWZ1bmN0aW9uKHIsbil7aWYoby5hbGxvd1ZlcnRpY2FsUGxhY2VtZW50JiZl Lm51bVZlcnRpY2FsR2x5cGhWZXJ0aWNlcz4wJiZhLnZlcnRpY2FsVGV4dEJveClmb3IodmFy IGk9MCxzPW8ud3JpdGluZ01vZGVzO2k8cy5sZW5ndGg7aSs9MSl7aWYoc1tpXT09PXQuV3Jp dGluZ01vZGUudmVydGljYWw/KEw9bigpLEM9TCk6TD1yKCksTCYmTC5ib3gmJkwuYm94Lmxl bmd0aClicmVha31lbHNlIEw9cigpfTtpZihzLmdldCgidGV4dC12YXJpYWJsZS1hbmNob3Ii KSl7dmFyIE49cy5nZXQoInRleHQtdmFyaWFibGUtYW5jaG9yIik7aWYoaS5wcmV2UGxhY2Vt ZW50JiZpLnByZXZQbGFjZW1lbnQudmFyaWFibGVPZmZzZXRzW2UuY3Jvc3NUaWxlSURdKXt2 YXIgaj1pLnByZXZQbGFjZW1lbnQudmFyaWFibGVPZmZzZXRzW2UuY3Jvc3NUaWxlSURdO04u aW5kZXhPZihqLmFuY2hvcik+MCYmKE49Ti5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0 IT09ai5hbmNob3J9KSkpLnVuc2hpZnQoai5hbmNob3IpfXZhciBVPWZ1bmN0aW9uKHQscixu KXtmb3IodmFyIGE9dC54Mi10LngxLHM9dC55Mi10LnkxLGM9ZS50ZXh0Qm94U2NhbGUsdT13 JiYheD9yOm51bGwsaD17Ym94OltdLG9mZnNjcmVlbjohMX0scD15PzIqTi5sZW5ndGg6Ti5s ZW5ndGgsZD0wO2Q8cDsrK2Qpe3ZhciBnPU5bZCVOLmxlbmd0aF0sdj1kPj1OLmxlbmd0aCxr PWkuYXR0ZW1wdEFuY2hvclBsYWNlbWVudChnLHQsYSxzLGMsYixfLGYsbCxtLHYsZSxvLG4s dSk7aWYoayYmKGg9ay5wbGFjZWRHbHlwaEJveGVzKSYmaC5ib3gmJmguYm94Lmxlbmd0aCl7 VD0hMCxFPWsuc2hpZnQ7YnJlYWt9fXJldHVybiBofTtCKChmdW5jdGlvbigpe3JldHVybiBV KFIsYS5pY29uQm94LHQuV3JpdGluZ01vZGUuaG9yaXpvbnRhbCl9KSwoZnVuY3Rpb24oKXt2 YXIgcj1hLnZlcnRpY2FsVGV4dEJveCxuPUwmJkwuYm94JiZMLmJveC5sZW5ndGg7cmV0dXJu IG8uYWxsb3dWZXJ0aWNhbFBsYWNlbWVudCYmIW4mJmUubnVtVmVydGljYWxHbHlwaFZlcnRp Y2VzPjAmJnI/VShyLGEudmVydGljYWxJY29uQm94LHQuV3JpdGluZ01vZGUudmVydGljYWwp Ontib3g6bnVsbCxvZmZzY3JlZW46bnVsbH19KSksTCYmKFQ9TC5ib3gsUz1MLm9mZnNjcmVl bik7dmFyIFY9RihMJiZMLmJveCk7aWYoIVQmJmkucHJldlBsYWNlbWVudCl7dmFyIEg9aS5w cmV2UGxhY2VtZW50LnZhcmlhYmxlT2Zmc2V0c1tlLmNyb3NzVGlsZUlEXTtIJiYoaS52YXJp YWJsZU9mZnNldHNbZS5jcm9zc1RpbGVJRF09SCxpLm1hcmtVc2VkSnVzdGlmaWNhdGlvbihv LEguYW5jaG9yLGUsVikpfX1lbHNle3ZhciBxPWZ1bmN0aW9uKHQscil7dmFyIG49aS5jb2xs aXNpb25JbmRleC5wbGFjZUNvbGxpc2lvbkJveCh0LHksZixsLG0ucHJlZGljYXRlKTtyZXR1 cm4gbiYmbi5ib3gmJm4uYm94Lmxlbmd0aCYmKGkubWFya1VzZWRPcmllbnRhdGlvbihvLHIs ZSksaS5wbGFjZWRPcmllbnRhdGlvbnNbZS5jcm9zc1RpbGVJRF09ciksbn07QigoZnVuY3Rp b24oKXtyZXR1cm4gcShSLHQuV3JpdGluZ01vZGUuaG9yaXpvbnRhbCl9KSwoZnVuY3Rpb24o KXt2YXIgcj1hLnZlcnRpY2FsVGV4dEJveDtyZXR1cm4gby5hbGxvd1ZlcnRpY2FsUGxhY2Vt ZW50JiZlLm51bVZlcnRpY2FsR2x5cGhWZXJ0aWNlcz4wJiZyP3Eocix0LldyaXRpbmdNb2Rl LnZlcnRpY2FsKTp7Ym94Om51bGwsb2Zmc2NyZWVuOm51bGx9fSkpLEYoTCYmTC5ib3gmJkwu Ym94Lmxlbmd0aCl9fWlmKFQ9KHA9TCkmJnAuYm94JiZwLmJveC5sZW5ndGg+MCxTPXAmJnAu b2Zmc2NyZWVuLGUudXNlUnVudGltZUNvbGxpc2lvbkNpcmNsZXMpe3ZhciBHPW8udGV4dC5w bGFjZWRTeW1ib2xBcnJheS5nZXQoZS5jZW50ZXJKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXgp LFk9dC5ldmFsdWF0ZVNpemVGb3JGZWF0dXJlKG8udGV4dFNpemVEYXRhLGQsRyksVz1zLmdl dCgidGV4dC1wYWRkaW5nIiksWD1lLmNvbGxpc2lvbkNpcmNsZURpYW1ldGVyO1A9aS5jb2xs aXNpb25JbmRleC5wbGFjZUNvbGxpc2lvbkNpcmNsZXMoeSxHLG8ubGluZVZlcnRleEFycmF5 LG8uZ2x5cGhPZmZzZXRBcnJheSxZLGwsYyx1LG4sXyxtLnByZWRpY2F0ZSxYLFcpLFQ9eXx8 UC5jaXJjbGVzLmxlbmd0aD4wJiYhUC5jb2xsaXNpb25EZXRlY3RlZCxTPVMmJlAub2Zmc2Ny ZWVufWlmKGEuaWNvbkZlYXR1cmVJbmRleCYmKEQ9YS5pY29uRmVhdHVyZUluZGV4KSxhLmlj b25Cb3gpe3ZhciBaPWZ1bmN0aW9uKHQpe3ZhciBlPXcmJkU/X2UodCxFLngsRS55LGIsXyxp LnRyYW5zZm9ybS5hbmdsZSk6dDtyZXR1cm4gaS5jb2xsaXNpb25JbmRleC5wbGFjZUNvbGxp c2lvbkJveChlLHgsZixsLG0ucHJlZGljYXRlKX07TT1DJiZDLmJveCYmQy5ib3gubGVuZ3Ro JiZhLnZlcnRpY2FsSWNvbkJveD8oST1aKGEudmVydGljYWxJY29uQm94KSkuYm94Lmxlbmd0 aD4wOihJPVooYS5pY29uQm94KSkuYm94Lmxlbmd0aD4wLFM9UyYmSS5vZmZzY3JlZW59dmFy IEo9Z3x8MD09PWUubnVtSG9yaXpvbnRhbEdseXBoVmVydGljZXMmJjA9PT1lLm51bVZlcnRp Y2FsR2x5cGhWZXJ0aWNlcyxLPXZ8fDA9PT1lLm51bUljb25WZXJ0aWNlcztpZihKfHxLP0s/ Snx8KE09TSYmVCk6VD1NJiZUOk09VD1NJiZULFQmJnAmJnAuYm94JiYoQyYmQy5ib3gmJno/ aS5jb2xsaXNpb25JbmRleC5pbnNlcnRDb2xsaXNpb25Cb3gocC5ib3gscy5nZXQoInRleHQt aWdub3JlLXBsYWNlbWVudCIpLG8uYnVja2V0SW5zdGFuY2VJZCx6LG0uSUQpOmkuY29sbGlz aW9uSW5kZXguaW5zZXJ0Q29sbGlzaW9uQm94KHAuYm94LHMuZ2V0KCJ0ZXh0LWlnbm9yZS1w bGFjZW1lbnQiKSxvLmJ1Y2tldEluc3RhbmNlSWQsTyxtLklEKSksTSYmSSYmaS5jb2xsaXNp b25JbmRleC5pbnNlcnRDb2xsaXNpb25Cb3goSS5ib3gscy5nZXQoImljb24taWdub3JlLXBs YWNlbWVudCIpLG8uYnVja2V0SW5zdGFuY2VJZCxELG0uSUQpLFAmJihUJiZpLmNvbGxpc2lv bkluZGV4Lmluc2VydENvbGxpc2lvbkNpcmNsZXMoUC5jaXJjbGVzLHMuZ2V0KCJ0ZXh0LWln bm9yZS1wbGFjZW1lbnQiKSxvLmJ1Y2tldEluc3RhbmNlSWQsTyxtLklEKSxuKSl7dmFyIFE9 by5idWNrZXRJbnN0YW5jZUlkLCQ9aS5jb2xsaXNpb25DaXJjbGVBcnJheXNbUV07dm9pZCAw PT09JCYmKCQ9aS5jb2xsaXNpb25DaXJjbGVBcnJheXNbUV09bmV3IHZlKTtmb3IodmFyIHR0 PTA7dHQ8UC5jaXJjbGVzLmxlbmd0aDt0dCs9NCkkLmNpcmNsZXMucHVzaChQLmNpcmNsZXNb dHQrMF0pLCQuY2lyY2xlcy5wdXNoKFAuY2lyY2xlc1t0dCsxXSksJC5jaXJjbGVzLnB1c2go UC5jaXJjbGVzW3R0KzJdKSwkLmNpcmNsZXMucHVzaChQLmNvbGxpc2lvbkRldGVjdGVkPzE6 MCl9aS5wbGFjZW1lbnRzW2UuY3Jvc3NUaWxlSURdPW5ldyBnZShUfHxrLE18fEEsU3x8by5q dXN0UmVsb2FkZWQpLHJbZS5jcm9zc1RpbGVJRF09ITB9fTtpZihUKWZvcih2YXIgUz1vLmdl dFNvcnRlZFN5bWJvbEluZGV4ZXModGhpcy50cmFuc2Zvcm0uYW5nbGUpLEU9Uy5sZW5ndGgt MTtFPj0wOy0tRSl7dmFyIEw9U1tFXTtNKG8uc3ltYm9sSW5zdGFuY2VzLmdldChMKSxvLmNv bGxpc2lvbkFycmF5c1tMXSl9ZWxzZSBmb3IodmFyIEM9ZS5zeW1ib2xJbnN0YW5jZVN0YXJ0 O0M8ZS5zeW1ib2xJbnN0YW5jZUVuZDtDKyspTShvLnN5bWJvbEluc3RhbmNlcy5nZXQoQyks by5jb2xsaXNpb25BcnJheXNbQ10pO2lmKG4mJm8uYnVja2V0SW5zdGFuY2VJZCBpbiB0aGlz LmNvbGxpc2lvbkNpcmNsZUFycmF5cyl7dmFyIFA9dGhpcy5jb2xsaXNpb25DaXJjbGVBcnJh eXNbby5idWNrZXRJbnN0YW5jZUlkXTt0LmludmVydChQLmludlByb2pNYXRyaXgsbCksUC52 aWV3cG9ydE1hdHJpeD10aGlzLmNvbGxpc2lvbkluZGV4LmdldFZpZXdwb3J0TWF0cml4KCl9 by5qdXN0UmVsb2FkZWQ9ITF9LHdlLnByb3RvdHlwZS5tYXJrVXNlZEp1c3RpZmljYXRpb249 ZnVuY3Rpb24oZSxyLG4saSl7dmFyIGEsbz17bGVmdDpuLmxlZnRKdXN0aWZpZWRUZXh0U3lt Ym9sSW5kZXgsY2VudGVyOm4uY2VudGVySnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4LHJpZ2h0 Om4ucmlnaHRKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXh9O2E9aT09PXQuV3JpdGluZ01vZGUu dmVydGljYWw/bi52ZXJ0aWNhbFBsYWNlZFRleHRTeW1ib2xJbmRleDpvW3QuZ2V0QW5jaG9y SnVzdGlmaWNhdGlvbihyKV07Zm9yKHZhciBzPTAsbD1bbi5sZWZ0SnVzdGlmaWVkVGV4dFN5 bWJvbEluZGV4LG4uY2VudGVySnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4LG4ucmlnaHRKdXN0 aWZpZWRUZXh0U3ltYm9sSW5kZXgsbi52ZXJ0aWNhbFBsYWNlZFRleHRTeW1ib2xJbmRleF07 czxsLmxlbmd0aDtzKz0xKXt2YXIgYz1sW3NdO2M+PTAmJihlLnRleHQucGxhY2VkU3ltYm9s QXJyYXkuZ2V0KGMpLmNyb3NzVGlsZUlEPWE+PTAmJmMhPT1hPzA6bi5jcm9zc1RpbGVJRCl9 fSx3ZS5wcm90b3R5cGUubWFya1VzZWRPcmllbnRhdGlvbj1mdW5jdGlvbihlLHIsbil7Zm9y KHZhciBpPXI9PT10LldyaXRpbmdNb2RlLmhvcml6b250YWx8fHI9PT10LldyaXRpbmdNb2Rl Lmhvcml6b250YWxPbmx5P3I6MCxhPXI9PT10LldyaXRpbmdNb2RlLnZlcnRpY2FsP3I6MCxv PTAscz1bbi5sZWZ0SnVzdGlmaWVkVGV4dFN5bWJvbEluZGV4LG4uY2VudGVySnVzdGlmaWVk VGV4dFN5bWJvbEluZGV4LG4ucmlnaHRKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXhdO288cy5s ZW5ndGg7bys9MSl7dmFyIGw9c1tvXTtlLnRleHQucGxhY2VkU3ltYm9sQXJyYXkuZ2V0KGwp LnBsYWNlZE9yaWVudGF0aW9uPWl9bi52ZXJ0aWNhbFBsYWNlZFRleHRTeW1ib2xJbmRleCYm KGUudGV4dC5wbGFjZWRTeW1ib2xBcnJheS5nZXQobi52ZXJ0aWNhbFBsYWNlZFRleHRTeW1i b2xJbmRleCkucGxhY2VkT3JpZW50YXRpb249YSl9LHdlLnByb3RvdHlwZS5jb21taXQ9ZnVu Y3Rpb24odCl7dGhpcy5jb21taXRUaW1lPXQsdGhpcy56b29tQXRMYXN0UmVjZW5jeUNoZWNr PXRoaXMudHJhbnNmb3JtLnpvb207dmFyIGU9dGhpcy5wcmV2UGxhY2VtZW50LHI9ITE7dGhp cy5wcmV2Wm9vbUFkanVzdG1lbnQ9ZT9lLnpvb21BZGp1c3RtZW50KHRoaXMudHJhbnNmb3Jt Lnpvb20pOjA7dmFyIG49ZT9lLnN5bWJvbEZhZGVDaGFuZ2UodCk6MSxpPWU/ZS5vcGFjaXRp ZXM6e30sYT1lP2UudmFyaWFibGVPZmZzZXRzOnt9LG89ZT9lLnBsYWNlZE9yaWVudGF0aW9u czp7fTtmb3IodmFyIHMgaW4gdGhpcy5wbGFjZW1lbnRzKXt2YXIgbD10aGlzLnBsYWNlbWVu dHNbc10sYz1pW3NdO2M/KHRoaXMub3BhY2l0aWVzW3NdPW5ldyBtZShjLG4sbC50ZXh0LGwu aWNvbikscj1yfHxsLnRleHQhPT1jLnRleHQucGxhY2VkfHxsLmljb24hPT1jLmljb24ucGxh Y2VkKToodGhpcy5vcGFjaXRpZXNbc109bmV3IG1lKG51bGwsbixsLnRleHQsbC5pY29uLGwu c2tpcEZhZGUpLHI9cnx8bC50ZXh0fHxsLmljb24pfWZvcih2YXIgdSBpbiBpKXt2YXIgZj1p W3VdO2lmKCF0aGlzLm9wYWNpdGllc1t1XSl7dmFyIGg9bmV3IG1lKGYsbiwhMSwhMSk7aC5p c0hpZGRlbigpfHwodGhpcy5vcGFjaXRpZXNbdV09aCxyPXJ8fGYudGV4dC5wbGFjZWR8fGYu aWNvbi5wbGFjZWQpfX1mb3IodmFyIHAgaW4gYSl0aGlzLnZhcmlhYmxlT2Zmc2V0c1twXXx8 IXRoaXMub3BhY2l0aWVzW3BdfHx0aGlzLm9wYWNpdGllc1twXS5pc0hpZGRlbigpfHwodGhp cy52YXJpYWJsZU9mZnNldHNbcF09YVtwXSk7Zm9yKHZhciBkIGluIG8pdGhpcy5wbGFjZWRP cmllbnRhdGlvbnNbZF18fCF0aGlzLm9wYWNpdGllc1tkXXx8dGhpcy5vcGFjaXRpZXNbZF0u aXNIaWRkZW4oKXx8KHRoaXMucGxhY2VkT3JpZW50YXRpb25zW2RdPW9bZF0pO3I/dGhpcy5s YXN0UGxhY2VtZW50Q2hhbmdlVGltZT10OiJudW1iZXIiIT10eXBlb2YgdGhpcy5sYXN0UGxh Y2VtZW50Q2hhbmdlVGltZSYmKHRoaXMubGFzdFBsYWNlbWVudENoYW5nZVRpbWU9ZT9lLmxh c3RQbGFjZW1lbnRDaGFuZ2VUaW1lOnQpfSx3ZS5wcm90b3R5cGUudXBkYXRlTGF5ZXJPcGFj aXRpZXM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9e30sbj0wLGk9ZTtuPGkubGVuZ3RoO24r PTEpe3ZhciBhPWlbbl0sbz1hLmdldEJ1Y2tldCh0KTtvJiZhLmxhdGVzdEZlYXR1cmVJbmRl eCYmdC5pZD09PW8ubGF5ZXJJZHNbMF0mJnRoaXMudXBkYXRlQnVja2V0T3BhY2l0aWVzKG8s cixhLmNvbGxpc2lvbkJveEFycmF5KX19LHdlLnByb3RvdHlwZS51cGRhdGVCdWNrZXRPcGFj aXRpZXM9ZnVuY3Rpb24oZSxyLG4pe3ZhciBpPXRoaXM7ZS5oYXNUZXh0RGF0YSgpJiZlLnRl eHQub3BhY2l0eVZlcnRleEFycmF5LmNsZWFyKCksZS5oYXNJY29uRGF0YSgpJiZlLmljb24u b3BhY2l0eVZlcnRleEFycmF5LmNsZWFyKCksZS5oYXNJY29uQ29sbGlzaW9uQm94RGF0YSgp JiZlLmljb25Db2xsaXNpb25Cb3guY29sbGlzaW9uVmVydGV4QXJyYXkuY2xlYXIoKSxlLmhh c1RleHRDb2xsaXNpb25Cb3hEYXRhKCkmJmUudGV4dENvbGxpc2lvbkJveC5jb2xsaXNpb25W ZXJ0ZXhBcnJheS5jbGVhcigpO3ZhciBhPWUubGF5ZXJzWzBdLmxheW91dCxvPW5ldyBtZShu dWxsLDAsITEsITEsITApLHM9YS5nZXQoInRleHQtYWxsb3ctb3ZlcmxhcCIpLGw9YS5nZXQo Imljb24tYWxsb3ctb3ZlcmxhcCIpLGM9YS5nZXQoInRleHQtdmFyaWFibGUtYW5jaG9yIiks dT0ibWFwIj09PWEuZ2V0KCJ0ZXh0LXJvdGF0aW9uLWFsaWdubWVudCIpLGY9Im1hcCI9PT1h LmdldCgidGV4dC1waXRjaC1hbGlnbm1lbnQiKSxoPSJub25lIiE9PWEuZ2V0KCJpY29uLXRl eHQtZml0IikscD1uZXcgbWUobnVsbCwwLHMmJihsfHwhZS5oYXNJY29uRGF0YSgpfHxhLmdl dCgiaWNvbi1vcHRpb25hbCIpKSxsJiYoc3x8IWUuaGFzVGV4dERhdGEoKXx8YS5nZXQoInRl eHQtb3B0aW9uYWwiKSksITApOyFlLmNvbGxpc2lvbkFycmF5cyYmbiYmKGUuaGFzSWNvbkNv bGxpc2lvbkJveERhdGEoKXx8ZS5oYXNUZXh0Q29sbGlzaW9uQm94RGF0YSgpKSYmZS5kZXNl cmlhbGl6ZUNvbGxpc2lvbkJveGVzKG4pO2Zvcih2YXIgZD1mdW5jdGlvbih0LGUscil7Zm9y KHZhciBuPTA7bjxlLzQ7bisrKXQub3BhY2l0eVZlcnRleEFycmF5LmVtcGxhY2VCYWNrKHIp fSxtPWZ1bmN0aW9uKG4pe3ZhciBhPWUuc3ltYm9sSW5zdGFuY2VzLmdldChuKSxzPWEubnVt SG9yaXpvbnRhbEdseXBoVmVydGljZXMsbD1hLm51bVZlcnRpY2FsR2x5cGhWZXJ0aWNlcyxt PWEuY3Jvc3NUaWxlSUQsZz1yW21dLHY9aS5vcGFjaXRpZXNbbV07Zz92PW86dnx8KHY9cCxp Lm9wYWNpdGllc1ttXT12KSxyW21dPSEwO3ZhciB5PXM+MHx8bD4wLHg9YS5udW1JY29uVmVy dGljZXM+MCxiPWkucGxhY2VkT3JpZW50YXRpb25zW2EuY3Jvc3NUaWxlSURdLF89Yj09PXQu V3JpdGluZ01vZGUudmVydGljYWwsdz1iPT09dC5Xcml0aW5nTW9kZS5ob3Jpem9udGFsfHxi PT09dC5Xcml0aW5nTW9kZS5ob3Jpem9udGFsT25seTtpZih5KXt2YXIgVD1QZSh2LnRleHQp LGs9Xz9JZTpUO2QoZS50ZXh0LHMsayk7dmFyIEE9dz9JZTpUO2QoZS50ZXh0LGwsQSk7dmFy IE09di50ZXh0LmlzSGlkZGVuKCk7W2EucmlnaHRKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXgs YS5jZW50ZXJKdXN0aWZpZWRUZXh0U3ltYm9sSW5kZXgsYS5sZWZ0SnVzdGlmaWVkVGV4dFN5 bWJvbEluZGV4XS5mb3JFYWNoKChmdW5jdGlvbih0KXt0Pj0wJiYoZS50ZXh0LnBsYWNlZFN5 bWJvbEFycmF5LmdldCh0KS5oaWRkZW49TXx8Xz8xOjApfSkpLGEudmVydGljYWxQbGFjZWRU ZXh0U3ltYm9sSW5kZXg+PTAmJihlLnRleHQucGxhY2VkU3ltYm9sQXJyYXkuZ2V0KGEudmVy dGljYWxQbGFjZWRUZXh0U3ltYm9sSW5kZXgpLmhpZGRlbj1NfHx3PzE6MCk7dmFyIFM9aS52 YXJpYWJsZU9mZnNldHNbYS5jcm9zc1RpbGVJRF07UyYmaS5tYXJrVXNlZEp1c3RpZmljYXRp b24oZSxTLmFuY2hvcixhLGIpO3ZhciBFPWkucGxhY2VkT3JpZW50YXRpb25zW2EuY3Jvc3NU aWxlSURdO0UmJihpLm1hcmtVc2VkSnVzdGlmaWNhdGlvbihlLCJsZWZ0IixhLEUpLGkubWFy a1VzZWRPcmllbnRhdGlvbihlLEUsYSkpfWlmKHgpe3ZhciBMPVBlKHYuaWNvbiksQz0hKGgm JmEudmVydGljYWxQbGFjZWRJY29uU3ltYm9sSW5kZXgmJl8pO2lmKGEucGxhY2VkSWNvblN5 bWJvbEluZGV4Pj0wKXt2YXIgUD1DP0w6SWU7ZChlLmljb24sYS5udW1JY29uVmVydGljZXMs UCksZS5pY29uLnBsYWNlZFN5bWJvbEFycmF5LmdldChhLnBsYWNlZEljb25TeW1ib2xJbmRl eCkuaGlkZGVuPXYuaWNvbi5pc0hpZGRlbigpfWlmKGEudmVydGljYWxQbGFjZWRJY29uU3lt Ym9sSW5kZXg+PTApe3ZhciBJPUM/SWU6TDtkKGUuaWNvbixhLm51bVZlcnRpY2FsSWNvblZl cnRpY2VzLEkpLGUuaWNvbi5wbGFjZWRTeW1ib2xBcnJheS5nZXQoYS52ZXJ0aWNhbFBsYWNl ZEljb25TeW1ib2xJbmRleCkuaGlkZGVuPXYuaWNvbi5pc0hpZGRlbigpfX1pZihlLmhhc0lj b25Db2xsaXNpb25Cb3hEYXRhKCl8fGUuaGFzVGV4dENvbGxpc2lvbkJveERhdGEoKSl7dmFy IE89ZS5jb2xsaXNpb25BcnJheXNbbl07aWYoTyl7dmFyIHo9bmV3IHQuUG9pbnQoMCwwKTtp ZihPLnRleHRCb3h8fE8udmVydGljYWxUZXh0Qm94KXt2YXIgRD0hMDtpZihjKXt2YXIgUj1p LnZhcmlhYmxlT2Zmc2V0c1ttXTtSPyh6PWJlKFIuYW5jaG9yLFIud2lkdGgsUi5oZWlnaHQs Ui50ZXh0T2Zmc2V0LFIudGV4dEJveFNjYWxlKSx1JiZ6Ll9yb3RhdGUoZj9pLnRyYW5zZm9y bS5hbmdsZTotaS50cmFuc2Zvcm0uYW5nbGUpKTpEPSExfU8udGV4dEJveCYmVGUoZS50ZXh0 Q29sbGlzaW9uQm94LmNvbGxpc2lvblZlcnRleEFycmF5LHYudGV4dC5wbGFjZWQsIUR8fF8s ei54LHoueSksTy52ZXJ0aWNhbFRleHRCb3gmJlRlKGUudGV4dENvbGxpc2lvbkJveC5jb2xs aXNpb25WZXJ0ZXhBcnJheSx2LnRleHQucGxhY2VkLCFEfHx3LHoueCx6LnkpfXZhciBGPUJv b2xlYW4oIXcmJk8udmVydGljYWxJY29uQm94KTtPLmljb25Cb3gmJlRlKGUuaWNvbkNvbGxp c2lvbkJveC5jb2xsaXNpb25WZXJ0ZXhBcnJheSx2Lmljb24ucGxhY2VkLEYsaD96Lng6MCxo P3oueTowKSxPLnZlcnRpY2FsSWNvbkJveCYmVGUoZS5pY29uQ29sbGlzaW9uQm94LmNvbGxp c2lvblZlcnRleEFycmF5LHYuaWNvbi5wbGFjZWQsIUYsaD96Lng6MCxoP3oueTowKX19fSxn PTA7ZzxlLnN5bWJvbEluc3RhbmNlcy5sZW5ndGg7ZysrKW0oZyk7aWYoZS5zb3J0RmVhdHVy ZXModGhpcy50cmFuc2Zvcm0uYW5nbGUpLHRoaXMucmV0YWluZWRRdWVyeURhdGFbZS5idWNr ZXRJbnN0YW5jZUlkXSYmKHRoaXMucmV0YWluZWRRdWVyeURhdGFbZS5idWNrZXRJbnN0YW5j ZUlkXS5mZWF0dXJlU29ydE9yZGVyPWUuZmVhdHVyZVNvcnRPcmRlciksZS5oYXNUZXh0RGF0 YSgpJiZlLnRleHQub3BhY2l0eVZlcnRleEJ1ZmZlciYmZS50ZXh0Lm9wYWNpdHlWZXJ0ZXhC dWZmZXIudXBkYXRlRGF0YShlLnRleHQub3BhY2l0eVZlcnRleEFycmF5KSxlLmhhc0ljb25E YXRhKCkmJmUuaWNvbi5vcGFjaXR5VmVydGV4QnVmZmVyJiZlLmljb24ub3BhY2l0eVZlcnRl eEJ1ZmZlci51cGRhdGVEYXRhKGUuaWNvbi5vcGFjaXR5VmVydGV4QXJyYXkpLGUuaGFzSWNv bkNvbGxpc2lvbkJveERhdGEoKSYmZS5pY29uQ29sbGlzaW9uQm94LmNvbGxpc2lvblZlcnRl eEJ1ZmZlciYmZS5pY29uQ29sbGlzaW9uQm94LmNvbGxpc2lvblZlcnRleEJ1ZmZlci51cGRh dGVEYXRhKGUuaWNvbkNvbGxpc2lvbkJveC5jb2xsaXNpb25WZXJ0ZXhBcnJheSksZS5oYXNU ZXh0Q29sbGlzaW9uQm94RGF0YSgpJiZlLnRleHRDb2xsaXNpb25Cb3guY29sbGlzaW9uVmVy dGV4QnVmZmVyJiZlLnRleHRDb2xsaXNpb25Cb3guY29sbGlzaW9uVmVydGV4QnVmZmVyLnVw ZGF0ZURhdGEoZS50ZXh0Q29sbGlzaW9uQm94LmNvbGxpc2lvblZlcnRleEFycmF5KSxlLmJ1 Y2tldEluc3RhbmNlSWQgaW4gdGhpcy5jb2xsaXNpb25DaXJjbGVBcnJheXMpe3ZhciB2PXRo aXMuY29sbGlzaW9uQ2lyY2xlQXJyYXlzW2UuYnVja2V0SW5zdGFuY2VJZF07ZS5wbGFjZW1l bnRJbnZQcm9qTWF0cml4PXYuaW52UHJvak1hdHJpeCxlLnBsYWNlbWVudFZpZXdwb3J0TWF0 cml4PXYudmlld3BvcnRNYXRyaXgsZS5jb2xsaXNpb25DaXJjbGVBcnJheT12LmNpcmNsZXMs ZGVsZXRlIHRoaXMuY29sbGlzaW9uQ2lyY2xlQXJyYXlzW2UuYnVja2V0SW5zdGFuY2VJZF19 fSx3ZS5wcm90b3R5cGUuc3ltYm9sRmFkZUNoYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gMD09 PXRoaXMuZmFkZUR1cmF0aW9uPzE6KHQtdGhpcy5jb21taXRUaW1lKS90aGlzLmZhZGVEdXJh dGlvbit0aGlzLnByZXZab29tQWRqdXN0bWVudH0sd2UucHJvdG90eXBlLnpvb21BZGp1c3Rt ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLm1heCgwLCh0aGlzLnRyYW5zZm9ybS56b29t LXQpLzEuNSl9LHdlLnByb3RvdHlwZS5oYXNUcmFuc2l0aW9ucz1mdW5jdGlvbih0KXtyZXR1 cm4gdGhpcy5zdGFsZXx8dC10aGlzLmxhc3RQbGFjZW1lbnRDaGFuZ2VUaW1lPHRoaXMuZmFk ZUR1cmF0aW9ufSx3ZS5wcm90b3R5cGUuc3RpbGxSZWNlbnQ9ZnVuY3Rpb24odCxlKXt2YXIg cj10aGlzLnpvb21BdExhc3RSZWNlbmN5Q2hlY2s9PT1lPzEtdGhpcy56b29tQWRqdXN0bWVu dChlKToxO3JldHVybiB0aGlzLnpvb21BdExhc3RSZWNlbmN5Q2hlY2s9ZSx0aGlzLmNvbW1p dFRpbWUrdGhpcy5mYWRlRHVyYXRpb24qcj50fSx3ZS5wcm90b3R5cGUuc2V0U3RhbGU9ZnVu Y3Rpb24oKXt0aGlzLnN0YWxlPSEwfTt2YXIga2U9TWF0aC5wb3coMiwyNSksQWU9TWF0aC5w b3coMiwyNCksTWU9TWF0aC5wb3coMiwxNyksU2U9TWF0aC5wb3coMiwxNiksRWU9TWF0aC5w b3coMiw5KSxMZT1NYXRoLnBvdygyLDgpLENlPU1hdGgucG93KDIsMSk7ZnVuY3Rpb24gUGUo dCl7aWYoMD09PXQub3BhY2l0eSYmIXQucGxhY2VkKXJldHVybiAwO2lmKDE9PT10Lm9wYWNp dHkmJnQucGxhY2VkKXJldHVybiA0Mjk0OTY3Mjk1O3ZhciBlPXQucGxhY2VkPzE6MCxyPU1h dGguZmxvb3IoMTI3KnQub3BhY2l0eSk7cmV0dXJuIHIqa2UrZSpBZStyKk1lK2UqU2UrcipF ZStlKkxlK3IqQ2UrZX12YXIgSWU9MCxPZT1mdW5jdGlvbih0KXt0aGlzLl9zb3J0QWNyb3Nz VGlsZXM9InZpZXdwb3J0LXkiIT09dC5sYXlvdXQuZ2V0KCJzeW1ib2wtei1vcmRlciIpJiZ2 b2lkIDAhPT10LmxheW91dC5nZXQoInN5bWJvbC1zb3J0LWtleSIpLmNvbnN0YW50T3IoMSks dGhpcy5fY3VycmVudFRpbGVJbmRleD0wLHRoaXMuX2N1cnJlbnRQYXJ0SW5kZXg9MCx0aGlz Ll9zZWVuQ3Jvc3NUaWxlSURzPXt9LHRoaXMuX2J1Y2tldFBhcnRzPVtdfTtPZS5wcm90b3R5 cGUuY29udGludWVQbGFjZW1lbnQ9ZnVuY3Rpb24odCxlLHIsbixpKXtmb3IodmFyIGE9dGhp cy5fYnVja2V0UGFydHM7dGhpcy5fY3VycmVudFRpbGVJbmRleDx0Lmxlbmd0aDspe3ZhciBv PXRbdGhpcy5fY3VycmVudFRpbGVJbmRleF07aWYoZS5nZXRCdWNrZXRQYXJ0cyhhLG4sbyx0 aGlzLl9zb3J0QWNyb3NzVGlsZXMpLHRoaXMuX2N1cnJlbnRUaWxlSW5kZXgrKyxpKCkpcmV0 dXJuITB9Zm9yKHRoaXMuX3NvcnRBY3Jvc3NUaWxlcyYmKHRoaXMuX3NvcnRBY3Jvc3NUaWxl cz0hMSxhLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuc29ydEtleS1lLnNvcnRLZXl9 KSkpO3RoaXMuX2N1cnJlbnRQYXJ0SW5kZXg8YS5sZW5ndGg7KXt2YXIgcz1hW3RoaXMuX2N1 cnJlbnRQYXJ0SW5kZXhdO2lmKGUucGxhY2VMYXllckJ1Y2tldFBhcnQocyx0aGlzLl9zZWVu Q3Jvc3NUaWxlSURzLHIpLHRoaXMuX2N1cnJlbnRQYXJ0SW5kZXgrKyxpKCkpcmV0dXJuITB9 cmV0dXJuITF9O3ZhciB6ZT1mdW5jdGlvbih0LGUscixuLGksYSxvKXt0aGlzLnBsYWNlbWVu dD1uZXcgd2UodCxpLGEsbyksdGhpcy5fY3VycmVudFBsYWNlbWVudEluZGV4PWUubGVuZ3Ro LTEsdGhpcy5fZm9yY2VGdWxsUGxhY2VtZW50PXIsdGhpcy5fc2hvd0NvbGxpc2lvbkJveGVz PW4sdGhpcy5fZG9uZT0hMX07emUucHJvdG90eXBlLmlzRG9uZT1mdW5jdGlvbigpe3JldHVy biB0aGlzLl9kb25lfSx6ZS5wcm90b3R5cGUuY29udGludWVQbGFjZW1lbnQ9ZnVuY3Rpb24o ZSxyLG4pe2Zvcih2YXIgaT10aGlzLGE9dC5icm93c2VyLm5vdygpLG89ZnVuY3Rpb24oKXt2 YXIgZT10LmJyb3dzZXIubm93KCktYTtyZXR1cm4haS5fZm9yY2VGdWxsUGxhY2VtZW50JiZl PjJ9O3RoaXMuX2N1cnJlbnRQbGFjZW1lbnRJbmRleD49MDspe3ZhciBzPXJbZVt0aGlzLl9j dXJyZW50UGxhY2VtZW50SW5kZXhdXSxsPXRoaXMucGxhY2VtZW50LmNvbGxpc2lvbkluZGV4 LnRyYW5zZm9ybS56b29tO2lmKCJzeW1ib2wiPT09cy50eXBlJiYoIXMubWluem9vbXx8cy5t aW56b29tPD1sKSYmKCFzLm1heHpvb218fHMubWF4em9vbT5sKSl7aWYodGhpcy5faW5Qcm9n cmVzc0xheWVyfHwodGhpcy5faW5Qcm9ncmVzc0xheWVyPW5ldyBPZShzKSksdGhpcy5faW5Q cm9ncmVzc0xheWVyLmNvbnRpbnVlUGxhY2VtZW50KG5bcy5zb3VyY2VdLHRoaXMucGxhY2Vt ZW50LHRoaXMuX3Nob3dDb2xsaXNpb25Cb3hlcyxzLG8pKXJldHVybjtkZWxldGUgdGhpcy5f aW5Qcm9ncmVzc0xheWVyfXRoaXMuX2N1cnJlbnRQbGFjZW1lbnRJbmRleC0tfXRoaXMuX2Rv bmU9ITB9LHplLnByb3RvdHlwZS5jb21taXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGxh Y2VtZW50LmNvbW1pdCh0KSx0aGlzLnBsYWNlbWVudH07dmFyIERlPTUxMi90LkVYVEVOVC8y LFJlPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLnRpbGVJRD10LHRoaXMuaW5kZXhlZFN5bWJvbElu c3RhbmNlcz17fSx0aGlzLmJ1Y2tldEluc3RhbmNlSWQ9cjtmb3IodmFyIG49MDtuPGUubGVu Z3RoO24rKyl7dmFyIGk9ZS5nZXQobiksYT1pLmtleTt0aGlzLmluZGV4ZWRTeW1ib2xJbnN0 YW5jZXNbYV18fCh0aGlzLmluZGV4ZWRTeW1ib2xJbnN0YW5jZXNbYV09W10pLHRoaXMuaW5k ZXhlZFN5bWJvbEluc3RhbmNlc1thXS5wdXNoKHtjcm9zc1RpbGVJRDppLmNyb3NzVGlsZUlE LGNvb3JkOnRoaXMuZ2V0U2NhbGVkQ29vcmRpbmF0ZXMoaSx0KX0pfX07UmUucHJvdG90eXBl LmdldFNjYWxlZENvb3JkaW5hdGVzPWZ1bmN0aW9uKGUscil7dmFyIG49ci5jYW5vbmljYWwu ei10aGlzLnRpbGVJRC5jYW5vbmljYWwueixpPURlL01hdGgucG93KDIsbik7cmV0dXJue3g6 TWF0aC5mbG9vcigoci5jYW5vbmljYWwueCp0LkVYVEVOVCtlLmFuY2hvclgpKmkpLHk6TWF0 aC5mbG9vcigoci5jYW5vbmljYWwueSp0LkVYVEVOVCtlLmFuY2hvclkpKmkpfX0sUmUucHJv dG90eXBlLmZpbmRNYXRjaGVzPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49dGhpcy50aWxl SUQuY2Fub25pY2FsLno8ZS5jYW5vbmljYWwuej8xOk1hdGgucG93KDIsdGhpcy50aWxlSUQu Y2Fub25pY2FsLnotZS5jYW5vbmljYWwueiksaT0wO2k8dC5sZW5ndGg7aSsrKXt2YXIgYT10 LmdldChpKTtpZighYS5jcm9zc1RpbGVJRCl7dmFyIG89dGhpcy5pbmRleGVkU3ltYm9sSW5z dGFuY2VzW2Eua2V5XTtpZihvKWZvcih2YXIgcz10aGlzLmdldFNjYWxlZENvb3JkaW5hdGVz KGEsZSksbD0wLGM9bztsPGMubGVuZ3RoO2wrPTEpe3ZhciB1PWNbbF07aWYoTWF0aC5hYnMo dS5jb29yZC54LXMueCk8PW4mJk1hdGguYWJzKHUuY29vcmQueS1zLnkpPD1uJiYhclt1LmNy b3NzVGlsZUlEXSl7clt1LmNyb3NzVGlsZUlEXT0hMCxhLmNyb3NzVGlsZUlEPXUuY3Jvc3NU aWxlSUQ7YnJlYWt9fX19fTt2YXIgRmU9ZnVuY3Rpb24oKXt0aGlzLm1heENyb3NzVGlsZUlE PTB9O0ZlLnByb3RvdHlwZS5nZW5lcmF0ZT1mdW5jdGlvbigpe3JldHVybisrdGhpcy5tYXhD cm9zc1RpbGVJRH07dmFyIEJlPWZ1bmN0aW9uKCl7dGhpcy5pbmRleGVzPXt9LHRoaXMudXNl ZENyb3NzVGlsZUlEcz17fSx0aGlzLmxuZz0wfTtCZS5wcm90b3R5cGUuaGFuZGxlV3JhcEp1 bXA9ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5yb3VuZCgodC10aGlzLmxuZykvMzYwKTtpZigw IT09ZSlmb3IodmFyIHIgaW4gdGhpcy5pbmRleGVzKXt2YXIgbj10aGlzLmluZGV4ZXNbcl0s aT17fTtmb3IodmFyIGEgaW4gbil7dmFyIG89blthXTtvLnRpbGVJRD1vLnRpbGVJRC51bndy YXBUbyhvLnRpbGVJRC53cmFwK2UpLGlbby50aWxlSUQua2V5XT1vfXRoaXMuaW5kZXhlc1ty XT1pfXRoaXMubG5nPXR9LEJlLnByb3RvdHlwZS5hZGRCdWNrZXQ9ZnVuY3Rpb24odCxlLHIp e2lmKHRoaXMuaW5kZXhlc1t0Lm92ZXJzY2FsZWRaXSYmdGhpcy5pbmRleGVzW3Qub3ZlcnNj YWxlZFpdW3Qua2V5XSl7aWYodGhpcy5pbmRleGVzW3Qub3ZlcnNjYWxlZFpdW3Qua2V5XS5i dWNrZXRJbnN0YW5jZUlkPT09ZS5idWNrZXRJbnN0YW5jZUlkKXJldHVybiExO3RoaXMucmVt b3ZlQnVja2V0Q3Jvc3NUaWxlSURzKHQub3ZlcnNjYWxlZFosdGhpcy5pbmRleGVzW3Qub3Zl cnNjYWxlZFpdW3Qua2V5XSl9Zm9yKHZhciBuPTA7bjxlLnN5bWJvbEluc3RhbmNlcy5sZW5n dGg7bisrKXtlLnN5bWJvbEluc3RhbmNlcy5nZXQobikuY3Jvc3NUaWxlSUQ9MH10aGlzLnVz ZWRDcm9zc1RpbGVJRHNbdC5vdmVyc2NhbGVkWl18fCh0aGlzLnVzZWRDcm9zc1RpbGVJRHNb dC5vdmVyc2NhbGVkWl09e30pO3ZhciBpPXRoaXMudXNlZENyb3NzVGlsZUlEc1t0Lm92ZXJz Y2FsZWRaXTtmb3IodmFyIGEgaW4gdGhpcy5pbmRleGVzKXt2YXIgbz10aGlzLmluZGV4ZXNb YV07aWYoTnVtYmVyKGEpPnQub3ZlcnNjYWxlZFopZm9yKHZhciBzIGluIG8pe3ZhciBsPW9b c107bC50aWxlSUQuaXNDaGlsZE9mKHQpJiZsLmZpbmRNYXRjaGVzKGUuc3ltYm9sSW5zdGFu Y2VzLHQsaSl9ZWxzZXt2YXIgYz1vW3Quc2NhbGVkVG8oTnVtYmVyKGEpKS5rZXldO2MmJmMu ZmluZE1hdGNoZXMoZS5zeW1ib2xJbnN0YW5jZXMsdCxpKX19Zm9yKHZhciB1PTA7dTxlLnN5 bWJvbEluc3RhbmNlcy5sZW5ndGg7dSsrKXt2YXIgZj1lLnN5bWJvbEluc3RhbmNlcy5nZXQo dSk7Zi5jcm9zc1RpbGVJRHx8KGYuY3Jvc3NUaWxlSUQ9ci5nZW5lcmF0ZSgpLGlbZi5jcm9z c1RpbGVJRF09ITApfXJldHVybiB2b2lkIDA9PT10aGlzLmluZGV4ZXNbdC5vdmVyc2NhbGVk Wl0mJih0aGlzLmluZGV4ZXNbdC5vdmVyc2NhbGVkWl09e30pLHRoaXMuaW5kZXhlc1t0Lm92 ZXJzY2FsZWRaXVt0LmtleV09bmV3IFJlKHQsZS5zeW1ib2xJbnN0YW5jZXMsZS5idWNrZXRJ bnN0YW5jZUlkKSwhMH0sQmUucHJvdG90eXBlLnJlbW92ZUJ1Y2tldENyb3NzVGlsZUlEcz1m dW5jdGlvbih0LGUpe2Zvcih2YXIgciBpbiBlLmluZGV4ZWRTeW1ib2xJbnN0YW5jZXMpZm9y KHZhciBuPTAsaT1lLmluZGV4ZWRTeW1ib2xJbnN0YW5jZXNbcl07bjxpLmxlbmd0aDtuKz0x KXt2YXIgYT1pW25dO2RlbGV0ZSB0aGlzLnVzZWRDcm9zc1RpbGVJRHNbdF1bYS5jcm9zc1Rp bGVJRF19fSxCZS5wcm90b3R5cGUucmVtb3ZlU3RhbGVCdWNrZXRzPWZ1bmN0aW9uKHQpe3Zh ciBlPSExO2Zvcih2YXIgciBpbiB0aGlzLmluZGV4ZXMpe3ZhciBuPXRoaXMuaW5kZXhlc1ty XTtmb3IodmFyIGkgaW4gbil0W25baV0uYnVja2V0SW5zdGFuY2VJZF18fCh0aGlzLnJlbW92 ZUJ1Y2tldENyb3NzVGlsZUlEcyhyLG5baV0pLGRlbGV0ZSBuW2ldLGU9ITApfXJldHVybiBl fTt2YXIgTmU9ZnVuY3Rpb24oKXt0aGlzLmxheWVySW5kZXhlcz17fSx0aGlzLmNyb3NzVGls ZUlEcz1uZXcgRmUsdGhpcy5tYXhCdWNrZXRJbnN0YW5jZUlkPTAsdGhpcy5idWNrZXRzSW5D dXJyZW50UGxhY2VtZW50PXt9fTtOZS5wcm90b3R5cGUuYWRkTGF5ZXI9ZnVuY3Rpb24odCxl LHIpe3ZhciBuPXRoaXMubGF5ZXJJbmRleGVzW3QuaWRdO3ZvaWQgMD09PW4mJihuPXRoaXMu bGF5ZXJJbmRleGVzW3QuaWRdPW5ldyBCZSk7dmFyIGk9ITEsYT17fTtuLmhhbmRsZVdyYXBK dW1wKHIpO2Zvcih2YXIgbz0wLHM9ZTtvPHMubGVuZ3RoO28rPTEpe3ZhciBsPXNbb10sYz1s LmdldEJ1Y2tldCh0KTtjJiZ0LmlkPT09Yy5sYXllcklkc1swXSYmKGMuYnVja2V0SW5zdGFu Y2VJZHx8KGMuYnVja2V0SW5zdGFuY2VJZD0rK3RoaXMubWF4QnVja2V0SW5zdGFuY2VJZCks bi5hZGRCdWNrZXQobC50aWxlSUQsYyx0aGlzLmNyb3NzVGlsZUlEcykmJihpPSEwKSxhW2Mu YnVja2V0SW5zdGFuY2VJZF09ITApfXJldHVybiBuLnJlbW92ZVN0YWxlQnVja2V0cyhhKSYm KGk9ITApLGl9LE5lLnByb3RvdHlwZS5wcnVuZVVudXNlZExheWVycz1mdW5jdGlvbih0KXt2 YXIgZT17fTtmb3IodmFyIHIgaW4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtlW3RdPSEwfSkp LHRoaXMubGF5ZXJJbmRleGVzKWVbcl18fGRlbGV0ZSB0aGlzLmxheWVySW5kZXhlc1tyXX07 dmFyIGplPWZ1bmN0aW9uKGUscil7cmV0dXJuIHQuZW1pdFZhbGlkYXRpb25FcnJvcnMoZSxy JiZyLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuInNvdXJjZS5jYW52YXMiIT09dC5pZGVu dGlmaWVyfSkpKX0sVWU9dC5waWNrKFV0LFsiYWRkTGF5ZXIiLCJyZW1vdmVMYXllciIsInNl dFBhaW50UHJvcGVydHkiLCJzZXRMYXlvdXRQcm9wZXJ0eSIsInNldEZpbHRlciIsImFkZFNv dXJjZSIsInJlbW92ZVNvdXJjZSIsInNldExheWVyWm9vbVJhbmdlIiwic2V0TGlnaHQiLCJz ZXRUcmFuc2l0aW9uIiwic2V0R2VvSlNPTlNvdXJjZURhdGEiXSksVmU9dC5waWNrKFV0LFsi c2V0Q2VudGVyIiwic2V0Wm9vbSIsInNldEJlYXJpbmciLCJzZXRQaXRjaCJdKSxIZT1mdW5j dGlvbigpe3ZhciBlPXt9LHI9dC5zdHlsZVNwZWMuJHZlcnNpb247Zm9yKHZhciBuIGluIHQu c3R5bGVTcGVjLiRyb290KXt2YXIgaT10LnN0eWxlU3BlYy4kcm9vdFtuXTtpZihpLnJlcXVp cmVkKXt2YXIgYT1udWxsO251bGwhPShhPSJ2ZXJzaW9uIj09PW4/cjoiYXJyYXkiPT09aS50 eXBlP1tdOnt9KSYmKGVbbl09YSl9fXJldHVybiBlfSgpLHFlPWZ1bmN0aW9uKGUpe2Z1bmN0 aW9uIHIobixpKXt2YXIgYT10aGlzO3ZvaWQgMD09PWkmJihpPXt9KSxlLmNhbGwodGhpcyks dGhpcy5tYXA9bix0aGlzLmRpc3BhdGNoZXI9bmV3IGsoQnQoKSx0aGlzKSx0aGlzLmltYWdl TWFuYWdlcj1uZXcgaCx0aGlzLmltYWdlTWFuYWdlci5zZXRFdmVudGVkUGFyZW50KHRoaXMp LHRoaXMuZ2x5cGhNYW5hZ2VyPW5ldyB4KG4uX3JlcXVlc3RNYW5hZ2VyLGkubG9jYWxJZGVv Z3JhcGhGb250RmFtaWx5KSx0aGlzLmxpbmVBdGxhcz1uZXcgVCgyNTYsNTEyKSx0aGlzLmNy b3NzVGlsZVN5bWJvbEluZGV4PW5ldyBOZSx0aGlzLl9sYXllcnM9e30sdGhpcy5fc2VyaWFs aXplZExheWVycz17fSx0aGlzLl9vcmRlcj1bXSx0aGlzLnNvdXJjZUNhY2hlcz17fSx0aGlz Lnpvb21IaXN0b3J5PW5ldyB0Llpvb21IaXN0b3J5LHRoaXMuX2xvYWRlZD0hMSx0aGlzLl9h dmFpbGFibGVJbWFnZXM9W10sdGhpcy5fcmVzZXRVcGRhdGVzKCksdGhpcy5kaXNwYXRjaGVy LmJyb2FkY2FzdCgic2V0UmVmZXJyZXIiLHQuZ2V0UmVmZXJyZXIoKSk7dmFyIG89dGhpczt0 aGlzLl9ydGxUZXh0UGx1Z2luQ2FsbGJhY2s9ci5yZWdpc3RlckZvclBsdWdpblN0YXRlQ2hh bmdlKChmdW5jdGlvbihlKXt2YXIgcj17cGx1Z2luU3RhdHVzOmUucGx1Z2luU3RhdHVzLHBs dWdpblVSTDplLnBsdWdpblVSTH07by5kaXNwYXRjaGVyLmJyb2FkY2FzdCgic3luY1JUTFBs dWdpblN0YXRlIixyLChmdW5jdGlvbihlLHIpe2lmKCh0LnRyaWdnZXJQbHVnaW5Db21wbGV0 aW9uRXZlbnQoZSkscikmJnIuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpKWZvcih2 YXIgbiBpbiBvLnNvdXJjZUNhY2hlcylvLnNvdXJjZUNhY2hlc1tuXS5yZWxvYWQoKX0pKX0p KSx0aGlzLm9uKCJkYXRhIiwoZnVuY3Rpb24odCl7aWYoInNvdXJjZSI9PT10LmRhdGFUeXBl JiYibWV0YWRhdGEiPT09dC5zb3VyY2VEYXRhVHlwZSl7dmFyIGU9YS5zb3VyY2VDYWNoZXNb dC5zb3VyY2VJZF07aWYoZSl7dmFyIHI9ZS5nZXRTb3VyY2UoKTtpZihyJiZyLnZlY3Rvckxh eWVySWRzKWZvcih2YXIgbiBpbiBhLl9sYXllcnMpe3ZhciBpPWEuX2xheWVyc1tuXTtpLnNv dXJjZT09PXIuaWQmJmEuX3ZhbGlkYXRlTGF5ZXIoaSl9fX19KSl9cmV0dXJuIGUmJihyLl9f cHJvdG9fXz1lKSxyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlKSxy LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yLHIucHJvdG90eXBlLmxvYWRVUkw9ZnVuY3Rpb24o ZSxyKXt2YXIgbj10aGlzO3ZvaWQgMD09PXImJihyPXt9KSx0aGlzLmZpcmUobmV3IHQuRXZl bnQoImRhdGFsb2FkaW5nIix7ZGF0YVR5cGU6InN0eWxlIn0pKTt2YXIgaT0iYm9vbGVhbiI9 PXR5cGVvZiByLnZhbGlkYXRlP3IudmFsaWRhdGU6IXQuaXNNYXBib3hVUkwoZSk7ZT10aGlz Lm1hcC5fcmVxdWVzdE1hbmFnZXIubm9ybWFsaXplU3R5bGVVUkwoZSxyLmFjY2Vzc1Rva2Vu KTt2YXIgYT10aGlzLm1hcC5fcmVxdWVzdE1hbmFnZXIudHJhbnNmb3JtUmVxdWVzdChlLHQu UmVzb3VyY2VUeXBlLlN0eWxlKTt0aGlzLl9yZXF1ZXN0PXQuZ2V0SlNPTihhLChmdW5jdGlv bihlLHIpe24uX3JlcXVlc3Q9bnVsbCxlP24uZmlyZShuZXcgdC5FcnJvckV2ZW50KGUpKTpy JiZuLl9sb2FkKHIsaSl9KSl9LHIucHJvdG90eXBlLmxvYWRKU09OPWZ1bmN0aW9uKGUscil7 dmFyIG49dGhpczt2b2lkIDA9PT1yJiYocj17fSksdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJk YXRhbG9hZGluZyIse2RhdGFUeXBlOiJzdHlsZSJ9KSksdGhpcy5fcmVxdWVzdD10LmJyb3dz ZXIuZnJhbWUoKGZ1bmN0aW9uKCl7bi5fcmVxdWVzdD1udWxsLG4uX2xvYWQoZSwhMSE9PXIu dmFsaWRhdGUpfSkpfSxyLnByb3RvdHlwZS5sb2FkRW1wdHk9ZnVuY3Rpb24oKXt0aGlzLmZp cmUobmV3IHQuRXZlbnQoImRhdGFsb2FkaW5nIix7ZGF0YVR5cGU6InN0eWxlIn0pKSx0aGlz Ll9sb2FkKEhlLCExKX0sci5wcm90b3R5cGUuX2xvYWQ9ZnVuY3Rpb24oZSxyKXtpZighcnx8 IWplKHRoaXMsdC52YWxpZGF0ZVN0eWxlKGUpKSl7Zm9yKHZhciBuIGluIHRoaXMuX2xvYWRl ZD0hMCx0aGlzLnN0eWxlc2hlZXQ9ZSxlLnNvdXJjZXMpdGhpcy5hZGRTb3VyY2UobixlLnNv dXJjZXNbbl0se3ZhbGlkYXRlOiExfSk7ZS5zcHJpdGU/dGhpcy5fbG9hZFNwcml0ZShlLnNw cml0ZSk6dGhpcy5pbWFnZU1hbmFnZXIuc2V0TG9hZGVkKCEwKSx0aGlzLmdseXBoTWFuYWdl ci5zZXRVUkwoZS5nbHlwaHMpO3ZhciBpPWp0KHRoaXMuc3R5bGVzaGVldC5sYXllcnMpO3Ro aXMuX29yZGVyPWkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZH0pKSx0aGlzLl9sYXll cnM9e30sdGhpcy5fc2VyaWFsaXplZExheWVycz17fTtmb3IodmFyIGE9MCxvPWk7YTxvLmxl bmd0aDthKz0xKXt2YXIgcz1vW2FdOyhzPXQuY3JlYXRlU3R5bGVMYXllcihzKSkuc2V0RXZl bnRlZFBhcmVudCh0aGlzLHtsYXllcjp7aWQ6cy5pZH19KSx0aGlzLl9sYXllcnNbcy5pZF09 cyx0aGlzLl9zZXJpYWxpemVkTGF5ZXJzW3MuaWRdPXMuc2VyaWFsaXplKCl9dGhpcy5kaXNw YXRjaGVyLmJyb2FkY2FzdCgic2V0TGF5ZXJzIix0aGlzLl9zZXJpYWxpemVMYXllcnModGhp cy5fb3JkZXIpKSx0aGlzLmxpZ2h0PW5ldyB3KHRoaXMuc3R5bGVzaGVldC5saWdodCksdGhp cy5maXJlKG5ldyB0LkV2ZW50KCJkYXRhIix7ZGF0YVR5cGU6InN0eWxlIn0pKSx0aGlzLmZp cmUobmV3IHQuRXZlbnQoInN0eWxlLmxvYWQiKSl9fSxyLnByb3RvdHlwZS5fbG9hZFNwcml0 ZT1mdW5jdGlvbihlKXt2YXIgcj10aGlzO3RoaXMuX3Nwcml0ZVJlcXVlc3Q9ZnVuY3Rpb24o ZSxyLG4pe3ZhciBpLGEsbyxzPXQuYnJvd3Nlci5kZXZpY2VQaXhlbFJhdGlvPjE/IkAyeCI6 IiIsbD10LmdldEpTT04oci50cmFuc2Zvcm1SZXF1ZXN0KHIubm9ybWFsaXplU3ByaXRlVVJM KGUscywiLmpzb24iKSx0LlJlc291cmNlVHlwZS5TcHJpdGVKU09OKSwoZnVuY3Rpb24odCxl KXtsPW51bGwsb3x8KG89dCxpPWUsdSgpKX0pKSxjPXQuZ2V0SW1hZ2Uoci50cmFuc2Zvcm1S ZXF1ZXN0KHIubm9ybWFsaXplU3ByaXRlVVJMKGUscywiLnBuZyIpLHQuUmVzb3VyY2VUeXBl LlNwcml0ZUltYWdlKSwoZnVuY3Rpb24odCxlKXtjPW51bGwsb3x8KG89dCxhPWUsdSgpKX0p KTtmdW5jdGlvbiB1KCl7aWYobyluKG8pO2Vsc2UgaWYoaSYmYSl7dmFyIGU9dC5icm93c2Vy LmdldEltYWdlRGF0YShhKSxyPXt9O2Zvcih2YXIgcyBpbiBpKXt2YXIgbD1pW3NdLGM9bC53 aWR0aCx1PWwuaGVpZ2h0LGY9bC54LGg9bC55LHA9bC5zZGYsZD1sLnBpeGVsUmF0aW8sbT1s LnN0cmV0Y2hYLGc9bC5zdHJldGNoWSx2PWwuY29udGVudCx5PW5ldyB0LlJHQkFJbWFnZSh7 d2lkdGg6YyxoZWlnaHQ6dX0pO3QuUkdCQUltYWdlLmNvcHkoZSx5LHt4OmYseTpofSx7eDow LHk6MH0se3dpZHRoOmMsaGVpZ2h0OnV9KSxyW3NdPXtkYXRhOnkscGl4ZWxSYXRpbzpkLHNk ZjpwLHN0cmV0Y2hYOm0sc3RyZXRjaFk6Zyxjb250ZW50OnZ9fW4obnVsbCxyKX19cmV0dXJu e2NhbmNlbDpmdW5jdGlvbigpe2wmJihsLmNhbmNlbCgpLGw9bnVsbCksYyYmKGMuY2FuY2Vs KCksYz1udWxsKX19fShlLHRoaXMubWFwLl9yZXF1ZXN0TWFuYWdlciwoZnVuY3Rpb24oZSxu KXtpZihyLl9zcHJpdGVSZXF1ZXN0PW51bGwsZSlyLmZpcmUobmV3IHQuRXJyb3JFdmVudChl KSk7ZWxzZSBpZihuKWZvcih2YXIgaSBpbiBuKXIuaW1hZ2VNYW5hZ2VyLmFkZEltYWdlKGks bltpXSk7ci5pbWFnZU1hbmFnZXIuc2V0TG9hZGVkKCEwKSxyLl9hdmFpbGFibGVJbWFnZXM9 ci5pbWFnZU1hbmFnZXIubGlzdEltYWdlcygpLHIuZGlzcGF0Y2hlci5icm9hZGNhc3QoInNl dEltYWdlcyIsci5fYXZhaWxhYmxlSW1hZ2VzKSxyLmZpcmUobmV3IHQuRXZlbnQoImRhdGEi LHtkYXRhVHlwZToic3R5bGUifSkpfSkpfSxyLnByb3RvdHlwZS5fdmFsaWRhdGVMYXllcj1m dW5jdGlvbihlKXt2YXIgcj10aGlzLnNvdXJjZUNhY2hlc1tlLnNvdXJjZV07aWYocil7dmFy IG49ZS5zb3VyY2VMYXllcjtpZihuKXt2YXIgaT1yLmdldFNvdXJjZSgpOygiZ2VvanNvbiI9 PT1pLnR5cGV8fGkudmVjdG9yTGF5ZXJJZHMmJi0xPT09aS52ZWN0b3JMYXllcklkcy5pbmRl eE9mKG4pKSYmdGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IEVycm9yKCdTb3VyY2Ug bGF5ZXIgIicrbisnIiBkb2VzIG5vdCBleGlzdCBvbiBzb3VyY2UgIicraS5pZCsnIiBhcyBz cGVjaWZpZWQgYnkgc3R5bGUgbGF5ZXIgIicrZS5pZCsnIicpKSl9fX0sci5wcm90b3R5cGUu bG9hZGVkPWZ1bmN0aW9uKCl7aWYoIXRoaXMuX2xvYWRlZClyZXR1cm4hMTtpZihPYmplY3Qu a2V5cyh0aGlzLl91cGRhdGVkU291cmNlcykubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgdCBp biB0aGlzLnNvdXJjZUNhY2hlcylpZighdGhpcy5zb3VyY2VDYWNoZXNbdF0ubG9hZGVkKCkp cmV0dXJuITE7cmV0dXJuISF0aGlzLmltYWdlTWFuYWdlci5pc0xvYWRlZCgpfSxyLnByb3Rv dHlwZS5fc2VyaWFsaXplTGF5ZXJzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxyPTAsbj10 O3I8bi5sZW5ndGg7cis9MSl7dmFyIGk9bltyXSxhPXRoaXMuX2xheWVyc1tpXTsiY3VzdG9t IiE9PWEudHlwZSYmZS5wdXNoKGEuc2VyaWFsaXplKCkpfXJldHVybiBlfSxyLnByb3RvdHlw ZS5oYXNUcmFuc2l0aW9ucz1mdW5jdGlvbigpe2lmKHRoaXMubGlnaHQmJnRoaXMubGlnaHQu aGFzVHJhbnNpdGlvbigpKXJldHVybiEwO2Zvcih2YXIgdCBpbiB0aGlzLnNvdXJjZUNhY2hl cylpZih0aGlzLnNvdXJjZUNhY2hlc1t0XS5oYXNUcmFuc2l0aW9uKCkpcmV0dXJuITA7Zm9y KHZhciBlIGluIHRoaXMuX2xheWVycylpZih0aGlzLl9sYXllcnNbZV0uaGFzVHJhbnNpdGlv bigpKXJldHVybiEwO3JldHVybiExfSxyLnByb3RvdHlwZS5fY2hlY2tMb2FkZWQ9ZnVuY3Rp b24oKXtpZighdGhpcy5fbG9hZGVkKXRocm93IG5ldyBFcnJvcigiU3R5bGUgaXMgbm90IGRv bmUgbG9hZGluZyIpfSxyLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSl7aWYodGhpcy5f bG9hZGVkKXt2YXIgcj10aGlzLl9jaGFuZ2VkO2lmKHRoaXMuX2NoYW5nZWQpe3ZhciBuPU9i amVjdC5rZXlzKHRoaXMuX3VwZGF0ZWRMYXllcnMpLGk9T2JqZWN0LmtleXModGhpcy5fcmVt b3ZlZExheWVycyk7Zm9yKHZhciBhIGluKG4ubGVuZ3RofHxpLmxlbmd0aCkmJnRoaXMuX3Vw ZGF0ZVdvcmtlckxheWVycyhuLGkpLHRoaXMuX3VwZGF0ZWRTb3VyY2VzKXt2YXIgbz10aGlz Ll91cGRhdGVkU291cmNlc1thXTsicmVsb2FkIj09PW8/dGhpcy5fcmVsb2FkU291cmNlKGEp OiJjbGVhciI9PT1vJiZ0aGlzLl9jbGVhclNvdXJjZShhKX1mb3IodmFyIHMgaW4gdGhpcy5f dXBkYXRlVGlsZXNGb3JDaGFuZ2VkSW1hZ2VzKCksdGhpcy5fdXBkYXRlZFBhaW50UHJvcHMp dGhpcy5fbGF5ZXJzW3NdLnVwZGF0ZVRyYW5zaXRpb25zKGUpO3RoaXMubGlnaHQudXBkYXRl VHJhbnNpdGlvbnMoZSksdGhpcy5fcmVzZXRVcGRhdGVzKCl9Zm9yKHZhciBsIGluIHRoaXMu c291cmNlQ2FjaGVzKXRoaXMuc291cmNlQ2FjaGVzW2xdLnVzZWQ9ITE7Zm9yKHZhciBjPTAs dT10aGlzLl9vcmRlcjtjPHUubGVuZ3RoO2MrPTEpe3ZhciBmPXVbY10saD10aGlzLl9sYXll cnNbZl07aC5yZWNhbGN1bGF0ZShlLHRoaXMuX2F2YWlsYWJsZUltYWdlcyksIWguaXNIaWRk ZW4oZS56b29tKSYmaC5zb3VyY2UmJih0aGlzLnNvdXJjZUNhY2hlc1toLnNvdXJjZV0udXNl ZD0hMCl9dGhpcy5saWdodC5yZWNhbGN1bGF0ZShlKSx0aGlzLno9ZS56b29tLHImJnRoaXMu ZmlyZShuZXcgdC5FdmVudCgiZGF0YSIse2RhdGFUeXBlOiJzdHlsZSJ9KSl9fSxyLnByb3Rv dHlwZS5fdXBkYXRlVGlsZXNGb3JDaGFuZ2VkSW1hZ2VzPWZ1bmN0aW9uKCl7dmFyIHQ9T2Jq ZWN0LmtleXModGhpcy5fY2hhbmdlZEltYWdlcyk7aWYodC5sZW5ndGgpe2Zvcih2YXIgZSBp biB0aGlzLnNvdXJjZUNhY2hlcyl0aGlzLnNvdXJjZUNhY2hlc1tlXS5yZWxvYWRUaWxlc0Zv ckRlcGVuZGVuY2llcyhbImljb25zIiwicGF0dGVybnMiXSx0KTt0aGlzLl9jaGFuZ2VkSW1h Z2VzPXt9fX0sci5wcm90b3R5cGUuX3VwZGF0ZVdvcmtlckxheWVycz1mdW5jdGlvbih0LGUp e3RoaXMuZGlzcGF0Y2hlci5icm9hZGNhc3QoInVwZGF0ZUxheWVycyIse2xheWVyczp0aGlz Ll9zZXJpYWxpemVMYXllcnModCkscmVtb3ZlZElkczplfSl9LHIucHJvdG90eXBlLl9yZXNl dFVwZGF0ZXM9ZnVuY3Rpb24oKXt0aGlzLl9jaGFuZ2VkPSExLHRoaXMuX3VwZGF0ZWRMYXll cnM9e30sdGhpcy5fcmVtb3ZlZExheWVycz17fSx0aGlzLl91cGRhdGVkU291cmNlcz17fSx0 aGlzLl91cGRhdGVkUGFpbnRQcm9wcz17fSx0aGlzLl9jaGFuZ2VkSW1hZ2VzPXt9fSxyLnBy b3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihlKXt2YXIgcj10aGlzO2lmKHRoaXMuX2NoZWNr TG9hZGVkKCksamUodGhpcyx0LnZhbGlkYXRlU3R5bGUoZSkpKXJldHVybiExOyhlPXQuY2xv bmUkMShlKSkubGF5ZXJzPWp0KGUubGF5ZXJzKTt2YXIgbj1adCh0aGlzLnNlcmlhbGl6ZSgp LGUpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuISh0LmNvbW1hbmQgaW4gVmUpfSkpO2lm KDA9PT1uLmxlbmd0aClyZXR1cm4hMTt2YXIgaT1uLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0 dXJuISh0LmNvbW1hbmQgaW4gVWUpfSkpO2lmKGkubGVuZ3RoPjApdGhyb3cgbmV3IEVycm9y KCJVbmltcGxlbWVudGVkOiAiK2kubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5jb21tYW5k fSkpLmpvaW4oIiwgIikrIi4iKTtyZXR1cm4gbi5mb3JFYWNoKChmdW5jdGlvbih0KXsic2V0 VHJhbnNpdGlvbiIhPT10LmNvbW1hbmQmJnJbdC5jb21tYW5kXS5hcHBseShyLHQuYXJncyl9 KSksdGhpcy5zdHlsZXNoZWV0PWUsITB9LHIucHJvdG90eXBlLmFkZEltYWdlPWZ1bmN0aW9u KGUscil7aWYodGhpcy5nZXRJbWFnZShlKSlyZXR1cm4gdGhpcy5maXJlKG5ldyB0LkVycm9y RXZlbnQobmV3IEVycm9yKCJBbiBpbWFnZSB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0 cy4iKSkpO3RoaXMuaW1hZ2VNYW5hZ2VyLmFkZEltYWdlKGUsciksdGhpcy5fYXZhaWxhYmxl SW1hZ2VzPXRoaXMuaW1hZ2VNYW5hZ2VyLmxpc3RJbWFnZXMoKSx0aGlzLl9jaGFuZ2VkSW1h Z2VzW2VdPSEwLHRoaXMuX2NoYW5nZWQ9ITAsdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJkYXRh Iix7ZGF0YVR5cGU6InN0eWxlIn0pKX0sci5wcm90b3R5cGUudXBkYXRlSW1hZ2U9ZnVuY3Rp b24odCxlKXt0aGlzLmltYWdlTWFuYWdlci51cGRhdGVJbWFnZSh0LGUpfSxyLnByb3RvdHlw ZS5nZXRJbWFnZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbWFnZU1hbmFnZXIuZ2V0SW1h Z2UodCl9LHIucHJvdG90eXBlLnJlbW92ZUltYWdlPWZ1bmN0aW9uKGUpe2lmKCF0aGlzLmdl dEltYWdlKGUpKXJldHVybiB0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3Io Ik5vIGltYWdlIHdpdGggdGhpcyBuYW1lIGV4aXN0cy4iKSkpO3RoaXMuaW1hZ2VNYW5hZ2Vy LnJlbW92ZUltYWdlKGUpLHRoaXMuX2F2YWlsYWJsZUltYWdlcz10aGlzLmltYWdlTWFuYWdl ci5saXN0SW1hZ2VzKCksdGhpcy5fY2hhbmdlZEltYWdlc1tlXT0hMCx0aGlzLl9jaGFuZ2Vk PSEwLHRoaXMuZmlyZShuZXcgdC5FdmVudCgiZGF0YSIse2RhdGFUeXBlOiJzdHlsZSJ9KSl9 LHIucHJvdG90eXBlLmxpc3RJbWFnZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tM b2FkZWQoKSx0aGlzLmltYWdlTWFuYWdlci5saXN0SW1hZ2VzKCl9LHIucHJvdG90eXBlLmFk ZFNvdXJjZT1mdW5jdGlvbihlLHIsbil7dmFyIGk9dGhpcztpZih2b2lkIDA9PT1uJiYobj17 fSksdGhpcy5fY2hlY2tMb2FkZWQoKSx2b2lkIDAhPT10aGlzLnNvdXJjZUNhY2hlc1tlXSl0 aHJvdyBuZXcgRXJyb3IoIlRoZXJlIGlzIGFscmVhZHkgYSBzb3VyY2Ugd2l0aCB0aGlzIElE Iik7aWYoIXIudHlwZSl0aHJvdyBuZXcgRXJyb3IoIlRoZSB0eXBlIHByb3BlcnR5IG11c3Qg YmUgZGVmaW5lZCwgYnV0IHRoZSBvbmx5IHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB3ZXJl IGdpdmVuOiAiK09iamVjdC5rZXlzKHIpLmpvaW4oIiwgIikrIi4iKTtpZighKFsidmVjdG9y IiwicmFzdGVyIiwiZ2VvanNvbiIsInZpZGVvIiwiaW1hZ2UiXS5pbmRleE9mKHIudHlwZSk+ PTApfHwhdGhpcy5fdmFsaWRhdGUodC52YWxpZGF0ZVN0eWxlLnNvdXJjZSwic291cmNlcy4i K2UscixudWxsLG4pKXt0aGlzLm1hcCYmdGhpcy5tYXAuX2NvbGxlY3RSZXNvdXJjZVRpbWlu ZyYmKHIuY29sbGVjdFJlc291cmNlVGltaW5nPSEwKTt2YXIgYT10aGlzLnNvdXJjZUNhY2hl c1tlXT1uZXcgQ3QoZSxyLHRoaXMuZGlzcGF0Y2hlcik7YS5zdHlsZT10aGlzLGEuc2V0RXZl bnRlZFBhcmVudCh0aGlzLChmdW5jdGlvbigpe3JldHVybntpc1NvdXJjZUxvYWRlZDppLmxv YWRlZCgpLHNvdXJjZTphLnNlcmlhbGl6ZSgpLHNvdXJjZUlkOmV9fSkpLGEub25BZGQodGhp cy5tYXApLHRoaXMuX2NoYW5nZWQ9ITB9fSxyLnByb3RvdHlwZS5yZW1vdmVTb3VyY2U9ZnVu Y3Rpb24oZSl7aWYodGhpcy5fY2hlY2tMb2FkZWQoKSx2b2lkIDA9PT10aGlzLnNvdXJjZUNh Y2hlc1tlXSl0aHJvdyBuZXcgRXJyb3IoIlRoZXJlIGlzIG5vIHNvdXJjZSB3aXRoIHRoaXMg SUQiKTtmb3IodmFyIHIgaW4gdGhpcy5fbGF5ZXJzKWlmKHRoaXMuX2xheWVyc1tyXS5zb3Vy Y2U9PT1lKXJldHVybiB0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoJ1Nv dXJjZSAiJytlKyciIGNhbm5vdCBiZSByZW1vdmVkIHdoaWxlIGxheWVyICInK3IrJyIgaXMg dXNpbmcgaXQuJykpKTt2YXIgbj10aGlzLnNvdXJjZUNhY2hlc1tlXTtkZWxldGUgdGhpcy5z b3VyY2VDYWNoZXNbZV0sZGVsZXRlIHRoaXMuX3VwZGF0ZWRTb3VyY2VzW2VdLG4uZmlyZShu ZXcgdC5FdmVudCgiZGF0YSIse3NvdXJjZURhdGFUeXBlOiJtZXRhZGF0YSIsZGF0YVR5cGU6 InNvdXJjZSIsc291cmNlSWQ6ZX0pKSxuLnNldEV2ZW50ZWRQYXJlbnQobnVsbCksbi5jbGVh clRpbGVzKCksbi5vblJlbW92ZSYmbi5vblJlbW92ZSh0aGlzLm1hcCksdGhpcy5fY2hhbmdl ZD0hMH0sci5wcm90b3R5cGUuc2V0R2VvSlNPTlNvdXJjZURhdGE9ZnVuY3Rpb24odCxlKXt0 aGlzLl9jaGVja0xvYWRlZCgpLHRoaXMuc291cmNlQ2FjaGVzW3RdLmdldFNvdXJjZSgpLnNl dERhdGEoZSksdGhpcy5fY2hhbmdlZD0hMH0sci5wcm90b3R5cGUuZ2V0U291cmNlPWZ1bmN0 aW9uKHQpe3JldHVybiB0aGlzLnNvdXJjZUNhY2hlc1t0XSYmdGhpcy5zb3VyY2VDYWNoZXNb dF0uZ2V0U291cmNlKCl9LHIucHJvdG90eXBlLmFkZExheWVyPWZ1bmN0aW9uKGUscixuKXt2 b2lkIDA9PT1uJiYobj17fSksdGhpcy5fY2hlY2tMb2FkZWQoKTt2YXIgaT1lLmlkO2lmKHRo aXMuZ2V0TGF5ZXIoaSkpdGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IEVycm9yKCdM YXllciB3aXRoIGlkICInK2krJyIgYWxyZWFkeSBleGlzdHMgb24gdGhpcyBtYXAnKSkpO2Vs c2V7dmFyIGE7aWYoImN1c3RvbSI9PT1lLnR5cGUpe2lmKGplKHRoaXMsdC52YWxpZGF0ZUN1 c3RvbVN0eWxlTGF5ZXIoZSkpKXJldHVybjthPXQuY3JlYXRlU3R5bGVMYXllcihlKX1lbHNl e2lmKCJvYmplY3QiPT10eXBlb2YgZS5zb3VyY2UmJih0aGlzLmFkZFNvdXJjZShpLGUuc291 cmNlKSxlPXQuY2xvbmUkMShlKSxlPXQuZXh0ZW5kKGUse3NvdXJjZTppfSkpLHRoaXMuX3Zh bGlkYXRlKHQudmFsaWRhdGVTdHlsZS5sYXllciwibGF5ZXJzLiIraSxlLHthcnJheUluZGV4 Oi0xfSxuKSlyZXR1cm47YT10LmNyZWF0ZVN0eWxlTGF5ZXIoZSksdGhpcy5fdmFsaWRhdGVM YXllcihhKSxhLnNldEV2ZW50ZWRQYXJlbnQodGhpcyx7bGF5ZXI6e2lkOml9fSksdGhpcy5f c2VyaWFsaXplZExheWVyc1thLmlkXT1hLnNlcmlhbGl6ZSgpfXZhciBvPXI/dGhpcy5fb3Jk ZXIuaW5kZXhPZihyKTp0aGlzLl9vcmRlci5sZW5ndGg7aWYociYmLTE9PT1vKXRoaXMuZmly ZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcignTGF5ZXIgd2l0aCBpZCAiJytyKyciIGRv ZXMgbm90IGV4aXN0IG9uIHRoaXMgbWFwLicpKSk7ZWxzZXtpZih0aGlzLl9vcmRlci5zcGxp Y2UobywwLGkpLHRoaXMuX2xheWVyT3JkZXJDaGFuZ2VkPSEwLHRoaXMuX2xheWVyc1tpXT1h LHRoaXMuX3JlbW92ZWRMYXllcnNbaV0mJmEuc291cmNlJiYiY3VzdG9tIiE9PWEudHlwZSl7 dmFyIHM9dGhpcy5fcmVtb3ZlZExheWVyc1tpXTtkZWxldGUgdGhpcy5fcmVtb3ZlZExheWVy c1tpXSxzLnR5cGUhPT1hLnR5cGU/dGhpcy5fdXBkYXRlZFNvdXJjZXNbYS5zb3VyY2VdPSJj bGVhciI6KHRoaXMuX3VwZGF0ZWRTb3VyY2VzW2Euc291cmNlXT0icmVsb2FkIix0aGlzLnNv dXJjZUNhY2hlc1thLnNvdXJjZV0ucGF1c2UoKSl9dGhpcy5fdXBkYXRlTGF5ZXIoYSksYS5v bkFkZCYmYS5vbkFkZCh0aGlzLm1hcCl9fX0sci5wcm90b3R5cGUubW92ZUxheWVyPWZ1bmN0 aW9uKGUscil7aWYodGhpcy5fY2hlY2tMb2FkZWQoKSx0aGlzLl9jaGFuZ2VkPSEwLHRoaXMu X2xheWVyc1tlXSl7aWYoZSE9PXIpe3ZhciBuPXRoaXMuX29yZGVyLmluZGV4T2YoZSk7dGhp cy5fb3JkZXIuc3BsaWNlKG4sMSk7dmFyIGk9cj90aGlzLl9vcmRlci5pbmRleE9mKHIpOnRo aXMuX29yZGVyLmxlbmd0aDtyJiYtMT09PWk/dGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQo bmV3IEVycm9yKCdMYXllciB3aXRoIGlkICInK3IrJyIgZG9lcyBub3QgZXhpc3Qgb24gdGhp cyBtYXAuJykpKToodGhpcy5fb3JkZXIuc3BsaWNlKGksMCxlKSx0aGlzLl9sYXllck9yZGVy Q2hhbmdlZD0hMCl9fWVsc2UgdGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IEVycm9y KCJUaGUgbGF5ZXIgJyIrZSsiJyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFwJ3Mgc3R5bGUg YW5kIGNhbm5vdCBiZSBtb3ZlZC4iKSkpfSxyLnByb3RvdHlwZS5yZW1vdmVMYXllcj1mdW5j dGlvbihlKXt0aGlzLl9jaGVja0xvYWRlZCgpO3ZhciByPXRoaXMuX2xheWVyc1tlXTtpZihy KXtyLnNldEV2ZW50ZWRQYXJlbnQobnVsbCk7dmFyIG49dGhpcy5fb3JkZXIuaW5kZXhPZihl KTt0aGlzLl9vcmRlci5zcGxpY2UobiwxKSx0aGlzLl9sYXllck9yZGVyQ2hhbmdlZD0hMCx0 aGlzLl9jaGFuZ2VkPSEwLHRoaXMuX3JlbW92ZWRMYXllcnNbZV09cixkZWxldGUgdGhpcy5f bGF5ZXJzW2VdLGRlbGV0ZSB0aGlzLl9zZXJpYWxpemVkTGF5ZXJzW2VdLGRlbGV0ZSB0aGlz Ll91cGRhdGVkTGF5ZXJzW2VdLGRlbGV0ZSB0aGlzLl91cGRhdGVkUGFpbnRQcm9wc1tlXSxy Lm9uUmVtb3ZlJiZyLm9uUmVtb3ZlKHRoaXMubWFwKX1lbHNlIHRoaXMuZmlyZShuZXcgdC5F cnJvckV2ZW50KG5ldyBFcnJvcigiVGhlIGxheWVyICciK2UrIicgZG9lcyBub3QgZXhpc3Qg aW4gdGhlIG1hcCdzIHN0eWxlIGFuZCBjYW5ub3QgYmUgcmVtb3ZlZC4iKSkpfSxyLnByb3Rv dHlwZS5nZXRMYXllcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbGF5ZXJzW3RdfSxyLnBy b3RvdHlwZS5oYXNMYXllcj1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbiB0aGlzLl9sYXllcnN9 LHIucHJvdG90eXBlLnNldExheWVyWm9vbVJhbmdlPWZ1bmN0aW9uKGUscixuKXt0aGlzLl9j aGVja0xvYWRlZCgpO3ZhciBpPXRoaXMuZ2V0TGF5ZXIoZSk7aT9pLm1pbnpvb209PT1yJiZp Lm1heHpvb209PT1ufHwobnVsbCE9ciYmKGkubWluem9vbT1yKSxudWxsIT1uJiYoaS5tYXh6 b29tPW4pLHRoaXMuX3VwZGF0ZUxheWVyKGkpKTp0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVu dChuZXcgRXJyb3IoIlRoZSBsYXllciAnIitlKyInIGRvZXMgbm90IGV4aXN0IGluIHRoZSBt YXAncyBzdHlsZSBhbmQgY2Fubm90IGhhdmUgem9vbSBleHRlbnQuIikpKX0sci5wcm90b3R5 cGUuc2V0RmlsdGVyPWZ1bmN0aW9uKGUscixuKXt2b2lkIDA9PT1uJiYobj17fSksdGhpcy5f Y2hlY2tMb2FkZWQoKTt2YXIgaT10aGlzLmdldExheWVyKGUpO2lmKGkpe2lmKCF0LmRlZXBF cXVhbChpLmZpbHRlcixyKSlyZXR1cm4gbnVsbD09cj8oaS5maWx0ZXI9dm9pZCAwLHZvaWQg dGhpcy5fdXBkYXRlTGF5ZXIoaSkpOnZvaWQodGhpcy5fdmFsaWRhdGUodC52YWxpZGF0ZVN0 eWxlLmZpbHRlciwibGF5ZXJzLiIraS5pZCsiLmZpbHRlciIscixudWxsLG4pfHwoaS5maWx0 ZXI9dC5jbG9uZSQxKHIpLHRoaXMuX3VwZGF0ZUxheWVyKGkpKSl9ZWxzZSB0aGlzLmZpcmUo bmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIlRoZSBsYXllciAnIitlKyInIGRvZXMgbm90 IGV4aXN0IGluIHRoZSBtYXAncyBzdHlsZSBhbmQgY2Fubm90IGJlIGZpbHRlcmVkLiIpKSl9 LHIucHJvdG90eXBlLmdldEZpbHRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdC5jbG9uZSQxKHRo aXMuZ2V0TGF5ZXIoZSkuZmlsdGVyKX0sci5wcm90b3R5cGUuc2V0TGF5b3V0UHJvcGVydHk9 ZnVuY3Rpb24oZSxyLG4saSl7dm9pZCAwPT09aSYmKGk9e30pLHRoaXMuX2NoZWNrTG9hZGVk KCk7dmFyIGE9dGhpcy5nZXRMYXllcihlKTthP3QuZGVlcEVxdWFsKGEuZ2V0TGF5b3V0UHJv cGVydHkociksbil8fChhLnNldExheW91dFByb3BlcnR5KHIsbixpKSx0aGlzLl91cGRhdGVM YXllcihhKSk6dGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IEVycm9yKCJUaGUgbGF5 ZXIgJyIrZSsiJyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFwJ3Mgc3R5bGUgYW5kIGNhbm5v dCBiZSBzdHlsZWQuIikpKX0sci5wcm90b3R5cGUuZ2V0TGF5b3V0UHJvcGVydHk9ZnVuY3Rp b24oZSxyKXt2YXIgbj10aGlzLmdldExheWVyKGUpO2lmKG4pcmV0dXJuIG4uZ2V0TGF5b3V0 UHJvcGVydHkocik7dGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IEVycm9yKCJUaGUg bGF5ZXIgJyIrZSsiJyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFwJ3Mgc3R5bGUuIikpKX0s ci5wcm90b3R5cGUuc2V0UGFpbnRQcm9wZXJ0eT1mdW5jdGlvbihlLHIsbixpKXt2b2lkIDA9 PT1pJiYoaT17fSksdGhpcy5fY2hlY2tMb2FkZWQoKTt2YXIgYT10aGlzLmdldExheWVyKGUp O2E/dC5kZWVwRXF1YWwoYS5nZXRQYWludFByb3BlcnR5KHIpLG4pfHwoYS5zZXRQYWludFBy b3BlcnR5KHIsbixpKSYmdGhpcy5fdXBkYXRlTGF5ZXIoYSksdGhpcy5fY2hhbmdlZD0hMCx0 aGlzLl91cGRhdGVkUGFpbnRQcm9wc1tlXT0hMCk6dGhpcy5maXJlKG5ldyB0LkVycm9yRXZl bnQobmV3IEVycm9yKCJUaGUgbGF5ZXIgJyIrZSsiJyBkb2VzIG5vdCBleGlzdCBpbiB0aGUg bWFwJ3Mgc3R5bGUgYW5kIGNhbm5vdCBiZSBzdHlsZWQuIikpKX0sci5wcm90b3R5cGUuZ2V0 UGFpbnRQcm9wZXJ0eT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmdldExheWVyKHQpLmdl dFBhaW50UHJvcGVydHkoZSl9LHIucHJvdG90eXBlLnNldEZlYXR1cmVTdGF0ZT1mdW5jdGlv bihlLHIpe3RoaXMuX2NoZWNrTG9hZGVkKCk7dmFyIG49ZS5zb3VyY2UsaT1lLnNvdXJjZUxh eWVyLGE9dGhpcy5zb3VyY2VDYWNoZXNbbl07aWYodm9pZCAwIT09YSl7dmFyIG89YS5nZXRT b3VyY2UoKS50eXBlOyJnZW9qc29uIj09PW8mJmk/dGhpcy5maXJlKG5ldyB0LkVycm9yRXZl bnQobmV3IEVycm9yKCJHZW9KU09OIHNvdXJjZXMgY2Fubm90IGhhdmUgYSBzb3VyY2VMYXll ciBwYXJhbWV0ZXIuIikpKToidmVjdG9yIiE9PW98fGk/KHZvaWQgMD09PWUuaWQmJnRoaXMu ZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigiVGhlIGZlYXR1cmUgaWQgcGFyYW1l dGVyIG11c3QgYmUgcHJvdmlkZWQuIikpKSxhLnNldEZlYXR1cmVTdGF0ZShpLGUuaWQscikp OnRoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigiVGhlIHNvdXJjZUxheWVy IHBhcmFtZXRlciBtdXN0IGJlIHByb3ZpZGVkIGZvciB2ZWN0b3Igc291cmNlIHR5cGVzLiIp KSl9ZWxzZSB0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIlRoZSBzb3Vy Y2UgJyIrbisiJyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFwJ3Mgc3R5bGUuIikpKX0sci5w cm90b3R5cGUucmVtb3ZlRmVhdHVyZVN0YXRlPWZ1bmN0aW9uKGUscil7dGhpcy5fY2hlY2tM b2FkZWQoKTt2YXIgbj1lLnNvdXJjZSxpPXRoaXMuc291cmNlQ2FjaGVzW25dO2lmKHZvaWQg MCE9PWkpe3ZhciBhPWkuZ2V0U291cmNlKCkudHlwZSxvPSJ2ZWN0b3IiPT09YT9lLnNvdXJj ZUxheWVyOnZvaWQgMDsidmVjdG9yIiE9PWF8fG8/ciYmInN0cmluZyIhPXR5cGVvZiBlLmlk JiYibnVtYmVyIiE9dHlwZW9mIGUuaWQ/dGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3 IEVycm9yKCJBIGZlYXR1cmUgaWQgaXMgcmVxdXJlZCB0byByZW1vdmUgaXRzIHNwZWNpZmlj IHN0YXRlIHByb3BlcnR5LiIpKSk6aS5yZW1vdmVGZWF0dXJlU3RhdGUobyxlLmlkLHIpOnRo aXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigiVGhlIHNvdXJjZUxheWVyIHBh cmFtZXRlciBtdXN0IGJlIHByb3ZpZGVkIGZvciB2ZWN0b3Igc291cmNlIHR5cGVzLiIpKSl9 ZWxzZSB0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIlRoZSBzb3VyY2Ug JyIrbisiJyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFwJ3Mgc3R5bGUuIikpKX0sci5wcm90 b3R5cGUuZ2V0RmVhdHVyZVN0YXRlPWZ1bmN0aW9uKGUpe3RoaXMuX2NoZWNrTG9hZGVkKCk7 dmFyIHI9ZS5zb3VyY2Usbj1lLnNvdXJjZUxheWVyLGk9dGhpcy5zb3VyY2VDYWNoZXNbcl07 aWYodm9pZCAwIT09aSl7aWYoInZlY3RvciIhPT1pLmdldFNvdXJjZSgpLnR5cGV8fG4pcmV0 dXJuIHZvaWQgMD09PWUuaWQmJnRoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJv cigiVGhlIGZlYXR1cmUgaWQgcGFyYW1ldGVyIG11c3QgYmUgcHJvdmlkZWQuIikpKSxpLmdl dEZlYXR1cmVTdGF0ZShuLGUuaWQpO3RoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBF cnJvcigiVGhlIHNvdXJjZUxheWVyIHBhcmFtZXRlciBtdXN0IGJlIHByb3ZpZGVkIGZvciB2 ZWN0b3Igc291cmNlIHR5cGVzLiIpKSl9ZWxzZSB0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVu dChuZXcgRXJyb3IoIlRoZSBzb3VyY2UgJyIrcisiJyBkb2VzIG5vdCBleGlzdCBpbiB0aGUg bWFwJ3Mgc3R5bGUuIikpKX0sci5wcm90b3R5cGUuZ2V0VHJhbnNpdGlvbj1mdW5jdGlvbigp e3JldHVybiB0LmV4dGVuZCh7ZHVyYXRpb246MzAwLGRlbGF5OjB9LHRoaXMuc3R5bGVzaGVl dCYmdGhpcy5zdHlsZXNoZWV0LnRyYW5zaXRpb24pfSxyLnByb3RvdHlwZS5zZXJpYWxpemU9 ZnVuY3Rpb24oKXtyZXR1cm4gdC5maWx0ZXJPYmplY3Qoe3ZlcnNpb246dGhpcy5zdHlsZXNo ZWV0LnZlcnNpb24sbmFtZTp0aGlzLnN0eWxlc2hlZXQubmFtZSxtZXRhZGF0YTp0aGlzLnN0 eWxlc2hlZXQubWV0YWRhdGEsbGlnaHQ6dGhpcy5zdHlsZXNoZWV0LmxpZ2h0LGNlbnRlcjp0 aGlzLnN0eWxlc2hlZXQuY2VudGVyLHpvb206dGhpcy5zdHlsZXNoZWV0Lnpvb20sYmVhcmlu Zzp0aGlzLnN0eWxlc2hlZXQuYmVhcmluZyxwaXRjaDp0aGlzLnN0eWxlc2hlZXQucGl0Y2gs c3ByaXRlOnRoaXMuc3R5bGVzaGVldC5zcHJpdGUsZ2x5cGhzOnRoaXMuc3R5bGVzaGVldC5n bHlwaHMsdHJhbnNpdGlvbjp0aGlzLnN0eWxlc2hlZXQudHJhbnNpdGlvbixzb3VyY2VzOnQu bWFwT2JqZWN0KHRoaXMuc291cmNlQ2FjaGVzLChmdW5jdGlvbih0KXtyZXR1cm4gdC5zZXJp YWxpemUoKX0pKSxsYXllcnM6dGhpcy5fc2VyaWFsaXplTGF5ZXJzKHRoaXMuX29yZGVyKX0s KGZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT10fSkpfSxyLnByb3RvdHlwZS5fdXBkYXRl TGF5ZXI9ZnVuY3Rpb24odCl7dGhpcy5fdXBkYXRlZExheWVyc1t0LmlkXT0hMCx0LnNvdXJj ZSYmIXRoaXMuX3VwZGF0ZWRTb3VyY2VzW3Quc291cmNlXSYmInJhc3RlciIhPT10aGlzLnNv dXJjZUNhY2hlc1t0LnNvdXJjZV0uZ2V0U291cmNlKCkudHlwZSYmKHRoaXMuX3VwZGF0ZWRT b3VyY2VzW3Quc291cmNlXT0icmVsb2FkIix0aGlzLnNvdXJjZUNhY2hlc1t0LnNvdXJjZV0u cGF1c2UoKSksdGhpcy5fY2hhbmdlZD0hMH0sci5wcm90b3R5cGUuX2ZsYXR0ZW5BbmRTb3J0 UmVuZGVyZWRGZWF0dXJlcz1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcyxyPWZ1bmN0aW9u KHQpe3JldHVybiJmaWxsLWV4dHJ1c2lvbiI9PT1lLl9sYXllcnNbdF0udHlwZX0sbj17fSxp PVtdLGE9dGhpcy5fb3JkZXIubGVuZ3RoLTE7YT49MDthLS0pe3ZhciBvPXRoaXMuX29yZGVy W2FdO2lmKHIobykpe25bb109YTtmb3IodmFyIHM9MCxsPXQ7czxsLmxlbmd0aDtzKz0xKXt2 YXIgYz1sW3NdW29dO2lmKGMpZm9yKHZhciB1PTAsZj1jO3U8Zi5sZW5ndGg7dSs9MSl7dmFy IGg9Zlt1XTtpLnB1c2goaCl9fX19aS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBlLmlu dGVyc2VjdGlvblotdC5pbnRlcnNlY3Rpb25afSkpO2Zvcih2YXIgcD1bXSxkPXRoaXMuX29y ZGVyLmxlbmd0aC0xO2Q+PTA7ZC0tKXt2YXIgbT10aGlzLl9vcmRlcltkXTtpZihyKG0pKWZv cih2YXIgZz1pLmxlbmd0aC0xO2c+PTA7Zy0tKXt2YXIgdj1pW2ddLmZlYXR1cmU7aWYoblt2 LmxheWVyLmlkXTxkKWJyZWFrO3AucHVzaCh2KSxpLnBvcCgpfWVsc2UgZm9yKHZhciB5PTAs eD10O3k8eC5sZW5ndGg7eSs9MSl7dmFyIGI9eFt5XVttXTtpZihiKWZvcih2YXIgXz0wLHc9 YjtfPHcubGVuZ3RoO18rPTEpe3ZhciBUPXdbX107cC5wdXNoKFQuZmVhdHVyZSl9fX1yZXR1 cm4gcH0sci5wcm90b3R5cGUucXVlcnlSZW5kZXJlZEZlYXR1cmVzPWZ1bmN0aW9uKGUscixu KXtyJiZyLmZpbHRlciYmdGhpcy5fdmFsaWRhdGUodC52YWxpZGF0ZVN0eWxlLmZpbHRlciwi cXVlcnlSZW5kZXJlZEZlYXR1cmVzLmZpbHRlciIsci5maWx0ZXIsbnVsbCxyKTt2YXIgaT17 fTtpZihyJiZyLmxheWVycyl7aWYoIUFycmF5LmlzQXJyYXkoci5sYXllcnMpKXJldHVybiB0 aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoInBhcmFtZXRlcnMubGF5ZXJz IG11c3QgYmUgYW4gQXJyYXkuIikpKSxbXTtmb3IodmFyIGE9MCxvPXIubGF5ZXJzO2E8by5s ZW5ndGg7YSs9MSl7dmFyIHM9b1thXSxsPXRoaXMuX2xheWVyc1tzXTtpZighbClyZXR1cm4g dGhpcy5maXJlKG5ldyB0LkVycm9yRXZlbnQobmV3IEVycm9yKCJUaGUgbGF5ZXIgJyIrcysi JyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFwJ3Mgc3R5bGUgYW5kIGNhbm5vdCBiZSBxdWVy aWVkIGZvciBmZWF0dXJlcy4iKSkpLFtdO2lbbC5zb3VyY2VdPSEwfX12YXIgYz1bXTtmb3Io dmFyIHUgaW4gci5hdmFpbGFibGVJbWFnZXM9dGhpcy5fYXZhaWxhYmxlSW1hZ2VzLHRoaXMu c291cmNlQ2FjaGVzKXIubGF5ZXJzJiYhaVt1XXx8Yy5wdXNoKEYodGhpcy5zb3VyY2VDYWNo ZXNbdV0sdGhpcy5fbGF5ZXJzLHRoaXMuX3NlcmlhbGl6ZWRMYXllcnMsZSxyLG4pKTtyZXR1 cm4gdGhpcy5wbGFjZW1lbnQmJmMucHVzaChmdW5jdGlvbih0LGUscixuLGksYSxvKXtmb3Io dmFyIHM9e30sbD1hLnF1ZXJ5UmVuZGVyZWRTeW1ib2xzKG4pLGM9W10sdT0wLGY9T2JqZWN0 LmtleXMobCkubWFwKE51bWJlcik7dTxmLmxlbmd0aDt1Kz0xKXt2YXIgaD1mW3VdO2MucHVz aChvW2hdKX1jLnNvcnQoQik7Zm9yKHZhciBwPWZ1bmN0aW9uKCl7dmFyIHI9bVtkXSxuPXIu ZmVhdHVyZUluZGV4Lmxvb2t1cFN5bWJvbEZlYXR1cmVzKGxbci5idWNrZXRJbnN0YW5jZUlk XSxlLHIuYnVja2V0SW5kZXgsci5zb3VyY2VMYXllckluZGV4LGkuZmlsdGVyLGkubGF5ZXJz LGkuYXZhaWxhYmxlSW1hZ2VzLHQpO2Zvcih2YXIgYSBpbiBuKXt2YXIgbz1zW2FdPXNbYV18 fFtdLGM9blthXTtjLnNvcnQoKGZ1bmN0aW9uKHQsZSl7dmFyIG49ci5mZWF0dXJlU29ydE9y ZGVyO2lmKG4pe3ZhciBpPW4uaW5kZXhPZih0LmZlYXR1cmVJbmRleCk7cmV0dXJuIG4uaW5k ZXhPZihlLmZlYXR1cmVJbmRleCktaX1yZXR1cm4gZS5mZWF0dXJlSW5kZXgtdC5mZWF0dXJl SW5kZXh9KSk7Zm9yKHZhciB1PTAsZj1jO3U8Zi5sZW5ndGg7dSs9MSl7dmFyIGg9Zlt1XTtv LnB1c2goaCl9fX0sZD0wLG09YztkPG0ubGVuZ3RoO2QrPTEpcCgpO3ZhciBnPWZ1bmN0aW9u KGUpe3NbZV0uZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIGk9bi5mZWF0dXJlLGE9dFtlXSxv PXJbYS5zb3VyY2VdLmdldEZlYXR1cmVTdGF0ZShpLmxheWVyWyJzb3VyY2UtbGF5ZXIiXSxp LmlkKTtpLnNvdXJjZT1pLmxheWVyLnNvdXJjZSxpLmxheWVyWyJzb3VyY2UtbGF5ZXIiXSYm KGkuc291cmNlTGF5ZXI9aS5sYXllclsic291cmNlLWxheWVyIl0pLGkuc3RhdGU9b30pKX07 Zm9yKHZhciB2IGluIHMpZyh2KTtyZXR1cm4gc30odGhpcy5fbGF5ZXJzLHRoaXMuX3Nlcmlh bGl6ZWRMYXllcnMsdGhpcy5zb3VyY2VDYWNoZXMsZSxyLHRoaXMucGxhY2VtZW50LmNvbGxp c2lvbkluZGV4LHRoaXMucGxhY2VtZW50LnJldGFpbmVkUXVlcnlEYXRhKSksdGhpcy5fZmxh dHRlbkFuZFNvcnRSZW5kZXJlZEZlYXR1cmVzKGMpfSxyLnByb3RvdHlwZS5xdWVyeVNvdXJj ZUZlYXR1cmVzPWZ1bmN0aW9uKGUscil7ciYmci5maWx0ZXImJnRoaXMuX3ZhbGlkYXRlKHQu dmFsaWRhdGVTdHlsZS5maWx0ZXIsInF1ZXJ5U291cmNlRmVhdHVyZXMuZmlsdGVyIixyLmZp bHRlcixudWxsLHIpO3ZhciBuPXRoaXMuc291cmNlQ2FjaGVzW2VdO3JldHVybiBuP2Z1bmN0 aW9uKHQsZSl7Zm9yKHZhciByPXQuZ2V0UmVuZGVyYWJsZUlkcygpLm1hcCgoZnVuY3Rpb24o ZSl7cmV0dXJuIHQuZ2V0VGlsZUJ5SUQoZSl9KSksbj1bXSxpPXt9LGE9MDthPHIubGVuZ3Ro O2ErKyl7dmFyIG89clthXSxzPW8udGlsZUlELmNhbm9uaWNhbC5rZXk7aVtzXXx8KGlbc109 ITAsby5xdWVyeVNvdXJjZUZlYXR1cmVzKG4sZSkpfXJldHVybiBufShuLHIpOltdfSxyLnBy b3RvdHlwZS5hZGRTb3VyY2VUeXBlPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gci5nZXRTb3Vy Y2VUeXBlKHQpP24obmV3IEVycm9yKCdBIHNvdXJjZSB0eXBlIGNhbGxlZCAiJyt0KyciIGFs cmVhZHkgZXhpc3RzLicpKTooci5zZXRTb3VyY2VUeXBlKHQsZSksZS53b3JrZXJTb3VyY2VV Ukw/dm9pZCB0aGlzLmRpc3BhdGNoZXIuYnJvYWRjYXN0KCJsb2FkV29ya2VyU291cmNlIix7 bmFtZTp0LHVybDplLndvcmtlclNvdXJjZVVSTH0sbik6bihudWxsLG51bGwpKX0sci5wcm90 b3R5cGUuZ2V0TGlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5saWdodC5nZXRMaWdodCgp fSxyLnByb3RvdHlwZS5zZXRMaWdodD1mdW5jdGlvbihlLHIpe3ZvaWQgMD09PXImJihyPXt9 KSx0aGlzLl9jaGVja0xvYWRlZCgpO3ZhciBuPXRoaXMubGlnaHQuZ2V0TGlnaHQoKSxpPSEx O2Zvcih2YXIgYSBpbiBlKWlmKCF0LmRlZXBFcXVhbChlW2FdLG5bYV0pKXtpPSEwO2JyZWFr fWlmKGkpe3ZhciBvPXtub3c6dC5icm93c2VyLm5vdygpLHRyYW5zaXRpb246dC5leHRlbmQo e2R1cmF0aW9uOjMwMCxkZWxheTowfSx0aGlzLnN0eWxlc2hlZXQudHJhbnNpdGlvbil9O3Ro aXMubGlnaHQuc2V0TGlnaHQoZSxyKSx0aGlzLmxpZ2h0LnVwZGF0ZVRyYW5zaXRpb25zKG8p fX0sci5wcm90b3R5cGUuX3ZhbGlkYXRlPWZ1bmN0aW9uKGUscixuLGksYSl7cmV0dXJuIHZv aWQgMD09PWEmJihhPXt9KSwoIWF8fCExIT09YS52YWxpZGF0ZSkmJmplKHRoaXMsZS5jYWxs KHQudmFsaWRhdGVTdHlsZSx0LmV4dGVuZCh7a2V5OnIsc3R5bGU6dGhpcy5zZXJpYWxpemUo KSx2YWx1ZTpuLHN0eWxlU3BlYzp0LnN0eWxlU3BlY30saSkpKX0sci5wcm90b3R5cGUuX3Jl bW92ZT1mdW5jdGlvbigpe2Zvcih2YXIgZSBpbiB0aGlzLl9yZXF1ZXN0JiYodGhpcy5fcmVx dWVzdC5jYW5jZWwoKSx0aGlzLl9yZXF1ZXN0PW51bGwpLHRoaXMuX3Nwcml0ZVJlcXVlc3Qm Jih0aGlzLl9zcHJpdGVSZXF1ZXN0LmNhbmNlbCgpLHRoaXMuX3Nwcml0ZVJlcXVlc3Q9bnVs bCksdC5ldmVudGVkLm9mZigicGx1Z2luU3RhdGVDaGFuZ2UiLHRoaXMuX3J0bFRleHRQbHVn aW5DYWxsYmFjayksdGhpcy5fbGF5ZXJzKXt0aGlzLl9sYXllcnNbZV0uc2V0RXZlbnRlZFBh cmVudChudWxsKX1mb3IodmFyIHIgaW4gdGhpcy5zb3VyY2VDYWNoZXMpdGhpcy5zb3VyY2VD YWNoZXNbcl0uY2xlYXJUaWxlcygpLHRoaXMuc291cmNlQ2FjaGVzW3JdLnNldEV2ZW50ZWRQ YXJlbnQobnVsbCk7dGhpcy5pbWFnZU1hbmFnZXIuc2V0RXZlbnRlZFBhcmVudChudWxsKSx0 aGlzLnNldEV2ZW50ZWRQYXJlbnQobnVsbCksdGhpcy5kaXNwYXRjaGVyLnJlbW92ZSgpfSxy LnByb3RvdHlwZS5fY2xlYXJTb3VyY2U9ZnVuY3Rpb24odCl7dGhpcy5zb3VyY2VDYWNoZXNb dF0uY2xlYXJUaWxlcygpfSxyLnByb3RvdHlwZS5fcmVsb2FkU291cmNlPWZ1bmN0aW9uKHQp e3RoaXMuc291cmNlQ2FjaGVzW3RdLnJlc3VtZSgpLHRoaXMuc291cmNlQ2FjaGVzW3RdLnJl bG9hZCgpfSxyLnByb3RvdHlwZS5fdXBkYXRlU291cmNlcz1mdW5jdGlvbih0KXtmb3IodmFy IGUgaW4gdGhpcy5zb3VyY2VDYWNoZXMpdGhpcy5zb3VyY2VDYWNoZXNbZV0udXBkYXRlKHQp fSxyLnByb3RvdHlwZS5fZ2VuZXJhdGVDb2xsaXNpb25Cb3hlcz1mdW5jdGlvbigpe2Zvcih2 YXIgdCBpbiB0aGlzLnNvdXJjZUNhY2hlcyl0aGlzLl9yZWxvYWRTb3VyY2UodCl9LHIucHJv dG90eXBlLl91cGRhdGVQbGFjZW1lbnQ9ZnVuY3Rpb24oZSxyLG4saSxhKXt2b2lkIDA9PT1h JiYoYT0hMSk7Zm9yKHZhciBvPSExLHM9ITEsbD17fSxjPTAsdT10aGlzLl9vcmRlcjtjPHUu bGVuZ3RoO2MrPTEpe3ZhciBmPXVbY10saD10aGlzLl9sYXllcnNbZl07aWYoInN5bWJvbCI9 PT1oLnR5cGUpe2lmKCFsW2guc291cmNlXSl7dmFyIHA9dGhpcy5zb3VyY2VDYWNoZXNbaC5z b3VyY2VdO2xbaC5zb3VyY2VdPXAuZ2V0UmVuZGVyYWJsZUlkcyghMCkubWFwKChmdW5jdGlv bih0KXtyZXR1cm4gcC5nZXRUaWxlQnlJRCh0KX0pKS5zb3J0KChmdW5jdGlvbih0LGUpe3Jl dHVybiBlLnRpbGVJRC5vdmVyc2NhbGVkWi10LnRpbGVJRC5vdmVyc2NhbGVkWnx8KHQudGls ZUlELmlzTGVzc1RoYW4oZS50aWxlSUQpPy0xOjEpfSkpfXZhciBkPXRoaXMuY3Jvc3NUaWxl U3ltYm9sSW5kZXguYWRkTGF5ZXIoaCxsW2guc291cmNlXSxlLmNlbnRlci5sbmcpO289b3x8 ZH19aWYodGhpcy5jcm9zc1RpbGVTeW1ib2xJbmRleC5wcnVuZVVudXNlZExheWVycyh0aGlz Ll9vcmRlciksKChhPWF8fHRoaXMuX2xheWVyT3JkZXJDaGFuZ2VkfHwwPT09bil8fCF0aGlz LnBhdXNlYWJsZVBsYWNlbWVudHx8dGhpcy5wYXVzZWFibGVQbGFjZW1lbnQuaXNEb25lKCkm JiF0aGlzLnBsYWNlbWVudC5zdGlsbFJlY2VudCh0LmJyb3dzZXIubm93KCksZS56b29tKSkm Jih0aGlzLnBhdXNlYWJsZVBsYWNlbWVudD1uZXcgemUoZSx0aGlzLl9vcmRlcixhLHIsbixp LHRoaXMucGxhY2VtZW50KSx0aGlzLl9sYXllck9yZGVyQ2hhbmdlZD0hMSksdGhpcy5wYXVz ZWFibGVQbGFjZW1lbnQuaXNEb25lKCk/dGhpcy5wbGFjZW1lbnQuc2V0U3RhbGUoKToodGhp cy5wYXVzZWFibGVQbGFjZW1lbnQuY29udGludWVQbGFjZW1lbnQodGhpcy5fb3JkZXIsdGhp cy5fbGF5ZXJzLGwpLHRoaXMucGF1c2VhYmxlUGxhY2VtZW50LmlzRG9uZSgpJiYodGhpcy5w bGFjZW1lbnQ9dGhpcy5wYXVzZWFibGVQbGFjZW1lbnQuY29tbWl0KHQuYnJvd3Nlci5ub3co KSkscz0hMCksbyYmdGhpcy5wYXVzZWFibGVQbGFjZW1lbnQucGxhY2VtZW50LnNldFN0YWxl KCkpLHN8fG8pZm9yKHZhciBtPTAsZz10aGlzLl9vcmRlcjttPGcubGVuZ3RoO20rPTEpe3Zh ciB2PWdbbV0seT10aGlzLl9sYXllcnNbdl07InN5bWJvbCI9PT15LnR5cGUmJnRoaXMucGxh Y2VtZW50LnVwZGF0ZUxheWVyT3BhY2l0aWVzKHksbFt5LnNvdXJjZV0pfXJldHVybiF0aGlz LnBhdXNlYWJsZVBsYWNlbWVudC5pc0RvbmUoKXx8dGhpcy5wbGFjZW1lbnQuaGFzVHJhbnNp dGlvbnModC5icm93c2VyLm5vdygpKX0sci5wcm90b3R5cGUuX3JlbGVhc2VTeW1ib2xGYWRl VGlsZXM9ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5zb3VyY2VDYWNoZXMpdGhpcy5z b3VyY2VDYWNoZXNbdF0ucmVsZWFzZVN5bWJvbEZhZGVUaWxlcygpfSxyLnByb3RvdHlwZS5n ZXRJbWFnZXM9ZnVuY3Rpb24odCxlLHIpe3RoaXMuaW1hZ2VNYW5hZ2VyLmdldEltYWdlcyhl Lmljb25zLHIpLHRoaXMuX3VwZGF0ZVRpbGVzRm9yQ2hhbmdlZEltYWdlcygpO3ZhciBuPXRo aXMuc291cmNlQ2FjaGVzW2Uuc291cmNlXTtuJiZuLnNldERlcGVuZGVuY2llcyhlLnRpbGVJ RC5rZXksZS50eXBlLGUuaWNvbnMpfSxyLnByb3RvdHlwZS5nZXRHbHlwaHM9ZnVuY3Rpb24o dCxlLHIpe3RoaXMuZ2x5cGhNYW5hZ2VyLmdldEdseXBocyhlLnN0YWNrcyxyKX0sci5wcm90 b3R5cGUuZ2V0UmVzb3VyY2U9ZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0Lm1ha2VSZXF1ZXN0 KHIsbil9LHJ9KHQuRXZlbnRlZCk7cWUuZ2V0U291cmNlVHlwZT1mdW5jdGlvbih0KXtyZXR1 cm4gRFt0XX0scWUuc2V0U291cmNlVHlwZT1mdW5jdGlvbih0LGUpe0RbdF09ZX0scWUucmVn aXN0ZXJGb3JQbHVnaW5TdGF0ZUNoYW5nZT10LnJlZ2lzdGVyRm9yUGx1Z2luU3RhdGVDaGFu Z2U7dmFyIEdlPXQuY3JlYXRlTGF5b3V0KFt7bmFtZToiYV9wb3MiLHR5cGU6IkludDE2Iixj b21wb25lbnRzOjJ9XSksWWU9eXIoIiNpZmRlZiBHTF9FU1xucHJlY2lzaW9uIG1lZGl1bXAg ZmxvYXQ7XG4jZWxzZVxuI2lmICFkZWZpbmVkKGxvd3ApXG4jZGVmaW5lIGxvd3BcbiNlbmRp ZlxuI2lmICFkZWZpbmVkKG1lZGl1bXApXG4jZGVmaW5lIG1lZGl1bXBcbiNlbmRpZlxuI2lm ICFkZWZpbmVkKGhpZ2hwKVxuI2RlZmluZSBoaWdocFxuI2VuZGlmXG4jZW5kaWYiLCIjaWZk ZWYgR0xfRVNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNlbHNlXG4jaWYgIWRlZmluZWQo bG93cClcbiNkZWZpbmUgbG93cFxuI2VuZGlmXG4jaWYgIWRlZmluZWQobWVkaXVtcClcbiNk ZWZpbmUgbWVkaXVtcFxuI2VuZGlmXG4jaWYgIWRlZmluZWQoaGlnaHApXG4jZGVmaW5lIGhp Z2hwXG4jZW5kaWZcbiNlbmRpZlxudmVjMiB1bnBhY2tfZmxvYXQoY29uc3QgZmxvYXQgcGFj a2VkVmFsdWUpIHtpbnQgcGFja2VkSW50VmFsdWU9aW50KHBhY2tlZFZhbHVlKTtpbnQgdjA9 cGFja2VkSW50VmFsdWUvMjU2O3JldHVybiB2ZWMyKHYwLHBhY2tlZEludFZhbHVlLXYwKjI1 Nik7fXZlYzIgdW5wYWNrX29wYWNpdHkoY29uc3QgZmxvYXQgcGFja2VkT3BhY2l0eSkge2lu dCBpbnRPcGFjaXR5PWludChwYWNrZWRPcGFjaXR5KS8yO3JldHVybiB2ZWMyKGZsb2F0KGlu dE9wYWNpdHkpLzEyNy4wLG1vZChwYWNrZWRPcGFjaXR5LDIuMCkpO312ZWM0IGRlY29kZV9j b2xvcihjb25zdCB2ZWMyIGVuY29kZWRDb2xvcikge3JldHVybiB2ZWM0KHVucGFja19mbG9h dChlbmNvZGVkQ29sb3JbMF0pLzI1NS4wLHVucGFja19mbG9hdChlbmNvZGVkQ29sb3JbMV0p LzI1NS4wXG4pO31mbG9hdCB1bnBhY2tfbWl4X3ZlYzIoY29uc3QgdmVjMiBwYWNrZWRWYWx1 ZSxjb25zdCBmbG9hdCB0KSB7cmV0dXJuIG1peChwYWNrZWRWYWx1ZVswXSxwYWNrZWRWYWx1 ZVsxXSx0KTt9dmVjNCB1bnBhY2tfbWl4X2NvbG9yKGNvbnN0IHZlYzQgcGFja2VkQ29sb3Jz LGNvbnN0IGZsb2F0IHQpIHt2ZWM0IG1pbkNvbG9yPWRlY29kZV9jb2xvcih2ZWMyKHBhY2tl ZENvbG9yc1swXSxwYWNrZWRDb2xvcnNbMV0pKTt2ZWM0IG1heENvbG9yPWRlY29kZV9jb2xv cih2ZWMyKHBhY2tlZENvbG9yc1syXSxwYWNrZWRDb2xvcnNbM10pKTtyZXR1cm4gbWl4KG1p bkNvbG9yLG1heENvbG9yLHQpO312ZWMyIGdldF9wYXR0ZXJuX3Bvcyhjb25zdCB2ZWMyIHBp eGVsX2Nvb3JkX3VwcGVyLGNvbnN0IHZlYzIgcGl4ZWxfY29vcmRfbG93ZXIsY29uc3QgdmVj MiBwYXR0ZXJuX3NpemUsY29uc3QgZmxvYXQgdGlsZV91bml0c190b19waXhlbHMsY29uc3Qg dmVjMiBwb3MpIHt2ZWMyIG9mZnNldD1tb2QobW9kKG1vZChwaXhlbF9jb29yZF91cHBlcixw YXR0ZXJuX3NpemUpKjI1Ni4wLHBhdHRlcm5fc2l6ZSkqMjU2LjArcGl4ZWxfY29vcmRfbG93 ZXIscGF0dGVybl9zaXplKTtyZXR1cm4gKHRpbGVfdW5pdHNfdG9fcGl4ZWxzKnBvcytvZmZz ZXQpL3BhdHRlcm5fc2l6ZTt9IiksV2U9eXIoInVuaWZvcm0gdmVjNCB1X2NvbG9yO3VuaWZv cm0gZmxvYXQgdV9vcGFjaXR5O3ZvaWQgbWFpbigpIHtnbF9GcmFnQ29sb3I9dV9jb2xvcip1 X29wYWNpdHk7XG4jaWZkZWYgT1ZFUkRSQVdfSU5TUEVDVE9SXG5nbF9GcmFnQ29sb3I9dmVj NCgxLjApO1xuI2VuZGlmXG59IiwiYXR0cmlidXRlIHZlYzIgYV9wb3M7dW5pZm9ybSBtYXQ0 IHVfbWF0cml4O3ZvaWQgbWFpbigpIHtnbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KGFfcG9z LDAsMSk7fSIpLFhlPXlyKCJ1bmlmb3JtIHZlYzIgdV9wYXR0ZXJuX3RsX2E7dW5pZm9ybSB2 ZWMyIHVfcGF0dGVybl9icl9hO3VuaWZvcm0gdmVjMiB1X3BhdHRlcm5fdGxfYjt1bmlmb3Jt IHZlYzIgdV9wYXR0ZXJuX2JyX2I7dW5pZm9ybSB2ZWMyIHVfdGV4c2l6ZTt1bmlmb3JtIGZs b2F0IHVfbWl4O3VuaWZvcm0gZmxvYXQgdV9vcGFjaXR5O3VuaWZvcm0gc2FtcGxlcjJEIHVf aW1hZ2U7dmFyeWluZyB2ZWMyIHZfcG9zX2E7dmFyeWluZyB2ZWMyIHZfcG9zX2I7dm9pZCBt YWluKCkge3ZlYzIgaW1hZ2Vjb29yZD1tb2Qodl9wb3NfYSwxLjApO3ZlYzIgcG9zPW1peCh1 X3BhdHRlcm5fdGxfYS91X3RleHNpemUsdV9wYXR0ZXJuX2JyX2EvdV90ZXhzaXplLGltYWdl Y29vcmQpO3ZlYzQgY29sb3IxPXRleHR1cmUyRCh1X2ltYWdlLHBvcyk7dmVjMiBpbWFnZWNv b3JkX2I9bW9kKHZfcG9zX2IsMS4wKTt2ZWMyIHBvczI9bWl4KHVfcGF0dGVybl90bF9iL3Vf dGV4c2l6ZSx1X3BhdHRlcm5fYnJfYi91X3RleHNpemUsaW1hZ2Vjb29yZF9iKTt2ZWM0IGNv bG9yMj10ZXh0dXJlMkQodV9pbWFnZSxwb3MyKTtnbF9GcmFnQ29sb3I9bWl4KGNvbG9yMSxj b2xvcjIsdV9taXgpKnVfb3BhY2l0eTtcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1Jcbmds X0ZyYWdDb2xvcj12ZWM0KDEuMCk7XG4jZW5kaWZcbn0iLCJ1bmlmb3JtIG1hdDQgdV9tYXRy aXg7dW5pZm9ybSB2ZWMyIHVfcGF0dGVybl9zaXplX2E7dW5pZm9ybSB2ZWMyIHVfcGF0dGVy bl9zaXplX2I7dW5pZm9ybSB2ZWMyIHVfcGl4ZWxfY29vcmRfdXBwZXI7dW5pZm9ybSB2ZWMy IHVfcGl4ZWxfY29vcmRfbG93ZXI7dW5pZm9ybSBmbG9hdCB1X3NjYWxlX2E7dW5pZm9ybSBm bG9hdCB1X3NjYWxlX2I7dW5pZm9ybSBmbG9hdCB1X3RpbGVfdW5pdHNfdG9fcGl4ZWxzO2F0 dHJpYnV0ZSB2ZWMyIGFfcG9zO3ZhcnlpbmcgdmVjMiB2X3Bvc19hO3ZhcnlpbmcgdmVjMiB2 X3Bvc19iO3ZvaWQgbWFpbigpIHtnbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KGFfcG9zLDAs MSk7dl9wb3NfYT1nZXRfcGF0dGVybl9wb3ModV9waXhlbF9jb29yZF91cHBlcix1X3BpeGVs X2Nvb3JkX2xvd2VyLHVfc2NhbGVfYSp1X3BhdHRlcm5fc2l6ZV9hLHVfdGlsZV91bml0c190 b19waXhlbHMsYV9wb3MpO3ZfcG9zX2I9Z2V0X3BhdHRlcm5fcG9zKHVfcGl4ZWxfY29vcmRf dXBwZXIsdV9waXhlbF9jb29yZF9sb3dlcix1X3NjYWxlX2IqdV9wYXR0ZXJuX3NpemVfYix1 X3RpbGVfdW5pdHNfdG9fcGl4ZWxzLGFfcG9zKTt9IiksWmU9eXIoInZhcnlpbmcgdmVjMyB2 X2RhdGE7XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgY29sb3JcbiNwcmFn bWEgbWFwYm94OiBkZWZpbmUgbWVkaXVtcCBmbG9hdCByYWRpdXNcbiNwcmFnbWEgbWFwYm94 OiBkZWZpbmUgbG93cCBmbG9hdCBibHVyXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3Ag ZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IHN0cm9r ZV9jb2xvclxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBtZWRpdW1wIGZsb2F0IHN0cm9rZV93 aWR0aFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IHN0cm9rZV9vcGFjaXR5 XG52b2lkIG1haW4oKSB7XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBoaWdocCB2ZWM0 IGNvbG9yXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIGZsb2F0IHJhZGl1 c1xuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBibHVyXG4jcHJhZ21h IG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcbiNwcmFnbWEgbWFwYm94 OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgc3Ryb2tlX2NvbG9yXG4jcHJhZ21hIG1hcGJveDog aW5pdGlhbGl6ZSBtZWRpdW1wIGZsb2F0IHN0cm9rZV93aWR0aFxuI3ByYWdtYSBtYXBib3g6 IGluaXRpYWxpemUgbG93cCBmbG9hdCBzdHJva2Vfb3BhY2l0eVxudmVjMiBleHRydWRlPXZf ZGF0YS54eTtmbG9hdCBleHRydWRlX2xlbmd0aD1sZW5ndGgoZXh0cnVkZSk7bG93cCBmbG9h dCBhbnRpYWxpYXNibHVyPXZfZGF0YS56O2Zsb2F0IGFudGlhbGlhc2VkX2JsdXI9LW1heChi bHVyLGFudGlhbGlhc2JsdXIpO2Zsb2F0IG9wYWNpdHlfdD1zbW9vdGhzdGVwKDAuMCxhbnRp YWxpYXNlZF9ibHVyLGV4dHJ1ZGVfbGVuZ3RoLTEuMCk7ZmxvYXQgY29sb3JfdD1zdHJva2Vf d2lkdGggPCAwLjAxID8gMC4wIDogc21vb3Roc3RlcChhbnRpYWxpYXNlZF9ibHVyLDAuMCxl eHRydWRlX2xlbmd0aC1yYWRpdXMvKHJhZGl1cytzdHJva2Vfd2lkdGgpKTtnbF9GcmFnQ29s b3I9b3BhY2l0eV90Km1peChjb2xvcipvcGFjaXR5LHN0cm9rZV9jb2xvcipzdHJva2Vfb3Bh Y2l0eSxjb2xvcl90KTtcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcbmdsX0ZyYWdDb2xv cj12ZWM0KDEuMCk7XG4jZW5kaWZcbn0iLCJ1bmlmb3JtIG1hdDQgdV9tYXRyaXg7dW5pZm9y bSBib29sIHVfc2NhbGVfd2l0aF9tYXA7dW5pZm9ybSBib29sIHVfcGl0Y2hfd2l0aF9tYXA7 dW5pZm9ybSB2ZWMyIHVfZXh0cnVkZV9zY2FsZTt1bmlmb3JtIGxvd3AgZmxvYXQgdV9kZXZp Y2VfcGl4ZWxfcmF0aW87dW5pZm9ybSBoaWdocCBmbG9hdCB1X2NhbWVyYV90b19jZW50ZXJf ZGlzdGFuY2U7YXR0cmlidXRlIHZlYzIgYV9wb3M7dmFyeWluZyB2ZWMzIHZfZGF0YTtcbiNw cmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBjb2xvclxuI3ByYWdtYSBtYXBib3g6 IGRlZmluZSBtZWRpdW1wIGZsb2F0IHJhZGl1c1xuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBs b3dwIGZsb2F0IGJsdXJcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFj aXR5XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgc3Ryb2tlX2NvbG9yXG4j cHJhZ21hIG1hcGJveDogZGVmaW5lIG1lZGl1bXAgZmxvYXQgc3Ryb2tlX3dpZHRoXG4jcHJh Z21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgc3Ryb2tlX29wYWNpdHlcbnZvaWQgbWFp bih2b2lkKSB7XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBoaWdocCB2ZWM0IGNvbG9y XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIGZsb2F0IHJhZGl1c1xuI3By YWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBibHVyXG4jcHJhZ21hIG1hcGJv eDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcbiNwcmFnbWEgbWFwYm94OiBpbml0 aWFsaXplIGhpZ2hwIHZlYzQgc3Ryb2tlX2NvbG9yXG4jcHJhZ21hIG1hcGJveDogaW5pdGlh bGl6ZSBtZWRpdW1wIGZsb2F0IHN0cm9rZV93aWR0aFxuI3ByYWdtYSBtYXBib3g6IGluaXRp YWxpemUgbG93cCBmbG9hdCBzdHJva2Vfb3BhY2l0eVxudmVjMiBleHRydWRlPXZlYzIobW9k KGFfcG9zLDIuMCkqMi4wLTEuMCk7dmVjMiBjaXJjbGVfY2VudGVyPWZsb29yKGFfcG9zKjAu NSk7aWYgKHVfcGl0Y2hfd2l0aF9tYXApIHt2ZWMyIGNvcm5lcl9wb3NpdGlvbj1jaXJjbGVf Y2VudGVyO2lmICh1X3NjYWxlX3dpdGhfbWFwKSB7Y29ybmVyX3Bvc2l0aW9uKz1leHRydWRl KihyYWRpdXMrc3Ryb2tlX3dpZHRoKSp1X2V4dHJ1ZGVfc2NhbGU7fSBlbHNlIHt2ZWM0IHBy b2plY3RlZF9jZW50ZXI9dV9tYXRyaXgqdmVjNChjaXJjbGVfY2VudGVyLDAsMSk7Y29ybmVy X3Bvc2l0aW9uKz1leHRydWRlKihyYWRpdXMrc3Ryb2tlX3dpZHRoKSp1X2V4dHJ1ZGVfc2Nh bGUqKHByb2plY3RlZF9jZW50ZXIudy91X2NhbWVyYV90b19jZW50ZXJfZGlzdGFuY2UpO31n bF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KGNvcm5lcl9wb3NpdGlvbiwwLDEpO30gZWxzZSB7 Z2xfUG9zaXRpb249dV9tYXRyaXgqdmVjNChjaXJjbGVfY2VudGVyLDAsMSk7aWYgKHVfc2Nh bGVfd2l0aF9tYXApIHtnbF9Qb3NpdGlvbi54eSs9ZXh0cnVkZSoocmFkaXVzK3N0cm9rZV93 aWR0aCkqdV9leHRydWRlX3NjYWxlKnVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZTt9IGVs c2Uge2dsX1Bvc2l0aW9uLnh5Kz1leHRydWRlKihyYWRpdXMrc3Ryb2tlX3dpZHRoKSp1X2V4 dHJ1ZGVfc2NhbGUqZ2xfUG9zaXRpb24udzt9fWxvd3AgZmxvYXQgYW50aWFsaWFzYmx1cj0x LjAvdV9kZXZpY2VfcGl4ZWxfcmF0aW8vKHJhZGl1cytzdHJva2Vfd2lkdGgpO3ZfZGF0YT12 ZWMzKGV4dHJ1ZGUueCxleHRydWRlLnksYW50aWFsaWFzYmx1cik7fSIpLEplPXlyKCJ2b2lk IG1haW4oKSB7Z2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTt9IiwiYXR0cmlidXRlIHZlYzIgYV9w b3M7dW5pZm9ybSBtYXQ0IHVfbWF0cml4O3ZvaWQgbWFpbigpIHtnbF9Qb3NpdGlvbj11X21h dHJpeCp2ZWM0KGFfcG9zLDAsMSk7fSIpLEtlPXlyKCJ1bmlmb3JtIGhpZ2hwIGZsb2F0IHVf aW50ZW5zaXR5O3ZhcnlpbmcgdmVjMiB2X2V4dHJ1ZGU7XG4jcHJhZ21hIG1hcGJveDogZGVm aW5lIGhpZ2hwIGZsb2F0IHdlaWdodFxuI2RlZmluZSBHQVVTU19DT0VGIDAuMzk4OTQyMjgw NDAxNDMyN1xudm9pZCBtYWluKCkge1xuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGln aHAgZmxvYXQgd2VpZ2h0XG5mbG9hdCBkPS0wLjUqMy4wKjMuMCpkb3Qodl9leHRydWRlLHZf ZXh0cnVkZSk7ZmxvYXQgdmFsPXdlaWdodCp1X2ludGVuc2l0eSpHQVVTU19DT0VGKmV4cChk KTtnbF9GcmFnQ29sb3I9dmVjNCh2YWwsMS4wLDEuMCwxLjApO1xuI2lmZGVmIE9WRVJEUkFX X0lOU1BFQ1RPUlxuZ2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTtcbiNlbmRpZlxufSIsInVuaWZv cm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIGZsb2F0IHVfZXh0cnVkZV9zY2FsZTt1bmlmb3Jt IGZsb2F0IHVfb3BhY2l0eTt1bmlmb3JtIGZsb2F0IHVfaW50ZW5zaXR5O2F0dHJpYnV0ZSB2 ZWMyIGFfcG9zO3ZhcnlpbmcgdmVjMiB2X2V4dHJ1ZGU7XG4jcHJhZ21hIG1hcGJveDogZGVm aW5lIGhpZ2hwIGZsb2F0IHdlaWdodFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBtZWRpdW1w IGZsb2F0IHJhZGl1c1xuY29uc3QgaGlnaHAgZmxvYXQgWkVSTz0xLjAvMjU1LjAvMTYuMDtc biNkZWZpbmUgR0FVU1NfQ09FRiAwLjM5ODk0MjI4MDQwMTQzMjdcbnZvaWQgbWFpbih2b2lk KSB7XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBoaWdocCBmbG9hdCB3ZWlnaHRcbiNw cmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgZmxvYXQgcmFkaXVzXG52ZWMyIHVu c2NhbGVkX2V4dHJ1ZGU9dmVjMihtb2QoYV9wb3MsMi4wKSoyLjAtMS4wKTtmbG9hdCBTPXNx cnQoLTIuMCpsb2coWkVSTy93ZWlnaHQvdV9pbnRlbnNpdHkvR0FVU1NfQ09FRikpLzMuMDt2 X2V4dHJ1ZGU9Uyp1bnNjYWxlZF9leHRydWRlO3ZlYzIgZXh0cnVkZT12X2V4dHJ1ZGUqcmFk aXVzKnVfZXh0cnVkZV9zY2FsZTt2ZWM0IHBvcz12ZWM0KGZsb29yKGFfcG9zKjAuNSkrZXh0 cnVkZSwwLDEpO2dsX1Bvc2l0aW9uPXVfbWF0cml4KnBvczt9IiksUWU9eXIoInVuaWZvcm0g c2FtcGxlcjJEIHVfaW1hZ2U7dW5pZm9ybSBzYW1wbGVyMkQgdV9jb2xvcl9yYW1wO3VuaWZv cm0gZmxvYXQgdV9vcGFjaXR5O3ZhcnlpbmcgdmVjMiB2X3Bvczt2b2lkIG1haW4oKSB7Zmxv YXQgdD10ZXh0dXJlMkQodV9pbWFnZSx2X3Bvcykucjt2ZWM0IGNvbG9yPXRleHR1cmUyRCh1 X2NvbG9yX3JhbXAsdmVjMih0LDAuNSkpO2dsX0ZyYWdDb2xvcj1jb2xvcip1X29wYWNpdHk7 XG4jaWZkZWYgT1ZFUkRSQVdfSU5TUEVDVE9SXG5nbF9GcmFnQ29sb3I9dmVjNCgwLjApO1xu I2VuZGlmXG59IiwidW5pZm9ybSBtYXQ0IHVfbWF0cml4O3VuaWZvcm0gdmVjMiB1X3dvcmxk O2F0dHJpYnV0ZSB2ZWMyIGFfcG9zO3ZhcnlpbmcgdmVjMiB2X3Bvczt2b2lkIG1haW4oKSB7 Z2xfUG9zaXRpb249dV9tYXRyaXgqdmVjNChhX3Bvcyp1X3dvcmxkLDAsMSk7dl9wb3MueD1h X3Bvcy54O3ZfcG9zLnk9MS4wLWFfcG9zLnk7fSIpLCRlPXlyKCJ2YXJ5aW5nIGZsb2F0IHZf cGxhY2VkO3ZhcnlpbmcgZmxvYXQgdl9ub3RVc2VkO3ZvaWQgbWFpbigpIHtmbG9hdCBhbHBo YT0wLjU7Z2xfRnJhZ0NvbG9yPXZlYzQoMS4wLDAuMCwwLjAsMS4wKSphbHBoYTtpZiAodl9w bGFjZWQgPiAwLjUpIHtnbF9GcmFnQ29sb3I9dmVjNCgwLjAsMC4wLDEuMCwwLjUpKmFscGhh O31pZiAodl9ub3RVc2VkID4gMC41KSB7Z2xfRnJhZ0NvbG9yKj0uMTt9fSIsImF0dHJpYnV0 ZSB2ZWMyIGFfcG9zO2F0dHJpYnV0ZSB2ZWMyIGFfYW5jaG9yX3BvczthdHRyaWJ1dGUgdmVj MiBhX2V4dHJ1ZGU7YXR0cmlidXRlIHZlYzIgYV9wbGFjZWQ7YXR0cmlidXRlIHZlYzIgYV9z aGlmdDt1bmlmb3JtIG1hdDQgdV9tYXRyaXg7dW5pZm9ybSB2ZWMyIHVfZXh0cnVkZV9zY2Fs ZTt1bmlmb3JtIGZsb2F0IHVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZTt2YXJ5aW5nIGZs b2F0IHZfcGxhY2VkO3ZhcnlpbmcgZmxvYXQgdl9ub3RVc2VkO3ZvaWQgbWFpbigpIHt2ZWM0 IHByb2plY3RlZFBvaW50PXVfbWF0cml4KnZlYzQoYV9hbmNob3JfcG9zLDAsMSk7aGlnaHAg ZmxvYXQgY2FtZXJhX3RvX2FuY2hvcl9kaXN0YW5jZT1wcm9qZWN0ZWRQb2ludC53O2hpZ2hw IGZsb2F0IGNvbGxpc2lvbl9wZXJzcGVjdGl2ZV9yYXRpbz1jbGFtcCgwLjUrMC41Kih1X2Nh bWVyYV90b19jZW50ZXJfZGlzdGFuY2UvY2FtZXJhX3RvX2FuY2hvcl9kaXN0YW5jZSksMC4w LDQuMCk7Z2xfUG9zaXRpb249dV9tYXRyaXgqdmVjNChhX3BvcywwLjAsMS4wKTtnbF9Qb3Np dGlvbi54eSs9KGFfZXh0cnVkZSthX3NoaWZ0KSp1X2V4dHJ1ZGVfc2NhbGUqZ2xfUG9zaXRp b24udypjb2xsaXNpb25fcGVyc3BlY3RpdmVfcmF0aW87dl9wbGFjZWQ9YV9wbGFjZWQueDt2 X25vdFVzZWQ9YV9wbGFjZWQueTt9IiksdHI9eXIoInZhcnlpbmcgZmxvYXQgdl9yYWRpdXM7 dmFyeWluZyB2ZWMyIHZfZXh0cnVkZTt2YXJ5aW5nIGZsb2F0IHZfcGVyc3BlY3RpdmVfcmF0 aW87dmFyeWluZyBmbG9hdCB2X2NvbGxpc2lvbjt2b2lkIG1haW4oKSB7ZmxvYXQgYWxwaGE9 MC41Km1pbih2X3BlcnNwZWN0aXZlX3JhdGlvLDEuMCk7ZmxvYXQgc3Ryb2tlX3JhZGl1cz0w LjkqbWF4KHZfcGVyc3BlY3RpdmVfcmF0aW8sMS4wKTtmbG9hdCBkaXN0YW5jZV90b19jZW50 ZXI9bGVuZ3RoKHZfZXh0cnVkZSk7ZmxvYXQgZGlzdGFuY2VfdG9fZWRnZT1hYnMoZGlzdGFu Y2VfdG9fY2VudGVyLXZfcmFkaXVzKTtmbG9hdCBvcGFjaXR5X3Q9c21vb3Roc3RlcCgtc3Ry b2tlX3JhZGl1cywwLjAsLWRpc3RhbmNlX3RvX2VkZ2UpO3ZlYzQgY29sb3I9bWl4KHZlYzQo MC4wLDAuMCwxLjAsMC41KSx2ZWM0KDEuMCwwLjAsMC4wLDEuMCksdl9jb2xsaXNpb24pO2ds X0ZyYWdDb2xvcj1jb2xvciphbHBoYSpvcGFjaXR5X3Q7fSIsImF0dHJpYnV0ZSB2ZWMyIGFf cG9zO2F0dHJpYnV0ZSBmbG9hdCBhX3JhZGl1czthdHRyaWJ1dGUgdmVjMiBhX2ZsYWdzO3Vu aWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIG1hdDQgdV9pbnZfbWF0cml4O3VuaWZvcm0g dmVjMiB1X3ZpZXdwb3J0X3NpemU7dW5pZm9ybSBmbG9hdCB1X2NhbWVyYV90b19jZW50ZXJf ZGlzdGFuY2U7dmFyeWluZyBmbG9hdCB2X3JhZGl1czt2YXJ5aW5nIHZlYzIgdl9leHRydWRl O3ZhcnlpbmcgZmxvYXQgdl9wZXJzcGVjdGl2ZV9yYXRpbzt2YXJ5aW5nIGZsb2F0IHZfY29s bGlzaW9uO3ZlYzMgdG9UaWxlUG9zaXRpb24odmVjMiBzY3JlZW5Qb3MpIHt2ZWM0IHJheVN0 YXJ0PXVfaW52X21hdHJpeCp2ZWM0KHNjcmVlblBvcywtMS4wLDEuMCk7dmVjNCByYXlFbmQg ID11X2ludl9tYXRyaXgqdmVjNChzY3JlZW5Qb3MsIDEuMCwxLjApO3JheVN0YXJ0Lnh5ei89 cmF5U3RhcnQudztyYXlFbmQueHl6ICAvPXJheUVuZC53O2hpZ2hwIGZsb2F0IHQ9KDAuMC1y YXlTdGFydC56KS8ocmF5RW5kLnotcmF5U3RhcnQueik7cmV0dXJuIG1peChyYXlTdGFydC54 eXoscmF5RW5kLnh5eix0KTt9dm9pZCBtYWluKCkge3ZlYzIgcXVhZENlbnRlclBvcz1hX3Bv cztmbG9hdCByYWRpdXM9YV9yYWRpdXM7ZmxvYXQgY29sbGlzaW9uPWFfZmxhZ3MueDtmbG9h dCB2ZXJ0ZXhJZHg9YV9mbGFncy55O3ZlYzIgcXVhZFZlcnRleE9mZnNldD12ZWMyKG1peCgt MS4wLDEuMCxmbG9hdCh2ZXJ0ZXhJZHggPj0yLjApKSxtaXgoLTEuMCwxLjAsZmxvYXQodmVy dGV4SWR4ID49MS4wICYmIHZlcnRleElkeCA8PTIuMCkpKTt2ZWMyIHF1YWRWZXJ0ZXhFeHRl bnQ9cXVhZFZlcnRleE9mZnNldCpyYWRpdXM7dmVjMyB0aWxlUG9zPXRvVGlsZVBvc2l0aW9u KHF1YWRDZW50ZXJQb3MpO3ZlYzQgY2xpcFBvcz11X21hdHJpeCp2ZWM0KHRpbGVQb3MsMS4w KTtoaWdocCBmbG9hdCBjYW1lcmFfdG9fYW5jaG9yX2Rpc3RhbmNlPWNsaXBQb3MudztoaWdo cCBmbG9hdCBjb2xsaXNpb25fcGVyc3BlY3RpdmVfcmF0aW89Y2xhbXAoMC41KzAuNSoodV9j YW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlL2NhbWVyYV90b19hbmNob3JfZGlzdGFuY2UpLDAu MCw0LjApO2Zsb2F0IHBhZGRpbmdfZmFjdG9yPTEuMjt2X3JhZGl1cz1yYWRpdXM7dl9leHRy dWRlPXF1YWRWZXJ0ZXhFeHRlbnQqcGFkZGluZ19mYWN0b3I7dl9wZXJzcGVjdGl2ZV9yYXRp bz1jb2xsaXNpb25fcGVyc3BlY3RpdmVfcmF0aW87dl9jb2xsaXNpb249Y29sbGlzaW9uO2ds X1Bvc2l0aW9uPXZlYzQoY2xpcFBvcy54eXovY2xpcFBvcy53LDEuMCkrdmVjNChxdWFkVmVy dGV4RXh0ZW50KnBhZGRpbmdfZmFjdG9yL3Vfdmlld3BvcnRfc2l6ZSoyLjAsMC4wLDAuMCk7 fSIpLGVyPXlyKCJ1bmlmb3JtIGhpZ2hwIHZlYzQgdV9jb2xvcjt1bmlmb3JtIHNhbXBsZXIy RCB1X292ZXJsYXk7dmFyeWluZyB2ZWMyIHZfdXY7dm9pZCBtYWluKCkge3ZlYzQgb3Zlcmxh eV9jb2xvcj10ZXh0dXJlMkQodV9vdmVybGF5LHZfdXYpO2dsX0ZyYWdDb2xvcj1taXgodV9j b2xvcixvdmVybGF5X2NvbG9yLG92ZXJsYXlfY29sb3IuYSk7fSIsImF0dHJpYnV0ZSB2ZWMy IGFfcG9zO3ZhcnlpbmcgdmVjMiB2X3V2O3VuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3Jt IGZsb2F0IHVfb3ZlcmxheV9zY2FsZTt2b2lkIG1haW4oKSB7dl91dj1hX3Bvcy84MTkyLjA7 Z2xfUG9zaXRpb249dV9tYXRyaXgqdmVjNChhX3Bvcyp1X292ZXJsYXlfc2NhbGUsMCwxKTt9 IikscnI9eXIoIiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBjb2xvclxuI3By YWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcbnZvaWQgbWFpbigpIHtc biNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgY29sb3JcbiNwcmFnbWEg bWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxuZ2xfRnJhZ0NvbG9yPWNv bG9yKm9wYWNpdHk7XG4jaWZkZWYgT1ZFUkRSQVdfSU5TUEVDVE9SXG5nbF9GcmFnQ29sb3I9 dmVjNCgxLjApO1xuI2VuZGlmXG59IiwiYXR0cmlidXRlIHZlYzIgYV9wb3M7dW5pZm9ybSBt YXQ0IHVfbWF0cml4O1xuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IGNvbG9y XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxudm9pZCBtYWlu KCkge1xuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBjb2xvclxuI3By YWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XG5nbF9Qb3NpdGlv bj11X21hdHJpeCp2ZWM0KGFfcG9zLDAsMSk7fSIpLG5yPXlyKCJ2YXJ5aW5nIHZlYzIgdl9w b3M7XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgb3V0bGluZV9jb2xvclxu I3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcbnZvaWQgbWFpbigp IHtcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgb3V0bGluZV9jb2xv clxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XG5mbG9h dCBkaXN0PWxlbmd0aCh2X3Bvcy1nbF9GcmFnQ29vcmQueHkpO2Zsb2F0IGFscGhhPTEuMC1z bW9vdGhzdGVwKDAuMCwxLjAsZGlzdCk7Z2xfRnJhZ0NvbG9yPW91dGxpbmVfY29sb3IqKGFs cGhhKm9wYWNpdHkpO1xuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxuZ2xfRnJhZ0NvbG9y PXZlYzQoMS4wKTtcbiNlbmRpZlxufSIsImF0dHJpYnV0ZSB2ZWMyIGFfcG9zO3VuaWZvcm0g bWF0NCB1X21hdHJpeDt1bmlmb3JtIHZlYzIgdV93b3JsZDt2YXJ5aW5nIHZlYzIgdl9wb3M7 XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgb3V0bGluZV9jb2xvclxuI3By YWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcbnZvaWQgbWFpbigpIHtc biNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgb3V0bGluZV9jb2xvclxu I3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XG5nbF9Qb3Np dGlvbj11X21hdHJpeCp2ZWM0KGFfcG9zLDAsMSk7dl9wb3M9KGdsX1Bvc2l0aW9uLnh5L2ds X1Bvc2l0aW9uLncrMS4wKS8yLjAqdV93b3JsZDt9IiksaXI9eXIoInVuaWZvcm0gdmVjMiB1 X3RleHNpemU7dW5pZm9ybSBzYW1wbGVyMkQgdV9pbWFnZTt1bmlmb3JtIGZsb2F0IHVfZmFk ZTt2YXJ5aW5nIHZlYzIgdl9wb3NfYTt2YXJ5aW5nIHZlYzIgdl9wb3NfYjt2YXJ5aW5nIHZl YzIgdl9wb3M7XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxu I3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIHZlYzQgcGF0dGVybl9mcm9tXG4jcHJhZ21h IG1hcGJveDogZGVmaW5lIGxvd3AgdmVjNCBwYXR0ZXJuX3RvXG52b2lkIG1haW4oKSB7XG4j cHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcbiNwcmFnbWEg bWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgdmVjNCBwYXR0ZXJuX2Zyb21cbiNwcmFnbWEg bWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgdmVjNCBwYXR0ZXJuX3RvXG52ZWMyIHBhdHRl cm5fdGxfYT1wYXR0ZXJuX2Zyb20ueHk7dmVjMiBwYXR0ZXJuX2JyX2E9cGF0dGVybl9mcm9t Lnp3O3ZlYzIgcGF0dGVybl90bF9iPXBhdHRlcm5fdG8ueHk7dmVjMiBwYXR0ZXJuX2JyX2I9 cGF0dGVybl90by56dzt2ZWMyIGltYWdlY29vcmQ9bW9kKHZfcG9zX2EsMS4wKTt2ZWMyIHBv cz1taXgocGF0dGVybl90bF9hL3VfdGV4c2l6ZSxwYXR0ZXJuX2JyX2EvdV90ZXhzaXplLGlt YWdlY29vcmQpO3ZlYzQgY29sb3IxPXRleHR1cmUyRCh1X2ltYWdlLHBvcyk7dmVjMiBpbWFn ZWNvb3JkX2I9bW9kKHZfcG9zX2IsMS4wKTt2ZWMyIHBvczI9bWl4KHBhdHRlcm5fdGxfYi91 X3RleHNpemUscGF0dGVybl9icl9iL3VfdGV4c2l6ZSxpbWFnZWNvb3JkX2IpO3ZlYzQgY29s b3IyPXRleHR1cmUyRCh1X2ltYWdlLHBvczIpO2Zsb2F0IGRpc3Q9bGVuZ3RoKHZfcG9zLWds X0ZyYWdDb29yZC54eSk7ZmxvYXQgYWxwaGE9MS4wLXNtb290aHN0ZXAoMC4wLDEuMCxkaXN0 KTtnbF9GcmFnQ29sb3I9bWl4KGNvbG9yMSxjb2xvcjIsdV9mYWRlKSphbHBoYSpvcGFjaXR5 O1xuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxuZ2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTtc biNlbmRpZlxufSIsInVuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIHZlYzIgdV93b3Js ZDt1bmlmb3JtIHZlYzIgdV9waXhlbF9jb29yZF91cHBlcjt1bmlmb3JtIHZlYzIgdV9waXhl bF9jb29yZF9sb3dlcjt1bmlmb3JtIHZlYzMgdV9zY2FsZTthdHRyaWJ1dGUgdmVjMiBhX3Bv czt2YXJ5aW5nIHZlYzIgdl9wb3NfYTt2YXJ5aW5nIHZlYzIgdl9wb3NfYjt2YXJ5aW5nIHZl YzIgdl9wb3M7XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxu I3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIHZlYzQgcGF0dGVybl9mcm9tXG4jcHJhZ21h IG1hcGJveDogZGVmaW5lIGxvd3AgdmVjNCBwYXR0ZXJuX3RvXG4jcHJhZ21hIG1hcGJveDog ZGVmaW5lIGxvd3AgZmxvYXQgcGl4ZWxfcmF0aW9fZnJvbVxuI3ByYWdtYSBtYXBib3g6IGRl ZmluZSBsb3dwIGZsb2F0IHBpeGVsX3JhdGlvX3RvXG52b2lkIG1haW4oKSB7XG4jcHJhZ21h IG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcbiNwcmFnbWEgbWFwYm94 OiBpbml0aWFsaXplIG1lZGl1bXAgdmVjNCBwYXR0ZXJuX2Zyb21cbiNwcmFnbWEgbWFwYm94 OiBpbml0aWFsaXplIG1lZGl1bXAgdmVjNCBwYXR0ZXJuX3RvXG4jcHJhZ21hIG1hcGJveDog aW5pdGlhbGl6ZSBsb3dwIGZsb2F0IHBpeGVsX3JhdGlvX2Zyb21cbiNwcmFnbWEgbWFwYm94 OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgcGl4ZWxfcmF0aW9fdG9cbnZlYzIgcGF0dGVybl90 bF9hPXBhdHRlcm5fZnJvbS54eTt2ZWMyIHBhdHRlcm5fYnJfYT1wYXR0ZXJuX2Zyb20uenc7 dmVjMiBwYXR0ZXJuX3RsX2I9cGF0dGVybl90by54eTt2ZWMyIHBhdHRlcm5fYnJfYj1wYXR0 ZXJuX3RvLnp3O2Zsb2F0IHRpbGVSYXRpbz11X3NjYWxlLng7ZmxvYXQgZnJvbVNjYWxlPXVf c2NhbGUueTtmbG9hdCB0b1NjYWxlPXVfc2NhbGUuejtnbF9Qb3NpdGlvbj11X21hdHJpeCp2 ZWM0KGFfcG9zLDAsMSk7dmVjMiBkaXNwbGF5X3NpemVfYT0ocGF0dGVybl9icl9hLXBhdHRl cm5fdGxfYSkvcGl4ZWxfcmF0aW9fZnJvbTt2ZWMyIGRpc3BsYXlfc2l6ZV9iPShwYXR0ZXJu X2JyX2ItcGF0dGVybl90bF9iKS9waXhlbF9yYXRpb190bzt2X3Bvc19hPWdldF9wYXR0ZXJu X3Bvcyh1X3BpeGVsX2Nvb3JkX3VwcGVyLHVfcGl4ZWxfY29vcmRfbG93ZXIsZnJvbVNjYWxl KmRpc3BsYXlfc2l6ZV9hLHRpbGVSYXRpbyxhX3Bvcyk7dl9wb3NfYj1nZXRfcGF0dGVybl9w b3ModV9waXhlbF9jb29yZF91cHBlcix1X3BpeGVsX2Nvb3JkX2xvd2VyLHRvU2NhbGUqZGlz cGxheV9zaXplX2IsdGlsZVJhdGlvLGFfcG9zKTt2X3Bvcz0oZ2xfUG9zaXRpb24ueHkvZ2xf UG9zaXRpb24udysxLjApLzIuMCp1X3dvcmxkO30iKSxhcj15cigidW5pZm9ybSB2ZWMyIHVf dGV4c2l6ZTt1bmlmb3JtIGZsb2F0IHVfZmFkZTt1bmlmb3JtIHNhbXBsZXIyRCB1X2ltYWdl O3ZhcnlpbmcgdmVjMiB2X3Bvc19hO3ZhcnlpbmcgdmVjMiB2X3Bvc19iO1xuI3ByYWdtYSBt YXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcbiNwcmFnbWEgbWFwYm94OiBkZWZp bmUgbG93cCB2ZWM0IHBhdHRlcm5fZnJvbVxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dw IHZlYzQgcGF0dGVybl90b1xudm9pZCBtYWluKCkge1xuI3ByYWdtYSBtYXBib3g6IGluaXRp YWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBt ZWRpdW1wIHZlYzQgcGF0dGVybl9mcm9tXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBt ZWRpdW1wIHZlYzQgcGF0dGVybl90b1xudmVjMiBwYXR0ZXJuX3RsX2E9cGF0dGVybl9mcm9t Lnh5O3ZlYzIgcGF0dGVybl9icl9hPXBhdHRlcm5fZnJvbS56dzt2ZWMyIHBhdHRlcm5fdGxf Yj1wYXR0ZXJuX3RvLnh5O3ZlYzIgcGF0dGVybl9icl9iPXBhdHRlcm5fdG8uenc7dmVjMiBp bWFnZWNvb3JkPW1vZCh2X3Bvc19hLDEuMCk7dmVjMiBwb3M9bWl4KHBhdHRlcm5fdGxfYS91 X3RleHNpemUscGF0dGVybl9icl9hL3VfdGV4c2l6ZSxpbWFnZWNvb3JkKTt2ZWM0IGNvbG9y MT10ZXh0dXJlMkQodV9pbWFnZSxwb3MpO3ZlYzIgaW1hZ2Vjb29yZF9iPW1vZCh2X3Bvc19i LDEuMCk7dmVjMiBwb3MyPW1peChwYXR0ZXJuX3RsX2IvdV90ZXhzaXplLHBhdHRlcm5fYnJf Yi91X3RleHNpemUsaW1hZ2Vjb29yZF9iKTt2ZWM0IGNvbG9yMj10ZXh0dXJlMkQodV9pbWFn ZSxwb3MyKTtnbF9GcmFnQ29sb3I9bWl4KGNvbG9yMSxjb2xvcjIsdV9mYWRlKSpvcGFjaXR5 O1xuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxuZ2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTtc biNlbmRpZlxufSIsInVuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIHZlYzIgdV9waXhl bF9jb29yZF91cHBlcjt1bmlmb3JtIHZlYzIgdV9waXhlbF9jb29yZF9sb3dlcjt1bmlmb3Jt IHZlYzMgdV9zY2FsZTthdHRyaWJ1dGUgdmVjMiBhX3Bvczt2YXJ5aW5nIHZlYzIgdl9wb3Nf YTt2YXJ5aW5nIHZlYzIgdl9wb3NfYjtcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBm bG9hdCBvcGFjaXR5XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgdmVjNCBwYXR0ZXJu X2Zyb21cbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCB2ZWM0IHBhdHRlcm5fdG9cbiNw cmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBwaXhlbF9yYXRpb19mcm9tXG4jcHJh Z21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgcGl4ZWxfcmF0aW9fdG9cbnZvaWQgbWFp bigpIHtcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxu I3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5fZnJvbVxu I3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5fdG9cbiNw cmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgcGl4ZWxfcmF0aW9fZnJvbVxu I3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBwaXhlbF9yYXRpb190b1xu dmVjMiBwYXR0ZXJuX3RsX2E9cGF0dGVybl9mcm9tLnh5O3ZlYzIgcGF0dGVybl9icl9hPXBh dHRlcm5fZnJvbS56dzt2ZWMyIHBhdHRlcm5fdGxfYj1wYXR0ZXJuX3RvLnh5O3ZlYzIgcGF0 dGVybl9icl9iPXBhdHRlcm5fdG8uenc7ZmxvYXQgdGlsZVpvb21SYXRpbz11X3NjYWxlLng7 ZmxvYXQgZnJvbVNjYWxlPXVfc2NhbGUueTtmbG9hdCB0b1NjYWxlPXVfc2NhbGUuejt2ZWMy IGRpc3BsYXlfc2l6ZV9hPShwYXR0ZXJuX2JyX2EtcGF0dGVybl90bF9hKS9waXhlbF9yYXRp b19mcm9tO3ZlYzIgZGlzcGxheV9zaXplX2I9KHBhdHRlcm5fYnJfYi1wYXR0ZXJuX3RsX2Ip L3BpeGVsX3JhdGlvX3RvO2dsX1Bvc2l0aW9uPXVfbWF0cml4KnZlYzQoYV9wb3MsMCwxKTt2 X3Bvc19hPWdldF9wYXR0ZXJuX3Bvcyh1X3BpeGVsX2Nvb3JkX3VwcGVyLHVfcGl4ZWxfY29v cmRfbG93ZXIsZnJvbVNjYWxlKmRpc3BsYXlfc2l6ZV9hLHRpbGVab29tUmF0aW8sYV9wb3Mp O3ZfcG9zX2I9Z2V0X3BhdHRlcm5fcG9zKHVfcGl4ZWxfY29vcmRfdXBwZXIsdV9waXhlbF9j b29yZF9sb3dlcix0b1NjYWxlKmRpc3BsYXlfc2l6ZV9iLHRpbGVab29tUmF0aW8sYV9wb3Mp O30iKSxvcj15cigidmFyeWluZyB2ZWM0IHZfY29sb3I7dm9pZCBtYWluKCkge2dsX0ZyYWdD b2xvcj12X2NvbG9yO1xuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxuZ2xfRnJhZ0NvbG9y PXZlYzQoMS4wKTtcbiNlbmRpZlxufSIsInVuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3Jt IHZlYzMgdV9saWdodGNvbG9yO3VuaWZvcm0gbG93cCB2ZWMzIHVfbGlnaHRwb3M7dW5pZm9y bSBsb3dwIGZsb2F0IHVfbGlnaHRpbnRlbnNpdHk7dW5pZm9ybSBmbG9hdCB1X3ZlcnRpY2Fs X2dyYWRpZW50O3VuaWZvcm0gbG93cCBmbG9hdCB1X29wYWNpdHk7YXR0cmlidXRlIHZlYzIg YV9wb3M7YXR0cmlidXRlIHZlYzQgYV9ub3JtYWxfZWQ7dmFyeWluZyB2ZWM0IHZfY29sb3I7 XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIGZsb2F0IGJhc2VcbiNwcmFnbWEgbWFw Ym94OiBkZWZpbmUgaGlnaHAgZmxvYXQgaGVpZ2h0XG4jcHJhZ21hIG1hcGJveDogZGVmaW5l IGhpZ2hwIHZlYzQgY29sb3JcbnZvaWQgbWFpbigpIHtcbiNwcmFnbWEgbWFwYm94OiBpbml0 aWFsaXplIGhpZ2hwIGZsb2F0IGJhc2VcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhp Z2hwIGZsb2F0IGhlaWdodFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVj NCBjb2xvclxudmVjMyBub3JtYWw9YV9ub3JtYWxfZWQueHl6O2Jhc2U9bWF4KDAuMCxiYXNl KTtoZWlnaHQ9bWF4KDAuMCxoZWlnaHQpO2Zsb2F0IHQ9bW9kKG5vcm1hbC54LDIuMCk7Z2xf UG9zaXRpb249dV9tYXRyaXgqdmVjNChhX3Bvcyx0ID4gMC4wID8gaGVpZ2h0IDogYmFzZSwx KTtmbG9hdCBjb2xvcnZhbHVlPWNvbG9yLnIqMC4yMTI2K2NvbG9yLmcqMC43MTUyK2NvbG9y LmIqMC4wNzIyO3ZfY29sb3I9dmVjNCgwLjAsMC4wLDAuMCwxLjApO3ZlYzQgYW1iaWVudGxp Z2h0PXZlYzQoMC4wMywwLjAzLDAuMDMsMS4wKTtjb2xvcis9YW1iaWVudGxpZ2h0O2Zsb2F0 IGRpcmVjdGlvbmFsPWNsYW1wKGRvdChub3JtYWwvMTYzODQuMCx1X2xpZ2h0cG9zKSwwLjAs MS4wKTtkaXJlY3Rpb25hbD1taXgoKDEuMC11X2xpZ2h0aW50ZW5zaXR5KSxtYXgoKDEuMC1j b2xvcnZhbHVlK3VfbGlnaHRpbnRlbnNpdHkpLDEuMCksZGlyZWN0aW9uYWwpO2lmIChub3Jt YWwueSAhPTAuMCkge2RpcmVjdGlvbmFsKj0oKDEuMC11X3ZlcnRpY2FsX2dyYWRpZW50KSso dV92ZXJ0aWNhbF9ncmFkaWVudCpjbGFtcCgodCtiYXNlKSpwb3coaGVpZ2h0LzE1MC4wLDAu NSksbWl4KDAuNywwLjk4LDEuMC11X2xpZ2h0aW50ZW5zaXR5KSwxLjApKSk7fXZfY29sb3Iu cis9Y2xhbXAoY29sb3IucipkaXJlY3Rpb25hbCp1X2xpZ2h0Y29sb3IucixtaXgoMC4wLDAu MywxLjAtdV9saWdodGNvbG9yLnIpLDEuMCk7dl9jb2xvci5nKz1jbGFtcChjb2xvci5nKmRp cmVjdGlvbmFsKnVfbGlnaHRjb2xvci5nLG1peCgwLjAsMC4zLDEuMC11X2xpZ2h0Y29sb3Iu ZyksMS4wKTt2X2NvbG9yLmIrPWNsYW1wKGNvbG9yLmIqZGlyZWN0aW9uYWwqdV9saWdodGNv bG9yLmIsbWl4KDAuMCwwLjMsMS4wLXVfbGlnaHRjb2xvci5iKSwxLjApO3ZfY29sb3IqPXVf b3BhY2l0eTt9Iiksc3I9eXIoInVuaWZvcm0gdmVjMiB1X3RleHNpemU7dW5pZm9ybSBmbG9h dCB1X2ZhZGU7dW5pZm9ybSBzYW1wbGVyMkQgdV9pbWFnZTt2YXJ5aW5nIHZlYzIgdl9wb3Nf YTt2YXJ5aW5nIHZlYzIgdl9wb3NfYjt2YXJ5aW5nIHZlYzQgdl9saWdodGluZztcbiNwcmFn bWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBiYXNlXG4jcHJhZ21hIG1hcGJveDogZGVm aW5lIGxvd3AgZmxvYXQgaGVpZ2h0XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgdmVj NCBwYXR0ZXJuX2Zyb21cbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCB2ZWM0IHBhdHRl cm5fdG9cbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBwaXhlbF9yYXRpb19m cm9tXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgcGl4ZWxfcmF0aW9fdG9c bnZvaWQgbWFpbigpIHtcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQg YmFzZVxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBoZWlnaHRcbiNw cmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgdmVjNCBwYXR0ZXJuX2Zyb21cbiNw cmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgdmVjNCBwYXR0ZXJuX3RvXG4jcHJh Z21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IHBpeGVsX3JhdGlvX2Zyb21cbiNw cmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgcGl4ZWxfcmF0aW9fdG9cbnZl YzIgcGF0dGVybl90bF9hPXBhdHRlcm5fZnJvbS54eTt2ZWMyIHBhdHRlcm5fYnJfYT1wYXR0 ZXJuX2Zyb20uenc7dmVjMiBwYXR0ZXJuX3RsX2I9cGF0dGVybl90by54eTt2ZWMyIHBhdHRl cm5fYnJfYj1wYXR0ZXJuX3RvLnp3O3ZlYzIgaW1hZ2Vjb29yZD1tb2Qodl9wb3NfYSwxLjAp O3ZlYzIgcG9zPW1peChwYXR0ZXJuX3RsX2EvdV90ZXhzaXplLHBhdHRlcm5fYnJfYS91X3Rl eHNpemUsaW1hZ2Vjb29yZCk7dmVjNCBjb2xvcjE9dGV4dHVyZTJEKHVfaW1hZ2UscG9zKTt2 ZWMyIGltYWdlY29vcmRfYj1tb2Qodl9wb3NfYiwxLjApO3ZlYzIgcG9zMj1taXgocGF0dGVy bl90bF9iL3VfdGV4c2l6ZSxwYXR0ZXJuX2JyX2IvdV90ZXhzaXplLGltYWdlY29vcmRfYik7 dmVjNCBjb2xvcjI9dGV4dHVyZTJEKHVfaW1hZ2UscG9zMik7dmVjNCBtaXhlZENvbG9yPW1p eChjb2xvcjEsY29sb3IyLHVfZmFkZSk7Z2xfRnJhZ0NvbG9yPW1peGVkQ29sb3Iqdl9saWdo dGluZztcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcbmdsX0ZyYWdDb2xvcj12ZWM0KDEu MCk7XG4jZW5kaWZcbn0iLCJ1bmlmb3JtIG1hdDQgdV9tYXRyaXg7dW5pZm9ybSB2ZWMyIHVf cGl4ZWxfY29vcmRfdXBwZXI7dW5pZm9ybSB2ZWMyIHVfcGl4ZWxfY29vcmRfbG93ZXI7dW5p Zm9ybSBmbG9hdCB1X2hlaWdodF9mYWN0b3I7dW5pZm9ybSB2ZWMzIHVfc2NhbGU7dW5pZm9y bSBmbG9hdCB1X3ZlcnRpY2FsX2dyYWRpZW50O3VuaWZvcm0gbG93cCBmbG9hdCB1X29wYWNp dHk7dW5pZm9ybSB2ZWMzIHVfbGlnaHRjb2xvcjt1bmlmb3JtIGxvd3AgdmVjMyB1X2xpZ2h0 cG9zO3VuaWZvcm0gbG93cCBmbG9hdCB1X2xpZ2h0aW50ZW5zaXR5O2F0dHJpYnV0ZSB2ZWMy IGFfcG9zO2F0dHJpYnV0ZSB2ZWM0IGFfbm9ybWFsX2VkO3ZhcnlpbmcgdmVjMiB2X3Bvc19h O3ZhcnlpbmcgdmVjMiB2X3Bvc19iO3ZhcnlpbmcgdmVjNCB2X2xpZ2h0aW5nO1xuI3ByYWdt YSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGJhc2VcbiNwcmFnbWEgbWFwYm94OiBkZWZp bmUgbG93cCBmbG9hdCBoZWlnaHRcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCB2ZWM0 IHBhdHRlcm5fZnJvbVxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIHZlYzQgcGF0dGVy bl90b1xuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IHBpeGVsX3JhdGlvX2Zy b21cbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBwaXhlbF9yYXRpb190b1xu dm9pZCBtYWluKCkge1xuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBi YXNlXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGhlaWdodFxuI3By YWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5fZnJvbVxuI3By YWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5fdG9cbiNwcmFn bWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgcGl4ZWxfcmF0aW9fZnJvbVxuI3By YWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBwaXhlbF9yYXRpb190b1xudmVj MiBwYXR0ZXJuX3RsX2E9cGF0dGVybl9mcm9tLnh5O3ZlYzIgcGF0dGVybl9icl9hPXBhdHRl cm5fZnJvbS56dzt2ZWMyIHBhdHRlcm5fdGxfYj1wYXR0ZXJuX3RvLnh5O3ZlYzIgcGF0dGVy bl9icl9iPXBhdHRlcm5fdG8uenc7ZmxvYXQgdGlsZVJhdGlvPXVfc2NhbGUueDtmbG9hdCBm cm9tU2NhbGU9dV9zY2FsZS55O2Zsb2F0IHRvU2NhbGU9dV9zY2FsZS56O3ZlYzMgbm9ybWFs PWFfbm9ybWFsX2VkLnh5ejtmbG9hdCBlZGdlZGlzdGFuY2U9YV9ub3JtYWxfZWQudzt2ZWMy IGRpc3BsYXlfc2l6ZV9hPShwYXR0ZXJuX2JyX2EtcGF0dGVybl90bF9hKS9waXhlbF9yYXRp b19mcm9tO3ZlYzIgZGlzcGxheV9zaXplX2I9KHBhdHRlcm5fYnJfYi1wYXR0ZXJuX3RsX2Ip L3BpeGVsX3JhdGlvX3RvO2Jhc2U9bWF4KDAuMCxiYXNlKTtoZWlnaHQ9bWF4KDAuMCxoZWln aHQpO2Zsb2F0IHQ9bW9kKG5vcm1hbC54LDIuMCk7ZmxvYXQgej10ID4gMC4wID8gaGVpZ2h0 IDogYmFzZTtnbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KGFfcG9zLHosMSk7dmVjMiBwb3M9 bm9ybWFsLng9PTEuMCAmJiBub3JtYWwueT09MC4wICYmIG5vcm1hbC56PT0xNjM4NC4wXG4/ IGFfcG9zXG46IHZlYzIoZWRnZWRpc3RhbmNlLHoqdV9oZWlnaHRfZmFjdG9yKTt2X3Bvc19h PWdldF9wYXR0ZXJuX3Bvcyh1X3BpeGVsX2Nvb3JkX3VwcGVyLHVfcGl4ZWxfY29vcmRfbG93 ZXIsZnJvbVNjYWxlKmRpc3BsYXlfc2l6ZV9hLHRpbGVSYXRpbyxwb3MpO3ZfcG9zX2I9Z2V0 X3BhdHRlcm5fcG9zKHVfcGl4ZWxfY29vcmRfdXBwZXIsdV9waXhlbF9jb29yZF9sb3dlcix0 b1NjYWxlKmRpc3BsYXlfc2l6ZV9iLHRpbGVSYXRpbyxwb3MpO3ZfbGlnaHRpbmc9dmVjNCgw LjAsMC4wLDAuMCwxLjApO2Zsb2F0IGRpcmVjdGlvbmFsPWNsYW1wKGRvdChub3JtYWwvMTYz ODMuMCx1X2xpZ2h0cG9zKSwwLjAsMS4wKTtkaXJlY3Rpb25hbD1taXgoKDEuMC11X2xpZ2h0 aW50ZW5zaXR5KSxtYXgoKDAuNSt1X2xpZ2h0aW50ZW5zaXR5KSwxLjApLGRpcmVjdGlvbmFs KTtpZiAobm9ybWFsLnkgIT0wLjApIHtkaXJlY3Rpb25hbCo9KCgxLjAtdV92ZXJ0aWNhbF9n cmFkaWVudCkrKHVfdmVydGljYWxfZ3JhZGllbnQqY2xhbXAoKHQrYmFzZSkqcG93KGhlaWdo dC8xNTAuMCwwLjUpLG1peCgwLjcsMC45OCwxLjAtdV9saWdodGludGVuc2l0eSksMS4wKSkp O312X2xpZ2h0aW5nLnJnYis9Y2xhbXAoZGlyZWN0aW9uYWwqdV9saWdodGNvbG9yLG1peCh2 ZWMzKDAuMCksdmVjMygwLjMpLDEuMC11X2xpZ2h0Y29sb3IpLHZlYzMoMS4wKSk7dl9saWdo dGluZyo9dV9vcGFjaXR5O30iKSxscj15cigiI2lmZGVmIEdMX0VTXG5wcmVjaXNpb24gaGln aHAgZmxvYXQ7XG4jZW5kaWZcbnVuaWZvcm0gc2FtcGxlcjJEIHVfaW1hZ2U7dmFyeWluZyB2 ZWMyIHZfcG9zO3VuaWZvcm0gdmVjMiB1X2RpbWVuc2lvbjt1bmlmb3JtIGZsb2F0IHVfem9v bTt1bmlmb3JtIGZsb2F0IHVfbWF4em9vbTt1bmlmb3JtIHZlYzQgdV91bnBhY2s7ZmxvYXQg Z2V0RWxldmF0aW9uKHZlYzIgY29vcmQsZmxvYXQgYmlhcykge3ZlYzQgZGF0YT10ZXh0dXJl MkQodV9pbWFnZSxjb29yZCkqMjU1LjA7ZGF0YS5hPS0xLjA7cmV0dXJuIGRvdChkYXRhLHVf dW5wYWNrKS80LjA7fXZvaWQgbWFpbigpIHt2ZWMyIGVwc2lsb249MS4wL3VfZGltZW5zaW9u O2Zsb2F0IGE9Z2V0RWxldmF0aW9uKHZfcG9zK3ZlYzIoLWVwc2lsb24ueCwtZXBzaWxvbi55 KSwwLjApO2Zsb2F0IGI9Z2V0RWxldmF0aW9uKHZfcG9zK3ZlYzIoMCwtZXBzaWxvbi55KSww LjApO2Zsb2F0IGM9Z2V0RWxldmF0aW9uKHZfcG9zK3ZlYzIoZXBzaWxvbi54LC1lcHNpbG9u LnkpLDAuMCk7ZmxvYXQgZD1nZXRFbGV2YXRpb24odl9wb3MrdmVjMigtZXBzaWxvbi54LDAp LDAuMCk7ZmxvYXQgZT1nZXRFbGV2YXRpb24odl9wb3MsMC4wKTtmbG9hdCBmPWdldEVsZXZh dGlvbih2X3Bvcyt2ZWMyKGVwc2lsb24ueCwwKSwwLjApO2Zsb2F0IGc9Z2V0RWxldmF0aW9u KHZfcG9zK3ZlYzIoLWVwc2lsb24ueCxlcHNpbG9uLnkpLDAuMCk7ZmxvYXQgaD1nZXRFbGV2 YXRpb24odl9wb3MrdmVjMigwLGVwc2lsb24ueSksMC4wKTtmbG9hdCBpPWdldEVsZXZhdGlv bih2X3Bvcyt2ZWMyKGVwc2lsb24ueCxlcHNpbG9uLnkpLDAuMCk7ZmxvYXQgZXhhZ2dlcmF0 aW9uPXVfem9vbSA8IDIuMCA/IDAuNCA6IHVfem9vbSA8IDQuNSA/IDAuMzUgOiAwLjM7dmVj MiBkZXJpdj12ZWMyKChjK2YrZitpKS0oYStkK2QrZyksKGcraCtoK2kpLShhK2IrYitjKSkv IHBvdygyLjAsKHVfem9vbS11X21heHpvb20pKmV4YWdnZXJhdGlvbisxOS4yNTYyLXVfem9v bSk7Z2xfRnJhZ0NvbG9yPWNsYW1wKHZlYzQoZGVyaXYueC8yLjArMC41LGRlcml2LnkvMi4w KzAuNSwxLjAsMS4wKSwwLjAsMS4wKTtcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1Jcbmds X0ZyYWdDb2xvcj12ZWM0KDEuMCk7XG4jZW5kaWZcbn0iLCJ1bmlmb3JtIG1hdDQgdV9tYXRy aXg7dW5pZm9ybSB2ZWMyIHVfZGltZW5zaW9uO2F0dHJpYnV0ZSB2ZWMyIGFfcG9zO2F0dHJp YnV0ZSB2ZWMyIGFfdGV4dHVyZV9wb3M7dmFyeWluZyB2ZWMyIHZfcG9zO3ZvaWQgbWFpbigp IHtnbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KGFfcG9zLDAsMSk7aGlnaHAgdmVjMiBlcHNp bG9uPTEuMC91X2RpbWVuc2lvbjtmbG9hdCBzY2FsZT0odV9kaW1lbnNpb24ueC0yLjApL3Vf ZGltZW5zaW9uLng7dl9wb3M9KGFfdGV4dHVyZV9wb3MvODE5Mi4wKSpzY2FsZStlcHNpbG9u O30iKSxjcj15cigidW5pZm9ybSBzYW1wbGVyMkQgdV9pbWFnZTt2YXJ5aW5nIHZlYzIgdl9w b3M7dW5pZm9ybSB2ZWMyIHVfbGF0cmFuZ2U7dW5pZm9ybSB2ZWMyIHVfbGlnaHQ7dW5pZm9y bSB2ZWM0IHVfc2hhZG93O3VuaWZvcm0gdmVjNCB1X2hpZ2hsaWdodDt1bmlmb3JtIHZlYzQg dV9hY2NlbnQ7XG4jZGVmaW5lIFBJIDMuMTQxNTkyNjUzNTg5NzkzXG52b2lkIG1haW4oKSB7 dmVjNCBwaXhlbD10ZXh0dXJlMkQodV9pbWFnZSx2X3Bvcyk7dmVjMiBkZXJpdj0oKHBpeGVs LnJnKjIuMCktMS4wKTtmbG9hdCBzY2FsZUZhY3Rvcj1jb3MocmFkaWFucygodV9sYXRyYW5n ZVswXS11X2xhdHJhbmdlWzFdKSooMS4wLXZfcG9zLnkpK3VfbGF0cmFuZ2VbMV0pKTtmbG9h dCBzbG9wZT1hdGFuKDEuMjUqbGVuZ3RoKGRlcml2KS9zY2FsZUZhY3Rvcik7ZmxvYXQgYXNw ZWN0PWRlcml2LnggIT0wLjAgPyBhdGFuKGRlcml2LnksLWRlcml2LngpIDogUEkvMi4wKihk ZXJpdi55ID4gMC4wID8gMS4wIDotMS4wKTtmbG9hdCBpbnRlbnNpdHk9dV9saWdodC54O2Zs b2F0IGF6aW11dGg9dV9saWdodC55K1BJO2Zsb2F0IGJhc2U9MS44NzUtaW50ZW5zaXR5KjEu NzU7ZmxvYXQgbWF4VmFsdWU9MC41KlBJO2Zsb2F0IHNjYWxlZFNsb3BlPWludGVuc2l0eSAh PTAuNSA/ICgocG93KGJhc2Usc2xvcGUpLTEuMCkvKHBvdyhiYXNlLG1heFZhbHVlKS0xLjAp KSptYXhWYWx1ZSA6IHNsb3BlO2Zsb2F0IGFjY2VudD1jb3Moc2NhbGVkU2xvcGUpO3ZlYzQg YWNjZW50X2NvbG9yPSgxLjAtYWNjZW50KSp1X2FjY2VudCpjbGFtcChpbnRlbnNpdHkqMi4w LDAuMCwxLjApO2Zsb2F0IHNoYWRlPWFicyhtb2QoKGFzcGVjdCthemltdXRoKS9QSSswLjUs Mi4wKS0xLjApO3ZlYzQgc2hhZGVfY29sb3I9bWl4KHVfc2hhZG93LHVfaGlnaGxpZ2h0LHNo YWRlKSpzaW4oc2NhbGVkU2xvcGUpKmNsYW1wKGludGVuc2l0eSoyLjAsMC4wLDEuMCk7Z2xf RnJhZ0NvbG9yPWFjY2VudF9jb2xvciooMS4wLXNoYWRlX2NvbG9yLmEpK3NoYWRlX2NvbG9y O1xuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxuZ2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTtc biNlbmRpZlxufSIsInVuaWZvcm0gbWF0NCB1X21hdHJpeDthdHRyaWJ1dGUgdmVjMiBhX3Bv czthdHRyaWJ1dGUgdmVjMiBhX3RleHR1cmVfcG9zO3ZhcnlpbmcgdmVjMiB2X3Bvczt2b2lk IG1haW4oKSB7Z2xfUG9zaXRpb249dV9tYXRyaXgqdmVjNChhX3BvcywwLDEpO3ZfcG9zPWFf dGV4dHVyZV9wb3MvODE5Mi4wO30iKSx1cj15cigidW5pZm9ybSBsb3dwIGZsb2F0IHVfZGV2 aWNlX3BpeGVsX3JhdGlvO3ZhcnlpbmcgdmVjMiB2X3dpZHRoMjt2YXJ5aW5nIHZlYzIgdl9u b3JtYWw7dmFyeWluZyBmbG9hdCB2X2dhbW1hX3NjYWxlO1xuI3ByYWdtYSBtYXBib3g6IGRl ZmluZSBoaWdocCB2ZWM0IGNvbG9yXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxv YXQgYmx1clxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcbnZv aWQgbWFpbigpIHtcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgY29s b3JcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgYmx1clxuI3ByYWdt YSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XG5mbG9hdCBkaXN0PWxl bmd0aCh2X25vcm1hbCkqdl93aWR0aDIucztmbG9hdCBibHVyMj0oYmx1cisxLjAvdV9kZXZp Y2VfcGl4ZWxfcmF0aW8pKnZfZ2FtbWFfc2NhbGU7ZmxvYXQgYWxwaGE9Y2xhbXAobWluKGRp c3QtKHZfd2lkdGgyLnQtYmx1cjIpLHZfd2lkdGgyLnMtZGlzdCkvYmx1cjIsMC4wLDEuMCk7 Z2xfRnJhZ0NvbG9yPWNvbG9yKihhbHBoYSpvcGFjaXR5KTtcbiNpZmRlZiBPVkVSRFJBV19J TlNQRUNUT1JcbmdsX0ZyYWdDb2xvcj12ZWM0KDEuMCk7XG4jZW5kaWZcbn0iLCJcbiNkZWZp bmUgc2NhbGUgMC4wMTU4NzMwMTZcbmF0dHJpYnV0ZSB2ZWMyIGFfcG9zX25vcm1hbDthdHRy aWJ1dGUgdmVjNCBhX2RhdGE7dW5pZm9ybSBtYXQ0IHVfbWF0cml4O3VuaWZvcm0gbWVkaXVt cCBmbG9hdCB1X3JhdGlvO3VuaWZvcm0gdmVjMiB1X3VuaXRzX3RvX3BpeGVsczt1bmlmb3Jt IGxvd3AgZmxvYXQgdV9kZXZpY2VfcGl4ZWxfcmF0aW87dmFyeWluZyB2ZWMyIHZfbm9ybWFs O3ZhcnlpbmcgdmVjMiB2X3dpZHRoMjt2YXJ5aW5nIGZsb2F0IHZfZ2FtbWFfc2NhbGU7dmFy eWluZyBoaWdocCBmbG9hdCB2X2xpbmVzb2ZhcjtcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUg aGlnaHAgdmVjNCBjb2xvclxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGJs dXJcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XG4jcHJhZ21h IG1hcGJveDogZGVmaW5lIG1lZGl1bXAgZmxvYXQgZ2Fwd2lkdGhcbiNwcmFnbWEgbWFwYm94 OiBkZWZpbmUgbG93cCBmbG9hdCBvZmZzZXRcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbWVk aXVtcCBmbG9hdCB3aWR0aFxudm9pZCBtYWluKCkge1xuI3ByYWdtYSBtYXBib3g6IGluaXRp YWxpemUgaGlnaHAgdmVjNCBjb2xvclxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93 cCBmbG9hdCBibHVyXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9w YWNpdHlcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgZmxvYXQgZ2Fwd2lk dGhcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb2Zmc2V0XG4jcHJh Z21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIGZsb2F0IHdpZHRoXG5mbG9hdCBBTlRJ QUxJQVNJTkc9MS4wL3VfZGV2aWNlX3BpeGVsX3JhdGlvLzIuMDt2ZWMyIGFfZXh0cnVkZT1h X2RhdGEueHktMTI4LjA7ZmxvYXQgYV9kaXJlY3Rpb249bW9kKGFfZGF0YS56LDQuMCktMS4w O3ZfbGluZXNvZmFyPShmbG9vcihhX2RhdGEuei80LjApK2FfZGF0YS53KjY0LjApKjIuMDt2 ZWMyIHBvcz1mbG9vcihhX3Bvc19ub3JtYWwqMC41KTttZWRpdW1wIHZlYzIgbm9ybWFsPWFf cG9zX25vcm1hbC0yLjAqcG9zO25vcm1hbC55PW5vcm1hbC55KjIuMC0xLjA7dl9ub3JtYWw9 bm9ybWFsO2dhcHdpZHRoPWdhcHdpZHRoLzIuMDtmbG9hdCBoYWxmd2lkdGg9d2lkdGgvMi4w O29mZnNldD0tMS4wKm9mZnNldDtmbG9hdCBpbnNldD1nYXB3aWR0aCsoZ2Fwd2lkdGggPiAw LjAgPyBBTlRJQUxJQVNJTkcgOiAwLjApO2Zsb2F0IG91dHNldD1nYXB3aWR0aCtoYWxmd2lk dGgqKGdhcHdpZHRoID4gMC4wID8gMi4wIDogMS4wKSsoaGFsZndpZHRoPT0wLjAgPyAwLjAg OiBBTlRJQUxJQVNJTkcpO21lZGl1bXAgdmVjMiBkaXN0PW91dHNldCphX2V4dHJ1ZGUqc2Nh bGU7bWVkaXVtcCBmbG9hdCB1PTAuNSphX2RpcmVjdGlvbjttZWRpdW1wIGZsb2F0IHQ9MS4w LWFicyh1KTttZWRpdW1wIHZlYzIgb2Zmc2V0Mj1vZmZzZXQqYV9leHRydWRlKnNjYWxlKm5v cm1hbC55Km1hdDIodCwtdSx1LHQpO3ZlYzQgcHJvamVjdGVkX2V4dHJ1ZGU9dV9tYXRyaXgq dmVjNChkaXN0L3VfcmF0aW8sMC4wLDAuMCk7Z2xfUG9zaXRpb249dV9tYXRyaXgqdmVjNChw b3Mrb2Zmc2V0Mi91X3JhdGlvLDAuMCwxLjApK3Byb2plY3RlZF9leHRydWRlO2Zsb2F0IGV4 dHJ1ZGVfbGVuZ3RoX3dpdGhvdXRfcGVyc3BlY3RpdmU9bGVuZ3RoKGRpc3QpO2Zsb2F0IGV4 dHJ1ZGVfbGVuZ3RoX3dpdGhfcGVyc3BlY3RpdmU9bGVuZ3RoKHByb2plY3RlZF9leHRydWRl Lnh5L2dsX1Bvc2l0aW9uLncqdV91bml0c190b19waXhlbHMpO3ZfZ2FtbWFfc2NhbGU9ZXh0 cnVkZV9sZW5ndGhfd2l0aG91dF9wZXJzcGVjdGl2ZS9leHRydWRlX2xlbmd0aF93aXRoX3Bl cnNwZWN0aXZlO3Zfd2lkdGgyPXZlYzIob3V0c2V0LGluc2V0KTt9IiksZnI9eXIoInVuaWZv cm0gbG93cCBmbG9hdCB1X2RldmljZV9waXhlbF9yYXRpbzt1bmlmb3JtIHNhbXBsZXIyRCB1 X2ltYWdlO3ZhcnlpbmcgdmVjMiB2X3dpZHRoMjt2YXJ5aW5nIHZlYzIgdl9ub3JtYWw7dmFy eWluZyBmbG9hdCB2X2dhbW1hX3NjYWxlO3ZhcnlpbmcgaGlnaHAgZmxvYXQgdl9saW5lcHJv Z3Jlc3M7XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgYmx1clxuI3ByYWdt YSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcbnZvaWQgbWFpbigpIHtcbiNw cmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgYmx1clxuI3ByYWdtYSBtYXBi b3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvcGFjaXR5XG5mbG9hdCBkaXN0PWxlbmd0aCh2 X25vcm1hbCkqdl93aWR0aDIucztmbG9hdCBibHVyMj0oYmx1cisxLjAvdV9kZXZpY2VfcGl4 ZWxfcmF0aW8pKnZfZ2FtbWFfc2NhbGU7ZmxvYXQgYWxwaGE9Y2xhbXAobWluKGRpc3QtKHZf d2lkdGgyLnQtYmx1cjIpLHZfd2lkdGgyLnMtZGlzdCkvYmx1cjIsMC4wLDEuMCk7dmVjNCBj b2xvcj10ZXh0dXJlMkQodV9pbWFnZSx2ZWMyKHZfbGluZXByb2dyZXNzLDAuNSkpO2dsX0Zy YWdDb2xvcj1jb2xvciooYWxwaGEqb3BhY2l0eSk7XG4jaWZkZWYgT1ZFUkRSQVdfSU5TUEVD VE9SXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjApO1xuI2VuZGlmXG59IiwiXG4jZGVmaW5lIE1B WF9MSU5FX0RJU1RBTkNFIDMyNzY3LjBcbiNkZWZpbmUgc2NhbGUgMC4wMTU4NzMwMTZcbmF0 dHJpYnV0ZSB2ZWMyIGFfcG9zX25vcm1hbDthdHRyaWJ1dGUgdmVjNCBhX2RhdGE7dW5pZm9y bSBtYXQ0IHVfbWF0cml4O3VuaWZvcm0gbWVkaXVtcCBmbG9hdCB1X3JhdGlvO3VuaWZvcm0g bG93cCBmbG9hdCB1X2RldmljZV9waXhlbF9yYXRpbzt1bmlmb3JtIHZlYzIgdV91bml0c190 b19waXhlbHM7dmFyeWluZyB2ZWMyIHZfbm9ybWFsO3ZhcnlpbmcgdmVjMiB2X3dpZHRoMjt2 YXJ5aW5nIGZsb2F0IHZfZ2FtbWFfc2NhbGU7dmFyeWluZyBoaWdocCBmbG9hdCB2X2xpbmVw cm9ncmVzcztcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBibHVyXG4jcHJh Z21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6 IGRlZmluZSBtZWRpdW1wIGZsb2F0IGdhcHdpZHRoXG4jcHJhZ21hIG1hcGJveDogZGVmaW5l IGxvd3AgZmxvYXQgb2Zmc2V0XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIG1lZGl1bXAgZmxv YXQgd2lkdGhcbnZvaWQgbWFpbigpIHtcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxv d3AgZmxvYXQgYmx1clxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBv cGFjaXR5XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIGZsb2F0IGdhcHdp ZHRoXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9mZnNldFxuI3By YWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCBmbG9hdCB3aWR0aFxuZmxvYXQgQU5U SUFMSUFTSU5HPTEuMC91X2RldmljZV9waXhlbF9yYXRpby8yLjA7dmVjMiBhX2V4dHJ1ZGU9 YV9kYXRhLnh5LTEyOC4wO2Zsb2F0IGFfZGlyZWN0aW9uPW1vZChhX2RhdGEueiw0LjApLTEu MDt2X2xpbmVwcm9ncmVzcz0oZmxvb3IoYV9kYXRhLnovNC4wKSthX2RhdGEudyo2NC4wKSoy LjAvTUFYX0xJTkVfRElTVEFOQ0U7dmVjMiBwb3M9Zmxvb3IoYV9wb3Nfbm9ybWFsKjAuNSk7 bWVkaXVtcCB2ZWMyIG5vcm1hbD1hX3Bvc19ub3JtYWwtMi4wKnBvcztub3JtYWwueT1ub3Jt YWwueSoyLjAtMS4wO3Zfbm9ybWFsPW5vcm1hbDtnYXB3aWR0aD1nYXB3aWR0aC8yLjA7Zmxv YXQgaGFsZndpZHRoPXdpZHRoLzIuMDtvZmZzZXQ9LTEuMCpvZmZzZXQ7ZmxvYXQgaW5zZXQ9 Z2Fwd2lkdGgrKGdhcHdpZHRoID4gMC4wID8gQU5USUFMSUFTSU5HIDogMC4wKTtmbG9hdCBv dXRzZXQ9Z2Fwd2lkdGgraGFsZndpZHRoKihnYXB3aWR0aCA+IDAuMCA/IDIuMCA6IDEuMCkr KGhhbGZ3aWR0aD09MC4wID8gMC4wIDogQU5USUFMSUFTSU5HKTttZWRpdW1wIHZlYzIgZGlz dD1vdXRzZXQqYV9leHRydWRlKnNjYWxlO21lZGl1bXAgZmxvYXQgdT0wLjUqYV9kaXJlY3Rp b247bWVkaXVtcCBmbG9hdCB0PTEuMC1hYnModSk7bWVkaXVtcCB2ZWMyIG9mZnNldDI9b2Zm c2V0KmFfZXh0cnVkZSpzY2FsZSpub3JtYWwueSptYXQyKHQsLXUsdSx0KTt2ZWM0IHByb2pl Y3RlZF9leHRydWRlPXVfbWF0cml4KnZlYzQoZGlzdC91X3JhdGlvLDAuMCwwLjApO2dsX1Bv c2l0aW9uPXVfbWF0cml4KnZlYzQocG9zK29mZnNldDIvdV9yYXRpbywwLjAsMS4wKStwcm9q ZWN0ZWRfZXh0cnVkZTtmbG9hdCBleHRydWRlX2xlbmd0aF93aXRob3V0X3BlcnNwZWN0aXZl PWxlbmd0aChkaXN0KTtmbG9hdCBleHRydWRlX2xlbmd0aF93aXRoX3BlcnNwZWN0aXZlPWxl bmd0aChwcm9qZWN0ZWRfZXh0cnVkZS54eS9nbF9Qb3NpdGlvbi53KnVfdW5pdHNfdG9fcGl4 ZWxzKTt2X2dhbW1hX3NjYWxlPWV4dHJ1ZGVfbGVuZ3RoX3dpdGhvdXRfcGVyc3BlY3RpdmUv ZXh0cnVkZV9sZW5ndGhfd2l0aF9wZXJzcGVjdGl2ZTt2X3dpZHRoMj12ZWMyKG91dHNldCxp bnNldCk7fSIpLGhyPXlyKCJ1bmlmb3JtIGxvd3AgZmxvYXQgdV9kZXZpY2VfcGl4ZWxfcmF0 aW87dW5pZm9ybSB2ZWMyIHVfdGV4c2l6ZTt1bmlmb3JtIGZsb2F0IHVfZmFkZTt1bmlmb3Jt IG1lZGl1bXAgdmVjMyB1X3NjYWxlO3VuaWZvcm0gc2FtcGxlcjJEIHVfaW1hZ2U7dmFyeWlu ZyB2ZWMyIHZfbm9ybWFsO3ZhcnlpbmcgdmVjMiB2X3dpZHRoMjt2YXJ5aW5nIGZsb2F0IHZf bGluZXNvZmFyO3ZhcnlpbmcgZmxvYXQgdl9nYW1tYV9zY2FsZTt2YXJ5aW5nIGZsb2F0IHZf d2lkdGg7XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgdmVjNCBwYXR0ZXJuX2Zyb21c biNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCB2ZWM0IHBhdHRlcm5fdG9cbiNwcmFnbWEg bWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBwaXhlbF9yYXRpb19mcm9tXG4jcHJhZ21hIG1h cGJveDogZGVmaW5lIGxvd3AgZmxvYXQgcGl4ZWxfcmF0aW9fdG9cbiNwcmFnbWEgbWFwYm94 OiBkZWZpbmUgbG93cCBmbG9hdCBibHVyXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3Ag ZmxvYXQgb3BhY2l0eVxudm9pZCBtYWluKCkge1xuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxp emUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5fZnJvbVxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxp emUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5fdG9cbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXpl IGxvd3AgZmxvYXQgcGl4ZWxfcmF0aW9fZnJvbVxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxp emUgbG93cCBmbG9hdCBwaXhlbF9yYXRpb190b1xuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxp emUgbG93cCBmbG9hdCBibHVyXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZs b2F0IG9wYWNpdHlcbnZlYzIgcGF0dGVybl90bF9hPXBhdHRlcm5fZnJvbS54eTt2ZWMyIHBh dHRlcm5fYnJfYT1wYXR0ZXJuX2Zyb20uenc7dmVjMiBwYXR0ZXJuX3RsX2I9cGF0dGVybl90 by54eTt2ZWMyIHBhdHRlcm5fYnJfYj1wYXR0ZXJuX3RvLnp3O2Zsb2F0IHRpbGVab29tUmF0 aW89dV9zY2FsZS54O2Zsb2F0IGZyb21TY2FsZT11X3NjYWxlLnk7ZmxvYXQgdG9TY2FsZT11 X3NjYWxlLno7dmVjMiBkaXNwbGF5X3NpemVfYT0ocGF0dGVybl9icl9hLXBhdHRlcm5fdGxf YSkvcGl4ZWxfcmF0aW9fZnJvbTt2ZWMyIGRpc3BsYXlfc2l6ZV9iPShwYXR0ZXJuX2JyX2It cGF0dGVybl90bF9iKS9waXhlbF9yYXRpb190bzt2ZWMyIHBhdHRlcm5fc2l6ZV9hPXZlYzIo ZGlzcGxheV9zaXplX2EueCpmcm9tU2NhbGUvdGlsZVpvb21SYXRpbyxkaXNwbGF5X3NpemVf YS55KTt2ZWMyIHBhdHRlcm5fc2l6ZV9iPXZlYzIoZGlzcGxheV9zaXplX2IueCp0b1NjYWxl L3RpbGVab29tUmF0aW8sZGlzcGxheV9zaXplX2IueSk7ZmxvYXQgYXNwZWN0X2E9ZGlzcGxh eV9zaXplX2EueS92X3dpZHRoO2Zsb2F0IGFzcGVjdF9iPWRpc3BsYXlfc2l6ZV9iLnkvdl93 aWR0aDtmbG9hdCBkaXN0PWxlbmd0aCh2X25vcm1hbCkqdl93aWR0aDIucztmbG9hdCBibHVy Mj0oYmx1cisxLjAvdV9kZXZpY2VfcGl4ZWxfcmF0aW8pKnZfZ2FtbWFfc2NhbGU7ZmxvYXQg YWxwaGE9Y2xhbXAobWluKGRpc3QtKHZfd2lkdGgyLnQtYmx1cjIpLHZfd2lkdGgyLnMtZGlz dCkvYmx1cjIsMC4wLDEuMCk7ZmxvYXQgeF9hPW1vZCh2X2xpbmVzb2Zhci9wYXR0ZXJuX3Np emVfYS54KmFzcGVjdF9hLDEuMCk7ZmxvYXQgeF9iPW1vZCh2X2xpbmVzb2Zhci9wYXR0ZXJu X3NpemVfYi54KmFzcGVjdF9iLDEuMCk7ZmxvYXQgeT0wLjUqdl9ub3JtYWwueSswLjU7dmVj MiB0ZXhlbF9zaXplPTEuMC91X3RleHNpemU7dmVjMiBwb3NfYT1taXgocGF0dGVybl90bF9h KnRleGVsX3NpemUtdGV4ZWxfc2l6ZSxwYXR0ZXJuX2JyX2EqdGV4ZWxfc2l6ZSt0ZXhlbF9z aXplLHZlYzIoeF9hLHkpKTt2ZWMyIHBvc19iPW1peChwYXR0ZXJuX3RsX2IqdGV4ZWxfc2l6 ZS10ZXhlbF9zaXplLHBhdHRlcm5fYnJfYip0ZXhlbF9zaXplK3RleGVsX3NpemUsdmVjMih4 X2IseSkpO3ZlYzQgY29sb3I9bWl4KHRleHR1cmUyRCh1X2ltYWdlLHBvc19hKSx0ZXh0dXJl MkQodV9pbWFnZSxwb3NfYiksdV9mYWRlKTtnbF9GcmFnQ29sb3I9Y29sb3IqYWxwaGEqb3Bh Y2l0eTtcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcbmdsX0ZyYWdDb2xvcj12ZWM0KDEu MCk7XG4jZW5kaWZcbn0iLCJcbiNkZWZpbmUgc2NhbGUgMC4wMTU4NzMwMTZcbiNkZWZpbmUg TElORV9ESVNUQU5DRV9TQ0FMRSAyLjBcbmF0dHJpYnV0ZSB2ZWMyIGFfcG9zX25vcm1hbDth dHRyaWJ1dGUgdmVjNCBhX2RhdGE7dW5pZm9ybSBtYXQ0IHVfbWF0cml4O3VuaWZvcm0gdmVj MiB1X3VuaXRzX3RvX3BpeGVsczt1bmlmb3JtIG1lZGl1bXAgZmxvYXQgdV9yYXRpbzt1bmlm b3JtIGxvd3AgZmxvYXQgdV9kZXZpY2VfcGl4ZWxfcmF0aW87dmFyeWluZyB2ZWMyIHZfbm9y bWFsO3ZhcnlpbmcgdmVjMiB2X3dpZHRoMjt2YXJ5aW5nIGZsb2F0IHZfbGluZXNvZmFyO3Zh cnlpbmcgZmxvYXQgdl9nYW1tYV9zY2FsZTt2YXJ5aW5nIGZsb2F0IHZfd2lkdGg7XG4jcHJh Z21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgYmx1clxuI3ByYWdtYSBtYXBib3g6IGRl ZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBm bG9hdCBvZmZzZXRcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbWVkaXVtcCBmbG9hdCBnYXB3 aWR0aFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBtZWRpdW1wIGZsb2F0IHdpZHRoXG4jcHJh Z21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgZmxvb3J3aWR0aFxuI3ByYWdtYSBtYXBi b3g6IGRlZmluZSBsb3dwIHZlYzQgcGF0dGVybl9mcm9tXG4jcHJhZ21hIG1hcGJveDogZGVm aW5lIGxvd3AgdmVjNCBwYXR0ZXJuX3RvXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3Ag ZmxvYXQgcGl4ZWxfcmF0aW9fZnJvbVxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZs b2F0IHBpeGVsX3JhdGlvX3RvXG52b2lkIG1haW4oKSB7XG4jcHJhZ21hIG1hcGJveDogaW5p dGlhbGl6ZSBsb3dwIGZsb2F0IGJsdXJcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxv d3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9h dCBvZmZzZXRcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgZmxvYXQgZ2Fw d2lkdGhcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIG1lZGl1bXAgZmxvYXQgd2lkdGhc biNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgZmxvb3J3aWR0aFxuI3By YWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5fZnJvbVxuI3By YWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCB2ZWM0IHBhdHRlcm5fdG9cbiNwcmFn bWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgcGl4ZWxfcmF0aW9fZnJvbVxuI3By YWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBwaXhlbF9yYXRpb190b1xuZmxv YXQgQU5USUFMSUFTSU5HPTEuMC91X2RldmljZV9waXhlbF9yYXRpby8yLjA7dmVjMiBhX2V4 dHJ1ZGU9YV9kYXRhLnh5LTEyOC4wO2Zsb2F0IGFfZGlyZWN0aW9uPW1vZChhX2RhdGEueiw0 LjApLTEuMDtmbG9hdCBhX2xpbmVzb2Zhcj0oZmxvb3IoYV9kYXRhLnovNC4wKSthX2RhdGEu dyo2NC4wKSpMSU5FX0RJU1RBTkNFX1NDQUxFO3ZlYzIgcG9zPWZsb29yKGFfcG9zX25vcm1h bCowLjUpO21lZGl1bXAgdmVjMiBub3JtYWw9YV9wb3Nfbm9ybWFsLTIuMCpwb3M7bm9ybWFs Lnk9bm9ybWFsLnkqMi4wLTEuMDt2X25vcm1hbD1ub3JtYWw7Z2Fwd2lkdGg9Z2Fwd2lkdGgv Mi4wO2Zsb2F0IGhhbGZ3aWR0aD13aWR0aC8yLjA7b2Zmc2V0PS0xLjAqb2Zmc2V0O2Zsb2F0 IGluc2V0PWdhcHdpZHRoKyhnYXB3aWR0aCA+IDAuMCA/IEFOVElBTElBU0lORyA6IDAuMCk7 ZmxvYXQgb3V0c2V0PWdhcHdpZHRoK2hhbGZ3aWR0aCooZ2Fwd2lkdGggPiAwLjAgPyAyLjAg OiAxLjApKyhoYWxmd2lkdGg9PTAuMCA/IDAuMCA6IEFOVElBTElBU0lORyk7bWVkaXVtcCB2 ZWMyIGRpc3Q9b3V0c2V0KmFfZXh0cnVkZSpzY2FsZTttZWRpdW1wIGZsb2F0IHU9MC41KmFf ZGlyZWN0aW9uO21lZGl1bXAgZmxvYXQgdD0xLjAtYWJzKHUpO21lZGl1bXAgdmVjMiBvZmZz ZXQyPW9mZnNldCphX2V4dHJ1ZGUqc2NhbGUqbm9ybWFsLnkqbWF0Mih0LC11LHUsdCk7dmVj NCBwcm9qZWN0ZWRfZXh0cnVkZT11X21hdHJpeCp2ZWM0KGRpc3QvdV9yYXRpbywwLjAsMC4w KTtnbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KHBvcytvZmZzZXQyL3VfcmF0aW8sMC4wLDEu MCkrcHJvamVjdGVkX2V4dHJ1ZGU7ZmxvYXQgZXh0cnVkZV9sZW5ndGhfd2l0aG91dF9wZXJz cGVjdGl2ZT1sZW5ndGgoZGlzdCk7ZmxvYXQgZXh0cnVkZV9sZW5ndGhfd2l0aF9wZXJzcGVj dGl2ZT1sZW5ndGgocHJvamVjdGVkX2V4dHJ1ZGUueHkvZ2xfUG9zaXRpb24udyp1X3VuaXRz X3RvX3BpeGVscyk7dl9nYW1tYV9zY2FsZT1leHRydWRlX2xlbmd0aF93aXRob3V0X3BlcnNw ZWN0aXZlL2V4dHJ1ZGVfbGVuZ3RoX3dpdGhfcGVyc3BlY3RpdmU7dl9saW5lc29mYXI9YV9s aW5lc29mYXI7dl93aWR0aDI9dmVjMihvdXRzZXQsaW5zZXQpO3Zfd2lkdGg9Zmxvb3J3aWR0 aDt9IikscHI9eXIoInVuaWZvcm0gbG93cCBmbG9hdCB1X2RldmljZV9waXhlbF9yYXRpbzt1 bmlmb3JtIHNhbXBsZXIyRCB1X2ltYWdlO3VuaWZvcm0gZmxvYXQgdV9zZGZnYW1tYTt1bmlm b3JtIGZsb2F0IHVfbWl4O3ZhcnlpbmcgdmVjMiB2X25vcm1hbDt2YXJ5aW5nIHZlYzIgdl93 aWR0aDI7dmFyeWluZyB2ZWMyIHZfdGV4X2E7dmFyeWluZyB2ZWMyIHZfdGV4X2I7dmFyeWlu ZyBmbG9hdCB2X2dhbW1hX3NjYWxlO1xuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2 ZWM0IGNvbG9yXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgYmx1clxuI3By YWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcbiNwcmFnbWEgbWFwYm94 OiBkZWZpbmUgbWVkaXVtcCBmbG9hdCB3aWR0aFxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBs b3dwIGZsb2F0IGZsb29yd2lkdGhcbnZvaWQgbWFpbigpIHtcbiNwcmFnbWEgbWFwYm94OiBp bml0aWFsaXplIGhpZ2hwIHZlYzQgY29sb3JcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXpl IGxvd3AgZmxvYXQgYmx1clxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9h dCBvcGFjaXR5XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBtZWRpdW1wIGZsb2F0IHdp ZHRoXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGZsb29yd2lkdGhc bmZsb2F0IGRpc3Q9bGVuZ3RoKHZfbm9ybWFsKSp2X3dpZHRoMi5zO2Zsb2F0IGJsdXIyPShi bHVyKzEuMC91X2RldmljZV9waXhlbF9yYXRpbykqdl9nYW1tYV9zY2FsZTtmbG9hdCBhbHBo YT1jbGFtcChtaW4oZGlzdC0odl93aWR0aDIudC1ibHVyMiksdl93aWR0aDIucy1kaXN0KS9i bHVyMiwwLjAsMS4wKTtmbG9hdCBzZGZkaXN0X2E9dGV4dHVyZTJEKHVfaW1hZ2Usdl90ZXhf YSkuYTtmbG9hdCBzZGZkaXN0X2I9dGV4dHVyZTJEKHVfaW1hZ2Usdl90ZXhfYikuYTtmbG9h dCBzZGZkaXN0PW1peChzZGZkaXN0X2Esc2RmZGlzdF9iLHVfbWl4KTthbHBoYSo9c21vb3Ro c3RlcCgwLjUtdV9zZGZnYW1tYS9mbG9vcndpZHRoLDAuNSt1X3NkZmdhbW1hL2Zsb29yd2lk dGgsc2RmZGlzdCk7Z2xfRnJhZ0NvbG9yPWNvbG9yKihhbHBoYSpvcGFjaXR5KTtcbiNpZmRl ZiBPVkVSRFJBV19JTlNQRUNUT1JcbmdsX0ZyYWdDb2xvcj12ZWM0KDEuMCk7XG4jZW5kaWZc bn0iLCJcbiNkZWZpbmUgc2NhbGUgMC4wMTU4NzMwMTZcbiNkZWZpbmUgTElORV9ESVNUQU5D RV9TQ0FMRSAyLjBcbmF0dHJpYnV0ZSB2ZWMyIGFfcG9zX25vcm1hbDthdHRyaWJ1dGUgdmVj NCBhX2RhdGE7dW5pZm9ybSBtYXQ0IHVfbWF0cml4O3VuaWZvcm0gbWVkaXVtcCBmbG9hdCB1 X3JhdGlvO3VuaWZvcm0gbG93cCBmbG9hdCB1X2RldmljZV9waXhlbF9yYXRpbzt1bmlmb3Jt IHZlYzIgdV9wYXR0ZXJuc2NhbGVfYTt1bmlmb3JtIGZsb2F0IHVfdGV4X3lfYTt1bmlmb3Jt IHZlYzIgdV9wYXR0ZXJuc2NhbGVfYjt1bmlmb3JtIGZsb2F0IHVfdGV4X3lfYjt1bmlmb3Jt IHZlYzIgdV91bml0c190b19waXhlbHM7dmFyeWluZyB2ZWMyIHZfbm9ybWFsO3Zhcnlpbmcg dmVjMiB2X3dpZHRoMjt2YXJ5aW5nIHZlYzIgdl90ZXhfYTt2YXJ5aW5nIHZlYzIgdl90ZXhf Yjt2YXJ5aW5nIGZsb2F0IHZfZ2FtbWFfc2NhbGU7XG4jcHJhZ21hIG1hcGJveDogZGVmaW5l IGhpZ2hwIHZlYzQgY29sb3JcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBi bHVyXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdt YSBtYXBib3g6IGRlZmluZSBtZWRpdW1wIGZsb2F0IGdhcHdpZHRoXG4jcHJhZ21hIG1hcGJv eDogZGVmaW5lIGxvd3AgZmxvYXQgb2Zmc2V0XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIG1l ZGl1bXAgZmxvYXQgd2lkdGhcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBm bG9vcndpZHRoXG52b2lkIG1haW4oKSB7XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBo aWdocCB2ZWM0IGNvbG9yXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0 IGJsdXJcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxu I3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbWVkaXVtcCBmbG9hdCBnYXB3aWR0aFxuI3By YWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBvZmZzZXRcbiNwcmFnbWEgbWFw Ym94OiBpbml0aWFsaXplIG1lZGl1bXAgZmxvYXQgd2lkdGhcbiNwcmFnbWEgbWFwYm94OiBp bml0aWFsaXplIGxvd3AgZmxvYXQgZmxvb3J3aWR0aFxuZmxvYXQgQU5USUFMSUFTSU5HPTEu MC91X2RldmljZV9waXhlbF9yYXRpby8yLjA7dmVjMiBhX2V4dHJ1ZGU9YV9kYXRhLnh5LTEy OC4wO2Zsb2F0IGFfZGlyZWN0aW9uPW1vZChhX2RhdGEueiw0LjApLTEuMDtmbG9hdCBhX2xp bmVzb2Zhcj0oZmxvb3IoYV9kYXRhLnovNC4wKSthX2RhdGEudyo2NC4wKSpMSU5FX0RJU1RB TkNFX1NDQUxFO3ZlYzIgcG9zPWZsb29yKGFfcG9zX25vcm1hbCowLjUpO21lZGl1bXAgdmVj MiBub3JtYWw9YV9wb3Nfbm9ybWFsLTIuMCpwb3M7bm9ybWFsLnk9bm9ybWFsLnkqMi4wLTEu MDt2X25vcm1hbD1ub3JtYWw7Z2Fwd2lkdGg9Z2Fwd2lkdGgvMi4wO2Zsb2F0IGhhbGZ3aWR0 aD13aWR0aC8yLjA7b2Zmc2V0PS0xLjAqb2Zmc2V0O2Zsb2F0IGluc2V0PWdhcHdpZHRoKyhn YXB3aWR0aCA+IDAuMCA/IEFOVElBTElBU0lORyA6IDAuMCk7ZmxvYXQgb3V0c2V0PWdhcHdp ZHRoK2hhbGZ3aWR0aCooZ2Fwd2lkdGggPiAwLjAgPyAyLjAgOiAxLjApKyhoYWxmd2lkdGg9 PTAuMCA/IDAuMCA6IEFOVElBTElBU0lORyk7bWVkaXVtcCB2ZWMyIGRpc3Q9b3V0c2V0KmFf ZXh0cnVkZSpzY2FsZTttZWRpdW1wIGZsb2F0IHU9MC41KmFfZGlyZWN0aW9uO21lZGl1bXAg ZmxvYXQgdD0xLjAtYWJzKHUpO21lZGl1bXAgdmVjMiBvZmZzZXQyPW9mZnNldCphX2V4dHJ1 ZGUqc2NhbGUqbm9ybWFsLnkqbWF0Mih0LC11LHUsdCk7dmVjNCBwcm9qZWN0ZWRfZXh0cnVk ZT11X21hdHJpeCp2ZWM0KGRpc3QvdV9yYXRpbywwLjAsMC4wKTtnbF9Qb3NpdGlvbj11X21h dHJpeCp2ZWM0KHBvcytvZmZzZXQyL3VfcmF0aW8sMC4wLDEuMCkrcHJvamVjdGVkX2V4dHJ1 ZGU7ZmxvYXQgZXh0cnVkZV9sZW5ndGhfd2l0aG91dF9wZXJzcGVjdGl2ZT1sZW5ndGgoZGlz dCk7ZmxvYXQgZXh0cnVkZV9sZW5ndGhfd2l0aF9wZXJzcGVjdGl2ZT1sZW5ndGgocHJvamVj dGVkX2V4dHJ1ZGUueHkvZ2xfUG9zaXRpb24udyp1X3VuaXRzX3RvX3BpeGVscyk7dl9nYW1t YV9zY2FsZT1leHRydWRlX2xlbmd0aF93aXRob3V0X3BlcnNwZWN0aXZlL2V4dHJ1ZGVfbGVu Z3RoX3dpdGhfcGVyc3BlY3RpdmU7dl90ZXhfYT12ZWMyKGFfbGluZXNvZmFyKnVfcGF0dGVy bnNjYWxlX2EueC9mbG9vcndpZHRoLG5vcm1hbC55KnVfcGF0dGVybnNjYWxlX2EueSt1X3Rl eF95X2EpO3ZfdGV4X2I9dmVjMihhX2xpbmVzb2Zhcip1X3BhdHRlcm5zY2FsZV9iLngvZmxv b3J3aWR0aCxub3JtYWwueSp1X3BhdHRlcm5zY2FsZV9iLnkrdV90ZXhfeV9iKTt2X3dpZHRo Mj12ZWMyKG91dHNldCxpbnNldCk7fSIpLGRyPXlyKCJ1bmlmb3JtIGZsb2F0IHVfZmFkZV90 O3VuaWZvcm0gZmxvYXQgdV9vcGFjaXR5O3VuaWZvcm0gc2FtcGxlcjJEIHVfaW1hZ2UwO3Vu aWZvcm0gc2FtcGxlcjJEIHVfaW1hZ2UxO3ZhcnlpbmcgdmVjMiB2X3BvczA7dmFyeWluZyB2 ZWMyIHZfcG9zMTt1bmlmb3JtIGZsb2F0IHVfYnJpZ2h0bmVzc19sb3c7dW5pZm9ybSBmbG9h dCB1X2JyaWdodG5lc3NfaGlnaDt1bmlmb3JtIGZsb2F0IHVfc2F0dXJhdGlvbl9mYWN0b3I7 dW5pZm9ybSBmbG9hdCB1X2NvbnRyYXN0X2ZhY3Rvcjt1bmlmb3JtIHZlYzMgdV9zcGluX3dl aWdodHM7dm9pZCBtYWluKCkge3ZlYzQgY29sb3IwPXRleHR1cmUyRCh1X2ltYWdlMCx2X3Bv czApO3ZlYzQgY29sb3IxPXRleHR1cmUyRCh1X2ltYWdlMSx2X3BvczEpO2lmIChjb2xvcjAu YSA+IDAuMCkge2NvbG9yMC5yZ2I9Y29sb3IwLnJnYi9jb2xvcjAuYTt9aWYgKGNvbG9yMS5h ID4gMC4wKSB7Y29sb3IxLnJnYj1jb2xvcjEucmdiL2NvbG9yMS5hO312ZWM0IGNvbG9yPW1p eChjb2xvcjAsY29sb3IxLHVfZmFkZV90KTtjb2xvci5hKj11X29wYWNpdHk7dmVjMyByZ2I9 Y29sb3IucmdiO3JnYj12ZWMzKGRvdChyZ2IsdV9zcGluX3dlaWdodHMueHl6KSxkb3Qocmdi LHVfc3Bpbl93ZWlnaHRzLnp4eSksZG90KHJnYix1X3NwaW5fd2VpZ2h0cy55engpKTtmbG9h dCBhdmVyYWdlPShjb2xvci5yK2NvbG9yLmcrY29sb3IuYikvMy4wO3JnYis9KGF2ZXJhZ2Ut cmdiKSp1X3NhdHVyYXRpb25fZmFjdG9yO3JnYj0ocmdiLTAuNSkqdV9jb250cmFzdF9mYWN0 b3IrMC41O3ZlYzMgdV9oaWdoX3ZlYz12ZWMzKHVfYnJpZ2h0bmVzc19sb3csdV9icmlnaHRu ZXNzX2xvdyx1X2JyaWdodG5lc3NfbG93KTt2ZWMzIHVfbG93X3ZlYz12ZWMzKHVfYnJpZ2h0 bmVzc19oaWdoLHVfYnJpZ2h0bmVzc19oaWdoLHVfYnJpZ2h0bmVzc19oaWdoKTtnbF9GcmFn Q29sb3I9dmVjNChtaXgodV9oaWdoX3ZlYyx1X2xvd192ZWMscmdiKSpjb2xvci5hLGNvbG9y LmEpO1xuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxuZ2xfRnJhZ0NvbG9yPXZlYzQoMS4w KTtcbiNlbmRpZlxufSIsInVuaWZvcm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIHZlYzIgdV90 bF9wYXJlbnQ7dW5pZm9ybSBmbG9hdCB1X3NjYWxlX3BhcmVudDt1bmlmb3JtIGZsb2F0IHVf YnVmZmVyX3NjYWxlO2F0dHJpYnV0ZSB2ZWMyIGFfcG9zO2F0dHJpYnV0ZSB2ZWMyIGFfdGV4 dHVyZV9wb3M7dmFyeWluZyB2ZWMyIHZfcG9zMDt2YXJ5aW5nIHZlYzIgdl9wb3MxO3ZvaWQg bWFpbigpIHtnbF9Qb3NpdGlvbj11X21hdHJpeCp2ZWM0KGFfcG9zLDAsMSk7dl9wb3MwPSgo KGFfdGV4dHVyZV9wb3MvODE5Mi4wKS0wLjUpL3VfYnVmZmVyX3NjYWxlICkrMC41O3ZfcG9z MT0odl9wb3MwKnVfc2NhbGVfcGFyZW50KSt1X3RsX3BhcmVudDt9IiksbXI9eXIoInVuaWZv cm0gc2FtcGxlcjJEIHVfdGV4dHVyZTt2YXJ5aW5nIHZlYzIgdl90ZXg7dmFyeWluZyBmbG9h dCB2X2ZhZGVfb3BhY2l0eTtcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBv cGFjaXR5XG52b2lkIG1haW4oKSB7XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dw IGZsb2F0IG9wYWNpdHlcbmxvd3AgZmxvYXQgYWxwaGE9b3BhY2l0eSp2X2ZhZGVfb3BhY2l0 eTtnbF9GcmFnQ29sb3I9dGV4dHVyZTJEKHVfdGV4dHVyZSx2X3RleCkqYWxwaGE7XG4jaWZk ZWYgT1ZFUkRSQVdfSU5TUEVDVE9SXG5nbF9GcmFnQ29sb3I9dmVjNCgxLjApO1xuI2VuZGlm XG59IiwiY29uc3QgZmxvYXQgUEk9My4xNDE1OTI2NTM1ODk3OTM7YXR0cmlidXRlIHZlYzQg YV9wb3Nfb2Zmc2V0O2F0dHJpYnV0ZSB2ZWM0IGFfZGF0YTthdHRyaWJ1dGUgdmVjNCBhX3Bp eGVsb2Zmc2V0O2F0dHJpYnV0ZSB2ZWMzIGFfcHJvamVjdGVkX3BvczthdHRyaWJ1dGUgZmxv YXQgYV9mYWRlX29wYWNpdHk7dW5pZm9ybSBib29sIHVfaXNfc2l6ZV96b29tX2NvbnN0YW50 O3VuaWZvcm0gYm9vbCB1X2lzX3NpemVfZmVhdHVyZV9jb25zdGFudDt1bmlmb3JtIGhpZ2hw IGZsb2F0IHVfc2l6ZV90O3VuaWZvcm0gaGlnaHAgZmxvYXQgdV9zaXplO3VuaWZvcm0gaGln aHAgZmxvYXQgdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlO3VuaWZvcm0gaGlnaHAgZmxv YXQgdV9waXRjaDt1bmlmb3JtIGJvb2wgdV9yb3RhdGVfc3ltYm9sO3VuaWZvcm0gaGlnaHAg ZmxvYXQgdV9hc3BlY3RfcmF0aW87dW5pZm9ybSBmbG9hdCB1X2ZhZGVfY2hhbmdlO3VuaWZv cm0gbWF0NCB1X21hdHJpeDt1bmlmb3JtIG1hdDQgdV9sYWJlbF9wbGFuZV9tYXRyaXg7dW5p Zm9ybSBtYXQ0IHVfY29vcmRfbWF0cml4O3VuaWZvcm0gYm9vbCB1X2lzX3RleHQ7dW5pZm9y bSBib29sIHVfcGl0Y2hfd2l0aF9tYXA7dW5pZm9ybSB2ZWMyIHVfdGV4c2l6ZTt2YXJ5aW5n IHZlYzIgdl90ZXg7dmFyeWluZyBmbG9hdCB2X2ZhZGVfb3BhY2l0eTtcbiNwcmFnbWEgbWFw Ym94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFjaXR5XG52b2lkIG1haW4oKSB7XG4jcHJhZ21h IG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcbnZlYzIgYV9wb3M9YV9w b3Nfb2Zmc2V0Lnh5O3ZlYzIgYV9vZmZzZXQ9YV9wb3Nfb2Zmc2V0Lnp3O3ZlYzIgYV90ZXg9 YV9kYXRhLnh5O3ZlYzIgYV9zaXplPWFfZGF0YS56dztmbG9hdCBhX3NpemVfbWluPWZsb29y KGFfc2l6ZVswXSowLjUpO3ZlYzIgYV9weG9mZnNldD1hX3BpeGVsb2Zmc2V0Lnh5O3ZlYzIg YV9taW5Gb250U2NhbGU9YV9waXhlbG9mZnNldC56dy8yNTYuMDtoaWdocCBmbG9hdCBzZWdt ZW50X2FuZ2xlPS1hX3Byb2plY3RlZF9wb3NbMl07ZmxvYXQgc2l6ZTtpZiAoIXVfaXNfc2l6 ZV96b29tX2NvbnN0YW50ICYmICF1X2lzX3NpemVfZmVhdHVyZV9jb25zdGFudCkge3NpemU9 bWl4KGFfc2l6ZV9taW4sYV9zaXplWzFdLHVfc2l6ZV90KS8xMjguMDt9IGVsc2UgaWYgKHVf aXNfc2l6ZV96b29tX2NvbnN0YW50ICYmICF1X2lzX3NpemVfZmVhdHVyZV9jb25zdGFudCkg e3NpemU9YV9zaXplX21pbi8xMjguMDt9IGVsc2Uge3NpemU9dV9zaXplO312ZWM0IHByb2pl Y3RlZFBvaW50PXVfbWF0cml4KnZlYzQoYV9wb3MsMCwxKTtoaWdocCBmbG9hdCBjYW1lcmFf dG9fYW5jaG9yX2Rpc3RhbmNlPXByb2plY3RlZFBvaW50Lnc7aGlnaHAgZmxvYXQgZGlzdGFu Y2VfcmF0aW89dV9waXRjaF93aXRoX21hcCA/XG5jYW1lcmFfdG9fYW5jaG9yX2Rpc3RhbmNl L3VfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZSA6XG51X2NhbWVyYV90b19jZW50ZXJfZGlz dGFuY2UvY2FtZXJhX3RvX2FuY2hvcl9kaXN0YW5jZTtoaWdocCBmbG9hdCBwZXJzcGVjdGl2 ZV9yYXRpbz1jbGFtcCgwLjUrMC41KmRpc3RhbmNlX3JhdGlvLDAuMCw0LjApO3NpemUqPXBl cnNwZWN0aXZlX3JhdGlvO2Zsb2F0IGZvbnRTY2FsZT11X2lzX3RleHQgPyBzaXplLzI0LjAg OiBzaXplO2hpZ2hwIGZsb2F0IHN5bWJvbF9yb3RhdGlvbj0wLjA7aWYgKHVfcm90YXRlX3N5 bWJvbCkge3ZlYzQgb2Zmc2V0UHJvamVjdGVkUG9pbnQ9dV9tYXRyaXgqdmVjNChhX3Bvcyt2 ZWMyKDEsMCksMCwxKTt2ZWMyIGE9cHJvamVjdGVkUG9pbnQueHkvcHJvamVjdGVkUG9pbnQu dzt2ZWMyIGI9b2Zmc2V0UHJvamVjdGVkUG9pbnQueHkvb2Zmc2V0UHJvamVjdGVkUG9pbnQu dztzeW1ib2xfcm90YXRpb249YXRhbigoYi55LWEueSkvdV9hc3BlY3RfcmF0aW8sYi54LWEu eCk7fWhpZ2hwIGZsb2F0IGFuZ2xlX3Npbj1zaW4oc2VnbWVudF9hbmdsZStzeW1ib2xfcm90 YXRpb24pO2hpZ2hwIGZsb2F0IGFuZ2xlX2Nvcz1jb3Moc2VnbWVudF9hbmdsZStzeW1ib2xf cm90YXRpb24pO21hdDIgcm90YXRpb25fbWF0cml4PW1hdDIoYW5nbGVfY29zLC0xLjAqYW5n bGVfc2luLGFuZ2xlX3NpbixhbmdsZV9jb3MpO3ZlYzQgcHJvamVjdGVkX3Bvcz11X2xhYmVs X3BsYW5lX21hdHJpeCp2ZWM0KGFfcHJvamVjdGVkX3Bvcy54eSwwLjAsMS4wKTtnbF9Qb3Np dGlvbj11X2Nvb3JkX21hdHJpeCp2ZWM0KHByb2plY3RlZF9wb3MueHkvcHJvamVjdGVkX3Bv cy53K3JvdGF0aW9uX21hdHJpeCooYV9vZmZzZXQvMzIuMCptYXgoYV9taW5Gb250U2NhbGUs Zm9udFNjYWxlKSthX3B4b2Zmc2V0LzE2LjApLDAuMCwxLjApO3ZfdGV4PWFfdGV4L3VfdGV4 c2l6ZTt2ZWMyIGZhZGVfb3BhY2l0eT11bnBhY2tfb3BhY2l0eShhX2ZhZGVfb3BhY2l0eSk7 ZmxvYXQgZmFkZV9jaGFuZ2U9ZmFkZV9vcGFjaXR5WzFdID4gMC41ID8gdV9mYWRlX2NoYW5n ZSA6LXVfZmFkZV9jaGFuZ2U7dl9mYWRlX29wYWNpdHk9bWF4KDAuMCxtaW4oMS4wLGZhZGVf b3BhY2l0eVswXStmYWRlX2NoYW5nZSkpO30iKSxncj15cigiI2RlZmluZSBTREZfUFggOC4w XG51bmlmb3JtIGJvb2wgdV9pc19oYWxvO3VuaWZvcm0gc2FtcGxlcjJEIHVfdGV4dHVyZTt1 bmlmb3JtIGhpZ2hwIGZsb2F0IHVfZ2FtbWFfc2NhbGU7dW5pZm9ybSBsb3dwIGZsb2F0IHVf ZGV2aWNlX3BpeGVsX3JhdGlvO3VuaWZvcm0gYm9vbCB1X2lzX3RleHQ7dmFyeWluZyB2ZWMy IHZfZGF0YTA7dmFyeWluZyB2ZWMzIHZfZGF0YTE7XG4jcHJhZ21hIG1hcGJveDogZGVmaW5l IGhpZ2hwIHZlYzQgZmlsbF9jb2xvclxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2 ZWM0IGhhbG9fY29sb3JcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBvcGFj aXR5XG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgaGFsb193aWR0aFxuI3By YWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGhhbG9fYmx1clxudm9pZCBtYWluKCkg e1xuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBmaWxsX2NvbG9yXG4j cHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBoaWdocCB2ZWM0IGhhbG9fY29sb3JcbiNwcmFn bWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBi b3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBoYWxvX3dpZHRoXG4jcHJhZ21hIG1hcGJveDog aW5pdGlhbGl6ZSBsb3dwIGZsb2F0IGhhbG9fYmx1clxuZmxvYXQgRURHRV9HQU1NQT0wLjEw NS91X2RldmljZV9waXhlbF9yYXRpbzt2ZWMyIHRleD12X2RhdGEwLnh5O2Zsb2F0IGdhbW1h X3NjYWxlPXZfZGF0YTEueDtmbG9hdCBzaXplPXZfZGF0YTEueTtmbG9hdCBmYWRlX29wYWNp dHk9dl9kYXRhMVsyXTtmbG9hdCBmb250U2NhbGU9dV9pc190ZXh0ID8gc2l6ZS8yNC4wIDog c2l6ZTtsb3dwIHZlYzQgY29sb3I9ZmlsbF9jb2xvcjtoaWdocCBmbG9hdCBnYW1tYT1FREdF X0dBTU1BLyhmb250U2NhbGUqdV9nYW1tYV9zY2FsZSk7bG93cCBmbG9hdCBidWZmPSgyNTYu MC02NC4wKS8yNTYuMDtpZiAodV9pc19oYWxvKSB7Y29sb3I9aGFsb19jb2xvcjtnYW1tYT0o aGFsb19ibHVyKjEuMTkvU0RGX1BYK0VER0VfR0FNTUEpLyhmb250U2NhbGUqdV9nYW1tYV9z Y2FsZSk7YnVmZj0oNi4wLWhhbG9fd2lkdGgvZm9udFNjYWxlKS9TREZfUFg7fWxvd3AgZmxv YXQgZGlzdD10ZXh0dXJlMkQodV90ZXh0dXJlLHRleCkuYTtoaWdocCBmbG9hdCBnYW1tYV9z Y2FsZWQ9Z2FtbWEqZ2FtbWFfc2NhbGU7aGlnaHAgZmxvYXQgYWxwaGE9c21vb3Roc3RlcChi dWZmLWdhbW1hX3NjYWxlZCxidWZmK2dhbW1hX3NjYWxlZCxkaXN0KTtnbF9GcmFnQ29sb3I9 Y29sb3IqKGFscGhhKm9wYWNpdHkqZmFkZV9vcGFjaXR5KTtcbiNpZmRlZiBPVkVSRFJBV19J TlNQRUNUT1JcbmdsX0ZyYWdDb2xvcj12ZWM0KDEuMCk7XG4jZW5kaWZcbn0iLCJjb25zdCBm bG9hdCBQST0zLjE0MTU5MjY1MzU4OTc5MzthdHRyaWJ1dGUgdmVjNCBhX3Bvc19vZmZzZXQ7 YXR0cmlidXRlIHZlYzQgYV9kYXRhO2F0dHJpYnV0ZSB2ZWM0IGFfcGl4ZWxvZmZzZXQ7YXR0 cmlidXRlIHZlYzMgYV9wcm9qZWN0ZWRfcG9zO2F0dHJpYnV0ZSBmbG9hdCBhX2ZhZGVfb3Bh Y2l0eTt1bmlmb3JtIGJvb2wgdV9pc19zaXplX3pvb21fY29uc3RhbnQ7dW5pZm9ybSBib29s IHVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50O3VuaWZvcm0gaGlnaHAgZmxvYXQgdV9zaXpl X3Q7dW5pZm9ybSBoaWdocCBmbG9hdCB1X3NpemU7dW5pZm9ybSBtYXQ0IHVfbWF0cml4O3Vu aWZvcm0gbWF0NCB1X2xhYmVsX3BsYW5lX21hdHJpeDt1bmlmb3JtIG1hdDQgdV9jb29yZF9t YXRyaXg7dW5pZm9ybSBib29sIHVfaXNfdGV4dDt1bmlmb3JtIGJvb2wgdV9waXRjaF93aXRo X21hcDt1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfcGl0Y2g7dW5pZm9ybSBib29sIHVfcm90YXRl X3N5bWJvbDt1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfYXNwZWN0X3JhdGlvO3VuaWZvcm0gaGln aHAgZmxvYXQgdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlO3VuaWZvcm0gZmxvYXQgdV9m YWRlX2NoYW5nZTt1bmlmb3JtIHZlYzIgdV90ZXhzaXplO3ZhcnlpbmcgdmVjMiB2X2RhdGEw O3ZhcnlpbmcgdmVjMyB2X2RhdGExO1xuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBoaWdocCB2 ZWM0IGZpbGxfY29sb3JcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBoYWxv X2NvbG9yXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGxvd3AgZmxvYXQgb3BhY2l0eVxuI3By YWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IGhhbG9fd2lkdGhcbiNwcmFnbWEgbWFw Ym94OiBkZWZpbmUgbG93cCBmbG9hdCBoYWxvX2JsdXJcbnZvaWQgbWFpbigpIHtcbiNwcmFn bWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZlYzQgZmlsbF9jb2xvclxuI3ByYWdtYSBt YXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBoYWxvX2NvbG9yXG4jcHJhZ21hIG1hcGJv eDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNpdHlcbiNwcmFnbWEgbWFwYm94OiBpbml0 aWFsaXplIGxvd3AgZmxvYXQgaGFsb193aWR0aFxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxp emUgbG93cCBmbG9hdCBoYWxvX2JsdXJcbnZlYzIgYV9wb3M9YV9wb3Nfb2Zmc2V0Lnh5O3Zl YzIgYV9vZmZzZXQ9YV9wb3Nfb2Zmc2V0Lnp3O3ZlYzIgYV90ZXg9YV9kYXRhLnh5O3ZlYzIg YV9zaXplPWFfZGF0YS56dztmbG9hdCBhX3NpemVfbWluPWZsb29yKGFfc2l6ZVswXSowLjUp O3ZlYzIgYV9weG9mZnNldD1hX3BpeGVsb2Zmc2V0Lnh5O2hpZ2hwIGZsb2F0IHNlZ21lbnRf YW5nbGU9LWFfcHJvamVjdGVkX3Bvc1syXTtmbG9hdCBzaXplO2lmICghdV9pc19zaXplX3pv b21fY29uc3RhbnQgJiYgIXVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50KSB7c2l6ZT1taXgo YV9zaXplX21pbixhX3NpemVbMV0sdV9zaXplX3QpLzEyOC4wO30gZWxzZSBpZiAodV9pc19z aXplX3pvb21fY29uc3RhbnQgJiYgIXVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50KSB7c2l6 ZT1hX3NpemVfbWluLzEyOC4wO30gZWxzZSB7c2l6ZT11X3NpemU7fXZlYzQgcHJvamVjdGVk UG9pbnQ9dV9tYXRyaXgqdmVjNChhX3BvcywwLDEpO2hpZ2hwIGZsb2F0IGNhbWVyYV90b19h bmNob3JfZGlzdGFuY2U9cHJvamVjdGVkUG9pbnQudztoaWdocCBmbG9hdCBkaXN0YW5jZV9y YXRpbz11X3BpdGNoX3dpdGhfbWFwID9cbmNhbWVyYV90b19hbmNob3JfZGlzdGFuY2UvdV9j YW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlIDpcbnVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5j ZS9jYW1lcmFfdG9fYW5jaG9yX2Rpc3RhbmNlO2hpZ2hwIGZsb2F0IHBlcnNwZWN0aXZlX3Jh dGlvPWNsYW1wKDAuNSswLjUqZGlzdGFuY2VfcmF0aW8sMC4wLDQuMCk7c2l6ZSo9cGVyc3Bl Y3RpdmVfcmF0aW87ZmxvYXQgZm9udFNjYWxlPXVfaXNfdGV4dCA/IHNpemUvMjQuMCA6IHNp emU7aGlnaHAgZmxvYXQgc3ltYm9sX3JvdGF0aW9uPTAuMDtpZiAodV9yb3RhdGVfc3ltYm9s KSB7dmVjNCBvZmZzZXRQcm9qZWN0ZWRQb2ludD11X21hdHJpeCp2ZWM0KGFfcG9zK3ZlYzIo MSwwKSwwLDEpO3ZlYzIgYT1wcm9qZWN0ZWRQb2ludC54eS9wcm9qZWN0ZWRQb2ludC53O3Zl YzIgYj1vZmZzZXRQcm9qZWN0ZWRQb2ludC54eS9vZmZzZXRQcm9qZWN0ZWRQb2ludC53O3N5 bWJvbF9yb3RhdGlvbj1hdGFuKChiLnktYS55KS91X2FzcGVjdF9yYXRpbyxiLngtYS54KTt9 aGlnaHAgZmxvYXQgYW5nbGVfc2luPXNpbihzZWdtZW50X2FuZ2xlK3N5bWJvbF9yb3RhdGlv bik7aGlnaHAgZmxvYXQgYW5nbGVfY29zPWNvcyhzZWdtZW50X2FuZ2xlK3N5bWJvbF9yb3Rh dGlvbik7bWF0MiByb3RhdGlvbl9tYXRyaXg9bWF0MihhbmdsZV9jb3MsLTEuMCphbmdsZV9z aW4sYW5nbGVfc2luLGFuZ2xlX2Nvcyk7dmVjNCBwcm9qZWN0ZWRfcG9zPXVfbGFiZWxfcGxh bmVfbWF0cml4KnZlYzQoYV9wcm9qZWN0ZWRfcG9zLnh5LDAuMCwxLjApO2dsX1Bvc2l0aW9u PXVfY29vcmRfbWF0cml4KnZlYzQocHJvamVjdGVkX3Bvcy54eS9wcm9qZWN0ZWRfcG9zLncr cm90YXRpb25fbWF0cml4KihhX29mZnNldC8zMi4wKmZvbnRTY2FsZSthX3B4b2Zmc2V0KSww LjAsMS4wKTtmbG9hdCBnYW1tYV9zY2FsZT1nbF9Qb3NpdGlvbi53O3ZlYzIgZmFkZV9vcGFj aXR5PXVucGFja19vcGFjaXR5KGFfZmFkZV9vcGFjaXR5KTtmbG9hdCBmYWRlX2NoYW5nZT1m YWRlX29wYWNpdHlbMV0gPiAwLjUgPyB1X2ZhZGVfY2hhbmdlIDotdV9mYWRlX2NoYW5nZTtm bG9hdCBpbnRlcnBvbGF0ZWRfZmFkZV9vcGFjaXR5PW1heCgwLjAsbWluKDEuMCxmYWRlX29w YWNpdHlbMF0rZmFkZV9jaGFuZ2UpKTt2X2RhdGEwPWFfdGV4L3VfdGV4c2l6ZTt2X2RhdGEx PXZlYzMoZ2FtbWFfc2NhbGUsc2l6ZSxpbnRlcnBvbGF0ZWRfZmFkZV9vcGFjaXR5KTt9Iiks dnI9eXIoIiNkZWZpbmUgU0RGX1BYIDguMFxuI2RlZmluZSBTREYgMS4wXG4jZGVmaW5lIElD T04gMC4wXG51bmlmb3JtIGJvb2wgdV9pc19oYWxvO3VuaWZvcm0gc2FtcGxlcjJEIHVfdGV4 dHVyZTt1bmlmb3JtIHNhbXBsZXIyRCB1X3RleHR1cmVfaWNvbjt1bmlmb3JtIGhpZ2hwIGZs b2F0IHVfZ2FtbWFfc2NhbGU7dW5pZm9ybSBsb3dwIGZsb2F0IHVfZGV2aWNlX3BpeGVsX3Jh dGlvO3ZhcnlpbmcgdmVjNCB2X2RhdGEwO3ZhcnlpbmcgdmVjNCB2X2RhdGExO1xuI3ByYWdt YSBtYXBib3g6IGRlZmluZSBoaWdocCB2ZWM0IGZpbGxfY29sb3JcbiNwcmFnbWEgbWFwYm94 OiBkZWZpbmUgaGlnaHAgdmVjNCBoYWxvX2NvbG9yXG4jcHJhZ21hIG1hcGJveDogZGVmaW5l IGxvd3AgZmxvYXQgb3BhY2l0eVxuI3ByYWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0 IGhhbG9fd2lkdGhcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgbG93cCBmbG9hdCBoYWxvX2Js dXJcbnZvaWQgbWFpbigpIHtcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGhpZ2hwIHZl YzQgZmlsbF9jb2xvclxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgaGlnaHAgdmVjNCBo YWxvX2NvbG9yXG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dwIGZsb2F0IG9wYWNp dHlcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxvYXQgaGFsb193aWR0aFxu I3ByYWdtYSBtYXBib3g6IGluaXRpYWxpemUgbG93cCBmbG9hdCBoYWxvX2JsdXJcbmZsb2F0 IGZhZGVfb3BhY2l0eT12X2RhdGExWzJdO2lmICh2X2RhdGExLnc9PUlDT04pIHt2ZWMyIHRl eF9pY29uPXZfZGF0YTAuenc7bG93cCBmbG9hdCBhbHBoYT1vcGFjaXR5KmZhZGVfb3BhY2l0 eTtnbF9GcmFnQ29sb3I9dGV4dHVyZTJEKHVfdGV4dHVyZV9pY29uLHRleF9pY29uKSphbHBo YTtcbiNpZmRlZiBPVkVSRFJBV19JTlNQRUNUT1JcbmdsX0ZyYWdDb2xvcj12ZWM0KDEuMCk7 XG4jZW5kaWZcbnJldHVybjt9dmVjMiB0ZXg9dl9kYXRhMC54eTtmbG9hdCBFREdFX0dBTU1B PTAuMTA1L3VfZGV2aWNlX3BpeGVsX3JhdGlvO2Zsb2F0IGdhbW1hX3NjYWxlPXZfZGF0YTEu eDtmbG9hdCBzaXplPXZfZGF0YTEueTtmbG9hdCBmb250U2NhbGU9c2l6ZS8yNC4wO2xvd3Ag dmVjNCBjb2xvcj1maWxsX2NvbG9yO2hpZ2hwIGZsb2F0IGdhbW1hPUVER0VfR0FNTUEvKGZv bnRTY2FsZSp1X2dhbW1hX3NjYWxlKTtsb3dwIGZsb2F0IGJ1ZmY9KDI1Ni4wLTY0LjApLzI1 Ni4wO2lmICh1X2lzX2hhbG8pIHtjb2xvcj1oYWxvX2NvbG9yO2dhbW1hPShoYWxvX2JsdXIq MS4xOS9TREZfUFgrRURHRV9HQU1NQSkvKGZvbnRTY2FsZSp1X2dhbW1hX3NjYWxlKTtidWZm PSg2LjAtaGFsb193aWR0aC9mb250U2NhbGUpL1NERl9QWDt9bG93cCBmbG9hdCBkaXN0PXRl eHR1cmUyRCh1X3RleHR1cmUsdGV4KS5hO2hpZ2hwIGZsb2F0IGdhbW1hX3NjYWxlZD1nYW1t YSpnYW1tYV9zY2FsZTtoaWdocCBmbG9hdCBhbHBoYT1zbW9vdGhzdGVwKGJ1ZmYtZ2FtbWFf c2NhbGVkLGJ1ZmYrZ2FtbWFfc2NhbGVkLGRpc3QpO2dsX0ZyYWdDb2xvcj1jb2xvciooYWxw aGEqb3BhY2l0eSpmYWRlX29wYWNpdHkpO1xuI2lmZGVmIE9WRVJEUkFXX0lOU1BFQ1RPUlxu Z2xfRnJhZ0NvbG9yPXZlYzQoMS4wKTtcbiNlbmRpZlxufSIsImNvbnN0IGZsb2F0IFBJPTMu MTQxNTkyNjUzNTg5NzkzO2F0dHJpYnV0ZSB2ZWM0IGFfcG9zX29mZnNldDthdHRyaWJ1dGUg dmVjNCBhX2RhdGE7YXR0cmlidXRlIHZlYzMgYV9wcm9qZWN0ZWRfcG9zO2F0dHJpYnV0ZSBm bG9hdCBhX2ZhZGVfb3BhY2l0eTt1bmlmb3JtIGJvb2wgdV9pc19zaXplX3pvb21fY29uc3Rh bnQ7dW5pZm9ybSBib29sIHVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50O3VuaWZvcm0gaGln aHAgZmxvYXQgdV9zaXplX3Q7dW5pZm9ybSBoaWdocCBmbG9hdCB1X3NpemU7dW5pZm9ybSBt YXQ0IHVfbWF0cml4O3VuaWZvcm0gbWF0NCB1X2xhYmVsX3BsYW5lX21hdHJpeDt1bmlmb3Jt IG1hdDQgdV9jb29yZF9tYXRyaXg7dW5pZm9ybSBib29sIHVfaXNfdGV4dDt1bmlmb3JtIGJv b2wgdV9waXRjaF93aXRoX21hcDt1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfcGl0Y2g7dW5pZm9y bSBib29sIHVfcm90YXRlX3N5bWJvbDt1bmlmb3JtIGhpZ2hwIGZsb2F0IHVfYXNwZWN0X3Jh dGlvO3VuaWZvcm0gaGlnaHAgZmxvYXQgdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlO3Vu aWZvcm0gZmxvYXQgdV9mYWRlX2NoYW5nZTt1bmlmb3JtIHZlYzIgdV90ZXhzaXplO3VuaWZv cm0gdmVjMiB1X3RleHNpemVfaWNvbjt2YXJ5aW5nIHZlYzQgdl9kYXRhMDt2YXJ5aW5nIHZl YzQgdl9kYXRhMTtcbiNwcmFnbWEgbWFwYm94OiBkZWZpbmUgaGlnaHAgdmVjNCBmaWxsX2Nv bG9yXG4jcHJhZ21hIG1hcGJveDogZGVmaW5lIGhpZ2hwIHZlYzQgaGFsb19jb2xvclxuI3By YWdtYSBtYXBib3g6IGRlZmluZSBsb3dwIGZsb2F0IG9wYWNpdHlcbiNwcmFnbWEgbWFwYm94 OiBkZWZpbmUgbG93cCBmbG9hdCBoYWxvX3dpZHRoXG4jcHJhZ21hIG1hcGJveDogZGVmaW5l IGxvd3AgZmxvYXQgaGFsb19ibHVyXG52b2lkIG1haW4oKSB7XG4jcHJhZ21hIG1hcGJveDog aW5pdGlhbGl6ZSBoaWdocCB2ZWM0IGZpbGxfY29sb3JcbiNwcmFnbWEgbWFwYm94OiBpbml0 aWFsaXplIGhpZ2hwIHZlYzQgaGFsb19jb2xvclxuI3ByYWdtYSBtYXBib3g6IGluaXRpYWxp emUgbG93cCBmbG9hdCBvcGFjaXR5XG4jcHJhZ21hIG1hcGJveDogaW5pdGlhbGl6ZSBsb3dw IGZsb2F0IGhhbG9fd2lkdGhcbiNwcmFnbWEgbWFwYm94OiBpbml0aWFsaXplIGxvd3AgZmxv YXQgaGFsb19ibHVyXG52ZWMyIGFfcG9zPWFfcG9zX29mZnNldC54eTt2ZWMyIGFfb2Zmc2V0 PWFfcG9zX29mZnNldC56dzt2ZWMyIGFfdGV4PWFfZGF0YS54eTt2ZWMyIGFfc2l6ZT1hX2Rh dGEuenc7ZmxvYXQgYV9zaXplX21pbj1mbG9vcihhX3NpemVbMF0qMC41KTtmbG9hdCBpc19z ZGY9YV9zaXplWzBdLTIuMCphX3NpemVfbWluO2hpZ2hwIGZsb2F0IHNlZ21lbnRfYW5nbGU9 LWFfcHJvamVjdGVkX3Bvc1syXTtmbG9hdCBzaXplO2lmICghdV9pc19zaXplX3pvb21fY29u c3RhbnQgJiYgIXVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50KSB7c2l6ZT1taXgoYV9zaXpl X21pbixhX3NpemVbMV0sdV9zaXplX3QpLzEyOC4wO30gZWxzZSBpZiAodV9pc19zaXplX3pv b21fY29uc3RhbnQgJiYgIXVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50KSB7c2l6ZT1hX3Np emVfbWluLzEyOC4wO30gZWxzZSB7c2l6ZT11X3NpemU7fXZlYzQgcHJvamVjdGVkUG9pbnQ9 dV9tYXRyaXgqdmVjNChhX3BvcywwLDEpO2hpZ2hwIGZsb2F0IGNhbWVyYV90b19hbmNob3Jf ZGlzdGFuY2U9cHJvamVjdGVkUG9pbnQudztoaWdocCBmbG9hdCBkaXN0YW5jZV9yYXRpbz11 X3BpdGNoX3dpdGhfbWFwID9cbmNhbWVyYV90b19hbmNob3JfZGlzdGFuY2UvdV9jYW1lcmFf dG9fY2VudGVyX2Rpc3RhbmNlIDpcbnVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZS9jYW1l cmFfdG9fYW5jaG9yX2Rpc3RhbmNlO2hpZ2hwIGZsb2F0IHBlcnNwZWN0aXZlX3JhdGlvPWNs YW1wKDAuNSswLjUqZGlzdGFuY2VfcmF0aW8sMC4wLDQuMCk7c2l6ZSo9cGVyc3BlY3RpdmVf cmF0aW87ZmxvYXQgZm9udFNjYWxlPXNpemUvMjQuMDtoaWdocCBmbG9hdCBzeW1ib2xfcm90 YXRpb249MC4wO2lmICh1X3JvdGF0ZV9zeW1ib2wpIHt2ZWM0IG9mZnNldFByb2plY3RlZFBv aW50PXVfbWF0cml4KnZlYzQoYV9wb3MrdmVjMigxLDApLDAsMSk7dmVjMiBhPXByb2plY3Rl ZFBvaW50Lnh5L3Byb2plY3RlZFBvaW50Lnc7dmVjMiBiPW9mZnNldFByb2plY3RlZFBvaW50 Lnh5L29mZnNldFByb2plY3RlZFBvaW50Lnc7c3ltYm9sX3JvdGF0aW9uPWF0YW4oKGIueS1h LnkpL3VfYXNwZWN0X3JhdGlvLGIueC1hLngpO31oaWdocCBmbG9hdCBhbmdsZV9zaW49c2lu KHNlZ21lbnRfYW5nbGUrc3ltYm9sX3JvdGF0aW9uKTtoaWdocCBmbG9hdCBhbmdsZV9jb3M9 Y29zKHNlZ21lbnRfYW5nbGUrc3ltYm9sX3JvdGF0aW9uKTttYXQyIHJvdGF0aW9uX21hdHJp eD1tYXQyKGFuZ2xlX2NvcywtMS4wKmFuZ2xlX3NpbixhbmdsZV9zaW4sYW5nbGVfY29zKTt2 ZWM0IHByb2plY3RlZF9wb3M9dV9sYWJlbF9wbGFuZV9tYXRyaXgqdmVjNChhX3Byb2plY3Rl ZF9wb3MueHksMC4wLDEuMCk7Z2xfUG9zaXRpb249dV9jb29yZF9tYXRyaXgqdmVjNChwcm9q ZWN0ZWRfcG9zLnh5L3Byb2plY3RlZF9wb3Mudytyb3RhdGlvbl9tYXRyaXgqKGFfb2Zmc2V0 LzMyLjAqZm9udFNjYWxlKSwwLjAsMS4wKTtmbG9hdCBnYW1tYV9zY2FsZT1nbF9Qb3NpdGlv bi53O3ZlYzIgZmFkZV9vcGFjaXR5PXVucGFja19vcGFjaXR5KGFfZmFkZV9vcGFjaXR5KTtm bG9hdCBmYWRlX2NoYW5nZT1mYWRlX29wYWNpdHlbMV0gPiAwLjUgPyB1X2ZhZGVfY2hhbmdl IDotdV9mYWRlX2NoYW5nZTtmbG9hdCBpbnRlcnBvbGF0ZWRfZmFkZV9vcGFjaXR5PW1heCgw LjAsbWluKDEuMCxmYWRlX29wYWNpdHlbMF0rZmFkZV9jaGFuZ2UpKTt2X2RhdGEwLnh5PWFf dGV4L3VfdGV4c2l6ZTt2X2RhdGEwLnp3PWFfdGV4L3VfdGV4c2l6ZV9pY29uO3ZfZGF0YTE9 dmVjNChnYW1tYV9zY2FsZSxzaXplLGludGVycG9sYXRlZF9mYWRlX29wYWNpdHksaXNfc2Rm KTt9Iik7ZnVuY3Rpb24geXIodCxlKXt2YXIgcj0vI3ByYWdtYSBtYXBib3g6IChbXHddKykg KFtcd10rKSAoW1x3XSspIChbXHddKykvZyxuPXt9O3JldHVybntmcmFnbWVudFNvdXJjZTp0 PXQucmVwbGFjZShyLChmdW5jdGlvbih0LGUscixpLGEpe3JldHVybiBuW2FdPSEwLCJkZWZp bmUiPT09ZT8iXG4jaWZuZGVmIEhBU19VTklGT1JNX3VfIithKyJcbnZhcnlpbmcgIityKyIg IitpKyIgIithKyI7XG4jZWxzZVxudW5pZm9ybSAiK3IrIiAiK2krIiB1XyIrYSsiO1xuI2Vu ZGlmXG4iOiJcbiNpZmRlZiBIQVNfVU5JRk9STV91XyIrYSsiXG4gICAgIityKyIgIitpKyIg IithKyIgPSB1XyIrYSsiO1xuI2VuZGlmXG4ifSkpLHZlcnRleFNvdXJjZTplPWUucmVwbGFj ZShyLChmdW5jdGlvbih0LGUscixpLGEpe3ZhciBvPSJmbG9hdCI9PT1pPyJ2ZWMyIjoidmVj NCIscz1hLm1hdGNoKC9jb2xvci8pPyJjb2xvciI6bztyZXR1cm4gblthXT8iZGVmaW5lIj09 PWU/IlxuI2lmbmRlZiBIQVNfVU5JRk9STV91XyIrYSsiXG51bmlmb3JtIGxvd3AgZmxvYXQg dV8iK2ErIl90O1xuYXR0cmlidXRlICIrcisiICIrbysiIGFfIithKyI7XG52YXJ5aW5nICIr cisiICIraSsiICIrYSsiO1xuI2Vsc2VcbnVuaWZvcm0gIityKyIgIitpKyIgdV8iK2ErIjtc biNlbmRpZlxuIjoidmVjNCI9PT1zPyJcbiNpZm5kZWYgSEFTX1VOSUZPUk1fdV8iK2ErIlxu ICAgICIrYSsiID0gYV8iK2ErIjtcbiNlbHNlXG4gICAgIityKyIgIitpKyIgIithKyIgPSB1 XyIrYSsiO1xuI2VuZGlmXG4iOiJcbiNpZm5kZWYgSEFTX1VOSUZPUk1fdV8iK2ErIlxuICAg ICIrYSsiID0gdW5wYWNrX21peF8iK3MrIihhXyIrYSsiLCB1XyIrYSsiX3QpO1xuI2Vsc2Vc biAgICAiK3IrIiAiK2krIiAiK2ErIiA9IHVfIithKyI7XG4jZW5kaWZcbiI6ImRlZmluZSI9 PT1lPyJcbiNpZm5kZWYgSEFTX1VOSUZPUk1fdV8iK2ErIlxudW5pZm9ybSBsb3dwIGZsb2F0 IHVfIithKyJfdDtcbmF0dHJpYnV0ZSAiK3IrIiAiK28rIiBhXyIrYSsiO1xuI2Vsc2VcbnVu aWZvcm0gIityKyIgIitpKyIgdV8iK2ErIjtcbiNlbmRpZlxuIjoidmVjNCI9PT1zPyJcbiNp Zm5kZWYgSEFTX1VOSUZPUk1fdV8iK2ErIlxuICAgICIrcisiICIraSsiICIrYSsiID0gYV8i K2ErIjtcbiNlbHNlXG4gICAgIityKyIgIitpKyIgIithKyIgPSB1XyIrYSsiO1xuI2VuZGlm XG4iOiJcbiNpZm5kZWYgSEFTX1VOSUZPUk1fdV8iK2ErIlxuICAgICIrcisiICIraSsiICIr YSsiID0gdW5wYWNrX21peF8iK3MrIihhXyIrYSsiLCB1XyIrYSsiX3QpO1xuI2Vsc2VcbiAg ICAiK3IrIiAiK2krIiAiK2ErIiA9IHVfIithKyI7XG4jZW5kaWZcbiJ9KSl9fXZhciB4cj1P YmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxwcmVsdWRlOlllLGJhY2tncm91bmQ6V2Us YmFja2dyb3VuZFBhdHRlcm46WGUsY2lyY2xlOlplLGNsaXBwaW5nTWFzazpKZSxoZWF0bWFw OktlLGhlYXRtYXBUZXh0dXJlOlFlLGNvbGxpc2lvbkJveDokZSxjb2xsaXNpb25DaXJjbGU6 dHIsZGVidWc6ZXIsZmlsbDpycixmaWxsT3V0bGluZTpucixmaWxsT3V0bGluZVBhdHRlcm46 aXIsZmlsbFBhdHRlcm46YXIsZmlsbEV4dHJ1c2lvbjpvcixmaWxsRXh0cnVzaW9uUGF0dGVy bjpzcixoaWxsc2hhZGVQcmVwYXJlOmxyLGhpbGxzaGFkZTpjcixsaW5lOnVyLGxpbmVHcmFk aWVudDpmcixsaW5lUGF0dGVybjpocixsaW5lU0RGOnByLHJhc3RlcjpkcixzeW1ib2xJY29u Om1yLHN5bWJvbFNERjpncixzeW1ib2xUZXh0QW5kSWNvbjp2cn0pLGJyPWZ1bmN0aW9uKCl7 dGhpcy5ib3VuZFByb2dyYW09bnVsbCx0aGlzLmJvdW5kTGF5b3V0VmVydGV4QnVmZmVyPW51 bGwsdGhpcy5ib3VuZFBhaW50VmVydGV4QnVmZmVycz1bXSx0aGlzLmJvdW5kSW5kZXhCdWZm ZXI9bnVsbCx0aGlzLmJvdW5kVmVydGV4T2Zmc2V0PW51bGwsdGhpcy5ib3VuZER5bmFtaWNW ZXJ0ZXhCdWZmZXI9bnVsbCx0aGlzLnZhbz1udWxsfTtici5wcm90b3R5cGUuYmluZD1mdW5j dGlvbih0LGUscixuLGksYSxvLHMpe3RoaXMuY29udGV4dD10O2Zvcih2YXIgbD10aGlzLmJv dW5kUGFpbnRWZXJ0ZXhCdWZmZXJzLmxlbmd0aCE9PW4ubGVuZ3RoLGM9MDshbCYmYzxuLmxl bmd0aDtjKyspdGhpcy5ib3VuZFBhaW50VmVydGV4QnVmZmVyc1tjXSE9PW5bY10mJihsPSEw KTt2YXIgdT0hdGhpcy52YW98fHRoaXMuYm91bmRQcm9ncmFtIT09ZXx8dGhpcy5ib3VuZExh eW91dFZlcnRleEJ1ZmZlciE9PXJ8fGx8fHRoaXMuYm91bmRJbmRleEJ1ZmZlciE9PWl8fHRo aXMuYm91bmRWZXJ0ZXhPZmZzZXQhPT1hfHx0aGlzLmJvdW5kRHluYW1pY1ZlcnRleEJ1ZmZl ciE9PW98fHRoaXMuYm91bmREeW5hbWljVmVydGV4QnVmZmVyMiE9PXM7IXQuZXh0VmVydGV4 QXJyYXlPYmplY3R8fHU/dGhpcy5mcmVzaEJpbmQoZSxyLG4saSxhLG8scyk6KHQuYmluZFZl cnRleEFycmF5T0VTLnNldCh0aGlzLnZhbyksbyYmby5iaW5kKCksaSYmaS5keW5hbWljRHJh dyYmaS5iaW5kKCkscyYmcy5iaW5kKCkpfSxici5wcm90b3R5cGUuZnJlc2hCaW5kPWZ1bmN0 aW9uKHQsZSxyLG4saSxhLG8pe3ZhciBzLGw9dC5udW1BdHRyaWJ1dGVzLGM9dGhpcy5jb250 ZXh0LHU9Yy5nbDtpZihjLmV4dFZlcnRleEFycmF5T2JqZWN0KXRoaXMudmFvJiZ0aGlzLmRl c3Ryb3koKSx0aGlzLnZhbz1jLmV4dFZlcnRleEFycmF5T2JqZWN0LmNyZWF0ZVZlcnRleEFy cmF5T0VTKCksYy5iaW5kVmVydGV4QXJyYXlPRVMuc2V0KHRoaXMudmFvKSxzPTAsdGhpcy5i b3VuZFByb2dyYW09dCx0aGlzLmJvdW5kTGF5b3V0VmVydGV4QnVmZmVyPWUsdGhpcy5ib3Vu ZFBhaW50VmVydGV4QnVmZmVycz1yLHRoaXMuYm91bmRJbmRleEJ1ZmZlcj1uLHRoaXMuYm91 bmRWZXJ0ZXhPZmZzZXQ9aSx0aGlzLmJvdW5kRHluYW1pY1ZlcnRleEJ1ZmZlcj1hLHRoaXMu Ym91bmREeW5hbWljVmVydGV4QnVmZmVyMj1vO2Vsc2V7cz1jLmN1cnJlbnROdW1BdHRyaWJ1 dGVzfHwwO2Zvcih2YXIgZj1sO2Y8cztmKyspdS5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXko Zil9ZS5lbmFibGVBdHRyaWJ1dGVzKHUsdCk7Zm9yKHZhciBoPTAscD1yO2g8cC5sZW5ndGg7 aCs9MSl7cFtoXS5lbmFibGVBdHRyaWJ1dGVzKHUsdCl9YSYmYS5lbmFibGVBdHRyaWJ1dGVz KHUsdCksbyYmby5lbmFibGVBdHRyaWJ1dGVzKHUsdCksZS5iaW5kKCksZS5zZXRWZXJ0ZXhB dHRyaWJQb2ludGVycyh1LHQsaSk7Zm9yKHZhciBkPTAsbT1yO2Q8bS5sZW5ndGg7ZCs9MSl7 dmFyIGc9bVtkXTtnLmJpbmQoKSxnLnNldFZlcnRleEF0dHJpYlBvaW50ZXJzKHUsdCxpKX1h JiYoYS5iaW5kKCksYS5zZXRWZXJ0ZXhBdHRyaWJQb2ludGVycyh1LHQsaSkpLG4mJm4uYmlu ZCgpLG8mJihvLmJpbmQoKSxvLnNldFZlcnRleEF0dHJpYlBvaW50ZXJzKHUsdCxpKSksYy5j dXJyZW50TnVtQXR0cmlidXRlcz1sfSxici5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigp e3RoaXMudmFvJiYodGhpcy5jb250ZXh0LmV4dFZlcnRleEFycmF5T2JqZWN0LmRlbGV0ZVZl cnRleEFycmF5T0VTKHRoaXMudmFvKSx0aGlzLnZhbz1udWxsKX07dmFyIF9yPWZ1bmN0aW9u KHQsZSxyLG4saSl7dmFyIGE9dC5nbDt0aGlzLnByb2dyYW09YS5jcmVhdGVQcm9ncmFtKCk7 dmFyIG89cj9yLmRlZmluZXMoKTpbXTtpJiZvLnB1c2goIiNkZWZpbmUgT1ZFUkRSQVdfSU5T UEVDVE9SOyIpO3ZhciBzPW8uY29uY2F0KFllLmZyYWdtZW50U291cmNlLGUuZnJhZ21lbnRT b3VyY2UpLmpvaW4oIlxuIiksbD1vLmNvbmNhdChZZS52ZXJ0ZXhTb3VyY2UsZS52ZXJ0ZXhT b3VyY2UpLmpvaW4oIlxuIiksYz1hLmNyZWF0ZVNoYWRlcihhLkZSQUdNRU5UX1NIQURFUik7 aWYoYS5pc0NvbnRleHRMb3N0KCkpdGhpcy5mYWlsZWRUb0NyZWF0ZT0hMDtlbHNle2Euc2hh ZGVyU291cmNlKGMscyksYS5jb21waWxlU2hhZGVyKGMpLGEuYXR0YWNoU2hhZGVyKHRoaXMu cHJvZ3JhbSxjKTt2YXIgdT1hLmNyZWF0ZVNoYWRlcihhLlZFUlRFWF9TSEFERVIpO2lmKGEu aXNDb250ZXh0TG9zdCgpKXRoaXMuZmFpbGVkVG9DcmVhdGU9ITA7ZWxzZXthLnNoYWRlclNv dXJjZSh1LGwpLGEuY29tcGlsZVNoYWRlcih1KSxhLmF0dGFjaFNoYWRlcih0aGlzLnByb2dy YW0sdSk7Zm9yKHZhciBmPXI/ci5sYXlvdXRBdHRyaWJ1dGVzOltdLGg9MDtoPGYubGVuZ3Ro O2grKylhLmJpbmRBdHRyaWJMb2NhdGlvbih0aGlzLnByb2dyYW0saCxmW2hdLm5hbWUpO2Eu bGlua1Byb2dyYW0odGhpcy5wcm9ncmFtKSxhLmRlbGV0ZVNoYWRlcih1KSxhLmRlbGV0ZVNo YWRlcihjKSx0aGlzLm51bUF0dHJpYnV0ZXM9YS5nZXRQcm9ncmFtUGFyYW1ldGVyKHRoaXMu cHJvZ3JhbSxhLkFDVElWRV9BVFRSSUJVVEVTKSx0aGlzLmF0dHJpYnV0ZXM9e307Zm9yKHZh ciBwPXt9LGQ9MDtkPHRoaXMubnVtQXR0cmlidXRlcztkKyspe3ZhciBtPWEuZ2V0QWN0aXZl QXR0cmliKHRoaXMucHJvZ3JhbSxkKTttJiYodGhpcy5hdHRyaWJ1dGVzW20ubmFtZV09YS5n ZXRBdHRyaWJMb2NhdGlvbih0aGlzLnByb2dyYW0sbS5uYW1lKSl9Zm9yKHZhciBnPWEuZ2V0 UHJvZ3JhbVBhcmFtZXRlcih0aGlzLnByb2dyYW0sYS5BQ1RJVkVfVU5JRk9STVMpLHY9MDt2 PGc7disrKXt2YXIgeT1hLmdldEFjdGl2ZVVuaWZvcm0odGhpcy5wcm9ncmFtLHYpO3kmJihw W3kubmFtZV09YS5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5wcm9ncmFtLHkubmFtZSkpfXRo aXMuZml4ZWRVbmlmb3Jtcz1uKHQscCksdGhpcy5iaW5kZXJVbmlmb3Jtcz1yP3IuZ2V0VW5p Zm9ybXModCxwKTpbXX19fTtmdW5jdGlvbiB3cih0LGUscil7dmFyIG49MS9wZShyLDEsZS50 cmFuc2Zvcm0udGlsZVpvb20pLGk9TWF0aC5wb3coMixyLnRpbGVJRC5vdmVyc2NhbGVkWiks YT1yLnRpbGVTaXplKk1hdGgucG93KDIsZS50cmFuc2Zvcm0udGlsZVpvb20pL2ksbz1hKihy LnRpbGVJRC5jYW5vbmljYWwueCtyLnRpbGVJRC53cmFwKmkpLHM9YSpyLnRpbGVJRC5jYW5v bmljYWwueTtyZXR1cm57dV9pbWFnZTowLHVfdGV4c2l6ZTpyLmltYWdlQXRsYXNUZXh0dXJl LnNpemUsdV9zY2FsZTpbbix0LmZyb21TY2FsZSx0LnRvU2NhbGVdLHVfZmFkZTp0LnQsdV9w aXhlbF9jb29yZF91cHBlcjpbbz4+MTYscz4+MTZdLHVfcGl4ZWxfY29vcmRfbG93ZXI6WzY1 NTM1Jm8sNjU1MzUmc119fV9yLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKHQsZSxyLG4saSxh LG8scyxsLGMsdSxmLGgscCxkLG0pe3ZhciBnLHY9dC5nbDtpZighdGhpcy5mYWlsZWRUb0Ny ZWF0ZSl7Zm9yKHZhciB5IGluIHQucHJvZ3JhbS5zZXQodGhpcy5wcm9ncmFtKSx0LnNldERl cHRoTW9kZShyKSx0LnNldFN0ZW5jaWxNb2RlKG4pLHQuc2V0Q29sb3JNb2RlKGkpLHQuc2V0 Q3VsbEZhY2UoYSksdGhpcy5maXhlZFVuaWZvcm1zKXRoaXMuZml4ZWRVbmlmb3Jtc1t5XS5z ZXQob1t5XSk7cCYmcC5zZXRVbmlmb3Jtcyh0LHRoaXMuYmluZGVyVW5pZm9ybXMsZix7em9v bTpofSk7Zm9yKHZhciB4PShnPXt9LGdbdi5MSU5FU109MixnW3YuVFJJQU5HTEVTXT0zLGdb di5MSU5FX1NUUklQXT0xLGcpW2VdLGI9MCxfPXUuZ2V0KCk7YjxfLmxlbmd0aDtiKz0xKXt2 YXIgdz1fW2JdLFQ9dy52YW9zfHwody52YW9zPXt9KTsoVFtzXXx8KFRbc109bmV3IGJyKSku YmluZCh0LHRoaXMsbCxwP3AuZ2V0UGFpbnRWZXJ0ZXhCdWZmZXJzKCk6W10sYyx3LnZlcnRl eE9mZnNldCxkLG0pLHYuZHJhd0VsZW1lbnRzKGUsdy5wcmltaXRpdmVMZW5ndGgqeCx2LlVO U0lHTkVEX1NIT1JULHcucHJpbWl0aXZlT2Zmc2V0KngqMil9fX07dmFyIFRyPWZ1bmN0aW9u KGUscixuLGkpe3ZhciBhPXIuc3R5bGUubGlnaHQsbz1hLnByb3BlcnRpZXMuZ2V0KCJwb3Np dGlvbiIpLHM9W28ueCxvLnksby56XSxsPXQuY3JlYXRlJDEoKTsidmlld3BvcnQiPT09YS5w cm9wZXJ0aWVzLmdldCgiYW5jaG9yIikmJnQuZnJvbVJvdGF0aW9uKGwsLXIudHJhbnNmb3Jt LmFuZ2xlKSx0LnRyYW5zZm9ybU1hdDMocyxzLGwpO3ZhciBjPWEucHJvcGVydGllcy5nZXQo ImNvbG9yIik7cmV0dXJue3VfbWF0cml4OmUsdV9saWdodHBvczpzLHVfbGlnaHRpbnRlbnNp dHk6YS5wcm9wZXJ0aWVzLmdldCgiaW50ZW5zaXR5IiksdV9saWdodGNvbG9yOltjLnIsYy5n LGMuYl0sdV92ZXJ0aWNhbF9ncmFkaWVudDorbix1X29wYWNpdHk6aX19LGtyPWZ1bmN0aW9u KGUscixuLGksYSxvLHMpe3JldHVybiB0LmV4dGVuZChUcihlLHIsbixpKSx3cihvLHIscyks e3VfaGVpZ2h0X2ZhY3RvcjotTWF0aC5wb3coMixhLm92ZXJzY2FsZWRaKS9zLnRpbGVTaXpl Lzh9KX0sQXI9ZnVuY3Rpb24odCl7cmV0dXJue3VfbWF0cml4OnR9fSxNcj1mdW5jdGlvbihl LHIsbixpKXtyZXR1cm4gdC5leHRlbmQoQXIoZSksd3IobixyLGkpKX0sU3I9ZnVuY3Rpb24o dCxlKXtyZXR1cm57dV9tYXRyaXg6dCx1X3dvcmxkOmV9fSxFcj1mdW5jdGlvbihlLHIsbixp LGEpe3JldHVybiB0LmV4dGVuZChNcihlLHIsbixpKSx7dV93b3JsZDphfSl9LExyPWZ1bmN0 aW9uKGUscixuLGkpe3ZhciBhLG8scz1lLnRyYW5zZm9ybTtpZigibWFwIj09PWkucGFpbnQu Z2V0KCJjaXJjbGUtcGl0Y2gtYWxpZ25tZW50Iikpe3ZhciBsPXBlKG4sMSxzLnpvb20pO2E9 ITAsbz1bbCxsXX1lbHNlIGE9ITEsbz1zLnBpeGVsc1RvR0xVbml0cztyZXR1cm57dV9jYW1l cmFfdG9fY2VudGVyX2Rpc3RhbmNlOnMuY2FtZXJhVG9DZW50ZXJEaXN0YW5jZSx1X3NjYWxl X3dpdGhfbWFwOisoIm1hcCI9PT1pLnBhaW50LmdldCgiY2lyY2xlLXBpdGNoLXNjYWxlIikp LHVfbWF0cml4OmUudHJhbnNsYXRlUG9zTWF0cml4KHIucG9zTWF0cml4LG4saS5wYWludC5n ZXQoImNpcmNsZS10cmFuc2xhdGUiKSxpLnBhaW50LmdldCgiY2lyY2xlLXRyYW5zbGF0ZS1h bmNob3IiKSksdV9waXRjaF93aXRoX21hcDorYSx1X2RldmljZV9waXhlbF9yYXRpbzp0LmJy b3dzZXIuZGV2aWNlUGl4ZWxSYXRpbyx1X2V4dHJ1ZGVfc2NhbGU6b319LENyPWZ1bmN0aW9u KHQsZSxyKXt2YXIgbj1wZShyLDEsZS56b29tKSxpPU1hdGgucG93KDIsZS56b29tLXIudGls ZUlELm92ZXJzY2FsZWRaKSxhPXIudGlsZUlELm92ZXJzY2FsZUZhY3RvcigpO3JldHVybnt1 X21hdHJpeDp0LHVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZTplLmNhbWVyYVRvQ2VudGVy RGlzdGFuY2UsdV9waXhlbHNfdG9fdGlsZV91bml0czpuLHVfZXh0cnVkZV9zY2FsZTpbZS5w aXhlbHNUb0dMVW5pdHNbMF0vKG4qaSksZS5waXhlbHNUb0dMVW5pdHNbMV0vKG4qaSldLHVf b3ZlcnNjYWxlX2ZhY3RvcjphfX0sUHI9ZnVuY3Rpb24odCxlLHIpe3JldHVybnt1X21hdHJp eDp0LHVfaW52X21hdHJpeDplLHVfY2FtZXJhX3RvX2NlbnRlcl9kaXN0YW5jZTpyLmNhbWVy YVRvQ2VudGVyRGlzdGFuY2UsdV92aWV3cG9ydF9zaXplOltyLndpZHRoLHIuaGVpZ2h0XX19 LElyPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9MSkse3VfbWF0cml4 OnQsdV9jb2xvcjplLHVfb3ZlcmxheTowLHVfb3ZlcmxheV9zY2FsZTpyfX0sT3I9ZnVuY3Rp b24odCl7cmV0dXJue3VfbWF0cml4OnR9fSx6cj1mdW5jdGlvbih0LGUscixuKXtyZXR1cm57 dV9tYXRyaXg6dCx1X2V4dHJ1ZGVfc2NhbGU6cGUoZSwxLHIpLHVfaW50ZW5zaXR5Om59fTtm dW5jdGlvbiBEcihlLHIpe3ZhciBuPU1hdGgucG93KDIsci5jYW5vbmljYWwueiksaT1yLmNh bm9uaWNhbC55O3JldHVybltuZXcgdC5NZXJjYXRvckNvb3JkaW5hdGUoMCxpL24pLnRvTG5n TGF0KCkubGF0LG5ldyB0Lk1lcmNhdG9yQ29vcmRpbmF0ZSgwLChpKzEpL24pLnRvTG5nTGF0 KCkubGF0XX12YXIgUnI9ZnVuY3Rpb24oZSxyLG4pe3ZhciBpPWUudHJhbnNmb3JtO3JldHVy bnt1X21hdHJpeDpVcihlLHIsbiksdV9yYXRpbzoxL3BlKHIsMSxpLnpvb20pLHVfZGV2aWNl X3BpeGVsX3JhdGlvOnQuYnJvd3Nlci5kZXZpY2VQaXhlbFJhdGlvLHVfdW5pdHNfdG9fcGl4 ZWxzOlsxL2kucGl4ZWxzVG9HTFVuaXRzWzBdLDEvaS5waXhlbHNUb0dMVW5pdHNbMV1dfX0s RnI9ZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0LmV4dGVuZChScihlLHIsbikse3VfaW1hZ2U6 MH0pfSxCcj1mdW5jdGlvbihlLHIsbixpKXt2YXIgYT1lLnRyYW5zZm9ybSxvPWpyKHIsYSk7 cmV0dXJue3VfbWF0cml4OlVyKGUscixuKSx1X3RleHNpemU6ci5pbWFnZUF0bGFzVGV4dHVy ZS5zaXplLHVfcmF0aW86MS9wZShyLDEsYS56b29tKSx1X2RldmljZV9waXhlbF9yYXRpbzp0 LmJyb3dzZXIuZGV2aWNlUGl4ZWxSYXRpbyx1X2ltYWdlOjAsdV9zY2FsZTpbbyxpLmZyb21T Y2FsZSxpLnRvU2NhbGVdLHVfZmFkZTppLnQsdV91bml0c190b19waXhlbHM6WzEvYS5waXhl bHNUb0dMVW5pdHNbMF0sMS9hLnBpeGVsc1RvR0xVbml0c1sxXV19fSxOcj1mdW5jdGlvbihl LHIsbixpLGEpe3ZhciBvPWUudHJhbnNmb3JtLHM9ZS5saW5lQXRsYXMsbD1qcihyLG8pLGM9 InJvdW5kIj09PW4ubGF5b3V0LmdldCgibGluZS1jYXAiKSx1PXMuZ2V0RGFzaChpLmZyb20s YyksZj1zLmdldERhc2goaS50byxjKSxoPXUud2lkdGgqYS5mcm9tU2NhbGUscD1mLndpZHRo KmEudG9TY2FsZTtyZXR1cm4gdC5leHRlbmQoUnIoZSxyLG4pLHt1X3BhdHRlcm5zY2FsZV9h OltsL2gsLXUuaGVpZ2h0LzJdLHVfcGF0dGVybnNjYWxlX2I6W2wvcCwtZi5oZWlnaHQvMl0s dV9zZGZnYW1tYTpzLndpZHRoLygyNTYqTWF0aC5taW4oaCxwKSp0LmJyb3dzZXIuZGV2aWNl UGl4ZWxSYXRpbykvMix1X2ltYWdlOjAsdV90ZXhfeV9hOnUueSx1X3RleF95X2I6Zi55LHVf bWl4OmEudH0pfTtmdW5jdGlvbiBqcih0LGUpe3JldHVybiAxL3BlKHQsMSxlLnRpbGVab29t KX1mdW5jdGlvbiBVcih0LGUscil7cmV0dXJuIHQudHJhbnNsYXRlUG9zTWF0cml4KGUudGls ZUlELnBvc01hdHJpeCxlLHIucGFpbnQuZ2V0KCJsaW5lLXRyYW5zbGF0ZSIpLHIucGFpbnQu Z2V0KCJsaW5lLXRyYW5zbGF0ZS1hbmNob3IiKSl9dmFyIFZyPWZ1bmN0aW9uKHQsZSxyLG4s aSl7cmV0dXJue3VfbWF0cml4OnQsdV90bF9wYXJlbnQ6ZSx1X3NjYWxlX3BhcmVudDpyLHVf YnVmZmVyX3NjYWxlOjEsdV9mYWRlX3Q6bi5taXgsdV9vcGFjaXR5Om4ub3BhY2l0eSppLnBh aW50LmdldCgicmFzdGVyLW9wYWNpdHkiKSx1X2ltYWdlMDowLHVfaW1hZ2UxOjEsdV9icmln aHRuZXNzX2xvdzppLnBhaW50LmdldCgicmFzdGVyLWJyaWdodG5lc3MtbWluIiksdV9icmln aHRuZXNzX2hpZ2g6aS5wYWludC5nZXQoInJhc3Rlci1icmlnaHRuZXNzLW1heCIpLHVfc2F0 dXJhdGlvbl9mYWN0b3I6KG89aS5wYWludC5nZXQoInJhc3Rlci1zYXR1cmF0aW9uIiksbz4w PzEtMS8oMS4wMDEtbyk6LW8pLHVfY29udHJhc3RfZmFjdG9yOihhPWkucGFpbnQuZ2V0KCJy YXN0ZXItY29udHJhc3QiKSxhPjA/MS8oMS1hKToxK2EpLHVfc3Bpbl93ZWlnaHRzOkhyKGku cGFpbnQuZ2V0KCJyYXN0ZXItaHVlLXJvdGF0ZSIpKX07dmFyIGEsb307ZnVuY3Rpb24gSHIo dCl7dCo9TWF0aC5QSS8xODA7dmFyIGU9TWF0aC5zaW4odCkscj1NYXRoLmNvcyh0KTtyZXR1 cm5bKDIqcisxKS8zLCgtTWF0aC5zcXJ0KDMpKmUtcisxKS8zLChNYXRoLnNxcnQoMykqZS1y KzEpLzNdfXZhciBxcixHcj1mdW5jdGlvbih0LGUscixuLGksYSxvLHMsbCxjKXt2YXIgdT1p LnRyYW5zZm9ybTtyZXR1cm57dV9pc19zaXplX3pvb21fY29uc3RhbnQ6KygiY29uc3RhbnQi PT09dHx8InNvdXJjZSI9PT10KSx1X2lzX3NpemVfZmVhdHVyZV9jb25zdGFudDorKCJjb25z dGFudCI9PT10fHwiY2FtZXJhIj09PXQpLHVfc2l6ZV90OmU/ZS51U2l6ZVQ6MCx1X3NpemU6 ZT9lLnVTaXplOjAsdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlOnUuY2FtZXJhVG9DZW50 ZXJEaXN0YW5jZSx1X3BpdGNoOnUucGl0Y2gvMzYwKjIqTWF0aC5QSSx1X3JvdGF0ZV9zeW1i b2w6K3IsdV9hc3BlY3RfcmF0aW86dS53aWR0aC91LmhlaWdodCx1X2ZhZGVfY2hhbmdlOmku b3B0aW9ucy5mYWRlRHVyYXRpb24/aS5zeW1ib2xGYWRlQ2hhbmdlOjEsdV9tYXRyaXg6YSx1 X2xhYmVsX3BsYW5lX21hdHJpeDpvLHVfY29vcmRfbWF0cml4OnMsdV9pc190ZXh0OitsLHVf cGl0Y2hfd2l0aF9tYXA6K24sdV90ZXhzaXplOmMsdV90ZXh0dXJlOjB9fSxZcj1mdW5jdGlv bihlLHIsbixpLGEsbyxzLGwsYyx1LGYpe3ZhciBoPWEudHJhbnNmb3JtO3JldHVybiB0LmV4 dGVuZChHcihlLHIsbixpLGEsbyxzLGwsYyx1KSx7dV9nYW1tYV9zY2FsZTppP01hdGguY29z KGguX3BpdGNoKSpoLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2U6MSx1X2RldmljZV9waXhlbF9y YXRpbzp0LmJyb3dzZXIuZGV2aWNlUGl4ZWxSYXRpbyx1X2lzX2hhbG86K2Z9KX0sV3I9ZnVu Y3Rpb24oZSxyLG4saSxhLG8scyxsLGMsdSl7cmV0dXJuIHQuZXh0ZW5kKFlyKGUscixuLGks YSxvLHMsbCwhMCxjLCEwKSx7dV90ZXhzaXplX2ljb246dSx1X3RleHR1cmVfaWNvbjoxfSl9 LFhyPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm57dV9tYXRyaXg6dCx1X29wYWNpdHk6ZSx1X2Nv bG9yOnJ9fSxacj1mdW5jdGlvbihlLHIsbixpLGEsbyl7cmV0dXJuIHQuZXh0ZW5kKGZ1bmN0 aW9uKHQsZSxyLG4pe3ZhciBpPXIuaW1hZ2VNYW5hZ2VyLmdldFBhdHRlcm4odC5mcm9tLnRv U3RyaW5nKCkpLGE9ci5pbWFnZU1hbmFnZXIuZ2V0UGF0dGVybih0LnRvLnRvU3RyaW5nKCkp LG89ci5pbWFnZU1hbmFnZXIuZ2V0UGl4ZWxTaXplKCkscz1vLndpZHRoLGw9by5oZWlnaHQs Yz1NYXRoLnBvdygyLG4udGlsZUlELm92ZXJzY2FsZWRaKSx1PW4udGlsZVNpemUqTWF0aC5w b3coMixyLnRyYW5zZm9ybS50aWxlWm9vbSkvYyxmPXUqKG4udGlsZUlELmNhbm9uaWNhbC54 K24udGlsZUlELndyYXAqYyksaD11Km4udGlsZUlELmNhbm9uaWNhbC55O3JldHVybnt1X2lt YWdlOjAsdV9wYXR0ZXJuX3RsX2E6aS50bCx1X3BhdHRlcm5fYnJfYTppLmJyLHVfcGF0dGVy bl90bF9iOmEudGwsdV9wYXR0ZXJuX2JyX2I6YS5icix1X3RleHNpemU6W3MsbF0sdV9taXg6 ZS50LHVfcGF0dGVybl9zaXplX2E6aS5kaXNwbGF5U2l6ZSx1X3BhdHRlcm5fc2l6ZV9iOmEu ZGlzcGxheVNpemUsdV9zY2FsZV9hOmUuZnJvbVNjYWxlLHVfc2NhbGVfYjplLnRvU2NhbGUs dV90aWxlX3VuaXRzX3RvX3BpeGVsczoxL3BlKG4sMSxyLnRyYW5zZm9ybS50aWxlWm9vbSks dV9waXhlbF9jb29yZF91cHBlcjpbZj4+MTYsaD4+MTZdLHVfcGl4ZWxfY29vcmRfbG93ZXI6 WzY1NTM1JmYsNjU1MzUmaF19fShpLG8sbixhKSx7dV9tYXRyaXg6ZSx1X29wYWNpdHk6cn0p fSxKcj17ZmlsbEV4dHJ1c2lvbjpmdW5jdGlvbihlLHIpe3JldHVybnt1X21hdHJpeDpuZXcg dC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KSx1X2xpZ2h0cG9zOm5ldyB0LlVuaWZv cm0zZihlLHIudV9saWdodHBvcyksdV9saWdodGludGVuc2l0eTpuZXcgdC5Vbmlmb3JtMWYo ZSxyLnVfbGlnaHRpbnRlbnNpdHkpLHVfbGlnaHRjb2xvcjpuZXcgdC5Vbmlmb3JtM2YoZSxy LnVfbGlnaHRjb2xvciksdV92ZXJ0aWNhbF9ncmFkaWVudDpuZXcgdC5Vbmlmb3JtMWYoZSxy LnVfdmVydGljYWxfZ3JhZGllbnQpLHVfb3BhY2l0eTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVf b3BhY2l0eSl9fSxmaWxsRXh0cnVzaW9uUGF0dGVybjpmdW5jdGlvbihlLHIpe3JldHVybnt1 X21hdHJpeDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KSx1X2xpZ2h0cG9z Om5ldyB0LlVuaWZvcm0zZihlLHIudV9saWdodHBvcyksdV9saWdodGludGVuc2l0eTpuZXcg dC5Vbmlmb3JtMWYoZSxyLnVfbGlnaHRpbnRlbnNpdHkpLHVfbGlnaHRjb2xvcjpuZXcgdC5V bmlmb3JtM2YoZSxyLnVfbGlnaHRjb2xvciksdV92ZXJ0aWNhbF9ncmFkaWVudDpuZXcgdC5V bmlmb3JtMWYoZSxyLnVfdmVydGljYWxfZ3JhZGllbnQpLHVfaGVpZ2h0X2ZhY3RvcjpuZXcg dC5Vbmlmb3JtMWYoZSxyLnVfaGVpZ2h0X2ZhY3RvciksdV9pbWFnZTpuZXcgdC5Vbmlmb3Jt MWkoZSxyLnVfaW1hZ2UpLHVfdGV4c2l6ZTpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfdGV4c2l6 ZSksdV9waXhlbF9jb29yZF91cHBlcjpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfcGl4ZWxfY29v cmRfdXBwZXIpLHVfcGl4ZWxfY29vcmRfbG93ZXI6bmV3IHQuVW5pZm9ybTJmKGUsci51X3Bp eGVsX2Nvb3JkX2xvd2VyKSx1X3NjYWxlOm5ldyB0LlVuaWZvcm0zZihlLHIudV9zY2FsZSks dV9mYWRlOm5ldyB0LlVuaWZvcm0xZihlLHIudV9mYWRlKSx1X29wYWNpdHk6bmV3IHQuVW5p Zm9ybTFmKGUsci51X29wYWNpdHkpfX0sZmlsbDpmdW5jdGlvbihlLHIpe3JldHVybnt1X21h dHJpeDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KX19LGZpbGxQYXR0ZXJu OmZ1bmN0aW9uKGUscil7cmV0dXJue3VfbWF0cml4Om5ldyB0LlVuaWZvcm1NYXRyaXg0Zihl LHIudV9tYXRyaXgpLHVfaW1hZ2U6bmV3IHQuVW5pZm9ybTFpKGUsci51X2ltYWdlKSx1X3Rl eHNpemU6bmV3IHQuVW5pZm9ybTJmKGUsci51X3RleHNpemUpLHVfcGl4ZWxfY29vcmRfdXBw ZXI6bmV3IHQuVW5pZm9ybTJmKGUsci51X3BpeGVsX2Nvb3JkX3VwcGVyKSx1X3BpeGVsX2Nv b3JkX2xvd2VyOm5ldyB0LlVuaWZvcm0yZihlLHIudV9waXhlbF9jb29yZF9sb3dlciksdV9z Y2FsZTpuZXcgdC5Vbmlmb3JtM2YoZSxyLnVfc2NhbGUpLHVfZmFkZTpuZXcgdC5Vbmlmb3Jt MWYoZSxyLnVfZmFkZSl9fSxmaWxsT3V0bGluZTpmdW5jdGlvbihlLHIpe3JldHVybnt1X21h dHJpeDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KSx1X3dvcmxkOm5ldyB0 LlVuaWZvcm0yZihlLHIudV93b3JsZCl9fSxmaWxsT3V0bGluZVBhdHRlcm46ZnVuY3Rpb24o ZSxyKXtyZXR1cm57dV9tYXRyaXg6bmV3IHQuVW5pZm9ybU1hdHJpeDRmKGUsci51X21hdHJp eCksdV93b3JsZDpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfd29ybGQpLHVfaW1hZ2U6bmV3IHQu VW5pZm9ybTFpKGUsci51X2ltYWdlKSx1X3RleHNpemU6bmV3IHQuVW5pZm9ybTJmKGUsci51 X3RleHNpemUpLHVfcGl4ZWxfY29vcmRfdXBwZXI6bmV3IHQuVW5pZm9ybTJmKGUsci51X3Bp eGVsX2Nvb3JkX3VwcGVyKSx1X3BpeGVsX2Nvb3JkX2xvd2VyOm5ldyB0LlVuaWZvcm0yZihl LHIudV9waXhlbF9jb29yZF9sb3dlciksdV9zY2FsZTpuZXcgdC5Vbmlmb3JtM2YoZSxyLnVf c2NhbGUpLHVfZmFkZTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfZmFkZSl9fSxjaXJjbGU6ZnVu Y3Rpb24oZSxyKXtyZXR1cm57dV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlOm5ldyB0LlVu aWZvcm0xZihlLHIudV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlKSx1X3NjYWxlX3dpdGhf bWFwOm5ldyB0LlVuaWZvcm0xaShlLHIudV9zY2FsZV93aXRoX21hcCksdV9waXRjaF93aXRo X21hcDpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfcGl0Y2hfd2l0aF9tYXApLHVfZXh0cnVkZV9z Y2FsZTpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfZXh0cnVkZV9zY2FsZSksdV9kZXZpY2VfcGl4 ZWxfcmF0aW86bmV3IHQuVW5pZm9ybTFmKGUsci51X2RldmljZV9waXhlbF9yYXRpbyksdV9t YXRyaXg6bmV3IHQuVW5pZm9ybU1hdHJpeDRmKGUsci51X21hdHJpeCl9fSxjb2xsaXNpb25C b3g6ZnVuY3Rpb24oZSxyKXtyZXR1cm57dV9tYXRyaXg6bmV3IHQuVW5pZm9ybU1hdHJpeDRm KGUsci51X21hdHJpeCksdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlOm5ldyB0LlVuaWZv cm0xZihlLHIudV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlKSx1X3BpeGVsc190b190aWxl X3VuaXRzOm5ldyB0LlVuaWZvcm0xZihlLHIudV9waXhlbHNfdG9fdGlsZV91bml0cyksdV9l eHRydWRlX3NjYWxlOm5ldyB0LlVuaWZvcm0yZihlLHIudV9leHRydWRlX3NjYWxlKSx1X292 ZXJzY2FsZV9mYWN0b3I6bmV3IHQuVW5pZm9ybTFmKGUsci51X292ZXJzY2FsZV9mYWN0b3Ip fX0sY29sbGlzaW9uQ2lyY2xlOmZ1bmN0aW9uKGUscil7cmV0dXJue3VfbWF0cml4Om5ldyB0 LlVuaWZvcm1NYXRyaXg0ZihlLHIudV9tYXRyaXgpLHVfaW52X21hdHJpeDpuZXcgdC5Vbmlm b3JtTWF0cml4NGYoZSxyLnVfaW52X21hdHJpeCksdV9jYW1lcmFfdG9fY2VudGVyX2Rpc3Rh bmNlOm5ldyB0LlVuaWZvcm0xZihlLHIudV9jYW1lcmFfdG9fY2VudGVyX2Rpc3RhbmNlKSx1 X3ZpZXdwb3J0X3NpemU6bmV3IHQuVW5pZm9ybTJmKGUsci51X3ZpZXdwb3J0X3NpemUpfX0s ZGVidWc6ZnVuY3Rpb24oZSxyKXtyZXR1cm57dV9jb2xvcjpuZXcgdC5Vbmlmb3JtQ29sb3Io ZSxyLnVfY29sb3IpLHVfbWF0cml4Om5ldyB0LlVuaWZvcm1NYXRyaXg0ZihlLHIudV9tYXRy aXgpLHVfb3ZlcmxheTpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfb3ZlcmxheSksdV9vdmVybGF5 X3NjYWxlOm5ldyB0LlVuaWZvcm0xZihlLHIudV9vdmVybGF5X3NjYWxlKX19LGNsaXBwaW5n TWFzazpmdW5jdGlvbihlLHIpe3JldHVybnt1X21hdHJpeDpuZXcgdC5Vbmlmb3JtTWF0cml4 NGYoZSxyLnVfbWF0cml4KX19LGhlYXRtYXA6ZnVuY3Rpb24oZSxyKXtyZXR1cm57dV9leHRy dWRlX3NjYWxlOm5ldyB0LlVuaWZvcm0xZihlLHIudV9leHRydWRlX3NjYWxlKSx1X2ludGVu c2l0eTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfaW50ZW5zaXR5KSx1X21hdHJpeDpuZXcgdC5V bmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KX19LGhlYXRtYXBUZXh0dXJlOmZ1bmN0aW9u KGUscil7cmV0dXJue3VfbWF0cml4Om5ldyB0LlVuaWZvcm1NYXRyaXg0ZihlLHIudV9tYXRy aXgpLHVfd29ybGQ6bmV3IHQuVW5pZm9ybTJmKGUsci51X3dvcmxkKSx1X2ltYWdlOm5ldyB0 LlVuaWZvcm0xaShlLHIudV9pbWFnZSksdV9jb2xvcl9yYW1wOm5ldyB0LlVuaWZvcm0xaShl LHIudV9jb2xvcl9yYW1wKSx1X29wYWNpdHk6bmV3IHQuVW5pZm9ybTFmKGUsci51X29wYWNp dHkpfX0saGlsbHNoYWRlOmZ1bmN0aW9uKGUscil7cmV0dXJue3VfbWF0cml4Om5ldyB0LlVu aWZvcm1NYXRyaXg0ZihlLHIudV9tYXRyaXgpLHVfaW1hZ2U6bmV3IHQuVW5pZm9ybTFpKGUs ci51X2ltYWdlKSx1X2xhdHJhbmdlOm5ldyB0LlVuaWZvcm0yZihlLHIudV9sYXRyYW5nZSks dV9saWdodDpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfbGlnaHQpLHVfc2hhZG93Om5ldyB0LlVu aWZvcm1Db2xvcihlLHIudV9zaGFkb3cpLHVfaGlnaGxpZ2h0Om5ldyB0LlVuaWZvcm1Db2xv cihlLHIudV9oaWdobGlnaHQpLHVfYWNjZW50Om5ldyB0LlVuaWZvcm1Db2xvcihlLHIudV9h Y2NlbnQpfX0saGlsbHNoYWRlUHJlcGFyZTpmdW5jdGlvbihlLHIpe3JldHVybnt1X21hdHJp eDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KSx1X2ltYWdlOm5ldyB0LlVu aWZvcm0xaShlLHIudV9pbWFnZSksdV9kaW1lbnNpb246bmV3IHQuVW5pZm9ybTJmKGUsci51 X2RpbWVuc2lvbiksdV96b29tOm5ldyB0LlVuaWZvcm0xZihlLHIudV96b29tKSx1X21heHpv b206bmV3IHQuVW5pZm9ybTFmKGUsci51X21heHpvb20pLHVfdW5wYWNrOm5ldyB0LlVuaWZv cm00ZihlLHIudV91bnBhY2spfX0sbGluZTpmdW5jdGlvbihlLHIpe3JldHVybnt1X21hdHJp eDpuZXcgdC5Vbmlmb3JtTWF0cml4NGYoZSxyLnVfbWF0cml4KSx1X3JhdGlvOm5ldyB0LlVu aWZvcm0xZihlLHIudV9yYXRpbyksdV9kZXZpY2VfcGl4ZWxfcmF0aW86bmV3IHQuVW5pZm9y bTFmKGUsci51X2RldmljZV9waXhlbF9yYXRpbyksdV91bml0c190b19waXhlbHM6bmV3IHQu VW5pZm9ybTJmKGUsci51X3VuaXRzX3RvX3BpeGVscyl9fSxsaW5lR3JhZGllbnQ6ZnVuY3Rp b24oZSxyKXtyZXR1cm57dV9tYXRyaXg6bmV3IHQuVW5pZm9ybU1hdHJpeDRmKGUsci51X21h dHJpeCksdV9yYXRpbzpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfcmF0aW8pLHVfZGV2aWNlX3Bp eGVsX3JhdGlvOm5ldyB0LlVuaWZvcm0xZihlLHIudV9kZXZpY2VfcGl4ZWxfcmF0aW8pLHVf dW5pdHNfdG9fcGl4ZWxzOm5ldyB0LlVuaWZvcm0yZihlLHIudV91bml0c190b19waXhlbHMp LHVfaW1hZ2U6bmV3IHQuVW5pZm9ybTFpKGUsci51X2ltYWdlKX19LGxpbmVQYXR0ZXJuOmZ1 bmN0aW9uKGUscil7cmV0dXJue3VfbWF0cml4Om5ldyB0LlVuaWZvcm1NYXRyaXg0ZihlLHIu dV9tYXRyaXgpLHVfdGV4c2l6ZTpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfdGV4c2l6ZSksdV9y YXRpbzpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfcmF0aW8pLHVfZGV2aWNlX3BpeGVsX3JhdGlv Om5ldyB0LlVuaWZvcm0xZihlLHIudV9kZXZpY2VfcGl4ZWxfcmF0aW8pLHVfaW1hZ2U6bmV3 IHQuVW5pZm9ybTFpKGUsci51X2ltYWdlKSx1X3VuaXRzX3RvX3BpeGVsczpuZXcgdC5Vbmlm b3JtMmYoZSxyLnVfdW5pdHNfdG9fcGl4ZWxzKSx1X3NjYWxlOm5ldyB0LlVuaWZvcm0zZihl LHIudV9zY2FsZSksdV9mYWRlOm5ldyB0LlVuaWZvcm0xZihlLHIudV9mYWRlKX19LGxpbmVT REY6ZnVuY3Rpb24oZSxyKXtyZXR1cm57dV9tYXRyaXg6bmV3IHQuVW5pZm9ybU1hdHJpeDRm KGUsci51X21hdHJpeCksdV9yYXRpbzpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfcmF0aW8pLHVf ZGV2aWNlX3BpeGVsX3JhdGlvOm5ldyB0LlVuaWZvcm0xZihlLHIudV9kZXZpY2VfcGl4ZWxf cmF0aW8pLHVfdW5pdHNfdG9fcGl4ZWxzOm5ldyB0LlVuaWZvcm0yZihlLHIudV91bml0c190 b19waXhlbHMpLHVfcGF0dGVybnNjYWxlX2E6bmV3IHQuVW5pZm9ybTJmKGUsci51X3BhdHRl cm5zY2FsZV9hKSx1X3BhdHRlcm5zY2FsZV9iOm5ldyB0LlVuaWZvcm0yZihlLHIudV9wYXR0 ZXJuc2NhbGVfYiksdV9zZGZnYW1tYTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfc2RmZ2FtbWEp LHVfaW1hZ2U6bmV3IHQuVW5pZm9ybTFpKGUsci51X2ltYWdlKSx1X3RleF95X2E6bmV3IHQu VW5pZm9ybTFmKGUsci51X3RleF95X2EpLHVfdGV4X3lfYjpuZXcgdC5Vbmlmb3JtMWYoZSxy LnVfdGV4X3lfYiksdV9taXg6bmV3IHQuVW5pZm9ybTFmKGUsci51X21peCl9fSxyYXN0ZXI6 ZnVuY3Rpb24oZSxyKXtyZXR1cm57dV9tYXRyaXg6bmV3IHQuVW5pZm9ybU1hdHJpeDRmKGUs ci51X21hdHJpeCksdV90bF9wYXJlbnQ6bmV3IHQuVW5pZm9ybTJmKGUsci51X3RsX3BhcmVu dCksdV9zY2FsZV9wYXJlbnQ6bmV3IHQuVW5pZm9ybTFmKGUsci51X3NjYWxlX3BhcmVudCks dV9idWZmZXJfc2NhbGU6bmV3IHQuVW5pZm9ybTFmKGUsci51X2J1ZmZlcl9zY2FsZSksdV9m YWRlX3Q6bmV3IHQuVW5pZm9ybTFmKGUsci51X2ZhZGVfdCksdV9vcGFjaXR5Om5ldyB0LlVu aWZvcm0xZihlLHIudV9vcGFjaXR5KSx1X2ltYWdlMDpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVf aW1hZ2UwKSx1X2ltYWdlMTpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfaW1hZ2UxKSx1X2JyaWdo dG5lc3NfbG93Om5ldyB0LlVuaWZvcm0xZihlLHIudV9icmlnaHRuZXNzX2xvdyksdV9icmln aHRuZXNzX2hpZ2g6bmV3IHQuVW5pZm9ybTFmKGUsci51X2JyaWdodG5lc3NfaGlnaCksdV9z YXR1cmF0aW9uX2ZhY3RvcjpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfc2F0dXJhdGlvbl9mYWN0 b3IpLHVfY29udHJhc3RfZmFjdG9yOm5ldyB0LlVuaWZvcm0xZihlLHIudV9jb250cmFzdF9m YWN0b3IpLHVfc3Bpbl93ZWlnaHRzOm5ldyB0LlVuaWZvcm0zZihlLHIudV9zcGluX3dlaWdo dHMpfX0sc3ltYm9sSWNvbjpmdW5jdGlvbihlLHIpe3JldHVybnt1X2lzX3NpemVfem9vbV9j b25zdGFudDpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfaXNfc2l6ZV96b29tX2NvbnN0YW50KSx1 X2lzX3NpemVfZmVhdHVyZV9jb25zdGFudDpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfaXNfc2l6 ZV9mZWF0dXJlX2NvbnN0YW50KSx1X3NpemVfdDpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfc2l6 ZV90KSx1X3NpemU6bmV3IHQuVW5pZm9ybTFmKGUsci51X3NpemUpLHVfY2FtZXJhX3RvX2Nl bnRlcl9kaXN0YW5jZTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfY2FtZXJhX3RvX2NlbnRlcl9k aXN0YW5jZSksdV9waXRjaDpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfcGl0Y2gpLHVfcm90YXRl X3N5bWJvbDpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfcm90YXRlX3N5bWJvbCksdV9hc3BlY3Rf cmF0aW86bmV3IHQuVW5pZm9ybTFmKGUsci51X2FzcGVjdF9yYXRpbyksdV9mYWRlX2NoYW5n ZTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfZmFkZV9jaGFuZ2UpLHVfbWF0cml4Om5ldyB0LlVu aWZvcm1NYXRyaXg0ZihlLHIudV9tYXRyaXgpLHVfbGFiZWxfcGxhbmVfbWF0cml4Om5ldyB0 LlVuaWZvcm1NYXRyaXg0ZihlLHIudV9sYWJlbF9wbGFuZV9tYXRyaXgpLHVfY29vcmRfbWF0 cml4Om5ldyB0LlVuaWZvcm1NYXRyaXg0ZihlLHIudV9jb29yZF9tYXRyaXgpLHVfaXNfdGV4 dDpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfaXNfdGV4dCksdV9waXRjaF93aXRoX21hcDpuZXcg dC5Vbmlmb3JtMWkoZSxyLnVfcGl0Y2hfd2l0aF9tYXApLHVfdGV4c2l6ZTpuZXcgdC5Vbmlm b3JtMmYoZSxyLnVfdGV4c2l6ZSksdV90ZXh0dXJlOm5ldyB0LlVuaWZvcm0xaShlLHIudV90 ZXh0dXJlKX19LHN5bWJvbFNERjpmdW5jdGlvbihlLHIpe3JldHVybnt1X2lzX3NpemVfem9v bV9jb25zdGFudDpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfaXNfc2l6ZV96b29tX2NvbnN0YW50 KSx1X2lzX3NpemVfZmVhdHVyZV9jb25zdGFudDpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfaXNf c2l6ZV9mZWF0dXJlX2NvbnN0YW50KSx1X3NpemVfdDpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVf c2l6ZV90KSx1X3NpemU6bmV3IHQuVW5pZm9ybTFmKGUsci51X3NpemUpLHVfY2FtZXJhX3Rv X2NlbnRlcl9kaXN0YW5jZTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfY2FtZXJhX3RvX2NlbnRl cl9kaXN0YW5jZSksdV9waXRjaDpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfcGl0Y2gpLHVfcm90 YXRlX3N5bWJvbDpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfcm90YXRlX3N5bWJvbCksdV9hc3Bl Y3RfcmF0aW86bmV3IHQuVW5pZm9ybTFmKGUsci51X2FzcGVjdF9yYXRpbyksdV9mYWRlX2No YW5nZTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfZmFkZV9jaGFuZ2UpLHVfbWF0cml4Om5ldyB0 LlVuaWZvcm1NYXRyaXg0ZihlLHIudV9tYXRyaXgpLHVfbGFiZWxfcGxhbmVfbWF0cml4Om5l dyB0LlVuaWZvcm1NYXRyaXg0ZihlLHIudV9sYWJlbF9wbGFuZV9tYXRyaXgpLHVfY29vcmRf bWF0cml4Om5ldyB0LlVuaWZvcm1NYXRyaXg0ZihlLHIudV9jb29yZF9tYXRyaXgpLHVfaXNf dGV4dDpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfaXNfdGV4dCksdV9waXRjaF93aXRoX21hcDpu ZXcgdC5Vbmlmb3JtMWkoZSxyLnVfcGl0Y2hfd2l0aF9tYXApLHVfdGV4c2l6ZTpuZXcgdC5V bmlmb3JtMmYoZSxyLnVfdGV4c2l6ZSksdV90ZXh0dXJlOm5ldyB0LlVuaWZvcm0xaShlLHIu dV90ZXh0dXJlKSx1X2dhbW1hX3NjYWxlOm5ldyB0LlVuaWZvcm0xZihlLHIudV9nYW1tYV9z Y2FsZSksdV9kZXZpY2VfcGl4ZWxfcmF0aW86bmV3IHQuVW5pZm9ybTFmKGUsci51X2Rldmlj ZV9waXhlbF9yYXRpbyksdV9pc19oYWxvOm5ldyB0LlVuaWZvcm0xaShlLHIudV9pc19oYWxv KX19LHN5bWJvbFRleHRBbmRJY29uOmZ1bmN0aW9uKGUscil7cmV0dXJue3VfaXNfc2l6ZV96 b29tX2NvbnN0YW50Om5ldyB0LlVuaWZvcm0xaShlLHIudV9pc19zaXplX3pvb21fY29uc3Rh bnQpLHVfaXNfc2l6ZV9mZWF0dXJlX2NvbnN0YW50Om5ldyB0LlVuaWZvcm0xaShlLHIudV9p c19zaXplX2ZlYXR1cmVfY29uc3RhbnQpLHVfc2l6ZV90Om5ldyB0LlVuaWZvcm0xZihlLHIu dV9zaXplX3QpLHVfc2l6ZTpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfc2l6ZSksdV9jYW1lcmFf dG9fY2VudGVyX2Rpc3RhbmNlOm5ldyB0LlVuaWZvcm0xZihlLHIudV9jYW1lcmFfdG9fY2Vu dGVyX2Rpc3RhbmNlKSx1X3BpdGNoOm5ldyB0LlVuaWZvcm0xZihlLHIudV9waXRjaCksdV9y b3RhdGVfc3ltYm9sOm5ldyB0LlVuaWZvcm0xaShlLHIudV9yb3RhdGVfc3ltYm9sKSx1X2Fz cGVjdF9yYXRpbzpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfYXNwZWN0X3JhdGlvKSx1X2ZhZGVf Y2hhbmdlOm5ldyB0LlVuaWZvcm0xZihlLHIudV9mYWRlX2NoYW5nZSksdV9tYXRyaXg6bmV3 IHQuVW5pZm9ybU1hdHJpeDRmKGUsci51X21hdHJpeCksdV9sYWJlbF9wbGFuZV9tYXRyaXg6 bmV3IHQuVW5pZm9ybU1hdHJpeDRmKGUsci51X2xhYmVsX3BsYW5lX21hdHJpeCksdV9jb29y ZF9tYXRyaXg6bmV3IHQuVW5pZm9ybU1hdHJpeDRmKGUsci51X2Nvb3JkX21hdHJpeCksdV9p c190ZXh0Om5ldyB0LlVuaWZvcm0xaShlLHIudV9pc190ZXh0KSx1X3BpdGNoX3dpdGhfbWFw Om5ldyB0LlVuaWZvcm0xaShlLHIudV9waXRjaF93aXRoX21hcCksdV90ZXhzaXplOm5ldyB0 LlVuaWZvcm0yZihlLHIudV90ZXhzaXplKSx1X3RleHNpemVfaWNvbjpuZXcgdC5Vbmlmb3Jt MmYoZSxyLnVfdGV4c2l6ZV9pY29uKSx1X3RleHR1cmU6bmV3IHQuVW5pZm9ybTFpKGUsci51 X3RleHR1cmUpLHVfdGV4dHVyZV9pY29uOm5ldyB0LlVuaWZvcm0xaShlLHIudV90ZXh0dXJl X2ljb24pLHVfZ2FtbWFfc2NhbGU6bmV3IHQuVW5pZm9ybTFmKGUsci51X2dhbW1hX3NjYWxl KSx1X2RldmljZV9waXhlbF9yYXRpbzpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfZGV2aWNlX3Bp eGVsX3JhdGlvKSx1X2lzX2hhbG86bmV3IHQuVW5pZm9ybTFpKGUsci51X2lzX2hhbG8pfX0s YmFja2dyb3VuZDpmdW5jdGlvbihlLHIpe3JldHVybnt1X21hdHJpeDpuZXcgdC5Vbmlmb3Jt TWF0cml4NGYoZSxyLnVfbWF0cml4KSx1X29wYWNpdHk6bmV3IHQuVW5pZm9ybTFmKGUsci51 X29wYWNpdHkpLHVfY29sb3I6bmV3IHQuVW5pZm9ybUNvbG9yKGUsci51X2NvbG9yKX19LGJh Y2tncm91bmRQYXR0ZXJuOmZ1bmN0aW9uKGUscil7cmV0dXJue3VfbWF0cml4Om5ldyB0LlVu aWZvcm1NYXRyaXg0ZihlLHIudV9tYXRyaXgpLHVfb3BhY2l0eTpuZXcgdC5Vbmlmb3JtMWYo ZSxyLnVfb3BhY2l0eSksdV9pbWFnZTpuZXcgdC5Vbmlmb3JtMWkoZSxyLnVfaW1hZ2UpLHVf cGF0dGVybl90bF9hOm5ldyB0LlVuaWZvcm0yZihlLHIudV9wYXR0ZXJuX3RsX2EpLHVfcGF0 dGVybl9icl9hOm5ldyB0LlVuaWZvcm0yZihlLHIudV9wYXR0ZXJuX2JyX2EpLHVfcGF0dGVy bl90bF9iOm5ldyB0LlVuaWZvcm0yZihlLHIudV9wYXR0ZXJuX3RsX2IpLHVfcGF0dGVybl9i cl9iOm5ldyB0LlVuaWZvcm0yZihlLHIudV9wYXR0ZXJuX2JyX2IpLHVfdGV4c2l6ZTpuZXcg dC5Vbmlmb3JtMmYoZSxyLnVfdGV4c2l6ZSksdV9taXg6bmV3IHQuVW5pZm9ybTFmKGUsci51 X21peCksdV9wYXR0ZXJuX3NpemVfYTpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfcGF0dGVybl9z aXplX2EpLHVfcGF0dGVybl9zaXplX2I6bmV3IHQuVW5pZm9ybTJmKGUsci51X3BhdHRlcm5f c2l6ZV9iKSx1X3NjYWxlX2E6bmV3IHQuVW5pZm9ybTFmKGUsci51X3NjYWxlX2EpLHVfc2Nh bGVfYjpuZXcgdC5Vbmlmb3JtMWYoZSxyLnVfc2NhbGVfYiksdV9waXhlbF9jb29yZF91cHBl cjpuZXcgdC5Vbmlmb3JtMmYoZSxyLnVfcGl4ZWxfY29vcmRfdXBwZXIpLHVfcGl4ZWxfY29v cmRfbG93ZXI6bmV3IHQuVW5pZm9ybTJmKGUsci51X3BpeGVsX2Nvb3JkX2xvd2VyKSx1X3Rp bGVfdW5pdHNfdG9fcGl4ZWxzOm5ldyB0LlVuaWZvcm0xZihlLHIudV90aWxlX3VuaXRzX3Rv X3BpeGVscyl9fX07ZnVuY3Rpb24gS3IoZSxyLG4saSxhLG8scyl7Zm9yKHZhciBsPWUuY29u dGV4dCxjPWwuZ2wsdT1lLnVzZVByb2dyYW0oImNvbGxpc2lvbkJveCIpLGY9W10saD0wLHA9 MCxkPTA7ZDxpLmxlbmd0aDtkKyspe3ZhciBtPWlbZF0sZz1yLmdldFRpbGUobSksdj1nLmdl dEJ1Y2tldChuKTtpZih2KXt2YXIgeT1tLnBvc01hdHJpeDswPT09YVswXSYmMD09PWFbMV18 fCh5PWUudHJhbnNsYXRlUG9zTWF0cml4KG0ucG9zTWF0cml4LGcsYSxvKSk7dmFyIHg9cz92 LnRleHRDb2xsaXNpb25Cb3g6di5pY29uQ29sbGlzaW9uQm94LGI9di5jb2xsaXNpb25DaXJj bGVBcnJheTtpZihiLmxlbmd0aD4wKXt2YXIgXz10LmNyZWF0ZSgpLHc9eTt0Lm11bChfLHYu cGxhY2VtZW50SW52UHJvak1hdHJpeCxlLnRyYW5zZm9ybS5nbENvb3JkTWF0cml4KSx0Lm11 bChfLF8sdi5wbGFjZW1lbnRWaWV3cG9ydE1hdHJpeCksZi5wdXNoKHtjaXJjbGVBcnJheTpi LGNpcmNsZU9mZnNldDpwLHRyYW5zZm9ybTp3LGludlRyYW5zZm9ybTpffSkscD1oKz1iLmxl bmd0aC80fXgmJnUuZHJhdyhsLGMuTElORVMsQXQuZGlzYWJsZWQsTXQuZGlzYWJsZWQsZS5j b2xvck1vZGVGb3JSZW5kZXJQYXNzKCksRXQuZGlzYWJsZWQsQ3IoeSxlLnRyYW5zZm9ybSxn KSxuLmlkLHgubGF5b3V0VmVydGV4QnVmZmVyLHguaW5kZXhCdWZmZXIseC5zZWdtZW50cyxu dWxsLGUudHJhbnNmb3JtLnpvb20sbnVsbCxudWxsLHguY29sbGlzaW9uVmVydGV4QnVmZmVy KX19aWYocyYmZi5sZW5ndGgpe3ZhciBUPWUudXNlUHJvZ3JhbSgiY29sbGlzaW9uQ2lyY2xl Iiksaz1uZXcgdC5TdHJ1Y3RBcnJheUxheW91dDJmMWYyaTE2O2sucmVzaXplKDQqaCksay5f dHJpbSgpO2Zvcih2YXIgQT0wLE09MCxTPWY7TTxTLmxlbmd0aDtNKz0xKWZvcih2YXIgRT1T W01dLEw9MDtMPEUuY2lyY2xlQXJyYXkubGVuZ3RoLzQ7TCsrKXt2YXIgQz00KkwsUD1FLmNp cmNsZUFycmF5W0MrMF0sST1FLmNpcmNsZUFycmF5W0MrMV0sTz1FLmNpcmNsZUFycmF5W0Mr Ml0sej1FLmNpcmNsZUFycmF5W0MrM107ay5lbXBsYWNlKEErKyxQLEksTyx6LDApLGsuZW1w bGFjZShBKyssUCxJLE8seiwxKSxrLmVtcGxhY2UoQSsrLFAsSSxPLHosMiksay5lbXBsYWNl KEErKyxQLEksTyx6LDMpfSghcXJ8fHFyLmxlbmd0aDwyKmgpJiYocXI9ZnVuY3Rpb24oZSl7 dmFyIHI9MiplLG49bmV3IHQuU3RydWN0QXJyYXlMYXlvdXQzdWk2O24ucmVzaXplKHIpLG4u X3RyaW0oKTtmb3IodmFyIGk9MDtpPHI7aSsrKXt2YXIgYT02Kmk7bi51aW50MTZbYSswXT00 KmkrMCxuLnVpbnQxNlthKzFdPTQqaSsxLG4udWludDE2W2ErMl09NCppKzIsbi51aW50MTZb YSszXT00KmkrMixuLnVpbnQxNlthKzRdPTQqaSszLG4udWludDE2W2ErNV09NCppKzB9cmV0 dXJuIG59KGgpKTtmb3IodmFyIEQ9bC5jcmVhdGVJbmRleEJ1ZmZlcihxciwhMCksUj1sLmNy ZWF0ZVZlcnRleEJ1ZmZlcihrLHQuY29sbGlzaW9uQ2lyY2xlTGF5b3V0Lm1lbWJlcnMsITAp LEY9MCxCPWY7RjxCLmxlbmd0aDtGKz0xKXt2YXIgTj1CW0ZdLGo9UHIoTi50cmFuc2Zvcm0s Ti5pbnZUcmFuc2Zvcm0sZS50cmFuc2Zvcm0pO1QuZHJhdyhsLGMuVFJJQU5HTEVTLEF0LmRp c2FibGVkLE10LmRpc2FibGVkLGUuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpLEV0LmRpc2Fi bGVkLGosbi5pZCxSLEQsdC5TZWdtZW50VmVjdG9yLnNpbXBsZVNlZ21lbnQoMCwyKk4uY2ly Y2xlT2Zmc2V0LE4uY2lyY2xlQXJyYXkubGVuZ3RoLE4uY2lyY2xlQXJyYXkubGVuZ3RoLzIp LG51bGwsZS50cmFuc2Zvcm0uem9vbSxudWxsLG51bGwsbnVsbCl9Ui5kZXN0cm95KCksRC5k ZXN0cm95KCl9fXZhciBRcj10LmlkZW50aXR5KG5ldyBGbG9hdDMyQXJyYXkoMTYpKTtmdW5j dGlvbiAkcihlLHIsbixpLGEsbyl7dmFyIHM9dC5nZXRBbmNob3JBbGlnbm1lbnQoZSksbD0t KHMuaG9yaXpvbnRhbEFsaWduLS41KSpyLGM9LShzLnZlcnRpY2FsQWxpZ24tLjUpKm4sdT10 LmV2YWx1YXRlVmFyaWFibGVPZmZzZXQoZSxpKTtyZXR1cm4gbmV3IHQuUG9pbnQoKGwvYSt1 WzBdKSpvLChjL2ErdVsxXSkqbyl9ZnVuY3Rpb24gdG4oZSxyLG4saSxhLG8scyxsLGMsdSxm KXt2YXIgaD1lLnRleHQucGxhY2VkU3ltYm9sQXJyYXkscD1lLnRleHQuZHluYW1pY0xheW91 dFZlcnRleEFycmF5LGQ9ZS5pY29uLmR5bmFtaWNMYXlvdXRWZXJ0ZXhBcnJheSxtPXt9O3Au Y2xlYXIoKTtmb3IodmFyIGc9MDtnPGgubGVuZ3RoO2crKyl7dmFyIHY9aC5nZXQoZykseT1l LmFsbG93VmVydGljYWxQbGFjZW1lbnQmJiF2LnBsYWNlZE9yaWVudGF0aW9uLHg9di5oaWRk ZW58fCF2LmNyb3NzVGlsZUlEfHx5P251bGw6aVt2LmNyb3NzVGlsZUlEXTtpZih4KXt2YXIg Yj1uZXcgdC5Qb2ludCh2LmFuY2hvclgsdi5hbmNob3JZKSxfPXRlKGIsbj9sOnMpLHc9ZWUo by5jYW1lcmFUb0NlbnRlckRpc3RhbmNlLF8uc2lnbmVkRGlzdGFuY2VGcm9tQ2FtZXJhKSxU PWEuZXZhbHVhdGVTaXplRm9yRmVhdHVyZShlLnRleHRTaXplRGF0YSx1LHYpKncvdC5PTkVf RU07biYmKFQqPWUudGlsZVBpeGVsUmF0aW8vYyk7Zm9yKHZhciBrPXgud2lkdGgsQT14Lmhl aWdodCxNPSRyKHguYW5jaG9yLGssQSx4LnRleHRPZmZzZXQseC50ZXh0Qm94U2NhbGUsVCks Uz1uP3RlKGIuYWRkKE0pLHMpLnBvaW50Ol8ucG9pbnQuYWRkKHI/TS5yb3RhdGUoLW8uYW5n bGUpOk0pLEU9ZS5hbGxvd1ZlcnRpY2FsUGxhY2VtZW50JiZ2LnBsYWNlZE9yaWVudGF0aW9u PT09dC5Xcml0aW5nTW9kZS52ZXJ0aWNhbD9NYXRoLlBJLzI6MCxMPTA7TDx2Lm51bUdseXBo cztMKyspdC5hZGREeW5hbWljQXR0cmlidXRlcyhwLFMsRSk7ZiYmdi5hc3NvY2lhdGVkSWNv bkluZGV4Pj0wJiYobVt2LmFzc29jaWF0ZWRJY29uSW5kZXhdPXtzaGlmdGVkQW5jaG9yOlMs YW5nbGU6RX0pfWVsc2UgdWUodi5udW1HbHlwaHMscCl9aWYoZil7ZC5jbGVhcigpO2Zvcih2 YXIgQz1lLmljb24ucGxhY2VkU3ltYm9sQXJyYXksUD0wO1A8Qy5sZW5ndGg7UCsrKXt2YXIg ST1DLmdldChQKTtpZihJLmhpZGRlbil1ZShJLm51bUdseXBocyxkKTtlbHNle3ZhciBPPW1b UF07aWYoTylmb3IodmFyIHo9MDt6PEkubnVtR2x5cGhzO3orKyl0LmFkZER5bmFtaWNBdHRy aWJ1dGVzKGQsTy5zaGlmdGVkQW5jaG9yLE8uYW5nbGUpO2Vsc2UgdWUoSS5udW1HbHlwaHMs ZCl9fWUuaWNvbi5keW5hbWljTGF5b3V0VmVydGV4QnVmZmVyLnVwZGF0ZURhdGEoZCl9ZS50 ZXh0LmR5bmFtaWNMYXlvdXRWZXJ0ZXhCdWZmZXIudXBkYXRlRGF0YShwKX1mdW5jdGlvbiBl bih0LGUscil7cmV0dXJuIHIuaWNvbnNJblRleHQmJmU/InN5bWJvbFRleHRBbmRJY29uIjp0 PyJzeW1ib2xTREYiOiJzeW1ib2xJY29uIn1mdW5jdGlvbiBybihlLHIsbixpLGEsbyxzLGws Yyx1LGYsaCl7Zm9yKHZhciBwPWUuY29udGV4dCxkPXAuZ2wsbT1lLnRyYW5zZm9ybSxnPSJt YXAiPT09bCx2PSJtYXAiPT09Yyx5PWcmJiJwb2ludCIhPT1uLmxheW91dC5nZXQoInN5bWJv bC1wbGFjZW1lbnQiKSx4PWcmJiF2JiYheSxiPXZvaWQgMCE9PW4ubGF5b3V0LmdldCgic3lt Ym9sLXNvcnQta2V5IikuY29uc3RhbnRPcigxKSxfPWUuZGVwdGhNb2RlRm9yU3VibGF5ZXIo MCxBdC5SZWFkT25seSksdz1uLmxheW91dC5nZXQoInRleHQtdmFyaWFibGUtYW5jaG9yIiks VD1bXSxrPTAsQT1pO2s8QS5sZW5ndGg7ays9MSl7dmFyIE09QVtrXSxTPXIuZ2V0VGlsZShN KSxFPVMuZ2V0QnVja2V0KG4pO2lmKEUpe3ZhciBMPWE/RS50ZXh0OkUuaWNvbjtpZihMJiZM LnNlZ21lbnRzLmdldCgpLmxlbmd0aCl7dmFyIEM9TC5wcm9ncmFtQ29uZmlndXJhdGlvbnMu Z2V0KG4uaWQpLFA9YXx8RS5zZGZJY29ucyxJPWE/RS50ZXh0U2l6ZURhdGE6RS5pY29uU2l6 ZURhdGEsTz12fHwwIT09bS5waXRjaCx6PWUudXNlUHJvZ3JhbShlbihQLGEsRSksQyksRD10 LmV2YWx1YXRlU2l6ZUZvclpvb20oSSxtLnpvb20pLFI9dm9pZCAwLEY9WzAsMF0sQj12b2lk IDAsTj12b2lkIDAsaj1udWxsLFU9dm9pZCAwO2lmKGEpe2lmKEI9Uy5nbHlwaEF0bGFzVGV4 dHVyZSxOPWQuTElORUFSLFI9Uy5nbHlwaEF0bGFzVGV4dHVyZS5zaXplLEUuaWNvbnNJblRl eHQpe0Y9Uy5pbWFnZUF0bGFzVGV4dHVyZS5zaXplLGo9Uy5pbWFnZUF0bGFzVGV4dHVyZTt2 YXIgVj0iY29tcG9zaXRlIj09PUkua2luZHx8ImNhbWVyYSI9PT1JLmtpbmQ7VT1PfHxlLm9w dGlvbnMucm90YXRpbmd8fGUub3B0aW9ucy56b29taW5nfHxWP2QuTElORUFSOmQuTkVBUkVT VH19ZWxzZXt2YXIgSD0xIT09bi5sYXlvdXQuZ2V0KCJpY29uLXNpemUiKS5jb25zdGFudE9y KDApfHxFLmljb25zTmVlZExpbmVhcjtCPVMuaW1hZ2VBdGxhc1RleHR1cmUsTj1QfHxlLm9w dGlvbnMucm90YXRpbmd8fGUub3B0aW9ucy56b29taW5nfHxIfHxPP2QuTElORUFSOmQuTkVB UkVTVCxSPVMuaW1hZ2VBdGxhc1RleHR1cmUuc2l6ZX12YXIgcT1wZShTLDEsZS50cmFuc2Zv cm0uem9vbSksRz1RdChNLnBvc01hdHJpeCx2LGcsZS50cmFuc2Zvcm0scSksWT0kdChNLnBv c01hdHJpeCx2LGcsZS50cmFuc2Zvcm0scSksVz13JiZFLmhhc1RleHREYXRhKCksWD0ibm9u ZSIhPT1uLmxheW91dC5nZXQoImljb24tdGV4dC1maXQiKSYmVyYmRS5oYXNJY29uRGF0YSgp O3kmJm5lKEUsTS5wb3NNYXRyaXgsZSxhLEcsWSx2LHUpO3ZhciBaPWUudHJhbnNsYXRlUG9z TWF0cml4KE0ucG9zTWF0cml4LFMsbyxzKSxKPXl8fGEmJnd8fFg/UXI6RyxLPWUudHJhbnNs YXRlUG9zTWF0cml4KFksUyxvLHMsITApLFE9UCYmMCE9PW4ucGFpbnQuZ2V0KGE/InRleHQt aGFsby13aWR0aCI6Imljb24taGFsby13aWR0aCIpLmNvbnN0YW50T3IoMSksJD17cHJvZ3Jh bTp6LGJ1ZmZlcnM6TCx1bmlmb3JtVmFsdWVzOlA/RS5pY29uc0luVGV4dD9XcihJLmtpbmQs RCx4LHYsZSxaLEosSyxSLEYpOllyKEkua2luZCxELHgsdixlLFosSixLLGEsUiwhMCk6R3Io SS5raW5kLEQseCx2LGUsWixKLEssYSxSKSxhdGxhc1RleHR1cmU6QixhdGxhc1RleHR1cmVJ Y29uOmosYXRsYXNJbnRlcnBvbGF0aW9uOk4sYXRsYXNJbnRlcnBvbGF0aW9uSWNvbjpVLGlz U0RGOlAsaGFzSGFsbzpRfTtpZihiKWZvcih2YXIgdHQ9MCxldD1MLnNlZ21lbnRzLmdldCgp O3R0PGV0Lmxlbmd0aDt0dCs9MSl7dmFyIHJ0PWV0W3R0XTtULnB1c2goe3NlZ21lbnRzOm5l dyB0LlNlZ21lbnRWZWN0b3IoW3J0XSksc29ydEtleTpydC5zb3J0S2V5LHN0YXRlOiR9KX1l bHNlIFQucHVzaCh7c2VnbWVudHM6TC5zZWdtZW50cyxzb3J0S2V5OjAsc3RhdGU6JH0pfX19 YiYmVC5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0LnNvcnRLZXktZS5zb3J0S2V5fSkp O2Zvcih2YXIgbnQ9MCxpdD1UO250PGl0Lmxlbmd0aDtudCs9MSl7dmFyIGF0PWl0W250XSxv dD1hdC5zdGF0ZTtpZihwLmFjdGl2ZVRleHR1cmUuc2V0KGQuVEVYVFVSRTApLG90LmF0bGFz VGV4dHVyZS5iaW5kKG90LmF0bGFzSW50ZXJwb2xhdGlvbixkLkNMQU1QX1RPX0VER0UpLG90 LmF0bGFzVGV4dHVyZUljb24mJihwLmFjdGl2ZVRleHR1cmUuc2V0KGQuVEVYVFVSRTEpLG90 LmF0bGFzVGV4dHVyZUljb24mJm90LmF0bGFzVGV4dHVyZUljb24uYmluZChvdC5hdGxhc0lu dGVycG9sYXRpb25JY29uLGQuQ0xBTVBfVE9fRURHRSkpLG90LmlzU0RGKXt2YXIgc3Q9b3Qu dW5pZm9ybVZhbHVlcztvdC5oYXNIYWxvJiYoc3QudV9pc19oYWxvPTEsbm4ob3QuYnVmZmVy cyxhdC5zZWdtZW50cyxuLGUsb3QucHJvZ3JhbSxfLGYsaCxzdCkpLHN0LnVfaXNfaGFsbz0w fW5uKG90LmJ1ZmZlcnMsYXQuc2VnbWVudHMsbixlLG90LnByb2dyYW0sXyxmLGgsb3QudW5p Zm9ybVZhbHVlcyl9fWZ1bmN0aW9uIG5uKHQsZSxyLG4saSxhLG8scyxsKXt2YXIgYz1uLmNv bnRleHQsdT1jLmdsO2kuZHJhdyhjLHUuVFJJQU5HTEVTLGEsbyxzLEV0LmRpc2FibGVkLGws ci5pZCx0LmxheW91dFZlcnRleEJ1ZmZlcix0LmluZGV4QnVmZmVyLGUsci5wYWludCxuLnRy YW5zZm9ybS56b29tLHQucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmdldChyLmlkKSx0LmR5bmFt aWNMYXlvdXRWZXJ0ZXhCdWZmZXIsdC5vcGFjaXR5VmVydGV4QnVmZmVyKX1mdW5jdGlvbiBh bih0LGUscixuLGksYSxvKXt2YXIgcyxsLGMsdSxmLGg9dC5jb250ZXh0LmdsLHA9ci5wYWlu dC5nZXQoImZpbGwtcGF0dGVybiIpLGQ9cCYmcC5jb25zdGFudE9yKDEpLG09ci5nZXRDcm9z c2ZhZGVQYXJhbWV0ZXJzKCk7bz8obD1kJiYhci5nZXRQYWludFByb3BlcnR5KCJmaWxsLW91 dGxpbmUtY29sb3IiKT8iZmlsbE91dGxpbmVQYXR0ZXJuIjoiZmlsbE91dGxpbmUiLHM9aC5M SU5FUyk6KGw9ZD8iZmlsbFBhdHRlcm4iOiJmaWxsIixzPWguVFJJQU5HTEVTKTtmb3IodmFy IGc9MCx2PW47Zzx2Lmxlbmd0aDtnKz0xKXt2YXIgeT12W2ddLHg9ZS5nZXRUaWxlKHkpO2lm KCFkfHx4LnBhdHRlcm5zTG9hZGVkKCkpe3ZhciBiPXguZ2V0QnVja2V0KHIpO2lmKGIpe3Zh ciBfPWIucHJvZ3JhbUNvbmZpZ3VyYXRpb25zLmdldChyLmlkKSx3PXQudXNlUHJvZ3JhbShs LF8pO2QmJih0LmNvbnRleHQuYWN0aXZlVGV4dHVyZS5zZXQoaC5URVhUVVJFMCkseC5pbWFn ZUF0bGFzVGV4dHVyZS5iaW5kKGguTElORUFSLGguQ0xBTVBfVE9fRURHRSksXy51cGRhdGVQ YWludEJ1ZmZlcnMobSkpO3ZhciBUPXAuY29uc3RhbnRPcihudWxsKTtpZihUJiZ4LmltYWdl QXRsYXMpe3ZhciBrPXguaW1hZ2VBdGxhcyxBPWsucGF0dGVyblBvc2l0aW9uc1tULnRvLnRv U3RyaW5nKCldLE09ay5wYXR0ZXJuUG9zaXRpb25zW1QuZnJvbS50b1N0cmluZygpXTtBJiZN JiZfLnNldENvbnN0YW50UGF0dGVyblBvc2l0aW9ucyhBLE0pfXZhciBTPXQudHJhbnNsYXRl UG9zTWF0cml4KHkucG9zTWF0cml4LHgsci5wYWludC5nZXQoImZpbGwtdHJhbnNsYXRlIiks ci5wYWludC5nZXQoImZpbGwtdHJhbnNsYXRlLWFuY2hvciIpKTtpZihvKXt1PWIuaW5kZXhC dWZmZXIyLGY9Yi5zZWdtZW50czI7dmFyIEU9W2guZHJhd2luZ0J1ZmZlcldpZHRoLGguZHJh d2luZ0J1ZmZlckhlaWdodF07Yz0iZmlsbE91dGxpbmVQYXR0ZXJuIj09PWwmJmQ/RXIoUyx0 LG0seCxFKTpTcihTLEUpfWVsc2UgdT1iLmluZGV4QnVmZmVyLGY9Yi5zZWdtZW50cyxjPWQ/ TXIoUyx0LG0seCk6QXIoUyk7dy5kcmF3KHQuY29udGV4dCxzLGksdC5zdGVuY2lsTW9kZUZv ckNsaXBwaW5nKHkpLGEsRXQuZGlzYWJsZWQsYyxyLmlkLGIubGF5b3V0VmVydGV4QnVmZmVy LHUsZixyLnBhaW50LHQudHJhbnNmb3JtLnpvb20sXyl9fX19ZnVuY3Rpb24gb24odCxlLHIs bixpLGEsbyl7Zm9yKHZhciBzPXQuY29udGV4dCxsPXMuZ2wsYz1yLnBhaW50LmdldCgiZmls bC1leHRydXNpb24tcGF0dGVybiIpLHU9Yy5jb25zdGFudE9yKDEpLGY9ci5nZXRDcm9zc2Zh ZGVQYXJhbWV0ZXJzKCksaD1yLnBhaW50LmdldCgiZmlsbC1leHRydXNpb24tb3BhY2l0eSIp LHA9MCxkPW47cDxkLmxlbmd0aDtwKz0xKXt2YXIgbT1kW3BdLGc9ZS5nZXRUaWxlKG0pLHY9 Zy5nZXRCdWNrZXQocik7aWYodil7dmFyIHk9di5wcm9ncmFtQ29uZmlndXJhdGlvbnMuZ2V0 KHIuaWQpLHg9dC51c2VQcm9ncmFtKHU/ImZpbGxFeHRydXNpb25QYXR0ZXJuIjoiZmlsbEV4 dHJ1c2lvbiIseSk7dSYmKHQuY29udGV4dC5hY3RpdmVUZXh0dXJlLnNldChsLlRFWFRVUkUw KSxnLmltYWdlQXRsYXNUZXh0dXJlLmJpbmQobC5MSU5FQVIsbC5DTEFNUF9UT19FREdFKSx5 LnVwZGF0ZVBhaW50QnVmZmVycyhmKSk7dmFyIGI9Yy5jb25zdGFudE9yKG51bGwpO2lmKGIm JmcuaW1hZ2VBdGxhcyl7dmFyIF89Zy5pbWFnZUF0bGFzLHc9Xy5wYXR0ZXJuUG9zaXRpb25z W2IudG8udG9TdHJpbmcoKV0sVD1fLnBhdHRlcm5Qb3NpdGlvbnNbYi5mcm9tLnRvU3RyaW5n KCldO3cmJlQmJnkuc2V0Q29uc3RhbnRQYXR0ZXJuUG9zaXRpb25zKHcsVCl9dmFyIGs9dC50 cmFuc2xhdGVQb3NNYXRyaXgobS5wb3NNYXRyaXgsZyxyLnBhaW50LmdldCgiZmlsbC1leHRy dXNpb24tdHJhbnNsYXRlIiksci5wYWludC5nZXQoImZpbGwtZXh0cnVzaW9uLXRyYW5zbGF0 ZS1hbmNob3IiKSksQT1yLnBhaW50LmdldCgiZmlsbC1leHRydXNpb24tdmVydGljYWwtZ3Jh ZGllbnQiKSxNPXU/a3Ioayx0LEEsaCxtLGYsZyk6VHIoayx0LEEsaCk7eC5kcmF3KHMscy5n bC5UUklBTkdMRVMsaSxhLG8sRXQuYmFja0NDVyxNLHIuaWQsdi5sYXlvdXRWZXJ0ZXhCdWZm ZXIsdi5pbmRleEJ1ZmZlcix2LnNlZ21lbnRzLHIucGFpbnQsdC50cmFuc2Zvcm0uem9vbSx5 KX19fWZ1bmN0aW9uIHNuKHQsZSxyLG4saSxhKXt2YXIgbz10LmNvbnRleHQscz1vLmdsLGw9 ZS5mYm87aWYobCl7dmFyIGM9dC51c2VQcm9ncmFtKCJoaWxsc2hhZGUiKTtvLmFjdGl2ZVRl eHR1cmUuc2V0KHMuVEVYVFVSRTApLHMuYmluZFRleHR1cmUocy5URVhUVVJFXzJELGwuY29s b3JBdHRhY2htZW50LmdldCgpKTt2YXIgdT1mdW5jdGlvbih0LGUscil7dmFyIG49ci5wYWlu dC5nZXQoImhpbGxzaGFkZS1zaGFkb3ctY29sb3IiKSxpPXIucGFpbnQuZ2V0KCJoaWxsc2hh ZGUtaGlnaGxpZ2h0LWNvbG9yIiksYT1yLnBhaW50LmdldCgiaGlsbHNoYWRlLWFjY2VudC1j b2xvciIpLG89ci5wYWludC5nZXQoImhpbGxzaGFkZS1pbGx1bWluYXRpb24tZGlyZWN0aW9u IikqKE1hdGguUEkvMTgwKTsidmlld3BvcnQiPT09ci5wYWludC5nZXQoImhpbGxzaGFkZS1p bGx1bWluYXRpb24tYW5jaG9yIikmJihvLT10LnRyYW5zZm9ybS5hbmdsZSk7dmFyIHM9IXQu b3B0aW9ucy5tb3Zpbmc7cmV0dXJue3VfbWF0cml4OnQudHJhbnNmb3JtLmNhbGN1bGF0ZVBv c01hdHJpeChlLnRpbGVJRC50b1Vud3JhcHBlZCgpLHMpLHVfaW1hZ2U6MCx1X2xhdHJhbmdl OkRyKHQsZS50aWxlSUQpLHVfbGlnaHQ6W3IucGFpbnQuZ2V0KCJoaWxsc2hhZGUtZXhhZ2dl cmF0aW9uIiksb10sdV9zaGFkb3c6bix1X2hpZ2hsaWdodDppLHVfYWNjZW50OmF9fSh0LGUs cik7Yy5kcmF3KG8scy5UUklBTkdMRVMsbixpLGEsRXQuZGlzYWJsZWQsdSxyLmlkLHQucmFz dGVyQm91bmRzQnVmZmVyLHQucXVhZFRyaWFuZ2xlSW5kZXhCdWZmZXIsdC5yYXN0ZXJCb3Vu ZHNTZWdtZW50cyl9fWZ1bmN0aW9uIGxuKGUscixuLGksYSxvLHMpe3ZhciBsPWUuY29udGV4 dCxjPWwuZ2wsdT1yLmRlbTtpZih1JiZ1LmRhdGEpe3ZhciBmPXUuZGltLGg9dS5zdHJpZGUs cD11LmdldFBpeGVscygpO2lmKGwuYWN0aXZlVGV4dHVyZS5zZXQoYy5URVhUVVJFMSksbC5w aXhlbFN0b3JlVW5wYWNrUHJlbXVsdGlwbHlBbHBoYS5zZXQoITEpLHIuZGVtVGV4dHVyZT1y LmRlbVRleHR1cmV8fGUuZ2V0VGlsZVRleHR1cmUoaCksci5kZW1UZXh0dXJlKXt2YXIgZD1y LmRlbVRleHR1cmU7ZC51cGRhdGUocCx7cHJlbXVsdGlwbHk6ITF9KSxkLmJpbmQoYy5ORUFS RVNULGMuQ0xBTVBfVE9fRURHRSl9ZWxzZSByLmRlbVRleHR1cmU9bmV3IHQuVGV4dHVyZShs LHAsYy5SR0JBLHtwcmVtdWx0aXBseTohMX0pLHIuZGVtVGV4dHVyZS5iaW5kKGMuTkVBUkVT VCxjLkNMQU1QX1RPX0VER0UpO2wuYWN0aXZlVGV4dHVyZS5zZXQoYy5URVhUVVJFMCk7dmFy IG09ci5mYm87aWYoIW0pe3ZhciBnPW5ldyB0LlRleHR1cmUobCx7d2lkdGg6ZixoZWlnaHQ6 ZixkYXRhOm51bGx9LGMuUkdCQSk7Zy5iaW5kKGMuTElORUFSLGMuQ0xBTVBfVE9fRURHRSks KG09ci5mYm89bC5jcmVhdGVGcmFtZWJ1ZmZlcihmLGYsITApKS5jb2xvckF0dGFjaG1lbnQu c2V0KGcudGV4dHVyZSl9bC5iaW5kRnJhbWVidWZmZXIuc2V0KG0uZnJhbWVidWZmZXIpLGwu dmlld3BvcnQuc2V0KFswLDAsZixmXSksZS51c2VQcm9ncmFtKCJoaWxsc2hhZGVQcmVwYXJl IikuZHJhdyhsLGMuVFJJQU5HTEVTLGEsbyxzLEV0LmRpc2FibGVkLGZ1bmN0aW9uKGUscixu KXt2YXIgaT1yLnN0cmlkZSxhPXQuY3JlYXRlKCk7cmV0dXJuIHQub3J0aG8oYSwwLHQuRVhU RU5ULC10LkVYVEVOVCwwLDAsMSksdC50cmFuc2xhdGUoYSxhLFswLC10LkVYVEVOVCwwXSks e3VfbWF0cml4OmEsdV9pbWFnZToxLHVfZGltZW5zaW9uOltpLGldLHVfem9vbTplLm92ZXJz Y2FsZWRaLHVfbWF4em9vbTpuLHVfdW5wYWNrOnIuZ2V0VW5wYWNrVmVjdG9yKCl9fShyLnRp bGVJRCx1LGkpLG4uaWQsZS5yYXN0ZXJCb3VuZHNCdWZmZXIsZS5xdWFkVHJpYW5nbGVJbmRl eEJ1ZmZlcixlLnJhc3RlckJvdW5kc1NlZ21lbnRzKSxyLm5lZWRzSGlsbHNoYWRlUHJlcGFy ZT0hMX19ZnVuY3Rpb24gY24oZSxyLG4saSxhKXt2YXIgbz1pLnBhaW50LmdldCgicmFzdGVy LWZhZGUtZHVyYXRpb24iKTtpZihvPjApe3ZhciBzPXQuYnJvd3Nlci5ub3coKSxsPShzLWUu dGltZUFkZGVkKS9vLGM9cj8ocy1yLnRpbWVBZGRlZCkvbzotMSx1PW4uZ2V0U291cmNlKCks Zj1hLmNvdmVyaW5nWm9vbUxldmVsKHt0aWxlU2l6ZTp1LnRpbGVTaXplLHJvdW5kWm9vbTp1 LnJvdW5kWm9vbX0pLGg9IXJ8fE1hdGguYWJzKHIudGlsZUlELm92ZXJzY2FsZWRaLWYpPk1h dGguYWJzKGUudGlsZUlELm92ZXJzY2FsZWRaLWYpLHA9aCYmZS5yZWZyZXNoZWRVcG9uRXhw aXJhdGlvbj8xOnQuY2xhbXAoaD9sOjEtYywwLDEpO3JldHVybiBlLnJlZnJlc2hlZFVwb25F eHBpcmF0aW9uJiZsPj0xJiYoZS5yZWZyZXNoZWRVcG9uRXhwaXJhdGlvbj0hMSkscj97b3Bh Y2l0eToxLG1peDoxLXB9OntvcGFjaXR5OnAsbWl4OjB9fXJldHVybntvcGFjaXR5OjEsbWl4 OjB9fXZhciB1bj1uZXcgdC5Db2xvcigxLDAsMCwxKSxmbj1uZXcgdC5Db2xvcigwLDEsMCwx KSxobj1uZXcgdC5Db2xvcigwLDAsMSwxKSxwbj1uZXcgdC5Db2xvcigxLDAsMSwxKSxkbj1u ZXcgdC5Db2xvcigwLDEsMSwxKTtmdW5jdGlvbiBtbih0KXt2YXIgZT10LnRyYW5zZm9ybS5w YWRkaW5nO2duKHQsdC50cmFuc2Zvcm0uaGVpZ2h0LShlLnRvcHx8MCksMyx1biksZ24odCxl LmJvdHRvbXx8MCwzLGZuKSx2bih0LGUubGVmdHx8MCwzLGhuKSx2bih0LHQudHJhbnNmb3Jt LndpZHRoLShlLnJpZ2h0fHwwKSwzLHBuKTt2YXIgcj10LnRyYW5zZm9ybS5jZW50ZXJQb2lu dDshZnVuY3Rpb24odCxlLHIsbil7eW4odCxlLTEsci0xMCwyLDIwLG4pLHluKHQsZS0xMCxy LTEsMjAsMixuKX0odCxyLngsdC50cmFuc2Zvcm0uaGVpZ2h0LXIueSxkbil9ZnVuY3Rpb24g Z24odCxlLHIsbil7eW4odCwwLGUrci8yLHQudHJhbnNmb3JtLndpZHRoLHIsbil9ZnVuY3Rp b24gdm4odCxlLHIsbil7eW4odCxlLXIvMiwwLHIsdC50cmFuc2Zvcm0uaGVpZ2h0LG4pfWZ1 bmN0aW9uIHluKGUscixuLGksYSxvKXt2YXIgcz1lLmNvbnRleHQsbD1zLmdsO2wuZW5hYmxl KGwuU0NJU1NPUl9URVNUKSxsLnNjaXNzb3Iocip0LmJyb3dzZXIuZGV2aWNlUGl4ZWxSYXRp byxuKnQuYnJvd3Nlci5kZXZpY2VQaXhlbFJhdGlvLGkqdC5icm93c2VyLmRldmljZVBpeGVs UmF0aW8sYSp0LmJyb3dzZXIuZGV2aWNlUGl4ZWxSYXRpbykscy5jbGVhcih7Y29sb3I6b30p LGwuZGlzYWJsZShsLlNDSVNTT1JfVEVTVCl9ZnVuY3Rpb24geG4oZSxyLG4pe3ZhciBpPWUu Y29udGV4dCxhPWkuZ2wsbz1uLnBvc01hdHJpeCxzPWUudXNlUHJvZ3JhbSgiZGVidWciKSxs PUF0LmRpc2FibGVkLGM9TXQuZGlzYWJsZWQsdT1lLmNvbG9yTW9kZUZvclJlbmRlclBhc3Mo KTtpLmFjdGl2ZVRleHR1cmUuc2V0KGEuVEVYVFVSRTApLGUuZW1wdHlUZXh0dXJlLmJpbmQo YS5MSU5FQVIsYS5DTEFNUF9UT19FREdFKSxzLmRyYXcoaSxhLkxJTkVfU1RSSVAsbCxjLHUs RXQuZGlzYWJsZWQsSXIobyx0LkNvbG9yLnJlZCksIiRkZWJ1ZyIsZS5kZWJ1Z0J1ZmZlcixl LnRpbGVCb3JkZXJJbmRleEJ1ZmZlcixlLmRlYnVnU2VnbWVudHMpO3ZhciBmPXIuZ2V0VGls ZUJ5SUQobi5rZXkpLmxhdGVzdFJhd1RpbGVEYXRhLGg9ZiYmZi5ieXRlTGVuZ3RofHwwLHA9 TWF0aC5mbG9vcihoLzEwMjQpLGQ9ci5nZXRUaWxlKG4pLnRpbGVTaXplLG09NTEyL01hdGgu bWluKGQsNTEyKSoobi5vdmVyc2NhbGVkWi9lLnRyYW5zZm9ybS56b29tKSouNSxnPW4uY2Fu b25pY2FsLnRvU3RyaW5nKCk7bi5vdmVyc2NhbGVkWiE9PW4uY2Fub25pY2FsLnomJihnKz0i ID0+ICIrbi5vdmVyc2NhbGVkWiksZnVuY3Rpb24odCxlKXt0LmluaXREZWJ1Z092ZXJsYXlD YW52YXMoKTt2YXIgcj10LmRlYnVnT3ZlcmxheUNhbnZhcyxuPXQuY29udGV4dC5nbCxpPXQu ZGVidWdPdmVybGF5Q2FudmFzLmdldENvbnRleHQoIjJkIik7aS5jbGVhclJlY3QoMCwwLHIu d2lkdGgsci5oZWlnaHQpLGkuc2hhZG93Q29sb3I9IndoaXRlIixpLnNoYWRvd0JsdXI9Mixp LmxpbmVXaWR0aD0xLjUsaS5zdHJva2VTdHlsZT0id2hpdGUiLGkudGV4dEJhc2VsaW5lPSJ0 b3AiLGkuZm9udD0iYm9sZCAzNnB4IE9wZW4gU2Fucywgc2Fucy1zZXJpZiIsaS5maWxsVGV4 dChlLDUsNSksaS5zdHJva2VUZXh0KGUsNSw1KSx0LmRlYnVnT3ZlcmxheVRleHR1cmUudXBk YXRlKHIpLHQuZGVidWdPdmVybGF5VGV4dHVyZS5iaW5kKG4uTElORUFSLG4uQ0xBTVBfVE9f RURHRSl9KGUsZysiICIrcCsia2IiKSxzLmRyYXcoaSxhLlRSSUFOR0xFUyxsLGMsU3QuYWxw aGFCbGVuZGVkLEV0LmRpc2FibGVkLElyKG8sdC5Db2xvci50cmFuc3BhcmVudCxtKSwiJGRl YnVnIixlLmRlYnVnQnVmZmVyLGUucXVhZFRyaWFuZ2xlSW5kZXhCdWZmZXIsZS5kZWJ1Z1Nl Z21lbnRzKX12YXIgYm49e3N5bWJvbDpmdW5jdGlvbihlLHIsbixpLGEpe2lmKCJ0cmFuc2x1 Y2VudCI9PT1lLnJlbmRlclBhc3Mpe3ZhciBvPU10LmRpc2FibGVkLHM9ZS5jb2xvck1vZGVG b3JSZW5kZXJQYXNzKCk7bi5sYXlvdXQuZ2V0KCJ0ZXh0LXZhcmlhYmxlLWFuY2hvciIpJiZm dW5jdGlvbihlLHIsbixpLGEsbyxzKXtmb3IodmFyIGw9ci50cmFuc2Zvcm0sYz0ibWFwIj09 PWEsdT0ibWFwIj09PW8sZj0wLGg9ZTtmPGgubGVuZ3RoO2YrPTEpe3ZhciBwPWhbZl0sZD1p LmdldFRpbGUocCksbT1kLmdldEJ1Y2tldChuKTtpZihtJiZtLnRleHQmJm0udGV4dC5zZWdt ZW50cy5nZXQoKS5sZW5ndGgpe3ZhciBnPW0udGV4dFNpemVEYXRhLHY9dC5ldmFsdWF0ZVNp emVGb3Jab29tKGcsbC56b29tKSx5PXBlKGQsMSxyLnRyYW5zZm9ybS56b29tKSx4PVF0KHAu cG9zTWF0cml4LHUsYyxyLnRyYW5zZm9ybSx5KSxiPSJub25lIiE9PW4ubGF5b3V0LmdldCgi aWNvbi10ZXh0LWZpdCIpJiZtLmhhc0ljb25EYXRhKCk7aWYodil7dmFyIF89TWF0aC5wb3co MixsLnpvb20tZC50aWxlSUQub3ZlcnNjYWxlZFopO3RuKG0sYyx1LHMsdC5zeW1ib2xTaXpl LGwseCxwLnBvc01hdHJpeCxfLHYsYil9fX19KGksZSxuLHIsbi5sYXlvdXQuZ2V0KCJ0ZXh0 LXJvdGF0aW9uLWFsaWdubWVudCIpLG4ubGF5b3V0LmdldCgidGV4dC1waXRjaC1hbGlnbm1l bnQiKSxhKSwwIT09bi5wYWludC5nZXQoImljb24tb3BhY2l0eSIpLmNvbnN0YW50T3IoMSkm JnJuKGUscixuLGksITEsbi5wYWludC5nZXQoImljb24tdHJhbnNsYXRlIiksbi5wYWludC5n ZXQoImljb24tdHJhbnNsYXRlLWFuY2hvciIpLG4ubGF5b3V0LmdldCgiaWNvbi1yb3RhdGlv bi1hbGlnbm1lbnQiKSxuLmxheW91dC5nZXQoImljb24tcGl0Y2gtYWxpZ25tZW50Iiksbi5s YXlvdXQuZ2V0KCJpY29uLWtlZXAtdXByaWdodCIpLG8scyksMCE9PW4ucGFpbnQuZ2V0KCJ0 ZXh0LW9wYWNpdHkiKS5jb25zdGFudE9yKDEpJiZybihlLHIsbixpLCEwLG4ucGFpbnQuZ2V0 KCJ0ZXh0LXRyYW5zbGF0ZSIpLG4ucGFpbnQuZ2V0KCJ0ZXh0LXRyYW5zbGF0ZS1hbmNob3Ii KSxuLmxheW91dC5nZXQoInRleHQtcm90YXRpb24tYWxpZ25tZW50Iiksbi5sYXlvdXQuZ2V0 KCJ0ZXh0LXBpdGNoLWFsaWdubWVudCIpLG4ubGF5b3V0LmdldCgidGV4dC1rZWVwLXVwcmln aHQiKSxvLHMpLHIubWFwLnNob3dDb2xsaXNpb25Cb3hlcyYmKEtyKGUscixuLGksbi5wYWlu dC5nZXQoInRleHQtdHJhbnNsYXRlIiksbi5wYWludC5nZXQoInRleHQtdHJhbnNsYXRlLWFu Y2hvciIpLCEwKSxLcihlLHIsbixpLG4ucGFpbnQuZ2V0KCJpY29uLXRyYW5zbGF0ZSIpLG4u cGFpbnQuZ2V0KCJpY29uLXRyYW5zbGF0ZS1hbmNob3IiKSwhMSkpfX0sY2lyY2xlOmZ1bmN0 aW9uKGUscixuLGkpe2lmKCJ0cmFuc2x1Y2VudCI9PT1lLnJlbmRlclBhc3Mpe3ZhciBhPW4u cGFpbnQuZ2V0KCJjaXJjbGUtb3BhY2l0eSIpLG89bi5wYWludC5nZXQoImNpcmNsZS1zdHJv a2Utd2lkdGgiKSxzPW4ucGFpbnQuZ2V0KCJjaXJjbGUtc3Ryb2tlLW9wYWNpdHkiKSxsPXZv aWQgMCE9PW4ubGF5b3V0LmdldCgiY2lyY2xlLXNvcnQta2V5IikuY29uc3RhbnRPcigxKTtp ZigwIT09YS5jb25zdGFudE9yKDEpfHwwIT09by5jb25zdGFudE9yKDEpJiYwIT09cy5jb25z dGFudE9yKDEpKXtmb3IodmFyIGM9ZS5jb250ZXh0LHU9Yy5nbCxmPWUuZGVwdGhNb2RlRm9y U3VibGF5ZXIoMCxBdC5SZWFkT25seSksaD1NdC5kaXNhYmxlZCxwPWUuY29sb3JNb2RlRm9y UmVuZGVyUGFzcygpLGQ9W10sbT0wO208aS5sZW5ndGg7bSsrKXt2YXIgZz1pW21dLHY9ci5n ZXRUaWxlKGcpLHk9di5nZXRCdWNrZXQobik7aWYoeSl7dmFyIHg9eS5wcm9ncmFtQ29uZmln dXJhdGlvbnMuZ2V0KG4uaWQpLGI9e3Byb2dyYW1Db25maWd1cmF0aW9uOngscHJvZ3JhbTpl LnVzZVByb2dyYW0oImNpcmNsZSIseCksbGF5b3V0VmVydGV4QnVmZmVyOnkubGF5b3V0VmVy dGV4QnVmZmVyLGluZGV4QnVmZmVyOnkuaW5kZXhCdWZmZXIsdW5pZm9ybVZhbHVlczpMcihl LGcsdixuKX07aWYobClmb3IodmFyIF89MCx3PXkuc2VnbWVudHMuZ2V0KCk7Xzx3Lmxlbmd0 aDtfKz0xKXt2YXIgVD13W19dO2QucHVzaCh7c2VnbWVudHM6bmV3IHQuU2VnbWVudFZlY3Rv cihbVF0pLHNvcnRLZXk6VC5zb3J0S2V5LHN0YXRlOmJ9KX1lbHNlIGQucHVzaCh7c2VnbWVu dHM6eS5zZWdtZW50cyxzb3J0S2V5OjAsc3RhdGU6Yn0pfX1sJiZkLnNvcnQoKGZ1bmN0aW9u KHQsZSl7cmV0dXJuIHQuc29ydEtleS1lLnNvcnRLZXl9KSk7Zm9yKHZhciBrPTAsQT1kO2s8 QS5sZW5ndGg7ays9MSl7dmFyIE09QVtrXSxTPU0uc3RhdGUsRT1TLnByb2dyYW1Db25maWd1 cmF0aW9uLEw9Uy5wcm9ncmFtLEM9Uy5sYXlvdXRWZXJ0ZXhCdWZmZXIsUD1TLmluZGV4QnVm ZmVyLEk9Uy51bmlmb3JtVmFsdWVzLE89TS5zZWdtZW50cztMLmRyYXcoYyx1LlRSSUFOR0xF UyxmLGgscCxFdC5kaXNhYmxlZCxJLG4uaWQsQyxQLE8sbi5wYWludCxlLnRyYW5zZm9ybS56 b29tLEUpfX19fSxoZWF0bWFwOmZ1bmN0aW9uKGUscixuLGkpe2lmKDAhPT1uLnBhaW50Lmdl dCgiaGVhdG1hcC1vcGFjaXR5IikpaWYoIm9mZnNjcmVlbiI9PT1lLnJlbmRlclBhc3Mpe3Zh ciBhPWUuY29udGV4dCxvPWEuZ2wscz1NdC5kaXNhYmxlZCxsPW5ldyBTdChbby5PTkUsby5P TkVdLHQuQ29sb3IudHJhbnNwYXJlbnQsWyEwLCEwLCEwLCEwXSk7IWZ1bmN0aW9uKHQsZSxy KXt2YXIgbj10LmdsO3QuYWN0aXZlVGV4dHVyZS5zZXQobi5URVhUVVJFMSksdC52aWV3cG9y dC5zZXQoWzAsMCxlLndpZHRoLzQsZS5oZWlnaHQvNF0pO3ZhciBpPXIuaGVhdG1hcEZibztp ZihpKW4uYmluZFRleHR1cmUobi5URVhUVVJFXzJELGkuY29sb3JBdHRhY2htZW50LmdldCgp KSx0LmJpbmRGcmFtZWJ1ZmZlci5zZXQoaS5mcmFtZWJ1ZmZlcik7ZWxzZXt2YXIgYT1uLmNy ZWF0ZVRleHR1cmUoKTtuLmJpbmRUZXh0dXJlKG4uVEVYVFVSRV8yRCxhKSxuLnRleFBhcmFt ZXRlcmkobi5URVhUVVJFXzJELG4uVEVYVFVSRV9XUkFQX1Msbi5DTEFNUF9UT19FREdFKSxu LnRleFBhcmFtZXRlcmkobi5URVhUVVJFXzJELG4uVEVYVFVSRV9XUkFQX1Qsbi5DTEFNUF9U T19FREdFKSxuLnRleFBhcmFtZXRlcmkobi5URVhUVVJFXzJELG4uVEVYVFVSRV9NSU5fRklM VEVSLG4uTElORUFSKSxuLnRleFBhcmFtZXRlcmkobi5URVhUVVJFXzJELG4uVEVYVFVSRV9N QUdfRklMVEVSLG4uTElORUFSKSxpPXIuaGVhdG1hcEZibz10LmNyZWF0ZUZyYW1lYnVmZmVy KGUud2lkdGgvNCxlLmhlaWdodC80LCExKSxmdW5jdGlvbih0LGUscixuKXt2YXIgaT10Lmds LGE9dC5leHRSZW5kZXJUb1RleHR1cmVIYWxmRmxvYXQ/dC5leHRUZXh0dXJlSGFsZkZsb2F0 LkhBTEZfRkxPQVRfT0VTOmkuVU5TSUdORURfQllURTtpLnRleEltYWdlMkQoaS5URVhUVVJF XzJELDAsaS5SR0JBLGUud2lkdGgvNCxlLmhlaWdodC80LDAsaS5SR0JBLGEsbnVsbCksbi5j b2xvckF0dGFjaG1lbnQuc2V0KHIpfSh0LGUsYSxpKX19KGEsZSxuKSxhLmNsZWFyKHtjb2xv cjp0LkNvbG9yLnRyYW5zcGFyZW50fSk7Zm9yKHZhciBjPTA7YzxpLmxlbmd0aDtjKyspe3Zh ciB1PWlbY107aWYoIXIuaGFzUmVuZGVyYWJsZVBhcmVudCh1KSl7dmFyIGY9ci5nZXRUaWxl KHUpLGg9Zi5nZXRCdWNrZXQobik7aWYoaCl7dmFyIHA9aC5wcm9ncmFtQ29uZmlndXJhdGlv bnMuZ2V0KG4uaWQpLGQ9ZS51c2VQcm9ncmFtKCJoZWF0bWFwIixwKSxtPWUudHJhbnNmb3Jt Lnpvb207ZC5kcmF3KGEsby5UUklBTkdMRVMsQXQuZGlzYWJsZWQscyxsLEV0LmRpc2FibGVk LHpyKHUucG9zTWF0cml4LGYsbSxuLnBhaW50LmdldCgiaGVhdG1hcC1pbnRlbnNpdHkiKSks bi5pZCxoLmxheW91dFZlcnRleEJ1ZmZlcixoLmluZGV4QnVmZmVyLGguc2VnbWVudHMsbi5w YWludCxlLnRyYW5zZm9ybS56b29tLHApfX19YS52aWV3cG9ydC5zZXQoWzAsMCxlLndpZHRo LGUuaGVpZ2h0XSl9ZWxzZSJ0cmFuc2x1Y2VudCI9PT1lLnJlbmRlclBhc3MmJihlLmNvbnRl eHQuc2V0Q29sb3JNb2RlKGUuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpKSxmdW5jdGlvbihl LHIpe3ZhciBuPWUuY29udGV4dCxpPW4uZ2wsYT1yLmhlYXRtYXBGYm87aWYoIWEpcmV0dXJu O24uYWN0aXZlVGV4dHVyZS5zZXQoaS5URVhUVVJFMCksaS5iaW5kVGV4dHVyZShpLlRFWFRV UkVfMkQsYS5jb2xvckF0dGFjaG1lbnQuZ2V0KCkpLG4uYWN0aXZlVGV4dHVyZS5zZXQoaS5U RVhUVVJFMSk7dmFyIG89ci5jb2xvclJhbXBUZXh0dXJlO298fChvPXIuY29sb3JSYW1wVGV4 dHVyZT1uZXcgdC5UZXh0dXJlKG4sci5jb2xvclJhbXAsaS5SR0JBKSk7by5iaW5kKGkuTElO RUFSLGkuQ0xBTVBfVE9fRURHRSksZS51c2VQcm9ncmFtKCJoZWF0bWFwVGV4dHVyZSIpLmRy YXcobixpLlRSSUFOR0xFUyxBdC5kaXNhYmxlZCxNdC5kaXNhYmxlZCxlLmNvbG9yTW9kZUZv clJlbmRlclBhc3MoKSxFdC5kaXNhYmxlZCxmdW5jdGlvbihlLHIsbixpKXt2YXIgYT10LmNy ZWF0ZSgpO3Qub3J0aG8oYSwwLGUud2lkdGgsZS5oZWlnaHQsMCwwLDEpO3ZhciBvPWUuY29u dGV4dC5nbDtyZXR1cm57dV9tYXRyaXg6YSx1X3dvcmxkOltvLmRyYXdpbmdCdWZmZXJXaWR0 aCxvLmRyYXdpbmdCdWZmZXJIZWlnaHRdLHVfaW1hZ2U6bix1X2NvbG9yX3JhbXA6aSx1X29w YWNpdHk6ci5wYWludC5nZXQoImhlYXRtYXAtb3BhY2l0eSIpfX0oZSxyLDAsMSksci5pZCxl LnZpZXdwb3J0QnVmZmVyLGUucXVhZFRyaWFuZ2xlSW5kZXhCdWZmZXIsZS52aWV3cG9ydFNl Z21lbnRzLHIucGFpbnQsZS50cmFuc2Zvcm0uem9vbSl9KGUsbikpfSxsaW5lOmZ1bmN0aW9u KGUscixuLGkpe2lmKCJ0cmFuc2x1Y2VudCI9PT1lLnJlbmRlclBhc3Mpe3ZhciBhPW4ucGFp bnQuZ2V0KCJsaW5lLW9wYWNpdHkiKSxvPW4ucGFpbnQuZ2V0KCJsaW5lLXdpZHRoIik7aWYo MCE9PWEuY29uc3RhbnRPcigxKSYmMCE9PW8uY29uc3RhbnRPcigxKSl7dmFyIHM9ZS5kZXB0 aE1vZGVGb3JTdWJsYXllcigwLEF0LlJlYWRPbmx5KSxsPWUuY29sb3JNb2RlRm9yUmVuZGVy UGFzcygpLGM9bi5wYWludC5nZXQoImxpbmUtZGFzaGFycmF5IiksdT1uLnBhaW50LmdldCgi bGluZS1wYXR0ZXJuIiksZj11LmNvbnN0YW50T3IoMSksaD1uLnBhaW50LmdldCgibGluZS1n cmFkaWVudCIpLHA9bi5nZXRDcm9zc2ZhZGVQYXJhbWV0ZXJzKCksZD1mPyJsaW5lUGF0dGVy biI6Yz8ibGluZVNERiI6aD8ibGluZUdyYWRpZW50IjoibGluZSIsbT1lLmNvbnRleHQsZz1t LmdsLHY9ITA7aWYoaCl7bS5hY3RpdmVUZXh0dXJlLnNldChnLlRFWFRVUkUwKTt2YXIgeT1u LmdyYWRpZW50VGV4dHVyZTtpZighbi5ncmFkaWVudClyZXR1cm47eXx8KHk9bi5ncmFkaWVu dFRleHR1cmU9bmV3IHQuVGV4dHVyZShtLG4uZ3JhZGllbnQsZy5SR0JBKSkseS5iaW5kKGcu TElORUFSLGcuQ0xBTVBfVE9fRURHRSl9Zm9yKHZhciB4PTAsYj1pO3g8Yi5sZW5ndGg7eCs9 MSl7dmFyIF89Ylt4XSx3PXIuZ2V0VGlsZShfKTtpZighZnx8dy5wYXR0ZXJuc0xvYWRlZCgp KXt2YXIgVD13LmdldEJ1Y2tldChuKTtpZihUKXt2YXIgaz1ULnByb2dyYW1Db25maWd1cmF0 aW9ucy5nZXQobi5pZCksQT1lLmNvbnRleHQucHJvZ3JhbS5nZXQoKSxNPWUudXNlUHJvZ3Jh bShkLGspLFM9dnx8TS5wcm9ncmFtIT09QSxFPXUuY29uc3RhbnRPcihudWxsKTtpZihFJiZ3 LmltYWdlQXRsYXMpe3ZhciBMPXcuaW1hZ2VBdGxhcyxDPUwucGF0dGVyblBvc2l0aW9uc1tF LnRvLnRvU3RyaW5nKCldLFA9TC5wYXR0ZXJuUG9zaXRpb25zW0UuZnJvbS50b1N0cmluZygp XTtDJiZQJiZrLnNldENvbnN0YW50UGF0dGVyblBvc2l0aW9ucyhDLFApfXZhciBJPWY/QnIo ZSx3LG4scCk6Yz9OcihlLHcsbixjLHApOmg/RnIoZSx3LG4pOlJyKGUsdyxuKTtmPyhtLmFj dGl2ZVRleHR1cmUuc2V0KGcuVEVYVFVSRTApLHcuaW1hZ2VBdGxhc1RleHR1cmUuYmluZChn LkxJTkVBUixnLkNMQU1QX1RPX0VER0UpLGsudXBkYXRlUGFpbnRCdWZmZXJzKHApKTpjJiYo U3x8ZS5saW5lQXRsYXMuZGlydHkpJiYobS5hY3RpdmVUZXh0dXJlLnNldChnLlRFWFRVUkUw KSxlLmxpbmVBdGxhcy5iaW5kKG0pKSxNLmRyYXcobSxnLlRSSUFOR0xFUyxzLGUuc3RlbmNp bE1vZGVGb3JDbGlwcGluZyhfKSxsLEV0LmRpc2FibGVkLEksbi5pZCxULmxheW91dFZlcnRl eEJ1ZmZlcixULmluZGV4QnVmZmVyLFQuc2VnbWVudHMsbi5wYWludCxlLnRyYW5zZm9ybS56 b29tLGspLHY9ITF9fX19fX0sZmlsbDpmdW5jdGlvbihlLHIsbixpKXt2YXIgYT1uLnBhaW50 LmdldCgiZmlsbC1jb2xvciIpLG89bi5wYWludC5nZXQoImZpbGwtb3BhY2l0eSIpO2lmKDAh PT1vLmNvbnN0YW50T3IoMSkpe3ZhciBzPWUuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpLGw9 bi5wYWludC5nZXQoImZpbGwtcGF0dGVybiIpLGM9ZS5vcGFxdWVQYXNzRW5hYmxlZEZvckxh eWVyKCkmJiFsLmNvbnN0YW50T3IoMSkmJjE9PT1hLmNvbnN0YW50T3IodC5Db2xvci50cmFu c3BhcmVudCkuYSYmMT09PW8uY29uc3RhbnRPcigwKT8ib3BhcXVlIjoidHJhbnNsdWNlbnQi O2lmKGUucmVuZGVyUGFzcz09PWMpe3ZhciB1PWUuZGVwdGhNb2RlRm9yU3VibGF5ZXIoMSwi b3BhcXVlIj09PWUucmVuZGVyUGFzcz9BdC5SZWFkV3JpdGU6QXQuUmVhZE9ubHkpO2FuKGUs cixuLGksdSxzLCExKX1pZigidHJhbnNsdWNlbnQiPT09ZS5yZW5kZXJQYXNzJiZuLnBhaW50 LmdldCgiZmlsbC1hbnRpYWxpYXMiKSl7dmFyIGY9ZS5kZXB0aE1vZGVGb3JTdWJsYXllcihu LmdldFBhaW50UHJvcGVydHkoImZpbGwtb3V0bGluZS1jb2xvciIpPzI6MCxBdC5SZWFkT25s eSk7YW4oZSxyLG4saSxmLHMsITApfX19LCJmaWxsLWV4dHJ1c2lvbiI6ZnVuY3Rpb24odCxl LHIsbil7dmFyIGk9ci5wYWludC5nZXQoImZpbGwtZXh0cnVzaW9uLW9wYWNpdHkiKTtpZigw IT09aSYmInRyYW5zbHVjZW50Ij09PXQucmVuZGVyUGFzcyl7dmFyIGE9bmV3IEF0KHQuY29u dGV4dC5nbC5MRVFVQUwsQXQuUmVhZFdyaXRlLHQuZGVwdGhSYW5nZUZvcjNEKTtpZigxIT09 aXx8ci5wYWludC5nZXQoImZpbGwtZXh0cnVzaW9uLXBhdHRlcm4iKS5jb25zdGFudE9yKDEp KW9uKHQsZSxyLG4sYSxNdC5kaXNhYmxlZCxTdC5kaXNhYmxlZCksb24odCxlLHIsbixhLHQu c3RlbmNpbE1vZGVGb3IzRCgpLHQuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpKTtlbHNle3Zh ciBvPXQuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpO29uKHQsZSxyLG4sYSxNdC5kaXNhYmxl ZCxvKX19fSxoaWxsc2hhZGU6ZnVuY3Rpb24odCxlLHIsbil7aWYoIm9mZnNjcmVlbiI9PT10 LnJlbmRlclBhc3N8fCJ0cmFuc2x1Y2VudCI9PT10LnJlbmRlclBhc3Mpe2Zvcih2YXIgaT10 LmNvbnRleHQsYT1lLmdldFNvdXJjZSgpLm1heHpvb20sbz10LmRlcHRoTW9kZUZvclN1Ymxh eWVyKDAsQXQuUmVhZE9ubHkpLHM9dC5jb2xvck1vZGVGb3JSZW5kZXJQYXNzKCksbD0idHJh bnNsdWNlbnQiPT09dC5yZW5kZXJQYXNzP3Quc3RlbmNpbENvbmZpZ0Zvck92ZXJsYXAobik6 W3t9LG5dLGM9bFswXSx1PTAsZj1sWzFdO3U8Zi5sZW5ndGg7dSs9MSl7dmFyIGg9Zlt1XSxw PWUuZ2V0VGlsZShoKTtwLm5lZWRzSGlsbHNoYWRlUHJlcGFyZSYmIm9mZnNjcmVlbiI9PT10 LnJlbmRlclBhc3M/bG4odCxwLHIsYSxvLE10LmRpc2FibGVkLHMpOiJ0cmFuc2x1Y2VudCI9 PT10LnJlbmRlclBhc3MmJnNuKHQscCxyLG8sY1toLm92ZXJzY2FsZWRaXSxzKX1pLnZpZXdw b3J0LnNldChbMCwwLHQud2lkdGgsdC5oZWlnaHRdKX19LHJhc3RlcjpmdW5jdGlvbih0LGUs cixuKXtpZigidHJhbnNsdWNlbnQiPT09dC5yZW5kZXJQYXNzJiYwIT09ci5wYWludC5nZXQo InJhc3Rlci1vcGFjaXR5IikmJm4ubGVuZ3RoKWZvcih2YXIgaT10LmNvbnRleHQsYT1pLmds LG89ZS5nZXRTb3VyY2UoKSxzPXQudXNlUHJvZ3JhbSgicmFzdGVyIiksbD10LmNvbG9yTW9k ZUZvclJlbmRlclBhc3MoKSxjPW8gaW5zdGFuY2VvZiBJP1t7fSxuXTp0LnN0ZW5jaWxDb25m aWdGb3JPdmVybGFwKG4pLHU9Y1swXSxmPWNbMV0saD1mW2YubGVuZ3RoLTFdLm92ZXJzY2Fs ZWRaLHA9IXQub3B0aW9ucy5tb3ZpbmcsZD0wLG09ZjtkPG0ubGVuZ3RoO2QrPTEpe3ZhciBn PW1bZF0sdj10LmRlcHRoTW9kZUZvclN1YmxheWVyKGcub3ZlcnNjYWxlZFotaCwxPT09ci5w YWludC5nZXQoInJhc3Rlci1vcGFjaXR5Iik/QXQuUmVhZFdyaXRlOkF0LlJlYWRPbmx5LGEu TEVTUykseT1lLmdldFRpbGUoZykseD10LnRyYW5zZm9ybS5jYWxjdWxhdGVQb3NNYXRyaXgo Zy50b1Vud3JhcHBlZCgpLHApO3kucmVnaXN0ZXJGYWRlRHVyYXRpb24oci5wYWludC5nZXQo InJhc3Rlci1mYWRlLWR1cmF0aW9uIikpO3ZhciBiPWUuZmluZExvYWRlZFBhcmVudChnLDAp LF89Y24oeSxiLGUscix0LnRyYW5zZm9ybSksdz12b2lkIDAsVD12b2lkIDAsaz0ibmVhcmVz dCI9PT1yLnBhaW50LmdldCgicmFzdGVyLXJlc2FtcGxpbmciKT9hLk5FQVJFU1Q6YS5MSU5F QVI7aS5hY3RpdmVUZXh0dXJlLnNldChhLlRFWFRVUkUwKSx5LnRleHR1cmUuYmluZChrLGEu Q0xBTVBfVE9fRURHRSxhLkxJTkVBUl9NSVBNQVBfTkVBUkVTVCksaS5hY3RpdmVUZXh0dXJl LnNldChhLlRFWFRVUkUxKSxiPyhiLnRleHR1cmUuYmluZChrLGEuQ0xBTVBfVE9fRURHRSxh LkxJTkVBUl9NSVBNQVBfTkVBUkVTVCksdz1NYXRoLnBvdygyLGIudGlsZUlELm92ZXJzY2Fs ZWRaLXkudGlsZUlELm92ZXJzY2FsZWRaKSxUPVt5LnRpbGVJRC5jYW5vbmljYWwueCp3JTEs eS50aWxlSUQuY2Fub25pY2FsLnkqdyUxXSk6eS50ZXh0dXJlLmJpbmQoayxhLkNMQU1QX1RP X0VER0UsYS5MSU5FQVJfTUlQTUFQX05FQVJFU1QpO3ZhciBBPVZyKHgsVHx8WzAsMF0sd3x8 MSxfLHIpO28gaW5zdGFuY2VvZiBJP3MuZHJhdyhpLGEuVFJJQU5HTEVTLHYsTXQuZGlzYWJs ZWQsbCxFdC5kaXNhYmxlZCxBLHIuaWQsby5ib3VuZHNCdWZmZXIsdC5xdWFkVHJpYW5nbGVJ bmRleEJ1ZmZlcixvLmJvdW5kc1NlZ21lbnRzKTpzLmRyYXcoaSxhLlRSSUFOR0xFUyx2LHVb Zy5vdmVyc2NhbGVkWl0sbCxFdC5kaXNhYmxlZCxBLHIuaWQsdC5yYXN0ZXJCb3VuZHNCdWZm ZXIsdC5xdWFkVHJpYW5nbGVJbmRleEJ1ZmZlcix0LnJhc3RlckJvdW5kc1NlZ21lbnRzKX19 LGJhY2tncm91bmQ6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIucGFpbnQuZ2V0KCJiYWNrZ3Jv dW5kLWNvbG9yIiksaT1yLnBhaW50LmdldCgiYmFja2dyb3VuZC1vcGFjaXR5Iik7aWYoMCE9 PWkpe3ZhciBhPXQuY29udGV4dCxvPWEuZ2wscz10LnRyYW5zZm9ybSxsPXMudGlsZVNpemUs Yz1yLnBhaW50LmdldCgiYmFja2dyb3VuZC1wYXR0ZXJuIik7aWYoIXQuaXNQYXR0ZXJuTWlz c2luZyhjKSl7dmFyIHU9IWMmJjE9PT1uLmEmJjE9PT1pJiZ0Lm9wYXF1ZVBhc3NFbmFibGVk Rm9yTGF5ZXIoKT8ib3BhcXVlIjoidHJhbnNsdWNlbnQiO2lmKHQucmVuZGVyUGFzcz09PXUp e3ZhciBmPU10LmRpc2FibGVkLGg9dC5kZXB0aE1vZGVGb3JTdWJsYXllcigwLCJvcGFxdWUi PT09dT9BdC5SZWFkV3JpdGU6QXQuUmVhZE9ubHkpLHA9dC5jb2xvck1vZGVGb3JSZW5kZXJQ YXNzKCksZD10LnVzZVByb2dyYW0oYz8iYmFja2dyb3VuZFBhdHRlcm4iOiJiYWNrZ3JvdW5k IiksbT1zLmNvdmVyaW5nVGlsZXMoe3RpbGVTaXplOmx9KTtjJiYoYS5hY3RpdmVUZXh0dXJl LnNldChvLlRFWFRVUkUwKSx0LmltYWdlTWFuYWdlci5iaW5kKHQuY29udGV4dCkpO2Zvcih2 YXIgZz1yLmdldENyb3NzZmFkZVBhcmFtZXRlcnMoKSx2PTAseT1tO3Y8eS5sZW5ndGg7dis9 MSl7dmFyIHg9eVt2XSxiPXQudHJhbnNmb3JtLmNhbGN1bGF0ZVBvc01hdHJpeCh4LnRvVW53 cmFwcGVkKCkpLF89Yz9acihiLGksdCxjLHt0aWxlSUQ6eCx0aWxlU2l6ZTpsfSxnKTpYcihi LGksbik7ZC5kcmF3KGEsby5UUklBTkdMRVMsaCxmLHAsRXQuZGlzYWJsZWQsXyxyLmlkLHQu dGlsZUV4dGVudEJ1ZmZlcix0LnF1YWRUcmlhbmdsZUluZGV4QnVmZmVyLHQudGlsZUV4dGVu dFNlZ21lbnRzKX19fX19LGRlYnVnOmZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49MDtuPHIu bGVuZ3RoO24rKyl4bih0LGUscltuXSl9LGN1c3RvbTpmdW5jdGlvbih0LGUscil7dmFyIG49 dC5jb250ZXh0LGk9ci5pbXBsZW1lbnRhdGlvbjtpZigib2Zmc2NyZWVuIj09PXQucmVuZGVy UGFzcyl7dmFyIGE9aS5wcmVyZW5kZXI7YSYmKHQuc2V0Q3VzdG9tTGF5ZXJEZWZhdWx0cygp LG4uc2V0Q29sb3JNb2RlKHQuY29sb3JNb2RlRm9yUmVuZGVyUGFzcygpKSxhLmNhbGwoaSxu LmdsLHQudHJhbnNmb3JtLmN1c3RvbUxheWVyTWF0cml4KCkpLG4uc2V0RGlydHkoKSx0LnNl dEJhc2VTdGF0ZSgpKX1lbHNlIGlmKCJ0cmFuc2x1Y2VudCI9PT10LnJlbmRlclBhc3Mpe3Qu c2V0Q3VzdG9tTGF5ZXJEZWZhdWx0cygpLG4uc2V0Q29sb3JNb2RlKHQuY29sb3JNb2RlRm9y UmVuZGVyUGFzcygpKSxuLnNldFN0ZW5jaWxNb2RlKE10LmRpc2FibGVkKTt2YXIgbz0iM2Qi PT09aS5yZW5kZXJpbmdNb2RlP25ldyBBdCh0LmNvbnRleHQuZ2wuTEVRVUFMLEF0LlJlYWRX cml0ZSx0LmRlcHRoUmFuZ2VGb3IzRCk6dC5kZXB0aE1vZGVGb3JTdWJsYXllcigwLEF0LlJl YWRPbmx5KTtuLnNldERlcHRoTW9kZShvKSxpLnJlbmRlcihuLmdsLHQudHJhbnNmb3JtLmN1 c3RvbUxheWVyTWF0cml4KCkpLG4uc2V0RGlydHkoKSx0LnNldEJhc2VTdGF0ZSgpLG4uYmlu ZEZyYW1lYnVmZmVyLnNldChudWxsKX19fSxfbj1mdW5jdGlvbih0LGUpe3RoaXMuY29udGV4 dD1uZXcgTHQodCksdGhpcy50cmFuc2Zvcm09ZSx0aGlzLl90aWxlVGV4dHVyZXM9e30sdGhp cy5zZXR1cCgpLHRoaXMubnVtU3VibGF5ZXJzPUN0Lm1heFVuZGVyem9vbWluZytDdC5tYXhP dmVyem9vbWluZysxLHRoaXMuZGVwdGhFcHNpbG9uPTEvTWF0aC5wb3coMiwxNiksdGhpcy5j cm9zc1RpbGVTeW1ib2xJbmRleD1uZXcgTmUsdGhpcy5ncHVUaW1lcnM9e319O19uLnByb3Rv dHlwZS5yZXNpemU9ZnVuY3Rpb24oZSxyKXtpZih0aGlzLndpZHRoPWUqdC5icm93c2VyLmRl dmljZVBpeGVsUmF0aW8sdGhpcy5oZWlnaHQ9cip0LmJyb3dzZXIuZGV2aWNlUGl4ZWxSYXRp byx0aGlzLmNvbnRleHQudmlld3BvcnQuc2V0KFswLDAsdGhpcy53aWR0aCx0aGlzLmhlaWdo dF0pLHRoaXMuc3R5bGUpZm9yKHZhciBuPTAsaT10aGlzLnN0eWxlLl9vcmRlcjtuPGkubGVu Z3RoO24rPTEpe3ZhciBhPWlbbl07dGhpcy5zdHlsZS5fbGF5ZXJzW2FdLnJlc2l6ZSgpfX0s X24ucHJvdG90eXBlLnNldHVwPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jb250ZXh0LHI9bmV3 IHQuU3RydWN0QXJyYXlMYXlvdXQyaTQ7ci5lbXBsYWNlQmFjaygwLDApLHIuZW1wbGFjZUJh Y2sodC5FWFRFTlQsMCksci5lbXBsYWNlQmFjaygwLHQuRVhURU5UKSxyLmVtcGxhY2VCYWNr KHQuRVhURU5ULHQuRVhURU5UKSx0aGlzLnRpbGVFeHRlbnRCdWZmZXI9ZS5jcmVhdGVWZXJ0 ZXhCdWZmZXIocixHZS5tZW1iZXJzKSx0aGlzLnRpbGVFeHRlbnRTZWdtZW50cz10LlNlZ21l bnRWZWN0b3Iuc2ltcGxlU2VnbWVudCgwLDAsNCwyKTt2YXIgbj1uZXcgdC5TdHJ1Y3RBcnJh eUxheW91dDJpNDtuLmVtcGxhY2VCYWNrKDAsMCksbi5lbXBsYWNlQmFjayh0LkVYVEVOVCww KSxuLmVtcGxhY2VCYWNrKDAsdC5FWFRFTlQpLG4uZW1wbGFjZUJhY2sodC5FWFRFTlQsdC5F WFRFTlQpLHRoaXMuZGVidWdCdWZmZXI9ZS5jcmVhdGVWZXJ0ZXhCdWZmZXIobixHZS5tZW1i ZXJzKSx0aGlzLmRlYnVnU2VnbWVudHM9dC5TZWdtZW50VmVjdG9yLnNpbXBsZVNlZ21lbnQo MCwwLDQsNSk7dmFyIGk9bmV3IHQuU3RydWN0QXJyYXlMYXlvdXQ0aTg7aS5lbXBsYWNlQmFj aygwLDAsMCwwKSxpLmVtcGxhY2VCYWNrKHQuRVhURU5ULDAsdC5FWFRFTlQsMCksaS5lbXBs YWNlQmFjaygwLHQuRVhURU5ULDAsdC5FWFRFTlQpLGkuZW1wbGFjZUJhY2sodC5FWFRFTlQs dC5FWFRFTlQsdC5FWFRFTlQsdC5FWFRFTlQpLHRoaXMucmFzdGVyQm91bmRzQnVmZmVyPWUu Y3JlYXRlVmVydGV4QnVmZmVyKGksUC5tZW1iZXJzKSx0aGlzLnJhc3RlckJvdW5kc1NlZ21l bnRzPXQuU2VnbWVudFZlY3Rvci5zaW1wbGVTZWdtZW50KDAsMCw0LDIpO3ZhciBhPW5ldyB0 LlN0cnVjdEFycmF5TGF5b3V0Mmk0O2EuZW1wbGFjZUJhY2soMCwwKSxhLmVtcGxhY2VCYWNr KDEsMCksYS5lbXBsYWNlQmFjaygwLDEpLGEuZW1wbGFjZUJhY2soMSwxKSx0aGlzLnZpZXdw b3J0QnVmZmVyPWUuY3JlYXRlVmVydGV4QnVmZmVyKGEsR2UubWVtYmVycyksdGhpcy52aWV3 cG9ydFNlZ21lbnRzPXQuU2VnbWVudFZlY3Rvci5zaW1wbGVTZWdtZW50KDAsMCw0LDIpO3Zh ciBvPW5ldyB0LlN0cnVjdEFycmF5TGF5b3V0MXVpMjtvLmVtcGxhY2VCYWNrKDApLG8uZW1w bGFjZUJhY2soMSksby5lbXBsYWNlQmFjaygzKSxvLmVtcGxhY2VCYWNrKDIpLG8uZW1wbGFj ZUJhY2soMCksdGhpcy50aWxlQm9yZGVySW5kZXhCdWZmZXI9ZS5jcmVhdGVJbmRleEJ1ZmZl cihvKTt2YXIgcz1uZXcgdC5TdHJ1Y3RBcnJheUxheW91dDN1aTY7cy5lbXBsYWNlQmFjaygw LDEsMikscy5lbXBsYWNlQmFjaygyLDEsMyksdGhpcy5xdWFkVHJpYW5nbGVJbmRleEJ1ZmZl cj1lLmNyZWF0ZUluZGV4QnVmZmVyKHMpLHRoaXMuZW1wdHlUZXh0dXJlPW5ldyB0LlRleHR1 cmUoZSx7d2lkdGg6MSxoZWlnaHQ6MSxkYXRhOm5ldyBVaW50OEFycmF5KFswLDAsMCwwXSl9 LGUuZ2wuUkdCQSk7dmFyIGw9dGhpcy5jb250ZXh0LmdsO3RoaXMuc3RlbmNpbENsZWFyTW9k ZT1uZXcgTXQoe2Z1bmM6bC5BTFdBWVMsbWFzazowfSwwLDI1NSxsLlpFUk8sbC5aRVJPLGwu WkVSTyl9LF9uLnByb3RvdHlwZS5jbGVhclN0ZW5jaWw9ZnVuY3Rpb24oKXt2YXIgZT10aGlz LmNvbnRleHQscj1lLmdsO3RoaXMubmV4dFN0ZW5jaWxJRD0xLHRoaXMuY3VycmVudFN0ZW5j aWxTb3VyY2U9dm9pZCAwO3ZhciBuPXQuY3JlYXRlKCk7dC5vcnRobyhuLDAsdGhpcy53aWR0 aCx0aGlzLmhlaWdodCwwLDAsMSksdC5zY2FsZShuLG4sW3IuZHJhd2luZ0J1ZmZlcldpZHRo LHIuZHJhd2luZ0J1ZmZlckhlaWdodCwwXSksdGhpcy51c2VQcm9ncmFtKCJjbGlwcGluZ01h c2siKS5kcmF3KGUsci5UUklBTkdMRVMsQXQuZGlzYWJsZWQsdGhpcy5zdGVuY2lsQ2xlYXJN b2RlLFN0LmRpc2FibGVkLEV0LmRpc2FibGVkLE9yKG4pLCIkY2xpcHBpbmciLHRoaXMudmll d3BvcnRCdWZmZXIsdGhpcy5xdWFkVHJpYW5nbGVJbmRleEJ1ZmZlcix0aGlzLnZpZXdwb3J0 U2VnbWVudHMpfSxfbi5wcm90b3R5cGUuX3JlbmRlclRpbGVDbGlwcGluZ01hc2tzPWZ1bmN0 aW9uKHQsZSl7aWYodGhpcy5jdXJyZW50U3RlbmNpbFNvdXJjZSE9PXQuc291cmNlJiZ0Lmlz VGlsZUNsaXBwZWQoKSYmZSYmZS5sZW5ndGgpe3RoaXMuY3VycmVudFN0ZW5jaWxTb3VyY2U9 dC5zb3VyY2U7dmFyIHI9dGhpcy5jb250ZXh0LG49ci5nbDt0aGlzLm5leHRTdGVuY2lsSUQr ZS5sZW5ndGg+MjU2JiZ0aGlzLmNsZWFyU3RlbmNpbCgpLHIuc2V0Q29sb3JNb2RlKFN0LmRp c2FibGVkKSxyLnNldERlcHRoTW9kZShBdC5kaXNhYmxlZCk7dmFyIGk9dGhpcy51c2VQcm9n cmFtKCJjbGlwcGluZ01hc2siKTt0aGlzLl90aWxlQ2xpcHBpbmdNYXNrSURzPXt9O2Zvcih2 YXIgYT0wLG89ZTthPG8ubGVuZ3RoO2ErPTEpe3ZhciBzPW9bYV0sbD10aGlzLl90aWxlQ2xp cHBpbmdNYXNrSURzW3Mua2V5XT10aGlzLm5leHRTdGVuY2lsSUQrKztpLmRyYXcocixuLlRS SUFOR0xFUyxBdC5kaXNhYmxlZCxuZXcgTXQoe2Z1bmM6bi5BTFdBWVMsbWFzazowfSxsLDI1 NSxuLktFRVAsbi5LRUVQLG4uUkVQTEFDRSksU3QuZGlzYWJsZWQsRXQuZGlzYWJsZWQsT3Io cy5wb3NNYXRyaXgpLCIkY2xpcHBpbmciLHRoaXMudGlsZUV4dGVudEJ1ZmZlcix0aGlzLnF1 YWRUcmlhbmdsZUluZGV4QnVmZmVyLHRoaXMudGlsZUV4dGVudFNlZ21lbnRzKX19fSxfbi5w cm90b3R5cGUuc3RlbmNpbE1vZGVGb3IzRD1mdW5jdGlvbigpe3RoaXMuY3VycmVudFN0ZW5j aWxTb3VyY2U9dm9pZCAwLHRoaXMubmV4dFN0ZW5jaWxJRCsxPjI1NiYmdGhpcy5jbGVhclN0 ZW5jaWwoKTt2YXIgdD10aGlzLm5leHRTdGVuY2lsSUQrKyxlPXRoaXMuY29udGV4dC5nbDty ZXR1cm4gbmV3IE10KHtmdW5jOmUuTk9URVFVQUwsbWFzazoyNTV9LHQsMjU1LGUuS0VFUCxl LktFRVAsZS5SRVBMQUNFKX0sX24ucHJvdG90eXBlLnN0ZW5jaWxNb2RlRm9yQ2xpcHBpbmc9 ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jb250ZXh0LmdsO3JldHVybiBuZXcgTXQoe2Z1bmM6 ZS5FUVVBTCxtYXNrOjI1NX0sdGhpcy5fdGlsZUNsaXBwaW5nTWFza0lEc1t0LmtleV0sMCxl LktFRVAsZS5LRUVQLGUuUkVQTEFDRSl9LF9uLnByb3RvdHlwZS5zdGVuY2lsQ29uZmlnRm9y T3ZlcmxhcD1mdW5jdGlvbih0KXt2YXIgZSxyPXRoaXMuY29udGV4dC5nbCxuPXQuc29ydCgo ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5vdmVyc2NhbGVkWi10Lm92ZXJzY2FsZWRafSkpLGk9 bltuLmxlbmd0aC0xXS5vdmVyc2NhbGVkWixhPW5bMF0ub3ZlcnNjYWxlZFotaSsxO2lmKGE+ MSl7dGhpcy5jdXJyZW50U3RlbmNpbFNvdXJjZT12b2lkIDAsdGhpcy5uZXh0U3RlbmNpbElE K2E+MjU2JiZ0aGlzLmNsZWFyU3RlbmNpbCgpO2Zvcih2YXIgbz17fSxzPTA7czxhO3MrKylv W3MraV09bmV3IE10KHtmdW5jOnIuR0VRVUFMLG1hc2s6MjU1fSxzK3RoaXMubmV4dFN0ZW5j aWxJRCwyNTUsci5LRUVQLHIuS0VFUCxyLlJFUExBQ0UpO3JldHVybiB0aGlzLm5leHRTdGVu Y2lsSUQrPWEsW28sbl19cmV0dXJuWyhlPXt9LGVbaV09TXQuZGlzYWJsZWQsZSksbl19LF9u LnByb3RvdHlwZS5jb2xvck1vZGVGb3JSZW5kZXJQYXNzPWZ1bmN0aW9uKCl7dmFyIGU9dGhp cy5jb250ZXh0LmdsO2lmKHRoaXMuX3Nob3dPdmVyZHJhd0luc3BlY3Rvcil7cmV0dXJuIG5l dyBTdChbZS5DT05TVEFOVF9DT0xPUixlLk9ORV0sbmV3IHQuQ29sb3IoMS84LDEvOCwxLzgs MCksWyEwLCEwLCEwLCEwXSl9cmV0dXJuIm9wYXF1ZSI9PT10aGlzLnJlbmRlclBhc3M/U3Qu dW5ibGVuZGVkOlN0LmFscGhhQmxlbmRlZH0sX24ucHJvdG90eXBlLmRlcHRoTW9kZUZvclN1 YmxheWVyPWZ1bmN0aW9uKHQsZSxyKXtpZighdGhpcy5vcGFxdWVQYXNzRW5hYmxlZEZvckxh eWVyKCkpcmV0dXJuIEF0LmRpc2FibGVkO3ZhciBuPTEtKCgxK3RoaXMuY3VycmVudExheWVy KSp0aGlzLm51bVN1YmxheWVycyt0KSp0aGlzLmRlcHRoRXBzaWxvbjtyZXR1cm4gbmV3IEF0 KHJ8fHRoaXMuY29udGV4dC5nbC5MRVFVQUwsZSxbbixuXSl9LF9uLnByb3RvdHlwZS5vcGFx dWVQYXNzRW5hYmxlZEZvckxheWVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudExh eWVyPHRoaXMub3BhcXVlUGFzc0N1dG9mZn0sX24ucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlv bihlLHIpe3ZhciBuPXRoaXM7dGhpcy5zdHlsZT1lLHRoaXMub3B0aW9ucz1yLHRoaXMubGlu ZUF0bGFzPWUubGluZUF0bGFzLHRoaXMuaW1hZ2VNYW5hZ2VyPWUuaW1hZ2VNYW5hZ2VyLHRo aXMuZ2x5cGhNYW5hZ2VyPWUuZ2x5cGhNYW5hZ2VyLHRoaXMuc3ltYm9sRmFkZUNoYW5nZT1l LnBsYWNlbWVudC5zeW1ib2xGYWRlQ2hhbmdlKHQuYnJvd3Nlci5ub3coKSksdGhpcy5pbWFn ZU1hbmFnZXIuYmVnaW5GcmFtZSgpO3ZhciBpPXRoaXMuc3R5bGUuX29yZGVyLGE9dGhpcy5z dHlsZS5zb3VyY2VDYWNoZXM7Zm9yKHZhciBvIGluIGEpe3ZhciBzPWFbb107cy51c2VkJiZz LnByZXBhcmUodGhpcy5jb250ZXh0KX12YXIgbCxjLHU9e30sZj17fSxoPXt9O2Zvcih2YXIg cCBpbiBhKXt2YXIgZD1hW3BdO3VbcF09ZC5nZXRWaXNpYmxlQ29vcmRpbmF0ZXMoKSxmW3Bd PXVbcF0uc2xpY2UoKS5yZXZlcnNlKCksaFtwXT1kLmdldFZpc2libGVDb29yZGluYXRlcygh MCkucmV2ZXJzZSgpfXRoaXMub3BhcXVlUGFzc0N1dG9mZj0xLzA7Zm9yKHZhciBtPTA7bTxp Lmxlbmd0aDttKyspe3ZhciBnPWlbbV07aWYodGhpcy5zdHlsZS5fbGF5ZXJzW2ddLmlzM0Qo KSl7dGhpcy5vcGFxdWVQYXNzQ3V0b2ZmPW07YnJlYWt9fXRoaXMucmVuZGVyUGFzcz0ib2Zm c2NyZWVuIjtmb3IodmFyIHY9MCx5PWk7djx5Lmxlbmd0aDt2Kz0xKXt2YXIgeD15W3ZdLGI9 dGhpcy5zdHlsZS5fbGF5ZXJzW3hdO2lmKGIuaGFzT2Zmc2NyZWVuUGFzcygpJiYhYi5pc0hp ZGRlbih0aGlzLnRyYW5zZm9ybS56b29tKSl7dmFyIF89ZltiLnNvdXJjZV07KCJjdXN0b20i PT09Yi50eXBlfHxfLmxlbmd0aCkmJnRoaXMucmVuZGVyTGF5ZXIodGhpcyxhW2Iuc291cmNl XSxiLF8pfX1mb3IodGhpcy5jb250ZXh0LmJpbmRGcmFtZWJ1ZmZlci5zZXQobnVsbCksdGhp cy5jb250ZXh0LmNsZWFyKHtjb2xvcjpyLnNob3dPdmVyZHJhd0luc3BlY3Rvcj90LkNvbG9y LmJsYWNrOnQuQ29sb3IudHJhbnNwYXJlbnQsZGVwdGg6MX0pLHRoaXMuY2xlYXJTdGVuY2ls KCksdGhpcy5fc2hvd092ZXJkcmF3SW5zcGVjdG9yPXIuc2hvd092ZXJkcmF3SW5zcGVjdG9y LHRoaXMuZGVwdGhSYW5nZUZvcjNEPVswLDEtKGUuX29yZGVyLmxlbmd0aCsyKSp0aGlzLm51 bVN1YmxheWVycyp0aGlzLmRlcHRoRXBzaWxvbl0sdGhpcy5yZW5kZXJQYXNzPSJvcGFxdWUi LHRoaXMuY3VycmVudExheWVyPWkubGVuZ3RoLTE7dGhpcy5jdXJyZW50TGF5ZXI+PTA7dGhp cy5jdXJyZW50TGF5ZXItLSl7dmFyIHc9dGhpcy5zdHlsZS5fbGF5ZXJzW2lbdGhpcy5jdXJy ZW50TGF5ZXJdXSxUPWFbdy5zb3VyY2VdLGs9dVt3LnNvdXJjZV07dGhpcy5fcmVuZGVyVGls ZUNsaXBwaW5nTWFza3ModyxrKSx0aGlzLnJlbmRlckxheWVyKHRoaXMsVCx3LGspfWZvcih0 aGlzLnJlbmRlclBhc3M9InRyYW5zbHVjZW50Iix0aGlzLmN1cnJlbnRMYXllcj0wO3RoaXMu Y3VycmVudExheWVyPGkubGVuZ3RoO3RoaXMuY3VycmVudExheWVyKyspe3ZhciBBPXRoaXMu c3R5bGUuX2xheWVyc1tpW3RoaXMuY3VycmVudExheWVyXV0sTT1hW0Euc291cmNlXSxTPSgi c3ltYm9sIj09PUEudHlwZT9oOmYpW0Euc291cmNlXTt0aGlzLl9yZW5kZXJUaWxlQ2xpcHBp bmdNYXNrcyhBLHVbQS5zb3VyY2VdKSx0aGlzLnJlbmRlckxheWVyKHRoaXMsTSxBLFMpfXRo aXMub3B0aW9ucy5zaG93VGlsZUJvdW5kYXJpZXMmJih0LnZhbHVlcyh0aGlzLnN0eWxlLl9s YXllcnMpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3Quc291cmNlJiYhdC5pc0hpZGRlbihuLnRy YW5zZm9ybS56b29tKSYmKHQuc291cmNlIT09KGMmJmMuaWQpJiYoYz1uLnN0eWxlLnNvdXJj ZUNhY2hlc1t0LnNvdXJjZV0pLCghbHx8bC5nZXRTb3VyY2UoKS5tYXh6b29tPGMuZ2V0U291 cmNlKCkubWF4em9vbSkmJihsPWMpKX0pKSxsJiZibi5kZWJ1Zyh0aGlzLGwsbC5nZXRWaXNp YmxlQ29vcmRpbmF0ZXMoKSkpO3RoaXMub3B0aW9ucy5zaG93UGFkZGluZyYmbW4odGhpcyks dGhpcy5jb250ZXh0LnNldERlZmF1bHQoKX0sX24ucHJvdG90eXBlLnJlbmRlckxheWVyPWZ1 bmN0aW9uKHQsZSxyLG4pe3IuaXNIaWRkZW4odGhpcy50cmFuc2Zvcm0uem9vbSl8fCgiYmFj a2dyb3VuZCI9PT1yLnR5cGV8fCJjdXN0b20iPT09ci50eXBlfHxuLmxlbmd0aCkmJih0aGlz LmlkPXIuaWQsdGhpcy5ncHVUaW1pbmdTdGFydChyKSxibltyLnR5cGVdKHQsZSxyLG4sdGhp cy5zdHlsZS5wbGFjZW1lbnQudmFyaWFibGVPZmZzZXRzKSx0aGlzLmdwdVRpbWluZ0VuZCgp KX0sX24ucHJvdG90eXBlLmdwdVRpbWluZ1N0YXJ0PWZ1bmN0aW9uKHQpe2lmKHRoaXMub3B0 aW9ucy5ncHVUaW1pbmcpe3ZhciBlPXRoaXMuY29udGV4dC5leHRUaW1lclF1ZXJ5LHI9dGhp cy5ncHVUaW1lcnNbdC5pZF07cnx8KHI9dGhpcy5ncHVUaW1lcnNbdC5pZF09e2NhbGxzOjAs Y3B1VGltZTowLHF1ZXJ5OmUuY3JlYXRlUXVlcnlFWFQoKX0pLHIuY2FsbHMrKyxlLmJlZ2lu UXVlcnlFWFQoZS5USU1FX0VMQVBTRURfRVhULHIucXVlcnkpfX0sX24ucHJvdG90eXBlLmdw dVRpbWluZ0VuZD1mdW5jdGlvbigpe2lmKHRoaXMub3B0aW9ucy5ncHVUaW1pbmcpe3ZhciB0 PXRoaXMuY29udGV4dC5leHRUaW1lclF1ZXJ5O3QuZW5kUXVlcnlFWFQodC5USU1FX0VMQVBT RURfRVhUKX19LF9uLnByb3RvdHlwZS5jb2xsZWN0R3B1VGltZXJzPWZ1bmN0aW9uKCl7dmFy IHQ9dGhpcy5ncHVUaW1lcnM7cmV0dXJuIHRoaXMuZ3B1VGltZXJzPXt9LHR9LF9uLnByb3Rv dHlwZS5xdWVyeUdwdVRpbWVycz1mdW5jdGlvbih0KXt2YXIgZT17fTtmb3IodmFyIHIgaW4g dCl7dmFyIG49dFtyXSxpPXRoaXMuY29udGV4dC5leHRUaW1lclF1ZXJ5LGE9aS5nZXRRdWVy eU9iamVjdEVYVChuLnF1ZXJ5LGkuUVVFUllfUkVTVUxUX0VYVCkvMWU2O2kuZGVsZXRlUXVl cnlFWFQobi5xdWVyeSksZVtyXT1hfXJldHVybiBlfSxfbi5wcm90b3R5cGUudHJhbnNsYXRl UG9zTWF0cml4PWZ1bmN0aW9uKGUscixuLGksYSl7aWYoIW5bMF0mJiFuWzFdKXJldHVybiBl O3ZhciBvPWE/Im1hcCI9PT1pP3RoaXMudHJhbnNmb3JtLmFuZ2xlOjA6InZpZXdwb3J0Ij09 PWk/LXRoaXMudHJhbnNmb3JtLmFuZ2xlOjA7aWYobyl7dmFyIHM9TWF0aC5zaW4obyksbD1N YXRoLmNvcyhvKTtuPVtuWzBdKmwtblsxXSpzLG5bMF0qcytuWzFdKmxdfXZhciBjPVthP25b MF06cGUocixuWzBdLHRoaXMudHJhbnNmb3JtLnpvb20pLGE/blsxXTpwZShyLG5bMV0sdGhp cy50cmFuc2Zvcm0uem9vbSksMF0sdT1uZXcgRmxvYXQzMkFycmF5KDE2KTtyZXR1cm4gdC50 cmFuc2xhdGUodSxlLGMpLHV9LF9uLnByb3RvdHlwZS5zYXZlVGlsZVRleHR1cmU9ZnVuY3Rp b24odCl7dmFyIGU9dGhpcy5fdGlsZVRleHR1cmVzW3Quc2l6ZVswXV07ZT9lLnB1c2godCk6 dGhpcy5fdGlsZVRleHR1cmVzW3Quc2l6ZVswXV09W3RdfSxfbi5wcm90b3R5cGUuZ2V0VGls ZVRleHR1cmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdGlsZVRleHR1cmVzW3RdO3JldHVy biBlJiZlLmxlbmd0aD4wP2UucG9wKCk6bnVsbH0sX24ucHJvdG90eXBlLmlzUGF0dGVybk1p c3Npbmc9ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuITE7aWYoIXQuZnJvbXx8IXQudG8pcmV0 dXJuITA7dmFyIGU9dGhpcy5pbWFnZU1hbmFnZXIuZ2V0UGF0dGVybih0LmZyb20udG9TdHJp bmcoKSkscj10aGlzLmltYWdlTWFuYWdlci5nZXRQYXR0ZXJuKHQudG8udG9TdHJpbmcoKSk7 cmV0dXJuIWV8fCFyfSxfbi5wcm90b3R5cGUudXNlUHJvZ3JhbT1mdW5jdGlvbih0LGUpe3Ro aXMuY2FjaGU9dGhpcy5jYWNoZXx8e307dmFyIHI9IiIrdCsoZT9lLmNhY2hlS2V5OiIiKSso dGhpcy5fc2hvd092ZXJkcmF3SW5zcGVjdG9yPyIvb3ZlcmRyYXciOiIiKTtyZXR1cm4gdGhp cy5jYWNoZVtyXXx8KHRoaXMuY2FjaGVbcl09bmV3IF9yKHRoaXMuY29udGV4dCx4clt0XSxl LEpyW3RdLHRoaXMuX3Nob3dPdmVyZHJhd0luc3BlY3RvcikpLHRoaXMuY2FjaGVbcl19LF9u LnByb3RvdHlwZS5zZXRDdXN0b21MYXllckRlZmF1bHRzPWZ1bmN0aW9uKCl7dGhpcy5jb250 ZXh0LnVuYmluZFZBTygpLHRoaXMuY29udGV4dC5jdWxsRmFjZS5zZXREZWZhdWx0KCksdGhp cy5jb250ZXh0LmFjdGl2ZVRleHR1cmUuc2V0RGVmYXVsdCgpLHRoaXMuY29udGV4dC5waXhl bFN0b3JlVW5wYWNrLnNldERlZmF1bHQoKSx0aGlzLmNvbnRleHQucGl4ZWxTdG9yZVVucGFj a1ByZW11bHRpcGx5QWxwaGEuc2V0RGVmYXVsdCgpLHRoaXMuY29udGV4dC5waXhlbFN0b3Jl VW5wYWNrRmxpcFkuc2V0RGVmYXVsdCgpfSxfbi5wcm90b3R5cGUuc2V0QmFzZVN0YXRlPWZ1 bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb250ZXh0LmdsO3RoaXMuY29udGV4dC5jdWxsRmFjZS5z ZXQoITEpLHRoaXMuY29udGV4dC52aWV3cG9ydC5zZXQoWzAsMCx0aGlzLndpZHRoLHRoaXMu aGVpZ2h0XSksdGhpcy5jb250ZXh0LmJsZW5kRXF1YXRpb24uc2V0KHQuRlVOQ19BREQpfSxf bi5wcm90b3R5cGUuaW5pdERlYnVnT3ZlcmxheUNhbnZhcz1mdW5jdGlvbigpe2lmKG51bGw9 PXRoaXMuZGVidWdPdmVybGF5Q2FudmFzKXt0aGlzLmRlYnVnT3ZlcmxheUNhbnZhcz10Lndp bmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSx0aGlzLmRlYnVnT3Zlcmxh eUNhbnZhcy53aWR0aD01MTIsdGhpcy5kZWJ1Z092ZXJsYXlDYW52YXMuaGVpZ2h0PTUxMjt2 YXIgZT10aGlzLmNvbnRleHQuZ2w7dGhpcy5kZWJ1Z092ZXJsYXlUZXh0dXJlPW5ldyB0LlRl eHR1cmUodGhpcy5jb250ZXh0LHRoaXMuZGVidWdPdmVybGF5Q2FudmFzLGUuUkdCQSl9fSxf bi5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuZW1wdHlUZXh0dXJlLmRlc3Ry b3koKSx0aGlzLmRlYnVnT3ZlcmxheVRleHR1cmUmJnRoaXMuZGVidWdPdmVybGF5VGV4dHVy ZS5kZXN0cm95KCl9O3ZhciB3bj1mdW5jdGlvbih0LGUpe3RoaXMucG9pbnRzPXQsdGhpcy5w bGFuZXM9ZX07d24uZnJvbUludlByb2plY3Rpb25NYXRyaXg9ZnVuY3Rpb24oZSxyLG4pe3Zh ciBpPU1hdGgucG93KDIsbiksYT1bWy0xLDEsLTEsMV0sWzEsMSwtMSwxXSxbMSwtMSwtMSwx XSxbLTEsLTEsLTEsMV0sWy0xLDEsMSwxXSxbMSwxLDEsMV0sWzEsLTEsMSwxXSxbLTEsLTEs MSwxXV0ubWFwKChmdW5jdGlvbihyKXtyZXR1cm4gdC50cmFuc2Zvcm1NYXQ0KFtdLHIsZSl9 KSkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC5zY2FsZSQxKFtdLGUsMS9lWzNdL3IqaSl9 KSksbz1bWzAsMSwyXSxbNiw1LDRdLFswLDMsN10sWzIsMSw1XSxbMywyLDZdLFswLDQsNV1d Lm1hcCgoZnVuY3Rpb24oZSl7dmFyIHI9dC5zdWIoW10sYVtlWzBdXSxhW2VbMV1dKSxuPXQu c3ViKFtdLGFbZVsyXV0sYVtlWzFdXSksaT10Lm5vcm1hbGl6ZShbXSx0LmNyb3NzKFtdLHIs bikpLG89LXQuZG90KGksYVtlWzFdXSk7cmV0dXJuIGkuY29uY2F0KG8pfSkpO3JldHVybiBu ZXcgd24oYSxvKX07dmFyIFRuPWZ1bmN0aW9uKGUscil7dGhpcy5taW49ZSx0aGlzLm1heD1y LHRoaXMuY2VudGVyPXQuc2NhbGUkMihbXSx0LmFkZChbXSx0aGlzLm1pbix0aGlzLm1heCks LjUpfTtUbi5wcm90b3R5cGUucXVhZHJhbnQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciByPVtlJTI9 PTAsZTwyXSxuPXQuY2xvbmUkMih0aGlzLm1pbiksaT10LmNsb25lJDIodGhpcy5tYXgpLGE9 MDthPHIubGVuZ3RoO2ErKyluW2FdPXJbYV0/dGhpcy5taW5bYV06dGhpcy5jZW50ZXJbYV0s aVthXT1yW2FdP3RoaXMuY2VudGVyW2FdOnRoaXMubWF4W2FdO3JldHVybiBpWzJdPXRoaXMu bWF4WzJdLG5ldyBUbihuLGkpfSxUbi5wcm90b3R5cGUuZGlzdGFuY2VYPWZ1bmN0aW9uKHQp e3JldHVybiBNYXRoLm1heChNYXRoLm1pbih0aGlzLm1heFswXSx0WzBdKSx0aGlzLm1pblsw XSktdFswXX0sVG4ucHJvdG90eXBlLmRpc3RhbmNlWT1mdW5jdGlvbih0KXtyZXR1cm4gTWF0 aC5tYXgoTWF0aC5taW4odGhpcy5tYXhbMV0sdFsxXSksdGhpcy5taW5bMV0pLXRbMV19LFRu LnByb3RvdHlwZS5pbnRlcnNlY3RzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgcj1bW3RoaXMubWlu WzBdLHRoaXMubWluWzFdLDAsMV0sW3RoaXMubWF4WzBdLHRoaXMubWluWzFdLDAsMV0sW3Ro aXMubWF4WzBdLHRoaXMubWF4WzFdLDAsMV0sW3RoaXMubWluWzBdLHRoaXMubWF4WzFdLDAs MV1dLG49ITAsaT0wO2k8ZS5wbGFuZXMubGVuZ3RoO2krKyl7Zm9yKHZhciBhPWUucGxhbmVz W2ldLG89MCxzPTA7czxyLmxlbmd0aDtzKyspbys9dC5kb3QkMShhLHJbc10pPj0wO2lmKDA9 PT1vKXJldHVybiAwO28hPT1yLmxlbmd0aCYmKG49ITEpfWlmKG4pcmV0dXJuIDI7Zm9yKHZh ciBsPTA7bDwzO2wrKyl7Zm9yKHZhciBjPU51bWJlci5NQVhfVkFMVUUsdT0tTnVtYmVyLk1B WF9WQUxVRSxmPTA7ZjxlLnBvaW50cy5sZW5ndGg7ZisrKXt2YXIgaD1lLnBvaW50c1tmXVts XS10aGlzLm1pbltsXTtjPU1hdGgubWluKGMsaCksdT1NYXRoLm1heCh1LGgpfWlmKHU8MHx8 Yz50aGlzLm1heFtsXS10aGlzLm1pbltsXSlyZXR1cm4gMH1yZXR1cm4gMX07dmFyIGtuPWZ1 bmN0aW9uKHQsZSxyLG4pe2lmKHZvaWQgMD09PXQmJih0PTApLHZvaWQgMD09PWUmJihlPTAp LHZvaWQgMD09PXImJihyPTApLHZvaWQgMD09PW4mJihuPTApLGlzTmFOKHQpfHx0PDB8fGlz TmFOKGUpfHxlPDB8fGlzTmFOKHIpfHxyPDB8fGlzTmFOKG4pfHxuPDApdGhyb3cgbmV3IEVy cm9yKCJJbnZhbGlkIHZhbHVlIGZvciBlZGdlLWluc2V0cywgdG9wLCBib3R0b20sIGxlZnQg YW5kIHJpZ2h0IG11c3QgYWxsIGJlIG51bWJlcnMiKTt0aGlzLnRvcD10LHRoaXMuYm90dG9t PWUsdGhpcy5sZWZ0PXIsdGhpcy5yaWdodD1ufTtrbi5wcm90b3R5cGUuaW50ZXJwb2xhdGU9 ZnVuY3Rpb24oZSxyLG4pe3JldHVybiBudWxsIT1yLnRvcCYmbnVsbCE9ZS50b3AmJih0aGlz LnRvcD10Lm51bWJlcihlLnRvcCxyLnRvcCxuKSksbnVsbCE9ci5ib3R0b20mJm51bGwhPWUu Ym90dG9tJiYodGhpcy5ib3R0b209dC5udW1iZXIoZS5ib3R0b20sci5ib3R0b20sbikpLG51 bGwhPXIubGVmdCYmbnVsbCE9ZS5sZWZ0JiYodGhpcy5sZWZ0PXQubnVtYmVyKGUubGVmdCxy LmxlZnQsbikpLG51bGwhPXIucmlnaHQmJm51bGwhPWUucmlnaHQmJih0aGlzLnJpZ2h0PXQu bnVtYmVyKGUucmlnaHQsci5yaWdodCxuKSksdGhpc30sa24ucHJvdG90eXBlLmdldENlbnRl cj1mdW5jdGlvbihlLHIpe3ZhciBuPXQuY2xhbXAoKHRoaXMubGVmdCtlLXRoaXMucmlnaHQp LzIsMCxlKSxpPXQuY2xhbXAoKHRoaXMudG9wK3ItdGhpcy5ib3R0b20pLzIsMCxyKTtyZXR1 cm4gbmV3IHQuUG9pbnQobixpKX0sa24ucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXty ZXR1cm4gdGhpcy50b3A9PT10LnRvcCYmdGhpcy5ib3R0b209PT10LmJvdHRvbSYmdGhpcy5s ZWZ0PT09dC5sZWZ0JiZ0aGlzLnJpZ2h0PT09dC5yaWdodH0sa24ucHJvdG90eXBlLmNsb25l PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBrbih0aGlzLnRvcCx0aGlzLmJvdHRvbSx0aGlzLmxl ZnQsdGhpcy5yaWdodCl9LGtuLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57 dG9wOnRoaXMudG9wLGJvdHRvbTp0aGlzLmJvdHRvbSxsZWZ0OnRoaXMubGVmdCxyaWdodDp0 aGlzLnJpZ2h0fX07dmFyIEFuPWZ1bmN0aW9uKGUscixuLGksYSl7dGhpcy50aWxlU2l6ZT01 MTIsdGhpcy5tYXhWYWxpZExhdGl0dWRlPTg1LjA1MTEyOSx0aGlzLl9yZW5kZXJXb3JsZENv cGllcz12b2lkIDA9PT1hfHxhLHRoaXMuX21pblpvb209ZXx8MCx0aGlzLl9tYXhab29tPXJ8 fDIyLHRoaXMuX21pblBpdGNoPW51bGw9PW4/MDpuLHRoaXMuX21heFBpdGNoPW51bGw9PWk/ NjA6aSx0aGlzLnNldE1heEJvdW5kcygpLHRoaXMud2lkdGg9MCx0aGlzLmhlaWdodD0wLHRo aXMuX2NlbnRlcj1uZXcgdC5MbmdMYXQoMCwwKSx0aGlzLnpvb209MCx0aGlzLmFuZ2xlPTAs dGhpcy5fZm92PS42NDM1MDExMDg3OTMyODQ0LHRoaXMuX3BpdGNoPTAsdGhpcy5fdW5tb2Rp ZmllZD0hMCx0aGlzLl9lZGdlSW5zZXRzPW5ldyBrbix0aGlzLl9wb3NNYXRyaXhDYWNoZT17 fSx0aGlzLl9hbGlnbmVkUG9zTWF0cml4Q2FjaGU9e319LE1uPXttaW5ab29tOntjb25maWd1 cmFibGU6ITB9LG1heFpvb206e2NvbmZpZ3VyYWJsZTohMH0sbWluUGl0Y2g6e2NvbmZpZ3Vy YWJsZTohMH0sbWF4UGl0Y2g6e2NvbmZpZ3VyYWJsZTohMH0scmVuZGVyV29ybGRDb3BpZXM6 e2NvbmZpZ3VyYWJsZTohMH0sd29ybGRTaXplOntjb25maWd1cmFibGU6ITB9LGNlbnRlck9m ZnNldDp7Y29uZmlndXJhYmxlOiEwfSxzaXplOntjb25maWd1cmFibGU6ITB9LGJlYXJpbmc6 e2NvbmZpZ3VyYWJsZTohMH0scGl0Y2g6e2NvbmZpZ3VyYWJsZTohMH0sZm92Ontjb25maWd1 cmFibGU6ITB9LHpvb206e2NvbmZpZ3VyYWJsZTohMH0sY2VudGVyOntjb25maWd1cmFibGU6 ITB9LHBhZGRpbmc6e2NvbmZpZ3VyYWJsZTohMH0sY2VudGVyUG9pbnQ6e2NvbmZpZ3VyYWJs ZTohMH0sdW5tb2RpZmllZDp7Y29uZmlndXJhYmxlOiEwfSxwb2ludDp7Y29uZmlndXJhYmxl OiEwfX07QW4ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IEFuKHRoaXMu X21pblpvb20sdGhpcy5fbWF4Wm9vbSx0aGlzLl9taW5QaXRjaCx0aGlzLm1heFBpdGNoLHRo aXMuX3JlbmRlcldvcmxkQ29waWVzKTtyZXR1cm4gdC50aWxlU2l6ZT10aGlzLnRpbGVTaXpl LHQubGF0UmFuZ2U9dGhpcy5sYXRSYW5nZSx0LndpZHRoPXRoaXMud2lkdGgsdC5oZWlnaHQ9 dGhpcy5oZWlnaHQsdC5fY2VudGVyPXRoaXMuX2NlbnRlcix0Lnpvb209dGhpcy56b29tLHQu YW5nbGU9dGhpcy5hbmdsZSx0Ll9mb3Y9dGhpcy5fZm92LHQuX3BpdGNoPXRoaXMuX3BpdGNo LHQuX3VubW9kaWZpZWQ9dGhpcy5fdW5tb2RpZmllZCx0Ll9lZGdlSW5zZXRzPXRoaXMuX2Vk Z2VJbnNldHMuY2xvbmUoKSx0Ll9jYWxjTWF0cmljZXMoKSx0fSxNbi5taW5ab29tLmdldD1m dW5jdGlvbigpe3JldHVybiB0aGlzLl9taW5ab29tfSxNbi5taW5ab29tLnNldD1mdW5jdGlv bih0KXt0aGlzLl9taW5ab29tIT09dCYmKHRoaXMuX21pblpvb209dCx0aGlzLnpvb209TWF0 aC5tYXgodGhpcy56b29tLHQpKX0sTW4ubWF4Wm9vbS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5fbWF4Wm9vbX0sTW4ubWF4Wm9vbS5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fbWF4Wm9v bSE9PXQmJih0aGlzLl9tYXhab29tPXQsdGhpcy56b29tPU1hdGgubWluKHRoaXMuem9vbSx0 KSl9LE1uLm1pblBpdGNoLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9taW5QaXRjaH0s TW4ubWluUGl0Y2guc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX21pblBpdGNoIT09dCYmKHRoaXMu X21pblBpdGNoPXQsdGhpcy5waXRjaD1NYXRoLm1heCh0aGlzLnBpdGNoLHQpKX0sTW4ubWF4 UGl0Y2guZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21heFBpdGNofSxNbi5tYXhQaXRj aC5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fbWF4UGl0Y2ghPT10JiYodGhpcy5fbWF4UGl0Y2g9 dCx0aGlzLnBpdGNoPU1hdGgubWluKHRoaXMucGl0Y2gsdCkpfSxNbi5yZW5kZXJXb3JsZENv cGllcy5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVuZGVyV29ybGRDb3BpZXN9LE1u LnJlbmRlcldvcmxkQ29waWVzLnNldD1mdW5jdGlvbih0KXt2b2lkIDA9PT10P3Q9ITA6bnVs bD09PXQmJih0PSExKSx0aGlzLl9yZW5kZXJXb3JsZENvcGllcz10fSxNbi53b3JsZFNpemUu Z2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGlsZVNpemUqdGhpcy5zY2FsZX0sTW4uY2Vu dGVyT2Zmc2V0LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNlbnRlclBvaW50Ll9zdWIo dGhpcy5zaXplLl9kaXYoMikpfSxNbi5zaXplLmdldD1mdW5jdGlvbigpe3JldHVybiBuZXcg dC5Qb2ludCh0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KX0sTW4uYmVhcmluZy5nZXQ9ZnVuY3Rp b24oKXtyZXR1cm4tdGhpcy5hbmdsZS9NYXRoLlBJKjE4MH0sTW4uYmVhcmluZy5zZXQ9ZnVu Y3Rpb24oZSl7dmFyIHI9LXQud3JhcChlLC0xODAsMTgwKSpNYXRoLlBJLzE4MDt0aGlzLmFu Z2xlIT09ciYmKHRoaXMuX3VubW9kaWZpZWQ9ITEsdGhpcy5hbmdsZT1yLHRoaXMuX2NhbGNN YXRyaWNlcygpLHRoaXMucm90YXRpb25NYXRyaXg9dC5jcmVhdGUkMigpLHQucm90YXRlKHRo aXMucm90YXRpb25NYXRyaXgsdGhpcy5yb3RhdGlvbk1hdHJpeCx0aGlzLmFuZ2xlKSl9LE1u LnBpdGNoLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9waXRjaC9NYXRoLlBJKjE4MH0s TW4ucGl0Y2guc2V0PWZ1bmN0aW9uKGUpe3ZhciByPXQuY2xhbXAoZSx0aGlzLm1pblBpdGNo LHRoaXMubWF4UGl0Y2gpLzE4MCpNYXRoLlBJO3RoaXMuX3BpdGNoIT09ciYmKHRoaXMuX3Vu bW9kaWZpZWQ9ITEsdGhpcy5fcGl0Y2g9cix0aGlzLl9jYWxjTWF0cmljZXMoKSl9LE1uLmZv di5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZm92L01hdGguUEkqMTgwfSxNbi5mb3Yu c2V0PWZ1bmN0aW9uKHQpe3Q9TWF0aC5tYXgoLjAxLE1hdGgubWluKDYwLHQpKSx0aGlzLl9m b3YhPT10JiYodGhpcy5fdW5tb2RpZmllZD0hMSx0aGlzLl9mb3Y9dC8xODAqTWF0aC5QSSx0 aGlzLl9jYWxjTWF0cmljZXMoKSl9LE1uLnpvb20uZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMuX3pvb219LE1uLnpvb20uc2V0PWZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgubWluKE1hdGgu bWF4KHQsdGhpcy5taW5ab29tKSx0aGlzLm1heFpvb20pO3RoaXMuX3pvb20hPT1lJiYodGhp cy5fdW5tb2RpZmllZD0hMSx0aGlzLl96b29tPWUsdGhpcy5zY2FsZT10aGlzLnpvb21TY2Fs ZShlKSx0aGlzLnRpbGVab29tPU1hdGguZmxvb3IoZSksdGhpcy56b29tRnJhY3Rpb249ZS10 aGlzLnRpbGVab29tLHRoaXMuX2NvbnN0cmFpbigpLHRoaXMuX2NhbGNNYXRyaWNlcygpKX0s TW4uY2VudGVyLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jZW50ZXJ9LE1uLmNlbnRl ci5zZXQ9ZnVuY3Rpb24odCl7dC5sYXQ9PT10aGlzLl9jZW50ZXIubGF0JiZ0LmxuZz09PXRo aXMuX2NlbnRlci5sbmd8fCh0aGlzLl91bm1vZGlmaWVkPSExLHRoaXMuX2NlbnRlcj10LHRo aXMuX2NvbnN0cmFpbigpLHRoaXMuX2NhbGNNYXRyaWNlcygpKX0sTW4ucGFkZGluZy5nZXQ9 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZWRnZUluc2V0cy50b0pTT04oKX0sTW4ucGFkZGlu Zy5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fZWRnZUluc2V0cy5lcXVhbHModCl8fCh0aGlzLl91 bm1vZGlmaWVkPSExLHRoaXMuX2VkZ2VJbnNldHMuaW50ZXJwb2xhdGUodGhpcy5fZWRnZUlu c2V0cyx0LDEpLHRoaXMuX2NhbGNNYXRyaWNlcygpKX0sTW4uY2VudGVyUG9pbnQuZ2V0PWZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VkZ2VJbnNldHMuZ2V0Q2VudGVyKHRoaXMud2lkdGgs dGhpcy5oZWlnaHQpfSxBbi5wcm90b3R5cGUuaXNQYWRkaW5nRXF1YWw9ZnVuY3Rpb24odCl7 cmV0dXJuIHRoaXMuX2VkZ2VJbnNldHMuZXF1YWxzKHQpfSxBbi5wcm90b3R5cGUuaW50ZXJw b2xhdGVQYWRkaW5nPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLl91bm1vZGlmaWVkPSExLHRoaXMu X2VkZ2VJbnNldHMuaW50ZXJwb2xhdGUodCxlLHIpLHRoaXMuX2NvbnN0cmFpbigpLHRoaXMu X2NhbGNNYXRyaWNlcygpfSxBbi5wcm90b3R5cGUuY292ZXJpbmdab29tTGV2ZWw9ZnVuY3Rp b24odCl7dmFyIGU9KHQucm91bmRab29tP01hdGgucm91bmQ6TWF0aC5mbG9vcikodGhpcy56 b29tK3RoaXMuc2NhbGVab29tKHRoaXMudGlsZVNpemUvdC50aWxlU2l6ZSkpO3JldHVybiBN YXRoLm1heCgwLGUpfSxBbi5wcm90b3R5cGUuZ2V0VmlzaWJsZVVud3JhcHBlZENvb3JkaW5h dGVzPWZ1bmN0aW9uKGUpe3ZhciByPVtuZXcgdC5VbndyYXBwZWRUaWxlSUQoMCxlKV07aWYo dGhpcy5fcmVuZGVyV29ybGRDb3BpZXMpZm9yKHZhciBuPXRoaXMucG9pbnRDb29yZGluYXRl KG5ldyB0LlBvaW50KDAsMCkpLGk9dGhpcy5wb2ludENvb3JkaW5hdGUobmV3IHQuUG9pbnQo dGhpcy53aWR0aCwwKSksYT10aGlzLnBvaW50Q29vcmRpbmF0ZShuZXcgdC5Qb2ludCh0aGlz LndpZHRoLHRoaXMuaGVpZ2h0KSksbz10aGlzLnBvaW50Q29vcmRpbmF0ZShuZXcgdC5Qb2lu dCgwLHRoaXMuaGVpZ2h0KSkscz1NYXRoLmZsb29yKE1hdGgubWluKG4ueCxpLngsYS54LG8u eCkpLGw9TWF0aC5mbG9vcihNYXRoLm1heChuLngsaS54LGEueCxvLngpKSxjPXMtMTtjPD1s KzE7YysrKTAhPT1jJiZyLnB1c2gobmV3IHQuVW53cmFwcGVkVGlsZUlEKGMsZSkpO3JldHVy biByfSxBbi5wcm90b3R5cGUuY292ZXJpbmdUaWxlcz1mdW5jdGlvbihlKXt2YXIgcj10aGlz LmNvdmVyaW5nWm9vbUxldmVsKGUpLG49cjtpZih2b2lkIDAhPT1lLm1pbnpvb20mJnI8ZS5t aW56b29tKXJldHVybltdO3ZvaWQgMCE9PWUubWF4em9vbSYmcj5lLm1heHpvb20mJihyPWUu bWF4em9vbSk7dmFyIGk9dC5NZXJjYXRvckNvb3JkaW5hdGUuZnJvbUxuZ0xhdCh0aGlzLmNl bnRlciksYT1NYXRoLnBvdygyLHIpLG89W2EqaS54LGEqaS55LDBdLHM9d24uZnJvbUludlBy b2plY3Rpb25NYXRyaXgodGhpcy5pbnZQcm9qTWF0cml4LHRoaXMud29ybGRTaXplLHIpLGw9 ZS5taW56b29tfHwwO3RoaXMucGl0Y2g8PTYwJiZ0aGlzLl9lZGdlSW5zZXRzLnRvcDwuMSYm KGw9cik7dmFyIGM9ZnVuY3Rpb24odCl7cmV0dXJue2FhYmI6bmV3IFRuKFt0KmEsMCwwXSxb KHQrMSkqYSxhLDBdKSx6b29tOjAseDowLHk6MCx3cmFwOnQsZnVsbHlWaXNpYmxlOiExfX0s dT1bXSxmPVtdLGg9cixwPWUucmVwYXJzZU92ZXJzY2FsZWQ/bjpyO2lmKHRoaXMuX3JlbmRl cldvcmxkQ29waWVzKWZvcih2YXIgZD0xO2Q8PTM7ZCsrKXUucHVzaChjKC1kKSksdS5wdXNo KGMoZCkpO2Zvcih1LnB1c2goYygwKSk7dS5sZW5ndGg+MDspe3ZhciBtPXUucG9wKCksZz1t Lngsdj1tLnkseT1tLmZ1bGx5VmlzaWJsZTtpZigheSl7dmFyIHg9bS5hYWJiLmludGVyc2Vj dHMocyk7aWYoMD09PXgpY29udGludWU7eT0yPT09eH12YXIgYj1tLmFhYmIuZGlzdGFuY2VY KG8pLF89bS5hYWJiLmRpc3RhbmNlWShvKSx3PU1hdGgubWF4KE1hdGguYWJzKGIpLE1hdGgu YWJzKF8pKSxUPTMrKDE8PGgtbS56b29tKS0yO2lmKG0uem9vbT09PWh8fHc+VCYmbS56b29t Pj1sKWYucHVzaCh7dGlsZUlEOm5ldyB0Lk92ZXJzY2FsZWRUaWxlSUQobS56b29tPT09aD9w Om0uem9vbSxtLndyYXAsbS56b29tLGcsdiksZGlzdGFuY2VTcTp0LnNxckxlbihbb1swXS0u NS1nLG9bMV0tLjUtdl0pfSk7ZWxzZSBmb3IodmFyIGs9MDtrPDQ7aysrKXt2YXIgQT0oZzw8 MSkrayUyLE09KHY8PDEpKyhrPj4xKTt1LnB1c2goe2FhYmI6bS5hYWJiLnF1YWRyYW50KGsp LHpvb206bS56b29tKzEseDpBLHk6TSx3cmFwOm0ud3JhcCxmdWxseVZpc2libGU6eX0pfX1y ZXR1cm4gZi5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0LmRpc3RhbmNlU3EtZS5kaXN0 YW5jZVNxfSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudGlsZUlEfSkpfSxBbi5wcm90 b3R5cGUucmVzaXplPWZ1bmN0aW9uKHQsZSl7dGhpcy53aWR0aD10LHRoaXMuaGVpZ2h0PWUs dGhpcy5waXhlbHNUb0dMVW5pdHM9WzIvdCwtMi9lXSx0aGlzLl9jb25zdHJhaW4oKSx0aGlz Ll9jYWxjTWF0cmljZXMoKX0sTW4udW5tb2RpZmllZC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5fdW5tb2RpZmllZH0sQW4ucHJvdG90eXBlLnpvb21TY2FsZT1mdW5jdGlvbih0KXty ZXR1cm4gTWF0aC5wb3coMix0KX0sQW4ucHJvdG90eXBlLnNjYWxlWm9vbT1mdW5jdGlvbih0 KXtyZXR1cm4gTWF0aC5sb2codCkvTWF0aC5MTjJ9LEFuLnByb3RvdHlwZS5wcm9qZWN0PWZ1 bmN0aW9uKGUpe3ZhciByPXQuY2xhbXAoZS5sYXQsLXRoaXMubWF4VmFsaWRMYXRpdHVkZSx0 aGlzLm1heFZhbGlkTGF0aXR1ZGUpO3JldHVybiBuZXcgdC5Qb2ludCh0Lm1lcmNhdG9yWGZy b21MbmcoZS5sbmcpKnRoaXMud29ybGRTaXplLHQubWVyY2F0b3JZZnJvbUxhdChyKSp0aGlz LndvcmxkU2l6ZSl9LEFuLnByb3RvdHlwZS51bnByb2plY3Q9ZnVuY3Rpb24oZSl7cmV0dXJu IG5ldyB0Lk1lcmNhdG9yQ29vcmRpbmF0ZShlLngvdGhpcy53b3JsZFNpemUsZS55L3RoaXMu d29ybGRTaXplKS50b0xuZ0xhdCgpfSxNbi5wb2ludC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5wcm9qZWN0KHRoaXMuY2VudGVyKX0sQW4ucHJvdG90eXBlLnNldExvY2F0aW9uQXRQ b2ludD1mdW5jdGlvbihlLHIpe3ZhciBuPXRoaXMucG9pbnRDb29yZGluYXRlKHIpLGk9dGhp cy5wb2ludENvb3JkaW5hdGUodGhpcy5jZW50ZXJQb2ludCksYT10aGlzLmxvY2F0aW9uQ29v cmRpbmF0ZShlKSxvPW5ldyB0Lk1lcmNhdG9yQ29vcmRpbmF0ZShhLngtKG4ueC1pLngpLGEu eS0obi55LWkueSkpO3RoaXMuY2VudGVyPXRoaXMuY29vcmRpbmF0ZUxvY2F0aW9uKG8pLHRo aXMuX3JlbmRlcldvcmxkQ29waWVzJiYodGhpcy5jZW50ZXI9dGhpcy5jZW50ZXIud3JhcCgp KX0sQW4ucHJvdG90eXBlLmxvY2F0aW9uUG9pbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMu Y29vcmRpbmF0ZVBvaW50KHRoaXMubG9jYXRpb25Db29yZGluYXRlKHQpKX0sQW4ucHJvdG90 eXBlLnBvaW50TG9jYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY29vcmRpbmF0ZUxv Y2F0aW9uKHRoaXMucG9pbnRDb29yZGluYXRlKHQpKX0sQW4ucHJvdG90eXBlLmxvY2F0aW9u Q29vcmRpbmF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdC5NZXJjYXRvckNvb3JkaW5hdGUuZnJv bUxuZ0xhdChlKX0sQW4ucHJvdG90eXBlLmNvb3JkaW5hdGVMb2NhdGlvbj1mdW5jdGlvbih0 KXtyZXR1cm4gdC50b0xuZ0xhdCgpfSxBbi5wcm90b3R5cGUucG9pbnRDb29yZGluYXRlPWZ1 bmN0aW9uKGUpe3ZhciByPVtlLngsZS55LDAsMV0sbj1bZS54LGUueSwxLDFdO3QudHJhbnNm b3JtTWF0NChyLHIsdGhpcy5waXhlbE1hdHJpeEludmVyc2UpLHQudHJhbnNmb3JtTWF0NChu LG4sdGhpcy5waXhlbE1hdHJpeEludmVyc2UpO3ZhciBpPXJbM10sYT1uWzNdLG89clswXS9p LHM9blswXS9hLGw9clsxXS9pLGM9blsxXS9hLHU9clsyXS9pLGY9blsyXS9hLGg9dT09PWY/ MDooMC11KS8oZi11KTtyZXR1cm4gbmV3IHQuTWVyY2F0b3JDb29yZGluYXRlKHQubnVtYmVy KG8scyxoKS90aGlzLndvcmxkU2l6ZSx0Lm51bWJlcihsLGMsaCkvdGhpcy53b3JsZFNpemUp fSxBbi5wcm90b3R5cGUuY29vcmRpbmF0ZVBvaW50PWZ1bmN0aW9uKGUpe3ZhciByPVtlLngq dGhpcy53b3JsZFNpemUsZS55KnRoaXMud29ybGRTaXplLDAsMV07cmV0dXJuIHQudHJhbnNm b3JtTWF0NChyLHIsdGhpcy5waXhlbE1hdHJpeCksbmV3IHQuUG9pbnQoclswXS9yWzNdLHJb MV0vclszXSl9LEFuLnByb3RvdHlwZS5nZXRCb3VuZHM9ZnVuY3Rpb24oKXtyZXR1cm4obmV3 IHQuTG5nTGF0Qm91bmRzKS5leHRlbmQodGhpcy5wb2ludExvY2F0aW9uKG5ldyB0LlBvaW50 KDAsMCkpKS5leHRlbmQodGhpcy5wb2ludExvY2F0aW9uKG5ldyB0LlBvaW50KHRoaXMud2lk dGgsMCkpKS5leHRlbmQodGhpcy5wb2ludExvY2F0aW9uKG5ldyB0LlBvaW50KHRoaXMud2lk dGgsdGhpcy5oZWlnaHQpKSkuZXh0ZW5kKHRoaXMucG9pbnRMb2NhdGlvbihuZXcgdC5Qb2lu dCgwLHRoaXMuaGVpZ2h0KSkpfSxBbi5wcm90b3R5cGUuZ2V0TWF4Qm91bmRzPWZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMubGF0UmFuZ2UmJjI9PT10aGlzLmxhdFJhbmdlLmxlbmd0aCYmdGhp cy5sbmdSYW5nZSYmMj09PXRoaXMubG5nUmFuZ2UubGVuZ3RoP25ldyB0LkxuZ0xhdEJvdW5k cyhbdGhpcy5sbmdSYW5nZVswXSx0aGlzLmxhdFJhbmdlWzBdXSxbdGhpcy5sbmdSYW5nZVsx XSx0aGlzLmxhdFJhbmdlWzFdXSk6bnVsbH0sQW4ucHJvdG90eXBlLnNldE1heEJvdW5kcz1m dW5jdGlvbih0KXt0Pyh0aGlzLmxuZ1JhbmdlPVt0LmdldFdlc3QoKSx0LmdldEVhc3QoKV0s dGhpcy5sYXRSYW5nZT1bdC5nZXRTb3V0aCgpLHQuZ2V0Tm9ydGgoKV0sdGhpcy5fY29uc3Ry YWluKCkpOih0aGlzLmxuZ1JhbmdlPW51bGwsdGhpcy5sYXRSYW5nZT1bLXRoaXMubWF4VmFs aWRMYXRpdHVkZSx0aGlzLm1heFZhbGlkTGF0aXR1ZGVdKX0sQW4ucHJvdG90eXBlLmNhbGN1 bGF0ZVBvc01hdHJpeD1mdW5jdGlvbihlLHIpe3ZvaWQgMD09PXImJihyPSExKTt2YXIgbj1l LmtleSxpPXI/dGhpcy5fYWxpZ25lZFBvc01hdHJpeENhY2hlOnRoaXMuX3Bvc01hdHJpeENh Y2hlO2lmKGlbbl0pcmV0dXJuIGlbbl07dmFyIGE9ZS5jYW5vbmljYWwsbz10aGlzLndvcmxk U2l6ZS90aGlzLnpvb21TY2FsZShhLnopLHM9YS54K01hdGgucG93KDIsYS56KSplLndyYXAs bD10LmlkZW50aXR5KG5ldyBGbG9hdDY0QXJyYXkoMTYpKTtyZXR1cm4gdC50cmFuc2xhdGUo bCxsLFtzKm8sYS55Km8sMF0pLHQuc2NhbGUobCxsLFtvL3QuRVhURU5ULG8vdC5FWFRFTlQs MV0pLHQubXVsdGlwbHkobCxyP3RoaXMuYWxpZ25lZFByb2pNYXRyaXg6dGhpcy5wcm9qTWF0 cml4LGwpLGlbbl09bmV3IEZsb2F0MzJBcnJheShsKSxpW25dfSxBbi5wcm90b3R5cGUuY3Vz dG9tTGF5ZXJNYXRyaXg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZXJjYXRvck1hdHJpeC5z bGljZSgpfSxBbi5wcm90b3R5cGUuX2NvbnN0cmFpbj1mdW5jdGlvbigpe2lmKHRoaXMuY2Vu dGVyJiZ0aGlzLndpZHRoJiZ0aGlzLmhlaWdodCYmIXRoaXMuX2NvbnN0cmFpbmluZyl7dGhp cy5fY29uc3RyYWluaW5nPSEwO3ZhciBlLHIsbixpLGE9LTkwLG89OTAscz0tMTgwLGw9MTgw LGM9dGhpcy5zaXplLHU9dGhpcy5fdW5tb2RpZmllZDtpZih0aGlzLmxhdFJhbmdlKXt2YXIg Zj10aGlzLmxhdFJhbmdlO2E9dC5tZXJjYXRvcllmcm9tTGF0KGZbMV0pKnRoaXMud29ybGRT aXplLGU9KG89dC5tZXJjYXRvcllmcm9tTGF0KGZbMF0pKnRoaXMud29ybGRTaXplKS1hPGMu eT9jLnkvKG8tYSk6MH1pZih0aGlzLmxuZ1JhbmdlKXt2YXIgaD10aGlzLmxuZ1JhbmdlO3M9 dC5tZXJjYXRvclhmcm9tTG5nKGhbMF0pKnRoaXMud29ybGRTaXplLHI9KGw9dC5tZXJjYXRv clhmcm9tTG5nKGhbMV0pKnRoaXMud29ybGRTaXplKS1zPGMueD9jLngvKGwtcyk6MH12YXIg cD10aGlzLnBvaW50LGQ9TWF0aC5tYXgocnx8MCxlfHwwKTtpZihkKXJldHVybiB0aGlzLmNl bnRlcj10aGlzLnVucHJvamVjdChuZXcgdC5Qb2ludChyPyhsK3MpLzI6cC54LGU/KG8rYSkv MjpwLnkpKSx0aGlzLnpvb20rPXRoaXMuc2NhbGVab29tKGQpLHRoaXMuX3VubW9kaWZpZWQ9 dSx2b2lkKHRoaXMuX2NvbnN0cmFpbmluZz0hMSk7aWYodGhpcy5sYXRSYW5nZSl7dmFyIG09 cC55LGc9Yy55LzI7bS1nPGEmJihpPWErZyksbStnPm8mJihpPW8tZyl9aWYodGhpcy5sbmdS YW5nZSl7dmFyIHY9cC54LHk9Yy54LzI7di15PHMmJihuPXMreSksdit5PmwmJihuPWwteSl9 dm9pZCAwPT09biYmdm9pZCAwPT09aXx8KHRoaXMuY2VudGVyPXRoaXMudW5wcm9qZWN0KG5l dyB0LlBvaW50KHZvaWQgMCE9PW4/bjpwLngsdm9pZCAwIT09aT9pOnAueSkpKSx0aGlzLl91 bm1vZGlmaWVkPXUsdGhpcy5fY29uc3RyYWluaW5nPSExfX0sQW4ucHJvdG90eXBlLl9jYWxj TWF0cmljZXM9ZnVuY3Rpb24oKXtpZih0aGlzLmhlaWdodCl7dmFyIGU9dGhpcy5fZm92LzIs cj10aGlzLmNlbnRlck9mZnNldDt0aGlzLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2U9LjUvTWF0 aC50YW4oZSkqdGhpcy5oZWlnaHQ7dmFyIG49TWF0aC5QSS8yK3RoaXMuX3BpdGNoLGk9dGhp cy5fZm92KiguNStyLnkvdGhpcy5oZWlnaHQpLGE9TWF0aC5zaW4oaSkqdGhpcy5jYW1lcmFU b0NlbnRlckRpc3RhbmNlL01hdGguc2luKHQuY2xhbXAoTWF0aC5QSS1uLWksLjAxLE1hdGgu UEktLjAxKSksbz10aGlzLnBvaW50LHM9by54LGw9by55LGM9MS4wMSooTWF0aC5jb3MoTWF0 aC5QSS8yLXRoaXMuX3BpdGNoKSphK3RoaXMuY2FtZXJhVG9DZW50ZXJEaXN0YW5jZSksdT10 aGlzLmhlaWdodC81MCxmPW5ldyBGbG9hdDY0QXJyYXkoMTYpO3QucGVyc3BlY3RpdmUoZix0 aGlzLl9mb3YsdGhpcy53aWR0aC90aGlzLmhlaWdodCx1LGMpLGZbOF09Miotci54L3RoaXMu d2lkdGgsZls5XT0yKnIueS90aGlzLmhlaWdodCx0LnNjYWxlKGYsZixbMSwtMSwxXSksdC50 cmFuc2xhdGUoZixmLFswLDAsLXRoaXMuY2FtZXJhVG9DZW50ZXJEaXN0YW5jZV0pLHQucm90 YXRlWChmLGYsdGhpcy5fcGl0Y2gpLHQucm90YXRlWihmLGYsdGhpcy5hbmdsZSksdC50cmFu c2xhdGUoZixmLFstcywtbCwwXSksdGhpcy5tZXJjYXRvck1hdHJpeD10LnNjYWxlKFtdLGYs W3RoaXMud29ybGRTaXplLHRoaXMud29ybGRTaXplLHRoaXMud29ybGRTaXplXSksdC5zY2Fs ZShmLGYsWzEsMSx0Lm1lcmNhdG9yWmZyb21BbHRpdHVkZSgxLHRoaXMuY2VudGVyLmxhdCkq dGhpcy53b3JsZFNpemUsMV0pLHRoaXMucHJvak1hdHJpeD1mLHRoaXMuaW52UHJvak1hdHJp eD10LmludmVydChbXSx0aGlzLnByb2pNYXRyaXgpO3ZhciBoPXRoaXMud2lkdGglMi8yLHA9 dGhpcy5oZWlnaHQlMi8yLGQ9TWF0aC5jb3ModGhpcy5hbmdsZSksbT1NYXRoLnNpbih0aGlz LmFuZ2xlKSxnPXMtTWF0aC5yb3VuZChzKStkKmgrbSpwLHY9bC1NYXRoLnJvdW5kKGwpK2Qq cCttKmgseT1uZXcgRmxvYXQ2NEFycmF5KGYpO2lmKHQudHJhbnNsYXRlKHkseSxbZz4uNT9n LTE6Zyx2Pi41P3YtMTp2LDBdKSx0aGlzLmFsaWduZWRQcm9qTWF0cml4PXksZj10LmNyZWF0 ZSgpLHQuc2NhbGUoZixmLFt0aGlzLndpZHRoLzIsLXRoaXMuaGVpZ2h0LzIsMV0pLHQudHJh bnNsYXRlKGYsZixbMSwtMSwwXSksdGhpcy5sYWJlbFBsYW5lTWF0cml4PWYsZj10LmNyZWF0 ZSgpLHQuc2NhbGUoZixmLFsxLC0xLDFdKSx0LnRyYW5zbGF0ZShmLGYsWy0xLC0xLDBdKSx0 LnNjYWxlKGYsZixbMi90aGlzLndpZHRoLDIvdGhpcy5oZWlnaHQsMV0pLHRoaXMuZ2xDb29y ZE1hdHJpeD1mLHRoaXMucGl4ZWxNYXRyaXg9dC5tdWx0aXBseShuZXcgRmxvYXQ2NEFycmF5 KDE2KSx0aGlzLmxhYmVsUGxhbmVNYXRyaXgsdGhpcy5wcm9qTWF0cml4KSwhKGY9dC5pbnZl cnQobmV3IEZsb2F0NjRBcnJheSgxNiksdGhpcy5waXhlbE1hdHJpeCkpKXRocm93IG5ldyBF cnJvcigiZmFpbGVkIHRvIGludmVydCBtYXRyaXgiKTt0aGlzLnBpeGVsTWF0cml4SW52ZXJz ZT1mLHRoaXMuX3Bvc01hdHJpeENhY2hlPXt9LHRoaXMuX2FsaWduZWRQb3NNYXRyaXhDYWNo ZT17fX19LEFuLnByb3RvdHlwZS5tYXhQaXRjaFNjYWxlRmFjdG9yPWZ1bmN0aW9uKCl7aWYo IXRoaXMucGl4ZWxNYXRyaXhJbnZlcnNlKXJldHVybiAxO3ZhciBlPXRoaXMucG9pbnRDb29y ZGluYXRlKG5ldyB0LlBvaW50KDAsMCkpLHI9W2UueCp0aGlzLndvcmxkU2l6ZSxlLnkqdGhp cy53b3JsZFNpemUsMCwxXTtyZXR1cm4gdC50cmFuc2Zvcm1NYXQ0KHIscix0aGlzLnBpeGVs TWF0cml4KVszXS90aGlzLmNhbWVyYVRvQ2VudGVyRGlzdGFuY2V9LEFuLnByb3RvdHlwZS5n ZXRDYW1lcmFQb2ludD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX3BpdGNoLHI9TWF0aC50YW4o ZSkqKHRoaXMuY2FtZXJhVG9DZW50ZXJEaXN0YW5jZXx8MSk7cmV0dXJuIHRoaXMuY2VudGVy UG9pbnQuYWRkKG5ldyB0LlBvaW50KDAscikpfSxBbi5wcm90b3R5cGUuZ2V0Q2FtZXJhUXVl cnlHZW9tZXRyeT1mdW5jdGlvbihlKXt2YXIgcj10aGlzLmdldENhbWVyYVBvaW50KCk7aWYo MT09PWUubGVuZ3RoKXJldHVybltlWzBdLHJdO2Zvcih2YXIgbj1yLngsaT1yLnksYT1yLngs bz1yLnkscz0wLGw9ZTtzPGwubGVuZ3RoO3MrPTEpe3ZhciBjPWxbc107bj1NYXRoLm1pbihu LGMueCksaT1NYXRoLm1pbihpLGMueSksYT1NYXRoLm1heChhLGMueCksbz1NYXRoLm1heChv LGMueSl9cmV0dXJuW25ldyB0LlBvaW50KG4saSksbmV3IHQuUG9pbnQoYSxpKSxuZXcgdC5Q b2ludChhLG8pLG5ldyB0LlBvaW50KG4sbyksbmV3IHQuUG9pbnQobixpKV19LE9iamVjdC5k ZWZpbmVQcm9wZXJ0aWVzKEFuLnByb3RvdHlwZSxNbik7dmFyIFNuPWZ1bmN0aW9uKGUpe3Zh ciByLG4saSxhLG87dGhpcy5faGFzaE5hbWU9ZSYmZW5jb2RlVVJJQ29tcG9uZW50KGUpLHQu YmluZEFsbChbIl9nZXRDdXJyZW50SGFzaCIsIl9vbkhhc2hDaGFuZ2UiLCJfdXBkYXRlSGFz aCJdLHRoaXMpLHRoaXMuX3VwZGF0ZUhhc2g9KHI9dGhpcy5fdXBkYXRlSGFzaFVudGhyb3R0 bGVkLmJpbmQodGhpcyksbj0zMDAsaT0hMSxhPW51bGwsbz1mdW5jdGlvbigpe2E9bnVsbCxp JiYocigpLGE9c2V0VGltZW91dChvLG4pLGk9ITEpfSxmdW5jdGlvbigpe3JldHVybiBpPSEw LGF8fG8oKSxhfSl9O1NuLnByb3RvdHlwZS5hZGRUbz1mdW5jdGlvbihlKXtyZXR1cm4gdGhp cy5fbWFwPWUsdC53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsdGhpcy5f b25IYXNoQ2hhbmdlLCExKSx0aGlzLl9tYXAub24oIm1vdmVlbmQiLHRoaXMuX3VwZGF0ZUhh c2gpLHRoaXN9LFNuLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXtyZXR1cm4gdC53aW5k b3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsdGhpcy5fb25IYXNoQ2hhbmdl LCExKSx0aGlzLl9tYXAub2ZmKCJtb3ZlZW5kIix0aGlzLl91cGRhdGVIYXNoKSxjbGVhclRp bWVvdXQodGhpcy5fdXBkYXRlSGFzaCgpKSxkZWxldGUgdGhpcy5fbWFwLHRoaXN9LFNuLnBy b3RvdHlwZS5nZXRIYXNoU3RyaW5nPWZ1bmN0aW9uKGUpe3ZhciByPXRoaXMuX21hcC5nZXRD ZW50ZXIoKSxuPU1hdGgucm91bmQoMTAwKnRoaXMuX21hcC5nZXRab29tKCkpLzEwMCxpPU1h dGguY2VpbCgobipNYXRoLkxOMitNYXRoLmxvZyg1MTIvMzYwLy41KSkvTWF0aC5MTjEwKSxh PU1hdGgucG93KDEwLGkpLG89TWF0aC5yb3VuZChyLmxuZyphKS9hLHM9TWF0aC5yb3VuZChy LmxhdCphKS9hLGw9dGhpcy5fbWFwLmdldEJlYXJpbmcoKSxjPXRoaXMuX21hcC5nZXRQaXRj aCgpLHU9IiI7aWYodSs9ZT8iLyIrbysiLyIrcysiLyIrbjpuKyIvIitzKyIvIitvLChsfHxj KSYmKHUrPSIvIitNYXRoLnJvdW5kKDEwKmwpLzEwKSxjJiYodSs9Ii8iK01hdGgucm91bmQo YykpLHRoaXMuX2hhc2hOYW1lKXt2YXIgZj10aGlzLl9oYXNoTmFtZSxoPSExLHA9dC53aW5k b3cubG9jYXRpb24uaGFzaC5zbGljZSgxKS5zcGxpdCgiJiIpLm1hcCgoZnVuY3Rpb24odCl7 dmFyIGU9dC5zcGxpdCgiPSIpWzBdO3JldHVybiBlPT09Zj8oaD0hMCxlKyI9Iit1KTp0fSkp LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSk7cmV0dXJuIGh8fHAucHVzaChmKyI9 Iit1KSwiIyIrcC5qb2luKCImIil9cmV0dXJuIiMiK3V9LFNuLnByb3RvdHlwZS5fZ2V0Q3Vy cmVudEhhc2g9ZnVuY3Rpb24oKXt2YXIgZSxyPXRoaXMsbj10LndpbmRvdy5sb2NhdGlvbi5o YXNoLnJlcGxhY2UoIiMiLCIiKTtyZXR1cm4gdGhpcy5faGFzaE5hbWU/KG4uc3BsaXQoIiYi KS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnNwbGl0KCI9Iil9KSkuZm9yRWFjaCgoZnVu Y3Rpb24odCl7dFswXT09PXIuX2hhc2hOYW1lJiYoZT10KX0pKSwoZSYmZVsxXXx8IiIpLnNw bGl0KCIvIikpOm4uc3BsaXQoIi8iKX0sU24ucHJvdG90eXBlLl9vbkhhc2hDaGFuZ2U9ZnVu Y3Rpb24oKXt2YXIgdD10aGlzLl9nZXRDdXJyZW50SGFzaCgpO2lmKHQubGVuZ3RoPj0zJiYh dC5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gaXNOYU4odCl9KSkpe3ZhciBlPXRoaXMuX21h cC5kcmFnUm90YXRlLmlzRW5hYmxlZCgpJiZ0aGlzLl9tYXAudG91Y2hab29tUm90YXRlLmlz RW5hYmxlZCgpPysodFszXXx8MCk6dGhpcy5fbWFwLmdldEJlYXJpbmcoKTtyZXR1cm4gdGhp cy5fbWFwLmp1bXBUbyh7Y2VudGVyOlsrdFsyXSwrdFsxXV0sem9vbTordFswXSxiZWFyaW5n OmUscGl0Y2g6Kyh0WzRdfHwwKX0pLCEwfXJldHVybiExfSxTbi5wcm90b3R5cGUuX3VwZGF0 ZUhhc2hVbnRocm90dGxlZD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0SGFzaFN0cmluZygp O3RyeXt0LndpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh0LndpbmRvdy5oaXN0b3J5LnN0 YXRlLCIiLGUpfWNhdGNoKHQpe319O3ZhciBFbj17bGluZWFyaXR5Oi4zLGVhc2luZzp0LmJl emllcigwLDAsLjMsMSl9LExuPXQuZXh0ZW5kKHtkZWNlbGVyYXRpb246MjUwMCxtYXhTcGVl ZDoxNDAwfSxFbiksQ249dC5leHRlbmQoe2RlY2VsZXJhdGlvbjoyMCxtYXhTcGVlZDoxNDAw fSxFbiksUG49dC5leHRlbmQoe2RlY2VsZXJhdGlvbjoxZTMsbWF4U3BlZWQ6MzYwfSxFbiks SW49dC5leHRlbmQoe2RlY2VsZXJhdGlvbjoxZTMsbWF4U3BlZWQ6OTB9LEVuKSxPbj1mdW5j dGlvbih0KXt0aGlzLl9tYXA9dCx0aGlzLmNsZWFyKCl9O2Z1bmN0aW9uIHpuKHQsZSl7KCF0 LmR1cmF0aW9ufHx0LmR1cmF0aW9uPGUuZHVyYXRpb24pJiYodC5kdXJhdGlvbj1lLmR1cmF0 aW9uLHQuZWFzaW5nPWUuZWFzaW5nKX1mdW5jdGlvbiBEbihlLHIsbil7dmFyIGk9bi5tYXhT cGVlZCxhPW4ubGluZWFyaXR5LG89bi5kZWNlbGVyYXRpb24scz10LmNsYW1wKGUqYS8oci8x ZTMpLC1pLGkpLGw9TWF0aC5hYnMocykvKG8qYSk7cmV0dXJue2Vhc2luZzpuLmVhc2luZyxk dXJhdGlvbjoxZTMqbCxhbW91bnQ6cyoobC8yKX19T24ucHJvdG90eXBlLmNsZWFyPWZ1bmN0 aW9uKCl7dGhpcy5faW5lcnRpYUJ1ZmZlcj1bXX0sT24ucHJvdG90eXBlLnJlY29yZD1mdW5j dGlvbihlKXt0aGlzLl9kcmFpbkluZXJ0aWFCdWZmZXIoKSx0aGlzLl9pbmVydGlhQnVmZmVy LnB1c2goe3RpbWU6dC5icm93c2VyLm5vdygpLHNldHRpbmdzOmV9KX0sT24ucHJvdG90eXBl Ll9kcmFpbkluZXJ0aWFCdWZmZXI9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5faW5lcnRp YUJ1ZmZlcixyPXQuYnJvd3Nlci5ub3coKTtlLmxlbmd0aD4wJiZyLWVbMF0udGltZT4xNjA7 KWUuc2hpZnQoKX0sT24ucHJvdG90eXBlLl9vbk1vdmVFbmQ9ZnVuY3Rpb24oZSl7aWYodGhp cy5fZHJhaW5JbmVydGlhQnVmZmVyKCksISh0aGlzLl9pbmVydGlhQnVmZmVyLmxlbmd0aDwy KSl7Zm9yKHZhciByPXt6b29tOjAsYmVhcmluZzowLHBpdGNoOjAscGFuOm5ldyB0LlBvaW50 KDAsMCkscGluY2hBcm91bmQ6dm9pZCAwLGFyb3VuZDp2b2lkIDB9LG49MCxpPXRoaXMuX2lu ZXJ0aWFCdWZmZXI7bjxpLmxlbmd0aDtuKz0xKXt2YXIgYT1pW25dLnNldHRpbmdzO3Iuem9v bSs9YS56b29tRGVsdGF8fDAsci5iZWFyaW5nKz1hLmJlYXJpbmdEZWx0YXx8MCxyLnBpdGNo Kz1hLnBpdGNoRGVsdGF8fDAsYS5wYW5EZWx0YSYmci5wYW4uX2FkZChhLnBhbkRlbHRhKSxh LmFyb3VuZCYmKHIuYXJvdW5kPWEuYXJvdW5kKSxhLnBpbmNoQXJvdW5kJiYoci5waW5jaEFy b3VuZD1hLnBpbmNoQXJvdW5kKX12YXIgbz10aGlzLl9pbmVydGlhQnVmZmVyW3RoaXMuX2lu ZXJ0aWFCdWZmZXIubGVuZ3RoLTFdLnRpbWUtdGhpcy5faW5lcnRpYUJ1ZmZlclswXS50aW1l LHM9e307aWYoci5wYW4ubWFnKCkpe3ZhciBsPURuKHIucGFuLm1hZygpLG8sdC5leHRlbmQo e30sTG4sZXx8e30pKTtzLm9mZnNldD1yLnBhbi5tdWx0KGwuYW1vdW50L3IucGFuLm1hZygp KSxzLmNlbnRlcj10aGlzLl9tYXAudHJhbnNmb3JtLmNlbnRlcix6bihzLGwpfWlmKHIuem9v bSl7dmFyIGM9RG4oci56b29tLG8sQ24pO3Muem9vbT10aGlzLl9tYXAudHJhbnNmb3JtLnpv b20rYy5hbW91bnQsem4ocyxjKX1pZihyLmJlYXJpbmcpe3ZhciB1PURuKHIuYmVhcmluZyxv LFBuKTtzLmJlYXJpbmc9dGhpcy5fbWFwLnRyYW5zZm9ybS5iZWFyaW5nK3QuY2xhbXAodS5h bW91bnQsLTE3OSwxNzkpLHpuKHMsdSl9aWYoci5waXRjaCl7dmFyIGY9RG4oci5waXRjaCxv LEluKTtzLnBpdGNoPXRoaXMuX21hcC50cmFuc2Zvcm0ucGl0Y2grZi5hbW91bnQsem4ocyxm KX1pZihzLnpvb218fHMuYmVhcmluZyl7dmFyIGg9dm9pZCAwPT09ci5waW5jaEFyb3VuZD9y LmFyb3VuZDpyLnBpbmNoQXJvdW5kO3MuYXJvdW5kPWg/dGhpcy5fbWFwLnVucHJvamVjdCho KTp0aGlzLl9tYXAuZ2V0Q2VudGVyKCl9cmV0dXJuIHRoaXMuY2xlYXIoKSx0LmV4dGVuZChz LHtub01vdmVTdGFydDohMH0pfX07dmFyIFJuPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4obixp LGEsbyl7dm9pZCAwPT09byYmKG89e30pO3ZhciBzPXIubW91c2VQb3MoaS5nZXRDYW52YXND b250YWluZXIoKSxhKSxsPWkudW5wcm9qZWN0KHMpO2UuY2FsbCh0aGlzLG4sdC5leHRlbmQo e3BvaW50OnMsbG5nTGF0Omwsb3JpZ2luYWxFdmVudDphfSxvKSksdGhpcy5fZGVmYXVsdFBy ZXZlbnRlZD0hMSx0aGlzLnRhcmdldD1pfWUmJihuLl9fcHJvdG9fXz1lKSxuLnByb3RvdHlw ZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlKSxuLnByb3RvdHlwZS5jb25zdHJ1Y3Rv cj1uO3ZhciBpPXtkZWZhdWx0UHJldmVudGVkOntjb25maWd1cmFibGU6ITB9fTtyZXR1cm4g bi5wcm90b3R5cGUucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24oKXt0aGlzLl9kZWZhdWx0UHJl dmVudGVkPSEwfSxpLmRlZmF1bHRQcmV2ZW50ZWQuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMuX2RlZmF1bHRQcmV2ZW50ZWR9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG4ucHJvdG90 eXBlLGkpLG59KHQuRXZlbnQpLEZuPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4obixpLGEpe3Zh ciBvPSJ0b3VjaGVuZCI9PT1uP2EuY2hhbmdlZFRvdWNoZXM6YS50b3VjaGVzLHM9ci50b3Vj aFBvcyhpLmdldENhbnZhc0NvbnRhaW5lcigpLG8pLGw9cy5tYXAoKGZ1bmN0aW9uKHQpe3Jl dHVybiBpLnVucHJvamVjdCh0KX0pKSxjPXMucmVkdWNlKChmdW5jdGlvbih0LGUscixuKXty ZXR1cm4gdC5hZGQoZS5kaXYobi5sZW5ndGgpKX0pLG5ldyB0LlBvaW50KDAsMCkpLHU9aS51 bnByb2plY3QoYyk7ZS5jYWxsKHRoaXMsbix7cG9pbnRzOnMscG9pbnQ6YyxsbmdMYXRzOmws bG5nTGF0OnUsb3JpZ2luYWxFdmVudDphfSksdGhpcy5fZGVmYXVsdFByZXZlbnRlZD0hMX1l JiYobi5fX3Byb3RvX189ZSksbi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3Rv dHlwZSksbi5wcm90b3R5cGUuY29uc3RydWN0b3I9bjt2YXIgaT17ZGVmYXVsdFByZXZlbnRl ZDp7Y29uZmlndXJhYmxlOiEwfX07cmV0dXJuIG4ucHJvdG90eXBlLnByZXZlbnREZWZhdWx0 PWZ1bmN0aW9uKCl7dGhpcy5fZGVmYXVsdFByZXZlbnRlZD0hMH0saS5kZWZhdWx0UHJldmVu dGVkLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZhdWx0UHJldmVudGVkfSxPYmpl Y3QuZGVmaW5lUHJvcGVydGllcyhuLnByb3RvdHlwZSxpKSxufSh0LkV2ZW50KSxCbj1mdW5j dGlvbih0KXtmdW5jdGlvbiBlKGUscixuKXt0LmNhbGwodGhpcyxlLHtvcmlnaW5hbEV2ZW50 Om59KSx0aGlzLl9kZWZhdWx0UHJldmVudGVkPSExfXQmJihlLl9fcHJvdG9fXz10KSxlLnBy b3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25z dHJ1Y3Rvcj1lO3ZhciByPXtkZWZhdWx0UHJldmVudGVkOntjb25maWd1cmFibGU6ITB9fTty ZXR1cm4gZS5wcm90b3R5cGUucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24oKXt0aGlzLl9kZWZh dWx0UHJldmVudGVkPSEwfSxyLmRlZmF1bHRQcmV2ZW50ZWQuZ2V0PWZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMuX2RlZmF1bHRQcmV2ZW50ZWR9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUu cHJvdG90eXBlLHIpLGV9KHQuRXZlbnQpLE5uPWZ1bmN0aW9uKHQsZSl7dGhpcy5fbWFwPXQs dGhpcy5fY2xpY2tUb2xlcmFuY2U9ZS5jbGlja1RvbGVyYW5jZX07Tm4ucHJvdG90eXBlLnJl c2V0PWZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXMuX21vdXNlZG93blBvc30sTm4ucHJvdG90eXBl LndoZWVsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9maXJlUHJldmVudGFibGUobmV3IEJu KHQudHlwZSx0aGlzLl9tYXAsdCkpfSxObi5wcm90b3R5cGUubW91c2Vkb3duPWZ1bmN0aW9u KHQsZSl7cmV0dXJuIHRoaXMuX21vdXNlZG93blBvcz1lLHRoaXMuX2ZpcmVQcmV2ZW50YWJs ZShuZXcgUm4odC50eXBlLHRoaXMuX21hcCx0KSl9LE5uLnByb3RvdHlwZS5tb3VzZXVwPWZ1 bmN0aW9uKHQpe3RoaXMuX21hcC5maXJlKG5ldyBSbih0LnR5cGUsdGhpcy5fbWFwLHQpKX0s Tm4ucHJvdG90eXBlLmNsaWNrPWZ1bmN0aW9uKHQsZSl7dGhpcy5fbW91c2Vkb3duUG9zJiZ0 aGlzLl9tb3VzZWRvd25Qb3MuZGlzdChlKT49dGhpcy5fY2xpY2tUb2xlcmFuY2V8fHRoaXMu X21hcC5maXJlKG5ldyBSbih0LnR5cGUsdGhpcy5fbWFwLHQpKX0sTm4ucHJvdG90eXBlLmRi bGNsaWNrPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9maXJlUHJldmVudGFibGUobmV3IFJu KHQudHlwZSx0aGlzLl9tYXAsdCkpfSxObi5wcm90b3R5cGUubW91c2VvdmVyPWZ1bmN0aW9u KHQpe3RoaXMuX21hcC5maXJlKG5ldyBSbih0LnR5cGUsdGhpcy5fbWFwLHQpKX0sTm4ucHJv dG90eXBlLm1vdXNlb3V0PWZ1bmN0aW9uKHQpe3RoaXMuX21hcC5maXJlKG5ldyBSbih0LnR5 cGUsdGhpcy5fbWFwLHQpKX0sTm4ucHJvdG90eXBlLnRvdWNoc3RhcnQ9ZnVuY3Rpb24odCl7 cmV0dXJuIHRoaXMuX2ZpcmVQcmV2ZW50YWJsZShuZXcgRm4odC50eXBlLHRoaXMuX21hcCx0 KSl9LE5uLnByb3RvdHlwZS50b3VjaG1vdmU9ZnVuY3Rpb24odCl7dGhpcy5fbWFwLmZpcmUo bmV3IEZuKHQudHlwZSx0aGlzLl9tYXAsdCkpfSxObi5wcm90b3R5cGUudG91Y2hlbmQ9ZnVu Y3Rpb24odCl7dGhpcy5fbWFwLmZpcmUobmV3IEZuKHQudHlwZSx0aGlzLl9tYXAsdCkpfSxO bi5wcm90b3R5cGUudG91Y2hjYW5jZWw9ZnVuY3Rpb24odCl7dGhpcy5fbWFwLmZpcmUobmV3 IEZuKHQudHlwZSx0aGlzLl9tYXAsdCkpfSxObi5wcm90b3R5cGUuX2ZpcmVQcmV2ZW50YWJs ZT1mdW5jdGlvbih0KXtpZih0aGlzLl9tYXAuZmlyZSh0KSx0LmRlZmF1bHRQcmV2ZW50ZWQp cmV0dXJue319LE5uLnByb3RvdHlwZS5pc0VuYWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH0s Tm4ucHJvdG90eXBlLmlzQWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuITF9LE5uLnByb3RvdHlw ZS5lbmFibGU9ZnVuY3Rpb24oKXt9LE5uLnByb3RvdHlwZS5kaXNhYmxlPWZ1bmN0aW9uKCl7 fTt2YXIgam49ZnVuY3Rpb24odCl7dGhpcy5fbWFwPXR9O2puLnByb3RvdHlwZS5yZXNldD1m dW5jdGlvbigpe3RoaXMuX2RlbGF5Q29udGV4dE1lbnU9ITEsZGVsZXRlIHRoaXMuX2NvbnRl eHRNZW51RXZlbnR9LGpuLnByb3RvdHlwZS5tb3VzZW1vdmU9ZnVuY3Rpb24odCl7dGhpcy5f bWFwLmZpcmUobmV3IFJuKHQudHlwZSx0aGlzLl9tYXAsdCkpfSxqbi5wcm90b3R5cGUubW91 c2Vkb3duPWZ1bmN0aW9uKCl7dGhpcy5fZGVsYXlDb250ZXh0TWVudT0hMH0sam4ucHJvdG90 eXBlLm1vdXNldXA9ZnVuY3Rpb24oKXt0aGlzLl9kZWxheUNvbnRleHRNZW51PSExLHRoaXMu X2NvbnRleHRNZW51RXZlbnQmJih0aGlzLl9tYXAuZmlyZShuZXcgUm4oImNvbnRleHRtZW51 Iix0aGlzLl9tYXAsdGhpcy5fY29udGV4dE1lbnVFdmVudCkpLGRlbGV0ZSB0aGlzLl9jb250 ZXh0TWVudUV2ZW50KX0sam4ucHJvdG90eXBlLmNvbnRleHRtZW51PWZ1bmN0aW9uKHQpe3Ro aXMuX2RlbGF5Q29udGV4dE1lbnU/dGhpcy5fY29udGV4dE1lbnVFdmVudD10OnRoaXMuX21h cC5maXJlKG5ldyBSbih0LnR5cGUsdGhpcy5fbWFwLHQpKSx0aGlzLl9tYXAubGlzdGVucygi Y29udGV4dG1lbnUiKSYmdC5wcmV2ZW50RGVmYXVsdCgpfSxqbi5wcm90b3R5cGUuaXNFbmFi bGVkPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGpuLnByb3RvdHlwZS5pc0FjdGl2ZT1mdW5jdGlv bigpe3JldHVybiExfSxqbi5wcm90b3R5cGUuZW5hYmxlPWZ1bmN0aW9uKCl7fSxqbi5wcm90 b3R5cGUuZGlzYWJsZT1mdW5jdGlvbigpe307dmFyIFVuPWZ1bmN0aW9uKHQsZSl7dGhpcy5f bWFwPXQsdGhpcy5fZWw9dC5nZXRDYW52YXNDb250YWluZXIoKSx0aGlzLl9jb250YWluZXI9 dC5nZXRDb250YWluZXIoKSx0aGlzLl9jbGlja1RvbGVyYW5jZT1lLmNsaWNrVG9sZXJhbmNl fHwxfTtmdW5jdGlvbiBWbih0LGUpe2Zvcih2YXIgcj17fSxuPTA7bjx0Lmxlbmd0aDtuKysp clt0W25dLmlkZW50aWZpZXJdPWVbbl07cmV0dXJuIHJ9VW4ucHJvdG90eXBlLmlzRW5hYmxl ZD1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5fZW5hYmxlZH0sVW4ucHJvdG90eXBlLmlzQWN0 aXZlPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9hY3RpdmV9LFVuLnByb3RvdHlwZS5lbmFi bGU9ZnVuY3Rpb24oKXt0aGlzLmlzRW5hYmxlZCgpfHwodGhpcy5fZW5hYmxlZD0hMCl9LFVu LnByb3RvdHlwZS5kaXNhYmxlPWZ1bmN0aW9uKCl7dGhpcy5pc0VuYWJsZWQoKSYmKHRoaXMu X2VuYWJsZWQ9ITEpfSxVbi5wcm90b3R5cGUubW91c2Vkb3duPWZ1bmN0aW9uKHQsZSl7dGhp cy5pc0VuYWJsZWQoKSYmdC5zaGlmdEtleSYmMD09PXQuYnV0dG9uJiYoci5kaXNhYmxlRHJh ZygpLHRoaXMuX3N0YXJ0UG9zPXRoaXMuX2xhc3RQb3M9ZSx0aGlzLl9hY3RpdmU9ITApfSxV bi5wcm90b3R5cGUubW91c2Vtb3ZlV2luZG93PWZ1bmN0aW9uKHQsZSl7aWYodGhpcy5fYWN0 aXZlKXt2YXIgbj1lO2lmKCEodGhpcy5fbGFzdFBvcy5lcXVhbHMobil8fCF0aGlzLl9ib3gm Jm4uZGlzdCh0aGlzLl9zdGFydFBvcyk8dGhpcy5fY2xpY2tUb2xlcmFuY2UpKXt2YXIgaT10 aGlzLl9zdGFydFBvczt0aGlzLl9sYXN0UG9zPW4sdGhpcy5fYm94fHwodGhpcy5fYm94PXIu Y3JlYXRlKCJkaXYiLCJtYXBib3hnbC1ib3h6b29tIix0aGlzLl9jb250YWluZXIpLHRoaXMu X2NvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJtYXBib3hnbC1jcm9zc2hhaXIiKSx0aGlzLl9m aXJlRXZlbnQoImJveHpvb21zdGFydCIsdCkpO3ZhciBhPU1hdGgubWluKGkueCxuLngpLG89 TWF0aC5tYXgoaS54LG4ueCkscz1NYXRoLm1pbihpLnksbi55KSxsPU1hdGgubWF4KGkueSxu LnkpO3Iuc2V0VHJhbnNmb3JtKHRoaXMuX2JveCwidHJhbnNsYXRlKCIrYSsicHgsIitzKyJw eCkiKSx0aGlzLl9ib3guc3R5bGUud2lkdGg9by1hKyJweCIsdGhpcy5fYm94LnN0eWxlLmhl aWdodD1sLXMrInB4In19fSxVbi5wcm90b3R5cGUubW91c2V1cFdpbmRvdz1mdW5jdGlvbihl LG4pe3ZhciBpPXRoaXM7aWYodGhpcy5fYWN0aXZlJiYwPT09ZS5idXR0b24pe3ZhciBhPXRo aXMuX3N0YXJ0UG9zLG89bjtpZih0aGlzLnJlc2V0KCksci5zdXBwcmVzc0NsaWNrKCksYS54 IT09by54fHxhLnkhPT1vLnkpcmV0dXJuIHRoaXMuX21hcC5maXJlKG5ldyB0LkV2ZW50KCJi b3h6b29tZW5kIix7b3JpZ2luYWxFdmVudDplfSkpLHtjYW1lcmFBbmltYXRpb246ZnVuY3Rp b24odCl7cmV0dXJuIHQuZml0U2NyZWVuQ29vcmRpbmF0ZXMoYSxvLGkuX21hcC5nZXRCZWFy aW5nKCkse2xpbmVhcjohMH0pfX07dGhpcy5fZmlyZUV2ZW50KCJib3h6b29tY2FuY2VsIixl KX19LFVuLnByb3RvdHlwZS5rZXlkb3duPWZ1bmN0aW9uKHQpe3RoaXMuX2FjdGl2ZSYmMjc9 PT10LmtleUNvZGUmJih0aGlzLnJlc2V0KCksdGhpcy5fZmlyZUV2ZW50KCJib3h6b29tY2Fu Y2VsIix0KSl9LFVuLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuX2FjdGl2ZT0h MSx0aGlzLl9jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgibWFwYm94Z2wtY3Jvc3NoYWly IiksdGhpcy5fYm94JiYoci5yZW1vdmUodGhpcy5fYm94KSx0aGlzLl9ib3g9bnVsbCksci5l bmFibGVEcmFnKCksZGVsZXRlIHRoaXMuX3N0YXJ0UG9zLGRlbGV0ZSB0aGlzLl9sYXN0UG9z fSxVbi5wcm90b3R5cGUuX2ZpcmVFdmVudD1mdW5jdGlvbihlLHIpe3JldHVybiB0aGlzLl9t YXAuZmlyZShuZXcgdC5FdmVudChlLHtvcmlnaW5hbEV2ZW50OnJ9KSl9O3ZhciBIbj1mdW5j dGlvbih0KXt0aGlzLnJlc2V0KCksdGhpcy5udW1Ub3VjaGVzPXQubnVtVG91Y2hlc307SG4u cHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXMuY2VudHJvaWQsZGVsZXRl IHRoaXMuc3RhcnRUaW1lLGRlbGV0ZSB0aGlzLnRvdWNoZXMsdGhpcy5hYm9ydGVkPSExfSxI bi5wcm90b3R5cGUudG91Y2hzdGFydD1mdW5jdGlvbihlLHIsbil7KHRoaXMuY2VudHJvaWR8 fG4ubGVuZ3RoPnRoaXMubnVtVG91Y2hlcykmJih0aGlzLmFib3J0ZWQ9ITApLHRoaXMuYWJv cnRlZHx8KHZvaWQgMD09PXRoaXMuc3RhcnRUaW1lJiYodGhpcy5zdGFydFRpbWU9ZS50aW1l U3RhbXApLG4ubGVuZ3RoPT09dGhpcy5udW1Ub3VjaGVzJiYodGhpcy5jZW50cm9pZD1mdW5j dGlvbihlKXtmb3IodmFyIHI9bmV3IHQuUG9pbnQoMCwwKSxuPTAsaT1lO248aS5sZW5ndGg7 bis9MSl7dmFyIGE9aVtuXTtyLl9hZGQoYSl9cmV0dXJuIHIuZGl2KGUubGVuZ3RoKX0ociks dGhpcy50b3VjaGVzPVZuKG4scikpKX0sSG4ucHJvdG90eXBlLnRvdWNobW92ZT1mdW5jdGlv bih0LGUscil7aWYoIXRoaXMuYWJvcnRlZCYmdGhpcy5jZW50cm9pZCl7dmFyIG49Vm4ocixl KTtmb3IodmFyIGkgaW4gdGhpcy50b3VjaGVzKXt2YXIgYT10aGlzLnRvdWNoZXNbaV0sbz1u W2ldOyghb3x8by5kaXN0KGEpPjMwKSYmKHRoaXMuYWJvcnRlZD0hMCl9fX0sSG4ucHJvdG90 eXBlLnRvdWNoZW5kPWZ1bmN0aW9uKHQsZSxyKXtpZigoIXRoaXMuY2VudHJvaWR8fHQudGlt ZVN0YW1wLXRoaXMuc3RhcnRUaW1lPjUwMCkmJih0aGlzLmFib3J0ZWQ9ITApLDA9PT1yLmxl bmd0aCl7dmFyIG49IXRoaXMuYWJvcnRlZCYmdGhpcy5jZW50cm9pZDtpZih0aGlzLnJlc2V0 KCksbilyZXR1cm4gbn19O3ZhciBxbj1mdW5jdGlvbih0KXt0aGlzLnNpbmdsZVRhcD1uZXcg SG4odCksdGhpcy5udW1UYXBzPXQubnVtVGFwcyx0aGlzLnJlc2V0KCl9O3FuLnByb3RvdHlw ZS5yZXNldD1mdW5jdGlvbigpe3RoaXMubGFzdFRpbWU9MS8wLGRlbGV0ZSB0aGlzLmxhc3RU YXAsdGhpcy5jb3VudD0wLHRoaXMuc2luZ2xlVGFwLnJlc2V0KCl9LHFuLnByb3RvdHlwZS50 b3VjaHN0YXJ0PWZ1bmN0aW9uKHQsZSxyKXt0aGlzLnNpbmdsZVRhcC50b3VjaHN0YXJ0KHQs ZSxyKX0scW4ucHJvdG90eXBlLnRvdWNobW92ZT1mdW5jdGlvbih0LGUscil7dGhpcy5zaW5n bGVUYXAudG91Y2htb3ZlKHQsZSxyKX0scW4ucHJvdG90eXBlLnRvdWNoZW5kPWZ1bmN0aW9u KHQsZSxyKXt2YXIgbj10aGlzLnNpbmdsZVRhcC50b3VjaGVuZCh0LGUscik7aWYobil7dmFy IGk9dC50aW1lU3RhbXAtdGhpcy5sYXN0VGltZTw1MDAsYT0hdGhpcy5sYXN0VGFwfHx0aGlz Lmxhc3RUYXAuZGlzdChuKTwzMDtpZihpJiZhfHx0aGlzLnJlc2V0KCksdGhpcy5jb3VudCsr LHRoaXMubGFzdFRpbWU9dC50aW1lU3RhbXAsdGhpcy5sYXN0VGFwPW4sdGhpcy5jb3VudD09 PXRoaXMubnVtVGFwcylyZXR1cm4gdGhpcy5yZXNldCgpLG59fTt2YXIgR249ZnVuY3Rpb24o KXt0aGlzLl96b29tSW49bmV3IHFuKHtudW1Ub3VjaGVzOjEsbnVtVGFwczoyfSksdGhpcy5f em9vbU91dD1uZXcgcW4oe251bVRvdWNoZXM6MixudW1UYXBzOjF9KSx0aGlzLnJlc2V0KCl9 O0duLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuX2FjdGl2ZT0hMSx0aGlzLl96 b29tSW4ucmVzZXQoKSx0aGlzLl96b29tT3V0LnJlc2V0KCl9LEduLnByb3RvdHlwZS50b3Vj aHN0YXJ0PWZ1bmN0aW9uKHQsZSxyKXt0aGlzLl96b29tSW4udG91Y2hzdGFydCh0LGUsciks dGhpcy5fem9vbU91dC50b3VjaHN0YXJ0KHQsZSxyKX0sR24ucHJvdG90eXBlLnRvdWNobW92 ZT1mdW5jdGlvbih0LGUscil7dGhpcy5fem9vbUluLnRvdWNobW92ZSh0LGUsciksdGhpcy5f em9vbU91dC50b3VjaG1vdmUodCxlLHIpfSxHbi5wcm90b3R5cGUudG91Y2hlbmQ9ZnVuY3Rp b24odCxlLHIpe3ZhciBuPXRoaXMsaT10aGlzLl96b29tSW4udG91Y2hlbmQodCxlLHIpLGE9 dGhpcy5fem9vbU91dC50b3VjaGVuZCh0LGUscik7cmV0dXJuIGk/KHRoaXMuX2FjdGl2ZT0h MCx0LnByZXZlbnREZWZhdWx0KCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gbi5y ZXNldCgpfSksMCkse2NhbWVyYUFuaW1hdGlvbjpmdW5jdGlvbihlKXtyZXR1cm4gZS5lYXNl VG8oe2R1cmF0aW9uOjMwMCx6b29tOmUuZ2V0Wm9vbSgpKzEsYXJvdW5kOmUudW5wcm9qZWN0 KGkpfSx7b3JpZ2luYWxFdmVudDp0fSl9fSk6YT8odGhpcy5fYWN0aXZlPSEwLHQucHJldmVu dERlZmF1bHQoKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBuLnJlc2V0KCl9KSww KSx7Y2FtZXJhQW5pbWF0aW9uOmZ1bmN0aW9uKGUpe3JldHVybiBlLmVhc2VUbyh7ZHVyYXRp b246MzAwLHpvb206ZS5nZXRab29tKCktMSxhcm91bmQ6ZS51bnByb2plY3QoYSl9LHtvcmln aW5hbEV2ZW50OnR9KX19KTp2b2lkIDB9LEduLnByb3RvdHlwZS50b3VjaGNhbmNlbD1mdW5j dGlvbigpe3RoaXMucmVzZXQoKX0sR24ucHJvdG90eXBlLmVuYWJsZT1mdW5jdGlvbigpe3Ro aXMuX2VuYWJsZWQ9ITB9LEduLnByb3RvdHlwZS5kaXNhYmxlPWZ1bmN0aW9uKCl7dGhpcy5f ZW5hYmxlZD0hMSx0aGlzLnJlc2V0KCl9LEduLnByb3RvdHlwZS5pc0VuYWJsZWQ9ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5fZW5hYmxlZH0sR24ucHJvdG90eXBlLmlzQWN0aXZlPWZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZX07dmFyIFluPWZ1bmN0aW9uKHQpe3RoaXMucmVz ZXQoKSx0aGlzLl9jbGlja1RvbGVyYW5jZT10LmNsaWNrVG9sZXJhbmNlfHwxfTtZbi5wcm90 b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLl9hY3RpdmU9ITEsdGhpcy5fbW92ZWQ9ITEs ZGVsZXRlIHRoaXMuX2xhc3RQb2ludCxkZWxldGUgdGhpcy5fZXZlbnRCdXR0b259LFluLnBy b3RvdHlwZS5fY29ycmVjdEJ1dHRvbj1mdW5jdGlvbih0LGUpe3JldHVybiExfSxZbi5wcm90 b3R5cGUuX21vdmU9ZnVuY3Rpb24odCxlKXtyZXR1cm57fX0sWW4ucHJvdG90eXBlLm1vdXNl ZG93bj1mdW5jdGlvbih0LGUpe2lmKCF0aGlzLl9sYXN0UG9pbnQpe3ZhciBuPXIubW91c2VC dXR0b24odCk7dGhpcy5fY29ycmVjdEJ1dHRvbih0LG4pJiYodGhpcy5fbGFzdFBvaW50PWUs dGhpcy5fZXZlbnRCdXR0b249bil9fSxZbi5wcm90b3R5cGUubW91c2Vtb3ZlV2luZG93PWZ1 bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fbGFzdFBvaW50O2lmKHImJih0LnByZXZlbnREZWZh dWx0KCksdGhpcy5fbW92ZWR8fCEoZS5kaXN0KHIpPHRoaXMuX2NsaWNrVG9sZXJhbmNlKSkp cmV0dXJuIHRoaXMuX21vdmVkPSEwLHRoaXMuX2xhc3RQb2ludD1lLHRoaXMuX21vdmUocixl KX0sWW4ucHJvdG90eXBlLm1vdXNldXBXaW5kb3c9ZnVuY3Rpb24odCl7ci5tb3VzZUJ1dHRv bih0KT09PXRoaXMuX2V2ZW50QnV0dG9uJiYodGhpcy5fbW92ZWQmJnIuc3VwcHJlc3NDbGlj aygpLHRoaXMucmVzZXQoKSl9LFluLnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24oKXt0aGlz Ll9lbmFibGVkPSEwfSxZbi5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbigpe3RoaXMuX2Vu YWJsZWQ9ITEsdGhpcy5yZXNldCgpfSxZbi5wcm90b3R5cGUuaXNFbmFibGVkPWZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMuX2VuYWJsZWR9LFluLnByb3RvdHlwZS5pc0FjdGl2ZT1mdW5jdGlv bigpe3JldHVybiB0aGlzLl9hY3RpdmV9O3ZhciBXbj1mdW5jdGlvbih0KXtmdW5jdGlvbiBl KCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxl LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5j b25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLm1vdXNlZG93bj1mdW5jdGlvbihlLHIpe3QucHJv dG90eXBlLm1vdXNlZG93bi5jYWxsKHRoaXMsZSxyKSx0aGlzLl9sYXN0UG9pbnQmJih0aGlz Ll9hY3RpdmU9ITApfSxlLnByb3RvdHlwZS5fY29ycmVjdEJ1dHRvbj1mdW5jdGlvbih0LGUp e3JldHVybiAwPT09ZSYmIXQuY3RybEtleX0sZS5wcm90b3R5cGUuX21vdmU9ZnVuY3Rpb24o dCxlKXtyZXR1cm57YXJvdW5kOmUscGFuRGVsdGE6ZS5zdWIodCl9fSxlfShZbiksWG49ZnVu Y3Rpb24odCl7ZnVuY3Rpb24gZSgpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0 JiYoZS5fX3Byb3RvX189dCksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3Rv dHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLnByb3RvdHlwZS5fY29ycmVjdEJ1 dHRvbj1mdW5jdGlvbih0LGUpe3JldHVybiAwPT09ZSYmdC5jdHJsS2V5fHwyPT09ZX0sZS5w cm90b3R5cGUuX21vdmU9ZnVuY3Rpb24odCxlKXt2YXIgcj0uOCooZS54LXQueCk7aWYocily ZXR1cm4gdGhpcy5fYWN0aXZlPSEwLHtiZWFyaW5nRGVsdGE6cn19LGUucHJvdG90eXBlLmNv bnRleHRtZW51PWZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKX0sZX0oWW4pLFpuPWZ1 bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4g dCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90 b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUuX2NvcnJlY3RC dXR0b249ZnVuY3Rpb24odCxlKXtyZXR1cm4gMD09PWUmJnQuY3RybEtleXx8Mj09PWV9LGUu cHJvdG90eXBlLl9tb3ZlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9LS41KihlLnktdC55KTtpZihy KXJldHVybiB0aGlzLl9hY3RpdmU9ITAse3BpdGNoRGVsdGE6cn19LGUucHJvdG90eXBlLmNv bnRleHRtZW51PWZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKX0sZX0oWW4pLEpuPWZ1 bmN0aW9uKHQpe3RoaXMuX21pblRvdWNoZXM9MSx0aGlzLl9jbGlja1RvbGVyYW5jZT10LmNs aWNrVG9sZXJhbmNlfHwxLHRoaXMucmVzZXQoKX07Sm4ucHJvdG90eXBlLnJlc2V0PWZ1bmN0 aW9uKCl7dGhpcy5fYWN0aXZlPSExLHRoaXMuX3RvdWNoZXM9e30sdGhpcy5fc3VtPW5ldyB0 LlBvaW50KDAsMCl9LEpuLnByb3RvdHlwZS50b3VjaHN0YXJ0PWZ1bmN0aW9uKHQsZSxyKXty ZXR1cm4gdGhpcy5fY2FsY3VsYXRlVHJhbnNmb3JtKHQsZSxyKX0sSm4ucHJvdG90eXBlLnRv dWNobW92ZT1mdW5jdGlvbih0LGUscil7aWYodGhpcy5fYWN0aXZlKXJldHVybiB0LnByZXZl bnREZWZhdWx0KCksdGhpcy5fY2FsY3VsYXRlVHJhbnNmb3JtKHQsZSxyKX0sSm4ucHJvdG90 eXBlLnRvdWNoZW5kPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLl9jYWxjdWxhdGVUcmFuc2Zvcm0o dCxlLHIpLHRoaXMuX2FjdGl2ZSYmci5sZW5ndGg8dGhpcy5fbWluVG91Y2hlcyYmdGhpcy5y ZXNldCgpfSxKbi5wcm90b3R5cGUudG91Y2hjYW5jZWw9ZnVuY3Rpb24oKXt0aGlzLnJlc2V0 KCl9LEpuLnByb3RvdHlwZS5fY2FsY3VsYXRlVHJhbnNmb3JtPWZ1bmN0aW9uKGUscixuKXtu Lmxlbmd0aD4wJiYodGhpcy5fYWN0aXZlPSEwKTt2YXIgaT1WbihuLHIpLGE9bmV3IHQuUG9p bnQoMCwwKSxvPW5ldyB0LlBvaW50KDAsMCkscz0wO2Zvcih2YXIgbCBpbiBpKXt2YXIgYz1p W2xdLHU9dGhpcy5fdG91Y2hlc1tsXTt1JiYoYS5fYWRkKGMpLG8uX2FkZChjLnN1Yih1KSks cysrLGlbbF09Yyl9aWYodGhpcy5fdG91Y2hlcz1pLCEoczx0aGlzLl9taW5Ub3VjaGVzKSYm by5tYWcoKSl7dmFyIGY9by5kaXYocyk7aWYodGhpcy5fc3VtLl9hZGQoZiksISh0aGlzLl9z dW0ubWFnKCk8dGhpcy5fY2xpY2tUb2xlcmFuY2UpKXJldHVybnthcm91bmQ6YS5kaXYocyks cGFuRGVsdGE6Zn19fSxKbi5wcm90b3R5cGUuZW5hYmxlPWZ1bmN0aW9uKCl7dGhpcy5fZW5h YmxlZD0hMH0sSm4ucHJvdG90eXBlLmRpc2FibGU9ZnVuY3Rpb24oKXt0aGlzLl9lbmFibGVk PSExLHRoaXMucmVzZXQoKX0sSm4ucHJvdG90eXBlLmlzRW5hYmxlZD1mdW5jdGlvbigpe3Jl dHVybiB0aGlzLl9lbmFibGVkfSxKbi5wcm90b3R5cGUuaXNBY3RpdmU9ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5fYWN0aXZlfTt2YXIgS249ZnVuY3Rpb24oKXt0aGlzLnJlc2V0KCl9O2Z1 bmN0aW9uIFFuKHQsZSxyKXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylpZih0W25dLmlk ZW50aWZpZXI9PT1yKXJldHVybiBlW25dfUtuLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigp e3RoaXMuX2FjdGl2ZT0hMSxkZWxldGUgdGhpcy5fZmlyc3RUd29Ub3VjaGVzfSxLbi5wcm90 b3R5cGUuX3N0YXJ0PWZ1bmN0aW9uKHQpe30sS24ucHJvdG90eXBlLl9tb3ZlPWZ1bmN0aW9u KHQsZSxyKXtyZXR1cm57fX0sS24ucHJvdG90eXBlLnRvdWNoc3RhcnQ9ZnVuY3Rpb24odCxl LHIpe3RoaXMuX2ZpcnN0VHdvVG91Y2hlc3x8ci5sZW5ndGg8Mnx8KHRoaXMuX2ZpcnN0VHdv VG91Y2hlcz1bclswXS5pZGVudGlmaWVyLHJbMV0uaWRlbnRpZmllcl0sdGhpcy5fc3RhcnQo W2VbMF0sZVsxXV0pKX0sS24ucHJvdG90eXBlLnRvdWNobW92ZT1mdW5jdGlvbih0LGUscil7 aWYodGhpcy5fZmlyc3RUd29Ub3VjaGVzKXt0LnByZXZlbnREZWZhdWx0KCk7dmFyIG49dGhp cy5fZmlyc3RUd29Ub3VjaGVzLGk9blswXSxhPW5bMV0sbz1RbihyLGUsaSkscz1RbihyLGUs YSk7aWYobyYmcyl7dmFyIGw9dGhpcy5fYXJvdW5kQ2VudGVyP251bGw6by5hZGQocykuZGl2 KDIpO3JldHVybiB0aGlzLl9tb3ZlKFtvLHNdLGwsdCl9fX0sS24ucHJvdG90eXBlLnRvdWNo ZW5kPWZ1bmN0aW9uKHQsZSxuKXtpZih0aGlzLl9maXJzdFR3b1RvdWNoZXMpe3ZhciBpPXRo aXMuX2ZpcnN0VHdvVG91Y2hlcyxhPWlbMF0sbz1pWzFdLHM9UW4obixlLGEpLGw9UW4obixl LG8pO3MmJmx8fCh0aGlzLl9hY3RpdmUmJnIuc3VwcHJlc3NDbGljaygpLHRoaXMucmVzZXQo KSl9fSxLbi5wcm90b3R5cGUudG91Y2hjYW5jZWw9ZnVuY3Rpb24oKXt0aGlzLnJlc2V0KCl9 LEtuLnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24odCl7dGhpcy5fZW5hYmxlZD0hMCx0aGlz Ll9hcm91bmRDZW50ZXI9ISF0JiYiY2VudGVyIj09PXQuYXJvdW5kfSxLbi5wcm90b3R5cGUu ZGlzYWJsZT1mdW5jdGlvbigpe3RoaXMuX2VuYWJsZWQ9ITEsdGhpcy5yZXNldCgpfSxLbi5w cm90b3R5cGUuaXNFbmFibGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VuYWJsZWR9LEtu LnByb3RvdHlwZS5pc0FjdGl2ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hY3RpdmV9O2Z1 bmN0aW9uICRuKHQsZSl7cmV0dXJuIE1hdGgubG9nKHQvZSkvTWF0aC5MTjJ9dmFyIHRpPWZ1 bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4g dCYmKGUuX19wcm90b19fPXQpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90 b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGUucmVzZXQ9ZnVu Y3Rpb24oKXt0LnByb3RvdHlwZS5yZXNldC5jYWxsKHRoaXMpLGRlbGV0ZSB0aGlzLl9kaXN0 YW5jZSxkZWxldGUgdGhpcy5fc3RhcnREaXN0YW5jZX0sZS5wcm90b3R5cGUuX3N0YXJ0PWZ1 bmN0aW9uKHQpe3RoaXMuX3N0YXJ0RGlzdGFuY2U9dGhpcy5fZGlzdGFuY2U9dFswXS5kaXN0 KHRbMV0pfSxlLnByb3RvdHlwZS5fbW92ZT1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX2Rp c3RhbmNlO2lmKHRoaXMuX2Rpc3RhbmNlPXRbMF0uZGlzdCh0WzFdKSx0aGlzLl9hY3RpdmV8 fCEoTWF0aC5hYnMoJG4odGhpcy5fZGlzdGFuY2UsdGhpcy5fc3RhcnREaXN0YW5jZSkpPC4x KSlyZXR1cm4gdGhpcy5fYWN0aXZlPSEwLHt6b29tRGVsdGE6JG4odGhpcy5fZGlzdGFuY2Us cikscGluY2hBcm91bmQ6ZX19LGV9KEtuKTtmdW5jdGlvbiBlaSh0LGUpe3JldHVybiAxODAq dC5hbmdsZVdpdGgoZSkvTWF0aC5QSX12YXIgcmk9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgp e3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0JiYoZS5fX3Byb3RvX189dCksZS5w cm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29u c3RydWN0b3I9ZSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3QucHJvdG90eXBlLnJl c2V0LmNhbGwodGhpcyksZGVsZXRlIHRoaXMuX21pbkRpYW1ldGVyLGRlbGV0ZSB0aGlzLl9z dGFydFZlY3RvcixkZWxldGUgdGhpcy5fdmVjdG9yfSxlLnByb3RvdHlwZS5fc3RhcnQ9ZnVu Y3Rpb24odCl7dGhpcy5fc3RhcnRWZWN0b3I9dGhpcy5fdmVjdG9yPXRbMF0uc3ViKHRbMV0p LHRoaXMuX21pbkRpYW1ldGVyPXRbMF0uZGlzdCh0WzFdKX0sZS5wcm90b3R5cGUuX21vdmU9 ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl92ZWN0b3I7aWYodGhpcy5fdmVjdG9yPXRbMF0u c3ViKHRbMV0pLHRoaXMuX2FjdGl2ZXx8IXRoaXMuX2lzQmVsb3dUaHJlc2hvbGQodGhpcy5f dmVjdG9yKSlyZXR1cm4gdGhpcy5fYWN0aXZlPSEwLHtiZWFyaW5nRGVsdGE6ZWkodGhpcy5f dmVjdG9yLHIpLHBpbmNoQXJvdW5kOmV9fSxlLnByb3RvdHlwZS5faXNCZWxvd1RocmVzaG9s ZD1mdW5jdGlvbih0KXt0aGlzLl9taW5EaWFtZXRlcj1NYXRoLm1pbih0aGlzLl9taW5EaWFt ZXRlcix0Lm1hZygpKTt2YXIgZT0yNS8oTWF0aC5QSSp0aGlzLl9taW5EaWFtZXRlcikqMzYw LHI9ZWkodCx0aGlzLl9zdGFydFZlY3Rvcik7cmV0dXJuIE1hdGguYWJzKHIpPGV9LGV9KEtu KTtmdW5jdGlvbiBuaSh0KXtyZXR1cm4gTWF0aC5hYnModC55KT5NYXRoLmFicyh0LngpfXZh ciBpaT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9 cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQm JnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLnJl c2V0PWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUucmVzZXQuY2FsbCh0aGlzKSx0aGlzLl92YWxp ZD12b2lkIDAsZGVsZXRlIHRoaXMuX2ZpcnN0TW92ZSxkZWxldGUgdGhpcy5fbGFzdFBvaW50 c30sZS5wcm90b3R5cGUuX3N0YXJ0PWZ1bmN0aW9uKHQpe3RoaXMuX2xhc3RQb2ludHM9dCxu aSh0WzBdLnN1Yih0WzFdKSkmJih0aGlzLl92YWxpZD0hMSl9LGUucHJvdG90eXBlLl9tb3Zl PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10WzBdLnN1Yih0aGlzLl9sYXN0UG9pbnRzWzBdKSxp PXRbMV0uc3ViKHRoaXMuX2xhc3RQb2ludHNbMV0pO2lmKHRoaXMuX3ZhbGlkPXRoaXMuZ2Vz dHVyZUJlZ2luc1ZlcnRpY2FsbHkobixpLHIudGltZVN0YW1wKSx0aGlzLl92YWxpZCl7dGhp cy5fbGFzdFBvaW50cz10LHRoaXMuX2FjdGl2ZT0hMDtyZXR1cm57cGl0Y2hEZWx0YTotLjUq KChuLnkraS55KS8yKX19fSxlLnByb3RvdHlwZS5nZXN0dXJlQmVnaW5zVmVydGljYWxseT1m dW5jdGlvbih0LGUscil7aWYodm9pZCAwIT09dGhpcy5fdmFsaWQpcmV0dXJuIHRoaXMuX3Zh bGlkO3ZhciBuPXQubWFnKCk+PTIsaT1lLm1hZygpPj0yO2lmKG58fGkpe2lmKCFufHwhaSly ZXR1cm4gdm9pZCAwPT09dGhpcy5fZmlyc3RNb3ZlJiYodGhpcy5fZmlyc3RNb3ZlPXIpLHIt dGhpcy5fZmlyc3RNb3ZlPDEwMCYmdm9pZCAwO3ZhciBhPXQueT4wPT1lLnk+MDtyZXR1cm4g bmkodCkmJm5pKGUpJiZhfX0sZX0oS24pLGFpPXtwYW5TdGVwOjEwMCxiZWFyaW5nU3RlcDox NSxwaXRjaFN0ZXA6MTB9LG9pPWZ1bmN0aW9uKCl7dmFyIHQ9YWk7dGhpcy5fcGFuU3RlcD10 LnBhblN0ZXAsdGhpcy5fYmVhcmluZ1N0ZXA9dC5iZWFyaW5nU3RlcCx0aGlzLl9waXRjaFN0 ZXA9dC5waXRjaFN0ZXB9O2Z1bmN0aW9uIHNpKHQpe3JldHVybiB0KigyLXQpfW9pLnByb3Rv dHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuX2FjdGl2ZT0hMX0sb2kucHJvdG90eXBlLmtl eWRvd249ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZighKHQuYWx0S2V5fHx0LmN0cmxLZXl8 fHQubWV0YUtleSkpe3ZhciByPTAsbj0wLGk9MCxhPTAsbz0wO3N3aXRjaCh0LmtleUNvZGUp e2Nhc2UgNjE6Y2FzZSAxMDc6Y2FzZSAxNzE6Y2FzZSAxODc6cj0xO2JyZWFrO2Nhc2UgMTg5 OmNhc2UgMTA5OmNhc2UgMTczOnI9LTE7YnJlYWs7Y2FzZSAzNzp0LnNoaWZ0S2V5P249LTE6 KHQucHJldmVudERlZmF1bHQoKSxhPS0xKTticmVhaztjYXNlIDM5OnQuc2hpZnRLZXk/bj0x Oih0LnByZXZlbnREZWZhdWx0KCksYT0xKTticmVhaztjYXNlIDM4OnQuc2hpZnRLZXk/aT0x Oih0LnByZXZlbnREZWZhdWx0KCksbz0tMSk7YnJlYWs7Y2FzZSA0MDp0LnNoaWZ0S2V5P2k9 LTE6KHQucHJldmVudERlZmF1bHQoKSxvPTEpO2JyZWFrO2RlZmF1bHQ6cmV0dXJufXJldHVy bntjYW1lcmFBbmltYXRpb246ZnVuY3Rpb24ocyl7dmFyIGw9cy5nZXRab29tKCk7cy5lYXNl VG8oe2R1cmF0aW9uOjMwMCxlYXNlSWQ6ImtleWJvYXJkSGFuZGxlciIsZWFzaW5nOnNpLHpv b206cj9NYXRoLnJvdW5kKGwpK3IqKHQuc2hpZnRLZXk/MjoxKTpsLGJlYXJpbmc6cy5nZXRC ZWFyaW5nKCkrbiplLl9iZWFyaW5nU3RlcCxwaXRjaDpzLmdldFBpdGNoKCkraSplLl9waXRj aFN0ZXAsb2Zmc2V0OlstYSplLl9wYW5TdGVwLC1vKmUuX3BhblN0ZXBdLGNlbnRlcjpzLmdl dENlbnRlcigpfSx7b3JpZ2luYWxFdmVudDp0fSl9fX19LG9pLnByb3RvdHlwZS5lbmFibGU9 ZnVuY3Rpb24oKXt0aGlzLl9lbmFibGVkPSEwfSxvaS5wcm90b3R5cGUuZGlzYWJsZT1mdW5j dGlvbigpe3RoaXMuX2VuYWJsZWQ9ITEsdGhpcy5yZXNldCgpfSxvaS5wcm90b3R5cGUuaXNF bmFibGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VuYWJsZWR9LG9pLnByb3RvdHlwZS5p c0FjdGl2ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hY3RpdmV9O3ZhciBsaT1mdW5jdGlv bihlLHIpe3RoaXMuX21hcD1lLHRoaXMuX2VsPWUuZ2V0Q2FudmFzQ29udGFpbmVyKCksdGhp cy5faGFuZGxlcj1yLHRoaXMuX2RlbHRhPTAsdGhpcy5fZGVmYXVsdFpvb21SYXRlPS4wMSx0 aGlzLl93aGVlbFpvb21SYXRlPTEvNDUwLHQuYmluZEFsbChbIl9vbldoZWVsIiwiX29uVGlt ZW91dCIsIl9vblNjcm9sbEZyYW1lIiwiX29uU2Nyb2xsRmluaXNoZWQiXSx0aGlzKX07bGku cHJvdG90eXBlLnNldFpvb21SYXRlPWZ1bmN0aW9uKHQpe3RoaXMuX2RlZmF1bHRab29tUmF0 ZT10fSxsaS5wcm90b3R5cGUuc2V0V2hlZWxab29tUmF0ZT1mdW5jdGlvbih0KXt0aGlzLl93 aGVlbFpvb21SYXRlPXR9LGxpLnByb3RvdHlwZS5pc0VuYWJsZWQ9ZnVuY3Rpb24oKXtyZXR1 cm4hIXRoaXMuX2VuYWJsZWR9LGxpLnByb3RvdHlwZS5pc0FjdGl2ZT1mdW5jdGlvbigpe3Jl dHVybiEhdGhpcy5fYWN0aXZlfHx2b2lkIDAhPT10aGlzLl9maW5pc2hUaW1lb3V0fSxsaS5w cm90b3R5cGUuaXNab29taW5nPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl96b29taW5nfSxs aS5wcm90b3R5cGUuZW5hYmxlPWZ1bmN0aW9uKHQpe3RoaXMuaXNFbmFibGVkKCl8fCh0aGlz Ll9lbmFibGVkPSEwLHRoaXMuX2Fyb3VuZENlbnRlcj10JiYiY2VudGVyIj09PXQuYXJvdW5k KX0sbGkucHJvdG90eXBlLmRpc2FibGU9ZnVuY3Rpb24oKXt0aGlzLmlzRW5hYmxlZCgpJiYo dGhpcy5fZW5hYmxlZD0hMSl9LGxpLnByb3RvdHlwZS53aGVlbD1mdW5jdGlvbihlKXtpZih0 aGlzLmlzRW5hYmxlZCgpKXt2YXIgcj1lLmRlbHRhTW9kZT09PXQud2luZG93LldoZWVsRXZl bnQuRE9NX0RFTFRBX0xJTkU/NDAqZS5kZWx0YVk6ZS5kZWx0YVksbj10LmJyb3dzZXIubm93 KCksaT1uLSh0aGlzLl9sYXN0V2hlZWxFdmVudFRpbWV8fDApO3RoaXMuX2xhc3RXaGVlbEV2 ZW50VGltZT1uLDAhPT1yJiZyJTQuMDAwMjQ0MTQwNjI1PT0wP3RoaXMuX3R5cGU9IndoZWVs IjowIT09ciYmTWF0aC5hYnMocik8ND90aGlzLl90eXBlPSJ0cmFja3BhZCI6aT40MDA/KHRo aXMuX3R5cGU9bnVsbCx0aGlzLl9sYXN0VmFsdWU9cix0aGlzLl90aW1lb3V0PXNldFRpbWVv dXQodGhpcy5fb25UaW1lb3V0LDQwLGUpKTp0aGlzLl90eXBlfHwodGhpcy5fdHlwZT1NYXRo LmFicyhpKnIpPDIwMD8idHJhY2twYWQiOiJ3aGVlbCIsdGhpcy5fdGltZW91dCYmKGNsZWFy VGltZW91dCh0aGlzLl90aW1lb3V0KSx0aGlzLl90aW1lb3V0PW51bGwscis9dGhpcy5fbGFz dFZhbHVlKSksZS5zaGlmdEtleSYmciYmKHIvPTQpLHRoaXMuX3R5cGUmJih0aGlzLl9sYXN0 V2hlZWxFdmVudD1lLHRoaXMuX2RlbHRhLT1yLHRoaXMuX2FjdGl2ZXx8dGhpcy5fc3RhcnQo ZSkpLGUucHJldmVudERlZmF1bHQoKX19LGxpLnByb3RvdHlwZS5fb25UaW1lb3V0PWZ1bmN0 aW9uKHQpe3RoaXMuX3R5cGU9IndoZWVsIix0aGlzLl9kZWx0YS09dGhpcy5fbGFzdFZhbHVl LHRoaXMuX2FjdGl2ZXx8dGhpcy5fc3RhcnQodCl9LGxpLnByb3RvdHlwZS5fc3RhcnQ9ZnVu Y3Rpb24oZSl7aWYodGhpcy5fZGVsdGEpe3RoaXMuX2ZyYW1lSWQmJih0aGlzLl9mcmFtZUlk PW51bGwpLHRoaXMuX2FjdGl2ZT0hMCx0aGlzLmlzWm9vbWluZygpfHwodGhpcy5fem9vbWlu Zz0hMCksdGhpcy5fZmluaXNoVGltZW91dCYmKGNsZWFyVGltZW91dCh0aGlzLl9maW5pc2hU aW1lb3V0KSxkZWxldGUgdGhpcy5fZmluaXNoVGltZW91dCk7dmFyIG49ci5tb3VzZVBvcyh0 aGlzLl9lbCxlKTt0aGlzLl9hcm91bmQ9dC5MbmdMYXQuY29udmVydCh0aGlzLl9hcm91bmRD ZW50ZXI/dGhpcy5fbWFwLmdldENlbnRlcigpOnRoaXMuX21hcC51bnByb2plY3QobikpLHRo aXMuX2Fyb3VuZFBvaW50PXRoaXMuX21hcC50cmFuc2Zvcm0ubG9jYXRpb25Qb2ludCh0aGlz Ll9hcm91bmQpLHRoaXMuX2ZyYW1lSWR8fCh0aGlzLl9mcmFtZUlkPSEwLHRoaXMuX2hhbmRs ZXIuX3RyaWdnZXJSZW5kZXJGcmFtZSgpKX19LGxpLnByb3RvdHlwZS5yZW5kZXJGcmFtZT1m dW5jdGlvbigpe3JldHVybiB0aGlzLl9vblNjcm9sbEZyYW1lKCl9LGxpLnByb3RvdHlwZS5f b25TY3JvbGxGcmFtZT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYodGhpcy5fZnJhbWVJZCYm KHRoaXMuX2ZyYW1lSWQ9bnVsbCx0aGlzLmlzQWN0aXZlKCkpKXt2YXIgcj10aGlzLl9tYXAu dHJhbnNmb3JtO2lmKDAhPT10aGlzLl9kZWx0YSl7dmFyIG49IndoZWVsIj09PXRoaXMuX3R5 cGUmJk1hdGguYWJzKHRoaXMuX2RlbHRhKT40LjAwMDI0NDE0MDYyNT90aGlzLl93aGVlbFpv b21SYXRlOnRoaXMuX2RlZmF1bHRab29tUmF0ZSxpPTIvKDErTWF0aC5leHAoLU1hdGguYWJz KHRoaXMuX2RlbHRhKm4pKSk7dGhpcy5fZGVsdGE8MCYmMCE9PWkmJihpPTEvaSk7dmFyIGE9 Im51bWJlciI9PXR5cGVvZiB0aGlzLl90YXJnZXRab29tP3Iuem9vbVNjYWxlKHRoaXMuX3Rh cmdldFpvb20pOnIuc2NhbGU7dGhpcy5fdGFyZ2V0Wm9vbT1NYXRoLm1pbihyLm1heFpvb20s TWF0aC5tYXgoci5taW5ab29tLHIuc2NhbGVab29tKGEqaSkpKSwid2hlZWwiPT09dGhpcy5f dHlwZSYmKHRoaXMuX3N0YXJ0Wm9vbT1yLnpvb20sdGhpcy5fZWFzaW5nPXRoaXMuX3Ntb290 aE91dEVhc2luZygyMDApKSx0aGlzLl9kZWx0YT0wfXZhciBvLHM9Im51bWJlciI9PXR5cGVv ZiB0aGlzLl90YXJnZXRab29tP3RoaXMuX3RhcmdldFpvb206ci56b29tLGw9dGhpcy5fc3Rh cnRab29tLGM9dGhpcy5fZWFzaW5nLHU9ITE7aWYoIndoZWVsIj09PXRoaXMuX3R5cGUmJmwm JmMpe3ZhciBmPU1hdGgubWluKCh0LmJyb3dzZXIubm93KCktdGhpcy5fbGFzdFdoZWVsRXZl bnRUaW1lKS8yMDAsMSksaD1jKGYpO289dC5udW1iZXIobCxzLGgpLGY8MT90aGlzLl9mcmFt ZUlkfHwodGhpcy5fZnJhbWVJZD0hMCk6dT0hMH1lbHNlIG89cyx1PSEwO3JldHVybiB0aGlz Ll9hY3RpdmU9ITAsdSYmKHRoaXMuX2FjdGl2ZT0hMSx0aGlzLl9maW5pc2hUaW1lb3V0PXNl dFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZS5fem9vbWluZz0hMSxlLl9oYW5kbGVyLl90cmlnZ2Vy UmVuZGVyRnJhbWUoKSxkZWxldGUgZS5fdGFyZ2V0Wm9vbSxkZWxldGUgZS5fZmluaXNoVGlt ZW91dH0pLDIwMCkpLHtub0luZXJ0aWE6ITAsbmVlZHNSZW5kZXJGcmFtZTohdSx6b29tRGVs dGE6by1yLnpvb20sYXJvdW5kOnRoaXMuX2Fyb3VuZFBvaW50LG9yaWdpbmFsRXZlbnQ6dGhp cy5fbGFzdFdoZWVsRXZlbnR9fX0sbGkucHJvdG90eXBlLl9zbW9vdGhPdXRFYXNpbmc9ZnVu Y3Rpb24oZSl7dmFyIHI9dC5lYXNlO2lmKHRoaXMuX3ByZXZFYXNlKXt2YXIgbj10aGlzLl9w cmV2RWFzZSxpPSh0LmJyb3dzZXIubm93KCktbi5zdGFydCkvbi5kdXJhdGlvbixhPW4uZWFz aW5nKGkrLjAxKS1uLmVhc2luZyhpKSxvPS4yNy9NYXRoLnNxcnQoYSphKzFlLTQpKi4wMSxz PU1hdGguc3FydCguMDcyOS1vKm8pO3I9dC5iZXppZXIobyxzLC4yNSwxKX1yZXR1cm4gdGhp cy5fcHJldkVhc2U9e3N0YXJ0OnQuYnJvd3Nlci5ub3coKSxkdXJhdGlvbjplLGVhc2luZzpy fSxyfSxsaS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLl9hY3RpdmU9ITF9O3Zh ciBjaT1mdW5jdGlvbih0LGUpe3RoaXMuX2NsaWNrWm9vbT10LHRoaXMuX3RhcFpvb209ZX07 Y2kucHJvdG90eXBlLmVuYWJsZT1mdW5jdGlvbigpe3RoaXMuX2NsaWNrWm9vbS5lbmFibGUo KSx0aGlzLl90YXBab29tLmVuYWJsZSgpfSxjaS5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlv bigpe3RoaXMuX2NsaWNrWm9vbS5kaXNhYmxlKCksdGhpcy5fdGFwWm9vbS5kaXNhYmxlKCl9 LGNpLnByb3RvdHlwZS5pc0VuYWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2xpY2ta b29tLmlzRW5hYmxlZCgpJiZ0aGlzLl90YXBab29tLmlzRW5hYmxlZCgpfSxjaS5wcm90b3R5 cGUuaXNBY3RpdmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2xpY2tab29tLmlzQWN0aXZl KCl8fHRoaXMuX3RhcFpvb20uaXNBY3RpdmUoKX07dmFyIHVpPWZ1bmN0aW9uKCl7dGhpcy5y ZXNldCgpfTt1aS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLl9hY3RpdmU9ITF9 LHVpLnByb3RvdHlwZS5kYmxjbGljaz1mdW5jdGlvbih0LGUpe3JldHVybiB0LnByZXZlbnRE ZWZhdWx0KCkse2NhbWVyYUFuaW1hdGlvbjpmdW5jdGlvbihyKXtyLmVhc2VUbyh7ZHVyYXRp b246MzAwLHpvb206ci5nZXRab29tKCkrKHQuc2hpZnRLZXk/LTE6MSksYXJvdW5kOnIudW5w cm9qZWN0KGUpfSx7b3JpZ2luYWxFdmVudDp0fSl9fX0sdWkucHJvdG90eXBlLmVuYWJsZT1m dW5jdGlvbigpe3RoaXMuX2VuYWJsZWQ9ITB9LHVpLnByb3RvdHlwZS5kaXNhYmxlPWZ1bmN0 aW9uKCl7dGhpcy5fZW5hYmxlZD0hMSx0aGlzLnJlc2V0KCl9LHVpLnByb3RvdHlwZS5pc0Vu YWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZW5hYmxlZH0sdWkucHJvdG90eXBlLmlz QWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZX07dmFyIGZpPWZ1bmN0aW9u KCl7dGhpcy5fdGFwPW5ldyBxbih7bnVtVG91Y2hlczoxLG51bVRhcHM6MX0pLHRoaXMucmVz ZXQoKX07ZmkucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5fYWN0aXZlPSExLGRl bGV0ZSB0aGlzLl9zd2lwZVBvaW50LGRlbGV0ZSB0aGlzLl9zd2lwZVRvdWNoLGRlbGV0ZSB0 aGlzLl90YXBUaW1lLHRoaXMuX3RhcC5yZXNldCgpfSxmaS5wcm90b3R5cGUudG91Y2hzdGFy dD1mdW5jdGlvbih0LGUscil7dGhpcy5fc3dpcGVQb2ludHx8KHRoaXMuX3RhcFRpbWUmJnQu dGltZVN0YW1wLXRoaXMuX3RhcFRpbWU+NTAwJiZ0aGlzLnJlc2V0KCksdGhpcy5fdGFwVGlt ZT9yLmxlbmd0aD4wJiYodGhpcy5fc3dpcGVQb2ludD1lWzBdLHRoaXMuX3N3aXBlVG91Y2g9 clswXS5pZGVudGlmaWVyKTp0aGlzLl90YXAudG91Y2hzdGFydCh0LGUscikpfSxmaS5wcm90 b3R5cGUudG91Y2htb3ZlPWZ1bmN0aW9uKHQsZSxyKXtpZih0aGlzLl90YXBUaW1lKXtpZih0 aGlzLl9zd2lwZVBvaW50KXtpZihyWzBdLmlkZW50aWZpZXIhPT10aGlzLl9zd2lwZVRvdWNo KXJldHVybjt2YXIgbj1lWzBdLGk9bi55LXRoaXMuX3N3aXBlUG9pbnQueTtyZXR1cm4gdGhp cy5fc3dpcGVQb2ludD1uLHQucHJldmVudERlZmF1bHQoKSx0aGlzLl9hY3RpdmU9ITAse3pv b21EZWx0YTppLzEyOH19fWVsc2UgdGhpcy5fdGFwLnRvdWNobW92ZSh0LGUscil9LGZpLnBy b3RvdHlwZS50b3VjaGVuZD1mdW5jdGlvbih0LGUscil7dGhpcy5fdGFwVGltZT90aGlzLl9z d2lwZVBvaW50JiYwPT09ci5sZW5ndGgmJnRoaXMucmVzZXQoKTp0aGlzLl90YXAudG91Y2hl bmQodCxlLHIpJiYodGhpcy5fdGFwVGltZT10LnRpbWVTdGFtcCl9LGZpLnByb3RvdHlwZS50 b3VjaGNhbmNlbD1mdW5jdGlvbigpe3RoaXMucmVzZXQoKX0sZmkucHJvdG90eXBlLmVuYWJs ZT1mdW5jdGlvbigpe3RoaXMuX2VuYWJsZWQ9ITB9LGZpLnByb3RvdHlwZS5kaXNhYmxlPWZ1 bmN0aW9uKCl7dGhpcy5fZW5hYmxlZD0hMSx0aGlzLnJlc2V0KCl9LGZpLnByb3RvdHlwZS5p c0VuYWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZW5hYmxlZH0sZmkucHJvdG90eXBl LmlzQWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZX07dmFyIGhpPWZ1bmN0 aW9uKHQsZSxyKXt0aGlzLl9lbD10LHRoaXMuX21vdXNlUGFuPWUsdGhpcy5fdG91Y2hQYW49 cn07aGkucHJvdG90eXBlLmVuYWJsZT1mdW5jdGlvbih0KXt0aGlzLl9pbmVydGlhT3B0aW9u cz10fHx7fSx0aGlzLl9tb3VzZVBhbi5lbmFibGUoKSx0aGlzLl90b3VjaFBhbi5lbmFibGUo KSx0aGlzLl9lbC5jbGFzc0xpc3QuYWRkKCJtYXBib3hnbC10b3VjaC1kcmFnLXBhbiIpfSxo aS5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbigpe3RoaXMuX21vdXNlUGFuLmRpc2FibGUo KSx0aGlzLl90b3VjaFBhbi5kaXNhYmxlKCksdGhpcy5fZWwuY2xhc3NMaXN0LnJlbW92ZSgi bWFwYm94Z2wtdG91Y2gtZHJhZy1wYW4iKX0saGkucHJvdG90eXBlLmlzRW5hYmxlZD1mdW5j dGlvbigpe3JldHVybiB0aGlzLl9tb3VzZVBhbi5pc0VuYWJsZWQoKSYmdGhpcy5fdG91Y2hQ YW4uaXNFbmFibGVkKCl9LGhpLnByb3RvdHlwZS5pc0FjdGl2ZT1mdW5jdGlvbigpe3JldHVy biB0aGlzLl9tb3VzZVBhbi5pc0FjdGl2ZSgpfHx0aGlzLl90b3VjaFBhbi5pc0FjdGl2ZSgp fTt2YXIgcGk9ZnVuY3Rpb24odCxlLHIpe3RoaXMuX3BpdGNoV2l0aFJvdGF0ZT10LnBpdGNo V2l0aFJvdGF0ZSx0aGlzLl9tb3VzZVJvdGF0ZT1lLHRoaXMuX21vdXNlUGl0Y2g9cn07cGku cHJvdG90eXBlLmVuYWJsZT1mdW5jdGlvbigpe3RoaXMuX21vdXNlUm90YXRlLmVuYWJsZSgp LHRoaXMuX3BpdGNoV2l0aFJvdGF0ZSYmdGhpcy5fbW91c2VQaXRjaC5lbmFibGUoKX0scGku cHJvdG90eXBlLmRpc2FibGU9ZnVuY3Rpb24oKXt0aGlzLl9tb3VzZVJvdGF0ZS5kaXNhYmxl KCksdGhpcy5fbW91c2VQaXRjaC5kaXNhYmxlKCl9LHBpLnByb3RvdHlwZS5pc0VuYWJsZWQ9 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbW91c2VSb3RhdGUuaXNFbmFibGVkKCkmJighdGhp cy5fcGl0Y2hXaXRoUm90YXRlfHx0aGlzLl9tb3VzZVBpdGNoLmlzRW5hYmxlZCgpKX0scGku cHJvdG90eXBlLmlzQWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vdXNlUm90YXRl LmlzQWN0aXZlKCl8fHRoaXMuX21vdXNlUGl0Y2guaXNBY3RpdmUoKX07dmFyIGRpPWZ1bmN0 aW9uKHQsZSxyLG4pe3RoaXMuX2VsPXQsdGhpcy5fdG91Y2hab29tPWUsdGhpcy5fdG91Y2hS b3RhdGU9cix0aGlzLl90YXBEcmFnWm9vbT1uLHRoaXMuX3JvdGF0aW9uRGlzYWJsZWQ9ITEs dGhpcy5fZW5hYmxlZD0hMH07ZGkucHJvdG90eXBlLmVuYWJsZT1mdW5jdGlvbih0KXt0aGlz Ll90b3VjaFpvb20uZW5hYmxlKHQpLHRoaXMuX3JvdGF0aW9uRGlzYWJsZWR8fHRoaXMuX3Rv dWNoUm90YXRlLmVuYWJsZSh0KSx0aGlzLl90YXBEcmFnWm9vbS5lbmFibGUoKSx0aGlzLl9l bC5jbGFzc0xpc3QuYWRkKCJtYXBib3hnbC10b3VjaC16b29tLXJvdGF0ZSIpfSxkaS5wcm90 b3R5cGUuZGlzYWJsZT1mdW5jdGlvbigpe3RoaXMuX3RvdWNoWm9vbS5kaXNhYmxlKCksdGhp cy5fdG91Y2hSb3RhdGUuZGlzYWJsZSgpLHRoaXMuX3RhcERyYWdab29tLmRpc2FibGUoKSx0 aGlzLl9lbC5jbGFzc0xpc3QucmVtb3ZlKCJtYXBib3hnbC10b3VjaC16b29tLXJvdGF0ZSIp fSxkaS5wcm90b3R5cGUuaXNFbmFibGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RvdWNo Wm9vbS5pc0VuYWJsZWQoKSYmKHRoaXMuX3JvdGF0aW9uRGlzYWJsZWR8fHRoaXMuX3RvdWNo Um90YXRlLmlzRW5hYmxlZCgpKSYmdGhpcy5fdGFwRHJhZ1pvb20uaXNFbmFibGVkKCl9LGRp LnByb3RvdHlwZS5pc0FjdGl2ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl90b3VjaFpvb20u aXNBY3RpdmUoKXx8dGhpcy5fdG91Y2hSb3RhdGUuaXNBY3RpdmUoKXx8dGhpcy5fdGFwRHJh Z1pvb20uaXNBY3RpdmUoKX0sZGkucHJvdG90eXBlLmRpc2FibGVSb3RhdGlvbj1mdW5jdGlv bigpe3RoaXMuX3JvdGF0aW9uRGlzYWJsZWQ9ITAsdGhpcy5fdG91Y2hSb3RhdGUuZGlzYWJs ZSgpfSxkaS5wcm90b3R5cGUuZW5hYmxlUm90YXRpb249ZnVuY3Rpb24oKXt0aGlzLl9yb3Rh dGlvbkRpc2FibGVkPSExLHRoaXMuX3RvdWNoWm9vbS5pc0VuYWJsZWQoKSYmdGhpcy5fdG91 Y2hSb3RhdGUuZW5hYmxlKCl9O3ZhciBtaT1mdW5jdGlvbih0KXtyZXR1cm4gdC56b29tfHx0 LmRyYWd8fHQucGl0Y2h8fHQucm90YXRlfSxnaT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7 dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQmJihlLl9fcHJvdG9fXz10KSxlLnBy b3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25z dHJ1Y3Rvcj1lLGV9KHQuRXZlbnQpO2Z1bmN0aW9uIHZpKHQpe3JldHVybiB0LnBhbkRlbHRh JiZ0LnBhbkRlbHRhLm1hZygpfHx0Lnpvb21EZWx0YXx8dC5iZWFyaW5nRGVsdGF8fHQucGl0 Y2hEZWx0YX12YXIgeWk9ZnVuY3Rpb24oZSxuKXt0aGlzLl9tYXA9ZSx0aGlzLl9lbD10aGlz Ll9tYXAuZ2V0Q2FudmFzQ29udGFpbmVyKCksdGhpcy5faGFuZGxlcnM9W10sdGhpcy5faGFu ZGxlcnNCeUlkPXt9LHRoaXMuX2NoYW5nZXM9W10sdGhpcy5faW5lcnRpYT1uZXcgT24oZSks dGhpcy5fYmVhcmluZ1NuYXA9bi5iZWFyaW5nU25hcCx0aGlzLl9wcmV2aW91c0FjdGl2ZUhh bmRsZXJzPXt9LHRoaXMuX2V2ZW50c0luUHJvZ3Jlc3M9e30sdGhpcy5fYWRkRGVmYXVsdEhh bmRsZXJzKG4pLHQuYmluZEFsbChbImhhbmRsZUV2ZW50IiwiaGFuZGxlV2luZG93RXZlbnQi XSx0aGlzKTt2YXIgaT10aGlzLl9lbDt0aGlzLl9saXN0ZW5lcnM9W1tpLCJ0b3VjaHN0YXJ0 Iix7cGFzc2l2ZTohMX1dLFtpLCJ0b3VjaG1vdmUiLHtwYXNzaXZlOiExfV0sW2ksInRvdWNo ZW5kIix2b2lkIDBdLFtpLCJ0b3VjaGNhbmNlbCIsdm9pZCAwXSxbaSwibW91c2Vkb3duIix2 b2lkIDBdLFtpLCJtb3VzZW1vdmUiLHZvaWQgMF0sW2ksIm1vdXNldXAiLHZvaWQgMF0sW3Qu d2luZG93LmRvY3VtZW50LCJtb3VzZW1vdmUiLHtjYXB0dXJlOiEwfV0sW3Qud2luZG93LmRv Y3VtZW50LCJtb3VzZXVwIix2b2lkIDBdLFtpLCJtb3VzZW92ZXIiLHZvaWQgMF0sW2ksIm1v dXNlb3V0Iix2b2lkIDBdLFtpLCJkYmxjbGljayIsdm9pZCAwXSxbaSwiY2xpY2siLHZvaWQg MF0sW2ksImtleWRvd24iLHtjYXB0dXJlOiExfV0sW2ksImtleXVwIix2b2lkIDBdLFtpLCJ3 aGVlbCIse3Bhc3NpdmU6ITF9XSxbaSwiY29udGV4dG1lbnUiLHZvaWQgMF0sW3Qud2luZG93 LCJibHVyIix2b2lkIDBdXTtmb3IodmFyIGE9MCxvPXRoaXMuX2xpc3RlbmVyczthPG8ubGVu Z3RoO2ErPTEpe3ZhciBzPW9bYV0sbD1zWzBdLGM9c1sxXSx1PXNbMl07ci5hZGRFdmVudExp c3RlbmVyKGwsYyxsPT09dC53aW5kb3cuZG9jdW1lbnQ/dGhpcy5oYW5kbGVXaW5kb3dFdmVu dDp0aGlzLmhhbmRsZUV2ZW50LHUpfX07eWkucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24o KXtmb3IodmFyIGU9MCxuPXRoaXMuX2xpc3RlbmVycztlPG4ubGVuZ3RoO2UrPTEpe3ZhciBp PW5bZV0sYT1pWzBdLG89aVsxXSxzPWlbMl07ci5yZW1vdmVFdmVudExpc3RlbmVyKGEsbyxh PT09dC53aW5kb3cuZG9jdW1lbnQ/dGhpcy5oYW5kbGVXaW5kb3dFdmVudDp0aGlzLmhhbmRs ZUV2ZW50LHMpfX0seWkucHJvdG90eXBlLl9hZGREZWZhdWx0SGFuZGxlcnM9ZnVuY3Rpb24o dCl7dmFyIGU9dGhpcy5fbWFwLHI9ZS5nZXRDYW52YXNDb250YWluZXIoKTt0aGlzLl9hZGQo Im1hcEV2ZW50IixuZXcgTm4oZSx0KSk7dmFyIG49ZS5ib3hab29tPW5ldyBVbihlLHQpO3Ro aXMuX2FkZCgiYm94Wm9vbSIsbik7dmFyIGk9bmV3IEduLGE9bmV3IHVpO2UuZG91YmxlQ2xp Y2tab29tPW5ldyBjaShhLGkpLHRoaXMuX2FkZCgidGFwWm9vbSIsaSksdGhpcy5fYWRkKCJj bGlja1pvb20iLGEpO3ZhciBvPW5ldyBmaTt0aGlzLl9hZGQoInRhcERyYWdab29tIixvKTt2 YXIgcz1lLnRvdWNoUGl0Y2g9bmV3IGlpO3RoaXMuX2FkZCgidG91Y2hQaXRjaCIscyk7dmFy IGw9bmV3IFhuKHQpLGM9bmV3IFpuKHQpO2UuZHJhZ1JvdGF0ZT1uZXcgcGkodCxsLGMpLHRo aXMuX2FkZCgibW91c2VSb3RhdGUiLGwsWyJtb3VzZVBpdGNoIl0pLHRoaXMuX2FkZCgibW91 c2VQaXRjaCIsYyxbIm1vdXNlUm90YXRlIl0pO3ZhciB1PW5ldyBXbih0KSxmPW5ldyBKbih0 KTtlLmRyYWdQYW49bmV3IGhpKHIsdSxmKSx0aGlzLl9hZGQoIm1vdXNlUGFuIix1KSx0aGlz Ll9hZGQoInRvdWNoUGFuIixmLFsidG91Y2hab29tIiwidG91Y2hSb3RhdGUiXSk7dmFyIGg9 bmV3IHJpLHA9bmV3IHRpO2UudG91Y2hab29tUm90YXRlPW5ldyBkaShyLHAsaCxvKSx0aGlz Ll9hZGQoInRvdWNoUm90YXRlIixoLFsidG91Y2hQYW4iLCJ0b3VjaFpvb20iXSksdGhpcy5f YWRkKCJ0b3VjaFpvb20iLHAsWyJ0b3VjaFBhbiIsInRvdWNoUm90YXRlIl0pO3ZhciBkPWUu c2Nyb2xsWm9vbT1uZXcgbGkoZSx0aGlzKTt0aGlzLl9hZGQoInNjcm9sbFpvb20iLGQsWyJt b3VzZVBhbiJdKTt2YXIgbT1lLmtleWJvYXJkPW5ldyBvaTt0aGlzLl9hZGQoImtleWJvYXJk IixtKSx0aGlzLl9hZGQoImJsb2NrYWJsZU1hcEV2ZW50IixuZXcgam4oZSkpO2Zvcih2YXIg Zz0wLHY9WyJib3hab29tIiwiZG91YmxlQ2xpY2tab29tIiwidGFwRHJhZ1pvb20iLCJ0b3Vj aFBpdGNoIiwiZHJhZ1JvdGF0ZSIsImRyYWdQYW4iLCJ0b3VjaFpvb21Sb3RhdGUiLCJzY3Jv bGxab29tIiwia2V5Ym9hcmQiXTtnPHYubGVuZ3RoO2crPTEpe3ZhciB5PXZbZ107dC5pbnRl cmFjdGl2ZSYmdFt5XSYmZVt5XS5lbmFibGUodFt5XSl9fSx5aS5wcm90b3R5cGUuX2FkZD1m dW5jdGlvbih0LGUscil7dGhpcy5faGFuZGxlcnMucHVzaCh7aGFuZGxlck5hbWU6dCxoYW5k bGVyOmUsYWxsb3dlZDpyfSksdGhpcy5faGFuZGxlcnNCeUlkW3RdPWV9LHlpLnByb3RvdHlw ZS5zdG9wPWZ1bmN0aW9uKCl7aWYoIXRoaXMuX3VwZGF0aW5nQ2FtZXJhKXtmb3IodmFyIHQ9 MCxlPXRoaXMuX2hhbmRsZXJzO3Q8ZS5sZW5ndGg7dCs9MSl7ZVt0XS5oYW5kbGVyLnJlc2V0 KCl9dGhpcy5faW5lcnRpYS5jbGVhcigpLHRoaXMuX2ZpcmVFdmVudHMoe30se30pLHRoaXMu X2NoYW5nZXM9W119fSx5aS5wcm90b3R5cGUuaXNBY3RpdmU9ZnVuY3Rpb24oKXtmb3IodmFy IHQ9MCxlPXRoaXMuX2hhbmRsZXJzO3Q8ZS5sZW5ndGg7dCs9MSl7aWYoZVt0XS5oYW5kbGVy LmlzQWN0aXZlKCkpcmV0dXJuITB9cmV0dXJuITF9LHlpLnByb3RvdHlwZS5pc1pvb21pbmc9 ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX2V2ZW50c0luUHJvZ3Jlc3Muem9vbXx8dGhpcy5f bWFwLnNjcm9sbFpvb20uaXNab29taW5nKCl9LHlpLnByb3RvdHlwZS5pc1JvdGF0aW5nPWZ1 bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9ldmVudHNJblByb2dyZXNzLnJvdGF0ZX0seWkucHJv dG90eXBlLmlzTW92aW5nPWZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4obWkodGhpcy5fZXZl bnRzSW5Qcm9ncmVzcykpfHx0aGlzLmlzWm9vbWluZygpfSx5aS5wcm90b3R5cGUuX2Jsb2Nr ZWRCeUFjdGl2ZT1mdW5jdGlvbih0LGUscil7Zm9yKHZhciBuIGluIHQpaWYobiE9PXImJigh ZXx8ZS5pbmRleE9mKG4pPDApKXJldHVybiEwO3JldHVybiExfSx5aS5wcm90b3R5cGUuaGFu ZGxlV2luZG93RXZlbnQ9ZnVuY3Rpb24odCl7dGhpcy5oYW5kbGVFdmVudCh0LHQudHlwZSsi V2luZG93Iil9LHlpLnByb3RvdHlwZS5fZ2V0TWFwVG91Y2hlcz1mdW5jdGlvbih0KXtmb3Io dmFyIGU9W10scj0wLG49dDtyPG4ubGVuZ3RoO3IrPTEpe3ZhciBpPW5bcl0sYT1pLnRhcmdl dDt0aGlzLl9lbC5jb250YWlucyhhKSYmZS5wdXNoKGkpfXJldHVybiBlfSx5aS5wcm90b3R5 cGUuaGFuZGxlRXZlbnQ9ZnVuY3Rpb24odCxlKXtpZigiYmx1ciIhPT10LnR5cGUpe3RoaXMu X3VwZGF0aW5nQ2FtZXJhPSEwO2Zvcih2YXIgbj0icmVuZGVyRnJhbWUiPT09dC50eXBlP3Zv aWQgMDp0LGk9e25lZWRzUmVuZGVyRnJhbWU6ITF9LGE9e30sbz17fSxzPXQudG91Y2hlcz90 aGlzLl9nZXRNYXBUb3VjaGVzKHQudG91Y2hlcyk6dm9pZCAwLGw9cz9yLnRvdWNoUG9zKHRo aXMuX2VsLHMpOnIubW91c2VQb3ModGhpcy5fZWwsdCksYz0wLHU9dGhpcy5faGFuZGxlcnM7 Yzx1Lmxlbmd0aDtjKz0xKXt2YXIgZj11W2NdLGg9Zi5oYW5kbGVyTmFtZSxwPWYuaGFuZGxl cixkPWYuYWxsb3dlZDtpZihwLmlzRW5hYmxlZCgpKXt2YXIgbT12b2lkIDA7dGhpcy5fYmxv Y2tlZEJ5QWN0aXZlKG8sZCxoKT9wLnJlc2V0KCk6cFtlfHx0LnR5cGVdJiYobT1wW2V8fHQu dHlwZV0odCxsLHMpLHRoaXMubWVyZ2VIYW5kbGVyUmVzdWx0KGksYSxtLGgsbiksbSYmbS5u ZWVkc1JlbmRlckZyYW1lJiZ0aGlzLl90cmlnZ2VyUmVuZGVyRnJhbWUoKSksKG18fHAuaXNB Y3RpdmUoKSkmJihvW2hdPXApfX12YXIgZz17fTtmb3IodmFyIHYgaW4gdGhpcy5fcHJldmlv dXNBY3RpdmVIYW5kbGVycylvW3ZdfHwoZ1t2XT1uKTt0aGlzLl9wcmV2aW91c0FjdGl2ZUhh bmRsZXJzPW8sKE9iamVjdC5rZXlzKGcpLmxlbmd0aHx8dmkoaSkpJiYodGhpcy5fY2hhbmdl cy5wdXNoKFtpLGEsZ10pLHRoaXMuX3RyaWdnZXJSZW5kZXJGcmFtZSgpKSwoT2JqZWN0Lmtl eXMobykubGVuZ3RofHx2aShpKSkmJnRoaXMuX21hcC5fc3RvcCghMCksdGhpcy5fdXBkYXRp bmdDYW1lcmE9ITE7dmFyIHk9aS5jYW1lcmFBbmltYXRpb247eSYmKHRoaXMuX2luZXJ0aWEu Y2xlYXIoKSx0aGlzLl9maXJlRXZlbnRzKHt9LHt9KSx0aGlzLl9jaGFuZ2VzPVtdLHkodGhp cy5fbWFwKSl9ZWxzZSB0aGlzLnN0b3AoKX0seWkucHJvdG90eXBlLm1lcmdlSGFuZGxlclJl c3VsdD1mdW5jdGlvbihlLHIsbixpLGEpe2lmKG4pe3QuZXh0ZW5kKGUsbik7dmFyIG89e2hh bmRsZXJOYW1lOmksb3JpZ2luYWxFdmVudDpuLm9yaWdpbmFsRXZlbnR8fGF9O3ZvaWQgMCE9 PW4uem9vbURlbHRhJiYoci56b29tPW8pLHZvaWQgMCE9PW4ucGFuRGVsdGEmJihyLmRyYWc9 byksdm9pZCAwIT09bi5waXRjaERlbHRhJiYoci5waXRjaD1vKSx2b2lkIDAhPT1uLmJlYXJp bmdEZWx0YSYmKHIucm90YXRlPW8pfX0seWkucHJvdG90eXBlLl9hcHBseUNoYW5nZXM9ZnVu Y3Rpb24oKXtmb3IodmFyIGU9e30scj17fSxuPXt9LGk9MCxhPXRoaXMuX2NoYW5nZXM7aTxh Lmxlbmd0aDtpKz0xKXt2YXIgbz1hW2ldLHM9b1swXSxsPW9bMV0sYz1vWzJdO3MucGFuRGVs dGEmJihlLnBhbkRlbHRhPShlLnBhbkRlbHRhfHxuZXcgdC5Qb2ludCgwLDApKS5fYWRkKHMu cGFuRGVsdGEpKSxzLnpvb21EZWx0YSYmKGUuem9vbURlbHRhPShlLnpvb21EZWx0YXx8MCkr cy56b29tRGVsdGEpLHMuYmVhcmluZ0RlbHRhJiYoZS5iZWFyaW5nRGVsdGE9KGUuYmVhcmlu Z0RlbHRhfHwwKStzLmJlYXJpbmdEZWx0YSkscy5waXRjaERlbHRhJiYoZS5waXRjaERlbHRh PShlLnBpdGNoRGVsdGF8fDApK3MucGl0Y2hEZWx0YSksdm9pZCAwIT09cy5hcm91bmQmJihl LmFyb3VuZD1zLmFyb3VuZCksdm9pZCAwIT09cy5waW5jaEFyb3VuZCYmKGUucGluY2hBcm91 bmQ9cy5waW5jaEFyb3VuZCkscy5ub0luZXJ0aWEmJihlLm5vSW5lcnRpYT1zLm5vSW5lcnRp YSksdC5leHRlbmQocixsKSx0LmV4dGVuZChuLGMpfXRoaXMuX3VwZGF0ZU1hcFRyYW5zZm9y bShlLHIsbiksdGhpcy5fY2hhbmdlcz1bXX0seWkucHJvdG90eXBlLl91cGRhdGVNYXBUcmFu c2Zvcm09ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMuX21hcCxpPW4udHJhbnNmb3JtO2lm KCF2aSh0KSlyZXR1cm4gdGhpcy5fZmlyZUV2ZW50cyhlLHIpO3ZhciBhPXQucGFuRGVsdGEs bz10Lnpvb21EZWx0YSxzPXQuYmVhcmluZ0RlbHRhLGw9dC5waXRjaERlbHRhLGM9dC5hcm91 bmQsdT10LnBpbmNoQXJvdW5kO3ZvaWQgMCE9PXUmJihjPXUpLG4uX3N0b3AoITApLGM9Y3x8 bi50cmFuc2Zvcm0uY2VudGVyUG9pbnQ7dmFyIGY9aS5wb2ludExvY2F0aW9uKGE/Yy5zdWIo YSk6Yyk7cyYmKGkuYmVhcmluZys9cyksbCYmKGkucGl0Y2grPWwpLG8mJihpLnpvb20rPW8p LGkuc2V0TG9jYXRpb25BdFBvaW50KGYsYyksdGhpcy5fbWFwLl91cGRhdGUoKSx0Lm5vSW5l cnRpYXx8dGhpcy5faW5lcnRpYS5yZWNvcmQodCksdGhpcy5fZmlyZUV2ZW50cyhlLHIpfSx5 aS5wcm90b3R5cGUuX2ZpcmVFdmVudHM9ZnVuY3Rpb24oZSxyKXt2YXIgbj10aGlzLGk9bWko dGhpcy5fZXZlbnRzSW5Qcm9ncmVzcyksYT1taShlKSxvPXt9O2Zvcih2YXIgcyBpbiBlKXt2 YXIgbD1lW3NdLm9yaWdpbmFsRXZlbnQ7dGhpcy5fZXZlbnRzSW5Qcm9ncmVzc1tzXXx8KG9b cysic3RhcnQiXT1sKSx0aGlzLl9ldmVudHNJblByb2dyZXNzW3NdPWVbc119Zm9yKHZhciBj IGluIWkmJmEmJnRoaXMuX2ZpcmVFdmVudCgibW92ZXN0YXJ0IixhLm9yaWdpbmFsRXZlbnQp LG8pdGhpcy5fZmlyZUV2ZW50KGMsb1tjXSk7Zm9yKHZhciB1IGluIGUucm90YXRlJiYodGhp cy5fYmVhcmluZ0NoYW5nZWQ9ITApLGEmJnRoaXMuX2ZpcmVFdmVudCgibW92ZSIsYS5vcmln aW5hbEV2ZW50KSxlKXt2YXIgZj1lW3VdLm9yaWdpbmFsRXZlbnQ7dGhpcy5fZmlyZUV2ZW50 KHUsZil9dmFyIGgscD17fTtmb3IodmFyIGQgaW4gdGhpcy5fZXZlbnRzSW5Qcm9ncmVzcyl7 dmFyIG09dGhpcy5fZXZlbnRzSW5Qcm9ncmVzc1tkXSxnPW0uaGFuZGxlck5hbWUsdj1tLm9y aWdpbmFsRXZlbnQ7dGhpcy5faGFuZGxlcnNCeUlkW2ddLmlzQWN0aXZlKCl8fChkZWxldGUg dGhpcy5fZXZlbnRzSW5Qcm9ncmVzc1tkXSxoPXJbZ118fHYscFtkKyJlbmQiXT1oKX1mb3Io dmFyIHkgaW4gcCl0aGlzLl9maXJlRXZlbnQoeSxwW3ldKTt2YXIgeD1taSh0aGlzLl9ldmVu dHNJblByb2dyZXNzKTtpZigoaXx8YSkmJiF4KXt0aGlzLl91cGRhdGluZ0NhbWVyYT0hMDt2 YXIgYj10aGlzLl9pbmVydGlhLl9vbk1vdmVFbmQodGhpcy5fbWFwLmRyYWdQYW4uX2luZXJ0 aWFPcHRpb25zKSxfPWZ1bmN0aW9uKHQpe3JldHVybiAwIT09dCYmLW4uX2JlYXJpbmdTbmFw PHQmJnQ8bi5fYmVhcmluZ1NuYXB9O2I/KF8oYi5iZWFyaW5nfHx0aGlzLl9tYXAuZ2V0QmVh cmluZygpKSYmKGIuYmVhcmluZz0wKSx0aGlzLl9tYXAuZWFzZVRvKGIse29yaWdpbmFsRXZl bnQ6aH0pKToodGhpcy5fbWFwLmZpcmUobmV3IHQuRXZlbnQoIm1vdmVlbmQiLHtvcmlnaW5h bEV2ZW50Omh9KSksXyh0aGlzLl9tYXAuZ2V0QmVhcmluZygpKSYmdGhpcy5fbWFwLnJlc2V0 Tm9ydGgoKSksdGhpcy5fYmVhcmluZ0NoYW5nZWQ9ITEsdGhpcy5fdXBkYXRpbmdDYW1lcmE9 ITF9fSx5aS5wcm90b3R5cGUuX2ZpcmVFdmVudD1mdW5jdGlvbihlLHIpe3RoaXMuX21hcC5m aXJlKG5ldyB0LkV2ZW50KGUscj97b3JpZ2luYWxFdmVudDpyfTp7fSkpfSx5aS5wcm90b3R5 cGUuX3RyaWdnZXJSZW5kZXJGcmFtZT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dm9pZCAwPT09 dGhpcy5fZnJhbWVJZCYmKHRoaXMuX2ZyYW1lSWQ9dGhpcy5fbWFwLl9yZXF1ZXN0UmVuZGVy RnJhbWUoKGZ1bmN0aW9uKGUpe2RlbGV0ZSB0Ll9mcmFtZUlkLHQuaGFuZGxlRXZlbnQobmV3 IGdpKCJyZW5kZXJGcmFtZSIse3RpbWVTdGFtcDplfSkpLHQuX2FwcGx5Q2hhbmdlcygpfSkp KX07dmFyIHhpPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIocixuKXtlLmNhbGwodGhpcyksdGhp cy5fbW92aW5nPSExLHRoaXMuX3pvb21pbmc9ITEsdGhpcy50cmFuc2Zvcm09cix0aGlzLl9i ZWFyaW5nU25hcD1uLmJlYXJpbmdTbmFwLHQuYmluZEFsbChbIl9yZW5kZXJGcmFtZUNhbGxi YWNrIl0sdGhpcyl9cmV0dXJuIGUmJihyLl9fcHJvdG9fXz1lKSxyLnByb3RvdHlwZT1PYmpl Y3QuY3JlYXRlKGUmJmUucHJvdG90eXBlKSxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yLHIu cHJvdG90eXBlLmdldENlbnRlcj1mdW5jdGlvbigpe3JldHVybiBuZXcgdC5MbmdMYXQodGhp cy50cmFuc2Zvcm0uY2VudGVyLmxuZyx0aGlzLnRyYW5zZm9ybS5jZW50ZXIubGF0KX0sci5w cm90b3R5cGUuc2V0Q2VudGVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuanVtcFRvKHtj ZW50ZXI6dH0sZSl9LHIucHJvdG90eXBlLnBhbkJ5PWZ1bmN0aW9uKGUscixuKXtyZXR1cm4g ZT10LlBvaW50LmNvbnZlcnQoZSkubXVsdCgtMSksdGhpcy5wYW5Ubyh0aGlzLnRyYW5zZm9y bS5jZW50ZXIsdC5leHRlbmQoe29mZnNldDplfSxyKSxuKX0sci5wcm90b3R5cGUucGFuVG89 ZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0aGlzLmVhc2VUbyh0LmV4dGVuZCh7Y2VudGVyOmV9 LHIpLG4pfSxyLnByb3RvdHlwZS5nZXRab29tPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJh bnNmb3JtLnpvb219LHIucHJvdG90eXBlLnNldFpvb209ZnVuY3Rpb24odCxlKXtyZXR1cm4g dGhpcy5qdW1wVG8oe3pvb206dH0sZSksdGhpc30sci5wcm90b3R5cGUuem9vbVRvPWZ1bmN0 aW9uKGUscixuKXtyZXR1cm4gdGhpcy5lYXNlVG8odC5leHRlbmQoe3pvb206ZX0sciksbil9 LHIucHJvdG90eXBlLnpvb21Jbj1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnpvb21Ubyh0 aGlzLmdldFpvb20oKSsxLHQsZSksdGhpc30sci5wcm90b3R5cGUuem9vbU91dD1mdW5jdGlv bih0LGUpe3JldHVybiB0aGlzLnpvb21Ubyh0aGlzLmdldFpvb20oKS0xLHQsZSksdGhpc30s ci5wcm90b3R5cGUuZ2V0QmVhcmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRyYW5zZm9y bS5iZWFyaW5nfSxyLnByb3RvdHlwZS5zZXRCZWFyaW5nPWZ1bmN0aW9uKHQsZSl7cmV0dXJu IHRoaXMuanVtcFRvKHtiZWFyaW5nOnR9LGUpLHRoaXN9LHIucHJvdG90eXBlLmdldFBhZGRp bmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0ucGFkZGluZ30sci5wcm90b3R5 cGUuc2V0UGFkZGluZz1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmp1bXBUbyh7cGFkZGlu Zzp0fSxlKSx0aGlzfSxyLnByb3RvdHlwZS5yb3RhdGVUbz1mdW5jdGlvbihlLHIsbil7cmV0 dXJuIHRoaXMuZWFzZVRvKHQuZXh0ZW5kKHtiZWFyaW5nOmV9LHIpLG4pfSxyLnByb3RvdHlw ZS5yZXNldE5vcnRoPWZ1bmN0aW9uKGUscil7cmV0dXJuIHRoaXMucm90YXRlVG8oMCx0LmV4 dGVuZCh7ZHVyYXRpb246MWUzfSxlKSxyKSx0aGlzfSxyLnByb3RvdHlwZS5yZXNldE5vcnRo UGl0Y2g9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdGhpcy5lYXNlVG8odC5leHRlbmQoe2JlYXJp bmc6MCxwaXRjaDowLGR1cmF0aW9uOjFlM30sZSksciksdGhpc30sci5wcm90b3R5cGUuc25h cFRvTm9ydGg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5hYnModGhpcy5nZXRCZWFyaW5n KCkpPHRoaXMuX2JlYXJpbmdTbmFwP3RoaXMucmVzZXROb3J0aCh0LGUpOnRoaXN9LHIucHJv dG90eXBlLmdldFBpdGNoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJhbnNmb3JtLnBpdGNo fSxyLnByb3RvdHlwZS5zZXRQaXRjaD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmp1bXBU byh7cGl0Y2g6dH0sZSksdGhpc30sci5wcm90b3R5cGUuY2FtZXJhRm9yQm91bmRzPWZ1bmN0 aW9uKGUscil7cmV0dXJuIGU9dC5MbmdMYXRCb3VuZHMuY29udmVydChlKSx0aGlzLl9jYW1l cmFGb3JCb3hBbmRCZWFyaW5nKGUuZ2V0Tm9ydGhXZXN0KCksZS5nZXRTb3V0aEVhc3QoKSww LHIpfSxyLnByb3RvdHlwZS5fY2FtZXJhRm9yQm94QW5kQmVhcmluZz1mdW5jdGlvbihlLHIs bixpKXt2YXIgYT17dG9wOjAsYm90dG9tOjAscmlnaHQ6MCxsZWZ0OjB9O2lmKCJudW1iZXIi PT10eXBlb2YoaT10LmV4dGVuZCh7cGFkZGluZzphLG9mZnNldDpbMCwwXSxtYXhab29tOnRo aXMudHJhbnNmb3JtLm1heFpvb219LGkpKS5wYWRkaW5nKXt2YXIgbz1pLnBhZGRpbmc7aS5w YWRkaW5nPXt0b3A6byxib3R0b206byxyaWdodDpvLGxlZnQ6b319aS5wYWRkaW5nPXQuZXh0 ZW5kKGEsaS5wYWRkaW5nKTt2YXIgcz10aGlzLnRyYW5zZm9ybSxsPXMucGFkZGluZyxjPXMu cHJvamVjdCh0LkxuZ0xhdC5jb252ZXJ0KGUpKSx1PXMucHJvamVjdCh0LkxuZ0xhdC5jb252 ZXJ0KHIpKSxmPWMucm90YXRlKC1uKk1hdGguUEkvMTgwKSxoPXUucm90YXRlKC1uKk1hdGgu UEkvMTgwKSxwPW5ldyB0LlBvaW50KE1hdGgubWF4KGYueCxoLngpLE1hdGgubWF4KGYueSxo LnkpKSxkPW5ldyB0LlBvaW50KE1hdGgubWluKGYueCxoLngpLE1hdGgubWluKGYueSxoLnkp KSxtPXAuc3ViKGQpLGc9KHMud2lkdGgtKGwubGVmdCtsLnJpZ2h0K2kucGFkZGluZy5sZWZ0 K2kucGFkZGluZy5yaWdodCkpL20ueCx2PShzLmhlaWdodC0obC50b3ArbC5ib3R0b20raS5w YWRkaW5nLnRvcCtpLnBhZGRpbmcuYm90dG9tKSkvbS55O2lmKCEodjwwfHxnPDApKXt2YXIg eT1NYXRoLm1pbihzLnNjYWxlWm9vbShzLnNjYWxlKk1hdGgubWluKGcsdikpLGkubWF4Wm9v bSkseD10LlBvaW50LmNvbnZlcnQoaS5vZmZzZXQpLGI9KGkucGFkZGluZy5sZWZ0LWkucGFk ZGluZy5yaWdodCkvMixfPShpLnBhZGRpbmcudG9wLWkucGFkZGluZy5ib3R0b20pLzIsdz1u ZXcgdC5Qb2ludCh4LngrYix4LnkrXykubXVsdChzLnNjYWxlL3Muem9vbVNjYWxlKHkpKTty ZXR1cm57Y2VudGVyOnMudW5wcm9qZWN0KGMuYWRkKHUpLmRpdigyKS5zdWIodykpLHpvb206 eSxiZWFyaW5nOm59fXQud2Fybk9uY2UoIk1hcCBjYW5ub3QgZml0IHdpdGhpbiBjYW52YXMg d2l0aCB0aGUgZ2l2ZW4gYm91bmRzLCBwYWRkaW5nLCBhbmQvb3Igb2Zmc2V0LiIpfSxyLnBy b3RvdHlwZS5maXRCb3VuZHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0aGlzLl9maXRJbnRl cm5hbCh0aGlzLmNhbWVyYUZvckJvdW5kcyh0LGUpLGUscil9LHIucHJvdG90eXBlLmZpdFNj cmVlbkNvb3JkaW5hdGVzPWZ1bmN0aW9uKGUscixuLGksYSl7cmV0dXJuIHRoaXMuX2ZpdElu dGVybmFsKHRoaXMuX2NhbWVyYUZvckJveEFuZEJlYXJpbmcodGhpcy50cmFuc2Zvcm0ucG9p bnRMb2NhdGlvbih0LlBvaW50LmNvbnZlcnQoZSkpLHRoaXMudHJhbnNmb3JtLnBvaW50TG9j YXRpb24odC5Qb2ludC5jb252ZXJ0KHIpKSxuLGkpLGksYSl9LHIucHJvdG90eXBlLl9maXRJ bnRlcm5hbD1mdW5jdGlvbihlLHIsbil7cmV0dXJuIGU/KGRlbGV0ZShyPXQuZXh0ZW5kKGUs cikpLnBhZGRpbmcsci5saW5lYXI/dGhpcy5lYXNlVG8ocixuKTp0aGlzLmZseVRvKHIsbikp OnRoaXN9LHIucHJvdG90eXBlLmp1bXBUbz1mdW5jdGlvbihlLHIpe3RoaXMuc3RvcCgpO3Zh ciBuPXRoaXMudHJhbnNmb3JtLGk9ITEsYT0hMSxvPSExO3JldHVybiJ6b29tImluIGUmJm4u em9vbSE9PStlLnpvb20mJihpPSEwLG4uem9vbT0rZS56b29tKSx2b2lkIDAhPT1lLmNlbnRl ciYmKG4uY2VudGVyPXQuTG5nTGF0LmNvbnZlcnQoZS5jZW50ZXIpKSwiYmVhcmluZyJpbiBl JiZuLmJlYXJpbmchPT0rZS5iZWFyaW5nJiYoYT0hMCxuLmJlYXJpbmc9K2UuYmVhcmluZyks InBpdGNoImluIGUmJm4ucGl0Y2ghPT0rZS5waXRjaCYmKG89ITAsbi5waXRjaD0rZS5waXRj aCksbnVsbD09ZS5wYWRkaW5nfHxuLmlzUGFkZGluZ0VxdWFsKGUucGFkZGluZyl8fChuLnBh ZGRpbmc9ZS5wYWRkaW5nKSx0aGlzLmZpcmUobmV3IHQuRXZlbnQoIm1vdmVzdGFydCIscikp LmZpcmUobmV3IHQuRXZlbnQoIm1vdmUiLHIpKSxpJiZ0aGlzLmZpcmUobmV3IHQuRXZlbnQo Inpvb21zdGFydCIscikpLmZpcmUobmV3IHQuRXZlbnQoInpvb20iLHIpKS5maXJlKG5ldyB0 LkV2ZW50KCJ6b29tZW5kIixyKSksYSYmdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJyb3RhdGVz dGFydCIscikpLmZpcmUobmV3IHQuRXZlbnQoInJvdGF0ZSIscikpLmZpcmUobmV3IHQuRXZl bnQoInJvdGF0ZWVuZCIscikpLG8mJnRoaXMuZmlyZShuZXcgdC5FdmVudCgicGl0Y2hzdGFy dCIscikpLmZpcmUobmV3IHQuRXZlbnQoInBpdGNoIixyKSkuZmlyZShuZXcgdC5FdmVudCgi cGl0Y2hlbmQiLHIpKSx0aGlzLmZpcmUobmV3IHQuRXZlbnQoIm1vdmVlbmQiLHIpKX0sci5w cm90b3R5cGUuZWFzZVRvPWZ1bmN0aW9uKGUscil7dmFyIG49dGhpczt0aGlzLl9zdG9wKCEx LGUuZWFzZUlkKSwoITE9PT0oZT10LmV4dGVuZCh7b2Zmc2V0OlswLDBdLGR1cmF0aW9uOjUw MCxlYXNpbmc6dC5lYXNlfSxlKSkuYW5pbWF0ZXx8IWUuZXNzZW50aWFsJiZ0LmJyb3dzZXIu cHJlZmVyc1JlZHVjZWRNb3Rpb24pJiYoZS5kdXJhdGlvbj0wKTt2YXIgaT10aGlzLnRyYW5z Zm9ybSxhPXRoaXMuZ2V0Wm9vbSgpLG89dGhpcy5nZXRCZWFyaW5nKCkscz10aGlzLmdldFBp dGNoKCksbD10aGlzLmdldFBhZGRpbmcoKSxjPSJ6b29tImluIGU/K2Uuem9vbTphLHU9ImJl YXJpbmciaW4gZT90aGlzLl9ub3JtYWxpemVCZWFyaW5nKGUuYmVhcmluZyxvKTpvLGY9InBp dGNoImluIGU/K2UucGl0Y2g6cyxoPSJwYWRkaW5nImluIGU/ZS5wYWRkaW5nOmkucGFkZGlu ZyxwPXQuUG9pbnQuY29udmVydChlLm9mZnNldCksZD1pLmNlbnRlclBvaW50LmFkZChwKSxt PWkucG9pbnRMb2NhdGlvbihkKSxnPXQuTG5nTGF0LmNvbnZlcnQoZS5jZW50ZXJ8fG0pO3Ro aXMuX25vcm1hbGl6ZUNlbnRlcihnKTt2YXIgdix5LHg9aS5wcm9qZWN0KG0pLGI9aS5wcm9q ZWN0KGcpLnN1Yih4KSxfPWkuem9vbVNjYWxlKGMtYSk7ZS5hcm91bmQmJih2PXQuTG5nTGF0 LmNvbnZlcnQoZS5hcm91bmQpLHk9aS5sb2NhdGlvblBvaW50KHYpKTt2YXIgdz17bW92aW5n OnRoaXMuX21vdmluZyx6b29taW5nOnRoaXMuX3pvb21pbmcscm90YXRpbmc6dGhpcy5fcm90 YXRpbmcscGl0Y2hpbmc6dGhpcy5fcGl0Y2hpbmd9O3JldHVybiB0aGlzLl96b29taW5nPXRo aXMuX3pvb21pbmd8fGMhPT1hLHRoaXMuX3JvdGF0aW5nPXRoaXMuX3JvdGF0aW5nfHxvIT09 dSx0aGlzLl9waXRjaGluZz10aGlzLl9waXRjaGluZ3x8ZiE9PXMsdGhpcy5fcGFkZGluZz0h aS5pc1BhZGRpbmdFcXVhbChoKSx0aGlzLl9lYXNlSWQ9ZS5lYXNlSWQsdGhpcy5fcHJlcGFy ZUVhc2UocixlLm5vTW92ZVN0YXJ0LHcpLGNsZWFyVGltZW91dCh0aGlzLl9lYXNlRW5kVGlt ZW91dElEKSx0aGlzLl9lYXNlKChmdW5jdGlvbihlKXtpZihuLl96b29taW5nJiYoaS56b29t PXQubnVtYmVyKGEsYyxlKSksbi5fcm90YXRpbmcmJihpLmJlYXJpbmc9dC5udW1iZXIobyx1 LGUpKSxuLl9waXRjaGluZyYmKGkucGl0Y2g9dC5udW1iZXIocyxmLGUpKSxuLl9wYWRkaW5n JiYoaS5pbnRlcnBvbGF0ZVBhZGRpbmcobCxoLGUpLGQ9aS5jZW50ZXJQb2ludC5hZGQocCkp LHYpaS5zZXRMb2NhdGlvbkF0UG9pbnQodix5KTtlbHNle3ZhciBtPWkuem9vbVNjYWxlKGku em9vbS1hKSxnPWM+YT9NYXRoLm1pbigyLF8pOk1hdGgubWF4KC41LF8pLHc9TWF0aC5wb3co ZywxLWUpLFQ9aS51bnByb2plY3QoeC5hZGQoYi5tdWx0KGUqdykpLm11bHQobSkpO2kuc2V0 TG9jYXRpb25BdFBvaW50KGkucmVuZGVyV29ybGRDb3BpZXM/VC53cmFwKCk6VCxkKX1uLl9m aXJlTW92ZUV2ZW50cyhyKX0pLChmdW5jdGlvbih0KXtuLl9hZnRlckVhc2Uocix0KX0pLGUp LHRoaXN9LHIucHJvdG90eXBlLl9wcmVwYXJlRWFzZT1mdW5jdGlvbihlLHIsbil7dm9pZCAw PT09biYmKG49e30pLHRoaXMuX21vdmluZz0hMCxyfHxuLm1vdmluZ3x8dGhpcy5maXJlKG5l dyB0LkV2ZW50KCJtb3Zlc3RhcnQiLGUpKSx0aGlzLl96b29taW5nJiYhbi56b29taW5nJiZ0 aGlzLmZpcmUobmV3IHQuRXZlbnQoInpvb21zdGFydCIsZSkpLHRoaXMuX3JvdGF0aW5nJiYh bi5yb3RhdGluZyYmdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJyb3RhdGVzdGFydCIsZSkpLHRo aXMuX3BpdGNoaW5nJiYhbi5waXRjaGluZyYmdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJwaXRj aHN0YXJ0IixlKSl9LHIucHJvdG90eXBlLl9maXJlTW92ZUV2ZW50cz1mdW5jdGlvbihlKXt0 aGlzLmZpcmUobmV3IHQuRXZlbnQoIm1vdmUiLGUpKSx0aGlzLl96b29taW5nJiZ0aGlzLmZp cmUobmV3IHQuRXZlbnQoInpvb20iLGUpKSx0aGlzLl9yb3RhdGluZyYmdGhpcy5maXJlKG5l dyB0LkV2ZW50KCJyb3RhdGUiLGUpKSx0aGlzLl9waXRjaGluZyYmdGhpcy5maXJlKG5ldyB0 LkV2ZW50KCJwaXRjaCIsZSkpfSxyLnByb3RvdHlwZS5fYWZ0ZXJFYXNlPWZ1bmN0aW9uKGUs cil7aWYoIXRoaXMuX2Vhc2VJZHx8IXJ8fHRoaXMuX2Vhc2VJZCE9PXIpe2RlbGV0ZSB0aGlz Ll9lYXNlSWQ7dmFyIG49dGhpcy5fem9vbWluZyxpPXRoaXMuX3JvdGF0aW5nLGE9dGhpcy5f cGl0Y2hpbmc7dGhpcy5fbW92aW5nPSExLHRoaXMuX3pvb21pbmc9ITEsdGhpcy5fcm90YXRp bmc9ITEsdGhpcy5fcGl0Y2hpbmc9ITEsdGhpcy5fcGFkZGluZz0hMSxuJiZ0aGlzLmZpcmUo bmV3IHQuRXZlbnQoInpvb21lbmQiLGUpKSxpJiZ0aGlzLmZpcmUobmV3IHQuRXZlbnQoInJv dGF0ZWVuZCIsZSkpLGEmJnRoaXMuZmlyZShuZXcgdC5FdmVudCgicGl0Y2hlbmQiLGUpKSx0 aGlzLmZpcmUobmV3IHQuRXZlbnQoIm1vdmVlbmQiLGUpKX19LHIucHJvdG90eXBlLmZseVRv PWZ1bmN0aW9uKGUscil7dmFyIG49dGhpcztpZighZS5lc3NlbnRpYWwmJnQuYnJvd3Nlci5w cmVmZXJzUmVkdWNlZE1vdGlvbil7dmFyIGk9dC5waWNrKGUsWyJjZW50ZXIiLCJ6b29tIiwi YmVhcmluZyIsInBpdGNoIiwiYXJvdW5kIl0pO3JldHVybiB0aGlzLmp1bXBUbyhpLHIpfXRo aXMuc3RvcCgpLGU9dC5leHRlbmQoe29mZnNldDpbMCwwXSxzcGVlZDoxLjIsY3VydmU6MS40 MixlYXNpbmc6dC5lYXNlfSxlKTt2YXIgYT10aGlzLnRyYW5zZm9ybSxvPXRoaXMuZ2V0Wm9v bSgpLHM9dGhpcy5nZXRCZWFyaW5nKCksbD10aGlzLmdldFBpdGNoKCksYz10aGlzLmdldFBh ZGRpbmcoKSx1PSJ6b29tImluIGU/dC5jbGFtcCgrZS56b29tLGEubWluWm9vbSxhLm1heFpv b20pOm8sZj0iYmVhcmluZyJpbiBlP3RoaXMuX25vcm1hbGl6ZUJlYXJpbmcoZS5iZWFyaW5n LHMpOnMsaD0icGl0Y2giaW4gZT8rZS5waXRjaDpsLHA9InBhZGRpbmciaW4gZT9lLnBhZGRp bmc6YS5wYWRkaW5nLGQ9YS56b29tU2NhbGUodS1vKSxtPXQuUG9pbnQuY29udmVydChlLm9m ZnNldCksZz1hLmNlbnRlclBvaW50LmFkZChtKSx2PWEucG9pbnRMb2NhdGlvbihnKSx5PXQu TG5nTGF0LmNvbnZlcnQoZS5jZW50ZXJ8fHYpO3RoaXMuX25vcm1hbGl6ZUNlbnRlcih5KTt2 YXIgeD1hLnByb2plY3QodiksYj1hLnByb2plY3QoeSkuc3ViKHgpLF89ZS5jdXJ2ZSx3PU1h dGgubWF4KGEud2lkdGgsYS5oZWlnaHQpLFQ9dy9kLGs9Yi5tYWcoKTtpZigibWluWm9vbSJp biBlKXt2YXIgQT10LmNsYW1wKE1hdGgubWluKGUubWluWm9vbSxvLHUpLGEubWluWm9vbSxh Lm1heFpvb20pLE09dy9hLnpvb21TY2FsZShBLW8pO189TWF0aC5zcXJ0KE0vayoyKX12YXIg Uz1fKl87ZnVuY3Rpb24gRSh0KXt2YXIgZT0oVCpULXcqdysodD8tMToxKSpTKlMqayprKS8o MioodD9UOncpKlMqayk7cmV0dXJuIE1hdGgubG9nKE1hdGguc3FydChlKmUrMSktZSl9ZnVu Y3Rpb24gTCh0KXtyZXR1cm4oTWF0aC5leHAodCktTWF0aC5leHAoLXQpKS8yfWZ1bmN0aW9u IEModCl7cmV0dXJuKE1hdGguZXhwKHQpK01hdGguZXhwKC10KSkvMn12YXIgUD1FKDApLEk9 ZnVuY3Rpb24odCl7cmV0dXJuIEMoUCkvQyhQK18qdCl9LE89ZnVuY3Rpb24odCl7cmV0dXJu IHcqKChDKFApKihMKGU9UCtfKnQpL0MoZSkpLUwoUCkpL1MpL2s7dmFyIGV9LHo9KEUoMSkt UCkvXztpZihNYXRoLmFicyhrKTwxZS02fHwhaXNGaW5pdGUoeikpe2lmKE1hdGguYWJzKHct VCk8MWUtNilyZXR1cm4gdGhpcy5lYXNlVG8oZSxyKTt2YXIgRD1UPHc/LTE6MTt6PU1hdGgu YWJzKE1hdGgubG9nKFQvdykpL18sTz1mdW5jdGlvbigpe3JldHVybiAwfSxJPWZ1bmN0aW9u KHQpe3JldHVybiBNYXRoLmV4cChEKl8qdCl9fWlmKCJkdXJhdGlvbiJpbiBlKWUuZHVyYXRp b249K2UuZHVyYXRpb247ZWxzZXt2YXIgUj0ic2NyZWVuU3BlZWQiaW4gZT8rZS5zY3JlZW5T cGVlZC9fOitlLnNwZWVkO2UuZHVyYXRpb249MWUzKnovUn1yZXR1cm4gZS5tYXhEdXJhdGlv biYmZS5kdXJhdGlvbj5lLm1heER1cmF0aW9uJiYoZS5kdXJhdGlvbj0wKSx0aGlzLl96b29t aW5nPSEwLHRoaXMuX3JvdGF0aW5nPXMhPT1mLHRoaXMuX3BpdGNoaW5nPWghPT1sLHRoaXMu X3BhZGRpbmc9IWEuaXNQYWRkaW5nRXF1YWwocCksdGhpcy5fcHJlcGFyZUVhc2UociwhMSks dGhpcy5fZWFzZSgoZnVuY3Rpb24oZSl7dmFyIGk9ZSp6LGQ9MS9JKGkpO2Euem9vbT0xPT09 ZT91Om8rYS5zY2FsZVpvb20oZCksbi5fcm90YXRpbmcmJihhLmJlYXJpbmc9dC5udW1iZXIo cyxmLGUpKSxuLl9waXRjaGluZyYmKGEucGl0Y2g9dC5udW1iZXIobCxoLGUpKSxuLl9wYWRk aW5nJiYoYS5pbnRlcnBvbGF0ZVBhZGRpbmcoYyxwLGUpLGc9YS5jZW50ZXJQb2ludC5hZGQo bSkpO3ZhciB2PTE9PT1lP3k6YS51bnByb2plY3QoeC5hZGQoYi5tdWx0KE8oaSkpKS5tdWx0 KGQpKTthLnNldExvY2F0aW9uQXRQb2ludChhLnJlbmRlcldvcmxkQ29waWVzP3Yud3JhcCgp OnYsZyksbi5fZmlyZU1vdmVFdmVudHMocil9KSwoZnVuY3Rpb24oKXtyZXR1cm4gbi5fYWZ0 ZXJFYXNlKHIpfSksZSksdGhpc30sci5wcm90b3R5cGUuaXNFYXNpbmc9ZnVuY3Rpb24oKXty ZXR1cm4hIXRoaXMuX2Vhc2VGcmFtZUlkfSxyLnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMuX3N0b3AoKX0sci5wcm90b3R5cGUuX3N0b3A9ZnVuY3Rpb24odCxlKXtp Zih0aGlzLl9lYXNlRnJhbWVJZCYmKHRoaXMuX2NhbmNlbFJlbmRlckZyYW1lKHRoaXMuX2Vh c2VGcmFtZUlkKSxkZWxldGUgdGhpcy5fZWFzZUZyYW1lSWQsZGVsZXRlIHRoaXMuX29uRWFz ZUZyYW1lKSx0aGlzLl9vbkVhc2VFbmQpe3ZhciByPXRoaXMuX29uRWFzZUVuZDtkZWxldGUg dGhpcy5fb25FYXNlRW5kLHIuY2FsbCh0aGlzLGUpfWlmKCF0KXt2YXIgbj10aGlzLmhhbmRs ZXJzO24mJm4uc3RvcCgpfXJldHVybiB0aGlzfSxyLnByb3RvdHlwZS5fZWFzZT1mdW5jdGlv bihlLHIsbil7ITE9PT1uLmFuaW1hdGV8fDA9PT1uLmR1cmF0aW9uPyhlKDEpLHIoKSk6KHRo aXMuX2Vhc2VTdGFydD10LmJyb3dzZXIubm93KCksdGhpcy5fZWFzZU9wdGlvbnM9bix0aGlz Ll9vbkVhc2VGcmFtZT1lLHRoaXMuX29uRWFzZUVuZD1yLHRoaXMuX2Vhc2VGcmFtZUlkPXRo aXMuX3JlcXVlc3RSZW5kZXJGcmFtZSh0aGlzLl9yZW5kZXJGcmFtZUNhbGxiYWNrKSl9LHIu cHJvdG90eXBlLl9yZW5kZXJGcmFtZUNhbGxiYWNrPWZ1bmN0aW9uKCl7dmFyIGU9TWF0aC5t aW4oKHQuYnJvd3Nlci5ub3coKS10aGlzLl9lYXNlU3RhcnQpL3RoaXMuX2Vhc2VPcHRpb25z LmR1cmF0aW9uLDEpO3RoaXMuX29uRWFzZUZyYW1lKHRoaXMuX2Vhc2VPcHRpb25zLmVhc2lu ZyhlKSksZTwxP3RoaXMuX2Vhc2VGcmFtZUlkPXRoaXMuX3JlcXVlc3RSZW5kZXJGcmFtZSh0 aGlzLl9yZW5kZXJGcmFtZUNhbGxiYWNrKTp0aGlzLnN0b3AoKX0sci5wcm90b3R5cGUuX25v cm1hbGl6ZUJlYXJpbmc9ZnVuY3Rpb24oZSxyKXtlPXQud3JhcChlLC0xODAsMTgwKTt2YXIg bj1NYXRoLmFicyhlLXIpO3JldHVybiBNYXRoLmFicyhlLTM2MC1yKTxuJiYoZS09MzYwKSxN YXRoLmFicyhlKzM2MC1yKTxuJiYoZSs9MzYwKSxlfSxyLnByb3RvdHlwZS5fbm9ybWFsaXpl Q2VudGVyPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudHJhbnNmb3JtO2lmKGUucmVuZGVyV29y bGRDb3BpZXMmJiFlLmxuZ1JhbmdlKXt2YXIgcj10LmxuZy1lLmNlbnRlci5sbmc7dC5sbmcr PXI+MTgwPy0zNjA6cjwtMTgwPzM2MDowfX0scn0odC5FdmVudGVkKSxiaT1mdW5jdGlvbihl KXt2b2lkIDA9PT1lJiYoZT17fSksdGhpcy5vcHRpb25zPWUsdC5iaW5kQWxsKFsiX3VwZGF0 ZUVkaXRMaW5rIiwiX3VwZGF0ZURhdGEiLCJfdXBkYXRlQ29tcGFjdCJdLHRoaXMpfTtiaS5w cm90b3R5cGUuZ2V0RGVmYXVsdFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuImJvdHRvbS1y aWdodCJ9LGJpLnByb3RvdHlwZS5vbkFkZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLm9wdGlv bnMmJnRoaXMub3B0aW9ucy5jb21wYWN0O3JldHVybiB0aGlzLl9tYXA9dCx0aGlzLl9jb250 YWluZXI9ci5jcmVhdGUoImRpdiIsIm1hcGJveGdsLWN0cmwgbWFwYm94Z2wtY3RybC1hdHRy aWIiKSx0aGlzLl9pbm5lckNvbnRhaW5lcj1yLmNyZWF0ZSgiZGl2IiwibWFwYm94Z2wtY3Ry bC1hdHRyaWItaW5uZXIiLHRoaXMuX2NvbnRhaW5lciksZSYmdGhpcy5fY29udGFpbmVyLmNs YXNzTGlzdC5hZGQoIm1hcGJveGdsLWNvbXBhY3QiKSx0aGlzLl91cGRhdGVBdHRyaWJ1dGlv bnMoKSx0aGlzLl91cGRhdGVFZGl0TGluaygpLHRoaXMuX21hcC5vbigic3R5bGVkYXRhIix0 aGlzLl91cGRhdGVEYXRhKSx0aGlzLl9tYXAub24oInNvdXJjZWRhdGEiLHRoaXMuX3VwZGF0 ZURhdGEpLHRoaXMuX21hcC5vbigibW92ZWVuZCIsdGhpcy5fdXBkYXRlRWRpdExpbmspLHZv aWQgMD09PWUmJih0aGlzLl9tYXAub24oInJlc2l6ZSIsdGhpcy5fdXBkYXRlQ29tcGFjdCks dGhpcy5fdXBkYXRlQ29tcGFjdCgpKSx0aGlzLl9jb250YWluZXJ9LGJpLnByb3RvdHlwZS5v blJlbW92ZT1mdW5jdGlvbigpe3IucmVtb3ZlKHRoaXMuX2NvbnRhaW5lciksdGhpcy5fbWFw Lm9mZigic3R5bGVkYXRhIix0aGlzLl91cGRhdGVEYXRhKSx0aGlzLl9tYXAub2ZmKCJzb3Vy Y2VkYXRhIix0aGlzLl91cGRhdGVEYXRhKSx0aGlzLl9tYXAub2ZmKCJtb3ZlZW5kIix0aGlz Ll91cGRhdGVFZGl0TGluayksdGhpcy5fbWFwLm9mZigicmVzaXplIix0aGlzLl91cGRhdGVD b21wYWN0KSx0aGlzLl9tYXA9dm9pZCAwLHRoaXMuX2F0dHJpYkhUTUw9dm9pZCAwfSxiaS5w cm90b3R5cGUuX3VwZGF0ZUVkaXRMaW5rPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fZWRpdExp bms7ZXx8KGU9dGhpcy5fZWRpdExpbms9dGhpcy5fY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3Io Ii5tYXBib3gtaW1wcm92ZS1tYXAiKSk7dmFyIHI9W3trZXk6Im93bmVyIix2YWx1ZTp0aGlz LnN0eWxlT3duZXJ9LHtrZXk6ImlkIix2YWx1ZTp0aGlzLnN0eWxlSWR9LHtrZXk6ImFjY2Vz c190b2tlbiIsdmFsdWU6dGhpcy5fbWFwLl9yZXF1ZXN0TWFuYWdlci5fY3VzdG9tQWNjZXNz VG9rZW58fHQuY29uZmlnLkFDQ0VTU19UT0tFTn1dO2lmKGUpe3ZhciBuPXIucmVkdWNlKChm dW5jdGlvbih0LGUsbil7cmV0dXJuIGUudmFsdWUmJih0Kz1lLmtleSsiPSIrZS52YWx1ZSso bjxyLmxlbmd0aC0xPyImIjoiIikpLHR9KSwiPyIpO2UuaHJlZj10LmNvbmZpZy5GRUVEQkFD S19VUkwrIi8iK24rKHRoaXMuX21hcC5faGFzaD90aGlzLl9tYXAuX2hhc2guZ2V0SGFzaFN0 cmluZyghMCk6IiIpLGUucmVsPSJub29wZW5lciBub2ZvbGxvdyJ9fSxiaS5wcm90b3R5cGUu X3VwZGF0ZURhdGE9ZnVuY3Rpb24odCl7IXR8fCJtZXRhZGF0YSIhPT10LnNvdXJjZURhdGFU eXBlJiYic3R5bGUiIT09dC5kYXRhVHlwZXx8KHRoaXMuX3VwZGF0ZUF0dHJpYnV0aW9ucygp LHRoaXMuX3VwZGF0ZUVkaXRMaW5rKCkpfSxiaS5wcm90b3R5cGUuX3VwZGF0ZUF0dHJpYnV0 aW9ucz1mdW5jdGlvbigpe2lmKHRoaXMuX21hcC5zdHlsZSl7dmFyIHQ9W107aWYodGhpcy5v cHRpb25zLmN1c3RvbUF0dHJpYnV0aW9uJiYoQXJyYXkuaXNBcnJheSh0aGlzLm9wdGlvbnMu Y3VzdG9tQXR0cmlidXRpb24pP3Q9dC5jb25jYXQodGhpcy5vcHRpb25zLmN1c3RvbUF0dHJp YnV0aW9uLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiB0PyIiOnR9 KSkpOiJzdHJpbmciPT10eXBlb2YgdGhpcy5vcHRpb25zLmN1c3RvbUF0dHJpYnV0aW9uJiZ0 LnB1c2godGhpcy5vcHRpb25zLmN1c3RvbUF0dHJpYnV0aW9uKSksdGhpcy5fbWFwLnN0eWxl LnN0eWxlc2hlZXQpe3ZhciBlPXRoaXMuX21hcC5zdHlsZS5zdHlsZXNoZWV0O3RoaXMuc3R5 bGVPd25lcj1lLm93bmVyLHRoaXMuc3R5bGVJZD1lLmlkfXZhciByPXRoaXMuX21hcC5zdHls ZS5zb3VyY2VDYWNoZXM7Zm9yKHZhciBuIGluIHIpe3ZhciBpPXJbbl07aWYoaS51c2VkKXt2 YXIgYT1pLmdldFNvdXJjZSgpO2EuYXR0cmlidXRpb24mJnQuaW5kZXhPZihhLmF0dHJpYnV0 aW9uKTwwJiZ0LnB1c2goYS5hdHRyaWJ1dGlvbil9fXQuc29ydCgoZnVuY3Rpb24odCxlKXty ZXR1cm4gdC5sZW5ndGgtZS5sZW5ndGh9KSk7dmFyIG89KHQ9dC5maWx0ZXIoKGZ1bmN0aW9u KGUscil7Zm9yKHZhciBuPXIrMTtuPHQubGVuZ3RoO24rKylpZih0W25dLmluZGV4T2YoZSk+ PTApcmV0dXJuITE7cmV0dXJuITB9KSkpLmpvaW4oIiB8ICIpO28hPT10aGlzLl9hdHRyaWJI VE1MJiYodGhpcy5fYXR0cmliSFRNTD1vLHQubGVuZ3RoPyh0aGlzLl9pbm5lckNvbnRhaW5l ci5pbm5lckhUTUw9byx0aGlzLl9jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgibWFwYm94 Z2wtYXR0cmliLWVtcHR5IikpOnRoaXMuX2NvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJtYXBi b3hnbC1hdHRyaWItZW1wdHkiKSx0aGlzLl9lZGl0TGluaz1udWxsKX19LGJpLnByb3RvdHlw ZS5fdXBkYXRlQ29tcGFjdD1mdW5jdGlvbigpe3RoaXMuX21hcC5nZXRDYW52YXNDb250YWlu ZXIoKS5vZmZzZXRXaWR0aDw9NjQwP3RoaXMuX2NvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJt YXBib3hnbC1jb21wYWN0Iik6dGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoIm1h cGJveGdsLWNvbXBhY3QiKX07dmFyIF9pPWZ1bmN0aW9uKCl7dC5iaW5kQWxsKFsiX3VwZGF0 ZUxvZ28iXSx0aGlzKSx0LmJpbmRBbGwoWyJfdXBkYXRlQ29tcGFjdCJdLHRoaXMpfTtfaS5w cm90b3R5cGUub25BZGQ9ZnVuY3Rpb24odCl7dGhpcy5fbWFwPXQsdGhpcy5fY29udGFpbmVy PXIuY3JlYXRlKCJkaXYiLCJtYXBib3hnbC1jdHJsIik7dmFyIGU9ci5jcmVhdGUoImEiLCJt YXBib3hnbC1jdHJsLWxvZ28iKTtyZXR1cm4gZS50YXJnZXQ9Il9ibGFuayIsZS5yZWw9Im5v b3BlbmVyIG5vZm9sbG93IixlLmhyZWY9Imh0dHBzOi8vd3d3Lm1hcGJveC5jb20vIixlLnNl dEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdGhpcy5fbWFwLl9nZXRVSVN0cmluZygiTG9nb0Nv bnRyb2wuVGl0bGUiKSksZS5zZXRBdHRyaWJ1dGUoInJlbCIsIm5vb3BlbmVyIG5vZm9sbG93 IiksdGhpcy5fY29udGFpbmVyLmFwcGVuZENoaWxkKGUpLHRoaXMuX2NvbnRhaW5lci5zdHls ZS5kaXNwbGF5PSJub25lIix0aGlzLl9tYXAub24oInNvdXJjZWRhdGEiLHRoaXMuX3VwZGF0 ZUxvZ28pLHRoaXMuX3VwZGF0ZUxvZ28oKSx0aGlzLl9tYXAub24oInJlc2l6ZSIsdGhpcy5f dXBkYXRlQ29tcGFjdCksdGhpcy5fdXBkYXRlQ29tcGFjdCgpLHRoaXMuX2NvbnRhaW5lcn0s X2kucHJvdG90eXBlLm9uUmVtb3ZlPWZ1bmN0aW9uKCl7ci5yZW1vdmUodGhpcy5fY29udGFp bmVyKSx0aGlzLl9tYXAub2ZmKCJzb3VyY2VkYXRhIix0aGlzLl91cGRhdGVMb2dvKSx0aGlz Ll9tYXAub2ZmKCJyZXNpemUiLHRoaXMuX3VwZGF0ZUNvbXBhY3QpfSxfaS5wcm90b3R5cGUu Z2V0RGVmYXVsdFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuImJvdHRvbS1sZWZ0In0sX2ku cHJvdG90eXBlLl91cGRhdGVMb2dvPWZ1bmN0aW9uKHQpe3QmJiJtZXRhZGF0YSIhPT10LnNv dXJjZURhdGFUeXBlfHwodGhpcy5fY29udGFpbmVyLnN0eWxlLmRpc3BsYXk9dGhpcy5fbG9n b1JlcXVpcmVkKCk/ImJsb2NrIjoibm9uZSIpfSxfaS5wcm90b3R5cGUuX2xvZ29SZXF1aXJl ZD1mdW5jdGlvbigpe2lmKHRoaXMuX21hcC5zdHlsZSl7dmFyIHQ9dGhpcy5fbWFwLnN0eWxl LnNvdXJjZUNhY2hlcztmb3IodmFyIGUgaW4gdCl7aWYodFtlXS5nZXRTb3VyY2UoKS5tYXBi b3hfbG9nbylyZXR1cm4hMH1yZXR1cm4hMX19LF9pLnByb3RvdHlwZS5fdXBkYXRlQ29tcGFj dD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NvbnRhaW5lci5jaGlsZHJlbjtpZih0Lmxlbmd0 aCl7dmFyIGU9dFswXTt0aGlzLl9tYXAuZ2V0Q2FudmFzQ29udGFpbmVyKCkub2Zmc2V0V2lk dGg8MjUwP2UuY2xhc3NMaXN0LmFkZCgibWFwYm94Z2wtY29tcGFjdCIpOmUuY2xhc3NMaXN0 LnJlbW92ZSgibWFwYm94Z2wtY29tcGFjdCIpfX07dmFyIHdpPWZ1bmN0aW9uKCl7dGhpcy5f cXVldWU9W10sdGhpcy5faWQ9MCx0aGlzLl9jbGVhcmVkPSExLHRoaXMuX2N1cnJlbnRseVJ1 bm5pbmc9ITF9O3dpLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24odCl7dmFyIGU9Kyt0aGlzLl9p ZDtyZXR1cm4gdGhpcy5fcXVldWUucHVzaCh7Y2FsbGJhY2s6dCxpZDplLGNhbmNlbGxlZDoh MX0pLGV9LHdpLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMu X2N1cnJlbnRseVJ1bm5pbmcscj0wLG49ZT90aGlzLl9xdWV1ZS5jb25jYXQoZSk6dGhpcy5f cXVldWU7cjxuLmxlbmd0aDtyKz0xKXt2YXIgaT1uW3JdO2lmKGkuaWQ9PT10KXJldHVybiB2 b2lkKGkuY2FuY2VsbGVkPSEwKX19LHdpLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24odCl7dm9p ZCAwPT09dCYmKHQ9MCk7dmFyIGU9dGhpcy5fY3VycmVudGx5UnVubmluZz10aGlzLl9xdWV1 ZTt0aGlzLl9xdWV1ZT1bXTtmb3IodmFyIHI9MCxuPWU7cjxuLmxlbmd0aDtyKz0xKXt2YXIg aT1uW3JdO2lmKCFpLmNhbmNlbGxlZCYmKGkuY2FsbGJhY2sodCksdGhpcy5fY2xlYXJlZCkp YnJlYWt9dGhpcy5fY2xlYXJlZD0hMSx0aGlzLl9jdXJyZW50bHlSdW5uaW5nPSExfSx3aS5w cm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9jdXJyZW50bHlSdW5uaW5nJiYodGhp cy5fY2xlYXJlZD0hMCksdGhpcy5fcXVldWU9W119O3ZhciBUaT17IkZ1bGxzY3JlZW5Db250 cm9sLkVudGVyIjoiRW50ZXIgZnVsbHNjcmVlbiIsIkZ1bGxzY3JlZW5Db250cm9sLkV4aXQi OiJFeGl0IGZ1bGxzY3JlZW4iLCJHZW9sb2NhdGVDb250cm9sLkZpbmRNeUxvY2F0aW9uIjoi RmluZCBteSBsb2NhdGlvbiIsIkdlb2xvY2F0ZUNvbnRyb2wuTG9jYXRpb25Ob3RBdmFpbGFi bGUiOiJMb2NhdGlvbiBub3QgYXZhaWxhYmxlIiwiTG9nb0NvbnRyb2wuVGl0bGUiOiJNYXBi b3ggbG9nbyIsIk5hdmlnYXRpb25Db250cm9sLlJlc2V0QmVhcmluZyI6IlJlc2V0IGJlYXJp bmcgdG8gbm9ydGgiLCJOYXZpZ2F0aW9uQ29udHJvbC5ab29tSW4iOiJab29tIGluIiwiTmF2 aWdhdGlvbkNvbnRyb2wuWm9vbU91dCI6Ilpvb20gb3V0IiwiU2NhbGVDb250cm9sLkZlZXQi OiJmdCIsIlNjYWxlQ29udHJvbC5NZXRlcnMiOiJtIiwiU2NhbGVDb250cm9sLktpbG9tZXRl cnMiOiJrbSIsIlNjYWxlQ29udHJvbC5NaWxlcyI6Im1pIiwiU2NhbGVDb250cm9sLk5hdXRp Y2FsTWlsZXMiOiJubSJ9LGtpPXQud2luZG93LkhUTUxJbWFnZUVsZW1lbnQsQWk9dC53aW5k b3cuSFRNTEVsZW1lbnQsTWk9dC53aW5kb3cuSW1hZ2VCaXRtYXAsU2k9e2NlbnRlcjpbMCww XSx6b29tOjAsYmVhcmluZzowLHBpdGNoOjAsbWluWm9vbTotMixtYXhab29tOjIyLG1pblBp dGNoOjAsbWF4UGl0Y2g6NjAsaW50ZXJhY3RpdmU6ITAsc2Nyb2xsWm9vbTohMCxib3hab29t OiEwLGRyYWdSb3RhdGU6ITAsZHJhZ1BhbjohMCxrZXlib2FyZDohMCxkb3VibGVDbGlja1pv b206ITAsdG91Y2hab29tUm90YXRlOiEwLHRvdWNoUGl0Y2g6ITAsYmVhcmluZ1NuYXA6Nyxj bGlja1RvbGVyYW5jZTozLHBpdGNoV2l0aFJvdGF0ZTohMCxoYXNoOiExLGF0dHJpYnV0aW9u Q29udHJvbDohMCxmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0OiExLHByZXNlcnZlRHJh d2luZ0J1ZmZlcjohMSx0cmFja1Jlc2l6ZTohMCxyZW5kZXJXb3JsZENvcGllczohMCxyZWZy ZXNoRXhwaXJlZFRpbGVzOiEwLG1heFRpbGVDYWNoZVNpemU6bnVsbCxsb2NhbElkZW9ncmFw aEZvbnRGYW1pbHk6InNhbnMtc2VyaWYiLHRyYW5zZm9ybVJlcXVlc3Q6bnVsbCxhY2Nlc3NU b2tlbjpudWxsLGZhZGVEdXJhdGlvbjozMDAsY3Jvc3NTb3VyY2VDb2xsaXNpb25zOiEwfSxF aT1mdW5jdGlvbihuKXtmdW5jdGlvbiBpKGUpe3ZhciByPXRoaXM7aWYobnVsbCE9KGU9dC5l eHRlbmQoe30sU2ksZSkpLm1pblpvb20mJm51bGwhPWUubWF4Wm9vbSYmZS5taW5ab29tPmUu bWF4Wm9vbSl0aHJvdyBuZXcgRXJyb3IoIm1heFpvb20gbXVzdCBiZSBncmVhdGVyIHRoYW4g b3IgZXF1YWwgdG8gbWluWm9vbSIpO2lmKG51bGwhPWUubWluUGl0Y2gmJm51bGwhPWUubWF4 UGl0Y2gmJmUubWluUGl0Y2g+ZS5tYXhQaXRjaCl0aHJvdyBuZXcgRXJyb3IoIm1heFBpdGNo IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIG1pblBpdGNoIik7aWYobnVsbCE9 ZS5taW5QaXRjaCYmZS5taW5QaXRjaDwwKXRocm93IG5ldyBFcnJvcigibWluUGl0Y2ggbXVz dCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMCIpO2lmKG51bGwhPWUubWF4UGl0Y2gm JmUubWF4UGl0Y2g+NjApdGhyb3cgbmV3IEVycm9yKCJtYXhQaXRjaCBtdXN0IGJlIGxlc3Mg dGhhbiBvciBlcXVhbCB0byA2MCIpO3ZhciBpPW5ldyBBbihlLm1pblpvb20sZS5tYXhab29t LGUubWluUGl0Y2gsZS5tYXhQaXRjaCxlLnJlbmRlcldvcmxkQ29waWVzKTtpZihuLmNhbGwo dGhpcyxpLGUpLHRoaXMuX2ludGVyYWN0aXZlPWUuaW50ZXJhY3RpdmUsdGhpcy5fbWF4VGls ZUNhY2hlU2l6ZT1lLm1heFRpbGVDYWNoZVNpemUsdGhpcy5fZmFpbElmTWFqb3JQZXJmb3Jt YW5jZUNhdmVhdD1lLmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQsdGhpcy5fcHJlc2Vy dmVEcmF3aW5nQnVmZmVyPWUucHJlc2VydmVEcmF3aW5nQnVmZmVyLHRoaXMuX2FudGlhbGlh cz1lLmFudGlhbGlhcyx0aGlzLl90cmFja1Jlc2l6ZT1lLnRyYWNrUmVzaXplLHRoaXMuX2Jl YXJpbmdTbmFwPWUuYmVhcmluZ1NuYXAsdGhpcy5fcmVmcmVzaEV4cGlyZWRUaWxlcz1lLnJl ZnJlc2hFeHBpcmVkVGlsZXMsdGhpcy5fZmFkZUR1cmF0aW9uPWUuZmFkZUR1cmF0aW9uLHRo aXMuX2Nyb3NzU291cmNlQ29sbGlzaW9ucz1lLmNyb3NzU291cmNlQ29sbGlzaW9ucyx0aGlz Ll9jcm9zc0ZhZGluZ0ZhY3Rvcj0xLHRoaXMuX2NvbGxlY3RSZXNvdXJjZVRpbWluZz1lLmNv bGxlY3RSZXNvdXJjZVRpbWluZyx0aGlzLl9yZW5kZXJUYXNrUXVldWU9bmV3IHdpLHRoaXMu X2NvbnRyb2xzPVtdLHRoaXMuX21hcElkPXQudW5pcXVlSWQoKSx0aGlzLl9sb2NhbGU9dC5l eHRlbmQoe30sVGksZS5sb2NhbGUpLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPW5ldyB0LlJlcXVl c3RNYW5hZ2VyKGUudHJhbnNmb3JtUmVxdWVzdCxlLmFjY2Vzc1Rva2VuKSwic3RyaW5nIj09 dHlwZW9mIGUuY29udGFpbmVyKXtpZih0aGlzLl9jb250YWluZXI9dC53aW5kb3cuZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoZS5jb250YWluZXIpLCF0aGlzLl9jb250YWluZXIpdGhyb3cg bmV3IEVycm9yKCJDb250YWluZXIgJyIrZS5jb250YWluZXIrIicgbm90IGZvdW5kLiIpfWVs c2V7aWYoIShlLmNvbnRhaW5lciBpbnN0YW5jZW9mIEFpKSl0aHJvdyBuZXcgRXJyb3IoIklu dmFsaWQgdHlwZTogJ2NvbnRhaW5lcicgbXVzdCBiZSBhIFN0cmluZyBvciBIVE1MRWxlbWVu dC4iKTt0aGlzLl9jb250YWluZXI9ZS5jb250YWluZXJ9aWYoZS5tYXhCb3VuZHMmJnRoaXMu c2V0TWF4Qm91bmRzKGUubWF4Qm91bmRzKSx0LmJpbmRBbGwoWyJfb25XaW5kb3dPbmxpbmUi LCJfb25XaW5kb3dSZXNpemUiLCJfY29udGV4dExvc3QiLCJfY29udGV4dFJlc3RvcmVkIl0s dGhpcyksdGhpcy5fc2V0dXBDb250YWluZXIoKSx0aGlzLl9zZXR1cFBhaW50ZXIoKSx2b2lk IDA9PT10aGlzLnBhaW50ZXIpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6 ZSBXZWJHTC4iKTt0aGlzLm9uKCJtb3ZlIiwoZnVuY3Rpb24oKXtyZXR1cm4gci5fdXBkYXRl KCExKX0pKSx0aGlzLm9uKCJtb3ZlZW5kIiwoZnVuY3Rpb24oKXtyZXR1cm4gci5fdXBkYXRl KCExKX0pKSx0aGlzLm9uKCJ6b29tIiwoZnVuY3Rpb24oKXtyZXR1cm4gci5fdXBkYXRlKCEw KX0pKSx2b2lkIDAhPT10LndpbmRvdyYmKHQud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm9u bGluZSIsdGhpcy5fb25XaW5kb3dPbmxpbmUsITEpLHQud2luZG93LmFkZEV2ZW50TGlzdGVu ZXIoInJlc2l6ZSIsdGhpcy5fb25XaW5kb3dSZXNpemUsITEpKSx0aGlzLmhhbmRsZXJzPW5l dyB5aSh0aGlzLGUpO3ZhciBhPSJzdHJpbmciPT10eXBlb2YgZS5oYXNoJiZlLmhhc2h8fHZv aWQgMDt0aGlzLl9oYXNoPWUuaGFzaCYmbmV3IFNuKGEpLmFkZFRvKHRoaXMpLHRoaXMuX2hh c2gmJnRoaXMuX2hhc2guX29uSGFzaENoYW5nZSgpfHwodGhpcy5qdW1wVG8oe2NlbnRlcjpl LmNlbnRlcix6b29tOmUuem9vbSxiZWFyaW5nOmUuYmVhcmluZyxwaXRjaDplLnBpdGNofSks ZS5ib3VuZHMmJih0aGlzLnJlc2l6ZSgpLHRoaXMuZml0Qm91bmRzKGUuYm91bmRzLHQuZXh0 ZW5kKHt9LGUuZml0Qm91bmRzT3B0aW9ucyx7ZHVyYXRpb246MH0pKSkpLHRoaXMucmVzaXpl KCksdGhpcy5fbG9jYWxJZGVvZ3JhcGhGb250RmFtaWx5PWUubG9jYWxJZGVvZ3JhcGhGb250 RmFtaWx5LGUuc3R5bGUmJnRoaXMuc2V0U3R5bGUoZS5zdHlsZSx7bG9jYWxJZGVvZ3JhcGhG b250RmFtaWx5OmUubG9jYWxJZGVvZ3JhcGhGb250RmFtaWx5fSksZS5hdHRyaWJ1dGlvbkNv bnRyb2wmJnRoaXMuYWRkQ29udHJvbChuZXcgYmkoe2N1c3RvbUF0dHJpYnV0aW9uOmUuY3Vz dG9tQXR0cmlidXRpb259KSksdGhpcy5hZGRDb250cm9sKG5ldyBfaSxlLmxvZ29Qb3NpdGlv biksdGhpcy5vbigic3R5bGUubG9hZCIsKGZ1bmN0aW9uKCl7ci50cmFuc2Zvcm0udW5tb2Rp ZmllZCYmci5qdW1wVG8oci5zdHlsZS5zdHlsZXNoZWV0KX0pKSx0aGlzLm9uKCJkYXRhIiwo ZnVuY3Rpb24oZSl7ci5fdXBkYXRlKCJzdHlsZSI9PT1lLmRhdGFUeXBlKSxyLmZpcmUobmV3 IHQuRXZlbnQoZS5kYXRhVHlwZSsiZGF0YSIsZSkpfSkpLHRoaXMub24oImRhdGFsb2FkaW5n IiwoZnVuY3Rpb24oZSl7ci5maXJlKG5ldyB0LkV2ZW50KGUuZGF0YVR5cGUrImRhdGFsb2Fk aW5nIixlKSl9KSl9biYmKGkuX19wcm90b19fPW4pLGkucHJvdG90eXBlPU9iamVjdC5jcmVh dGUobiYmbi5wcm90b3R5cGUpLGkucHJvdG90eXBlLmNvbnN0cnVjdG9yPWk7dmFyIGE9e3No b3dUaWxlQm91bmRhcmllczp7Y29uZmlndXJhYmxlOiEwfSxzaG93UGFkZGluZzp7Y29uZmln dXJhYmxlOiEwfSxzaG93Q29sbGlzaW9uQm94ZXM6e2NvbmZpZ3VyYWJsZTohMH0sc2hvd092 ZXJkcmF3SW5zcGVjdG9yOntjb25maWd1cmFibGU6ITB9LHJlcGFpbnQ6e2NvbmZpZ3VyYWJs ZTohMH0sdmVydGljZXM6e2NvbmZpZ3VyYWJsZTohMH0sdmVyc2lvbjp7Y29uZmlndXJhYmxl OiEwfX07cmV0dXJuIGkucHJvdG90eXBlLl9nZXRNYXBJZD1mdW5jdGlvbigpe3JldHVybiB0 aGlzLl9tYXBJZH0saS5wcm90b3R5cGUuYWRkQ29udHJvbD1mdW5jdGlvbihlLHIpe2lmKHZv aWQgMD09PXImJmUuZ2V0RGVmYXVsdFBvc2l0aW9uJiYocj1lLmdldERlZmF1bHRQb3NpdGlv bigpKSx2b2lkIDA9PT1yJiYocj0idG9wLXJpZ2h0IiksIWV8fCFlLm9uQWRkKXJldHVybiB0 aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIkludmFsaWQgYXJndW1lbnQg dG8gbWFwLmFkZENvbnRyb2woKS4gQXJndW1lbnQgbXVzdCBiZSBhIGNvbnRyb2wgd2l0aCBv bkFkZCBhbmQgb25SZW1vdmUgbWV0aG9kcy4iKSkpO3ZhciBuPWUub25BZGQodGhpcyk7dGhp cy5fY29udHJvbHMucHVzaChlKTt2YXIgaT10aGlzLl9jb250cm9sUG9zaXRpb25zW3JdO3Jl dHVybi0xIT09ci5pbmRleE9mKCJib3R0b20iKT9pLmluc2VydEJlZm9yZShuLGkuZmlyc3RD aGlsZCk6aS5hcHBlbmRDaGlsZChuKSx0aGlzfSxpLnByb3RvdHlwZS5yZW1vdmVDb250cm9s PWZ1bmN0aW9uKGUpe2lmKCFlfHwhZS5vblJlbW92ZSlyZXR1cm4gdGhpcy5maXJlKG5ldyB0 LkVycm9yRXZlbnQobmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50IHRvIG1hcC5yZW1vdmVD b250cm9sKCkuIEFyZ3VtZW50IG11c3QgYmUgYSBjb250cm9sIHdpdGggb25BZGQgYW5kIG9u UmVtb3ZlIG1ldGhvZHMuIikpKTt2YXIgcj10aGlzLl9jb250cm9scy5pbmRleE9mKGUpO3Jl dHVybiByPi0xJiZ0aGlzLl9jb250cm9scy5zcGxpY2UociwxKSxlLm9uUmVtb3ZlKHRoaXMp LHRoaXN9LGkucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbihlKXt2YXIgcj10aGlzLl9jb250 YWluZXJEaW1lbnNpb25zKCksbj1yWzBdLGk9clsxXTt0aGlzLl9yZXNpemVDYW52YXMobixp KSx0aGlzLnRyYW5zZm9ybS5yZXNpemUobixpKSx0aGlzLnBhaW50ZXIucmVzaXplKG4saSk7 dmFyIGE9IXRoaXMuX21vdmluZztyZXR1cm4gYSYmKHRoaXMuc3RvcCgpLHRoaXMuZmlyZShu ZXcgdC5FdmVudCgibW92ZXN0YXJ0IixlKSkuZmlyZShuZXcgdC5FdmVudCgibW92ZSIsZSkp KSx0aGlzLmZpcmUobmV3IHQuRXZlbnQoInJlc2l6ZSIsZSkpLGEmJnRoaXMuZmlyZShuZXcg dC5FdmVudCgibW92ZWVuZCIsZSkpLHRoaXN9LGkucHJvdG90eXBlLmdldEJvdW5kcz1mdW5j dGlvbigpe3JldHVybiB0aGlzLnRyYW5zZm9ybS5nZXRCb3VuZHMoKX0saS5wcm90b3R5cGUu Z2V0TWF4Qm91bmRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJhbnNmb3JtLmdldE1heEJv dW5kcygpfSxpLnByb3RvdHlwZS5zZXRNYXhCb3VuZHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRo aXMudHJhbnNmb3JtLnNldE1heEJvdW5kcyh0LkxuZ0xhdEJvdW5kcy5jb252ZXJ0KGUpKSx0 aGlzLl91cGRhdGUoKX0saS5wcm90b3R5cGUuc2V0TWluWm9vbT1mdW5jdGlvbih0KXtpZigo dD1udWxsPT10Py0yOnQpPj0tMiYmdDw9dGhpcy50cmFuc2Zvcm0ubWF4Wm9vbSlyZXR1cm4g dGhpcy50cmFuc2Zvcm0ubWluWm9vbT10LHRoaXMuX3VwZGF0ZSgpLHRoaXMuZ2V0Wm9vbSgp PHQmJnRoaXMuc2V0Wm9vbSh0KSx0aGlzO3Rocm93IG5ldyBFcnJvcigibWluWm9vbSBtdXN0 IGJlIGJldHdlZW4gLTIgYW5kIHRoZSBjdXJyZW50IG1heFpvb20sIGluY2x1c2l2ZSIpfSxp LnByb3RvdHlwZS5nZXRNaW5ab29tPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJhbnNmb3Jt Lm1pblpvb219LGkucHJvdG90eXBlLnNldE1heFpvb209ZnVuY3Rpb24odCl7aWYoKHQ9bnVs bD09dD8yMjp0KT49dGhpcy50cmFuc2Zvcm0ubWluWm9vbSlyZXR1cm4gdGhpcy50cmFuc2Zv cm0ubWF4Wm9vbT10LHRoaXMuX3VwZGF0ZSgpLHRoaXMuZ2V0Wm9vbSgpPnQmJnRoaXMuc2V0 Wm9vbSh0KSx0aGlzO3Rocm93IG5ldyBFcnJvcigibWF4Wm9vbSBtdXN0IGJlIGdyZWF0ZXIg dGhhbiB0aGUgY3VycmVudCBtaW5ab29tIil9LGkucHJvdG90eXBlLmdldE1heFpvb209ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0ubWF4Wm9vbX0saS5wcm90b3R5cGUuc2V0 TWluUGl0Y2g9ZnVuY3Rpb24odCl7aWYoKHQ9bnVsbD09dD8wOnQpPDApdGhyb3cgbmV3IEVy cm9yKCJtaW5QaXRjaCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwIik7aWYo dD49MCYmdDw9dGhpcy50cmFuc2Zvcm0ubWF4UGl0Y2gpcmV0dXJuIHRoaXMudHJhbnNmb3Jt Lm1pblBpdGNoPXQsdGhpcy5fdXBkYXRlKCksdGhpcy5nZXRQaXRjaCgpPHQmJnRoaXMuc2V0 UGl0Y2godCksdGhpczt0aHJvdyBuZXcgRXJyb3IoIm1pblBpdGNoIG11c3QgYmUgYmV0d2Vl biAwIGFuZCB0aGUgY3VycmVudCBtYXhQaXRjaCwgaW5jbHVzaXZlIil9LGkucHJvdG90eXBl LmdldE1pblBpdGNoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJhbnNmb3JtLm1pblBpdGNo fSxpLnByb3RvdHlwZS5zZXRNYXhQaXRjaD1mdW5jdGlvbih0KXtpZigodD1udWxsPT10PzYw OnQpPjYwKXRocm93IG5ldyBFcnJvcigibWF4UGl0Y2ggbXVzdCBiZSBsZXNzIHRoYW4gb3Ig ZXF1YWwgdG8gNjAiKTtpZih0Pj10aGlzLnRyYW5zZm9ybS5taW5QaXRjaClyZXR1cm4gdGhp cy50cmFuc2Zvcm0ubWF4UGl0Y2g9dCx0aGlzLl91cGRhdGUoKSx0aGlzLmdldFBpdGNoKCk+ dCYmdGhpcy5zZXRQaXRjaCh0KSx0aGlzO3Rocm93IG5ldyBFcnJvcigibWF4UGl0Y2ggbXVz dCBiZSBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgbWluUGl0Y2giKX0saS5wcm90b3R5cGUu Z2V0TWF4UGl0Y2g9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0ubWF4UGl0Y2h9 LGkucHJvdG90eXBlLmdldFJlbmRlcldvcmxkQ29waWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMudHJhbnNmb3JtLnJlbmRlcldvcmxkQ29waWVzfSxpLnByb3RvdHlwZS5zZXRSZW5kZXJX b3JsZENvcGllcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0ucmVuZGVyV29y bGRDb3BpZXM9dCx0aGlzLl91cGRhdGUoKX0saS5wcm90b3R5cGUucHJvamVjdD1mdW5jdGlv bihlKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0ubG9jYXRpb25Qb2ludCh0LkxuZ0xhdC5jb252 ZXJ0KGUpKX0saS5wcm90b3R5cGUudW5wcm9qZWN0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlz LnRyYW5zZm9ybS5wb2ludExvY2F0aW9uKHQuUG9pbnQuY29udmVydChlKSl9LGkucHJvdG90 eXBlLmlzTW92aW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vdmluZ3x8dGhpcy5oYW5k bGVycy5pc01vdmluZygpfSxpLnByb3RvdHlwZS5pc1pvb21pbmc9ZnVuY3Rpb24oKXtyZXR1 cm4gdGhpcy5fem9vbWluZ3x8dGhpcy5oYW5kbGVycy5pc1pvb21pbmcoKX0saS5wcm90b3R5 cGUuaXNSb3RhdGluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb3RhdGluZ3x8dGhpcy5o YW5kbGVycy5pc1JvdGF0aW5nKCl9LGkucHJvdG90eXBlLl9jcmVhdGVEZWxlZ2F0ZWRMaXN0 ZW5lcj1mdW5jdGlvbih0LGUscil7dmFyIG4saT10aGlzO2lmKCJtb3VzZWVudGVyIj09PXR8 fCJtb3VzZW92ZXIiPT09dCl7dmFyIGE9ITE7cmV0dXJue2xheWVyOmUsbGlzdGVuZXI6cixk ZWxlZ2F0ZXM6e21vdXNlbW92ZTpmdW5jdGlvbihuKXt2YXIgbz1pLmdldExheWVyKGUpP2ku cXVlcnlSZW5kZXJlZEZlYXR1cmVzKG4ucG9pbnQse2xheWVyczpbZV19KTpbXTtvLmxlbmd0 aD9hfHwoYT0hMCxyLmNhbGwoaSxuZXcgUm4odCxpLG4ub3JpZ2luYWxFdmVudCx7ZmVhdHVy ZXM6b30pKSk6YT0hMX0sbW91c2VvdXQ6ZnVuY3Rpb24oKXthPSExfX19fWlmKCJtb3VzZWxl YXZlIj09PXR8fCJtb3VzZW91dCI9PT10KXt2YXIgbz0hMTtyZXR1cm57bGF5ZXI6ZSxsaXN0 ZW5lcjpyLGRlbGVnYXRlczp7bW91c2Vtb3ZlOmZ1bmN0aW9uKG4peyhpLmdldExheWVyKGUp P2kucXVlcnlSZW5kZXJlZEZlYXR1cmVzKG4ucG9pbnQse2xheWVyczpbZV19KTpbXSkubGVu Z3RoP289ITA6byYmKG89ITEsci5jYWxsKGksbmV3IFJuKHQsaSxuLm9yaWdpbmFsRXZlbnQp KSl9LG1vdXNlb3V0OmZ1bmN0aW9uKGUpe28mJihvPSExLHIuY2FsbChpLG5ldyBSbih0LGks ZS5vcmlnaW5hbEV2ZW50KSkpfX19fXJldHVybntsYXllcjplLGxpc3RlbmVyOnIsZGVsZWdh dGVzOihuPXt9LG5bdF09ZnVuY3Rpb24odCl7dmFyIG49aS5nZXRMYXllcihlKT9pLnF1ZXJ5 UmVuZGVyZWRGZWF0dXJlcyh0LnBvaW50LHtsYXllcnM6W2VdfSk6W107bi5sZW5ndGgmJih0 LmZlYXR1cmVzPW4sci5jYWxsKGksdCksZGVsZXRlIHQuZmVhdHVyZXMpfSxuKX19LGkucHJv dG90eXBlLm9uPWZ1bmN0aW9uKHQsZSxyKXtpZih2b2lkIDA9PT1yKXJldHVybiBuLnByb3Rv dHlwZS5vbi5jYWxsKHRoaXMsdCxlKTt2YXIgaT10aGlzLl9jcmVhdGVEZWxlZ2F0ZWRMaXN0 ZW5lcih0LGUscik7Zm9yKHZhciBhIGluIHRoaXMuX2RlbGVnYXRlZExpc3RlbmVycz10aGlz Ll9kZWxlZ2F0ZWRMaXN0ZW5lcnN8fHt9LHRoaXMuX2RlbGVnYXRlZExpc3RlbmVyc1t0XT10 aGlzLl9kZWxlZ2F0ZWRMaXN0ZW5lcnNbdF18fFtdLHRoaXMuX2RlbGVnYXRlZExpc3RlbmVy c1t0XS5wdXNoKGkpLGkuZGVsZWdhdGVzKXRoaXMub24oYSxpLmRlbGVnYXRlc1thXSk7cmV0 dXJuIHRoaXN9LGkucHJvdG90eXBlLm9uY2U9ZnVuY3Rpb24odCxlLHIpe2lmKHZvaWQgMD09 PXIpcmV0dXJuIG4ucHJvdG90eXBlLm9uY2UuY2FsbCh0aGlzLHQsZSk7dmFyIGk9dGhpcy5f Y3JlYXRlRGVsZWdhdGVkTGlzdGVuZXIodCxlLHIpO2Zvcih2YXIgYSBpbiBpLmRlbGVnYXRl cyl0aGlzLm9uY2UoYSxpLmRlbGVnYXRlc1thXSk7cmV0dXJuIHRoaXN9LGkucHJvdG90eXBl Lm9mZj1mdW5jdGlvbih0LGUscil7dmFyIGk9dGhpcztpZih2b2lkIDA9PT1yKXJldHVybiBu LnByb3RvdHlwZS5vZmYuY2FsbCh0aGlzLHQsZSk7cmV0dXJuIHRoaXMuX2RlbGVnYXRlZExp c3RlbmVycyYmdGhpcy5fZGVsZWdhdGVkTGlzdGVuZXJzW3RdJiZmdW5jdGlvbihuKXtmb3Io dmFyIGE9blt0XSxvPTA7bzxhLmxlbmd0aDtvKyspe3ZhciBzPWFbb107aWYocy5sYXllcj09 PWUmJnMubGlzdGVuZXI9PT1yKXtmb3IodmFyIGwgaW4gcy5kZWxlZ2F0ZXMpaS5vZmYobCxz LmRlbGVnYXRlc1tsXSk7cmV0dXJuIGEuc3BsaWNlKG8sMSksaX19fSh0aGlzLl9kZWxlZ2F0 ZWRMaXN0ZW5lcnMpLHRoaXN9LGkucHJvdG90eXBlLnF1ZXJ5UmVuZGVyZWRGZWF0dXJlcz1m dW5jdGlvbihlLHIpe2lmKCF0aGlzLnN0eWxlKXJldHVybltdO3ZhciBuO2lmKHZvaWQgMCE9 PXJ8fHZvaWQgMD09PWV8fGUgaW5zdGFuY2VvZiB0LlBvaW50fHxBcnJheS5pc0FycmF5KGUp fHwocj1lLGU9dm9pZCAwKSxyPXJ8fHt9LChlPWV8fFtbMCwwXSxbdGhpcy50cmFuc2Zvcm0u d2lkdGgsdGhpcy50cmFuc2Zvcm0uaGVpZ2h0XV0paW5zdGFuY2VvZiB0LlBvaW50fHwibnVt YmVyIj09dHlwZW9mIGVbMF0pbj1bdC5Qb2ludC5jb252ZXJ0KGUpXTtlbHNle3ZhciBpPXQu UG9pbnQuY29udmVydChlWzBdKSxhPXQuUG9pbnQuY29udmVydChlWzFdKTtuPVtpLG5ldyB0 LlBvaW50KGEueCxpLnkpLGEsbmV3IHQuUG9pbnQoaS54LGEueSksaV19cmV0dXJuIHRoaXMu c3R5bGUucXVlcnlSZW5kZXJlZEZlYXR1cmVzKG4scix0aGlzLnRyYW5zZm9ybSl9LGkucHJv dG90eXBlLnF1ZXJ5U291cmNlRmVhdHVyZXM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5z dHlsZS5xdWVyeVNvdXJjZUZlYXR1cmVzKHQsZSl9LGkucHJvdG90eXBlLnNldFN0eWxlPWZ1 bmN0aW9uKGUscil7cmV0dXJuITEhPT0ocj10LmV4dGVuZCh7fSx7bG9jYWxJZGVvZ3JhcGhG b250RmFtaWx5OnRoaXMuX2xvY2FsSWRlb2dyYXBoRm9udEZhbWlseX0scikpLmRpZmYmJnIu bG9jYWxJZGVvZ3JhcGhGb250RmFtaWx5PT09dGhpcy5fbG9jYWxJZGVvZ3JhcGhGb250RmFt aWx5JiZ0aGlzLnN0eWxlJiZlPyh0aGlzLl9kaWZmU3R5bGUoZSxyKSx0aGlzKToodGhpcy5f bG9jYWxJZGVvZ3JhcGhGb250RmFtaWx5PXIubG9jYWxJZGVvZ3JhcGhGb250RmFtaWx5LHRo aXMuX3VwZGF0ZVN0eWxlKGUscikpfSxpLnByb3RvdHlwZS5fZ2V0VUlTdHJpbmc9ZnVuY3Rp b24odCl7dmFyIGU9dGhpcy5fbG9jYWxlW3RdO2lmKG51bGw9PWUpdGhyb3cgbmV3IEVycm9y KCJNaXNzaW5nIFVJIHN0cmluZyAnIit0KyInIik7cmV0dXJuIGV9LGkucHJvdG90eXBlLl91 cGRhdGVTdHlsZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnN0eWxlJiYodGhpcy5zdHls ZS5zZXRFdmVudGVkUGFyZW50KG51bGwpLHRoaXMuc3R5bGUuX3JlbW92ZSgpKSx0Pyh0aGlz LnN0eWxlPW5ldyBxZSh0aGlzLGV8fHt9KSx0aGlzLnN0eWxlLnNldEV2ZW50ZWRQYXJlbnQo dGhpcyx7c3R5bGU6dGhpcy5zdHlsZX0pLCJzdHJpbmciPT10eXBlb2YgdD90aGlzLnN0eWxl LmxvYWRVUkwodCk6dGhpcy5zdHlsZS5sb2FkSlNPTih0KSx0aGlzKTooZGVsZXRlIHRoaXMu c3R5bGUsdGhpcyl9LGkucHJvdG90eXBlLl9sYXp5SW5pdEVtcHR5U3R5bGU9ZnVuY3Rpb24o KXt0aGlzLnN0eWxlfHwodGhpcy5zdHlsZT1uZXcgcWUodGhpcyx7fSksdGhpcy5zdHlsZS5z ZXRFdmVudGVkUGFyZW50KHRoaXMse3N0eWxlOnRoaXMuc3R5bGV9KSx0aGlzLnN0eWxlLmxv YWRFbXB0eSgpKX0saS5wcm90b3R5cGUuX2RpZmZTdHlsZT1mdW5jdGlvbihlLHIpe3ZhciBu PXRoaXM7aWYoInN0cmluZyI9PXR5cGVvZiBlKXt2YXIgaT10aGlzLl9yZXF1ZXN0TWFuYWdl ci5ub3JtYWxpemVTdHlsZVVSTChlKSxhPXRoaXMuX3JlcXVlc3RNYW5hZ2VyLnRyYW5zZm9y bVJlcXVlc3QoaSx0LlJlc291cmNlVHlwZS5TdHlsZSk7dC5nZXRKU09OKGEsKGZ1bmN0aW9u KGUsaSl7ZT9uLmZpcmUobmV3IHQuRXJyb3JFdmVudChlKSk6aSYmbi5fdXBkYXRlRGlmZihp LHIpfSkpfWVsc2Uib2JqZWN0Ij09dHlwZW9mIGUmJnRoaXMuX3VwZGF0ZURpZmYoZSxyKX0s aS5wcm90b3R5cGUuX3VwZGF0ZURpZmY9ZnVuY3Rpb24oZSxyKXt0cnl7dGhpcy5zdHlsZS5z ZXRTdGF0ZShlKSYmdGhpcy5fdXBkYXRlKCEwKX1jYXRjaChuKXt0Lndhcm5PbmNlKCJVbmFi bGUgdG8gcGVyZm9ybSBzdHlsZSBkaWZmOiAiKyhuLm1lc3NhZ2V8fG4uZXJyb3J8fG4pKyIu ICBSZWJ1aWxkaW5nIHRoZSBzdHlsZSBmcm9tIHNjcmF0Y2guIiksdGhpcy5fdXBkYXRlU3R5 bGUoZSxyKX19LGkucHJvdG90eXBlLmdldFN0eWxlPWZ1bmN0aW9uKCl7aWYodGhpcy5zdHls ZSlyZXR1cm4gdGhpcy5zdHlsZS5zZXJpYWxpemUoKX0saS5wcm90b3R5cGUuaXNTdHlsZUxv YWRlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0eWxlP3RoaXMuc3R5bGUubG9hZGVkKCk6 dC53YXJuT25jZSgiVGhlcmUgaXMgbm8gc3R5bGUgYWRkZWQgdG8gdGhlIG1hcC4iKX0saS5w cm90b3R5cGUuYWRkU291cmNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2xhenlJbml0 RW1wdHlTdHlsZSgpLHRoaXMuc3R5bGUuYWRkU291cmNlKHQsZSksdGhpcy5fdXBkYXRlKCEw KX0saS5wcm90b3R5cGUuaXNTb3VyY2VMb2FkZWQ9ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcy5z dHlsZSYmdGhpcy5zdHlsZS5zb3VyY2VDYWNoZXNbZV07aWYodm9pZCAwIT09cilyZXR1cm4g ci5sb2FkZWQoKTt0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIlRoZXJl IGlzIG5vIHNvdXJjZSB3aXRoIElEICciK2UrIiciKSkpfSxpLnByb3RvdHlwZS5hcmVUaWxl c0xvYWRlZD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuc3R5bGUmJnRoaXMuc3R5bGUuc291cmNl Q2FjaGVzO2Zvcih2YXIgZSBpbiB0KXt2YXIgcj10W2VdLl90aWxlcztmb3IodmFyIG4gaW4g cil7dmFyIGk9cltuXTtpZigibG9hZGVkIiE9PWkuc3RhdGUmJiJlcnJvcmVkIiE9PWkuc3Rh dGUpcmV0dXJuITF9fXJldHVybiEwfSxpLnByb3RvdHlwZS5hZGRTb3VyY2VUeXBlPWZ1bmN0 aW9uKHQsZSxyKXtyZXR1cm4gdGhpcy5fbGF6eUluaXRFbXB0eVN0eWxlKCksdGhpcy5zdHls ZS5hZGRTb3VyY2VUeXBlKHQsZSxyKX0saS5wcm90b3R5cGUucmVtb3ZlU291cmNlPWZ1bmN0 aW9uKHQpe3JldHVybiB0aGlzLnN0eWxlLnJlbW92ZVNvdXJjZSh0KSx0aGlzLl91cGRhdGUo ITApfSxpLnByb3RvdHlwZS5nZXRTb3VyY2U9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc3R5 bGUuZ2V0U291cmNlKHQpfSxpLnByb3RvdHlwZS5hZGRJbWFnZT1mdW5jdGlvbihlLHIsbil7 dm9pZCAwPT09biYmKG49e30pO3ZhciBpPW4ucGl4ZWxSYXRpbzt2b2lkIDA9PT1pJiYoaT0x KTt2YXIgYT1uLnNkZjt2b2lkIDA9PT1hJiYoYT0hMSk7dmFyIG89bi5zdHJldGNoWCxzPW4u c3RyZXRjaFksbD1uLmNvbnRlbnQ7dGhpcy5fbGF6eUluaXRFbXB0eVN0eWxlKCk7aWYociBp bnN0YW5jZW9mIGtpfHxNaSYmciBpbnN0YW5jZW9mIE1pKXt2YXIgYz10LmJyb3dzZXIuZ2V0 SW1hZ2VEYXRhKHIpLHU9Yy53aWR0aCxmPWMuaGVpZ2h0LGg9Yy5kYXRhO3RoaXMuc3R5bGUu YWRkSW1hZ2UoZSx7ZGF0YTpuZXcgdC5SR0JBSW1hZ2Uoe3dpZHRoOnUsaGVpZ2h0OmZ9LGgp LHBpeGVsUmF0aW86aSxzdHJldGNoWDpvLHN0cmV0Y2hZOnMsY29udGVudDpsLHNkZjphLHZl cnNpb246MH0pfWVsc2V7aWYodm9pZCAwPT09ci53aWR0aHx8dm9pZCAwPT09ci5oZWlnaHQp cmV0dXJuIHRoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigiSW52YWxpZCBh cmd1bWVudHMgdG8gbWFwLmFkZEltYWdlKCkuIFRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBi ZSBhbiBgSFRNTEltYWdlRWxlbWVudGAsIGBJbWFnZURhdGFgLCBgSW1hZ2VCaXRtYXBgLCBv ciBvYmplY3Qgd2l0aCBgd2lkdGhgLCBgaGVpZ2h0YCwgYW5kIGBkYXRhYCBwcm9wZXJ0aWVz IHdpdGggdGhlIHNhbWUgZm9ybWF0IGFzIGBJbWFnZURhdGFgIikpKTt2YXIgcD1yLndpZHRo LGQ9ci5oZWlnaHQsbT1yLmRhdGEsZz1yO3RoaXMuc3R5bGUuYWRkSW1hZ2UoZSx7ZGF0YTpu ZXcgdC5SR0JBSW1hZ2Uoe3dpZHRoOnAsaGVpZ2h0OmR9LG5ldyBVaW50OEFycmF5KG0pKSxw aXhlbFJhdGlvOmksc3RyZXRjaFg6byxzdHJldGNoWTpzLGNvbnRlbnQ6bCxzZGY6YSx2ZXJz aW9uOjAsdXNlckltYWdlOmd9KSxnLm9uQWRkJiZnLm9uQWRkKHRoaXMsZSl9fSxpLnByb3Rv dHlwZS51cGRhdGVJbWFnZT1mdW5jdGlvbihlLHIpe3ZhciBuPXRoaXMuc3R5bGUuZ2V0SW1h Z2UoZSk7aWYoIW4pcmV0dXJuIHRoaXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJv cigiVGhlIG1hcCBoYXMgbm8gaW1hZ2Ugd2l0aCB0aGF0IGlkLiBJZiB5b3UgYXJlIGFkZGlu ZyBhIG5ldyBpbWFnZSB1c2UgYG1hcC5hZGRJbWFnZSguLi4pYCBpbnN0ZWFkLiIpKSk7dmFy IGk9ciBpbnN0YW5jZW9mIGtpfHxNaSYmciBpbnN0YW5jZW9mIE1pP3QuYnJvd3Nlci5nZXRJ bWFnZURhdGEocik6cixhPWkud2lkdGgsbz1pLmhlaWdodCxzPWkuZGF0YTtpZih2b2lkIDA9 PT1hfHx2b2lkIDA9PT1vKXJldHVybiB0aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcg RXJyb3IoIkludmFsaWQgYXJndW1lbnRzIHRvIG1hcC51cGRhdGVJbWFnZSgpLiBUaGUgc2Vj b25kIGFyZ3VtZW50IG11c3QgYmUgYW4gYEhUTUxJbWFnZUVsZW1lbnRgLCBgSW1hZ2VEYXRh YCwgYEltYWdlQml0bWFwYCwgb3Igb2JqZWN0IHdpdGggYHdpZHRoYCwgYGhlaWdodGAsIGFu ZCBgZGF0YWAgcHJvcGVydGllcyB3aXRoIHRoZSBzYW1lIGZvcm1hdCBhcyBgSW1hZ2VEYXRh YCIpKSk7aWYoYSE9PW4uZGF0YS53aWR0aHx8byE9PW4uZGF0YS5oZWlnaHQpcmV0dXJuIHRo aXMuZmlyZShuZXcgdC5FcnJvckV2ZW50KG5ldyBFcnJvcigiVGhlIHdpZHRoIGFuZCBoZWln aHQgb2YgdGhlIHVwZGF0ZWQgaW1hZ2UgbXVzdCBiZSB0aGF0IHNhbWUgYXMgdGhlIHByZXZp b3VzIHZlcnNpb24gb2YgdGhlIGltYWdlIikpKTt2YXIgbD0hKHIgaW5zdGFuY2VvZiBraXx8 TWkmJnIgaW5zdGFuY2VvZiBNaSk7bi5kYXRhLnJlcGxhY2UocyxsKSx0aGlzLnN0eWxlLnVw ZGF0ZUltYWdlKGUsbil9LGkucHJvdG90eXBlLmhhc0ltYWdlPWZ1bmN0aW9uKGUpe3JldHVy biBlPyEhdGhpcy5zdHlsZS5nZXRJbWFnZShlKToodGhpcy5maXJlKG5ldyB0LkVycm9yRXZl bnQobmV3IEVycm9yKCJNaXNzaW5nIHJlcXVpcmVkIGltYWdlIGlkIikpKSwhMSl9LGkucHJv dG90eXBlLnJlbW92ZUltYWdlPWZ1bmN0aW9uKHQpe3RoaXMuc3R5bGUucmVtb3ZlSW1hZ2Uo dCl9LGkucHJvdG90eXBlLmxvYWRJbWFnZT1mdW5jdGlvbihlLHIpe3QuZ2V0SW1hZ2UodGhp cy5fcmVxdWVzdE1hbmFnZXIudHJhbnNmb3JtUmVxdWVzdChlLHQuUmVzb3VyY2VUeXBlLklt YWdlKSxyKX0saS5wcm90b3R5cGUubGlzdEltYWdlcz1mdW5jdGlvbigpe3JldHVybiB0aGlz LnN0eWxlLmxpc3RJbWFnZXMoKX0saS5wcm90b3R5cGUuYWRkTGF5ZXI9ZnVuY3Rpb24odCxl KXtyZXR1cm4gdGhpcy5fbGF6eUluaXRFbXB0eVN0eWxlKCksdGhpcy5zdHlsZS5hZGRMYXll cih0LGUpLHRoaXMuX3VwZGF0ZSghMCl9LGkucHJvdG90eXBlLm1vdmVMYXllcj1mdW5jdGlv bih0LGUpe3JldHVybiB0aGlzLnN0eWxlLm1vdmVMYXllcih0LGUpLHRoaXMuX3VwZGF0ZSgh MCl9LGkucHJvdG90eXBlLnJlbW92ZUxheWVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnN0 eWxlLnJlbW92ZUxheWVyKHQpLHRoaXMuX3VwZGF0ZSghMCl9LGkucHJvdG90eXBlLmdldExh eWVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnN0eWxlLmdldExheWVyKHQpfSxpLnByb3Rv dHlwZS5zZXRMYXllclpvb21SYW5nZT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRoaXMuc3R5 bGUuc2V0TGF5ZXJab29tUmFuZ2UodCxlLHIpLHRoaXMuX3VwZGF0ZSghMCl9LGkucHJvdG90 eXBlLnNldEZpbHRlcj1mdW5jdGlvbih0LGUscil7cmV0dXJuIHZvaWQgMD09PXImJihyPXt9 KSx0aGlzLnN0eWxlLnNldEZpbHRlcih0LGUsciksdGhpcy5fdXBkYXRlKCEwKX0saS5wcm90 b3R5cGUuZ2V0RmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnN0eWxlLmdldEZpbHRl cih0KX0saS5wcm90b3R5cGUuc2V0UGFpbnRQcm9wZXJ0eT1mdW5jdGlvbih0LGUscixuKXty ZXR1cm4gdm9pZCAwPT09biYmKG49e30pLHRoaXMuc3R5bGUuc2V0UGFpbnRQcm9wZXJ0eSh0 LGUscixuKSx0aGlzLl91cGRhdGUoITApfSxpLnByb3RvdHlwZS5nZXRQYWludFByb3BlcnR5 PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc3R5bGUuZ2V0UGFpbnRQcm9wZXJ0eSh0LGUp fSxpLnByb3RvdHlwZS5zZXRMYXlvdXRQcm9wZXJ0eT1mdW5jdGlvbih0LGUscixuKXtyZXR1 cm4gdm9pZCAwPT09biYmKG49e30pLHRoaXMuc3R5bGUuc2V0TGF5b3V0UHJvcGVydHkodCxl LHIsbiksdGhpcy5fdXBkYXRlKCEwKX0saS5wcm90b3R5cGUuZ2V0TGF5b3V0UHJvcGVydHk9 ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5zdHlsZS5nZXRMYXlvdXRQcm9wZXJ0eSh0LGUp fSxpLnByb3RvdHlwZS5zZXRMaWdodD1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1l JiYoZT17fSksdGhpcy5fbGF6eUluaXRFbXB0eVN0eWxlKCksdGhpcy5zdHlsZS5zZXRMaWdo dCh0LGUpLHRoaXMuX3VwZGF0ZSghMCl9LGkucHJvdG90eXBlLmdldExpZ2h0PWZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMuc3R5bGUuZ2V0TGlnaHQoKX0saS5wcm90b3R5cGUuc2V0RmVhdHVy ZVN0YXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc3R5bGUuc2V0RmVhdHVyZVN0YXRl KHQsZSksdGhpcy5fdXBkYXRlKCl9LGkucHJvdG90eXBlLnJlbW92ZUZlYXR1cmVTdGF0ZT1m dW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnN0eWxlLnJlbW92ZUZlYXR1cmVTdGF0ZSh0LGUp LHRoaXMuX3VwZGF0ZSgpfSxpLnByb3RvdHlwZS5nZXRGZWF0dXJlU3RhdGU9ZnVuY3Rpb24o dCl7cmV0dXJuIHRoaXMuc3R5bGUuZ2V0RmVhdHVyZVN0YXRlKHQpfSxpLnByb3RvdHlwZS5n ZXRDb250YWluZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29udGFpbmVyfSxpLnByb3Rv dHlwZS5nZXRDYW52YXNDb250YWluZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FudmFz Q29udGFpbmVyfSxpLnByb3RvdHlwZS5nZXRDYW52YXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy5fY2FudmFzfSxpLnByb3RvdHlwZS5fY29udGFpbmVyRGltZW5zaW9ucz1mdW5jdGlvbigp e3ZhciB0PTAsZT0wO3JldHVybiB0aGlzLl9jb250YWluZXImJih0PXRoaXMuX2NvbnRhaW5l ci5jbGllbnRXaWR0aHx8NDAwLGU9dGhpcy5fY29udGFpbmVyLmNsaWVudEhlaWdodHx8MzAw KSxbdCxlXX0saS5wcm90b3R5cGUuX2RldGVjdE1pc3NpbmdDU1M9ZnVuY3Rpb24oKXsicmdi KDI1MCwgMTI4LCAxMTQpIiE9PXQud2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5fbWlz c2luZ0NTU0NhbmFyeSkuZ2V0UHJvcGVydHlWYWx1ZSgiYmFja2dyb3VuZC1jb2xvciIpJiZ0 Lndhcm5PbmNlKCJUaGlzIHBhZ2UgYXBwZWFycyB0byBiZSBtaXNzaW5nIENTUyBkZWNsYXJh dGlvbnMgZm9yIE1hcGJveCBHTCBKUywgd2hpY2ggbWF5IGNhdXNlIHRoZSBtYXAgdG8gZGlz cGxheSBpbmNvcnJlY3RseS4gUGxlYXNlIGVuc3VyZSB5b3VyIHBhZ2UgaW5jbHVkZXMgbWFw Ym94LWdsLmNzcywgYXMgZGVzY3JpYmVkIGluIGh0dHBzOi8vd3d3Lm1hcGJveC5jb20vbWFw Ym94LWdsLWpzL2FwaS8uIil9LGkucHJvdG90eXBlLl9zZXR1cENvbnRhaW5lcj1mdW5jdGlv bigpe3ZhciB0PXRoaXMuX2NvbnRhaW5lcjt0LmNsYXNzTGlzdC5hZGQoIm1hcGJveGdsLW1h cCIpLCh0aGlzLl9taXNzaW5nQ1NTQ2FuYXJ5PXIuY3JlYXRlKCJkaXYiLCJtYXBib3hnbC1j YW5hcnkiLHQpKS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLHRoaXMuX2RldGVjdE1pc3Np bmdDU1MoKTt2YXIgZT10aGlzLl9jYW52YXNDb250YWluZXI9ci5jcmVhdGUoImRpdiIsIm1h cGJveGdsLWNhbnZhcy1jb250YWluZXIiLHQpO3RoaXMuX2ludGVyYWN0aXZlJiZlLmNsYXNz TGlzdC5hZGQoIm1hcGJveGdsLWludGVyYWN0aXZlIiksdGhpcy5fY2FudmFzPXIuY3JlYXRl KCJjYW52YXMiLCJtYXBib3hnbC1jYW52YXMiLGUpLHRoaXMuX2NhbnZhcy5hZGRFdmVudExp c3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0Iix0aGlzLl9jb250ZXh0TG9zdCwhMSksdGhpcy5f Y2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dHJlc3RvcmVkIix0aGlzLl9j b250ZXh0UmVzdG9yZWQsITEpLHRoaXMuX2NhbnZhcy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4 IiwiMCIpLHRoaXMuX2NhbnZhcy5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCJNYXAiKTt2 YXIgbj10aGlzLl9jb250YWluZXJEaW1lbnNpb25zKCk7dGhpcy5fcmVzaXplQ2FudmFzKG5b MF0sblsxXSk7dmFyIGk9dGhpcy5fY29udHJvbENvbnRhaW5lcj1yLmNyZWF0ZSgiZGl2Iiwi bWFwYm94Z2wtY29udHJvbC1jb250YWluZXIiLHQpLGE9dGhpcy5fY29udHJvbFBvc2l0aW9u cz17fTtbInRvcC1sZWZ0IiwidG9wLXJpZ2h0IiwiYm90dG9tLWxlZnQiLCJib3R0b20tcmln aHQiXS5mb3JFYWNoKChmdW5jdGlvbih0KXthW3RdPXIuY3JlYXRlKCJkaXYiLCJtYXBib3hn bC1jdHJsLSIrdCxpKX0pKX0saS5wcm90b3R5cGUuX3Jlc2l6ZUNhbnZhcz1mdW5jdGlvbihl LHIpe3ZhciBuPXQuYnJvd3Nlci5kZXZpY2VQaXhlbFJhdGlvfHwxO3RoaXMuX2NhbnZhcy53 aWR0aD1uKmUsdGhpcy5fY2FudmFzLmhlaWdodD1uKnIsdGhpcy5fY2FudmFzLnN0eWxlLndp ZHRoPWUrInB4Iix0aGlzLl9jYW52YXMuc3R5bGUuaGVpZ2h0PXIrInB4In0saS5wcm90b3R5 cGUuX3NldHVwUGFpbnRlcj1mdW5jdGlvbigpe3ZhciByPXQuZXh0ZW5kKHt9LGUud2ViR0xD b250ZXh0QXR0cmlidXRlcyx7ZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdDp0aGlzLl9m YWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0LHByZXNlcnZlRHJhd2luZ0J1ZmZlcjp0aGlz Ll9wcmVzZXJ2ZURyYXdpbmdCdWZmZXIsYW50aWFsaWFzOnRoaXMuX2FudGlhbGlhc3x8ITF9 KSxuPXRoaXMuX2NhbnZhcy5nZXRDb250ZXh0KCJ3ZWJnbCIscil8fHRoaXMuX2NhbnZhcy5n ZXRDb250ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wiLHIpO24/KHRoaXMucGFpbnRlcj1uZXcg X24obix0aGlzLnRyYW5zZm9ybSksdC53ZWJwU3VwcG9ydGVkLnRlc3RTdXBwb3J0KG4pKTp0 aGlzLmZpcmUobmV3IHQuRXJyb3JFdmVudChuZXcgRXJyb3IoIkZhaWxlZCB0byBpbml0aWFs aXplIFdlYkdMIikpKX0saS5wcm90b3R5cGUuX2NvbnRleHRMb3N0PWZ1bmN0aW9uKGUpe2Uu cHJldmVudERlZmF1bHQoKSx0aGlzLl9mcmFtZSYmKHRoaXMuX2ZyYW1lLmNhbmNlbCgpLHRo aXMuX2ZyYW1lPW51bGwpLHRoaXMuZmlyZShuZXcgdC5FdmVudCgid2ViZ2xjb250ZXh0bG9z dCIse29yaWdpbmFsRXZlbnQ6ZX0pKX0saS5wcm90b3R5cGUuX2NvbnRleHRSZXN0b3JlZD1m dW5jdGlvbihlKXt0aGlzLl9zZXR1cFBhaW50ZXIoKSx0aGlzLnJlc2l6ZSgpLHRoaXMuX3Vw ZGF0ZSgpLHRoaXMuZmlyZShuZXcgdC5FdmVudCgid2ViZ2xjb250ZXh0cmVzdG9yZWQiLHtv cmlnaW5hbEV2ZW50OmV9KSl9LGkucHJvdG90eXBlLmxvYWRlZD1mdW5jdGlvbigpe3JldHVy biF0aGlzLl9zdHlsZURpcnR5JiYhdGhpcy5fc291cmNlc0RpcnR5JiYhIXRoaXMuc3R5bGUm JnRoaXMuc3R5bGUubG9hZGVkKCl9LGkucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24odCl7 cmV0dXJuIHRoaXMuc3R5bGU/KHRoaXMuX3N0eWxlRGlydHk9dGhpcy5fc3R5bGVEaXJ0eXx8 dCx0aGlzLl9zb3VyY2VzRGlydHk9ITAsdGhpcy50cmlnZ2VyUmVwYWludCgpLHRoaXMpOnRo aXN9LGkucHJvdG90eXBlLl9yZXF1ZXN0UmVuZGVyRnJhbWU9ZnVuY3Rpb24odCl7cmV0dXJu IHRoaXMuX3VwZGF0ZSgpLHRoaXMuX3JlbmRlclRhc2tRdWV1ZS5hZGQodCl9LGkucHJvdG90 eXBlLl9jYW5jZWxSZW5kZXJGcmFtZT1mdW5jdGlvbih0KXt0aGlzLl9yZW5kZXJUYXNrUXVl dWUucmVtb3ZlKHQpfSxpLnByb3RvdHlwZS5fcmVuZGVyPWZ1bmN0aW9uKGUpe3ZhciByLG49 dGhpcyxpPTAsYT10aGlzLnBhaW50ZXIuY29udGV4dC5leHRUaW1lclF1ZXJ5O2lmKHRoaXMu bGlzdGVucygiZ3B1LXRpbWluZy1mcmFtZSIpJiYocj1hLmNyZWF0ZVF1ZXJ5RVhUKCksYS5i ZWdpblF1ZXJ5RVhUKGEuVElNRV9FTEFQU0VEX0VYVCxyKSxpPXQuYnJvd3Nlci5ub3coKSks dGhpcy5wYWludGVyLmNvbnRleHQuc2V0RGlydHkoKSx0aGlzLnBhaW50ZXIuc2V0QmFzZVN0 YXRlKCksdGhpcy5fcmVuZGVyVGFza1F1ZXVlLnJ1bihlKSwhdGhpcy5fcmVtb3ZlZCl7dmFy IG89ITE7aWYodGhpcy5zdHlsZSYmdGhpcy5fc3R5bGVEaXJ0eSl7dGhpcy5fc3R5bGVEaXJ0 eT0hMTt2YXIgcz10aGlzLnRyYW5zZm9ybS56b29tLGw9dC5icm93c2VyLm5vdygpO3RoaXMu c3R5bGUuem9vbUhpc3RvcnkudXBkYXRlKHMsbCk7dmFyIGM9bmV3IHQuRXZhbHVhdGlvblBh cmFtZXRlcnMocyx7bm93OmwsZmFkZUR1cmF0aW9uOnRoaXMuX2ZhZGVEdXJhdGlvbix6b29t SGlzdG9yeTp0aGlzLnN0eWxlLnpvb21IaXN0b3J5LHRyYW5zaXRpb246dGhpcy5zdHlsZS5n ZXRUcmFuc2l0aW9uKCl9KSx1PWMuY3Jvc3NGYWRpbmdGYWN0b3IoKTsxPT09dSYmdT09PXRo aXMuX2Nyb3NzRmFkaW5nRmFjdG9yfHwobz0hMCx0aGlzLl9jcm9zc0ZhZGluZ0ZhY3Rvcj11 KSx0aGlzLnN0eWxlLnVwZGF0ZShjKX1pZih0aGlzLnN0eWxlJiZ0aGlzLl9zb3VyY2VzRGly dHkmJih0aGlzLl9zb3VyY2VzRGlydHk9ITEsdGhpcy5zdHlsZS5fdXBkYXRlU291cmNlcyh0 aGlzLnRyYW5zZm9ybSkpLHRoaXMuX3BsYWNlbWVudERpcnR5PXRoaXMuc3R5bGUmJnRoaXMu c3R5bGUuX3VwZGF0ZVBsYWNlbWVudCh0aGlzLnBhaW50ZXIudHJhbnNmb3JtLHRoaXMuc2hv d0NvbGxpc2lvbkJveGVzLHRoaXMuX2ZhZGVEdXJhdGlvbix0aGlzLl9jcm9zc1NvdXJjZUNv bGxpc2lvbnMpLHRoaXMucGFpbnRlci5yZW5kZXIodGhpcy5zdHlsZSx7c2hvd1RpbGVCb3Vu ZGFyaWVzOnRoaXMuc2hvd1RpbGVCb3VuZGFyaWVzLHNob3dPdmVyZHJhd0luc3BlY3Rvcjp0 aGlzLl9zaG93T3ZlcmRyYXdJbnNwZWN0b3Iscm90YXRpbmc6dGhpcy5pc1JvdGF0aW5nKCks em9vbWluZzp0aGlzLmlzWm9vbWluZygpLG1vdmluZzp0aGlzLmlzTW92aW5nKCksZmFkZUR1 cmF0aW9uOnRoaXMuX2ZhZGVEdXJhdGlvbixzaG93UGFkZGluZzp0aGlzLnNob3dQYWRkaW5n LGdwdVRpbWluZzohIXRoaXMubGlzdGVucygiZ3B1LXRpbWluZy1sYXllciIpfSksdGhpcy5m aXJlKG5ldyB0LkV2ZW50KCJyZW5kZXIiKSksdGhpcy5sb2FkZWQoKSYmIXRoaXMuX2xvYWRl ZCYmKHRoaXMuX2xvYWRlZD0hMCx0aGlzLmZpcmUobmV3IHQuRXZlbnQoImxvYWQiKSkpLHRo aXMuc3R5bGUmJih0aGlzLnN0eWxlLmhhc1RyYW5zaXRpb25zKCl8fG8pJiYodGhpcy5fc3R5 bGVEaXJ0eT0hMCksdGhpcy5zdHlsZSYmIXRoaXMuX3BsYWNlbWVudERpcnR5JiZ0aGlzLnN0 eWxlLl9yZWxlYXNlU3ltYm9sRmFkZVRpbGVzKCksdGhpcy5saXN0ZW5zKCJncHUtdGltaW5n LWZyYW1lIikpe3ZhciBmPXQuYnJvd3Nlci5ub3coKS1pO2EuZW5kUXVlcnlFWFQoYS5USU1F X0VMQVBTRURfRVhULHIpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dmFyIGU9YS5nZXRRdWVy eU9iamVjdEVYVChyLGEuUVVFUllfUkVTVUxUX0VYVCkvMWU2O2EuZGVsZXRlUXVlcnlFWFQo ciksbi5maXJlKG5ldyB0LkV2ZW50KCJncHUtdGltaW5nLWZyYW1lIix7Y3B1VGltZTpmLGdw dVRpbWU6ZX0pKX0pLDUwKX1pZih0aGlzLmxpc3RlbnMoImdwdS10aW1pbmctbGF5ZXIiKSl7 dmFyIGg9dGhpcy5wYWludGVyLmNvbGxlY3RHcHVUaW1lcnMoKTtzZXRUaW1lb3V0KChmdW5j dGlvbigpe3ZhciBlPW4ucGFpbnRlci5xdWVyeUdwdVRpbWVycyhoKTtuLmZpcmUobmV3IHQu RXZlbnQoImdwdS10aW1pbmctbGF5ZXIiLHtsYXllclRpbWVzOmV9KSl9KSw1MCl9cmV0dXJu IHRoaXMuX3NvdXJjZXNEaXJ0eXx8dGhpcy5fc3R5bGVEaXJ0eXx8dGhpcy5fcGxhY2VtZW50 RGlydHl8fHRoaXMuX3JlcGFpbnQ/dGhpcy50cmlnZ2VyUmVwYWludCgpOiF0aGlzLmlzTW92 aW5nKCkmJnRoaXMubG9hZGVkKCkmJih0aGlzLl9mdWxseUxvYWRlZHx8KHRoaXMuX2Z1bGx5 TG9hZGVkPSEwKSx0aGlzLmZpcmUobmV3IHQuRXZlbnQoImlkbGUiKSkpLHRoaXN9fSxpLnBy b3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXt0aGlzLl9oYXNoJiZ0aGlzLl9oYXNoLnJlbW92 ZSgpO2Zvcih2YXIgZT0wLHI9dGhpcy5fY29udHJvbHM7ZTxyLmxlbmd0aDtlKz0xKXtyW2Vd Lm9uUmVtb3ZlKHRoaXMpfXRoaXMuX2NvbnRyb2xzPVtdLHRoaXMuX2ZyYW1lJiYodGhpcy5f ZnJhbWUuY2FuY2VsKCksdGhpcy5fZnJhbWU9bnVsbCksdGhpcy5fcmVuZGVyVGFza1F1ZXVl LmNsZWFyKCksdGhpcy5wYWludGVyLmRlc3Ryb3koKSx0aGlzLmhhbmRsZXJzLmRlc3Ryb3ko KSxkZWxldGUgdGhpcy5oYW5kbGVycyx0aGlzLnNldFN0eWxlKG51bGwpLHZvaWQgMCE9PXQu d2luZG93JiYodC53aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLl9v bldpbmRvd1Jlc2l6ZSwhMSksdC53aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigib25saW5l Iix0aGlzLl9vbldpbmRvd09ubGluZSwhMSkpO3ZhciBuPXRoaXMucGFpbnRlci5jb250ZXh0 LmdsLmdldEV4dGVuc2lvbigiV0VCR0xfbG9zZV9jb250ZXh0Iik7biYmbi5sb3NlQ29udGV4 dCgpLExpKHRoaXMuX2NhbnZhc0NvbnRhaW5lciksTGkodGhpcy5fY29udHJvbENvbnRhaW5l ciksTGkodGhpcy5fbWlzc2luZ0NTU0NhbmFyeSksdGhpcy5fY29udGFpbmVyLmNsYXNzTGlz dC5yZW1vdmUoIm1hcGJveGdsLW1hcCIpLHRoaXMuX3JlbW92ZWQ9ITAsdGhpcy5maXJlKG5l dyB0LkV2ZW50KCJyZW1vdmUiKSl9LGkucHJvdG90eXBlLnRyaWdnZXJSZXBhaW50PWZ1bmN0 aW9uKCl7dmFyIGU9dGhpczt0aGlzLnN0eWxlJiYhdGhpcy5fZnJhbWUmJih0aGlzLl9mcmFt ZT10LmJyb3dzZXIuZnJhbWUoKGZ1bmN0aW9uKHQpe2UuX2ZyYW1lPW51bGwsZS5fcmVuZGVy KHQpfSkpKX0saS5wcm90b3R5cGUuX29uV2luZG93T25saW5lPWZ1bmN0aW9uKCl7dGhpcy5f dXBkYXRlKCl9LGkucHJvdG90eXBlLl9vbldpbmRvd1Jlc2l6ZT1mdW5jdGlvbih0KXt0aGlz Ll90cmFja1Jlc2l6ZSYmdGhpcy5yZXNpemUoe29yaWdpbmFsRXZlbnQ6dH0pLl91cGRhdGUo KX0sYS5zaG93VGlsZUJvdW5kYXJpZXMuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9z aG93VGlsZUJvdW5kYXJpZXN9LGEuc2hvd1RpbGVCb3VuZGFyaWVzLnNldD1mdW5jdGlvbih0 KXt0aGlzLl9zaG93VGlsZUJvdW5kYXJpZXMhPT10JiYodGhpcy5fc2hvd1RpbGVCb3VuZGFy aWVzPXQsdGhpcy5fdXBkYXRlKCkpfSxhLnNob3dQYWRkaW5nLmdldD1mdW5jdGlvbigpe3Jl dHVybiEhdGhpcy5fc2hvd1BhZGRpbmd9LGEuc2hvd1BhZGRpbmcuc2V0PWZ1bmN0aW9uKHQp e3RoaXMuX3Nob3dQYWRkaW5nIT09dCYmKHRoaXMuX3Nob3dQYWRkaW5nPXQsdGhpcy5fdXBk YXRlKCkpfSxhLnNob3dDb2xsaXNpb25Cb3hlcy5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4hIXRo aXMuX3Nob3dDb2xsaXNpb25Cb3hlc30sYS5zaG93Q29sbGlzaW9uQm94ZXMuc2V0PWZ1bmN0 aW9uKHQpe3RoaXMuX3Nob3dDb2xsaXNpb25Cb3hlcyE9PXQmJih0aGlzLl9zaG93Q29sbGlz aW9uQm94ZXM9dCx0P3RoaXMuc3R5bGUuX2dlbmVyYXRlQ29sbGlzaW9uQm94ZXMoKTp0aGlz Ll91cGRhdGUoKSl9LGEuc2hvd092ZXJkcmF3SW5zcGVjdG9yLmdldD1mdW5jdGlvbigpe3Jl dHVybiEhdGhpcy5fc2hvd092ZXJkcmF3SW5zcGVjdG9yfSxhLnNob3dPdmVyZHJhd0luc3Bl Y3Rvci5zZXQ9ZnVuY3Rpb24odCl7dGhpcy5fc2hvd092ZXJkcmF3SW5zcGVjdG9yIT09dCYm KHRoaXMuX3Nob3dPdmVyZHJhd0luc3BlY3Rvcj10LHRoaXMuX3VwZGF0ZSgpKX0sYS5yZXBh aW50LmdldD1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5fcmVwYWludH0sYS5yZXBhaW50LnNl dD1mdW5jdGlvbih0KXt0aGlzLl9yZXBhaW50IT09dCYmKHRoaXMuX3JlcGFpbnQ9dCx0aGlz LnRyaWdnZXJSZXBhaW50KCkpfSxhLnZlcnRpY2VzLmdldD1mdW5jdGlvbigpe3JldHVybiEh dGhpcy5fdmVydGljZXN9LGEudmVydGljZXMuc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3ZlcnRp Y2VzPXQsdGhpcy5fdXBkYXRlKCl9LGkucHJvdG90eXBlLl9zZXRDYWNoZUxpbWl0cz1mdW5j dGlvbihlLHIpe3Quc2V0Q2FjaGVMaW1pdHMoZSxyKX0sYS52ZXJzaW9uLmdldD1mdW5jdGlv bigpe3JldHVybiB0LnZlcnNpb259LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGkucHJvdG90 eXBlLGEpLGl9KHhpKTtmdW5jdGlvbiBMaSh0KXt0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9k ZS5yZW1vdmVDaGlsZCh0KX12YXIgQ2k9e3Nob3dDb21wYXNzOiEwLHNob3dab29tOiEwLHZp c3VhbGl6ZVBpdGNoOiExfSxQaT1mdW5jdGlvbihlKXt2YXIgbj10aGlzO3RoaXMub3B0aW9u cz10LmV4dGVuZCh7fSxDaSxlKSx0aGlzLl9jb250YWluZXI9ci5jcmVhdGUoImRpdiIsIm1h cGJveGdsLWN0cmwgbWFwYm94Z2wtY3RybC1ncm91cCIpLHRoaXMuX2NvbnRhaW5lci5hZGRF dmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsKGZ1bmN0aW9uKHQpe3JldHVybiB0LnByZXZl bnREZWZhdWx0KCl9KSksdGhpcy5vcHRpb25zLnNob3dab29tJiYodC5iaW5kQWxsKFsiX3Nl dEJ1dHRvblRpdGxlIiwiX3VwZGF0ZVpvb21CdXR0b25zIl0sdGhpcyksdGhpcy5fem9vbUlu QnV0dG9uPXRoaXMuX2NyZWF0ZUJ1dHRvbigibWFwYm94Z2wtY3RybC16b29tLWluIiwoZnVu Y3Rpb24odCl7cmV0dXJuIG4uX21hcC56b29tSW4oe30se29yaWdpbmFsRXZlbnQ6dH0pfSkp LHIuY3JlYXRlKCJzcGFuIiwibWFwYm94Z2wtY3RybC1pY29uIix0aGlzLl96b29tSW5CdXR0 b24pLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCEwKSx0aGlzLl96b29tT3V0QnV0dG9u PXRoaXMuX2NyZWF0ZUJ1dHRvbigibWFwYm94Z2wtY3RybC16b29tLW91dCIsKGZ1bmN0aW9u KHQpe3JldHVybiBuLl9tYXAuem9vbU91dCh7fSx7b3JpZ2luYWxFdmVudDp0fSl9KSksci5j cmVhdGUoInNwYW4iLCJtYXBib3hnbC1jdHJsLWljb24iLHRoaXMuX3pvb21PdXRCdXR0b24p LnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCEwKSksdGhpcy5vcHRpb25zLnNob3dDb21w YXNzJiYodC5iaW5kQWxsKFsiX3JvdGF0ZUNvbXBhc3NBcnJvdyJdLHRoaXMpLHRoaXMuX2Nv bXBhc3M9dGhpcy5fY3JlYXRlQnV0dG9uKCJtYXBib3hnbC1jdHJsLWNvbXBhc3MiLChmdW5j dGlvbih0KXtuLm9wdGlvbnMudmlzdWFsaXplUGl0Y2g/bi5fbWFwLnJlc2V0Tm9ydGhQaXRj aCh7fSx7b3JpZ2luYWxFdmVudDp0fSk6bi5fbWFwLnJlc2V0Tm9ydGgoe30se29yaWdpbmFs RXZlbnQ6dH0pfSkpLHRoaXMuX2NvbXBhc3NJY29uPXIuY3JlYXRlKCJzcGFuIiwibWFwYm94 Z2wtY3RybC1pY29uIix0aGlzLl9jb21wYXNzKSx0aGlzLl9jb21wYXNzSWNvbi5zZXRBdHRy aWJ1dGUoImFyaWEtaGlkZGVuIiwhMCkpfTtQaS5wcm90b3R5cGUuX3VwZGF0ZVpvb21CdXR0 b25zPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwLmdldFpvb20oKTt0aGlzLl96b29tSW5C dXR0b24uZGlzYWJsZWQ9dD09PXRoaXMuX21hcC5nZXRNYXhab29tKCksdGhpcy5fem9vbU91 dEJ1dHRvbi5kaXNhYmxlZD10PT09dGhpcy5fbWFwLmdldE1pblpvb20oKX0sUGkucHJvdG90 eXBlLl9yb3RhdGVDb21wYXNzQXJyb3c9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMu dmlzdWFsaXplUGl0Y2g/InNjYWxlKCIrMS9NYXRoLnBvdyhNYXRoLmNvcyh0aGlzLl9tYXAu dHJhbnNmb3JtLnBpdGNoKihNYXRoLlBJLzE4MCkpLC41KSsiKSByb3RhdGVYKCIrdGhpcy5f bWFwLnRyYW5zZm9ybS5waXRjaCsiZGVnKSByb3RhdGVaKCIrdGhpcy5fbWFwLnRyYW5zZm9y bS5hbmdsZSooMTgwL01hdGguUEkpKyJkZWcpIjoicm90YXRlKCIrdGhpcy5fbWFwLnRyYW5z Zm9ybS5hbmdsZSooMTgwL01hdGguUEkpKyJkZWcpIjt0aGlzLl9jb21wYXNzSWNvbi5zdHls ZS50cmFuc2Zvcm09dH0sUGkucHJvdG90eXBlLm9uQWRkPWZ1bmN0aW9uKHQpe3JldHVybiB0 aGlzLl9tYXA9dCx0aGlzLm9wdGlvbnMuc2hvd1pvb20mJih0aGlzLl9zZXRCdXR0b25UaXRs ZSh0aGlzLl96b29tSW5CdXR0b24sIlpvb21JbiIpLHRoaXMuX3NldEJ1dHRvblRpdGxlKHRo aXMuX3pvb21PdXRCdXR0b24sIlpvb21PdXQiKSx0aGlzLl9tYXAub24oInpvb20iLHRoaXMu X3VwZGF0ZVpvb21CdXR0b25zKSx0aGlzLl91cGRhdGVab29tQnV0dG9ucygpKSx0aGlzLm9w dGlvbnMuc2hvd0NvbXBhc3MmJih0aGlzLl9zZXRCdXR0b25UaXRsZSh0aGlzLl9jb21wYXNz LCJSZXNldEJlYXJpbmciKSx0aGlzLm9wdGlvbnMudmlzdWFsaXplUGl0Y2gmJnRoaXMuX21h cC5vbigicGl0Y2giLHRoaXMuX3JvdGF0ZUNvbXBhc3NBcnJvdyksdGhpcy5fbWFwLm9uKCJy b3RhdGUiLHRoaXMuX3JvdGF0ZUNvbXBhc3NBcnJvdyksdGhpcy5fcm90YXRlQ29tcGFzc0Fy cm93KCksdGhpcy5faGFuZGxlcj1uZXcgSWkodGhpcy5fbWFwLHRoaXMuX2NvbXBhc3MsdGhp cy5vcHRpb25zLnZpc3VhbGl6ZVBpdGNoKSksdGhpcy5fY29udGFpbmVyfSxQaS5wcm90b3R5 cGUub25SZW1vdmU9ZnVuY3Rpb24oKXtyLnJlbW92ZSh0aGlzLl9jb250YWluZXIpLHRoaXMu b3B0aW9ucy5zaG93Wm9vbSYmdGhpcy5fbWFwLm9mZigiem9vbSIsdGhpcy5fdXBkYXRlWm9v bUJ1dHRvbnMpLHRoaXMub3B0aW9ucy5zaG93Q29tcGFzcyYmKHRoaXMub3B0aW9ucy52aXN1 YWxpemVQaXRjaCYmdGhpcy5fbWFwLm9mZigicGl0Y2giLHRoaXMuX3JvdGF0ZUNvbXBhc3NB cnJvdyksdGhpcy5fbWFwLm9mZigicm90YXRlIix0aGlzLl9yb3RhdGVDb21wYXNzQXJyb3cp LHRoaXMuX2hhbmRsZXIub2ZmKCksZGVsZXRlIHRoaXMuX2hhbmRsZXIpLGRlbGV0ZSB0aGlz Ll9tYXB9LFBpLnByb3RvdHlwZS5fY3JlYXRlQnV0dG9uPWZ1bmN0aW9uKHQsZSl7dmFyIG49 ci5jcmVhdGUoImJ1dHRvbiIsdCx0aGlzLl9jb250YWluZXIpO3JldHVybiBuLnR5cGU9ImJ1 dHRvbiIsbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZSksbn0sUGkucHJvdG90eXBlLl9z ZXRCdXR0b25UaXRsZT1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX21hcC5fZ2V0VUlTdHJp bmcoIk5hdmlnYXRpb25Db250cm9sLiIrZSk7dC50aXRsZT1yLHQuc2V0QXR0cmlidXRlKCJh cmlhLWxhYmVsIixyKX07dmFyIElpPWZ1bmN0aW9uKGUsbixpKXt2b2lkIDA9PT1pJiYoaT0h MSksdGhpcy5fY2xpY2tUb2xlcmFuY2U9MTAsdGhpcy5lbGVtZW50PW4sdGhpcy5tb3VzZVJv dGF0ZT1uZXcgWG4oe2NsaWNrVG9sZXJhbmNlOmUuZHJhZ1JvdGF0ZS5fbW91c2VSb3RhdGUu X2NsaWNrVG9sZXJhbmNlfSksdGhpcy5tYXA9ZSxpJiYodGhpcy5tb3VzZVBpdGNoPW5ldyBa bih7Y2xpY2tUb2xlcmFuY2U6ZS5kcmFnUm90YXRlLl9tb3VzZVBpdGNoLl9jbGlja1RvbGVy YW5jZX0pKSx0LmJpbmRBbGwoWyJtb3VzZWRvd24iLCJtb3VzZW1vdmUiLCJtb3VzZXVwIiwi dG91Y2hzdGFydCIsInRvdWNobW92ZSIsInRvdWNoZW5kIiwicmVzZXQiXSx0aGlzKSxyLmFk ZEV2ZW50TGlzdGVuZXIobiwibW91c2Vkb3duIix0aGlzLm1vdXNlZG93biksci5hZGRFdmVu dExpc3RlbmVyKG4sInRvdWNoc3RhcnQiLHRoaXMudG91Y2hzdGFydCx7cGFzc2l2ZTohMX0p LHIuYWRkRXZlbnRMaXN0ZW5lcihuLCJ0b3VjaG1vdmUiLHRoaXMudG91Y2htb3ZlKSxyLmFk ZEV2ZW50TGlzdGVuZXIobiwidG91Y2hlbmQiLHRoaXMudG91Y2hlbmQpLHIuYWRkRXZlbnRM aXN0ZW5lcihuLCJ0b3VjaGNhbmNlbCIsdGhpcy5yZXNldCl9O2Z1bmN0aW9uIE9pKGUscixu KXtpZihlPW5ldyB0LkxuZ0xhdChlLmxuZyxlLmxhdCkscil7dmFyIGk9bmV3IHQuTG5nTGF0 KGUubG5nLTM2MCxlLmxhdCksYT1uZXcgdC5MbmdMYXQoZS5sbmcrMzYwLGUubGF0KSxvPW4u bG9jYXRpb25Qb2ludChlKS5kaXN0U3FyKHIpO24ubG9jYXRpb25Qb2ludChpKS5kaXN0U3Fy KHIpPG8/ZT1pOm4ubG9jYXRpb25Qb2ludChhKS5kaXN0U3FyKHIpPG8mJihlPWEpfWZvcig7 TWF0aC5hYnMoZS5sbmctbi5jZW50ZXIubG5nKT4xODA7KXt2YXIgcz1uLmxvY2F0aW9uUG9p bnQoZSk7aWYocy54Pj0wJiZzLnk+PTAmJnMueDw9bi53aWR0aCYmcy55PD1uLmhlaWdodCli cmVhaztlLmxuZz5uLmNlbnRlci5sbmc/ZS5sbmctPTM2MDplLmxuZys9MzYwfXJldHVybiBl fUlpLnByb3RvdHlwZS5kb3duPWZ1bmN0aW9uKHQsZSl7dGhpcy5tb3VzZVJvdGF0ZS5tb3Vz ZWRvd24odCxlKSx0aGlzLm1vdXNlUGl0Y2gmJnRoaXMubW91c2VQaXRjaC5tb3VzZWRvd24o dCxlKSxyLmRpc2FibGVEcmFnKCl9LElpLnByb3RvdHlwZS5tb3ZlPWZ1bmN0aW9uKHQsZSl7 dmFyIHI9dGhpcy5tYXAsbj10aGlzLm1vdXNlUm90YXRlLm1vdXNlbW92ZVdpbmRvdyh0LGUp O2lmKG4mJm4uYmVhcmluZ0RlbHRhJiZyLnNldEJlYXJpbmcoci5nZXRCZWFyaW5nKCkrbi5i ZWFyaW5nRGVsdGEpLHRoaXMubW91c2VQaXRjaCl7dmFyIGk9dGhpcy5tb3VzZVBpdGNoLm1v dXNlbW92ZVdpbmRvdyh0LGUpO2kmJmkucGl0Y2hEZWx0YSYmci5zZXRQaXRjaChyLmdldFBp dGNoKCkraS5waXRjaERlbHRhKX19LElpLnByb3RvdHlwZS5vZmY9ZnVuY3Rpb24oKXt2YXIg dD10aGlzLmVsZW1lbnQ7ci5yZW1vdmVFdmVudExpc3RlbmVyKHQsIm1vdXNlZG93biIsdGhp cy5tb3VzZWRvd24pLHIucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LCJ0b3VjaHN0YXJ0Iix0aGlz LnRvdWNoc3RhcnQse3Bhc3NpdmU6ITF9KSxyLnJlbW92ZUV2ZW50TGlzdGVuZXIodCwidG91 Y2htb3ZlIix0aGlzLnRvdWNobW92ZSksci5yZW1vdmVFdmVudExpc3RlbmVyKHQsInRvdWNo ZW5kIix0aGlzLnRvdWNoZW5kKSxyLnJlbW92ZUV2ZW50TGlzdGVuZXIodCwidG91Y2hjYW5j ZWwiLHRoaXMucmVzZXQpLHRoaXMub2ZmVGVtcCgpfSxJaS5wcm90b3R5cGUub2ZmVGVtcD1m dW5jdGlvbigpe3IuZW5hYmxlRHJhZygpLHIucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LndpbmRv dywibW91c2Vtb3ZlIix0aGlzLm1vdXNlbW92ZSksci5yZW1vdmVFdmVudExpc3RlbmVyKHQu d2luZG93LCJtb3VzZXVwIix0aGlzLm1vdXNldXApfSxJaS5wcm90b3R5cGUubW91c2Vkb3du PWZ1bmN0aW9uKGUpe3RoaXMuZG93bih0LmV4dGVuZCh7fSxlLHtjdHJsS2V5OiEwLHByZXZl bnREZWZhdWx0OmZ1bmN0aW9uKCl7cmV0dXJuIGUucHJldmVudERlZmF1bHQoKX19KSxyLm1v dXNlUG9zKHRoaXMuZWxlbWVudCxlKSksci5hZGRFdmVudExpc3RlbmVyKHQud2luZG93LCJt b3VzZW1vdmUiLHRoaXMubW91c2Vtb3ZlKSxyLmFkZEV2ZW50TGlzdGVuZXIodC53aW5kb3cs Im1vdXNldXAiLHRoaXMubW91c2V1cCl9LElpLnByb3RvdHlwZS5tb3VzZW1vdmU9ZnVuY3Rp b24odCl7dGhpcy5tb3ZlKHQsci5tb3VzZVBvcyh0aGlzLmVsZW1lbnQsdCkpfSxJaS5wcm90 b3R5cGUubW91c2V1cD1mdW5jdGlvbih0KXt0aGlzLm1vdXNlUm90YXRlLm1vdXNldXBXaW5k b3codCksdGhpcy5tb3VzZVBpdGNoJiZ0aGlzLm1vdXNlUGl0Y2gubW91c2V1cFdpbmRvdyh0 KSx0aGlzLm9mZlRlbXAoKX0sSWkucHJvdG90eXBlLnRvdWNoc3RhcnQ9ZnVuY3Rpb24odCl7 MSE9PXQudGFyZ2V0VG91Y2hlcy5sZW5ndGg/dGhpcy5yZXNldCgpOih0aGlzLl9zdGFydFBv cz10aGlzLl9sYXN0UG9zPXIudG91Y2hQb3ModGhpcy5lbGVtZW50LHQudGFyZ2V0VG91Y2hl cylbMF0sdGhpcy5kb3duKHt0eXBlOiJtb3VzZWRvd24iLGJ1dHRvbjowLGN0cmxLZXk6ITAs cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdC5wcmV2ZW50RGVmYXVsdCgpfX0s dGhpcy5fc3RhcnRQb3MpKX0sSWkucHJvdG90eXBlLnRvdWNobW92ZT1mdW5jdGlvbih0KXsx IT09dC50YXJnZXRUb3VjaGVzLmxlbmd0aD90aGlzLnJlc2V0KCk6KHRoaXMuX2xhc3RQb3M9 ci50b3VjaFBvcyh0aGlzLmVsZW1lbnQsdC50YXJnZXRUb3VjaGVzKVswXSx0aGlzLm1vdmUo e3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7cmV0dXJuIHQucHJldmVudERlZmF1bHQoKX19 LHRoaXMuX2xhc3RQb3MpKX0sSWkucHJvdG90eXBlLnRvdWNoZW5kPWZ1bmN0aW9uKHQpezA9 PT10LnRhcmdldFRvdWNoZXMubGVuZ3RoJiZ0aGlzLl9zdGFydFBvcyYmdGhpcy5fbGFzdFBv cyYmdGhpcy5fc3RhcnRQb3MuZGlzdCh0aGlzLl9sYXN0UG9zKTx0aGlzLl9jbGlja1RvbGVy YW5jZSYmdGhpcy5lbGVtZW50LmNsaWNrKCksdGhpcy5yZXNldCgpfSxJaS5wcm90b3R5cGUu cmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLm1vdXNlUm90YXRlLnJlc2V0KCksdGhpcy5tb3VzZVBp dGNoJiZ0aGlzLm1vdXNlUGl0Y2gucmVzZXQoKSxkZWxldGUgdGhpcy5fc3RhcnRQb3MsZGVs ZXRlIHRoaXMuX2xhc3RQb3MsdGhpcy5vZmZUZW1wKCl9O3ZhciB6aT17Y2VudGVyOiJ0cmFu c2xhdGUoLTUwJSwtNTAlKSIsdG9wOiJ0cmFuc2xhdGUoLTUwJSwwKSIsInRvcC1sZWZ0Ijoi dHJhbnNsYXRlKDAsMCkiLCJ0b3AtcmlnaHQiOiJ0cmFuc2xhdGUoLTEwMCUsMCkiLGJvdHRv bToidHJhbnNsYXRlKC01MCUsLTEwMCUpIiwiYm90dG9tLWxlZnQiOiJ0cmFuc2xhdGUoMCwt MTAwJSkiLCJib3R0b20tcmlnaHQiOiJ0cmFuc2xhdGUoLTEwMCUsLTEwMCUpIixsZWZ0OiJ0 cmFuc2xhdGUoMCwtNTAlKSIscmlnaHQ6InRyYW5zbGF0ZSgtMTAwJSwtNTAlKSJ9O2Z1bmN0 aW9uIERpKHQsZSxyKXt2YXIgbj10LmNsYXNzTGlzdDtmb3IodmFyIGkgaW4gemkpbi5yZW1v dmUoIm1hcGJveGdsLSIrcisiLWFuY2hvci0iK2kpO24uYWRkKCJtYXBib3hnbC0iK3IrIi1h bmNob3ItIitlKX12YXIgUmksRmk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbihuLGkpe3ZhciBh PXRoaXM7aWYoZS5jYWxsKHRoaXMpLChuIGluc3RhbmNlb2YgdC53aW5kb3cuSFRNTEVsZW1l bnR8fGkpJiYobj10LmV4dGVuZCh7ZWxlbWVudDpufSxpKSksdC5iaW5kQWxsKFsiX3VwZGF0 ZSIsIl9vbk1vdmUiLCJfb25VcCIsIl9hZGREcmFnSGFuZGxlciIsIl9vbk1hcENsaWNrIiwi X29uS2V5UHJlc3MiXSx0aGlzKSx0aGlzLl9hbmNob3I9biYmbi5hbmNob3J8fCJjZW50ZXIi LHRoaXMuX2NvbG9yPW4mJm4uY29sb3J8fCIjM0ZCMUNFIix0aGlzLl9kcmFnZ2FibGU9biYm bi5kcmFnZ2FibGV8fCExLHRoaXMuX3N0YXRlPSJpbmFjdGl2ZSIsdGhpcy5fcm90YXRpb249 biYmbi5yb3RhdGlvbnx8MCx0aGlzLl9yb3RhdGlvbkFsaWdubWVudD1uJiZuLnJvdGF0aW9u QWxpZ25tZW50fHwiYXV0byIsdGhpcy5fcGl0Y2hBbGlnbm1lbnQ9biYmbi5waXRjaEFsaWdu bWVudCYmImF1dG8iIT09bi5waXRjaEFsaWdubWVudD9uLnBpdGNoQWxpZ25tZW50OnRoaXMu X3JvdGF0aW9uQWxpZ25tZW50LG4mJm4uZWxlbWVudCl0aGlzLl9lbGVtZW50PW4uZWxlbWVu dCx0aGlzLl9vZmZzZXQ9dC5Qb2ludC5jb252ZXJ0KG4mJm4ub2Zmc2V0fHxbMCwwXSk7ZWxz ZXt0aGlzLl9kZWZhdWx0TWFya2VyPSEwLHRoaXMuX2VsZW1lbnQ9ci5jcmVhdGUoImRpdiIp LHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwiTWFwIG1hcmtlciIp O3ZhciBvPXIuY3JlYXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwic3ZnIik7 by5zZXRBdHRyaWJ1dGVOUyhudWxsLCJkaXNwbGF5IiwiYmxvY2siKSxvLnNldEF0dHJpYnV0 ZU5TKG51bGwsImhlaWdodCIsIjQxcHgiKSxvLnNldEF0dHJpYnV0ZU5TKG51bGwsIndpZHRo IiwiMjdweCIpLG8uc2V0QXR0cmlidXRlTlMobnVsbCwidmlld0JveCIsIjAgMCAyNyA0MSIp O3ZhciBzPXIuY3JlYXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpO3Mu c2V0QXR0cmlidXRlTlMobnVsbCwic3Ryb2tlIiwibm9uZSIpLHMuc2V0QXR0cmlidXRlTlMo bnVsbCwic3Ryb2tlLXdpZHRoIiwiMSIpLHMuc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIs Im5vbmUiKSxzLnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwtcnVsZSIsImV2ZW5vZGQiKTt2 YXIgbD1yLmNyZWF0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKTtsLnNl dEF0dHJpYnV0ZU5TKG51bGwsImZpbGwtcnVsZSIsIm5vbnplcm8iKTt2YXIgYz1yLmNyZWF0 ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKTtjLnNldEF0dHJpYnV0ZU5T KG51bGwsInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgzLjAsIDI5LjApIiksYy5zZXRBdHRyaWJ1 dGVOUyhudWxsLCJmaWxsIiwiIzAwMDAwMCIpO2Zvcih2YXIgdT0wLGY9W3tyeDoiMTAuNSIs cnk6IjUuMjUwMDIyNzMifSx7cng6IjEwLjUiLHJ5OiI1LjI1MDAyMjczIn0se3J4OiI5LjUi LHJ5OiI0Ljc3Mjc1MDA3In0se3J4OiI4LjUiLHJ5OiI0LjI5NTQ5OTM2In0se3J4OiI3LjUi LHJ5OiIzLjgxODIyMzA4In0se3J4OiI2LjUiLHJ5OiIzLjM0MDk0Njc5In0se3J4OiI1LjUi LHJ5OiIyLjg2MzY3MDUxIn0se3J4OiI0LjUiLHJ5OiIyLjM4NjM2ODY0In1dO3U8Zi5sZW5n dGg7dSs9MSl7dmFyIGg9Zlt1XSxwPXIuY3JlYXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIw MDAvc3ZnIiwiZWxsaXBzZSIpO3Auc2V0QXR0cmlidXRlTlMobnVsbCwib3BhY2l0eSIsIjAu MDQiKSxwLnNldEF0dHJpYnV0ZU5TKG51bGwsImN4IiwiMTAuNSIpLHAuc2V0QXR0cmlidXRl TlMobnVsbCwiY3kiLCI1LjgwMDI5MDA4IikscC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJyeCIs aC5yeCkscC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJyeSIsaC5yeSksYy5hcHBlbmRDaGlsZChw KX12YXIgZD1yLmNyZWF0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKTtk LnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLHRoaXMuX2NvbG9yKTt2YXIgbT1yLmNyZWF0 ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInBhdGgiKTttLnNldEF0dHJpYnV0 ZU5TKG51bGwsImQiLCJNMjcsMTMuNSBDMjcsMTkuMDc0NjQ0IDIwLjI1MDAwMSwyNy4wMDAw MDIgMTQuNzUsMzQuNTAwMDAyIEMxNC4wMTY2NjUsMzUuNTAwMDA0IDEyLjk4MzMzNSwzNS41 MDAwMDQgMTIuMjUsMzQuNTAwMDAyIEM2Ljc0OTk5OTMsMjcuMDAwMDAyIDAsMTkuMjIyNTYy IDAsMTMuNSBDMCw2LjA0NDE1NTkgNi4wNDQxNTU5LDAgMTMuNSwwIEMyMC45NTU4NDQsMCAy Nyw2LjA0NDE1NTkgMjcsMTMuNSBaIiksZC5hcHBlbmRDaGlsZChtKTt2YXIgZz1yLmNyZWF0 ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKTtnLnNldEF0dHJpYnV0ZU5T KG51bGwsIm9wYWNpdHkiLCIwLjI1IiksZy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIiwi IzAwMDAwMCIpO3ZhciB2PXIuY3JlYXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn IiwicGF0aCIpO3Yuc2V0QXR0cmlidXRlTlMobnVsbCwiZCIsIk0xMy41LDAgQzYuMDQ0MTU1 OSwwIDAsNi4wNDQxNTU5IDAsMTMuNSBDMCwxOS4yMjI1NjIgNi43NDk5OTkzLDI3IDEyLjI1 LDM0LjUgQzEzLDM1LjUyMjcyNyAxNC4wMTY2NjQsMzUuNTAwMDA0IDE0Ljc1LDM0LjUgQzIw LjI1MDAwMSwyNyAyNywxOS4wNzQ2NDQgMjcsMTMuNSBDMjcsNi4wNDQxNTU5IDIwLjk1NTg0 NCwwIDEzLjUsMCBaIE0xMy41LDEgQzIwLjQxNTQwNCwxIDI2LDYuNTg0NTk2IDI2LDEzLjUg QzI2LDE1Ljg5ODY1NyAyNC40OTU1ODQsMTkuMTgxNDMxIDIyLjIyMDcwMywyMi43MzgyODEg QzE5Ljk0NTgyMywyNi4yOTUxMzIgMTYuNzA1MTE5LDMwLjE0MjE2NyAxMy45NDMzNTksMzMu OTA4MjAzIEMxMy43NDM0NDUsMzQuMTgwODE0IDEzLjYxMjcxNSwzNC4zMjI3MzggMTMuNSwz NC40NDE0MDYgQzEzLjM4NzI4NSwzNC4zMjI3MzggMTMuMjU2NTU1LDM0LjE4MDgxNCAxMy4w NTY2NDEsMzMuOTA4MjAzIEMxMC4yODQ0ODEsMzAuMTI3OTg1IDcuNDE0ODY4NCwyNi4zMTQx NTkgNS4wMTU2MjUsMjIuNzczNDM4IEMyLjYxNjM4MTYsMTkuMjMyNzE1IDEsMTUuOTUzNTM4 IDEsMTMuNSBDMSw2LjU4NDU5NiA2LjU4NDU5NiwxIDEzLjUsMSBaIiksZy5hcHBlbmRDaGls ZCh2KTt2YXIgeT1yLmNyZWF0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImci KTt5LnNldEF0dHJpYnV0ZU5TKG51bGwsInRyYW5zZm9ybSIsInRyYW5zbGF0ZSg2LjAsIDcu MCkiKSx5LnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLCIjRkZGRkZGIik7dmFyIHg9ci5j cmVhdGVOUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJnIik7eC5zZXRBdHRyaWJ1 dGVOUyhudWxsLCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoOC4wLCA4LjApIik7dmFyIGI9ci5j cmVhdGVOUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJjaXJjbGUiKTtiLnNldEF0 dHJpYnV0ZU5TKG51bGwsImZpbGwiLCIjMDAwMDAwIiksYi5zZXRBdHRyaWJ1dGVOUyhudWxs LCJvcGFjaXR5IiwiMC4yNSIpLGIuc2V0QXR0cmlidXRlTlMobnVsbCwiY3giLCI1LjUiKSxi LnNldEF0dHJpYnV0ZU5TKG51bGwsImN5IiwiNS41IiksYi5zZXRBdHRyaWJ1dGVOUyhudWxs LCJyIiwiNS40OTk5OTYyIik7dmFyIF89ci5jcmVhdGVOUygiaHR0cDovL3d3dy53My5vcmcv MjAwMC9zdmciLCJjaXJjbGUiKTtfLnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLCIjRkZG RkZGIiksXy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJjeCIsIjUuNSIpLF8uc2V0QXR0cmlidXRl TlMobnVsbCwiY3kiLCI1LjUiKSxfLnNldEF0dHJpYnV0ZU5TKG51bGwsInIiLCI1LjQ5OTk5 NjIiKSx4LmFwcGVuZENoaWxkKGIpLHguYXBwZW5kQ2hpbGQoXyksbC5hcHBlbmRDaGlsZChj KSxsLmFwcGVuZENoaWxkKGQpLGwuYXBwZW5kQ2hpbGQoZyksbC5hcHBlbmRDaGlsZCh5KSxs LmFwcGVuZENoaWxkKHgpLG8uYXBwZW5kQ2hpbGQobCksdGhpcy5fZWxlbWVudC5hcHBlbmRD aGlsZChvKSx0aGlzLl9vZmZzZXQ9dC5Qb2ludC5jb252ZXJ0KG4mJm4ub2Zmc2V0fHxbMCwt MTRdKX10aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoIm1hcGJveGdsLW1hcmtlciIpLHRo aXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IiwoZnVuY3Rpb24odCl7 dC5wcmV2ZW50RGVmYXVsdCgpfSkpLHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi bW91c2Vkb3duIiwoZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpfSkpLHRoaXMuX2Vs ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLChmdW5jdGlvbigpe3ZhciB0PWEuX21h cC5nZXRDb250YWluZXIoKTt0LnNjcm9sbFRvcD0wLHQuc2Nyb2xsTGVmdD0wfSkpLERpKHRo aXMuX2VsZW1lbnQsdGhpcy5fYW5jaG9yLCJtYXJrZXIiKSx0aGlzLl9wb3B1cD1udWxsfXJl dHVybiBlJiYobi5fX3Byb3RvX189ZSksbi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZl LnByb3RvdHlwZSksbi5wcm90b3R5cGUuY29uc3RydWN0b3I9bixuLnByb3RvdHlwZS5hZGRU bz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZW1vdmUoKSx0aGlzLl9tYXA9dCx0LmdldENh bnZhc0NvbnRhaW5lcigpLmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnQpLHQub24oIm1vdmUi LHRoaXMuX3VwZGF0ZSksdC5vbigibW92ZWVuZCIsdGhpcy5fdXBkYXRlKSx0aGlzLnNldERy YWdnYWJsZSh0aGlzLl9kcmFnZ2FibGUpLHRoaXMuX3VwZGF0ZSgpLHRoaXMuX21hcC5vbigi Y2xpY2siLHRoaXMuX29uTWFwQ2xpY2spLHRoaXN9LG4ucHJvdG90eXBlLnJlbW92ZT1mdW5j dGlvbigpe3JldHVybiB0aGlzLl9tYXAmJih0aGlzLl9tYXAub2ZmKCJjbGljayIsdGhpcy5f b25NYXBDbGljayksdGhpcy5fbWFwLm9mZigibW92ZSIsdGhpcy5fdXBkYXRlKSx0aGlzLl9t YXAub2ZmKCJtb3ZlZW5kIix0aGlzLl91cGRhdGUpLHRoaXMuX21hcC5vZmYoIm1vdXNlZG93 biIsdGhpcy5fYWRkRHJhZ0hhbmRsZXIpLHRoaXMuX21hcC5vZmYoInRvdWNoc3RhcnQiLHRo aXMuX2FkZERyYWdIYW5kbGVyKSx0aGlzLl9tYXAub2ZmKCJtb3VzZXVwIix0aGlzLl9vblVw KSx0aGlzLl9tYXAub2ZmKCJ0b3VjaGVuZCIsdGhpcy5fb25VcCksdGhpcy5fbWFwLm9mZigi bW91c2Vtb3ZlIix0aGlzLl9vbk1vdmUpLHRoaXMuX21hcC5vZmYoInRvdWNobW92ZSIsdGhp cy5fb25Nb3ZlKSxkZWxldGUgdGhpcy5fbWFwKSxyLnJlbW92ZSh0aGlzLl9lbGVtZW50KSx0 aGlzLl9wb3B1cCYmdGhpcy5fcG9wdXAucmVtb3ZlKCksdGhpc30sbi5wcm90b3R5cGUuZ2V0 TG5nTGF0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xuZ0xhdH0sbi5wcm90b3R5cGUuc2V0 TG5nTGF0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9sbmdMYXQ9dC5MbmdMYXQuY29udmVy dChlKSx0aGlzLl9wb3M9bnVsbCx0aGlzLl9wb3B1cCYmdGhpcy5fcG9wdXAuc2V0TG5nTGF0 KHRoaXMuX2xuZ0xhdCksdGhpcy5fdXBkYXRlKCksdGhpc30sbi5wcm90b3R5cGUuZ2V0RWxl bWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGVtZW50fSxuLnByb3RvdHlwZS5zZXRQ b3B1cD1mdW5jdGlvbih0KXtpZih0aGlzLl9wb3B1cCYmKHRoaXMuX3BvcHVwLnJlbW92ZSgp LHRoaXMuX3BvcHVwPW51bGwsdGhpcy5fZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJr ZXlwcmVzcyIsdGhpcy5fb25LZXlQcmVzcyksdGhpcy5fb3JpZ2luYWxUYWJJbmRleHx8dGhp cy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoInRhYmluZGV4IikpLHQpe2lmKCEoIm9mZnNl dCJpbiB0Lm9wdGlvbnMpKXt2YXIgZT1NYXRoLnNxcnQoTWF0aC5wb3coMTMuNSwyKS8yKTt0 Lm9wdGlvbnMub2Zmc2V0PXRoaXMuX2RlZmF1bHRNYXJrZXI/e3RvcDpbMCwwXSwidG9wLWxl ZnQiOlswLDBdLCJ0b3AtcmlnaHQiOlswLDBdLGJvdHRvbTpbMCwtMzguMV0sImJvdHRvbS1s ZWZ0IjpbZSwtMSooMjQuNitlKV0sImJvdHRvbS1yaWdodCI6Wy1lLC0xKigyNC42K2UpXSxs ZWZ0OlsxMy41LC0yNC42XSxyaWdodDpbLTEzLjUsLTI0LjZdfTp0aGlzLl9vZmZzZXR9dGhp cy5fcG9wdXA9dCx0aGlzLl9sbmdMYXQmJnRoaXMuX3BvcHVwLnNldExuZ0xhdCh0aGlzLl9s bmdMYXQpLHRoaXMuX29yaWdpbmFsVGFiSW5kZXg9dGhpcy5fZWxlbWVudC5nZXRBdHRyaWJ1 dGUoInRhYmluZGV4IiksdGhpcy5fb3JpZ2luYWxUYWJJbmRleHx8dGhpcy5fZWxlbWVudC5z ZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiMCIpLHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0 ZW5lcigia2V5cHJlc3MiLHRoaXMuX29uS2V5UHJlc3MpfXJldHVybiB0aGlzfSxuLnByb3Rv dHlwZS5fb25LZXlQcmVzcz1mdW5jdGlvbih0KXt2YXIgZT10LmNvZGUscj10LmNoYXJDb2Rl fHx0LmtleUNvZGU7IlNwYWNlIiE9PWUmJiJFbnRlciIhPT1lJiYzMiE9PXImJjEzIT09cnx8 dGhpcy50b2dnbGVQb3B1cCgpfSxuLnByb3RvdHlwZS5fb25NYXBDbGljaz1mdW5jdGlvbih0 KXt2YXIgZT10Lm9yaWdpbmFsRXZlbnQudGFyZ2V0LHI9dGhpcy5fZWxlbWVudDt0aGlzLl9w b3B1cCYmKGU9PT1yfHxyLmNvbnRhaW5zKGUpKSYmdGhpcy50b2dnbGVQb3B1cCgpfSxuLnBy b3RvdHlwZS5nZXRQb3B1cD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3B1cH0sbi5wcm90 b3R5cGUudG9nZ2xlUG9wdXA9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9wb3B1cDtyZXR1cm4g dD8odC5pc09wZW4oKT90LnJlbW92ZSgpOnQuYWRkVG8odGhpcy5fbWFwKSx0aGlzKTp0aGlz fSxuLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHQpe2lmKHRoaXMuX21hcCl7dGhpcy5f bWFwLnRyYW5zZm9ybS5yZW5kZXJXb3JsZENvcGllcyYmKHRoaXMuX2xuZ0xhdD1PaSh0aGlz Ll9sbmdMYXQsdGhpcy5fcG9zLHRoaXMuX21hcC50cmFuc2Zvcm0pKSx0aGlzLl9wb3M9dGhp cy5fbWFwLnByb2plY3QodGhpcy5fbG5nTGF0KS5fYWRkKHRoaXMuX29mZnNldCk7dmFyIGU9 IiI7InZpZXdwb3J0Ij09PXRoaXMuX3JvdGF0aW9uQWxpZ25tZW50fHwiYXV0byI9PT10aGlz Ll9yb3RhdGlvbkFsaWdubWVudD9lPSJyb3RhdGVaKCIrdGhpcy5fcm90YXRpb24rImRlZyki OiJtYXAiPT09dGhpcy5fcm90YXRpb25BbGlnbm1lbnQmJihlPSJyb3RhdGVaKCIrKHRoaXMu X3JvdGF0aW9uLXRoaXMuX21hcC5nZXRCZWFyaW5nKCkpKyJkZWcpIik7dmFyIG49IiI7InZp ZXdwb3J0Ij09PXRoaXMuX3BpdGNoQWxpZ25tZW50fHwiYXV0byI9PT10aGlzLl9waXRjaEFs aWdubWVudD9uPSJyb3RhdGVYKDBkZWcpIjoibWFwIj09PXRoaXMuX3BpdGNoQWxpZ25tZW50 JiYobj0icm90YXRlWCgiK3RoaXMuX21hcC5nZXRQaXRjaCgpKyJkZWcpIiksdCYmIm1vdmVl bmQiIT09dC50eXBlfHwodGhpcy5fcG9zPXRoaXMuX3Bvcy5yb3VuZCgpKSxyLnNldFRyYW5z Zm9ybSh0aGlzLl9lbGVtZW50LHppW3RoaXMuX2FuY2hvcl0rIiB0cmFuc2xhdGUoIit0aGlz Ll9wb3MueCsicHgsICIrdGhpcy5fcG9zLnkrInB4KSAiK24rIiAiK2UpfX0sbi5wcm90b3R5 cGUuZ2V0T2Zmc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29mZnNldH0sbi5wcm90b3R5 cGUuc2V0T2Zmc2V0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9vZmZzZXQ9dC5Qb2ludC5j b252ZXJ0KGUpLHRoaXMuX3VwZGF0ZSgpLHRoaXN9LG4ucHJvdG90eXBlLl9vbk1vdmU9ZnVu Y3Rpb24oZSl7dGhpcy5fcG9zPWUucG9pbnQuc3ViKHRoaXMuX3Bvc2l0aW9uRGVsdGEpLHRo aXMuX2xuZ0xhdD10aGlzLl9tYXAudW5wcm9qZWN0KHRoaXMuX3BvcyksdGhpcy5zZXRMbmdM YXQodGhpcy5fbG5nTGF0KSx0aGlzLl9lbGVtZW50LnN0eWxlLnBvaW50ZXJFdmVudHM9Im5v bmUiLCJwZW5kaW5nIj09PXRoaXMuX3N0YXRlJiYodGhpcy5fc3RhdGU9ImFjdGl2ZSIsdGhp cy5maXJlKG5ldyB0LkV2ZW50KCJkcmFnc3RhcnQiKSkpLHRoaXMuZmlyZShuZXcgdC5FdmVu dCgiZHJhZyIpKX0sbi5wcm90b3R5cGUuX29uVXA9ZnVuY3Rpb24oKXt0aGlzLl9lbGVtZW50 LnN0eWxlLnBvaW50ZXJFdmVudHM9ImF1dG8iLHRoaXMuX3Bvc2l0aW9uRGVsdGE9bnVsbCx0 aGlzLl9tYXAub2ZmKCJtb3VzZW1vdmUiLHRoaXMuX29uTW92ZSksdGhpcy5fbWFwLm9mZigi dG91Y2htb3ZlIix0aGlzLl9vbk1vdmUpLCJhY3RpdmUiPT09dGhpcy5fc3RhdGUmJnRoaXMu ZmlyZShuZXcgdC5FdmVudCgiZHJhZ2VuZCIpKSx0aGlzLl9zdGF0ZT0iaW5hY3RpdmUifSxu LnByb3RvdHlwZS5fYWRkRHJhZ0hhbmRsZXI9ZnVuY3Rpb24odCl7dGhpcy5fZWxlbWVudC5j b250YWlucyh0Lm9yaWdpbmFsRXZlbnQudGFyZ2V0KSYmKHQucHJldmVudERlZmF1bHQoKSx0 aGlzLl9wb3NpdGlvbkRlbHRhPXQucG9pbnQuc3ViKHRoaXMuX3BvcykuYWRkKHRoaXMuX29m ZnNldCksdGhpcy5fc3RhdGU9InBlbmRpbmciLHRoaXMuX21hcC5vbigibW91c2Vtb3ZlIix0 aGlzLl9vbk1vdmUpLHRoaXMuX21hcC5vbigidG91Y2htb3ZlIix0aGlzLl9vbk1vdmUpLHRo aXMuX21hcC5vbmNlKCJtb3VzZXVwIix0aGlzLl9vblVwKSx0aGlzLl9tYXAub25jZSgidG91 Y2hlbmQiLHRoaXMuX29uVXApKX0sbi5wcm90b3R5cGUuc2V0RHJhZ2dhYmxlPWZ1bmN0aW9u KHQpe3JldHVybiB0aGlzLl9kcmFnZ2FibGU9ISF0LHRoaXMuX21hcCYmKHQ/KHRoaXMuX21h cC5vbigibW91c2Vkb3duIix0aGlzLl9hZGREcmFnSGFuZGxlciksdGhpcy5fbWFwLm9uKCJ0 b3VjaHN0YXJ0Iix0aGlzLl9hZGREcmFnSGFuZGxlcikpOih0aGlzLl9tYXAub2ZmKCJtb3Vz ZWRvd24iLHRoaXMuX2FkZERyYWdIYW5kbGVyKSx0aGlzLl9tYXAub2ZmKCJ0b3VjaHN0YXJ0 Iix0aGlzLl9hZGREcmFnSGFuZGxlcikpKSx0aGlzfSxuLnByb3RvdHlwZS5pc0RyYWdnYWJs ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kcmFnZ2FibGV9LG4ucHJvdG90eXBlLnNldFJv dGF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yb3RhdGlvbj10fHwwLHRoaXMuX3Vw ZGF0ZSgpLHRoaXN9LG4ucHJvdG90eXBlLmdldFJvdGF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMuX3JvdGF0aW9ufSxuLnByb3RvdHlwZS5zZXRSb3RhdGlvbkFsaWdubWVudD1mdW5j dGlvbih0KXtyZXR1cm4gdGhpcy5fcm90YXRpb25BbGlnbm1lbnQ9dHx8ImF1dG8iLHRoaXMu X3VwZGF0ZSgpLHRoaXN9LG4ucHJvdG90eXBlLmdldFJvdGF0aW9uQWxpZ25tZW50PWZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuX3JvdGF0aW9uQWxpZ25tZW50fSxuLnByb3RvdHlwZS5zZXRQ aXRjaEFsaWdubWVudD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGl0Y2hBbGlnbm1lbnQ9 dCYmImF1dG8iIT09dD90OnRoaXMuX3JvdGF0aW9uQWxpZ25tZW50LHRoaXMuX3VwZGF0ZSgp LHRoaXN9LG4ucHJvdG90eXBlLmdldFBpdGNoQWxpZ25tZW50PWZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMuX3BpdGNoQWxpZ25tZW50fSxufSh0LkV2ZW50ZWQpLEJpPXtwb3NpdGlvbk9wdGlv bnM6e2VuYWJsZUhpZ2hBY2N1cmFjeTohMSxtYXhpbXVtQWdlOjAsdGltZW91dDo2ZTN9LGZp dEJvdW5kc09wdGlvbnM6e21heFpvb206MTV9LHRyYWNrVXNlckxvY2F0aW9uOiExLHNob3dB Y2N1cmFjeUNpcmNsZTohMCxzaG93VXNlckxvY2F0aW9uOiEwfTt2YXIgTmk9MCxqaT0hMSxV aT1mdW5jdGlvbihlKXtmdW5jdGlvbiBuKHIpe2UuY2FsbCh0aGlzKSx0aGlzLm9wdGlvbnM9 dC5leHRlbmQoe30sQmksciksdC5iaW5kQWxsKFsiX29uU3VjY2VzcyIsIl9vbkVycm9yIiwi X29uWm9vbSIsIl9maW5pc2giLCJfc2V0dXBVSSIsIl91cGRhdGVDYW1lcmEiLCJfdXBkYXRl TWFya2VyIl0sdGhpcyl9cmV0dXJuIGUmJihuLl9fcHJvdG9fXz1lKSxuLnByb3RvdHlwZT1P YmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlKSxuLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1u LG4ucHJvdG90eXBlLm9uQWRkPWZ1bmN0aW9uKGUpe3ZhciBuO3JldHVybiB0aGlzLl9tYXA9 ZSx0aGlzLl9jb250YWluZXI9ci5jcmVhdGUoImRpdiIsIm1hcGJveGdsLWN0cmwgbWFwYm94 Z2wtY3RybC1ncm91cCIpLG49dGhpcy5fc2V0dXBVSSx2b2lkIDAhPT1SaT9uKFJpKTp2b2lk IDAhPT10LndpbmRvdy5uYXZpZ2F0b3IucGVybWlzc2lvbnM/dC53aW5kb3cubmF2aWdhdG9y LnBlcm1pc3Npb25zLnF1ZXJ5KHtuYW1lOiJnZW9sb2NhdGlvbiJ9KS50aGVuKChmdW5jdGlv bih0KXtSaT0iZGVuaWVkIiE9PXQuc3RhdGUsbihSaSl9KSk6KFJpPSEhdC53aW5kb3cubmF2 aWdhdG9yLmdlb2xvY2F0aW9uLG4oUmkpKSx0aGlzLl9jb250YWluZXJ9LG4ucHJvdG90eXBl Lm9uUmVtb3ZlPWZ1bmN0aW9uKCl7dm9pZCAwIT09dGhpcy5fZ2VvbG9jYXRpb25XYXRjaElE JiYodC53aW5kb3cubmF2aWdhdG9yLmdlb2xvY2F0aW9uLmNsZWFyV2F0Y2godGhpcy5fZ2Vv bG9jYXRpb25XYXRjaElEKSx0aGlzLl9nZW9sb2NhdGlvbldhdGNoSUQ9dm9pZCAwKSx0aGlz Lm9wdGlvbnMuc2hvd1VzZXJMb2NhdGlvbiYmdGhpcy5fdXNlckxvY2F0aW9uRG90TWFya2Vy JiZ0aGlzLl91c2VyTG9jYXRpb25Eb3RNYXJrZXIucmVtb3ZlKCksdGhpcy5vcHRpb25zLnNo b3dBY2N1cmFjeUNpcmNsZSYmdGhpcy5fYWNjdXJhY3lDaXJjbGVNYXJrZXImJnRoaXMuX2Fj Y3VyYWN5Q2lyY2xlTWFya2VyLnJlbW92ZSgpLHIucmVtb3ZlKHRoaXMuX2NvbnRhaW5lciks dGhpcy5fbWFwLm9mZigiem9vbSIsdGhpcy5fb25ab29tKSx0aGlzLl9tYXA9dm9pZCAwLE5p PTAsamk9ITF9LG4ucHJvdG90eXBlLl9pc091dE9mTWFwTWF4Qm91bmRzPWZ1bmN0aW9uKHQp e3ZhciBlPXRoaXMuX21hcC5nZXRNYXhCb3VuZHMoKSxyPXQuY29vcmRzO3JldHVybiBlJiYo ci5sb25naXR1ZGU8ZS5nZXRXZXN0KCl8fHIubG9uZ2l0dWRlPmUuZ2V0RWFzdCgpfHxyLmxh dGl0dWRlPGUuZ2V0U291dGgoKXx8ci5sYXRpdHVkZT5lLmdldE5vcnRoKCkpfSxuLnByb3Rv dHlwZS5fc2V0RXJyb3JTdGF0ZT1mdW5jdGlvbigpe3N3aXRjaCh0aGlzLl93YXRjaFN0YXRl KXtjYXNlIldBSVRJTkdfQUNUSVZFIjp0aGlzLl93YXRjaFN0YXRlPSJBQ1RJVkVfRVJST1Ii LHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCJtYXBib3hnbC1jdHJs LWdlb2xvY2F0ZS1hY3RpdmUiKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LmFk ZCgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlLWVycm9yIik7YnJlYWs7Y2FzZSJB Q1RJVkVfTE9DSyI6dGhpcy5fd2F0Y2hTdGF0ZT0iQUNUSVZFX0VSUk9SIix0aGlzLl9nZW9s b2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUt YWN0aXZlIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQoIm1hcGJveGds LWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZS1lcnJvciIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5j bGFzc0xpc3QuYWRkKCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS13YWl0aW5nIik7YnJlYWs7 Y2FzZSJCQUNLR1JPVU5EIjp0aGlzLl93YXRjaFN0YXRlPSJCQUNLR1JPVU5EX0VSUk9SIix0 aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgibWFwYm94Z2wtY3RybC1n ZW9sb2NhdGUtYmFja2dyb3VuZCIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3Qu YWRkKCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1iYWNrZ3JvdW5kLWVycm9yIiksdGhpcy5f Z2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRl LXdhaXRpbmciKX19LG4ucHJvdG90eXBlLl9vblN1Y2Nlc3M9ZnVuY3Rpb24oZSl7aWYodGhp cy5fbWFwKXtpZih0aGlzLl9pc091dE9mTWFwTWF4Qm91bmRzKGUpKXJldHVybiB0aGlzLl9z ZXRFcnJvclN0YXRlKCksdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJvdXRvZm1heGJvdW5kcyIs ZSkpLHRoaXMuX3VwZGF0ZU1hcmtlcigpLHZvaWQgdGhpcy5fZmluaXNoKCk7aWYodGhpcy5v cHRpb25zLnRyYWNrVXNlckxvY2F0aW9uKXN3aXRjaCh0aGlzLl9sYXN0S25vd25Qb3NpdGlv bj1lLHRoaXMuX3dhdGNoU3RhdGUpe2Nhc2UiV0FJVElOR19BQ1RJVkUiOmNhc2UiQUNUSVZF X0xPQ0siOmNhc2UiQUNUSVZFX0VSUk9SIjp0aGlzLl93YXRjaFN0YXRlPSJBQ1RJVkVfTE9D SyIsdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoIm1hcGJveGdsLWN0 cmwtZ2VvbG9jYXRlLXdhaXRpbmciKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0 LnJlbW92ZSgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlLWVycm9yIiksdGhpcy5f Z2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRl LWFjdGl2ZSIpO2JyZWFrO2Nhc2UiQkFDS0dST1VORCI6Y2FzZSJCQUNLR1JPVU5EX0VSUk9S Ijp0aGlzLl93YXRjaFN0YXRlPSJCQUNLR1JPVU5EIix0aGlzLl9nZW9sb2NhdGVCdXR0b24u Y2xhc3NMaXN0LnJlbW92ZSgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtd2FpdGluZyIpLHRo aXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCJtYXBib3hnbC1jdHJsLWdl b2xvY2F0ZS1iYWNrZ3JvdW5kLWVycm9yIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNz TGlzdC5hZGQoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmQiKX10aGlzLm9w dGlvbnMuc2hvd1VzZXJMb2NhdGlvbiYmIk9GRiIhPT10aGlzLl93YXRjaFN0YXRlJiZ0aGlz Ll91cGRhdGVNYXJrZXIoZSksdGhpcy5vcHRpb25zLnRyYWNrVXNlckxvY2F0aW9uJiYiQUNU SVZFX0xPQ0siIT09dGhpcy5fd2F0Y2hTdGF0ZXx8dGhpcy5fdXBkYXRlQ2FtZXJhKGUpLHRo aXMub3B0aW9ucy5zaG93VXNlckxvY2F0aW9uJiZ0aGlzLl9kb3RFbGVtZW50LmNsYXNzTGlz dC5yZW1vdmUoIm1hcGJveGdsLXVzZXItbG9jYXRpb24tZG90LXN0YWxlIiksdGhpcy5maXJl KG5ldyB0LkV2ZW50KCJnZW9sb2NhdGUiLGUpKSx0aGlzLl9maW5pc2goKX19LG4ucHJvdG90 eXBlLl91cGRhdGVDYW1lcmE9ZnVuY3Rpb24oZSl7dmFyIHI9bmV3IHQuTG5nTGF0KGUuY29v cmRzLmxvbmdpdHVkZSxlLmNvb3Jkcy5sYXRpdHVkZSksbj1lLmNvb3Jkcy5hY2N1cmFjeSxp PXRoaXMuX21hcC5nZXRCZWFyaW5nKCksYT10LmV4dGVuZCh7YmVhcmluZzppfSx0aGlzLm9w dGlvbnMuZml0Qm91bmRzT3B0aW9ucyk7dGhpcy5fbWFwLmZpdEJvdW5kcyhyLnRvQm91bmRz KG4pLGEse2dlb2xvY2F0ZVNvdXJjZTohMH0pfSxuLnByb3RvdHlwZS5fdXBkYXRlTWFya2Vy PWZ1bmN0aW9uKGUpe2lmKGUpe3ZhciByPW5ldyB0LkxuZ0xhdChlLmNvb3Jkcy5sb25naXR1 ZGUsZS5jb29yZHMubGF0aXR1ZGUpO3RoaXMuX2FjY3VyYWN5Q2lyY2xlTWFya2VyLnNldExu Z0xhdChyKS5hZGRUbyh0aGlzLl9tYXApLHRoaXMuX3VzZXJMb2NhdGlvbkRvdE1hcmtlci5z ZXRMbmdMYXQocikuYWRkVG8odGhpcy5fbWFwKSx0aGlzLl9hY2N1cmFjeT1lLmNvb3Jkcy5h Y2N1cmFjeSx0aGlzLm9wdGlvbnMuc2hvd1VzZXJMb2NhdGlvbiYmdGhpcy5vcHRpb25zLnNo b3dBY2N1cmFjeUNpcmNsZSYmdGhpcy5fdXBkYXRlQ2lyY2xlUmFkaXVzKCl9ZWxzZSB0aGlz Ll91c2VyTG9jYXRpb25Eb3RNYXJrZXIucmVtb3ZlKCksdGhpcy5fYWNjdXJhY3lDaXJjbGVN YXJrZXIucmVtb3ZlKCl9LG4ucHJvdG90eXBlLl91cGRhdGVDaXJjbGVSYWRpdXM9ZnVuY3Rp b24oKXt2YXIgdD10aGlzLl9tYXAuX2NvbnRhaW5lci5jbGllbnRIZWlnaHQvMixlPXRoaXMu X21hcC51bnByb2plY3QoWzAsdF0pLHI9dGhpcy5fbWFwLnVucHJvamVjdChbMSx0XSksbj1l LmRpc3RhbmNlVG8ociksaT1NYXRoLmNlaWwoMip0aGlzLl9hY2N1cmFjeS9uKTt0aGlzLl9j aXJjbGVFbGVtZW50LnN0eWxlLndpZHRoPWkrInB4Iix0aGlzLl9jaXJjbGVFbGVtZW50LnN0 eWxlLmhlaWdodD1pKyJweCJ9LG4ucHJvdG90eXBlLl9vblpvb209ZnVuY3Rpb24oKXt0aGlz Lm9wdGlvbnMuc2hvd1VzZXJMb2NhdGlvbiYmdGhpcy5vcHRpb25zLnNob3dBY2N1cmFjeUNp cmNsZSYmdGhpcy5fdXBkYXRlQ2lyY2xlUmFkaXVzKCl9LG4ucHJvdG90eXBlLl9vbkVycm9y PWZ1bmN0aW9uKGUpe2lmKHRoaXMuX21hcCl7aWYodGhpcy5vcHRpb25zLnRyYWNrVXNlckxv Y2F0aW9uKWlmKDE9PT1lLmNvZGUpe3RoaXMuX3dhdGNoU3RhdGU9Ik9GRiIsdGhpcy5fZ2Vv bG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRl LXdhaXRpbmciKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgibWFw Ym94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNs YXNzTGlzdC5yZW1vdmUoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZS1lcnJvciIp LHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCJtYXBib3hnbC1jdHJs LWdlb2xvY2F0ZS1iYWNrZ3JvdW5kIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlz dC5yZW1vdmUoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmQtZXJyb3IiKSx0 aGlzLl9nZW9sb2NhdGVCdXR0b24uZGlzYWJsZWQ9ITA7dmFyIHI9dGhpcy5fbWFwLl9nZXRV SVN0cmluZygiR2VvbG9jYXRlQ29udHJvbC5Mb2NhdGlvbk5vdEF2YWlsYWJsZSIpO3RoaXMu X2dlb2xvY2F0ZUJ1dHRvbi50aXRsZT1yLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5zZXRBdHRy aWJ1dGUoImFyaWEtbGFiZWwiLHIpLHZvaWQgMCE9PXRoaXMuX2dlb2xvY2F0aW9uV2F0Y2hJ RCYmdGhpcy5fY2xlYXJXYXRjaCgpfWVsc2V7aWYoMz09PWUuY29kZSYmamkpcmV0dXJuO3Ro aXMuX3NldEVycm9yU3RhdGUoKX0iT0ZGIiE9PXRoaXMuX3dhdGNoU3RhdGUmJnRoaXMub3B0 aW9ucy5zaG93VXNlckxvY2F0aW9uJiZ0aGlzLl9kb3RFbGVtZW50LmNsYXNzTGlzdC5hZGQo Im1hcGJveGdsLXVzZXItbG9jYXRpb24tZG90LXN0YWxlIiksdGhpcy5maXJlKG5ldyB0LkV2 ZW50KCJlcnJvciIsZSkpLHRoaXMuX2ZpbmlzaCgpfX0sbi5wcm90b3R5cGUuX2ZpbmlzaD1m dW5jdGlvbigpe3RoaXMuX3RpbWVvdXRJZCYmY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXRJ ZCksdGhpcy5fdGltZW91dElkPXZvaWQgMH0sbi5wcm90b3R5cGUuX3NldHVwVUk9ZnVuY3Rp b24oZSl7dmFyIG49dGhpcztpZih0aGlzLl9jb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigi Y29udGV4dG1lbnUiLChmdW5jdGlvbih0KXtyZXR1cm4gdC5wcmV2ZW50RGVmYXVsdCgpfSkp LHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbj1yLmNyZWF0ZSgiYnV0dG9uIiwibWFwYm94Z2wtY3Ry bC1nZW9sb2NhdGUiLHRoaXMuX2NvbnRhaW5lciksci5jcmVhdGUoInNwYW4iLCJtYXBib3hn bC1jdHJsLWljb24iLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbikuc2V0QXR0cmlidXRlKCJhcmlh LWhpZGRlbiIsITApLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi50eXBlPSJidXR0b24iLCExPT09 ZSl7dC53YXJuT25jZSgiR2VvbG9jYXRpb24gc3VwcG9ydCBpcyBub3QgYXZhaWxhYmxlIHNv IHRoZSBHZW9sb2NhdGVDb250cm9sIHdpbGwgYmUgZGlzYWJsZWQuIik7dmFyIGk9dGhpcy5f bWFwLl9nZXRVSVN0cmluZygiR2VvbG9jYXRlQ29udHJvbC5Mb2NhdGlvbk5vdEF2YWlsYWJs ZSIpO3RoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5kaXNhYmxlZD0hMCx0aGlzLl9nZW9sb2NhdGVC dXR0b24udGl0bGU9aSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uc2V0QXR0cmlidXRlKCJhcmlh LWxhYmVsIixpKX1lbHNle3ZhciBhPXRoaXMuX21hcC5fZ2V0VUlTdHJpbmcoIkdlb2xvY2F0 ZUNvbnRyb2wuRmluZE15TG9jYXRpb24iKTt0aGlzLl9nZW9sb2NhdGVCdXR0b24udGl0bGU9 YSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIixhKX10 aGlzLm9wdGlvbnMudHJhY2tVc2VyTG9jYXRpb24mJih0aGlzLl9nZW9sb2NhdGVCdXR0b24u c2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiLCJmYWxzZSIpLHRoaXMuX3dhdGNoU3RhdGU9 Ik9GRiIpLHRoaXMub3B0aW9ucy5zaG93VXNlckxvY2F0aW9uJiYodGhpcy5fZG90RWxlbWVu dD1yLmNyZWF0ZSgiZGl2IiwibWFwYm94Z2wtdXNlci1sb2NhdGlvbi1kb3QiKSx0aGlzLl91 c2VyTG9jYXRpb25Eb3RNYXJrZXI9bmV3IEZpKHRoaXMuX2RvdEVsZW1lbnQpLHRoaXMuX2Np cmNsZUVsZW1lbnQ9ci5jcmVhdGUoImRpdiIsIm1hcGJveGdsLXVzZXItbG9jYXRpb24tYWNj dXJhY3ktY2lyY2xlIiksdGhpcy5fYWNjdXJhY3lDaXJjbGVNYXJrZXI9bmV3IEZpKHtlbGVt ZW50OnRoaXMuX2NpcmNsZUVsZW1lbnQscGl0Y2hBbGlnbm1lbnQ6Im1hcCJ9KSx0aGlzLm9w dGlvbnMudHJhY2tVc2VyTG9jYXRpb24mJih0aGlzLl93YXRjaFN0YXRlPSJPRkYiKSx0aGlz Ll9tYXAub24oInpvb20iLHRoaXMuX29uWm9vbSkpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5h ZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy50cmlnZ2VyLmJpbmQodGhpcykpLHRoaXMu X3NldHVwPSEwLHRoaXMub3B0aW9ucy50cmFja1VzZXJMb2NhdGlvbiYmdGhpcy5fbWFwLm9u KCJtb3Zlc3RhcnQiLChmdW5jdGlvbihlKXt2YXIgcj1lLm9yaWdpbmFsRXZlbnQmJiJyZXNp emUiPT09ZS5vcmlnaW5hbEV2ZW50LnR5cGU7ZS5nZW9sb2NhdGVTb3VyY2V8fCJBQ1RJVkVf TE9DSyIhPT1uLl93YXRjaFN0YXRlfHxyfHwobi5fd2F0Y2hTdGF0ZT0iQkFDS0dST1VORCIs bi5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQoIm1hcGJveGdsLWN0cmwtZ2VvbG9j YXRlLWJhY2tncm91bmQiKSxuLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgi bWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlIiksbi5maXJlKG5ldyB0LkV2ZW50KCJ0 cmFja3VzZXJsb2NhdGlvbmVuZCIpKSl9KSl9LG4ucHJvdG90eXBlLnRyaWdnZXI9ZnVuY3Rp b24oKXtpZighdGhpcy5fc2V0dXApcmV0dXJuIHQud2Fybk9uY2UoIkdlb2xvY2F0ZSBjb250 cm9sIHRyaWdnZXJlZCBiZWZvcmUgYWRkZWQgdG8gYSBtYXAiKSwhMTtpZih0aGlzLm9wdGlv bnMudHJhY2tVc2VyTG9jYXRpb24pe3N3aXRjaCh0aGlzLl93YXRjaFN0YXRlKXtjYXNlIk9G RiI6dGhpcy5fd2F0Y2hTdGF0ZT0iV0FJVElOR19BQ1RJVkUiLHRoaXMuZmlyZShuZXcgdC5F dmVudCgidHJhY2t1c2VybG9jYXRpb25zdGFydCIpKTticmVhaztjYXNlIldBSVRJTkdfQUNU SVZFIjpjYXNlIkFDVElWRV9MT0NLIjpjYXNlIkFDVElWRV9FUlJPUiI6Y2FzZSJCQUNLR1JP VU5EX0VSUk9SIjpOaS0tLGppPSExLHRoaXMuX3dhdGNoU3RhdGU9Ik9GRiIsdGhpcy5fZ2Vv bG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRl LXdhaXRpbmciKSx0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgibWFw Ym94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNs YXNzTGlzdC5yZW1vdmUoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZS1lcnJvciIp LHRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCJtYXBib3hnbC1jdHJs LWdlb2xvY2F0ZS1iYWNrZ3JvdW5kIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlz dC5yZW1vdmUoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmQtZXJyb3IiKSx0 aGlzLmZpcmUobmV3IHQuRXZlbnQoInRyYWNrdXNlcmxvY2F0aW9uZW5kIikpO2JyZWFrO2Nh c2UiQkFDS0dST1VORCI6dGhpcy5fd2F0Y2hTdGF0ZT0iQUNUSVZFX0xPQ0siLHRoaXMuX2dl b2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0 ZS1iYWNrZ3JvdW5kIiksdGhpcy5fbGFzdEtub3duUG9zaXRpb24mJnRoaXMuX3VwZGF0ZUNh bWVyYSh0aGlzLl9sYXN0S25vd25Qb3NpdGlvbiksdGhpcy5maXJlKG5ldyB0LkV2ZW50KCJ0 cmFja3VzZXJsb2NhdGlvbnN0YXJ0IikpfXN3aXRjaCh0aGlzLl93YXRjaFN0YXRlKXtjYXNl IldBSVRJTkdfQUNUSVZFIjp0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LmFkZCgi bWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtd2FpdGluZyIpLHRoaXMuX2dlb2xvY2F0ZUJ1dHRv bi5jbGFzc0xpc3QuYWRkKCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS1hY3RpdmUiKTticmVh aztjYXNlIkFDVElWRV9MT0NLIjp0aGlzLl9nZW9sb2NhdGVCdXR0b24uY2xhc3NMaXN0LmFk ZCgibWFwYm94Z2wtY3RybC1nZW9sb2NhdGUtYWN0aXZlIik7YnJlYWs7Y2FzZSJBQ1RJVkVf RVJST1IiOnRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCJtYXBib3hnbC1j dHJsLWdlb2xvY2F0ZS13YWl0aW5nIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlz dC5hZGQoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWFjdGl2ZS1lcnJvciIpO2JyZWFrO2Nh c2UiQkFDS0dST1VORCI6dGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQoIm1h cGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmQiKTticmVhaztjYXNlIkJBQ0tHUk9V TkRfRVJST1IiOnRoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCJtYXBib3hn bC1jdHJsLWdlb2xvY2F0ZS13YWl0aW5nIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLmNsYXNz TGlzdC5hZGQoIm1hcGJveGdsLWN0cmwtZ2VvbG9jYXRlLWJhY2tncm91bmQtZXJyb3IiKX1p ZigiT0ZGIj09PXRoaXMuX3dhdGNoU3RhdGUmJnZvaWQgMCE9PXRoaXMuX2dlb2xvY2F0aW9u V2F0Y2hJRCl0aGlzLl9jbGVhcldhdGNoKCk7ZWxzZSBpZih2b2lkIDA9PT10aGlzLl9nZW9s b2NhdGlvbldhdGNoSUQpe3ZhciBlO3RoaXMuX2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3Qu YWRkKCJtYXBib3hnbC1jdHJsLWdlb2xvY2F0ZS13YWl0aW5nIiksdGhpcy5fZ2VvbG9jYXRl QnV0dG9uLnNldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIiwidHJ1ZSIpLCsrTmk+MT8oZT17 bWF4aW11bUFnZTo2ZTUsdGltZW91dDowfSxqaT0hMCk6KGU9dGhpcy5vcHRpb25zLnBvc2l0 aW9uT3B0aW9ucyxqaT0hMSksdGhpcy5fZ2VvbG9jYXRpb25XYXRjaElEPXQud2luZG93Lm5h dmlnYXRvci5nZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9uKHRoaXMuX29uU3VjY2Vzcyx0aGlz Ll9vbkVycm9yLGUpfX1lbHNlIHQud2luZG93Lm5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRD dXJyZW50UG9zaXRpb24odGhpcy5fb25TdWNjZXNzLHRoaXMuX29uRXJyb3IsdGhpcy5vcHRp b25zLnBvc2l0aW9uT3B0aW9ucyksdGhpcy5fdGltZW91dElkPXNldFRpbWVvdXQodGhpcy5f ZmluaXNoLDFlNCk7cmV0dXJuITB9LG4ucHJvdG90eXBlLl9jbGVhcldhdGNoPWZ1bmN0aW9u KCl7dC53aW5kb3cubmF2aWdhdG9yLmdlb2xvY2F0aW9uLmNsZWFyV2F0Y2godGhpcy5fZ2Vv bG9jYXRpb25XYXRjaElEKSx0aGlzLl9nZW9sb2NhdGlvbldhdGNoSUQ9dm9pZCAwLHRoaXMu X2dlb2xvY2F0ZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCJtYXBib3hnbC1jdHJsLWdlb2xv Y2F0ZS13YWl0aW5nIiksdGhpcy5fZ2VvbG9jYXRlQnV0dG9uLnNldEF0dHJpYnV0ZSgiYXJp YS1wcmVzc2VkIiwiZmFsc2UiKSx0aGlzLm9wdGlvbnMuc2hvd1VzZXJMb2NhdGlvbiYmdGhp cy5fdXBkYXRlTWFya2VyKG51bGwpfSxufSh0LkV2ZW50ZWQpLFZpPXttYXhXaWR0aDoxMDAs dW5pdDoibWV0cmljIn0sSGk9ZnVuY3Rpb24oZSl7dGhpcy5vcHRpb25zPXQuZXh0ZW5kKHt9 LFZpLGUpLHQuYmluZEFsbChbIl9vbk1vdmUiLCJzZXRVbml0Il0sdGhpcyl9O2Z1bmN0aW9u IHFpKHQsZSxyKXt2YXIgbj1yJiZyLm1heFdpZHRofHwxMDAsaT10Ll9jb250YWluZXIuY2xp ZW50SGVpZ2h0LzIsYT10LnVucHJvamVjdChbMCxpXSksbz10LnVucHJvamVjdChbbixpXSks cz1hLmRpc3RhbmNlVG8obyk7aWYociYmImltcGVyaWFsIj09PXIudW5pdCl7dmFyIGw9My4y ODA4KnM7aWYobD41MjgwKUdpKGUsbixsLzUyODAsdC5fZ2V0VUlTdHJpbmcoIlNjYWxlQ29u dHJvbC5NaWxlcyIpKTtlbHNlIEdpKGUsbixsLHQuX2dldFVJU3RyaW5nKCJTY2FsZUNvbnRy b2wuRmVldCIpKX1lbHNlIGlmKHImJiJuYXV0aWNhbCI9PT1yLnVuaXQpe0dpKGUsbixzLzE4 NTIsdC5fZ2V0VUlTdHJpbmcoIlNjYWxlQ29udHJvbC5OYXV0aWNhbE1pbGVzIikpfWVsc2Ug cz49MWUzP0dpKGUsbixzLzFlMyx0Ll9nZXRVSVN0cmluZygiU2NhbGVDb250cm9sLktpbG9t ZXRlcnMiKSk6R2koZSxuLHMsdC5fZ2V0VUlTdHJpbmcoIlNjYWxlQ29udHJvbC5NZXRlcnMi KSl9ZnVuY3Rpb24gR2kodCxlLHIsbil7dmFyIGksYSxvLHM9KGk9cixhPU1hdGgucG93KDEw LCgiIitNYXRoLmZsb29yKGkpKS5sZW5ndGgtMSksbz0obz1pL2EpPj0xMD8xMDpvPj01PzU6 bz49Mz8zOm8+PTI/MjpvPj0xPzE6ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5wb3coMTAsTWF0 aC5jZWlsKC1NYXRoLmxvZyh0KS9NYXRoLkxOMTApKTtyZXR1cm4gTWF0aC5yb3VuZCh0KmUp L2V9KG8pLGEqbyksbD1zL3I7dC5zdHlsZS53aWR0aD1lKmwrInB4Iix0LmlubmVySFRNTD1z KyImbmJzcDsiK259SGkucHJvdG90eXBlLmdldERlZmF1bHRQb3NpdGlvbj1mdW5jdGlvbigp e3JldHVybiJib3R0b20tbGVmdCJ9LEhpLnByb3RvdHlwZS5fb25Nb3ZlPWZ1bmN0aW9uKCl7 cWkodGhpcy5fbWFwLHRoaXMuX2NvbnRhaW5lcix0aGlzLm9wdGlvbnMpfSxIaS5wcm90b3R5 cGUub25BZGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21hcD10LHRoaXMuX2NvbnRhaW5l cj1yLmNyZWF0ZSgiZGl2IiwibWFwYm94Z2wtY3RybCBtYXBib3hnbC1jdHJsLXNjYWxlIix0 LmdldENvbnRhaW5lcigpKSx0aGlzLl9tYXAub24oIm1vdmUiLHRoaXMuX29uTW92ZSksdGhp cy5fb25Nb3ZlKCksdGhpcy5fY29udGFpbmVyfSxIaS5wcm90b3R5cGUub25SZW1vdmU9ZnVu Y3Rpb24oKXtyLnJlbW92ZSh0aGlzLl9jb250YWluZXIpLHRoaXMuX21hcC5vZmYoIm1vdmUi LHRoaXMuX29uTW92ZSksdGhpcy5fbWFwPXZvaWQgMH0sSGkucHJvdG90eXBlLnNldFVuaXQ9 ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zLnVuaXQ9dCxxaSh0aGlzLl9tYXAsdGhpcy5fY29u dGFpbmVyLHRoaXMub3B0aW9ucyl9O3ZhciBZaT1mdW5jdGlvbihlKXt0aGlzLl9mdWxsc2Ny ZWVuPSExLGUmJmUuY29udGFpbmVyJiYoZS5jb250YWluZXIgaW5zdGFuY2VvZiB0LndpbmRv dy5IVE1MRWxlbWVudD90aGlzLl9jb250YWluZXI9ZS5jb250YWluZXI6dC53YXJuT25jZSgi RnVsbCBzY3JlZW4gY29udHJvbCAnY29udGFpbmVyJyBtdXN0IGJlIGEgRE9NIGVsZW1lbnQu IikpLHQuYmluZEFsbChbIl9vbkNsaWNrRnVsbHNjcmVlbiIsIl9jaGFuZ2VJY29uIl0sdGhp cyksIm9uZnVsbHNjcmVlbmNoYW5nZSJpbiB0LndpbmRvdy5kb2N1bWVudD90aGlzLl9mdWxs c2NyZWVuY2hhbmdlPSJmdWxsc2NyZWVuY2hhbmdlIjoib25tb3pmdWxsc2NyZWVuY2hhbmdl ImluIHQud2luZG93LmRvY3VtZW50P3RoaXMuX2Z1bGxzY3JlZW5jaGFuZ2U9Im1vemZ1bGxz Y3JlZW5jaGFuZ2UiOiJvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UiaW4gdC53aW5kb3cuZG9j dW1lbnQ/dGhpcy5fZnVsbHNjcmVlbmNoYW5nZT0id2Via2l0ZnVsbHNjcmVlbmNoYW5nZSI6 Im9ubXNmdWxsc2NyZWVuY2hhbmdlImluIHQud2luZG93LmRvY3VtZW50JiYodGhpcy5fZnVs bHNjcmVlbmNoYW5nZT0iTVNGdWxsc2NyZWVuQ2hhbmdlIil9O1lpLnByb3RvdHlwZS5vbkFk ZD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fbWFwPWUsdGhpcy5fY29udGFpbmVyfHwodGhp cy5fY29udGFpbmVyPXRoaXMuX21hcC5nZXRDb250YWluZXIoKSksdGhpcy5fY29udHJvbENv bnRhaW5lcj1yLmNyZWF0ZSgiZGl2IiwibWFwYm94Z2wtY3RybCBtYXBib3hnbC1jdHJsLWdy b3VwIiksdGhpcy5fY2hlY2tGdWxsc2NyZWVuU3VwcG9ydCgpP3RoaXMuX3NldHVwVUkoKToo dGhpcy5fY29udHJvbENvbnRhaW5lci5zdHlsZS5kaXNwbGF5PSJub25lIix0Lndhcm5PbmNl KCJUaGlzIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IGZ1bGxzY3JlZW4gbW9kZS4iKSksdGhp cy5fY29udHJvbENvbnRhaW5lcn0sWWkucHJvdG90eXBlLm9uUmVtb3ZlPWZ1bmN0aW9uKCl7 ci5yZW1vdmUodGhpcy5fY29udHJvbENvbnRhaW5lciksdGhpcy5fbWFwPW51bGwsdC53aW5k b3cuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLl9mdWxsc2NyZWVuY2hhbmdl LHRoaXMuX2NoYW5nZUljb24pfSxZaS5wcm90b3R5cGUuX2NoZWNrRnVsbHNjcmVlblN1cHBv cnQ9ZnVuY3Rpb24oKXtyZXR1cm4hISh0LndpbmRvdy5kb2N1bWVudC5mdWxsc2NyZWVuRW5h YmxlZHx8dC53aW5kb3cuZG9jdW1lbnQubW96RnVsbFNjcmVlbkVuYWJsZWR8fHQud2luZG93 LmRvY3VtZW50Lm1zRnVsbHNjcmVlbkVuYWJsZWR8fHQud2luZG93LmRvY3VtZW50LndlYmtp dEZ1bGxzY3JlZW5FbmFibGVkKX0sWWkucHJvdG90eXBlLl9zZXR1cFVJPWZ1bmN0aW9uKCl7 dmFyIGU9dGhpcy5fZnVsbHNjcmVlbkJ1dHRvbj1yLmNyZWF0ZSgiYnV0dG9uIiwibWFwYm94 Z2wtY3RybC1mdWxsc2NyZWVuIix0aGlzLl9jb250cm9sQ29udGFpbmVyKTtyLmNyZWF0ZSgi c3BhbiIsIm1hcGJveGdsLWN0cmwtaWNvbiIsZSkuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRl biIsITApLGUudHlwZT0iYnV0dG9uIix0aGlzLl91cGRhdGVUaXRsZSgpLHRoaXMuX2Z1bGxz Y3JlZW5CdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuX29uQ2xpY2tGdWxs c2NyZWVuKSx0LndpbmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKHRoaXMuX2Z1bGxz Y3JlZW5jaGFuZ2UsdGhpcy5fY2hhbmdlSWNvbil9LFlpLnByb3RvdHlwZS5fdXBkYXRlVGl0 bGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9nZXRUaXRsZSgpO3RoaXMuX2Z1bGxzY3JlZW5C dXR0b24uc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIix0KSx0aGlzLl9mdWxsc2NyZWVuQnV0 dG9uLnRpdGxlPXR9LFlpLnByb3RvdHlwZS5fZ2V0VGl0bGU9ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5fbWFwLl9nZXRVSVN0cmluZyh0aGlzLl9pc0Z1bGxzY3JlZW4oKT8iRnVsbHNjcmVl bkNvbnRyb2wuRXhpdCI6IkZ1bGxzY3JlZW5Db250cm9sLkVudGVyIil9LFlpLnByb3RvdHlw ZS5faXNGdWxsc2NyZWVuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Z1bGxzY3JlZW59LFlp LnByb3RvdHlwZS5fY2hhbmdlSWNvbj1mdW5jdGlvbigpeyh0LndpbmRvdy5kb2N1bWVudC5m dWxsc2NyZWVuRWxlbWVudHx8dC53aW5kb3cuZG9jdW1lbnQubW96RnVsbFNjcmVlbkVsZW1l bnR8fHQud2luZG93LmRvY3VtZW50LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50fHx0LndpbmRv dy5kb2N1bWVudC5tc0Z1bGxzY3JlZW5FbGVtZW50KT09PXRoaXMuX2NvbnRhaW5lciE9PXRo aXMuX2Z1bGxzY3JlZW4mJih0aGlzLl9mdWxsc2NyZWVuPSF0aGlzLl9mdWxsc2NyZWVuLHRo aXMuX2Z1bGxzY3JlZW5CdXR0b24uY2xhc3NMaXN0LnRvZ2dsZSgibWFwYm94Z2wtY3RybC1z aHJpbmsiKSx0aGlzLl9mdWxsc2NyZWVuQnV0dG9uLmNsYXNzTGlzdC50b2dnbGUoIm1hcGJv eGdsLWN0cmwtZnVsbHNjcmVlbiIpLHRoaXMuX3VwZGF0ZVRpdGxlKCkpfSxZaS5wcm90b3R5 cGUuX29uQ2xpY2tGdWxsc2NyZWVuPWZ1bmN0aW9uKCl7dGhpcy5faXNGdWxsc2NyZWVuKCk/ dC53aW5kb3cuZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4/dC53aW5kb3cuZG9jdW1lbnQuZXhp dEZ1bGxzY3JlZW4oKTp0LndpbmRvdy5kb2N1bWVudC5tb3pDYW5jZWxGdWxsU2NyZWVuP3Qu d2luZG93LmRvY3VtZW50Lm1vekNhbmNlbEZ1bGxTY3JlZW4oKTp0LndpbmRvdy5kb2N1bWVu dC5tc0V4aXRGdWxsc2NyZWVuP3Qud2luZG93LmRvY3VtZW50Lm1zRXhpdEZ1bGxzY3JlZW4o KTp0LndpbmRvdy5kb2N1bWVudC53ZWJraXRDYW5jZWxGdWxsU2NyZWVuJiZ0LndpbmRvdy5k b2N1bWVudC53ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk6dGhpcy5fY29udGFpbmVyLnJlcXVl c3RGdWxsc2NyZWVuP3RoaXMuX2NvbnRhaW5lci5yZXF1ZXN0RnVsbHNjcmVlbigpOnRoaXMu X2NvbnRhaW5lci5tb3pSZXF1ZXN0RnVsbFNjcmVlbj90aGlzLl9jb250YWluZXIubW96UmVx dWVzdEZ1bGxTY3JlZW4oKTp0aGlzLl9jb250YWluZXIubXNSZXF1ZXN0RnVsbHNjcmVlbj90 aGlzLl9jb250YWluZXIubXNSZXF1ZXN0RnVsbHNjcmVlbigpOnRoaXMuX2NvbnRhaW5lci53 ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbiYmdGhpcy5fY29udGFpbmVyLndlYmtpdFJlcXVlc3RG dWxsc2NyZWVuKCl9O3ZhciBXaT17Y2xvc2VCdXR0b246ITAsY2xvc2VPbkNsaWNrOiEwLGNs YXNzTmFtZToiIixtYXhXaWR0aDoiMjQwcHgifSxYaT1mdW5jdGlvbihlKXtmdW5jdGlvbiBu KHIpe2UuY2FsbCh0aGlzKSx0aGlzLm9wdGlvbnM9dC5leHRlbmQoT2JqZWN0LmNyZWF0ZShX aSksciksdC5iaW5kQWxsKFsiX3VwZGF0ZSIsIl9vbkNsb3NlIiwicmVtb3ZlIiwiX29uTW91 c2VNb3ZlIiwiX29uTW91c2VVcCIsIl9vbkRyYWciXSx0aGlzKX1yZXR1cm4gZSYmKG4uX19w cm90b19fPWUpLG4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUpLG4u cHJvdG90eXBlLmNvbnN0cnVjdG9yPW4sbi5wcm90b3R5cGUuYWRkVG89ZnVuY3Rpb24oZSl7 cmV0dXJuIHRoaXMuX21hcCYmdGhpcy5yZW1vdmUoKSx0aGlzLl9tYXA9ZSx0aGlzLm9wdGlv bnMuY2xvc2VPbkNsaWNrJiZ0aGlzLl9tYXAub24oImNsaWNrIix0aGlzLl9vbkNsb3NlKSx0 aGlzLm9wdGlvbnMuY2xvc2VPbk1vdmUmJnRoaXMuX21hcC5vbigibW92ZSIsdGhpcy5fb25D bG9zZSksdGhpcy5fbWFwLm9uKCJyZW1vdmUiLHRoaXMucmVtb3ZlKSx0aGlzLl91cGRhdGUo KSx0aGlzLl90cmFja1BvaW50ZXI/KHRoaXMuX21hcC5vbigibW91c2Vtb3ZlIix0aGlzLl9v bk1vdXNlTW92ZSksdGhpcy5fbWFwLm9uKCJtb3VzZXVwIix0aGlzLl9vbk1vdXNlVXApLHRo aXMuX2NvbnRhaW5lciYmdGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoIm1hcGJveGds LXBvcHVwLXRyYWNrLXBvaW50ZXIiKSx0aGlzLl9tYXAuX2NhbnZhc0NvbnRhaW5lci5jbGFz c0xpc3QuYWRkKCJtYXBib3hnbC10cmFjay1wb2ludGVyIikpOnRoaXMuX21hcC5vbigibW92 ZSIsdGhpcy5fdXBkYXRlKSx0aGlzLmZpcmUobmV3IHQuRXZlbnQoIm9wZW4iKSksdGhpc30s bi5wcm90b3R5cGUuaXNPcGVuPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9tYXB9LG4ucHJv dG90eXBlLnJlbW92ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250ZW50JiZyLnJlbW92 ZSh0aGlzLl9jb250ZW50KSx0aGlzLl9jb250YWluZXImJihyLnJlbW92ZSh0aGlzLl9jb250 YWluZXIpLGRlbGV0ZSB0aGlzLl9jb250YWluZXIpLHRoaXMuX21hcCYmKHRoaXMuX21hcC5v ZmYoIm1vdmUiLHRoaXMuX3VwZGF0ZSksdGhpcy5fbWFwLm9mZigibW92ZSIsdGhpcy5fb25D bG9zZSksdGhpcy5fbWFwLm9mZigiY2xpY2siLHRoaXMuX29uQ2xvc2UpLHRoaXMuX21hcC5v ZmYoInJlbW92ZSIsdGhpcy5yZW1vdmUpLHRoaXMuX21hcC5vZmYoIm1vdXNlbW92ZSIsdGhp cy5fb25Nb3VzZU1vdmUpLHRoaXMuX21hcC5vZmYoIm1vdXNldXAiLHRoaXMuX29uTW91c2VV cCksdGhpcy5fbWFwLm9mZigiZHJhZyIsdGhpcy5fb25EcmFnKSxkZWxldGUgdGhpcy5fbWFw KSx0aGlzLmZpcmUobmV3IHQuRXZlbnQoImNsb3NlIikpLHRoaXN9LG4ucHJvdG90eXBlLmdl dExuZ0xhdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9sbmdMYXR9LG4ucHJvdG90eXBlLnNl dExuZ0xhdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fbG5nTGF0PXQuTG5nTGF0LmNvbnZl cnQoZSksdGhpcy5fcG9zPW51bGwsdGhpcy5fdHJhY2tQb2ludGVyPSExLHRoaXMuX3VwZGF0 ZSgpLHRoaXMuX21hcCYmKHRoaXMuX21hcC5vbigibW92ZSIsdGhpcy5fdXBkYXRlKSx0aGlz Ll9tYXAub2ZmKCJtb3VzZW1vdmUiLHRoaXMuX29uTW91c2VNb3ZlKSx0aGlzLl9jb250YWlu ZXImJnRoaXMuX2NvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJtYXBib3hnbC1wb3B1cC10 cmFjay1wb2ludGVyIiksdGhpcy5fbWFwLl9jYW52YXNDb250YWluZXIuY2xhc3NMaXN0LnJl bW92ZSgibWFwYm94Z2wtdHJhY2stcG9pbnRlciIpKSx0aGlzfSxuLnByb3RvdHlwZS50cmFj a1BvaW50ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhY2tQb2ludGVyPSEwLHRoaXMu X3Bvcz1udWxsLHRoaXMuX3VwZGF0ZSgpLHRoaXMuX21hcCYmKHRoaXMuX21hcC5vZmYoIm1v dmUiLHRoaXMuX3VwZGF0ZSksdGhpcy5fbWFwLm9uKCJtb3VzZW1vdmUiLHRoaXMuX29uTW91 c2VNb3ZlKSx0aGlzLl9tYXAub24oImRyYWciLHRoaXMuX29uRHJhZyksdGhpcy5fY29udGFp bmVyJiZ0aGlzLl9jb250YWluZXIuY2xhc3NMaXN0LmFkZCgibWFwYm94Z2wtcG9wdXAtdHJh Y2stcG9pbnRlciIpLHRoaXMuX21hcC5fY2FudmFzQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQo Im1hcGJveGdsLXRyYWNrLXBvaW50ZXIiKSksdGhpc30sbi5wcm90b3R5cGUuZ2V0RWxlbWVu dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250YWluZXJ9LG4ucHJvdG90eXBlLnNldFRl eHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0RE9NQ29udGVudCh0LndpbmRvdy5kb2N1 bWVudC5jcmVhdGVUZXh0Tm9kZShlKSl9LG4ucHJvdG90eXBlLnNldEhUTUw9ZnVuY3Rpb24o ZSl7dmFyIHIsbj10LndpbmRvdy5kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCks aT10LndpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJib2R5Iik7Zm9yKGkuaW5uZXJI VE1MPWU7cj1pLmZpcnN0Q2hpbGQ7KW4uYXBwZW5kQ2hpbGQocik7cmV0dXJuIHRoaXMuc2V0 RE9NQ29udGVudChuKX0sbi5wcm90b3R5cGUuZ2V0TWF4V2lkdGg9ZnVuY3Rpb24oKXtyZXR1 cm4gdGhpcy5fY29udGFpbmVyJiZ0aGlzLl9jb250YWluZXIuc3R5bGUubWF4V2lkdGh9LG4u cHJvdG90eXBlLnNldE1heFdpZHRoPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMu bWF4V2lkdGg9dCx0aGlzLl91cGRhdGUoKSx0aGlzfSxuLnByb3RvdHlwZS5zZXRET01Db250 ZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jcmVhdGVDb250ZW50KCksdGhpcy5fY29u dGVudC5hcHBlbmRDaGlsZCh0KSx0aGlzLl91cGRhdGUoKSx0aGlzfSxuLnByb3RvdHlwZS5h ZGRDbGFzc05hbWU9ZnVuY3Rpb24odCl7dGhpcy5fY29udGFpbmVyJiZ0aGlzLl9jb250YWlu ZXIuY2xhc3NMaXN0LmFkZCh0KX0sbi5wcm90b3R5cGUucmVtb3ZlQ2xhc3NOYW1lPWZ1bmN0 aW9uKHQpe3RoaXMuX2NvbnRhaW5lciYmdGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5yZW1v dmUodCl9LG4ucHJvdG90eXBlLnRvZ2dsZUNsYXNzTmFtZT1mdW5jdGlvbih0KXtpZih0aGlz Ll9jb250YWluZXIpcmV0dXJuIHRoaXMuX2NvbnRhaW5lci5jbGFzc0xpc3QudG9nZ2xlKHQp fSxuLnByb3RvdHlwZS5fY3JlYXRlQ29udGVudD1mdW5jdGlvbigpe3RoaXMuX2NvbnRlbnQm JnIucmVtb3ZlKHRoaXMuX2NvbnRlbnQpLHRoaXMuX2NvbnRlbnQ9ci5jcmVhdGUoImRpdiIs Im1hcGJveGdsLXBvcHVwLWNvbnRlbnQiLHRoaXMuX2NvbnRhaW5lciksdGhpcy5vcHRpb25z LmNsb3NlQnV0dG9uJiYodGhpcy5fY2xvc2VCdXR0b249ci5jcmVhdGUoImJ1dHRvbiIsIm1h cGJveGdsLXBvcHVwLWNsb3NlLWJ1dHRvbiIsdGhpcy5fY29udGVudCksdGhpcy5fY2xvc2VC dXR0b24udHlwZT0iYnV0dG9uIix0aGlzLl9jbG9zZUJ1dHRvbi5zZXRBdHRyaWJ1dGUoImFy aWEtbGFiZWwiLCJDbG9zZSBwb3B1cCIpLHRoaXMuX2Nsb3NlQnV0dG9uLmlubmVySFRNTD0i JiMyMTU7Iix0aGlzLl9jbG9zZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhp cy5fb25DbG9zZSkpfSxuLnByb3RvdHlwZS5fb25Nb3VzZVVwPWZ1bmN0aW9uKHQpe3RoaXMu X3VwZGF0ZSh0LnBvaW50KX0sbi5wcm90b3R5cGUuX29uTW91c2VNb3ZlPWZ1bmN0aW9uKHQp e3RoaXMuX3VwZGF0ZSh0LnBvaW50KX0sbi5wcm90b3R5cGUuX29uRHJhZz1mdW5jdGlvbih0 KXt0aGlzLl91cGRhdGUodC5wb2ludCl9LG4ucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24o ZSl7dmFyIG49dGhpcyxpPXRoaXMuX2xuZ0xhdHx8dGhpcy5fdHJhY2tQb2ludGVyO2lmKHRo aXMuX21hcCYmaSYmdGhpcy5fY29udGVudCYmKHRoaXMuX2NvbnRhaW5lcnx8KHRoaXMuX2Nv bnRhaW5lcj1yLmNyZWF0ZSgiZGl2IiwibWFwYm94Z2wtcG9wdXAiLHRoaXMuX21hcC5nZXRD b250YWluZXIoKSksdGhpcy5fdGlwPXIuY3JlYXRlKCJkaXYiLCJtYXBib3hnbC1wb3B1cC10 aXAiLHRoaXMuX2NvbnRhaW5lciksdGhpcy5fY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMu X2NvbnRlbnQpLHRoaXMub3B0aW9ucy5jbGFzc05hbWUmJnRoaXMub3B0aW9ucy5jbGFzc05h bWUuc3BsaXQoIiAiKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gbi5fY29udGFpbmVy LmNsYXNzTGlzdC5hZGQodCl9KSksdGhpcy5fdHJhY2tQb2ludGVyJiZ0aGlzLl9jb250YWlu ZXIuY2xhc3NMaXN0LmFkZCgibWFwYm94Z2wtcG9wdXAtdHJhY2stcG9pbnRlciIpKSx0aGlz Lm9wdGlvbnMubWF4V2lkdGgmJnRoaXMuX2NvbnRhaW5lci5zdHlsZS5tYXhXaWR0aCE9PXRo aXMub3B0aW9ucy5tYXhXaWR0aCYmKHRoaXMuX2NvbnRhaW5lci5zdHlsZS5tYXhXaWR0aD10 aGlzLm9wdGlvbnMubWF4V2lkdGgpLHRoaXMuX21hcC50cmFuc2Zvcm0ucmVuZGVyV29ybGRD b3BpZXMmJiF0aGlzLl90cmFja1BvaW50ZXImJih0aGlzLl9sbmdMYXQ9T2kodGhpcy5fbG5n TGF0LHRoaXMuX3Bvcyx0aGlzLl9tYXAudHJhbnNmb3JtKSksIXRoaXMuX3RyYWNrUG9pbnRl cnx8ZSkpe3ZhciBhPXRoaXMuX3Bvcz10aGlzLl90cmFja1BvaW50ZXImJmU/ZTp0aGlzLl9t YXAucHJvamVjdCh0aGlzLl9sbmdMYXQpLG89dGhpcy5vcHRpb25zLmFuY2hvcixzPWZ1bmN0 aW9uIGUocil7aWYocil7aWYoIm51bWJlciI9PXR5cGVvZiByKXt2YXIgbj1NYXRoLnJvdW5k KE1hdGguc3FydCguNSpNYXRoLnBvdyhyLDIpKSk7cmV0dXJue2NlbnRlcjpuZXcgdC5Qb2lu dCgwLDApLHRvcDpuZXcgdC5Qb2ludCgwLHIpLCJ0b3AtbGVmdCI6bmV3IHQuUG9pbnQobixu KSwidG9wLXJpZ2h0IjpuZXcgdC5Qb2ludCgtbixuKSxib3R0b206bmV3IHQuUG9pbnQoMCwt ciksImJvdHRvbS1sZWZ0IjpuZXcgdC5Qb2ludChuLC1uKSwiYm90dG9tLXJpZ2h0IjpuZXcg dC5Qb2ludCgtbiwtbiksbGVmdDpuZXcgdC5Qb2ludChyLDApLHJpZ2h0Om5ldyB0LlBvaW50 KC1yLDApfX1pZihyIGluc3RhbmNlb2YgdC5Qb2ludHx8QXJyYXkuaXNBcnJheShyKSl7dmFy IGk9dC5Qb2ludC5jb252ZXJ0KHIpO3JldHVybntjZW50ZXI6aSx0b3A6aSwidG9wLWxlZnQi OmksInRvcC1yaWdodCI6aSxib3R0b206aSwiYm90dG9tLWxlZnQiOmksImJvdHRvbS1yaWdo dCI6aSxsZWZ0OmkscmlnaHQ6aX19cmV0dXJue2NlbnRlcjp0LlBvaW50LmNvbnZlcnQoci5j ZW50ZXJ8fFswLDBdKSx0b3A6dC5Qb2ludC5jb252ZXJ0KHIudG9wfHxbMCwwXSksInRvcC1s ZWZ0Ijp0LlBvaW50LmNvbnZlcnQoclsidG9wLWxlZnQiXXx8WzAsMF0pLCJ0b3AtcmlnaHQi OnQuUG9pbnQuY29udmVydChyWyJ0b3AtcmlnaHQiXXx8WzAsMF0pLGJvdHRvbTp0LlBvaW50 LmNvbnZlcnQoci5ib3R0b218fFswLDBdKSwiYm90dG9tLWxlZnQiOnQuUG9pbnQuY29udmVy dChyWyJib3R0b20tbGVmdCJdfHxbMCwwXSksImJvdHRvbS1yaWdodCI6dC5Qb2ludC5jb252 ZXJ0KHJbImJvdHRvbS1yaWdodCJdfHxbMCwwXSksbGVmdDp0LlBvaW50LmNvbnZlcnQoci5s ZWZ0fHxbMCwwXSkscmlnaHQ6dC5Qb2ludC5jb252ZXJ0KHIucmlnaHR8fFswLDBdKX19cmV0 dXJuIGUobmV3IHQuUG9pbnQoMCwwKSl9KHRoaXMub3B0aW9ucy5vZmZzZXQpO2lmKCFvKXt2 YXIgbCxjPXRoaXMuX2NvbnRhaW5lci5vZmZzZXRXaWR0aCx1PXRoaXMuX2NvbnRhaW5lci5v ZmZzZXRIZWlnaHQ7bD1hLnkrcy5ib3R0b20ueTx1P1sidG9wIl06YS55PnRoaXMuX21hcC50 cmFuc2Zvcm0uaGVpZ2h0LXU/WyJib3R0b20iXTpbXSxhLng8Yy8yP2wucHVzaCgibGVmdCIp OmEueD50aGlzLl9tYXAudHJhbnNmb3JtLndpZHRoLWMvMiYmbC5wdXNoKCJyaWdodCIpLG89 MD09PWwubGVuZ3RoPyJib3R0b20iOmwuam9pbigiLSIpfXZhciBmPWEuYWRkKHNbb10pLnJv dW5kKCk7ci5zZXRUcmFuc2Zvcm0odGhpcy5fY29udGFpbmVyLHppW29dKyIgdHJhbnNsYXRl KCIrZi54KyJweCwiK2YueSsicHgpIiksRGkodGhpcy5fY29udGFpbmVyLG8sInBvcHVwIil9 fSxuLnByb3RvdHlwZS5fb25DbG9zZT1mdW5jdGlvbigpe3RoaXMucmVtb3ZlKCl9LG59KHQu RXZlbnRlZCk7dmFyIFppPXt2ZXJzaW9uOnQudmVyc2lvbixzdXBwb3J0ZWQ6ZSxzZXRSVExU ZXh0UGx1Z2luOnQuc2V0UlRMVGV4dFBsdWdpbixnZXRSVExUZXh0UGx1Z2luU3RhdHVzOnQu Z2V0UlRMVGV4dFBsdWdpblN0YXR1cyxNYXA6RWksTmF2aWdhdGlvbkNvbnRyb2w6UGksR2Vv bG9jYXRlQ29udHJvbDpVaSxBdHRyaWJ1dGlvbkNvbnRyb2w6YmksU2NhbGVDb250cm9sOkhp LEZ1bGxzY3JlZW5Db250cm9sOllpLFBvcHVwOlhpLE1hcmtlcjpGaSxTdHlsZTpxZSxMbmdM YXQ6dC5MbmdMYXQsTG5nTGF0Qm91bmRzOnQuTG5nTGF0Qm91bmRzLFBvaW50OnQuUG9pbnQs TWVyY2F0b3JDb29yZGluYXRlOnQuTWVyY2F0b3JDb29yZGluYXRlLEV2ZW50ZWQ6dC5FdmVu dGVkLGNvbmZpZzp0LmNvbmZpZyxwcmV3YXJtOmZ1bmN0aW9uKCl7QnQoKS5hY3F1aXJlKHp0 KX0sY2xlYXJQcmV3YXJtZWRSZXNvdXJjZXM6ZnVuY3Rpb24oKXt2YXIgdD1SdDt0JiYodC5p c1ByZWxvYWRlZCgpJiYxPT09dC5udW1BY3RpdmUoKT8odC5yZWxlYXNlKHp0KSxSdD1udWxs KTpjb25zb2xlLndhcm4oIkNvdWxkIG5vdCBjbGVhciBXZWJXb3JrZXJzIHNpbmNlIHRoZXJl IGFyZSBhY3RpdmUgTWFwIGluc3RhbmNlcyB0aGF0IHN0aWxsIHJlZmVyZW5jZSBpdC4gVGhl IHByZS13YXJtZWQgV2ViV29ya2VyIHBvb2wgY2FuIG9ubHkgYmUgY2xlYXJlZCB3aGVuIGFs bCBtYXAgaW5zdGFuY2VzIGhhdmUgYmVlbiByZW1vdmVkIHdpdGggbWFwLnJlbW92ZSgpIikp fSxnZXQgYWNjZXNzVG9rZW4oKXtyZXR1cm4gdC5jb25maWcuQUNDRVNTX1RPS0VOfSxzZXQg YWNjZXNzVG9rZW4oZSl7dC5jb25maWcuQUNDRVNTX1RPS0VOPWV9LGdldCBiYXNlQXBpVXJs KCl7cmV0dXJuIHQuY29uZmlnLkFQSV9VUkx9LHNldCBiYXNlQXBpVXJsKGUpe3QuY29uZmln LkFQSV9VUkw9ZX0sZ2V0IHdvcmtlckNvdW50KCl7cmV0dXJuIER0LndvcmtlckNvdW50fSxz ZXQgd29ya2VyQ291bnQodCl7RHQud29ya2VyQ291bnQ9dH0sZ2V0IG1heFBhcmFsbGVsSW1h Z2VSZXF1ZXN0cygpe3JldHVybiB0LmNvbmZpZy5NQVhfUEFSQUxMRUxfSU1BR0VfUkVRVUVT VFN9LHNldCBtYXhQYXJhbGxlbEltYWdlUmVxdWVzdHMoZSl7dC5jb25maWcuTUFYX1BBUkFM TEVMX0lNQUdFX1JFUVVFU1RTPWV9LGNsZWFyU3RvcmFnZTpmdW5jdGlvbihlKXt0LmNsZWFy VGlsZUNhY2hlKGUpfSx3b3JrZXJVcmw6IiJ9O3JldHVybiBaaX0pKSxyfSkpfSx7fV0sMjQw OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1NYXRoLmxvZzJ8fGZ1 bmN0aW9uKHQpe3JldHVybiBNYXRoLmxvZyh0KSpNYXRoLkxPRzJFfX0se31dLDI0MTpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtlfHwo ZT10LHQ9d2luZG93KTt2YXIgcj0wLGk9MCxhPTAsbz17c2hpZnQ6ITEsYWx0OiExLGNvbnRy b2w6ITEsbWV0YTohMX0scz0hMTtmdW5jdGlvbiBsKHQpe3ZhciBlPSExO3JldHVybiJhbHRL ZXkiaW4gdCYmKGU9ZXx8dC5hbHRLZXkhPT1vLmFsdCxvLmFsdD0hIXQuYWx0S2V5KSwic2hp ZnRLZXkiaW4gdCYmKGU9ZXx8dC5zaGlmdEtleSE9PW8uc2hpZnQsby5zaGlmdD0hIXQuc2hp ZnRLZXkpLCJjdHJsS2V5ImluIHQmJihlPWV8fHQuY3RybEtleSE9PW8uY29udHJvbCxvLmNv bnRyb2w9ISF0LmN0cmxLZXkpLCJtZXRhS2V5ImluIHQmJihlPWV8fHQubWV0YUtleSE9PW8u bWV0YSxvLm1ldGE9ISF0Lm1ldGFLZXkpLGV9ZnVuY3Rpb24gYyh0LHMpe3ZhciBjPW4ueChz KSx1PW4ueShzKTsiYnV0dG9ucyJpbiBzJiYodD0wfHMuYnV0dG9ucyksKHQhPT1yfHxjIT09 aXx8dSE9PWF8fGwocykpJiYocj0wfHQsaT1jfHwwLGE9dXx8MCxlJiZlKHIsaSxhLG8pKX1m dW5jdGlvbiB1KHQpe2MoMCx0KX1mdW5jdGlvbiBmKCl7KHJ8fGl8fGF8fG8uc2hpZnR8fG8u YWx0fHxvLm1ldGF8fG8uY29udHJvbCkmJihpPWE9MCxyPTAsby5zaGlmdD1vLmFsdD1vLmNv bnRyb2w9by5tZXRhPSExLGUmJmUoMCwwLDAsbykpfWZ1bmN0aW9uIGgodCl7bCh0KSYmZSYm ZShyLGksYSxvKX1mdW5jdGlvbiBwKHQpezA9PT1uLmJ1dHRvbnModCk/YygwLHQpOmMocix0 KX1mdW5jdGlvbiBkKHQpe2MocnxuLmJ1dHRvbnModCksdCl9ZnVuY3Rpb24gbSh0KXtjKHIm fm4uYnV0dG9ucyh0KSx0KX1mdW5jdGlvbiBnKCl7c3x8KHM9ITAsdC5hZGRFdmVudExpc3Rl bmVyKCJtb3VzZW1vdmUiLHApLHQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixkKSx0 LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLG0pLHQuYWRkRXZlbnRMaXN0ZW5lcigibW91 c2VsZWF2ZSIsdSksdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWVudGVyIix1KSx0LmFkZEV2 ZW50TGlzdGVuZXIoIm1vdXNlb3V0Iix1KSx0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3Zl ciIsdSksdC5hZGRFdmVudExpc3RlbmVyKCJibHVyIixmKSx0LmFkZEV2ZW50TGlzdGVuZXIo ImtleXVwIixoKSx0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGgpLHQuYWRkRXZlbnRM aXN0ZW5lcigia2V5cHJlc3MiLGgpLHQhPT13aW5kb3cmJih3aW5kb3cuYWRkRXZlbnRMaXN0 ZW5lcigiYmx1ciIsZiksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIixoKSx3aW5k b3cuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsaCksd2luZG93LmFkZEV2ZW50TGlzdGVu ZXIoImtleXByZXNzIixoKSkpfWcoKTt2YXIgdj17ZWxlbWVudDp0fTtyZXR1cm4gT2JqZWN0 LmRlZmluZVByb3BlcnRpZXModix7ZW5hYmxlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHN9 LHNldDpmdW5jdGlvbihlKXtlP2coKTpmdW5jdGlvbigpe2lmKCFzKXJldHVybjtzPSExLHQu cmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIixwKSx0LnJlbW92ZUV2ZW50TGlzdGVu ZXIoIm1vdXNlZG93biIsZCksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIixtKSx0 LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLHUpLHQucmVtb3ZlRXZlbnRMaXN0 ZW5lcigibW91c2VlbnRlciIsdSksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW91dCIs dSksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLHUpLHQucmVtb3ZlRXZlbnRM aXN0ZW5lcigiYmx1ciIsZiksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXl1cCIsaCksdC5y ZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIixoKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIo ImtleXByZXNzIixoKSx0IT09d2luZG93JiYod2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIo ImJsdXIiLGYpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXl1cCIsaCksd2luZG93 LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLGgpLHdpbmRvdy5yZW1vdmVFdmVudExp c3RlbmVyKCJrZXlwcmVzcyIsaCkpfSgpfSxlbnVtZXJhYmxlOiEwfSxidXR0b25zOntnZXQ6 ZnVuY3Rpb24oKXtyZXR1cm4gcn0sZW51bWVyYWJsZTohMH0seDp7Z2V0OmZ1bmN0aW9uKCl7 cmV0dXJuIGl9LGVudW1lcmFibGU6ITB9LHk6e2dldDpmdW5jdGlvbigpe3JldHVybiBhfSxl bnVtZXJhYmxlOiEwfSxtb2RzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gb30sZW51bWVyYWJs ZTohMH19KSx2fTt2YXIgbj10KCJtb3VzZS1ldmVudCIpfSx7Im1vdXNlLWV2ZW50IjoyNDN9 XSwyNDI6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj17bGVmdDowLHRvcDowfTtlLmV4cG9ydHM9 ZnVuY3Rpb24odCxlLHIpe2U9ZXx8dC5jdXJyZW50VGFyZ2V0fHx0LnNyY0VsZW1lbnQsQXJy YXkuaXNBcnJheShyKXx8KHI9WzAsMF0pO3ZhciBpPXQuY2xpZW50WHx8MCxhPXQuY2xpZW50 WXx8MCxvPShzPWUscz09PXdpbmRvd3x8cz09PWRvY3VtZW50fHxzPT09ZG9jdW1lbnQuYm9k eT9uOnMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO3ZhciBzO3JldHVybiByWzBdPWktby5s ZWZ0LHJbMV09YS1vLnRvcCxyfX0se31dLDI0MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0IjtmdW5jdGlvbiBuKHQpe3JldHVybiB0LnRhcmdldHx8dC5zcmNFbGVtZW50fHx3aW5k b3d9ci5idXR0b25zPWZ1bmN0aW9uKHQpe2lmKCJvYmplY3QiPT10eXBlb2YgdCl7aWYoImJ1 dHRvbnMiaW4gdClyZXR1cm4gdC5idXR0b25zO2lmKCJ3aGljaCJpbiB0KXtpZigyPT09KGU9 dC53aGljaCkpcmV0dXJuIDQ7aWYoMz09PWUpcmV0dXJuIDI7aWYoZT4wKXJldHVybiAxPDxl LTF9ZWxzZSBpZigiYnV0dG9uImluIHQpe3ZhciBlO2lmKDE9PT0oZT10LmJ1dHRvbikpcmV0 dXJuIDQ7aWYoMj09PWUpcmV0dXJuIDI7aWYoZT49MClyZXR1cm4gMTw8ZX19cmV0dXJuIDB9 LHIuZWxlbWVudD1uLHIueD1mdW5jdGlvbih0KXtpZigib2JqZWN0Ij09dHlwZW9mIHQpe2lm KCJvZmZzZXRYImluIHQpcmV0dXJuIHQub2Zmc2V0WDt2YXIgZT1uKHQpLmdldEJvdW5kaW5n Q2xpZW50UmVjdCgpO3JldHVybiB0LmNsaWVudFgtZS5sZWZ0fXJldHVybiAwfSxyLnk9ZnVu Y3Rpb24odCl7aWYoIm9iamVjdCI9PXR5cGVvZiB0KXtpZigib2Zmc2V0WSJpbiB0KXJldHVy biB0Lm9mZnNldFk7dmFyIGU9bih0KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4g dC5jbGllbnRZLWUudG9wfXJldHVybiAwfX0se31dLDI0NDpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCJ0by1weCIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7 ImZ1bmN0aW9uIj09dHlwZW9mIHQmJihyPSEhZSxlPXQsdD13aW5kb3cpO3ZhciBpPW4oImV4 Iix0KSxhPWZ1bmN0aW9uKHQpe3ImJnQucHJldmVudERlZmF1bHQoKTt2YXIgbj10LmRlbHRh WHx8MCxhPXQuZGVsdGFZfHwwLG89dC5kZWx0YVp8fDAscz0xO3N3aXRjaCh0LmRlbHRhTW9k ZSl7Y2FzZSAxOnM9aTticmVhaztjYXNlIDI6cz13aW5kb3cuaW5uZXJIZWlnaHR9aWYoYSo9 cyxvKj1zLChuKj1zKXx8YXx8bylyZXR1cm4gZShuLGEsbyx0KX07cmV0dXJuIHQuYWRkRXZl bnRMaXN0ZW5lcigid2hlZWwiLGEpLGF9fSx7InRvLXB4IjozMTR9XSwyNDU6W2Z1bmN0aW9u KHQsZSxyKXsoZnVuY3Rpb24odCxyKXsoZnVuY3Rpb24oKXsKLyohIE5hdGl2ZSBQcm9taXNl IE9ubHkKICAgIHYwLjguMSAoYykgS3lsZSBTaW1wc29uCiAgICBNSVQgTGljZW5zZTogaHR0 cDovL2dldGlmeS5taXQtbGljZW5zZS5vcmcKKi8KIWZ1bmN0aW9uKHQscixuKXtyW3RdPXJb dF18fG4oKSx2b2lkIDAhPT1lJiZlLmV4cG9ydHMmJihlLmV4cG9ydHM9clt0XSl9KCJQcm9t aXNlIix2b2lkIDAhPT10P3Q6dGhpcywoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIHQs ZSxuLGk9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxhPXZvaWQgMCE9PXI/ZnVuY3Rpb24o dCl7cmV0dXJuIHIodCl9OnNldFRpbWVvdXQ7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh7 fSwieCIse30pLHQ9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9w ZXJ0eSh0LGUse3ZhbHVlOnIsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiExIT09bn0pfX1j YXRjaChlKXt0PWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdFtlXT1yLHR9fWZ1bmN0aW9uIG8o dCxyKXtuLmFkZCh0LHIpLGV8fChlPWEobi5kcmFpbikpfWZ1bmN0aW9uIHModCl7dmFyIGUs cj10eXBlb2YgdDtyZXR1cm4gbnVsbD09dHx8Im9iamVjdCIhPXImJiJmdW5jdGlvbiIhPXJ8 fChlPXQudGhlbiksImZ1bmN0aW9uIj09dHlwZW9mIGUmJmV9ZnVuY3Rpb24gbCgpe2Zvcih2 YXIgdD0wO3Q8dGhpcy5jaGFpbi5sZW5ndGg7dCsrKWModGhpcywxPT09dGhpcy5zdGF0ZT90 aGlzLmNoYWluW3RdLnN1Y2Nlc3M6dGhpcy5jaGFpblt0XS5mYWlsdXJlLHRoaXMuY2hhaW5b dF0pO3RoaXMuY2hhaW4ubGVuZ3RoPTB9ZnVuY3Rpb24gYyh0LGUscil7dmFyIG4saTt0cnl7 ITE9PT1lP3IucmVqZWN0KHQubXNnKToobj0hMD09PWU/dC5tc2c6ZS5jYWxsKHZvaWQgMCx0 Lm1zZykpPT09ci5wcm9taXNlP3IucmVqZWN0KFR5cGVFcnJvcigiUHJvbWlzZS1jaGFpbiBj eWNsZSIpKTooaT1zKG4pKT9pLmNhbGwobixyLnJlc29sdmUsci5yZWplY3QpOnIucmVzb2x2 ZShuKX1jYXRjaCh0KXtyLnJlamVjdCh0KX19ZnVuY3Rpb24gdSh0KXt2YXIgZSxyPXRoaXM7 aWYoIXIudHJpZ2dlcmVkKXtyLnRyaWdnZXJlZD0hMCxyLmRlZiYmKHI9ci5kZWYpO3RyeXso ZT1zKHQpKT9vKChmdW5jdGlvbigpe3ZhciBuPW5ldyBwKHIpO3RyeXtlLmNhbGwodCwoZnVu Y3Rpb24oKXt1LmFwcGx5KG4sYXJndW1lbnRzKX0pLChmdW5jdGlvbigpe2YuYXBwbHkobixh cmd1bWVudHMpfSkpfWNhdGNoKHQpe2YuY2FsbChuLHQpfX0pKTooci5tc2c9dCxyLnN0YXRl PTEsci5jaGFpbi5sZW5ndGg+MCYmbyhsLHIpKX1jYXRjaCh0KXtmLmNhbGwobmV3IHAociks dCl9fX1mdW5jdGlvbiBmKHQpe3ZhciBlPXRoaXM7ZS50cmlnZ2VyZWR8fChlLnRyaWdnZXJl ZD0hMCxlLmRlZiYmKGU9ZS5kZWYpLGUubXNnPXQsZS5zdGF0ZT0yLGUuY2hhaW4ubGVuZ3Ro PjAmJm8obCxlKSl9ZnVuY3Rpb24gaCh0LGUscixuKXtmb3IodmFyIGk9MDtpPGUubGVuZ3Ro O2krKykhZnVuY3Rpb24oaSl7dC5yZXNvbHZlKGVbaV0pLnRoZW4oKGZ1bmN0aW9uKHQpe3Io aSx0KX0pLG4pfShpKX1mdW5jdGlvbiBwKHQpe3RoaXMuZGVmPXQsdGhpcy50cmlnZ2VyZWQ9 ITF9ZnVuY3Rpb24gZCh0KXt0aGlzLnByb21pc2U9dCx0aGlzLnN0YXRlPTAsdGhpcy50cmln Z2VyZWQ9ITEsdGhpcy5jaGFpbj1bXSx0aGlzLm1zZz12b2lkIDB9ZnVuY3Rpb24gbSh0KXtp ZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBUeXBlRXJyb3IoIk5vdCBhIGZ1bmN0aW9u Iik7aWYoMCE9PXRoaXMuX19OUE9fXyl0aHJvdyBUeXBlRXJyb3IoIk5vdCBhIHByb21pc2Ui KTt0aGlzLl9fTlBPX189MTt2YXIgZT1uZXcgZCh0aGlzKTt0aGlzLnRoZW49ZnVuY3Rpb24o dCxyKXt2YXIgbj17c3VjY2VzczoiZnVuY3Rpb24iIT10eXBlb2YgdHx8dCxmYWlsdXJlOiJm dW5jdGlvbiI9PXR5cGVvZiByJiZyfTtyZXR1cm4gbi5wcm9taXNlPW5ldyB0aGlzLmNvbnN0 cnVjdG9yKChmdW5jdGlvbih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHwiZnVuY3Rp b24iIT10eXBlb2YgZSl0aHJvdyBUeXBlRXJyb3IoIk5vdCBhIGZ1bmN0aW9uIik7bi5yZXNv bHZlPXQsbi5yZWplY3Q9ZX0pKSxlLmNoYWluLnB1c2gobiksMCE9PWUuc3RhdGUmJm8obCxl KSxuLnByb21pc2V9LHRoaXMuY2F0Y2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudGhlbih2 b2lkIDAsdCl9O3RyeXt0LmNhbGwodm9pZCAwLChmdW5jdGlvbih0KXt1LmNhbGwoZSx0KX0p LChmdW5jdGlvbih0KXtmLmNhbGwoZSx0KX0pKX1jYXRjaCh0KXtmLmNhbGwoZSx0KX19bj1m dW5jdGlvbigpe3ZhciB0LHIsbjtmdW5jdGlvbiBpKHQsZSl7dGhpcy5mbj10LHRoaXMuc2Vs Zj1lLHRoaXMubmV4dD12b2lkIDB9cmV0dXJue2FkZDpmdW5jdGlvbihlLGEpe249bmV3IGko ZSxhKSxyP3IubmV4dD1uOnQ9bixyPW4sbj12b2lkIDB9LGRyYWluOmZ1bmN0aW9uKCl7dmFy IG49dDtmb3IodD1yPWU9dm9pZCAwO247KW4uZm4uY2FsbChuLnNlbGYpLG49bi5uZXh0fX19 KCk7dmFyIGc9dCh7fSwiY29uc3RydWN0b3IiLG0sITEpO3JldHVybiBtLnByb3RvdHlwZT1n LHQoZywiX19OUE9fXyIsMCwhMSksdChtLCJyZXNvbHZlIiwoZnVuY3Rpb24odCl7cmV0dXJu IHQmJiJvYmplY3QiPT10eXBlb2YgdCYmMT09PXQuX19OUE9fXz90Om5ldyB0aGlzKChmdW5j dGlvbihlLHIpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlfHwiZnVuY3Rpb24iIT10eXBlb2Yg cil0aHJvdyBUeXBlRXJyb3IoIk5vdCBhIGZ1bmN0aW9uIik7ZSh0KX0pKX0pKSx0KG0sInJl amVjdCIsKGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgdGhpcygoZnVuY3Rpb24oZSxyKXtpZigi ZnVuY3Rpb24iIT10eXBlb2YgZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIHIpdGhyb3cgVHlwZUVy cm9yKCJOb3QgYSBmdW5jdGlvbiIpO3IodCl9KSl9KSksdChtLCJhbGwiLChmdW5jdGlvbih0 KXt2YXIgZT10aGlzO3JldHVybiJbb2JqZWN0IEFycmF5XSIhPWkuY2FsbCh0KT9lLnJlamVj dChUeXBlRXJyb3IoIk5vdCBhbiBhcnJheSIpKTowPT09dC5sZW5ndGg/ZS5yZXNvbHZlKFtd KTpuZXcgZSgoZnVuY3Rpb24ocixuKXtpZigiZnVuY3Rpb24iIT10eXBlb2Ygcnx8ImZ1bmN0 aW9uIiE9dHlwZW9mIG4pdGhyb3cgVHlwZUVycm9yKCJOb3QgYSBmdW5jdGlvbiIpO3ZhciBp PXQubGVuZ3RoLGE9QXJyYXkoaSksbz0wO2goZSx0LChmdW5jdGlvbih0LGUpe2FbdF09ZSwr K289PT1pJiZyKGEpfSksbil9KSl9KSksdChtLCJyYWNlIiwoZnVuY3Rpb24odCl7dmFyIGU9 dGhpcztyZXR1cm4iW29iamVjdCBBcnJheV0iIT1pLmNhbGwodCk/ZS5yZWplY3QoVHlwZUVy cm9yKCJOb3QgYW4gYXJyYXkiKSk6bmV3IGUoKGZ1bmN0aW9uKHIsbil7aWYoImZ1bmN0aW9u IiE9dHlwZW9mIHJ8fCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IFR5cGVFcnJvcigiTm90 IGEgZnVuY3Rpb24iKTtoKGUsdCwoZnVuY3Rpb24odCxlKXtyKGUpfSksbil9KSl9KSksbX0p KX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/ Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBl b2Ygd2luZG93P3dpbmRvdzp7fSx0KCJ0aW1lcnMiKS5zZXRJbW1lZGlhdGUpfSx7dGltZXJz OjMxMX1dLDI0NjpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPU1hdGguUEksaT1jKDEyMCk7ZnVu Y3Rpb24gYSh0LGUscixuKXtyZXR1cm5bIkMiLHQsZSxyLG4scixuXX1mdW5jdGlvbiBvKHQs ZSxyLG4saSxhKXtyZXR1cm5bIkMiLHQvMysyLzMqcixlLzMrMi8zKm4saS8zKzIvMypyLGEv MysyLzMqbixpLGFdfWZ1bmN0aW9uIHModCxlLHIsYSxvLGMsdSxmLGgscCl7aWYocClUPXBb MF0saz1wWzFdLF89cFsyXSx3PXBbM107ZWxzZXt2YXIgZD1sKHQsZSwtbyk7dD1kLngsZT1k Lnk7dmFyIG09KHQtKGY9KGQ9bChmLGgsLW8pKS54KSkvMixnPShlLShoPWQueSkpLzIsdj1t Km0vKHIqcikrZypnLyhhKmEpO3Y+MSYmKHIqPXY9TWF0aC5zcXJ0KHYpLGEqPXYpO3ZhciB5 PXIqcix4PWEqYSxiPShjPT11Py0xOjEpKk1hdGguc3FydChNYXRoLmFicygoeSp4LXkqZypn LXgqbSptKS8oeSpnKmcreCptKm0pKSk7Yj09MS8wJiYoYj0xKTt2YXIgXz1iKnIqZy9hKyh0 K2YpLzIsdz1iKi1hKm0vcisoZStoKS8yLFQ9TWF0aC5hc2luKCgoZS13KS9hKS50b0ZpeGVk KDkpKSxrPU1hdGguYXNpbigoKGgtdykvYSkudG9GaXhlZCg5KSk7KFQ9dDxfP24tVDpUKTww JiYoVD0yKm4rVCksKGs9ZjxfP24tazprKTwwJiYoaz0yKm4rayksdSYmVD5rJiYoVC09Mipu KSwhdSYmaz5UJiYoay09MipuKX1pZihNYXRoLmFicyhrLVQpPmkpe3ZhciBBPWssTT1mLFM9 aDtrPVQraSoodSYmaz5UPzE6LTEpO3ZhciBFPXMoZj1fK3IqTWF0aC5jb3MoayksaD13K2Eq TWF0aC5zaW4oaykscixhLG8sMCx1LE0sUyxbayxBLF8sd10pfXZhciBMPU1hdGgudGFuKChr LVQpLzQpLEM9NC8zKnIqTCxQPTQvMyphKkwsST1bMip0LSh0K0MqTWF0aC5zaW4oVCkpLDIq ZS0oZS1QKk1hdGguY29zKFQpKSxmK0MqTWF0aC5zaW4oayksaC1QKk1hdGguY29zKGspLGYs aF07aWYocClyZXR1cm4gSTtFJiYoST1JLmNvbmNhdChFKSk7Zm9yKHZhciBPPTA7TzxJLmxl bmd0aDspe3ZhciB6PWwoSVtPXSxJW08rMV0sbyk7SVtPKytdPXoueCxJW08rK109ei55fXJl dHVybiBJfWZ1bmN0aW9uIGwodCxlLHIpe3JldHVybnt4OnQqTWF0aC5jb3MociktZSpNYXRo LnNpbihyKSx5OnQqTWF0aC5zaW4ocikrZSpNYXRoLmNvcyhyKX19ZnVuY3Rpb24gYyh0KXty ZXR1cm4gdCoobi8xODApfWUuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGUscj1bXSxu PTAsaT0wLGw9MCx1PTAsZj1udWxsLGg9bnVsbCxwPTAsZD0wLG09MCxnPXQubGVuZ3RoO208 ZzttKyspe3ZhciB2PXRbbV0seT12WzBdO3N3aXRjaCh5KXtjYXNlIk0iOmw9dlsxXSx1PXZb Ml07YnJlYWs7Y2FzZSJBIjoodj1zKHAsZCx2WzFdLHZbMl0sYyh2WzNdKSx2WzRdLHZbNV0s dls2XSx2WzddKSkudW5zaGlmdCgiQyIpLHYubGVuZ3RoPjcmJihyLnB1c2godi5zcGxpY2Uo MCw3KSksdi51bnNoaWZ0KCJDIikpO2JyZWFrO2Nhc2UiUyI6dmFyIHg9cCxiPWQ7IkMiIT1l JiYiUyIhPWV8fCh4Kz14LW4sYis9Yi1pKSx2PVsiQyIseCxiLHZbMV0sdlsyXSx2WzNdLHZb NF1dO2JyZWFrO2Nhc2UiVCI6IlEiPT1lfHwiVCI9PWU/KGY9MipwLWYsaD0yKmQtaCk6KGY9 cCxoPWQpLHY9byhwLGQsZixoLHZbMV0sdlsyXSk7YnJlYWs7Y2FzZSJRIjpmPXZbMV0saD12 WzJdLHY9byhwLGQsdlsxXSx2WzJdLHZbM10sdls0XSk7YnJlYWs7Y2FzZSJMIjp2PWEocCxk LHZbMV0sdlsyXSk7YnJlYWs7Y2FzZSJIIjp2PWEocCxkLHZbMV0sZCk7YnJlYWs7Y2FzZSJW Ijp2PWEocCxkLHAsdlsxXSk7YnJlYWs7Y2FzZSJaIjp2PWEocCxkLGwsdSl9ZT15LHA9dlt2 Lmxlbmd0aC0yXSxkPXZbdi5sZW5ndGgtMV0sdi5sZW5ndGg+ND8obj12W3YubGVuZ3RoLTRd LGk9dlt2Lmxlbmd0aC0zXSk6KG49cCxpPWQpLHIucHVzaCh2KX1yZXR1cm4gcn19LHt9XSwy NDc6W2Z1bmN0aW9uKHQsZSxyKXsKLyoKb2JqZWN0LWFzc2lnbgooYykgU2luZHJlIFNvcmh1 cwpAbGljZW5zZSBNSVQKKi8KInVzZSBzdHJpY3QiO3ZhciBuPU9iamVjdC5nZXRPd25Qcm9w ZXJ0eVN5bWJvbHMsaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGE9T2JqZWN0 LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtmdW5jdGlvbiBvKHQpe2lmKG51bGw9 PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVk IHdpdGggbnVsbCBvciB1bmRlZmluZWQiKTtyZXR1cm4gT2JqZWN0KHQpfWUuZXhwb3J0cz1m dW5jdGlvbigpe3RyeXtpZighT2JqZWN0LmFzc2lnbilyZXR1cm4hMTt2YXIgdD1uZXcgU3Ry aW5nKCJhYmMiKTtpZih0WzVdPSJkZSIsIjUiPT09T2JqZWN0LmdldE93blByb3BlcnR5TmFt ZXModClbMF0pcmV0dXJuITE7Zm9yKHZhciBlPXt9LHI9MDtyPDEwO3IrKyllWyJfIitTdHJp bmcuZnJvbUNoYXJDb2RlKHIpXT1yO2lmKCIwMTIzNDU2Nzg5IiE9PU9iamVjdC5nZXRPd25Q cm9wZXJ0eU5hbWVzKGUpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19KSkuam9pbigi IikpcmV0dXJuITE7dmFyIG49e307cmV0dXJuImFiY2RlZmdoaWprbG1ub3BxcnN0Ii5zcGxp dCgiIikuZm9yRWFjaCgoZnVuY3Rpb24odCl7blt0XT10fSkpLCJhYmNkZWZnaGlqa2xtbm9w cXJzdCI9PT1PYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LG4pKS5qb2luKCIiKX1jYXRj aCh0KXtyZXR1cm4hMX19KCk/T2JqZWN0LmFzc2lnbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIg cixzLGw9byh0KSxjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7Zm9yKHZhciB1IGluIHI9 T2JqZWN0KGFyZ3VtZW50c1tjXSkpaS5jYWxsKHIsdSkmJihsW3VdPXJbdV0pO2lmKG4pe3M9 bihyKTtmb3IodmFyIGY9MDtmPHMubGVuZ3RoO2YrKylhLmNhbGwocixzW2ZdKSYmKGxbc1tm XV09cltzW2ZdXSl9fXJldHVybiBsfX0se31dLDI0ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVyblt0 XTt2YXIgcj1bdF07InN0cmluZyI9PXR5cGVvZiBlfHxBcnJheS5pc0FycmF5KGUpP2U9e2Jy YWNrZXRzOmV9OmV8fChlPXt9KTt2YXIgbj1lLmJyYWNrZXRzP0FycmF5LmlzQXJyYXkoZS5i cmFja2V0cyk/ZS5icmFja2V0czpbZS5icmFja2V0c106WyJ7fSIsIltdIiwiKCkiXSxpPWUu ZXNjYXBlfHwiX19fIixhPSEhZS5mbGF0O24uZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9 bmV3IFJlZ0V4cChbIlxcIix0WzBdLCJbXlxcIix0WzBdLCJcXCIsdFsxXSwiXSpcXCIsdFsx XV0uam9pbigiIikpLG49W107ZnVuY3Rpb24gYShlLGEsbyl7dmFyIHM9ci5wdXNoKGUuc2xp Y2UodFswXS5sZW5ndGgsLXRbMV0ubGVuZ3RoKSktMTtyZXR1cm4gbi5wdXNoKHMpLGkrcytp fXIuZm9yRWFjaCgoZnVuY3Rpb24odCxuKXtmb3IodmFyIGksbz0wO3QhPWk7KWlmKGk9dCx0 PXQucmVwbGFjZShlLGEpLG8rKz4xZTQpdGhyb3cgRXJyb3IoIlJlZmVyZW5jZXMgaGF2ZSBj aXJjdWxhciBkZXBlbmRlbmN5LiBQbGVhc2UsIGNoZWNrIHRoZW0uIik7cltuXT10fSkpLG49 bi5yZXZlcnNlKCkscj1yLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG4uZm9yRWFjaCgoZnVu Y3Rpb24ocil7ZT1lLnJlcGxhY2UobmV3IFJlZ0V4cCgiKFxcIitpK3IrIlxcIitpKyIpIiwi ZyIpLHRbMF0rIiQxIit0WzFdKX0pKSxlfSkpfSkpO3ZhciBvPW5ldyBSZWdFeHAoIlxcIitp KyIoWzAtOV0rKVxcIitpKTtyZXR1cm4gYT9yOmZ1bmN0aW9uIHQoZSxyLG4pe2Zvcih2YXIg aSxhPVtdLHM9MDtpPW8uZXhlYyhlKTspe2lmKHMrKz4xZTQpdGhyb3cgRXJyb3IoIkNpcmN1 bGFyIHJlZmVyZW5jZXMgaW4gcGFyZW50aGVzaXMiKTthLnB1c2goZS5zbGljZSgwLGkuaW5k ZXgpKSxhLnB1c2godChyW2lbMV1dLHIpKSxlPWUuc2xpY2UoaS5pbmRleCtpWzBdLmxlbmd0 aCl9cmV0dXJuIGEucHVzaChlKSxhfShyWzBdLHIpfWZ1bmN0aW9uIGkodCxlKXtpZihlJiZl LmZsYXQpe3ZhciByLG49ZSYmZS5lc2NhcGV8fCJfX18iLGk9dFswXTtpZighaSlyZXR1cm4i Ijtmb3IodmFyIGE9bmV3IFJlZ0V4cCgiXFwiK24rIihbMC05XSspXFwiK24pLG89MDtpIT1y Oyl7aWYobysrPjFlNCl0aHJvdyBFcnJvcigiQ2lyY3VsYXIgcmVmZXJlbmNlcyBpbiAiK3Qp O3I9aSxpPWkucmVwbGFjZShhLHMpfXJldHVybiBpfXJldHVybiB0LnJlZHVjZSgoZnVuY3Rp b24gdChlLHIpe3JldHVybiBBcnJheS5pc0FycmF5KHIpJiYocj1yLnJlZHVjZSh0LCIiKSks ZStyfSksIiIpO2Z1bmN0aW9uIHMoZSxyKXtpZihudWxsPT10W3JdKXRocm93IEVycm9yKCJS ZWZlcmVuY2UgIityKyJpcyB1bmRlZmluZWQiKTtyZXR1cm4gdFtyXX19ZnVuY3Rpb24gYSh0 LGUpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP2kodCxlKTpuKHQsZSl9YS5wYXJzZT1uLGEu c3RyaW5naWZ5PWksZS5leHBvcnRzPWF9LHt9XSwyNDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgicGljay1ieS1hbGlhcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0 KXt2YXIgZTthcmd1bWVudHMubGVuZ3RoPjEmJih0PWFyZ3VtZW50cyk7InN0cmluZyI9PXR5 cGVvZiB0P3Q9dC5zcGxpdCgvXHMvKS5tYXAocGFyc2VGbG9hdCk6Im51bWJlciI9PXR5cGVv ZiB0JiYodD1bdF0pO3QubGVuZ3RoJiYibnVtYmVyIj09dHlwZW9mIHRbMF0/ZT0xPT09dC5s ZW5ndGg/e3dpZHRoOnRbMF0saGVpZ2h0OnRbMF0seDowLHk6MH06Mj09PXQubGVuZ3RoP3t3 aWR0aDp0WzBdLGhlaWdodDp0WzFdLHg6MCx5OjB9Ont4OnRbMF0seTp0WzFdLHdpZHRoOnRb Ml0tdFswXXx8MCxoZWlnaHQ6dFszXS10WzFdfHwwfTp0JiYodD1uKHQse2xlZnQ6InggbCBs ZWZ0IExlZnQiLHRvcDoieSB0IHRvcCBUb3AiLHdpZHRoOiJ3IHdpZHRoIFcgV2lkdGgiLGhl aWdodDoiaCBoZWlnaHQgVyBXaWR0aCIsYm90dG9tOiJiIGJvdHRvbSBCb3R0b20iLHJpZ2h0 OiJyIHJpZ2h0IFJpZ2h0In0pLGU9e3g6dC5sZWZ0fHwwLHk6dC50b3B8fDB9LG51bGw9PXQu d2lkdGg/dC5yaWdodD9lLndpZHRoPXQucmlnaHQtZS54OmUud2lkdGg9MDplLndpZHRoPXQu d2lkdGgsbnVsbD09dC5oZWlnaHQ/dC5ib3R0b20/ZS5oZWlnaHQ9dC5ib3R0b20tZS55OmUu aGVpZ2h0PTA6ZS5oZWlnaHQ9dC5oZWlnaHQpO3JldHVybiBlfX0seyJwaWNrLWJ5LWFsaWFz IjoyNTN9XSwyNTA6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFy IGU9W107cmV0dXJuIHQucmVwbGFjZShpLChmdW5jdGlvbih0LHIsaSl7dmFyIG89ci50b0xv d2VyQ2FzZSgpO2ZvcihpPWZ1bmN0aW9uKHQpe3ZhciBlPXQubWF0Y2goYSk7cmV0dXJuIGU/ ZS5tYXAoTnVtYmVyKTpbXX0oaSksIm0iPT1vJiZpLmxlbmd0aD4yJiYoZS5wdXNoKFtyXS5j b25jYXQoaS5zcGxpY2UoMCwyKSkpLG89ImwiLHI9Im0iPT1yPyJsIjoiTCIpOzspe2lmKGku bGVuZ3RoPT1uW29dKXJldHVybiBpLnVuc2hpZnQociksZS5wdXNoKGkpO2lmKGkubGVuZ3Ro PG5bb10pdGhyb3cgbmV3IEVycm9yKCJtYWxmb3JtZWQgcGF0aCBkYXRhIik7ZS5wdXNoKFty XS5jb25jYXQoaS5zcGxpY2UoMCxuW29dKSkpfX0pKSxlfTt2YXIgbj17YTo3LGM6NixoOjEs bDoyLG06MixxOjQsczo0LHQ6Mix2OjEsejowfSxpPS8oW2FzdHZ6cW1obGNdKShbXmFzdHZ6 cW1obGNdKikvZ2k7dmFyIGE9Ly0/WzAtOV0qXC4/WzAtOV0rKD86ZVstK10/XGQrKT8vZ2l9 LHt9XSwyNTE6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtlfHwo ZT1bMCwiIl0pLHQ9U3RyaW5nKHQpO3ZhciByPXBhcnNlRmxvYXQodCwxMCk7cmV0dXJuIGVb MF09cixlWzFdPXQubWF0Y2goL1tcZC5cLVwrXSpccyooLiopLylbMV18fCIiLGV9fSx7fV0s MjUyOltmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKHQpeyhmdW5jdGlvbigpeyhmdW5jdGlv bigpe3ZhciByLG4saSxhLG8sczsidW5kZWZpbmVkIiE9dHlwZW9mIHBlcmZvcm1hbmNlJiZu dWxsIT09cGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5vdz9lLmV4cG9ydHM9ZnVuY3Rpb24o KXtyZXR1cm4gcGVyZm9ybWFuY2Uubm93KCl9Om51bGwhPXQmJnQuaHJ0aW1lPyhlLmV4cG9y dHM9ZnVuY3Rpb24oKXtyZXR1cm4ocigpLW8pLzFlNn0sbj10LmhydGltZSxhPShyPWZ1bmN0 aW9uKCl7dmFyIHQ7cmV0dXJuIDFlOSoodD1uKCkpWzBdK3RbMV19KSgpLHM9MWU5KnQudXB0 aW1lKCksbz1hLXMpOkRhdGUubm93PyhlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0 ZS5ub3coKS1pfSxpPURhdGUubm93KCkpOihlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4o bmV3IERhdGUpLmdldFRpbWUoKS1pfSxpPShuZXcgRGF0ZSkuZ2V0VGltZSgpKX0pLmNhbGwo dGhpcyl9KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHQoIl9wcm9jZXNzIikpfSx7X3Byb2Nl c3M6Mjc3fV0sMjUzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1m dW5jdGlvbih0LGUscil7dmFyIG4sYSxvPXt9O2lmKCJzdHJpbmciPT10eXBlb2YgZSYmKGU9 aShlKSksQXJyYXkuaXNBcnJheShlKSl7dmFyIHM9e307Zm9yKGE9MDthPGUubGVuZ3RoO2Er KylzW2VbYV1dPSEwO2U9c31mb3IobiBpbiBlKWVbbl09aShlW25dKTt2YXIgbD17fTtmb3Io biBpbiBlKXt2YXIgYz1lW25dO2lmKEFycmF5LmlzQXJyYXkoYykpZm9yKGE9MDthPGMubGVu Z3RoO2ErKyl7dmFyIHU9Y1thXTtpZihyJiYobFt1XT0hMCksdSBpbiB0KXtpZihvW25dPXRb dV0scilmb3IodmFyIGY9YTtmPGMubGVuZ3RoO2YrKylsW2NbZl1dPSEwO2JyZWFrfX1lbHNl IG4gaW4gdCYmKGVbbl0mJihvW25dPXRbbl0pLHImJihsW25dPSEwKSl9aWYocilmb3IobiBp biB0KWxbbl18fChvW25dPXRbbl0pO3JldHVybiBvfTt2YXIgbj17fTtmdW5jdGlvbiBpKHQp e3JldHVybiBuW3RdP25bdF06KCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9blt0XT10LnNwbGl0 KC9ccyosXHMqfFxzKy8pKSx0KX19LHt9XSwyNTQ6W2Z1bmN0aW9uKHQsZSxyKXsKLyoKICog QGNvcHlyaWdodCAyMDE2IFNlYW4gQ29ubmVsbHkgKEB2b2lkcWspLCBodHRwOi8vc3ludGhl dGkuY2MKICogQGxpY2Vuc2UgTUlUCiAqIEBwcmVzZXJ2ZSBQcm9qZWN0IEhvbWU6IGh0dHBz Oi8vZ2l0aHViLmNvbS92b2lkcWsvcG9seWJvb2xqcwogKi8KdmFyIG4saT10KCIuL2xpYi9i dWlsZC1sb2ciKSxhPXQoIi4vbGliL2Vwc2lsb24iKSxvPXQoIi4vbGliL2ludGVyc2VjdGVy Iikscz10KCIuL2xpYi9zZWdtZW50LWNoYWluZXIiKSxsPXQoIi4vbGliL3NlZ21lbnQtc2Vs ZWN0b3IiKSxjPXQoIi4vbGliL2dlb2pzb24iKSx1PSExLGY9YSgpO2Z1bmN0aW9uIGgodCxl LHIpe3ZhciBpPW4uc2VnbWVudHModCksYT1uLnNlZ21lbnRzKGUpLG89cihuLmNvbWJpbmUo aSxhKSk7cmV0dXJuIG4ucG9seWdvbihvKX1uPXtidWlsZExvZzpmdW5jdGlvbih0KXtyZXR1 cm4hMD09PXQ/dT1pKCk6ITE9PT10JiYodT0hMSksITEhPT11JiZ1Lmxpc3R9LGVwc2lsb246 ZnVuY3Rpb24odCl7cmV0dXJuIGYuZXBzaWxvbih0KX0sc2VnbWVudHM6ZnVuY3Rpb24odCl7 dmFyIGU9byghMCxmLHUpO3JldHVybiB0LnJlZ2lvbnMuZm9yRWFjaChlLmFkZFJlZ2lvbiks e3NlZ21lbnRzOmUuY2FsY3VsYXRlKHQuaW52ZXJ0ZWQpLGludmVydGVkOnQuaW52ZXJ0ZWR9 fSxjb21iaW5lOmZ1bmN0aW9uKHQsZSl7cmV0dXJue2NvbWJpbmVkOm8oITEsZix1KS5jYWxj dWxhdGUodC5zZWdtZW50cyx0LmludmVydGVkLGUuc2VnbWVudHMsZS5pbnZlcnRlZCksaW52 ZXJ0ZWQxOnQuaW52ZXJ0ZWQsaW52ZXJ0ZWQyOmUuaW52ZXJ0ZWR9fSxzZWxlY3RVbmlvbjpm dW5jdGlvbih0KXtyZXR1cm57c2VnbWVudHM6bC51bmlvbih0LmNvbWJpbmVkLHUpLGludmVy dGVkOnQuaW52ZXJ0ZWQxfHx0LmludmVydGVkMn19LHNlbGVjdEludGVyc2VjdDpmdW5jdGlv bih0KXtyZXR1cm57c2VnbWVudHM6bC5pbnRlcnNlY3QodC5jb21iaW5lZCx1KSxpbnZlcnRl ZDp0LmludmVydGVkMSYmdC5pbnZlcnRlZDJ9fSxzZWxlY3REaWZmZXJlbmNlOmZ1bmN0aW9u KHQpe3JldHVybntzZWdtZW50czpsLmRpZmZlcmVuY2UodC5jb21iaW5lZCx1KSxpbnZlcnRl ZDp0LmludmVydGVkMSYmIXQuaW52ZXJ0ZWQyfX0sc2VsZWN0RGlmZmVyZW5jZVJldjpmdW5j dGlvbih0KXtyZXR1cm57c2VnbWVudHM6bC5kaWZmZXJlbmNlUmV2KHQuY29tYmluZWQsdSks aW52ZXJ0ZWQ6IXQuaW52ZXJ0ZWQxJiZ0LmludmVydGVkMn19LHNlbGVjdFhvcjpmdW5jdGlv bih0KXtyZXR1cm57c2VnbWVudHM6bC54b3IodC5jb21iaW5lZCx1KSxpbnZlcnRlZDp0Lmlu dmVydGVkMSE9PXQuaW52ZXJ0ZWQyfX0scG9seWdvbjpmdW5jdGlvbih0KXtyZXR1cm57cmVn aW9uczpzKHQuc2VnbWVudHMsZix1KSxpbnZlcnRlZDp0LmludmVydGVkfX0scG9seWdvbkZy b21HZW9KU09OOmZ1bmN0aW9uKHQpe3JldHVybiBjLnRvUG9seWdvbihuLHQpfSxwb2x5Z29u VG9HZW9KU09OOmZ1bmN0aW9uKHQpe3JldHVybiBjLmZyb21Qb2x5Z29uKG4sZix0KX0sdW5p b246ZnVuY3Rpb24odCxlKXtyZXR1cm4gaCh0LGUsbi5zZWxlY3RVbmlvbil9LGludGVyc2Vj dDpmdW5jdGlvbih0LGUpe3JldHVybiBoKHQsZSxuLnNlbGVjdEludGVyc2VjdCl9LGRpZmZl cmVuY2U6ZnVuY3Rpb24odCxlKXtyZXR1cm4gaCh0LGUsbi5zZWxlY3REaWZmZXJlbmNlKX0s ZGlmZmVyZW5jZVJldjpmdW5jdGlvbih0LGUpe3JldHVybiBoKHQsZSxuLnNlbGVjdERpZmZl cmVuY2VSZXYpfSx4b3I6ZnVuY3Rpb24odCxlKXtyZXR1cm4gaCh0LGUsbi5zZWxlY3RYb3Ip fX0sIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJih3aW5kb3cuUG9seUJvb2w9biksZS5leHBv cnRzPW59LHsiLi9saWIvYnVpbGQtbG9nIjoyNTUsIi4vbGliL2Vwc2lsb24iOjI1NiwiLi9s aWIvZ2VvanNvbiI6MjU3LCIuL2xpYi9pbnRlcnNlY3RlciI6MjU4LCIuL2xpYi9zZWdtZW50 LWNoYWluZXIiOjI2MCwiLi9saWIvc2VnbWVudC1zZWxlY3RvciI6MjYxfV0sMjU1OltmdW5j dGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIHQsZT0wLHI9ITE7ZnVuY3Rp b24gbihlLHIpe3JldHVybiB0Lmxpc3QucHVzaCh7dHlwZTplLGRhdGE6cj9KU09OLnBhcnNl KEpTT04uc3RyaW5naWZ5KHIpKTp2b2lkIDB9KSx0fXJldHVybiB0PXtsaXN0OltdLHNlZ21l bnRJZDpmdW5jdGlvbigpe3JldHVybiBlKyt9LGNoZWNrSW50ZXJzZWN0aW9uOmZ1bmN0aW9u KHQsZSl7cmV0dXJuIG4oImNoZWNrIix7c2VnMTp0LHNlZzI6ZX0pfSxzZWdtZW50Q2hvcDpm dW5jdGlvbih0LGUpe3JldHVybiBuKCJkaXZfc2VnIix7c2VnOnQscHQ6ZX0pLG4oImNob3Ai LHtzZWc6dCxwdDplfSl9LHN0YXR1c1JlbW92ZTpmdW5jdGlvbih0KXtyZXR1cm4gbigicG9w X3NlZyIse3NlZzp0fSl9LHNlZ21lbnRVcGRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIG4oInNl Z191cGRhdGUiLHtzZWc6dH0pfSxzZWdtZW50TmV3OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4o Im5ld19zZWciLHtzZWc6dCxwcmltYXJ5OmV9KX0sc2VnbWVudFJlbW92ZTpmdW5jdGlvbih0 KXtyZXR1cm4gbigicmVtX3NlZyIse3NlZzp0fSl9LHRlbXBTdGF0dXM6ZnVuY3Rpb24odCxl LHIpe3JldHVybiBuKCJ0ZW1wX3N0YXR1cyIse3NlZzp0LGFib3ZlOmUsYmVsb3c6cn0pfSxy ZXdpbmQ6ZnVuY3Rpb24odCl7cmV0dXJuIG4oInJld2luZCIse3NlZzp0fSl9LHN0YXR1czpm dW5jdGlvbih0LGUscil7cmV0dXJuIG4oInN0YXR1cyIse3NlZzp0LGFib3ZlOmUsYmVsb3c6 cn0pfSx2ZXJ0OmZ1bmN0aW9uKGUpe3JldHVybiBlPT09cj90OihyPWUsbigidmVydCIse3g6 ZX0pKX0sbG9nOmZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciIT10eXBlb2YgdCYmKHQ9SlNP Ti5zdHJpbmdpZnkodCwhMSwiICAiKSksbigibG9nIix7dHh0OnR9KX0scmVzZXQ6ZnVuY3Rp b24oKXtyZXR1cm4gbigicmVzZXQiKX0sc2VsZWN0ZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIG4o InNlbGVjdGVkIix7c2Vnczp0fSl9LGNoYWluU3RhcnQ6ZnVuY3Rpb24odCl7cmV0dXJuIG4o ImNoYWluX3N0YXJ0Iix7c2VnOnR9KX0sY2hhaW5SZW1vdmVIZWFkOmZ1bmN0aW9uKHQsZSl7 cmV0dXJuIG4oImNoYWluX3JlbV9oZWFkIix7aW5kZXg6dCxwdDplfSl9LGNoYWluUmVtb3Zl VGFpbDpmdW5jdGlvbih0LGUpe3JldHVybiBuKCJjaGFpbl9yZW1fdGFpbCIse2luZGV4OnQs cHQ6ZX0pfSxjaGFpbk5ldzpmdW5jdGlvbih0LGUpe3JldHVybiBuKCJjaGFpbl9uZXciLHtw dDE6dCxwdDI6ZX0pfSxjaGFpbk1hdGNoOmZ1bmN0aW9uKHQpe3JldHVybiBuKCJjaGFpbl9t YXRjaCIse2luZGV4OnR9KX0sY2hhaW5DbG9zZTpmdW5jdGlvbih0KXtyZXR1cm4gbigiY2hh aW5fY2xvc2UiLHtpbmRleDp0fSl9LGNoYWluQWRkSGVhZDpmdW5jdGlvbih0LGUpe3JldHVy biBuKCJjaGFpbl9hZGRfaGVhZCIse2luZGV4OnQscHQ6ZX0pfSxjaGFpbkFkZFRhaWw6ZnVu Y3Rpb24odCxlKXtyZXR1cm4gbigiY2hhaW5fYWRkX3RhaWwiLHtpbmRleDp0LHB0OmV9KX0s Y2hhaW5Db25uZWN0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oImNoYWluX2NvbiIse2luZGV4 MTp0LGluZGV4MjplfSl9LGNoYWluUmV2ZXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gbigiY2hh aW5fcmV2Iix7aW5kZXg6dH0pfSxjaGFpbkpvaW46ZnVuY3Rpb24odCxlKXtyZXR1cm4gbigi Y2hhaW5fam9pbiIse2luZGV4MTp0LGluZGV4MjplfSl9LGRvbmU6ZnVuY3Rpb24oKXtyZXR1 cm4gbigiZG9uZSIpfX19fSx7fV0sMjU2OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1 bmN0aW9uKHQpeyJudW1iZXIiIT10eXBlb2YgdCYmKHQ9MWUtMTApO3ZhciBlPXtlcHNpbG9u OmZ1bmN0aW9uKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZSYmKHQ9ZSksdH0scG9pbnRB Ym92ZU9yT25MaW5lOmZ1bmN0aW9uKGUscixuKXt2YXIgaT1yWzBdLGE9clsxXSxvPW5bMF0s cz1uWzFdLGw9ZVswXTtyZXR1cm4oby1pKSooZVsxXS1hKS0ocy1hKSoobC1pKT49LXR9LHBv aW50QmV0d2VlbjpmdW5jdGlvbihlLHIsbil7dmFyIGk9ZVsxXS1yWzFdLGE9blswXS1yWzBd LG89ZVswXS1yWzBdLHM9blsxXS1yWzFdLGw9byphK2kqcztyZXR1cm4hKGw8dCkmJiEobC0o YSphK3Mqcyk+LXQpfSxwb2ludHNTYW1lWDpmdW5jdGlvbihlLHIpe3JldHVybiBNYXRoLmFi cyhlWzBdLXJbMF0pPHR9LHBvaW50c1NhbWVZOmZ1bmN0aW9uKGUscil7cmV0dXJuIE1hdGgu YWJzKGVbMV0tclsxXSk8dH0scG9pbnRzU2FtZTpmdW5jdGlvbih0LHIpe3JldHVybiBlLnBv aW50c1NhbWVYKHQscikmJmUucG9pbnRzU2FtZVkodCxyKX0scG9pbnRzQ29tcGFyZTpmdW5j dGlvbih0LHIpe3JldHVybiBlLnBvaW50c1NhbWVYKHQscik/ZS5wb2ludHNTYW1lWSh0LHIp PzA6dFsxXTxyWzFdPy0xOjE6dFswXTxyWzBdPy0xOjF9LHBvaW50c0NvbGxpbmVhcjpmdW5j dGlvbihlLHIsbil7dmFyIGk9ZVswXS1yWzBdLGE9ZVsxXS1yWzFdLG89clswXS1uWzBdLHM9 clsxXS1uWzFdO3JldHVybiBNYXRoLmFicyhpKnMtbyphKTx0fSxsaW5lc0ludGVyc2VjdDpm dW5jdGlvbihlLHIsbixpKXt2YXIgYT1yWzBdLWVbMF0sbz1yWzFdLWVbMV0scz1pWzBdLW5b MF0sbD1pWzFdLW5bMV0sYz1hKmwtbypzO2lmKE1hdGguYWJzKGMpPHQpcmV0dXJuITE7dmFy IHU9ZVswXS1uWzBdLGY9ZVsxXS1uWzFdLGg9KHMqZi1sKnUpL2MscD0oYSpmLW8qdSkvYyxk PXthbG9uZ0E6MCxhbG9uZ0I6MCxwdDpbZVswXStoKmEsZVsxXStoKm9dfTtyZXR1cm4gZC5h bG9uZ0E9aDw9LXQ/LTI6aDx0Py0xOmgtMTw9LXQ/MDpoLTE8dD8xOjIsZC5hbG9uZ0I9cDw9 LXQ/LTI6cDx0Py0xOnAtMTw9LXQ/MDpwLTE8dD8xOjIsZH0scG9pbnRJbnNpZGVSZWdpb246 ZnVuY3Rpb24oZSxyKXtmb3IodmFyIG49ZVswXSxpPWVbMV0sYT1yW3IubGVuZ3RoLTFdWzBd LG89cltyLmxlbmd0aC0xXVsxXSxzPSExLGw9MDtsPHIubGVuZ3RoO2wrKyl7dmFyIGM9clts XVswXSx1PXJbbF1bMV07dS1pPnQhPW8taT50JiYoYS1jKSooaS11KS8oby11KStjLW4+dCYm KHM9IXMpLGE9YyxvPXV9cmV0dXJuIHN9fTtyZXR1cm4gZX19LHt9XSwyNTc6W2Z1bmN0aW9u KHQsZSxyKXt2YXIgbj17dG9Qb2x5Z29uOmZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcihlKXtp ZihlLmxlbmd0aDw9MClyZXR1cm4gdC5zZWdtZW50cyh7aW52ZXJ0ZWQ6ITEscmVnaW9uczpb XX0pO2Z1bmN0aW9uIHIoZSl7dmFyIHI9ZS5zbGljZSgwLGUubGVuZ3RoLTEpO3JldHVybiB0 LnNlZ21lbnRzKHtpbnZlcnRlZDohMSxyZWdpb25zOltyXX0pfWZvcih2YXIgbj1yKGVbMF0p LGk9MTtpPGUubGVuZ3RoO2krKyluPXQuc2VsZWN0RGlmZmVyZW5jZSh0LmNvbWJpbmUobixy KGVbaV0pKSk7cmV0dXJuIG59aWYoIlBvbHlnb24iPT09ZS50eXBlKXJldHVybiB0LnBvbHln b24ocihlLmNvb3JkaW5hdGVzKSk7aWYoIk11bHRpUG9seWdvbiI9PT1lLnR5cGUpe2Zvcih2 YXIgbj10LnNlZ21lbnRzKHtpbnZlcnRlZDohMSxyZWdpb25zOltdfSksaT0wO2k8ZS5jb29y ZGluYXRlcy5sZW5ndGg7aSsrKW49dC5zZWxlY3RVbmlvbih0LmNvbWJpbmUobixyKGUuY29v cmRpbmF0ZXNbaV0pKSk7cmV0dXJuIHQucG9seWdvbihuKX10aHJvdyBuZXcgRXJyb3IoIlBv bHlCb29sOiBDYW5ub3QgY29udmVydCBHZW9KU09OIG9iamVjdCB0byBQb2x5Qm9vbCBwb2x5 Z29uIil9LGZyb21Qb2x5Z29uOmZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQscil7cmV0 dXJuIGUucG9pbnRJbnNpZGVSZWdpb24oWy41Kih0WzBdWzBdK3RbMV1bMF0pLC41Kih0WzBd WzFdK3RbMV1bMV0pXSxyKX1mdW5jdGlvbiBpKHQpe3JldHVybntyZWdpb246dCxjaGlsZHJl bjpbXX19cj10LnBvbHlnb24odC5zZWdtZW50cyhyKSk7dmFyIGE9aShudWxsKTtmdW5jdGlv biBvKHQsZSl7Zm9yKHZhciByPTA7cjx0LmNoaWxkcmVuLmxlbmd0aDtyKyspe2lmKG4oZSwo cz10LmNoaWxkcmVuW3JdKS5yZWdpb24pKXJldHVybiB2b2lkIG8ocyxlKX12YXIgYT1pKGUp O2ZvcihyPTA7cjx0LmNoaWxkcmVuLmxlbmd0aDtyKyspe3ZhciBzO24oKHM9dC5jaGlsZHJl bltyXSkucmVnaW9uLGUpJiYoYS5jaGlsZHJlbi5wdXNoKHMpLHQuY2hpbGRyZW4uc3BsaWNl KHIsMSksci0tKX10LmNoaWxkcmVuLnB1c2goYSl9Zm9yKHZhciBzPTA7czxyLnJlZ2lvbnMu bGVuZ3RoO3MrKyl7dmFyIGw9ci5yZWdpb25zW3NdO2wubGVuZ3RoPDN8fG8oYSxsKX1mdW5j dGlvbiBjKHQsZSl7Zm9yKHZhciByPTAsbj10W3QubGVuZ3RoLTFdWzBdLGk9dFt0Lmxlbmd0 aC0xXVsxXSxhPVtdLG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIHM9dFtvXVswXSxsPXRbb11b MV07YS5wdXNoKFtzLGxdKSxyKz1sKm4tcyppLG49cyxpPWx9cmV0dXJuIHI8MCE9PWUmJmEu cmV2ZXJzZSgpLGEucHVzaChbYVswXVswXSxhWzBdWzFdXSksYX12YXIgdT1bXTtmdW5jdGlv biBmKHQpe3ZhciBlPVtjKHQucmVnaW9uLCExKV07dS5wdXNoKGUpO2Zvcih2YXIgcj0wO3I8 dC5jaGlsZHJlbi5sZW5ndGg7cisrKWUucHVzaChoKHQuY2hpbGRyZW5bcl0pKX1mdW5jdGlv biBoKHQpe2Zvcih2YXIgZT0wO2U8dC5jaGlsZHJlbi5sZW5ndGg7ZSsrKWYodC5jaGlsZHJl bltlXSk7cmV0dXJuIGModC5yZWdpb24sITApfWZvcihzPTA7czxhLmNoaWxkcmVuLmxlbmd0 aDtzKyspZihhLmNoaWxkcmVuW3NdKTtyZXR1cm4gdS5sZW5ndGg8PTA/e3R5cGU6IlBvbHln b24iLGNvb3JkaW5hdGVzOltdfToxPT11Lmxlbmd0aD97dHlwZToiUG9seWdvbiIsY29vcmRp bmF0ZXM6dVswXX06e3R5cGU6Ik11bHRpUG9seWdvbiIsY29vcmRpbmF0ZXM6dX19fTtlLmV4 cG9ydHM9bn0se31dLDI1ODpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoIi4vbGlua2VkLWxp c3QiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIGkodCxlLG4pe3JldHVy bntpZDpyP3Iuc2VnbWVudElkKCk6LTEsc3RhcnQ6dCxlbmQ6ZSxteUZpbGw6e2Fib3ZlOm4u bXlGaWxsLmFib3ZlLGJlbG93Om4ubXlGaWxsLmJlbG93fSxvdGhlckZpbGw6bnVsbH19dmFy IGE9bi5jcmVhdGUoKTtmdW5jdGlvbiBvKHQscil7YS5pbnNlcnRCZWZvcmUodCwoZnVuY3Rp b24obil7cmV0dXJuIGZ1bmN0aW9uKHQscixuLGksYSxvKXt2YXIgcz1lLnBvaW50c0NvbXBh cmUocixhKTtyZXR1cm4gMCE9PXM/czplLnBvaW50c1NhbWUobixvKT8wOnQhPT1pP3Q/MTot MTplLnBvaW50QWJvdmVPck9uTGluZShuLGk/YTpvLGk/bzphKT8xOi0xfSh0LmlzU3RhcnQs dC5wdCxyLG4uaXNTdGFydCxuLnB0LG4ub3RoZXIucHQpPDB9KSl9ZnVuY3Rpb24gcyh0LGUp e3ZhciByPWZ1bmN0aW9uKHQsZSl7dmFyIHI9bi5ub2RlKHtpc1N0YXJ0OiEwLHB0OnQuc3Rh cnQsc2VnOnQscHJpbWFyeTplLG90aGVyOm51bGwsc3RhdHVzOm51bGx9KTtyZXR1cm4gbyhy LHQuZW5kKSxyfSh0LGUpO3JldHVybiBmdW5jdGlvbih0LGUscil7dmFyIGk9bi5ub2RlKHtp c1N0YXJ0OiExLHB0OmUuZW5kLHNlZzplLHByaW1hcnk6cixvdGhlcjp0LHN0YXR1czpudWxs fSk7dC5vdGhlcj1pLG8oaSx0LnB0KX0ocix0LGUpLHJ9ZnVuY3Rpb24gbCh0LGUpe3ZhciBu PWkoZSx0LnNlZy5lbmQsdC5zZWcpO3JldHVybiBmdW5jdGlvbih0LGUpe3ImJnIuc2VnbWVu dENob3AodC5zZWcsZSksdC5vdGhlci5yZW1vdmUoKSx0LnNlZy5lbmQ9ZSx0Lm90aGVyLnB0 PWUsbyh0Lm90aGVyLHQucHQpfSh0LGUpLHMobix0LnByaW1hcnkpfWZ1bmN0aW9uIGMoaSxv KXt2YXIgcz1uLmNyZWF0ZSgpO2Z1bmN0aW9uIGModCl7cmV0dXJuIHMuZmluZFRyYW5zaXRp b24oKGZ1bmN0aW9uKHIpe3ZhciBuLGksYSxvLHMsbDtyZXR1cm4obj10LGk9ci5ldixhPW4u c2VnLnN0YXJ0LG89bi5zZWcuZW5kLHM9aS5zZWcuc3RhcnQsbD1pLnNlZy5lbmQsZS5wb2lu dHNDb2xsaW5lYXIoYSxzLGwpP2UucG9pbnRzQ29sbGluZWFyKG8scyxsKXx8ZS5wb2ludEFi b3ZlT3JPbkxpbmUobyxzLGwpPzE6LTE6ZS5wb2ludEFib3ZlT3JPbkxpbmUoYSxzLGwpPzE6 LTEpPjB9KSl9ZnVuY3Rpb24gdSh0LG4pe3ZhciBpPXQuc2VnLGE9bi5zZWcsbz1pLnN0YXJ0 LHM9aS5lbmQsYz1hLnN0YXJ0LHU9YS5lbmQ7ciYmci5jaGVja0ludGVyc2VjdGlvbihpLGEp O3ZhciBmPWUubGluZXNJbnRlcnNlY3QobyxzLGMsdSk7aWYoITE9PT1mKXtpZighZS5wb2lu dHNDb2xsaW5lYXIobyxzLGMpKXJldHVybiExO2lmKGUucG9pbnRzU2FtZShvLHUpfHxlLnBv aW50c1NhbWUocyxjKSlyZXR1cm4hMTt2YXIgaD1lLnBvaW50c1NhbWUobyxjKSxwPWUucG9p bnRzU2FtZShzLHUpO2lmKGgmJnApcmV0dXJuIG47dmFyIGQ9IWgmJmUucG9pbnRCZXR3ZWVu KG8sYyx1KSxtPSFwJiZlLnBvaW50QmV0d2VlbihzLGMsdSk7aWYoaClyZXR1cm4gbT9sKG4s cyk6bCh0LHUpLG47ZCYmKHB8fChtP2wobixzKTpsKHQsdSkpLGwobixvKSl9ZWxzZSAwPT09 Zi5hbG9uZ0EmJigtMT09PWYuYWxvbmdCP2wodCxjKTowPT09Zi5hbG9uZ0I/bCh0LGYucHQp OjE9PT1mLmFsb25nQiYmbCh0LHUpKSwwPT09Zi5hbG9uZ0ImJigtMT09PWYuYWxvbmdBP2wo bixvKTowPT09Zi5hbG9uZ0E/bChuLGYucHQpOjE9PT1mLmFsb25nQSYmbChuLHMpKTtyZXR1 cm4hMX1mb3IodmFyIGY9W107IWEuaXNFbXB0eSgpOyl7dmFyIGg9YS5nZXRIZWFkKCk7aWYo ciYmci52ZXJ0KGgucHRbMF0pLGguaXNTdGFydCl7ciYmci5zZWdtZW50TmV3KGguc2VnLGgu cHJpbWFyeSk7dmFyIHA9YyhoKSxkPXAuYmVmb3JlP3AuYmVmb3JlLmV2Om51bGwsbT1wLmFm dGVyP3AuYWZ0ZXIuZXY6bnVsbDtmdW5jdGlvbiBnKCl7aWYoZCl7dmFyIHQ9dShoLGQpO2lm KHQpcmV0dXJuIHR9cmV0dXJuISFtJiZ1KGgsbSl9ciYmci50ZW1wU3RhdHVzKGguc2VnLCEh ZCYmZC5zZWcsISFtJiZtLnNlZyk7dmFyIHYseT1nKCk7aWYoeSl7dmFyIHg7aWYodCkoeD1u dWxsPT09aC5zZWcubXlGaWxsLmJlbG93fHxoLnNlZy5teUZpbGwuYWJvdmUhPT1oLnNlZy5t eUZpbGwuYmVsb3cpJiYoeS5zZWcubXlGaWxsLmFib3ZlPSF5LnNlZy5teUZpbGwuYWJvdmUp O2Vsc2UgeS5zZWcub3RoZXJGaWxsPWguc2VnLm15RmlsbDtyJiZyLnNlZ21lbnRVcGRhdGUo eS5zZWcpLGgub3RoZXIucmVtb3ZlKCksaC5yZW1vdmUoKX1pZihhLmdldEhlYWQoKSE9PWgp e3ImJnIucmV3aW5kKGguc2VnKTtjb250aW51ZX1pZih0KXg9bnVsbD09PWguc2VnLm15Rmls bC5iZWxvd3x8aC5zZWcubXlGaWxsLmFib3ZlIT09aC5zZWcubXlGaWxsLmJlbG93LGguc2Vn Lm15RmlsbC5iZWxvdz1tP20uc2VnLm15RmlsbC5hYm92ZTppLGguc2VnLm15RmlsbC5hYm92 ZT14PyFoLnNlZy5teUZpbGwuYmVsb3c6aC5zZWcubXlGaWxsLmJlbG93O2Vsc2UgaWYobnVs bD09PWguc2VnLm90aGVyRmlsbCl2PW0/aC5wcmltYXJ5PT09bS5wcmltYXJ5P20uc2VnLm90 aGVyRmlsbC5hYm92ZTptLnNlZy5teUZpbGwuYWJvdmU6aC5wcmltYXJ5P286aSxoLnNlZy5v dGhlckZpbGw9e2Fib3ZlOnYsYmVsb3c6dn07ciYmci5zdGF0dXMoaC5zZWcsISFkJiZkLnNl ZywhIW0mJm0uc2VnKSxoLm90aGVyLnN0YXR1cz1wLmluc2VydChuLm5vZGUoe2V2Omh9KSl9 ZWxzZXt2YXIgYj1oLnN0YXR1cztpZihudWxsPT09Yil0aHJvdyBuZXcgRXJyb3IoIlBvbHlC b29sOiBaZXJvLWxlbmd0aCBzZWdtZW50IGRldGVjdGVkOyB5b3VyIGVwc2lsb24gaXMgcHJv YmFibHkgdG9vIHNtYWxsIG9yIHRvbyBsYXJnZSIpO2lmKHMuZXhpc3RzKGIucHJldikmJnMu ZXhpc3RzKGIubmV4dCkmJnUoYi5wcmV2LmV2LGIubmV4dC5ldiksciYmci5zdGF0dXNSZW1v dmUoYi5ldi5zZWcpLGIucmVtb3ZlKCksIWgucHJpbWFyeSl7dmFyIF89aC5zZWcubXlGaWxs O2guc2VnLm15RmlsbD1oLnNlZy5vdGhlckZpbGwsaC5zZWcub3RoZXJGaWxsPV99Zi5wdXNo KGguc2VnKX1hLmdldEhlYWQoKS5yZW1vdmUoKX1yZXR1cm4gciYmci5kb25lKCksZn1yZXR1 cm4gdD97YWRkUmVnaW9uOmZ1bmN0aW9uKHQpe2Zvcih2YXIgbixpLGEsbz10W3QubGVuZ3Ro LTFdLGw9MDtsPHQubGVuZ3RoO2wrKyl7bj1vLG89dFtsXTt2YXIgYz1lLnBvaW50c0NvbXBh cmUobixvKTswIT09YyYmcygoaT1jPDA/bjpvLGE9YzwwP286bix7aWQ6cj9yLnNlZ21lbnRJ ZCgpOi0xLHN0YXJ0OmksZW5kOmEsbXlGaWxsOnthYm92ZTpudWxsLGJlbG93Om51bGx9LG90 aGVyRmlsbDpudWxsfSksITApfX0sY2FsY3VsYXRlOmZ1bmN0aW9uKHQpe3JldHVybiBjKHQs ITEpfX06e2NhbGN1bGF0ZTpmdW5jdGlvbih0LGUscixuKXtyZXR1cm4gdC5mb3JFYWNoKChm dW5jdGlvbih0KXtzKGkodC5zdGFydCx0LmVuZCx0KSwhMCl9KSksci5mb3JFYWNoKChmdW5j dGlvbih0KXtzKGkodC5zdGFydCx0LmVuZCx0KSwhMSl9KSksYyhlLG4pfX19fSx7Ii4vbGlu a2VkLWxpc3QiOjI1OX1dLDI1OTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz17Y3JlYXRl OmZ1bmN0aW9uKCl7dmFyIHQ9e3Jvb3Q6e3Jvb3Q6ITAsbmV4dDpudWxsfSxleGlzdHM6ZnVu Y3Rpb24oZSl7cmV0dXJuIG51bGwhPT1lJiZlIT09dC5yb290fSxpc0VtcHR5OmZ1bmN0aW9u KCl7cmV0dXJuIG51bGw9PT10LnJvb3QubmV4dH0sZ2V0SGVhZDpmdW5jdGlvbigpe3JldHVy biB0LnJvb3QubmV4dH0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKGUscil7Zm9yKHZhciBuPXQu cm9vdCxpPXQucm9vdC5uZXh0O251bGwhPT1pOyl7aWYocihpKSlyZXR1cm4gZS5wcmV2PWku cHJldixlLm5leHQ9aSxpLnByZXYubmV4dD1lLHZvaWQoaS5wcmV2PWUpO249aSxpPWkubmV4 dH1uLm5leHQ9ZSxlLnByZXY9bixlLm5leHQ9bnVsbH0sZmluZFRyYW5zaXRpb246ZnVuY3Rp b24oZSl7Zm9yKHZhciByPXQucm9vdCxuPXQucm9vdC5uZXh0O251bGwhPT1uJiYhZShuKTsp cj1uLG49bi5uZXh0O3JldHVybntiZWZvcmU6cj09PXQucm9vdD9udWxsOnIsYWZ0ZXI6bixp bnNlcnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQucHJldj1yLHQubmV4dD1uLHIubmV4dD10LG51 bGwhPT1uJiYobi5wcmV2PXQpLHR9fX19O3JldHVybiB0fSxub2RlOmZ1bmN0aW9uKHQpe3Jl dHVybiB0LnByZXY9bnVsbCx0Lm5leHQ9bnVsbCx0LnJlbW92ZT1mdW5jdGlvbigpe3QucHJl di5uZXh0PXQubmV4dCx0Lm5leHQmJih0Lm5leHQucHJldj10LnByZXYpLHQucHJldj1udWxs LHQubmV4dD1udWxsfSx0fX19LHt9XSwyNjA6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9 ZnVuY3Rpb24odCxlLHIpe3ZhciBuPVtdLGk9W107cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rp b24odCl7dmFyIGE9dC5zdGFydCxvPXQuZW5kO2lmKGUucG9pbnRzU2FtZShhLG8pKWNvbnNv bGUud2FybigiUG9seUJvb2w6IFdhcm5pbmc6IFplcm8tbGVuZ3RoIHNlZ21lbnQgZGV0ZWN0 ZWQ7IHlvdXIgZXBzaWxvbiBpcyBwcm9iYWJseSB0b28gc21hbGwgb3IgdG9vIGxhcmdlIik7 ZWxzZXtyJiZyLmNoYWluU3RhcnQodCk7Zm9yKHZhciBzPXtpbmRleDowLG1hdGNoZXNfaGVh ZDohMSxtYXRjaGVzX3B0MTohMX0sbD17aW5kZXg6MCxtYXRjaGVzX2hlYWQ6ITEsbWF0Y2hl c19wdDE6ITF9LGM9cyx1PTA7dTxuLmxlbmd0aDt1Kyspe3ZhciBmPShnPW5bdV0pWzBdLGg9 KGdbMV0sZ1tnLmxlbmd0aC0xXSk7Z1tnLmxlbmd0aC0yXTtpZihlLnBvaW50c1NhbWUoZixh KSl7aWYoayh1LCEwLCEwKSlicmVha31lbHNlIGlmKGUucG9pbnRzU2FtZShmLG8pKXtpZihr KHUsITAsITEpKWJyZWFrfWVsc2UgaWYoZS5wb2ludHNTYW1lKGgsYSkpe2lmKGsodSwhMSwh MCkpYnJlYWt9ZWxzZSBpZihlLnBvaW50c1NhbWUoaCxvKSYmayh1LCExLCExKSlicmVha31p ZihjPT09cylyZXR1cm4gbi5wdXNoKFthLG9dKSx2b2lkKHImJnIuY2hhaW5OZXcoYSxvKSk7 aWYoYz09PWwpe3ImJnIuY2hhaW5NYXRjaChzLmluZGV4KTt2YXIgcD1zLmluZGV4LGQ9cy5t YXRjaGVzX3B0MT9vOmEsbT1zLm1hdGNoZXNfaGVhZCxnPW5bcF0sdj1tP2dbMF06Z1tnLmxl bmd0aC0xXSx5PW0/Z1sxXTpnW2cubGVuZ3RoLTJdLHg9bT9nW2cubGVuZ3RoLTFdOmdbMF0s Yj1tP2dbZy5sZW5ndGgtMl06Z1sxXTtyZXR1cm4gZS5wb2ludHNDb2xsaW5lYXIoeSx2LGQp JiYobT8ociYmci5jaGFpblJlbW92ZUhlYWQocy5pbmRleCxkKSxnLnNoaWZ0KCkpOihyJiZy LmNoYWluUmVtb3ZlVGFpbChzLmluZGV4LGQpLGcucG9wKCkpLHY9eSksZS5wb2ludHNTYW1l KHgsZCk/KG4uc3BsaWNlKHAsMSksZS5wb2ludHNDb2xsaW5lYXIoYix4LHYpJiYobT8ociYm ci5jaGFpblJlbW92ZVRhaWwocy5pbmRleCx2KSxnLnBvcCgpKToociYmci5jaGFpblJlbW92 ZUhlYWQocy5pbmRleCx2KSxnLnNoaWZ0KCkpKSxyJiZyLmNoYWluQ2xvc2Uocy5pbmRleCks dm9pZCBpLnB1c2goZykpOnZvaWQobT8ociYmci5jaGFpbkFkZEhlYWQocy5pbmRleCxkKSxn LnVuc2hpZnQoZCkpOihyJiZyLmNoYWluQWRkVGFpbChzLmluZGV4LGQpLGcucHVzaChkKSkp fXZhciBfPXMuaW5kZXgsdz1sLmluZGV4O3ImJnIuY2hhaW5Db25uZWN0KF8sdyk7dmFyIFQ9 bltfXS5sZW5ndGg8blt3XS5sZW5ndGg7cy5tYXRjaGVzX2hlYWQ/bC5tYXRjaGVzX2hlYWQ/ VD8oQShfKSxNKF8sdykpOihBKHcpLE0odyxfKSk6TSh3LF8pOmwubWF0Y2hlc19oZWFkP00o Xyx3KTpUPyhBKF8pLE0odyxfKSk6KEEodyksTShfLHcpKX1mdW5jdGlvbiBrKHQsZSxyKXty ZXR1cm4gYy5pbmRleD10LGMubWF0Y2hlc19oZWFkPWUsYy5tYXRjaGVzX3B0MT1yLGM9PT1z PyhjPWwsITEpOihjPW51bGwsITApfWZ1bmN0aW9uIEEodCl7ciYmci5jaGFpblJldmVyc2Uo dCksblt0XS5yZXZlcnNlKCl9ZnVuY3Rpb24gTSh0LGkpe3ZhciBhPW5bdF0sbz1uW2ldLHM9 YVthLmxlbmd0aC0xXSxsPWFbYS5sZW5ndGgtMl0sYz1vWzBdLHU9b1sxXTtlLnBvaW50c0Nv bGxpbmVhcihsLHMsYykmJihyJiZyLmNoYWluUmVtb3ZlVGFpbCh0LHMpLGEucG9wKCkscz1s KSxlLnBvaW50c0NvbGxpbmVhcihzLGMsdSkmJihyJiZyLmNoYWluUmVtb3ZlSGVhZChpLGMp LG8uc2hpZnQoKSksciYmci5jaGFpbkpvaW4odCxpKSxuW3RdPWEuY29uY2F0KG8pLG4uc3Bs aWNlKGksMSl9fSkpLGl9fSx7fV0sMjYxOltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0 LGUscil7dmFyIG49W107cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGk9KHQu bXlGaWxsLmFib3ZlPzg6MCkrKHQubXlGaWxsLmJlbG93PzQ6MCkrKHQub3RoZXJGaWxsJiZ0 Lm90aGVyRmlsbC5hYm92ZT8yOjApKyh0Lm90aGVyRmlsbCYmdC5vdGhlckZpbGwuYmVsb3c/ MTowKTswIT09ZVtpXSYmbi5wdXNoKHtpZDpyP3Iuc2VnbWVudElkKCk6LTEsc3RhcnQ6dC5z dGFydCxlbmQ6dC5lbmQsbXlGaWxsOnthYm92ZToxPT09ZVtpXSxiZWxvdzoyPT09ZVtpXX0s b3RoZXJGaWxsOm51bGx9KX0pKSxyJiZyLnNlbGVjdGVkKG4pLG59dmFyIGk9e3VuaW9uOmZ1 bmN0aW9uKHQsZSl7cmV0dXJuIG4odCxbMCwyLDEsMCwyLDIsMCwwLDEsMCwxLDAsMCwwLDAs MF0sZSl9LGludGVyc2VjdDpmdW5jdGlvbih0LGUpe3JldHVybiBuKHQsWzAsMCwwLDAsMCwy LDAsMiwwLDAsMSwxLDAsMiwxLDBdLGUpfSxkaWZmZXJlbmNlOmZ1bmN0aW9uKHQsZSl7cmV0 dXJuIG4odCxbMCwwLDAsMCwyLDAsMiwwLDEsMSwwLDAsMCwxLDIsMF0sZSl9LGRpZmZlcmVu Y2VSZXY6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbih0LFswLDIsMSwwLDAsMCwxLDEsMCwyLDAs MiwwLDAsMCwwXSxlKX0seG9yOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4odCxbMCwyLDEsMCwy LDAsMCwxLDEsMCwwLDIsMCwxLDIsMF0sZSl9fTtlLmV4cG9ydHM9aX0se31dLDI2MjpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJzdHJlYW0iKS5UcmFuc2Zvcm0s aT10KCJzdHJlYW0tcGFyc2VyIik7ZnVuY3Rpb24gYSgpe24uY2FsbCh0aGlzLHtyZWFkYWJs ZU9iamVjdE1vZGU6ITB9KX1mdW5jdGlvbiBvKHQsZSxyKXtFcnJvci5jYWxsKHRoaXMpLEVy cm9yLmNhcHR1cmVTdGFja1RyYWNlP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsdGhp cy5jb25zdHJ1Y3Rvcik6dGhpcy5zdGFjaz0obmV3IEVycm9yKS5zdGFja3x8IiIsdGhpcy5u YW1lPXRoaXMuY29uc3RydWN0b3IubmFtZSx0aGlzLm1lc3NhZ2U9dCxlJiYodGhpcy5jb2Rl PWUpLHImJih0aGlzLnN0YXR1c0NvZGU9cil9YS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShu LnByb3RvdHlwZSksYS5wcm90b3R5cGUuY29uc3RydWN0b3I9YSxpKGEucHJvdG90eXBlKSxy LlBhcnNlclN0cmVhbT1hLHIuc2xpY2VFcT1mdW5jdGlvbih0LGUscil7Zm9yKHZhciBuPWUs aT0wO2k8ci5sZW5ndGg7KWlmKHRbbisrXSE9PXJbaSsrXSlyZXR1cm4hMTtyZXR1cm4hMH0s ci5zdHIyYXJyPWZ1bmN0aW9uKHQsZSl7dmFyIHI9W10sbj0wO2lmKGUmJiJoZXgiPT09ZSlm b3IoO248dC5sZW5ndGg7KXIucHVzaChwYXJzZUludCh0LnNsaWNlKG4sbisyKSwxNikpLG4r PTI7ZWxzZSBmb3IoO248dC5sZW5ndGg7bisrKXIucHVzaCgyNTUmdC5jaGFyQ29kZUF0KG4p KTtyZXR1cm4gcn0sci5yZWFkVUludDE2TEU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtlXXx0 W2UrMV08PDh9LHIucmVhZFVJbnQxNkJFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbZSsxXXx0 W2VdPDw4fSxyLnJlYWRVSW50MzJMRT1mdW5jdGlvbih0LGUpe3JldHVybiB0W2VdfHRbZSsx XTw8OHx0W2UrMl08PDE2fDE2Nzc3MjE2KnRbZSszXX0sci5yZWFkVUludDMyQkU9ZnVuY3Rp b24odCxlKXtyZXR1cm4gdFtlKzNdfHRbZSsyXTw8OHx0W2UrMV08PDE2fDE2Nzc3MjE2KnRb ZV19LG8ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKSxvLnByb3Rv dHlwZS5jb25zdHJ1Y3Rvcj1vLHIuUHJvYmVFcnJvcj1vfSx7c3RyZWFtOjI4NSwic3RyZWFt LXBhcnNlciI6MzAxfV0sMjYzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0 aW9uIG4odCxlKXt2YXIgcj1uZXcgRXJyb3IodCk7cmV0dXJuIHIuY29kZT1lLHJ9ZnVuY3Rp b24gaSh0KXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUodCkpfWNhdGNo KGUpe3JldHVybiB0fX1mdW5jdGlvbiBhKHQsZSxyKXt0aGlzLmlucHV0PXQuc3ViYXJyYXko ZSxyKSx0aGlzLnN0YXJ0PWU7dmFyIGk9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxs LHRoaXMuaW5wdXQuc3ViYXJyYXkoMCw0KSk7aWYoIklJKlwwIiE9PWkmJiJNTVwwKiIhPT1p KXRocm93IG4oImludmFsaWQgVElGRiBzaWduYXR1cmUiLCJFQkFEREFUQSIpO3RoaXMuYmln X2VuZGlhbj0iTSI9PT1pWzBdfWEucHJvdG90eXBlLmVhY2g9ZnVuY3Rpb24odCl7dGhpcy5h Ym9ydGVkPSExO3ZhciBlPXRoaXMucmVhZF91aW50MzIoNCk7Zm9yKHRoaXMuaWZkc190b19y ZWFkPVt7aWQ6MCxvZmZzZXQ6ZX1dO3RoaXMuaWZkc190b19yZWFkLmxlbmd0aD4wJiYhdGhp cy5hYm9ydGVkOyl7dmFyIHI9dGhpcy5pZmRzX3RvX3JlYWQuc2hpZnQoKTtyLm9mZnNldCYm dGhpcy5zY2FuX2lmZChyLmlkLHIub2Zmc2V0LHQpfX0sYS5wcm90b3R5cGUucmVhZF91aW50 MTY9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pbnB1dDtpZih0KzI+ZS5sZW5ndGgpdGhyb3cg bigidW5leHBlY3RlZCBFT0YiLCJFQkFEREFUQSIpO3JldHVybiB0aGlzLmJpZ19lbmRpYW4/ MjU2KmVbdF0rZVt0KzFdOmVbdF0rMjU2KmVbdCsxXX0sYS5wcm90b3R5cGUucmVhZF91aW50 MzI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pbnB1dDtpZih0KzQ+ZS5sZW5ndGgpdGhyb3cg bigidW5leHBlY3RlZCBFT0YiLCJFQkFEREFUQSIpO3JldHVybiB0aGlzLmJpZ19lbmRpYW4/ MTY3NzcyMTYqZVt0XSs2NTUzNiplW3QrMV0rMjU2KmVbdCsyXStlW3QrM106ZVt0XSsyNTYq ZVt0KzFdKzY1NTM2KmVbdCsyXSsxNjc3NzIxNiplW3QrM119LGEucHJvdG90eXBlLmlzX3N1 YmlmZF9saW5rPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIDA9PT10JiYzNDY2NT09PWV8fDA9PT10 JiYzNDg1Mz09PWV8fDM0NjY1PT09dCYmNDA5NjU9PT1lfSxhLnByb3RvdHlwZS5leGlmX2Zv cm1hdF9sZW5ndGg9ZnVuY3Rpb24odCl7c3dpdGNoKHQpe2Nhc2UgMTpjYXNlIDI6Y2FzZSA2 OmNhc2UgNzpyZXR1cm4gMTtjYXNlIDM6Y2FzZSA4OnJldHVybiAyO2Nhc2UgNDpjYXNlIDk6 Y2FzZSAxMTpyZXR1cm4gNDtjYXNlIDU6Y2FzZSAxMDpjYXNlIDEyOnJldHVybiA4O2RlZmF1 bHQ6cmV0dXJuIDB9fSxhLnByb3RvdHlwZS5leGlmX2Zvcm1hdF9yZWFkPWZ1bmN0aW9uKHQs ZSl7dmFyIHI7c3dpdGNoKHQpe2Nhc2UgMTpjYXNlIDI6cmV0dXJuIHI9dGhpcy5pbnB1dFtl XTtjYXNlIDY6cmV0dXJuKHI9dGhpcy5pbnB1dFtlXSl8MzM1NTQ0MzAqKDEyOCZyKTtjYXNl IDM6cmV0dXJuIHI9dGhpcy5yZWFkX3VpbnQxNihlKTtjYXNlIDg6cmV0dXJuKHI9dGhpcy5y ZWFkX3VpbnQxNihlKSl8MTMxMDcwKigzMjc2OCZyKTtjYXNlIDQ6cmV0dXJuIHI9dGhpcy5y ZWFkX3VpbnQzMihlKTtjYXNlIDk6cmV0dXJuIDB8KHI9dGhpcy5yZWFkX3VpbnQzMihlKSk7 Y2FzZSA1OmNhc2UgMTA6Y2FzZSAxMTpjYXNlIDEyOmNhc2UgNzpkZWZhdWx0OnJldHVybiBu dWxsfX0sYS5wcm90b3R5cGUuc2Nhbl9pZmQ9ZnVuY3Rpb24odCxlLHIpe3ZhciBhPXRoaXMu cmVhZF91aW50MTYoZSk7ZSs9Mjtmb3IodmFyIG89MDtvPGE7bysrKXt2YXIgcz10aGlzLnJl YWRfdWludDE2KGUpLGw9dGhpcy5yZWFkX3VpbnQxNihlKzIpLGM9dGhpcy5yZWFkX3VpbnQz MihlKzQpLHU9dGhpcy5leGlmX2Zvcm1hdF9sZW5ndGgobCksZj1jKnUsaD1mPD00P2UrODp0 aGlzLnJlYWRfdWludDMyKGUrOCkscD0hMTtpZihoK2Y+dGhpcy5pbnB1dC5sZW5ndGgpdGhy b3cgbigidW5leHBlY3RlZCBFT0YiLCJFQkFEREFUQSIpO2Zvcih2YXIgZD1bXSxtPWgsZz0w O2c8YztnKyssbSs9dSl7dmFyIHY9dGhpcy5leGlmX2Zvcm1hdF9yZWFkKGwsbSk7aWYobnVs bD09PXYpe2Q9bnVsbDticmVha31kLnB1c2godil9aWYoQXJyYXkuaXNBcnJheShkKSYmMj09 PWwmJihkPWkoU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGQpKSkmJiJcMCI9PT1k W2QubGVuZ3RoLTFdJiYoZD1kLnNsaWNlKDAsLTEpKSx0aGlzLmlzX3N1YmlmZF9saW5rKHQs cykmJkFycmF5LmlzQXJyYXkoZCkmJk51bWJlci5pc0ludGVnZXIoZFswXSkmJmRbMF0+MCYm KHRoaXMuaWZkc190b19yZWFkLnB1c2goe2lkOnMsb2Zmc2V0OmRbMF19KSxwPSEwKSwhMT09 PXIoe2lzX2JpZ19lbmRpYW46dGhpcy5iaWdfZW5kaWFuLGlmZDp0LHRhZzpzLGZvcm1hdDps LGNvdW50OmMsZW50cnlfb2Zmc2V0OmUrdGhpcy5zdGFydCxkYXRhX2xlbmd0aDpmLGRhdGFf b2Zmc2V0OmgrdGhpcy5zdGFydCx2YWx1ZTpkLGlzX3N1YmlmZF9saW5rOnB9KSlyZXR1cm4g dm9pZCh0aGlzLmFib3J0ZWQ9ITApO2UrPTEyfTA9PT10JiZ0aGlzLmlmZHNfdG9fcmVhZC5w dXNoKHtpZDoxLG9mZnNldDp0aGlzLnJlYWRfdWludDMyKGUpfSl9LGUuZXhwb3J0cy5FeGlm UGFyc2VyPWEsZS5leHBvcnRzLmdldF9vcmllbnRhdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0w O3RyeXtyZXR1cm4gbmV3IGEodCwwLHQubGVuZ3RoKS5lYWNoKChmdW5jdGlvbih0KXtpZigw PT09dC5pZmQmJjI3ND09PXQudGFnJiZBcnJheS5pc0FycmF5KHQudmFsdWUpKXJldHVybiBl PXQudmFsdWVbMF0sITF9KSksZX1jYXRjaCh0KXtyZXR1cm4tMX19fSx7fV0sMjY0OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vY29tbW9uIikucmVhZFVJbnQx NkJFLGk9dCgiLi9jb21tb24iKS5yZWFkVUludDMyQkU7ZnVuY3Rpb24gYSh0LGUpe2lmKHQu bGVuZ3RoPDQrZSlyZXR1cm4gbnVsbDt2YXIgcj1pKHQsZSk7cmV0dXJuIHQubGVuZ3RoPHIr ZXx8cjw4P251bGw6e2JveHR5cGU6U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLHQu c2xpY2UoZSs0LGUrOCkpLGRhdGE6dC5zbGljZShlKzgsZStyKSxlbmQ6ZStyfX1mdW5jdGlv biBvKHQsZSl7Zm9yKHZhciByPTA7Oyl7dmFyIG49YSh0LHIpO2lmKCFuKWJyZWFrO3N3aXRj aChuLmJveHR5cGUpe2Nhc2UiaXNwZSI6ZS5zaXplcy5wdXNoKHt3aWR0aDppKG4uZGF0YSw0 KSxoZWlnaHQ6aShuLmRhdGEsOCl9KTticmVhaztjYXNlImlyb3QiOmUudHJhbnNmb3Jtcy5w dXNoKHt0eXBlOiJpcm90Iix2YWx1ZTozJm4uZGF0YVswXX0pO2JyZWFrO2Nhc2UiaW1pciI6 ZS50cmFuc2Zvcm1zLnB1c2goe3R5cGU6ImltaXIiLHZhbHVlOjEmbi5kYXRhWzBdfSl9cj1u LmVuZH19ZnVuY3Rpb24gcyh0LGUscil7Zm9yKHZhciBuPTAsaT0wO2k8cjtpKyspbj0yNTYq bisodFtlK2ldfHwwKTtyZXR1cm4gbn1mdW5jdGlvbiBsKHQsZSl7Zm9yKHZhciByPXRbNF0+ PjQmMTUsaT0xNSZ0WzRdLGE9dFs1XT4+NCYxNSxvPW4odCw2KSxsPTgsYz0wO2M8bztjKysp e3ZhciB1PW4odCxsKSxmPW4odCxsKz0yKSxoPXModCxsKz0yLGEpLHA9bih0LGwrPWEpO2lm KGwrPTIsMD09PWYmJjE9PT1wKXt2YXIgZD1zKHQsbCxyKSxtPXModCxsK3IsaSk7ZS5pdGVt X2xvY1t1XT17bGVuZ3RoOm0sb2Zmc2V0OmQraH19bCs9cCoocitpKX19ZnVuY3Rpb24gYyh0 LGUpe2Zvcih2YXIgcj1uKHQsNCksaT02LG89MDtvPHI7bysrKXt2YXIgcz1hKHQsaSk7aWYo IXMpYnJlYWs7aWYoImluZmUiPT09cy5ib3h0eXBlKXtmb3IodmFyIGw9bihzLmRhdGEsNCks Yz0iIix1PTg7dTxzLmRhdGEubGVuZ3RoJiZzLmRhdGFbdV07dSsrKWMrPVN0cmluZy5mcm9t Q2hhckNvZGUocy5kYXRhW3VdKTtlLml0ZW1faW5mW2NdPWx9aT1zLmVuZH19ZnVuY3Rpb24g dSh0LGUpe2Zvcih2YXIgcj0wOzspe3ZhciBuPWEodCxyKTtpZighbilicmVhazsiaXBjbyI9 PT1uLmJveHR5cGUmJm8obi5kYXRhLGUpLHI9bi5lbmR9fWUuZXhwb3J0cy51bmJveD1hLGUu ZXhwb3J0cy5yZWFkU2l6ZUZyb21NZXRhPWZ1bmN0aW9uKHQpe3ZhciBlPXtzaXplczpbXSx0 cmFuc2Zvcm1zOltdLGl0ZW1faW5mOnt9LGl0ZW1fbG9jOnt9fTtpZihmdW5jdGlvbih0LGUp e2Zvcih2YXIgcj00Ozspe3ZhciBuPWEodCxyKTtpZighbilicmVhazsiaXBycCI9PT1uLmJv eHR5cGUmJnUobi5kYXRhLGUpLCJpbG9jIj09PW4uYm94dHlwZSYmbChuLmRhdGEsZSksImlp bmYiPT09bi5ib3h0eXBlJiZjKG4uZGF0YSxlKSxyPW4uZW5kfX0odCxlKSxlLnNpemVzLmxl bmd0aCl7dmFyIHIsbixpLG89KHI9ZS5zaXplcyxuPXIucmVkdWNlKChmdW5jdGlvbih0LGUp e3JldHVybiB0LndpZHRoPmUud2lkdGh8fHQud2lkdGg9PT1lLndpZHRoJiZ0LmhlaWdodD5l LmhlaWdodD90OmV9KSksaT1yLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5oZWln aHQ+ZS5oZWlnaHR8fHQuaGVpZ2h0PT09ZS5oZWlnaHQmJnQud2lkdGg+ZS53aWR0aD90OmV9 KSksbi53aWR0aD5pLmhlaWdodHx8bi53aWR0aD09PWkuaGVpZ2h0JiZuLmhlaWdodD5pLndp ZHRoP246aSkscz0xO2UudHJhbnNmb3Jtcy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT17 MTo2LDI6NSwzOjgsNDo3LDU6NCw2OjMsNzoyLDg6MX0scj17MTo0LDI6MywzOjIsNDoxLDU6 Niw2OjUsNzo4LDg6N307aWYoImltaXIiPT09dC50eXBlJiYocz0wPT09dC52YWx1ZT9yW3Nd OmVbcz1lW3M9cltzXV1dKSwiaXJvdCI9PT10LnR5cGUpZm9yKHZhciBuPTA7bjx0LnZhbHVl O24rKylzPWVbc119KSk7dmFyIGY9bnVsbDtyZXR1cm4gZS5pdGVtX2luZi5FeGlmJiYoZj1l Lml0ZW1fbG9jW2UuaXRlbV9pbmYuRXhpZl0pLHt3aWR0aDpvLndpZHRoLGhlaWdodDpvLmhl aWdodCxvcmllbnRhdGlvbjplLnRyYW5zZm9ybXMubGVuZ3RoP3M6bnVsbCx2YXJpYW50czpl LnNpemVzLGV4aWZfbG9jYXRpb246Zn19fSxlLmV4cG9ydHMuZ2V0TWltZVR5cGU9ZnVuY3Rp b24odCl7dmFyIGU9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLHQuc2xpY2UoMCw0 KSkscj17fTtyW2VdPSEwO2Zvcih2YXIgbj04O248dC5sZW5ndGg7bis9NClyW1N0cmluZy5m cm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0LnNsaWNlKG4sbis0KSldPSEwO2lmKHIubWlmMXx8 ci5tc2YxfHxyLm1pYWYpcmV0dXJuImF2aWYiPT09ZXx8ImF2aXMiPT09ZXx8ImF2aW8iPT09 ZT97dHlwZToiYXZpZiIsbWltZToiaW1hZ2UvYXZpZiJ9OiJoZWljIj09PWV8fCJoZWl4Ij09 PWU/e3R5cGU6ImhlaWMiLG1pbWU6ImltYWdlL2hlaWMifToiaGV2YyI9PT1lfHwiaGV2eCI9 PT1lP3t0eXBlOiJoZWljIixtaW1lOiJpbWFnZS9oZWljLXNlcXVlbmNlIn06ci5hdmlmfHxy LmF2aXM/e3R5cGU6ImF2aWYiLG1pbWU6ImltYWdlL2F2aWYifTpyLmhlaWN8fHIuaGVpeHx8 ci5oZXZjfHxyLmhldnh8fHIuaGVpcz9yLm1zZjE/e3R5cGU6ImhlaWYiLG1pbWU6ImltYWdl L2hlaWYtc2VxdWVuY2UifTp7dHlwZToiaGVpZiIsbWltZToiaW1hZ2UvaGVpZiJ9Ont0eXBl OiJhdmlmIixtaW1lOiJpbWFnZS9hdmlmIn19fSx7Ii4vY29tbW9uIjoyNjJ9XSwyNjU6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vY29tbW9uIikuc3RyMmFy cixpPXQoIi4uL2NvbW1vbiIpLnNsaWNlRXEsYT10KCIuLi9jb21tb24iKS5yZWFkVUludDMy QkUsbz10KCIuLi9taWFmX3V0aWxzIikscz10KCIuLi9leGlmX3V0aWxzIiksbD1uKCJmdHlw Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKGkodCw0LGwpKXt2YXIgZT1vLnVuYm94KHQs MCk7aWYoZSl7dmFyIHI9by5nZXRNaW1lVHlwZShlLmRhdGEpO2lmKHIpe2Zvcih2YXIgbixj PWUuZW5kOzspe3ZhciB1PW8udW5ib3godCxjKTtpZighdSlicmVhaztpZihjPXUuZW5kLCJt ZGF0Ij09PXUuYm94dHlwZSlyZXR1cm47aWYoIm1ldGEiPT09dS5ib3h0eXBlKXtuPXUuZGF0 YTticmVha319aWYobil7dmFyIGY9by5yZWFkU2l6ZUZyb21NZXRhKG4pO2lmKGYpe3ZhciBo PXt3aWR0aDpmLndpZHRoLGhlaWdodDpmLmhlaWdodCx0eXBlOnIudHlwZSxtaW1lOnIubWlt ZSx3VW5pdHM6InB4IixoVW5pdHM6InB4In07aWYoZi52YXJpYW50cy5sZW5ndGg+MSYmKGgu dmFyaWFudHM9Zi52YXJpYW50cyksZi5vcmllbnRhdGlvbiYmKGgub3JpZW50YXRpb249Zi5v cmllbnRhdGlvbiksZi5leGlmX2xvY2F0aW9uJiZmLmV4aWZfbG9jYXRpb24ub2Zmc2V0K2Yu ZXhpZl9sb2NhdGlvbi5sZW5ndGg8PXQubGVuZ3RoKXt2YXIgcD1hKHQsZi5leGlmX2xvY2F0 aW9uLm9mZnNldCksZD10LnNsaWNlKGYuZXhpZl9sb2NhdGlvbi5vZmZzZXQrcCs0LGYuZXhp Zl9sb2NhdGlvbi5vZmZzZXQrZi5leGlmX2xvY2F0aW9uLmxlbmd0aCksbT1zLmdldF9vcmll bnRhdGlvbihkKTttPjAmJihoLm9yaWVudGF0aW9uPW0pfXJldHVybiBofX19fX19fSx7Ii4u L2NvbW1vbiI6MjYyLCIuLi9leGlmX3V0aWxzIjoyNjMsIi4uL21pYWZfdXRpbHMiOjI2NH1d LDI2NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9jb21tb24i KS5zdHIyYXJyLGk9dCgiLi4vY29tbW9uIikuc2xpY2VFcSxhPXQoIi4uL2NvbW1vbiIpLnJl YWRVSW50MTZMRSxvPW4oIkJNIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCEodC5sZW5n dGg8MjYpJiZpKHQsMCxvKSlyZXR1cm57d2lkdGg6YSh0LDE4KSxoZWlnaHQ6YSh0LDIyKSx0 eXBlOiJibXAiLG1pbWU6ImltYWdlL2JtcCIsd1VuaXRzOiJweCIsaFVuaXRzOiJweCJ9fX0s eyIuLi9jb21tb24iOjI2Mn1dLDI2NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCIuLi9jb21tb24iKS5zdHIyYXJyLGk9dCgiLi4vY29tbW9uIikuc2xpY2VFcSxh PXQoIi4uL2NvbW1vbiIpLnJlYWRVSW50MTZMRSxvPW4oIkdJRjg3YSIpLHM9bigiR0lGODlh Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCEodC5sZW5ndGg8MTApJiYoaSh0LDAsbyl8 fGkodCwwLHMpKSlyZXR1cm57d2lkdGg6YSh0LDYpLGhlaWdodDphKHQsOCksdHlwZToiZ2lm IixtaW1lOiJpbWFnZS9naWYiLHdVbml0czoicHgiLGhVbml0czoicHgifX19LHsiLi4vY29t bW9uIjoyNjJ9XSwyNjg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgi Li4vY29tbW9uIikucmVhZFVJbnQxNkxFO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1u KHQsMCkscj1uKHQsMiksaT1uKHQsNCk7aWYoMD09PWUmJjE9PT1yJiZpKXtmb3IodmFyIGE9 W10sbz17d2lkdGg6MCxoZWlnaHQ6MH0scz0wO3M8aTtzKyspe3ZhciBsPXRbNisxNipzXXx8 MjU2LGM9dFs2KzE2KnMrMV18fDI1Nix1PXt3aWR0aDpsLGhlaWdodDpjfTthLnB1c2godSks KGw+by53aWR0aHx8Yz5vLmhlaWdodCkmJihvPXUpfXJldHVybnt3aWR0aDpvLndpZHRoLGhl aWdodDpvLmhlaWdodCx2YXJpYW50czphLHR5cGU6ImljbyIsbWltZToiaW1hZ2UveC1pY29u Iix3VW5pdHM6InB4IixoVW5pdHM6InB4In19fX0seyIuLi9jb21tb24iOjI2Mn1dLDI2OTpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9jb21tb24iKS5yZWFk VUludDE2QkUsaT10KCIuLi9jb21tb24iKS5zdHIyYXJyLGE9dCgiLi4vY29tbW9uIikuc2xp Y2VFcSxvPXQoIi4uL2V4aWZfdXRpbHMiKSxzPWkoIkV4aWZcMFwwIik7ZS5leHBvcnRzPWZ1 bmN0aW9uKHQpe2lmKCEodC5sZW5ndGg8MikmJjI1NT09PXRbMF0mJjIxNj09PXRbMV0mJjI1 NT09PXRbMl0pZm9yKHZhciBlPTI7Oyl7Zm9yKDs7KXtpZih0Lmxlbmd0aC1lPDIpcmV0dXJu O2lmKDI1NT09PXRbZSsrXSlicmVha31mb3IodmFyIHIsaSxsPXRbZSsrXTsyNTU9PT1sOyls PXRbZSsrXTtpZigyMDg8PWwmJmw8PTIxN3x8MT09PWwpcj0wO2Vsc2V7aWYoISgxOTI8PWwm Jmw8PTI1NCkpcmV0dXJuO2lmKHQubGVuZ3RoLWU8MilyZXR1cm47cj1uKHQsZSktMixlKz0y fWlmKDIxNz09PWx8fDIxOD09PWwpcmV0dXJuO2lmKDIyNT09PWwmJnI+PTEwJiZhKHQsZSxz KSYmKGk9by5nZXRfb3JpZW50YXRpb24odC5zbGljZShlKzYsZStyKSkpLHI+PTUmJjE5Mjw9 bCYmbDw9MjA3JiYxOTYhPT1sJiYyMDAhPT1sJiYyMDQhPT1sKXtpZih0Lmxlbmd0aC1lPHIp cmV0dXJuO3ZhciBjPXt3aWR0aDpuKHQsZSszKSxoZWlnaHQ6bih0LGUrMSksdHlwZToianBn IixtaW1lOiJpbWFnZS9qcGVnIix3VW5pdHM6InB4IixoVW5pdHM6InB4In07cmV0dXJuIGk+ MCYmKGMub3JpZW50YXRpb249aSksY31lKz1yfX19LHsiLi4vY29tbW9uIjoyNjIsIi4uL2V4 aWZfdXRpbHMiOjI2M31dLDI3MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCIuLi9jb21tb24iKS5zdHIyYXJyLGk9dCgiLi4vY29tbW9uIikuc2xpY2VFcSxhPXQo Ii4uL2NvbW1vbiIpLnJlYWRVSW50MzJCRSxvPW4oIlx4ODlQTkdcclxuXHgxYVxuIikscz1u KCJJSERSIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCEodC5sZW5ndGg8MjQpJiZpKHQs MCxvKSYmaSh0LDEyLHMpKXJldHVybnt3aWR0aDphKHQsMTYpLGhlaWdodDphKHQsMjApLHR5 cGU6InBuZyIsbWltZToiaW1hZ2UvcG5nIix3VW5pdHM6InB4IixoVW5pdHM6InB4In19fSx7 Ii4uL2NvbW1vbiI6MjYyfV0sMjcxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIi4uL2NvbW1vbiIpLnN0cjJhcnIsaT10KCIuLi9jb21tb24iKS5zbGljZUVxLGE9 dCgiLi4vY29tbW9uIikucmVhZFVJbnQzMkJFLG89bigiOEJQU1wwXHgwMSIpO2UuZXhwb3J0 cz1mdW5jdGlvbih0KXtpZighKHQubGVuZ3RoPDIyKSYmaSh0LDAsbykpcmV0dXJue3dpZHRo OmEodCwxOCksaGVpZ2h0OmEodCwxNCksdHlwZToicHNkIixtaW1lOiJpbWFnZS92bmQuYWRv YmUucGhvdG9zaG9wIix3VW5pdHM6InB4IixoVW5pdHM6InB4In19fSx7Ii4uL2NvbW1vbiI6 MjYyfV0sMjcyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7 cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZpc0Zpbml0ZSh0KSYmdD4wfXZhciBpPS88Wy1f LjphLXpBLVowLTldW14+XSo+LyxhPS9ePChbLV8uOmEtekEtWjAtOV0rOik/c3ZnXHMvLG89 L1teLV1cYndpZHRoPSIoW14lXSs/KSJ8W14tXVxid2lkdGg9JyhbXiVdKz8pJy8scz0vXGJo ZWlnaHQ9IihbXiVdKz8pInxcYmhlaWdodD0nKFteJV0rPyknLyxsPS9cYnZpZXdbYkJdb3g9 IiguKz8pInxcYnZpZXdbYkJdb3g9JyguKz8pJy8sYz0vaW4kfG1tJHxjbSR8cHQkfHBjJHxw eCR8ZW0kfGV4JC87ZnVuY3Rpb24gdSh0KXtyZXR1cm4gYy50ZXN0KHQpP3QubWF0Y2goYylb MF06InB4In1lLmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoZnVuY3Rpb24odCl7dmFyIGUscj0w LG49dC5sZW5ndGg7Zm9yKDIzOT09PXRbMF0mJjE4Nz09PXRbMV0mJjE5MT09PXRbMl0mJihy PTMpO3I8biYmKDMyPT09KGU9dFtyXSl8fDk9PT1lfHwxMz09PWV8fDEwPT09ZSk7KXIrKzty ZXR1cm4gciE9PW4mJjYwPT09dFtyXX0odCkpe2Zvcih2YXIgZT0iIixyPTA7cjx0Lmxlbmd0 aDtyKyspZSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0W3JdKTt2YXIgYz0oZS5tYXRjaChpKXx8 WyIiXSlbMF07aWYoYS50ZXN0KGMpKXt2YXIgZj1mdW5jdGlvbih0KXt2YXIgZT10Lm1hdGNo KG8pLHI9dC5tYXRjaChzKSxuPXQubWF0Y2gobCk7cmV0dXJue3dpZHRoOmUmJihlWzFdfHxl WzJdKSxoZWlnaHQ6ciYmKHJbMV18fHJbMl0pLHZpZXdib3g6biYmKG5bMV18fG5bMl0pfX0o YyksaD1wYXJzZUZsb2F0KGYud2lkdGgpLHA9cGFyc2VGbG9hdChmLmhlaWdodCk7aWYoZi53 aWR0aCYmZi5oZWlnaHQpe2lmKCFuKGgpfHwhbihwKSlyZXR1cm47cmV0dXJue3dpZHRoOmgs aGVpZ2h0OnAsdHlwZToic3ZnIixtaW1lOiJpbWFnZS9zdmcreG1sIix3VW5pdHM6dShmLndp ZHRoKSxoVW5pdHM6dShmLmhlaWdodCl9fXZhciBkPShmLnZpZXdib3h8fCIiKS5zcGxpdCgi ICIpLG09e3dpZHRoOmRbMl0saGVpZ2h0OmRbM119LGc9cGFyc2VGbG9hdChtLndpZHRoKSx2 PXBhcnNlRmxvYXQobS5oZWlnaHQpO2lmKG4oZykmJm4odikmJnUobS53aWR0aCk9PT11KG0u aGVpZ2h0KSl7dmFyIHk9Zy92O2lmKGYud2lkdGgpe2lmKCFuKGgpKXJldHVybjtyZXR1cm57 d2lkdGg6aCxoZWlnaHQ6aC95LHR5cGU6InN2ZyIsbWltZToiaW1hZ2Uvc3ZnK3htbCIsd1Vu aXRzOnUoZi53aWR0aCksaFVuaXRzOnUoZi53aWR0aCl9fWlmKGYuaGVpZ2h0KXtpZighbihw KSlyZXR1cm47cmV0dXJue3dpZHRoOnAqeSxoZWlnaHQ6cCx0eXBlOiJzdmciLG1pbWU6Imlt YWdlL3N2Zyt4bWwiLHdVbml0czp1KGYuaGVpZ2h0KSxoVW5pdHM6dShmLmhlaWdodCl9fXJl dHVybnt3aWR0aDpnLGhlaWdodDp2LHR5cGU6InN2ZyIsbWltZToiaW1hZ2Uvc3ZnK3htbCIs d1VuaXRzOnUobS53aWR0aCksaFVuaXRzOnUobS5oZWlnaHQpfX19fX19LHt9XSwyNzM6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vY29tbW9uIikuc3RyMmFy cixpPXQoIi4uL2NvbW1vbiIpLnNsaWNlRXEsYT10KCIuLi9jb21tb24iKS5yZWFkVUludDE2 TEUsbz10KCIuLi9jb21tb24iKS5yZWFkVUludDE2QkUscz10KCIuLi9jb21tb24iKS5yZWFk VUludDMyTEUsbD10KCIuLi9jb21tb24iKS5yZWFkVUludDMyQkUsYz1uKCJJSSpcMCIpLHU9 bigiTU1cMCoiKTtmdW5jdGlvbiBmKHQsZSxyKXtyZXR1cm4gcj9vKHQsZSk6YSh0LGUpfWZ1 bmN0aW9uIGgodCxlLHIpe3JldHVybiByP2wodCxlKTpzKHQsZSl9ZnVuY3Rpb24gcCh0LGUs cil7dmFyIG49Zih0LGUrMixyKTtyZXR1cm4gMSE9PWgodCxlKzQscil8fDMhPT1uJiY0IT09 bj9udWxsOjM9PT1uP2YodCxlKzgscik6aCh0LGUrOCxyKX1lLmV4cG9ydHM9ZnVuY3Rpb24o dCl7aWYoISh0Lmxlbmd0aDw4KSYmKGkodCwwLGMpfHxpKHQsMCx1KSkpe3ZhciBlPTc3PT09 dFswXSxyPWgodCw0LGUpLTg7aWYoIShyPDApKXt2YXIgbj1yKzg7aWYoISh0Lmxlbmd0aC1u PDIpKXt2YXIgYT0xMipmKHQsbiswLGUpO2lmKCEoYTw9MHx8KG4rPTIsdC5sZW5ndGgtbjxh KSkpe3ZhciBvLHMsbCxkO2ZvcihvPTA7bzxhO28rPTEyKTI1Nj09PShkPWYodCxuK28sZSkp P3M9cCh0LG4rbyxlKToyNTc9PT1kJiYobD1wKHQsbitvLGUpKTtyZXR1cm4gcyYmbD97d2lk dGg6cyxoZWlnaHQ6bCx0eXBlOiJ0aWZmIixtaW1lOiJpbWFnZS90aWZmIix3VW5pdHM6InB4 IixoVW5pdHM6InB4In06dm9pZCAwfX19fX19LHsiLi4vY29tbW9uIjoyNjJ9XSwyNzQ6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vY29tbW9uIikuc3RyMmFy cixpPXQoIi4uL2NvbW1vbiIpLnNsaWNlRXEsYT10KCIuLi9jb21tb24iKS5yZWFkVUludDE2 TEUsbz10KCIuLi9jb21tb24iKS5yZWFkVUludDMyTEUscz10KCIuLi9leGlmX3V0aWxzIiks bD1uKCJSSUZGIiksYz1uKCJXRUJQIik7ZnVuY3Rpb24gdSh0LGUpe2lmKDE1Nz09PXRbZSsz XSYmMT09PXRbZSs0XSYmNDI9PT10W2UrNV0pcmV0dXJue3dpZHRoOjE2MzgzJmEodCxlKzYp LGhlaWdodDoxNjM4MyZhKHQsZSs4KSx0eXBlOiJ3ZWJwIixtaW1lOiJpbWFnZS93ZWJwIix3 VW5pdHM6InB4IixoVW5pdHM6InB4In19ZnVuY3Rpb24gZih0LGUpe2lmKDQ3PT09dFtlXSl7 dmFyIHI9byh0LGUrMSk7cmV0dXJue3dpZHRoOjErKDE2MzgzJnIpLGhlaWdodDoxKyhyPj4x NCYxNjM4MyksdHlwZToid2VicCIsbWltZToiaW1hZ2Uvd2VicCIsd1VuaXRzOiJweCIsaFVu aXRzOiJweCJ9fX1mdW5jdGlvbiBoKHQsZSl7cmV0dXJue3dpZHRoOjErKHRbZSs2XTw8MTZ8 dFtlKzVdPDw4fHRbZSs0XSksaGVpZ2h0OjErKHRbZSs5XTw8ZXx0W2UrOF08PDh8dFtlKzdd KSx0eXBlOiJ3ZWJwIixtaW1lOiJpbWFnZS93ZWJwIix3VW5pdHM6InB4IixoVW5pdHM6InB4 In19ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCEodC5sZW5ndGg8MTYpJiYoaSh0LDAsbCl8 fGkodCw4LGMpKSl7dmFyIGU9MTIscj1udWxsLG49MCxhPW8odCw0KSs4O2lmKCEoYT50Lmxl bmd0aCkpe2Zvcig7ZSs4PGE7KWlmKDAhPT10W2VdKXt2YXIgcD1TdHJpbmcuZnJvbUNoYXJD b2RlLmFwcGx5KG51bGwsdC5zbGljZShlLGUrNCkpLGQ9byh0LGUrNCk7IlZQOCAiPT09cCYm ZD49MTA/cj1yfHx1KHQsZSs4KToiVlA4TCI9PT1wJiZkPj05P3I9cnx8Zih0LGUrOCk6IlZQ OFgiPT09cCYmZD49MTA/cj1yfHxoKHQsZSs4KToiRVhJRiI9PT1wJiYobj1zLmdldF9vcmll bnRhdGlvbih0LnNsaWNlKGUrOCxlKzgrZCkpLGU9MS8wKSxlKz04K2R9ZWxzZSBlKys7aWYo cilyZXR1cm4gbj4wJiYoci5vcmllbnRhdGlvbj1uKSxyfX19fSx7Ii4uL2NvbW1vbiI6MjYy LCIuLi9leGlmX3V0aWxzIjoyNjN9XSwyNzU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7ZS5leHBvcnRzPXthdmlmOnQoIi4vcGFyc2Vfc3luYy9hdmlmIiksYm1wOnQoIi4vcGFy c2Vfc3luYy9ibXAiKSxnaWY6dCgiLi9wYXJzZV9zeW5jL2dpZiIpLGljbzp0KCIuL3BhcnNl X3N5bmMvaWNvIiksanBlZzp0KCIuL3BhcnNlX3N5bmMvanBlZyIpLHBuZzp0KCIuL3BhcnNl X3N5bmMvcG5nIikscHNkOnQoIi4vcGFyc2Vfc3luYy9wc2QiKSxzdmc6dCgiLi9wYXJzZV9z eW5jL3N2ZyIpLHRpZmY6dCgiLi9wYXJzZV9zeW5jL3RpZmYiKSx3ZWJwOnQoIi4vcGFyc2Vf c3luYy93ZWJwIil9fSx7Ii4vcGFyc2Vfc3luYy9hdmlmIjoyNjUsIi4vcGFyc2Vfc3luYy9i bXAiOjI2NiwiLi9wYXJzZV9zeW5jL2dpZiI6MjY3LCIuL3BhcnNlX3N5bmMvaWNvIjoyNjgs Ii4vcGFyc2Vfc3luYy9qcGVnIjoyNjksIi4vcGFyc2Vfc3luYy9wbmciOjI3MCwiLi9wYXJz ZV9zeW5jL3BzZCI6MjcxLCIuL3BhcnNlX3N5bmMvc3ZnIjoyNzIsIi4vcGFyc2Vfc3luYy90 aWZmIjoyNzMsIi4vcGFyc2Vfc3luYy93ZWJwIjoyNzR9XSwyNzY6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9saWIvcGFyc2Vyc19zeW5jIik7ZS5leHBvcnRz PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0KXtmb3IodmFyIGU9T2JqZWN0LmtleXMo bikscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgaT1uW2Vbcl1dKHQpO2lmKGkpcmV0dXJuIGl9 cmV0dXJuIG51bGx9KHQpfSxlLmV4cG9ydHMucGFyc2Vycz1ufSx7Ii4vbGliL3BhcnNlcnNf c3luYyI6Mjc1fV0sMjc3OltmdW5jdGlvbih0LGUscil7dmFyIG4saSxhPWUuZXhwb3J0cz17 fTtmdW5jdGlvbiBvKCl7dGhyb3cgbmV3IEVycm9yKCJzZXRUaW1lb3V0IGhhcyBub3QgYmVl biBkZWZpbmVkIil9ZnVuY3Rpb24gcygpe3Rocm93IG5ldyBFcnJvcigiY2xlYXJUaW1lb3V0 IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gbCh0KXtpZihuPT09c2V0VGltZW91 dClyZXR1cm4gc2V0VGltZW91dCh0LDApO2lmKChuPT09b3x8IW4pJiZzZXRUaW1lb3V0KXJl dHVybiBuPXNldFRpbWVvdXQsc2V0VGltZW91dCh0LDApO3RyeXtyZXR1cm4gbih0LDApfWNh dGNoKGUpe3RyeXtyZXR1cm4gbi5jYWxsKG51bGwsdCwwKX1jYXRjaChlKXtyZXR1cm4gbi5j YWxsKHRoaXMsdCwwKX19fSFmdW5jdGlvbigpe3RyeXtuPSJmdW5jdGlvbiI9PXR5cGVvZiBz ZXRUaW1lb3V0P3NldFRpbWVvdXQ6b31jYXRjaCh0KXtuPW99dHJ5e2k9ImZ1bmN0aW9uIj09 dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6c31jYXRjaCh0KXtpPXN9fSgpO3Zh ciBjLHU9W10sZj0hMSxoPS0xO2Z1bmN0aW9uIHAoKXtmJiZjJiYoZj0hMSxjLmxlbmd0aD91 PWMuY29uY2F0KHUpOmg9LTEsdS5sZW5ndGgmJmQoKSl9ZnVuY3Rpb24gZCgpe2lmKCFmKXt2 YXIgdD1sKHApO2Y9ITA7Zm9yKHZhciBlPXUubGVuZ3RoO2U7KXtmb3IoYz11LHU9W107Kyto PGU7KWMmJmNbaF0ucnVuKCk7aD0tMSxlPXUubGVuZ3RofWM9bnVsbCxmPSExLGZ1bmN0aW9u KHQpe2lmKGk9PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dCh0KTtpZigoaT09 PXN8fCFpKSYmY2xlYXJUaW1lb3V0KXJldHVybiBpPWNsZWFyVGltZW91dCxjbGVhclRpbWVv dXQodCk7dHJ5e2kodCl9Y2F0Y2goZSl7dHJ5e3JldHVybiBpLmNhbGwobnVsbCx0KX1jYXRj aChlKXtyZXR1cm4gaS5jYWxsKHRoaXMsdCl9fX0odCl9fWZ1bmN0aW9uIG0odCxlKXt0aGlz LmZ1bj10LHRoaXMuYXJyYXk9ZX1mdW5jdGlvbiBnKCl7fWEubmV4dFRpY2s9ZnVuY3Rpb24o dCl7dmFyIGU9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxl bmd0aD4xKWZvcih2YXIgcj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspZVtyLTFdPWFyZ3Vt ZW50c1tyXTt1LnB1c2gobmV3IG0odCxlKSksMSE9PXUubGVuZ3RofHxmfHxsKGQpfSxtLnBy b3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkp fSxhLnRpdGxlPSJicm93c2VyIixhLmJyb3dzZXI9ITAsYS5lbnY9e30sYS5hcmd2PVtdLGEu dmVyc2lvbj0iIixhLnZlcnNpb25zPXt9LGEub249ZyxhLmFkZExpc3RlbmVyPWcsYS5vbmNl PWcsYS5vZmY9ZyxhLnJlbW92ZUxpc3RlbmVyPWcsYS5yZW1vdmVBbGxMaXN0ZW5lcnM9Zyxh LmVtaXQ9ZyxhLnByZXBlbmRMaXN0ZW5lcj1nLGEucHJlcGVuZE9uY2VMaXN0ZW5lcj1nLGEu bGlzdGVuZXJzPWZ1bmN0aW9uKHQpe3JldHVybltdfSxhLmJpbmRpbmc9ZnVuY3Rpb24odCl7 dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCIpfSxh LmN3ZD1mdW5jdGlvbigpe3JldHVybiIvIn0sYS5jaGRpcj1mdW5jdGlvbih0KXt0aHJvdyBu ZXcgRXJyb3IoInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCIpfSxhLnVtYXNrPWZ1 bmN0aW9uKCl7cmV0dXJuIDB9fSx7fV0sMjc4OltmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9u KHIpeyhmdW5jdGlvbigpe2Zvcih2YXIgbj10KCJwZXJmb3JtYW5jZS1ub3ciKSxpPSJ1bmRl ZmluZWQiPT10eXBlb2Ygd2luZG93P3I6d2luZG93LGE9WyJtb3oiLCJ3ZWJraXQiXSxvPSJB bmltYXRpb25GcmFtZSIscz1pWyJyZXF1ZXN0IitvXSxsPWlbImNhbmNlbCIrb118fGlbImNh bmNlbFJlcXVlc3QiK29dLGM9MDshcyYmYzxhLmxlbmd0aDtjKyspcz1pW2FbY10rIlJlcXVl c3QiK29dLGw9aVthW2NdKyJDYW5jZWwiK29dfHxpW2FbY10rIkNhbmNlbFJlcXVlc3QiK29d O2lmKCFzfHwhbCl7dmFyIHU9MCxmPTAsaD1bXTtzPWZ1bmN0aW9uKHQpe2lmKDA9PT1oLmxl bmd0aCl7dmFyIGU9bigpLHI9TWF0aC5tYXgoMCwxZTMvNjAtKGUtdSkpO3U9citlLHNldFRp bWVvdXQoKGZ1bmN0aW9uKCl7dmFyIHQ9aC5zbGljZSgwKTtoLmxlbmd0aD0wO2Zvcih2YXIg ZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKCF0W2VdLmNhbmNlbGxlZCl0cnl7dFtlXS5jYWxsYmFj ayh1KX1jYXRjaCh0KXtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3Rocm93IHR9KSwwKX19KSxN YXRoLnJvdW5kKHIpKX1yZXR1cm4gaC5wdXNoKHtoYW5kbGU6KytmLGNhbGxiYWNrOnQsY2Fu Y2VsbGVkOiExfSksZn0sbD1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPGgubGVuZ3RoO2Ur KyloW2VdLmhhbmRsZT09PXQmJihoW2VdLmNhbmNlbGxlZD0hMCl9fWUuZXhwb3J0cz1mdW5j dGlvbih0KXtyZXR1cm4gcy5jYWxsKGksdCl9LGUuZXhwb3J0cy5jYW5jZWw9ZnVuY3Rpb24o KXtsLmFwcGx5KGksYXJndW1lbnRzKX0sZS5leHBvcnRzLnBvbHlmaWxsPWZ1bmN0aW9uKHQp e3R8fCh0PWkpLHQucmVxdWVzdEFuaW1hdGlvbkZyYW1lPXMsdC5jYW5jZWxBbmltYXRpb25G cmFtZT1sfX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBn bG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQi IT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHsicGVyZm9ybWFuY2Utbm93IjoyNTJ9XSwy Nzk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiYXJyYXktYm91bmRz IiksaT10KCJjb2xvci1ub3JtYWxpemUiKSxhPXQoInVwZGF0ZS1kaWZmIiksbz10KCJwaWNr LWJ5LWFsaWFzIikscz10KCJvYmplY3QtYXNzaWduIiksbD10KCJmbGF0dGVuLXZlcnRleC1k YXRhIiksYz10KCJ0by1mbG9hdDMyIiksdT1jLmZsb2F0MzIsZj1jLmZyYWN0MzI7ZS5leHBv cnRzPWZ1bmN0aW9uKHQsZSl7ImZ1bmN0aW9uIj09dHlwZW9mIHQ/KGV8fChlPXt9KSxlLnJl Z2w9dCk6ZT10O2UubGVuZ3RoJiYoZS5wb3NpdGlvbnM9ZSk7aWYoISh0PWUucmVnbCkuaGFz RXh0ZW5zaW9uKCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikpdGhyb3cgRXJyb3IoInJlZ2wt ZXJyb3IyZDogYEFOR0xFX2luc3RhbmNlZF9hcnJheXNgIGV4dGVuc2lvbiBzaG91bGQgYmUg ZW5hYmxlZCIpO3ZhciByLGMscCxkLG0sZyx2PXQuX2dsLHk9e2NvbG9yOiJibGFjayIsY2Fw U2l6ZTo1LGxpbmVXaWR0aDoxLG9wYWNpdHk6MSx2aWV3cG9ydDpudWxsLHJhbmdlOm51bGws b2Zmc2V0OjAsY291bnQ6MCxib3VuZHM6bnVsbCxwb3NpdGlvbnM6W10sZXJyb3JzOltdfSx4 PVtdO3JldHVybiBkPXQuYnVmZmVyKHt1c2FnZToiZHluYW1pYyIsdHlwZToidWludDgiLGRh dGE6bmV3IFVpbnQ4QXJyYXkoMCl9KSxjPXQuYnVmZmVyKHt1c2FnZToiZHluYW1pYyIsdHlw ZToiZmxvYXQiLGRhdGE6bmV3IFVpbnQ4QXJyYXkoMCl9KSxwPXQuYnVmZmVyKHt1c2FnZToi ZHluYW1pYyIsdHlwZToiZmxvYXQiLGRhdGE6bmV3IFVpbnQ4QXJyYXkoMCl9KSxtPXQuYnVm ZmVyKHt1c2FnZToiZHluYW1pYyIsdHlwZToiZmxvYXQiLGRhdGE6bmV3IFVpbnQ4QXJyYXko MCl9KSxnPXQuYnVmZmVyKHt1c2FnZToic3RhdGljIix0eXBlOiJmbG9hdCIsZGF0YTpofSks VChlKSxyPXQoe3ZlcnQ6IlxuXHRcdHByZWNpc2lvbiBoaWdocCBmbG9hdDtcblxuXHRcdGF0 dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uLCBwb3NpdGlvbkZyYWN0O1xuXHRcdGF0dHJpYnV0ZSB2 ZWM0IGVycm9yO1xuXHRcdGF0dHJpYnV0ZSB2ZWM0IGNvbG9yO1xuXG5cdFx0YXR0cmlidXRl IHZlYzIgZGlyZWN0aW9uLCBsaW5lT2Zmc2V0LCBjYXBPZmZzZXQ7XG5cblx0XHR1bmlmb3Jt IHZlYzQgdmlld3BvcnQ7XG5cdFx0dW5pZm9ybSBmbG9hdCBsaW5lV2lkdGgsIGNhcFNpemU7 XG5cdFx0dW5pZm9ybSB2ZWMyIHNjYWxlLCBzY2FsZUZyYWN0LCB0cmFuc2xhdGUsIHRyYW5z bGF0ZUZyYWN0O1xuXG5cdFx0dmFyeWluZyB2ZWM0IGZyYWdDb2xvcjtcblxuXHRcdHZvaWQg bWFpbigpIHtcblx0XHRcdGZyYWdDb2xvciA9IGNvbG9yIC8gMjU1LjtcblxuXHRcdFx0dmVj MiBwaXhlbE9mZnNldCA9IGxpbmVXaWR0aCAqIGxpbmVPZmZzZXQgKyAoY2FwU2l6ZSArIGxp bmVXaWR0aCkgKiBjYXBPZmZzZXQ7XG5cblx0XHRcdHZlYzIgZHh5ID0gLXN0ZXAoLjUsIGRp cmVjdGlvbi54eSkgKiBlcnJvci54eiArIHN0ZXAoZGlyZWN0aW9uLnh5LCB2ZWMyKC0uNSkp ICogZXJyb3IueXc7XG5cblx0XHRcdHZlYzIgcG9zaXRpb24gPSBwb3NpdGlvbiArIGR4eTtc blxuXHRcdFx0dmVjMiBwb3MgPSAocG9zaXRpb24gKyB0cmFuc2xhdGUpICogc2NhbGVcblx0 XHRcdFx0KyAocG9zaXRpb25GcmFjdCArIHRyYW5zbGF0ZUZyYWN0KSAqIHNjYWxlXG5cdFx0 XHRcdCsgKHBvc2l0aW9uICsgdHJhbnNsYXRlKSAqIHNjYWxlRnJhY3Rcblx0XHRcdFx0KyAo cG9zaXRpb25GcmFjdCArIHRyYW5zbGF0ZUZyYWN0KSAqIHNjYWxlRnJhY3Q7XG5cblx0XHRc dHBvcyArPSBwaXhlbE9mZnNldCAvIHZpZXdwb3J0Lnp3O1xuXG5cdFx0XHRnbF9Qb3NpdGlv biA9IHZlYzQocG9zICogMi4gLSAxLiwgMCwgMSk7XG5cdFx0fVxuXHRcdCIsZnJhZzoiXG5c dFx0cHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuXG5cdFx0dmFyeWluZyB2ZWM0IGZyYWdDb2xv cjtcblxuXHRcdHVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcblxuXHRcdHZvaWQgbWFpbigpIHtc blx0XHRcdGdsX0ZyYWdDb2xvciA9IGZyYWdDb2xvcjtcblx0XHRcdGdsX0ZyYWdDb2xvci5h ICo9IG9wYWNpdHk7XG5cdFx0fVxuXHRcdCIsdW5pZm9ybXM6e3JhbmdlOnQucHJvcCgicmFu Z2UiKSxsaW5lV2lkdGg6dC5wcm9wKCJsaW5lV2lkdGgiKSxjYXBTaXplOnQucHJvcCgiY2Fw U2l6ZSIpLG9wYWNpdHk6dC5wcm9wKCJvcGFjaXR5Iiksc2NhbGU6dC5wcm9wKCJzY2FsZSIp LHRyYW5zbGF0ZTp0LnByb3AoInRyYW5zbGF0ZSIpLHNjYWxlRnJhY3Q6dC5wcm9wKCJzY2Fs ZUZyYWN0IiksdHJhbnNsYXRlRnJhY3Q6dC5wcm9wKCJ0cmFuc2xhdGVGcmFjdCIpLHZpZXdw b3J0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuW2Uudmlld3BvcnQueCxlLnZpZXdwb3J0LnksdC52 aWV3cG9ydFdpZHRoLHQudmlld3BvcnRIZWlnaHRdfX0sYXR0cmlidXRlczp7Y29sb3I6e2J1 ZmZlcjpkLG9mZnNldDpmdW5jdGlvbih0LGUpe3JldHVybiA0KmUub2Zmc2V0fSxkaXZpc29y OjF9LHBvc2l0aW9uOntidWZmZXI6YyxvZmZzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gOCpl Lm9mZnNldH0sZGl2aXNvcjoxfSxwb3NpdGlvbkZyYWN0OntidWZmZXI6cCxvZmZzZXQ6ZnVu Y3Rpb24odCxlKXtyZXR1cm4gOCplLm9mZnNldH0sZGl2aXNvcjoxfSxlcnJvcjp7YnVmZmVy Om0sb2Zmc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIDE2KmUub2Zmc2V0fSxkaXZpc29yOjF9 LGRpcmVjdGlvbjp7YnVmZmVyOmcsc3RyaWRlOjI0LG9mZnNldDowfSxsaW5lT2Zmc2V0Onti dWZmZXI6ZyxzdHJpZGU6MjQsb2Zmc2V0Ojh9LGNhcE9mZnNldDp7YnVmZmVyOmcsc3RyaWRl OjI0LG9mZnNldDoxNn19LHByaW1pdGl2ZToidHJpYW5nbGVzIixibGVuZDp7ZW5hYmxlOiEw LGNvbG9yOlswLDAsMCwwXSxlcXVhdGlvbjp7cmdiOiJhZGQiLGFscGhhOiJhZGQifSxmdW5j OntzcmNSR0I6InNyYyBhbHBoYSIsZHN0UkdCOiJvbmUgbWludXMgc3JjIGFscGhhIixzcmNB bHBoYToib25lIG1pbnVzIGRzdCBhbHBoYSIsZHN0QWxwaGE6Im9uZSJ9fSxkZXB0aDp7ZW5h YmxlOiExfSxzY2lzc29yOntlbmFibGU6ITAsYm94OnQucHJvcCgidmlld3BvcnQiKX0sdmll d3BvcnQ6dC5wcm9wKCJ2aWV3cG9ydCIpLHN0ZW5jaWw6ITEsaW5zdGFuY2VzOnQucHJvcCgi Y291bnQiKSxjb3VudDpoLmxlbmd0aH0pLHMoYix7dXBkYXRlOlQsZHJhdzpfLGRlc3Ryb3k6 ayxyZWdsOnQsZ2w6dixjYW52YXM6di5jYW52YXMsZ3JvdXBzOnh9KSxiO2Z1bmN0aW9uIGIo dCl7dD9UKHQpOm51bGw9PT10JiZrKCksXygpfWZ1bmN0aW9uIF8oZSl7aWYoIm51bWJlciI9 PXR5cGVvZiBlKXJldHVybiB3KGUpO2UmJiFBcnJheS5pc0FycmF5KGUpJiYoZT1bZV0pLHQu X3JlZnJlc2goKSx4LmZvckVhY2goKGZ1bmN0aW9uKHQscil7dCYmKGUmJihlW3JdP3QuZHJh dz0hMDp0LmRyYXc9ITEpLHQuZHJhdz93KHIpOnQuZHJhdz0hMCl9KSl9ZnVuY3Rpb24gdyh0 KXsibnVtYmVyIj09dHlwZW9mIHQmJih0PXhbdF0pLG51bGwhPXQmJnQmJnQuY291bnQmJnQu Y29sb3ImJnQub3BhY2l0eSYmdC5wb3NpdGlvbnMmJnQucG9zaXRpb25zLmxlbmd0aD4xJiYo dC5zY2FsZVJhdGlvPVt0LnNjYWxlWzBdKnQudmlld3BvcnQud2lkdGgsdC5zY2FsZVsxXSp0 LnZpZXdwb3J0LmhlaWdodF0scih0KSx0LmFmdGVyJiZ0LmFmdGVyKHQpKX1mdW5jdGlvbiBU KHQpe2lmKHQpe251bGwhPXQubGVuZ3RoPyJudW1iZXIiPT10eXBlb2YgdFswXSYmKHQ9W3tw b3NpdGlvbnM6dH1dKTpBcnJheS5pc0FycmF5KHQpfHwodD1bdF0pO3ZhciBlPTAscj0wO2lm KGIuZ3JvdXBzPXg9dC5tYXAoKGZ1bmN0aW9uKHQsYyl7dmFyIHU9eFtjXTtyZXR1cm4gdD8o ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dD17YWZ0ZXI6dH06Im51bWJlciI9PXR5cGVvZiB0WzBd JiYodD17cG9zaXRpb25zOnR9KSx0PW8odCx7Y29sb3I6ImNvbG9yIGNvbG9ycyBmaWxsIixj YXBTaXplOiJjYXBTaXplIGNhcCBjYXBzaXplIGNhcC1zaXplIixsaW5lV2lkdGg6ImxpbmVX aWR0aCBsaW5lLXdpZHRoIHdpZHRoIGxpbmUgdGhpY2tuZXNzIixvcGFjaXR5OiJvcGFjaXR5 IGFscGhhIixyYW5nZToicmFuZ2UgZGF0YUJveCIsdmlld3BvcnQ6InZpZXdwb3J0IHZpZXdC b3giLGVycm9yczoiZXJyb3JzIGVycm9yIixwb3NpdGlvbnM6InBvc2l0aW9ucyBwb3NpdGlv biBkYXRhIHBvaW50cyJ9KSx1fHwoeFtjXT11PXtpZDpjLHNjYWxlOm51bGwsdHJhbnNsYXRl Om51bGwsc2NhbGVGcmFjdDpudWxsLHRyYW5zbGF0ZUZyYWN0Om51bGwsZHJhdzohMH0sdD1z KHt9LHksdCkpLGEodSx0LFt7bGluZVdpZHRoOmZ1bmN0aW9uKHQpe3JldHVybi41Kit0fSxj YXBTaXplOmZ1bmN0aW9uKHQpe3JldHVybi41Kit0fSxvcGFjaXR5OnBhcnNlRmxvYXQsZXJy b3JzOmZ1bmN0aW9uKHQpe3JldHVybiB0PWwodCkscis9dC5sZW5ndGgsdH0scG9zaXRpb25z OmZ1bmN0aW9uKHQscil7cmV0dXJuIHQ9bCh0LCJmbG9hdDY0Iiksci5jb3VudD1NYXRoLmZs b29yKHQubGVuZ3RoLzIpLHIuYm91bmRzPW4odCwyKSxyLm9mZnNldD1lLGUrPXIuY291bnQs dH19LHtjb2xvcjpmdW5jdGlvbih0LGUpe3ZhciByPWUuY291bnQ7aWYodHx8KHQ9InRyYW5z cGFyZW50IiksIUFycmF5LmlzQXJyYXkodCl8fCJudW1iZXIiPT10eXBlb2YgdFswXSl7dmFy IG49dDt0PUFycmF5KHIpO2Zvcih2YXIgYT0wO2E8cjthKyspdFthXT1ufWlmKHQubGVuZ3Ro PHIpdGhyb3cgRXJyb3IoIk5vdCBlbm91Z2ggY29sb3JzIik7Zm9yKHZhciBvPW5ldyBVaW50 OEFycmF5KDQqcikscz0wO3M8cjtzKyspe3ZhciBsPWkodFtzXSwidWludDgiKTtvLnNldChs LDQqcyl9cmV0dXJuIG99LHJhbmdlOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lLmJvdW5kczty ZXR1cm4gdHx8KHQ9biksZS5zY2FsZT1bMS8odFsyXS10WzBdKSwxLyh0WzNdLXRbMV0pXSxl LnRyYW5zbGF0ZT1bLXRbMF0sLXRbMV1dLGUuc2NhbGVGcmFjdD1mKGUuc2NhbGUpLGUudHJh bnNsYXRlRnJhY3Q9ZihlLnRyYW5zbGF0ZSksdH0sdmlld3BvcnQ6ZnVuY3Rpb24odCl7dmFy IGU7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/ZT17eDp0WzBdLHk6dFsxXSx3aWR0aDp0WzJd LXRbMF0saGVpZ2h0OnRbM10tdFsxXX06dD8oZT17eDp0Lnh8fHQubGVmdHx8MCx5OnQueXx8 dC50b3B8fDB9LHQucmlnaHQ/ZS53aWR0aD10LnJpZ2h0LWUueDplLndpZHRoPXQud3x8dC53 aWR0aHx8MCx0LmJvdHRvbT9lLmhlaWdodD10LmJvdHRvbS1lLnk6ZS5oZWlnaHQ9dC5ofHx0 LmhlaWdodHx8MCk6ZT17eDowLHk6MCx3aWR0aDp2LmRyYXdpbmdCdWZmZXJXaWR0aCxoZWln aHQ6di5kcmF3aW5nQnVmZmVySGVpZ2h0fSxlfX1dKSx1KTp1fSkpLGV8fHIpe3ZhciBoPXgu cmVkdWNlKChmdW5jdGlvbih0LGUscil7cmV0dXJuIHQrKGU/ZS5jb3VudDowKX0pLDApLGc9 bmV3IEZsb2F0NjRBcnJheSgyKmgpLF89bmV3IFVpbnQ4QXJyYXkoNCpoKSx3PW5ldyBGbG9h dDMyQXJyYXkoNCpoKTt4LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7aWYodCl7dmFyIHI9dC5w b3NpdGlvbnMsbj10LmNvdW50LGk9dC5vZmZzZXQsYT10LmNvbG9yLG89dC5lcnJvcnM7biYm KF8uc2V0KGEsNCppKSx3LnNldChvLDQqaSksZy5zZXQociwyKmkpKX19KSk7dmFyIFQ9dShn KTtjKFQpO3ZhciBrPWYoZyxUKTtwKGspLGQoXyksbSh3KX19fWZ1bmN0aW9uIGsoKXtjLmRl c3Ryb3koKSxwLmRlc3Ryb3koKSxkLmRlc3Ryb3koKSxtLmRlc3Ryb3koKSxnLmRlc3Ryb3ko KX19O3ZhciBoPVtbMSwwLDAsMSwwLDBdLFsxLDAsMCwtMSwwLDBdLFstMSwwLDAsLTEsMCww XSxbLTEsMCwwLC0xLDAsMF0sWy0xLDAsMCwxLDAsMF0sWzEsMCwwLDEsMCwwXSxbMSwwLC0x LDAsMCwxXSxbMSwwLC0xLDAsMCwtMV0sWzEsMCwxLDAsMCwtMV0sWzEsMCwxLDAsMCwtMV0s WzEsMCwxLDAsMCwxXSxbMSwwLC0xLDAsMCwxXSxbLTEsMCwtMSwwLDAsMV0sWy0xLDAsLTEs MCwwLC0xXSxbLTEsMCwxLDAsMCwtMV0sWy0xLDAsMSwwLDAsLTFdLFstMSwwLDEsMCwwLDFd LFstMSwwLC0xLDAsMCwxXSxbMCwxLDEsMCwwLDBdLFswLDEsLTEsMCwwLDBdLFswLC0xLC0x LDAsMCwwXSxbMCwtMSwtMSwwLDAsMF0sWzAsMSwxLDAsMCwwXSxbMCwtMSwxLDAsMCwwXSxb MCwxLDAsLTEsMSwwXSxbMCwxLDAsLTEsLTEsMF0sWzAsMSwwLDEsLTEsMF0sWzAsMSwwLDEs MSwwXSxbMCwxLDAsLTEsMSwwXSxbMCwxLDAsMSwtMSwwXSxbMCwtMSwwLC0xLDEsMF0sWzAs LTEsMCwtMSwtMSwwXSxbMCwtMSwwLDEsLTEsMF0sWzAsLTEsMCwxLDEsMF0sWzAsLTEsMCwt MSwxLDBdLFswLC0xLDAsMSwtMSwwXV19LHsiYXJyYXktYm91bmRzIjo3MSwiY29sb3Itbm9y bWFsaXplIjo4OSwiZmxhdHRlbi12ZXJ0ZXgtZGF0YSI6MTkxLCJvYmplY3QtYXNzaWduIjoy NDcsInBpY2stYnktYWxpYXMiOjI1MywidG8tZmxvYXQzMiI6MzEzLCJ1cGRhdGUtZGlmZiI6 MzI5fV0sMjgwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImNvbG9y LW5vcm1hbGl6ZSIpLGk9dCgiYXJyYXktYm91bmRzIiksYT10KCJvYmplY3QtYXNzaWduIiks bz10KCJnbHNsaWZ5Iikscz10KCJwaWNrLWJ5LWFsaWFzIiksbD10KCJmbGF0dGVuLXZlcnRl eC1kYXRhIiksYz10KCJlYXJjdXQiKSx1PXQoImFycmF5LW5vcm1hbGl6ZSIpLGY9dCgidG8t ZmxvYXQzMiIpLGg9Zi5mbG9hdDMyLHA9Zi5mcmFjdDMyLGQ9dCgiZXM2LXdlYWstbWFwIiks bT10KCJwYXJzZS1yZWN0IiksZz10KCJhcnJheS1maW5kLWluZGV4Iik7ZnVuY3Rpb24gdih0 LGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIHYpKXJldHVybiBuZXcgdih0LGUpO2lmKCJmdW5j dGlvbiI9PXR5cGVvZiB0PyhlfHwoZT17fSksZS5yZWdsPXQpOmU9dCxlLmxlbmd0aCYmKGUu cG9zaXRpb25zPWUpLCEodD1lLnJlZ2wpLmhhc0V4dGVuc2lvbigiQU5HTEVfaW5zdGFuY2Vk X2FycmF5cyIpKXRocm93IEVycm9yKCJyZWdsLWVycm9yMmQ6IGBBTkdMRV9pbnN0YW5jZWRf YXJyYXlzYCBleHRlbnNpb24gc2hvdWxkIGJlIGVuYWJsZWQiKTt0aGlzLmdsPXQuX2dsLHRo aXMucmVnbD10LHRoaXMucGFzc2VzPVtdLHRoaXMuc2hhZGVycz12LnNoYWRlcnMuaGFzKHQp P3Yuc2hhZGVycy5nZXQodCk6di5zaGFkZXJzLnNldCh0LHYuY3JlYXRlU2hhZGVycyh0KSku Z2V0KHQpLHRoaXMudXBkYXRlKGUpfWUuZXhwb3J0cz12LHYuZGFzaE11bHQ9Mix2Lm1heFBh dHRlcm5MZW5ndGg9MjU2LHYucHJlY2lzaW9uVGhyZXNob2xkPTNlNix2Lm1heFBvaW50cz0x ZTQsdi5tYXhMaW5lcz0yMDQ4LHYuc2hhZGVycz1uZXcgZCx2LmNyZWF0ZVNoYWRlcnM9ZnVu Y3Rpb24odCl7dmFyIGUscj10LmJ1ZmZlcih7dXNhZ2U6InN0YXRpYyIsdHlwZToiZmxvYXQi LGRhdGE6WzAsMSwwLDAsMSwxLDEsMF19KSxuPXtwcmltaXRpdmU6InRyaWFuZ2xlIHN0cmlw IixpbnN0YW5jZXM6dC5wcm9wKCJjb3VudCIpLGNvdW50OjQsb2Zmc2V0OjAsdW5pZm9ybXM6 e21pdGVyTW9kZTpmdW5jdGlvbih0LGUpe3JldHVybiJyb3VuZCI9PT1lLmpvaW4/MjoxfSxt aXRlckxpbWl0OnQucHJvcCgibWl0ZXJMaW1pdCIpLHNjYWxlOnQucHJvcCgic2NhbGUiKSxz Y2FsZUZyYWN0OnQucHJvcCgic2NhbGVGcmFjdCIpLHRyYW5zbGF0ZUZyYWN0OnQucHJvcCgi dHJhbnNsYXRlRnJhY3QiKSx0cmFuc2xhdGU6dC5wcm9wKCJ0cmFuc2xhdGUiKSx0aGlja25l c3M6dC5wcm9wKCJ0aGlja25lc3MiKSxkYXNoVGV4dHVyZTp0LnByb3AoImRhc2hUZXh0dXJl Iiksb3BhY2l0eTp0LnByb3AoIm9wYWNpdHkiKSxwaXhlbFJhdGlvOnQuY29udGV4dCgicGl4 ZWxSYXRpbyIpLGlkOnQucHJvcCgiaWQiKSxkYXNoTGVuZ3RoOnQucHJvcCgiZGFzaExlbmd0 aCIpLHZpZXdwb3J0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuW2Uudmlld3BvcnQueCxlLnZpZXdw b3J0LnksdC52aWV3cG9ydFdpZHRoLHQudmlld3BvcnRIZWlnaHRdfSxkZXB0aDp0LnByb3Ao ImRlcHRoIil9LGJsZW5kOntlbmFibGU6ITAsY29sb3I6WzAsMCwwLDBdLGVxdWF0aW9uOnty Z2I6ImFkZCIsYWxwaGE6ImFkZCJ9LGZ1bmM6e3NyY1JHQjoic3JjIGFscGhhIixkc3RSR0I6 Im9uZSBtaW51cyBzcmMgYWxwaGEiLHNyY0FscGhhOiJvbmUgbWludXMgZHN0IGFscGhhIixk c3RBbHBoYToib25lIn19LGRlcHRoOntlbmFibGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4hZS5v dmVybGF5fX0sc3RlbmNpbDp7ZW5hYmxlOiExfSxzY2lzc29yOntlbmFibGU6ITAsYm94OnQu cHJvcCgidmlld3BvcnQiKX0sdmlld3BvcnQ6dC5wcm9wKCJ2aWV3cG9ydCIpfSxpPXQoYSh7 dmVydDpvKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxu YXR0cmlidXRlIHZlYzIgYUNvb3JkLCBiQ29vcmQsIGFDb29yZEZyYWN0LCBiQ29vcmRGcmFj dDtcbmF0dHJpYnV0ZSB2ZWM0IGNvbG9yO1xuYXR0cmlidXRlIGZsb2F0IGxpbmVFbmQsIGxp bmVUb3A7XG5cbnVuaWZvcm0gdmVjMiBzY2FsZSwgc2NhbGVGcmFjdCwgdHJhbnNsYXRlLCB0 cmFuc2xhdGVGcmFjdDtcbnVuaWZvcm0gZmxvYXQgdGhpY2tuZXNzLCBwaXhlbFJhdGlvLCBp ZCwgZGVwdGg7XG51bmlmb3JtIHZlYzQgdmlld3BvcnQ7XG5cbnZhcnlpbmcgdmVjNCBmcmFn Q29sb3I7XG52YXJ5aW5nIHZlYzIgdGFuZ2VudDtcblxudmVjMiBwcm9qZWN0KHZlYzIgcG9z aXRpb24sIHZlYzIgcG9zaXRpb25GcmFjdCwgdmVjMiBzY2FsZSwgdmVjMiBzY2FsZUZyYWN0 LCB2ZWMyIHRyYW5zbGF0ZSwgdmVjMiB0cmFuc2xhdGVGcmFjdCkge1xuXHQvLyB0aGUgb3Jk ZXIgaXMgaW1wb3J0YW50XG5cdHJldHVybiBwb3NpdGlvbiAqIHNjYWxlICsgdHJhbnNsYXRl XG4gICAgICAgKyBwb3NpdGlvbkZyYWN0ICogc2NhbGUgKyB0cmFuc2xhdGVGcmFjdFxuICAg ICAgICsgcG9zaXRpb24gKiBzY2FsZUZyYWN0XG4gICAgICAgKyBwb3NpdGlvbkZyYWN0ICog c2NhbGVGcmFjdDtcbn1cblxudm9pZCBtYWluKCkge1xuXHRmbG9hdCBsaW5lU3RhcnQgPSAx LiAtIGxpbmVFbmQ7XG5cdGZsb2F0IGxpbmVPZmZzZXQgPSBsaW5lVG9wICogMi4gLSAxLjtc blxuXHR2ZWMyIGRpZmYgPSAoYkNvb3JkICsgYkNvb3JkRnJhY3QgLSBhQ29vcmQgLSBhQ29v cmRGcmFjdCk7XG5cdHRhbmdlbnQgPSBub3JtYWxpemUoZGlmZiAqIHNjYWxlICogdmlld3Bv cnQuencpO1xuXHR2ZWMyIG5vcm1hbCA9IHZlYzIoLXRhbmdlbnQueSwgdGFuZ2VudC54KTtc blxuXHR2ZWMyIHBvc2l0aW9uID0gcHJvamVjdChhQ29vcmQsIGFDb29yZEZyYWN0LCBzY2Fs ZSwgc2NhbGVGcmFjdCwgdHJhbnNsYXRlLCB0cmFuc2xhdGVGcmFjdCkgKiBsaW5lU3RhcnRc blx0XHQrIHByb2plY3QoYkNvb3JkLCBiQ29vcmRGcmFjdCwgc2NhbGUsIHNjYWxlRnJhY3Qs IHRyYW5zbGF0ZSwgdHJhbnNsYXRlRnJhY3QpICogbGluZUVuZFxuXG5cdFx0KyB0aGlja25l c3MgKiBub3JtYWwgKiAuNSAqIGxpbmVPZmZzZXQgLyB2aWV3cG9ydC56dztcblxuXHRnbF9Q b3NpdGlvbiA9IHZlYzQocG9zaXRpb24gKiAyLjAgLSAxLjAsIGRlcHRoLCAxKTtcblxuXHRm cmFnQ29sb3IgPSBjb2xvciAvIDI1NS47XG59XG4iXSksZnJhZzpvKFsicHJlY2lzaW9uIGhp Z2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudW5pZm9ybSBmbG9hdCBkYXNoTGVu Z3RoLCBwaXhlbFJhdGlvLCB0aGlja25lc3MsIG9wYWNpdHksIGlkO1xudW5pZm9ybSBzYW1w bGVyMkQgZGFzaFRleHR1cmU7XG5cbnZhcnlpbmcgdmVjNCBmcmFnQ29sb3I7XG52YXJ5aW5n IHZlYzIgdGFuZ2VudDtcblxudm9pZCBtYWluKCkge1xuXHRmbG9hdCBhbHBoYSA9IDEuO1xu XG5cdGZsb2F0IHQgPSBmcmFjdChkb3QodGFuZ2VudCwgZ2xfRnJhZ0Nvb3JkLnh5KSAvIGRh c2hMZW5ndGgpICogLjUgKyAuMjU7XG5cdGZsb2F0IGRhc2ggPSB0ZXh0dXJlMkQoZGFzaFRl eHR1cmUsIHZlYzIodCwgLjUpKS5yO1xuXG5cdGdsX0ZyYWdDb2xvciA9IGZyYWdDb2xvcjtc blx0Z2xfRnJhZ0NvbG9yLmEgKj0gYWxwaGEgKiBvcGFjaXR5ICogZGFzaDtcbn1cbiJdKSxh dHRyaWJ1dGVzOntsaW5lRW5kOntidWZmZXI6cixkaXZpc29yOjAsc3RyaWRlOjgsb2Zmc2V0 OjB9LGxpbmVUb3A6e2J1ZmZlcjpyLGRpdmlzb3I6MCxzdHJpZGU6OCxvZmZzZXQ6NH0sYUNv b3JkOntidWZmZXI6dC5wcm9wKCJwb3NpdGlvbkJ1ZmZlciIpLHN0cmlkZTo4LG9mZnNldDo4 LGRpdmlzb3I6MX0sYkNvb3JkOntidWZmZXI6dC5wcm9wKCJwb3NpdGlvbkJ1ZmZlciIpLHN0 cmlkZTo4LG9mZnNldDoxNixkaXZpc29yOjF9LGFDb29yZEZyYWN0OntidWZmZXI6dC5wcm9w KCJwb3NpdGlvbkZyYWN0QnVmZmVyIiksc3RyaWRlOjgsb2Zmc2V0OjgsZGl2aXNvcjoxfSxi Q29vcmRGcmFjdDp7YnVmZmVyOnQucHJvcCgicG9zaXRpb25GcmFjdEJ1ZmZlciIpLHN0cmlk ZTo4LG9mZnNldDoxNixkaXZpc29yOjF9LGNvbG9yOntidWZmZXI6dC5wcm9wKCJjb2xvckJ1 ZmZlciIpLHN0cmlkZTo0LG9mZnNldDowLGRpdmlzb3I6MX19fSxuKSk7dHJ5e2U9dChhKHtj dWxsOntlbmFibGU6ITAsZmFjZToiYmFjayJ9LHZlcnQ6byhbInByZWNpc2lvbiBoaWdocCBm bG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMyIGFDb29yZCwgYkNv b3JkLCBuZXh0Q29vcmQsIHByZXZDb29yZDtcbmF0dHJpYnV0ZSB2ZWM0IGFDb2xvciwgYkNv bG9yO1xuYXR0cmlidXRlIGZsb2F0IGxpbmVFbmQsIGxpbmVUb3A7XG5cbnVuaWZvcm0gdmVj MiBzY2FsZSwgdHJhbnNsYXRlO1xudW5pZm9ybSBmbG9hdCB0aGlja25lc3MsIHBpeGVsUmF0 aW8sIGlkLCBkZXB0aDtcbnVuaWZvcm0gdmVjNCB2aWV3cG9ydDtcbnVuaWZvcm0gZmxvYXQg bWl0ZXJMaW1pdCwgbWl0ZXJNb2RlO1xuXG52YXJ5aW5nIHZlYzQgZnJhZ0NvbG9yO1xudmFy eWluZyB2ZWM0IHN0YXJ0Q3V0b2ZmLCBlbmRDdXRvZmY7XG52YXJ5aW5nIHZlYzIgdGFuZ2Vu dDtcbnZhcnlpbmcgdmVjMiBzdGFydENvb3JkLCBlbmRDb29yZDtcbnZhcnlpbmcgZmxvYXQg ZW5hYmxlU3RhcnRNaXRlciwgZW5hYmxlRW5kTWl0ZXI7XG5cbmNvbnN0IGZsb2F0IFJFVkVS U0VfVEhSRVNIT0xEID0gLS44NzU7XG5jb25zdCBmbG9hdCBNSU5fRElGRiA9IDFlLTY7XG5c bi8vIFRPRE86IHBvc3NpYmxlIG9wdGltaXphdGlvbnM6IGF2b2lkIG92ZXJjYWxjdWxhdGlu ZyBhbGwgZm9yIHZlcnRpY2VzIGFuZCBjYWxjIGp1c3Qgb25lIGluc3RlYWRcbi8vIFRPRE86 IHByZWNhbGN1bGF0ZSBkb3QgcHJvZHVjdHMsIG5vcm1hbGl6ZSB0aGluZ3MgYmVmb3JlaGVh ZCBldGMuXG4vLyBUT0RPOiByZWZhY3RvciB0byByZWN0YW5ndWxhciBhbGdvcml0aG1cblxu ZmxvYXQgZGlzdFRvTGluZSh2ZWMyIHAsIHZlYzIgYSwgdmVjMiBiKSB7XG5cdHZlYzIgZGlm ZiA9IGIgLSBhO1xuXHR2ZWMyIHBlcnAgPSBub3JtYWxpemUodmVjMigtZGlmZi55LCBkaWZm LngpKTtcblx0cmV0dXJuIGRvdChwIC0gYSwgcGVycCk7XG59XG5cbmJvb2wgaXNOYU4oIGZs b2F0IHZhbCApe1xuICByZXR1cm4gKCB2YWwgPCAwLjAgfHwgMC4wIDwgdmFsIHx8IHZhbCA9 PSAwLjAgKSA/IGZhbHNlIDogdHJ1ZTtcbn1cblxudm9pZCBtYWluKCkge1xuXHR2ZWMyIGFD b29yZCA9IGFDb29yZCwgYkNvb3JkID0gYkNvb3JkLCBwcmV2Q29vcmQgPSBwcmV2Q29vcmQs IG5leHRDb29yZCA9IG5leHRDb29yZDtcblxuICB2ZWMyIGFkanVzdGVkU2NhbGU7XG4gIGFk anVzdGVkU2NhbGUueCA9IChhYnMoc2NhbGUueCkgPCBNSU5fRElGRikgPyBNSU5fRElGRiA6 IHNjYWxlLng7XG4gIGFkanVzdGVkU2NhbGUueSA9IChhYnMoc2NhbGUueSkgPCBNSU5fRElG RikgPyBNSU5fRElGRiA6IHNjYWxlLnk7XG5cbiAgdmVjMiBzY2FsZVJhdGlvID0gYWRqdXN0 ZWRTY2FsZSAqIHZpZXdwb3J0Lnp3O1xuXHR2ZWMyIG5vcm1hbFdpZHRoID0gdGhpY2tuZXNz IC8gc2NhbGVSYXRpbztcblxuXHRmbG9hdCBsaW5lU3RhcnQgPSAxLiAtIGxpbmVFbmQ7XG5c dGZsb2F0IGxpbmVCb3QgPSAxLiAtIGxpbmVUb3A7XG5cblx0ZnJhZ0NvbG9yID0gKGxpbmVT dGFydCAqIGFDb2xvciArIGxpbmVFbmQgKiBiQ29sb3IpIC8gMjU1LjtcblxuXHRpZiAoaXNO YU4oYUNvb3JkLngpIHx8IGlzTmFOKGFDb29yZC55KSB8fCBpc05hTihiQ29vcmQueCkgfHwg aXNOYU4oYkNvb3JkLnkpKSByZXR1cm47XG5cblx0aWYgKGFDb29yZCA9PSBwcmV2Q29vcmQp IHByZXZDb29yZCA9IGFDb29yZCArIG5vcm1hbGl6ZShiQ29vcmQgLSBhQ29vcmQpO1xuXHRp ZiAoYkNvb3JkID09IG5leHRDb29yZCkgbmV4dENvb3JkID0gYkNvb3JkIC0gbm9ybWFsaXpl KGJDb29yZCAtIGFDb29yZCk7XG5cblx0dmVjMiBwcmV2RGlmZiA9IGFDb29yZCAtIHByZXZD b29yZDtcblx0dmVjMiBjdXJyRGlmZiA9IGJDb29yZCAtIGFDb29yZDtcblx0dmVjMiBuZXh0 RGlmZiA9IG5leHRDb29yZCAtIGJDb29yZDtcblxuXHR2ZWMyIHByZXZUYW5nZW50ID0gbm9y bWFsaXplKHByZXZEaWZmICogc2NhbGVSYXRpbyk7XG5cdHZlYzIgY3VyclRhbmdlbnQgPSBu b3JtYWxpemUoY3VyckRpZmYgKiBzY2FsZVJhdGlvKTtcblx0dmVjMiBuZXh0VGFuZ2VudCA9 IG5vcm1hbGl6ZShuZXh0RGlmZiAqIHNjYWxlUmF0aW8pO1xuXG5cdHZlYzIgcHJldk5vcm1h bCA9IHZlYzIoLXByZXZUYW5nZW50LnksIHByZXZUYW5nZW50LngpO1xuXHR2ZWMyIGN1cnJO b3JtYWwgPSB2ZWMyKC1jdXJyVGFuZ2VudC55LCBjdXJyVGFuZ2VudC54KTtcblx0dmVjMiBu ZXh0Tm9ybWFsID0gdmVjMigtbmV4dFRhbmdlbnQueSwgbmV4dFRhbmdlbnQueCk7XG5cblx0 dmVjMiBzdGFydEpvaW5EaXJlY3Rpb24gPSBub3JtYWxpemUocHJldlRhbmdlbnQgLSBjdXJy VGFuZ2VudCk7XG5cdHZlYzIgZW5kSm9pbkRpcmVjdGlvbiA9IG5vcm1hbGl6ZShjdXJyVGFu Z2VudCAtIG5leHRUYW5nZW50KTtcblxuXHQvLyBjb2xsYXBzZWQvdW5pZGlyZWN0aW9uYWwg c2VnbWVudCBjYXNlc1xuXHQvLyBGSVhNRTogdGhlcmUgc2hvdWxkIGJlIG1vcmUgZWxlZ2Fu dCBzb2x1dGlvblxuXHR2ZWMyIHByZXZUYW5EaWZmID0gYWJzKHByZXZUYW5nZW50IC0gY3Vy clRhbmdlbnQpO1xuXHR2ZWMyIG5leHRUYW5EaWZmID0gYWJzKG5leHRUYW5nZW50IC0gY3Vy clRhbmdlbnQpO1xuXHRpZiAobWF4KHByZXZUYW5EaWZmLngsIHByZXZUYW5EaWZmLnkpIDwg TUlOX0RJRkYpIHtcblx0XHRzdGFydEpvaW5EaXJlY3Rpb24gPSBjdXJyTm9ybWFsO1xuXHR9 XG5cdGlmIChtYXgobmV4dFRhbkRpZmYueCwgbmV4dFRhbkRpZmYueSkgPCBNSU5fRElGRikg e1xuXHRcdGVuZEpvaW5EaXJlY3Rpb24gPSBjdXJyTm9ybWFsO1xuXHR9XG5cdGlmIChhQ29v cmQgPT0gYkNvb3JkKSB7XG5cdFx0ZW5kSm9pbkRpcmVjdGlvbiA9IHN0YXJ0Sm9pbkRpcmVj dGlvbjtcblx0XHRjdXJyTm9ybWFsID0gcHJldk5vcm1hbDtcblx0XHRjdXJyVGFuZ2VudCA9 IHByZXZUYW5nZW50O1xuXHR9XG5cblx0dGFuZ2VudCA9IGN1cnJUYW5nZW50O1xuXG5cdC8v Y2FsY3VsYXRlIGpvaW4gc2hpZnRzIHJlbGF0aXZlIHRvIG5vcm1hbHNcblx0ZmxvYXQgc3Rh cnRKb2luU2hpZnQgPSBkb3QoY3Vyck5vcm1hbCwgc3RhcnRKb2luRGlyZWN0aW9uKTtcblx0 ZmxvYXQgZW5kSm9pblNoaWZ0ID0gZG90KGN1cnJOb3JtYWwsIGVuZEpvaW5EaXJlY3Rpb24p O1xuXG5cdGZsb2F0IHN0YXJ0TWl0ZXJSYXRpbyA9IGFicygxLiAvIHN0YXJ0Sm9pblNoaWZ0 KTtcblx0ZmxvYXQgZW5kTWl0ZXJSYXRpbyA9IGFicygxLiAvIGVuZEpvaW5TaGlmdCk7XG5c blx0dmVjMiBzdGFydEpvaW4gPSBzdGFydEpvaW5EaXJlY3Rpb24gKiBzdGFydE1pdGVyUmF0 aW87XG5cdHZlYzIgZW5kSm9pbiA9IGVuZEpvaW5EaXJlY3Rpb24gKiBlbmRNaXRlclJhdGlv O1xuXG5cdHZlYzIgc3RhcnRUb3BKb2luLCBzdGFydEJvdEpvaW4sIGVuZFRvcEpvaW4sIGVu ZEJvdEpvaW47XG5cdHN0YXJ0VG9wSm9pbiA9IHNpZ24oc3RhcnRKb2luU2hpZnQpICogc3Rh cnRKb2luICogLjU7XG5cdHN0YXJ0Qm90Sm9pbiA9IC1zdGFydFRvcEpvaW47XG5cblx0ZW5k VG9wSm9pbiA9IHNpZ24oZW5kSm9pblNoaWZ0KSAqIGVuZEpvaW4gKiAuNTtcblx0ZW5kQm90 Sm9pbiA9IC1lbmRUb3BKb2luO1xuXG5cdHZlYzIgYVRvcENvb3JkID0gYUNvb3JkICsgbm9y bWFsV2lkdGggKiBzdGFydFRvcEpvaW47XG5cdHZlYzIgYlRvcENvb3JkID0gYkNvb3JkICsg bm9ybWFsV2lkdGggKiBlbmRUb3BKb2luO1xuXHR2ZWMyIGFCb3RDb29yZCA9IGFDb29yZCAr IG5vcm1hbFdpZHRoICogc3RhcnRCb3RKb2luO1xuXHR2ZWMyIGJCb3RDb29yZCA9IGJDb29y ZCArIG5vcm1hbFdpZHRoICogZW5kQm90Sm9pbjtcblxuXHQvL21pdGVyIGFudGktY2xpcHBp bmdcblx0ZmxvYXQgYmFDbGlwcGluZyA9IGRpc3RUb0xpbmUoYkNvb3JkLCBhQ29vcmQsIGFC b3RDb29yZCkgLyBkb3Qobm9ybWFsaXplKG5vcm1hbFdpZHRoICogZW5kQm90Sm9pbiksIG5v cm1hbGl6ZShub3JtYWxXaWR0aC55eCAqIHZlYzIoLXN0YXJ0Qm90Sm9pbi55LCBzdGFydEJv dEpvaW4ueCkpKTtcblx0ZmxvYXQgYWJDbGlwcGluZyA9IGRpc3RUb0xpbmUoYUNvb3JkLCBi Q29vcmQsIGJUb3BDb29yZCkgLyBkb3Qobm9ybWFsaXplKG5vcm1hbFdpZHRoICogc3RhcnRC b3RKb2luKSwgbm9ybWFsaXplKG5vcm1hbFdpZHRoLnl4ICogdmVjMigtZW5kQm90Sm9pbi55 LCBlbmRCb3RKb2luLngpKSk7XG5cblx0Ly9wcmV2ZW50IGNsb3NlIHRvIHJldmVyc2UgZGly ZWN0aW9uIHN3aXRjaFxuXHRib29sIHByZXZSZXZlcnNlID0gZG90KGN1cnJUYW5nZW50LCBw cmV2VGFuZ2VudCkgPD0gUkVWRVJTRV9USFJFU0hPTEQgJiYgYWJzKGRvdChjdXJyVGFuZ2Vu dCwgcHJldk5vcm1hbCkpICogbWluKGxlbmd0aChwcmV2RGlmZiksIGxlbmd0aChjdXJyRGlm ZikpIDwgIGxlbmd0aChub3JtYWxXaWR0aCAqIGN1cnJOb3JtYWwpO1xuXHRib29sIG5leHRS ZXZlcnNlID0gZG90KGN1cnJUYW5nZW50LCBuZXh0VGFuZ2VudCkgPD0gUkVWRVJTRV9USFJF U0hPTEQgJiYgYWJzKGRvdChjdXJyVGFuZ2VudCwgbmV4dE5vcm1hbCkpICogbWluKGxlbmd0 aChuZXh0RGlmZiksIGxlbmd0aChjdXJyRGlmZikpIDwgIGxlbmd0aChub3JtYWxXaWR0aCAq IGN1cnJOb3JtYWwpO1xuXG5cdGlmIChwcmV2UmV2ZXJzZSkge1xuXHRcdC8vbWFrZSBqb2lu IHJlY3Rhbmd1bGFyXG5cdFx0dmVjMiBtaXRlclNoaWZ0ID0gbm9ybWFsV2lkdGggKiBzdGFy dEpvaW5EaXJlY3Rpb24gKiBtaXRlckxpbWl0ICogLjU7XG5cdFx0ZmxvYXQgbm9ybWFsQWRq dXN0ID0gMS4gLSBtaW4obWl0ZXJMaW1pdCAvIHN0YXJ0TWl0ZXJSYXRpbywgMS4pO1xuXHRc dGFCb3RDb29yZCA9IGFDb29yZCArIG1pdGVyU2hpZnQgLSBub3JtYWxBZGp1c3QgKiBub3Jt YWxXaWR0aCAqIGN1cnJOb3JtYWwgKiAuNTtcblx0XHRhVG9wQ29vcmQgPSBhQ29vcmQgKyBt aXRlclNoaWZ0ICsgbm9ybWFsQWRqdXN0ICogbm9ybWFsV2lkdGggKiBjdXJyTm9ybWFsICog LjU7XG5cdH1cblx0ZWxzZSBpZiAoIW5leHRSZXZlcnNlICYmIGJhQ2xpcHBpbmcgPiAwLiAm JiBiYUNsaXBwaW5nIDwgbGVuZ3RoKG5vcm1hbFdpZHRoICogZW5kQm90Sm9pbikpIHtcblx0 XHQvL2hhbmRsZSBtaXRlciBjbGlwcGluZ1xuXHRcdGJUb3BDb29yZCAtPSBub3JtYWxXaWR0 aCAqIGVuZFRvcEpvaW47XG5cdFx0YlRvcENvb3JkICs9IG5vcm1hbGl6ZShlbmRUb3BKb2lu ICogbm9ybWFsV2lkdGgpICogYmFDbGlwcGluZztcblx0fVxuXG5cdGlmIChuZXh0UmV2ZXJz ZSkge1xuXHRcdC8vbWFrZSBqb2luIHJlY3Rhbmd1bGFyXG5cdFx0dmVjMiBtaXRlclNoaWZ0 ID0gbm9ybWFsV2lkdGggKiBlbmRKb2luRGlyZWN0aW9uICogbWl0ZXJMaW1pdCAqIC41O1xu XHRcdGZsb2F0IG5vcm1hbEFkanVzdCA9IDEuIC0gbWluKG1pdGVyTGltaXQgLyBlbmRNaXRl clJhdGlvLCAxLik7XG5cdFx0YkJvdENvb3JkID0gYkNvb3JkICsgbWl0ZXJTaGlmdCAtIG5v cm1hbEFkanVzdCAqIG5vcm1hbFdpZHRoICogY3Vyck5vcm1hbCAqIC41O1xuXHRcdGJUb3BD b29yZCA9IGJDb29yZCArIG1pdGVyU2hpZnQgKyBub3JtYWxBZGp1c3QgKiBub3JtYWxXaWR0 aCAqIGN1cnJOb3JtYWwgKiAuNTtcblx0fVxuXHRlbHNlIGlmICghcHJldlJldmVyc2UgJiYg YWJDbGlwcGluZyA+IDAuICYmIGFiQ2xpcHBpbmcgPCBsZW5ndGgobm9ybWFsV2lkdGggKiBz dGFydEJvdEpvaW4pKSB7XG5cdFx0Ly9oYW5kbGUgbWl0ZXIgY2xpcHBpbmdcblx0XHRhQm90 Q29vcmQgLT0gbm9ybWFsV2lkdGggKiBzdGFydEJvdEpvaW47XG5cdFx0YUJvdENvb3JkICs9 IG5vcm1hbGl6ZShzdGFydEJvdEpvaW4gKiBub3JtYWxXaWR0aCkgKiBhYkNsaXBwaW5nO1xu XHR9XG5cblx0dmVjMiBhVG9wUG9zaXRpb24gPSAoYVRvcENvb3JkKSAqIGFkanVzdGVkU2Nh bGUgKyB0cmFuc2xhdGU7XG5cdHZlYzIgYUJvdFBvc2l0aW9uID0gKGFCb3RDb29yZCkgKiBh ZGp1c3RlZFNjYWxlICsgdHJhbnNsYXRlO1xuXG5cdHZlYzIgYlRvcFBvc2l0aW9uID0gKGJU b3BDb29yZCkgKiBhZGp1c3RlZFNjYWxlICsgdHJhbnNsYXRlO1xuXHR2ZWMyIGJCb3RQb3Np dGlvbiA9IChiQm90Q29vcmQpICogYWRqdXN0ZWRTY2FsZSArIHRyYW5zbGF0ZTtcblxuXHQv L3Bvc2l0aW9uIGlzIG5vcm1hbGl6ZWQgMC4uMSBjb29yZCBvbiB0aGUgc2NyZWVuXG5cdHZl YzIgcG9zaXRpb24gPSAoYVRvcFBvc2l0aW9uICogbGluZVRvcCArIGFCb3RQb3NpdGlvbiAq IGxpbmVCb3QpICogbGluZVN0YXJ0ICsgKGJUb3BQb3NpdGlvbiAqIGxpbmVUb3AgKyBiQm90 UG9zaXRpb24gKiBsaW5lQm90KSAqIGxpbmVFbmQ7XG5cblx0c3RhcnRDb29yZCA9IGFDb29y ZCAqIHNjYWxlUmF0aW8gKyB0cmFuc2xhdGUgKiB2aWV3cG9ydC56dyArIHZpZXdwb3J0Lnh5 O1xuXHRlbmRDb29yZCA9IGJDb29yZCAqIHNjYWxlUmF0aW8gKyB0cmFuc2xhdGUgKiB2aWV3 cG9ydC56dyArIHZpZXdwb3J0Lnh5O1xuXG5cdGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlv biAgKiAyLjAgLSAxLjAsIGRlcHRoLCAxKTtcblxuXHRlbmFibGVTdGFydE1pdGVyID0gc3Rl cChkb3QoY3VyclRhbmdlbnQsIHByZXZUYW5nZW50KSwgLjUpO1xuXHRlbmFibGVFbmRNaXRl ciA9IHN0ZXAoZG90KGN1cnJUYW5nZW50LCBuZXh0VGFuZ2VudCksIC41KTtcblxuXHQvL2Jl dmVsIG1pdGVyIGN1dG9mZnNcblx0aWYgKG1pdGVyTW9kZSA9PSAxLikge1xuXHRcdGlmIChl bmFibGVTdGFydE1pdGVyID09IDEuKSB7XG5cdFx0XHR2ZWMyIHN0YXJ0TWl0ZXJXaWR0aCA9 IHZlYzIoc3RhcnRKb2luRGlyZWN0aW9uKSAqIHRoaWNrbmVzcyAqIG1pdGVyTGltaXQgKiAu NTtcblx0XHRcdHN0YXJ0Q3V0b2ZmID0gdmVjNChhQ29vcmQsIGFDb29yZCk7XG5cdFx0XHRz dGFydEN1dG9mZi56dyArPSB2ZWMyKC1zdGFydEpvaW5EaXJlY3Rpb24ueSwgc3RhcnRKb2lu RGlyZWN0aW9uLngpIC8gc2NhbGVSYXRpbztcblx0XHRcdHN0YXJ0Q3V0b2ZmID0gc3RhcnRD dXRvZmYgKiBzY2FsZVJhdGlvLnh5eHkgKyB0cmFuc2xhdGUueHl4eSAqIHZpZXdwb3J0Lnp3 enc7XG5cdFx0XHRzdGFydEN1dG9mZiArPSB2aWV3cG9ydC54eXh5O1xuXHRcdFx0c3RhcnRD dXRvZmYgKz0gc3RhcnRNaXRlcldpZHRoLnh5eHk7XG5cdFx0fVxuXG5cdFx0aWYgKGVuYWJs ZUVuZE1pdGVyID09IDEuKSB7XG5cdFx0XHR2ZWMyIGVuZE1pdGVyV2lkdGggPSB2ZWMyKGVu ZEpvaW5EaXJlY3Rpb24pICogdGhpY2tuZXNzICogbWl0ZXJMaW1pdCAqIC41O1xuXHRcdFx0 ZW5kQ3V0b2ZmID0gdmVjNChiQ29vcmQsIGJDb29yZCk7XG5cdFx0XHRlbmRDdXRvZmYuencg Kz0gdmVjMigtZW5kSm9pbkRpcmVjdGlvbi55LCBlbmRKb2luRGlyZWN0aW9uLngpICAvIHNj YWxlUmF0aW87XG5cdFx0XHRlbmRDdXRvZmYgPSBlbmRDdXRvZmYgKiBzY2FsZVJhdGlvLnh5 eHkgKyB0cmFuc2xhdGUueHl4eSAqIHZpZXdwb3J0Lnp3enc7XG5cdFx0XHRlbmRDdXRvZmYg Kz0gdmlld3BvcnQueHl4eTtcblx0XHRcdGVuZEN1dG9mZiArPSBlbmRNaXRlcldpZHRoLnh5 eHk7XG5cdFx0fVxuXHR9XG5cblx0Ly9yb3VuZCBtaXRlciBjdXRvZmZzXG5cdGVsc2UgaWYg KG1pdGVyTW9kZSA9PSAyLikge1xuXHRcdGlmIChlbmFibGVTdGFydE1pdGVyID09IDEuKSB7 XG5cdFx0XHR2ZWMyIHN0YXJ0TWl0ZXJXaWR0aCA9IHZlYzIoc3RhcnRKb2luRGlyZWN0aW9u KSAqIHRoaWNrbmVzcyAqIGFicyhkb3Qoc3RhcnRKb2luRGlyZWN0aW9uLCBjdXJyTm9ybWFs KSkgKiAuNTtcblx0XHRcdHN0YXJ0Q3V0b2ZmID0gdmVjNChhQ29vcmQsIGFDb29yZCk7XG5c dFx0XHRzdGFydEN1dG9mZi56dyArPSB2ZWMyKC1zdGFydEpvaW5EaXJlY3Rpb24ueSwgc3Rh cnRKb2luRGlyZWN0aW9uLngpIC8gc2NhbGVSYXRpbztcblx0XHRcdHN0YXJ0Q3V0b2ZmID0g c3RhcnRDdXRvZmYgKiBzY2FsZVJhdGlvLnh5eHkgKyB0cmFuc2xhdGUueHl4eSAqIHZpZXdw b3J0Lnp3enc7XG5cdFx0XHRzdGFydEN1dG9mZiArPSB2aWV3cG9ydC54eXh5O1xuXHRcdFx0 c3RhcnRDdXRvZmYgKz0gc3RhcnRNaXRlcldpZHRoLnh5eHk7XG5cdFx0fVxuXG5cdFx0aWYg KGVuYWJsZUVuZE1pdGVyID09IDEuKSB7XG5cdFx0XHR2ZWMyIGVuZE1pdGVyV2lkdGggPSB2 ZWMyKGVuZEpvaW5EaXJlY3Rpb24pICogdGhpY2tuZXNzICogYWJzKGRvdChlbmRKb2luRGly ZWN0aW9uLCBjdXJyTm9ybWFsKSkgKiAuNTtcblx0XHRcdGVuZEN1dG9mZiA9IHZlYzQoYkNv b3JkLCBiQ29vcmQpO1xuXHRcdFx0ZW5kQ3V0b2ZmLnp3ICs9IHZlYzIoLWVuZEpvaW5EaXJl Y3Rpb24ueSwgZW5kSm9pbkRpcmVjdGlvbi54KSAgLyBzY2FsZVJhdGlvO1xuXHRcdFx0ZW5k Q3V0b2ZmID0gZW5kQ3V0b2ZmICogc2NhbGVSYXRpby54eXh5ICsgdHJhbnNsYXRlLnh5eHkg KiB2aWV3cG9ydC56d3p3O1xuXHRcdFx0ZW5kQ3V0b2ZmICs9IHZpZXdwb3J0Lnh5eHk7XG5c dFx0XHRlbmRDdXRvZmYgKz0gZW5kTWl0ZXJXaWR0aC54eXh5O1xuXHRcdH1cblx0fVxufVxu Il0pLGZyYWc6byhbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAx XG5cbnVuaWZvcm0gZmxvYXQgZGFzaExlbmd0aCwgcGl4ZWxSYXRpbywgdGhpY2tuZXNzLCBv cGFjaXR5LCBpZCwgbWl0ZXJNb2RlO1xudW5pZm9ybSBzYW1wbGVyMkQgZGFzaFRleHR1cmU7 XG5cbnZhcnlpbmcgdmVjNCBmcmFnQ29sb3I7XG52YXJ5aW5nIHZlYzIgdGFuZ2VudDtcbnZh cnlpbmcgdmVjNCBzdGFydEN1dG9mZiwgZW5kQ3V0b2ZmO1xudmFyeWluZyB2ZWMyIHN0YXJ0 Q29vcmQsIGVuZENvb3JkO1xudmFyeWluZyBmbG9hdCBlbmFibGVTdGFydE1pdGVyLCBlbmFi bGVFbmRNaXRlcjtcblxuZmxvYXQgZGlzdFRvTGluZSh2ZWMyIHAsIHZlYzIgYSwgdmVjMiBi KSB7XG5cdHZlYzIgZGlmZiA9IGIgLSBhO1xuXHR2ZWMyIHBlcnAgPSBub3JtYWxpemUodmVj MigtZGlmZi55LCBkaWZmLngpKTtcblx0cmV0dXJuIGRvdChwIC0gYSwgcGVycCk7XG59XG5c bnZvaWQgbWFpbigpIHtcblx0ZmxvYXQgYWxwaGEgPSAxLiwgZGlzdFRvU3RhcnQsIGRpc3RU b0VuZDtcblx0ZmxvYXQgY3V0b2ZmID0gdGhpY2tuZXNzICogLjU7XG5cblx0Ly9iZXZlbCBt aXRlclxuXHRpZiAobWl0ZXJNb2RlID09IDEuKSB7XG5cdFx0aWYgKGVuYWJsZVN0YXJ0TWl0 ZXIgPT0gMS4pIHtcblx0XHRcdGRpc3RUb1N0YXJ0ID0gZGlzdFRvTGluZShnbF9GcmFnQ29v cmQueHksIHN0YXJ0Q3V0b2ZmLnh5LCBzdGFydEN1dG9mZi56dyk7XG5cdFx0XHRpZiAoZGlz dFRvU3RhcnQgPCAtMS4pIHtcblx0XHRcdFx0ZGlzY2FyZDtcblx0XHRcdFx0cmV0dXJuO1xu XHRcdFx0fVxuXHRcdFx0YWxwaGEgKj0gbWluKG1heChkaXN0VG9TdGFydCArIDEuLCAwLiks IDEuKTtcblx0XHR9XG5cblx0XHRpZiAoZW5hYmxlRW5kTWl0ZXIgPT0gMS4pIHtcblx0XHRc dGRpc3RUb0VuZCA9IGRpc3RUb0xpbmUoZ2xfRnJhZ0Nvb3JkLnh5LCBlbmRDdXRvZmYueHks IGVuZEN1dG9mZi56dyk7XG5cdFx0XHRpZiAoZGlzdFRvRW5kIDwgLTEuKSB7XG5cdFx0XHRc dGRpc2NhcmQ7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGFscGhhICo9IG1p bihtYXgoZGlzdFRvRW5kICsgMS4sIDAuKSwgMS4pO1xuXHRcdH1cblx0fVxuXG5cdC8vIHJv dW5kIG1pdGVyXG5cdGVsc2UgaWYgKG1pdGVyTW9kZSA9PSAyLikge1xuXHRcdGlmIChlbmFi bGVTdGFydE1pdGVyID09IDEuKSB7XG5cdFx0XHRkaXN0VG9TdGFydCA9IGRpc3RUb0xpbmUo Z2xfRnJhZ0Nvb3JkLnh5LCBzdGFydEN1dG9mZi54eSwgc3RhcnRDdXRvZmYuencpO1xuXHRc dFx0aWYgKGRpc3RUb1N0YXJ0IDwgMC4pIHtcblx0XHRcdFx0ZmxvYXQgcmFkaXVzID0gbGVu Z3RoKGdsX0ZyYWdDb29yZC54eSAtIHN0YXJ0Q29vcmQpO1xuXG5cdFx0XHRcdGlmKHJhZGl1 cyA+IGN1dG9mZiArIC41KSB7XG5cdFx0XHRcdFx0ZGlzY2FyZDtcblx0XHRcdFx0XHRyZXR1 cm47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRhbHBoYSAtPSBzbW9vdGhzdGVwKGN1dG9mZiAt IC41LCBjdXRvZmYgKyAuNSwgcmFkaXVzKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAo ZW5hYmxlRW5kTWl0ZXIgPT0gMS4pIHtcblx0XHRcdGRpc3RUb0VuZCA9IGRpc3RUb0xpbmUo Z2xfRnJhZ0Nvb3JkLnh5LCBlbmRDdXRvZmYueHksIGVuZEN1dG9mZi56dyk7XG5cdFx0XHRp ZiAoZGlzdFRvRW5kIDwgMC4pIHtcblx0XHRcdFx0ZmxvYXQgcmFkaXVzID0gbGVuZ3RoKGds X0ZyYWdDb29yZC54eSAtIGVuZENvb3JkKTtcblxuXHRcdFx0XHRpZihyYWRpdXMgPiBjdXRv ZmYgKyAuNSkge1xuXHRcdFx0XHRcdGRpc2NhcmQ7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRc dFx0XHR9XG5cblx0XHRcdFx0YWxwaGEgLT0gc21vb3Roc3RlcChjdXRvZmYgLSAuNSwgY3V0 b2ZmICsgLjUsIHJhZGl1cyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0ZmxvYXQgdCA9 IGZyYWN0KGRvdCh0YW5nZW50LCBnbF9GcmFnQ29vcmQueHkpIC8gZGFzaExlbmd0aCkgKiAu NSArIC4yNTtcblx0ZmxvYXQgZGFzaCA9IHRleHR1cmUyRChkYXNoVGV4dHVyZSwgdmVjMih0 LCAuNSkpLnI7XG5cblx0Z2xfRnJhZ0NvbG9yID0gZnJhZ0NvbG9yO1xuXHRnbF9GcmFnQ29s b3IuYSAqPSBhbHBoYSAqIG9wYWNpdHkgKiBkYXNoO1xufVxuIl0pLGF0dHJpYnV0ZXM6e2xp bmVFbmQ6e2J1ZmZlcjpyLGRpdmlzb3I6MCxzdHJpZGU6OCxvZmZzZXQ6MH0sbGluZVRvcDp7 YnVmZmVyOnIsZGl2aXNvcjowLHN0cmlkZTo4LG9mZnNldDo0fSxhQ29sb3I6e2J1ZmZlcjp0 LnByb3AoImNvbG9yQnVmZmVyIiksc3RyaWRlOjQsb2Zmc2V0OjAsZGl2aXNvcjoxfSxiQ29s b3I6e2J1ZmZlcjp0LnByb3AoImNvbG9yQnVmZmVyIiksc3RyaWRlOjQsb2Zmc2V0OjQsZGl2 aXNvcjoxfSxwcmV2Q29vcmQ6e2J1ZmZlcjp0LnByb3AoInBvc2l0aW9uQnVmZmVyIiksc3Ry aWRlOjgsb2Zmc2V0OjAsZGl2aXNvcjoxfSxhQ29vcmQ6e2J1ZmZlcjp0LnByb3AoInBvc2l0 aW9uQnVmZmVyIiksc3RyaWRlOjgsb2Zmc2V0OjgsZGl2aXNvcjoxfSxiQ29vcmQ6e2J1ZmZl cjp0LnByb3AoInBvc2l0aW9uQnVmZmVyIiksc3RyaWRlOjgsb2Zmc2V0OjE2LGRpdmlzb3I6 MX0sbmV4dENvb3JkOntidWZmZXI6dC5wcm9wKCJwb3NpdGlvbkJ1ZmZlciIpLHN0cmlkZTo4 LG9mZnNldDoyNCxkaXZpc29yOjF9fX0sbikpfWNhdGNoKHQpe2U9aX1yZXR1cm57ZmlsbDp0 KHtwcmltaXRpdmU6InRyaWFuZ2xlIixlbGVtZW50czpmdW5jdGlvbih0LGUpe3JldHVybiBl LnRyaWFuZ2xlc30sb2Zmc2V0OjAsdmVydDpvKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xu I2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzIgcG9zaXRpb24sIHBvc2l0aW9u RnJhY3Q7XG5cbnVuaWZvcm0gdmVjNCBjb2xvcjtcbnVuaWZvcm0gdmVjMiBzY2FsZSwgc2Nh bGVGcmFjdCwgdHJhbnNsYXRlLCB0cmFuc2xhdGVGcmFjdDtcbnVuaWZvcm0gZmxvYXQgcGl4 ZWxSYXRpbywgaWQ7XG51bmlmb3JtIHZlYzQgdmlld3BvcnQ7XG51bmlmb3JtIGZsb2F0IG9w YWNpdHk7XG5cbnZhcnlpbmcgdmVjNCBmcmFnQ29sb3I7XG5cbmNvbnN0IGZsb2F0IE1BWF9M SU5FUyA9IDI1Ni47XG5cbnZvaWQgbWFpbigpIHtcblx0ZmxvYXQgZGVwdGggPSAoTUFYX0xJ TkVTIC0gNC4gLSBpZCkgLyAoTUFYX0xJTkVTKTtcblxuXHR2ZWMyIHBvc2l0aW9uID0gcG9z aXRpb24gKiBzY2FsZSArIHRyYW5zbGF0ZVxuICAgICAgICsgcG9zaXRpb25GcmFjdCAqIHNj YWxlICsgdHJhbnNsYXRlRnJhY3RcbiAgICAgICArIHBvc2l0aW9uICogc2NhbGVGcmFjdFxu ICAgICAgICsgcG9zaXRpb25GcmFjdCAqIHNjYWxlRnJhY3Q7XG5cblx0Z2xfUG9zaXRpb24g PSB2ZWM0KHBvc2l0aW9uICogMi4wIC0gMS4wLCBkZXB0aCwgMSk7XG5cblx0ZnJhZ0NvbG9y ID0gY29sb3IgLyAyNTUuO1xuXHRmcmFnQ29sb3IuYSAqPSBvcGFjaXR5O1xufVxuIl0pLGZy YWc6byhbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnZh cnlpbmcgdmVjNCBmcmFnQ29sb3I7XG5cbnZvaWQgbWFpbigpIHtcblx0Z2xfRnJhZ0NvbG9y ID0gZnJhZ0NvbG9yO1xufVxuIl0pLHVuaWZvcm1zOntzY2FsZTp0LnByb3AoInNjYWxlIiks Y29sb3I6dC5wcm9wKCJmaWxsIiksc2NhbGVGcmFjdDp0LnByb3AoInNjYWxlRnJhY3QiKSx0 cmFuc2xhdGVGcmFjdDp0LnByb3AoInRyYW5zbGF0ZUZyYWN0IiksdHJhbnNsYXRlOnQucHJv cCgidHJhbnNsYXRlIiksb3BhY2l0eTp0LnByb3AoIm9wYWNpdHkiKSxwaXhlbFJhdGlvOnQu Y29udGV4dCgicGl4ZWxSYXRpbyIpLGlkOnQucHJvcCgiaWQiKSx2aWV3cG9ydDpmdW5jdGlv bih0LGUpe3JldHVybltlLnZpZXdwb3J0LngsZS52aWV3cG9ydC55LHQudmlld3BvcnRXaWR0 aCx0LnZpZXdwb3J0SGVpZ2h0XX19LGF0dHJpYnV0ZXM6e3Bvc2l0aW9uOntidWZmZXI6dC5w cm9wKCJwb3NpdGlvbkJ1ZmZlciIpLHN0cmlkZTo4LG9mZnNldDo4fSxwb3NpdGlvbkZyYWN0 OntidWZmZXI6dC5wcm9wKCJwb3NpdGlvbkZyYWN0QnVmZmVyIiksc3RyaWRlOjgsb2Zmc2V0 Ojh9fSxibGVuZDpuLmJsZW5kLGRlcHRoOntlbmFibGU6ITF9LHNjaXNzb3I6bi5zY2lzc29y LHN0ZW5jaWw6bi5zdGVuY2lsLHZpZXdwb3J0Om4udmlld3BvcnR9KSxyZWN0OmksbWl0ZXI6 ZX19LHYuZGVmYXVsdHM9e2Rhc2hlczpudWxsLGpvaW46Im1pdGVyIixtaXRlckxpbWl0OjEs dGhpY2tuZXNzOjEwLGNhcDoic3F1YXJlIixjb2xvcjoiYmxhY2siLG9wYWNpdHk6MSxvdmVy bGF5OiExLHZpZXdwb3J0Om51bGwscmFuZ2U6bnVsbCxjbG9zZTohMSxmaWxsOm51bGx9LHYu cHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe2Zvcih2YXIgdCxlPVtdLHI9YXJndW1lbnRz Lmxlbmd0aDtyLS07KWVbcl09YXJndW1lbnRzW3JdO2UubGVuZ3RoJiYodD10aGlzKS51cGRh dGUuYXBwbHkodCxlKSx0aGlzLmRyYXcoKX0sdi5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbigp e2Zvcih2YXIgdD10aGlzLGU9W10scj1hcmd1bWVudHMubGVuZ3RoO3ItLTspZVtyXT1hcmd1 bWVudHNbcl07cmV0dXJuKGUubGVuZ3RoP2U6dGhpcy5wYXNzZXMpLmZvckVhY2goKGZ1bmN0 aW9uKGUscil7dmFyIG47aWYoZSYmQXJyYXkuaXNBcnJheShlKSlyZXR1cm4obj10KS5kcmF3 LmFwcGx5KG4sZSk7Im51bWJlciI9PXR5cGVvZiBlJiYoZT10LnBhc3Nlc1tlXSksZSYmZS5j b3VudD4xJiZlLm9wYWNpdHkmJih0LnJlZ2wuX3JlZnJlc2goKSxlLmZpbGwmJmUudHJpYW5n bGVzJiZlLnRyaWFuZ2xlcy5sZW5ndGg+MiYmdC5zaGFkZXJzLmZpbGwoZSksZS50aGlja25l c3MmJihlLnNjYWxlWzBdKmUudmlld3BvcnQud2lkdGg+di5wcmVjaXNpb25UaHJlc2hvbGR8 fGUuc2NhbGVbMV0qZS52aWV3cG9ydC5oZWlnaHQ+di5wcmVjaXNpb25UaHJlc2hvbGR8fCJy ZWN0Ij09PWUuam9pbnx8IWUuam9pbiYmKGUudGhpY2tuZXNzPD0yfHxlLmNvdW50Pj12Lm1h eFBvaW50cyk/dC5zaGFkZXJzLnJlY3QoZSk6dC5zaGFkZXJzLm1pdGVyKGUpKSl9KSksdGhp c30sdi5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYodCl7bnVs bCE9dC5sZW5ndGg/Im51bWJlciI9PXR5cGVvZiB0WzBdJiYodD1be3Bvc2l0aW9uczp0fV0p OkFycmF5LmlzQXJyYXkodCl8fCh0PVt0XSk7dmFyIHI9dGhpcy5yZWdsLG89dGhpcy5nbDtp Zih0LmZvckVhY2goKGZ1bmN0aW9uKHQsZil7dmFyIGQ9ZS5wYXNzZXNbZl07aWYodm9pZCAw IT09dClpZihudWxsIT09dCl7aWYoIm51bWJlciI9PXR5cGVvZiB0WzBdJiYodD17cG9zaXRp b25zOnR9KSx0PXModCx7cG9zaXRpb25zOiJwb3NpdGlvbnMgcG9pbnRzIGRhdGEgY29vcmRz Iix0aGlja25lc3M6InRoaWNrbmVzcyBsaW5lV2lkdGggbGluZVdpZHRocyBsaW5lLXdpZHRo IGxpbmV3aWR0aCB3aWR0aCBzdHJva2Utd2lkdGggc3Ryb2tld2lkdGggc3Ryb2tlV2lkdGgi LGpvaW46ImxpbmVKb2luIGxpbmVqb2luIGpvaW4gdHlwZSBtb2RlIixtaXRlckxpbWl0OiJt aXRlcmxpbWl0IG1pdGVyTGltaXQiLGRhc2hlczoiZGFzaCBkYXNoZXMgZGFzaGFycmF5IGRh c2gtYXJyYXkgZGFzaEFycmF5Iixjb2xvcjoiY29sb3IgY29sb3VyIHN0cm9rZSBjb2xvcnMg Y29sb3VycyBzdHJva2UtY29sb3Igc3Ryb2tlQ29sb3IiLGZpbGw6ImZpbGwgZmlsbC1jb2xv ciBmaWxsQ29sb3IiLG9wYWNpdHk6ImFscGhhIG9wYWNpdHkiLG92ZXJsYXk6Im92ZXJsYXkg Y3JlYXNlIG92ZXJsYXAgaW50ZXJzZWN0IixjbG9zZToiY2xvc2VkIGNsb3NlIGNsb3NlZC1w YXRoIGNsb3NlUGF0aCIscmFuZ2U6InJhbmdlIGRhdGFCb3giLHZpZXdwb3J0OiJ2aWV3cG9y dCB2aWV3Qm94Iixob2xlOiJob2xlcyBob2xlIGhvbGxvdyIsc3BsaXROdWxsOiJzcGxpdE51 bGwifSksZHx8KGUucGFzc2VzW2ZdPWQ9e2lkOmYsc2NhbGU6bnVsbCxzY2FsZUZyYWN0Om51 bGwsdHJhbnNsYXRlOm51bGwsdHJhbnNsYXRlRnJhY3Q6bnVsbCxjb3VudDowLGhvbGU6W10s ZGVwdGg6MCxkYXNoTGVuZ3RoOjEsZGFzaFRleHR1cmU6ci50ZXh0dXJlKHtjaGFubmVsczox LGRhdGE6bmV3IFVpbnQ4QXJyYXkoWzI1NV0pLHdpZHRoOjEsaGVpZ2h0OjEsbWFnOiJsaW5l YXIiLG1pbjoibGluZWFyIn0pLGNvbG9yQnVmZmVyOnIuYnVmZmVyKHt1c2FnZToiZHluYW1p YyIsdHlwZToidWludDgiLGRhdGE6bmV3IFVpbnQ4QXJyYXl9KSxwb3NpdGlvbkJ1ZmZlcjpy LmJ1ZmZlcih7dXNhZ2U6ImR5bmFtaWMiLHR5cGU6ImZsb2F0IixkYXRhOm5ldyBVaW50OEFy cmF5fSkscG9zaXRpb25GcmFjdEJ1ZmZlcjpyLmJ1ZmZlcih7dXNhZ2U6ImR5bmFtaWMiLHR5 cGU6ImZsb2F0IixkYXRhOm5ldyBVaW50OEFycmF5fSl9LHQ9YSh7fSx2LmRlZmF1bHRzLHQp KSxudWxsIT10LnRoaWNrbmVzcyYmKGQudGhpY2tuZXNzPXBhcnNlRmxvYXQodC50aGlja25l c3MpKSxudWxsIT10Lm9wYWNpdHkmJihkLm9wYWNpdHk9cGFyc2VGbG9hdCh0Lm9wYWNpdHkp KSxudWxsIT10Lm1pdGVyTGltaXQmJihkLm1pdGVyTGltaXQ9cGFyc2VGbG9hdCh0Lm1pdGVy TGltaXQpKSxudWxsIT10Lm92ZXJsYXkmJihkLm92ZXJsYXk9ISF0Lm92ZXJsYXksZjx2Lm1h eExpbmVzJiYoZC5kZXB0aD0yKih2Lm1heExpbmVzLTEtZiV2Lm1heExpbmVzKS92Lm1heExp bmVzLTEpKSxudWxsIT10LmpvaW4mJihkLmpvaW49dC5qb2luKSxudWxsIT10LmhvbGUmJihk LmhvbGU9dC5ob2xlKSxudWxsIT10LmZpbGwmJihkLmZpbGw9dC5maWxsP24odC5maWxsLCJ1 aW50OCIpOm51bGwpLG51bGwhPXQudmlld3BvcnQmJihkLnZpZXdwb3J0PW0odC52aWV3cG9y dCkpLGQudmlld3BvcnR8fChkLnZpZXdwb3J0PW0oW28uZHJhd2luZ0J1ZmZlcldpZHRoLG8u ZHJhd2luZ0J1ZmZlckhlaWdodF0pKSxudWxsIT10LmNsb3NlJiYoZC5jbG9zZT10LmNsb3Nl KSxudWxsPT09dC5wb3NpdGlvbnMmJih0LnBvc2l0aW9ucz1bXSksdC5wb3NpdGlvbnMpe3Zh ciB5LHg7aWYodC5wb3NpdGlvbnMueCYmdC5wb3NpdGlvbnMueSl7dmFyIGI9dC5wb3NpdGlv bnMueCxfPXQucG9zaXRpb25zLnk7eD1kLmNvdW50PU1hdGgubWF4KGIubGVuZ3RoLF8ubGVu Z3RoKSx5PW5ldyBGbG9hdDY0QXJyYXkoMip4KTtmb3IodmFyIHc9MDt3PHg7dysrKXlbMip3 XT1iW3ddLHlbMip3KzFdPV9bd119ZWxzZSB5PWwodC5wb3NpdGlvbnMsImZsb2F0NjQiKSx4 PWQuY291bnQ9TWF0aC5mbG9vcih5Lmxlbmd0aC8yKTt2YXIgVD1kLmJvdW5kcz1pKHksMik7 aWYoZC5maWxsKXtmb3IodmFyIGs9W10sQT17fSxNPTAsUz0wLEU9MCxMPWQuY291bnQ7UzxM O1MrKyl7dmFyIEM9eVsyKlNdLFA9eVsyKlMrMV07aXNOYU4oQyl8fGlzTmFOKFApfHxudWxs PT1DfHxudWxsPT1QPyhDPXlbMipNXSxQPXlbMipNKzFdLEFbU109TSk6TT1TLGtbRSsrXT1D LGtbRSsrXT1QfWlmKHQuc3BsaXROdWxsKXtkLmNvdW50LTEgaW4gQXx8KEFbZC5jb3VudF09 ZC5jb3VudC0xKTt2YXIgST1PYmplY3Qua2V5cyhBKS5tYXAoTnVtYmVyKS5zb3J0KChmdW5j dGlvbih0LGUpe3JldHVybiB0LWV9KSksTz1bXSx6PTAsRD1udWxsIT1kLmhvbGU/ZC5ob2xl WzBdOm51bGw7aWYobnVsbCE9RCl7dmFyIFI9ZyhJLChmdW5jdGlvbih0KXtyZXR1cm4gdD49 RH0pKTsoST1JLnNsaWNlKDAsUikpLnB1c2goRCl9Zm9yKHZhciBGPWZ1bmN0aW9uKHQpe3Zh ciBlPWsuc2xpY2UoMip6LDIqSVt0XSkuY29uY2F0KEQ/ay5zbGljZSgyKkQpOltdKSxyPShk LmhvbGV8fFtdKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLUQrKElbdF0teil9KSksbj1j KGUscik7bj1uLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUreisoZSt6PElbdF0/MDpELUlb dF0pfSkpLE8ucHVzaC5hcHBseShPLG4pLHo9SVt0XSsxfSxCPTA7QjxJLmxlbmd0aDtCKysp RihCKTtmb3IodmFyIE49MCxqPU8ubGVuZ3RoO048ajtOKyspbnVsbCE9QVtPW05dXSYmKE9b Tl09QVtPW05dXSk7ZC50cmlhbmdsZXM9T31lbHNle2Zvcih2YXIgVT1jKGssZC5ob2xlfHxb XSksVj0wLEg9VS5sZW5ndGg7VjxIO1YrKyludWxsIT1BW1VbVl1dJiYoVVtWXT1BW1VbVl1d KTtkLnRyaWFuZ2xlcz1VfX12YXIgcT1uZXcgRmxvYXQ2NEFycmF5KHkpO3UocSwyLFQpO3Zh ciBHPW5ldyBGbG9hdDY0QXJyYXkoMip4KzYpO2QuY2xvc2U/eVswXT09PXlbMip4LTJdJiZ5 WzFdPT09eVsyKngtMV0/KEdbMF09cVsyKngtNF0sR1sxXT1xWzIqeC0zXSk6KEdbMF09cVsy KngtMl0sR1sxXT1xWzIqeC0xXSk6KEdbMF09cVswXSxHWzFdPXFbMV0pLEcuc2V0KHEsMiks ZC5jbG9zZT95WzBdPT09eVsyKngtMl0mJnlbMV09PT15WzIqeC0xXT8oR1syKngrMl09cVsy XSxHWzIqeCszXT1xWzNdLGQuY291bnQtPTEpOihHWzIqeCsyXT1xWzBdLEdbMip4KzNdPXFb MV0sR1syKngrNF09cVsyXSxHWzIqeCs1XT1xWzNdKTooR1syKngrMl09cVsyKngtMl0sR1sy KngrM109cVsyKngtMV0sR1syKngrNF09cVsyKngtMl0sR1syKngrNV09cVsyKngtMV0pO3Zh ciBZPWgoRyk7ZC5wb3NpdGlvbkJ1ZmZlcihZKTt2YXIgVz1wKEcsWSk7ZC5wb3NpdGlvbkZy YWN0QnVmZmVyKFcpfWlmKHQucmFuZ2U/ZC5yYW5nZT10LnJhbmdlOmQucmFuZ2V8fChkLnJh bmdlPWQuYm91bmRzKSwodC5yYW5nZXx8dC5wb3NpdGlvbnMpJiZkLmNvdW50KXt2YXIgWD1k LmJvdW5kcyxaPVhbMl0tWFswXSxKPVhbM10tWFsxXSxLPWQucmFuZ2VbMl0tZC5yYW5nZVsw XSxRPWQucmFuZ2VbM10tZC5yYW5nZVsxXTtkLnNjYWxlPVtaL0ssSi9RXSxkLnRyYW5zbGF0 ZT1bLWQucmFuZ2VbMF0vSytYWzBdL0t8fDAsLWQucmFuZ2VbMV0vUStYWzFdL1F8fDBdLGQu c2NhbGVGcmFjdD1wKGQuc2NhbGUpLGQudHJhbnNsYXRlRnJhY3Q9cChkLnRyYW5zbGF0ZSl9 aWYodC5kYXNoZXMpe3ZhciAkLHR0PTA7aWYoIXQuZGFzaGVzfHx0LmRhc2hlcy5sZW5ndGg8 Mil0dD0xLCQ9bmV3IFVpbnQ4QXJyYXkoWzI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwy NTVdKTtlbHNle3R0PTA7Zm9yKHZhciBldD0wO2V0PHQuZGFzaGVzLmxlbmd0aDsrK2V0KXR0 Kz10LmRhc2hlc1tldF07JD1uZXcgVWludDhBcnJheSh0dCp2LmRhc2hNdWx0KTtmb3IodmFy IHJ0PTAsbnQ9MjU1LGl0PTA7aXQ8MjtpdCsrKWZvcih2YXIgYXQ9MDthdDx0LmRhc2hlcy5s ZW5ndGg7KythdCl7Zm9yKHZhciBvdD0wLHN0PXQuZGFzaGVzW2F0XSp2LmRhc2hNdWx0Ki41 O290PHN0Oysrb3QpJFtydCsrXT1udDtudF49MjU1fX1kLmRhc2hMZW5ndGg9dHQsZC5kYXNo VGV4dHVyZSh7Y2hhbm5lbHM6MSxkYXRhOiQsd2lkdGg6JC5sZW5ndGgsaGVpZ2h0OjEsbWFn OiJsaW5lYXIiLG1pbjoibGluZWFyIn0sMCwwKX1pZih0LmNvbG9yKXt2YXIgbHQ9ZC5jb3Vu dCxjdD10LmNvbG9yO2N0fHwoY3Q9InRyYW5zcGFyZW50Iik7dmFyIHV0PW5ldyBVaW50OEFy cmF5KDQqbHQrNCk7aWYoQXJyYXkuaXNBcnJheShjdCkmJiJudW1iZXIiIT10eXBlb2YgY3Rb MF0pe2Zvcih2YXIgZnQ9MDtmdDxsdDtmdCsrKXt2YXIgaHQ9bihjdFtmdF0sInVpbnQ4Iik7 dXQuc2V0KGh0LDQqZnQpfXV0LnNldChuKGN0WzBdLCJ1aW50OCIpLDQqbHQpfWVsc2UgZm9y KHZhciBwdD1uKGN0LCJ1aW50OCIpLGR0PTA7ZHQ8bHQrMTtkdCsrKXV0LnNldChwdCw0KmR0 KTtkLmNvbG9yQnVmZmVyKHt1c2FnZToiZHluYW1pYyIsdHlwZToidWludDgiLGRhdGE6dXR9 KX19ZWxzZSBlLnBhc3Nlc1tmXT1udWxsfSkpLHQubGVuZ3RoPHRoaXMucGFzc2VzLmxlbmd0 aCl7Zm9yKHZhciBmPXQubGVuZ3RoO2Y8dGhpcy5wYXNzZXMubGVuZ3RoO2YrKyl7dmFyIGQ9 dGhpcy5wYXNzZXNbZl07ZCYmKGQuY29sb3JCdWZmZXIuZGVzdHJveSgpLGQucG9zaXRpb25C dWZmZXIuZGVzdHJveSgpLGQuZGFzaFRleHR1cmUuZGVzdHJveSgpKX10aGlzLnBhc3Nlcy5s ZW5ndGg9dC5sZW5ndGh9Zm9yKHZhciB5PVtdLHg9MDt4PHRoaXMucGFzc2VzLmxlbmd0aDt4 KyspbnVsbCE9PXRoaXMucGFzc2VzW3hdJiZ5LnB1c2godGhpcy5wYXNzZXNbeF0pO3JldHVy biB0aGlzLnBhc3Nlcz15LHRoaXN9fSx2LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMucGFzc2VzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuY29sb3JCdWZmZXIu ZGVzdHJveSgpLHQucG9zaXRpb25CdWZmZXIuZGVzdHJveSgpLHQuZGFzaFRleHR1cmUuZGVz dHJveSgpfSkpLHRoaXMucGFzc2VzLmxlbmd0aD0wLHRoaXN9fSx7ImFycmF5LWJvdW5kcyI6 NzEsImFycmF5LWZpbmQtaW5kZXgiOjcyLCJhcnJheS1ub3JtYWxpemUiOjczLCJjb2xvci1u b3JtYWxpemUiOjg5LGVhcmN1dDoxMjksImVzNi13ZWFrLW1hcCI6MTgzLCJmbGF0dGVuLXZl cnRleC1kYXRhIjoxOTEsZ2xzbGlmeToyMjcsIm9iamVjdC1hc3NpZ24iOjI0NywicGFyc2Ut cmVjdCI6MjQ5LCJwaWNrLWJ5LWFsaWFzIjoyNTMsInRvLWZsb2F0MzIiOjMxM31dLDI4MTpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIGZ1 bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHR9KHQpfHxmdW5jdGlvbih0 LGUpe3ZhciByPW51bGw9PXQ/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmdFtT eW1ib2wuaXRlcmF0b3JdfHx0WyJAQGl0ZXJhdG9yIl07aWYobnVsbD09cilyZXR1cm47dmFy IG4saSxhPVtdLG89ITAscz0hMTt0cnl7Zm9yKHI9ci5jYWxsKHQpOyEobz0obj1yLm5leHQo KSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksIWV8fGEubGVuZ3RoIT09ZSk7bz0hMCk7fWNh dGNoKHQpe3M9ITAsaT10fWZpbmFsbHl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVy bigpfWZpbmFsbHl7aWYocyl0aHJvdyBpfX1yZXR1cm4gYX0odCxlKXx8YSh0LGUpfHxmdW5j dGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVj dHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwg bm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRo b2QuIil9KCl9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNB cnJheSh0KSlyZXR1cm4gbyh0KX0odCl8fGZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiIT10 eXBlb2YgU3ltYm9sJiZudWxsIT10W1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPXRbIkBAaXRl cmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fGEodCl8fGZ1bmN0aW9uKCl7dGhy b3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFi bGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVj dHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rp b24gYSh0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gbyh0LGUpO3Zh ciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1 cm4iT2JqZWN0Ij09PXImJnQuY29uc3RydWN0b3ImJihyPXQuY29uc3RydWN0b3IubmFtZSks Ik1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PXJ8fC9e KD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP28odCxl KTp2b2lkIDB9fWZ1bmN0aW9uIG8odCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQu bGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheShlKTtyPGU7cisrKW5bcl09dFtyXTty ZXR1cm4gbn12YXIgcz10KCJjb2xvci1ub3JtYWxpemUiKSxsPXQoImFycmF5LWJvdW5kcyIp LGM9dCgiY29sb3ItaWQiKSx1PXQoIkBwbG90bHkvcG9pbnQtY2x1c3RlciIpLGY9dCgib2Jq ZWN0LWFzc2lnbiIpLGg9dCgiZ2xzbGlmeSIpLHA9dCgicGljay1ieS1hbGlhcyIpLGQ9dCgi dXBkYXRlLWRpZmYiKSxtPXQoImZsYXR0ZW4tdmVydGV4LWRhdGEiKSxnPXQoImlzLWlleHBs b3JlciIpLHY9dCgidG8tZmxvYXQzMiIpLHk9dCgicGFyc2UtcmVjdCIpLHg9YjtmdW5jdGlv biBiKHQsZSl7dmFyIHI9dGhpcztpZighKHRoaXMgaW5zdGFuY2VvZiBiKSlyZXR1cm4gbmV3 IGIodCxlKTsiZnVuY3Rpb24iPT10eXBlb2YgdD8oZXx8KGU9e30pLGUucmVnbD10KTooZT10 LHQ9bnVsbCksZSYmZS5sZW5ndGgmJihlLnBvc2l0aW9ucz1lKTt2YXIgbixpPSh0PWUucmVn bCkuX2dsLGE9W107dGhpcy50b29NYW55Q29sb3JzPWcsbj10LnRleHR1cmUoe2RhdGE6bmV3 IFVpbnQ4QXJyYXkoMTAyMCksd2lkdGg6MjU1LGhlaWdodDoxLHR5cGU6InVpbnQ4Iixmb3Jt YXQ6InJnYmEiLHdyYXBTOiJjbGFtcCIsd3JhcFQ6ImNsYW1wIixtYWc6Im5lYXJlc3QiLG1p bjoibmVhcmVzdCJ9KSxmKHRoaXMse3JlZ2w6dCxnbDppLGdyb3VwczpbXSxtYXJrZXJDYWNo ZTpbbnVsbF0sbWFya2VyVGV4dHVyZXM6W251bGxdLHBhbGV0dGU6YSxwYWxldHRlSWRzOnt9 LHBhbGV0dGVUZXh0dXJlOm4sbWF4Q29sb3JzOjI1NSxtYXhTaXplOjEwMCxjYW52YXM6aS5j YW52YXN9KSx0aGlzLnVwZGF0ZShlKTt2YXIgbz17dW5pZm9ybXM6e2NvbnN0UG9pbnRTaXpl OiEhZS5jb25zdFBvaW50U2l6ZSxvcGFjaXR5OnQucHJvcCgib3BhY2l0eSIpLHBhbGV0dGVT aXplOmZ1bmN0aW9uKHQsZSl7cmV0dXJuW3IudG9vTWFueUNvbG9ycz8wOjI1NSxuLmhlaWdo dF19LHBpeGVsUmF0aW86dC5jb250ZXh0KCJwaXhlbFJhdGlvIiksc2NhbGU6dC5wcm9wKCJz Y2FsZSIpLHNjYWxlRnJhY3Q6dC5wcm9wKCJzY2FsZUZyYWN0IiksdHJhbnNsYXRlOnQucHJv cCgidHJhbnNsYXRlIiksdHJhbnNsYXRlRnJhY3Q6dC5wcm9wKCJ0cmFuc2xhdGVGcmFjdCIp LG1hcmtlclRleHR1cmU6dC5wcm9wKCJtYXJrZXJUZXh0dXJlIikscGFsZXR0ZVRleHR1cmU6 bn0sYXR0cmlidXRlczp7eDpmdW5jdGlvbih0LGUpe3JldHVybiBlLnhBdHRyfHx7YnVmZmVy OmUucG9zaXRpb25CdWZmZXIsc3RyaWRlOjgsb2Zmc2V0OjB9fSx5OmZ1bmN0aW9uKHQsZSl7 cmV0dXJuIGUueUF0dHJ8fHtidWZmZXI6ZS5wb3NpdGlvbkJ1ZmZlcixzdHJpZGU6OCxvZmZz ZXQ6NH19LHhGcmFjdDpmdW5jdGlvbih0LGUpe3JldHVybiBlLnhBdHRyP3tjb25zdGFudDpb MCwwXX06e2J1ZmZlcjplLnBvc2l0aW9uRnJhY3RCdWZmZXIsc3RyaWRlOjgsb2Zmc2V0OjB9 fSx5RnJhY3Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS55QXR0cj97Y29uc3RhbnQ6WzAsMF19 OntidWZmZXI6ZS5wb3NpdGlvbkZyYWN0QnVmZmVyLHN0cmlkZTo4LG9mZnNldDo0fX0sc2l6 ZTpmdW5jdGlvbih0LGUpe3JldHVybiBlLnNpemUubGVuZ3RoP3tidWZmZXI6ZS5zaXplQnVm ZmVyLHN0cmlkZToyLG9mZnNldDowfTp7Y29uc3RhbnQ6W01hdGgucm91bmQoMjU1KmUuc2l6 ZS9yLm1heFNpemUpXX19LGJvcmRlclNpemU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5ib3Jk ZXJTaXplLmxlbmd0aD97YnVmZmVyOmUuc2l6ZUJ1ZmZlcixzdHJpZGU6MixvZmZzZXQ6MX06 e2NvbnN0YW50OltNYXRoLnJvdW5kKDI1NSplLmJvcmRlclNpemUvci5tYXhTaXplKV19fSxj b2xvcklkOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuY29sb3IubGVuZ3RoP3tidWZmZXI6ZS5j b2xvckJ1ZmZlcixzdHJpZGU6ci50b29NYW55Q29sb3JzPzg6NCxvZmZzZXQ6MH06e2NvbnN0 YW50OnIudG9vTWFueUNvbG9ycz9hLnNsaWNlKDQqZS5jb2xvciw0KmUuY29sb3IrNCk6W2Uu Y29sb3JdfX0sYm9yZGVyQ29sb3JJZDpmdW5jdGlvbih0LGUpe3JldHVybiBlLmJvcmRlckNv bG9yLmxlbmd0aD97YnVmZmVyOmUuY29sb3JCdWZmZXIsc3RyaWRlOnIudG9vTWFueUNvbG9y cz84OjQsb2Zmc2V0OnIudG9vTWFueUNvbG9ycz80OjJ9Ontjb25zdGFudDpyLnRvb01hbnlD b2xvcnM/YS5zbGljZSg0KmUuYm9yZGVyQ29sb3IsNCplLmJvcmRlckNvbG9yKzQpOltlLmJv cmRlckNvbG9yXX19LGlzQWN0aXZlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuITA9PT1lLmFjdGl2 YXRpb24/e2NvbnN0YW50OlsxXX06ZS5hY3RpdmF0aW9uP2UuYWN0aXZhdGlvbjp7Y29uc3Rh bnQ6WzBdfX19LGJsZW5kOntlbmFibGU6ITAsY29sb3I6WzAsMCwwLDFdLGZ1bmM6e3NyY1JH Qjoic3JjIGFscGhhIixkc3RSR0I6Im9uZSBtaW51cyBzcmMgYWxwaGEiLHNyY0FscGhhOiJv bmUgbWludXMgZHN0IGFscGhhIixkc3RBbHBoYToib25lIn19LHNjaXNzb3I6e2VuYWJsZToh MCxib3g6dC5wcm9wKCJ2aWV3cG9ydCIpfSx2aWV3cG9ydDp0LnByb3AoInZpZXdwb3J0Iiks c3RlbmNpbDp7ZW5hYmxlOiExfSxkZXB0aDp7ZW5hYmxlOiExfSxlbGVtZW50czp0LnByb3Ao ImVsZW1lbnRzIiksY291bnQ6dC5wcm9wKCJjb3VudCIpLG9mZnNldDp0LnByb3AoIm9mZnNl dCIpLHByaW1pdGl2ZToicG9pbnRzIn0scz1mKHt9LG8pO3MuZnJhZz1oKFsicHJlY2lzaW9u IGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudW5pZm9ybSBmbG9hdCBvcGFj aXR5O1xudW5pZm9ybSBzYW1wbGVyMkQgbWFya2VyVGV4dHVyZTtcblxudmFyeWluZyB2ZWM0 IGZyYWdDb2xvciwgZnJhZ0JvcmRlckNvbG9yO1xudmFyeWluZyBmbG9hdCBmcmFnV2lkdGgs IGZyYWdCb3JkZXJDb2xvckxldmVsLCBmcmFnQ29sb3JMZXZlbDtcblxuZmxvYXQgc21vb3Ro U3RlcChmbG9hdCB4LCBmbG9hdCB5KSB7XG4gIHJldHVybiAxLjAgLyAoMS4wICsgZXhwKDUw LjAqKHggLSB5KSkpO1xufVxuXG52b2lkIG1haW4oKSB7XG4gIGZsb2F0IGRpc3QgPSB0ZXh0 dXJlMkQobWFya2VyVGV4dHVyZSwgZ2xfUG9pbnRDb29yZCkuciwgZGVsdGEgPSBmcmFnV2lk dGg7XG5cbiAgLy8gbWF4LWRpc3RhbmNlIGFscGhhXG4gIGlmIChkaXN0IDwgMC4wMDMpIGRp c2NhcmQ7XG5cbiAgLy8gbnVsbC1ib3JkZXIgY2FzZVxuICBpZiAoZnJhZ0JvcmRlckNvbG9y TGV2ZWwgPT0gZnJhZ0NvbG9yTGV2ZWwgfHwgZnJhZ0JvcmRlckNvbG9yLmEgPT0gMC4pIHtc biAgICBmbG9hdCBjb2xvckFtdCA9IHNtb290aHN0ZXAoLjUgLSBkZWx0YSwgLjUgKyBkZWx0 YSwgZGlzdCk7XG4gICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChmcmFnQ29sb3IucmdiLCBjb2xv ckFtdCAqIGZyYWdDb2xvci5hICogb3BhY2l0eSk7XG4gIH1cbiAgZWxzZSB7XG4gICAgZmxv YXQgYm9yZGVyQ29sb3JBbXQgPSBzbW9vdGhzdGVwKGZyYWdCb3JkZXJDb2xvckxldmVsIC0g ZGVsdGEsIGZyYWdCb3JkZXJDb2xvckxldmVsICsgZGVsdGEsIGRpc3QpO1xuICAgIGZsb2F0 IGNvbG9yQW10ID0gc21vb3Roc3RlcChmcmFnQ29sb3JMZXZlbCAtIGRlbHRhLCBmcmFnQ29s b3JMZXZlbCArIGRlbHRhLCBkaXN0KTtcblxuICAgIHZlYzQgY29sb3IgPSBmcmFnQm9yZGVy Q29sb3I7XG4gICAgY29sb3IuYSAqPSBib3JkZXJDb2xvckFtdDtcbiAgICBjb2xvciA9IG1p eChjb2xvciwgZnJhZ0NvbG9yLCBjb2xvckFtdCk7XG4gICAgY29sb3IuYSAqPSBvcGFjaXR5 O1xuXG4gICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7XG4gIH1cblxufVxuIl0pLHMudmVydD1o KFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmli dXRlIGZsb2F0IHgsIHksIHhGcmFjdCwgeUZyYWN0O1xuYXR0cmlidXRlIGZsb2F0IHNpemUs IGJvcmRlclNpemU7XG5hdHRyaWJ1dGUgdmVjNCBjb2xvcklkLCBib3JkZXJDb2xvcklkO1xu YXR0cmlidXRlIGZsb2F0IGlzQWN0aXZlO1xuXG51bmlmb3JtIGJvb2wgY29uc3RQb2ludFNp emU7XG51bmlmb3JtIGZsb2F0IHBpeGVsUmF0aW87XG51bmlmb3JtIHZlYzIgc2NhbGUsIHNj YWxlRnJhY3QsIHRyYW5zbGF0ZSwgdHJhbnNsYXRlRnJhY3QsIHBhbGV0dGVTaXplO1xudW5p Zm9ybSBzYW1wbGVyMkQgcGFsZXR0ZVRleHR1cmU7XG5cbmNvbnN0IGZsb2F0IG1heFNpemUg PSAxMDAuO1xuY29uc3QgZmxvYXQgYm9yZGVyTGV2ZWwgPSAuNTtcblxudmFyeWluZyB2ZWM0 IGZyYWdDb2xvciwgZnJhZ0JvcmRlckNvbG9yO1xudmFyeWluZyBmbG9hdCBmcmFnUG9pbnRT aXplLCBmcmFnQm9yZGVyUmFkaXVzLCBmcmFnV2lkdGgsIGZyYWdCb3JkZXJDb2xvckxldmVs LCBmcmFnQ29sb3JMZXZlbDtcblxuZmxvYXQgcG9pbnRTaXplU2NhbGUgPSAoY29uc3RQb2lu dFNpemUpID8gMi4gOiBwaXhlbFJhdGlvO1xuXG5ib29sIGlzRGlyZWN0ID0gKHBhbGV0dGVT aXplLnggPCAxLik7XG5cbnZlYzQgZ2V0Q29sb3IodmVjNCBpZCkge1xuICByZXR1cm4gaXNE aXJlY3QgPyBpZCAvIDI1NS4gOiB0ZXh0dXJlMkQocGFsZXR0ZVRleHR1cmUsXG4gICAgdmVj MihcbiAgICAgIChpZC54ICsgLjUpIC8gcGFsZXR0ZVNpemUueCxcbiAgICAgIChpZC55ICsg LjUpIC8gcGFsZXR0ZVNpemUueVxuICAgIClcbiAgKTtcbn1cblxudm9pZCBtYWluKCkge1xu ICAvLyBpZ25vcmUgaW5hY3RpdmUgcG9pbnRzXG4gIGlmIChpc0FjdGl2ZSA9PSAwLikgcmV0 dXJuO1xuXG4gIHZlYzIgcG9zaXRpb24gPSB2ZWMyKHgsIHkpO1xuICB2ZWMyIHBvc2l0aW9u RnJhY3QgPSB2ZWMyKHhGcmFjdCwgeUZyYWN0KTtcblxuICB2ZWM0IGNvbG9yID0gZ2V0Q29s b3IoY29sb3JJZCk7XG4gIHZlYzQgYm9yZGVyQ29sb3IgPSBnZXRDb2xvcihib3JkZXJDb2xv cklkKTtcblxuICBmbG9hdCBzaXplID0gc2l6ZSAqIG1heFNpemUgLyAyNTUuO1xuICBmbG9h dCBib3JkZXJTaXplID0gYm9yZGVyU2l6ZSAqIG1heFNpemUgLyAyNTUuO1xuXG4gIGdsX1Bv aW50U2l6ZSA9IDIuICogc2l6ZSAqIHBvaW50U2l6ZVNjYWxlO1xuICBmcmFnUG9pbnRTaXpl ID0gc2l6ZSAqIHBpeGVsUmF0aW87XG5cbiAgdmVjMiBwb3MgPSAocG9zaXRpb24gKyB0cmFu c2xhdGUpICogc2NhbGVcbiAgICAgICsgKHBvc2l0aW9uRnJhY3QgKyB0cmFuc2xhdGVGcmFj dCkgKiBzY2FsZVxuICAgICAgKyAocG9zaXRpb24gKyB0cmFuc2xhdGUpICogc2NhbGVGcmFj dFxuICAgICAgKyAocG9zaXRpb25GcmFjdCArIHRyYW5zbGF0ZUZyYWN0KSAqIHNjYWxlRnJh Y3Q7XG5cbiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvcyAqIDIuIC0gMS4sIDAuLCAxLik7XG5c biAgZnJhZ0NvbG9yID0gY29sb3I7XG4gIGZyYWdCb3JkZXJDb2xvciA9IGJvcmRlckNvbG9y O1xuICBmcmFnV2lkdGggPSAxLiAvIGdsX1BvaW50U2l6ZTtcblxuICBmcmFnQm9yZGVyQ29s b3JMZXZlbCA9IGNsYW1wKGJvcmRlckxldmVsIC0gYm9yZGVyTGV2ZWwgKiBib3JkZXJTaXpl IC8gc2l6ZSwgMC4sIDEuKTtcbiAgZnJhZ0NvbG9yTGV2ZWwgPSBjbGFtcChib3JkZXJMZXZl bCArICgxLiAtIGJvcmRlckxldmVsKSAqIGJvcmRlclNpemUgLyBzaXplLCAwLiwgMS4pO1xu fSJdKSx0aGlzLmRyYXdNYXJrZXI9dChzKTt2YXIgbD1mKHt9LG8pO2wuZnJhZz1oKFsicHJl Y2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudmFyeWluZyB2ZWM0 IGZyYWdDb2xvciwgZnJhZ0JvcmRlckNvbG9yO1xudmFyeWluZyBmbG9hdCBmcmFnQm9yZGVy UmFkaXVzLCBmcmFnV2lkdGg7XG5cbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcblxuZmxvYXQg c21vb3RoU3RlcChmbG9hdCBlZGdlMCwgZmxvYXQgZWRnZTEsIGZsb2F0IHgpIHtcblx0Zmxv YXQgdDtcblx0dCA9IGNsYW1wKCh4IC0gZWRnZTApIC8gKGVkZ2UxIC0gZWRnZTApLCAwLjAs IDEuMCk7XG5cdHJldHVybiB0ICogdCAqICgzLjAgLSAyLjAgKiB0KTtcbn1cblxudm9pZCBt YWluKCkge1xuXHRmbG9hdCByYWRpdXMsIGFscGhhID0gMS4wLCBkZWx0YSA9IGZyYWdXaWR0 aDtcblxuXHRyYWRpdXMgPSBsZW5ndGgoMi4wICogZ2xfUG9pbnRDb29yZC54eSAtIDEuMCk7 XG5cblx0aWYgKHJhZGl1cyA+IDEuMCArIGRlbHRhKSB7XG5cdFx0ZGlzY2FyZDtcblx0fVxu XG5cdGFscGhhIC09IHNtb290aHN0ZXAoMS4wIC0gZGVsdGEsIDEuMCArIGRlbHRhLCByYWRp dXMpO1xuXG5cdGZsb2F0IGJvcmRlclJhZGl1cyA9IGZyYWdCb3JkZXJSYWRpdXM7XG5cdGZs b2F0IHJhdGlvID0gc21vb3Roc3RlcChib3JkZXJSYWRpdXMgLSBkZWx0YSwgYm9yZGVyUmFk aXVzICsgZGVsdGEsIHJhZGl1cyk7XG5cdHZlYzQgY29sb3IgPSBtaXgoZnJhZ0NvbG9yLCBm cmFnQm9yZGVyQ29sb3IsIHJhdGlvKTtcblx0Y29sb3IuYSAqPSBhbHBoYSAqIG9wYWNpdHk7 XG5cdGdsX0ZyYWdDb2xvciA9IGNvbG9yO1xufVxuIl0pLGwudmVydD1oKFsicHJlY2lzaW9u IGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIGZsb2F0IHgs IHksIHhGcmFjdCwgeUZyYWN0O1xuYXR0cmlidXRlIGZsb2F0IHNpemUsIGJvcmRlclNpemU7 XG5hdHRyaWJ1dGUgdmVjNCBjb2xvcklkLCBib3JkZXJDb2xvcklkO1xuYXR0cmlidXRlIGZs b2F0IGlzQWN0aXZlO1xuXG51bmlmb3JtIGJvb2wgY29uc3RQb2ludFNpemU7XG51bmlmb3Jt IGZsb2F0IHBpeGVsUmF0aW87XG51bmlmb3JtIHZlYzIgcGFsZXR0ZVNpemUsIHNjYWxlLCBz Y2FsZUZyYWN0LCB0cmFuc2xhdGUsIHRyYW5zbGF0ZUZyYWN0O1xudW5pZm9ybSBzYW1wbGVy MkQgcGFsZXR0ZVRleHR1cmU7XG5cbmNvbnN0IGZsb2F0IG1heFNpemUgPSAxMDAuO1xuXG52 YXJ5aW5nIHZlYzQgZnJhZ0NvbG9yLCBmcmFnQm9yZGVyQ29sb3I7XG52YXJ5aW5nIGZsb2F0 IGZyYWdCb3JkZXJSYWRpdXMsIGZyYWdXaWR0aDtcblxuZmxvYXQgcG9pbnRTaXplU2NhbGUg PSAoY29uc3RQb2ludFNpemUpID8gMi4gOiBwaXhlbFJhdGlvO1xuXG5ib29sIGlzRGlyZWN0 ID0gKHBhbGV0dGVTaXplLnggPCAxLik7XG5cbnZlYzQgZ2V0Q29sb3IodmVjNCBpZCkge1xu ICByZXR1cm4gaXNEaXJlY3QgPyBpZCAvIDI1NS4gOiB0ZXh0dXJlMkQocGFsZXR0ZVRleHR1 cmUsXG4gICAgdmVjMihcbiAgICAgIChpZC54ICsgLjUpIC8gcGFsZXR0ZVNpemUueCxcbiAg ICAgIChpZC55ICsgLjUpIC8gcGFsZXR0ZVNpemUueVxuICAgIClcbiAgKTtcbn1cblxudm9p ZCBtYWluKCkge1xuICAvLyBpZ25vcmUgaW5hY3RpdmUgcG9pbnRzXG4gIGlmIChpc0FjdGl2 ZSA9PSAwLikgcmV0dXJuO1xuXG4gIHZlYzIgcG9zaXRpb24gPSB2ZWMyKHgsIHkpO1xuICB2 ZWMyIHBvc2l0aW9uRnJhY3QgPSB2ZWMyKHhGcmFjdCwgeUZyYWN0KTtcblxuICB2ZWM0IGNv bG9yID0gZ2V0Q29sb3IoY29sb3JJZCk7XG4gIHZlYzQgYm9yZGVyQ29sb3IgPSBnZXRDb2xv cihib3JkZXJDb2xvcklkKTtcblxuICBmbG9hdCBzaXplID0gc2l6ZSAqIG1heFNpemUgLyAy NTUuO1xuICBmbG9hdCBib3JkZXJTaXplID0gYm9yZGVyU2l6ZSAqIG1heFNpemUgLyAyNTUu O1xuXG4gIGdsX1BvaW50U2l6ZSA9IChzaXplICsgYm9yZGVyU2l6ZSkgKiBwb2ludFNpemVT Y2FsZTtcblxuICB2ZWMyIHBvcyA9IChwb3NpdGlvbiArIHRyYW5zbGF0ZSkgKiBzY2FsZVxu ICAgICAgKyAocG9zaXRpb25GcmFjdCArIHRyYW5zbGF0ZUZyYWN0KSAqIHNjYWxlXG4gICAg ICArIChwb3NpdGlvbiArIHRyYW5zbGF0ZSkgKiBzY2FsZUZyYWN0XG4gICAgICArIChwb3Np dGlvbkZyYWN0ICsgdHJhbnNsYXRlRnJhY3QpICogc2NhbGVGcmFjdDtcblxuICBnbF9Qb3Np dGlvbiA9IHZlYzQocG9zICogMi4gLSAxLiwgMC4sIDEuKTtcblxuICBmcmFnQm9yZGVyUmFk aXVzID0gMS4gLSAyLiAqIGJvcmRlclNpemUgLyAoc2l6ZSArIGJvcmRlclNpemUpO1xuICBm cmFnQ29sb3IgPSBjb2xvcjtcbiAgZnJhZ0JvcmRlckNvbG9yID0gYm9yZGVyQ29sb3IuYSA9 PSAwLiB8fCBib3JkZXJTaXplID09IDAuID8gdmVjNChjb2xvci5yZ2IsIDAuKSA6IGJvcmRl ckNvbG9yO1xuICBmcmFnV2lkdGggPSAxLiAvIGdsX1BvaW50U2l6ZTtcbn1cbiJdKSxnJiYo bC5mcmFnPWwuZnJhZy5yZXBsYWNlKCJzbW9vdGhzdGVwIiwic21vb3RoU3RlcCIpLHMuZnJh Zz1zLmZyYWcucmVwbGFjZSgic21vb3Roc3RlcCIsInNtb290aFN0ZXAiKSksdGhpcy5kcmF3 Q2lyY2xlPXQobCl9Yi5kZWZhdWx0cz17Y29sb3I6ImJsYWNrIixib3JkZXJDb2xvcjoidHJh bnNwYXJlbnQiLGJvcmRlclNpemU6MCxzaXplOjEyLG9wYWNpdHk6MSxtYXJrZXI6dm9pZCAw LHZpZXdwb3J0Om51bGwscmFuZ2U6bnVsbCxwaXhlbFNpemU6bnVsbCxjb3VudDowLG9mZnNl dDowLGJvdW5kczpudWxsLHBvc2l0aW9uczpbXSxzbmFwOjFlNH0sYi5wcm90b3R5cGUucmVu ZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGgmJnRoaXMudXBkYXRlLmFw cGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLmRyYXcoKSx0aGlzfSxiLnByb3RvdHlwZS5kcmF3 PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMsZT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFy cmF5KGUpLG49MDtuPGU7bisrKXJbbl09YXJndW1lbnRzW25dO3ZhciBpPXRoaXMuZ3JvdXBz O2lmKDE9PT1yLmxlbmd0aCYmQXJyYXkuaXNBcnJheShyWzBdKSYmKG51bGw9PT1yWzBdWzBd fHxBcnJheS5pc0FycmF5KHJbMF1bMF0pKSYmKHI9clswXSksdGhpcy5yZWdsLl9yZWZyZXNo KCksci5sZW5ndGgpZm9yKHZhciBhPTA7YTxyLmxlbmd0aDthKyspdGhpcy5kcmF3SXRlbShh LHJbYV0pO2Vsc2UgaS5mb3JFYWNoKChmdW5jdGlvbihlLHIpe3QuZHJhd0l0ZW0ocil9KSk7 cmV0dXJuIHRoaXN9LGIucHJvdG90eXBlLmRyYXdJdGVtPWZ1bmN0aW9uKHQsZSl7dmFyIHI9 dGhpcy5ncm91cHMsbj1yW3RdO2lmKCJudW1iZXIiPT10eXBlb2YgZSYmKHQ9ZSxuPXJbZV0s ZT1udWxsKSxuJiZuLmNvdW50JiZuLm9wYWNpdHkpe24uYWN0aXZhdGlvblswXSYmdGhpcy5k cmF3Q2lyY2xlKHRoaXMuZ2V0TWFya2VyRHJhd09wdGlvbnMoMCxuLGUpKTtmb3IodmFyIGE9 W10sbz0xO288bi5hY3RpdmF0aW9uLmxlbmd0aDtvKyspbi5hY3RpdmF0aW9uW29dJiYoITA9 PT1uLmFjdGl2YXRpb25bb118fG4uYWN0aXZhdGlvbltvXS5kYXRhLmxlbmd0aCkmJmEucHVz aC5hcHBseShhLGkodGhpcy5nZXRNYXJrZXJEcmF3T3B0aW9ucyhvLG4sZSkpKTthLmxlbmd0 aCYmdGhpcy5kcmF3TWFya2VyKGEpfX0sYi5wcm90b3R5cGUuZ2V0TWFya2VyRHJhd09wdGlv bnM9ZnVuY3Rpb24odCxlLHIpe3ZhciBpPWUucmFuZ2UsYT1lLnRyZWUsbz1lLnZpZXdwb3J0 LHM9ZS5hY3RpdmF0aW9uLGw9ZS5zZWxlY3Rpb25CdWZmZXIsYz1lLmNvdW50O3RoaXMucmVn bDtpZighYSlyZXR1cm4gcj9bZih7fSxlLHttYXJrZXJUZXh0dXJlOnRoaXMubWFya2VyVGV4 dHVyZXNbdF0sYWN0aXZhdGlvbjpzW3RdLGNvdW50OnIubGVuZ3RoLGVsZW1lbnRzOnIsb2Zm c2V0OjB9KV06W2Yoe30sZSx7bWFya2VyVGV4dHVyZTp0aGlzLm1hcmtlclRleHR1cmVzW3Rd LGFjdGl2YXRpb246c1t0XSxvZmZzZXQ6MH0pXTt2YXIgdT1bXSxoPWEucmFuZ2UoaSx7bG9k OiEwLHB4OlsoaVsyXS1pWzBdKS9vLndpZHRoLChpWzNdLWlbMV0pL28uaGVpZ2h0XX0pO2lm KHIpe2Zvcih2YXIgcD1zW3RdLmRhdGEsZD1uZXcgVWludDhBcnJheShjKSxtPTA7bTxyLmxl bmd0aDttKyspe3ZhciBnPXJbbV07ZFtnXT1wP3BbZ106MX1sLnN1YmRhdGEoZCl9Zm9yKHZh ciB2PWgubGVuZ3RoO3YtLTspe3ZhciB5PW4oaFt2XSwyKSx4PXlbMF0sYj15WzFdO3UucHVz aChmKHt9LGUse21hcmtlclRleHR1cmU6dGhpcy5tYXJrZXJUZXh0dXJlc1t0XSxhY3RpdmF0 aW9uOnI/bDpzW3RdLG9mZnNldDp4LGNvdW50OmIteH0pKX1yZXR1cm4gdX0sYi5wcm90b3R5 cGUudXBkYXRlPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMsZT1hcmd1bWVudHMubGVuZ3Ro LHI9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXJbbl09YXJndW1lbnRzW25dO2lmKHIubGVu Z3RoKXsxPT09ci5sZW5ndGgmJkFycmF5LmlzQXJyYXkoclswXSkmJihyPXJbMF0pO3ZhciBp PXRoaXMuZ3JvdXBzLGE9dGhpcy5nbCxvPXRoaXMucmVnbCxzPXRoaXMubWF4U2l6ZSxjPXRo aXMubWF4Q29sb3JzLGg9dGhpcy5wYWxldHRlO3RoaXMuZ3JvdXBzPWk9ci5tYXAoKGZ1bmN0 aW9uKGUscil7dmFyIG49aVtyXTtpZih2b2lkIDA9PT1lKXJldHVybiBuO251bGw9PT1lP2U9 e3Bvc2l0aW9uczpudWxsfToiZnVuY3Rpb24iPT10eXBlb2YgZT9lPXtvbmRyYXc6ZX06Im51 bWJlciI9PXR5cGVvZiBlWzBdJiYoZT17cG9zaXRpb25zOmV9KSxudWxsPT09KGU9cChlLHtw b3NpdGlvbnM6InBvc2l0aW9ucyBkYXRhIHBvaW50cyIsc25hcDoic25hcCBjbHVzdGVyIGxv ZCB0cmVlIixzaXplOiJzaXplcyBzaXplIHJhZGl1cyIsYm9yZGVyU2l6ZToiYm9yZGVyU2l6 ZXMgYm9yZGVyU2l6ZSBib3JkZXItc2l6ZSBib3JkZXJzaXplIGJvcmRlcldpZHRoIGJvcmRl cldpZHRocyBib3JkZXItd2lkdGggYm9yZGVyd2lkdGggc3Ryb2tlLXdpZHRoIHN0cm9rZVdp ZHRoIHN0cm9rZXdpZHRoIG91dGxpbmUiLGNvbG9yOiJjb2xvcnMgY29sb3IgZmlsbCBmaWxs LWNvbG9yIGZpbGxDb2xvciIsYm9yZGVyQ29sb3I6ImJvcmRlckNvbG9ycyBib3JkZXJDb2xv ciBzdHJva2Ugc3Ryb2tlLWNvbG9yIHN0cm9rZUNvbG9yIixtYXJrZXI6Im1hcmtlcnMgbWFy a2VyIHNoYXBlIixyYW5nZToicmFuZ2UgZGF0YUJveCBkYXRhYm94Iix2aWV3cG9ydDoidmll d3BvcnQgdmlld1BvcnQgdmlld0JveCB2aWV3Ym94IixvcGFjaXR5OiJvcGFjaXR5IGFscGhh IHRyYW5zcGFyZW5jeSIsYm91bmRzOiJib3VuZCBib3VuZHMgYm91bmRhcmllcyBsaW1pdHMi LHRvb01hbnlDb2xvcnM6InRvb01hbnlDb2xvcnMgcGFsZXR0ZSBwYWxldHRlTW9kZSBvcHRp bWl6ZVBhbGV0dGUgZW5hYmxlUGFsZXR0ZSJ9KSkucG9zaXRpb25zJiYoZS5wb3NpdGlvbnM9 W10pLG51bGwhPWUudG9vTWFueUNvbG9ycyYmKHQudG9vTWFueUNvbG9ycz1lLnRvb01hbnlD b2xvcnMpLG58fChpW3JdPW49e2lkOnIsc2NhbGU6bnVsbCx0cmFuc2xhdGU6bnVsbCxzY2Fs ZUZyYWN0Om51bGwsdHJhbnNsYXRlRnJhY3Q6bnVsbCxhY3RpdmF0aW9uOltdLHNlbGVjdGlv bkJ1ZmZlcjpvLmJ1ZmZlcih7ZGF0YTpuZXcgVWludDhBcnJheSgwKSx1c2FnZToic3RyZWFt Iix0eXBlOiJ1aW50OCJ9KSxzaXplQnVmZmVyOm8uYnVmZmVyKHtkYXRhOm5ldyBVaW50OEFy cmF5KDApLHVzYWdlOiJkeW5hbWljIix0eXBlOiJ1aW50OCJ9KSxjb2xvckJ1ZmZlcjpvLmJ1 ZmZlcih7ZGF0YTpuZXcgVWludDhBcnJheSgwKSx1c2FnZToiZHluYW1pYyIsdHlwZToidWlu dDgifSkscG9zaXRpb25CdWZmZXI6by5idWZmZXIoe2RhdGE6bmV3IFVpbnQ4QXJyYXkoMCks dXNhZ2U6ImR5bmFtaWMiLHR5cGU6ImZsb2F0In0pLHBvc2l0aW9uRnJhY3RCdWZmZXI6by5i dWZmZXIoe2RhdGE6bmV3IFVpbnQ4QXJyYXkoMCksdXNhZ2U6ImR5bmFtaWMiLHR5cGU6ImZs b2F0In0pfSxlPWYoe30sYi5kZWZhdWx0cyxlKSksZS5wb3NpdGlvbnMmJiEoIm1hcmtlciJp biBlKSYmKGUubWFya2VyPW4ubWFya2VyLGRlbGV0ZSBuLm1hcmtlciksZS5tYXJrZXImJiEo InBvc2l0aW9ucyJpbiBlKSYmKGUucG9zaXRpb25zPW4ucG9zaXRpb25zLGRlbGV0ZSBuLnBv c2l0aW9ucyk7dmFyIGc9MCx4PTA7aWYoZChuLGUsW3tzbmFwOiEwLHNpemU6ZnVuY3Rpb24o dCxlKXtyZXR1cm4gbnVsbD09dCYmKHQ9Yi5kZWZhdWx0cy5zaXplKSxnKz10JiZ0Lmxlbmd0 aD8xOjAsdH0sYm9yZGVyU2l6ZTpmdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT10JiYodD1i LmRlZmF1bHRzLmJvcmRlclNpemUpLGcrPXQmJnQubGVuZ3RoPzE6MCx0fSxvcGFjaXR5OnBh cnNlRmxvYXQsY29sb3I6ZnVuY3Rpb24oZSxyKXtyZXR1cm4gbnVsbD09ZSYmKGU9Yi5kZWZh dWx0cy5jb2xvciksZT10LnVwZGF0ZUNvbG9yKGUpLHgrKyxlfSxib3JkZXJDb2xvcjpmdW5j dGlvbihlLHIpe3JldHVybiBudWxsPT1lJiYoZT1iLmRlZmF1bHRzLmJvcmRlckNvbG9yKSxl PXQudXBkYXRlQ29sb3IoZSkseCsrLGV9LGJvdW5kczpmdW5jdGlvbih0LGUscil7cmV0dXJu InJhbmdlImluIHJ8fChyLnJhbmdlPW51bGwpLHR9LHBvc2l0aW9uczpmdW5jdGlvbih0LGUs cil7dmFyIG49ZS5zbmFwLGk9ZS5wb3NpdGlvbkJ1ZmZlcixhPWUucG9zaXRpb25GcmFjdEJ1 ZmZlcixzPWUuc2VsZWN0aW9uQnVmZmVyO2lmKHQueHx8dC55KXJldHVybiB0LngubGVuZ3Ro P2UueEF0dHI9e2J1ZmZlcjpvLmJ1ZmZlcih0LngpLG9mZnNldDowLHN0cmlkZTo0LGNvdW50 OnQueC5sZW5ndGh9OmUueEF0dHI9e2J1ZmZlcjp0LnguYnVmZmVyLG9mZnNldDo0KnQueC5v ZmZzZXR8fDAsc3RyaWRlOjQqKHQueC5zdHJpZGV8fDEpLGNvdW50OnQueC5jb3VudH0sdC55 Lmxlbmd0aD9lLnlBdHRyPXtidWZmZXI6by5idWZmZXIodC55KSxvZmZzZXQ6MCxzdHJpZGU6 NCxjb3VudDp0LnkubGVuZ3RofTplLnlBdHRyPXtidWZmZXI6dC55LmJ1ZmZlcixvZmZzZXQ6 NCp0Lnkub2Zmc2V0fHwwLHN0cmlkZTo0Kih0Lnkuc3RyaWRlfHwxKSxjb3VudDp0LnkuY291 bnR9LGUuY291bnQ9TWF0aC5tYXgoZS54QXR0ci5jb3VudCxlLnlBdHRyLmNvdW50KSx0O3Q9 bSh0LCJmbG9hdDY0Iik7dmFyIGM9ZS5jb3VudD1NYXRoLmZsb29yKHQubGVuZ3RoLzIpLGY9 ZS5ib3VuZHM9Yz9sKHQsMik6bnVsbDtpZihyLnJhbmdlfHxlLnJhbmdlfHwoZGVsZXRlIGUu cmFuZ2Usci5yYW5nZT1mKSxyLm1hcmtlcnx8ZS5tYXJrZXJ8fChkZWxldGUgZS5tYXJrZXIs ci5tYXJrZXI9bnVsbCksbiYmKCEwPT09bnx8Yz5uKT9lLnRyZWU9dSh0LHtib3VuZHM6Zn0p Om4mJm4ubGVuZ3RoJiYoZS50cmVlPW4pLGUudHJlZSl7dmFyIGg9e3ByaW1pdGl2ZToicG9p bnRzIix1c2FnZToic3RhdGljIixkYXRhOmUudHJlZSx0eXBlOiJ1aW50MzIifTtlLmVsZW1l bnRzP2UuZWxlbWVudHMoaCk6ZS5lbGVtZW50cz1vLmVsZW1lbnRzKGgpfXZhciBwPXYuZmxv YXQzMih0KTtyZXR1cm4gaSh7ZGF0YTpwLHVzYWdlOiJkeW5hbWljIn0pLGEoe2RhdGE6di5m cmFjdDMyKHQscCksdXNhZ2U6ImR5bmFtaWMifSkscyh7ZGF0YTpuZXcgVWludDhBcnJheShj KSx0eXBlOiJ1aW50OCIsdXNhZ2U6InN0cmVhbSJ9KSx0fX0se21hcmtlcjpmdW5jdGlvbihl LHIsbil7dmFyIGk9ci5hY3RpdmF0aW9uO2lmKGkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0 dXJuIHQmJnQuZGVzdHJveSYmdC5kZXN0cm95KCl9KSksaS5sZW5ndGg9MCxlJiYibnVtYmVy IiE9dHlwZW9mIGVbMF0pe2Zvcih2YXIgYT1bXSxzPTAsbD1NYXRoLm1pbihlLmxlbmd0aCxy LmNvdW50KTtzPGw7cysrKXt2YXIgYz10LmFkZE1hcmtlcihlW3NdKTthW2NdfHwoYVtjXT1u ZXcgVWludDhBcnJheShyLmNvdW50KSksYVtjXVtzXT0xfWZvcih2YXIgdT0wO3U8YS5sZW5n dGg7dSsrKWlmKGFbdV0pe3ZhciBmPXtkYXRhOmFbdV0sdHlwZToidWludDgiLHVzYWdlOiJz dGF0aWMifTtpW3VdP2lbdV0oZik6aVt1XT1vLmJ1ZmZlcihmKSxpW3VdLmRhdGE9YVt1XX19 ZWxzZXtpW3QuYWRkTWFya2VyKGUpXT0hMH1yZXR1cm4gZX0scmFuZ2U6ZnVuY3Rpb24odCxl LHIpe3ZhciBuPWUuYm91bmRzO2lmKG4pcmV0dXJuIHR8fCh0PW4pLGUuc2NhbGU9WzEvKHRb Ml0tdFswXSksMS8odFszXS10WzFdKV0sZS50cmFuc2xhdGU9Wy10WzBdLC10WzFdXSxlLnNj YWxlRnJhY3Q9di5mcmFjdChlLnNjYWxlKSxlLnRyYW5zbGF0ZUZyYWN0PXYuZnJhY3QoZS50 cmFuc2xhdGUpLHR9LHZpZXdwb3J0OmZ1bmN0aW9uKHQpe3JldHVybiB5KHR8fFthLmRyYXdp bmdCdWZmZXJXaWR0aCxhLmRyYXdpbmdCdWZmZXJIZWlnaHRdKX19XSksZyl7dmFyIF89bix3 PV8uY291bnQsVD1fLnNpemUsaz1fLmJvcmRlclNpemUsQT1fLnNpemVCdWZmZXIsTT1uZXcg VWludDhBcnJheSgyKncpO2lmKFQubGVuZ3RofHxrLmxlbmd0aClmb3IodmFyIFM9MDtTPHc7 UysrKU1bMipTXT1NYXRoLnJvdW5kKDI1NSoobnVsbD09VFtTXT9UOlRbU10pL3MpLE1bMipT KzFdPU1hdGgucm91bmQoMjU1KihudWxsPT1rW1NdP2s6a1tTXSkvcyk7QSh7ZGF0YTpNLHVz YWdlOiJkeW5hbWljIn0pfWlmKHgpe3ZhciBFLEw9bixDPUwuY291bnQsUD1MLmNvbG9yLEk9 TC5ib3JkZXJDb2xvcixPPUwuY29sb3JCdWZmZXI7aWYodC50b29NYW55Q29sb3JzKXtpZihQ Lmxlbmd0aHx8SS5sZW5ndGgpe0U9bmV3IFVpbnQ4QXJyYXkoOCpDKTtmb3IodmFyIHo9MDt6 PEM7eisrKXt2YXIgRD1QW3pdO0VbOCp6XT1oWzQqRF0sRVs4KnorMV09aFs0KkQrMV0sRVs4 KnorMl09aFs0KkQrMl0sRVs4KnorM109aFs0KkQrM107dmFyIFI9SVt6XTtFWzgqeis0XT1o WzQqUl0sRVs4KnorNV09aFs0KlIrMV0sRVs4KnorNl09aFs0KlIrMl0sRVs4KnorN109aFs0 KlIrM119fX1lbHNlIGlmKFAubGVuZ3RofHxJLmxlbmd0aCl7RT1uZXcgVWludDhBcnJheSg0 KkMrMik7Zm9yKHZhciBGPTA7RjxDO0YrKyludWxsIT1QW0ZdJiYoRVs0KkZdPVBbRl0lYyxF WzQqRisxXT1NYXRoLmZsb29yKFBbRl0vYykpLG51bGwhPUlbRl0mJihFWzQqRisyXT1JW0Zd JWMsRVs0KkYrM109TWF0aC5mbG9vcihJW0ZdL2MpKX1PKHtkYXRhOkV8fG5ldyBVaW50OEFy cmF5KDApLHR5cGU6InVpbnQ4Iix1c2FnZToiZHluYW1pYyJ9KX1yZXR1cm4gbn0pKX19LGIu cHJvdG90eXBlLmFkZE1hcmtlcj1mdW5jdGlvbih0KXt2YXIgZSxyPXRoaXMubWFya2VyVGV4 dHVyZXMsbj10aGlzLnJlZ2wsaT10aGlzLm1hcmtlckNhY2hlLGE9bnVsbD09dD8wOmkuaW5k ZXhPZih0KTtpZihhPj0wKXJldHVybiBhO2lmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5fHx0 IGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpZT10O2Vsc2V7ZT1uZXcgVWludDhBcnJh eSh0Lmxlbmd0aCk7Zm9yKHZhciBvPTAscz10Lmxlbmd0aDtvPHM7bysrKWVbb109MjU1KnRb b119dmFyIGw9TWF0aC5mbG9vcihNYXRoLnNxcnQoZS5sZW5ndGgpKTtyZXR1cm4gYT1yLmxl bmd0aCxpLnB1c2godCksci5wdXNoKG4udGV4dHVyZSh7Y2hhbm5lbHM6MSxkYXRhOmUscmFk aXVzOmwsbWFnOiJsaW5lYXIiLG1pbjoibGluZWFyIn0pKSxhfSxiLnByb3RvdHlwZS51cGRh dGVDb2xvcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnBhbGV0dGVJZHMscj10aGlzLnBhbGV0 dGUsbj10aGlzLm1heENvbG9ycztBcnJheS5pc0FycmF5KHQpfHwodD1bdF0pO3ZhciBpPVtd O2lmKCJudW1iZXIiPT10eXBlb2YgdFswXSl7dmFyIGE9W107aWYoQXJyYXkuaXNBcnJheSh0 KSlmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rPTQpYS5wdXNoKHQuc2xpY2UobyxvKzQpKTtl bHNlIGZvcih2YXIgbD0wO2w8dC5sZW5ndGg7bCs9NClhLnB1c2godC5zdWJhcnJheShsLGwr NCkpO3Q9YX1mb3IodmFyIHU9MDt1PHQubGVuZ3RoO3UrKyl7dmFyIGY9dFt1XTtmPXMoZiwi dWludDgiKTt2YXIgaD1jKGYsITEpO2lmKG51bGw9PWVbaF0pe3ZhciBwPXIubGVuZ3RoO2Vb aF09TWF0aC5mbG9vcihwLzQpLHJbcF09ZlswXSxyW3ArMV09ZlsxXSxyW3ArMl09ZlsyXSxy W3ArM109ZlszXX1pW3VdPWVbaF19cmV0dXJuIXRoaXMudG9vTWFueUNvbG9ycyYmci5sZW5n dGg+NCpuJiYodGhpcy50b29NYW55Q29sb3JzPSEwKSx0aGlzLnVwZGF0ZVBhbGV0dGUociks MT09PWkubGVuZ3RoP2lbMF06aX0sYi5wcm90b3R5cGUudXBkYXRlUGFsZXR0ZT1mdW5jdGlv bih0KXtpZighdGhpcy50b29NYW55Q29sb3JzKXt2YXIgZT10aGlzLm1heENvbG9ycyxyPXRo aXMucGFsZXR0ZVRleHR1cmUsbj1NYXRoLmNlaWwoLjI1KnQubGVuZ3RoL2UpO2lmKG4+MSlm b3IodmFyIGk9LjI1Kih0PXQuc2xpY2UoKSkubGVuZ3RoJWU7aTxuKmU7aSsrKXQucHVzaCgw LDAsMCwwKTtyLmhlaWdodDxuJiZyLnJlc2l6ZShlLG4pLHIuc3ViaW1hZ2Uoe3dpZHRoOk1h dGgubWluKC4yNSp0Lmxlbmd0aCxlKSxoZWlnaHQ6bixkYXRhOnR9LDAsMCl9fSxiLnByb3Rv dHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ3JvdXBzLmZvckVhY2goKGZ1 bmN0aW9uKHQpe3Quc2l6ZUJ1ZmZlci5kZXN0cm95KCksdC5wb3NpdGlvbkJ1ZmZlci5kZXN0 cm95KCksdC5wb3NpdGlvbkZyYWN0QnVmZmVyLmRlc3Ryb3koKSx0LmNvbG9yQnVmZmVyLmRl c3Ryb3koKSx0LmFjdGl2YXRpb24uZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQu ZGVzdHJveSYmdC5kZXN0cm95KCl9KSksdC5zZWxlY3Rpb25CdWZmZXIuZGVzdHJveSgpLHQu ZWxlbWVudHMmJnQuZWxlbWVudHMuZGVzdHJveSgpfSkpLHRoaXMuZ3JvdXBzLmxlbmd0aD0w LHRoaXMucGFsZXR0ZVRleHR1cmUuZGVzdHJveSgpLHRoaXMubWFya2VyVGV4dHVyZXMuZm9y RWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQuZGVzdHJveSYmdC5kZXN0cm95KCl9KSks dGhpc307dmFyIF89dCgib2JqZWN0LWFzc2lnbiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUp e3ZhciByPW5ldyB4KHQsZSksbj1yLnJlbmRlci5iaW5kKHIpO3JldHVybiBfKG4se3JlbmRl cjpuLHVwZGF0ZTpyLnVwZGF0ZS5iaW5kKHIpLGRyYXc6ci5kcmF3LmJpbmQociksZGVzdHJv eTpyLmRlc3Ryb3kuYmluZChyKSxyZWdsOnIucmVnbCxnbDpyLmdsLGNhbnZhczpyLmdsLmNh bnZhcyxncm91cHM6ci5ncm91cHMsbWFya2VyczpyLm1hcmtlckNhY2hlLHBhbGV0dGU6ci5w YWxldHRlfSksbn19LHsiQHBsb3RseS9wb2ludC1jbHVzdGVyIjo1OSwiYXJyYXktYm91bmRz Ijo3MSwiY29sb3ItaWQiOjg3LCJjb2xvci1ub3JtYWxpemUiOjg5LCJmbGF0dGVuLXZlcnRl eC1kYXRhIjoxOTEsZ2xzbGlmeToyMjcsImlzLWlleHBsb3JlciI6MjMzLCJvYmplY3QtYXNz aWduIjoyNDcsInBhcnNlLXJlY3QiOjI0OSwicGljay1ieS1hbGlhcyI6MjUzLCJ0by1mbG9h dDMyIjozMTMsInVwZGF0ZS1kaWZmIjozMjl9XSwyODI6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgicmVnbC1zY2F0dGVyMmQiKSxpPXQoInBpY2stYnktYWxpYXMi KSxhPXQoImFycmF5LWJvdW5kcyIpLG89dCgicmFmIikscz10KCJhcnJheS1yYW5nZSIpLGw9 dCgicGFyc2UtcmVjdCIpLGM9dCgiZmxhdHRlbi12ZXJ0ZXgtZGF0YSIpO2Z1bmN0aW9uIHUo dCxlKXtpZighKHRoaXMgaW5zdGFuY2VvZiB1KSlyZXR1cm4gbmV3IHUodCxlKTt0aGlzLnRy YWNlcz1bXSx0aGlzLnBhc3Nlcz17fSx0aGlzLnJlZ2w9dCx0aGlzLnNjYXR0ZXI9bih0KSx0 aGlzLmNhbnZhcz10aGlzLnNjYXR0ZXIuY2FudmFzfWZ1bmN0aW9uIGYodCxlLHIpe3JldHVy bihudWxsIT10LmlkP3QuaWQ6dCk8PDE2fCgyNTUmZSk8PDh8MjU1JnJ9ZnVuY3Rpb24gaCh0 LGUscil7dmFyIG4saSxhLG8scz10W2VdLGw9dFtyXTtyZXR1cm4gcy5sZW5ndGg+Mj8oc1sw XSxzWzJdLG49c1sxXSxpPXNbM10pOnMubGVuZ3RoPyhuPXNbMF0saT1zWzFdKToocy54LG49 cy55LHMueCtzLndpZHRoLGk9cy55K3MuaGVpZ2h0KSxsLmxlbmd0aD4yPyhhPWxbMF0sbz1s WzJdLGxbMV0sbFszXSk6bC5sZW5ndGg/KGE9bFswXSxvPWxbMV0pOihhPWwueCxsLnksbz1s LngrbC53aWR0aCxsLnkrbC5oZWlnaHQpLFthLG4sbyxpXX1mdW5jdGlvbiBwKHQpe2lmKCJu dW1iZXIiPT10eXBlb2YgdClyZXR1cm5bdCx0LHQsdF07aWYoMj09PXQubGVuZ3RoKXJldHVy blt0WzBdLHRbMV0sdFswXSx0WzFdXTt2YXIgZT1sKHQpO3JldHVybltlLngsZS55LGUueCtl LndpZHRoLGUueStlLmhlaWdodF19ZS5leHBvcnRzPXUsdS5wcm90b3R5cGUucmVuZGVyPWZ1 bmN0aW9uKCl7Zm9yKHZhciB0LGU9dGhpcyxyPVtdLG49YXJndW1lbnRzLmxlbmd0aDtuLS07 KXJbbl09YXJndW1lbnRzW25dO3JldHVybiByLmxlbmd0aCYmKHQ9dGhpcykudXBkYXRlLmFw cGx5KHQsciksdGhpcy5yZWdsLmF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyP3Ro aXMuZHJhdygpOih0aGlzLmRpcnR5P251bGw9PXRoaXMucGxhbm5lZCYmKHRoaXMucGxhbm5l ZD1vKChmdW5jdGlvbigpe2UuZHJhdygpLGUuZGlydHk9ITAsZS5wbGFubmVkPW51bGx9KSkp Oih0aGlzLmRyYXcoKSx0aGlzLmRpcnR5PSEwLG8oKGZ1bmN0aW9uKCl7ZS5kaXJ0eT0hMX0p KSksdGhpcyl9LHUucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbigpe2Zvcih2YXIgdCxlPVtd LHI9YXJndW1lbnRzLmxlbmd0aDtyLS07KWVbcl09YXJndW1lbnRzW3JdO2lmKGUubGVuZ3Ro KXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl0aGlzLnVwZGF0ZUl0ZW0obixlW25dKTt0 aGlzLnRyYWNlcz10aGlzLnRyYWNlcy5maWx0ZXIoQm9vbGVhbik7Zm9yKHZhciBpPVtdLGE9 MCxvPTA7bzx0aGlzLnRyYWNlcy5sZW5ndGg7bysrKXtmb3IodmFyIHM9dGhpcy50cmFjZXNb b10sbD10aGlzLnRyYWNlc1tvXS5wYXNzZXMsYz0wO2M8bC5sZW5ndGg7YysrKWkucHVzaCh0 aGlzLnBhc3Nlc1tsW2NdXSk7cy5wYXNzT2Zmc2V0PWEsYSs9cy5wYXNzZXMubGVuZ3RofXJl dHVybih0PXRoaXMuc2NhdHRlcikudXBkYXRlLmFwcGx5KHQsaSksdGhpc319LHUucHJvdG90 eXBlLnVwZGF0ZUl0ZW09ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLnJlZ2w7aWYobnVsbD09 PWUpcmV0dXJuIHRoaXMudHJhY2VzW3RdPW51bGwsdGhpcztpZighZSlyZXR1cm4gdGhpczt2 YXIgbixvPWkoZSx7ZGF0YToiZGF0YSBpdGVtcyBjb2x1bW5zIHJvd3MgdmFsdWVzIGRpbWVu c2lvbnMgc2FtcGxlcyB4IixzbmFwOiJzbmFwIGNsdXN0ZXIiLHNpemU6InNpemVzIHNpemUg cmFkaXVzIixjb2xvcjoiY29sb3JzIGNvbG9yIGZpbGwgZmlsbC1jb2xvciBmaWxsQ29sb3Ii LG9wYWNpdHk6Im9wYWNpdHkgYWxwaGEgdHJhbnNwYXJlbmN5IG9wYXF1ZSIsYm9yZGVyU2l6 ZToiYm9yZGVyU2l6ZXMgYm9yZGVyU2l6ZSBib3JkZXItc2l6ZSBib3JkZXJzaXplIGJvcmRl cldpZHRoIGJvcmRlcldpZHRocyBib3JkZXItd2lkdGggYm9yZGVyd2lkdGggc3Ryb2tlLXdp ZHRoIHN0cm9rZVdpZHRoIHN0cm9rZXdpZHRoIG91dGxpbmUiLGJvcmRlckNvbG9yOiJib3Jk ZXJDb2xvcnMgYm9yZGVyQ29sb3IgYm9yZGVyY29sb3Igc3Ryb2tlIHN0cm9rZS1jb2xvciBz dHJva2VDb2xvciIsbWFya2VyOiJtYXJrZXJzIG1hcmtlciBzaGFwZSIscmFuZ2U6InJhbmdl IHJhbmdlcyBkYXRhYm94IGRhdGFCb3giLHZpZXdwb3J0OiJ2aWV3cG9ydCB2aWV3Qm94IHZp ZXdib3giLGRvbWFpbjoiZG9tYWluIGRvbWFpbnMgYXJlYSBhcmVhcyIscGFkZGluZzoicGFk IHBhZGRpbmcgcGFkZGluZ3MgcGFkcyBtYXJnaW4gbWFyZ2lucyIsdHJhbnNwb3NlOiJ0cmFu c3Bvc2UgdHJhbnNwb3NlZCIsZGlhZ29uYWw6ImRpYWdvbmFsIGRpYWcgc2hvd0RpYWdvbmFs Iix1cHBlcjoidXBwZXIgdXAgdG9wIHVwcGVyaGFsZiB1cHBlckhhbGYgc2hvd3VwcGVyaGFs ZiBzaG93VXBwZXIgc2hvd1VwcGVySGFsZiIsbG93ZXI6Imxvd2VyIGxvdyBib3R0b20gbG93 ZXJoYWxmIGxvd2VySGFsZiBzaG93bG93ZXJoYWxmIHNob3dMb3dlckhhbGYgc2hvd0xvd2Vy In0pLHM9dGhpcy50cmFjZXNbdF18fCh0aGlzLnRyYWNlc1t0XT17aWQ6dCxidWZmZXI6ci5i dWZmZXIoe3VzYWdlOiJkeW5hbWljIix0eXBlOiJmbG9hdCIsZGF0YTpuZXcgVWludDhBcnJh eX0pLGNvbG9yOiJibGFjayIsbWFya2VyOm51bGwsc2l6ZToxMixib3JkZXJDb2xvcjoidHJh bnNwYXJlbnQiLGJvcmRlclNpemU6MSx2aWV3cG9ydDpsKFtyLl9nbC5kcmF3aW5nQnVmZmVy V2lkdGgsci5fZ2wuZHJhd2luZ0J1ZmZlckhlaWdodF0pLHBhZGRpbmc6WzAsMCwwLDBdLG9w YWNpdHk6MSxkaWFnb25hbDohMCx1cHBlcjohMCxsb3dlcjohMH0pO2lmKG51bGwhPW8uY29s b3ImJihzLmNvbG9yPW8uY29sb3IpLG51bGwhPW8uc2l6ZSYmKHMuc2l6ZT1vLnNpemUpLG51 bGwhPW8ubWFya2VyJiYocy5tYXJrZXI9by5tYXJrZXIpLG51bGwhPW8uYm9yZGVyQ29sb3Im JihzLmJvcmRlckNvbG9yPW8uYm9yZGVyQ29sb3IpLG51bGwhPW8uYm9yZGVyU2l6ZSYmKHMu Ym9yZGVyU2l6ZT1vLmJvcmRlclNpemUpLG51bGwhPW8ub3BhY2l0eSYmKHMub3BhY2l0eT1v Lm9wYWNpdHkpLG8udmlld3BvcnQmJihzLnZpZXdwb3J0PWwoby52aWV3cG9ydCkpLG51bGwh PW8uZGlhZ29uYWwmJihzLmRpYWdvbmFsPW8uZGlhZ29uYWwpLG51bGwhPW8udXBwZXImJihz LnVwcGVyPW8udXBwZXIpLG51bGwhPW8ubG93ZXImJihzLmxvd2VyPW8ubG93ZXIpLG8uZGF0 YSl7cy5idWZmZXIoYyhvLmRhdGEpKSxzLmNvbHVtbnM9by5kYXRhLmxlbmd0aCxzLmNvdW50 PW8uZGF0YVswXS5sZW5ndGgscy5ib3VuZHM9W107Zm9yKHZhciB1PTA7dTxzLmNvbHVtbnM7 dSsrKXMuYm91bmRzW3VdPWEoby5kYXRhW3VdLDEpfW8ucmFuZ2UmJihzLnJhbmdlPW8ucmFu Z2Usbj1zLnJhbmdlJiYibnVtYmVyIiE9dHlwZW9mIHMucmFuZ2VbMF0pLG8uZG9tYWluJiYo cy5kb21haW49by5kb21haW4pO3ZhciBkPSExO251bGwhPW8ucGFkZGluZyYmKEFycmF5Lmlz QXJyYXkoby5wYWRkaW5nKSYmby5wYWRkaW5nLmxlbmd0aD09PXMuY29sdW1ucyYmIm51bWJl ciI9PXR5cGVvZiBvLnBhZGRpbmdbby5wYWRkaW5nLmxlbmd0aC0xXT8ocy5wYWRkaW5nPW8u cGFkZGluZy5tYXAocCksZD0hMCk6cy5wYWRkaW5nPXAoby5wYWRkaW5nKSk7dmFyIG09cy5j b2x1bW5zLGc9cy5jb3VudCx2PXMudmlld3BvcnQud2lkdGgseT1zLnZpZXdwb3J0LmhlaWdo dCx4PXMudmlld3BvcnQueCxiPXMudmlld3BvcnQueSxfPXYvbSx3PXkvbTtzLnBhc3Nlcz1b XTtmb3IodmFyIFQ9MDtUPG07VCsrKWZvcih2YXIgaz0wO2s8bTtrKyspaWYoKHMuZGlhZ29u YWx8fGshPT1UKSYmKHMudXBwZXJ8fCEoVD5rKSkmJihzLmxvd2VyfHwhKFQ8aykpKXt2YXIg QT1mKHMuaWQsVCxrKSxNPXRoaXMucGFzc2VzW0FdfHwodGhpcy5wYXNzZXNbQV09e30pO2lm KG8uZGF0YSYmKG8udHJhbnNwb3NlP00ucG9zaXRpb25zPXt4OntidWZmZXI6cy5idWZmZXIs b2Zmc2V0OmssY291bnQ6ZyxzdHJpZGU6bX0seTp7YnVmZmVyOnMuYnVmZmVyLG9mZnNldDpU LGNvdW50Omcsc3RyaWRlOm19fTpNLnBvc2l0aW9ucz17eDp7YnVmZmVyOnMuYnVmZmVyLG9m ZnNldDprKmcsY291bnQ6Z30seTp7YnVmZmVyOnMuYnVmZmVyLG9mZnNldDpUKmcsY291bnQ6 Z319LE0uYm91bmRzPWgocy5ib3VuZHMsVCxrKSksby5kb21haW58fG8udmlld3BvcnR8fG8u ZGF0YSl7dmFyIFM9ZD9oKHMucGFkZGluZyxULGspOnMucGFkZGluZztpZihzLmRvbWFpbil7 dmFyIEU9aChzLmRvbWFpbixULGspLEw9RVswXSxDPUVbMV0sUD1FWzJdLEk9RVszXTtNLnZp ZXdwb3J0PVt4K0wqditTWzBdLGIrQyp5K1NbMV0seCtQKnYtU1syXSxiK0kqeS1TWzNdXX1l bHNlIE0udmlld3BvcnQ9W3graypfK18qU1swXSxiK1Qqdyt3KlNbMV0seCsoaysxKSpfLV8q U1syXSxiKyhUKzEpKnctdypTWzNdXX1vLmNvbG9yJiYoTS5jb2xvcj1zLmNvbG9yKSxvLnNp emUmJihNLnNpemU9cy5zaXplKSxvLm1hcmtlciYmKE0ubWFya2VyPXMubWFya2VyKSxvLmJv cmRlclNpemUmJihNLmJvcmRlclNpemU9cy5ib3JkZXJTaXplKSxvLmJvcmRlckNvbG9yJiYo TS5ib3JkZXJDb2xvcj1zLmJvcmRlckNvbG9yKSxvLm9wYWNpdHkmJihNLm9wYWNpdHk9cy5v cGFjaXR5KSxvLnJhbmdlJiYoTS5yYW5nZT1uP2gocy5yYW5nZSxULGspOnMucmFuZ2V8fE0u Ym91bmRzKSxzLnBhc3Nlcy5wdXNoKEEpfXJldHVybiB0aGlzfSx1LnByb3RvdHlwZS5kcmF3 PWZ1bmN0aW9uKCl7Zm9yKHZhciB0LGU9W10scj1hcmd1bWVudHMubGVuZ3RoO3ItLTspZVty XT1hcmd1bWVudHNbcl07aWYoZS5sZW5ndGgpe2Zvcih2YXIgbj1bXSxpPTA7aTxlLmxlbmd0 aDtpKyspaWYoIm51bWJlciI9PXR5cGVvZiBlW2ldKXt2YXIgYT10aGlzLnRyYWNlc1tlW2ld XSxvPWEucGFzc2VzLGw9YS5wYXNzT2Zmc2V0O24ucHVzaC5hcHBseShuLHMobCxsK28ubGVu Z3RoKSl9ZWxzZSBpZihlW2ldLmxlbmd0aCl7dmFyIGM9ZVtpXSx1PXRoaXMudHJhY2VzW2ld LGY9dS5wYXNzZXMsaD11LnBhc3NPZmZzZXQ7Zj1mLm1hcCgoZnVuY3Rpb24odCxlKXtuW2gr ZV09Y30pKX0odD10aGlzLnNjYXR0ZXIpLmRyYXcuYXBwbHkodCxuKX1lbHNlIHRoaXMuc2Nh dHRlci5kcmF3KCk7cmV0dXJuIHRoaXN9LHUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24o KXtyZXR1cm4gdGhpcy50cmFjZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5idWZmZXImJnQu YnVmZmVyLmRlc3Ryb3kmJnQuYnVmZmVyLmRlc3Ryb3koKX0pKSx0aGlzLnRyYWNlcz1udWxs LHRoaXMucGFzc2VzPW51bGwsdGhpcy5zY2F0dGVyLmRlc3Ryb3koKSx0aGlzfX0seyJhcnJh eS1ib3VuZHMiOjcxLCJhcnJheS1yYW5nZSI6NzQsImZsYXR0ZW4tdmVydGV4LWRhdGEiOjE5 MSwicGFyc2UtcmVjdCI6MjQ5LCJwaWNrLWJ5LWFsaWFzIjoyNTMscmFmOjI3OCwicmVnbC1z Y2F0dGVyMmQiOjI4MX1dLDI4MzpbZnVuY3Rpb24odCxlLHIpeyFmdW5jdGlvbih0LG4peyJv YmplY3QiPT10eXBlb2YgciYmdm9pZCAwIT09ZT9lLmV4cG9ydHM9bigpOnQuY3JlYXRlUkVH TD1uKCl9KHRoaXMsKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuaWQ9cSsrLHRo aXMudHlwZT10LHRoaXMuZGF0YT1lfWZ1bmN0aW9uIGUodCl7cmV0dXJuIlsiK2Z1bmN0aW9u IHQoZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybltdO3ZhciByPWUuY2hhckF0KDApLG49ZS5j aGFyQXQoZS5sZW5ndGgtMSk7aWYoMTxlLmxlbmd0aCYmcj09PW4mJignIic9PT1yfHwiJyI9 PT1yKSlyZXR1cm5bJyInK2Uuc3Vic3RyKDEsZS5sZW5ndGgtMikucmVwbGFjZSgvXFwvZywi XFxcXCIpLnJlcGxhY2UoLyIvZywnXFwiJykrJyInXTtpZihyPS9cWyhmYWxzZXx0cnVlfG51 bGx8XGQrfCdbXiddKid8IlteIl0qIilcXS8uZXhlYyhlKSlyZXR1cm4gdChlLnN1YnN0cigw LHIuaW5kZXgpKS5jb25jYXQodChyWzFdKSkuY29uY2F0KHQoZS5zdWJzdHIoci5pbmRleCty WzBdLmxlbmd0aCkpKTtpZigxPT09KHI9ZS5zcGxpdCgiLiIpKS5sZW5ndGgpcmV0dXJuWyci JytlLnJlcGxhY2UoL1xcL2csIlxcXFwiKS5yZXBsYWNlKC8iL2csJ1xcIicpKyciJ107Zm9y KGU9W10sbj0wO248ci5sZW5ndGg7KytuKWU9ZS5jb25jYXQodChyW25dKSk7cmV0dXJuIGV9 KHQpLmpvaW4oIl1bIikrIl0ifWZ1bmN0aW9uIHIodCl7cmV0dXJuInN0cmluZyI9PXR5cGVv ZiB0P3Quc3BsaXQoKTp0fWZ1bmN0aW9uIG4odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0 P2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCk6dH1mdW5jdGlvbiBpKHQpe3ZhciBlLGksYSxv LHM9dHx8e307dD17fTt2YXIgbD1bXSxjPVtdLHU9InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5k b3c/MTp3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyxmPSExLGg9e30scD1mdW5jdGlvbih0KXt9 LGQ9ZnVuY3Rpb24oKXt9O2lmKCJzdHJpbmciPT10eXBlb2Ygcz9lPWRvY3VtZW50LnF1ZXJ5 U2VsZWN0b3Iocyk6Im9iamVjdCI9PXR5cGVvZiBzJiYoInN0cmluZyI9PXR5cGVvZiBzLm5v ZGVOYW1lJiYiZnVuY3Rpb24iPT10eXBlb2Ygcy5hcHBlbmRDaGlsZCYmImZ1bmN0aW9uIj09 dHlwZW9mIHMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0P2U9czoiZnVuY3Rpb24iPT10eXBlb2Yg cy5kcmF3QXJyYXlzfHwiZnVuY3Rpb24iPT10eXBlb2Ygcy5kcmF3RWxlbWVudHM/YT0obz1z KS5jYW52YXM6KCJnbCJpbiBzP289cy5nbDoiY2FudmFzImluIHM/YT1uKHMuY2FudmFzKToi Y29udGFpbmVyImluIHMmJihpPW4ocy5jb250YWluZXIpKSwiYXR0cmlidXRlcyJpbiBzJiYo dD1zLmF0dHJpYnV0ZXMpLCJleHRlbnNpb25zImluIHMmJihsPXIocy5leHRlbnNpb25zKSks Im9wdGlvbmFsRXh0ZW5zaW9ucyJpbiBzJiYoYz1yKHMub3B0aW9uYWxFeHRlbnNpb25zKSks Im9uRG9uZSJpbiBzJiYocD1zLm9uRG9uZSksInByb2ZpbGUiaW4gcyYmKGY9ISFzLnByb2Zp bGUpLCJwaXhlbFJhdGlvImluIHMmJih1PStzLnBpeGVsUmF0aW8pLCJjYWNoZWRDb2RlImlu IHMmJihoPXMuY2FjaGVkQ29kZSkpKSxlJiYoImNhbnZhcyI9PT1lLm5vZGVOYW1lLnRvTG93 ZXJDYXNlKCk/YT1lOmk9ZSksIW8pe2lmKCFhKXtpZighKGU9ZnVuY3Rpb24odCxlLHIpe2Z1 bmN0aW9uIG4oKXt2YXIgZT13aW5kb3cuaW5uZXJXaWR0aCxuPXdpbmRvdy5pbm5lckhlaWdo dDt0IT09ZG9jdW1lbnQuYm9keSYmKGU9KG49YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSku cmlnaHQtbi5sZWZ0LG49bi5ib3R0b20tbi50b3ApLGEud2lkdGg9ciplLGEuaGVpZ2h0PXIq bn12YXIgaSxhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO3JldHVybiBIKGEu c3R5bGUse2JvcmRlcjowLG1hcmdpbjowLHBhZGRpbmc6MCx0b3A6MCxsZWZ0OjAsd2lkdGg6 IjEwMCUiLGhlaWdodDoiMTAwJSJ9KSx0LmFwcGVuZENoaWxkKGEpLHQ9PT1kb2N1bWVudC5i b2R5JiYoYS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLEgodC5zdHlsZSx7bWFyZ2luOjAs cGFkZGluZzowfSkpLHQhPT1kb2N1bWVudC5ib2R5JiYiZnVuY3Rpb24iPT10eXBlb2YgUmVz aXplT2JzZXJ2ZXI/KGk9bmV3IFJlc2l6ZU9ic2VydmVyKChmdW5jdGlvbigpe3NldFRpbWVv dXQobil9KSkpLm9ic2VydmUodCk6d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIs biwhMSksbigpLHtjYW52YXM6YSxvbkRlc3Ryb3k6ZnVuY3Rpb24oKXtpP2kuZGlzY29ubmVj dCgpOndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLG4pLHQucmVtb3ZlQ2hp bGQoYSl9fX0oaXx8ZG9jdW1lbnQuYm9keSwwLHUpKSlyZXR1cm4gbnVsbDthPWUuY2FudmFz LGQ9ZS5vbkRlc3Ryb3l9dm9pZCAwPT09dC5wcmVtdWx0aXBsaWVkQWxwaGEmJih0LnByZW11 bHRpcGxpZWRBbHBoYT0hMCksbz1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHIocil7dHJ5e3Jl dHVybiB0LmdldENvbnRleHQocixlKX1jYXRjaCh0KXtyZXR1cm4gbnVsbH19cmV0dXJuIHIo IndlYmdsIil8fHIoImV4cGVyaW1lbnRhbC13ZWJnbCIpfHxyKCJ3ZWJnbC1leHBlcmltZW50 YWwiKX0oYSx0KX1yZXR1cm4gbz97Z2w6byxjYW52YXM6YSxjb250YWluZXI6aSxleHRlbnNp b25zOmwsb3B0aW9uYWxFeHRlbnNpb25zOmMscGl4ZWxSYXRpbzp1LHByb2ZpbGU6ZixjYWNo ZWRDb2RlOmgsb25Eb25lOnAsb25EZXN0cm95OmR9OihkKCkscCgid2ViZ2wgbm90IHN1cHBv cnRlZCwgdHJ5IHVwZ3JhZGluZyB5b3VyIGJyb3dzZXIgb3IgZ3JhcGhpY3MgZHJpdmVycyBo dHRwOi8vZ2V0LndlYmdsLm9yZyIpLG51bGwpfWZ1bmN0aW9uIGEodCxlKXtmb3IodmFyIHI9 QXJyYXkodCksbj0wO248dDsrK24pcltuXT1lKG4pO3JldHVybiByfWZ1bmN0aW9uIG8odCl7 dmFyIGUscjtyZXR1cm4gZT0oNjU1MzU8dCk8PDQsZXw9cj0oMjU1PCh0Pj4+PWUpKTw8Mywo ZXw9cj0oMTU8KHQ+Pj49cikpPDwyKXwocj0oMzwodD4+Pj1yKSk8PDEpfHQ+Pj5yPj4xfWZ1 bmN0aW9uIHMoKXtmdW5jdGlvbiB0KHQpe3Q6e2Zvcih2YXIgZT0xNjsyNjg0MzU0NTY+PWU7 ZSo9MTYpaWYodDw9ZSl7dD1lO2JyZWFrIHR9dD0wfXJldHVybiAwPChlPXJbbyh0KT4+Ml0p Lmxlbmd0aD9lLnBvcCgpOm5ldyBBcnJheUJ1ZmZlcih0KX1mdW5jdGlvbiBlKHQpe3Jbbyh0 LmJ5dGVMZW5ndGgpPj4yXS5wdXNoKHQpfXZhciByPWEoOCwoZnVuY3Rpb24oKXtyZXR1cm5b XX0pKTtyZXR1cm57YWxsb2M6dCxmcmVlOmUsYWxsb2NUeXBlOmZ1bmN0aW9uKGUscil7dmFy IG49bnVsbDtzd2l0Y2goZSl7Y2FzZSA1MTIwOm49bmV3IEludDhBcnJheSh0KHIpLDAscik7 YnJlYWs7Y2FzZSA1MTIxOm49bmV3IFVpbnQ4QXJyYXkodChyKSwwLHIpO2JyZWFrO2Nhc2Ug NTEyMjpuPW5ldyBJbnQxNkFycmF5KHQoMipyKSwwLHIpO2JyZWFrO2Nhc2UgNTEyMzpuPW5l dyBVaW50MTZBcnJheSh0KDIqciksMCxyKTticmVhaztjYXNlIDUxMjQ6bj1uZXcgSW50MzJB cnJheSh0KDQqciksMCxyKTticmVhaztjYXNlIDUxMjU6bj1uZXcgVWludDMyQXJyYXkodCg0 KnIpLDAscik7YnJlYWs7Y2FzZSA1MTI2Om49bmV3IEZsb2F0MzJBcnJheSh0KDQqciksMCxy KTticmVhaztkZWZhdWx0OnJldHVybiBudWxsfXJldHVybiBuLmxlbmd0aCE9PXI/bi5zdWJh cnJheSgwLHIpOm59LGZyZWVUeXBlOmZ1bmN0aW9uKHQpe2UodC5idWZmZXIpfX19ZnVuY3Rp b24gbCh0KXtyZXR1cm4hIXQmJiJvYmplY3QiPT10eXBlb2YgdCYmQXJyYXkuaXNBcnJheSh0 LnNoYXBlKSYmQXJyYXkuaXNBcnJheSh0LnN0cmlkZSkmJiJudW1iZXIiPT10eXBlb2YgdC5v ZmZzZXQmJnQuc2hhcGUubGVuZ3RoPT09dC5zdHJpZGUubGVuZ3RoJiYoQXJyYXkuaXNBcnJh eSh0LmRhdGEpfHxKKHQuZGF0YSkpfWZ1bmN0aW9uIGModCxlLHIsbixpLGEpe2Zvcih2YXIg bz0wO288ZTsrK28pZm9yKHZhciBzPXRbb10sbD0wO2w8cjsrK2wpZm9yKHZhciBjPXNbbF0s dT0wO3U8bjsrK3UpaVthKytdPWNbdV19ZnVuY3Rpb24gdSh0KXtyZXR1cm4gMHwkW09iamVj dC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KV19ZnVuY3Rpb24gZih0LGUpe2Zvcih2YXIg cj0wO3I8ZS5sZW5ndGg7KytyKXRbcl09ZVtyXX1mdW5jdGlvbiBoKHQsZSxyLG4saSxhLG8p e2Zvcih2YXIgcz0wLGw9MDtsPHI7KytsKWZvcih2YXIgYz0wO2M8bjsrK2MpdFtzKytdPWVb aSpsK2EqYytvXX1mdW5jdGlvbiBwKHQsZSxyLG4pe2Z1bmN0aW9uIGkoZSl7dGhpcy5pZD1j KyssdGhpcy5idWZmZXI9dC5jcmVhdGVCdWZmZXIoKSx0aGlzLnR5cGU9ZSx0aGlzLnVzYWdl PTM1MDQ0LHRoaXMuYnl0ZUxlbmd0aD0wLHRoaXMuZGltZW5zaW9uPTEsdGhpcy5kdHlwZT01 MTIxLHRoaXMucGVyc2lzdGVudERhdGE9bnVsbCxyLnByb2ZpbGUmJih0aGlzLnN0YXRzPXtz aXplOjB9KX1mdW5jdGlvbiBhKGUscixuKXtlLmJ5dGVMZW5ndGg9ci5ieXRlTGVuZ3RoLHQu YnVmZmVyRGF0YShlLnR5cGUscixuKX1mdW5jdGlvbiBvKHQsZSxyLG4saSxvKXtpZih0LnVz YWdlPXIsQXJyYXkuaXNBcnJheShlKSl7aWYodC5kdHlwZT1ufHw1MTI2LDA8ZS5sZW5ndGgp aWYoQXJyYXkuaXNBcnJheShlWzBdKSl7aT1udChlKTtmb3IodmFyIHM9bj0xO3M8aS5sZW5n dGg7KytzKW4qPWlbc107dC5kaW1lbnNpb249bixhKHQsZT1ydChlLGksdC5kdHlwZSksciks bz90LnBlcnNpc3RlbnREYXRhPWU6WC5mcmVlVHlwZShlKX1lbHNlIm51bWJlciI9PXR5cGVv ZiBlWzBdPyh0LmRpbWVuc2lvbj1pLGYoaT1YLmFsbG9jVHlwZSh0LmR0eXBlLGUubGVuZ3Ro KSxlKSxhKHQsaSxyKSxvP3QucGVyc2lzdGVudERhdGE9aTpYLmZyZWVUeXBlKGkpKTpKKGVb MF0pJiYodC5kaW1lbnNpb249ZVswXS5sZW5ndGgsdC5kdHlwZT1ufHx1KGVbMF0pfHw1MTI2 LGEodCxlPXJ0KGUsW2UubGVuZ3RoLGVbMF0ubGVuZ3RoXSx0LmR0eXBlKSxyKSxvP3QucGVy c2lzdGVudERhdGE9ZTpYLmZyZWVUeXBlKGUpKX1lbHNlIGlmKEooZSkpdC5kdHlwZT1ufHx1 KGUpLHQuZGltZW5zaW9uPWksYSh0LGUsciksbyYmKHQucGVyc2lzdGVudERhdGE9bmV3IFVp bnQ4QXJyYXkobmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpKSk7ZWxzZSBpZihsKGUpKXtpPWUu c2hhcGU7dmFyIGM9ZS5zdHJpZGUscD0ocz1lLm9mZnNldCwwKSxkPTAsbT0wLGc9MDsxPT09 aS5sZW5ndGg/KHA9aVswXSxkPTEsbT1jWzBdLGc9MCk6Mj09PWkubGVuZ3RoJiYocD1pWzBd LGQ9aVsxXSxtPWNbMF0sZz1jWzFdKSx0LmR0eXBlPW58fHUoZS5kYXRhKXx8NTEyNix0LmRp bWVuc2lvbj1kLGgoaT1YLmFsbG9jVHlwZSh0LmR0eXBlLHAqZCksZS5kYXRhLHAsZCxtLGcs cyksYSh0LGksciksbz90LnBlcnNpc3RlbnREYXRhPWk6WC5mcmVlVHlwZShpKX1lbHNlIGUg aW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmKHQuZHR5cGU9NTEyMSx0LmRpbWVuc2lvbj1pLGEo dCxlLHIpLG8mJih0LnBlcnNpc3RlbnREYXRhPW5ldyBVaW50OEFycmF5KG5ldyBVaW50OEFy cmF5KGUpKSkpfWZ1bmN0aW9uIHMocil7ZS5idWZmZXJDb3VudC0tLG4ociksdC5kZWxldGVC dWZmZXIoci5idWZmZXIpLHIuYnVmZmVyPW51bGwsZGVsZXRlIHBbci5pZF19dmFyIGM9MCxw PXt9O2kucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oKXt0LmJpbmRCdWZmZXIodGhpcy50eXBl LHRoaXMuYnVmZmVyKX0saS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3ModGhpcyl9 O3ZhciBkPVtdO3JldHVybiByLnByb2ZpbGUmJihlLmdldFRvdGFsQnVmZmVyU2l6ZT1mdW5j dGlvbigpe3ZhciB0PTA7cmV0dXJuIE9iamVjdC5rZXlzKHApLmZvckVhY2goKGZ1bmN0aW9u KGUpe3QrPXBbZV0uc3RhdHMuc2l6ZX0pKSx0fSkse2NyZWF0ZTpmdW5jdGlvbihuLGEsYyxk KXtmdW5jdGlvbiBtKGUpe3ZhciBuPTM1MDQ0LGk9bnVsbCxhPTAscz0wLGM9MTtyZXR1cm4g QXJyYXkuaXNBcnJheShlKXx8SihlKXx8bChlKXx8ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVy P2k9ZToibnVtYmVyIj09dHlwZW9mIGU/YT0wfGU6ZSYmKCJkYXRhImluIGUmJihpPWUuZGF0 YSksInVzYWdlImluIGUmJihuPWV0W2UudXNhZ2VdKSwidHlwZSJpbiBlJiYocz10dFtlLnR5 cGVdKSwiZGltZW5zaW9uImluIGUmJihjPTB8ZS5kaW1lbnNpb24pLCJsZW5ndGgiaW4gZSYm KGE9MHxlLmxlbmd0aCkpLGcuYmluZCgpLGk/byhnLGksbixzLGMsZCk6KGEmJnQuYnVmZmVy RGF0YShnLnR5cGUsYSxuKSxnLmR0eXBlPXN8fDUxMjEsZy51c2FnZT1uLGcuZGltZW5zaW9u PWMsZy5ieXRlTGVuZ3RoPWEpLHIucHJvZmlsZSYmKGcuc3RhdHMuc2l6ZT1nLmJ5dGVMZW5n dGgqaXRbZy5kdHlwZV0pLG19ZS5idWZmZXJDb3VudCsrO3ZhciBnPW5ldyBpKGEpO3JldHVy biBwW2cuaWRdPWcsY3x8bShuKSxtLl9yZWdsVHlwZT0iYnVmZmVyIixtLl9idWZmZXI9Zyxt LnN1YmRhdGE9ZnVuY3Rpb24oZSxyKXt2YXIgbixpPTB8KHJ8fDApO2lmKGcuYmluZCgpLEoo ZSl8fGUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcil0LmJ1ZmZlclN1YkRhdGEoZy50eXBlLGks ZSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKXtpZigwPGUubGVuZ3RoKWlmKCJudW1iZXIi PT10eXBlb2YgZVswXSl7dmFyIGE9WC5hbGxvY1R5cGUoZy5kdHlwZSxlLmxlbmd0aCk7Zihh LGUpLHQuYnVmZmVyU3ViRGF0YShnLnR5cGUsaSxhKSxYLmZyZWVUeXBlKGEpfWVsc2UoQXJy YXkuaXNBcnJheShlWzBdKXx8SihlWzBdKSkmJihuPW50KGUpLGE9cnQoZSxuLGcuZHR5cGUp LHQuYnVmZmVyU3ViRGF0YShnLnR5cGUsaSxhKSxYLmZyZWVUeXBlKGEpKX1lbHNlIGlmKGwo ZSkpe249ZS5zaGFwZTt2YXIgbz1lLnN0cmlkZSxzPWE9MCxjPTAscD0wOzE9PT1uLmxlbmd0 aD8oYT1uWzBdLHM9MSxjPW9bMF0scD0wKToyPT09bi5sZW5ndGgmJihhPW5bMF0scz1uWzFd LGM9b1swXSxwPW9bMV0pLG49QXJyYXkuaXNBcnJheShlLmRhdGEpP2cuZHR5cGU6dShlLmRh dGEpLGgobj1YLmFsbG9jVHlwZShuLGEqcyksZS5kYXRhLGEscyxjLHAsZS5vZmZzZXQpLHQu YnVmZmVyU3ViRGF0YShnLnR5cGUsaSxuKSxYLmZyZWVUeXBlKG4pfXJldHVybiBtfSxyLnBy b2ZpbGUmJihtLnN0YXRzPWcuc3RhdHMpLG0uZGVzdHJveT1mdW5jdGlvbigpe3MoZyl9LG19 LGNyZWF0ZVN0cmVhbTpmdW5jdGlvbih0LGUpe3ZhciByPWQucG9wKCk7cmV0dXJuIHJ8fChy PW5ldyBpKHQpKSxyLmJpbmQoKSxvKHIsZSwzNTA0MCwwLDEsITEpLHJ9LGRlc3Ryb3lTdHJl YW06ZnVuY3Rpb24odCl7ZC5wdXNoKHQpfSxjbGVhcjpmdW5jdGlvbigpe0socCkuZm9yRWFj aChzKSxkLmZvckVhY2gocyl9LGdldEJ1ZmZlcjpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5f YnVmZmVyIGluc3RhbmNlb2YgaT90Ll9idWZmZXI6bnVsbH0scmVzdG9yZTpmdW5jdGlvbigp e0socCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5idWZmZXI9dC5jcmVhdGVCdWZmZXIoKSx0 LmJpbmRCdWZmZXIoZS50eXBlLGUuYnVmZmVyKSx0LmJ1ZmZlckRhdGEoZS50eXBlLGUucGVy c2lzdGVudERhdGF8fGUuYnl0ZUxlbmd0aCxlLnVzYWdlKX0pKX0sX2luaXRCdWZmZXI6b319 ZnVuY3Rpb24gZCh0LGUscixuKXtmdW5jdGlvbiBpKHQpe3RoaXMuaWQ9YysrLHNbdGhpcy5p ZF09dGhpcyx0aGlzLmJ1ZmZlcj10LHRoaXMucHJpbVR5cGU9NCx0aGlzLnR5cGU9dGhpcy52 ZXJ0Q291bnQ9MH1mdW5jdGlvbiBhKG4saSxhLG8scyxjLHUpe3ZhciBmO2lmKG4uYnVmZmVy LmJpbmQoKSxpPygoZj11KXx8SihpKSYmKCFsKGkpfHxKKGkuZGF0YSkpfHwoZj1lLm9lc19l bGVtZW50X2luZGV4X3VpbnQ/NTEyNTo1MTIzKSxyLl9pbml0QnVmZmVyKG4uYnVmZmVyLGks YSxmLDMpKToodC5idWZmZXJEYXRhKDM0OTYzLGMsYSksbi5idWZmZXIuZHR5cGU9Znx8NTEy MSxuLmJ1ZmZlci51c2FnZT1hLG4uYnVmZmVyLmRpbWVuc2lvbj0zLG4uYnVmZmVyLmJ5dGVM ZW5ndGg9YyksZj11LCF1KXtzd2l0Y2gobi5idWZmZXIuZHR5cGUpe2Nhc2UgNTEyMTpjYXNl IDUxMjA6Zj01MTIxO2JyZWFrO2Nhc2UgNTEyMzpjYXNlIDUxMjI6Zj01MTIzO2JyZWFrO2Nh c2UgNTEyNTpjYXNlIDUxMjQ6Zj01MTI1fW4uYnVmZmVyLmR0eXBlPWZ9bi50eXBlPWYsMD4o aT1zKSYmKGk9bi5idWZmZXIuYnl0ZUxlbmd0aCw1MTIzPT09Zj9pPj49MTo1MTI1PT09ZiYm KGk+Pj0yKSksbi52ZXJ0Q291bnQ9aSxpPW8sMD5vJiYoaT00LDE9PT0obz1uLmJ1ZmZlci5k aW1lbnNpb24pJiYoaT0wKSwyPT09byYmKGk9MSksMz09PW8mJihpPTQpKSxuLnByaW1UeXBl PWl9ZnVuY3Rpb24gbyh0KXtuLmVsZW1lbnRzQ291bnQtLSxkZWxldGUgc1t0LmlkXSx0LmJ1 ZmZlci5kZXN0cm95KCksdC5idWZmZXI9bnVsbH12YXIgcz17fSxjPTAsdT17dWludDg6NTEy MSx1aW50MTY6NTEyM307ZS5vZXNfZWxlbWVudF9pbmRleF91aW50JiYodS51aW50MzI9NTEy NSksaS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbigpe3RoaXMuYnVmZmVyLmJpbmQoKX07dmFy IGY9W107cmV0dXJue2NyZWF0ZTpmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHModCl7aWYodClp ZigibnVtYmVyIj09dHlwZW9mIHQpYyh0KSxmLnByaW1UeXBlPTQsZi52ZXJ0Q291bnQ9MHx0 LGYudHlwZT01MTIxO2Vsc2V7dmFyIGU9bnVsbCxyPTM1MDQ0LG49LTEsaT0tMSxvPTAsaD0w O0FycmF5LmlzQXJyYXkodCl8fEoodCl8fGwodCk/ZT10OigiZGF0YSJpbiB0JiYoZT10LmRh dGEpLCJ1c2FnZSJpbiB0JiYocj1ldFt0LnVzYWdlXSksInByaW1pdGl2ZSJpbiB0JiYobj1h dFt0LnByaW1pdGl2ZV0pLCJjb3VudCJpbiB0JiYoaT0wfHQuY291bnQpLCJ0eXBlImluIHQm JihoPXVbdC50eXBlXSksImxlbmd0aCJpbiB0P289MHx0Lmxlbmd0aDoobz1pLDUxMjM9PT1o fHw1MTIyPT09aD9vKj0yOjUxMjUhPT1oJiY1MTI0IT09aHx8KG8qPTQpKSksYShmLGUscixu LGksbyxoKX1lbHNlIGMoKSxmLnByaW1UeXBlPTQsZi52ZXJ0Q291bnQ9MCxmLnR5cGU9NTEy MTtyZXR1cm4gc312YXIgYz1yLmNyZWF0ZShudWxsLDM0OTYzLCEwKSxmPW5ldyBpKGMuX2J1 ZmZlcik7cmV0dXJuIG4uZWxlbWVudHNDb3VudCsrLHModCkscy5fcmVnbFR5cGU9ImVsZW1l bnRzIixzLl9lbGVtZW50cz1mLHMuc3ViZGF0YT1mdW5jdGlvbih0LGUpe3JldHVybiBjLnN1 YmRhdGEodCxlKSxzfSxzLmRlc3Ryb3k9ZnVuY3Rpb24oKXtvKGYpfSxzfSxjcmVhdGVTdHJl YW06ZnVuY3Rpb24odCl7dmFyIGU9Zi5wb3AoKTtyZXR1cm4gZXx8KGU9bmV3IGkoci5jcmVh dGUobnVsbCwzNDk2MywhMCwhMSkuX2J1ZmZlcikpLGEoZSx0LDM1MDQwLC0xLC0xLDAsMCks ZX0sZGVzdHJveVN0cmVhbTpmdW5jdGlvbih0KXtmLnB1c2godCl9LGdldEVsZW1lbnRzOmZ1 bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0Ll9lbGVtZW50cyBpbnN0 YW5jZW9mIGk/dC5fZWxlbWVudHM6bnVsbH0sY2xlYXI6ZnVuY3Rpb24oKXtLKHMpLmZvckVh Y2gobyl9fX1mdW5jdGlvbiBtKHQpe2Zvcih2YXIgZT1YLmFsbG9jVHlwZSg1MTIzLHQubGVu Z3RoKSxyPTA7cjx0Lmxlbmd0aDsrK3IpaWYoaXNOYU4odFtyXSkpZVtyXT02NTUzNTtlbHNl IGlmKDEvMD09PXRbcl0pZVtyXT0zMTc0NDtlbHNlIGlmKC0xLzA9PT10W3JdKWVbcl09NjQ1 MTI7ZWxzZXtvdFswXT10W3JdO3ZhciBuPShhPXN0WzBdKT4+PjMxPDwxNSxpPShhPDwxPj4+ MjQpLTEyNyxhPWE+PjEzJjEwMjM7ZVtyXT0tMjQ+aT9uOi0xND5pP24rKGErMTAyND4+LTE0 LWkpOjE1PGk/biszMTc0NDpuKyhpKzE1PDwxMCkrYX1yZXR1cm4gZX1mdW5jdGlvbiBnKHQp e3JldHVybiBBcnJheS5pc0FycmF5KHQpfHxKKHQpfWZ1bmN0aW9uIHYodCl7cmV0dXJuIltv YmplY3QgIit0KyJdIn1mdW5jdGlvbiB5KHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiYo MD09PXQubGVuZ3RofHwibnVtYmVyIj09dHlwZW9mIHRbMF0pfWZ1bmN0aW9uIHgodCl7cmV0 dXJuISghQXJyYXkuaXNBcnJheSh0KXx8MD09PXQubGVuZ3RofHwhZyh0WzBdKSl9ZnVuY3Rp b24gYih0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0 aW9uIF8odCl7aWYoIXQpcmV0dXJuITE7dmFyIGU9Yih0KTtyZXR1cm4gMDw9dnQuaW5kZXhP ZihlKXx8KHkodCl8fHgodCl8fGwodCkpfWZ1bmN0aW9uIHcodCxlKXszNjE5Mz09PXQudHlw ZT8odC5kYXRhPW0oZSksWC5mcmVlVHlwZShlKSk6dC5kYXRhPWV9ZnVuY3Rpb24gVCh0LGUs cixuLGksYSl7aWYodD12b2lkIDAhPT14dFt0XT94dFt0XTp1dFt0XSp5dFtlXSxhJiYodCo9 NiksaSl7Zm9yKG49MDsxPD1yOyluKz10KnIqcixyLz0yO3JldHVybiBufXJldHVybiB0KnIq bn1mdW5jdGlvbiBrKHQsZSxyLG4saSxhLG8pe2Z1bmN0aW9uIHMoKXt0aGlzLmZvcm1hdD10 aGlzLmludGVybmFsZm9ybWF0PTY0MDgsdGhpcy50eXBlPTUxMjEsdGhpcy5mbGlwWT10aGlz LnByZW11bHRpcGx5QWxwaGE9dGhpcy5jb21wcmVzc2VkPSExLHRoaXMudW5wYWNrQWxpZ25t ZW50PTEsdGhpcy5jb2xvclNwYWNlPTM3NDQ0LHRoaXMuY2hhbm5lbHM9dGhpcy5oZWlnaHQ9 dGhpcy53aWR0aD0wfWZ1bmN0aW9uIGModCxlKXt0LmludGVybmFsZm9ybWF0PWUuaW50ZXJu YWxmb3JtYXQsdC5mb3JtYXQ9ZS5mb3JtYXQsdC50eXBlPWUudHlwZSx0LmNvbXByZXNzZWQ9 ZS5jb21wcmVzc2VkLHQucHJlbXVsdGlwbHlBbHBoYT1lLnByZW11bHRpcGx5QWxwaGEsdC5m bGlwWT1lLmZsaXBZLHQudW5wYWNrQWxpZ25tZW50PWUudW5wYWNrQWxpZ25tZW50LHQuY29s b3JTcGFjZT1lLmNvbG9yU3BhY2UsdC53aWR0aD1lLndpZHRoLHQuaGVpZ2h0PWUuaGVpZ2h0 LHQuY2hhbm5lbHM9ZS5jaGFubmVsc31mdW5jdGlvbiB1KHQsZSl7aWYoIm9iamVjdCI9PXR5 cGVvZiBlJiZlKXsicHJlbXVsdGlwbHlBbHBoYSJpbiBlJiYodC5wcmVtdWx0aXBseUFscGhh PWUucHJlbXVsdGlwbHlBbHBoYSksImZsaXBZImluIGUmJih0LmZsaXBZPWUuZmxpcFkpLCJh bGlnbm1lbnQiaW4gZSYmKHQudW5wYWNrQWxpZ25tZW50PWUuYWxpZ25tZW50KSwiY29sb3JT cGFjZSJpbiBlJiYodC5jb2xvclNwYWNlPVZbZS5jb2xvclNwYWNlXSksInR5cGUiaW4gZSYm KHQudHlwZT1xW2UudHlwZV0pO3ZhciByPXQud2lkdGgsbj10LmhlaWdodCxpPXQuY2hhbm5l bHMsYT0hMTsic2hhcGUiaW4gZT8ocj1lLnNoYXBlWzBdLG49ZS5zaGFwZVsxXSwzPT09ZS5z aGFwZS5sZW5ndGgmJihpPWUuc2hhcGVbMl0sYT0hMCkpOigicmFkaXVzImluIGUmJihyPW49 ZS5yYWRpdXMpLCJ3aWR0aCJpbiBlJiYocj1lLndpZHRoKSwiaGVpZ2h0ImluIGUmJihuPWUu aGVpZ2h0KSwiY2hhbm5lbHMiaW4gZSYmKGk9ZS5jaGFubmVscyxhPSEwKSksdC53aWR0aD0w fHIsdC5oZWlnaHQ9MHxuLHQuY2hhbm5lbHM9MHxpLHI9ITEsImZvcm1hdCJpbiBlJiYocj1l LmZvcm1hdCxuPXQuaW50ZXJuYWxmb3JtYXQ9R1tyXSx0LmZvcm1hdD1hdFtuXSxyIGluIHEm JiEoInR5cGUiaW4gZSkmJih0LnR5cGU9cVtyXSksciBpbiBZJiYodC5jb21wcmVzc2VkPSEw KSxyPSEwKSwhYSYmcj90LmNoYW5uZWxzPXV0W3QuZm9ybWF0XTphJiYhciYmdC5jaGFubmVs cyE9PWN0W3QuZm9ybWF0XSYmKHQuZm9ybWF0PXQuaW50ZXJuYWxmb3JtYXQ9Y3RbdC5jaGFu bmVsc10pfX1mdW5jdGlvbiBmKGUpe3QucGl4ZWxTdG9yZWkoMzc0NDAsZS5mbGlwWSksdC5w aXhlbFN0b3JlaSgzNzQ0MSxlLnByZW11bHRpcGx5QWxwaGEpLHQucGl4ZWxTdG9yZWkoMzc0 NDMsZS5jb2xvclNwYWNlKSx0LnBpeGVsU3RvcmVpKDMzMTcsZS51bnBhY2tBbGlnbm1lbnQp fWZ1bmN0aW9uIGgoKXtzLmNhbGwodGhpcyksdGhpcy55T2Zmc2V0PXRoaXMueE9mZnNldD0w LHRoaXMuZGF0YT1udWxsLHRoaXMubmVlZHNGcmVlPSExLHRoaXMuZWxlbWVudD1udWxsLHRo aXMubmVlZHNDb3B5PSExfWZ1bmN0aW9uIHAodCxlKXt2YXIgcj1udWxsO2lmKF8oZSk/cj1l OmUmJih1KHQsZSksIngiaW4gZSYmKHQueE9mZnNldD0wfGUueCksInkiaW4gZSYmKHQueU9m ZnNldD0wfGUueSksXyhlLmRhdGEpJiYocj1lLmRhdGEpKSxlLmNvcHkpe3ZhciBuPWkudmll d3BvcnRXaWR0aCxhPWkudmlld3BvcnRIZWlnaHQ7dC53aWR0aD10LndpZHRofHxuLXQueE9m ZnNldCx0LmhlaWdodD10LmhlaWdodHx8YS10LnlPZmZzZXQsdC5uZWVkc0NvcHk9ITB9ZWxz ZSBpZihyKXtpZihKKHIpKXQuY2hhbm5lbHM9dC5jaGFubmVsc3x8NCx0LmRhdGE9ciwidHlw ZSJpbiBlfHw1MTIxIT09dC50eXBlfHwodC50eXBlPTB8JFtPYmplY3QucHJvdG90eXBlLnRv U3RyaW5nLmNhbGwocildKTtlbHNlIGlmKHkocikpe3N3aXRjaCh0LmNoYW5uZWxzPXQuY2hh bm5lbHN8fDQsYT0obj1yKS5sZW5ndGgsdC50eXBlKXtjYXNlIDUxMjE6Y2FzZSA1MTIzOmNh c2UgNTEyNTpjYXNlIDUxMjY6KGE9WC5hbGxvY1R5cGUodC50eXBlLGEpKS5zZXQobiksdC5k YXRhPWE7YnJlYWs7Y2FzZSAzNjE5Mzp0LmRhdGE9bShuKX10LmFsaWdubWVudD0xLHQubmVl ZHNGcmVlPSEwfWVsc2UgaWYobChyKSl7bj1yLmRhdGEsQXJyYXkuaXNBcnJheShuKXx8NTEy MSE9PXQudHlwZXx8KHQudHlwZT0wfCRbT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxs KG4pXSk7YT1yLnNoYXBlO3ZhciBvLHMsYyxmLGg9ci5zdHJpZGU7Mz09PWEubGVuZ3RoPyhj PWFbMl0sZj1oWzJdKTpmPWM9MSxvPWFbMF0scz1hWzFdLGE9aFswXSxoPWhbMV0sdC5hbGln bm1lbnQ9MSx0LndpZHRoPW8sdC5oZWlnaHQ9cyx0LmNoYW5uZWxzPWMsdC5mb3JtYXQ9dC5p bnRlcm5hbGZvcm1hdD1jdFtjXSx0Lm5lZWRzRnJlZT0hMCxvPWYscj1yLm9mZnNldCxjPXQu d2lkdGgsZj10LmhlaWdodCxzPXQuY2hhbm5lbHM7Zm9yKHZhciBwPVguYWxsb2NUeXBlKDM2 MTkzPT09dC50eXBlPzUxMjY6dC50eXBlLGMqZipzKSxkPTAsdj0wO3Y8ZjsrK3YpZm9yKHZh ciBUPTA7VDxjOysrVClmb3IodmFyIGs9MDtrPHM7KytrKXBbZCsrXT1uW2EqVCtoKnYrbypr K3JdO3codCxwKX1lbHNlIGlmKGIocik9PT1mdHx8YihyKT09PWh0fHxiKHIpPT09cHQpYihy KT09PWZ0fHxiKHIpPT09aHQ/dC5lbGVtZW50PXI6dC5lbGVtZW50PXIuY2FudmFzLHQud2lk dGg9dC5lbGVtZW50LndpZHRoLHQuaGVpZ2h0PXQuZWxlbWVudC5oZWlnaHQsdC5jaGFubmVs cz00O2Vsc2UgaWYoYihyKT09PWR0KXQuZWxlbWVudD1yLHQud2lkdGg9ci53aWR0aCx0Lmhl aWdodD1yLmhlaWdodCx0LmNoYW5uZWxzPTQ7ZWxzZSBpZihiKHIpPT09bXQpdC5lbGVtZW50 PXIsdC53aWR0aD1yLm5hdHVyYWxXaWR0aCx0LmhlaWdodD1yLm5hdHVyYWxIZWlnaHQsdC5j aGFubmVscz00O2Vsc2UgaWYoYihyKT09PWd0KXQuZWxlbWVudD1yLHQud2lkdGg9ci52aWRl b1dpZHRoLHQuaGVpZ2h0PXIudmlkZW9IZWlnaHQsdC5jaGFubmVscz00O2Vsc2UgaWYoeChy KSl7Zm9yKG49dC53aWR0aHx8clswXS5sZW5ndGgsYT10LmhlaWdodHx8ci5sZW5ndGgsaD10 LmNoYW5uZWxzLGg9ZyhyWzBdWzBdKT9ofHxyWzBdWzBdLmxlbmd0aDpofHwxLG89US5zaGFw ZShyKSxjPTEsZj0wO2Y8by5sZW5ndGg7KytmKWMqPW9bZl07Yz1YLmFsbG9jVHlwZSgzNjE5 Mz09PXQudHlwZT81MTI2OnQudHlwZSxjKSxRLmZsYXR0ZW4ocixvLCIiLGMpLHcodCxjKSx0 LmFsaWdubWVudD0xLHQud2lkdGg9bix0LmhlaWdodD1hLHQuY2hhbm5lbHM9aCx0LmZvcm1h dD10LmludGVybmFsZm9ybWF0PWN0W2hdLHQubmVlZHNGcmVlPSEwfX1lbHNlIHQud2lkdGg9 dC53aWR0aHx8MSx0LmhlaWdodD10LmhlaWdodHx8MSx0LmNoYW5uZWxzPXQuY2hhbm5lbHN8 fDR9ZnVuY3Rpb24gZChlLHIsaSxhLG8pe3ZhciBzPWUuZWxlbWVudCxsPWUuZGF0YSxjPWUu aW50ZXJuYWxmb3JtYXQsdT1lLmZvcm1hdCxoPWUudHlwZSxwPWUud2lkdGgsZD1lLmhlaWdo dDtmKGUpLHM/dC50ZXhTdWJJbWFnZTJEKHIsbyxpLGEsdSxoLHMpOmUuY29tcHJlc3NlZD90 LmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHIsbyxpLGEsYyxwLGQsbCk6ZS5uZWVkc0NvcHk/ KG4oKSx0LmNvcHlUZXhTdWJJbWFnZTJEKHIsbyxpLGEsZS54T2Zmc2V0LGUueU9mZnNldCxw LGQpKTp0LnRleFN1YkltYWdlMkQocixvLGksYSxwLGQsdSxoLGwpfWZ1bmN0aW9uIHYoKXty ZXR1cm4gb3QucG9wKCl8fG5ldyBofWZ1bmN0aW9uIGsodCl7dC5uZWVkc0ZyZWUmJlguZnJl ZVR5cGUodC5kYXRhKSxoLmNhbGwodCksb3QucHVzaCh0KX1mdW5jdGlvbiBBKCl7cy5jYWxs KHRoaXMpLHRoaXMuZ2VuTWlwbWFwcz0hMSx0aGlzLm1pcG1hcEhpbnQ9NDM1Mix0aGlzLm1p cG1hc2s9MCx0aGlzLmltYWdlcz1BcnJheSgxNil9ZnVuY3Rpb24gTSh0LGUscil7dmFyIG49 dC5pbWFnZXNbMF09digpO3QubWlwbWFzaz0xLG4ud2lkdGg9dC53aWR0aD1lLG4uaGVpZ2h0 PXQuaGVpZ2h0PXIsbi5jaGFubmVscz10LmNoYW5uZWxzPTR9ZnVuY3Rpb24gUyh0LGUpe3Zh ciByPW51bGw7aWYoXyhlKSljKHI9dC5pbWFnZXNbMF09digpLHQpLHAocixlKSx0Lm1pcG1h c2s9MTtlbHNlIGlmKHUodCxlKSxBcnJheS5pc0FycmF5KGUubWlwbWFwKSlmb3IodmFyIG49 ZS5taXBtYXAsaT0wO2k8bi5sZW5ndGg7KytpKWMocj10LmltYWdlc1tpXT12KCksdCksci53 aWR0aD4+PWksci5oZWlnaHQ+Pj1pLHAocixuW2ldKSx0Lm1pcG1hc2t8PTE8PGk7ZWxzZSBj KHI9dC5pbWFnZXNbMF09digpLHQpLHAocixlKSx0Lm1pcG1hc2s9MTtjKHQsdC5pbWFnZXNb MF0pfWZ1bmN0aW9uIEUoZSxyKXtmb3IodmFyIGk9ZS5pbWFnZXMsYT0wO2E8aS5sZW5ndGgm JmlbYV07KythKXt2YXIgbz1pW2FdLHM9cixsPWEsYz1vLmVsZW1lbnQsdT1vLmRhdGEsaD1v LmludGVybmFsZm9ybWF0LHA9by5mb3JtYXQsZD1vLnR5cGUsbT1vLndpZHRoLGc9by5oZWln aHQ7ZihvKSxjP3QudGV4SW1hZ2UyRChzLGwscCxwLGQsYyk6by5jb21wcmVzc2VkP3QuY29t cHJlc3NlZFRleEltYWdlMkQocyxsLGgsbSxnLDAsdSk6by5uZWVkc0NvcHk/KG4oKSx0LmNv cHlUZXhJbWFnZTJEKHMsbCxwLG8ueE9mZnNldCxvLnlPZmZzZXQsbSxnLDApKTp0LnRleElt YWdlMkQocyxsLHAsbSxnLDAscCxkLHV8fG51bGwpfX1mdW5jdGlvbiBMKCl7dmFyIHQ9c3Qu cG9wKCl8fG5ldyBBO3MuY2FsbCh0KTtmb3IodmFyIGU9dC5taXBtYXNrPTA7MTY+ZTsrK2Up dC5pbWFnZXNbZV09bnVsbDtyZXR1cm4gdH1mdW5jdGlvbiBDKHQpe2Zvcih2YXIgZT10Lmlt YWdlcyxyPTA7cjxlLmxlbmd0aDsrK3IpZVtyXSYmayhlW3JdKSxlW3JdPW51bGw7c3QucHVz aCh0KX1mdW5jdGlvbiBQKCl7dGhpcy5tYWdGaWx0ZXI9dGhpcy5taW5GaWx0ZXI9OTcyOCx0 aGlzLndyYXBUPXRoaXMud3JhcFM9MzMwNzEsdGhpcy5hbmlzb3Ryb3BpYz0xLHRoaXMuZ2Vu TWlwbWFwcz0hMSx0aGlzLm1pcG1hcEhpbnQ9NDM1Mn1mdW5jdGlvbiBJKHQsZSl7Im1pbiJp biBlJiYodC5taW5GaWx0ZXI9VVtlLm1pbl0sMDw9bHQuaW5kZXhPZih0Lm1pbkZpbHRlcikm JiEoImZhY2VzImluIGUpJiYodC5nZW5NaXBtYXBzPSEwKSksIm1hZyJpbiBlJiYodC5tYWdG aWx0ZXI9altlLm1hZ10pO3ZhciByPXQud3JhcFMsbj10LndyYXBUO2lmKCJ3cmFwImluIGUp e3ZhciBpPWUud3JhcDsic3RyaW5nIj09dHlwZW9mIGk/cj1uPU5baV06QXJyYXkuaXNBcnJh eShpKSYmKHI9TltpWzBdXSxuPU5baVsxXV0pfWVsc2Uid3JhcFMiaW4gZSYmKHI9TltlLndy YXBTXSksIndyYXBUImluIGUmJihuPU5bZS53cmFwVF0pO2lmKHQud3JhcFM9cix0LndyYXBU PW4sImFuaXNvdHJvcGljImluIGUmJih0LmFuaXNvdHJvcGljPWUuYW5pc290cm9waWMpLCJt aXBtYXAiaW4gZSl7c3dpdGNoKHI9ITEsdHlwZW9mIGUubWlwbWFwKXtjYXNlInN0cmluZyI6 dC5taXBtYXBIaW50PUJbZS5taXBtYXBdLHI9dC5nZW5NaXBtYXBzPSEwO2JyZWFrO2Nhc2Ui Ym9vbGVhbiI6cj10Lmdlbk1pcG1hcHM9ZS5taXBtYXA7YnJlYWs7Y2FzZSJvYmplY3QiOnQu Z2VuTWlwbWFwcz0hMSxyPSEwfSFyfHwibWluImluIGV8fCh0Lm1pbkZpbHRlcj05OTg0KX19 ZnVuY3Rpb24gTyhyLG4pe3QudGV4UGFyYW1ldGVyaShuLDEwMjQxLHIubWluRmlsdGVyKSx0 LnRleFBhcmFtZXRlcmkobiwxMDI0MCxyLm1hZ0ZpbHRlciksdC50ZXhQYXJhbWV0ZXJpKG4s MTAyNDIsci53cmFwUyksdC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDMsci53cmFwVCksZS5leHRf dGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMmJnQudGV4UGFyYW1ldGVyaShuLDM0MDQ2LHIu YW5pc290cm9waWMpLHIuZ2VuTWlwbWFwcyYmKHQuaGludCgzMzE3MCxyLm1pcG1hcEhpbnQp LHQuZ2VuZXJhdGVNaXBtYXAobikpfWZ1bmN0aW9uIHooZSl7cy5jYWxsKHRoaXMpLHRoaXMu bWlwbWFzaz0wLHRoaXMuaW50ZXJuYWxmb3JtYXQ9NjQwOCx0aGlzLmlkPXZ0KyssdGhpcy5y ZWZDb3VudD0xLHRoaXMudGFyZ2V0PWUsdGhpcy50ZXh0dXJlPXQuY3JlYXRlVGV4dHVyZSgp LHRoaXMudW5pdD0tMSx0aGlzLmJpbmRDb3VudD0wLHRoaXMudGV4SW5mbz1uZXcgUCxvLnBy b2ZpbGUmJih0aGlzLnN0YXRzPXtzaXplOjB9KX1mdW5jdGlvbiBEKGUpe3QuYWN0aXZlVGV4 dHVyZSgzMzk4NCksdC5iaW5kVGV4dHVyZShlLnRhcmdldCxlLnRleHR1cmUpfWZ1bmN0aW9u IFIoKXt2YXIgZT1idFswXTtlP3QuYmluZFRleHR1cmUoZS50YXJnZXQsZS50ZXh0dXJlKTp0 LmJpbmRUZXh0dXJlKDM1NTMsbnVsbCl9ZnVuY3Rpb24gRihlKXt2YXIgcj1lLnRleHR1cmUs bj1lLnVuaXQsaT1lLnRhcmdldDswPD1uJiYodC5hY3RpdmVUZXh0dXJlKDMzOTg0K24pLHQu YmluZFRleHR1cmUoaSxudWxsKSxidFtuXT1udWxsKSx0LmRlbGV0ZVRleHR1cmUociksZS50 ZXh0dXJlPW51bGwsZS5wYXJhbXM9bnVsbCxlLnBpeGVscz1udWxsLGUucmVmQ291bnQ9MCxk ZWxldGUgeXRbZS5pZF0sYS50ZXh0dXJlQ291bnQtLX12YXIgQj17ImRvbid0IGNhcmUiOjQz NTIsImRvbnQgY2FyZSI6NDM1MixuaWNlOjQzNTQsZmFzdDo0MzUzfSxOPXtyZXBlYXQ6MTA0 OTcsY2xhbXA6MzMwNzEsbWlycm9yOjMzNjQ4fSxqPXtuZWFyZXN0Ojk3MjgsbGluZWFyOjk3 Mjl9LFU9SCh7bWlwbWFwOjk5ODcsIm5lYXJlc3QgbWlwbWFwIG5lYXJlc3QiOjk5ODQsImxp bmVhciBtaXBtYXAgbmVhcmVzdCI6OTk4NSwibmVhcmVzdCBtaXBtYXAgbGluZWFyIjo5OTg2 LCJsaW5lYXIgbWlwbWFwIGxpbmVhciI6OTk4N30saiksVj17bm9uZTowLGJyb3dzZXI6Mzc0 NDR9LHE9e3VpbnQ4OjUxMjEscmdiYTQ6MzI4MTkscmdiNTY1OjMzNjM1LCJyZ2I1IGExIjoz MjgyMH0sRz17YWxwaGE6NjQwNixsdW1pbmFuY2U6NjQwOSwibHVtaW5hbmNlIGFscGhhIjo2 NDEwLHJnYjo2NDA3LHJnYmE6NjQwOCxyZ2JhNDozMjg1NCwicmdiNSBhMSI6MzI4NTUscmdi NTY1OjM2MTk0fSxZPXt9O2UuZXh0X3NyZ2ImJihHLnNyZ2I9MzU5MDQsRy5zcmdiYT0zNTkw NiksZS5vZXNfdGV4dHVyZV9mbG9hdCYmKHEuZmxvYXQzMj1xLmZsb2F0PTUxMjYpLGUub2Vz X3RleHR1cmVfaGFsZl9mbG9hdCYmKHEuZmxvYXQxNj1xWyJoYWxmIGZsb2F0Il09MzYxOTMp LGUud2ViZ2xfZGVwdGhfdGV4dHVyZSYmKEgoRyx7ZGVwdGg6NjQwMiwiZGVwdGggc3RlbmNp bCI6MzQwNDF9KSxIKHEse3VpbnQxNjo1MTIzLHVpbnQzMjo1MTI1LCJkZXB0aCBzdGVuY2ls IjozNDA0Mn0pKSxlLndlYmdsX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjJiZIKFkseyJyZ2Ig czN0YyBkeHQxIjozMzc3NiwicmdiYSBzM3RjIGR4dDEiOjMzNzc3LCJyZ2JhIHMzdGMgZHh0 MyI6MzM3NzgsInJnYmEgczN0YyBkeHQ1IjozMzc3OX0pLGUud2ViZ2xfY29tcHJlc3NlZF90 ZXh0dXJlX2F0YyYmSChZLHsicmdiIGF0YyI6MzU5ODYsInJnYmEgYXRjIGV4cGxpY2l0IGFs cGhhIjozNTk4NywicmdiYSBhdGMgaW50ZXJwb2xhdGVkIGFscGhhIjozNDc5OH0pLGUud2Vi Z2xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjJiZIKFkseyJyZ2IgcHZydGMgNGJwcHYxIjoz NTg0MCwicmdiIHB2cnRjIDJicHB2MSI6MzU4NDEsInJnYmEgcHZydGMgNGJwcHYxIjozNTg0 MiwicmdiYSBwdnJ0YyAyYnBwdjEiOjM1ODQzfSksZS53ZWJnbF9jb21wcmVzc2VkX3RleHR1 cmVfZXRjMSYmKFlbInJnYiBldGMxIl09MzYxOTYpO3ZhciBXPUFycmF5LnByb3RvdHlwZS5z bGljZS5jYWxsKHQuZ2V0UGFyYW1ldGVyKDM0NDY3KSk7T2JqZWN0LmtleXMoWSkuZm9yRWFj aCgoZnVuY3Rpb24odCl7dmFyIGU9WVt0XTswPD1XLmluZGV4T2YoZSkmJihHW3RdPWUpfSkp O3ZhciBaPU9iamVjdC5rZXlzKEcpO3IudGV4dHVyZUZvcm1hdHM9Wjt2YXIgdHQ9W107T2Jq ZWN0LmtleXMoRykuZm9yRWFjaCgoZnVuY3Rpb24odCl7dHRbR1t0XV09dH0pKTt2YXIgZXQ9 W107T2JqZWN0LmtleXMocSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZXRbcVt0XV09dH0pKTt2 YXIgcnQ9W107T2JqZWN0LmtleXMoaikuZm9yRWFjaCgoZnVuY3Rpb24odCl7cnRbalt0XV09 dH0pKTt2YXIgbnQ9W107T2JqZWN0LmtleXMoVSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7bnRb VVt0XV09dH0pKTt2YXIgaXQ9W107T2JqZWN0LmtleXMoTikuZm9yRWFjaCgoZnVuY3Rpb24o dCl7aXRbTlt0XV09dH0pKTt2YXIgYXQ9Wi5yZWR1Y2UoKGZ1bmN0aW9uKHQscil7dmFyIG49 R1tyXTtyZXR1cm4gNjQwOT09PW58fDY0MDY9PT1ufHw2NDA5PT09bnx8NjQxMD09PW58fDY0 MDI9PT1ufHwzNDA0MT09PW58fGUuZXh0X3NyZ2ImJigzNTkwND09PW58fDM1OTA2PT09bik/ dFtuXT1uOjMyODU1PT09bnx8MDw9ci5pbmRleE9mKCJyZ2JhIik/dFtuXT02NDA4OnRbbl09 NjQwNyx0fSkse30pLG90PVtdLHN0PVtdLHZ0PTAseXQ9e30seHQ9ci5tYXhUZXh0dXJlVW5p dHMsYnQ9QXJyYXkoeHQpLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0pKTtyZXR1cm4g SCh6LnByb3RvdHlwZSx7YmluZDpmdW5jdGlvbigpe3RoaXMuYmluZENvdW50Kz0xO3ZhciBl PXRoaXMudW5pdDtpZigwPmUpe2Zvcih2YXIgcj0wO3I8eHQ7KytyKXt2YXIgbj1idFtyXTtp ZihuKXtpZigwPG4uYmluZENvdW50KWNvbnRpbnVlO24udW5pdD0tMX1idFtyXT10aGlzLGU9 cjticmVha31vLnByb2ZpbGUmJmEubWF4VGV4dHVyZVVuaXRzPGUrMSYmKGEubWF4VGV4dHVy ZVVuaXRzPWUrMSksdGhpcy51bml0PWUsdC5hY3RpdmVUZXh0dXJlKDMzOTg0K2UpLHQuYmlu ZFRleHR1cmUodGhpcy50YXJnZXQsdGhpcy50ZXh0dXJlKX1yZXR1cm4gZX0sdW5iaW5kOmZ1 bmN0aW9uKCl7LS10aGlzLmJpbmRDb3VudH0sZGVjUmVmOmZ1bmN0aW9uKCl7MD49LS10aGlz LnJlZkNvdW50JiZGKHRoaXMpfX0pLG8ucHJvZmlsZSYmKGEuZ2V0VG90YWxUZXh0dXJlU2l6 ZT1mdW5jdGlvbigpe3ZhciB0PTA7cmV0dXJuIE9iamVjdC5rZXlzKHl0KS5mb3JFYWNoKChm dW5jdGlvbihlKXt0Kz15dFtlXS5zdGF0cy5zaXplfSkpLHR9KSx7Y3JlYXRlMkQ6ZnVuY3Rp b24oZSxyKXtmdW5jdGlvbiBuKHQsZSl7dmFyIHI9aS50ZXhJbmZvO1AuY2FsbChyKTt2YXIg YT1MKCk7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0P00oYSwwfHQsIm51bWJlciI9PXR5cGVv ZiBlPzB8ZTowfHQpOnQ/KEkocix0KSxTKGEsdCkpOk0oYSwxLDEpLHIuZ2VuTWlwbWFwcyYm KGEubWlwbWFzaz0oYS53aWR0aDw8MSktMSksaS5taXBtYXNrPWEubWlwbWFzayxjKGksYSks aS5pbnRlcm5hbGZvcm1hdD1hLmludGVybmFsZm9ybWF0LG4ud2lkdGg9YS53aWR0aCxuLmhl aWdodD1hLmhlaWdodCxEKGkpLEUoYSwzNTUzKSxPKHIsMzU1MyksUigpLEMoYSksby5wcm9m aWxlJiYoaS5zdGF0cy5zaXplPVQoaS5pbnRlcm5hbGZvcm1hdCxpLnR5cGUsYS53aWR0aCxh LmhlaWdodCxyLmdlbk1pcG1hcHMsITEpKSxuLmZvcm1hdD10dFtpLmludGVybmFsZm9ybWF0 XSxuLnR5cGU9ZXRbaS50eXBlXSxuLm1hZz1ydFtyLm1hZ0ZpbHRlcl0sbi5taW49bnRbci5t aW5GaWx0ZXJdLG4ud3JhcFM9aXRbci53cmFwU10sbi53cmFwVD1pdFtyLndyYXBUXSxufXZh ciBpPW5ldyB6KDM1NTMpO3JldHVybiB5dFtpLmlkXT1pLGEudGV4dHVyZUNvdW50Kyssbihl LHIpLG4uc3ViaW1hZ2U9ZnVuY3Rpb24odCxlLHIsYSl7ZXw9MCxyfD0wLGF8PTA7dmFyIG89 digpO3JldHVybiBjKG8saSksby53aWR0aD0wLG8uaGVpZ2h0PTAscChvLHQpLG8ud2lkdGg9 by53aWR0aHx8KGkud2lkdGg+PmEpLWUsby5oZWlnaHQ9by5oZWlnaHR8fChpLmhlaWdodD4+ YSktcixEKGkpLGQobywzNTUzLGUscixhKSxSKCksayhvKSxufSxuLnJlc2l6ZT1mdW5jdGlv bihlLHIpe3ZhciBhPTB8ZSxzPTB8cnx8YTtpZihhPT09aS53aWR0aCYmcz09PWkuaGVpZ2h0 KXJldHVybiBuO24ud2lkdGg9aS53aWR0aD1hLG4uaGVpZ2h0PWkuaGVpZ2h0PXMsRChpKTtm b3IodmFyIGw9MDtpLm1pcG1hc2s+Pmw7KytsKXt2YXIgYz1hPj5sLHU9cz4+bDtpZighY3x8 IXUpYnJlYWs7dC50ZXhJbWFnZTJEKDM1NTMsbCxpLmZvcm1hdCxjLHUsMCxpLmZvcm1hdCxp LnR5cGUsbnVsbCl9cmV0dXJuIFIoKSxvLnByb2ZpbGUmJihpLnN0YXRzLnNpemU9VChpLmlu dGVybmFsZm9ybWF0LGkudHlwZSxhLHMsITEsITEpKSxufSxuLl9yZWdsVHlwZT0idGV4dHVy ZTJkIixuLl90ZXh0dXJlPWksby5wcm9maWxlJiYobi5zdGF0cz1pLnN0YXRzKSxuLmRlc3Ry b3k9ZnVuY3Rpb24oKXtpLmRlY1JlZigpfSxufSxjcmVhdGVDdWJlOmZ1bmN0aW9uKGUscixu LGkscyxsKXtmdW5jdGlvbiBmKHQsZSxyLG4saSxhKXt2YXIgcyxsPWgudGV4SW5mbztmb3Io UC5jYWxsKGwpLHM9MDs2PnM7KytzKW1bc109TCgpO2lmKCJudW1iZXIiIT10eXBlb2YgdCYm dCl7aWYoIm9iamVjdCI9PXR5cGVvZiB0KWlmKGUpUyhtWzBdLHQpLFMobVsxXSxlKSxTKG1b Ml0sciksUyhtWzNdLG4pLFMobVs0XSxpKSxTKG1bNV0sYSk7ZWxzZSBpZihJKGwsdCksdSho LHQpLCJmYWNlcyJpbiB0KWZvcih0PXQuZmFjZXMscz0wOzY+czsrK3MpYyhtW3NdLGgpLFMo bVtzXSx0W3NdKTtlbHNlIGZvcihzPTA7Nj5zOysrcylTKG1bc10sdCl9ZWxzZSBmb3IodD0w fHR8fDEscz0wOzY+czsrK3MpTShtW3NdLHQsdCk7Zm9yKGMoaCxtWzBdKSxoLm1pcG1hc2s9 bC5nZW5NaXBtYXBzPyhtWzBdLndpZHRoPDwxKS0xOm1bMF0ubWlwbWFzayxoLmludGVybmFs Zm9ybWF0PW1bMF0uaW50ZXJuYWxmb3JtYXQsZi53aWR0aD1tWzBdLndpZHRoLGYuaGVpZ2h0 PW1bMF0uaGVpZ2h0LEQoaCkscz0wOzY+czsrK3MpRShtW3NdLDM0MDY5K3MpO2ZvcihPKGws MzQwNjcpLFIoKSxvLnByb2ZpbGUmJihoLnN0YXRzLnNpemU9VChoLmludGVybmFsZm9ybWF0 LGgudHlwZSxmLndpZHRoLGYuaGVpZ2h0LGwuZ2VuTWlwbWFwcywhMCkpLGYuZm9ybWF0PXR0 W2guaW50ZXJuYWxmb3JtYXRdLGYudHlwZT1ldFtoLnR5cGVdLGYubWFnPXJ0W2wubWFnRmls dGVyXSxmLm1pbj1udFtsLm1pbkZpbHRlcl0sZi53cmFwUz1pdFtsLndyYXBTXSxmLndyYXBU PWl0W2wud3JhcFRdLHM9MDs2PnM7KytzKUMobVtzXSk7cmV0dXJuIGZ9dmFyIGg9bmV3IHoo MzQwNjcpO3l0W2guaWRdPWgsYS5jdWJlQ291bnQrKzt2YXIgbT1BcnJheSg2KTtyZXR1cm4g ZihlLHIsbixpLHMsbCksZi5zdWJpbWFnZT1mdW5jdGlvbih0LGUscixuLGkpe3J8PTAsbnw9 MCxpfD0wO3ZhciBhPXYoKTtyZXR1cm4gYyhhLGgpLGEud2lkdGg9MCxhLmhlaWdodD0wLHAo YSxlKSxhLndpZHRoPWEud2lkdGh8fChoLndpZHRoPj5pKS1yLGEuaGVpZ2h0PWEuaGVpZ2h0 fHwoaC5oZWlnaHQ+PmkpLW4sRChoKSxkKGEsMzQwNjkrdCxyLG4saSksUigpLGsoYSksZn0s Zi5yZXNpemU9ZnVuY3Rpb24oZSl7aWYoKGV8PTApIT09aC53aWR0aCl7Zi53aWR0aD1oLndp ZHRoPWUsZi5oZWlnaHQ9aC5oZWlnaHQ9ZSxEKGgpO2Zvcih2YXIgcj0wOzY+cjsrK3IpZm9y KHZhciBuPTA7aC5taXBtYXNrPj5uOysrbil0LnRleEltYWdlMkQoMzQwNjkrcixuLGguZm9y bWF0LGU+Pm4sZT4+biwwLGguZm9ybWF0LGgudHlwZSxudWxsKTtyZXR1cm4gUigpLG8ucHJv ZmlsZSYmKGguc3RhdHMuc2l6ZT1UKGguaW50ZXJuYWxmb3JtYXQsaC50eXBlLGYud2lkdGgs Zi5oZWlnaHQsITEsITApKSxmfX0sZi5fcmVnbFR5cGU9InRleHR1cmVDdWJlIixmLl90ZXh0 dXJlPWgsby5wcm9maWxlJiYoZi5zdGF0cz1oLnN0YXRzKSxmLmRlc3Ryb3k9ZnVuY3Rpb24o KXtoLmRlY1JlZigpfSxmfSxjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8eHQ7Kytl KXQuYWN0aXZlVGV4dHVyZSgzMzk4NCtlKSx0LmJpbmRUZXh0dXJlKDM1NTMsbnVsbCksYnRb ZV09bnVsbDtLKHl0KS5mb3JFYWNoKEYpLGEuY3ViZUNvdW50PTAsYS50ZXh0dXJlQ291bnQ9 MH0sZ2V0VGV4dHVyZTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbH0scmVzdG9yZTpmdW5jdGlv bigpe2Zvcih2YXIgZT0wO2U8eHQ7KytlKXt2YXIgcj1idFtlXTtyJiYoci5iaW5kQ291bnQ9 MCxyLnVuaXQ9LTEsYnRbZV09bnVsbCl9Syh5dCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS50 ZXh0dXJlPXQuY3JlYXRlVGV4dHVyZSgpLHQuYmluZFRleHR1cmUoZS50YXJnZXQsZS50ZXh0 dXJlKTtmb3IodmFyIHI9MDszMj5yOysrcilpZigwIT0oZS5taXBtYXNrJjE8PHIpKWlmKDM1 NTM9PT1lLnRhcmdldCl0LnRleEltYWdlMkQoMzU1MyxyLGUuaW50ZXJuYWxmb3JtYXQsZS53 aWR0aD4+cixlLmhlaWdodD4+ciwwLGUuaW50ZXJuYWxmb3JtYXQsZS50eXBlLG51bGwpO2Vs c2UgZm9yKHZhciBuPTA7Nj5uOysrbil0LnRleEltYWdlMkQoMzQwNjkrbixyLGUuaW50ZXJu YWxmb3JtYXQsZS53aWR0aD4+cixlLmhlaWdodD4+ciwwLGUuaW50ZXJuYWxmb3JtYXQsZS50 eXBlLG51bGwpO08oZS50ZXhJbmZvLGUudGFyZ2V0KX0pKX0scmVmcmVzaDpmdW5jdGlvbigp e2Zvcih2YXIgZT0wO2U8eHQ7KytlKXt2YXIgcj1idFtlXTtyJiYoci5iaW5kQ291bnQ9MCxy LnVuaXQ9LTEsYnRbZV09bnVsbCksdC5hY3RpdmVUZXh0dXJlKDMzOTg0K2UpLHQuYmluZFRl eHR1cmUoMzU1MyxudWxsKSx0LmJpbmRUZXh0dXJlKDM0MDY3LG51bGwpfX19fWZ1bmN0aW9u IEEodCxlLHIsbixpLGEpe2Z1bmN0aW9uIG8odCxlLHIpe3RoaXMudGFyZ2V0PXQsdGhpcy50 ZXh0dXJlPWUsdGhpcy5yZW5kZXJidWZmZXI9cjt2YXIgbj10PTA7ZT8odD1lLndpZHRoLG49 ZS5oZWlnaHQpOnImJih0PXIud2lkdGgsbj1yLmhlaWdodCksdGhpcy53aWR0aD10LHRoaXMu aGVpZ2h0PW59ZnVuY3Rpb24gcyh0KXt0JiYodC50ZXh0dXJlJiZ0LnRleHR1cmUuX3RleHR1 cmUuZGVjUmVmKCksdC5yZW5kZXJidWZmZXImJnQucmVuZGVyYnVmZmVyLl9yZW5kZXJidWZm ZXIuZGVjUmVmKCkpfWZ1bmN0aW9uIGwodCxlLHIpe3QmJih0LnRleHR1cmU/dC50ZXh0dXJl Ll90ZXh0dXJlLnJlZkNvdW50Kz0xOnQucmVuZGVyYnVmZmVyLl9yZW5kZXJidWZmZXIucmVm Q291bnQrPTEpfWZ1bmN0aW9uIGMoZSxyKXtyJiYoci50ZXh0dXJlP3QuZnJhbWVidWZmZXJU ZXh0dXJlMkQoMzYxNjAsZSxyLnRhcmdldCxyLnRleHR1cmUuX3RleHR1cmUudGV4dHVyZSww KTp0LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKDM2MTYwLGUsMzYxNjEsci5yZW5kZXJidWZm ZXIuX3JlbmRlcmJ1ZmZlci5yZW5kZXJidWZmZXIpKX1mdW5jdGlvbiB1KHQpe3ZhciBlPTM1 NTMscj1udWxsLG49bnVsbCxpPXQ7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiYoaT10LmRh dGEsInRhcmdldCJpbiB0JiYoZT0wfHQudGFyZ2V0KSksInRleHR1cmUyZCI9PT0odD1pLl9y ZWdsVHlwZSl8fCJ0ZXh0dXJlQ3ViZSI9PT10P3I9aToicmVuZGVyYnVmZmVyIj09PXQmJihu PWksZT0zNjE2MSksbmV3IG8oZSxyLG4pfWZ1bmN0aW9uIGYodCxlLHIsYSxzKXtyZXR1cm4g cj8oKHQ9bi5jcmVhdGUyRCh7d2lkdGg6dCxoZWlnaHQ6ZSxmb3JtYXQ6YSx0eXBlOnN9KSku X3RleHR1cmUucmVmQ291bnQ9MCxuZXcgbygzNTUzLHQsbnVsbCkpOigodD1pLmNyZWF0ZSh7 d2lkdGg6dCxoZWlnaHQ6ZSxmb3JtYXQ6YX0pKS5fcmVuZGVyYnVmZmVyLnJlZkNvdW50PTAs bmV3IG8oMzYxNjEsbnVsbCx0KSl9ZnVuY3Rpb24gaCh0KXtyZXR1cm4gdCYmKHQudGV4dHVy ZXx8dC5yZW5kZXJidWZmZXIpfWZ1bmN0aW9uIHAodCxlLHIpe3QmJih0LnRleHR1cmU/dC50 ZXh0dXJlLnJlc2l6ZShlLHIpOnQucmVuZGVyYnVmZmVyJiZ0LnJlbmRlcmJ1ZmZlci5yZXNp emUoZSxyKSx0LndpZHRoPWUsdC5oZWlnaHQ9cil9ZnVuY3Rpb24gZCgpe3RoaXMuaWQ9VCsr LGtbdGhpcy5pZF09dGhpcyx0aGlzLmZyYW1lYnVmZmVyPXQuY3JlYXRlRnJhbWVidWZmZXIo KSx0aGlzLmhlaWdodD10aGlzLndpZHRoPTAsdGhpcy5jb2xvckF0dGFjaG1lbnRzPVtdLHRo aXMuZGVwdGhTdGVuY2lsQXR0YWNobWVudD10aGlzLnN0ZW5jaWxBdHRhY2htZW50PXRoaXMu ZGVwdGhBdHRhY2htZW50PW51bGx9ZnVuY3Rpb24gbSh0KXt0LmNvbG9yQXR0YWNobWVudHMu Zm9yRWFjaChzKSxzKHQuZGVwdGhBdHRhY2htZW50KSxzKHQuc3RlbmNpbEF0dGFjaG1lbnQp LHModC5kZXB0aFN0ZW5jaWxBdHRhY2htZW50KX1mdW5jdGlvbiBnKGUpe3QuZGVsZXRlRnJh bWVidWZmZXIoZS5mcmFtZWJ1ZmZlciksZS5mcmFtZWJ1ZmZlcj1udWxsLGEuZnJhbWVidWZm ZXJDb3VudC0tLGRlbGV0ZSBrW2UuaWRdfWZ1bmN0aW9uIHYoZSl7dmFyIG47dC5iaW5kRnJh bWVidWZmZXIoMzYxNjAsZS5mcmFtZWJ1ZmZlcik7dmFyIGk9ZS5jb2xvckF0dGFjaG1lbnRz O2ZvcihuPTA7bjxpLmxlbmd0aDsrK24pYygzNjA2NCtuLGlbbl0pO2ZvcihuPWkubGVuZ3Ro O248ci5tYXhDb2xvckF0dGFjaG1lbnRzOysrbil0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2 MTYwLDM2MDY0K24sMzU1MyxudWxsLDApO3QuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAs MzMzMDYsMzU1MyxudWxsLDApLHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsMzYwOTYs MzU1MyxudWxsLDApLHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsMzYxMjgsMzU1Myxu dWxsLDApLGMoMzYwOTYsZS5kZXB0aEF0dGFjaG1lbnQpLGMoMzYxMjgsZS5zdGVuY2lsQXR0 YWNobWVudCksYygzMzMwNixlLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQpLHQuY2hlY2tGcmFt ZWJ1ZmZlclN0YXR1cygzNjE2MCksdC5pc0NvbnRleHRMb3N0KCksdC5iaW5kRnJhbWVidWZm ZXIoMzYxNjAseC5uZXh0P3gubmV4dC5mcmFtZWJ1ZmZlcjpudWxsKSx4LmN1cj14Lm5leHQs dC5nZXRFcnJvcigpfWZ1bmN0aW9uIHkodCxlKXtmdW5jdGlvbiByKHQsZSl7dmFyIGksYT0w LG89MCxzPSEwLGM9ITA7aT1udWxsO3ZhciBwPSEwLGQ9InJnYmEiLGc9InVpbnQ4Iix5PTEs eD1udWxsLHc9bnVsbCxUPW51bGwsaz0hMTsibnVtYmVyIj09dHlwZW9mIHQ/KGE9MHx0LG89 MHxlfHxhKTp0Pygic2hhcGUiaW4gdD8oYT0obz10LnNoYXBlKVswXSxvPW9bMV0pOigicmFk aXVzImluIHQmJihhPW89dC5yYWRpdXMpLCJ3aWR0aCJpbiB0JiYoYT10LndpZHRoKSwiaGVp Z2h0ImluIHQmJihvPXQuaGVpZ2h0KSksKCJjb2xvciJpbiB0fHwiY29sb3JzImluIHQpJiYo aT10LmNvbG9yfHx0LmNvbG9ycyxBcnJheS5pc0FycmF5KGkpKSxpfHwoImNvbG9yQ291bnQi aW4gdCYmKHk9MHx0LmNvbG9yQ291bnQpLCJjb2xvclRleHR1cmUiaW4gdCYmKHA9ISF0LmNv bG9yVGV4dHVyZSxkPSJyZ2JhNCIpLCJjb2xvclR5cGUiaW4gdCYmKGc9dC5jb2xvclR5cGUs IXApJiYoImhhbGYgZmxvYXQiPT09Z3x8ImZsb2F0MTYiPT09Zz9kPSJyZ2JhMTZmIjoiZmxv YXQiIT09ZyYmImZsb2F0MzIiIT09Z3x8KGQ9InJnYmEzMmYiKSksImNvbG9yRm9ybWF0Imlu IHQmJihkPXQuY29sb3JGb3JtYXQsMDw9Yi5pbmRleE9mKGQpP3A9ITA6MDw9Xy5pbmRleE9m KGQpJiYocD0hMSkpKSwoImRlcHRoVGV4dHVyZSJpbiB0fHwiZGVwdGhTdGVuY2lsVGV4dHVy ZSJpbiB0KSYmKGs9ISghdC5kZXB0aFRleHR1cmUmJiF0LmRlcHRoU3RlbmNpbFRleHR1cmUp KSwiZGVwdGgiaW4gdCYmKCJib29sZWFuIj09dHlwZW9mIHQuZGVwdGg/cz10LmRlcHRoOih4 PXQuZGVwdGgsYz0hMSkpLCJzdGVuY2lsImluIHQmJigiYm9vbGVhbiI9PXR5cGVvZiB0LnN0 ZW5jaWw/Yz10LnN0ZW5jaWw6KHc9dC5zdGVuY2lsLHM9ITEpKSwiZGVwdGhTdGVuY2lsImlu IHQmJigiYm9vbGVhbiI9PXR5cGVvZiB0LmRlcHRoU3RlbmNpbD9zPWM9dC5kZXB0aFN0ZW5j aWw6KFQ9dC5kZXB0aFN0ZW5jaWwsYz1zPSExKSkpOmE9bz0xO3ZhciBBPW51bGwsTT1udWxs LFM9bnVsbCxFPW51bGw7aWYoQXJyYXkuaXNBcnJheShpKSlBPWkubWFwKHUpO2Vsc2UgaWYo aSlBPVt1KGkpXTtlbHNlIGZvcihBPUFycmF5KHkpLGk9MDtpPHk7KytpKUFbaV09ZihhLG8s cCxkLGcpO2ZvcihhPWF8fEFbMF0ud2lkdGgsbz1vfHxBWzBdLmhlaWdodCx4P009dSh4KTpz JiYhYyYmKE09ZihhLG8saywiZGVwdGgiLCJ1aW50MzIiKSksdz9TPXUodyk6YyYmIXMmJihT PWYoYSxvLCExLCJzdGVuY2lsIiwidWludDgiKSksVD9FPXUoVCk6IXgmJiF3JiZjJiZzJiYo RT1mKGEsbyxrLCJkZXB0aCBzdGVuY2lsIiwiZGVwdGggc3RlbmNpbCIpKSxzPW51bGwsaT0w O2k8QS5sZW5ndGg7KytpKWwoQVtpXSksQVtpXSYmQVtpXS50ZXh0dXJlJiYoYz13dFtBW2ld LnRleHR1cmUuX3RleHR1cmUuZm9ybWF0XSpUdFtBW2ldLnRleHR1cmUuX3RleHR1cmUudHlw ZV0sbnVsbD09PXMmJihzPWMpKTtyZXR1cm4gbChNKSxsKFMpLGwoRSksbShuKSxuLndpZHRo PWEsbi5oZWlnaHQ9byxuLmNvbG9yQXR0YWNobWVudHM9QSxuLmRlcHRoQXR0YWNobWVudD1N LG4uc3RlbmNpbEF0dGFjaG1lbnQ9UyxuLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQ9RSxyLmNv bG9yPUEubWFwKGgpLHIuZGVwdGg9aChNKSxyLnN0ZW5jaWw9aChTKSxyLmRlcHRoU3RlbmNp bD1oKEUpLHIud2lkdGg9bi53aWR0aCxyLmhlaWdodD1uLmhlaWdodCx2KG4pLHJ9dmFyIG49 bmV3IGQ7cmV0dXJuIGEuZnJhbWVidWZmZXJDb3VudCsrLHIodCxlKSxIKHIse3Jlc2l6ZTpm dW5jdGlvbih0LGUpe3ZhciBpPU1hdGgubWF4KDB8dCwxKSxhPU1hdGgubWF4KDB8ZXx8aSwx KTtpZihpPT09bi53aWR0aCYmYT09PW4uaGVpZ2h0KXJldHVybiByO2Zvcih2YXIgbz1uLmNv bG9yQXR0YWNobWVudHMscz0wO3M8by5sZW5ndGg7KytzKXAob1tzXSxpLGEpO3JldHVybiBw KG4uZGVwdGhBdHRhY2htZW50LGksYSkscChuLnN0ZW5jaWxBdHRhY2htZW50LGksYSkscChu LmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQsaSxhKSxuLndpZHRoPXIud2lkdGg9aSxuLmhlaWdo dD1yLmhlaWdodD1hLHYobikscn0sX3JlZ2xUeXBlOiJmcmFtZWJ1ZmZlciIsX2ZyYW1lYnVm ZmVyOm4sZGVzdHJveTpmdW5jdGlvbigpe2cobiksbShuKX0sdXNlOmZ1bmN0aW9uKHQpe3gu c2V0RkJPKHtmcmFtZWJ1ZmZlcjpyfSx0KX19KX12YXIgeD17Y3VyOm51bGwsbmV4dDpudWxs LGRpcnR5OiExLHNldEZCTzpudWxsfSxiPVsicmdiYSJdLF89WyJyZ2JhNCIsInJnYjU2NSIs InJnYjUgYTEiXTtlLmV4dF9zcmdiJiZfLnB1c2goInNyZ2JhIiksZS5leHRfY29sb3JfYnVm ZmVyX2hhbGZfZmxvYXQmJl8ucHVzaCgicmdiYTE2ZiIsInJnYjE2ZiIpLGUud2ViZ2xfY29s b3JfYnVmZmVyX2Zsb2F0JiZfLnB1c2goInJnYmEzMmYiKTt2YXIgdz1bInVpbnQ4Il07ZS5v ZXNfdGV4dHVyZV9oYWxmX2Zsb2F0JiZ3LnB1c2goImhhbGYgZmxvYXQiLCJmbG9hdDE2Iiks ZS5vZXNfdGV4dHVyZV9mbG9hdCYmdy5wdXNoKCJmbG9hdCIsImZsb2F0MzIiKTt2YXIgVD0w LGs9e307cmV0dXJuIEgoeCx7Z2V0RnJhbWVidWZmZXI6ZnVuY3Rpb24odCl7cmV0dXJuImZ1 bmN0aW9uIj09dHlwZW9mIHQmJiJmcmFtZWJ1ZmZlciI9PT10Ll9yZWdsVHlwZSYmKHQ9dC5f ZnJhbWVidWZmZXIpaW5zdGFuY2VvZiBkP3Q6bnVsbH0sY3JlYXRlOnksY3JlYXRlQ3ViZTpm dW5jdGlvbih0KXtmdW5jdGlvbiBlKHQpe3ZhciBpLGE9e2NvbG9yOm51bGx9LG89MCxzPW51 bGw7aT0icmdiYSI7dmFyIGw9InVpbnQ4IixjPTE7aWYoIm51bWJlciI9PXR5cGVvZiB0P289 MHx0OnQ/KCJzaGFwZSJpbiB0P289dC5zaGFwZVswXTooInJhZGl1cyJpbiB0JiYobz0wfHQu cmFkaXVzKSwid2lkdGgiaW4gdD9vPTB8dC53aWR0aDoiaGVpZ2h0ImluIHQmJihvPTB8dC5o ZWlnaHQpKSwoImNvbG9yImluIHR8fCJjb2xvcnMiaW4gdCkmJihzPXQuY29sb3J8fHQuY29s b3JzLEFycmF5LmlzQXJyYXkocykpLHN8fCgiY29sb3JDb3VudCJpbiB0JiYoYz0wfHQuY29s b3JDb3VudCksImNvbG9yVHlwZSJpbiB0JiYobD10LmNvbG9yVHlwZSksImNvbG9yRm9ybWF0 ImluIHQmJihpPXQuY29sb3JGb3JtYXQpKSwiZGVwdGgiaW4gdCYmKGEuZGVwdGg9dC5kZXB0 aCksInN0ZW5jaWwiaW4gdCYmKGEuc3RlbmNpbD10LnN0ZW5jaWwpLCJkZXB0aFN0ZW5jaWwi aW4gdCYmKGEuZGVwdGhTdGVuY2lsPXQuZGVwdGhTdGVuY2lsKSk6bz0xLHMpaWYoQXJyYXku aXNBcnJheShzKSlmb3IodD1bXSxpPTA7aTxzLmxlbmd0aDsrK2kpdFtpXT1zW2ldO2Vsc2Ug dD1bc107ZWxzZSBmb3IodD1BcnJheShjKSxzPXtyYWRpdXM6byxmb3JtYXQ6aSx0eXBlOmx9 LGk9MDtpPGM7KytpKXRbaV09bi5jcmVhdGVDdWJlKHMpO2ZvcihhLmNvbG9yPUFycmF5KHQu bGVuZ3RoKSxpPTA7aTx0Lmxlbmd0aDsrK2kpYz10W2ldLG89b3x8Yy53aWR0aCxhLmNvbG9y W2ldPXt0YXJnZXQ6MzQwNjksZGF0YTp0W2ldfTtmb3IoaT0wOzY+aTsrK2kpe2ZvcihjPTA7 Yzx0Lmxlbmd0aDsrK2MpYS5jb2xvcltjXS50YXJnZXQ9MzQwNjkraTswPGkmJihhLmRlcHRo PXJbMF0uZGVwdGgsYS5zdGVuY2lsPXJbMF0uc3RlbmNpbCxhLmRlcHRoU3RlbmNpbD1yWzBd LmRlcHRoU3RlbmNpbCkscltpXT9yW2ldKGEpOnJbaV09eShhKX1yZXR1cm4gSChlLHt3aWR0 aDpvLGhlaWdodDpvLGNvbG9yOnR9KX12YXIgcj1BcnJheSg2KTtyZXR1cm4gZSh0KSxIKGUs e2ZhY2VzOnIscmVzaXplOmZ1bmN0aW9uKHQpe3ZhciBuPTB8dDtpZihuPT09ZS53aWR0aCly ZXR1cm4gZTt2YXIgaT1lLmNvbG9yO2Zvcih0PTA7dDxpLmxlbmd0aDsrK3QpaVt0XS5yZXNp emUobik7Zm9yKHQ9MDs2PnQ7Kyt0KXJbdF0ucmVzaXplKG4pO3JldHVybiBlLndpZHRoPWUu aGVpZ2h0PW4sZX0sX3JlZ2xUeXBlOiJmcmFtZWJ1ZmZlckN1YmUiLGRlc3Ryb3k6ZnVuY3Rp b24oKXtyLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuZGVzdHJveSgpfSkpfX0pfSxjbGVhcjpm dW5jdGlvbigpe0soaykuZm9yRWFjaChnKX0scmVzdG9yZTpmdW5jdGlvbigpe3guY3VyPW51 bGwseC5uZXh0PW51bGwseC5kaXJ0eT0hMCxLKGspLmZvckVhY2goKGZ1bmN0aW9uKGUpe2Uu ZnJhbWVidWZmZXI9dC5jcmVhdGVGcmFtZWJ1ZmZlcigpLHYoZSl9KSl9fSl9ZnVuY3Rpb24g TSgpe3RoaXMudz10aGlzLno9dGhpcy55PXRoaXMueD10aGlzLnN0YXRlPTAsdGhpcy5idWZm ZXI9bnVsbCx0aGlzLnNpemU9MCx0aGlzLm5vcm1hbGl6ZWQ9ITEsdGhpcy50eXBlPTUxMjYs dGhpcy5kaXZpc29yPXRoaXMuc3RyaWRlPXRoaXMub2Zmc2V0PTB9ZnVuY3Rpb24gUyh0LGUs cixuLGksYSxvKXtmdW5jdGlvbiBzKCl7dGhpcy5pZD0rK2YsdGhpcy5hdHRyaWJ1dGVzPVtd LHRoaXMuZWxlbWVudHM9bnVsbCx0aGlzLm93bnNFbGVtZW50cz0hMSx0aGlzLm9mZnNldD10 aGlzLmNvdW50PTAsdGhpcy5pbnN0YW5jZXM9LTEsdGhpcy5wcmltaXRpdmU9NDt2YXIgdD1l Lm9lc192ZXJ0ZXhfYXJyYXlfb2JqZWN0O3RoaXMudmFvPXQ/dC5jcmVhdGVWZXJ0ZXhBcnJh eU9FUygpOm51bGwsaFt0aGlzLmlkXT10aGlzLHRoaXMuYnVmZmVycz1bXX12YXIgYz1yLm1h eEF0dHJpYnV0ZXMsdT1BcnJheShjKTtmb3Iocj0wO3I8YzsrK3IpdVtyXT1uZXcgTTt2YXIg Zj0wLGg9e30scD17UmVjb3JkOk0sc2NvcGU6e30sc3RhdGU6dSxjdXJyZW50VkFPOm51bGws dGFyZ2V0VkFPOm51bGwscmVzdG9yZTplLm9lc192ZXJ0ZXhfYXJyYXlfb2JqZWN0P2Z1bmN0 aW9uKCl7ZS5vZXNfdmVydGV4X2FycmF5X29iamVjdCYmSyhoKS5mb3JFYWNoKChmdW5jdGlv bih0KXt0LnJlZnJlc2goKX0pKX06ZnVuY3Rpb24oKXt9LGNyZWF0ZVZBTzpmdW5jdGlvbih0 KXtmdW5jdGlvbiBlKHQpe3ZhciBuO0FycmF5LmlzQXJyYXkodCk/KG49dCxyLmVsZW1lbnRz JiZyLm93bnNFbGVtZW50cyYmci5lbGVtZW50cy5kZXN0cm95KCksci5lbGVtZW50cz1udWxs LHIub3duc0VsZW1lbnRzPSExLHIub2Zmc2V0PTAsci5jb3VudD0wLHIuaW5zdGFuY2VzPS0x LHIucHJpbWl0aXZlPTQpOih0LmVsZW1lbnRzPyhuPXQuZWxlbWVudHMsci5vd25zRWxlbWVu dHM/KCJmdW5jdGlvbiI9PXR5cGVvZiBuJiYiZWxlbWVudHMiPT09bi5fcmVnbFR5cGU/ci5l bGVtZW50cy5kZXN0cm95KCk6ci5lbGVtZW50cyhuKSxyLm93bnNFbGVtZW50cz0hMSk6YS5n ZXRFbGVtZW50cyh0LmVsZW1lbnRzKT8oci5lbGVtZW50cz10LmVsZW1lbnRzLHIub3duc0Vs ZW1lbnRzPSExKTooci5lbGVtZW50cz1hLmNyZWF0ZSh0LmVsZW1lbnRzKSxyLm93bnNFbGVt ZW50cz0hMCkpOihyLmVsZW1lbnRzPW51bGwsci5vd25zRWxlbWVudHM9ITEpLG49dC5hdHRy aWJ1dGVzLHIub2Zmc2V0PTAsci5jb3VudD0tMSxyLmluc3RhbmNlcz0tMSxyLnByaW1pdGl2 ZT00LHIuZWxlbWVudHMmJihyLmNvdW50PXIuZWxlbWVudHMuX2VsZW1lbnRzLnZlcnRDb3Vu dCxyLnByaW1pdGl2ZT1yLmVsZW1lbnRzLl9lbGVtZW50cy5wcmltVHlwZSksIm9mZnNldCJp biB0JiYoci5vZmZzZXQ9MHx0Lm9mZnNldCksImNvdW50ImluIHQmJihyLmNvdW50PTB8dC5j b3VudCksImluc3RhbmNlcyJpbiB0JiYoci5pbnN0YW5jZXM9MHx0Lmluc3RhbmNlcyksInBy aW1pdGl2ZSJpbiB0JiYoci5wcmltaXRpdmU9YXRbdC5wcmltaXRpdmVdKSksdD17fTt2YXIg bz1yLmF0dHJpYnV0ZXM7by5sZW5ndGg9bi5sZW5ndGg7Zm9yKHZhciBzPTA7czxuLmxlbmd0 aDsrK3Mpe3ZhciBjLHU9bltzXSxmPW9bc109bmV3IE0saD11LmRhdGF8fHU7aWYoQXJyYXku aXNBcnJheShoKXx8SihoKXx8bChoKSlyLmJ1ZmZlcnNbc10mJihjPXIuYnVmZmVyc1tzXSxK KGgpJiZjLl9idWZmZXIuYnl0ZUxlbmd0aD49aC5ieXRlTGVuZ3RoP2Muc3ViZGF0YShoKToo Yy5kZXN0cm95KCksci5idWZmZXJzW3NdPW51bGwpKSxyLmJ1ZmZlcnNbc118fChjPXIuYnVm ZmVyc1tzXT1pLmNyZWF0ZSh1LDM0OTYyLCExLCEwKSksZi5idWZmZXI9aS5nZXRCdWZmZXIo YyksZi5zaXplPTB8Zi5idWZmZXIuZGltZW5zaW9uLGYubm9ybWFsaXplZD0hMSxmLnR5cGU9 Zi5idWZmZXIuZHR5cGUsZi5vZmZzZXQ9MCxmLnN0cmlkZT0wLGYuZGl2aXNvcj0wLGYuc3Rh dGU9MSx0W3NdPTE7ZWxzZSBpLmdldEJ1ZmZlcih1KT8oZi5idWZmZXI9aS5nZXRCdWZmZXIo dSksZi5zaXplPTB8Zi5idWZmZXIuZGltZW5zaW9uLGYubm9ybWFsaXplZD0hMSxmLnR5cGU9 Zi5idWZmZXIuZHR5cGUsZi5vZmZzZXQ9MCxmLnN0cmlkZT0wLGYuZGl2aXNvcj0wLGYuc3Rh dGU9MSk6aS5nZXRCdWZmZXIodS5idWZmZXIpPyhmLmJ1ZmZlcj1pLmdldEJ1ZmZlcih1LmJ1 ZmZlciksZi5zaXplPTB8KCt1LnNpemV8fGYuYnVmZmVyLmRpbWVuc2lvbiksZi5ub3JtYWxp emVkPSEhdS5ub3JtYWxpemVkfHwhMSxmLnR5cGU9InR5cGUiaW4gdT90dFt1LnR5cGVdOmYu YnVmZmVyLmR0eXBlLGYub2Zmc2V0PTB8KHUub2Zmc2V0fHwwKSxmLnN0cmlkZT0wfCh1LnN0 cmlkZXx8MCksZi5kaXZpc29yPTB8KHUuZGl2aXNvcnx8MCksZi5zdGF0ZT0xKToieCJpbiB1 JiYoZi54PSt1Lnh8fDAsZi55PSt1Lnl8fDAsZi56PSt1Lnp8fDAsZi53PSt1Lnd8fDAsZi5z dGF0ZT0yKX1mb3IoYz0wO2M8ci5idWZmZXJzLmxlbmd0aDsrK2MpIXRbY10mJnIuYnVmZmVy c1tjXSYmKHIuYnVmZmVyc1tjXS5kZXN0cm95KCksci5idWZmZXJzW2NdPW51bGwpO3JldHVy biByLnJlZnJlc2goKSxlfXZhciByPW5ldyBzO3JldHVybiBuLnZhb0NvdW50Kz0xLGUuZGVz dHJveT1mdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8ci5idWZmZXJzLmxlbmd0aDsrK3Qpci5i dWZmZXJzW3RdJiZyLmJ1ZmZlcnNbdF0uZGVzdHJveSgpO3IuYnVmZmVycy5sZW5ndGg9MCxy Lm93bnNFbGVtZW50cyYmKHIuZWxlbWVudHMuZGVzdHJveSgpLHIuZWxlbWVudHM9bnVsbCxy Lm93bnNFbGVtZW50cz0hMSksci5kZXN0cm95KCl9LGUuX3Zhbz1yLGUuX3JlZ2xUeXBlPSJ2 YW8iLGUodCl9LGdldFZBTzpmdW5jdGlvbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Yg dCYmdC5fdmFvP3QuX3ZhbzpudWxsfSxkZXN0cm95QnVmZmVyOmZ1bmN0aW9uKGUpe2Zvcih2 YXIgcj0wO3I8dS5sZW5ndGg7KytyKXt2YXIgbj11W3JdO24uYnVmZmVyPT09ZSYmKHQuZGlz YWJsZVZlcnRleEF0dHJpYkFycmF5KHIpLG4uYnVmZmVyPW51bGwpfX0sc2V0VkFPOmUub2Vz X3ZlcnRleF9hcnJheV9vYmplY3Q/ZnVuY3Rpb24odCl7aWYodCE9PXAuY3VycmVudFZBTyl7 dmFyIHI9ZS5vZXNfdmVydGV4X2FycmF5X29iamVjdDt0P3IuYmluZFZlcnRleEFycmF5T0VT KHQudmFvKTpyLmJpbmRWZXJ0ZXhBcnJheU9FUyhudWxsKSxwLmN1cnJlbnRWQU89dH19OmZ1 bmN0aW9uKHIpe2lmKHIhPT1wLmN1cnJlbnRWQU8pe2lmKHIpci5iaW5kQXR0cnMoKTtlbHNl e2Zvcih2YXIgbj1lLmFuZ2xlX2luc3RhbmNlZF9hcnJheXMsaT0wO2k8dS5sZW5ndGg7Kytp KXt2YXIgYT11W2ldO2EuYnVmZmVyPyh0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGkpLGEu YnVmZmVyLmJpbmQoKSx0LnZlcnRleEF0dHJpYlBvaW50ZXIoaSxhLnNpemUsYS50eXBlLGEu bm9ybWFsaXplZCxhLnN0cmlkZSxhLm9mZmZzZXQpLG4mJmEuZGl2aXNvciYmbi52ZXJ0ZXhB dHRyaWJEaXZpc29yQU5HTEUoaSxhLmRpdmlzb3IpKToodC5kaXNhYmxlVmVydGV4QXR0cmli QXJyYXkoaSksdC52ZXJ0ZXhBdHRyaWI0ZihpLGEueCxhLnksYS56LGEudykpfW8uZWxlbWVu dHM/dC5iaW5kQnVmZmVyKDM0OTYzLG8uZWxlbWVudHMuYnVmZmVyLmJ1ZmZlcik6dC5iaW5k QnVmZmVyKDM0OTYzLG51bGwpfXAuY3VycmVudFZBTz1yfX0sY2xlYXI6ZS5vZXNfdmVydGV4 X2FycmF5X29iamVjdD9mdW5jdGlvbigpe0soaCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5k ZXN0cm95KCl9KSl9OmZ1bmN0aW9uKCl7fX07cmV0dXJuIHMucHJvdG90eXBlLmJpbmRBdHRy cz1mdW5jdGlvbigpe2Zvcih2YXIgcj1lLmFuZ2xlX2luc3RhbmNlZF9hcnJheXMsbj10aGlz LmF0dHJpYnV0ZXMsaT0wO2k8bi5sZW5ndGg7KytpKXt2YXIgbz1uW2ldO28uYnVmZmVyPyh0 LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGkpLHQuYmluZEJ1ZmZlcigzNDk2MixvLmJ1ZmZl ci5idWZmZXIpLHQudmVydGV4QXR0cmliUG9pbnRlcihpLG8uc2l6ZSxvLnR5cGUsby5ub3Jt YWxpemVkLG8uc3RyaWRlLG8ub2Zmc2V0KSxyJiZvLmRpdmlzb3ImJnIudmVydGV4QXR0cmli RGl2aXNvckFOR0xFKGksby5kaXZpc29yKSk6KHQuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5 KGkpLHQudmVydGV4QXR0cmliNGYoaSxvLngsby55LG8ueixvLncpKX1mb3Iocj1uLmxlbmd0 aDtyPGM7KytyKXQuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHIpOyhyPWEuZ2V0RWxlbWVu dHModGhpcy5lbGVtZW50cykpP3QuYmluZEJ1ZmZlcigzNDk2MyxyLmJ1ZmZlci5idWZmZXIp OnQuYmluZEJ1ZmZlcigzNDk2MyxudWxsKX0scy5wcm90b3R5cGUucmVmcmVzaD1mdW5jdGlv bigpe3ZhciB0PWUub2VzX3ZlcnRleF9hcnJheV9vYmplY3Q7dCYmKHQuYmluZFZlcnRleEFy cmF5T0VTKHRoaXMudmFvKSx0aGlzLmJpbmRBdHRycygpLHAuY3VycmVudFZBTz1udWxsLHQu YmluZFZlcnRleEFycmF5T0VTKG51bGwpKX0scy5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlv bigpe2lmKHRoaXMudmFvKXt2YXIgdD1lLm9lc192ZXJ0ZXhfYXJyYXlfb2JqZWN0O3RoaXM9 PT1wLmN1cnJlbnRWQU8mJihwLmN1cnJlbnRWQU89bnVsbCx0LmJpbmRWZXJ0ZXhBcnJheU9F UyhudWxsKSksdC5kZWxldGVWZXJ0ZXhBcnJheU9FUyh0aGlzLnZhbyksdGhpcy52YW89bnVs bH10aGlzLm93bnNFbGVtZW50cyYmKHRoaXMuZWxlbWVudHMuZGVzdHJveSgpLHRoaXMuZWxl bWVudHM9bnVsbCx0aGlzLm93bnNFbGVtZW50cz0hMSksaFt0aGlzLmlkXSYmKGRlbGV0ZSBo W3RoaXMuaWRdLC0tbi52YW9Db3VudCl9LHB9ZnVuY3Rpb24gRSh0LGUscixuKXtmdW5jdGlv biBpKHQsZSxyLG4pe3RoaXMubmFtZT10LHRoaXMuaWQ9ZSx0aGlzLmxvY2F0aW9uPXIsdGhp cy5pbmZvPW59ZnVuY3Rpb24gYSh0LGUpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7KytyKWlm KHRbcl0uaWQ9PT1lLmlkKXJldHVybiB2b2lkKHRbcl0ubG9jYXRpb249ZS5sb2NhdGlvbik7 dC5wdXNoKGUpfWZ1bmN0aW9uIG8ocixuLGkpe2lmKCEobz0oaT0zNTYzMj09PXI/Yzp1KVtu XSkpe3ZhciBhPWUuc3RyKG4pLG89dC5jcmVhdGVTaGFkZXIocik7dC5zaGFkZXJTb3VyY2Uo byxhKSx0LmNvbXBpbGVTaGFkZXIobyksaVtuXT1vfXJldHVybiBvfWZ1bmN0aW9uIHModCxl KXt0aGlzLmlkPXArKyx0aGlzLmZyYWdJZD10LHRoaXMudmVydElkPWUsdGhpcy5wcm9ncmFt PW51bGwsdGhpcy51bmlmb3Jtcz1bXSx0aGlzLmF0dHJpYnV0ZXM9W10sdGhpcy5yZWZDb3Vu dD0xLG4ucHJvZmlsZSYmKHRoaXMuc3RhdHM9e3VuaWZvcm1zQ291bnQ6MCxhdHRyaWJ1dGVz Q291bnQ6MH0pfWZ1bmN0aW9uIGwocixzLGwpe3ZhciBjO2M9bygzNTYzMixyLmZyYWdJZCk7 dmFyIHU9bygzNTYzMyxyLnZlcnRJZCk7aWYocz1yLnByb2dyYW09dC5jcmVhdGVQcm9ncmFt KCksdC5hdHRhY2hTaGFkZXIocyxjKSx0LmF0dGFjaFNoYWRlcihzLHUpLGwpZm9yKGM9MDtj PGwubGVuZ3RoOysrYyl1PWxbY10sdC5iaW5kQXR0cmliTG9jYXRpb24ocyx1WzBdLHVbMV0p O3QubGlua1Byb2dyYW0ocyksdT10LmdldFByb2dyYW1QYXJhbWV0ZXIocywzNTcxOCksbi5w cm9maWxlJiYoci5zdGF0cy51bmlmb3Jtc0NvdW50PXUpO3ZhciBmPXIudW5pZm9ybXM7Zm9y KGM9MDtjPHU7KytjKWlmKGw9dC5nZXRBY3RpdmVVbmlmb3JtKHMsYykpaWYoMTxsLnNpemUp Zm9yKHZhciBoPTA7aDxsLnNpemU7KytoKXt2YXIgcD1sLm5hbWUucmVwbGFjZSgiWzBdIiwi WyIraCsiXSIpO2EoZixuZXcgaShwLGUuaWQocCksdC5nZXRVbmlmb3JtTG9jYXRpb24ocyxw KSxsKSl9ZWxzZSBhKGYsbmV3IGkobC5uYW1lLGUuaWQobC5uYW1lKSx0LmdldFVuaWZvcm1M b2NhdGlvbihzLGwubmFtZSksbCkpO2Zvcih1PXQuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzLDM1 NzIxKSxuLnByb2ZpbGUmJihyLnN0YXRzLmF0dHJpYnV0ZXNDb3VudD11KSxyPXIuYXR0cmli dXRlcyxjPTA7Yzx1OysrYykobD10LmdldEFjdGl2ZUF0dHJpYihzLGMpKSYmYShyLG5ldyBp KGwubmFtZSxlLmlkKGwubmFtZSksdC5nZXRBdHRyaWJMb2NhdGlvbihzLGwubmFtZSksbCkp fXZhciBjPXt9LHU9e30sZj17fSxoPVtdLHA9MDtyZXR1cm4gbi5wcm9maWxlJiYoci5nZXRN YXhVbmlmb3Jtc0NvdW50PWZ1bmN0aW9uKCl7dmFyIHQ9MDtyZXR1cm4gaC5mb3JFYWNoKChm dW5jdGlvbihlKXtlLnN0YXRzLnVuaWZvcm1zQ291bnQ+dCYmKHQ9ZS5zdGF0cy51bmlmb3Jt c0NvdW50KX0pKSx0fSxyLmdldE1heEF0dHJpYnV0ZXNDb3VudD1mdW5jdGlvbigpe3ZhciB0 PTA7cmV0dXJuIGguZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5zdGF0cy5hdHRyaWJ1dGVzQ291 bnQ+dCYmKHQ9ZS5zdGF0cy5hdHRyaWJ1dGVzQ291bnQpfSkpLHR9KSx7Y2xlYXI6ZnVuY3Rp b24oKXt2YXIgZT10LmRlbGV0ZVNoYWRlci5iaW5kKHQpO0soYykuZm9yRWFjaChlKSxjPXt9 LEsodSkuZm9yRWFjaChlKSx1PXt9LGguZm9yRWFjaCgoZnVuY3Rpb24oZSl7dC5kZWxldGVQ cm9ncmFtKGUucHJvZ3JhbSl9KSksaC5sZW5ndGg9MCxmPXt9LHIuc2hhZGVyQ291bnQ9MH0s cHJvZ3JhbTpmdW5jdGlvbihlLG4saSxhKXt2YXIgbz1mW25dO298fChvPWZbbl09e30pO3Zh ciBwPW9bZV07aWYocCYmKHAucmVmQ291bnQrKywhYSkpcmV0dXJuIHA7dmFyIGQ9bmV3IHMo bixlKTtyZXR1cm4gci5zaGFkZXJDb3VudCsrLGwoZCxpLGEpLHB8fChvW2VdPWQpLGgucHVz aChkKSxIKGQse2Rlc3Ryb3k6ZnVuY3Rpb24oKXtpZihkLnJlZkNvdW50LS0sMD49ZC5yZWZD b3VudCl7dC5kZWxldGVQcm9ncmFtKGQucHJvZ3JhbSk7dmFyIGU9aC5pbmRleE9mKGQpO2gu c3BsaWNlKGUsMSksci5zaGFkZXJDb3VudC0tfTA+PW9bZC52ZXJ0SWRdLnJlZkNvdW50JiYo dC5kZWxldGVTaGFkZXIodVtkLnZlcnRJZF0pLGRlbGV0ZSB1W2QudmVydElkXSxkZWxldGUg ZltkLmZyYWdJZF1bZC52ZXJ0SWRdKSxPYmplY3Qua2V5cyhmW2QuZnJhZ0lkXSkubGVuZ3Ro fHwodC5kZWxldGVTaGFkZXIoY1tkLmZyYWdJZF0pLGRlbGV0ZSBjW2QuZnJhZ0lkXSxkZWxl dGUgZltkLmZyYWdJZF0pfX0pfSxyZXN0b3JlOmZ1bmN0aW9uKCl7Yz17fSx1PXt9O2Zvcih2 YXIgdD0wO3Q8aC5sZW5ndGg7Kyt0KWwoaFt0XSxudWxsLGhbdF0uYXR0cmlidXRlcy5tYXAo KGZ1bmN0aW9uKHQpe3JldHVyblt0LmxvY2F0aW9uLHQubmFtZV19KSkpfSxzaGFkZXI6byxm cmFnOi0xLHZlcnQ6LTF9fWZ1bmN0aW9uIEwodCxlLHIsbixpLGEsbyl7ZnVuY3Rpb24gcyhp KXt2YXIgYTthPW51bGw9PT1lLm5leHQ/NTEyMTplLm5leHQuY29sb3JBdHRhY2htZW50c1sw XS50ZXh0dXJlLl90ZXh0dXJlLnR5cGU7dmFyIG89MCxzPTAsbD1uLmZyYW1lYnVmZmVyV2lk dGgsYz1uLmZyYW1lYnVmZmVySGVpZ2h0LHU9bnVsbDtyZXR1cm4gSihpKT91PWk6aSYmKG89 MHxpLngscz0wfGkueSxsPTB8KGkud2lkdGh8fG4uZnJhbWVidWZmZXJXaWR0aC1vKSxjPTB8 KGkuaGVpZ2h0fHxuLmZyYW1lYnVmZmVySGVpZ2h0LXMpLHU9aS5kYXRhfHxudWxsKSxyKCks aT1sKmMqNCx1fHwoNTEyMT09PWE/dT1uZXcgVWludDhBcnJheShpKTo1MTI2PT09YSYmKHU9 dXx8bmV3IEZsb2F0MzJBcnJheShpKSkpLHQucGl4ZWxTdG9yZWkoMzMzMyw0KSx0LnJlYWRQ aXhlbHMobyxzLGwsYyw2NDA4LGEsdSksdX1yZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQm JiJmcmFtZWJ1ZmZlciJpbiB0P2Z1bmN0aW9uKHQpe3ZhciByO3JldHVybiBlLnNldEZCTyh7 ZnJhbWVidWZmZXI6dC5mcmFtZWJ1ZmZlcn0sKGZ1bmN0aW9uKCl7cj1zKHQpfSkpLHJ9KHQp OnModCl9fWZ1bmN0aW9uIEModCxlKXtyZXR1cm4gdD4+PmV8dDw8MzItZX1mdW5jdGlvbiBQ KHQsZSl7dmFyIHI9KDY1NTM1JnQpKyg2NTUzNSZlKTtyZXR1cm4odD4+MTYpKyhlPj4xNikr KHI+PjE2KTw8MTZ8NjU1MzUmcn1mdW5jdGlvbiBJKHQpe3JldHVybiBBcnJheS5wcm90b3R5 cGUuc2xpY2UuY2FsbCh0KX1mdW5jdGlvbiBPKHQpe3JldHVybiBJKHQpLmpvaW4oIiIpfWZ1 bmN0aW9uIHoodCl7ZnVuY3Rpb24gZSgpe3ZhciB0PVtdLGU9W107cmV0dXJuIEgoKGZ1bmN0 aW9uKCl7dC5wdXNoLmFwcGx5KHQsSShhcmd1bWVudHMpKX0pLHtkZWY6ZnVuY3Rpb24oKXt2 YXIgcj0idiIraSsrO3JldHVybiBlLnB1c2gociksMDxhcmd1bWVudHMubGVuZ3RoJiYodC5w dXNoKHIsIj0iKSx0LnB1c2guYXBwbHkodCxJKGFyZ3VtZW50cykpLHQucHVzaCgiOyIpKSxy fSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiBPKFswPGUubGVuZ3RoPyJ2YXIgIitlLmpv aW4oIiwiKSsiOyI6IiIsTyh0KV0pfX0pfWZ1bmN0aW9uIHIoKXtmdW5jdGlvbiB0KHQsZSl7 bih0LGUsIj0iLHIuZGVmKHQsZSksIjsiKX12YXIgcj1lKCksbj1lKCksaT1yLnRvU3RyaW5n LGE9bi50b1N0cmluZztyZXR1cm4gSCgoZnVuY3Rpb24oKXtyLmFwcGx5KHIsSShhcmd1bWVu dHMpKX0pLHtkZWY6ci5kZWYsZW50cnk6cixleGl0Om4sc2F2ZTp0LHNldDpmdW5jdGlvbihl LG4saSl7dChlLG4pLHIoZSxuLCI9IixpLCI7Iil9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0 dXJuIGkoKSthKCl9fSl9dmFyIG49dCYmdC5jYWNoZSxpPTAsYT1bXSxvPVtdLHM9W10sbD1l KCksYz17fTtyZXR1cm57Z2xvYmFsOmwsbGluazpmdW5jdGlvbih0LGUpe3ZhciByPWUmJmUu c3RhYmxlO2lmKCFyKWZvcih2YXIgbj0wO248by5sZW5ndGg7KytuKWlmKG9bbl09PT10JiYh c1tuXSlyZXR1cm4gYVtuXTtyZXR1cm4gbj0iZyIraSsrLGEucHVzaChuKSxvLnB1c2godCks cy5wdXNoKHIpLG59LGJsb2NrOmUscHJvYzpmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt2 YXIgdD0iYSIraS5sZW5ndGg7cmV0dXJuIGkucHVzaCh0KSx0fXZhciBpPVtdO2U9ZXx8MDtm b3IodmFyIGE9MDthPGU7KythKW4oKTt2YXIgbz0oYT1yKCkpLnRvU3RyaW5nO3JldHVybiBj W3RdPUgoYSx7YXJnOm4sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gTyhbImZ1bmN0aW9u KCIsaS5qb2luKCksIil7IixvKCksIn0iXSl9fSl9LHNjb3BlOnIsY29uZDpmdW5jdGlvbigp e3ZhciB0PU8oYXJndW1lbnRzKSxlPXIoKSxuPXIoKSxpPWUudG9TdHJpbmcsYT1uLnRvU3Ry aW5nO3JldHVybiBIKGUse3RoZW46ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseShlLEkoYXJn dW1lbnRzKSksdGhpc30sZWxzZTpmdW5jdGlvbigpe3JldHVybiBuLmFwcGx5KG4sSShhcmd1 bWVudHMpKSx0aGlzfSx0b1N0cmluZzpmdW5jdGlvbigpe3ZhciBlPWEoKTtyZXR1cm4gZSYm KGU9ImVsc2V7IitlKyJ9IiksTyhbImlmKCIsdCwiKXsiLGkoKSwifSIsZV0pfX0pfSxjb21w aWxlOmZ1bmN0aW9uKCl7dmFyIHQ9WycidXNlIHN0cmljdCI7JyxsLCJyZXR1cm4geyJdO09i amVjdC5rZXlzKGMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QucHVzaCgnIicsZSwnIjonLGNb ZV0udG9TdHJpbmcoKSwiLCIpfSkpLHQucHVzaCgifSIpO3ZhciBlLHI9Tyh0KS5yZXBsYWNl KC87L2csIjtcbiIpLnJlcGxhY2UoL30vZywifVxuIikucmVwbGFjZSgvey9nLCJ7XG4iKTty ZXR1cm4gbiYmKGU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9IiIsbj0wO248dC5sZW5ndGg7 bisrKWU9dC5jaGFyQ29kZUF0KG4pLHIrPSIwMTIzNDU2Nzg5YWJjZGVmIi5jaGFyQXQoZT4+ PjQmMTUpKyIwMTIzNDU2Nzg5YWJjZGVmIi5jaGFyQXQoMTUmZSk7cmV0dXJuIHJ9KGZ1bmN0 aW9uKHQpe2Zvcih2YXIgZT1BcnJheSh0Lmxlbmd0aD4+Mikscj0wO3I8ZS5sZW5ndGg7cisr KWVbcl09MDtmb3Iocj0wO3I8OCp0Lmxlbmd0aDtyKz04KWVbcj4+NV18PSgyNTUmdC5jaGFy Q29kZUF0KHIvOCkpPDwyNC1yJTMyO3ZhciBuLGksYSxvLHMsbCxjLHUsZixoLHAsZD04KnQu bGVuZ3RoO2Zvcih0PVsxNzc5MDMzNzAzLC0xMTUwODMzMDE5LDEwMTM5MDQyNDIsLTE1MjE0 ODY1MzQsMTM1OTg5MzExOSwtMTY5NDE0NDM3Miw1Mjg3MzQ2MzUsMTU0MTQ1OTIyNV0scj1B cnJheSg2NCksZVtkPj41XXw9MTI4PDwyNC1kJTMyLGVbMTUrKGQrNjQ+Pjk8PDQpXT1kLHU9 MDt1PGUubGVuZ3RoO3UrPTE2KXtmb3IoZD10WzBdLG49dFsxXSxpPXRbMl0sYT10WzNdLG89 dFs0XSxzPXRbNV0sbD10WzZdLGM9dFs3XSxmPTA7NjQ+ZjtmKyspe3ZhciBtO2lmKDE2PmYp cltmXT1lW2YrdV07ZWxzZSBoPWYscD1QKHA9QyhwPXJbZi0yXSwxNyleQyhwLDE5KV5wPj4+ MTAscltmLTddKSxtPUMobT1yW2YtMTVdLDcpXkMobSwxOClebT4+PjMscltoXT1QKFAocCxt KSxyW2YtMTZdKTtoPVAoUChQKFAoYyxoPUMoaD1vLDYpXkMoaCwxMSleQyhoLDI1KSksbyZz Xn5vJmwpLGt0W2ZdKSxyW2ZdKSxwPVAoYz1DKGM9ZCwyKV5DKGMsMTMpXkMoYywyMiksZCZu XmQmaV5uJmkpLGM9bCxsPXMscz1vLG89UChhLGgpLGE9aSxpPW4sbj1kLGQ9UChoLHApfXRb MF09UChkLHRbMF0pLHRbMV09UChuLHRbMV0pLHRbMl09UChpLHRbMl0pLHRbM109UChhLHRb M10pLHRbNF09UChvLHRbNF0pLHRbNV09UChzLHRbNV0pLHRbNl09UChsLHRbNl0pLHRbN109 UChjLHRbN10pfWZvcihlPSIiLHI9MDtyPDMyKnQubGVuZ3RoO3IrPTgpZSs9U3RyaW5nLmZy b21DaGFyQ29kZSh0W3I+PjVdPj4+MjQtciUzMiYyNTUpO3JldHVybiBlfShmdW5jdGlvbih0 KXtmb3IodmFyIGUscixuPSIiLGk9LTE7KytpPHQubGVuZ3RoOyllPXQuY2hhckNvZGVBdChp KSxyPWkrMTx0Lmxlbmd0aD90LmNoYXJDb2RlQXQoaSsxKTowLDU1Mjk2PD1lJiY1NjMxOT49 ZSYmNTYzMjA8PXImJjU3MzQzPj1yJiYoZT02NTUzNisoKDEwMjMmZSk8PDEwKSsoMTAyMyZy KSxpKyspLDEyNz49ZT9uKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGUpOjIwNDc+PWU/bis9U3Ry aW5nLmZyb21DaGFyQ29kZSgxOTJ8ZT4+PjYmMzEsMTI4fDYzJmUpOjY1NTM1Pj1lP24rPVN0 cmluZy5mcm9tQ2hhckNvZGUoMjI0fGU+Pj4xMiYxNSwxMjh8ZT4+PjYmNjMsMTI4fDYzJmUp OjIwOTcxNTE+PWUmJihuKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDI0MHxlPj4+MTgmNywxMjh8 ZT4+PjEyJjYzLDEyOHxlPj4+NiY2MywxMjh8NjMmZSkpO3JldHVybiBufShyKSkpLG5bZV0p P25bZV0uYXBwbHkobnVsbCxvKToocj1GdW5jdGlvbi5hcHBseShudWxsLGEuY29uY2F0KHIp KSxuJiYobltlXT1yKSxyLmFwcGx5KG51bGwsbykpfX19ZnVuY3Rpb24gRCh0KXtyZXR1cm4g QXJyYXkuaXNBcnJheSh0KXx8Sih0KXx8bCh0KX1mdW5jdGlvbiBSKHQpe3JldHVybiB0LnNv cnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuInZpZXdwb3J0Ij09PXQ/LTE6InZpZXdwb3J0Ij09 PWU/MTp0PGU/LTE6MX0pKX1mdW5jdGlvbiBGKHQsZSxyLG4pe3RoaXMudGhpc0RlcD10LHRo aXMuY29udGV4dERlcD1lLHRoaXMucHJvcERlcD1yLHRoaXMuYXBwZW5kPW59ZnVuY3Rpb24g Qih0KXtyZXR1cm4gdCYmISh0LnRoaXNEZXB8fHQuY29udGV4dERlcHx8dC5wcm9wRGVwKX1m dW5jdGlvbiBOKHQpe3JldHVybiBuZXcgRighMSwhMSwhMSx0KX1mdW5jdGlvbiBqKHQsZSl7 dmFyIHI9dC50eXBlO2lmKDA9PT1yKXJldHVybiBuZXcgRighMCwxPD0ocj10LmRhdGEubGVu Z3RoKSwyPD1yLGUpO2lmKDQ9PT1yKXJldHVybiBuZXcgRigocj10LmRhdGEpLnRoaXNEZXAs ci5jb250ZXh0RGVwLHIucHJvcERlcCxlKTtpZig1PT09cilyZXR1cm4gbmV3IEYoITEsITEs ITEsZSk7aWYoNj09PXIpe2Zvcih2YXIgbj1yPSExLGk9ITEsYT0wO2E8dC5kYXRhLmxlbmd0 aDsrK2Epe3ZhciBvPXQuZGF0YVthXTsxPT09by50eXBlP2k9ITA6Mj09PW8udHlwZT9uPSEw OjM9PT1vLnR5cGU/cj0hMDowPT09by50eXBlPyhyPSEwLDE8PShvPW8uZGF0YSkmJihuPSEw KSwyPD1vJiYoaT0hMCkpOjQ9PT1vLnR5cGUmJihyPXJ8fG8uZGF0YS50aGlzRGVwLG49bnx8 by5kYXRhLmNvbnRleHREZXAsaT1pfHxvLmRhdGEucHJvcERlcCl9cmV0dXJuIG5ldyBGKHIs bixpLGUpfXJldHVybiBuZXcgRigzPT09ciwyPT09ciwxPT09cixlKX1mdW5jdGlvbiBVKHQs ZSxyLG4saSxvLHMsbCxjLHUsZixoLHAsZCxtLHYpe2Z1bmN0aW9uIHkodCl7cmV0dXJuIHQu cmVwbGFjZSgiLiIsIl8iKX1mdW5jdGlvbiB4KHQsZSxyKXt2YXIgbj15KHQpO290LnB1c2go dCksaXRbbl09bnRbbl09ISFyLHN0W25dPWV9ZnVuY3Rpb24gYih0LGUscil7dmFyIG49eSh0 KTtvdC5wdXNoKHQpLEFycmF5LmlzQXJyYXkocik/KG50W25dPXIuc2xpY2UoKSxpdFtuXT1y LnNsaWNlKCkpOm50W25dPWl0W25dPXIsbHRbbl09ZX1mdW5jdGlvbiBfKCl7dmFyIHQ9eih7 Y2FjaGU6bX0pLHI9dC5saW5rLG49dC5nbG9iYWw7dC5pZD1mdCsrLHQuYmF0Y2hJZD0iMCI7 dmFyIGk9cihjdCksYT10LnNoYXJlZD17cHJvcHM6ImEwIn07T2JqZWN0LmtleXMoY3QpLmZv ckVhY2goKGZ1bmN0aW9uKHQpe2FbdF09bi5kZWYoaSwiLiIsdCl9KSk7dmFyIG89dC5uZXh0 PXt9LHM9dC5jdXJyZW50PXt9O09iamVjdC5rZXlzKGx0KS5mb3JFYWNoKChmdW5jdGlvbih0 KXtBcnJheS5pc0FycmF5KG50W3RdKSYmKG9bdF09bi5kZWYoYS5uZXh0LCIuIix0KSxzW3Rd PW4uZGVmKGEuY3VycmVudCwiLiIsdCkpfSkpO3ZhciBsPXQuY29uc3RhbnRzPXt9O09iamVj dC5rZXlzKHV0KS5mb3JFYWNoKChmdW5jdGlvbih0KXtsW3RdPW4uZGVmKEpTT04uc3RyaW5n aWZ5KHV0W3RdKSl9KSksdC5pbnZva2U9ZnVuY3Rpb24oZSxuKXtzd2l0Y2gobi50eXBlKXtj YXNlIDA6dmFyIGk9WyJ0aGlzIixhLmNvbnRleHQsYS5wcm9wcyx0LmJhdGNoSWRdO3JldHVy biBlLmRlZihyKG4uZGF0YSksIi5jYWxsKCIsaS5zbGljZSgwLE1hdGgubWF4KG4uZGF0YS5s ZW5ndGgrMSw0KSksIikiKTtjYXNlIDE6cmV0dXJuIGUuZGVmKGEucHJvcHMsbi5kYXRhKTtj YXNlIDI6cmV0dXJuIGUuZGVmKGEuY29udGV4dCxuLmRhdGEpO2Nhc2UgMzpyZXR1cm4gZS5k ZWYoInRoaXMiLG4uZGF0YSk7Y2FzZSA0OnJldHVybiBuLmRhdGEuYXBwZW5kKHQsZSksbi5k YXRhLnJlZjtjYXNlIDU6cmV0dXJuIG4uZGF0YS50b1N0cmluZygpO2Nhc2UgNjpyZXR1cm4g bi5kYXRhLm1hcCgoZnVuY3Rpb24ocil7cmV0dXJuIHQuaW52b2tlKGUscil9KSl9fSx0LmF0 dHJpYkNhY2hlPXt9O3ZhciBjPXt9O3JldHVybiB0LnNjb3BlQXR0cmliPWZ1bmN0aW9uKHQp e2lmKCh0PWUuaWQodCkpaW4gYylyZXR1cm4gY1t0XTt2YXIgbj11LnNjb3BlW3RdO3JldHVy biBufHwobj11LnNjb3BlW3RdPW5ldyBLKSxjW3RdPXIobil9LHR9ZnVuY3Rpb24gdyh0LGUp e3ZhciByPXQuc3RhdGljLG49dC5keW5hbWljO2lmKCJmcmFtZWJ1ZmZlciJpbiByKXt2YXIg aT1yLmZyYW1lYnVmZmVyO3JldHVybiBpPyhpPWwuZ2V0RnJhbWVidWZmZXIoaSksTigoZnVu Y3Rpb24odCxlKXt2YXIgcj10LmxpbmsoaSksbj10LnNoYXJlZDtyZXR1cm4gZS5zZXQobi5m cmFtZWJ1ZmZlciwiLm5leHQiLHIpLG49bi5jb250ZXh0LGUuc2V0KG4sIi5mcmFtZWJ1ZmZl cldpZHRoIixyKyIud2lkdGgiKSxlLnNldChuLCIuZnJhbWVidWZmZXJIZWlnaHQiLHIrIi5o ZWlnaHQiKSxyfSkpKTpOKChmdW5jdGlvbih0LGUpe3ZhciByPXQuc2hhcmVkO3JldHVybiBl LnNldChyLmZyYW1lYnVmZmVyLCIubmV4dCIsIm51bGwiKSxyPXIuY29udGV4dCxlLnNldChy LCIuZnJhbWVidWZmZXJXaWR0aCIscisiLmRyYXdpbmdCdWZmZXJXaWR0aCIpLGUuc2V0KHIs Ii5mcmFtZWJ1ZmZlckhlaWdodCIscisiLmRyYXdpbmdCdWZmZXJIZWlnaHQiKSwibnVsbCJ9 KSl9aWYoImZyYW1lYnVmZmVyImluIG4pe3ZhciBhPW4uZnJhbWVidWZmZXI7cmV0dXJuIGoo YSwoZnVuY3Rpb24odCxlKXt2YXIgcj10Lmludm9rZShlLGEpLG49dC5zaGFyZWQsaT1uLmZy YW1lYnVmZmVyO3I9ZS5kZWYoaSwiLmdldEZyYW1lYnVmZmVyKCIsciwiKSIpO3JldHVybiBl LnNldChpLCIubmV4dCIsciksbj1uLmNvbnRleHQsZS5zZXQobiwiLmZyYW1lYnVmZmVyV2lk dGgiLHIrIj8iK3IrIi53aWR0aDoiK24rIi5kcmF3aW5nQnVmZmVyV2lkdGgiKSxlLnNldChu LCIuZnJhbWVidWZmZXJIZWlnaHQiLHIrIj8iK3IrIi5oZWlnaHQ6IituKyIuZHJhd2luZ0J1 ZmZlckhlaWdodCIpLHJ9KSl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gVCh0LHIsbil7ZnVuY3Rp b24gaSh0KXtpZih0IGluIGEpe3ZhciByPWUuaWQoYVt0XSk7cmV0dXJuKHQ9TigoZnVuY3Rp b24oKXtyZXR1cm4gcn0pKSkuaWQ9cix0fWlmKHQgaW4gbyl7dmFyIG49b1t0XTtyZXR1cm4g aihuLChmdW5jdGlvbih0LGUpe3ZhciByPXQuaW52b2tlKGUsbik7cmV0dXJuIGUuZGVmKHQu c2hhcmVkLnN0cmluZ3MsIi5pZCgiLHIsIikiKX0pKX1yZXR1cm4gbnVsbH12YXIgYT10LnN0 YXRpYyxvPXQuZHluYW1pYyxzPWkoImZyYWciKSxsPWkoInZlcnQiKSxjPW51bGw7cmV0dXJu IEIocykmJkIobCk/KGM9Zi5wcm9ncmFtKGwuaWQscy5pZCxudWxsLG4pLHQ9TigoZnVuY3Rp b24odCxlKXtyZXR1cm4gdC5saW5rKGMpfSkpKTp0PW5ldyBGKHMmJnMudGhpc0RlcHx8bCYm bC50aGlzRGVwLHMmJnMuY29udGV4dERlcHx8bCYmbC5jb250ZXh0RGVwLHMmJnMucHJvcERl cHx8bCYmbC5wcm9wRGVwLChmdW5jdGlvbih0LGUpe3ZhciByLG4saT10LnNoYXJlZC5zaGFk ZXI7cmV0dXJuIHI9cz9zLmFwcGVuZCh0LGUpOmUuZGVmKGksIi4iLCJmcmFnIiksbj1sP2wu YXBwZW5kKHQsZSk6ZS5kZWYoaSwiLiIsInZlcnQiKSxlLmRlZihpKyIucHJvZ3JhbSgiK24r IiwiK3IrIikiKX0pKSx7ZnJhZzpzLHZlcnQ6bCxwcm9nVmFyOnQscHJvZ3JhbTpjfX1mdW5j dGlvbiBrKHQsZSl7ZnVuY3Rpb24gcih0LGUpe2lmKHQgaW4gbil7dmFyIHI9MHxuW3RdO3Jl dHVybiBlP2Eub2Zmc2V0PXI6YS5pbnN0YW5jZXM9cixOKChmdW5jdGlvbih0LG4pe3JldHVy biBlJiYodC5PRkZTRVQ9cikscn0pKX1pZih0IGluIGkpe3ZhciBvPWlbdF07cmV0dXJuIGoo bywoZnVuY3Rpb24odCxyKXt2YXIgbj10Lmludm9rZShyLG8pO3JldHVybiBlJiYodC5PRkZT RVQ9biksbn0pKX1pZihlKXtpZihjKXJldHVybiBOKChmdW5jdGlvbih0LGUpe3JldHVybiB0 Lk9GRlNFVD0wfSkpO2lmKHMpcmV0dXJuIG5ldyBGKGwudGhpc0RlcCxsLmNvbnRleHREZXAs bC5wcm9wRGVwLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmRlZih0LnNoYXJlZC52YW8rIi5j dXJyZW50VkFPPyIrdC5zaGFyZWQudmFvKyIuY3VycmVudFZBTy5vZmZzZXQ6MCIpfSkpfWVs c2UgaWYocylyZXR1cm4gbmV3IEYobC50aGlzRGVwLGwuY29udGV4dERlcCxsLnByb3BEZXAs KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZGVmKHQuc2hhcmVkLnZhbysiLmN1cnJlbnRWQU8/ Iit0LnNoYXJlZC52YW8rIi5jdXJyZW50VkFPLmluc3RhbmNlczotMSIpfSkpO3JldHVybiBu dWxsfXZhciBuPXQuc3RhdGljLGk9dC5keW5hbWljLGE9e30scz0hMSxsPWZ1bmN0aW9uKCl7 aWYoInZhbyJpbiBuKXt2YXIgdD1uLnZhbztyZXR1cm4gbnVsbCE9PXQmJm51bGw9PT11Lmdl dFZBTyh0KSYmKHQ9dS5jcmVhdGVWQU8odCkpLHM9ITAsYS52YW89dCxOKChmdW5jdGlvbihl KXt2YXIgcj11LmdldFZBTyh0KTtyZXR1cm4gcj9lLmxpbmsocik6Im51bGwifSkpfWlmKCJ2 YW8iaW4gaSl7cz0hMDt2YXIgZT1pLnZhbztyZXR1cm4gaihlLChmdW5jdGlvbih0LHIpe3Zh ciBuPXQuaW52b2tlKHIsZSk7cmV0dXJuIHIuZGVmKHQuc2hhcmVkLnZhbysiLmdldFZBTygi K24rIikiKX0pKX1yZXR1cm4gbnVsbH0oKSxjPSExLGY9ZnVuY3Rpb24oKXtpZigiZWxlbWVu dHMiaW4gbil7dmFyIHQ9bi5lbGVtZW50cztpZihhLmVsZW1lbnRzPXQsRCh0KSl7dmFyIGU9 YS5lbGVtZW50cz1vLmNyZWF0ZSh0LCEwKTt0PW8uZ2V0RWxlbWVudHMoZSk7Yz0hMH1lbHNl IHQmJih0PW8uZ2V0RWxlbWVudHModCksYz0hMCk7cmV0dXJuKGU9TigoZnVuY3Rpb24oZSxy KXtpZih0KXt2YXIgbj1lLmxpbmsodCk7cmV0dXJuIGUuRUxFTUVOVFM9bn1yZXR1cm4gZS5F TEVNRU5UUz1udWxsfSkpKS52YWx1ZT10LGV9aWYoImVsZW1lbnRzImluIGkpe2M9ITA7dmFy IHI9aS5lbGVtZW50cztyZXR1cm4gaihyLChmdW5jdGlvbih0LGUpe3ZhciBuPShpPXQuc2hh cmVkKS5pc0J1ZmZlckFyZ3MsaT1pLmVsZW1lbnRzLGE9dC5pbnZva2UoZSxyKSxvPWUuZGVm KCJudWxsIik7bj1lLmRlZihuLCIoIixhLCIpIiksYT10LmNvbmQobikudGhlbihvLCI9Iixp LCIuY3JlYXRlU3RyZWFtKCIsYSwiKTsiKS5lbHNlKG8sIj0iLGksIi5nZXRFbGVtZW50cygi LGEsIik7Iik7cmV0dXJuIGUuZW50cnkoYSksZS5leGl0KHQuY29uZChuKS50aGVuKGksIi5k ZXN0cm95U3RyZWFtKCIsbywiKTsiKSksdC5FTEVNRU5UUz1vfSkpfXJldHVybiBzP25ldyBG KGwudGhpc0RlcCxsLmNvbnRleHREZXAsbC5wcm9wRGVwLChmdW5jdGlvbih0LGUpe3JldHVy biBlLmRlZih0LnNoYXJlZC52YW8rIi5jdXJyZW50VkFPPyIrdC5zaGFyZWQuZWxlbWVudHMr Ii5nZXRFbGVtZW50cygiK3Quc2hhcmVkLnZhbysiLmN1cnJlbnRWQU8uZWxlbWVudHMpOm51 bGwiKX0pKTpudWxsfSgpLGg9cigib2Zmc2V0IiwhMCkscD1mdW5jdGlvbigpe2lmKCJwcmlt aXRpdmUiaW4gbil7dmFyIHQ9bi5wcmltaXRpdmU7cmV0dXJuIGEucHJpbWl0aXZlPXQsTigo ZnVuY3Rpb24oZSxyKXtyZXR1cm4gYXRbdF19KSl9aWYoInByaW1pdGl2ZSJpbiBpKXt2YXIg ZT1pLnByaW1pdGl2ZTtyZXR1cm4gaihlLChmdW5jdGlvbih0LHIpe3ZhciBuPXQuY29uc3Rh bnRzLnByaW1UeXBlcyxpPXQuaW52b2tlKHIsZSk7cmV0dXJuIHIuZGVmKG4sIlsiLGksIl0i KX0pKX1yZXR1cm4gYz9CKGYpP2YudmFsdWU/TigoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5k ZWYodC5FTEVNRU5UUywiLnByaW1UeXBlIil9KSk6TigoZnVuY3Rpb24oKXtyZXR1cm4gNH0p KTpuZXcgRihmLnRoaXNEZXAsZi5jb250ZXh0RGVwLGYucHJvcERlcCwoZnVuY3Rpb24odCxl KXt2YXIgcj10LkVMRU1FTlRTO3JldHVybiBlLmRlZihyLCI/IixyLCIucHJpbVR5cGU6Iiw0 KX0pKTpzP25ldyBGKGwudGhpc0RlcCxsLmNvbnRleHREZXAsbC5wcm9wRGVwLChmdW5jdGlv bih0LGUpe3JldHVybiBlLmRlZih0LnNoYXJlZC52YW8rIi5jdXJyZW50VkFPPyIrdC5zaGFy ZWQudmFvKyIuY3VycmVudFZBTy5wcmltaXRpdmU6NCIpfSkpOm51bGx9KCksZD1mdW5jdGlv bigpe2lmKCJjb3VudCJpbiBuKXt2YXIgdD0wfG4uY291bnQ7cmV0dXJuIGEuY291bnQ9dCxO KChmdW5jdGlvbigpe3JldHVybiB0fSkpfWlmKCJjb3VudCJpbiBpKXt2YXIgZT1pLmNvdW50 O3JldHVybiBqKGUsKGZ1bmN0aW9uKHQscil7cmV0dXJuIHQuaW52b2tlKHIsZSl9KSl9cmV0 dXJuIGM/QihmKT9mP2g/bmV3IEYoaC50aGlzRGVwLGguY29udGV4dERlcCxoLnByb3BEZXAs KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZGVmKHQuRUxFTUVOVFMsIi52ZXJ0Q291bnQtIix0 Lk9GRlNFVCl9KSk6TigoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5kZWYodC5FTEVNRU5UUywi LnZlcnRDb3VudCIpfSkpOk4oKGZ1bmN0aW9uKCl7cmV0dXJuLTF9KSk6bmV3IEYoZi50aGlz RGVwfHxoLnRoaXNEZXAsZi5jb250ZXh0RGVwfHxoLmNvbnRleHREZXAsZi5wcm9wRGVwfHxo LnByb3BEZXAsKGZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5FTEVNRU5UUztyZXR1cm4gdC5PRkZT RVQ/ZS5kZWYociwiPyIsciwiLnZlcnRDb3VudC0iLHQuT0ZGU0VULCI6LTEiKTplLmRlZihy LCI/IixyLCIudmVydENvdW50Oi0xIil9KSk6cz9uZXcgRihsLnRoaXNEZXAsbC5jb250ZXh0 RGVwLGwucHJvcERlcCwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5kZWYodC5zaGFyZWQudmFv LCIuY3VycmVudFZBTz8iLHQuc2hhcmVkLnZhbywiLmN1cnJlbnRWQU8uY291bnQ6LTEiKX0p KTpudWxsfSgpLG09cigiaW5zdGFuY2VzIiwhMSk7cmV0dXJue2VsZW1lbnRzOmYscHJpbWl0 aXZlOnAsY291bnQ6ZCxpbnN0YW5jZXM6bSxvZmZzZXQ6aCx2YW86bCx2YW9BY3RpdmU6cyxl bGVtZW50c0FjdGl2ZTpjLHN0YXRpYzphfX1mdW5jdGlvbiBBKHQscil7dmFyIG49dC5zdGF0 aWMsYT10LmR5bmFtaWMsbz17fTtyZXR1cm4gT2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVu Y3Rpb24odCl7dmFyIHI9blt0XSxhPWUuaWQodCkscz1uZXcgSztpZihEKHIpKXMuc3RhdGU9 MSxzLmJ1ZmZlcj1pLmdldEJ1ZmZlcihpLmNyZWF0ZShyLDM0OTYyLCExLCEwKSkscy50eXBl PTA7ZWxzZSBpZihjPWkuZ2V0QnVmZmVyKHIpKXMuc3RhdGU9MSxzLmJ1ZmZlcj1jLHMudHlw ZT0wO2Vsc2UgaWYoImNvbnN0YW50ImluIHIpe3ZhciBsPXIuY29uc3RhbnQ7cy5idWZmZXI9 Im51bGwiLHMuc3RhdGU9MiwibnVtYmVyIj09dHlwZW9mIGw/cy54PWw6QXQuZm9yRWFjaCgo ZnVuY3Rpb24odCxlKXtlPGwubGVuZ3RoJiYoc1t0XT1sW2VdKX0pKX1lbHNle3ZhciBjPUQo ci5idWZmZXIpP2kuZ2V0QnVmZmVyKGkuY3JlYXRlKHIuYnVmZmVyLDM0OTYyLCExLCEwKSk6 aS5nZXRCdWZmZXIoci5idWZmZXIpLHU9MHxyLm9mZnNldCxmPTB8ci5zdHJpZGUsaD0wfHIu c2l6ZSxwPSEhci5ub3JtYWxpemVkLGQ9MDsidHlwZSJpbiByJiYoZD10dFtyLnR5cGVdKSxy PTB8ci5kaXZpc29yLHMuYnVmZmVyPWMscy5zdGF0ZT0xLHMuc2l6ZT1oLHMubm9ybWFsaXpl ZD1wLHMudHlwZT1kfHxjLmR0eXBlLHMub2Zmc2V0PXUscy5zdHJpZGU9ZixzLmRpdmlzb3I9 cn1vW3RdPU4oKGZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5hdHRyaWJDYWNoZTtpZihhIGluIHIp cmV0dXJuIHJbYV07dmFyIG49e2lzU3RyZWFtOiExfTtyZXR1cm4gT2JqZWN0LmtleXMocyku Zm9yRWFjaCgoZnVuY3Rpb24odCl7blt0XT1zW3RdfSkpLHMuYnVmZmVyJiYobi5idWZmZXI9 dC5saW5rKHMuYnVmZmVyKSxuLnR5cGU9bi50eXBlfHxuLmJ1ZmZlcisiLmR0eXBlIiksclth XT1ufSkpfSkpLE9iamVjdC5rZXlzKGEpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPWFb dF07b1t0XT1qKGUsKGZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbih0KXtyKGxbdF0sIj0iLGks Ii4iLHQsInwwOyIpfXZhciBpPXQuaW52b2tlKHIsZSksYT10LnNoYXJlZCxvPXQuY29uc3Rh bnRzLHM9YS5pc0J1ZmZlckFyZ3MsbD0oYT1hLmJ1ZmZlcix7aXNTdHJlYW06ci5kZWYoITEp fSksYz1uZXcgSztjLnN0YXRlPTEsT2JqZWN0LmtleXMoYykuZm9yRWFjaCgoZnVuY3Rpb24o dCl7bFt0XT1yLmRlZigiIitjW3RdKX0pKTt2YXIgdT1sLmJ1ZmZlcixmPWwudHlwZTtyZXR1 cm4gcigiaWYoIixzLCIoIixpLCIpKXsiLGwuaXNTdHJlYW0sIj10cnVlOyIsdSwiPSIsYSwi LmNyZWF0ZVN0cmVhbSgiLDM0OTYyLCIsIixpLCIpOyIsZiwiPSIsdSwiLmR0eXBlOyIsIn1l bHNleyIsdSwiPSIsYSwiLmdldEJ1ZmZlcigiLGksIik7IiwiaWYoIix1LCIpeyIsZiwiPSIs dSwiLmR0eXBlOyIsJ31lbHNlIGlmKCJjb25zdGFudCIgaW4gJyxpLCIpeyIsbC5zdGF0ZSwi PSIsMiwiOyIsImlmKHR5cGVvZiAiK2krJy5jb25zdGFudCA9PT0gIm51bWJlciIpeycsbFtB dFswXV0sIj0iLGksIi5jb25zdGFudDsiLEF0LnNsaWNlKDEpLm1hcCgoZnVuY3Rpb24odCl7 cmV0dXJuIGxbdF19KSkuam9pbigiPSIpLCI9MDsiLCJ9ZWxzZXsiLEF0Lm1hcCgoZnVuY3Rp b24odCxlKXtyZXR1cm4gbFt0XSsiPSIraSsiLmNvbnN0YW50Lmxlbmd0aD4iK2UrIj8iK2kr Ii5jb25zdGFudFsiK2UrIl06MDsifSkpLmpvaW4oIiIpLCJ9fWVsc2V7IiwiaWYoIixzLCIo IixpLCIuYnVmZmVyKSl7Iix1LCI9IixhLCIuY3JlYXRlU3RyZWFtKCIsMzQ5NjIsIiwiLGks Ii5idWZmZXIpOyIsIn1lbHNleyIsdSwiPSIsYSwiLmdldEJ1ZmZlcigiLGksIi5idWZmZXIp OyIsIn0iLGYsJz0idHlwZSIgaW4gJyxpLCI/IixvLmdsVHlwZXMsIlsiLGksIi50eXBlXToi LHUsIi5kdHlwZTsiLGwubm9ybWFsaXplZCwiPSEhIixpLCIubm9ybWFsaXplZDsiKSxuKCJz aXplIiksbigib2Zmc2V0Iiksbigic3RyaWRlIiksbigiZGl2aXNvciIpLHIoIn19Iiksci5l eGl0KCJpZigiLGwuaXNTdHJlYW0sIil7IixhLCIuZGVzdHJveVN0cmVhbSgiLHUsIik7Iiwi fSIpLGx9KSl9KSksb31mdW5jdGlvbiBNKHQsZSxuLGksbyl7ZnVuY3Rpb24gcyh0KXt2YXIg ZT1jW3RdO2UmJihoW3RdPWUpfXZhciBsPWZ1bmN0aW9uKHQsZSl7aWYoInN0cmluZyI9PXR5 cGVvZihyPXQuc3RhdGljKS5mcmFnJiYic3RyaW5nIj09dHlwZW9mIHIudmVydCl7aWYoMDxP YmplY3Qua2V5cyhlLmR5bmFtaWMpLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgcj1lLnN0YXRp YyxuPU9iamVjdC5rZXlzKHIpO2lmKDA8bi5sZW5ndGgmJiJudW1iZXIiPT10eXBlb2Ygcltu WzBdXSl7Zm9yKHZhciBpPVtdLGE9MDthPG4ubGVuZ3RoOysrYSlpLnB1c2goWzB8cltuW2Fd XSxuW2FdXSk7cmV0dXJuIGl9fXJldHVybiBudWxsfSh0LGUpLGM9ZnVuY3Rpb24odCxlLHIp e2Z1bmN0aW9uIG4odCl7aWYodCBpbiBpKXt2YXIgcj1pW3RdO3Q9ITA7dmFyIG4sbyxzPTB8 ci54LGw9MHxyLnk7cmV0dXJuIndpZHRoImluIHI/bj0wfHIud2lkdGg6dD0hMSwiaGVpZ2h0 ImluIHI/bz0wfHIuaGVpZ2h0OnQ9ITEsbmV3IEYoIXQmJmUmJmUudGhpc0RlcCwhdCYmZSYm ZS5jb250ZXh0RGVwLCF0JiZlJiZlLnByb3BEZXAsKGZ1bmN0aW9uKHQsZSl7dmFyIGk9dC5z aGFyZWQuY29udGV4dCxhPW47IndpZHRoImluIHJ8fChhPWUuZGVmKGksIi4iLCJmcmFtZWJ1 ZmZlcldpZHRoIiwiLSIscykpO3ZhciBjPW87cmV0dXJuImhlaWdodCJpbiByfHwoYz1lLmRl ZihpLCIuIiwiZnJhbWVidWZmZXJIZWlnaHQiLCItIixsKSksW3MsbCxhLGNdfSkpfWlmKHQg aW4gYSl7dmFyIGM9YVt0XTtyZXR1cm4gdD1qKGMsKGZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5p bnZva2UoZSxjKSxuPXQuc2hhcmVkLmNvbnRleHQsaT1lLmRlZihyLCIueHwwIiksYT1lLmRl ZihyLCIueXwwIik7cmV0dXJuW2ksYSxlLmRlZignIndpZHRoIiBpbiAnLHIsIj8iLHIsIi53 aWR0aHwwOiIsIigiLG4sIi4iLCJmcmFtZWJ1ZmZlcldpZHRoIiwiLSIsaSwiKSIpLHI9ZS5k ZWYoJyJoZWlnaHQiIGluICcsciwiPyIsciwiLmhlaWdodHwwOiIsIigiLG4sIi4iLCJmcmFt ZWJ1ZmZlckhlaWdodCIsIi0iLGEsIikiKV19KSksZSYmKHQudGhpc0RlcD10LnRoaXNEZXB8 fGUudGhpc0RlcCx0LmNvbnRleHREZXA9dC5jb250ZXh0RGVwfHxlLmNvbnRleHREZXAsdC5w cm9wRGVwPXQucHJvcERlcHx8ZS5wcm9wRGVwKSx0fXJldHVybiBlP25ldyBGKGUudGhpc0Rl cCxlLmNvbnRleHREZXAsZS5wcm9wRGVwLChmdW5jdGlvbih0LGUpe3ZhciByPXQuc2hhcmVk LmNvbnRleHQ7cmV0dXJuWzAsMCxlLmRlZihyLCIuIiwiZnJhbWVidWZmZXJXaWR0aCIpLGUu ZGVmKHIsIi4iLCJmcmFtZWJ1ZmZlckhlaWdodCIpXX0pKTpudWxsfXZhciBpPXQuc3RhdGlj LGE9dC5keW5hbWljO2lmKHQ9bigidmlld3BvcnQiKSl7dmFyIG89dDt0PW5ldyBGKHQudGhp c0RlcCx0LmNvbnRleHREZXAsdC5wcm9wRGVwLChmdW5jdGlvbih0LGUpe3ZhciByPW8uYXBw ZW5kKHQsZSksbj10LnNoYXJlZC5jb250ZXh0O3JldHVybiBlLnNldChuLCIudmlld3BvcnRX aWR0aCIsclsyXSksZS5zZXQobiwiLnZpZXdwb3J0SGVpZ2h0IixyWzNdKSxyfSkpfXJldHVy bnt2aWV3cG9ydDp0LHNjaXNzb3JfYm94Om4oInNjaXNzb3IuYm94Iil9fSh0LGQ9dyh0KSks Zj1rKHQpLGg9ZnVuY3Rpb24odCxlKXt2YXIgcj10LnN0YXRpYyxuPXQuZHluYW1pYyxpPXt9 O3JldHVybiBvdC5mb3JFYWNoKChmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsYSl7aWYodCBp biByKXt2YXIgcz1lKHJbdF0pO2lbb109TigoZnVuY3Rpb24oKXtyZXR1cm4gc30pKX1lbHNl IGlmKHQgaW4gbil7dmFyIGw9blt0XTtpW29dPWoobCwoZnVuY3Rpb24odCxlKXtyZXR1cm4g YSh0LGUsdC5pbnZva2UoZSxsKSl9KSl9fXZhciBvPXkodCk7c3dpdGNoKHQpe2Nhc2UiY3Vs bC5lbmFibGUiOmNhc2UiYmxlbmQuZW5hYmxlIjpjYXNlImRpdGhlciI6Y2FzZSJzdGVuY2ls LmVuYWJsZSI6Y2FzZSJkZXB0aC5lbmFibGUiOmNhc2Uic2Npc3Nvci5lbmFibGUiOmNhc2Ui cG9seWdvbk9mZnNldC5lbmFibGUiOmNhc2Uic2FtcGxlLmFscGhhIjpjYXNlInNhbXBsZS5l bmFibGUiOmNhc2UiZGVwdGgubWFzayI6cmV0dXJuIGUoKGZ1bmN0aW9uKHQpe3JldHVybiB0 fSksKGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gcn0pKTtjYXNlImRlcHRoLmZ1bmMiOnJldHVy biBlKChmdW5jdGlvbih0KXtyZXR1cm4gRXRbdF19KSwoZnVuY3Rpb24odCxlLHIpe3JldHVy biBlLmRlZih0LmNvbnN0YW50cy5jb21wYXJlRnVuY3MsIlsiLHIsIl0iKX0pKTtjYXNlImRl cHRoLnJhbmdlIjpyZXR1cm4gZSgoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSwoZnVuY3Rpb24o dCxlLHIpe3JldHVybltlLmRlZigiKyIsciwiWzBdIiksZT1lLmRlZigiKyIsciwiWzFdIild fSkpO2Nhc2UiYmxlbmQuZnVuYyI6cmV0dXJuIGUoKGZ1bmN0aW9uKHQpe3JldHVybltTdFsi c3JjUkdCImluIHQ/dC5zcmNSR0I6dC5zcmNdLFN0WyJkc3RSR0IiaW4gdD90LmRzdFJHQjp0 LmRzdF0sU3RbInNyY0FscGhhImluIHQ/dC5zcmNBbHBoYTp0LnNyY10sU3RbImRzdEFscGhh ImluIHQ/dC5kc3RBbHBoYTp0LmRzdF1dfSksKGZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBu KHQsbil7cmV0dXJuIGUuZGVmKCciJyx0LG4sJyIgaW4gJyxyLCI/IixyLCIuIix0LG4sIjoi LHIsIi4iLHQpfXQ9dC5jb25zdGFudHMuYmxlbmRGdW5jczt2YXIgaT1uKCJzcmMiLCJSR0Ii KSxhPW4oImRzdCIsIlJHQiIpLG89KGk9ZS5kZWYodCwiWyIsaSwiXSIpLGUuZGVmKHQsIlsi LG4oInNyYyIsIkFscGhhIiksIl0iKSk7cmV0dXJuW2ksYT1lLmRlZih0LCJbIixhLCJdIiks byx0PWUuZGVmKHQsIlsiLG4oImRzdCIsIkFscGhhIiksIl0iKV19KSk7Y2FzZSJibGVuZC5l cXVhdGlvbiI6cmV0dXJuIGUoKGZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2Yg dD9bUVt0XSxRW3RdXToib2JqZWN0Ij09dHlwZW9mIHQ/W1FbdC5yZ2JdLFFbdC5hbHBoYV1d OnZvaWQgMH0pLChmdW5jdGlvbih0LGUscil7dmFyIG49dC5jb25zdGFudHMuYmxlbmRFcXVh dGlvbnMsaT1lLmRlZigpLGE9ZS5kZWYoKTtyZXR1cm4odD10LmNvbmQoInR5cGVvZiAiLHIs Jz09PSJzdHJpbmciJykpLnRoZW4oaSwiPSIsYSwiPSIsbiwiWyIsciwiXTsiKSx0LmVsc2Uo aSwiPSIsbiwiWyIsciwiLnJnYl07IixhLCI9IixuLCJbIixyLCIuYWxwaGFdOyIpLGUodCks W2ksYV19KSk7Y2FzZSJibGVuZC5jb2xvciI6cmV0dXJuIGUoKGZ1bmN0aW9uKHQpe3JldHVy biBhKDQsKGZ1bmN0aW9uKGUpe3JldHVybit0W2VdfSkpfSksKGZ1bmN0aW9uKHQsZSxyKXty ZXR1cm4gYSg0LChmdW5jdGlvbih0KXtyZXR1cm4gZS5kZWYoIisiLHIsIlsiLHQsIl0iKX0p KX0pKTtjYXNlInN0ZW5jaWwubWFzayI6cmV0dXJuIGUoKGZ1bmN0aW9uKHQpe3JldHVybiAw fHR9KSwoZnVuY3Rpb24odCxlLHIpe3JldHVybiBlLmRlZihyLCJ8MCIpfSkpO2Nhc2Uic3Rl bmNpbC5mdW5jIjpyZXR1cm4gZSgoZnVuY3Rpb24odCl7cmV0dXJuW0V0W3QuY21wfHwia2Vl cCJdLHQucmVmfHwwLCJtYXNrImluIHQ/dC5tYXNrOi0xXX0pLChmdW5jdGlvbih0LGUscil7 cmV0dXJuW3Q9ZS5kZWYoJyJjbXAiIGluICcsciwiPyIsdC5jb25zdGFudHMuY29tcGFyZUZ1 bmNzLCJbIixyLCIuY21wXSIsIjoiLDc2ODApLGUuZGVmKHIsIi5yZWZ8MCIpLGU9ZS5kZWYo JyJtYXNrIiBpbiAnLHIsIj8iLHIsIi5tYXNrfDA6LTEiKV19KSk7Y2FzZSJzdGVuY2lsLm9w RnJvbnQiOmNhc2Uic3RlbmNpbC5vcEJhY2siOnJldHVybiBlKChmdW5jdGlvbihlKXtyZXR1 cm5bInN0ZW5jaWwub3BCYWNrIj09PXQ/MTAyOToxMDI4LEx0W2UuZmFpbHx8ImtlZXAiXSxM dFtlLnpmYWlsfHwia2VlcCJdLEx0W2UuenBhc3N8fCJrZWVwIl1dfSksKGZ1bmN0aW9uKGUs cixuKXtmdW5jdGlvbiBpKHQpe3JldHVybiByLmRlZignIicsdCwnIiBpbiAnLG4sIj8iLGEs IlsiLG4sIi4iLHQsIl06Iiw3NjgwKX12YXIgYT1lLmNvbnN0YW50cy5zdGVuY2lsT3BzO3Jl dHVyblsic3RlbmNpbC5vcEJhY2siPT09dD8xMDI5OjEwMjgsaSgiZmFpbCIpLGkoInpmYWls IiksaSgienBhc3MiKV19KSk7Y2FzZSJwb2x5Z29uT2Zmc2V0Lm9mZnNldCI6cmV0dXJuIGUo KGZ1bmN0aW9uKHQpe3JldHVyblswfHQuZmFjdG9yLDB8dC51bml0c119KSwoZnVuY3Rpb24o dCxlLHIpe3JldHVybltlLmRlZihyLCIuZmFjdG9yfDAiKSxlPWUuZGVmKHIsIi51bml0c3ww IildfSkpO2Nhc2UiY3VsbC5mYWNlIjpyZXR1cm4gZSgoZnVuY3Rpb24odCl7dmFyIGU9MDty ZXR1cm4iZnJvbnQiPT09dD9lPTEwMjg6ImJhY2siPT09dCYmKGU9MTAyOSksZX0pLChmdW5j dGlvbih0LGUscil7cmV0dXJuIGUuZGVmKHIsJz09PSJmcm9udCI/JywxMDI4LCI6IiwxMDI5 KX0pKTtjYXNlImxpbmVXaWR0aCI6cmV0dXJuIGUoKGZ1bmN0aW9uKHQpe3JldHVybiB0fSks KGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gcn0pKTtjYXNlImZyb250RmFjZSI6cmV0dXJuIGUo KGZ1bmN0aW9uKHQpe3JldHVybiBDdFt0XX0pLChmdW5jdGlvbih0LGUscil7cmV0dXJuIGUu ZGVmKHIrJz09PSJjdyI/MjMwNDoyMzA1Jyl9KSk7Y2FzZSJjb2xvck1hc2siOnJldHVybiBl KChmdW5jdGlvbih0KXtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiEhdH0pKX0p LChmdW5jdGlvbih0LGUscil7cmV0dXJuIGEoNCwoZnVuY3Rpb24odCl7cmV0dXJuIiEhIity KyJbIit0KyJdIn0pKX0pKTtjYXNlInNhbXBsZS5jb3ZlcmFnZSI6cmV0dXJuIGUoKGZ1bmN0 aW9uKHQpe3JldHVyblsidmFsdWUiaW4gdD90LnZhbHVlOjEsISF0LmludmVydF19KSwoZnVu Y3Rpb24odCxlLHIpe3JldHVybltlLmRlZignInZhbHVlIiBpbiAnLHIsIj8rIixyLCIudmFs dWU6MSIpLGU9ZS5kZWYoIiEhIixyLCIuaW52ZXJ0IildfSkpfX0pKSxpfSh0KSxwPVQodCww LGwpO3MoInZpZXdwb3J0Iikscyh5KCJzY2lzc29yLmJveCIpKTt2YXIgZCxtPTA8T2JqZWN0 LmtleXMoaCkubGVuZ3RoO2lmKChkPXtmcmFtZWJ1ZmZlcjpkLGRyYXc6ZixzaGFkZXI6cCxz dGF0ZTpoLGRpcnR5Om0sc2NvcGVWQU86bnVsbCxkcmF3VkFPOm51bGwsdXNlVkFPOiExLGF0 dHJpYnV0ZXM6e319KS5wcm9maWxlPWZ1bmN0aW9uKHQpe3ZhciBlLHI9dC5zdGF0aWM7aWYo dD10LmR5bmFtaWMsInByb2ZpbGUiaW4gcil7dmFyIG49ISFyLnByb2ZpbGU7KGU9TigoZnVu Y3Rpb24odCxlKXtyZXR1cm4gbn0pKSkuZW5hYmxlPW59ZWxzZSBpZigicHJvZmlsZSJpbiB0 KXt2YXIgaT10LnByb2ZpbGU7ZT1qKGksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuaW52b2tl KGUsaSl9KSl9cmV0dXJuIGV9KHQpLGQudW5pZm9ybXM9ZnVuY3Rpb24odCxlKXt2YXIgcj10 LnN0YXRpYyxuPXQuZHluYW1pYyxpPXt9O3JldHVybiBPYmplY3Qua2V5cyhyKS5mb3JFYWNo KChmdW5jdGlvbih0KXt2YXIgZSxuPXJbdF07aWYoIm51bWJlciI9PXR5cGVvZiBufHwiYm9v bGVhbiI9PXR5cGVvZiBuKWU9TigoZnVuY3Rpb24oKXtyZXR1cm4gbn0pKTtlbHNlIGlmKCJm dW5jdGlvbiI9PXR5cGVvZiBuKXt2YXIgbz1uLl9yZWdsVHlwZTsidGV4dHVyZTJkIj09PW98 fCJ0ZXh0dXJlQ3ViZSI9PT1vP2U9TigoZnVuY3Rpb24odCl7cmV0dXJuIHQubGluayhuKX0p KToiZnJhbWVidWZmZXIiIT09byYmImZyYW1lYnVmZmVyQ3ViZSIhPT1vfHwoZT1OKChmdW5j dGlvbih0KXtyZXR1cm4gdC5saW5rKG4uY29sb3JbMF0pfSkpKX1lbHNlIGcobikmJihlPU4o KGZ1bmN0aW9uKHQpe3JldHVybiB0Lmdsb2JhbC5kZWYoIlsiLGEobi5sZW5ndGgsKGZ1bmN0 aW9uKHQpe3JldHVybiBuW3RdfSkpLCJdIil9KSkpO2UudmFsdWU9bixpW3RdPWV9KSksT2Jq ZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9blt0XTtpW3RdPWooZSwo ZnVuY3Rpb24odCxyKXtyZXR1cm4gdC5pbnZva2UocixlKX0pKX0pKSxpfShuKSxkLmRyYXdW QU89ZC5zY29wZVZBTz1mLnZhbywhZC5kcmF3VkFPJiZwLnByb2dyYW0mJiFsJiZyLmFuZ2xl X2luc3RhbmNlZF9hcnJheXMmJmYuc3RhdGljLmVsZW1lbnRzKXt2YXIgdj0hMDtpZih0PXAu cHJvZ3JhbS5hdHRyaWJ1dGVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQ9ZS5zdGF0aWNb dF0sdj12JiYhIXQsdH0pKSx2JiYwPHQubGVuZ3RoKXt2YXIgeD11LmdldFZBTyh1LmNyZWF0 ZVZBTyh7YXR0cmlidXRlczp0LGVsZW1lbnRzOmYuc3RhdGljLmVsZW1lbnRzfSkpO2QuZHJh d1ZBTz1uZXcgRihudWxsLG51bGwsbnVsbCwoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5saW5r KHgpfSkpLGQudXNlVkFPPSEwfX1yZXR1cm4gbD9kLnVzZVZBTz0hMDpkLmF0dHJpYnV0ZXM9 QShlKSxkLmNvbnRleHQ9ZnVuY3Rpb24odCl7dmFyIGU9dC5zdGF0aWMscj10LmR5bmFtaWMs bj17fTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIHI9 ZVt0XTtuW3RdPU4oKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiByfHwi Ym9vbGVhbiI9PXR5cGVvZiByPyIiK3I6dC5saW5rKHIpfSkpfSkpLE9iamVjdC5rZXlzKHIp LmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXJbdF07blt0XT1qKGUsKGZ1bmN0aW9uKHQs cil7cmV0dXJuIHQuaW52b2tlKHIsZSl9KSl9KSksbn0oaSksZH1mdW5jdGlvbiBTKHQsZSxy KXt2YXIgbj10LnNoYXJlZC5jb250ZXh0LGk9dC5zY29wZSgpO09iamVjdC5rZXlzKHIpLmZv ckVhY2goKGZ1bmN0aW9uKGEpe2Uuc2F2ZShuLCIuIithKTt2YXIgbz1yW2FdLmFwcGVuZCh0 LGUpO0FycmF5LmlzQXJyYXkobyk/aShuLCIuIixhLCI9WyIsby5qb2luKCksIl07Iik6aShu LCIuIixhLCI9IixvLCI7Iil9KSksZShpKX1mdW5jdGlvbiBFKHQsZSxyLG4pe3ZhciBpLGE9 KHM9dC5zaGFyZWQpLmdsLG89cy5mcmFtZWJ1ZmZlcjtldCYmKGk9ZS5kZWYocy5leHRlbnNp b25zLCIud2ViZ2xfZHJhd19idWZmZXJzIikpO3ZhciBzPShsPXQuY29uc3RhbnRzKS5kcmF3 QnVmZmVyLGw9bC5iYWNrQnVmZmVyO3Q9cj9yLmFwcGVuZCh0LGUpOmUuZGVmKG8sIi5uZXh0 Iiksbnx8ZSgiaWYoIix0LCIhPT0iLG8sIi5jdXIpeyIpLGUoImlmKCIsdCwiKXsiLGEsIi5i aW5kRnJhbWVidWZmZXIoIiwzNjE2MCwiLCIsdCwiLmZyYW1lYnVmZmVyKTsiKSxldCYmZShp LCIuZHJhd0J1ZmZlcnNXRUJHTCgiLHMsIlsiLHQsIi5jb2xvckF0dGFjaG1lbnRzLmxlbmd0 aF0pOyIpLGUoIn1lbHNleyIsYSwiLmJpbmRGcmFtZWJ1ZmZlcigiLDM2MTYwLCIsbnVsbCk7 IiksZXQmJmUoaSwiLmRyYXdCdWZmZXJzV0VCR0woIixsLCIpOyIpLGUoIn0iLG8sIi5jdXI9 Iix0LCI7Iiksbnx8ZSgifSIpfWZ1bmN0aW9uIEwodCxlLHIpe3ZhciBuPXQuc2hhcmVkLGk9 bi5nbCxvPXQuY3VycmVudCxzPXQubmV4dCxsPW4uY3VycmVudCxjPW4ubmV4dCx1PXQuY29u ZChsLCIuZGlydHkiKTtvdC5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbixmO2lmKCEoKGU9 eShlKSlpbiByLnN0YXRlKSlpZihlIGluIHMpe249c1tlXSxmPW9bZV07dmFyIGg9YShudFtl XS5sZW5ndGgsKGZ1bmN0aW9uKHQpe3JldHVybiB1LmRlZihuLCJbIix0LCJdIil9KSk7dSh0 LmNvbmQoaC5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrIiE9PSIrZisiWyIrZSsiXSJ9 KSkuam9pbigifHwiKSkudGhlbihpLCIuIixsdFtlXSwiKCIsaCwiKTsiLGgubWFwKChmdW5j dGlvbih0LGUpe3JldHVybiBmKyJbIitlKyJdPSIrdH0pKS5qb2luKCI7IiksIjsiKSl9ZWxz ZSBuPXUuZGVmKGMsIi4iLGUpLGg9dC5jb25kKG4sIiE9PSIsbCwiLiIsZSksdShoKSxlIGlu IHN0P2godC5jb25kKG4pLnRoZW4oaSwiLmVuYWJsZSgiLHN0W2VdLCIpOyIpLmVsc2UoaSwi LmRpc2FibGUoIixzdFtlXSwiKTsiKSxsLCIuIixlLCI9IixuLCI7Iik6aChpLCIuIixsdFtl XSwiKCIsbiwiKTsiLGwsIi4iLGUsIj0iLG4sIjsiKX0pKSwwPT09T2JqZWN0LmtleXMoci5z dGF0ZSkubGVuZ3RoJiZ1KGwsIi5kaXJ0eT1mYWxzZTsiKSxlKHUpfWZ1bmN0aW9uIEModCxl LHIsbil7dmFyIGksYT10LnNoYXJlZCxvPXQuY3VycmVudCxzPWEuY3VycmVudCxsPWEuZ2w7 UihPYmplY3Qua2V5cyhyKSkuZm9yRWFjaCgoZnVuY3Rpb24oYSl7dmFyIGM9clthXTtpZigh bnx8bihjKSl7dmFyIHU9Yy5hcHBlbmQodCxlKTtpZihzdFthXSl7dmFyIGY9c3RbYV07Qihj KT8oaT10LmxpbmsodSx7c3RhYmxlOiEwfSksZSh0LmNvbmQoaSkudGhlbihsLCIuZW5hYmxl KCIsZiwiKTsiKS5lbHNlKGwsIi5kaXNhYmxlKCIsZiwiKTsiKSksZShzLCIuIixhLCI9Iixp LCI7IikpOihlKHQuY29uZCh1KS50aGVuKGwsIi5lbmFibGUoIixmLCIpOyIpLmVsc2UobCwi LmRpc2FibGUoIixmLCIpOyIpKSxlKHMsIi4iLGEsIj0iLHUsIjsiKSl9ZWxzZSBpZihnKHUp KXt2YXIgaD1vW2FdO2UobCwiLiIsbHRbYV0sIigiLHUsIik7Iix1Lm1hcCgoZnVuY3Rpb24o dCxlKXtyZXR1cm4gaCsiWyIrZSsiXT0iK3R9KSkuam9pbigiOyIpLCI7Iil9ZWxzZSBCKGMp PyhpPXQubGluayh1LHtzdGFibGU6ITB9KSxlKGwsIi4iLGx0W2FdLCIoIixpLCIpOyIscywi LiIsYSwiPSIsaSwiOyIpKTplKGwsIi4iLGx0W2FdLCIoIix1LCIpOyIscywiLiIsYSwiPSIs dSwiOyIpfX0pKX1mdW5jdGlvbiBQKHQsZSl7JCYmKHQuaW5zdGFuY2luZz1lLmRlZih0LnNo YXJlZC5leHRlbnNpb25zLCIuYW5nbGVfaW5zdGFuY2VkX2FycmF5cyIpKX1mdW5jdGlvbiBJ KHQsZSxyLG4saSl7ZnVuY3Rpb24gYSgpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgcGVy Zm9ybWFuY2U/IkRhdGUubm93KCkiOiJwZXJmb3JtYW5jZS5ub3coKSJ9ZnVuY3Rpb24gbyh0 KXt0KGM9ZS5kZWYoKSwiPSIsYSgpLCI7IiksInN0cmluZyI9PXR5cGVvZiBpP3QoaCwiLmNv dW50Kz0iLGksIjsiKTp0KGgsIi5jb3VudCsrOyIpLGQmJihuP3QodT1lLmRlZigpLCI9Iixt LCIuZ2V0TnVtUGVuZGluZ1F1ZXJpZXMoKTsiKTp0KG0sIi5iZWdpblF1ZXJ5KCIsaCwiKTsi KSl9ZnVuY3Rpb24gcyh0KXt0KGgsIi5jcHVUaW1lKz0iLGEoKSwiLSIsYywiOyIpLGQmJihu P3QobSwiLnB1c2hTY29wZVN0YXRzKCIsdSwiLCIsbSwiLmdldE51bVBlbmRpbmdRdWVyaWVz KCksIixoLCIpOyIpOnQobSwiLmVuZFF1ZXJ5KCk7IikpfWZ1bmN0aW9uIGwodCl7dmFyIHI9 ZS5kZWYocCwiLnByb2ZpbGUiKTtlKHAsIi5wcm9maWxlPSIsdCwiOyIpLGUuZXhpdChwLCIu cHJvZmlsZT0iLHIsIjsiKX12YXIgYyx1LGY9dC5zaGFyZWQsaD10LnN0YXRzLHA9Zi5jdXJy ZW50LG09Zi50aW1lcjtpZihyPXIucHJvZmlsZSl7aWYoQihyKSlyZXR1cm4gdm9pZChyLmVu YWJsZT8obyhlKSxzKGUuZXhpdCksbCgidHJ1ZSIpKTpsKCJmYWxzZSIpKTtsKHI9ci5hcHBl bmQodCxlKSl9ZWxzZSByPWUuZGVmKHAsIi5wcm9maWxlIik7byhmPXQuYmxvY2soKSksZSgi aWYoIixyLCIpeyIsZiwifSIpLHModD10LmJsb2NrKCkpLGUuZXhpdCgiaWYoIixyLCIpeyIs dCwifSIpfWZ1bmN0aW9uIE8odCxlLHIsbixpKXtmdW5jdGlvbiBhKHIsbixpKXtmdW5jdGlv biBhKCl7ZSgiaWYoISIsdSwiLmJ1ZmZlcil7IixsLCIuZW5hYmxlVmVydGV4QXR0cmliQXJy YXkoIixjLCIpO30iKTt2YXIgcixhPWkudHlwZTtyPWkuc2l6ZT9lLmRlZihpLnNpemUsInx8 IixuKTpuLGUoImlmKCIsdSwiLnR5cGUhPT0iLGEsInx8Iix1LCIuc2l6ZSE9PSIsciwifHwi LHAubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdSsiLiIrdCsiIT09IitpW3RdfSkpLmpvaW4o Inx8IiksIil7IixsLCIuYmluZEJ1ZmZlcigiLDM0OTYyLCIsIixmLCIuYnVmZmVyKTsiLGws Ii52ZXJ0ZXhBdHRyaWJQb2ludGVyKCIsW2MscixhLGkubm9ybWFsaXplZCxpLnN0cmlkZSxp Lm9mZnNldF0sIik7Iix1LCIudHlwZT0iLGEsIjsiLHUsIi5zaXplPSIsciwiOyIscC5tYXAo KGZ1bmN0aW9uKHQpe3JldHVybiB1KyIuIit0KyI9IitpW3RdKyI7In0pKS5qb2luKCIiKSwi fSIpLCQmJihhPWkuZGl2aXNvcixlKCJpZigiLHUsIi5kaXZpc29yIT09IixhLCIpeyIsdC5p bnN0YW5jaW5nLCIudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKCIsW2MsYV0sIik7Iix1LCIu ZGl2aXNvcj0iLGEsIjt9IikpfWZ1bmN0aW9uIHMoKXtlKCJpZigiLHUsIi5idWZmZXIpeyIs bCwiLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSgiLGMsIik7Iix1LCIuYnVmZmVyPW51bGw7 IiwifWlmKCIsQXQubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiB1KyIuIit0KyIhPT0iK2hb ZV19KSkuam9pbigifHwiKSwiKXsiLGwsIi52ZXJ0ZXhBdHRyaWI0ZigiLGMsIiwiLGgsIik7 IixBdC5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHUrIi4iK3QrIj0iK2hbZV0rIjsifSkp LmpvaW4oIiIpLCJ9Iil9dmFyIGw9by5nbCxjPWUuZGVmKHIsIi5sb2NhdGlvbiIpLHU9ZS5k ZWYoby5hdHRyaWJ1dGVzLCJbIixjLCJdIik7cj1pLnN0YXRlO3ZhciBmPWkuYnVmZmVyLGg9 W2kueCxpLnksaS56LGkud10scD1bImJ1ZmZlciIsIm5vcm1hbGl6ZWQiLCJvZmZzZXQiLCJz dHJpZGUiXTsxPT09cj9hKCk6Mj09PXI/cygpOihlKCJpZigiLHIsIj09PSIsMSwiKXsiKSxh KCksZSgifWVsc2V7IikscygpLGUoIn0iKSl9dmFyIG89dC5zaGFyZWQ7bi5mb3JFYWNoKChm dW5jdGlvbihuKXt2YXIgbyxzPW4ubmFtZSxsPXIuYXR0cmlidXRlc1tzXTtpZihsKXtpZigh aShsKSlyZXR1cm47bz1sLmFwcGVuZCh0LGUpfWVsc2V7aWYoIWkoUHQpKXJldHVybjt2YXIg Yz10LnNjb3BlQXR0cmliKHMpO289e30sT2JqZWN0LmtleXMobmV3IEspLmZvckVhY2goKGZ1 bmN0aW9uKHQpe29bdF09ZS5kZWYoYywiLiIsdCl9KSl9YSh0LmxpbmsobiksZnVuY3Rpb24o dCl7c3dpdGNoKHQpe2Nhc2UgMzU2NjQ6Y2FzZSAzNTY2NzpjYXNlIDM1NjcxOnJldHVybiAy O2Nhc2UgMzU2NjU6Y2FzZSAzNTY2ODpjYXNlIDM1NjcyOnJldHVybiAzO2Nhc2UgMzU2NjY6 Y2FzZSAzNTY2OTpjYXNlIDM1NjczOnJldHVybiA0O2RlZmF1bHQ6cmV0dXJuIDF9fShuLmlu Zm8udHlwZSksbyl9KSl9ZnVuY3Rpb24gVSh0LHIsbixpLG8scyl7Zm9yKHZhciBsLGM9dC5z aGFyZWQsdT1jLmdsLGY9MDtmPGkubGVuZ3RoOysrZil7dmFyIGgscD0odj1pW2ZdKS5uYW1l LGQ9di5pbmZvLnR5cGUsbT1uLnVuaWZvcm1zW3BdLHY9dC5saW5rKHYpKyIubG9jYXRpb24i O2lmKG0pe2lmKCFvKG0pKWNvbnRpbnVlO2lmKEIobSkpe2lmKHA9bS52YWx1ZSwzNTY3OD09 PWR8fDM1NjgwPT09ZClyKHUsIi51bmlmb3JtMWkoIix2LCIsIiwoZD10LmxpbmsocC5fdGV4 dHVyZXx8cC5jb2xvclswXS5fdGV4dHVyZSkpKyIuYmluZCgpKTsiKSxyLmV4aXQoZCwiLnVu YmluZCgpOyIpO2Vsc2UgaWYoMzU2NzQ9PT1kfHwzNTY3NT09PWR8fDM1Njc2PT09ZCltPTIs MzU2NzU9PT1kP209MzozNTY3Nj09PWQmJihtPTQpLHIodSwiLnVuaWZvcm1NYXRyaXgiLG0s ImZ2KCIsdiwiLGZhbHNlLCIscD10Lmdsb2JhbC5kZWYoIm5ldyBGbG9hdDMyQXJyYXkoWyIr QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwocCkrIl0pIiksIik7Iik7ZWxzZXtzd2l0Y2go ZCl7Y2FzZSA1MTI2Omw9IjFmIjticmVhaztjYXNlIDM1NjY0Omw9IjJmIjticmVhaztjYXNl IDM1NjY1Omw9IjNmIjticmVhaztjYXNlIDM1NjY2Omw9IjRmIjticmVhaztjYXNlIDM1Njcw OmNhc2UgNTEyNDpsPSIxaSI7YnJlYWs7Y2FzZSAzNTY3MTpjYXNlIDM1NjY3Omw9IjJpIjti cmVhaztjYXNlIDM1NjcyOmNhc2UgMzU2Njg6bD0iM2kiO2JyZWFrO2Nhc2UgMzU2NzM6bD0i NGkiO2JyZWFrO2Nhc2UgMzU2Njk6bD0iNGkifXIodSwiLnVuaWZvcm0iLGwsIigiLHYsIiwi LGcocCk/QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwocCk6cCwiKTsiKX1jb250aW51ZX1o PW0uYXBwZW5kKHQscil9ZWxzZXtpZighbyhQdCkpY29udGludWU7aD1yLmRlZihjLnVuaWZv cm1zLCJbIixlLmlkKHApLCJdIil9c3dpdGNoKDM1Njc4PT09ZD9yKCJpZigiLGgsIiYmIixo LCcuX3JlZ2xUeXBlPT09ImZyYW1lYnVmZmVyIil7JyxoLCI9IixoLCIuY29sb3JbMF07Iiwi fSIpOjM1NjgwPT09ZCYmcigiaWYoIixoLCImJiIsaCwnLl9yZWdsVHlwZT09PSJmcmFtZWJ1 ZmZlckN1YmUiKXsnLGgsIj0iLGgsIi5jb2xvclswXTsiLCJ9IikscD0xLGQpe2Nhc2UgMzU2 Nzg6Y2FzZSAzNTY4MDpkPXIuZGVmKGgsIi5fdGV4dHVyZSIpLHIodSwiLnVuaWZvcm0xaSgi LHYsIiwiLGQsIi5iaW5kKCkpOyIpLHIuZXhpdChkLCIudW5iaW5kKCk7Iik7Y29udGludWU7 Y2FzZSA1MTI0OmNhc2UgMzU2NzA6bD0iMWkiO2JyZWFrO2Nhc2UgMzU2Njc6Y2FzZSAzNTY3 MTpsPSIyaSIscD0yO2JyZWFrO2Nhc2UgMzU2Njg6Y2FzZSAzNTY3MjpsPSIzaSIscD0zO2Jy ZWFrO2Nhc2UgMzU2Njk6Y2FzZSAzNTY3MzpsPSI0aSIscD00O2JyZWFrO2Nhc2UgNTEyNjps PSIxZiI7YnJlYWs7Y2FzZSAzNTY2NDpsPSIyZiIscD0yO2JyZWFrO2Nhc2UgMzU2NjU6bD0i M2YiLHA9MzticmVhaztjYXNlIDM1NjY2Omw9IjRmIixwPTQ7YnJlYWs7Y2FzZSAzNTY3NDps PSJNYXRyaXgyZnYiO2JyZWFrO2Nhc2UgMzU2NzU6bD0iTWF0cml4M2Z2IjticmVhaztjYXNl IDM1Njc2Omw9Ik1hdHJpeDRmdiJ9aWYoIk0iPT09bC5jaGFyQXQoMCkpe3IodSwiLnVuaWZv cm0iLGwsIigiLHYsIiwiKTt2PU1hdGgucG93KGQtMzU2NzQrMiwyKTt2YXIgeT10Lmdsb2Jh bC5kZWYoIm5ldyBGbG9hdDMyQXJyYXkoIix2LCIpIik7QXJyYXkuaXNBcnJheShoKT9yKCJm YWxzZSwoIixhKHYsKGZ1bmN0aW9uKHQpe3JldHVybiB5KyJbIit0KyJdPSIraFt0XX0pKSwi LCIseSwiKSIpOnIoImZhbHNlLChBcnJheS5pc0FycmF5KCIsaCwiKXx8IixoLCIgaW5zdGFu Y2VvZiBGbG9hdDMyQXJyYXkpPyIsaCwiOigiLGEodiwoZnVuY3Rpb24odCl7cmV0dXJuIHkr IlsiK3QrIl09IitoKyJbIit0KyJdIn0pKSwiLCIseSwiKSIpLHIoIik7Iil9ZWxzZXtpZigx PHApe2Q9W107dmFyIHg9W107Zm9yKG09MDttPHA7KyttKUFycmF5LmlzQXJyYXkoaCk/eC5w dXNoKGhbbV0pOngucHVzaChyLmRlZihoKyJbIittKyJdIikpLHMmJmQucHVzaChyLmRlZigp KTtzJiZyKCJpZighIix0LmJhdGNoSWQsInx8IixkLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1 cm4gdCsiIT09Iit4W2VdfSkpLmpvaW4oInx8IiksIil7IixkLm1hcCgoZnVuY3Rpb24odCxl KXtyZXR1cm4gdCsiPSIreFtlXSsiOyJ9KSkuam9pbigiIikpLHIodSwiLnVuaWZvcm0iLGws IigiLHYsIiwiLHguam9pbigiLCIpLCIpOyIpfWVsc2UgcyYmKGQ9ci5kZWYoKSxyKCJpZigh Iix0LmJhdGNoSWQsInx8IixkLCIhPT0iLGgsIil7IixkLCI9IixoLCI7IikpLHIodSwiLnVu aWZvcm0iLGwsIigiLHYsIiwiLGgsIik7Iik7cyYmcigifSIpfX19ZnVuY3Rpb24gVih0LGUs cixuKXtmdW5jdGlvbiBpKGkpe3ZhciBhPWhbaV07cmV0dXJuIGE/YS5jb250ZXh0RGVwJiZu LmNvbnRleHREeW5hbWljfHxhLnByb3BEZXA/YS5hcHBlbmQodCxyKTphLmFwcGVuZCh0LGUp OmUuZGVmKGYsIi4iLGkpfWZ1bmN0aW9uIGEoKXtmdW5jdGlvbiB0KCl7cihsLCIuZHJhd0Vs ZW1lbnRzSW5zdGFuY2VkQU5HTEUoIixbZCxnLHYsbSsiPDwoKCIrdisiLTUxMjEpPj4xKSIs c10sIik7Iil9ZnVuY3Rpb24gZSgpe3IobCwiLmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSgi LFtkLG0sZyxzXSwiKTsiKX1wJiYibnVsbCIhPT1wP3k/dCgpOihyKCJpZigiLHAsIil7Iiks dCgpLHIoIn1lbHNleyIpLGUoKSxyKCJ9IikpOmUoKX1mdW5jdGlvbiBvKCl7ZnVuY3Rpb24g dCgpe3IodSsiLmRyYXdFbGVtZW50cygiK1tkLGcsdixtKyI8PCgoIit2KyItNTEyMSk+PjEp Il0rIik7Iil9ZnVuY3Rpb24gZSgpe3IodSsiLmRyYXdBcnJheXMoIitbZCxtLGddKyIpOyIp fXAmJiJudWxsIiE9PXA/eT90KCk6KHIoImlmKCIscCwiKXsiKSx0KCkscigifWVsc2V7Iiks ZSgpLHIoIn0iKSk6ZSgpfXZhciBzLGwsYz10LnNoYXJlZCx1PWMuZ2wsZj1jLmRyYXcsaD1u LmRyYXcscD1mdW5jdGlvbigpe3ZhciBpPWguZWxlbWVudHMsYT1lO3JldHVybiBpPygoaS5j b250ZXh0RGVwJiZuLmNvbnRleHREeW5hbWljfHxpLnByb3BEZXApJiYoYT1yKSxpPWkuYXBw ZW5kKHQsYSksaC5lbGVtZW50c0FjdGl2ZSYmYSgiaWYoIitpKyIpIit1KyIuYmluZEJ1ZmZl cigzNDk2MywiK2krIi5idWZmZXIuYnVmZmVyKTsiKSk6KGk9YS5kZWYoKSxhKGksIj0iLGYs Ii4iLCJlbGVtZW50cyIsIjsiLCJpZigiLGksIil7Iix1LCIuYmluZEJ1ZmZlcigiLDM0OTYz LCIsIixpLCIuYnVmZmVyLmJ1ZmZlcik7fSIsImVsc2UgaWYoIixjLnZhbywiLmN1cnJlbnRW QU8peyIsaSwiPSIsdC5zaGFyZWQuZWxlbWVudHMrIi5nZXRFbGVtZW50cygiK2MudmFvLCIu Y3VycmVudFZBTy5lbGVtZW50cyk7IixydD8iIjoiaWYoIitpKyIpIit1KyIuYmluZEJ1ZmZl cigzNDk2MywiK2krIi5idWZmZXIuYnVmZmVyKTsiLCJ9IikpLGl9KCksZD1pKCJwcmltaXRp dmUiKSxtPWkoIm9mZnNldCIpLGc9ZnVuY3Rpb24oKXt2YXIgaT1oLmNvdW50LGE9ZTtyZXR1 cm4gaT8oKGkuY29udGV4dERlcCYmbi5jb250ZXh0RHluYW1pY3x8aS5wcm9wRGVwKSYmKGE9 ciksaT1pLmFwcGVuZCh0LGEpKTppPWEuZGVmKGYsIi4iLCJjb3VudCIpLGl9KCk7aWYoIm51 bWJlciI9PXR5cGVvZiBnKXtpZigwPT09ZylyZXR1cm59ZWxzZSByKCJpZigiLGcsIil7Iiks ci5leGl0KCJ9Iik7JCYmKHM9aSgiaW5zdGFuY2VzIiksbD10Lmluc3RhbmNpbmcpO3ZhciB2 PXArIi50eXBlIix5PWguZWxlbWVudHMmJkIoaC5lbGVtZW50cykmJiFoLnZhb0FjdGl2ZTsk JiYoIm51bWJlciIhPXR5cGVvZiBzfHwwPD1zKT8ic3RyaW5nIj09dHlwZW9mIHM/KHIoImlm KCIscywiPjApeyIpLGEoKSxyKCJ9ZWxzZSBpZigiLHMsIjwwKXsiKSxvKCkscigifSIpKTph KCk6bygpfWZ1bmN0aW9uIHEodCxlLHIsbixpKXtyZXR1cm4gaT0oZT1fKCkpLnByb2MoImJv ZHkiLGkpLCQmJihlLmluc3RhbmNpbmc9aS5kZWYoZS5zaGFyZWQuZXh0ZW5zaW9ucywiLmFu Z2xlX2luc3RhbmNlZF9hcnJheXMiKSksdChlLGkscixuKSxlLmNvbXBpbGUoKS5ib2R5fWZ1 bmN0aW9uIFkodCxlLHIsbil7UCh0LGUpLHIudXNlVkFPP3IuZHJhd1ZBTz9lKHQuc2hhcmVk LnZhbywiLnNldFZBTygiLHIuZHJhd1ZBTy5hcHBlbmQodCxlKSwiKTsiKTplKHQuc2hhcmVk LnZhbywiLnNldFZBTygiLHQuc2hhcmVkLnZhbywiLnRhcmdldFZBTyk7Iik6KGUodC5zaGFy ZWQudmFvLCIuc2V0VkFPKG51bGwpOyIpLE8odCxlLHIsbi5hdHRyaWJ1dGVzLChmdW5jdGlv bigpe3JldHVybiEwfSkpKSxVKHQsZSxyLG4udW5pZm9ybXMsKGZ1bmN0aW9uKCl7cmV0dXJu ITB9KSwhMSksVih0LGUsZSxyKX1mdW5jdGlvbiBXKHQsZSxyLG4pe2Z1bmN0aW9uIGkoKXty ZXR1cm4hMH10LmJhdGNoSWQ9ImExIixQKHQsZSksTyh0LGUscixuLmF0dHJpYnV0ZXMsaSks VSh0LGUscixuLnVuaWZvcm1zLGksITEpLFYodCxlLGUscil9ZnVuY3Rpb24gWCh0LGUscixu KXtmdW5jdGlvbiBpKHQpe3JldHVybiB0LmNvbnRleHREZXAmJm98fHQucHJvcERlcH1mdW5j dGlvbiBhKHQpe3JldHVybiFpKHQpfVAodCxlKTt2YXIgbz1yLmNvbnRleHREZXAscz1lLmRl ZigpLGw9ZS5kZWYoKTt0LnNoYXJlZC5wcm9wcz1sLHQuYmF0Y2hJZD1zO3ZhciBjPXQuc2Nv cGUoKSx1PXQuc2NvcGUoKTtlKGMuZW50cnksImZvcigiLHMsIj0wOyIscywiPCIsImExIiwi OysrIixzLCIpeyIsbCwiPSIsImEwIiwiWyIscywiXTsiLHUsIn0iLGMuZXhpdCksci5uZWVk c0NvbnRleHQmJlModCx1LHIuY29udGV4dCksci5uZWVkc0ZyYW1lYnVmZmVyJiZFKHQsdSxy LmZyYW1lYnVmZmVyKSxDKHQsdSxyLnN0YXRlLGkpLHIucHJvZmlsZSYmaShyLnByb2ZpbGUp JiZJKHQsdSxyLCExLCEwKSxuPyhyLnVzZVZBTz9yLmRyYXdWQU8/aShyLmRyYXdWQU8pP3Uo dC5zaGFyZWQudmFvLCIuc2V0VkFPKCIsci5kcmF3VkFPLmFwcGVuZCh0LHUpLCIpOyIpOmMo dC5zaGFyZWQudmFvLCIuc2V0VkFPKCIsci5kcmF3VkFPLmFwcGVuZCh0LGMpLCIpOyIpOmMo dC5zaGFyZWQudmFvLCIuc2V0VkFPKCIsdC5zaGFyZWQudmFvLCIudGFyZ2V0VkFPKTsiKToo Yyh0LnNoYXJlZC52YW8sIi5zZXRWQU8obnVsbCk7IiksTyh0LGMscixuLmF0dHJpYnV0ZXMs YSksTyh0LHUscixuLmF0dHJpYnV0ZXMsaSkpLFUodCxjLHIsbi51bmlmb3JtcyxhLCExKSxV KHQsdSxyLG4udW5pZm9ybXMsaSwhMCksVih0LGMsdSxyKSk6KGU9dC5nbG9iYWwuZGVmKCJ7 fSIpLG49ci5zaGFkZXIucHJvZ1Zhci5hcHBlbmQodCx1KSxsPXUuZGVmKG4sIi5pZCIpLGM9 dS5kZWYoZSwiWyIsbCwiXSIpLHUodC5zaGFyZWQuZ2wsIi51c2VQcm9ncmFtKCIsbiwiLnBy b2dyYW0pOyIsImlmKCEiLGMsIil7IixjLCI9IixlLCJbIixsLCJdPSIsdC5saW5rKChmdW5j dGlvbihlKXtyZXR1cm4gcShXLHQscixlLDIpfSkpLCIoIixuLCIpO30iLGMsIi5jYWxsKHRo aXMsYTBbIixzLCJdLCIscywiKTsiKSl9ZnVuY3Rpb24gWih0LHIpe2Z1bmN0aW9uIG4oZSl7 dmFyIG49ci5zaGFkZXJbZV07biYmKG49bi5hcHBlbmQodCxpKSxpc05hTihuKT9pLnNldChh LnNoYWRlciwiLiIrZSxuKTppLnNldChhLnNoYWRlciwiLiIrZSx0Lmxpbmsobix7c3RhYmxl OiEwfSkpKX12YXIgaT10LnByb2MoInNjb3BlIiwzKTt0LmJhdGNoSWQ9ImEyIjt2YXIgYT10 LnNoYXJlZCxvPWEuY3VycmVudDtpZihTKHQsaSxyLmNvbnRleHQpLHIuZnJhbWVidWZmZXIm JnIuZnJhbWVidWZmZXIuYXBwZW5kKHQsaSksUihPYmplY3Qua2V5cyhyLnN0YXRlKSkuZm9y RWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49ci5zdGF0ZVtlXSxvPW4uYXBwZW5kKHQsaSk7Zyhv KT9vLmZvckVhY2goKGZ1bmN0aW9uKHIsbil7aXNOYU4ocik/aS5zZXQodC5uZXh0W2VdLCJb IituKyJdIixyKTppLnNldCh0Lm5leHRbZV0sIlsiK24rIl0iLHQubGluayhyLHtzdGFibGU6 ITB9KSl9KSk6QihuKT9pLnNldChhLm5leHQsIi4iK2UsdC5saW5rKG8se3N0YWJsZTohMH0p KTppLnNldChhLm5leHQsIi4iK2Usbyl9KSksSSh0LGksciwhMCwhMCksWyJlbGVtZW50cyIs Im9mZnNldCIsImNvdW50IiwiaW5zdGFuY2VzIiwicHJpbWl0aXZlIl0uZm9yRWFjaCgoZnVu Y3Rpb24oZSl7dmFyIG49ci5kcmF3W2VdO24mJihuPW4uYXBwZW5kKHQsaSksaXNOYU4obik/ aS5zZXQoYS5kcmF3LCIuIitlLG4pOmkuc2V0KGEuZHJhdywiLiIrZSx0Lmxpbmsobikse3N0 YWJsZTohMH0pKX0pKSxPYmplY3Qua2V5cyhyLnVuaWZvcm1zKS5mb3JFYWNoKChmdW5jdGlv bihuKXt2YXIgbz1yLnVuaWZvcm1zW25dLmFwcGVuZCh0LGkpO0FycmF5LmlzQXJyYXkobykm JihvPSJbIitvLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGlzTmFOKGUpP2U6dC5saW5rKGUs e3N0YWJsZTohMH0pfSkpKyJdIiksaS5zZXQoYS51bmlmb3JtcywiWyIrdC5saW5rKGUuaWQo bikse3N0YWJsZTohMH0pKyJdIixvKX0pKSxPYmplY3Qua2V5cyhyLmF0dHJpYnV0ZXMpLmZv ckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPXIuYXR0cmlidXRlc1tlXS5hcHBlbmQodCxpKSxh PXQuc2NvcGVBdHRyaWIoZSk7T2JqZWN0LmtleXMobmV3IEspLmZvckVhY2goKGZ1bmN0aW9u KHQpe2kuc2V0KGEsIi4iK3Qsblt0XSl9KSl9KSksci5zY29wZVZBTyl7dmFyIHM9ci5zY29w ZVZBTy5hcHBlbmQodCxpKTtpc05hTihzKT9pLnNldChhLnZhbywiLnRhcmdldFZBTyIscyk6 aS5zZXQoYS52YW8sIi50YXJnZXRWQU8iLHQubGluayhzLHtzdGFibGU6ITB9KSl9bigidmVy dCIpLG4oImZyYWciKSwwPE9iamVjdC5rZXlzKHIuc3RhdGUpLmxlbmd0aCYmKGkobywiLmRp cnR5PXRydWU7IiksaS5leGl0KG8sIi5kaXJ0eT10cnVlOyIpKSxpKCJhMSgiLHQuc2hhcmVk LmNvbnRleHQsIixhMCwiLHQuYmF0Y2hJZCwiKTsiKX1mdW5jdGlvbiBKKHQsZSxyKXt2YXIg bj1lLnN0YXRpY1tyXTtpZihuJiZmdW5jdGlvbih0KXtpZigib2JqZWN0Ij09dHlwZW9mIHQm JiFnKHQpKXtmb3IodmFyIGU9T2JqZWN0LmtleXModCkscj0wO3I8ZS5sZW5ndGg7KytyKWlm KEcuaXNEeW5hbWljKHRbZVtyXV0pKXJldHVybiEwO3JldHVybiExfX0obikpe3ZhciBpPXQu Z2xvYmFsLGE9T2JqZWN0LmtleXMobiksbz0hMSxzPSExLGw9ITEsYz10Lmdsb2JhbC5kZWYo Int9Iik7YS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgcj1uW2VdO2lmKEcuaXNEeW5hbWlj KHIpKSJmdW5jdGlvbiI9PXR5cGVvZiByJiYocj1uW2VdPUcudW5ib3gocikpLGU9aihyLG51 bGwpLG89b3x8ZS50aGlzRGVwLGw9bHx8ZS5wcm9wRGVwLHM9c3x8ZS5jb250ZXh0RGVwO2Vs c2V7c3dpdGNoKGkoYywiLiIsZSwiPSIpLHR5cGVvZiByKXtjYXNlIm51bWJlciI6aShyKTti cmVhaztjYXNlInN0cmluZyI6aSgnIicsciwnIicpO2JyZWFrO2Nhc2Uib2JqZWN0IjpBcnJh eS5pc0FycmF5KHIpJiZpKCJbIixyLmpvaW4oKSwiXSIpO2JyZWFrO2RlZmF1bHQ6aSh0Lmxp bmsocikpfWkoIjsiKX19KSksZS5keW5hbWljW3JdPW5ldyBHLkR5bmFtaWNWYXJpYWJsZSg0 LHt0aGlzRGVwOm8sY29udGV4dERlcDpzLHByb3BEZXA6bCxyZWY6YyxhcHBlbmQ6ZnVuY3Rp b24odCxlKXthLmZvckVhY2goKGZ1bmN0aW9uKHIpe3ZhciBpPW5bcl07Ry5pc0R5bmFtaWMo aSkmJihpPXQuaW52b2tlKGUsaSksZShjLCIuIixyLCI9IixpLCI7IikpfSkpfX0pLGRlbGV0 ZSBlLnN0YXRpY1tyXX19dmFyIEs9dS5SZWNvcmQsUT17YWRkOjMyNzc0LHN1YnRyYWN0OjMy Nzc4LCJyZXZlcnNlIHN1YnRyYWN0IjozMjc3OX07ci5leHRfYmxlbmRfbWlubWF4JiYoUS5t aW49MzI3NzUsUS5tYXg9MzI3NzYpO3ZhciAkPXIuYW5nbGVfaW5zdGFuY2VkX2FycmF5cyxl dD1yLndlYmdsX2RyYXdfYnVmZmVycyxydD1yLm9lc192ZXJ0ZXhfYXJyYXlfb2JqZWN0LG50 PXtkaXJ0eTohMCxwcm9maWxlOnYucHJvZmlsZX0saXQ9e30sb3Q9W10sc3Q9e30sbHQ9e307 eCgiZGl0aGVyIiwzMDI0KSx4KCJibGVuZC5lbmFibGUiLDMwNDIpLGIoImJsZW5kLmNvbG9y IiwiYmxlbmRDb2xvciIsWzAsMCwwLDBdKSxiKCJibGVuZC5lcXVhdGlvbiIsImJsZW5kRXF1 YXRpb25TZXBhcmF0ZSIsWzMyNzc0LDMyNzc0XSksYigiYmxlbmQuZnVuYyIsImJsZW5kRnVu Y1NlcGFyYXRlIixbMSwwLDEsMF0pLHgoImRlcHRoLmVuYWJsZSIsMjkyOSwhMCksYigiZGVw dGguZnVuYyIsImRlcHRoRnVuYyIsNTEzKSxiKCJkZXB0aC5yYW5nZSIsImRlcHRoUmFuZ2Ui LFswLDFdKSxiKCJkZXB0aC5tYXNrIiwiZGVwdGhNYXNrIiwhMCksYigiY29sb3JNYXNrIiwi Y29sb3JNYXNrIixbITAsITAsITAsITBdKSx4KCJjdWxsLmVuYWJsZSIsMjg4NCksYigiY3Vs bC5mYWNlIiwiY3VsbEZhY2UiLDEwMjkpLGIoImZyb250RmFjZSIsImZyb250RmFjZSIsMjMw NSksYigibGluZVdpZHRoIiwibGluZVdpZHRoIiwxKSx4KCJwb2x5Z29uT2Zmc2V0LmVuYWJs ZSIsMzI4MjMpLGIoInBvbHlnb25PZmZzZXQub2Zmc2V0IiwicG9seWdvbk9mZnNldCIsWzAs MF0pLHgoInNhbXBsZS5hbHBoYSIsMzI5MjYpLHgoInNhbXBsZS5lbmFibGUiLDMyOTI4KSxi KCJzYW1wbGUuY292ZXJhZ2UiLCJzYW1wbGVDb3ZlcmFnZSIsWzEsITFdKSx4KCJzdGVuY2ls LmVuYWJsZSIsMjk2MCksYigic3RlbmNpbC5tYXNrIiwic3RlbmNpbE1hc2siLC0xKSxiKCJz dGVuY2lsLmZ1bmMiLCJzdGVuY2lsRnVuYyIsWzUxOSwwLC0xXSksYigic3RlbmNpbC5vcEZy b250Iiwic3RlbmNpbE9wU2VwYXJhdGUiLFsxMDI4LDc2ODAsNzY4MCw3NjgwXSksYigic3Rl bmNpbC5vcEJhY2siLCJzdGVuY2lsT3BTZXBhcmF0ZSIsWzEwMjksNzY4MCw3NjgwLDc2ODBd KSx4KCJzY2lzc29yLmVuYWJsZSIsMzA4OSksYigic2Npc3Nvci5ib3giLCJzY2lzc29yIixb MCwwLHQuZHJhd2luZ0J1ZmZlcldpZHRoLHQuZHJhd2luZ0J1ZmZlckhlaWdodF0pLGIoInZp ZXdwb3J0Iiwidmlld3BvcnQiLFswLDAsdC5kcmF3aW5nQnVmZmVyV2lkdGgsdC5kcmF3aW5n QnVmZmVySGVpZ2h0XSk7dmFyIGN0PXtnbDp0LGNvbnRleHQ6cCxzdHJpbmdzOmUsbmV4dDpp dCxjdXJyZW50Om50LGRyYXc6aCxlbGVtZW50czpvLGJ1ZmZlcjppLHNoYWRlcjpmLGF0dHJp YnV0ZXM6dS5zdGF0ZSx2YW86dSx1bmlmb3JtczpjLGZyYW1lYnVmZmVyOmwsZXh0ZW5zaW9u czpyLHRpbWVyOmQsaXNCdWZmZXJBcmdzOkR9LHV0PXtwcmltVHlwZXM6YXQsY29tcGFyZUZ1 bmNzOkV0LGJsZW5kRnVuY3M6U3QsYmxlbmRFcXVhdGlvbnM6USxzdGVuY2lsT3BzOkx0LGds VHlwZXM6dHQsb3JpZW50YXRpb25UeXBlOkN0fTtldCYmKHV0LmJhY2tCdWZmZXI9WzEwMjld LHV0LmRyYXdCdWZmZXI9YShuLm1heERyYXdidWZmZXJzLChmdW5jdGlvbih0KXtyZXR1cm4g MD09PXQ/WzBdOmEodCwoZnVuY3Rpb24odCl7cmV0dXJuIDM2MDY0K3R9KSl9KSkpO3ZhciBm dD0wO3JldHVybntuZXh0Oml0LGN1cnJlbnQ6bnQscHJvY3M6ZnVuY3Rpb24oKXt2YXIgdD1f KCksZT10LnByb2MoInBvbGwiKSxpPXQucHJvYygicmVmcmVzaCIpLG89dC5ibG9jaygpO2Uo byksaShvKTt2YXIgcyxsPShmPXQuc2hhcmVkKS5nbCxjPWYubmV4dCx1PWYuY3VycmVudDtv KHUsIi5kaXJ0eT1mYWxzZTsiKSxFKHQsZSksRSh0LGksbnVsbCwhMCksJCYmKHM9dC5saW5r KCQpKSxyLm9lc192ZXJ0ZXhfYXJyYXlfb2JqZWN0JiZpKHQubGluayhyLm9lc192ZXJ0ZXhf YXJyYXlfb2JqZWN0KSwiLmJpbmRWZXJ0ZXhBcnJheU9FUyhudWxsKTsiKTt2YXIgZj1pLmRl ZihmLmF0dHJpYnV0ZXMpLGg9aS5kZWYoMCkscD10LmNvbmQoaCwiLmJ1ZmZlciIpO3AudGhl bihsLCIuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaSk7IixsLCIuYmluZEJ1ZmZlcigiLDM0 OTYyLCIsIixoLCIuYnVmZmVyLmJ1ZmZlcik7IixsLCIudmVydGV4QXR0cmliUG9pbnRlcihp LCIsaCwiLnNpemUsIixoLCIudHlwZSwiLGgsIi5ub3JtYWxpemVkLCIsaCwiLnN0cmlkZSwi LGgsIi5vZmZzZXQpOyIpLmVsc2UobCwiLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpKTsi LGwsIi52ZXJ0ZXhBdHRyaWI0ZihpLCIsaCwiLngsIixoLCIueSwiLGgsIi56LCIsaCwiLncp OyIsaCwiLmJ1ZmZlcj1udWxsOyIpO3ZhciBkPXQubGluayhuLm1heEF0dHJpYnV0ZXMse3N0 YWJsZTohMH0pO3JldHVybiBpKCJmb3IodmFyIGk9MDtpPCIsZCwiOysraSl7IixoLCI9Iixm LCJbaV07IixwLCJ9IiksJCYmaSgiZm9yKHZhciBpPTA7aTwiLGQsIjsrK2kpeyIscywiLnZl cnRleEF0dHJpYkRpdmlzb3JBTkdMRShpLCIsZiwiW2ldLmRpdmlzb3IpOyIsIn0iKSxpKHQu c2hhcmVkLnZhbywiLmN1cnJlbnRWQU89bnVsbDsiLHQuc2hhcmVkLnZhbywiLnNldFZBTygi LHQuc2hhcmVkLnZhbywiLnRhcmdldFZBTyk7IiksT2JqZWN0LmtleXMoc3QpLmZvckVhY2go KGZ1bmN0aW9uKHIpe3ZhciBuPXN0W3JdLGE9by5kZWYoYywiLiIscikscz10LmJsb2NrKCk7 cygiaWYoIixhLCIpeyIsbCwiLmVuYWJsZSgiLG4sIil9ZWxzZXsiLGwsIi5kaXNhYmxlKCIs biwiKX0iLHUsIi4iLHIsIj0iLGEsIjsiKSxpKHMpLGUoImlmKCIsYSwiIT09Iix1LCIuIixy LCIpeyIscywifSIpfSkpLE9iamVjdC5rZXlzKGx0KS5mb3JFYWNoKChmdW5jdGlvbihyKXt2 YXIgbixzLGY9bHRbcl0saD1udFtyXSxwPXQuYmxvY2soKTtwKGwsIi4iLGYsIigiKSxnKGgp PyhmPWgubGVuZ3RoLG49dC5nbG9iYWwuZGVmKGMsIi4iLHIpLHM9dC5nbG9iYWwuZGVmKHUs Ii4iLHIpLHAoYShmLChmdW5jdGlvbih0KXtyZXR1cm4gbisiWyIrdCsiXSJ9KSksIik7Iixh KGYsKGZ1bmN0aW9uKHQpe3JldHVybiBzKyJbIit0KyJdPSIrbisiWyIrdCsiXTsifSkpLmpv aW4oIiIpKSxlKCJpZigiLGEoZiwoZnVuY3Rpb24odCl7cmV0dXJuIG4rIlsiK3QrIl0hPT0i K3MrIlsiK3QrIl0ifSkpLmpvaW4oInx8IiksIil7IixwLCJ9IikpOihuPW8uZGVmKGMsIi4i LHIpLHM9by5kZWYodSwiLiIscikscChuLCIpOyIsdSwiLiIsciwiPSIsbiwiOyIpLGUoImlm KCIsbiwiIT09IixzLCIpeyIscCwifSIpKSxpKHApfSkpLHQuY29tcGlsZSgpfSgpLGNvbXBp bGU6ZnVuY3Rpb24odCxlLHIsbixpKXt2YXIgYT1fKCk7YS5zdGF0cz1hLmxpbmsoaSksT2Jq ZWN0LmtleXMoZS5zdGF0aWMpLmZvckVhY2goKGZ1bmN0aW9uKHQpe0ooYSxlLHQpfSkpLE10 LmZvckVhY2goKGZ1bmN0aW9uKGUpe0ooYSx0LGUpfSkpO3ZhciBvPU0odCxlLHIsbik7cmV0 dXJuIG8uc2hhZGVyLnByb2dyYW0mJihvLnNoYWRlci5wcm9ncmFtLmF0dHJpYnV0ZXMuc29y dCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5uYW1lPGUubmFtZT8tMToxfSkpLG8uc2hhZGVy LnByb2dyYW0udW5pZm9ybXMuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5uYW1lPGUu bmFtZT8tMToxfSkpKSxmdW5jdGlvbih0LGUpe3ZhciByPXQucHJvYygiZHJhdyIsMSk7UCh0 LHIpLFModCxyLGUuY29udGV4dCksRSh0LHIsZS5mcmFtZWJ1ZmZlciksTCh0LHIsZSksQyh0 LHIsZS5zdGF0ZSksSSh0LHIsZSwhMSwhMCk7dmFyIG49ZS5zaGFkZXIucHJvZ1Zhci5hcHBl bmQodCxyKTtpZihyKHQuc2hhcmVkLmdsLCIudXNlUHJvZ3JhbSgiLG4sIi5wcm9ncmFtKTsi KSxlLnNoYWRlci5wcm9ncmFtKVkodCxyLGUsZS5zaGFkZXIucHJvZ3JhbSk7ZWxzZXtyKHQu c2hhcmVkLnZhbywiLnNldFZBTyhudWxsKTsiKTt2YXIgaT10Lmdsb2JhbC5kZWYoInt9Iiks YT1yLmRlZihuLCIuaWQiKSxvPXIuZGVmKGksIlsiLGEsIl0iKTtyKHQuY29uZChvKS50aGVu KG8sIi5jYWxsKHRoaXMsYTApOyIpLmVsc2UobywiPSIsaSwiWyIsYSwiXT0iLHQubGluaygo ZnVuY3Rpb24ocil7cmV0dXJuIHEoWSx0LGUsciwxKX0pKSwiKCIsbiwiKTsiLG8sIi5jYWxs KHRoaXMsYTApOyIpKX0wPE9iamVjdC5rZXlzKGUuc3RhdGUpLmxlbmd0aCYmcih0LnNoYXJl ZC5jdXJyZW50LCIuZGlydHk9dHJ1ZTsiKSx0LnNoYXJlZC52YW8mJnIodC5zaGFyZWQudmFv LCIuc2V0VkFPKG51bGwpOyIpfShhLG8pLFooYSxvKSxmdW5jdGlvbih0LGUpe2Z1bmN0aW9u IHIodCl7cmV0dXJuIHQuY29udGV4dERlcCYmaXx8dC5wcm9wRGVwfXZhciBuPXQucHJvYygi YmF0Y2giLDIpO3QuYmF0Y2hJZD0iMCIsUCh0LG4pO3ZhciBpPSExLGE9ITA7T2JqZWN0Lmtl eXMoZS5jb250ZXh0KS5mb3JFYWNoKChmdW5jdGlvbih0KXtpPWl8fGUuY29udGV4dFt0XS5w cm9wRGVwfSkpLGl8fChTKHQsbixlLmNvbnRleHQpLGE9ITEpO3ZhciBvPSExO2lmKChzPWUu ZnJhbWVidWZmZXIpPyhzLnByb3BEZXA/aT1vPSEwOnMuY29udGV4dERlcCYmaSYmKG89ITAp LG98fEUodCxuLHMpKTpFKHQsbixudWxsKSxlLnN0YXRlLnZpZXdwb3J0JiZlLnN0YXRlLnZp ZXdwb3J0LnByb3BEZXAmJihpPSEwKSxMKHQsbixlKSxDKHQsbixlLnN0YXRlLChmdW5jdGlv bih0KXtyZXR1cm4hcih0KX0pKSxlLnByb2ZpbGUmJnIoZS5wcm9maWxlKXx8SSh0LG4sZSwh MSwiYTEiKSxlLmNvbnRleHREZXA9aSxlLm5lZWRzQ29udGV4dD1hLGUubmVlZHNGcmFtZWJ1 ZmZlcj1vLChhPWUuc2hhZGVyLnByb2dWYXIpLmNvbnRleHREZXAmJml8fGEucHJvcERlcClY KHQsbixlLG51bGwpO2Vsc2UgaWYoYT1hLmFwcGVuZCh0LG4pLG4odC5zaGFyZWQuZ2wsIi51 c2VQcm9ncmFtKCIsYSwiLnByb2dyYW0pOyIpLGUuc2hhZGVyLnByb2dyYW0pWCh0LG4sZSxl LnNoYWRlci5wcm9ncmFtKTtlbHNle24odC5zaGFyZWQudmFvLCIuc2V0VkFPKG51bGwpOyIp O3ZhciBzPXQuZ2xvYmFsLmRlZigie30iKSxsPShvPW4uZGVmKGEsIi5pZCIpLG4uZGVmKHMs IlsiLG8sIl0iKSk7bih0LmNvbmQobCkudGhlbihsLCIuY2FsbCh0aGlzLGEwLGExKTsiKS5l bHNlKGwsIj0iLHMsIlsiLG8sIl09Iix0LmxpbmsoKGZ1bmN0aW9uKHIpe3JldHVybiBxKFgs dCxlLHIsMil9KSksIigiLGEsIik7IixsLCIuY2FsbCh0aGlzLGEwLGExKTsiKSl9MDxPYmpl Y3Qua2V5cyhlLnN0YXRlKS5sZW5ndGgmJm4odC5zaGFyZWQuY3VycmVudCwiLmRpcnR5PXRy dWU7IiksdC5zaGFyZWQudmFvJiZuKHQuc2hhcmVkLnZhbywiLnNldFZBTyhudWxsKTsiKX0o YSxvKSxIKGEuY29tcGlsZSgpLHtkZXN0cm95OmZ1bmN0aW9uKCl7by5zaGFkZXIucHJvZ3Jh bS5kZXN0cm95KCl9fSl9fX1mdW5jdGlvbiBWKHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0 aDsrK3IpaWYodFtyXT09PWUpcmV0dXJuIHI7cmV0dXJuLTF9dmFyIEg9ZnVuY3Rpb24odCxl KXtmb3IodmFyIHI9T2JqZWN0LmtleXMoZSksbj0wO248ci5sZW5ndGg7KytuKXRbcltuXV09 ZVtyW25dXTtyZXR1cm4gdH0scT0wLEc9e0R5bmFtaWNWYXJpYWJsZTp0LGRlZmluZTpmdW5j dGlvbihyLG4pe3JldHVybiBuZXcgdChyLGUobisiIikpfSxpc0R5bmFtaWM6ZnVuY3Rpb24o ZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJiFlLl9yZWdsVHlwZXx8ZSBpbnN0YW5j ZW9mIHR9LHVuYm94OmZ1bmN0aW9uIGUocixuKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Yg cj9uZXcgdCgwLHIpOiJudW1iZXIiPT10eXBlb2Ygcnx8ImJvb2xlYW4iPT10eXBlb2Ygcj9u ZXcgdCg1LHIpOkFycmF5LmlzQXJyYXkocik/bmV3IHQoNixyLm1hcCgoZnVuY3Rpb24odCxy KXtyZXR1cm4gZSh0LG4rIlsiK3IrIl0iKX0pKSk6ciBpbnN0YW5jZW9mIHQ/cjp2b2lkIDB9 LGFjY2Vzc29yOmV9LFk9e25leHQ6ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVlc3RBbmltYXRp b25GcmFtZT9mdW5jdGlvbih0KXtyZXR1cm4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHQpfTpm dW5jdGlvbih0KXtyZXR1cm4gc2V0VGltZW91dCh0LDE2KX0sY2FuY2VsOiJmdW5jdGlvbiI9 PXR5cGVvZiBjYW5jZWxBbmltYXRpb25GcmFtZT9mdW5jdGlvbih0KXtyZXR1cm4gY2FuY2Vs QW5pbWF0aW9uRnJhbWUodCl9OmNsZWFyVGltZW91dH0sVz0idW5kZWZpbmVkIiE9dHlwZW9m IHBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5ub3c/ZnVuY3Rpb24oKXtyZXR1cm4gcGVyZm9y bWFuY2Uubm93KCl9OmZ1bmN0aW9uKCl7cmV0dXJuK25ldyBEYXRlfSxYPXMoKTtYLnplcm89 cygpO3ZhciBaPWZ1bmN0aW9uKHQsZSl7dmFyIHI9MTtlLmV4dF90ZXh0dXJlX2ZpbHRlcl9h bmlzb3Ryb3BpYyYmKHI9dC5nZXRQYXJhbWV0ZXIoMzQwNDcpKTt2YXIgbj0xLGk9MTtlLndl YmdsX2RyYXdfYnVmZmVycyYmKG49dC5nZXRQYXJhbWV0ZXIoMzQ4NTIpLGk9dC5nZXRQYXJh bWV0ZXIoMzYwNjMpKTt2YXIgYT0hIWUub2VzX3RleHR1cmVfZmxvYXQ7aWYoYSl7YT10LmNy ZWF0ZVRleHR1cmUoKSx0LmJpbmRUZXh0dXJlKDM1NTMsYSksdC50ZXhJbWFnZTJEKDM1NTMs MCw2NDA4LDEsMSwwLDY0MDgsNTEyNixudWxsKTt2YXIgbz10LmNyZWF0ZUZyYW1lYnVmZmVy KCk7aWYodC5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbyksdC5mcmFtZWJ1ZmZlclRleHR1cmUy RCgzNjE2MCwzNjA2NCwzNTUzLGEsMCksdC5iaW5kVGV4dHVyZSgzNTUzLG51bGwpLDM2MDUz IT09dC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKDM2MTYwKSlhPSExO2Vsc2V7dC52aWV3cG9y dCgwLDAsMSwxKSx0LmNsZWFyQ29sb3IoMSwwLDAsMSksdC5jbGVhcigxNjM4NCk7dmFyIHM9 WC5hbGxvY1R5cGUoNTEyNiw0KTt0LnJlYWRQaXhlbHMoMCwwLDEsMSw2NDA4LDUxMjYscyks dC5nZXRFcnJvcigpP2E9ITE6KHQuZGVsZXRlRnJhbWVidWZmZXIobyksdC5kZWxldGVUZXh0 dXJlKGEpLGE9MT09PXNbMF0pLFguZnJlZVR5cGUocyl9fXJldHVybiBzPSEwLCJ1bmRlZmlu ZWQiIT10eXBlb2YgbmF2aWdhdG9yJiYoL01TSUUvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2Vu dCl8fC9UcmlkZW50XC8vLnRlc3QobmF2aWdhdG9yLmFwcFZlcnNpb24pfHwvRWRnZS8udGVz dChuYXZpZ2F0b3IudXNlckFnZW50KSl8fChzPXQuY3JlYXRlVGV4dHVyZSgpLG89WC5hbGxv Y1R5cGUoNTEyMSwzNiksdC5hY3RpdmVUZXh0dXJlKDMzOTg0KSx0LmJpbmRUZXh0dXJlKDM0 MDY3LHMpLHQudGV4SW1hZ2UyRCgzNDA2OSwwLDY0MDgsMywzLDAsNjQwOCw1MTIxLG8pLFgu ZnJlZVR5cGUobyksdC5iaW5kVGV4dHVyZSgzNDA2NyxudWxsKSx0LmRlbGV0ZVRleHR1cmUo cykscz0hdC5nZXRFcnJvcigpKSx7Y29sb3JCaXRzOlt0LmdldFBhcmFtZXRlcigzNDEwKSx0 LmdldFBhcmFtZXRlcigzNDExKSx0LmdldFBhcmFtZXRlcigzNDEyKSx0LmdldFBhcmFtZXRl cigzNDEzKV0sZGVwdGhCaXRzOnQuZ2V0UGFyYW1ldGVyKDM0MTQpLHN0ZW5jaWxCaXRzOnQu Z2V0UGFyYW1ldGVyKDM0MTUpLHN1YnBpeGVsQml0czp0LmdldFBhcmFtZXRlcigzNDA4KSxl eHRlbnNpb25zOk9iamVjdC5rZXlzKGUpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuISFl W3RdfSkpLG1heEFuaXNvdHJvcGljOnIsbWF4RHJhd2J1ZmZlcnM6bixtYXhDb2xvckF0dGFj aG1lbnRzOmkscG9pbnRTaXplRGltczp0LmdldFBhcmFtZXRlcigzMzkwMSksbGluZVdpZHRo RGltczp0LmdldFBhcmFtZXRlcigzMzkwMiksbWF4Vmlld3BvcnREaW1zOnQuZ2V0UGFyYW1l dGVyKDMzODYpLG1heENvbWJpbmVkVGV4dHVyZVVuaXRzOnQuZ2V0UGFyYW1ldGVyKDM1NjYx KSxtYXhDdWJlTWFwU2l6ZTp0LmdldFBhcmFtZXRlcigzNDA3NiksbWF4UmVuZGVyYnVmZmVy U2l6ZTp0LmdldFBhcmFtZXRlcigzNDAyNCksbWF4VGV4dHVyZVVuaXRzOnQuZ2V0UGFyYW1l dGVyKDM0OTMwKSxtYXhUZXh0dXJlU2l6ZTp0LmdldFBhcmFtZXRlcigzMzc5KSxtYXhBdHRy aWJ1dGVzOnQuZ2V0UGFyYW1ldGVyKDM0OTIxKSxtYXhWZXJ0ZXhVbmlmb3Jtczp0LmdldFBh cmFtZXRlcigzNjM0NyksbWF4VmVydGV4VGV4dHVyZVVuaXRzOnQuZ2V0UGFyYW1ldGVyKDM1 NjYwKSxtYXhWYXJ5aW5nVmVjdG9yczp0LmdldFBhcmFtZXRlcigzNjM0OCksbWF4RnJhZ21l bnRVbmlmb3Jtczp0LmdldFBhcmFtZXRlcigzNjM0OSksZ2xzbDp0LmdldFBhcmFtZXRlcigz NTcyNCkscmVuZGVyZXI6dC5nZXRQYXJhbWV0ZXIoNzkzNyksdmVuZG9yOnQuZ2V0UGFyYW1l dGVyKDc5MzYpLHZlcnNpb246dC5nZXRQYXJhbWV0ZXIoNzkzOCkscmVhZEZsb2F0OmEsbnBv dFRleHR1cmVDdWJlOnN9fSxKPWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgVWlu dDhBcnJheXx8dCBpbnN0YW5jZW9mIFVpbnQxNkFycmF5fHx0IGluc3RhbmNlb2YgVWludDMy QXJyYXl8fHQgaW5zdGFuY2VvZiBJbnQ4QXJyYXl8fHQgaW5zdGFuY2VvZiBJbnQxNkFycmF5 fHx0IGluc3RhbmNlb2YgSW50MzJBcnJheXx8dCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheXx8 dCBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheXx8dCBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFy cmF5fSxLPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qua2V5cyh0KS5tYXAoKGZ1bmN0aW9u KGUpe3JldHVybiB0W2VdfSkpfSxRPXtzaGFwZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9W107 dC5sZW5ndGg7dD10WzBdKWUucHVzaCh0Lmxlbmd0aCk7cmV0dXJuIGV9LGZsYXR0ZW46ZnVu Y3Rpb24odCxlLHIsbil7dmFyIGk9MTtpZihlLmxlbmd0aClmb3IodmFyIGE9MDthPGUubGVu Z3RoOysrYSlpKj1lW2FdO2Vsc2UgaT0wO3N3aXRjaChyPW58fFguYWxsb2NUeXBlKHIsaSks ZS5sZW5ndGgpe2Nhc2UgMDpicmVhaztjYXNlIDE6Zm9yKG49ZVswXSxlPTA7ZTxuOysrZSly W2VdPXRbZV07YnJlYWs7Y2FzZSAyOmZvcihuPWVbMF0sZT1lWzFdLGE9aT0wO2E8bjsrK2Ep Zm9yKHZhciBvPXRbYV0scz0wO3M8ZTsrK3MpcltpKytdPW9bc107YnJlYWs7Y2FzZSAzOmMo dCxlWzBdLGVbMV0sZVsyXSxyLDApO2JyZWFrO2RlZmF1bHQ6IWZ1bmN0aW9uIHQoZSxyLG4s aSxhKXtmb3IodmFyIG89MSxzPW4rMTtzPHIubGVuZ3RoOysrcylvKj1yW3NdO3ZhciBsPXJb bl07aWYoND09ci5sZW5ndGgtbil7dmFyIHU9cltuKzFdLGY9cltuKzJdO2ZvcihyPXJbbisz XSxzPTA7czxsOysrcyljKGVbc10sdSxmLHIsaSxhKSxhKz1vfWVsc2UgZm9yKHM9MDtzPGw7 KytzKXQoZVtzXSxyLG4rMSxpLGEpLGErPW99KHQsZSwwLHIsMCl9cmV0dXJuIHJ9fSwkPXsi W29iamVjdCBJbnQ4QXJyYXldIjo1MTIwLCJbb2JqZWN0IEludDE2QXJyYXldIjo1MTIyLCJb b2JqZWN0IEludDMyQXJyYXldIjo1MTI0LCJbb2JqZWN0IFVpbnQ4QXJyYXldIjo1MTIxLCJb b2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSI6NTEyMSwiW29iamVjdCBVaW50MTZBcnJheV0i OjUxMjMsIltvYmplY3QgVWludDMyQXJyYXldIjo1MTI1LCJbb2JqZWN0IEZsb2F0MzJBcnJh eV0iOjUxMjYsIltvYmplY3QgRmxvYXQ2NEFycmF5XSI6NTEyMSwiW29iamVjdCBBcnJheUJ1 ZmZlcl0iOjUxMjF9LHR0PXtpbnQ4OjUxMjAsaW50MTY6NTEyMixpbnQzMjo1MTI0LHVpbnQ4 OjUxMjEsdWludDE2OjUxMjMsdWludDMyOjUxMjUsZmxvYXQ6NTEyNixmbG9hdDMyOjUxMjZ9 LGV0PXtkeW5hbWljOjM1MDQ4LHN0cmVhbTozNTA0MCxzdGF0aWM6MzUwNDR9LHJ0PVEuZmxh dHRlbixudD1RLnNoYXBlLGl0PVtdO2l0WzUxMjBdPTEsaXRbNTEyMl09MixpdFs1MTI0XT00 LGl0WzUxMjFdPTEsaXRbNTEyM109MixpdFs1MTI1XT00LGl0WzUxMjZdPTQ7dmFyIGF0PXtw b2ludHM6MCxwb2ludDowLGxpbmVzOjEsbGluZToxLHRyaWFuZ2xlczo0LHRyaWFuZ2xlOjQs ImxpbmUgbG9vcCI6MiwibGluZSBzdHJpcCI6MywidHJpYW5nbGUgc3RyaXAiOjUsInRyaWFu Z2xlIGZhbiI6Nn0sb3Q9bmV3IEZsb2F0MzJBcnJheSgxKSxzdD1uZXcgVWludDMyQXJyYXko b3QuYnVmZmVyKSxsdD1bOTk4NCw5OTg2LDk5ODUsOTk4N10sY3Q9WzAsNjQwOSw2NDEwLDY0 MDcsNjQwOF0sdXQ9e307dXRbNjQwOV09dXRbNjQwNl09dXRbNjQwMl09MSx1dFszNDA0MV09 dXRbNjQxMF09Mix1dFs2NDA3XT11dFszNTkwNF09Myx1dFs2NDA4XT11dFszNTkwNl09NDt2 YXIgZnQ9digiSFRNTENhbnZhc0VsZW1lbnQiKSxodD12KCJPZmZzY3JlZW5DYW52YXMiKSxw dD12KCJDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQiKSxkdD12KCJJbWFnZUJpdG1hcCIpLG10 PXYoIkhUTUxJbWFnZUVsZW1lbnQiKSxndD12KCJIVE1MVmlkZW9FbGVtZW50IiksdnQ9T2Jq ZWN0LmtleXMoJCkuY29uY2F0KFtmdCxodCxwdCxkdCxtdCxndF0pLHl0PVtdO3l0WzUxMjFd PTEseXRbNTEyNl09NCx5dFszNjE5M109Mix5dFs1MTIzXT0yLHl0WzUxMjVdPTQ7dmFyIHh0 PVtdO3h0WzMyODU0XT0yLHh0WzMyODU1XT0yLHh0WzM2MTk0XT0yLHh0WzM0MDQxXT00LHh0 WzMzNzc2XT0uNSx4dFszMzc3N109LjUseHRbMzM3NzhdPTEseHRbMzM3NzldPTEseHRbMzU5 ODZdPS41LHh0WzM1OTg3XT0xLHh0WzM0Nzk4XT0xLHh0WzM1ODQwXT0uNSx4dFszNTg0MV09 LjI1LHh0WzM1ODQyXT0uNSx4dFszNTg0M109LjI1LHh0WzM2MTk2XT0uNTt2YXIgYnQ9W107 YnRbMzI4NTRdPTIsYnRbMzI4NTVdPTIsYnRbMzYxOTRdPTIsYnRbMzMxODldPTIsYnRbMzYx NjhdPTEsYnRbMzQwNDFdPTQsYnRbMzU5MDddPTQsYnRbMzQ4MzZdPTE2LGJ0WzM0ODQyXT04 LGJ0WzM0ODQzXT02O3ZhciBfdD1mdW5jdGlvbih0LGUscixuLGkpe2Z1bmN0aW9uIGEodCl7 dGhpcy5pZD1jKyssdGhpcy5yZWZDb3VudD0xLHRoaXMucmVuZGVyYnVmZmVyPXQsdGhpcy5m b3JtYXQ9MzI4NTQsdGhpcy5oZWlnaHQ9dGhpcy53aWR0aD0wLGkucHJvZmlsZSYmKHRoaXMu c3RhdHM9e3NpemU6MH0pfWZ1bmN0aW9uIG8oZSl7dmFyIHI9ZS5yZW5kZXJidWZmZXI7dC5i aW5kUmVuZGVyYnVmZmVyKDM2MTYxLG51bGwpLHQuZGVsZXRlUmVuZGVyYnVmZmVyKHIpLGUu cmVuZGVyYnVmZmVyPW51bGwsZS5yZWZDb3VudD0wLGRlbGV0ZSB1W2UuaWRdLG4ucmVuZGVy YnVmZmVyQ291bnQtLX12YXIgcz17cmdiYTQ6MzI4NTQscmdiNTY1OjM2MTk0LCJyZ2I1IGEx IjozMjg1NSxkZXB0aDozMzE4OSxzdGVuY2lsOjM2MTY4LCJkZXB0aCBzdGVuY2lsIjozNDA0 MX07ZS5leHRfc3JnYiYmKHMuc3JnYmE9MzU5MDcpLGUuZXh0X2NvbG9yX2J1ZmZlcl9oYWxm X2Zsb2F0JiYocy5yZ2JhMTZmPTM0ODQyLHMucmdiMTZmPTM0ODQzKSxlLndlYmdsX2NvbG9y X2J1ZmZlcl9mbG9hdCYmKHMucmdiYTMyZj0zNDgzNik7dmFyIGw9W107T2JqZWN0LmtleXMo cykuZm9yRWFjaCgoZnVuY3Rpb24odCl7bFtzW3RdXT10fSkpO3ZhciBjPTAsdT17fTtyZXR1 cm4gYS5wcm90b3R5cGUuZGVjUmVmPWZ1bmN0aW9uKCl7MD49LS10aGlzLnJlZkNvdW50JiZv KHRoaXMpfSxpLnByb2ZpbGUmJihuLmdldFRvdGFsUmVuZGVyYnVmZmVyU2l6ZT1mdW5jdGlv bigpe3ZhciB0PTA7cmV0dXJuIE9iamVjdC5rZXlzKHUpLmZvckVhY2goKGZ1bmN0aW9uKGUp e3QrPXVbZV0uc3RhdHMuc2l6ZX0pKSx0fSkse2NyZWF0ZTpmdW5jdGlvbihlLHIpe2Z1bmN0 aW9uIG8oZSxyKXt2YXIgbj0wLGE9MCx1PTMyODU0O2lmKCJvYmplY3QiPT10eXBlb2YgZSYm ZT8oInNoYXBlImluIGU/KG49MHwoYT1lLnNoYXBlKVswXSxhPTB8YVsxXSk6KCJyYWRpdXMi aW4gZSYmKG49YT0wfGUucmFkaXVzKSwid2lkdGgiaW4gZSYmKG49MHxlLndpZHRoKSwiaGVp Z2h0ImluIGUmJihhPTB8ZS5oZWlnaHQpKSwiZm9ybWF0ImluIGUmJih1PXNbZS5mb3JtYXRd KSk6Im51bWJlciI9PXR5cGVvZiBlPyhuPTB8ZSxhPSJudW1iZXIiPT10eXBlb2Ygcj8wfHI6 bik6ZXx8KG49YT0xKSxuIT09Yy53aWR0aHx8YSE9PWMuaGVpZ2h0fHx1IT09Yy5mb3JtYXQp cmV0dXJuIG8ud2lkdGg9Yy53aWR0aD1uLG8uaGVpZ2h0PWMuaGVpZ2h0PWEsYy5mb3JtYXQ9 dSx0LmJpbmRSZW5kZXJidWZmZXIoMzYxNjEsYy5yZW5kZXJidWZmZXIpLHQucmVuZGVyYnVm ZmVyU3RvcmFnZSgzNjE2MSx1LG4sYSksaS5wcm9maWxlJiYoYy5zdGF0cy5zaXplPWJ0W2Mu Zm9ybWF0XSpjLndpZHRoKmMuaGVpZ2h0KSxvLmZvcm1hdD1sW2MuZm9ybWF0XSxvfXZhciBj PW5ldyBhKHQuY3JlYXRlUmVuZGVyYnVmZmVyKCkpO3JldHVybiB1W2MuaWRdPWMsbi5yZW5k ZXJidWZmZXJDb3VudCsrLG8oZSxyKSxvLnJlc2l6ZT1mdW5jdGlvbihlLHIpe3ZhciBuPTB8 ZSxhPTB8cnx8bjtyZXR1cm4gbj09PWMud2lkdGgmJmE9PT1jLmhlaWdodHx8KG8ud2lkdGg9 Yy53aWR0aD1uLG8uaGVpZ2h0PWMuaGVpZ2h0PWEsdC5iaW5kUmVuZGVyYnVmZmVyKDM2MTYx LGMucmVuZGVyYnVmZmVyKSx0LnJlbmRlcmJ1ZmZlclN0b3JhZ2UoMzYxNjEsYy5mb3JtYXQs bixhKSxpLnByb2ZpbGUmJihjLnN0YXRzLnNpemU9YnRbYy5mb3JtYXRdKmMud2lkdGgqYy5o ZWlnaHQpKSxvfSxvLl9yZWdsVHlwZT0icmVuZGVyYnVmZmVyIixvLl9yZW5kZXJidWZmZXI9 YyxpLnByb2ZpbGUmJihvLnN0YXRzPWMuc3RhdHMpLG8uZGVzdHJveT1mdW5jdGlvbigpe2Mu ZGVjUmVmKCl9LG99LGNsZWFyOmZ1bmN0aW9uKCl7Syh1KS5mb3JFYWNoKG8pfSxyZXN0b3Jl OmZ1bmN0aW9uKCl7Syh1KS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnJlbmRlcmJ1ZmZlcj10 LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLHQuYmluZFJlbmRlcmJ1ZmZlcigzNjE2MSxlLnJlbmRl cmJ1ZmZlciksdC5yZW5kZXJidWZmZXJTdG9yYWdlKDM2MTYxLGUuZm9ybWF0LGUud2lkdGgs ZS5oZWlnaHQpfSkpLHQuYmluZFJlbmRlcmJ1ZmZlcigzNjE2MSxudWxsKX19fSx3dD1bXTt3 dFs2NDA4XT00LHd0WzY0MDddPTM7dmFyIFR0PVtdO1R0WzUxMjFdPTEsVHRbNTEyNl09NCxU dFszNjE5M109Mjt2YXIga3Q9WzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwtMTI0NTY0MzgyNSwt MzczOTU3NzIzLDk2MTk4NzE2MywxNTA4OTcwOTkzLC0xODQxMzMxNTQ4LC0xNDI0MjA0MDc1 LC02NzA1ODYyMTYsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgs LTIxMzI4ODkwOTAsLTE2ODAwNzkxOTMsLTEwNDY3NDQ3MTYsLTQ1OTU3Njg5NSwtMjcyNzQy NTIyLDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5 MiwxOTk2MDY0OTg2LC0xNzQwNzQ2NDE0LC0xNDczMTMyOTQ3LC0xMzQxOTcwNDg4LC0xMDg0 NjUzNjI1LC05NTgzOTU0MDUsLTcxMDQzODU4NSwxMTM5MjY5OTMsMzM4MjQxODk1LDY2NjMw NzIwNSw3NzM1Mjk5MTIsMTI5NDc1NzM3MiwxMzk2MTgyMjkxLDE2OTUxODM3MDAsMTk4NjY2 MTA1MSwtMjExNzk0MDk0NiwtMTgzODAxMTI1OSwtMTU2NDQ4MTM3NSwtMTQ3NDY2NDg4NSwt MTAzNTIzNjQ5NiwtOTQ5MjAyNTI1LC03Nzg5MDE0NzksLTY5NDYxNDQ5MiwtMjAwMzk1Mzg3 LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4 MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAy NDEwNDgxNSwtMjA2NzIzNjg0NCwtMTkzMzExNDg3MiwtMTg2NjUzMDgyMiwtMTUzODIzMzEw OSwtMTA5MDkzNTgxNywtOTY1NjQxOTk4XSxBdD1bIngiLCJ5IiwieiIsInciXSxNdD0iYmxl bmQuZnVuYyBibGVuZC5lcXVhdGlvbiBzdGVuY2lsLmZ1bmMgc3RlbmNpbC5vcEZyb250IHN0 ZW5jaWwub3BCYWNrIHNhbXBsZS5jb3ZlcmFnZSB2aWV3cG9ydCBzY2lzc29yLmJveCBwb2x5 Z29uT2Zmc2V0Lm9mZnNldCIuc3BsaXQoIiAiKSxTdD17MDowLDE6MSx6ZXJvOjAsb25lOjEs InNyYyBjb2xvciI6NzY4LCJvbmUgbWludXMgc3JjIGNvbG9yIjo3NjksInNyYyBhbHBoYSI6 NzcwLCJvbmUgbWludXMgc3JjIGFscGhhIjo3NzEsImRzdCBjb2xvciI6Nzc0LCJvbmUgbWlu dXMgZHN0IGNvbG9yIjo3NzUsImRzdCBhbHBoYSI6NzcyLCJvbmUgbWludXMgZHN0IGFscGhh Ijo3NzMsImNvbnN0YW50IGNvbG9yIjozMjc2OSwib25lIG1pbnVzIGNvbnN0YW50IGNvbG9y IjozMjc3MCwiY29uc3RhbnQgYWxwaGEiOjMyNzcxLCJvbmUgbWludXMgY29uc3RhbnQgYWxw aGEiOjMyNzcyLCJzcmMgYWxwaGEgc2F0dXJhdGUiOjc3Nn0sRXQ9e25ldmVyOjUxMixsZXNz OjUxMywiPCI6NTEzLGVxdWFsOjUxNCwiPSI6NTE0LCI9PSI6NTE0LCI9PT0iOjUxNCxsZXF1 YWw6NTE1LCI8PSI6NTE1LGdyZWF0ZXI6NTE2LCI+Ijo1MTYsbm90ZXF1YWw6NTE3LCIhPSI6 NTE3LCIhPT0iOjUxNyxnZXF1YWw6NTE4LCI+PSI6NTE4LGFsd2F5czo1MTl9LEx0PXswOjAs emVybzowLGtlZXA6NzY4MCxyZXBsYWNlOjc2ODEsaW5jcmVtZW50Ojc2ODIsZGVjcmVtZW50 Ojc2ODMsImluY3JlbWVudCB3cmFwIjozNDA1NSwiZGVjcmVtZW50IHdyYXAiOjM0MDU2LGlu dmVydDo1Mzg2fSxDdD17Y3c6MjMwNCxjY3c6MjMwNX0sUHQ9bmV3IEYoITEsITEsITEsKGZ1 bmN0aW9uKCl7fSkpO3JldHVybiBmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7aWYoMD09PUsu bGVuZ3RoKVQmJlQudXBkYXRlKCksZXQ9bnVsbDtlbHNle2V0PVkubmV4dChlKSxmKCk7Zm9y KHZhciB0PUsubGVuZ3RoLTE7MDw9dDstLXQpe3ZhciByPUtbdF07ciYmcihJLG51bGwsMCl9 Zy5mbHVzaCgpLFQmJlQudXBkYXRlKCl9fWZ1bmN0aW9uIHIoKXshZXQmJjA8Sy5sZW5ndGgm JihldD1ZLm5leHQoZSkpfWZ1bmN0aW9uIG4oKXtldCYmKFkuY2FuY2VsKGUpLGV0PW51bGwp fWZ1bmN0aW9uIGEodCl7dC5wcmV2ZW50RGVmYXVsdCgpLG4oKSxRLmZvckVhY2goKGZ1bmN0 aW9uKHQpe3QoKX0pKX1mdW5jdGlvbiBvKHQpe2cuZ2V0RXJyb3IoKSx5LnJlc3RvcmUoKSxG LnJlc3RvcmUoKSx6LnJlc3RvcmUoKSxCLnJlc3RvcmUoKSxOLnJlc3RvcmUoKSxqLnJlc3Rv cmUoKSxSLnJlc3RvcmUoKSxUJiZULnJlc3RvcmUoKSxxLnByb2NzLnJlZnJlc2goKSxyKCks JC5mb3JFYWNoKChmdW5jdGlvbih0KXt0KCl9KSl9ZnVuY3Rpb24gcyh0KXtmdW5jdGlvbiBl KHQsZSl7dmFyIHI9e30sbj17fTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVu Y3Rpb24oaSl7dmFyIGE9dFtpXTtpZihHLmlzRHluYW1pYyhhKSluW2ldPUcudW5ib3goYSxp KTtlbHNle2lmKGUmJkFycmF5LmlzQXJyYXkoYSkpZm9yKHZhciBvPTA7bzxhLmxlbmd0aDsr K28paWYoRy5pc0R5bmFtaWMoYVtvXSkpcmV0dXJuIHZvaWQobltpXT1HLnVuYm94KGEsaSkp O3JbaV09YX19KSkse2R5bmFtaWM6bixzdGF0aWM6cn19dmFyIHI9ZSh0LmNvbnRleHR8fHt9 LCEwKSxuPWUodC51bmlmb3Jtc3x8e30sITApLGk9ZSh0LmF0dHJpYnV0ZXN8fHt9LCExKTt0 PWUoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0KXtpZih0IGluIHIpe3ZhciBlPXJbdF07ZGVs ZXRlIHJbdF0sT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24obil7clt0KyIuIitu XT1lW25dfSkpfX12YXIgcj1IKHt9LHQpO3JldHVybiBkZWxldGUgci51bmlmb3JtcyxkZWxl dGUgci5hdHRyaWJ1dGVzLGRlbGV0ZSByLmNvbnRleHQsZGVsZXRlIHIudmFvLCJzdGVuY2ls ImluIHImJnIuc3RlbmNpbC5vcCYmKHIuc3RlbmNpbC5vcEJhY2s9ci5zdGVuY2lsLm9wRnJv bnQ9ci5zdGVuY2lsLm9wLGRlbGV0ZSByLnN0ZW5jaWwub3ApLGUoImJsZW5kIiksZSgiZGVw dGgiKSxlKCJjdWxsIiksZSgic3RlbmNpbCIpLGUoInBvbHlnb25PZmZzZXQiKSxlKCJzY2lz c29yIiksZSgic2FtcGxlIiksInZhbyJpbiB0JiYoci52YW89dC52YW8pLHJ9KHQpLCExKTt2 YXIgYT17Z3B1VGltZTowLGNwdVRpbWU6MCxjb3VudDowfSxvPXEuY29tcGlsZSh0LGksbixy LGEpLHM9by5kcmF3LGw9by5iYXRjaCxjPW8uc2NvcGUsdT1bXTtyZXR1cm4gSCgoZnVuY3Rp b24odCxlKXt2YXIgcjtpZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4gYy5jYWxsKHRo aXMsbnVsbCx0LDApO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlKWlmKCJudW1iZXIiPT10eXBl b2YgdClmb3Iocj0wO3I8dDsrK3IpYy5jYWxsKHRoaXMsbnVsbCxlLHIpO2Vsc2V7aWYoIUFy cmF5LmlzQXJyYXkodCkpcmV0dXJuIGMuY2FsbCh0aGlzLHQsZSwwKTtmb3Iocj0wO3I8dC5s ZW5ndGg7KytyKWMuY2FsbCh0aGlzLHRbcl0sZSxyKX1lbHNlIGlmKCJudW1iZXIiPT10eXBl b2YgdCl7aWYoMDx0KXJldHVybiBsLmNhbGwodGhpcyxmdW5jdGlvbih0KXtmb3IoO3UubGVu Z3RoPHQ7KXUucHVzaChudWxsKTtyZXR1cm4gdX0oMHx0KSwwfHQpfWVsc2V7aWYoIUFycmF5 LmlzQXJyYXkodCkpcmV0dXJuIHMuY2FsbCh0aGlzLHQpO2lmKHQubGVuZ3RoKXJldHVybiBs LmNhbGwodGhpcyx0LHQubGVuZ3RoKX19KSx7c3RhdHM6YSxkZXN0cm95OmZ1bmN0aW9uKCl7 by5kZXN0cm95KCl9fSl9ZnVuY3Rpb24gbCh0LGUpe3ZhciByPTA7cS5wcm9jcy5wb2xsKCk7 dmFyIG49ZS5jb2xvcjtuJiYoZy5jbGVhckNvbG9yKCtuWzBdfHwwLCtuWzFdfHwwLCtuWzJd fHwwLCtuWzNdfHwwKSxyfD0xNjM4NCksImRlcHRoImluIGUmJihnLmNsZWFyRGVwdGgoK2Uu ZGVwdGgpLHJ8PTI1NiksInN0ZW5jaWwiaW4gZSYmKGcuY2xlYXJTdGVuY2lsKDB8ZS5zdGVu Y2lsKSxyfD0xMDI0KSxnLmNsZWFyKHIpfWZ1bmN0aW9uIGModCl7cmV0dXJuIEsucHVzaCh0 KSxyKCkse2NhbmNlbDpmdW5jdGlvbigpe3ZhciBlPVYoSyx0KTtLW2VdPWZ1bmN0aW9uIHQo KXt2YXIgZT1WKEssdCk7S1tlXT1LW0subGVuZ3RoLTFdLC0tSy5sZW5ndGgsMD49Sy5sZW5n dGgmJm4oKX19fX1mdW5jdGlvbiB1KCl7dmFyIHQ9WC52aWV3cG9ydCxlPVguc2Npc3Nvcl9i b3g7dFswXT10WzFdPWVbMF09ZVsxXT0wLEkudmlld3BvcnRXaWR0aD1JLmZyYW1lYnVmZmVy V2lkdGg9SS5kcmF3aW5nQnVmZmVyV2lkdGg9dFsyXT1lWzJdPWcuZHJhd2luZ0J1ZmZlcldp ZHRoLEkudmlld3BvcnRIZWlnaHQ9SS5mcmFtZWJ1ZmZlckhlaWdodD1JLmRyYXdpbmdCdWZm ZXJIZWlnaHQ9dFszXT1lWzNdPWcuZHJhd2luZ0J1ZmZlckhlaWdodH1mdW5jdGlvbiBmKCl7 SS50aWNrKz0xLEkudGltZT1tKCksdSgpLHEucHJvY3MucG9sbCgpfWZ1bmN0aW9uIGgoKXtC LnJlZnJlc2goKSx1KCkscS5wcm9jcy5yZWZyZXNoKCksVCYmVC51cGRhdGUoKX1mdW5jdGlv biBtKCl7cmV0dXJuKFcoKS1NKS8xZTN9aWYoISh0PWkodCkpKXJldHVybiBudWxsO3ZhciBn PXQuZ2wsdj1nLmdldENvbnRleHRBdHRyaWJ1dGVzKCk7Zy5pc0NvbnRleHRMb3N0KCk7dmFy IHk9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKGUpe3ZhciByO2U9ZS50b0xvd2VyQ2FzZSgp O3RyeXtyPW5bZV09dC5nZXRFeHRlbnNpb24oZSl9Y2F0Y2godCl7fXJldHVybiEhcn1mb3Io dmFyIG49e30saT0wO2k8ZS5leHRlbnNpb25zLmxlbmd0aDsrK2kpe3ZhciBhPWUuZXh0ZW5z aW9uc1tpXTtpZighcihhKSlyZXR1cm4gZS5vbkRlc3Ryb3koKSxlLm9uRG9uZSgnIicrYSsn IiBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgY3VycmVudCBXZWJHTCBjb250 ZXh0LCB0cnkgdXBncmFkaW5nIHlvdXIgc3lzdGVtIG9yIGEgZGlmZmVyZW50IGJyb3dzZXIn KSxudWxsfXJldHVybiBlLm9wdGlvbmFsRXh0ZW5zaW9ucy5mb3JFYWNoKHIpLHtleHRlbnNp b25zOm4scmVzdG9yZTpmdW5jdGlvbigpe09iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0 aW9uKHQpe2lmKG5bdF0mJiFyKHQpKXRocm93IEVycm9yKCIocmVnbCk6IGVycm9yIHJlc3Rv cmluZyBleHRlbnNpb24gIit0KX0pKX19fShnLHQpO2lmKCF5KXJldHVybiBudWxsO3ZhciB4 PWZ1bmN0aW9uKCl7dmFyIHQ9eyIiOjB9LGU9WyIiXTtyZXR1cm57aWQ6ZnVuY3Rpb24ocil7 dmFyIG49dFtyXTtyZXR1cm4gbnx8KG49dFtyXT1lLmxlbmd0aCxlLnB1c2gociksbil9LHN0 cjpmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX19fSgpLGI9e3Zhb0NvdW50OjAsYnVmZmVyQ291 bnQ6MCxlbGVtZW50c0NvdW50OjAsZnJhbWVidWZmZXJDb3VudDowLHNoYWRlckNvdW50OjAs dGV4dHVyZUNvdW50OjAsY3ViZUNvdW50OjAscmVuZGVyYnVmZmVyQ291bnQ6MCxtYXhUZXh0 dXJlVW5pdHM6MH0sXz10LmNhY2hlZENvZGV8fHt9LHc9eS5leHRlbnNpb25zLFQ9ZnVuY3Rp b24odCxlKXtmdW5jdGlvbiByKCl7dGhpcy5lbmRRdWVyeUluZGV4PXRoaXMuc3RhcnRRdWVy eUluZGV4PS0xLHRoaXMuc3VtPTAsdGhpcy5zdGF0cz1udWxsfWZ1bmN0aW9uIG4odCxlLG4p e3ZhciBpPW8ucG9wKCl8fG5ldyByO2kuc3RhcnRRdWVyeUluZGV4PXQsaS5lbmRRdWVyeUlu ZGV4PWUsaS5zdW09MCxpLnN0YXRzPW4scy5wdXNoKGkpfWlmKCFlLmV4dF9kaXNqb2ludF90 aW1lcl9xdWVyeSlyZXR1cm4gbnVsbDt2YXIgaT1bXSxhPVtdLG89W10scz1bXSxsPVtdLGM9 W107cmV0dXJue2JlZ2luUXVlcnk6ZnVuY3Rpb24odCl7dmFyIHI9aS5wb3AoKXx8ZS5leHRf ZGlzam9pbnRfdGltZXJfcXVlcnkuY3JlYXRlUXVlcnlFWFQoKTtlLmV4dF9kaXNqb2ludF90 aW1lcl9xdWVyeS5iZWdpblF1ZXJ5RVhUKDM1MDA3LHIpLGEucHVzaChyKSxuKGEubGVuZ3Ro LTEsYS5sZW5ndGgsdCl9LGVuZFF1ZXJ5OmZ1bmN0aW9uKCl7ZS5leHRfZGlzam9pbnRfdGlt ZXJfcXVlcnkuZW5kUXVlcnlFWFQoMzUwMDcpfSxwdXNoU2NvcGVTdGF0czpuLHVwZGF0ZTpm dW5jdGlvbigpe3ZhciB0LHI7aWYoMCE9PSh0PWEubGVuZ3RoKSl7Yy5sZW5ndGg9TWF0aC5t YXgoYy5sZW5ndGgsdCsxKSxsLmxlbmd0aD1NYXRoLm1heChsLmxlbmd0aCx0KzEpLGxbMF09 MDt2YXIgbj1jWzBdPTA7Zm9yKHI9dD0wO3I8YS5sZW5ndGg7KytyKXt2YXIgdT1hW3JdO2Uu ZXh0X2Rpc2pvaW50X3RpbWVyX3F1ZXJ5LmdldFF1ZXJ5T2JqZWN0RVhUKHUsMzQ5MTkpPyhu Kz1lLmV4dF9kaXNqb2ludF90aW1lcl9xdWVyeS5nZXRRdWVyeU9iamVjdEVYVCh1LDM0OTE4 KSxpLnB1c2godSkpOmFbdCsrXT11LGxbcisxXT1uLGNbcisxXT10fWZvcihhLmxlbmd0aD10 LHI9dD0wO3I8cy5sZW5ndGg7KytyKXt2YXIgZj0obj1zW3JdKS5zdGFydFF1ZXJ5SW5kZXg7 dT1uLmVuZFF1ZXJ5SW5kZXg7bi5zdW0rPWxbdV0tbFtmXSxmPWNbZl0sKHU9Y1t1XSk9PT1m PyhuLnN0YXRzLmdwdVRpbWUrPW4uc3VtLzFlNixvLnB1c2gobikpOihuLnN0YXJ0UXVlcnlJ bmRleD1mLG4uZW5kUXVlcnlJbmRleD11LHNbdCsrXT1uKX1zLmxlbmd0aD10fX0sZ2V0TnVt UGVuZGluZ1F1ZXJpZXM6ZnVuY3Rpb24oKXtyZXR1cm4gYS5sZW5ndGh9LGNsZWFyOmZ1bmN0 aW9uKCl7aS5wdXNoLmFwcGx5KGksYSk7Zm9yKHZhciB0PTA7dDxpLmxlbmd0aDt0KyspZS5l eHRfZGlzam9pbnRfdGltZXJfcXVlcnkuZGVsZXRlUXVlcnlFWFQoaVt0XSk7YS5sZW5ndGg9 MCxpLmxlbmd0aD0wfSxyZXN0b3JlOmZ1bmN0aW9uKCl7YS5sZW5ndGg9MCxpLmxlbmd0aD0w fX19KDAsdyksTT1XKCksQz1nLmRyYXdpbmdCdWZmZXJXaWR0aCxQPWcuZHJhd2luZ0J1ZmZl ckhlaWdodCxJPXt0aWNrOjAsdGltZTowLHZpZXdwb3J0V2lkdGg6Qyx2aWV3cG9ydEhlaWdo dDpQLGZyYW1lYnVmZmVyV2lkdGg6QyxmcmFtZWJ1ZmZlckhlaWdodDpQLGRyYXdpbmdCdWZm ZXJXaWR0aDpDLGRyYXdpbmdCdWZmZXJIZWlnaHQ6UCxwaXhlbFJhdGlvOnQucGl4ZWxSYXRp b30sTz0oQz17ZWxlbWVudHM6bnVsbCxwcmltaXRpdmU6NCxjb3VudDotMSxvZmZzZXQ6MCxp bnN0YW5jZXM6LTF9LFooZyx3KSksej1wKGcsYix0LChmdW5jdGlvbih0KXtyZXR1cm4gUi5k ZXN0cm95QnVmZmVyKHQpfSkpLEQ9ZChnLHcseixiKSxSPVMoZyx3LE8sYix6LEQsQyksRj1F KGcseCxiLHQpLEI9ayhnLHcsTywoZnVuY3Rpb24oKXtxLnByb2NzLnBvbGwoKX0pLEksYix0 KSxOPV90KGcsdywwLGIsdCksaj1BKGcsdyxPLEIsTixiKSxxPVUoZyx4LHcsTyx6LEQsMCxq LHt9LFIsRixDLEksVCxfLHQpLFg9KHg9TChnLGoscS5wcm9jcy5wb2xsLEkpLHEubmV4dCks Sj1nLmNhbnZhcyxLPVtdLFE9W10sJD1bXSx0dD1bdC5vbkRlc3Ryb3ldLGV0PW51bGw7SiYm KEouYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIsYSwhMSksSi5hZGRFdmVu dExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIsbywhMSkpO3ZhciBydD1qLnNldEZC Tz1zKHtmcmFtZWJ1ZmZlcjpHLmRlZmluZS5jYWxsKG51bGwsMSwiZnJhbWVidWZmZXIiKX0p O3JldHVybiBoKCksdj1IKHMse2NsZWFyOmZ1bmN0aW9uKHQpe2lmKCJmcmFtZWJ1ZmZlciJp biB0KWlmKHQuZnJhbWVidWZmZXImJiJmcmFtZWJ1ZmZlckN1YmUiPT09dC5mcmFtZWJ1ZmZl cl9yZWdsVHlwZSlmb3IodmFyIGU9MDs2PmU7KytlKXJ0KEgoe2ZyYW1lYnVmZmVyOnQuZnJh bWVidWZmZXIuZmFjZXNbZV19LHQpLGwpO2Vsc2UgcnQodCxsKTtlbHNlIGwoMCx0KX0scHJv cDpHLmRlZmluZS5iaW5kKG51bGwsMSksY29udGV4dDpHLmRlZmluZS5iaW5kKG51bGwsMiks dGhpczpHLmRlZmluZS5iaW5kKG51bGwsMyksZHJhdzpzKHt9KSxidWZmZXI6ZnVuY3Rpb24o dCl7cmV0dXJuIHouY3JlYXRlKHQsMzQ5NjIsITEsITEpfSxlbGVtZW50czpmdW5jdGlvbih0 KXtyZXR1cm4gRC5jcmVhdGUodCwhMSl9LHRleHR1cmU6Qi5jcmVhdGUyRCxjdWJlOkIuY3Jl YXRlQ3ViZSxyZW5kZXJidWZmZXI6Ti5jcmVhdGUsZnJhbWVidWZmZXI6ai5jcmVhdGUsZnJh bWVidWZmZXJDdWJlOmouY3JlYXRlQ3ViZSx2YW86Ui5jcmVhdGVWQU8sYXR0cmlidXRlczp2 LGZyYW1lOmMsb246ZnVuY3Rpb24odCxlKXt2YXIgcjtzd2l0Y2godCl7Y2FzZSJmcmFtZSI6 cmV0dXJuIGMoZSk7Y2FzZSJsb3N0IjpyPVE7YnJlYWs7Y2FzZSJyZXN0b3JlIjpyPSQ7YnJl YWs7Y2FzZSJkZXN0cm95IjpyPXR0fXJldHVybiByLnB1c2goZSkse2NhbmNlbDpmdW5jdGlv bigpe2Zvcih2YXIgdD0wO3Q8ci5sZW5ndGg7Kyt0KWlmKHJbdF09PT1lKXtyW3RdPXJbci5s ZW5ndGgtMV0sci5wb3AoKTticmVha319fX0sbGltaXRzOk8saGFzRXh0ZW5zaW9uOmZ1bmN0 aW9uKHQpe3JldHVybiAwPD1PLmV4dGVuc2lvbnMuaW5kZXhPZih0LnRvTG93ZXJDYXNlKCkp fSxyZWFkOngsZGVzdHJveTpmdW5jdGlvbigpe0subGVuZ3RoPTAsbigpLEomJihKLnJlbW92 ZUV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLGEpLEoucmVtb3ZlRXZlbnRMaXN0 ZW5lcigid2ViZ2xjb250ZXh0cmVzdG9yZWQiLG8pKSxGLmNsZWFyKCksai5jbGVhcigpLE4u Y2xlYXIoKSxSLmNsZWFyKCksQi5jbGVhcigpLEQuY2xlYXIoKSx6LmNsZWFyKCksVCYmVC5j bGVhcigpLHR0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3QoKX0pKX0sX2dsOmcsX3JlZnJlc2g6 aCxwb2xsOmZ1bmN0aW9uKCl7ZigpLFQmJlQudXBkYXRlKCl9LG5vdzptLHN0YXRzOmIsZ2V0 Q2FjaGVkQ29kZTpmdW5jdGlvbigpe3JldHVybiBffSxwcmVsb2FkQ2FjaGVkQ29kZTpmdW5j dGlvbih0KXtPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChmdW5jdGlvbih0KXtfW3RbMF1d PXRbMV19KSl9fSksdC5vbkRvbmUobnVsbCx2KSx2fX0pKX0se31dLDI4NDpbZnVuY3Rpb24o dCxlLHIpe3ZhciBuPXQoImJ1ZmZlciIpLGk9bi5CdWZmZXI7ZnVuY3Rpb24gYSh0LGUpe2Zv cih2YXIgciBpbiB0KWVbcl09dFtyXX1mdW5jdGlvbiBvKHQsZSxyKXtyZXR1cm4gaSh0LGUs cil9aS5mcm9tJiZpLmFsbG9jJiZpLmFsbG9jVW5zYWZlJiZpLmFsbG9jVW5zYWZlU2xvdz9l LmV4cG9ydHM9bjooYShuLHIpLHIuQnVmZmVyPW8pLG8ucHJvdG90eXBlPU9iamVjdC5jcmVh dGUoaS5wcm90b3R5cGUpLGEoaSxvKSxvLmZyb209ZnVuY3Rpb24odCxlLHIpe2lmKCJudW1i ZXIiPT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IG5vdCBi ZSBhIG51bWJlciIpO3JldHVybiBpKHQsZSxyKX0sby5hbGxvYz1mdW5jdGlvbih0LGUscil7 aWYoIm51bWJlciIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11 c3QgYmUgYSBudW1iZXIiKTt2YXIgbj1pKHQpO3JldHVybiB2b2lkIDAhPT1lPyJzdHJpbmci PT10eXBlb2Ygcj9uLmZpbGwoZSxyKTpuLmZpbGwoZSk6bi5maWxsKDApLG59LG8uYWxsb2NV bnNhZmU9ZnVuY3Rpb24odCl7aWYoIm51bWJlciIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBl RXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gaSh0KX0sby5hbGxv Y1Vuc2FmZVNsb3c9ZnVuY3Rpb24odCl7aWYoIm51bWJlciIhPXR5cGVvZiB0KXRocm93IG5l dyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gbi5TbG93 QnVmZmVyKHQpfX0se2J1ZmZlcjo4NX1dLDI4NTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0 cz1pO3ZhciBuPXQoImV2ZW50cyIpLkV2ZW50RW1pdHRlcjtmdW5jdGlvbiBpKCl7bi5jYWxs KHRoaXMpfXQoImluaGVyaXRzIikoaSxuKSxpLlJlYWRhYmxlPXQoInJlYWRhYmxlLXN0cmVh bS9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcyIpLGkuV3JpdGFibGU9dCgicmVhZGFibGUtc3Ry ZWFtL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzIiksaS5EdXBsZXg9dCgicmVhZGFibGUtc3Ry ZWFtL2xpYi9fc3RyZWFtX2R1cGxleC5qcyIpLGkuVHJhbnNmb3JtPXQoInJlYWRhYmxlLXN0 cmVhbS9saWIvX3N0cmVhbV90cmFuc2Zvcm0uanMiKSxpLlBhc3NUaHJvdWdoPXQoInJlYWRh YmxlLXN0cmVhbS9saWIvX3N0cmVhbV9wYXNzdGhyb3VnaC5qcyIpLGkuZmluaXNoZWQ9dCgi cmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2VuZC1vZi1zdHJlYW0uanMi KSxpLnBpcGVsaW5lPXQoInJlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9w aXBlbGluZS5qcyIpLGkuU3RyZWFtPWksaS5wcm90b3R5cGUucGlwZT1mdW5jdGlvbih0LGUp e3ZhciByPXRoaXM7ZnVuY3Rpb24gaShlKXt0LndyaXRhYmxlJiYhMT09PXQud3JpdGUoZSkm JnIucGF1c2UmJnIucGF1c2UoKX1mdW5jdGlvbiBhKCl7ci5yZWFkYWJsZSYmci5yZXN1bWUm JnIucmVzdW1lKCl9ci5vbigiZGF0YSIsaSksdC5vbigiZHJhaW4iLGEpLHQuX2lzU3RkaW98 fGUmJiExPT09ZS5lbmR8fChyLm9uKCJlbmQiLHMpLHIub24oImNsb3NlIixsKSk7dmFyIG89 ITE7ZnVuY3Rpb24gcygpe298fChvPSEwLHQuZW5kKCkpfWZ1bmN0aW9uIGwoKXtvfHwobz0h MCwiZnVuY3Rpb24iPT10eXBlb2YgdC5kZXN0cm95JiZ0LmRlc3Ryb3koKSl9ZnVuY3Rpb24g Yyh0KXtpZih1KCksMD09PW4ubGlzdGVuZXJDb3VudCh0aGlzLCJlcnJvciIpKXRocm93IHR9 ZnVuY3Rpb24gdSgpe3IucmVtb3ZlTGlzdGVuZXIoImRhdGEiLGkpLHQucmVtb3ZlTGlzdGVu ZXIoImRyYWluIixhKSxyLnJlbW92ZUxpc3RlbmVyKCJlbmQiLHMpLHIucmVtb3ZlTGlzdGVu ZXIoImNsb3NlIixsKSxyLnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsYyksdC5yZW1vdmVMaXN0 ZW5lcigiZXJyb3IiLGMpLHIucmVtb3ZlTGlzdGVuZXIoImVuZCIsdSksci5yZW1vdmVMaXN0 ZW5lcigiY2xvc2UiLHUpLHQucmVtb3ZlTGlzdGVuZXIoImNsb3NlIix1KX1yZXR1cm4gci5v bigiZXJyb3IiLGMpLHQub24oImVycm9yIixjKSxyLm9uKCJlbmQiLHUpLHIub24oImNsb3Nl Iix1KSx0Lm9uKCJjbG9zZSIsdSksdC5lbWl0KCJwaXBlIixyKSx0fX0se2V2ZW50czo4NCxp bmhlcml0czoyMzEsInJlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9kdXBsZXguanMiOjI4 NywicmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzIjoyODgsInJl YWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcyI6Mjg5LCJyZWFkYWJsZS1z dHJlYW0vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzIjoyOTAsInJlYWRhYmxlLXN0cmVhbS9s aWIvX3N0cmVhbV93cml0YWJsZS5qcyI6MjkxLCJyZWFkYWJsZS1zdHJlYW0vbGliL2ludGVy bmFsL3N0cmVhbXMvZW5kLW9mLXN0cmVhbS5qcyI6Mjk1LCJyZWFkYWJsZS1zdHJlYW0vbGli L2ludGVybmFsL3N0cmVhbXMvcGlwZWxpbmUuanMiOjI5N31dLDI4NjpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17fTtmdW5jdGlvbiBpKHQsZSxyKXtyfHwocj1FcnJv cik7dmFyIGk9ZnVuY3Rpb24odCl7dmFyIHIsbjtmdW5jdGlvbiBpKHIsbixpKXtyZXR1cm4g dC5jYWxsKHRoaXMsZnVuY3Rpb24odCxyLG4pe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT9l OmUodCxyLG4pfShyLG4saSkpfHx0aGlzfXJldHVybiBuPXQsKHI9aSkucHJvdG90eXBlPU9i amVjdC5jcmVhdGUobi5wcm90b3R5cGUpLHIucHJvdG90eXBlLmNvbnN0cnVjdG9yPXIsci5f X3Byb3RvX189bixpfShyKTtpLnByb3RvdHlwZS5uYW1lPXIubmFtZSxpLnByb3RvdHlwZS5j b2RlPXQsblt0XT1pfWZ1bmN0aW9uIGEodCxlKXtpZihBcnJheS5pc0FycmF5KHQpKXt2YXIg cj10Lmxlbmd0aDtyZXR1cm4gdD10Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZyh0 KX0pKSxyPjI/Im9uZSBvZiAiLmNvbmNhdChlLCIgIikuY29uY2F0KHQuc2xpY2UoMCxyLTEp LmpvaW4oIiwgIiksIiwgb3IgIikrdFtyLTFdOjI9PT1yPyJvbmUgb2YgIi5jb25jYXQoZSwi ICIpLmNvbmNhdCh0WzBdLCIgb3IgIikuY29uY2F0KHRbMV0pOiJvZiAiLmNvbmNhdChlLCIg IikuY29uY2F0KHRbMF0pfXJldHVybiJvZiAiLmNvbmNhdChlLCIgIikuY29uY2F0KFN0cmlu Zyh0KSl9aSgiRVJSX0lOVkFMSURfT1BUX1ZBTFVFIiwoZnVuY3Rpb24odCxlKXtyZXR1cm4n VGhlIHZhbHVlICInK2UrJyIgaXMgaW52YWxpZCBmb3Igb3B0aW9uICInK3QrJyInfSksVHlw ZUVycm9yKSxpKCJFUlJfSU5WQUxJRF9BUkdfVFlQRSIsKGZ1bmN0aW9uKHQsZSxyKXt2YXIg bixpLG8scztpZigic3RyaW5nIj09dHlwZW9mIGUmJihpPSJub3QgIixlLnN1YnN0cighb3x8 bzwwPzA6K28saS5sZW5ndGgpPT09aSk/KG49Im11c3Qgbm90IGJlIixlPWUucmVwbGFjZSgv Xm5vdCAvLCIiKSk6bj0ibXVzdCBiZSIsZnVuY3Rpb24odCxlLHIpe3JldHVybih2b2lkIDA9 PT1yfHxyPnQubGVuZ3RoKSYmKHI9dC5sZW5ndGgpLHQuc3Vic3RyaW5nKHItZS5sZW5ndGgs cik9PT1lfSh0LCIgYXJndW1lbnQiKSlzPSJUaGUgIi5jb25jYXQodCwiICIpLmNvbmNhdChu LCIgIikuY29uY2F0KGEoZSwidHlwZSIpKTtlbHNle3ZhciBsPWZ1bmN0aW9uKHQsZSxyKXty ZXR1cm4ibnVtYmVyIiE9dHlwZW9mIHImJihyPTApLCEocitlLmxlbmd0aD50Lmxlbmd0aCkm Ji0xIT09dC5pbmRleE9mKGUscil9KHQsIi4iKT8icHJvcGVydHkiOiJhcmd1bWVudCI7cz0n VGhlICInLmNvbmNhdCh0LCciICcpLmNvbmNhdChsLCIgIikuY29uY2F0KG4sIiAiKS5jb25j YXQoYShlLCJ0eXBlIikpfXJldHVybiBzKz0iLiBSZWNlaXZlZCB0eXBlICIuY29uY2F0KHR5 cGVvZiByKX0pLFR5cGVFcnJvciksaSgiRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRiIsInN0 cmVhbS5wdXNoKCkgYWZ0ZXIgRU9GIiksaSgiRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQi LChmdW5jdGlvbih0KXtyZXR1cm4iVGhlICIrdCsiIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50 ZWQifSkpLGkoIkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFIiwiUHJlbWF0dXJlIGNsb3Nl IiksaSgiRVJSX1NUUkVBTV9ERVNUUk9ZRUQiLChmdW5jdGlvbih0KXtyZXR1cm4iQ2Fubm90 IGNhbGwgIit0KyIgYWZ0ZXIgYSBzdHJlYW0gd2FzIGRlc3Ryb3llZCJ9KSksaSgiRVJSX01V TFRJUExFX0NBTExCQUNLIiwiQ2FsbGJhY2sgY2FsbGVkIG11bHRpcGxlIHRpbWVzIiksaSgi RVJSX1NUUkVBTV9DQU5OT1RfUElQRSIsIkNhbm5vdCBwaXBlLCBub3QgcmVhZGFibGUiKSxp KCJFUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORCIsIndyaXRlIGFmdGVyIGVuZCIpLGkoIkVS Ul9TVFJFQU1fTlVMTF9WQUxVRVMiLCJNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0 cmVhbSIsVHlwZUVycm9yKSxpKCJFUlJfVU5LTk9XTl9FTkNPRElORyIsKGZ1bmN0aW9uKHQp e3JldHVybiJVbmtub3duIGVuY29kaW5nOiAiK3R9KSxUeXBlRXJyb3IpLGkoIkVSUl9TVFJF QU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlQiLCJzdHJlYW0udW5zaGlmdCgpIGFmdGVyIGVu ZCBldmVudCIpLGUuZXhwb3J0cy5jb2Rlcz1ufSx7fV0sMjg3OltmdW5jdGlvbih0LGUscil7 KGZ1bmN0aW9uKHIpeyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1PYmplY3Qua2V5 c3x8ZnVuY3Rpb24odCl7dmFyIGU9W107Zm9yKHZhciByIGluIHQpZS5wdXNoKHIpO3JldHVy biBlfTtlLmV4cG9ydHM9Yzt2YXIgaT10KCIuL19zdHJlYW1fcmVhZGFibGUiKSxhPXQoIi4v X3N0cmVhbV93cml0YWJsZSIpO3QoImluaGVyaXRzIikoYyxpKTtmb3IodmFyIG89bihhLnBy b3RvdHlwZSkscz0wO3M8by5sZW5ndGg7cysrKXt2YXIgbD1vW3NdO2MucHJvdG90eXBlW2xd fHwoYy5wcm90b3R5cGVbbF09YS5wcm90b3R5cGVbbF0pfWZ1bmN0aW9uIGModCl7aWYoISh0 aGlzIGluc3RhbmNlb2YgYykpcmV0dXJuIG5ldyBjKHQpO2kuY2FsbCh0aGlzLHQpLGEuY2Fs bCh0aGlzLHQpLHRoaXMuYWxsb3dIYWxmT3Blbj0hMCx0JiYoITE9PT10LnJlYWRhYmxlJiYo dGhpcy5yZWFkYWJsZT0hMSksITE9PT10LndyaXRhYmxlJiYodGhpcy53cml0YWJsZT0hMSks ITE9PT10LmFsbG93SGFsZk9wZW4mJih0aGlzLmFsbG93SGFsZk9wZW49ITEsdGhpcy5vbmNl KCJlbmQiLHUpKSl9ZnVuY3Rpb24gdSgpe3RoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWR8fHIu bmV4dFRpY2soZix0aGlzKX1mdW5jdGlvbiBmKHQpe3QuZW5kKCl9T2JqZWN0LmRlZmluZVBy b3BlcnR5KGMucHJvdG90eXBlLCJ3cml0YWJsZUhpZ2hXYXRlck1hcmsiLHtlbnVtZXJhYmxl OiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRl ck1hcmt9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGMucHJvdG90eXBlLCJ3cml0YWJsZUJ1 ZmZlciIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRh YmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyKCl9fSksT2JqZWN0LmRl ZmluZVByb3BlcnR5KGMucHJvdG90eXBlLCJ3cml0YWJsZUxlbmd0aCIse2VudW1lcmFibGU6 ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUubGVuZ3RofX0p LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLnByb3RvdHlwZSwiZGVzdHJveWVkIix7ZW51bWVy YWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fcmVhZGFibGVT dGF0ZSYmdm9pZCAwIT09dGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3Rh dGUuZGVzdHJveWVkJiZ0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCl9LHNldDpmdW5j dGlvbih0KXt2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ2b2lkIDAhPT10aGlzLl93 cml0YWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9dCx0aGlzLl93 cml0YWJsZVN0YXRlLmRlc3Ryb3llZD10KX19KX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMs dCgiX3Byb2Nlc3MiKSl9LHsiLi9fc3RyZWFtX3JlYWRhYmxlIjoyODksIi4vX3N0cmVhbV93 cml0YWJsZSI6MjkxLF9wcm9jZXNzOjI3Nyxpbmhlcml0czoyMzF9XSwyODg6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWk7dmFyIG49dCgiLi9fc3RyZWFtX3Ry YW5zZm9ybSIpO2Z1bmN0aW9uIGkodCl7aWYoISh0aGlzIGluc3RhbmNlb2YgaSkpcmV0dXJu IG5ldyBpKHQpO24uY2FsbCh0aGlzLHQpfXQoImluaGVyaXRzIikoaSxuKSxpLnByb3RvdHlw ZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKHQsZSxyKXtyKG51bGwsdCl9fSx7Ii4vX3N0cmVhbV90 cmFuc2Zvcm0iOjI5MCxpbmhlcml0czoyMzF9XSwyODk6W2Z1bmN0aW9uKHQsZSxyKXsoZnVu Y3Rpb24ocixuKXsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGk7ZS5leHBvcnRzPUEs QS5SZWFkYWJsZVN0YXRlPWs7dCgiZXZlbnRzIikuRXZlbnRFbWl0dGVyO3ZhciBhPWZ1bmN0 aW9uKHQsZSl7cmV0dXJuIHQubGlzdGVuZXJzKGUpLmxlbmd0aH0sbz10KCIuL2ludGVybmFs L3N0cmVhbXMvc3RyZWFtIikscz10KCJidWZmZXIiKS5CdWZmZXIsbD1uLlVpbnQ4QXJyYXl8 fGZ1bmN0aW9uKCl7fTt2YXIgYyx1PXQoInV0aWwiKTtjPXUmJnUuZGVidWdsb2c/dS5kZWJ1 Z2xvZygic3RyZWFtIik6ZnVuY3Rpb24oKXt9O3ZhciBmLGgscCxkPXQoIi4vaW50ZXJuYWwv c3RyZWFtcy9idWZmZXJfbGlzdCIpLG09dCgiLi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3ki KSxnPXQoIi4vaW50ZXJuYWwvc3RyZWFtcy9zdGF0ZSIpLmdldEhpZ2hXYXRlck1hcmssdj10 KCIuLi9lcnJvcnMiKS5jb2Rlcyx5PXYuRVJSX0lOVkFMSURfQVJHX1RZUEUseD12LkVSUl9T VFJFQU1fUFVTSF9BRlRFUl9FT0YsYj12LkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELF89 di5FUlJfU1RSRUFNX1VOU0hJRlRfQUZURVJfRU5EX0VWRU5UO3QoImluaGVyaXRzIikoQSxv KTt2YXIgdz1tLmVycm9yT3JEZXN0cm95LFQ9WyJlcnJvciIsImNsb3NlIiwiZGVzdHJveSIs InBhdXNlIiwicmVzdW1lIl07ZnVuY3Rpb24gayhlLHIsbil7aT1pfHx0KCIuL19zdHJlYW1f ZHVwbGV4IiksZT1lfHx7fSwiYm9vbGVhbiIhPXR5cGVvZiBuJiYobj1yIGluc3RhbmNlb2Yg aSksdGhpcy5vYmplY3RNb2RlPSEhZS5vYmplY3RNb2RlLG4mJih0aGlzLm9iamVjdE1vZGU9 dGhpcy5vYmplY3RNb2RlfHwhIWUucmVhZGFibGVPYmplY3RNb2RlKSx0aGlzLmhpZ2hXYXRl ck1hcms9Zyh0aGlzLGUsInJlYWRhYmxlSGlnaFdhdGVyTWFyayIsbiksdGhpcy5idWZmZXI9 bmV3IGQsdGhpcy5sZW5ndGg9MCx0aGlzLnBpcGVzPW51bGwsdGhpcy5waXBlc0NvdW50PTAs dGhpcy5mbG93aW5nPW51bGwsdGhpcy5lbmRlZD0hMSx0aGlzLmVuZEVtaXR0ZWQ9ITEsdGhp cy5yZWFkaW5nPSExLHRoaXMuc3luYz0hMCx0aGlzLm5lZWRSZWFkYWJsZT0hMSx0aGlzLmVt aXR0ZWRSZWFkYWJsZT0hMSx0aGlzLnJlYWRhYmxlTGlzdGVuaW5nPSExLHRoaXMucmVzdW1l U2NoZWR1bGVkPSExLHRoaXMucGF1c2VkPSEwLHRoaXMuZW1pdENsb3NlPSExIT09ZS5lbWl0 Q2xvc2UsdGhpcy5hdXRvRGVzdHJveT0hIWUuYXV0b0Rlc3Ryb3ksdGhpcy5kZXN0cm95ZWQ9 ITEsdGhpcy5kZWZhdWx0RW5jb2Rpbmc9ZS5kZWZhdWx0RW5jb2Rpbmd8fCJ1dGY4Iix0aGlz LmF3YWl0RHJhaW49MCx0aGlzLnJlYWRpbmdNb3JlPSExLHRoaXMuZGVjb2Rlcj1udWxsLHRo aXMuZW5jb2Rpbmc9bnVsbCxlLmVuY29kaW5nJiYoZnx8KGY9dCgic3RyaW5nX2RlY29kZXIv IikuU3RyaW5nRGVjb2RlciksdGhpcy5kZWNvZGVyPW5ldyBmKGUuZW5jb2RpbmcpLHRoaXMu ZW5jb2Rpbmc9ZS5lbmNvZGluZyl9ZnVuY3Rpb24gQShlKXtpZihpPWl8fHQoIi4vX3N0cmVh bV9kdXBsZXgiKSwhKHRoaXMgaW5zdGFuY2VvZiBBKSlyZXR1cm4gbmV3IEEoZSk7dmFyIHI9 dGhpcyBpbnN0YW5jZW9mIGk7dGhpcy5fcmVhZGFibGVTdGF0ZT1uZXcgayhlLHRoaXMsciks dGhpcy5yZWFkYWJsZT0hMCxlJiYoImZ1bmN0aW9uIj09dHlwZW9mIGUucmVhZCYmKHRoaXMu X3JlYWQ9ZS5yZWFkKSwiZnVuY3Rpb24iPT10eXBlb2YgZS5kZXN0cm95JiYodGhpcy5fZGVz dHJveT1lLmRlc3Ryb3kpKSxvLmNhbGwodGhpcyl9ZnVuY3Rpb24gTSh0LGUscixuLGkpe2Mo InJlYWRhYmxlQWRkQ2h1bmsiLGUpO3ZhciBhLG89dC5fcmVhZGFibGVTdGF0ZTtpZihudWxs PT09ZSlvLnJlYWRpbmc9ITEsZnVuY3Rpb24odCxlKXtpZihjKCJvbkVvZkNodW5rIiksZS5l bmRlZClyZXR1cm47aWYoZS5kZWNvZGVyKXt2YXIgcj1lLmRlY29kZXIuZW5kKCk7ciYmci5s ZW5ndGgmJihlLmJ1ZmZlci5wdXNoKHIpLGUubGVuZ3RoKz1lLm9iamVjdE1vZGU/MTpyLmxl bmd0aCl9ZS5lbmRlZD0hMCxlLnN5bmM/TCh0KTooZS5uZWVkUmVhZGFibGU9ITEsZS5lbWl0 dGVkUmVhZGFibGV8fChlLmVtaXR0ZWRSZWFkYWJsZT0hMCxDKHQpKSl9KHQsbyk7ZWxzZSBp ZihpfHwoYT1mdW5jdGlvbih0LGUpe3ZhciByO249ZSxzLmlzQnVmZmVyKG4pfHxuIGluc3Rh bmNlb2YgbHx8InN0cmluZyI9PXR5cGVvZiBlfHx2b2lkIDA9PT1lfHx0Lm9iamVjdE1vZGV8 fChyPW5ldyB5KCJjaHVuayIsWyJzdHJpbmciLCJCdWZmZXIiLCJVaW50OEFycmF5Il0sZSkp O3ZhciBuO3JldHVybiByfShvLGUpKSxhKXcodCxhKTtlbHNlIGlmKG8ub2JqZWN0TW9kZXx8 ZSYmZS5sZW5ndGg+MClpZigic3RyaW5nIj09dHlwZW9mIGV8fG8ub2JqZWN0TW9kZXx8T2Jq ZWN0LmdldFByb3RvdHlwZU9mKGUpPT09cy5wcm90b3R5cGV8fChlPWZ1bmN0aW9uKHQpe3Jl dHVybiBzLmZyb20odCl9KGUpKSxuKW8uZW5kRW1pdHRlZD93KHQsbmV3IF8pOlModCxvLGUs ITApO2Vsc2UgaWYoby5lbmRlZCl3KHQsbmV3IHgpO2Vsc2V7aWYoby5kZXN0cm95ZWQpcmV0 dXJuITE7by5yZWFkaW5nPSExLG8uZGVjb2RlciYmIXI/KGU9by5kZWNvZGVyLndyaXRlKGUp LG8ub2JqZWN0TW9kZXx8MCE9PWUubGVuZ3RoP1ModCxvLGUsITEpOlAodCxvKSk6Uyh0LG8s ZSwhMSl9ZWxzZSBufHwoby5yZWFkaW5nPSExLFAodCxvKSk7cmV0dXJuIW8uZW5kZWQmJihv Lmxlbmd0aDxvLmhpZ2hXYXRlck1hcmt8fDA9PT1vLmxlbmd0aCl9ZnVuY3Rpb24gUyh0LGUs cixuKXtlLmZsb3dpbmcmJjA9PT1lLmxlbmd0aCYmIWUuc3luYz8oZS5hd2FpdERyYWluPTAs dC5lbWl0KCJkYXRhIixyKSk6KGUubGVuZ3RoKz1lLm9iamVjdE1vZGU/MTpyLmxlbmd0aCxu P2UuYnVmZmVyLnVuc2hpZnQocik6ZS5idWZmZXIucHVzaChyKSxlLm5lZWRSZWFkYWJsZSYm TCh0KSksUCh0LGUpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLnByb3RvdHlwZSwiZGVzdHJv eWVkIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhp cy5fcmVhZGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWR9LHNldDpm dW5jdGlvbih0KXt0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5k ZXN0cm95ZWQ9dCl9fSksQS5wcm90b3R5cGUuZGVzdHJveT1tLmRlc3Ryb3ksQS5wcm90b3R5 cGUuX3VuZGVzdHJveT1tLnVuZGVzdHJveSxBLnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlv bih0LGUpe2UodCl9LEEucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCxlKXt2YXIgcixuPXRo aXMuX3JlYWRhYmxlU3RhdGU7cmV0dXJuIG4ub2JqZWN0TW9kZT9yPSEwOiJzdHJpbmciPT10 eXBlb2YgdCYmKChlPWV8fG4uZGVmYXVsdEVuY29kaW5nKSE9PW4uZW5jb2RpbmcmJih0PXMu ZnJvbSh0LGUpLGU9IiIpLHI9ITApLE0odGhpcyx0LGUsITEscil9LEEucHJvdG90eXBlLnVu c2hpZnQ9ZnVuY3Rpb24odCl7cmV0dXJuIE0odGhpcyx0LG51bGwsITAsITEpfSxBLnByb3Rv dHlwZS5pc1BhdXNlZD1mdW5jdGlvbigpe3JldHVybiExPT09dGhpcy5fcmVhZGFibGVTdGF0 ZS5mbG93aW5nfSxBLnByb3RvdHlwZS5zZXRFbmNvZGluZz1mdW5jdGlvbihlKXtmfHwoZj10 KCJzdHJpbmdfZGVjb2Rlci8iKS5TdHJpbmdEZWNvZGVyKTt2YXIgcj1uZXcgZihlKTt0aGlz Ll9yZWFkYWJsZVN0YXRlLmRlY29kZXI9cix0aGlzLl9yZWFkYWJsZVN0YXRlLmVuY29kaW5n PXRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2Rlci5lbmNvZGluZztmb3IodmFyIG49dGhpcy5f cmVhZGFibGVTdGF0ZS5idWZmZXIuaGVhZCxpPSIiO251bGwhPT1uOylpKz1yLndyaXRlKG4u ZGF0YSksbj1uLm5leHQ7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLmNsZWFy KCksIiIhPT1pJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlci5wdXNoKGkpLHRoaXMuX3Jl YWRhYmxlU3RhdGUubGVuZ3RoPWkubGVuZ3RoLHRoaXN9O2Z1bmN0aW9uIEUodCxlKXtyZXR1 cm4gdDw9MHx8MD09PWUubGVuZ3RoJiZlLmVuZGVkPzA6ZS5vYmplY3RNb2RlPzE6dCE9dD9l LmZsb3dpbmcmJmUubGVuZ3RoP2UuYnVmZmVyLmhlYWQuZGF0YS5sZW5ndGg6ZS5sZW5ndGg6 KHQ+ZS5oaWdoV2F0ZXJNYXJrJiYoZS5oaWdoV2F0ZXJNYXJrPWZ1bmN0aW9uKHQpe3JldHVy biB0Pj0xMDczNzQxODI0P3Q9MTA3Mzc0MTgyNDoodC0tLHR8PXQ+Pj4xLHR8PXQ+Pj4yLHR8 PXQ+Pj40LHR8PXQ+Pj44LHR8PXQ+Pj4xNix0KyspLHR9KHQpKSx0PD1lLmxlbmd0aD90OmUu ZW5kZWQ/ZS5sZW5ndGg6KGUubmVlZFJlYWRhYmxlPSEwLDApKX1mdW5jdGlvbiBMKHQpe3Zh ciBlPXQuX3JlYWRhYmxlU3RhdGU7YygiZW1pdFJlYWRhYmxlIixlLm5lZWRSZWFkYWJsZSxl LmVtaXR0ZWRSZWFkYWJsZSksZS5uZWVkUmVhZGFibGU9ITEsZS5lbWl0dGVkUmVhZGFibGV8 fChjKCJlbWl0UmVhZGFibGUiLGUuZmxvd2luZyksZS5lbWl0dGVkUmVhZGFibGU9ITAsci5u ZXh0VGljayhDLHQpKX1mdW5jdGlvbiBDKHQpe3ZhciBlPXQuX3JlYWRhYmxlU3RhdGU7Yygi ZW1pdFJlYWRhYmxlXyIsZS5kZXN0cm95ZWQsZS5sZW5ndGgsZS5lbmRlZCksZS5kZXN0cm95 ZWR8fCFlLmxlbmd0aCYmIWUuZW5kZWR8fCh0LmVtaXQoInJlYWRhYmxlIiksZS5lbWl0dGVk UmVhZGFibGU9ITEpLGUubmVlZFJlYWRhYmxlPSFlLmZsb3dpbmcmJiFlLmVuZGVkJiZlLmxl bmd0aDw9ZS5oaWdoV2F0ZXJNYXJrLFIodCl9ZnVuY3Rpb24gUCh0LGUpe2UucmVhZGluZ01v cmV8fChlLnJlYWRpbmdNb3JlPSEwLHIubmV4dFRpY2soSSx0LGUpKX1mdW5jdGlvbiBJKHQs ZSl7Zm9yKDshZS5yZWFkaW5nJiYhZS5lbmRlZCYmKGUubGVuZ3RoPGUuaGlnaFdhdGVyTWFy a3x8ZS5mbG93aW5nJiYwPT09ZS5sZW5ndGgpOyl7dmFyIHI9ZS5sZW5ndGg7aWYoYygibWF5 YmVSZWFkTW9yZSByZWFkIDAiKSx0LnJlYWQoMCkscj09PWUubGVuZ3RoKWJyZWFrfWUucmVh ZGluZ01vcmU9ITF9ZnVuY3Rpb24gTyh0KXt2YXIgZT10Ll9yZWFkYWJsZVN0YXRlO2UucmVh ZGFibGVMaXN0ZW5pbmc9dC5saXN0ZW5lckNvdW50KCJyZWFkYWJsZSIpPjAsZS5yZXN1bWVT Y2hlZHVsZWQmJiFlLnBhdXNlZD9lLmZsb3dpbmc9ITA6dC5saXN0ZW5lckNvdW50KCJkYXRh Iik+MCYmdC5yZXN1bWUoKX1mdW5jdGlvbiB6KHQpe2MoInJlYWRhYmxlIG5leHR0aWNrIHJl YWQgMCIpLHQucmVhZCgwKX1mdW5jdGlvbiBEKHQsZSl7YygicmVzdW1lIixlLnJlYWRpbmcp LGUucmVhZGluZ3x8dC5yZWFkKDApLGUucmVzdW1lU2NoZWR1bGVkPSExLHQuZW1pdCgicmVz dW1lIiksUih0KSxlLmZsb3dpbmcmJiFlLnJlYWRpbmcmJnQucmVhZCgwKX1mdW5jdGlvbiBS KHQpe3ZhciBlPXQuX3JlYWRhYmxlU3RhdGU7Zm9yKGMoImZsb3ciLGUuZmxvd2luZyk7ZS5m bG93aW5nJiZudWxsIT09dC5yZWFkKCk7KTt9ZnVuY3Rpb24gRih0LGUpe3JldHVybiAwPT09 ZS5sZW5ndGg/bnVsbDooZS5vYmplY3RNb2RlP3I9ZS5idWZmZXIuc2hpZnQoKTohdHx8dD49 ZS5sZW5ndGg/KHI9ZS5kZWNvZGVyP2UuYnVmZmVyLmpvaW4oIiIpOjE9PT1lLmJ1ZmZlci5s ZW5ndGg/ZS5idWZmZXIuZmlyc3QoKTplLmJ1ZmZlci5jb25jYXQoZS5sZW5ndGgpLGUuYnVm ZmVyLmNsZWFyKCkpOnI9ZS5idWZmZXIuY29uc3VtZSh0LGUuZGVjb2Rlcikscik7dmFyIHJ9 ZnVuY3Rpb24gQih0KXt2YXIgZT10Ll9yZWFkYWJsZVN0YXRlO2MoImVuZFJlYWRhYmxlIixl LmVuZEVtaXR0ZWQpLGUuZW5kRW1pdHRlZHx8KGUuZW5kZWQ9ITAsci5uZXh0VGljayhOLGUs dCkpfWZ1bmN0aW9uIE4odCxlKXtpZihjKCJlbmRSZWFkYWJsZU5UIix0LmVuZEVtaXR0ZWQs dC5sZW5ndGgpLCF0LmVuZEVtaXR0ZWQmJjA9PT10Lmxlbmd0aCYmKHQuZW5kRW1pdHRlZD0h MCxlLnJlYWRhYmxlPSExLGUuZW1pdCgiZW5kIiksdC5hdXRvRGVzdHJveSkpe3ZhciByPWUu X3dyaXRhYmxlU3RhdGU7KCFyfHxyLmF1dG9EZXN0cm95JiZyLmZpbmlzaGVkKSYmZS5kZXN0 cm95KCl9fWZ1bmN0aW9uIGoodCxlKXtmb3IodmFyIHI9MCxuPXQubGVuZ3RoO3I8bjtyKysp aWYodFtyXT09PWUpcmV0dXJuIHI7cmV0dXJuLTF9QS5wcm90b3R5cGUucmVhZD1mdW5jdGlv bih0KXtjKCJyZWFkIix0KSx0PXBhcnNlSW50KHQsMTApO3ZhciBlPXRoaXMuX3JlYWRhYmxl U3RhdGUscj10O2lmKDAhPT10JiYoZS5lbWl0dGVkUmVhZGFibGU9ITEpLDA9PT10JiZlLm5l ZWRSZWFkYWJsZSYmKCgwIT09ZS5oaWdoV2F0ZXJNYXJrP2UubGVuZ3RoPj1lLmhpZ2hXYXRl ck1hcms6ZS5sZW5ndGg+MCl8fGUuZW5kZWQpKXJldHVybiBjKCJyZWFkOiBlbWl0UmVhZGFi bGUiLGUubGVuZ3RoLGUuZW5kZWQpLDA9PT1lLmxlbmd0aCYmZS5lbmRlZD9CKHRoaXMpOkwo dGhpcyksbnVsbDtpZigwPT09KHQ9RSh0LGUpKSYmZS5lbmRlZClyZXR1cm4gMD09PWUubGVu Z3RoJiZCKHRoaXMpLG51bGw7dmFyIG4saT1lLm5lZWRSZWFkYWJsZTtyZXR1cm4gYygibmVl ZCByZWFkYWJsZSIsaSksKDA9PT1lLmxlbmd0aHx8ZS5sZW5ndGgtdDxlLmhpZ2hXYXRlck1h cmspJiZjKCJsZW5ndGggbGVzcyB0aGFuIHdhdGVybWFyayIsaT0hMCksZS5lbmRlZHx8ZS5y ZWFkaW5nP2MoInJlYWRpbmcgb3IgZW5kZWQiLGk9ITEpOmkmJihjKCJkbyByZWFkIiksZS5y ZWFkaW5nPSEwLGUuc3luYz0hMCwwPT09ZS5sZW5ndGgmJihlLm5lZWRSZWFkYWJsZT0hMCks dGhpcy5fcmVhZChlLmhpZ2hXYXRlck1hcmspLGUuc3luYz0hMSxlLnJlYWRpbmd8fCh0PUUo cixlKSkpLG51bGw9PT0obj10PjA/Rih0LGUpOm51bGwpPyhlLm5lZWRSZWFkYWJsZT1lLmxl bmd0aDw9ZS5oaWdoV2F0ZXJNYXJrLHQ9MCk6KGUubGVuZ3RoLT10LGUuYXdhaXREcmFpbj0w KSwwPT09ZS5sZW5ndGgmJihlLmVuZGVkfHwoZS5uZWVkUmVhZGFibGU9ITApLHIhPT10JiZl LmVuZGVkJiZCKHRoaXMpKSxudWxsIT09biYmdGhpcy5lbWl0KCJkYXRhIixuKSxufSxBLnBy b3RvdHlwZS5fcmVhZD1mdW5jdGlvbih0KXt3KHRoaXMsbmV3IGIoIl9yZWFkKCkiKSl9LEEu cHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLGk9dGhpcy5fcmVhZGFi bGVTdGF0ZTtzd2l0Y2goaS5waXBlc0NvdW50KXtjYXNlIDA6aS5waXBlcz10O2JyZWFrO2Nh c2UgMTppLnBpcGVzPVtpLnBpcGVzLHRdO2JyZWFrO2RlZmF1bHQ6aS5waXBlcy5wdXNoKHQp fWkucGlwZXNDb3VudCs9MSxjKCJwaXBlIGNvdW50PSVkIG9wdHM9JWoiLGkucGlwZXNDb3Vu dCxlKTt2YXIgbz0oIWV8fCExIT09ZS5lbmQpJiZ0IT09ci5zdGRvdXQmJnQhPT1yLnN0ZGVy cj9sOmc7ZnVuY3Rpb24gcyhlLHIpe2MoIm9udW5waXBlIiksZT09PW4mJnImJiExPT09ci5o YXNVbnBpcGVkJiYoci5oYXNVbnBpcGVkPSEwLGMoImNsZWFudXAiKSx0LnJlbW92ZUxpc3Rl bmVyKCJjbG9zZSIsZCksdC5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixtKSx0LnJlbW92ZUxp c3RlbmVyKCJkcmFpbiIsdSksdC5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLHApLHQucmVtb3Zl TGlzdGVuZXIoInVucGlwZSIscyksbi5yZW1vdmVMaXN0ZW5lcigiZW5kIixsKSxuLnJlbW92 ZUxpc3RlbmVyKCJlbmQiLGcpLG4ucmVtb3ZlTGlzdGVuZXIoImRhdGEiLGgpLGY9ITAsIWku YXdhaXREcmFpbnx8dC5fd3JpdGFibGVTdGF0ZSYmIXQuX3dyaXRhYmxlU3RhdGUubmVlZERy YWlufHx1KCkpfWZ1bmN0aW9uIGwoKXtjKCJvbmVuZCIpLHQuZW5kKCl9aS5lbmRFbWl0dGVk P3IubmV4dFRpY2sobyk6bi5vbmNlKCJlbmQiLG8pLHQub24oInVucGlwZSIscyk7dmFyIHU9 ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5fcmVhZGFibGVTdGF0ZTtj KCJwaXBlT25EcmFpbiIsZS5hd2FpdERyYWluKSxlLmF3YWl0RHJhaW4mJmUuYXdhaXREcmFp bi0tLDA9PT1lLmF3YWl0RHJhaW4mJmEodCwiZGF0YSIpJiYoZS5mbG93aW5nPSEwLFIodCkp fX0obik7dC5vbigiZHJhaW4iLHUpO3ZhciBmPSExO2Z1bmN0aW9uIGgoZSl7Yygib25kYXRh Iik7dmFyIHI9dC53cml0ZShlKTtjKCJkZXN0LndyaXRlIixyKSwhMT09PXImJigoMT09PWku cGlwZXNDb3VudCYmaS5waXBlcz09PXR8fGkucGlwZXNDb3VudD4xJiYtMSE9PWooaS5waXBl cyx0KSkmJiFmJiYoYygiZmFsc2Ugd3JpdGUgcmVzcG9uc2UsIHBhdXNlIixpLmF3YWl0RHJh aW4pLGkuYXdhaXREcmFpbisrKSxuLnBhdXNlKCkpfWZ1bmN0aW9uIHAoZSl7Yygib25lcnJv ciIsZSksZygpLHQucmVtb3ZlTGlzdGVuZXIoImVycm9yIixwKSwwPT09YSh0LCJlcnJvciIp JiZ3KHQsZSl9ZnVuY3Rpb24gZCgpe3QucmVtb3ZlTGlzdGVuZXIoImZpbmlzaCIsbSksZygp fWZ1bmN0aW9uIG0oKXtjKCJvbmZpbmlzaCIpLHQucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixk KSxnKCl9ZnVuY3Rpb24gZygpe2MoInVucGlwZSIpLG4udW5waXBlKHQpfXJldHVybiBuLm9u KCJkYXRhIixoKSxmdW5jdGlvbih0LGUscil7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQucHJl cGVuZExpc3RlbmVyKXJldHVybiB0LnByZXBlbmRMaXN0ZW5lcihlLHIpO3QuX2V2ZW50cyYm dC5fZXZlbnRzW2VdP0FycmF5LmlzQXJyYXkodC5fZXZlbnRzW2VdKT90Ll9ldmVudHNbZV0u dW5zaGlmdChyKTp0Ll9ldmVudHNbZV09W3IsdC5fZXZlbnRzW2VdXTp0Lm9uKGUscil9KHQs ImVycm9yIixwKSx0Lm9uY2UoImNsb3NlIixkKSx0Lm9uY2UoImZpbmlzaCIsbSksdC5lbWl0 KCJwaXBlIixuKSxpLmZsb3dpbmd8fChjKCJwaXBlIHJlc3VtZSIpLG4ucmVzdW1lKCkpLHR9 LEEucHJvdG90eXBlLnVucGlwZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9yZWFkYWJsZVN0 YXRlLHI9e2hhc1VucGlwZWQ6ITF9O2lmKDA9PT1lLnBpcGVzQ291bnQpcmV0dXJuIHRoaXM7 aWYoMT09PWUucGlwZXNDb3VudClyZXR1cm4gdCYmdCE9PWUucGlwZXN8fCh0fHwodD1lLnBp cGVzKSxlLnBpcGVzPW51bGwsZS5waXBlc0NvdW50PTAsZS5mbG93aW5nPSExLHQmJnQuZW1p dCgidW5waXBlIix0aGlzLHIpKSx0aGlzO2lmKCF0KXt2YXIgbj1lLnBpcGVzLGk9ZS5waXBl c0NvdW50O2UucGlwZXM9bnVsbCxlLnBpcGVzQ291bnQ9MCxlLmZsb3dpbmc9ITE7Zm9yKHZh ciBhPTA7YTxpO2ErKyluW2FdLmVtaXQoInVucGlwZSIsdGhpcyx7aGFzVW5waXBlZDohMX0p O3JldHVybiB0aGlzfXZhciBvPWooZS5waXBlcyx0KTtyZXR1cm4tMT09PW98fChlLnBpcGVz LnNwbGljZShvLDEpLGUucGlwZXNDb3VudC09MSwxPT09ZS5waXBlc0NvdW50JiYoZS5waXBl cz1lLnBpcGVzWzBdKSx0LmVtaXQoInVucGlwZSIsdGhpcyxyKSksdGhpc30sQS5wcm90b3R5 cGUub249ZnVuY3Rpb24odCxlKXt2YXIgbj1vLnByb3RvdHlwZS5vbi5jYWxsKHRoaXMsdCxl KSxpPXRoaXMuX3JlYWRhYmxlU3RhdGU7cmV0dXJuImRhdGEiPT09dD8oaS5yZWFkYWJsZUxp c3RlbmluZz10aGlzLmxpc3RlbmVyQ291bnQoInJlYWRhYmxlIik+MCwhMSE9PWkuZmxvd2lu ZyYmdGhpcy5yZXN1bWUoKSk6InJlYWRhYmxlIj09PXQmJihpLmVuZEVtaXR0ZWR8fGkucmVh ZGFibGVMaXN0ZW5pbmd8fChpLnJlYWRhYmxlTGlzdGVuaW5nPWkubmVlZFJlYWRhYmxlPSEw LGkuZmxvd2luZz0hMSxpLmVtaXR0ZWRSZWFkYWJsZT0hMSxjKCJvbiByZWFkYWJsZSIsaS5s ZW5ndGgsaS5yZWFkaW5nKSxpLmxlbmd0aD9MKHRoaXMpOmkucmVhZGluZ3x8ci5uZXh0VGlj ayh6LHRoaXMpKSksbn0sQS5wcm90b3R5cGUuYWRkTGlzdGVuZXI9QS5wcm90b3R5cGUub24s QS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24odCxlKXt2YXIgbj1vLnByb3Rv dHlwZS5yZW1vdmVMaXN0ZW5lci5jYWxsKHRoaXMsdCxlKTtyZXR1cm4icmVhZGFibGUiPT09 dCYmci5uZXh0VGljayhPLHRoaXMpLG59LEEucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVy cz1mdW5jdGlvbih0KXt2YXIgZT1vLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMuYXBw bHkodGhpcyxhcmd1bWVudHMpO3JldHVybiJyZWFkYWJsZSIhPT10JiZ2b2lkIDAhPT10fHxy Lm5leHRUaWNrKE8sdGhpcyksZX0sQS5wcm90b3R5cGUucmVzdW1lPWZ1bmN0aW9uKCl7dmFy IHQ9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4gdC5mbG93aW5nfHwoYygicmVzdW1lIiks dC5mbG93aW5nPSF0LnJlYWRhYmxlTGlzdGVuaW5nLGZ1bmN0aW9uKHQsZSl7ZS5yZXN1bWVT Y2hlZHVsZWR8fChlLnJlc3VtZVNjaGVkdWxlZD0hMCxyLm5leHRUaWNrKEQsdCxlKSl9KHRo aXMsdCkpLHQucGF1c2VkPSExLHRoaXN9LEEucHJvdG90eXBlLnBhdXNlPWZ1bmN0aW9uKCl7 cmV0dXJuIGMoImNhbGwgcGF1c2UgZmxvd2luZz0laiIsdGhpcy5fcmVhZGFibGVTdGF0ZS5m bG93aW5nKSwhMSE9PXRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyYmKGMoInBhdXNlIiks dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nPSExLHRoaXMuZW1pdCgicGF1c2UiKSksdGhp cy5fcmVhZGFibGVTdGF0ZS5wYXVzZWQ9ITAsdGhpc30sQS5wcm90b3R5cGUud3JhcD1mdW5j dGlvbih0KXt2YXIgZT10aGlzLHI9dGhpcy5fcmVhZGFibGVTdGF0ZSxuPSExO2Zvcih2YXIg aSBpbiB0Lm9uKCJlbmQiLChmdW5jdGlvbigpe2lmKGMoIndyYXBwZWQgZW5kIiksci5kZWNv ZGVyJiYhci5lbmRlZCl7dmFyIHQ9ci5kZWNvZGVyLmVuZCgpO3QmJnQubGVuZ3RoJiZlLnB1 c2godCl9ZS5wdXNoKG51bGwpfSkpLHQub24oImRhdGEiLChmdW5jdGlvbihpKXsoYygid3Jh cHBlZCBkYXRhIiksci5kZWNvZGVyJiYoaT1yLmRlY29kZXIud3JpdGUoaSkpLHIub2JqZWN0 TW9kZSYmbnVsbD09aSl8fChyLm9iamVjdE1vZGV8fGkmJmkubGVuZ3RoKSYmKGUucHVzaChp KXx8KG49ITAsdC5wYXVzZSgpKSl9KSksdCl2b2lkIDA9PT10aGlzW2ldJiYiZnVuY3Rpb24i PT10eXBlb2YgdFtpXSYmKHRoaXNbaV09ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7 cmV0dXJuIHRbZV0uYXBwbHkodCxhcmd1bWVudHMpfX0oaSkpO2Zvcih2YXIgYT0wO2E8VC5s ZW5ndGg7YSsrKXQub24oVFthXSx0aGlzLmVtaXQuYmluZCh0aGlzLFRbYV0pKTtyZXR1cm4g dGhpcy5fcmVhZD1mdW5jdGlvbihlKXtjKCJ3cmFwcGVkIF9yZWFkIixlKSxuJiYobj0hMSx0 LnJlc3VtZSgpKX0sdGhpc30sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKEEucHJvdG90 eXBlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1o JiYoaD10KCIuL2ludGVybmFsL3N0cmVhbXMvYXN5bmNfaXRlcmF0b3IiKSksaCh0aGlzKX0p LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLnByb3RvdHlwZSwicmVhZGFibGVIaWdoV2F0ZXJN YXJrIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFi bGVTdGF0ZS5oaWdoV2F0ZXJNYXJrfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLnByb3Rv dHlwZSwicmVhZGFibGVCdWZmZXIiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3Jl dHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlcn19 KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQS5wcm90b3R5cGUsInJlYWRhYmxlRmxvd2luZyIs e2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3Rh dGUuZmxvd2luZ30sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3JlYWRhYmxlU3RhdGUmJih0aGlz Ll9yZWFkYWJsZVN0YXRlLmZsb3dpbmc9dCl9fSksQS5fZnJvbUxpc3Q9RixPYmplY3QuZGVm aW5lUHJvcGVydHkoQS5wcm90b3R5cGUsInJlYWRhYmxlTGVuZ3RoIix7ZW51bWVyYWJsZToh MSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGh9fSks ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKEEuZnJvbT1mdW5jdGlvbihlLHIpe3JldHVy biB2b2lkIDA9PT1wJiYocD10KCIuL2ludGVybmFsL3N0cmVhbXMvZnJvbSIpKSxwKEEsZSxy KX0pfSkuY2FsbCh0aGlzKX0pLmNhbGwodGhpcyx0KCJfcHJvY2VzcyIpLCJ1bmRlZmluZWQi IT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoi dW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30pfSx7Ii4uL2Vycm9ycyI6Mjg2 LCIuL19zdHJlYW1fZHVwbGV4IjoyODcsIi4vaW50ZXJuYWwvc3RyZWFtcy9hc3luY19pdGVy YXRvciI6MjkyLCIuL2ludGVybmFsL3N0cmVhbXMvYnVmZmVyX2xpc3QiOjI5MywiLi9pbnRl cm5hbC9zdHJlYW1zL2Rlc3Ryb3kiOjI5NCwiLi9pbnRlcm5hbC9zdHJlYW1zL2Zyb20iOjI5 NiwiLi9pbnRlcm5hbC9zdHJlYW1zL3N0YXRlIjoyOTgsIi4vaW50ZXJuYWwvc3RyZWFtcy9z dHJlYW0iOjI5OSxfcHJvY2VzczoyNzcsYnVmZmVyOjg1LGV2ZW50czo4NCxpbmhlcml0czoy MzEsInN0cmluZ19kZWNvZGVyLyI6MzAwLHV0aWw6ODN9XSwyOTA6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXU7dmFyIG49dCgiLi4vZXJyb3JzIikuY29kZXMs aT1uLkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELGE9bi5FUlJfTVVMVElQTEVfQ0FMTEJB Q0ssbz1uLkVSUl9UUkFOU0ZPUk1fQUxSRUFEWV9UUkFOU0ZPUk1JTkcscz1uLkVSUl9UUkFO U0ZPUk1fV0lUSF9MRU5HVEhfMCxsPXQoIi4vX3N0cmVhbV9kdXBsZXgiKTtmdW5jdGlvbiBj KHQsZSl7dmFyIHI9dGhpcy5fdHJhbnNmb3JtU3RhdGU7ci50cmFuc2Zvcm1pbmc9ITE7dmFy IG49ci53cml0ZWNiO2lmKG51bGw9PT1uKXJldHVybiB0aGlzLmVtaXQoImVycm9yIixuZXcg YSk7ci53cml0ZWNodW5rPW51bGwsci53cml0ZWNiPW51bGwsbnVsbCE9ZSYmdGhpcy5wdXNo KGUpLG4odCk7dmFyIGk9dGhpcy5fcmVhZGFibGVTdGF0ZTtpLnJlYWRpbmc9ITEsKGkubmVl ZFJlYWRhYmxlfHxpLmxlbmd0aDxpLmhpZ2hXYXRlck1hcmspJiZ0aGlzLl9yZWFkKGkuaGln aFdhdGVyTWFyayl9ZnVuY3Rpb24gdSh0KXtpZighKHRoaXMgaW5zdGFuY2VvZiB1KSlyZXR1 cm4gbmV3IHUodCk7bC5jYWxsKHRoaXMsdCksdGhpcy5fdHJhbnNmb3JtU3RhdGU9e2FmdGVy VHJhbnNmb3JtOmMuYmluZCh0aGlzKSxuZWVkVHJhbnNmb3JtOiExLHRyYW5zZm9ybWluZzoh MSx3cml0ZWNiOm51bGwsd3JpdGVjaHVuazpudWxsLHdyaXRlZW5jb2Rpbmc6bnVsbH0sdGhp cy5fcmVhZGFibGVTdGF0ZS5uZWVkUmVhZGFibGU9ITAsdGhpcy5fcmVhZGFibGVTdGF0ZS5z eW5jPSExLHQmJigiZnVuY3Rpb24iPT10eXBlb2YgdC50cmFuc2Zvcm0mJih0aGlzLl90cmFu c2Zvcm09dC50cmFuc2Zvcm0pLCJmdW5jdGlvbiI9PXR5cGVvZiB0LmZsdXNoJiYodGhpcy5f Zmx1c2g9dC5mbHVzaCkpLHRoaXMub24oInByZWZpbmlzaCIsZil9ZnVuY3Rpb24gZigpe3Zh ciB0PXRoaXM7ImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXMuX2ZsdXNofHx0aGlzLl9yZWFkYWJs ZVN0YXRlLmRlc3Ryb3llZD9oKHRoaXMsbnVsbCxudWxsKTp0aGlzLl9mbHVzaCgoZnVuY3Rp b24oZSxyKXtoKHQsZSxyKX0pKX1mdW5jdGlvbiBoKHQsZSxyKXtpZihlKXJldHVybiB0LmVt aXQoImVycm9yIixlKTtpZihudWxsIT1yJiZ0LnB1c2gociksdC5fd3JpdGFibGVTdGF0ZS5s ZW5ndGgpdGhyb3cgbmV3IHM7aWYodC5fdHJhbnNmb3JtU3RhdGUudHJhbnNmb3JtaW5nKXRo cm93IG5ldyBvO3JldHVybiB0LnB1c2gobnVsbCl9dCgiaW5oZXJpdHMiKSh1LGwpLHUucHJv dG90eXBlLnB1c2g9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fdHJhbnNmb3JtU3RhdGUu bmVlZFRyYW5zZm9ybT0hMSxsLnByb3RvdHlwZS5wdXNoLmNhbGwodGhpcyx0LGUpfSx1LnBy b3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKHQsZSxyKXtyKG5ldyBpKCJfdHJhbnNmb3Jt KCkiKSl9LHUucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5f dHJhbnNmb3JtU3RhdGU7aWYobi53cml0ZWNiPXIsbi53cml0ZWNodW5rPXQsbi53cml0ZWVu Y29kaW5nPWUsIW4udHJhbnNmb3JtaW5nKXt2YXIgaT10aGlzLl9yZWFkYWJsZVN0YXRlOyhu Lm5lZWRUcmFuc2Zvcm18fGkubmVlZFJlYWRhYmxlfHxpLmxlbmd0aDxpLmhpZ2hXYXRlck1h cmspJiZ0aGlzLl9yZWFkKGkuaGlnaFdhdGVyTWFyayl9fSx1LnByb3RvdHlwZS5fcmVhZD1m dW5jdGlvbih0KXt2YXIgZT10aGlzLl90cmFuc2Zvcm1TdGF0ZTtudWxsPT09ZS53cml0ZWNo dW5rfHxlLnRyYW5zZm9ybWluZz9lLm5lZWRUcmFuc2Zvcm09ITA6KGUudHJhbnNmb3JtaW5n PSEwLHRoaXMuX3RyYW5zZm9ybShlLndyaXRlY2h1bmssZS53cml0ZWVuY29kaW5nLGUuYWZ0 ZXJUcmFuc2Zvcm0pKX0sdS5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24odCxlKXtsLnBy b3RvdHlwZS5fZGVzdHJveS5jYWxsKHRoaXMsdCwoZnVuY3Rpb24odCl7ZSh0KX0pKX19LHsi Li4vZXJyb3JzIjoyODYsIi4vX3N0cmVhbV9kdXBsZXgiOjI4Nyxpbmhlcml0czoyMzF9XSwy OTE6W2Z1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24ocixuKXsoZnVuY3Rpb24oKXsidXNlIHN0 cmljdCI7ZnVuY3Rpb24gaSh0KXt2YXIgZT10aGlzO3RoaXMubmV4dD1udWxsLHRoaXMuZW50 cnk9bnVsbCx0aGlzLmZpbmlzaD1mdW5jdGlvbigpeyFmdW5jdGlvbih0LGUscil7dmFyIG49 dC5lbnRyeTt0LmVudHJ5PW51bGw7Zm9yKDtuOyl7dmFyIGk9bi5jYWxsYmFjaztlLnBlbmRp bmdjYi0tLGkociksbj1uLm5leHR9ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUubmV4dD10fShlLHQp fX12YXIgYTtlLmV4cG9ydHM9QSxBLldyaXRhYmxlU3RhdGU9azt2YXIgbz17ZGVwcmVjYXRl OnQoInV0aWwtZGVwcmVjYXRlIil9LHM9dCgiLi9pbnRlcm5hbC9zdHJlYW1zL3N0cmVhbSIp LGw9dCgiYnVmZmVyIikuQnVmZmVyLGM9bi5VaW50OEFycmF5fHxmdW5jdGlvbigpe307dmFy IHUsZj10KCIuL2ludGVybmFsL3N0cmVhbXMvZGVzdHJveSIpLGg9dCgiLi9pbnRlcm5hbC9z dHJlYW1zL3N0YXRlIikuZ2V0SGlnaFdhdGVyTWFyayxwPXQoIi4uL2Vycm9ycyIpLmNvZGVz LGQ9cC5FUlJfSU5WQUxJRF9BUkdfVFlQRSxtPXAuRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5U RUQsZz1wLkVSUl9NVUxUSVBMRV9DQUxMQkFDSyx2PXAuRVJSX1NUUkVBTV9DQU5OT1RfUElQ RSx5PXAuRVJSX1NUUkVBTV9ERVNUUk9ZRUQseD1wLkVSUl9TVFJFQU1fTlVMTF9WQUxVRVMs Yj1wLkVSUl9TVFJFQU1fV1JJVEVfQUZURVJfRU5ELF89cC5FUlJfVU5LTk9XTl9FTkNPRElO Ryx3PWYuZXJyb3JPckRlc3Ryb3k7ZnVuY3Rpb24gVCgpe31mdW5jdGlvbiBrKGUsbixvKXth PWF8fHQoIi4vX3N0cmVhbV9kdXBsZXgiKSxlPWV8fHt9LCJib29sZWFuIiE9dHlwZW9mIG8m JihvPW4gaW5zdGFuY2VvZiBhKSx0aGlzLm9iamVjdE1vZGU9ISFlLm9iamVjdE1vZGUsbyYm KHRoaXMub2JqZWN0TW9kZT10aGlzLm9iamVjdE1vZGV8fCEhZS53cml0YWJsZU9iamVjdE1v ZGUpLHRoaXMuaGlnaFdhdGVyTWFyaz1oKHRoaXMsZSwid3JpdGFibGVIaWdoV2F0ZXJNYXJr IixvKSx0aGlzLmZpbmFsQ2FsbGVkPSExLHRoaXMubmVlZERyYWluPSExLHRoaXMuZW5kaW5n PSExLHRoaXMuZW5kZWQ9ITEsdGhpcy5maW5pc2hlZD0hMSx0aGlzLmRlc3Ryb3llZD0hMTt2 YXIgcz0hMT09PWUuZGVjb2RlU3RyaW5nczt0aGlzLmRlY29kZVN0cmluZ3M9IXMsdGhpcy5k ZWZhdWx0RW5jb2Rpbmc9ZS5kZWZhdWx0RW5jb2Rpbmd8fCJ1dGY4Iix0aGlzLmxlbmd0aD0w LHRoaXMud3JpdGluZz0hMSx0aGlzLmNvcmtlZD0wLHRoaXMuc3luYz0hMCx0aGlzLmJ1ZmZl clByb2Nlc3Npbmc9ITEsdGhpcy5vbndyaXRlPWZ1bmN0aW9uKHQpeyFmdW5jdGlvbih0LGUp e3ZhciBuPXQuX3dyaXRhYmxlU3RhdGUsaT1uLnN5bmMsYT1uLndyaXRlY2I7aWYoImZ1bmN0 aW9uIiE9dHlwZW9mIGEpdGhyb3cgbmV3IGc7aWYoZnVuY3Rpb24odCl7dC53cml0aW5nPSEx LHQud3JpdGVjYj1udWxsLHQubGVuZ3RoLT10LndyaXRlbGVuLHQud3JpdGVsZW49MH0obiks ZSkhZnVuY3Rpb24odCxlLG4saSxhKXstLWUucGVuZGluZ2NiLG4/KHIubmV4dFRpY2soYSxp KSxyLm5leHRUaWNrKFAsdCxlKSx0Ll93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCx3 KHQsaSkpOihhKGkpLHQuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLHcodCxpKSxQ KHQsZSkpfSh0LG4saSxlLGEpO2Vsc2V7dmFyIG89TChuKXx8dC5kZXN0cm95ZWQ7b3x8bi5j b3JrZWR8fG4uYnVmZmVyUHJvY2Vzc2luZ3x8IW4uYnVmZmVyZWRSZXF1ZXN0fHxFKHQsbiks aT9yLm5leHRUaWNrKFMsdCxuLG8sYSk6Uyh0LG4sbyxhKX19KG4sdCl9LHRoaXMud3JpdGVj Yj1udWxsLHRoaXMud3JpdGVsZW49MCx0aGlzLmJ1ZmZlcmVkUmVxdWVzdD1udWxsLHRoaXMu bGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsLHRoaXMucGVuZGluZ2NiPTAsdGhpcy5wcmVmaW5p c2hlZD0hMSx0aGlzLmVycm9yRW1pdHRlZD0hMSx0aGlzLmVtaXRDbG9zZT0hMSE9PWUuZW1p dENsb3NlLHRoaXMuYXV0b0Rlc3Ryb3k9ISFlLmF1dG9EZXN0cm95LHRoaXMuYnVmZmVyZWRS ZXF1ZXN0Q291bnQ9MCx0aGlzLmNvcmtlZFJlcXVlc3RzRnJlZT1uZXcgaSh0aGlzKX1mdW5j dGlvbiBBKGUpe3ZhciByPXRoaXMgaW5zdGFuY2VvZihhPWF8fHQoIi4vX3N0cmVhbV9kdXBs ZXgiKSk7aWYoIXImJiF1LmNhbGwoQSx0aGlzKSlyZXR1cm4gbmV3IEEoZSk7dGhpcy5fd3Jp dGFibGVTdGF0ZT1uZXcgayhlLHRoaXMsciksdGhpcy53cml0YWJsZT0hMCxlJiYoImZ1bmN0 aW9uIj09dHlwZW9mIGUud3JpdGUmJih0aGlzLl93cml0ZT1lLndyaXRlKSwiZnVuY3Rpb24i PT10eXBlb2YgZS53cml0ZXYmJih0aGlzLl93cml0ZXY9ZS53cml0ZXYpLCJmdW5jdGlvbiI9 PXR5cGVvZiBlLmRlc3Ryb3kmJih0aGlzLl9kZXN0cm95PWUuZGVzdHJveSksImZ1bmN0aW9u Ij09dHlwZW9mIGUuZmluYWwmJih0aGlzLl9maW5hbD1lLmZpbmFsKSkscy5jYWxsKHRoaXMp fWZ1bmN0aW9uIE0odCxlLHIsbixpLGEsbyl7ZS53cml0ZWxlbj1uLGUud3JpdGVjYj1vLGUu d3JpdGluZz0hMCxlLnN5bmM9ITAsZS5kZXN0cm95ZWQ/ZS5vbndyaXRlKG5ldyB5KCJ3cml0 ZSIpKTpyP3QuX3dyaXRldihpLGUub253cml0ZSk6dC5fd3JpdGUoaSxhLGUub253cml0ZSks ZS5zeW5jPSExfWZ1bmN0aW9uIFModCxlLHIsbil7cnx8ZnVuY3Rpb24odCxlKXswPT09ZS5s ZW5ndGgmJmUubmVlZERyYWluJiYoZS5uZWVkRHJhaW49ITEsdC5lbWl0KCJkcmFpbiIpKX0o dCxlKSxlLnBlbmRpbmdjYi0tLG4oKSxQKHQsZSl9ZnVuY3Rpb24gRSh0LGUpe2UuYnVmZmVy UHJvY2Vzc2luZz0hMDt2YXIgcj1lLmJ1ZmZlcmVkUmVxdWVzdDtpZih0Ll93cml0ZXYmJnIm JnIubmV4dCl7dmFyIG49ZS5idWZmZXJlZFJlcXVlc3RDb3VudCxhPW5ldyBBcnJheShuKSxv PWUuY29ya2VkUmVxdWVzdHNGcmVlO28uZW50cnk9cjtmb3IodmFyIHM9MCxsPSEwO3I7KWFb c109cixyLmlzQnVmfHwobD0hMSkscj1yLm5leHQscys9MTthLmFsbEJ1ZmZlcnM9bCxNKHQs ZSwhMCxlLmxlbmd0aCxhLCIiLG8uZmluaXNoKSxlLnBlbmRpbmdjYisrLGUubGFzdEJ1ZmZl cmVkUmVxdWVzdD1udWxsLG8ubmV4dD8oZS5jb3JrZWRSZXF1ZXN0c0ZyZWU9by5uZXh0LG8u bmV4dD1udWxsKTplLmNvcmtlZFJlcXVlc3RzRnJlZT1uZXcgaShlKSxlLmJ1ZmZlcmVkUmVx dWVzdENvdW50PTB9ZWxzZXtmb3IoO3I7KXt2YXIgYz1yLmNodW5rLHU9ci5lbmNvZGluZyxm PXIuY2FsbGJhY2s7aWYoTSh0LGUsITEsZS5vYmplY3RNb2RlPzE6Yy5sZW5ndGgsYyx1LGYp LHI9ci5uZXh0LGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQtLSxlLndyaXRpbmcpYnJlYWt9bnVs bD09PXImJihlLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCl9ZS5idWZmZXJlZFJlcXVlc3Q9 cixlLmJ1ZmZlclByb2Nlc3Npbmc9ITF9ZnVuY3Rpb24gTCh0KXtyZXR1cm4gdC5lbmRpbmcm JjA9PT10Lmxlbmd0aCYmbnVsbD09PXQuYnVmZmVyZWRSZXF1ZXN0JiYhdC5maW5pc2hlZCYm IXQud3JpdGluZ31mdW5jdGlvbiBDKHQsZSl7dC5fZmluYWwoKGZ1bmN0aW9uKHIpe2UucGVu ZGluZ2NiLS0sciYmdyh0LHIpLGUucHJlZmluaXNoZWQ9ITAsdC5lbWl0KCJwcmVmaW5pc2gi KSxQKHQsZSl9KSl9ZnVuY3Rpb24gUCh0LGUpe3ZhciBuPUwoZSk7aWYobiYmKGZ1bmN0aW9u KHQsZSl7ZS5wcmVmaW5pc2hlZHx8ZS5maW5hbENhbGxlZHx8KCJmdW5jdGlvbiIhPXR5cGVv ZiB0Ll9maW5hbHx8ZS5kZXN0cm95ZWQ/KGUucHJlZmluaXNoZWQ9ITAsdC5lbWl0KCJwcmVm aW5pc2giKSk6KGUucGVuZGluZ2NiKyssZS5maW5hbENhbGxlZD0hMCxyLm5leHRUaWNrKEMs dCxlKSkpfSh0LGUpLDA9PT1lLnBlbmRpbmdjYiYmKGUuZmluaXNoZWQ9ITAsdC5lbWl0KCJm aW5pc2giKSxlLmF1dG9EZXN0cm95KSkpe3ZhciBpPXQuX3JlYWRhYmxlU3RhdGU7KCFpfHxp LmF1dG9EZXN0cm95JiZpLmVuZEVtaXR0ZWQpJiZ0LmRlc3Ryb3koKX1yZXR1cm4gbn10KCJp bmhlcml0cyIpKEEscyksay5wcm90b3R5cGUuZ2V0QnVmZmVyPWZ1bmN0aW9uKCl7Zm9yKHZh ciB0PXRoaXMuYnVmZmVyZWRSZXF1ZXN0LGU9W107dDspZS5wdXNoKHQpLHQ9dC5uZXh0O3Jl dHVybiBlfSxmdW5jdGlvbigpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoay5wcm90b3R5 cGUsImJ1ZmZlciIse2dldDpvLmRlcHJlY2F0ZSgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5n ZXRCdWZmZXIoKX0pLCJfd3JpdGFibGVTdGF0ZS5idWZmZXIgaXMgZGVwcmVjYXRlZC4gVXNl IF93cml0YWJsZVN0YXRlLmdldEJ1ZmZlciBpbnN0ZWFkLiIsIkRFUDAwMDMiKX0pfWNhdGNo KHQpe319KCksImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmhhc0luc3RhbmNl JiYiZnVuY3Rpb24iPT10eXBlb2YgRnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0 YW5jZV0/KHU9RnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0sT2JqZWN0 LmRlZmluZVByb3BlcnR5KEEsU3ltYm9sLmhhc0luc3RhbmNlLHt2YWx1ZTpmdW5jdGlvbih0 KXtyZXR1cm4hIXUuY2FsbCh0aGlzLHQpfHx0aGlzPT09QSYmKHQmJnQuX3dyaXRhYmxlU3Rh dGUgaW5zdGFuY2VvZiBrKX19KSk6dT1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9m IHRoaXN9LEEucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oKXt3KHRoaXMsbmV3IHYpfSxBLnBy b3RvdHlwZS53cml0ZT1mdW5jdGlvbih0LGUsbil7dmFyIGksYT10aGlzLl93cml0YWJsZVN0 YXRlLG89ITEscz0hYS5vYmplY3RNb2RlJiYoaT10LGwuaXNCdWZmZXIoaSl8fGkgaW5zdGFu Y2VvZiBjKTtyZXR1cm4gcyYmIWwuaXNCdWZmZXIodCkmJih0PWZ1bmN0aW9uKHQpe3JldHVy biBsLmZyb20odCl9KHQpKSwiZnVuY3Rpb24iPT10eXBlb2YgZSYmKG49ZSxlPW51bGwpLHM/ ZT0iYnVmZmVyIjplfHwoZT1hLmRlZmF1bHRFbmNvZGluZyksImZ1bmN0aW9uIiE9dHlwZW9m IG4mJihuPVQpLGEuZW5kaW5nP2Z1bmN0aW9uKHQsZSl7dmFyIG49bmV3IGI7dyh0LG4pLHIu bmV4dFRpY2soZSxuKX0odGhpcyxuKTooc3x8ZnVuY3Rpb24odCxlLG4saSl7dmFyIGE7cmV0 dXJuIG51bGw9PT1uP2E9bmV3IHg6InN0cmluZyI9PXR5cGVvZiBufHxlLm9iamVjdE1vZGV8 fChhPW5ldyBkKCJjaHVuayIsWyJzdHJpbmciLCJCdWZmZXIiXSxuKSksIWF8fCh3KHQsYSks ci5uZXh0VGljayhpLGEpLCExKX0odGhpcyxhLHQsbikpJiYoYS5wZW5kaW5nY2IrKyxvPWZ1 bmN0aW9uKHQsZSxyLG4saSxhKXtpZighcil7dmFyIG89ZnVuY3Rpb24odCxlLHIpe3Qub2Jq ZWN0TW9kZXx8ITE9PT10LmRlY29kZVN0cmluZ3N8fCJzdHJpbmciIT10eXBlb2YgZXx8KGU9 bC5mcm9tKGUscikpO3JldHVybiBlfShlLG4saSk7biE9PW8mJihyPSEwLGk9ImJ1ZmZlciIs bj1vKX12YXIgcz1lLm9iamVjdE1vZGU/MTpuLmxlbmd0aDtlLmxlbmd0aCs9czt2YXIgYz1l Lmxlbmd0aDxlLmhpZ2hXYXRlck1hcms7Y3x8KGUubmVlZERyYWluPSEwKTtpZihlLndyaXRp bmd8fGUuY29ya2VkKXt2YXIgdT1lLmxhc3RCdWZmZXJlZFJlcXVlc3Q7ZS5sYXN0QnVmZmVy ZWRSZXF1ZXN0PXtjaHVuazpuLGVuY29kaW5nOmksaXNCdWY6cixjYWxsYmFjazphLG5leHQ6 bnVsbH0sdT91Lm5leHQ9ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0OmUuYnVmZmVyZWRSZXF1ZXN0 PWUubGFzdEJ1ZmZlcmVkUmVxdWVzdCxlLmJ1ZmZlcmVkUmVxdWVzdENvdW50Kz0xfWVsc2Ug TSh0LGUsITEscyxuLGksYSk7cmV0dXJuIGN9KHRoaXMsYSxzLHQsZSxuKSksb30sQS5wcm90 b3R5cGUuY29yaz1mdW5jdGlvbigpe3RoaXMuX3dyaXRhYmxlU3RhdGUuY29ya2VkKyt9LEEu cHJvdG90eXBlLnVuY29yaz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3dyaXRhYmxlU3RhdGU7 dC5jb3JrZWQmJih0LmNvcmtlZC0tLHQud3JpdGluZ3x8dC5jb3JrZWR8fHQuYnVmZmVyUHJv Y2Vzc2luZ3x8IXQuYnVmZmVyZWRSZXF1ZXN0fHxFKHRoaXMsdCkpfSxBLnByb3RvdHlwZS5z ZXREZWZhdWx0RW5jb2Rpbmc9ZnVuY3Rpb24odCl7aWYoInN0cmluZyI9PXR5cGVvZiB0JiYo dD10LnRvTG93ZXJDYXNlKCkpLCEoWyJoZXgiLCJ1dGY4IiwidXRmLTgiLCJhc2NpaSIsImJp bmFyeSIsImJhc2U2NCIsInVjczIiLCJ1Y3MtMiIsInV0ZjE2bGUiLCJ1dGYtMTZsZSIsInJh dyJdLmluZGV4T2YoKHQrIiIpLnRvTG93ZXJDYXNlKCkpPi0xKSl0aHJvdyBuZXcgXyh0KTty ZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5kZWZhdWx0RW5jb2Rpbmc9dCx0aGlzfSxPYmpl Y3QuZGVmaW5lUHJvcGVydHkoQS5wcm90b3R5cGUsIndyaXRhYmxlQnVmZmVyIix7ZW51bWVy YWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhp cy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIoKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHko QS5wcm90b3R5cGUsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1lcmFibGU6ITEsZ2V0 OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319 KSxBLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24odCxlLHIpe3IobmV3IG0oIl93cml0ZSgp IikpfSxBLnByb3RvdHlwZS5fd3JpdGV2PW51bGwsQS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9u KHQsZSxuKXt2YXIgaT10aGlzLl93cml0YWJsZVN0YXRlO3JldHVybiJmdW5jdGlvbiI9PXR5 cGVvZiB0PyhuPXQsdD1udWxsLGU9bnVsbCk6ImZ1bmN0aW9uIj09dHlwZW9mIGUmJihuPWUs ZT1udWxsKSxudWxsIT10JiZ0aGlzLndyaXRlKHQsZSksaS5jb3JrZWQmJihpLmNvcmtlZD0x LHRoaXMudW5jb3JrKCkpLGkuZW5kaW5nfHxmdW5jdGlvbih0LGUsbil7ZS5lbmRpbmc9ITAs UCh0LGUpLG4mJihlLmZpbmlzaGVkP3IubmV4dFRpY2sobik6dC5vbmNlKCJmaW5pc2giLG4p KTtlLmVuZGVkPSEwLHQud3JpdGFibGU9ITF9KHRoaXMsaSxuKSx0aGlzfSxPYmplY3QuZGVm aW5lUHJvcGVydHkoQS5wcm90b3R5cGUsIndyaXRhYmxlTGVuZ3RoIix7ZW51bWVyYWJsZToh MSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5sZW5ndGh9fSks T2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtlbnVtZXJh YmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0 YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0aW9uKHQpe3Ro aXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD10KX19 KSxBLnByb3RvdHlwZS5kZXN0cm95PWYuZGVzdHJveSxBLnByb3RvdHlwZS5fdW5kZXN0cm95 PWYudW5kZXN0cm95LEEucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKHQsZSl7ZSh0KX19 KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHQoIl9wcm9jZXNzIiksInVuZGVmaW5lZCIhPXR5 cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRl ZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHsiLi4vZXJyb3JzIjoyODYsIi4v X3N0cmVhbV9kdXBsZXgiOjI4NywiLi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3kiOjI5NCwi Li9pbnRlcm5hbC9zdHJlYW1zL3N0YXRlIjoyOTgsIi4vaW50ZXJuYWwvc3RyZWFtcy9zdHJl YW0iOjI5OSxfcHJvY2VzczoyNzcsYnVmZmVyOjg1LGluaGVyaXRzOjIzMSwidXRpbC1kZXBy ZWNhdGUiOjMzMH1dLDI5MjpbZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihyKXsoZnVuY3Rp b24oKXsidXNlIHN0cmljdCI7dmFyIG47ZnVuY3Rpb24gaSh0LGUscil7cmV0dXJuIGUgaW4g dD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29u ZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1yLHR9dmFyIGE9dCgiLi9lbmQtb2Yt c3RyZWFtIiksbz1TeW1ib2woImxhc3RSZXNvbHZlIikscz1TeW1ib2woImxhc3RSZWplY3Qi KSxsPVN5bWJvbCgiZXJyb3IiKSxjPVN5bWJvbCgiZW5kZWQiKSx1PVN5bWJvbCgibGFzdFBy b21pc2UiKSxmPVN5bWJvbCgiaGFuZGxlUHJvbWlzZSIpLGg9U3ltYm9sKCJzdHJlYW0iKTtm dW5jdGlvbiBwKHQsZSl7cmV0dXJue3ZhbHVlOnQsZG9uZTplfX1mdW5jdGlvbiBkKHQpe3Zh ciBlPXRbb107aWYobnVsbCE9PWUpe3ZhciByPXRbaF0ucmVhZCgpO251bGwhPT1yJiYodFt1 XT1udWxsLHRbb109bnVsbCx0W3NdPW51bGwsZShwKHIsITEpKSl9fWZ1bmN0aW9uIG0odCl7 ci5uZXh0VGljayhkLHQpfXZhciBnPU9iamVjdC5nZXRQcm90b3R5cGVPZigoZnVuY3Rpb24o KXt9KSksdj1PYmplY3Quc2V0UHJvdG90eXBlT2YoKGkobj17Z2V0IHN0cmVhbSgpe3JldHVy biB0aGlzW2hdfSxuZXh0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXNbbF07aWYobnVs bCE9PWUpcmV0dXJuIFByb21pc2UucmVqZWN0KGUpO2lmKHRoaXNbY10pcmV0dXJuIFByb21p c2UucmVzb2x2ZShwKHZvaWQgMCwhMCkpO2lmKHRoaXNbaF0uZGVzdHJveWVkKXJldHVybiBu ZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxuKXtyLm5leHRUaWNrKChmdW5jdGlvbigpe3RbbF0/ bih0W2xdKTplKHAodm9pZCAwLCEwKSl9KSl9KSk7dmFyIG4saT10aGlzW3VdO2lmKGkpbj1u ZXcgUHJvbWlzZShmdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyLG4pe3QudGhlbigo ZnVuY3Rpb24oKXtlW2NdP3IocCh2b2lkIDAsITApKTplW2ZdKHIsbil9KSxuKX19KGksdGhp cykpO2Vsc2V7dmFyIGE9dGhpc1toXS5yZWFkKCk7aWYobnVsbCE9PWEpcmV0dXJuIFByb21p c2UucmVzb2x2ZShwKGEsITEpKTtuPW5ldyBQcm9taXNlKHRoaXNbZl0pfXJldHVybiB0aGlz W3VdPW4sbn19LFN5bWJvbC5hc3luY0l0ZXJhdG9yLChmdW5jdGlvbigpe3JldHVybiB0aGlz fSkpLGkobiwicmV0dXJuIiwoZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiBuZXcgUHJv bWlzZSgoZnVuY3Rpb24oZSxyKXt0W2hdLmRlc3Ryb3kobnVsbCwoZnVuY3Rpb24odCl7dD9y KHQpOmUocCh2b2lkIDAsITApKX0pKX0pKX0pKSxuKSxnKTtlLmV4cG9ydHM9ZnVuY3Rpb24o dCl7dmFyIGUscj1PYmplY3QuY3JlYXRlKHYsKGkoZT17fSxoLHt2YWx1ZTp0LHdyaXRhYmxl OiEwfSksaShlLG8se3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KSxpKGUscyx7dmFsdWU6bnVs bCx3cml0YWJsZTohMH0pLGkoZSxsLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSksaShlLGMs e3ZhbHVlOnQuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCx3cml0YWJsZTohMH0pLGkoZSxm LHt2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBuPXJbaF0ucmVhZCgpO24/KHJbdV09bnVsbCxy W29dPW51bGwscltzXT1udWxsLHQocChuLCExKSkpOihyW29dPXQscltzXT1lKX0sd3JpdGFi bGU6ITB9KSxlKSk7cmV0dXJuIHJbdV09bnVsbCxhKHQsKGZ1bmN0aW9uKHQpe2lmKHQmJiJF UlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRSIhPT10LmNvZGUpe3ZhciBlPXJbc107cmV0dXJu IG51bGwhPT1lJiYoclt1XT1udWxsLHJbb109bnVsbCxyW3NdPW51bGwsZSh0KSksdm9pZChy W2xdPXQpfXZhciBuPXJbb107bnVsbCE9PW4mJihyW3VdPW51bGwscltvXT1udWxsLHJbc109 bnVsbCxuKHAodm9pZCAwLCEwKSkpLHJbY109ITB9KSksdC5vbigicmVhZGFibGUiLG0uYmlu ZChudWxsLHIpKSxyfX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMsdCgiX3Byb2Nlc3MiKSl9 LHsiLi9lbmQtb2Ytc3RyZWFtIjoyOTUsX3Byb2Nlc3M6Mjc3fV0sMjkzOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXt2YXIgcj1PYmplY3Qua2V5cyh0 KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbj1PYmplY3QuZ2V0T3du UHJvcGVydHlTeW1ib2xzKHQpO2UmJihuPW4uZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4g T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpLmVudW1lcmFibGV9KSkpLHIu cHVzaC5hcHBseShyLG4pfXJldHVybiByfWZ1bmN0aW9uIGkodCxlLHIpe3JldHVybiBlIGlu IHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNv bmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09cix0fWZ1bmN0aW9uIGEodCxlKXtm b3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXTtuLmVudW1lcmFibGU9bi5l bnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFi bGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4ua2V5LG4pfX12YXIgbz10KCJidWZm ZXIiKS5CdWZmZXIscz10KCJ1dGlsIikuaW5zcGVjdCxsPXMmJnMuY3VzdG9tfHwiaW5zcGVj dCI7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpeyFmdW5jdGlvbih0LGUpe2lm KCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEg Y2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpLHRoaXMuaGVhZD1udWxsLHRoaXMudGFp bD1udWxsLHRoaXMubGVuZ3RoPTB9dmFyIGUscixjO3JldHVybiBlPXQsKHI9W3trZXk6InB1 c2giLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXtkYXRhOnQsbmV4dDpudWxsfTt0aGlzLmxl bmd0aD4wP3RoaXMudGFpbC5uZXh0PWU6dGhpcy5oZWFkPWUsdGhpcy50YWlsPWUsKyt0aGlz Lmxlbmd0aH19LHtrZXk6InVuc2hpZnQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXtkYXRh OnQsbmV4dDp0aGlzLmhlYWR9OzA9PT10aGlzLmxlbmd0aCYmKHRoaXMudGFpbD1lKSx0aGlz LmhlYWQ9ZSwrK3RoaXMubGVuZ3RofX0se2tleToic2hpZnQiLHZhbHVlOmZ1bmN0aW9uKCl7 aWYoMCE9PXRoaXMubGVuZ3RoKXt2YXIgdD10aGlzLmhlYWQuZGF0YTtyZXR1cm4gMT09PXRo aXMubGVuZ3RoP3RoaXMuaGVhZD10aGlzLnRhaWw9bnVsbDp0aGlzLmhlYWQ9dGhpcy5oZWFk Lm5leHQsLS10aGlzLmxlbmd0aCx0fX19LHtrZXk6ImNsZWFyIix2YWx1ZTpmdW5jdGlvbigp e3RoaXMuaGVhZD10aGlzLnRhaWw9bnVsbCx0aGlzLmxlbmd0aD0wfX0se2tleToiam9pbiIs dmFsdWU6ZnVuY3Rpb24odCl7aWYoMD09PXRoaXMubGVuZ3RoKXJldHVybiIiO2Zvcih2YXIg ZT10aGlzLmhlYWQscj0iIitlLmRhdGE7ZT1lLm5leHQ7KXIrPXQrZS5kYXRhO3JldHVybiBy fX0se2tleToiY29uY2F0Iix2YWx1ZTpmdW5jdGlvbih0KXtpZigwPT09dGhpcy5sZW5ndGgp cmV0dXJuIG8uYWxsb2MoMCk7Zm9yKHZhciBlLHIsbixpPW8uYWxsb2NVbnNhZmUodD4+PjAp LGE9dGhpcy5oZWFkLHM9MDthOyllPWEuZGF0YSxyPWksbj1zLG8ucHJvdG90eXBlLmNvcHku Y2FsbChlLHIsbikscys9YS5kYXRhLmxlbmd0aCxhPWEubmV4dDtyZXR1cm4gaX19LHtrZXk6 ImNvbnN1bWUiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIHI7cmV0dXJuIHQ8dGhpcy5oZWFk LmRhdGEubGVuZ3RoPyhyPXRoaXMuaGVhZC5kYXRhLnNsaWNlKDAsdCksdGhpcy5oZWFkLmRh dGE9dGhpcy5oZWFkLmRhdGEuc2xpY2UodCkpOnI9dD09PXRoaXMuaGVhZC5kYXRhLmxlbmd0 aD90aGlzLnNoaWZ0KCk6ZT90aGlzLl9nZXRTdHJpbmcodCk6dGhpcy5fZ2V0QnVmZmVyKHQp LHJ9fSx7a2V5OiJmaXJzdCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oZWFkLmRh dGF9fSx7a2V5OiJfZ2V0U3RyaW5nIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmhl YWQscj0xLG49ZS5kYXRhO2Zvcih0LT1uLmxlbmd0aDtlPWUubmV4dDspe3ZhciBpPWUuZGF0 YSxhPXQ+aS5sZW5ndGg/aS5sZW5ndGg6dDtpZihhPT09aS5sZW5ndGg/bis9aTpuKz1pLnNs aWNlKDAsdCksMD09KHQtPWEpKXthPT09aS5sZW5ndGg/KCsrcixlLm5leHQ/dGhpcy5oZWFk PWUubmV4dDp0aGlzLmhlYWQ9dGhpcy50YWlsPW51bGwpOih0aGlzLmhlYWQ9ZSxlLmRhdGE9 aS5zbGljZShhKSk7YnJlYWt9KytyfXJldHVybiB0aGlzLmxlbmd0aC09cixufX0se2tleToi X2dldEJ1ZmZlciIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9by5hbGxvY1Vuc2FmZSh0KSxy PXRoaXMuaGVhZCxuPTE7Zm9yKHIuZGF0YS5jb3B5KGUpLHQtPXIuZGF0YS5sZW5ndGg7cj1y Lm5leHQ7KXt2YXIgaT1yLmRhdGEsYT10PmkubGVuZ3RoP2kubGVuZ3RoOnQ7aWYoaS5jb3B5 KGUsZS5sZW5ndGgtdCwwLGEpLDA9PSh0LT1hKSl7YT09PWkubGVuZ3RoPygrK24sci5uZXh0 P3RoaXMuaGVhZD1yLm5leHQ6dGhpcy5oZWFkPXRoaXMudGFpbD1udWxsKToodGhpcy5oZWFk PXIsci5kYXRhPWkuc2xpY2UoYSkpO2JyZWFrfSsrbn1yZXR1cm4gdGhpcy5sZW5ndGgtPW4s ZX19LHtrZXk6bCx2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiBzKHRoaXMsZnVuY3Rpb24o dCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIHI9bnVsbCE9YXJn dW1lbnRzW2VdP2FyZ3VtZW50c1tlXTp7fTtlJTI/bihPYmplY3QociksITApLmZvckVhY2go KGZ1bmN0aW9uKGUpe2kodCxlLHJbZV0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny aXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5 RGVzY3JpcHRvcnMocikpOm4oT2JqZWN0KHIpKS5mb3JFYWNoKChmdW5jdGlvbihlKXtPYmpl Y3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io cixlKSl9KSl9cmV0dXJuIHR9KHt9LGUse2RlcHRoOjAsY3VzdG9tSW5zcGVjdDohMX0pKX19 XSkmJmEoZS5wcm90b3R5cGUsciksYyYmYShlLGMpLHR9KCl9LHtidWZmZXI6ODUsdXRpbDo4 M31dLDI5NDpbZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbih0KXsoZnVuY3Rpb24oKXsidXNl IHN0cmljdCI7ZnVuY3Rpb24gcih0LGUpe2kodCxlKSxuKHQpfWZ1bmN0aW9uIG4odCl7dC5f d3JpdGFibGVTdGF0ZSYmIXQuX3dyaXRhYmxlU3RhdGUuZW1pdENsb3NlfHx0Ll9yZWFkYWJs ZVN0YXRlJiYhdC5fcmVhZGFibGVTdGF0ZS5lbWl0Q2xvc2V8fHQuZW1pdCgiY2xvc2UiKX1m dW5jdGlvbiBpKHQsZSl7dC5lbWl0KCJlcnJvciIsZSl9ZS5leHBvcnRzPXtkZXN0cm95OmZ1 bmN0aW9uKGUsYSl7dmFyIG89dGhpcyxzPXRoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3Jl YWRhYmxlU3RhdGUuZGVzdHJveWVkLGw9dGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3Jp dGFibGVTdGF0ZS5kZXN0cm95ZWQ7cmV0dXJuIHN8fGw/KGE/YShlKTplJiYodGhpcy5fd3Jp dGFibGVTdGF0ZT90aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZHx8KHRoaXMuX3dy aXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLHQubmV4dFRpY2soaSx0aGlzLGUpKTp0Lm5l eHRUaWNrKGksdGhpcyxlKSksdGhpcyk6KHRoaXMuX3JlYWRhYmxlU3RhdGUmJih0aGlzLl9y ZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD0hMCksdGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMu X3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPSEwKSx0aGlzLl9kZXN0cm95KGV8fG51bGwsKGZ1 bmN0aW9uKGUpeyFhJiZlP28uX3dyaXRhYmxlU3RhdGU/by5fd3JpdGFibGVTdGF0ZS5lcnJv ckVtaXR0ZWQ/dC5uZXh0VGljayhuLG8pOihvLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRl ZD0hMCx0Lm5leHRUaWNrKHIsbyxlKSk6dC5uZXh0VGljayhyLG8sZSk6YT8odC5uZXh0VGlj ayhuLG8pLGEoZSkpOnQubmV4dFRpY2sobixvKX0pKSx0aGlzKX0sdW5kZXN0cm95OmZ1bmN0 aW9uKCl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJv eWVkPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUucmVhZGluZz0hMSx0aGlzLl9yZWFkYWJsZVN0 YXRlLmVuZGVkPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZD0hMSksdGhpcy5f d3JpdGFibGVTdGF0ZSYmKHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPSExLHRoaXMu X3dyaXRhYmxlU3RhdGUuZW5kZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRpbmc9ITEs dGhpcy5fd3JpdGFibGVTdGF0ZS5maW5hbENhbGxlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRl LnByZWZpbmlzaGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQ9ITEsdGhpcy5f d3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITEpfSxlcnJvck9yRGVzdHJveTpmdW5jdGlv bih0LGUpe3ZhciByPXQuX3JlYWRhYmxlU3RhdGUsbj10Ll93cml0YWJsZVN0YXRlO3ImJnIu YXV0b0Rlc3Ryb3l8fG4mJm4uYXV0b0Rlc3Ryb3k/dC5kZXN0cm95KGUpOnQuZW1pdCgiZXJy b3IiLGUpfX19KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHQoIl9wcm9jZXNzIikpfSx7X3By b2Nlc3M6Mjc3fV0sMjk1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo Ii4uLy4uLy4uL2Vycm9ycyIpLmNvZGVzLkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFO2Z1 bmN0aW9uIGkoKXt9ZS5leHBvcnRzPWZ1bmN0aW9uIHQoZSxyLGEpe2lmKCJmdW5jdGlvbiI9 PXR5cGVvZiByKXJldHVybiB0KGUsbnVsbCxyKTtyfHwocj17fSksYT1mdW5jdGlvbih0KXt2 YXIgZT0hMTtyZXR1cm4gZnVuY3Rpb24oKXtpZighZSl7ZT0hMDtmb3IodmFyIHI9YXJndW1l bnRzLmxlbmd0aCxuPW5ldyBBcnJheShyKSxpPTA7aTxyO2krKyluW2ldPWFyZ3VtZW50c1tp XTt0LmFwcGx5KHRoaXMsbil9fX0oYXx8aSk7dmFyIG89ci5yZWFkYWJsZXx8ITEhPT1yLnJl YWRhYmxlJiZlLnJlYWRhYmxlLHM9ci53cml0YWJsZXx8ITEhPT1yLndyaXRhYmxlJiZlLndy aXRhYmxlLGw9ZnVuY3Rpb24oKXtlLndyaXRhYmxlfHx1KCl9LGM9ZS5fd3JpdGFibGVTdGF0 ZSYmZS5fd3JpdGFibGVTdGF0ZS5maW5pc2hlZCx1PWZ1bmN0aW9uKCl7cz0hMSxjPSEwLG98 fGEuY2FsbChlKX0sZj1lLl9yZWFkYWJsZVN0YXRlJiZlLl9yZWFkYWJsZVN0YXRlLmVuZEVt aXR0ZWQsaD1mdW5jdGlvbigpe289ITEsZj0hMCxzfHxhLmNhbGwoZSl9LHA9ZnVuY3Rpb24o dCl7YS5jYWxsKGUsdCl9LGQ9ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gbyYmIWY/KGUuX3Jl YWRhYmxlU3RhdGUmJmUuX3JlYWRhYmxlU3RhdGUuZW5kZWR8fCh0PW5ldyBuKSxhLmNhbGwo ZSx0KSk6cyYmIWM/KGUuX3dyaXRhYmxlU3RhdGUmJmUuX3dyaXRhYmxlU3RhdGUuZW5kZWR8 fCh0PW5ldyBuKSxhLmNhbGwoZSx0KSk6dm9pZCAwfSxtPWZ1bmN0aW9uKCl7ZS5yZXEub24o ImZpbmlzaCIsdSl9O3JldHVybiFmdW5jdGlvbih0KXtyZXR1cm4gdC5zZXRIZWFkZXImJiJm dW5jdGlvbiI9PXR5cGVvZiB0LmFib3J0fShlKT9zJiYhZS5fd3JpdGFibGVTdGF0ZSYmKGUu b24oImVuZCIsbCksZS5vbigiY2xvc2UiLGwpKTooZS5vbigiY29tcGxldGUiLHUpLGUub24o ImFib3J0IixkKSxlLnJlcT9tKCk6ZS5vbigicmVxdWVzdCIsbSkpLGUub24oImVuZCIsaCks ZS5vbigiZmluaXNoIix1KSwhMSE9PXIuZXJyb3ImJmUub24oImVycm9yIixwKSxlLm9uKCJj bG9zZSIsZCksZnVuY3Rpb24oKXtlLnJlbW92ZUxpc3RlbmVyKCJjb21wbGV0ZSIsdSksZS5y ZW1vdmVMaXN0ZW5lcigiYWJvcnQiLGQpLGUucmVtb3ZlTGlzdGVuZXIoInJlcXVlc3QiLG0p LGUucmVxJiZlLnJlcS5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIix1KSxlLnJlbW92ZUxpc3Rl bmVyKCJlbmQiLGwpLGUucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixsKSxlLnJlbW92ZUxpc3Rl bmVyKCJmaW5pc2giLHUpLGUucmVtb3ZlTGlzdGVuZXIoImVuZCIsaCksZS5yZW1vdmVMaXN0 ZW5lcigiZXJyb3IiLHApLGUucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixkKX19fSx7Ii4uLy4u Ly4uL2Vycm9ycyI6Mjg2fV0sMjk2OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0 aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJSZWFkYWJsZS5mcm9tIGlzIG5vdCBhdmFpbGFibGUg aW4gdGhlIGJyb3dzZXIiKX19LHt9XSwyOTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG47dmFyIGk9dCgiLi4vLi4vLi4vZXJyb3JzIikuY29kZXMsYT1pLkVSUl9NSVNT SU5HX0FSR1Msbz1pLkVSUl9TVFJFQU1fREVTVFJPWUVEO2Z1bmN0aW9uIHModCl7aWYodCl0 aHJvdyB0fWZ1bmN0aW9uIGwoZSxyLGksYSl7YT1mdW5jdGlvbih0KXt2YXIgZT0hMTtyZXR1 cm4gZnVuY3Rpb24oKXtlfHwoZT0hMCx0LmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpKX19KGEp O3ZhciBzPSExO2Uub24oImNsb3NlIiwoZnVuY3Rpb24oKXtzPSEwfSkpLHZvaWQgMD09PW4m JihuPXQoIi4vZW5kLW9mLXN0cmVhbSIpKSxuKGUse3JlYWRhYmxlOnIsd3JpdGFibGU6aX0s KGZ1bmN0aW9uKHQpe2lmKHQpcmV0dXJuIGEodCk7cz0hMCxhKCl9KSk7dmFyIGw9ITE7cmV0 dXJuIGZ1bmN0aW9uKHQpe2lmKCFzJiYhbClyZXR1cm4gbD0hMCxmdW5jdGlvbih0KXtyZXR1 cm4gdC5zZXRIZWFkZXImJiJmdW5jdGlvbiI9PXR5cGVvZiB0LmFib3J0fShlKT9lLmFib3J0 KCk6ImZ1bmN0aW9uIj09dHlwZW9mIGUuZGVzdHJveT9lLmRlc3Ryb3koKTp2b2lkIGEodHx8 bmV3IG8oInBpcGUiKSl9fWZ1bmN0aW9uIGModCl7dCgpfWZ1bmN0aW9uIHUodCxlKXtyZXR1 cm4gdC5waXBlKGUpfWZ1bmN0aW9uIGYodCl7cmV0dXJuIHQubGVuZ3RoPyJmdW5jdGlvbiIh PXR5cGVvZiB0W3QubGVuZ3RoLTFdP3M6dC5wb3AoKTpzfWUuZXhwb3J0cz1mdW5jdGlvbigp e2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLGU9bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisr KWVbcl09YXJndW1lbnRzW3JdO3ZhciBuLGk9ZihlKTtpZihBcnJheS5pc0FycmF5KGVbMF0p JiYoZT1lWzBdKSxlLmxlbmd0aDwyKXRocm93IG5ldyBhKCJzdHJlYW1zIik7dmFyIG89ZS5t YXAoKGZ1bmN0aW9uKHQscil7dmFyIGE9cjxlLmxlbmd0aC0xO3JldHVybiBsKHQsYSxyPjAs KGZ1bmN0aW9uKHQpe258fChuPXQpLHQmJm8uZm9yRWFjaChjKSxhfHwoby5mb3JFYWNoKGMp LGkobikpfSkpfSkpO3JldHVybiBlLnJlZHVjZSh1KX19LHsiLi4vLi4vLi4vZXJyb3JzIjoy ODYsIi4vZW5kLW9mLXN0cmVhbSI6Mjk1fV0sMjk4OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4uLy4uLy4uL2Vycm9ycyIpLmNvZGVzLkVSUl9JTlZBTElEX09Q VF9WQUxVRTtlLmV4cG9ydHM9e2dldEhpZ2hXYXRlck1hcms6ZnVuY3Rpb24odCxlLHIsaSl7 dmFyIGE9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBudWxsIT10LmhpZ2hXYXRlck1hcms/dC5o aWdoV2F0ZXJNYXJrOmU/dFtyXTpudWxsfShlLGkscik7aWYobnVsbCE9YSl7aWYoIWlzRmlu aXRlKGEpfHxNYXRoLmZsb29yKGEpIT09YXx8YTwwKXRocm93IG5ldyBuKGk/cjoiaGlnaFdh dGVyTWFyayIsYSk7cmV0dXJuIE1hdGguZmxvb3IoYSl9cmV0dXJuIHQub2JqZWN0TW9kZT8x NjoxNjM4NH19fSx7Ii4uLy4uLy4uL2Vycm9ycyI6Mjg2fV0sMjk5OltmdW5jdGlvbih0LGUs cil7ZS5leHBvcnRzPXQoImV2ZW50cyIpLkV2ZW50RW1pdHRlcn0se2V2ZW50czo4NH1dLDMw MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJzYWZlLWJ1ZmZlciIp LkJ1ZmZlcixpPW4uaXNFbmNvZGluZ3x8ZnVuY3Rpb24odCl7c3dpdGNoKCh0PSIiK3QpJiZ0 LnRvTG93ZXJDYXNlKCkpe2Nhc2UiaGV4IjpjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2Ui YXNjaWkiOmNhc2UiYmluYXJ5IjpjYXNlImJhc2U2NCI6Y2FzZSJ1Y3MyIjpjYXNlInVjcy0y IjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOmNhc2UicmF3IjpyZXR1cm4hMDtkZWZh dWx0OnJldHVybiExfX07ZnVuY3Rpb24gYSh0KXt2YXIgZTtzd2l0Y2godGhpcy5lbmNvZGlu Zz1mdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbih0KXtpZighdClyZXR1cm4idXRmOCI7Zm9y KHZhciBlOzspc3dpdGNoKHQpe2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuInV0Zjgi O2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpy ZXR1cm4idXRmMTZsZSI7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4ibGF0aW4x IjtjYXNlImJhc2U2NCI6Y2FzZSJhc2NpaSI6Y2FzZSJoZXgiOnJldHVybiB0O2RlZmF1bHQ6 aWYoZSlyZXR1cm47dD0oIiIrdCkudG9Mb3dlckNhc2UoKSxlPSEwfX0odCk7aWYoInN0cmlu ZyIhPXR5cGVvZiBlJiYobi5pc0VuY29kaW5nPT09aXx8IWkodCkpKXRocm93IG5ldyBFcnJv cigiVW5rbm93biBlbmNvZGluZzogIit0KTtyZXR1cm4gZXx8dH0odCksdGhpcy5lbmNvZGlu Zyl7Y2FzZSJ1dGYxNmxlIjp0aGlzLnRleHQ9bCx0aGlzLmVuZD1jLGU9NDticmVhaztjYXNl InV0ZjgiOnRoaXMuZmlsbExhc3Q9cyxlPTQ7YnJlYWs7Y2FzZSJiYXNlNjQiOnRoaXMudGV4 dD11LHRoaXMuZW5kPWYsZT0zO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIHRoaXMud3JpdGU9aCx2 b2lkKHRoaXMuZW5kPXApfXRoaXMubGFzdE5lZWQ9MCx0aGlzLmxhc3RUb3RhbD0wLHRoaXMu bGFzdENoYXI9bi5hbGxvY1Vuc2FmZShlKX1mdW5jdGlvbiBvKHQpe3JldHVybiB0PD0xMjc/ MDp0Pj41PT02PzI6dD4+ND09MTQ/Mzp0Pj4zPT0zMD80OnQ+PjY9PTI/LTE6LTJ9ZnVuY3Rp b24gcyh0KXt2YXIgZT10aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLHI9ZnVuY3Rpb24o dCxlLHIpe2lmKDEyOCE9KDE5MiZlWzBdKSlyZXR1cm4gdC5sYXN0TmVlZD0wLCJcdWZmZmQi O2lmKHQubGFzdE5lZWQ+MSYmZS5sZW5ndGg+MSl7aWYoMTI4IT0oMTkyJmVbMV0pKXJldHVy biB0Lmxhc3ROZWVkPTEsIlx1ZmZmZCI7aWYodC5sYXN0TmVlZD4yJiZlLmxlbmd0aD4yJiYx MjghPSgxOTImZVsyXSkpcmV0dXJuIHQubGFzdE5lZWQ9MiwiXHVmZmZkIn19KHRoaXMsdCk7 cmV0dXJuIHZvaWQgMCE9PXI/cjp0aGlzLmxhc3ROZWVkPD10Lmxlbmd0aD8odC5jb3B5KHRo aXMubGFzdENoYXIsZSwwLHRoaXMubGFzdE5lZWQpLHRoaXMubGFzdENoYXIudG9TdHJpbmco dGhpcy5lbmNvZGluZywwLHRoaXMubGFzdFRvdGFsKSk6KHQuY29weSh0aGlzLmxhc3RDaGFy LGUsMCx0Lmxlbmd0aCksdm9pZCh0aGlzLmxhc3ROZWVkLT10Lmxlbmd0aCkpfWZ1bmN0aW9u IGwodCxlKXtpZigodC5sZW5ndGgtZSklMj09MCl7dmFyIHI9dC50b1N0cmluZygidXRmMTZs ZSIsZSk7aWYocil7dmFyIG49ci5jaGFyQ29kZUF0KHIubGVuZ3RoLTEpO2lmKG4+PTU1Mjk2 JiZuPD01NjMxOSlyZXR1cm4gdGhpcy5sYXN0TmVlZD0yLHRoaXMubGFzdFRvdGFsPTQsdGhp cy5sYXN0Q2hhclswXT10W3QubGVuZ3RoLTJdLHRoaXMubGFzdENoYXJbMV09dFt0Lmxlbmd0 aC0xXSxyLnNsaWNlKDAsLTEpfXJldHVybiByfXJldHVybiB0aGlzLmxhc3ROZWVkPTEsdGhp cy5sYXN0VG90YWw9Mix0aGlzLmxhc3RDaGFyWzBdPXRbdC5sZW5ndGgtMV0sdC50b1N0cmlu ZygidXRmMTZsZSIsZSx0Lmxlbmd0aC0xKX1mdW5jdGlvbiBjKHQpe3ZhciBlPXQmJnQubGVu Z3RoP3RoaXMud3JpdGUodCk6IiI7aWYodGhpcy5sYXN0TmVlZCl7dmFyIHI9dGhpcy5sYXN0 VG90YWwtdGhpcy5sYXN0TmVlZDtyZXR1cm4gZSt0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCJ1 dGYxNmxlIiwwLHIpfXJldHVybiBlfWZ1bmN0aW9uIHUodCxlKXt2YXIgcj0odC5sZW5ndGgt ZSklMztyZXR1cm4gMD09PXI/dC50b1N0cmluZygiYmFzZTY0IixlKToodGhpcy5sYXN0TmVl ZD0zLXIsdGhpcy5sYXN0VG90YWw9MywxPT09cj90aGlzLmxhc3RDaGFyWzBdPXRbdC5sZW5n dGgtMV06KHRoaXMubGFzdENoYXJbMF09dFt0Lmxlbmd0aC0yXSx0aGlzLmxhc3RDaGFyWzFd PXRbdC5sZW5ndGgtMV0pLHQudG9TdHJpbmcoImJhc2U2NCIsZSx0Lmxlbmd0aC1yKSl9ZnVu Y3Rpb24gZih0KXt2YXIgZT10JiZ0Lmxlbmd0aD90aGlzLndyaXRlKHQpOiIiO3JldHVybiB0 aGlzLmxhc3ROZWVkP2UrdGhpcy5sYXN0Q2hhci50b1N0cmluZygiYmFzZTY0IiwwLDMtdGhp cy5sYXN0TmVlZCk6ZX1mdW5jdGlvbiBoKHQpe3JldHVybiB0LnRvU3RyaW5nKHRoaXMuZW5j b2RpbmcpfWZ1bmN0aW9uIHAodCl7cmV0dXJuIHQmJnQubGVuZ3RoP3RoaXMud3JpdGUodCk6 IiJ9ci5TdHJpbmdEZWNvZGVyPWEsYS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7aWYo MD09PXQubGVuZ3RoKXJldHVybiIiO3ZhciBlLHI7aWYodGhpcy5sYXN0TmVlZCl7aWYodm9p ZCAwPT09KGU9dGhpcy5maWxsTGFzdCh0KSkpcmV0dXJuIiI7cj10aGlzLmxhc3ROZWVkLHRo aXMubGFzdE5lZWQ9MH1lbHNlIHI9MDtyZXR1cm4gcjx0Lmxlbmd0aD9lP2UrdGhpcy50ZXh0 KHQscik6dGhpcy50ZXh0KHQscik6ZXx8IiJ9LGEucHJvdG90eXBlLmVuZD1mdW5jdGlvbih0 KXt2YXIgZT10JiZ0Lmxlbmd0aD90aGlzLndyaXRlKHQpOiIiO3JldHVybiB0aGlzLmxhc3RO ZWVkP2UrIlx1ZmZmZCI6ZX0sYS5wcm90b3R5cGUudGV4dD1mdW5jdGlvbih0LGUpe3ZhciBy PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lLmxlbmd0aC0xO2lmKG48cilyZXR1cm4gMDt2YXIg aT1vKGVbbl0pO2lmKGk+PTApcmV0dXJuIGk+MCYmKHQubGFzdE5lZWQ9aS0xKSxpO2lmKC0t bjxyfHwtMj09PWkpcmV0dXJuIDA7aWYoKGk9byhlW25dKSk+PTApcmV0dXJuIGk+MCYmKHQu bGFzdE5lZWQ9aS0yKSxpO2lmKC0tbjxyfHwtMj09PWkpcmV0dXJuIDA7aWYoKGk9byhlW25d KSk+PTApcmV0dXJuIGk+MCYmKDI9PT1pP2k9MDp0Lmxhc3ROZWVkPWktMyksaTtyZXR1cm4g MH0odGhpcyx0LGUpO2lmKCF0aGlzLmxhc3ROZWVkKXJldHVybiB0LnRvU3RyaW5nKCJ1dGY4 IixlKTt0aGlzLmxhc3RUb3RhbD1yO3ZhciBuPXQubGVuZ3RoLShyLXRoaXMubGFzdE5lZWQp O3JldHVybiB0LmNvcHkodGhpcy5sYXN0Q2hhciwwLG4pLHQudG9TdHJpbmcoInV0ZjgiLGUs bil9LGEucHJvdG90eXBlLmZpbGxMYXN0PWZ1bmN0aW9uKHQpe2lmKHRoaXMubGFzdE5lZWQ8 PXQubGVuZ3RoKXJldHVybiB0LmNvcHkodGhpcy5sYXN0Q2hhcix0aGlzLmxhc3RUb3RhbC10 aGlzLmxhc3ROZWVkLDAsdGhpcy5sYXN0TmVlZCksdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0 aGlzLmVuY29kaW5nLDAsdGhpcy5sYXN0VG90YWwpO3QuY29weSh0aGlzLmxhc3RDaGFyLHRo aXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQsMCx0Lmxlbmd0aCksdGhpcy5sYXN0TmVlZC09 dC5sZW5ndGh9fSx7InNhZmUtYnVmZmVyIjoyODR9XSwzMDE6W2Z1bmN0aW9uKHQsZSxyKXso ZnVuY3Rpb24ocixuKXsoZnVuY3Rpb24oKXt2YXIgcj10KCJhc3NlcnQiKSxpPXQoImRlYnVn IikoInN0cmVhbS1wYXJzZXIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dCYmImZ1 bmN0aW9uIj09dHlwZW9mIHQuX3RyYW5zZm9ybSxyPXQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0 Ll93cml0ZTtpZighZSYmIXIpdGhyb3cgbmV3IEVycm9yKCJtdXN0IHBhc3MgYSBXcml0YWJs ZSBvciBUcmFuc2Zvcm0gc3RyZWFtIGluIik7aSgiZXh0ZW5kaW5nIFBhcnNlciBpbnRvIHN0 cmVhbSIpLHQuX2J5dGVzPW8sdC5fc2tpcEJ5dGVzPXMsZSYmKHQuX3Bhc3N0aHJvdWdoPWwp O2U/dC5fdHJhbnNmb3JtPXU6dC5fd3JpdGU9Y307ZnVuY3Rpb24gYSh0KXtpKCJpbml0aWFs aXppbmcgcGFyc2VyIHN0cmVhbSIpLHQuX3BhcnNlckJ5dGVzTGVmdD0wLHQuX3BhcnNlckJ1 ZmZlcnM9W10sdC5fcGFyc2VyQnVmZmVyZWQ9MCx0Ll9wYXJzZXJTdGF0ZT0tMSx0Ll9wYXJz ZXJDYWxsYmFjaz1udWxsLCJmdW5jdGlvbiI9PXR5cGVvZiB0LnB1c2gmJih0Ll9wYXJzZXJP dXRwdXQ9dC5wdXNoLmJpbmQodCkpLHQuX3BhcnNlckluaXQ9ITB9ZnVuY3Rpb24gbyh0LGUp e3IoIXRoaXMuX3BhcnNlckNhbGxiYWNrLCd0aGVyZSBpcyBhbHJlYWR5IGEgImNhbGxiYWNr IiBzZXQhJykscihpc0Zpbml0ZSh0KSYmdD4wLCdjYW4gb25seSBidWZmZXIgYSBmaW5pdGUg bnVtYmVyIG9mIGJ5dGVzID4gMCwgZ290ICInK3QrJyInKSx0aGlzLl9wYXJzZXJJbml0fHxh KHRoaXMpLGkoImJ1ZmZlcmluZyAlbyBieXRlcyIsdCksdGhpcy5fcGFyc2VyQnl0ZXNMZWZ0 PXQsdGhpcy5fcGFyc2VyQ2FsbGJhY2s9ZSx0aGlzLl9wYXJzZXJTdGF0ZT0wfWZ1bmN0aW9u IHModCxlKXtyKCF0aGlzLl9wYXJzZXJDYWxsYmFjaywndGhlcmUgaXMgYWxyZWFkeSBhICJj YWxsYmFjayIgc2V0IScpLHIodD4wLCdjYW4gb25seSBza2lwID4gMCBieXRlcywgZ290ICIn K3QrJyInKSx0aGlzLl9wYXJzZXJJbml0fHxhKHRoaXMpLGkoInNraXBwaW5nICVvIGJ5dGVz Iix0KSx0aGlzLl9wYXJzZXJCeXRlc0xlZnQ9dCx0aGlzLl9wYXJzZXJDYWxsYmFjaz1lLHRo aXMuX3BhcnNlclN0YXRlPTF9ZnVuY3Rpb24gbCh0LGUpe3IoIXRoaXMuX3BhcnNlckNhbGxi YWNrLCdUaGVyZSBpcyBhbHJlYWR5IGEgImNhbGxiYWNrIiBzZXQhJykscih0PjAsJ2NhbiBv bmx5IHBhc3MgdGhyb3VnaCA+IDAgYnl0ZXMsIGdvdCAiJyt0KyciJyksdGhpcy5fcGFyc2Vy SW5pdHx8YSh0aGlzKSxpKCJwYXNzaW5nIHRocm91Z2ggJW8gYnl0ZXMiLHQpLHRoaXMuX3Bh cnNlckJ5dGVzTGVmdD10LHRoaXMuX3BhcnNlckNhbGxiYWNrPWUsdGhpcy5fcGFyc2VyU3Rh dGU9Mn1mdW5jdGlvbiBjKHQsZSxyKXt0aGlzLl9wYXJzZXJJbml0fHxhKHRoaXMpLGkoIndy aXRlKCVvIGJ5dGVzKSIsdC5sZW5ndGgpLCJmdW5jdGlvbiI9PXR5cGVvZiBlJiYocj1lKSxo KHRoaXMsdCxudWxsLHIpfWZ1bmN0aW9uIHUodCxlLHIpe3RoaXMuX3BhcnNlckluaXR8fGEo dGhpcyksaSgidHJhbnNmb3JtKCVvIGJ5dGVzKSIsdC5sZW5ndGgpLCJmdW5jdGlvbiIhPXR5 cGVvZiBlJiYoZT10aGlzLl9wYXJzZXJPdXRwdXQpLGgodGhpcyx0LGUscil9ZnVuY3Rpb24g Zih0LGUscixhKXtpZih0Ll9wYXJzZXJCeXRlc0xlZnQtPWUubGVuZ3RoLGkoIiVvIGJ5dGVz IGxlZnQgZm9yIHN0cmVhbSBwaWVjZSIsdC5fcGFyc2VyQnl0ZXNMZWZ0KSwwPT09dC5fcGFy c2VyU3RhdGU/KHQuX3BhcnNlckJ1ZmZlcnMucHVzaChlKSx0Ll9wYXJzZXJCdWZmZXJlZCs9 ZS5sZW5ndGgpOjI9PT10Ll9wYXJzZXJTdGF0ZSYmcihlKSwwIT09dC5fcGFyc2VyQnl0ZXNM ZWZ0KXJldHVybiBhO3ZhciBvPXQuX3BhcnNlckNhbGxiYWNrO2lmKG8mJjA9PT10Ll9wYXJz ZXJTdGF0ZSYmdC5fcGFyc2VyQnVmZmVycy5sZW5ndGg+MSYmKGU9bi5jb25jYXQodC5fcGFy c2VyQnVmZmVycyx0Ll9wYXJzZXJCdWZmZXJlZCkpLDAhPT10Ll9wYXJzZXJTdGF0ZSYmKGU9 bnVsbCksdC5fcGFyc2VyQ2FsbGJhY2s9bnVsbCx0Ll9wYXJzZXJCdWZmZXJlZD0wLHQuX3Bh cnNlclN0YXRlPS0xLHQuX3BhcnNlckJ1ZmZlcnMuc3BsaWNlKDApLG8pe3ZhciBzPVtdO2Um JnMucHVzaChlKSxyJiZzLnB1c2gocik7dmFyIGw9by5sZW5ndGg+cy5sZW5ndGg7bCYmcy5w dXNoKHAoYSkpO3ZhciBjPW8uYXBwbHkodCxzKTtpZighbHx8YT09PWMpcmV0dXJuIGF9fXZh ciBoPXAoKGZ1bmN0aW9uIHQoZSxyLG4saSl7cmV0dXJuIGUuX3BhcnNlckJ5dGVzTGVmdDw9 MD9pKG5ldyBFcnJvcigiZ290IGRhdGEgYnV0IG5vdCBjdXJyZW50bHkgcGFyc2luZyBhbnl0 aGluZyIpKTpyLmxlbmd0aDw9ZS5fcGFyc2VyQnl0ZXNMZWZ0P2Z1bmN0aW9uKCl7cmV0dXJu IGYoZSxyLG4saSl9OmZ1bmN0aW9uKCl7dmFyIGE9ci5zbGljZSgwLGUuX3BhcnNlckJ5dGVz TGVmdCk7cmV0dXJuIGYoZSxhLG4sKGZ1bmN0aW9uKG8pe3JldHVybiBvP2kobyk6ci5sZW5n dGg+YS5sZW5ndGg/ZnVuY3Rpb24oKXtyZXR1cm4gdChlLHIuc2xpY2UoYS5sZW5ndGgpLG4s aSl9OnZvaWQgMH0pKX19KSk7ZnVuY3Rpb24gcCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3Io dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ImZ1bmN0aW9uIj09dHlwZW9mIGU7KWU9 ZSgpO3JldHVybiBlfX19KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHQoIl9wcm9jZXNzIiks dCgiYnVmZmVyIikuQnVmZmVyKX0se19wcm9jZXNzOjI3Nyxhc3NlcnQ6NzUsYnVmZmVyOjg1 LGRlYnVnOjMwMn1dLDMwMjpbZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihuKXsoZnVuY3Rp b24oKXtmdW5jdGlvbiBpKCl7dmFyIHQ7dHJ5e3Q9ci5zdG9yYWdlLmRlYnVnfWNhdGNoKHQp e31yZXR1cm4hdCYmdm9pZCAwIT09biYmImVudiJpbiBuJiYodD1uLmVudi5ERUJVRyksdH0o cj1lLmV4cG9ydHM9dCgiLi9kZWJ1ZyIpKS5sb2c9ZnVuY3Rpb24oKXtyZXR1cm4ib2JqZWN0 Ij09dHlwZW9mIGNvbnNvbGUmJmNvbnNvbGUubG9nJiZGdW5jdGlvbi5wcm90b3R5cGUuYXBw bHkuY2FsbChjb25zb2xlLmxvZyxjb25zb2xlLGFyZ3VtZW50cyl9LHIuZm9ybWF0QXJncz1m dW5jdGlvbih0KXt2YXIgZT10aGlzLnVzZUNvbG9ycztpZih0WzBdPShlPyIlYyI6IiIpK3Ro aXMubmFtZXNwYWNlKyhlPyIgJWMiOiIgIikrdFswXSsoZT8iJWMgIjoiICIpKyIrIityLmh1 bWFuaXplKHRoaXMuZGlmZiksIWUpcmV0dXJuO3ZhciBuPSJjb2xvcjogIit0aGlzLmNvbG9y O3Quc3BsaWNlKDEsMCxuLCJjb2xvcjogaW5oZXJpdCIpO3ZhciBpPTAsYT0wO3RbMF0ucmVw bGFjZSgvJVthLXpBLVolXS9nLChmdW5jdGlvbih0KXsiJSUiIT09dCYmKGkrKywiJWMiPT09 dCYmKGE9aSkpfSkpLHQuc3BsaWNlKGEsMCxuKX0sci5zYXZlPWZ1bmN0aW9uKHQpe3RyeXtu dWxsPT10P3Iuc3RvcmFnZS5yZW1vdmVJdGVtKCJkZWJ1ZyIpOnIuc3RvcmFnZS5kZWJ1Zz10 fWNhdGNoKHQpe319LHIubG9hZD1pLHIudXNlQ29sb3JzPWZ1bmN0aW9uKCl7aWYoInVuZGVm aW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5wcm9jZXNzJiYicmVuZGVyZXIiPT09d2lu ZG93LnByb2Nlc3MudHlwZSlyZXR1cm4hMDtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGRv Y3VtZW50JiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxl bWVudC5zdHlsZSYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLldlYmtpdEFwcGVh cmFuY2V8fCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuY29uc29sZSYmKHdp bmRvdy5jb25zb2xlLmZpcmVidWd8fHdpbmRvdy5jb25zb2xlLmV4Y2VwdGlvbiYmd2luZG93 LmNvbnNvbGUudGFibGUpfHwidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmbmF2aWdh dG9yLnVzZXJBZ2VudCYmbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNo KC9maXJlZm94XC8oXGQrKS8pJiZwYXJzZUludChSZWdFeHAuJDEsMTApPj0zMXx8InVuZGVm aW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJm5hdmlnYXRvci51c2VyQWdlbnQmJm5hdmlnYXRv ci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvYXBwbGV3ZWJraXRcLyhcZCspLyl9 LHIuc3RvcmFnZT0idW5kZWZpbmVkIiE9dHlwZW9mIGNocm9tZSYmdm9pZCAwIT09Y2hyb21l LnN0b3JhZ2U/Y2hyb21lLnN0b3JhZ2UubG9jYWw6ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHdp bmRvdy5sb2NhbFN0b3JhZ2V9Y2F0Y2godCl7fX0oKSxyLmNvbG9ycz1bImxpZ2h0c2VhZ3Jl ZW4iLCJmb3Jlc3RncmVlbiIsImdvbGRlbnJvZCIsImRvZGdlcmJsdWUiLCJkYXJrb3JjaGlk IiwiY3JpbXNvbiJdLHIuZm9ybWF0dGVycy5qPWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gSlNP Ti5zdHJpbmdpZnkodCl9Y2F0Y2godCl7cmV0dXJuIltVbmV4cGVjdGVkSlNPTlBhcnNlRXJy b3JdOiAiK3QubWVzc2FnZX19LHIuZW5hYmxlKGkoKSl9KS5jYWxsKHRoaXMpfSkuY2FsbCh0 aGlzLHQoIl9wcm9jZXNzIikpfSx7Ii4vZGVidWciOjMwMyxfcHJvY2VzczoyNzd9XSwzMDM6 W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbjtmdW5jdGlvbiBpKHQpe2Z1bmN0aW9uIGUoKXtpZihl LmVuYWJsZWQpe3ZhciB0PWUsaT0rbmV3IERhdGUsYT1pLShufHxpKTt0LmRpZmY9YSx0LnBy ZXY9bix0LmN1cnI9aSxuPWk7Zm9yKHZhciBvPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3Ro KSxzPTA7czxvLmxlbmd0aDtzKyspb1tzXT1hcmd1bWVudHNbc107b1swXT1yLmNvZXJjZShv WzBdKSwic3RyaW5nIiE9dHlwZW9mIG9bMF0mJm8udW5zaGlmdCgiJU8iKTt2YXIgbD0wO29b MF09b1swXS5yZXBsYWNlKC8lKFthLXpBLVolXSkvZywoZnVuY3Rpb24oZSxuKXtpZigiJSUi PT09ZSlyZXR1cm4gZTtsKys7dmFyIGk9ci5mb3JtYXR0ZXJzW25dO2lmKCJmdW5jdGlvbiI9 PXR5cGVvZiBpKXt2YXIgYT1vW2xdO2U9aS5jYWxsKHQsYSksby5zcGxpY2UobCwxKSxsLS19 cmV0dXJuIGV9KSksci5mb3JtYXRBcmdzLmNhbGwodCxvKTt2YXIgYz1lLmxvZ3x8ci5sb2d8 fGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSk7Yy5hcHBseSh0LG8pfX1yZXR1cm4gZS5uYW1l c3BhY2U9dCxlLmVuYWJsZWQ9ci5lbmFibGVkKHQpLGUudXNlQ29sb3JzPXIudXNlQ29sb3Jz KCksZS5jb2xvcj1mdW5jdGlvbih0KXt2YXIgZSxuPTA7Zm9yKGUgaW4gdCluPShuPDw1KS1u K3QuY2hhckNvZGVBdChlKSxufD0wO3JldHVybiByLmNvbG9yc1tNYXRoLmFicyhuKSVyLmNv bG9ycy5sZW5ndGhdfSh0KSwiZnVuY3Rpb24iPT10eXBlb2Ygci5pbml0JiZyLmluaXQoZSks ZX0ocj1lLmV4cG9ydHM9aS5kZWJ1Zz1pLmRlZmF1bHQ9aSkuY29lcmNlPWZ1bmN0aW9uKHQp e3JldHVybiB0IGluc3RhbmNlb2YgRXJyb3I/dC5zdGFja3x8dC5tZXNzYWdlOnR9LHIuZGlz YWJsZT1mdW5jdGlvbigpe3IuZW5hYmxlKCIiKX0sci5lbmFibGU9ZnVuY3Rpb24odCl7ci5z YXZlKHQpLHIubmFtZXM9W10sci5za2lwcz1bXTtmb3IodmFyIGU9KCJzdHJpbmciPT10eXBl b2YgdD90OiIiKS5zcGxpdCgvW1xzLF0rLyksbj1lLmxlbmd0aCxpPTA7aTxuO2krKyllW2ld JiYoIi0iPT09KHQ9ZVtpXS5yZXBsYWNlKC9cKi9nLCIuKj8iKSlbMF0/ci5za2lwcy5wdXNo KG5ldyBSZWdFeHAoIl4iK3Quc3Vic3RyKDEpKyIkIikpOnIubmFtZXMucHVzaChuZXcgUmVn RXhwKCJeIit0KyIkIikpKX0sci5lbmFibGVkPWZ1bmN0aW9uKHQpe3ZhciBlLG47Zm9yKGU9 MCxuPXIuc2tpcHMubGVuZ3RoO2U8bjtlKyspaWYoci5za2lwc1tlXS50ZXN0KHQpKXJldHVy biExO2ZvcihlPTAsbj1yLm5hbWVzLmxlbmd0aDtlPG47ZSsrKWlmKHIubmFtZXNbZV0udGVz dCh0KSlyZXR1cm4hMDtyZXR1cm4hMX0sci5odW1hbml6ZT10KCJtcyIpLHIubmFtZXM9W10s ci5za2lwcz1bXSxyLmZvcm1hdHRlcnM9e319LHttczozMDR9XSwzMDQ6W2Z1bmN0aW9uKHQs ZSxyKXt2YXIgbj0xZTMsaT02ZTQsYT02MCppLG89MjQqYTtmdW5jdGlvbiBzKHQsZSxyKXtp ZighKHQ8ZSkpcmV0dXJuIHQ8MS41KmU/TWF0aC5mbG9vcih0L2UpKyIgIityOk1hdGguY2Vp bCh0L2UpKyIgIityKyJzIn1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtlPWV8fHt9O3ZhciBy LGw9dHlwZW9mIHQ7aWYoInN0cmluZyI9PT1sJiZ0Lmxlbmd0aD4wKXJldHVybiBmdW5jdGlv bih0KXtpZigodD1TdHJpbmcodCkpLmxlbmd0aD4xMDApcmV0dXJuO3ZhciBlPS9eKCg/Olxk Kyk/XC4/XGQrKSAqKG1pbGxpc2Vjb25kcz98bXNlY3M/fG1zfHNlY29uZHM/fHNlY3M/fHN8 bWludXRlcz98bWlucz98bXxob3Vycz98aHJzP3xofGRheXM/fGR8eWVhcnM/fHlycz98eSk/ JC9pLmV4ZWModCk7aWYoIWUpcmV0dXJuO3ZhciByPXBhcnNlRmxvYXQoZVsxXSk7c3dpdGNo KChlWzJdfHwibXMiKS50b0xvd2VyQ2FzZSgpKXtjYXNlInllYXJzIjpjYXNlInllYXIiOmNh c2UieXJzIjpjYXNlInlyIjpjYXNlInkiOnJldHVybiAzMTU1NzZlNSpyO2Nhc2UiZGF5cyI6 Y2FzZSJkYXkiOmNhc2UiZCI6cmV0dXJuIHIqbztjYXNlImhvdXJzIjpjYXNlImhvdXIiOmNh c2UiaHJzIjpjYXNlImhyIjpjYXNlImgiOnJldHVybiByKmE7Y2FzZSJtaW51dGVzIjpjYXNl Im1pbnV0ZSI6Y2FzZSJtaW5zIjpjYXNlIm1pbiI6Y2FzZSJtIjpyZXR1cm4gcippO2Nhc2Ui c2Vjb25kcyI6Y2FzZSJzZWNvbmQiOmNhc2Uic2VjcyI6Y2FzZSJzZWMiOmNhc2UicyI6cmV0 dXJuIHIqbjtjYXNlIm1pbGxpc2Vjb25kcyI6Y2FzZSJtaWxsaXNlY29uZCI6Y2FzZSJtc2Vj cyI6Y2FzZSJtc2VjIjpjYXNlIm1zIjpyZXR1cm4gcjtkZWZhdWx0OnJldHVybn19KHQpO2lm KCJudW1iZXIiPT09bCYmITE9PT1pc05hTih0KSlyZXR1cm4gZS5sb25nP3Mocj10LG8sImRh eSIpfHxzKHIsYSwiaG91ciIpfHxzKHIsaSwibWludXRlIil8fHMocixuLCJzZWNvbmQiKXx8 cisiIG1zIjpmdW5jdGlvbih0KXtpZih0Pj1vKXJldHVybiBNYXRoLnJvdW5kKHQvbykrImQi O2lmKHQ+PWEpcmV0dXJuIE1hdGgucm91bmQodC9hKSsiaCI7aWYodD49aSlyZXR1cm4gTWF0 aC5yb3VuZCh0L2kpKyJtIjtpZih0Pj1uKXJldHVybiBNYXRoLnJvdW5kKHQvbikrInMiO3Jl dHVybiB0KyJtcyJ9KHQpO3Rocm93IG5ldyBFcnJvcigidmFsIGlzIG5vdCBhIG5vbi1lbXB0 eSBzdHJpbmcgb3IgYSB2YWxpZCBudW1iZXIuIHZhbD0iK0pTT04uc3RyaW5naWZ5KHQpKX19 LHt9XSwzMDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgicGFyZW50 aGVzaXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2lmKG51bGw9PXQpdGhyb3cgRXJy b3IoIkZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSBhIHN0cmluZyIpO2lmKG51bGw9PWUpdGhy b3cgRXJyb3IoIlNlcGFyYXRvciBzaG91bGQgYmUgYSBzdHJpbmcgb3IgYSBSZWdFeHAiKTty Pygic3RyaW5nIj09dHlwZW9mIHJ8fEFycmF5LmlzQXJyYXkocikpJiYocj17aWdub3JlOnJ9 KTpyPXt9LG51bGw9PXIuZXNjYXBlJiYoci5lc2NhcGU9ITApLG51bGw9PXIuaWdub3JlP3Iu aWdub3JlPVsiW10iLCIoKSIsInt9IiwiPD4iLCciIicsIicnIiwiYGAiLCJcdTIwMWNcdTIw MWQiLCJceGFiXHhiYiJdOigic3RyaW5nIj09dHlwZW9mIHIuaWdub3JlJiYoci5pZ25vcmU9 W3IuaWdub3JlXSksci5pZ25vcmU9ci5pZ25vcmUubWFwKChmdW5jdGlvbih0KXtyZXR1cm4g MT09PXQubGVuZ3RoJiYodCs9dCksdH0pKSk7dmFyIGk9bi5wYXJzZSh0LHtmbGF0OiEwLGJy YWNrZXRzOnIuaWdub3JlfSksYT1pWzBdLnNwbGl0KGUpO2lmKHIuZXNjYXBlKXtmb3IodmFy IG89W10scz0wO3M8YS5sZW5ndGg7cysrKXt2YXIgbD1hW3NdLGM9YVtzKzFdOyJcXCI9PT1s W2wubGVuZ3RoLTFdJiYiXFwiIT09bFtsLmxlbmd0aC0yXT8oby5wdXNoKGwrZStjKSxzKysp Om8ucHVzaChsKX1hPW99Zm9yKHM9MDtzPGEubGVuZ3RoO3MrKylpWzBdPWFbc10sYVtzXT1u LnN0cmluZ2lmeShpLHtmbGF0OiEwfSk7cmV0dXJuIGF9fSx7cGFyZW50aGVzaXM6MjQ4fV0s MzA2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0 KXtmb3IodmFyIGU9dC5sZW5ndGgscj1uZXcgQXJyYXkoZSksbj1uZXcgQXJyYXkoZSksaT1u ZXcgQXJyYXkoZSksYT1uZXcgQXJyYXkoZSksbz1uZXcgQXJyYXkoZSkscz1uZXcgQXJyYXko ZSksbD0wO2w8ZTsrK2wpcltsXT0tMSxuW2xdPTAsaVtsXT0hMSxhW2xdPTAsb1tsXT0tMSxz W2xdPVtdO3ZhciBjLHU9MCxmPVtdLGg9W107ZnVuY3Rpb24gcChlKXt2YXIgbD1bZV0sYz1b ZV07Zm9yKHJbZV09bltlXT11LGlbZV09ITAsdSs9MTtjLmxlbmd0aD4wOyl7ZT1jW2MubGVu Z3RoLTFdO3ZhciBwPXRbZV07aWYoYVtlXTxwLmxlbmd0aCl7Zm9yKHZhciBkPWFbZV07ZDxw Lmxlbmd0aDsrK2Qpe3ZhciBtPXBbZF07aWYoclttXTwwKXtyW21dPW5bbV09dSxpW21dPSEw LHUrPTEsbC5wdXNoKG0pLGMucHVzaChtKTticmVha31pW21dJiYobltlXT0wfE1hdGgubWlu KG5bZV0sblttXSkpLG9bbV0+PTAmJnNbZV0ucHVzaChvW21dKX1hW2VdPWR9ZWxzZXtpZihu W2VdPT09cltlXSl7dmFyIGc9W10sdj1bXSx5PTA7Zm9yKGQ9bC5sZW5ndGgtMTtkPj0wOy0t ZCl7dmFyIHg9bFtkXTtpZihpW3hdPSExLGcucHVzaCh4KSx2LnB1c2goc1t4XSkseSs9c1t4 XS5sZW5ndGgsb1t4XT1mLmxlbmd0aCx4PT09ZSl7bC5sZW5ndGg9ZDticmVha319Zi5wdXNo KGcpO3ZhciBiPW5ldyBBcnJheSh5KTtmb3IoZD0wO2Q8di5sZW5ndGg7ZCsrKWZvcih2YXIg Xz0wO188dltkXS5sZW5ndGg7XysrKWJbLS15XT12W2RdW19dO2gucHVzaChiKX1jLnBvcCgp fX19Zm9yKGw9MDtsPGU7KytsKXJbbF08MCYmcChsKTtmb3IobD0wO2w8aC5sZW5ndGg7bCsr KXt2YXIgZD1oW2xdO2lmKDAhPT1kLmxlbmd0aCl7ZC5zb3J0KChmdW5jdGlvbih0LGUpe3Jl dHVybiB0LWV9KSksYz1bZFswXV07Zm9yKHZhciBtPTE7bTxkLmxlbmd0aDttKyspZFttXSE9 PWRbbS0xXSYmYy5wdXNoKGRbbV0pO2hbbF09Y319cmV0dXJue2NvbXBvbmVudHM6ZixhZGph Y2VuY3lMaXN0Omh9fX0se31dLDMwNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtP YmplY3QuZGVmaW5lUHJvcGVydHkociwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49 ZnVuY3Rpb24odCxlKXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0O2lmKFN5bWJvbC5p dGVyYXRvciBpbiBPYmplY3QodCkpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIHI9W10sbj0h MCxpPSExLGE9dm9pZCAwO3RyeXtmb3IodmFyIG8scz10W1N5bWJvbC5pdGVyYXRvcl0oKTsh KG49KG89cy5uZXh0KCkpLmRvbmUpJiYoci5wdXNoKG8udmFsdWUpLCFlfHxyLmxlbmd0aCE9 PWUpO249ITApO31jYXRjaCh0KXtpPSEwLGE9dH1maW5hbGx5e3RyeXshbiYmcy5yZXR1cm4m JnMucmV0dXJuKCl9ZmluYWxseXtpZihpKXRocm93IGF9fXJldHVybiByfSh0LGUpO3Rocm93 IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRl cmFibGUgaW5zdGFuY2UiKX0saT0yKk1hdGguUEksYT1mdW5jdGlvbih0LGUscixuLGksYSxv KXt2YXIgcz10LngsbD10Lnk7cmV0dXJue3g6bioocyo9ZSktaSoobCo9cikrYSx5Omkqcytu Kmwrb319LG89ZnVuY3Rpb24odCxlKXt2YXIgcj0xLjU3MDc5NjMyNjc5NDg5NjY9PT1lPy41 NTE5MTUwMjQ0OTQ6LTEuNTcwNzk2MzI2Nzk0ODk2Nj09PWU/LS41NTE5MTUwMjQ0OTQ6NC8z Kk1hdGgudGFuKGUvNCksbj1NYXRoLmNvcyh0KSxpPU1hdGguc2luKHQpLGE9TWF0aC5jb3Mo dCtlKSxvPU1hdGguc2luKHQrZSk7cmV0dXJuW3t4Om4taSpyLHk6aStuKnJ9LHt4OmErbypy LHk6by1hKnJ9LHt4OmEseTpvfV19LHM9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9dCpyK2Uq bjtyZXR1cm4gaT4xJiYoaT0xKSxpPC0xJiYoaT0tMSksKHQqbi1lKnI8MD8tMToxKSpNYXRo LmFjb3MoaSl9O3IuZGVmYXVsdD1mdW5jdGlvbih0KXt2YXIgZT10LnB4LHI9dC5weSxsPXQu Y3gsYz10LmN5LHU9dC5yeCxmPXQucnksaD10LnhBeGlzUm90YXRpb24scD12b2lkIDA9PT1o PzA6aCxkPXQubGFyZ2VBcmNGbGFnLG09dm9pZCAwPT09ZD8wOmQsZz10LnN3ZWVwRmxhZyx2 PXZvaWQgMD09PWc/MDpnLHk9W107aWYoMD09PXV8fDA9PT1mKXJldHVybltdO3ZhciB4PU1h dGguc2luKHAqaS8zNjApLGI9TWF0aC5jb3MocCppLzM2MCksXz1iKihlLWwpLzIreCooci1j KS8yLHc9LXgqKGUtbCkvMitiKihyLWMpLzI7aWYoMD09PV8mJjA9PT13KXJldHVybltdO3U9 TWF0aC5hYnModSksZj1NYXRoLmFicyhmKTt2YXIgVD1NYXRoLnBvdyhfLDIpL01hdGgucG93 KHUsMikrTWF0aC5wb3codywyKS9NYXRoLnBvdyhmLDIpO1Q+MSYmKHUqPU1hdGguc3FydChU KSxmKj1NYXRoLnNxcnQoVCkpO3ZhciBrPWZ1bmN0aW9uKHQsZSxyLG4sYSxvLGwsYyx1LGYs aCxwKXt2YXIgZD1NYXRoLnBvdyhhLDIpLG09TWF0aC5wb3cobywyKSxnPU1hdGgucG93KGgs Miksdj1NYXRoLnBvdyhwLDIpLHk9ZCptLWQqdi1tKmc7eTwwJiYoeT0wKSx5Lz1kKnYrbSpn O3ZhciB4PSh5PU1hdGguc3FydCh5KSoobD09PWM/LTE6MSkpKmEvbypwLGI9eSotby9hKmgs Xz1mKngtdSpiKyh0K3IpLzIsdz11KngrZipiKyhlK24pLzIsVD0oaC14KS9hLGs9KHAtYikv byxBPSgtaC14KS9hLE09KC1wLWIpL28sUz1zKDEsMCxULGspLEU9cyhULGssQSxNKTtyZXR1 cm4gMD09PWMmJkU+MCYmKEUtPWkpLDE9PT1jJiZFPDAmJihFKz1pKSxbXyx3LFMsRV19KGUs cixsLGMsdSxmLG0sdix4LGIsXyx3KSxBPW4oayw0KSxNPUFbMF0sUz1BWzFdLEU9QVsyXSxM PUFbM10sQz1NYXRoLmFicyhMKS8oaS80KTtNYXRoLmFicygxLUMpPDFlLTcmJihDPTEpO3Zh ciBQPU1hdGgubWF4KE1hdGguY2VpbChDKSwxKTtMLz1QO2Zvcih2YXIgST0wO0k8UDtJKysp eS5wdXNoKG8oRSxMKSksRSs9TDtyZXR1cm4geS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPWEo dFswXSx1LGYsYix4LE0sUykscj1lLngsbj1lLnksaT1hKHRbMV0sdSxmLGIseCxNLFMpLG89 aS54LHM9aS55LGw9YSh0WzJdLHUsZixiLHgsTSxTKTtyZXR1cm57eDE6cix5MTpuLHgyOm8s eTI6cyx4OmwueCx5OmwueX19KSl9LGUuZXhwb3J0cz1yLmRlZmF1bHR9LHt9XSwzMDg6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgicGFyc2Utc3ZnLXBhdGgiKSxp PXQoImFicy1zdmctcGF0aCIpLGE9dCgibm9ybWFsaXplLXN2Zy1wYXRoIiksbz10KCJpcy1z dmctcGF0aCIpLHM9dCgiYXNzZXJ0Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe0FycmF5Lmlz QXJyYXkodCkmJjE9PT10Lmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiB0WzBdJiYodD10WzBd KTsic3RyaW5nIj09dHlwZW9mIHQmJihzKG8odCksIlN0cmluZyBpcyBub3QgYW4gU1ZHIHBh dGguIiksdD1uKHQpKTtpZihzKEFycmF5LmlzQXJyYXkodCksIkFyZ3VtZW50IHNob3VsZCBi ZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBwYXRoIHNlZ21lbnRzLiIpLHQ9aSh0KSwhKHQ9 YSh0KSkubGVuZ3RoKXJldHVyblswLDAsMCwwXTtmb3IodmFyIGU9WzEvMCwxLzAsLTEvMCwt MS8wXSxyPTAsbD10Lmxlbmd0aDtyPGw7cisrKWZvcih2YXIgYz10W3JdLnNsaWNlKDEpLHU9 MDt1PGMubGVuZ3RoO3UrPTIpY1t1KzBdPGVbMF0mJihlWzBdPWNbdSswXSksY1t1KzFdPGVb MV0mJihlWzFdPWNbdSsxXSksY1t1KzBdPmVbMl0mJihlWzJdPWNbdSswXSksY1t1KzFdPmVb M10mJihlWzNdPWNbdSsxXSk7cmV0dXJuIGV9fSx7ImFicy1zdmctcGF0aCI6NzAsYXNzZXJ0 Ojc1LCJpcy1zdmctcGF0aCI6MjM4LCJub3JtYWxpemUtc3ZnLXBhdGgiOjMwOSwicGFyc2Ut c3ZnLXBhdGgiOjI1MH1dLDMwOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4 cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9W10sbz0wLHM9MCxsPTAsYz0wLHU9bnVs bCxmPW51bGwsaD0wLHA9MCxkPTAsbT10Lmxlbmd0aDtkPG07ZCsrKXt2YXIgZz10W2RdLHY9 Z1swXTtzd2l0Y2godil7Y2FzZSJNIjpsPWdbMV0sYz1nWzJdO2JyZWFrO2Nhc2UiQSI6dmFy IHk9bih7cHg6aCxweTpwLGN4OmdbNl0sY3k6Z1s3XSxyeDpnWzFdLHJ5OmdbMl0seEF4aXNS b3RhdGlvbjpnWzNdLGxhcmdlQXJjRmxhZzpnWzRdLHN3ZWVwRmxhZzpnWzVdfSk7aWYoIXku bGVuZ3RoKWNvbnRpbnVlO2Zvcih2YXIgeCxiPTA7Yjx5Lmxlbmd0aDtiKyspeD15W2JdLGc9 WyJDIix4LngxLHgueTEseC54Mix4LnkyLHgueCx4LnldLGI8eS5sZW5ndGgtMSYmci5wdXNo KGcpO2JyZWFrO2Nhc2UiUyI6dmFyIF89aCx3PXA7IkMiIT1lJiYiUyIhPWV8fChfKz1fLW8s dys9dy1zKSxnPVsiQyIsXyx3LGdbMV0sZ1syXSxnWzNdLGdbNF1dO2JyZWFrO2Nhc2UiVCI6 IlEiPT1lfHwiVCI9PWU/KHU9MipoLXUsZj0yKnAtZik6KHU9aCxmPXApLGc9YShoLHAsdSxm LGdbMV0sZ1syXSk7YnJlYWs7Y2FzZSJRIjp1PWdbMV0sZj1nWzJdLGc9YShoLHAsZ1sxXSxn WzJdLGdbM10sZ1s0XSk7YnJlYWs7Y2FzZSJMIjpnPWkoaCxwLGdbMV0sZ1syXSk7YnJlYWs7 Y2FzZSJIIjpnPWkoaCxwLGdbMV0scCk7YnJlYWs7Y2FzZSJWIjpnPWkoaCxwLGgsZ1sxXSk7 YnJlYWs7Y2FzZSJaIjpnPWkoaCxwLGwsYyl9ZT12LGg9Z1tnLmxlbmd0aC0yXSxwPWdbZy5s ZW5ndGgtMV0sZy5sZW5ndGg+ND8obz1nW2cubGVuZ3RoLTRdLHM9Z1tnLmxlbmd0aC0zXSk6 KG89aCxzPXApLHIucHVzaChnKX1yZXR1cm4gcn07dmFyIG49dCgic3ZnLWFyYy10by1jdWJp Yy1iZXppZXIiKTtmdW5jdGlvbiBpKHQsZSxyLG4pe3JldHVyblsiQyIsdCxlLHIsbixyLG5d fWZ1bmN0aW9uIGEodCxlLHIsbixpLGEpe3JldHVyblsiQyIsdC8zKzIvMypyLGUvMysyLzMq bixpLzMrMi8zKnIsYS8zKzIvMypuLGksYV19fSx7InN2Zy1hcmMtdG8tY3ViaWMtYmV6aWVy IjozMDd9XSwzMTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG4saT10KCJz dmctcGF0aC1ib3VuZHMiKSxhPXQoInBhcnNlLXN2Zy1wYXRoIiksbz10KCJkcmF3LXN2Zy1w YXRoIikscz10KCJpcy1zdmctcGF0aCIpLGw9dCgiYml0bWFwLXNkZiIpLGM9ZG9jdW1lbnQu Y3JlYXRlRWxlbWVudCgiY2FudmFzIiksdT1jLmdldENvbnRleHQoIjJkIik7ZS5leHBvcnRz PWZ1bmN0aW9uKHQsZSl7aWYoIXModCkpdGhyb3cgRXJyb3IoIkFyZ3VtZW50IHNob3VsZCBi ZSB2YWxpZCBzdmcgcGF0aCBzdHJpbmciKTtlfHwoZT17fSk7dmFyIHIsZjtlLnNoYXBlPyhy PWUuc2hhcGVbMF0sZj1lLnNoYXBlWzFdKToocj1jLndpZHRoPWUud3x8ZS53aWR0aHx8MjAw LGY9Yy5oZWlnaHQ9ZS5ofHxlLmhlaWdodHx8MjAwKTt2YXIgaD1NYXRoLm1pbihyLGYpLHA9 ZS5zdHJva2V8fDAsZD1lLnZpZXdib3h8fGUudmlld0JveHx8aSh0KSxtPVtyLyhkWzJdLWRb MF0pLGYvKGRbM10tZFsxXSldLGc9TWF0aC5taW4obVswXXx8MCxtWzFdfHwwKS8yO3UuZmls bFN0eWxlPSJibGFjayIsdS5maWxsUmVjdCgwLDAscixmKSx1LmZpbGxTdHlsZT0id2hpdGUi LHAmJigibnVtYmVyIiE9dHlwZW9mIHAmJihwPTEpLHUuc3Ryb2tlU3R5bGU9cD4wPyJ3aGl0 ZSI6ImJsYWNrIix1LmxpbmVXaWR0aD1NYXRoLmFicyhwKSk7aWYodS50cmFuc2xhdGUoLjUq ciwuNSpmKSx1LnNjYWxlKGcsZyksZnVuY3Rpb24oKXtpZihudWxsIT1uKXJldHVybiBuO3Zh ciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIik7 aWYodC5jYW52YXMud2lkdGg9dC5jYW52YXMuaGVpZ2h0PTEsIXdpbmRvdy5QYXRoMkQpcmV0 dXJuIG49ITE7dmFyIGU9bmV3IFBhdGgyRCgiTTAsMGgxdjFoLTF2LTFaIik7dC5maWxsU3R5 bGU9ImJsYWNrIix0LmZpbGwoZSk7dmFyIHI9dC5nZXRJbWFnZURhdGEoMCwwLDEsMSk7cmV0 dXJuIG49ciYmci5kYXRhJiYyNTU9PT1yLmRhdGFbM119KCkpe3ZhciB2PW5ldyBQYXRoMkQo dCk7dS5maWxsKHYpLHAmJnUuc3Ryb2tlKHYpfWVsc2V7dmFyIHk9YSh0KTtvKHUseSksdS5m aWxsKCkscCYmdS5zdHJva2UoKX1yZXR1cm4gdS5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDAp LGwodSx7Y3V0b2ZmOm51bGwhPWUuY3V0b2ZmP2UuY3V0b2ZmOi41LHJhZGl1czpudWxsIT1l LnJhZGl1cz9lLnJhZGl1czouNSpofSl9fSx7ImJpdG1hcC1zZGYiOjgyLCJkcmF3LXN2Zy1w YXRoIjoxMjYsImlzLXN2Zy1wYXRoIjoyMzgsInBhcnNlLXN2Zy1wYXRoIjoyNTAsInN2Zy1w YXRoLWJvdW5kcyI6MzA4fV0sMzExOltmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKGUsbil7 KGZ1bmN0aW9uKCl7dmFyIGk9dCgicHJvY2Vzcy9icm93c2VyLmpzIikubmV4dFRpY2ssYT1G dW5jdGlvbi5wcm90b3R5cGUuYXBwbHksbz1BcnJheS5wcm90b3R5cGUuc2xpY2Uscz17fSxs PTA7ZnVuY3Rpb24gYyh0LGUpe3RoaXMuX2lkPXQsdGhpcy5fY2xlYXJGbj1lfXIuc2V0VGlt ZW91dD1mdW5jdGlvbigpe3JldHVybiBuZXcgYyhhLmNhbGwoc2V0VGltZW91dCx3aW5kb3cs YXJndW1lbnRzKSxjbGVhclRpbWVvdXQpfSxyLnNldEludGVydmFsPWZ1bmN0aW9uKCl7cmV0 dXJuIG5ldyBjKGEuY2FsbChzZXRJbnRlcnZhbCx3aW5kb3csYXJndW1lbnRzKSxjbGVhcklu dGVydmFsKX0sci5jbGVhclRpbWVvdXQ9ci5jbGVhckludGVydmFsPWZ1bmN0aW9uKHQpe3Qu Y2xvc2UoKX0sYy5wcm90b3R5cGUudW5yZWY9Yy5wcm90b3R5cGUucmVmPWZ1bmN0aW9uKCl7 fSxjLnByb3RvdHlwZS5jbG9zZT1mdW5jdGlvbigpe3RoaXMuX2NsZWFyRm4uY2FsbCh3aW5k b3csdGhpcy5faWQpfSxyLmVucm9sbD1mdW5jdGlvbih0LGUpe2NsZWFyVGltZW91dCh0Ll9p ZGxlVGltZW91dElkKSx0Ll9pZGxlVGltZW91dD1lfSxyLnVuZW5yb2xsPWZ1bmN0aW9uKHQp e2NsZWFyVGltZW91dCh0Ll9pZGxlVGltZW91dElkKSx0Ll9pZGxlVGltZW91dD0tMX0sci5f dW5yZWZBY3RpdmU9ci5hY3RpdmU9ZnVuY3Rpb24odCl7Y2xlYXJUaW1lb3V0KHQuX2lkbGVU aW1lb3V0SWQpO3ZhciBlPXQuX2lkbGVUaW1lb3V0O2U+PTAmJih0Ll9pZGxlVGltZW91dElk PXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5fb25UaW1lb3V0JiZ0Ll9vblRpbWVvdXQoKX0p LGUpKX0sci5zZXRJbW1lZGlhdGU9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpmdW5jdGlvbih0 KXt2YXIgZT1sKyssbj0hKGFyZ3VtZW50cy5sZW5ndGg8MikmJm8uY2FsbChhcmd1bWVudHMs MSk7cmV0dXJuIHNbZV09ITAsaSgoZnVuY3Rpb24oKXtzW2VdJiYobj90LmFwcGx5KG51bGws bik6dC5jYWxsKG51bGwpLHIuY2xlYXJJbW1lZGlhdGUoZSkpfSkpLGV9LHIuY2xlYXJJbW1l ZGlhdGU9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpmdW5jdGlvbih0KXtkZWxldGUgc1t0XX19 KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHQoInRpbWVycyIpLnNldEltbWVkaWF0ZSx0KCJ0 aW1lcnMiKS5jbGVhckltbWVkaWF0ZSl9LHsicHJvY2Vzcy9icm93c2VyLmpzIjoyNzcsdGlt ZXJzOjMxMX1dLDMxMjpbZnVuY3Rpb24odCxlLHIpeyFmdW5jdGlvbih0KXt2YXIgcj0vXlxz Ky8sbj0vXHMrJC8saT0wLGE9dC5yb3VuZCxvPXQubWluLHM9dC5tYXgsbD10LnJhbmRvbTtm dW5jdGlvbiBjKGUsbCl7aWYobD1sfHx7fSwoZT1lfHwiIilpbnN0YW5jZW9mIGMpcmV0dXJu IGU7aWYoISh0aGlzIGluc3RhbmNlb2YgYykpcmV0dXJuIG5ldyBjKGUsbCk7dmFyIHU9ZnVu Y3Rpb24oZSl7dmFyIGk9e3I6MCxnOjAsYjowfSxhPTEsbD1udWxsLGM9bnVsbCx1PW51bGws Zj0hMSxoPSExOyJzdHJpbmciPT10eXBlb2YgZSYmKGU9ZnVuY3Rpb24odCl7dD10LnJlcGxh Y2UociwiIikucmVwbGFjZShuLCIiKS50b0xvd2VyQ2FzZSgpO3ZhciBlLGk9ITE7aWYoU1t0 XSl0PVNbdF0saT0hMDtlbHNlIGlmKCJ0cmFuc3BhcmVudCI9PXQpcmV0dXJue3I6MCxnOjAs YjowLGE6MCxmb3JtYXQ6Im5hbWUifTtpZihlPWoucmdiLmV4ZWModCkpcmV0dXJue3I6ZVsx XSxnOmVbMl0sYjplWzNdfTtpZihlPWoucmdiYS5leGVjKHQpKXJldHVybntyOmVbMV0sZzpl WzJdLGI6ZVszXSxhOmVbNF19O2lmKGU9ai5oc2wuZXhlYyh0KSlyZXR1cm57aDplWzFdLHM6 ZVsyXSxsOmVbM119O2lmKGU9ai5oc2xhLmV4ZWModCkpcmV0dXJue2g6ZVsxXSxzOmVbMl0s bDplWzNdLGE6ZVs0XX07aWYoZT1qLmhzdi5leGVjKHQpKXJldHVybntoOmVbMV0sczplWzJd LHY6ZVszXX07aWYoZT1qLmhzdmEuZXhlYyh0KSlyZXR1cm57aDplWzFdLHM6ZVsyXSx2OmVb M10sYTplWzRdfTtpZihlPWouaGV4OC5leGVjKHQpKXJldHVybntyOkkoZVsxXSksZzpJKGVb Ml0pLGI6SShlWzNdKSxhOlIoZVs0XSksZm9ybWF0Omk/Im5hbWUiOiJoZXg4In07aWYoZT1q LmhleDYuZXhlYyh0KSlyZXR1cm57cjpJKGVbMV0pLGc6SShlWzJdKSxiOkkoZVszXSksZm9y bWF0Omk/Im5hbWUiOiJoZXgifTtpZihlPWouaGV4NC5leGVjKHQpKXJldHVybntyOkkoZVsx XSsiIitlWzFdKSxnOkkoZVsyXSsiIitlWzJdKSxiOkkoZVszXSsiIitlWzNdKSxhOlIoZVs0 XSsiIitlWzRdKSxmb3JtYXQ6aT8ibmFtZSI6ImhleDgifTtpZihlPWouaGV4My5leGVjKHQp KXJldHVybntyOkkoZVsxXSsiIitlWzFdKSxnOkkoZVsyXSsiIitlWzJdKSxiOkkoZVszXSsi IitlWzNdKSxmb3JtYXQ6aT8ibmFtZSI6ImhleCJ9O3JldHVybiExfShlKSk7Im9iamVjdCI9 PXR5cGVvZiBlJiYoVShlLnIpJiZVKGUuZykmJlUoZS5iKT8ocD1lLnIsZD1lLmcsbT1lLmIs aT17cjoyNTUqQyhwLDI1NSksZzoyNTUqQyhkLDI1NSksYjoyNTUqQyhtLDI1NSl9LGY9ITAs aD0iJSI9PT1TdHJpbmcoZS5yKS5zdWJzdHIoLTEpPyJwcmdiIjoicmdiIik6VShlLmgpJiZV KGUucykmJlUoZS52KT8obD16KGUucyksYz16KGUudiksaT1mdW5jdGlvbihlLHIsbil7ZT02 KkMoZSwzNjApLHI9QyhyLDEwMCksbj1DKG4sMTAwKTt2YXIgaT10LmZsb29yKGUpLGE9ZS1p LG89biooMS1yKSxzPW4qKDEtYSpyKSxsPW4qKDEtKDEtYSkqciksYz1pJTY7cmV0dXJue3I6 MjU1KltuLHMsbyxvLGwsbl1bY10sZzoyNTUqW2wsbixuLHMsbyxvXVtjXSxiOjI1NSpbbyxv LGwsbixuLHNdW2NdfX0oZS5oLGwsYyksZj0hMCxoPSJoc3YiKTpVKGUuaCkmJlUoZS5zKSYm VShlLmwpJiYobD16KGUucyksdT16KGUubCksaT1mdW5jdGlvbih0LGUscil7dmFyIG4saSxh O2Z1bmN0aW9uIG8odCxlLHIpe3JldHVybiByPDAmJihyKz0xKSxyPjEmJihyLT0xKSxyPDEv Nj90KzYqKGUtdCkqcjpyPC41P2U6cjwyLzM/dCsoZS10KSooMi8zLXIpKjY6dH1pZih0PUMo dCwzNjApLGU9QyhlLDEwMCkscj1DKHIsMTAwKSwwPT09ZSluPWk9YT1yO2Vsc2V7dmFyIHM9 cjwuNT9yKigxK2UpOnIrZS1yKmUsbD0yKnItcztuPW8obCxzLHQrMS8zKSxpPW8obCxzLHQp LGE9byhsLHMsdC0xLzMpfXJldHVybntyOjI1NSpuLGc6MjU1KmksYjoyNTUqYX19KGUuaCxs LHUpLGY9ITAsaD0iaHNsIiksZS5oYXNPd25Qcm9wZXJ0eSgiYSIpJiYoYT1lLmEpKTt2YXIg cCxkLG07cmV0dXJuIGE9TChhKSx7b2s6Zixmb3JtYXQ6ZS5mb3JtYXR8fGgscjpvKDI1NSxz KGkuciwwKSksZzpvKDI1NSxzKGkuZywwKSksYjpvKDI1NSxzKGkuYiwwKSksYTphfX0oZSk7 dGhpcy5fb3JpZ2luYWxJbnB1dD1lLHRoaXMuX3I9dS5yLHRoaXMuX2c9dS5nLHRoaXMuX2I9 dS5iLHRoaXMuX2E9dS5hLHRoaXMuX3JvdW5kQT1hKDEwMCp0aGlzLl9hKS8xMDAsdGhpcy5f Zm9ybWF0PWwuZm9ybWF0fHx1LmZvcm1hdCx0aGlzLl9ncmFkaWVudFR5cGU9bC5ncmFkaWVu dFR5cGUsdGhpcy5fcjwxJiYodGhpcy5fcj1hKHRoaXMuX3IpKSx0aGlzLl9nPDEmJih0aGlz Ll9nPWEodGhpcy5fZykpLHRoaXMuX2I8MSYmKHRoaXMuX2I9YSh0aGlzLl9iKSksdGhpcy5f b2s9dS5vayx0aGlzLl90Y19pZD1pKyt9ZnVuY3Rpb24gdSh0LGUscil7dD1DKHQsMjU1KSxl PUMoZSwyNTUpLHI9QyhyLDI1NSk7dmFyIG4saSxhPXModCxlLHIpLGw9byh0LGUsciksYz0o YStsKS8yO2lmKGE9PWwpbj1pPTA7ZWxzZXt2YXIgdT1hLWw7c3dpdGNoKGk9Yz4uNT91Lygy LWEtbCk6dS8oYStsKSxhKXtjYXNlIHQ6bj0oZS1yKS91KyhlPHI/NjowKTticmVhaztjYXNl IGU6bj0oci10KS91KzI7YnJlYWs7Y2FzZSByOm49KHQtZSkvdSs0fW4vPTZ9cmV0dXJue2g6 bixzOmksbDpjfX1mdW5jdGlvbiBmKHQsZSxyKXt0PUModCwyNTUpLGU9QyhlLDI1NSkscj1D KHIsMjU1KTt2YXIgbixpLGE9cyh0LGUsciksbD1vKHQsZSxyKSxjPWEsdT1hLWw7aWYoaT0w PT09YT8wOnUvYSxhPT1sKW49MDtlbHNle3N3aXRjaChhKXtjYXNlIHQ6bj0oZS1yKS91Kyhl PHI/NjowKTticmVhaztjYXNlIGU6bj0oci10KS91KzI7YnJlYWs7Y2FzZSByOm49KHQtZSkv dSs0fW4vPTZ9cmV0dXJue2g6bixzOmksdjpjfX1mdW5jdGlvbiBoKHQsZSxyLG4pe3ZhciBp PVtPKGEodCkudG9TdHJpbmcoMTYpKSxPKGEoZSkudG9TdHJpbmcoMTYpKSxPKGEocikudG9T dHJpbmcoMTYpKV07cmV0dXJuIG4mJmlbMF0uY2hhckF0KDApPT1pWzBdLmNoYXJBdCgxKSYm aVsxXS5jaGFyQXQoMCk9PWlbMV0uY2hhckF0KDEpJiZpWzJdLmNoYXJBdCgwKT09aVsyXS5j aGFyQXQoMSk/aVswXS5jaGFyQXQoMCkraVsxXS5jaGFyQXQoMCkraVsyXS5jaGFyQXQoMCk6 aS5qb2luKCIiKX1mdW5jdGlvbiBwKHQsZSxyLG4pe3JldHVybltPKEQobikpLE8oYSh0KS50 b1N0cmluZygxNikpLE8oYShlKS50b1N0cmluZygxNikpLE8oYShyKS50b1N0cmluZygxNikp XS5qb2luKCIiKX1mdW5jdGlvbiBkKHQsZSl7ZT0wPT09ZT8wOmV8fDEwO3ZhciByPWModCku dG9Ic2woKTtyZXR1cm4gci5zLT1lLzEwMCxyLnM9UChyLnMpLGMocil9ZnVuY3Rpb24gbSh0 LGUpe2U9MD09PWU/MDplfHwxMDt2YXIgcj1jKHQpLnRvSHNsKCk7cmV0dXJuIHIucys9ZS8x MDAsci5zPVAoci5zKSxjKHIpfWZ1bmN0aW9uIGcodCl7cmV0dXJuIGModCkuZGVzYXR1cmF0 ZSgxMDApfWZ1bmN0aW9uIHYodCxlKXtlPTA9PT1lPzA6ZXx8MTA7dmFyIHI9Yyh0KS50b0hz bCgpO3JldHVybiByLmwrPWUvMTAwLHIubD1QKHIubCksYyhyKX1mdW5jdGlvbiB5KHQsZSl7 ZT0wPT09ZT8wOmV8fDEwO3ZhciByPWModCkudG9SZ2IoKTtyZXR1cm4gci5yPXMoMCxvKDI1 NSxyLnItYSgtZS8xMDAqMjU1KSkpLHIuZz1zKDAsbygyNTUsci5nLWEoLWUvMTAwKjI1NSkp KSxyLmI9cygwLG8oMjU1LHIuYi1hKC1lLzEwMCoyNTUpKSksYyhyKX1mdW5jdGlvbiB4KHQs ZSl7ZT0wPT09ZT8wOmV8fDEwO3ZhciByPWModCkudG9Ic2woKTtyZXR1cm4gci5sLT1lLzEw MCxyLmw9UChyLmwpLGMocil9ZnVuY3Rpb24gYih0LGUpe3ZhciByPWModCkudG9Ic2woKSxu PShyLmgrZSklMzYwO3JldHVybiByLmg9bjwwPzM2MCtuOm4sYyhyKX1mdW5jdGlvbiBfKHQp e3ZhciBlPWModCkudG9Ic2woKTtyZXR1cm4gZS5oPShlLmgrMTgwKSUzNjAsYyhlKX1mdW5j dGlvbiB3KHQpe3ZhciBlPWModCkudG9Ic2woKSxyPWUuaDtyZXR1cm5bYyh0KSxjKHtoOihy KzEyMCklMzYwLHM6ZS5zLGw6ZS5sfSksYyh7aDoocisyNDApJTM2MCxzOmUucyxsOmUubH0p XX1mdW5jdGlvbiBUKHQpe3ZhciBlPWModCkudG9Ic2woKSxyPWUuaDtyZXR1cm5bYyh0KSxj KHtoOihyKzkwKSUzNjAsczplLnMsbDplLmx9KSxjKHtoOihyKzE4MCklMzYwLHM6ZS5zLGw6 ZS5sfSksYyh7aDoocisyNzApJTM2MCxzOmUucyxsOmUubH0pXX1mdW5jdGlvbiBrKHQpe3Zh ciBlPWModCkudG9Ic2woKSxyPWUuaDtyZXR1cm5bYyh0KSxjKHtoOihyKzcyKSUzNjAsczpl LnMsbDplLmx9KSxjKHtoOihyKzIxNiklMzYwLHM6ZS5zLGw6ZS5sfSldfWZ1bmN0aW9uIEEo dCxlLHIpe2U9ZXx8NixyPXJ8fDMwO3ZhciBuPWModCkudG9Ic2woKSxpPTM2MC9yLGE9W2Mo dCldO2ZvcihuLmg9KG4uaC0oaSplPj4xKSs3MjApJTM2MDstLWU7KW4uaD0obi5oK2kpJTM2 MCxhLnB1c2goYyhuKSk7cmV0dXJuIGF9ZnVuY3Rpb24gTSh0LGUpe2U9ZXx8Njtmb3IodmFy IHI9Yyh0KS50b0hzdigpLG49ci5oLGk9ci5zLGE9ci52LG89W10scz0xL2U7ZS0tOylvLnB1 c2goYyh7aDpuLHM6aSx2OmF9KSksYT0oYStzKSUxO3JldHVybiBvfWMucHJvdG90eXBlPXtp c0Rhcms6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCcmlnaHRuZXNzKCk8MTI4fSxpc0xp Z2h0OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNEYXJrKCl9LGlzVmFsaWQ6ZnVuY3Rpb24o KXtyZXR1cm4gdGhpcy5fb2t9LGdldE9yaWdpbmFsSW5wdXQ6ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5fb3JpZ2luYWxJbnB1dH0sZ2V0Rm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu X2Zvcm1hdH0sZ2V0QWxwaGE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYX0sZ2V0QnJpZ2h0 bmVzczpmdW5jdGlvbigpe3ZhciB0PXRoaXMudG9SZ2IoKTtyZXR1cm4oMjk5KnQucis1ODcq dC5nKzExNCp0LmIpLzFlM30sZ2V0THVtaW5hbmNlOmZ1bmN0aW9uKCl7dmFyIGUscixuLGk9 dGhpcy50b1JnYigpO3JldHVybiBlPWkuci8yNTUscj1pLmcvMjU1LG49aS5iLzI1NSwuMjEy NiooZTw9LjAzOTI4P2UvMTIuOTI6dC5wb3coKGUrLjA1NSkvMS4wNTUsMi40KSkrLjcxNTIq KHI8PS4wMzkyOD9yLzEyLjkyOnQucG93KChyKy4wNTUpLzEuMDU1LDIuNCkpKy4wNzIyKihu PD0uMDM5Mjg/bi8xMi45Mjp0LnBvdygobisuMDU1KS8xLjA1NSwyLjQpKX0sc2V0QWxwaGE6 ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2E9TCh0KSx0aGlzLl9yb3VuZEE9YSgxMDAqdGhp cy5fYSkvMTAwLHRoaXN9LHRvSHN2OmZ1bmN0aW9uKCl7dmFyIHQ9Zih0aGlzLl9yLHRoaXMu X2csdGhpcy5fYik7cmV0dXJue2g6MzYwKnQuaCxzOnQucyx2OnQudixhOnRoaXMuX2F9fSx0 b0hzdlN0cmluZzpmdW5jdGlvbigpe3ZhciB0PWYodGhpcy5fcix0aGlzLl9nLHRoaXMuX2Ip LGU9YSgzNjAqdC5oKSxyPWEoMTAwKnQucyksbj1hKDEwMCp0LnYpO3JldHVybiAxPT10aGlz Ll9hPyJoc3YoIitlKyIsICIrcisiJSwgIituKyIlKSI6ImhzdmEoIitlKyIsICIrcisiJSwg IituKyIlLCAiK3RoaXMuX3JvdW5kQSsiKSJ9LHRvSHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dSh0 aGlzLl9yLHRoaXMuX2csdGhpcy5fYik7cmV0dXJue2g6MzYwKnQuaCxzOnQucyxsOnQubCxh OnRoaXMuX2F9fSx0b0hzbFN0cmluZzpmdW5jdGlvbigpe3ZhciB0PXUodGhpcy5fcix0aGlz Ll9nLHRoaXMuX2IpLGU9YSgzNjAqdC5oKSxyPWEoMTAwKnQucyksbj1hKDEwMCp0LmwpO3Jl dHVybiAxPT10aGlzLl9hPyJoc2woIitlKyIsICIrcisiJSwgIituKyIlKSI6ImhzbGEoIitl KyIsICIrcisiJSwgIituKyIlLCAiK3RoaXMuX3JvdW5kQSsiKSJ9LHRvSGV4OmZ1bmN0aW9u KHQpe3JldHVybiBoKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iLHQpfSx0b0hleFN0cmluZzpm dW5jdGlvbih0KXtyZXR1cm4iIyIrdGhpcy50b0hleCh0KX0sdG9IZXg4OmZ1bmN0aW9uKHQp e3JldHVybiBmdW5jdGlvbih0LGUscixuLGkpe3ZhciBvPVtPKGEodCkudG9TdHJpbmcoMTYp KSxPKGEoZSkudG9TdHJpbmcoMTYpKSxPKGEocikudG9TdHJpbmcoMTYpKSxPKEQobikpXTtp ZihpJiZvWzBdLmNoYXJBdCgwKT09b1swXS5jaGFyQXQoMSkmJm9bMV0uY2hhckF0KDApPT1v WzFdLmNoYXJBdCgxKSYmb1syXS5jaGFyQXQoMCk9PW9bMl0uY2hhckF0KDEpJiZvWzNdLmNo YXJBdCgwKT09b1szXS5jaGFyQXQoMSkpcmV0dXJuIG9bMF0uY2hhckF0KDApK29bMV0uY2hh ckF0KDApK29bMl0uY2hhckF0KDApK29bM10uY2hhckF0KDApO3JldHVybiBvLmpvaW4oIiIp fSh0aGlzLl9yLHRoaXMuX2csdGhpcy5fYix0aGlzLl9hLHQpfSx0b0hleDhTdHJpbmc6ZnVu Y3Rpb24odCl7cmV0dXJuIiMiK3RoaXMudG9IZXg4KHQpfSx0b1JnYjpmdW5jdGlvbigpe3Jl dHVybntyOmEodGhpcy5fciksZzphKHRoaXMuX2cpLGI6YSh0aGlzLl9iKSxhOnRoaXMuX2F9 fSx0b1JnYlN0cmluZzpmdW5jdGlvbigpe3JldHVybiAxPT10aGlzLl9hPyJyZ2IoIithKHRo aXMuX3IpKyIsICIrYSh0aGlzLl9nKSsiLCAiK2EodGhpcy5fYikrIikiOiJyZ2JhKCIrYSh0 aGlzLl9yKSsiLCAiK2EodGhpcy5fZykrIiwgIithKHRoaXMuX2IpKyIsICIrdGhpcy5fcm91 bmRBKyIpIn0sdG9QZXJjZW50YWdlUmdiOmZ1bmN0aW9uKCl7cmV0dXJue3I6YSgxMDAqQyh0 aGlzLl9yLDI1NSkpKyIlIixnOmEoMTAwKkModGhpcy5fZywyNTUpKSsiJSIsYjphKDEwMCpD KHRoaXMuX2IsMjU1KSkrIiUiLGE6dGhpcy5fYX19LHRvUGVyY2VudGFnZVJnYlN0cmluZzpm dW5jdGlvbigpe3JldHVybiAxPT10aGlzLl9hPyJyZ2IoIithKDEwMCpDKHRoaXMuX3IsMjU1 KSkrIiUsICIrYSgxMDAqQyh0aGlzLl9nLDI1NSkpKyIlLCAiK2EoMTAwKkModGhpcy5fYiwy NTUpKSsiJSkiOiJyZ2JhKCIrYSgxMDAqQyh0aGlzLl9yLDI1NSkpKyIlLCAiK2EoMTAwKkMo dGhpcy5fZywyNTUpKSsiJSwgIithKDEwMCpDKHRoaXMuX2IsMjU1KSkrIiUsICIrdGhpcy5f cm91bmRBKyIpIn0sdG9OYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLl9hPyJ0cmFu c3BhcmVudCI6ISh0aGlzLl9hPDEpJiYoRVtoKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iLCEw KV18fCExKX0sdG9GaWx0ZXI6ZnVuY3Rpb24odCl7dmFyIGU9IiMiK3AodGhpcy5fcix0aGlz Ll9nLHRoaXMuX2IsdGhpcy5fYSkscj1lLG49dGhpcy5fZ3JhZGllbnRUeXBlPyJHcmFkaWVu dFR5cGUgPSAxLCAiOiIiO2lmKHQpe3ZhciBpPWModCk7cj0iIyIrcChpLl9yLGkuX2csaS5f YixpLl9hKX1yZXR1cm4icHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRp ZW50KCIrbisic3RhcnRDb2xvcnN0cj0iK2UrIixlbmRDb2xvcnN0cj0iK3IrIikifSx0b1N0 cmluZzpmdW5jdGlvbih0KXt2YXIgZT0hIXQ7dD10fHx0aGlzLl9mb3JtYXQ7dmFyIHI9ITEs bj10aGlzLl9hPDEmJnRoaXMuX2E+PTA7cmV0dXJuIGV8fCFufHwiaGV4IiE9PXQmJiJoZXg2 IiE9PXQmJiJoZXgzIiE9PXQmJiJoZXg0IiE9PXQmJiJoZXg4IiE9PXQmJiJuYW1lIiE9PXQ/ KCJyZ2IiPT09dCYmKHI9dGhpcy50b1JnYlN0cmluZygpKSwicHJnYiI9PT10JiYocj10aGlz LnRvUGVyY2VudGFnZVJnYlN0cmluZygpKSwiaGV4IiE9PXQmJiJoZXg2IiE9PXR8fChyPXRo aXMudG9IZXhTdHJpbmcoKSksImhleDMiPT09dCYmKHI9dGhpcy50b0hleFN0cmluZyghMCkp LCJoZXg0Ij09PXQmJihyPXRoaXMudG9IZXg4U3RyaW5nKCEwKSksImhleDgiPT09dCYmKHI9 dGhpcy50b0hleDhTdHJpbmcoKSksIm5hbWUiPT09dCYmKHI9dGhpcy50b05hbWUoKSksImhz bCI9PT10JiYocj10aGlzLnRvSHNsU3RyaW5nKCkpLCJoc3YiPT09dCYmKHI9dGhpcy50b0hz dlN0cmluZygpKSxyfHx0aGlzLnRvSGV4U3RyaW5nKCkpOiJuYW1lIj09PXQmJjA9PT10aGlz Ll9hP3RoaXMudG9OYW1lKCk6dGhpcy50b1JnYlN0cmluZygpfSxjbG9uZTpmdW5jdGlvbigp e3JldHVybiBjKHRoaXMudG9TdHJpbmcoKSl9LF9hcHBseU1vZGlmaWNhdGlvbjpmdW5jdGlv bih0LGUpe3ZhciByPXQuYXBwbHkobnVsbCxbdGhpc10uY29uY2F0KFtdLnNsaWNlLmNhbGwo ZSkpKTtyZXR1cm4gdGhpcy5fcj1yLl9yLHRoaXMuX2c9ci5fZyx0aGlzLl9iPXIuX2IsdGhp cy5zZXRBbHBoYShyLl9hKSx0aGlzfSxsaWdodGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu X2FwcGx5TW9kaWZpY2F0aW9uKHYsYXJndW1lbnRzKX0sYnJpZ2h0ZW46ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24oeSxhcmd1bWVudHMpfSxkYXJrZW46ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2RpZmljYXRpb24oeCxhcmd1bWVudHMpfSxk ZXNhdHVyYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKGQs YXJndW1lbnRzKX0sc2F0dXJhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlNb2Rp ZmljYXRpb24obSxhcmd1bWVudHMpfSxncmV5c2NhbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy5fYXBwbHlNb2RpZmljYXRpb24oZyxhcmd1bWVudHMpfSxzcGluOmZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKGIsYXJndW1lbnRzKX0sX2FwcGx5Q29tYmlu YXRpb246ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5hcHBseShudWxsLFt0aGlzXS5jb25jYXQo W10uc2xpY2UuY2FsbChlKSkpfSxhbmFsb2dvdXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f YXBwbHlDb21iaW5hdGlvbihBLGFyZ3VtZW50cyl9LGNvbXBsZW1lbnQ6ZnVuY3Rpb24oKXty ZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbihfLGFyZ3VtZW50cyl9LG1vbm9jaHJvbWF0 aWM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbihNLGFyZ3VtZW50 cyl9LHNwbGl0Y29tcGxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJp bmF0aW9uKGssYXJndW1lbnRzKX0sdHJpYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBw bHlDb21iaW5hdGlvbih3LGFyZ3VtZW50cyl9LHRldHJhZDpmdW5jdGlvbigpe3JldHVybiB0 aGlzLl9hcHBseUNvbWJpbmF0aW9uKFQsYXJndW1lbnRzKX19LGMuZnJvbVJhdGlvPWZ1bmN0 aW9uKHQsZSl7aWYoIm9iamVjdCI9PXR5cGVvZiB0KXt2YXIgcj17fTtmb3IodmFyIG4gaW4g dCl0Lmhhc093blByb3BlcnR5KG4pJiYocltuXT0iYSI9PT1uP3Rbbl06eih0W25dKSk7dD1y fXJldHVybiBjKHQsZSl9LGMuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuISghdHx8IWUp JiZjKHQpLnRvUmdiU3RyaW5nKCk9PWMoZSkudG9SZ2JTdHJpbmcoKX0sYy5yYW5kb209ZnVu Y3Rpb24oKXtyZXR1cm4gYy5mcm9tUmF0aW8oe3I6bCgpLGc6bCgpLGI6bCgpfSl9LGMubWl4 PWZ1bmN0aW9uKHQsZSxyKXtyPTA9PT1yPzA6cnx8NTA7dmFyIG49Yyh0KS50b1JnYigpLGk9 YyhlKS50b1JnYigpLGE9ci8xMDA7cmV0dXJuIGMoe3I6KGkuci1uLnIpKmErbi5yLGc6KGku Zy1uLmcpKmErbi5nLGI6KGkuYi1uLmIpKmErbi5iLGE6KGkuYS1uLmEpKmErbi5hfSl9LGMu cmVhZGFiaWxpdHk9ZnVuY3Rpb24oZSxyKXt2YXIgbj1jKGUpLGk9YyhyKTtyZXR1cm4odC5t YXgobi5nZXRMdW1pbmFuY2UoKSxpLmdldEx1bWluYW5jZSgpKSsuMDUpLyh0Lm1pbihuLmdl dEx1bWluYW5jZSgpLGkuZ2V0THVtaW5hbmNlKCkpKy4wNSl9LGMuaXNSZWFkYWJsZT1mdW5j dGlvbih0LGUscil7dmFyIG4saSxhPWMucmVhZGFiaWxpdHkodCxlKTtzd2l0Y2goaT0hMSwo bj1mdW5jdGlvbih0KXt2YXIgZSxyO2U9KCh0PXR8fHtsZXZlbDoiQUEiLHNpemU6InNtYWxs In0pLmxldmVsfHwiQUEiKS50b1VwcGVyQ2FzZSgpLHI9KHQuc2l6ZXx8InNtYWxsIikudG9M b3dlckNhc2UoKSwiQUEiIT09ZSYmIkFBQSIhPT1lJiYoZT0iQUEiKTsic21hbGwiIT09ciYm ImxhcmdlIiE9PXImJihyPSJzbWFsbCIpO3JldHVybntsZXZlbDplLHNpemU6cn19KHIpKS5s ZXZlbCtuLnNpemUpe2Nhc2UiQUFzbWFsbCI6Y2FzZSJBQUFsYXJnZSI6aT1hPj00LjU7YnJl YWs7Y2FzZSJBQWxhcmdlIjppPWE+PTM7YnJlYWs7Y2FzZSJBQUFzbWFsbCI6aT1hPj03fXJl dHVybiBpfSxjLm1vc3RSZWFkYWJsZT1mdW5jdGlvbih0LGUscil7dmFyIG4saSxhLG8scz1u dWxsLGw9MDtpPShyPXJ8fHt9KS5pbmNsdWRlRmFsbGJhY2tDb2xvcnMsYT1yLmxldmVsLG89 ci5zaXplO2Zvcih2YXIgdT0wO3U8ZS5sZW5ndGg7dSsrKShuPWMucmVhZGFiaWxpdHkodCxl W3VdKSk+bCYmKGw9bixzPWMoZVt1XSkpO3JldHVybiBjLmlzUmVhZGFibGUodCxzLHtsZXZl bDphLHNpemU6b30pfHwhaT9zOihyLmluY2x1ZGVGYWxsYmFja0NvbG9ycz0hMSxjLm1vc3RS ZWFkYWJsZSh0LFsiI2ZmZiIsIiMwMDAiXSxyKSl9O3ZhciBTPWMubmFtZXM9e2FsaWNlYmx1 ZToiZjBmOGZmIixhbnRpcXVld2hpdGU6ImZhZWJkNyIsYXF1YToiMGZmIixhcXVhbWFyaW5l OiI3ZmZmZDQiLGF6dXJlOiJmMGZmZmYiLGJlaWdlOiJmNWY1ZGMiLGJpc3F1ZToiZmZlNGM0 IixibGFjazoiMDAwIixibGFuY2hlZGFsbW9uZDoiZmZlYmNkIixibHVlOiIwMGYiLGJsdWV2 aW9sZXQ6IjhhMmJlMiIsYnJvd246ImE1MmEyYSIsYnVybHl3b29kOiJkZWI4ODciLGJ1cm50 c2llbm5hOiJlYTdlNWQiLGNhZGV0Ymx1ZToiNWY5ZWEwIixjaGFydHJldXNlOiI3ZmZmMDAi LGNob2NvbGF0ZToiZDI2OTFlIixjb3JhbDoiZmY3ZjUwIixjb3JuZmxvd2VyYmx1ZToiNjQ5 NWVkIixjb3Juc2lsazoiZmZmOGRjIixjcmltc29uOiJkYzE0M2MiLGN5YW46IjBmZiIsZGFy a2JsdWU6IjAwMDA4YiIsZGFya2N5YW46IjAwOGI4YiIsZGFya2dvbGRlbnJvZDoiYjg4NjBi IixkYXJrZ3JheToiYTlhOWE5IixkYXJrZ3JlZW46IjAwNjQwMCIsZGFya2dyZXk6ImE5YTlh OSIsZGFya2toYWtpOiJiZGI3NmIiLGRhcmttYWdlbnRhOiI4YjAwOGIiLGRhcmtvbGl2ZWdy ZWVuOiI1NTZiMmYiLGRhcmtvcmFuZ2U6ImZmOGMwMCIsZGFya29yY2hpZDoiOTkzMmNjIixk YXJrcmVkOiI4YjAwMDAiLGRhcmtzYWxtb246ImU5OTY3YSIsZGFya3NlYWdyZWVuOiI4ZmJj OGYiLGRhcmtzbGF0ZWJsdWU6IjQ4M2Q4YiIsZGFya3NsYXRlZ3JheToiMmY0ZjRmIixkYXJr c2xhdGVncmV5OiIyZjRmNGYiLGRhcmt0dXJxdW9pc2U6IjAwY2VkMSIsZGFya3Zpb2xldDoi OTQwMGQzIixkZWVwcGluazoiZmYxNDkzIixkZWVwc2t5Ymx1ZToiMDBiZmZmIixkaW1ncmF5 OiI2OTY5NjkiLGRpbWdyZXk6IjY5Njk2OSIsZG9kZ2VyYmx1ZToiMWU5MGZmIixmaXJlYnJp Y2s6ImIyMjIyMiIsZmxvcmFsd2hpdGU6ImZmZmFmMCIsZm9yZXN0Z3JlZW46IjIyOGIyMiIs ZnVjaHNpYToiZjBmIixnYWluc2Jvcm86ImRjZGNkYyIsZ2hvc3R3aGl0ZToiZjhmOGZmIixn b2xkOiJmZmQ3MDAiLGdvbGRlbnJvZDoiZGFhNTIwIixncmF5OiI4MDgwODAiLGdyZWVuOiIw MDgwMDAiLGdyZWVueWVsbG93OiJhZGZmMmYiLGdyZXk6IjgwODA4MCIsaG9uZXlkZXc6ImYw ZmZmMCIsaG90cGluazoiZmY2OWI0IixpbmRpYW5yZWQ6ImNkNWM1YyIsaW5kaWdvOiI0YjAw ODIiLGl2b3J5OiJmZmZmZjAiLGtoYWtpOiJmMGU2OGMiLGxhdmVuZGVyOiJlNmU2ZmEiLGxh dmVuZGVyYmx1c2g6ImZmZjBmNSIsbGF3bmdyZWVuOiI3Y2ZjMDAiLGxlbW9uY2hpZmZvbjoi ZmZmYWNkIixsaWdodGJsdWU6ImFkZDhlNiIsbGlnaHRjb3JhbDoiZjA4MDgwIixsaWdodGN5 YW46ImUwZmZmZiIsbGlnaHRnb2xkZW5yb2R5ZWxsb3c6ImZhZmFkMiIsbGlnaHRncmF5OiJk M2QzZDMiLGxpZ2h0Z3JlZW46IjkwZWU5MCIsbGlnaHRncmV5OiJkM2QzZDMiLGxpZ2h0cGlu azoiZmZiNmMxIixsaWdodHNhbG1vbjoiZmZhMDdhIixsaWdodHNlYWdyZWVuOiIyMGIyYWEi LGxpZ2h0c2t5Ymx1ZToiODdjZWZhIixsaWdodHNsYXRlZ3JheToiNzg5IixsaWdodHNsYXRl Z3JleToiNzg5IixsaWdodHN0ZWVsYmx1ZToiYjBjNGRlIixsaWdodHllbGxvdzoiZmZmZmUw IixsaW1lOiIwZjAiLGxpbWVncmVlbjoiMzJjZDMyIixsaW5lbjoiZmFmMGU2IixtYWdlbnRh OiJmMGYiLG1hcm9vbjoiODAwMDAwIixtZWRpdW1hcXVhbWFyaW5lOiI2NmNkYWEiLG1lZGl1 bWJsdWU6IjAwMDBjZCIsbWVkaXVtb3JjaGlkOiJiYTU1ZDMiLG1lZGl1bXB1cnBsZToiOTM3 MGRiIixtZWRpdW1zZWFncmVlbjoiM2NiMzcxIixtZWRpdW1zbGF0ZWJsdWU6IjdiNjhlZSIs bWVkaXVtc3ByaW5nZ3JlZW46IjAwZmE5YSIsbWVkaXVtdHVycXVvaXNlOiI0OGQxY2MiLG1l ZGl1bXZpb2xldHJlZDoiYzcxNTg1IixtaWRuaWdodGJsdWU6IjE5MTk3MCIsbWludGNyZWFt OiJmNWZmZmEiLG1pc3R5cm9zZToiZmZlNGUxIixtb2NjYXNpbjoiZmZlNGI1IixuYXZham93 aGl0ZToiZmZkZWFkIixuYXZ5OiIwMDAwODAiLG9sZGxhY2U6ImZkZjVlNiIsb2xpdmU6Ijgw ODAwMCIsb2xpdmVkcmFiOiI2YjhlMjMiLG9yYW5nZToiZmZhNTAwIixvcmFuZ2VyZWQ6ImZm NDUwMCIsb3JjaGlkOiJkYTcwZDYiLHBhbGVnb2xkZW5yb2Q6ImVlZThhYSIscGFsZWdyZWVu OiI5OGZiOTgiLHBhbGV0dXJxdW9pc2U6ImFmZWVlZSIscGFsZXZpb2xldHJlZDoiZGI3MDkz IixwYXBheWF3aGlwOiJmZmVmZDUiLHBlYWNocHVmZjoiZmZkYWI5IixwZXJ1OiJjZDg1M2Yi LHBpbms6ImZmYzBjYiIscGx1bToiZGRhMGRkIixwb3dkZXJibHVlOiJiMGUwZTYiLHB1cnBs ZToiODAwMDgwIixyZWJlY2NhcHVycGxlOiI2NjMzOTkiLHJlZDoiZjAwIixyb3N5YnJvd246 ImJjOGY4ZiIscm95YWxibHVlOiI0MTY5ZTEiLHNhZGRsZWJyb3duOiI4YjQ1MTMiLHNhbG1v bjoiZmE4MDcyIixzYW5keWJyb3duOiJmNGE0NjAiLHNlYWdyZWVuOiIyZThiNTciLHNlYXNo ZWxsOiJmZmY1ZWUiLHNpZW5uYToiYTA1MjJkIixzaWx2ZXI6ImMwYzBjMCIsc2t5Ymx1ZToi ODdjZWViIixzbGF0ZWJsdWU6IjZhNWFjZCIsc2xhdGVncmF5OiI3MDgwOTAiLHNsYXRlZ3Jl eToiNzA4MDkwIixzbm93OiJmZmZhZmEiLHNwcmluZ2dyZWVuOiIwMGZmN2YiLHN0ZWVsYmx1 ZToiNDY4MmI0Iix0YW46ImQyYjQ4YyIsdGVhbDoiMDA4MDgwIix0aGlzdGxlOiJkOGJmZDgi LHRvbWF0bzoiZmY2MzQ3Iix0dXJxdW9pc2U6IjQwZTBkMCIsdmlvbGV0OiJlZTgyZWUiLHdo ZWF0OiJmNWRlYjMiLHdoaXRlOiJmZmYiLHdoaXRlc21va2U6ImY1ZjVmNSIseWVsbG93OiJm ZjAiLHllbGxvd2dyZWVuOiI5YWNkMzIifSxFPWMuaGV4TmFtZXM9ZnVuY3Rpb24odCl7dmFy IGU9e307Zm9yKHZhciByIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShyKSYmKGVbdFtyXV09cik7 cmV0dXJuIGV9KFMpO2Z1bmN0aW9uIEwodCl7cmV0dXJuIHQ9cGFyc2VGbG9hdCh0KSwoaXNO YU4odCl8fHQ8MHx8dD4xKSYmKHQ9MSksdH1mdW5jdGlvbiBDKGUscil7KGZ1bmN0aW9uKHQp e3JldHVybiJzdHJpbmciPT10eXBlb2YgdCYmLTEhPXQuaW5kZXhPZigiLiIpJiYxPT09cGFy c2VGbG9hdCh0KX0pKGUpJiYoZT0iMTAwJSIpO3ZhciBuPWZ1bmN0aW9uKHQpe3JldHVybiJz dHJpbmciPT10eXBlb2YgdCYmLTEhPXQuaW5kZXhPZigiJSIpfShlKTtyZXR1cm4gZT1vKHIs cygwLHBhcnNlRmxvYXQoZSkpKSxuJiYoZT1wYXJzZUludChlKnIsMTApLzEwMCksdC5hYnMo ZS1yKTwxZS02PzE6ZSVyL3BhcnNlRmxvYXQocil9ZnVuY3Rpb24gUCh0KXtyZXR1cm4gbygx LHMoMCx0KSl9ZnVuY3Rpb24gSSh0KXtyZXR1cm4gcGFyc2VJbnQodCwxNil9ZnVuY3Rpb24g Tyh0KXtyZXR1cm4gMT09dC5sZW5ndGg/IjAiK3Q6IiIrdH1mdW5jdGlvbiB6KHQpe3JldHVy biB0PD0xJiYodD0xMDAqdCsiJSIpLHR9ZnVuY3Rpb24gRChlKXtyZXR1cm4gdC5yb3VuZCgy NTUqcGFyc2VGbG9hdChlKSkudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIFIodCl7cmV0dXJuIEko dCkvMjU1fXZhciBGLEIsTixqPShCPSJbXFxzfFxcKF0rKCIrKEY9Iig/OlstXFwrXT9cXGQq XFwuXFxkKyU/KXwoPzpbLVxcK10/XFxkKyU/KSIpKyIpWyx8XFxzXSsoIitGKyIpWyx8XFxz XSsoIitGKyIpXFxzKlxcKT8iLE49IltcXHN8XFwoXSsoIitGKyIpWyx8XFxzXSsoIitGKyIp Wyx8XFxzXSsoIitGKyIpWyx8XFxzXSsoIitGKyIpXFxzKlxcKT8iLHtDU1NfVU5JVDpuZXcg UmVnRXhwKEYpLHJnYjpuZXcgUmVnRXhwKCJyZ2IiK0IpLHJnYmE6bmV3IFJlZ0V4cCgicmdi YSIrTiksaHNsOm5ldyBSZWdFeHAoImhzbCIrQiksaHNsYTpuZXcgUmVnRXhwKCJoc2xhIitO KSxoc3Y6bmV3IFJlZ0V4cCgiaHN2IitCKSxoc3ZhOm5ldyBSZWdFeHAoImhzdmEiK04pLGhl eDM6L14jPyhbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9 KSQvLGhleDY6L14jPyhbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZB LUZdezJ9KSQvLGhleDQ6L14jPyhbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pKFsw LTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkkLyxoZXg4Oi9eIz8oWzAtOWEtZkEtRl17 Mn0pKFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pJC99 KTtmdW5jdGlvbiBVKHQpe3JldHVybiEhai5DU1NfVU5JVC5leGVjKHQpfXZvaWQgMCE9PWUm JmUuZXhwb3J0cz9lLmV4cG9ydHM9Yzp3aW5kb3cudGlueWNvbG9yPWN9KE1hdGgpfSx7fV0s MzEzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1pLGUuZXhwb3J0 cy5mbG9hdDMyPWUuZXhwb3J0cy5mbG9hdD1pLGUuZXhwb3J0cy5mcmFjdDMyPWUuZXhwb3J0 cy5mcmFjdD1mdW5jdGlvbih0LGUpe2lmKHQubGVuZ3RoKXtpZih0IGluc3RhbmNlb2YgRmxv YXQzMkFycmF5KXJldHVybiBuZXcgRmxvYXQzMkFycmF5KHQubGVuZ3RoKTtlIGluc3RhbmNl b2YgRmxvYXQzMkFycmF5fHwoZT1pKHQpKTtmb3IodmFyIHI9MCxuPWUubGVuZ3RoO3I8bjty KyspZVtyXT10W3JdLWVbcl07cmV0dXJuIGV9cmV0dXJuIGkodC1pKHQpKX07dmFyIG49bmV3 IEZsb2F0MzJBcnJheSgxKTtmdW5jdGlvbiBpKHQpe3JldHVybiB0Lmxlbmd0aD90IGluc3Rh bmNlb2YgRmxvYXQzMkFycmF5P3Q6bmV3IEZsb2F0MzJBcnJheSh0KTooblswXT10LG5bMF0p fX0se31dLDMxNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJwYXJz ZS11bml0Iik7ZS5leHBvcnRzPWE7ZnVuY3Rpb24gaSh0LGUpe3ZhciByPW4oZ2V0Q29tcHV0 ZWRTdHlsZSh0KS5nZXRQcm9wZXJ0eVZhbHVlKGUpKTtyZXR1cm4gclswXSphKHJbMV0sdCl9 ZnVuY3Rpb24gYSh0LGUpe3N3aXRjaChlPWV8fGRvY3VtZW50LmJvZHksdD0odHx8InB4Iiku dHJpbSgpLnRvTG93ZXJDYXNlKCksZSE9PXdpbmRvdyYmZSE9PWRvY3VtZW50fHwoZT1kb2N1 bWVudC5ib2R5KSx0KXtjYXNlIiUiOnJldHVybiBlLmNsaWVudEhlaWdodC8xMDA7Y2FzZSJj aCI6Y2FzZSJleCI6cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZG9jdW1lbnQuY3JlYXRl RWxlbWVudCgiZGl2Iik7ci5zdHlsZVsiZm9udC1zaXplIl09IjEyOCIrdCxlLmFwcGVuZENo aWxkKHIpO3ZhciBuPWkociwiZm9udC1zaXplIikvMTI4O3JldHVybiBlLnJlbW92ZUNoaWxk KHIpLG59KHQsZSk7Y2FzZSJlbSI6cmV0dXJuIGkoZSwiZm9udC1zaXplIik7Y2FzZSJyZW0i OnJldHVybiBpKGRvY3VtZW50LmJvZHksImZvbnQtc2l6ZSIpO2Nhc2UidnciOnJldHVybiB3 aW5kb3cuaW5uZXJXaWR0aC8xMDA7Y2FzZSJ2aCI6cmV0dXJuIHdpbmRvdy5pbm5lckhlaWdo dC8xMDA7Y2FzZSJ2bWluIjpyZXR1cm4gTWF0aC5taW4od2luZG93LmlubmVyV2lkdGgsd2lu ZG93LmlubmVySGVpZ2h0KS8xMDA7Y2FzZSJ2bWF4IjpyZXR1cm4gTWF0aC5tYXgod2luZG93 LmlubmVyV2lkdGgsd2luZG93LmlubmVySGVpZ2h0KS8xMDA7Y2FzZSJpbiI6cmV0dXJuIDk2 O2Nhc2UiY20iOnJldHVybiA5Ni8yLjU0O2Nhc2UibW0iOnJldHVybiA5Ni8yNS40O2Nhc2Ui cHQiOnJldHVybiA5Ni83MjtjYXNlInBjIjpyZXR1cm4gMTZ9cmV0dXJuIDF9fSx7InBhcnNl LXVuaXQiOjI1MX1dLDMxNTpbZnVuY3Rpb24odCxlLHIpeyFmdW5jdGlvbih0LG4peyJvYmpl Y3QiPT10eXBlb2YgciYmdm9pZCAwIT09ZT9uKHIpOm4oKHQ9dHx8c2VsZikudG9wb2pzb249 dC50b3BvanNvbnx8e30pfSh0aGlzLChmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7ZnVuY3Rp b24gZSh0KXtyZXR1cm4gdH1mdW5jdGlvbiByKHQpe2lmKG51bGw9PXQpcmV0dXJuIGU7dmFy IHIsbixpPXQuc2NhbGVbMF0sYT10LnNjYWxlWzFdLG89dC50cmFuc2xhdGVbMF0scz10LnRy YW5zbGF0ZVsxXTtyZXR1cm4gZnVuY3Rpb24odCxlKXtlfHwocj1uPTApO3ZhciBsPTIsYz10 Lmxlbmd0aCx1PW5ldyBBcnJheShjKTtmb3IodVswXT0ocis9dFswXSkqaStvLHVbMV09KG4r PXRbMV0pKmErcztsPGM7KXVbbF09dFtsXSwrK2w7cmV0dXJuIHV9fWZ1bmN0aW9uIG4odCl7 dmFyIGUsbj1yKHQudHJhbnNmb3JtKSxpPTEvMCxhPWksbz0taSxzPS1pO2Z1bmN0aW9uIGwo dCl7KHQ9bih0KSlbMF08aSYmKGk9dFswXSksdFswXT5vJiYobz10WzBdKSx0WzFdPGEmJihh PXRbMV0pLHRbMV0+cyYmKHM9dFsxXSl9ZnVuY3Rpb24gYyh0KXtzd2l0Y2godC50eXBlKXtj YXNlIkdlb21ldHJ5Q29sbGVjdGlvbiI6dC5nZW9tZXRyaWVzLmZvckVhY2goYyk7YnJlYWs7 Y2FzZSJQb2ludCI6bCh0LmNvb3JkaW5hdGVzKTticmVhaztjYXNlIk11bHRpUG9pbnQiOnQu Y29vcmRpbmF0ZXMuZm9yRWFjaChsKX19Zm9yKGUgaW4gdC5hcmNzLmZvckVhY2goKGZ1bmN0 aW9uKHQpe2Zvcih2YXIgZSxyPS0xLGw9dC5sZW5ndGg7KytyPGw7KShlPW4odFtyXSxyKSlb MF08aSYmKGk9ZVswXSksZVswXT5vJiYobz1lWzBdKSxlWzFdPGEmJihhPWVbMV0pLGVbMV0+ cyYmKHM9ZVsxXSl9KSksdC5vYmplY3RzKWModC5vYmplY3RzW2VdKTtyZXR1cm5baSxhLG8s c119ZnVuY3Rpb24gaSh0LGUpe3ZhciByPWUuaWQsbj1lLmJib3gsaT1udWxsPT1lLnByb3Bl cnRpZXM/e306ZS5wcm9wZXJ0aWVzLG89YSh0LGUpO3JldHVybiBudWxsPT1yJiZudWxsPT1u P3t0eXBlOiJGZWF0dXJlIixwcm9wZXJ0aWVzOmksZ2VvbWV0cnk6b306bnVsbD09bj97dHlw ZToiRmVhdHVyZSIsaWQ6cixwcm9wZXJ0aWVzOmksZ2VvbWV0cnk6b306e3R5cGU6IkZlYXR1 cmUiLGlkOnIsYmJveDpuLHByb3BlcnRpZXM6aSxnZW9tZXRyeTpvfX1mdW5jdGlvbiBhKHQs ZSl7dmFyIG49cih0LnRyYW5zZm9ybSksaT10LmFyY3M7ZnVuY3Rpb24gYSh0LGUpe2UubGVu Z3RoJiZlLnBvcCgpO2Zvcih2YXIgcj1pW3Q8MD9+dDp0XSxhPTAsbz1yLmxlbmd0aDthPG87 KythKWUucHVzaChuKHJbYV0sYSkpO3Q8MCYmZnVuY3Rpb24odCxlKXtmb3IodmFyIHIsbj10 Lmxlbmd0aCxpPW4tZTtpPC0tbjspcj10W2ldLHRbaSsrXT10W25dLHRbbl09cn0oZSxvKX1m dW5jdGlvbiBvKHQpe3JldHVybiBuKHQpfWZ1bmN0aW9uIHModCl7Zm9yKHZhciBlPVtdLHI9 MCxuPXQubGVuZ3RoO3I8bjsrK3IpYSh0W3JdLGUpO3JldHVybiBlLmxlbmd0aDwyJiZlLnB1 c2goZVswXSksZX1mdW5jdGlvbiBsKHQpe2Zvcih2YXIgZT1zKHQpO2UubGVuZ3RoPDQ7KWUu cHVzaChlWzBdKTtyZXR1cm4gZX1mdW5jdGlvbiBjKHQpe3JldHVybiB0Lm1hcChsKX1yZXR1 cm4gZnVuY3Rpb24gdChlKXt2YXIgcixuPWUudHlwZTtzd2l0Y2gobil7Y2FzZSJHZW9tZXRy eUNvbGxlY3Rpb24iOnJldHVybnt0eXBlOm4sZ2VvbWV0cmllczplLmdlb21ldHJpZXMubWFw KHQpfTtjYXNlIlBvaW50IjpyPW8oZS5jb29yZGluYXRlcyk7YnJlYWs7Y2FzZSJNdWx0aVBv aW50IjpyPWUuY29vcmRpbmF0ZXMubWFwKG8pO2JyZWFrO2Nhc2UiTGluZVN0cmluZyI6cj1z KGUuYXJjcyk7YnJlYWs7Y2FzZSJNdWx0aUxpbmVTdHJpbmciOnI9ZS5hcmNzLm1hcChzKTti cmVhaztjYXNlIlBvbHlnb24iOnI9YyhlLmFyY3MpO2JyZWFrO2Nhc2UiTXVsdGlQb2x5Z29u IjpyPWUuYXJjcy5tYXAoYyk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gbnVsbH1yZXR1cm57dHlw ZTpuLGNvb3JkaW5hdGVzOnJ9fShlKX1mdW5jdGlvbiBvKHQsZSl7dmFyIHI9e30sbj17fSxp PXt9LGE9W10sbz0tMTtmdW5jdGlvbiBzKHQsZSl7Zm9yKHZhciBuIGluIHQpe3ZhciBpPXRb bl07ZGVsZXRlIGVbaS5zdGFydF0sZGVsZXRlIGkuc3RhcnQsZGVsZXRlIGkuZW5kLGkuZm9y RWFjaCgoZnVuY3Rpb24odCl7clt0PDA/fnQ6dF09MX0pKSxhLnB1c2goaSl9fXJldHVybiBl LmZvckVhY2goKGZ1bmN0aW9uKHIsbil7dmFyIGksYT10LmFyY3NbcjwwP35yOnJdO2EubGVu Z3RoPDMmJiFhWzFdWzBdJiYhYVsxXVsxXSYmKGk9ZVsrK29dLGVbb109cixlW25dPWkpfSkp LGUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHIsYSxvPWZ1bmN0aW9uKGUpe3ZhciByLG49 dC5hcmNzW2U8MD9+ZTplXSxpPW5bMF07dC50cmFuc2Zvcm0/KHI9WzAsMF0sbi5mb3JFYWNo KChmdW5jdGlvbih0KXtyWzBdKz10WzBdLHJbMV0rPXRbMV19KSkpOnI9bltuLmxlbmd0aC0x XTtyZXR1cm4gZTwwP1tyLGldOltpLHJdfShlKSxzPW9bMF0sbD1vWzFdO2lmKHI9aVtzXSlp ZihkZWxldGUgaVtyLmVuZF0sci5wdXNoKGUpLHIuZW5kPWwsYT1uW2xdKXtkZWxldGUgblth LnN0YXJ0XTt2YXIgYz1hPT09cj9yOnIuY29uY2F0KGEpO25bYy5zdGFydD1yLnN0YXJ0XT1p W2MuZW5kPWEuZW5kXT1jfWVsc2UgbltyLnN0YXJ0XT1pW3IuZW5kXT1yO2Vsc2UgaWYocj1u W2xdKWlmKGRlbGV0ZSBuW3Iuc3RhcnRdLHIudW5zaGlmdChlKSxyLnN0YXJ0PXMsYT1pW3Nd KXtkZWxldGUgaVthLmVuZF07dmFyIHU9YT09PXI/cjphLmNvbmNhdChyKTtuW3Uuc3RhcnQ9 YS5zdGFydF09aVt1LmVuZD1yLmVuZF09dX1lbHNlIG5bci5zdGFydF09aVtyLmVuZF09cjtl bHNlIG5bKHI9W2VdKS5zdGFydD1zXT1pW3IuZW5kPWxdPXJ9KSkscyhpLG4pLHMobixpKSxl LmZvckVhY2goKGZ1bmN0aW9uKHQpe3JbdDwwP350OnRdfHxhLnB1c2goW3RdKX0pKSxhfWZ1 bmN0aW9uIHModCxlLHIpe3ZhciBuLGksYTtpZihhcmd1bWVudHMubGVuZ3RoPjEpbj1sKHQs ZSxyKTtlbHNlIGZvcihpPTAsbj1uZXcgQXJyYXkoYT10LmFyY3MubGVuZ3RoKTtpPGE7Kytp KW5baV09aTtyZXR1cm57dHlwZToiTXVsdGlMaW5lU3RyaW5nIixhcmNzOm8odCxuKX19ZnVu Y3Rpb24gbCh0LGUscil7dmFyIG4saT1bXSxhPVtdO2Z1bmN0aW9uIG8odCl7dmFyIGU9dDww P350OnQ7KGFbZV18fChhW2VdPVtdKSkucHVzaCh7aTp0LGc6bn0pfWZ1bmN0aW9uIHModCl7 dC5mb3JFYWNoKG8pfWZ1bmN0aW9uIGwodCl7dC5mb3JFYWNoKHMpfXJldHVybiBmdW5jdGlv biB0KGUpe3N3aXRjaChuPWUsZS50eXBlKXtjYXNlIkdlb21ldHJ5Q29sbGVjdGlvbiI6ZS5n ZW9tZXRyaWVzLmZvckVhY2godCk7YnJlYWs7Y2FzZSJMaW5lU3RyaW5nIjpzKGUuYXJjcyk7 YnJlYWs7Y2FzZSJNdWx0aUxpbmVTdHJpbmciOmNhc2UiUG9seWdvbiI6bChlLmFyY3MpO2Jy ZWFrO2Nhc2UiTXVsdGlQb2x5Z29uIjohZnVuY3Rpb24odCl7dC5mb3JFYWNoKGwpfShlLmFy Y3MpfX0oZSksYS5mb3JFYWNoKG51bGw9PXI/ZnVuY3Rpb24odCl7aS5wdXNoKHRbMF0uaSl9 OmZ1bmN0aW9uKHQpe3IodFswXS5nLHRbdC5sZW5ndGgtMV0uZykmJmkucHVzaCh0WzBdLmkp fSksaX1mdW5jdGlvbiBjKHQsZSl7dmFyIHI9e30sbj1bXSxpPVtdO2Z1bmN0aW9uIHModCl7 dC5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmZvckVhY2goKGZ1bmN0aW9uKGUpeyhyW2U9ZTww P35lOmVdfHwocltlXT1bXSkpLnB1c2godCl9KSl9KSksbi5wdXNoKHQpfWZ1bmN0aW9uIGwo ZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyPS0xLG49dC5sZW5ndGgsaT10W24t MV0sYT0wOysrcjxuOyllPWksaT10W3JdLGErPWVbMF0qaVsxXS1lWzFdKmlbMF07cmV0dXJu IE1hdGguYWJzKGEpfShhKHQse3R5cGU6IlBvbHlnb24iLGFyY3M6W2VdfSkuY29vcmRpbmF0 ZXNbMF0pfXJldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uIHQoZSl7c3dpdGNoKGUudHlwZSl7 Y2FzZSJHZW9tZXRyeUNvbGxlY3Rpb24iOmUuZ2VvbWV0cmllcy5mb3JFYWNoKHQpO2JyZWFr O2Nhc2UiUG9seWdvbiI6cyhlLmFyY3MpO2JyZWFrO2Nhc2UiTXVsdGlQb2x5Z29uIjplLmFy Y3MuZm9yRWFjaChzKX19KSksbi5mb3JFYWNoKChmdW5jdGlvbih0KXtpZighdC5fKXt2YXIg ZT1bXSxuPVt0XTtmb3IodC5fPTEsaS5wdXNoKGUpO3Q9bi5wb3AoKTspZS5wdXNoKHQpLHQu Zm9yRWFjaCgoZnVuY3Rpb24odCl7dC5mb3JFYWNoKChmdW5jdGlvbih0KXtyW3Q8MD9+dDp0 XS5mb3JFYWNoKChmdW5jdGlvbih0KXt0Ll98fCh0Ll89MSxuLnB1c2godCkpfSkpfSkpfSkp fX0pKSxuLmZvckVhY2goKGZ1bmN0aW9uKHQpe2RlbGV0ZSB0Ll99KSkse3R5cGU6Ik11bHRp UG9seWdvbiIsYXJjczppLm1hcCgoZnVuY3Rpb24oZSl7dmFyIG4saT1bXTtpZihlLmZvckVh Y2goKGZ1bmN0aW9uKHQpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5mb3JFYWNoKChmdW5j dGlvbih0KXtyW3Q8MD9+dDp0XS5sZW5ndGg8MiYmaS5wdXNoKHQpfSkpfSkpfSkpLChuPShp PW8odCxpKSkubGVuZ3RoKT4xKWZvcih2YXIgYSxzLGM9MSx1PWwoaVswXSk7YzxuOysrYyko YT1sKGlbY10pKT51JiYocz1pWzBdLGlbMF09aVtjXSxpW2NdPXMsdT1hKTtyZXR1cm4gaX0p KS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aD4wfSkpfX1mdW5jdGlvbiB1 KHQsZSl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aDtyPG47KXt2YXIgaT1yK24+Pj4xO3RbaV08 ZT9yPWkrMTpuPWl9cmV0dXJuIHJ9ZnVuY3Rpb24gZih0KXtpZihudWxsPT10KXJldHVybiBl O3ZhciByLG4saT10LnNjYWxlWzBdLGE9dC5zY2FsZVsxXSxvPXQudHJhbnNsYXRlWzBdLHM9 dC50cmFuc2xhdGVbMV07cmV0dXJuIGZ1bmN0aW9uKHQsZSl7ZXx8KHI9bj0wKTt2YXIgbD0y LGM9dC5sZW5ndGgsdT1uZXcgQXJyYXkoYyksZj1NYXRoLnJvdW5kKCh0WzBdLW8pL2kpLGg9 TWF0aC5yb3VuZCgodFsxXS1zKS9hKTtmb3IodVswXT1mLXIscj1mLHVbMV09aC1uLG49aDts PGM7KXVbbF09dFtsXSwrK2w7cmV0dXJuIHV9fXQuYmJveD1uLHQuZmVhdHVyZT1mdW5jdGlv bih0LGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmKGU9dC5vYmplY3RzW2VdKSwiR2Vv bWV0cnlDb2xsZWN0aW9uIj09PWUudHlwZT97dHlwZToiRmVhdHVyZUNvbGxlY3Rpb24iLGZl YXR1cmVzOmUuZ2VvbWV0cmllcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBpKHQsZSl9KSl9 OmkodCxlKX0sdC5tZXJnZT1mdW5jdGlvbih0KXtyZXR1cm4gYSh0LGMuYXBwbHkodGhpcyxh cmd1bWVudHMpKX0sdC5tZXJnZUFyY3M9Yyx0Lm1lc2g9ZnVuY3Rpb24odCl7cmV0dXJuIGEo dCxzLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LHQubWVzaEFyY3M9cyx0Lm5laWdoYm9ycz1m dW5jdGlvbih0KXt2YXIgZT17fSxyPXQubWFwKChmdW5jdGlvbigpe3JldHVybltdfSkpO2Z1 bmN0aW9uIG4odCxyKXt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3Q8MCYmKHQ9fnQpO3ZhciBu PWVbdF07bj9uLnB1c2gocik6ZVt0XT1bcl19KSl9ZnVuY3Rpb24gaSh0LGUpe3QuZm9yRWFj aCgoZnVuY3Rpb24odCl7bih0LGUpfSkpfXZhciBhPXtMaW5lU3RyaW5nOm4sTXVsdGlMaW5l U3RyaW5nOmksUG9seWdvbjppLE11bHRpUG9seWdvbjpmdW5jdGlvbih0LGUpe3QuZm9yRWFj aCgoZnVuY3Rpb24odCl7aSh0LGUpfSkpfX07Zm9yKHZhciBvIGluIHQuZm9yRWFjaCgoZnVu Y3Rpb24gdChlLHIpeyJHZW9tZXRyeUNvbGxlY3Rpb24iPT09ZS50eXBlP2UuZ2VvbWV0cmll cy5mb3JFYWNoKChmdW5jdGlvbihlKXt0KGUscil9KSk6ZS50eXBlIGluIGEmJmFbZS50eXBl XShlLmFyY3Mscil9KSksZSlmb3IodmFyIHM9ZVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7Kytj KWZvcih2YXIgZj1jKzE7ZjxsOysrZil7dmFyIGgscD1zW2NdLGQ9c1tmXTsoaD1yW3BdKVtv PXUoaCxkKV0hPT1kJiZoLnNwbGljZShvLDAsZCksKGg9cltkXSlbbz11KGgscCldIT09cCYm aC5zcGxpY2UobywwLHApfXJldHVybiByfSx0LnF1YW50aXplPWZ1bmN0aW9uKHQsZSl7aWYo dC50cmFuc2Zvcm0pdGhyb3cgbmV3IEVycm9yKCJhbHJlYWR5IHF1YW50aXplZCIpO2lmKGUm JmUuc2NhbGUpbD10LmJib3g7ZWxzZXtpZighKChyPU1hdGguZmxvb3IoZSkpPj0yKSl0aHJv dyBuZXcgRXJyb3IoIm4gbXVzdCBiZSBcdTIyNjUyIik7dmFyIHIsaT0obD10LmJib3h8fG4o dCkpWzBdLGE9bFsxXSxvPWxbMl0scz1sWzNdO2U9e3NjYWxlOltvLWk/KG8taSkvKHItMSk6 MSxzLWE/KHMtYSkvKHItMSk6MV0sdHJhbnNsYXRlOltpLGFdfX12YXIgbCxjLHU9ZihlKSxo PXQub2JqZWN0cyxwPXt9O2Z1bmN0aW9uIGQodCl7cmV0dXJuIHUodCl9ZnVuY3Rpb24gbSh0 KXt2YXIgZTtzd2l0Y2godC50eXBlKXtjYXNlIkdlb21ldHJ5Q29sbGVjdGlvbiI6ZT17dHlw ZToiR2VvbWV0cnlDb2xsZWN0aW9uIixnZW9tZXRyaWVzOnQuZ2VvbWV0cmllcy5tYXAobSl9 O2JyZWFrO2Nhc2UiUG9pbnQiOmU9e3R5cGU6IlBvaW50Iixjb29yZGluYXRlczpkKHQuY29v cmRpbmF0ZXMpfTticmVhaztjYXNlIk11bHRpUG9pbnQiOmU9e3R5cGU6Ik11bHRpUG9pbnQi LGNvb3JkaW5hdGVzOnQuY29vcmRpbmF0ZXMubWFwKGQpfTticmVhaztkZWZhdWx0OnJldHVy biB0fXJldHVybiBudWxsIT10LmlkJiYoZS5pZD10LmlkKSxudWxsIT10LmJib3gmJihlLmJi b3g9dC5iYm94KSxudWxsIT10LnByb3BlcnRpZXMmJihlLnByb3BlcnRpZXM9dC5wcm9wZXJ0 aWVzKSxlfWZvcihjIGluIGgpcFtjXT1tKGhbY10pO3JldHVybnt0eXBlOiJUb3BvbG9neSIs YmJveDpsLHRyYW5zZm9ybTplLG9iamVjdHM6cCxhcmNzOnQuYXJjcy5tYXAoKGZ1bmN0aW9u KHQpe3ZhciBlLHI9MCxuPTEsaT10Lmxlbmd0aCxhPW5ldyBBcnJheShpKTtmb3IoYVswXT11 KHRbMF0sMCk7KytyPGk7KSgoZT11KHRbcl0scikpWzBdfHxlWzFdKSYmKGFbbisrXT1lKTty ZXR1cm4gMT09PW4mJihhW24rK109WzAsMF0pLGEubGVuZ3RoPW4sYX0pKX19LHQudHJhbnNm b3JtPXIsdC51bnRyYW5zZm9ybT1mLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9k dWxlIix7dmFsdWU6ITB9KX0pKX0se31dLDMxNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj10KCIuLi9wcm90b3R5cGUvaXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7 aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpcmV0dXJuITE7aWYoIWhhc093blByb3BlcnR5LmNh bGwodCwibGVuZ3RoIikpcmV0dXJuITE7dHJ5e2lmKCJudW1iZXIiIT10eXBlb2YgdC5sZW5n dGgpcmV0dXJuITE7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQuY2FsbClyZXR1cm4hMTtpZigi ZnVuY3Rpb24iIT10eXBlb2YgdC5hcHBseSlyZXR1cm4hMX1jYXRjaCh0KXtyZXR1cm4hMX1y ZXR1cm4hbih0KX19LHsiLi4vcHJvdG90eXBlL2lzIjozMjN9XSwzMTc6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vdmFsdWUvaXMiKSxpPXQoIi4uL29iamVj dC9pcyIpLGE9dCgiLi4vc3RyaW5nL2NvZXJjZSIpLG89dCgiLi90by1zaG9ydC1zdHJpbmci KSxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQucmVwbGFjZSgiJXYiLG8oZSkpfTtlLmV4cG9y dHM9ZnVuY3Rpb24odCxlLHIpe2lmKCFpKHIpKXRocm93IG5ldyBUeXBlRXJyb3IocyhlLHQp KTtpZighbih0KSl7aWYoImRlZmF1bHQiaW4gcilyZXR1cm4gci5kZWZhdWx0O2lmKHIuaXNP cHRpb25hbClyZXR1cm4gbnVsbH12YXIgbz1hKHIuZXJyb3JNZXNzYWdlKTt0aHJvdyBuKG8p fHwobz1lKSxuZXcgVHlwZUVycm9yKHMobyx0KSl9fSx7Ii4uL29iamVjdC9pcyI6MzIwLCIu Li9zdHJpbmcvY29lcmNlIjozMjQsIi4uL3ZhbHVlL2lzIjozMjYsIi4vdG8tc2hvcnQtc3Ry aW5nIjozMTl9XSwzMTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRz PWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdC50b1N0cmluZygpfWNhdGNoKGUpe3RyeXtyZXR1 cm4gU3RyaW5nKHQpfWNhdGNoKHQpe3JldHVybiBudWxsfX19fSx7fV0sMzE5OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vc2FmZS10by1zdHJpbmciKSxpPS9b XG5cclx1MjAyOFx1MjAyOV0vZztlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9bih0KTty ZXR1cm4gbnVsbD09PWU/IjxOb24tY29lcmNpYmxlIHRvIHN0cmluZyB2YWx1ZT4iOihlLmxl bmd0aD4xMDAmJihlPWUuc2xpY2UoMCw5OSkrIlx1MjAyNiIpLGU9ZS5yZXBsYWNlKGksKGZ1 bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIlxuIjpyZXR1cm4iXFxuIjtjYXNlIlxyIjpyZXR1 cm4iXFxyIjtjYXNlIlx1MjAyOCI6cmV0dXJuIlxcdTIwMjgiO2Nhc2UiXHUyMDI5IjpyZXR1 cm4iXFx1MjAyOSI7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgY2hhcmFj dGVyIil9fSkpKX19LHsiLi9zYWZlLXRvLXN0cmluZyI6MzE4fV0sMzIwOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3ZhbHVlL2lzIiksaT17b2JqZWN0OiEw LGZ1bmN0aW9uOiEwLHVuZGVmaW5lZDohMH07ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVy biEhbih0KSYmaGFzT3duUHJvcGVydHkuY2FsbChpLHR5cGVvZiB0KX19LHsiLi4vdmFsdWUv aXMiOjMyNn1dLDMyMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIu Li9saWIvcmVzb2x2ZS1leGNlcHRpb24iKSxpPXQoIi4vaXMiKTtlLmV4cG9ydHM9ZnVuY3Rp b24odCl7cmV0dXJuIGkodCk/dDpuKHQsIiV2IGlzIG5vdCBhIHBsYWluIGZ1bmN0aW9uIixh cmd1bWVudHNbMV0pfX0seyIuLi9saWIvcmVzb2x2ZS1leGNlcHRpb24iOjMxNywiLi9pcyI6 MzIyfV0sMzIyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2Z1 bmN0aW9uL2lzIiksaT0vXlxzKmNsYXNzW1xzey99XS8sYT1GdW5jdGlvbi5wcm90b3R5cGUu dG9TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiEhbih0KSYmIWkudGVzdChh LmNhbGwodCkpfX0seyIuLi9mdW5jdGlvbi9pcyI6MzE2fV0sMzIzOltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL29iamVjdC9pcyIpO2UuZXhwb3J0cz1mdW5j dGlvbih0KXtpZighbih0KSlyZXR1cm4hMTt0cnl7cmV0dXJuISF0LmNvbnN0cnVjdG9yJiZ0 LmNvbnN0cnVjdG9yLnByb3RvdHlwZT09PXR9Y2F0Y2godCl7cmV0dXJuITF9fX0seyIuLi9v YmplY3QvaXMiOjMyMH1dLDMyNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCIuLi92YWx1ZS9pcyIpLGk9dCgiLi4vb2JqZWN0L2lzIiksYT1PYmplY3QucHJvdG90 eXBlLnRvU3RyaW5nO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtpZighbih0KSlyZXR1cm4gbnVs bDtpZihpKHQpKXt2YXIgZT10LnRvU3RyaW5nO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXJl dHVybiBudWxsO2lmKGU9PT1hKXJldHVybiBudWxsfXRyeXtyZXR1cm4iIit0fWNhdGNoKHQp e3JldHVybiBudWxsfX19LHsiLi4vb2JqZWN0L2lzIjozMjAsIi4uL3ZhbHVlL2lzIjozMjZ9 XSwzMjU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vbGliL3Jl c29sdmUtZXhjZXB0aW9uIiksaT10KCIuL2lzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3Jl dHVybiBpKHQpP3Q6bih0LCJDYW5ub3QgdXNlICV2Iixhcmd1bWVudHNbMV0pfX0seyIuLi9s aWIvcmVzb2x2ZS1leGNlcHRpb24iOjMxNywiLi9pcyI6MzI2fV0sMzI2OltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9 dH19LHt9XSwzMjc6W2Z1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSl7KGZ1bmN0aW9uKCl7 InVzZSBzdHJpY3QiO3ZhciBuPXQoImJpdC10d2lkZGxlIiksaT10KCJkdXAiKSxhPXQoImJ1 ZmZlciIpLkJ1ZmZlcjtlLl9fVFlQRURBUlJBWV9QT09MfHwoZS5fX1RZUEVEQVJSQVlfUE9P TD17VUlOVDg6aShbMzIsMF0pLFVJTlQxNjppKFszMiwwXSksVUlOVDMyOmkoWzMyLDBdKSxC SUdVSU5UNjQ6aShbMzIsMF0pLElOVDg6aShbMzIsMF0pLElOVDE2OmkoWzMyLDBdKSxJTlQz MjppKFszMiwwXSksQklHSU5UNjQ6aShbMzIsMF0pLEZMT0FUOmkoWzMyLDBdKSxET1VCTEU6 aShbMzIsMF0pLERBVEE6aShbMzIsMF0pLFVJTlQ4QzppKFszMiwwXSksQlVGRkVSOmkoWzMy LDBdKX0pO3ZhciBvPSJ1bmRlZmluZWQiIT10eXBlb2YgVWludDhDbGFtcGVkQXJyYXkscz0i dW5kZWZpbmVkIiE9dHlwZW9mIEJpZ1VpbnQ2NEFycmF5LGw9InVuZGVmaW5lZCIhPXR5cGVv ZiBCaWdJbnQ2NEFycmF5LGM9ZS5fX1RZUEVEQVJSQVlfUE9PTDtjLlVJTlQ4Q3x8KGMuVUlO VDhDPWkoWzMyLDBdKSksYy5CSUdVSU5UNjR8fChjLkJJR1VJTlQ2ND1pKFszMiwwXSkpLGMu QklHSU5UNjR8fChjLkJJR0lOVDY0PWkoWzMyLDBdKSksYy5CVUZGRVJ8fChjLkJVRkZFUj1p KFszMiwwXSkpO3ZhciB1PWMuREFUQSxmPWMuQlVGRkVSO2Z1bmN0aW9uIGgodCl7aWYodCl7 dmFyIGU9dC5sZW5ndGh8fHQuYnl0ZUxlbmd0aCxyPW4ubG9nMihlKTt1W3JdLnB1c2godCl9 fWZ1bmN0aW9uIHAodCl7dD1uLm5leHRQb3cyKHQpO3ZhciBlPW4ubG9nMih0KSxyPXVbZV07 cmV0dXJuIHIubGVuZ3RoPjA/ci5wb3AoKTpuZXcgQXJyYXlCdWZmZXIodCl9ZnVuY3Rpb24g ZCh0KXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkocCh0KSwwLHQpfWZ1bmN0aW9uIG0odCl7cmV0 dXJuIG5ldyBVaW50MTZBcnJheShwKDIqdCksMCx0KX1mdW5jdGlvbiBnKHQpe3JldHVybiBu ZXcgVWludDMyQXJyYXkocCg0KnQpLDAsdCl9ZnVuY3Rpb24gdih0KXtyZXR1cm4gbmV3IElu dDhBcnJheShwKHQpLDAsdCl9ZnVuY3Rpb24geSh0KXtyZXR1cm4gbmV3IEludDE2QXJyYXko cCgyKnQpLDAsdCl9ZnVuY3Rpb24geCh0KXtyZXR1cm4gbmV3IEludDMyQXJyYXkocCg0KnQp LDAsdCl9ZnVuY3Rpb24gYih0KXtyZXR1cm4gbmV3IEZsb2F0MzJBcnJheShwKDQqdCksMCx0 KX1mdW5jdGlvbiBfKHQpe3JldHVybiBuZXcgRmxvYXQ2NEFycmF5KHAoOCp0KSwwLHQpfWZ1 bmN0aW9uIHcodCl7cmV0dXJuIG8/bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHAodCksMCx0KTpk KHQpfWZ1bmN0aW9uIFQodCl7cmV0dXJuIHM/bmV3IEJpZ1VpbnQ2NEFycmF5KHAoOCp0KSww LHQpOm51bGx9ZnVuY3Rpb24gayh0KXtyZXR1cm4gbD9uZXcgQmlnSW50NjRBcnJheShwKDgq dCksMCx0KTpudWxsfWZ1bmN0aW9uIEEodCl7cmV0dXJuIG5ldyBEYXRhVmlldyhwKHQpLDAs dCl9ZnVuY3Rpb24gTSh0KXt0PW4ubmV4dFBvdzIodCk7dmFyIGU9bi5sb2cyKHQpLHI9Zltl XTtyZXR1cm4gci5sZW5ndGg+MD9yLnBvcCgpOm5ldyBhKHQpfXIuZnJlZT1mdW5jdGlvbih0 KXtpZihhLmlzQnVmZmVyKHQpKWZbbi5sb2cyKHQubGVuZ3RoKV0ucHVzaCh0KTtlbHNle2lm KCJbb2JqZWN0IEFycmF5QnVmZmVyXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNh bGwodCkmJih0PXQuYnVmZmVyKSwhdClyZXR1cm47dmFyIGU9dC5sZW5ndGh8fHQuYnl0ZUxl bmd0aCxyPTB8bi5sb2cyKGUpO3Vbcl0ucHVzaCh0KX19LHIuZnJlZVVpbnQ4PXIuZnJlZVVp bnQxNj1yLmZyZWVVaW50MzI9ci5mcmVlQmlnVWludDY0PXIuZnJlZUludDg9ci5mcmVlSW50 MTY9ci5mcmVlSW50MzI9ci5mcmVlQmlnSW50NjQ9ci5mcmVlRmxvYXQzMj1yLmZyZWVGbG9h dD1yLmZyZWVGbG9hdDY0PXIuZnJlZURvdWJsZT1yLmZyZWVVaW50OENsYW1wZWQ9ci5mcmVl RGF0YVZpZXc9ZnVuY3Rpb24odCl7aCh0LmJ1ZmZlcil9LHIuZnJlZUFycmF5QnVmZmVyPWgs ci5mcmVlQnVmZmVyPWZ1bmN0aW9uKHQpe2Zbbi5sb2cyKHQubGVuZ3RoKV0ucHVzaCh0KX0s ci5tYWxsb2M9ZnVuY3Rpb24odCxlKXtpZih2b2lkIDA9PT1lfHwiYXJyYXlidWZmZXIiPT09 ZSlyZXR1cm4gcCh0KTtzd2l0Y2goZSl7Y2FzZSJ1aW50OCI6cmV0dXJuIGQodCk7Y2FzZSJ1 aW50MTYiOnJldHVybiBtKHQpO2Nhc2UidWludDMyIjpyZXR1cm4gZyh0KTtjYXNlImludDgi OnJldHVybiB2KHQpO2Nhc2UiaW50MTYiOnJldHVybiB5KHQpO2Nhc2UiaW50MzIiOnJldHVy biB4KHQpO2Nhc2UiZmxvYXQiOmNhc2UiZmxvYXQzMiI6cmV0dXJuIGIodCk7Y2FzZSJkb3Vi bGUiOmNhc2UiZmxvYXQ2NCI6cmV0dXJuIF8odCk7Y2FzZSJ1aW50OF9jbGFtcGVkIjpyZXR1 cm4gdyh0KTtjYXNlImJpZ2ludDY0IjpyZXR1cm4gayh0KTtjYXNlImJpZ3VpbnQ2NCI6cmV0 dXJuIFQodCk7Y2FzZSJidWZmZXIiOnJldHVybiBNKHQpO2Nhc2UiZGF0YSI6Y2FzZSJkYXRh dmlldyI6cmV0dXJuIEEodCk7ZGVmYXVsdDpyZXR1cm4gbnVsbH1yZXR1cm4gbnVsbH0sci5t YWxsb2NBcnJheUJ1ZmZlcj1wLHIubWFsbG9jVWludDg9ZCxyLm1hbGxvY1VpbnQxNj1tLHIu bWFsbG9jVWludDMyPWcsci5tYWxsb2NJbnQ4PXYsci5tYWxsb2NJbnQxNj15LHIubWFsbG9j SW50MzI9eCxyLm1hbGxvY0Zsb2F0MzI9ci5tYWxsb2NGbG9hdD1iLHIubWFsbG9jRmxvYXQ2 ND1yLm1hbGxvY0RvdWJsZT1fLHIubWFsbG9jVWludDhDbGFtcGVkPXcsci5tYWxsb2NCaWdV aW50NjQ9VCxyLm1hbGxvY0JpZ0ludDY0PWssci5tYWxsb2NEYXRhVmlldz1BLHIubWFsbG9j QnVmZmVyPU0sci5jbGVhckNhY2hlPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDwzMjsrK3Qp Yy5VSU5UOFt0XS5sZW5ndGg9MCxjLlVJTlQxNlt0XS5sZW5ndGg9MCxjLlVJTlQzMlt0XS5s ZW5ndGg9MCxjLklOVDhbdF0ubGVuZ3RoPTAsYy5JTlQxNlt0XS5sZW5ndGg9MCxjLklOVDMy W3RdLmxlbmd0aD0wLGMuRkxPQVRbdF0ubGVuZ3RoPTAsYy5ET1VCTEVbdF0ubGVuZ3RoPTAs Yy5CSUdVSU5UNjRbdF0ubGVuZ3RoPTAsYy5CSUdJTlQ2NFt0XS5sZW5ndGg9MCxjLlVJTlQ4 Q1t0XS5sZW5ndGg9MCx1W3RdLmxlbmd0aD0wLGZbdF0ubGVuZ3RoPTB9fSkuY2FsbCh0aGlz KX0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVm aW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2lu ZG93Ont9KX0seyJiaXQtdHdpZGRsZSI6ODEsYnVmZmVyOjg1LGR1cDoxMjh9XSwzMjg6W2Z1 bmN0aW9uKHQsZSxyKXt2YXIgbj0vW1wnXCJdLztlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0 dXJuIHQ/KG4udGVzdCh0LmNoYXJBdCgwKSkmJih0PXQuc3Vic3RyKDEpKSxuLnRlc3QodC5j aGFyQXQodC5sZW5ndGgtMSkpJiYodD10LnN1YnN0cigwLHQubGVuZ3RoLTEpKSx0KToiIn19 LHt9XSwzMjk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0 aW9uKHQsZSxyKXtBcnJheS5pc0FycmF5KHIpfHwocj1bXS5zbGljZS5jYWxsKGFyZ3VtZW50 cywyKSk7Zm9yKHZhciBuPTAsaT1yLmxlbmd0aDtuPGk7bisrKXt2YXIgYT1yW25dO2Zvcih2 YXIgbyBpbiBhKWlmKCh2b2lkIDA9PT1lW29dfHxBcnJheS5pc0FycmF5KGVbb10pfHx0W29d IT09ZVtvXSkmJm8gaW4gZSl7dmFyIHM7aWYoITA9PT1hW29dKXM9ZVtvXTtlbHNle2lmKCEx PT09YVtvXSljb250aW51ZTtpZigiZnVuY3Rpb24iPT10eXBlb2YgYVtvXSYmdm9pZCAwPT09 KHM9YVtvXShlW29dLHQsZSkpKWNvbnRpbnVlfXRbb109c319cmV0dXJuIHR9fSx7fV0sMzMw OltmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKHQpeyhmdW5jdGlvbigpe2Z1bmN0aW9uIHIo ZSl7dHJ5e2lmKCF0LmxvY2FsU3RvcmFnZSlyZXR1cm4hMX1jYXRjaCh0KXtyZXR1cm4hMX12 YXIgcj10LmxvY2FsU3RvcmFnZVtlXTtyZXR1cm4gbnVsbCE9ciYmInRydWUiPT09U3RyaW5n KHIpLnRvTG93ZXJDYXNlKCl9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYocigibm9EZXBy ZWNhdGlvbiIpKXJldHVybiB0O3ZhciBuPSExO3JldHVybiBmdW5jdGlvbigpe2lmKCFuKXtp ZihyKCJ0aHJvd0RlcHJlY2F0aW9uIikpdGhyb3cgbmV3IEVycm9yKGUpO3IoInRyYWNlRGVw cmVjYXRpb24iKT9jb25zb2xlLnRyYWNlKGUpOmNvbnNvbGUud2FybihlKSxuPSEwfXJldHVy biB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fSkuY2FsbCh0aGlzKX0pLmNhbGwodGhpcywi dW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBz ZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0se31dLDMz MTpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoImdldC1jYW52YXMtY29udGV4dCIpO2UuZXhw b3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbigid2ViZ2wiLHQpfX0seyJnZXQtY2FudmFzLWNv bnRleHQiOjE5NH1dLDMzMjpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoIi4uL21haW4iKSxp PXQoIm9iamVjdC1hc3NpZ24iKSxhPW4uaW5zdGFuY2UoKTtmdW5jdGlvbiBvKHQpe3RoaXMu bG9jYWw9dGhpcy5yZWdpb25hbE9wdGlvbnNbdHx8IiJdfHx0aGlzLnJlZ2lvbmFsT3B0aW9u c1siIl19by5wcm90b3R5cGU9bmV3IG4uYmFzZUNhbGVuZGFyLGkoby5wcm90b3R5cGUse25h bWU6IkNoaW5lc2UiLGpkRXBvY2g6MTcyMTQyNS41LGhhc1llYXJaZXJvOiExLG1pbk1vbnRo OjAsZmlyc3RNb250aDowLG1pbkRheToxLHJlZ2lvbmFsT3B0aW9uczp7IiI6e25hbWU6IkNo aW5lc2UiLGVwb2NoczpbIkJFQyIsIkVDIl0sbW9udGhOdW1iZXJzOmZ1bmN0aW9uKHQsZSl7 aWYoInN0cmluZyI9PXR5cGVvZiB0KXt2YXIgcj10Lm1hdGNoKGwpO3JldHVybiByP3JbMF06 IiJ9dmFyIG49dGhpcy5fdmFsaWRhdGVZZWFyKHQpLGk9dC5tb250aCgpLGE9IiIrdGhpcy50 b0NoaW5lc2VNb250aChuLGkpO3JldHVybiBlJiZhLmxlbmd0aDwyJiYoYT0iMCIrYSksdGhp cy5pc0ludGVyY2FsYXJ5TW9udGgobixpKSYmKGErPSJpIiksYX0sbW9udGhOYW1lczpmdW5j dGlvbih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpe3ZhciBlPXQubWF0Y2goYyk7cmV0dXJu IGU/ZVswXToiIn12YXIgcj10aGlzLl92YWxpZGF0ZVllYXIodCksbj10Lm1vbnRoKCksaT1b Ilx1NGUwMFx1NjcwOCIsIlx1NGU4Y1x1NjcwOCIsIlx1NGUwOVx1NjcwOCIsIlx1NTZkYlx1 NjcwOCIsIlx1NGU5NFx1NjcwOCIsIlx1NTE2ZFx1NjcwOCIsIlx1NGUwM1x1NjcwOCIsIlx1 NTE2Ylx1NjcwOCIsIlx1NGU1ZFx1NjcwOCIsIlx1NTM0MVx1NjcwOCIsIlx1NTM0MVx1NGUw MFx1NjcwOCIsIlx1NTM0MVx1NGU4Y1x1NjcwOCJdW3RoaXMudG9DaGluZXNlTW9udGgocixu KS0xXTtyZXR1cm4gdGhpcy5pc0ludGVyY2FsYXJ5TW9udGgocixuKSYmKGk9Ilx1OTVmMCIr aSksaX0sbW9udGhOYW1lc1Nob3J0OmZ1bmN0aW9uKHQpe2lmKCJzdHJpbmciPT10eXBlb2Yg dCl7dmFyIGU9dC5tYXRjaCh1KTtyZXR1cm4gZT9lWzBdOiIifXZhciByPXRoaXMuX3ZhbGlk YXRlWWVhcih0KSxuPXQubW9udGgoKSxpPVsiXHU0ZTAwIiwiXHU0ZThjIiwiXHU0ZTA5Iiwi XHU1NmRiIiwiXHU0ZTk0IiwiXHU1MTZkIiwiXHU0ZTAzIiwiXHU1MTZiIiwiXHU0ZTVkIiwi XHU1MzQxIiwiXHU1MzQxXHU0ZTAwIiwiXHU1MzQxXHU0ZThjIl1bdGhpcy50b0NoaW5lc2VN b250aChyLG4pLTFdO3JldHVybiB0aGlzLmlzSW50ZXJjYWxhcnlNb250aChyLG4pJiYoaT0i XHU5NWYwIitpKSxpfSxwYXJzZU1vbnRoOmZ1bmN0aW9uKHQsZSl7dD10aGlzLl92YWxpZGF0 ZVllYXIodCk7dmFyIHIsbj1wYXJzZUludChlKTtpZihpc05hTihuKSkiXHU5NWYwIj09PWVb MF0mJihyPSEwLGU9ZS5zdWJzdHJpbmcoMSkpLCJcdTY3MDgiPT09ZVtlLmxlbmd0aC0xXSYm KGU9ZS5zdWJzdHJpbmcoMCxlLmxlbmd0aC0xKSksbj0xK1siXHU0ZTAwIiwiXHU0ZThjIiwi XHU0ZTA5IiwiXHU1NmRiIiwiXHU0ZTk0IiwiXHU1MTZkIiwiXHU0ZTAzIiwiXHU1MTZiIiwi XHU0ZTVkIiwiXHU1MzQxIiwiXHU1MzQxXHU0ZTAwIiwiXHU1MzQxXHU0ZThjIl0uaW5kZXhP ZihlKTtlbHNle3ZhciBpPWVbZS5sZW5ndGgtMV07cj0iaSI9PT1pfHwiSSI9PT1pfXJldHVy biB0aGlzLnRvTW9udGhJbmRleCh0LG4scil9LGRheU5hbWVzOlsiU3VuZGF5IiwiTW9uZGF5 IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXki XSxkYXlOYW1lc1Nob3J0OlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwi U2F0Il0sZGF5TmFtZXNNaW46WyJTdSIsIk1vIiwiVHUiLCJXZSIsIlRoIiwiRnIiLCJTYSJd LGRpZ2l0czpudWxsLGRhdGVGb3JtYXQ6Inl5eXkvbW0vZGQiLGZpcnN0RGF5OjEsaXNSVEw6 ITF9fSxfdmFsaWRhdGVZZWFyOmZ1bmN0aW9uKHQsZSl7aWYodC55ZWFyJiYodD10LnllYXIo KSksIm51bWJlciIhPXR5cGVvZiB0fHx0PDE4ODh8fHQ+MjExMSl0aHJvdyBlLnJlcGxhY2Uo L1x7MFx9Lyx0aGlzLmxvY2FsLm5hbWUpO3JldHVybiB0fSx0b01vbnRoSW5kZXg6ZnVuY3Rp b24odCxlLHIpe3ZhciBpPXRoaXMuaW50ZXJjYWxhcnlNb250aCh0KTtpZihyJiZlIT09aXx8 ZTwxfHxlPjEyKXRocm93IG4ubG9jYWwuaW52YWxpZE1vbnRoLnJlcGxhY2UoL1x7MFx9Lyx0 aGlzLmxvY2FsLm5hbWUpO3JldHVybiBpPyFyJiZlPD1pP2UtMTplOmUtMX0sdG9DaGluZXNl TW9udGg6ZnVuY3Rpb24odCxlKXt0LnllYXImJihlPSh0PXQueWVhcigpKS5tb250aCgpKTt2 YXIgcj10aGlzLmludGVyY2FsYXJ5TW9udGgodCk7aWYoZTwwfHxlPihyPzEyOjExKSl0aHJv dyBuLmxvY2FsLmludmFsaWRNb250aC5yZXBsYWNlKC9cezBcfS8sdGhpcy5sb2NhbC5uYW1l KTtyZXR1cm4gcj9lPHI/ZSsxOmU6ZSsxfSxpbnRlcmNhbGFyeU1vbnRoOmZ1bmN0aW9uKHQp e3JldHVybiB0PXRoaXMuX3ZhbGlkYXRlWWVhcih0KSxmW3QtZlswXV0+PjEzfSxpc0ludGVy Y2FsYXJ5TW9udGg6ZnVuY3Rpb24odCxlKXt0LnllYXImJihlPSh0PXQueWVhcigpKS5tb250 aCgpKTt2YXIgcj10aGlzLmludGVyY2FsYXJ5TW9udGgodCk7cmV0dXJuISFyJiZyPT09ZX0s bGVhcFllYXI6ZnVuY3Rpb24odCl7cmV0dXJuIDAhPT10aGlzLmludGVyY2FsYXJ5TW9udGgo dCl9LHdlZWtPZlllYXI6ZnVuY3Rpb24odCxlLHIpe3ZhciBpLG89dGhpcy5fdmFsaWRhdGVZ ZWFyKHQsbi5sb2NhbC5pbnZhbGlkeWVhcikscz1oW28taFswXV0sbD1zPj45JjQwOTUsYz1z Pj41JjE1LHU9MzEmczsoaT1hLm5ld0RhdGUobCxjLHUpKS5hZGQoNC0oaS5kYXlPZldlZWso KXx8NyksImQiKTt2YXIgZj10aGlzLnRvSkQodCxlLHIpLWkudG9KRCgpO3JldHVybiAxK01h dGguZmxvb3IoZi83KX0sbW9udGhzSW5ZZWFyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxl YXBZZWFyKHQpPzEzOjEyfSxkYXlzSW5Nb250aDpmdW5jdGlvbih0LGUpe3QueWVhciYmKGU9 dC5tb250aCgpLHQ9dC55ZWFyKCkpLHQ9dGhpcy5fdmFsaWRhdGVZZWFyKHQpO3ZhciByPWZb dC1mWzBdXTtpZihlPihyPj4xMz8xMjoxMSkpdGhyb3cgbi5sb2NhbC5pbnZhbGlkTW9udGgu cmVwbGFjZSgvXHswXH0vLHRoaXMubG9jYWwubmFtZSk7cmV0dXJuIHImMTw8MTItZT8zMDoy OX0sd2Vla0RheTpmdW5jdGlvbih0LGUscil7cmV0dXJuKHRoaXMuZGF5T2ZXZWVrKHQsZSxy KXx8Nyk8Nn0sdG9KRDpmdW5jdGlvbih0LGUscil7dmFyIGk9dGhpcy5fdmFsaWRhdGUodCxz LHIsbi5sb2NhbC5pbnZhbGlkRGF0ZSk7dD10aGlzLl92YWxpZGF0ZVllYXIoaS55ZWFyKCkp LGU9aS5tb250aCgpLHI9aS5kYXkoKTt2YXIgbz10aGlzLmlzSW50ZXJjYWxhcnlNb250aCh0 LGUpLHM9dGhpcy50b0NoaW5lc2VNb250aCh0LGUpLGw9ZnVuY3Rpb24odCxlLHIsbixpKXt2 YXIgYSxvLHM7aWYoIm9iamVjdCI9PXR5cGVvZiB0KW89dCxhPWV8fHt9O2Vsc2V7dmFyIGw7 aWYoISgibnVtYmVyIj09dHlwZW9mIHQmJnQ+PTE4ODgmJnQ8PTIxMTEpKXRocm93IG5ldyBF cnJvcigiTHVuYXIgeWVhciBvdXRzaWRlIHJhbmdlIDE4ODgtMjExMSIpO2lmKCEoIm51bWJl ciI9PXR5cGVvZiBlJiZlPj0xJiZlPD0xMikpdGhyb3cgbmV3IEVycm9yKCJMdW5hciBtb250 aCBvdXRzaWRlIHJhbmdlIDEgLSAxMiIpO2lmKCEoIm51bWJlciI9PXR5cGVvZiByJiZyPj0x JiZyPD0zMCkpdGhyb3cgbmV3IEVycm9yKCJMdW5hciBkYXkgb3V0c2lkZSByYW5nZSAxIC0g MzAiKTsib2JqZWN0Ij09dHlwZW9mIG4/KGw9ITEsYT1uKToobD0hIW4sYT1pfHx7fSksbz17 eWVhcjp0LG1vbnRoOmUsZGF5OnIsaXNJbnRlcmNhbGFyeTpsfX1zPW8uZGF5LTE7dmFyIGMs dT1mW28ueWVhci1mWzBdXSxwPXU+PjEzO2M9cCYmKG8ubW9udGg+cHx8by5pc0ludGVyY2Fs YXJ5KT9vLm1vbnRoOm8ubW9udGgtMTtmb3IodmFyIGQ9MDtkPGM7ZCsrKXtzKz11JjE8PDEy LWQ/MzA6Mjl9dmFyIG09aFtvLnllYXItaFswXV0sZz1uZXcgRGF0ZShtPj45JjQwOTUsKG0+ PjUmMTUpLTEsKDMxJm0pK3MpO3JldHVybiBhLnllYXI9Zy5nZXRGdWxsWWVhcigpLGEubW9u dGg9MStnLmdldE1vbnRoKCksYS5kYXk9Zy5nZXREYXRlKCksYX0odCxzLHIsbyk7cmV0dXJu IGEudG9KRChsLnllYXIsbC5tb250aCxsLmRheSl9LGZyb21KRDpmdW5jdGlvbih0KXt2YXIg ZT1hLmZyb21KRCh0KSxyPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpLGE7aWYoIm9iamVjdCI9 PXR5cGVvZiB0KWk9dCxhPWV8fHt9O2Vsc2V7aWYoISgibnVtYmVyIj09dHlwZW9mIHQmJnQ+ PTE4ODgmJnQ8PTIxMTEpKXRocm93IG5ldyBFcnJvcigiU29sYXIgeWVhciBvdXRzaWRlIHJh bmdlIDE4ODgtMjExMSIpO2lmKCEoIm51bWJlciI9PXR5cGVvZiBlJiZlPj0xJiZlPD0xMikp dGhyb3cgbmV3IEVycm9yKCJTb2xhciBtb250aCBvdXRzaWRlIHJhbmdlIDEgLSAxMiIpO2lm KCEoIm51bWJlciI9PXR5cGVvZiByJiZyPj0xJiZyPD0zMSkpdGhyb3cgbmV3IEVycm9yKCJT b2xhciBkYXkgb3V0c2lkZSByYW5nZSAxIC0gMzEiKTtpPXt5ZWFyOnQsbW9udGg6ZSxkYXk6 cn0sYT1ufHx7fX12YXIgbz1oW2kueWVhci1oWzBdXSxzPWkueWVhcjw8OXxpLm1vbnRoPDw1 fGkuZGF5O2EueWVhcj1zPj1vP2kueWVhcjppLnllYXItMSxvPWhbYS55ZWFyLWhbMF1dO3Zh ciBsLGM9bmV3IERhdGUobz4+OSY0MDk1LChvPj41JjE1KS0xLDMxJm8pLHU9bmV3IERhdGUo aS55ZWFyLGkubW9udGgtMSxpLmRheSk7bD1NYXRoLnJvdW5kKCh1LWMpLzg2NGU1KTt2YXIg cCxkPWZbYS55ZWFyLWZbMF1dO2ZvcihwPTA7cDwxMztwKyspe3ZhciBtPWQmMTw8MTItcD8z MDoyOTtpZihsPG0pYnJlYWs7bC09bX12YXIgZz1kPj4xMzshZ3x8cDxnPyhhLmlzSW50ZXJj YWxhcnk9ITEsYS5tb250aD0xK3ApOnA9PT1nPyhhLmlzSW50ZXJjYWxhcnk9ITAsYS5tb250 aD1wKTooYS5pc0ludGVyY2FsYXJ5PSExLGEubW9udGg9cCk7cmV0dXJuIGEuZGF5PTErbCxh fShlLnllYXIoKSxlLm1vbnRoKCksZS5kYXkoKSksbj10aGlzLnRvTW9udGhJbmRleChyLnll YXIsci5tb250aCxyLmlzSW50ZXJjYWxhcnkpO3JldHVybiB0aGlzLm5ld0RhdGUoci55ZWFy LG4sci5kYXkpfSxmcm9tU3RyaW5nOmZ1bmN0aW9uKHQpe3ZhciBlPXQubWF0Y2gocykscj10 aGlzLl92YWxpZGF0ZVllYXIoK2VbMV0pLG49K2VbMl0saT0hIWVbM10sYT10aGlzLnRvTW9u dGhJbmRleChyLG4saSksbz0rZVs0XTtyZXR1cm4gdGhpcy5uZXdEYXRlKHIsYSxvKX0sYWRk OmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10LnllYXIoKSxpPXQubW9udGgoKSxhPXRoaXMuaXNJ bnRlcmNhbGFyeU1vbnRoKG4saSkscz10aGlzLnRvQ2hpbmVzZU1vbnRoKG4saSksbD1PYmpl Y3QuZ2V0UHJvdG90eXBlT2Yoby5wcm90b3R5cGUpLmFkZC5jYWxsKHRoaXMsdCxlLHIpO2lm KCJ5Ij09PXIpe3ZhciBjPWwueWVhcigpLHU9bC5tb250aCgpLGY9dGhpcy5pc0ludGVyY2Fs YXJ5TW9udGgoYyxzKSxoPWEmJmY/dGhpcy50b01vbnRoSW5kZXgoYyxzLCEwKTp0aGlzLnRv TW9udGhJbmRleChjLHMsITEpO2ghPT11JiZsLm1vbnRoKGgpfXJldHVybiBsfX0pO3ZhciBz PS9eXHMqKC0/XGRcZFxkXGR8XGRcZClbLS9dKFxkP1xkKShbaUldPylbLS9dKFxkP1xkKS9t LGw9L15cZD9cZFtpSV0/L20sYz0vXlx1OTVmMD9cdTUzNDE/W1x1NGUwMFx1NGU4Y1x1NGUw OVx1NTZkYlx1NGU5NFx1NTE2ZFx1NGUwM1x1NTE2Ylx1NGU1ZF0/XHU2NzA4L20sdT0vXlx1 OTVmMD9cdTUzNDE/W1x1NGUwMFx1NGU4Y1x1NGUwOVx1NTZkYlx1NGU5NFx1NTE2ZFx1NGUw M1x1NTE2Ylx1NGU1ZF0/L207bi5jYWxlbmRhcnMuY2hpbmVzZT1vO3ZhciBmPVsxODg3LDU3 ODAsNTgwMiwxOTE1NywyNzQyLDUwMzU5LDExOTgsMjY0Niw0NjM3OCw3NDY2LDM0MTIsMzAx MjIsNTQ4Miw2Nzk0OSwyMzk2LDUyOTQsNDM1OTcsNjczMiw2OTU0LDM2MTgxLDI3NzIsNDk1 NCwxODc4MSwyMzk2LDU0NDI3LDUyNzQsNjczMCw0Nzc4MSw1ODAwLDY4NjgsMjEyMTAsNDc5 MCw1OTcwMywyMzUwLDUyNzAsNDY2NjcsMzQwMiwzNDk2LDM4MzI1LDEzODgsNDc4MiwxODcz NSwyMzUwLDUyMzc0LDY4MDQsNzQ5OCw0NDQ1NywyOTA2LDEzODgsMjkyOTQsNDcwMCw2Mzc4 OSw2NDQyLDY4MDQsNTYxMzgsNTgwMiwyNzcyLDM4MjM1LDEyMTAsNDY5OCwyMjgyNyw1NDE4 LDYzMTI1LDM0NzYsNTgwMiw0MzcwMSwyNDg0LDUzMDIsMjcyMjMsMjY0Niw3MDk1NCw3NDY2 LDM0MTIsNTQ2OTgsNTQ4MiwyNDEyLDM4MDYyLDUyOTQsMjYzNiwzMjAzOCw2OTU0LDYwMjQ1 LDI3NzIsNDgyNiw0MzM1NywyMzk0LDUyNzQsMzk1MDEsNjczMCw3MjM1Nyw1ODAwLDU4NDQs NTM5NzgsNDc5MCwyMzU4LDM4MDM5LDUyNzAsODc2MjcsMzQwMiwzNDk2LDU0NzA4LDU0ODQs NDc4Miw0MzMxMSwyMzUwLDMyMjIsMjc5NzgsNzQ5OCw2ODk2NSwyOTA0LDU0ODQsNDU2Nzcs NDcwMCw2NDQ0LDM5NTczLDY4MDQsNjk4NiwxOTI4NSwyNzcyLDYyODExLDEyMTAsNDY5OCw0 NzQwMyw1NDE4LDU3ODAsMzg1NzAsNTU0Niw3NjQ2OSwyNDIwLDUzMDIsNTE3OTksMjY0Niw1 NDE0LDM2NTAxLDM0MTIsNTU0NiwxODg2OSwyNDEyLDU0NDQ2LDUyNzYsNjczMiw0ODQyMiw2 ODIyLDI5MDAsMjgwMTAsNDgyNiw5MjUwOSwyMzk0LDUyNzQsNTU4ODMsNjczMCw2ODIwLDQ3 OTU2LDU4MTIsMjc3OCwxODc3OSwyMzU4LDYyNjE1LDUyNzAsNTQ1MCw0Njc1NywzNDkyLDU1 NTYsMjczMTgsNDcxOCw2Nzg4NywyMzUwLDMyMjIsNTI1NTQsNzQ5OCwzNDI4LDM4MjUyLDU0 NjgsNDcwMCwzMTAyMiw2NDQ0LDY0MTQ5LDY4MDQsNjk4Niw0Mzg2MSwyNzcyLDUzMzgsMzU0 MjEsMjY1MCw3MDk1NSw1NDE4LDU3ODAsNTQ5NTQsNTU0NiwyNzQwLDM4MDc0LDUzMDIsMjY0 NiwyOTk5MSwzMzY2LDYxMDExLDM0MTIsNTU0Niw0MzQ0NSwyNDEyLDUyOTQsMzU0MDYsNjcz Miw3Mjk5OCw2ODIwLDY5OTYsNTI1ODYsMjc3OCwyMzk2LDM4MDQ1LDUyNzQsNjY5OCwyMzMz Myw2ODIwLDY0MzM4LDU4MTIsMjc0Niw0MzM1NSwyMzU4LDUyNzAsMzk0OTksNTQ1MCw3OTUy NSwzNDkyLDU1NDhdLGg9WzE4ODcsOTY2NzMyLDk2NzIzMSw5Njc3MzMsOTY4MjY1LDk2ODc2 Niw5NjkyOTcsOTY5Nzk4LDk3MDI5OCw5NzA4MjksOTcxMzMwLDk3MTgzMCw5NzIzNjIsOTcy ODYzLDk3MzM5NSw5NzM4OTYsOTc0Mzk3LDk3NDkyOCw5NzU0MjgsOTc1OTI5LDk3NjQ2MSw5 NzY5NjIsOTc3NDYyLDk3Nzk5NCw5Nzg0OTQsOTc5MDI2LDk3OTUyNiw5ODAwMjYsOTgwNTU4 LDk4MTA1OSw5ODE1NTksOTgyMDkxLDk4MjU5Myw5ODMxMjQsOTgzNjI0LDk4NDEyNCw5ODQ2 NTYsOTg1MTU3LDk4NTY1Niw5ODYxODksOTg2NjkwLDk4NzE5MSw5ODc3MjIsOTg4MjIyLDk4 ODc1Myw5ODkyNTQsOTg5NzU0LDk5MDI4Niw5OTA3ODgsOTkxMjg4LDk5MTgxOSw5OTIzMTks OTkyODUxLDk5MzM1Miw5OTM4NTEsOTk0MzgzLDk5NDg4NSw5OTUzODUsOTk1OTE3LDk5NjQx OCw5OTY5MTgsOTk3NDUwLDk5Nzk0OSw5OTg0ODEsOTk4OTgyLDk5OTQ4MywxMDAwMDE0LDEw MDA1MTUsMTAwMTAxNiwxMDAxNTQ4LDEwMDIwNDcsMTAwMjU3OCwxMDAzMDgwLDEwMDM1ODAs MTAwNDExMSwxMDA0NjEzLDEwMDUxMTMsMTAwNTY0NSwxMDA2MTQ2LDEwMDY2NDUsMTAwNzE3 NywxMDA3Njc4LDEwMDgyMDksMTAwODcxMCwxMDA5MjExLDEwMDk3NDMsMTAxMDI0MywxMDEw NzQzLDEwMTEyNzUsMTAxMTc3NSwxMDEyMzA2LDEwMTI4MDcsMTAxMzMwOCwxMDEzODQwLDEw MTQzNDEsMTAxNDg0MSwxMDE1MzczLDEwMTU4NzQsMTAxNjQwNCwxMDE2OTA1LDEwMTc0MDUs MTAxNzkzNywxMDE4NDM4LDEwMTg5MzksMTAxOTQ3MSwxMDE5OTcyLDEwMjA0NzEsMTAyMTAw MiwxMDIxNTAzLDEwMjIwMzUsMTAyMjUzNSwxMDIzMDM2LDEwMjM1NjgsMTAyNDA2OSwxMDI0 NTY4LDEwMjUxMDAsMTAyNTYwMSwxMDI2MTAyLDEwMjY2MzMsMTAyNzEzMywxMDI3NjY2LDEw MjgxNjcsMTAyODY2NiwxMDI5MTk4LDEwMjk2OTksMTAzMDE5OSwxMDMwNzMwLDEwMzEyMzEs MTAzMTc2MywxMDMyMjY0LDEwMzI3NjQsMTAzMzI5NiwxMDMzNzk3LDEwMzQyOTcsMTAzNDgy OCwxMDM1MzI5LDEwMzU4MzAsMTAzNjM2MiwxMDM2ODYxLDEwMzczOTMsMTAzNzg5NCwxMDM4 Mzk0LDEwMzg5MjUsMTAzOTQyNywxMDM5OTI3LDEwNDA0NTksMTA0MDk1OSwxMDQxNDkxLDEw NDE5OTIsMTA0MjQ5MiwxMDQzMDIzLDEwNDM1MjQsMTA0NDAyNCwxMDQ0NTU2LDEwNDUwNTcs MTA0NTU1OCwxMDQ2MDkwLDEwNDY1OTAsMTA0NzEyMSwxMDQ3NjIyLDEwNDgxMjIsMTA0ODY1 NCwxMDQ5MTU0LDEwNDk2NTUsMTA1MDE4NywxMDUwNjg5LDEwNTEyMTksMTA1MTcyMCwxMDUy MjIwLDEwNTI3NTEsMTA1MzI1MiwxMDUzNzUyLDEwNTQyODQsMTA1NDc4NiwxMDU1Mjg1LDEw NTU4MTcsMTA1NjMxNywxMDU2ODQ5LDEwNTczNDksMTA1Nzg1MCwxMDU4MzgyLDEwNTg4ODMs MTA1OTM4MywxMDU5OTE1LDEwNjA0MTUsMTA2MDk0NywxMDYxNDQ3LDEwNjE5NDcsMTA2MjQ3 OSwxMDYyOTgxLDEwNjM0ODAsMTA2NDAxMiwxMDY0NTE0LDEwNjUwMTQsMTA2NTU0NSwxMDY2 MDQ1LDEwNjY1NzcsMTA2NzA3OCwxMDY3NTc4LDEwNjgxMTAsMTA2ODYxMSwxMDY5MTEyLDEw Njk2NDIsMTA3MDE0MiwxMDcwNjc0LDEwNzExNzUsMTA3MTY3NSwxMDcyMjA3LDEwNzI3MDks MTA3MzIwOSwxMDczNzQwLDEwNzQyNDEsMTA3NDc0MSwxMDc1MjczLDEwNzU3NzMsMTA3NjMw NSwxMDc2ODA3LDEwNzczMDgsMTA3NzgzOSwxMDc4MzQwLDEwNzg4NDAsMTA3OTM3MiwxMDc5 ODcxLDEwODA0MDMsMTA4MDkwNF19LHsiLi4vbWFpbiI6MzQ2LCJvYmplY3QtYXNzaWduIjoy NDd9XSwzMzM6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCIuLi9tYWluIiksaT10KCJvYmpl Y3QtYXNzaWduIik7ZnVuY3Rpb24gYSh0KXt0aGlzLmxvY2FsPXRoaXMucmVnaW9uYWxPcHRp b25zW3R8fCIiXXx8dGhpcy5yZWdpb25hbE9wdGlvbnNbIiJdfWEucHJvdG90eXBlPW5ldyBu LmJhc2VDYWxlbmRhcixpKGEucHJvdG90eXBlLHtuYW1lOiJDb3B0aWMiLGpkRXBvY2g6MTgy NTAyOS41LGRheXNQZXJNb250aDpbMzAsMzAsMzAsMzAsMzAsMzAsMzAsMzAsMzAsMzAsMzAs MzAsNV0saGFzWWVhclplcm86ITEsbWluTW9udGg6MSxmaXJzdE1vbnRoOjEsbWluRGF5OjEs cmVnaW9uYWxPcHRpb25zOnsiIjp7bmFtZToiQ29wdGljIixlcG9jaHM6WyJCQU0iLCJBTSJd LG1vbnRoTmFtZXM6WyJUaG91dCIsIlBhb3BpIiwiSGF0aG9yIiwiS29pYWsiLCJUb2JpIiwi TWVzaGlyIiwiUGFyZW1oYXQiLCJQYXJlbW91ZGUiLCJQYXNob25zIiwiUGFvbmkiLCJFcGlw IiwiTWVzb3JpIiwiUGkgS29naSBFbmF2b3QiXSxtb250aE5hbWVzU2hvcnQ6WyJUaG8iLCJQ YW8iLCJIYXRoIiwiS29pIiwiVG9iIiwiTWVzaCIsIlBhdCIsIlBhZCIsIlBhc2giLCJQYW8i LCJFcGkiLCJNZXNvIiwiUGlLIl0sZGF5TmFtZXM6WyJUa3lyaWFrYSIsIlBlc25hdSIsIlBz aG9tZW50IiwiUGVmdG9vdSIsIlB0aW91IiwiUHNvb3UiLCJQc2FiYmF0b24iXSxkYXlOYW1l c1Nob3J0OlsiVGt5IiwiUGVzIiwiUHNoIiwiUGVmIiwiUHRpIiwiUHNvIiwiUHNhIl0sZGF5 TmFtZXNNaW46WyJUayIsIlBlcyIsIlBzaCIsIlBlZiIsIlB0IiwiUHNvIiwiUHNhIl0sZGln aXRzOm51bGwsZGF0ZUZvcm1hdDoiZGQvbW0veXl5eSIsZmlyc3REYXk6MCxpc1JUTDohMX19 LGxlYXBZZWFyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3ZhbGlkYXRlKHQsdGhpcy5taW5N b250aCx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRZZWFyKTtyZXR1cm4odD1lLnllYXIo KSsoZS55ZWFyKCk8MD8xOjApKSU0PT0zfHx0JTQ9PS0xfSxtb250aHNJblllYXI6ZnVuY3Rp b24odCl7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlKHQsdGhpcy5taW5Nb250aCx0aGlzLm1pbkRh eSxuLmxvY2FsLmludmFsaWRZZWFyfHxuLnJlZ2lvbmFsT3B0aW9uc1siIl0uaW52YWxpZFll YXIpLDEzfSx3ZWVrT2ZZZWFyOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLm5ld0RhdGUo dCxlLHIpO3JldHVybiBuLmFkZCgtbi5kYXlPZldlZWsoKSwiZCIpLE1hdGguZmxvb3IoKG4u ZGF5T2ZZZWFyKCktMSkvNykrMX0sZGF5c0luTW9udGg6ZnVuY3Rpb24odCxlKXt2YXIgcj10 aGlzLl92YWxpZGF0ZSh0LGUsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkTW9udGgpO3Jl dHVybiB0aGlzLmRheXNQZXJNb250aFtyLm1vbnRoKCktMV0rKDEzPT09ci5tb250aCgpJiZ0 aGlzLmxlYXBZZWFyKHIueWVhcigpKT8xOjApfSx3ZWVrRGF5OmZ1bmN0aW9uKHQsZSxyKXty ZXR1cm4odGhpcy5kYXlPZldlZWsodCxlLHIpfHw3KTw2fSx0b0pEOmZ1bmN0aW9uKHQsZSxy KXt2YXIgaT10aGlzLl92YWxpZGF0ZSh0LGUscixuLmxvY2FsLmludmFsaWREYXRlKTtyZXR1 cm4odD1pLnllYXIoKSk8MCYmdCsrLGkuZGF5KCkrMzAqKGkubW9udGgoKS0xKSszNjUqKHQt MSkrTWF0aC5mbG9vcih0LzQpK3RoaXMuamRFcG9jaC0xfSxmcm9tSkQ6ZnVuY3Rpb24odCl7 dmFyIGU9TWF0aC5mbG9vcih0KSsuNS10aGlzLmpkRXBvY2gscj1NYXRoLmZsb29yKChlLU1h dGguZmxvb3IoKGUrMzY2KS8xNDYxKSkvMzY1KSsxO3I8PTAmJnItLSxlPU1hdGguZmxvb3Io dCkrLjUtdGhpcy5uZXdEYXRlKHIsMSwxKS50b0pEKCk7dmFyIG49TWF0aC5mbG9vcihlLzMw KSsxLGk9ZS0zMCoobi0xKSsxO3JldHVybiB0aGlzLm5ld0RhdGUocixuLGkpfX0pLG4uY2Fs ZW5kYXJzLmNvcHRpYz1hfSx7Ii4uL21haW4iOjM0Niwib2JqZWN0LWFzc2lnbiI6MjQ3fV0s MzM0OltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiLi4vbWFpbiIpLGk9dCgib2JqZWN0LWFz c2lnbiIpO2Z1bmN0aW9uIGEodCl7dGhpcy5sb2NhbD10aGlzLnJlZ2lvbmFsT3B0aW9uc1t0 fHwiIl18fHRoaXMucmVnaW9uYWxPcHRpb25zWyIiXX1hLnByb3RvdHlwZT1uZXcgbi5iYXNl Q2FsZW5kYXIsaShhLnByb3RvdHlwZSx7bmFtZToiRGlzY3dvcmxkIixqZEVwb2NoOjE3MjE0 MjUuNSxkYXlzUGVyTW9udGg6WzE2LDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMy LDMyXSxoYXNZZWFyWmVybzohMSxtaW5Nb250aDoxLGZpcnN0TW9udGg6MSxtaW5EYXk6MSxy ZWdpb25hbE9wdGlvbnM6eyIiOntuYW1lOiJEaXNjd29ybGQiLGVwb2NoczpbIkJVQyIsIlVD Il0sbW9udGhOYW1lczpbIkljayIsIk9mZmxlIiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmls IiwiTWF5IiwiSnVuZSIsIkdydW5lIiwiQXVndXN0IiwiU3B1bmUiLCJTZWt0b2JlciIsIkVt YmVyIiwiRGVjZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJJY2siLCJPZmYiLCJGZWIiLCJN YXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJHcnUiLCJBdWciLCJTcHUiLCJTZWsiLCJFbWIiLCJE ZWMiXSxkYXlOYW1lczpbIlN1bmRheSIsIk9jdGVkYXkiLCJNb25kYXkiLCJUdWVzZGF5Iiwi V2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLGRheU5hbWVzU2hv cnQ6WyJTdW4iLCJPY3QiLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxk YXlOYW1lc01pbjpbIlN1IiwiT2MiLCJNbyIsIlR1IiwiV2UiLCJUaCIsIkZyIiwiU2EiXSxk aWdpdHM6bnVsbCxkYXRlRm9ybWF0OiJ5eXl5L21tL2RkIixmaXJzdERheToyLGlzUlRMOiEx fX0sbGVhcFllYXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlKHQsdGhpcy5t aW5Nb250aCx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRZZWFyKSwhMX0sbW9udGhzSW5Z ZWFyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl92YWxpZGF0ZSh0LHRoaXMubWluTW9udGgs dGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkWWVhciksMTN9LGRheXNJblllYXI6ZnVuY3Rp b24odCl7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlKHQsdGhpcy5taW5Nb250aCx0aGlzLm1pbkRh eSxuLmxvY2FsLmludmFsaWRZZWFyKSw0MDB9LHdlZWtPZlllYXI6ZnVuY3Rpb24odCxlLHIp e3ZhciBuPXRoaXMubmV3RGF0ZSh0LGUscik7cmV0dXJuIG4uYWRkKC1uLmRheU9mV2Vlaygp LCJkIiksTWF0aC5mbG9vcigobi5kYXlPZlllYXIoKS0xKS84KSsxfSxkYXlzSW5Nb250aDpm dW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX3ZhbGlkYXRlKHQsZSx0aGlzLm1pbkRheSxuLmxv Y2FsLmludmFsaWRNb250aCk7cmV0dXJuIHRoaXMuZGF5c1Blck1vbnRoW3IubW9udGgoKS0x XX0sZGF5c0luV2VlazpmdW5jdGlvbigpe3JldHVybiA4fSxkYXlPZldlZWs6ZnVuY3Rpb24o dCxlLHIpe3JldHVybih0aGlzLl92YWxpZGF0ZSh0LGUscixuLmxvY2FsLmludmFsaWREYXRl KS5kYXkoKSsxKSU4fSx3ZWVrRGF5OmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLmRheU9m V2Vlayh0LGUscik7cmV0dXJuIG4+PTImJm48PTZ9LGV4dHJhSW5mbzpmdW5jdGlvbih0LGUs cil7dmFyIGk9dGhpcy5fdmFsaWRhdGUodCxlLHIsbi5sb2NhbC5pbnZhbGlkRGF0ZSk7cmV0 dXJue2NlbnR1cnk6b1tNYXRoLmZsb29yKChpLnllYXIoKS0xKS8xMDApKzFdfHwiIn19LHRv SkQ6ZnVuY3Rpb24odCxlLHIpe3ZhciBpPXRoaXMuX3ZhbGlkYXRlKHQsZSxyLG4ubG9jYWwu aW52YWxpZERhdGUpO3JldHVybiB0PWkueWVhcigpKyhpLnllYXIoKTwwPzE6MCksZT1pLm1v bnRoKCksKHI9aS5kYXkoKSkrKGU+MT8xNjowKSsoZT4yPzMyKihlLTIpOjApKzQwMCoodC0x KSt0aGlzLmpkRXBvY2gtMX0sZnJvbUpEOmZ1bmN0aW9uKHQpe3Q9TWF0aC5mbG9vcih0Ky41 KS1NYXRoLmZsb29yKHRoaXMuamRFcG9jaCktMTt2YXIgZT1NYXRoLmZsb29yKHQvNDAwKSsx O3QtPTQwMCooZS0xKSx0Kz10PjE1PzE2OjA7dmFyIHI9TWF0aC5mbG9vcih0LzMyKSsxLG49 dC0zMiooci0xKSsxO3JldHVybiB0aGlzLm5ld0RhdGUoZTw9MD9lLTE6ZSxyLG4pfX0pO3Zh ciBvPXsyMDoiRnJ1aXRiYXQiLDIxOiJBbmNob3Z5In07bi5jYWxlbmRhcnMuZGlzY3dvcmxk PWF9LHsiLi4vbWFpbiI6MzQ2LCJvYmplY3QtYXNzaWduIjoyNDd9XSwzMzU6W2Z1bmN0aW9u KHQsZSxyKXt2YXIgbj10KCIuLi9tYWluIiksaT10KCJvYmplY3QtYXNzaWduIik7ZnVuY3Rp b24gYSh0KXt0aGlzLmxvY2FsPXRoaXMucmVnaW9uYWxPcHRpb25zW3R8fCIiXXx8dGhpcy5y ZWdpb25hbE9wdGlvbnNbIiJdfWEucHJvdG90eXBlPW5ldyBuLmJhc2VDYWxlbmRhcixpKGEu cHJvdG90eXBlLHtuYW1lOiJFdGhpb3BpYW4iLGpkRXBvY2g6MTcyNDIyMC41LGRheXNQZXJN b250aDpbMzAsMzAsMzAsMzAsMzAsMzAsMzAsMzAsMzAsMzAsMzAsMzAsNV0saGFzWWVhclpl cm86ITEsbWluTW9udGg6MSxmaXJzdE1vbnRoOjEsbWluRGF5OjEscmVnaW9uYWxPcHRpb25z OnsiIjp7bmFtZToiRXRoaW9waWFuIixlcG9jaHM6WyJCRUUiLCJFRSJdLG1vbnRoTmFtZXM6 WyJNZXNrZXJlbSIsIlRpa2VtZXQiLCJIaWRhciIsIlRhaGVzYXMiLCJUaXIiLCJZZWthdGl0 IiwiTWVnYWJpdCIsIk1pYXppYSIsIkdlbmJvdCIsIlNlbmUiLCJIYW1sZSIsIk5laGFzZSIs IlBhZ3VtZSJdLG1vbnRoTmFtZXNTaG9ydDpbIk1lcyIsIlRpayIsIkhpZCIsIlRhaCIsIlRp ciIsIlllayIsIk1lZyIsIk1pYSIsIkdlbiIsIlNlbiIsIkhhbSIsIk5laCIsIlBhZyJdLGRh eU5hbWVzOlsiRWh1ZCIsIlNlZ25vIiwiTWFrc2Vnbm8iLCJJcm9iIiwiSGFtdXMiLCJBcmIi LCJLaWRhbWUiXSxkYXlOYW1lc1Nob3J0OlsiRWh1IiwiU2VnIiwiTWFrIiwiSXJvIiwiSGFt IiwiQXJiIiwiS2lkIl0sZGF5TmFtZXNNaW46WyJFaCIsIlNlIiwiTWEiLCJJciIsIkhhIiwi QXIiLCJLaSJdLGRpZ2l0czpudWxsLGRhdGVGb3JtYXQ6ImRkL21tL3l5eXkiLGZpcnN0RGF5 OjAsaXNSVEw6ITF9fSxsZWFwWWVhcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl92YWxpZGF0 ZSh0LHRoaXMubWluTW9udGgsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkWWVhcik7cmV0 dXJuKHQ9ZS55ZWFyKCkrKGUueWVhcigpPDA/MTowKSklND09M3x8dCU0PT0tMX0sbW9udGhz SW5ZZWFyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl92YWxpZGF0ZSh0LHRoaXMubWluTW9u dGgsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkWWVhcnx8bi5yZWdpb25hbE9wdGlvbnNb IiJdLmludmFsaWRZZWFyKSwxM30sd2Vla09mWWVhcjpmdW5jdGlvbih0LGUscil7dmFyIG49 dGhpcy5uZXdEYXRlKHQsZSxyKTtyZXR1cm4gbi5hZGQoLW4uZGF5T2ZXZWVrKCksImQiKSxN YXRoLmZsb29yKChuLmRheU9mWWVhcigpLTEpLzcpKzF9LGRheXNJbk1vbnRoOmZ1bmN0aW9u KHQsZSl7dmFyIHI9dGhpcy5fdmFsaWRhdGUodCxlLHRoaXMubWluRGF5LG4ubG9jYWwuaW52 YWxpZE1vbnRoKTtyZXR1cm4gdGhpcy5kYXlzUGVyTW9udGhbci5tb250aCgpLTFdKygxMz09 PXIubW9udGgoKSYmdGhpcy5sZWFwWWVhcihyLnllYXIoKSk/MTowKX0sd2Vla0RheTpmdW5j dGlvbih0LGUscil7cmV0dXJuKHRoaXMuZGF5T2ZXZWVrKHQsZSxyKXx8Nyk8Nn0sdG9KRDpm dW5jdGlvbih0LGUscil7dmFyIGk9dGhpcy5fdmFsaWRhdGUodCxlLHIsbi5sb2NhbC5pbnZh bGlkRGF0ZSk7cmV0dXJuKHQ9aS55ZWFyKCkpPDAmJnQrKyxpLmRheSgpKzMwKihpLm1vbnRo KCktMSkrMzY1Kih0LTEpK01hdGguZmxvb3IodC80KSt0aGlzLmpkRXBvY2gtMX0sZnJvbUpE OmZ1bmN0aW9uKHQpe3ZhciBlPU1hdGguZmxvb3IodCkrLjUtdGhpcy5qZEVwb2NoLHI9TWF0 aC5mbG9vcigoZS1NYXRoLmZsb29yKChlKzM2NikvMTQ2MSkpLzM2NSkrMTtyPD0wJiZyLS0s ZT1NYXRoLmZsb29yKHQpKy41LXRoaXMubmV3RGF0ZShyLDEsMSkudG9KRCgpO3ZhciBuPU1h dGguZmxvb3IoZS8zMCkrMSxpPWUtMzAqKG4tMSkrMTtyZXR1cm4gdGhpcy5uZXdEYXRlKHIs bixpKX19KSxuLmNhbGVuZGFycy5ldGhpb3BpYW49YX0seyIuLi9tYWluIjozNDYsIm9iamVj dC1hc3NpZ24iOjI0N31dLDMzNjpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoIi4uL21haW4i KSxpPXQoIm9iamVjdC1hc3NpZ24iKTtmdW5jdGlvbiBhKHQpe3RoaXMubG9jYWw9dGhpcy5y ZWdpb25hbE9wdGlvbnNbdHx8IiJdfHx0aGlzLnJlZ2lvbmFsT3B0aW9uc1siIl19ZnVuY3Rp b24gbyh0LGUpe3JldHVybiB0LWUqTWF0aC5mbG9vcih0L2UpfWEucHJvdG90eXBlPW5ldyBu LmJhc2VDYWxlbmRhcixpKGEucHJvdG90eXBlLHtuYW1lOiJIZWJyZXciLGpkRXBvY2g6MzQ3 OTk1LjUsZGF5c1Blck1vbnRoOlszMCwyOSwzMCwyOSwzMCwyOSwzMCwyOSwzMCwyOSwzMCwy OSwyOV0saGFzWWVhclplcm86ITEsbWluTW9udGg6MSxmaXJzdE1vbnRoOjcsbWluRGF5OjEs cmVnaW9uYWxPcHRpb25zOnsiIjp7bmFtZToiSGVicmV3IixlcG9jaHM6WyJCQU0iLCJBTSJd LG1vbnRoTmFtZXM6WyJOaXNhbiIsIkl5YXIiLCJTaXZhbiIsIlRhbW11eiIsIkF2IiwiRWx1 bCIsIlRpc2hyZWkiLCJDaGVzaHZhbiIsIktpc2xldiIsIlRldmV0IiwiU2hldmF0IiwiQWRh ciIsIkFkYXIgSUkiXSxtb250aE5hbWVzU2hvcnQ6WyJOaXMiLCJJeWEiLCJTaXYiLCJUYW0i LCJBdiIsIkVsdSIsIlRpcyIsIkNoZSIsIktpcyIsIlRldiIsIlNoZSIsIkFkYSIsIkFkMiJd LGRheU5hbWVzOlsiWW9tIFJpc2hvbiIsIllvbSBTaGVuaSIsIllvbSBTaGxpc2hpIiwiWW9t IFJldmknaSIsIllvbSBDaGFtaXNoaSIsIllvbSBTaGlzaGkiLCJZb20gU2hhYmJhdCJdLGRh eU5hbWVzU2hvcnQ6WyJSaXMiLCJTaGUiLCJTaGwiLCJSZXYiLCJDaGEiLCJTaGkiLCJTaGEi XSxkYXlOYW1lc01pbjpbIlJpIiwiU2hlIiwiU2hsIiwiUmUiLCJDaCIsIlNoaSIsIlNoYSJd LGRpZ2l0czpudWxsLGRhdGVGb3JtYXQ6ImRkL21tL3l5eXkiLGZpcnN0RGF5OjAsaXNSVEw6 ITF9fSxsZWFwWWVhcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl92YWxpZGF0ZSh0LHRoaXMu bWluTW9udGgsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkWWVhcik7cmV0dXJuIHRoaXMu X2xlYXBZZWFyKGUueWVhcigpKX0sX2xlYXBZZWFyOmZ1bmN0aW9uKHQpe3JldHVybiBvKDcq KHQ9dDwwP3QrMTp0KSsxLDE5KTw3fSxtb250aHNJblllYXI6ZnVuY3Rpb24odCl7cmV0dXJu IHRoaXMuX3ZhbGlkYXRlKHQsdGhpcy5taW5Nb250aCx0aGlzLm1pbkRheSxuLmxvY2FsLmlu dmFsaWRZZWFyKSx0aGlzLl9sZWFwWWVhcih0LnllYXI/dC55ZWFyKCk6dCk/MTM6MTJ9LHdl ZWtPZlllYXI6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMubmV3RGF0ZSh0LGUscik7cmV0 dXJuIG4uYWRkKC1uLmRheU9mV2VlaygpLCJkIiksTWF0aC5mbG9vcigobi5kYXlPZlllYXIo KS0xKS83KSsxfSxkYXlzSW5ZZWFyOmZ1bmN0aW9uKHQpe3JldHVybiB0PXRoaXMuX3ZhbGlk YXRlKHQsdGhpcy5taW5Nb250aCx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRZZWFyKS55 ZWFyKCksdGhpcy50b0pEKC0xPT09dD8xOnQrMSw3LDEpLXRoaXMudG9KRCh0LDcsMSl9LGRh eXNJbk1vbnRoOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQueWVhciYmKGU9dC5tb250aCgpLHQ9 dC55ZWFyKCkpLHRoaXMuX3ZhbGlkYXRlKHQsZSx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFs aWRNb250aCksMTI9PT1lJiZ0aGlzLmxlYXBZZWFyKHQpfHw4PT09ZSYmNT09PW8odGhpcy5k YXlzSW5ZZWFyKHQpLDEwKT8zMDo5PT09ZSYmMz09PW8odGhpcy5kYXlzSW5ZZWFyKHQpLDEw KT8yOTp0aGlzLmRheXNQZXJNb250aFtlLTFdfSx3ZWVrRGF5OmZ1bmN0aW9uKHQsZSxyKXty ZXR1cm4gNiE9PXRoaXMuZGF5T2ZXZWVrKHQsZSxyKX0sZXh0cmFJbmZvOmZ1bmN0aW9uKHQs ZSxyKXt2YXIgaT10aGlzLl92YWxpZGF0ZSh0LGUscixuLmxvY2FsLmludmFsaWREYXRlKTty ZXR1cm57eWVhclR5cGU6KHRoaXMubGVhcFllYXIoaSk/ImVtYm9saXNtaWMiOiJjb21tb24i KSsiICIrWyJkZWZpY2llbnQiLCJyZWd1bGFyIiwiY29tcGxldGUiXVt0aGlzLmRheXNJblll YXIoaSklMTAtM119fSx0b0pEOmZ1bmN0aW9uKHQsZSxyKXt2YXIgaT10aGlzLl92YWxpZGF0 ZSh0LGUscixuLmxvY2FsLmludmFsaWREYXRlKTt0PWkueWVhcigpLGU9aS5tb250aCgpLHI9 aS5kYXkoKTt2YXIgYT10PD0wP3QrMTp0LG89dGhpcy5qZEVwb2NoK3RoaXMuX2RlbGF5MShh KSt0aGlzLl9kZWxheTIoYSkrcisxO2lmKGU8Nyl7Zm9yKHZhciBzPTc7czw9dGhpcy5tb250 aHNJblllYXIodCk7cysrKW8rPXRoaXMuZGF5c0luTW9udGgodCxzKTtmb3Iocz0xO3M8ZTtz Kyspbys9dGhpcy5kYXlzSW5Nb250aCh0LHMpfWVsc2UgZm9yKHM9NztzPGU7cysrKW8rPXRo aXMuZGF5c0luTW9udGgodCxzKTtyZXR1cm4gb30sX2RlbGF5MTpmdW5jdGlvbih0KXt2YXIg ZT1NYXRoLmZsb29yKCgyMzUqdC0yMzQpLzE5KSxyPTEyMDg0KzEzNzUzKmUsbj0yOSplK01h dGguZmxvb3Ioci8yNTkyMCk7cmV0dXJuIG8oMyoobisxKSw3KTwzJiZuKyssbn0sX2RlbGF5 MjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9kZWxheTEodC0xKSxyPXRoaXMuX2RlbGF5MSh0 KTtyZXR1cm4gdGhpcy5fZGVsYXkxKHQrMSktcj09MzU2PzI6ci1lPT0zODI/MTowfSxmcm9t SkQ6ZnVuY3Rpb24odCl7dD1NYXRoLmZsb29yKHQpKy41O2Zvcih2YXIgZT1NYXRoLmZsb29y KDk4NDk2Kih0LXRoaXMuamRFcG9jaCkvMzU5NzUzNTEpLTE7dD49dGhpcy50b0pEKC0xPT09 ZT8xOmUrMSw3LDEpOyllKys7Zm9yKHZhciByPXQ8dGhpcy50b0pEKGUsMSwxKT83OjE7dD50 aGlzLnRvSkQoZSxyLHRoaXMuZGF5c0luTW9udGgoZSxyKSk7KXIrKzt2YXIgbj10LXRoaXMu dG9KRChlLHIsMSkrMTtyZXR1cm4gdGhpcy5uZXdEYXRlKGUscixuKX19KSxuLmNhbGVuZGFy cy5oZWJyZXc9YX0seyIuLi9tYWluIjozNDYsIm9iamVjdC1hc3NpZ24iOjI0N31dLDMzNzpb ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoIi4uL21haW4iKSxpPXQoIm9iamVjdC1hc3NpZ24i KTtmdW5jdGlvbiBhKHQpe3RoaXMubG9jYWw9dGhpcy5yZWdpb25hbE9wdGlvbnNbdHx8IiJd fHx0aGlzLnJlZ2lvbmFsT3B0aW9uc1siIl19YS5wcm90b3R5cGU9bmV3IG4uYmFzZUNhbGVu ZGFyLGkoYS5wcm90b3R5cGUse25hbWU6IklzbGFtaWMiLGpkRXBvY2g6MTk0ODQzOS41LGRh eXNQZXJNb250aDpbMzAsMjksMzAsMjksMzAsMjksMzAsMjksMzAsMjksMzAsMjldLGhhc1ll YXJaZXJvOiExLG1pbk1vbnRoOjEsZmlyc3RNb250aDoxLG1pbkRheToxLHJlZ2lvbmFsT3B0 aW9uczp7IiI6e25hbWU6IklzbGFtaWMiLGVwb2NoczpbIkJIIiwiQUgiXSxtb250aE5hbWVz OlsiTXVoYXJyYW0iLCJTYWZhciIsIlJhYmknIGFsLWF3d2FsIiwiUmFiaScgYWwtdGhhbmki LCJKdW1hZGEgYWwtYXd3YWwiLCJKdW1hZGEgYWwtdGhhbmkiLCJSYWphYiIsIlNoYSdhYmFu IiwiUmFtYWRhbiIsIlNoYXd3YWwiLCJEaHUgYWwtUWknZGFoIiwiRGh1IGFsLUhpamphaCJd LG1vbnRoTmFtZXNTaG9ydDpbIk11aCIsIlNhZiIsIlJhYjEiLCJSYWIyIiwiSnVtMSIsIkp1 bTIiLCJSYWoiLCJTaGEnIiwiUmFtIiwiU2hhdyIsIkRodVEiLCJEaHVIIl0sZGF5TmFtZXM6 WyJZYXdtIGFsLWFoYWQiLCJZYXdtIGFsLWl0aG5heW4iLCJZYXdtIGF0aC10aHVsYWF0aGFh JyIsIllhd20gYWwtYXJiaSdhYSciLCJZYXdtIGFsLWtoYW1cdTAxMmJzIiwiWWF3bSBhbC1q dW0nYSIsIllhd20gYXMtc2FidCJdLGRheU5hbWVzU2hvcnQ6WyJBaGEiLCJJdGgiLCJUaHUi LCJBcmIiLCJLaGEiLCJKdW0iLCJTYWIiXSxkYXlOYW1lc01pbjpbIkFoIiwiSXQiLCJUaCIs IkFyIiwiS2giLCJKdSIsIlNhIl0sZGlnaXRzOm51bGwsZGF0ZUZvcm1hdDoieXl5eS9tbS9k ZCIsZmlyc3REYXk6Nixpc1JUTDohMX19LGxlYXBZZWFyOmZ1bmN0aW9uKHQpe3JldHVybigx MSp0aGlzLl92YWxpZGF0ZSh0LHRoaXMubWluTW9udGgsdGhpcy5taW5EYXksbi5sb2NhbC5p bnZhbGlkWWVhcikueWVhcigpKzE0KSUzMDwxMX0sd2Vla09mWWVhcjpmdW5jdGlvbih0LGUs cil7dmFyIG49dGhpcy5uZXdEYXRlKHQsZSxyKTtyZXR1cm4gbi5hZGQoLW4uZGF5T2ZXZWVr KCksImQiKSxNYXRoLmZsb29yKChuLmRheU9mWWVhcigpLTEpLzcpKzF9LGRheXNJblllYXI6 ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGVhcFllYXIodCk/MzU1OjM1NH0sZGF5c0luTW9u dGg6ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl92YWxpZGF0ZSh0LGUsdGhpcy5taW5EYXks bi5sb2NhbC5pbnZhbGlkTW9udGgpO3JldHVybiB0aGlzLmRheXNQZXJNb250aFtyLm1vbnRo KCktMV0rKDEyPT09ci5tb250aCgpJiZ0aGlzLmxlYXBZZWFyKHIueWVhcigpKT8xOjApfSx3 ZWVrRGF5OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gNSE9PXRoaXMuZGF5T2ZXZWVrKHQsZSxy KX0sdG9KRDpmdW5jdGlvbih0LGUscil7dmFyIGk9dGhpcy5fdmFsaWRhdGUodCxlLHIsbi5s b2NhbC5pbnZhbGlkRGF0ZSk7cmV0dXJuIHQ9aS55ZWFyKCksZT1pLm1vbnRoKCksdD10PD0w P3QrMTp0LChyPWkuZGF5KCkpK01hdGguY2VpbCgyOS41KihlLTEpKSszNTQqKHQtMSkrTWF0 aC5mbG9vcigoMysxMSp0KS8zMCkrdGhpcy5qZEVwb2NoLTF9LGZyb21KRDpmdW5jdGlvbih0 KXt0PU1hdGguZmxvb3IodCkrLjU7dmFyIGU9TWF0aC5mbG9vcigoMzAqKHQtdGhpcy5qZEVw b2NoKSsxMDY0NikvMTA2MzEpO2U9ZTw9MD9lLTE6ZTt2YXIgcj1NYXRoLm1pbigxMixNYXRo LmNlaWwoKHQtMjktdGhpcy50b0pEKGUsMSwxKSkvMjkuNSkrMSksbj10LXRoaXMudG9KRChl LHIsMSkrMTtyZXR1cm4gdGhpcy5uZXdEYXRlKGUscixuKX19KSxuLmNhbGVuZGFycy5pc2xh bWljPWF9LHsiLi4vbWFpbiI6MzQ2LCJvYmplY3QtYXNzaWduIjoyNDd9XSwzMzg6W2Z1bmN0 aW9uKHQsZSxyKXt2YXIgbj10KCIuLi9tYWluIiksaT10KCJvYmplY3QtYXNzaWduIik7ZnVu Y3Rpb24gYSh0KXt0aGlzLmxvY2FsPXRoaXMucmVnaW9uYWxPcHRpb25zW3R8fCIiXXx8dGhp cy5yZWdpb25hbE9wdGlvbnNbIiJdfWEucHJvdG90eXBlPW5ldyBuLmJhc2VDYWxlbmRhcixp KGEucHJvdG90eXBlLHtuYW1lOiJKdWxpYW4iLGpkRXBvY2g6MTcyMTQyMy41LGRheXNQZXJN b250aDpbMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdLGhhc1llYXJaZXJv OiExLG1pbk1vbnRoOjEsZmlyc3RNb250aDoxLG1pbkRheToxLHJlZ2lvbmFsT3B0aW9uczp7 IiI6e25hbWU6Ikp1bGlhbiIsZXBvY2hzOlsiQkMiLCJBRCJdLG1vbnRoTmFtZXM6WyJKYW51 YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJB dWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1v bnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1 bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiU3VuZGF5Iiwi TW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0 dXJkYXkiXSxkYXlOYW1lc1Nob3J0OlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1Iiwi RnJpIiwiU2F0Il0sZGF5TmFtZXNNaW46WyJTdSIsIk1vIiwiVHUiLCJXZSIsIlRoIiwiRnIi LCJTYSJdLGRpZ2l0czpudWxsLGRhdGVGb3JtYXQ6Im1tL2RkL3l5eXkiLGZpcnN0RGF5OjAs aXNSVEw6ITF9fSxsZWFwWWVhcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl92YWxpZGF0ZSh0 LHRoaXMubWluTW9udGgsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkWWVhcik7cmV0dXJu KHQ9ZS55ZWFyKCk8MD9lLnllYXIoKSsxOmUueWVhcigpKSU0PT0wfSx3ZWVrT2ZZZWFyOmZ1 bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLm5ld0RhdGUodCxlLHIpO3JldHVybiBuLmFkZCg0 LShuLmRheU9mV2VlaygpfHw3KSwiZCIpLE1hdGguZmxvb3IoKG4uZGF5T2ZZZWFyKCktMSkv NykrMX0sZGF5c0luTW9udGg6ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl92YWxpZGF0ZSh0 LGUsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkTW9udGgpO3JldHVybiB0aGlzLmRheXNQ ZXJNb250aFtyLm1vbnRoKCktMV0rKDI9PT1yLm1vbnRoKCkmJnRoaXMubGVhcFllYXIoci55 ZWFyKCkpPzE6MCl9LHdlZWtEYXk6ZnVuY3Rpb24odCxlLHIpe3JldHVybih0aGlzLmRheU9m V2Vlayh0LGUscil8fDcpPDZ9LHRvSkQ6ZnVuY3Rpb24odCxlLHIpe3ZhciBpPXRoaXMuX3Zh bGlkYXRlKHQsZSxyLG4ubG9jYWwuaW52YWxpZERhdGUpO3JldHVybiB0PWkueWVhcigpLGU9 aS5tb250aCgpLHI9aS5kYXkoKSx0PDAmJnQrKyxlPD0yJiYodC0tLGUrPTEyKSxNYXRoLmZs b29yKDM2NS4yNSoodCs0NzE2KSkrTWF0aC5mbG9vcigzMC42MDAxKihlKzEpKStyLTE1MjQu NX0sZnJvbUpEOmZ1bmN0aW9uKHQpe3ZhciBlPU1hdGguZmxvb3IodCsuNSkrMTUyNCxyPU1h dGguZmxvb3IoKGUtMTIyLjEpLzM2NS4yNSksbj1NYXRoLmZsb29yKDM2NS4yNSpyKSxpPU1h dGguZmxvb3IoKGUtbikvMzAuNjAwMSksYT1pLU1hdGguZmxvb3IoaTwxND8xOjEzKSxvPXIt TWF0aC5mbG9vcihhPjI/NDcxNjo0NzE1KSxzPWUtbi1NYXRoLmZsb29yKDMwLjYwMDEqaSk7 cmV0dXJuIG88PTAmJm8tLSx0aGlzLm5ld0RhdGUobyxhLHMpfX0pLG4uY2FsZW5kYXJzLmp1 bGlhbj1hfSx7Ii4uL21haW4iOjM0Niwib2JqZWN0LWFzc2lnbiI6MjQ3fV0sMzM5OltmdW5j dGlvbih0LGUscil7dmFyIG49dCgiLi4vbWFpbiIpLGk9dCgib2JqZWN0LWFzc2lnbiIpO2Z1 bmN0aW9uIGEodCl7dGhpcy5sb2NhbD10aGlzLnJlZ2lvbmFsT3B0aW9uc1t0fHwiIl18fHRo aXMucmVnaW9uYWxPcHRpb25zWyIiXX1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuIHQtZSpNYXRo LmZsb29yKHQvZSl9ZnVuY3Rpb24gcyh0LGUpe3JldHVybiBvKHQtMSxlKSsxfWEucHJvdG90 eXBlPW5ldyBuLmJhc2VDYWxlbmRhcixpKGEucHJvdG90eXBlLHtuYW1lOiJNYXlhbiIsamRF cG9jaDo1ODQyODIuNSxoYXNZZWFyWmVybzohMCxtaW5Nb250aDowLGZpcnN0TW9udGg6MCxt aW5EYXk6MCxyZWdpb25hbE9wdGlvbnM6eyIiOntuYW1lOiJNYXlhbiIsZXBvY2hzOlsiIiwi Il0sbW9udGhOYW1lczpbIjAiLCIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjki LCIxMCIsIjExIiwiMTIiLCIxMyIsIjE0IiwiMTUiLCIxNiIsIjE3Il0sbW9udGhOYW1lc1No b3J0OlsiMCIsIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEi LCIxMiIsIjEzIiwiMTQiLCIxNSIsIjE2IiwiMTciXSxkYXlOYW1lczpbIjAiLCIxIiwiMiIs IjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiLCIxMyIsIjE0Iiwi MTUiLCIxNiIsIjE3IiwiMTgiLCIxOSJdLGRheU5hbWVzU2hvcnQ6WyIwIiwiMSIsIjIiLCIz IiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIiwiMTMiLCIxNCIsIjE1 IiwiMTYiLCIxNyIsIjE4IiwiMTkiXSxkYXlOYW1lc01pbjpbIjAiLCIxIiwiMiIsIjMiLCI0 IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiLCIxMyIsIjE0IiwiMTUiLCIx NiIsIjE3IiwiMTgiLCIxOSJdLGRpZ2l0czpudWxsLGRhdGVGb3JtYXQ6IllZWVkubS5kIixm aXJzdERheTowLGlzUlRMOiExLGhhYWJNb250aHM6WyJQb3AiLCJVbyIsIlppcCIsIlpvdHoi LCJUemVjIiwiWHVsIiwiWWF4a2luIiwiTW9sIiwiQ2hlbiIsIllheCIsIlphYyIsIkNlaCIs Ik1hYyIsIkthbmtpbiIsIk11YW4iLCJQYXgiLCJLYXlhYiIsIkN1bWt1IiwiVWF5ZWIiXSx0 em9sa2luTW9udGhzOlsiSW1peCIsIklrIiwiQWtiYWwiLCJLYW4iLCJDaGljY2hhbiIsIkNp bWkiLCJNYW5payIsIkxhbWF0IiwiTXVsdWMiLCJPYyIsIkNodWVuIiwiRWIiLCJCZW4iLCJJ eCIsIk1lbiIsIkNpYiIsIkNhYmFuIiwiRXR6bmFiIiwiQ2F1YWMiLCJBaGF1Il19fSxsZWFw WWVhcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRo LHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZFllYXIpLCExfSxmb3JtYXRZZWFyOmZ1bmN0 aW9uKHQpe3Q9dGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LG4u bG9jYWwuaW52YWxpZFllYXIpLnllYXIoKTt2YXIgZT1NYXRoLmZsb29yKHQvNDAwKTtyZXR1 cm4gdCU9NDAwLHQrPXQ8MD80MDA6MCxlKyIuIitNYXRoLmZsb29yKHQvMjApKyIuIit0JTIw fSxmb3JZZWFyOmZ1bmN0aW9uKHQpe2lmKCh0PXQuc3BsaXQoIi4iKSkubGVuZ3RoPDMpdGhy b3ciSW52YWxpZCBNYXlhbiB5ZWFyIjtmb3IodmFyIGU9MCxyPTA7cjx0Lmxlbmd0aDtyKysp e3ZhciBuPXBhcnNlSW50KHRbcl0sMTApO2lmKE1hdGguYWJzKG4pPjE5fHxyPjAmJm48MCl0 aHJvdyJJbnZhbGlkIE1heWFuIHllYXIiO2U9MjAqZStufXJldHVybiBlfSxtb250aHNJblll YXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlKHQsdGhpcy5taW5Nb250aCx0 aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRZZWFyKSwxOH0sd2Vla09mWWVhcjpmdW5jdGlv bih0LGUscil7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlKHQsZSxyLG4ubG9jYWwuaW52YWxpZERh dGUpLDB9LGRheXNJblllYXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlKHQs dGhpcy5taW5Nb250aCx0aGlzLm1pbkRheSxuLmxvY2FsLmludmFsaWRZZWFyKSwzNjB9LGRh eXNJbk1vbnRoOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlKHQsZSx0aGlz Lm1pbkRheSxuLmxvY2FsLmludmFsaWRNb250aCksMjB9LGRheXNJbldlZWs6ZnVuY3Rpb24o KXtyZXR1cm4gNX0sZGF5T2ZXZWVrOmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdGhpcy5fdmFs aWRhdGUodCxlLHIsbi5sb2NhbC5pbnZhbGlkRGF0ZSkuZGF5KCl9LHdlZWtEYXk6ZnVuY3Rp b24odCxlLHIpe3JldHVybiB0aGlzLl92YWxpZGF0ZSh0LGUscixuLmxvY2FsLmludmFsaWRE YXRlKSwhMH0sZXh0cmFJbmZvOmZ1bmN0aW9uKHQsZSxyKXt2YXIgaT10aGlzLl92YWxpZGF0 ZSh0LGUscixuLmxvY2FsLmludmFsaWREYXRlKS50b0pEKCksYT10aGlzLl90b0hhYWIoaSks bz10aGlzLl90b1R6b2xraW4oaSk7cmV0dXJue2hhYWJNb250aE5hbWU6dGhpcy5sb2NhbC5o YWFiTW9udGhzW2FbMF0tMV0saGFhYk1vbnRoOmFbMF0saGFhYkRheTphWzFdLHR6b2xraW5E YXlOYW1lOnRoaXMubG9jYWwudHpvbGtpbk1vbnRoc1tvWzBdLTFdLHR6b2xraW5EYXk6b1sw XSx0em9sa2luVHJlY2VuYTpvWzFdfX0sX3RvSGFhYjpmdW5jdGlvbih0KXt2YXIgZT1vKCh0 LT10aGlzLmpkRXBvY2gpKzgrMzQwLDM2NSk7cmV0dXJuW01hdGguZmxvb3IoZS8yMCkrMSxv KGUsMjApXX0sX3RvVHpvbGtpbjpmdW5jdGlvbih0KXtyZXR1cm5bcygodC09dGhpcy5qZEVw b2NoKSsyMCwyMCkscyh0KzQsMTMpXX0sdG9KRDpmdW5jdGlvbih0LGUscil7dmFyIGk9dGhp cy5fdmFsaWRhdGUodCxlLHIsbi5sb2NhbC5pbnZhbGlkRGF0ZSk7cmV0dXJuIGkuZGF5KCkr MjAqaS5tb250aCgpKzM2MCppLnllYXIoKSt0aGlzLmpkRXBvY2h9LGZyb21KRDpmdW5jdGlv bih0KXt0PU1hdGguZmxvb3IodCkrLjUtdGhpcy5qZEVwb2NoO3ZhciBlPU1hdGguZmxvb3Io dC8zNjApO3QlPTM2MCx0Kz10PDA/MzYwOjA7dmFyIHI9TWF0aC5mbG9vcih0LzIwKSxuPXQl MjA7cmV0dXJuIHRoaXMubmV3RGF0ZShlLHIsbil9fSksbi5jYWxlbmRhcnMubWF5YW49YX0s eyIuLi9tYWluIjozNDYsIm9iamVjdC1hc3NpZ24iOjI0N31dLDM0MDpbZnVuY3Rpb24odCxl LHIpe3ZhciBuPXQoIi4uL21haW4iKSxpPXQoIm9iamVjdC1hc3NpZ24iKTtmdW5jdGlvbiBh KHQpe3RoaXMubG9jYWw9dGhpcy5yZWdpb25hbE9wdGlvbnNbdHx8IiJdfHx0aGlzLnJlZ2lv bmFsT3B0aW9uc1siIl19YS5wcm90b3R5cGU9bmV3IG4uYmFzZUNhbGVuZGFyO3ZhciBvPW4u aW5zdGFuY2UoImdyZWdvcmlhbiIpO2koYS5wcm90b3R5cGUse25hbWU6Ik5hbmFrc2hhaGki LGpkRXBvY2g6MjI1NzY3My41LGRheXNQZXJNb250aDpbMzEsMzEsMzEsMzEsMzEsMzAsMzAs MzAsMzAsMzAsMzAsMzBdLGhhc1llYXJaZXJvOiExLG1pbk1vbnRoOjEsZmlyc3RNb250aDox LG1pbkRheToxLHJlZ2lvbmFsT3B0aW9uczp7IiI6e25hbWU6Ik5hbmFrc2hhaGkiLGVwb2No czpbIkJOIiwiQU4iXSxtb250aE5hbWVzOlsiQ2hldCIsIlZhaXNha2giLCJKZXRoIiwiSGFy aCIsIlNhd2FuIiwiQmhhZG9uIiwiQXNzdSIsIkthdGFrIiwiTWFnaGFyIiwiUG9oIiwiTWFn aCIsIlBoYWd1biJdLG1vbnRoTmFtZXNTaG9ydDpbIkNoZSIsIlZhaSIsIkpldCIsIkhhciIs IlNhdyIsIkJoYSIsIkFzcyIsIkthdCIsIk1nciIsIlBvaCIsIk1naCIsIlBoYSJdLGRheU5h bWVzOlsiU29tdmFhciIsIk1hbmdhbHZhciIsIkJ1ZGh2YWFyIiwiVmVlcnZhYXIiLCJTaHVr YXJ2YWFyIiwiU2FuaWNoYXJ2YWFyIiwiRXR2YWFyIl0sZGF5TmFtZXNTaG9ydDpbIlNvbSIs Ik1hbmdhbCIsIkJ1ZGgiLCJWZWVyIiwiU2h1a2FyIiwiU2FuaWNoYXIiLCJFdCJdLGRheU5h bWVzTWluOlsiU28iLCJNYSIsIkJ1IiwiVmUiLCJTaCIsIlNhIiwiRXQiXSxkaWdpdHM6bnVs bCxkYXRlRm9ybWF0OiJkZC1tbS15eXl5IixmaXJzdERheTowLGlzUlRMOiExfX0sbGVhcFll YXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRo aXMubWluRGF5LG4ubG9jYWwuaW52YWxpZFllYXJ8fG4ucmVnaW9uYWxPcHRpb25zWyIiXS5p bnZhbGlkWWVhcik7cmV0dXJuIG8ubGVhcFllYXIoZS55ZWFyKCkrKGUueWVhcigpPDE/MTow KSsxNDY5KX0sd2Vla09mWWVhcjpmdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5uZXdEYXRl KHQsZSxyKTtyZXR1cm4gbi5hZGQoMS0obi5kYXlPZldlZWsoKXx8NyksImQiKSxNYXRoLmZs b29yKChuLmRheU9mWWVhcigpLTEpLzcpKzF9LGRheXNJbk1vbnRoOmZ1bmN0aW9uKHQsZSl7 dmFyIHI9dGhpcy5fdmFsaWRhdGUodCxlLHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZE1v bnRoKTtyZXR1cm4gdGhpcy5kYXlzUGVyTW9udGhbci5tb250aCgpLTFdKygxMj09PXIubW9u dGgoKSYmdGhpcy5sZWFwWWVhcihyLnllYXIoKSk/MTowKX0sd2Vla0RheTpmdW5jdGlvbih0 LGUscil7cmV0dXJuKHRoaXMuZGF5T2ZXZWVrKHQsZSxyKXx8Nyk8Nn0sdG9KRDpmdW5jdGlv bih0LGUscil7dmFyIGk9dGhpcy5fdmFsaWRhdGUodCxlLHIsbi5sb2NhbC5pbnZhbGlkTW9u dGgpOyh0PWkueWVhcigpKTwwJiZ0Kys7Zm9yKHZhciBhPWkuZGF5KCkscz0xO3M8aS5tb250 aCgpO3MrKylhKz10aGlzLmRheXNQZXJNb250aFtzLTFdO3JldHVybiBhK28udG9KRCh0KzE0 NjgsMywxMyl9LGZyb21KRDpmdW5jdGlvbih0KXt0PU1hdGguZmxvb3IodCsuNSk7Zm9yKHZh ciBlPU1hdGguZmxvb3IoKHQtKHRoaXMuamRFcG9jaC0xKSkvMzY2KTt0Pj10aGlzLnRvSkQo ZSsxLDEsMSk7KWUrKztmb3IodmFyIHI9dC1NYXRoLmZsb29yKHRoaXMudG9KRChlLDEsMSkr LjUpKzEsbj0xO3I+dGhpcy5kYXlzSW5Nb250aChlLG4pOylyLT10aGlzLmRheXNJbk1vbnRo KGUsbiksbisrO3JldHVybiB0aGlzLm5ld0RhdGUoZSxuLHIpfX0pLG4uY2FsZW5kYXJzLm5h bmFrc2hhaGk9YX0seyIuLi9tYWluIjozNDYsIm9iamVjdC1hc3NpZ24iOjI0N31dLDM0MTpb ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoIi4uL21haW4iKSxpPXQoIm9iamVjdC1hc3NpZ24i KTtmdW5jdGlvbiBhKHQpe3RoaXMubG9jYWw9dGhpcy5yZWdpb25hbE9wdGlvbnNbdHx8IiJd fHx0aGlzLnJlZ2lvbmFsT3B0aW9uc1siIl19YS5wcm90b3R5cGU9bmV3IG4uYmFzZUNhbGVu ZGFyLGkoYS5wcm90b3R5cGUse25hbWU6Ik5lcGFsaSIsamRFcG9jaDoxNzAwNzA5LjUsZGF5 c1Blck1vbnRoOlszMSwzMSwzMiwzMiwzMSwzMCwzMCwyOSwzMCwyOSwzMCwzMF0saGFzWWVh clplcm86ITEsbWluTW9udGg6MSxmaXJzdE1vbnRoOjEsbWluRGF5OjEsZGF5c1BlclllYXI6 MzY1LHJlZ2lvbmFsT3B0aW9uczp7IiI6e25hbWU6Ik5lcGFsaSIsZXBvY2hzOlsiQkJTIiwi QUJTIl0sbW9udGhOYW1lczpbIkJhaXNha2giLCJKZXN0aGEiLCJBc2hhZGgiLCJTaHJhd2Fu IiwiQmhhZHJhIiwiQXNod2luIiwiS2FydGlrIiwiTWFuZ3NpciIsIlBhdXNoIiwiTWFuZ2gi LCJGYWxndW4iLCJDaGFpdHJhIl0sbW9udGhOYW1lc1Nob3J0OlsiQmFpIiwiSmUiLCJBcyIs IlNocmEiLCJCaGEiLCJBc2giLCJLYXIiLCJNYW5nIiwiUGF1IiwiTWEiLCJGYWwiLCJDaGFp Il0sZGF5TmFtZXM6WyJBYWl0YWJhYXIiLCJTb21iYWFyIiwiTWFuZ2xiYWFyIiwiQnVkaGFi YWFyIiwiQmloaWJhYXIiLCJTaHVrcmFiYWFyIiwiU2hhbmliYWFyIl0sZGF5TmFtZXNTaG9y dDpbIkFhaXRhIiwiU29tIiwiTWFuZ2wiLCJCdWRoYSIsIkJpaGkiLCJTaHVrcmEiLCJTaGFu aSJdLGRheU5hbWVzTWluOlsiQWFpIiwiU28iLCJNYW4iLCJCdSIsIkJpIiwiU2h1IiwiU2hh Il0sZGlnaXRzOm51bGwsZGF0ZUZvcm1hdDoiZGQvbW0veXl5eSIsZmlyc3REYXk6MSxpc1JU TDohMX19LGxlYXBZZWFyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRheXNJblllYXIodCkh PT10aGlzLmRheXNQZXJZZWFyfSx3ZWVrT2ZZZWFyOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10 aGlzLm5ld0RhdGUodCxlLHIpO3JldHVybiBuLmFkZCgtbi5kYXlPZldlZWsoKSwiZCIpLE1h dGguZmxvb3IoKG4uZGF5T2ZZZWFyKCktMSkvNykrMX0sZGF5c0luWWVhcjpmdW5jdGlvbih0 KXtpZih0PXRoaXMuX3ZhbGlkYXRlKHQsdGhpcy5taW5Nb250aCx0aGlzLm1pbkRheSxuLmxv Y2FsLmludmFsaWRZZWFyKS55ZWFyKCksdm9pZCAwPT09dGhpcy5ORVBBTElfQ0FMRU5EQVJf REFUQVt0XSlyZXR1cm4gdGhpcy5kYXlzUGVyWWVhcjtmb3IodmFyIGU9MCxyPXRoaXMubWlu TW9udGg7cjw9MTI7cisrKWUrPXRoaXMuTkVQQUxJX0NBTEVOREFSX0RBVEFbdF1bcl07cmV0 dXJuIGV9LGRheXNJbk1vbnRoOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQueWVhciYmKGU9dC5t b250aCgpLHQ9dC55ZWFyKCkpLHRoaXMuX3ZhbGlkYXRlKHQsZSx0aGlzLm1pbkRheSxuLmxv Y2FsLmludmFsaWRNb250aCksdm9pZCAwPT09dGhpcy5ORVBBTElfQ0FMRU5EQVJfREFUQVt0 XT90aGlzLmRheXNQZXJNb250aFtlLTFdOnRoaXMuTkVQQUxJX0NBTEVOREFSX0RBVEFbdF1b ZV19LHdlZWtEYXk6ZnVuY3Rpb24odCxlLHIpe3JldHVybiA2IT09dGhpcy5kYXlPZldlZWso dCxlLHIpfSx0b0pEOmZ1bmN0aW9uKHQsZSxyKXt2YXIgaT10aGlzLl92YWxpZGF0ZSh0LGUs cixuLmxvY2FsLmludmFsaWREYXRlKTt0PWkueWVhcigpLGU9aS5tb250aCgpLHI9aS5kYXko KTt2YXIgYT1uLmluc3RhbmNlKCksbz0wLHM9ZSxsPXQ7dGhpcy5fY3JlYXRlTWlzc2luZ0Nh bGVuZGFyRGF0YSh0KTt2YXIgYz10LShzPjl8fDk9PT1zJiZyPj10aGlzLk5FUEFMSV9DQUxF TkRBUl9EQVRBW2xdWzBdPzU2OjU3KTtmb3IoOSE9PWUmJihvPXIscy0tKTs5IT09czspczw9 MCYmKHM9MTIsbC0tKSxvKz10aGlzLk5FUEFMSV9DQUxFTkRBUl9EQVRBW2xdW3NdLHMtLTty ZXR1cm4gOT09PWU/KG8rPXItdGhpcy5ORVBBTElfQ0FMRU5EQVJfREFUQVtsXVswXSk8MCYm KG8rPWEuZGF5c0luWWVhcihjKSk6bys9dGhpcy5ORVBBTElfQ0FMRU5EQVJfREFUQVtsXVs5 XS10aGlzLk5FUEFMSV9DQUxFTkRBUl9EQVRBW2xdWzBdLGEubmV3RGF0ZShjLDEsMSkuYWRk KG8sImQiKS50b0pEKCl9LGZyb21KRDpmdW5jdGlvbih0KXt2YXIgZT1uLmluc3RhbmNlKCku ZnJvbUpEKHQpLHI9ZS55ZWFyKCksaT1lLmRheU9mWWVhcigpLGE9cis1Njt0aGlzLl9jcmVh dGVNaXNzaW5nQ2FsZW5kYXJEYXRhKGEpO2Zvcih2YXIgbz05LHM9dGhpcy5ORVBBTElfQ0FM RU5EQVJfREFUQVthXVswXSxsPXRoaXMuTkVQQUxJX0NBTEVOREFSX0RBVEFbYV1bb10tcysx O2k+bDspKytvPjEyJiYobz0xLGErKyksbCs9dGhpcy5ORVBBTElfQ0FMRU5EQVJfREFUQVth XVtvXTt2YXIgYz10aGlzLk5FUEFMSV9DQUxFTkRBUl9EQVRBW2FdW29dLShsLWkpO3JldHVy biB0aGlzLm5ld0RhdGUoYSxvLGMpfSxfY3JlYXRlTWlzc2luZ0NhbGVuZGFyRGF0YTpmdW5j dGlvbih0KXt2YXIgZT10aGlzLmRheXNQZXJNb250aC5zbGljZSgwKTtlLnVuc2hpZnQoMTcp O2Zvcih2YXIgcj10LTE7cjx0KzI7cisrKXZvaWQgMD09PXRoaXMuTkVQQUxJX0NBTEVOREFS X0RBVEFbcl0mJih0aGlzLk5FUEFMSV9DQUxFTkRBUl9EQVRBW3JdPWUpfSxORVBBTElfQ0FM RU5EQVJfREFUQTp7MTk3MDpbMTgsMzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMzAsMjksMzAs MzBdLDE5NzE6WzE4LDMxLDMxLDMyLDMxLDMyLDMwLDMwLDI5LDMwLDI5LDMwLDMwXSwxOTcy OlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwyOSwzMCwzMF0sMTk3MzpbMTksMzAs MzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMzAsMjksMzFdLDE5NzQ6WzE5LDMxLDMxLDMyLDMw LDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwxOTc1OlsxOCwzMSwzMSwzMiwzMiwzMCwzMSwz MCwyOSwzMCwyOSwzMCwzMF0sMTk3NjpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjks MjksMzAsMzFdLDE5Nzc6WzE4LDMxLDMyLDMxLDMyLDMxLDMxLDI5LDMwLDI5LDMwLDI5LDMx XSwxOTc4OlsxOCwzMSwzMSwzMiwzMSwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMTk3OTpb MTgsMzEsMzEsMzIsMzIsMzEsMzAsMzAsMjksMzAsMjksMzAsMzBdLDE5ODA6WzE3LDMxLDMy LDMxLDMyLDMxLDMwLDMwLDMwLDI5LDI5LDMwLDMxXSwxOTgxOlsxOCwzMSwzMSwzMSwzMiwz MSwzMSwyOSwzMCwzMCwyOSwzMCwzMF0sMTk4MjpbMTgsMzEsMzEsMzIsMzEsMzEsMzEsMzAs MjksMzAsMjksMzAsMzBdLDE5ODM6WzE4LDMxLDMxLDMyLDMyLDMxLDMwLDMwLDI5LDMwLDI5 LDMwLDMwXSwxOTg0OlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwyOSwzMCwzMV0s MTk4NTpbMTgsMzEsMzEsMzEsMzIsMzEsMzEsMjksMzAsMzAsMjksMzAsMzBdLDE5ODY6WzE4 LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwxOTg3OlsxOCwzMSwzMiwz MSwzMiwzMSwzMCwzMCwyOSwzMCwyOSwzMCwzMF0sMTk4ODpbMTcsMzEsMzIsMzEsMzIsMzEs MzAsMzAsMzAsMjksMjksMzAsMzFdLDE5ODk6WzE4LDMxLDMxLDMxLDMyLDMxLDMxLDMwLDI5 LDMwLDI5LDMwLDMwXSwxOTkwOlsxOCwzMSwzMSwzMiwzMSwzMSwzMSwzMCwyOSwzMCwyOSwz MCwzMF0sMTk5MTpbMTgsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMjksMzAsMjksMzAsMzBdLDE5 OTI6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDMwLDI5LDMxXSwxOTkzOlsxOCwz MSwzMSwzMSwzMiwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMTk5NDpbMTgsMzEsMzEsMzIs MzEsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDE5OTU6WzE3LDMxLDMyLDMxLDMyLDMxLDMw LDMwLDMwLDI5LDI5LDMwLDMwXSwxOTk2OlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwy OSwzMCwyOSwzMV0sMTk5NzpbMTgsMzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMzAsMjksMzAs MzBdLDE5OTg6WzE4LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwxOTk5 OlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwyOSwzMCwzMV0sMmUzOlsxNywzMCwz MiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwzMCwyOSwzMV0sMjAwMTpbMTgsMzEsMzEsMzIsMzEs MzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDIwMDI6WzE4LDMxLDMxLDMyLDMyLDMxLDMwLDMw LDI5LDMwLDI5LDMwLDMwXSwyMDAzOlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwy OSwzMCwzMV0sMjAwNDpbMTcsMzAsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMzAsMjksMzFd LDIwMDU6WzE4LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDA2Olsx OCwzMSwzMSwzMiwzMiwzMSwzMCwzMCwyOSwzMCwyOSwzMCwzMF0sMjAwNzpbMTcsMzEsMzIs MzEsMzIsMzEsMzAsMzAsMzAsMjksMjksMzAsMzFdLDIwMDg6WzE3LDMxLDMxLDMxLDMyLDMx LDMxLDI5LDMwLDMwLDI5LDI5LDMxXSwyMDA5OlsxOCwzMSwzMSwzMiwzMSwzMSwzMSwzMCwy OSwzMCwyOSwzMCwzMF0sMjAxMDpbMTgsMzEsMzEsMzIsMzIsMzEsMzAsMzAsMjksMzAsMjks MzAsMzBdLDIwMTE6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDI5LDMwLDMxXSwy MDEyOlsxNywzMSwzMSwzMSwzMiwzMSwzMSwyOSwzMCwzMCwyOSwzMCwzMF0sMjAxMzpbMTgs MzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDIwMTQ6WzE4LDMxLDMxLDMy LDMyLDMxLDMwLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDE1OlsxNywzMSwzMiwzMSwzMiwzMSwz MCwzMCwzMCwyOSwyOSwzMCwzMV0sMjAxNjpbMTcsMzEsMzEsMzEsMzIsMzEsMzEsMjksMzAs MzAsMjksMzAsMzBdLDIwMTc6WzE4LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5LDMw LDMwXSwyMDE4OlsxOCwzMSwzMiwzMSwzMiwzMSwzMCwzMCwyOSwzMCwyOSwzMCwzMF0sMjAx OTpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMzAsMjksMzFdLDIwMjA6WzE3LDMx LDMxLDMxLDMyLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDIxOlsxOCwzMSwzMSwzMiwz MSwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMjAyMjpbMTcsMzEsMzIsMzEsMzIsMzEsMzAs MzAsMzAsMjksMjksMzAsMzBdLDIwMjM6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5 LDMwLDI5LDMxXSwyMDI0OlsxNywzMSwzMSwzMSwzMiwzMSwzMSwzMCwyOSwzMCwyOSwzMCwz MF0sMjAyNTpbMTgsMzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDIwMjY6 WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDI5LDMwLDMxXSwyMDI3OlsxNywzMCwz MiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwzMCwyOSwzMV0sMjAyODpbMTcsMzEsMzEsMzIsMzEs MzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDIwMjk6WzE4LDMxLDMxLDMyLDMxLDMyLDMwLDMw LDI5LDMwLDI5LDMwLDMwXSwyMDMwOlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwzMCwz MCwzMCwzMV0sMjAzMTpbMTcsMzEsMzIsMzEsMzIsMzEsMzEsMzEsMzEsMzEsMzEsMzEsMzFd LDIwMzI6WzE3LDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyXSwyMDMzOlsx OCwzMSwzMSwzMiwzMiwzMSwzMCwzMCwyOSwzMCwyOSwzMCwzMF0sMjAzNDpbMTcsMzEsMzIs MzEsMzIsMzEsMzAsMzAsMzAsMjksMjksMzAsMzFdLDIwMzU6WzE3LDMwLDMyLDMxLDMyLDMx LDMxLDI5LDMwLDMwLDI5LDI5LDMxXSwyMDM2OlsxNywzMSwzMSwzMiwzMSwzMSwzMSwzMCwy OSwzMCwyOSwzMCwzMF0sMjAzNzpbMTgsMzEsMzEsMzIsMzIsMzEsMzAsMzAsMjksMzAsMjks MzAsMzBdLDIwMzg6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDI5LDMwLDMxXSwy MDM5OlsxNywzMSwzMSwzMSwzMiwzMSwzMSwyOSwzMCwzMCwyOSwzMCwzMF0sMjA0MDpbMTcs MzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDIwNDE6WzE4LDMxLDMxLDMy LDMyLDMxLDMwLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDQyOlsxNywzMSwzMiwzMSwzMiwzMSwz MCwzMCwzMCwyOSwyOSwzMCwzMV0sMjA0MzpbMTcsMzEsMzEsMzEsMzIsMzEsMzEsMjksMzAs MzAsMjksMzAsMzBdLDIwNDQ6WzE3LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5LDMw LDMwXSwyMDQ1OlsxOCwzMSwzMiwzMSwzMiwzMSwzMCwzMCwyOSwzMCwyOSwzMCwzMF0sMjA0 NjpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMjksMzAsMzFdLDIwNDc6WzE3LDMx LDMxLDMxLDMyLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDQ4OlsxNywzMSwzMSwzMiwz MSwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMjA0OTpbMTcsMzEsMzIsMzEsMzIsMzEsMzAs MzAsMzAsMjksMjksMzAsMzBdLDIwNTA6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5 LDMwLDI5LDMxXSwyMDUxOlsxNywzMSwzMSwzMSwzMiwzMSwzMSwzMCwyOSwzMCwyOSwzMCwz MF0sMjA1MjpbMTcsMzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDIwNTM6 WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDI5LDMwLDMwXSwyMDU0OlsxNywzMSwz MiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwzMCwyOSwzMV0sMjA1NTpbMTcsMzEsMzEsMzIsMzEs MzEsMzEsMzAsMjksMzAsMzAsMjksMzBdLDIwNTY6WzE3LDMxLDMxLDMyLDMxLDMyLDMwLDMw LDI5LDMwLDI5LDMwLDMwXSwyMDU3OlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwy OSwzMCwzMV0sMjA1ODpbMTcsMzAsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMzAsMjksMzFd LDIwNTk6WzE3LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDYwOlsx NywzMSwzMSwzMiwzMiwzMSwzMCwzMCwyOSwzMCwyOSwzMCwzMF0sMjA2MTpbMTcsMzEsMzIs MzEsMzIsMzEsMzAsMzAsMzAsMjksMjksMzAsMzFdLDIwNjI6WzE3LDMwLDMyLDMxLDMyLDMx LDMxLDI5LDMwLDI5LDMwLDI5LDMxXSwyMDYzOlsxNywzMSwzMSwzMiwzMSwzMSwzMSwzMCwy OSwzMCwyOSwzMCwzMF0sMjA2NDpbMTcsMzEsMzEsMzIsMzIsMzEsMzAsMzAsMjksMzAsMjks MzAsMzBdLDIwNjU6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDI5LDMwLDMxXSwy MDY2OlsxNywzMSwzMSwzMSwzMiwzMSwzMSwyOSwzMCwzMCwyOSwyOSwzMV0sMjA2NzpbMTcs MzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDIwNjg6WzE3LDMxLDMxLDMy LDMyLDMxLDMwLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDY5OlsxNywzMSwzMiwzMSwzMiwzMSwz MCwzMCwzMCwyOSwyOSwzMCwzMV0sMjA3MDpbMTcsMzEsMzEsMzEsMzIsMzEsMzEsMjksMzAs MzAsMjksMzAsMzBdLDIwNzE6WzE3LDMxLDMxLDMyLDMxLDMxLDMxLDMwLDI5LDMwLDI5LDMw LDMwXSwyMDcyOlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwyOSwzMCwyOSwzMCwzMF0sMjA3 MzpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAsMjksMjksMzAsMzFdLDIwNzQ6WzE3LDMx LDMxLDMxLDMyLDMxLDMxLDMwLDI5LDMwLDI5LDMwLDMwXSwyMDc1OlsxNywzMSwzMSwzMiwz MSwzMSwzMSwzMCwyOSwzMCwyOSwzMCwzMF0sMjA3NjpbMTYsMzEsMzIsMzEsMzIsMzEsMzAs MzAsMzAsMjksMjksMzAsMzBdLDIwNzc6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5 LDMwLDI5LDMxXSwyMDc4OlsxNywzMSwzMSwzMSwzMiwzMSwzMSwzMCwyOSwzMCwyOSwzMCwz MF0sMjA3OTpbMTcsMzEsMzEsMzIsMzEsMzEsMzEsMzAsMjksMzAsMjksMzAsMzBdLDIwODA6 WzE2LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDI5LDMwLDMwXSwyMDgxOlsxNywzMSwz MSwzMiwzMiwzMSwzMCwzMCwzMCwyOSwzMCwzMCwzMF0sMjA4MjpbMTcsMzEsMzIsMzEsMzIs MzEsMzAsMzAsMzAsMjksMzAsMzAsMzBdLDIwODM6WzE3LDMxLDMxLDMyLDMxLDMxLDMwLDMw LDMwLDI5LDMwLDMwLDMwXSwyMDg0OlsxNywzMSwzMSwzMiwzMSwzMSwzMCwzMCwzMCwyOSwz MCwzMCwzMF0sMjA4NTpbMTcsMzEsMzIsMzEsMzIsMzEsMzEsMzAsMzAsMjksMzAsMzAsMzBd LDIwODY6WzE3LDMxLDMyLDMxLDMyLDMxLDMwLDMwLDMwLDI5LDMwLDMwLDMwXSwyMDg3Olsx NiwzMSwzMSwzMiwzMSwzMSwzMSwzMCwzMCwyOSwzMCwzMCwzMF0sMjA4ODpbMTYsMzAsMzEs MzIsMzIsMzAsMzEsMzAsMzAsMjksMzAsMzAsMzBdLDIwODk6WzE3LDMxLDMyLDMxLDMyLDMx LDMwLDMwLDMwLDI5LDMwLDMwLDMwXSwyMDkwOlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwz MCwyOSwzMCwzMCwzMF0sMjA5MTpbMTYsMzEsMzEsMzIsMzEsMzEsMzEsMzAsMzAsMjksMzAs MzAsMzBdLDIwOTI6WzE2LDMxLDMxLDMyLDMyLDMxLDMwLDMwLDMwLDI5LDMwLDMwLDMwXSwy MDkzOlsxNywzMSwzMiwzMSwzMiwzMSwzMCwzMCwzMCwyOSwzMCwzMCwzMF0sMjA5NDpbMTcs MzEsMzEsMzIsMzEsMzEsMzAsMzAsMzAsMjksMzAsMzAsMzBdLDIwOTU6WzE3LDMxLDMxLDMy LDMxLDMxLDMxLDMwLDI5LDMwLDMwLDMwLDMwXSwyMDk2OlsxNywzMCwzMSwzMiwzMiwzMSwz MCwzMCwyOSwzMCwyOSwzMCwzMF0sMjA5NzpbMTcsMzEsMzIsMzEsMzIsMzEsMzAsMzAsMzAs MjksMzAsMzAsMzBdLDIwOTg6WzE3LDMxLDMxLDMyLDMxLDMxLDMxLDI5LDMwLDI5LDMwLDMw LDMxXSwyMDk5OlsxNywzMSwzMSwzMiwzMSwzMSwzMSwzMCwyOSwyOSwzMCwzMCwzMF0sMjEw MDpbMTcsMzEsMzIsMzEsMzIsMzAsMzEsMzAsMjksMzAsMjksMzAsMzBdfX0pLG4uY2FsZW5k YXJzLm5lcGFsaT1hfSx7Ii4uL21haW4iOjM0Niwib2JqZWN0LWFzc2lnbiI6MjQ3fV0sMzQy OltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiLi4vbWFpbiIpLGk9dCgib2JqZWN0LWFzc2ln biIpO2Z1bmN0aW9uIGEodCl7dGhpcy5sb2NhbD10aGlzLnJlZ2lvbmFsT3B0aW9uc1t0fHwi Il18fHRoaXMucmVnaW9uYWxPcHRpb25zWyIiXX1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuIHQt ZSpNYXRoLmZsb29yKHQvZSl9YS5wcm90b3R5cGU9bmV3IG4uYmFzZUNhbGVuZGFyLGkoYS5w cm90b3R5cGUse25hbWU6IlBlcnNpYW4iLGpkRXBvY2g6MTk0ODMyMC41LGRheXNQZXJNb250 aDpbMzEsMzEsMzEsMzEsMzEsMzEsMzAsMzAsMzAsMzAsMzAsMjldLGhhc1llYXJaZXJvOiEx LG1pbk1vbnRoOjEsZmlyc3RNb250aDoxLG1pbkRheToxLHJlZ2lvbmFsT3B0aW9uczp7IiI6 e25hbWU6IlBlcnNpYW4iLGVwb2NoczpbIkJQIiwiQVAiXSxtb250aE5hbWVzOlsiRmFydmFy ZGluIiwiT3JkaWJlaGVzaHQiLCJLaG9yZGFkIiwiVGlyIiwiTW9yZGFkIiwiU2hhaHJpdmFy IiwiTWVociIsIkFiYW4iLCJBemFyIiwiRGF5IiwiQmFobWFuIiwiRXNmYW5kIl0sbW9udGhO YW1lc1Nob3J0OlsiRmFyIiwiT3JkIiwiS2hvIiwiVGlyIiwiTW9yIiwiU2hhIiwiTWVoIiwi QWJhIiwiQXphIiwiRGF5IiwiQmFoIiwiRXNmIl0sZGF5TmFtZXM6WyJZZWtzaGFtYmUiLCJE b3NoYW1iZSIsIlNlc2hhbWJlIiwiQ2hceGU2aGFyc2hhbWJlIiwiUGFuanNoYW1iZSIsIkpv bSdlIiwiU2hhbWJlIl0sZGF5TmFtZXNTaG9ydDpbIlllayIsIkRvIiwiU2UiLCJDaFx4ZTYi LCJQYW5qIiwiSm9tIiwiU2hhIl0sZGF5TmFtZXNNaW46WyJZZSIsIkRvIiwiU2UiLCJDaCIs IlBhIiwiSm8iLCJTaCJdLGRpZ2l0czpudWxsLGRhdGVGb3JtYXQ6Inl5eXkvbW0vZGQiLGZp cnN0RGF5OjYsaXNSVEw6ITF9fSxsZWFwWWVhcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl92 YWxpZGF0ZSh0LHRoaXMubWluTW9udGgsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkWWVh cik7cmV0dXJuIDY4MiooKGUueWVhcigpLShlLnllYXIoKT4wPzQ3NDo0NzMpKSUyODIwKzQ3 NCszOCklMjgxNjw2ODJ9LHdlZWtPZlllYXI6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMu bmV3RGF0ZSh0LGUscik7cmV0dXJuIG4uYWRkKC0obi5kYXlPZldlZWsoKSsxKSU3LCJkIiks TWF0aC5mbG9vcigobi5kYXlPZlllYXIoKS0xKS83KSsxfSxkYXlzSW5Nb250aDpmdW5jdGlv bih0LGUpe3ZhciByPXRoaXMuX3ZhbGlkYXRlKHQsZSx0aGlzLm1pbkRheSxuLmxvY2FsLmlu dmFsaWRNb250aCk7cmV0dXJuIHRoaXMuZGF5c1Blck1vbnRoW3IubW9udGgoKS0xXSsoMTI9 PT1yLm1vbnRoKCkmJnRoaXMubGVhcFllYXIoci55ZWFyKCkpPzE6MCl9LHdlZWtEYXk6ZnVu Y3Rpb24odCxlLHIpe3JldHVybiA1IT09dGhpcy5kYXlPZldlZWsodCxlLHIpfSx0b0pEOmZ1 bmN0aW9uKHQsZSxyKXt2YXIgaT10aGlzLl92YWxpZGF0ZSh0LGUscixuLmxvY2FsLmludmFs aWREYXRlKTt0PWkueWVhcigpLGU9aS5tb250aCgpLHI9aS5kYXkoKTt2YXIgYT10LSh0Pj0w PzQ3NDo0NzMpLHM9NDc0K28oYSwyODIwKTtyZXR1cm4gcisoZTw9Nz8zMSooZS0xKTozMCoo ZS0xKSs2KStNYXRoLmZsb29yKCg2ODIqcy0xMTApLzI4MTYpKzM2NSoocy0xKSsxMDI5OTgz Kk1hdGguZmxvb3IoYS8yODIwKSt0aGlzLmpkRXBvY2gtMX0sZnJvbUpEOmZ1bmN0aW9uKHQp e3ZhciBlPSh0PU1hdGguZmxvb3IodCkrLjUpLXRoaXMudG9KRCg0NzUsMSwxKSxyPU1hdGgu Zmxvb3IoZS8xMDI5OTgzKSxuPW8oZSwxMDI5OTgzKSxpPTI4MjA7aWYoMTAyOTk4MiE9PW4p e3ZhciBhPU1hdGguZmxvb3Iobi8zNjYpLHM9byhuLDM2Nik7aT1NYXRoLmZsb29yKCgyMTM0 KmErMjgxNipzKzI4MTUpLzEwMjg1MjIpK2ErMX12YXIgbD1pKzI4MjAqcis0NzQ7bD1sPD0w P2wtMTpsO3ZhciBjPXQtdGhpcy50b0pEKGwsMSwxKSsxLHU9Yzw9MTg2P01hdGguY2VpbChj LzMxKTpNYXRoLmNlaWwoKGMtNikvMzApLGY9dC10aGlzLnRvSkQobCx1LDEpKzE7cmV0dXJu IHRoaXMubmV3RGF0ZShsLHUsZil9fSksbi5jYWxlbmRhcnMucGVyc2lhbj1hLG4uY2FsZW5k YXJzLmphbGFsaT1hfSx7Ii4uL21haW4iOjM0Niwib2JqZWN0LWFzc2lnbiI6MjQ3fV0sMzQz OltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiLi4vbWFpbiIpLGk9dCgib2JqZWN0LWFzc2ln biIpLGE9bi5pbnN0YW5jZSgpO2Z1bmN0aW9uIG8odCl7dGhpcy5sb2NhbD10aGlzLnJlZ2lv bmFsT3B0aW9uc1t0fHwiIl18fHRoaXMucmVnaW9uYWxPcHRpb25zWyIiXX1vLnByb3RvdHlw ZT1uZXcgbi5iYXNlQ2FsZW5kYXIsaShvLnByb3RvdHlwZSx7bmFtZToiVGFpd2FuIixqZEVw b2NoOjI0MTk0MDIuNSx5ZWFyc09mZnNldDoxOTExLGRheXNQZXJNb250aDpbMzEsMjgsMzEs MzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdLGhhc1llYXJaZXJvOiExLG1pbk1vbnRoOjEs Zmlyc3RNb250aDoxLG1pbkRheToxLHJlZ2lvbmFsT3B0aW9uczp7IiI6e25hbWU6IlRhaXdh biIsZXBvY2hzOlsiQlJPQyIsIlJPQyJdLG1vbnRoTmFtZXM6WyJKYW51YXJ5IiwiRmVicnVh cnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0 ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9y dDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNl cCIsIk9jdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVl c2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxkYXlO YW1lc1Nob3J0OlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0s ZGF5TmFtZXNNaW46WyJTdSIsIk1vIiwiVHUiLCJXZSIsIlRoIiwiRnIiLCJTYSJdLGRpZ2l0 czpudWxsLGRhdGVGb3JtYXQ6Inl5eXkvbW0vZGQiLGZpcnN0RGF5OjEsaXNSVEw6ITF9fSxs ZWFwWWVhcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl92YWxpZGF0ZSh0LHRoaXMubWluTW9u dGgsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkWWVhcik7dD10aGlzLl90MmdZZWFyKGUu eWVhcigpKTtyZXR1cm4gYS5sZWFwWWVhcih0KX0sd2Vla09mWWVhcjpmdW5jdGlvbih0LGUs cil7dmFyIGk9dGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LG4u bG9jYWwuaW52YWxpZFllYXIpO3Q9dGhpcy5fdDJnWWVhcihpLnllYXIoKSk7cmV0dXJuIGEu d2Vla09mWWVhcih0LGkubW9udGgoKSxpLmRheSgpKX0sZGF5c0luTW9udGg6ZnVuY3Rpb24o dCxlKXt2YXIgcj10aGlzLl92YWxpZGF0ZSh0LGUsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZh bGlkTW9udGgpO3JldHVybiB0aGlzLmRheXNQZXJNb250aFtyLm1vbnRoKCktMV0rKDI9PT1y Lm1vbnRoKCkmJnRoaXMubGVhcFllYXIoci55ZWFyKCkpPzE6MCl9LHdlZWtEYXk6ZnVuY3Rp b24odCxlLHIpe3JldHVybih0aGlzLmRheU9mV2Vlayh0LGUscil8fDcpPDZ9LHRvSkQ6ZnVu Y3Rpb24odCxlLHIpe3ZhciBpPXRoaXMuX3ZhbGlkYXRlKHQsZSxyLG4ubG9jYWwuaW52YWxp ZERhdGUpO3Q9dGhpcy5fdDJnWWVhcihpLnllYXIoKSk7cmV0dXJuIGEudG9KRCh0LGkubW9u dGgoKSxpLmRheSgpKX0sZnJvbUpEOmZ1bmN0aW9uKHQpe3ZhciBlPWEuZnJvbUpEKHQpLHI9 dGhpcy5fZzJ0WWVhcihlLnllYXIoKSk7cmV0dXJuIHRoaXMubmV3RGF0ZShyLGUubW9udGgo KSxlLmRheSgpKX0sX3QyZ1llYXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQrdGhpcy55ZWFyc09m ZnNldCsodD49LXRoaXMueWVhcnNPZmZzZXQmJnQ8PS0xPzE6MCl9LF9nMnRZZWFyOmZ1bmN0 aW9uKHQpe3JldHVybiB0LXRoaXMueWVhcnNPZmZzZXQtKHQ+PTEmJnQ8PXRoaXMueWVhcnNP ZmZzZXQ/MTowKX19KSxuLmNhbGVuZGFycy50YWl3YW49b30seyIuLi9tYWluIjozNDYsIm9i amVjdC1hc3NpZ24iOjI0N31dLDM0NDpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoIi4uL21h aW4iKSxpPXQoIm9iamVjdC1hc3NpZ24iKSxhPW4uaW5zdGFuY2UoKTtmdW5jdGlvbiBvKHQp e3RoaXMubG9jYWw9dGhpcy5yZWdpb25hbE9wdGlvbnNbdHx8IiJdfHx0aGlzLnJlZ2lvbmFs T3B0aW9uc1siIl19by5wcm90b3R5cGU9bmV3IG4uYmFzZUNhbGVuZGFyLGkoby5wcm90b3R5 cGUse25hbWU6IlRoYWkiLGpkRXBvY2g6MTUyMzA5OC41LHllYXJzT2Zmc2V0OjU0MyxkYXlz UGVyTW9udGg6WzMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXSxoYXNZZWFy WmVybzohMSxtaW5Nb250aDoxLGZpcnN0TW9udGg6MSxtaW5EYXk6MSxyZWdpb25hbE9wdGlv bnM6eyIiOntuYW1lOiJUaGFpIixlcG9jaHM6WyJCQkUiLCJCRSJdLG1vbnRoTmFtZXM6WyJK YW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHki LCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJd LG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIs Ikp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiU3VuZGF5 IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5Iiwi U2F0dXJkYXkiXSxkYXlOYW1lc1Nob3J0OlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1 IiwiRnJpIiwiU2F0Il0sZGF5TmFtZXNNaW46WyJTdSIsIk1vIiwiVHUiLCJXZSIsIlRoIiwi RnIiLCJTYSJdLGRpZ2l0czpudWxsLGRhdGVGb3JtYXQ6ImRkL21tL3l5eXkiLGZpcnN0RGF5 OjAsaXNSVEw6ITF9fSxsZWFwWWVhcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl92YWxpZGF0 ZSh0LHRoaXMubWluTW9udGgsdGhpcy5taW5EYXksbi5sb2NhbC5pbnZhbGlkWWVhcik7dD10 aGlzLl90MmdZZWFyKGUueWVhcigpKTtyZXR1cm4gYS5sZWFwWWVhcih0KX0sd2Vla09mWWVh cjpmdW5jdGlvbih0LGUscil7dmFyIGk9dGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRo LHRoaXMubWluRGF5LG4ubG9jYWwuaW52YWxpZFllYXIpO3Q9dGhpcy5fdDJnWWVhcihpLnll YXIoKSk7cmV0dXJuIGEud2Vla09mWWVhcih0LGkubW9udGgoKSxpLmRheSgpKX0sZGF5c0lu TW9udGg6ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl92YWxpZGF0ZSh0LGUsdGhpcy5taW5E YXksbi5sb2NhbC5pbnZhbGlkTW9udGgpO3JldHVybiB0aGlzLmRheXNQZXJNb250aFtyLm1v bnRoKCktMV0rKDI9PT1yLm1vbnRoKCkmJnRoaXMubGVhcFllYXIoci55ZWFyKCkpPzE6MCl9 LHdlZWtEYXk6ZnVuY3Rpb24odCxlLHIpe3JldHVybih0aGlzLmRheU9mV2Vlayh0LGUscil8 fDcpPDZ9LHRvSkQ6ZnVuY3Rpb24odCxlLHIpe3ZhciBpPXRoaXMuX3ZhbGlkYXRlKHQsZSxy LG4ubG9jYWwuaW52YWxpZERhdGUpO3Q9dGhpcy5fdDJnWWVhcihpLnllYXIoKSk7cmV0dXJu IGEudG9KRCh0LGkubW9udGgoKSxpLmRheSgpKX0sZnJvbUpEOmZ1bmN0aW9uKHQpe3ZhciBl PWEuZnJvbUpEKHQpLHI9dGhpcy5fZzJ0WWVhcihlLnllYXIoKSk7cmV0dXJuIHRoaXMubmV3 RGF0ZShyLGUubW9udGgoKSxlLmRheSgpKX0sX3QyZ1llYXI6ZnVuY3Rpb24odCl7cmV0dXJu IHQtdGhpcy55ZWFyc09mZnNldC0odD49MSYmdDw9dGhpcy55ZWFyc09mZnNldD8xOjApfSxf ZzJ0WWVhcjpmdW5jdGlvbih0KXtyZXR1cm4gdCt0aGlzLnllYXJzT2Zmc2V0Kyh0Pj0tdGhp cy55ZWFyc09mZnNldCYmdDw9LTE/MTowKX19KSxuLmNhbGVuZGFycy50aGFpPW99LHsiLi4v bWFpbiI6MzQ2LCJvYmplY3QtYXNzaWduIjoyNDd9XSwzNDU6W2Z1bmN0aW9uKHQsZSxyKXt2 YXIgbj10KCIuLi9tYWluIiksaT10KCJvYmplY3QtYXNzaWduIik7ZnVuY3Rpb24gYSh0KXt0 aGlzLmxvY2FsPXRoaXMucmVnaW9uYWxPcHRpb25zW3R8fCIiXXx8dGhpcy5yZWdpb25hbE9w dGlvbnNbIiJdfWEucHJvdG90eXBlPW5ldyBuLmJhc2VDYWxlbmRhcixpKGEucHJvdG90eXBl LHtuYW1lOiJVbW1BbFF1cmEiLGhhc1llYXJaZXJvOiExLG1pbk1vbnRoOjEsZmlyc3RNb250 aDoxLG1pbkRheToxLHJlZ2lvbmFsT3B0aW9uczp7IiI6e25hbWU6IlVtbSBhbC1RdXJhIixl cG9jaHM6WyJCSCIsIkFIIl0sbW9udGhOYW1lczpbIkFsLU11aGFycmFtIiwiU2FmYXIiLCJS YWJpJyBhbC1hd3dhbCIsIlJhYmknIEFsLVRoYW5pIiwiSnVtYWRhIEFsLUF3d2FsIiwiSnVt YWRhIEFsLVRoYW5pIiwiUmFqYWIiLCJTaGEnYWJhbiIsIlJhbWFkYW4iLCJTaGF3d2FsIiwi RGh1IGFsLVFpJ2RhaCIsIkRodSBhbC1IaWpqYWgiXSxtb250aE5hbWVzU2hvcnQ6WyJNdWgi LCJTYWYiLCJSYWIxIiwiUmFiMiIsIkp1bTEiLCJKdW0yIiwiUmFqIiwiU2hhJyIsIlJhbSIs IlNoYXciLCJEaHVRIiwiRGh1SCJdLGRheU5hbWVzOlsiWWF3bSBhbC1BaGFkIiwiWWF3bSBh bC1JdGhuYWluIiwiWWF3bSBhbC1UaGFsXHUwMTAxdGhcdTAxMDFcdTIwMTkiLCJZYXdtIGFs LUFyYmFcdTIwMThcdTAxMDFcdTIwMTkiLCJZYXdtIGFsLUtoYW1cdTAxMmJzIiwiWWF3bSBh bC1KdW1cdTIwMThhIiwiWWF3bSBhbC1TYWJ0Il0sZGF5TmFtZXNNaW46WyJBaCIsIkl0aCIs IlRoIiwiQXIiLCJLaCIsIkp1IiwiU2EiXSxkaWdpdHM6bnVsbCxkYXRlRm9ybWF0OiJ5eXl5 L21tL2RkIixmaXJzdERheTo2LGlzUlRMOiEwfX0sbGVhcFllYXI6ZnVuY3Rpb24odCl7dmFy IGU9dGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LG4ubG9jYWwu aW52YWxpZFllYXIpO3JldHVybiAzNTU9PT10aGlzLmRheXNJblllYXIoZS55ZWFyKCkpfSx3 ZWVrT2ZZZWFyOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLm5ld0RhdGUodCxlLHIpO3Jl dHVybiBuLmFkZCgtbi5kYXlPZldlZWsoKSwiZCIpLE1hdGguZmxvb3IoKG4uZGF5T2ZZZWFy KCktMSkvNykrMX0sZGF5c0luWWVhcjpmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxyPTE7cjw9 MTI7cisrKWUrPXRoaXMuZGF5c0luTW9udGgodCxyKTtyZXR1cm4gZX0sZGF5c0luTW9udGg6 ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dGhpcy5fdmFsaWRhdGUodCxlLHRoaXMubWluRGF5 LG4ubG9jYWwuaW52YWxpZE1vbnRoKS50b0pEKCktMjRlNSsuNSxpPTAsYT0wO2E8by5sZW5n dGg7YSsrKXtpZihvW2FdPnIpcmV0dXJuIG9baV0tb1tpLTFdO2krK31yZXR1cm4gMzB9LHdl ZWtEYXk6ZnVuY3Rpb24odCxlLHIpe3JldHVybiA1IT09dGhpcy5kYXlPZldlZWsodCxlLHIp fSx0b0pEOmZ1bmN0aW9uKHQsZSxyKXt2YXIgaT10aGlzLl92YWxpZGF0ZSh0LGUscixuLmxv Y2FsLmludmFsaWREYXRlKSxhPTEyKihpLnllYXIoKS0xKStpLm1vbnRoKCktMTUyOTI7cmV0 dXJuIGkuZGF5KCkrb1thLTFdLTErMjRlNS0uNX0sZnJvbUpEOmZ1bmN0aW9uKHQpe2Zvcih2 YXIgZT10LTI0ZTUrLjUscj0wLG49MDtuPG8ubGVuZ3RoJiYhKG9bbl0+ZSk7bisrKXIrKzt2 YXIgaT1yKzE1MjkyLGE9TWF0aC5mbG9vcigoaS0xKS8xMikscz1hKzEsbD1pLTEyKmEsYz1l LW9bci0xXSsxO3JldHVybiB0aGlzLm5ld0RhdGUocyxsLGMpfSxpc1ZhbGlkOmZ1bmN0aW9u KHQsZSxyKXt2YXIgaT1uLmJhc2VDYWxlbmRhci5wcm90b3R5cGUuaXNWYWxpZC5hcHBseSh0 aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGkmJihpPSh0PW51bGwhPXQueWVhcj90LnllYXI6dCk+ PTEyNzYmJnQ8PTE1MDApLGl9LF92YWxpZGF0ZTpmdW5jdGlvbih0LGUscixpKXt2YXIgYT1u LmJhc2VDYWxlbmRhci5wcm90b3R5cGUuX3ZhbGlkYXRlLmFwcGx5KHRoaXMsYXJndW1lbnRz KTtpZihhLnllYXI8MTI3Nnx8YS55ZWFyPjE1MDApdGhyb3cgaS5yZXBsYWNlKC9cezBcfS8s dGhpcy5sb2NhbC5uYW1lKTtyZXR1cm4gYX19KSxuLmNhbGVuZGFycy51bW1hbHF1cmE9YTt2 YXIgbz1bMjAsNTAsNzksMTA5LDEzOCwxNjgsMTk3LDIyNywyNTYsMjg2LDMxNSwzNDUsMzc0 LDQwNCw0MzMsNDYzLDQ5Miw1MjIsNTUxLDU4MSw2MTEsNjQxLDY3MCw3MDAsNzI5LDc1OSw3 ODgsODE4LDg0Nyw4NzcsOTA2LDkzNiw5NjUsOTk1LDEwMjQsMTA1NCwxMDgzLDExMTMsMTE0 MiwxMTcyLDEyMDEsMTIzMSwxMjYwLDEyOTAsMTMyMCwxMzUwLDEzNzksMTQwOSwxNDM4LDE0 NjgsMTQ5NywxNTI3LDE1NTYsMTU4NiwxNjE1LDE2NDUsMTY3NCwxNzA0LDE3MzMsMTc2Mywx NzkyLDE4MjIsMTg1MSwxODgxLDE5MTAsMTk0MCwxOTY5LDE5OTksMjAyOCwyMDU4LDIwODcs MjExNywyMTQ2LDIxNzYsMjIwNSwyMjM1LDIyNjQsMjI5NCwyMzIzLDIzNTMsMjM4MywyNDEz LDI0NDIsMjQ3MiwyNTAxLDI1MzEsMjU2MCwyNTkwLDI2MTksMjY0OSwyNjc4LDI3MDgsMjcz NywyNzY3LDI3OTYsMjgyNiwyODU1LDI4ODUsMjkxNCwyOTQ0LDI5NzMsMzAwMywzMDMyLDMw NjIsMzA5MSwzMTIxLDMxNTAsMzE4MCwzMjA5LDMyMzksMzI2OCwzMjk4LDMzMjcsMzM1Nywz Mzg2LDM0MTYsMzQ0NiwzNDc2LDM1MDUsMzUzNSwzNTY0LDM1OTQsMzYyMywzNjUzLDM2ODIs MzcxMiwzNzQxLDM3NzEsMzgwMCwzODMwLDM4NTksMzg4OSwzOTE4LDM5NDgsMzk3Nyw0MDA3 LDQwMzYsNDA2Niw0MDk1LDQxMjUsNDE1NSw0MTg1LDQyMTQsNDI0NCw0MjczLDQzMDMsNDMz Miw0MzYyLDQzOTEsNDQyMSw0NDUwLDQ0ODAsNDUwOSw0NTM5LDQ1NjgsNDU5OCw0NjI3LDQ2 NTcsNDY4Niw0NzE2LDQ3NDUsNDc3NSw0ODA0LDQ4MzQsNDg2Myw0ODkzLDQ5MjIsNDk1Miw0 OTgxLDUwMTEsNTA0MCw1MDcwLDUwOTksNTEyOSw1MTU4LDUxODgsNTIxOCw1MjQ4LDUyNzcs NTMwNyw1MzM2LDUzNjYsNTM5NSw1NDI1LDU0NTQsNTQ4NCw1NTEzLDU1NDMsNTU3Miw1NjAy LDU2MzEsNTY2MSw1NjkwLDU3MjAsNTc0OSw1Nzc5LDU4MDgsNTgzOCw1ODY3LDU4OTcsNTky Niw1OTU2LDU5ODUsNjAxNSw2MDQ0LDYwNzQsNjEwMyw2MTMzLDYxNjIsNjE5Miw2MjIxLDYy NTEsNjI4MSw2MzExLDYzNDAsNjM3MCw2Mzk5LDY0MjksNjQ1OCw2NDg4LDY1MTcsNjU0Nyw2 NTc2LDY2MDYsNjYzNSw2NjY1LDY2OTQsNjcyNCw2NzUzLDY3ODMsNjgxMiw2ODQyLDY4NzEs NjkwMSw2OTMwLDY5NjAsNjk4OSw3MDE5LDcwNDgsNzA3OCw3MTA3LDcxMzcsNzE2Niw3MTk2 LDcyMjUsNzI1NSw3Mjg0LDczMTQsNzM0NCw3Mzc0LDc0MDMsNzQzMyw3NDYyLDc0OTIsNzUy MSw3NTUxLDc1ODAsNzYxMCw3NjM5LDc2NjksNzY5OCw3NzI4LDc3NTcsNzc4Nyw3ODE2LDc4 NDYsNzg3NSw3OTA1LDc5MzQsNzk2NCw3OTkzLDgwMjMsODA1Myw4MDgzLDgxMTIsODE0Miw4 MTcxLDgyMDEsODIzMCw4MjYwLDgyODksODMxOSw4MzQ4LDgzNzgsODQwNyw4NDM3LDg0NjYs ODQ5Niw4NTI1LDg1NTUsODU4NCw4NjE0LDg2NDMsODY3Myw4NzAyLDg3MzIsODc2MSw4Nzkx LDg4MjEsODg1MCw4ODgwLDg5MDksODkzOCw4OTY4LDg5OTcsOTAyNyw5MDU2LDkwODYsOTEx NSw5MTQ1LDkxNzUsOTIwNSw5MjM0LDkyNjQsOTI5Myw5MzIyLDkzNTIsOTM4MSw5NDEwLDk0 NDAsOTQ3MCw5NDk5LDk1MjksOTU1OSw5NTg5LDk2MTgsOTY0OCw5Njc3LDk3MDYsOTczNiw5 NzY1LDk3OTQsOTgyNCw5ODUzLDk4ODMsOTkxMyw5OTQzLDk5NzIsMTAwMDIsMTAwMzIsMTAw NjEsMTAwOTAsMTAxMjAsMTAxNDksMTAxNzgsMTAyMDgsMTAyMzcsMTAyNjcsMTAyOTcsMTAz MjYsMTAzNTYsMTAzODYsMTA0MTUsMTA0NDUsMTA0NzQsMTA1MDQsMTA1MzMsMTA1NjIsMTA1 OTIsMTA2MjEsMTA2NTEsMTA2ODAsMTA3MTAsMTA3NDAsMTA3NzAsMTA3OTksMTA4MjksMTA4 NTgsMTA4ODgsMTA5MTcsMTA5NDcsMTA5NzYsMTEwMDUsMTEwMzUsMTEwNjQsMTEwOTQsMTEx MjQsMTExNTMsMTExODMsMTEyMTMsMTEyNDIsMTEyNzIsMTEzMDEsMTEzMzEsMTEzNjAsMTEz ODksMTE0MTksMTE0NDgsMTE0NzgsMTE1MDcsMTE1MzcsMTE1NjcsMTE1OTYsMTE2MjYsMTE2 NTUsMTE2ODUsMTE3MTUsMTE3NDQsMTE3NzQsMTE4MDMsMTE4MzIsMTE4NjIsMTE4OTEsMTE5 MjEsMTE5NTAsMTE5ODAsMTIwMTAsMTIwMzksMTIwNjksMTIwOTksMTIxMjgsMTIxNTgsMTIx ODcsMTIyMTYsMTIyNDYsMTIyNzUsMTIzMDQsMTIzMzQsMTIzNjQsMTIzOTMsMTI0MjMsMTI0 NTMsMTI0ODMsMTI1MTIsMTI1NDIsMTI1NzEsMTI2MDAsMTI2MzAsMTI2NTksMTI2ODgsMTI3 MTgsMTI3NDcsMTI3NzcsMTI4MDcsMTI4MzcsMTI4NjYsMTI4OTYsMTI5MjYsMTI5NTUsMTI5 ODQsMTMwMTQsMTMwNDMsMTMwNzIsMTMxMDIsMTMxMzEsMTMxNjEsMTMxOTEsMTMyMjAsMTMy NTAsMTMyODAsMTMzMTAsMTMzMzksMTMzNjgsMTMzOTgsMTM0MjcsMTM0NTYsMTM0ODYsMTM1 MTUsMTM1NDUsMTM1NzQsMTM2MDQsMTM2MzQsMTM2NjQsMTM2OTMsMTM3MjMsMTM3NTIsMTM3 ODIsMTM4MTEsMTM4NDAsMTM4NzAsMTM4OTksMTM5MjksMTM5NTgsMTM5ODgsMTQwMTgsMTQw NDcsMTQwNzcsMTQxMDcsMTQxMzYsMTQxNjYsMTQxOTUsMTQyMjQsMTQyNTQsMTQyODMsMTQz MTMsMTQzNDIsMTQzNzIsMTQ0MDEsMTQ0MzEsMTQ0NjEsMTQ0OTAsMTQ1MjAsMTQ1NTAsMTQ1 NzksMTQ2MDksMTQ2MzgsMTQ2NjcsMTQ2OTcsMTQ3MjYsMTQ3NTYsMTQ3ODUsMTQ4MTUsMTQ4 NDQsMTQ4NzQsMTQ5MDQsMTQ5MzMsMTQ5NjMsMTQ5OTMsMTUwMjEsMTUwNTEsMTUwODEsMTUx MTAsMTUxNDAsMTUxNjksMTUxOTksMTUyMjgsMTUyNTgsMTUyODcsMTUzMTcsMTUzNDcsMTUz NzcsMTU0MDYsMTU0MzYsMTU0NjUsMTU0OTQsMTU1MjQsMTU1NTMsMTU1ODIsMTU2MTIsMTU2 NDEsMTU2NzEsMTU3MDEsMTU3MzEsMTU3NjAsMTU3OTAsMTU4MjAsMTU4NDksMTU4NzgsMTU5 MDgsMTU5MzcsMTU5NjYsMTU5OTYsMTYwMjUsMTYwNTUsMTYwODUsMTYxMTQsMTYxNDQsMTYx NzQsMTYyMDQsMTYyMzMsMTYyNjIsMTYyOTIsMTYzMjEsMTYzNTAsMTYzODAsMTY0MDksMTY0 MzksMTY0NjgsMTY0OTgsMTY1MjgsMTY1NTgsMTY1ODcsMTY2MTcsMTY2NDYsMTY2NzYsMTY3 MDUsMTY3MzQsMTY3NjQsMTY3OTMsMTY4MjMsMTY4NTIsMTY4ODIsMTY5MTIsMTY5NDEsMTY5 NzEsMTcwMDEsMTcwMzAsMTcwNjAsMTcwODksMTcxMTgsMTcxNDgsMTcxNzcsMTcyMDcsMTcy MzYsMTcyNjYsMTcyOTUsMTczMjUsMTczNTUsMTczODQsMTc0MTQsMTc0NDQsMTc0NzMsMTc1 MDIsMTc1MzIsMTc1NjEsMTc1OTEsMTc2MjAsMTc2NTAsMTc2NzksMTc3MDksMTc3MzgsMTc3 NjgsMTc3OTgsMTc4MjcsMTc4NTcsMTc4ODYsMTc5MTYsMTc5NDUsMTc5NzUsMTgwMDQsMTgw MzQsMTgwNjMsMTgwOTMsMTgxMjIsMTgxNTIsMTgxODEsMTgyMTEsMTgyNDEsMTgyNzAsMTgz MDAsMTgzMzAsMTgzNTksMTgzODgsMTg0MTgsMTg0NDcsMTg0NzYsMTg1MDYsMTg1MzUsMTg1 NjUsMTg1OTUsMTg2MjUsMTg2NTQsMTg2ODQsMTg3MTQsMTg3NDMsMTg3NzIsMTg4MDIsMTg4 MzEsMTg4NjAsMTg4OTAsMTg5MTksMTg5NDksMTg5NzksMTkwMDgsMTkwMzgsMTkwNjgsMTkw OTgsMTkxMjcsMTkxNTYsMTkxODYsMTkyMTUsMTkyNDQsMTkyNzQsMTkzMDMsMTkzMzMsMTkz NjIsMTkzOTIsMTk0MjIsMTk0NTIsMTk0ODEsMTk1MTEsMTk1NDAsMTk1NzAsMTk1OTksMTk2 MjgsMTk2NTgsMTk2ODcsMTk3MTcsMTk3NDYsMTk3NzYsMTk4MDYsMTk4MzYsMTk4NjUsMTk4 OTUsMTk5MjQsMTk5NTQsMTk5ODMsMjAwMTIsMjAwNDIsMjAwNzEsMjAxMDEsMjAxMzAsMjAx NjAsMjAxOTAsMjAyMTksMjAyNDksMjAyNzksMjAzMDgsMjAzMzgsMjAzNjcsMjAzOTYsMjA0 MjYsMjA0NTUsMjA0ODUsMjA1MTQsMjA1NDQsMjA1NzMsMjA2MDMsMjA2MzMsMjA2NjIsMjA2 OTIsMjA3MjEsMjA3NTEsMjA3ODAsMjA4MTAsMjA4MzksMjA4NjksMjA4OTgsMjA5MjgsMjA5 NTcsMjA5ODcsMjEwMTYsMjEwNDYsMjEwNzYsMjExMDUsMjExMzUsMjExNjQsMjExOTQsMjEy MjMsMjEyNTMsMjEyODIsMjEzMTIsMjEzNDEsMjEzNzEsMjE0MDAsMjE0MzAsMjE0NTksMjE0 ODksMjE1MTksMjE1NDgsMjE1NzgsMjE2MDcsMjE2MzcsMjE2NjYsMjE2OTYsMjE3MjUsMjE3 NTQsMjE3ODQsMjE4MTMsMjE4NDMsMjE4NzMsMjE5MDIsMjE5MzIsMjE5NjIsMjE5OTEsMjIw MjEsMjIwNTAsMjIwODAsMjIxMDksMjIxMzgsMjIxNjgsMjIxOTcsMjIyMjcsMjIyNTYsMjIy ODYsMjIzMTYsMjIzNDYsMjIzNzUsMjI0MDUsMjI0MzQsMjI0NjQsMjI0OTMsMjI1MjIsMjI1 NTIsMjI1ODEsMjI2MTEsMjI2NDAsMjI2NzAsMjI3MDAsMjI3MzAsMjI3NTksMjI3ODksMjI4 MTgsMjI4NDgsMjI4NzcsMjI5MDYsMjI5MzYsMjI5NjUsMjI5OTQsMjMwMjQsMjMwNTQsMjMw ODMsMjMxMTMsMjMxNDMsMjMxNzMsMjMyMDIsMjMyMzIsMjMyNjEsMjMyOTAsMjMzMjAsMjMz NDksMjMzNzksMjM0MDgsMjM0MzgsMjM0NjcsMjM0OTcsMjM1MjcsMjM1NTYsMjM1ODYsMjM2 MTYsMjM2NDUsMjM2NzQsMjM3MDQsMjM3MzMsMjM3NjMsMjM3OTIsMjM4MjIsMjM4NTEsMjM4 ODEsMjM5MTAsMjM5NDAsMjM5NzAsMjM5OTksMjQwMjksMjQwNTgsMjQwODgsMjQxMTcsMjQx NDcsMjQxNzYsMjQyMDYsMjQyMzUsMjQyNjUsMjQyOTQsMjQzMjQsMjQzNTMsMjQzODMsMjQ0 MTMsMjQ0NDIsMjQ0NzIsMjQ1MDEsMjQ1MzEsMjQ1NjAsMjQ1OTAsMjQ2MTksMjQ2NDgsMjQ2 NzgsMjQ3MDcsMjQ3MzcsMjQ3NjcsMjQ3OTYsMjQ4MjYsMjQ4NTYsMjQ4ODUsMjQ5MTUsMjQ5 NDQsMjQ5NzQsMjUwMDMsMjUwMzIsMjUwNjIsMjUwOTEsMjUxMjEsMjUxNTAsMjUxODAsMjUy MTAsMjUyNDAsMjUyNjksMjUyOTksMjUzMjgsMjUzNTgsMjUzODcsMjU0MTYsMjU0NDYsMjU0 NzUsMjU1MDUsMjU1MzQsMjU1NjQsMjU1OTQsMjU2MjQsMjU2NTMsMjU2ODMsMjU3MTIsMjU3 NDIsMjU3NzEsMjU4MDAsMjU4MzAsMjU4NTksMjU4ODgsMjU5MTgsMjU5NDgsMjU5NzcsMjYw MDcsMjYwMzcsMjYwNjcsMjYwOTYsMjYxMjYsMjYxNTUsMjYxODQsMjYyMTQsMjYyNDMsMjYy NzIsMjYzMDIsMjYzMzIsMjYzNjEsMjYzOTEsMjY0MjEsMjY0NTEsMjY0ODAsMjY1MTAsMjY1 MzksMjY1NjgsMjY1OTgsMjY2MjcsMjY2NTYsMjY2ODYsMjY3MTUsMjY3NDUsMjY3NzUsMjY4 MDUsMjY4MzQsMjY4NjQsMjY4OTMsMjY5MjMsMjY5NTIsMjY5ODIsMjcwMTEsMjcwNDEsMjcw NzAsMjcwOTksMjcxMjksMjcxNTksMjcxODgsMjcyMTgsMjcyNDgsMjcyNzcsMjczMDcsMjcz MzYsMjczNjYsMjczOTUsMjc0MjUsMjc0NTQsMjc0ODQsMjc1MTMsMjc1NDIsMjc1NzIsMjc2 MDIsMjc2MzEsMjc2NjEsMjc2OTEsMjc3MjAsMjc3NTAsMjc3NzksMjc4MDksMjc4MzgsMjc4 NjgsMjc4OTcsMjc5MjYsMjc5NTYsMjc5ODUsMjgwMTUsMjgwNDUsMjgwNzQsMjgxMDQsMjgx MzQsMjgxNjMsMjgxOTMsMjgyMjIsMjgyNTIsMjgyODEsMjgzMTAsMjgzNDAsMjgzNjksMjgz OTksMjg0MjgsMjg0NTgsMjg0ODgsMjg1MTcsMjg1NDcsMjg1NzcsMjg2MDcsMjg2MzYsMjg2 NjUsMjg2OTUsMjg3MjQsMjg3NTQsMjg3ODMsMjg4MTMsMjg4NDMsMjg4NzIsMjg5MDEsMjg5 MzEsMjg5NjAsMjg5OTAsMjkwMTksMjkwNDksMjkwNzgsMjkxMDgsMjkxMzcsMjkxNjcsMjkx OTYsMjkyMjYsMjkyNTUsMjkyODUsMjkzMTUsMjkzNDUsMjkzNzUsMjk0MDQsMjk0MzQsMjk0 NjMsMjk0OTIsMjk1MjIsMjk1NTEsMjk1ODAsMjk2MTAsMjk2NDAsMjk2NjksMjk2OTksMjk3 MjksMjk3NTksMjk3ODgsMjk4MTgsMjk4NDcsMjk4NzYsMjk5MDYsMjk5MzUsMjk5NjQsMjk5 OTQsMzAwMjMsMzAwNTMsMzAwODIsMzAxMTIsMzAxNDEsMzAxNzEsMzAyMDAsMzAyMzAsMzAy NTksMzAyODksMzAzMTgsMzAzNDgsMzAzNzgsMzA0MDgsMzA0MzcsMzA0NjcsMzA0OTYsMzA1 MjYsMzA1NTUsMzA1ODUsMzA2MTQsMzA2NDQsMzA2NzMsMzA3MDMsMzA3MzIsMzA3NjIsMzA3 OTEsMzA4MjEsMzA4NTAsMzA4ODAsMzA5MDksMzA5MzksMzA5NjgsMzA5OTgsMzEwMjcsMzEw NTcsMzEwODYsMzExMTYsMzExNDUsMzExNzUsMzEyMDQsMzEyMzQsMzEyNjMsMzEyOTMsMzEz MjIsMzEzNTIsMzEzODEsMzE0MTEsMzE0NDEsMzE0NzEsMzE1MDAsMzE1MzAsMzE1NTksMzE1 ODksMzE2MTgsMzE2NDgsMzE2NzYsMzE3MDYsMzE3MzYsMzE3NjYsMzE3OTUsMzE4MjUsMzE4 NTQsMzE4ODQsMzE5MTMsMzE5NDMsMzE5NzIsMzIwMDIsMzIwMzEsMzIwNjEsMzIwOTAsMzIx MjAsMzIxNTAsMzIxODAsMzIyMDksMzIyMzksMzIyNjgsMzIyOTgsMzIzMjcsMzIzNTcsMzIz ODYsMzI0MTYsMzI0NDUsMzI0NzUsMzI1MDQsMzI1MzQsMzI1NjMsMzI1OTMsMzI2MjIsMzI2 NTIsMzI2ODEsMzI3MTEsMzI3NDAsMzI3NzAsMzI3OTksMzI4MjksMzI4NTgsMzI4ODgsMzI5 MTcsMzI5NDcsMzI5NzYsMzMwMDYsMzMwMzUsMzMwNjUsMzMwOTQsMzMxMjQsMzMxNTMsMzMx ODMsMzMyMTMsMzMyNDMsMzMyNzIsMzMzMDIsMzMzMzEsMzMzNjEsMzMzOTAsMzM0MjAsMzM0 NTAsMzM0NzksMzM1MDksMzM1MzksMzM1NjgsMzM1OTgsMzM2MjcsMzM2NTcsMzM2ODYsMzM3 MTYsMzM3NDUsMzM3NzUsMzM4MDQsMzM4MzQsMzM4NjMsMzM4OTMsMzM5MjIsMzM5NTIsMzM5 ODEsMzQwMTEsMzQwNDAsMzQwNjksMzQwOTksMzQxMjgsMzQxNTgsMzQxODcsMzQyMTcsMzQy NDcsMzQyNzcsMzQzMDYsMzQzMzYsMzQzNjUsMzQzOTUsMzQ0MjQsMzQ0NTQsMzQ0ODMsMzQ1 MTIsMzQ1NDIsMzQ1NzEsMzQ2MDEsMzQ2MzEsMzQ2NjAsMzQ2OTAsMzQ3MTksMzQ3NDksMzQ3 NzgsMzQ4MDgsMzQ4MzcsMzQ4NjcsMzQ4OTYsMzQ5MjYsMzQ5NTUsMzQ5ODUsMzUwMTUsMzUw NDQsMzUwNzQsMzUxMDMsMzUxMzMsMzUxNjIsMzUxOTIsMzUyMjIsMzUyNTEsMzUyODAsMzUz MTAsMzUzNDAsMzUzNzAsMzUzOTksMzU0MjksMzU0NTgsMzU0ODgsMzU1MTcsMzU1NDcsMzU1 NzYsMzU2MDUsMzU2MzUsMzU2NjUsMzU2OTQsMzU3MjMsMzU3NTMsMzU3ODIsMzU4MTEsMzU4 NDEsMzU4NzEsMzU5MDEsMzU5MzAsMzU5NjAsMzU5ODksMzYwMTksMzYwNDgsMzYwNzgsMzYx MDcsMzYxMzYsMzYxNjYsMzYxOTUsMzYyMjUsMzYyNTQsMzYyODQsMzYzMTQsMzYzNDMsMzYz NzMsMzY0MDMsMzY0MzMsMzY0NjIsMzY0OTIsMzY1MjEsMzY1NTEsMzY1ODAsMzY2MTAsMzY2 MzksMzY2NjksMzY2OTgsMzY3MjgsMzY3NTcsMzY3ODYsMzY4MTYsMzY4NDUsMzY4NzUsMzY5 MDQsMzY5MzQsMzY5NjMsMzY5OTMsMzcwMjIsMzcwNTIsMzcwODEsMzcxMTEsMzcxNDEsMzcx NzAsMzcyMDAsMzcyMjksMzcyNTksMzcyODgsMzczMTgsMzczNDcsMzczNzcsMzc0MDYsMzc0 MzYsMzc0NjUsMzc0OTUsMzc1MjQsMzc1NTQsMzc1ODQsMzc2MTMsMzc2NDMsMzc2NzIsMzc3 MDEsMzc3MzEsMzc3NjAsMzc3OTAsMzc4MTksMzc4NDksMzc4NzgsMzc5MDgsMzc5MzgsMzc5 NjcsMzc5OTcsMzgwMjcsMzgwNTYsMzgwODUsMzgxMTUsMzgxNDQsMzgxNzQsMzgyMDMsMzgy MzMsMzgyNjIsMzgyOTIsMzgzMjIsMzgzNTEsMzgzODEsMzg0MTAsMzg0NDAsMzg0NjksMzg0 OTksMzg1MjgsMzg1NTgsMzg1ODcsMzg2MTcsMzg2NDYsMzg2NzYsMzg3MDUsMzg3MzUsMzg3 NjQsMzg3OTQsMzg4MjMsMzg4NTMsMzg4ODIsMzg5MTIsMzg5NDEsMzg5NzEsMzkwMDEsMzkw MzAsMzkwNTksMzkwODksMzkxMTgsMzkxNDgsMzkxNzgsMzkyMDgsMzkyMzcsMzkyNjcsMzky OTcsMzkzMjYsMzkzNTUsMzkzODUsMzk0MTQsMzk0NDQsMzk0NzMsMzk1MDMsMzk1MzIsMzk1 NjIsMzk1OTIsMzk2MjEsMzk2NTAsMzk2ODAsMzk3MDksMzk3MzksMzk3NjgsMzk3OTgsMzk4 MjcsMzk4NTcsMzk4ODYsMzk5MTYsMzk5NDYsMzk5NzUsNDAwMDUsNDAwMzUsNDAwNjQsNDAw OTQsNDAxMjMsNDAxNTMsNDAxODIsNDAyMTIsNDAyNDEsNDAyNzEsNDAzMDAsNDAzMzAsNDAz NTksNDAzODksNDA0MTgsNDA0NDgsNDA0NzcsNDA1MDcsNDA1MzYsNDA1NjYsNDA1OTUsNDA2 MjUsNDA2NTUsNDA2ODUsNDA3MTQsNDA3NDQsNDA3NzMsNDA4MDMsNDA4MzIsNDA4NjIsNDA4 OTIsNDA5MjEsNDA5NTEsNDA5ODAsNDEwMDksNDEwMzksNDEwNjgsNDEwOTgsNDExMjcsNDEx NTcsNDExODYsNDEyMTYsNDEyNDUsNDEyNzUsNDEzMDQsNDEzMzQsNDEzNjQsNDEzOTMsNDE0 MjIsNDE0NTIsNDE0ODEsNDE1MTEsNDE1NDAsNDE1NzAsNDE1OTksNDE2MjksNDE2NTgsNDE2 ODgsNDE3MTgsNDE3NDgsNDE3NzcsNDE4MDcsNDE4MzYsNDE4NjUsNDE4OTQsNDE5MjQsNDE5 NTMsNDE5ODMsNDIwMTIsNDIwNDIsNDIwNzIsNDIxMDIsNDIxMzEsNDIxNjEsNDIxOTAsNDIy MjAsNDIyNDksNDIyNzksNDIzMDgsNDIzMzcsNDIzNjcsNDIzOTcsNDI0MjYsNDI0NTYsNDI0 ODUsNDI1MTUsNDI1NDUsNDI1NzQsNDI2MDQsNDI2MzMsNDI2NjIsNDI2OTIsNDI3MjEsNDI3 NTEsNDI3ODAsNDI4MTAsNDI4MzksNDI4NjksNDI4OTksNDI5MjksNDI5NTgsNDI5ODgsNDMw MTcsNDMwNDYsNDMwNzYsNDMxMDUsNDMxMzUsNDMxNjQsNDMxOTQsNDMyMjMsNDMyNTMsNDMy ODMsNDMzMTIsNDMzNDIsNDMzNzEsNDM0MDEsNDM0MzAsNDM0NjAsNDM0ODksNDM1MTksNDM1 NDgsNDM1NzgsNDM2MDcsNDM2MzcsNDM2NjYsNDM2OTYsNDM3MjYsNDM3NTUsNDM3ODUsNDM4 MTQsNDM4NDQsNDM4NzMsNDM5MDMsNDM5MzIsNDM5NjIsNDM5OTEsNDQwMjEsNDQwNTAsNDQw ODAsNDQxMDksNDQxMzksNDQxNjksNDQxOTgsNDQyMjgsNDQyNTgsNDQyODcsNDQzMTcsNDQz NDYsNDQzNzUsNDQ0MDUsNDQ0MzQsNDQ0NjQsNDQ0OTMsNDQ1MjMsNDQ1NTMsNDQ1ODIsNDQ2 MTIsNDQ2NDEsNDQ2NzEsNDQ3MDAsNDQ3MzAsNDQ3NTksNDQ3ODgsNDQ4MTgsNDQ4NDcsNDQ4 NzcsNDQ5MDYsNDQ5MzYsNDQ5NjYsNDQ5OTYsNDUwMjUsNDUwNTUsNDUwODQsNDUxMTQsNDUx NDMsNDUxNzIsNDUyMDIsNDUyMzEsNDUyNjEsNDUyOTAsNDUzMjAsNDUzNTAsNDUzODAsNDU0 MDksNDU0MzksNDU0NjgsNDU0OTgsNDU1MjcsNDU1NTYsNDU1ODYsNDU2MTUsNDU2NDQsNDU2 NzQsNDU3MDQsNDU3MzMsNDU3NjMsNDU3OTMsNDU4MjMsNDU4NTIsNDU4ODIsNDU5MTEsNDU5 NDAsNDU5NzAsNDU5OTksNDYwMjgsNDYwNTgsNDYwODgsNDYxMTcsNDYxNDcsNDYxNzcsNDYy MDYsNDYyMzYsNDYyNjUsNDYyOTUsNDYzMjQsNDYzNTQsNDYzODMsNDY0MTMsNDY0NDIsNDY0 NzIsNDY1MDEsNDY1MzEsNDY1NjAsNDY1OTAsNDY2MjAsNDY2NDksNDY2NzksNDY3MDgsNDY3 MzgsNDY3NjcsNDY3OTcsNDY4MjYsNDY4NTYsNDY4ODUsNDY5MTUsNDY5NDQsNDY5NzQsNDcw MDMsNDcwMzMsNDcwNjMsNDcwOTIsNDcxMjIsNDcxNTEsNDcxODEsNDcyMTAsNDcyNDAsNDcy NjksNDcyOTgsNDczMjgsNDczNTcsNDczODcsNDc0MTcsNDc0NDYsNDc0NzYsNDc1MDYsNDc1 MzUsNDc1NjUsNDc1OTQsNDc2MjQsNDc2NTMsNDc2ODIsNDc3MTIsNDc3NDEsNDc3NzEsNDc4 MDAsNDc4MzAsNDc4NjAsNDc4OTAsNDc5MTksNDc5NDksNDc5NzgsNDgwMDgsNDgwMzcsNDgw NjYsNDgwOTYsNDgxMjUsNDgxNTUsNDgxODQsNDgyMTQsNDgyNDQsNDgyNzMsNDgzMDMsNDgz MzMsNDgzNjIsNDgzOTIsNDg0MjEsNDg0NTAsNDg0ODAsNDg1MDksNDg1MzgsNDg1NjgsNDg1 OTgsNDg2MjcsNDg2NTcsNDg2ODcsNDg3MTcsNDg3NDYsNDg3NzYsNDg4MDUsNDg4MzQsNDg4 NjQsNDg4OTMsNDg5MjIsNDg5NTIsNDg5ODIsNDkwMTEsNDkwNDEsNDkwNzEsNDkxMDAsNDkx MzAsNDkxNjAsNDkxODksNDkyMTgsNDkyNDgsNDkyNzcsNDkzMDYsNDkzMzYsNDkzNjUsNDkz OTUsNDk0MjUsNDk0NTUsNDk0ODQsNDk1MTQsNDk1NDMsNDk1NzMsNDk2MDIsNDk2MzIsNDk2 NjEsNDk2OTAsNDk3MjAsNDk3NDksNDk3NzksNDk4MDksNDk4MzgsNDk4NjgsNDk4OTgsNDk5 MjcsNDk5NTcsNDk5ODYsNTAwMTYsNTAwNDUsNTAwNzUsNTAxMDQsNTAxMzMsNTAxNjMsNTAx OTIsNTAyMjIsNTAyNTIsNTAyODEsNTAzMTEsNTAzNDAsNTAzNzAsNTA0MDAsNTA0MjksNTA0 NTksNTA0ODgsNTA1MTgsNTA1NDcsNTA1NzYsNTA2MDYsNTA2MzUsNTA2NjUsNTA2OTQsNTA3 MjQsNTA3NTQsNTA3ODQsNTA4MTMsNTA4NDMsNTA4NzIsNTA5MDIsNTA5MzEsNTA5NjAsNTA5 OTAsNTEwMTksNTEwNDksNTEwNzgsNTExMDgsNTExMzgsNTExNjcsNTExOTcsNTEyMjcsNTEy NTYsNTEyODYsNTEzMTUsNTEzNDUsNTEzNzQsNTE0MDMsNTE0MzMsNTE0NjIsNTE0OTIsNTE1 MjIsNTE1NTIsNTE1ODIsNTE2MTEsNTE2NDEsNTE2NzAsNTE2OTksNTE3MjksNTE3NTgsNTE3 ODcsNTE4MTYsNTE4NDYsNTE4NzYsNTE5MDYsNTE5MzYsNTE5NjUsNTE5OTUsNTIwMjUsNTIw NTQsNTIwODMsNTIxMTMsNTIxNDIsNTIxNzEsNTIyMDAsNTIyMzAsNTIyNjAsNTIyOTAsNTIz MTksNTIzNDksNTIzNzksNTI0MDgsNTI0MzgsNTI0NjcsNTI0OTcsNTI1MjYsNTI1NTUsNTI1 ODUsNTI2MTQsNTI2NDQsNTI2NzMsNTI3MDMsNTI3MzMsNTI3NjIsNTI3OTIsNTI4MjIsNTI4 NTEsNTI4ODEsNTI5MTAsNTI5MzksNTI5NjksNTI5OTgsNTMwMjgsNTMwNTcsNTMwODcsNTMx MTYsNTMxNDYsNTMxNzYsNTMyMDUsNTMyMzUsNTMyNjQsNTMyOTQsNTMzMjQsNTMzNTMsNTMz ODMsNTM0MTIsNTM0NDEsNTM0NzEsNTM1MDAsNTM1MzAsNTM1NTksNTM1ODksNTM2MTksNTM2 NDgsNTM2NzgsNTM3MDgsNTM3MzcsNTM3NjcsNTM3OTYsNTM4MjUsNTM4NTUsNTM4ODQsNTM5 MTMsNTM5NDMsNTM5NzMsNTQwMDMsNTQwMzIsNTQwNjIsNTQwOTIsNTQxMjEsNTQxNTEsNTQx ODAsNTQyMDksNTQyMzksNTQyNjgsNTQyOTcsNTQzMjcsNTQzNTcsNTQzODcsNTQ0MTYsNTQ0 NDYsNTQ0NzYsNTQ1MDUsNTQ1MzUsNTQ1NjQsNTQ1OTMsNTQ2MjMsNTQ2NTIsNTQ2ODEsNTQ3 MTEsNTQ3NDEsNTQ3NzAsNTQ4MDAsNTQ4MzAsNTQ4NTksNTQ4ODksNTQ5MTksNTQ5NDgsNTQ5 NzcsNTUwMDcsNTUwMzYsNTUwNjYsNTUwOTUsNTUxMjUsNTUxNTQsNTUxODQsNTUyMTMsNTUy NDMsNTUyNzMsNTUzMDIsNTUzMzIsNTUzNjEsNTUzOTEsNTU0MjAsNTU0NTAsNTU0NzksNTU1 MDgsNTU1MzgsNTU1NjcsNTU1OTcsNTU2MjcsNTU2NTcsNTU2ODYsNTU3MTYsNTU3NDUsNTU3 NzUsNTU4MDQsNTU4MzQsNTU4NjMsNTU4OTIsNTU5MjIsNTU5NTEsNTU5ODEsNTYwMTEsNTYw NDAsNTYwNzAsNTYxMDAsNTYxMjksNTYxNTksNTYxODgsNTYyMTgsNTYyNDcsNTYyNzYsNTYz MDYsNTYzMzUsNTYzNjUsNTYzOTQsNTY0MjQsNTY0NTQsNTY0ODMsNTY1MTMsNTY1NDMsNTY1 NzIsNTY2MDEsNTY2MzEsNTY2NjAsNTY2OTAsNTY3MTksNTY3NDksNTY3NzgsNTY4MDgsNTY4 MzcsNTY4NjcsNTY4OTcsNTY5MjYsNTY5NTYsNTY5ODUsNTcwMTUsNTcwNDQsNTcwNzQsNTcx MDMsNTcxMzMsNTcxNjIsNTcxOTIsNTcyMjEsNTcyNTEsNTcyODAsNTczMTAsNTczNDAsNTcz NjksNTczOTksNTc0MjksNTc0NTgsNTc0ODcsNTc1MTcsNTc1NDYsNTc1NzYsNTc2MDUsNTc2 MzQsNTc2NjQsNTc2OTQsNTc3MjMsNTc3NTMsNTc3ODMsNTc4MTMsNTc4NDIsNTc4NzEsNTc5 MDEsNTc5MzAsNTc5NTksNTc5ODksNTgwMTgsNTgwNDgsNTgwNzcsNTgxMDcsNTgxMzcsNTgx NjcsNTgxOTYsNTgyMjYsNTgyNTUsNTgyODUsNTgzMTQsNTgzNDMsNTgzNzMsNTg0MDIsNTg0 MzIsNTg0NjEsNTg0OTEsNTg1MjEsNTg1NTEsNTg1ODAsNTg2MTAsNTg2MzksNTg2NjksNTg2 OTgsNTg3MjcsNTg3NTcsNTg3ODYsNTg4MTYsNTg4NDUsNTg4NzUsNTg5MDUsNTg5MzQsNTg5 NjQsNTg5OTQsNTkwMjMsNTkwNTMsNTkwODIsNTkxMTEsNTkxNDEsNTkxNzAsNTkyMDAsNTky MjksNTkyNTksNTkyODgsNTkzMTgsNTkzNDgsNTkzNzcsNTk0MDcsNTk0MzYsNTk0NjYsNTk0 OTUsNTk1MjUsNTk1NTQsNTk1ODQsNTk2MTMsNTk2NDMsNTk2NzIsNTk3MDIsNTk3MzEsNTk3 NjEsNTk3OTEsNTk4MjAsNTk4NTAsNTk4NzksNTk5MDksNTk5MzksNTk5NjgsNTk5OTcsNjAw MjcsNjAwNTYsNjAwODYsNjAxMTUsNjAxNDUsNjAxNzQsNjAyMDQsNjAyMzQsNjAyNjQsNjAy OTMsNjAzMjMsNjAzNTIsNjAzODEsNjA0MTEsNjA0NDAsNjA0NjksNjA0OTksNjA1MjgsNjA1 NTgsNjA1ODgsNjA2MTgsNjA2NDgsNjA2NzcsNjA3MDcsNjA3MzYsNjA3NjUsNjA3OTUsNjA4 MjQsNjA4NTMsNjA4ODMsNjA5MTIsNjA5NDIsNjA5NzIsNjEwMDIsNjEwMzEsNjEwNjEsNjEw OTAsNjExMjAsNjExNDksNjExNzksNjEyMDgsNjEyMzcsNjEyNjcsNjEyOTYsNjEzMjYsNjEz NTYsNjEzODUsNjE0MTUsNjE0NDUsNjE0NzQsNjE1MDQsNjE1MzMsNjE1NjMsNjE1OTIsNjE2 MjEsNjE2NTEsNjE2ODAsNjE3MTAsNjE3MzksNjE3NjksNjE3OTksNjE4MjgsNjE4NTgsNjE4 ODgsNjE5MTcsNjE5NDcsNjE5NzYsNjIwMDYsNjIwMzUsNjIwNjQsNjIwOTQsNjIxMjMsNjIx NTMsNjIxODIsNjIyMTIsNjIyNDIsNjIyNzEsNjIzMDEsNjIzMzEsNjIzNjAsNjIzOTAsNjI0 MTksNjI0NDgsNjI0NzgsNjI1MDcsNjI1MzcsNjI1NjYsNjI1OTYsNjI2MjUsNjI2NTUsNjI2 ODUsNjI3MTUsNjI3NDQsNjI3NzQsNjI4MDMsNjI4MzIsNjI4NjIsNjI4OTEsNjI5MjEsNjI5 NTAsNjI5ODAsNjMwMDksNjMwMzksNjMwNjksNjMwOTksNjMxMjgsNjMxNTcsNjMxODcsNjMy MTYsNjMyNDYsNjMyNzUsNjMzMDUsNjMzMzQsNjMzNjMsNjMzOTMsNjM0MjMsNjM0NTMsNjM0 ODIsNjM1MTIsNjM1NDEsNjM1NzEsNjM2MDAsNjM2MzAsNjM2NTksNjM2ODksNjM3MTgsNjM3 NDcsNjM3NzcsNjM4MDcsNjM4MzYsNjM4NjYsNjM4OTUsNjM5MjUsNjM5NTUsNjM5ODQsNjQw MTQsNjQwNDMsNjQwNzMsNjQxMDIsNjQxMzEsNjQxNjEsNjQxOTAsNjQyMjAsNjQyNDksNjQy NzksNjQzMDksNjQzMzksNjQzNjgsNjQzOTgsNjQ0MjcsNjQ0NTcsNjQ0ODYsNjQ1MTUsNjQ1 NDUsNjQ1NzQsNjQ2MDMsNjQ2MzMsNjQ2NjMsNjQ2OTIsNjQ3MjIsNjQ3NTIsNjQ3ODIsNjQ4 MTEsNjQ4NDEsNjQ4NzAsNjQ4OTksNjQ5MjksNjQ5NTgsNjQ5ODcsNjUwMTcsNjUwNDcsNjUw NzYsNjUxMDYsNjUxMzYsNjUxNjYsNjUxOTUsNjUyMjUsNjUyNTQsNjUyODMsNjUzMTMsNjUz NDIsNjUzNzEsNjU0MDEsNjU0MzEsNjU0NjAsNjU0OTAsNjU1MjAsNjU1NDksNjU1NzksNjU2 MDgsNjU2MzgsNjU2NjcsNjU2OTcsNjU3MjYsNjU3NTUsNjU3ODUsNjU4MTUsNjU4NDQsNjU4 NzQsNjU5MDMsNjU5MzMsNjU5NjMsNjU5OTIsNjYwMjIsNjYwNTEsNjYwODEsNjYxMTAsNjYx NDAsNjYxNjksNjYxOTksNjYyMjgsNjYyNTgsNjYyODcsNjYzMTcsNjYzNDYsNjYzNzYsNjY0 MDUsNjY0MzUsNjY0NjUsNjY0OTQsNjY1MjQsNjY1NTMsNjY1ODMsNjY2MTIsNjY2NDEsNjY2 NzEsNjY3MDAsNjY3MzAsNjY3NjAsNjY3ODksNjY4MTksNjY4NDksNjY4NzgsNjY5MDgsNjY5 MzcsNjY5NjcsNjY5OTYsNjcwMjUsNjcwNTUsNjcwODQsNjcxMTQsNjcxNDMsNjcxNzMsNjcy MDMsNjcyMzMsNjcyNjIsNjcyOTIsNjczMjEsNjczNTEsNjczODAsNjc0MDksNjc0MzksNjc0 NjgsNjc0OTcsNjc1MjcsNjc1NTcsNjc1ODcsNjc2MTcsNjc2NDYsNjc2NzYsNjc3MDUsNjc3 MzUsNjc3NjQsNjc3OTMsNjc4MjMsNjc4NTIsNjc4ODIsNjc5MTEsNjc5NDEsNjc5NzEsNjhl Myw2ODAzMCw2ODA2MCw2ODA4OSw2ODExOSw2ODE0OCw2ODE3Nyw2ODIwNyw2ODIzNiw2ODI2 Niw2ODI5NSw2ODMyNSw2ODM1NCw2ODM4NCw2ODQxNCw2ODQ0Myw2ODQ3Myw2ODUwMiw2ODUz Miw2ODU2MSw2ODU5MSw2ODYyMCw2ODY1MCw2ODY3OSw2ODcwOCw2ODczOCw2ODc2OCw2ODc5 Nyw2ODgyNyw2ODg1Nyw2ODg4Niw2ODkxNiw2ODk0Niw2ODk3NSw2OTAwNCw2OTAzNCw2OTA2 Myw2OTA5Miw2OTEyMiw2OTE1Miw2OTE4MSw2OTIxMSw2OTI0MCw2OTI3MCw2OTMwMCw2OTMz MCw2OTM1OSw2OTM4OCw2OTQxOCw2OTQ0Nyw2OTQ3Niw2OTUwNiw2OTUzNSw2OTU2NSw2OTU5 NSw2OTYyNCw2OTY1NCw2OTY4NCw2OTcxMyw2OTc0Myw2OTc3Miw2OTgwMiw2OTgzMSw2OTg2 MSw2OTg5MCw2OTkxOSw2OTk0OSw2OTk3OCw3MDAwOCw3MDAzOCw3MDA2Nyw3MDA5Nyw3MDEy Niw3MDE1Niw3MDE4Niw3MDIxNSw3MDI0NSw3MDI3NCw3MDMwMyw3MDMzMyw3MDM2Miw3MDM5 Miw3MDQyMSw3MDQ1MSw3MDQ4MSw3MDUxMCw3MDU0MCw3MDU3MCw3MDU5OSw3MDYyOSw3MDY1 OCw3MDY4Nyw3MDcxNyw3MDc0Niw3MDc3Niw3MDgwNSw3MDgzNSw3MDg2NCw3MDg5NCw3MDky NCw3MDk1NCw3MDk4Myw3MTAxMyw3MTA0Miw3MTA3MSw3MTEwMSw3MTEzMCw3MTE1OSw3MTE4 OSw3MTIxOCw3MTI0OCw3MTI3OCw3MTMwOCw3MTMzNyw3MTM2Nyw3MTM5Nyw3MTQyNiw3MTQ1 NSw3MTQ4NSw3MTUxNCw3MTU0Myw3MTU3Myw3MTYwMiw3MTYzMiw3MTY2Miw3MTY5MSw3MTcy MSw3MTc1MSw3MTc4MSw3MTgxMCw3MTgzOSw3MTg2OSw3MTg5OCw3MTkyNyw3MTk1Nyw3MTk4 Niw3MjAxNiw3MjA0Niw3MjA3NSw3MjEwNSw3MjEzNSw3MjE2NCw3MjE5NCw3MjIyMyw3MjI1 Myw3MjI4Miw3MjMxMSw3MjM0MSw3MjM3MCw3MjQwMCw3MjQyOSw3MjQ1OSw3MjQ4OSw3MjUx OCw3MjU0OCw3MjU3Nyw3MjYwNyw3MjYzNyw3MjY2Niw3MjY5NSw3MjcyNSw3Mjc1NCw3Mjc4 NCw3MjgxMyw3Mjg0Myw3Mjg3Miw3MjkwMiw3MjkzMSw3Mjk2MSw3Mjk5MSw3MzAyMCw3MzA1 MCw3MzA4MCw3MzEwOSw3MzEzOSw3MzE2OCw3MzE5Nyw3MzIyNyw3MzI1Niw3MzI4Niw3MzMx NSw3MzM0NSw3MzM3NSw3MzQwNCw3MzQzNCw3MzQ2NCw3MzQ5Myw3MzUyMyw3MzU1Miw3MzU4 MSw3MzYxMSw3MzY0MCw3MzY2OSw3MzY5OSw3MzcyOSw3Mzc1OCw3Mzc4OCw3MzgxOCw3Mzg0 OCw3Mzg3Nyw3MzkwNyw3MzkzNiw3Mzk2NSw3Mzk5NSw3NDAyNCw3NDA1Myw3NDA4Myw3NDEx Myw3NDE0Miw3NDE3Miw3NDIwMiw3NDIzMSw3NDI2MSw3NDI5MSw3NDMyMCw3NDM0OSw3NDM3 OSw3NDQwOCw3NDQzNyw3NDQ2Nyw3NDQ5Nyw3NDUyNiw3NDU1Niw3NDU4Niw3NDYxNSw3NDY0 NSw3NDY3NSw3NDcwNCw3NDczMyw3NDc2Myw3NDc5Miw3NDgyMiw3NDg1MSw3NDg4MSw3NDkx MCw3NDk0MCw3NDk2OSw3NDk5OSw3NTAyOSw3NTA1OCw3NTA4OCw3NTExNyw3NTE0Nyw3NTE3 Niw3NTIwNiw3NTIzNSw3NTI2NCw3NTI5NCw3NTMyMyw3NTM1Myw3NTM4Myw3NTQxMiw3NTQ0 Miw3NTQ3Miw3NTUwMSw3NTUzMSw3NTU2MCw3NTU5MCw3NTYxOSw3NTY0OCw3NTY3OCw3NTcw Nyw3NTczNyw3NTc2Niw3NTc5Niw3NTgyNiw3NTg1Niw3NTg4NSw3NTkxNSw3NTk0NCw3NTk3 NCw3NjAwMyw3NjAzMiw3NjA2Miw3NjA5MSw3NjEyMSw3NjE1MCw3NjE4MCw3NjIxMCw3NjIz OSw3NjI2OSw3NjI5OSw3NjMyOCw3NjM1OCw3NjM4Nyw3NjQxNiw3NjQ0Niw3NjQ3NSw3NjUw NSw3NjUzNCw3NjU2NCw3NjU5Myw3NjYyMyw3NjY1Myw3NjY4Miw3NjcxMiw3Njc0MSw3Njc3 MSw3NjgwMSw3NjgzMCw3Njg1OSw3Njg4OSw3NjkxOCw3Njk0OCw3Njk3Nyw3NzAwNyw3NzAz Niw3NzA2Niw3NzA5Niw3NzEyNSw3NzE1NSw3NzE4NSw3NzIxNCw3NzI0Myw3NzI3Myw3NzMw Miw3NzMzMiw3NzM2MSw3NzM5MCw3NzQyMCw3NzQ1MCw3NzQ3OSw3NzUwOSw3NzUzOSw3NzU2 OSw3NzU5OCw3NzYyNyw3NzY1Nyw3NzY4Niw3NzcxNSw3Nzc0NSw3Nzc3NCw3NzgwNCw3Nzgz Myw3Nzg2Myw3Nzg5Myw3NzkyMyw3Nzk1Miw3Nzk4Miw3ODAxMSw3ODA0MSw3ODA3MCw3ODA5 OSw3ODEyOSw3ODE1OCw3ODE4OCw3ODIxNyw3ODI0Nyw3ODI3Nyw3ODMwNyw3ODMzNiw3ODM2 Niw3ODM5NSw3ODQyNSw3ODQ1NCw3ODQ4Myw3ODUxMyw3ODU0Miw3ODU3Miw3ODYwMSw3ODYz MSw3ODY2MSw3ODY5MCw3ODcyMCw3ODc1MCw3ODc3OSw3ODgwOCw3ODgzOCw3ODg2Nyw3ODg5 Nyw3ODkyNiw3ODk1Niw3ODk4NSw3OTAxNSw3OTA0NCw3OTA3NCw3OTEwNCw3OTEzMyw3OTE2 Myw3OTE5Miw3OTIyMiw3OTI1MSw3OTI4MSw3OTMxMCw3OTM0MCw3OTM2OSw3OTM5OSw3OTQy OCw3OTQ1OCw3OTQ4Nyw3OTUxNyw3OTU0Niw3OTU3Niw3OTYwNiw3OTYzNSw3OTY2NSw3OTY5 NSw3OTcyNCw3OTc1Myw3OTc4Myw3OTgxMiw3OTg0MSw3OTg3MSw3OTkwMCw3OTkzMCw3OTk2 MCw3OTk5MF19LHsiLi4vbWFpbiI6MzQ2LCJvYmplY3QtYXNzaWduIjoyNDd9XSwzNDY6W2Z1 bmN0aW9uKHQsZSxyKXt2YXIgbj10KCJvYmplY3QtYXNzaWduIik7ZnVuY3Rpb24gaSgpe3Ro aXMucmVnaW9uYWxPcHRpb25zPVtdLHRoaXMucmVnaW9uYWxPcHRpb25zWyIiXT17aW52YWxp ZENhbGVuZGFyOiJDYWxlbmRhciB7MH0gbm90IGZvdW5kIixpbnZhbGlkRGF0ZToiSW52YWxp ZCB7MH0gZGF0ZSIsaW52YWxpZE1vbnRoOiJJbnZhbGlkIHswfSBtb250aCIsaW52YWxpZFll YXI6IkludmFsaWQgezB9IHllYXIiLGRpZmZlcmVudENhbGVuZGFyczoiQ2Fubm90IG1peCB7 MH0gYW5kIHsxfSBkYXRlcyJ9LHRoaXMubG9jYWw9dGhpcy5yZWdpb25hbE9wdGlvbnNbIiJd LHRoaXMuY2FsZW5kYXJzPXt9LHRoaXMuX2xvY2FsQ2Fscz17fX1mdW5jdGlvbiBhKHQsZSxy LG4pe2lmKHRoaXMuX2NhbGVuZGFyPXQsdGhpcy5feWVhcj1lLHRoaXMuX21vbnRoPXIsdGhp cy5fZGF5PW4sMD09PXRoaXMuX2NhbGVuZGFyLl92YWxpZGF0ZUxldmVsJiYhdGhpcy5fY2Fs ZW5kYXIuaXNWYWxpZCh0aGlzLl95ZWFyLHRoaXMuX21vbnRoLHRoaXMuX2RheSkpdGhyb3co Yy5sb2NhbC5pbnZhbGlkRGF0ZXx8Yy5yZWdpb25hbE9wdGlvbnNbIiJdLmludmFsaWREYXRl KS5yZXBsYWNlKC9cezBcfS8sdGhpcy5fY2FsZW5kYXIubG9jYWwubmFtZSl9ZnVuY3Rpb24g byh0LGUpe3JldHVybiIwMDAwMDAiLnN1YnN0cmluZygwLGUtKHQ9IiIrdCkubGVuZ3RoKSt0 fWZ1bmN0aW9uIHMoKXt0aGlzLnNob3J0WWVhckN1dG9mZj0iKzEwIn1mdW5jdGlvbiBsKHQp e3RoaXMubG9jYWw9dGhpcy5yZWdpb25hbE9wdGlvbnNbdF18fHRoaXMucmVnaW9uYWxPcHRp b25zWyIiXX1uKGkucHJvdG90eXBlLHtpbnN0YW5jZTpmdW5jdGlvbih0LGUpe3Q9KHR8fCJn cmVnb3JpYW4iKS50b0xvd2VyQ2FzZSgpLGU9ZXx8IiI7dmFyIHI9dGhpcy5fbG9jYWxDYWxz W3QrIi0iK2VdO2lmKCFyJiZ0aGlzLmNhbGVuZGFyc1t0XSYmKHI9bmV3IHRoaXMuY2FsZW5k YXJzW3RdKGUpLHRoaXMuX2xvY2FsQ2Fsc1t0KyItIitlXT1yKSwhcil0aHJvdyh0aGlzLmxv Y2FsLmludmFsaWRDYWxlbmRhcnx8dGhpcy5yZWdpb25hbE9wdGlvbnNbIiJdLmludmFsaWRD YWxlbmRhcikucmVwbGFjZSgvXHswXH0vLHQpO3JldHVybiByfSxuZXdEYXRlOmZ1bmN0aW9u KHQsZSxyLG4saSl7cmV0dXJuKG49KG51bGwhPXQmJnQueWVhcj90LmNhbGVuZGFyKCk6InN0 cmluZyI9PXR5cGVvZiBuP3RoaXMuaW5zdGFuY2UobixpKTpuKXx8dGhpcy5pbnN0YW5jZSgp KS5uZXdEYXRlKHQsZSxyKX0sc3Vic3RpdHV0ZURpZ2l0czpmdW5jdGlvbih0KXtyZXR1cm4g ZnVuY3Rpb24oZSl7cmV0dXJuKGUrIiIpLnJlcGxhY2UoL1swLTldL2csKGZ1bmN0aW9uKGUp e3JldHVybiB0W2VdfSkpfX0sc3Vic3RpdHV0ZUNoaW5lc2VEaWdpdHM6ZnVuY3Rpb24odCxl KXtyZXR1cm4gZnVuY3Rpb24ocil7Zm9yKHZhciBuPSIiLGk9MDtyPjA7KXt2YXIgYT1yJTEw O249KDA9PT1hPyIiOnRbYV0rZVtpXSkrbixpKysscj1NYXRoLmZsb29yKHIvMTApfXJldHVy biAwPT09bi5pbmRleE9mKHRbMV0rZVsxXSkmJihuPW4uc3Vic3RyKDEpKSxufHx0WzBdfX19 KSxuKGEucHJvdG90eXBlLHtuZXdEYXRlOmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdGhpcy5f Y2FsZW5kYXIubmV3RGF0ZShudWxsPT10P3RoaXM6dCxlLHIpfSx5ZWFyOmZ1bmN0aW9uKHQp e3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLl95ZWFyOnRoaXMuc2V0KHQsInki KX0sbW9udGg6ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMu X21vbnRoOnRoaXMuc2V0KHQsIm0iKX0sZGF5OmZ1bmN0aW9uKHQpe3JldHVybiAwPT09YXJn dW1lbnRzLmxlbmd0aD90aGlzLl9kYXk6dGhpcy5zZXQodCwiZCIpfSxkYXRlOmZ1bmN0aW9u KHQsZSxyKXtpZighdGhpcy5fY2FsZW5kYXIuaXNWYWxpZCh0LGUscikpdGhyb3coYy5sb2Nh bC5pbnZhbGlkRGF0ZXx8Yy5yZWdpb25hbE9wdGlvbnNbIiJdLmludmFsaWREYXRlKS5yZXBs YWNlKC9cezBcfS8sdGhpcy5fY2FsZW5kYXIubG9jYWwubmFtZSk7cmV0dXJuIHRoaXMuX3ll YXI9dCx0aGlzLl9tb250aD1lLHRoaXMuX2RheT1yLHRoaXN9LGxlYXBZZWFyOmZ1bmN0aW9u KCl7cmV0dXJuIHRoaXMuX2NhbGVuZGFyLmxlYXBZZWFyKHRoaXMpfSxlcG9jaDpmdW5jdGlv bigpe3JldHVybiB0aGlzLl9jYWxlbmRhci5lcG9jaCh0aGlzKX0sZm9ybWF0WWVhcjpmdW5j dGlvbigpe3JldHVybiB0aGlzLl9jYWxlbmRhci5mb3JtYXRZZWFyKHRoaXMpfSxtb250aE9m WWVhcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jYWxlbmRhci5tb250aE9mWWVhcih0aGlz KX0sd2Vla09mWWVhcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jYWxlbmRhci53ZWVrT2ZZ ZWFyKHRoaXMpfSxkYXlzSW5ZZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NhbGVuZGFy LmRheXNJblllYXIodGhpcyl9LGRheU9mWWVhcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9j YWxlbmRhci5kYXlPZlllYXIodGhpcyl9LGRheXNJbk1vbnRoOmZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMuX2NhbGVuZGFyLmRheXNJbk1vbnRoKHRoaXMpfSxkYXlPZldlZWs6ZnVuY3Rpb24o KXtyZXR1cm4gdGhpcy5fY2FsZW5kYXIuZGF5T2ZXZWVrKHRoaXMpfSx3ZWVrRGF5OmZ1bmN0 aW9uKCl7cmV0dXJuIHRoaXMuX2NhbGVuZGFyLndlZWtEYXkodGhpcyl9LGV4dHJhSW5mbzpm dW5jdGlvbigpe3JldHVybiB0aGlzLl9jYWxlbmRhci5leHRyYUluZm8odGhpcyl9LGFkZDpm dW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9jYWxlbmRhci5hZGQodGhpcyx0LGUpfSxzZXQ6 ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fY2FsZW5kYXIuc2V0KHRoaXMsdCxlKX0sY29t cGFyZVRvOmZ1bmN0aW9uKHQpe2lmKHRoaXMuX2NhbGVuZGFyLm5hbWUhPT10Ll9jYWxlbmRh ci5uYW1lKXRocm93KGMubG9jYWwuZGlmZmVyZW50Q2FsZW5kYXJzfHxjLnJlZ2lvbmFsT3B0 aW9uc1siIl0uZGlmZmVyZW50Q2FsZW5kYXJzKS5yZXBsYWNlKC9cezBcfS8sdGhpcy5fY2Fs ZW5kYXIubG9jYWwubmFtZSkucmVwbGFjZSgvXHsxXH0vLHQuX2NhbGVuZGFyLmxvY2FsLm5h bWUpO3ZhciBlPXRoaXMuX3llYXIhPT10Ll95ZWFyP3RoaXMuX3llYXItdC5feWVhcjp0aGlz Ll9tb250aCE9PXQuX21vbnRoP3RoaXMubW9udGhPZlllYXIoKS10Lm1vbnRoT2ZZZWFyKCk6 dGhpcy5fZGF5LXQuX2RheTtyZXR1cm4gMD09PWU/MDplPDA/LTE6MX0sY2FsZW5kYXI6ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FsZW5kYXJ9LHRvSkQ6ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5fY2FsZW5kYXIudG9KRCh0aGlzKX0sZnJvbUpEOmZ1bmN0aW9uKHQpe3JldHVybiB0 aGlzLl9jYWxlbmRhci5mcm9tSkQodCl9LHRvSlNEYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRo aXMuX2NhbGVuZGFyLnRvSlNEYXRlKHRoaXMpfSxmcm9tSlNEYXRlOmZ1bmN0aW9uKHQpe3Jl dHVybiB0aGlzLl9jYWxlbmRhci5mcm9tSlNEYXRlKHQpfSx0b1N0cmluZzpmdW5jdGlvbigp e3JldHVybih0aGlzLnllYXIoKTwwPyItIjoiIikrbyhNYXRoLmFicyh0aGlzLnllYXIoKSks NCkrIi0iK28odGhpcy5tb250aCgpLDIpKyItIitvKHRoaXMuZGF5KCksMil9fSksbihzLnBy b3RvdHlwZSx7X3ZhbGlkYXRlTGV2ZWw6MCxuZXdEYXRlOmZ1bmN0aW9uKHQsZSxyKXtyZXR1 cm4gbnVsbD09dD90aGlzLnRvZGF5KCk6KHQueWVhciYmKHRoaXMuX3ZhbGlkYXRlKHQsZSxy LGMubG9jYWwuaW52YWxpZERhdGV8fGMucmVnaW9uYWxPcHRpb25zWyIiXS5pbnZhbGlkRGF0 ZSkscj10LmRheSgpLGU9dC5tb250aCgpLHQ9dC55ZWFyKCkpLG5ldyBhKHRoaXMsdCxlLHIp KX0sdG9kYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mcm9tSlNEYXRlKG5ldyBEYXRlKX0s ZXBvY2g6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlKHQsdGhpcy5taW5Nb250 aCx0aGlzLm1pbkRheSxjLmxvY2FsLmludmFsaWRZZWFyfHxjLnJlZ2lvbmFsT3B0aW9uc1si Il0uaW52YWxpZFllYXIpLnllYXIoKTwwP3RoaXMubG9jYWwuZXBvY2hzWzBdOnRoaXMubG9j YWwuZXBvY2hzWzFdfSxmb3JtYXRZZWFyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3ZhbGlk YXRlKHQsdGhpcy5taW5Nb250aCx0aGlzLm1pbkRheSxjLmxvY2FsLmludmFsaWRZZWFyfHxj LnJlZ2lvbmFsT3B0aW9uc1siIl0uaW52YWxpZFllYXIpO3JldHVybihlLnllYXIoKTwwPyIt IjoiIikrbyhNYXRoLmFicyhlLnllYXIoKSksNCl9LG1vbnRoc0luWWVhcjpmdW5jdGlvbih0 KXtyZXR1cm4gdGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LGMu bG9jYWwuaW52YWxpZFllYXJ8fGMucmVnaW9uYWxPcHRpb25zWyIiXS5pbnZhbGlkWWVhciks MTJ9LG1vbnRoT2ZZZWFyOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fdmFsaWRhdGUodCxl LHRoaXMubWluRGF5LGMubG9jYWwuaW52YWxpZE1vbnRofHxjLnJlZ2lvbmFsT3B0aW9uc1si Il0uaW52YWxpZE1vbnRoKTtyZXR1cm4oci5tb250aCgpK3RoaXMubW9udGhzSW5ZZWFyKHIp LXRoaXMuZmlyc3RNb250aCkldGhpcy5tb250aHNJblllYXIocikrdGhpcy5taW5Nb250aH0s ZnJvbU1vbnRoT2ZZZWFyOmZ1bmN0aW9uKHQsZSl7dmFyIHI9KGUrdGhpcy5maXJzdE1vbnRo LTIqdGhpcy5taW5Nb250aCkldGhpcy5tb250aHNJblllYXIodCkrdGhpcy5taW5Nb250aDty ZXR1cm4gdGhpcy5fdmFsaWRhdGUodCxyLHRoaXMubWluRGF5LGMubG9jYWwuaW52YWxpZE1v bnRofHxjLnJlZ2lvbmFsT3B0aW9uc1siIl0uaW52YWxpZE1vbnRoKSxyfSxkYXlzSW5ZZWFy OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3ZhbGlkYXRlKHQsdGhpcy5taW5Nb250aCx0aGlz Lm1pbkRheSxjLmxvY2FsLmludmFsaWRZZWFyfHxjLnJlZ2lvbmFsT3B0aW9uc1siIl0uaW52 YWxpZFllYXIpO3JldHVybiB0aGlzLmxlYXBZZWFyKGUpPzM2NjozNjV9LGRheU9mWWVhcjpm dW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5fdmFsaWRhdGUodCxlLHIsYy5sb2NhbC5pbnZh bGlkRGF0ZXx8Yy5yZWdpb25hbE9wdGlvbnNbIiJdLmludmFsaWREYXRlKTtyZXR1cm4gbi50 b0pEKCktdGhpcy5uZXdEYXRlKG4ueWVhcigpLHRoaXMuZnJvbU1vbnRoT2ZZZWFyKG4ueWVh cigpLHRoaXMubWluTW9udGgpLHRoaXMubWluRGF5KS50b0pEKCkrMX0sZGF5c0luV2Vlazpm dW5jdGlvbigpe3JldHVybiA3fSxkYXlPZldlZWs6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRo aXMuX3ZhbGlkYXRlKHQsZSxyLGMubG9jYWwuaW52YWxpZERhdGV8fGMucmVnaW9uYWxPcHRp b25zWyIiXS5pbnZhbGlkRGF0ZSk7cmV0dXJuKE1hdGguZmxvb3IodGhpcy50b0pEKG4pKSsy KSV0aGlzLmRheXNJbldlZWsoKX0sZXh0cmFJbmZvOmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4g dGhpcy5fdmFsaWRhdGUodCxlLHIsYy5sb2NhbC5pbnZhbGlkRGF0ZXx8Yy5yZWdpb25hbE9w dGlvbnNbIiJdLmludmFsaWREYXRlKSx7fX0sYWRkOmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4g dGhpcy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LGMubG9jYWwuaW52 YWxpZERhdGV8fGMucmVnaW9uYWxPcHRpb25zWyIiXS5pbnZhbGlkRGF0ZSksdGhpcy5fY29y cmVjdEFkZCh0LHRoaXMuX2FkZCh0LGUsciksZSxyKX0sX2FkZDpmdW5jdGlvbih0LGUscil7 aWYodGhpcy5fdmFsaWRhdGVMZXZlbCsrLCJkIj09PXJ8fCJ3Ij09PXIpe3ZhciBuPXQudG9K RCgpK2UqKCJ3Ij09PXI/dGhpcy5kYXlzSW5XZWVrKCk6MSksaT10LmNhbGVuZGFyKCkuZnJv bUpEKG4pO3JldHVybiB0aGlzLl92YWxpZGF0ZUxldmVsLS0sW2kueWVhcigpLGkubW9udGgo KSxpLmRheSgpXX10cnl7dmFyIGE9dC55ZWFyKCkrKCJ5Ij09PXI/ZTowKSxvPXQubW9udGhP ZlllYXIoKSsoIm0iPT09cj9lOjApO2k9dC5kYXkoKTsieSI9PT1yPyh0Lm1vbnRoKCkhPT10 aGlzLmZyb21Nb250aE9mWWVhcihhLG8pJiYobz10aGlzLm5ld0RhdGUoYSx0Lm1vbnRoKCks dGhpcy5taW5EYXkpLm1vbnRoT2ZZZWFyKCkpLG89TWF0aC5taW4obyx0aGlzLm1vbnRoc0lu WWVhcihhKSksaT1NYXRoLm1pbihpLHRoaXMuZGF5c0luTW9udGgoYSx0aGlzLmZyb21Nb250 aE9mWWVhcihhLG8pKSkpOiJtIj09PXImJighZnVuY3Rpb24odCl7Zm9yKDtvPHQubWluTW9u dGg7KWEtLSxvKz10Lm1vbnRoc0luWWVhcihhKTtmb3IodmFyIGU9dC5tb250aHNJblllYXIo YSk7bz5lLTErdC5taW5Nb250aDspYSsrLG8tPWUsZT10Lm1vbnRoc0luWWVhcihhKX0odGhp cyksaT1NYXRoLm1pbihpLHRoaXMuZGF5c0luTW9udGgoYSx0aGlzLmZyb21Nb250aE9mWWVh cihhLG8pKSkpO3ZhciBzPVthLHRoaXMuZnJvbU1vbnRoT2ZZZWFyKGEsbyksaV07cmV0dXJu IHRoaXMuX3ZhbGlkYXRlTGV2ZWwtLSxzfWNhdGNoKHQpe3Rocm93IHRoaXMuX3ZhbGlkYXRl TGV2ZWwtLSx0fX0sX2NvcnJlY3RBZGQ6ZnVuY3Rpb24odCxlLHIsbil7aWYoISh0aGlzLmhh c1llYXJaZXJvfHwieSIhPT1uJiYibSIhPT1ufHwwIT09ZVswXSYmdC55ZWFyKCk+MD09ZVsw XT4wKSl7dmFyIGk9e3k6WzEsMSwieSJdLG06WzEsdGhpcy5tb250aHNJblllYXIoLTEpLCJt Il0sdzpbdGhpcy5kYXlzSW5XZWVrKCksdGhpcy5kYXlzSW5ZZWFyKC0xKSwiZCJdLGQ6WzEs dGhpcy5kYXlzSW5ZZWFyKC0xKSwiZCJdfVtuXSxhPXI8MD8tMToxO2U9dGhpcy5fYWRkKHQs cippWzBdK2EqaVsxXSxpWzJdKX1yZXR1cm4gdC5kYXRlKGVbMF0sZVsxXSxlWzJdKX0sc2V0 OmZ1bmN0aW9uKHQsZSxyKXt0aGlzLl92YWxpZGF0ZSh0LHRoaXMubWluTW9udGgsdGhpcy5t aW5EYXksYy5sb2NhbC5pbnZhbGlkRGF0ZXx8Yy5yZWdpb25hbE9wdGlvbnNbIiJdLmludmFs aWREYXRlKTt2YXIgbj0ieSI9PT1yP2U6dC55ZWFyKCksaT0ibSI9PT1yP2U6dC5tb250aCgp LGE9ImQiPT09cj9lOnQuZGF5KCk7cmV0dXJuInkiIT09ciYmIm0iIT09cnx8KGE9TWF0aC5t aW4oYSx0aGlzLmRheXNJbk1vbnRoKG4saSkpKSx0LmRhdGUobixpLGEpfSxpc1ZhbGlkOmZ1 bmN0aW9uKHQsZSxyKXt0aGlzLl92YWxpZGF0ZUxldmVsKys7dmFyIG49dGhpcy5oYXNZZWFy WmVyb3x8MCE9PXQ7aWYobil7dmFyIGk9dGhpcy5uZXdEYXRlKHQsZSx0aGlzLm1pbkRheSk7 bj1lPj10aGlzLm1pbk1vbnRoJiZlLXRoaXMubWluTW9udGg8dGhpcy5tb250aHNJblllYXIo aSkmJnI+PXRoaXMubWluRGF5JiZyLXRoaXMubWluRGF5PHRoaXMuZGF5c0luTW9udGgoaSl9 cmV0dXJuIHRoaXMuX3ZhbGlkYXRlTGV2ZWwtLSxufSx0b0pTRGF0ZTpmdW5jdGlvbih0LGUs cil7dmFyIG49dGhpcy5fdmFsaWRhdGUodCxlLHIsYy5sb2NhbC5pbnZhbGlkRGF0ZXx8Yy5y ZWdpb25hbE9wdGlvbnNbIiJdLmludmFsaWREYXRlKTtyZXR1cm4gYy5pbnN0YW5jZSgpLmZy b21KRCh0aGlzLnRvSkQobikpLnRvSlNEYXRlKCl9LGZyb21KU0RhdGU6ZnVuY3Rpb24odCl7 cmV0dXJuIHRoaXMuZnJvbUpEKGMuaW5zdGFuY2UoKS5mcm9tSlNEYXRlKHQpLnRvSkQoKSl9 LF92YWxpZGF0ZTpmdW5jdGlvbih0LGUscixuKXtpZih0LnllYXIpe2lmKDA9PT10aGlzLl92 YWxpZGF0ZUxldmVsJiZ0aGlzLm5hbWUhPT10LmNhbGVuZGFyKCkubmFtZSl0aHJvdyhjLmxv Y2FsLmRpZmZlcmVudENhbGVuZGFyc3x8Yy5yZWdpb25hbE9wdGlvbnNbIiJdLmRpZmZlcmVu dENhbGVuZGFycykucmVwbGFjZSgvXHswXH0vLHRoaXMubG9jYWwubmFtZSkucmVwbGFjZSgv XHsxXH0vLHQuY2FsZW5kYXIoKS5sb2NhbC5uYW1lKTtyZXR1cm4gdH10cnl7aWYodGhpcy5f dmFsaWRhdGVMZXZlbCsrLDE9PT10aGlzLl92YWxpZGF0ZUxldmVsJiYhdGhpcy5pc1ZhbGlk KHQsZSxyKSl0aHJvdyBuLnJlcGxhY2UoL1x7MFx9Lyx0aGlzLmxvY2FsLm5hbWUpO3ZhciBp PXRoaXMubmV3RGF0ZSh0LGUscik7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlTGV2ZWwtLSxpfWNh dGNoKHQpe3Rocm93IHRoaXMuX3ZhbGlkYXRlTGV2ZWwtLSx0fX19KSxsLnByb3RvdHlwZT1u ZXcgcyxuKGwucHJvdG90eXBlLHtuYW1lOiJHcmVnb3JpYW4iLGpkRXBvY2g6MTcyMTQyNS41 LGRheXNQZXJNb250aDpbMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdLGhh c1llYXJaZXJvOiExLG1pbk1vbnRoOjEsZmlyc3RNb250aDoxLG1pbkRheToxLHJlZ2lvbmFs T3B0aW9uczp7IiI6e25hbWU6IkdyZWdvcmlhbiIsZXBvY2hzOlsiQkNFIiwiQ0UiXSxtb250 aE5hbWVzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1 bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwi RGVjZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJN YXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1l czpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIs IkZyaWRheSIsIlNhdHVyZGF5Il0sZGF5TmFtZXNTaG9ydDpbIlN1biIsIk1vbiIsIlR1ZSIs IldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLGRheU5hbWVzTWluOlsiU3UiLCJNbyIsIlR1Iiwi V2UiLCJUaCIsIkZyIiwiU2EiXSxkaWdpdHM6bnVsbCxkYXRlRm9ybWF0OiJtbS9kZC95eXl5 IixmaXJzdERheTowLGlzUlRMOiExfX0sbGVhcFllYXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhp cy5fdmFsaWRhdGUodCx0aGlzLm1pbk1vbnRoLHRoaXMubWluRGF5LGMubG9jYWwuaW52YWxp ZFllYXJ8fGMucmVnaW9uYWxPcHRpb25zWyIiXS5pbnZhbGlkWWVhcik7cmV0dXJuKHQ9ZS55 ZWFyKCkrKGUueWVhcigpPDA/MTowKSklND09MCYmKHQlMTAwIT0wfHx0JTQwMD09MCl9LHdl ZWtPZlllYXI6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMubmV3RGF0ZSh0LGUscik7cmV0 dXJuIG4uYWRkKDQtKG4uZGF5T2ZXZWVrKCl8fDcpLCJkIiksTWF0aC5mbG9vcigobi5kYXlP ZlllYXIoKS0xKS83KSsxfSxkYXlzSW5Nb250aDpmdW5jdGlvbih0LGUpe3ZhciByPXRoaXMu X3ZhbGlkYXRlKHQsZSx0aGlzLm1pbkRheSxjLmxvY2FsLmludmFsaWRNb250aHx8Yy5yZWdp b25hbE9wdGlvbnNbIiJdLmludmFsaWRNb250aCk7cmV0dXJuIHRoaXMuZGF5c1Blck1vbnRo W3IubW9udGgoKS0xXSsoMj09PXIubW9udGgoKSYmdGhpcy5sZWFwWWVhcihyLnllYXIoKSk/ MTowKX0sd2Vla0RheTpmdW5jdGlvbih0LGUscil7cmV0dXJuKHRoaXMuZGF5T2ZXZWVrKHQs ZSxyKXx8Nyk8Nn0sdG9KRDpmdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5fdmFsaWRhdGUo dCxlLHIsYy5sb2NhbC5pbnZhbGlkRGF0ZXx8Yy5yZWdpb25hbE9wdGlvbnNbIiJdLmludmFs aWREYXRlKTt0PW4ueWVhcigpLGU9bi5tb250aCgpLHI9bi5kYXkoKSx0PDAmJnQrKyxlPDMm JihlKz0xMix0LS0pO3ZhciBpPU1hdGguZmxvb3IodC8xMDApLGE9Mi1pK01hdGguZmxvb3Io aS80KTtyZXR1cm4gTWF0aC5mbG9vcigzNjUuMjUqKHQrNDcxNikpK01hdGguZmxvb3IoMzAu NjAwMSooZSsxKSkrcithLTE1MjQuNX0sZnJvbUpEOmZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgu Zmxvb3IodCsuNSkscj1NYXRoLmZsb29yKChlLTE4NjcyMTYuMjUpLzM2NTI0LjI1KSxuPShy PWUrMStyLU1hdGguZmxvb3Ioci80KSkrMTUyNCxpPU1hdGguZmxvb3IoKG4tMTIyLjEpLzM2 NS4yNSksYT1NYXRoLmZsb29yKDM2NS4yNSppKSxvPU1hdGguZmxvb3IoKG4tYSkvMzAuNjAw MSkscz1uLWEtTWF0aC5mbG9vcigzMC42MDAxKm8pLGw9by0obz4xMy41PzEzOjEpLGM9aS0o bD4yLjU/NDcxNjo0NzE1KTtyZXR1cm4gYzw9MCYmYy0tLHRoaXMubmV3RGF0ZShjLGwscyl9 LHRvSlNEYXRlOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLl92YWxpZGF0ZSh0LGUscixj LmxvY2FsLmludmFsaWREYXRlfHxjLnJlZ2lvbmFsT3B0aW9uc1siIl0uaW52YWxpZERhdGUp LGk9bmV3IERhdGUobi55ZWFyKCksbi5tb250aCgpLTEsbi5kYXkoKSk7cmV0dXJuIGkuc2V0 SG91cnMoMCksaS5zZXRNaW51dGVzKDApLGkuc2V0U2Vjb25kcygwKSxpLnNldE1pbGxpc2Vj b25kcygwKSxpLnNldEhvdXJzKGkuZ2V0SG91cnMoKT4xMj9pLmdldEhvdXJzKCkrMjowKSxp fSxmcm9tSlNEYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm5ld0RhdGUodC5nZXRGdWxs WWVhcigpLHQuZ2V0TW9udGgoKSsxLHQuZ2V0RGF0ZSgpKX19KTt2YXIgYz1lLmV4cG9ydHM9 bmV3IGk7Yy5jZGF0ZT1hLGMuYmFzZUNhbGVuZGFyPXMsYy5jYWxlbmRhcnMuZ3JlZ29yaWFu PWx9LHsib2JqZWN0LWFzc2lnbiI6MjQ3fV0sMzQ3OltmdW5jdGlvbih0LGUscil7dmFyIG49 dCgib2JqZWN0LWFzc2lnbiIpLGk9dCgiLi9tYWluIik7bihpLnJlZ2lvbmFsT3B0aW9uc1si Il0se2ludmFsaWRBcmd1bWVudHM6IkludmFsaWQgYXJndW1lbnRzIixpbnZhbGlkRm9ybWF0 OiJDYW5ub3QgZm9ybWF0IGEgZGF0ZSBmcm9tIGFub3RoZXIgY2FsZW5kYXIiLG1pc3NpbmdO dW1iZXJBdDoiTWlzc2luZyBudW1iZXIgYXQgcG9zaXRpb24gezB9Iix1bmtub3duTmFtZUF0 OiJVbmtub3duIG5hbWUgYXQgcG9zaXRpb24gezB9Iix1bmV4cGVjdGVkTGl0ZXJhbEF0OiJV bmV4cGVjdGVkIGxpdGVyYWwgYXQgcG9zaXRpb24gezB9Iix1bmV4cGVjdGVkVGV4dDoiQWRk aXRpb25hbCB0ZXh0IGZvdW5kIGF0IGVuZCJ9KSxpLmxvY2FsPWkucmVnaW9uYWxPcHRpb25z WyIiXSxuKGkuY2RhdGUucHJvdG90eXBlLHtmb3JtYXREYXRlOmZ1bmN0aW9uKHQsZSl7cmV0 dXJuInN0cmluZyIhPXR5cGVvZiB0JiYoZT10LHQ9IiIpLHRoaXMuX2NhbGVuZGFyLmZvcm1h dERhdGUodHx8IiIsdGhpcyxlKX19KSxuKGkuYmFzZUNhbGVuZGFyLnByb3RvdHlwZSx7VU5J WF9FUE9DSDppLmluc3RhbmNlKCkubmV3RGF0ZSgxOTcwLDEsMSkudG9KRCgpLFNFQ1NfUEVS X0RBWTo4NjQwMCxUSUNLU19FUE9DSDppLmluc3RhbmNlKCkuamRFcG9jaCxUSUNLU19QRVJf REFZOjg2NGU5LEFUT006Inl5eXktbW0tZGQiLENPT0tJRToiRCwgZGQgTSB5eXl5IixGVUxM OiJERCwgTU0gZCwgeXl5eSIsSVNPXzg2MDE6Inl5eXktbW0tZGQiLEpVTElBTjoiSiIsUkZD XzgyMjoiRCwgZCBNIHl5IixSRkNfODUwOiJERCwgZGQtTS15eSIsUkZDXzEwMzY6IkQsIGQg TSB5eSIsUkZDXzExMjM6IkQsIGQgTSB5eXl5IixSRkNfMjgyMjoiRCwgZCBNIHl5eXkiLFJT UzoiRCwgZCBNIHl5IixUSUNLUzoiISIsVElNRVNUQU1QOiJAIixXM0M6Inl5eXktbW0tZGQi LGZvcm1hdERhdGU6ZnVuY3Rpb24odCxlLHIpe2lmKCJzdHJpbmciIT10eXBlb2YgdCYmKHI9 ZSxlPXQsdD0iIiksIWUpcmV0dXJuIiI7aWYoZS5jYWxlbmRhcigpIT09dGhpcyl0aHJvdyBp LmxvY2FsLmludmFsaWRGb3JtYXR8fGkucmVnaW9uYWxPcHRpb25zWyIiXS5pbnZhbGlkRm9y bWF0O3Q9dHx8dGhpcy5sb2NhbC5kYXRlRm9ybWF0O2Zvcih2YXIgbixhLG8scyxsPShyPXJ8 fHt9KS5kYXlOYW1lc1Nob3J0fHx0aGlzLmxvY2FsLmRheU5hbWVzU2hvcnQsYz1yLmRheU5h bWVzfHx0aGlzLmxvY2FsLmRheU5hbWVzLHU9ci5tb250aE51bWJlcnN8fHRoaXMubG9jYWwu bW9udGhOdW1iZXJzLGY9ci5tb250aE5hbWVzU2hvcnR8fHRoaXMubG9jYWwubW9udGhOYW1l c1Nob3J0LGg9ci5tb250aE5hbWVzfHx0aGlzLmxvY2FsLm1vbnRoTmFtZXMscD0oci5jYWxj dWxhdGVXZWVrfHx0aGlzLmxvY2FsLmNhbGN1bGF0ZVdlZWssZnVuY3Rpb24oZSxyKXtmb3Io dmFyIG49MTt3K248dC5sZW5ndGgmJnQuY2hhckF0KHcrbik9PT1lOyluKys7cmV0dXJuIHcr PW4tMSxNYXRoLmZsb29yKG4vKHJ8fDEpKT4xfSksZD1mdW5jdGlvbih0LGUscixuKXt2YXIg aT0iIitlO2lmKHAodCxuKSlmb3IoO2kubGVuZ3RoPHI7KWk9IjAiK2k7cmV0dXJuIGl9LG09 dGhpcyxnPWZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB1P3UuY2FsbCht LHQscCgibSIpKTp4KGQoIm0iLHQubW9udGgoKSwyKSl9LHY9ZnVuY3Rpb24odCxlKXtyZXR1 cm4gZT8iZnVuY3Rpb24iPT10eXBlb2YgaD9oLmNhbGwobSx0KTpoW3QubW9udGgoKS1tLm1p bk1vbnRoXToiZnVuY3Rpb24iPT10eXBlb2YgZj9mLmNhbGwobSx0KTpmW3QubW9udGgoKS1t Lm1pbk1vbnRoXX0seT10aGlzLmxvY2FsLmRpZ2l0cyx4PWZ1bmN0aW9uKHQpe3JldHVybiBy LmxvY2FsTnVtYmVycyYmeT95KHQpOnR9LGI9IiIsXz0hMSx3PTA7dzx0Lmxlbmd0aDt3Kysp aWYoXykiJyIhPT10LmNoYXJBdCh3KXx8cCgiJyIpP2IrPXQuY2hhckF0KHcpOl89ITE7ZWxz ZSBzd2l0Y2godC5jaGFyQXQodykpe2Nhc2UiZCI6Yis9eChkKCJkIixlLmRheSgpLDIpKTti cmVhaztjYXNlIkQiOmIrPShuPSJEIixhPWUuZGF5T2ZXZWVrKCksbz1sLHM9YyxwKG4pP3Nb YV06b1thXSk7YnJlYWs7Y2FzZSJvIjpiKz1kKCJvIixlLmRheU9mWWVhcigpLDMpO2JyZWFr O2Nhc2UidyI6Yis9ZCgidyIsZS53ZWVrT2ZZZWFyKCksMik7YnJlYWs7Y2FzZSJtIjpiKz1n KGUpO2JyZWFrO2Nhc2UiTSI6Yis9dihlLHAoIk0iKSk7YnJlYWs7Y2FzZSJ5IjpiKz1wKCJ5 IiwyKT9lLnllYXIoKTooZS55ZWFyKCklMTAwPDEwPyIwIjoiIikrZS55ZWFyKCklMTAwO2Jy ZWFrO2Nhc2UiWSI6cCgiWSIsMiksYis9ZS5mb3JtYXRZZWFyKCk7YnJlYWs7Y2FzZSJKIjpi Kz1lLnRvSkQoKTticmVhaztjYXNlIkAiOmIrPShlLnRvSkQoKS10aGlzLlVOSVhfRVBPQ0gp KnRoaXMuU0VDU19QRVJfREFZO2JyZWFrO2Nhc2UiISI6Yis9KGUudG9KRCgpLXRoaXMuVElD S1NfRVBPQ0gpKnRoaXMuVElDS1NfUEVSX0RBWTticmVhaztjYXNlIiciOnAoIiciKT9iKz0i JyI6Xz0hMDticmVhaztkZWZhdWx0OmIrPXQuY2hhckF0KHcpfXJldHVybiBifSxwYXJzZURh dGU6ZnVuY3Rpb24odCxlLHIpe2lmKG51bGw9PWUpdGhyb3cgaS5sb2NhbC5pbnZhbGlkQXJn dW1lbnRzfHxpLnJlZ2lvbmFsT3B0aW9uc1siIl0uaW52YWxpZEFyZ3VtZW50cztpZigiIj09 PShlPSJvYmplY3QiPT10eXBlb2YgZT9lLnRvU3RyaW5nKCk6ZSsiIikpcmV0dXJuIG51bGw7 dD10fHx0aGlzLmxvY2FsLmRhdGVGb3JtYXQ7dmFyIG49KHI9cnx8e30pLnNob3J0WWVhckN1 dG9mZnx8dGhpcy5zaG9ydFllYXJDdXRvZmY7bj0ic3RyaW5nIiE9dHlwZW9mIG4/bjp0aGlz LnRvZGF5KCkueWVhcigpJTEwMCtwYXJzZUludChuLDEwKTtmb3IodmFyIGE9ci5kYXlOYW1l c1Nob3J0fHx0aGlzLmxvY2FsLmRheU5hbWVzU2hvcnQsbz1yLmRheU5hbWVzfHx0aGlzLmxv Y2FsLmRheU5hbWVzLHM9ci5wYXJzZU1vbnRofHx0aGlzLmxvY2FsLnBhcnNlTW9udGgsbD1y Lm1vbnRoTnVtYmVyc3x8dGhpcy5sb2NhbC5tb250aE51bWJlcnMsYz1yLm1vbnRoTmFtZXNT aG9ydHx8dGhpcy5sb2NhbC5tb250aE5hbWVzU2hvcnQsdT1yLm1vbnRoTmFtZXN8fHRoaXMu bG9jYWwubW9udGhOYW1lcyxmPS0xLGg9LTEscD0tMSxkPS0xLG09LTEsZz0hMSx2PSExLHk9 ZnVuY3Rpb24oZSxyKXtmb3IodmFyIG49MTtNK248dC5sZW5ndGgmJnQuY2hhckF0KE0rbik9 PT1lOyluKys7cmV0dXJuIE0rPW4tMSxNYXRoLmZsb29yKG4vKHJ8fDEpKT4xfSx4PWZ1bmN0 aW9uKHQscil7dmFyIG49eSh0LHIpLGE9WzIsMyxuPzQ6MixuPzQ6MiwxMCwxMSwyMF1bIm95 WUpAISIuaW5kZXhPZih0KSsxXSxvPW5ldyBSZWdFeHAoIl4tP1xcZHsxLCIrYSsifSIpLHM9 ZS5zdWJzdHJpbmcoQSkubWF0Y2gobyk7aWYoIXMpdGhyb3coaS5sb2NhbC5taXNzaW5nTnVt YmVyQXR8fGkucmVnaW9uYWxPcHRpb25zWyIiXS5taXNzaW5nTnVtYmVyQXQpLnJlcGxhY2Uo L1x7MFx9LyxBKTtyZXR1cm4gQSs9c1swXS5sZW5ndGgscGFyc2VJbnQoc1swXSwxMCl9LGI9 dGhpcyxfPWZ1bmN0aW9uKCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGwpe3koIm0iKTt2YXIg dD1sLmNhbGwoYixlLnN1YnN0cmluZyhBKSk7cmV0dXJuIEErPXQubGVuZ3RoLHR9cmV0dXJu IHgoIm0iKX0sdz1mdW5jdGlvbih0LHIsbixhKXtmb3IodmFyIG89eSh0LGEpP246cixzPTA7 czxvLmxlbmd0aDtzKyspaWYoZS5zdWJzdHIoQSxvW3NdLmxlbmd0aCkudG9Mb3dlckNhc2Uo KT09PW9bc10udG9Mb3dlckNhc2UoKSlyZXR1cm4gQSs9b1tzXS5sZW5ndGgscytiLm1pbk1v bnRoO3Rocm93KGkubG9jYWwudW5rbm93bk5hbWVBdHx8aS5yZWdpb25hbE9wdGlvbnNbIiJd LnVua25vd25OYW1lQXQpLnJlcGxhY2UoL1x7MFx9LyxBKX0sVD1mdW5jdGlvbigpe2lmKCJm dW5jdGlvbiI9PXR5cGVvZiB1KXt2YXIgdD15KCJNIik/dS5jYWxsKGIsZS5zdWJzdHJpbmco QSkpOmMuY2FsbChiLGUuc3Vic3RyaW5nKEEpKTtyZXR1cm4gQSs9dC5sZW5ndGgsdH1yZXR1 cm4gdygiTSIsYyx1KX0saz1mdW5jdGlvbigpe2lmKGUuY2hhckF0KEEpIT09dC5jaGFyQXQo TSkpdGhyb3coaS5sb2NhbC51bmV4cGVjdGVkTGl0ZXJhbEF0fHxpLnJlZ2lvbmFsT3B0aW9u c1siIl0udW5leHBlY3RlZExpdGVyYWxBdCkucmVwbGFjZSgvXHswXH0vLEEpO0ErK30sQT0w LE09MDtNPHQubGVuZ3RoO00rKylpZih2KSInIiE9PXQuY2hhckF0KE0pfHx5KCInIik/aygp OnY9ITE7ZWxzZSBzd2l0Y2godC5jaGFyQXQoTSkpe2Nhc2UiZCI6ZD14KCJkIik7YnJlYWs7 Y2FzZSJEIjp3KCJEIixhLG8pO2JyZWFrO2Nhc2UibyI6bT14KCJvIik7YnJlYWs7Y2FzZSJ3 Ijp4KCJ3Iik7YnJlYWs7Y2FzZSJtIjpwPV8oKTticmVhaztjYXNlIk0iOnA9VCgpO2JyZWFr O2Nhc2UieSI6dmFyIFM9TTtnPSF5KCJ5IiwyKSxNPVMsaD14KCJ5IiwyKTticmVhaztjYXNl IlkiOmg9eCgiWSIsMik7YnJlYWs7Y2FzZSJKIjpmPXgoIkoiKSsuNSwiLiI9PT1lLmNoYXJB dChBKSYmKEErKyx4KCJKIikpO2JyZWFrO2Nhc2UiQCI6Zj14KCJAIikvdGhpcy5TRUNTX1BF Ul9EQVkrdGhpcy5VTklYX0VQT0NIO2JyZWFrO2Nhc2UiISI6Zj14KCIhIikvdGhpcy5USUNL U19QRVJfREFZK3RoaXMuVElDS1NfRVBPQ0g7YnJlYWs7Y2FzZSIqIjpBPWUubGVuZ3RoO2Jy ZWFrO2Nhc2UiJyI6eSgiJyIpP2soKTp2PSEwO2JyZWFrO2RlZmF1bHQ6aygpfWlmKEE8ZS5s ZW5ndGgpdGhyb3cgaS5sb2NhbC51bmV4cGVjdGVkVGV4dHx8aS5yZWdpb25hbE9wdGlvbnNb IiJdLnVuZXhwZWN0ZWRUZXh0O2lmKC0xPT09aD9oPXRoaXMudG9kYXkoKS55ZWFyKCk6aDwx MDAmJmcmJihoKz0tMT09PW4/MTkwMDp0aGlzLnRvZGF5KCkueWVhcigpLXRoaXMudG9kYXko KS55ZWFyKCklMTAwLShoPD1uPzA6MTAwKSksInN0cmluZyI9PXR5cGVvZiBwJiYocD1zLmNh bGwodGhpcyxoLHApKSxtPi0xKXtwPTEsZD1tO2Zvcih2YXIgRT10aGlzLmRheXNJbk1vbnRo KGgscCk7ZD5FO0U9dGhpcy5kYXlzSW5Nb250aChoLHApKXArKyxkLT1FfXJldHVybiBmPi0x P3RoaXMuZnJvbUpEKGYpOnRoaXMubmV3RGF0ZShoLHAsZCl9LGRldGVybWluZURhdGU6ZnVu Y3Rpb24odCxlLHIsbixpKXtyJiYib2JqZWN0IiE9dHlwZW9mIHImJihpPW4sbj1yLHI9bnVs bCksInN0cmluZyIhPXR5cGVvZiBuJiYoaT1uLG49IiIpO3ZhciBhPXRoaXM7cmV0dXJuIGU9 ZT9lLm5ld0RhdGUoKTpudWxsLHQ9bnVsbD09dD9lOiJzdHJpbmciPT10eXBlb2YgdD9mdW5j dGlvbih0KXt0cnl7cmV0dXJuIGEucGFyc2VEYXRlKG4sdCxpKX1jYXRjaCh0KXt9Zm9yKHZh ciBlPSgodD10LnRvTG93ZXJDYXNlKCkpLm1hdGNoKC9eYy8pJiZyP3IubmV3RGF0ZSgpOm51 bGwpfHxhLnRvZGF5KCksbz0vKFsrLV0/WzAtOV0rKVxzKihkfHd8bXx5KT8vZyxzPW8uZXhl Yyh0KTtzOyllLmFkZChwYXJzZUludChzWzFdLDEwKSxzWzJdfHwiZCIpLHM9by5leGVjKHQp O3JldHVybiBlfSh0KToibnVtYmVyIj09dHlwZW9mIHQ/aXNOYU4odCl8fHQ9PT0xLzB8fHQ9 PT0tMS8wP2U6YS50b2RheSgpLmFkZCh0LCJkIik6YS5uZXdEYXRlKHQpfX0pfSx7Ii4vbWFp biI6MzQ2LCJvYmplY3QtYXNzaWduIjoyNDd9XSwzNDg6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7ZS5leHBvcnRzPVt7cGF0aDoiIixiYWNrb2ZmOjB9LHtwYXRoOiJNLTIuNCwt M1YzTDAuNiwwWiIsYmFja29mZjouNn0se3BhdGg6Ik0tMy43LC0yLjVWMi41TDEuMywwWiIs YmFja29mZjoxLjN9LHtwYXRoOiJNLTQuNDUsLTNMLTEuNjUsLTAuMlYwLjJMLTQuNDUsM0wx LjU1LDBaIixiYWNrb2ZmOjEuNTV9LHtwYXRoOiJNLTIuMiwtMi4yTC0wLjIsLTAuMlYwLjJM LTIuMiwyLjJMLTEuNCwzTDEuNiwwTC0xLjQsLTNaIixiYWNrb2ZmOjEuNn0se3BhdGg6Ik0t NC40LC0yLjFMLTAuNiwtMC4yVjAuMkwtNC40LDIuMUwtNCwzTDIsMEwtNCwtM1oiLGJhY2tv ZmY6Mn0se3BhdGg6Ik0yLDBBMiwyIDAgMSwxIDAsLTJBMiwyIDAgMCwxIDIsMFoiLGJhY2tv ZmY6MCxub1JvdGF0ZTohMH0se3BhdGg6Ik0yLDJWLTJILTJWMloiLGJhY2tvZmY6MCxub1Jv dGF0ZTohMH1dfSx7fV0sMzQ5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4vYXJyb3dfcGF0aHMiKSxpPXQoIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyIp LGE9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2NvbnN0YW50cyIpLG89dCgiLi4vLi4vcGxv dF9hcGkvcGxvdF90ZW1wbGF0ZSIpLnRlbXBsYXRlZEFycmF5O3QoIi4uLy4uL2NvbnN0YW50 cy9heGlzX3BsYWNlYWJsZV9vYmplY3RzIik7ZS5leHBvcnRzPW8oImFubm90YXRpb24iLHt2 aXNpYmxlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJjYWxjK2FycmF5 ZHJhdyJ9LHRleHQ6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3 In0sdGV4dGFuZ2xlOnt2YWxUeXBlOiJhbmdsZSIsZGZsdDowLGVkaXRUeXBlOiJjYWxjK2Fy cmF5ZHJhdyJ9LGZvbnQ6aSh7ZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3Iixjb2xvckVkaXRU eXBlOiJhcnJheWRyYXcifSksd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjEsZGZsdDpu dWxsLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9LGhlaWdodDp7dmFsVHlwZToibnVtYmVy IixtaW46MSxkZmx0Om51bGwsZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3In0sb3BhY2l0eTp7 dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0OjEsZWRpdFR5cGU6ImFycmF5ZHJh dyJ9LGFsaWduOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJsZWZ0IiwiY2VudGVy IiwicmlnaHQiXSxkZmx0OiJjZW50ZXIiLGVkaXRUeXBlOiJhcnJheWRyYXcifSx2YWxpZ246 e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInRvcCIsIm1pZGRsZSIsImJvdHRvbSJd LGRmbHQ6Im1pZGRsZSIsZWRpdFR5cGU6ImFycmF5ZHJhdyJ9LGJnY29sb3I6e3ZhbFR5cGU6 ImNvbG9yIixkZmx0OiJyZ2JhKDAsMCwwLDApIixlZGl0VHlwZToiYXJyYXlkcmF3In0sYm9y ZGVyY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OiJyZ2JhKDAsMCwwLDApIixlZGl0VHlw ZToiYXJyYXlkcmF3In0sYm9yZGVycGFkOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6 MSxlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSxib3JkZXJ3aWR0aDp7dmFsVHlwZToibnVt YmVyIixtaW46MCxkZmx0OjEsZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3In0sc2hvd2Fycm93 Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9 LGFycm93Y29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToiYXJyYXlkcmF3In0sYXJy b3doZWFkOnt2YWxUeXBlOiJpbnRlZ2VyIixtaW46MCxtYXg6bi5sZW5ndGgsZGZsdDoxLGVk aXRUeXBlOiJhcnJheWRyYXcifSxzdGFydGFycm93aGVhZDp7dmFsVHlwZToiaW50ZWdlciIs bWluOjAsbWF4Om4ubGVuZ3RoLGRmbHQ6MSxlZGl0VHlwZToiYXJyYXlkcmF3In0sYXJyb3dz aWRlOnt2YWxUeXBlOiJmbGFnbGlzdCIsZmxhZ3M6WyJlbmQiLCJzdGFydCJdLGV4dHJhczpb Im5vbmUiXSxkZmx0OiJlbmQiLGVkaXRUeXBlOiJhcnJheWRyYXcifSxhcnJvd3NpemU6e3Zh bFR5cGU6Im51bWJlciIsbWluOi4zLGRmbHQ6MSxlZGl0VHlwZToiY2FsYythcnJheWRyYXci fSxzdGFydGFycm93c2l6ZTp7dmFsVHlwZToibnVtYmVyIixtaW46LjMsZGZsdDoxLGVkaXRU eXBlOiJjYWxjK2FycmF5ZHJhdyJ9LGFycm93d2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWlu Oi4xLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9LHN0YW5kb2ZmOnt2YWxUeXBlOiJudW1i ZXIiLG1pbjowLGRmbHQ6MCxlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSxzdGFydHN0YW5k b2ZmOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MCxlZGl0VHlwZToiY2FsYythcnJh eWRyYXcifSxheDp7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSxh eTp7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSxheHJlZjp7dmFs VHlwZToiZW51bWVyYXRlZCIsZGZsdDoicGl4ZWwiLHZhbHVlczpbInBpeGVsIixhLmlkUmVn ZXgueC50b1N0cmluZygpXSxlZGl0VHlwZToiY2FsYyJ9LGF5cmVmOnt2YWxUeXBlOiJlbnVt ZXJhdGVkIixkZmx0OiJwaXhlbCIsdmFsdWVzOlsicGl4ZWwiLGEuaWRSZWdleC55LnRvU3Ry aW5nKCldLGVkaXRUeXBlOiJjYWxjIn0seHJlZjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFs dWVzOlsicGFwZXIiLGEuaWRSZWdleC54LnRvU3RyaW5nKCldLGVkaXRUeXBlOiJjYWxjIn0s eDp7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSx4YW5jaG9yOnt2 YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhdXRvIiwibGVmdCIsImNlbnRlciIsInJp Z2h0Il0sZGZsdDoiYXV0byIsZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3In0seHNoaWZ0Ont2 YWxUeXBlOiJudW1iZXIiLGRmbHQ6MCxlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSx5cmVm Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJwYXBlciIsYS5pZFJlZ2V4LnkudG9T dHJpbmcoKV0sZWRpdFR5cGU6ImNhbGMifSx5Ont2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJj YWxjK2FycmF5ZHJhdyJ9LHlhbmNob3I6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpb ImF1dG8iLCJ0b3AiLCJtaWRkbGUiLCJib3R0b20iXSxkZmx0OiJhdXRvIixlZGl0VHlwZToi Y2FsYythcnJheWRyYXcifSx5c2hpZnQ6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDowLGVkaXRU eXBlOiJjYWxjK2FycmF5ZHJhdyJ9LGNsaWNrdG9zaG93Ont2YWxUeXBlOiJlbnVtZXJhdGVk Iix2YWx1ZXM6WyExLCJvbm9mZiIsIm9ub3V0Il0sZGZsdDohMSxlZGl0VHlwZToiYXJyYXlk cmF3In0seGNsaWNrOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJhcnJheWRyYXcifSx5Y2xp Y2s6e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6ImFycmF5ZHJhdyJ9LGhvdmVydGV4dDp7dmFs VHlwZToic3RyaW5nIixlZGl0VHlwZToiYXJyYXlkcmF3In0saG92ZXJsYWJlbDp7Ymdjb2xv cjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJhcnJheWRyYXcifSxib3JkZXJjb2xvcjp7 dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJhcnJheWRyYXcifSxmb250Omkoe2VkaXRUeXBl OiJhcnJheWRyYXcifSksZWRpdFR5cGU6ImFycmF5ZHJhdyJ9LGNhcHR1cmVldmVudHM6e3Zh bFR5cGU6ImJvb2xlYW4iLGVkaXRUeXBlOiJhcnJheWRyYXcifSxlZGl0VHlwZToiY2FsYyIs X2RlcHJlY2F0ZWQ6e3JlZjp7dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToiY2FsYyJ9fX0p fSx7Ii4uLy4uL2NvbnN0YW50cy9heGlzX3BsYWNlYWJsZV9vYmplY3RzIjo0NzIsIi4uLy4u L3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjU0MywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2Nv bnN0YW50cyI6NTYxLCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiOjU4NSwiLi9hcnJv d19wYXRocyI6MzQ4fV0sMzUwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxhPXQo Ii4vZHJhdyIpLmRyYXc7ZnVuY3Rpb24gbyh0KXt2YXIgZT10Ll9mdWxsTGF5b3V0O24uZmls dGVyVmlzaWJsZShlLmFubm90YXRpb25zKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgcj1p LmdldEZyb21JZCh0LGUueHJlZiksbj1pLmdldEZyb21JZCh0LGUueXJlZiksYT1pLmdldFJl ZlR5cGUoZS54cmVmKSxvPWkuZ2V0UmVmVHlwZShlLnlyZWYpO2UuX2V4dHJlbWVzPXt9LCJy YW5nZSI9PT1hJiZzKGUsciksInJhbmdlIj09PW8mJnMoZSxuKX0pKX1mdW5jdGlvbiBzKHQs ZSl7dmFyIHIsbj1lLl9pZCxhPW4uY2hhckF0KDApLG89dFthXSxzPXRbImEiK2FdLGw9dFth KyJyZWYiXSxjPXRbImEiK2ErInJlZiJdLHU9dFsiXyIrYSsicGFkcGx1cyJdLGY9dFsiXyIr YSsicGFkbWludXMiXSxoPXt4OjEseTotMX1bYV0qdFthKyJzaGlmdCJdLHA9Myp0LmFycm93 c2l6ZSp0LmFycm93d2lkdGh8fDAsZD1wK2gsbT1wLWgsZz0zKnQuc3RhcnRhcnJvd3NpemUq dC5hcnJvd3dpZHRofHwwLHY9ZytoLHk9Zy1oO2lmKGM9PT1sKXt2YXIgeD1pLmZpbmRFeHRy ZW1lcyhlLFtlLnIyYyhvKV0se3BwYWRwbHVzOmQscHBhZG1pbnVzOm19KSxiPWkuZmluZEV4 dHJlbWVzKGUsW2UucjJjKHMpXSx7cHBhZHBsdXM6TWF0aC5tYXgodSx2KSxwcGFkbWludXM6 TWF0aC5tYXgoZix5KX0pO3I9e21pbjpbeC5taW5bMF0sYi5taW5bMF1dLG1heDpbeC5tYXhb MF0sYi5tYXhbMF1dfX1lbHNlIHY9cz92K3M6dix5PXM/eS1zOnkscj1pLmZpbmRFeHRyZW1l cyhlLFtlLnIyYyhvKV0se3BwYWRwbHVzOk1hdGgubWF4KHUsZCx2KSxwcGFkbWludXM6TWF0 aC5tYXgoZixtLHkpfSk7dC5fZXh0cmVtZXNbbl09cn1lLmV4cG9ydHM9ZnVuY3Rpb24odCl7 dmFyIGU9dC5fZnVsbExheW91dDtpZihuLmZpbHRlclZpc2libGUoZS5hbm5vdGF0aW9ucyku bGVuZ3RoJiZ0Ll9mdWxsRGF0YS5sZW5ndGgpcmV0dXJuIG4uc3luY09yQXN5bmMoW2Esb10s dCl9fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NTU0 LCIuL2RyYXciOjM1NX1dLDM1MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL3JlZ2lzdHJ5IiksYT10KCIuLi8uLi9wbG90 X2FwaS9wbG90X3RlbXBsYXRlIikuYXJyYXlFZGl0b3I7ZnVuY3Rpb24gbyh0LGUpe3ZhciBy LG4saSxhLG8sbCxjLHU9dC5fZnVsbExheW91dC5hbm5vdGF0aW9ucyxmPVtdLGg9W10scD1b XSxkPShlfHxbXSkubGVuZ3RoO2ZvcihyPTA7cjx1Lmxlbmd0aDtyKyspaWYoYT0oaT11W3Jd KS5jbGlja3Rvc2hvdyl7Zm9yKG49MDtuPGQ7bisrKWlmKGw9KG89ZVtuXSkueGF4aXMsYz1v LnlheGlzLGwuX2lkPT09aS54cmVmJiZjLl9pZD09PWkueXJlZiYmbC5kMnIoby54KT09PXMo aS5feGNsaWNrLGwpJiZjLmQycihvLnkpPT09cyhpLl95Y2xpY2ssYykpeyhpLnZpc2libGU/ Im9ub3V0Ij09PWE/aDpwOmYpLnB1c2gocik7YnJlYWt9bj09PWQmJmkudmlzaWJsZSYmIm9u b3V0Ij09PWEmJmgucHVzaChyKX1yZXR1cm57b246ZixvZmY6aCxleHBsaWNpdE9mZjpwfX1m dW5jdGlvbiBzKHQsZSl7cmV0dXJuImxvZyI9PT1lLnR5cGU/ZS5sMnIodCk6ZS5kMnIodCl9 ZS5leHBvcnRzPXtoYXNDbGlja1RvU2hvdzpmdW5jdGlvbih0LGUpe3ZhciByPW8odCxlKTty ZXR1cm4gci5vbi5sZW5ndGg+MHx8ci5leHBsaWNpdE9mZi5sZW5ndGg+MH0sb25DbGljazpm dW5jdGlvbih0LGUpe3ZhciByLHMsbD1vKHQsZSksYz1sLm9uLHU9bC5vZmYuY29uY2F0KGwu ZXhwbGljaXRPZmYpLGY9e30saD10Ll9mdWxsTGF5b3V0LmFubm90YXRpb25zO2lmKCFjLmxl bmd0aCYmIXUubGVuZ3RoKXJldHVybjtmb3Iocj0wO3I8Yy5sZW5ndGg7cisrKShzPWEodC5s YXlvdXQsImFubm90YXRpb25zIixoW2Nbcl1dKSkubW9kaWZ5SXRlbSgidmlzaWJsZSIsITAp LG4uZXh0ZW5kRmxhdChmLHMuZ2V0VXBkYXRlT2JqKCkpO2ZvcihyPTA7cjx1Lmxlbmd0aDty KyspKHM9YSh0LmxheW91dCwiYW5ub3RhdGlvbnMiLGhbdVtyXV0pKS5tb2RpZnlJdGVtKCJ2 aXNpYmxlIiwhMSksbi5leHRlbmRGbGF0KGYscy5nZXRVcGRhdGVPYmooKSk7cmV0dXJuIGku Y2FsbCgidXBkYXRlIix0LHt9LGYpfX19LHsiLi4vLi4vbGliIjo1MDMsIi4uLy4uL3Bsb3Rf YXBpL3Bsb3RfdGVtcGxhdGUiOjU0MywiLi4vLi4vcmVnaXN0cnkiOjYzOH1dLDM1MjpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4u L2NvbG9yIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGEpe2EoIm9wYWNpdHkiKTt2YXIg bz1hKCJiZ2NvbG9yIikscz1hKCJib3JkZXJjb2xvciIpLGw9aS5vcGFjaXR5KHMpO2EoImJv cmRlcnBhZCIpO3ZhciBjPWEoImJvcmRlcndpZHRoIiksdT1hKCJzaG93YXJyb3ciKTtpZihh KCJ0ZXh0Iix1PyIgIjpyLl9kZmx0VGl0bGUuYW5ub3RhdGlvbiksYSgidGV4dGFuZ2xlIiks bi5jb2VyY2VGb250KGEsImZvbnQiLHIuZm9udCksYSgid2lkdGgiKSxhKCJhbGlnbiIpLGEo ImhlaWdodCIpJiZhKCJ2YWxpZ24iKSx1KXt2YXIgZixoLHA9YSgiYXJyb3dzaWRlIik7LTEh PT1wLmluZGV4T2YoImVuZCIpJiYoZj1hKCJhcnJvd2hlYWQiKSxoPWEoImFycm93c2l6ZSIp KSwtMSE9PXAuaW5kZXhPZigic3RhcnQiKSYmKGEoInN0YXJ0YXJyb3doZWFkIixmKSxhKCJz dGFydGFycm93c2l6ZSIsaCkpLGEoImFycm93Y29sb3IiLGw/ZS5ib3JkZXJjb2xvcjppLmRl ZmF1bHRMaW5lKSxhKCJhcnJvd3dpZHRoIiwyKihsJiZjfHwxKSksYSgic3RhbmRvZmYiKSxh KCJzdGFydHN0YW5kb2ZmIil9dmFyIGQ9YSgiaG92ZXJ0ZXh0IiksbT1yLmhvdmVybGFiZWx8 fHt9O2lmKGQpe3ZhciBnPWEoImhvdmVybGFiZWwuYmdjb2xvciIsbS5iZ2NvbG9yfHwoaS5v cGFjaXR5KG8pP2kucmdiKG8pOmkuZGVmYXVsdExpbmUpKSx2PWEoImhvdmVybGFiZWwuYm9y ZGVyY29sb3IiLG0uYm9yZGVyY29sb3J8fGkuY29udHJhc3QoZykpO24uY29lcmNlRm9udChh LCJob3ZlcmxhYmVsLmZvbnQiLHtmYW1pbHk6bS5mb250LmZhbWlseSxzaXplOm0uZm9udC5z aXplLGNvbG9yOm0uZm9udC5jb2xvcnx8dn0pfWEoImNhcHR1cmVldmVudHMiLCEhZCl9fSx7 Ii4uLy4uL2xpYiI6NTAzLCIuLi9jb2xvciI6MzY2fV0sMzUzOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksaT10KCIuLi8uLi9saWIv dG9fbG9nX3JhbmdlIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGEpe2U9ZXx8e307dmFy IG89ImxvZyI9PT1yJiYibGluZWFyIj09PWUudHlwZSxzPSJsaW5lYXIiPT09ciYmImxvZyI9 PT1lLnR5cGU7aWYob3x8cylmb3IodmFyIGwsYyx1PXQuX2Z1bGxMYXlvdXQuYW5ub3RhdGlv bnMsZj1lLl9pZC5jaGFyQXQoMCksaD0wO2g8dS5sZW5ndGg7aCsrKWw9dVtoXSxjPSJhbm5v dGF0aW9uc1siK2grIl0uIixsW2YrInJlZiJdPT09ZS5faWQmJnAoZiksbFsiYSIrZisicmVm Il09PT1lLl9pZCYmcCgiYSIrZik7ZnVuY3Rpb24gcCh0KXt2YXIgcj1sW3RdLHM9bnVsbDtz PW8/aShyLGUucmFuZ2UpOk1hdGgucG93KDEwLHIpLG4ocyl8fChzPW51bGwpLGEoYyt0LHMp fX19LHsiLi4vLi4vbGliL3RvX2xvZ19yYW5nZSI6NTMxLCJmYXN0LWlzbnVtZXJpYyI6MTkw fV0sMzU0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xp YiIpLGk9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxhPXQoIi4uLy4uL3Bsb3Rz L2FycmF5X2NvbnRhaW5lcl9kZWZhdWx0cyIpLG89dCgiLi9jb21tb25fZGVmYXVsdHMiKSxz PXQoIi4vYXR0cmlidXRlcyIpO2Z1bmN0aW9uIGwodCxlLHIpe2Z1bmN0aW9uIGEocixpKXty ZXR1cm4gbi5jb2VyY2UodCxlLHMscixpKX12YXIgbD1hKCJ2aXNpYmxlIiksYz1hKCJjbGlj a3Rvc2hvdyIpO2lmKGx8fGMpe28odCxlLHIsYSk7Zm9yKHZhciB1PWUuc2hvd2Fycm93LGY9 WyJ4IiwieSJdLGg9Wy0xMCwtMzBdLHA9e19mdWxsTGF5b3V0OnJ9LGQ9MDtkPDI7ZCsrKXt2 YXIgbT1mW2RdLGc9aS5jb2VyY2VSZWYodCxlLHAsbSwiIiwicGFwZXIiKTtpZigicGFwZXIi IT09ZylpLmdldEZyb21JZChwLGcpLl9hbm5JbmRpY2VzLnB1c2goZS5faW5kZXgpO2lmKGku Y29lcmNlUG9zaXRpb24oZSxwLGEsZyxtLC41KSx1KXt2YXIgdj0iYSIrbSx5PWkuY29lcmNl UmVmKHQsZSxwLHYsInBpeGVsIixbInBpeGVsIiwicGFwZXIiXSk7InBpeGVsIiE9PXkmJnkh PT1nJiYoeT1lW3ZdPSJwaXhlbCIpO3ZhciB4PSJwaXhlbCI9PT15P2hbZF06LjQ7aS5jb2Vy Y2VQb3NpdGlvbihlLHAsYSx5LHYseCl9YShtKyJhbmNob3IiKSxhKG0rInNoaWZ0Iil9aWYo bi5ub25lT3JBbGwodCxlLFsieCIsInkiXSksdSYmbi5ub25lT3JBbGwodCxlLFsiYXgiLCJh eSJdKSxjKXt2YXIgYj1hKCJ4Y2xpY2siKSxfPWEoInljbGljayIpO2UuX3hjbGljaz12b2lk IDA9PT1iP2UueDppLmNsZWFuUG9zaXRpb24oYixwLGUueHJlZiksZS5feWNsaWNrPXZvaWQg MD09PV8/ZS55OmkuY2xlYW5Qb3NpdGlvbihfLHAsZS55cmVmKX19fWUuZXhwb3J0cz1mdW5j dGlvbih0LGUpe2EodCxlLHtuYW1lOiJhbm5vdGF0aW9ucyIsaGFuZGxlSXRlbURlZmF1bHRz Omx9KX19LHsiLi4vLi4vbGliIjo1MDMsIi4uLy4uL3Bsb3RzL2FycmF5X2NvbnRhaW5lcl9k ZWZhdWx0cyI6NTQ5LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NTU0LCIuL2F0dHJp YnV0ZXMiOjM0OSwiLi9jb21tb25fZGVmYXVsdHMiOjM1Mn1dLDM1NTpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJAcGxvdGx5L2QzIiksaT10KCIuLi8uLi9yZWdp c3RyeSIpLGE9dCgiLi4vLi4vcGxvdHMvcGxvdHMiKSxvPXQoIi4uLy4uL2xpYiIpLHM9by5z dHJUcmFuc2xhdGUsbD10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGM9dCgiLi4v Y29sb3IiKSx1PXQoIi4uL2RyYXdpbmciKSxmPXQoIi4uL2Z4IiksaD10KCIuLi8uLi9saWIv c3ZnX3RleHRfdXRpbHMiKSxwPXQoIi4uLy4uL2xpYi9zZXRjdXJzb3IiKSxkPXQoIi4uL2Ry YWdlbGVtZW50IiksbT10KCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIikuYXJyYXlF ZGl0b3IsZz10KCIuL2RyYXdfYXJyb3dfaGVhZCIpO2Z1bmN0aW9uIHYodCxlKXt2YXIgcj10 Ll9mdWxsTGF5b3V0LmFubm90YXRpb25zW2VdfHx7fSxuPWwuZ2V0RnJvbUlkKHQsci54cmVm KSxpPWwuZ2V0RnJvbUlkKHQsci55cmVmKTtuJiZuLnNldFNjYWxlKCksaSYmaS5zZXRTY2Fs ZSgpLHgodCxyLGUsITEsbixpKX1mdW5jdGlvbiB5KHQsZSxyLG4saSl7dmFyIGE9aVtyXSxv PWlbcisicmVmIl0scz0tMSE9PXIuaW5kZXhPZigieSIpLGM9ImRvbWFpbiI9PT1sLmdldFJl ZlR5cGUobyksdT1zP24uaDpuLnc7cmV0dXJuIHQ/Yz9hKyhzPy1lOmUpL3QuX2xlbmd0aDp0 LnAycih0LnIycChhKStlKTphKyhzPy1lOmUpL3V9ZnVuY3Rpb24geCh0LGUscixhLHYseCl7 dmFyIGIsXyx3PXQuX2Z1bGxMYXlvdXQsVD10Ll9mdWxsTGF5b3V0Ll9zaXplLGs9dC5fY29u dGV4dC5lZGl0czthPyhiPSJhbm5vdGF0aW9uLSIrYSxfPWErIi5hbm5vdGF0aW9ucyIpOihi PSJhbm5vdGF0aW9uIixfPSJhbm5vdGF0aW9ucyIpO3ZhciBBPW0odC5sYXlvdXQsXyxlKSxN PUEubW9kaWZ5QmFzZSxTPUEubW9kaWZ5SXRlbSxFPUEuZ2V0VXBkYXRlT2JqO3cuX2luZm9s YXllci5zZWxlY3RBbGwoIi4iK2IrJ1tkYXRhLWluZGV4PSInK3IrJyJdJykucmVtb3ZlKCk7 dmFyIEw9ImNsaXAiK3cuX3VpZCsiX2FubiIrcjtpZihlLl9pbnB1dCYmITEhPT1lLnZpc2li bGUpe3ZhciBDPXt4Ont9LHk6e319LFA9K2UudGV4dGFuZ2xlfHwwLEk9dy5faW5mb2xheWVy LmFwcGVuZCgiZyIpLmNsYXNzZWQoYiwhMCkuYXR0cigiZGF0YS1pbmRleCIsU3RyaW5nKHIp KS5zdHlsZSgib3BhY2l0eSIsZS5vcGFjaXR5KSxPPUkuYXBwZW5kKCJnIikuY2xhc3NlZCgi YW5ub3RhdGlvbi10ZXh0LWciLCEwKSx6PWtbZS5zaG93YXJyb3c/ImFubm90YXRpb25UYWls IjoiYW5ub3RhdGlvblBvc2l0aW9uIl0sRD1lLmNhcHR1cmVldmVudHN8fGsuYW5ub3RhdGlv blRleHR8fHosUj1PLmFwcGVuZCgiZyIpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsRD8iYWxs IjpudWxsKS5jYWxsKHAsInBvaW50ZXIiKS5vbigiY2xpY2siLChmdW5jdGlvbigpe3QuX2Ry YWdnaW5nPSExLHQuZW1pdCgicGxvdGx5X2NsaWNrYW5ub3RhdGlvbiIsWShuLmV2ZW50KSl9 KSk7ZS5ob3ZlcnRleHQmJlIub24oIm1vdXNlb3ZlciIsKGZ1bmN0aW9uKCl7dmFyIHI9ZS5o b3ZlcmxhYmVsLG49ci5mb250LGk9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxhPXQu Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Zi5sb25lSG92ZXIoe3gwOmkubGVmdC1hLmxlZnQs eDE6aS5yaWdodC1hLmxlZnQseTooaS50b3AraS5ib3R0b20pLzItYS50b3AsdGV4dDplLmhv dmVydGV4dCxjb2xvcjpyLmJnY29sb3IsYm9yZGVyQ29sb3I6ci5ib3JkZXJjb2xvcixmb250 RmFtaWx5Om4uZmFtaWx5LGZvbnRTaXplOm4uc2l6ZSxmb250Q29sb3I6bi5jb2xvcn0se2Nv bnRhaW5lcjp3Ll9ob3ZlcmxheWVyLm5vZGUoKSxvdXRlckNvbnRhaW5lcjp3Ll9wYXBlci5u b2RlKCksZ2Q6dH0pfSkpLm9uKCJtb3VzZW91dCIsKGZ1bmN0aW9uKCl7Zi5sb25lVW5ob3Zl cih3Ll9ob3ZlcmxheWVyLm5vZGUoKSl9KSk7dmFyIEY9ZS5ib3JkZXJ3aWR0aCxCPWUuYm9y ZGVycGFkLE49RitCLGo9Ui5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsImJnIikuc3R5 bGUoInN0cm9rZS13aWR0aCIsRisicHgiKS5jYWxsKGMuc3Ryb2tlLGUuYm9yZGVyY29sb3Ip LmNhbGwoYy5maWxsLGUuYmdjb2xvciksVT1lLndpZHRofHxlLmhlaWdodCxWPXcuX3RvcGNs aXBzLnNlbGVjdEFsbCgiIyIrTCkuZGF0YShVP1swXTpbXSk7Vi5lbnRlcigpLmFwcGVuZCgi Y2xpcFBhdGgiKS5jbGFzc2VkKCJhbm5jbGlwIiwhMCkuYXR0cigiaWQiLEwpLmFwcGVuZCgi cmVjdCIpLFYuZXhpdCgpLnJlbW92ZSgpO3ZhciBIPWUuZm9udCxxPXcuX21ldGE/by50ZW1w bGF0ZVN0cmluZyhlLnRleHQsdy5fbWV0YSk6ZS50ZXh0LEc9Ui5hcHBlbmQoInRleHQiKS5j bGFzc2VkKCJhbm5vdGF0aW9uLXRleHQiLCEwKS50ZXh0KHEpO2suYW5ub3RhdGlvblRleHQ/ Ry5jYWxsKGgubWFrZUVkaXRhYmxlLHtkZWxlZ2F0ZTpSLGdkOnR9KS5jYWxsKFcpLm9uKCJl ZGl0IiwoZnVuY3Rpb24ocil7ZS50ZXh0PXIsdGhpcy5jYWxsKFcpLFMoInRleHQiLHIpLHYm JnYuYXV0b3JhbmdlJiZNKHYuX25hbWUrIi5hdXRvcmFuZ2UiLCEwKSx4JiZ4LmF1dG9yYW5n ZSYmTSh4Ll9uYW1lKyIuYXV0b3JhbmdlIiwhMCksaS5jYWxsKCJfZ3VpUmVsYXlvdXQiLHQs RSgpKX0pKTpHLmNhbGwoVyl9ZWxzZSBuLnNlbGVjdEFsbCgiIyIrTCkucmVtb3ZlKCk7ZnVu Y3Rpb24gWSh0KXt2YXIgbj17aW5kZXg6cixhbm5vdGF0aW9uOmUuX2lucHV0LGZ1bGxBbm5v dGF0aW9uOmUsZXZlbnQ6dH07cmV0dXJuIGEmJihuLnN1YnBsb3RJZD1hKSxufWZ1bmN0aW9u IFcocil7cmV0dXJuIHIuY2FsbCh1LmZvbnQsSCkuYXR0cih7InRleHQtYW5jaG9yIjp7bGVm dDoic3RhcnQiLHJpZ2h0OiJlbmQifVtlLmFsaWduXXx8Im1pZGRsZSJ9KSxoLmNvbnZlcnRU b1RzcGFucyhyLHQsWCkscn1mdW5jdGlvbiBYKCl7dmFyIHI9Ry5zZWxlY3RBbGwoImEiKTsx PT09ci5zaXplKCkmJnIudGV4dCgpPT09Ry50ZXh0KCkmJlIuaW5zZXJ0KCJhIiwiOmZpcnN0 LWNoaWxkIikuYXR0cih7InhsaW5rOnhsaW5rOmhyZWYiOnIuYXR0cigieGxpbms6aHJlZiIp LCJ4bGluazp4bGluazpzaG93IjpyLmF0dHIoInhsaW5rOnNob3ciKX0pLnN0eWxlKHtjdXJz b3I6InBvaW50ZXIifSkubm9kZSgpLmFwcGVuZENoaWxkKGoubm9kZSgpKTt2YXIgbj1SLnNl bGVjdCgiLmFubm90YXRpb24tdGV4dC1tYXRoLWdyb3VwIiksZj0hbi5lbXB0eSgpLG09dS5i Qm94KChmP246Rykubm9kZSgpKSxiPW0ud2lkdGgsXz1tLmhlaWdodCxBPWUud2lkdGh8fGIs RD1lLmhlaWdodHx8XyxCPU1hdGgucm91bmQoQSsyKk4pLEg9TWF0aC5yb3VuZChEKzIqTik7 ZnVuY3Rpb24gcSh0LGUpe3JldHVybiJhdXRvIj09PWUmJihlPXQ8MS8zPyJsZWZ0Ijp0PjIv Mz8icmlnaHQiOiJjZW50ZXIiKSx7Y2VudGVyOjAsbWlkZGxlOjAsbGVmdDouNSxib3R0b206 LS41LHJpZ2h0Oi0uNSx0b3A6LjV9W2VdfWZvcih2YXIgVz0hMSxYPVsieCIsInkiXSxaPTA7 WjxYLmxlbmd0aDtaKyspe3ZhciBKLEssUSwkLHR0LGV0PVhbWl0scnQ9ZVtldCsicmVmIl18 fGV0LG50PWVbImEiK2V0KyJyZWYiXSxpdD17eDp2LHk6eH1bZXRdLGF0PShQKygieCI9PT1l dD8wOi05MCkpKk1hdGguUEkvMTgwLG90PUIqTWF0aC5jb3MoYXQpLHN0PUgqTWF0aC5zaW4o YXQpLGx0PU1hdGguYWJzKG90KStNYXRoLmFicyhzdCksY3Q9ZVtldCsiYW5jaG9yIl0sdXQ9 ZVtldCsic2hpZnQiXSooIngiPT09ZXQ/MTotMSksZnQ9Q1tldF0saHQ9bC5nZXRSZWZUeXBl KHJ0KTtpZihpdCYmImRvbWFpbiIhPT1odCl7dmFyIHB0PWl0LnIyZnJhY3Rpb24oZVtldF0p OyhwdDwwfHxwdD4xKSYmKG50PT09cnQ/KChwdD1pdC5yMmZyYWN0aW9uKGVbImEiK2V0XSkp PDB8fHB0PjEpJiYoVz0hMCk6Vz0hMCksSj1pdC5fb2Zmc2V0K2l0LnIycChlW2V0XSksJD0u NX1lbHNle3ZhciBkdD0iZG9tYWluIj09PWh0OyJ4Ij09PWV0PyhRPWVbZXRdLEo9ZHQ/aXQu X29mZnNldCtpdC5fbGVuZ3RoKlE6Sj1ULmwrVC53KlEpOihRPTEtZVtldF0sSj1kdD9pdC5f b2Zmc2V0K2l0Ll9sZW5ndGgqUTpKPVQudCtULmgqUSksJD1lLnNob3dhcnJvdz8uNTpRfWlm KGUuc2hvd2Fycm93KXtmdC5oZWFkPUo7dmFyIG10PWVbImEiK2V0XTtpZih0dD1vdCpxKC41 LGUueGFuY2hvciktc3QqcSguNSxlLnlhbmNob3IpLG50PT09cnQpe3ZhciBndD1sLmdldFJl ZlR5cGUobnQpOyJkb21haW4iPT09Z3Q/KCJ5Ij09PWV0JiYobXQ9MS1tdCksZnQudGFpbD1p dC5fb2Zmc2V0K2l0Ll9sZW5ndGgqbXQpOiJwYXBlciI9PT1ndD8ieSI9PT1ldD8obXQ9MS1t dCxmdC50YWlsPVQudCtULmgqbXQpOmZ0LnRhaWw9VC5sK1QudyptdDpmdC50YWlsPWl0Ll9v ZmZzZXQraXQucjJwKG10KSxLPXR0fWVsc2UgZnQudGFpbD1KK210LEs9dHQrbXQ7ZnQudGV4 dD1mdC50YWlsK3R0O3ZhciB2dD13WyJ4Ij09PWV0PyJ3aWR0aCI6ImhlaWdodCJdO2lmKCJw YXBlciI9PT1ydCYmKGZ0LmhlYWQ9by5jb25zdHJhaW4oZnQuaGVhZCwxLHZ0LTEpKSwicGl4 ZWwiPT09bnQpe3ZhciB5dD0tTWF0aC5tYXgoZnQudGFpbC0zLGZ0LnRleHQpLHh0PU1hdGgu bWluKGZ0LnRhaWwrMyxmdC50ZXh0KS12dDt5dD4wPyhmdC50YWlsKz15dCxmdC50ZXh0Kz15 dCk6eHQ+MCYmKGZ0LnRhaWwtPXh0LGZ0LnRleHQtPXh0KX1mdC50YWlsKz11dCxmdC5oZWFk Kz11dH1lbHNlIEs9dHQ9bHQqcSgkLGN0KSxmdC50ZXh0PUordHQ7ZnQudGV4dCs9dXQsdHQr PXV0LEsrPXV0LGVbIl8iK2V0KyJwYWRwbHVzIl09bHQvMitLLGVbIl8iK2V0KyJwYWRtaW51 cyJdPWx0LzItSyxlWyJfIitldCsic2l6ZSJdPWx0LGVbIl8iK2V0KyJzaGlmdCJdPXR0fWlm KFcpUi5yZW1vdmUoKTtlbHNle3ZhciBidD0wLF90PTA7aWYoImxlZnQiIT09ZS5hbGlnbiYm KGJ0PShBLWIpKigiY2VudGVyIj09PWUuYWxpZ24/LjU6MSkpLCJ0b3AiIT09ZS52YWxpZ24m JihfdD0oRC1fKSooIm1pZGRsZSI9PT1lLnZhbGlnbj8uNToxKSksZiluLnNlbGVjdCgic3Zn IikuYXR0cih7eDpOK2J0LTEseTpOK190fSkuY2FsbCh1LnNldENsaXBVcmwsVT9MOm51bGws dCk7ZWxzZXt2YXIgd3Q9TitfdC1tLnRvcCxUdD1OK2J0LW0ubGVmdDtHLmNhbGwoaC5wb3Np dGlvblRleHQsVHQsd3QpLmNhbGwodS5zZXRDbGlwVXJsLFU/TDpudWxsLHQpfVYuc2VsZWN0 KCJyZWN0IikuY2FsbCh1LnNldFJlY3QsTixOLEEsRCksai5jYWxsKHUuc2V0UmVjdCxGLzIs Ri8yLEItRixILUYpLFIuY2FsbCh1LnNldFRyYW5zbGF0ZSxNYXRoLnJvdW5kKEMueC50ZXh0 LUIvMiksTWF0aC5yb3VuZChDLnkudGV4dC1ILzIpKSxPLmF0dHIoe3RyYW5zZm9ybToicm90 YXRlKCIrUCsiLCIrQy54LnRleHQrIiwiK0MueS50ZXh0KyIpIn0pO3ZhciBrdCxBdD1mdW5j dGlvbihyLG4pe0kuc2VsZWN0QWxsKCIuYW5ub3RhdGlvbi1hcnJvdy1nIikucmVtb3ZlKCk7 dmFyIGw9Qy54LmhlYWQsZj1DLnkuaGVhZCxoPUMueC50YWlsK3IscD1DLnkudGFpbCtuLG09 Qy54LnRleHQrcixiPUMueS50ZXh0K24sXz1vLnJvdGF0aW9uWFlNYXRyaXgoUCxtLGIpLHc9 by5hcHBseTJEVHJhbnNmb3JtKF8pLEE9by5hcHBseTJEVHJhbnNmb3JtMihfKSxMPStqLmF0 dHIoIndpZHRoIiksej0rai5hdHRyKCJoZWlnaHQiKSxEPW0tLjUqTCxGPUQrTCxCPWItLjUq eixOPUIreixVPVtbRCxCLEQsTl0sW0QsTixGLE5dLFtGLE4sRixCXSxbRixCLEQsQl1dLm1h cChBKTtpZighVS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHReISFvLnNlZ21lbnRz SW50ZXJzZWN0KGwsZixsKzFlNixmKzFlNixlWzBdLGVbMV0sZVsyXSxlWzNdKX0pLCExKSl7 VS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1vLnNlZ21lbnRzSW50ZXJzZWN0KGgscCxs LGYsdFswXSx0WzFdLHRbMl0sdFszXSk7ZSYmKGg9ZS54LHA9ZS55KX0pKTt2YXIgVj1lLmFy cm93d2lkdGgsSD1lLmFycm93Y29sb3IscT1lLmFycm93c2lkZSxHPUkuYXBwZW5kKCJnIiku c3R5bGUoe29wYWNpdHk6Yy5vcGFjaXR5KEgpfSkuY2xhc3NlZCgiYW5ub3RhdGlvbi1hcnJv dy1nIiwhMCksWT1HLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIitoKyIsIitwKyJMIits KyIsIitmKS5zdHlsZSgic3Ryb2tlLXdpZHRoIixWKyJweCIpLmNhbGwoYy5zdHJva2UsYy5y Z2IoSCkpO2lmKGcoWSxxLGUpLGsuYW5ub3RhdGlvblBvc2l0aW9uJiZZLm5vZGUoKS5wYXJl bnROb2RlJiYhYSl7dmFyIFc9bCxYPWY7aWYoZS5zdGFuZG9mZil7dmFyIFo9TWF0aC5zcXJ0 KE1hdGgucG93KGwtaCwyKStNYXRoLnBvdyhmLXAsMikpO1crPWUuc3RhbmRvZmYqKGgtbCkv WixYKz1lLnN0YW5kb2ZmKihwLWYpL1p9dmFyIEosSyxRPUcuYXBwZW5kKCJwYXRoIikuY2xh c3NlZCgiYW5ub3RhdGlvbi1hcnJvdyIsITApLmNsYXNzZWQoImFubmRyYWciLCEwKS5jbGFz c2VkKCJjdXJzb3ItbW92ZSIsITApLmF0dHIoe2Q6Ik0zLDNILTNWLTNIM1pNMCwwTCIrKGgt VykrIiwiKyhwLVgpLHRyYW5zZm9ybTpzKFcsWCl9KS5zdHlsZSgic3Ryb2tlLXdpZHRoIixW KzYrInB4IikuY2FsbChjLnN0cm9rZSwicmdiYSgwLDAsMCwwKSIpLmNhbGwoYy5maWxsLCJy Z2JhKDAsMCwwLDApIik7ZC5pbml0KHtlbGVtZW50OlEubm9kZSgpLGdkOnQscHJlcEZuOmZ1 bmN0aW9uKCl7dmFyIHQ9dS5nZXRUcmFuc2xhdGUoUik7Sj10LngsSz10LnksdiYmdi5hdXRv cmFuZ2UmJk0odi5fbmFtZSsiLmF1dG9yYW5nZSIsITApLHgmJnguYXV0b3JhbmdlJiZNKHgu X25hbWUrIi5hdXRvcmFuZ2UiLCEwKX0sbW92ZUZuOmZ1bmN0aW9uKHQscil7dmFyIG49dyhK LEspLGk9blswXSt0LGE9blsxXStyO1IuY2FsbCh1LnNldFRyYW5zbGF0ZSxpLGEpLFMoIngi LHkodix0LCJ4IixULGUpKSxTKCJ5Iix5KHgsciwieSIsVCxlKSksZS5heHJlZj09PWUueHJl ZiYmUygiYXgiLHkodix0LCJheCIsVCxlKSksZS5heXJlZj09PWUueXJlZiYmUygiYXkiLHko eCxyLCJheSIsVCxlKSksRy5hdHRyKCJ0cmFuc2Zvcm0iLHModCxyKSksTy5hdHRyKHt0cmFu c2Zvcm06InJvdGF0ZSgiK1ArIiwiK2krIiwiK2ErIikifSl9LGRvbmVGbjpmdW5jdGlvbigp e2kuY2FsbCgiX2d1aVJlbGF5b3V0Iix0LEUoKSk7dmFyIGU9ZG9jdW1lbnQucXVlcnlTZWxl Y3RvcigiLmpzLW5vdGVzLWJveC1wYW5lbCIpO2UmJmUucmVkcmF3KGUuc2VsZWN0ZWRPYmop fX0pfX19O2lmKGUuc2hvd2Fycm93JiZBdCgwLDApLHopZC5pbml0KHtlbGVtZW50OlIubm9k ZSgpLGdkOnQscHJlcEZuOmZ1bmN0aW9uKCl7a3Q9Ty5hdHRyKCJ0cmFuc2Zvcm0iKX0sbW92 ZUZuOmZ1bmN0aW9uKHQscil7dmFyIG49InBvaW50ZXIiO2lmKGUuc2hvd2Fycm93KWUuYXhy ZWY9PT1lLnhyZWY/UygiYXgiLHkodix0LCJheCIsVCxlKSk6UygiYXgiLGUuYXgrdCksZS5h eXJlZj09PWUueXJlZj9TKCJheSIseSh4LHIsImF5IixULncsZSkpOlMoImF5IixlLmF5K3Ip LEF0KHQscik7ZWxzZXtpZihhKXJldHVybjt2YXIgaSxvO2lmKHYpaT15KHYsdCwieCIsVCxl KTtlbHNle3ZhciBsPWUuX3hzaXplL1QudyxjPWUueCsoZS5feHNoaWZ0LWUueHNoaWZ0KS9U LnctbC8yO2k9ZC5hbGlnbihjK3QvVC53LGwsMCwxLGUueGFuY2hvcil9aWYoeClvPXkoeCxy LCJ5IixULGUpO2Vsc2V7dmFyIHU9ZS5feXNpemUvVC5oLGY9ZS55LShlLl95c2hpZnQrZS55 c2hpZnQpL1QuaC11LzI7bz1kLmFsaWduKGYtci9ULmgsdSwwLDEsZS55YW5jaG9yKX1TKCJ4 IixpKSxTKCJ5IixvKSx2JiZ4fHwobj1kLmdldEN1cnNvcih2Py41OmkseD8uNTpvLGUueGFu Y2hvcixlLnlhbmNob3IpKX1PLmF0dHIoe3RyYW5zZm9ybTpzKHQscikra3R9KSxwKFIsbil9 LGNsaWNrRm46ZnVuY3Rpb24ocixuKXtlLmNhcHR1cmVldmVudHMmJnQuZW1pdCgicGxvdGx5 X2NsaWNrYW5ub3RhdGlvbiIsWShuKSl9LGRvbmVGbjpmdW5jdGlvbigpe3AoUiksaS5jYWxs KCJfZ3VpUmVsYXlvdXQiLHQsRSgpKTt2YXIgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIu anMtbm90ZXMtYm94LXBhbmVsIik7ZSYmZS5yZWRyYXcoZS5zZWxlY3RlZE9iail9fSl9fX1l LmV4cG9ydHM9e2RyYXc6ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dDtlLl9pbmZv bGF5ZXIuc2VsZWN0QWxsKCIuYW5ub3RhdGlvbiIpLnJlbW92ZSgpO2Zvcih2YXIgcj0wO3I8 ZS5hbm5vdGF0aW9ucy5sZW5ndGg7cisrKWUuYW5ub3RhdGlvbnNbcl0udmlzaWJsZSYmdih0 LHIpO3JldHVybiBhLnByZXZpb3VzUHJvbWlzZXModCl9LGRyYXdPbmU6dixkcmF3UmF3Onh9 fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi8uLi9saWIvc2V0Y3Vyc29yIjo1MjQsIi4uLy4uL2xp Yi9zdmdfdGV4dF91dGlscyI6NTI5LCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIjo1 NDMsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo1NTQsIi4uLy4uL3Bsb3RzL3Bsb3Rz Ijo2MTksIi4uLy4uL3JlZ2lzdHJ5Ijo2MzgsIi4uL2NvbG9yIjozNjYsIi4uL2RyYWdlbGVt ZW50IjozODUsIi4uL2RyYXdpbmciOjM4OCwiLi4vZngiOjQwNiwiLi9kcmF3X2Fycm93X2hl YWQiOjM1NiwiQHBsb3RseS9kMyI6NTh9XSwzNTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiQHBsb3RseS9kMyIpLGk9dCgiLi4vY29sb3IiKSxhPXQoIi4vYXJy b3dfcGF0aHMiKSxvPXQoIi4uLy4uL2xpYiIpLHM9by5zdHJTY2FsZSxsPW8uc3RyUm90YXRl LGM9by5zdHJUcmFuc2xhdGU7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbyx1LGYs aCxwPXQubm9kZSgpLGQ9YVtyLmFycm93aGVhZHx8MF0sbT1hW3Iuc3RhcnRhcnJvd2hlYWR8 fDBdLGc9KHIuYXJyb3d3aWR0aHx8MSkqKHIuYXJyb3dzaXplfHwxKSx2PShyLmFycm93d2lk dGh8fDEpKihyLnN0YXJ0YXJyb3dzaXplfHwxKSx5PWUuaW5kZXhPZigic3RhcnQiKT49MCx4 PWUuaW5kZXhPZigiZW5kIik+PTAsYj1kLmJhY2tvZmYqZytyLnN0YW5kb2ZmLF89bS5iYWNr b2ZmKnYrci5zdGFydHN0YW5kb2ZmO2lmKCJsaW5lIj09PXAubm9kZU5hbWUpe289e3g6K3Qu YXR0cigieDEiKSx5Oit0LmF0dHIoInkxIil9LHU9e3g6K3QuYXR0cigieDIiKSx5Oit0LmF0 dHIoInkyIil9O3ZhciB3PW8ueC11LngsVD1vLnktdS55O2lmKGg9KGY9TWF0aC5hdGFuMihU LHcpKStNYXRoLlBJLGImJl8mJmIrXz5NYXRoLnNxcnQodyp3K1QqVCkpcmV0dXJuIHZvaWQg eigpO2lmKGIpe2lmKGIqYj53KncrVCpUKXJldHVybiB2b2lkIHooKTt2YXIgaz1iKk1hdGgu Y29zKGYpLEE9YipNYXRoLnNpbihmKTt1LngrPWssdS55Kz1BLHQuYXR0cih7eDI6dS54LHky OnUueX0pfWlmKF8pe2lmKF8qXz53KncrVCpUKXJldHVybiB2b2lkIHooKTt2YXIgTT1fKk1h dGguY29zKGYpLFM9XypNYXRoLnNpbihmKTtvLngtPU0sby55LT1TLHQuYXR0cih7eDE6by54 LHkxOm8ueX0pfX1lbHNlIGlmKCJwYXRoIj09PXAubm9kZU5hbWUpe3ZhciBFPXAuZ2V0VG90 YWxMZW5ndGgoKSxMPSIiO2lmKEU8YitfKXJldHVybiB2b2lkIHooKTt2YXIgQz1wLmdldFBv aW50QXRMZW5ndGgoMCksUD1wLmdldFBvaW50QXRMZW5ndGgoLjEpO2Y9TWF0aC5hdGFuMihD LnktUC55LEMueC1QLngpLG89cC5nZXRQb2ludEF0TGVuZ3RoKE1hdGgubWluKF8sRSkpLEw9 IjBweCwiK18rInB4LCI7dmFyIEk9cC5nZXRQb2ludEF0TGVuZ3RoKEUpLE89cC5nZXRQb2lu dEF0TGVuZ3RoKEUtLjEpO2g9TWF0aC5hdGFuMihJLnktTy55LEkueC1PLngpLHU9cC5nZXRQ b2ludEF0TGVuZ3RoKE1hdGgubWF4KDAsRS1iKSksTCs9RS0oTD9fK2I6YikrInB4LCIrRSsi cHgiLHQuc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLEwpfWZ1bmN0aW9uIHooKXt0LnN0eWxl KCJzdHJva2UtZGFzaGFycmF5IiwiMHB4LDEwMHB4Iil9ZnVuY3Rpb24gRChlLGEsbyx1KXtl LnBhdGgmJihlLm5vUm90YXRlJiYobz0wKSxuLnNlbGVjdChwLnBhcmVudE5vZGUpLmFwcGVu ZCgicGF0aCIpLmF0dHIoe2NsYXNzOnQuYXR0cigiY2xhc3MiKSxkOmUucGF0aCx0cmFuc2Zv cm06YyhhLngsYS55KStsKDE4MCpvL01hdGguUEkpK3ModSl9KS5zdHlsZSh7ZmlsbDppLnJn YihyLmFycm93Y29sb3IpLCJzdHJva2Utd2lkdGgiOjB9KSl9eSYmRChtLG8sZix2KSx4JiZE KGQsdSxoLGcpfX0seyIuLi8uLi9saWIiOjUwMywiLi4vY29sb3IiOjM2NiwiLi9hcnJvd19w YXRocyI6MzQ4LCJAcGxvdGx5L2QzIjo1OH1dLDM1NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCIuL2RyYXciKSxpPXQoIi4vY2xpY2siKTtlLmV4cG9ydHM9e21v ZHVsZVR5cGU6ImNvbXBvbmVudCIsbmFtZToiYW5ub3RhdGlvbnMiLGxheW91dEF0dHJpYnV0 ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5TGF5b3V0RGVmYXVsdHM6dCgiLi9kZWZhdWx0 cyIpLGluY2x1ZGVCYXNlUGxvdDp0KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vaW5jbHVkZV9j b21wb25lbnRzIikoImFubm90YXRpb25zIiksY2FsY0F1dG9yYW5nZTp0KCIuL2NhbGNfYXV0 b3JhbmdlIiksZHJhdzpuLmRyYXcsZHJhd09uZTpuLmRyYXdPbmUsZHJhd1JhdzpuLmRyYXdS YXcsaGFzQ2xpY2tUb1Nob3c6aS5oYXNDbGlja1RvU2hvdyxvbkNsaWNrOmkub25DbGljayxj b252ZXJ0Q29vcmRzOnQoIi4vY29udmVydF9jb29yZHMiKX19LHsiLi4vLi4vcGxvdHMvY2Fy dGVzaWFuL2luY2x1ZGVfY29tcG9uZW50cyI6NTY3LCIuL2F0dHJpYnV0ZXMiOjM0OSwiLi9j YWxjX2F1dG9yYW5nZSI6MzUwLCIuL2NsaWNrIjozNTEsIi4vY29udmVydF9jb29yZHMiOjM1 MywiLi9kZWZhdWx0cyI6MzU0LCIuL2RyYXciOjM1NX1dLDM1ODpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9hbm5vdGF0aW9ucy9hdHRyaWJ1dGVzIiksaT10 KCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIikub3ZlcnJpZGVBbGwsYT10KCIuLi8uLi9w bG90X2FwaS9wbG90X3RlbXBsYXRlIikudGVtcGxhdGVkQXJyYXk7ZS5leHBvcnRzPWkoYSgi YW5ub3RhdGlvbiIse3Zpc2libGU6bi52aXNpYmxlLHg6e3ZhbFR5cGU6ImFueSJ9LHk6e3Zh bFR5cGU6ImFueSJ9LHo6e3ZhbFR5cGU6ImFueSJ9LGF4Ont2YWxUeXBlOiJudW1iZXIifSxh eTp7dmFsVHlwZToibnVtYmVyIn0seGFuY2hvcjpuLnhhbmNob3IseHNoaWZ0Om4ueHNoaWZ0 LHlhbmNob3I6bi55YW5jaG9yLHlzaGlmdDpuLnlzaGlmdCx0ZXh0Om4udGV4dCx0ZXh0YW5n bGU6bi50ZXh0YW5nbGUsZm9udDpuLmZvbnQsd2lkdGg6bi53aWR0aCxoZWlnaHQ6bi5oZWln aHQsb3BhY2l0eTpuLm9wYWNpdHksYWxpZ246bi5hbGlnbix2YWxpZ246bi52YWxpZ24sYmdj b2xvcjpuLmJnY29sb3IsYm9yZGVyY29sb3I6bi5ib3JkZXJjb2xvcixib3JkZXJwYWQ6bi5i b3JkZXJwYWQsYm9yZGVyd2lkdGg6bi5ib3JkZXJ3aWR0aCxzaG93YXJyb3c6bi5zaG93YXJy b3csYXJyb3djb2xvcjpuLmFycm93Y29sb3IsYXJyb3doZWFkOm4uYXJyb3doZWFkLHN0YXJ0 YXJyb3doZWFkOm4uc3RhcnRhcnJvd2hlYWQsYXJyb3dzaWRlOm4uYXJyb3dzaWRlLGFycm93 c2l6ZTpuLmFycm93c2l6ZSxzdGFydGFycm93c2l6ZTpuLnN0YXJ0YXJyb3dzaXplLGFycm93 d2lkdGg6bi5hcnJvd3dpZHRoLHN0YW5kb2ZmOm4uc3RhbmRvZmYsc3RhcnRzdGFuZG9mZjpu LnN0YXJ0c3RhbmRvZmYsaG92ZXJ0ZXh0Om4uaG92ZXJ0ZXh0LGhvdmVybGFiZWw6bi5ob3Zl cmxhYmVsLGNhcHR1cmVldmVudHM6bi5jYXB0dXJlZXZlbnRzfSksImNhbGMiLCJmcm9tLXJv b3QiKX0seyIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIjo1MzYsIi4uLy4uL3Bsb3RfYXBp L3Bsb3RfdGVtcGxhdGUiOjU0MywiLi4vYW5ub3RhdGlvbnMvYXR0cmlidXRlcyI6MzQ5fV0s MzU5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIp LGk9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKTtmdW5jdGlvbiBhKHQsZSl7dmFy IHI9ZS5mdWxsU2NlbmVMYXlvdXQuZG9tYWluLGE9ZS5mdWxsTGF5b3V0Ll9zaXplLG89e3Bk YXRhOm51bGwsdHlwZToibGluZWFyIixhdXRvcmFuZ2U6ITEscmFuZ2U6Wy0xLzAsMS8wXX07 dC5feGE9e30sbi5leHRlbmRGbGF0KHQuX3hhLG8pLGkuc2V0Q29udmVydCh0Ll94YSksdC5f eGEuX29mZnNldD1hLmwrci54WzBdKmEudyx0Ll94YS5sMnA9ZnVuY3Rpb24oKXtyZXR1cm4u NSooMSt0Ll9wZGF0YVswXS90Ll9wZGF0YVszXSkqYS53KihyLnhbMV0tci54WzBdKX0sdC5f eWE9e30sbi5leHRlbmRGbGF0KHQuX3lhLG8pLGkuc2V0Q29udmVydCh0Ll95YSksdC5feWEu X29mZnNldD1hLnQrKDEtci55WzFdKSphLmgsdC5feWEubDJwPWZ1bmN0aW9uKCl7cmV0dXJu LjUqKDEtdC5fcGRhdGFbMV0vdC5fcGRhdGFbM10pKmEuaCooci55WzFdLXIueVswXSl9fWUu ZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5mdWxsU2NlbmVMYXlvdXQuYW5ub3Rh dGlvbnMscj0wO3I8ZS5sZW5ndGg7cisrKWEoZVtyXSx0KTt0LmZ1bGxMYXlvdXQuX2luZm9s YXllci5zZWxlY3RBbGwoIi5hbm5vdGF0aW9uLSIrdC5pZCkucmVtb3ZlKCl9fSx7Ii4uLy4u L2xpYiI6NTAzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NTU0fV0sMzYwOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4v Li4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxhPXQoIi4uLy4uL3Bsb3RzL2FycmF5X2NvbnRh aW5lcl9kZWZhdWx0cyIpLG89dCgiLi4vYW5ub3RhdGlvbnMvY29tbW9uX2RlZmF1bHRzIiks cz10KCIuL2F0dHJpYnV0ZXMiKTtmdW5jdGlvbiBsKHQsZSxyLGEpe2Z1bmN0aW9uIGwocixp KXtyZXR1cm4gbi5jb2VyY2UodCxlLHMscixpKX1mdW5jdGlvbiBjKHQpe3ZhciBuPXQrImF4 aXMiLGE9e19mdWxsTGF5b3V0Ont9fTtyZXR1cm4gYS5fZnVsbExheW91dFtuXT1yW25dLGku Y29lcmNlUG9zaXRpb24oZSxhLGwsdCx0LC41KX1sKCJ2aXNpYmxlIikmJihvKHQsZSxhLmZ1 bGxMYXlvdXQsbCksYygieCIpLGMoInkiKSxjKCJ6Iiksbi5ub25lT3JBbGwodCxlLFsieCIs InkiLCJ6Il0pLGUueHJlZj0ieCIsZS55cmVmPSJ5IixlLnpyZWY9InoiLGwoInhhbmNob3Ii KSxsKCJ5YW5jaG9yIiksbCgieHNoaWZ0IiksbCgieXNoaWZ0IiksZS5zaG93YXJyb3cmJihl LmF4cmVmPSJwaXhlbCIsZS5heXJlZj0icGl4ZWwiLGwoImF4IiwtMTApLGwoImF5IiwtMzAp LG4ubm9uZU9yQWxsKHQsZSxbImF4IiwiYXkiXSkpKX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxl LHIpe2EodCxlLHtuYW1lOiJhbm5vdGF0aW9ucyIsaGFuZGxlSXRlbURlZmF1bHRzOmwsZnVs bExheW91dDpyLmZ1bGxMYXlvdXR9KX19LHsiLi4vLi4vbGliIjo1MDMsIi4uLy4uL3Bsb3Rz L2FycmF5X2NvbnRhaW5lcl9kZWZhdWx0cyI6NTQ5LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4v YXhlcyI6NTU0LCIuLi9hbm5vdGF0aW9ucy9jb21tb25fZGVmYXVsdHMiOjM1MiwiLi9hdHRy aWJ1dGVzIjozNTh9XSwzNjE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiLi4vYW5ub3RhdGlvbnMvZHJhdyIpLmRyYXdSYXcsaT10KCIuLi8uLi9wbG90cy9nbDNk L3Byb2plY3QiKSxhPVsieCIsInkiLCJ6Il07ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2 YXIgZT10LmZ1bGxTY2VuZUxheW91dCxyPXQuZGF0YVNjYWxlLG89ZS5hbm5vdGF0aW9ucyxz PTA7czxvLmxlbmd0aDtzKyspe2Zvcih2YXIgbD1vW3NdLGM9ITEsdT0wO3U8Mzt1Kyspe3Zh ciBmPWFbdV0saD1sW2ZdLHA9ZVtmKyJheGlzIl0ucjJmcmFjdGlvbihoKTtpZihwPDB8fHA+ MSl7Yz0hMDticmVha319Yz90LmZ1bGxMYXlvdXQuX2luZm9sYXllci5zZWxlY3QoIi5hbm5v dGF0aW9uLSIrdC5pZCsnW2RhdGEtaW5kZXg9IicrcysnIl0nKS5yZW1vdmUoKToobC5fcGRh dGE9aSh0LmdscGxvdC5jYW1lcmFQYXJhbXMsW2UueGF4aXMucjJsKGwueCkqclswXSxlLnlh eGlzLnIybChsLnkpKnJbMV0sZS56YXhpcy5yMmwobC56KSpyWzJdXSksbih0LmdyYXBoRGl2 LGwscyx0LmlkLGwuX3hhLGwuX3lhKSl9fX0seyIuLi8uLi9wbG90cy9nbDNkL3Byb2plY3Qi OjYwNywiLi4vYW5ub3RhdGlvbnMvZHJhdyI6MzU1fV0sMzYyOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3JlZ2lzdHJ5IiksaT10KCIuLi8uLi9saWIi KTtlLmV4cG9ydHM9e21vZHVsZVR5cGU6ImNvbXBvbmVudCIsbmFtZToiYW5ub3RhdGlvbnMz ZCIsc2NoZW1hOntzdWJwbG90czp7c2NlbmU6e2Fubm90YXRpb25zOnQoIi4vYXR0cmlidXRl cyIpfX19LGxheW91dEF0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksaGFuZGxlRGVmYXVs dHM6dCgiLi9kZWZhdWx0cyIpLGluY2x1ZGVCYXNlUGxvdDpmdW5jdGlvbih0LGUpe3ZhciBy PW4uc3VicGxvdHNSZWdpc3RyeS5nbDNkO2lmKCFyKXJldHVybjtmb3IodmFyIGE9ci5hdHRy UmVnZXgsbz1PYmplY3Qua2V5cyh0KSxzPTA7czxvLmxlbmd0aDtzKyspe3ZhciBsPW9bc107 YS50ZXN0KGwpJiYodFtsXS5hbm5vdGF0aW9uc3x8W10pLmxlbmd0aCYmKGkucHVzaFVuaXF1 ZShlLl9iYXNlUGxvdE1vZHVsZXMsciksaS5wdXNoVW5pcXVlKGUuX3N1YnBsb3RzLmdsM2Qs bCkpfX0sY29udmVydDp0KCIuL2NvbnZlcnQiKSxkcmF3OnQoIi4vZHJhdyIpfX0seyIuLi8u Li9saWIiOjUwMywiLi4vLi4vcmVnaXN0cnkiOjYzOCwiLi9hdHRyaWJ1dGVzIjozNTgsIi4v Y29udmVydCI6MzU5LCIuL2RlZmF1bHRzIjozNjAsIi4vZHJhdyI6MzYxfV0sMzYzOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz10KCJ3b3JsZC1jYWxlbmRhcnMv ZGlzdC9tYWluIiksdCgid29ybGQtY2FsZW5kYXJzL2Rpc3QvcGx1cyIpLHQoIndvcmxkLWNh bGVuZGFycy9kaXN0L2NhbGVuZGFycy9jaGluZXNlIiksdCgid29ybGQtY2FsZW5kYXJzL2Rp c3QvY2FsZW5kYXJzL2NvcHRpYyIpLHQoIndvcmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFy cy9kaXNjd29ybGQiKSx0KCJ3b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvZXRoaW9w aWFuIiksdCgid29ybGQtY2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL2hlYnJldyIpLHQoIndv cmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy9pc2xhbWljIiksdCgid29ybGQtY2FsZW5k YXJzL2Rpc3QvY2FsZW5kYXJzL2p1bGlhbiIpLHQoIndvcmxkLWNhbGVuZGFycy9kaXN0L2Nh bGVuZGFycy9tYXlhbiIpLHQoIndvcmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy9uYW5h a3NoYWhpIiksdCgid29ybGQtY2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL25lcGFsaSIpLHQo IndvcmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy9wZXJzaWFuIiksdCgid29ybGQtY2Fs ZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL3RhaXdhbiIpLHQoIndvcmxkLWNhbGVuZGFycy9kaXN0 L2NhbGVuZGFycy90aGFpIiksdCgid29ybGQtY2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL3Vt bWFscXVyYSIpfSx7IndvcmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy9jaGluZXNlIjoz MzIsIndvcmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy9jb3B0aWMiOjMzMywid29ybGQt Y2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL2Rpc2N3b3JsZCI6MzM0LCJ3b3JsZC1jYWxlbmRh cnMvZGlzdC9jYWxlbmRhcnMvZXRoaW9waWFuIjozMzUsIndvcmxkLWNhbGVuZGFycy9kaXN0 L2NhbGVuZGFycy9oZWJyZXciOjMzNiwid29ybGQtY2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJz L2lzbGFtaWMiOjMzNywid29ybGQtY2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL2p1bGlhbiI6 MzM4LCJ3b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMvbWF5YW4iOjMzOSwid29ybGQt Y2FsZW5kYXJzL2Rpc3QvY2FsZW5kYXJzL25hbmFrc2hhaGkiOjM0MCwid29ybGQtY2FsZW5k YXJzL2Rpc3QvY2FsZW5kYXJzL25lcGFsaSI6MzQxLCJ3b3JsZC1jYWxlbmRhcnMvZGlzdC9j YWxlbmRhcnMvcGVyc2lhbiI6MzQyLCJ3b3JsZC1jYWxlbmRhcnMvZGlzdC9jYWxlbmRhcnMv dGFpd2FuIjozNDMsIndvcmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy90aGFpIjozNDQs IndvcmxkLWNhbGVuZGFycy9kaXN0L2NhbGVuZGFycy91bW1hbHF1cmEiOjM0NSwid29ybGQt Y2FsZW5kYXJzL2Rpc3QvbWFpbiI6MzQ2LCJ3b3JsZC1jYWxlbmRhcnMvZGlzdC9wbHVzIjoz NDd9XSwzNjQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9jYWxl bmRhcnMiKSxpPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNh bCIpLG89YS5FUE9DSEpELHM9YS5PTkVEQVksbD17dmFsVHlwZToiZW51bWVyYXRlZCIsdmFs dWVzOmkuc29ydE9iamVjdEtleXMobi5jYWxlbmRhcnMpLGVkaXRUeXBlOiJjYWxjIixkZmx0 OiJncmVnb3JpYW4ifSxjPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXt9O3JldHVybiBhW3Jd PWwsaS5jb2VyY2UodCxlLGEscixuKX0sdT17ZDp7MDoiZGQiLCItIjoiZCJ9LGU6ezA6ImQi LCItIjoiZCJ9LGE6ezA6IkQiLCItIjoiRCJ9LEE6ezA6IkREIiwiLSI6IkREIn0sajp7MDoi b28iLCItIjoibyJ9LFc6ezA6Ind3IiwiLSI6IncifSxtOnswOiJtbSIsIi0iOiJtIn0sYjp7 MDoiTSIsIi0iOiJNIn0sQjp7MDoiTU0iLCItIjoiTU0ifSx5OnswOiJ5eSIsIi0iOiJ5eSJ9 LFk6ezA6Inl5eXkiLCItIjoieXl5eSJ9LFU6IiMjIix3OiIjIyIsYzp7MDoiRCBNIGQgJVgg eXl5eSIsIi0iOiJEIE0gZCAlWCB5eXl5In0seDp7MDoibW0vZGQveXl5eSIsIi0iOiJtbS9k ZC95eXl5In19O3ZhciBmPXt9O2Z1bmN0aW9uIGgodCl7dmFyIGU9Zlt0XTtyZXR1cm4gZXx8 KGU9Zlt0XT1uLmluc3RhbmNlKHQpKX1mdW5jdGlvbiBwKHQpe3JldHVybiBpLmV4dGVuZEZs YXQoe30sbCx7ZGVzY3JpcHRpb246dH0pfWZ1bmN0aW9uIGQodCl7cmV0dXJuIlNldHMgdGhl IGNhbGVuZGFyIHN5c3RlbSB0byB1c2Ugd2l0aCBgIit0KyJgIGRhdGUgZGF0YS4ifXZhciBt PXt4Y2FsZW5kYXI6cChkKCJ4IikpfSxnPWkuZXh0ZW5kRmxhdCh7fSxtLHt5Y2FsZW5kYXI6 cChkKCJ5IikpfSksdj1pLmV4dGVuZEZsYXQoe30sZyx7emNhbGVuZGFyOnAoZCgieiIpKX0p LHk9cChbIlNldHMgdGhlIGNhbGVuZGFyIHN5c3RlbSB0byB1c2UgZm9yIGByYW5nZWAgYW5k IGB0aWNrMGAiLCJpZiB0aGlzIGlzIGEgZGF0ZSBheGlzLiBUaGlzIGRvZXMgbm90IHNldCB0 aGUgY2FsZW5kYXIgZm9yIiwiaW50ZXJwcmV0aW5nIGRhdGEgb24gdGhpcyBheGlzLCB0aGF0 J3Mgc3BlY2lmaWVkIGluIHRoZSB0cmFjZSIsIm9yIHZpYSB0aGUgZ2xvYmFsIGBsYXlvdXQu Y2FsZW5kYXJgIl0uam9pbigiICIpKTtlLmV4cG9ydHM9e21vZHVsZVR5cGU6ImNvbXBvbmVu dCIsbmFtZToiY2FsZW5kYXJzIixzY2hlbWE6e3RyYWNlczp7c2NhdHRlcjpnLGJhcjpnLGJv eDpnLGhlYXRtYXA6Zyxjb250b3VyOmcsaGlzdG9ncmFtOmcsaGlzdG9ncmFtMmQ6ZyxoaXN0 b2dyYW0yZGNvbnRvdXI6ZyxzY2F0dGVyM2Q6dixzdXJmYWNlOnYsbWVzaDNkOnYsc2NhdHRl cmdsOmcsb2hsYzptLGNhbmRsZXN0aWNrOm19LGxheW91dDp7Y2FsZW5kYXI6cChbIlNldHMg dGhlIGRlZmF1bHQgY2FsZW5kYXIgc3lzdGVtIHRvIHVzZSBmb3IgaW50ZXJwcmV0aW5nIGFu ZCIsImRpc3BsYXlpbmcgZGF0ZXMgdGhyb3VnaG91dCB0aGUgcGxvdC4iXS5qb2luKCIgIikp fSxzdWJwbG90czp7eGF4aXM6e2NhbGVuZGFyOnl9LHlheGlzOntjYWxlbmRhcjp5fSxzY2Vu ZTp7eGF4aXM6e2NhbGVuZGFyOnl9LHlheGlzOntjYWxlbmRhcjp5fSx6YXhpczp7Y2FsZW5k YXI6eX19LHBvbGFyOntyYWRpYWxheGlzOntjYWxlbmRhcjp5fX19LHRyYW5zZm9ybXM6e2Zp bHRlcjp7dmFsdWVjYWxlbmRhcjpwKFsiV0FSTklORzogQWxsIHRyYW5zZm9ybXMgYXJlIGRl cHJlY2F0ZWQgYW5kIG1heSBiZSByZW1vdmVkIGZyb20gdGhlIEFQSSBpbiBuZXh0IG1ham9y IHZlcnNpb24uIiwiU2V0cyB0aGUgY2FsZW5kYXIgc3lzdGVtIHRvIHVzZSBmb3IgYHZhbHVl YCwgaWYgaXQgaXMgYSBkYXRlLiJdLmpvaW4oIiAiKSksdGFyZ2V0Y2FsZW5kYXI6cChbIldB Uk5JTkc6IEFsbCB0cmFuc2Zvcm1zIGFyZSBkZXByZWNhdGVkIGFuZCBtYXkgYmUgcmVtb3Zl ZCBmcm9tIHRoZSBBUEkgaW4gbmV4dCBtYWpvciB2ZXJzaW9uLiIsIlNldHMgdGhlIGNhbGVu ZGFyIHN5c3RlbSB0byB1c2UgZm9yIGB0YXJnZXRgLCBpZiBpdCBpcyBhbiIsImFycmF5IG9m IGRhdGVzLiBJZiBgdGFyZ2V0YCBpcyBhIHN0cmluZyAoZWcgKngqKSB3ZSB1c2UgdGhlIiwi Y29ycmVzcG9uZGluZyB0cmFjZSBhdHRyaWJ1dGUgKGVnIGB4Y2FsZW5kYXJgKSBpZiBpdCBl eGlzdHMsIiwiZXZlbiBpZiBgdGFyZ2V0Y2FsZW5kYXJgIGlzIHByb3ZpZGVkLiJdLmpvaW4o IiAiKSl9fX0sbGF5b3V0QXR0cmlidXRlczpsLGhhbmRsZURlZmF1bHRzOmMsaGFuZGxlVHJh Y2VEZWZhdWx0czpmdW5jdGlvbih0LGUscixuKXtmb3IodmFyIGk9MDtpPHIubGVuZ3RoO2kr KyljKHQsZSxyW2ldKyJjYWxlbmRhciIsbi5jYWxlbmRhcil9LENBTk9OSUNBTF9TVU5EQVk6 e2NoaW5lc2U6IjIwMDAtMDEtMDIiLGNvcHRpYzoiMjAwMC0wMS0wMyIsZGlzY3dvcmxkOiIy MDAwLTAxLTAzIixldGhpb3BpYW46IjIwMDAtMDEtMDUiLGhlYnJldzoiNTAwMC0wMS0wMSIs aXNsYW1pYzoiMTAwMC0wMS0wMiIsanVsaWFuOiIyMDAwLTAxLTAzIixtYXlhbjoiNTAwMC0w MS0wMSIsbmFuYWtzaGFoaToiMTAwMC0wMS0wNSIsbmVwYWxpOiIyMDAwLTAxLTA1IixwZXJz aWFuOiIxMDAwLTAxLTAxIixqYWxhbGk6IjEwMDAtMDEtMDEiLHRhaXdhbjoiMTAwMC0wMS0w NCIsdGhhaToiMjAwMC0wMS0wNCIsdW1tYWxxdXJhOiIxNDAwLTAxLTA2In0sQ0FOT05JQ0FM X1RJQ0s6e2NoaW5lc2U6IjIwMDAtMDEtMDEiLGNvcHRpYzoiMjAwMC0wMS0wMSIsZGlzY3dv cmxkOiIyMDAwLTAxLTAxIixldGhpb3BpYW46IjIwMDAtMDEtMDEiLGhlYnJldzoiNTAwMC0w MS0wMSIsaXNsYW1pYzoiMTAwMC0wMS0wMSIsanVsaWFuOiIyMDAwLTAxLTAxIixtYXlhbjoi NTAwMC0wMS0wMSIsbmFuYWtzaGFoaToiMTAwMC0wMS0wMSIsbmVwYWxpOiIyMDAwLTAxLTAx IixwZXJzaWFuOiIxMDAwLTAxLTAxIixqYWxhbGk6IjEwMDAtMDEtMDEiLHRhaXdhbjoiMTAw MC0wMS0wMSIsdGhhaToiMjAwMC0wMS0wMSIsdW1tYWxxdXJhOiIxNDAwLTAxLTAxIn0sREZM VFJBTkdFOntjaGluZXNlOlsiMjAwMC0wMS0wMSIsIjIwMDEtMDEtMDEiXSxjb3B0aWM6WyIx NzAwLTAxLTAxIiwiMTcwMS0wMS0wMSJdLGRpc2N3b3JsZDpbIjE4MDAtMDEtMDEiLCIxODAx LTAxLTAxIl0sZXRoaW9waWFuOlsiMjAwMC0wMS0wMSIsIjIwMDEtMDEtMDEiXSxoZWJyZXc6 WyI1NzAwLTAxLTAxIiwiNTcwMS0wMS0wMSJdLGlzbGFtaWM6WyIxNDAwLTAxLTAxIiwiMTQw MS0wMS0wMSJdLGp1bGlhbjpbIjIwMDAtMDEtMDEiLCIyMDAxLTAxLTAxIl0sbWF5YW46WyI1 MjAwLTAxLTAxIiwiNTIwMS0wMS0wMSJdLG5hbmFrc2hhaGk6WyIwNTAwLTAxLTAxIiwiMDUw MS0wMS0wMSJdLG5lcGFsaTpbIjIwMDAtMDEtMDEiLCIyMDAxLTAxLTAxIl0scGVyc2lhbjpb IjE0MDAtMDEtMDEiLCIxNDAxLTAxLTAxIl0samFsYWxpOlsiMTQwMC0wMS0wMSIsIjE0MDEt MDEtMDEiXSx0YWl3YW46WyIwMTAwLTAxLTAxIiwiMDEwMS0wMS0wMSJdLHRoYWk6WyIyNTAw LTAxLTAxIiwiMjUwMS0wMS0wMSJdLHVtbWFscXVyYTpbIjE0MDAtMDEtMDEiLCIxNDAxLTAx LTAxIl19LGdldENhbDpoLHdvcmxkQ2FsRm10OmZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG4s aSxhLGwsYyxmPU1hdGguZmxvb3IoKGUrLjA1KS9zKStvLHA9aChyKS5mcm9tSkQoZiksZD0w Oy0xIT09KGQ9dC5pbmRleE9mKCIlIixkKSk7KSIwIj09PShuPXQuY2hhckF0KGQrMSkpfHwi LSI9PT1ufHwiXyI9PT1uPyhhPTMsaT10LmNoYXJBdChkKzIpLCJfIj09PW4mJihuPSItIikp OihpPW4sbj0iMCIsYT0yKSwobD11W2ldKT8oYz0iIyMiPT09bD8iIyMiOnAuZm9ybWF0RGF0 ZShsW25dKSx0PXQuc3Vic3RyKDAsZCkrYyt0LnN1YnN0cihkK2EpLGQrPWMubGVuZ3RoKTpk Kz1hO3JldHVybiB0fX19LHsiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NDc5LCIuLi8u Li9saWIiOjUwMywiLi9jYWxlbmRhcnMiOjM2M31dLDM2NTpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0IjtyLmRlZmF1bHRzPVsiIzFmNzdiNCIsIiNmZjdmMGUiLCIjMmNhMDJjIiwi I2Q2MjcyOCIsIiM5NDY3YmQiLCIjOGM1NjRiIiwiI2UzNzdjMiIsIiM3ZjdmN2YiLCIjYmNi ZDIyIiwiIzE3YmVjZiJdLHIuZGVmYXVsdExpbmU9IiM0NDQiLHIubGlnaHRMaW5lPSIjZWVl IixyLmJhY2tncm91bmQ9IiNmZmYiLHIuYm9yZGVyTGluZT0iI0JFQzhEOSIsci5saWdodEZy YWN0aW9uPTFlMy8xMX0se31dLDM2NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCJ0aW55Y29sb3IyIiksaT10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4vLi4v bGliL2FycmF5IikuaXNUeXBlZEFycmF5LG89ZS5leHBvcnRzPXt9LHM9dCgiLi9hdHRyaWJ1 dGVzIik7by5kZWZhdWx0cz1zLmRlZmF1bHRzO3ZhciBsPW8uZGVmYXVsdExpbmU9cy5kZWZh dWx0TGluZTtvLmxpZ2h0TGluZT1zLmxpZ2h0TGluZTt2YXIgYz1vLmJhY2tncm91bmQ9cy5i YWNrZ3JvdW5kO2Z1bmN0aW9uIHUodCl7aWYoaSh0KXx8InN0cmluZyIhPXR5cGVvZiB0KXJl dHVybiB0O3ZhciBlPXQudHJpbSgpO2lmKCJyZ2IiIT09ZS5zdWJzdHIoMCwzKSlyZXR1cm4g dDt2YXIgcj1lLm1hdGNoKC9ecmdiYT9ccypcKChbXigpXSopXCkkLyk7aWYoIXIpcmV0dXJu IHQ7dmFyIG49clsxXS50cmltKCkuc3BsaXQoL1xzKltccyxdXHMqLyksYT0iYSI9PT1lLmNo YXJBdCgzKSYmND09PW4ubGVuZ3RoO2lmKCFhJiYzIT09bi5sZW5ndGgpcmV0dXJuIHQ7Zm9y KHZhciBvPTA7bzxuLmxlbmd0aDtvKyspe2lmKCFuW29dLmxlbmd0aClyZXR1cm4gdDtpZihu W29dPU51bWJlcihuW29dKSwhKG5bb10+PTApKXJldHVybiB0O2lmKDM9PT1vKW5bb10+MSYm KG5bb109MSk7ZWxzZSBpZihuW29dPj0xKXJldHVybiB0fXZhciBzPU1hdGgucm91bmQoMjU1 Km5bMF0pKyIsICIrTWF0aC5yb3VuZCgyNTUqblsxXSkrIiwgIitNYXRoLnJvdW5kKDI1NSpu WzJdKTtyZXR1cm4gYT8icmdiYSgiK3MrIiwgIituWzNdKyIpIjoicmdiKCIrcysiKSJ9by50 aW55UkdCPWZ1bmN0aW9uKHQpe3ZhciBlPXQudG9SZ2IoKTtyZXR1cm4icmdiKCIrTWF0aC5y b3VuZChlLnIpKyIsICIrTWF0aC5yb3VuZChlLmcpKyIsICIrTWF0aC5yb3VuZChlLmIpKyIp In0sby5yZ2I9ZnVuY3Rpb24odCl7cmV0dXJuIG8udGlueVJHQihuKHQpKX0sby5vcGFjaXR5 PWZ1bmN0aW9uKHQpe3JldHVybiB0P24odCkuZ2V0QWxwaGEoKTowfSxvLmFkZE9wYWNpdHk9 ZnVuY3Rpb24odCxlKXt2YXIgcj1uKHQpLnRvUmdiKCk7cmV0dXJuInJnYmEoIitNYXRoLnJv dW5kKHIucikrIiwgIitNYXRoLnJvdW5kKHIuZykrIiwgIitNYXRoLnJvdW5kKHIuYikrIiwg IitlKyIpIn0sby5jb21iaW5lPWZ1bmN0aW9uKHQsZSl7dmFyIHI9bih0KS50b1JnYigpO2lm KDE9PT1yLmEpcmV0dXJuIG4odCkudG9SZ2JTdHJpbmcoKTt2YXIgaT1uKGV8fGMpLnRvUmdi KCksYT0xPT09aS5hP2k6e3I6MjU1KigxLWkuYSkraS5yKmkuYSxnOjI1NSooMS1pLmEpK2ku ZyppLmEsYjoyNTUqKDEtaS5hKStpLmIqaS5hfSxvPXtyOmEuciooMS1yLmEpK3IucipyLmEs ZzphLmcqKDEtci5hKStyLmcqci5hLGI6YS5iKigxLXIuYSkrci5iKnIuYX07cmV0dXJuIG4o bykudG9SZ2JTdHJpbmcoKX0sby5jb250cmFzdD1mdW5jdGlvbih0LGUscil7dmFyIGk9bih0 KTtyZXR1cm4gMSE9PWkuZ2V0QWxwaGEoKSYmKGk9bihvLmNvbWJpbmUodCxjKSkpLChpLmlz RGFyaygpP2U/aS5saWdodGVuKGUpOmM6cj9pLmRhcmtlbihyKTpsKS50b1N0cmluZygpfSxv LnN0cm9rZT1mdW5jdGlvbih0LGUpe3ZhciByPW4oZSk7dC5zdHlsZSh7c3Ryb2tlOm8udGlu eVJHQihyKSwic3Ryb2tlLW9wYWNpdHkiOnIuZ2V0QWxwaGEoKX0pfSxvLmZpbGw9ZnVuY3Rp b24odCxlKXt2YXIgcj1uKGUpO3Quc3R5bGUoe2ZpbGw6by50aW55UkdCKHIpLCJmaWxsLW9w YWNpdHkiOnIuZ2V0QWxwaGEoKX0pfSxvLmNsZWFuPWZ1bmN0aW9uKHQpe2lmKHQmJiJvYmpl Y3QiPT10eXBlb2YgdCl7dmFyIGUscixuLGkscz1PYmplY3Qua2V5cyh0KTtmb3IoZT0wO2U8 cy5sZW5ndGg7ZSsrKWlmKGk9dFtuPXNbZV1dLCJjb2xvciI9PT1uLnN1YnN0cihuLmxlbmd0 aC01KSlpZihBcnJheS5pc0FycmF5KGkpKWZvcihyPTA7cjxpLmxlbmd0aDtyKyspaVtyXT11 KGlbcl0pO2Vsc2UgdFtuXT11KGkpO2Vsc2UgaWYoImNvbG9yc2NhbGUiPT09bi5zdWJzdHIo bi5sZW5ndGgtMTApJiZBcnJheS5pc0FycmF5KGkpKWZvcihyPTA7cjxpLmxlbmd0aDtyKysp QXJyYXkuaXNBcnJheShpW3JdKSYmKGlbcl1bMV09dShpW3JdWzFdKSk7ZWxzZSBpZihBcnJh eS5pc0FycmF5KGkpKXt2YXIgbD1pWzBdO2lmKCFBcnJheS5pc0FycmF5KGwpJiZsJiYib2Jq ZWN0Ij09dHlwZW9mIGwpZm9yKHI9MDtyPGkubGVuZ3RoO3IrKylvLmNsZWFuKGlbcl0pfWVs c2UgaSYmIm9iamVjdCI9PXR5cGVvZiBpJiYhYShpKSYmby5jbGVhbihpKX19fSx7Ii4uLy4u L2xpYi9hcnJheSI6NDg1LCIuL2F0dHJpYnV0ZXMiOjM2NSwiZmFzdC1pc251bWVyaWMiOjE5 MCx0aW55Y29sb3IyOjMxMn1dLDM2NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxpPXQo Ii4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vbGliL2V4dGVuZCIp LmV4dGVuZEZsYXQsbz10KCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIikub3ZlcnJpZGVB bGw7ZS5leHBvcnRzPW8oe29yaWVudGF0aW9uOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1 ZXM6WyJoIiwidiJdLGRmbHQ6InYifSx0aGlja25lc3Ntb2RlOnt2YWxUeXBlOiJlbnVtZXJh dGVkIix2YWx1ZXM6WyJmcmFjdGlvbiIsInBpeGVscyJdLGRmbHQ6InBpeGVscyJ9LHRoaWNr bmVzczp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjMwfSxsZW5tb2RlOnt2YWxUeXBl OiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJmcmFjdGlvbiIsInBpeGVscyJdLGRmbHQ6ImZyYWN0 aW9uIn0sbGVuOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MX0seDp7dmFsVHlwZToi bnVtYmVyIixtaW46LTIsbWF4OjN9LHhhbmNob3I6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZh bHVlczpbImxlZnQiLCJjZW50ZXIiLCJyaWdodCJdfSx4cGFkOnt2YWxUeXBlOiJudW1iZXIi LG1pbjowLGRmbHQ6MTB9LHk6e3ZhbFR5cGU6Im51bWJlciIsbWluOi0yLG1heDozfSx5YW5j aG9yOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0b3AiLCJtaWRkbGUiLCJib3R0 b20iXX0seXBhZDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjEwfSxvdXRsaW5lY29s b3I6bi5saW5lY29sb3Isb3V0bGluZXdpZHRoOm4ubGluZXdpZHRoLGJvcmRlcmNvbG9yOm4u bGluZWNvbG9yLGJvcmRlcndpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MH0s Ymdjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6InJnYmEoMCwwLDAsMCkifSx0aWNrbW9k ZTpuLnRpY2ttb2RlLG50aWNrczpuLm50aWNrcyx0aWNrMDpuLnRpY2swLGR0aWNrOm4uZHRp Y2ssdGlja3ZhbHM6bi50aWNrdmFscyx0aWNrdGV4dDpuLnRpY2t0ZXh0LHRpY2tzOmEoe30s bi50aWNrcyx7ZGZsdDoiIn0pLHRpY2tsYWJlbG92ZXJmbG93OmEoe30sbi50aWNrbGFiZWxv dmVyZmxvdyx7fSksdGlja2xhYmVscG9zaXRpb246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZh bHVlczpbIm91dHNpZGUiLCJpbnNpZGUiLCJvdXRzaWRlIHRvcCIsImluc2lkZSB0b3AiLCJv dXRzaWRlIGxlZnQiLCJpbnNpZGUgbGVmdCIsIm91dHNpZGUgcmlnaHQiLCJpbnNpZGUgcmln aHQiLCJvdXRzaWRlIGJvdHRvbSIsImluc2lkZSBib3R0b20iXSxkZmx0OiJvdXRzaWRlIn0s dGlja2xlbjpuLnRpY2tsZW4sdGlja3dpZHRoOm4udGlja3dpZHRoLHRpY2tjb2xvcjpuLnRp Y2tjb2xvcix0aWNrbGFiZWxzdGVwOm4udGlja2xhYmVsc3RlcCxzaG93dGlja2xhYmVsczpu LnNob3d0aWNrbGFiZWxzLHRpY2tmb250Omkoe30pLHRpY2thbmdsZTpuLnRpY2thbmdsZSx0 aWNrZm9ybWF0Om4udGlja2Zvcm1hdCx0aWNrZm9ybWF0c3RvcHM6bi50aWNrZm9ybWF0c3Rv cHMsdGlja3ByZWZpeDpuLnRpY2twcmVmaXgsc2hvd3RpY2twcmVmaXg6bi5zaG93dGlja3By ZWZpeCx0aWNrc3VmZml4Om4udGlja3N1ZmZpeCxzaG93dGlja3N1ZmZpeDpuLnNob3d0aWNr c3VmZml4LHNlcGFyYXRldGhvdXNhbmRzOm4uc2VwYXJhdGV0aG91c2FuZHMsZXhwb25lbnRm b3JtYXQ6bi5leHBvbmVudGZvcm1hdCxtaW5leHBvbmVudDpuLm1pbmV4cG9uZW50LHNob3dl eHBvbmVudDpuLnNob3dleHBvbmVudCx0aXRsZTp7dGV4dDp7dmFsVHlwZToic3RyaW5nIn0s Zm9udDppKHt9KSxzaWRlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJyaWdodCIs InRvcCIsImJvdHRvbSJdfX0sX2RlcHJlY2F0ZWQ6e3RpdGxlOnt2YWxUeXBlOiJzdHJpbmci fSx0aXRsZWZvbnQ6aSh7fSksdGl0bGVzaWRlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1 ZXM6WyJyaWdodCIsInRvcCIsImJvdHRvbSJdLGRmbHQ6InRvcCJ9fX0sImNvbG9yYmFycyIs ImZyb20tcm9vdCIpfSx7Ii4uLy4uL2xpYi9leHRlbmQiOjQ5MywiLi4vLi4vcGxvdF9hcGkv ZWRpdF90eXBlcyI6NTM2LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0 ZXMiOjU2OSwiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIjo1ODV9XSwzNjg6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtjbjp7Y29sb3JiYXI6ImNvbG9y YmFyIixjYmJnOiJjYmJnIixjYmZpbGw6ImNiZmlsbCIsY2JmaWxsczoiY2JmaWxscyIsY2Js aW5lOiJjYmxpbmUiLGNibGluZXM6ImNibGluZXMiLGNiYXhpczoiY2JheGlzIixjYnRpdGxl dW5zaGlmdDoiY2J0aXRsZXVuc2hpZnQiLGNidGl0bGU6ImNidGl0bGUiLGNib3V0bGluZToi Y2JvdXRsaW5lIixjcmlzcDoiY3Jpc3AiLGpzUGxhY2Vob2xkZXI6ImpzLXBsYWNlaG9sZGVy In19fSx7fV0sMzY5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4u Ly4uL2xpYiIpLGk9dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLGE9dCgiLi4v Li4vcGxvdHMvY2FydGVzaWFuL3RpY2tfdmFsdWVfZGVmYXVsdHMiKSxvPXQoIi4uLy4uL3Bs b3RzL2NhcnRlc2lhbi90aWNrX21hcmtfZGVmYXVsdHMiKSxzPXQoIi4uLy4uL3Bsb3RzL2Nh cnRlc2lhbi90aWNrX2xhYmVsX2RlZmF1bHRzIiksbD10KCIuLi8uLi9wbG90cy9jYXJ0ZXNp YW4vcHJlZml4X3N1ZmZpeF9kZWZhdWx0cyIpLGM9dCgiLi9hdHRyaWJ1dGVzIik7ZS5leHBv cnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgdT1pLm5ld0NvbnRhaW5lcihlLCJjb2xvcmJhciIp LGY9dC5jb2xvcmJhcnx8e307ZnVuY3Rpb24gaCh0LGUpe3JldHVybiBuLmNvZXJjZShmLHUs Yyx0LGUpfXZhciBwPXIubWFyZ2lufHx7dDowLGI6MCxsOjAscjowfSxkPXIud2lkdGgtcC5s LXAucixtPXIuaGVpZ2h0LXAudC1wLmIsZz0idiI9PT1oKCJvcmllbnRhdGlvbiIpLHY9aCgi dGhpY2tuZXNzbW9kZSIpO2goInRoaWNrbmVzcyIsImZyYWN0aW9uIj09PXY/MzAvKGc/ZDpt KTozMCk7dmFyIHk9aCgibGVubW9kZSIpO2goImxlbiIsImZyYWN0aW9uIj09PXk/MTpnP206 ZCksaCgieCIsZz8xLjAyOi41KSxoKCJ4YW5jaG9yIixnPyJsZWZ0IjoiY2VudGVyIiksaCgi eHBhZCIpLGgoInkiLGc/LjU6MS4wMiksaCgieWFuY2hvciIsZz8ibWlkZGxlIjoiYm90dG9t IiksaCgieXBhZCIpLG4ubm9uZU9yQWxsKGYsdSxbIngiLCJ5Il0pLGgoIm91dGxpbmVjb2xv ciIpLGgoIm91dGxpbmV3aWR0aCIpLGgoImJvcmRlcmNvbG9yIiksaCgiYm9yZGVyd2lkdGgi KSxoKCJiZ2NvbG9yIik7dmFyIHg9bi5jb2VyY2UoZix1LHt0aWNrbGFiZWxwb3NpdGlvbjp7 dmFsVHlwZToiZW51bWVyYXRlZCIsZGZsdDoib3V0c2lkZSIsdmFsdWVzOmc/WyJvdXRzaWRl IiwiaW5zaWRlIiwib3V0c2lkZSB0b3AiLCJpbnNpZGUgdG9wIiwib3V0c2lkZSBib3R0b20i LCJpbnNpZGUgYm90dG9tIl06WyJvdXRzaWRlIiwiaW5zaWRlIiwib3V0c2lkZSBsZWZ0Iiwi aW5zaWRlIGxlZnQiLCJvdXRzaWRlIHJpZ2h0IiwiaW5zaWRlIHJpZ2h0Il19fSwidGlja2xh YmVscG9zaXRpb24iKTtoKCJ0aWNrbGFiZWxvdmVyZmxvdyIsLTEhPT14LmluZGV4T2YoImlu c2lkZSIpPyJoaWRlIHBhc3QgZG9tYWluIjoiaGlkZSBwYXN0IGRpdiIpLGEoZix1LGgsImxp bmVhciIpO3ZhciBiPXIuZm9udCxfPXtvdXRlclRpY2tzOiExLGZvbnQ6Yn07LTEhPT14Lmlu ZGV4T2YoImluc2lkZSIpJiYoXy5iZ0NvbG9yPSJibGFjayIpLGwoZix1LGgsImxpbmVhciIs XykscyhmLHUsaCwibGluZWFyIixfKSxvKGYsdSxoLCJsaW5lYXIiLF8pLGgoInRpdGxlLnRl eHQiLHIuX2RmbHRUaXRsZS5jb2xvcmJhcik7dmFyIHc9dS50aWNrZm9udCxUPW4uZXh0ZW5k RmxhdCh7fSx3LHtjb2xvcjpiLmNvbG9yLHNpemU6bi5iaWdGb250KHcuc2l6ZSl9KTtuLmNv ZXJjZUZvbnQoaCwidGl0bGUuZm9udCIsVCksaCgidGl0bGUuc2lkZSIsZz8idG9wIjoicmln aHQiKX19LHsiLi4vLi4vbGliIjo1MDMsIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUi OjU0MywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL3ByZWZpeF9zdWZmaXhfZGVmYXVsdHMiOjU3 MywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL3RpY2tfbGFiZWxfZGVmYXVsdHMiOjU3OCwiLi4v Li4vcGxvdHMvY2FydGVzaWFuL3RpY2tfbWFya19kZWZhdWx0cyI6NTc5LCIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4vdGlja192YWx1ZV9kZWZhdWx0cyI6NTgwLCIuL2F0dHJpYnV0ZXMiOjM2 N31dLDM3MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJAcGxvdGx5 L2QzIiksaT10KCJ0aW55Y29sb3IyIiksYT10KCIuLi8uLi9wbG90cy9wbG90cyIpLG89dCgi Li4vLi4vcmVnaXN0cnkiKSxzPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksbD10 KCIuLi9kcmFnZWxlbWVudCIpLGM9dCgiLi4vLi4vbGliIiksdT1jLnN0clRyYW5zbGF0ZSxm PXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LGg9dCgiLi4vLi4vbGliL3NldGN1 cnNvciIpLHA9dCgiLi4vZHJhd2luZyIpLGQ9dCgiLi4vY29sb3IiKSxtPXQoIi4uL3RpdGxl cyIpLGc9dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIiksdj10KCIuLi9jb2xvcnNjYWxl L2hlbHBlcnMiKS5mbGlwU2NhbGUseT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19k ZWZhdWx0cyIpLHg9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL3Bvc2l0aW9uX2RlZmF1bHRz IiksYj10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxfPXQo Ii4uLy4uL2NvbnN0YW50cy9hbGlnbm1lbnQiKSx3PV8uTElORV9TUEFDSU5HLFQ9Xy5GUk9N X1RMLGs9Xy5GUk9NX0JSLEE9dCgiLi9jb25zdGFudHMiKS5jbjtlLmV4cG9ydHM9e2RyYXc6 ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dC5faW5mb2xheWVyLnNlbGVjdEFsbCgi Zy4iK0EuY29sb3JiYXIpLmRhdGEoZnVuY3Rpb24odCl7dmFyIGUscixuLGksYT10Ll9mdWxs TGF5b3V0LG89dC5jYWxjZGF0YSxzPVtdO2Z1bmN0aW9uIGwodCl7cmV0dXJuIGYodCx7X2Zp bGxjb2xvcjpudWxsLF9saW5lOntjb2xvcjpudWxsLHdpZHRoOm51bGwsZGFzaDpudWxsfSxf bGV2ZWxzOntzdGFydDpudWxsLGVuZDpudWxsLHNpemU6bnVsbH0sX2ZpbGxsZXZlbHM6bnVs bCxfZmlsbGdyYWRpZW50Om51bGwsX3pyYW5nZTpudWxsfSl9ZnVuY3Rpb24gYygpeyJmdW5j dGlvbiI9PXR5cGVvZiBpLmNhbGM/aS5jYWxjKHQsbixlKTooZS5fZmlsbGdyYWRpZW50PXIu cmV2ZXJzZXNjYWxlP3Yoci5jb2xvcnNjYWxlKTpyLmNvbG9yc2NhbGUsZS5fenJhbmdlPVty W2kubWluXSxyW2kubWF4XV0pfWZvcih2YXIgdT0wO3U8by5sZW5ndGg7dSsrKXt2YXIgaD1v W3VdLHA9KG49aFswXS50cmFjZSkuX21vZHVsZS5jb2xvcmJhcjtpZighMD09PW4udmlzaWJs ZSYmcClmb3IodmFyIGQ9QXJyYXkuaXNBcnJheShwKSxtPWQ/cDpbcF0sZz0wO2c8bS5sZW5n dGg7ZysrKXt2YXIgeT0oaT1tW2ddKS5jb250YWluZXI7KHI9eT9uW3ldOm4pJiZyLnNob3dz Y2FsZSYmKChlPWwoci5jb2xvcmJhcikpLl9pZD0iY2IiK24udWlkKyhkJiZ5PyItIit5OiIi KSxlLl90cmFjZUluZGV4PW4uaW5kZXgsZS5fcHJvcFByZWZpeD0oeT95KyIuIjoiIikrImNv bG9yYmFyLiIsZS5fbWV0YT1uLl9tZXRhLGMoKSxzLnB1c2goZSkpfX1mb3IodmFyIHggaW4g YS5fY29sb3JBeGVzKWlmKChyPWFbeF0pLnNob3dzY2FsZSl7dmFyIGI9YS5fY29sb3JBeGVz W3hdOyhlPWwoci5jb2xvcmJhcikpLl9pZD0iY2IiK3gsZS5fcHJvcFByZWZpeD14KyIuY29s b3JiYXIuIixlLl9tZXRhPWEuX21ldGEsaT17bWluOiJjbWluIixtYXg6ImNtYXgifSwiaGVh dG1hcCIhPT1iWzBdJiYobj1iWzFdLGkuY2FsYz1uLl9tb2R1bGUuY29sb3JiYXIuY2FsYyks YygpLHMucHVzaChlKX1yZXR1cm4gc30odCksKGZ1bmN0aW9uKHQpe3JldHVybiB0Ll9pZH0p KTtlLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLChmdW5jdGlvbih0KXtyZXR1 cm4gdC5faWR9KSkuY2xhc3NlZChBLmNvbG9yYmFyLCEwKSxlLmVhY2goKGZ1bmN0aW9uKGUp e3ZhciByPW4uc2VsZWN0KHRoaXMpO2MuZW5zdXJlU2luZ2xlKHIsInJlY3QiLEEuY2JiZyks Yy5lbnN1cmVTaW5nbGUociwiZyIsQS5jYmZpbGxzKSxjLmVuc3VyZVNpbmdsZShyLCJnIixB LmNibGluZXMpLGMuZW5zdXJlU2luZ2xlKHIsImciLEEuY2JheGlzLChmdW5jdGlvbih0KXt0 LmNsYXNzZWQoQS5jcmlzcCwhMCl9KSksYy5lbnN1cmVTaW5nbGUociwiZyIsQS5jYnRpdGxl dW5zaGlmdCwoZnVuY3Rpb24odCl7dC5hcHBlbmQoImciKS5jbGFzc2VkKEEuY2J0aXRsZSwh MCl9KSksYy5lbnN1cmVTaW5nbGUociwicmVjdCIsQS5jYm91dGxpbmUpO3ZhciB2PWZ1bmN0 aW9uKHQsZSxyKXt2YXIgbz0idiI9PT1lLm9yaWVudGF0aW9uLGw9ZS5sZW4saD1lLmxlbm1v ZGUsdj1lLnRoaWNrbmVzcyxfPWUudGhpY2tuZXNzbW9kZSxNPWUub3V0bGluZXdpZHRoLFM9 ZS5ib3JkZXJ3aWR0aCxFPWUuYmdjb2xvcixMPWUueGFuY2hvcixDPWUueWFuY2hvcixQPWUu eHBhZCxJPWUueXBhZCxPPWUueCx6PW8/ZS55OjEtZS55LEQ9ci5fZnVsbExheW91dCxSPUQu X3NpemUsRj1lLl9maWxsY29sb3IsQj1lLl9saW5lLE49ZS50aXRsZSxqPU4uc2lkZSxVPWUu X3pyYW5nZXx8bi5leHRlbnQoKCJmdW5jdGlvbiI9PXR5cGVvZiBGP0Y6Qi5jb2xvcikuZG9t YWluKCkpLFY9ImZ1bmN0aW9uIj09dHlwZW9mIEIuY29sb3I/Qi5jb2xvcjpmdW5jdGlvbigp e3JldHVybiBCLmNvbG9yfSxIPSJmdW5jdGlvbiI9PXR5cGVvZiBGP0Y6ZnVuY3Rpb24oKXty ZXR1cm4gRn0scT1lLl9sZXZlbHMsRz1mdW5jdGlvbih0LGUscil7dmFyIG4saSxhPWUuX2xl dmVscyxvPVtdLHM9W10sbD1hLmVuZCthLnNpemUvMTAwLGM9YS5zaXplLHU9MS4wMDEqclsw XS0uMDAxKnJbMV0sZj0xLjAwMSpyWzFdLS4wMDEqclswXTtmb3IoaT0wO2k8MWU1JiYobj1h LnN0YXJ0K2kqYywhKGM+MD9uPj1sOm48PWwpKTtpKyspbj51JiZuPGYmJm8ucHVzaChuKTtp ZihlLl9maWxsZ3JhZGllbnQpcz1bMF07ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5f ZmlsbGNvbG9yKXt2YXIgaD1lLl9maWxsbGV2ZWxzO2lmKGgpZm9yKGw9aC5lbmQraC5zaXpl LzEwMCxjPWguc2l6ZSxpPTA7aTwxZTUmJihuPWguc3RhcnQraSpjLCEoYz4wP24+PWw6bjw9 bCkpO2krKyluPnJbMF0mJm48clsxXSYmcy5wdXNoKG4pO2Vsc2Uocz1vLm1hcCgoZnVuY3Rp b24odCl7cmV0dXJuIHQtYS5zaXplLzJ9KSkpLnB1c2goc1tzLmxlbmd0aC0xXSthLnNpemUp fWVsc2UgZS5fZmlsbGNvbG9yJiYic3RyaW5nIj09dHlwZW9mIGUuX2ZpbGxjb2xvciYmKHM9 WzBdKTthLnNpemU8MCYmKG8ucmV2ZXJzZSgpLHMucmV2ZXJzZSgpKTtyZXR1cm57bGluZTpv LGZpbGw6c319KDAsZSxVKSxZPUcuZmlsbCxXPUcubGluZSxYPU1hdGgucm91bmQodiooImZy YWN0aW9uIj09PV8/bz9SLnc6Ui5oOjEpKSxaPVgvKG8/Ui53OlIuaCksSj1NYXRoLnJvdW5k KGwqKCJmcmFjdGlvbiI9PT1oP28/Ui5oOlIudzoxKSksSz1KLyhvP1IuaDpSLncpLFE9TWF0 aC5yb3VuZChvP08qUi53K1A6eipSLmgrSSksJD17Y2VudGVyOi41LHJpZ2h0OjF9W0xdfHww LHR0PXt0b3A6MSxtaWRkbGU6LjV9W0NdfHwwLGV0PW8/Ty0kKlo6ei10dCpaLHJ0PW8/ei10 dCpLOk8tJCpLLG50PU1hdGgucm91bmQobz9SLmgqKDEtcnQpOlIudypydCk7ZS5fbGVuRnJh Yz1LLGUuX3RoaWNrRnJhYz1aLGUuX3VGcmFjPWV0LGUuX3ZGcmFjPXJ0O3ZhciBpdD1lLl9h eGlzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10Ll9mdWxsTGF5b3V0LGk9InYiPT09ZS5vcmll bnRhdGlvbixhPXt0eXBlOiJsaW5lYXIiLHJhbmdlOnIsdGlja21vZGU6ZS50aWNrbW9kZSxu dGlja3M6ZS5udGlja3MsdGljazA6ZS50aWNrMCxkdGljazplLmR0aWNrLHRpY2t2YWxzOmUu dGlja3ZhbHMsdGlja3RleHQ6ZS50aWNrdGV4dCx0aWNrczplLnRpY2tzLHRpY2tsZW46ZS50 aWNrbGVuLHRpY2t3aWR0aDplLnRpY2t3aWR0aCx0aWNrY29sb3I6ZS50aWNrY29sb3Isc2hv d3RpY2tsYWJlbHM6ZS5zaG93dGlja2xhYmVscyx0aWNrbGFiZWxwb3NpdGlvbjplLnRpY2ts YWJlbHBvc2l0aW9uLHRpY2tsYWJlbG92ZXJmbG93OmUudGlja2xhYmVsb3ZlcmZsb3csdGlj a2xhYmVsc3RlcDplLnRpY2tsYWJlbHN0ZXAsdGlja2ZvbnQ6ZS50aWNrZm9udCx0aWNrYW5n bGU6ZS50aWNrYW5nbGUsdGlja2Zvcm1hdDplLnRpY2tmb3JtYXQsZXhwb25lbnRmb3JtYXQ6 ZS5leHBvbmVudGZvcm1hdCxtaW5leHBvbmVudDplLm1pbmV4cG9uZW50LHNlcGFyYXRldGhv dXNhbmRzOmUuc2VwYXJhdGV0aG91c2FuZHMsc2hvd2V4cG9uZW50OmUuc2hvd2V4cG9uZW50 LHNob3d0aWNrcHJlZml4OmUuc2hvd3RpY2twcmVmaXgsdGlja3ByZWZpeDplLnRpY2twcmVm aXgsc2hvd3RpY2tzdWZmaXg6ZS5zaG93dGlja3N1ZmZpeCx0aWNrc3VmZml4OmUudGlja3N1 ZmZpeCx0aXRsZTplLnRpdGxlLHNob3dsaW5lOiEwLGFuY2hvcjoiZnJlZSIsc2lkZTppPyJy aWdodCI6ImJvdHRvbSIscG9zaXRpb246MX0sbz1pPyJ5IjoieCIscz17dHlwZToibGluZWFy IixfaWQ6bytlLl9pZH0sbD17bGV0dGVyOm8sZm9udDpuLmZvbnQsbm9Ib3ZlcjohMCxub1Rp Y2tzb246ITAsbm9UaWNrbGFiZWxtb2RlOiEwLGNhbGVuZGFyOm4uY2FsZW5kYXJ9O2Z1bmN0 aW9uIHUodCxlKXtyZXR1cm4gYy5jb2VyY2UoYSxzLGIsdCxlKX1yZXR1cm4geShhLHMsdSxs LG4pLHgoYSxzLHUsbCksc30ocixlLFUpO2l0LnBvc2l0aW9uPVorKG8/TytQL1Iudzp6K0kv Ui5oKTt2YXIgYXQ9LTEhPT1bInRvcCIsImJvdHRvbSJdLmluZGV4T2Yoaik7byYmYXQmJihp dC50aXRsZS5zaWRlPWosaXQudGl0bGV4PU8rUC9SLncsaXQudGl0bGV5PXJ0KygidG9wIj09 PU4uc2lkZT9LLUkvUi5oOkkvUi5oKSk7b3x8YXR8fChpdC50aXRsZS5zaWRlPWosaXQudGl0 bGV5PXorSS9SLmgsaXQudGl0bGV4PXJ0K1AvUi53KTtpZihCLmNvbG9yJiYiYXV0byI9PT1l LnRpY2ttb2RlKXtpdC50aWNrbW9kZT0ibGluZWFyIixpdC50aWNrMD1xLnN0YXJ0O3ZhciBv dD1xLnNpemUsc3Q9Yy5jb25zdHJhaW4oSi81MCw0LDE1KSsxLGx0PShVWzFdLVVbMF0pLygo ZS5udGlja3N8fHN0KSpvdCk7aWYobHQ+MSl7dmFyIGN0PU1hdGgucG93KDEwLE1hdGguZmxv b3IoTWF0aC5sb2cobHQpL01hdGguTE4xMCkpO290Kj1jdCpjLnJvdW5kVXAobHQvY3QsWzIs NSwxMF0pLChNYXRoLmFicyhxLnN0YXJ0KS9xLnNpemUrMWUtNiklMTwyZS02JiYoaXQudGlj azA9MCl9aXQuZHRpY2s9b3R9aXQuZG9tYWluPW8/W3J0K0kvUi5oLHJ0K0stSS9SLmhdOlty dCtQL1IudyxydCtLLVAvUi53XSxpdC5zZXRTY2FsZSgpLHQuYXR0cigidHJhbnNmb3JtIix1 KE1hdGgucm91bmQoUi5sKSxNYXRoLnJvdW5kKFIudCkpKTt2YXIgdXQsZnQ9dC5zZWxlY3Qo Ii4iK0EuY2J0aXRsZXVuc2hpZnQpLmF0dHIoInRyYW5zZm9ybSIsdSgtTWF0aC5yb3VuZChS LmwpLC1NYXRoLnJvdW5kKFIudCkpKSxodD1pdC50aWNrbGFiZWxwb3NpdGlvbixwdD1pdC50 aXRsZS5mb250LnNpemUsZHQ9dC5zZWxlY3QoIi4iK0EuY2JheGlzKSxtdD0wLGd0PTA7ZnVu Y3Rpb24gdnQobixpKXt2YXIgYT17cHJvcENvbnRhaW5lcjppdCxwcm9wTmFtZTplLl9wcm9w UHJlZml4KyJ0aXRsZSIsdHJhY2VJbmRleDplLl90cmFjZUluZGV4LF9tZXRhOmUuX21ldGEs cGxhY2Vob2xkZXI6RC5fZGZsdFRpdGxlLmNvbG9yYmFyLGNvbnRhaW5lckdyb3VwOnQuc2Vs ZWN0KCIuIitBLmNidGl0bGUpfSxvPSJoIj09PW4uY2hhckF0KDApP24uc3Vic3RyKDEpOiJo IituO3Quc2VsZWN0QWxsKCIuIitvKyIsLiIrbysiLW1hdGgtZ3JvdXAiKS5yZW1vdmUoKSxt LmRyYXcocixuLGYoYSxpfHx7fSkpfXJldHVybiBjLnN5bmNPckFzeW5jKFthLnByZXZpb3Vz UHJvbWlzZXMsZnVuY3Rpb24oKXt2YXIgdCxlOyhvJiZhdHx8IW8mJiFhdCkmJigidG9wIj09 PWomJih0PVArUi5sK1IudypPLGU9SStSLnQrUi5oKigxLXJ0LUspKzMrLjc1KnB0KSwiYm90 dG9tIj09PWomJih0PVArUi5sK1IudypPLGU9SStSLnQrUi5oKigxLXJ0KS0zLS4yNSpwdCks InJpZ2h0Ij09PWomJihlPUkrUi50K1IuaCp6KzMrLjc1KnB0LHQ9UCtSLmwrUi53KnJ0KSx2 dChpdC5faWQrInRpdGxlIix7YXR0cmlidXRlczp7eDp0LHk6ZSwidGV4dC1hbmNob3IiOm8/ InN0YXJ0IjoibWlkZGxlIn19KSl9LGZ1bmN0aW9uKCl7aWYoIW8mJiFhdHx8byYmYXQpe3Zh ciBhLGw9dC5zZWxlY3QoIi4iK0EuY2J0aXRsZSksZj1sLnNlbGVjdCgidGV4dCIpLGg9Wy1N LzIsTS8yXSxkPWwuc2VsZWN0KCIuaCIraXQuX2lkKyJ0aXRsZS1tYXRoLWdyb3VwIikubm9k ZSgpLG09MTUuNjtpZihmLm5vZGUoKSYmKG09cGFyc2VJbnQoZi5ub2RlKCkuc3R5bGUuZm9u dFNpemUsMTApKncpLGQ/KGE9cC5iQm94KGQpLGd0PWEud2lkdGgsKG10PWEuaGVpZ2h0KT5t JiYoaFsxXS09KG10LW0pLzIpKTpmLm5vZGUoKSYmIWYuY2xhc3NlZChBLmpzUGxhY2Vob2xk ZXIpJiYoYT1wLmJCb3goZi5ub2RlKCkpLGd0PWEud2lkdGgsbXQ9YS5oZWlnaHQpLG8pe2lm KG10KXtpZihtdCs9NSwidG9wIj09PWopaXQuZG9tYWluWzFdLT1tdC9SLmgsaFsxXSo9LTE7 ZWxzZXtpdC5kb21haW5bMF0rPW10L1IuaDt2YXIgdj1nLmxpbmVDb3VudChmKTtoWzFdKz0o MS12KSptfWwuYXR0cigidHJhbnNmb3JtIix1KGhbMF0saFsxXSkpLGl0LnNldFNjYWxlKCl9 fWVsc2UgZ3QmJigicmlnaHQiPT09aiYmKGl0LmRvbWFpblswXSs9KGd0K3B0LzIpL1Iudyks bC5hdHRyKCJ0cmFuc2Zvcm0iLHUoaFswXSxoWzFdKSksaXQuc2V0U2NhbGUoKSl9dC5zZWxl Y3RBbGwoIi4iK0EuY2JmaWxscysiLC4iK0EuY2JsaW5lcykuYXR0cigidHJhbnNmb3JtIixv P3UoMCxNYXRoLnJvdW5kKFIuaCooMS1pdC5kb21haW5bMV0pKSk6dShNYXRoLnJvdW5kKFIu dyppdC5kb21haW5bMF0pLDApKSxkdC5hdHRyKCJ0cmFuc2Zvcm0iLG8/dSgwLE1hdGgucm91 bmQoLVIudCkpOnUoTWF0aC5yb3VuZCgtUi5sKSwwKSk7dmFyIHk9dC5zZWxlY3QoIi4iK0Eu Y2JmaWxscykuc2VsZWN0QWxsKCJyZWN0LiIrQS5jYmZpbGwpLmF0dHIoInN0eWxlIiwiIiku ZGF0YShZKTt5LmVudGVyKCkuYXBwZW5kKCJyZWN0IikuY2xhc3NlZChBLmNiZmlsbCwhMCku c3R5bGUoInN0cm9rZSIsIm5vbmUiKSx5LmV4aXQoKS5yZW1vdmUoKTt2YXIgeD1VLm1hcChp dC5jMnApLm1hcChNYXRoLnJvdW5kKS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9 KSk7eS5lYWNoKChmdW5jdGlvbih0LGEpe3ZhciBzPVswPT09YT9VWzBdOihZW2FdK1lbYS0x XSkvMixhPT09WS5sZW5ndGgtMT9VWzFdOihZW2FdK1lbYSsxXSkvMl0ubWFwKGl0LmMycCku bWFwKE1hdGgucm91bmQpO28mJihzWzFdPWMuY29uc3RyYWluKHNbMV0rKHNbMV0+c1swXSk/ MTotMSx4WzBdLHhbMV0pKTt2YXIgbD1uLnNlbGVjdCh0aGlzKS5hdHRyKG8/IngiOiJ5IixR KS5hdHRyKG8/InkiOiJ4IixuLm1pbihzKSkuYXR0cihvPyJ3aWR0aCI6ImhlaWdodCIsTWF0 aC5tYXgoWCwyKSkuYXR0cihvPyJoZWlnaHQiOiJ3aWR0aCIsTWF0aC5tYXgobi5tYXgocykt bi5taW4ocyksMikpO2lmKGUuX2ZpbGxncmFkaWVudClwLmdyYWRpZW50KGwscixlLl9pZCxv PyJ2ZXJ0aWNhbCI6Imhvcml6b250YWxyZXZlcnNlZCIsZS5fZmlsbGdyYWRpZW50LCJmaWxs Iik7ZWxzZXt2YXIgdT1IKHQpLnJlcGxhY2UoImUtIiwiIik7bC5hdHRyKCJmaWxsIixpKHUp LnRvSGV4U3RyaW5nKCkpfX0pKTt2YXIgYj10LnNlbGVjdCgiLiIrQS5jYmxpbmVzKS5zZWxl Y3RBbGwoInBhdGguIitBLmNibGluZSkuZGF0YShCLmNvbG9yJiZCLndpZHRoP1c6W10pO2Iu ZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKEEuY2JsaW5lLCEwKSxiLmV4aXQoKS5y ZW1vdmUoKSxiLmVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPVEscj1NYXRoLnJvdW5kKGl0LmMy cCh0KSkrQi53aWR0aC8yJTE7bi5zZWxlY3QodGhpcykuYXR0cigiZCIsIk0iKyhvP2UrIiwi K3I6cisiLCIrZSkrKG8/ImgiOiJ2IikrWCkuY2FsbChwLmxpbmVHcm91cFN0eWxlLEIud2lk dGgsVih0KSxCLmRhc2gpfSkpLGR0LnNlbGVjdEFsbCgiZy4iK2l0Ll9pZCsidGljayxwYXRo IikucmVtb3ZlKCk7dmFyIF89UStYKyhNfHwwKS8yLSgib3V0c2lkZSI9PT1lLnRpY2tzPzE6 MCksVD1zLmNhbGNUaWNrcyhpdCksaz1zLmdldFRpY2tTaWducyhpdClbMl07cmV0dXJuIHMu ZHJhd1RpY2tzKHIsaXQse3ZhbHM6Imluc2lkZSI9PT1pdC50aWNrcz9zLmNsaXBFbmRzKGl0 LFQpOlQsbGF5ZXI6ZHQscGF0aDpzLm1ha2VUaWNrUGF0aChpdCxfLGspLHRyYW5zRm46cy5t YWtlVHJhbnNUaWNrRm4oaXQpfSkscy5kcmF3TGFiZWxzKHIsaXQse3ZhbHM6VCxsYXllcjpk dCx0cmFuc0ZuOnMubWFrZVRyYW5zVGlja0xhYmVsRm4oaXQpLGxhYmVsRm5zOnMubWFrZUxh YmVsRm5zKGl0LF8pfSl9LGZ1bmN0aW9uKCl7aWYobyYmIWF0fHwhbyYmYXQpe3ZhciB0LGks YT1pdC5wb3NpdGlvbnx8MCxzPWl0Ll9vZmZzZXQraXQuX2xlbmd0aC8yO2lmKCJyaWdodCI9 PT1qKWk9cyx0PVIubCtSLncqYSsxMCtwdCooaXQuc2hvd3RpY2tsYWJlbHM/MTouNSk7ZWxz ZSBpZih0PXMsImJvdHRvbSI9PT1qJiYoaT1SLnQrUi5oKmErMTArKC0xPT09aHQuaW5kZXhP ZigiaW5zaWRlIik/aXQudGlja2ZvbnQuc2l6ZTowKSsoImludHNpZGUiIT09aXQudGlja3Mm JmUudGlja2xlbnx8MCkpLCJ0b3AiPT09ail7dmFyIGw9Ti50ZXh0LnNwbGl0KCI8YnI+Iiku bGVuZ3RoO2k9Ui50K1IuaCphKzEwLVgtdypwdCpsfXZ0KChvPyJoIjoidiIpK2l0Ll9pZCsi dGl0bGUiLHthdm9pZDp7c2VsZWN0aW9uOm4uc2VsZWN0KHIpLnNlbGVjdEFsbCgiZy4iK2l0 Ll9pZCsidGljayIpLHNpZGU6aixvZmZzZXRUb3A6bz8wOlIudCxvZmZzZXRMZWZ0Om8/Ui5s OjAsbWF4U2hpZnQ6bz9ELndpZHRoOkQuaGVpZ2h0fSxhdHRyaWJ1dGVzOnt4OnQseTppLCJ0 ZXh0LWFuY2hvciI6Im1pZGRsZSJ9LHRyYW5zZm9ybTp7cm90YXRlOm8/LTkwOjAsb2Zmc2V0 OjB9fSl9fSxhLnByZXZpb3VzUHJvbWlzZXMsZnVuY3Rpb24oKXt2YXIgbixzPVgrTS8yOy0x PT09aHQuaW5kZXhPZigiaW5zaWRlIikmJihuPXAuYkJveChkdC5ub2RlKCkpLHMrPW8/bi53 aWR0aDpuLmhlaWdodCksdXQ9ZnQuc2VsZWN0KCJ0ZXh0Iik7dmFyIGM9MCxmPW8mJiJ0b3Ai PT09aixtPSFvJiYicmlnaHQiPT09aixnPTA7aWYodXQubm9kZSgpJiYhdXQuY2xhc3NlZChB LmpzUGxhY2Vob2xkZXIpKXt2YXIgeSx4PWZ0LnNlbGVjdCgiLmgiK2l0Ll9pZCsidGl0bGUt bWF0aC1ncm91cCIpLm5vZGUoKTt4JiYobyYmYXR8fCFvJiYhYXQpPyhjPShuPXAuYkJveCh4 KSkud2lkdGgseT1uLmhlaWdodCk6KGM9KG49cC5iQm94KGZ0Lm5vZGUoKSkpLnJpZ2h0LVIu bC0obz9ROm50KSx5PW4uYm90dG9tLVIudC0obz9udDpRKSxvfHwidG9wIiE9PWp8fChzKz1u LmhlaWdodCxnPW4uaGVpZ2h0KSksbSYmKHV0LmF0dHIoInRyYW5zZm9ybSIsdShjLzIrcHQv MiwwKSksYyo9Mikscz1NYXRoLm1heChzLG8/Yzp5KX12YXIgYj0yKihvP1A6SSkrcytTK00v Mix3PTA7IW8mJk4udGV4dCYmImJvdHRvbSI9PT1DJiZ6PD0wJiYoYis9dz1iLzIsZys9dyks RC5faENvbG9yYmFyTW92ZVRpdGxlPXcsRC5faENvbG9yYmFyTW92ZUNCVGl0bGU9Zzt2YXIg Rj1TK007dC5zZWxlY3QoIi4iK0EuY2JiZykuYXR0cigieCIsKG8/UTpudCktRi8yLShvP1A6 MCkpLmF0dHIoInkiLChvP250OlEpLShvP0o6SStnLXcpKS5hdHRyKG8/IndpZHRoIjoiaGVp Z2h0IixNYXRoLm1heChiLXcsMikpLmF0dHIobz8iaGVpZ2h0Ijoid2lkdGgiLE1hdGgubWF4 KEorRiwyKSkuY2FsbChkLmZpbGwsRSkuY2FsbChkLnN0cm9rZSxlLmJvcmRlcmNvbG9yKS5z dHlsZSgic3Ryb2tlLXdpZHRoIixTKTt2YXIgQj1tP01hdGgubWF4KGMtMTAsMCk6MDtpZih0 LnNlbGVjdEFsbCgiLiIrQS5jYm91dGxpbmUpLmF0dHIoIngiLChvP1E6bnQrUCkrQikuYXR0 cigieSIsKG8/bnQrSS1KOlEpKyhmP210OjApKS5hdHRyKG8/IndpZHRoIjoiaGVpZ2h0IixN YXRoLm1heChYLDIpKS5hdHRyKG8/ImhlaWdodCI6IndpZHRoIixNYXRoLm1heChKLShvPzIq SSttdDoyKlArQiksMikpLmNhbGwoZC5zdHJva2UsZS5vdXRsaW5lY29sb3IpLnN0eWxlKHtm aWxsOiJub25lIiwic3Ryb2tlLXdpZHRoIjpNfSksdC5hdHRyKCJ0cmFuc2Zvcm0iLHUoUi5s LShvPyQqYjowKSxSLnQtKG8/MDooMS10dCkqYi1nKSkpLCFvJiYoU3x8aShFKS5nZXRBbHBo YSgpJiYhaS5lcXVhbHMoRC5wYXBlcl9iZ2NvbG9yLEUpKSl7dmFyIFU9ZHQuc2VsZWN0QWxs KCJ0ZXh0IiksVj1VWzBdLmxlbmd0aCxIPXQuc2VsZWN0KCIuIitBLmNiYmcpLm5vZGUoKSxx PXAuYkJveChIKSxHPXAuZ2V0VHJhbnNsYXRlKHQpO1UuZWFjaCgoZnVuY3Rpb24odCxlKXt2 YXIgcj1WLTE7aWYoMD09PWV8fGU9PT1yKXt2YXIgbixpPXAuYkJveCh0aGlzKSxhPXAuZ2V0 VHJhbnNsYXRlKHRoaXMpO2lmKGU9PT1yKXt2YXIgbz1pLnJpZ2h0K2EueDsobj1xLnJpZ2h0 K0cueCtudC1TLTIrTy1vKT4wJiYobj0wKX1lbHNlIGlmKDA9PT1lKXt2YXIgcz1pLmxlZnQr YS54OyhuPXEubGVmdCtHLngrbnQrUysyLXMpPDAmJihuPTApfW4mJihWPDM/dGhpcy5zZXRB dHRyaWJ1dGUoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK24rIiwwKSAiK3RoaXMuZ2V0QXR0 cmlidXRlKCJ0cmFuc2Zvcm0iKSk6dGhpcy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJo aWRkZW4iKSl9fSkpfXZhciBZPXt9LFc9VFtMXSxaPWtbTF0sSz1UW0NdLGV0PWtbQ10scnQ9 Yi1YO28/KCJwaXhlbHMiPT09aD8oWS55PXosWS50PUoqSyxZLmI9SipldCk6KFkudD1ZLmI9 MCxZLnl0PXorbCpLLFkueWI9ei1sKmV0KSwicGl4ZWxzIj09PV8/KFkueD1PLFkubD1iKlcs WS5yPWIqWik6KFkubD1ydCpXLFkucj1ydCpaLFkueGw9Ty12KlcsWS54cj1PK3YqWikpOigi cGl4ZWxzIj09PWg/KFkueD1PLFkubD1KKlcsWS5yPUoqWik6KFkubD1ZLnI9MCxZLnhsPU8r bCpXLFkueHI9Ty1sKlopLCJwaXhlbHMiPT09Xz8oWS55PTEteixZLnQ9YipLLFkuYj1iKmV0 KTooWS50PXJ0KkssWS5iPXJ0KmV0LFkueXQ9ei12KkssWS55Yj16K3YqZXQpKSxhLmF1dG9N YXJnaW4ocixlLl9pZCxZKX1dLHIpfShyLGUsdCk7diYmdi50aGVuJiYodC5fcHJvbWlzZXN8 fFtdKS5wdXNoKHYpLHQuX2NvbnRleHQuZWRpdHMuY29sb3JiYXJQb3NpdGlvbiYmZnVuY3Rp b24odCxlLHIpe3ZhciBuLGksYSxzPSJ2Ij09PWUub3JpZW50YXRpb24sYz1yLl9mdWxsTGF5 b3V0Ll9zaXplO2wuaW5pdCh7ZWxlbWVudDp0Lm5vZGUoKSxnZDpyLHByZXBGbjpmdW5jdGlv bigpe249dC5hdHRyKCJ0cmFuc2Zvcm0iKSxoKHQpfSxtb3ZlRm46ZnVuY3Rpb24ocixvKXt0 LmF0dHIoInRyYW5zZm9ybSIsbit1KHIsbykpLGk9bC5hbGlnbigocz9lLl91RnJhYzplLl92 RnJhYykrci9jLncscz9lLl90aGlja0ZyYWM6ZS5fbGVuRnJhYywwLDEsZS54YW5jaG9yKSxh PWwuYWxpZ24oKHM/ZS5fdkZyYWM6MS1lLl91RnJhYyktby9jLmgscz9lLl9sZW5GcmFjOmUu X3RoaWNrRnJhYywwLDEsZS55YW5jaG9yKTt2YXIgZj1sLmdldEN1cnNvcihpLGEsZS54YW5j aG9yLGUueWFuY2hvcik7aCh0LGYpfSxkb25lRm46ZnVuY3Rpb24oKXtpZihoKHQpLHZvaWQg MCE9PWkmJnZvaWQgMCE9PWEpe3ZhciBuPXt9O25bZS5fcHJvcFByZWZpeCsieCJdPWksbltl Ll9wcm9wUHJlZml4KyJ5Il09YSx2b2lkIDAhPT1lLl90cmFjZUluZGV4P28uY2FsbCgiX2d1 aVJlc3R5bGUiLHIsbixlLl90cmFjZUluZGV4KTpvLmNhbGwoIl9ndWlSZWxheW91dCIscixu KX19fSl9KHIsZSx0KX0pKSxlLmV4aXQoKS5lYWNoKChmdW5jdGlvbihlKXthLmF1dG9NYXJn aW4odCxlLl9pZCl9KSkucmVtb3ZlKCksZS5vcmRlcigpfX19LHsiLi4vLi4vY29uc3RhbnRz L2FsaWdubWVudCI6NDcxLCIuLi8uLi9saWIiOjUwMywiLi4vLi4vbGliL2V4dGVuZCI6NDkz LCIuLi8uLi9saWIvc2V0Y3Vyc29yIjo1MjQsIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyI6 NTI5LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NTU0LCIuLi8uLi9wbG90cy9jYXJ0 ZXNpYW4vYXhpc19kZWZhdWx0cyI6NTU2LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vbGF5b3V0 X2F0dHJpYnV0ZXMiOjU2OSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL3Bvc2l0aW9uX2RlZmF1 bHRzIjo1NzIsIi4uLy4uL3Bsb3RzL3Bsb3RzIjo2MTksIi4uLy4uL3JlZ2lzdHJ5Ijo2Mzgs Ii4uL2NvbG9yIjozNjYsIi4uL2NvbG9yc2NhbGUvaGVscGVycyI6Mzc3LCIuLi9kcmFnZWxl bWVudCI6Mzg1LCIuLi9kcmF3aW5nIjozODgsIi4uL3RpdGxlcyI6NDY0LCIuL2NvbnN0YW50 cyI6MzY4LCJAcGxvdGx5L2QzIjo1OCx0aW55Y29sb3IyOjMxMn1dLDM3MTpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKTtlLmV4cG9ydHM9ZnVu Y3Rpb24odCl7cmV0dXJuIG4uaXNQbGFpbk9iamVjdCh0LmNvbG9yYmFyKX19LHsiLi4vLi4v bGliIjo1MDN9XSwzNzI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRz PXttb2R1bGVUeXBlOiJjb21wb25lbnQiLG5hbWU6ImNvbG9yYmFyIixhdHRyaWJ1dGVzOnQo Ii4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxkcmF3OnQo Ii4vZHJhdyIpLmRyYXcsaGFzQ29sb3JiYXI6dCgiLi9oYXNfY29sb3JiYXIiKX19LHsiLi9h dHRyaWJ1dGVzIjozNjcsIi4vZGVmYXVsdHMiOjM2OSwiLi9kcmF3IjozNzAsIi4vaGFzX2Nv bG9yYmFyIjozNzF9XSwzNzM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiLi4vY29sb3JiYXIvYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vbGliL3JlZ2V4IikuY291 bnRlcixhPXQoIi4uLy4uL2xpYi9zb3J0X29iamVjdF9rZXlzIiksbz10KCIuL3NjYWxlcy5q cyIpLnNjYWxlczthKG8pO2Z1bmN0aW9uIHModCl7cmV0dXJuImAiK3QrImAifWUuZXhwb3J0 cz1mdW5jdGlvbih0LGUpe3Q9dHx8IiI7dmFyIHIsYT0oZT1lfHx7fSkuY0xldHRlcnx8ImMi LGw9KCJvbmx5SWZOdW1lcmljYWwiaW4gZT9lLm9ubHlJZk51bWVyaWNhbDpCb29sZWFuKHQp LCJub1NjYWxlImluIGU/ZS5ub1NjYWxlOiJtYXJrZXIubGluZSI9PT10KSxjPSJzaG93U2Nh bGVEZmx0ImluIGU/ZS5zaG93U2NhbGVEZmx0OiJ6Ij09PWEsdT0ic3RyaW5nIj09dHlwZW9m IGUuY29sb3JzY2FsZURmbHQ/b1tlLmNvbG9yc2NhbGVEZmx0XTpudWxsLGY9ZS5lZGl0VHlw ZU92ZXJyaWRlfHwiIixoPXQ/dCsiLiI6IiI7ImNvbG9yQXR0ciJpbiBlPyhyPWUuY29sb3JB dHRyLGUuY29sb3JBdHRyKTpzKGgrKHI9e3o6InoiLGM6ImNvbG9yIn1bYV0pKTt2YXIgcD1h KyJhdXRvIixkPWErIm1pbiIsbT1hKyJtYXgiLGc9YSsibWlkIix2PShzKGgrcCkscyhoK2Qp LHMoaCttKSx7fSk7dltkXT12W21dPXZvaWQgMDt2YXIgeT17fTt5W3BdPSExO3ZhciB4PXt9 O3JldHVybiJjb2xvciI9PT1yJiYoeC5jb2xvcj17dmFsVHlwZToiY29sb3IiLGFycmF5T2s6 ITAsZWRpdFR5cGU6Znx8InN0eWxlIn0sZS5hbmltJiYoeC5jb2xvci5hbmltPSEwKSkseFtw XT17dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToiY2FsYyIsaW1wbGllZEVk aXRzOnZ9LHhbZF09e3ZhbFR5cGU6Im51bWJlciIsZGZsdDpudWxsLGVkaXRUeXBlOmZ8fCJw bG90IixpbXBsaWVkRWRpdHM6eX0seFttXT17dmFsVHlwZToibnVtYmVyIixkZmx0Om51bGws ZWRpdFR5cGU6Znx8InBsb3QiLGltcGxpZWRFZGl0czp5fSx4W2ddPXt2YWxUeXBlOiJudW1i ZXIiLGRmbHQ6bnVsbCxlZGl0VHlwZToiY2FsYyIsaW1wbGllZEVkaXRzOnZ9LHguY29sb3Jz Y2FsZT17dmFsVHlwZToiY29sb3JzY2FsZSIsZWRpdFR5cGU6ImNhbGMiLGRmbHQ6dSxpbXBs aWVkRWRpdHM6e2F1dG9jb2xvcnNjYWxlOiExfX0seC5hdXRvY29sb3JzY2FsZT17dmFsVHlw ZToiYm9vbGVhbiIsZGZsdDohMSE9PWUuYXV0b0NvbG9yRGZsdCxlZGl0VHlwZToiY2FsYyIs aW1wbGllZEVkaXRzOntjb2xvcnNjYWxlOnZvaWQgMH19LHgucmV2ZXJzZXNjYWxlPXt2YWxU eXBlOiJib29sZWFuIixkZmx0OiExLGVkaXRUeXBlOiJwbG90In0sbHx8KHguc2hvd3NjYWxl PXt2YWxUeXBlOiJib29sZWFuIixkZmx0OmMsZWRpdFR5cGU6ImNhbGMifSx4LmNvbG9yYmFy PW4pLGUubm9Db2xvckF4aXN8fCh4LmNvbG9yYXhpcz17dmFsVHlwZToic3VicGxvdGlkIixy ZWdleDppKCJjb2xvcmF4aXMiKSxkZmx0Om51bGwsZWRpdFR5cGU6ImNhbGMifSkseH19LHsi Li4vLi4vbGliL3JlZ2V4Ijo1MjAsIi4uLy4uL2xpYi9zb3J0X29iamVjdF9rZXlzIjo1MjYs Ii4uL2NvbG9yYmFyL2F0dHJpYnV0ZXMiOjM2NywiLi9zY2FsZXMuanMiOjM4MX1dLDM3NDpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIp LGk9dCgiLi4vLi4vbGliIiksYT10KCIuL2hlbHBlcnMiKS5leHRyYWN0T3B0cztlLmV4cG9y dHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBvLHM9dC5fZnVsbExheW91dCxsPXIudmFscyxjPXIu Y29udGFpbmVyU3RyLHU9Yz9pLm5lc3RlZFByb3BlcnR5KGUsYykuZ2V0KCk6ZSxmPWEodSks aD0hMSE9PWYuYXV0byxwPWYubWluLGQ9Zi5tYXgsbT1mLm1pZCxnPWZ1bmN0aW9uKCl7cmV0 dXJuIGkuYWdnTnVtcyhNYXRoLm1pbixudWxsLGwpfSx2PWZ1bmN0aW9uKCl7cmV0dXJuIGku YWdnTnVtcyhNYXRoLm1heCxudWxsLGwpfTsodm9pZCAwPT09cD9wPWcoKTpoJiYocD11Ll9j b2xvckF4JiZuKHApP01hdGgubWluKHAsZygpKTpnKCkpLHZvaWQgMD09PWQ/ZD12KCk6aCYm KGQ9dS5fY29sb3JBeCYmbihkKT9NYXRoLm1heChkLHYoKSk6digpKSxoJiZ2b2lkIDAhPT1t JiYoZC1tPm0tcD9wPW0tKGQtbSk6ZC1tPG0tcCYmKGQ9bSsobS1wKSkpLHA9PT1kJiYocC09 LjUsZCs9LjUpLGYuX3N5bmMoIm1pbiIscCksZi5fc3luYygibWF4IixkKSxmLmF1dG9jb2xv cnNjYWxlKSYmKG89cCpkPDA/cy5jb2xvcnNjYWxlLmRpdmVyZ2luZzpwPj0wP3MuY29sb3Jz Y2FsZS5zZXF1ZW50aWFsOnMuY29sb3JzY2FsZS5zZXF1ZW50aWFsbWludXMsZi5fc3luYygi Y29sb3JzY2FsZSIsbykpfX0seyIuLi8uLi9saWIiOjUwMywiLi9oZWxwZXJzIjozNzcsImZh c3QtaXNudW1lcmljIjoxOTB9XSwzNzU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuL2hlbHBlcnMiKS5oYXNDb2xvcnNjYWxlLGE9 dCgiLi9oZWxwZXJzIikuZXh0cmFjdE9wdHM7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZnVu Y3Rpb24gcih0LGUpe3ZhciByPXRbIl8iK2VdO3ZvaWQgMCE9PXImJih0W2VdPXIpfWZ1bmN0 aW9uIG8odCxpKXt2YXIgbz1pLmNvbnRhaW5lcj9uLm5lc3RlZFByb3BlcnR5KHQsaS5jb250 YWluZXIpLmdldCgpOnQ7aWYobylpZihvLmNvbG9yYXhpcylvLl9jb2xvckF4PWVbby5jb2xv cmF4aXNdO2Vsc2V7dmFyIHM9YShvKSxsPXMuYXV0bzsobHx8dm9pZCAwPT09cy5taW4pJiZy KG8saS5taW4pLChsfHx2b2lkIDA9PT1zLm1heCkmJnIobyxpLm1heCkscy5hdXRvY29sb3Jz Y2FsZSYmcihvLCJjb2xvcnNjYWxlIil9fWZvcih2YXIgcz0wO3M8dC5sZW5ndGg7cysrKXt2 YXIgbD10W3NdLGM9bC5fbW9kdWxlLmNvbG9yYmFyO2lmKGMpaWYoQXJyYXkuaXNBcnJheShj KSlmb3IodmFyIHU9MDt1PGMubGVuZ3RoO3UrKylvKGwsY1t1XSk7ZWxzZSBvKGwsYyk7aShs LCJtYXJrZXIubGluZSIpJiZvKGwse2NvbnRhaW5lcjoibWFya2VyLmxpbmUiLG1pbjoiY21p biIsbWF4OiJjbWF4In0pfWZvcih2YXIgZiBpbiBlLl9jb2xvckF4ZXMpbyhlW2ZdLHttaW46 ImNtaW4iLG1heDoiY21heCJ9KX19LHsiLi4vLi4vbGliIjo1MDMsIi4vaGVscGVycyI6Mzc3 fV0sMzc2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNu dW1lcmljIiksaT10KCIuLi8uLi9saWIiKSxhPXQoIi4uL2NvbG9yYmFyL2hhc19jb2xvcmJh ciIpLG89dCgiLi4vY29sb3JiYXIvZGVmYXVsdHMiKSxzPXQoIi4vc2NhbGVzIikuaXNWYWxp ZCxsPXQoIi4uLy4uL3JlZ2lzdHJ5IikudHJhY2VJcztmdW5jdGlvbiBjKHQsZSl7dmFyIHI9 ZS5zbGljZSgwLGUubGVuZ3RoLTEpO3JldHVybiBlP2kubmVzdGVkUHJvcGVydHkodCxyKS5n ZXQoKXx8e306dH1lLmV4cG9ydHM9ZnVuY3Rpb24gdChlLHIsdSxmLGgpe3ZhciBwPWgucHJl Zml4LGQ9aC5jTGV0dGVyLG09Il9tb2R1bGUiaW4gcixnPWMoZSxwKSx2PWMocixwKSx5PWMo ci5fdGVtcGxhdGV8fHt9LHApfHx7fSx4PWZ1bmN0aW9uKCl7cmV0dXJuIGRlbGV0ZSBlLmNv bG9yYXhpcyxkZWxldGUgci5jb2xvcmF4aXMsdChlLHIsdSxmLGgpfTtpZihtKXt2YXIgYj11 Ll9jb2xvckF4ZXN8fHt9LF89ZihwKyJjb2xvcmF4aXMiKTtpZihfKXt2YXIgdz1sKHIsImNv bnRvdXIiKSYmaS5uZXN0ZWRQcm9wZXJ0eShyLCJjb250b3Vycy5jb2xvcmluZyIpLmdldCgp fHwiaGVhdG1hcCIsVD1iW19dO3JldHVybiB2b2lkKFQ/KFRbMl0ucHVzaCh4KSxUWzBdIT09 dyYmKFRbMF09ITEsaS53YXJuKFsiSWdub3JpbmcgY29sb3JheGlzOiIsXywic2V0dGluZyIs ImFzIGl0IGlzIGxpbmtlZCB0byBpbmNvbXBhdGlibGUgY29sb3JzY2FsZXMuIl0uam9pbigi ICIpKSkpOmJbX109W3cscixbeF1dKX19dmFyIGs9Z1tkKyJtaW4iXSxBPWdbZCsibWF4Il0s TT1uKGspJiZuKEEpJiZrPEE7ZihwK2QrImF1dG8iLCFNKT9mKHArZCsibWlkIik6KGYocCtk KyJtaW4iKSxmKHArZCsibWF4IikpO3ZhciBTLEUsTD1nLmNvbG9yc2NhbGUsQz15LmNvbG9y c2NhbGU7KHZvaWQgMCE9PUwmJihTPSFzKEwpKSx2b2lkIDAhPT1DJiYoUz0hcyhDKSksZihw KyJhdXRvY29sb3JzY2FsZSIsUyksZihwKyJjb2xvcnNjYWxlIiksZihwKyJyZXZlcnNlc2Nh bGUiKSwibWFya2VyLmxpbmUuIiE9PXApJiYocCYmbSYmKEU9YShnKSksZihwKyJzaG93c2Nh bGUiLEUpJiYocCYmeSYmKHYuX3RlbXBsYXRlPXkpLG8oZyx2LHUpKSl9fSx7Ii4uLy4uL2xp YiI6NTAzLCIuLi8uLi9yZWdpc3RyeSI6NjM4LCIuLi9jb2xvcmJhci9kZWZhdWx0cyI6MzY5 LCIuLi9jb2xvcmJhci9oYXNfY29sb3JiYXIiOjM3MSwiLi9zY2FsZXMiOjM4MSwiZmFzdC1p c251bWVyaWMiOjE5MH1dLDM3NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCJAcGxvdGx5L2QzIiksaT10KCJ0aW55Y29sb3IyIiksYT10KCJmYXN0LWlzbnVtZXJp YyIpLG89dCgiLi4vLi4vbGliIikscz10KCIuLi9jb2xvciIpLGw9dCgiLi9zY2FsZXMiKS5p c1ZhbGlkO3ZhciBjPVsic2hvd3NjYWxlIiwiYXV0b2NvbG9yc2NhbGUiLCJjb2xvcnNjYWxl IiwicmV2ZXJzZXNjYWxlIiwiY29sb3JiYXIiXSx1PVsibWluIiwibWF4IiwibWlkIiwiYXV0 byJdO2Z1bmN0aW9uIGYodCl7dmFyIGUscixuLGk9dC5fY29sb3JBeCxhPWl8fHQsbz17fTtm b3Iocj0wO3I8Yy5sZW5ndGg7cisrKW9bbj1jW3JdXT1hW25dO2lmKGkpZm9yKGU9ImMiLHI9 MDtyPHUubGVuZ3RoO3IrKylvW249dVtyXV09YVsiYyIrbl07ZWxzZXt2YXIgcztmb3Iocj0w O3I8dS5sZW5ndGg7cisrKSgocz0iYyIrKG49dVtyXSkpaW4gYXx8KHM9InoiK24paW4gYSkm JihvW25dPWFbc10pO2U9cy5jaGFyQXQoMCl9cmV0dXJuIG8uX3N5bmM9ZnVuY3Rpb24odCxy KXt2YXIgbj0tMSE9PXUuaW5kZXhPZih0KT9lK3Q6dDthW25dPWFbIl8iK25dPXJ9LG99ZnVu Y3Rpb24gaCh0KXtmb3IodmFyIGU9Zih0KSxyPWUubWluLG49ZS5tYXgsaT1lLnJldmVyc2Vz Y2FsZT9wKGUuY29sb3JzY2FsZSk6ZS5jb2xvcnNjYWxlLGE9aS5sZW5ndGgsbz1uZXcgQXJy YXkoYSkscz1uZXcgQXJyYXkoYSksbD0wO2w8YTtsKyspe3ZhciBjPWlbbF07b1tsXT1yK2Nb MF0qKG4tciksc1tsXT1jWzFdfXJldHVybntkb21haW46byxyYW5nZTpzfX1mdW5jdGlvbiBw KHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxyPW5ldyBBcnJheShlKSxuPWUtMSxpPTA7bj49MDtu LS0saSsrKXt2YXIgYT10W25dO3JbaV09WzEtYVswXSxhWzFdXX1yZXR1cm4gcn1mdW5jdGlv biBkKHQsZSl7ZT1lfHx7fTtmb3IodmFyIHI9dC5kb21haW4sbz10LnJhbmdlLGw9by5sZW5n dGgsYz1uZXcgQXJyYXkobCksdT0wO3U8bDt1Kyspe3ZhciBmPWkob1t1XSkudG9SZ2IoKTtj W3VdPVtmLnIsZi5nLGYuYixmLmFdfXZhciBoLHA9bi5zY2FsZS5saW5lYXIoKS5kb21haW4o cikucmFuZ2UoYykuY2xhbXAoITApLGQ9ZS5ub051bWVyaWNDaGVjayxnPWUucmV0dXJuQXJy YXk7cmV0dXJuKGg9ZCYmZz9wOmQ/ZnVuY3Rpb24odCl7cmV0dXJuIG0ocCh0KSl9Omc/ZnVu Y3Rpb24odCl7cmV0dXJuIGEodCk/cCh0KTppKHQpLmlzVmFsaWQoKT90OnMuZGVmYXVsdExp bmV9OmZ1bmN0aW9uKHQpe3JldHVybiBhKHQpP20ocCh0KSk6aSh0KS5pc1ZhbGlkKCk/dDpz LmRlZmF1bHRMaW5lfSkuZG9tYWluPXAuZG9tYWluLGgucmFuZ2U9ZnVuY3Rpb24oKXtyZXR1 cm4gb30saH1mdW5jdGlvbiBtKHQpe3ZhciBlPXtyOnRbMF0sZzp0WzFdLGI6dFsyXSxhOnRb M119O3JldHVybiBpKGUpLnRvUmdiU3RyaW5nKCl9ZS5leHBvcnRzPXtoYXNDb2xvcnNjYWxl OmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lP28ubmVzdGVkUHJvcGVydHkodCxlKS5nZXQoKXx8 e306dCxpPW5bcnx8ImNvbG9yIl0scz0hMTtpZihvLmlzQXJyYXlPclR5cGVkQXJyYXkoaSkp Zm9yKHZhciBjPTA7YzxpLmxlbmd0aDtjKyspaWYoYShpW2NdKSl7cz0hMDticmVha31yZXR1 cm4gby5pc1BsYWluT2JqZWN0KG4pJiYoc3x8ITA9PT1uLnNob3dzY2FsZXx8YShuLmNtaW4p JiZhKG4uY21heCl8fGwobi5jb2xvcnNjYWxlKXx8by5pc1BsYWluT2JqZWN0KG4uY29sb3Ji YXIpKX0sZXh0cmFjdE9wdHM6ZixleHRyYWN0U2NhbGU6aCxmbGlwU2NhbGU6cCxtYWtlQ29s b3JTY2FsZUZ1bmM6ZCxtYWtlQ29sb3JTY2FsZUZ1bmNGcm9tVHJhY2U6ZnVuY3Rpb24odCxl KXtyZXR1cm4gZChoKHQpLGUpfX19LHsiLi4vLi4vbGliIjo1MDMsIi4uL2NvbG9yIjozNjYs Ii4vc2NhbGVzIjozODEsIkBwbG90bHkvZDMiOjU4LCJmYXN0LWlzbnVtZXJpYyI6MTkwLHRp bnljb2xvcjI6MzEyfV0sMzc4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4vc2NhbGVzIiksaT10KCIuL2hlbHBlcnMiKTtlLmV4cG9ydHM9e21vZHVsZVR5cGU6 ImNvbXBvbmVudCIsbmFtZToiY29sb3JzY2FsZSIsYXR0cmlidXRlczp0KCIuL2F0dHJpYnV0 ZXMiKSxsYXlvdXRBdHRyaWJ1dGVzOnQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxzdXBwbHlM YXlvdXREZWZhdWx0czp0KCIuL2xheW91dF9kZWZhdWx0cyIpLGhhbmRsZURlZmF1bHRzOnQo Ii4vZGVmYXVsdHMiKSxjcm9zc1RyYWNlRGVmYXVsdHM6dCgiLi9jcm9zc190cmFjZV9kZWZh dWx0cyIpLGNhbGM6dCgiLi9jYWxjIiksc2NhbGVzOm4uc2NhbGVzLGRlZmF1bHRTY2FsZTpu LmRlZmF1bHRTY2FsZSxnZXRTY2FsZTpuLmdldCxpc1ZhbGlkU2NhbGU6bi5pc1ZhbGlkLGhh c0NvbG9yc2NhbGU6aS5oYXNDb2xvcnNjYWxlLGV4dHJhY3RPcHRzOmkuZXh0cmFjdE9wdHMs ZXh0cmFjdFNjYWxlOmkuZXh0cmFjdFNjYWxlLGZsaXBTY2FsZTppLmZsaXBTY2FsZSxtYWtl Q29sb3JTY2FsZUZ1bmM6aS5tYWtlQ29sb3JTY2FsZUZ1bmMsbWFrZUNvbG9yU2NhbGVGdW5j RnJvbVRyYWNlOmkubWFrZUNvbG9yU2NhbGVGdW5jRnJvbVRyYWNlfX0seyIuL2F0dHJpYnV0 ZXMiOjM3MywiLi9jYWxjIjozNzQsIi4vY3Jvc3NfdHJhY2VfZGVmYXVsdHMiOjM3NSwiLi9k ZWZhdWx0cyI6Mzc2LCIuL2hlbHBlcnMiOjM3NywiLi9sYXlvdXRfYXR0cmlidXRlcyI6Mzc5 LCIuL2xheW91dF9kZWZhdWx0cyI6MzgwLCIuL3NjYWxlcyI6MzgxfV0sMzc5OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRl bmRGbGF0LGk9dCgiLi9hdHRyaWJ1dGVzIiksYT10KCIuL3NjYWxlcyIpLnNjYWxlcztlLmV4 cG9ydHM9e2VkaXRUeXBlOiJjYWxjIixjb2xvcnNjYWxlOntlZGl0VHlwZToiY2FsYyIsc2Vx dWVudGlhbDp7dmFsVHlwZToiY29sb3JzY2FsZSIsZGZsdDphLlJlZHMsZWRpdFR5cGU6ImNh bGMifSxzZXF1ZW50aWFsbWludXM6e3ZhbFR5cGU6ImNvbG9yc2NhbGUiLGRmbHQ6YS5CbHVl cyxlZGl0VHlwZToiY2FsYyJ9LGRpdmVyZ2luZzp7dmFsVHlwZToiY29sb3JzY2FsZSIsZGZs dDphLlJkQnUsZWRpdFR5cGU6ImNhbGMifX0sY29sb3JheGlzOm4oe19pc1N1YnBsb3RPYmo6 ITAsZWRpdFR5cGU6ImNhbGMifSxpKCIiLHtjb2xvckF0dHI6ImNvcnJlc3BvbmRpbmcgdHJh Y2UgY29sb3IgYXJyYXkocykiLG5vQ29sb3JBeGlzOiEwLHNob3dTY2FsZURmbHQ6ITB9KSl9 fSx7Ii4uLy4uL2xpYi9leHRlbmQiOjQ5MywiLi9hdHRyaWJ1dGVzIjozNzMsIi4vc2NhbGVz IjozODF9XSwzODA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4v Li4vbGliIiksaT10KCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIiksYT10KCIuL2xh eW91dF9hdHRyaWJ1dGVzIiksbz10KCIuL2RlZmF1bHRzIik7ZS5leHBvcnRzPWZ1bmN0aW9u KHQsZSl7ZnVuY3Rpb24gcihyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUsYSxyLGkpfXIoImNv bG9yc2NhbGUuc2VxdWVudGlhbCIpLHIoImNvbG9yc2NhbGUuc2VxdWVudGlhbG1pbnVzIiks cigiY29sb3JzY2FsZS5kaXZlcmdpbmciKTt2YXIgcyxsLGM9ZS5fY29sb3JBeGVzO2Z1bmN0 aW9uIHUodCxlKXtyZXR1cm4gbi5jb2VyY2UocyxsLGEuY29sb3JheGlzLHQsZSl9Zm9yKHZh ciBmIGluIGMpe3ZhciBoPWNbZl07aWYoaFswXSlzPXRbZl18fHt9LChsPWkubmV3Q29udGFp bmVyKGUsZiwiY29sb3JheGlzIikpLl9uYW1lPWYsbyhzLGwsZSx1LHtwcmVmaXg6IiIsY0xl dHRlcjoiYyJ9KTtlbHNle2Zvcih2YXIgcD0wO3A8aFsyXS5sZW5ndGg7cCsrKWhbMl1bcF0o KTtkZWxldGUgZS5fY29sb3JBeGVzW2ZdfX19fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi8uLi9w bG90X2FwaS9wbG90X3RlbXBsYXRlIjo1NDMsIi4vZGVmYXVsdHMiOjM3NiwiLi9sYXlvdXRf YXR0cmlidXRlcyI6Mzc5fV0sMzgxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoInRpbnljb2xvcjIiKSxpPXtHcmV5czpbWzAsInJnYigwLDAsMCkiXSxbMSwicmdi KDI1NSwyNTUsMjU1KSJdXSxZbEduQnU6W1swLCJyZ2IoOCwyOSw4OCkiXSxbLjEyNSwicmdi KDM3LDUyLDE0OCkiXSxbLjI1LCJyZ2IoMzQsOTQsMTY4KSJdLFsuMzc1LCJyZ2IoMjksMTQ1 LDE5MikiXSxbLjUsInJnYig2NSwxODIsMTk2KSJdLFsuNjI1LCJyZ2IoMTI3LDIwNSwxODcp Il0sWy43NSwicmdiKDE5OSwyMzMsMTgwKSJdLFsuODc1LCJyZ2IoMjM3LDI0OCwyMTcpIl0s WzEsInJnYigyNTUsMjU1LDIxNykiXV0sR3JlZW5zOltbMCwicmdiKDAsNjgsMjcpIl0sWy4x MjUsInJnYigwLDEwOSw0NCkiXSxbLjI1LCJyZ2IoMzUsMTM5LDY5KSJdLFsuMzc1LCJyZ2Io NjUsMTcxLDkzKSJdLFsuNSwicmdiKDExNiwxOTYsMTE4KSJdLFsuNjI1LCJyZ2IoMTYxLDIx NywxNTUpIl0sWy43NSwicmdiKDE5OSwyMzMsMTkyKSJdLFsuODc1LCJyZ2IoMjI5LDI0NSwy MjQpIl0sWzEsInJnYigyNDcsMjUyLDI0NSkiXV0sWWxPclJkOltbMCwicmdiKDEyOCwwLDM4 KSJdLFsuMTI1LCJyZ2IoMTg5LDAsMzgpIl0sWy4yNSwicmdiKDIyNywyNiwyOCkiXSxbLjM3 NSwicmdiKDI1Miw3OCw0MikiXSxbLjUsInJnYigyNTMsMTQxLDYwKSJdLFsuNjI1LCJyZ2Io MjU0LDE3OCw3NikiXSxbLjc1LCJyZ2IoMjU0LDIxNywxMTgpIl0sWy44NzUsInJnYigyNTUs MjM3LDE2MCkiXSxbMSwicmdiKDI1NSwyNTUsMjA0KSJdXSxCbHVlcmVkOltbMCwicmdiKDAs MCwyNTUpIl0sWzEsInJnYigyNTUsMCwwKSJdXSxSZEJ1OltbMCwicmdiKDUsMTAsMTcyKSJd LFsuMzUsInJnYigxMDYsMTM3LDI0NykiXSxbLjUsInJnYigxOTAsMTkwLDE5MCkiXSxbLjYs InJnYigyMjAsMTcwLDEzMikiXSxbLjcsInJnYigyMzAsMTQ1LDkwKSJdLFsxLCJyZ2IoMTc4 LDEwLDI4KSJdXSxSZWRzOltbMCwicmdiKDIyMCwyMjAsMjIwKSJdLFsuMiwicmdiKDI0NSwx OTUsMTU3KSJdLFsuNCwicmdiKDI0NSwxNjAsMTA1KSJdLFsxLCJyZ2IoMTc4LDEwLDI4KSJd XSxCbHVlczpbWzAsInJnYig1LDEwLDE3MikiXSxbLjM1LCJyZ2IoNDAsNjAsMTkwKSJdLFsu NSwicmdiKDcwLDEwMCwyNDUpIl0sWy42LCJyZ2IoOTAsMTIwLDI0NSkiXSxbLjcsInJnYigx MDYsMTM3LDI0NykiXSxbMSwicmdiKDIyMCwyMjAsMjIwKSJdXSxQaWNuaWM6W1swLCJyZ2Io MCwwLDI1NSkiXSxbLjEsInJnYig1MSwxNTMsMjU1KSJdLFsuMiwicmdiKDEwMiwyMDQsMjU1 KSJdLFsuMywicmdiKDE1MywyMDQsMjU1KSJdLFsuNCwicmdiKDIwNCwyMDQsMjU1KSJdLFsu NSwicmdiKDI1NSwyNTUsMjU1KSJdLFsuNiwicmdiKDI1NSwyMDQsMjU1KSJdLFsuNywicmdi KDI1NSwxNTMsMjU1KSJdLFsuOCwicmdiKDI1NSwxMDIsMjA0KSJdLFsuOSwicmdiKDI1NSwx MDIsMTAyKSJdLFsxLCJyZ2IoMjU1LDAsMCkiXV0sUmFpbmJvdzpbWzAsInJnYigxNTAsMCw5 MCkiXSxbLjEyNSwicmdiKDAsMCwyMDApIl0sWy4yNSwicmdiKDAsMjUsMjU1KSJdLFsuMzc1 LCJyZ2IoMCwxNTIsMjU1KSJdLFsuNSwicmdiKDQ0LDI1NSwxNTApIl0sWy42MjUsInJnYigx NTEsMjU1LDApIl0sWy43NSwicmdiKDI1NSwyMzQsMCkiXSxbLjg3NSwicmdiKDI1NSwxMTEs MCkiXSxbMSwicmdiKDI1NSwwLDApIl1dLFBvcnRsYW5kOltbMCwicmdiKDEyLDUxLDEzMSki XSxbLjI1LCJyZ2IoMTAsMTM2LDE4NikiXSxbLjUsInJnYigyNDIsMjExLDU2KSJdLFsuNzUs InJnYigyNDIsMTQzLDU2KSJdLFsxLCJyZ2IoMjE3LDMwLDMwKSJdXSxKZXQ6W1swLCJyZ2Io MCwwLDEzMSkiXSxbLjEyNSwicmdiKDAsNjAsMTcwKSJdLFsuMzc1LCJyZ2IoNSwyNTUsMjU1 KSJdLFsuNjI1LCJyZ2IoMjU1LDI1NSwwKSJdLFsuODc1LCJyZ2IoMjUwLDAsMCkiXSxbMSwi cmdiKDEyOCwwLDApIl1dLEhvdDpbWzAsInJnYigwLDAsMCkiXSxbLjMsInJnYigyMzAsMCww KSJdLFsuNiwicmdiKDI1NSwyMTAsMCkiXSxbMSwicmdiKDI1NSwyNTUsMjU1KSJdXSxCbGFj a2JvZHk6W1swLCJyZ2IoMCwwLDApIl0sWy4yLCJyZ2IoMjMwLDAsMCkiXSxbLjQsInJnYigy MzAsMjEwLDApIl0sWy43LCJyZ2IoMjU1LDI1NSwyNTUpIl0sWzEsInJnYigxNjAsMjAwLDI1 NSkiXV0sRWFydGg6W1swLCJyZ2IoMCwwLDEzMCkiXSxbLjEsInJnYigwLDE4MCwxODApIl0s Wy4yLCJyZ2IoNDAsMjEwLDQwKSJdLFsuNCwicmdiKDIzMCwyMzAsNTApIl0sWy42LCJyZ2Io MTIwLDcwLDIwKSJdLFsxLCJyZ2IoMjU1LDI1NSwyNTUpIl1dLEVsZWN0cmljOltbMCwicmdi KDAsMCwwKSJdLFsuMTUsInJnYigzMCwwLDEwMCkiXSxbLjQsInJnYigxMjAsMCwxMDApIl0s Wy42LCJyZ2IoMTYwLDkwLDApIl0sWy44LCJyZ2IoMjMwLDIwMCwwKSJdLFsxLCJyZ2IoMjU1 LDI1MCwyMjApIl1dLFZpcmlkaXM6W1swLCIjNDQwMTU0Il0sWy4wNjI3NDUwOTgwMzkyMTU2 OSwiIzQ4MTg2YSJdLFsuMTI1NDkwMTk2MDc4NDMxMzcsIiM0NzJkN2IiXSxbLjE4ODIzNTI5 NDExNzY0NzA2LCIjNDI0MDg2Il0sWy4yNTA5ODAzOTIxNTY4NjI3NCwiIzNiNTI4YiJdLFsu MzEzNzI1NDkwMTk2MDc4NCwiIzMzNjM4ZCJdLFsuMzc2NDcwNTg4MjM1Mjk0MSwiIzJjNzI4 ZSJdLFsuNDM5MjE1Njg2Mjc0NTA5OCwiIzI2ODI4ZSJdLFsuNTAxOTYwNzg0MzEzNzI1NSwi IzIxOTE4YyJdLFsuNTY0NzA1ODgyMzUyOTQxMiwiIzFmYTA4OCJdLFsuNjI3NDUwOTgwMzky MTU2OSwiIzI4YWU4MCJdLFsuNjkwMTk2MDc4NDMxMzcyNSwiIzNmYmM3MyJdLFsuNzUyOTQx MTc2NDcwNTg4MiwiIzVlYzk2MiJdLFsuODE1Njg2Mjc0NTA5ODAzOSwiIzg0ZDQ0YiJdLFsu ODc4NDMxMzcyNTQ5MDE5NiwiI2FkZGMzMCJdLFsuOTQxMTc2NDcwNTg4MjM1MywiI2Q4ZTIx OSJdLFsxLCIjZmRlNzI1Il1dLENpdmlkaXM6W1swLCJyZ2IoMCwzMiw3NikiXSxbLjA1ODgy NCwicmdiKDAsNDIsMTAyKSJdLFsuMTE3NjQ3LCJyZ2IoMCw1MiwxMTApIl0sWy4xNzY0NzEs InJnYigzOSw2MywxMDgpIl0sWy4yMzUyOTQsInJnYig2MCw3NCwxMDcpIl0sWy4yOTQxMTgs InJnYig3Niw4NSwxMDcpIl0sWy4zNTI5NDEsInJnYig5MSw5NSwxMDkpIl0sWy40MTE3NjUs InJnYigxMDQsMTA2LDExMikiXSxbLjQ3MDU4OCwicmdiKDExNywxMTcsMTE3KSJdLFsuNTI5 NDEyLCJyZ2IoMTMxLDEyOSwxMjApIl0sWy41ODgyMzUsInJnYigxNDYsMTQwLDEyMCkiXSxb LjY0NzA1OSwicmdiKDE2MSwxNTIsMTE4KSJdLFsuNzA1ODgyLCJyZ2IoMTc2LDE2NSwxMTQp Il0sWy43NjQ3MDYsInJnYigxOTIsMTc3LDEwOSkiXSxbLjgyMzUyOSwicmdiKDIwOSwxOTEs MTAyKSJdLFsuODgyMzUzLCJyZ2IoMjI1LDIwNCw5MikiXSxbLjk0MTE3NiwicmdiKDI0Mywy MTksNzkpIl0sWzEsInJnYigyNTUsMjMzLDY5KSJdXX0sYT1pLlJkQnU7ZnVuY3Rpb24gbyh0 KXt2YXIgZT0wO2lmKCFBcnJheS5pc0FycmF5KHQpfHx0Lmxlbmd0aDwyKXJldHVybiExO2lm KCF0WzBdfHwhdFt0Lmxlbmd0aC0xXSlyZXR1cm4hMTtpZigwIT0rdFswXVswXXx8MSE9K3Rb dC5sZW5ndGgtMV1bMF0pcmV0dXJuITE7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3Zh ciBpPXRbcl07aWYoMiE9PWkubGVuZ3RofHwraVswXTxlfHwhbihpWzFdKS5pc1ZhbGlkKCkp cmV0dXJuITE7ZT0raVswXX1yZXR1cm4hMH1lLmV4cG9ydHM9e3NjYWxlczppLGRlZmF1bHRT Y2FsZTphLGdldDpmdW5jdGlvbih0LGUpe2lmKGV8fChlPWEpLCF0KXJldHVybiBlO2Z1bmN0 aW9uIHIoKXt0cnl7dD1pW3RdfHxKU09OLnBhcnNlKHQpfWNhdGNoKHIpe3Q9ZX19cmV0dXJu InN0cmluZyI9PXR5cGVvZiB0JiYocigpLCJzdHJpbmciPT10eXBlb2YgdCYmcigpKSxvKHQp P3Q6ZX0saXNWYWxpZDpmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09aVt0XXx8byh0KX19 fSx7dGlueWNvbG9yMjozMTJ9XSwzODI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4saSl7dmFyIGE9KHQtcikvKG4tciksbz1hK2Uv KG4tcikscz0oYStvKS8yO3JldHVybiJsZWZ0Ij09PWl8fCJib3R0b20iPT09aT9hOiJjZW50 ZXIiPT09aXx8Im1pZGRsZSI9PT1pP3M6InJpZ2h0Ij09PWl8fCJ0b3AiPT09aT9vOmE8Mi8z LXM/YTpvPjQvMy1zP286c319LHt9XSwzODM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT1bWyJzdy1yZXNpemUiLCJzLXJlc2l6ZSIsInNl LXJlc2l6ZSJdLFsidy1yZXNpemUiLCJtb3ZlIiwiZS1yZXNpemUiXSxbIm53LXJlc2l6ZSIs Im4tcmVzaXplIiwibmUtcmVzaXplIl1dO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixhKXty ZXR1cm4gdD0ibGVmdCI9PT1yPzA6ImNlbnRlciI9PT1yPzE6InJpZ2h0Ij09PXI/MjpuLmNv bnN0cmFpbihNYXRoLmZsb29yKDMqdCksMCwyKSxlPSJib3R0b20iPT09YT8wOiJtaWRkbGUi PT09YT8xOiJ0b3AiPT09YT8yOm4uY29uc3RyYWluKE1hdGguZmxvb3IoMyplKSwwLDIpLGlb ZV1bdF19fSx7Ii4uLy4uL2xpYiI6NTAzfV0sMzg0OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3Iuc2VsZWN0TW9kZT1mdW5jdGlvbih0KXtyZXR1cm4ibGFzc28iPT09dHx8InNl bGVjdCI9PT10fSxyLmRyYXdNb2RlPWZ1bmN0aW9uKHQpe3JldHVybiJkcmF3Y2xvc2VkcGF0 aCI9PT10fHwiZHJhd29wZW5wYXRoIj09PXR8fCJkcmF3bGluZSI9PT10fHwiZHJhd3JlY3Qi PT09dHx8ImRyYXdjaXJjbGUiPT09dH0sci5vcGVuTW9kZT1mdW5jdGlvbih0KXtyZXR1cm4i ZHJhd2xpbmUiPT09dHx8ImRyYXdvcGVucGF0aCI9PT10fSxyLnJlY3RNb2RlPWZ1bmN0aW9u KHQpe3JldHVybiJzZWxlY3QiPT09dHx8ImRyYXdsaW5lIj09PXR8fCJkcmF3cmVjdCI9PT10 fHwiZHJhd2NpcmNsZSI9PT10fSxyLmZyZWVNb2RlPWZ1bmN0aW9uKHQpe3JldHVybiJsYXNz byI9PT10fHwiZHJhd2Nsb3NlZHBhdGgiPT09dHx8ImRyYXdvcGVucGF0aCI9PT10fSxyLnNl bGVjdGluZ09yRHJhd2luZz1mdW5jdGlvbih0KXtyZXR1cm4gci5mcmVlTW9kZSh0KXx8ci5y ZWN0TW9kZSh0KX19LHt9XSwzODU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgibW91c2UtZXZlbnQtb2Zmc2V0IiksaT10KCJoYXMtaG92ZXIiKSxhPXQoImhhcy1w YXNzaXZlLWV2ZW50cyIpLG89dCgiLi4vLi4vbGliIikucmVtb3ZlRWxlbWVudCxzPXQoIi4u Ly4uL3Bsb3RzL2NhcnRlc2lhbi9jb25zdGFudHMiKSxsPWUuZXhwb3J0cz17fTtsLmFsaWdu PXQoIi4vYWxpZ24iKSxsLmdldEN1cnNvcj10KCIuL2N1cnNvciIpO3ZhciBjPXQoIi4vdW5o b3ZlciIpO2Z1bmN0aW9uIHUoKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi KTt0LmNsYXNzTmFtZT0iZHJhZ2NvdmVyIjt2YXIgZT10LnN0eWxlO3JldHVybiBlLnBvc2l0 aW9uPSJmaXhlZCIsZS5sZWZ0PTAsZS5yaWdodD0wLGUudG9wPTAsZS5ib3R0b209MCxlLnpJ bmRleD05OTk5OTk5OTksZS5iYWNrZ3JvdW5kPSJub25lIixkb2N1bWVudC5ib2R5LmFwcGVu ZENoaWxkKHQpLHR9ZnVuY3Rpb24gZih0KXtyZXR1cm4gbih0LmNoYW5nZWRUb3VjaGVzP3Qu Y2hhbmdlZFRvdWNoZXNbMF06dCxkb2N1bWVudC5ib2R5KX1sLnVuaG92ZXI9Yy53cmFwcGVk LGwudW5ob3ZlclJhdz1jLnJhdyxsLmluaXQ9ZnVuY3Rpb24odCl7dmFyIGUscixuLGMsaCxw LGQsbSxnPXQuZ2Qsdj0xLHk9Zy5fY29udGV4dC5kb3VibGVDbGlja0RlbGF5LHg9dC5lbGVt ZW50O2cuX21vdXNlRG93blRpbWV8fChnLl9tb3VzZURvd25UaW1lPTApLHguc3R5bGUucG9p bnRlckV2ZW50cz0iYWxsIix4Lm9ubW91c2Vkb3duPV8sYT8oeC5fb250b3VjaHN0YXJ0JiZ4 LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHguX29udG91Y2hzdGFydCkseC5f b250b3VjaHN0YXJ0PV8seC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IixfLHtwYXNz aXZlOiExfSkpOngub250b3VjaHN0YXJ0PV87dmFyIGI9dC5jbGFtcEZufHxmdW5jdGlvbih0 LGUscil7cmV0dXJuIE1hdGguYWJzKHQpPHImJih0PTApLE1hdGguYWJzKGUpPHImJihlPTAp LFt0LGVdfTtmdW5jdGlvbiBfKGEpe2cuX2RyYWdnZWQ9ITEsZy5fZHJhZ2dpbmc9ITA7dmFy IG89ZihhKTtlPW9bMF0scj1vWzFdLGQ9YS50YXJnZXQscD1hLG09Mj09PWEuYnV0dG9uc3x8 YS5jdHJsS2V5LHZvaWQgMD09PWEuY2xpZW50WCYmdm9pZCAwPT09YS5jbGllbnRZJiYoYS5j bGllbnRYPWUsYS5jbGllbnRZPXIpLChuPShuZXcgRGF0ZSkuZ2V0VGltZSgpKS1nLl9tb3Vz ZURvd25UaW1lPHk/dis9MToodj0xLGcuX21vdXNlRG93blRpbWU9biksdC5wcmVwRm4mJnQu cHJlcEZuKGEsZSxyKSxpJiYhbT8oaD11KCkpLnN0eWxlLmN1cnNvcj13aW5kb3cuZ2V0Q29t cHV0ZWRTdHlsZSh4KS5jdXJzb3I6aXx8KGg9ZG9jdW1lbnQsYz13aW5kb3cuZ2V0Q29tcHV0 ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmN1cnNvcixkb2N1bWVudC5kb2N1 bWVudEVsZW1lbnQuc3R5bGUuY3Vyc29yPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHgpLmN1 cnNvciksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsVCksZG9jdW1lbnQu YWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLFQpLCExIT09dC5kcmFnbW9kZSYmKGEucHJl dmVudERlZmF1bHQoKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHcp LGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsdyx7cGFzc2l2ZTohMX0p KX1mdW5jdGlvbiB3KG4pe24ucHJldmVudERlZmF1bHQoKTt2YXIgaT1mKG4pLGE9dC5taW5E cmFnfHxzLk1JTkRSQUcsbz1iKGlbMF0tZSxpWzFdLXIsYSksYz1vWzBdLHU9b1sxXTsoY3x8 dSkmJihnLl9kcmFnZ2VkPSEwLGwudW5ob3ZlcihnLG4pKSxnLl9kcmFnZ2VkJiZ0Lm1vdmVG biYmIW0mJihnLl9kcmFnZGF0YT17ZWxlbWVudDp4LGR4OmMsZHk6dX0sdC5tb3ZlRm4oYyx1 KSl9ZnVuY3Rpb24gVChlKXtpZihkZWxldGUgZy5fZHJhZ2RhdGEsITEhPT10LmRyYWdtb2Rl JiYoZS5wcmV2ZW50RGVmYXVsdCgpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1v dXNlbW92ZSIsdyksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix3 KSksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsVCksZG9jdW1lbnQu cmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLFQpLGk/byhoKTpjJiYoaC5kb2N1bWVu dEVsZW1lbnQuc3R5bGUuY3Vyc29yPWMsYz1udWxsKSxnLl9kcmFnZ2luZyl7aWYoZy5fZHJh Z2dpbmc9ITEsKG5ldyBEYXRlKS5nZXRUaW1lKCktZy5fbW91c2VEb3duVGltZT55JiYodj1N YXRoLm1heCh2LTEsMSkpLGcuX2RyYWdnZWQpdC5kb25lRm4mJnQuZG9uZUZuKCk7ZWxzZSBp Zih0LmNsaWNrRm4mJnQuY2xpY2tGbih2LHApLCFtKXt2YXIgcjt0cnl7cj1uZXcgTW91c2VF dmVudCgiY2xpY2siLGUpfWNhdGNoKHQpe3ZhciBuPWYoZSk7KHI9ZG9jdW1lbnQuY3JlYXRl RXZlbnQoIk1vdXNlRXZlbnRzIikpLmluaXRNb3VzZUV2ZW50KCJjbGljayIsZS5idWJibGVz LGUuY2FuY2VsYWJsZSxlLnZpZXcsZS5kZXRhaWwsZS5zY3JlZW5YLGUuc2NyZWVuWSxuWzBd LG5bMV0sZS5jdHJsS2V5LGUuYWx0S2V5LGUuc2hpZnRLZXksZS5tZXRhS2V5LGUuYnV0dG9u LGUucmVsYXRlZFRhcmdldCl9ZC5kaXNwYXRjaEV2ZW50KHIpfWcuX2RyYWdnaW5nPSExLGcu X2RyYWdnZWQ9ITF9ZWxzZSBnLl9kcmFnZ2VkPSExfX0sbC5jb3ZlclNsaXA9dX0seyIuLi8u Li9saWIiOjUwMywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2NvbnN0YW50cyI6NTYxLCIuL2Fs aWduIjozODIsIi4vY3Vyc29yIjozODMsIi4vdW5ob3ZlciI6Mzg2LCJoYXMtaG92ZXIiOjIy OCwiaGFzLXBhc3NpdmUtZXZlbnRzIjoyMjksIm1vdXNlLWV2ZW50LW9mZnNldCI6MjQyfV0s Mzg2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYi9l dmVudHMiKSxpPXQoIi4uLy4uL2xpYi90aHJvdHRsZSIpLGE9dCgiLi4vLi4vbGliL2RvbSIp LmdldEdyYXBoRGl2LG89dCgiLi4vZngvY29uc3RhbnRzIikscz1lLmV4cG9ydHM9e307cy53 cmFwcGVkPWZ1bmN0aW9uKHQsZSxyKXsodD1hKHQpKS5fZnVsbExheW91dCYmaS5jbGVhcih0 Ll9mdWxsTGF5b3V0Ll91aWQrby5IT1ZFUklEKSxzLnJhdyh0LGUscil9LHMucmF3PWZ1bmN0 aW9uKHQsZSl7dmFyIHI9dC5fZnVsbExheW91dCxpPXQuX2hvdmVyZGF0YTtlfHwoZT17fSks ZS50YXJnZXQmJiF0Ll9kcmFnZ2VkJiYhMT09PW4udHJpZ2dlckhhbmRsZXIodCwicGxvdGx5 X2JlZm9yZWhvdmVyIixlKXx8KHIuX2hvdmVybGF5ZXIuc2VsZWN0QWxsKCJnIikucmVtb3Zl KCksci5faG92ZXJsYXllci5zZWxlY3RBbGwoImxpbmUiKS5yZW1vdmUoKSxyLl9ob3Zlcmxh eWVyLnNlbGVjdEFsbCgiY2lyY2xlIikucmVtb3ZlKCksdC5faG92ZXJkYXRhPXZvaWQgMCxl LnRhcmdldCYmaSYmdC5lbWl0KCJwbG90bHlfdW5ob3ZlciIse2V2ZW50OmUscG9pbnRzOml9 KSl9fSx7Ii4uLy4uL2xpYi9kb20iOjQ5MSwiLi4vLi4vbGliL2V2ZW50cyI6NDkyLCIuLi8u Li9saWIvdGhyb3R0bGUiOjUzMCwiLi4vZngvY29uc3RhbnRzIjo0MDB9XSwzODc6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ci5kYXNoPXt2YWxUeXBlOiJzdHJpbmciLHZhbHVl czpbInNvbGlkIiwiZG90IiwiZGFzaCIsImxvbmdkYXNoIiwiZGFzaGRvdCIsImxvbmdkYXNo ZG90Il0sZGZsdDoic29saWQiLGVkaXRUeXBlOiJzdHlsZSJ9LHIucGF0dGVybj17c2hhcGU6 e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbIiIsIi8iLCJcXCIsIngiLCItIiwifCIs IisiLCIuIl0sZGZsdDoiIixhcnJheU9rOiEwLGVkaXRUeXBlOiJzdHlsZSJ9LGZpbGxtb2Rl Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJyZXBsYWNlIiwib3ZlcmxheSJdLGRm bHQ6InJlcGxhY2UiLGVkaXRUeXBlOiJzdHlsZSJ9LGJnY29sb3I6e3ZhbFR5cGU6ImNvbG9y IixhcnJheU9rOiEwLGVkaXRUeXBlOiJzdHlsZSJ9LGZnY29sb3I6e3ZhbFR5cGU6ImNvbG9y IixhcnJheU9rOiEwLGVkaXRUeXBlOiJzdHlsZSJ9LGZnb3BhY2l0eTp7dmFsVHlwZToibnVt YmVyIixlZGl0VHlwZToic3R5bGUiLG1pbjowLG1heDoxfSxzaXplOnt2YWxUeXBlOiJudW1i ZXIiLG1pbjowLGRmbHQ6OCxhcnJheU9rOiEwLGVkaXRUeXBlOiJzdHlsZSJ9LHNvbGlkaXR5 Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6LjMsYXJyYXlPazohMCxlZGl0 VHlwZToic3R5bGUifSxlZGl0VHlwZToic3R5bGUifX0se31dLDM4ODpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJAcGxvdGx5L2QzIiksaT10KCIuLi8uLi9saWIi KSxhPWkubnVtYmVyRm9ybWF0LG89dCgiZmFzdC1pc251bWVyaWMiKSxzPXQoInRpbnljb2xv cjIiKSxsPXQoIi4uLy4uL3JlZ2lzdHJ5IiksYz10KCIuLi9jb2xvciIpLHU9dCgiLi4vY29s b3JzY2FsZSIpLGY9aS5zdHJUcmFuc2xhdGUsaD10KCIuLi8uLi9saWIvc3ZnX3RleHRfdXRp bHMiKSxwPXQoIi4uLy4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIiksZD10KCIuLi8u Li9jb25zdGFudHMvYWxpZ25tZW50IikuTElORV9TUEFDSU5HLG09dCgiLi4vLi4vY29uc3Rh bnRzL2ludGVyYWN0aW9ucyIpLkRFU0VMRUNURElNLGc9dCgiLi4vLi4vdHJhY2VzL3NjYXR0 ZXIvc3VidHlwZXMiKSx2PXQoIi4uLy4uL3RyYWNlcy9zY2F0dGVyL21ha2VfYnViYmxlX3Np emVfZnVuYyIpLHk9dCgiLi4vLi4vY29tcG9uZW50cy9meC9oZWxwZXJzIikuYXBwZW5kQXJy YXlQb2ludFZhbHVlLHg9ZS5leHBvcnRzPXt9O2Z1bmN0aW9uIGIodCxlLHIpe3ZhciBuPWUu ZmlsbHBhdHRlcm4saT1uJiZ4LmdldFBhdHRlcm5BdHRyKG4uc2hhcGUsMCwiIik7aWYoaSl7 dmFyIGE9eC5nZXRQYXR0ZXJuQXR0cihuLmJnY29sb3IsMCxudWxsKSxvPXguZ2V0UGF0dGVy bkF0dHIobi5mZ2NvbG9yLDAsbnVsbCkscz1uLmZnb3BhY2l0eSxsPXguZ2V0UGF0dGVybkF0 dHIobi5zaXplLDAsOCksdT14LmdldFBhdHRlcm5BdHRyKG4uc29saWRpdHksMCwuMyksZj1l LnVpZDt4LnBhdHRlcm4odCwicG9pbnQiLHIsZixpLGwsdSx2b2lkIDAsbi5maWxsbW9kZSxh LG8scyl9ZWxzZSBlLmZpbGxjb2xvciYmdC5jYWxsKGMuZmlsbCxlLmZpbGxjb2xvcil9eC5m b250PWZ1bmN0aW9uKHQsZSxyLG4pe2kuaXNQbGFpbk9iamVjdChlKSYmKG49ZS5jb2xvcixy PWUuc2l6ZSxlPWUuZmFtaWx5KSxlJiZ0LnN0eWxlKCJmb250LWZhbWlseSIsZSkscisxJiZ0 LnN0eWxlKCJmb250LXNpemUiLHIrInB4IiksbiYmdC5jYWxsKGMuZmlsbCxuKX0seC5zZXRQ b3NpdGlvbj1mdW5jdGlvbih0LGUscil7dC5hdHRyKCJ4IixlKS5hdHRyKCJ5IixyKX0seC5z ZXRTaXplPWZ1bmN0aW9uKHQsZSxyKXt0LmF0dHIoIndpZHRoIixlKS5hdHRyKCJoZWlnaHQi LHIpfSx4LnNldFJlY3Q9ZnVuY3Rpb24odCxlLHIsbixpKXt0LmNhbGwoeC5zZXRQb3NpdGlv bixlLHIpLmNhbGwoeC5zZXRTaXplLG4saSl9LHgudHJhbnNsYXRlUG9pbnQ9ZnVuY3Rpb24o dCxlLHIsbil7dmFyIGk9ci5jMnAodC54KSxhPW4uYzJwKHQueSk7cmV0dXJuISEobyhpKSYm byhhKSYmZS5ub2RlKCkpJiYoInRleHQiPT09ZS5ub2RlKCkubm9kZU5hbWU/ZS5hdHRyKCJ4 IixpKS5hdHRyKCJ5IixhKTplLmF0dHIoInRyYW5zZm9ybSIsZihpLGEpKSwhMCl9LHgudHJh bnNsYXRlUG9pbnRzPWZ1bmN0aW9uKHQsZSxyKXt0LmVhY2goKGZ1bmN0aW9uKHQpe3ZhciBp PW4uc2VsZWN0KHRoaXMpO3gudHJhbnNsYXRlUG9pbnQodCxpLGUscil9KSl9LHguaGlkZU91 dHNpZGVSYW5nZVBvaW50PWZ1bmN0aW9uKHQsZSxyLG4saSxhKXtlLmF0dHIoImRpc3BsYXki LHIuaXNQdFdpdGhpblJhbmdlKHQsaSkmJm4uaXNQdFdpdGhpblJhbmdlKHQsYSk/bnVsbDoi bm9uZSIpfSx4LmhpZGVPdXRzaWRlUmFuZ2VQb2ludHM9ZnVuY3Rpb24odCxlKXtpZihlLl9o YXNDbGlwT25BeGlzRmFsc2Upe3ZhciByPWUueGF4aXMsaT1lLnlheGlzO3QuZWFjaCgoZnVu Y3Rpb24oZSl7dmFyIGE9ZVswXS50cmFjZSxvPWEueGNhbGVuZGFyLHM9YS55Y2FsZW5kYXIs Yz1sLnRyYWNlSXMoYSwiYmFyLWxpa2UiKT8iLmJhcnRleHQiOiIucG9pbnQsLnRleHRwb2lu dCI7dC5zZWxlY3RBbGwoYykuZWFjaCgoZnVuY3Rpb24odCl7eC5oaWRlT3V0c2lkZVJhbmdl UG9pbnQodCxuLnNlbGVjdCh0aGlzKSxyLGksbyxzKX0pKX0pKX19LHguY3Jpc3BSb3VuZD1m dW5jdGlvbih0LGUscil7cmV0dXJuIGUmJm8oZSk/dC5fY29udGV4dC5zdGF0aWNQbG90P2U6 ZTwxPzE6TWF0aC5yb3VuZChlKTpyfHwwfSx4LnNpbmdsZUxpbmVTdHlsZT1mdW5jdGlvbih0 LGUscixuLGkpe2Uuc3R5bGUoImZpbGwiLCJub25lIik7dmFyIGE9KCgodHx8W10pWzBdfHx7 fSkudHJhY2V8fHt9KS5saW5lfHx7fSxvPXJ8fGEud2lkdGh8fDAscz1pfHxhLmRhc2h8fCIi O2Muc3Ryb2tlKGUsbnx8YS5jb2xvcikseC5kYXNoTGluZShlLHMsbyl9LHgubGluZUdyb3Vw U3R5bGU9ZnVuY3Rpb24odCxlLHIsaSl7dC5zdHlsZSgiZmlsbCIsIm5vbmUiKS5lYWNoKChm dW5jdGlvbih0KXt2YXIgYT0oKCh0fHxbXSlbMF18fHt9KS50cmFjZXx8e30pLmxpbmV8fHt9 LG89ZXx8YS53aWR0aHx8MCxzPWl8fGEuZGFzaHx8IiI7bi5zZWxlY3QodGhpcykuY2FsbChj LnN0cm9rZSxyfHxhLmNvbG9yKS5jYWxsKHguZGFzaExpbmUscyxvKX0pKX0seC5kYXNoTGlu ZT1mdW5jdGlvbih0LGUscil7cj0rcnx8MCxlPXguZGFzaFN0eWxlKGUsciksdC5zdHlsZSh7 InN0cm9rZS1kYXNoYXJyYXkiOmUsInN0cm9rZS13aWR0aCI6cisicHgifSl9LHguZGFzaFN0 eWxlPWZ1bmN0aW9uKHQsZSl7ZT0rZXx8MTt2YXIgcj1NYXRoLm1heChlLDMpO3JldHVybiJz b2xpZCI9PT10P3Q9IiI6ImRvdCI9PT10P3Q9cisicHgsIityKyJweCI6ImRhc2giPT09dD90 PTMqcisicHgsIiszKnIrInB4IjoibG9uZ2Rhc2giPT09dD90PTUqcisicHgsIis1KnIrInB4 IjoiZGFzaGRvdCI9PT10P3Q9MypyKyJweCwiK3IrInB4LCIrcisicHgsIityKyJweCI6Imxv bmdkYXNoZG90Ij09PXQmJih0PTUqcisicHgsIisyKnIrInB4LCIrcisicHgsIisyKnIrInB4 IiksdH0seC5zaW5nbGVGaWxsU3R5bGU9ZnVuY3Rpb24odCxlKXt2YXIgcj1uLnNlbGVjdCh0 Lm5vZGUoKSk7Yih0LCgoci5kYXRhKClbMF18fFtdKVswXXx8e30pLnRyYWNlfHx7fSxlKX0s eC5maWxsR3JvdXBTdHlsZT1mdW5jdGlvbih0LGUpe3Quc3R5bGUoInN0cm9rZS13aWR0aCIs MCkuZWFjaCgoZnVuY3Rpb24odCl7dmFyIHI9bi5zZWxlY3QodGhpcyk7dFswXS50cmFjZSYm YihyLHRbMF0udHJhY2UsZSl9KSl9O3ZhciBfPXQoIi4vc3ltYm9sX2RlZnMiKTt4LnN5bWJv bE5hbWVzPVtdLHguc3ltYm9sRnVuY3M9W10seC5zeW1ib2xOZWVkTGluZXM9e30seC5zeW1i b2xOb0RvdD17fSx4LnN5bWJvbE5vRmlsbD17fSx4LnN5bWJvbExpc3Q9W10sT2JqZWN0Lmtl eXMoXykuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9X1t0XSxyPWUubjt4LnN5bWJvbExp c3QucHVzaChyLFN0cmluZyhyKSx0LHIrMTAwLFN0cmluZyhyKzEwMCksdCsiLW9wZW4iKSx4 LnN5bWJvbE5hbWVzW3JdPXQseC5zeW1ib2xGdW5jc1tyXT1lLmYsZS5uZWVkTGluZSYmKHgu c3ltYm9sTmVlZExpbmVzW3JdPSEwKSxlLm5vRG90P3guc3ltYm9sTm9Eb3Rbcl09ITA6eC5z eW1ib2xMaXN0LnB1c2gocisyMDAsU3RyaW5nKHIrMjAwKSx0KyItZG90IixyKzMwMCxTdHJp bmcociszMDApLHQrIi1vcGVuLWRvdCIpLGUubm9GaWxsJiYoeC5zeW1ib2xOb0ZpbGxbcl09 ITApfSkpO3ZhciB3PXguc3ltYm9sTmFtZXMubGVuZ3RoO2Z1bmN0aW9uIFQodCxlKXt2YXIg cj10JTEwMDtyZXR1cm4geC5zeW1ib2xGdW5jc1tyXShlKSsodD49MjAwPyJNMCwwLjVMMC41 LDBMMCwtMC41TC0wLjUsMFoiOiIiKX14LnN5bWJvbE51bWJlcj1mdW5jdGlvbih0KXtpZihv KHQpKXQ9K3Q7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIHQpe3ZhciBlPTA7dC5pbmRleE9m KCItb3BlbiIpPjAmJihlPTEwMCx0PXQucmVwbGFjZSgiLW9wZW4iLCIiKSksdC5pbmRleE9m KCItZG90Iik+MCYmKGUrPTIwMCx0PXQucmVwbGFjZSgiLWRvdCIsIiIpKSwodD14LnN5bWJv bE5hbWVzLmluZGV4T2YodCkpPj0wJiYodCs9ZSl9cmV0dXJuIHQlMTAwPj13fHx0Pj00MDA/ MDpNYXRoLmZsb29yKE1hdGgubWF4KHQsMCkpfTt2YXIgaz17eDE6MSx4MjowLHkxOjAseTI6 MH0sQT17eDE6MCx4MjowLHkxOjEseTI6MH0sTT1hKCJ+ZiIpLFM9e3JhZGlhbDp7bm9kZToi cmFkaWFsR3JhZGllbnQifSxyYWRpYWxyZXZlcnNlZDp7bm9kZToicmFkaWFsR3JhZGllbnQi LHJldmVyc2VkOiEwfSxob3Jpem9udGFsOntub2RlOiJsaW5lYXJHcmFkaWVudCIsYXR0cnM6 a30saG9yaXpvbnRhbHJldmVyc2VkOntub2RlOiJsaW5lYXJHcmFkaWVudCIsYXR0cnM6ayxy ZXZlcnNlZDohMH0sdmVydGljYWw6e25vZGU6ImxpbmVhckdyYWRpZW50IixhdHRyczpBfSx2 ZXJ0aWNhbHJldmVyc2VkOntub2RlOiJsaW5lYXJHcmFkaWVudCIsYXR0cnM6QSxyZXZlcnNl ZDohMH19O3guZ3JhZGllbnQ9ZnVuY3Rpb24odCxlLHIsYSxvLGwpe2Zvcih2YXIgdT1vLmxl bmd0aCxmPVNbYV0saD1uZXcgQXJyYXkodSkscD0wO3A8dTtwKyspZi5yZXZlcnNlZD9oW3Ut MS1wXT1bTSgxMDAqKDEtb1twXVswXSkpLG9bcF1bMV1dOmhbcF09W00oMTAwKm9bcF1bMF0p LG9bcF1bMV1dO3ZhciBkPWUuX2Z1bGxMYXlvdXQsbT0iZyIrZC5fdWlkKyItIityLGc9ZC5f ZGVmcy5zZWxlY3QoIi5ncmFkaWVudHMiKS5zZWxlY3RBbGwoIiMiK20pLmRhdGEoW2EraC5q b2luKCI7IildLGkuaWRlbnRpdHkpO2cuZXhpdCgpLnJlbW92ZSgpLGcuZW50ZXIoKS5hcHBl bmQoZi5ub2RlKS5lYWNoKChmdW5jdGlvbigpe3ZhciB0PW4uc2VsZWN0KHRoaXMpO2YuYXR0 cnMmJnQuYXR0cihmLmF0dHJzKSx0LmF0dHIoImlkIixtKTt2YXIgZT10LnNlbGVjdEFsbCgi c3RvcCIpLmRhdGEoaCk7ZS5leGl0KCkucmVtb3ZlKCksZS5lbnRlcigpLmFwcGVuZCgic3Rv cCIpLGUuZWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9cyh0WzFdKTtuLnNlbGVjdCh0aGlzKS5h dHRyKHtvZmZzZXQ6dFswXSsiJSIsInN0b3AtY29sb3IiOmMudGlueVJHQihlKSwic3RvcC1v cGFjaXR5IjplLmdldEFscGhhKCl9KX0pKX0pKSx0LnN0eWxlKGwsUihtLGUpKS5zdHlsZShs KyItb3BhY2l0eSIsbnVsbCksdC5jbGFzc2VkKCJncmFkaWVudF9maWxsZWQiLCEwKX0seC5w YXR0ZXJuPWZ1bmN0aW9uKHQsZSxyLGEsbyxzLGwsdSxmLGgscCxkKXt2YXIgbT0ibGVnZW5k Ij09PWU7dSYmKCJvdmVybGF5Ij09PWY/KGg9dSxwPWMuY29udHJhc3QoaCkpOihoPXZvaWQg MCxwPXUpKTt2YXIgZyx2LHkseCxiLF8sdyxULGssQSxNLFM9ci5fZnVsbExheW91dCxFPSJw IitTLl91aWQrIi0iK2EsTD17fTtzd2l0Y2gobyl7Y2FzZSIvIjpnPXMqTWF0aC5zcXJ0KDIp LHY9cypNYXRoLnNxcnQoMiksXz0icGF0aCIsTD17ZDp5PSJNLSIrZy80KyIsIit2LzQrImwi K2cvMisiLC0iK3YvMisiTTAsIit2KyJMIitnKyIsME0iK2cvNCozKyIsIit2LzQqNSsibCIr Zy8yKyIsLSIrdi8yLG9wYWNpdHk6ZCxzdHJva2U6cCwic3Ryb2tlLXdpZHRoIjooeD1sKnMp KyJweCJ9O2JyZWFrO2Nhc2UiXFwiOmc9cypNYXRoLnNxcnQoMiksdj1zKk1hdGguc3FydCgy KSxfPSJwYXRoIixMPXtkOnk9Ik0iK2cvNCozKyIsLSIrdi80KyJsIitnLzIrIiwiK3YvMisi TTAsMEwiK2crIiwiK3YrIk0tIitnLzQrIiwiK3YvNCozKyJsIitnLzIrIiwiK3YvMixvcGFj aXR5OmQsc3Ryb2tlOnAsInN0cm9rZS13aWR0aCI6KHg9bCpzKSsicHgifTticmVhaztjYXNl IngiOmc9cypNYXRoLnNxcnQoMiksdj1zKk1hdGguc3FydCgyKSx5PSJNLSIrZy80KyIsIit2 LzQrImwiK2cvMisiLC0iK3YvMisiTTAsIit2KyJMIitnKyIsME0iK2cvNCozKyIsIit2LzQq NSsibCIrZy8yKyIsLSIrdi8yKyJNIitnLzQqMysiLC0iK3YvNCsibCIrZy8yKyIsIit2LzIr Ik0wLDBMIitnKyIsIit2KyJNLSIrZy80KyIsIit2LzQqMysibCIrZy8yKyIsIit2LzIseD1z LXMqTWF0aC5zcXJ0KDEtbCksXz0icGF0aCIsTD17ZDp5LG9wYWNpdHk6ZCxzdHJva2U6cCwi c3Ryb2tlLXdpZHRoIjp4KyJweCJ9O2JyZWFrO2Nhc2UifCI6Xz0icGF0aCIsXz0icGF0aCIs TD17ZDp5PSJNIisoZz1zKS8yKyIsMEwiK2cvMisiLCIrKHY9cyksb3BhY2l0eTpkLHN0cm9r ZTpwLCJzdHJva2Utd2lkdGgiOih4PWwqcykrInB4In07YnJlYWs7Y2FzZSItIjpfPSJwYXRo IixfPSJwYXRoIixMPXtkOnk9Ik0wLCIrKHY9cykvMisiTCIrKGc9cykrIiwiK3YvMixvcGFj aXR5OmQsc3Ryb2tlOnAsInN0cm9rZS13aWR0aCI6KHg9bCpzKSsicHgifTticmVhaztjYXNl IisiOl89InBhdGgiLHk9Ik0iKyhnPXMpLzIrIiwwTCIrZy8yKyIsIisodj1zKSsiTTAsIit2 LzIrIkwiK2crIiwiK3YvMix4PXMtcypNYXRoLnNxcnQoMS1sKSxfPSJwYXRoIixMPXtkOnks b3BhY2l0eTpkLHN0cm9rZTpwLCJzdHJva2Utd2lkdGgiOngrInB4In07YnJlYWs7Y2FzZSIu IjpnPXMsdj1zLGw8TWF0aC5QSS80P2I9TWF0aC5zcXJ0KGwqcypzL01hdGguUEkpOih3PWws VD1NYXRoLlBJLzQsaz0xLEE9cy8yLE09cy9NYXRoLnNxcnQoMiksYj1BKyhNLUEpKih3LVQp LyhrLVQpKSxfPSJjaXJjbGUiLEw9e2N4OmcvMixjeTp2LzIscjpiLG9wYWNpdHk6ZCxmaWxs OnB9fXZhciBDPVtvfHwibm9TaCIsaHx8Im5vQmciLHB8fCJub0ZnIixzLGxdLmpvaW4oIjsi KSxQPVMuX2RlZnMuc2VsZWN0KCIucGF0dGVybnMiKS5zZWxlY3RBbGwoIiMiK0UpLmRhdGEo W0NdLGkuaWRlbnRpdHkpO1AuZXhpdCgpLnJlbW92ZSgpLFAuZW50ZXIoKS5hcHBlbmQoInBh dHRlcm4iKS5lYWNoKChmdW5jdGlvbigpe3ZhciB0PW4uc2VsZWN0KHRoaXMpO2lmKHQuYXR0 cih7aWQ6RSx3aWR0aDpnKyJweCIsaGVpZ2h0OnYrInB4IixwYXR0ZXJuVW5pdHM6InVzZXJT cGFjZU9uVXNlIixwYXR0ZXJuVHJhbnNmb3JtOm0/InNjYWxlKDAuOCkiOiIifSksaCl7dmFy IGU9dC5zZWxlY3RBbGwoInJlY3QiKS5kYXRhKFswXSk7ZS5leGl0KCkucmVtb3ZlKCksZS5l bnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoe3dpZHRoOmcrInB4IixoZWlnaHQ6disicHgi LGZpbGw6aH0pfXZhciByPXQuc2VsZWN0QWxsKF8pLmRhdGEoWzBdKTtyLmV4aXQoKS5yZW1v dmUoKSxyLmVudGVyKCkuYXBwZW5kKF8pLmF0dHIoTCl9KSksdC5zdHlsZSgiZmlsbCIsUihF LHIpKS5zdHlsZSgiZmlsbC1vcGFjaXR5IixudWxsKSx0LmNsYXNzZWQoInBhdHRlcm5fZmls bGVkIiwhMCl9LHguaW5pdEdyYWRpZW50cz1mdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5 b3V0O2kuZW5zdXJlU2luZ2xlKGUuX2RlZnMsImciLCJncmFkaWVudHMiKS5zZWxlY3RBbGwo ImxpbmVhckdyYWRpZW50LHJhZGlhbEdyYWRpZW50IikucmVtb3ZlKCksbi5zZWxlY3QodCku c2VsZWN0QWxsKCIuZ3JhZGllbnRfZmlsbGVkIikuY2xhc3NlZCgiZ3JhZGllbnRfZmlsbGVk IiwhMSl9LHguaW5pdFBhdHRlcm5zPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQ7 aS5lbnN1cmVTaW5nbGUoZS5fZGVmcywiZyIsInBhdHRlcm5zIikuc2VsZWN0QWxsKCJwYXR0 ZXJuIikucmVtb3ZlKCksbi5zZWxlY3QodCkuc2VsZWN0QWxsKCIucGF0dGVybl9maWxsZWQi KS5jbGFzc2VkKCJwYXR0ZXJuX2ZpbGxlZCIsITEpfSx4LmdldFBhdHRlcm5BdHRyPWZ1bmN0 aW9uKHQsZSxyKXtyZXR1cm4gdCYmaS5pc0FycmF5T3JUeXBlZEFycmF5KHQpP2U8dC5sZW5n dGg/dFtlXTpyOnR9LHgucG9pbnRTdHlsZT1mdW5jdGlvbih0LGUscil7aWYodC5zaXplKCkp e3ZhciBpPXgubWFrZVBvaW50U3R5bGVGbnMoZSk7dC5lYWNoKChmdW5jdGlvbih0KXt4LnNp bmdsZVBvaW50U3R5bGUodCxuLnNlbGVjdCh0aGlzKSxlLGkscil9KSl9fSx4LnNpbmdsZVBv aW50U3R5bGU9ZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgbz1yLm1hcmtlcixzPW8ubGluZTtp ZihlLnN0eWxlKCJvcGFjaXR5IixuLnNlbGVjdGVkT3BhY2l0eUZuP24uc2VsZWN0ZWRPcGFj aXR5Rm4odCk6dm9pZCAwPT09dC5tbz9vLm9wYWNpdHk6dC5tbyksbi5tczJtcmMpe3ZhciBs O2w9InZhcmlvdXMiPT09dC5tc3x8InZhcmlvdXMiPT09by5zaXplPzM6bi5tczJtcmModC5t cyksdC5tcmM9bCxuLnNlbGVjdGVkU2l6ZUZuJiYobD10Lm1yYz1uLnNlbGVjdGVkU2l6ZUZu KHQpKTt2YXIgdT14LnN5bWJvbE51bWJlcih0Lm14fHxvLnN5bWJvbCl8fDA7dC5vbT11JTIw MD49MTAwLGUuYXR0cigiZCIsVCh1LGwpKX12YXIgZixoLHAsZD0hMTtpZih0LnNvKXA9cy5v dXRsaWVyd2lkdGgsaD1zLm91dGxpZXJjb2xvcixmPW8ub3V0bGllcmNvbG9yO2Vsc2V7dmFy IG09KHN8fHt9KS53aWR0aDtwPSh0Lm1sdysxfHxtKzF8fCh0LnRyYWNlPyh0LnRyYWNlLm1h cmtlci5saW5lfHx7fSkud2lkdGg6MCkrMSktMXx8MCxoPSJtbGMiaW4gdD90Lm1sY2M9bi5s aW5lU2NhbGUodC5tbGMpOmkuaXNBcnJheU9yVHlwZWRBcnJheShzLmNvbG9yKT9jLmRlZmF1 bHRMaW5lOnMuY29sb3IsaS5pc0FycmF5T3JUeXBlZEFycmF5KG8uY29sb3IpJiYoZj1jLmRl ZmF1bHRMaW5lLGQ9ITApLGY9Im1jImluIHQ/dC5tY2M9bi5tYXJrZXJTY2FsZSh0Lm1jKTpv LmNvbG9yfHwicmdiYSgwLDAsMCwwKSIsbi5zZWxlY3RlZENvbG9yRm4mJihmPW4uc2VsZWN0 ZWRDb2xvckZuKHQpKX1pZih0Lm9tKWUuY2FsbChjLnN0cm9rZSxmKS5zdHlsZSh7InN0cm9r ZS13aWR0aCI6KHB8fDEpKyJweCIsZmlsbDoibm9uZSJ9KTtlbHNle2Uuc3R5bGUoInN0cm9r ZS13aWR0aCIsKHQuaXNCbGFuaz8wOnApKyJweCIpO3ZhciBnPW8uZ3JhZGllbnQsdj10Lm1n dDt2P2Q9ITA6dj1nJiZnLnR5cGUsaS5pc0FycmF5T3JUeXBlZEFycmF5KHYpJiYodj12WzBd LFNbdl18fCh2PTApKTt2YXIgeT1vLnBhdHRlcm4sYj15JiZ4LmdldFBhdHRlcm5BdHRyKHku c2hhcGUsdC5pLCIiKTtpZih2JiYibm9uZSIhPT12KXt2YXIgXz10Lm1nYztfP2Q9ITA6Xz1n LmNvbG9yO3ZhciB3PXIudWlkO2QmJih3Kz0iLSIrdC5pKSx4LmdyYWRpZW50KGUsYSx3LHYs W1swLF9dLFsxLGZdXSwiZmlsbCIpfWVsc2UgaWYoYil7dmFyIGs9eC5nZXRQYXR0ZXJuQXR0 cih5LmJnY29sb3IsdC5pLG51bGwpLEE9eC5nZXRQYXR0ZXJuQXR0cih5LmZnY29sb3IsdC5p LG51bGwpLE09eS5mZ29wYWNpdHksRT14LmdldFBhdHRlcm5BdHRyKHkuc2l6ZSx0LmksOCks TD14LmdldFBhdHRlcm5BdHRyKHkuc29saWRpdHksdC5pLC4zKSxDPXQubWNjfHxpLmlzQXJy YXlPclR5cGVkQXJyYXkoeS5zaGFwZSl8fGkuaXNBcnJheU9yVHlwZWRBcnJheSh5LmJnY29s b3IpfHxpLmlzQXJyYXlPclR5cGVkQXJyYXkoeS5zaXplKXx8aS5pc0FycmF5T3JUeXBlZEFy cmF5KHkuc29saWRpdHkpLFA9ci51aWQ7QyYmKFArPSItIit0LmkpLHgucGF0dGVybihlLCJw b2ludCIsYSxQLGIsRSxMLHQubWNjLHkuZmlsbG1vZGUsayxBLE0pfWVsc2UgYy5maWxsKGUs Zik7cCYmYy5zdHJva2UoZSxoKX19LHgubWFrZVBvaW50U3R5bGVGbnM9ZnVuY3Rpb24odCl7 dmFyIGU9e30scj10Lm1hcmtlcjtyZXR1cm4gZS5tYXJrZXJTY2FsZT14LnRyeUNvbG9yc2Nh bGUociwiIiksZS5saW5lU2NhbGU9eC50cnlDb2xvcnNjYWxlKHIsImxpbmUiKSxsLnRyYWNl SXModCwic3ltYm9scyIpJiYoZS5tczJtcmM9Zy5pc0J1YmJsZSh0KT92KHQpOmZ1bmN0aW9u KCl7cmV0dXJuKHIuc2l6ZXx8NikvMn0pLHQuc2VsZWN0ZWRwb2ludHMmJmkuZXh0ZW5kRmxh dChlLHgubWFrZVNlbGVjdGVkUG9pbnRTdHlsZUZucyh0KSksZX0seC5tYWtlU2VsZWN0ZWRQ b2ludFN0eWxlRm5zPWZ1bmN0aW9uKHQpe3ZhciBlPXt9LHI9dC5zZWxlY3RlZHx8e30sbj10 LnVuc2VsZWN0ZWR8fHt9LGE9dC5tYXJrZXJ8fHt9LG89ci5tYXJrZXJ8fHt9LHM9bi5tYXJr ZXJ8fHt9LGM9YS5vcGFjaXR5LHU9by5vcGFjaXR5LGY9cy5vcGFjaXR5LGg9dm9pZCAwIT09 dSxwPXZvaWQgMCE9PWY7KGkuaXNBcnJheU9yVHlwZWRBcnJheShjKXx8aHx8cCkmJihlLnNl bGVjdGVkT3BhY2l0eUZuPWZ1bmN0aW9uKHQpe3ZhciBlPXZvaWQgMD09PXQubW8/YS5vcGFj aXR5OnQubW87cmV0dXJuIHQuc2VsZWN0ZWQ/aD91OmU6cD9mOm0qZX0pO3ZhciBkPWEuY29s b3IsZz1vLmNvbG9yLHY9cy5jb2xvcjsoZ3x8dikmJihlLnNlbGVjdGVkQ29sb3JGbj1mdW5j dGlvbih0KXt2YXIgZT10Lm1jY3x8ZDtyZXR1cm4gdC5zZWxlY3RlZD9nfHxlOnZ8fGV9KTt2 YXIgeT1hLnNpemUseD1vLnNpemUsYj1zLnNpemUsXz12b2lkIDAhPT14LHc9dm9pZCAwIT09 YjtyZXR1cm4gbC50cmFjZUlzKHQsInN5bWJvbHMiKSYmKF98fHcpJiYoZS5zZWxlY3RlZFNp emVGbj1mdW5jdGlvbih0KXt2YXIgZT10Lm1yY3x8eS8yO3JldHVybiB0LnNlbGVjdGVkP18/ eC8yOmU6dz9iLzI6ZX0pLGV9LHgubWFrZVNlbGVjdGVkVGV4dFN0eWxlRm5zPWZ1bmN0aW9u KHQpe3ZhciBlPXt9LHI9dC5zZWxlY3RlZHx8e30sbj10LnVuc2VsZWN0ZWR8fHt9LGk9dC50 ZXh0Zm9udHx8e30sYT1yLnRleHRmb250fHx7fSxvPW4udGV4dGZvbnR8fHt9LHM9aS5jb2xv cixsPWEuY29sb3IsdT1vLmNvbG9yO3JldHVybiBlLnNlbGVjdGVkVGV4dENvbG9yRm49ZnVu Y3Rpb24odCl7dmFyIGU9dC50Y3x8cztyZXR1cm4gdC5zZWxlY3RlZD9sfHxlOnV8fChsP2U6 Yy5hZGRPcGFjaXR5KGUsbSkpfSxlfSx4LnNlbGVjdGVkUG9pbnRTdHlsZT1mdW5jdGlvbih0 LGUpe2lmKHQuc2l6ZSgpJiZlLnNlbGVjdGVkcG9pbnRzKXt2YXIgcj14Lm1ha2VTZWxlY3Rl ZFBvaW50U3R5bGVGbnMoZSksaT1lLm1hcmtlcnx8e30sYT1bXTtyLnNlbGVjdGVkT3BhY2l0 eUZuJiZhLnB1c2goKGZ1bmN0aW9uKHQsZSl7dC5zdHlsZSgib3BhY2l0eSIsci5zZWxlY3Rl ZE9wYWNpdHlGbihlKSl9KSksci5zZWxlY3RlZENvbG9yRm4mJmEucHVzaCgoZnVuY3Rpb24o dCxlKXtjLmZpbGwodCxyLnNlbGVjdGVkQ29sb3JGbihlKSl9KSksci5zZWxlY3RlZFNpemVG biYmYS5wdXNoKChmdW5jdGlvbih0LGUpe3ZhciBuPWUubXh8fGkuc3ltYm9sfHwwLGE9ci5z ZWxlY3RlZFNpemVGbihlKTt0LmF0dHIoImQiLFQoeC5zeW1ib2xOdW1iZXIobiksYSkpLGUu bXJjMj1hfSkpLGEubGVuZ3RoJiZ0LmVhY2goKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uLnNl bGVjdCh0aGlzKSxyPTA7cjxhLmxlbmd0aDtyKyspYVtyXShlLHQpfSkpfX0seC50cnlDb2xv cnNjYWxlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZT9pLm5lc3RlZFByb3BlcnR5KHQsZSkuZ2V0 KCk6dDtpZihyKXt2YXIgbj1yLmNvbG9yO2lmKChyLmNvbG9yc2NhbGV8fHIuX2NvbG9yQXgp JiZpLmlzQXJyYXlPclR5cGVkQXJyYXkobikpcmV0dXJuIHUubWFrZUNvbG9yU2NhbGVGdW5j RnJvbVRyYWNlKHIpfXJldHVybiBpLmlkZW50aXR5fTt2YXIgRT17c3RhcnQ6MSxlbmQ6LTEs bWlkZGxlOjAsYm90dG9tOjEsdG9wOi0xfTtmdW5jdGlvbiBMKHQsZSxyLGksYSl7dmFyIG89 bi5zZWxlY3QodC5ub2RlKCkucGFyZW50Tm9kZSkscz0tMSE9PWUuaW5kZXhPZigidG9wIik/ InRvcCI6LTEhPT1lLmluZGV4T2YoImJvdHRvbSIpPyJib3R0b20iOiJtaWRkbGUiLGw9LTEh PT1lLmluZGV4T2YoImxlZnQiKT8iZW5kIjotMSE9PWUuaW5kZXhPZigicmlnaHQiKT8ic3Rh cnQiOiJtaWRkbGUiLGM9aT9pLy44KzE6MCx1PShoLmxpbmVDb3VudCh0KS0xKSpkKzEscD1F W2xdKmMsbT0uNzUqcitFW3NdKmMrKEVbc10tMSkqdSpyLzI7dC5hdHRyKCJ0ZXh0LWFuY2hv ciIsbCksYXx8by5hdHRyKCJ0cmFuc2Zvcm0iLGYocCxtKSl9ZnVuY3Rpb24gQyh0LGUpe3Zh ciByPXQudHN8fGUudGV4dGZvbnQuc2l6ZTtyZXR1cm4gbyhyKSYmcj4wP3I6MH14LnRleHRQ b2ludFN0eWxlPWZ1bmN0aW9uKHQsZSxyKXtpZih0LnNpemUoKSl7dmFyIGE7aWYoZS5zZWxl Y3RlZHBvaW50cyl7dmFyIG89eC5tYWtlU2VsZWN0ZWRUZXh0U3R5bGVGbnMoZSk7YT1vLnNl bGVjdGVkVGV4dENvbG9yRm59dmFyIHM9ZS50ZXh0dGVtcGxhdGUsbD1yLl9mdWxsTGF5b3V0 O3QuZWFjaCgoZnVuY3Rpb24odCl7dmFyIG89bi5zZWxlY3QodGhpcyksYz1zP2kuZXh0cmFj dE9wdGlvbih0LGUsInR4dCIsInRleHR0ZW1wbGF0ZSIpOmkuZXh0cmFjdE9wdGlvbih0LGUs InR4IiwidGV4dCIpO2lmKGN8fDA9PT1jKXtpZihzKXt2YXIgdT1lLl9tb2R1bGUuZm9ybWF0 TGFiZWxzLGY9dT91KHQsZSxsKTp7fSxwPXt9O3kocCxlLHQuaSk7dmFyIGQ9ZS5fbWV0YXx8 e307Yz1pLnRleHR0ZW1wbGF0ZVN0cmluZyhjLGYsbC5fZDNsb2NhbGUscCx0LGQpfXZhciBt PXQudHB8fGUudGV4dHBvc2l0aW9uLGc9Qyh0LGUpLHY9YT9hKHQpOnQudGN8fGUudGV4dGZv bnQuY29sb3I7by5jYWxsKHguZm9udCx0LnRmfHxlLnRleHRmb250LmZhbWlseSxnLHYpLnRl eHQoYykuY2FsbChoLmNvbnZlcnRUb1RzcGFucyxyKS5jYWxsKEwsbSxnLHQubXJjKX1lbHNl IG8ucmVtb3ZlKCl9KSl9fSx4LnNlbGVjdGVkVGV4dFN0eWxlPWZ1bmN0aW9uKHQsZSl7aWYo dC5zaXplKCkmJmUuc2VsZWN0ZWRwb2ludHMpe3ZhciByPXgubWFrZVNlbGVjdGVkVGV4dFN0 eWxlRm5zKGUpO3QuZWFjaCgoZnVuY3Rpb24odCl7dmFyIGk9bi5zZWxlY3QodGhpcyksYT1y LnNlbGVjdGVkVGV4dENvbG9yRm4odCksbz10LnRwfHxlLnRleHRwb3NpdGlvbixzPUModCxl KTtjLmZpbGwoaSxhKTt2YXIgdT1sLnRyYWNlSXMoZSwiYmFyLWxpa2UiKTtMKGksbyxzLHQu bXJjMnx8dC5tcmMsdSl9KSl9fTtmdW5jdGlvbiBQKHQsZSxyLGkpe3ZhciBhPXRbMF0tZVsw XSxvPXRbMV0tZVsxXSxzPXJbMF0tZVswXSxsPXJbMV0tZVsxXSxjPU1hdGgucG93KGEqYStv Km8sLjI1KSx1PU1hdGgucG93KHMqcytsKmwsLjI1KSxmPSh1KnUqYS1jKmMqcykqaSxoPSh1 KnUqby1jKmMqbCkqaSxwPTMqdSooYyt1KSxkPTMqYyooYyt1KTtyZXR1cm5bW24ucm91bmQo ZVswXSsocCYmZi9wKSwyKSxuLnJvdW5kKGVbMV0rKHAmJmgvcCksMildLFtuLnJvdW5kKGVb MF0tKGQmJmYvZCksMiksbi5yb3VuZChlWzFdLShkJiZoL2QpLDIpXV19eC5zbW9vdGhvcGVu PWZ1bmN0aW9uKHQsZSl7aWYodC5sZW5ndGg8MylyZXR1cm4iTSIrdC5qb2luKCJMIik7dmFy IHIsbj0iTSIrdFswXSxpPVtdO2ZvcihyPTE7cjx0Lmxlbmd0aC0xO3IrKylpLnB1c2goUCh0 W3ItMV0sdFtyXSx0W3IrMV0sZSkpO2ZvcihuKz0iUSIraVswXVswXSsiICIrdFsxXSxyPTI7 cjx0Lmxlbmd0aC0xO3IrKyluKz0iQyIraVtyLTJdWzFdKyIgIitpW3ItMV1bMF0rIiAiK3Rb cl07cmV0dXJuIG4rPSJRIitpW3QubGVuZ3RoLTNdWzFdKyIgIit0W3QubGVuZ3RoLTFdfSx4 LnNtb290aGNsb3NlZD1mdW5jdGlvbih0LGUpe2lmKHQubGVuZ3RoPDMpcmV0dXJuIk0iK3Qu am9pbigiTCIpKyJaIjt2YXIgcixuPSJNIit0WzBdLGk9dC5sZW5ndGgtMSxhPVtQKHRbaV0s dFswXSx0WzFdLGUpXTtmb3Iocj0xO3I8aTtyKyspYS5wdXNoKFAodFtyLTFdLHRbcl0sdFty KzFdLGUpKTtmb3IoYS5wdXNoKFAodFtpLTFdLHRbaV0sdFswXSxlKSkscj0xO3I8PWk7cisr KW4rPSJDIithW3ItMV1bMV0rIiAiK2Fbcl1bMF0rIiAiK3Rbcl07cmV0dXJuIG4rPSJDIith W2ldWzFdKyIgIithWzBdWzBdKyIgIit0WzBdKyJaIn07dmFyIEk9e2h2OmZ1bmN0aW9uKHQs ZSl7cmV0dXJuIkgiK24ucm91bmQoZVswXSwyKSsiViIrbi5yb3VuZChlWzFdLDIpfSx2aDpm dW5jdGlvbih0LGUpe3JldHVybiJWIituLnJvdW5kKGVbMV0sMikrIkgiK24ucm91bmQoZVsw XSwyKX0saHZoOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIkgiK24ucm91bmQoKHRbMF0rZVswXSkv MiwyKSsiViIrbi5yb3VuZChlWzFdLDIpKyJIIituLnJvdW5kKGVbMF0sMil9LHZodjpmdW5j dGlvbih0LGUpe3JldHVybiJWIituLnJvdW5kKCh0WzFdK2VbMV0pLzIsMikrIkgiK24ucm91 bmQoZVswXSwyKSsiViIrbi5yb3VuZChlWzFdLDIpfX0sTz1mdW5jdGlvbih0LGUpe3JldHVy biJMIituLnJvdW5kKGVbMF0sMikrIiwiK24ucm91bmQoZVsxXSwyKX07eC5zdGVwcz1mdW5j dGlvbih0KXt2YXIgZT1JW3RdfHxPO3JldHVybiBmdW5jdGlvbih0KXtmb3IodmFyIHI9Ik0i K24ucm91bmQodFswXVswXSwyKSsiLCIrbi5yb3VuZCh0WzBdWzFdLDIpLGk9MTtpPHQubGVu Z3RoO2krKylyKz1lKHRbaS0xXSx0W2ldKTtyZXR1cm4gcn19LHgubWFrZVRlc3Rlcj1mdW5j dGlvbigpe3ZhciB0PWkuZW5zdXJlU2luZ2xlQnlJZChuLnNlbGVjdCgiYm9keSIpLCJzdmci LCJqcy1wbG90bHktdGVzdGVyIiwoZnVuY3Rpb24odCl7dC5hdHRyKHAuc3ZnQXR0cnMpLnN0 eWxlKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6Ii0xMDAwMHB4Iix0b3A6Ii0xMDAwMHB4 Iix3aWR0aDoiOTAwMHB4IixoZWlnaHQ6IjkwMDBweCIsInotaW5kZXgiOiIxIn0pfSkpLGU9 aS5lbnN1cmVTaW5nbGUodCwicGF0aCIsImpzLXJlZmVyZW5jZS1wb2ludCIsKGZ1bmN0aW9u KHQpe3QuYXR0cigiZCIsIk0wLDBIMVYxSDBaIikuc3R5bGUoeyJzdHJva2Utd2lkdGgiOjAs ZmlsbDoiYmxhY2sifSl9KSk7eC50ZXN0ZXI9dCx4LnRlc3RyZWY9ZX0seC5zYXZlZEJCb3hl cz17fTt2YXIgej0wO2Z1bmN0aW9uIEQodCl7dmFyIGU9dC5nZXRBdHRyaWJ1dGUoImRhdGEt dW5mb3JtYXR0ZWQiKTtpZihudWxsIT09ZSlyZXR1cm4gZSt0LmdldEF0dHJpYnV0ZSgiZGF0 YS1tYXRoIikrdC5nZXRBdHRyaWJ1dGUoInRleHQtYW5jaG9yIikrdC5nZXRBdHRyaWJ1dGUo InN0eWxlIil9ZnVuY3Rpb24gUih0LGUpe2lmKCF0KXJldHVybiBudWxsO3ZhciByPWUuX2Nv bnRleHQsbj1yLl9leHBvcnRlZFBsb3Q/IiI6ci5fYmFzZVVybHx8IiI7cmV0dXJuIG4/InVy bCgnIituKyIjIit0KyInKSI6InVybCgjIit0KyIpIn14LmJCb3g9ZnVuY3Rpb24odCxlLHIp e3ZhciBhLG8scztpZihyfHwocj1EKHQpKSxyKXtpZihhPXguc2F2ZWRCQm94ZXNbcl0pcmV0 dXJuIGkuZXh0ZW5kRmxhdCh7fSxhKX1lbHNlIGlmKDE9PT10LmNoaWxkTm9kZXMubGVuZ3Ro KXt2YXIgbD10LmNoaWxkTm9kZXNbMF07aWYocj1EKGwpKXt2YXIgYz0rbC5nZXRBdHRyaWJ1 dGUoIngiKXx8MCx1PStsLmdldEF0dHJpYnV0ZSgieSIpfHwwLGY9bC5nZXRBdHRyaWJ1dGUo InRyYW5zZm9ybSIpO2lmKCFmKXt2YXIgcD14LmJCb3gobCwhMSxyKTtyZXR1cm4gYyYmKHAu bGVmdCs9YyxwLnJpZ2h0Kz1jKSx1JiYocC50b3ArPXUscC5ib3R0b20rPXUpLHB9aWYocis9 In4iK2MrIn4iK3UrIn4iK2YsYT14LnNhdmVkQkJveGVzW3JdKXJldHVybiBpLmV4dGVuZEZs YXQoe30sYSl9fWU/bz10OihzPXgudGVzdGVyLm5vZGUoKSxvPXQuY2xvbmVOb2RlKCEwKSxz LmFwcGVuZENoaWxkKG8pKSxuLnNlbGVjdChvKS5hdHRyKCJ0cmFuc2Zvcm0iLG51bGwpLmNh bGwoaC5wb3NpdGlvblRleHQsMCwwKTt2YXIgZD1vLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp LG09eC50ZXN0cmVmLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlfHxzLnJlbW92 ZUNoaWxkKG8pO3ZhciBnPXtoZWlnaHQ6ZC5oZWlnaHQsd2lkdGg6ZC53aWR0aCxsZWZ0OmQu bGVmdC1tLmxlZnQsdG9wOmQudG9wLW0udG9wLHJpZ2h0OmQucmlnaHQtbS5sZWZ0LGJvdHRv bTpkLmJvdHRvbS1tLnRvcH07cmV0dXJuIHo+PTFlNCYmKHguc2F2ZWRCQm94ZXM9e30sej0w KSxyJiYoeC5zYXZlZEJCb3hlc1tyXT1nKSx6KyssaS5leHRlbmRGbGF0KHt9LGcpfSx4LnNl dENsaXBVcmw9ZnVuY3Rpb24odCxlLHIpe3QuYXR0cigiY2xpcC1wYXRoIixSKGUscikpfSx4 LmdldFRyYW5zbGF0ZT1mdW5jdGlvbih0KXt2YXIgZT0odFt0LmF0dHI/ImF0dHIiOiJnZXRB dHRyaWJ1dGUiXSgidHJhbnNmb3JtIil8fCIiKS5yZXBsYWNlKC8uKlxidHJhbnNsYXRlXCgo LT9cZCpcLj9cZCopW14tXGRdKigtP1xkKlwuP1xkKilbXlxkXS4qLywoZnVuY3Rpb24odCxl LHIpe3JldHVybltlLHJdLmpvaW4oIiAiKX0pKS5zcGxpdCgiICIpO3JldHVybnt4OitlWzBd fHwwLHk6K2VbMV18fDB9fSx4LnNldFRyYW5zbGF0ZT1mdW5jdGlvbih0LGUscil7dmFyIG49 dC5hdHRyPyJhdHRyIjoiZ2V0QXR0cmlidXRlIixpPXQuYXR0cj8iYXR0ciI6InNldEF0dHJp YnV0ZSIsYT10W25dKCJ0cmFuc2Zvcm0iKXx8IiI7cmV0dXJuIGU9ZXx8MCxyPXJ8fDAsYT1h LnJlcGxhY2UoLyhcYnRyYW5zbGF0ZVwoLio/XCk7PykvLCIiKS50cmltKCksYT0oYSs9Zihl LHIpKS50cmltKCksdFtpXSgidHJhbnNmb3JtIixhKSxhfSx4LmdldFNjYWxlPWZ1bmN0aW9u KHQpe3ZhciBlPSh0W3QuYXR0cj8iYXR0ciI6ImdldEF0dHJpYnV0ZSJdKCJ0cmFuc2Zvcm0i KXx8IiIpLnJlcGxhY2UoLy4qXGJzY2FsZVwoKFxkKlwuP1xkKilbXlxkXSooXGQqXC4/XGQq KVteXGRdLiovLChmdW5jdGlvbih0LGUscil7cmV0dXJuW2Uscl0uam9pbigiICIpfSkpLnNw bGl0KCIgIik7cmV0dXJue3g6K2VbMF18fDEseTorZVsxXXx8MX19LHguc2V0U2NhbGU9ZnVu Y3Rpb24odCxlLHIpe3ZhciBuPXQuYXR0cj8iYXR0ciI6ImdldEF0dHJpYnV0ZSIsaT10LmF0 dHI/ImF0dHIiOiJzZXRBdHRyaWJ1dGUiLGE9dFtuXSgidHJhbnNmb3JtIil8fCIiO3JldHVy biBlPWV8fDEscj1yfHwxLGE9YS5yZXBsYWNlKC8oXGJzY2FsZVwoLio/XCk7PykvLCIiKS50 cmltKCksYT0oYSs9InNjYWxlKCIrZSsiLCIrcisiKSIpLnRyaW0oKSx0W2ldKCJ0cmFuc2Zv cm0iLGEpLGF9O3ZhciBGPS9ccypzYy4qLzt4LnNldFBvaW50R3JvdXBTY2FsZT1mdW5jdGlv bih0LGUscil7aWYoZT1lfHwxLHI9cnx8MSx0KXt2YXIgbj0xPT09ZSYmMT09PXI/IiI6InNj YWxlKCIrZSsiLCIrcisiKSI7dC5lYWNoKChmdW5jdGlvbigpe3ZhciB0PSh0aGlzLmdldEF0 dHJpYnV0ZSgidHJhbnNmb3JtIil8fCIiKS5yZXBsYWNlKEYsIiIpO3Q9KHQrPW4pLnRyaW0o KSx0aGlzLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIix0KX0pKX19O3ZhciBCPS90cmFuc2xh dGVcKFteKV0qXClccyokLzt4LnNldFRleHRQb2ludHNTY2FsZT1mdW5jdGlvbih0LGUscil7 dCYmdC5lYWNoKChmdW5jdGlvbigpe3ZhciB0LGk9bi5zZWxlY3QodGhpcyksYT1pLnNlbGVj dCgidGV4dCIpO2lmKGEubm9kZSgpKXt2YXIgbz1wYXJzZUZsb2F0KGEuYXR0cigieCIpfHww KSxzPXBhcnNlRmxvYXQoYS5hdHRyKCJ5Iil8fDApLGw9KGkuYXR0cigidHJhbnNmb3JtIil8 fCIiKS5tYXRjaChCKTt0PTE9PT1lJiYxPT09cj9bXTpbZihvLHMpLCJzY2FsZSgiK2UrIiwi K3IrIikiLGYoLW8sLXMpXSxsJiZ0LnB1c2gobCksaS5hdHRyKCJ0cmFuc2Zvcm0iLHQuam9p bigiIikpfX0pKX19LHsiLi4vLi4vY29tcG9uZW50cy9meC9oZWxwZXJzIjo0MDIsIi4uLy4u L2NvbnN0YW50cy9hbGlnbm1lbnQiOjQ3MSwiLi4vLi4vY29uc3RhbnRzL2ludGVyYWN0aW9u cyI6NDc4LCIuLi8uLi9jb25zdGFudHMveG1sbnNfbmFtZXNwYWNlcyI6NDgwLCIuLi8uLi9s aWIiOjUwMywiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo1MjksIi4uLy4uL3JlZ2lzdHJ5 Ijo2MzgsIi4uLy4uL3RyYWNlcy9zY2F0dGVyL21ha2VfYnViYmxlX3NpemVfZnVuYyI6OTQ0 LCIuLi8uLi90cmFjZXMvc2NhdHRlci9zdWJ0eXBlcyI6OTUyLCIuLi9jb2xvciI6MzY2LCIu Li9jb2xvcnNjYWxlIjozNzgsIi4vc3ltYm9sX2RlZnMiOjM4OSwiQHBsb3RseS9kMyI6NTgs ImZhc3QtaXNudW1lcmljIjoxOTAsdGlueWNvbG9yMjozMTJ9XSwzODk6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiQHBsb3RseS9kMyIpO2UuZXhwb3J0cz17Y2ly Y2xlOntuOjAsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKHQsMik7cmV0dXJuIk0iK2Ur IiwwQSIrZSsiLCIrZSsiIDAgMSwxIDAsLSIrZSsiQSIrZSsiLCIrZSsiIDAgMCwxICIrZSsi LDBaIn19LHNxdWFyZTp7bjoxLGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0LDIpO3Jl dHVybiJNIitlKyIsIitlKyJILSIrZSsiVi0iK2UrIkgiK2UrIloifX0sZGlhbW9uZDp7bjoy LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCgxLjMqdCwyKTtyZXR1cm4iTSIrZSsiLDBM MCwiK2UrIkwtIitlKyIsMEwwLC0iK2UrIloifX0sY3Jvc3M6e246MyxmOmZ1bmN0aW9uKHQp e3ZhciBlPW4ucm91bmQoLjQqdCwyKSxyPW4ucm91bmQoMS4yKnQsMik7cmV0dXJuIk0iK3Ir IiwiK2UrIkgiK2UrIlYiK3IrIkgtIitlKyJWIitlKyJILSIrcisiVi0iK2UrIkgtIitlKyJW LSIrcisiSCIrZSsiVi0iK2UrIkgiK3IrIloifX0seDp7bjo0LGY6ZnVuY3Rpb24odCl7dmFy IGU9bi5yb3VuZCguOCp0L01hdGguc3FydCgyKSwyKSxyPSJsIitlKyIsIitlLGk9ImwiK2Ur IiwtIitlLGE9ImwtIitlKyIsLSIrZSxvPSJsLSIrZSsiLCIrZTtyZXR1cm4iTTAsIitlK3Ir aSthK2krYStvK2ErbytyK28rcisiWiJ9fSwidHJpYW5nbGUtdXAiOntuOjUsZjpmdW5jdGlv bih0KXt2YXIgZT1uLnJvdW5kKDIqdC9NYXRoLnNxcnQoMyksMik7cmV0dXJuIk0tIitlKyIs IituLnJvdW5kKHQvMiwyKSsiSCIrZSsiTDAsLSIrbi5yb3VuZCh0LDIpKyJaIn19LCJ0cmlh bmdsZS1kb3duIjp7bjo2LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCgyKnQvTWF0aC5z cXJ0KDMpLDIpO3JldHVybiJNLSIrZSsiLC0iK24ucm91bmQodC8yLDIpKyJIIitlKyJMMCwi K24ucm91bmQodCwyKSsiWiJ9fSwidHJpYW5nbGUtbGVmdCI6e246NyxmOmZ1bmN0aW9uKHQp e3ZhciBlPW4ucm91bmQoMip0L01hdGguc3FydCgzKSwyKTtyZXR1cm4iTSIrbi5yb3VuZCh0 LzIsMikrIiwtIitlKyJWIitlKyJMLSIrbi5yb3VuZCh0LDIpKyIsMFoifX0sInRyaWFuZ2xl LXJpZ2h0Ijp7bjo4LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCgyKnQvTWF0aC5zcXJ0 KDMpLDIpO3JldHVybiJNLSIrbi5yb3VuZCh0LzIsMikrIiwtIitlKyJWIitlKyJMIituLnJv dW5kKHQsMikrIiwwWiJ9fSwidHJpYW5nbGUtbmUiOntuOjksZjpmdW5jdGlvbih0KXt2YXIg ZT1uLnJvdW5kKC42KnQsMikscj1uLnJvdW5kKDEuMip0LDIpO3JldHVybiJNLSIrcisiLC0i K2UrIkgiK2UrIlYiK3IrIloifX0sInRyaWFuZ2xlLXNlIjp7bjoxMCxmOmZ1bmN0aW9uKHQp e3ZhciBlPW4ucm91bmQoLjYqdCwyKSxyPW4ucm91bmQoMS4yKnQsMik7cmV0dXJuIk0iK2Ur IiwtIityKyJWIitlKyJILSIrcisiWiJ9fSwidHJpYW5nbGUtc3ciOntuOjExLGY6ZnVuY3Rp b24odCl7dmFyIGU9bi5yb3VuZCguNip0LDIpLHI9bi5yb3VuZCgxLjIqdCwyKTtyZXR1cm4i TSIrcisiLCIrZSsiSC0iK2UrIlYtIityKyJaIn19LCJ0cmlhbmdsZS1udyI6e246MTIsZjpm dW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKC42KnQsMikscj1uLnJvdW5kKDEuMip0LDIpO3Jl dHVybiJNLSIrZSsiLCIrcisiVi0iK2UrIkgiK3IrIloifX0scGVudGFnb246e246MTMsZjpm dW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKC45NTEqdCwyKSxyPW4ucm91bmQoLjU4OCp0LDIp LGk9bi5yb3VuZCgtdCwyKSxhPW4ucm91bmQoLS4zMDkqdCwyKTtyZXR1cm4iTSIrZSsiLCIr YSsiTCIrcisiLCIrbi5yb3VuZCguODA5KnQsMikrIkgtIityKyJMLSIrZSsiLCIrYSsiTDAs IitpKyJaIn19LGhleGFnb246e246MTQsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKHQs Mikscj1uLnJvdW5kKHQvMiwyKSxpPW4ucm91bmQodCpNYXRoLnNxcnQoMykvMiwyKTtyZXR1 cm4iTSIraSsiLC0iK3IrIlYiK3IrIkwwLCIrZSsiTC0iK2krIiwiK3IrIlYtIityKyJMMCwt IitlKyJaIn19LGhleGFnb24yOntuOjE1LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0 LDIpLHI9bi5yb3VuZCh0LzIsMiksaT1uLnJvdW5kKHQqTWF0aC5zcXJ0KDMpLzIsMik7cmV0 dXJuIk0tIityKyIsIitpKyJIIityKyJMIitlKyIsMEwiK3IrIiwtIitpKyJILSIrcisiTC0i K2UrIiwwWiJ9fSxvY3RhZ29uOntuOjE2LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCgu OTI0KnQsMikscj1uLnJvdW5kKC4zODMqdCwyKTtyZXR1cm4iTS0iK3IrIiwtIitlKyJIIity KyJMIitlKyIsLSIrcisiViIrcisiTCIrcisiLCIrZSsiSC0iK3IrIkwtIitlKyIsIityKyJW LSIrcisiWiJ9fSxzdGFyOntuOjE3LGY6ZnVuY3Rpb24odCl7dmFyIGU9MS40KnQscj1uLnJv dW5kKC4yMjUqZSwyKSxpPW4ucm91bmQoLjk1MSplLDIpLGE9bi5yb3VuZCguMzYzKmUsMiks bz1uLnJvdW5kKC41ODgqZSwyKSxzPW4ucm91bmQoLWUsMiksbD1uLnJvdW5kKC0uMzA5KmUs MiksYz1uLnJvdW5kKC4xMTgqZSwyKSx1PW4ucm91bmQoLjgwOSplLDIpO3JldHVybiJNIity KyIsIitsKyJIIitpKyJMIithKyIsIitjKyJMIitvKyIsIit1KyJMMCwiK24ucm91bmQoLjM4 MiplLDIpKyJMLSIrbysiLCIrdSsiTC0iK2ErIiwiK2MrIkwtIitpKyIsIitsKyJILSIrcisi TDAsIitzKyJaIn19LGhleGFncmFtOntuOjE4LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3Vu ZCguNjYqdCwyKSxyPW4ucm91bmQoLjM4KnQsMiksaT1uLnJvdW5kKC43Nip0LDIpO3JldHVy biJNLSIraSsiLDBsLSIrcisiLC0iK2UrImgiK2krImwiK3IrIiwtIitlKyJsIityKyIsIitl KyJoIitpKyJsLSIrcisiLCIrZSsibCIrcisiLCIrZSsiaC0iK2krImwtIityKyIsIitlKyJs LSIrcisiLC0iK2UrImgtIitpKyJaIn19LCJzdGFyLXRyaWFuZ2xlLXVwIjp7bjoxOSxmOmZ1 bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQodCpNYXRoLnNxcnQoMykqLjgsMikscj1uLnJvdW5k KC44KnQsMiksaT1uLnJvdW5kKDEuNip0LDIpLGE9bi5yb3VuZCg0KnQsMiksbz0iQSAiK2Er IiwiK2ErIiAwIDAgMSAiO3JldHVybiJNLSIrZSsiLCIrcitvK2UrIiwiK3IrbysiMCwtIitp K28rIi0iK2UrIiwiK3IrIloifX0sInN0YXItdHJpYW5nbGUtZG93biI6e246MjAsZjpmdW5j dGlvbih0KXt2YXIgZT1uLnJvdW5kKHQqTWF0aC5zcXJ0KDMpKi44LDIpLHI9bi5yb3VuZCgu OCp0LDIpLGk9bi5yb3VuZCgxLjYqdCwyKSxhPW4ucm91bmQoNCp0LDIpLG89IkEgIithKyIs IithKyIgMCAwIDEgIjtyZXR1cm4iTSIrZSsiLC0iK3IrbysiLSIrZSsiLC0iK3IrbysiMCwi K2krbytlKyIsLSIrcisiWiJ9fSwic3Rhci1zcXVhcmUiOntuOjIxLGY6ZnVuY3Rpb24odCl7 dmFyIGU9bi5yb3VuZCgxLjEqdCwyKSxyPW4ucm91bmQoMip0LDIpLGk9IkEgIityKyIsIity KyIgMCAwIDEgIjtyZXR1cm4iTS0iK2UrIiwtIitlK2krIi0iK2UrIiwiK2UraStlKyIsIitl K2krZSsiLC0iK2UraSsiLSIrZSsiLC0iK2UrIloifX0sInN0YXItZGlhbW9uZCI6e246MjIs ZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKDEuNCp0LDIpLHI9bi5yb3VuZCgxLjkqdCwy KSxpPSJBICIrcisiLCIrcisiIDAgMCAxICI7cmV0dXJuIk0tIitlKyIsMCIraSsiMCwiK2Ur aStlKyIsMCIraSsiMCwtIitlK2krIi0iK2UrIiwwWiJ9fSwiZGlhbW9uZC10YWxsIjp7bjoy MyxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoLjcqdCwyKSxyPW4ucm91bmQoMS40KnQs Mik7cmV0dXJuIk0wLCIrcisiTCIrZSsiLDBMMCwtIityKyJMLSIrZSsiLDBaIn19LCJkaWFt b25kLXdpZGUiOntuOjI0LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCgxLjQqdCwyKSxy PW4ucm91bmQoLjcqdCwyKTtyZXR1cm4iTTAsIityKyJMIitlKyIsMEwwLC0iK3IrIkwtIitl KyIsMFoifX0saG91cmdsYXNzOntuOjI1LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0 LDIpO3JldHVybiJNIitlKyIsIitlKyJILSIrZSsiTCIrZSsiLC0iK2UrIkgtIitlKyJaIn0s bm9Eb3Q6ITB9LGJvd3RpZTp7bjoyNixmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQodCwy KTtyZXR1cm4iTSIrZSsiLCIrZSsiVi0iK2UrIkwtIitlKyIsIitlKyJWLSIrZSsiWiJ9LG5v RG90OiEwfSwiY2lyY2xlLWNyb3NzIjp7bjoyNyxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91 bmQodCwyKTtyZXR1cm4iTTAsIitlKyJWLSIrZSsiTSIrZSsiLDBILSIrZSsiTSIrZSsiLDBB IitlKyIsIitlKyIgMCAxLDEgMCwtIitlKyJBIitlKyIsIitlKyIgMCAwLDEgIitlKyIsMFoi fSxuZWVkTGluZTohMCxub0RvdDohMH0sImNpcmNsZS14Ijp7bjoyOCxmOmZ1bmN0aW9uKHQp e3ZhciBlPW4ucm91bmQodCwyKSxyPW4ucm91bmQodC9NYXRoLnNxcnQoMiksMik7cmV0dXJu Ik0iK3IrIiwiK3IrIkwtIityKyIsLSIrcisiTSIrcisiLC0iK3IrIkwtIityKyIsIityKyJN IitlKyIsMEEiK2UrIiwiK2UrIiAwIDEsMSAwLC0iK2UrIkEiK2UrIiwiK2UrIiAwIDAsMSAi K2UrIiwwWiJ9LG5lZWRMaW5lOiEwLG5vRG90OiEwfSwic3F1YXJlLWNyb3NzIjp7bjoyOSxm OmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQodCwyKTtyZXR1cm4iTTAsIitlKyJWLSIrZSsi TSIrZSsiLDBILSIrZSsiTSIrZSsiLCIrZSsiSC0iK2UrIlYtIitlKyJIIitlKyJaIn0sbmVl ZExpbmU6ITAsbm9Eb3Q6ITB9LCJzcXVhcmUteCI6e246MzAsZjpmdW5jdGlvbih0KXt2YXIg ZT1uLnJvdW5kKHQsMik7cmV0dXJuIk0iK2UrIiwiK2UrIkwtIitlKyIsLSIrZSsiTSIrZSsi LC0iK2UrIkwtIitlKyIsIitlKyJNIitlKyIsIitlKyJILSIrZSsiVi0iK2UrIkgiK2UrIloi fSxuZWVkTGluZTohMCxub0RvdDohMH0sImRpYW1vbmQtY3Jvc3MiOntuOjMxLGY6ZnVuY3Rp b24odCl7dmFyIGU9bi5yb3VuZCgxLjMqdCwyKTtyZXR1cm4iTSIrZSsiLDBMMCwiK2UrIkwt IitlKyIsMEwwLC0iK2UrIlpNMCwtIitlKyJWIitlKyJNLSIrZSsiLDBIIitlfSxuZWVkTGlu ZTohMCxub0RvdDohMH0sImRpYW1vbmQteCI6e246MzIsZjpmdW5jdGlvbih0KXt2YXIgZT1u LnJvdW5kKDEuMyp0LDIpLHI9bi5yb3VuZCguNjUqdCwyKTtyZXR1cm4iTSIrZSsiLDBMMCwi K2UrIkwtIitlKyIsMEwwLC0iK2UrIlpNLSIrcisiLC0iK3IrIkwiK3IrIiwiK3IrIk0tIity KyIsIityKyJMIityKyIsLSIrcn0sbmVlZExpbmU6ITAsbm9Eb3Q6ITB9LCJjcm9zcy10aGlu Ijp7bjozMyxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoMS40KnQsMik7cmV0dXJuIk0w LCIrZSsiVi0iK2UrIk0iK2UrIiwwSC0iK2V9LG5lZWRMaW5lOiEwLG5vRG90OiEwLG5vRmls bDohMH0sIngtdGhpbiI6e246MzQsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKHQsMik7 cmV0dXJuIk0iK2UrIiwiK2UrIkwtIitlKyIsLSIrZSsiTSIrZSsiLC0iK2UrIkwtIitlKyIs IitlfSxuZWVkTGluZTohMCxub0RvdDohMCxub0ZpbGw6ITB9LGFzdGVyaXNrOntuOjM1LGY6 ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCgxLjIqdCwyKSxyPW4ucm91bmQoLjg1KnQsMik7 cmV0dXJuIk0wLCIrZSsiVi0iK2UrIk0iK2UrIiwwSC0iK2UrIk0iK3IrIiwiK3IrIkwtIity KyIsLSIrcisiTSIrcisiLC0iK3IrIkwtIityKyIsIityfSxuZWVkTGluZTohMCxub0RvdDoh MCxub0ZpbGw6ITB9LGhhc2g6e246MzYsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKHQv MiwyKSxyPW4ucm91bmQodCwyKTtyZXR1cm4iTSIrZSsiLCIrcisiVi0iK3IrIm0tIityKyIs MFYiK3IrIk0iK3IrIiwiK2UrIkgtIityKyJtMCwtIityKyJIIityfSxuZWVkTGluZTohMCxu b0ZpbGw6ITB9LCJ5LXVwIjp7bjozNyxmOmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoMS4y KnQsMikscj1uLnJvdW5kKDEuNip0LDIpLGk9bi5yb3VuZCguOCp0LDIpO3JldHVybiJNLSIr ZSsiLCIraSsiTDAsME0iK2UrIiwiK2krIkwwLDBNMCwtIityKyJMMCwwIn0sbmVlZExpbmU6 ITAsbm9Eb3Q6ITAsbm9GaWxsOiEwfSwieS1kb3duIjp7bjozOCxmOmZ1bmN0aW9uKHQpe3Zh ciBlPW4ucm91bmQoMS4yKnQsMikscj1uLnJvdW5kKDEuNip0LDIpLGk9bi5yb3VuZCguOCp0 LDIpO3JldHVybiJNLSIrZSsiLC0iK2krIkwwLDBNIitlKyIsLSIraSsiTDAsME0wLCIrcisi TDAsMCJ9LG5lZWRMaW5lOiEwLG5vRG90OiEwLG5vRmlsbDohMH0sInktbGVmdCI6e246Mzks ZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKDEuMip0LDIpLHI9bi5yb3VuZCgxLjYqdCwy KSxpPW4ucm91bmQoLjgqdCwyKTtyZXR1cm4iTSIraSsiLCIrZSsiTDAsME0iK2krIiwtIitl KyJMMCwwTS0iK3IrIiwwTDAsMCJ9LG5lZWRMaW5lOiEwLG5vRG90OiEwLG5vRmlsbDohMH0s InktcmlnaHQiOntuOjQwLGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCgxLjIqdCwyKSxy PW4ucm91bmQoMS42KnQsMiksaT1uLnJvdW5kKC44KnQsMik7cmV0dXJuIk0tIitpKyIsIitl KyJMMCwwTS0iK2krIiwtIitlKyJMMCwwTSIrcisiLDBMMCwwIn0sbmVlZExpbmU6ITAsbm9E b3Q6ITAsbm9GaWxsOiEwfSwibGluZS1ldyI6e246NDEsZjpmdW5jdGlvbih0KXt2YXIgZT1u LnJvdW5kKDEuNCp0LDIpO3JldHVybiJNIitlKyIsMEgtIitlfSxuZWVkTGluZTohMCxub0Rv dDohMCxub0ZpbGw6ITB9LCJsaW5lLW5zIjp7bjo0MixmOmZ1bmN0aW9uKHQpe3ZhciBlPW4u cm91bmQoMS40KnQsMik7cmV0dXJuIk0wLCIrZSsiVi0iK2V9LG5lZWRMaW5lOiEwLG5vRG90 OiEwLG5vRmlsbDohMH0sImxpbmUtbmUiOntuOjQzLGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5y b3VuZCh0LDIpO3JldHVybiJNIitlKyIsLSIrZSsiTC0iK2UrIiwiK2V9LG5lZWRMaW5lOiEw LG5vRG90OiEwLG5vRmlsbDohMH0sImxpbmUtbnciOntuOjQ0LGY6ZnVuY3Rpb24odCl7dmFy IGU9bi5yb3VuZCh0LDIpO3JldHVybiJNIitlKyIsIitlKyJMLSIrZSsiLC0iK2V9LG5lZWRM aW5lOiEwLG5vRG90OiEwLG5vRmlsbDohMH0sImFycm93LXVwIjp7bjo0NSxmOmZ1bmN0aW9u KHQpe3ZhciBlPW4ucm91bmQodCwyKTtyZXR1cm4iTTAsMEwtIitlKyIsIituLnJvdW5kKDIq dCwyKSsiSCIrZSsiWiJ9LG5vRG90OiEwfSwiYXJyb3ctZG93biI6e246NDYsZjpmdW5jdGlv bih0KXt2YXIgZT1uLnJvdW5kKHQsMik7cmV0dXJuIk0wLDBMLSIrZSsiLC0iK24ucm91bmQo Mip0LDIpKyJIIitlKyJaIn0sbm9Eb3Q6ITB9LCJhcnJvdy1sZWZ0Ijp7bjo0NyxmOmZ1bmN0 aW9uKHQpe3ZhciBlPW4ucm91bmQoMip0LDIpLHI9bi5yb3VuZCh0LDIpO3JldHVybiJNMCww TCIrZSsiLC0iK3IrIlYiK3IrIloifSxub0RvdDohMH0sImFycm93LXJpZ2h0Ijp7bjo0OCxm OmZ1bmN0aW9uKHQpe3ZhciBlPW4ucm91bmQoMip0LDIpLHI9bi5yb3VuZCh0LDIpO3JldHVy biJNMCwwTC0iK2UrIiwtIityKyJWIityKyJaIn0sbm9Eb3Q6ITB9LCJhcnJvdy1iYXItdXAi OntuOjQ5LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCh0LDIpO3JldHVybiJNLSIrZSsi LDBIIitlKyJNMCwwTC0iK2UrIiwiK24ucm91bmQoMip0LDIpKyJIIitlKyJaIn0sbmVlZExp bmU6ITAsbm9Eb3Q6ITB9LCJhcnJvdy1iYXItZG93biI6e246NTAsZjpmdW5jdGlvbih0KXt2 YXIgZT1uLnJvdW5kKHQsMik7cmV0dXJuIk0tIitlKyIsMEgiK2UrIk0wLDBMLSIrZSsiLC0i K24ucm91bmQoMip0LDIpKyJIIitlKyJaIn0sbmVlZExpbmU6ITAsbm9Eb3Q6ITB9LCJhcnJv dy1iYXItbGVmdCI6e246NTEsZjpmdW5jdGlvbih0KXt2YXIgZT1uLnJvdW5kKDIqdCwyKSxy PW4ucm91bmQodCwyKTtyZXR1cm4iTTAsLSIrcisiViIrcisiTTAsMEwiK2UrIiwtIityKyJW IityKyJaIn0sbmVlZExpbmU6ITAsbm9Eb3Q6ITB9LCJhcnJvdy1iYXItcmlnaHQiOntuOjUy LGY6ZnVuY3Rpb24odCl7dmFyIGU9bi5yb3VuZCgyKnQsMikscj1uLnJvdW5kKHQsMik7cmV0 dXJuIk0wLC0iK3IrIlYiK3IrIk0wLDBMLSIrZSsiLC0iK3IrIlYiK3IrIloifSxuZWVkTGlu ZTohMCxub0RvdDohMH19fSx7IkBwbG90bHkvZDMiOjU4fV0sMzkwOltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17dmlzaWJsZTp7dmFsVHlwZToiYm9vbGVhbiIs ZWRpdFR5cGU6ImNhbGMifSx0eXBlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJw ZXJjZW50IiwiY29uc3RhbnQiLCJzcXJ0IiwiZGF0YSJdLGVkaXRUeXBlOiJjYWxjIn0sc3lt bWV0cmljOnt2YWxUeXBlOiJib29sZWFuIixlZGl0VHlwZToiY2FsYyJ9LGFycmF5Ont2YWxU eXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LGFycmF5bWludXM6e3ZhbFR5cGU6 ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sdmFsdWU6e3ZhbFR5cGU6Im51bWJlciIs bWluOjAsZGZsdDoxMCxlZGl0VHlwZToiY2FsYyJ9LHZhbHVlbWludXM6e3ZhbFR5cGU6Im51 bWJlciIsbWluOjAsZGZsdDoxMCxlZGl0VHlwZToiY2FsYyJ9LHRyYWNlcmVmOnt2YWxUeXBl OiJpbnRlZ2VyIixtaW46MCxkZmx0OjAsZWRpdFR5cGU6InN0eWxlIn0sdHJhY2VyZWZtaW51 czp7dmFsVHlwZToiaW50ZWdlciIsbWluOjAsZGZsdDowLGVkaXRUeXBlOiJzdHlsZSJ9LGNv cHlfeXN0eWxlOnt2YWxUeXBlOiJib29sZWFuIixlZGl0VHlwZToicGxvdCJ9LGNvcHlfenN0 eWxlOnt2YWxUeXBlOiJib29sZWFuIixlZGl0VHlwZToic3R5bGUifSxjb2xvcjp7dmFsVHlw ZToiY29sb3IiLGVkaXRUeXBlOiJzdHlsZSJ9LHRoaWNrbmVzczp7dmFsVHlwZToibnVtYmVy IixtaW46MCxkZmx0OjIsZWRpdFR5cGU6InN0eWxlIn0sd2lkdGg6e3ZhbFR5cGU6Im51bWJl ciIsbWluOjAsZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToiY2FsYyIsX2RlcHJlY2F0ZWQ6 e29wYWNpdHk6e3ZhbFR5cGU6Im51bWJlciIsZWRpdFR5cGU6InN0eWxlIn19fX0se31dLDM5 MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJp YyIpLGk9dCgiLi4vLi4vcmVnaXN0cnkiKSxhPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9h eGVzIiksbz10KCIuLi8uLi9saWIiKSxzPXQoIi4vY29tcHV0ZV9lcnJvciIpO2Z1bmN0aW9u IGwodCxlLHIsaSl7dmFyIGw9ZVsiZXJyb3JfIitpXXx8e30sYz1bXTtpZihsLnZpc2libGUm Ji0xIT09WyJsaW5lYXIiLCJsb2ciXS5pbmRleE9mKHIudHlwZSkpe2Zvcih2YXIgdT1zKGwp LGY9MDtmPHQubGVuZ3RoO2YrKyl7dmFyIGg9dFtmXSxwPWguaTtpZih2b2lkIDA9PT1wKXA9 ZjtlbHNlIGlmKG51bGw9PT1wKWNvbnRpbnVlO3ZhciBkPWhbaV07aWYobihyLmMybChkKSkp e3ZhciBtPXUoZCxwKTtpZihuKG1bMF0pJiZuKG1bMV0pKXt2YXIgZz1oW2krInMiXT1kLW1b MF0sdj1oW2krImgiXT1kK21bMV07Yy5wdXNoKGcsdil9fX12YXIgeT1yLl9pZCx4PWUuX2V4 dHJlbWVzW3ldLGI9YS5maW5kRXh0cmVtZXMocixjLG8uZXh0ZW5kRmxhdCh7dG96ZXJvOngu b3B0cy50b3plcm99LHtwYWRkZWQ6ITB9KSk7eC5taW49eC5taW4uY29uY2F0KGIubWluKSx4 Lm1heD14Lm1heC5jb25jYXQoYi5tYXgpfX1lLmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZh ciBlPXQuY2FsY2RhdGEscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdLG89blswXS50 cmFjZTtpZighMD09PW8udmlzaWJsZSYmaS50cmFjZUlzKG8sImVycm9yQmFyc09LIikpe3Zh ciBzPWEuZ2V0RnJvbUlkKHQsby54YXhpcyksYz1hLmdldEZyb21JZCh0LG8ueWF4aXMpO2wo bixvLHMsIngiKSxsKG4sbyxjLCJ5Iil9fX19LHsiLi4vLi4vbGliIjo1MDMsIi4uLy4uL3Bs b3RzL2NhcnRlc2lhbi9heGVzIjo1NTQsIi4uLy4uL3JlZ2lzdHJ5Ijo2MzgsIi4vY29tcHV0 ZV9lcnJvciI6MzkyLCJmYXN0LWlzbnVtZXJpYyI6MTkwfV0sMzkyOltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXtyZXR1cm4icGVyY2VudCI9PT10P2Z1 bmN0aW9uKHQpe3JldHVybiBNYXRoLmFicyh0KmUvMTAwKX06ImNvbnN0YW50Ij09PXQ/ZnVu Y3Rpb24oKXtyZXR1cm4gTWF0aC5hYnMoZSl9OiJzcXJ0Ij09PXQ/ZnVuY3Rpb24odCl7cmV0 dXJuIE1hdGguc3FydChNYXRoLmFicyh0KSl9OnZvaWQgMH1lLmV4cG9ydHM9ZnVuY3Rpb24o dCl7dmFyIGU9dC50eXBlLHI9dC5zeW1tZXRyaWM7aWYoImRhdGEiPT09ZSl7dmFyIGk9dC5h cnJheXx8W107aWYocilyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgcj0raVtlXTtyZXR1cm5b cixyXX07dmFyIGE9dC5hcnJheW1pbnVzfHxbXTtyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIg cj0raVtlXSxuPSthW2VdO3JldHVybiBpc05hTihyKSYmaXNOYU4obik/W05hTixOYU5dOltu fHwwLHJ8fDBdfX12YXIgbz1uKGUsdC52YWx1ZSkscz1uKGUsdC52YWx1ZW1pbnVzKTtyZXR1 cm4gcnx8dm9pZCAwPT09dC52YWx1ZW1pbnVzP2Z1bmN0aW9uKHQpe3ZhciBlPW8odCk7cmV0 dXJuW2UsZV19OmZ1bmN0aW9uKHQpe3JldHVybltzKHQpLG8odCldfX19LHt9XSwzOTM6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxp PXQoIi4uLy4uL3JlZ2lzdHJ5IiksYT10KCIuLi8uLi9saWIiKSxvPXQoIi4uLy4uL3Bsb3Rf YXBpL3Bsb3RfdGVtcGxhdGUiKSxzPXQoIi4vYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5j dGlvbih0LGUscixsKXt2YXIgYz0iZXJyb3JfIitsLmF4aXMsdT1vLm5ld0NvbnRhaW5lcihl LGMpLGY9dFtjXXx8e307ZnVuY3Rpb24gaCh0LGUpe3JldHVybiBhLmNvZXJjZShmLHUscyx0 LGUpfWlmKCExIT09aCgidmlzaWJsZSIsdm9pZCAwIT09Zi5hcnJheXx8dm9pZCAwIT09Zi52 YWx1ZXx8InNxcnQiPT09Zi50eXBlKSl7dmFyIHA9aCgidHlwZSIsImFycmF5ImluIGY/ImRh dGEiOiJwZXJjZW50IiksZD0hMDsic3FydCIhPT1wJiYoZD1oKCJzeW1tZXRyaWMiLCEoKCJk YXRhIj09PXA/ImFycmF5bWludXMiOiJ2YWx1ZW1pbnVzIilpbiBmKSkpLCJkYXRhIj09PXA/ KGgoImFycmF5IiksaCgidHJhY2VyZWYiKSxkfHwoaCgiYXJyYXltaW51cyIpLGgoInRyYWNl cmVmbWludXMiKSkpOiJwZXJjZW50IiE9PXAmJiJjb25zdGFudCIhPT1wfHwoaCgidmFsdWUi KSxkfHxoKCJ2YWx1ZW1pbnVzIikpO3ZhciBtPSJjb3B5XyIrbC5pbmhlcml0KyJzdHlsZSI7 aWYobC5pbmhlcml0KShlWyJlcnJvcl8iK2wuaW5oZXJpdF18fHt9KS52aXNpYmxlJiZoKG0s IShmLmNvbG9yfHxuKGYudGhpY2tuZXNzKXx8bihmLndpZHRoKSkpO2wuaW5oZXJpdCYmdVtt XXx8KGgoImNvbG9yIixyKSxoKCJ0aGlja25lc3MiKSxoKCJ3aWR0aCIsaS50cmFjZUlzKGUs ImdsM2QiKT8wOjQpKX19fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi8uLi9wbG90X2FwaS9wbG90 X3RlbXBsYXRlIjo1NDMsIi4uLy4uL3JlZ2lzdHJ5Ijo2MzgsIi4vYXR0cmlidXRlcyI6Mzkw LCJmYXN0LWlzbnVtZXJpYyI6MTkwfV0sMzk0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBl cyIpLm92ZXJyaWRlQWxsLGE9dCgiLi9hdHRyaWJ1dGVzIiksbz17ZXJyb3JfeDpuLmV4dGVu ZEZsYXQoe30sYSksZXJyb3JfeTpuLmV4dGVuZEZsYXQoe30sYSl9O2RlbGV0ZSBvLmVycm9y X3guY29weV96c3R5bGUsZGVsZXRlIG8uZXJyb3JfeS5jb3B5X3pzdHlsZSxkZWxldGUgby5l cnJvcl95LmNvcHlfeXN0eWxlO3ZhciBzPXtlcnJvcl94Om4uZXh0ZW5kRmxhdCh7fSxhKSxl cnJvcl95Om4uZXh0ZW5kRmxhdCh7fSxhKSxlcnJvcl96Om4uZXh0ZW5kRmxhdCh7fSxhKX07 ZGVsZXRlIHMuZXJyb3JfeC5jb3B5X3lzdHlsZSxkZWxldGUgcy5lcnJvcl95LmNvcHlfeXN0 eWxlLGRlbGV0ZSBzLmVycm9yX3ouY29weV95c3R5bGUsZGVsZXRlIHMuZXJyb3Jfei5jb3B5 X3pzdHlsZSxlLmV4cG9ydHM9e21vZHVsZVR5cGU6ImNvbXBvbmVudCIsbmFtZToiZXJyb3Ji YXJzIixzY2hlbWE6e3RyYWNlczp7c2NhdHRlcjpvLGJhcjpvLGhpc3RvZ3JhbTpvLHNjYXR0 ZXIzZDppKHMsImNhbGMiLCJuZXN0ZWQiKSxzY2F0dGVyZ2w6aShvLCJjYWxjIiwibmVzdGVk Iil9fSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY2FsYzp0KCIuL2NhbGMiKSxt YWtlQ29tcHV0ZUVycm9yOnQoIi4vY29tcHV0ZV9lcnJvciIpLHBsb3Q6dCgiLi9wbG90Iiks c3R5bGU6dCgiLi9zdHlsZSIpLGhvdmVySW5mbzpmdW5jdGlvbih0LGUscil7KGUuZXJyb3Jf eXx8e30pLnZpc2libGUmJihyLnllcnI9dC55aC10LnksZS5lcnJvcl95LnN5bW1ldHJpY3x8 KHIueWVycm5lZz10LnktdC55cykpOyhlLmVycm9yX3h8fHt9KS52aXNpYmxlJiYoci54ZXJy PXQueGgtdC54LGUuZXJyb3JfeC5zeW1tZXRyaWN8fChyLnhlcnJuZWc9dC54LXQueHMpKX19 fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIjo1MzYsIi4v YXR0cmlidXRlcyI6MzkwLCIuL2NhbGMiOjM5MSwiLi9jb21wdXRlX2Vycm9yIjozOTIsIi4v ZGVmYXVsdHMiOjM5MywiLi9wbG90IjozOTUsIi4vc3R5bGUiOjM5Nn1dLDM5NTpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJAcGxvdGx5L2QzIiksaT10KCJmYXN0 LWlzbnVtZXJpYyIpLGE9dCgiLi4vZHJhd2luZyIpLG89dCgiLi4vLi4vdHJhY2VzL3NjYXR0 ZXIvc3VidHlwZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIscyl7dmFyIGw9ci54YXhp cyxjPXIueWF4aXMsdT1zJiZzLmR1cmF0aW9uPjA7ZS5lYWNoKChmdW5jdGlvbihlKXt2YXIg ZixoPWVbMF0udHJhY2UscD1oLmVycm9yX3h8fHt9LGQ9aC5lcnJvcl95fHx7fTtoLmlkcyYm KGY9ZnVuY3Rpb24odCl7cmV0dXJuIHQuaWR9KTt2YXIgbT1vLmhhc01hcmtlcnMoaCkmJmgu bWFya2VyLm1heGRpc3BsYXllZD4wO2QudmlzaWJsZXx8cC52aXNpYmxlfHwoZT1bXSk7dmFy IGc9bi5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJnLmVycm9yYmFyIikuZGF0YShlLGYpO2lm KGcuZXhpdCgpLnJlbW92ZSgpLGUubGVuZ3RoKXtwLnZpc2libGV8fGcuc2VsZWN0QWxsKCJw YXRoLnhlcnJvciIpLnJlbW92ZSgpLGQudmlzaWJsZXx8Zy5zZWxlY3RBbGwoInBhdGgueWVy cm9yIikucmVtb3ZlKCksZy5zdHlsZSgib3BhY2l0eSIsMSk7dmFyIHY9Zy5lbnRlcigpLmFw cGVuZCgiZyIpLmNsYXNzZWQoImVycm9yYmFyIiwhMCk7dSYmdi5zdHlsZSgib3BhY2l0eSIs MCkudHJhbnNpdGlvbigpLmR1cmF0aW9uKHMuZHVyYXRpb24pLnN0eWxlKCJvcGFjaXR5Iiwx KSxhLnNldENsaXBVcmwoZyxyLmxheWVyQ2xpcElkLHQpLGcuZWFjaCgoZnVuY3Rpb24odCl7 dmFyIGU9bi5zZWxlY3QodGhpcykscj1mdW5jdGlvbih0LGUscil7dmFyIG49e3g6ZS5jMnAo dC54KSx5OnIuYzJwKHQueSl9O3ZvaWQgMCE9PXQueWgmJihuLnloPXIuYzJwKHQueWgpLG4u eXM9ci5jMnAodC55cyksaShuLnlzKXx8KG4ubm9ZUz0hMCxuLnlzPXIuYzJwKHQueXMsITAp KSk7dm9pZCAwIT09dC54aCYmKG4ueGg9ZS5jMnAodC54aCksbi54cz1lLmMycCh0LnhzKSxp KG4ueHMpfHwobi5ub1hTPSEwLG4ueHM9ZS5jMnAodC54cywhMCkpKTtyZXR1cm4gbn0odCxs LGMpO2lmKCFtfHx0LnZpcyl7dmFyIGEsbz1lLnNlbGVjdCgicGF0aC55ZXJyb3IiKTtpZihk LnZpc2libGUmJmkoci54KSYmaShyLnloKSYmaShyLnlzKSl7dmFyIGY9ZC53aWR0aDthPSJN Iisoci54LWYpKyIsIityLnloKyJoIisyKmYrIm0tIitmKyIsMFYiK3IueXMsci5ub1lTfHwo YSs9Im0tIitmKyIsMGgiKzIqZiksIW8uc2l6ZSgpP289ZS5hcHBlbmQoInBhdGgiKS5zdHls ZSgidmVjdG9yLWVmZmVjdCIsIm5vbi1zY2FsaW5nLXN0cm9rZSIpLmNsYXNzZWQoInllcnJv ciIsITApOnUmJihvPW8udHJhbnNpdGlvbigpLmR1cmF0aW9uKHMuZHVyYXRpb24pLmVhc2Uo cy5lYXNpbmcpKSxvLmF0dHIoImQiLGEpfWVsc2Ugby5yZW1vdmUoKTt2YXIgaD1lLnNlbGVj dCgicGF0aC54ZXJyb3IiKTtpZihwLnZpc2libGUmJmkoci55KSYmaShyLnhoKSYmaShyLnhz KSl7dmFyIGc9KHAuY29weV95c3R5bGU/ZDpwKS53aWR0aDthPSJNIityLnhoKyIsIisoci55 LWcpKyJ2IisyKmcrIm0wLC0iK2crIkgiK3IueHMsci5ub1hTfHwoYSs9Im0wLC0iK2crInYi KzIqZyksIWguc2l6ZSgpP2g9ZS5hcHBlbmQoInBhdGgiKS5zdHlsZSgidmVjdG9yLWVmZmVj dCIsIm5vbi1zY2FsaW5nLXN0cm9rZSIpLmNsYXNzZWQoInhlcnJvciIsITApOnUmJihoPWgu dHJhbnNpdGlvbigpLmR1cmF0aW9uKHMuZHVyYXRpb24pLmVhc2Uocy5lYXNpbmcpKSxoLmF0 dHIoImQiLGEpfWVsc2UgaC5yZW1vdmUoKX19KSl9fSkpfX0seyIuLi8uLi90cmFjZXMvc2Nh dHRlci9zdWJ0eXBlcyI6OTUyLCIuLi9kcmF3aW5nIjozODgsIkBwbG90bHkvZDMiOjU4LCJm YXN0LWlzbnVtZXJpYyI6MTkwfV0sMzk2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoIkBwbG90bHkvZDMiKSxpPXQoIi4uL2NvbG9yIik7ZS5leHBvcnRzPWZ1bmN0 aW9uKHQpe3QuZWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dFswXS50cmFjZSxyPWUuZXJyb3Jf eXx8e30sYT1lLmVycm9yX3h8fHt9LG89bi5zZWxlY3QodGhpcyk7by5zZWxlY3RBbGwoInBh dGgueWVycm9yIikuc3R5bGUoInN0cm9rZS13aWR0aCIsci50aGlja25lc3MrInB4IikuY2Fs bChpLnN0cm9rZSxyLmNvbG9yKSxhLmNvcHlfeXN0eWxlJiYoYT1yKSxvLnNlbGVjdEFsbCgi cGF0aC54ZXJyb3IiKS5zdHlsZSgic3Ryb2tlLXdpZHRoIixhLnRoaWNrbmVzcysicHgiKS5j YWxsKGkuc3Ryb2tlLGEuY29sb3IpfSkpfX0seyIuLi9jb2xvciI6MzY2LCJAcGxvdGx5L2Qz Ijo1OH1dLDM5NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8u Li9wbG90cy9mb250X2F0dHJpYnV0ZXMiKSxpPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKS5o b3ZlcmxhYmVsLGE9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQ7ZS5leHBvcnRz PXtob3ZlcmxhYmVsOntiZ2NvbG9yOmEoe30saS5iZ2NvbG9yLHthcnJheU9rOiEwfSksYm9y ZGVyY29sb3I6YSh7fSxpLmJvcmRlcmNvbG9yLHthcnJheU9rOiEwfSksZm9udDpuKHthcnJh eU9rOiEwLGVkaXRUeXBlOiJub25lIn0pLGFsaWduOmEoe30saS5hbGlnbix7YXJyYXlPazoh MH0pLG5hbWVsZW5ndGg6YSh7fSxpLm5hbWVsZW5ndGgse2FycmF5T2s6ITB9KSxlZGl0VHlw ZToibm9uZSJ9fX0seyIuLi8uLi9saWIvZXh0ZW5kIjo0OTMsIi4uLy4uL3Bsb3RzL2ZvbnRf YXR0cmlidXRlcyI6NTg1LCIuL2xheW91dF9hdHRyaWJ1dGVzIjo0MDd9XSwzOTg6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuLi8u Li9yZWdpc3RyeSIpO2Z1bmN0aW9uIGEodCxlLHIsaSl7aT1pfHxuLmlkZW50aXR5LEFycmF5 LmlzQXJyYXkodCkmJihlWzBdW3JdPWkodCkpfWUuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIg ZT10LmNhbGNkYXRhLHI9dC5fZnVsbExheW91dDtmdW5jdGlvbiBvKHQpe3JldHVybiBmdW5j dGlvbihlKXtyZXR1cm4gbi5jb2VyY2VIb3ZlcmluZm8oe2hvdmVyaW5mbzplfSx7X21vZHVs ZTp0Ll9tb2R1bGV9LHIpfX1mb3IodmFyIHM9MDtzPGUubGVuZ3RoO3MrKyl7dmFyIGw9ZVtz XSxjPWxbMF0udHJhY2U7aWYoIWkudHJhY2VJcyhjLCJwaWUtbGlrZSIpKXt2YXIgdT1pLnRy YWNlSXMoYywiMmRNYXAiKT9hOm4uZmlsbEFycmF5O3UoYy5ob3ZlcmluZm8sbCwiaGkiLG8o YykpLGMuaG92ZXJ0ZW1wbGF0ZSYmdShjLmhvdmVydGVtcGxhdGUsbCwiaHQiKSxjLmhvdmVy bGFiZWwmJih1KGMuaG92ZXJsYWJlbC5iZ2NvbG9yLGwsImhiZyIpLHUoYy5ob3ZlcmxhYmVs LmJvcmRlcmNvbG9yLGwsImhiYyIpLHUoYy5ob3ZlcmxhYmVsLmZvbnQuc2l6ZSxsLCJodHMi KSx1KGMuaG92ZXJsYWJlbC5mb250LmNvbG9yLGwsImh0YyIpLHUoYy5ob3ZlcmxhYmVsLmZv bnQuZmFtaWx5LGwsImh0ZiIpLHUoYy5ob3ZlcmxhYmVsLm5hbWVsZW5ndGgsbCwiaG5sIiks dShjLmhvdmVybGFiZWwuYWxpZ24sbCwiaHRhIikpfX19fSx7Ii4uLy4uL2xpYiI6NTAzLCIu Li8uLi9yZWdpc3RyeSI6NjM4fV0sMzk5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoIi4uLy4uL3JlZ2lzdHJ5IiksaT10KCIuL2hvdmVyIikuaG92ZXI7ZS5leHBv cnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgYT1uLmdldENvbXBvbmVudE1ldGhvZCgiYW5ub3Rh dGlvbnMiLCJvbkNsaWNrIikodCx0Ll9ob3ZlcmRhdGEpO2Z1bmN0aW9uIG8oKXt0LmVtaXQo InBsb3RseV9jbGljayIse3BvaW50czp0Ll9ob3ZlcmRhdGEsZXZlbnQ6ZX0pfXZvaWQgMCE9 PXImJmkodCxlLHIsITApLHQuX2hvdmVyZGF0YSYmZSYmZS50YXJnZXQmJihhJiZhLnRoZW4/ YS50aGVuKG8pOm8oKSxlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiYmZS5zdG9wSW1tZWRp YXRlUHJvcGFnYXRpb24oKSl9fSx7Ii4uLy4uL3JlZ2lzdHJ5Ijo2MzgsIi4vaG92ZXIiOjQw M31dLDQwMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e1lBTkdM RTo2MCxIT1ZFUkFSUk9XU0laRTo2LEhPVkVSVEVYVFBBRDozLEhPVkVSRk9OVFNJWkU6MTMs SE9WRVJGT05UOiJBcmlhbCwgc2Fucy1zZXJpZiIsSE9WRVJNSU5USU1FOjUwLEhPVkVSSUQ6 Ii1ob3ZlciJ9fSx7fV0sNDAxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4uLy4uL2xpYiIpLGk9dCgiLi9hdHRyaWJ1dGVzIiksYT10KCIuL2hvdmVybGFiZWxf ZGVmYXVsdHMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbyl7dmFyIHM9bi5leHRlbmRG bGF0KHt9LG8uaG92ZXJsYWJlbCk7ZS5ob3ZlcnRlbXBsYXRlJiYocy5uYW1lbGVuZ3RoPS0x KSxhKHQsZSwoZnVuY3Rpb24ocixhKXtyZXR1cm4gbi5jb2VyY2UodCxlLGkscixhKX0pLHMp fX0seyIuLi8uLi9saWIiOjUwMywiLi9hdHRyaWJ1dGVzIjozOTcsIi4vaG92ZXJsYWJlbF9k ZWZhdWx0cyI6NDA0fV0sNDAyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4uLy4uL2xpYiIpO3IuZ2V0U3VicGxvdD1mdW5jdGlvbih0KXtyZXR1cm4gdC5zdWJw bG90fHx0LnhheGlzK3QueWF4aXN8fHQuZ2VvfSxyLmlzVHJhY2VJblN1YnBsb3RzPWZ1bmN0 aW9uKHQsZSl7aWYoInNwbG9tIj09PXQudHlwZSl7Zm9yKHZhciBuPXQueGF4ZXN8fFtdLGk9 dC55YXhlc3x8W10sYT0wO2E8bi5sZW5ndGg7YSsrKWZvcih2YXIgbz0wO288aS5sZW5ndGg7 bysrKWlmKC0xIT09ZS5pbmRleE9mKG5bYV0raVtvXSkpcmV0dXJuITA7cmV0dXJuITF9cmV0 dXJuLTEhPT1lLmluZGV4T2Yoci5nZXRTdWJwbG90KHQpKX0sci5mbGF0PWZ1bmN0aW9uKHQs ZSl7Zm9yKHZhciByPW5ldyBBcnJheSh0Lmxlbmd0aCksbj0wO248dC5sZW5ndGg7bisrKXJb bl09ZTtyZXR1cm4gcn0sci5wMmM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9bmV3IEFycmF5 KHQubGVuZ3RoKSxuPTA7bjx0Lmxlbmd0aDtuKyspcltuXT10W25dLnAyYyhlKTtyZXR1cm4g cn0sci5nZXREaXN0YW5jZUZ1bmN0aW9uPWZ1bmN0aW9uKHQsZSxuLGkpe3JldHVybiJjbG9z ZXN0Ij09PXQ/aXx8ci5xdWFkcmF0dXJlKGUsbik6IngiPT09dC5jaGFyQXQoMCk/ZTpufSxy LmdldENsb3Nlc3Q9ZnVuY3Rpb24odCxlLHIpe2lmKCExIT09ci5pbmRleClyLmluZGV4Pj0w JiZyLmluZGV4PHQubGVuZ3RoP3IuZGlzdGFuY2U9MDpyLmluZGV4PSExO2Vsc2UgZm9yKHZh ciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPWUodFtuXSk7aTw9ci5kaXN0YW5jZSYmKHIu aW5kZXg9bixyLmRpc3RhbmNlPWkpfXJldHVybiByfSxyLmluYm94PWZ1bmN0aW9uKHQsZSxy KXtyZXR1cm4gdCplPDB8fDA9PT10P3I6MS8wfSxyLnF1YWRyYXR1cmU9ZnVuY3Rpb24odCxl KXtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIG49dChyKSxpPWUocik7cmV0dXJuIE1hdGguc3Fy dChuKm4raSppKX19LHIubWFrZUV2ZW50RGF0YT1mdW5jdGlvbih0LGUsbil7dmFyIGk9Imlu ZGV4ImluIHQ/dC5pbmRleDp0LnBvaW50TnVtYmVyLGE9e2RhdGE6ZS5faW5wdXQsZnVsbERh dGE6ZSxjdXJ2ZU51bWJlcjplLmluZGV4LHBvaW50TnVtYmVyOml9O2lmKGUuX2luZGV4VG9Q b2ludHMpe3ZhciBvPWUuX2luZGV4VG9Qb2ludHNbaV07MT09PW8ubGVuZ3RoP2EucG9pbnRJ bmRleD1vWzBdOmEucG9pbnRJbmRpY2VzPW99ZWxzZSBhLnBvaW50SW5kZXg9aTtyZXR1cm4g ZS5fbW9kdWxlLmV2ZW50RGF0YT9hPWUuX21vZHVsZS5ldmVudERhdGEoYSx0LGUsbixpKToo InhWYWwiaW4gdD9hLng9dC54VmFsOiJ4ImluIHQmJihhLng9dC54KSwieVZhbCJpbiB0P2Eu eT10LnlWYWw6InkiaW4gdCYmKGEueT10LnkpLHQueGEmJihhLnhheGlzPXQueGEpLHQueWEm JihhLnlheGlzPXQueWEpLHZvaWQgMCE9PXQuekxhYmVsVmFsJiYoYS56PXQuekxhYmVsVmFs KSksci5hcHBlbmRBcnJheVBvaW50VmFsdWUoYSxlLGkpLGF9LHIuYXBwZW5kQXJyYXlQb2lu dFZhbHVlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgaT1lLl9hcnJheUF0dHJzO2lmKGkpZm9yKHZh ciBzPTA7czxpLmxlbmd0aDtzKyspe3ZhciBsPWlbc10sYz1hKGwpO2lmKHZvaWQgMD09PXRb Y10pe3ZhciB1PW8obi5uZXN0ZWRQcm9wZXJ0eShlLGwpLmdldCgpLHIpO3ZvaWQgMCE9PXUm Jih0W2NdPXUpfX19LHIuYXBwZW5kQXJyYXlNdWx0aVBvaW50VmFsdWVzPWZ1bmN0aW9uKHQs ZSxyKXt2YXIgaT1lLl9hcnJheUF0dHJzO2lmKGkpZm9yKHZhciBzPTA7czxpLmxlbmd0aDtz Kyspe3ZhciBsPWlbc10sYz1hKGwpO2lmKHZvaWQgMD09PXRbY10pe2Zvcih2YXIgdT1uLm5l c3RlZFByb3BlcnR5KGUsbCkuZ2V0KCksZj1uZXcgQXJyYXkoci5sZW5ndGgpLGg9MDtoPHIu bGVuZ3RoO2grKylmW2hdPW8odSxyW2hdKTt0W2NdPWZ9fX07dmFyIGk9e2lkczoiaWQiLGxv Y2F0aW9uczoibG9jYXRpb24iLGxhYmVsczoibGFiZWwiLHZhbHVlczoidmFsdWUiLCJtYXJr ZXIuY29sb3JzIjoiY29sb3IiLHBhcmVudHM6InBhcmVudCJ9O2Z1bmN0aW9uIGEodCl7cmV0 dXJuIGlbdF18fHR9ZnVuY3Rpb24gbyh0LGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP0Fy cmF5LmlzQXJyYXkodCkmJkFycmF5LmlzQXJyYXkodFtlWzBdXSk/dFtlWzBdXVtlWzFdXTp2 b2lkIDA6dFtlXX12YXIgcz17eDohMCx5OiEwfSxsPXsieCB1bmlmaWVkIjohMCwieSB1bmlm aWVkIjohMH07ci5pc1VuaWZpZWRIb3Zlcj1mdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09 dHlwZW9mIHQmJiEhbFt0XX0sci5pc1hZaG92ZXI9ZnVuY3Rpb24odCl7cmV0dXJuInN0cmlu ZyI9PXR5cGVvZiB0JiYhIXNbdF19fSx7Ii4uLy4uL2xpYiI6NTAzfV0sNDAzOltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIkBwbG90bHkvZDMiKSxpPXQoImZhc3Qt aXNudW1lcmljIiksYT10KCJ0aW55Y29sb3IyIiksbz10KCIuLi8uLi9saWIiKSxzPW8uc3Ry VHJhbnNsYXRlLGw9by5zdHJSb3RhdGUsYz10KCIuLi8uLi9saWIvZXZlbnRzIiksdT10KCIu Li8uLi9saWIvc3ZnX3RleHRfdXRpbHMiKSxmPXQoIi4uLy4uL2xpYi9vdmVycmlkZV9jdXJz b3IiKSxoPXQoIi4uL2RyYXdpbmciKSxwPXQoIi4uL2NvbG9yIiksZD10KCIuLi9kcmFnZWxl bWVudCIpLG09dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxnPXQoIi4uLy4uL3Jl Z2lzdHJ5Iiksdj10KCIuL2hlbHBlcnMiKSx5PXQoIi4vY29uc3RhbnRzIikseD10KCIuLi9s ZWdlbmQvZGVmYXVsdHMiKSxiPXQoIi4uL2xlZ2VuZC9kcmF3IiksXz15LllBTkdMRSx3PU1h dGguUEkqXy8xODAsVD0xL01hdGguc2luKHcpLGs9TWF0aC5jb3ModyksQT1NYXRoLnNpbih3 KSxNPXkuSE9WRVJBUlJPV1NJWkUsUz15LkhPVkVSVEVYVFBBRCxFPXtib3g6ITAsb2hsYzoh MCx2aW9saW46ITAsY2FuZGxlc3RpY2s6ITB9LEw9e3NjYXR0ZXI6ITAsc2NhdHRlcmdsOiEw LHNwbG9tOiEwfTtmdW5jdGlvbiBDKHQpe3JldHVyblt0LnRyYWNlLmluZGV4LHQuaW5kZXgs dC54MCx0LnkwLHQubmFtZSx0LmF0dHIsdC54YT90LnhhLl9pZDoiIix0LnlhP3QueWEuX2lk OiIiXS5qb2luKCIsIil9ci5ob3Zlcj1mdW5jdGlvbih0LGUscixhKXt0PW8uZ2V0R3JhcGhE aXYodCk7dmFyIHM9ZS50YXJnZXQ7by50aHJvdHRsZSh0Ll9mdWxsTGF5b3V0Ll91aWQreS5I T1ZFUklELHkuSE9WRVJNSU5USU1FLChmdW5jdGlvbigpeyFmdW5jdGlvbih0LGUscixhLHMp e3J8fChyPSJ4eSIpO3ZhciBsPUFycmF5LmlzQXJyYXkocik/cjpbcl0sdT10Ll9mdWxsTGF5 b3V0LGg9dS5fcGxvdHN8fFtdLG09aFtyXSx5PXUuX2hhcygiY2FydGVzaWFuIik7aWYobSl7 dmFyIHg9bS5vdmVybGF5cy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkfSkpO2w9bC5j b25jYXQoeCl9Zm9yKHZhciBiPWwubGVuZ3RoLF89bmV3IEFycmF5KGIpLHc9bmV3IEFycmF5 KGIpLGs9ITEsQT0wO0E8YjtBKyspe3ZhciBNPWxbQV07aWYoaFtNXSlrPSEwLF9bQV09aFtN XS54YXhpcyx3W0FdPWhbTV0ueWF4aXM7ZWxzZXtpZighdVtNXXx8IXVbTV0uX3N1YnBsb3Qp cmV0dXJuIHZvaWQgby53YXJuKCJVbnJlY29nbml6ZWQgc3VicGxvdDogIitNKTt2YXIgUz11 W01dLl9zdWJwbG90O19bQV09Uy54YXhpcyx3W0FdPVMueWF4aXN9fXZhciBQPWUuaG92ZXJt b2RlfHx1LmhvdmVybW9kZTtQJiYhayYmKFA9ImNsb3Nlc3QiKTtpZigtMT09PVsieCIsInki LCJjbG9zZXN0IiwieCB1bmlmaWVkIiwieSB1bmlmaWVkIl0uaW5kZXhPZihQKXx8IXQuY2Fs Y2RhdGF8fHQucXVlcnlTZWxlY3RvcigiLnpvb21ib3giKXx8dC5fZHJhZ2dpbmcpcmV0dXJu IGQudW5ob3ZlclJhdyh0LGUpO3ZhciBPPXUuaG92ZXJkaXN0YW5jZTstMT09PU8mJihPPTEv MCk7dmFyIEI9dS5zcGlrZWRpc3RhbmNlOy0xPT09QiYmKEI9MS8wKTt2YXIgVixILHEsRyxZ LFcsWCxaLEosSyxRLCQsdHQsZXQ9W10scnQ9W10sbnQ9e2hMaW5lUG9pbnQ6bnVsbCx2TGlu ZVBvaW50Om51bGx9LGl0PSExO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKFA9ImFycmF5Iixx PTA7cTxlLmxlbmd0aDtxKyspKFk9dC5jYWxjZGF0YVtlW3FdLmN1cnZlTnVtYmVyfHwwXSkm JihXPVlbMF0udHJhY2UsInNraXAiIT09WVswXS50cmFjZS5ob3ZlcmluZm8mJihydC5wdXNo KFkpLCJoIj09PVcub3JpZW50YXRpb24mJihpdD0hMCkpKTtlbHNle2ZvcihHPTA7Rzx0LmNh bGNkYXRhLmxlbmd0aDtHKyspWT10LmNhbGNkYXRhW0ddLCJza2lwIiE9PShXPVlbMF0udHJh Y2UpLmhvdmVyaW5mbyYmdi5pc1RyYWNlSW5TdWJwbG90cyhXLGwpJiYocnQucHVzaChZKSwi aCI9PT1XLm9yaWVudGF0aW9uJiYoaXQ9ITApKTt2YXIgYXQsb3Q7aWYoIXMpYXQ9InhweCJp biBlP2UueHB4Ol9bMF0uX2xlbmd0aC8yLG90PSJ5cHgiaW4gZT9lLnlweDp3WzBdLl9sZW5n dGgvMjtlbHNle2lmKCExPT09Yy50cmlnZ2VySGFuZGxlcih0LCJwbG90bHlfYmVmb3JlaG92 ZXIiLGUpKXJldHVybjt2YXIgc3Q9cy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTthdD1lLmNs aWVudFgtc3QubGVmdCxvdD1lLmNsaWVudFktc3QudG9wLHUuX2NhbGNJbnZlcnNlVHJhbnNm b3JtKHQpO3ZhciBsdD1vLmFwcGx5M0RUcmFuc2Zvcm0odS5faW52VHJhbnNmb3JtKShhdCxv dCk7aWYoYXQ9bHRbMF0sb3Q9bHRbMV0sYXQ8MHx8YXQ+X1swXS5fbGVuZ3RofHxvdDwwfHxv dD53WzBdLl9sZW5ndGgpcmV0dXJuIGQudW5ob3ZlclJhdyh0LGUpfWlmKGUucG9pbnRlclg9 YXQrX1swXS5fb2Zmc2V0LGUucG9pbnRlclk9b3Qrd1swXS5fb2Zmc2V0LFY9Inh2YWwiaW4g ZT92LmZsYXQobCxlLnh2YWwpOnYucDJjKF8sYXQpLEg9Inl2YWwiaW4gZT92LmZsYXQobCxl Lnl2YWwpOnYucDJjKHcsb3QpLCFpKFZbMF0pfHwhaShIWzBdKSlyZXR1cm4gby53YXJuKCJG eC5ob3ZlciBmYWlsZWQiLGUsdCksZC51bmhvdmVyUmF3KHQsZSl9dmFyIGN0PTEvMDtmdW5j dGlvbiB1dCh0LHIpe2ZvcihHPTA7RzxydC5sZW5ndGg7RysrKWlmKChZPXJ0W0ddKSYmWVsw XSYmWVswXS50cmFjZSYmITA9PT0oVz1ZWzBdLnRyYWNlKS52aXNpYmxlJiYwIT09Vy5fbGVu Z3RoJiYtMT09PVsiY2FycGV0IiwiY29udG91cmNhcnBldCJdLmluZGV4T2YoVy5fbW9kdWxl Lm5hbWUpKXtpZigic3Bsb20iPT09Vy50eXBlP1g9bFtaPTBdOihYPXYuZ2V0U3VicGxvdChX KSxaPWwuaW5kZXhPZihYKSksSj1QLHYuaXNVbmlmaWVkSG92ZXIoSikmJihKPUouY2hhckF0 KDApKSwkPXtjZDpZLHRyYWNlOlcseGE6X1taXSx5YTp3W1pdLG1heEhvdmVyRGlzdGFuY2U6 TyxtYXhTcGlrZURpc3RhbmNlOkIsaW5kZXg6ITEsZGlzdGFuY2U6TWF0aC5taW4oY3QsTyks c3Bpa2VEaXN0YW5jZToxLzAseFNwaWtlOnZvaWQgMCx5U3Bpa2U6dm9pZCAwLGNvbG9yOnAu ZGVmYXVsdExpbmUsbmFtZTpXLm5hbWUseDA6dm9pZCAwLHgxOnZvaWQgMCx5MDp2b2lkIDAs eTE6dm9pZCAwLHhMYWJlbFZhbDp2b2lkIDAseUxhYmVsVmFsOnZvaWQgMCx6TGFiZWxWYWw6 dm9pZCAwLHRleHQ6dm9pZCAwfSx1W1hdJiYoJC5zdWJwbG90PXVbWF0uX3N1YnBsb3QpLHUu X3NwbG9tU2NlbmVzJiZ1Ll9zcGxvbVNjZW5lc1tXLnVpZF0mJigkLnNjZW5lPXUuX3NwbG9t U2NlbmVzW1cudWlkXSksdHQ9ZXQubGVuZ3RoLCJhcnJheSI9PT1KKXt2YXIgbj1lW0ddOyJw b2ludE51bWJlciJpbiBuPygkLmluZGV4PW4ucG9pbnROdW1iZXIsSj0iY2xvc2VzdCIpOihK PSIiLCJ4dmFsImluIG4mJihLPW4ueHZhbCxKPSJ4IiksInl2YWwiaW4gbiYmKFE9bi55dmFs LEo9Sj8iY2xvc2VzdCI6InkiKSl9ZWxzZSB2b2lkIDAhPT10JiZ2b2lkIDAhPT1yPyhLPXQs UT1yKTooSz1WW1pdLFE9SFtaXSk7aWYoMCE9PU8paWYoVy5fbW9kdWxlJiZXLl9tb2R1bGUu aG92ZXJQb2ludHMpe3ZhciBhPVcuX21vZHVsZS5ob3ZlclBvaW50cygkLEssUSxKLHtmaW5p dGVSYW5nZTohMCxob3ZlckxheWVyOnUuX2hvdmVybGF5ZXJ9KTtpZihhKWZvcih2YXIgcyxj PTA7YzxhLmxlbmd0aDtjKyspcz1hW2NdLGkocy54MCkmJmkocy55MCkmJmV0LnB1c2goRChz LFApKX1lbHNlIG8ubG9nKCJVbnJlY29nbml6ZWQgdHJhY2UgdHlwZSBpbiBob3ZlcjoiLFcp O2lmKCJjbG9zZXN0Ij09PVAmJmV0Lmxlbmd0aD50dCYmKGV0LnNwbGljZSgwLHR0KSxjdD1l dFswXS5kaXN0YW5jZSkseSYmMCE9PUImJjA9PT1ldC5sZW5ndGgpeyQuZGlzdGFuY2U9Qiwk LmluZGV4PSExO3ZhciBmPVcuX21vZHVsZS5ob3ZlclBvaW50cygkLEssUSwiY2xvc2VzdCIs e2hvdmVyTGF5ZXI6dS5faG92ZXJsYXllcn0pO2lmKGYmJihmPWYuZmlsdGVyKChmdW5jdGlv bih0KXtyZXR1cm4gdC5zcGlrZURpc3RhbmNlPD1CfSkpKSxmJiZmLmxlbmd0aCl7dmFyIGgs ZD1mLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQueGEuc2hvd3NwaWtlcyYmImhvdmVy ZWQgZGF0YSIhPT10LnhhLnNwaWtlc25hcH0pKTtpZihkLmxlbmd0aCl7dmFyIG09ZFswXTtp KG0ueDApJiZpKG0ueTApJiYoaD1odChtKSwoIW50LnZMaW5lUG9pbnR8fG50LnZMaW5lUG9p bnQuc3Bpa2VEaXN0YW5jZT5oLnNwaWtlRGlzdGFuY2UpJiYobnQudkxpbmVQb2ludD1oKSl9 dmFyIGc9Zi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnlhLnNob3dzcGlrZXMmJiJo b3ZlcmVkIGRhdGEiIT09dC55YS5zcGlrZXNuYXB9KSk7aWYoZy5sZW5ndGgpe3ZhciB4PWdb MF07aSh4LngwKSYmaSh4LnkwKSYmKGg9aHQoeCksKCFudC5oTGluZVBvaW50fHxudC5oTGlu ZVBvaW50LnNwaWtlRGlzdGFuY2U+aC5zcGlrZURpc3RhbmNlKSYmKG50LmhMaW5lUG9pbnQ9 aCkpfX19fX1mdW5jdGlvbiBmdCh0LGUscil7Zm9yKHZhciBuLGk9bnVsbCxhPTEvMCxvPTA7 bzx0Lmxlbmd0aDtvKyspbj10W29dLnNwaWtlRGlzdGFuY2UsciYmMD09PW8mJihuPS0xLzAp LG48PWEmJm48PWUmJihpPXRbb10sYT1uKTtyZXR1cm4gaX1mdW5jdGlvbiBodCh0KXtyZXR1 cm4gdD97eGE6dC54YSx5YTp0LnlhLHg6dm9pZCAwIT09dC54U3Bpa2U/dC54U3Bpa2U6KHQu eDArdC54MSkvMix5OnZvaWQgMCE9PXQueVNwaWtlP3QueVNwaWtlOih0LnkwK3QueTEpLzIs ZGlzdGFuY2U6dC5kaXN0YW5jZSxzcGlrZURpc3RhbmNlOnQuc3Bpa2VEaXN0YW5jZSxjdXJ2 ZU51bWJlcjp0LnRyYWNlLmluZGV4LGNvbG9yOnQuY29sb3IscG9pbnROdW1iZXI6dC5pbmRl eH06bnVsbH11dCgpO3ZhciBwdD17ZnVsbExheW91dDp1LGNvbnRhaW5lcjp1Ll9ob3Zlcmxh eWVyLGV2ZW50OmV9LGR0PXQuX3NwaWtlcG9pbnRzLG10PXt2TGluZVBvaW50Om50LnZMaW5l UG9pbnQsaExpbmVQb2ludDpudC5oTGluZVBvaW50fTt0Ll9zcGlrZXBvaW50cz1tdDt2YXIg Z3Q9ZnVuY3Rpb24oKXtldC5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0LmRpc3RhbmNl LWUuZGlzdGFuY2V9KSksZXQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9ZS5jaGFyQXQoMCks bj1bXSxpPVtdLGE9W10sbz0wO288dC5sZW5ndGg7bysrKXt2YXIgcz10W29dO2cudHJhY2VJ cyhzLnRyYWNlLCJiYXItbGlrZSIpfHxnLnRyYWNlSXMocy50cmFjZSwiYm94LXZpb2xpbiIp P2EucHVzaChzKTpzLnRyYWNlW3IrInBlcmlvZCJdP2kucHVzaChzKTpuLnB1c2gocyl9cmV0 dXJuIG4uY29uY2F0KGkpLmNvbmNhdChhKX0oZXQsUCl9O2d0KCk7dmFyIHZ0PVAuY2hhckF0 KDApLHl0PSgieCI9PT12dHx8InkiPT09dnQpJiZldFswXSYmTFtldFswXS50cmFjZS50eXBl XTtpZih5JiYwIT09QiYmMCE9PWV0Lmxlbmd0aCl7dmFyIHh0PWZ0KGV0LmZpbHRlcigoZnVu Y3Rpb24odCl7cmV0dXJuIHQueWEuc2hvd3NwaWtlc30pKSxCLHl0KTtudC5oTGluZVBvaW50 PWh0KHh0KTt2YXIgYnQ9ZnQoZXQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC54YS5z aG93c3Bpa2VzfSkpLEIseXQpO250LnZMaW5lUG9pbnQ9aHQoYnQpfWlmKDA9PT1ldC5sZW5n dGgpe3ZhciBfdD1kLnVuaG92ZXJSYXcodCxlKTtyZXR1cm4heXx8bnVsbD09PW50LmhMaW5l UG9pbnQmJm51bGw9PT1udC52TGluZVBvaW50fHxGKGR0KSYmUih0LG50LHB0KSxfdH15JiZG KGR0KSYmUih0LG50LHB0KTtpZih2LmlzWFlob3ZlcihKKSYmMCE9PWV0WzBdLmxlbmd0aCYm InNwbG9tIiE9PWV0WzBdLnRyYWNlLnR5cGUpe3ZhciB3dD1ldFswXSxUdD0oZXQ9RVt3dC50 cmFjZS50eXBlXT9ldC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRyYWNlLmluZGV4 PT09d3QudHJhY2UuaW5kZXh9KSk6W3d0XSkubGVuZ3RoLGt0PU4oIngiLHd0LHUpLEF0PU4o InkiLHd0LHUpO3V0KGt0LEF0KTt2YXIgTXQsU3Q9W10sRXQ9e30sTHQ9MCxDdD1mdW5jdGlv bih0KXt2YXIgZT1FW3QudHJhY2UudHlwZV0/Qyh0KTp0LnRyYWNlLmluZGV4O2lmKEV0W2Vd KXt2YXIgcj1FdFtlXS0xLG49U3Rbcl07cj4wJiZNYXRoLmFicyh0LmRpc3RhbmNlKTxNYXRo LmFicyhuLmRpc3RhbmNlKSYmKFN0W3JdPXQpfWVsc2UgTHQrKyxFdFtlXT1MdCxTdC5wdXNo KHQpfTtmb3IoTXQ9MDtNdDxUdDtNdCsrKUN0KGV0W010XSk7Zm9yKE10PWV0Lmxlbmd0aC0x O010PlR0LTE7TXQtLSlDdChldFtNdF0pO2V0PVN0LGd0KCl9dmFyIFB0PXQuX2hvdmVyZGF0 YSxJdD1bXSxPdD1qKHQpLHp0PVUodCk7Zm9yKHE9MDtxPGV0Lmxlbmd0aDtxKyspe3ZhciBE dD1ldFtxXSxSdD12Lm1ha2VFdmVudERhdGEoRHQsRHQudHJhY2UsRHQuY2QpO2lmKCExIT09 RHQuaG92ZXJ0ZW1wbGF0ZSl7dmFyIEZ0PSExO0R0LmNkW0R0LmluZGV4XSYmRHQuY2RbRHQu aW5kZXhdLmh0JiYoRnQ9RHQuY2RbRHQuaW5kZXhdLmh0KSxEdC5ob3ZlcnRlbXBsYXRlPUZ0 fHxEdC50cmFjZS5ob3ZlcnRlbXBsYXRlfHwhMX1pZihEdC54YSYmRHQueWEpe3ZhciBCdD1E dC54MCtEdC54YS5fb2Zmc2V0LE50PUR0LngxK0R0LnhhLl9vZmZzZXQsanQ9RHQueTArRHQu eWEuX29mZnNldCxVdD1EdC55MStEdC55YS5fb2Zmc2V0LFZ0PU1hdGgubWluKEJ0LE50KSxI dD1NYXRoLm1heChCdCxOdCkscXQ9TWF0aC5taW4oanQsVXQpLEd0PU1hdGgubWF4KGp0LFV0 KTtSdC5iYm94PXt4MDpWdCt6dCx4MTpIdCt6dCx5MDpxdCtPdCx5MTpHdCtPdH19RHQuZXZl bnREYXRhPVtSdF0sSXQucHVzaChSdCl9dC5faG92ZXJkYXRhPUl0O3ZhciBZdD0ieSI9PT1Q JiYocnQubGVuZ3RoPjF8fGV0Lmxlbmd0aD4xKXx8ImNsb3Nlc3QiPT09UCYmaXQmJmV0Lmxl bmd0aD4xLFd0PXAuY29tYmluZSh1LnBsb3RfYmdjb2xvcnx8cC5iYWNrZ3JvdW5kLHUucGFw ZXJfYmdjb2xvciksWHQ9SShldCx7Z2Q6dCxob3Zlcm1vZGU6UCxyb3RhdGVMYWJlbHM6WXQs YmdDb2xvcjpXdCxjb250YWluZXI6dS5faG92ZXJsYXllcixvdXRlckNvbnRhaW5lcjp1Ll9w YXBlci5ub2RlKCksY29tbW9uTGFiZWxPcHRzOnUuaG92ZXJsYWJlbCxob3ZlcmRpc3RhbmNl OnUuaG92ZXJkaXN0YW5jZX0pO3YuaXNVbmlmaWVkSG92ZXIoUCl8fCghZnVuY3Rpb24odCxl LHIpe3ZhciBuLGksYSxvLHMsbCxjLHU9MCxmPTEsaD10LnNpemUoKSxwPW5ldyBBcnJheSho KSxkPTA7ZnVuY3Rpb24gbSh0KXt2YXIgZT10WzBdLHI9dFt0Lmxlbmd0aC0xXTtpZihpPWUu cG1pbi1lLnBvcy1lLmRwK2Uuc2l6ZSxhPXIucG9zK3IuZHArci5zaXplLWUucG1heCxpPi4w MSl7Zm9yKHM9dC5sZW5ndGgtMTtzPj0wO3MtLSl0W3NdLmRwKz1pO249ITF9aWYoIShhPC4w MSkpe2lmKGk8LS4wMSl7Zm9yKHM9dC5sZW5ndGgtMTtzPj0wO3MtLSl0W3NdLmRwLT1hO249 ITF9aWYobil7dmFyIGM9MDtmb3Iobz0wO288dC5sZW5ndGg7bysrKShsPXRbb10pLnBvcyts LmRwK2wuc2l6ZT5lLnBtYXgmJmMrKztmb3Iobz10Lmxlbmd0aC0xO28+PTAmJiEoYzw9MCk7 by0tKShsPXRbb10pLnBvcz5lLnBtYXgtMSYmKGwuZGVsPSEwLGMtLSk7Zm9yKG89MDtvPHQu bGVuZ3RoJiYhKGM8PTApO28rKylpZigobD10W29dKS5wb3M8ZS5wbWluKzEpZm9yKGwuZGVs PSEwLGMtLSxhPTIqbC5zaXplLHM9dC5sZW5ndGgtMTtzPj0wO3MtLSl0W3NdLmRwLT1hO2Zv cihvPXQubGVuZ3RoLTE7bz49MCYmIShjPD0wKTtvLS0pKGw9dFtvXSkucG9zK2wuZHArbC5z aXplPmUucG1heCYmKGwuZGVsPSEwLGMtLSl9fX10LmVhY2goKGZ1bmN0aW9uKHQpe3ZhciBu PXRbZV0saT0ieCI9PT1uLl9pZC5jaGFyQXQoMCksYT1uLnJhbmdlOzA9PT1kJiZhJiZhWzBd PmFbMV0hPT1pJiYoZj0tMSkscFtkKytdPVt7ZGF0dW06dCx0cmFjZUluZGV4OnQudHJhY2Uu aW5kZXgsZHA6MCxwb3M6dC5wb3MscG9zcmVmOnQucG9zcmVmLHNpemU6dC5ieSooaT9UOjEp LzIscG1pbjowLHBtYXg6aT9yLndpZHRoOnIuaGVpZ2h0fV19KSkscC5zb3J0KChmdW5jdGlv bih0LGUpe3JldHVybiB0WzBdLnBvc3JlZi1lWzBdLnBvc3JlZnx8ZiooZVswXS50cmFjZUlu ZGV4LXRbMF0udHJhY2VJbmRleCl9KSk7Zm9yKDshbiYmdTw9aDspe2Zvcih1Kyssbj0hMCxv PTA7bzxwLmxlbmd0aC0xOyl7dmFyIGc9cFtvXSx2PXBbbysxXSx5PWdbZy5sZW5ndGgtMV0s eD12WzBdO2lmKChpPXkucG9zK3kuZHAreS5zaXplLXgucG9zLXguZHAreC5zaXplKT4uMDEm JnkucG1pbj09PXgucG1pbiYmeS5wbWF4PT09eC5wbWF4KXtmb3Iocz12Lmxlbmd0aC0xO3M+ PTA7cy0tKXZbc10uZHArPWk7Zm9yKGcucHVzaC5hcHBseShnLHYpLHAuc3BsaWNlKG8rMSwx KSxjPTAscz1nLmxlbmd0aC0xO3M+PTA7cy0tKWMrPWdbc10uZHA7Zm9yKGE9Yy9nLmxlbmd0 aCxzPWcubGVuZ3RoLTE7cz49MDtzLS0pZ1tzXS5kcC09YTtuPSExfWVsc2UgbysrfXAuZm9y RWFjaChtKX1mb3Iobz1wLmxlbmd0aC0xO28+PTA7by0tKXt2YXIgYj1wW29dO2ZvcihzPWIu bGVuZ3RoLTE7cz49MDtzLS0pe3ZhciBfPWJbc10sdz1fLmRhdHVtO3cub2Zmc2V0PV8uZHAs dy5kZWw9Xy5kZWx9fX0oWHQsWXQ/InhhIjoieWEiLHUpLHooWHQsWXQsdS5faW52U2NhbGVY LHUuX2ludlNjYWxlWSkpO2lmKHMmJnMudGFnTmFtZSl7dmFyIFp0PWcuZ2V0Q29tcG9uZW50 TWV0aG9kKCJhbm5vdGF0aW9ucyIsImhhc0NsaWNrVG9TaG93IikodCxJdCk7ZihuLnNlbGVj dChzKSxadD8icG9pbnRlciI6IiIpfWlmKCFzfHxhfHwhZnVuY3Rpb24odCxlLHIpe2lmKCFy fHxyLmxlbmd0aCE9PXQuX2hvdmVyZGF0YS5sZW5ndGgpcmV0dXJuITA7Zm9yKHZhciBuPXIu bGVuZ3RoLTE7bj49MDtuLS0pe3ZhciBpPXJbbl0sYT10Ll9ob3ZlcmRhdGFbbl07aWYoaS5j dXJ2ZU51bWJlciE9PWEuY3VydmVOdW1iZXJ8fFN0cmluZyhpLnBvaW50TnVtYmVyKSE9PVN0 cmluZyhhLnBvaW50TnVtYmVyKXx8U3RyaW5nKGkucG9pbnROdW1iZXJzKSE9PVN0cmluZyhh LnBvaW50TnVtYmVycykpcmV0dXJuITB9cmV0dXJuITF9KHQsMCxQdCkpcmV0dXJuO1B0JiZ0 LmVtaXQoInBsb3RseV91bmhvdmVyIix7ZXZlbnQ6ZSxwb2ludHM6UHR9KTt0LmVtaXQoInBs b3RseV9ob3ZlciIse2V2ZW50OmUscG9pbnRzOnQuX2hvdmVyZGF0YSx4YXhlczpfLHlheGVz OncseHZhbHM6Vix5dmFsczpIfSl9KHQsZSxyLGEscyl9KSl9LHIubG9uZUhvdmVyPWZ1bmN0 aW9uKHQsZSl7dmFyIHI9ITA7QXJyYXkuaXNBcnJheSh0KXx8KHI9ITEsdD1bdF0pO3ZhciBp PWUuZ2QsYT1qKGkpLG89VShpKSxzPUkodC5tYXAoKGZ1bmN0aW9uKHQpe3ZhciByPXQuX3gw fHx0LngwfHx0Lnh8fDAsbj10Ll94MXx8dC54MXx8dC54fHwwLHM9dC5feTB8fHQueTB8fHQu eXx8MCxsPXQuX3kxfHx0LnkxfHx0Lnl8fDAsYz10LmV2ZW50RGF0YTtpZihjKXt2YXIgdT1N YXRoLm1pbihyLG4pLGY9TWF0aC5tYXgocixuKSxoPU1hdGgubWluKHMsbCksZD1NYXRoLm1h eChzLGwpLG09dC50cmFjZTtpZihnLnRyYWNlSXMobSwiZ2wzZCIpKXt2YXIgdj1pLl9mdWxs TGF5b3V0W20uc2NlbmVdLl9zY2VuZS5jb250YWluZXIseT12Lm9mZnNldExlZnQseD12Lm9m ZnNldFRvcDt1Kz15LGYrPXksaCs9eCxkKz14fWMuYmJveD17eDA6dStvLHgxOmYrbyx5MDpo K2EseTE6ZCthfSxlLmluT3V0X2Jib3gmJmUuaW5PdXRfYmJveC5wdXNoKGMuYmJveCl9ZWxz ZSBjPSExO3JldHVybntjb2xvcjp0LmNvbG9yfHxwLmRlZmF1bHRMaW5lLHgwOnQueDB8fHQu eHx8MCx4MTp0LngxfHx0Lnh8fDAseTA6dC55MHx8dC55fHwwLHkxOnQueTF8fHQueXx8MCx4 TGFiZWw6dC54TGFiZWwseUxhYmVsOnQueUxhYmVsLHpMYWJlbDp0LnpMYWJlbCx0ZXh0OnQu dGV4dCxuYW1lOnQubmFtZSxpZGVhbEFsaWduOnQuaWRlYWxBbGlnbixib3JkZXJDb2xvcjp0 LmJvcmRlckNvbG9yLGZvbnRGYW1pbHk6dC5mb250RmFtaWx5LGZvbnRTaXplOnQuZm9udFNp emUsZm9udENvbG9yOnQuZm9udENvbG9yLG5hbWVMZW5ndGg6dC5uYW1lTGVuZ3RoLHRleHRB bGlnbjp0LnRleHRBbGlnbix0cmFjZTp0LnRyYWNlfHx7aW5kZXg6MCxob3ZlcmluZm86IiJ9 LHhhOntfb2Zmc2V0OjB9LHlhOntfb2Zmc2V0OjB9LGluZGV4OjAsaG92ZXJ0ZW1wbGF0ZTp0 LmhvdmVydGVtcGxhdGV8fCExLGhvdmVydGVtcGxhdGVMYWJlbHM6dC5ob3ZlcnRlbXBsYXRl TGFiZWxzfHwhMSxldmVudERhdGE6Y319KSkse2dkOmksaG92ZXJtb2RlOiJjbG9zZXN0Iixy b3RhdGVMYWJlbHM6ITEsYmdDb2xvcjplLmJnQ29sb3J8fHAuYmFja2dyb3VuZCxjb250YWlu ZXI6bi5zZWxlY3QoZS5jb250YWluZXIpLG91dGVyQ29udGFpbmVyOmUub3V0ZXJDb250YWlu ZXJ8fGUuY29udGFpbmVyfSksbD0wLGM9MDtyZXR1cm4gcy5zb3J0KChmdW5jdGlvbih0LGUp e3JldHVybiB0LnkwLWUueTB9KSkuZWFjaCgoZnVuY3Rpb24odCxyKXt2YXIgbj10LnkwLXQu YnkvMjt0Lm9mZnNldD1uLTU8bD9sLW4rNTowLGw9bit0LmJ5K3Qub2Zmc2V0LHI9PT1lLmFu Y2hvckluZGV4JiYoYz10Lm9mZnNldCl9KSkuZWFjaCgoZnVuY3Rpb24odCl7dC5vZmZzZXQt PWN9KSkseihzLCExLGkuX2Z1bGxMYXlvdXQuX2ludlNjYWxlWCxpLl9mdWxsTGF5b3V0Ll9p bnZTY2FsZVkpLHI/czpzLm5vZGUoKX07dmFyIFA9LzxleHRyYT4oW1xzXFNdKik8XC9leHRy YT4vO2Z1bmN0aW9uIEkodCxlKXt2YXIgcj1lLmdkLGk9ci5fZnVsbExheW91dCxhPWUuaG92 ZXJtb2RlLGM9ZS5yb3RhdGVMYWJlbHMsZj1lLmJnQ29sb3IsZD1lLmNvbnRhaW5lcixtPWUu b3V0ZXJDb250YWluZXIsdz1lLmNvbW1vbkxhYmVsT3B0c3x8e307aWYoMD09PXQubGVuZ3Ro KXJldHVybltbXV07dmFyIFQ9ZS5mb250RmFtaWx5fHx5LkhPVkVSRk9OVCxrPWUuZm9udFNp emV8fHkuSE9WRVJGT05UU0laRSxBPXRbMF0sRT1BLnhhLEw9QS55YSxQPWEuY2hhckF0KDAp LEk9QVtQKyJMYWJlbCJdLHo9VihyLG0pLEQ9ei50b3AsUj16LndpZHRoLEY9ei5oZWlnaHQs Qj12b2lkIDAhPT1JJiZBLmRpc3RhbmNlPD1lLmhvdmVyZGlzdGFuY2UmJigieCI9PT1hfHwi eSI9PT1hKTtpZihCKXt2YXIgTixqLFU9ITA7Zm9yKE49MDtOPHQubGVuZ3RoO04rKylpZihV JiZ2b2lkIDA9PT10W05dLnpMYWJlbCYmKFU9ITEpLGo9dFtOXS5ob3ZlcmluZm98fHRbTl0u dHJhY2UuaG92ZXJpbmZvKXt2YXIgSD1BcnJheS5pc0FycmF5KGopP2o6ai5zcGxpdCgiKyIp O2lmKC0xPT09SC5pbmRleE9mKCJhbGwiKSYmLTE9PT1ILmluZGV4T2YoYSkpe0I9ITE7YnJl YWt9fVUmJihCPSExKX12YXIgcT1kLnNlbGVjdEFsbCgiZy5heGlzdGV4dCIpLmRhdGEoQj9b MF06W10pO2lmKHEuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJheGlzdGV4dCIsITAp LHEuZXhpdCgpLnJlbW92ZSgpLHEuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1uLnNlbGVjdCh0 aGlzKSxlPW8uZW5zdXJlU2luZ2xlKHQsInBhdGgiLCIiLChmdW5jdGlvbih0KXt0LnN0eWxl KHsic3Ryb2tlLXdpZHRoIjoiMXB4In0pfSkpLGw9by5lbnN1cmVTaW5nbGUodCwidGV4dCIs IiIsKGZ1bmN0aW9uKHQpe3QuYXR0cigiZGF0YS1ub3RleCIsMSl9KSksYz13LmJnY29sb3J8 fHAuZGVmYXVsdExpbmUsZj13LmJvcmRlcmNvbG9yfHxwLmNvbnRyYXN0KGMpLGQ9cC5jb250 cmFzdChjKSxtPXtmYW1pbHk6dy5mb250LmZhbWlseXx8VCxzaXplOncuZm9udC5zaXplfHxr LGNvbG9yOncuZm9udC5jb2xvcnx8ZH07ZS5zdHlsZSh7ZmlsbDpjLHN0cm9rZTpmfSksbC50 ZXh0KEkpLmNhbGwoaC5mb250LG0pLmNhbGwodS5wb3NpdGlvblRleHQsMCwwKS5jYWxsKHUu Y29udmVydFRvVHNwYW5zLHIpLHQuYXR0cigidHJhbnNmb3JtIiwiIik7dmFyIGcsdix5PVYo cixsLm5vZGUoKSk7aWYoIngiPT09YSl7dmFyIHg9InRvcCI9PT1FLnNpZGU/Ii0iOiIiO2wu YXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5jYWxsKHUucG9zaXRpb25UZXh0LDAsInRv cCI9PT1FLnNpZGU/RC15LmJvdHRvbS1NLVM6RC15LnRvcCtNK1MpLGc9RS5fb2Zmc2V0KyhB LngwK0EueDEpLzIsdj1MLl9vZmZzZXQrKCJ0b3AiPT09RS5zaWRlPzA6TC5fbGVuZ3RoKTt2 YXIgYj15LndpZHRoLzIrUztnPGI/KGc9YixlLmF0dHIoImQiLCJNLSIrKGItTSkrIiwwTC0i KyhiLTIqTSkrIiwiK3grTSsiSCIrKFMreS53aWR0aC8yKSsidiIreCsoMipTK3kuaGVpZ2h0 KSsiSC0iK2IrIlYiK3grTSsiWiIpKTpnPmkud2lkdGgtYj8oZz1pLndpZHRoLWIsZS5hdHRy KCJkIiwiTSIrKGItTSkrIiwwTCIrYisiLCIreCtNKyJ2Iit4KygyKlMreS5oZWlnaHQpKyJI LSIrYisiViIreCtNKyJIIisoYi0yKk0pKyJaIikpOmUuYXR0cigiZCIsIk0wLDBMIitNKyIs Iit4K00rIkgiKyhTK3kud2lkdGgvMikrInYiK3grKDIqUyt5LmhlaWdodCkrIkgtIisoUyt5 LndpZHRoLzIpKyJWIit4K00rIkgtIitNKyJaIil9ZWxzZXt2YXIgXyxDLFA7InJpZ2h0Ij09 PUwuc2lkZT8oXz0ic3RhcnQiLEM9MSxQPSIiLGc9RS5fb2Zmc2V0K0UuX2xlbmd0aCk6KF89 ImVuZCIsQz0tMSxQPSItIixnPUUuX29mZnNldCksdj1MLl9vZmZzZXQrKEEueTArQS55MSkv MixsLmF0dHIoInRleHQtYW5jaG9yIixfKSxlLmF0dHIoImQiLCJNMCwwTCIrUCtNKyIsIitN KyJWIisoUyt5LmhlaWdodC8yKSsiaCIrUCsoMipTK3kud2lkdGgpKyJWLSIrKFMreS5oZWln aHQvMikrIkgiK1ArTSsiVi0iK00rIloiKTt2YXIgTyx6PXkuaGVpZ2h0LzIsUj1ELXkudG9w LXosRj0iY2xpcCIraS5fdWlkKyJjb21tb25sYWJlbCIrTC5faWQ7aWYoZzx5LndpZHRoKzIq UytNKXtPPSJNLSIrKE0rUykrIi0iK3orImgtIisoeS53aWR0aC1TKSsiViIreisiaCIrKHku d2lkdGgtUykrIloiO3ZhciBCPXkud2lkdGgtZytTO3UucG9zaXRpb25UZXh0KGwsQixSKSwi ZW5kIj09PV8mJmwuc2VsZWN0QWxsKCJ0c3BhbiIpLmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9 bi5zZWxlY3QodGhpcyksZT1oLnRlc3Rlci5hcHBlbmQoInRleHQiKS50ZXh0KHQudGV4dCgp KS5jYWxsKGguZm9udCxtKSxpPVYocixlLm5vZGUoKSk7TWF0aC5yb3VuZChpLndpZHRoKTxN YXRoLnJvdW5kKHkud2lkdGgpJiZ0LmF0dHIoIngiLEItaS53aWR0aCksZS5yZW1vdmUoKX0p KX1lbHNlIHUucG9zaXRpb25UZXh0KGwsQyooUytNKSxSKSxPPW51bGw7dmFyIE49aS5fdG9w Y2xpcHMuc2VsZWN0QWxsKCIjIitGKS5kYXRhKE8/WzBdOltdKTtOLmVudGVyKCkuYXBwZW5k KCJjbGlwUGF0aCIpLmF0dHIoImlkIixGKS5hcHBlbmQoInBhdGgiKSxOLmV4aXQoKS5yZW1v dmUoKSxOLnNlbGVjdCgicGF0aCIpLmF0dHIoImQiLE8pLGguc2V0Q2xpcFVybChsLE8/Rjpu dWxsLHIpfXQuYXR0cigidHJhbnNmb3JtIixzKGcsdikpfSkpLHYuaXNVbmlmaWVkSG92ZXIo YSkpe2Quc2VsZWN0QWxsKCJnLmhvdmVydGV4dCIpLnJlbW92ZSgpO3ZhciBHPXQuZmlsdGVy KChmdW5jdGlvbih0KXtyZXR1cm4ibm9uZSIhPT10LmhvdmVyaW5mb30pKTtpZigwPT09Ry5s ZW5ndGgpcmV0dXJuO3ZhciBZPWkuaG92ZXJsYWJlbCxXPVkuZm9udCxYPXtzaG93bGVnZW5k OiEwLGxlZ2VuZDp7dGl0bGU6e3RleHQ6SSxmb250Old9LGZvbnQ6VyxiZ2NvbG9yOlkuYmdj b2xvcixib3JkZXJjb2xvcjpZLmJvcmRlcmNvbG9yLGJvcmRlcndpZHRoOjEsdHJhY2Vncm91 cGdhcDo3LHRyYWNlb3JkZXI6aS5sZWdlbmQ/aS5sZWdlbmQudHJhY2VvcmRlcjp2b2lkIDAs b3JpZW50YXRpb246InYifX0sWj17Zm9udDpXfTt4KFgsWixyLl9mdWxsRGF0YSk7dmFyIEo9 Wi5sZWdlbmQ7Si5lbnRyaWVzPVtdO2Zvcih2YXIgSz0wO0s8Ry5sZW5ndGg7SysrKXt2YXIg UT1HW0tdO2lmKCJub25lIiE9PVEuaG92ZXJpbmZvKXt2YXIgJD1PKFEsITAsYSxpLEkpLHR0 PSRbMF0sZXQ9JFsxXTtRLm5hbWU9ZXQsUS50ZXh0PSIiIT09ZXQ/ZXQrIiA6ICIrdHQ6dHQ7 dmFyIHJ0PVEuY2RbUS5pbmRleF07cnQmJihydC5tYyYmKFEubWM9cnQubWMpLHJ0Lm1jYyYm KFEubWM9cnQubWNjKSxydC5tbGMmJihRLm1sYz1ydC5tbGMpLHJ0Lm1sY2MmJihRLm1sYz1y dC5tbGNjKSxydC5tbHcmJihRLm1sdz1ydC5tbHcpLHJ0Lm1yYyYmKFEubXJjPXJ0Lm1yYyks cnQuZGlyJiYoUS5kaXI9cnQuZGlyKSksUS5fZGlzdGluY3Q9ITAsSi5lbnRyaWVzLnB1c2go W1FdKX19Si5lbnRyaWVzLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbMF0udHJhY2Uu aW5kZXgtZVswXS50cmFjZS5pbmRleH0pKSxKLmxheWVyPWQsSi5faW5Ib3Zlcj0hMCxKLl9n cm91cFRpdGxlRm9udD1ZLmdyb3VwdGl0bGVmb250LGIocixKKTt2YXIgbnQsaXQsYXQsb3Qs c3Q9ZC5zZWxlY3QoImcubGVnZW5kIiksbHQ9VihyLHN0Lm5vZGUoKSksY3Q9bHQud2lkdGgr MipTLHV0PWx0LmhlaWdodCsyKlMsZnQ9R1swXSxodD0oZnQueDArZnQueDEpLzIscHQ9KGZ0 LnkwK2Z0LnkxKS8yLGR0PSEoZy50cmFjZUlzKGZ0LnRyYWNlLCJiYXItbGlrZSIpfHxnLnRy YWNlSXMoZnQudHJhY2UsImJveC12aW9saW4iKSk7InkiPT09UD9kdD8oaXQ9cHQtUyxudD1w dCtTKTooaXQ9TWF0aC5taW4uYXBwbHkobnVsbCxHLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJu IE1hdGgubWluKHQueTAsdC55MSl9KSkpLG50PU1hdGgubWF4LmFwcGx5KG51bGwsRy5tYXAo KGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLm1heCh0LnkwLHQueTEpfSkpKSk6aXQ9bnQ9by5t ZWFuKEcubWFwKChmdW5jdGlvbih0KXtyZXR1cm4odC55MCt0LnkxKS8yfSkpKS11dC8yLCJ4 Ij09PVA/ZHQ/KGF0PWh0K1Msb3Q9aHQtUyk6KGF0PU1hdGgubWF4LmFwcGx5KG51bGwsRy5t YXAoKGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLm1heCh0LngwLHQueDEpfSkpKSxvdD1NYXRo Lm1pbi5hcHBseShudWxsLEcubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5taW4odC54 MCx0LngxKX0pKSkpOmF0PW90PW8ubWVhbihHLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuKHQu eDArdC54MSkvMn0pKSktY3QvMjt2YXIgbXQsZ3QsdnQ9RS5fb2Zmc2V0LHl0PUwuX29mZnNl dDtyZXR1cm4gb3QrPXZ0LWN0LGl0Kz15dC11dCxtdD0oYXQrPXZ0KStjdDxSJiZhdD49MD9h dDpvdCtjdDxSJiZvdD49MD9vdDp2dCtjdDxSP3Z0OmF0LWh0PGh0LW90K2N0P1ItY3Q6MCxt dCs9UyxndD0obnQrPXl0KSt1dDxGJiZudD49MD9udDppdCt1dDxGJiZpdD49MD9pdDp5dCt1 dDxGP3l0Om50LXB0PHB0LWl0K3V0P0YtdXQ6MCxndCs9UyxzdC5hdHRyKCJ0cmFuc2Zvcm0i LHMobXQtMSxndC0xKSksc3R9dmFyIHh0PWQuc2VsZWN0QWxsKCJnLmhvdmVydGV4dCIpLmRh dGEodCwoZnVuY3Rpb24odCl7cmV0dXJuIEModCl9KSk7cmV0dXJuIHh0LmVudGVyKCkuYXBw ZW5kKCJnIikuY2xhc3NlZCgiaG92ZXJ0ZXh0IiwhMCkuZWFjaCgoZnVuY3Rpb24oKXt2YXIg dD1uLnNlbGVjdCh0aGlzKTt0LmFwcGVuZCgicmVjdCIpLmNhbGwocC5maWxsLHAuYWRkT3Bh Y2l0eShmLC44KSksdC5hcHBlbmQoInRleHQiKS5jbGFzc2VkKCJuYW1lIiwhMCksdC5hcHBl bmQoInBhdGgiKS5zdHlsZSgic3Ryb2tlLXdpZHRoIiwiMXB4IiksdC5hcHBlbmQoInRleHQi KS5jbGFzc2VkKCJudW1zIiwhMCkuY2FsbChoLmZvbnQsVCxrKX0pKSx4dC5leGl0KCkucmVt b3ZlKCkseHQuZWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9bi5zZWxlY3QodGhpcykuYXR0cigi dHJhbnNmb3JtIiwiIiksbz10LmNvbG9yO0FycmF5LmlzQXJyYXkobykmJihvPW9bdC5ldmVu dERhdGFbMF0ucG9pbnROdW1iZXJdKTt2YXIgZD10LmJnY29sb3J8fG8sbT1wLmNvbWJpbmUo cC5vcGFjaXR5KGQpP2Q6cC5kZWZhdWx0TGluZSxmKSxnPXAuY29tYmluZShwLm9wYWNpdHko byk/bzpwLmRlZmF1bHRMaW5lLGYpLHY9dC5ib3JkZXJDb2xvcnx8cC5jb250cmFzdChtKSx5 PU8odCxCLGEsaSxJLGUpLHg9eVswXSxiPXlbMV0sdz1lLnNlbGVjdCgidGV4dC5udW1zIiku Y2FsbChoLmZvbnQsdC5mb250RmFtaWx5fHxULHQuZm9udFNpemV8fGssdC5mb250Q29sb3J8 fHYpLnRleHQoeCkuYXR0cigiZGF0YS1ub3RleCIsMSkuY2FsbCh1LnBvc2l0aW9uVGV4dCww LDApLmNhbGwodS5jb252ZXJ0VG9Uc3BhbnMsciksQT1lLnNlbGVjdCgidGV4dC5uYW1lIiks RT0wLEw9MDtpZihiJiZiIT09eCl7QS5jYWxsKGguZm9udCx0LmZvbnRGYW1pbHl8fFQsdC5m b250U2l6ZXx8ayxnKS50ZXh0KGIpLmF0dHIoImRhdGEtbm90ZXgiLDEpLmNhbGwodS5wb3Np dGlvblRleHQsMCwwKS5jYWxsKHUuY29udmVydFRvVHNwYW5zLHIpO3ZhciBDPVYocixBLm5v ZGUoKSk7RT1DLndpZHRoKzIqUyxMPUMuaGVpZ2h0KzIqU31lbHNlIEEucmVtb3ZlKCksZS5z ZWxlY3QoInJlY3QiKS5yZW1vdmUoKTtlLnNlbGVjdCgicGF0aCIpLnN0eWxlKHtmaWxsOm0s c3Ryb2tlOnZ9KTt2YXIgUD10LnhhLl9vZmZzZXQrKHQueDArdC54MSkvMix6PXQueWEuX29m ZnNldCsodC55MCt0LnkxKS8yLE49TWF0aC5hYnModC54MS10LngwKSxqPU1hdGguYWJzKHQu eTEtdC55MCksVT1WKHIsdy5ub2RlKCkpLEg9VS53aWR0aC9pLl9pbnZTY2FsZVgscT1VLmhl aWdodC9pLl9pbnZTY2FsZVk7dC50eTA9KEQtVS50b3ApL2kuX2ludlNjYWxlWSx0LmJ4PUgr MipTLHQuYnk9TWF0aC5tYXgocSsyKlMsTCksdC5hbmNob3I9InN0YXJ0Iix0LnR4d2lkdGg9 SCx0LnR4MndpZHRoPUUsdC5vZmZzZXQ9MDt2YXIgRyxZLFc9KEgrTStTK0UpKmkuX2ludlNj YWxlWDtpZihjKXQucG9zPVAsRz16K2ovMitXPD1GLFk9ei1qLzItVz49MCwidG9wIiE9PXQu aWRlYWxBbGlnbiYmR3x8IVk/Rz8oeis9ai8yLHQuYW5jaG9yPSJzdGFydCIpOnQuYW5jaG9y PSJtaWRkbGUiOih6LT1qLzIsdC5hbmNob3I9ImVuZCIpO2Vsc2UgaWYodC5wb3M9eixHPVAr Ti8yK1c8PVIsWT1QLU4vMi1XPj0wLCJsZWZ0IiE9PXQuaWRlYWxBbGlnbiYmR3x8IVkpaWYo RylQKz1OLzIsdC5hbmNob3I9InN0YXJ0IjtlbHNle3QuYW5jaG9yPSJtaWRkbGUiO3ZhciBY PVcvMixaPVArWC1SLEo9UC1YO1o+MCYmKFAtPVopLEo8MCYmKFArPS1KKX1lbHNlIFAtPU4v Mix0LmFuY2hvcj0iZW5kIjt3LmF0dHIoInRleHQtYW5jaG9yIix0LmFuY2hvciksRSYmQS5h dHRyKCJ0ZXh0LWFuY2hvciIsdC5hbmNob3IpLGUuYXR0cigidHJhbnNmb3JtIixzKFAseikr KGM/bChfKToiIikpfSkpLHh0fWZ1bmN0aW9uIE8odCxlLHIsbixpLGEpe3ZhciBzPSIiLGw9 IiI7dm9pZCAwIT09dC5uYW1lT3ZlcnJpZGUmJih0Lm5hbWU9dC5uYW1lT3ZlcnJpZGUpLHQu bmFtZSYmKHQudHJhY2UuX21ldGEmJih0Lm5hbWU9by50ZW1wbGF0ZVN0cmluZyh0Lm5hbWUs dC50cmFjZS5fbWV0YSkpLHM9Qih0Lm5hbWUsdC5uYW1lTGVuZ3RoKSk7dmFyIGM9ci5jaGFy QXQoMCksdT0ieCI9PT1jPyJ5IjoieCI7dm9pZCAwIT09dC56TGFiZWw/KHZvaWQgMCE9PXQu eExhYmVsJiYobCs9Ing6ICIrdC54TGFiZWwrIjxicj4iKSx2b2lkIDAhPT10LnlMYWJlbCYm KGwrPSJ5OiAiK3QueUxhYmVsKyI8YnI+IiksImNob3JvcGxldGgiIT09dC50cmFjZS50eXBl JiYiY2hvcm9wbGV0aG1hcGJveCIhPT10LnRyYWNlLnR5cGUmJihsKz0obD8iejogIjoiIikr dC56TGFiZWwpKTplJiZ0W2MrIkxhYmVsIl09PT1pP2w9dFt1KyJMYWJlbCJdfHwiIjp2b2lk IDA9PT10LnhMYWJlbD92b2lkIDAhPT10LnlMYWJlbCYmInNjYXR0ZXJjYXJwZXQiIT09dC50 cmFjZS50eXBlJiYobD10LnlMYWJlbCk6bD12b2lkIDA9PT10LnlMYWJlbD90LnhMYWJlbDoi KCIrdC54TGFiZWwrIiwgIit0LnlMYWJlbCsiKSIsIXQudGV4dCYmMCE9PXQudGV4dHx8QXJy YXkuaXNBcnJheSh0LnRleHQpfHwobCs9KGw/Ijxicj4iOiIiKSt0LnRleHQpLHZvaWQgMCE9 PXQuZXh0cmFUZXh0JiYobCs9KGw/Ijxicj4iOiIiKSt0LmV4dHJhVGV4dCksYSYmIiI9PT1s JiYhdC5ob3ZlcnRlbXBsYXRlJiYoIiI9PT1zJiZhLnJlbW92ZSgpLGw9cyk7dmFyIGY9dC5o b3ZlcnRlbXBsYXRlfHwhMTtpZihmKXt2YXIgaD10LmhvdmVydGVtcGxhdGVMYWJlbHN8fHQ7 dFtjKyJMYWJlbCJdIT09aSYmKGhbYysib3RoZXIiXT1oW2MrIlZhbCJdLGhbYysib3RoZXJM YWJlbCJdPWhbYysiTGFiZWwiXSksbD0obD1vLmhvdmVydGVtcGxhdGVTdHJpbmcoZixoLG4u X2QzbG9jYWxlLHQuZXZlbnREYXRhWzBdfHx7fSx0LnRyYWNlLl9tZXRhKSkucmVwbGFjZShQ LChmdW5jdGlvbihlLHIpe3JldHVybiBzPUIocix0Lm5hbWVMZW5ndGgpLCIifSkpfXJldHVy bltsLHNdfWZ1bmN0aW9uIHoodCxlLHIsaSl7dmFyIGE9ZnVuY3Rpb24odCl7cmV0dXJuIHQq cn0sbz1mdW5jdGlvbih0KXtyZXR1cm4gdCppfTt0LmVhY2goKGZ1bmN0aW9uKHQpe3ZhciBy PW4uc2VsZWN0KHRoaXMpO2lmKHQuZGVsKXJldHVybiByLnJlbW92ZSgpO3ZhciBpPXIuc2Vs ZWN0KCJ0ZXh0Lm51bXMiKSxzPXQuYW5jaG9yLGw9ImVuZCI9PT1zPy0xOjEsYz17c3RhcnQ6 MSxlbmQ6LTEsbWlkZGxlOjB9W3NdLGY9YyooTStTKSxwPWYrYyoodC50eHdpZHRoK1MpLGQ9 MCxtPXQub2Zmc2V0LGc9Im1pZGRsZSI9PT1zO2cmJihmLT10LnR4MndpZHRoLzIscCs9dC50 eHdpZHRoLzIrUyksZSYmKG0qPS1BLGQ9dC5vZmZzZXQqayksci5zZWxlY3QoInBhdGgiKS5h dHRyKCJkIixnPyJNLSIrYSh0LmJ4LzIrdC50eDJ3aWR0aC8yKSsiLCIrbyhtLXQuYnkvMikr ImgiK2EodC5ieCkrInYiK28odC5ieSkrImgtIithKHQuYngpKyJaIjoiTTAsMEwiK2EobCpN K2QpKyIsIitvKE0rbSkrInYiK28odC5ieS8yLU0pKyJoIithKGwqdC5ieCkrInYtIitvKHQu YnkpKyJIIithKGwqTStkKSsiViIrbyhtLU0pKyJaIik7dmFyIHY9ZCtmLHk9bSt0LnR5MC10 LmJ5LzIrUyx4PXQudGV4dEFsaWdufHwiYXV0byI7ImF1dG8iIT09eCYmKCJsZWZ0Ij09PXgm JiJzdGFydCIhPT1zPyhpLmF0dHIoInRleHQtYW5jaG9yIiwic3RhcnQiKSx2PWc/LXQuYngv Mi10LnR4MndpZHRoLzIrUzotdC5ieC1TKToicmlnaHQiPT09eCYmImVuZCIhPT1zJiYoaS5h dHRyKCJ0ZXh0LWFuY2hvciIsImVuZCIpLHY9Zz90LmJ4LzItdC50eDJ3aWR0aC8yLVM6dC5i eCtTKSksaS5jYWxsKHUucG9zaXRpb25UZXh0LGEodiksbyh5KSksdC50eDJ3aWR0aCYmKHIu c2VsZWN0KCJ0ZXh0Lm5hbWUiKS5jYWxsKHUucG9zaXRpb25UZXh0LGEocCtjKlMrZCksbyht K3QudHkwLXQuYnkvMitTKSksci5zZWxlY3QoInJlY3QiKS5jYWxsKGguc2V0UmVjdCxhKHAr KGMtMSkqdC50eDJ3aWR0aC8yK2QpLG8obS10LmJ5LzItMSksYSh0LnR4MndpZHRoKSxvKHQu YnkrMikpKX0pKX1mdW5jdGlvbiBEKHQsZSl7dmFyIHI9dC5pbmRleCxuPXQudHJhY2V8fHt9 LGE9dC5jZFswXSxzPXQuY2Rbcl18fHt9O2Z1bmN0aW9uIGwodCl7cmV0dXJuIHR8fGkodCkm JjA9PT10fXZhciBjPUFycmF5LmlzQXJyYXkocik/ZnVuY3Rpb24odCxlKXt2YXIgaT1vLmNh c3RPcHRpb24oYSxyLHQpO3JldHVybiBsKGkpP2k6by5leHRyYWN0T3B0aW9uKHt9LG4sIiIs ZSl9OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG8uZXh0cmFjdE9wdGlvbihzLG4sdCxlKX07ZnVu Y3Rpb24gdShlLHIsbil7dmFyIGk9YyhyLG4pO2woaSkmJih0W2VdPWkpfWlmKHUoImhvdmVy aW5mbyIsImhpIiwiaG92ZXJpbmZvIiksdSgiYmdjb2xvciIsImhiZyIsImhvdmVybGFiZWwu Ymdjb2xvciIpLHUoImJvcmRlckNvbG9yIiwiaGJjIiwiaG92ZXJsYWJlbC5ib3JkZXJjb2xv ciIpLHUoImZvbnRGYW1pbHkiLCJodGYiLCJob3ZlcmxhYmVsLmZvbnQuZmFtaWx5IiksdSgi Zm9udFNpemUiLCJodHMiLCJob3ZlcmxhYmVsLmZvbnQuc2l6ZSIpLHUoImZvbnRDb2xvciIs Imh0YyIsImhvdmVybGFiZWwuZm9udC5jb2xvciIpLHUoIm5hbWVMZW5ndGgiLCJobmwiLCJo b3ZlcmxhYmVsLm5hbWVsZW5ndGgiKSx1KCJ0ZXh0QWxpZ24iLCJodGEiLCJob3ZlcmxhYmVs LmFsaWduIiksdC5wb3NyZWY9InkiPT09ZXx8ImNsb3Nlc3QiPT09ZSYmImgiPT09bi5vcmll bnRhdGlvbj90LnhhLl9vZmZzZXQrKHQueDArdC54MSkvMjp0LnlhLl9vZmZzZXQrKHQueTAr dC55MSkvMix0LngwPW8uY29uc3RyYWluKHQueDAsMCx0LnhhLl9sZW5ndGgpLHQueDE9by5j b25zdHJhaW4odC54MSwwLHQueGEuX2xlbmd0aCksdC55MD1vLmNvbnN0cmFpbih0LnkwLDAs dC55YS5fbGVuZ3RoKSx0LnkxPW8uY29uc3RyYWluKHQueTEsMCx0LnlhLl9sZW5ndGgpLHZv aWQgMCE9PXQueExhYmVsVmFsJiYodC54TGFiZWw9InhMYWJlbCJpbiB0P3QueExhYmVsOm0u aG92ZXJMYWJlbFRleHQodC54YSx0LnhMYWJlbFZhbCxuLnhob3ZlcmZvcm1hdCksdC54VmFs PXQueGEuYzJkKHQueExhYmVsVmFsKSksdm9pZCAwIT09dC55TGFiZWxWYWwmJih0LnlMYWJl bD0ieUxhYmVsImluIHQ/dC55TGFiZWw6bS5ob3ZlckxhYmVsVGV4dCh0LnlhLHQueUxhYmVs VmFsLG4ueWhvdmVyZm9ybWF0KSx0LnlWYWw9dC55YS5jMmQodC55TGFiZWxWYWwpKSx2b2lk IDAhPT10LnpMYWJlbFZhbCYmdm9pZCAwPT09dC56TGFiZWwmJih0LnpMYWJlbD1TdHJpbmco dC56TGFiZWxWYWwpKSwhKGlzTmFOKHQueGVycil8fCJsb2ciPT09dC54YS50eXBlJiZ0Lnhl cnI8PTApKXt2YXIgZj1tLnRpY2tUZXh0KHQueGEsdC54YS5jMmwodC54ZXJyKSwiaG92ZXIi KS50ZXh0O3ZvaWQgMCE9PXQueGVycm5lZz90LnhMYWJlbCs9IiArIitmKyIgLyAtIittLnRp Y2tUZXh0KHQueGEsdC54YS5jMmwodC54ZXJybmVnKSwiaG92ZXIiKS50ZXh0OnQueExhYmVs Kz0iIFx4YjEgIitmLCJ4Ij09PWUmJih0LmRpc3RhbmNlKz0xKX1pZighKGlzTmFOKHQueWVy cil8fCJsb2ciPT09dC55YS50eXBlJiZ0LnllcnI8PTApKXt2YXIgaD1tLnRpY2tUZXh0KHQu eWEsdC55YS5jMmwodC55ZXJyKSwiaG92ZXIiKS50ZXh0O3ZvaWQgMCE9PXQueWVycm5lZz90 LnlMYWJlbCs9IiArIitoKyIgLyAtIittLnRpY2tUZXh0KHQueWEsdC55YS5jMmwodC55ZXJy bmVnKSwiaG92ZXIiKS50ZXh0OnQueUxhYmVsKz0iIFx4YjEgIitoLCJ5Ij09PWUmJih0LmRp c3RhbmNlKz0xKX12YXIgcD10LmhvdmVyaW5mb3x8dC50cmFjZS5ob3ZlcmluZm87cmV0dXJu IHAmJiJhbGwiIT09cCYmKC0xPT09KHA9QXJyYXkuaXNBcnJheShwKT9wOnAuc3BsaXQoIisi KSkuaW5kZXhPZigieCIpJiYodC54TGFiZWw9dm9pZCAwKSwtMT09PXAuaW5kZXhPZigieSIp JiYodC55TGFiZWw9dm9pZCAwKSwtMT09PXAuaW5kZXhPZigieiIpJiYodC56TGFiZWw9dm9p ZCAwKSwtMT09PXAuaW5kZXhPZigidGV4dCIpJiYodC50ZXh0PXZvaWQgMCksLTE9PT1wLmlu ZGV4T2YoIm5hbWUiKSYmKHQubmFtZT12b2lkIDApKSx0fWZ1bmN0aW9uIFIodCxlLHIpe3Zh ciBuLGksbz1yLmNvbnRhaW5lcixzPXIuZnVsbExheW91dCxsPXMuX3NpemUsYz1yLmV2ZW50 LHU9ISFlLmhMaW5lUG9pbnQsZj0hIWUudkxpbmVQb2ludDtpZihvLnNlbGVjdEFsbCgiLnNw aWtlbGluZSIpLnJlbW92ZSgpLGZ8fHUpe3ZhciBkPXAuY29tYmluZShzLnBsb3RfYmdjb2xv cixzLnBhcGVyX2JnY29sb3IpO2lmKHUpe3ZhciBnLHYseT1lLmhMaW5lUG9pbnQ7bj15JiZ5 LnhhLCJjdXJzb3IiPT09KGk9eSYmeS55YSkuc3Bpa2VzbmFwPyhnPWMucG9pbnRlclgsdj1j LnBvaW50ZXJZKTooZz1uLl9vZmZzZXQreS54LHY9aS5fb2Zmc2V0K3kueSk7dmFyIHgsYixf PWEucmVhZGFiaWxpdHkoeS5jb2xvcixkKTwxLjU/cC5jb250cmFzdChkKTp5LmNvbG9yLHc9 aS5zcGlrZW1vZGUsVD1pLnNwaWtldGhpY2tuZXNzLGs9aS5zcGlrZWNvbG9yfHxfLEE9bS5n ZXRQeFBvc2l0aW9uKHQsaSk7aWYoLTEhPT13LmluZGV4T2YoInRvYXhpcyIpfHwtMSE9PXcu aW5kZXhPZigiYWNyb3NzIikpe2lmKC0xIT09dy5pbmRleE9mKCJ0b2F4aXMiKSYmKHg9QSxi PWcpLC0xIT09dy5pbmRleE9mKCJhY3Jvc3MiKSl7dmFyIE09aS5fY291bnRlckRvbWFpbk1p bixTPWkuX2NvdW50ZXJEb21haW5NYXg7ImZyZWUiPT09aS5hbmNob3ImJihNPU1hdGgubWlu KE0saS5wb3NpdGlvbiksUz1NYXRoLm1heChTLGkucG9zaXRpb24pKSx4PWwubCtNKmwudyxi PWwubCtTKmwud31vLmluc2VydCgibGluZSIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoe3gxOngs eDI6Yix5MTp2LHkyOnYsInN0cm9rZS13aWR0aCI6VCxzdHJva2U6aywic3Ryb2tlLWRhc2hh cnJheSI6aC5kYXNoU3R5bGUoaS5zcGlrZWRhc2gsVCl9KS5jbGFzc2VkKCJzcGlrZWxpbmUi LCEwKS5jbGFzc2VkKCJjcmlzcCIsITApLG8uaW5zZXJ0KCJsaW5lIiwiOmZpcnN0LWNoaWxk IikuYXR0cih7eDE6eCx4MjpiLHkxOnYseTI6diwic3Ryb2tlLXdpZHRoIjpUKzIsc3Ryb2tl OmR9KS5jbGFzc2VkKCJzcGlrZWxpbmUiLCEwKS5jbGFzc2VkKCJjcmlzcCIsITApfS0xIT09 dy5pbmRleE9mKCJtYXJrZXIiKSYmby5pbnNlcnQoImNpcmNsZSIsIjpmaXJzdC1jaGlsZCIp LmF0dHIoe2N4OkErKCJyaWdodCIhPT1pLnNpZGU/VDotVCksY3k6dixyOlQsZmlsbDprfSku Y2xhc3NlZCgic3Bpa2VsaW5lIiwhMCl9aWYoZil7dmFyIEUsTCxDPWUudkxpbmVQb2ludDtu PUMmJkMueGEsaT1DJiZDLnlhLCJjdXJzb3IiPT09bi5zcGlrZXNuYXA/KEU9Yy5wb2ludGVy WCxMPWMucG9pbnRlclkpOihFPW4uX29mZnNldCtDLngsTD1pLl9vZmZzZXQrQy55KTt2YXIg UCxJLE89YS5yZWFkYWJpbGl0eShDLmNvbG9yLGQpPDEuNT9wLmNvbnRyYXN0KGQpOkMuY29s b3Isej1uLnNwaWtlbW9kZSxEPW4uc3Bpa2V0aGlja25lc3MsUj1uLnNwaWtlY29sb3J8fE8s Rj1tLmdldFB4UG9zaXRpb24odCxuKTtpZigtMSE9PXouaW5kZXhPZigidG9heGlzIil8fC0x IT09ei5pbmRleE9mKCJhY3Jvc3MiKSl7aWYoLTEhPT16LmluZGV4T2YoInRvYXhpcyIpJiYo UD1GLEk9TCksLTEhPT16LmluZGV4T2YoImFjcm9zcyIpKXt2YXIgQj1uLl9jb3VudGVyRG9t YWluTWluLE49bi5fY291bnRlckRvbWFpbk1heDsiZnJlZSI9PT1uLmFuY2hvciYmKEI9TWF0 aC5taW4oQixuLnBvc2l0aW9uKSxOPU1hdGgubWF4KE4sbi5wb3NpdGlvbikpLFA9bC50Kygx LU4pKmwuaCxJPWwudCsoMS1CKSpsLmh9by5pbnNlcnQoImxpbmUiLCI6Zmlyc3QtY2hpbGQi KS5hdHRyKHt4MTpFLHgyOkUseTE6UCx5MjpJLCJzdHJva2Utd2lkdGgiOkQsc3Ryb2tlOlIs InN0cm9rZS1kYXNoYXJyYXkiOmguZGFzaFN0eWxlKG4uc3Bpa2VkYXNoLEQpfSkuY2xhc3Nl ZCgic3Bpa2VsaW5lIiwhMCkuY2xhc3NlZCgiY3Jpc3AiLCEwKSxvLmluc2VydCgibGluZSIs IjpmaXJzdC1jaGlsZCIpLmF0dHIoe3gxOkUseDI6RSx5MTpQLHkyOkksInN0cm9rZS13aWR0 aCI6RCsyLHN0cm9rZTpkfSkuY2xhc3NlZCgic3Bpa2VsaW5lIiwhMCkuY2xhc3NlZCgiY3Jp c3AiLCEwKX0tMSE9PXouaW5kZXhPZigibWFya2VyIikmJm8uaW5zZXJ0KCJjaXJjbGUiLCI6 Zmlyc3QtY2hpbGQiKS5hdHRyKHtjeDpFLGN5OkYtKCJ0b3AiIT09bi5zaWRlP0Q6LUQpLHI6 RCxmaWxsOlJ9KS5jbGFzc2VkKCJzcGlrZWxpbmUiLCEwKX19fWZ1bmN0aW9uIEYodCxlKXty ZXR1cm4hZXx8KGUudkxpbmVQb2ludCE9PXQuX3NwaWtlcG9pbnRzLnZMaW5lUG9pbnR8fGUu aExpbmVQb2ludCE9PXQuX3NwaWtlcG9pbnRzLmhMaW5lUG9pbnQpfWZ1bmN0aW9uIEIodCxl KXtyZXR1cm4gdS5wbGFpblRleHQodHx8IiIse2xlbjplLGFsbG93ZWRUYWdzOlsiYnIiLCJz dWIiLCJzdXAiLCJiIiwiaSIsImVtIl19KX1mdW5jdGlvbiBOKHQsZSxyKXt2YXIgbj1lW3Qr ImEiXSxpPWVbdCsiVmFsIl0sYT1lLmNkWzBdO2lmKCJjYXRlZ29yeSI9PT1uLnR5cGUpaT1u Ll9jYXRlZ29yaWVzTWFwW2ldO2Vsc2UgaWYoImRhdGUiPT09bi50eXBlKXt2YXIgbz1lLnRy YWNlW3QrInBlcmlvZGFsaWdubWVudCJdO2lmKG8pe3ZhciBzPWUuY2RbZS5pbmRleF0sbD1z W3QrIlN0YXJ0Il07dm9pZCAwPT09bCYmKGw9c1t0XSk7dmFyIGM9c1t0KyJFbmQiXTt2b2lk IDA9PT1jJiYoYz1zW3RdKTt2YXIgdT1jLWw7ImVuZCI9PT1vP2krPXU6Im1pZGRsZSI9PT1v JiYoaSs9dS8yKX1pPW4uZDJjKGkpfXJldHVybiBhJiZhLnQmJmEudC5wb3NMZXR0ZXI9PT1u Ll9pZCYmKCJncm91cCIhPT1yLmJveG1vZGUmJiJncm91cCIhPT1yLnZpb2xpbm1vZGV8fChp Kz1hLnQuZFBvcykpLGl9ZnVuY3Rpb24gaih0KXtyZXR1cm4gdC5vZmZzZXRUb3ArdC5jbGll bnRUb3B9ZnVuY3Rpb24gVSh0KXtyZXR1cm4gdC5vZmZzZXRMZWZ0K3QuY2xpZW50TGVmdH1m dW5jdGlvbiBWKHQsZSl7dmFyIHI9dC5fZnVsbExheW91dCxuPWUuZ2V0Qm91bmRpbmdDbGll bnRSZWN0KCksaT1uLngsYT1uLnkscz1pK24ud2lkdGgsbD1hK24uaGVpZ2h0LGM9by5hcHBs eTNEVHJhbnNmb3JtKHIuX2ludlRyYW5zZm9ybSkoaSxhKSx1PW8uYXBwbHkzRFRyYW5zZm9y bShyLl9pbnZUcmFuc2Zvcm0pKHMsbCksZj1jWzBdLGg9Y1sxXSxwPXVbMF0sZD11WzFdO3Jl dHVybnt4OmYseTpoLHdpZHRoOnAtZixoZWlnaHQ6ZC1oLHRvcDpNYXRoLm1pbihoLGQpLGxl ZnQ6TWF0aC5taW4oZixwKSxyaWdodDpNYXRoLm1heChmLHApLGJvdHRvbTpNYXRoLm1heCho LGQpfX19LHsiLi4vLi4vbGliIjo1MDMsIi4uLy4uL2xpYi9ldmVudHMiOjQ5MiwiLi4vLi4v bGliL292ZXJyaWRlX2N1cnNvciI6NTE0LCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiOjUy OSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjU1NCwiLi4vLi4vcmVnaXN0cnkiOjYz OCwiLi4vY29sb3IiOjM2NiwiLi4vZHJhZ2VsZW1lbnQiOjM4NSwiLi4vZHJhd2luZyI6Mzg4 LCIuLi9sZWdlbmQvZGVmYXVsdHMiOjQxOCwiLi4vbGVnZW5kL2RyYXciOjQxOSwiLi9jb25z dGFudHMiOjQwMCwiLi9oZWxwZXJzIjo0MDIsIkBwbG90bHkvZDMiOjU4LCJmYXN0LWlzbnVt ZXJpYyI6MTkwLHRpbnljb2xvcjI6MzEyfV0sNDA0OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vY29sb3IiKSxhPXQoIi4vaGVs cGVycyIpLmlzVW5pZmllZEhvdmVyO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixvKXtvPW98 fHt9O3ZhciBzPWUubGVnZW5kO2Z1bmN0aW9uIGwodCl7by5mb250W3RdfHwoby5mb250W3Rd PXM/ZS5sZWdlbmQuZm9udFt0XTplLmZvbnRbdF0pfWUmJmEoZS5ob3Zlcm1vZGUpJiYoby5m b250fHwoby5mb250PXt9KSxsKCJzaXplIiksbCgiZmFtaWx5IiksbCgiY29sb3IiKSxzPyhv LmJnY29sb3J8fChvLmJnY29sb3I9aS5jb21iaW5lKGUubGVnZW5kLmJnY29sb3IsZS5wYXBl cl9iZ2NvbG9yKSksby5ib3JkZXJjb2xvcnx8KG8uYm9yZGVyY29sb3I9ZS5sZWdlbmQuYm9y ZGVyY29sb3IpKTpvLmJnY29sb3J8fChvLmJnY29sb3I9ZS5wYXBlcl9iZ2NvbG9yKSkscigi aG92ZXJsYWJlbC5iZ2NvbG9yIixvLmJnY29sb3IpLHIoImhvdmVybGFiZWwuYm9yZGVyY29s b3IiLG8uYm9yZGVyY29sb3IpLHIoImhvdmVybGFiZWwubmFtZWxlbmd0aCIsby5uYW1lbGVu Z3RoKSxuLmNvZXJjZUZvbnQociwiaG92ZXJsYWJlbC5mb250IixvLmZvbnQpLHIoImhvdmVy bGFiZWwuYWxpZ24iLG8uYWxpZ24pfX0seyIuLi8uLi9saWIiOjUwMywiLi4vY29sb3IiOjM2 NiwiLi9oZWxwZXJzIjo0MDJ9XSw0MDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuL2xheW91dF9hdHRyaWJ1dGVzIik7ZS5leHBv cnRzPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcihyLGEpe3JldHVybiB2b2lkIDAhPT1lW3Jd P2Vbcl06bi5jb2VyY2UodCxlLGkscixhKX1yZXR1cm4gcigiY2xpY2ttb2RlIikscigiaG92 ZXJtb2RlIil9fSx7Ii4uLy4uL2xpYiI6NTAzLCIuL2xheW91dF9hdHRyaWJ1dGVzIjo0MDd9 XSw0MDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiQHBsb3RseS9k MyIpLGk9dCgiLi4vLi4vbGliIiksYT10KCIuLi9kcmFnZWxlbWVudCIpLG89dCgiLi9oZWxw ZXJzIikscz10KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksbD10KCIuL2hvdmVyIik7ZS5leHBv cnRzPXttb2R1bGVUeXBlOiJjb21wb25lbnQiLG5hbWU6ImZ4Iixjb25zdGFudHM6dCgiLi9j b25zdGFudHMiKSxzY2hlbWE6e2xheW91dDpzfSxhdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRl cyIpLGxheW91dEF0dHJpYnV0ZXM6cyxzdXBwbHlMYXlvdXRHbG9iYWxEZWZhdWx0czp0KCIu L2xheW91dF9nbG9iYWxfZGVmYXVsdHMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRz Iiksc3VwcGx5TGF5b3V0RGVmYXVsdHM6dCgiLi9sYXlvdXRfZGVmYXVsdHMiKSxjYWxjOnQo Ii4vY2FsYyIpLGdldERpc3RhbmNlRnVuY3Rpb246by5nZXREaXN0YW5jZUZ1bmN0aW9uLGdl dENsb3Nlc3Q6by5nZXRDbG9zZXN0LGluYm94Om8uaW5ib3gscXVhZHJhdHVyZTpvLnF1YWRy YXR1cmUsYXBwZW5kQXJyYXlQb2ludFZhbHVlOm8uYXBwZW5kQXJyYXlQb2ludFZhbHVlLGNh c3RIb3Zlck9wdGlvbjpmdW5jdGlvbih0LGUscil7cmV0dXJuIGkuY2FzdE9wdGlvbih0LGUs ImhvdmVybGFiZWwuIityKX0sY2FzdEhvdmVyaW5mbzpmdW5jdGlvbih0LGUscil7cmV0dXJu IGkuY2FzdE9wdGlvbih0LHIsImhvdmVyaW5mbyIsKGZ1bmN0aW9uKHIpe3JldHVybiBpLmNv ZXJjZUhvdmVyaW5mbyh7aG92ZXJpbmZvOnJ9LHtfbW9kdWxlOnQuX21vZHVsZX0sZSl9KSl9 LGhvdmVyOmwuaG92ZXIsdW5ob3ZlcjphLnVuaG92ZXIsbG9uZUhvdmVyOmwubG9uZUhvdmVy LGxvbmVVbmhvdmVyOmZ1bmN0aW9uKHQpe3ZhciBlPWkuaXNEM1NlbGVjdGlvbih0KT90Om4u c2VsZWN0KHQpO2Uuc2VsZWN0QWxsKCJnLmhvdmVydGV4dCIpLnJlbW92ZSgpLGUuc2VsZWN0 QWxsKCIuc3Bpa2VsaW5lIikucmVtb3ZlKCl9LGNsaWNrOnQoIi4vY2xpY2siKX19LHsiLi4v Li4vbGliIjo1MDMsIi4uL2RyYWdlbGVtZW50IjozODUsIi4vYXR0cmlidXRlcyI6Mzk3LCIu L2NhbGMiOjM5OCwiLi9jbGljayI6Mzk5LCIuL2NvbnN0YW50cyI6NDAwLCIuL2RlZmF1bHRz Ijo0MDEsIi4vaGVscGVycyI6NDAyLCIuL2hvdmVyIjo0MDMsIi4vbGF5b3V0X2F0dHJpYnV0 ZXMiOjQwNywiLi9sYXlvdXRfZGVmYXVsdHMiOjQwOCwiLi9sYXlvdXRfZ2xvYmFsX2RlZmF1 bHRzIjo0MDksIkBwbG90bHkvZDMiOjU4fV0sNDA3OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4vY29uc3RhbnRzIiksaT10KCIuLi8uLi9wbG90cy9mb250X2F0 dHJpYnV0ZXMiKSxhPWkoe2VkaXRUeXBlOiJub25lIn0pO2EuZmFtaWx5LmRmbHQ9bi5IT1ZF UkZPTlQsYS5zaXplLmRmbHQ9bi5IT1ZFUkZPTlRTSVpFLGUuZXhwb3J0cz17Y2xpY2ttb2Rl Ont2YWxUeXBlOiJmbGFnbGlzdCIsZmxhZ3M6WyJldmVudCIsInNlbGVjdCJdLGRmbHQ6ImV2 ZW50IixlZGl0VHlwZToicGxvdCIsZXh0cmFzOlsibm9uZSJdfSxkcmFnbW9kZTp7dmFsVHlw ZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiem9vbSIsInBhbiIsInNlbGVjdCIsImxhc3NvIiwi ZHJhd2Nsb3NlZHBhdGgiLCJkcmF3b3BlbnBhdGgiLCJkcmF3bGluZSIsImRyYXdyZWN0Iiwi ZHJhd2NpcmNsZSIsIm9yYml0IiwidHVybnRhYmxlIiwhMV0sZGZsdDoiem9vbSIsZWRpdFR5 cGU6Im1vZGViYXIifSxob3Zlcm1vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpb IngiLCJ5IiwiY2xvc2VzdCIsITEsInggdW5pZmllZCIsInkgdW5pZmllZCJdLGRmbHQ6ImNs b3Nlc3QiLGVkaXRUeXBlOiJtb2RlYmFyIn0saG92ZXJkaXN0YW5jZTp7dmFsVHlwZToiaW50 ZWdlciIsbWluOi0xLGRmbHQ6MjAsZWRpdFR5cGU6Im5vbmUifSxzcGlrZWRpc3RhbmNlOnt2 YWxUeXBlOiJpbnRlZ2VyIixtaW46LTEsZGZsdDotMSxlZGl0VHlwZToibm9uZSJ9LGhvdmVy bGFiZWw6e2JnY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToibm9uZSJ9LGJvcmRl cmNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRpdFR5cGU6Im5vbmUifSxmb250OmEsZ3JvdXB0 aXRsZWZvbnQ6aSh7ZWRpdFR5cGU6Im5vbmUifSksYWxpZ246e3ZhbFR5cGU6ImVudW1lcmF0 ZWQiLHZhbHVlczpbImxlZnQiLCJyaWdodCIsImF1dG8iXSxkZmx0OiJhdXRvIixlZGl0VHlw ZToibm9uZSJ9LG5hbWVsZW5ndGg6e3ZhbFR5cGU6ImludGVnZXIiLG1pbjotMSxkZmx0OjE1 LGVkaXRUeXBlOiJub25lIn0sZWRpdFR5cGU6Im5vbmUifSxzZWxlY3RkaXJlY3Rpb246e3Zh bFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImgiLCJ2IiwiZCIsImFueSJdLGRmbHQ6ImFu eSIsZWRpdFR5cGU6Im5vbmUifX19LHsiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIjo1 ODUsIi4vY29uc3RhbnRzIjo0MDB9XSw0MDg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksYT10 KCIuL2hvdmVybW9kZV9kZWZhdWx0cyIpLG89dCgiLi9ob3ZlcmxhYmVsX2RlZmF1bHRzIik7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcihyLGEpe3JldHVybiBuLmNvZXJj ZSh0LGUsaSxyLGEpfWEodCxlKSYmKHIoImhvdmVyZGlzdGFuY2UiKSxyKCJzcGlrZWRpc3Rh bmNlIikpLCJzZWxlY3QiPT09cigiZHJhZ21vZGUiKSYmcigic2VsZWN0ZGlyZWN0aW9uIik7 dmFyIHM9ZS5faGFzKCJtYXBib3giKSxsPWUuX2hhcygiZ2VvIiksYz1lLl9iYXNlUGxvdE1v ZHVsZXMubGVuZ3RoOyJ6b29tIj09PWUuZHJhZ21vZGUmJigoc3x8bCkmJjE9PT1jfHxzJiZs JiYyPT09YykmJihlLmRyYWdtb2RlPSJwYW4iKSxvKHQsZSxyKSxuLmNvZXJjZUZvbnQociwi aG92ZXJsYWJlbC5ncm91cHRpdGxlZm9udCIsZS5ob3ZlcmxhYmVsLmZvbnQpfX0seyIuLi8u Li9saWIiOjUwMywiLi9ob3ZlcmxhYmVsX2RlZmF1bHRzIjo0MDQsIi4vaG92ZXJtb2RlX2Rl ZmF1bHRzIjo0MDUsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjQwN31dLDQwOTpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4vaG92ZXJs YWJlbF9kZWZhdWx0cyIpLGE9dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1m dW5jdGlvbih0LGUpe2kodCxlLChmdW5jdGlvbihyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUs YSxyLGkpfSkpfX0seyIuLi8uLi9saWIiOjUwMywiLi9ob3ZlcmxhYmVsX2RlZmF1bHRzIjo0 MDQsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjQwN31dLDQxMDpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL2xpYi9yZWdleCIp LmNvdW50ZXIsYT10KCIuLi8uLi9wbG90cy9kb21haW4iKS5hdHRyaWJ1dGVzLG89dCgiLi4v Li4vcGxvdHMvY2FydGVzaWFuL2NvbnN0YW50cyIpLmlkUmVnZXgscz10KCIuLi8uLi9wbG90 X2FwaS9wbG90X3RlbXBsYXRlIiksbD17cm93czp7dmFsVHlwZToiaW50ZWdlciIsbWluOjEs ZWRpdFR5cGU6InBsb3QifSxyb3dvcmRlcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVz OlsidG9wIHRvIGJvdHRvbSIsImJvdHRvbSB0byB0b3AiXSxkZmx0OiJ0b3AgdG8gYm90dG9t IixlZGl0VHlwZToicGxvdCJ9LGNvbHVtbnM6e3ZhbFR5cGU6ImludGVnZXIiLG1pbjoxLGVk aXRUeXBlOiJwbG90In0sc3VicGxvdHM6e3ZhbFR5cGU6ImluZm9fYXJyYXkiLGZyZWVMZW5n dGg6ITAsZGltZW5zaW9uczoyLGl0ZW1zOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6 W2koInh5IikudG9TdHJpbmcoKSwiIl0sZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToicGxv dCJ9LHhheGVzOnt2YWxUeXBlOiJpbmZvX2FycmF5IixmcmVlTGVuZ3RoOiEwLGl0ZW1zOnt2 YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6W28ueC50b1N0cmluZygpLCIiXSxlZGl0VHlw ZToicGxvdCJ9LGVkaXRUeXBlOiJwbG90In0seWF4ZXM6e3ZhbFR5cGU6ImluZm9fYXJyYXki LGZyZWVMZW5ndGg6ITAsaXRlbXM6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbby55 LnRvU3RyaW5nKCksIiJdLGVkaXRUeXBlOiJwbG90In0sZWRpdFR5cGU6InBsb3QifSxwYXR0 ZXJuOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJpbmRlcGVuZGVudCIsImNvdXBs ZWQiXSxkZmx0OiJjb3VwbGVkIixlZGl0VHlwZToicGxvdCJ9LHhnYXA6e3ZhbFR5cGU6Im51 bWJlciIsbWluOjAsbWF4OjEsZWRpdFR5cGU6InBsb3QifSx5Z2FwOnt2YWxUeXBlOiJudW1i ZXIiLG1pbjowLG1heDoxLGVkaXRUeXBlOiJwbG90In0sZG9tYWluOmEoe25hbWU6ImdyaWQi LGVkaXRUeXBlOiJwbG90Iixub0dyaWRDZWxsOiEwfSx7fSkseHNpZGU6e3ZhbFR5cGU6ImVu dW1lcmF0ZWQiLHZhbHVlczpbImJvdHRvbSIsImJvdHRvbSBwbG90IiwidG9wIHBsb3QiLCJ0 b3AiXSxkZmx0OiJib3R0b20gcGxvdCIsZWRpdFR5cGU6InBsb3QifSx5c2lkZTp7dmFsVHlw ZToiZW51bWVyYXRlZCIsdmFsdWVzOlsibGVmdCIsImxlZnQgcGxvdCIsInJpZ2h0IHBsb3Qi LCJyaWdodCJdLGRmbHQ6ImxlZnQgcGxvdCIsZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToi cGxvdCJ9O2Z1bmN0aW9uIGModCxlLHIpe3ZhciBuPWVbcisiYXhlcyJdLGk9T2JqZWN0Lmtl eXMoKHQuX3NwbG9tQXhlc3x8e30pW3JdfHx7fSk7cmV0dXJuIEFycmF5LmlzQXJyYXkobik/ bjppLmxlbmd0aD9pOnZvaWQgMH1mdW5jdGlvbiB1KHQsZSxyLG4saSxhKXt2YXIgbz1lKHQr ImdhcCIscikscz1lKCJkb21haW4uIit0KTtlKHQrInNpZGUiLG4pO2Zvcih2YXIgbD1uZXcg QXJyYXkoaSksYz1zWzBdLHU9KHNbMV0tYykvKGktbyksZj11KigxLW8pLGg9MDtoPGk7aCsr KXt2YXIgcD1jK3UqaDtsW2E/aS0xLWg6aF09W3AscCtmXX1yZXR1cm4gbH1mdW5jdGlvbiBm KHQsZSxyLG4saSl7dmFyIGEsbz1uZXcgQXJyYXkocik7ZnVuY3Rpb24gcyh0LHIpey0xIT09 ZS5pbmRleE9mKHIpJiZ2b2lkIDA9PT1uW3JdPyhvW3RdPXIsbltyXT10KTpvW3RdPSIifWlm KEFycmF5LmlzQXJyYXkodCkpZm9yKGE9MDthPHI7YSsrKXMoYSx0W2FdKTtlbHNlIGZvcihz KDAsaSksYT0xO2E8cjthKyspcyhhLGkrKGErMSkpO3JldHVybiBvfWUuZXhwb3J0cz17bW9k dWxlVHlwZToiY29tcG9uZW50IixuYW1lOiJncmlkIixzY2hlbWE6e2xheW91dDp7Z3JpZDps fX0sbGF5b3V0QXR0cmlidXRlczpsLHNpemVEZWZhdWx0czpmdW5jdGlvbih0LGUpe3ZhciBy PXQuZ3JpZHx8e30saT1jKGUsciwieCIpLGE9YyhlLHIsInkiKTtpZih0LmdyaWR8fGl8fGEp e3ZhciBvLGYsaD1BcnJheS5pc0FycmF5KHIuc3VicGxvdHMpJiZBcnJheS5pc0FycmF5KHIu c3VicGxvdHNbMF0pLHA9QXJyYXkuaXNBcnJheShpKSxkPUFycmF5LmlzQXJyYXkoYSksbT1w JiZpIT09ci54YXhlcyYmZCYmYSE9PXIueWF4ZXM7aD8obz1yLnN1YnBsb3RzLmxlbmd0aCxm PXIuc3VicGxvdHNbMF0ubGVuZ3RoKTooZCYmKG89YS5sZW5ndGgpLHAmJihmPWkubGVuZ3Ro KSk7dmFyIGc9cy5uZXdDb250YWluZXIoZSwiZ3JpZCIpLHY9aygicm93cyIsbykseT1rKCJj b2x1bW5zIixmKTtpZih2Knk+MSl7aWYoIWgmJiFwJiYhZCkiaW5kZXBlbmRlbnQiPT09aygi cGF0dGVybiIpJiYoaD0hMCk7Zy5faGFzU3VicGxvdEdyaWQ9aDt2YXIgeCxiLF89InRvcCB0 byBib3R0b20iPT09aygicm93b3JkZXIiKSx3PWg/LjI6LjEsVD1oPy4zOi4xO20mJmUuX3Nw bG9tR3JpZERmbHQmJih4PWUuX3NwbG9tR3JpZERmbHQueHNpZGUsYj1lLl9zcGxvbUdyaWRE Zmx0LnlzaWRlKSxnLl9kb21haW5zPXt4OnUoIngiLGssdyx4LHkpLHk6dSgieSIsayxULGIs dixfKX19ZWxzZSBkZWxldGUgZS5ncmlkfWZ1bmN0aW9uIGsodCxlKXtyZXR1cm4gbi5jb2Vy Y2UocixnLGwsdCxlKX19LGNvbnRlbnREZWZhdWx0czpmdW5jdGlvbih0LGUpe3ZhciByPWUu Z3JpZDtpZihyJiZyLl9kb21haW5zKXt2YXIgbixpLGEsbyxzLGwsdSxoPXQuZ3JpZHx8e30s cD1lLl9zdWJwbG90cyxkPXIuX2hhc1N1YnBsb3RHcmlkLG09ci5yb3dzLGc9ci5jb2x1bW5z LHY9ImluZGVwZW5kZW50Ij09PXIucGF0dGVybix5PXIuX2F4aXNNYXA9e307aWYoZCl7dmFy IHg9aC5zdWJwbG90c3x8W107bD1yLnN1YnBsb3RzPW5ldyBBcnJheShtKTt2YXIgYj0xO2Zv cihuPTA7bjxtO24rKyl7dmFyIF89bFtuXT1uZXcgQXJyYXkoZyksdz14W25dfHxbXTtmb3Io aT0wO2k8ZztpKyspaWYodj8ocz0xPT09Yj8ieHkiOiJ4IitiKyJ5IitiLGIrKyk6cz13W2ld LF9baV09IiIsLTEhPT1wLmNhcnRlc2lhbi5pbmRleE9mKHMpKXtpZih1PXMuaW5kZXhPZigi eSIpLGE9cy5zbGljZSgwLHUpLG89cy5zbGljZSh1KSx2b2lkIDAhPT15W2FdJiZ5W2FdIT09 aXx8dm9pZCAwIT09eVtvXSYmeVtvXSE9PW4pY29udGludWU7X1tpXT1zLHlbYV09aSx5W29d PW59fX1lbHNle3ZhciBUPWMoZSxoLCJ4Iiksaz1jKGUsaCwieSIpO3IueGF4ZXM9ZihULHAu eGF4aXMsZyx5LCJ4Iiksci55YXhlcz1mKGsscC55YXhpcyxtLHksInkiKX12YXIgQT1yLl9h bmNob3JzPXt9LE09InRvcCB0byBib3R0b20iPT09ci5yb3dvcmRlcjtmb3IodmFyIFMgaW4g eSl7dmFyIEUsTCxDLFA9Uy5jaGFyQXQoMCksST1yW1ArInNpZGUiXTtpZihJLmxlbmd0aDw4 KUFbU109ImZyZWUiO2Vsc2UgaWYoIngiPT09UCl7aWYoInQiPT09SS5jaGFyQXQoMCk9PT1N PyhFPTAsTD0xLEM9bSk6KEU9bS0xLEw9LTEsQz0tMSksZCl7dmFyIE89eVtTXTtmb3Iobj1F O24hPT1DO24rPUwpaWYoKHM9bFtuXVtPXSkmJih1PXMuaW5kZXhPZigieSIpLHMuc2xpY2Uo MCx1KT09PVMpKXtBW1NdPXMuc2xpY2UodSk7YnJlYWt9fWVsc2UgZm9yKG49RTtuIT09Qztu Kz1MKWlmKG89ci55YXhlc1tuXSwtMSE9PXAuY2FydGVzaWFuLmluZGV4T2YoUytvKSl7QVtT XT1vO2JyZWFrfX1lbHNlIGlmKCJsIj09PUkuY2hhckF0KDApPyhFPTAsTD0xLEM9Zyk6KEU9 Zy0xLEw9LTEsQz0tMSksZCl7dmFyIHo9eVtTXTtmb3Iobj1FO24hPT1DO24rPUwpaWYoKHM9 bFt6XVtuXSkmJih1PXMuaW5kZXhPZigieSIpLHMuc2xpY2UodSk9PT1TKSl7QVtTXT1zLnNs aWNlKDAsdSk7YnJlYWt9fWVsc2UgZm9yKG49RTtuIT09QztuKz1MKWlmKGE9ci54YXhlc1tu XSwtMSE9PXAuY2FydGVzaWFuLmluZGV4T2YoYStTKSl7QVtTXT1hO2JyZWFrfX19fX19LHsi Li4vLi4vbGliIjo1MDMsIi4uLy4uL2xpYi9yZWdleCI6NTIwLCIuLi8uLi9wbG90X2FwaS9w bG90X3RlbXBsYXRlIjo1NDMsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9jb25zdGFudHMiOjU2 MSwiLi4vLi4vcGxvdHMvZG9tYWluIjo1ODR9XSw0MTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2NvbnN0YW50cyIpLGk9 dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLnRlbXBsYXRlZEFycmF5O3QoIi4u Ly4uL2NvbnN0YW50cy9heGlzX3BsYWNlYWJsZV9vYmplY3RzIik7ZS5leHBvcnRzPWkoImlt YWdlIix7dmlzaWJsZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToiYXJy YXlkcmF3In0sc291cmNlOnt2YWxUeXBlOiJzdHJpbmciLGVkaXRUeXBlOiJhcnJheWRyYXci fSxsYXllcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiYmVsb3ciLCJhYm92ZSJd LGRmbHQ6ImFib3ZlIixlZGl0VHlwZToiYXJyYXlkcmF3In0sc2l6ZXg6e3ZhbFR5cGU6Im51 bWJlciIsZGZsdDowLGVkaXRUeXBlOiJhcnJheWRyYXcifSxzaXpleTp7dmFsVHlwZToibnVt YmVyIixkZmx0OjAsZWRpdFR5cGU6ImFycmF5ZHJhdyJ9LHNpemluZzp7dmFsVHlwZToiZW51 bWVyYXRlZCIsdmFsdWVzOlsiZmlsbCIsImNvbnRhaW4iLCJzdHJldGNoIl0sZGZsdDoiY29u dGFpbiIsZWRpdFR5cGU6ImFycmF5ZHJhdyJ9LG9wYWNpdHk6e3ZhbFR5cGU6Im51bWJlciIs bWluOjAsbWF4OjEsZGZsdDoxLGVkaXRUeXBlOiJhcnJheWRyYXcifSx4Ont2YWxUeXBlOiJh bnkiLGRmbHQ6MCxlZGl0VHlwZToiYXJyYXlkcmF3In0seTp7dmFsVHlwZToiYW55IixkZmx0 OjAsZWRpdFR5cGU6ImFycmF5ZHJhdyJ9LHhhbmNob3I6e3ZhbFR5cGU6ImVudW1lcmF0ZWQi LHZhbHVlczpbImxlZnQiLCJjZW50ZXIiLCJyaWdodCJdLGRmbHQ6ImxlZnQiLGVkaXRUeXBl OiJhcnJheWRyYXcifSx5YW5jaG9yOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0 b3AiLCJtaWRkbGUiLCJib3R0b20iXSxkZmx0OiJ0b3AiLGVkaXRUeXBlOiJhcnJheWRyYXci fSx4cmVmOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJwYXBlciIsbi5pZFJlZ2V4 LngudG9TdHJpbmcoKV0sZGZsdDoicGFwZXIiLGVkaXRUeXBlOiJhcnJheWRyYXcifSx5cmVm Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJwYXBlciIsbi5pZFJlZ2V4LnkudG9T dHJpbmcoKV0sZGZsdDoicGFwZXIiLGVkaXRUeXBlOiJhcnJheWRyYXcifSxlZGl0VHlwZToi YXJyYXlkcmF3In0pfSx7Ii4uLy4uL2NvbnN0YW50cy9heGlzX3BsYWNlYWJsZV9vYmplY3Rz Ijo0NzIsIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjU0MywiLi4vLi4vcGxvdHMv Y2FydGVzaWFuL2NvbnN0YW50cyI6NTYxfV0sNDEyOltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksaT10KCIuLi8uLi9saWIvdG9fbG9n X3JhbmdlIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGEpe2U9ZXx8e307dmFyIG89Imxv ZyI9PT1yJiYibGluZWFyIj09PWUudHlwZSxzPSJsaW5lYXIiPT09ciYmImxvZyI9PT1lLnR5 cGU7aWYob3x8cylmb3IodmFyIGwsYyx1PXQuX2Z1bGxMYXlvdXQuaW1hZ2VzLGY9ZS5faWQu Y2hhckF0KDApLGg9MDtoPHUubGVuZ3RoO2grKylpZihjPSJpbWFnZXNbIitoKyJdLiIsKGw9 dVtoXSlbZisicmVmIl09PT1lLl9pZCl7dmFyIHA9bFtmXSxkPWxbInNpemUiK2ZdLG09bnVs bCxnPW51bGw7aWYobyl7bT1pKHAsZS5yYW5nZSk7dmFyIHY9ZC9NYXRoLnBvdygxMCxtKS8y O2c9MipNYXRoLmxvZyh2K01hdGguc3FydCgxK3YqdikpL01hdGguTE4xMH1lbHNlIGc9KG09 TWF0aC5wb3coMTAscCkpKihNYXRoLnBvdygxMCxkLzIpLU1hdGgucG93KDEwLC1kLzIpKTtu KG0pP24oZyl8fChnPW51bGwpOihtPW51bGwsZz1udWxsKSxhKGMrZixtKSxhKGMrInNpemUi K2YsZyl9fX0seyIuLi8uLi9saWIvdG9fbG9nX3JhbmdlIjo1MzEsImZhc3QtaXNudW1lcmlj IjoxOTB9XSw0MTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4v Li4vbGliIiksaT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGE9dCgiLi4vLi4v cGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIiksbz10KCIuL2F0dHJpYnV0ZXMiKTtm dW5jdGlvbiBzKHQsZSxyKXtmdW5jdGlvbiBhKHIsaSl7cmV0dXJuIG4uY29lcmNlKHQsZSxv LHIsaSl9dmFyIHM9YSgic291cmNlIik7aWYoIWEoInZpc2libGUiLCEhcykpcmV0dXJuIGU7 YSgibGF5ZXIiKSxhKCJ4YW5jaG9yIiksYSgieWFuY2hvciIpLGEoInNpemV4IiksYSgic2l6 ZXkiKSxhKCJzaXppbmciKSxhKCJvcGFjaXR5Iik7Zm9yKHZhciBsPXtfZnVsbExheW91dDpy fSxjPVsieCIsInkiXSx1PTA7dTwyO3UrKyl7dmFyIGY9Y1t1XSxoPWkuY29lcmNlUmVmKHQs ZSxsLGYsInBhcGVyIix2b2lkIDApO2lmKCJwYXBlciIhPT1oKWkuZ2V0RnJvbUlkKGwsaCku X2ltZ0luZGljZXMucHVzaChlLl9pbmRleCk7aS5jb2VyY2VQb3NpdGlvbihlLGwsYSxoLGYs MCl9cmV0dXJuIGV9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7YSh0LGUse25hbWU6ImltYWdl cyIsaGFuZGxlSXRlbURlZmF1bHRzOnN9KX19LHsiLi4vLi4vbGliIjo1MDMsIi4uLy4uL3Bs b3RzL2FycmF5X2NvbnRhaW5lcl9kZWZhdWx0cyI6NTQ5LCIuLi8uLi9wbG90cy9jYXJ0ZXNp YW4vYXhlcyI6NTU0LCIuL2F0dHJpYnV0ZXMiOjQxMX1dLDQxNDpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJAcGxvdGx5L2QzIiksaT10KCIuLi9kcmF3aW5nIiks YT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLG89dCgiLi4vLi4vcGxvdHMvY2Fy dGVzaWFuL2F4aXNfaWRzIikscz10KCIuLi8uLi9jb25zdGFudHMveG1sbnNfbmFtZXNwYWNl cyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZSxyLGw9dC5fZnVsbExheW91dCxjPVtd LHU9e30sZj1bXTtmb3Iocj0wO3I8bC5pbWFnZXMubGVuZ3RoO3IrKyl7dmFyIGg9bC5pbWFn ZXNbcl07aWYoaC52aXNpYmxlKWlmKCJiZWxvdyI9PT1oLmxheWVyJiYicGFwZXIiIT09aC54 cmVmJiYicGFwZXIiIT09aC55cmVmKXtlPW8ucmVmMmlkKGgueHJlZikrby5yZWYyaWQoaC55 cmVmKTt2YXIgcD1sLl9wbG90c1tlXTtpZighcCl7Zi5wdXNoKGgpO2NvbnRpbnVlfXAubWFp bnBsb3QmJihlPXAubWFpbnBsb3QuaWQpLHVbZV18fCh1W2VdPVtdKSx1W2VdLnB1c2goaCl9 ZWxzZSJhYm92ZSI9PT1oLmxheWVyP2MucHVzaChoKTpmLnB1c2goaCl9dmFyIGQ9e2xlZnQ6 e3NpemluZzoieE1pbiIsb2Zmc2V0OjB9LGNlbnRlcjp7c2l6aW5nOiJ4TWlkIixvZmZzZXQ6 LS41fSxyaWdodDp7c2l6aW5nOiJ4TWF4IixvZmZzZXQ6LTF9fSxtPXt0b3A6e3NpemluZzoi WU1pbiIsb2Zmc2V0OjB9LG1pZGRsZTp7c2l6aW5nOiJZTWlkIixvZmZzZXQ6LS41fSxib3R0 b206e3NpemluZzoiWU1heCIsb2Zmc2V0Oi0xfX07ZnVuY3Rpb24gZyhlKXt2YXIgcj1uLnNl bGVjdCh0aGlzKTtpZih0aGlzLl9pbWdTcmMhPT1lLnNvdXJjZSlpZihyLmF0dHIoInhtbG5z IixzLnN2ZyksZS5zb3VyY2UmJiJkYXRhOiI9PT1lLnNvdXJjZS5zbGljZSgwLDUpKXIuYXR0 cigieGxpbms6aHJlZiIsZS5zb3VyY2UpLHRoaXMuX2ltZ1NyYz1lLnNvdXJjZTtlbHNle3Zh ciBpPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHQpe3ZhciBuPW5ldyBJbWFnZTtmdW5jdGlvbiBp KCl7ci5yZW1vdmUoKSx0KCl9dGhpcy5pbWc9bixuLnNldEF0dHJpYnV0ZSgiY3Jvc3NPcmln aW4iLCJhbm9ueW1vdXMiKSxuLm9uZXJyb3I9aSxuLm9ubG9hZD1mdW5jdGlvbigpe3ZhciBl PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO2Uud2lkdGg9dGhpcy53aWR0aCxl LmhlaWdodD10aGlzLmhlaWdodCxlLmdldENvbnRleHQoIjJkIix7d2lsbFJlYWRGcmVxdWVu dGx5OiEwfSkuZHJhd0ltYWdlKHRoaXMsMCwwKTt2YXIgbj1lLnRvRGF0YVVSTCgiaW1hZ2Uv cG5nIik7ci5hdHRyKCJ4bGluazpocmVmIixuKSx0KCl9LHIub24oImVycm9yIixpKSxuLnNy Yz1lLnNvdXJjZSx0aGlzLl9pbWdTcmM9ZS5zb3VyY2V9LmJpbmQodGhpcykpO3QuX3Byb21p c2VzLnB1c2goaSl9fWZ1bmN0aW9uIHYoZSl7dmFyIHIsbyxzPW4uc2VsZWN0KHRoaXMpLGM9 YS5nZXRGcm9tSWQodCxlLnhyZWYpLHU9YS5nZXRGcm9tSWQodCxlLnlyZWYpLGY9ImRvbWFp biI9PT1hLmdldFJlZlR5cGUoZS54cmVmKSxoPSJkb21haW4iPT09YS5nZXRSZWZUeXBlKGUu eXJlZikscD1sLl9zaXplO3I9dm9pZCAwIT09Yz8ic3RyaW5nIj09dHlwZW9mIGUueHJlZiYm Zj9jLl9sZW5ndGgqZS5zaXpleDpNYXRoLmFicyhjLmwycChlLnNpemV4KS1jLmwycCgwKSk6 ZS5zaXpleCpwLncsbz12b2lkIDAhPT11PyJzdHJpbmciPT10eXBlb2YgZS55cmVmJiZoP3Uu X2xlbmd0aCplLnNpemV5Ok1hdGguYWJzKHUubDJwKGUuc2l6ZXkpLXUubDJwKDApKTplLnNp emV5KnAuaDt2YXIgZyx2LHk9cipkW2UueGFuY2hvcl0ub2Zmc2V0LHg9byptW2UueWFuY2hv cl0ub2Zmc2V0LGI9ZFtlLnhhbmNob3JdLnNpemluZyttW2UueWFuY2hvcl0uc2l6aW5nO3N3 aXRjaChnPXZvaWQgMCE9PWM/InN0cmluZyI9PXR5cGVvZiBlLnhyZWYmJmY/Yy5fbGVuZ3Ro KmUueCtjLl9vZmZzZXQ6Yy5yMnAoZS54KStjLl9vZmZzZXQ6ZS54KnAudytwLmwsZys9eSx2 PXZvaWQgMCE9PXU/InN0cmluZyI9PXR5cGVvZiBlLnlyZWYmJmg/dS5fbGVuZ3RoKigxLWUu eSkrdS5fb2Zmc2V0OnUucjJwKGUueSkrdS5fb2Zmc2V0OnAuaC1lLnkqcC5oK3AudCx2Kz14 LGUuc2l6aW5nKXtjYXNlImZpbGwiOmIrPSIgc2xpY2UiO2JyZWFrO2Nhc2Uic3RyZXRjaCI6 Yj0ibm9uZSJ9cy5hdHRyKHt4OmcseTp2LHdpZHRoOnIsaGVpZ2h0Om8scHJlc2VydmVBc3Bl Y3RSYXRpbzpiLG9wYWNpdHk6ZS5vcGFjaXR5fSk7dmFyIF89KGMmJiJkb21haW4iIT09YS5n ZXRSZWZUeXBlKGUueHJlZik/Yy5faWQ6IiIpKyh1JiYiZG9tYWluIiE9PWEuZ2V0UmVmVHlw ZShlLnlyZWYpP3UuX2lkOiIiKTtpLnNldENsaXBVcmwocyxfPyJjbGlwIitsLl91aWQrXzpu dWxsLHQpfXZhciB5PWwuX2ltYWdlTG93ZXJMYXllci5zZWxlY3RBbGwoImltYWdlIikuZGF0 YShmKSx4PWwuX2ltYWdlVXBwZXJMYXllci5zZWxlY3RBbGwoImltYWdlIikuZGF0YShjKTt5 LmVudGVyKCkuYXBwZW5kKCJpbWFnZSIpLHguZW50ZXIoKS5hcHBlbmQoImltYWdlIikseS5l eGl0KCkucmVtb3ZlKCkseC5leGl0KCkucmVtb3ZlKCkseS5lYWNoKChmdW5jdGlvbih0KXtn LmJpbmQodGhpcykodCksdi5iaW5kKHRoaXMpKHQpfSkpLHguZWFjaCgoZnVuY3Rpb24odCl7 Zy5iaW5kKHRoaXMpKHQpLHYuYmluZCh0aGlzKSh0KX0pKTt2YXIgYj1PYmplY3Qua2V5cyhs Ll9wbG90cyk7Zm9yKHI9MDtyPGIubGVuZ3RoO3IrKyl7ZT1iW3JdO3ZhciBfPWwuX3Bsb3Rz W2VdO2lmKF8uaW1hZ2VsYXllcil7dmFyIHc9Xy5pbWFnZWxheWVyLnNlbGVjdEFsbCgiaW1h Z2UiKS5kYXRhKHVbZV18fFtdKTt3LmVudGVyKCkuYXBwZW5kKCJpbWFnZSIpLHcuZXhpdCgp LnJlbW92ZSgpLHcuZWFjaCgoZnVuY3Rpb24odCl7Zy5iaW5kKHRoaXMpKHQpLHYuYmluZCh0 aGlzKSh0KX0pKX19fX0seyIuLi8uLi9jb25zdGFudHMveG1sbnNfbmFtZXNwYWNlcyI6NDgw LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NTU0LCIuLi8uLi9wbG90cy9jYXJ0ZXNp YW4vYXhpc19pZHMiOjU1OCwiLi4vZHJhd2luZyI6Mzg4LCJAcGxvdGx5L2QzIjo1OH1dLDQx NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e21vZHVsZVR5cGU6 ImNvbXBvbmVudCIsbmFtZToiaW1hZ2VzIixsYXlvdXRBdHRyaWJ1dGVzOnQoIi4vYXR0cmli dXRlcyIpLHN1cHBseUxheW91dERlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxpbmNsdWRlQmFz ZVBsb3Q6dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2luY2x1ZGVfY29tcG9uZW50cyIpKCJp bWFnZXMiKSxkcmF3OnQoIi4vZHJhdyIpLGNvbnZlcnRDb29yZHM6dCgiLi9jb252ZXJ0X2Nv b3JkcyIpfX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vaW5jbHVkZV9jb21wb25lbnRzIjo1 NjcsIi4vYXR0cmlidXRlcyI6NDExLCIuL2NvbnZlcnRfY29vcmRzIjo0MTIsIi4vZGVmYXVs dHMiOjQxMywiLi9kcmF3Ijo0MTR9XSw0MTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIiksaT10KCIuLi9jb2xv ci9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPXtiZ2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRp dFR5cGU6ImxlZ2VuZCJ9LGJvcmRlcmNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDppLmRl ZmF1bHRMaW5lLGVkaXRUeXBlOiJsZWdlbmQifSxib3JkZXJ3aWR0aDp7dmFsVHlwZToibnVt YmVyIixtaW46MCxkZmx0OjAsZWRpdFR5cGU6ImxlZ2VuZCJ9LGZvbnQ6bih7ZWRpdFR5cGU6 ImxlZ2VuZCJ9KSxncm91cHRpdGxlZm9udDpuKHtlZGl0VHlwZToibGVnZW5kIn0pLG9yaWVu dGF0aW9uOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ2IiwiaCJdLGRmbHQ6InYi LGVkaXRUeXBlOiJsZWdlbmQifSx0cmFjZW9yZGVyOnt2YWxUeXBlOiJmbGFnbGlzdCIsZmxh Z3M6WyJyZXZlcnNlZCIsImdyb3VwZWQiXSxleHRyYXM6WyJub3JtYWwiXSxlZGl0VHlwZToi bGVnZW5kIn0sdHJhY2Vncm91cGdhcDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjEw LGVkaXRUeXBlOiJsZWdlbmQifSxpdGVtc2l6aW5nOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2 YWx1ZXM6WyJ0cmFjZSIsImNvbnN0YW50Il0sZGZsdDoidHJhY2UiLGVkaXRUeXBlOiJsZWdl bmQifSxpdGVtd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjMwLGRmbHQ6MzAsZWRpdFR5 cGU6ImxlZ2VuZCJ9LGl0ZW1jbGljazp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsi dG9nZ2xlIiwidG9nZ2xlb3RoZXJzIiwhMV0sZGZsdDoidG9nZ2xlIixlZGl0VHlwZToibGVn ZW5kIn0saXRlbWRvdWJsZWNsaWNrOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0 b2dnbGUiLCJ0b2dnbGVvdGhlcnMiLCExXSxkZmx0OiJ0b2dnbGVvdGhlcnMiLGVkaXRUeXBl OiJsZWdlbmQifSxncm91cGNsaWNrOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0 b2dnbGVpdGVtIiwidG9nZ2xlZ3JvdXAiXSxkZmx0OiJ0b2dnbGVncm91cCIsZWRpdFR5cGU6 ImxlZ2VuZCJ9LHg6e3ZhbFR5cGU6Im51bWJlciIsbWluOi0yLG1heDozLGVkaXRUeXBlOiJs ZWdlbmQifSx4YW5jaG9yOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhdXRvIiwi bGVmdCIsImNlbnRlciIsInJpZ2h0Il0sZGZsdDoibGVmdCIsZWRpdFR5cGU6ImxlZ2VuZCJ9 LHk6e3ZhbFR5cGU6Im51bWJlciIsbWluOi0yLG1heDozLGVkaXRUeXBlOiJsZWdlbmQifSx5 YW5jaG9yOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhdXRvIiwidG9wIiwibWlk ZGxlIiwiYm90dG9tIl0sZWRpdFR5cGU6ImxlZ2VuZCJ9LHVpcmV2aXNpb246e3ZhbFR5cGU6 ImFueSIsZWRpdFR5cGU6Im5vbmUifSx2YWxpZ246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZh bHVlczpbInRvcCIsIm1pZGRsZSIsImJvdHRvbSJdLGRmbHQ6Im1pZGRsZSIsZWRpdFR5cGU6 ImxlZ2VuZCJ9LHRpdGxlOnt0ZXh0Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5 cGU6ImxlZ2VuZCJ9LGZvbnQ6bih7ZWRpdFR5cGU6ImxlZ2VuZCJ9KSxzaWRlOnt2YWxUeXBl OiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0b3AiLCJsZWZ0IiwidG9wIGxlZnQiXSxlZGl0VHlw ZToibGVnZW5kIn0sZWRpdFR5cGU6ImxlZ2VuZCJ9LGVkaXRUeXBlOiJsZWdlbmQifX0seyIu Li8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiOjU4NSwiLi4vY29sb3IvYXR0cmlidXRlcyI6 MzY1fV0sNDE3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17c2Ny b2xsQmFyV2lkdGg6NixzY3JvbGxCYXJNaW5IZWlnaHQ6MjAsc2Nyb2xsQmFyQ29sb3I6IiM4 MDhCQTQiLHNjcm9sbEJhck1hcmdpbjo0LHNjcm9sbEJhckVudGVyQXR0cnM6e3J4OjIwLHJ5 OjMsd2lkdGg6MCxoZWlnaHQ6MH0sdGl0bGVQYWQ6MixpdGVtR2FwOjV9fSx7fV0sNDE4Oltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3JlZ2lzdHJ5Iiks aT10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKSxv PXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxzPXQoIi4vYXR0cmlidXRlcyIpLGw9dCgi Li4vLi4vcGxvdHMvbGF5b3V0X2F0dHJpYnV0ZXMiKSxjPXQoIi4vaGVscGVycyIpO2UuZXhw b3J0cz1mdW5jdGlvbih0LGUscil7dmFyIHUsZj10LmxlZ2VuZHx8e30saD1hLm5ld0NvbnRh aW5lcihlLCJsZWdlbmQiKTtmdW5jdGlvbiBwKHQsZSl7cmV0dXJuIGkuY29lcmNlKGYsaCxz LHQsZSl9Zm9yKHZhciBkPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dS5faW5wdXQsbj11O3JldHVy biBpLmNvZXJjZShyLG4sbyx0LGUpfSxtPWUuZm9udHx8e30sZz1pLmNvZXJjZUZvbnQocCwi Z3JvdXB0aXRsZWZvbnQiLGkuZXh0ZW5kRmxhdCh7fSxtLHtzaXplOk1hdGgucm91bmQoMS4x Km0uc2l6ZSl9KSksdj0wLHk9ITEseD0ibm9ybWFsIixiPTA7YjxyLmxlbmd0aDtiKyspKHU9 cltiXSkudmlzaWJsZSYmKCh1LnNob3dsZWdlbmR8fHUuX2RmbHRTaG93TGVnZW5kJiYhKHUu X21vZHVsZSYmdS5fbW9kdWxlLmF0dHJpYnV0ZXMmJnUuX21vZHVsZS5hdHRyaWJ1dGVzLnNo b3dsZWdlbmQmJiExPT09dS5fbW9kdWxlLmF0dHJpYnV0ZXMuc2hvd2xlZ2VuZC5kZmx0KSkm Jih2KyssdS5zaG93bGVnZW5kJiYoeT0hMCwobi50cmFjZUlzKHUsInBpZS1saWtlIil8fCEw PT09dS5faW5wdXQuc2hvd2xlZ2VuZCkmJnYrKyksaS5jb2VyY2VGb250KGQsImxlZ2VuZGdy b3VwdGl0bGUuZm9udCIsZykpLChuLnRyYWNlSXModSwiYmFyIikmJiJzdGFjayI9PT1lLmJh cm1vZGV8fC0xIT09WyJ0b25leHR4IiwidG9uZXh0eSJdLmluZGV4T2YodS5maWxsKSkmJih4 PWMuaXNHcm91cGVkKHt0cmFjZW9yZGVyOnh9KT8iZ3JvdXBlZCtyZXZlcnNlZCI6InJldmVy c2VkIiksdm9pZCAwIT09dS5sZWdlbmRncm91cCYmIiIhPT11LmxlZ2VuZGdyb3VwJiYoeD1j LmlzUmV2ZXJzZWQoe3RyYWNlb3JkZXI6eH0pPyJyZXZlcnNlZCtncm91cGVkIjoiZ3JvdXBl ZCIpKTt2YXIgXz1pLmNvZXJjZSh0LGUsbCwic2hvd2xlZ2VuZCIseSYmdj4xKTtpZighMT09 PV8mJihlLmxlZ2VuZD12b2lkIDApLCghMSE9PV98fGYudWlyZXZpc2lvbikmJihwKCJ1aXJl dmlzaW9uIixlLnVpcmV2aXNpb24pLCExIT09Xykpe3AoImJnY29sb3IiLGUucGFwZXJfYmdj b2xvcikscCgiYm9yZGVyY29sb3IiKSxwKCJib3JkZXJ3aWR0aCIpO3ZhciB3LFQsayxBPWku Y29lcmNlRm9udChwLCJmb250IixlLmZvbnQpLE09ImgiPT09cCgib3JpZW50YXRpb24iKTtp ZihNPyh3PTAsbi5nZXRDb21wb25lbnRNZXRob2QoInJhbmdlc2xpZGVyIiwiaXNWaXNpYmxl IikodC54YXhpcyk/KFQ9MS4xLGs9ImJvdHRvbSIpOihUPS0uMSxrPSJ0b3AiKSk6KHc9MS4w MixUPTEsaz0iYXV0byIpLHAoInRyYWNlb3JkZXIiLHgpLGMuaXNHcm91cGVkKGUubGVnZW5k KSYmcCgidHJhY2Vncm91cGdhcCIpLHAoIml0ZW1zaXppbmciKSxwKCJpdGVtd2lkdGgiKSxw KCJpdGVtY2xpY2siKSxwKCJpdGVtZG91YmxlY2xpY2siKSxwKCJncm91cGNsaWNrIikscCgi eCIsdykscCgieGFuY2hvciIpLHAoInkiLFQpLHAoInlhbmNob3IiLGspLHAoInZhbGlnbiIp LGkubm9uZU9yQWxsKGYsaCxbIngiLCJ5Il0pLHAoInRpdGxlLnRleHQiKSl7cCgidGl0bGUu c2lkZSIsTT8ibGVmdCI6InRvcCIpO3ZhciBTPWkuZXh0ZW5kRmxhdCh7fSxBLHtzaXplOmku YmlnRm9udChBLnNpemUpfSk7aS5jb2VyY2VGb250KHAsInRpdGxlLmZvbnQiLFMpfX19fSx7 Ii4uLy4uL2xpYiI6NTAzLCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIjo1NDMsIi4u Ly4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjU1MCwiLi4vLi4vcGxvdHMvbGF5b3V0X2F0dHJpYnV0 ZXMiOjYxMCwiLi4vLi4vcmVnaXN0cnkiOjYzOCwiLi9hdHRyaWJ1dGVzIjo0MTYsIi4vaGVs cGVycyI6NDIyfV0sNDE5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo IkBwbG90bHkvZDMiKSxpPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vcGxvdHMvcGxvdHMi KSxvPXQoIi4uLy4uL3JlZ2lzdHJ5Iikscz10KCIuLi8uLi9saWIvZXZlbnRzIiksbD10KCIu Li9kcmFnZWxlbWVudCIpLGM9dCgiLi4vZHJhd2luZyIpLHU9dCgiLi4vY29sb3IiKSxmPXQo Ii4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyIpLGg9dCgiLi9oYW5kbGVfY2xpY2siKSxwPXQo Ii4vY29uc3RhbnRzIiksZD10KCIuLi8uLi9jb25zdGFudHMvYWxpZ25tZW50IiksbT1kLkxJ TkVfU1BBQ0lORyxnPWQuRlJPTV9UTCx2PWQuRlJPTV9CUix5PXQoIi4vZ2V0X2xlZ2VuZF9k YXRhIikseD10KCIuL3N0eWxlIiksYj10KCIuL2hlbHBlcnMiKTtmdW5jdGlvbiBfKHQsZSxy LG4saSl7dmFyIGE9ci5kYXRhKClbMF1bMF0udHJhY2UsbD17ZXZlbnQ6aSxub2RlOnIubm9k ZSgpLGN1cnZlTnVtYmVyOmEuaW5kZXgsZXhwYW5kZWRJbmRleDphLl9leHBhbmRlZEluZGV4 LGRhdGE6dC5kYXRhLGxheW91dDp0LmxheW91dCxmcmFtZXM6dC5fdHJhbnNpdGlvbkRhdGEu X2ZyYW1lcyxjb25maWc6dC5fY29udGV4dCxmdWxsRGF0YTp0Ll9mdWxsRGF0YSxmdWxsTGF5 b3V0OnQuX2Z1bGxMYXlvdXR9O2lmKGEuX2dyb3VwJiYobC5ncm91cD1hLl9ncm91cCksby50 cmFjZUlzKGEsInBpZS1saWtlIikmJihsLmxhYmVsPXIuZGF0dW0oKVswXS5sYWJlbCksITEh PT1zLnRyaWdnZXJIYW5kbGVyKHQsInBsb3RseV9sZWdlbmRjbGljayIsbCkpaWYoMT09PW4p ZS5fY2xpY2tUaW1lb3V0PXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5fZnVsbExheW91dCYm aChyLHQsbil9KSx0Ll9jb250ZXh0LmRvdWJsZUNsaWNrRGVsYXkpO2Vsc2UgaWYoMj09PW4p e2UuX2NsaWNrVGltZW91dCYmY2xlYXJUaW1lb3V0KGUuX2NsaWNrVGltZW91dCksdC5fbGVn ZW5kTW91c2VEb3duVGltZT0wLCExIT09cy50cmlnZ2VySGFuZGxlcih0LCJwbG90bHlfbGVn ZW5kZG91YmxlY2xpY2siLGwpJiZoKHIsdCxuKX19ZnVuY3Rpb24gdyh0LGUscil7dmFyIG4s YSxzPXQuZGF0YSgpWzBdWzBdLGw9cy50cmFjZSx1PW8udHJhY2VJcyhsLCJwaWUtbGlrZSIp LGg9IXIuX2luSG92ZXImJmUuX2NvbnRleHQuZWRpdHMubGVnZW5kVGV4dCYmIXUsZD1yLl9t YXhOYW1lTGVuZ3RoO3MuZ3JvdXBUaXRsZT8obj1zLmdyb3VwVGl0bGUudGV4dCxhPXMuZ3Jv dXBUaXRsZS5mb250KTooYT1yLmZvbnQsci5lbnRyaWVzP249cy50ZXh0OihuPXU/cy5sYWJl bDpsLm5hbWUsbC5fbWV0YSYmKG49aS50ZW1wbGF0ZVN0cmluZyhuLGwuX21ldGEpKSkpO3Zh ciBtPWkuZW5zdXJlU2luZ2xlKHQsInRleHQiLCJsZWdlbmR0ZXh0Iik7bS5hdHRyKCJ0ZXh0 LWFuY2hvciIsInN0YXJ0IikuY2FsbChjLmZvbnQsYSkudGV4dChoP1QobixkKTpuKTt2YXIg Zz1yLml0ZW13aWR0aCsyKnAuaXRlbUdhcDtmLnBvc2l0aW9uVGV4dChtLGcsMCksaD9tLmNh bGwoZi5tYWtlRWRpdGFibGUse2dkOmUsdGV4dDpufSkuY2FsbChBLHQsZSxyKS5vbigiZWRp dCIsKGZ1bmN0aW9uKG4pe3RoaXMudGV4dChUKG4sZCkpLmNhbGwoQSx0LGUscik7dmFyIGE9 cy50cmFjZS5fZnVsbElucHV0fHx7fSxjPXt9O2lmKG8uaGFzVHJhbnNmb3JtKGEsImdyb3Vw YnkiKSl7dmFyIHU9by5nZXRUcmFuc2Zvcm1JbmRpY2VzKGEsImdyb3VwYnkiKSxmPXVbdS5s ZW5ndGgtMV0saD1pLmtleWVkQ29udGFpbmVyKGEsInRyYW5zZm9ybXNbIitmKyJdLnN0eWxl cyIsInRhcmdldCIsInZhbHVlLm5hbWUiKTtoLnNldChzLnRyYWNlLl9ncm91cCxuKSxjPWgu Y29uc3RydWN0VXBkYXRlKCl9ZWxzZSBjLm5hbWU9bjtyZXR1cm4gby5jYWxsKCJfZ3VpUmVz dHlsZSIsZSxjLGwuaW5kZXgpfSkpOkEobSx0LGUscil9ZnVuY3Rpb24gVCh0LGUpe3ZhciBy PU1hdGgubWF4KDQsZSk7aWYodCYmdC50cmltKCkubGVuZ3RoPj1yLzIpcmV0dXJuIHQ7Zm9y KHZhciBuPXItKHQ9dHx8IiIpLmxlbmd0aDtuPjA7bi0tKXQrPSIgIjtyZXR1cm4gdH1mdW5j dGlvbiBrKHQsZSl7dmFyIHIsYT1lLl9jb250ZXh0LmRvdWJsZUNsaWNrRGVsYXksbz0xLHM9 aS5lbnN1cmVTaW5nbGUodCwicmVjdCIsImxlZ2VuZHRvZ2dsZSIsKGZ1bmN0aW9uKHQpe2Uu X2NvbnRleHQuc3RhdGljUGxvdHx8dC5zdHlsZSgiY3Vyc29yIiwicG9pbnRlciIpLmF0dHIo InBvaW50ZXItZXZlbnRzIiwiYWxsIiksdC5jYWxsKHUuZmlsbCwicmdiYSgwLDAsMCwwKSIp fSkpO2UuX2NvbnRleHQuc3RhdGljUGxvdHx8KHMub24oIm1vdXNlZG93biIsKGZ1bmN0aW9u KCl7KHI9KG5ldyBEYXRlKS5nZXRUaW1lKCkpLWUuX2xlZ2VuZE1vdXNlRG93blRpbWU8YT9v Kz0xOihvPTEsZS5fbGVnZW5kTW91c2VEb3duVGltZT1yKX0pKSxzLm9uKCJtb3VzZXVwIiwo ZnVuY3Rpb24oKXtpZighZS5fZHJhZ2dlZCYmIWUuX2VkaXRpbmcpe3ZhciByPWUuX2Z1bGxM YXlvdXQubGVnZW5kOyhuZXcgRGF0ZSkuZ2V0VGltZSgpLWUuX2xlZ2VuZE1vdXNlRG93blRp bWU+YSYmKG89TWF0aC5tYXgoby0xLDEpKSxfKGUscix0LG8sbi5ldmVudCl9fSkpKX1mdW5j dGlvbiBBKHQsZSxyLG4saSl7bi5faW5Ib3ZlciYmdC5hdHRyKCJkYXRhLW5vdGV4IiwhMCks Zi5jb252ZXJ0VG9Uc3BhbnModCxyLChmdW5jdGlvbigpeyFmdW5jdGlvbih0LGUscixuKXt2 YXIgaT10LmRhdGEoKVswXVswXTtpZighci5faW5Ib3ZlciYmaSYmIWkudHJhY2Uuc2hvd2xl Z2VuZClyZXR1cm4gdm9pZCB0LnJlbW92ZSgpO3ZhciBhPXQuc2VsZWN0KCJnW2NsYXNzKj1t YXRoLWdyb3VwXSIpLG89YS5ub2RlKCk7cnx8KHI9ZS5fZnVsbExheW91dC5sZWdlbmQpO3Zh ciBzLGw9ci5ib3JkZXJ3aWR0aDtzPTE9PT1uP3IudGl0bGUuZm9udDppLmdyb3VwVGl0bGU/ aS5ncm91cFRpdGxlLmZvbnQ6ci5mb250O3ZhciB1LGgsZD1zLnNpemUqbTtpZihvKXt2YXIg Zz1jLmJCb3gobyk7dT1nLmhlaWdodCxoPWcud2lkdGgsMT09PW4/Yy5zZXRUcmFuc2xhdGUo YSxsLGwrLjc1KnUpOmMuc2V0VHJhbnNsYXRlKGEsMCwuMjUqdSl9ZWxzZXt2YXIgdj10LnNl bGVjdCgxPT09bj8iLmxlZ2VuZHRpdGxldGV4dCI6Ii5sZWdlbmR0ZXh0IikseT1mLmxpbmVD b3VudCh2KSx4PXYubm9kZSgpO2lmKHU9ZCp5LGg9eD9jLmJCb3goeCkud2lkdGg6MCwxPT09 bikibGVmdCI9PT1yLnRpdGxlLnNpZGUmJihoKz0yKnAuaXRlbUdhcCksZi5wb3NpdGlvblRl eHQodixsK3AudGl0bGVQYWQsbCtkKTtlbHNle3ZhciBiPTIqcC5pdGVtR2FwK3IuaXRlbXdp ZHRoO2kuZ3JvdXBUaXRsZSYmKGI9cC5pdGVtR2FwLGgtPXIuaXRlbXdpZHRoKSxmLnBvc2l0 aW9uVGV4dCh2LGIsLWQqKCh5LTEpLzItLjMpKX19MT09PW4/KHIuX3RpdGxlV2lkdGg9aCxy Ll90aXRsZUhlaWdodD11KTooaS5saW5lSGVpZ2h0PWQsaS5oZWlnaHQ9TWF0aC5tYXgodSwx NikrMyxpLndpZHRoPWgpfShlLHIsbixpKX0pKX1mdW5jdGlvbiBNKHQpe3JldHVybiBpLmlz UmlnaHRBbmNob3IodCk/InJpZ2h0IjppLmlzQ2VudGVyQW5jaG9yKHQpPyJjZW50ZXIiOiJs ZWZ0In1mdW5jdGlvbiBTKHQpe3JldHVybiBpLmlzQm90dG9tQW5jaG9yKHQpPyJib3R0b20i OmkuaXNNaWRkbGVBbmNob3IodCk/Im1pZGRsZSI6InRvcCJ9ZS5leHBvcnRzPWZ1bmN0aW9u KHQsZSl7cmV0dXJuIGV8fChlPXQuX2Z1bGxMYXlvdXQubGVnZW5kfHx7fSksZnVuY3Rpb24o dCxlKXt2YXIgcixzLGY9dC5fZnVsbExheW91dCxoPSJsZWdlbmQiK2YuX3VpZCxkPWUuX2lu SG92ZXI7ZD8ocj1lLmxheWVyLGgrPSItaG92ZXIiKTpyPWYuX2luZm9sYXllcjtpZighcily ZXR1cm47dC5fbGVnZW5kTW91c2VEb3duVGltZXx8KHQuX2xlZ2VuZE1vdXNlRG93blRpbWU9 MCk7aWYoZCl7aWYoIWUuZW50cmllcylyZXR1cm47cz15KGUuZW50cmllcyxlKX1lbHNle2lm KCF0LmNhbGNkYXRhKXJldHVybjtzPWYuc2hvd2xlZ2VuZCYmeSh0LmNhbGNkYXRhLGUpfXZh ciBtPWYuaGlkZGVubGFiZWxzfHxbXTtpZighKGR8fGYuc2hvd2xlZ2VuZCYmcy5sZW5ndGgp KXJldHVybiByLnNlbGVjdEFsbCgiLmxlZ2VuZCIpLnJlbW92ZSgpLGYuX3RvcGRlZnMuc2Vs ZWN0KCIjIitoKS5yZW1vdmUoKSxhLmF1dG9NYXJnaW4odCwibGVnZW5kIik7dmFyIFQ9aS5l bnN1cmVTaW5nbGUociwiZyIsImxlZ2VuZCIsKGZ1bmN0aW9uKHQpe2R8fHQuYXR0cigicG9p bnRlci1ldmVudHMiLCJhbGwiKX0pKSxFPWkuZW5zdXJlU2luZ2xlQnlJZChmLl90b3BkZWZz LCJjbGlwUGF0aCIsaCwoZnVuY3Rpb24odCl7dC5hcHBlbmQoInJlY3QiKX0pKSxMPWkuZW5z dXJlU2luZ2xlKFQsInJlY3QiLCJiZyIsKGZ1bmN0aW9uKHQpe3QuYXR0cigic2hhcGUtcmVu ZGVyaW5nIiwiY3Jpc3BFZGdlcyIpfSkpO0wuY2FsbCh1LnN0cm9rZSxlLmJvcmRlcmNvbG9y KS5jYWxsKHUuZmlsbCxlLmJnY29sb3IpLnN0eWxlKCJzdHJva2Utd2lkdGgiLGUuYm9yZGVy d2lkdGgrInB4Iik7dmFyIEM9aS5lbnN1cmVTaW5nbGUoVCwiZyIsInNjcm9sbGJveCIpLFA9 ZS50aXRsZTtpZihlLl90aXRsZVdpZHRoPTAsZS5fdGl0bGVIZWlnaHQ9MCxQLnRleHQpe3Zh ciBJPWkuZW5zdXJlU2luZ2xlKEMsInRleHQiLCJsZWdlbmR0aXRsZXRleHQiKTtJLmF0dHIo InRleHQtYW5jaG9yIiwic3RhcnQiKS5jYWxsKGMuZm9udCxQLmZvbnQpLnRleHQoUC50ZXh0 KSxBKEksQyx0LGUsMSl9ZWxzZSBDLnNlbGVjdEFsbCgiLmxlZ2VuZHRpdGxldGV4dCIpLnJl bW92ZSgpO3ZhciBPPWkuZW5zdXJlU2luZ2xlKFQsInJlY3QiLCJzY3JvbGxiYXIiLChmdW5j dGlvbih0KXt0LmF0dHIocC5zY3JvbGxCYXJFbnRlckF0dHJzKS5jYWxsKHUuZmlsbCxwLnNj cm9sbEJhckNvbG9yKX0pKSx6PUMuc2VsZWN0QWxsKCJnLmdyb3VwcyIpLmRhdGEocyk7ei5l bnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiZ3JvdXBzIiksei5leGl0KCkucmVt b3ZlKCk7dmFyIEQ9ei5zZWxlY3RBbGwoImcudHJhY2VzIikuZGF0YShpLmlkZW50aXR5KTtE LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJ0cmFjZXMiKSxELmV4aXQoKS5y ZW1vdmUoKSxELnN0eWxlKCJvcGFjaXR5IiwoZnVuY3Rpb24odCl7dmFyIGU9dFswXS50cmFj ZTtyZXR1cm4gby50cmFjZUlzKGUsInBpZS1saWtlIik/LTEhPT1tLmluZGV4T2YodFswXS5s YWJlbCk/LjU6MToibGVnZW5kb25seSI9PT1lLnZpc2libGU/LjU6MX0pKS5lYWNoKChmdW5j dGlvbigpe24uc2VsZWN0KHRoaXMpLmNhbGwodyx0LGUpfSkpLmNhbGwoeCx0LGUpLmVhY2go KGZ1bmN0aW9uKCl7ZHx8bi5zZWxlY3QodGhpcykuY2FsbChrLHQpfSkpLGkuc3luY09yQXN5 bmMoW2EucHJldmlvdXNQcm9taXNlcyxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LGUs cixpKXt2YXIgYT10Ll9mdWxsTGF5b3V0O2l8fChpPWEubGVnZW5kKTt2YXIgbz1hLl9zaXpl LHM9Yi5pc1ZlcnRpY2FsKGkpLGw9Yi5pc0dyb3VwZWQoaSksdT1pLmJvcmRlcndpZHRoLGY9 Mip1LGg9cC5pdGVtR2FwLGQ9aS5pdGVtd2lkdGgrMipoLG09MioodStoKSxnPVMoaSksdj1p Lnk8MHx8MD09PWkueSYmInRvcCI9PT1nLHk9aS55PjF8fDE9PT1pLnkmJiJib3R0b20iPT09 Zyx4PWkudHJhY2Vncm91cGdhcDtpLl9tYXhIZWlnaHQ9TWF0aC5tYXgodnx8eT9hLmhlaWdo dC8yOm8uaCwzMCk7dmFyIF89MDtpLl93aWR0aD0wLGkuX2hlaWdodD0wO3ZhciB3PWZ1bmN0 aW9uKHQpe3ZhciBlPTAscj0wLG49dC50aXRsZS5zaWRlO24mJigtMSE9PW4uaW5kZXhPZigi bGVmdCIpJiYoZT10Ll90aXRsZVdpZHRoKSwtMSE9PW4uaW5kZXhPZigidG9wIikmJihyPXQu X3RpdGxlSGVpZ2h0KSk7cmV0dXJuW2Uscl19KGkpO2lmKHMpci5lYWNoKChmdW5jdGlvbih0 KXt2YXIgZT10WzBdLmhlaWdodDtjLnNldFRyYW5zbGF0ZSh0aGlzLHUrd1swXSx1K3dbMV0r aS5faGVpZ2h0K2UvMitoKSxpLl9oZWlnaHQrPWUsaS5fd2lkdGg9TWF0aC5tYXgoaS5fd2lk dGgsdFswXS53aWR0aCl9KSksXz1kK2kuX3dpZHRoLGkuX3dpZHRoKz1oK2QrZixpLl9oZWln aHQrPW0sbCYmKGUuZWFjaCgoZnVuY3Rpb24odCxlKXtjLnNldFRyYW5zbGF0ZSh0aGlzLDAs ZSppLnRyYWNlZ3JvdXBnYXApfSkpLGkuX2hlaWdodCs9KGkuX2xncm91cHNMZW5ndGgtMSkq aS50cmFjZWdyb3VwZ2FwKTtlbHNle3ZhciBUPU0oaSksaz1pLng8MHx8MD09PWkueCYmInJp Z2h0Ij09PVQsQT1pLng+MXx8MT09PWkueCYmImxlZnQiPT09VCxFPXl8fHYsTD1hLndpZHRo LzI7aS5fbWF4V2lkdGg9TWF0aC5tYXgoaz9FJiYibGVmdCI9PT1UP28ubCtvLnc6TDpBP0Um JiJyaWdodCI9PT1UP28ucitvLnc6TDpvLncsMipkKTt2YXIgQz0wLFA9MDtyLmVhY2goKGZ1 bmN0aW9uKHQpe3ZhciBlPXRbMF0ud2lkdGgrZDtDPU1hdGgubWF4KEMsZSksUCs9ZX0pKSxf PW51bGw7dmFyIEk9MDtpZihsKXt2YXIgTz0wLHo9MCxEPTA7ZS5lYWNoKChmdW5jdGlvbigp e3ZhciB0PTAsZT0wO24uc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgiZy50cmFjZXMiKS5lYWNo KChmdW5jdGlvbihyKXt2YXIgbj1yWzBdLndpZHRoLGk9clswXS5oZWlnaHQ7Yy5zZXRUcmFu c2xhdGUodGhpcyx3WzBdLHdbMV0rdStoK2kvMitlKSxlKz1pLHQ9TWF0aC5tYXgodCxkK24p fSkpO3ZhciByPXQraDt6PjAmJnIrdSt6PmkuX21heFdpZHRoPyhJPU1hdGgubWF4KEkseiks ej0wLEQrPU8reCxPPWUpOk89TWF0aC5tYXgoTyxlKSxjLnNldFRyYW5zbGF0ZSh0aGlzLHos RCkseis9cn0pKSxpLl93aWR0aD1NYXRoLm1heChJLHopK3UsaS5faGVpZ2h0PUQrTyttfWVs c2V7dmFyIFI9ci5zaXplKCksRj1QK2YrKFItMSkqaDxpLl9tYXhXaWR0aCxCPTAsTj0wLGo9 MCxVPTA7ci5lYWNoKChmdW5jdGlvbih0KXt2YXIgZT10WzBdLmhlaWdodCxyPWQrdFswXS53 aWR0aCxuPShGP3I6QykraDtuK3UrTi1oPj1pLl9tYXhXaWR0aCYmKEk9TWF0aC5tYXgoSSxV KSxOPTAsais9QixpLl9oZWlnaHQrPUIsQj0wKSxjLnNldFRyYW5zbGF0ZSh0aGlzLHdbMF0r dStOLHdbMV0rdStqK2UvMitoKSxVPU4rcitoLE4rPW4sQj1NYXRoLm1heChCLGUpfSkpLEY/ KGkuX3dpZHRoPU4rZixpLl9oZWlnaHQ9QittKTooaS5fd2lkdGg9TWF0aC5tYXgoSSxVKStm LGkuX2hlaWdodCs9QittKX19aS5fd2lkdGg9TWF0aC5jZWlsKE1hdGgubWF4KGkuX3dpZHRo K3dbMF0saS5fdGl0bGVXaWR0aCsyKih1K3AudGl0bGVQYWQpKSksaS5faGVpZ2h0PU1hdGgu Y2VpbChNYXRoLm1heChpLl9oZWlnaHQrd1sxXSxpLl90aXRsZUhlaWdodCsyKih1K3AuaXRl bUdhcCkpKSxpLl9lZmZIZWlnaHQ9TWF0aC5taW4oaS5faGVpZ2h0LGkuX21heEhlaWdodCk7 dmFyIFY9dC5fY29udGV4dC5lZGl0cyxIPVYubGVnZW5kVGV4dHx8Vi5sZWdlbmRQb3NpdGlv bjtyLmVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPW4uc2VsZWN0KHRoaXMpLnNlbGVjdCgiLmxl Z2VuZHRvZ2dsZSIpLHI9dFswXS5oZWlnaHQsaT1IP2Q6X3x8ZCt0WzBdLndpZHRoO3N8fChp Kz1oLzIpLGMuc2V0UmVjdChlLDAsLXIvMixpLHIpfSkpfSh0LHosRCxlKX0sZnVuY3Rpb24o KXt2YXIgcyx1LG0seSx4PWYuX3NpemUsYj1lLmJvcmRlcndpZHRoO2lmKCFkKXtpZihmdW5j dGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0LmxlZ2VuZCxyPU0oZSksbj1TKGUpO3JldHVy biBhLmF1dG9NYXJnaW4odCwibGVnZW5kIix7eDplLngseTplLnksbDplLl93aWR0aCpnW3Jd LHI6ZS5fd2lkdGgqdltyXSxiOmUuX2VmZkhlaWdodCp2W25dLHQ6ZS5fZWZmSGVpZ2h0Kmdb bl19KX0odCkpcmV0dXJuO3ZhciB3PXgubCt4LncqZS54LWdbTShlKV0qZS5fd2lkdGgsaz14 LnQreC5oKigxLWUueSktZ1tTKGUpXSplLl9lZmZIZWlnaHQ7aWYoZi5tYXJnaW4uYXV0b2V4 cGFuZCl7dmFyIEE9dyxQPWs7dz1pLmNvbnN0cmFpbih3LDAsZi53aWR0aC1lLl93aWR0aCks az1pLmNvbnN0cmFpbihrLDAsZi5oZWlnaHQtZS5fZWZmSGVpZ2h0KSx3IT09QSYmaS5sb2co IkNvbnN0cmFpbiBsZWdlbmQueCB0byBtYWtlIGxlZ2VuZCBmaXQgaW5zaWRlIGdyYXBoIiks ayE9PVAmJmkubG9nKCJDb25zdHJhaW4gbGVnZW5kLnkgdG8gbWFrZSBsZWdlbmQgZml0IGlu c2lkZSBncmFwaCIpfWMuc2V0VHJhbnNsYXRlKFQsdyxrKX1pZihPLm9uKCIuZHJhZyIsbnVs bCksVC5vbigid2hlZWwiLG51bGwpLGR8fGUuX2hlaWdodDw9ZS5fbWF4SGVpZ2h0fHx0Ll9j b250ZXh0LnN0YXRpY1Bsb3Qpe3ZhciBJPWUuX2VmZkhlaWdodDtkJiYoST1lLl9oZWlnaHQp LEwuYXR0cih7d2lkdGg6ZS5fd2lkdGgtYixoZWlnaHQ6SS1iLHg6Yi8yLHk6Yi8yfSksYy5z ZXRUcmFuc2xhdGUoQywwLDApLEUuc2VsZWN0KCJyZWN0IikuYXR0cih7d2lkdGg6ZS5fd2lk dGgtMipiLGhlaWdodDpJLTIqYix4OmIseTpifSksYy5zZXRDbGlwVXJsKEMsaCx0KSxjLnNl dFJlY3QoTywwLDAsMCwwKSxkZWxldGUgZS5fc2Nyb2xsWX1lbHNle3ZhciB6LEQsUixGPU1h dGgubWF4KHAuc2Nyb2xsQmFyTWluSGVpZ2h0LGUuX2VmZkhlaWdodCplLl9lZmZIZWlnaHQv ZS5faGVpZ2h0KSxCPWUuX2VmZkhlaWdodC1GLTIqcC5zY3JvbGxCYXJNYXJnaW4sTj1lLl9o ZWlnaHQtZS5fZWZmSGVpZ2h0LGo9Qi9OLFU9TWF0aC5taW4oZS5fc2Nyb2xsWXx8MCxOKTtM LmF0dHIoe3dpZHRoOmUuX3dpZHRoLTIqYitwLnNjcm9sbEJhcldpZHRoK3Auc2Nyb2xsQmFy TWFyZ2luLGhlaWdodDplLl9lZmZIZWlnaHQtYix4OmIvMix5OmIvMn0pLEUuc2VsZWN0KCJy ZWN0IikuYXR0cih7d2lkdGg6ZS5fd2lkdGgtMipiK3Auc2Nyb2xsQmFyV2lkdGgrcC5zY3Jv bGxCYXJNYXJnaW4saGVpZ2h0OmUuX2VmZkhlaWdodC0yKmIseDpiLHk6YitVfSksYy5zZXRD bGlwVXJsKEMsaCx0KSxxKFUsRixqKSxULm9uKCJ3aGVlbCIsKGZ1bmN0aW9uKCl7cShVPWku Y29uc3RyYWluKGUuX3Njcm9sbFkrbi5ldmVudC5kZWx0YVkvQipOLDAsTiksRixqKSwwIT09 VSYmVSE9PU4mJm4uZXZlbnQucHJldmVudERlZmF1bHQoKX0pKTt2YXIgVj1uLmJlaGF2aW9y LmRyYWcoKS5vbigiZHJhZ3N0YXJ0IiwoZnVuY3Rpb24oKXt2YXIgdD1uLmV2ZW50LnNvdXJj ZUV2ZW50O3o9InRvdWNoc3RhcnQiPT09dC50eXBlP3QuY2hhbmdlZFRvdWNoZXNbMF0uY2xp ZW50WTp0LmNsaWVudFksUj1VfSkpLm9uKCJkcmFnIiwoZnVuY3Rpb24oKXt2YXIgdD1uLmV2 ZW50LnNvdXJjZUV2ZW50OzI9PT10LmJ1dHRvbnN8fHQuY3RybEtleXx8KEQ9InRvdWNobW92 ZSI9PT10LnR5cGU/dC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZOnQuY2xpZW50WSxxKFU9 ZnVuY3Rpb24odCxlLHIpe3ZhciBuPShyLWUpL2ordDtyZXR1cm4gaS5jb25zdHJhaW4obiww LE4pfShSLHosRCksRixqKSl9KSk7Ty5jYWxsKFYpO3ZhciBIPW4uYmVoYXZpb3IuZHJhZygp Lm9uKCJkcmFnc3RhcnQiLChmdW5jdGlvbigpe3ZhciB0PW4uZXZlbnQuc291cmNlRXZlbnQ7 InRvdWNoc3RhcnQiPT09dC50eXBlJiYoej10LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFks Uj1VKX0pKS5vbigiZHJhZyIsKGZ1bmN0aW9uKCl7dmFyIHQ9bi5ldmVudC5zb3VyY2VFdmVu dDsidG91Y2htb3ZlIj09PXQudHlwZSYmKEQ9dC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZ LHEoVT1mdW5jdGlvbih0LGUscil7dmFyIG49KGUtcikvait0O3JldHVybiBpLmNvbnN0cmFp bihuLDAsTil9KFIseixEKSxGLGopKX0pKTtDLmNhbGwoSCl9ZnVuY3Rpb24gcShyLG4saSl7 ZS5fc2Nyb2xsWT10Ll9mdWxsTGF5b3V0LmxlZ2VuZC5fc2Nyb2xsWT1yLGMuc2V0VHJhbnNs YXRlKEMsMCwtciksYy5zZXRSZWN0KE8sZS5fd2lkdGgscC5zY3JvbGxCYXJNYXJnaW4rcipp LHAuc2Nyb2xsQmFyV2lkdGgsbiksRS5zZWxlY3QoInJlY3QiKS5hdHRyKCJ5IixiK3IpfXQu X2NvbnRleHQuZWRpdHMubGVnZW5kUG9zaXRpb24mJihULmNsYXNzZWQoImN1cnNvci1tb3Zl IiwhMCksbC5pbml0KHtlbGVtZW50OlQubm9kZSgpLGdkOnQscHJlcEZuOmZ1bmN0aW9uKCl7 dmFyIHQ9Yy5nZXRUcmFuc2xhdGUoVCk7bT10LngseT10Lnl9LG1vdmVGbjpmdW5jdGlvbih0 LHIpe3ZhciBuPW0rdCxpPXkrcjtjLnNldFRyYW5zbGF0ZShULG4saSkscz1sLmFsaWduKG4s MCx4LmwseC5sK3gudyxlLnhhbmNob3IpLHU9bC5hbGlnbihpLDAseC50K3guaCx4LnQsZS55 YW5jaG9yKX0sZG9uZUZuOmZ1bmN0aW9uKCl7dm9pZCAwIT09cyYmdm9pZCAwIT09dSYmby5j YWxsKCJfZ3VpUmVsYXlvdXQiLHQseyJsZWdlbmQueCI6cywibGVnZW5kLnkiOnV9KX0sY2xp Y2tGbjpmdW5jdGlvbihlLG4pe3ZhciBpPXIuc2VsZWN0QWxsKCJnLnRyYWNlcyIpLmZpbHRl cigoZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVy biBuLmNsaWVudFg+PXQubGVmdCYmbi5jbGllbnRYPD10LnJpZ2h0JiZuLmNsaWVudFk+PXQu dG9wJiZuLmNsaWVudFk8PXQuYm90dG9tfSkpO2kuc2l6ZSgpPjAmJl8odCxULGksZSxuKX19 KSl9XSx0KX0odCxlKX19LHsiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCI6NDcxLCIuLi8u Li9saWIiOjUwMywiLi4vLi4vbGliL2V2ZW50cyI6NDkyLCIuLi8uLi9saWIvc3ZnX3RleHRf dXRpbHMiOjUyOSwiLi4vLi4vcGxvdHMvcGxvdHMiOjYxOSwiLi4vLi4vcmVnaXN0cnkiOjYz OCwiLi4vY29sb3IiOjM2NiwiLi4vZHJhZ2VsZW1lbnQiOjM4NSwiLi4vZHJhd2luZyI6Mzg4 LCIuL2NvbnN0YW50cyI6NDE3LCIuL2dldF9sZWdlbmRfZGF0YSI6NDIwLCIuL2hhbmRsZV9j bGljayI6NDIxLCIuL2hlbHBlcnMiOjQyMiwiLi9zdHlsZSI6NDI0LCJAcGxvdGx5L2QzIjo1 OH1dLDQyMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9y ZWdpc3RyeSIpLGk9dCgiLi9oZWxwZXJzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFy IHIsYSxvPWUuX2luSG92ZXIscz1pLmlzR3JvdXBlZChlKSxsPWkuaXNSZXZlcnNlZChlKSxj PXt9LHU9W10sZj0hMSxoPXt9LHA9MCxkPTA7ZnVuY3Rpb24gbSh0LHIpe2lmKCIiIT09dCYm aS5pc0dyb3VwZWQoZSkpLTE9PT11LmluZGV4T2YodCk/KHUucHVzaCh0KSxmPSEwLGNbdF09 W3JdKTpjW3RdLnB1c2gocik7ZWxzZXt2YXIgbj0ifn5pIitwO3UucHVzaChuKSxjW25dPVty XSxwKyt9fWZvcihyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBnPXRbcl0sdj1nWzBdLHk9di50 cmFjZSx4PXkubGVnZW5kZ3JvdXA7aWYob3x8eS52aXNpYmxlJiZ5LnNob3dsZWdlbmQpaWYo bi50cmFjZUlzKHksInBpZS1saWtlIikpZm9yKGhbeF18fChoW3hdPXt9KSxhPTA7YTxnLmxl bmd0aDthKyspe3ZhciBiPWdbYV0ubGFiZWw7aFt4XVtiXXx8KG0oeCx7bGFiZWw6Yixjb2xv cjpnW2FdLmNvbG9yLGk6Z1thXS5pLHRyYWNlOnkscHRzOmdbYV0ucHRzfSksaFt4XVtiXT0h MCxkPU1hdGgubWF4KGQsKGJ8fCIiKS5sZW5ndGgpKX1lbHNlIG0oeCx2KSxkPU1hdGgubWF4 KGQsKHkubmFtZXx8IiIpLmxlbmd0aCl9aWYoIXUubGVuZ3RoKXJldHVybltdO3ZhciBfPSFm fHwhcyx3PVtdO2ZvcihyPTA7cjx1Lmxlbmd0aDtyKyspe3ZhciBUPWNbdVtyXV07Xz93LnB1 c2goVFswXSk6dy5wdXNoKFQpfWZvcihfJiYodz1bd10pLHI9MDtyPHcubGVuZ3RoO3IrKyl7 dmFyIGs9MS8wO2ZvcihhPTA7YTx3W3JdLmxlbmd0aDthKyspe3ZhciBBPXdbcl1bYV0udHJh Y2UubGVnZW5kcmFuaztrPkEmJihrPUEpfXdbcl1bMF0uX2dyb3VwTWluUmFuaz1rLHdbcl1b MF0uX3ByZUdyb3VwU29ydD1yfXZhciBNPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudHJhY2Uu bGVnZW5kcmFuay1lLnRyYWNlLmxlZ2VuZHJhbmt8fHQuX3ByZVNvcnQtZS5fcHJlU29ydH07 Zm9yKHcuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0WzBdLl9wcmVHcm91cFNvcnQ9ZX0pKSx3 LnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbMF0uX2dyb3VwTWluUmFuay1lWzBdLl9n cm91cE1pblJhbmt8fHRbMF0uX3ByZUdyb3VwU29ydC1lWzBdLl9wcmVHcm91cFNvcnR9KSks cj0wO3I8dy5sZW5ndGg7cisrKXt3W3JdLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5fcHJl U29ydD1lfSkpLHdbcl0uc29ydChNKTt2YXIgUz13W3JdWzBdLnRyYWNlLEU9bnVsbDtmb3Io YT0wO2E8d1tyXS5sZW5ndGg7YSsrKXt2YXIgTD13W3JdW2FdLnRyYWNlLmxlZ2VuZGdyb3Vw dGl0bGU7aWYoTCYmTC50ZXh0KXtFPUwsbyYmKEwuZm9udD1lLl9ncm91cFRpdGxlRm9udCk7 YnJlYWt9fWlmKGwmJndbcl0ucmV2ZXJzZSgpLEUpe3ZhciBDPSExO2ZvcihhPTA7YTx3W3Jd Lmxlbmd0aDthKyspaWYobi50cmFjZUlzKHdbcl1bYV0udHJhY2UsInBpZS1saWtlIikpe0M9 ITA7YnJlYWt9d1tyXS51bnNoaWZ0KHtpOi0xLGdyb3VwVGl0bGU6RSxub0NsaWNrOkMsdHJh Y2U6e3Nob3dsZWdlbmQ6Uy5zaG93bGVnZW5kLGxlZ2VuZGdyb3VwOlMubGVnZW5kZ3JvdXAs dmlzaWJsZToidG9nZ2xlaXRlbSI9PT1lLmdyb3VwY2xpY2t8fFMudmlzaWJsZX19KX1mb3Io YT0wO2E8d1tyXS5sZW5ndGg7YSsrKXdbcl1bYV09W3dbcl1bYV1dfXJldHVybiBlLl9sZ3Jv dXBzTGVuZ3RoPXcubGVuZ3RoLGUuX21heE5hbWVMZW5ndGg9ZCx3fX0seyIuLi8uLi9yZWdp c3RyeSI6NjM4LCIuL2hlbHBlcnMiOjQyMn1dLDQyMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL3JlZ2lzdHJ5IiksYT0h MDtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBvPWUuX2Z1bGxMYXlvdXQ7aWYoIWUu X2RyYWdnZWQmJiFlLl9lZGl0aW5nKXt2YXIgcyxsPW8ubGVnZW5kLml0ZW1jbGljayxjPW8u bGVnZW5kLml0ZW1kb3VibGVjbGljayx1PW8ubGVnZW5kLmdyb3VwY2xpY2s7aWYoMT09PXIm JiJ0b2dnbGUiPT09bCYmInRvZ2dsZW90aGVycyI9PT1jJiZhJiZlLmRhdGEmJmUuX2NvbnRl eHQuc2hvd1RpcHM/KG4ubm90aWZpZXIobi5fKGUsIkRvdWJsZS1jbGljayBvbiBsZWdlbmQg dG8gaXNvbGF0ZSBvbmUgdHJhY2UiKSwibG9uZyIpLGE9ITEpOmE9ITEsMT09PXI/cz1sOjI9 PT1yJiYocz1jKSxzKXt2YXIgZj0idG9nZ2xlZ3JvdXAiPT09dSxoPW8uaGlkZGVubGFiZWxz P28uaGlkZGVubGFiZWxzLnNsaWNlKCk6W10scD10LmRhdGEoKVswXVswXTtpZighcC5ncm91 cFRpdGxlfHwhcC5ub0NsaWNrKXt2YXIgZCxtLGcsdix5LHg9ZS5fZnVsbERhdGEsYj1wLnRy YWNlLF89Yi5sZWdlbmRncm91cCx3PXt9LFQ9W10saz1bXSxBPVtdO2lmKGkudHJhY2VJcyhi LCJwaWUtbGlrZSIpKXt2YXIgTT1wLmxhYmVsLFM9aC5pbmRleE9mKE0pOyJ0b2dnbGUiPT09 cz8tMT09PVM/aC5wdXNoKE0pOmguc3BsaWNlKFMsMSk6InRvZ2dsZW90aGVycyI9PT1zJiYo aD1bXSxlLmNhbGNkYXRhWzBdLmZvckVhY2goKGZ1bmN0aW9uKHQpe00hPT10LmxhYmVsJiZo LnB1c2godC5sYWJlbCl9KSksZS5fZnVsbExheW91dC5oaWRkZW5sYWJlbHMmJmUuX2Z1bGxM YXlvdXQuaGlkZGVubGFiZWxzLmxlbmd0aD09PWgubGVuZ3RoJiYtMT09PVMmJihoPVtdKSks aS5jYWxsKCJfZ3VpUmVsYXlvdXQiLGUsImhpZGRlbmxhYmVscyIsaCl9ZWxzZXt2YXIgRSxM PV8mJl8ubGVuZ3RoLEM9W107aWYoTClmb3IoZD0wO2Q8eC5sZW5ndGg7ZCsrKShFPXhbZF0p LnZpc2libGUmJkUubGVnZW5kZ3JvdXA9PT1fJiZDLnB1c2goZCk7aWYoInRvZ2dsZSI9PT1z KXt2YXIgUDtzd2l0Y2goYi52aXNpYmxlKXtjYXNlITA6UD0ibGVnZW5kb25seSI7YnJlYWs7 Y2FzZSExOlA9ITE7YnJlYWs7Y2FzZSJsZWdlbmRvbmx5IjpQPSEwfWlmKEwpaWYoZilmb3Io ZD0wO2Q8eC5sZW5ndGg7ZCsrKSExIT09eFtkXS52aXNpYmxlJiZ4W2RdLmxlZ2VuZGdyb3Vw PT09XyYmaih4W2RdLFApO2Vsc2UgaihiLFApO2Vsc2UgaihiLFApfWVsc2UgaWYoInRvZ2ds ZW90aGVycyI9PT1zKXt2YXIgSSxPLHosRCxSPSEwO2ZvcihkPTA7ZDx4Lmxlbmd0aDtkKysp aWYoST14W2RdPT09Yix6PSEwIT09eFtkXS5zaG93bGVnZW5kLCEoSXx8enx8KE89TCYmeFtk XS5sZWdlbmRncm91cD09PV8pfHwhMCE9PXhbZF0udmlzaWJsZXx8aS50cmFjZUlzKHhbZF0s Im5vdExlZ2VuZElzb2xhdGFibGUiKSkpe1I9ITE7YnJlYWt9Zm9yKGQ9MDtkPHgubGVuZ3Ro O2QrKylpZighMSE9PXhbZF0udmlzaWJsZSYmIWkudHJhY2VJcyh4W2RdLCJub3RMZWdlbmRJ c29sYXRhYmxlIikpc3dpdGNoKGIudmlzaWJsZSl7Y2FzZSJsZWdlbmRvbmx5IjpqKHhbZF0s ITApO2JyZWFrO2Nhc2UhMDpEPSEhUnx8ImxlZ2VuZG9ubHkiLEk9eFtkXT09PWIsej0hMCE9 PXhbZF0uc2hvd2xlZ2VuZCYmIXhbZF0ubGVnZW5kZ3JvdXAsTz1JfHxMJiZ4W2RdLmxlZ2Vu ZGdyb3VwPT09XyxqKHhbZF0sISghTyYmIXopfHxEKX19Zm9yKGQ9MDtkPGsubGVuZ3RoO2Qr KylpZihnPWtbZF0pe3ZhciBGPWcuY29uc3RydWN0VXBkYXRlKCksQj1PYmplY3Qua2V5cyhG KTtmb3IobT0wO208Qi5sZW5ndGg7bSsrKXY9QlttXSwod1t2XT13W3ZdfHxbXSlbQVtkXV09 Rlt2XX1mb3IoeT1PYmplY3Qua2V5cyh3KSxkPTA7ZDx5Lmxlbmd0aDtkKyspZm9yKHY9eVtk XSxtPTA7bTxULmxlbmd0aDttKyspd1t2XS5oYXNPd25Qcm9wZXJ0eShtKXx8KHdbdl1bbV09 dm9pZCAwKTtpLmNhbGwoIl9ndWlSZXN0eWxlIixlLHcsVCl9fX19ZnVuY3Rpb24gTih0LGUs cil7dmFyIG49VC5pbmRleE9mKHQpLGk9d1tlXTtyZXR1cm4gaXx8KGk9d1tlXT1bXSksLTE9 PT1ULmluZGV4T2YodCkmJihULnB1c2godCksbj1ULmxlbmd0aC0xKSxpW25dPXIsbn1mdW5j dGlvbiBqKHQsZSl7aWYoIXAuZ3JvdXBUaXRsZXx8Zil7dmFyIHI9dC5fZnVsbElucHV0O2lm KGkuaGFzVHJhbnNmb3JtKHIsImdyb3VwYnkiKSl7dmFyIGE9a1tyLmluZGV4XTtpZighYSl7 dmFyIG89aS5nZXRUcmFuc2Zvcm1JbmRpY2VzKHIsImdyb3VwYnkiKSxzPW9bby5sZW5ndGgt MV07YT1uLmtleWVkQ29udGFpbmVyKHIsInRyYW5zZm9ybXNbIitzKyJdLnN0eWxlcyIsInRh cmdldCIsInZhbHVlLnZpc2libGUiKSxrW3IuaW5kZXhdPWF9dmFyIGw9YS5nZXQodC5fZ3Jv dXApO3ZvaWQgMD09PWwmJihsPSEwKSwhMSE9PWwmJmEuc2V0KHQuX2dyb3VwLGUpLEFbci5p bmRleF09TihyLmluZGV4LCJ2aXNpYmxlIiwhMSE9PXIudmlzaWJsZSl9ZWxzZXt2YXIgYz0h MSE9PXIudmlzaWJsZSYmZTtOKHIuaW5kZXgsInZpc2libGUiLGMpfX19fX0seyIuLi8uLi9s aWIiOjUwMywiLi4vLi4vcmVnaXN0cnkiOjYzOH1dLDQyMjpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0IjtyLmlzR3JvdXBlZD1mdW5jdGlvbih0KXtyZXR1cm4tMSE9PSh0LnRyYWNl b3JkZXJ8fCIiKS5pbmRleE9mKCJncm91cGVkIil9LHIuaXNWZXJ0aWNhbD1mdW5jdGlvbih0 KXtyZXR1cm4iaCIhPT10Lm9yaWVudGF0aW9ufSxyLmlzUmV2ZXJzZWQ9ZnVuY3Rpb24odCl7 cmV0dXJuLTEhPT0odC50cmFjZW9yZGVyfHwiIikuaW5kZXhPZigicmV2ZXJzZWQiKX19LHt9 XSw0MjM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXttb2R1bGVU eXBlOiJjb21wb25lbnQiLG5hbWU6ImxlZ2VuZCIsbGF5b3V0QXR0cmlidXRlczp0KCIuL2F0 dHJpYnV0ZXMiKSxzdXBwbHlMYXlvdXREZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksZHJhdzp0 KCIuL2RyYXciKSxzdHlsZTp0KCIuL3N0eWxlIil9fSx7Ii4vYXR0cmlidXRlcyI6NDE2LCIu L2RlZmF1bHRzIjo0MTgsIi4vZHJhdyI6NDE5LCIuL3N0eWxlIjo0MjR9XSw0MjQ6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiQHBsb3RseS9kMyIpLGk9dCgiLi4v Li4vcmVnaXN0cnkiKSxhPXQoIi4uLy4uL2xpYiIpLG89YS5zdHJUcmFuc2xhdGUscz10KCIu Li9kcmF3aW5nIiksbD10KCIuLi9jb2xvciIpLGM9dCgiLi4vY29sb3JzY2FsZS9oZWxwZXJz IikuZXh0cmFjdE9wdHMsdT10KCIuLi8uLi90cmFjZXMvc2NhdHRlci9zdWJ0eXBlcyIpLGY9 dCgiLi4vLi4vdHJhY2VzL3BpZS9zdHlsZV9vbmUiKSxoPXQoIi4uLy4uL3RyYWNlcy9waWUv aGVscGVycyIpLmNhc3RPcHRpb24scD10KCIuL2NvbnN0YW50cyIpO2Z1bmN0aW9uIGQodCxl KXtyZXR1cm4oZT8icmFkaWFsIjoiaG9yaXpvbnRhbCIpKyh0PyIiOiJyZXZlcnNlZCIpfWZ1 bmN0aW9uIG0odCl7dmFyIGU9dFswXS50cmFjZSxyPWUuY29udG91cnMsbj11Lmhhc0xpbmVz KGUpLGk9dS5oYXNNYXJrZXJzKGUpLGE9ZS52aXNpYmxlJiZlLmZpbGwmJiJub25lIiE9PWUu ZmlsbCxvPSExLHM9ITE7aWYocil7dmFyIGw9ci5jb2xvcmluZzsibGluZXMiPT09bD9vPSEw Om49Im5vbmUiPT09bHx8ImhlYXRtYXAiPT09bHx8ci5zaG93bGluZXMsImNvbnN0cmFpbnQi PT09ci50eXBlP2E9Ij0iIT09ci5fb3BlcmF0aW9uOiJmaWxsIiE9PWwmJiJoZWF0bWFwIiE9 PWx8fChzPSEwKX1yZXR1cm57c2hvd01hcmtlcjppLHNob3dMaW5lOm4sc2hvd0ZpbGw6YSxz aG93R3JhZGllbnRMaW5lOm8sc2hvd0dyYWRpZW50RmlsbDpzLGFueUxpbmU6bnx8byxhbnlG aWxsOmF8fHN9fWZ1bmN0aW9uIGcodCxlLHIpe3JldHVybiB0JiZhLmlzQXJyYXlPclR5cGVk QXJyYXkodCk/ZTp0PnI/cjp0fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIHY9ZS5f ZnVsbExheW91dDtyfHwocj12LmxlZ2VuZCk7dmFyIHk9ImNvbnN0YW50Ij09PXIuaXRlbXNp emluZyx4PXIuaXRlbXdpZHRoLGI9KHgrMipwLml0ZW1HYXApLzIsXz1vKGIsMCksdz1mdW5j dGlvbih0LGUscixuKXt2YXIgaTtpZih0KzEpaT10O2Vsc2V7aWYoIShlJiZlLndpZHRoPjAp KXJldHVybiAwO2k9ZS53aWR0aH1yZXR1cm4geT9uOk1hdGgubWluKGkscil9O2Z1bmN0aW9u IFQodCxhLG8pe3ZhciB1PXRbMF0udHJhY2UsZj11Lm1hcmtlcnx8e30saD1mLmxpbmV8fHt9 LHA9bz91LnZpc2libGUmJnUudHlwZT09PW86aS50cmFjZUlzKHUsImJhciIpLGQ9bi5zZWxl Y3QoYSkuc2VsZWN0KCJnLmxlZ2VuZHBvaW50cyIpLnNlbGVjdEFsbCgicGF0aC5sZWdlbmQi K28pLmRhdGEocD9bdF06W10pO2QuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJs ZWdlbmQiK28sITApLmF0dHIoImQiLCJNNiw2SC02Vi02SDZaIikuYXR0cigidHJhbnNmb3Jt IixfKSxkLmV4aXQoKS5yZW1vdmUoKSxkLmVhY2goKGZ1bmN0aW9uKHQpe3ZhciBpPW4uc2Vs ZWN0KHRoaXMpLGE9dFswXSxvPXcoYS5tbHcsZi5saW5lLDUsMik7aS5zdHlsZSgic3Ryb2tl LXdpZHRoIixvKyJweCIpO3ZhciBwPWEubWNjO2lmKCFyLl9pbkhvdmVyJiYibWMiaW4gYSl7 dmFyIGQ9YyhmKSxtPWQubWlkO3ZvaWQgMD09PW0mJihtPShkLm1heCtkLm1pbikvMikscD1z LnRyeUNvbG9yc2NhbGUoZiwiIikobSl9dmFyIHY9cHx8YS5tY3x8Zi5jb2xvcix5PWYucGF0 dGVybix4PXkmJnMuZ2V0UGF0dGVybkF0dHIoeS5zaGFwZSwwLCIiKTtpZih4KXt2YXIgYj1z LmdldFBhdHRlcm5BdHRyKHkuYmdjb2xvciwwLG51bGwpLF89cy5nZXRQYXR0ZXJuQXR0cih5 LmZnY29sb3IsMCxudWxsKSxUPXkuZmdvcGFjaXR5LGs9Zyh5LnNpemUsOCwxMCksQT1nKHku c29saWRpdHksLjUsMSksTT0ibGVnZW5kLSIrdS51aWQ7aS5jYWxsKHMucGF0dGVybiwibGVn ZW5kIixlLE0seCxrLEEscCx5LmZpbGxtb2RlLGIsXyxUKX1lbHNlIGkuY2FsbChsLmZpbGws dik7byYmbC5zdHJva2UoaSxhLm1sY3x8aC5jb2xvcil9KSl9ZnVuY3Rpb24gayh0LGUscil7 dmFyIG89dFswXSxzPW8udHJhY2UsbD1yP3MudmlzaWJsZSYmcy50eXBlPT09cjppLnRyYWNl SXMocyxyKSxjPW4uc2VsZWN0KGUpLnNlbGVjdCgiZy5sZWdlbmRwb2ludHMiKS5zZWxlY3RB bGwoInBhdGgubGVnZW5kIityKS5kYXRhKGw/W3RdOltdKTtpZihjLmVudGVyKCkuYXBwZW5k KCJwYXRoIikuY2xhc3NlZCgibGVnZW5kIityLCEwKS5hdHRyKCJkIiwiTTYsNkgtNlYtNkg2 WiIpLmF0dHIoInRyYW5zZm9ybSIsXyksYy5leGl0KCkucmVtb3ZlKCksYy5zaXplKCkpe3Zh ciB1PShzLm1hcmtlcnx8e30pLmxpbmUscD13KGgodS53aWR0aCxvLnB0cyksdSw1LDIpLGQ9 YS5taW5FeHRlbmQocyx7bWFya2VyOntsaW5lOnt3aWR0aDpwfX19KTtkLm1hcmtlci5saW5l LmNvbG9yPXUuY29sb3I7dmFyIG09YS5taW5FeHRlbmQobyx7dHJhY2U6ZH0pO2YoYyxtLGQp fX10LmVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPW4uc2VsZWN0KHRoaXMpLGk9YS5lbnN1cmVT aW5nbGUoZSwiZyIsImxheWVycyIpO2kuc3R5bGUoIm9wYWNpdHkiLHRbMF0udHJhY2Uub3Bh Y2l0eSk7dmFyIHM9ci52YWxpZ24sbD10WzBdLmxpbmVIZWlnaHQsYz10WzBdLmhlaWdodDtp ZigibWlkZGxlIiE9PXMmJmwmJmMpe3ZhciB1PXt0b3A6MSxib3R0b206LTF9W3NdKiguNSoo bC1jKzMpKTtpLmF0dHIoInRyYW5zZm9ybSIsbygwLHUpKX1lbHNlIGkuYXR0cigidHJhbnNm b3JtIixudWxsKTtpLnNlbGVjdEFsbCgiZy5sZWdlbmRmaWxsIikuZGF0YShbdF0pLmVudGVy KCkuYXBwZW5kKCJnIikuY2xhc3NlZCgibGVnZW5kZmlsbCIsITApLGkuc2VsZWN0QWxsKCJn LmxlZ2VuZGxpbmVzIikuZGF0YShbdF0pLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgi bGVnZW5kbGluZXMiLCEwKTt2YXIgZj1pLnNlbGVjdEFsbCgiZy5sZWdlbmRzeW1ib2xzIiku ZGF0YShbdF0pO2YuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJsZWdlbmRzeW1ib2xz IiwhMCksZi5zZWxlY3RBbGwoImcubGVnZW5kcG9pbnRzIikuZGF0YShbdF0pLmVudGVyKCku YXBwZW5kKCJnIikuY2xhc3NlZCgibGVnZW5kcG9pbnRzIiwhMCl9KSkuZWFjaCgoZnVuY3Rp b24odCl7dmFyIHIsaT10WzBdLnRyYWNlLG89W107aWYoaS52aXNpYmxlKXN3aXRjaChpLnR5 cGUpe2Nhc2UiaGlzdG9ncmFtMmQiOmNhc2UiaGVhdG1hcCI6bz1bWyJNLTE1LC0yVjRIMTVW LTJaIl1dLHI9ITA7YnJlYWs7Y2FzZSJjaG9yb3BsZXRoIjpjYXNlImNob3JvcGxldGhtYXBi b3giOm89W1siTS02LC02VjZINlYtNloiXV0scj0hMDticmVhaztjYXNlImRlbnNpdHltYXBi b3giOm89W1siTS02LDAgYTYsNiAwIDEsMCAxMiwwIGEgNiw2IDAgMSwwIC0xMiwwIl1dLHI9 InJhZGlhbCI7YnJlYWs7Y2FzZSJjb25lIjpvPVtbIk0tNiwyIEEyLDIgMCAwLDAgLTYsNiBW Nkw2LDRaIl0sWyJNLTYsLTYgQTIsMiAwIDAsMCAtNiwtMiBMNiwtNFoiXSxbIk0tNiwtMiBB MiwyIDAgMCwwIC02LDIgTDYsMFoiXV0scj0hMTticmVhaztjYXNlInN0cmVhbXR1YmUiOm89 W1siTS02LDIgQTIsMiAwIDAsMCAtNiw2IEg2IEEyLDIgMCAwLDEgNiwyIFoiXSxbIk0tNiwt NiBBMiwyIDAgMCwwIC02LC0yIEg2IEEyLDIgMCAwLDEgNiwtNiBaIl0sWyJNLTYsLTIgQTIs MiAwIDAsMCAtNiwyIEg2IEEyLDIgMCAwLDEgNiwtMiBaIl1dLHI9ITE7YnJlYWs7Y2FzZSJz dXJmYWNlIjpvPVtbIk0tNiwtNiBBMiwzIDAgMCwwIC02LDAgSDYgQTIsMyAwIDAsMSA2LC02 IFoiXSxbIk0tNiwxIEEyLDMgMCAwLDEgLTYsNiBINiBBMiwzIDAgMCwwIDYsMCBaIl1dLHI9 ITA7YnJlYWs7Y2FzZSJtZXNoM2QiOm89W1siTS02LDZIMEwtNiwtNloiXSxbIk02LDZIMEw2 LC02WiJdLFsiTS02LC02SDZMMCw2WiJdXSxyPSExO2JyZWFrO2Nhc2Uidm9sdW1lIjpvPVtb Ik0tNiw2SDBMLTYsLTZaIl0sWyJNNiw2SDBMNiwtNloiXSxbIk0tNiwtNkg2TDAsNloiXV0s cj0hMDticmVhaztjYXNlImlzb3N1cmZhY2UiOm89W1siTS02LDZIMEwtNiwtNloiXSxbIk02 LDZIMEw2LC02WiJdLFsiTS02LC02IEExMiwyNCAwIDAsMCA2LC02IEwwLDZaIl1dLHI9ITF9 dmFyIHU9bi5zZWxlY3QodGhpcykuc2VsZWN0KCJnLmxlZ2VuZHBvaW50cyIpLnNlbGVjdEFs bCgicGF0aC5sZWdlbmQzZGFuZGZyaWVuZHMiKS5kYXRhKG8pO3UuZW50ZXIoKS5hcHBlbmQo InBhdGgiKS5jbGFzc2VkKCJsZWdlbmQzZGFuZGZyaWVuZHMiLCEwKS5hdHRyKCJ0cmFuc2Zv cm0iLF8pLnN0eWxlKCJzdHJva2UtbWl0ZXJsaW1pdCIsMSksdS5leGl0KCkucmVtb3ZlKCks dS5lYWNoKChmdW5jdGlvbih0LG8pe3ZhciB1LGY9bi5zZWxlY3QodGhpcyksaD1jKGkpLHA9 aC5jb2xvcnNjYWxlLG09aC5yZXZlcnNlc2NhbGU7aWYocCl7aWYoIXIpe3ZhciBnPXAubGVu Z3RoO3U9MD09PW8/cFttP2ctMTowXVsxXToxPT09bz9wW20/MDpnLTFdWzFdOnBbTWF0aC5m bG9vcigoZy0xKS8yKV1bMV19fWVsc2V7dmFyIHY9aS52ZXJ0ZXhjb2xvcnx8aS5mYWNlY29s b3J8fGkuY29sb3I7dT1hLmlzQXJyYXlPclR5cGVkQXJyYXkodik/dltvXXx8dlswXTp2fWYu YXR0cigiZCIsdFswXSksdT9mLmNhbGwobC5maWxsLHUpOmYuY2FsbCgoZnVuY3Rpb24odCl7 aWYodC5zaXplKCkpe3ZhciBuPSJsZWdlbmRmaWxsLSIraS51aWQ7cy5ncmFkaWVudCh0LGUs bixkKG0sInJhZGlhbCI9PT1yKSxwLCJmaWxsIil9fSkpfSkpfSkpLmVhY2goKGZ1bmN0aW9u KHQpe3ZhciBlPXRbMF0udHJhY2Uscj0id2F0ZXJmYWxsIj09PWUudHlwZTtpZih0WzBdLl9k aXN0aW5jdCYmcil7dmFyIGk9dFswXS50cmFjZVt0WzBdLmRpcl0ubWFya2VyO3JldHVybiB0 WzBdLm1jPWkuY29sb3IsdFswXS5tbHc9aS5saW5lLndpZHRoLHRbMF0ubWxjPWkubGluZS5j b2xvcixUKHQsdGhpcywid2F0ZXJmYWxsIil9dmFyIGE9W107ZS52aXNpYmxlJiZyJiYoYT10 WzBdLmhhc1RvdGFscz9bWyJpbmNyZWFzaW5nIiwiTS02LC02VjZIMFoiXSxbInRvdGFscyIs Ik02LDZIMEwtNiwtNkgtMFoiXSxbImRlY3JlYXNpbmciLCJNNiw2Vi02SDBaIl1dOltbImlu Y3JlYXNpbmciLCJNLTYsLTZWNkg2WiJdLFsiZGVjcmVhc2luZyIsIk02LDZWLTZILTZaIl1d KTt2YXIgbz1uLnNlbGVjdCh0aGlzKS5zZWxlY3QoImcubGVnZW5kcG9pbnRzIikuc2VsZWN0 QWxsKCJwYXRoLmxlZ2VuZHdhdGVyZmFsbCIpLmRhdGEoYSk7by5lbnRlcigpLmFwcGVuZCgi cGF0aCIpLmNsYXNzZWQoImxlZ2VuZHdhdGVyZmFsbCIsITApLmF0dHIoInRyYW5zZm9ybSIs Xykuc3R5bGUoInN0cm9rZS1taXRlcmxpbWl0IiwxKSxvLmV4aXQoKS5yZW1vdmUoKSxvLmVh Y2goKGZ1bmN0aW9uKHQpe3ZhciByPW4uc2VsZWN0KHRoaXMpLGk9ZVt0WzBdXS5tYXJrZXIs YT13KHZvaWQgMCxpLmxpbmUsNSwyKTtyLmF0dHIoImQiLHRbMV0pLnN0eWxlKCJzdHJva2Ut d2lkdGgiLGErInB4IikuY2FsbChsLmZpbGwsaS5jb2xvciksYSYmci5jYWxsKGwuc3Ryb2tl LGkubGluZS5jb2xvcil9KSl9KSkuZWFjaCgoZnVuY3Rpb24odCl7VCh0LHRoaXMsImZ1bm5l bCIpfSkpLmVhY2goKGZ1bmN0aW9uKHQpe1QodCx0aGlzKX0pKS5lYWNoKChmdW5jdGlvbih0 KXt2YXIgcj10WzBdLnRyYWNlLG89bi5zZWxlY3QodGhpcykuc2VsZWN0KCJnLmxlZ2VuZHBv aW50cyIpLnNlbGVjdEFsbCgicGF0aC5sZWdlbmRib3giKS5kYXRhKHIudmlzaWJsZSYmaS50 cmFjZUlzKHIsImJveC12aW9saW4iKT9bdF06W10pO28uZW50ZXIoKS5hcHBlbmQoInBhdGgi KS5jbGFzc2VkKCJsZWdlbmRib3giLCEwKS5hdHRyKCJkIiwiTTYsNkgtNlYtNkg2WiIpLmF0 dHIoInRyYW5zZm9ybSIsXyksby5leGl0KCkucmVtb3ZlKCksby5lYWNoKChmdW5jdGlvbigp e3ZhciB0PW4uc2VsZWN0KHRoaXMpO2lmKCJhbGwiIT09ci5ib3hwb2ludHMmJiJhbGwiIT09 ci5wb2ludHN8fDAhPT1sLm9wYWNpdHkoci5maWxsY29sb3IpfHwwIT09bC5vcGFjaXR5KChy LmxpbmV8fHt9KS5jb2xvcikpe3ZhciBpPXcodm9pZCAwLHIubGluZSw1LDIpO3Quc3R5bGUo InN0cm9rZS13aWR0aCIsaSsicHgiKS5jYWxsKGwuZmlsbCxyLmZpbGxjb2xvciksaSYmbC5z dHJva2UodCxyLmxpbmUuY29sb3IpfWVsc2V7dmFyIGM9YS5taW5FeHRlbmQocix7bWFya2Vy OntzaXplOnk/MTI6YS5jb25zdHJhaW4oci5tYXJrZXIuc2l6ZSwyLDE2KSxzaXplcmVmOjEs c2l6ZW1pbjoxLHNpemVtb2RlOiJkaWFtZXRlciJ9fSk7by5jYWxsKHMucG9pbnRTdHlsZSxj LGUpfX0pKX0pKS5lYWNoKChmdW5jdGlvbih0KXtrKHQsdGhpcywiZnVubmVsYXJlYSIpfSkp LmVhY2goKGZ1bmN0aW9uKHQpe2sodCx0aGlzLCJwaWUiKX0pKS5lYWNoKChmdW5jdGlvbih0 KXt2YXIgcixpLG89bSh0KSxsPW8uc2hvd0ZpbGwsZj1vLnNob3dMaW5lLGg9by5zaG93R3Jh ZGllbnRMaW5lLHA9by5zaG93R3JhZGllbnRGaWxsLGc9by5hbnlGaWxsLHY9by5hbnlMaW5l LHk9dFswXSxiPXkudHJhY2UsXz1jKGIpLFQ9Xy5jb2xvcnNjYWxlLGs9Xy5yZXZlcnNlc2Nh bGUsQT11Lmhhc01hcmtlcnMoYil8fCFnPyJNNSwwIjp2PyJNNSwtMiI6Ik01LC0zIixNPW4u c2VsZWN0KHRoaXMpLFM9TS5zZWxlY3QoIi5sZWdlbmRmaWxsIikuc2VsZWN0QWxsKCJwYXRo IikuZGF0YShsfHxwP1t0XTpbXSk7aWYoUy5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNz ZWQoImpzLWZpbGwiLCEwKSxTLmV4aXQoKS5yZW1vdmUoKSxTLmF0dHIoImQiLEErImgiK3gr InY2aC0iK3grInoiKS5jYWxsKChmdW5jdGlvbih0KXtpZih0LnNpemUoKSlpZihsKXMuZmls bEdyb3VwU3R5bGUodCxlKTtlbHNle3ZhciByPSJsZWdlbmRmaWxsLSIrYi51aWQ7cy5ncmFk aWVudCh0LGUscixkKGspLFQsImZpbGwiKX19KSksZnx8aCl7dmFyIEU9dyh2b2lkIDAsYi5s aW5lLDEwLDUpO2k9YS5taW5FeHRlbmQoYix7bGluZTp7d2lkdGg6RX19KSxyPVthLm1pbkV4 dGVuZCh5LHt0cmFjZTppfSldfXZhciBMPU0uc2VsZWN0KCIubGVnZW5kbGluZXMiKS5zZWxl Y3RBbGwoInBhdGgiKS5kYXRhKGZ8fGg/W3JdOltdKTtMLmVudGVyKCkuYXBwZW5kKCJwYXRo IikuY2xhc3NlZCgianMtbGluZSIsITApLEwuZXhpdCgpLnJlbW92ZSgpLEwuYXR0cigiZCIs QSsoaD8ibCIreCsiLDAuMDAwMSI6ImgiK3gpKS5jYWxsKGY/cy5saW5lR3JvdXBTdHlsZTpm dW5jdGlvbih0KXtpZih0LnNpemUoKSl7dmFyIHI9ImxlZ2VuZGxpbmUtIitiLnVpZDtzLmxp bmVHcm91cFN0eWxlKHQpLHMuZ3JhZGllbnQodCxlLHIsZChrKSxULCJzdHJva2UiKX19KX0p KS5lYWNoKChmdW5jdGlvbih0KXt2YXIgcixpLG89bSh0KSxsPW8uYW55RmlsbCxjPW8uYW55 TGluZSxmPW8uc2hvd0xpbmUsaD1vLnNob3dNYXJrZXIscD10WzBdLGQ9cC50cmFjZSxnPSFo JiYhYyYmIWwmJnUuaGFzVGV4dChkKTtmdW5jdGlvbiB2KHQsZSxyLG4pe3ZhciBpPWEubmVz dGVkUHJvcGVydHkoZCx0KS5nZXQoKSxvPWEuaXNBcnJheU9yVHlwZWRBcnJheShpKSYmZT9l KGkpOmk7aWYoeSYmbyYmdm9pZCAwIT09biYmKG89bikscil7aWYobzxyWzBdKXJldHVybiBy WzBdO2lmKG8+clsxXSlyZXR1cm4gclsxXX1yZXR1cm4gb31mdW5jdGlvbiB4KHQpe3JldHVy biBwLl9kaXN0aW5jdCYmcC5pbmRleCYmdFtwLmluZGV4XT90W3AuaW5kZXhdOnRbMF19aWYo aHx8Z3x8Zil7dmFyIGI9e30sdz17fTtpZihoKXtiLm1jPXYoIm1hcmtlci5jb2xvciIseCks Yi5teD12KCJtYXJrZXIuc3ltYm9sIix4KSxiLm1vPXYoIm1hcmtlci5vcGFjaXR5IixhLm1l YW4sWy4yLDFdKSxiLm1sYz12KCJtYXJrZXIubGluZS5jb2xvciIseCksYi5tbHc9digibWFy a2VyLmxpbmUud2lkdGgiLGEubWVhbixbMCw1XSwyKSx3Lm1hcmtlcj17c2l6ZXJlZjoxLHNp emVtaW46MSxzaXplbW9kZToiZGlhbWV0ZXIifTt2YXIgVD12KCJtYXJrZXIuc2l6ZSIsYS5t ZWFuLFsyLDE2XSwxMik7Yi5tcz1ULHcubWFya2VyLnNpemU9VH1mJiYody5saW5lPXt3aWR0 aDp2KCJsaW5lLndpZHRoIix4LFswLDEwXSw1KX0pLGcmJihiLnR4PSJBYSIsYi50cD12KCJ0 ZXh0cG9zaXRpb24iLHgpLGIudHM9MTAsYi50Yz12KCJ0ZXh0Zm9udC5jb2xvciIseCksYi50 Zj12KCJ0ZXh0Zm9udC5mYW1pbHkiLHgpKSxyPVthLm1pbkV4dGVuZChwLGIpXSwoaT1hLm1p bkV4dGVuZChkLHcpKS5zZWxlY3RlZHBvaW50cz1udWxsLGkudGV4dHRlbXBsYXRlPW51bGx9 dmFyIGs9bi5zZWxlY3QodGhpcykuc2VsZWN0KCJnLmxlZ2VuZHBvaW50cyIpLEE9ay5zZWxl Y3RBbGwoInBhdGguc2NhdHRlcnB0cyIpLmRhdGEoaD9yOltdKTtBLmVudGVyKCkuaW5zZXJ0 KCJwYXRoIiwiOmZpcnN0LWNoaWxkIikuY2xhc3NlZCgic2NhdHRlcnB0cyIsITApLmF0dHIo InRyYW5zZm9ybSIsXyksQS5leGl0KCkucmVtb3ZlKCksQS5jYWxsKHMucG9pbnRTdHlsZSxp LGUpLGgmJihyWzBdLm1yYz0zKTt2YXIgTT1rLnNlbGVjdEFsbCgiZy5wb2ludHRleHQiKS5k YXRhKGc/cjpbXSk7TS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInBvaW50dGV4dCIs ITApLmFwcGVuZCgidGV4dCIpLmF0dHIoInRyYW5zZm9ybSIsXyksTS5leGl0KCkucmVtb3Zl KCksTS5zZWxlY3RBbGwoInRleHQiKS5jYWxsKHMudGV4dFBvaW50U3R5bGUsaSxlKX0pKS5l YWNoKChmdW5jdGlvbih0KXt2YXIgZT10WzBdLnRyYWNlLHI9bi5zZWxlY3QodGhpcykuc2Vs ZWN0KCJnLmxlZ2VuZHBvaW50cyIpLnNlbGVjdEFsbCgicGF0aC5sZWdlbmRjYW5kbGUiKS5k YXRhKGUudmlzaWJsZSYmImNhbmRsZXN0aWNrIj09PWUudHlwZT9bdCx0XTpbXSk7ci5lbnRl cigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQoImxlZ2VuZGNhbmRsZSIsITApLmF0dHIoImQi LChmdW5jdGlvbih0LGUpe3JldHVybiBlPyJNLTE1LDBILThNLTgsNlYtNkg4WiI6Ik0xNSww SDhNOCwtNlY2SC04WiJ9KSkuYXR0cigidHJhbnNmb3JtIixfKS5zdHlsZSgic3Ryb2tlLW1p dGVybGltaXQiLDEpLHIuZXhpdCgpLnJlbW92ZSgpLHIuZWFjaCgoZnVuY3Rpb24odCxyKXt2 YXIgaT1uLnNlbGVjdCh0aGlzKSxhPWVbcj8iaW5jcmVhc2luZyI6ImRlY3JlYXNpbmciXSxv PXcodm9pZCAwLGEubGluZSw1LDIpO2kuc3R5bGUoInN0cm9rZS13aWR0aCIsbysicHgiKS5j YWxsKGwuZmlsbCxhLmZpbGxjb2xvciksbyYmbC5zdHJva2UoaSxhLmxpbmUuY29sb3IpfSkp fSkpLmVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0udHJhY2Uscj1uLnNlbGVjdCh0aGlz KS5zZWxlY3QoImcubGVnZW5kcG9pbnRzIikuc2VsZWN0QWxsKCJwYXRoLmxlZ2VuZG9obGMi KS5kYXRhKGUudmlzaWJsZSYmIm9obGMiPT09ZS50eXBlP1t0LHRdOltdKTtyLmVudGVyKCku YXBwZW5kKCJwYXRoIikuY2xhc3NlZCgibGVnZW5kb2hsYyIsITApLmF0dHIoImQiLChmdW5j dGlvbih0LGUpe3JldHVybiBlPyJNLTE1LDBIME0tOCwtNlYwIjoiTTE1LDBIME04LDZWMCJ9 KSkuYXR0cigidHJhbnNmb3JtIixfKS5zdHlsZSgic3Ryb2tlLW1pdGVybGltaXQiLDEpLHIu ZXhpdCgpLnJlbW92ZSgpLHIuZWFjaCgoZnVuY3Rpb24odCxyKXt2YXIgaT1uLnNlbGVjdCh0 aGlzKSxhPWVbcj8iaW5jcmVhc2luZyI6ImRlY3JlYXNpbmciXSxvPXcodm9pZCAwLGEubGlu ZSw1LDIpO2kuc3R5bGUoImZpbGwiLCJub25lIikuY2FsbChzLmRhc2hMaW5lLGEubGluZS5k YXNoLG8pLG8mJmwuc3Ryb2tlKGksYS5saW5lLmNvbG9yKX0pKX0pKX19LHsiLi4vLi4vbGli Ijo1MDMsIi4uLy4uL3JlZ2lzdHJ5Ijo2MzgsIi4uLy4uL3RyYWNlcy9waWUvaGVscGVycyI6 OTA2LCIuLi8uLi90cmFjZXMvcGllL3N0eWxlX29uZSI6OTEyLCIuLi8uLi90cmFjZXMvc2Nh dHRlci9zdWJ0eXBlcyI6OTUyLCIuLi9jb2xvciI6MzY2LCIuLi9jb2xvcnNjYWxlL2hlbHBl cnMiOjM3NywiLi4vZHJhd2luZyI6Mzg4LCIuL2NvbnN0YW50cyI6NDE3LCJAcGxvdGx5L2Qz Ijo1OH1dLDQyNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt0KCIuL2NvbnN0YW50 cyIpO2UuZXhwb3J0cz17ZWRpdFR5cGU6Im1vZGViYXIiLG9yaWVudGF0aW9uOnt2YWxUeXBl OiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ2IiwiaCJdLGRmbHQ6ImgiLGVkaXRUeXBlOiJtb2Rl YmFyIn0sYmdjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJtb2RlYmFyIn0sY29s b3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToibW9kZWJhciJ9LGFjdGl2ZWNvbG9yOnt2 YWxUeXBlOiJjb2xvciIsZWRpdFR5cGU6Im1vZGViYXIifSx1aXJldmlzaW9uOnt2YWxUeXBl OiJhbnkiLGVkaXRUeXBlOiJub25lIn0sYWRkOnt2YWxUeXBlOiJzdHJpbmciLGFycmF5T2s6 ITAsZGZsdDoiIixlZGl0VHlwZToibW9kZWJhciJ9LHJlbW92ZTp7dmFsVHlwZToic3RyaW5n IixhcnJheU9rOiEwLGRmbHQ6IiIsZWRpdFR5cGU6Im1vZGViYXIifX19LHsiLi9jb25zdGFu dHMiOjQyN31dLDQyNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIu Li8uLi9yZWdpc3RyeSIpLGk9dCgiLi4vLi4vcGxvdHMvcGxvdHMiKSxhPXQoIi4uLy4uL3Bs b3RzL2NhcnRlc2lhbi9heGlzX2lkcyIpLG89dCgiLi4vLi4vZm9udHMvcGxvdGljb24iKSxz PXQoIi4uL3NoYXBlcy9kcmF3IikuZXJhc2VBY3RpdmVTaGFwZSxsPXQoIi4uLy4uL2xpYiIp LGM9bC5fLHU9ZS5leHBvcnRzPXt9O2Z1bmN0aW9uIGYodCxlKXt2YXIgcixpLG89ZS5jdXJy ZW50VGFyZ2V0LHM9by5nZXRBdHRyaWJ1dGUoImRhdGEtYXR0ciIpLGw9by5nZXRBdHRyaWJ1 dGUoImRhdGEtdmFsIil8fCEwLGM9dC5fZnVsbExheW91dCx1PXt9LGY9YS5saXN0KHQsbnVs bCwhMCksaD1jLl9jYXJ0ZXNpYW5TcGlrZXNFbmFibGVkO2lmKCJ6b29tIj09PXMpe3ZhciBw LGQ9ImluIj09PWw/LjU6MixtPSgxK2QpLzIsZz0oMS1kKS8yO2ZvcihpPTA7aTxmLmxlbmd0 aDtpKyspaWYoIShyPWZbaV0pLmZpeGVkcmFuZ2UpaWYocD1yLl9uYW1lLCJhdXRvIj09PWwp dVtwKyIuYXV0b3JhbmdlIl09ITA7ZWxzZSBpZigicmVzZXQiPT09bCl7aWYodm9pZCAwPT09 ci5fcmFuZ2VJbml0aWFsKXVbcCsiLmF1dG9yYW5nZSJdPSEwO2Vsc2V7dmFyIHY9ci5fcmFu Z2VJbml0aWFsLnNsaWNlKCk7dVtwKyIucmFuZ2VbMF0iXT12WzBdLHVbcCsiLnJhbmdlWzFd Il09dlsxXX12b2lkIDAhPT1yLl9zaG93U3Bpa2VJbml0aWFsJiYodVtwKyIuc2hvd3NwaWtl cyJdPXIuX3Nob3dTcGlrZUluaXRpYWwsIm9uIiE9PWh8fHIuX3Nob3dTcGlrZUluaXRpYWx8 fChoPSJvZmYiKSl9ZWxzZXt2YXIgeT1bci5yMmwoci5yYW5nZVswXSksci5yMmwoci5yYW5n ZVsxXSldLHg9W20qeVswXStnKnlbMV0sbSp5WzFdK2cqeVswXV07dVtwKyIucmFuZ2VbMF0i XT1yLmwycih4WzBdKSx1W3ArIi5yYW5nZVsxXSJdPXIubDJyKHhbMV0pfX1lbHNlImhvdmVy bW9kZSIhPT1zfHwieCIhPT1sJiYieSIhPT1sfHwobD1jLl9pc0hvcml6PyJ5IjoieCIsby5z ZXRBdHRyaWJ1dGUoImRhdGEtdmFsIixsKSksdVtzXT1sO2MuX2NhcnRlc2lhblNwaWtlc0Vu YWJsZWQ9aCxuLmNhbGwoIl9ndWlSZWxheW91dCIsdCx1KX1mdW5jdGlvbiBoKHQsZSl7Zm9y KHZhciByPWUuY3VycmVudFRhcmdldCxpPXIuZ2V0QXR0cmlidXRlKCJkYXRhLWF0dHIiKSxh PXIuZ2V0QXR0cmlidXRlKCJkYXRhLXZhbCIpfHwhMCxvPXQuX2Z1bGxMYXlvdXQuX3N1YnBs b3RzLmdsM2R8fFtdLHM9e30sbD1pLnNwbGl0KCIuIiksYz0wO2M8by5sZW5ndGg7YysrKXNb b1tjXSsiLiIrbFsxXV09YTt2YXIgdT0icGFuIj09PWE/YToiem9vbSI7cy5kcmFnbW9kZT11 LG4uY2FsbCgiX2d1aVJlbGF5b3V0Iix0LHMpfWZ1bmN0aW9uIHAodCxlKXtmb3IodmFyIHI9 ZS5jdXJyZW50VGFyZ2V0LmdldEF0dHJpYnV0ZSgiZGF0YS1hdHRyIiksaT0icmVzZXRMYXN0 U2F2ZSI9PT1yLGE9InJlc2V0RGVmYXVsdCI9PT1yLG89dC5fZnVsbExheW91dCxzPW8uX3N1 YnBsb3RzLmdsM2R8fFtdLGw9e30sYz0wO2M8cy5sZW5ndGg7YysrKXt2YXIgdSxmPXNbY10s aD1mKyIuY2FtZXJhIixwPWYrIi5hc3BlY3RyYXRpbyIsZD1mKyIuYXNwZWN0bW9kZSIsbT1v W2ZdLl9zY2VuZTtpPyhsW2grIi51cCJdPW0udmlld0luaXRpYWwudXAsbFtoKyIuZXllIl09 bS52aWV3SW5pdGlhbC5leWUsbFtoKyIuY2VudGVyIl09bS52aWV3SW5pdGlhbC5jZW50ZXIs dT0hMCk6YSYmKGxbaCsiLnVwIl09bnVsbCxsW2grIi5leWUiXT1udWxsLGxbaCsiLmNlbnRl ciJdPW51bGwsdT0hMCksdSYmKGxbcCsiLngiXT1tLnZpZXdJbml0aWFsLmFzcGVjdHJhdGlv LngsbFtwKyIueSJdPW0udmlld0luaXRpYWwuYXNwZWN0cmF0aW8ueSxsW3ArIi56Il09bS52 aWV3SW5pdGlhbC5hc3BlY3RyYXRpby56LGxbZF09bS52aWV3SW5pdGlhbC5hc3BlY3Rtb2Rl KX1uLmNhbGwoIl9ndWlSZWxheW91dCIsdCxsKX1mdW5jdGlvbiBkKHQsZSl7dmFyIHI9ZS5j dXJyZW50VGFyZ2V0LG49ci5fcHJldmlvdXNWYWwsaT10Ll9mdWxsTGF5b3V0LGE9aS5fc3Vi cGxvdHMuZ2wzZHx8W10sbz1bInhheGlzIiwieWF4aXMiLCJ6YXhpcyJdLHM9e30sbD17fTtp ZihuKWw9bixyLl9wcmV2aW91c1ZhbD1udWxsO2Vsc2V7Zm9yKHZhciBjPTA7YzxhLmxlbmd0 aDtjKyspe3ZhciB1PWFbY10sZj1pW3VdLGg9dSsiLmhvdmVybW9kZSI7c1toXT1mLmhvdmVy bW9kZSxsW2hdPSExO2Zvcih2YXIgcD0wO3A8MztwKyspe3ZhciBkPW9bcF0sbT11KyIuIitk KyIuc2hvd3NwaWtlcyI7bFttXT0hMSxzW21dPWZbZF0uc2hvd3NwaWtlc319ci5fcHJldmlv dXNWYWw9c31yZXR1cm4gbH1mdW5jdGlvbiBtKHQsZSl7Zm9yKHZhciByPWUuY3VycmVudFRh cmdldCxpPXIuZ2V0QXR0cmlidXRlKCJkYXRhLWF0dHIiKSxhPXIuZ2V0QXR0cmlidXRlKCJk YXRhLXZhbCIpfHwhMCxvPXQuX2Z1bGxMYXlvdXQscz1vLl9zdWJwbG90cy5nZW98fFtdLGw9 MDtsPHMubGVuZ3RoO2wrKyl7dmFyIGM9c1tsXSx1PW9bY107aWYoInpvb20iPT09aSl7dmFy IGY9dS5wcm9qZWN0aW9uLnNjYWxlLGg9ImluIj09PWE/MipmOi41KmY7bi5jYWxsKCJfZ3Vp UmVsYXlvdXQiLHQsYysiLnByb2plY3Rpb24uc2NhbGUiLGgpfX0icmVzZXQiPT09aSYmeCh0 LCJnZW8iKX1mdW5jdGlvbiBnKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQ7cmV0dXJuIWUuaG92 ZXJtb2RlJiYoZS5faGFzKCJjYXJ0ZXNpYW4iKT9lLl9pc0hvcml6PyJ5IjoieCI6ImNsb3Nl c3QiKX1mdW5jdGlvbiB2KHQpe3ZhciBlPWcodCk7bi5jYWxsKCJfZ3VpUmVsYXlvdXQiLHQs ImhvdmVybW9kZSIsZSl9ZnVuY3Rpb24geSh0LGUpe2Zvcih2YXIgcj1lLmN1cnJlbnRUYXJn ZXQuZ2V0QXR0cmlidXRlKCJkYXRhLXZhbCIpLGk9dC5fZnVsbExheW91dCxhPWkuX3N1YnBs b3RzLm1hcGJveHx8W10sbz17fSxzPTA7czxhLmxlbmd0aDtzKyspe3ZhciBsPWFbc10sYz1p W2xdLnpvb20sdT0iaW4iPT09cj8xLjA1KmM6Yy8xLjA1O29bbCsiLnpvb20iXT11fW4uY2Fs bCgiX2d1aVJlbGF5b3V0Iix0LG8pfWZ1bmN0aW9uIHgodCxlKXtmb3IodmFyIHI9dC5fZnVs bExheW91dCxpPXIuX3N1YnBsb3RzW2VdfHxbXSxhPXt9LG89MDtvPGkubGVuZ3RoO28rKylm b3IodmFyIHM9aVtvXSxsPXJbc10uX3N1YnBsb3Qudmlld0luaXRpYWwsYz1PYmplY3Qua2V5 cyhsKSx1PTA7dTxjLmxlbmd0aDt1Kyspe3ZhciBmPWNbdV07YVtzKyIuIitmXT1sW2ZdfW4u Y2FsbCgiX2d1aVJlbGF5b3V0Iix0LGEpfXUudG9JbWFnZT17bmFtZToidG9JbWFnZSIsdGl0 bGU6ZnVuY3Rpb24odCl7dmFyIGU9KHQuX2NvbnRleHQudG9JbWFnZUJ1dHRvbk9wdGlvbnN8 fHt9KS5mb3JtYXR8fCJwbmciO3JldHVybiBjKHQsInBuZyI9PT1lPyJEb3dubG9hZCBwbG90 IGFzIGEgcG5nIjoiRG93bmxvYWQgcGxvdCIpfSxpY29uOm8uY2FtZXJhLGNsaWNrOmZ1bmN0 aW9uKHQpe3ZhciBlPXQuX2NvbnRleHQudG9JbWFnZUJ1dHRvbk9wdGlvbnMscj17Zm9ybWF0 OmUuZm9ybWF0fHwicG5nIn07bC5ub3RpZmllcihjKHQsIlRha2luZyBzbmFwc2hvdCAtIHRo aXMgbWF5IHRha2UgYSBmZXcgc2Vjb25kcyIpLCJsb25nIiksInN2ZyIhPT1yLmZvcm1hdCYm bC5pc0lFKCkmJihsLm5vdGlmaWVyKGModCwiSUUgb25seSBzdXBwb3J0cyBzdmcuICBDaGFu Z2luZyBmb3JtYXQgdG8gc3ZnLiIpLCJsb25nIiksci5mb3JtYXQ9InN2ZyIpLFsiZmlsZW5h bWUiLCJ3aWR0aCIsImhlaWdodCIsInNjYWxlIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7dCBp biBlJiYoclt0XT1lW3RdKX0pKSxuLmNhbGwoImRvd25sb2FkSW1hZ2UiLHQscikudGhlbigo ZnVuY3Rpb24oZSl7bC5ub3RpZmllcihjKHQsIlNuYXBzaG90IHN1Y2NlZWRlZCIpKyIgLSAi K2UsImxvbmciKX0pKS5jYXRjaCgoZnVuY3Rpb24oKXtsLm5vdGlmaWVyKGModCwiU29ycnks IHRoZXJlIHdhcyBhIHByb2JsZW0gZG93bmxvYWRpbmcgeW91ciBzbmFwc2hvdCEiKSwibG9u ZyIpfSkpfX0sdS5zZW5kRGF0YVRvQ2xvdWQ9e25hbWU6InNlbmREYXRhVG9DbG91ZCIsdGl0 bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGModCwiRWRpdCBpbiBDaGFydCBTdHVkaW8iKX0saWNv bjpvLmRpc2ssY2xpY2s6ZnVuY3Rpb24odCl7aS5zZW5kRGF0YVRvQ2xvdWQodCl9fSx1LmVk aXRJbkNoYXJ0U3R1ZGlvPXtuYW1lOiJlZGl0SW5DaGFydFN0dWRpbyIsdGl0bGU6ZnVuY3Rp b24odCl7cmV0dXJuIGModCwiRWRpdCBpbiBDaGFydCBTdHVkaW8iKX0saWNvbjpvLnBlbmNp bCxjbGljazpmdW5jdGlvbih0KXtpLnNlbmREYXRhVG9DbG91ZCh0KX19LHUuem9vbTJkPXtu YW1lOiJ6b29tMmQiLF9jYXQ6Inpvb20iLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBjKHQs Ilpvb20iKX0sYXR0cjoiZHJhZ21vZGUiLHZhbDoiem9vbSIsaWNvbjpvLnpvb21ib3gsY2xp Y2s6Zn0sdS5wYW4yZD17bmFtZToicGFuMmQiLF9jYXQ6InBhbiIsdGl0bGU6ZnVuY3Rpb24o dCl7cmV0dXJuIGModCwiUGFuIil9LGF0dHI6ImRyYWdtb2RlIix2YWw6InBhbiIsaWNvbjpv LnBhbixjbGljazpmfSx1LnNlbGVjdDJkPXtuYW1lOiJzZWxlY3QyZCIsX2NhdDoic2VsZWN0 Iix0aXRsZTpmdW5jdGlvbih0KXtyZXR1cm4gYyh0LCJCb3ggU2VsZWN0Iil9LGF0dHI6ImRy YWdtb2RlIix2YWw6InNlbGVjdCIsaWNvbjpvLnNlbGVjdGJveCxjbGljazpmfSx1Lmxhc3Nv MmQ9e25hbWU6Imxhc3NvMmQiLF9jYXQ6Imxhc3NvIix0aXRsZTpmdW5jdGlvbih0KXtyZXR1 cm4gYyh0LCJMYXNzbyBTZWxlY3QiKX0sYXR0cjoiZHJhZ21vZGUiLHZhbDoibGFzc28iLGlj b246by5sYXNzbyxjbGljazpmfSx1LmRyYXdjbG9zZWRwYXRoPXtuYW1lOiJkcmF3Y2xvc2Vk cGF0aCIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGModCwiRHJhdyBjbG9zZWQgZnJlZWZv cm0iKX0sYXR0cjoiZHJhZ21vZGUiLHZhbDoiZHJhd2Nsb3NlZHBhdGgiLGljb246by5kcmF3 Y2xvc2VkcGF0aCxjbGljazpmfSx1LmRyYXdvcGVucGF0aD17bmFtZToiZHJhd29wZW5wYXRo Iix0aXRsZTpmdW5jdGlvbih0KXtyZXR1cm4gYyh0LCJEcmF3IG9wZW4gZnJlZWZvcm0iKX0s YXR0cjoiZHJhZ21vZGUiLHZhbDoiZHJhd29wZW5wYXRoIixpY29uOm8uZHJhd29wZW5wYXRo LGNsaWNrOmZ9LHUuZHJhd2xpbmU9e25hbWU6ImRyYXdsaW5lIix0aXRsZTpmdW5jdGlvbih0 KXtyZXR1cm4gYyh0LCJEcmF3IGxpbmUiKX0sYXR0cjoiZHJhZ21vZGUiLHZhbDoiZHJhd2xp bmUiLGljb246by5kcmF3bGluZSxjbGljazpmfSx1LmRyYXdyZWN0PXtuYW1lOiJkcmF3cmVj dCIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGModCwiRHJhdyByZWN0YW5nbGUiKX0sYXR0 cjoiZHJhZ21vZGUiLHZhbDoiZHJhd3JlY3QiLGljb246by5kcmF3cmVjdCxjbGljazpmfSx1 LmRyYXdjaXJjbGU9e25hbWU6ImRyYXdjaXJjbGUiLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVy biBjKHQsIkRyYXcgY2lyY2xlIil9LGF0dHI6ImRyYWdtb2RlIix2YWw6ImRyYXdjaXJjbGUi LGljb246by5kcmF3Y2lyY2xlLGNsaWNrOmZ9LHUuZXJhc2VzaGFwZT17bmFtZToiZXJhc2Vz aGFwZSIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGModCwiRXJhc2UgYWN0aXZlIHNoYXBl Iil9LGljb246by5lcmFzZXNoYXBlLGNsaWNrOnN9LHUuem9vbUluMmQ9e25hbWU6Inpvb21J bjJkIixfY2F0OiJ6b29taW4iLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBjKHQsIlpvb20g aW4iKX0sYXR0cjoiem9vbSIsdmFsOiJpbiIsaWNvbjpvLnpvb21fcGx1cyxjbGljazpmfSx1 Lnpvb21PdXQyZD17bmFtZToiem9vbU91dDJkIixfY2F0OiJ6b29tb3V0Iix0aXRsZTpmdW5j dGlvbih0KXtyZXR1cm4gYyh0LCJab29tIG91dCIpfSxhdHRyOiJ6b29tIix2YWw6Im91dCIs aWNvbjpvLnpvb21fbWludXMsY2xpY2s6Zn0sdS5hdXRvU2NhbGUyZD17bmFtZToiYXV0b1Nj YWxlMmQiLF9jYXQ6ImF1dG9zY2FsZSIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGModCwi QXV0b3NjYWxlIil9LGF0dHI6Inpvb20iLHZhbDoiYXV0byIsaWNvbjpvLmF1dG9zY2FsZSxj bGljazpmfSx1LnJlc2V0U2NhbGUyZD17bmFtZToicmVzZXRTY2FsZTJkIixfY2F0OiJyZXNl dHNjYWxlIix0aXRsZTpmdW5jdGlvbih0KXtyZXR1cm4gYyh0LCJSZXNldCBheGVzIil9LGF0 dHI6Inpvb20iLHZhbDoicmVzZXQiLGljb246by5ob21lLGNsaWNrOmZ9LHUuaG92ZXJDbG9z ZXN0Q2FydGVzaWFuPXtuYW1lOiJob3ZlckNsb3Nlc3RDYXJ0ZXNpYW4iLF9jYXQ6ImhvdmVy Y2xvc2VzdCIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGModCwiU2hvdyBjbG9zZXN0IGRh dGEgb24gaG92ZXIiKX0sYXR0cjoiaG92ZXJtb2RlIix2YWw6ImNsb3Nlc3QiLGljb246by50 b29sdGlwX2Jhc2ljLGdyYXZpdHk6Im5lIixjbGljazpmfSx1LmhvdmVyQ29tcGFyZUNhcnRl c2lhbj17bmFtZToiaG92ZXJDb21wYXJlQ2FydGVzaWFuIixfY2F0OiJob3ZlckNvbXBhcmUi LHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBjKHQsIkNvbXBhcmUgZGF0YSBvbiBob3ZlciIp fSxhdHRyOiJob3Zlcm1vZGUiLHZhbDpmdW5jdGlvbih0KXtyZXR1cm4gdC5fZnVsbExheW91 dC5faXNIb3Jpej8ieSI6IngifSxpY29uOm8udG9vbHRpcF9jb21wYXJlLGdyYXZpdHk6Im5l IixjbGljazpmfSx1Lnpvb20zZD17bmFtZToiem9vbTNkIixfY2F0OiJ6b29tIix0aXRsZTpm dW5jdGlvbih0KXtyZXR1cm4gYyh0LCJab29tIil9LGF0dHI6InNjZW5lLmRyYWdtb2RlIix2 YWw6Inpvb20iLGljb246by56b29tYm94LGNsaWNrOmh9LHUucGFuM2Q9e25hbWU6InBhbjNk IixfY2F0OiJwYW4iLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBjKHQsIlBhbiIpfSxhdHRy OiJzY2VuZS5kcmFnbW9kZSIsdmFsOiJwYW4iLGljb246by5wYW4sY2xpY2s6aH0sdS5vcmJp dFJvdGF0aW9uPXtuYW1lOiJvcmJpdFJvdGF0aW9uIix0aXRsZTpmdW5jdGlvbih0KXtyZXR1 cm4gYyh0LCJPcmJpdGFsIHJvdGF0aW9uIil9LGF0dHI6InNjZW5lLmRyYWdtb2RlIix2YWw6 Im9yYml0IixpY29uOm9bIjNkX3JvdGF0ZSJdLGNsaWNrOmh9LHUudGFibGVSb3RhdGlvbj17 bmFtZToidGFibGVSb3RhdGlvbiIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGModCwiVHVy bnRhYmxlIHJvdGF0aW9uIil9LGF0dHI6InNjZW5lLmRyYWdtb2RlIix2YWw6InR1cm50YWJs ZSIsaWNvbjpvWyJ6LWF4aXMiXSxjbGljazpofSx1LnJlc2V0Q2FtZXJhRGVmYXVsdDNkPXtu YW1lOiJyZXNldENhbWVyYURlZmF1bHQzZCIsX2NhdDoicmVzZXRDYW1lcmFEZWZhdWx0Iix0 aXRsZTpmdW5jdGlvbih0KXtyZXR1cm4gYyh0LCJSZXNldCBjYW1lcmEgdG8gZGVmYXVsdCIp fSxhdHRyOiJyZXNldERlZmF1bHQiLGljb246by5ob21lLGNsaWNrOnB9LHUucmVzZXRDYW1l cmFMYXN0U2F2ZTNkPXtuYW1lOiJyZXNldENhbWVyYUxhc3RTYXZlM2QiLF9jYXQ6InJlc2V0 Q2FtZXJhTGFzdFNhdmUiLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBjKHQsIlJlc2V0IGNh bWVyYSB0byBsYXN0IHNhdmUiKX0sYXR0cjoicmVzZXRMYXN0U2F2ZSIsaWNvbjpvLm1vdmll LGNsaWNrOnB9LHUuaG92ZXJDbG9zZXN0M2Q9e25hbWU6ImhvdmVyQ2xvc2VzdDNkIixfY2F0 OiJob3ZlcmNsb3Nlc3QiLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBjKHQsIlRvZ2dsZSBz aG93IGNsb3Nlc3QgZGF0YSBvbiBob3ZlciIpfSxhdHRyOiJob3Zlcm1vZGUiLHZhbDpudWxs LHRvZ2dsZTohMCxpY29uOm8udG9vbHRpcF9iYXNpYyxncmF2aXR5OiJuZSIsY2xpY2s6ZnVu Y3Rpb24odCxlKXt2YXIgcj1kKHQsZSk7bi5jYWxsKCJfZ3VpUmVsYXlvdXQiLHQscil9fSx1 Lnpvb21Jbkdlbz17bmFtZToiem9vbUluR2VvIixfY2F0OiJ6b29taW4iLHRpdGxlOmZ1bmN0 aW9uKHQpe3JldHVybiBjKHQsIlpvb20gaW4iKX0sYXR0cjoiem9vbSIsdmFsOiJpbiIsaWNv bjpvLnpvb21fcGx1cyxjbGljazptfSx1Lnpvb21PdXRHZW89e25hbWU6Inpvb21PdXRHZW8i LF9jYXQ6Inpvb21vdXQiLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBjKHQsIlpvb20gb3V0 Iil9LGF0dHI6Inpvb20iLHZhbDoib3V0IixpY29uOm8uem9vbV9taW51cyxjbGljazptfSx1 LnJlc2V0R2VvPXtuYW1lOiJyZXNldEdlbyIsX2NhdDoicmVzZXQiLHRpdGxlOmZ1bmN0aW9u KHQpe3JldHVybiBjKHQsIlJlc2V0Iil9LGF0dHI6InJlc2V0Iix2YWw6bnVsbCxpY29uOm8u YXV0b3NjYWxlLGNsaWNrOm19LHUuaG92ZXJDbG9zZXN0R2VvPXtuYW1lOiJob3ZlckNsb3Nl c3RHZW8iLF9jYXQ6ImhvdmVyY2xvc2VzdCIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGMo dCwiVG9nZ2xlIHNob3cgY2xvc2VzdCBkYXRhIG9uIGhvdmVyIil9LGF0dHI6ImhvdmVybW9k ZSIsdmFsOm51bGwsdG9nZ2xlOiEwLGljb246by50b29sdGlwX2Jhc2ljLGdyYXZpdHk6Im5l IixjbGljazp2fSx1LmhvdmVyQ2xvc2VzdEdsMmQ9e25hbWU6ImhvdmVyQ2xvc2VzdEdsMmQi LF9jYXQ6ImhvdmVyY2xvc2VzdCIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGModCwiVG9n Z2xlIHNob3cgY2xvc2VzdCBkYXRhIG9uIGhvdmVyIil9LGF0dHI6ImhvdmVybW9kZSIsdmFs Om51bGwsdG9nZ2xlOiEwLGljb246by50b29sdGlwX2Jhc2ljLGdyYXZpdHk6Im5lIixjbGlj azp2fSx1LmhvdmVyQ2xvc2VzdFBpZT17bmFtZToiaG92ZXJDbG9zZXN0UGllIixfY2F0OiJo b3ZlcmNsb3Nlc3QiLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBjKHQsIlRvZ2dsZSBzaG93 IGNsb3Nlc3QgZGF0YSBvbiBob3ZlciIpfSxhdHRyOiJob3Zlcm1vZGUiLHZhbDoiY2xvc2Vz dCIsaWNvbjpvLnRvb2x0aXBfYmFzaWMsZ3Jhdml0eToibmUiLGNsaWNrOnZ9LHUucmVzZXRW aWV3U2Fua2V5PXtuYW1lOiJyZXNldFNhbmtleUdyb3VwIix0aXRsZTpmdW5jdGlvbih0KXty ZXR1cm4gYyh0LCJSZXNldCB2aWV3Iil9LGljb246by5ob21lLGNsaWNrOmZ1bmN0aW9uKHQp e2Zvcih2YXIgZT17Im5vZGUuZ3JvdXBzIjpbXSwibm9kZS54IjpbXSwibm9kZS55IjpbXX0s cj0wO3I8dC5fZnVsbERhdGEubGVuZ3RoO3IrKyl7dmFyIGk9dC5fZnVsbERhdGFbcl0uX3Zp ZXdJbml0aWFsO2VbIm5vZGUuZ3JvdXBzIl0ucHVzaChpLm5vZGUuZ3JvdXBzLnNsaWNlKCkp LGVbIm5vZGUueCJdLnB1c2goaS5ub2RlLnguc2xpY2UoKSksZVsibm9kZS55Il0ucHVzaChp Lm5vZGUueS5zbGljZSgpKX1uLmNhbGwoInJlc3R5bGUiLHQsZSl9fSx1LnRvZ2dsZUhvdmVy PXtuYW1lOiJ0b2dnbGVIb3ZlciIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGModCwiVG9n Z2xlIHNob3cgY2xvc2VzdCBkYXRhIG9uIGhvdmVyIil9LGF0dHI6ImhvdmVybW9kZSIsdmFs Om51bGwsdG9nZ2xlOiEwLGljb246by50b29sdGlwX2Jhc2ljLGdyYXZpdHk6Im5lIixjbGlj azpmdW5jdGlvbih0LGUpe3ZhciByPWQodCxlKTtyLmhvdmVybW9kZT1nKHQpLG4uY2FsbCgi X2d1aVJlbGF5b3V0Iix0LHIpfX0sdS5yZXNldFZpZXdzPXtuYW1lOiJyZXNldFZpZXdzIix0 aXRsZTpmdW5jdGlvbih0KXtyZXR1cm4gYyh0LCJSZXNldCB2aWV3cyIpfSxpY29uOm8uaG9t ZSxjbGljazpmdW5jdGlvbih0LGUpe3ZhciByPWUuY3VycmVudFRhcmdldDtyLnNldEF0dHJp YnV0ZSgiZGF0YS1hdHRyIiwiem9vbSIpLHIuc2V0QXR0cmlidXRlKCJkYXRhLXZhbCIsInJl c2V0IiksZih0LGUpLHIuc2V0QXR0cmlidXRlKCJkYXRhLWF0dHIiLCJyZXNldExhc3RTYXZl IikscCh0LGUpLHgodCwiZ2VvIikseCh0LCJtYXBib3giKX19LHUudG9nZ2xlU3Bpa2VsaW5l cz17bmFtZToidG9nZ2xlU3Bpa2VsaW5lcyIsdGl0bGU6ZnVuY3Rpb24odCl7cmV0dXJuIGMo dCwiVG9nZ2xlIFNwaWtlIExpbmVzIil9LGljb246by5zcGlrZWxpbmUsYXR0cjoiX2NhcnRl c2lhblNwaWtlc0VuYWJsZWQiLHZhbDoib24iLGNsaWNrOmZ1bmN0aW9uKHQpe3ZhciBlPXQu X2Z1bGxMYXlvdXQscj1lLl9jYXJ0ZXNpYW5TcGlrZXNFbmFibGVkO2UuX2NhcnRlc2lhblNw aWtlc0VuYWJsZWQ9Im9uIj09PXI/Im9mZiI6Im9uIixuLmNhbGwoIl9ndWlSZWxheW91dCIs dCxmdW5jdGlvbih0KXtmb3IodmFyIGU9Im9uIj09PXQuX2Z1bGxMYXlvdXQuX2NhcnRlc2lh blNwaWtlc0VuYWJsZWQscj1hLmxpc3QodCxudWxsLCEwKSxuPXt9LGk9MDtpPHIubGVuZ3Ro O2krKyl7dmFyIG89cltpXTtuW28uX25hbWUrIi5zaG93c3Bpa2VzIl09ISFlfHxvLl9zaG93 U3Bpa2VJbml0aWFsfXJldHVybiBufSh0KSl9fSx1LnJlc2V0Vmlld01hcGJveD17bmFtZToi cmVzZXRWaWV3TWFwYm94IixfY2F0OiJyZXNldFZpZXciLHRpdGxlOmZ1bmN0aW9uKHQpe3Jl dHVybiBjKHQsIlJlc2V0IHZpZXciKX0sYXR0cjoicmVzZXQiLGljb246by5ob21lLGNsaWNr OmZ1bmN0aW9uKHQpe3godCwibWFwYm94Iil9fSx1Lnpvb21Jbk1hcGJveD17bmFtZToiem9v bUluTWFwYm94IixfY2F0OiJ6b29taW4iLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBjKHQs Ilpvb20gaW4iKX0sYXR0cjoiem9vbSIsdmFsOiJpbiIsaWNvbjpvLnpvb21fcGx1cyxjbGlj azp5fSx1Lnpvb21PdXRNYXBib3g9e25hbWU6Inpvb21PdXRNYXBib3giLF9jYXQ6Inpvb21v dXQiLHRpdGxlOmZ1bmN0aW9uKHQpe3JldHVybiBjKHQsIlpvb20gb3V0Iil9LGF0dHI6Inpv b20iLHZhbDoib3V0IixpY29uOm8uem9vbV9taW51cyxjbGljazp5fX0seyIuLi8uLi9mb250 cy9wbG90aWNvbiI6NDgyLCIuLi8uLi9saWIiOjUwMywiLi4vLi4vcGxvdHMvY2FydGVzaWFu L2F4aXNfaWRzIjo1NTgsIi4uLy4uL3Bsb3RzL3Bsb3RzIjo2MTksIi4uLy4uL3JlZ2lzdHJ5 Ijo2MzgsIi4uL3NoYXBlcy9kcmF3Ijo0NTB9XSw0Mjc6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiLi9idXR0b25zIiksaT1PYmplY3Qua2V5cyhuKSxhPVsiZHJh d2xpbmUiLCJkcmF3b3BlbnBhdGgiLCJkcmF3Y2xvc2VkcGF0aCIsImRyYXdjaXJjbGUiLCJk cmF3cmVjdCIsImVyYXNlc2hhcGUiXSxvPVsidjFob3Zlcm1vZGUiLCJob3ZlcmNsb3Nlc3Qi LCJob3ZlcmNvbXBhcmUiLCJ0b2dnbGVob3ZlciIsInRvZ2dsZXNwaWtlbGluZXMiXS5jb25j YXQoYSkscz1bXTtpLmZvckVhY2goKGZ1bmN0aW9uKHQpeyFmdW5jdGlvbih0KXtpZigtMT09 PW8uaW5kZXhPZih0Ll9jYXR8fHQubmFtZSkpe3ZhciBlPXQubmFtZSxyPSh0Ll9jYXR8fHQu bmFtZSkudG9Mb3dlckNhc2UoKTstMT09PXMuaW5kZXhPZihlKSYmcy5wdXNoKGUpLC0xPT09 cy5pbmRleE9mKHIpJiZzLnB1c2gocil9fShuW3RdKX0pKSxzLnNvcnQoKSxlLmV4cG9ydHM9 e0RSQVdfTU9ERVM6YSxiYWNrQnV0dG9uczpvLGZvcmVCdXR0b25zOnN9fSx7Ii4vYnV0dG9u cyI6NDI2fV0sNDI4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4u Ly4uL2xpYiIpLGk9dCgiLi4vY29sb3IiKSxhPXQoIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVt cGxhdGUiKSxvPXQoIi4vYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3Zh ciByPXQubW9kZWJhcnx8e30scz1hLm5ld0NvbnRhaW5lcihlLCJtb2RlYmFyIik7ZnVuY3Rp b24gbCh0LGUpe3JldHVybiBuLmNvZXJjZShyLHMsbyx0LGUpfWwoIm9yaWVudGF0aW9uIiks bCgiYmdjb2xvciIsaS5hZGRPcGFjaXR5KGUucGFwZXJfYmdjb2xvciwuNSkpO3ZhciBjPWku Y29udHJhc3QoaS5yZ2IoZS5tb2RlYmFyLmJnY29sb3IpKTtsKCJjb2xvciIsaS5hZGRPcGFj aXR5KGMsLjMpKSxsKCJhY3RpdmVjb2xvciIsaS5hZGRPcGFjaXR5KGMsLjcpKSxsKCJ1aXJl dmlzaW9uIixlLnVpcmV2aXNpb24pLGwoImFkZCIpLGwoInJlbW92ZSIpfX0seyIuLi8uLi9s aWIiOjUwMywiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NTQzLCIuLi9jb2xvciI6 MzY2LCIuL2F0dHJpYnV0ZXMiOjQyNX1dLDQyOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0IjtlLmV4cG9ydHM9e21vZHVsZVR5cGU6ImNvbXBvbmVudCIsbmFtZToibW9kZWJhciIs bGF5b3V0QXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlMYXlvdXREZWZhdWx0 czp0KCIuL2RlZmF1bHRzIiksbWFuYWdlOnQoIi4vbWFuYWdlIil9fSx7Ii4vYXR0cmlidXRl cyI6NDI1LCIuL2RlZmF1bHRzIjo0MjgsIi4vbWFuYWdlIjo0MzB9XSw0MzA6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4 aXNfaWRzIiksaT10KCIuLi8uLi90cmFjZXMvc2NhdHRlci9zdWJ0eXBlcyIpLGE9dCgiLi4v Li4vcmVnaXN0cnkiKSxvPXQoIi4uL2Z4L2hlbHBlcnMiKS5pc1VuaWZpZWRIb3ZlcixzPXQo Ii4vbW9kZWJhciIpLGw9dCgiLi9idXR0b25zIiksYz10KCIuL2NvbnN0YW50cyIpLkRSQVdf TU9ERVMsdT10KCIuLi8uLi9saWIiKS5leHRlbmREZWVwO2UuZXhwb3J0cz1mdW5jdGlvbih0 KXt2YXIgZT10Ll9mdWxsTGF5b3V0LHI9dC5fY29udGV4dCxmPWUuX21vZGVCYXI7aWYoci5k aXNwbGF5TW9kZUJhcnx8ci53YXRlcm1hcmspe2lmKCFBcnJheS5pc0FycmF5KHIubW9kZUJh ckJ1dHRvbnNUb1JlbW92ZSkpdGhyb3cgbmV3IEVycm9yKFsiKm1vZGVCYXJCdXR0b25zVG9S ZW1vdmUqIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyIsIm11c3QgYmUgYW4gYXJyYXkuIl0uam9p bigiICIpKTtpZighQXJyYXkuaXNBcnJheShyLm1vZGVCYXJCdXR0b25zVG9BZGQpKXRocm93 IG5ldyBFcnJvcihbIiptb2RlQmFyQnV0dG9uc1RvQWRkKiBjb25maWd1cmF0aW9uIG9wdGlv bnMiLCJtdXN0IGJlIGFuIGFycmF5LiJdLmpvaW4oIiAiKSk7dmFyIGgscD1yLm1vZGVCYXJC dXR0b25zO2g9QXJyYXkuaXNBcnJheShwKSYmcC5sZW5ndGg/ZnVuY3Rpb24odCl7Zm9yKHZh ciBlPXUoW10sdCkscj0wO3I8ZS5sZW5ndGg7cisrKWZvcih2YXIgbj1lW3JdLGk9MDtpPG4u bGVuZ3RoO2krKyl7dmFyIGE9bltpXTtpZigic3RyaW5nIj09dHlwZW9mIGEpe2lmKHZvaWQg MD09PWxbYV0pdGhyb3cgbmV3IEVycm9yKFsiKm1vZGVCYXJCdXR0b25zKiBjb25maWd1cmF0 aW9uIG9wdGlvbnMiLCJpbnZhbGlkIGJ1dHRvbiBuYW1lIl0uam9pbigiICIpKTtlW3JdW2ld PWxbYV19fXJldHVybiBlfShwKTohci5kaXNwbGF5TW9kZUJhciYmci53YXRlcm1hcms/W106 ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dCxyPXQuX2Z1bGxEYXRhLHM9dC5fY29u dGV4dDtmdW5jdGlvbiB1KHQsZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXtpZihlLnRvTG93 ZXJDYXNlKCk9PT10LnRvTG93ZXJDYXNlKCkpcmV0dXJuITB9ZWxzZXt2YXIgcj1lLm5hbWUs bj1lLl9jYXR8fGUubmFtZTtpZihyPT09dHx8bj09PXQudG9Mb3dlckNhc2UoKSlyZXR1cm4h MH1yZXR1cm4hMX12YXIgZj1lLm1vZGViYXIuYWRkOyJzdHJpbmciPT10eXBlb2YgZiYmKGY9 W2ZdKTt2YXIgaD1lLm1vZGViYXIucmVtb3ZlOyJzdHJpbmciPT10eXBlb2YgaCYmKGg9W2hd KTt2YXIgcD1zLm1vZGVCYXJCdXR0b25zVG9BZGQuY29uY2F0KGYuZmlsdGVyKChmdW5jdGlv bih0KXtmb3IodmFyIGU9MDtlPHMubW9kZUJhckJ1dHRvbnNUb1JlbW92ZS5sZW5ndGg7ZSsr KWlmKHUodCxzLm1vZGVCYXJCdXR0b25zVG9SZW1vdmVbZV0pKXJldHVybiExO3JldHVybiEw fSkpKSxkPXMubW9kZUJhckJ1dHRvbnNUb1JlbW92ZS5jb25jYXQoaC5maWx0ZXIoKGZ1bmN0 aW9uKHQpe2Zvcih2YXIgZT0wO2U8cy5tb2RlQmFyQnV0dG9uc1RvQWRkLmxlbmd0aDtlKysp aWYodSh0LHMubW9kZUJhckJ1dHRvbnNUb0FkZFtlXSkpcmV0dXJuITE7cmV0dXJuITB9KSkp LG09ZS5faGFzKCJjYXJ0ZXNpYW4iKSxnPWUuX2hhcygiZ2wzZCIpLHY9ZS5faGFzKCJnZW8i KSx5PWUuX2hhcygicGllIikseD1lLl9oYXMoImZ1bm5lbGFyZWEiKSxiPWUuX2hhcygiZ2wy ZCIpLF89ZS5faGFzKCJ0ZXJuYXJ5Iiksdz1lLl9oYXMoIm1hcGJveCIpLFQ9ZS5faGFzKCJw b2xhciIpLGs9ZS5faGFzKCJzbWl0aCIpLEE9ZS5faGFzKCJzYW5rZXkiKSxNPWZ1bmN0aW9u KHQpe2Zvcih2YXIgZT1uLmxpc3Qoe19mdWxsTGF5b3V0OnR9LG51bGwsITApLHI9MDtyPGUu bGVuZ3RoO3IrKylpZighZVtyXS5maXhlZHJhbmdlKXJldHVybiExO3JldHVybiEwfShlKSxT PW8oZS5ob3Zlcm1vZGUpLEU9W107ZnVuY3Rpb24gTCh0KXtpZih0Lmxlbmd0aCl7Zm9yKHZh ciBlPVtdLHI9MDtyPHQubGVuZ3RoO3IrKyl7Zm9yKHZhciBuPXRbcl0saT1sW25dLGE9aS5u YW1lLnRvTG93ZXJDYXNlKCksbz0oaS5fY2F0fHxpLm5hbWUpLnRvTG93ZXJDYXNlKCkscz0h MSxjPTA7YzxkLmxlbmd0aDtjKyspe3ZhciB1PWRbY10udG9Mb3dlckNhc2UoKTtpZih1PT09 YXx8dT09PW8pe3M9ITA7YnJlYWt9fXN8fGUucHVzaChsW25dKX1FLnB1c2goZSl9fXZhciBD PVsidG9JbWFnZSJdO3Muc2hvd0VkaXRJbkNoYXJ0U3R1ZGlvP0MucHVzaCgiZWRpdEluQ2hh cnRTdHVkaW8iKTpzLnNob3dTZW5kVG9DbG91ZCYmQy5wdXNoKCJzZW5kRGF0YVRvQ2xvdWQi KTtMKEMpO3ZhciBQPVtdLEk9W10sTz1bXSx6PVtdOyhtfHxifHx5fHx4fHxfKSt2K2crdytU K2s+MT8oST1bInRvZ2dsZUhvdmVyIl0sTz1bInJlc2V0Vmlld3MiXSk6dj8oUD1bInpvb21J bkdlbyIsInpvb21PdXRHZW8iXSxJPVsiaG92ZXJDbG9zZXN0R2VvIl0sTz1bInJlc2V0R2Vv Il0pOmc/KEk9WyJob3ZlckNsb3Nlc3QzZCJdLE89WyJyZXNldENhbWVyYURlZmF1bHQzZCIs InJlc2V0Q2FtZXJhTGFzdFNhdmUzZCJdKTp3PyhQPVsiem9vbUluTWFwYm94Iiwiem9vbU91 dE1hcGJveCJdLEk9WyJ0b2dnbGVIb3ZlciJdLE89WyJyZXNldFZpZXdNYXBib3giXSk6Yj9J PVsiaG92ZXJDbG9zZXN0R2wyZCJdOnk/ST1bImhvdmVyQ2xvc2VzdFBpZSJdOkE/KEk9WyJo b3ZlckNsb3Nlc3RDYXJ0ZXNpYW4iLCJob3ZlckNvbXBhcmVDYXJ0ZXNpYW4iXSxPPVsicmVz ZXRWaWV3U2Fua2V5Il0pOkk9WyJ0b2dnbGVIb3ZlciJdO20mJihJPVsidG9nZ2xlU3Bpa2Vs aW5lcyIsImhvdmVyQ2xvc2VzdENhcnRlc2lhbiIsImhvdmVyQ29tcGFyZUNhcnRlc2lhbiJd KTsoZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYoIWEudHJhY2VJ cyh0W2VdLCJub0hvdmVyIikpcmV0dXJuITE7cmV0dXJuITB9KHIpfHxTKSYmKEk9W10pOyFt JiYhYnx8TXx8KFA9WyJ6b29tSW4yZCIsInpvb21PdXQyZCIsImF1dG9TY2FsZTJkIl0sInJl c2V0Vmlld3MiIT09T1swXSYmKE89WyJyZXNldFNjYWxlMmQiXSkpO2c/ej1bInpvb20zZCIs InBhbjNkIiwib3JiaXRSb3RhdGlvbiIsInRhYmxlUm90YXRpb24iXToobXx8YikmJiFNfHxf P3o9WyJ6b29tMmQiLCJwYW4yZCJdOnd8fHY/ej1bInBhbjJkIl06VCYmKHo9WyJ6b29tMmQi XSk7KGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0hMSxyPTA7cjx0Lmxlbmd0aCYmIWU7cisrKXt2 YXIgbj10W3JdO24uX21vZHVsZSYmbi5fbW9kdWxlLnNlbGVjdFBvaW50cyYmKGEudHJhY2VJ cyhuLCJzY2F0dGVyLWxpa2UiKT8oaS5oYXNNYXJrZXJzKG4pfHxpLmhhc1RleHQobikpJiYo ZT0hMCk6YS50cmFjZUlzKG4sImJveC12aW9saW4iKSYmImFsbCIhPT1uLmJveHBvaW50cyYm ImFsbCIhPT1uLnBvaW50c3x8KGU9ITApKX1yZXR1cm4gZX0pKHIpJiZ6LnB1c2goInNlbGVj dDJkIiwibGFzc28yZCIpO3ZhciBEPVtdLFI9ZnVuY3Rpb24odCl7LTE9PT1ELmluZGV4T2Yo dCkmJi0xIT09SS5pbmRleE9mKHQpJiZELnB1c2godCl9O2lmKEFycmF5LmlzQXJyYXkocCkp e2Zvcih2YXIgRj1bXSxCPTA7QjxwLmxlbmd0aDtCKyspe3ZhciBOPXBbQl07InN0cmluZyI9 PXR5cGVvZiBOPyhOPU4udG9Mb3dlckNhc2UoKSwtMSE9PWMuaW5kZXhPZihOKT8oZS5faGFz KCJtYXBib3giKXx8ZS5faGFzKCJjYXJ0ZXNpYW4iKSkmJnoucHVzaChOKToidG9nZ2xlc3Bp a2VsaW5lcyI9PT1OP1IoInRvZ2dsZVNwaWtlbGluZXMiKToidG9nZ2xlaG92ZXIiPT09Tj9S KCJ0b2dnbGVIb3ZlciIpOiJob3ZlcmNvbXBhcmUiPT09Tj9SKCJob3ZlckNvbXBhcmVDYXJ0 ZXNpYW4iKToiaG92ZXJjbG9zZXN0Ij09PU4/KFIoImhvdmVyQ2xvc2VzdENhcnRlc2lhbiIp LFIoImhvdmVyQ2xvc2VzdEdlbyIpLFIoImhvdmVyQ2xvc2VzdDNkIiksUigiaG92ZXJDbG9z ZXN0R2wyZCIpLFIoImhvdmVyQ2xvc2VzdFBpZSIpKToidjFob3Zlcm1vZGUiPT09TiYmKFIo InRvZ2dsZUhvdmVyIiksUigiaG92ZXJDbG9zZXN0Q2FydGVzaWFuIiksUigiaG92ZXJDb21w YXJlQ2FydGVzaWFuIiksUigiaG92ZXJDbG9zZXN0R2VvIiksUigiaG92ZXJDbG9zZXN0M2Qi KSxSKCJob3ZlckNsb3Nlc3RHbDJkIiksUigiaG92ZXJDbG9zZXN0UGllIikpKTpGLnB1c2go Til9cD1GfXJldHVybiBMKHopLEwoUC5jb25jYXQoTykpLEwoRCksZnVuY3Rpb24odCxlKXtp ZihlLmxlbmd0aClpZihBcnJheS5pc0FycmF5KGVbMF0pKWZvcih2YXIgcj0wO3I8ZS5sZW5n dGg7cisrKXQucHVzaChlW3JdKTtlbHNlIHQucHVzaChlKTtyZXR1cm4gdH0oRSxwKX0odCks Zj9mLnVwZGF0ZSh0LGgpOmUuX21vZGVCYXI9cyh0LGgpfWVsc2UgZiYmKGYuZGVzdHJveSgp LGRlbGV0ZSBlLl9tb2RlQmFyKX19LHsiLi4vLi4vbGliIjo1MDMsIi4uLy4uL3Bsb3RzL2Nh cnRlc2lhbi9heGlzX2lkcyI6NTU4LCIuLi8uLi9yZWdpc3RyeSI6NjM4LCIuLi8uLi90cmFj ZXMvc2NhdHRlci9zdWJ0eXBlcyI6OTUyLCIuLi9meC9oZWxwZXJzIjo0MDIsIi4vYnV0dG9u cyI6NDI2LCIuL2NvbnN0YW50cyI6NDI3LCIuL21vZGViYXIiOjQzMX1dLDQzMTpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJAcGxvdGx5L2QzIiksaT10KCJmYXN0 LWlzbnVtZXJpYyIpLGE9dCgiLi4vLi4vbGliIiksbz10KCIuLi8uLi9mb250cy9wbG90aWNv biIpLHM9dCgiLi4vLi4vdmVyc2lvbiIpLnZlcnNpb24sbD1uZXcgRE9NUGFyc2VyO2Z1bmN0 aW9uIGModCl7dGhpcy5jb250YWluZXI9dC5jb250YWluZXIsdGhpcy5lbGVtZW50PWRvY3Vt ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMudXBkYXRlKHQuZ3JhcGhJbmZvLHQuYnV0 dG9ucyksdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KX12YXIgdT1j LnByb3RvdHlwZTt1LnVwZGF0ZT1mdW5jdGlvbih0LGUpe3RoaXMuZ3JhcGhJbmZvPXQ7dmFy IHI9dGhpcy5ncmFwaEluZm8uX2NvbnRleHQsbj10aGlzLmdyYXBoSW5mby5fZnVsbExheW91 dCxpPSJtb2RlYmFyLSIrbi5fdWlkO3RoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImlkIixp KSx0aGlzLl91aWQ9aSx0aGlzLmVsZW1lbnQuY2xhc3NOYW1lPSJtb2RlYmFyIiwiaG92ZXIi PT09ci5kaXNwbGF5TW9kZUJhciYmKHRoaXMuZWxlbWVudC5jbGFzc05hbWUrPSIgbW9kZWJh ci0taG92ZXIgZWFzZS1iZyIpLCJ2Ij09PW4ubW9kZWJhci5vcmllbnRhdGlvbiYmKHRoaXMu ZWxlbWVudC5jbGFzc05hbWUrPSIgdmVydGljYWwiLGU9ZS5yZXZlcnNlKCkpO3ZhciBvPW4u bW9kZWJhcixzPSJob3ZlciI9PT1yLmRpc3BsYXlNb2RlQmFyPyIuanMtcGxvdGx5LXBsb3Qg LnBsb3RseTpob3ZlciAiOiIiO2EuZGVsZXRlUmVsYXRlZFN0eWxlUnVsZShpKSxhLmFkZFJl bGF0ZWRTdHlsZVJ1bGUoaSxzKyIjIitpKyIgLm1vZGViYXItZ3JvdXAiLCJiYWNrZ3JvdW5k LWNvbG9yOiAiK28uYmdjb2xvciksYS5hZGRSZWxhdGVkU3R5bGVSdWxlKGksIiMiK2krIiAu bW9kZWJhci1idG4gLmljb24gcGF0aCIsImZpbGw6ICIrby5jb2xvciksYS5hZGRSZWxhdGVk U3R5bGVSdWxlKGksIiMiK2krIiAubW9kZWJhci1idG46aG92ZXIgLmljb24gcGF0aCIsImZp bGw6ICIrby5hY3RpdmVjb2xvciksYS5hZGRSZWxhdGVkU3R5bGVSdWxlKGksIiMiK2krIiAu bW9kZWJhci1idG4uYWN0aXZlIC5pY29uIHBhdGgiLCJmaWxsOiAiK28uYWN0aXZlY29sb3Ip O3ZhciBsPSF0aGlzLmhhc0J1dHRvbnMoZSksYz10aGlzLmhhc0xvZ28hPT1yLmRpc3BsYXls b2dvLHU9dGhpcy5sb2NhbGUhPT1yLmxvY2FsZTtpZih0aGlzLmxvY2FsZT1yLmxvY2FsZSwo bHx8Y3x8dSkmJih0aGlzLnJlbW92ZUFsbEJ1dHRvbnMoKSx0aGlzLnVwZGF0ZUJ1dHRvbnMo ZSksci53YXRlcm1hcmt8fHIuZGlzcGxheWxvZ28pKXt2YXIgZj10aGlzLmdldExvZ28oKTty LndhdGVybWFyayYmKGYuY2xhc3NOYW1lPWYuY2xhc3NOYW1lKyIgd2F0ZXJtYXJrIiksInYi PT09bi5tb2RlYmFyLm9yaWVudGF0aW9uP3RoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUoZix0 aGlzLmVsZW1lbnQuY2hpbGROb2Rlc1swXSk6dGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGYp LHRoaXMuaGFzTG9nbz0hMH10aGlzLnVwZGF0ZUFjdGl2ZUJ1dHRvbigpfSx1LnVwZGF0ZUJ1 dHRvbnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLmJ1dHRvbnM9dCx0aGlzLmJ1dHRv bkVsZW1lbnRzPVtdLHRoaXMuYnV0dG9uc05hbWVzPVtdLHRoaXMuYnV0dG9ucy5mb3JFYWNo KChmdW5jdGlvbih0KXt2YXIgcj1lLmNyZWF0ZUdyb3VwKCk7dC5mb3JFYWNoKChmdW5jdGlv bih0KXt2YXIgbj10Lm5hbWU7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJtdXN0IHByb3ZpZGUg YnV0dG9uICduYW1lJyBpbiBidXR0b24gY29uZmlnIik7aWYoLTEhPT1lLmJ1dHRvbnNOYW1l cy5pbmRleE9mKG4pKXRocm93IG5ldyBFcnJvcigiYnV0dG9uIG5hbWUgJyIrbisiJyBpcyB0 YWtlbiIpO2UuYnV0dG9uc05hbWVzLnB1c2gobik7dmFyIGk9ZS5jcmVhdGVCdXR0b24odCk7 ZS5idXR0b25FbGVtZW50cy5wdXNoKGkpLHIuYXBwZW5kQ2hpbGQoaSl9KSksZS5lbGVtZW50 LmFwcGVuZENoaWxkKHIpfSkpfSx1LmNyZWF0ZUdyb3VwPWZ1bmN0aW9uKCl7dmFyIHQ9ZG9j dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHQuY2xhc3NOYW1lPSJtb2RlYmFy LWdyb3VwIix0fSx1LmNyZWF0ZUJ1dHRvbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLHI9ZG9j dW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO3Iuc2V0QXR0cmlidXRlKCJyZWwiLCJ0b29sdGlw Iiksci5jbGFzc05hbWU9Im1vZGViYXItYnRuIjt2YXIgaT10LnRpdGxlO3ZvaWQgMD09PWk/ aT10Lm5hbWU6ImZ1bmN0aW9uIj09dHlwZW9mIGkmJihpPWkodGhpcy5ncmFwaEluZm8pKSwo aXx8MD09PWkpJiZyLnNldEF0dHJpYnV0ZSgiZGF0YS10aXRsZSIsaSksdm9pZCAwIT09dC5h dHRyJiZyLnNldEF0dHJpYnV0ZSgiZGF0YS1hdHRyIix0LmF0dHIpO3ZhciBhPXQudmFsO2lm KHZvaWQgMCE9PWEmJigiZnVuY3Rpb24iPT10eXBlb2YgYSYmKGE9YSh0aGlzLmdyYXBoSW5m bykpLHIuc2V0QXR0cmlidXRlKCJkYXRhLXZhbCIsYSkpLCJmdW5jdGlvbiIhPXR5cGVvZiB0 LmNsaWNrKXRocm93IG5ldyBFcnJvcigibXVzdCBwcm92aWRlIGJ1dHRvbiAnY2xpY2snIGZ1 bmN0aW9uIGluIGJ1dHRvbiBjb25maWciKTtyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwo ZnVuY3Rpb24ocil7dC5jbGljayhlLmdyYXBoSW5mbyxyKSxlLnVwZGF0ZUFjdGl2ZUJ1dHRv bihyLmN1cnJlbnRUYXJnZXQpfSkpLHIuc2V0QXR0cmlidXRlKCJkYXRhLXRvZ2dsZSIsdC50 b2dnbGV8fCExKSx0LnRvZ2dsZSYmbi5zZWxlY3QocikuY2xhc3NlZCgiYWN0aXZlIiwhMCk7 dmFyIHM9dC5pY29uO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBzP3IuYXBwZW5kQ2hpbGQo cygpKTpyLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlSWNvbihzfHxvLnF1ZXN0aW9uKSksci5z ZXRBdHRyaWJ1dGUoImRhdGEtZ3Jhdml0eSIsdC5ncmF2aXR5fHwibiIpLHJ9LHUuY3JlYXRl SWNvbj1mdW5jdGlvbih0KXt2YXIgZSxyPWkodC5oZWlnaHQpP051bWJlcih0LmhlaWdodCk6 dC5hc2NlbnQtdC5kZXNjZW50LG49Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjtpZih0 LnBhdGgpeyhlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuLCJzdmciKSkuc2V0QXR0cmli dXRlKCJ2aWV3Qm94IixbMCwwLHQud2lkdGgscl0uam9pbigiICIpKSxlLnNldEF0dHJpYnV0 ZSgiY2xhc3MiLCJpY29uIik7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG4sInBh dGgiKTthLnNldEF0dHJpYnV0ZSgiZCIsdC5wYXRoKSx0LnRyYW5zZm9ybT9hLnNldEF0dHJp YnV0ZSgidHJhbnNmb3JtIix0LnRyYW5zZm9ybSk6dm9pZCAwIT09dC5hc2NlbnQmJmEuc2V0 QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCJtYXRyaXgoMSAwIDAgLTEgMCAiK3QuYXNjZW50KyIp IiksZS5hcHBlbmRDaGlsZChhKX10LnN2ZyYmKGU9bC5wYXJzZUZyb21TdHJpbmcodC5zdmcs ImFwcGxpY2F0aW9uL3htbCIpLmNoaWxkTm9kZXNbMF0pO3JldHVybiBlLnNldEF0dHJpYnV0 ZSgiaGVpZ2h0IiwiMWVtIiksZS5zZXRBdHRyaWJ1dGUoIndpZHRoIiwiMWVtIiksZX0sdS51 cGRhdGVBY3RpdmVCdXR0b249ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5ncmFwaEluZm8uX2Z1 bGxMYXlvdXQscj12b2lkIDAhPT10P3QuZ2V0QXR0cmlidXRlKCJkYXRhLWF0dHIiKTpudWxs O3RoaXMuYnV0dG9uRWxlbWVudHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGk9dC5nZXRB dHRyaWJ1dGUoImRhdGEtdmFsIil8fCEwLG89dC5nZXRBdHRyaWJ1dGUoImRhdGEtYXR0ciIp LHM9InRydWUiPT09dC5nZXRBdHRyaWJ1dGUoImRhdGEtdG9nZ2xlIiksbD1uLnNlbGVjdCh0 KTtpZihzKW89PT1yJiZsLmNsYXNzZWQoImFjdGl2ZSIsIWwuY2xhc3NlZCgiYWN0aXZlIikp O2Vsc2V7dmFyIGM9bnVsbD09PW8/bzphLm5lc3RlZFByb3BlcnR5KGUsbykuZ2V0KCk7bC5j bGFzc2VkKCJhY3RpdmUiLGM9PT1pKX19KSl9LHUuaGFzQnV0dG9ucz1mdW5jdGlvbih0KXt2 YXIgZT10aGlzLmJ1dHRvbnM7aWYoIWUpcmV0dXJuITE7aWYodC5sZW5ndGghPT1lLmxlbmd0 aClyZXR1cm4hMTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoOysrcil7aWYodFtyXS5sZW5ndGgh PT1lW3JdLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIG49MDtuPHRbcl0ubGVuZ3RoO24rKylp Zih0W3JdW25dLm5hbWUhPT1lW3JdW25dLm5hbWUpcmV0dXJuITF9cmV0dXJuITB9LHUuZ2V0 TG9nbz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuY3JlYXRlR3JvdXAoKSxlPWRvY3VtZW50LmNy ZWF0ZUVsZW1lbnQoImEiKTtyZXR1cm4gZS5ocmVmPSJodHRwczovL3Bsb3RseS5jb20vIixl LnRhcmdldD0iX2JsYW5rIixlLnNldEF0dHJpYnV0ZSgiZGF0YS10aXRsZSIsYS5fKHRoaXMu Z3JhcGhJbmZvLCJQcm9kdWNlZCB3aXRoIFBsb3RseS5qcyIpKyIgKHYiK3MrIikiKSxlLmNs YXNzTmFtZT0ibW9kZWJhci1idG4gcGxvdGx5anNpY29uIG1vZGViYXItYnRuLS1sb2dvIixl LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlSWNvbihvLm5ld3Bsb3RseWxvZ28pKSx0LmFwcGVu ZENoaWxkKGUpLHR9LHUucmVtb3ZlQWxsQnV0dG9ucz1mdW5jdGlvbigpe2Zvcig7dGhpcy5l bGVtZW50LmZpcnN0Q2hpbGQ7KXRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLmVsZW1l bnQuZmlyc3RDaGlsZCk7dGhpcy5oYXNMb2dvPSExfSx1LmRlc3Ryb3k9ZnVuY3Rpb24oKXth LnJlbW92ZUVsZW1lbnQodGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcigiLm1vZGViYXIi KSksYS5kZWxldGVSZWxhdGVkU3R5bGVSdWxlKHRoaXMuX3VpZCl9LGUuZXhwb3J0cz1mdW5j dGlvbih0LGUpe3ZhciByPXQuX2Z1bGxMYXlvdXQsaT1uZXcgYyh7Z3JhcGhJbmZvOnQsY29u dGFpbmVyOnIuX21vZGViYXJkaXYubm9kZSgpLGJ1dHRvbnM6ZX0pO3JldHVybiByLl9wcml2 YXRlcGxvdCYmbi5zZWxlY3QoaS5lbGVtZW50KS5hcHBlbmQoInNwYW4iKS5jbGFzc2VkKCJi YWRnZS1wcml2YXRlIGZsb2F0LS1sZWZ0IiwhMCkudGV4dCgiUFJJVkFURSIpLGl9fSx7Ii4u Ly4uL2ZvbnRzL3Bsb3RpY29uIjo0ODIsIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi92ZXJzaW9u IjoxMTIzLCJAcGxvdGx5L2QzIjo1OCwiZmFzdC1pc251bWVyaWMiOjE5MH1dLDQzMjpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9mb250X2F0 dHJpYnV0ZXMiKSxpPXQoIi4uL2NvbG9yL2F0dHJpYnV0ZXMiKSxhPSgwLHQoIi4uLy4uL3Bs b3RfYXBpL3Bsb3RfdGVtcGxhdGUiKS50ZW1wbGF0ZWRBcnJheSkoImJ1dHRvbiIse3Zpc2li bGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6InBsb3QifSxzdGVwOnt2 YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJtb250aCIsInllYXIiLCJkYXkiLCJob3Vy IiwibWludXRlIiwic2Vjb25kIiwiYWxsIl0sZGZsdDoibW9udGgiLGVkaXRUeXBlOiJwbG90 In0sc3RlcG1vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImJhY2t3YXJkIiwi dG9kYXRlIl0sZGZsdDoiYmFja3dhcmQiLGVkaXRUeXBlOiJwbG90In0sY291bnQ6e3ZhbFR5 cGU6Im51bWJlciIsbWluOjAsZGZsdDoxLGVkaXRUeXBlOiJwbG90In0sbGFiZWw6e3ZhbFR5 cGU6InN0cmluZyIsZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToicGxvdCJ9KTtlLmV4cG9y dHM9e3Zpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGVkaXRUeXBlOiJwbG90In0sYnV0dG9u czphLHg6e3ZhbFR5cGU6Im51bWJlciIsbWluOi0yLG1heDozLGVkaXRUeXBlOiJwbG90In0s eGFuY2hvcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiYXV0byIsImxlZnQiLCJj ZW50ZXIiLCJyaWdodCJdLGRmbHQ6ImxlZnQiLGVkaXRUeXBlOiJwbG90In0seTp7dmFsVHlw ZToibnVtYmVyIixtaW46LTIsbWF4OjMsZWRpdFR5cGU6InBsb3QifSx5YW5jaG9yOnt2YWxU eXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhdXRvIiwidG9wIiwibWlkZGxlIiwiYm90dG9t Il0sZGZsdDoiYm90dG9tIixlZGl0VHlwZToicGxvdCJ9LGZvbnQ6bih7ZWRpdFR5cGU6InBs b3QifSksYmdjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6aS5saWdodExpbmUsZWRpdFR5 cGU6InBsb3QifSxhY3RpdmVjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJwbG90 In0sYm9yZGVyY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmkuZGVmYXVsdExpbmUsZWRp dFR5cGU6InBsb3QifSxib3JkZXJ3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0 OjAsZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToicGxvdCJ9fSx7Ii4uLy4uL3Bsb3RfYXBp L3Bsb3RfdGVtcGxhdGUiOjU0MywiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIjo1ODUs Ii4uL2NvbG9yL2F0dHJpYnV0ZXMiOjM2NX1dLDQzMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0IjtlLmV4cG9ydHM9e3lQYWQ6LjAyLG1pbkJ1dHRvbldpZHRoOjMwLHJ4OjMscnk6 MyxsaWdodEFtb3VudDoyNSxkYXJrQW1vdW50OjEwfX0se31dLDQzNDpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4uL2NvbG9yIiks YT10KCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIiksbz10KCIuLi8uLi9wbG90cy9h cnJheV9jb250YWluZXJfZGVmYXVsdHMiKSxzPXQoIi4vYXR0cmlidXRlcyIpLGw9dCgiLi9j b25zdGFudHMiKTtmdW5jdGlvbiBjKHQsZSxyLGkpe3ZhciBhPWkuY2FsZW5kYXI7ZnVuY3Rp b24gbyhyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUscy5idXR0b25zLHIsaSl9aWYobygidmlz aWJsZSIpKXt2YXIgbD1vKCJzdGVwIik7ImFsbCIhPT1sJiYoIWF8fCJncmVnb3JpYW4iPT09 YXx8Im1vbnRoIiE9PWwmJiJ5ZWFyIiE9PWw/bygic3RlcG1vZGUiKTplLnN0ZXBtb2RlPSJi YWNrd2FyZCIsbygiY291bnQiKSksbygibGFiZWwiKX19ZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSxyLHUsZil7dmFyIGg9dC5yYW5nZXNlbGVjdG9yfHx7fSxwPWEubmV3Q29udGFpbmVyKGUs InJhbmdlc2VsZWN0b3IiKTtmdW5jdGlvbiBkKHQsZSl7cmV0dXJuIG4uY29lcmNlKGgscCxz LHQsZSl9aWYoZCgidmlzaWJsZSIsbyhoLHAse25hbWU6ImJ1dHRvbnMiLGhhbmRsZUl0ZW1E ZWZhdWx0czpjLGNhbGVuZGFyOmZ9KS5sZW5ndGg+MCkpe3ZhciBtPWZ1bmN0aW9uKHQsZSxy KXtmb3IodmFyIG49ci5maWx0ZXIoKGZ1bmN0aW9uKHIpe3JldHVybiBlW3JdLmFuY2hvcj09 PXQuX2lkfSkpLGk9MCxhPTA7YTxuLmxlbmd0aDthKyspe3ZhciBvPWVbblthXV0uZG9tYWlu O28mJihpPU1hdGgubWF4KG9bMV0saSkpfXJldHVyblt0LmRvbWFpblswXSxpK2wueVBhZF19 KGUscix1KTtkKCJ4IixtWzBdKSxkKCJ5IixtWzFdKSxuLm5vbmVPckFsbCh0LGUsWyJ4Iiwi eSJdKSxkKCJ4YW5jaG9yIiksZCgieWFuY2hvciIpLG4uY29lcmNlRm9udChkLCJmb250Iixy LmZvbnQpO3ZhciBnPWQoImJnY29sb3IiKTtkKCJhY3RpdmVjb2xvciIsaS5jb250cmFzdChn LGwubGlnaHRBbW91bnQsbC5kYXJrQW1vdW50KSksZCgiYm9yZGVyY29sb3IiKSxkKCJib3Jk ZXJ3aWR0aCIpfX19LHsiLi4vLi4vbGliIjo1MDMsIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVt cGxhdGUiOjU0MywiLi4vLi4vcGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIjo1NDks Ii4uL2NvbG9yIjozNjYsIi4vYXR0cmlidXRlcyI6NDMyLCIuL2NvbnN0YW50cyI6NDMzfV0s NDM1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIkBwbG90bHkvZDMi KSxpPXQoIi4uLy4uL3JlZ2lzdHJ5IiksYT10KCIuLi8uLi9wbG90cy9wbG90cyIpLG89dCgi Li4vY29sb3IiKSxzPXQoIi4uL2RyYXdpbmciKSxsPXQoIi4uLy4uL2xpYiIpLGM9bC5zdHJU cmFuc2xhdGUsdT10KCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiKSxmPXQoIi4uLy4uL3Bs b3RzL2NhcnRlc2lhbi9heGlzX2lkcyIpLGg9dCgiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVu dCIpLHA9aC5MSU5FX1NQQUNJTkcsZD1oLkZST01fVEwsbT1oLkZST01fQlIsZz10KCIuL2Nv bnN0YW50cyIpLHY9dCgiLi9nZXRfdXBkYXRlX29iamVjdCIpO2Z1bmN0aW9uIHkodCl7cmV0 dXJuIHQuX2lkfWZ1bmN0aW9uIHgodCxlLHIpe3ZhciBuPWwuZW5zdXJlU2luZ2xlKHQsInJl Y3QiLCJzZWxlY3Rvci1yZWN0IiwoZnVuY3Rpb24odCl7dC5hdHRyKCJzaGFwZS1yZW5kZXJp bmciLCJjcmlzcEVkZ2VzIil9KSk7bi5hdHRyKHtyeDpnLnJ4LHJ5Omcucnl9KSxuLmNhbGwo by5zdHJva2UsZS5ib3JkZXJjb2xvcikuY2FsbChvLmZpbGwsZnVuY3Rpb24odCxlKXtyZXR1 cm4gZS5faXNBY3RpdmV8fGUuX2lzSG92ZXJlZD90LmFjdGl2ZWNvbG9yOnQuYmdjb2xvcn0o ZSxyKSkuc3R5bGUoInN0cm9rZS13aWR0aCIsZS5ib3JkZXJ3aWR0aCsicHgiKX1mdW5jdGlv biBiKHQsZSxyLG4pe2wuZW5zdXJlU2luZ2xlKHQsInRleHQiLCJzZWxlY3Rvci10ZXh0Iiwo ZnVuY3Rpb24odCl7dC5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpfSkpLmNhbGwocy5m b250LGUuZm9udCkudGV4dChmdW5jdGlvbih0LGUpe2lmKHQubGFiZWwpcmV0dXJuIGU/bC50 ZW1wbGF0ZVN0cmluZyh0LmxhYmVsLGUpOnQubGFiZWw7cmV0dXJuImFsbCI9PT10LnN0ZXA/ ImFsbCI6dC5jb3VudCt0LnN0ZXAuY2hhckF0KDApfShyLG4uX2Z1bGxMYXlvdXQuX21ldGEp KS5jYWxsKChmdW5jdGlvbih0KXt1LmNvbnZlcnRUb1RzcGFucyh0LG4pfSkpfWUuZXhwb3J0 cz1mdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0Ll9pbmZvbGF5ZXIuc2VsZWN0QWxs KCIucmFuZ2VzZWxlY3RvciIpLmRhdGEoZnVuY3Rpb24odCl7Zm9yKHZhciBlPWYubGlzdCh0 LCJ4IiwhMCkscj1bXSxuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciBpPWVbbl07aS5yYW5nZXNl bGVjdG9yJiZpLnJhbmdlc2VsZWN0b3IudmlzaWJsZSYmci5wdXNoKGkpfXJldHVybiByfSh0 KSx5KTtlLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgicmFuZ2VzZWxlY3RvciIsITAp LGUuZXhpdCgpLnJlbW92ZSgpLGUuc3R5bGUoe2N1cnNvcjoicG9pbnRlciIsInBvaW50ZXIt ZXZlbnRzIjoiYWxsIn0pLGUuZWFjaCgoZnVuY3Rpb24oZSl7dmFyIHI9bi5zZWxlY3QodGhp cyksbz1lLGY9by5yYW5nZXNlbGVjdG9yLGg9ci5zZWxlY3RBbGwoImcuYnV0dG9uIikuZGF0 YShsLmZpbHRlclZpc2libGUoZi5idXR0b25zKSk7aC5lbnRlcigpLmFwcGVuZCgiZyIpLmNs YXNzZWQoImJ1dHRvbiIsITApLGguZXhpdCgpLnJlbW92ZSgpLGguZWFjaCgoZnVuY3Rpb24o ZSl7dmFyIHI9bi5zZWxlY3QodGhpcyksYT12KG8sZSk7ZS5faXNBY3RpdmU9ZnVuY3Rpb24o dCxlLHIpe2lmKCJhbGwiPT09ZS5zdGVwKXJldHVybiEwPT09dC5hdXRvcmFuZ2U7dmFyIG49 T2JqZWN0LmtleXMocik7cmV0dXJuIHQucmFuZ2VbMF09PT1yW25bMF1dJiZ0LnJhbmdlWzFd PT09cltuWzFdXX0obyxlLGEpLHIuY2FsbCh4LGYsZSksci5jYWxsKGIsZixlLHQpLHIub24o ImNsaWNrIiwoZnVuY3Rpb24oKXt0Ll9kcmFnZ2VkfHxpLmNhbGwoIl9ndWlSZWxheW91dCIs dCxhKX0pKSxyLm9uKCJtb3VzZW92ZXIiLChmdW5jdGlvbigpe2UuX2lzSG92ZXJlZD0hMCxy LmNhbGwoeCxmLGUpfSkpLHIub24oIm1vdXNlb3V0IiwoZnVuY3Rpb24oKXtlLl9pc0hvdmVy ZWQ9ITEsci5jYWxsKHgsZixlKX0pKX0pKSxmdW5jdGlvbih0LGUscixpLG8pe3ZhciBmPTAs aD0wLHY9ci5ib3JkZXJ3aWR0aDtlLmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9bi5zZWxlY3Qo dGhpcykuc2VsZWN0KCIuc2VsZWN0b3ItdGV4dCIpLGU9ci5mb250LnNpemUqcCxpPU1hdGgu bWF4KGUqdS5saW5lQ291bnQodCksMTYpKzM7aD1NYXRoLm1heChoLGkpfSkpLGUuZWFjaCgo ZnVuY3Rpb24oKXt2YXIgdD1uLnNlbGVjdCh0aGlzKSxlPXQuc2VsZWN0KCIuc2VsZWN0b3It cmVjdCIpLGk9dC5zZWxlY3QoIi5zZWxlY3Rvci10ZXh0IiksYT1pLm5vZGUoKSYmcy5iQm94 KGkubm9kZSgpKS53aWR0aCxvPXIuZm9udC5zaXplKnAsbD11LmxpbmVDb3VudChpKSxkPU1h dGgubWF4KGErMTAsZy5taW5CdXR0b25XaWR0aCk7dC5hdHRyKCJ0cmFuc2Zvcm0iLGModitm LHYpKSxlLmF0dHIoe3g6MCx5OjAsd2lkdGg6ZCxoZWlnaHQ6aH0pLHUucG9zaXRpb25UZXh0 KGksZC8yLGgvMi0obC0xKSpvLzIrMyksZis9ZCs1fSkpO3ZhciB5PXQuX2Z1bGxMYXlvdXQu X3NpemUseD15LmwreS53KnIueCxiPXkudCt5LmgqKDEtci55KSxfPSJsZWZ0IjtsLmlzUmln aHRBbmNob3IocikmJih4LT1mLF89InJpZ2h0Iik7bC5pc0NlbnRlckFuY2hvcihyKSYmKHgt PWYvMixfPSJjZW50ZXIiKTt2YXIgdz0idG9wIjtsLmlzQm90dG9tQW5jaG9yKHIpJiYoYi09 aCx3PSJib3R0b20iKTtsLmlzTWlkZGxlQW5jaG9yKHIpJiYoYi09aC8yLHc9Im1pZGRsZSIp O2Y9TWF0aC5jZWlsKGYpLGg9TWF0aC5jZWlsKGgpLHg9TWF0aC5yb3VuZCh4KSxiPU1hdGgu cm91bmQoYiksYS5hdXRvTWFyZ2luKHQsaSsiLXJhbmdlLXNlbGVjdG9yIix7eDpyLngseTpy LnksbDpmKmRbX10scjpmKm1bX10sYjpoKm1bd10sdDpoKmRbd119KSxvLmF0dHIoInRyYW5z Zm9ybSIsYyh4LGIpKX0odCxoLGYsby5fbmFtZSxyKX0pKX19LHsiLi4vLi4vY29uc3RhbnRz L2FsaWdubWVudCI6NDcxLCIuLi8uLi9saWIiOjUwMywiLi4vLi4vbGliL3N2Z190ZXh0X3V0 aWxzIjo1MjksIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2lkcyI6NTU4LCIuLi8uLi9w bG90cy9wbG90cyI6NjE5LCIuLi8uLi9yZWdpc3RyeSI6NjM4LCIuLi9jb2xvciI6MzY2LCIu Li9kcmF3aW5nIjozODgsIi4vY29uc3RhbnRzIjo0MzMsIi4vZ2V0X3VwZGF0ZV9vYmplY3Qi OjQzNiwiQHBsb3RseS9kMyI6NTh9XSw0MzY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiZDMtdGltZSIpLGk9dCgiLi4vLi4vbGliIikudGl0bGVDYXNlO2UuZXhw b3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQuX25hbWUsYT17fTtpZigiYWxsIj09PWUuc3Rl cClhW3IrIi5hdXRvcmFuZ2UiXT0hMDtlbHNle3ZhciBvPWZ1bmN0aW9uKHQsZSl7dmFyIHIs YT10LnJhbmdlLG89bmV3IERhdGUodC5yMmwoYVsxXSkpLHM9ZS5zdGVwLGw9blsidXRjIitp KHMpXSxjPWUuY291bnQ7c3dpdGNoKGUuc3RlcG1vZGUpe2Nhc2UiYmFja3dhcmQiOnI9dC5s MnIoK2wub2Zmc2V0KG8sLWMpKTticmVhaztjYXNlInRvZGF0ZSI6dmFyIHU9bC5vZmZzZXQo bywtYyk7cj10LmwycigrbC5jZWlsKHUpKX12YXIgZj1hWzFdO3JldHVybltyLGZdfSh0LGUp O2FbcisiLnJhbmdlWzBdIl09b1swXSxhW3IrIi5yYW5nZVsxXSJdPW9bMV19cmV0dXJuIGF9 fSx7Ii4uLy4uL2xpYiI6NTAzLCJkMy10aW1lIjoxMjJ9XSw0Mzc6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXttb2R1bGVUeXBlOiJjb21wb25lbnQiLG5hbWU6 InJhbmdlc2VsZWN0b3IiLHNjaGVtYTp7c3VicGxvdHM6e3hheGlzOntyYW5nZXNlbGVjdG9y OnQoIi4vYXR0cmlidXRlcyIpfX19LGxheW91dEF0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVz IiksaGFuZGxlRGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGRyYXc6dCgiLi9kcmF3Iil9fSx7 Ii4vYXR0cmlidXRlcyI6NDMyLCIuL2RlZmF1bHRzIjo0MzQsIi4vZHJhdyI6NDM1fV0sNDM4 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2NvbG9yL2F0dHJp YnV0ZXMiKTtlLmV4cG9ydHM9e2JnY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0Om4uYmFj a2dyb3VuZCxlZGl0VHlwZToicGxvdCJ9LGJvcmRlcmNvbG9yOnt2YWxUeXBlOiJjb2xvciIs ZGZsdDpuLmRlZmF1bHRMaW5lLGVkaXRUeXBlOiJwbG90In0sYm9yZGVyd2lkdGg6e3ZhbFR5 cGU6ImludGVnZXIiLGRmbHQ6MCxtaW46MCxlZGl0VHlwZToicGxvdCJ9LGF1dG9yYW5nZTp7 dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToiY2FsYyIsaW1wbGllZEVkaXRz OnsicmFuZ2VbMF0iOnZvaWQgMCwicmFuZ2VbMV0iOnZvaWQgMH19LHJhbmdlOnt2YWxUeXBl OiJpbmZvX2FycmF5IixpdGVtczpbe3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6ImNhbGMiLGlt cGxpZWRFZGl0czp7Il5hdXRvcmFuZ2UiOiExfX0se3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6 ImNhbGMiLGltcGxpZWRFZGl0czp7Il5hdXRvcmFuZ2UiOiExfX1dLGVkaXRUeXBlOiJjYWxj IixpbXBsaWVkRWRpdHM6e2F1dG9yYW5nZTohMX19LHRoaWNrbmVzczp7dmFsVHlwZToibnVt YmVyIixkZmx0Oi4xNSxtaW46MCxtYXg6MSxlZGl0VHlwZToicGxvdCJ9LHZpc2libGU6e3Zh bFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6ImNhbGMifSxlZGl0VHlwZToiY2Fs YyJ9fSx7Ii4uL2NvbG9yL2F0dHJpYnV0ZXMiOjM2NX1dLDQzOTpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMi KS5saXN0LGk9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F1dG9yYW5nZSIpLmdldEF1dG9S YW5nZSxhPXQoIi4vY29uc3RhbnRzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIg ZT1uKHQsIngiLCEwKSxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBvPWVbcl0scz1vW2EubmFt ZV07cyYmcy52aXNpYmxlJiZzLmF1dG9yYW5nZSYmKHMuX2lucHV0LmF1dG9yYW5nZT0hMCxz Ll9pbnB1dC5yYW5nZT1zLnJhbmdlPWkodCxvKSl9fX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNp YW4vYXV0b3JhbmdlIjo1NTMsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2lkcyI6NTU4 LCIuL2NvbnN0YW50cyI6NDQwfV0sNDQwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O2UuZXhwb3J0cz17bmFtZToicmFuZ2VzbGlkZXIiLGNvbnRhaW5lckNsYXNzTmFtZToicmFu Z2VzbGlkZXItY29udGFpbmVyIixiZ0NsYXNzTmFtZToicmFuZ2VzbGlkZXItYmciLHJhbmdl UGxvdENsYXNzTmFtZToicmFuZ2VzbGlkZXItcmFuZ2VwbG90IixtYXNrTWluQ2xhc3NOYW1l OiJyYW5nZXNsaWRlci1tYXNrLW1pbiIsbWFza01heENsYXNzTmFtZToicmFuZ2VzbGlkZXIt bWFzay1tYXgiLHNsaWRlQm94Q2xhc3NOYW1lOiJyYW5nZXNsaWRlci1zbGlkZWJveCIsZ3Jh YmJlck1pbkNsYXNzTmFtZToicmFuZ2VzbGlkZXItZ3JhYmJlci1taW4iLGdyYWJBcmVhTWlu Q2xhc3NOYW1lOiJyYW5nZXNsaWRlci1ncmFiYXJlYS1taW4iLGhhbmRsZU1pbkNsYXNzTmFt ZToicmFuZ2VzbGlkZXItaGFuZGxlLW1pbiIsZ3JhYmJlck1heENsYXNzTmFtZToicmFuZ2Vz bGlkZXItZ3JhYmJlci1tYXgiLGdyYWJBcmVhTWF4Q2xhc3NOYW1lOiJyYW5nZXNsaWRlci1n cmFiYXJlYS1tYXgiLGhhbmRsZU1heENsYXNzTmFtZToicmFuZ2VzbGlkZXItaGFuZGxlLW1h eCIsbWFza01pbk9wcEF4aXNDbGFzc05hbWU6InJhbmdlc2xpZGVyLW1hc2stbWluLW9wcC1h eGlzIixtYXNrTWF4T3BwQXhpc0NsYXNzTmFtZToicmFuZ2VzbGlkZXItbWFzay1tYXgtb3Bw LWF4aXMiLG1hc2tDb2xvcjoicmdiYSgwLDAsMCwwLjQpIixtYXNrT3BwQXhpc0NvbG9yOiJy Z2JhKDAsMCwwLDAuMikiLHNsaWRlQm94RmlsbDoidHJhbnNwYXJlbnQiLHNsaWRlQm94Q3Vy c29yOiJldy1yZXNpemUiLGdyYWJBcmVhRmlsbDoidHJhbnNwYXJlbnQiLGdyYWJBcmVhQ3Vy c29yOiJjb2wtcmVzaXplIixncmFiQXJlYVdpZHRoOjEwLGhhbmRsZVdpZHRoOjQsaGFuZGxl UmFkaXVzOjEsaGFuZGxlU3Ryb2tlV2lkdGg6MSxleHRyYVBhZDoxNX19LHt9XSw0NDE6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIu Li8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIiksYT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNp YW4vYXhpc19pZHMiKSxvPXQoIi4vYXR0cmlidXRlcyIpLHM9dCgiLi9vcHBheGlzX2F0dHJp YnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBsPXRbcl0sYz1lW3JdO2lm KGwucmFuZ2VzbGlkZXJ8fGUuX3JlcXVlc3RSYW5nZXNsaWRlcltjLl9pZF0pe24uaXNQbGFp bk9iamVjdChsLnJhbmdlc2xpZGVyKXx8KGwucmFuZ2VzbGlkZXI9e30pO3ZhciB1LGYsaD1s LnJhbmdlc2xpZGVyLHA9aS5uZXdDb250YWluZXIoYywicmFuZ2VzbGlkZXIiKTtpZihfKCJ2 aXNpYmxlIikpe18oImJnY29sb3IiLGUucGxvdF9iZ2NvbG9yKSxfKCJib3JkZXJjb2xvciIp LF8oImJvcmRlcndpZHRoIiksXygidGhpY2tuZXNzIiksXygiYXV0b3JhbmdlIiwhYy5pc1Zh bGlkUmFuZ2UoaC5yYW5nZSkpLF8oInJhbmdlIik7dmFyIGQ9ZS5fc3VicGxvdHM7aWYoZClm b3IodmFyIG09ZC5jYXJ0ZXNpYW4uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zdWJz dHIoMCx0LmluZGV4T2YoInkiKSk9PT1hLm5hbWUyaWQocil9KSkubWFwKChmdW5jdGlvbih0 KXtyZXR1cm4gdC5zdWJzdHIodC5pbmRleE9mKCJ5IiksdC5sZW5ndGgpfSkpLGc9bi5zaW1w bGVNYXAobSxhLmlkMm5hbWUpLHY9MDt2PGcubGVuZ3RoO3YrKyl7dmFyIHk9Z1t2XTt1PWhb eV18fHt9LGY9aS5uZXdDb250YWluZXIocCx5LCJ5YXhpcyIpO3ZhciB4LGI9ZVt5XTt1LnJh bmdlJiZiLmlzVmFsaWRSYW5nZSh1LnJhbmdlKSYmKHg9ImZpeGVkIiksIm1hdGNoIiE9PXco InJhbmdlbW9kZSIseCkmJncoInJhbmdlIixiLnJhbmdlLnNsaWNlKCkpfXAuX2lucHV0PWh9 fWZ1bmN0aW9uIF8odCxlKXtyZXR1cm4gbi5jb2VyY2UoaCxwLG8sdCxlKX1mdW5jdGlvbiB3 KHQsZSl7cmV0dXJuIG4uY29lcmNlKHUsZixzLHQsZSl9fX0seyIuLi8uLi9saWIiOjUwMywi Li4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NTQzLCIuLi8uLi9wbG90cy9jYXJ0ZXNp YW4vYXhpc19pZHMiOjU1OCwiLi9hdHRyaWJ1dGVzIjo0MzgsIi4vb3BwYXhpc19hdHRyaWJ1 dGVzIjo0NDV9XSw0NDI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgi QHBsb3RseS9kMyIpLGk9dCgiLi4vLi4vcmVnaXN0cnkiKSxhPXQoIi4uLy4uL3Bsb3RzL3Bs b3RzIiksbz10KCIuLi8uLi9saWIiKSxzPW8uc3RyVHJhbnNsYXRlLGw9dCgiLi4vZHJhd2lu ZyIpLGM9dCgiLi4vY29sb3IiKSx1PXQoIi4uL3RpdGxlcyIpLGY9dCgiLi4vLi4vcGxvdHMv Y2FydGVzaWFuIiksaD10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiKSxwPXQo Ii4uL2RyYWdlbGVtZW50IiksZD10KCIuLi8uLi9saWIvc2V0Y3Vyc29yIiksbT10KCIuL2Nv bnN0YW50cyIpO2Z1bmN0aW9uIGcodCxlLHIsbil7dmFyIGk9by5lbnN1cmVTaW5nbGUodCwi cmVjdCIsbS5iZ0NsYXNzTmFtZSwoZnVuY3Rpb24odCl7dC5hdHRyKHt4OjAseTowLCJzaGFw ZS1yZW5kZXJpbmciOiJjcmlzcEVkZ2VzIn0pfSkpLGE9bi5ib3JkZXJ3aWR0aCUyPT0wP24u Ym9yZGVyd2lkdGg6bi5ib3JkZXJ3aWR0aC0xLGM9LW4uX29mZnNldFNoaWZ0LHU9bC5jcmlz cFJvdW5kKGUsbi5ib3JkZXJ3aWR0aCk7aS5hdHRyKHt3aWR0aDpuLl93aWR0aCthLGhlaWdo dDpuLl9oZWlnaHQrYSx0cmFuc2Zvcm06cyhjLGMpLGZpbGw6bi5iZ2NvbG9yLHN0cm9rZTpu LmJvcmRlcmNvbG9yLCJzdHJva2Utd2lkdGgiOnV9KX1mdW5jdGlvbiB2KHQsZSxyLG4pe3Zh ciBpPWUuX2Z1bGxMYXlvdXQ7by5lbnN1cmVTaW5nbGVCeUlkKGkuX3RvcGRlZnMsImNsaXBQ YXRoIixuLl9jbGlwSWQsKGZ1bmN0aW9uKHQpe3QuYXBwZW5kKCJyZWN0IikuYXR0cih7eDow LHk6MH0pfSkpLnNlbGVjdCgicmVjdCIpLmF0dHIoe3dpZHRoOm4uX3dpZHRoLGhlaWdodDpu Ll9oZWlnaHR9KX1mdW5jdGlvbiB5KHQsZSxyLGkpe3ZhciBzLGM9ZS5jYWxjZGF0YSx1PXQu c2VsZWN0QWxsKCJnLiIrbS5yYW5nZVBsb3RDbGFzc05hbWUpLmRhdGEoci5fc3VicGxvdHNX aXRoLG8uaWRlbnRpdHkpO3UuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsKGZ1 bmN0aW9uKHQpe3JldHVybiBtLnJhbmdlUGxvdENsYXNzTmFtZSsiICIrdH0pKS5jYWxsKGwu c2V0Q2xpcFVybCxpLl9jbGlwSWQsZSksdS5vcmRlcigpLHUuZXhpdCgpLnJlbW92ZSgpLHUu ZWFjaCgoZnVuY3Rpb24odCxvKXt2YXIgbD1uLnNlbGVjdCh0aGlzKSx1PTA9PT1vLHA9aC5n ZXRGcm9tSWQoZSx0LCJ5IiksZD1wLl9uYW1lLG09aVtkXSxnPXtkYXRhOltdLGxheW91dDp7 eGF4aXM6e3R5cGU6ci50eXBlLGRvbWFpbjpbMCwxXSxyYW5nZTppLnJhbmdlLnNsaWNlKCks Y2FsZW5kYXI6ci5jYWxlbmRhcn0sd2lkdGg6aS5fd2lkdGgsaGVpZ2h0OmkuX2hlaWdodCxt YXJnaW46e3Q6MCxiOjAsbDowLHI6MH19LF9jb250ZXh0OmUuX2NvbnRleHR9O3IucmFuZ2Vi cmVha3MmJihnLmxheW91dC54YXhpcy5yYW5nZWJyZWFrcz1yLnJhbmdlYnJlYWtzKSxnLmxh eW91dFtkXT17dHlwZTpwLnR5cGUsZG9tYWluOlswLDFdLHJhbmdlOiJtYXRjaCIhPT1tLnJh bmdlbW9kZT9tLnJhbmdlLnNsaWNlKCk6cC5yYW5nZS5zbGljZSgpLGNhbGVuZGFyOnAuY2Fs ZW5kYXJ9LHAucmFuZ2VicmVha3MmJihnLmxheW91dFtkXS5yYW5nZWJyZWFrcz1wLnJhbmdl YnJlYWtzKSxhLnN1cHBseURlZmF1bHRzKGcpO3ZhciB2PWcuX2Z1bGxMYXlvdXQueGF4aXMs eT1nLl9mdWxsTGF5b3V0W2RdO3YuY2xlYXJDYWxjKCksdi5zZXRTY2FsZSgpLHkuY2xlYXJD YWxjKCkseS5zZXRTY2FsZSgpO3ZhciB4PXtpZDp0LHBsb3Rncm91cDpsLHhheGlzOnYseWF4 aXM6eSxpc1JhbmdlUGxvdDohMH07dT9zPXg6KHgubWFpbnBsb3Q9Inh5Iix4Lm1haW5wbG90 aW5mbz1zKSxmLnJhbmdlUGxvdChlLHgsZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9W10sbj0w O248dC5sZW5ndGg7bisrKXt2YXIgaT10W25dLGE9aVswXS50cmFjZTthLnhheGlzK2EueWF4 aXM9PT1lJiZyLnB1c2goaSl9cmV0dXJuIHJ9KGMsdCkpfSkpfWZ1bmN0aW9uIHgodCxlLHIs bixpKXsoby5lbnN1cmVTaW5nbGUodCwicmVjdCIsbS5tYXNrTWluQ2xhc3NOYW1lLChmdW5j dGlvbih0KXt0LmF0dHIoe3g6MCx5OjAsInNoYXBlLXJlbmRlcmluZyI6ImNyaXNwRWRnZXMi fSl9KSkuYXR0cigiaGVpZ2h0IixuLl9oZWlnaHQpLmNhbGwoYy5maWxsLG0ubWFza0NvbG9y KSxvLmVuc3VyZVNpbmdsZSh0LCJyZWN0IixtLm1hc2tNYXhDbGFzc05hbWUsKGZ1bmN0aW9u KHQpe3QuYXR0cih7eTowLCJzaGFwZS1yZW5kZXJpbmciOiJjcmlzcEVkZ2VzIn0pfSkpLmF0 dHIoImhlaWdodCIsbi5faGVpZ2h0KS5jYWxsKGMuZmlsbCxtLm1hc2tDb2xvciksIm1hdGNo IiE9PWkucmFuZ2Vtb2RlKSYmKG8uZW5zdXJlU2luZ2xlKHQsInJlY3QiLG0ubWFza01pbk9w cEF4aXNDbGFzc05hbWUsKGZ1bmN0aW9uKHQpe3QuYXR0cih7eTowLCJzaGFwZS1yZW5kZXJp bmciOiJjcmlzcEVkZ2VzIn0pfSkpLmF0dHIoIndpZHRoIixuLl93aWR0aCkuY2FsbChjLmZp bGwsbS5tYXNrT3BwQXhpc0NvbG9yKSxvLmVuc3VyZVNpbmdsZSh0LCJyZWN0IixtLm1hc2tN YXhPcHBBeGlzQ2xhc3NOYW1lLChmdW5jdGlvbih0KXt0LmF0dHIoe3k6MCwic2hhcGUtcmVu ZGVyaW5nIjoiY3Jpc3BFZGdlcyJ9KX0pKS5hdHRyKCJ3aWR0aCIsbi5fd2lkdGgpLnN0eWxl KCJib3JkZXItdG9wIixtLm1hc2tPcHBCb3JkZXIpLmNhbGwoYy5maWxsLG0ubWFza09wcEF4 aXNDb2xvcikpfWZ1bmN0aW9uIGIodCxlLHIsbil7ZS5fY29udGV4dC5zdGF0aWNQbG90fHxv LmVuc3VyZVNpbmdsZSh0LCJyZWN0IixtLnNsaWRlQm94Q2xhc3NOYW1lLChmdW5jdGlvbih0 KXt0LmF0dHIoe3k6MCxjdXJzb3I6bS5zbGlkZUJveEN1cnNvciwic2hhcGUtcmVuZGVyaW5n IjoiY3Jpc3BFZGdlcyJ9KX0pKS5hdHRyKHtoZWlnaHQ6bi5faGVpZ2h0LGZpbGw6bS5zbGlk ZUJveEZpbGx9KX1mdW5jdGlvbiBfKHQsZSxyLG4pe3ZhciBpPW8uZW5zdXJlU2luZ2xlKHQs ImciLG0uZ3JhYmJlck1pbkNsYXNzTmFtZSksYT1vLmVuc3VyZVNpbmdsZSh0LCJnIixtLmdy YWJiZXJNYXhDbGFzc05hbWUpLHM9e3g6MCx3aWR0aDptLmhhbmRsZVdpZHRoLHJ4Om0uaGFu ZGxlUmFkaXVzLGZpbGw6Yy5iYWNrZ3JvdW5kLHN0cm9rZTpjLmRlZmF1bHRMaW5lLCJzdHJv a2Utd2lkdGgiOm0uaGFuZGxlU3Ryb2tlV2lkdGgsInNoYXBlLXJlbmRlcmluZyI6ImNyaXNw RWRnZXMifSxsPXt5Ok1hdGgucm91bmQobi5faGVpZ2h0LzQpLGhlaWdodDpNYXRoLnJvdW5k KG4uX2hlaWdodC8yKX07by5lbnN1cmVTaW5nbGUoaSwicmVjdCIsbS5oYW5kbGVNaW5DbGFz c05hbWUsKGZ1bmN0aW9uKHQpe3QuYXR0cihzKX0pKS5hdHRyKGwpLG8uZW5zdXJlU2luZ2xl KGEsInJlY3QiLG0uaGFuZGxlTWF4Q2xhc3NOYW1lLChmdW5jdGlvbih0KXt0LmF0dHIocyl9 KSkuYXR0cihsKTt2YXIgdT17d2lkdGg6bS5ncmFiQXJlYVdpZHRoLHg6MCx5OjAsZmlsbDpt LmdyYWJBcmVhRmlsbCxjdXJzb3I6ZS5fY29udGV4dC5zdGF0aWNQbG90P3ZvaWQgMDptLmdy YWJBcmVhQ3Vyc29yfTtvLmVuc3VyZVNpbmdsZShpLCJyZWN0IixtLmdyYWJBcmVhTWluQ2xh c3NOYW1lLChmdW5jdGlvbih0KXt0LmF0dHIodSl9KSkuYXR0cigiaGVpZ2h0IixuLl9oZWln aHQpLG8uZW5zdXJlU2luZ2xlKGEsInJlY3QiLG0uZ3JhYkFyZWFNYXhDbGFzc05hbWUsKGZ1 bmN0aW9uKHQpe3QuYXR0cih1KX0pKS5hdHRyKCJoZWlnaHQiLG4uX2hlaWdodCl9ZS5leHBv cnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Ll9mdWxsTGF5b3V0LHI9ZS5fcmFuZ2VTbGlk ZXJEYXRhLGE9MDthPHIubGVuZ3RoO2ErKyl7dmFyIGw9clthXVttLm5hbWVdO2wuX2NsaXBJ ZD1sLl9pZCsiLSIrZS5fdWlkfXZhciBjPWUuX2luZm9sYXllci5zZWxlY3RBbGwoImcuIitt LmNvbnRhaW5lckNsYXNzTmFtZSkuZGF0YShyLChmdW5jdGlvbih0KXtyZXR1cm4gdC5fbmFt ZX0pKTtjLmV4aXQoKS5lYWNoKChmdW5jdGlvbih0KXt2YXIgcj10W20ubmFtZV07ZS5fdG9w ZGVmcy5zZWxlY3QoIiMiK3IuX2NsaXBJZCkucmVtb3ZlKCl9KSkucmVtb3ZlKCksMCE9PXIu bGVuZ3RoJiYoYy5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQobS5jb250YWluZXJDbGFz c05hbWUsITApLmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIiksYy5lYWNoKChmdW5jdGlv bihyKXt2YXIgYT1uLnNlbGVjdCh0aGlzKSxsPXJbbS5uYW1lXSxjPWVbaC5pZDJuYW1lKHIu YW5jaG9yKV0sZj1sW2guaWQybmFtZShyLmFuY2hvcildO2lmKGwucmFuZ2Upe3ZhciB3LFQ9 by5zaW1wbGVNYXAobC5yYW5nZSxyLnIybCksaz1vLnNpbXBsZU1hcChyLnJhbmdlLHIucjJs KTt3PWtbMF08a1sxXT9bTWF0aC5taW4oVFswXSxrWzBdKSxNYXRoLm1heChUWzFdLGtbMV0p XTpbTWF0aC5tYXgoVFswXSxrWzBdKSxNYXRoLm1pbihUWzFdLGtbMV0pXSxsLnJhbmdlPWwu X2lucHV0LnJhbmdlPW8uc2ltcGxlTWFwKHcsci5sMnIpfXIuY2xlYW5SYW5nZSgicmFuZ2Vz bGlkZXIucmFuZ2UiKTt2YXIgQT1lLl9zaXplLE09ci5kb21haW47bC5fd2lkdGg9QS53KihN WzFdLU1bMF0pO3ZhciBTPU1hdGgucm91bmQoQS5sK0EudypNWzBdKSxFPU1hdGgucm91bmQo QS50K0EuaCooMS1yLl9jb3VudGVyRG9tYWluTWluKSsoImJvdHRvbSI9PT1yLnNpZGU/ci5f ZGVwdGg6MCkrbC5fb2Zmc2V0U2hpZnQrbS5leHRyYVBhZCk7YS5hdHRyKCJ0cmFuc2Zvcm0i LHMoUyxFKSksbC5fcmw9by5zaW1wbGVNYXAobC5yYW5nZSxyLnIybCk7dmFyIEw9bC5fcmxb MF0sQz1sLl9ybFsxXSxQPUMtTDtpZihsLnAyZD1mdW5jdGlvbih0KXtyZXR1cm4gdC9sLl93 aWR0aCpQK0x9LGwuZDJwPWZ1bmN0aW9uKHQpe3JldHVybih0LUwpL1AqbC5fd2lkdGh9LHIu cmFuZ2VicmVha3Mpe3ZhciBJPXIubG9jYXRlQnJlYWtzKEwsQyk7aWYoSS5sZW5ndGgpe3Zh ciBPLHosRD0wO2ZvcihPPTA7TzxJLmxlbmd0aDtPKyspRCs9KHo9SVtPXSkubWF4LXoubWlu O3ZhciBSPWwuX3dpZHRoLyhDLUwtRCksRj1bLVIqTF07Zm9yKE89MDtPPEkubGVuZ3RoO08r Kyl6PUlbT10sRi5wdXNoKEZbRi5sZW5ndGgtMV0tUiooei5tYXgtei5taW4pKTtmb3IobC5k MnA9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPUZbMF0scj0wO3I8SS5sZW5ndGg7cisrKXt2YXIg bj1JW3JdO2lmKHQ+PW4ubWF4KWU9RltyKzFdO2Vsc2UgaWYodDxuLm1pbilicmVha31yZXR1 cm4gZStSKnR9LE89MDtPPEkubGVuZ3RoO08rKykoej1JW09dKS5wbWluPWwuZDJwKHoubWlu KSx6LnBtYXg9bC5kMnAoei5tYXgpO2wucDJkPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1GWzBd LHI9MDtyPEkubGVuZ3RoO3IrKyl7dmFyIG49SVtyXTtpZih0Pj1uLnBtYXgpZT1GW3IrMV07 ZWxzZSBpZih0PG4ucG1pbilicmVha31yZXR1cm4odC1lKS9SfX19aWYoIm1hdGNoIiE9PWYu cmFuZ2Vtb2RlKXt2YXIgQj1jLnIybChmLnJhbmdlWzBdKSxOPWMucjJsKGYucmFuZ2VbMV0p LUI7bC5kMnBPcHBBeGlzPWZ1bmN0aW9uKHQpe3JldHVybih0LUIpL04qbC5faGVpZ2h0fX1h LmNhbGwoZyx0LHIsbCkuY2FsbCh2LHQscixsKS5jYWxsKHksdCxyLGwpLmNhbGwoeCx0LHIs bCxmKS5jYWxsKGIsdCxyLGwpLmNhbGwoXyx0LHIsbCksZnVuY3Rpb24odCxlLHIsYSl7aWYo ZS5fY29udGV4dC5zdGF0aWNQbG90KXJldHVybjt2YXIgcz10LnNlbGVjdCgicmVjdC4iK20u c2xpZGVCb3hDbGFzc05hbWUpLm5vZGUoKSxsPXQuc2VsZWN0KCJyZWN0LiIrbS5ncmFiQXJl YU1pbkNsYXNzTmFtZSkubm9kZSgpLGM9dC5zZWxlY3QoInJlY3QuIittLmdyYWJBcmVhTWF4 Q2xhc3NOYW1lKS5ub2RlKCk7ZnVuY3Rpb24gdSgpe3ZhciB1PW4uZXZlbnQsZj11LnRhcmdl dCxoPXUuY2xpZW50WHx8dS50b3VjaGVzWzBdLmNsaWVudFgsbT1oLXQubm9kZSgpLmdldEJv dW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQsZz1hLmQycChyLl9ybFswXSksdj1hLmQycChyLl9y bFsxXSkseT1wLmNvdmVyU2xpcCgpO2Z1bmN0aW9uIHgodCl7dmFyIHUscCx4LGI9Kyh0LmNs aWVudFh8fHQudG91Y2hlc1swXS5jbGllbnRYKS1oO3N3aXRjaChmKXtjYXNlIHM6eD0iZXct cmVzaXplIix1PWcrYixwPXYrYjticmVhaztjYXNlIGw6eD0iY29sLXJlc2l6ZSIsdT1nK2Is cD12O2JyZWFrO2Nhc2UgYzp4PSJjb2wtcmVzaXplIix1PWcscD12K2I7YnJlYWs7ZGVmYXVs dDp4PSJldy1yZXNpemUiLHU9bSxwPW0rYn1pZihwPHUpe3ZhciBfPXA7cD11LHU9X31hLl9w aXhlbE1pbj11LGEuX3BpeGVsTWF4PXAsZChuLnNlbGVjdCh5KSx4KSxmdW5jdGlvbih0LGUs cixuKXtmdW5jdGlvbiBhKHQpe3JldHVybiByLmwycihvLmNvbnN0cmFpbih0LG4uX3JsWzBd LG4uX3JsWzFdKSl9dmFyIHM9YShuLnAyZChuLl9waXhlbE1pbikpLGw9YShuLnAyZChuLl9w aXhlbE1heCkpO3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7aS5j YWxsKCJfZ3VpUmVsYXlvdXQiLGUsci5fbmFtZSsiLnJhbmdlIixbcyxsXSl9KSl9KDAsZSxy LGEpfWZ1bmN0aW9uIGIoKXt5LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIseCks eS5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIixiKSx0aGlzLnJlbW92ZUV2ZW50TGlz dGVuZXIoInRvdWNobW92ZSIseCksdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGVu ZCIsYiksby5yZW1vdmVFbGVtZW50KHkpfXRoaXMuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2ht b3ZlIix4KSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixiKSx5LmFkZEV2ZW50 TGlzdGVuZXIoIm1vdXNlbW92ZSIseCkseS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIixi KX10Lm9uKCJtb3VzZWRvd24iLHUpLHQub24oInRvdWNoc3RhcnQiLHUpfShhLHQscixsKSxm dW5jdGlvbih0LGUscixuLGksYSl7dmFyIGw9bS5oYW5kbGVXaWR0aC8yO2Z1bmN0aW9uIGMo dCl7cmV0dXJuIG8uY29uc3RyYWluKHQsMCxuLl93aWR0aCl9ZnVuY3Rpb24gdSh0KXtyZXR1 cm4gby5jb25zdHJhaW4odCwwLG4uX2hlaWdodCl9ZnVuY3Rpb24gZih0KXtyZXR1cm4gby5j b25zdHJhaW4odCwtbCxuLl93aWR0aCtsKX12YXIgaD1jKG4uZDJwKHIuX3JsWzBdKSkscD1j KG4uZDJwKHIuX3JsWzFdKSk7aWYodC5zZWxlY3QoInJlY3QuIittLnNsaWRlQm94Q2xhc3NO YW1lKS5hdHRyKCJ4IixoKS5hdHRyKCJ3aWR0aCIscC1oKSx0LnNlbGVjdCgicmVjdC4iK20u bWFza01pbkNsYXNzTmFtZSkuYXR0cigid2lkdGgiLGgpLHQuc2VsZWN0KCJyZWN0LiIrbS5t YXNrTWF4Q2xhc3NOYW1lKS5hdHRyKCJ4IixwKS5hdHRyKCJ3aWR0aCIsbi5fd2lkdGgtcCks Im1hdGNoIiE9PWEucmFuZ2Vtb2RlKXt2YXIgZD1uLl9oZWlnaHQtdShuLmQycE9wcEF4aXMo aS5fcmxbMV0pKSxnPW4uX2hlaWdodC11KG4uZDJwT3BwQXhpcyhpLl9ybFswXSkpO3Quc2Vs ZWN0KCJyZWN0LiIrbS5tYXNrTWluT3BwQXhpc0NsYXNzTmFtZSkuYXR0cigieCIsaCkuYXR0 cigiaGVpZ2h0IixkKS5hdHRyKCJ3aWR0aCIscC1oKSx0LnNlbGVjdCgicmVjdC4iK20ubWFz a01heE9wcEF4aXNDbGFzc05hbWUpLmF0dHIoIngiLGgpLmF0dHIoInkiLGcpLmF0dHIoImhl aWdodCIsbi5faGVpZ2h0LWcpLmF0dHIoIndpZHRoIixwLWgpLHQuc2VsZWN0KCJyZWN0LiIr bS5zbGlkZUJveENsYXNzTmFtZSkuYXR0cigieSIsZCkuYXR0cigiaGVpZ2h0IixnLWQpfXZh ciB2PU1hdGgucm91bmQoZihoLWwpKS0uNSx5PU1hdGgucm91bmQoZihwLWwpKSsuNTt0LnNl bGVjdCgiZy4iK20uZ3JhYmJlck1pbkNsYXNzTmFtZSkuYXR0cigidHJhbnNmb3JtIixzKHYs LjUpKSx0LnNlbGVjdCgiZy4iK20uZ3JhYmJlck1heENsYXNzTmFtZSkuYXR0cigidHJhbnNm b3JtIixzKHksLjUpKX0oYSwwLHIsbCxjLGYpLCJib3R0b20iPT09ci5zaWRlJiZ1LmRyYXco dCxyLl9pZCsidGl0bGUiLHtwcm9wQ29udGFpbmVyOnIscHJvcE5hbWU6ci5fbmFtZSsiLnRp dGxlIixwbGFjZWhvbGRlcjplLl9kZmx0VGl0bGUueCxhdHRyaWJ1dGVzOnt4OnIuX29mZnNl dCtyLl9sZW5ndGgvMix5OkUrbC5faGVpZ2h0K2wuX29mZnNldFNoaWZ0KzEwKzEuNSpyLnRp dGxlLmZvbnQuc2l6ZSwidGV4dC1hbmNob3IiOiJtaWRkbGUifX0pfSkpKX19LHsiLi4vLi4v bGliIjo1MDMsIi4uLy4uL2xpYi9zZXRjdXJzb3IiOjUyNCwiLi4vLi4vcGxvdHMvY2FydGVz aWFuIjo1NjgsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2lkcyI6NTU4LCIuLi8uLi9w bG90cy9wbG90cyI6NjE5LCIuLi8uLi9yZWdpc3RyeSI6NjM4LCIuLi9jb2xvciI6MzY2LCIu Li9kcmFnZWxlbWVudCI6Mzg1LCIuLi9kcmF3aW5nIjozODgsIi4uL3RpdGxlcyI6NDY0LCIu L2NvbnN0YW50cyI6NDQwLCJAcGxvdGx5L2QzIjo1OH1dLDQ0MzpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMi KSxpPXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyIpLGE9dCgiLi9jb25zdGFudHMiKSxv PXQoIi4uLy4uL2NvbnN0YW50cy9hbGlnbm1lbnQiKS5MSU5FX1NQQUNJTkcscz1hLm5hbWU7 ZnVuY3Rpb24gbCh0KXt2YXIgZT10JiZ0W3NdO3JldHVybiBlJiZlLnZpc2libGV9ci5pc1Zp c2libGU9bCxyLm1ha2VEYXRhPWZ1bmN0aW9uKHQpe3ZhciBlPW4ubGlzdCh7X2Z1bGxMYXlv dXQ6dH0sIngiLCEwKSxyPXQubWFyZ2luLGk9W107aWYoIXQuX2hhcygiZ2wyZCIpKWZvcih2 YXIgYT0wO2E8ZS5sZW5ndGg7YSsrKXt2YXIgbz1lW2FdO2lmKGwobykpe2kucHVzaChvKTt2 YXIgYz1vW3NdO2MuX2lkPXMrby5faWQsYy5faGVpZ2h0PSh0LmhlaWdodC1yLmItci50KSpj LnRoaWNrbmVzcyxjLl9vZmZzZXRTaGlmdD1NYXRoLmZsb29yKGMuYm9yZGVyd2lkdGgvMil9 fXQuX3JhbmdlU2xpZGVyRGF0YT1pfSxyLmF1dG9NYXJnaW5PcHRzPWZ1bmN0aW9uKHQsZSl7 dmFyIHI9dC5fZnVsbExheW91dCxuPWVbc10sbD1lLl9pZC5jaGFyQXQoMCksYz0wLHU9MDsi Ym90dG9tIj09PWUuc2lkZSYmKGM9ZS5fZGVwdGgsZS50aXRsZS50ZXh0IT09ci5fZGZsdFRp dGxlW2xdJiYodT0xLjUqZS50aXRsZS5mb250LnNpemUrMTArbi5fb2Zmc2V0U2hpZnQsdSs9 KGUudGl0bGUudGV4dC5tYXRjaChpLkJSX1RBR19BTEwpfHxbXSkubGVuZ3RoKmUudGl0bGUu Zm9udC5zaXplKm8pKTtyZXR1cm57eDowLHk6ZS5fY291bnRlckRvbWFpbk1pbixsOjAscjow LHQ6MCxiOm4uX2hlaWdodCtjK01hdGgubWF4KHIubWFyZ2luLmIsdSkscGFkOmEuZXh0cmFQ YWQrMipuLl9vZmZzZXRTaGlmdH19fSx7Ii4uLy4uL2NvbnN0YW50cy9hbGlnbm1lbnQiOjQ3 MSwiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo1MjksIi4uLy4uL3Bsb3RzL2NhcnRlc2lh bi9heGlzX2lkcyI6NTU4LCIuL2NvbnN0YW50cyI6NDQwfV0sNDQ0OltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi9hdHRyaWJ1dGVz IiksYT10KCIuL29wcGF4aXNfYXR0cmlidXRlcyIpLG89dCgiLi9oZWxwZXJzIik7ZS5leHBv cnRzPXttb2R1bGVUeXBlOiJjb21wb25lbnQiLG5hbWU6InJhbmdlc2xpZGVyIixzY2hlbWE6 e3N1YnBsb3RzOnt4YXhpczp7cmFuZ2VzbGlkZXI6bi5leHRlbmRGbGF0KHt9LGkse3lheGlz OmF9KX19fSxsYXlvdXRBdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLGhhbmRsZURlZmF1 bHRzOnQoIi4vZGVmYXVsdHMiKSxjYWxjQXV0b3JhbmdlOnQoIi4vY2FsY19hdXRvcmFuZ2Ui KSxkcmF3OnQoIi4vZHJhdyIpLGlzVmlzaWJsZTpvLmlzVmlzaWJsZSxtYWtlRGF0YTpvLm1h a2VEYXRhLGF1dG9NYXJnaW5PcHRzOm8uYXV0b01hcmdpbk9wdHN9fSx7Ii4uLy4uL2xpYiI6 NTAzLCIuL2F0dHJpYnV0ZXMiOjQzOCwiLi9jYWxjX2F1dG9yYW5nZSI6NDM5LCIuL2RlZmF1 bHRzIjo0NDEsIi4vZHJhdyI6NDQyLCIuL2hlbHBlcnMiOjQ0MywiLi9vcHBheGlzX2F0dHJp YnV0ZXMiOjQ0NX1dLDQ0NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9y dHM9e19pc1N1YnBsb3RPYmo6ITAscmFuZ2Vtb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2 YWx1ZXM6WyJhdXRvIiwiZml4ZWQiLCJtYXRjaCJdLGRmbHQ6Im1hdGNoIixlZGl0VHlwZToi Y2FsYyJ9LHJhbmdlOnt2YWxUeXBlOiJpbmZvX2FycmF5IixpdGVtczpbe3ZhbFR5cGU6ImFu eSIsZWRpdFR5cGU6InBsb3QifSx7dmFsVHlwZToiYW55IixlZGl0VHlwZToicGxvdCJ9XSxl ZGl0VHlwZToicGxvdCJ9LGVkaXRUeXBlOiJjYWxjIn19LHt9XSw0NDY6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vYW5ub3RhdGlvbnMvYXR0cmlidXRlcyIp LGk9dCgiLi4vLi4vdHJhY2VzL3NjYXR0ZXIvYXR0cmlidXRlcyIpLmxpbmUsYT10KCIuLi9k cmF3aW5nL2F0dHJpYnV0ZXMiKS5kYXNoLG89dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVu ZEZsYXQscz10KCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIikudGVtcGxhdGVkQXJy YXk7dCgiLi4vLi4vY29uc3RhbnRzL2F4aXNfcGxhY2VhYmxlX29iamVjdHMiKTtlLmV4cG9y dHM9cygic2hhcGUiLHt2aXNpYmxlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRU eXBlOiJjYWxjK2FycmF5ZHJhdyJ9LHR5cGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVl czpbImNpcmNsZSIsInJlY3QiLCJwYXRoIiwibGluZSJdLGVkaXRUeXBlOiJjYWxjK2FycmF5 ZHJhdyJ9LGxheWVyOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJiZWxvdyIsImFi b3ZlIl0sZGZsdDoiYWJvdmUiLGVkaXRUeXBlOiJhcnJheWRyYXcifSx4cmVmOm8oe30sbi54 cmVmLHt9KSx4c2l6ZW1vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInNjYWxl ZCIsInBpeGVsIl0sZGZsdDoic2NhbGVkIixlZGl0VHlwZToiY2FsYythcnJheWRyYXcifSx4 YW5jaG9yOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9LHgwOnt2 YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9LHgxOnt2YWxUeXBlOiJh bnkiLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9LHlyZWY6byh7fSxuLnlyZWYse30pLHlz aXplbW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsic2NhbGVkIiwicGl4ZWwi XSxkZmx0OiJzY2FsZWQiLGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9LHlhbmNob3I6e3Zh bFR5cGU6ImFueSIsZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3In0seTA6e3ZhbFR5cGU6ImFu eSIsZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3In0seTE6e3ZhbFR5cGU6ImFueSIsZWRpdFR5 cGU6ImNhbGMrYXJyYXlkcmF3In0scGF0aDp7dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToi Y2FsYythcnJheWRyYXcifSxvcGFjaXR5Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDox LGRmbHQ6MSxlZGl0VHlwZToiYXJyYXlkcmF3In0sbGluZTp7Y29sb3I6byh7fSxpLmNvbG9y LHtlZGl0VHlwZToiYXJyYXlkcmF3In0pLHdpZHRoOm8oe30saS53aWR0aCx7ZWRpdFR5cGU6 ImNhbGMrYXJyYXlkcmF3In0pLGRhc2g6byh7fSxhLHtlZGl0VHlwZToiYXJyYXlkcmF3In0p LGVkaXRUeXBlOiJjYWxjK2FycmF5ZHJhdyJ9LGZpbGxjb2xvcjp7dmFsVHlwZToiY29sb3Ii LGRmbHQ6InJnYmEoMCwwLDAsMCkiLGVkaXRUeXBlOiJhcnJheWRyYXcifSxmaWxscnVsZTp7 dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiZXZlbm9kZCIsIm5vbnplcm8iXSxkZmx0 OiJldmVub2RkIixlZGl0VHlwZToiYXJyYXlkcmF3In0sZWRpdGFibGU6e3ZhbFR5cGU6ImJv b2xlYW4iLGRmbHQ6ITEsZWRpdFR5cGU6ImNhbGMrYXJyYXlkcmF3In0sZWRpdFR5cGU6ImFy cmF5ZHJhdyJ9KX0seyIuLi8uLi9jb25zdGFudHMvYXhpc19wbGFjZWFibGVfb2JqZWN0cyI6 NDcyLCIuLi8uLi9saWIvZXh0ZW5kIjo0OTMsIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxh dGUiOjU0MywiLi4vLi4vdHJhY2VzL3NjYXR0ZXIvYXR0cmlidXRlcyI6OTI3LCIuLi9hbm5v dGF0aW9ucy9hdHRyaWJ1dGVzIjozNDksIi4uL2RyYXdpbmcvYXR0cmlidXRlcyI6Mzg3fV0s NDQ3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIp LGk9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxhPXQoIi4vY29uc3RhbnRzIiks bz10KCIuL2hlbHBlcnMiKTtmdW5jdGlvbiBzKHQpe3JldHVybiBjKHQubGluZS53aWR0aCx0 LnhzaXplbW9kZSx0LngwLHQueDEsdC5wYXRoLCExKX1mdW5jdGlvbiBsKHQpe3JldHVybiBj KHQubGluZS53aWR0aCx0LnlzaXplbW9kZSx0LnkwLHQueTEsdC5wYXRoLCEwKX1mdW5jdGlv biBjKHQsZSxyLGkscyxsKXt2YXIgYz10LzIsdT1sO2lmKCJwaXhlbCI9PT1lKXt2YXIgZj1z P28uZXh0cmFjdFBhdGhDb29yZHMocyxsP2EucGFyYW1Jc1k6YS5wYXJhbUlzWCk6W3IsaV0s aD1uLmFnZ051bXMoTWF0aC5tYXgsbnVsbCxmKSxwPW4uYWdnTnVtcyhNYXRoLm1pbixudWxs LGYpLGQ9cDwwP01hdGguYWJzKHApK2M6YyxtPWg+MD9oK2M6YztyZXR1cm57cHBhZDpjLHBw YWRwbHVzOnU/ZDptLHBwYWRtaW51czp1P206ZH19cmV0dXJue3BwYWQ6Y319ZnVuY3Rpb24g dSh0LGUscixuLGkpe3ZhciBzPSJjYXRlZ29yeSI9PT10LnR5cGV8fCJtdWx0aWNhdGVnb3J5 Ij09PXQudHlwZT90LnIyYzp0LmQyYztpZih2b2lkIDAhPT1lKXJldHVybltzKGUpLHMocild O2lmKG4pe3ZhciBsLGMsdSxmLGg9MS8wLHA9LTEvMCxkPW4ubWF0Y2goYS5zZWdtZW50UkUp O2ZvcigiZGF0ZSI9PT10LnR5cGUmJihzPW8uZGVjb2RlRGF0ZShzKSksbD0wO2w8ZC5sZW5n dGg7bCsrKXZvaWQgMCE9PShjPWlbZFtsXS5jaGFyQXQoMCldLmRyYXduKSYmKCEodT1kW2xd LnN1YnN0cigxKS5tYXRjaChhLnBhcmFtUkUpKXx8dS5sZW5ndGg8Y3x8KChmPXModVtjXSkp PGgmJihoPWYpLGY+cCYmKHA9ZikpKTtyZXR1cm4gcD49aD9baCxwXTp2b2lkIDB9fWUuZXhw b3J0cz1mdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0LHI9bi5maWx0ZXJWaXNpYmxl KGUuc2hhcGVzKTtpZihyLmxlbmd0aCYmdC5fZnVsbERhdGEubGVuZ3RoKWZvcih2YXIgbz0w O288ci5sZW5ndGg7bysrKXt2YXIgYyxmLGg9cltvXTtoLl9leHRyZW1lcz17fTt2YXIgcD1p LmdldFJlZlR5cGUoaC54cmVmKSxkPWkuZ2V0UmVmVHlwZShoLnlyZWYpO2lmKCJwYXBlciIh PT1oLnhyZWYmJiJkb21haW4iIT09cCl7dmFyIG09InBpeGVsIj09PWgueHNpemVtb2RlP2gu eGFuY2hvcjpoLngwLGc9InBpeGVsIj09PWgueHNpemVtb2RlP2gueGFuY2hvcjpoLngxOyhm PXUoYz1pLmdldEZyb21JZCh0LGgueHJlZiksbSxnLGgucGF0aCxhLnBhcmFtSXNYKSkmJiho Ll9leHRyZW1lc1tjLl9pZF09aS5maW5kRXh0cmVtZXMoYyxmLHMoaCkpKX1pZigicGFwZXIi IT09aC55cmVmJiYiZG9tYWluIiE9PWQpe3ZhciB2PSJwaXhlbCI9PT1oLnlzaXplbW9kZT9o LnlhbmNob3I6aC55MCx5PSJwaXhlbCI9PT1oLnlzaXplbW9kZT9oLnlhbmNob3I6aC55MTso Zj11KGM9aS5nZXRGcm9tSWQodCxoLnlyZWYpLHYseSxoLnBhdGgsYS5wYXJhbUlzWSkpJiYo aC5fZXh0cmVtZXNbYy5faWRdPWkuZmluZEV4dHJlbWVzKGMsZixsKGgpKSl9fX19LHsiLi4v Li4vbGliIjo1MDMsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo1NTQsIi4vY29uc3Rh bnRzIjo0NDgsIi4vaGVscGVycyI6NDU3fV0sNDQ4OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO2UuZXhwb3J0cz17c2VnbWVudFJFOi9bTUxIVlFDVFNaXVteTUxIVlFDVFNaXSov ZyxwYXJhbVJFOi9bXlxzLF0rL2cscGFyYW1Jc1g6e006ezA6ITAsZHJhd246MH0sTDp7MDoh MCxkcmF3bjowfSxIOnswOiEwLGRyYXduOjB9LFY6e30sUTp7MDohMCwyOiEwLGRyYXduOjJ9 LEM6ezA6ITAsMjohMCw0OiEwLGRyYXduOjR9LFQ6ezA6ITAsZHJhd246MH0sUzp7MDohMCwy OiEwLGRyYXduOjJ9LFo6e319LHBhcmFtSXNZOntNOnsxOiEwLGRyYXduOjF9LEw6ezE6ITAs ZHJhd246MX0sSDp7fSxWOnswOiEwLGRyYXduOjB9LFE6ezE6ITAsMzohMCxkcmF3bjozfSxD OnsxOiEwLDM6ITAsNTohMCxkcmF3bjo1fSxUOnsxOiEwLGRyYXduOjF9LFM6ezE6ITAsMzoh MCxkcmF3bjo1fSxaOnt9fSxudW1QYXJhbXM6e006MixMOjIsSDoxLFY6MSxROjQsQzo2LFQ6 MixTOjQsWjowfX19LHt9XSw0NDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGE9 dCgiLi4vLi4vcGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIiksbz10KCIuL2F0dHJp YnV0ZXMiKSxzPXQoIi4vaGVscGVycyIpO2Z1bmN0aW9uIGwodCxlLHIpe2Z1bmN0aW9uIGEo cixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLG8scixpKX1pZihhKCJ2aXNpYmxlIikpe3ZhciBs PWEoInBhdGgiKSxjPWEoInR5cGUiLGw/InBhdGgiOiJyZWN0Iik7InBhdGgiIT09ZS50eXBl JiZkZWxldGUgZS5wYXRoLGEoImVkaXRhYmxlIiksYSgibGF5ZXIiKSxhKCJvcGFjaXR5Iiks YSgiZmlsbGNvbG9yIiksYSgiZmlsbHJ1bGUiKSxhKCJsaW5lLndpZHRoIikmJihhKCJsaW5l LmNvbG9yIiksYSgibGluZS5kYXNoIikpO2Zvcih2YXIgdT1hKCJ4c2l6ZW1vZGUiKSxmPWEo InlzaXplbW9kZSIpLGg9WyJ4IiwieSJdLHA9MDtwPDI7cCsrKXt2YXIgZCxtLGcsdj1oW3Bd LHk9disiYW5jaG9yIix4PSJ4Ij09PXY/dTpmLGI9e19mdWxsTGF5b3V0OnJ9LF89aS5jb2Vy Y2VSZWYodCxlLGIsdix2b2lkIDAsInBhcGVyIik7aWYoInJhbmdlIj09PWkuZ2V0UmVmVHlw ZShfKT8oKGQ9aS5nZXRGcm9tSWQoYixfKSkuX3NoYXBlSW5kaWNlcy5wdXNoKGUuX2luZGV4 KSxnPXMucmFuZ2VUb1NoYXBlUG9zaXRpb24oZCksbT1zLnNoYXBlUG9zaXRpb25Ub1Jhbmdl KGQpKTptPWc9bi5pZGVudGl0eSwicGF0aCIhPT1jKXt2YXIgdz12KyIwIixUPXYrIjEiLGs9 dFt3XSxBPXRbVF07dFt3XT1tKHRbd10sITApLHRbVF09bSh0W1RdLCEwKSwicGl4ZWwiPT09 eD8oYSh3LDApLGEoVCwxMCkpOihpLmNvZXJjZVBvc2l0aW9uKGUsYixhLF8sdywuMjUpLGku Y29lcmNlUG9zaXRpb24oZSxiLGEsXyxULC43NSkpLGVbd109ZyhlW3ddKSxlW1RdPWcoZVtU XSksdFt3XT1rLHRbVF09QX1pZigicGl4ZWwiPT09eCl7dmFyIE09dFt5XTt0W3ldPW0odFt5 XSwhMCksaS5jb2VyY2VQb3NpdGlvbihlLGIsYSxfLHksLjI1KSxlW3ldPWcoZVt5XSksdFt5 XT1NfX0icGF0aCI9PT1jP2EoInBhdGgiKTpuLm5vbmVPckFsbCh0LGUsWyJ4MCIsIngxIiwi eTAiLCJ5MSJdKX19ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7YSh0LGUse25hbWU6InNoYXBl cyIsaGFuZGxlSXRlbURlZmF1bHRzOmx9KX19LHsiLi4vLi4vbGliIjo1MDMsIi4uLy4uL3Bs b3RzL2FycmF5X2NvbnRhaW5lcl9kZWZhdWx0cyI6NTQ5LCIuLi8uLi9wbG90cy9jYXJ0ZXNp YW4vYXhlcyI6NTU0LCIuL2F0dHJpYnV0ZXMiOjQ0NiwiLi9oZWxwZXJzIjo0NTd9XSw0NTA6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcmVnaXN0cnki KSxpPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxv PXQoIi4vZHJhd19uZXdzaGFwZS9oZWxwZXJzIikucmVhZFBhdGhzLHM9dCgiLi9kcmF3X25l d3NoYXBlL2Rpc3BsYXlfb3V0bGluZXMiKSxsPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9o YW5kbGVfb3V0bGluZSIpLmNsZWFyT3V0bGluZUNvbnRyb2xsZXJzLGM9dCgiLi4vY29sb3Ii KSx1PXQoIi4uL2RyYXdpbmciKSxmPXQoIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUi KS5hcnJheUVkaXRvcixoPXQoIi4uL2RyYWdlbGVtZW50IikscD10KCIuLi8uLi9saWIvc2V0 Y3Vyc29yIiksZD10KCIuL2NvbnN0YW50cyIpLG09dCgiLi9oZWxwZXJzIik7ZnVuY3Rpb24g Zyh0KXt2YXIgZT10Ll9mdWxsTGF5b3V0O2Zvcih2YXIgciBpbiBlLl9zaGFwZVVwcGVyTGF5 ZXIuc2VsZWN0QWxsKCJwYXRoIikucmVtb3ZlKCksZS5fc2hhcGVMb3dlckxheWVyLnNlbGVj dEFsbCgicGF0aCIpLnJlbW92ZSgpLGUuX3Bsb3RzKXt2YXIgbj1lLl9wbG90c1tyXS5zaGFw ZWxheWVyO24mJm4uc2VsZWN0QWxsKCJwYXRoIikucmVtb3ZlKCl9Zm9yKHZhciBpPTA7aTxl LnNoYXBlcy5sZW5ndGg7aSsrKWUuc2hhcGVzW2ldLnZpc2libGUmJngodCxpKX1mdW5jdGlv biB2KHQpe3JldHVybiEhdC5fZnVsbExheW91dC5fZHJhd2luZ31mdW5jdGlvbiB5KHQpe3Jl dHVybiF0Ll9jb250ZXh0LmVkaXRzLnNoYXBlUG9zaXRpb259ZnVuY3Rpb24geCh0LGUpe3Qu X2Z1bGxMYXlvdXQuX3BhcGVyZGl2LnNlbGVjdEFsbCgnLnNoYXBlbGF5ZXIgW2RhdGEtaW5k ZXg9IicrZSsnIl0nKS5yZW1vdmUoKTt2YXIgcj1tLm1ha2VPcHRpb25zQW5kUGxvdGluZm8o dCxlKSxsPXIub3B0aW9ucyx4PXIucGxvdGluZm87aWYobC5faW5wdXQmJiExIT09bC52aXNp YmxlKWlmKCJiZWxvdyIhPT1sLmxheWVyKWsodC5fZnVsbExheW91dC5fc2hhcGVVcHBlckxh eWVyKTtlbHNlIGlmKCJwYXBlciI9PT1sLnhyZWZ8fCJwYXBlciI9PT1sLnlyZWYpayh0Ll9m dWxsTGF5b3V0Ll9zaGFwZUxvd2VyTGF5ZXIpO2Vsc2V7aWYoeC5faGFkUGxvdGluZm8paygo eC5tYWlucGxvdGluZm98fHgpLnNoYXBlbGF5ZXIpO2Vsc2Ugayh0Ll9mdWxsTGF5b3V0Ll9z aGFwZUxvd2VyTGF5ZXIpfWZ1bmN0aW9uIGsocil7dmFyIGs9Xyh0LGwpLEE9eyJkYXRhLWlu ZGV4IjplLCJmaWxsLXJ1bGUiOmwuZmlsbHJ1bGUsZDprfSxNPWwub3BhY2l0eSxTPWwuZmls bGNvbG9yLEU9bC5saW5lLndpZHRoP2wubGluZS5jb2xvcjoicmdiYSgwLDAsMCwwKSIsTD1s LmxpbmUud2lkdGgsQz1sLmxpbmUuZGFzaDtMfHwhMCE9PWwuZWRpdGFibGV8fChMPTUsQz0i c29saWQiKTt2YXIgUD0iWiIhPT1rW2subGVuZ3RoLTFdLEk9eSh0KSYmbC5lZGl0YWJsZSYm dC5fZnVsbExheW91dC5fYWN0aXZlU2hhcGVJbmRleD09PWU7SSYmKFM9UD8icmdiYSgwLDAs MCwwKSI6dC5fZnVsbExheW91dC5hY3RpdmVzaGFwZS5maWxsY29sb3IsTT10Ll9mdWxsTGF5 b3V0LmFjdGl2ZXNoYXBlLm9wYWNpdHkpO3ZhciBPLHo9ci5hcHBlbmQoInBhdGgiKS5hdHRy KEEpLnN0eWxlKCJvcGFjaXR5IixNKS5jYWxsKGMuc3Ryb2tlLEUpLmNhbGwoYy5maWxsLFMp LmNhbGwodS5kYXNoTGluZSxDLEwpO2lmKGIoeix0LGwpLChJfHx0Ll9jb250ZXh0LmVkaXRz LnNoYXBlUG9zaXRpb24pJiYoTz1mKHQubGF5b3V0LCJzaGFwZXMiLGwpKSxJKXt6LnN0eWxl KHtjdXJzb3I6Im1vdmUifSk7dmFyIEQ9e2VsZW1lbnQ6ei5ub2RlKCkscGxvdGluZm86eCxn ZDp0LGVkaXRIZWxwZXJzOk8saXNBY3RpdmVTaGFwZTohMH0sUj1vKGssdCk7cyhSLHosRCl9 ZWxzZSB0Ll9jb250ZXh0LmVkaXRzLnNoYXBlUG9zaXRpb24/ZnVuY3Rpb24odCxlLHIsbyxz LGwpe3ZhciBjLGYsZyx5LHgsVCxrLEEsTSxTLEUsTCxDLFAsSSxPLHo9InBpeGVsIj09PXIu eHNpemVtb2RlLEQ9InBpeGVsIj09PXIueXNpemVtb2RlLFI9ImxpbmUiPT09ci50eXBlLEY9 InBhdGgiPT09ci50eXBlLEI9bC5tb2RpZnlJdGVtLE49YS5nZXRGcm9tSWQodCxyLnhyZWYp LGo9YS5nZXRSZWZUeXBlKHIueHJlZiksVT1hLmdldEZyb21JZCh0LHIueXJlZiksVj1hLmdl dFJlZlR5cGUoci55cmVmKSxIPW0uZ2V0RGF0YVRvUGl4ZWwodCxOLCExLGopLHE9bS5nZXRE YXRhVG9QaXhlbCh0LFUsITAsViksRz1tLmdldFBpeGVsVG9EYXRhKHQsTiwhMSxqKSxZPW0u Z2V0UGl4ZWxUb0RhdGEodCxVLCEwLFYpLFc9Uj9mdW5jdGlvbigpe3ZhciB0PU1hdGgubWF4 KHIubGluZS53aWR0aCwxMCksbj1zLmFwcGVuZCgiZyIpLmF0dHIoImRhdGEtaW5kZXgiLG8p O24uYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsZS5hdHRyKCJkIikpLnN0eWxlKHtjdXJzb3I6 Im1vdmUiLCJzdHJva2Utd2lkdGgiOnQsInN0cm9rZS1vcGFjaXR5IjoiMCJ9KTt2YXIgaT17 ImZpbGwtb3BhY2l0eSI6IjAifSxhPU1hdGgubWF4KHQvMiwxMCk7cmV0dXJuIG4uYXBwZW5k KCJjaXJjbGUiKS5hdHRyKHsiZGF0YS1saW5lLXBvaW50Ijoic3RhcnQtcG9pbnQiLGN4Ono/ SChyLnhhbmNob3IpK3IueDA6SChyLngwKSxjeTpEP3Eoci55YW5jaG9yKS1yLnkwOnEoci55 MCkscjphfSkuc3R5bGUoaSkuY2xhc3NlZCgiY3Vyc29yLWdyYWIiLCEwKSxuLmFwcGVuZCgi Y2lyY2xlIikuYXR0cih7ImRhdGEtbGluZS1wb2ludCI6ImVuZC1wb2ludCIsY3g6ej9IKHIu eGFuY2hvcikrci54MTpIKHIueDEpLGN5OkQ/cShyLnlhbmNob3IpLXIueTE6cShyLnkxKSxy OmF9KS5zdHlsZShpKS5jbGFzc2VkKCJjdXJzb3ItZ3JhYiIsITApLG59KCk6ZSxYPXtlbGVt ZW50Olcubm9kZSgpLGdkOnQscHJlcEZuOmZ1bmN0aW9uKG4pe2lmKHYodCkpcmV0dXJuO3om Jih4PUgoci54YW5jaG9yKSk7RCYmKFQ9cShyLnlhbmNob3IpKTsicGF0aCI9PT1yLnR5cGU/ ST1yLnBhdGg6KGM9ej9yLngwOkgoci54MCksZj1EP3IueTA6cShyLnkwKSxnPXo/ci54MTpI KHIueDEpLHk9RD9yLnkxOnEoci55MSkpO2M8Zz8oTT1jLEM9IngwIixTPWcsUD0ieDEiKToo TT1nLEM9IngxIixTPWMsUD0ieDAiKTshRCYmZjx5fHxEJiZmPnk/KGs9ZixFPSJ5MCIsQT15 LEw9InkxIik6KGs9eSxFPSJ5MSIsQT1mLEw9InkwIik7WihuKSxRKHMsciksZnVuY3Rpb24o dCxlLHIpe3ZhciBuPWUueHJlZixpPWUueXJlZixvPWEuZ2V0RnJvbUlkKHIsbikscz1hLmdl dEZyb21JZChyLGkpLGw9IiI7InBhcGVyIj09PW58fG8uYXV0b3JhbmdlfHwobCs9bik7InBh cGVyIj09PWl8fHMuYXV0b3JhbmdlfHwobCs9aSk7dS5zZXRDbGlwVXJsKHQsbD8iY2xpcCIr ci5fZnVsbExheW91dC5fdWlkK2w6bnVsbCxyKX0oZSxyLHQpLFgubW92ZUZuPSJtb3ZlIj09 PU8/SjpLLFguYWx0S2V5PW4uYWx0S2V5fSxkb25lRm46ZnVuY3Rpb24oKXtpZih2KHQpKXJl dHVybjtwKGUpLCQocyksYihlLHQsciksbi5jYWxsKCJfZ3VpUmVsYXlvdXQiLHQsbC5nZXRV cGRhdGVPYmooKSl9LGNsaWNrRm46ZnVuY3Rpb24oKXtpZih2KHQpKXJldHVybjskKHMpfX07 ZnVuY3Rpb24gWihyKXtpZih2KHQpKU89bnVsbDtlbHNlIGlmKFIpTz0icGF0aCI9PT1yLnRh cmdldC50YWdOYW1lPyJtb3ZlIjoic3RhcnQtcG9pbnQiPT09ci50YXJnZXQuYXR0cmlidXRl c1siZGF0YS1saW5lLXBvaW50Il0udmFsdWU/InJlc2l6ZS1vdmVyLXN0YXJ0LXBvaW50Ijoi cmVzaXplLW92ZXItZW5kLXBvaW50IjtlbHNle3ZhciBuPVguZWxlbWVudC5nZXRCb3VuZGlu Z0NsaWVudFJlY3QoKSxpPW4ucmlnaHQtbi5sZWZ0LGE9bi5ib3R0b20tbi50b3Asbz1yLmNs aWVudFgtbi5sZWZ0LHM9ci5jbGllbnRZLW4udG9wLGw9IUYmJmk+MTAmJmE+MTAmJiFyLnNo aWZ0S2V5P2guZ2V0Q3Vyc29yKG8vaSwxLXMvYSk6Im1vdmUiO3AoZSxsKSxPPWwuc3BsaXQo Ii0iKVswXX19ZnVuY3Rpb24gSihuLGkpe2lmKCJwYXRoIj09PXIudHlwZSl7dmFyIGE9ZnVu Y3Rpb24odCl7cmV0dXJuIHR9LG89YSxsPWE7ej9CKCJ4YW5jaG9yIixyLnhhbmNob3I9Ryh4 K24pKToobz1mdW5jdGlvbih0KXtyZXR1cm4gRyhIKHQpK24pfSxOJiYiZGF0ZSI9PT1OLnR5 cGUmJihvPW0uZW5jb2RlRGF0ZShvKSkpLEQ/QigieWFuY2hvciIsci55YW5jaG9yPVkoVCtp KSk6KGw9ZnVuY3Rpb24odCl7cmV0dXJuIFkocSh0KStpKX0sVSYmImRhdGUiPT09VS50eXBl JiYobD1tLmVuY29kZURhdGUobCkpKSxCKCJwYXRoIixyLnBhdGg9dyhJLG8sbCkpfWVsc2Ug ej9CKCJ4YW5jaG9yIixyLnhhbmNob3I9Ryh4K24pKTooQigieDAiLHIueDA9RyhjK24pKSxC KCJ4MSIsci54MT1HKGcrbikpKSxEP0IoInlhbmNob3IiLHIueWFuY2hvcj1ZKFQraSkpOihC KCJ5MCIsci55MD1ZKGYraSkpLEIoInkxIixyLnkxPVkoeStpKSkpO2UuYXR0cigiZCIsXyh0 LHIpKSxRKHMscil9ZnVuY3Rpb24gSyhuLGkpe2lmKEYpe3ZhciBhPWZ1bmN0aW9uKHQpe3Jl dHVybiB0fSxvPWEsbD1hO3o/QigieGFuY2hvciIsci54YW5jaG9yPUcoeCtuKSk6KG89ZnVu Y3Rpb24odCl7cmV0dXJuIEcoSCh0KStuKX0sTiYmImRhdGUiPT09Ti50eXBlJiYobz1tLmVu Y29kZURhdGUobykpKSxEP0IoInlhbmNob3IiLHIueWFuY2hvcj1ZKFQraSkpOihsPWZ1bmN0 aW9uKHQpe3JldHVybiBZKHEodCkraSl9LFUmJiJkYXRlIj09PVUudHlwZSYmKGw9bS5lbmNv ZGVEYXRlKGwpKSksQigicGF0aCIsci5wYXRoPXcoSSxvLGwpKX1lbHNlIGlmKFIpe2lmKCJy ZXNpemUtb3Zlci1zdGFydC1wb2ludCI9PT1PKXt2YXIgdT1jK24saD1EP2YtaTpmK2k7Qigi eDAiLHIueDA9ej91OkcodSkpLEIoInkwIixyLnkwPUQ/aDpZKGgpKX1lbHNlIGlmKCJyZXNp emUtb3Zlci1lbmQtcG9pbnQiPT09Tyl7dmFyIHA9ZytuLGQ9RD95LWk6eStpO0IoIngxIixy LngxPXo/cDpHKHApKSxCKCJ5MSIsci55MT1EP2Q6WShkKSl9fWVsc2V7dmFyIHY9ZnVuY3Rp b24odCl7cmV0dXJuLTEhPT1PLmluZGV4T2YodCl9LGI9digibiIpLGo9digicyIpLFY9digi dyIpLFc9digiZSIpLFg9Yj9rK2k6ayxaPWo/QStpOkEsSj1WP00rbjpNLEs9Vz9TK246UztE JiYoYiYmKFg9ay1pKSxqJiYoWj1BLWkpKSwoIUQmJlotWD4xMHx8RCYmWC1aPjEwKSYmKEIo RSxyW0VdPUQ/WDpZKFgpKSxCKEwscltMXT1EP1o6WShaKSkpLEstSj4xMCYmKEIoQyxyW0Nd PXo/SjpHKEopKSxCKFAscltQXT16P0s6RyhLKSkpfWUuYXR0cigiZCIsXyh0LHIpKSxRKHMs cil9ZnVuY3Rpb24gUSh0LGUpeyh6fHxEKSYmZnVuY3Rpb24oKXt2YXIgcj0icGF0aCIhPT1l LnR5cGUsbj10LnNlbGVjdEFsbCgiLnZpc3VhbC1jdWUiKS5kYXRhKFswXSk7bi5lbnRlcigp LmFwcGVuZCgicGF0aCIpLmF0dHIoe2ZpbGw6IiNmZmYiLCJmaWxsLXJ1bGUiOiJldmVub2Rk IixzdHJva2U6IiMwMDAiLCJzdHJva2Utd2lkdGgiOjF9KS5jbGFzc2VkKCJ2aXN1YWwtY3Vl IiwhMCk7dmFyIGE9SCh6P2UueGFuY2hvcjppLm1pZFJhbmdlKHI/W2UueDAsZS54MV06bS5l eHRyYWN0UGF0aENvb3JkcyhlLnBhdGgsZC5wYXJhbUlzWCkpKSxvPXEoRD9lLnlhbmNob3I6 aS5taWRSYW5nZShyP1tlLnkwLGUueTFdOm0uZXh0cmFjdFBhdGhDb29yZHMoZS5wYXRoLGQu cGFyYW1Jc1kpKSk7aWYoYT1tLnJvdW5kUG9zaXRpb25Gb3JTaGFycFN0cm9rZVJlbmRlcmlu ZyhhLDEpLG89bS5yb3VuZFBvc2l0aW9uRm9yU2hhcnBTdHJva2VSZW5kZXJpbmcobywxKSx6 JiZEKXt2YXIgcz0iTSIrKGEtMS0xKSsiLCIrKG8tMS0xKSsiaC04djJoOCB2OGgydi04IGg4 di0yaC04IHYtOGgtMiBaIjtuLmF0dHIoImQiLHMpfWVsc2UgaWYoeil7dmFyIGw9Ik0iKyhh LTEtMSkrIiwiKyhvLTktMSkrInYxOCBoMiB2LTE4IFoiO24uYXR0cigiZCIsbCl9ZWxzZXt2 YXIgYz0iTSIrKGEtOS0xKSsiLCIrKG8tMS0xKSsiaDE4IHYyIGgtMTggWiI7bi5hdHRyKCJk IixjKX19KCl9ZnVuY3Rpb24gJCh0KXt0LnNlbGVjdEFsbCgiLnZpc3VhbC1jdWUiKS5yZW1v dmUoKX1oLmluaXQoWCksVy5ub2RlKCkub25tb3VzZW1vdmU9Wn0odCx6LGwsZSxyLE8pOiEw PT09bC5lZGl0YWJsZSYmei5zdHlsZSgicG9pbnRlci1ldmVudHMiLFB8fGMub3BhY2l0eShT KSpNPD0uNT8ic3Ryb2tlIjoiYWxsIik7ei5ub2RlKCkuYWRkRXZlbnRMaXN0ZW5lcigiY2xp Y2siLChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LGUpe2lmKCF5KHQpKXJldHVybjt2 YXIgcj0rZS5ub2RlKCkuZ2V0QXR0cmlidXRlKCJkYXRhLWluZGV4Iik7aWYocj49MCl7aWYo cj09PXQuX2Z1bGxMYXlvdXQuX2FjdGl2ZVNoYXBlSW5kZXgpcmV0dXJuIHZvaWQgVCh0KTt0 Ll9mdWxsTGF5b3V0Ll9hY3RpdmVTaGFwZUluZGV4PXIsdC5fZnVsbExheW91dC5fZGVhY3Rp dmF0ZVNoYXBlPVQsZyh0KX19KHQseil9KSl9fWZ1bmN0aW9uIGIodCxlLHIpe3ZhciBuPShy LnhyZWYrci55cmVmKS5yZXBsYWNlKC9wYXBlci9nLCIiKS5yZXBsYWNlKC9beHl6XVsxLTld KiAqZG9tYWluL2csIiIpO3Uuc2V0Q2xpcFVybCh0LG4/ImNsaXAiK2UuX2Z1bGxMYXlvdXQu X3VpZCtuOm51bGwsZSl9ZnVuY3Rpb24gXyh0LGUpe3ZhciByLG4sbyxzLGwsYyx1LGYsaD1l LnR5cGUscD1hLmdldFJlZlR5cGUoZS54cmVmKSxnPWEuZ2V0UmVmVHlwZShlLnlyZWYpLHY9 YS5nZXRGcm9tSWQodCxlLnhyZWYpLHk9YS5nZXRGcm9tSWQodCxlLnlyZWYpLHg9dC5fZnVs bExheW91dC5fc2l6ZTtpZih2PyJkb21haW4iPT09cD9uPWZ1bmN0aW9uKHQpe3JldHVybiB2 Ll9vZmZzZXQrdi5fbGVuZ3RoKnR9OihyPW0uc2hhcGVQb3NpdGlvblRvUmFuZ2Uodiksbj1m dW5jdGlvbih0KXtyZXR1cm4gdi5fb2Zmc2V0K3YucjJwKHIodCwhMCkpfSk6bj1mdW5jdGlv bih0KXtyZXR1cm4geC5sK3gudyp0fSx5PyJkb21haW4iPT09Zz9zPWZ1bmN0aW9uKHQpe3Jl dHVybiB5Ll9vZmZzZXQreS5fbGVuZ3RoKigxLXQpfToobz1tLnNoYXBlUG9zaXRpb25Ub1Jh bmdlKHkpLHM9ZnVuY3Rpb24odCl7cmV0dXJuIHkuX29mZnNldCt5LnIycChvKHQsITApKX0p OnM9ZnVuY3Rpb24odCl7cmV0dXJuIHgudCt4LmgqKDEtdCl9LCJwYXRoIj09PWgpcmV0dXJu IHYmJiJkYXRlIj09PXYudHlwZSYmKG49bS5kZWNvZGVEYXRlKG4pKSx5JiYiZGF0ZSI9PT15 LnR5cGUmJihzPW0uZGVjb2RlRGF0ZShzKSksZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQucGF0 aCxhPXQueHNpemVtb2RlLG89dC55c2l6ZW1vZGUscz10LnhhbmNob3IsbD10LnlhbmNob3I7 cmV0dXJuIG4ucmVwbGFjZShkLnNlZ21lbnRSRSwoZnVuY3Rpb24odCl7dmFyIG49MCxjPXQu Y2hhckF0KDApLHU9ZC5wYXJhbUlzWFtjXSxmPWQucGFyYW1Jc1lbY10saD1kLm51bVBhcmFt c1tjXSxwPXQuc3Vic3RyKDEpLnJlcGxhY2UoZC5wYXJhbVJFLChmdW5jdGlvbih0KXtyZXR1 cm4gdVtuXT90PSJwaXhlbCI9PT1hP2UocykrTnVtYmVyKHQpOmUodCk6ZltuXSYmKHQ9InBp eGVsIj09PW8/cihsKS1OdW1iZXIodCk6cih0KSksKytuPmgmJih0PSJYIiksdH0pKTtyZXR1 cm4gbj5oJiYocD1wLnJlcGxhY2UoL1tccyxdKlguKi8sIiIpLGkubG9nKCJJZ25vcmluZyBl eHRyYSBwYXJhbXMgaW4gc2VnbWVudCAiK3QpKSxjK3B9KSl9KGUsbixzKTtpZigicGl4ZWwi PT09ZS54c2l6ZW1vZGUpe3ZhciBiPW4oZS54YW5jaG9yKTtsPWIrZS54MCxjPWIrZS54MX1l bHNlIGw9bihlLngwKSxjPW4oZS54MSk7aWYoInBpeGVsIj09PWUueXNpemVtb2RlKXt2YXIg Xz1zKGUueWFuY2hvcik7dT1fLWUueTAsZj1fLWUueTF9ZWxzZSB1PXMoZS55MCksZj1zKGUu eTEpO2lmKCJsaW5lIj09PWgpcmV0dXJuIk0iK2wrIiwiK3UrIkwiK2MrIiwiK2Y7aWYoInJl Y3QiPT09aClyZXR1cm4iTSIrbCsiLCIrdSsiSCIrYysiViIrZisiSCIrbCsiWiI7dmFyIHc9 KGwrYykvMixUPSh1K2YpLzIsaz1NYXRoLmFicyh3LWwpLEE9TWF0aC5hYnMoVC11KSxNPSJB IitrKyIsIitBLFM9dytrKyIsIitUO3JldHVybiJNIitTK00rIiAwIDEsMSAiKyh3KyIsIiso VC1BKSkrTSsiIDAgMCwxICIrUysiWiJ9ZnVuY3Rpb24gdyh0LGUscil7cmV0dXJuIHQucmVw bGFjZShkLnNlZ21lbnRSRSwoZnVuY3Rpb24odCl7dmFyIG49MCxpPXQuY2hhckF0KDApLGE9 ZC5wYXJhbUlzWFtpXSxvPWQucGFyYW1Jc1lbaV0scz1kLm51bVBhcmFtc1tpXTtyZXR1cm4g aSt0LnN1YnN0cigxKS5yZXBsYWNlKGQucGFyYW1SRSwoZnVuY3Rpb24odCl7cmV0dXJuIG4+ PXN8fChhW25dP3Q9ZSh0KTpvW25dJiYodD1yKHQpKSxuKyspLHR9KSl9KSl9ZnVuY3Rpb24g VCh0KXt5KHQpJiYodC5fZnVsbExheW91dC5fYWN0aXZlU2hhcGVJbmRleD49MCYmKGwodCks ZGVsZXRlIHQuX2Z1bGxMYXlvdXQuX2FjdGl2ZVNoYXBlSW5kZXgsZyh0KSkpfWUuZXhwb3J0 cz17ZHJhdzpnLGRyYXdPbmU6eCxlcmFzZUFjdGl2ZVNoYXBlOmZ1bmN0aW9uKHQpe2lmKCF5 KHQpKXJldHVybjtsKHQpO3ZhciBlPXQuX2Z1bGxMYXlvdXQuX2FjdGl2ZVNoYXBlSW5kZXgs cj0odC5sYXlvdXR8fHt9KS5zaGFwZXN8fFtdO2lmKGU8ci5sZW5ndGgpe2Zvcih2YXIgaT1b XSxhPTA7YTxyLmxlbmd0aDthKyspYSE9PWUmJmkucHVzaChyW2FdKTtkZWxldGUgdC5fZnVs bExheW91dC5fYWN0aXZlU2hhcGVJbmRleCxuLmNhbGwoIl9ndWlSZWxheW91dCIsdCx7c2hh cGVzOml9KX19fX0seyIuLi8uLi9saWIiOjUwMywiLi4vLi4vbGliL3NldGN1cnNvciI6NTI0 LCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIjo1NDMsIi4uLy4uL3Bsb3RzL2NhcnRl c2lhbi9heGVzIjo1NTQsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9oYW5kbGVfb3V0bGluZSI6 NTY1LCIuLi8uLi9yZWdpc3RyeSI6NjM4LCIuLi9jb2xvciI6MzY2LCIuLi9kcmFnZWxlbWVu dCI6Mzg1LCIuLi9kcmF3aW5nIjozODgsIi4vY29uc3RhbnRzIjo0NDgsIi4vZHJhd19uZXdz aGFwZS9kaXNwbGF5X291dGxpbmVzIjo0NTQsIi4vZHJhd19uZXdzaGFwZS9oZWxwZXJzIjo0 NTUsIi4vaGVscGVycyI6NDU3fV0sNDUxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoIi4uLy4uL2RyYXdpbmcvYXR0cmlidXRlcyIpLmRhc2gsaT10KCIuLi8uLi8u Li9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdDtlLmV4cG9ydHM9e25ld3NoYXBlOntsaW5lOntj b2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJub25lIn0sd2lkdGg6e3ZhbFR5cGU6 Im51bWJlciIsbWluOjAsZGZsdDo0LGVkaXRUeXBlOiJub25lIn0sZGFzaDppKHt9LG4se2Rm bHQ6InNvbGlkIixlZGl0VHlwZToibm9uZSJ9KSxlZGl0VHlwZToibm9uZSJ9LGZpbGxjb2xv cjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6InJnYmEoMCwwLDAsMCkiLGVkaXRUeXBlOiJub25l In0sZmlsbHJ1bGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImV2ZW5vZGQiLCJu b256ZXJvIl0sZGZsdDoiZXZlbm9kZCIsZWRpdFR5cGU6Im5vbmUifSxvcGFjaXR5Ont2YWxU eXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MSxlZGl0VHlwZToibm9uZSJ9LGxheWVy Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJiZWxvdyIsImFib3ZlIl0sZGZsdDoi YWJvdmUiLGVkaXRUeXBlOiJub25lIn0sZHJhd2RpcmVjdGlvbjp7dmFsVHlwZToiZW51bWVy YXRlZCIsdmFsdWVzOlsib3J0aG8iLCJob3Jpem9udGFsIiwidmVydGljYWwiLCJkaWFnb25h bCJdLGRmbHQ6ImRpYWdvbmFsIixlZGl0VHlwZToibm9uZSJ9LGVkaXRUeXBlOiJub25lIn0s YWN0aXZlc2hhcGU6e2ZpbGxjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6InJnYigyNTUs MCwyNTUpIixlZGl0VHlwZToibm9uZSJ9LG9wYWNpdHk6e3ZhbFR5cGU6Im51bWJlciIsbWlu OjAsbWF4OjEsZGZsdDouNSxlZGl0VHlwZToibm9uZSJ9LGVkaXRUeXBlOiJub25lIn19fSx7 Ii4uLy4uLy4uL2xpYi9leHRlbmQiOjQ5MywiLi4vLi4vZHJhd2luZy9hdHRyaWJ1dGVzIjoz ODd9XSw0NTI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtDSVJD TEVfU0lERVM6MzIsaTAwMDowLGkwOTA6OCxpMTgwOjE2LGkyNzA6MjQsY29zNDU6TWF0aC5j b3MoTWF0aC5QSS80KSxzaW40NTpNYXRoLnNpbihNYXRoLlBJLzQpLFNRUlQyOk1hdGguc3Fy dCgyKX19LHt9XSw0NTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgi Li4vLi4vY29sb3IiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2lmKHIoIm5ld3NoYXBl LmRyYXdkaXJlY3Rpb24iKSxyKCJuZXdzaGFwZS5sYXllciIpLHIoIm5ld3NoYXBlLmZpbGxj b2xvciIpLHIoIm5ld3NoYXBlLmZpbGxydWxlIikscigibmV3c2hhcGUub3BhY2l0eSIpLHIo Im5ld3NoYXBlLmxpbmUud2lkdGgiKSl7dmFyIGk9KHR8fHt9KS5wbG90X2JnY29sb3J8fCIj RkZGIjtyKCJuZXdzaGFwZS5saW5lLmNvbG9yIixuLmNvbnRyYXN0KGkpKSxyKCJuZXdzaGFw ZS5saW5lLmRhc2giKX1yKCJhY3RpdmVzaGFwZS5maWxsY29sb3IiKSxyKCJhY3RpdmVzaGFw ZS5vcGFjaXR5Iil9fSx7Ii4uLy4uL2NvbG9yIjozNjZ9XSw0NTQ6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vZHJhZ2VsZW1lbnQiKSxpPXQoIi4uLy4u L2RyYWdlbGVtZW50L2hlbHBlcnMiKS5kcmF3TW9kZSxhPXQoIi4uLy4uLy4uL3JlZ2lzdHJ5 Iiksbz10KCIuL2NvbnN0YW50cyIpLHM9by5pMDAwLGw9by5pMDkwLGM9by5pMTgwLHU9by5p MjcwLGY9dCgiLi4vLi4vLi4vcGxvdHMvY2FydGVzaWFuL2hhbmRsZV9vdXRsaW5lIikuY2xl YXJPdXRsaW5lQ29udHJvbGxlcnMsaD10KCIuL2hlbHBlcnMiKSxwPWgucG9pbnRzU2hhcGVS ZWN0YW5nbGUsZD1oLnBvaW50c1NoYXBlRWxsaXBzZSxtPWgud3JpdGVQYXRocyxnPXQoIi4v bmV3c2hhcGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uIHQoZSxyLG8saCl7aHx8KGg9MCk7dmFy IHY9by5nZDtmdW5jdGlvbiB5KCl7dChlLHIsbyxoKyspLGQoZVswXSkmJngoe3JlZHJhd2lu ZzohMH0pfWZ1bmN0aW9uIHgodCl7by5pc0FjdGl2ZVNoYXBlPSExO3ZhciBlPWcocixvKTtP YmplY3Qua2V5cyhlKS5sZW5ndGgmJmEuY2FsbCgodHx8e30pLnJlZHJhd2luZz8icmVsYXlv dXQiOiJfZ3VpUmVsYXlvdXQiLHYsZSl9dmFyIGIsXyx3LFQsayxBPW8uaXNBY3RpdmVTaGFw ZSxNPXYuX2Z1bGxMYXlvdXQuX3pvb21sYXllcixTPW8uZHJhZ21vZGU7KGkoUyk/di5fZnVs bExheW91dC5fZHJhd2luZz0hMDp2Ll9mdWxsTGF5b3V0Ll9hY3RpdmVTaGFwZUluZGV4Pj0w JiZmKHYpLHIuYXR0cigiZCIsbShlKSksQSYmIWgpJiYoaz1mdW5jdGlvbih0LGUpe2Zvcih2 YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO3Rbcl09W107Zm9yKHZhciBpPTA7 aTxuLmxlbmd0aDtpKyspe3Rbcl1baV09W107Zm9yKHZhciBhPTA7YTxuW2ldLmxlbmd0aDth KyspdFtyXVtpXVthXT1uW2ldW2FdfX1yZXR1cm4gdH0oW10sZSksZnVuY3Rpb24odCl7Yj1b XTtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIGk9ZVtyXSxhPSFwKGkpJiZkKGkp O2Jbcl09W107Zm9yKHZhciBvPTA7bzxpLmxlbmd0aDtvKyspaWYoIloiIT09aVtvXVswXSYm KCFhfHxvPT09c3x8bz09PWx8fG89PT1jfHxvPT09dSkpe3ZhciBmPWlbb11bMV0saD1pW29d WzJdLG09dC5hcHBlbmQoImNpcmNsZSIpLmNsYXNzZWQoImN1cnNvci1ncmFiIiwhMCkuYXR0 cigiZGF0YS1pIixyKS5hdHRyKCJkYXRhLWoiLG8pLmF0dHIoImN4IixmKS5hdHRyKCJjeSIs aCkuYXR0cigiciIsNCkuc3R5bGUoeyJtaXgtYmxlbmQtbW9kZSI6Imx1bWlub3NpdHkiLGZp bGw6ImJsYWNrIixzdHJva2U6IndoaXRlIiwic3Ryb2tlLXdpZHRoIjoxfSk7YltyXVtvXT17 ZWxlbWVudDptLm5vZGUoKSxnZDp2LHByZXBGbjpFLGRvbmVGbjpDLGNsaWNrRm46UH0sbi5p bml0KGJbcl1bb10pfX19KE0uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJvdXRsaW5lLWNv bnRyb2xsZXJzIikpLGZ1bmN0aW9uKCl7aWYoXz1bXSwhZS5sZW5ndGgpcmV0dXJuO19bMF09 e2VsZW1lbnQ6clswXVswXSxnZDp2LHByZXBGbjpPLGRvbmVGbjp6fSxuLmluaXQoX1swXSl9 KCkpO2Z1bmN0aW9uIEUodCl7dz0rdC5zcmNFbGVtZW50LmdldEF0dHJpYnV0ZSgiZGF0YS1p IiksVD0rdC5zcmNFbGVtZW50LmdldEF0dHJpYnV0ZSgiZGF0YS1qIiksYlt3XVtUXS5tb3Zl Rm49TH1mdW5jdGlvbiBMKHQscil7aWYoZS5sZW5ndGgpe3ZhciBuPWtbd11bVF1bMV0saT1r W3ddW1RdWzJdLGE9ZVt3XSxvPWEubGVuZ3RoO2lmKHAoYSkpe2Zvcih2YXIgcz0wO3M8bztz KyspaWYocyE9PVQpe3ZhciBsPWFbc107bFsxXT09PWFbVF1bMV0mJihsWzFdPW4rdCksbFsy XT09PWFbVF1bMl0mJihsWzJdPWkrcil9aWYoYVtUXVsxXT1uK3QsYVtUXVsyXT1pK3IsIXAo YSkpZm9yKHZhciBjPTA7YzxvO2MrKylmb3IodmFyIHU9MDt1PGFbY10ubGVuZ3RoO3UrKylh W2NdW3VdPWtbd11bY11bdV19ZWxzZSBhW1RdWzFdPW4rdCxhW1RdWzJdPWkrcjt5KCl9fWZ1 bmN0aW9uIEMoKXt4KCl9ZnVuY3Rpb24gUCh0LHIpe2lmKDI9PT10KXt3PStyLnNyY0VsZW1l bnQuZ2V0QXR0cmlidXRlKCJkYXRhLWkiKSxUPStyLnNyY0VsZW1lbnQuZ2V0QXR0cmlidXRl KCJkYXRhLWoiKTt2YXIgbj1lW3ddO3Aobil8fGQobil8fGZ1bmN0aW9uKCl7aWYoZS5sZW5n dGgmJmVbd10mJmVbd10ubGVuZ3RoKXtmb3IodmFyIHQ9W10scj0wO3I8ZVt3XS5sZW5ndGg7 cisrKXIhPT1UJiZ0LnB1c2goZVt3XVtyXSk7dC5sZW5ndGg+MSYmKDIhPT10Lmxlbmd0aHx8 IloiIT09dFsxXVswXSkmJigwPT09VCYmKHRbMF1bMF09Ik0iKSxlW3ddPXQseSgpLHgoKSl9 fSgpfX1mdW5jdGlvbiBJKHQscil7IWZ1bmN0aW9uKHQscil7aWYoZS5sZW5ndGgpZm9yKHZh ciBuPTA7bjxlLmxlbmd0aDtuKyspZm9yKHZhciBpPTA7aTxlW25dLmxlbmd0aDtpKyspZm9y KHZhciBhPTA7YSsyPGVbbl1baV0ubGVuZ3RoO2ErPTIpZVtuXVtpXVthKzFdPWtbbl1baV1b YSsxXSt0LGVbbl1baV1bYSsyXT1rW25dW2ldW2ErMl0rcn0odCxyKSx5KCl9ZnVuY3Rpb24g Tyh0KXsodz0rdC5zcmNFbGVtZW50LmdldEF0dHJpYnV0ZSgiZGF0YS1pIikpfHwodz0wKSxf W3ddLm1vdmVGbj1JfWZ1bmN0aW9uIHooKXt4KCl9fX0seyIuLi8uLi8uLi9wbG90cy9jYXJ0 ZXNpYW4vaGFuZGxlX291dGxpbmUiOjU2NSwiLi4vLi4vLi4vcmVnaXN0cnkiOjYzOCwiLi4v Li4vZHJhZ2VsZW1lbnQiOjM4NSwiLi4vLi4vZHJhZ2VsZW1lbnQvaGVscGVycyI6Mzg0LCIu L2NvbnN0YW50cyI6NDUyLCIuL2hlbHBlcnMiOjQ1NSwiLi9uZXdzaGFwZXMiOjQ1Nn1dLDQ1 NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJwYXJzZS1zdmctcGF0 aCIpLGk9dCgiLi9jb25zdGFudHMiKSxhPWkuQ0lSQ0xFX1NJREVTLG89aS5TUVJUMixzPXQo Ii4uLy4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9oZWxwZXJzIiksbD1zLnAycixjPXMucjJwLHU9 WzAsMyw0LDUsNiwxLDJdLGY9WzAsMyw0LDEsMl07ZnVuY3Rpb24gaCh0LGUpe3JldHVybiBN YXRoLmFicyh0LWUpPD0xZS02fWZ1bmN0aW9uIHAodCxlKXt2YXIgcj1lWzFdLXRbMV0sbj1l WzJdLXRbMl07cmV0dXJuIE1hdGguc3FydChyKnIrbipuKX1yLndyaXRlUGF0aHM9ZnVuY3Rp b24odCl7dmFyIGU9dC5sZW5ndGg7aWYoIWUpcmV0dXJuIk0wLDBaIjtmb3IodmFyIHI9IiIs bj0wO248ZTtuKyspZm9yKHZhciBpPXRbbl0ubGVuZ3RoLGE9MDthPGk7YSsrKXt2YXIgbz10 W25dW2FdWzBdO2lmKCJaIj09PW8pcis9IloiO2Vsc2UgZm9yKHZhciBzPXRbbl1bYV0ubGVu Z3RoLGw9MDtsPHM7bCsrKXt2YXIgYz1sOyJRIj09PW98fCJTIj09PW8/Yz1mW2xdOiJDIj09 PW8mJihjPXVbbF0pLHIrPXRbbl1bYV1bY10sbD4wJiZsPHMtMSYmKHIrPSIsIil9fXJldHVy biByfSxyLnJlYWRQYXRocz1mdW5jdGlvbih0LGUscixpKXt2YXIgbyxzLHUsZj1uKHQpLGg9 W10scD0tMSxkPTAsbT0wLGc9ZnVuY3Rpb24oKXtzPWQsdT1tfTtnKCk7Zm9yKHZhciB2PTA7 djxmLmxlbmd0aDt2Kyspe3ZhciB5LHgsYixfLHc9W10sVD1mW3ZdWzBdLGs9VDtzd2l0Y2go VCl7Y2FzZSJNIjpwKyssaFtwXT1bXSxkPStmW3ZdWzFdLG09K2Zbdl1bMl0sdy5wdXNoKFtr LGQsbV0pLGcoKTticmVhaztjYXNlIlEiOmNhc2UiUyI6eT0rZlt2XVsxXSxiPStmW3ZdWzJd LGQ9K2Zbdl1bM10sbT0rZlt2XVs0XSx3LnB1c2goW2ssZCxtLHksYl0pO2JyZWFrO2Nhc2Ui QyI6eT0rZlt2XVsxXSxiPStmW3ZdWzJdLHg9K2Zbdl1bM10sXz0rZlt2XVs0XSxkPStmW3Zd WzVdLG09K2Zbdl1bNl0sdy5wdXNoKFtrLGQsbSx5LGIseCxfXSk7YnJlYWs7Y2FzZSJUIjpj YXNlIkwiOmQ9K2Zbdl1bMV0sbT0rZlt2XVsyXSx3LnB1c2goW2ssZCxtXSk7YnJlYWs7Y2Fz ZSJIIjprPSJMIixkPStmW3ZdWzFdLHcucHVzaChbayxkLG1dKTticmVhaztjYXNlIlYiOms9 IkwiLG09K2Zbdl1bMV0sdy5wdXNoKFtrLGQsbV0pO2JyZWFrO2Nhc2UiQSI6az0iTCI7dmFy IEE9K2Zbdl1bMV0sTT0rZlt2XVsyXTsrZlt2XVs0XXx8KEE9LUEsTT0tTSk7dmFyIFM9ZC1B LEU9bTtmb3Iobz0xO288PWEvMjtvKyspe3ZhciBMPTIqTWF0aC5QSSpvL2E7dy5wdXNoKFtr LFMrQSpNYXRoLmNvcyhMKSxFK00qTWF0aC5zaW4oTCldKX1icmVhaztjYXNlIloiOmQ9PT1z JiZtPT09dXx8KGQ9cyxtPXUsdy5wdXNoKFtrLGQsbV0pKX1mb3IodmFyIEM9KHJ8fHt9KS5k b21haW4sUD1lLl9mdWxsTGF5b3V0Ll9zaXplLEk9ciYmInBpeGVsIj09PXIueHNpemVtb2Rl LE89ciYmInBpeGVsIj09PXIueXNpemVtb2RlLHo9ITE9PT1pLEQ9MDtEPHcubGVuZ3RoO0Qr Kyl7Zm9yKG89MDtvKzI8NztvKz0yKXt2YXIgUj13W0RdW28rMV0sRj13W0RdW28rMl07dm9p ZCAwIT09UiYmdm9pZCAwIT09RiYmKGQ9UixtPUYsciYmKHIueGF4aXMmJnIueGF4aXMucDJy Pyh6JiYoUi09ci54YXhpcy5fb2Zmc2V0KSxSPUk/YyhyLnhheGlzLHIueGFuY2hvcikrUjps KHIueGF4aXMsUikpOih6JiYoUi09UC5sKSxDP1I9Qy54WzBdK1IvUC53OlIvPVAudyksci55 YXhpcyYmci55YXhpcy5wMnI/KHomJihGLT1yLnlheGlzLl9vZmZzZXQpLEY9Tz9jKHIueWF4 aXMsci55YW5jaG9yKS1GOmwoci55YXhpcyxGKSk6KHomJihGLT1QLnQpLEY9Qz9DLnlbMV0t Ri9QLmg6MS1GL1AuaCkpLHdbRF1bbysxXT1SLHdbRF1bbysyXT1GKX1oW3BdLnB1c2god1tE XS5zbGljZSgpKX19cmV0dXJuIGh9LHIucG9pbnRzU2hhcGVSZWN0YW5nbGU9ZnVuY3Rpb24o dCl7aWYoNSE9PXQubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgZT0xO2U8MztlKyspe2lmKCFo KHRbMF1bZV0tdFsxXVtlXSx0WzNdW2VdLXRbMl1bZV0pKXJldHVybiExO2lmKCFoKHRbMF1b ZV0tdFszXVtlXSx0WzFdW2VdLXRbMl1bZV0pKXJldHVybiExfXJldHVybiEoIWgodFswXVsx XSx0WzFdWzFdKSYmIWgodFswXVsxXSx0WzNdWzFdKSkmJiEhKHAodFswXSx0WzFdKSpwKHRb MF0sdFszXSkpfSxyLnBvaW50c1NoYXBlRWxsaXBzZT1mdW5jdGlvbih0KXt2YXIgZT10Lmxl bmd0aDtpZihlIT09YSsxKXJldHVybiExO2U9YTtmb3IodmFyIHI9MDtyPGU7cisrKXt2YXIg bj0oMiplLXIpJWUsaT0oZS8yK24pJWUsbz0oZS8yK3IpJWU7aWYoIWgocCh0W3JdLHRbb10p LHAodFtuXSx0W2ldKSkpcmV0dXJuITF9cmV0dXJuITB9LHIuaGFuZGxlRWxsaXBzZT1mdW5j dGlvbih0LGUsbil7aWYoIXQpcmV0dXJuW2Usbl07dmFyIGk9ci5lbGxpcHNlT3Zlcih7eDA6 ZVswXSx5MDplWzFdLHgxOm5bMF0seTE6blsxXX0pLHM9KGkueDEraS54MCkvMixsPShpLnkx K2kueTApLzIsYz0oaS54MS1pLngwKS8yLHU9KGkueTEtaS55MCkvMjtjfHwoYz11Lz1vKSx1 fHwodT1jLz1vKTtmb3IodmFyIGY9W10saD0wO2g8YTtoKyspe3ZhciBwPTIqaCpNYXRoLlBJ L2E7Zi5wdXNoKFtzK2MqTWF0aC5jb3MocCksbCt1Kk1hdGguc2luKHApXSl9cmV0dXJuIGZ9 LHIuZWxsaXBzZU92ZXI9ZnVuY3Rpb24odCl7dmFyIGU9dC54MCxyPXQueTAsbj10LngxLGk9 dC55MSxhPW4tZSxzPWktcixsPSgoZS09YSkrbikvMixjPSgoci09cykraSkvMjtyZXR1cm57 eDA6bC0oYSo9bykseTA6Yy0ocyo9bykseDE6bCthLHkxOmMrc319fSx7Ii4uLy4uLy4uL3Bs b3RzL2NhcnRlc2lhbi9oZWxwZXJzIjo1NjYsIi4vY29uc3RhbnRzIjo0NTIsInBhcnNlLXN2 Zy1wYXRoIjoyNTB9XSw0NTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiLi4vLi4vZHJhZ2VsZW1lbnQvaGVscGVycyIpLGk9bi5kcmF3TW9kZSxhPW4ub3Blbk1v ZGUsbz10KCIuL2NvbnN0YW50cyIpLHM9by5pMDAwLGw9by5pMDkwLGM9by5pMTgwLHU9by5p MjcwLGY9by5jb3M0NSxoPW8uc2luNDUscD10KCIuLi8uLi8uLi9wbG90cy9jYXJ0ZXNpYW4v aGVscGVycyIpLGQ9cC5wMnIsbT1wLnIycCxnPXQoIi4uLy4uLy4uL3Bsb3RzL2NhcnRlc2lh bi9oYW5kbGVfb3V0bGluZSIpLmNsZWFyU2VsZWN0LHY9dCgiLi9oZWxwZXJzIikseT12LnJl YWRQYXRocyx4PXYud3JpdGVQYXRocyxiPXYuZWxsaXBzZU92ZXI7ZS5leHBvcnRzPWZ1bmN0 aW9uKHQsZSl7aWYodC5sZW5ndGgpe3ZhciByPXRbMF1bMF07aWYocil7dmFyIG49ci5nZXRB dHRyaWJ1dGUoImQiKSxvPWUuZ2QscD1vLl9mdWxsTGF5b3V0Lm5ld3NoYXBlLHY9ZS5wbG90 aW5mbyxfPXYueGF4aXMsdz12LnlheGlzLFQ9ISF2LmRvbWFpbnx8IXYueGF4aXMsaz0hIXYu ZG9tYWlufHwhdi55YXhpcyxBPWUuaXNBY3RpdmVTaGFwZSxNPWUuZHJhZ21vZGUsUz0oby5s YXlvdXR8fHt9KS5zaGFwZXN8fFtdO2lmKCFpKE0pJiZ2b2lkIDAhPT1BKXt2YXIgRT1vLl9m dWxsTGF5b3V0Ll9hY3RpdmVTaGFwZUluZGV4O2lmKEU8Uy5sZW5ndGgpc3dpdGNoKG8uX2Z1 bGxMYXlvdXQuc2hhcGVzW0VdLnR5cGUpe2Nhc2UicmVjdCI6TT0iZHJhd3JlY3QiO2JyZWFr O2Nhc2UiY2lyY2xlIjpNPSJkcmF3Y2lyY2xlIjticmVhaztjYXNlImxpbmUiOk09ImRyYXds aW5lIjticmVhaztjYXNlInBhdGgiOnZhciBMPVNbRV0ucGF0aHx8IiI7TT0iWiI9PT1MW0wu bGVuZ3RoLTFdPyJkcmF3Y2xvc2VkcGF0aCI6ImRyYXdvcGVucGF0aCJ9fXZhciBDLFA9YShN KSxJPXkobixvLHYsQSksTz17ZWRpdGFibGU6ITAseHJlZjpUPyJwYXBlciI6Xy5faWQseXJl ZjprPyJwYXBlciI6dy5faWQsbGF5ZXI6cC5sYXllcixvcGFjaXR5OnAub3BhY2l0eSxsaW5l Ontjb2xvcjpwLmxpbmUuY29sb3Isd2lkdGg6cC5saW5lLndpZHRoLGRhc2g6cC5saW5lLmRh c2h9fTtpZihQfHwoTy5maWxsY29sb3I9cC5maWxsY29sb3IsTy5maWxscnVsZT1wLmZpbGxy dWxlKSwxPT09SS5sZW5ndGgmJihDPUlbMF0pLEMmJiJkcmF3cmVjdCI9PT1NKU8udHlwZT0i cmVjdCIsTy54MD1DWzBdWzFdLE8ueTA9Q1swXVsyXSxPLngxPUNbMl1bMV0sTy55MT1DWzJd WzJdO2Vsc2UgaWYoQyYmImRyYXdsaW5lIj09PU0pTy50eXBlPSJsaW5lIixPLngwPUNbMF1b MV0sTy55MD1DWzBdWzJdLE8ueDE9Q1sxXVsxXSxPLnkxPUNbMV1bMl07ZWxzZSBpZihDJiYi ZHJhd2NpcmNsZSI9PT1NKXtPLnR5cGU9ImNpcmNsZSI7dmFyIHo9Q1tzXVsxXSxEPUNbbF1b MV0sUj1DW2NdWzFdLEY9Q1t1XVsxXSxCPUNbc11bMl0sTj1DW2xdWzJdLGo9Q1tjXVsyXSxV PUNbdV1bMl0sVj12LnhheGlzJiYoImRhdGUiPT09di54YXhpcy50eXBlfHwibG9nIj09PXYu eGF4aXMudHlwZSksSD12LnlheGlzJiYoImRhdGUiPT09di55YXhpcy50eXBlfHwibG9nIj09 PXYueWF4aXMudHlwZSk7ViYmKHo9bSh2LnhheGlzLHopLEQ9bSh2LnhheGlzLEQpLFI9bSh2 LnhheGlzLFIpLEY9bSh2LnhheGlzLEYpKSxIJiYoQj1tKHYueWF4aXMsQiksTj1tKHYueWF4 aXMsTiksaj1tKHYueWF4aXMsaiksVT1tKHYueWF4aXMsVSkpO3ZhciBxPShEK0YpLzIsRz0o QitqKS8yLFk9Yih7eDA6cSx5MDpHLHgxOnErKEYtRCtSLXopLzIqZix5MTpHKyhVLU4rai1C KS8yKmh9KTtWJiYoWS54MD1kKHYueGF4aXMsWS54MCksWS54MT1kKHYueGF4aXMsWS54MSkp LEgmJihZLnkwPWQodi55YXhpcyxZLnkwKSxZLnkxPWQodi55YXhpcyxZLnkxKSksTy54MD1Z LngwLE8ueTA9WS55MCxPLngxPVkueDEsTy55MT1ZLnkxfWVsc2UgTy50eXBlPSJwYXRoIixf JiZ3JiZmdW5jdGlvbih0LGUscil7dmFyIG49ImRhdGUiPT09ZS50eXBlLGk9ImRhdGUiPT09 ci50eXBlO2lmKCFuJiYhaSlyZXR1cm4gdDtmb3IodmFyIGE9MDthPHQubGVuZ3RoO2ErKylm b3IodmFyIG89MDtvPHRbYV0ubGVuZ3RoO28rKylmb3IodmFyIHM9MDtzKzI8dFthXVtvXS5s ZW5ndGg7cys9MiluJiYodFthXVtvXVtzKzFdPXRbYV1bb11bcysxXS5yZXBsYWNlKCIgIiwi XyIpKSxpJiYodFthXVtvXVtzKzJdPXRbYV1bb11bcysyXS5yZXBsYWNlKCIgIiwiXyIpKX0o SSxfLHcpLE8ucGF0aD14KEkpLEM9bnVsbDtnKG8pO2Zvcih2YXIgVz1lLmVkaXRIZWxwZXJz LFg9KFd8fHt9KS5tb2RpZnlJdGVtLFo9W10sSj0wO0o8Uy5sZW5ndGg7SisrKXt2YXIgSz1v Ll9mdWxsTGF5b3V0LnNoYXBlc1tKXTtpZihaW0pdPUsuX2lucHV0LHZvaWQgMCE9PUEmJko9 PT1vLl9mdWxsTGF5b3V0Ll9hY3RpdmVTaGFwZUluZGV4KXt2YXIgUT1PO3N3aXRjaChLLnR5 cGUpe2Nhc2UibGluZSI6Y2FzZSJyZWN0IjpjYXNlImNpcmNsZSI6WCgieDAiLFEueDApLFgo IngxIixRLngxKSxYKCJ5MCIsUS55MCksWCgieTEiLFEueTEpO2JyZWFrO2Nhc2UicGF0aCI6 WCgicGF0aCIsUS5wYXRoKX19fXJldHVybiB2b2lkIDA9PT1BPyhaLnB1c2goTyksWik6Vz9X LmdldFVwZGF0ZU9iaigpOnt9fX19fSx7Ii4uLy4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9oYW5k bGVfb3V0bGluZSI6NTY1LCIuLi8uLi8uLi9wbG90cy9jYXJ0ZXNpYW4vaGVscGVycyI6NTY2 LCIuLi8uLi9kcmFnZWxlbWVudC9oZWxwZXJzIjozODQsIi4vY29uc3RhbnRzIjo0NTIsIi4v aGVscGVycyI6NDU1fV0sNDU3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4vY29uc3RhbnRzIiksaT10KCIuLi8uLi9saWIiKTtyLnJhbmdlVG9TaGFwZVBvc2l0 aW9uPWZ1bmN0aW9uKHQpe3JldHVybiJsb2ciPT09dC50eXBlP3QucjJkOmZ1bmN0aW9uKHQp e3JldHVybiB0fX0sci5zaGFwZVBvc2l0aW9uVG9SYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4i bG9nIj09PXQudHlwZT90LmQycjpmdW5jdGlvbih0KXtyZXR1cm4gdH19LHIuZGVjb2RlRGF0 ZT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSYmKGU9 ZS5yZXBsYWNlKCJfIiwiICIpKSx0KGUpfX0sci5lbmNvZGVEYXRlPWZ1bmN0aW9uKHQpe3Jl dHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChlKS5yZXBsYWNlKCIgIiwiXyIpfX0sci5leHRy YWN0UGF0aENvb3Jkcz1mdW5jdGlvbih0LGUpe3ZhciByPVtdO3JldHVybiB0Lm1hdGNoKG4u c2VnbWVudFJFKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgYT1lW3QuY2hhckF0KDApXS5k cmF3bjtpZih2b2lkIDAhPT1hKXt2YXIgbz10LnN1YnN0cigxKS5tYXRjaChuLnBhcmFtUkUp OyFvfHxvLmxlbmd0aDxhfHxyLnB1c2goaS5jbGVhbk51bWJlcihvW2FdKSl9fSkpLHJ9LHIu Z2V0RGF0YVRvUGl4ZWw9ZnVuY3Rpb24odCxlLG4saSl7dmFyIGEsbz10Ll9mdWxsTGF5b3V0 Ll9zaXplO2lmKGUpaWYoImRvbWFpbiI9PT1pKWE9ZnVuY3Rpb24odCl7cmV0dXJuIGUuX2xl bmd0aCoobj8xLXQ6dCkrZS5fb2Zmc2V0fTtlbHNle3ZhciBzPXIuc2hhcGVQb3NpdGlvblRv UmFuZ2UoZSk7YT1mdW5jdGlvbih0KXtyZXR1cm4gZS5fb2Zmc2V0K2UucjJwKHModCwhMCkp fSwiZGF0ZSI9PT1lLnR5cGUmJihhPXIuZGVjb2RlRGF0ZShhKSl9ZWxzZSBhPW4/ZnVuY3Rp b24odCl7cmV0dXJuIG8udCtvLmgqKDEtdCl9OmZ1bmN0aW9uKHQpe3JldHVybiBvLmwrby53 KnR9O3JldHVybiBhfSxyLmdldFBpeGVsVG9EYXRhPWZ1bmN0aW9uKHQsZSxuLGkpe3ZhciBh LG89dC5fZnVsbExheW91dC5fc2l6ZTtpZihlKWlmKCJkb21haW4iPT09aSlhPWZ1bmN0aW9u KHQpe3ZhciByPSh0LWUuX29mZnNldCkvZS5fbGVuZ3RoO3JldHVybiBuPzEtcjpyfTtlbHNl e3ZhciBzPXIucmFuZ2VUb1NoYXBlUG9zaXRpb24oZSk7YT1mdW5jdGlvbih0KXtyZXR1cm4g cyhlLnAycih0LWUuX29mZnNldCkpfX1lbHNlIGE9bj9mdW5jdGlvbih0KXtyZXR1cm4gMS0o dC1vLnQpL28uaH06ZnVuY3Rpb24odCl7cmV0dXJuKHQtby5sKS9vLnd9O3JldHVybiBhfSxy LnJvdW5kUG9zaXRpb25Gb3JTaGFycFN0cm9rZVJlbmRlcmluZz1mdW5jdGlvbih0LGUpe3Zh ciByPTE9PT1NYXRoLnJvdW5kKGUlMiksbj1NYXRoLnJvdW5kKHQpO3JldHVybiByP24rLjU6 bn0sci5tYWtlT3B0aW9uc0FuZFBsb3RpbmZvPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5fZnVs bExheW91dC5zaGFwZXNbZV18fHt9LG49dC5fZnVsbExheW91dC5fcGxvdHNbci54cmVmK3Iu eXJlZl07cmV0dXJuISFuP24uX2hhZFBsb3RpbmZvPSEwOihuPXt9LHIueHJlZiYmInBhcGVy IiE9PXIueHJlZiYmKG4ueGF4aXM9dC5fZnVsbExheW91dFtyLnhyZWYrImF4aXMiXSksci55 cmVmJiYicGFwZXIiIT09ci55cmVmJiYobi55YXhpcz10Ll9mdWxsTGF5b3V0W3IueXJlZisi YXhpcyJdKSksbi54c2l6ZW1vZGU9ci54c2l6ZW1vZGUsbi55c2l6ZW1vZGU9ci55c2l6ZW1v ZGUsbi54YW5jaG9yPXIueGFuY2hvcixuLnlhbmNob3I9ci55YW5jaG9yLHtvcHRpb25zOnIs cGxvdGluZm86bn19fSx7Ii4uLy4uL2xpYiI6NTAzLCIuL2NvbnN0YW50cyI6NDQ4fV0sNDU4 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vZHJhdyIpO2UuZXhw b3J0cz17bW9kdWxlVHlwZToiY29tcG9uZW50IixuYW1lOiJzaGFwZXMiLGxheW91dEF0dHJp YnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5TGF5b3V0RGVmYXVsdHM6dCgiLi9kZWZh dWx0cyIpLHN1cHBseURyYXdOZXdTaGFwZURlZmF1bHRzOnQoIi4vZHJhd19uZXdzaGFwZS9k ZWZhdWx0cyIpLGluY2x1ZGVCYXNlUGxvdDp0KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vaW5j bHVkZV9jb21wb25lbnRzIikoInNoYXBlcyIpLGNhbGNBdXRvcmFuZ2U6dCgiLi9jYWxjX2F1 dG9yYW5nZSIpLGRyYXc6bi5kcmF3LGRyYXdPbmU6bi5kcmF3T25lfX0seyIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4vaW5jbHVkZV9jb21wb25lbnRzIjo1NjcsIi4vYXR0cmlidXRlcyI6NDQ2 LCIuL2NhbGNfYXV0b3JhbmdlIjo0NDcsIi4vZGVmYXVsdHMiOjQ0OSwiLi9kcmF3Ijo0NTAs Ii4vZHJhd19uZXdzaGFwZS9kZWZhdWx0cyI6NDUzfV0sNDU5OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyIpLGk9 dCgiLi4vLi4vcGxvdHMvcGFkX2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL2xpYi9leHRlbmQi KS5leHRlbmREZWVwQWxsLG89dCgiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyIpLm92ZXJy aWRlQWxsLHM9dCgiLi4vLi4vcGxvdHMvYW5pbWF0aW9uX2F0dHJpYnV0ZXMiKSxsPXQoIi4u Ly4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKS50ZW1wbGF0ZWRBcnJheSxjPXQoIi4vY29u c3RhbnRzIiksdT1sKCJzdGVwIix7dmlzaWJsZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDoh MH0sbWV0aG9kOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJyZXN0eWxlIiwicmVs YXlvdXQiLCJhbmltYXRlIiwidXBkYXRlIiwic2tpcCJdLGRmbHQ6InJlc3R5bGUifSxhcmdz Ont2YWxUeXBlOiJpbmZvX2FycmF5IixmcmVlTGVuZ3RoOiEwLGl0ZW1zOlt7dmFsVHlwZToi YW55In0se3ZhbFR5cGU6ImFueSJ9LHt2YWxUeXBlOiJhbnkifV19LGxhYmVsOnt2YWxUeXBl OiJzdHJpbmcifSx2YWx1ZTp7dmFsVHlwZToic3RyaW5nIn0sZXhlY3V0ZTp7dmFsVHlwZToi Ym9vbGVhbiIsZGZsdDohMH19KTtlLmV4cG9ydHM9byhsKCJzbGlkZXIiLHt2aXNpYmxlOnt2 YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSxhY3RpdmU6e3ZhbFR5cGU6Im51bWJlciIsbWlu OjAsZGZsdDowfSxzdGVwczp1LGxlbm1vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVl czpbImZyYWN0aW9uIiwicGl4ZWxzIl0sZGZsdDoiZnJhY3Rpb24ifSxsZW46e3ZhbFR5cGU6 Im51bWJlciIsbWluOjAsZGZsdDoxfSx4Ont2YWxUeXBlOiJudW1iZXIiLG1pbjotMixtYXg6 MyxkZmx0OjB9LHBhZDphKGkoe2VkaXRUeXBlOiJhcnJheWRyYXcifSkse30se3Q6e2RmbHQ6 MjB9fSkseGFuY2hvcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiYXV0byIsImxl ZnQiLCJjZW50ZXIiLCJyaWdodCJdLGRmbHQ6ImxlZnQifSx5Ont2YWxUeXBlOiJudW1iZXIi LG1pbjotMixtYXg6MyxkZmx0OjB9LHlhbmNob3I6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZh bHVlczpbImF1dG8iLCJ0b3AiLCJtaWRkbGUiLCJib3R0b20iXSxkZmx0OiJ0b3AifSx0cmFu c2l0aW9uOntkdXJhdGlvbjp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjE1MH0sZWFz aW5nOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6cy50cmFuc2l0aW9uLmVhc2luZy52 YWx1ZXMsZGZsdDoiY3ViaWMtaW4tb3V0In19LGN1cnJlbnR2YWx1ZTp7dmlzaWJsZTp7dmFs VHlwZToiYm9vbGVhbiIsZGZsdDohMH0seGFuY2hvcjp7dmFsVHlwZToiZW51bWVyYXRlZCIs dmFsdWVzOlsibGVmdCIsImNlbnRlciIsInJpZ2h0Il0sZGZsdDoibGVmdCJ9LG9mZnNldDp7 dmFsVHlwZToibnVtYmVyIixkZmx0OjEwfSxwcmVmaXg6e3ZhbFR5cGU6InN0cmluZyJ9LHN1 ZmZpeDp7dmFsVHlwZToic3RyaW5nIn0sZm9udDpuKHt9KX0sZm9udDpuKHt9KSxhY3RpdmVi Z2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpjLmdyaXBCZ0FjdGl2ZUNvbG9yfSxiZ2Nv bG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpjLnJhaWxCZ0NvbG9yfSxib3JkZXJjb2xvcjp7 dmFsVHlwZToiY29sb3IiLGRmbHQ6Yy5yYWlsQm9yZGVyQ29sb3J9LGJvcmRlcndpZHRoOnt2 YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6Yy5yYWlsQm9yZGVyV2lkdGh9LHRpY2tsZW46 e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDpjLnRpY2tMZW5ndGh9LHRpY2tjb2xvcjp7 dmFsVHlwZToiY29sb3IiLGRmbHQ6Yy50aWNrQ29sb3J9LHRpY2t3aWR0aDp7dmFsVHlwZToi bnVtYmVyIixtaW46MCxkZmx0OjF9LG1pbm9ydGlja2xlbjp7dmFsVHlwZToibnVtYmVyIixt aW46MCxkZmx0OmMubWlub3JUaWNrTGVuZ3RofX0pLCJhcnJheWRyYXciLCJmcm9tLXJvb3Qi KX0seyIuLi8uLi9saWIvZXh0ZW5kIjo0OTMsIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMi OjUzNiwiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NTQzLCIuLi8uLi9wbG90cy9h bmltYXRpb25fYXR0cmlidXRlcyI6NTQ4LCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMi OjU4NSwiLi4vLi4vcGxvdHMvcGFkX2F0dHJpYnV0ZXMiOjYxOCwiLi9jb25zdGFudHMiOjQ2 MH1dLDQ2MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e25hbWU6 InNsaWRlcnMiLGNvbnRhaW5lckNsYXNzTmFtZToic2xpZGVyLWNvbnRhaW5lciIsZ3JvdXBD bGFzc05hbWU6InNsaWRlci1ncm91cCIsaW5wdXRBcmVhQ2xhc3M6InNsaWRlci1pbnB1dC1h cmVhIixyYWlsUmVjdENsYXNzOiJzbGlkZXItcmFpbC1yZWN0IixyYWlsVG91Y2hSZWN0Q2xh c3M6InNsaWRlci1yYWlsLXRvdWNoLXJlY3QiLGdyaXBSZWN0Q2xhc3M6InNsaWRlci1ncmlw LXJlY3QiLHRpY2tSZWN0Q2xhc3M6InNsaWRlci10aWNrLXJlY3QiLGlucHV0UHJveHlDbGFz czoic2xpZGVyLWlucHV0LXByb3h5IixsYWJlbHNDbGFzczoic2xpZGVyLWxhYmVscyIsbGFi ZWxHcm91cENsYXNzOiJzbGlkZXItbGFiZWwtZ3JvdXAiLGxhYmVsQ2xhc3M6InNsaWRlci1s YWJlbCIsY3VycmVudFZhbHVlQ2xhc3M6InNsaWRlci1jdXJyZW50LXZhbHVlIixyYWlsSGVp Z2h0OjUsbWVudUluZGV4QXR0ck5hbWU6InNsaWRlci1hY3RpdmUtaW5kZXgiLGF1dG9NYXJn aW5JZFJvb3Q6InNsaWRlci0iLG1pbldpZHRoOjMwLG1pbkhlaWdodDozMCx0ZXh0UGFkWDo0 MCxhcnJvd09mZnNldFg6NCxyYWlsUmFkaXVzOjIscmFpbFdpZHRoOjUscmFpbEJvcmRlcjo0 LHJhaWxCb3JkZXJXaWR0aDoxLHJhaWxCb3JkZXJDb2xvcjoiI2JlYzhkOSIscmFpbEJnQ29s b3I6IiNmOGZhZmMiLHJhaWxJbnNldDo4LHN0ZXBJbnNldDoxMCxncmlwUmFkaXVzOjEwLGdy aXBXaWR0aDoyMCxncmlwSGVpZ2h0OjIwLGdyaXBCb3JkZXI6MjAsZ3JpcEJvcmRlcldpZHRo OjEsZ3JpcEJvcmRlckNvbG9yOiIjYmVjOGQ5IixncmlwQmdDb2xvcjoiI2Y2ZjhmYSIsZ3Jp cEJnQWN0aXZlQ29sb3I6IiNkYmRkZTAiLGxhYmVsUGFkZGluZzo4LGxhYmVsT2Zmc2V0OjAs dGlja1dpZHRoOjEsdGlja0NvbG9yOiIjMzMzIix0aWNrT2Zmc2V0OjI1LHRpY2tMZW5ndGg6 NyxtaW5vclRpY2tPZmZzZXQ6MjUsbWlub3JUaWNrQ29sb3I6IiMzMzMiLG1pbm9yVGlja0xl bmd0aDo0LGN1cnJlbnRWYWx1ZVBhZGRpbmc6OCxjdXJyZW50VmFsdWVJbnNldDowfX0se31d LDQ2MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIi KSxpPXQoIi4uLy4uL3Bsb3RzL2FycmF5X2NvbnRhaW5lcl9kZWZhdWx0cyIpLGE9dCgiLi9h dHRyaWJ1dGVzIiksbz10KCIuL2NvbnN0YW50cyIpLm5hbWUscz1hLnN0ZXBzO2Z1bmN0aW9u IGwodCxlLHIpe2Z1bmN0aW9uIG8ocixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLGEscixpKX1m b3IodmFyIHM9aSh0LGUse25hbWU6InN0ZXBzIixoYW5kbGVJdGVtRGVmYXVsdHM6Y30pLGw9 MCx1PTA7dTxzLmxlbmd0aDt1Kyspc1t1XS52aXNpYmxlJiZsKys7aWYobDwyP2UudmlzaWJs ZT0hMTpvKCJ2aXNpYmxlIikpe2UuX3N0ZXBDb3VudD1sO3ZhciBmPWUuX3Zpc2libGVTdGVw cz1uLmZpbHRlclZpc2libGUocyk7KHNbbygiYWN0aXZlIildfHx7fSkudmlzaWJsZXx8KGUu YWN0aXZlPWZbMF0uX2luZGV4KSxvKCJ4IiksbygieSIpLG4ubm9uZU9yQWxsKHQsZSxbIngi LCJ5Il0pLG8oInhhbmNob3IiKSxvKCJ5YW5jaG9yIiksbygibGVuIiksbygibGVubW9kZSIp LG8oInBhZC50IiksbygicGFkLnIiKSxvKCJwYWQuYiIpLG8oInBhZC5sIiksbi5jb2VyY2VG b250KG8sImZvbnQiLHIuZm9udCksbygiY3VycmVudHZhbHVlLnZpc2libGUiKSYmKG8oImN1 cnJlbnR2YWx1ZS54YW5jaG9yIiksbygiY3VycmVudHZhbHVlLnByZWZpeCIpLG8oImN1cnJl bnR2YWx1ZS5zdWZmaXgiKSxvKCJjdXJyZW50dmFsdWUub2Zmc2V0Iiksbi5jb2VyY2VGb250 KG8sImN1cnJlbnR2YWx1ZS5mb250IixlLmZvbnQpKSxvKCJ0cmFuc2l0aW9uLmR1cmF0aW9u IiksbygidHJhbnNpdGlvbi5lYXNpbmciKSxvKCJiZ2NvbG9yIiksbygiYWN0aXZlYmdjb2xv ciIpLG8oImJvcmRlcmNvbG9yIiksbygiYm9yZGVyd2lkdGgiKSxvKCJ0aWNrbGVuIiksbygi dGlja3dpZHRoIiksbygidGlja2NvbG9yIiksbygibWlub3J0aWNrbGVuIil9fWZ1bmN0aW9u IGModCxlKXtmdW5jdGlvbiByKHIsaSl7cmV0dXJuIG4uY29lcmNlKHQsZSxzLHIsaSl9aWYo InNraXAiPT09dC5tZXRob2R8fEFycmF5LmlzQXJyYXkodC5hcmdzKT9yKCJ2aXNpYmxlIik6 ZS52aXNpYmxlPSExKXtyKCJtZXRob2QiKSxyKCJhcmdzIik7dmFyIGk9cigibGFiZWwiLCJz dGVwLSIrZS5faW5kZXgpO3IoInZhbHVlIixpKSxyKCJleGVjdXRlIil9fWUuZXhwb3J0cz1m dW5jdGlvbih0LGUpe2kodCxlLHtuYW1lOm8saGFuZGxlSXRlbURlZmF1bHRzOmx9KX19LHsi Li4vLi4vbGliIjo1MDMsIi4uLy4uL3Bsb3RzL2FycmF5X2NvbnRhaW5lcl9kZWZhdWx0cyI6 NTQ5LCIuL2F0dHJpYnV0ZXMiOjQ1OSwiLi9jb25zdGFudHMiOjQ2MH1dLDQ2MjpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJAcGxvdGx5L2QzIiksaT10KCIuLi8u Li9wbG90cy9wbG90cyIpLGE9dCgiLi4vY29sb3IiKSxvPXQoIi4uL2RyYXdpbmciKSxzPXQo Ii4uLy4uL2xpYiIpLGw9cy5zdHJUcmFuc2xhdGUsYz10KCIuLi8uLi9saWIvc3ZnX3RleHRf dXRpbHMiKSx1PXQoIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKS5hcnJheUVkaXRv cixmPXQoIi4vY29uc3RhbnRzIiksaD10KCIuLi8uLi9jb25zdGFudHMvYWxpZ25tZW50Iiks cD1oLkxJTkVfU1BBQ0lORyxkPWguRlJPTV9UTCxtPWguRlJPTV9CUjtmdW5jdGlvbiBnKHQp e3JldHVybiBmLmF1dG9NYXJnaW5JZFJvb3QrdC5faW5kZXh9ZnVuY3Rpb24gdih0KXtyZXR1 cm4gdC5faW5kZXh9ZnVuY3Rpb24geSh0LGUpe3ZhciByPW8udGVzdGVyLnNlbGVjdEFsbCgi Zy4iK2YubGFiZWxHcm91cENsYXNzKS5kYXRhKGUuX3Zpc2libGVTdGVwcyk7ci5lbnRlcigp LmFwcGVuZCgiZyIpLmNsYXNzZWQoZi5sYWJlbEdyb3VwQ2xhc3MsITApO3ZhciBhPTAsbD0w O3IuZWFjaCgoZnVuY3Rpb24odCl7dmFyIHI9XyhuLnNlbGVjdCh0aGlzKSx7c3RlcDp0fSxl KS5ub2RlKCk7aWYocil7dmFyIGk9by5iQm94KHIpO2w9TWF0aC5tYXgobCxpLmhlaWdodCks YT1NYXRoLm1heChhLGkud2lkdGgpfX0pKSxyLnJlbW92ZSgpO3ZhciB1PWUuX2RpbXM9e307 dS5pbnB1dEFyZWFXaWR0aD1NYXRoLm1heChmLnJhaWxXaWR0aCxmLmdyaXBIZWlnaHQpO3Zh ciBoPXQuX2Z1bGxMYXlvdXQuX3NpemU7dS5seD1oLmwraC53KmUueCx1Lmx5PWgudCtoLmgq KDEtZS55KSwiZnJhY3Rpb24iPT09ZS5sZW5tb2RlP3Uub3V0ZXJMZW5ndGg9TWF0aC5yb3Vu ZChoLncqZS5sZW4pOnUub3V0ZXJMZW5ndGg9ZS5sZW4sdS5pbnB1dEFyZWFTdGFydD0wLHUu aW5wdXRBcmVhTGVuZ3RoPU1hdGgucm91bmQodS5vdXRlckxlbmd0aC1lLnBhZC5sLWUucGFk LnIpO3ZhciBwPSh1LmlucHV0QXJlYUxlbmd0aC0yKmYuc3RlcEluc2V0KS8oZS5fc3RlcENv dW50LTEpLHY9YStmLmxhYmVsUGFkZGluZztpZih1LmxhYmVsU3RyaWRlPU1hdGgubWF4KDEs TWF0aC5jZWlsKHYvcCkpLHUubGFiZWxIZWlnaHQ9bCx1LmN1cnJlbnRWYWx1ZU1heFdpZHRo PTAsdS5jdXJyZW50VmFsdWVIZWlnaHQ9MCx1LmN1cnJlbnRWYWx1ZVRvdGFsSGVpZ2h0PTAs dS5jdXJyZW50VmFsdWVNYXhMaW5lcz0xLGUuY3VycmVudHZhbHVlLnZpc2libGUpe3ZhciB5 PW8udGVzdGVyLmFwcGVuZCgiZyIpO3IuZWFjaCgoZnVuY3Rpb24odCl7dmFyIHI9eCh5LGUs dC5sYWJlbCksbj1yLm5vZGUoKSYmby5iQm94KHIubm9kZSgpKXx8e3dpZHRoOjAsaGVpZ2h0 OjB9LGk9Yy5saW5lQ291bnQocik7dS5jdXJyZW50VmFsdWVNYXhXaWR0aD1NYXRoLm1heCh1 LmN1cnJlbnRWYWx1ZU1heFdpZHRoLE1hdGguY2VpbChuLndpZHRoKSksdS5jdXJyZW50VmFs dWVIZWlnaHQ9TWF0aC5tYXgodS5jdXJyZW50VmFsdWVIZWlnaHQsTWF0aC5jZWlsKG4uaGVp Z2h0KSksdS5jdXJyZW50VmFsdWVNYXhMaW5lcz1NYXRoLm1heCh1LmN1cnJlbnRWYWx1ZU1h eExpbmVzLGkpfSkpLHUuY3VycmVudFZhbHVlVG90YWxIZWlnaHQ9dS5jdXJyZW50VmFsdWVI ZWlnaHQrZS5jdXJyZW50dmFsdWUub2Zmc2V0LHkucmVtb3ZlKCl9dS5oZWlnaHQ9dS5jdXJy ZW50VmFsdWVUb3RhbEhlaWdodCtmLnRpY2tPZmZzZXQrZS50aWNrbGVuK2YubGFiZWxPZmZz ZXQrdS5sYWJlbEhlaWdodCtlLnBhZC50K2UucGFkLmI7dmFyIGI9ImxlZnQiO3MuaXNSaWdo dEFuY2hvcihlKSYmKHUubHgtPXUub3V0ZXJMZW5ndGgsYj0icmlnaHQiKSxzLmlzQ2VudGVy QW5jaG9yKGUpJiYodS5seC09dS5vdXRlckxlbmd0aC8yLGI9ImNlbnRlciIpO3ZhciB3PSJ0 b3AiO3MuaXNCb3R0b21BbmNob3IoZSkmJih1Lmx5LT11LmhlaWdodCx3PSJib3R0b20iKSxz LmlzTWlkZGxlQW5jaG9yKGUpJiYodS5seS09dS5oZWlnaHQvMix3PSJtaWRkbGUiKSx1Lm91 dGVyTGVuZ3RoPU1hdGguY2VpbCh1Lm91dGVyTGVuZ3RoKSx1LmhlaWdodD1NYXRoLmNlaWwo dS5oZWlnaHQpLHUubHg9TWF0aC5yb3VuZCh1Lmx4KSx1Lmx5PU1hdGgucm91bmQodS5seSk7 dmFyIFQ9e3k6ZS55LGI6dS5oZWlnaHQqbVt3XSx0OnUuaGVpZ2h0KmRbd119OyJmcmFjdGlv biI9PT1lLmxlbm1vZGU/KFQubD0wLFQueGw9ZS54LWUubGVuKmRbYl0sVC5yPTAsVC54cj1l LngrZS5sZW4qbVtiXSk6KFQueD1lLngsVC5sPXUub3V0ZXJMZW5ndGgqZFtiXSxULnI9dS5v dXRlckxlbmd0aCptW2JdKSxpLmF1dG9NYXJnaW4odCxnKGUpLFQpfWZ1bmN0aW9uIHgodCxl LHIpe2lmKGUuY3VycmVudHZhbHVlLnZpc2libGUpe3ZhciBuLGksYT1lLl9kaW1zO3N3aXRj aChlLmN1cnJlbnR2YWx1ZS54YW5jaG9yKXtjYXNlInJpZ2h0IjpuPWEuaW5wdXRBcmVhTGVu Z3RoLWYuY3VycmVudFZhbHVlSW5zZXQtYS5jdXJyZW50VmFsdWVNYXhXaWR0aCxpPSJsZWZ0 IjticmVhaztjYXNlImNlbnRlciI6bj0uNSphLmlucHV0QXJlYUxlbmd0aCxpPSJtaWRkbGUi O2JyZWFrO2RlZmF1bHQ6bj1mLmN1cnJlbnRWYWx1ZUluc2V0LGk9ImxlZnQifXZhciBsPXMu ZW5zdXJlU2luZ2xlKHQsInRleHQiLGYubGFiZWxDbGFzcywoZnVuY3Rpb24odCl7dC5hdHRy KHsidGV4dC1hbmNob3IiOmksImRhdGEtbm90ZXgiOjF9KX0pKSx1PWUuY3VycmVudHZhbHVl LnByZWZpeD9lLmN1cnJlbnR2YWx1ZS5wcmVmaXg6IiI7aWYoInN0cmluZyI9PXR5cGVvZiBy KXUrPXI7ZWxzZXt2YXIgaD1lLnN0ZXBzW2UuYWN0aXZlXS5sYWJlbCxkPWUuX2dkLl9mdWxs TGF5b3V0Ll9tZXRhO2QmJihoPXMudGVtcGxhdGVTdHJpbmcoaCxkKSksdSs9aH1lLmN1cnJl bnR2YWx1ZS5zdWZmaXgmJih1Kz1lLmN1cnJlbnR2YWx1ZS5zdWZmaXgpLGwuY2FsbChvLmZv bnQsZS5jdXJyZW50dmFsdWUuZm9udCkudGV4dCh1KS5jYWxsKGMuY29udmVydFRvVHNwYW5z LGUuX2dkKTt2YXIgbT1jLmxpbmVDb3VudChsKSxnPShhLmN1cnJlbnRWYWx1ZU1heExpbmVz KzEtbSkqZS5jdXJyZW50dmFsdWUuZm9udC5zaXplKnA7cmV0dXJuIGMucG9zaXRpb25UZXh0 KGwsbixnKSxsfX1mdW5jdGlvbiBiKHQsZSxyKXtzLmVuc3VyZVNpbmdsZSh0LCJyZWN0Iixm LmdyaXBSZWN0Q2xhc3MsKGZ1bmN0aW9uKG4pe24uY2FsbChBLGUsdCxyKS5zdHlsZSgicG9p bnRlci1ldmVudHMiLCJhbGwiKX0pKS5hdHRyKHt3aWR0aDpmLmdyaXBXaWR0aCxoZWlnaHQ6 Zi5ncmlwSGVpZ2h0LHJ4OmYuZ3JpcFJhZGl1cyxyeTpmLmdyaXBSYWRpdXN9KS5jYWxsKGEu c3Ryb2tlLHIuYm9yZGVyY29sb3IpLmNhbGwoYS5maWxsLHIuYmdjb2xvcikuc3R5bGUoInN0 cm9rZS13aWR0aCIsci5ib3JkZXJ3aWR0aCsicHgiKX1mdW5jdGlvbiBfKHQsZSxyKXt2YXIg bj1zLmVuc3VyZVNpbmdsZSh0LCJ0ZXh0IixmLmxhYmVsQ2xhc3MsKGZ1bmN0aW9uKHQpe3Qu YXR0cih7InRleHQtYW5jaG9yIjoibWlkZGxlIiwiZGF0YS1ub3RleCI6MX0pfSkpLGk9ZS5z dGVwLmxhYmVsLGE9ci5fZ2QuX2Z1bGxMYXlvdXQuX21ldGE7cmV0dXJuIGEmJihpPXMudGVt cGxhdGVTdHJpbmcoaSxhKSksbi5jYWxsKG8uZm9udCxyLmZvbnQpLnRleHQoaSkuY2FsbChj LmNvbnZlcnRUb1RzcGFucyxyLl9nZCksbn1mdW5jdGlvbiB3KHQsZSl7dmFyIHI9cy5lbnN1 cmVTaW5nbGUodCwiZyIsZi5sYWJlbHNDbGFzcyksaT1lLl9kaW1zLGE9ci5zZWxlY3RBbGwo ImcuIitmLmxhYmVsR3JvdXBDbGFzcykuZGF0YShpLmxhYmVsU3RlcHMpO2EuZW50ZXIoKS5h cHBlbmQoImciKS5jbGFzc2VkKGYubGFiZWxHcm91cENsYXNzLCEwKSxhLmV4aXQoKS5yZW1v dmUoKSxhLmVhY2goKGZ1bmN0aW9uKHQpe3ZhciByPW4uc2VsZWN0KHRoaXMpO3IuY2FsbChf LHQsZSksby5zZXRUcmFuc2xhdGUocixFKGUsdC5mcmFjdGlvbiksZi50aWNrT2Zmc2V0K2Uu dGlja2xlbitlLmZvbnQuc2l6ZSpwK2YubGFiZWxPZmZzZXQraS5jdXJyZW50VmFsdWVUb3Rh bEhlaWdodCl9KSl9ZnVuY3Rpb24gVCh0LGUscixuLGkpe3ZhciBhPU1hdGgucm91bmQobioo ci5fc3RlcENvdW50LTEpKSxvPXIuX3Zpc2libGVTdGVwc1thXS5faW5kZXg7byE9PXIuYWN0 aXZlJiZrKHQsZSxyLG8sITAsaSl9ZnVuY3Rpb24gayh0LGUscixuLGEsbyl7dmFyIHM9ci5h Y3RpdmU7ci5hY3RpdmU9bix1KHQubGF5b3V0LGYubmFtZSxyKS5hcHBseVVwZGF0ZSgiYWN0 aXZlIixuKTt2YXIgbD1yLnN0ZXBzW3IuYWN0aXZlXTtlLmNhbGwoUyxyLG8pLGUuY2FsbCh4 LHIpLHQuZW1pdCgicGxvdGx5X3NsaWRlcmNoYW5nZSIse3NsaWRlcjpyLHN0ZXA6ci5zdGVw c1tyLmFjdGl2ZV0saW50ZXJhY3Rpb246YSxwcmV2aW91c0FjdGl2ZTpzfSksbCYmbC5tZXRo b2QmJmEmJihlLl9uZXh0TWV0aG9kPyhlLl9uZXh0TWV0aG9kLnN0ZXA9bCxlLl9uZXh0TWV0 aG9kLmRvQ2FsbGJhY2s9YSxlLl9uZXh0TWV0aG9kLmRvVHJhbnNpdGlvbj1vKTooZS5fbmV4 dE1ldGhvZD17c3RlcDpsLGRvQ2FsbGJhY2s6YSxkb1RyYW5zaXRpb246b30sZS5fbmV4dE1l dGhvZFJhZj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbigpe3ZhciBy PWUuX25leHRNZXRob2Quc3RlcDtyLm1ldGhvZCYmKHIuZXhlY3V0ZSYmaS5leGVjdXRlQVBJ Q29tbWFuZCh0LHIubWV0aG9kLHIuYXJncyksZS5fbmV4dE1ldGhvZD1udWxsLGUuX25leHRN ZXRob2RSYWY9bnVsbCl9KSkpKX1mdW5jdGlvbiBBKHQsZSxyKXt2YXIgaT1yLm5vZGUoKSxv PW4uc2VsZWN0KGUpO2Z1bmN0aW9uIHMoKXtyZXR1cm4gci5kYXRhKClbMF19ZnVuY3Rpb24g bCgpe3ZhciB0PXMoKTtlLmVtaXQoInBsb3RseV9zbGlkZXJzdGFydCIse3NsaWRlcjp0fSk7 dmFyIGw9ci5zZWxlY3QoIi4iK2YuZ3JpcFJlY3RDbGFzcyk7bi5ldmVudC5zdG9wUHJvcGFn YXRpb24oKSxuLmV2ZW50LnByZXZlbnREZWZhdWx0KCksbC5jYWxsKGEuZmlsbCx0LmFjdGl2 ZWJnY29sb3IpO3ZhciBjPUwodCxuLm1vdXNlKGkpWzBdKTtmdW5jdGlvbiB1KCl7dmFyIHQ9 cygpLGE9TCh0LG4ubW91c2UoaSlbMF0pO1QoZSxyLHQsYSwhMSl9ZnVuY3Rpb24gaCgpe3Zh ciB0PXMoKTt0Ll9kcmFnZ2luZz0hMSxsLmNhbGwoYS5maWxsLHQuYmdjb2xvciksby5vbigi bW91c2V1cCIsbnVsbCksby5vbigibW91c2Vtb3ZlIixudWxsKSxvLm9uKCJ0b3VjaGVuZCIs bnVsbCksby5vbigidG91Y2htb3ZlIixudWxsKSxlLmVtaXQoInBsb3RseV9zbGlkZXJlbmQi LHtzbGlkZXI6dCxzdGVwOnQuc3RlcHNbdC5hY3RpdmVdfSl9VChlLHIsdCxjLCEwKSx0Ll9k cmFnZ2luZz0hMCxvLm9uKCJtb3VzZW1vdmUiLHUpLG8ub24oInRvdWNobW92ZSIsdSksby5v bigibW91c2V1cCIsaCksby5vbigidG91Y2hlbmQiLGgpfXQub24oIm1vdXNlZG93biIsbCks dC5vbigidG91Y2hzdGFydCIsbCl9ZnVuY3Rpb24gTSh0LGUpe3ZhciByPXQuc2VsZWN0QWxs KCJyZWN0LiIrZi50aWNrUmVjdENsYXNzKS5kYXRhKGUuX3Zpc2libGVTdGVwcyksaT1lLl9k aW1zO3IuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5jbGFzc2VkKGYudGlja1JlY3RDbGFzcywh MCksci5leGl0KCkucmVtb3ZlKCksci5hdHRyKHt3aWR0aDplLnRpY2t3aWR0aCsicHgiLCJz aGFwZS1yZW5kZXJpbmciOiJjcmlzcEVkZ2VzIn0pLHIuZWFjaCgoZnVuY3Rpb24odCxyKXt2 YXIgcz1yJWkubGFiZWxTdHJpZGU9PTAsbD1uLnNlbGVjdCh0aGlzKTtsLmF0dHIoe2hlaWdo dDpzP2UudGlja2xlbjplLm1pbm9ydGlja2xlbn0pLmNhbGwoYS5maWxsLGUudGlja2NvbG9y KSxvLnNldFRyYW5zbGF0ZShsLEUoZSxyLyhlLl9zdGVwQ291bnQtMSkpLS41KmUudGlja3dp ZHRoLChzP2YudGlja09mZnNldDpmLm1pbm9yVGlja09mZnNldCkraS5jdXJyZW50VmFsdWVU b3RhbEhlaWdodCl9KSl9ZnVuY3Rpb24gUyh0LGUscil7Zm9yKHZhciBuPXQuc2VsZWN0KCJy ZWN0LiIrZi5ncmlwUmVjdENsYXNzKSxpPTAsYT0wO2E8ZS5fc3RlcENvdW50O2ErKylpZihl Ll92aXNpYmxlU3RlcHNbYV0uX2luZGV4PT09ZS5hY3RpdmUpe2k9YTticmVha312YXIgbz1F KGUsaS8oZS5fc3RlcENvdW50LTEpKTtpZighZS5faW52b2tpbmdDb21tYW5kKXt2YXIgcz1u O3ImJmUudHJhbnNpdGlvbi5kdXJhdGlvbj4wJiYocz1zLnRyYW5zaXRpb24oKS5kdXJhdGlv bihlLnRyYW5zaXRpb24uZHVyYXRpb24pLmVhc2UoZS50cmFuc2l0aW9uLmVhc2luZykpLHMu YXR0cigidHJhbnNmb3JtIixsKG8tLjUqZi5ncmlwV2lkdGgsZS5fZGltcy5jdXJyZW50VmFs dWVUb3RhbEhlaWdodCkpfX1mdW5jdGlvbiBFKHQsZSl7dmFyIHI9dC5fZGltcztyZXR1cm4g ci5pbnB1dEFyZWFTdGFydCtmLnN0ZXBJbnNldCsoci5pbnB1dEFyZWFMZW5ndGgtMipmLnN0 ZXBJbnNldCkqTWF0aC5taW4oMSxNYXRoLm1heCgwLGUpKX1mdW5jdGlvbiBMKHQsZSl7dmFy IHI9dC5fZGltcztyZXR1cm4gTWF0aC5taW4oMSxNYXRoLm1heCgwLChlLWYuc3RlcEluc2V0 LXIuaW5wdXRBcmVhU3RhcnQpLyhyLmlucHV0QXJlYUxlbmd0aC0yKmYuc3RlcEluc2V0LTIq ci5pbnB1dEFyZWFTdGFydCkpKX1mdW5jdGlvbiBDKHQsZSxyKXt2YXIgbj1yLl9kaW1zLGk9 cy5lbnN1cmVTaW5nbGUodCwicmVjdCIsZi5yYWlsVG91Y2hSZWN0Q2xhc3MsKGZ1bmN0aW9u KG4pe24uY2FsbChBLGUsdCxyKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwiKX0pKTtp LmF0dHIoe3dpZHRoOm4uaW5wdXRBcmVhTGVuZ3RoLGhlaWdodDpNYXRoLm1heChuLmlucHV0 QXJlYVdpZHRoLGYudGlja09mZnNldCtyLnRpY2tsZW4rbi5sYWJlbEhlaWdodCl9KS5jYWxs KGEuZmlsbCxyLmJnY29sb3IpLmF0dHIoIm9wYWNpdHkiLDApLG8uc2V0VHJhbnNsYXRlKGks MCxuLmN1cnJlbnRWYWx1ZVRvdGFsSGVpZ2h0KX1mdW5jdGlvbiBQKHQsZSl7dmFyIHI9ZS5f ZGltcyxuPXIuaW5wdXRBcmVhTGVuZ3RoLTIqZi5yYWlsSW5zZXQsaT1zLmVuc3VyZVNpbmds ZSh0LCJyZWN0IixmLnJhaWxSZWN0Q2xhc3MpO2kuYXR0cih7d2lkdGg6bixoZWlnaHQ6Zi5y YWlsV2lkdGgscng6Zi5yYWlsUmFkaXVzLHJ5OmYucmFpbFJhZGl1cywic2hhcGUtcmVuZGVy aW5nIjoiY3Jpc3BFZGdlcyJ9KS5jYWxsKGEuc3Ryb2tlLGUuYm9yZGVyY29sb3IpLmNhbGwo YS5maWxsLGUuYmdjb2xvcikuc3R5bGUoInN0cm9rZS13aWR0aCIsZS5ib3JkZXJ3aWR0aCsi cHgiKSxvLnNldFRyYW5zbGF0ZShpLGYucmFpbEluc2V0LC41KihyLmlucHV0QXJlYVdpZHRo LWYucmFpbFdpZHRoKStyLmN1cnJlbnRWYWx1ZVRvdGFsSGVpZ2h0KX1lLmV4cG9ydHM9ZnVu Y3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dCxyPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBy PXRbZi5uYW1lXSxuPVtdLGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIGE9cltpXTthLnZpc2li bGUmJihhLl9nZD1lLG4ucHVzaChhKSl9cmV0dXJuIG59KGUsdCksYT1lLl9pbmZvbGF5ZXIu c2VsZWN0QWxsKCJnLiIrZi5jb250YWluZXJDbGFzc05hbWUpLmRhdGEoci5sZW5ndGg+MD9b MF06W10pO2Z1bmN0aW9uIHMoZSl7ZS5fY29tbWFuZE9ic2VydmVyJiYoZS5fY29tbWFuZE9i c2VydmVyLnJlbW92ZSgpLGRlbGV0ZSBlLl9jb21tYW5kT2JzZXJ2ZXIpLGkuYXV0b01hcmdp bih0LGcoZSkpfWlmKGEuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKGYuY29udGFpbmVy Q2xhc3NOYW1lLCEwKS5zdHlsZSgiY3Vyc29yIiwiZXctcmVzaXplIiksYS5leGl0KCkuZWFj aCgoZnVuY3Rpb24oKXtuLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoImcuIitmLmdyb3VwQ2xh c3NOYW1lKS5lYWNoKHMpfSkpLnJlbW92ZSgpLDAhPT1yLmxlbmd0aCl7dmFyIGw9YS5zZWxl Y3RBbGwoImcuIitmLmdyb3VwQ2xhc3NOYW1lKS5kYXRhKHIsdik7bC5lbnRlcigpLmFwcGVu ZCgiZyIpLmNsYXNzZWQoZi5ncm91cENsYXNzTmFtZSwhMCksbC5leGl0KCkuZWFjaChzKS5y ZW1vdmUoKTtmb3IodmFyIGM9MDtjPHIubGVuZ3RoO2MrKyl7dmFyIHU9cltjXTt5KHQsdSl9 bC5lYWNoKChmdW5jdGlvbihlKXt2YXIgcj1uLnNlbGVjdCh0aGlzKTshZnVuY3Rpb24odCl7 dmFyIGU9dC5fZGltcztlLmxhYmVsU3RlcHM9W107Zm9yKHZhciByPXQuX3N0ZXBDb3VudCxu PTA7bjxyO24rPWUubGFiZWxTdHJpZGUpZS5sYWJlbFN0ZXBzLnB1c2goe2ZyYWN0aW9uOm4v KHItMSksc3RlcDp0Ll92aXNpYmxlU3RlcHNbbl19KX0oZSksaS5tYW5hZ2VDb21tYW5kT2Jz ZXJ2ZXIodCxlLGUuX3Zpc2libGVTdGVwcywoZnVuY3Rpb24oZSl7dmFyIG49ci5kYXRhKClb MF07bi5hY3RpdmUhPT1lLmluZGV4JiYobi5fZHJhZ2dpbmd8fGsodCxyLG4sZS5pbmRleCwh MSwhMCkpfSkpLGZ1bmN0aW9uKHQsZSxyKXsoci5zdGVwc1tyLmFjdGl2ZV18fHt9KS52aXNp YmxlfHwoci5hY3RpdmU9ci5fdmlzaWJsZVN0ZXBzWzBdLl9pbmRleCk7ZS5jYWxsKHgsciku Y2FsbChQLHIpLmNhbGwodyxyKS5jYWxsKE0scikuY2FsbChDLHQscikuY2FsbChiLHQscik7 dmFyIG49ci5fZGltcztvLnNldFRyYW5zbGF0ZShlLG4ubHgrci5wYWQubCxuLmx5K3IucGFk LnQpLGUuY2FsbChTLHIsITEpLGUuY2FsbCh4LHIpfSh0LG4uc2VsZWN0KHRoaXMpLGUpfSkp fX19LHsiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCI6NDcxLCIuLi8uLi9saWIiOjUwMywi Li4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo1MjksIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVt cGxhdGUiOjU0MywiLi4vLi4vcGxvdHMvcGxvdHMiOjYxOSwiLi4vY29sb3IiOjM2NiwiLi4v ZHJhd2luZyI6Mzg4LCIuL2NvbnN0YW50cyI6NDYwLCJAcGxvdGx5L2QzIjo1OH1dLDQ2Mzpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2NvbnN0YW50cyIpO2Uu ZXhwb3J0cz17bW9kdWxlVHlwZToiY29tcG9uZW50IixuYW1lOm4ubmFtZSxsYXlvdXRBdHRy aWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseUxheW91dERlZmF1bHRzOnQoIi4vZGVm YXVsdHMiKSxkcmF3OnQoIi4vZHJhdyIpfX0seyIuL2F0dHJpYnV0ZXMiOjQ1OSwiLi9jb25z dGFudHMiOjQ2MCwiLi9kZWZhdWx0cyI6NDYxLCIuL2RyYXciOjQ2Mn1dLDQ2NDpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJAcGxvdGx5L2QzIiksaT10KCJmYXN0 LWlzbnVtZXJpYyIpLGE9dCgiLi4vLi4vcGxvdHMvcGxvdHMiKSxvPXQoIi4uLy4uL3JlZ2lz dHJ5Iikscz10KCIuLi8uLi9saWIiKSxsPXMuc3RyVHJhbnNsYXRlLGM9dCgiLi4vZHJhd2lu ZyIpLHU9dCgiLi4vY29sb3IiKSxmPXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyIpLGg9 dCgiLi4vLi4vY29uc3RhbnRzL2ludGVyYWN0aW9ucyIpLHA9dCgiLi4vLi4vY29uc3RhbnRz L2FsaWdubWVudCIpLk9QUE9TSVRFX1NJREUsZD0vIFtYWV1bMC05XSogLztlLmV4cG9ydHM9 e2RyYXc6ZnVuY3Rpb24odCxlLHIpe3ZhciBtLGc9ci5wcm9wQ29udGFpbmVyLHY9ci5wcm9w TmFtZSx5PXIucGxhY2Vob2xkZXIseD1yLnRyYWNlSW5kZXgsYj1yLmF2b2lkfHx7fSxfPXIu YXR0cmlidXRlcyx3PXIudHJhbnNmb3JtLFQ9ci5jb250YWluZXJHcm91cCxrPXQuX2Z1bGxM YXlvdXQsQT0xLE09ITEsUz1nLnRpdGxlLEU9KFMmJlMudGV4dD9TLnRleHQ6IiIpLnRyaW0o KSxMPVMmJlMuZm9udD9TLmZvbnQ6e30sQz1MLmZhbWlseSxQPUwuc2l6ZSxJPUwuY29sb3I7 InRpdGxlLnRleHQiPT09dj9tPSJ0aXRsZVRleHQiOi0xIT09di5pbmRleE9mKCJheGlzIik/ bT0iYXhpc1RpdGxlVGV4dCI6di5pbmRleE9mKCEwKSYmKG09ImNvbG9yYmFyVGl0bGVUZXh0 Iik7dmFyIE89dC5fY29udGV4dC5lZGl0c1ttXTsiIj09PUU/QT0wOkUucmVwbGFjZShkLCIg JSAiKT09PXkucmVwbGFjZShkLCIgJSAiKSYmKEE9LjIsTT0hMCxPfHwoRT0iIikpLHIuX21l dGE/RT1zLnRlbXBsYXRlU3RyaW5nKEUsci5fbWV0YSk6ay5fbWV0YSYmKEU9cy50ZW1wbGF0 ZVN0cmluZyhFLGsuX21ldGEpKTt2YXIgeixEPUV8fE87VHx8KFQ9cy5lbnN1cmVTaW5nbGUo ay5faW5mb2xheWVyLCJnIiwiZy0iK2UpLHo9ay5faENvbG9yYmFyTW92ZVRpdGxlKTt2YXIg Uj1ULnNlbGVjdEFsbCgidGV4dCIpLmRhdGEoRD9bMF06W10pO2lmKFIuZW50ZXIoKS5hcHBl bmQoInRleHQiKSxSLnRleHQoRSkuYXR0cigiY2xhc3MiLGUpLFIuZXhpdCgpLnJlbW92ZSgp LCFEKXJldHVybiBUO2Z1bmN0aW9uIEYodCl7cy5zeW5jT3JBc3luYyhbQixOXSx0KX1mdW5j dGlvbiBCKGUpe3ZhciByO3JldHVybiF3JiZ6JiYodz17fSksdz8ocj0iIix3LnJvdGF0ZSYm KHIrPSJyb3RhdGUoIitbdy5yb3RhdGUsXy54LF8ueV0rIikiKSwody5vZmZzZXR8fHopJiYo cis9bCgwLCh3Lm9mZnNldHx8MCktKHp8fDApKSkpOnI9bnVsbCxlLmF0dHIoInRyYW5zZm9y bSIsciksZS5zdHlsZSh7ImZvbnQtZmFtaWx5IjpDLCJmb250LXNpemUiOm4ucm91bmQoUCwy KSsicHgiLGZpbGw6dS5yZ2IoSSksb3BhY2l0eTpBKnUub3BhY2l0eShJKSwiZm9udC13ZWln aHQiOmEuZm9udFdlaWdodH0pLmF0dHIoXykuY2FsbChmLmNvbnZlcnRUb1RzcGFucyx0KSxh LnByZXZpb3VzUHJvbWlzZXModCl9ZnVuY3Rpb24gTih0KXt2YXIgZT1uLnNlbGVjdCh0Lm5v ZGUoKS5wYXJlbnROb2RlKTtpZihiJiZiLnNlbGVjdGlvbiYmYi5zaWRlJiZFKXtlLmF0dHIo InRyYW5zZm9ybSIsbnVsbCk7dmFyIHI9cFtiLnNpZGVdLGE9ImxlZnQiPT09Yi5zaWRlfHwi dG9wIj09PWIuc2lkZT8tMToxLG89aShiLnBhZCk/Yi5wYWQ6Mix1PWMuYkJveChlLm5vZGUo KSksZj17bGVmdDowLHRvcDowLHJpZ2h0Omsud2lkdGgsYm90dG9tOmsuaGVpZ2h0fSxoPWIu bWF4U2hpZnR8fGEqKGZbYi5zaWRlXS11W2Iuc2lkZV0pLGQ9MDtpZihoPDApZD1oO2Vsc2V7 dmFyIG09Yi5vZmZzZXRMZWZ0fHwwLGc9Yi5vZmZzZXRUb3B8fDA7dS5sZWZ0LT1tLHUucmln aHQtPW0sdS50b3AtPWcsdS5ib3R0b20tPWcsYi5zZWxlY3Rpb24uZWFjaCgoZnVuY3Rpb24o KXt2YXIgdD1jLmJCb3godGhpcyk7cy5iQm94SW50ZXJzZWN0KHUsdCxvKSYmKGQ9TWF0aC5t YXgoZCxhKih0W2Iuc2lkZV0tdVtyXSkrbykpfSkpLGQ9TWF0aC5taW4oaCxkKX1pZihkPjB8 fGg8MCl7dmFyIHY9e2xlZnQ6Wy1kLDBdLHJpZ2h0OltkLDBdLHRvcDpbMCwtZF0sYm90dG9t OlswLGRdfVtiLnNpZGVdO2UuYXR0cigidHJhbnNmb3JtIixsKHZbMF0sdlsxXSkpfX19cmV0 dXJuIFIuY2FsbChGKSxPJiYoRT9SLm9uKCIub3BhY2l0eSIsbnVsbCk6KEE9MCxNPSEwLFIu dGV4dCh5KS5vbigibW91c2VvdmVyLm9wYWNpdHkiLChmdW5jdGlvbigpe24uc2VsZWN0KHRo aXMpLnRyYW5zaXRpb24oKS5kdXJhdGlvbihoLlNIT1dfUExBQ0VIT0xERVIpLnN0eWxlKCJv cGFjaXR5IiwxKX0pKS5vbigibW91c2VvdXQub3BhY2l0eSIsKGZ1bmN0aW9uKCl7bi5zZWxl Y3QodGhpcykudHJhbnNpdGlvbigpLmR1cmF0aW9uKGguSElERV9QTEFDRUhPTERFUikuc3R5 bGUoIm9wYWNpdHkiLDApfSkpKSxSLmNhbGwoZi5tYWtlRWRpdGFibGUse2dkOnR9KS5vbigi ZWRpdCIsKGZ1bmN0aW9uKGUpe3ZvaWQgMCE9PXg/by5jYWxsKCJfZ3VpUmVzdHlsZSIsdCx2 LGUseCk6by5jYWxsKCJfZ3VpUmVsYXlvdXQiLHQsdixlKX0pKS5vbigiY2FuY2VsIiwoZnVu Y3Rpb24oKXt0aGlzLnRleHQodGhpcy5hdHRyKCJkYXRhLXVuZm9ybWF0dGVkIikpLmNhbGwo Ril9KSkub24oImlucHV0IiwoZnVuY3Rpb24odCl7dGhpcy50ZXh0KHR8fCIgIikuY2FsbChm LnBvc2l0aW9uVGV4dCxfLngsXy55KX0pKSksUi5jbGFzc2VkKCJqcy1wbGFjZWhvbGRlciIs TSksVH19fSx7Ii4uLy4uL2NvbnN0YW50cy9hbGlnbm1lbnQiOjQ3MSwiLi4vLi4vY29uc3Rh bnRzL2ludGVyYWN0aW9ucyI6NDc4LCIuLi8uLi9saWIiOjUwMywiLi4vLi4vbGliL3N2Z190 ZXh0X3V0aWxzIjo1MjksIi4uLy4uL3Bsb3RzL3Bsb3RzIjo2MTksIi4uLy4uL3JlZ2lzdHJ5 Ijo2MzgsIi4uL2NvbG9yIjozNjYsIi4uL2RyYXdpbmciOjM4OCwiQHBsb3RseS9kMyI6NTgs ImZhc3QtaXNudW1lcmljIjoxOTB9XSw0NjU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIiksaT10KCIuLi9jb2xv ci9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxvPXQo Ii4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiKS5vdmVycmlkZUFsbCxzPXQoIi4uLy4uL3Bs b3RzL3BhZF9hdHRyaWJ1dGVzIiksbD10KCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRl IikudGVtcGxhdGVkQXJyYXksYz1sKCJidXR0b24iLHt2aXNpYmxlOnt2YWxUeXBlOiJib29s ZWFuIn0sbWV0aG9kOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJyZXN0eWxlIiwi cmVsYXlvdXQiLCJhbmltYXRlIiwidXBkYXRlIiwic2tpcCJdLGRmbHQ6InJlc3R5bGUifSxh cmdzOnt2YWxUeXBlOiJpbmZvX2FycmF5IixmcmVlTGVuZ3RoOiEwLGl0ZW1zOlt7dmFsVHlw ZToiYW55In0se3ZhbFR5cGU6ImFueSJ9LHt2YWxUeXBlOiJhbnkifV19LGFyZ3MyOnt2YWxU eXBlOiJpbmZvX2FycmF5IixmcmVlTGVuZ3RoOiEwLGl0ZW1zOlt7dmFsVHlwZToiYW55In0s e3ZhbFR5cGU6ImFueSJ9LHt2YWxUeXBlOiJhbnkifV19LGxhYmVsOnt2YWxUeXBlOiJzdHJp bmciLGRmbHQ6IiJ9LGV4ZWN1dGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITB9fSk7ZS5l eHBvcnRzPW8obCgidXBkYXRlbWVudSIse19hcnJheUF0dHJSZWdleHBzOlsvXnVwZGF0ZW1l bnVzXFsoMHxbMS05XVswLTldKylcXVwuYnV0dG9ucy9dLHZpc2libGU6e3ZhbFR5cGU6ImJv b2xlYW4ifSx0eXBlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJkcm9wZG93biIs ImJ1dHRvbnMiXSxkZmx0OiJkcm9wZG93biJ9LGRpcmVjdGlvbjp7dmFsVHlwZToiZW51bWVy YXRlZCIsdmFsdWVzOlsibGVmdCIsInJpZ2h0IiwidXAiLCJkb3duIl0sZGZsdDoiZG93biJ9 LGFjdGl2ZTp7dmFsVHlwZToiaW50ZWdlciIsbWluOi0xLGRmbHQ6MH0sc2hvd2FjdGl2ZTp7 dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMH0sYnV0dG9uczpjLHg6e3ZhbFR5cGU6Im51bWJl ciIsbWluOi0yLG1heDozLGRmbHQ6LS4wNX0seGFuY2hvcjp7dmFsVHlwZToiZW51bWVyYXRl ZCIsdmFsdWVzOlsiYXV0byIsImxlZnQiLCJjZW50ZXIiLCJyaWdodCJdLGRmbHQ6InJpZ2h0 In0seTp7dmFsVHlwZToibnVtYmVyIixtaW46LTIsbWF4OjMsZGZsdDoxfSx5YW5jaG9yOnt2 YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhdXRvIiwidG9wIiwibWlkZGxlIiwiYm90 dG9tIl0sZGZsdDoidG9wIn0scGFkOmEocyh7ZWRpdFR5cGU6ImFycmF5ZHJhdyJ9KSx7fSks Zm9udDpuKHt9KSxiZ2NvbG9yOnt2YWxUeXBlOiJjb2xvciJ9LGJvcmRlcmNvbG9yOnt2YWxU eXBlOiJjb2xvciIsZGZsdDppLmJvcmRlckxpbmV9LGJvcmRlcndpZHRoOnt2YWxUeXBlOiJu dW1iZXIiLG1pbjowLGRmbHQ6MSxlZGl0VHlwZToiYXJyYXlkcmF3In19KSwiYXJyYXlkcmF3 IiwiZnJvbS1yb290Iil9LHsiLi4vLi4vbGliL2V4dGVuZCI6NDkzLCIuLi8uLi9wbG90X2Fw aS9lZGl0X3R5cGVzIjo1MzYsIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjU0Mywi Li4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIjo1ODUsIi4uLy4uL3Bsb3RzL3BhZF9hdHRy aWJ1dGVzIjo2MTgsIi4uL2NvbG9yL2F0dHJpYnV0ZXMiOjM2NX1dLDQ2NjpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e25hbWU6InVwZGF0ZW1lbnVzIixjb250 YWluZXJDbGFzc05hbWU6InVwZGF0ZW1lbnUtY29udGFpbmVyIixoZWFkZXJHcm91cENsYXNz TmFtZToidXBkYXRlbWVudS1oZWFkZXItZ3JvdXAiLGhlYWRlckNsYXNzTmFtZToidXBkYXRl bWVudS1oZWFkZXIiLGhlYWRlckFycm93Q2xhc3NOYW1lOiJ1cGRhdGVtZW51LWhlYWRlci1h cnJvdyIsZHJvcGRvd25CdXR0b25Hcm91cENsYXNzTmFtZToidXBkYXRlbWVudS1kcm9wZG93 bi1idXR0b24tZ3JvdXAiLGRyb3Bkb3duQnV0dG9uQ2xhc3NOYW1lOiJ1cGRhdGVtZW51LWRy b3Bkb3duLWJ1dHRvbiIsYnV0dG9uQ2xhc3NOYW1lOiJ1cGRhdGVtZW51LWJ1dHRvbiIsaXRl bVJlY3RDbGFzc05hbWU6InVwZGF0ZW1lbnUtaXRlbS1yZWN0IixpdGVtVGV4dENsYXNzTmFt ZToidXBkYXRlbWVudS1pdGVtLXRleHQiLG1lbnVJbmRleEF0dHJOYW1lOiJ1cGRhdGVtZW51 LWFjdGl2ZS1pbmRleCIsYXV0b01hcmdpbklkUm9vdDoidXBkYXRlbWVudS0iLGJsYW5rSGVh ZGVyT3B0czp7bGFiZWw6IiAgIn0sbWluV2lkdGg6MzAsbWluSGVpZ2h0OjMwLHRleHRQYWRY OjI0LGFycm93UGFkWDoxNixyeDoyLHJ5OjIsdGV4dE9mZnNldFg6MTIsdGV4dE9mZnNldFk6 MyxhcnJvd09mZnNldFg6NCxnYXBCdXR0b25IZWFkZXI6NSxnYXBCdXR0b246MixhY3RpdmVD b2xvcjoiI0Y0RkFGRiIsaG92ZXJDb2xvcjoiI0Y0RkFGRiIsYXJyb3dTeW1ib2w6e2xlZnQ6 Ilx1MjVjNCIscmlnaHQ6Ilx1MjViYSIsdXA6Ilx1MjViMiIsZG93bjoiXHUyNWJjIn19fSx7 fV0sNDY3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xp YiIpLGk9dCgiLi4vLi4vcGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIiksYT10KCIu L2F0dHJpYnV0ZXMiKSxvPXQoIi4vY29uc3RhbnRzIikubmFtZSxzPWEuYnV0dG9ucztmdW5j dGlvbiBsKHQsZSxyKXtmdW5jdGlvbiBvKHIsaSl7cmV0dXJuIG4uY29lcmNlKHQsZSxhLHIs aSl9bygidmlzaWJsZSIsaSh0LGUse25hbWU6ImJ1dHRvbnMiLGhhbmRsZUl0ZW1EZWZhdWx0 czpjfSkubGVuZ3RoPjApJiYobygiYWN0aXZlIiksbygiZGlyZWN0aW9uIiksbygidHlwZSIp LG8oInNob3dhY3RpdmUiKSxvKCJ4IiksbygieSIpLG4ubm9uZU9yQWxsKHQsZSxbIngiLCJ5 Il0pLG8oInhhbmNob3IiKSxvKCJ5YW5jaG9yIiksbygicGFkLnQiKSxvKCJwYWQuciIpLG8o InBhZC5iIiksbygicGFkLmwiKSxuLmNvZXJjZUZvbnQobywiZm9udCIsci5mb250KSxvKCJi Z2NvbG9yIixyLnBhcGVyX2JnY29sb3IpLG8oImJvcmRlcmNvbG9yIiksbygiYm9yZGVyd2lk dGgiKSl9ZnVuY3Rpb24gYyh0LGUpe2Z1bmN0aW9uIHIocixpKXtyZXR1cm4gbi5jb2VyY2Uo dCxlLHMscixpKX1yKCJ2aXNpYmxlIiwic2tpcCI9PT10Lm1ldGhvZHx8QXJyYXkuaXNBcnJh eSh0LmFyZ3MpKSYmKHIoIm1ldGhvZCIpLHIoImFyZ3MiKSxyKCJhcmdzMiIpLHIoImxhYmVs IikscigiZXhlY3V0ZSIpKX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpKHQsZSx7bmFtZTpv LGhhbmRsZUl0ZW1EZWZhdWx0czpsfSl9fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi8uLi9wbG90 cy9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiOjU0OSwiLi9hdHRyaWJ1dGVzIjo0NjUsIi4v Y29uc3RhbnRzIjo0NjZ9XSw0Njg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgiQHBsb3RseS9kMyIpLGk9dCgiLi4vLi4vcGxvdHMvcGxvdHMiKSxhPXQoIi4uL2Nv bG9yIiksbz10KCIuLi9kcmF3aW5nIikscz10KCIuLi8uLi9saWIiKSxsPXQoIi4uLy4uL2xp Yi9zdmdfdGV4dF91dGlscyIpLGM9dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIp LmFycmF5RWRpdG9yLHU9dCgiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCIpLkxJTkVfU1BB Q0lORyxmPXQoIi4vY29uc3RhbnRzIiksaD10KCIuL3Njcm9sbGJveCIpO2Z1bmN0aW9uIHAo dCl7cmV0dXJuIHQuX2luZGV4fWZ1bmN0aW9uIGQodCxlKXtyZXR1cm4rdC5hdHRyKGYubWVu dUluZGV4QXR0ck5hbWUpPT09ZS5faW5kZXh9ZnVuY3Rpb24gbSh0LGUscixuLGksYSxvLHMp e2UuYWN0aXZlPW8sYyh0LmxheW91dCxmLm5hbWUsZSkuYXBwbHlVcGRhdGUoImFjdGl2ZSIs byksImJ1dHRvbnMiPT09ZS50eXBlP3YodCxuLG51bGwsbnVsbCxlKToiZHJvcGRvd24iPT09 ZS50eXBlJiYoaS5hdHRyKGYubWVudUluZGV4QXR0ck5hbWUsIi0xIiksZyh0LG4saSxhLGUp LHN8fHYodCxuLGksYSxlKSl9ZnVuY3Rpb24gZyh0LGUscixuLGkpe3ZhciBhPXMuZW5zdXJl U2luZ2xlKGUsImciLGYuaGVhZGVyQ2xhc3NOYW1lLChmdW5jdGlvbih0KXt0LnN0eWxlKCJw b2ludGVyLWV2ZW50cyIsImFsbCIpfSkpLGw9aS5fZGltcyxjPWkuYWN0aXZlLHU9aS5idXR0 b25zW2NdfHxmLmJsYW5rSGVhZGVyT3B0cyxoPXt5OmkucGFkLnQseVBhZDowLHg6aS5wYWQu bCx4UGFkOjAsaW5kZXg6MH0scD17d2lkdGg6bC5oZWFkZXJXaWR0aCxoZWlnaHQ6bC5oZWFk ZXJIZWlnaHR9O2EuY2FsbCh5LGksdSx0KS5jYWxsKE0saSxoLHApLHMuZW5zdXJlU2luZ2xl KGUsInRleHQiLGYuaGVhZGVyQXJyb3dDbGFzc05hbWUsKGZ1bmN0aW9uKHQpe3QuYXR0cigi dGV4dC1hbmNob3IiLCJlbmQiKS5jYWxsKG8uZm9udCxpLmZvbnQpLnRleHQoZi5hcnJvd1N5 bWJvbFtpLmRpcmVjdGlvbl0pfSkpLmF0dHIoe3g6bC5oZWFkZXJXaWR0aC1mLmFycm93T2Zm c2V0WCtpLnBhZC5sLHk6bC5oZWFkZXJIZWlnaHQvMitmLnRleHRPZmZzZXRZK2kucGFkLnR9 KSxhLm9uKCJjbGljayIsKGZ1bmN0aW9uKCl7ci5jYWxsKFMsU3RyaW5nKGQocixpKT8tMTpp Ll9pbmRleCkpLHYodCxlLHIsbixpKX0pKSxhLm9uKCJtb3VzZW92ZXIiLChmdW5jdGlvbigp e2EuY2FsbCh3KX0pKSxhLm9uKCJtb3VzZW91dCIsKGZ1bmN0aW9uKCl7YS5jYWxsKFQsaSl9 KSksby5zZXRUcmFuc2xhdGUoZSxsLmx4LGwubHkpfWZ1bmN0aW9uIHYodCxlLHIsYSxvKXty fHwocj1lKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpO3ZhciBsPWZ1bmN0aW9uKHQp e3JldHVybi0xPT0rdC5hdHRyKGYubWVudUluZGV4QXR0ck5hbWUpfShyKSYmImJ1dHRvbnMi IT09by50eXBlP1tdOm8uYnV0dG9ucyxjPSJkcm9wZG93biI9PT1vLnR5cGU/Zi5kcm9wZG93 bkJ1dHRvbkNsYXNzTmFtZTpmLmJ1dHRvbkNsYXNzTmFtZSx1PXIuc2VsZWN0QWxsKCJnLiIr YykuZGF0YShzLmZpbHRlclZpc2libGUobCkpLGg9dS5lbnRlcigpLmFwcGVuZCgiZyIpLmNs YXNzZWQoYywhMCkscD11LmV4aXQoKTsiZHJvcGRvd24iPT09by50eXBlPyhoLmF0dHIoIm9w YWNpdHkiLCIwIikudHJhbnNpdGlvbigpLmF0dHIoIm9wYWNpdHkiLCIxIikscC50cmFuc2l0 aW9uKCkuYXR0cigib3BhY2l0eSIsIjAiKS5yZW1vdmUoKSk6cC5yZW1vdmUoKTt2YXIgZD0w LGc9MCx2PW8uX2RpbXMseD0tMSE9PVsidXAiLCJkb3duIl0uaW5kZXhPZihvLmRpcmVjdGlv bik7ImRyb3Bkb3duIj09PW8udHlwZSYmKHg/Zz12LmhlYWRlckhlaWdodCtmLmdhcEJ1dHRv bkhlYWRlcjpkPXYuaGVhZGVyV2lkdGgrZi5nYXBCdXR0b25IZWFkZXIpLCJkcm9wZG93biI9 PT1vLnR5cGUmJiJ1cCI9PT1vLmRpcmVjdGlvbiYmKGc9LWYuZ2FwQnV0dG9uSGVhZGVyK2Yu Z2FwQnV0dG9uLXYub3BlbkhlaWdodCksImRyb3Bkb3duIj09PW8udHlwZSYmImxlZnQiPT09 by5kaXJlY3Rpb24mJihkPS1mLmdhcEJ1dHRvbkhlYWRlcitmLmdhcEJ1dHRvbi12Lm9wZW5X aWR0aCk7dmFyIGI9e3g6di5seCtkK28ucGFkLmwseTp2Lmx5K2crby5wYWQudCx5UGFkOmYu Z2FwQnV0dG9uLHhQYWQ6Zi5nYXBCdXR0b24saW5kZXg6MH0saz17bDpiLngrby5ib3JkZXJ3 aWR0aCx0OmIueStvLmJvcmRlcndpZHRofTt1LmVhY2goKGZ1bmN0aW9uKHMsbCl7dmFyIGM9 bi5zZWxlY3QodGhpcyk7Yy5jYWxsKHksbyxzLHQpLmNhbGwoTSxvLGIpLGMub24oImNsaWNr IiwoZnVuY3Rpb24oKXtuLmV2ZW50LmRlZmF1bHRQcmV2ZW50ZWR8fChzLmV4ZWN1dGUmJihz LmFyZ3MyJiZvLmFjdGl2ZT09PWw/KG0odCxvLDAsZSxyLGEsLTEpLGkuZXhlY3V0ZUFQSUNv bW1hbmQodCxzLm1ldGhvZCxzLmFyZ3MyKSk6KG0odCxvLDAsZSxyLGEsbCksaS5leGVjdXRl QVBJQ29tbWFuZCh0LHMubWV0aG9kLHMuYXJncykpKSx0LmVtaXQoInBsb3RseV9idXR0b25j bGlja2VkIix7bWVudTpvLGJ1dHRvbjpzLGFjdGl2ZTpvLmFjdGl2ZX0pKX0pKSxjLm9uKCJt b3VzZW92ZXIiLChmdW5jdGlvbigpe2MuY2FsbCh3KX0pKSxjLm9uKCJtb3VzZW91dCIsKGZ1 bmN0aW9uKCl7Yy5jYWxsKFQsbyksdS5jYWxsKF8sbyl9KSl9KSksdS5jYWxsKF8sbykseD8o ay53PU1hdGgubWF4KHYub3BlbldpZHRoLHYuaGVhZGVyV2lkdGgpLGsuaD1iLnktay50KToo ay53PWIueC1rLmwsay5oPU1hdGgubWF4KHYub3BlbkhlaWdodCx2LmhlYWRlckhlaWdodCkp LGsuZGlyZWN0aW9uPW8uZGlyZWN0aW9uLGEmJih1LnNpemUoKT9mdW5jdGlvbih0LGUscixu LGksYSl7dmFyIG8scyxsLGM9aS5kaXJlY3Rpb24sdT0idXAiPT09Y3x8ImRvd24iPT09Yyxo PWkuX2RpbXMscD1pLmFjdGl2ZTtpZih1KWZvcihzPTAsbD0wO2w8cDtsKyspcys9aC5oZWln aHRzW2xdK2YuZ2FwQnV0dG9uO2Vsc2UgZm9yKG89MCxsPTA7bDxwO2wrKylvKz1oLndpZHRo c1tsXStmLmdhcEJ1dHRvbjtuLmVuYWJsZShhLG8scyksbi5oYmFyJiZuLmhiYXIuYXR0cigi b3BhY2l0eSIsIjAiKS50cmFuc2l0aW9uKCkuYXR0cigib3BhY2l0eSIsIjEiKTtuLnZiYXIm Jm4udmJhci5hdHRyKCJvcGFjaXR5IiwiMCIpLnRyYW5zaXRpb24oKS5hdHRyKCJvcGFjaXR5 IiwiMSIpfSgwLDAsMCxhLG8sayk6ZnVuY3Rpb24odCl7dmFyIGU9ISF0LmhiYXIscj0hIXQu dmJhcjtlJiZ0LmhiYXIudHJhbnNpdGlvbigpLmF0dHIoIm9wYWNpdHkiLCIwIikuZWFjaCgi ZW5kIiwoZnVuY3Rpb24oKXtlPSExLHJ8fHQuZGlzYWJsZSgpfSkpO3ImJnQudmJhci50cmFu c2l0aW9uKCkuYXR0cigib3BhY2l0eSIsIjAiKS5lYWNoKCJlbmQiLChmdW5jdGlvbigpe3I9 ITEsZXx8dC5kaXNhYmxlKCl9KSl9KGEpKX1mdW5jdGlvbiB5KHQsZSxyLG4pe3QuY2FsbCh4 LGUpLmNhbGwoYixlLHIsbil9ZnVuY3Rpb24geCh0LGUpe3MuZW5zdXJlU2luZ2xlKHQsInJl Y3QiLGYuaXRlbVJlY3RDbGFzc05hbWUsKGZ1bmN0aW9uKHQpe3QuYXR0cih7cng6Zi5yeCxy eTpmLnJ5LCJzaGFwZS1yZW5kZXJpbmciOiJjcmlzcEVkZ2VzIn0pfSkpLmNhbGwoYS5zdHJv a2UsZS5ib3JkZXJjb2xvcikuY2FsbChhLmZpbGwsZS5iZ2NvbG9yKS5zdHlsZSgic3Ryb2tl LXdpZHRoIixlLmJvcmRlcndpZHRoKyJweCIpfWZ1bmN0aW9uIGIodCxlLHIsbil7dmFyIGk9 cy5lbnN1cmVTaW5nbGUodCwidGV4dCIsZi5pdGVtVGV4dENsYXNzTmFtZSwoZnVuY3Rpb24o dCl7dC5hdHRyKHsidGV4dC1hbmNob3IiOiJzdGFydCIsImRhdGEtbm90ZXgiOjF9KX0pKSxh PXIubGFiZWwsYz1uLl9mdWxsTGF5b3V0Ll9tZXRhO2MmJihhPXMudGVtcGxhdGVTdHJpbmco YSxjKSksaS5jYWxsKG8uZm9udCxlLmZvbnQpLnRleHQoYSkuY2FsbChsLmNvbnZlcnRUb1Rz cGFucyxuKX1mdW5jdGlvbiBfKHQsZSl7dmFyIHI9ZS5hY3RpdmU7dC5lYWNoKChmdW5jdGlv bih0LGkpe3ZhciBvPW4uc2VsZWN0KHRoaXMpO2k9PT1yJiZlLnNob3dhY3RpdmUmJm8uc2Vs ZWN0KCJyZWN0LiIrZi5pdGVtUmVjdENsYXNzTmFtZSkuY2FsbChhLmZpbGwsZi5hY3RpdmVD b2xvcil9KSl9ZnVuY3Rpb24gdyh0KXt0LnNlbGVjdCgicmVjdC4iK2YuaXRlbVJlY3RDbGFz c05hbWUpLmNhbGwoYS5maWxsLGYuaG92ZXJDb2xvcil9ZnVuY3Rpb24gVCh0LGUpe3Quc2Vs ZWN0KCJyZWN0LiIrZi5pdGVtUmVjdENsYXNzTmFtZSkuY2FsbChhLmZpbGwsZS5iZ2NvbG9y KX1mdW5jdGlvbiBrKHQsZSl7dmFyIHI9ZS5fZGltcz17d2lkdGgxOjAsaGVpZ2h0MTowLGhl aWdodHM6W10sd2lkdGhzOltdLHRvdGFsV2lkdGg6MCx0b3RhbEhlaWdodDowLG9wZW5XaWR0 aDowLG9wZW5IZWlnaHQ6MCxseDowLGx5OjB9LGE9by50ZXN0ZXIuc2VsZWN0QWxsKCJnLiIr Zi5kcm9wZG93bkJ1dHRvbkNsYXNzTmFtZSkuZGF0YShzLmZpbHRlclZpc2libGUoZS5idXR0 b25zKSk7YS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoZi5kcm9wZG93bkJ1dHRvbkNs YXNzTmFtZSwhMCk7dmFyIGM9LTEhPT1bInVwIiwiZG93biJdLmluZGV4T2YoZS5kaXJlY3Rp b24pO2EuZWFjaCgoZnVuY3Rpb24oaSxhKXt2YXIgcz1uLnNlbGVjdCh0aGlzKTtzLmNhbGwo eSxlLGksdCk7dmFyIGg9cy5zZWxlY3QoIi4iK2YuaXRlbVRleHRDbGFzc05hbWUpLHA9aC5u b2RlKCkmJm8uYkJveChoLm5vZGUoKSkud2lkdGgsZD1NYXRoLm1heChwK2YudGV4dFBhZFgs Zi5taW5XaWR0aCksbT1lLmZvbnQuc2l6ZSp1LGc9bC5saW5lQ291bnQoaCksdj1NYXRoLm1h eChtKmcsZi5taW5IZWlnaHQpK2YudGV4dE9mZnNldFk7dj1NYXRoLmNlaWwodiksZD1NYXRo LmNlaWwoZCksci53aWR0aHNbYV09ZCxyLmhlaWdodHNbYV09dixyLmhlaWdodDE9TWF0aC5t YXgoci5oZWlnaHQxLHYpLHIud2lkdGgxPU1hdGgubWF4KHIud2lkdGgxLGQpLGM/KHIudG90 YWxXaWR0aD1NYXRoLm1heChyLnRvdGFsV2lkdGgsZCksci5vcGVuV2lkdGg9ci50b3RhbFdp ZHRoLHIudG90YWxIZWlnaHQrPXYrZi5nYXBCdXR0b24sci5vcGVuSGVpZ2h0Kz12K2YuZ2Fw QnV0dG9uKTooci50b3RhbFdpZHRoKz1kK2YuZ2FwQnV0dG9uLHIub3BlbldpZHRoKz1kK2Yu Z2FwQnV0dG9uLHIudG90YWxIZWlnaHQ9TWF0aC5tYXgoci50b3RhbEhlaWdodCx2KSxyLm9w ZW5IZWlnaHQ9ci50b3RhbEhlaWdodCl9KSksYz9yLnRvdGFsSGVpZ2h0LT1mLmdhcEJ1dHRv bjpyLnRvdGFsV2lkdGgtPWYuZ2FwQnV0dG9uLHIuaGVhZGVyV2lkdGg9ci53aWR0aDErZi5h cnJvd1BhZFgsci5oZWFkZXJIZWlnaHQ9ci5oZWlnaHQxLCJkcm9wZG93biI9PT1lLnR5cGUm JihjPyhyLndpZHRoMSs9Zi5hcnJvd1BhZFgsci50b3RhbEhlaWdodD1yLmhlaWdodDEpOnIu dG90YWxXaWR0aD1yLndpZHRoMSxyLnRvdGFsV2lkdGgrPWYuYXJyb3dQYWRYKSxhLnJlbW92 ZSgpO3ZhciBoPXIudG90YWxXaWR0aCtlLnBhZC5sK2UucGFkLnIscD1yLnRvdGFsSGVpZ2h0 K2UucGFkLnQrZS5wYWQuYixkPXQuX2Z1bGxMYXlvdXQuX3NpemU7ci5seD1kLmwrZC53KmUu eCxyLmx5PWQudCtkLmgqKDEtZS55KTt2YXIgbT0ibGVmdCI7cy5pc1JpZ2h0QW5jaG9yKGUp JiYoci5seC09aCxtPSJyaWdodCIpLHMuaXNDZW50ZXJBbmNob3IoZSkmJihyLmx4LT1oLzIs bT0iY2VudGVyIik7dmFyIGc9InRvcCI7cy5pc0JvdHRvbUFuY2hvcihlKSYmKHIubHktPXAs Zz0iYm90dG9tIikscy5pc01pZGRsZUFuY2hvcihlKSYmKHIubHktPXAvMixnPSJtaWRkbGUi KSxyLnRvdGFsV2lkdGg9TWF0aC5jZWlsKHIudG90YWxXaWR0aCksci50b3RhbEhlaWdodD1N YXRoLmNlaWwoci50b3RhbEhlaWdodCksci5seD1NYXRoLnJvdW5kKHIubHgpLHIubHk9TWF0 aC5yb3VuZChyLmx5KSxpLmF1dG9NYXJnaW4odCxBKGUpLHt4OmUueCx5OmUueSxsOmgqKHty aWdodDoxLGNlbnRlcjouNX1bbV18fDApLHI6aCooe2xlZnQ6MSxjZW50ZXI6LjV9W21dfHww KSxiOnAqKHt0b3A6MSxtaWRkbGU6LjV9W2ddfHwwKSx0OnAqKHtib3R0b206MSxtaWRkbGU6 LjV9W2ddfHwwKX0pfWZ1bmN0aW9uIEEodCl7cmV0dXJuIGYuYXV0b01hcmdpbklkUm9vdCt0 Ll9pbmRleH1mdW5jdGlvbiBNKHQsZSxyLG4pe249bnx8e307dmFyIGk9dC5zZWxlY3QoIi4i K2YuaXRlbVJlY3RDbGFzc05hbWUpLGE9dC5zZWxlY3QoIi4iK2YuaXRlbVRleHRDbGFzc05h bWUpLHM9ZS5ib3JkZXJ3aWR0aCxjPXIuaW5kZXgsaD1lLl9kaW1zO28uc2V0VHJhbnNsYXRl KHQscytyLngscytyLnkpO3ZhciBwPS0xIT09WyJ1cCIsImRvd24iXS5pbmRleE9mKGUuZGly ZWN0aW9uKSxkPW4uaGVpZ2h0fHwocD9oLmhlaWdodHNbY106aC5oZWlnaHQxKTtpLmF0dHIo e3g6MCx5OjAsd2lkdGg6bi53aWR0aHx8KHA/aC53aWR0aDE6aC53aWR0aHNbY10pLGhlaWdo dDpkfSk7dmFyIG09ZS5mb250LnNpemUqdSxnPShsLmxpbmVDb3VudChhKS0xKSptLzI7bC5w b3NpdGlvblRleHQoYSxmLnRleHRPZmZzZXRYLGQvMi1nK2YudGV4dE9mZnNldFkpLHA/ci55 Kz1oLmhlaWdodHNbY10rci55UGFkOnIueCs9aC53aWR0aHNbY10rci54UGFkLHIuaW5kZXgr K31mdW5jdGlvbiBTKHQsZSl7dC5hdHRyKGYubWVudUluZGV4QXR0ck5hbWUsZXx8Ii0xIiku c2VsZWN0QWxsKCJnLiIrZi5kcm9wZG93bkJ1dHRvbkNsYXNzTmFtZSkucmVtb3ZlKCl9ZS5l eHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQscj1zLmZpbHRlclZpc2li bGUoZVtmLm5hbWVdKTtmdW5jdGlvbiBhKGUpe2kuYXV0b01hcmdpbih0LEEoZSkpfXZhciBv PWUuX21lbnVsYXllci5zZWxlY3RBbGwoImcuIitmLmNvbnRhaW5lckNsYXNzTmFtZSkuZGF0 YShyLmxlbmd0aD4wP1swXTpbXSk7aWYoby5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQo Zi5jb250YWluZXJDbGFzc05hbWUsITApLnN0eWxlKCJjdXJzb3IiLCJwb2ludGVyIiksby5l eGl0KCkuZWFjaCgoZnVuY3Rpb24oKXtuLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoImcuIitm LmhlYWRlckdyb3VwQ2xhc3NOYW1lKS5lYWNoKGEpfSkpLnJlbW92ZSgpLDAhPT1yLmxlbmd0 aCl7dmFyIGw9by5zZWxlY3RBbGwoImcuIitmLmhlYWRlckdyb3VwQ2xhc3NOYW1lKS5kYXRh KHIscCk7bC5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoZi5oZWFkZXJHcm91cENsYXNz TmFtZSwhMCk7Zm9yKHZhciBjPXMuZW5zdXJlU2luZ2xlKG8sImciLGYuZHJvcGRvd25CdXR0 b25Hcm91cENsYXNzTmFtZSwoZnVuY3Rpb24odCl7dC5zdHlsZSgicG9pbnRlci1ldmVudHMi LCJhbGwiKX0pKSx1PTA7dTxyLmxlbmd0aDt1Kyspe3ZhciB5PXJbdV07ayh0LHkpfXZhciB4 PSJ1cGRhdGVtZW51cyIrZS5fdWlkLGI9bmV3IGgodCxjLHgpO2wuZW50ZXIoKS5zaXplKCkm JihjLm5vZGUoKS5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGMubm9kZSgpKSxjLmNhbGwoUykp LGwuZXhpdCgpLmVhY2goKGZ1bmN0aW9uKHQpe2MuY2FsbChTKSxhKHQpfSkpLnJlbW92ZSgp LGwuZWFjaCgoZnVuY3Rpb24oZSl7dmFyIHI9bi5zZWxlY3QodGhpcyksYT0iZHJvcGRvd24i PT09ZS50eXBlP2M6bnVsbDtpLm1hbmFnZUNvbW1hbmRPYnNlcnZlcih0LGUsZS5idXR0b25z LChmdW5jdGlvbihuKXttKHQsZSxlLmJ1dHRvbnNbbi5pbmRleF0scixhLGIsbi5pbmRleCwh MCl9KSksImRyb3Bkb3duIj09PWUudHlwZT8oZyh0LHIsYyxiLGUpLGQoYyxlKSYmdih0LHIs YyxiLGUpKTp2KHQscixudWxsLG51bGwsZSl9KSl9fX0seyIuLi8uLi9jb25zdGFudHMvYWxp Z25tZW50Ijo0NzEsIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMi OjUyOSwiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NTQzLCIuLi8uLi9wbG90cy9w bG90cyI6NjE5LCIuLi9jb2xvciI6MzY2LCIuLi9kcmF3aW5nIjozODgsIi4vY29uc3RhbnRz Ijo0NjYsIi4vc2Nyb2xsYm94Ijo0NzAsIkBwbG90bHkvZDMiOjU4fV0sNDY5OltmdW5jdGlv bih0LGUscil7YXJndW1lbnRzWzRdWzQ2M11bMF0uYXBwbHkocixhcmd1bWVudHMpfSx7Ii4v YXR0cmlidXRlcyI6NDY1LCIuL2NvbnN0YW50cyI6NDY2LCIuL2RlZmF1bHRzIjo0NjcsIi4v ZHJhdyI6NDY4LGR1cDo0NjN9XSw0NzA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 ZS5leHBvcnRzPXM7dmFyIG49dCgiQHBsb3RseS9kMyIpLGk9dCgiLi4vY29sb3IiKSxhPXQo Ii4uL2RyYXdpbmciKSxvPXQoIi4uLy4uL2xpYiIpO2Z1bmN0aW9uIHModCxlLHIpe3RoaXMu Z2Q9dCx0aGlzLmNvbnRhaW5lcj1lLHRoaXMuaWQ9cix0aGlzLnBvc2l0aW9uPW51bGwsdGhp cy50cmFuc2xhdGVYPW51bGwsdGhpcy50cmFuc2xhdGVZPW51bGwsdGhpcy5oYmFyPW51bGws dGhpcy52YmFyPW51bGwsdGhpcy5iZz10aGlzLmNvbnRhaW5lci5zZWxlY3RBbGwoInJlY3Qu c2Nyb2xsYm94LWJnIikuZGF0YShbMF0pLHRoaXMuYmcuZXhpdCgpLm9uKCIuZHJhZyIsbnVs bCkub24oIndoZWVsIixudWxsKS5yZW1vdmUoKSx0aGlzLmJnLmVudGVyKCkuYXBwZW5kKCJy ZWN0IikuY2xhc3NlZCgic2Nyb2xsYm94LWJnIiwhMCkuc3R5bGUoInBvaW50ZXItZXZlbnRz IiwiYWxsIikuYXR0cih7b3BhY2l0eTowLHg6MCx5OjAsd2lkdGg6MCxoZWlnaHQ6MH0pfXMu YmFyV2lkdGg9MixzLmJhckxlbmd0aD0yMCxzLmJhclJhZGl1cz0yLHMuYmFyUGFkPTEscy5i YXJDb2xvcj0iIzgwOEJBNCIscy5wcm90b3R5cGUuZW5hYmxlPWZ1bmN0aW9uKHQsZSxyKXt2 YXIgbz10aGlzLmdkLl9mdWxsTGF5b3V0LGw9by53aWR0aCxjPW8uaGVpZ2h0O3RoaXMucG9z aXRpb249dDt2YXIgdSxmLGgscCxkPXRoaXMucG9zaXRpb24ubCxtPXRoaXMucG9zaXRpb24u dyxnPXRoaXMucG9zaXRpb24udCx2PXRoaXMucG9zaXRpb24uaCx5PXRoaXMucG9zaXRpb24u ZGlyZWN0aW9uLHg9ImRvd24iPT09eSxiPSJsZWZ0Ij09PXksXz0idXAiPT09eSx3PW0sVD12 O3h8fGJ8fCJyaWdodCI9PT15fHxffHwodGhpcy5wb3NpdGlvbi5kaXJlY3Rpb249ImRvd24i LHg9ITApLHh8fF8/KGY9KHU9ZCkrdyx4PyhoPWcsVD0ocD1NYXRoLm1pbihoK1QsYykpLWgp OlQ9KHA9ZytUKS0oaD1NYXRoLm1heChwLVQsMCkpKToocD0oaD1nKStULGI/dz0oZj1kK3cp LSh1PU1hdGgubWF4KGYtdywwKSk6KHU9ZCx3PShmPU1hdGgubWluKHUrdyxsKSktdSkpLHRo aXMuX2JveD17bDp1LHQ6aCx3OncsaDpUfTt2YXIgaz1tPncsQT1zLmJhckxlbmd0aCsyKnMu YmFyUGFkLE09cy5iYXJXaWR0aCsyKnMuYmFyUGFkLFM9ZCxFPWcrdjtFK00+YyYmKEU9Yy1N KTt2YXIgTD10aGlzLmNvbnRhaW5lci5zZWxlY3RBbGwoInJlY3Quc2Nyb2xsYmFyLWhvcml6 b250YWwiKS5kYXRhKGs/WzBdOltdKTtMLmV4aXQoKS5vbigiLmRyYWciLG51bGwpLnJlbW92 ZSgpLEwuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5jbGFzc2VkKCJzY3JvbGxiYXItaG9yaXpv bnRhbCIsITApLmNhbGwoaS5maWxsLHMuYmFyQ29sb3IpLGs/KHRoaXMuaGJhcj1MLmF0dHIo e3J4OnMuYmFyUmFkaXVzLHJ5OnMuYmFyUmFkaXVzLHg6Uyx5OkUsd2lkdGg6QSxoZWlnaHQ6 TX0pLHRoaXMuX2hiYXJYTWluPVMrQS8yLHRoaXMuX2hiYXJUcmFuc2xhdGVNYXg9dy1BKToo ZGVsZXRlIHRoaXMuaGJhcixkZWxldGUgdGhpcy5faGJhclhNaW4sZGVsZXRlIHRoaXMuX2hi YXJUcmFuc2xhdGVNYXgpO3ZhciBDPXY+VCxQPXMuYmFyV2lkdGgrMipzLmJhclBhZCxJPXMu YmFyTGVuZ3RoKzIqcy5iYXJQYWQsTz1kK20sej1nO08rUD5sJiYoTz1sLVApO3ZhciBEPXRo aXMuY29udGFpbmVyLnNlbGVjdEFsbCgicmVjdC5zY3JvbGxiYXItdmVydGljYWwiKS5kYXRh KEM/WzBdOltdKTtELmV4aXQoKS5vbigiLmRyYWciLG51bGwpLnJlbW92ZSgpLEQuZW50ZXIo KS5hcHBlbmQoInJlY3QiKS5jbGFzc2VkKCJzY3JvbGxiYXItdmVydGljYWwiLCEwKS5jYWxs KGkuZmlsbCxzLmJhckNvbG9yKSxDPyh0aGlzLnZiYXI9RC5hdHRyKHtyeDpzLmJhclJhZGl1 cyxyeTpzLmJhclJhZGl1cyx4Ok8seTp6LHdpZHRoOlAsaGVpZ2h0Okl9KSx0aGlzLl92YmFy WU1pbj16K0kvMix0aGlzLl92YmFyVHJhbnNsYXRlTWF4PVQtSSk6KGRlbGV0ZSB0aGlzLnZi YXIsZGVsZXRlIHRoaXMuX3ZiYXJZTWluLGRlbGV0ZSB0aGlzLl92YmFyVHJhbnNsYXRlTWF4 KTt2YXIgUj10aGlzLmlkLEY9dS0uNSxCPUM/ZitQKy41OmYrLjUsTj1oLS41LGo9az9wK00r LjU6cCsuNSxVPW8uX3RvcGRlZnMuc2VsZWN0QWxsKCIjIitSKS5kYXRhKGt8fEM/WzBdOltd KTtpZihVLmV4aXQoKS5yZW1vdmUoKSxVLmVudGVyKCkuYXBwZW5kKCJjbGlwUGF0aCIpLmF0 dHIoImlkIixSKS5hcHBlbmQoInJlY3QiKSxrfHxDPyh0aGlzLl9jbGlwUmVjdD1VLnNlbGVj dCgicmVjdCIpLmF0dHIoe3g6TWF0aC5mbG9vcihGKSx5Ok1hdGguZmxvb3IoTiksd2lkdGg6 TWF0aC5jZWlsKEIpLU1hdGguZmxvb3IoRiksaGVpZ2h0Ok1hdGguY2VpbChqKS1NYXRoLmZs b29yKE4pfSksdGhpcy5jb250YWluZXIuY2FsbChhLnNldENsaXBVcmwsUix0aGlzLmdkKSx0 aGlzLmJnLmF0dHIoe3g6ZCx5Omcsd2lkdGg6bSxoZWlnaHQ6dn0pKToodGhpcy5iZy5hdHRy KHt3aWR0aDowLGhlaWdodDowfSksdGhpcy5jb250YWluZXIub24oIndoZWVsIixudWxsKS5v bigiLmRyYWciLG51bGwpLmNhbGwoYS5zZXRDbGlwVXJsLG51bGwpLGRlbGV0ZSB0aGlzLl9j bGlwUmVjdCksa3x8Qyl7dmFyIFY9bi5iZWhhdmlvci5kcmFnKCkub24oImRyYWdzdGFydCIs KGZ1bmN0aW9uKCl7bi5ldmVudC5zb3VyY2VFdmVudC5wcmV2ZW50RGVmYXVsdCgpfSkpLm9u KCJkcmFnIix0aGlzLl9vbkJveERyYWcuYmluZCh0aGlzKSk7dGhpcy5jb250YWluZXIub24o IndoZWVsIixudWxsKS5vbigid2hlZWwiLHRoaXMuX29uQm94V2hlZWwuYmluZCh0aGlzKSku b24oIi5kcmFnIixudWxsKS5jYWxsKFYpO3ZhciBIPW4uYmVoYXZpb3IuZHJhZygpLm9uKCJk cmFnc3RhcnQiLChmdW5jdGlvbigpe24uZXZlbnQuc291cmNlRXZlbnQucHJldmVudERlZmF1 bHQoKSxuLmV2ZW50LnNvdXJjZUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfSkpLm9uKCJkcmFn Iix0aGlzLl9vbkJhckRyYWcuYmluZCh0aGlzKSk7ayYmdGhpcy5oYmFyLm9uKCIuZHJhZyIs bnVsbCkuY2FsbChIKSxDJiZ0aGlzLnZiYXIub24oIi5kcmFnIixudWxsKS5jYWxsKEgpfXRo aXMuc2V0VHJhbnNsYXRlKGUscil9LHMucHJvdG90eXBlLmRpc2FibGU9ZnVuY3Rpb24oKXso dGhpcy5oYmFyfHx0aGlzLnZiYXIpJiYodGhpcy5iZy5hdHRyKHt3aWR0aDowLGhlaWdodDow fSksdGhpcy5jb250YWluZXIub24oIndoZWVsIixudWxsKS5vbigiLmRyYWciLG51bGwpLmNh bGwoYS5zZXRDbGlwVXJsLG51bGwpLGRlbGV0ZSB0aGlzLl9jbGlwUmVjdCksdGhpcy5oYmFy JiYodGhpcy5oYmFyLm9uKCIuZHJhZyIsbnVsbCksdGhpcy5oYmFyLnJlbW92ZSgpLGRlbGV0 ZSB0aGlzLmhiYXIsZGVsZXRlIHRoaXMuX2hiYXJYTWluLGRlbGV0ZSB0aGlzLl9oYmFyVHJh bnNsYXRlTWF4KSx0aGlzLnZiYXImJih0aGlzLnZiYXIub24oIi5kcmFnIixudWxsKSx0aGlz LnZiYXIucmVtb3ZlKCksZGVsZXRlIHRoaXMudmJhcixkZWxldGUgdGhpcy5fdmJhcllNaW4s ZGVsZXRlIHRoaXMuX3ZiYXJUcmFuc2xhdGVNYXgpfSxzLnByb3RvdHlwZS5fb25Cb3hEcmFn PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy50cmFuc2xhdGVYLGU9dGhpcy50cmFuc2xhdGVZO3Ro aXMuaGJhciYmKHQtPW4uZXZlbnQuZHgpLHRoaXMudmJhciYmKGUtPW4uZXZlbnQuZHkpLHRo aXMuc2V0VHJhbnNsYXRlKHQsZSl9LHMucHJvdG90eXBlLl9vbkJveFdoZWVsPWZ1bmN0aW9u KCl7dmFyIHQ9dGhpcy50cmFuc2xhdGVYLGU9dGhpcy50cmFuc2xhdGVZO3RoaXMuaGJhciYm KHQrPW4uZXZlbnQuZGVsdGFZKSx0aGlzLnZiYXImJihlKz1uLmV2ZW50LmRlbHRhWSksdGhp cy5zZXRUcmFuc2xhdGUodCxlKX0scy5wcm90b3R5cGUuX29uQmFyRHJhZz1mdW5jdGlvbigp e3ZhciB0PXRoaXMudHJhbnNsYXRlWCxlPXRoaXMudHJhbnNsYXRlWTtpZih0aGlzLmhiYXIp e3ZhciByPXQrdGhpcy5faGJhclhNaW4saT1yK3RoaXMuX2hiYXJUcmFuc2xhdGVNYXg7dD0o by5jb25zdHJhaW4obi5ldmVudC54LHIsaSktcikvKGktcikqKHRoaXMucG9zaXRpb24udy10 aGlzLl9ib3gudyl9aWYodGhpcy52YmFyKXt2YXIgYT1lK3RoaXMuX3ZiYXJZTWluLHM9YSt0 aGlzLl92YmFyVHJhbnNsYXRlTWF4O2U9KG8uY29uc3RyYWluKG4uZXZlbnQueSxhLHMpLWEp LyhzLWEpKih0aGlzLnBvc2l0aW9uLmgtdGhpcy5fYm94LmgpfXRoaXMuc2V0VHJhbnNsYXRl KHQsZSl9LHMucHJvdG90eXBlLnNldFRyYW5zbGF0ZT1mdW5jdGlvbih0LGUpe3ZhciByPXRo aXMucG9zaXRpb24udy10aGlzLl9ib3gudyxuPXRoaXMucG9zaXRpb24uaC10aGlzLl9ib3gu aDtpZih0PW8uY29uc3RyYWluKHR8fDAsMCxyKSxlPW8uY29uc3RyYWluKGV8fDAsMCxuKSx0 aGlzLnRyYW5zbGF0ZVg9dCx0aGlzLnRyYW5zbGF0ZVk9ZSx0aGlzLmNvbnRhaW5lci5jYWxs KGEuc2V0VHJhbnNsYXRlLHRoaXMuX2JveC5sLXRoaXMucG9zaXRpb24ubC10LHRoaXMuX2Jv eC50LXRoaXMucG9zaXRpb24udC1lKSx0aGlzLl9jbGlwUmVjdCYmdGhpcy5fY2xpcFJlY3Qu YXR0cih7eDpNYXRoLmZsb29yKHRoaXMucG9zaXRpb24ubCt0LS41KSx5Ok1hdGguZmxvb3Io dGhpcy5wb3NpdGlvbi50K2UtLjUpfSksdGhpcy5oYmFyKXt2YXIgaT10L3I7dGhpcy5oYmFy LmNhbGwoYS5zZXRUcmFuc2xhdGUsdCtpKnRoaXMuX2hiYXJUcmFuc2xhdGVNYXgsZSl9aWYo dGhpcy52YmFyKXt2YXIgcz1lL247dGhpcy52YmFyLmNhbGwoYS5zZXRUcmFuc2xhdGUsdCxl K3MqdGhpcy5fdmJhclRyYW5zbGF0ZU1heCl9fX0seyIuLi8uLi9saWIiOjUwMywiLi4vY29s b3IiOjM2NiwiLi4vZHJhd2luZyI6Mzg4LCJAcGxvdGx5L2QzIjo1OH1dLDQ3MTpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e0ZST01fQkw6e2xlZnQ6MCxjZW50 ZXI6LjUscmlnaHQ6MSxib3R0b206MCxtaWRkbGU6LjUsdG9wOjF9LEZST01fVEw6e2xlZnQ6 MCxjZW50ZXI6LjUscmlnaHQ6MSxib3R0b206MSxtaWRkbGU6LjUsdG9wOjB9LEZST01fQlI6 e2xlZnQ6MSxjZW50ZXI6LjUscmlnaHQ6MCxib3R0b206MCxtaWRkbGU6LjUsdG9wOjF9LExJ TkVfU1BBQ0lORzoxLjMsQ0FQX1NISUZUOi43LE1JRF9TSElGVDouMzUsT1BQT1NJVEVfU0lE RTp7bGVmdDoicmlnaHQiLHJpZ2h0OiJsZWZ0Iix0b3A6ImJvdHRvbSIsYm90dG9tOiJ0b3Ai fX19LHt9XSw0NzI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXth eGlzUmVmRGVzY3JpcHRpb246ZnVuY3Rpb24odCxlLHIpe3JldHVyblsiSWYgc2V0IHRvIGEi LHQsImF4aXMgaWQgKGUuZy4gKiIrdCsiKiBvciIsIioiK3QrIjIqKSwgdGhlIGAiK3QrImAg cG9zaXRpb24gcmVmZXJzIHRvIGEiLHQsImNvb3JkaW5hdGUuIElmIHNldCB0byAqcGFwZXIq LCB0aGUgYCIrdCsiYCIsInBvc2l0aW9uIHJlZmVycyB0byB0aGUgZGlzdGFuY2UgZnJvbSB0 aGUiLGUsIm9mIHRoZSBwbG90dGluZyIsImFyZWEgaW4gbm9ybWFsaXplZCBjb29yZGluYXRl cyB3aGVyZSAqMCogKCoxKikgY29ycmVzcG9uZHMgdG8gdGhlIixlLCIoIityKyIpLiBJZiBz ZXQgdG8gYSIsdCwiYXhpcyBJRCBmb2xsb3dlZCBieSIsIipkb21haW4qIChzZXBhcmF0ZWQg YnkgYSBzcGFjZSksIHRoZSBwb3NpdGlvbiBiZWhhdmVzIGxpa2UgZm9yIiwiKnBhcGVyKiwg YnV0IHJlZmVycyB0byB0aGUgZGlzdGFuY2UgaW4gZnJhY3Rpb25zIG9mIHRoZSBkb21haW4i LCJsZW5ndGggZnJvbSB0aGUiLGUsIm9mIHRoZSBkb21haW4gb2YgdGhhdCBheGlzOiBlLmcu LCIsIioiK3QrIjIgZG9tYWluKiByZWZlcnMgdG8gdGhlIGRvbWFpbiBvZiB0aGUgc2Vjb25k Iix0LCIgYXhpcyBhbmQgYSIsdCwicG9zaXRpb24gb2YgMC41IHJlZmVycyB0byB0aGUiLCJw b2ludCBiZXR3ZWVuIHRoZSIsZSwiYW5kIHRoZSIsciwib2YgdGhlIGRvbWFpbiBvZiB0aGUi LCJzZWNvbmQiLHQsImF4aXMuIl0uam9pbigiICIpfX19LHt9XSw0NzM6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtJTkNSRUFTSU5HOntDT0xPUjoiIzNEOTk3 MCIsU1lNQk9MOiJcdTI1YjIifSxERUNSRUFTSU5HOntDT0xPUjoiI0ZGNDEzNiIsU1lNQk9M OiJcdTI1YmMifX19LHt9XSw0NzQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5l eHBvcnRzPXtGT1JNQVRfTElOSzoiaHR0cHM6Ly9naXRodWIuY29tL2QzL2QzLWZvcm1hdC90 cmVlL3YxLjQuNSNkMy1mb3JtYXQiLERBVEVfRk9STUFUX0xJTks6Imh0dHBzOi8vZ2l0aHVi LmNvbS9kMy9kMy10aW1lLWZvcm1hdC90cmVlL3YyLjIuMyNsb2NhbGVfZm9ybWF0In19LHt9 XSw0NzU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtDT01QQVJJ U09OX09QUzpbIj0iLCIhPSIsIjwiLCI+PSIsIj4iLCI8PSJdLENPTVBBUklTT05fT1BTMjpb Ij0iLCI8IiwiPj0iLCI+IiwiPD0iXSxJTlRFUlZBTF9PUFM6WyJbXSIsIigpIiwiWykiLCIo XSIsIl1bIiwiKSgiLCJdKCIsIilbIl0sU0VUX09QUzpbInt9IiwifXsiXSxDT05TVFJBSU5U X1JFRFVDVElPTjp7Ij0iOiI9IiwiPCI6IjwiLCI8PSI6IjwiLCI+IjoiPiIsIj49IjoiPiIs IltdIjoiW10iLCIoKSI6IltdIiwiWykiOiJbXSIsIihdIjoiW10iLCJdWyI6Il1bIiwiKSgi OiJdWyIsIl0oIjoiXVsiLCIpWyI6Il1bIn19fSx7fV0sNDc2OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17c29saWQ6W1tdLDBdLGRvdDpbWy41LDFdLDIwMF0s ZGFzaDpbWy41LDFdLDUwXSxsb25nZGFzaDpbWy41LDFdLDEwXSxkYXNoZG90OltbLjUsLjYy NSwuODc1LDFdLDUwXSxsb25nZGFzaGRvdDpbWy41LC43LC44LDFdLDEwXX19LHt9XSw0Nzc6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtjaXJjbGU6Ilx1MjVj ZiIsImNpcmNsZS1vcGVuIjoiXHUyNWNiIixzcXVhcmU6Ilx1MjVhMCIsInNxdWFyZS1vcGVu IjoiXHUyNWExIixkaWFtb25kOiJcdTI1YzYiLCJkaWFtb25kLW9wZW4iOiJcdTI1YzciLGNy b3NzOiIrIix4OiJcdTI3NGMifX0se31dLDQ3ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0IjtlLmV4cG9ydHM9e1NIT1dfUExBQ0VIT0xERVI6MTAwLEhJREVfUExBQ0VIT0xERVI6 MWUzLERFU0VMRUNURElNOi4yfX0se31dLDQ3OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0IjtlLmV4cG9ydHM9e0JBRE5VTTp2b2lkIDAsRlBfU0FGRToxZS00Kk51bWJlci5NQVhf VkFMVUUsT05FTUFYWUVBUjozMTYyMjRlNSxPTkVBVkdZRUFSOjMxNTU3NmU1LE9ORU1JTllF QVI6MzE1MzZlNixPTkVNQVhRVUFSVEVSOjc5NDg4ZTUsT05FQVZHUVVBUlRFUjo3ODg5NGU1 LE9ORU1JTlFVQVJURVI6NzY4OTZlNSxPTkVNQVhNT05USDoyNjc4NGU1LE9ORUFWR01PTlRI OjI2Mjk4ZTUsT05FTUlOTU9OVEg6MjQxOTJlNSxPTkVXRUVLOjYwNDhlNSxPTkVEQVk6ODY0 ZTUsT05FSE9VUjozNmU1LE9ORU1JTjo2ZTQsT05FU0VDOjFlMyxFUE9DSEpEOjI0NDA1ODcu NSxBTE1PU1RfRVFVQUw6Ljk5OTk5OSxMT0dfQ0xJUDoxMCxNSU5VU19TSUdOOiJcdTIyMTIi fX0se31dLDQ4MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtyLnhtbG5zPSJodHRw Oi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsci5zdmc9Imh0dHA6Ly93d3cudzMub3JnLzIw MDAvc3ZnIixyLnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIixyLnN2Z0F0 dHJzPXt4bWxuczpyLnN2ZywieG1sbnM6eGxpbmsiOnIueGxpbmt9fSx7fV0sNDgxOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3IudmVyc2lvbj10KCIuL3ZlcnNpb24iKS52ZXJz aW9uLHQoIm5hdGl2ZS1wcm9taXNlLW9ubHkiKSx0KCIuLi9idWlsZC9wbG90Y3NzIik7Zm9y KHZhciBuPXQoIi4vcmVnaXN0cnkiKSxpPXIucmVnaXN0ZXI9bi5yZWdpc3RlcixhPXQoIi4v cGxvdF9hcGkiKSxvPU9iamVjdC5rZXlzKGEpLHM9MDtzPG8ubGVuZ3RoO3MrKyl7dmFyIGw9 b1tzXTsiXyIhPT1sLmNoYXJBdCgwKSYmKHJbbF09YVtsXSksaSh7bW9kdWxlVHlwZToiYXBp TWV0aG9kIixuYW1lOmwsZm46YVtsXX0pfWkodCgiLi90cmFjZXMvc2NhdHRlciIpKSxpKFt0 KCIuL2NvbXBvbmVudHMvbGVnZW5kIiksdCgiLi9jb21wb25lbnRzL2Z4IiksdCgiLi9jb21w b25lbnRzL2Fubm90YXRpb25zIiksdCgiLi9jb21wb25lbnRzL2Fubm90YXRpb25zM2QiKSx0 KCIuL2NvbXBvbmVudHMvc2hhcGVzIiksdCgiLi9jb21wb25lbnRzL2ltYWdlcyIpLHQoIi4v Y29tcG9uZW50cy91cGRhdGVtZW51cyIpLHQoIi4vY29tcG9uZW50cy9zbGlkZXJzIiksdCgi Li9jb21wb25lbnRzL3Jhbmdlc2xpZGVyIiksdCgiLi9jb21wb25lbnRzL3Jhbmdlc2VsZWN0 b3IiKSx0KCIuL2NvbXBvbmVudHMvZ3JpZCIpLHQoIi4vY29tcG9uZW50cy9lcnJvcmJhcnMi KSx0KCIuL2NvbXBvbmVudHMvY29sb3JzY2FsZSIpLHQoIi4vY29tcG9uZW50cy9jb2xvcmJh ciIpLHQoIi4vY29tcG9uZW50cy9tb2RlYmFyIildKSxpKFt0KCIuL2xvY2FsZS1lbiIpLHQo Ii4vbG9jYWxlLWVuLXVzIildKSx3aW5kb3cuUGxvdGx5TG9jYWxlcyYmQXJyYXkuaXNBcnJh eSh3aW5kb3cuUGxvdGx5TG9jYWxlcykmJihpKHdpbmRvdy5QbG90bHlMb2NhbGVzKSxkZWxl dGUgd2luZG93LlBsb3RseUxvY2FsZXMpLHIuSWNvbnM9dCgiLi9mb250cy9wbG90aWNvbiIp O3ZhciBjPXQoIi4vY29tcG9uZW50cy9meCIpLHU9dCgiLi9wbG90cy9wbG90cyIpO3IuUGxv dHM9e3Jlc2l6ZTp1LnJlc2l6ZSxncmFwaEpzb246dS5ncmFwaEpzb24sc2VuZERhdGFUb0Ns b3VkOnUuc2VuZERhdGFUb0Nsb3VkfSxyLkZ4PXtob3ZlcjpjLmhvdmVyLHVuaG92ZXI6Yy51 bmhvdmVyLGxvbmVIb3ZlcjpjLmxvbmVIb3Zlcixsb25lVW5ob3ZlcjpjLmxvbmVVbmhvdmVy fSxyLlNuYXBzaG90PXQoIi4vc25hcHNob3QiKSxyLlBsb3RTY2hlbWE9dCgiLi9wbG90X2Fw aS9wbG90X3NjaGVtYSIpfSx7Ii4uL2J1aWxkL3Bsb3Rjc3MiOjEsIi4vY29tcG9uZW50cy9h bm5vdGF0aW9ucyI6MzU3LCIuL2NvbXBvbmVudHMvYW5ub3RhdGlvbnMzZCI6MzYyLCIuL2Nv bXBvbmVudHMvY29sb3JiYXIiOjM3MiwiLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiOjM3OCwi Li9jb21wb25lbnRzL2Vycm9yYmFycyI6Mzk0LCIuL2NvbXBvbmVudHMvZngiOjQwNiwiLi9j b21wb25lbnRzL2dyaWQiOjQxMCwiLi9jb21wb25lbnRzL2ltYWdlcyI6NDE1LCIuL2NvbXBv bmVudHMvbGVnZW5kIjo0MjMsIi4vY29tcG9uZW50cy9tb2RlYmFyIjo0MjksIi4vY29tcG9u ZW50cy9yYW5nZXNlbGVjdG9yIjo0MzcsIi4vY29tcG9uZW50cy9yYW5nZXNsaWRlciI6NDQ0 LCIuL2NvbXBvbmVudHMvc2hhcGVzIjo0NTgsIi4vY29tcG9uZW50cy9zbGlkZXJzIjo0NjMs Ii4vY29tcG9uZW50cy91cGRhdGVtZW51cyI6NDY5LCIuL2ZvbnRzL3Bsb3RpY29uIjo0ODIs Ii4vbG9jYWxlLWVuIjo1MzQsIi4vbG9jYWxlLWVuLXVzIjo1MzMsIi4vcGxvdF9hcGkiOjUz OCwiLi9wbG90X2FwaS9wbG90X3NjaGVtYSI6NTQyLCIuL3Bsb3RzL3Bsb3RzIjo2MTksIi4v cmVnaXN0cnkiOjYzOCwiLi9zbmFwc2hvdCI6NjQzLCIuL3RyYWNlcy9zY2F0dGVyIjo5Mzks Ii4vdmVyc2lvbiI6MTEyMywibmF0aXZlLXByb21pc2Utb25seSI6MjQ1fV0sNDgyOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17dW5kbzp7d2lkdGg6ODU3LjEs aGVpZ2h0OjFlMyxwYXRoOiJtODU3IDM1MHEwLTg3LTM0LTE2NnQtOTEtMTM3LTEzNy05Mi0x NjYtMzRxLTk2IDAtMTgzIDQxdC0xNDcgMTE0cS00IDYtNCAxM3Q1IDExbDc2IDc3cTYgNSAx NCA1IDktMSAxMy03IDQxLTUzIDEwMC04MnQxMjYtMjlxNTggMCAxMTAgMjN0OTIgNjEgNjEg OTEgMjIgMTExLTIyIDExMS02MSA5MS05MiA2MS0xMTAgMjNxLTU1IDAtMTA1LTIwdC05MC01 N2w3Ny03N3ExNy0xNiA4LTM4LTEwLTIzLTMzLTIzaC0yNTBxLTE1IDAtMjUgMTF0LTExIDI1 djI1MHEwIDI0IDIyIDMzIDIyIDEwIDM5LThsNzItNzJxNjAgNTcgMTM3IDg4dDE1OSAzMXE4 NyAwIDE2Ni0zNHQxMzctOTIgOTEtMTM3IDM0LTE2NnoiLHRyYW5zZm9ybToibWF0cml4KDEg MCAwIC0xIDAgODUwKSJ9LGhvbWU6e3dpZHRoOjkyOC42LGhlaWdodDoxZTMscGF0aDoibTc4 NiAyOTZ2LTI2N3EwLTE1LTExLTI2dC0yNS0xMGgtMjE0djIxNGgtMTQzdi0yMTRoLTIxNHEt MTUgMC0yNSAxMHQtMTEgMjZ2MjY3cTAgMSAwIDJ0MCAybDMyMSAyNjQgMzIxLTI2NHExLTEg MS00eiBtMTI0IDM5bC0zNC00MXEtNS01LTEyLTZoLTJxLTcgMC0xMiAzbC0zODYgMzIyLTM4 Ni0zMjJxLTctNC0xMy00LTcgMi0xMiA3bC0zNSA0MXEtNCA1LTMgMTN0NiAxMmw0MDEgMzM0 cTE4IDE1IDQyIDE1dDQzLTE1bDEzNi0xMTR2MTA5cTAgOCA1IDEzdDEzIDVoMTA3cTggMCAx My01dDUtMTN2LTIyN2wxMjItMTAycTUtNSA2LTEydC00LTEzeiIsdHJhbnNmb3JtOiJtYXRy aXgoMSAwIDAgLTEgMCA4NTApIn0sImNhbWVyYS1yZXRybyI6e3dpZHRoOjFlMyxoZWlnaHQ6 MWUzLHBhdGg6Im01MTggMzg2cTAgOC01IDEzdC0xMyA1cS0zNyAwLTYzLTI3dC0yNi02M3Ew LTggNS0xM3QxMy01IDEyIDUgNSAxM3EwIDIzIDE2IDM4dDM4IDE2cTggMCAxMyA1dDUgMTN6 IG0xMjUtNzNxMC01OS00Mi0xMDF0LTEwMS00Mi0xMDEgNDItNDIgMTAxIDQyIDEwMSAxMDEg NDIgMTAxLTQyIDQyLTEwMXogbS01NzItMzIwaDg1OHY3MWgtODU4di03MXogbTY0MyAzMjBx MCA4OS02MiAxNTJ0LTE1MiA2Mi0xNTEtNjItNjMtMTUyIDYzLTE1MSAxNTEtNjMgMTUyIDYz IDYyIDE1MXogbS01NzEgMzU4aDIxNHY3MmgtMjE0di03MnogbS03Mi0xMDdoODU4djE0M2gt NDYybC0zNi03MWgtMzYwdi03MnogbTkyOSAxNDN2LTcxNHEwLTMwLTIxLTUxdC01MC0yMWgt ODU4cS0yOSAwLTUwIDIxdC0yMSA1MXY3MTRxMCAzMCAyMSA1MXQ1MCAyMWg4NThxMjkgMCA1 MC0yMXQyMS01MXoiLHRyYW5zZm9ybToibWF0cml4KDEgMCAwIC0xIDAgODUwKSJ9LHpvb21i b3g6e3dpZHRoOjFlMyxoZWlnaHQ6MWUzLHBhdGg6Im0xMDAwLTI1bC0yNTAgMjUxYzQwIDYz IDYzIDEzOCA2MyAyMTggMCAyMjQtMTgyIDQwNi00MDcgNDA2LTIyNCAwLTQwNi0xODItNDA2 LTQwNnMxODMtNDA2IDQwNy00MDZjODAgMCAxNTUgMjIgMjE4IDYybDI1MC0yNTAgMTI1IDEy NXogbS04MTIgMjUwbDAgNDM4IDQzNyAwIDAtNDM4LTQzNyAweiBtNjIgMzc1bDMxMyAwIDAt MzEyLTMxMyAwIDAgMzEyeiIsdHJhbnNmb3JtOiJtYXRyaXgoMSAwIDAgLTEgMCA4NTApIn0s cGFuOnt3aWR0aDoxZTMsaGVpZ2h0OjFlMyxwYXRoOiJtMTAwMCAzNTBsLTE4NyAxODggMC0x MjUtMjUwIDAgMCAyNTAgMTI1IDAtMTg4IDE4Ny0xODctMTg3IDEyNSAwIDAtMjUwLTI1MCAw IDAgMTI1LTE4OC0xODggMTg2LTE4NyAwIDEyNSAyNTIgMCAwLTI1MC0xMjUgMCAxODctMTg4 IDE4OCAxODgtMTI1IDAgMCAyNTAgMjUwIDAgMC0xMjYgMTg3IDE4OHoiLHRyYW5zZm9ybToi bWF0cml4KDEgMCAwIC0xIDAgODUwKSJ9LHpvb21fcGx1czp7d2lkdGg6ODc1LGhlaWdodDox ZTMscGF0aDoibTEgNzg3bDAtODc1IDg3NSAwIDAgODc1LTg3NSAweiBtNjg3LTUwMGwtMTg3 IDAgMC0xODctMTI1IDAgMCAxODctMTg4IDAgMCAxMjUgMTg4IDAgMCAxODcgMTI1IDAgMC0x ODcgMTg3IDAgMC0xMjV6Iix0cmFuc2Zvcm06Im1hdHJpeCgxIDAgMCAtMSAwIDg1MCkifSx6 b29tX21pbnVzOnt3aWR0aDo4NzUsaGVpZ2h0OjFlMyxwYXRoOiJtMCA3ODhsMC04NzYgODc1 IDAgMCA4NzYtODc1IDB6IG02ODgtNTAwbC01MDAgMCAwIDEyNSA1MDAgMCAwLTEyNXoiLHRy YW5zZm9ybToibWF0cml4KDEgMCAwIC0xIDAgODUwKSJ9LGF1dG9zY2FsZTp7d2lkdGg6MWUz LGhlaWdodDoxZTMscGF0aDoibTI1MCA4NTBsLTE4NyAwLTYzIDAgMC02MiAwLTE4OCA2MyAw IDAgMTg4IDE4NyAwIDAgNjJ6IG02ODggMGwtMTg4IDAgMC02MiAxODggMCAwLTE4OCA2MiAw IDAgMTg4IDAgNjItNjIgMHogbS04NzUtOTM4bDAgMTg4LTYzIDAgMC0xODggMC02MiA2MyAw IDE4NyAwIDAgNjItMTg3IDB6IG04NzUgMTg4bDAtMTg4LTE4OCAwIDAtNjIgMTg4IDAgNjIg MCAwIDYyIDAgMTg4LTYyIDB6IG0tMTI1IDE4OGwtMSAwLTkzLTk0LTE1NiAxNTYgMTU2IDE1 NiA5Mi05MyAyIDAgMCAyNTAtMjUwIDAgMC0yIDkzLTkyLTE1Ni0xNTYtMTU2IDE1NiA5NCA5 MiAwIDItMjUwIDAgMC0yNTAgMCAwIDkzIDkzIDE1Ny0xNTYtMTU3LTE1Ni05MyA5NCAwIDAg MC0yNTAgMjUwIDAgMCAwLTk0IDkzIDE1NiAxNTcgMTU2LTE1Ny05My05MyAwIDAgMjUwIDAg MCAyNTB6Iix0cmFuc2Zvcm06Im1hdHJpeCgxIDAgMCAtMSAwIDg1MCkifSx0b29sdGlwX2Jh c2ljOnt3aWR0aDoxNTAwLGhlaWdodDoxZTMscGF0aDoibTM3NSA3MjVsMCAwLTM3NS0zNzUg Mzc1LTM3NCAwLTEgMTEyNSAwIDAgNzUwLTExMjUgMHoiLHRyYW5zZm9ybToibWF0cml4KDEg MCAwIC0xIDAgODUwKSJ9LHRvb2x0aXBfY29tcGFyZTp7d2lkdGg6MTEyNSxoZWlnaHQ6MWUz LHBhdGg6Im0xODcgNzg2bDAgMi0xODctMTg4IDE4OC0xODcgMCAwIDkzNyAwIDAgMzczLTkz OCAweiBtMC00OTlsMCAxLTE4Ny0xODggMTg4LTE4OCAwIDAgOTM3IDAgMCAzNzYtOTM4LTF6 Iix0cmFuc2Zvcm06Im1hdHJpeCgxIDAgMCAtMSAwIDg1MCkifSxwbG90bHlsb2dvOnt3aWR0 aDoxNTQyLGhlaWdodDoxZTMscGF0aDoibTAtMTBoMTgydi0xNDBoLTE4MnYxNDB6IG0yMjgg MTQ2aDE4M3YtMjg2aC0xODN2Mjg2eiBtMjI1IDcxNGgxODJ2LTEwMDBoLTE4MnYxMDAweiBt MjI1LTI4NWgxODJ2LTcxNWgtMTgydjcxNXogbTIyNSAxNDJoMTgzdi04NTdoLTE4M3Y4NTd6 IG0yMzEtNDI4aDE4MnYtNDI5aC0xODJ2NDI5eiBtMjI1LTI5MWgxODN2LTEzOGgtMTgzdjEz OHoiLHRyYW5zZm9ybToibWF0cml4KDEgMCAwIC0xIDAgODUwKSJ9LCJ6LWF4aXMiOnt3aWR0 aDoxZTMsaGVpZ2h0OjFlMyxwYXRoOiJtODMzIDVsLTE3IDEwOHY0MWwtMTMwLTY1IDEzMC02 NmMwIDAgMCAzOCAwIDM5IDAtMSAzNi0xNCAzOS0yNSA0LTE1LTYtMjItMTYtMzAtMTUtMTIt MzktMTYtNTYtMjAtOTAtMjItMTg3LTIzLTI3OS0yMy0yNjEgMC0zNDEgMzQtMzUzIDU5IDMg NjAgMjI4IDExMCAyMjggMTEwLTE0MC04LTM1MS0zNS0zNTEtMTE2IDAtMTIwIDI5My0xNDIg NDc0LTE0MiAxNTUgMCA0NzcgMjIgNDc3IDE0MiAwIDUwLTc0IDc5LTE2MyA5NnogbS0zNzQg OTRjLTU4LTUtOTktMjEtOTktNDAgMC0yNCA2NS00MyAxNDQtNDMgNzkgMCAxNDMgMTkgMTQz IDQzIDAgMTktNDIgMzQtOTggNDB2MjE2aDg3bC0xMzIgMTM1LTEzMy0xMzVoODh2LTIxNnog bTE2NyA1MTVoLTEzNnYxYzE2IDE2IDMxIDM0IDQ2IDUybDg0IDEwOXY1NGgtMjMwdi03MWgx MjR2LTFjLTE2LTE3LTI4LTMyLTQ0LTUxbC04OS0xMTR2LTUxaDI0NXY3MnoiLHRyYW5zZm9y bToibWF0cml4KDEgMCAwIC0xIDAgODUwKSJ9LCIzZF9yb3RhdGUiOnt3aWR0aDoxZTMsaGVp Z2h0OjFlMyxwYXRoOiJtOTIyIDY2MGMtNSA0LTkgNy0xNCAxMS0zNTkgMjYzLTU4MC0zMS01 ODAtMzFsLTEwMiAyOCA1OC00MDBjMCAxIDEgMSAyIDIgMTE4IDEwOCAzNTEgMjQ5IDM1MSAy NDlzLTYyIDI3LTEwMCA0MmM4OCA4MyAyMjIgMTgzIDM0NyAxMjIgMTYtOCAzMC0xNyA0NC0y Ny0yIDEtNCAyLTYgNHogbTM2LTMyOWMwIDAgNjQgMjI5LTg4IDI5Ni02MiAyNy0xMjQgMTQt MTc1LTExIDE1Ny03OCAyMjUtMjA4IDI0OS0yNjYgOC0xOSAxMS0zMSAxMS0zMSAyIDUgNiAx NSAxMSAzMi01LTEzLTgtMjAtOC0yMHogbS03NzUtMjM5YzcwLTMxIDExNy01MCAxOTgtMzIt MTIxIDgwLTE5OSAzNDYtMTk5IDM0NmwtOTYtMTUtNTgtMTJjMCAwIDU1LTIyNiAxNTUtMjg3 eiBtNjAzIDEzM2wtMzE3LTEzOWMwIDAgNC00IDE5LTE0IDctNSAyNC0xNSAyNC0xNXMtMTc3 LTE0Ny0zODkgNGMyMzUtMjg3IDUzNi0xMTIgNTM2LTExMmwzMS0yMiAxMDAgMjk5LTQtMXog bS0yOTgtMTUzYzYtNCAxNC05IDI0LTE1IDAgMC0xNyAxMC0yNCAxNXoiLHRyYW5zZm9ybToi bWF0cml4KDEgMCAwIC0xIDAgODUwKSJ9LGNhbWVyYTp7d2lkdGg6MWUzLGhlaWdodDoxZTMs cGF0aDoibTUwMCA0NTBjLTgzIDAtMTUwLTY3LTE1MC0xNTAgMC04MyA2Ny0xNTAgMTUwLTE1 MCA4MyAwIDE1MCA2NyAxNTAgMTUwIDAgODMtNjcgMTUwLTE1MCAxNTB6IG00MDAgMTUwaC0x MjBjLTE2IDAtMzQgMTMtMzkgMjlsLTMxIDkzYy02IDE1LTIzIDI4LTQwIDI4aC0zNDBjLTE2 IDAtMzQtMTMtMzktMjhsLTMxLTk0Yy02LTE1LTIzLTI4LTQwLTI4aC0xMjBjLTU1IDAtMTAw LTQ1LTEwMC0xMDB2LTQ1MGMwLTU1IDQ1LTEwMCAxMDAtMTAwaDgwMGM1NSAwIDEwMCA0NSAx MDAgMTAwdjQ1MGMwIDU1LTQ1IDEwMC0xMDAgMTAweiBtLTQwMC01NTBjLTEzOCAwLTI1MCAx MTItMjUwIDI1MCAwIDEzOCAxMTIgMjUwIDI1MCAyNTAgMTM4IDAgMjUwLTExMiAyNTAtMjUw IDAtMTM4LTExMi0yNTAtMjUwLTI1MHogbTM2NSAzODBjLTE5IDAtMzUgMTYtMzUgMzUgMCAx OSAxNiAzNSAzNSAzNSAxOSAwIDM1LTE2IDM1LTM1IDAtMTktMTYtMzUtMzUtMzV6Iix0cmFu c2Zvcm06Im1hdHJpeCgxIDAgMCAtMSAwIDg1MCkifSxtb3ZpZTp7d2lkdGg6MWUzLGhlaWdo dDoxZTMscGF0aDoibTkzOCA0MTNsLTE4OC0xMjVjMCAzNy0xNyA3MS00NCA5NCA2NCAzOCAx MDcgMTA3IDEwNyAxODcgMCAxMjEtOTggMjE5LTIxOSAyMTktMTIxIDAtMjE5LTk4LTIxOS0y MTkgMC02MSAyNS0xMTcgNjYtMTU2aC0xMTVjMzAgMzMgNDkgNzYgNDkgMTI1IDAgMTAzLTg0 IDE4Ny0xODcgMTg3cy0xODgtODQtMTg4LTE4N2MwLTU3IDI2LTEwNyA2NS0xNDEtMzgtMjIt NjUtNjItNjUtMTA5di0yNTBjMC03MCA1Ni0xMjYgMTI1LTEyNmg1MDBjNjkgMCAxMjUgNTYg MTI1IDEyNmwxODgtMTI2YzM0IDAgNjIgMjggNjIgNjN2Mzc1YzAgMzUtMjggNjMtNjIgNjN6 IG0tNzUwIDBjLTY5IDAtMTI1IDU2LTEyNSAxMjVzNTYgMTI1IDEyNSAxMjUgMTI1LTU2IDEy NS0xMjUtNTYtMTI1LTEyNS0xMjV6IG00MDYtMWMtODcgMC0xNTcgNzAtMTU3IDE1NyAwIDg2 IDcwIDE1NiAxNTcgMTU2czE1Ni03MCAxNTYtMTU2LTcwLTE1Ny0xNTYtMTU3eiIsdHJhbnNm b3JtOiJtYXRyaXgoMSAwIDAgLTEgMCA4NTApIn0scXVlc3Rpb246e3dpZHRoOjg1Ny4xLGhl aWdodDoxZTMscGF0aDoibTUwMCA4MnYxMDdxMCA4LTUgMTN0LTEzIDVoLTEwN3EtOCAwLTEz LTV0LTUtMTN2LTEwN3EwLTggNS0xM3QxMy01aDEwN3E4IDAgMTMgNXQ1IDEzeiBtMTQzIDM3 NXEwIDQ5LTMxIDkxdC03NyA2NS05NSAyM3EtMTM2IDAtMjA3LTExOS05LTE0IDQtMjRsNzQt NTVxNC00IDEwLTQgOSAwIDE0IDcgMzAgMzggNDggNTEgMTkgMTQgNDggMTQgMjcgMCA0OC0x NXQyMS0zM3EwLTIxLTExLTM0dC0zOC0yNXEtMzUtMTYtNjUtNDh0LTI5LTcwdi0yMHEwLTgg NS0xM3QxMy01aDEwN3E4IDAgMTMgNXQ1IDEzcTAgMTAgMTIgMjd0MzAgMjhxMTggMTAgMjgg MTZ0MjUgMTkgMjUgMjcgMTYgMzQgNyA0NXogbTIxNC0xMDdxMC0xMTctNTctMjE1dC0xNTYt MTU2LTIxNS01OC0yMTYgNTgtMTU1IDE1Ni01OCAyMTUgNTggMjE1IDE1NSAxNTYgMjE2IDU4 IDIxNS01OCAxNTYtMTU2IDU3LTIxNXoiLHRyYW5zZm9ybToibWF0cml4KDEgMCAwIC0xIDAg ODUwKSJ9LGRpc2s6e3dpZHRoOjg1Ny4xLGhlaWdodDoxZTMscGF0aDoibTIxNC03aDQyOXYy MTRoLTQyOXYtMjE0eiBtNTAwIDBoNzJ2NTAwcTAgOC02IDIxdC0xMSAyMGwtMTU3IDE1NnEt NSA2LTE5IDEydC0yMiA1di0yMzJxMC0yMi0xNS0zOHQtMzgtMTZoLTMyMnEtMjIgMC0zNyAx NnQtMTYgMzh2MjMyaC03MnYtNzE0aDcydjIzMnEwIDIyIDE2IDM4dDM3IDE2aDQ2NXEyMiAw IDM4LTE2dDE1LTM4di0yMzJ6IG0tMjE0IDUxOHYxNzhxMCA4LTUgMTN0LTEzIDVoLTEwN3Et NyAwLTEzLTV0LTUtMTN2LTE3OHEwLTggNS0xM3QxMy01aDEwN3E3IDAgMTMgNXQ1IDEzeiBt MzU3LTE4di01MThxMC0yMi0xNS0zOHQtMzgtMTZoLTc1MHEtMjMgMC0zOCAxNnQtMTYgMzh2 NzUwcTAgMjIgMTYgMzh0MzggMTZoNTE3cTIzIDAgNTAtMTJ0NDItMjZsMTU2LTE1N3ExNi0x NSAyNy00MnQxMS00OXoiLHRyYW5zZm9ybToibWF0cml4KDEgMCAwIC0xIDAgODUwKSJ9LGRy YXdvcGVucGF0aDp7d2lkdGg6NzAsaGVpZ2h0OjcwLHBhdGg6Ik0zMy4yMSw4NS42NWE3LjMx LDcuMzEsMCwwLDEtMi41OS0uNDhjLTguMTYtMy4xMS05LjI3LTE5LjgtOS44OC00MS4zLS4x LTMuNTgtLjE5LTYuNjgtLjM1LTktLjE1LTIuMS0uNjctMy40OC0xLjQzLTMuNzktMi4xMy0u ODgtNy45MSwyLjMyLTEyLDUuODZMMywzMi4zOGMxLjg3LTEuNjQsMTEuNTUtOS42NiwxOC4y Ny02LjksMi4xMy44Nyw0Ljc1LDMuMTQsNS4xNyw5LC4xNywyLjQzLjI2LDUuNTkuMzYsOS4y NWEyMjQuMTcsMjI0LjE3LDAsMCwwLDEuNSwyMy40YzEuNTQsMTAuNzYsNCwxMi4yMiw0LjQ4 LDEyLjQuODQuMzIsMi43OS0uNDYsNS43Ni0zLjU5TDQzLDgwLjA3QzQxLjUzLDgxLjU3LDM3 LjY4LDg1LjY0LDMzLjIxLDg1LjY1Wk03NC44MSw2OWExMS4zNCwxMS4zNCwwLDAsMCw2LjA5 LTYuNzJMODcuMjYsNDQuNSw3NC43MiwzMiw1Ni45LDM4LjM1Yy0yLjM3Ljg2LTUuNTcsMy40 Mi02LjYxLDZMMzguNjUsNzIuMTRsOC40Miw4LjQzWk01NSw0Ni4yN2E3LjkxLDcuOTEsMCww LDEsMy42NC0zLjE3bDE0LjgtNS4zLDgsOEw3Ni4xMSw2MC42bC0uMDYuMTlhNi4zNyw2LjM3 LDAsMCwxLTMsMy40M0w0OC4yNSw3NC41OSw0NC42Miw3MVptMTYuNTcsNy44MkE2LjksNi45 LDAsMSwwLDY0LjY0LDYxLDYuOTEsNi45MSwwLDAsMCw3MS41NCw1NC4wOVptLTQuMDUsMGEy Ljg1LDIuODUsMCwxLDEtMi44NS0yLjg1QTIuODYsMi44NiwwLDAsMSw2Ny40OSw1NC4wOVpt LTQuMTMsNS4yMkw2MC41LDU2LjQ1LDQ0LjI2LDcyLjdsMi44NiwyLjg2Wk05Ny44MywzNS42 Nyw4NC4xNCwyMmwtOC41Nyw4LjU3TDg5LjI2LDQ0LjI0Wm0tMTMuNjktOCw4LDgtMi44NSwy Ljg1LTgtOFoiLHRyYW5zZm9ybToibWF0cml4KDEgMCAwIDEgLTE1IC0xNSkifSxkcmF3Y2xv c2VkcGF0aDp7d2lkdGg6OTAsaGVpZ2h0OjkwLHBhdGg6Ik04OC40MSwyMS4xMmEyNi41Niwy Ni41NiwwLDAsMC0zNi4xOCwwbC0yLjA3LDItMi4wNy0yYTI2LjU3LDI2LjU3LDAsMCwwLTM2 LjE4LDAsMjMuNzQsMjMuNzQsMCwwLDAsMCwzNC44TDQ4LDkwLjEyYTMuMjIsMy4yMiwwLDAs MCw0LjQyLDBsMzYtMzQuMjFhMjMuNzMsMjMuNzMsMCwwLDAsMC0zNC43OVpNODQsNTEuMjQs NTAuMTYsODMuMzUsMTYuMzUsNTEuMjVhMTcuMjgsMTcuMjgsMCwwLDEsMC0yNS40NywyMCwy MCwwLDAsMSwyNy4zLDBsNC4yOSw0LjA3YTMuMjMsMy4yMywwLDAsMCw0LjQ0LDBsNC4yOS00 LjA3YTIwLDIwLDAsMCwxLDI3LjMsMCwxNy4yNywxNy4yNywwLDAsMSwwLDI1LjQ2Wk02Ni43 Niw0Ny42OGgtMzN2Ni45MWgzM1pNNTMuMzUsMzVINDYuNDRWNjhoNi45MVoiLHRyYW5zZm9y bToibWF0cml4KDEgMCAwIDEgLTUgLTUpIn0sbGFzc286e3dpZHRoOjEwMzEsaGVpZ2h0OjFl MyxwYXRoOiJtMTAxOCA1MzhjLTM2IDIwNy0yOTAgMzM2LTU2OCAyODYtMjc3LTQ4LTQ3My0y NTYtNDM2LTQ2MyAxMC01NyAzNi0xMDggNzYtMTUxLTEzLTY2IDExLTEzNyA2OC0xODMgMzQt MjggNzUtNDEgMTE0LTQybC01NS03MCAwIDBjLTItMS0zLTItNC0zLTEwLTE0LTgtMzQgNS00 NSAxNC0xMSAzNC04IDQ1IDQgMSAxIDIgMyAyIDVsMCAwIDExMyAxNDBjMTYgMTEgMzEgMjQg NDUgNDAgNCAzIDYgNyA4IDExIDQ4LTMgMTAwIDAgMTUxIDkgMjc4IDQ4IDQ3MyAyNTUgNDM2 IDQ2MnogbS02MjQtMzc5Yy04MCAxNC0xNDkgNDgtMTk3IDk2IDQyIDQyIDEwOSA0NyAxNTYg OSAzMy0yNiA0Ny02NiA0MS0xMDV6IG0tMTg3LTc0Yy0xOSAxNi0zMyAzNy0zOSA2MCA1MC0z MiAxMDktNTUgMTc0LTY4LTQyLTI1LTk1LTI0LTEzNSA4eiBtMzYwIDc1Yy0zNC03LTY5LTkt MTAyLTggOCA2Mi0xNiAxMjgtNjggMTcwLTczIDU5LTE3NSA1NC0yNDQtNS05IDIwLTE2IDQw LTIwIDYxLTI4IDE1OSAxMjEgMzE3IDMzMyAzNTRzNDA3LTYwIDQzNC0yMTdjMjgtMTU5LTEy MS0zMTgtMzMzLTM1NXoiLHRyYW5zZm9ybToibWF0cml4KDEgMCAwIC0xIDAgODUwKSJ9LHNl bGVjdGJveDp7d2lkdGg6MWUzLGhlaWdodDoxZTMscGF0aDoibTAgODUwbDAtMTQzIDE0MyAw IDAgMTQzLTE0MyAweiBtMjg2IDBsMC0xNDMgMTQzIDAgMCAxNDMtMTQzIDB6IG0yODUgMGww LTE0MyAxNDMgMCAwIDE0My0xNDMgMHogbTI4NiAwbDAtMTQzIDE0MyAwIDAgMTQzLTE0MyAw eiBtLTg1Ny0yODZsMC0xNDMgMTQzIDAgMCAxNDMtMTQzIDB6IG04NTcgMGwwLTE0MyAxNDMg MCAwIDE0My0xNDMgMHogbS04NTctMjg1bDAtMTQzIDE0MyAwIDAgMTQzLTE0MyAweiBtODU3 IDBsMC0xNDMgMTQzIDAgMCAxNDMtMTQzIDB6IG0tODU3LTI4NmwwLTE0MyAxNDMgMCAwIDE0 My0xNDMgMHogbTI4NiAwbDAtMTQzIDE0MyAwIDAgMTQzLTE0MyAweiBtMjg1IDBsMC0xNDMg MTQzIDAgMCAxNDMtMTQzIDB6IG0yODYgMGwwLTE0MyAxNDMgMCAwIDE0My0xNDMgMHoiLHRy YW5zZm9ybToibWF0cml4KDEgMCAwIC0xIDAgODUwKSJ9LGRyYXdsaW5lOnt3aWR0aDo3MCxo ZWlnaHQ6NzAscGF0aDoiTTYwLjY0LDYyLjNhMTEuMjksMTEuMjksMCwwLDAsNi4wOS02Ljcy bDYuMzUtMTcuNzJMNjAuNTQsMjUuMzFsLTE3LjgyLDYuNGMtMi4zNi44Ni01LjU3LDMuNDEt Ni42LDZMMjQuNDgsNjUuNWw4LjQyLDguNDJaTTQwLjc5LDM5LjYzYTcuODksNy44OSwwLDAs MSwzLjY1LTMuMTdsMTQuNzktNS4zMSw4LDhMNjEuOTQsNTRsLS4wNi4xOWE2LjQ0LDYuNDQs MCwwLDEtMywzLjQzTDM0LjA3LDY4bC0zLjYyLTMuNjNabTE2LjU3LDcuODFhNi45LDYuOSww LDEsMC02Ljg5LDYuOUE2LjksNi45LDAsMCwwLDU3LjM2LDQ3LjQ0Wm0tNCwwYTIuODYsMi44 NiwwLDEsMS0yLjg1LTIuODVBMi44NiwyLjg2LDAsMCwxLDUzLjMyLDQ3LjQ0Wm0tNC4xMyw1 LjIyTDQ2LjMzLDQ5LjgsMzAuMDgsNjYuMDVsMi44NiwyLjg2Wk04My42NSwyOSw3MCwxNS4z NCw2MS40LDIzLjksNzUuMDksMzcuNTlaTTcwLDIxLjA2bDgsOC0yLjg0LDIuODUtOC04Wk04 Nyw4MC40OUgxMC42N1Y4N0g4N1oiLHRyYW5zZm9ybToibWF0cml4KDEgMCAwIDEgLTE1IC0x NSkifSxkcmF3cmVjdDp7d2lkdGg6ODAsaGVpZ2h0OjgwLHBhdGg6Ik03OCwyMlY3OUgyMVYy Mkg3OG05LTlIMTJWODhIODdWMTNaTTY4LDQ2LjIySDMxVjU0SDY4Wk01MywzMkg0NS4yMlY2 OUg1M1oiLHRyYW5zZm9ybToibWF0cml4KDEgMCAwIDEgLTEwIC0xMCkifSxkcmF3Y2lyY2xl Ont3aWR0aDo4MCxoZWlnaHQ6ODAscGF0aDoiTTUwLDg0LjcyQzI2Ljg0LDg0LjcyLDgsNjku MjgsOCw1MC4zUzI2Ljg0LDE1Ljg3LDUwLDE1Ljg3LDkyLDMxLjMxLDkyLDUwLjMsNzMuMTYs ODQuNzIsNTAsODQuNzJabTAtNjAuNTljLTE4LjYsMC0zMy43NCwxMS43NC0zMy43NCwyNi4x N1MzMS40LDc2LjQ2LDUwLDc2LjQ2LDgzLjc0LDY0LjcyLDgzLjc0LDUwLjMsNjguNiwyNC4x Myw1MCwyNC4xM1ptMTcuMTUsMjJoLTM0djcuMTFoMzRabS0xMy44LTEzSDQ2LjI0djM0aDcu MTFaIix0cmFuc2Zvcm06Im1hdHJpeCgxIDAgMCAxIC0xMCAtMTApIn0sZXJhc2VzaGFwZTp7 d2lkdGg6ODAsaGVpZ2h0OjgwLHBhdGg6Ik04Mi43Nyw3OEgzMS44NUw2LDQ5LjU3LDMxLjg1 LDIxLjE0SDgyLjc3YTguNzIsOC43MiwwLDAsMSw4LjY1LDguNzdWNjkuMjRBOC43Miw4Ljcy LDAsMCwxLDgyLjc3LDc4Wk0zNS40Niw2OS44NEg4Mi43N2EuNTcuNTcsMCwwLDAsLjQ5LS42 VjI5LjkxYS41Ny41NywwLDAsMC0uNDktLjYxSDM1LjQ2TDE3LDQ5LjU3Wm0zMi42OC0zNC43 LTI0LDI0LDUsNSwyNC0yNFptLTE5LC41My01LDUsMjQsMjQsNS01WiIsdHJhbnNmb3JtOiJt YXRyaXgoMSAwIDAgMSAtMTAgLTEwKSJ9LHNwaWtlbGluZTp7d2lkdGg6MWUzLGhlaWdodDox ZTMscGF0aDoiTTUxMiA0MDljMC01Ny00Ni0xMDQtMTAzLTEwNC01NyAwLTEwNCA0Ny0xMDQg MTA0IDAgNTcgNDcgMTAzIDEwNCAxMDMgNTcgMCAxMDMtNDYgMTAzLTEwM3ogbS0zMjctMzls OTIgMCAwIDkyLTkyIDB6IG0tMTg1IDBsOTIgMCAwIDkyLTkyIDB6IG0zNzAtMTg2bDkyIDAg MCA5My05MiAweiBtMC0xODRsOTIgMCAwIDkyLTkyIDB6Iix0cmFuc2Zvcm06Im1hdHJpeCgx LjUgMCAwIC0xLjUgMCA4NTApIn0scGVuY2lsOnt3aWR0aDoxNzkyLGhlaWdodDoxNzkyLHBh dGg6Ik00OTEgMTUzNmw5MS05MS0yMzUtMjM1LTkxIDkxdjEwN2gxMjh2MTI4aDEwN3ptNTIz LTkyOHEwLTIyLTIyLTIyLTEwIDAtMTcgN2wtNTQyIDU0MnEtNyA3LTcgMTcgMCAyMiAyMiAy MiAxMCAwIDE3LTdsNTQyLTU0MnE3LTcgNy0xN3ptLTU0LTE5Mmw0MTYgNDE2LTgzMiA4MzJo LTQxNnYtNDE2em02ODMgOTZxMCA1My0zNyA5MGwtMTY2IDE2Ni00MTYtNDE2IDE2Ni0xNjVx MzYtMzggOTAtMzggNTMgMCA5MSAzOGwyMzUgMjM0cTM3IDM5IDM3IDkxeiIsdHJhbnNmb3Jt OiJtYXRyaXgoMSAwIDAgMSAwIDEpIn0sbmV3cGxvdGx5bG9nbzp7bmFtZToibmV3cGxvdGx5 bG9nbyIsc3ZnOiI8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmll d0JveD0nMCAwIDEzMiAxMzInPjxkZWZzPjxzdHlsZT4uY2xzLTEge2ZpbGw6ICMzZjRmNzU7 fSAuY2xzLTIge2ZpbGw6ICM4MGNmYmU7fSAuY2xzLTMge2ZpbGw6ICNmZmY7fTwvc3R5bGU+ PC9kZWZzPjx0aXRsZT5wbG90bHktbG9nb21hcms8L3RpdGxlPjxnIGlkPSdzeW1ib2wnPjxy ZWN0IGNsYXNzPSdjbHMtMScgd2lkdGg9JzEzMicgaGVpZ2h0PScxMzInIHJ4PSc2JyByeT0n NicvPjxjaXJjbGUgY2xhc3M9J2Nscy0yJyBjeD0nNzgnIGN5PSc1NCcgcj0nNicvPjxjaXJj bGUgY2xhc3M9J2Nscy0yJyBjeD0nMTAyJyBjeT0nMzAnIHI9JzYnLz48Y2lyY2xlIGNsYXNz PSdjbHMtMicgY3g9Jzc4JyBjeT0nMzAnIHI9JzYnLz48Y2lyY2xlIGNsYXNzPSdjbHMtMicg Y3g9JzU0JyBjeT0nMzAnIHI9JzYnLz48Y2lyY2xlIGNsYXNzPSdjbHMtMicgY3g9JzMwJyBj eT0nMzAnIHI9JzYnLz48Y2lyY2xlIGNsYXNzPSdjbHMtMicgY3g9JzMwJyBjeT0nNTQnIHI9 JzYnLz48cGF0aCBjbGFzcz0nY2xzLTMnIGQ9J00zMCw3MmE2LDYsMCwwLDAtNiw2djI0YTYs NiwwLDAsMCwxMiwwVjc4QTYsNiwwLDAsMCwzMCw3MlonLz48cGF0aCBjbGFzcz0nY2xzLTMn IGQ9J003OCw3MmE2LDYsMCwwLDAtNiw2djI0YTYsNiwwLDAsMCwxMiwwVjc4QTYsNiwwLDAs MCw3OCw3MlonLz48cGF0aCBjbGFzcz0nY2xzLTMnIGQ9J001NCw0OGE2LDYsMCwwLDAtNiw2 djQ4YTYsNiwwLDAsMCwxMiwwVjU0QTYsNiwwLDAsMCw1NCw0OFonLz48cGF0aCBjbGFzcz0n Y2xzLTMnIGQ9J00xMDIsNDhhNiw2LDAsMCwwLTYsNnY0OGE2LDYsMCwwLDAsMTIsMFY1NEE2 LDYsMCwwLDAsMTAyLDQ4WicvPjwvZz48L3N2Zz4ifX19LHt9XSw0ODM6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7ci5pc0xlZnRBbmNob3I9ZnVuY3Rpb24odCl7cmV0dXJuImxl ZnQiPT09dC54YW5jaG9yfHwiYXV0byI9PT10LnhhbmNob3ImJnQueDw9MS8zfSxyLmlzQ2Vu dGVyQW5jaG9yPWZ1bmN0aW9uKHQpe3JldHVybiJjZW50ZXIiPT09dC54YW5jaG9yfHwiYXV0 byI9PT10LnhhbmNob3ImJnQueD4xLzMmJnQueDwyLzN9LHIuaXNSaWdodEFuY2hvcj1mdW5j dGlvbih0KXtyZXR1cm4icmlnaHQiPT09dC54YW5jaG9yfHwiYXV0byI9PT10LnhhbmNob3Im JnQueD49Mi8zfSxyLmlzVG9wQW5jaG9yPWZ1bmN0aW9uKHQpe3JldHVybiJ0b3AiPT09dC55 YW5jaG9yfHwiYXV0byI9PT10LnlhbmNob3ImJnQueT49Mi8zfSxyLmlzTWlkZGxlQW5jaG9y PWZ1bmN0aW9uKHQpe3JldHVybiJtaWRkbGUiPT09dC55YW5jaG9yfHwiYXV0byI9PT10Lnlh bmNob3ImJnQueT4xLzMmJnQueTwyLzN9LHIuaXNCb3R0b21BbmNob3I9ZnVuY3Rpb24odCl7 cmV0dXJuImJvdHRvbSI9PT10LnlhbmNob3J8fCJhdXRvIj09PXQueWFuY2hvciYmdC55PD0x LzN9fSx7fV0sNDg0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4v bW9kIiksaT1uLm1vZCxhPW4ubW9kSGFsZixvPU1hdGguUEkscz0yKm87ZnVuY3Rpb24gbCh0 KXtyZXR1cm4gTWF0aC5hYnModFsxXS10WzBdKT5zLTFlLTE0fWZ1bmN0aW9uIGModCxlKXty ZXR1cm4gYShlLXQscyl9ZnVuY3Rpb24gdSh0LGUpe2lmKGwoZSkpcmV0dXJuITA7dmFyIHIs bjtlWzBdPGVbMV0/KHI9ZVswXSxuPWVbMV0pOihyPWVbMV0sbj1lWzBdKSwocj1pKHIscykp PihuPWkobixzKSkmJihuKz1zKTt2YXIgYT1pKHQscyksbz1hK3M7cmV0dXJuIGE+PXImJmE8 PW58fG8+PXImJm88PW59ZnVuY3Rpb24gZih0LGUscixuLGksYSxjKXtpPWl8fDAsYT1hfHww O3ZhciB1LGYsaCxwLGQsbT1sKFtyLG5dKTtmdW5jdGlvbiBnKHQsZSl7cmV0dXJuW3QqTWF0 aC5jb3MoZSkraSxhLXQqTWF0aC5zaW4oZSldfW0/KHU9MCxmPW8saD1zKTpyPG4/KHU9cixo PW4pOih1PW4saD1yKSx0PGU/KHA9dCxkPWUpOihwPWUsZD10KTt2YXIgdix5PU1hdGguYWJz KGgtdSk8PW8/MDoxO2Z1bmN0aW9uIHgodCxlLHIpe3JldHVybiJBIitbdCx0XSsiICIrWzAs eSxyXSsiICIrZyh0LGUpfXJldHVybiBtP3Y9bnVsbD09PXA/Ik0iK2coZCx1KSt4KGQsZiww KSt4KGQsaCwwKSsiWiI6Ik0iK2cocCx1KSt4KHAsZiwwKSt4KHAsaCwwKSsiWk0iK2coZCx1 KSt4KGQsZiwxKSt4KGQsaCwxKSsiWiI6bnVsbD09PXA/KHY9Ik0iK2coZCx1KSt4KGQsaCww KSxjJiYodis9IkwwLDBaIikpOnY9Ik0iK2cocCx1KSsiTCIrZyhkLHUpK3goZCxoLDApKyJM IitnKHAsaCkreChwLHUsMSkrIloiLHZ9ZS5leHBvcnRzPXtkZWcycmFkOmZ1bmN0aW9uKHQp e3JldHVybiB0LzE4MCpvfSxyYWQyZGVnOmZ1bmN0aW9uKHQpe3JldHVybiB0L28qMTgwfSxh bmdsZURlbHRhOmMsYW5nbGVEaXN0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGguYWJzKGMo dCxlKSl9LGlzRnVsbENpcmNsZTpsLGlzQW5nbGVJbnNpZGVTZWN0b3I6dSxpc1B0SW5zaWRl U2VjdG9yOmZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiEhdShlLG4pJiYoclswXTxyWzFdPyhp PXJbMF0sYT1yWzFdKTooaT1yWzFdLGE9clswXSksdD49aSYmdDw9YSk7dmFyIGksYX0scGF0 aEFyYzpmdW5jdGlvbih0LGUscixuLGkpe3JldHVybiBmKG51bGwsdCxlLHIsbixpLDApfSxw YXRoU2VjdG9yOmZ1bmN0aW9uKHQsZSxyLG4saSl7cmV0dXJuIGYobnVsbCx0LGUscixuLGks MSl9LHBhdGhBbm51bHVzOmZ1bmN0aW9uKHQsZSxyLG4saSxhKXtyZXR1cm4gZih0LGUscixu LGksYSwxKX19fSx7Ii4vbW9kIjo1MTB9XSw0ODU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49QXJyYXkuaXNBcnJheSxpPUFycmF5QnVmZmVyLGE9RGF0YVZpZXc7ZnVu Y3Rpb24gbyh0KXtyZXR1cm4gaS5pc1ZpZXcodCkmJiEodCBpbnN0YW5jZW9mIGEpfWZ1bmN0 aW9uIHModCl7cmV0dXJuIG4odCl8fG8odCl9ZnVuY3Rpb24gbCh0LGUscil7aWYocyh0KSl7 aWYocyh0WzBdKSl7Zm9yKHZhciBuPXIsaT0wO2k8dC5sZW5ndGg7aSsrKW49ZShuLHRbaV0u bGVuZ3RoKTtyZXR1cm4gbn1yZXR1cm4gdC5sZW5ndGh9cmV0dXJuIDB9ci5pc1R5cGVkQXJy YXk9byxyLmlzQXJyYXlPclR5cGVkQXJyYXk9cyxyLmlzQXJyYXkxRD1mdW5jdGlvbih0KXty ZXR1cm4hcyh0WzBdKX0sci5lbnN1cmVBcnJheT1mdW5jdGlvbih0LGUpe3JldHVybiBuKHQp fHwodD1bXSksdC5sZW5ndGg9ZSx0fSxyLmNvbmNhdD1mdW5jdGlvbigpe3ZhciB0LGUscixp LGEsbyxzLGwsYz1bXSx1PSEwLGY9MDtmb3Iocj0wO3I8YXJndW1lbnRzLmxlbmd0aDtyKysp KG89KGk9YXJndW1lbnRzW3JdKS5sZW5ndGgpJiYoZT9jLnB1c2goaSk6KGU9aSxhPW8pLG4o aSk/dD0hMToodT0hMSxmP3QhPT1pLmNvbnN0cnVjdG9yJiYodD0hMSk6dD1pLmNvbnN0cnVj dG9yKSxmKz1vKTtpZighZilyZXR1cm5bXTtpZighYy5sZW5ndGgpcmV0dXJuIGU7aWYodSly ZXR1cm4gZS5jb25jYXQuYXBwbHkoZSxjKTtpZih0KXtmb3IoKHM9bmV3IHQoZikpLnNldChl KSxyPTA7cjxjLmxlbmd0aDtyKyspaT1jW3JdLHMuc2V0KGksYSksYSs9aS5sZW5ndGg7cmV0 dXJuIHN9Zm9yKHM9bmV3IEFycmF5KGYpLGw9MDtsPGUubGVuZ3RoO2wrKylzW2xdPWVbbF07 Zm9yKHI9MDtyPGMubGVuZ3RoO3IrKyl7Zm9yKGk9Y1tyXSxsPTA7bDxpLmxlbmd0aDtsKysp c1thK2xdPWlbbF07YSs9bH1yZXR1cm4gc30sci5tYXhSb3dMZW5ndGg9ZnVuY3Rpb24odCl7 cmV0dXJuIGwodCxNYXRoLm1heCwwKX0sci5taW5Sb3dMZW5ndGg9ZnVuY3Rpb24odCl7cmV0 dXJuIGwodCxNYXRoLm1pbiwxLzApfX0se31dLDQ4NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGk9dCgiLi4vY29uc3RhbnRzL251 bWVyaWNhbCIpLkJBRE5VTSxhPS9eWyciJSwkI1xzJ10rfFssIF18WyciJSwkI1xzJ10rJC9n O2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJih0PXQu cmVwbGFjZShhLCIiKSksbih0KT9OdW1iZXIodCk6aX19LHsiLi4vY29uc3RhbnRzL251bWVy aWNhbCI6NDc5LCJmYXN0LWlzbnVtZXJpYyI6MTkwfV0sNDg3OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0 O2UuX2dsY2FudmFzJiZlLl9nbGNhbnZhcy5zaXplKCkmJmUuX2dsY2FudmFzLmVhY2goKGZ1 bmN0aW9uKHQpe3QucmVnbCYmdC5yZWdsLmNsZWFyKHtjb2xvcjohMCxkZXB0aDohMH0pfSkp fX0se31dLDQ4ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVu Y3Rpb24odCl7dC5fcmVzcG9uc2l2ZUNoYXJ0SGFuZGxlciYmKHdpbmRvdy5yZW1vdmVFdmVu dExpc3RlbmVyKCJyZXNpemUiLHQuX3Jlc3BvbnNpdmVDaGFydEhhbmRsZXIpLGRlbGV0ZSB0 Ll9yZXNwb25zaXZlQ2hhcnRIYW5kbGVyKX19LHt9XSw0ODk6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxpPXQoInRpbnljb2xvcjIi KSxhPXQoIi4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxvPXQoIi4uL2NvbXBvbmVudHMvY29sb3Jz Y2FsZS9zY2FsZXMiKSxzPXQoIi4uL2NvbXBvbmVudHMvY29sb3IiKSxsPXQoIi4uL2NvbnN0 YW50cy9pbnRlcmFjdGlvbnMiKS5ERVNFTEVDVERJTSxjPXQoIi4vbmVzdGVkX3Byb3BlcnR5 IiksdT10KCIuL3JlZ2V4IikuY291bnRlcixmPXQoIi4vbW9kIikubW9kSGFsZixoPXQoIi4v YXJyYXkiKS5pc0FycmF5T3JUeXBlZEFycmF5O2Z1bmN0aW9uIHAodCxlKXt2YXIgbj1yLnZh bE9iamVjdE1ldGFbZS52YWxUeXBlXTtpZihlLmFycmF5T2smJmgodCkpcmV0dXJuITA7aWYo bi52YWxpZGF0ZUZ1bmN0aW9uKXJldHVybiBuLnZhbGlkYXRlRnVuY3Rpb24odCxlKTt2YXIg aT17fSxhPWksbz17c2V0OmZ1bmN0aW9uKHQpe2E9dH19O3JldHVybiBuLmNvZXJjZUZ1bmN0 aW9uKHQsbyxpLGUpLGEhPT1pfXIudmFsT2JqZWN0TWV0YT17ZGF0YV9hcnJheTp7Y29lcmNl RnVuY3Rpb246ZnVuY3Rpb24odCxlLHIpe2godCk/ZS5zZXQodCk6dm9pZCAwIT09ciYmZS5z ZXQocil9fSxlbnVtZXJhdGVkOntjb2VyY2VGdW5jdGlvbjpmdW5jdGlvbih0LGUscixuKXtu LmNvZXJjZU51bWJlciYmKHQ9K3QpLC0xPT09bi52YWx1ZXMuaW5kZXhPZih0KT9lLnNldChy KTplLnNldCh0KX0sdmFsaWRhdGVGdW5jdGlvbjpmdW5jdGlvbih0LGUpe2UuY29lcmNlTnVt YmVyJiYodD0rdCk7Zm9yKHZhciByPWUudmFsdWVzLG49MDtuPHIubGVuZ3RoO24rKyl7dmFy IGk9U3RyaW5nKHJbbl0pO2lmKCIvIj09PWkuY2hhckF0KDApJiYiLyI9PT1pLmNoYXJBdChp Lmxlbmd0aC0xKSl7aWYobmV3IFJlZ0V4cChpLnN1YnN0cigxLGkubGVuZ3RoLTIpKS50ZXN0 KHQpKXJldHVybiEwfWVsc2UgaWYodD09PXJbbl0pcmV0dXJuITB9cmV0dXJuITF9fSxib29s ZWFuOntjb2VyY2VGdW5jdGlvbjpmdW5jdGlvbih0LGUscil7ITA9PT10fHwhMT09PXQ/ZS5z ZXQodCk6ZS5zZXQocil9fSxudW1iZXI6e2NvZXJjZUZ1bmN0aW9uOmZ1bmN0aW9uKHQsZSxy LGkpeyFuKHQpfHx2b2lkIDAhPT1pLm1pbiYmdDxpLm1pbnx8dm9pZCAwIT09aS5tYXgmJnQ+ aS5tYXg/ZS5zZXQocik6ZS5zZXQoK3QpfX0saW50ZWdlcjp7Y29lcmNlRnVuY3Rpb246ZnVu Y3Rpb24odCxlLHIsaSl7dCUxfHwhbih0KXx8dm9pZCAwIT09aS5taW4mJnQ8aS5taW58fHZv aWQgMCE9PWkubWF4JiZ0PmkubWF4P2Uuc2V0KHIpOmUuc2V0KCt0KX19LHN0cmluZzp7Y29l cmNlRnVuY3Rpb246ZnVuY3Rpb24odCxlLHIsbil7aWYoInN0cmluZyIhPXR5cGVvZiB0KXt2 YXIgaT0ibnVtYmVyIj09dHlwZW9mIHQ7ITAhPT1uLnN0cmljdCYmaT9lLnNldChTdHJpbmco dCkpOmUuc2V0KHIpfWVsc2Ugbi5ub0JsYW5rJiYhdD9lLnNldChyKTplLnNldCh0KX19LGNv bG9yOntjb2VyY2VGdW5jdGlvbjpmdW5jdGlvbih0LGUscil7aSh0KS5pc1ZhbGlkKCk/ZS5z ZXQodCk6ZS5zZXQocil9fSxjb2xvcmxpc3Q6e2NvZXJjZUZ1bmN0aW9uOmZ1bmN0aW9uKHQs ZSxyKXtBcnJheS5pc0FycmF5KHQpJiZ0Lmxlbmd0aCYmdC5ldmVyeSgoZnVuY3Rpb24odCl7 cmV0dXJuIGkodCkuaXNWYWxpZCgpfSkpP2Uuc2V0KHQpOmUuc2V0KHIpfX0sY29sb3JzY2Fs ZTp7Y29lcmNlRnVuY3Rpb246ZnVuY3Rpb24odCxlLHIpe2Uuc2V0KG8uZ2V0KHQscikpfX0s YW5nbGU6e2NvZXJjZUZ1bmN0aW9uOmZ1bmN0aW9uKHQsZSxyKXsiYXV0byI9PT10P2Uuc2V0 KCJhdXRvIik6bih0KT9lLnNldChmKCt0LDM2MCkpOmUuc2V0KHIpfX0sc3VicGxvdGlkOntj b2VyY2VGdW5jdGlvbjpmdW5jdGlvbih0LGUscixuKXt2YXIgaT1uLnJlZ2V4fHx1KHIpOyJz dHJpbmciPT10eXBlb2YgdCYmaS50ZXN0KHQpP2Uuc2V0KHQpOmUuc2V0KHIpfSx2YWxpZGF0 ZUZ1bmN0aW9uOmZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS5kZmx0O3JldHVybiB0PT09cnx8InN0 cmluZyI9PXR5cGVvZiB0JiYhIXUocikudGVzdCh0KX19LGZsYWdsaXN0Ontjb2VyY2VGdW5j dGlvbjpmdW5jdGlvbih0LGUscixuKXtpZigic3RyaW5nIj09dHlwZW9mIHQpaWYoLTE9PT0o bi5leHRyYXN8fFtdKS5pbmRleE9mKHQpKXtmb3IodmFyIGk9dC5zcGxpdCgiKyIpLGE9MDth PGkubGVuZ3RoOyl7dmFyIG89aVthXTstMT09PW4uZmxhZ3MuaW5kZXhPZihvKXx8aS5pbmRl eE9mKG8pPGE/aS5zcGxpY2UoYSwxKTphKyt9aS5sZW5ndGg/ZS5zZXQoaS5qb2luKCIrIikp OmUuc2V0KHIpfWVsc2UgZS5zZXQodCk7ZWxzZSBlLnNldChyKX19LGFueTp7Y29lcmNlRnVu Y3Rpb246ZnVuY3Rpb24odCxlLHIpe3ZvaWQgMD09PXQ/ZS5zZXQocik6ZS5zZXQodCl9fSxp bmZvX2FycmF5Ontjb2VyY2VGdW5jdGlvbjpmdW5jdGlvbih0LGUsbixpKXtmdW5jdGlvbiBh KHQsZSxuKXt2YXIgaSxhPXtzZXQ6ZnVuY3Rpb24odCl7aT10fX07cmV0dXJuIHZvaWQgMD09 PW4mJihuPWUuZGZsdCksci52YWxPYmplY3RNZXRhW2UudmFsVHlwZV0uY29lcmNlRnVuY3Rp b24odCxhLG4sZSksaX12YXIgbz0yPT09aS5kaW1lbnNpb25zfHwiMS0yIj09PWkuZGltZW5z aW9ucyYmQXJyYXkuaXNBcnJheSh0KSYmQXJyYXkuaXNBcnJheSh0WzBdKTtpZihBcnJheS5p c0FycmF5KHQpKXt2YXIgcyxsLGMsdSxmLGgscD1pLml0ZW1zLGQ9W10sbT1BcnJheS5pc0Fy cmF5KHApLGc9bSYmbyYmQXJyYXkuaXNBcnJheShwWzBdKSx2PW8mJm0mJiFnLHk9bSYmIXY/ cC5sZW5ndGg6dC5sZW5ndGg7aWYobj1BcnJheS5pc0FycmF5KG4pP246W10sbylmb3Iocz0w O3M8eTtzKyspZm9yKGRbc109W10sYz1BcnJheS5pc0FycmF5KHRbc10pP3Rbc106W10sZj12 P3AubGVuZ3RoOm0/cFtzXS5sZW5ndGg6Yy5sZW5ndGgsbD0wO2w8ZjtsKyspdT12P3BbbF06 bT9wW3NdW2xdOnAsdm9pZCAwIT09KGg9YShjW2xdLHUsKG5bc118fFtdKVtsXSkpJiYoZFtz XVtsXT1oKTtlbHNlIGZvcihzPTA7czx5O3MrKyl2b2lkIDAhPT0oaD1hKHRbc10sbT9wW3Nd OnAsbltzXSkpJiYoZFtzXT1oKTtlLnNldChkKX1lbHNlIGUuc2V0KG4pfSx2YWxpZGF0ZUZ1 bmN0aW9uOmZ1bmN0aW9uKHQsZSl7aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJuITE7dmFy IHI9ZS5pdGVtcyxuPUFycmF5LmlzQXJyYXkociksaT0yPT09ZS5kaW1lbnNpb25zO2lmKCFl LmZyZWVMZW5ndGgmJnQubGVuZ3RoIT09ci5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBhPTA7 YTx0Lmxlbmd0aDthKyspaWYoaSl7aWYoIUFycmF5LmlzQXJyYXkodFthXSl8fCFlLmZyZWVM ZW5ndGgmJnRbYV0ubGVuZ3RoIT09clthXS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBvPTA7 bzx0W2FdLmxlbmd0aDtvKyspaWYoIXAodFthXVtvXSxuP3JbYV1bb106cikpcmV0dXJuITF9 ZWxzZSBpZighcCh0W2FdLG4/clthXTpyKSlyZXR1cm4hMTtyZXR1cm4hMH19fSxyLmNvZXJj ZT1mdW5jdGlvbih0LGUsbixpLGEpe3ZhciBvPWMobixpKS5nZXQoKSxzPWModCxpKSxsPWMo ZSxpKSx1PXMuZ2V0KCksZj1lLl90ZW1wbGF0ZTtpZih2b2lkIDA9PT11JiZmJiYodT1jKGYs aSkuZ2V0KCksZj0wKSx2b2lkIDA9PT1hJiYoYT1vLmRmbHQpLG8uYXJyYXlPayYmaCh1KSly ZXR1cm4gbC5zZXQodSksdTt2YXIgZD1yLnZhbE9iamVjdE1ldGFbby52YWxUeXBlXS5jb2Vy Y2VGdW5jdGlvbjtkKHUsbCxhLG8pO3ZhciBtPWwuZ2V0KCk7cmV0dXJuIGYmJm09PT1hJiYh cCh1LG8pJiYoZCh1PWMoZixpKS5nZXQoKSxsLGEsbyksbT1sLmdldCgpKSxtfSxyLmNvZXJj ZTI9ZnVuY3Rpb24odCxlLG4saSxhKXt2YXIgbz1jKHQsaSkscz1yLmNvZXJjZSh0LGUsbixp LGEpLGw9by5nZXQoKTtyZXR1cm4gbnVsbCE9bCYmc30sci5jb2VyY2VGb250PWZ1bmN0aW9u KHQsZSxyKXt2YXIgbj17fTtyZXR1cm4gcj1yfHx7fSxuLmZhbWlseT10KGUrIi5mYW1pbHki LHIuZmFtaWx5KSxuLnNpemU9dChlKyIuc2l6ZSIsci5zaXplKSxuLmNvbG9yPXQoZSsiLmNv bG9yIixyLmNvbG9yKSxufSxyLmNvZXJjZVBhdHRlcm49ZnVuY3Rpb24odCxlLHIsbil7aWYo dChlKyIuc2hhcGUiKSl7dChlKyIuc29saWRpdHkiKSx0KGUrIi5zaXplIik7dmFyIGk9Im92 ZXJsYXkiPT09dChlKyIuZmlsbG1vZGUiKTtpZighbil7dmFyIGE9dChlKyIuYmdjb2xvciIs aT9yOnZvaWQgMCk7dChlKyIuZmdjb2xvciIsaT9zLmNvbnRyYXN0KGEpOnIpfXQoZSsiLmZn b3BhY2l0eSIsaT8uNToxKX19LHIuY29lcmNlSG92ZXJpbmZvPWZ1bmN0aW9uKHQsZSxuKXt2 YXIgaSxvPWUuX21vZHVsZS5hdHRyaWJ1dGVzLHM9by5ob3ZlcmluZm8/bzphLGw9cy5ob3Zl cmluZm87aWYoMT09PW4uX2RhdGFMZW5ndGgpe3ZhciBjPSJhbGwiPT09bC5kZmx0P2wuZmxh Z3Muc2xpY2UoKTpsLmRmbHQuc3BsaXQoIisiKTtjLnNwbGljZShjLmluZGV4T2YoIm5hbWUi KSwxKSxpPWMuam9pbigiKyIpfXJldHVybiByLmNvZXJjZSh0LGUscywiaG92ZXJpbmZvIixp KX0sci5jb2VyY2VTZWxlY3Rpb25NYXJrZXJPcGFjaXR5PWZ1bmN0aW9uKHQsZSl7aWYodC5t YXJrZXIpe3ZhciByLG4saT10Lm1hcmtlci5vcGFjaXR5O2lmKHZvaWQgMCE9PWkpaChpKXx8 dC5zZWxlY3RlZHx8dC51bnNlbGVjdGVkfHwocj1pLG49bCppKSxlKCJzZWxlY3RlZC5tYXJr ZXIub3BhY2l0eSIsciksZSgidW5zZWxlY3RlZC5tYXJrZXIub3BhY2l0eSIsbil9fSxyLnZh bGlkYXRlPXB9LHsiLi4vY29tcG9uZW50cy9jb2xvciI6MzY2LCIuLi9jb21wb25lbnRzL2Nv bG9yc2NhbGUvc2NhbGVzIjozODEsIi4uL2NvbnN0YW50cy9pbnRlcmFjdGlvbnMiOjQ3OCwi Li4vcGxvdHMvYXR0cmlidXRlcyI6NTUwLCIuL2FycmF5Ijo0ODUsIi4vbW9kIjo1MTAsIi4v bmVzdGVkX3Byb3BlcnR5Ijo1MTEsIi4vcmVnZXgiOjUyMCwiZmFzdC1pc251bWVyaWMiOjE5 MCx0aW55Y29sb3IyOjMxMn1dLDQ5MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbixpLGE9dCgiZDMtdGltZS1mb3JtYXQiKS50aW1lRm9ybWF0LG89dCgiZmFzdC1pc251 bWVyaWMiKSxzPXQoIi4vbG9nZ2VycyIpLGw9dCgiLi9tb2QiKS5tb2QsYz10KCIuLi9jb25z dGFudHMvbnVtZXJpY2FsIiksdT1jLkJBRE5VTSxmPWMuT05FREFZLGg9Yy5PTkVIT1VSLHA9 Yy5PTkVNSU4sZD1jLk9ORVNFQyxtPWMuRVBPQ0hKRCxnPXQoIi4uL3JlZ2lzdHJ5Iiksdj10 KCJkMy10aW1lLWZvcm1hdCIpLnV0Y0Zvcm1hdCx5PS9eXHMqKC0/XGRcZFxkXGR8XGRcZCko LShcZD9cZCkoLShcZD9cZCkoWyBUdF0oWzAxXT9cZHwyWzAtM10pKDooWzAtNV1cZCkoOihb MC01XVxkKFwuXGQrKT8pKT8oWnx6fFsrXC1dXGRcZCg6P1xkXGQpPyk/KT8pPyk/KT9ccyok L20seD0vXlxzKigtP1xkXGRcZFxkfFxkXGQpKC0oXGQ/XGRpPykoLShcZD9cZCkoWyBUdF0o WzAxXT9cZHwyWzAtM10pKDooWzAtNV1cZCkoOihbMC01XVxkKFwuXGQrKT8pKT8oWnx6fFsr XC1dXGRcZCg6P1xkXGQpPyk/KT8pPyk/KT9ccyokL20sYj0obmV3IERhdGUpLmdldEZ1bGxZ ZWFyKCktNzA7ZnVuY3Rpb24gXyh0KXtyZXR1cm4gdCYmZy5jb21wb25lbnRzUmVnaXN0cnku Y2FsZW5kYXJzJiYic3RyaW5nIj09dHlwZW9mIHQmJiJncmVnb3JpYW4iIT09dH1mdW5jdGlv biB3KHQsZSl7cmV0dXJuIFN0cmluZyh0K01hdGgucG93KDEwLGUpKS5zdWJzdHIoMSl9ci5k YXRlVGljazA9ZnVuY3Rpb24odCxlKXt2YXIgbj1mdW5jdGlvbih0LGUpe3JldHVybiBfKHQp P2U/Zy5nZXRDb21wb25lbnRNZXRob2QoImNhbGVuZGFycyIsIkNBTk9OSUNBTF9TVU5EQVki KVt0XTpnLmdldENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJzIiwiQ0FOT05JQ0FMX1RJQ0si KVt0XTplPyIyMDAwLTAxLTAyIjoiMjAwMC0wMS0wMSJ9KHQsISFlKTtpZihlPDIpcmV0dXJu IG47dmFyIGk9ci5kYXRlVGltZTJtcyhuLHQpO3JldHVybiBpKz1mKihlLTEpLHIubXMyRGF0 ZVRpbWUoaSwwLHQpfSxyLmRmbHRSYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gXyh0KT9nLmdl dENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJzIiwiREZMVFJBTkdFIilbdF06WyIyMDAwLTAx LTAxIiwiMjAwMS0wMS0wMSJdfSxyLmlzSlNEYXRlPWZ1bmN0aW9uKHQpe3JldHVybiJvYmpl Y3QiPT10eXBlb2YgdCYmbnVsbCE9PXQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LmdldFRpbWV9 LHIuZGF0ZVRpbWUybXM9ZnVuY3Rpb24odCxlKXtpZihyLmlzSlNEYXRlKHQpKXt2YXIgYT10 LmdldFRpbWV6b25lT2Zmc2V0KCkqcCxvPSh0LmdldFVUQ01pbnV0ZXMoKS10LmdldE1pbnV0 ZXMoKSkqcCsodC5nZXRVVENTZWNvbmRzKCktdC5nZXRTZWNvbmRzKCkpKmQrKHQuZ2V0VVRD TWlsbGlzZWNvbmRzKCktdC5nZXRNaWxsaXNlY29uZHMoKSk7aWYobyl7dmFyIHM9MypwO2E9 YS1zLzIrbChvLWErcy8yLHMpfXJldHVybih0PU51bWJlcih0KS1hKT49biYmdDw9aT90OnV9 aWYoInN0cmluZyIhPXR5cGVvZiB0JiYibnVtYmVyIiE9dHlwZW9mIHQpcmV0dXJuIHU7dD1T dHJpbmcodCk7dmFyIGM9XyhlKSx2PXQuY2hhckF0KDApOyFjfHwiRyIhPT12JiYiZyIhPT12 fHwodD10LnN1YnN0cigxKSxlPSIiKTt2YXIgdz1jJiYiY2hpbmVzZSI9PT1lLnN1YnN0cigw LDcpLFQ9dC5tYXRjaCh3P3g6eSk7aWYoIVQpcmV0dXJuIHU7dmFyIGs9VFsxXSxBPVRbM118 fCIxIixNPU51bWJlcihUWzVdfHwxKSxTPU51bWJlcihUWzddfHwwKSxFPU51bWJlcihUWzld fHwwKSxMPU51bWJlcihUWzExXXx8MCk7aWYoYyl7aWYoMj09PWsubGVuZ3RoKXJldHVybiB1 O3ZhciBDO2s9TnVtYmVyKGspO3RyeXt2YXIgUD1nLmdldENvbXBvbmVudE1ldGhvZCgiY2Fs ZW5kYXJzIiwiZ2V0Q2FsIikoZSk7aWYodyl7dmFyIEk9ImkiPT09QS5jaGFyQXQoQS5sZW5n dGgtMSk7QT1wYXJzZUludChBLDEwKSxDPVAubmV3RGF0ZShrLFAudG9Nb250aEluZGV4KGss QSxJKSxNKX1lbHNlIEM9UC5uZXdEYXRlKGssTnVtYmVyKEEpLE0pfWNhdGNoKHQpe3JldHVy biB1fXJldHVybiBDPyhDLnRvSkQoKS1tKSpmK1MqaCtFKnArTCpkOnV9az0yPT09ay5sZW5n dGg/KE51bWJlcihrKSsyZTMtYiklMTAwK2I6TnVtYmVyKGspLEEtPTE7dmFyIE89bmV3IERh dGUoRGF0ZS5VVEMoMmUzLEEsTSxTLEUpKTtyZXR1cm4gTy5zZXRVVENGdWxsWWVhcihrKSxP LmdldFVUQ01vbnRoKCkhPT1BfHxPLmdldFVUQ0RhdGUoKSE9PU0/dTpPLmdldFRpbWUoKStM KmR9LG49ci5NSU5fTVM9ci5kYXRlVGltZTJtcygiLTk5OTkiKSxpPXIuTUFYX01TPXIuZGF0 ZVRpbWUybXMoIjk5OTktMTItMzEgMjM6NTk6NTkuOTk5OSIpLHIuaXNEYXRlVGltZT1mdW5j dGlvbih0LGUpe3JldHVybiByLmRhdGVUaW1lMm1zKHQsZSkhPT11fTt2YXIgVD05MCpmLGs9 MypoLEE9NSpwO2Z1bmN0aW9uIE0odCxlLHIsbixpKXtpZigoZXx8cnx8bnx8aSkmJih0Kz0i ICIrdyhlLDIpKyI6Iit3KHIsMiksKG58fGkpJiYodCs9IjoiK3cobiwyKSxpKSkpe2Zvcih2 YXIgYT00O2klMTA9PTA7KWEtPTEsaS89MTA7dCs9Ii4iK3coaSxhKX1yZXR1cm4gdH1yLm1z MkRhdGVUaW1lPWZ1bmN0aW9uKHQsZSxyKXtpZigibnVtYmVyIiE9dHlwZW9mIHR8fCEodD49 biYmdDw9aSkpcmV0dXJuIHU7ZXx8KGU9MCk7dmFyIGEsbyxzLGMseSx4LGI9TWF0aC5mbG9v cigxMCpsKHQrLjA1LDEpKSx3PU1hdGgucm91bmQodC1iLzEwKTtpZihfKHIpKXt2YXIgUz1N YXRoLmZsb29yKHcvZikrbSxFPU1hdGguZmxvb3IobCh0LGYpKTt0cnl7YT1nLmdldENvbXBv bmVudE1ldGhvZCgiY2FsZW5kYXJzIiwiZ2V0Q2FsIikocikuZnJvbUpEKFMpLmZvcm1hdERh dGUoInl5eXktbW0tZGQiKX1jYXRjaCh0KXthPXYoIkclWS0lbS0lZCIpKG5ldyBEYXRlKHcp KX1pZigiLSI9PT1hLmNoYXJBdCgwKSlmb3IoO2EubGVuZ3RoPDExOylhPSItMCIrYS5zdWJz dHIoMSk7ZWxzZSBmb3IoO2EubGVuZ3RoPDEwOylhPSIwIithO289ZTxUP01hdGguZmxvb3Io RS9oKTowLHM9ZTxUP01hdGguZmxvb3IoRSVoL3ApOjAsYz1lPGs/TWF0aC5mbG9vcihFJXAv ZCk6MCx5PWU8QT9FJWQqMTArYjowfWVsc2UgeD1uZXcgRGF0ZSh3KSxhPXYoIiVZLSVtLSVk IikoeCksbz1lPFQ/eC5nZXRVVENIb3VycygpOjAscz1lPFQ/eC5nZXRVVENNaW51dGVzKCk6 MCxjPWU8az94LmdldFVUQ1NlY29uZHMoKTowLHk9ZTxBPzEwKnguZ2V0VVRDTWlsbGlzZWNv bmRzKCkrYjowO3JldHVybiBNKGEsbyxzLGMseSl9LHIubXMyRGF0ZVRpbWVMb2NhbD1mdW5j dGlvbih0KXtpZighKHQ+PW4rZiYmdDw9aS1mKSlyZXR1cm4gdTt2YXIgZT1NYXRoLmZsb29y KDEwKmwodCsuMDUsMSkpLHI9bmV3IERhdGUoTWF0aC5yb3VuZCh0LWUvMTApKTtyZXR1cm4g TShhKCIlWS0lbS0lZCIpKHIpLHIuZ2V0SG91cnMoKSxyLmdldE1pbnV0ZXMoKSxyLmdldFNl Y29uZHMoKSwxMCpyLmdldFVUQ01pbGxpc2Vjb25kcygpK2UpfSxyLmNsZWFuRGF0ZT1mdW5j dGlvbih0LGUsbil7aWYodD09PXUpcmV0dXJuIGU7aWYoci5pc0pTRGF0ZSh0KXx8Im51bWJl ciI9PXR5cGVvZiB0JiZpc0Zpbml0ZSh0KSl7aWYoXyhuKSlyZXR1cm4gcy5lcnJvcigiSlMg RGF0ZXMgYW5kIG1pbGxpc2Vjb25kcyBhcmUgaW5jb21wYXRpYmxlIHdpdGggd29ybGQgY2Fs ZW5kYXJzIix0KSxlO2lmKCEodD1yLm1zMkRhdGVUaW1lTG9jYWwoK3QpKSYmdm9pZCAwIT09 ZSlyZXR1cm4gZX1lbHNlIGlmKCFyLmlzRGF0ZVRpbWUodCxuKSlyZXR1cm4gcy5lcnJvcigi dW5yZWNvZ25pemVkIGRhdGUiLHQpLGU7cmV0dXJuIHR9O3ZhciBTPS8lXGQ/Zi9nLEU9LyVo L2csTD17MToiMSIsMjoiMSIsMzoiMiIsNDoiMiJ9O2Z1bmN0aW9uIEModCxlLHIsbil7dD10 LnJlcGxhY2UoUywoZnVuY3Rpb24odCl7dmFyIHI9TWF0aC5taW4oK3QuY2hhckF0KDEpfHw2 LDYpO3JldHVybihlLzFlMyUxKzIpLnRvRml4ZWQocikuc3Vic3RyKDIpLnJlcGxhY2UoLzAr JC8sIiIpfHwiMCJ9KSk7dmFyIGk9bmV3IERhdGUoTWF0aC5mbG9vcihlKy4wNSkpO2lmKHQ9 dC5yZXBsYWNlKEUsKGZ1bmN0aW9uKCl7cmV0dXJuIExbcigiJXEiKShpKV19KSksXyhuKSl0 cnl7dD1nLmdldENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJzIiwid29ybGRDYWxGbXQiKSh0 LGUsbil9Y2F0Y2godCl7cmV0dXJuIkludmFsaWQifXJldHVybiByKHQpKGkpfXZhciBQPVs1 OSw1OS45LDU5Ljk5LDU5Ljk5OSw1OS45OTk5XTtyLmZvcm1hdERhdGU9ZnVuY3Rpb24odCxl LHIsbixpLGEpe2lmKGk9XyhpKSYmaSwhZSlpZigieSI9PT1yKWU9YS55ZWFyO2Vsc2UgaWYo Im0iPT09cillPWEubW9udGg7ZWxzZXtpZigiZCIhPT1yKXJldHVybiBmdW5jdGlvbih0LGUp e3ZhciByPWwodCsuMDUsZiksbj13KE1hdGguZmxvb3Ioci9oKSwyKSsiOiIrdyhsKE1hdGgu Zmxvb3Ioci9wKSw2MCksMik7aWYoIk0iIT09ZSl7byhlKXx8KGU9MCk7dmFyIGk9KDEwMCtN YXRoLm1pbihsKHQvZCw2MCksUFtlXSkpLnRvRml4ZWQoZSkuc3Vic3RyKDEpO2U+MCYmKGk9 aS5yZXBsYWNlKC8wKyQvLCIiKS5yZXBsYWNlKC9bXC5dJC8sIiIpKSxuKz0iOiIraX1yZXR1 cm4gbn0odCxyKSsiXG4iK0MoYS5kYXlNb250aFllYXIsdCxuLGkpO2U9YS5kYXlNb250aCsi XG4iK2EueWVhcn1yZXR1cm4gQyhlLHQsbixpKX07dmFyIEk9MypmO3IuaW5jcmVtZW50TW9u dGg9ZnVuY3Rpb24odCxlLHIpe3I9XyhyKSYmcjt2YXIgbj1sKHQsZik7aWYodD1NYXRoLnJv dW5kKHQtbikscil0cnl7dmFyIGk9TWF0aC5yb3VuZCh0L2YpK20sYT1nLmdldENvbXBvbmVu dE1ldGhvZCgiY2FsZW5kYXJzIiwiZ2V0Q2FsIikociksbz1hLmZyb21KRChpKTtyZXR1cm4g ZSUxMj9hLmFkZChvLGUsIm0iKTphLmFkZChvLGUvMTIsInkiKSwoby50b0pEKCktbSkqZitu fWNhdGNoKGUpe3MuZXJyb3IoImludmFsaWQgbXMgIit0KyIgaW4gY2FsZW5kYXIgIityKX12 YXIgYz1uZXcgRGF0ZSh0K0kpO3JldHVybiBjLnNldFVUQ01vbnRoKGMuZ2V0VVRDTW9udGgo KStlKStuLUl9LHIuZmluZEV4YWN0RGF0ZXM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHIsbixp PTAsYT0wLHM9MCxsPTAsYz1fKGUpJiZnLmdldENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJz IiwiZ2V0Q2FsIikoZSksdT0wO3U8dC5sZW5ndGg7dSsrKWlmKG49dFt1XSxvKG4pKXtpZigh KG4lZikpaWYoYyl0cnl7MT09PShyPWMuZnJvbUpEKG4vZittKSkuZGF5KCk/MT09PXIubW9u dGgoKT9pKys6YSsrOnMrK31jYXRjaCh0KXt9ZWxzZSAxPT09KHI9bmV3IERhdGUobikpLmdl dFVUQ0RhdGUoKT8wPT09ci5nZXRVVENNb250aCgpP2krKzphKys6cysrfWVsc2UgbCsrO3Mr PWErPWk7dmFyIGg9dC5sZW5ndGgtbDtyZXR1cm57ZXhhY3RZZWFyczppL2gsZXhhY3RNb250 aHM6YS9oLGV4YWN0RGF5czpzL2h9fX0seyIuLi9jb25zdGFudHMvbnVtZXJpY2FsIjo0Nzks Ii4uL3JlZ2lzdHJ5Ijo2MzgsIi4vbG9nZ2VycyI6NTA3LCIuL21vZCI6NTEwLCJkMy10aW1l LWZvcm1hdCI6MTIwLCJmYXN0LWlzbnVtZXJpYyI6MTkwfV0sNDkxOltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIkBwbG90bHkvZDMiKSxpPXQoIi4vbG9nZ2VycyIp LGE9dCgiLi9tYXRyaXgiKSxvPXQoImdsLW1hdDQiKTtmdW5jdGlvbiBzKHQpe3ZhciBlPXQm JnQucGFyZW50Tm9kZTtlJiZlLnJlbW92ZUNoaWxkKHQpfWZ1bmN0aW9uIGwodCxlLHIpe3Zh ciBuPSJwbG90bHkuanMtc3R5bGUtIit0LGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobik7 YXx8KChhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIikpLnNldEF0dHJpYnV0ZSgi aWQiLG4pLGEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpKSxkb2N1 bWVudC5oZWFkLmFwcGVuZENoaWxkKGEpKTt2YXIgbz1hLnNoZWV0O28uaW5zZXJ0UnVsZT9v Lmluc2VydFJ1bGUoZSsieyIrcisifSIsMCk6by5hZGRSdWxlP28uYWRkUnVsZShlLHIsMCk6 aS53YXJuKCJhZGRTdHlsZVJ1bGUgZmFpbGVkIil9ZnVuY3Rpb24gYyh0KXt2YXIgZT13aW5k b3cuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpLHI9ZS5nZXRQcm9wZXJ0eVZhbHVlKCItd2Vi a2l0LXRyYW5zZm9ybSIpfHxlLmdldFByb3BlcnR5VmFsdWUoIi1tb3otdHJhbnNmb3JtIil8 fGUuZ2V0UHJvcGVydHlWYWx1ZSgiLW1zLXRyYW5zZm9ybSIpfHxlLmdldFByb3BlcnR5VmFs dWUoIi1vLXRyYW5zZm9ybSIpfHxlLmdldFByb3BlcnR5VmFsdWUoInRyYW5zZm9ybSIpO3Jl dHVybiJub25lIj09PXI/bnVsbDpyLnJlcGxhY2UoIm1hdHJpeCIsIiIpLnJlcGxhY2UoIjNk IiwiIikuc2xpY2UoMSwtMSkuc3BsaXQoIiwiKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybit0 fSkpfWZ1bmN0aW9uIHUodCl7Zm9yKHZhciBlPVtdO2YodCk7KWUucHVzaCh0KSx0PXQucGFy ZW50Tm9kZTtyZXR1cm4gZX1mdW5jdGlvbiBmKHQpe3JldHVybiB0JiYodCBpbnN0YW5jZW9m IEVsZW1lbnR8fHQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCl9ZS5leHBvcnRzPXtnZXRHcmFw aERpdjpmdW5jdGlvbih0KXt2YXIgZTtpZigic3RyaW5nIj09dHlwZW9mIHQpe2lmKG51bGw9 PT0oZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KSkpdGhyb3cgbmV3IEVycm9yKCJObyBE T00gZWxlbWVudCB3aXRoIGlkICciK3QrIicgZXhpc3RzIG9uIHRoZSBwYWdlLiIpO3JldHVy biBlfWlmKG51bGw9PXQpdGhyb3cgbmV3IEVycm9yKCJET00gZWxlbWVudCBwcm92aWRlZCBp cyBudWxsIG9yIHVuZGVmaW5lZCIpO3JldHVybiB0fSxpc1Bsb3REaXY6ZnVuY3Rpb24odCl7 dmFyIGU9bi5zZWxlY3QodCk7cmV0dXJuIGUubm9kZSgpaW5zdGFuY2VvZiBIVE1MRWxlbWVu dCYmZS5zaXplKCkmJmUuY2xhc3NlZCgianMtcGxvdGx5LXBsb3QiKX0scmVtb3ZlRWxlbWVu dDpzLGFkZFN0eWxlUnVsZTpmdW5jdGlvbih0LGUpe2woImdsb2JhbCIsdCxlKX0sYWRkUmVs YXRlZFN0eWxlUnVsZTpsLGRlbGV0ZVJlbGF0ZWRTdHlsZVJ1bGU6ZnVuY3Rpb24odCl7dmFy IGU9InBsb3RseS5qcy1zdHlsZS0iK3Qscj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChlKTty JiZzKHIpfSxnZXRGdWxsVHJhbnNmb3JtTWF0cml4OmZ1bmN0aW9uKHQpe3ZhciBlPXUodCks cj1bMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMV07cmV0dXJuIGUuZm9yRWFjaCgo ZnVuY3Rpb24odCl7dmFyIGU9Yyh0KTtpZihlKXt2YXIgbj1hLmNvbnZlcnRDc3NNYXRyaXgo ZSk7cj1vLm11bHRpcGx5KHIscixuKX19KSkscn0sZ2V0RWxlbWVudFRyYW5zZm9ybU1hdHJp eDpjLGdldEVsZW1lbnRBbmRBbmNlc3RvcnM6dSxlcXVhbERvbVJlY3RzOmZ1bmN0aW9uKHQs ZSl7cmV0dXJuIHQmJmUmJnQueD09PWUueCYmdC55PT09ZS55JiZ0LnRvcD09PWUudG9wJiZ0 LmxlZnQ9PT1lLmxlZnQmJnQucmlnaHQ9PT1lLnJpZ2h0JiZ0LmJvdHRvbT09PWUuYm90dG9t fX19LHsiLi9sb2dnZXJzIjo1MDcsIi4vbWF0cml4Ijo1MDksIkBwbG90bHkvZDMiOjU4LCJn bC1tYXQ0IjoyMTB9XSw0OTI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiZXZlbnRzIikuRXZlbnRFbWl0dGVyLGk9e2luaXQ6ZnVuY3Rpb24odCl7aWYodC5fZXYg aW5zdGFuY2VvZiBuKXJldHVybiB0O3ZhciBlPW5ldyBuLHI9bmV3IG47cmV0dXJuIHQuX2V2 PWUsdC5faW50ZXJuYWxFdj1yLHQub249ZS5vbi5iaW5kKGUpLHQub25jZT1lLm9uY2UuYmlu ZChlKSx0LnJlbW92ZUxpc3RlbmVyPWUucmVtb3ZlTGlzdGVuZXIuYmluZChlKSx0LnJlbW92 ZUFsbExpc3RlbmVycz1lLnJlbW92ZUFsbExpc3RlbmVycy5iaW5kKGUpLHQuX2ludGVybmFs T249ci5vbi5iaW5kKHIpLHQuX2ludGVybmFsT25jZT1yLm9uY2UuYmluZChyKSx0Ll9yZW1v dmVJbnRlcm5hbExpc3RlbmVyPXIucmVtb3ZlTGlzdGVuZXIuYmluZChyKSx0Ll9yZW1vdmVB bGxJbnRlcm5hbExpc3RlbmVycz1yLnJlbW92ZUFsbExpc3RlbmVycy5iaW5kKHIpLHQuZW1p dD1mdW5jdGlvbihuLGkpeyJ1bmRlZmluZWQiIT10eXBlb2YgalF1ZXJ5JiZqUXVlcnkodCku dHJpZ2dlcihuLGkpLGUuZW1pdChuLGkpLHIuZW1pdChuLGkpfSx0fSx0cmlnZ2VySGFuZGxl cjpmdW5jdGlvbih0LGUscil7dmFyIG4saTsidW5kZWZpbmVkIiE9dHlwZW9mIGpRdWVyeSYm KG49alF1ZXJ5KHQpLnRyaWdnZXJIYW5kbGVyKGUscikpO3ZhciBhPXQuX2V2O2lmKCFhKXJl dHVybiBuO3ZhciBvLHM9YS5fZXZlbnRzW2VdO2lmKCFzKXJldHVybiBuO2Z1bmN0aW9uIGwo dCl7cmV0dXJuIHQubGlzdGVuZXI/KGEucmVtb3ZlTGlzdGVuZXIoZSx0Lmxpc3RlbmVyKSx0 LmZpcmVkP3ZvaWQgMDoodC5maXJlZD0hMCx0Lmxpc3RlbmVyLmFwcGx5KGEsW3JdKSkpOnQu YXBwbHkoYSxbcl0pfWZvcihzPUFycmF5LmlzQXJyYXkocyk/czpbc10sbz0wO288cy5sZW5n dGgtMTtvKyspbChzW29dKTtyZXR1cm4gaT1sKHNbb10pLHZvaWQgMCE9PW4/bjppfSxwdXJn ZTpmdW5jdGlvbih0KXtyZXR1cm4gZGVsZXRlIHQuX2V2LGRlbGV0ZSB0Lm9uLGRlbGV0ZSB0 Lm9uY2UsZGVsZXRlIHQucmVtb3ZlTGlzdGVuZXIsZGVsZXRlIHQucmVtb3ZlQWxsTGlzdGVu ZXJzLGRlbGV0ZSB0LmVtaXQsZGVsZXRlIHQuX2V2LGRlbGV0ZSB0Ll9pbnRlcm5hbEV2LGRl bGV0ZSB0Ll9pbnRlcm5hbE9uLGRlbGV0ZSB0Ll9pbnRlcm5hbE9uY2UsZGVsZXRlIHQuX3Jl bW92ZUludGVybmFsTGlzdGVuZXIsZGVsZXRlIHQuX3JlbW92ZUFsbEludGVybmFsTGlzdGVu ZXJzLHR9fTtlLmV4cG9ydHM9aX0se2V2ZW50czo4NH1dLDQ5MzpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2lzX3BsYWluX29iamVjdC5qcyIpLGk9QXJyYXku aXNBcnJheTtmdW5jdGlvbiBhKHQsZSxyLG8pe3ZhciBzLGwsYyx1LGYsaCxwPXRbMF0sZD10 Lmxlbmd0aDtpZigyPT09ZCYmaShwKSYmaSh0WzFdKSYmMD09PXAubGVuZ3RoKXtpZihmdW5j dGlvbih0LGUpe3ZhciByLG47Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl7aWYobnVsbCE9PShu PXRbcl0pJiYib2JqZWN0Ij09dHlwZW9mIG4pcmV0dXJuITE7dm9pZCAwIT09biYmKGVbcl09 bil9cmV0dXJuITB9KHRbMV0scCkpcmV0dXJuIHA7cC5zcGxpY2UoMCxwLmxlbmd0aCl9Zm9y KHZhciBtPTE7bTxkO20rKylmb3IobCBpbiBzPXRbbV0pYz1wW2xdLHU9c1tsXSxvJiZpKHUp P3BbbF09dTplJiZ1JiYobih1KXx8KGY9aSh1KSkpPyhmPyhmPSExLGg9YyYmaShjKT9jOltd KTpoPWMmJm4oYyk/Yzp7fSxwW2xdPWEoW2gsdV0sZSxyLG8pKToodm9pZCAwIT09dXx8cikm JihwW2xdPXUpO3JldHVybiBwfXIuZXh0ZW5kRmxhdD1mdW5jdGlvbigpe3JldHVybiBhKGFy Z3VtZW50cywhMSwhMSwhMSl9LHIuZXh0ZW5kRGVlcD1mdW5jdGlvbigpe3JldHVybiBhKGFy Z3VtZW50cywhMCwhMSwhMSl9LHIuZXh0ZW5kRGVlcEFsbD1mdW5jdGlvbigpe3JldHVybiBh KGFyZ3VtZW50cywhMCwhMCwhMSl9LHIuZXh0ZW5kRGVlcE5vQXJyYXlzPWZ1bmN0aW9uKCl7 cmV0dXJuIGEoYXJndW1lbnRzLCEwLCExLCEwKX19LHsiLi9pc19wbGFpbl9vYmplY3QuanMi OjUwNH1dLDQ5NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVu Y3Rpb24odCl7Zm9yKHZhciBlPXt9LHI9W10sbj0wLGk9MDtpPHQubGVuZ3RoO2krKyl7dmFy IGE9dFtpXTsxIT09ZVthXSYmKGVbYV09MSxyW24rK109YSl9cmV0dXJuIHJ9fSx7fV0sNDk1 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7cmV0dXJuITA9 PT10LnZpc2libGV9ZnVuY3Rpb24gaSh0KXt2YXIgZT10WzBdLnRyYWNlO3JldHVybiEwPT09 ZS52aXNpYmxlJiYwIT09ZS5fbGVuZ3RofWUuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFy IGUscj0oZT10LEFycmF5LmlzQXJyYXkoZSkmJkFycmF5LmlzQXJyYXkoZVswXSkmJmVbMF1b MF0mJmVbMF1bMF0udHJhY2U/aTpuKSxhPVtdLG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIHM9 dFtvXTtyKHMpJiZhLnB1c2gocyl9cmV0dXJuIGF9fSx7fV0sNDk2OltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIkBwbG90bHkvZDMiKSxpPXQoImNvdW50cnktcmVn ZXgiKSxhPXQoIkB0dXJmL2FyZWEiKSxvPXQoIkB0dXJmL2NlbnRyb2lkIikscz10KCJAdHVy Zi9iYm94IiksbD10KCIuL2lkZW50aXR5IiksYz10KCIuL2xvZ2dlcnMiKSx1PXQoIi4vaXNf cGxhaW5fb2JqZWN0IiksZj10KCIuL25lc3RlZF9wcm9wZXJ0eSIpLGg9dCgiLi9wb2x5Z29u IikscD1PYmplY3Qua2V5cyhpKSxkPXsiSVNPLTMiOmwsIlVTQS1zdGF0ZXMiOmwsImNvdW50 cnkgbmFtZXMiOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8cC5sZW5ndGg7ZSsrKXt2YXIg cj1wW2VdO2lmKG5ldyBSZWdFeHAoaVtyXSkudGVzdCh0LnRyaW0oKS50b0xvd2VyQ2FzZSgp KSlyZXR1cm4gcn1yZXR1cm4gYy5sb2coIlVucmVjb2duaXplZCBjb3VudHJ5IG5hbWU6ICIr dCsiLiIpLCExfX07ZnVuY3Rpb24gbSh0KXt2YXIgZT10Lmdlb2pzb24scj13aW5kb3cuUGxv dGx5R2VvQXNzZXRzfHx7fSxuPSJzdHJpbmciPT10eXBlb2YgZT9yW2VdOmU7cmV0dXJuIHUo bik/bjooYy5lcnJvcigiT29wcyAuLi4gc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2hlbiBmZXRj aGluZyAiK2UpLCExKX1lLmV4cG9ydHM9e2xvY2F0aW9uVG9GZWF0dXJlOmZ1bmN0aW9uKHQs ZSxyKXtpZighZXx8InN0cmluZyIhPXR5cGVvZiBlKXJldHVybiExO3ZhciBuLGksYSxvPWRb dF0oZSk7aWYobyl7aWYoIlVTQS1zdGF0ZXMiPT09dClmb3Iobj1bXSxhPTA7YTxyLmxlbmd0 aDthKyspKGk9clthXSkucHJvcGVydGllcyYmaS5wcm9wZXJ0aWVzLmd1JiYiVVNBIj09PWku cHJvcGVydGllcy5ndSYmbi5wdXNoKGkpO2Vsc2Ugbj1yO2ZvcihhPTA7YTxuLmxlbmd0aDth KyspaWYoKGk9blthXSkuaWQ9PT1vKXJldHVybiBpO2MubG9nKFsiTG9jYXRpb24gd2l0aCBp ZCIsbywiZG9lcyBub3QgaGF2ZSBhIG1hdGNoaW5nIHRvcG9qc29uIGZlYXR1cmUgYXQgdGhp cyByZXNvbHV0aW9uLiJdLmpvaW4oIiAiKSl9cmV0dXJuITF9LGZlYXR1cmUycG9seWdvbnM6 ZnVuY3Rpb24odCl7dmFyIGUscixuLGksYT10Lmdlb21ldHJ5LG89YS5jb29yZGluYXRlcyxz PXQuaWQsbD1bXTtmdW5jdGlvbiBjKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGgtMTtlKysp aWYodFtlXVswXT4wJiZ0W2UrMV1bMF08MClyZXR1cm4gZTtyZXR1cm4gbnVsbH1zd2l0Y2go ZT0iUlVTIj09PXN8fCJGSkkiPT09cz9mdW5jdGlvbih0KXt2YXIgZTtpZihudWxsPT09Yyh0 KSllPXQ7ZWxzZSBmb3IoZT1uZXcgQXJyYXkodC5sZW5ndGgpLGk9MDtpPHQubGVuZ3RoO2kr KyllW2ldPVt0W2ldWzBdPDA/dFtpXVswXSszNjA6dFtpXVswXSx0W2ldWzFdXTtsLnB1c2go aC50ZXN0ZXIoZSkpfToiQVRBIj09PXM/ZnVuY3Rpb24odCl7dmFyIGU9Yyh0KTtpZihudWxs PT09ZSlyZXR1cm4gbC5wdXNoKGgudGVzdGVyKHQpKTt2YXIgcj1uZXcgQXJyYXkodC5sZW5n dGgrMSksbj0wO2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspaT5lP3JbbisrXT1bdFtpXVswXSsz NjAsdFtpXVsxXV06aT09PWU/KHJbbisrXT10W2ldLHJbbisrXT1bdFtpXVswXSwtOTBdKTpy W24rK109dFtpXTt2YXIgYT1oLnRlc3RlcihyKTthLnB0cy5wb3AoKSxsLnB1c2goYSl9OmZ1 bmN0aW9uKHQpe2wucHVzaChoLnRlc3Rlcih0KSl9LGEudHlwZSl7Y2FzZSJNdWx0aVBvbHln b24iOmZvcihyPTA7cjxvLmxlbmd0aDtyKyspZm9yKG49MDtuPG9bcl0ubGVuZ3RoO24rKyll KG9bcl1bbl0pO2JyZWFrO2Nhc2UiUG9seWdvbiI6Zm9yKHI9MDtyPG8ubGVuZ3RoO3IrKyll KG9bcl0pfXJldHVybiBsfSxnZXRUcmFjZUdlb2pzb246bSxleHRyYWN0VHJhY2VGZWF0dXJl OmZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0udHJhY2Uscj1tKGUpO2lmKCFyKXJldHVybiExO3Zh ciBuLGk9e30scz1bXTtmb3Iobj0wO248ZS5fbGVuZ3RoO24rKyl7dmFyIGw9dFtuXTsobC5s b2N8fDA9PT1sLmxvYykmJihpW2wubG9jXT1sKX1mdW5jdGlvbiB1KHQpe3ZhciByPWYodCxl LmZlYXR1cmVpZGtleXx8ImlkIikuZ2V0KCksbj1pW3JdO2lmKG4pe3ZhciBsPXQuZ2VvbWV0 cnk7aWYoIlBvbHlnb24iPT09bC50eXBlfHwiTXVsdGlQb2x5Z29uIj09PWwudHlwZSl7dmFy IHU9e3R5cGU6IkZlYXR1cmUiLGlkOnIsZ2VvbWV0cnk6bCxwcm9wZXJ0aWVzOnt9fTt1LnBy b3BlcnRpZXMuY3Q9ZnVuY3Rpb24odCl7dmFyIGUscj10Lmdlb21ldHJ5O2lmKCJNdWx0aVBv bHlnb24iPT09ci50eXBlKWZvcih2YXIgbj1yLmNvb3JkaW5hdGVzLGk9MCxzPTA7czxuLmxl bmd0aDtzKyspe3ZhciBsPXt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpuW3NdfSxjPWEu ZGVmYXVsdChsKTtjPmkmJihpPWMsZT1sKX1lbHNlIGU9cjtyZXR1cm4gby5kZWZhdWx0KGUp Lmdlb21ldHJ5LmNvb3JkaW5hdGVzfSh1KSxuLmZJbj10LG4uZk91dD11LHMucHVzaCh1KX1l bHNlIGMubG9nKFsiTG9jYXRpb24iLG4ubG9jLCJkb2VzIG5vdCBoYXZlIGEgdmFsaWQgR2Vv SlNPTiBnZW9tZXRyeS4iLCJUcmFjZXMgd2l0aCBsb2NhdGlvbm1vZGUgKmdlb2pzb24taWQq IG9ubHkgc3VwcG9ydCIsIipQb2x5Z29uKiBhbmQgKk11bHRpUG9seWdvbiogZ2VvbWV0cmll cy4iXS5qb2luKCIgIikpfWRlbGV0ZSBpW3JdfXN3aXRjaChyLnR5cGUpe2Nhc2UiRmVhdHVy ZUNvbGxlY3Rpb24iOnZhciBoPXIuZmVhdHVyZXM7Zm9yKG49MDtuPGgubGVuZ3RoO24rKyl1 KGhbbl0pO2JyZWFrO2Nhc2UiRmVhdHVyZSI6dShyKTticmVhaztkZWZhdWx0OnJldHVybiBj Lndhcm4oWyJJbnZhbGlkIEdlb0pTT04gdHlwZSIsKHIudHlwZXx8Im5vbmUiKSsiLiIsIlRy YWNlcyB3aXRoIGxvY2F0aW9ubW9kZSAqZ2VvanNvbi1pZCogb25seSBzdXBwb3J0IiwiKkZl YXR1cmVDb2xsZWN0aW9uKiBhbmQgKkZlYXR1cmUqIHR5cGVzLiJdLmpvaW4oIiAiKSksITF9 Zm9yKHZhciBwIGluIGkpYy5sb2coWyJMb2NhdGlvbiAqIitwKyIqIiwiZG9lcyBub3QgaGF2 ZSBhIG1hdGNoaW5nIGZlYXR1cmUgd2l0aCBpZC1rZXkiLCIqIitlLmZlYXR1cmVpZGtleSsi Ki4iXS5qb2luKCIgIikpO3JldHVybiBzfSxmZXRjaFRyYWNlR2VvRGF0YTpmdW5jdGlvbih0 KXt2YXIgZT13aW5kb3cuUGxvdGx5R2VvQXNzZXRzfHx7fSxyPVtdO2Z1bmN0aW9uIGkodCl7 cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLGkpe24uanNvbih0LChmdW5jdGlvbihu LGEpe2lmKG4pe2RlbGV0ZSBlW3RdO3ZhciBvPTQwND09PW4uc3RhdHVzPydHZW9KU09OIGF0 IFVSTCAiJyt0KyciIGRvZXMgbm90IGV4aXN0Lic6IlVuZXhwZWN0ZWQgZXJyb3Igd2hpbGUg ZmV0Y2hpbmcgZnJvbSAiK3Q7cmV0dXJuIGkobmV3IEVycm9yKG8pKX1yZXR1cm4gZVt0XT1h LHIoYSl9KSl9KSl9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9u KHIsbil7dmFyIGk9MCxhPXNldEludGVydmFsKChmdW5jdGlvbigpe3JldHVybiBlW3RdJiYi cGVuZGluZyIhPT1lW3RdPyhjbGVhckludGVydmFsKGEpLHIoZVt0XSkpOmk+MTAwPyhjbGVh ckludGVydmFsKGEpLG4oIlVuZXhwZWN0ZWQgZXJyb3Igd2hpbGUgZmV0Y2hpbmcgZnJvbSAi K3QpKTp2b2lkIGkrK30pLDUwKX0pKX1mb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl7dmFy IHM9dFtvXVswXS50cmFjZS5nZW9qc29uOyJzdHJpbmciPT10eXBlb2YgcyYmKGVbc10/InBl bmRpbmciPT09ZVtzXSYmci5wdXNoKGEocykpOihlW3NdPSJwZW5kaW5nIixyLnB1c2goaShz KSkpKX1yZXR1cm4gcn0sY29tcHV0ZUJib3g6ZnVuY3Rpb24odCl7cmV0dXJuIHMuZGVmYXVs dCh0KX19fSx7Ii4vaWRlbnRpdHkiOjUwMSwiLi9pc19wbGFpbl9vYmplY3QiOjUwNCwiLi9s b2dnZXJzIjo1MDcsIi4vbmVzdGVkX3Byb3BlcnR5Ijo1MTEsIi4vcG9seWdvbiI6NTE1LCJA cGxvdGx5L2QzIjo1OCwiQHR1cmYvYXJlYSI6NjEsIkB0dXJmL2Jib3giOjY0LCJAdHVyZi9j ZW50cm9pZCI6NjcsImNvdW50cnktcmVnZXgiOjk0fV0sNDk3OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2NvbnN0YW50cy9udW1lcmljYWwiKS5CQUROVU07 ci5jYWxjVHJhY2VUb0xpbmVDb29yZHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRbMF0udHJh Y2UuY29ubmVjdGdhcHMscj1bXSxpPVtdLGE9MDthPHQubGVuZ3RoO2ErKyl7dmFyIG89dFth XS5sb25sYXQ7b1swXSE9PW4/aS5wdXNoKG8pOiFlJiZpLmxlbmd0aD4wJiYoci5wdXNoKGkp LGk9W10pfXJldHVybiBpLmxlbmd0aD4wJiZyLnB1c2goaSkscn0sci5tYWtlTGluZT1mdW5j dGlvbih0KXtyZXR1cm4gMT09PXQubGVuZ3RoP3t0eXBlOiJMaW5lU3RyaW5nIixjb29yZGlu YXRlczp0WzBdfTp7dHlwZToiTXVsdGlMaW5lU3RyaW5nIixjb29yZGluYXRlczp0fX0sci5t YWtlUG9seWdvbj1mdW5jdGlvbih0KXtpZigxPT09dC5sZW5ndGgpcmV0dXJue3R5cGU6IlBv bHlnb24iLGNvb3JkaW5hdGVzOnR9O2Zvcih2YXIgZT1uZXcgQXJyYXkodC5sZW5ndGgpLHI9 MDtyPHQubGVuZ3RoO3IrKyllW3JdPVt0W3JdXTtyZXR1cm57dHlwZToiTXVsdGlQb2x5Z29u Iixjb29yZGluYXRlczplfX0sci5tYWtlQmxhbms9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToi UG9pbnQiLGNvb3JkaW5hdGVzOltdfX19LHsiLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NDc5 fV0sNDk4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuLGksYSxvPXQoIi4v bW9kIikubW9kO2Z1bmN0aW9uIHModCxlLHIsbixpLGEsbyxzKXt2YXIgbD1yLXQsYz1pLXQs dT1vLWksZj1uLWUsaD1hLWUscD1zLWEsZD1sKnAtdSpmO2lmKDA9PT1kKXJldHVybiBudWxs O3ZhciBtPShjKnAtdSpoKS9kLGc9KGMqZi1sKmgpL2Q7cmV0dXJuIGc8MHx8Zz4xfHxtPDB8 fG0+MT9udWxsOnt4OnQrbCptLHk6ZStmKm19fWZ1bmN0aW9uIGwodCxlLHIsbixpKXt2YXIg YT1uKnQraSplO2lmKGE8MClyZXR1cm4gbipuK2kqaTtpZihhPnIpe3ZhciBvPW4tdCxzPWkt ZTtyZXR1cm4gbypvK3Mqc312YXIgbD1uKmUtaSp0O3JldHVybiBsKmwvcn1yLnNlZ21lbnRz SW50ZXJzZWN0PXMsci5zZWdtZW50RGlzdGFuY2U9ZnVuY3Rpb24odCxlLHIsbixpLGEsbyxj KXtpZihzKHQsZSxyLG4saSxhLG8sYykpcmV0dXJuIDA7dmFyIHU9ci10LGY9bi1lLGg9by1p LHA9Yy1hLGQ9dSp1K2YqZixtPWgqaCtwKnAsZz1NYXRoLm1pbihsKHUsZixkLGktdCxhLWUp LGwodSxmLGQsby10LGMtZSksbChoLHAsbSx0LWksZS1hKSxsKGgscCxtLHItaSxuLWEpKTty ZXR1cm4gTWF0aC5zcXJ0KGcpfSxyLmdldFRleHRMb2NhdGlvbj1mdW5jdGlvbih0LGUscixz KXtpZih0PT09aSYmcz09PWF8fChuPXt9LGk9dCxhPXMpLG5bcl0pcmV0dXJuIG5bcl07dmFy IGw9dC5nZXRQb2ludEF0TGVuZ3RoKG8oci1zLzIsZSkpLGM9dC5nZXRQb2ludEF0TGVuZ3Ro KG8ocitzLzIsZSkpLHU9TWF0aC5hdGFuKChjLnktbC55KS8oYy54LWwueCkpLGY9dC5nZXRQ b2ludEF0TGVuZ3RoKG8ocixlKSksaD17eDooNCpmLngrbC54K2MueCkvNix5Oig0KmYueSts LnkrYy55KS82LHRoZXRhOnV9O3JldHVybiBuW3JdPWgsaH0sci5jbGVhckxvY2F0aW9uQ2Fj aGU9ZnVuY3Rpb24oKXtpPW51bGx9LHIuZ2V0VmlzaWJsZVNlZ21lbnQ9ZnVuY3Rpb24odCxl LHIpe3ZhciBuLGksYT1lLmxlZnQsbz1lLnJpZ2h0LHM9ZS50b3AsbD1lLmJvdHRvbSxjPTAs dT10LmdldFRvdGFsTGVuZ3RoKCksZj11O2Z1bmN0aW9uIGgoZSl7dmFyIHI9dC5nZXRQb2lu dEF0TGVuZ3RoKGUpOzA9PT1lP249cjplPT09dSYmKGk9cik7dmFyIGM9ci54PGE/YS1yLng6 ci54Pm8/ci54LW86MCxmPXIueTxzP3Mtci55OnIueT5sP3IueS1sOjA7cmV0dXJuIE1hdGgu c3FydChjKmMrZipmKX1mb3IodmFyIHA9aChjKTtwOyl7aWYoKGMrPXArcik+ZilyZXR1cm47 cD1oKGMpfWZvcihwPWgoZik7cDspe2lmKGM+KGYtPXArcikpcmV0dXJuO3A9aChmKX1yZXR1 cm57bWluOmMsbWF4OmYsbGVuOmYtYyx0b3RhbDp1LGlzQ2xvc2VkOjA9PT1jJiZmPT09dSYm TWF0aC5hYnMobi54LWkueCk8LjEmJk1hdGguYWJzKG4ueS1pLnkpPC4xfX0sci5maW5kUG9p bnRPblBhdGg9ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBpLGEsbyxzPShuPW58fHt9KS5w YXRoTGVuZ3RofHx0LmdldFRvdGFsTGVuZ3RoKCksbD1uLnRvbGVyYW5jZXx8LjAwMSxjPW4u aXRlcmF0aW9uTGltaXR8fDMwLHU9dC5nZXRQb2ludEF0TGVuZ3RoKDApW3JdPnQuZ2V0UG9p bnRBdExlbmd0aChzKVtyXT8tMToxLGY9MCxoPTAscD1zO2Y8Yzspe2lmKGk9KGgrcCkvMixv PShhPXQuZ2V0UG9pbnRBdExlbmd0aChpKSlbcl0tZSxNYXRoLmFicyhvKTxsKXJldHVybiBh O3Uqbz4wP3A9aTpoPWksZisrfXJldHVybiBhfX0seyIuL21vZCI6NTEwfV0sNDk5OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksaT10 KCJ0aW55Y29sb3IyIiksYT10KCJjb2xvci1ub3JtYWxpemUiKSxvPXQoIi4uL2NvbXBvbmVu dHMvY29sb3JzY2FsZSIpLHM9dCgiLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIiku ZGVmYXVsdExpbmUsbD10KCIuL2FycmF5IikuaXNBcnJheU9yVHlwZWRBcnJheSxjPWEocyk7 ZnVuY3Rpb24gdSh0LGUpe3ZhciByPXQ7cmV0dXJuIHJbM10qPWUscn1mdW5jdGlvbiBmKHQp e2lmKG4odCkpcmV0dXJuIGM7dmFyIGU9YSh0KTtyZXR1cm4gZS5sZW5ndGg/ZTpjfWZ1bmN0 aW9uIGgodCl7cmV0dXJuIG4odCk/dDoxfWUuZXhwb3J0cz17Zm9ybWF0Q29sb3I6ZnVuY3Rp b24odCxlLHIpe3ZhciBuLGkscyxwLGQsbT10LmNvbG9yLGc9bChtKSx2PWwoZSkseT1vLmV4 dHJhY3RPcHRzKHQpLHg9W107aWYobj12b2lkIDAhPT15LmNvbG9yc2NhbGU/by5tYWtlQ29s b3JTY2FsZUZ1bmNGcm9tVHJhY2UodCk6ZixpPWc/ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9p ZCAwPT09dFtlXT9jOmEobih0W2VdKSl9OmYscz12P2Z1bmN0aW9uKHQsZSl7cmV0dXJuIHZv aWQgMD09PXRbZV0/MTpoKHRbZV0pfTpoLGd8fHYpZm9yKHZhciBiPTA7YjxyO2IrKylwPWko bSxiKSxkPXMoZSxiKSx4W2JdPXUocCxkKTtlbHNlIHg9dShhKG0pLGUpO3JldHVybiB4fSxw YXJzZUNvbG9yU2NhbGU6ZnVuY3Rpb24odCl7dmFyIGU9by5leHRyYWN0T3B0cyh0KSxyPWUu Y29sb3JzY2FsZTtyZXR1cm4gZS5yZXZlcnNlc2NhbGUmJihyPW8uZmxpcFNjYWxlKGUuY29s b3JzY2FsZSkpLHIubWFwKChmdW5jdGlvbih0KXt2YXIgZT10WzBdLHI9aSh0WzFdKS50b1Jn YigpO3JldHVybntpbmRleDplLHJnYjpbci5yLHIuZyxyLmIsci5hXX19KSl9fX0seyIuLi9j b21wb25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiOjM2NSwiLi4vY29tcG9uZW50cy9jb2xvcnNj YWxlIjozNzgsIi4vYXJyYXkiOjQ4NSwiY29sb3Itbm9ybWFsaXplIjo4OSwiZmFzdC1pc251 bWVyaWMiOjE5MCx0aW55Y29sb3IyOjMxMn1dLDUwMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCIuL2lkZW50aXR5Iik7ZnVuY3Rpb24gaSh0KXtyZXR1cm5bdF19 ZS5leHBvcnRzPXtrZXlGdW46ZnVuY3Rpb24odCl7cmV0dXJuIHQua2V5fSxyZXBlYXQ6aSxk ZXNjZW5kOm4sd3JhcDppLHVud3JhcDpmdW5jdGlvbih0KXtyZXR1cm4gdFswXX19fSx7Ii4v aWRlbnRpdHkiOjUwMX1dLDUwMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4 cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHR9fSx7fV0sNTAyOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKCFlKXJldHVybiB0O3Zh ciByPTEvTWF0aC5hYnMoZSksbj1yPjE/KHIqdCtyKmUpL3I6dCtlLGk9U3RyaW5nKG4pLmxl bmd0aDtpZihpPjE2KXt2YXIgYT1TdHJpbmcoZSkubGVuZ3RoO2lmKGk+PVN0cmluZyh0KS5s ZW5ndGgrYSl7dmFyIG89cGFyc2VGbG9hdChuKS50b1ByZWNpc2lvbigxMik7LTE9PT1vLmlu ZGV4T2YoImUrIikmJihuPStvKX19cmV0dXJuIG59fSx7fV0sNTAzOltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIkBwbG90bHkvZDMiKSxpPXQoImQzLXRpbWUtZm9y bWF0IikudXRjRm9ybWF0LGE9dCgiZDMtZm9ybWF0IikuZm9ybWF0LG89dCgiZmFzdC1pc251 bWVyaWMiKSxzPXQoIi4uL2NvbnN0YW50cy9udW1lcmljYWwiKSxsPXMuRlBfU0FGRSxjPS1s LHU9cy5CQUROVU0sZj1lLmV4cG9ydHM9e307Zi5hZGp1c3RGb3JtYXQ9ZnVuY3Rpb24odCl7 cmV0dXJuIXR8fC9eXGRbLl1cZGYvLnRlc3QodCl8fC9bLl1cZCUvLnRlc3QodCk/dDoiMC5m Ij09PXQ/In5mIjovXlxkJS8udGVzdCh0KT8ifiUiOi9eXGRzLy50ZXN0KHQpPyJ+cyI6IS9e W34sLjAkXS8udGVzdCh0KSYmL1smZnBzXS8udGVzdCh0KT8ifiIrdDp0fTt2YXIgaD17fTtm Lndhcm5CYWRGb3JtYXQ9ZnVuY3Rpb24odCl7dmFyIGU9U3RyaW5nKHQpO2hbZV18fChoW2Vd PTEsZi53YXJuKCdlbmNvdW50ZXJlZCBiYWQgZm9ybWF0OiAiJytlKyciJykpfSxmLm5vRm9y bWF0PWZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcodCl9LGYubnVtYmVyRm9ybWF0PWZ1bmN0 aW9uKHQpe3ZhciBlO3RyeXtlPWEoZi5hZGp1c3RGb3JtYXQodCkpfWNhdGNoKGUpe3JldHVy biBmLndhcm5CYWRGb3JtYXQodCksZi5ub0Zvcm1hdH1yZXR1cm4gZX0sZi5uZXN0ZWRQcm9w ZXJ0eT10KCIuL25lc3RlZF9wcm9wZXJ0eSIpLGYua2V5ZWRDb250YWluZXI9dCgiLi9rZXll ZF9jb250YWluZXIiKSxmLnJlbGF0aXZlQXR0cj10KCIuL3JlbGF0aXZlX2F0dHIiKSxmLmlz UGxhaW5PYmplY3Q9dCgiLi9pc19wbGFpbl9vYmplY3QiKSxmLnRvTG9nUmFuZ2U9dCgiLi90 b19sb2dfcmFuZ2UiKSxmLnJlbGlua1ByaXZhdGVLZXlzPXQoIi4vcmVsaW5rX3ByaXZhdGUi KTt2YXIgcD10KCIuL2FycmF5Iik7Zi5pc1R5cGVkQXJyYXk9cC5pc1R5cGVkQXJyYXksZi5p c0FycmF5T3JUeXBlZEFycmF5PXAuaXNBcnJheU9yVHlwZWRBcnJheSxmLmlzQXJyYXkxRD1w LmlzQXJyYXkxRCxmLmVuc3VyZUFycmF5PXAuZW5zdXJlQXJyYXksZi5jb25jYXQ9cC5jb25j YXQsZi5tYXhSb3dMZW5ndGg9cC5tYXhSb3dMZW5ndGgsZi5taW5Sb3dMZW5ndGg9cC5taW5S b3dMZW5ndGg7dmFyIGQ9dCgiLi9tb2QiKTtmLm1vZD1kLm1vZCxmLm1vZEhhbGY9ZC5tb2RI YWxmO3ZhciBtPXQoIi4vY29lcmNlIik7Zi52YWxPYmplY3RNZXRhPW0udmFsT2JqZWN0TWV0 YSxmLmNvZXJjZT1tLmNvZXJjZSxmLmNvZXJjZTI9bS5jb2VyY2UyLGYuY29lcmNlRm9udD1t LmNvZXJjZUZvbnQsZi5jb2VyY2VQYXR0ZXJuPW0uY29lcmNlUGF0dGVybixmLmNvZXJjZUhv dmVyaW5mbz1tLmNvZXJjZUhvdmVyaW5mbyxmLmNvZXJjZVNlbGVjdGlvbk1hcmtlck9wYWNp dHk9bS5jb2VyY2VTZWxlY3Rpb25NYXJrZXJPcGFjaXR5LGYudmFsaWRhdGU9bS52YWxpZGF0 ZTt2YXIgZz10KCIuL2RhdGVzIik7Zi5kYXRlVGltZTJtcz1nLmRhdGVUaW1lMm1zLGYuaXNE YXRlVGltZT1nLmlzRGF0ZVRpbWUsZi5tczJEYXRlVGltZT1nLm1zMkRhdGVUaW1lLGYubXMy RGF0ZVRpbWVMb2NhbD1nLm1zMkRhdGVUaW1lTG9jYWwsZi5jbGVhbkRhdGU9Zy5jbGVhbkRh dGUsZi5pc0pTRGF0ZT1nLmlzSlNEYXRlLGYuZm9ybWF0RGF0ZT1nLmZvcm1hdERhdGUsZi5p bmNyZW1lbnRNb250aD1nLmluY3JlbWVudE1vbnRoLGYuZGF0ZVRpY2swPWcuZGF0ZVRpY2sw LGYuZGZsdFJhbmdlPWcuZGZsdFJhbmdlLGYuZmluZEV4YWN0RGF0ZXM9Zy5maW5kRXhhY3RE YXRlcyxmLk1JTl9NUz1nLk1JTl9NUyxmLk1BWF9NUz1nLk1BWF9NUzt2YXIgdj10KCIuL3Nl YXJjaCIpO2YuZmluZEJpbj12LmZpbmRCaW4sZi5zb3J0ZXJBc2M9di5zb3J0ZXJBc2MsZi5z b3J0ZXJEZXM9di5zb3J0ZXJEZXMsZi5kaXN0aW5jdFZhbHM9di5kaXN0aW5jdFZhbHMsZi5y b3VuZFVwPXYucm91bmRVcCxmLnNvcnQ9di5zb3J0LGYuZmluZEluZGV4T2ZNaW49di5maW5k SW5kZXhPZk1pbixmLnNvcnRPYmplY3RLZXlzPXQoIi4vc29ydF9vYmplY3Rfa2V5cyIpO3Zh ciB5PXQoIi4vc3RhdHMiKTtmLmFnZ051bXM9eS5hZ2dOdW1zLGYubGVuPXkubGVuLGYubWVh bj15Lm1lYW4sZi5tZWRpYW49eS5tZWRpYW4sZi5taWRSYW5nZT15Lm1pZFJhbmdlLGYudmFy aWFuY2U9eS52YXJpYW5jZSxmLnN0ZGV2PXkuc3RkZXYsZi5pbnRlcnA9eS5pbnRlcnA7dmFy IHg9dCgiLi9tYXRyaXgiKTtmLmluaXQyZEFycmF5PXguaW5pdDJkQXJyYXksZi50cmFuc3Bv c2VSYWdnZWQ9eC50cmFuc3Bvc2VSYWdnZWQsZi5kb3Q9eC5kb3QsZi50cmFuc2xhdGlvbk1h dHJpeD14LnRyYW5zbGF0aW9uTWF0cml4LGYucm90YXRpb25NYXRyaXg9eC5yb3RhdGlvbk1h dHJpeCxmLnJvdGF0aW9uWFlNYXRyaXg9eC5yb3RhdGlvblhZTWF0cml4LGYuYXBwbHkzRFRy YW5zZm9ybT14LmFwcGx5M0RUcmFuc2Zvcm0sZi5hcHBseTJEVHJhbnNmb3JtPXguYXBwbHky RFRyYW5zZm9ybSxmLmFwcGx5MkRUcmFuc2Zvcm0yPXguYXBwbHkyRFRyYW5zZm9ybTIsZi5j b252ZXJ0Q3NzTWF0cml4PXguY29udmVydENzc01hdHJpeCxmLmludmVyc2VUcmFuc2Zvcm1N YXRyaXg9eC5pbnZlcnNlVHJhbnNmb3JtTWF0cml4O3ZhciBiPXQoIi4vYW5nbGVzIik7Zi5k ZWcycmFkPWIuZGVnMnJhZCxmLnJhZDJkZWc9Yi5yYWQyZGVnLGYuYW5nbGVEZWx0YT1iLmFu Z2xlRGVsdGEsZi5hbmdsZURpc3Q9Yi5hbmdsZURpc3QsZi5pc0Z1bGxDaXJjbGU9Yi5pc0Z1 bGxDaXJjbGUsZi5pc0FuZ2xlSW5zaWRlU2VjdG9yPWIuaXNBbmdsZUluc2lkZVNlY3Rvcixm LmlzUHRJbnNpZGVTZWN0b3I9Yi5pc1B0SW5zaWRlU2VjdG9yLGYucGF0aEFyYz1iLnBhdGhB cmMsZi5wYXRoU2VjdG9yPWIucGF0aFNlY3RvcixmLnBhdGhBbm51bHVzPWIucGF0aEFubnVs dXM7dmFyIF89dCgiLi9hbmNob3JfdXRpbHMiKTtmLmlzTGVmdEFuY2hvcj1fLmlzTGVmdEFu Y2hvcixmLmlzQ2VudGVyQW5jaG9yPV8uaXNDZW50ZXJBbmNob3IsZi5pc1JpZ2h0QW5jaG9y PV8uaXNSaWdodEFuY2hvcixmLmlzVG9wQW5jaG9yPV8uaXNUb3BBbmNob3IsZi5pc01pZGRs ZUFuY2hvcj1fLmlzTWlkZGxlQW5jaG9yLGYuaXNCb3R0b21BbmNob3I9Xy5pc0JvdHRvbUFu Y2hvcjt2YXIgdz10KCIuL2dlb21ldHJ5MmQiKTtmLnNlZ21lbnRzSW50ZXJzZWN0PXcuc2Vn bWVudHNJbnRlcnNlY3QsZi5zZWdtZW50RGlzdGFuY2U9dy5zZWdtZW50RGlzdGFuY2UsZi5n ZXRUZXh0TG9jYXRpb249dy5nZXRUZXh0TG9jYXRpb24sZi5jbGVhckxvY2F0aW9uQ2FjaGU9 dy5jbGVhckxvY2F0aW9uQ2FjaGUsZi5nZXRWaXNpYmxlU2VnbWVudD13LmdldFZpc2libGVT ZWdtZW50LGYuZmluZFBvaW50T25QYXRoPXcuZmluZFBvaW50T25QYXRoO3ZhciBUPXQoIi4v ZXh0ZW5kIik7Zi5leHRlbmRGbGF0PVQuZXh0ZW5kRmxhdCxmLmV4dGVuZERlZXA9VC5leHRl bmREZWVwLGYuZXh0ZW5kRGVlcEFsbD1ULmV4dGVuZERlZXBBbGwsZi5leHRlbmREZWVwTm9B cnJheXM9VC5leHRlbmREZWVwTm9BcnJheXM7dmFyIGs9dCgiLi9sb2dnZXJzIik7Zi5sb2c9 ay5sb2csZi53YXJuPWsud2FybixmLmVycm9yPWsuZXJyb3I7dmFyIEE9dCgiLi9yZWdleCIp O2YuY291bnRlclJlZ2V4PUEuY291bnRlcjt2YXIgTT10KCIuL3Rocm90dGxlIik7Zi50aHJv dHRsZT1NLnRocm90dGxlLGYudGhyb3R0bGVEb25lPU0uZG9uZSxmLmNsZWFyVGhyb3R0bGU9 TS5jbGVhcjt2YXIgUz10KCIuL2RvbSIpO2Z1bmN0aW9uIEUodCl7dmFyIGU9e307Zm9yKHZh ciByIGluIHQpZm9yKHZhciBuPXRbcl0saT0wO2k8bi5sZW5ndGg7aSsrKWVbbltpXV09K3I7 cmV0dXJuIGV9Zi5nZXRHcmFwaERpdj1TLmdldEdyYXBoRGl2LGYuaXNQbG90RGl2PVMuaXNQ bG90RGl2LGYucmVtb3ZlRWxlbWVudD1TLnJlbW92ZUVsZW1lbnQsZi5hZGRTdHlsZVJ1bGU9 Uy5hZGRTdHlsZVJ1bGUsZi5hZGRSZWxhdGVkU3R5bGVSdWxlPVMuYWRkUmVsYXRlZFN0eWxl UnVsZSxmLmRlbGV0ZVJlbGF0ZWRTdHlsZVJ1bGU9Uy5kZWxldGVSZWxhdGVkU3R5bGVSdWxl LGYuZ2V0RnVsbFRyYW5zZm9ybU1hdHJpeD1TLmdldEZ1bGxUcmFuc2Zvcm1NYXRyaXgsZi5n ZXRFbGVtZW50VHJhbnNmb3JtTWF0cml4PVMuZ2V0RWxlbWVudFRyYW5zZm9ybU1hdHJpeCxm LmdldEVsZW1lbnRBbmRBbmNlc3RvcnM9Uy5nZXRFbGVtZW50QW5kQW5jZXN0b3JzLGYuZXF1 YWxEb21SZWN0cz1TLmVxdWFsRG9tUmVjdHMsZi5jbGVhclJlc3BvbnNpdmU9dCgiLi9jbGVh cl9yZXNwb25zaXZlIiksZi5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI9dCgiLi9wcmVzZXJ2ZV9k cmF3aW5nX2J1ZmZlciIpLGYubWFrZVRyYWNlR3JvdXBzPXQoIi4vbWFrZV90cmFjZV9ncm91 cHMiKSxmLl89dCgiLi9sb2NhbGl6ZSIpLGYubm90aWZpZXI9dCgiLi9ub3RpZmllciIpLGYu ZmlsdGVyVW5pcXVlPXQoIi4vZmlsdGVyX3VuaXF1ZSIpLGYuZmlsdGVyVmlzaWJsZT10KCIu L2ZpbHRlcl92aXNpYmxlIiksZi5wdXNoVW5pcXVlPXQoIi4vcHVzaF91bmlxdWUiKSxmLmlu Y3JlbWVudD10KCIuL2luY3JlbWVudCIpLGYuY2xlYW5OdW1iZXI9dCgiLi9jbGVhbl9udW1i ZXIiKSxmLmVuc3VyZU51bWJlcj1mdW5jdGlvbih0KXtyZXR1cm4gbyh0KT8odD1OdW1iZXIo dCkpPmx8fHQ8Yz91OnQ6dX0sZi5pc0luZGV4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuISh2b2lk IDAhPT1lJiZ0Pj1lKSYmKG8odCkmJnQ+PTAmJnQlMT09MCl9LGYubm9vcD10KCIuL25vb3Ai KSxmLmlkZW50aXR5PXQoIi4vaWRlbnRpdHkiKSxmLnJlcGVhdD1mdW5jdGlvbih0LGUpe2Zv cih2YXIgcj1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspcltuXT10O3JldHVybiByfSxmLnN3 YXBBdHRycz1mdW5jdGlvbih0LGUscixuKXtyfHwocj0ieCIpLG58fChuPSJ5Iik7Zm9yKHZh ciBpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBhPWVbaV0sbz1mLm5lc3RlZFByb3BlcnR5KHQs YS5yZXBsYWNlKCI/IixyKSkscz1mLm5lc3RlZFByb3BlcnR5KHQsYS5yZXBsYWNlKCI/Iixu KSksbD1vLmdldCgpO28uc2V0KHMuZ2V0KCkpLHMuc2V0KGwpfX0sZi5yYWlzZVRvVG9wPWZ1 bmN0aW9uKHQpe3QucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0KX0sZi5jYW5jZWxUcmFuc2l0 aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0LnRyYW5zaXRpb24oKS5kdXJhdGlvbigwKX0sZi5j b25zdHJhaW49ZnVuY3Rpb24odCxlLHIpe3JldHVybiBlPnI/TWF0aC5tYXgocixNYXRoLm1p bihlLHQpKTpNYXRoLm1heChlLE1hdGgubWluKHIsdCkpfSxmLmJCb3hJbnRlcnNlY3Q9ZnVu Y3Rpb24odCxlLHIpe3JldHVybiByPXJ8fDAsdC5sZWZ0PD1lLnJpZ2h0K3ImJmUubGVmdDw9 dC5yaWdodCtyJiZ0LnRvcDw9ZS5ib3R0b20rciYmZS50b3A8PXQuYm90dG9tK3J9LGYuc2lt cGxlTWFwPWZ1bmN0aW9uKHQsZSxyLG4saSl7Zm9yKHZhciBhPXQubGVuZ3RoLG89bmV3IEFy cmF5KGEpLHM9MDtzPGE7cysrKW9bc109ZSh0W3NdLHIsbixpKTtyZXR1cm4gb30sZi5yYW5k c3RyPWZ1bmN0aW9uIHQoZSxyLG4saSl7aWYobnx8KG49MTYpLHZvaWQgMD09PXImJihyPTI0 KSxyPD0wKXJldHVybiIwIjt2YXIgYSxvLHM9TWF0aC5sb2coTWF0aC5wb3coMixyKSkvTWF0 aC5sb2cobiksbD0iIjtmb3IoYT0yO3M9PT0xLzA7YSo9MilzPU1hdGgubG9nKE1hdGgucG93 KDIsci9hKSkvTWF0aC5sb2cobikqYTt2YXIgYz1zLU1hdGguZmxvb3Iocyk7Zm9yKGE9MDth PE1hdGguZmxvb3Iocyk7YSsrKWw9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKm4pLnRvU3Ry aW5nKG4pK2w7YyYmKG89TWF0aC5wb3cobixjKSxsPU1hdGguZmxvb3IoTWF0aC5yYW5kb20o KSpvKS50b1N0cmluZyhuKStsKTt2YXIgdT1wYXJzZUludChsLG4pO3JldHVybiBlJiZlW2xd fHx1IT09MS8wJiZ1Pj1NYXRoLnBvdygyLHIpP2k+MTA/KGYud2FybigicmFuZHN0ciBmYWls ZWQgdW5pcXVlbmVzcyIpLGwpOnQoZSxyLG4sKGl8fDApKzEpOmx9LGYuT3B0aW9uQ29udHJv bD1mdW5jdGlvbih0LGUpe3R8fCh0PXt9KSxlfHwoZT0ib3B0Iik7dmFyIHI9e29wdGlvbkxp c3Q6W10sX25ld29wdGlvbjpmdW5jdGlvbihuKXtuW2VdPXQscltuLm5hbWVdPW4sci5vcHRp b25MaXN0LnB1c2gobil9fTtyZXR1cm4gclsiXyIrZV09dCxyfSxmLnNtb290aD1mdW5jdGlv bih0LGUpe2lmKChlPU1hdGgucm91bmQoZSl8fDApPDIpcmV0dXJuIHQ7dmFyIHIsbixpLGEs bz10Lmxlbmd0aCxzPTIqbyxsPTIqZS0xLGM9bmV3IEFycmF5KGwpLHU9bmV3IEFycmF5KG8p O2ZvcihyPTA7cjxsO3IrKyljW3JdPSgxLU1hdGguY29zKE1hdGguUEkqKHIrMSkvZSkpLygy KmUpO2ZvcihyPTA7cjxvO3IrKyl7Zm9yKGE9MCxuPTA7bjxsO24rKykoaT1yK24rMS1lKTwt bz9pLT1zKk1hdGgucm91bmQoaS9zKTppPj1zJiYoaS09cypNYXRoLmZsb29yKGkvcykpLGk8 MD9pPS0xLWk6aT49byYmKGk9cy0xLWkpLGErPXRbaV0qY1tuXTt1W3JdPWF9cmV0dXJuIHV9 LGYuc3luY09yQXN5bmM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuO2Z1bmN0aW9uIGkoKXtyZXR1 cm4gZi5zeW5jT3JBc3luYyh0LGUscil9Zm9yKDt0Lmxlbmd0aDspaWYoKG49KDAsdC5zcGxp Y2UoMCwxKVswXSkoZSkpJiZuLnRoZW4pcmV0dXJuIG4udGhlbihpKTtyZXR1cm4gciYmcihl KX0sZi5zdHJpcFRyYWlsaW5nU2xhc2g9ZnVuY3Rpb24odCl7cmV0dXJuIi8iPT09dC5zdWJz dHIoLTEpP3Quc3Vic3RyKDAsdC5sZW5ndGgtMSk6dH0sZi5ub25lT3JBbGw9ZnVuY3Rpb24o dCxlLHIpe2lmKHQpe3ZhciBuLGk9ITEsYT0hMDtmb3Iobj0wO248ci5sZW5ndGg7bisrKW51 bGwhPXRbcltuXV0/aT0hMDphPSExO2lmKGkmJiFhKWZvcihuPTA7bjxyLmxlbmd0aDtuKysp dFtyW25dXT1lW3Jbbl1dfX0sZi5tZXJnZUFycmF5PWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBp PSJmdW5jdGlvbiI9PXR5cGVvZiBuO2lmKGYuaXNBcnJheU9yVHlwZWRBcnJheSh0KSlmb3Io dmFyIGE9TWF0aC5taW4odC5sZW5ndGgsZS5sZW5ndGgpLG89MDtvPGE7bysrKXt2YXIgcz10 W29dO2Vbb11bcl09aT9uKHMpOnN9fSxmLm1lcmdlQXJyYXlDYXN0UG9zaXRpdmU9ZnVuY3Rp b24odCxlLHIpe3JldHVybiBmLm1lcmdlQXJyYXkodCxlLHIsKGZ1bmN0aW9uKHQpe3ZhciBl PSt0O3JldHVybiBpc0Zpbml0ZShlKSYmZT4wP2U6MH0pKX0sZi5maWxsQXJyYXk9ZnVuY3Rp b24odCxlLHIsbil7aWYobj1ufHxmLmlkZW50aXR5LGYuaXNBcnJheU9yVHlwZWRBcnJheSh0 KSlmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyllW2ldW3JdPW4odFtpXSl9LGYuY2FzdE9w dGlvbj1mdW5jdGlvbih0LGUscixuKXtuPW58fGYuaWRlbnRpdHk7dmFyIGk9Zi5uZXN0ZWRQ cm9wZXJ0eSh0LHIpLmdldCgpO3JldHVybiBmLmlzQXJyYXlPclR5cGVkQXJyYXkoaSk/QXJy YXkuaXNBcnJheShlKSYmZi5pc0FycmF5T3JUeXBlZEFycmF5KGlbZVswXV0pP24oaVtlWzBd XVtlWzFdXSk6bihpW2VdKTppfSxmLmV4dHJhY3RPcHRpb249ZnVuY3Rpb24odCxlLHIsbil7 aWYociBpbiB0KXJldHVybiB0W3JdO3ZhciBpPWYubmVzdGVkUHJvcGVydHkoZSxuKS5nZXQo KTtyZXR1cm4gQXJyYXkuaXNBcnJheShpKT92b2lkIDA6aX0sZi50YWdTZWxlY3RlZD1mdW5j dGlvbih0LGUscil7dmFyIG4saSxhPWUuc2VsZWN0ZWRwb2ludHMsbz1lLl9pbmRleFRvUG9p bnRzO28mJihuPUUobykpO2Zvcih2YXIgcz0wO3M8YS5sZW5ndGg7cysrKXt2YXIgbD1hW3Nd O2lmKGYuaXNJbmRleChsKXx8Zi5pc0FycmF5T3JUeXBlZEFycmF5KGwpJiZmLmlzSW5kZXgo bFswXSkmJmYuaXNJbmRleChsWzFdKSl7dmFyIGM9bj9uW2xdOmwsdT1yP3JbY106Yzt2b2lk IDAhPT0oaT11KSYmaTx0Lmxlbmd0aCYmKHRbdV0uc2VsZWN0ZWQ9MSl9fX0sZi5zZWxJbmRp Y2VzMnNlbFBvaW50cz1mdW5jdGlvbih0KXt2YXIgZT10LnNlbGVjdGVkcG9pbnRzLHI9dC5f aW5kZXhUb1BvaW50cztpZihyKXtmb3IodmFyIG49RShyKSxpPVtdLGE9MDthPGUubGVuZ3Ro O2ErKyl7dmFyIG89ZVthXTtpZihmLmlzSW5kZXgobykpe3ZhciBzPW5bb107Zi5pc0luZGV4 KHMpJiZpLnB1c2gocyl9fXJldHVybiBpfXJldHVybiBlfSxmLmdldFRhcmdldEFycmF5PWZ1 bmN0aW9uKHQsZSl7dmFyIHI9ZS50YXJnZXQ7aWYoInN0cmluZyI9PXR5cGVvZiByJiZyKXt2 YXIgbj1mLm5lc3RlZFByb3BlcnR5KHQscikuZ2V0KCk7cmV0dXJuISFBcnJheS5pc0FycmF5 KG4pJiZufXJldHVybiEhQXJyYXkuaXNBcnJheShyKSYmcn0sZi5taW5FeHRlbmQ9ZnVuY3Rp b24odCxlKXt2YXIgcj17fTsib2JqZWN0IiE9dHlwZW9mIGUmJihlPXt9KTt2YXIgbixpLGEs bz1PYmplY3Qua2V5cyh0KTtmb3Iobj0wO248by5sZW5ndGg7bisrKWE9dFtpPW9bbl1dLCJf IiE9PWkuY2hhckF0KDApJiYiZnVuY3Rpb24iIT10eXBlb2YgYSYmKCJtb2R1bGUiPT09aT9y W2ldPWE6QXJyYXkuaXNBcnJheShhKT9yW2ldPSJjb2xvcnNjYWxlIj09PWk/YS5zbGljZSgp OmEuc2xpY2UoMCwzKTpmLmlzVHlwZWRBcnJheShhKT9yW2ldPWEuc3ViYXJyYXkoMCwzKTpy W2ldPWEmJiJvYmplY3QiPT10eXBlb2YgYT9mLm1pbkV4dGVuZCh0W2ldLGVbaV0pOmEpO2Zv cihvPU9iamVjdC5rZXlzKGUpLG49MDtuPG8ubGVuZ3RoO24rKykib2JqZWN0Ij09dHlwZW9m KGE9ZVtpPW9bbl1dKSYmaSBpbiByJiYib2JqZWN0Ij09dHlwZW9mIHJbaV18fChyW2ldPWEp O3JldHVybiByfSxmLnRpdGxlQ2FzZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5jaGFyQXQoMCku dG9VcHBlckNhc2UoKSt0LnN1YnN0cigxKX0sZi5jb250YWluc0FueT1mdW5jdGlvbih0LGUp e2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKWlmKC0xIT09dC5pbmRleE9mKGVbcl0pKXJl dHVybiEwO3JldHVybiExfSxmLmlzSUU9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09d2lu ZG93Lm5hdmlnYXRvci5tc1NhdmVCbG9ifTt2YXIgTD0vVmVyc2lvblwvW1xkXC5dKy4qU2Fm YXJpLztmLmlzU2FmYXJpPWZ1bmN0aW9uKCl7cmV0dXJuIEwudGVzdCh3aW5kb3cubmF2aWdh dG9yLnVzZXJBZ2VudCl9O3ZhciBDPS9pUGFkfGlQaG9uZXxpUG9kLztmLmlzSU9TPWZ1bmN0 aW9uKCl7cmV0dXJuIEMudGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCl9O3ZhciBQ PS9GaXJlZm94XC8oXGQrKVwuXGQrLztmLmdldEZpcmVmb3hWZXJzaW9uPWZ1bmN0aW9uKCl7 dmFyIHQ9UC5leGVjKHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KTtpZih0JiYyPT09dC5s ZW5ndGgpe3ZhciBlPXBhcnNlSW50KHRbMV0pO2lmKCFpc05hTihlKSlyZXR1cm4gZX1yZXR1 cm4gbnVsbH0sZi5pc0QzU2VsZWN0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNl b2Ygbi5zZWxlY3Rpb259LGYuZW5zdXJlU2luZ2xlPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBp PXQuc2VsZWN0KGUrKHI/Ii4iK3I6IiIpKTtpZihpLnNpemUoKSlyZXR1cm4gaTt2YXIgYT10 LmFwcGVuZChlKTtyZXR1cm4gciYmYS5jbGFzc2VkKHIsITApLG4mJmEuY2FsbChuKSxhfSxm LmVuc3VyZVNpbmdsZUJ5SWQ9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9dC5zZWxlY3QoZSsi IyIrcik7aWYoaS5zaXplKCkpcmV0dXJuIGk7dmFyIGE9dC5hcHBlbmQoZSkuYXR0cigiaWQi LHIpO3JldHVybiBuJiZhLmNhbGwobiksYX0sZi5vYmplY3RGcm9tUGF0aD1mdW5jdGlvbih0 LGUpe2Zvcih2YXIgcixuPXQuc3BsaXQoIi4iKSxpPXI9e30sYT0wO2E8bi5sZW5ndGg7YSsr KXt2YXIgbz1uW2FdLHM9bnVsbCxsPW5bYV0ubWF0Y2goLyguKilcWyhbMC05XSspXF0vKTts PyhvPWxbMV0scz1sWzJdLHI9cltvXT1bXSxhPT09bi5sZW5ndGgtMT9yW3NdPWU6cltzXT17 fSxyPXJbc10pOihhPT09bi5sZW5ndGgtMT9yW29dPWU6cltvXT17fSxyPXJbb10pfXJldHVy biBpfTt2YXIgST0vXihbXlxbXC5dKylcLiguKyk/LyxPPS9eKFteXC5dKylcWyhbMC05XSsp XF0oXC4pPyguKyk/LztmLmV4cGFuZE9iamVjdFBhdGhzPWZ1bmN0aW9uKHQpe3ZhciBlLHIs bixpLGEsbyxzO2lmKCJvYmplY3QiPT10eXBlb2YgdCYmIUFycmF5LmlzQXJyYXkodCkpZm9y KHIgaW4gdCl0Lmhhc093blByb3BlcnR5KHIpJiYoKGU9ci5tYXRjaChJKSk/KGk9dFtyXSxu PWVbMV0sZGVsZXRlIHRbcl0sdFtuXT1mLmV4dGVuZERlZXBOb0FycmF5cyh0W25dfHx7fSxm Lm9iamVjdEZyb21QYXRoKHIsZi5leHBhbmRPYmplY3RQYXRocyhpKSlbbl0pKTooZT1yLm1h dGNoKE8pKT8oaT10W3JdLG49ZVsxXSxhPXBhcnNlSW50KGVbMl0pLGRlbGV0ZSB0W3JdLHRb bl09dFtuXXx8W10sIi4iPT09ZVszXT8ocz1lWzRdLG89dFtuXVthXT10W25dW2FdfHx7fSxm LmV4dGVuZERlZXBOb0FycmF5cyhvLGYub2JqZWN0RnJvbVBhdGgocyxmLmV4cGFuZE9iamVj dFBhdGhzKGkpKSkpOnRbbl1bYV09Zi5leHBhbmRPYmplY3RQYXRocyhpKSk6dFtyXT1mLmV4 cGFuZE9iamVjdFBhdGhzKHRbcl0pKTtyZXR1cm4gdH0sZi5udW1TZXBhcmF0ZT1mdW5jdGlv bih0LGUscil7aWYocnx8KHI9ITEpLCJzdHJpbmciIT10eXBlb2YgZXx8MD09PWUubGVuZ3Ro KXRocm93IG5ldyBFcnJvcigiU2VwYXJhdG9yIHN0cmluZyByZXF1aXJlZCBmb3IgZm9ybWF0 dGluZyEiKTsibnVtYmVyIj09dHlwZW9mIHQmJih0PVN0cmluZyh0KSk7dmFyIG49LyhcZCsp KFxkezN9KS8saT1lLmNoYXJBdCgwKSxhPWUuY2hhckF0KDEpLG89dC5zcGxpdCgiLiIpLHM9 b1swXSxsPW8ubGVuZ3RoPjE/aStvWzFdOiIiO2lmKGEmJihvLmxlbmd0aD4xfHxzLmxlbmd0 aD40fHxyKSlmb3IoO24udGVzdChzKTspcz1zLnJlcGxhY2UobiwiJDEiK2ErIiQyIik7cmV0 dXJuIHMrbH0sZi5URU1QTEFURV9TVFJJTkdfUkVHRVg9LyV7KFteXHMle306XSopKFs6fFx8 XVtefV0qKT99L2c7dmFyIHo9L15cdyokLztmLnRlbXBsYXRlU3RyaW5nPWZ1bmN0aW9uKHQs ZSl7dmFyIHI9e307cmV0dXJuIHQucmVwbGFjZShmLlRFTVBMQVRFX1NUUklOR19SRUdFWCwo ZnVuY3Rpb24odCxuKXt2YXIgaTtyZXR1cm4gei50ZXN0KG4pP2k9ZVtuXToocltuXT1yW25d fHxmLm5lc3RlZFByb3BlcnR5KGUsbikuZ2V0LGk9cltuXSgpKSxmLmlzVmFsaWRUZXh0VmFs dWUoaSk/aToiIn0pKX07dmFyIEQ9e21heDoxMCxjb3VudDowLG5hbWU6ImhvdmVydGVtcGxh dGUifTtmLmhvdmVydGVtcGxhdGVTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gQi5hcHBseShE LGFyZ3VtZW50cyl9O3ZhciBSPXttYXg6MTAsY291bnQ6MCxuYW1lOiJ0ZXh0dGVtcGxhdGUi fTtmLnRleHR0ZW1wbGF0ZVN0cmluZz1mdW5jdGlvbigpe3JldHVybiBCLmFwcGx5KFIsYXJn dW1lbnRzKX07dmFyIEY9L15bOnxcfF0vO2Z1bmN0aW9uIEIodCxlLHIpe3ZhciBuPXRoaXMs YT1hcmd1bWVudHM7ZXx8KGU9e30pO3ZhciBvPXt9O3JldHVybiB0LnJlcGxhY2UoZi5URU1Q TEFURV9TVFJJTkdfUkVHRVgsKGZ1bmN0aW9uKHQscyxsKXt2YXIgYyx1LGgscD0iX3hvdGhl ciI9PT1zfHwiX3lvdGhlciI9PT1zLGQ9Il94b3RoZXJfIj09PXN8fCJfeW90aGVyXyI9PT1z LG09InhvdGhlcl8iPT09c3x8InlvdGhlcl8iPT09cyxnPSJ4b3RoZXIiPT09c3x8InlvdGhl ciI9PT1zfHxwfHxtfHxkLHY9cztpZigocHx8ZCkmJih2PXYuc3Vic3RyaW5nKDEpKSwobXx8 ZCkmJih2PXYuc3Vic3RyaW5nKDAsdi5sZW5ndGgtMSkpLGcpe2lmKHZvaWQgMD09PShjPWVb dl0pKXJldHVybiIifWVsc2UgZm9yKGg9MztoPGEubGVuZ3RoO2grKylpZih1PWFbaF0pe2lm KHUuaGFzT3duUHJvcGVydHkodikpe2M9dVt2XTticmVha31pZih6LnRlc3Qodil8fChjPWYu bmVzdGVkUHJvcGVydHkodSx2KS5nZXQoKSwoYz1vW3ZdfHxmLm5lc3RlZFByb3BlcnR5KHUs dikuZ2V0KCkpJiYob1t2XT1jKSksdm9pZCAwIT09YylicmVha31pZih2b2lkIDA9PT1jJiZu KXJldHVybiBuLmNvdW50PG4ubWF4JiYoZi53YXJuKCJWYXJpYWJsZSAnIit2KyInIGluICIr bi5uYW1lKyIgY291bGQgbm90IGJlIGZvdW5kISIpLGM9dCksbi5jb3VudD09PW4ubWF4JiZm Lndhcm4oIlRvbyBtYW55ICIrbi5uYW1lKyIgd2FybmluZ3MgLSBhZGRpdGlvbmFsIHdhcm5p bmdzIHdpbGwgYmUgc3VwcHJlc3NlZCIpLG4uY291bnQrKyx0O2lmKGwpe3ZhciB5O2lmKCI6 Ij09PWxbMF0mJihjPSh5PXI/ci5udW1iZXJGb3JtYXQ6Zi5udW1iZXJGb3JtYXQpKGwucmVw bGFjZShGLCIiKSkoYykpLCJ8Ij09PWxbMF0pe3k9cj9yLnRpbWVGb3JtYXQ6aTt2YXIgeD1m LmRhdGVUaW1lMm1zKGMpO2M9Zi5mb3JtYXREYXRlKHgsbC5yZXBsYWNlKEYsIiIpLCExLHkp fX1lbHNle3ZhciBiPXYrIkxhYmVsIjtlLmhhc093blByb3BlcnR5KGIpJiYoYz1lW2JdKX1y ZXR1cm4gZyYmKGM9IigiK2MrIikiLChwfHxkKSYmKGM9IiAiK2MpLChtfHxkKSYmKGMrPSIg IikpLGN9KSl9Zi5zdWJwbG90U29ydD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1NYXRoLm1p bih0Lmxlbmd0aCxlLmxlbmd0aCkrMSxuPTAsaT0wLGE9MDthPHI7YSsrKXt2YXIgbz10LmNo YXJDb2RlQXQoYSl8fDAscz1lLmNoYXJDb2RlQXQoYSl8fDAsbD1vPj00OCYmbzw9NTcsYz1z Pj00OCYmczw9NTc7aWYobCYmKG49MTAqbitvLTQ4KSxjJiYoaT0xMCppK3MtNDgpLCFsfHwh Yyl7aWYobiE9PWkpcmV0dXJuIG4taTtpZihvIT09cylyZXR1cm4gby1zfX1yZXR1cm4gaS1u fTt2YXIgTj0yZTk7Zi5zZWVkUHNldWRvUmFuZG9tPWZ1bmN0aW9uKCl7Tj0yZTl9LGYucHNl dWRvUmFuZG9tPWZ1bmN0aW9uKCl7dmFyIHQ9TjtyZXR1cm4gTj0oNjkwNjkqTisxKSU0Mjk0 OTY3Mjk2LE1hdGguYWJzKE4tdCk8NDI5NDk2NzI5P2YucHNldWRvUmFuZG9tKCk6Ti80Mjk0 OTY3Mjk2fSxmLmZpbGxUZXh0PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1BcnJheS5pc0FycmF5 KHIpP2Z1bmN0aW9uKHQpe3IucHVzaCh0KX06ZnVuY3Rpb24odCl7ci50ZXh0PXR9LGk9Zi5l eHRyYWN0T3B0aW9uKHQsZSwiaHR4IiwiaG92ZXJ0ZXh0Iik7aWYoZi5pc1ZhbGlkVGV4dFZh bHVlKGkpKXJldHVybiBuKGkpO3ZhciBhPWYuZXh0cmFjdE9wdGlvbih0LGUsInR4IiwidGV4 dCIpO3JldHVybiBmLmlzVmFsaWRUZXh0VmFsdWUoYSk/bihhKTp2b2lkIDB9LGYuaXNWYWxp ZFRleHRWYWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gdHx8MD09PXR9LGYuZm9ybWF0UGVyY2Vu dD1mdW5jdGlvbih0LGUpe2U9ZXx8MDtmb3IodmFyIHI9KE1hdGgucm91bmQoMTAwKnQqTWF0 aC5wb3coMTAsZSkpKk1hdGgucG93KC4xLGUpKS50b0ZpeGVkKGUpKyIlIixuPTA7bjxlO24r KyktMSE9PXIuaW5kZXhPZigiLiIpJiYocj0ocj1yLnJlcGxhY2UoIjAlIiwiJSIpKS5yZXBs YWNlKCIuJSIsIiUiKSk7cmV0dXJuIHJ9LGYuaXNIaWRkZW49ZnVuY3Rpb24odCl7dmFyIGU9 d2luZG93LmdldENvbXB1dGVkU3R5bGUodCkuZGlzcGxheTtyZXR1cm4hZXx8Im5vbmUiPT09 ZX0sZi5zdHJUcmFuc2xhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdHx8ZT8idHJhbnNsYXRl KCIrdCsiLCIrZSsiKSI6IiJ9LGYuc3RyUm90YXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0PyJy b3RhdGUoIit0KyIpIjoiIn0sZi5zdHJTY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gMSE9PXQ/ InNjYWxlKCIrdCsiKSI6IiJ9LGYuZ2V0VGV4dFRyYW5zZm9ybT1mdW5jdGlvbih0KXt2YXIg ZT10Lm5vQ2VudGVyLHI9dC50ZXh0WCxuPXQudGV4dFksaT10LnRhcmdldFgsYT10LnRhcmdl dFksbz10LmFuY2hvclh8fDAscz10LmFuY2hvcll8fDAsbD10LnJvdGF0ZSxjPXQuc2NhbGU7 cmV0dXJuIGM/Yz4xJiYoYz0xKTpjPTAsZi5zdHJUcmFuc2xhdGUoaS1jKihyK28pLGEtYyoo bitzKSkrZi5zdHJTY2FsZShjKSsobD8icm90YXRlKCIrbCsoZT8iIjoiICIrcisiICIrbikr IikiOiIiKX0sZi5lbnN1cmVVbmlmb3JtRm9udFNpemU9ZnVuY3Rpb24odCxlKXt2YXIgcj1m LmV4dGVuZEZsYXQoe30sZSk7cmV0dXJuIHIuc2l6ZT1NYXRoLm1heChlLnNpemUsdC5fZnVs bExheW91dC51bmlmb3JtdGV4dC5taW5zaXplfHwwKSxyfSxmLmpvaW4yPWZ1bmN0aW9uKHQs ZSxyKXt2YXIgbj10Lmxlbmd0aDtyZXR1cm4gbj4xP3Quc2xpY2UoMCwtMSkuam9pbihlKSty K3Rbbi0xXTp0LmpvaW4oZSl9LGYuYmlnRm9udD1mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5y b3VuZCgxLjIqdCl9O3ZhciBqPWYuZ2V0RmlyZWZveFZlcnNpb24oKSxVPW51bGwhPT1qJiZq PDg2O2YuZ2V0UG9zaXRpb25Gcm9tRDNFdmVudD1mdW5jdGlvbigpe3JldHVybiBVP1tuLmV2 ZW50LmxheWVyWCxuLmV2ZW50LmxheWVyWV06W24uZXZlbnQub2Zmc2V0WCxuLmV2ZW50Lm9m ZnNldFldfX0seyIuLi9jb25zdGFudHMvbnVtZXJpY2FsIjo0NzksIi4vYW5jaG9yX3V0aWxz Ijo0ODMsIi4vYW5nbGVzIjo0ODQsIi4vYXJyYXkiOjQ4NSwiLi9jbGVhbl9udW1iZXIiOjQ4 NiwiLi9jbGVhcl9yZXNwb25zaXZlIjo0ODgsIi4vY29lcmNlIjo0ODksIi4vZGF0ZXMiOjQ5 MCwiLi9kb20iOjQ5MSwiLi9leHRlbmQiOjQ5MywiLi9maWx0ZXJfdW5pcXVlIjo0OTQsIi4v ZmlsdGVyX3Zpc2libGUiOjQ5NSwiLi9nZW9tZXRyeTJkIjo0OTgsIi4vaWRlbnRpdHkiOjUw MSwiLi9pbmNyZW1lbnQiOjUwMiwiLi9pc19wbGFpbl9vYmplY3QiOjUwNCwiLi9rZXllZF9j b250YWluZXIiOjUwNSwiLi9sb2NhbGl6ZSI6NTA2LCIuL2xvZ2dlcnMiOjUwNywiLi9tYWtl X3RyYWNlX2dyb3VwcyI6NTA4LCIuL21hdHJpeCI6NTA5LCIuL21vZCI6NTEwLCIuL25lc3Rl ZF9wcm9wZXJ0eSI6NTExLCIuL25vb3AiOjUxMiwiLi9ub3RpZmllciI6NTEzLCIuL3ByZXNl cnZlX2RyYXdpbmdfYnVmZmVyIjo1MTcsIi4vcHVzaF91bmlxdWUiOjUxOCwiLi9yZWdleCI6 NTIwLCIuL3JlbGF0aXZlX2F0dHIiOjUyMSwiLi9yZWxpbmtfcHJpdmF0ZSI6NTIyLCIuL3Nl YXJjaCI6NTIzLCIuL3NvcnRfb2JqZWN0X2tleXMiOjUyNiwiLi9zdGF0cyI6NTI3LCIuL3Ro cm90dGxlIjo1MzAsIi4vdG9fbG9nX3JhbmdlIjo1MzEsIkBwbG90bHkvZDMiOjU4LCJkMy1m b3JtYXQiOjExMiwiZDMtdGltZS1mb3JtYXQiOjEyMCwiZmFzdC1pc251bWVyaWMiOjE5MH1d LDUwNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24o dCl7cmV0dXJuIHdpbmRvdyYmd2luZG93LnByb2Nlc3MmJndpbmRvdy5wcm9jZXNzLnZlcnNp b25zPyJbb2JqZWN0IE9iamVjdF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxs KHQpOiJbb2JqZWN0IE9iamVjdF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxs KHQpJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkuaGFzT3duUHJvcGVydHkoImhhc093blBy b3BlcnR5Iil9fSx7fV0sNTA1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4vbmVzdGVkX3Byb3BlcnR5IiksaT0vXlx3KiQvO2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUscixhKXt2YXIgbyxzLGw7cj1yfHwibmFtZSIsYT1hfHwidmFsdWUiO3ZhciBjPXt9O2Um JmUubGVuZ3RoPyhsPW4odCxlKSxzPWwuZ2V0KCkpOnM9dCxlPWV8fCIiO3ZhciB1PXt9O2lm KHMpZm9yKG89MDtvPHMubGVuZ3RoO28rKyl1W3Nbb11bcl1dPW87dmFyIGY9aS50ZXN0KGEp LGg9e3NldDpmdW5jdGlvbih0LGUpe3ZhciBpPW51bGw9PT1lPzQ6MDtpZighcyl7aWYoIWx8 fDQ9PT1pKXJldHVybjtzPVtdLGwuc2V0KHMpfXZhciBvPXVbdF07aWYodm9pZCAwPT09byl7 aWYoND09PWkpcmV0dXJuO2l8PTMsbz1zLmxlbmd0aCx1W3RdPW99ZWxzZSBlIT09KGY/c1tv XVthXTpuKHNbb10sYSkuZ2V0KCkpJiYoaXw9Mik7dmFyIHA9c1tvXT1zW29dfHx7fTtyZXR1 cm4gcFtyXT10LGY/cFthXT1lOm4ocCxhKS5zZXQoZSksbnVsbCE9PWUmJihpJj0tNSksY1tv XT1jW29dfGksaH0sZ2V0OmZ1bmN0aW9uKHQpe2lmKHMpe3ZhciBlPXVbdF07cmV0dXJuIHZv aWQgMD09PWU/dm9pZCAwOmY/c1tlXVthXTpuKHNbZV0sYSkuZ2V0KCl9fSxyZW5hbWU6ZnVu Y3Rpb24odCxlKXt2YXIgbj11W3RdO3JldHVybiB2b2lkIDA9PT1ufHwoY1tuXT0xfGNbbl0s dVtlXT1uLGRlbGV0ZSB1W3RdLHNbbl1bcl09ZSksaH0scmVtb3ZlOmZ1bmN0aW9uKHQpe3Zh ciBlPXVbdF07aWYodm9pZCAwPT09ZSlyZXR1cm4gaDt2YXIgaT1zW2VdO2lmKE9iamVjdC5r ZXlzKGkpLmxlbmd0aD4yKXJldHVybiBjW2VdPTJ8Y1tlXSxoLnNldCh0LG51bGwpO2lmKGYp e2ZvcihvPWU7bzxzLmxlbmd0aDtvKyspY1tvXT0zfGNbb107Zm9yKG89ZTtvPHMubGVuZ3Ro O28rKyl1W3Nbb11bcl1dLS07cy5zcGxpY2UoZSwxKSxkZWxldGUgdVt0XX1lbHNlIG4oaSxh KS5zZXQobnVsbCksY1tlXT02fGNbZV07cmV0dXJuIGh9LGNvbnN0cnVjdFVwZGF0ZTpmdW5j dGlvbigpe2Zvcih2YXIgdCxpLG89e30sbD1PYmplY3Qua2V5cyhjKSx1PTA7dTxsLmxlbmd0 aDt1KyspaT1sW3VdLHQ9ZSsiWyIraSsiXSIsc1tpXT8oMSZjW2ldJiYob1t0KyIuIityXT1z W2ldW3JdKSwyJmNbaV0mJihvW3QrIi4iK2FdPWY/NCZjW2ldP251bGw6c1tpXVthXTo0JmNb aV0/bnVsbDpuKHNbaV0sYSkuZ2V0KCkpKTpvW3RdPW51bGw7cmV0dXJuIG99fTtyZXR1cm4g aH19LHsiLi9uZXN0ZWRfcHJvcGVydHkiOjUxMX1dLDUwNjpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9yZWdpc3RyeSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUpe2Zvcih2YXIgcj10Ll9jb250ZXh0LmxvY2FsZSxpPTA7aTwyO2krKyl7Zm9yKHZhciBh PXQuX2NvbnRleHQubG9jYWxlcyxvPTA7bzwyO28rKyl7dmFyIHM9KGFbcl18fHt9KS5kaWN0 aW9uYXJ5O2lmKHMpe3ZhciBsPXNbZV07aWYobClyZXR1cm4gbH1hPW4ubG9jYWxlUmVnaXN0 cnl9dmFyIGM9ci5zcGxpdCgiLSIpWzBdO2lmKGM9PT1yKWJyZWFrO3I9Y31yZXR1cm4gZX19 LHsiLi4vcmVnaXN0cnkiOjYzOH1dLDUwNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbj10KCIuLi9wbG90X2FwaS9wbG90X2NvbmZpZyIpLmRmbHRDb25maWcsaT10KCIu L25vdGlmaWVyIiksYT1lLmV4cG9ydHM9e307YS5sb2c9ZnVuY3Rpb24oKXt2YXIgdDtpZihu LmxvZ2dpbmc+MSl7dmFyIGU9WyJMT0c6Il07Zm9yKHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7 dCsrKWUucHVzaChhcmd1bWVudHNbdF0pO2NvbnNvbGUudHJhY2UuYXBwbHkoY29uc29sZSxl KX1pZihuLm5vdGlmeU9uTG9nZ2luZz4xKXt2YXIgcj1bXTtmb3IodD0wO3Q8YXJndW1lbnRz Lmxlbmd0aDt0Kyspci5wdXNoKGFyZ3VtZW50c1t0XSk7aShyLmpvaW4oIjxicj4iKSwibG9u ZyIpfX0sYS53YXJuPWZ1bmN0aW9uKCl7dmFyIHQ7aWYobi5sb2dnaW5nPjApe3ZhciBlPVsi V0FSTjoiXTtmb3IodD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZS5wdXNoKGFyZ3VtZW50 c1t0XSk7Y29uc29sZS50cmFjZS5hcHBseShjb25zb2xlLGUpfWlmKG4ubm90aWZ5T25Mb2dn aW5nPjApe3ZhciByPVtdO2Zvcih0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKylyLnB1c2go YXJndW1lbnRzW3RdKTtpKHIuam9pbigiPGJyPiIpLCJzdGljayIpfX0sYS5lcnJvcj1mdW5j dGlvbigpe3ZhciB0O2lmKG4ubG9nZ2luZz4wKXt2YXIgZT1bIkVSUk9SOiJdO2Zvcih0PTA7 dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllLnB1c2goYXJndW1lbnRzW3RdKTtjb25zb2xlLmVy cm9yLmFwcGx5KGNvbnNvbGUsZSl9aWYobi5ub3RpZnlPbkxvZ2dpbmc+MCl7dmFyIHI9W107 Zm9yKHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXIucHVzaChhcmd1bWVudHNbdF0pO2ko ci5qb2luKCI8YnI+IiksInN0aWNrIil9fX0seyIuLi9wbG90X2FwaS9wbG90X2NvbmZpZyI6 NTQxLCIuL25vdGlmaWVyIjo1MTN9XSw1MDg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiQHBsb3RseS9kMyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFy IGk9dC5zZWxlY3RBbGwoImcuIityLnJlcGxhY2UoL1xzL2csIi4iKSkuZGF0YShlLChmdW5j dGlvbih0KXtyZXR1cm4gdFswXS50cmFjZS51aWR9KSk7aS5leGl0KCkucmVtb3ZlKCksaS5l bnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIixyKSxpLm9yZGVyKCk7dmFyIGE9dC5j bGFzc2VkKCJyYW5nZXBsb3QiKT8ibm9kZVJhbmdlUGxvdDMiOiJub2RlMyI7cmV0dXJuIGku ZWFjaCgoZnVuY3Rpb24odCl7dFswXVthXT1uLnNlbGVjdCh0aGlzKX0pKSxpfX0seyJAcGxv dGx5L2QzIjo1OH1dLDUwOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCJnbC1tYXQ0Iik7ci5pbml0MmRBcnJheT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1uZXcg QXJyYXkodCksbj0wO248dDtuKyspcltuXT1uZXcgQXJyYXkoZSk7cmV0dXJuIHJ9LHIudHJh bnNwb3NlUmFnZ2VkPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbj0wLGk9dC5sZW5ndGg7Zm9yKGU9 MDtlPGk7ZSsrKW49TWF0aC5tYXgobix0W2VdLmxlbmd0aCk7dmFyIGE9bmV3IEFycmF5KG4p O2ZvcihlPTA7ZTxuO2UrKylmb3IoYVtlXT1uZXcgQXJyYXkoaSkscj0wO3I8aTtyKyspYVtl XVtyXT10W3JdW2VdO3JldHVybiBhfSxyLmRvdD1mdW5jdGlvbih0LGUpe2lmKCF0Lmxlbmd0 aHx8IWUubGVuZ3RofHx0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiBudWxsO3ZhciBuLGks YT10Lmxlbmd0aDtpZih0WzBdLmxlbmd0aClmb3Iobj1uZXcgQXJyYXkoYSksaT0wO2k8YTtp KyspbltpXT1yLmRvdCh0W2ldLGUpO2Vsc2UgaWYoZVswXS5sZW5ndGgpe3ZhciBvPXIudHJh bnNwb3NlUmFnZ2VkKGUpO2ZvcihuPW5ldyBBcnJheShvLmxlbmd0aCksaT0wO2k8by5sZW5n dGg7aSsrKW5baV09ci5kb3QodCxvW2ldKX1lbHNlIGZvcihuPTAsaT0wO2k8YTtpKyspbis9 dFtpXSplW2ldO3JldHVybiBufSxyLnRyYW5zbGF0aW9uTWF0cml4PWZ1bmN0aW9uKHQsZSl7 cmV0dXJuW1sxLDAsdF0sWzAsMSxlXSxbMCwwLDFdXX0sci5yb3RhdGlvbk1hdHJpeD1mdW5j dGlvbih0KXt2YXIgZT10Kk1hdGguUEkvMTgwO3JldHVybltbTWF0aC5jb3MoZSksLU1hdGgu c2luKGUpLDBdLFtNYXRoLnNpbihlKSxNYXRoLmNvcyhlKSwwXSxbMCwwLDFdXX0sci5yb3Rh dGlvblhZTWF0cml4PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gci5kb3Qoci5kb3Qoci50cmFu c2xhdGlvbk1hdHJpeChlLG4pLHIucm90YXRpb25NYXRyaXgodCkpLHIudHJhbnNsYXRpb25N YXRyaXgoLWUsLW4pKX0sci5hcHBseTNEVHJhbnNmb3JtPWZ1bmN0aW9uKHQpe3JldHVybiBm dW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cyxuPTE9PT1hcmd1bWVudHMubGVuZ3RoP2VbMF06 W2VbMF0sZVsxXSxlWzJdfHwwXTtyZXR1cm4gci5kb3QodCxbblswXSxuWzFdLG5bMl0sMV0p LnNsaWNlKDAsMyl9fSxyLmFwcGx5MkRUcmFuc2Zvcm09ZnVuY3Rpb24odCl7cmV0dXJuIGZ1 bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzOzM9PT1lLmxlbmd0aCYmKGU9ZVswXSk7dmFyIG49 MT09PWFyZ3VtZW50cy5sZW5ndGg/ZVswXTpbZVswXSxlWzFdXTtyZXR1cm4gci5kb3QodCxb blswXSxuWzFdLDFdKS5zbGljZSgwLDIpfX0sci5hcHBseTJEVHJhbnNmb3JtMj1mdW5jdGlv bih0KXt2YXIgZT1yLmFwcGx5MkRUcmFuc2Zvcm0odCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3Jl dHVybiBlKHQuc2xpY2UoMCwyKSkuY29uY2F0KGUodC5zbGljZSgyLDQpKSl9fSxyLmNvbnZl cnRDc3NNYXRyaXg9ZnVuY3Rpb24odCl7aWYodCl7dmFyIGU9dC5sZW5ndGg7aWYoMTY9PT1l KXJldHVybiB0O2lmKDY9PT1lKXJldHVyblt0WzBdLHRbMV0sMCwwLHRbMl0sdFszXSwwLDAs MCwwLDEsMCx0WzRdLHRbNV0sMCwxXX1yZXR1cm5bMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAs MCwwLDAsMV19LHIuaW52ZXJzZVRyYW5zZm9ybU1hdHJpeD1mdW5jdGlvbih0KXt2YXIgZT1b XTtyZXR1cm4gbi5pbnZlcnQoZSx0KSxbW2VbMF0sZVsxXSxlWzJdLGVbM11dLFtlWzRdLGVb NV0sZVs2XSxlWzddXSxbZVs4XSxlWzldLGVbMTBdLGVbMTFdXSxbZVsxMl0sZVsxM10sZVsx NF0sZVsxNV1dXX19LHsiZ2wtbWF0NCI6MjEwfV0sNTEwOltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO2UuZXhwb3J0cz17bW9kOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dCVlO3JldHVy biByPDA/citlOnJ9LG1vZEhhbGY6ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5hYnModCk+ ZS8yP3QtTWF0aC5yb3VuZCh0L2UpKmU6dH19fSx7fV0sNTExOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksaT10KCIuL2FycmF5Iiku aXNBcnJheU9yVHlwZWRBcnJheTtmdW5jdGlvbiBhKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7 dmFyIHIsbixvLHMsbCxjPXQ7Zm9yKHM9MDtzPGUubGVuZ3RoLTE7cysrKXtpZigtMT09PShy PWVbc10pKXtmb3Iobj0hMCxvPVtdLGw9MDtsPGMubGVuZ3RoO2wrKylvW2xdPWEoY1tsXSxl LnNsaWNlKHMrMSkpKCksb1tsXSE9PW9bMF0mJihuPSExKTtyZXR1cm4gbj9vWzBdOm99aWYo Im51bWJlciI9PXR5cGVvZiByJiYhaShjKSlyZXR1cm47aWYoIm9iamVjdCIhPXR5cGVvZihj PWNbcl0pfHxudWxsPT09YylyZXR1cm59aWYoIm9iamVjdCI9PXR5cGVvZiBjJiZudWxsIT09 YyYmbnVsbCE9PShvPWNbZVtzXV0pKXJldHVybiBvfX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxl KXtpZihuKGUpKWU9U3RyaW5nKGUpO2Vsc2UgaWYoInN0cmluZyIhPXR5cGVvZiBlfHwiWy0x XSI9PT1lLnN1YnN0cihlLmxlbmd0aC00KSl0aHJvdyJiYWQgcHJvcGVydHkgc3RyaW5nIjtm b3IodmFyIHIsaSxvLHM9MCxjPWUuc3BsaXQoIi4iKTtzPGMubGVuZ3RoOyl7aWYocj1TdHJp bmcoY1tzXSkubWF0Y2goL14oW15cW1xdXSopKChcW1wtP1swLTldKlxdKSspJC8pKXtpZihy WzFdKWNbc109clsxXTtlbHNle2lmKDAhPT1zKXRocm93ImJhZCBwcm9wZXJ0eSBzdHJpbmci O2Muc3BsaWNlKDAsMSl9Zm9yKGk9clsyXS5zdWJzdHIoMSxyWzJdLmxlbmd0aC0yKS5zcGxp dCgiXVsiKSxvPTA7bzxpLmxlbmd0aDtvKyspcysrLGMuc3BsaWNlKHMsMCxOdW1iZXIoaVtv XSkpfXMrK31yZXR1cm4ib2JqZWN0IiE9dHlwZW9mIHQ/ZnVuY3Rpb24odCxlLHIpe3JldHVy bntzZXQ6ZnVuY3Rpb24oKXt0aHJvdyJiYWQgY29udGFpbmVyIn0sZ2V0OmZ1bmN0aW9uKCl7 fSxhc3RyOmUscGFydHM6cixvYmo6dH19KHQsZSxjKTp7c2V0OmwodCxjLGUpLGdldDphKHQs YyksYXN0cjplLHBhcnRzOmMsb2JqOnR9fTt2YXIgbz0vKF58XC4pYXJnc1xbLztmdW5jdGlv biBzKHQsZSl7cmV0dXJuIHZvaWQgMD09PXR8fG51bGw9PT10JiYhZS5tYXRjaChvKX1mdW5j dGlvbiBsKHQsZSxyKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGEsbyxsPXQsaD0iIixwPVtb dCxoXV0sZD1zKG4scik7Zm9yKG89MDtvPGUubGVuZ3RoLTE7bysrKXtpZigibnVtYmVyIj09 dHlwZW9mKGE9ZVtvXSkmJiFpKGwpKXRocm93ImFycmF5IGluZGV4IGJ1dCBjb250YWluZXIg aXMgbm90IGFuIGFycmF5IjtpZigtMT09PWEpe2lmKGQ9IXUobCxlLnNsaWNlKG8rMSksbixy KSlicmVhaztyZXR1cm59aWYoIWYobCxhLGVbbysxXSxkKSlicmVhaztpZigib2JqZWN0IiE9 dHlwZW9mKGw9bFthXSl8fG51bGw9PT1sKXRocm93ImNvbnRhaW5lciBpcyBub3QgYW4gb2Jq ZWN0IjtoPWMoaCxhKSxwLnB1c2goW2wsaF0pfWlmKGQpe2lmKG89PT1lLmxlbmd0aC0xJiYo ZGVsZXRlIGxbZVtvXV0sQXJyYXkuaXNBcnJheShsKSYmK2Vbb109PWwubGVuZ3RoLTEpKWZv cig7bC5sZW5ndGgmJnZvaWQgMD09PWxbbC5sZW5ndGgtMV07KWwucG9wKCl9ZWxzZSBsW2Vb b11dPW59fWZ1bmN0aW9uIGModCxlKXt2YXIgcj1lO3JldHVybiBuKGUpP3I9IlsiK2UrIl0i OnQmJihyPSIuIitlKSx0K3J9ZnVuY3Rpb24gdSh0LGUscixuKXt2YXIgYSxvPWkociksYz0h MCx1PXIsaD1uLnJlcGxhY2UoIi0xIiwwKSxwPSFvJiZzKHIsaCksZD1lWzBdO2ZvcihhPTA7 YTx0Lmxlbmd0aDthKyspaD1uLnJlcGxhY2UoIi0xIixhKSxvJiYocD1zKHU9clthJXIubGVu Z3RoXSxoKSkscCYmKGM9ITEpLGYodCxhLGQscCkmJmwodFthXSxlLG4ucmVwbGFjZSgiLTEi LGEpKSh1KTtyZXR1cm4gY31mdW5jdGlvbiBmKHQsZSxyLG4pe2lmKHZvaWQgMD09PXRbZV0p e2lmKG4pcmV0dXJuITE7dFtlXT0ibnVtYmVyIj09dHlwZW9mIHI/W106e319cmV0dXJuITB9 fSx7Ii4vYXJyYXkiOjQ4NSwiZmFzdC1pc251bWVyaWMiOjE5MH1dLDUxMjpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt9fSx7fV0sNTEzOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIkBwbG90bHkvZDMiKSxpPXQo ImZhc3QtaXNudW1lcmljIiksYT1bXTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZigtMT09 PWEuaW5kZXhPZih0KSl7YS5wdXNoKHQpO3ZhciByPTFlMztpKGUpP3I9ZToibG9uZyI9PT1l JiYocj0zZTMpO3ZhciBvPW4uc2VsZWN0KCJib2R5Iikuc2VsZWN0QWxsKCIucGxvdGx5LW5v dGlmaWVyIikuZGF0YShbMF0pO28uZW50ZXIoKS5hcHBlbmQoImRpdiIpLmNsYXNzZWQoInBs b3RseS1ub3RpZmllciIsITApLG8uc2VsZWN0QWxsKCIubm90aWZpZXItbm90ZSIpLmRhdGEo YSkuZW50ZXIoKS5hcHBlbmQoImRpdiIpLmNsYXNzZWQoIm5vdGlmaWVyLW5vdGUiLCEwKS5z dHlsZSgib3BhY2l0eSIsMCkuZWFjaCgoZnVuY3Rpb24odCl7dmFyIGk9bi5zZWxlY3QodGhp cyk7aS5hcHBlbmQoImJ1dHRvbiIpLmNsYXNzZWQoIm5vdGlmaWVyLWNsb3NlIiwhMCkuaHRt bCgiJnRpbWVzOyIpLm9uKCJjbGljayIsKGZ1bmN0aW9uKCl7aS50cmFuc2l0aW9uKCkuY2Fs bChzKX0pKTtmb3IodmFyIGE9aS5hcHBlbmQoInAiKSxvPXQuc3BsaXQoLzxiclxzKlwvPz4v ZyksbD0wO2w8by5sZW5ndGg7bCsrKWwmJmEuYXBwZW5kKCJiciIpLGEuYXBwZW5kKCJzcGFu IikudGV4dChvW2xdKTsic3RpY2siPT09ZT9pLnRyYW5zaXRpb24oKS5kdXJhdGlvbigzNTAp LnN0eWxlKCJvcGFjaXR5IiwxKTppLnRyYW5zaXRpb24oKS5kdXJhdGlvbig3MDApLnN0eWxl KCJvcGFjaXR5IiwxKS50cmFuc2l0aW9uKCkuZGVsYXkocikuY2FsbChzKX0pKX1mdW5jdGlv biBzKHQpe3QuZHVyYXRpb24oNzAwKS5zdHlsZSgib3BhY2l0eSIsMCkuZWFjaCgiZW5kIiwo ZnVuY3Rpb24odCl7dmFyIGU9YS5pbmRleE9mKHQpOy0xIT09ZSYmYS5zcGxpY2UoZSwxKSxu LnNlbGVjdCh0aGlzKS5yZW1vdmUoKX0pKX19fSx7IkBwbG90bHkvZDMiOjU4LCJmYXN0LWlz bnVtZXJpYyI6MTkwfV0sNTE0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4vc2V0Y3Vyc29yIiksaT0iZGF0YS1zYXZlZGN1cnNvciI7ZS5leHBvcnRzPWZ1bmN0 aW9uKHQsZSl7dmFyIHI9dC5hdHRyKGkpO2lmKGUpe2lmKCFyKXtmb3IodmFyIGE9KHQuYXR0 cigiY2xhc3MiKXx8IiIpLnNwbGl0KCIgIiksbz0wO288YS5sZW5ndGg7bysrKXt2YXIgcz1h W29dOzA9PT1zLmluZGV4T2YoImN1cnNvci0iKSYmdC5hdHRyKGkscy5zdWJzdHIoNykpLmNs YXNzZWQocywhMSl9dC5hdHRyKGkpfHx0LmF0dHIoaSwiISEiKX1uKHQsZSl9ZWxzZSByJiYo dC5hdHRyKGksbnVsbCksIiEhIj09PXI/bih0KTpuKHQscikpfX0seyIuL3NldGN1cnNvciI6 NTI0fV0sNTE1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vbWF0 cml4IikuZG90LGk9dCgiLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkJBRE5VTSxhPWUuZXhw b3J0cz17fTthLnRlc3Rlcj1mdW5jdGlvbih0KXt2YXIgZSxyPXQuc2xpY2UoKSxuPXJbMF1b MF0sYT1uLG89clswXVsxXSxzPW87Zm9yKHIucHVzaChyWzBdKSxlPTE7ZTxyLmxlbmd0aDtl Kyspbj1NYXRoLm1pbihuLHJbZV1bMF0pLGE9TWF0aC5tYXgoYSxyW2VdWzBdKSxvPU1hdGgu bWluKG8scltlXVsxXSkscz1NYXRoLm1heChzLHJbZV1bMV0pO3ZhciBsLGM9ITE7NT09PXIu bGVuZ3RoJiYoclswXVswXT09PXJbMV1bMF0/clsyXVswXT09PXJbM11bMF0mJnJbMF1bMV09 PT1yWzNdWzFdJiZyWzFdWzFdPT09clsyXVsxXSYmKGM9ITAsbD1mdW5jdGlvbih0KXtyZXR1 cm4gdFswXT09PXJbMF1bMF19KTpyWzBdWzFdPT09clsxXVsxXSYmclsyXVsxXT09PXJbM11b MV0mJnJbMF1bMF09PT1yWzNdWzBdJiZyWzFdWzBdPT09clsyXVswXSYmKGM9ITAsbD1mdW5j dGlvbih0KXtyZXR1cm4gdFsxXT09PXJbMF1bMV19KSk7dmFyIHU9ITAsZj1yWzBdO2Zvcihl PTE7ZTxyLmxlbmd0aDtlKyspaWYoZlswXSE9PXJbZV1bMF18fGZbMV0hPT1yW2VdWzFdKXt1 PSExO2JyZWFrfXJldHVybnt4bWluOm4seG1heDphLHltaW46byx5bWF4OnMscHRzOnIsY29u dGFpbnM6Yz9mdW5jdGlvbih0LGUpe3ZhciByPXRbMF0sYz10WzFdO3JldHVybiEocj09PWl8 fHI8bnx8cj5hfHxjPT09aXx8YzxvfHxjPnMpJiYoIWV8fCFsKHQpKX06ZnVuY3Rpb24odCxl KXt2YXIgbD10WzBdLGM9dFsxXTtpZihsPT09aXx8bDxufHxsPmF8fGM9PT1pfHxjPG98fGM+ cylyZXR1cm4hMTt2YXIgdSxmLGgscCxkLG09ci5sZW5ndGgsZz1yWzBdWzBdLHY9clswXVsx XSx5PTA7Zm9yKHU9MTt1PG07dSsrKWlmKGY9ZyxoPXYsZz1yW3VdWzBdLHY9clt1XVsxXSwh KGw8KHA9TWF0aC5taW4oZixnKSl8fGw+TWF0aC5tYXgoZixnKXx8Yz5NYXRoLm1heChoLHYp KSlpZihjPE1hdGgubWluKGgsdikpbCE9PXAmJnkrKztlbHNle2lmKGM9PT0oZD1nPT09Zj9j OmgrKGwtZikqKHYtaCkvKGctZikpKXJldHVybiAxIT09dXx8IWU7Yzw9ZCYmbCE9PXAmJnkr K31yZXR1cm4geSUyPT0xfSxpc1JlY3Q6YyxkZWdlbmVyYXRlOnV9fSxhLmlzU2VnbWVudEJl bnQ9ZnVuY3Rpb24odCxlLHIsaSl7dmFyIGEsbyxzLGw9dFtlXSxjPVt0W3JdWzBdLWxbMF0s dFtyXVsxXS1sWzFdXSx1PW4oYyxjKSxmPU1hdGguc3FydCh1KSxoPVstY1sxXS9mLGNbMF0v Zl07Zm9yKGE9ZSsxO2E8cjthKyspaWYobz1bdFthXVswXS1sWzBdLHRbYV1bMV0tbFsxXV0s KHM9bihvLGMpKTwwfHxzPnV8fE1hdGguYWJzKG4obyxoKSk+aSlyZXR1cm4hMDtyZXR1cm4h MX0sYS5maWx0ZXI9ZnVuY3Rpb24odCxlKXt2YXIgcj1bdFswXV0sbj0wLGk9MDtmdW5jdGlv biBvKG8pe3QucHVzaChvKTt2YXIgcz1yLmxlbmd0aCxsPW47ci5zcGxpY2UoaSsxKTtmb3Io dmFyIGM9bCsxO2M8dC5sZW5ndGg7YysrKShjPT09dC5sZW5ndGgtMXx8YS5pc1NlZ21lbnRC ZW50KHQsbCxjKzEsZSkpJiYoci5wdXNoKHRbY10pLHIubGVuZ3RoPHMtMiYmKG49YyxpPXIu bGVuZ3RoLTEpLGw9Yyl9dC5sZW5ndGg+MSYmbyh0LnBvcCgpKTtyZXR1cm57YWRkUHQ6byxy YXc6dCxmaWx0ZXJlZDpyfX19LHsiLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NDc5LCIuL21h dHJpeCI6NTA5fV0sNTE2OltmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKHIpeyhmdW5jdGlv bigpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL3Nob3dfbm9fd2ViZ2xfbXNnIiksaT10KCJy ZWdsIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxhKXt2YXIgbz10Ll9mdWxsTGF5b3V0LHM9 ITA7cmV0dXJuIG8uX2dsY2FudmFzLmVhY2goKGZ1bmN0aW9uKG4pe2lmKG4ucmVnbCluLnJl Z2wucHJlbG9hZENhY2hlZENvZGUoYSk7ZWxzZSBpZighbi5waWNrfHxvLl9oYXMoInBhcmNv b3JkcyIpKXt0cnl7bi5yZWdsPWkoe2NhbnZhczp0aGlzLGF0dHJpYnV0ZXM6e2FudGlhbGlh czohbi5waWNrLHByZXNlcnZlRHJhd2luZ0J1ZmZlcjohMH0scGl4ZWxSYXRpbzp0Ll9jb250 ZXh0LnBsb3RHbFBpeGVsUmF0aW98fHIuZGV2aWNlUGl4ZWxSYXRpbyxleHRlbnNpb25zOmV8 fFtdLGNhY2hlZENvZGU6YXx8e319KX1jYXRjaCh0KXtzPSExfW4ucmVnbHx8KHM9ITEpLHMm JnRoaXMuYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIsKGZ1bmN0aW9uKGUp e3QmJnQuZW1pdCYmdC5lbWl0KCJwbG90bHlfd2ViZ2xjb250ZXh0bG9zdCIse2V2ZW50OmUs bGF5ZXI6bi5rZXl9KX0pLCExKX19KSksc3x8bih7Y29udGFpbmVyOm8uX2dsY29udGFpbmVy Lm5vZGUoKX0pLHN9fSkuY2FsbCh0aGlzKX0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlw ZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVm aW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0seyIuL3Nob3dfbm9fd2ViZ2xfbXNn Ijo1MjUscmVnbDoyODN9XSw1MTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgiZmFzdC1pc251bWVyaWMiKSxpPXQoImlzLW1vYmlsZSIpO2UuZXhwb3J0cz1mdW5j dGlvbih0KXt2YXIgZTtpZigic3RyaW5nIiE9dHlwZW9mKGU9dCYmdC5oYXNPd25Qcm9wZXJ0 eSgidXNlckFnZW50Iik/dC51c2VyQWdlbnQ6ZnVuY3Rpb24oKXt2YXIgdDsidW5kZWZpbmVk IiE9dHlwZW9mIG5hdmlnYXRvciYmKHQ9bmF2aWdhdG9yLnVzZXJBZ2VudCk7dCYmdC5oZWFk ZXJzJiYic3RyaW5nIj09dHlwZW9mIHQuaGVhZGVyc1sidXNlci1hZ2VudCJdJiYodD10Lmhl YWRlcnNbInVzZXItYWdlbnQiXSk7cmV0dXJuIHR9KCkpKXJldHVybiEwO3ZhciByPWkoe3Vh OntoZWFkZXJzOnsidXNlci1hZ2VudCI6ZX19LHRhYmxldDohMCxmZWF0dXJlRGV0ZWN0OiEx fSk7aWYoIXIpZm9yKHZhciBhPWUuc3BsaXQoIiAiKSxvPTE7bzxhLmxlbmd0aDtvKyspe2lm KC0xIT09YVtvXS5pbmRleE9mKCJTYWZhcmkiKSlmb3IodmFyIHM9by0xO3M+LTE7cy0tKXt2 YXIgbD1hW3NdO2lmKCJWZXJzaW9uLyI9PT1sLnN1YnN0cigwLDgpKXt2YXIgYz1sLnN1YnN0 cig4KS5zcGxpdCgiLiIpWzBdO2lmKG4oYykmJihjPStjKSxjPj0xMylyZXR1cm4hMH19fXJl dHVybiByfX0seyJmYXN0LWlzbnVtZXJpYyI6MTkwLCJpcy1tb2JpbGUiOjIzNH1dLDUxODpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtp ZihlIGluc3RhbmNlb2YgUmVnRXhwKXtmb3IodmFyIHI9ZS50b1N0cmluZygpLG49MDtuPHQu bGVuZ3RoO24rKylpZih0W25daW5zdGFuY2VvZiBSZWdFeHAmJnRbbl0udG9TdHJpbmcoKT09 PXIpcmV0dXJuIHQ7dC5wdXNoKGUpfWVsc2UhZSYmMCE9PWV8fC0xIT09dC5pbmRleE9mKGUp fHx0LnB1c2goZSk7cmV0dXJuIHR9fSx7fV0sNTE5OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4uL2xpYiIpLGk9dCgiLi4vcGxvdF9hcGkvcGxvdF9jb25maWci KS5kZmx0Q29uZmlnO3ZhciBhPXthZGQ6ZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgbyxzO3Qu dW5kb1F1ZXVlPXQudW5kb1F1ZXVlfHx7aW5kZXg6MCxxdWV1ZTpbXSxzZXF1ZW5jZTohMX0s cz10LnVuZG9RdWV1ZS5pbmRleCx0LmF1dG9wbGF5P3QudW5kb1F1ZXVlLmluU2VxdWVuY2V8 fCh0LmF1dG9wbGF5PSExKTooIXQudW5kb1F1ZXVlLnNlcXVlbmNlfHx0LnVuZG9RdWV1ZS5i ZWdpblNlcXVlbmNlPyhvPXt1bmRvOntjYWxsczpbXSxhcmdzOltdfSxyZWRvOntjYWxsczpb XSxhcmdzOltdfX0sdC51bmRvUXVldWUucXVldWUuc3BsaWNlKHMsdC51bmRvUXVldWUucXVl dWUubGVuZ3RoLXMsbyksdC51bmRvUXVldWUuaW5kZXgrPTEpOm89dC51bmRvUXVldWUucXVl dWVbcy0xXSx0LnVuZG9RdWV1ZS5iZWdpblNlcXVlbmNlPSExLG8mJihvLnVuZG8uY2FsbHMu dW5zaGlmdChlKSxvLnVuZG8uYXJncy51bnNoaWZ0KHIpLG8ucmVkby5jYWxscy5wdXNoKG4p LG8ucmVkby5hcmdzLnB1c2goYSkpLHQudW5kb1F1ZXVlLnF1ZXVlLmxlbmd0aD5pLnF1ZXVl TGVuZ3RoJiYodC51bmRvUXVldWUucXVldWUuc2hpZnQoKSx0LnVuZG9RdWV1ZS5pbmRleC0t KSl9LHN0YXJ0U2VxdWVuY2U6ZnVuY3Rpb24odCl7dC51bmRvUXVldWU9dC51bmRvUXVldWV8 fHtpbmRleDowLHF1ZXVlOltdLHNlcXVlbmNlOiExfSx0LnVuZG9RdWV1ZS5zZXF1ZW5jZT0h MCx0LnVuZG9RdWV1ZS5iZWdpblNlcXVlbmNlPSEwfSxzdG9wU2VxdWVuY2U6ZnVuY3Rpb24o dCl7dC51bmRvUXVldWU9dC51bmRvUXVldWV8fHtpbmRleDowLHF1ZXVlOltdLHNlcXVlbmNl OiExfSx0LnVuZG9RdWV1ZS5zZXF1ZW5jZT0hMSx0LnVuZG9RdWV1ZS5iZWdpblNlcXVlbmNl PSExfSx1bmRvOmZ1bmN0aW9uKHQpe3ZhciBlLHI7aWYoISh2b2lkIDA9PT10LnVuZG9RdWV1 ZXx8aXNOYU4odC51bmRvUXVldWUuaW5kZXgpfHx0LnVuZG9RdWV1ZS5pbmRleDw9MCkpe2Zv cih0LnVuZG9RdWV1ZS5pbmRleC0tLGU9dC51bmRvUXVldWUucXVldWVbdC51bmRvUXVldWUu aW5kZXhdLHQudW5kb1F1ZXVlLmluU2VxdWVuY2U9ITAscj0wO3I8ZS51bmRvLmNhbGxzLmxl bmd0aDtyKyspYS5wbG90RG8odCxlLnVuZG8uY2FsbHNbcl0sZS51bmRvLmFyZ3Nbcl0pO3Qu dW5kb1F1ZXVlLmluU2VxdWVuY2U9ITEsdC5hdXRvcGxheT0hMX19LHJlZG86ZnVuY3Rpb24o dCl7dmFyIGUscjtpZighKHZvaWQgMD09PXQudW5kb1F1ZXVlfHxpc05hTih0LnVuZG9RdWV1 ZS5pbmRleCl8fHQudW5kb1F1ZXVlLmluZGV4Pj10LnVuZG9RdWV1ZS5xdWV1ZS5sZW5ndGgp KXtmb3IoZT10LnVuZG9RdWV1ZS5xdWV1ZVt0LnVuZG9RdWV1ZS5pbmRleF0sdC51bmRvUXVl dWUuaW5TZXF1ZW5jZT0hMCxyPTA7cjxlLnJlZG8uY2FsbHMubGVuZ3RoO3IrKylhLnBsb3RE byh0LGUucmVkby5jYWxsc1tyXSxlLnJlZG8uYXJnc1tyXSk7dC51bmRvUXVldWUuaW5TZXF1 ZW5jZT0hMSx0LmF1dG9wbGF5PSExLHQudW5kb1F1ZXVlLmluZGV4Kyt9fX07YS5wbG90RG89 ZnVuY3Rpb24odCxlLHIpe3QuYXV0b3BsYXk9ITAscj1mdW5jdGlvbih0LGUpe2Zvcih2YXIg cixpPVtdLGE9MDthPGUubGVuZ3RoO2ErKylyPWVbYV0saVthXT1yPT09dD9yOiJvYmplY3Qi PT10eXBlb2Ygcj9BcnJheS5pc0FycmF5KHIpP24uZXh0ZW5kRGVlcChbXSxyKTpuLmV4dGVu ZERlZXBBbGwoe30scik6cjtyZXR1cm4gaX0odCxyKSxlLmFwcGx5KG51bGwscil9LGUuZXhw b3J0cz1hfSx7Ii4uL2xpYiI6NTAzLCIuLi9wbG90X2FwaS9wbG90X2NvbmZpZyI6NTQxfV0s NTIwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3IuY291bnRlcj1mdW5jdGlvbih0 LGUscixuKXt2YXIgaT0oZXx8IiIpKyhyPyIiOiIkIiksYT0hMT09PW4/IiI6Il4iO3JldHVy biJ4eSI9PT10P25ldyBSZWdFeHAoYSsieChbMi05XXxbMS05XVswLTldKyk/eShbMi05XXxb MS05XVswLTldKyk/IitpKTpuZXcgUmVnRXhwKGErdCsiKFsyLTldfFsxLTldWzAtOV0rKT8i K2kpfX0se31dLDUyMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj0vXigu KikoXC5bXlwuXFtcXV0rfFxbXGRcXSkkLyxpPS9eW15cLlxbXF1dKyQvO2UuZXhwb3J0cz1m dW5jdGlvbih0LGUpe2Zvcig7ZTspe3ZhciByPXQubWF0Y2gobik7aWYocil0PXJbMV07ZWxz ZXtpZighdC5tYXRjaChpKSl0aHJvdyBuZXcgRXJyb3IoImJhZCByZWxhdGl2ZUF0dHIgY2Fs bDoiK1t0LGVdKTt0PSIifWlmKCJeIiE9PWUuY2hhckF0KDApKWJyZWFrO2U9ZS5zbGljZSgx KX1yZXR1cm4gdCYmIlsiIT09ZS5jaGFyQXQoMCk/dCsiLiIrZTp0K2V9fSx7fV0sNTIyOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vYXJyYXkiKS5pc0FycmF5 T3JUeXBlZEFycmF5LGk9dCgiLi9pc19wbGFpbl9vYmplY3QiKTtlLmV4cG9ydHM9ZnVuY3Rp b24gdChlLHIpe2Zvcih2YXIgYSBpbiByKXt2YXIgbz1yW2FdLHM9ZVthXTtpZihzIT09bylp ZigiXyI9PT1hLmNoYXJBdCgwKXx8ImZ1bmN0aW9uIj09dHlwZW9mIG8pe2lmKGEgaW4gZSlj b250aW51ZTtlW2FdPW99ZWxzZSBpZihuKG8pJiZuKHMpJiZpKG9bMF0pKXtpZigiY3VzdG9t ZGF0YSI9PT1hfHwiaWRzIj09PWEpY29udGludWU7Zm9yKHZhciBsPU1hdGgubWluKG8ubGVu Z3RoLHMubGVuZ3RoKSxjPTA7YzxsO2MrKylzW2NdIT09b1tjXSYmaShvW2NdKSYmaShzW2Nd KSYmdChzW2NdLG9bY10pfWVsc2UgaShvKSYmaShzKSYmKHQocyxvKSxPYmplY3Qua2V5cyhz KS5sZW5ndGh8fGRlbGV0ZSBlW2FdKX19fSx7Ii4vYXJyYXkiOjQ4NSwiLi9pc19wbGFpbl9v YmplY3QiOjUwNH1dLDUyMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCJmYXN0LWlzbnVtZXJpYyIpLGk9dCgiLi9sb2dnZXJzIiksYT10KCIuL2lkZW50aXR5Iiks bz10KCIuLi9jb25zdGFudHMvbnVtZXJpY2FsIikuQkFETlVNO2Z1bmN0aW9uIHModCxlKXty ZXR1cm4gdDxlfWZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gdDw9ZX1mdW5jdGlvbiBjKHQsZSl7 cmV0dXJuIHQ+ZX1mdW5jdGlvbiB1KHQsZSl7cmV0dXJuIHQ+PWV9ci5maW5kQmluPWZ1bmN0 aW9uKHQsZSxyKXtpZihuKGUuc3RhcnQpKXJldHVybiByP01hdGguY2VpbCgodC1lLnN0YXJ0 KS9lLnNpemUtMWUtOSktMTpNYXRoLmZsb29yKCh0LWUuc3RhcnQpL2Uuc2l6ZSsxZS05KTt2 YXIgYSxvLGY9MCxoPWUubGVuZ3RoLHA9MCxkPWg+MT8oZVtoLTFdLWVbMF0pLyhoLTEpOjE7 Zm9yKG89ZD49MD9yP3M6bDpyP3U6Yyx0Kz0xZS05KmQqKHI/LTE6MSkqKGQ+PTA/MTotMSk7 ZjxoJiZwKys8MTAwOylvKGVbYT1NYXRoLmZsb29yKChmK2gpLzIpXSx0KT9mPWErMTpoPWE7 cmV0dXJuIHA+OTAmJmkubG9nKCJMb25nIGJpbmFyeSBzZWFyY2guLi4iKSxmLTF9LHIuc29y dGVyQXNjPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0sci5zb3J0ZXJEZXM9ZnVuY3Rpb24o dCxlKXtyZXR1cm4gZS10fSxyLmRpc3RpbmN0VmFscz1mdW5jdGlvbih0KXt2YXIgZSxuPXQu c2xpY2UoKTtmb3Iobi5zb3J0KHIuc29ydGVyQXNjKSxlPW4ubGVuZ3RoLTE7ZT4tMSYmbltl XT09PW87ZS0tKTtmb3IodmFyIGksYT1uW2VdLW5bMF18fDEscz1hLyhlfHwxKS8xZTQsbD1b XSxjPTA7Yzw9ZTtjKyspe3ZhciB1PW5bY10sZj11LWk7dm9pZCAwPT09aT8obC5wdXNoKHUp LGk9dSk6Zj5zJiYoYT1NYXRoLm1pbihhLGYpLGwucHVzaCh1KSxpPXUpfXJldHVybnt2YWxz OmwsbWluRGlmZjphfX0sci5yb3VuZFVwPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG4saT0w LGE9ZS5sZW5ndGgtMSxvPTAscz1yPzA6MSxsPXI/MTowLGM9cj9NYXRoLmNlaWw6TWF0aC5m bG9vcjtpPGEmJm8rKzwxMDA7KWVbbj1jKChpK2EpLzIpXTw9dD9pPW4rczphPW4tbDtyZXR1 cm4gZVtpXX0sci5zb3J0PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj0wLGk9MTtpPHQu bGVuZ3RoO2krKyl7dmFyIGE9ZSh0W2ldLHRbaS0xXSk7aWYoYTwwP3I9MTphPjAmJihuPTEp LHImJm4pcmV0dXJuIHQuc29ydChlKX1yZXR1cm4gbj90OnQucmV2ZXJzZSgpfSxyLmZpbmRJ bmRleE9mTWluPWZ1bmN0aW9uKHQsZSl7ZT1lfHxhO2Zvcih2YXIgcixuPTEvMCxpPTA7aTx0 Lmxlbmd0aDtpKyspe3ZhciBvPWUodFtpXSk7bzxuJiYobj1vLHI9aSl9cmV0dXJuIHJ9fSx7 Ii4uL2NvbnN0YW50cy9udW1lcmljYWwiOjQ3OSwiLi9pZGVudGl0eSI6NTAxLCIuL2xvZ2dl cnMiOjUwNywiZmFzdC1pc251bWVyaWMiOjE5MH1dLDUyNDpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXsodC5hdHRyKCJjbGFzcyIpfHwi Iikuc3BsaXQoIiAiKS5mb3JFYWNoKChmdW5jdGlvbihlKXswPT09ZS5pbmRleE9mKCJjdXJz b3ItIikmJnQuY2xhc3NlZChlLCExKX0pKSxlJiZ0LmNsYXNzZWQoImN1cnNvci0iK2UsITAp fX0se31dLDUyNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9j b21wb25lbnRzL2NvbG9yIiksaT1mdW5jdGlvbigpe307ZS5leHBvcnRzPWZ1bmN0aW9uKHQp e2Zvcih2YXIgZSBpbiB0KSJmdW5jdGlvbiI9PXR5cGVvZiB0W2VdJiYodFtlXT1pKTt0LmRl c3Ryb3k9ZnVuY3Rpb24oKXt0LmNvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQu Y29udGFpbmVyKX07dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ci5jbGFz c05hbWU9Im5vLXdlYmdsIixyLnN0eWxlLmN1cnNvcj0icG9pbnRlciIsci5zdHlsZS5mb250 U2l6ZT0iMjRweCIsci5zdHlsZS5jb2xvcj1uLmRlZmF1bHRzWzBdLHIuc3R5bGUucG9zaXRp b249ImFic29sdXRlIixyLnN0eWxlLmxlZnQ9ci5zdHlsZS50b3A9IjBweCIsci5zdHlsZS53 aWR0aD1yLnN0eWxlLmhlaWdodD0iMTAwJSIsci5zdHlsZVsiYmFja2dyb3VuZC1jb2xvciJd PW4ubGlnaHRMaW5lLHIuc3R5bGVbInotaW5kZXgiXT0zMDt2YXIgYT1kb2N1bWVudC5jcmVh dGVFbGVtZW50KCJwIik7cmV0dXJuIGEudGV4dENvbnRlbnQ9IldlYkdMIGlzIG5vdCBzdXBw b3J0ZWQgYnkgeW91ciBicm93c2VyIC0gdmlzaXQgaHR0cHM6Ly9nZXQud2ViZ2wub3JnIGZv ciBtb3JlIGluZm8iLGEuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIixhLnN0eWxlLnRvcD0i NTAlIixhLnN0eWxlLmxlZnQ9IjUwJSIsYS5zdHlsZS5oZWlnaHQ9IjMwJSIsYS5zdHlsZS53 aWR0aD0iNTAlIixhLnN0eWxlLm1hcmdpbj0iLTE1JSAwIDAgLTI1JSIsci5hcHBlbmRDaGls ZChhKSx0LmNvbnRhaW5lci5hcHBlbmRDaGlsZChyKSx0LmNvbnRhaW5lci5zdHlsZS5iYWNr Z3JvdW5kPSIjRkZGRkZGIix0LmNvbnRhaW5lci5vbmNsaWNrPWZ1bmN0aW9uKCl7d2luZG93 Lm9wZW4oImh0dHBzOi8vZ2V0LndlYmdsLm9yZyIpfSwhMX19LHsiLi4vY29tcG9uZW50cy9j b2xvciI6MzY2fV0sNTI2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0 cz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmtleXModCkuc29ydCgpfX0se31dLDUyNzpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIp LGk9dCgiLi9hcnJheSIpLmlzQXJyYXlPclR5cGVkQXJyYXk7ci5hZ2dOdW1zPWZ1bmN0aW9u KHQsZSxhLG8pe3ZhciBzLGw7aWYoKCFvfHxvPmEubGVuZ3RoKSYmKG89YS5sZW5ndGgpLG4o ZSl8fChlPSExKSxpKGFbMF0pKXtmb3IobD1uZXcgQXJyYXkobykscz0wO3M8bztzKyspbFtz XT1yLmFnZ051bXModCxlLGFbc10pO2E9bH1mb3Iocz0wO3M8bztzKyspbihlKT9uKGFbc10p JiYoZT10KCtlLCthW3NdKSk6ZT1hW3NdO3JldHVybiBlfSxyLmxlbj1mdW5jdGlvbih0KXty ZXR1cm4gci5hZ2dOdW1zKChmdW5jdGlvbih0KXtyZXR1cm4gdCsxfSksMCx0KX0sci5tZWFu PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV8fChlPXIubGVuKHQpKSxyLmFnZ051bXMoKGZ1bmN0 aW9uKHQsZSl7cmV0dXJuIHQrZX0pLDAsdCkvZX0sci5taWRSYW5nZT1mdW5jdGlvbih0KXtp Zih2b2lkIDAhPT10JiYwIT09dC5sZW5ndGgpcmV0dXJuKHIuYWdnTnVtcyhNYXRoLm1heCxu dWxsLHQpK3IuYWdnTnVtcyhNYXRoLm1pbixudWxsLHQpKS8yfSxyLnZhcmlhbmNlPWZ1bmN0 aW9uKHQsZSxpKXtyZXR1cm4gZXx8KGU9ci5sZW4odCkpLG4oaSl8fChpPXIubWVhbih0LGUp KSxyLmFnZ051bXMoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrTWF0aC5wb3coZS1pLDIpfSks MCx0KS9lfSxyLnN0ZGV2PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gTWF0aC5zcXJ0KHIudmFy aWFuY2UodCxlLG4pKX0sci5tZWRpYW49ZnVuY3Rpb24odCl7dmFyIGU9dC5zbGljZSgpLnNv cnQoKTtyZXR1cm4gci5pbnRlcnAoZSwuNSl9LHIuaW50ZXJwPWZ1bmN0aW9uKHQsZSl7aWYo IW4oZSkpdGhyb3cibiBzaG91bGQgYmUgYSBmaW5pdGUgbnVtYmVyIjtpZigoZT1lKnQubGVu Z3RoLS41KTwwKXJldHVybiB0WzBdO2lmKGU+dC5sZW5ndGgtMSlyZXR1cm4gdFt0Lmxlbmd0 aC0xXTt2YXIgcj1lJTE7cmV0dXJuIHIqdFtNYXRoLmNlaWwoZSldKygxLXIpKnRbTWF0aC5m bG9vcihlKV19fSx7Ii4vYXJyYXkiOjQ4NSwiZmFzdC1pc251bWVyaWMiOjE5MH1dLDUyODpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJjb2xvci1ub3JtYWxpemUi KTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQ/bih0KTpbMCwwLDAsMV19fSx7ImNv bG9yLW5vcm1hbGl6ZSI6ODl9XSw1Mjk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiQHBsb3RseS9kMyIpLGk9dCgiLi4vbGliIiksYT1pLnN0clRyYW5zbGF0ZSxv PXQoIi4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIikscz10KCIuLi9jb25zdGFudHMv YWxpZ25tZW50IikuTElORV9TUEFDSU5HLGw9LyhbXiRdKikoWyRdK1teJF0qWyRdKykoW14k XSopLztyLmNvbnZlcnRUb1RzcGFucz1mdW5jdGlvbih0LGUsbSl7dmFyIE09dC50ZXh0KCks Uz0hdC5hdHRyKCJkYXRhLW5vdGV4IikmJmUmJmUuX2NvbnRleHQudHlwZXNldE1hdGgmJiJ1 bmRlZmluZWQiIT10eXBlb2YgTWF0aEpheCYmTS5tYXRjaChsKSxDPW4uc2VsZWN0KHQubm9k ZSgpLnBhcmVudE5vZGUpO2lmKCFDLmVtcHR5KCkpe3ZhciBQPXQuYXR0cigiY2xhc3MiKT90 LmF0dHIoImNsYXNzIikuc3BsaXQoIiAiKVswXToidGV4dCI7cmV0dXJuIFArPSItbWF0aCIs Qy5zZWxlY3RBbGwoInN2Zy4iK1ApLnJlbW92ZSgpLEMuc2VsZWN0QWxsKCJnLiIrUCsiLWdy b3VwIikucmVtb3ZlKCksdC5zdHlsZSgiZGlzcGxheSIsbnVsbCkuYXR0cih7ImRhdGEtdW5m b3JtYXR0ZWQiOk0sImRhdGEtbWF0aCI6Ik4ifSksUz8oZSYmZS5fcHJvbWlzZXN8fFtdKS5w dXNoKG5ldyBQcm9taXNlKChmdW5jdGlvbihlKXt0LnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIp O3ZhciByPXBhcnNlSW50KHQubm9kZSgpLnN0eWxlLmZvbnRTaXplLDEwKSxvPXtmb250U2l6 ZTpyfTshZnVuY3Rpb24odCxlLHIpe3ZhciBhLG8scyxsLGg9cGFyc2VJbnQoKE1hdGhKYXgu dmVyc2lvbnx8IiIpLnNwbGl0KCIuIilbMF0pO2lmKDIhPT1oJiYzIT09aClyZXR1cm4gdm9p ZCBpLndhcm4oIk5vIE1hdGhKYXggdmVyc2lvbjoiLE1hdGhKYXgudmVyc2lvbik7dmFyIHA9 ZnVuY3Rpb24oKXt2YXIgcj0ibWF0aC1vdXRwdXQtIitpLnJhbmRzdHIoe30sNjQpLGE9KGw9 bi5zZWxlY3QoImJvZHkiKS5hcHBlbmQoImRpdiIpLmF0dHIoe2lkOnJ9KS5zdHlsZSh7dmlz aWJpbGl0eToiaGlkZGVuIixwb3NpdGlvbjoiYWJzb2x1dGUiLCJmb250LXNpemUiOmUuZm9u dFNpemUrInB4In0pLnRleHQodC5yZXBsYWNlKGMsIlxcbHQgIikucmVwbGFjZSh1LCJcXGd0 ICIpKSkubm9kZSgpO3JldHVybiAyPT09aD9NYXRoSmF4Lkh1Yi5UeXBlc2V0KGEpOk1hdGhK YXgudHlwZXNldChbYV0pfSxkPWZ1bmN0aW9uKCl7dmFyIGU9bC5zZWxlY3QoMj09PWg/Ii5N YXRoSmF4X1NWRyI6Ii5NYXRoSmF4IiksYT0hZS5lbXB0eSgpJiZsLnNlbGVjdCgic3ZnIiku bm9kZSgpO2lmKGEpe3ZhciBvLHM9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtvPTI9PT1o P24uc2VsZWN0KCJib2R5Iikuc2VsZWN0KCIjTWF0aEpheF9TVkdfZ2x5cGhzIik6ZS5zZWxl Y3QoImRlZnMiKSxyKGUsbyxzKX1lbHNlIGkubG9nKCJUaGVyZSB3YXMgYW4gZXJyb3IgaW4g dGhlIHRleCBzeW50YXguIix0KSxyKCk7bC5yZW1vdmUoKX07Mj09PWg/TWF0aEpheC5IdWIu UXVldWUoKGZ1bmN0aW9uKCl7cmV0dXJuIG89aS5leHRlbmREZWVwQWxsKHt9LE1hdGhKYXgu SHViLmNvbmZpZykscz1NYXRoSmF4Lkh1Yi5wcm9jZXNzU2VjdGlvbkRlbGF5LHZvaWQgMCE9 PU1hdGhKYXguSHViLnByb2Nlc3NTZWN0aW9uRGVsYXkmJihNYXRoSmF4Lkh1Yi5wcm9jZXNz U2VjdGlvbkRlbGF5PTApLE1hdGhKYXguSHViLkNvbmZpZyh7bWVzc2FnZVN0eWxlOiJub25l Iix0ZXgyamF4OntpbmxpbmVNYXRoOmZ9LGRpc3BsYXlBbGlnbjoibGVmdCJ9KX0pLChmdW5j dGlvbigpe2lmKCJTVkciIT09KGE9TWF0aEpheC5IdWIuY29uZmlnLm1lbnVTZXR0aW5ncy5y ZW5kZXJlcikpcmV0dXJuIE1hdGhKYXguSHViLnNldFJlbmRlcmVyKCJTVkciKX0pLHAsZCwo ZnVuY3Rpb24oKXtpZigiU1ZHIiE9PWEpcmV0dXJuIE1hdGhKYXguSHViLnNldFJlbmRlcmVy KGEpfSksKGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXMmJihNYXRoSmF4Lkh1Yi5wcm9j ZXNzU2VjdGlvbkRlbGF5PXMpLE1hdGhKYXguSHViLkNvbmZpZyhvKX0pKTozPT09aCYmKG89 aS5leHRlbmREZWVwQWxsKHt9LE1hdGhKYXguY29uZmlnKSxNYXRoSmF4LmNvbmZpZy50ZXh8 fChNYXRoSmF4LmNvbmZpZy50ZXg9e30pLE1hdGhKYXguY29uZmlnLnRleC5pbmxpbmVNYXRo PWYsInN2ZyIhPT0oYT1NYXRoSmF4LmNvbmZpZy5zdGFydHVwLm91dHB1dCkmJihNYXRoSmF4 LmNvbmZpZy5zdGFydHVwLm91dHB1dD0ic3ZnIiksTWF0aEpheC5zdGFydHVwLmRlZmF1bHRS ZWFkeSgpLE1hdGhKYXguc3RhcnR1cC5wcm9taXNlLnRoZW4oKGZ1bmN0aW9uKCl7cCgpLGQo KSwic3ZnIiE9PWEmJihNYXRoSmF4LmNvbmZpZy5zdGFydHVwLm91dHB1dD1hKSxNYXRoSmF4 LmNvbmZpZz1vfSkpKX0oU1syXSxvLChmdW5jdGlvbihuLGksbyl7Qy5zZWxlY3RBbGwoInN2 Zy4iK1ApLnJlbW92ZSgpLEMuc2VsZWN0QWxsKCJnLiIrUCsiLWdyb3VwIikucmVtb3ZlKCk7 dmFyIHM9biYmbi5zZWxlY3QoInN2ZyIpO2lmKCFzfHwhcy5ub2RlKCkpcmV0dXJuIEkoKSx2 b2lkIGUoKTt2YXIgbD1DLmFwcGVuZCgiZyIpLmNsYXNzZWQoUCsiLWdyb3VwIiwhMCkuYXR0 cih7InBvaW50ZXItZXZlbnRzIjoibm9uZSIsImRhdGEtdW5mb3JtYXR0ZWQiOk0sImRhdGEt bWF0aCI6IlkifSk7bC5ub2RlKCkuYXBwZW5kQ2hpbGQocy5ub2RlKCkpLGkmJmkubm9kZSgp JiZzLm5vZGUoKS5pbnNlcnRCZWZvcmUoaS5ub2RlKCkuY2xvbmVOb2RlKCEwKSxzLm5vZGUo KS5maXJzdENoaWxkKTt2YXIgYz1vLndpZHRoLHU9by5oZWlnaHQ7cy5hdHRyKHtjbGFzczpQ LGhlaWdodDp1LHByZXNlcnZlQXNwZWN0UmF0aW86InhNaW5ZTWluIG1lZXQifSkuc3R5bGUo e292ZXJmbG93OiJ2aXNpYmxlIiwicG9pbnRlci1ldmVudHMiOiJub25lIn0pO3ZhciBmPXQu bm9kZSgpLnN0eWxlLmZpbGx8fCJibGFjayIsaD1zLnNlbGVjdCgiZyIpO2guYXR0cih7Zmls bDpmLHN0cm9rZTpmfSk7dmFyIHA9aC5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCks ZD1wLndpZHRoLGc9cC5oZWlnaHQ7KGQ+Y3x8Zz51KSYmKHMuc3R5bGUoIm92ZXJmbG93Iiwi aGlkZGVuIiksZD0ocD1zLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkud2lkdGgs Zz1wLmhlaWdodCk7dmFyIHY9K3QuYXR0cigieCIpLHk9K3QuYXR0cigieSIpLHg9LShyfHx0 Lm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpLzQ7aWYoInkiPT09UFsw XSlsLmF0dHIoe3RyYW5zZm9ybToicm90YXRlKCIrWy05MCx2LHldKyIpIithKC1kLzIseC1n LzIpfSk7ZWxzZSBpZigibCI9PT1QWzBdKXk9eC1nLzI7ZWxzZSBpZigiYSI9PT1QWzBdJiYw IT09UC5pbmRleE9mKCJhdGl0bGUiKSl2PTAseT14O2Vsc2V7dmFyIGI9dC5hdHRyKCJ0ZXh0 LWFuY2hvciIpO3YtPWQqKCJtaWRkbGUiPT09Yj8uNToiZW5kIj09PWI/MTowKSx5PXkreC1n LzJ9cy5hdHRyKHt4OnYseTp5fSksbSYmbS5jYWxsKHQsbCksZShsKX0pKX0pKSk6SSgpLHR9 ZnVuY3Rpb24gSSgpe0MuZW1wdHkoKXx8KFA9dC5hdHRyKCJjbGFzcyIpKyItbWF0aCIsQy5z ZWxlY3QoInN2Zy4iK1ApLnJlbW92ZSgpKSx0LnRleHQoIiIpLnN0eWxlKCJ3aGl0ZS1zcGFj ZSIsInByZSIpLGZ1bmN0aW9uKHQsZSl7ZT1lLnJlcGxhY2UoZywiICIpO3ZhciByLGE9ITEs bD1bXSxjPS0xO2Z1bmN0aW9uIHUoKXtjKys7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVu dE5TKG8uc3ZnLCJ0c3BhbiIpO24uc2VsZWN0KGUpLmF0dHIoe2NsYXNzOiJsaW5lIixkeTpj KnMrImVtIn0pLHQuYXBwZW5kQ2hpbGQoZSkscj1lO3ZhciBpPWw7aWYobD1be25vZGU6ZX1d LGkubGVuZ3RoPjEpZm9yKHZhciBhPTE7YTxpLmxlbmd0aDthKyspZihpW2FdKX1mdW5jdGlv biBmKHQpe3ZhciBlLGk9dC50eXBlLGE9e307aWYoImEiPT09aSl7ZT0iYSI7dmFyIHM9dC50 YXJnZXQsYz10LmhyZWYsdT10LnBvcHVwO2MmJihhPXsieGxpbms6eGxpbms6c2hvdyI6Il9i bGFuayI9PT1zfHwiXyIhPT1zLmNoYXJBdCgwKT8ibmV3IjoicmVwbGFjZSIsdGFyZ2V0OnMs InhsaW5rOnhsaW5rOmhyZWYiOmN9LHUmJihhLm9uY2xpY2s9J3dpbmRvdy5vcGVuKHRoaXMu aHJlZi5iYXNlVmFsLHRoaXMudGFyZ2V0LmJhc2VWYWwsIicrdSsnIik7cmV0dXJuIGZhbHNl OycpKX1lbHNlIGU9InRzcGFuIjt0LnN0eWxlJiYoYS5zdHlsZT10LnN0eWxlKTt2YXIgZj1k b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoby5zdmcsZSk7aWYoInN1cCI9PT1pfHwic3ViIj09 PWkpe20ociwiXHUyMDBiIiksci5hcHBlbmRDaGlsZChmKTt2YXIgaD1kb2N1bWVudC5jcmVh dGVFbGVtZW50TlMoby5zdmcsInRzcGFuIik7bShoLCJcdTIwMGIiKSxuLnNlbGVjdChoKS5h dHRyKCJkeSIsZFtpXSksYS5keT1wW2ldLHIuYXBwZW5kQ2hpbGQoZiksci5hcHBlbmRDaGls ZChoKX1lbHNlIHIuYXBwZW5kQ2hpbGQoZik7bi5zZWxlY3QoZikuYXR0cihhKSxyPXQubm9k ZT1mLGwucHVzaCh0KX1mdW5jdGlvbiBtKHQsZSl7dC5hcHBlbmRDaGlsZChkb2N1bWVudC5j cmVhdGVUZXh0Tm9kZShlKSl9ZnVuY3Rpb24gTSh0KXtpZigxIT09bC5sZW5ndGgpe3ZhciBu PWwucG9wKCk7dCE9PW4udHlwZSYmaS5sb2coIlN0YXJ0IHRhZyA8IituLnR5cGUrIj4gZG9l c250IG1hdGNoIGVuZCB0YWcgPCIrdCsiPi4gUHJldGVuZGluZyBpdCBkaWQgbWF0Y2guIixl KSxyPWxbbC5sZW5ndGgtMV0ubm9kZX1lbHNlIGkubG9nKCJJZ25vcmluZyB1bmV4cGVjdGVk IGVuZCB0YWcgPC8iK3QrIj4uIixlKX14LnRlc3QoZSk/dSgpOihyPXQsbD1be25vZGU6dH1d KTtmb3IodmFyIFM9ZS5zcGxpdCh2KSxDPTA7QzxTLmxlbmd0aDtDKyspe3ZhciBQPVNbQ10s ST1QLm1hdGNoKHkpLE89SSYmSVsyXS50b0xvd2VyQ2FzZSgpLHo9aFtPXTtpZigiYnIiPT09 Tyl1KCk7ZWxzZSBpZih2b2lkIDA9PT16KW0ocixFKFApKTtlbHNlIGlmKElbMV0pTShPKTtl bHNle3ZhciBEPUlbNF0sUj17dHlwZTpPfSxGPWsoRCxiKTtpZihGPyhGPUYucmVwbGFjZShB LCIkMSBmaWxsOiIpLHomJihGKz0iOyIreikpOnomJihGPXopLEYmJihSLnN0eWxlPUYpLCJh Ij09PU8pe2E9ITA7dmFyIEI9ayhELF8pO2lmKEIpe3ZhciBOPUwoQik7TiYmKFIuaHJlZj1O LFIudGFyZ2V0PWsoRCx3KXx8Il9ibGFuayIsUi5wb3B1cD1rKEQsVCkpfX1mKFIpfX1yZXR1 cm4gYX0odC5ub2RlKCksTSkmJnQuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIiksci5w b3NpdGlvblRleHQodCksbSYmbS5jYWxsKHQpfX07dmFyIGM9Lyg8fCZsdDt8JiM2MDspL2cs dT0vKD58Jmd0O3wmIzYyOykvZzt2YXIgZj1bWyIkIiwiJCJdLFsiXFwoIiwiXFwpIl1dO3Zh ciBoPXtzdXA6ImZvbnQtc2l6ZTo3MCUiLHN1YjoiZm9udC1zaXplOjcwJSIsYjoiZm9udC13 ZWlnaHQ6Ym9sZCIsaToiZm9udC1zdHlsZTppdGFsaWMiLGE6ImN1cnNvcjpwb2ludGVyIixz cGFuOiIiLGVtOiJmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDpib2xkIn0scD17c3Vi OiIwLjNlbSIsc3VwOiItMC42ZW0ifSxkPXtzdWI6Ii0wLjIxZW0iLHN1cDoiMC40MmVtIn0s bT1bImh0dHA6IiwiaHR0cHM6IiwibWFpbHRvOiIsIiIsdm9pZCAwLCI6Il0sZz1yLk5FV0xJ TkVTPS8oXHJcbj98XG4pL2csdj0vKDxbXjw+XSo+KS8seT0vPChcLz8pKFteID5dKikoXHMr KC4qKSk/Pi9pLHg9LzxicihccysuKik/Pi9pO3IuQlJfVEFHX0FMTD0vPGJyKFxzKy4qKT8+ L2dpO3ZhciBiPS8oXnxbXHMiJ10pc3R5bGVccyo9XHMqKCIoW14iXSopOz8ifCcoW14nXSop Oz8nKS9pLF89LyhefFtccyInXSlocmVmXHMqPVxzKigiKFteIl0qKSJ8JyhbXiddKiknKS9p LHc9LyhefFtccyInXSl0YXJnZXRccyo9XHMqKCIoW14iXHNdKikifCcoW14nXHNdKiknKS9p LFQ9LyhefFtccyInXSlwb3B1cFxzKj1ccyooIihbXHc9LF0qKSJ8JyhbXHc9LF0qKScpL2k7 ZnVuY3Rpb24gayh0LGUpe2lmKCF0KXJldHVybiBudWxsO3ZhciByPXQubWF0Y2goZSksbj1y JiYoclszXXx8cls0XSk7cmV0dXJuIG4mJkUobil9dmFyIEE9LyhefDspXHMqY29sb3I6Lzty LnBsYWluVGV4dD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj12b2lkIDAhPT0oZT1lfHx7fSku bGVuJiYtMSE9PWUubGVuP2UubGVuOjEvMCxuPXZvaWQgMCE9PWUuYWxsb3dlZFRhZ3M/ZS5h bGxvd2VkVGFnczpbImJyIl0saT0iLi4uIi5sZW5ndGgsYT10LnNwbGl0KHYpLG89W10scz0i IixsPTAsYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgdT1hW2NdLGY9dS5tYXRjaCh5KSxoPWYm JmZbMl0udG9Mb3dlckNhc2UoKTtpZihoKS0xIT09bi5pbmRleE9mKGgpJiYoby5wdXNoKHUp LHM9aCk7ZWxzZXt2YXIgcD11Lmxlbmd0aDtpZihsK3A8cilvLnB1c2godSksbCs9cDtlbHNl IGlmKGw8cil7dmFyIGQ9ci1sO3MmJigiYnIiIT09c3x8ZDw9aXx8cDw9aSkmJm8ucG9wKCks cj5pP28ucHVzaCh1LnN1YnN0cigwLGQtaSkrIi4uLiIpOm8ucHVzaCh1LnN1YnN0cigwLGQp KTticmVha31zPSIifX1yZXR1cm4gby5qb2luKCIiKX07dmFyIE09e211OiJcdTAzYmMiLGFt cDoiJiIsbHQ6IjwiLGd0OiI+IixuYnNwOiJceGEwIix0aW1lczoiXHhkNyIscGx1c21uOiJc eGIxIixkZWc6Ilx4YjAifSxTPS8mKCNcZCt8I3hbXGRhLWZBLUZdK3xbYS16XSspOy9nO2Z1 bmN0aW9uIEUodCl7cmV0dXJuIHQucmVwbGFjZShTLChmdW5jdGlvbih0LGUpe3JldHVybigi IyI9PT1lLmNoYXJBdCgwKT9mdW5jdGlvbih0KXtpZih0PjExMTQxMTEpcmV0dXJuO3ZhciBl PVN0cmluZy5mcm9tQ29kZVBvaW50O2lmKGUpcmV0dXJuIGUodCk7dmFyIHI9U3RyaW5nLmZy b21DaGFyQ29kZTtyZXR1cm4gdDw9NjU1MzU/cih0KTpyKDU1MjMyKyh0Pj4xMCksdCUxMDI0 KzU2MzIwKX0oIngiPT09ZS5jaGFyQXQoMSk/cGFyc2VJbnQoZS5zdWJzdHIoMiksMTYpOnBh cnNlSW50KGUuc3Vic3RyKDEpLDEwKSk6TVtlXSl8fHR9KSl9ZnVuY3Rpb24gTCh0KXt2YXIg ZT1lbmNvZGVVUkkoZGVjb2RlVVJJKHQpKSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEi KSxuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtyLmhyZWY9dCxuLmhyZWY9ZTt2YXIg aT1yLnByb3RvY29sLGE9bi5wcm90b2NvbDtyZXR1cm4tMSE9PW0uaW5kZXhPZihpKSYmLTEh PT1tLmluZGV4T2YoYSk/ZToiIn1mdW5jdGlvbiBDKHQsZSxyKXt2YXIgbixhLG8scz1yLmhv cml6b250YWxBbGlnbixsPXIudmVydGljYWxBbGlnbnx8InRvcCIsYz10Lm5vZGUoKS5nZXRC b3VuZGluZ0NsaWVudFJlY3QoKSx1PWUubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp O3JldHVybiBhPSJib3R0b20iPT09bD9mdW5jdGlvbigpe3JldHVybiBjLmJvdHRvbS1uLmhl aWdodH06Im1pZGRsZSI9PT1sP2Z1bmN0aW9uKCl7cmV0dXJuIGMudG9wKyhjLmhlaWdodC1u LmhlaWdodCkvMn06ZnVuY3Rpb24oKXtyZXR1cm4gYy50b3B9LG89InJpZ2h0Ij09PXM/ZnVu Y3Rpb24oKXtyZXR1cm4gYy5yaWdodC1uLndpZHRofToiY2VudGVyIj09PXM/ZnVuY3Rpb24o KXtyZXR1cm4gYy5sZWZ0KyhjLndpZHRoLW4ud2lkdGgpLzJ9OmZ1bmN0aW9uKCl7cmV0dXJu IGMubGVmdH0sZnVuY3Rpb24oKXtuPXRoaXMubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVj dCgpO3ZhciB0PW8oKS11LmxlZnQsZT1hKCktdS50b3Ascz1yLmdkfHx7fTtpZihyLmdkKXtz Ll9mdWxsTGF5b3V0Ll9jYWxjSW52ZXJzZVRyYW5zZm9ybShzKTt2YXIgbD1pLmFwcGx5M0RU cmFuc2Zvcm0ocy5fZnVsbExheW91dC5faW52VHJhbnNmb3JtKSh0LGUpO3Q9bFswXSxlPWxb MV19cmV0dXJuIHRoaXMuc3R5bGUoe3RvcDplKyJweCIsbGVmdDp0KyJweCIsInotaW5kZXgi OjFlM30pLHRoaXN9fXIuY29udmVydEVudGl0aWVzPUUsci5zYW5pdGl6ZUhUTUw9ZnVuY3Rp b24odCl7dD10LnJlcGxhY2UoZywiICIpO2Zvcih2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVt ZW50KCJwIikscj1lLGk9W10sYT10LnNwbGl0KHYpLG89MDtvPGEubGVuZ3RoO28rKyl7dmFy IHM9YVtvXSxsPXMubWF0Y2goeSksYz1sJiZsWzJdLnRvTG93ZXJDYXNlKCk7aWYoYyBpbiBo KWlmKGxbMV0paS5sZW5ndGgmJihyPWkucG9wKCkpO2Vsc2V7dmFyIHU9bFs0XSxmPWsodSxi KSxwPWY/e3N0eWxlOmZ9Ont9O2lmKCJhIj09PWMpe3ZhciBkPWsodSxfKTtpZihkKXt2YXIg bT1MKGQpO2lmKG0pe3AuaHJlZj1tO3ZhciB4PWsodSx3KTt4JiYocC50YXJnZXQ9eCl9fX12 YXIgVD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGMpO3IuYXBwZW5kQ2hpbGQoVCksbi5zZWxl Y3QoVCkuYXR0cihwKSxyPVQsaS5wdXNoKFQpfWVsc2Ugci5hcHBlbmRDaGlsZChkb2N1bWVu dC5jcmVhdGVUZXh0Tm9kZShFKHMpKSl9cmV0dXJuIGUuaW5uZXJIVE1MfSxyLmxpbmVDb3Vu dD1mdW5jdGlvbih0KXtyZXR1cm4gdC5zZWxlY3RBbGwoInRzcGFuLmxpbmUiKS5zaXplKCl8 fDF9LHIucG9zaXRpb25UZXh0PWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdC5lYWNoKChmdW5j dGlvbigpe3ZhciB0PW4uc2VsZWN0KHRoaXMpO2Z1bmN0aW9uIGkoZSxyKXtyZXR1cm4gdm9p ZCAwPT09cj9udWxsPT09KHI9dC5hdHRyKGUpKSYmKHQuYXR0cihlLDApLHI9MCk6dC5hdHRy KGUscikscn12YXIgYT1pKCJ4IixlKSxvPWkoInkiLHIpOyJ0ZXh0Ij09PXRoaXMubm9kZU5h bWUmJnQuc2VsZWN0QWxsKCJ0c3Bhbi5saW5lIikuYXR0cih7eDphLHk6b30pfSkpfTtyLm1h a2VUZXh0U2hhZG93PWZ1bmN0aW9uKHQpe3ZhciBlPSIxcHggIixyPSIxcHggIixuPSIxcHgg IjtyZXR1cm4gZStyK24rdCsiLCAtIitlKyItIityK24rdCsiLCAiK2UrIi0iK3Irbit0KyIs IC0iK2UrcituK3R9LHIubWFrZUVkaXRhYmxlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS5nZCxp PWUuZGVsZWdhdGUsYT1uLmRpc3BhdGNoKCJlZGl0IiwiaW5wdXQiLCJjYW5jZWwiKSxvPWl8 fHQ7aWYodC5zdHlsZSh7InBvaW50ZXItZXZlbnRzIjppPyJub25lIjoiYWxsIn0pLDEhPT10 LnNpemUoKSl0aHJvdyBuZXcgRXJyb3IoImJvbyIpO2Z1bmN0aW9uIHMoKXshZnVuY3Rpb24o KXt2YXIgaT1uLnNlbGVjdChyKS5zZWxlY3QoIi5zdmctY29udGFpbmVyIiksbz1pLmFwcGVu ZCgiZGl2Iikscz10Lm5vZGUoKS5zdHlsZSxjPXBhcnNlRmxvYXQocy5mb250U2l6ZXx8MTIp LHU9ZS50ZXh0O3ZvaWQgMD09PXUmJih1PXQuYXR0cigiZGF0YS11bmZvcm1hdHRlZCIpKTtv LmNsYXNzZWQoInBsdWdpbi1lZGl0YWJsZSBlZGl0YWJsZSIsITApLnN0eWxlKHtwb3NpdGlv bjoiYWJzb2x1dGUiLCJmb250LWZhbWlseSI6cy5mb250RmFtaWx5fHwiQXJpYWwiLCJmb250 LXNpemUiOmMsY29sb3I6ZS5maWxsfHxzLmZpbGx8fCJibGFjayIsb3BhY2l0eToxLCJiYWNr Z3JvdW5kLWNvbG9yIjplLmJhY2tncm91bmR8fCJ0cmFuc3BhcmVudCIsb3V0bGluZToiI2Zm ZmZmZjMzIDFweCBzb2xpZCIsbWFyZ2luOlstYy84KzEsMCwwLC0xXS5qb2luKCJweCAiKSsi cHgiLHBhZGRpbmc6IjAiLCJib3gtc2l6aW5nIjoiYm9yZGVyLWJveCJ9KS5hdHRyKHtjb250 ZW50ZWRpdGFibGU6ITB9KS50ZXh0KHUpLmNhbGwoQyh0LGksZSkpLm9uKCJibHVyIiwoZnVu Y3Rpb24oKXtyLl9lZGl0aW5nPSExLHQudGV4dCh0aGlzLnRleHRDb250ZW50KS5zdHlsZSh7 b3BhY2l0eToxfSk7dmFyIGUsaT1uLnNlbGVjdCh0aGlzKS5hdHRyKCJjbGFzcyIpOyhlPWk/ Ii4iK2kuc3BsaXQoIiAiKVswXSsiLW1hdGgtZ3JvdXAiOiJbY2xhc3MqPS1tYXRoLWdyb3Vw XSIpJiZuLnNlbGVjdCh0Lm5vZGUoKS5wYXJlbnROb2RlKS5zZWxlY3QoZSkuc3R5bGUoe29w YWNpdHk6MH0pO3ZhciBvPXRoaXMudGV4dENvbnRlbnQ7bi5zZWxlY3QodGhpcykudHJhbnNp dGlvbigpLmR1cmF0aW9uKDApLnJlbW92ZSgpLG4uc2VsZWN0KGRvY3VtZW50KS5vbigibW91 c2V1cCIsbnVsbCksYS5lZGl0LmNhbGwodCxvKX0pKS5vbigiZm9jdXMiLChmdW5jdGlvbigp e3ZhciB0PXRoaXM7ci5fZWRpdGluZz0hMCxuLnNlbGVjdChkb2N1bWVudCkub24oIm1vdXNl dXAiLChmdW5jdGlvbigpe2lmKG4uZXZlbnQudGFyZ2V0PT09dClyZXR1cm4hMTtkb2N1bWVu dC5hY3RpdmVFbGVtZW50PT09by5ub2RlKCkmJm8ubm9kZSgpLmJsdXIoKX0pKX0pKS5vbigi a2V5dXAiLChmdW5jdGlvbigpezI3PT09bi5ldmVudC53aGljaD8oci5fZWRpdGluZz0hMSx0 LnN0eWxlKHtvcGFjaXR5OjF9KSxuLnNlbGVjdCh0aGlzKS5zdHlsZSh7b3BhY2l0eTowfSku b24oImJsdXIiLChmdW5jdGlvbigpe3JldHVybiExfSkpLnRyYW5zaXRpb24oKS5yZW1vdmUo KSxhLmNhbmNlbC5jYWxsKHQsdGhpcy50ZXh0Q29udGVudCkpOihhLmlucHV0LmNhbGwodCx0 aGlzLnRleHRDb250ZW50KSxuLnNlbGVjdCh0aGlzKS5jYWxsKEModCxpLGUpKSl9KSkub24o ImtleWRvd24iLChmdW5jdGlvbigpezEzPT09bi5ldmVudC53aGljaCYmdGhpcy5ibHVyKCl9 KSkuY2FsbChsKX0oKSx0LnN0eWxlKHtvcGFjaXR5OjB9KTt2YXIgaSxzPW8uYXR0cigiY2xh c3MiKTsoaT1zPyIuIitzLnNwbGl0KCIgIilbMF0rIi1tYXRoLWdyb3VwIjoiW2NsYXNzKj0t bWF0aC1ncm91cF0iKSYmbi5zZWxlY3QodC5ub2RlKCkucGFyZW50Tm9kZSkuc2VsZWN0KGkp LnN0eWxlKHtvcGFjaXR5OjB9KX1mdW5jdGlvbiBsKHQpe3ZhciBlPXQubm9kZSgpLHI9ZG9j dW1lbnQuY3JlYXRlUmFuZ2UoKTtyLnNlbGVjdE5vZGVDb250ZW50cyhlKTt2YXIgbj13aW5k b3cuZ2V0U2VsZWN0aW9uKCk7bi5yZW1vdmVBbGxSYW5nZXMoKSxuLmFkZFJhbmdlKHIpLGUu Zm9jdXMoKX1yZXR1cm4gZS5pbW1lZGlhdGU/cygpOm8ub24oImNsaWNrIixzKSxuLnJlYmlu ZCh0LGEsIm9uIil9fSx7Ii4uL2NvbnN0YW50cy9hbGlnbm1lbnQiOjQ3MSwiLi4vY29uc3Rh bnRzL3htbG5zX25hbWVzcGFjZXMiOjQ4MCwiLi4vbGliIjo1MDMsIkBwbG90bHkvZDMiOjU4 fV0sNTMwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXt9O2Z1bmN0aW9u IGkodCl7dCYmbnVsbCE9PXQudGltZXImJihjbGVhclRpbWVvdXQodC50aW1lciksdC50aW1l cj1udWxsKX1yLnRocm90dGxlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgYT1uW3RdLG89RGF0ZS5u b3coKTtpZighYSl7Zm9yKHZhciBzIGluIG4pbltzXS50czxvLTZlNCYmZGVsZXRlIG5bc107 YT1uW3RdPXt0czowLHRpbWVyOm51bGx9fWZ1bmN0aW9uIGwoKXtyKCksYS50cz1EYXRlLm5v dygpLGEub25Eb25lJiYoYS5vbkRvbmUoKSxhLm9uRG9uZT1udWxsKX1pKGEpLG8+YS50cytl P2woKTphLnRpbWVyPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7bCgpLGEudGltZXI9bnVsbH0p LGUpfSxyLmRvbmU9ZnVuY3Rpb24odCl7dmFyIGU9blt0XTtyZXR1cm4gZSYmZS50aW1lcj9u ZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7dmFyIHI9ZS5vbkRvbmU7ZS5vbkRvbmU9ZnVuY3Rp b24oKXtyJiZyKCksdCgpLGUub25Eb25lPW51bGx9fSkpOlByb21pc2UucmVzb2x2ZSgpfSxy LmNsZWFyPWZ1bmN0aW9uKHQpe2lmKHQpaShuW3RdKSxkZWxldGUgblt0XTtlbHNlIGZvcih2 YXIgZSBpbiBuKXIuY2xlYXIoZSl9fSx7fV0sNTMxOltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSl7aWYodD4wKXJldHVybiBNYXRoLmxvZyh0KS9NYXRoLkxOMTA7dmFyIHI9TWF0aC5sb2co TWF0aC5taW4oZVswXSxlWzFdKSkvTWF0aC5MTjEwO3JldHVybiBuKHIpfHwocj1NYXRoLmxv ZyhNYXRoLm1heChlWzBdLGVbMV0pKS9NYXRoLkxOMTAtNikscn19LHsiZmFzdC1pc251bWVy aWMiOjE5MH1dLDUzMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1lLmV4 cG9ydHM9e30saT10KCIuLi9wbG90cy9nZW8vY29uc3RhbnRzIikubG9jYXRpb25tb2RlVG9M YXllcixhPXQoInRvcG9qc29uLWNsaWVudCIpLmZlYXR1cmU7bi5nZXRUb3BvanNvbk5hbWU9 ZnVuY3Rpb24odCl7cmV0dXJuW3Quc2NvcGUucmVwbGFjZSgvIC9nLCItIiksIl8iLHQucmVz b2x1dGlvbi50b1N0cmluZygpLCJtIl0uam9pbigiIil9LG4uZ2V0VG9wb2pzb25QYXRoPWZ1 bmN0aW9uKHQsZSl7cmV0dXJuIHQrZSsiLmpzb24ifSxuLmdldFRvcG9qc29uRmVhdHVyZXM9 ZnVuY3Rpb24odCxlKXt2YXIgcj1pW3QubG9jYXRpb25tb2RlXSxuPWUub2JqZWN0c1tyXTty ZXR1cm4gYShlLG4pLmZlYXR1cmVzfX0seyIuLi9wbG90cy9nZW8vY29uc3RhbnRzIjo1ODcs InRvcG9qc29uLWNsaWVudCI6MzE1fV0sNTMzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO2UuZXhwb3J0cz17bW9kdWxlVHlwZToibG9jYWxlIixuYW1lOiJlbi1VUyIsZGljdGlv bmFyeTp7IkNsaWNrIHRvIGVudGVyIENvbG9yc2NhbGUgdGl0bGUiOiJDbGljayB0byBlbnRl ciBDb2xvcnNjYWxlIHRpdGxlIn0sZm9ybWF0OntkYXRlOiIlbS8lZC8lWSJ9fX0se31dLDUz NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e21vZHVsZVR5cGU6 ImxvY2FsZSIsbmFtZToiZW4iLGRpY3Rpb25hcnk6eyJDbGljayB0byBlbnRlciBDb2xvcnNj YWxlIHRpdGxlIjoiQ2xpY2sgdG8gZW50ZXIgQ29sb3Vyc2NhbGUgdGl0bGUifSxmb3JtYXQ6 e2RheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNk YXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLHNob3J0RGF5czpbIlN1biIsIk1vbiIsIlR1ZSIs IldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLG1vbnRoczpbIkphbnVhcnkiLCJGZWJydWFyeSIs Ik1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJl ciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sc2hvcnRNb250aHM6WyJKYW4i LCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3Qi LCJOb3YiLCJEZWMiXSxwZXJpb2RzOlsiQU0iLCJQTSJdLGRhdGVUaW1lOiIlYSAlYiAlZSAl WCAlWSIsZGF0ZToiJWQvJW0vJVkiLHRpbWU6IiVIOiVNOiVTIixkZWNpbWFsOiIuIix0aG91 c2FuZHM6IiwiLGdyb3VwaW5nOlszXSxjdXJyZW5jeTpbIiQiLCIiXSx5ZWFyOiIlWSIsbW9u dGg6IiViICVZIixkYXlNb250aDoiJWIgJS1kIixkYXlNb250aFllYXI6IiViICUtZCwgJVki fX19LHt9XSw1MzU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4v cmVnaXN0cnkiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHIsaT1uLmxheW91 dEFycmF5Q29udGFpbmVycyxhPW4ubGF5b3V0QXJyYXlSZWdleGVzLG89dC5zcGxpdCgiWyIp WzBdLHM9MDtzPGEubGVuZ3RoO3MrKylpZigocj10Lm1hdGNoKGFbc10pKSYmMD09PXIuaW5k ZXgpe2U9clswXTticmVha31pZihlfHwoZT1pW2kuaW5kZXhPZihvKV0pLCFlKXJldHVybiEx O3ZhciBsPXQuc3Vic3RyKGUubGVuZ3RoKTtyZXR1cm4gbD8hIShyPWwubWF0Y2goL15cWygw fFsxLTldWzAtOV0qKVxdKFwuKC4rKSk/JC8pKSYme2FycmF5OmUsaW5kZXg6TnVtYmVyKHJb MV0pLHByb3BlcnR5OnJbM118fCIifTp7YXJyYXk6ZSxpbmRleDoiIixwcm9wZXJ0eToiIn19 fSx7Ii4uL3JlZ2lzdHJ5Ijo2Mzh9XSw1MzY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiLi4vbGliIiksaT1uLmV4dGVuZEZsYXQsYT1uLmlzUGxhaW5PYmplY3Qs bz17dmFsVHlwZToiZmxhZ2xpc3QiLGV4dHJhczpbIm5vbmUiXSxmbGFnczpbImNhbGMiLCJj bGVhckF4aXNUeXBlcyIsInBsb3QiLCJzdHlsZSIsIm1hcmtlclNpemUiLCJjb2xvcmJhcnMi XX0scz17dmFsVHlwZToiZmxhZ2xpc3QiLGV4dHJhczpbIm5vbmUiXSxmbGFnczpbImNhbGMi LCJwbG90IiwibGVnZW5kIiwidGlja3MiLCJheHJhbmdlIiwibGF5b3V0c3R5bGUiLCJtb2Rl YmFyIiwiY2FtZXJhIiwiYXJyYXlkcmF3IiwiY29sb3JiYXJzIl19LGw9by5mbGFncy5zbGlj ZSgpLmNvbmNhdChbImZ1bGxSZXBsb3QiXSksYz1zLmZsYWdzLnNsaWNlKCkuY29uY2F0KCJs YXlvdXRSZXBsb3QiKTtmdW5jdGlvbiB1KHQpe2Zvcih2YXIgZT17fSxyPTA7cjx0Lmxlbmd0 aDtyKyspZVt0W3JdXT0hMTtyZXR1cm4gZX1mdW5jdGlvbiBmKHQsZSxyKXt2YXIgbj1pKHt9 LHQpO2Zvcih2YXIgbyBpbiBuKXt2YXIgcz1uW29dO2EocykmJihuW29dPWgocyxlLHIsbykp fXJldHVybiJmcm9tLXJvb3QiPT09ciYmKG4uZWRpdFR5cGU9ZSksbn1mdW5jdGlvbiBoKHQs ZSxyLG4pe2lmKHQudmFsVHlwZSl7dmFyIGE9aSh7fSx0KTtpZihhLmVkaXRUeXBlPWUsQXJy YXkuaXNBcnJheSh0Lml0ZW1zKSl7YS5pdGVtcz1uZXcgQXJyYXkodC5pdGVtcy5sZW5ndGgp O2Zvcih2YXIgbz0wO288dC5pdGVtcy5sZW5ndGg7bysrKWEuaXRlbXNbb109aCh0Lml0ZW1z W29dLGUsImZyb20tcm9vdCIpfXJldHVybiBhfXJldHVybiBmKHQsZSwiXyI9PT1uLmNoYXJB dCgwKT8ibmVzdGVkIjoiZnJvbS1yb290Iil9ZS5leHBvcnRzPXt0cmFjZXM6byxsYXlvdXQ6 cyx0cmFjZUZsYWdzOmZ1bmN0aW9uKCl7cmV0dXJuIHUobCl9LGxheW91dEZsYWdzOmZ1bmN0 aW9uKCl7cmV0dXJuIHUoYyl9LHVwZGF0ZTpmdW5jdGlvbih0LGUpe3ZhciByPWUuZWRpdFR5 cGU7aWYociYmIm5vbmUiIT09cilmb3IodmFyIG49ci5zcGxpdCgiKyIpLGk9MDtpPG4ubGVu Z3RoO2krKyl0W25baV1dPSEwfSxvdmVycmlkZUFsbDpmfX0seyIuLi9saWIiOjUwM31dLDUz NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJp YyIpLGk9dCgiZ2wtbWF0NC9mcm9tUXVhdCIpLGE9dCgiLi4vcmVnaXN0cnkiKSxvPXQoIi4u L2xpYiIpLHM9dCgiLi4vcGxvdHMvcGxvdHMiKSxsPXQoIi4uL3Bsb3RzL2NhcnRlc2lhbi9h eGlzX2lkcyIpLGM9dCgiLi4vY29tcG9uZW50cy9jb2xvciIpLHU9bC5jbGVhbklkLGY9bC5n ZXRGcm9tVHJhY2UsaD1hLnRyYWNlSXM7ZnVuY3Rpb24gcCh0LGUpe3ZhciByPXRbZV0sbj1l LmNoYXJBdCgwKTtyJiYicGFwZXIiIT09ciYmKHRbZV09dShyLG4sITApKX1mdW5jdGlvbiBk KHQpe2Z1bmN0aW9uIGUoZSxyKXt2YXIgbj10W2VdLGk9dC50aXRsZSYmdC50aXRsZVtyXTtu JiYhaSYmKHQudGl0bGV8fCh0LnRpdGxlPXt9KSx0LnRpdGxlW3JdPXRbZV0sZGVsZXRlIHRb ZV0pfXQmJigic3RyaW5nIiE9dHlwZW9mIHQudGl0bGUmJiJudW1iZXIiIT10eXBlb2YgdC50 aXRsZXx8KHQudGl0bGU9e3RleHQ6dC50aXRsZX0pLGUoInRpdGxlZm9udCIsImZvbnQiKSxl KCJ0aXRsZXBvc2l0aW9uIiwicG9zaXRpb24iKSxlKCJ0aXRsZXNpZGUiLCJzaWRlIiksZSgi dGl0bGVvZmZzZXQiLCJvZmZzZXQiKSl9ZnVuY3Rpb24gbSh0KXtpZighby5pc1BsYWluT2Jq ZWN0KHQpKXJldHVybiExO3ZhciBlPXQubmFtZTtyZXR1cm4gZGVsZXRlIHQubmFtZSxkZWxl dGUgdC5zaG93bGVnZW5kLCgic3RyaW5nIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2Yg ZSkmJlN0cmluZyhlKX1mdW5jdGlvbiBnKHQsZSxyLG4pe2lmKHImJiFuKXJldHVybiB0O2lm KG4mJiFyKXJldHVybiBlO2lmKCF0LnRyaW0oKSlyZXR1cm4gZTtpZighZS50cmltKCkpcmV0 dXJuIHQ7dmFyIGksYT1NYXRoLm1pbih0Lmxlbmd0aCxlLmxlbmd0aCk7Zm9yKGk9MDtpPGEm JnQuY2hhckF0KGkpPT09ZS5jaGFyQXQoaSk7aSsrKTtyZXR1cm4gdC5zdWJzdHIoMCxpKS50 cmltKCl9ZnVuY3Rpb24gdih0KXt2YXIgZT0ibWlkZGxlIixyPSJjZW50ZXIiO3JldHVybiJz dHJpbmciPT10eXBlb2YgdCYmKC0xIT09dC5pbmRleE9mKCJ0b3AiKT9lPSJ0b3AiOi0xIT09 dC5pbmRleE9mKCJib3R0b20iKSYmKGU9ImJvdHRvbSIpLC0xIT09dC5pbmRleE9mKCJsZWZ0 Iik/cj0ibGVmdCI6LTEhPT10LmluZGV4T2YoInJpZ2h0IikmJihyPSJyaWdodCIpKSxlKyIg IityfWZ1bmN0aW9uIHkodCxlKXtyZXR1cm4gZSBpbiB0JiYib2JqZWN0Ij09dHlwZW9mIHRb ZV0mJjA9PT1PYmplY3Qua2V5cyh0W2VdKS5sZW5ndGh9ci5jbGVhclByb21pc2VRdWV1ZT1m dW5jdGlvbih0KXtBcnJheS5pc0FycmF5KHQuX3Byb21pc2VzKSYmdC5fcHJvbWlzZXMubGVu Z3RoPjAmJm8ubG9nKCJDbGVhcmluZyBwcmV2aW91cyByZWplY3RlZCBwcm9taXNlcyBmcm9t IHF1ZXVlLiIpLHQuX3Byb21pc2VzPVtdfSxyLmNsZWFuTGF5b3V0PWZ1bmN0aW9uKHQpe3Zh ciBlLG47dHx8KHQ9e30pLHQueGF4aXMxJiYodC54YXhpc3x8KHQueGF4aXM9dC54YXhpczEp LGRlbGV0ZSB0LnhheGlzMSksdC55YXhpczEmJih0LnlheGlzfHwodC55YXhpcz10LnlheGlz MSksZGVsZXRlIHQueWF4aXMxKSx0LnNjZW5lMSYmKHQuc2NlbmV8fCh0LnNjZW5lPXQuc2Nl bmUxKSxkZWxldGUgdC5zY2VuZTEpO3ZhciBhPShzLnN1YnBsb3RzUmVnaXN0cnkuY2FydGVz aWFufHx7fSkuYXR0clJlZ2V4LGw9KHMuc3VicGxvdHNSZWdpc3RyeS5wb2xhcnx8e30pLmF0 dHJSZWdleCxmPShzLnN1YnBsb3RzUmVnaXN0cnkudGVybmFyeXx8e30pLmF0dHJSZWdleCxo PShzLnN1YnBsb3RzUmVnaXN0cnkuZ2wzZHx8e30pLmF0dHJSZWdleCxtPU9iamVjdC5rZXlz KHQpO2ZvcihlPTA7ZTxtLmxlbmd0aDtlKyspe3ZhciBnPW1bZV07aWYoYSYmYS50ZXN0KGcp KXt2YXIgdj10W2ddO3YuYW5jaG9yJiYiZnJlZSIhPT12LmFuY2hvciYmKHYuYW5jaG9yPXUo di5hbmNob3IpKSx2Lm92ZXJsYXlpbmcmJih2Lm92ZXJsYXlpbmc9dSh2Lm92ZXJsYXlpbmcp KSx2LnR5cGV8fCh2LmlzZGF0ZT92LnR5cGU9ImRhdGUiOnYuaXNsb2c/di50eXBlPSJsb2ci OiExPT09di5pc2RhdGUmJiExPT09di5pc2xvZyYmKHYudHlwZT0ibGluZWFyIikpLCJ3aXRo emVybyIhPT12LmF1dG9yYW5nZSYmInRvemVybyIhPT12LmF1dG9yYW5nZXx8KHYuYXV0b3Jh bmdlPSEwLHYucmFuZ2Vtb2RlPSJ0b3plcm8iKSxkZWxldGUgdi5pc2xvZyxkZWxldGUgdi5p c2RhdGUsZGVsZXRlIHYuY2F0ZWdvcmllcyx5KHYsImRvbWFpbiIpJiZkZWxldGUgdi5kb21h aW4sdm9pZCAwIT09di5hdXRvdGljayYmKHZvaWQgMD09PXYudGlja21vZGUmJih2LnRpY2tt b2RlPXYuYXV0b3RpY2s/ImF1dG8iOiJsaW5lYXIiKSxkZWxldGUgdi5hdXRvdGljayksZCh2 KX1lbHNlIGlmKGwmJmwudGVzdChnKSl7ZCh0W2ddLnJhZGlhbGF4aXMpfWVsc2UgaWYoZiYm Zi50ZXN0KGcpKXt2YXIgeD10W2ddO2QoeC5hYXhpcyksZCh4LmJheGlzKSxkKHguY2F4aXMp fWVsc2UgaWYoaCYmaC50ZXN0KGcpKXt2YXIgYj10W2ddLF89Yi5jYW1lcmFwb3NpdGlvbjtp ZihBcnJheS5pc0FycmF5KF8pJiY0PT09X1swXS5sZW5ndGgpe3ZhciB3PV9bMF0sVD1fWzFd LGs9X1syXSxBPWkoW10sdyksTT1bXTtmb3Iobj0wO248MzsrK24pTVtuXT1UW25dK2sqQVsy KzQqbl07Yi5jYW1lcmE9e2V5ZTp7eDpNWzBdLHk6TVsxXSx6Ok1bMl19LGNlbnRlcjp7eDpU WzBdLHk6VFsxXSx6OlRbMl19LHVwOnt4OjAseTowLHo6MX19LGRlbGV0ZSBiLmNhbWVyYXBv c2l0aW9ufWQoYi54YXhpcyksZChiLnlheGlzKSxkKGIuemF4aXMpfX12YXIgUz1BcnJheS5p c0FycmF5KHQuYW5ub3RhdGlvbnMpP3QuYW5ub3RhdGlvbnMubGVuZ3RoOjA7Zm9yKGU9MDtl PFM7ZSsrKXt2YXIgRT10LmFubm90YXRpb25zW2VdO28uaXNQbGFpbk9iamVjdChFKSYmKEUu cmVmJiYoInBhcGVyIj09PUUucmVmPyhFLnhyZWY9InBhcGVyIixFLnlyZWY9InBhcGVyIik6 ImRhdGEiPT09RS5yZWYmJihFLnhyZWY9IngiLEUueXJlZj0ieSIpLGRlbGV0ZSBFLnJlZiks cChFLCJ4cmVmIikscChFLCJ5cmVmIikpfXZhciBMPUFycmF5LmlzQXJyYXkodC5zaGFwZXMp P3Quc2hhcGVzLmxlbmd0aDowO2ZvcihlPTA7ZTxMO2UrKyl7dmFyIEM9dC5zaGFwZXNbZV07 by5pc1BsYWluT2JqZWN0KEMpJiYocChDLCJ4cmVmIikscChDLCJ5cmVmIikpfXZhciBQPUFy cmF5LmlzQXJyYXkodC5pbWFnZXMpP3QuaW1hZ2VzLmxlbmd0aDowO2ZvcihlPTA7ZTxQO2Ur Kyl7dmFyIEk9dC5pbWFnZXNbZV07by5pc1BsYWluT2JqZWN0KEkpJiYocChJLCJ4cmVmIiks cChJLCJ5cmVmIikpfXZhciBPPXQubGVnZW5kO3JldHVybiBPJiYoTy54PjM/KE8ueD0xLjAy LE8ueGFuY2hvcj0ibGVmdCIpOk8ueDwtMiYmKE8ueD0tLjAyLE8ueGFuY2hvcj0icmlnaHQi KSxPLnk+Mz8oTy55PTEuMDIsTy55YW5jaG9yPSJib3R0b20iKTpPLnk8LTImJihPLnk9LS4w MixPLnlhbmNob3I9InRvcCIpKSxkKHQpLCJyb3RhdGUiPT09dC5kcmFnbW9kZSYmKHQuZHJh Z21vZGU9Im9yYml0IiksYy5jbGVhbih0KSx0LnRlbXBsYXRlJiZ0LnRlbXBsYXRlLmxheW91 dCYmci5jbGVhbkxheW91dCh0LnRlbXBsYXRlLmxheW91dCksdH0sci5jbGVhbkRhdGE9ZnVu Y3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBuLGk9dFtlXTtpZigi aGlzdG9ncmFteSI9PT1pLnR5cGUmJiJ4YmlucyJpbiBpJiYhKCJ5YmlucyJpbiBpKSYmKGku eWJpbnM9aS54YmlucyxkZWxldGUgaS54YmlucyksaS5lcnJvcl95JiYib3BhY2l0eSJpbiBp LmVycm9yX3kpe3ZhciBsPWMuZGVmYXVsdHMsZj1pLmVycm9yX3kuY29sb3J8fChoKGksImJh ciIpP2MuZGVmYXVsdExpbmU6bFtlJWwubGVuZ3RoXSk7aS5lcnJvcl95LmNvbG9yPWMuYWRk T3BhY2l0eShjLnJnYihmKSxjLm9wYWNpdHkoZikqaS5lcnJvcl95Lm9wYWNpdHkpLGRlbGV0 ZSBpLmVycm9yX3kub3BhY2l0eX1pZigiYmFyZGlyImluIGkmJigiaCIhPT1pLmJhcmRpcnx8 IWgoaSwiYmFyIikmJiJoaXN0b2dyYW0iIT09aS50eXBlLnN1YnN0cigwLDkpfHwoaS5vcmll bnRhdGlvbj0iaCIsci5zd2FwWFlEYXRhKGkpKSxkZWxldGUgaS5iYXJkaXIpLCJoaXN0b2dy YW15Ij09PWkudHlwZSYmci5zd2FwWFlEYXRhKGkpLCJoaXN0b2dyYW14IiE9PWkudHlwZSYm Imhpc3RvZ3JhbXkiIT09aS50eXBlfHwoaS50eXBlPSJoaXN0b2dyYW0iKSwic2NsImluIGkm JiEoImNvbG9yc2NhbGUiaW4gaSkmJihpLmNvbG9yc2NhbGU9aS5zY2wsZGVsZXRlIGkuc2Ns KSwicmV2ZXJzZXNjbCJpbiBpJiYhKCJyZXZlcnNlc2NhbGUiaW4gaSkmJihpLnJldmVyc2Vz Y2FsZT1pLnJldmVyc2VzY2wsZGVsZXRlIGkucmV2ZXJzZXNjbCksaS54YXhpcyYmKGkueGF4 aXM9dShpLnhheGlzLCJ4IikpLGkueWF4aXMmJihpLnlheGlzPXUoaS55YXhpcywieSIpKSxo KGksImdsM2QiKSYmaS5zY2VuZSYmKGkuc2NlbmU9cy5zdWJwbG90c1JlZ2lzdHJ5LmdsM2Qu Y2xlYW5JZChpLnNjZW5lKSksIWgoaSwicGllLWxpa2UiKSYmIWgoaSwiYmFyLWxpa2UiKSlp ZihBcnJheS5pc0FycmF5KGkudGV4dHBvc2l0aW9uKSlmb3Iobj0wO248aS50ZXh0cG9zaXRp b24ubGVuZ3RoO24rKylpLnRleHRwb3NpdGlvbltuXT12KGkudGV4dHBvc2l0aW9uW25dKTtl bHNlIGkudGV4dHBvc2l0aW9uJiYoaS50ZXh0cG9zaXRpb249dihpLnRleHRwb3NpdGlvbikp O3ZhciBwPWEuZ2V0TW9kdWxlKGkpO2lmKHAmJnAuY29sb3JiYXIpe3ZhciB4PXAuY29sb3Ji YXIuY29udGFpbmVyLGI9eD9pW3hdOmk7YiYmYi5jb2xvcnNjYWxlJiYoIllJR25CdSI9PT1i LmNvbG9yc2NhbGUmJihiLmNvbG9yc2NhbGU9IllsR25CdSIpLCJZSU9yUmQiPT09Yi5jb2xv cnNjYWxlJiYoYi5jb2xvcnNjYWxlPSJZbE9yUmQiKSl9aWYoInN1cmZhY2UiPT09aS50eXBl JiZvLmlzUGxhaW5PYmplY3QoaS5jb250b3Vycykpe3ZhciBfPVsieCIsInkiLCJ6Il07Zm9y KG49MDtuPF8ubGVuZ3RoO24rKyl7dmFyIHc9aS5jb250b3Vyc1tfW25dXTtvLmlzUGxhaW5P YmplY3QodykmJih3LmhpZ2hsaWdodENvbG9yJiYody5oaWdobGlnaHRjb2xvcj13LmhpZ2hs aWdodENvbG9yLGRlbGV0ZSB3LmhpZ2hsaWdodENvbG9yKSx3LmhpZ2hsaWdodFdpZHRoJiYo dy5oaWdobGlnaHR3aWR0aD13LmhpZ2hsaWdodFdpZHRoLGRlbGV0ZSB3LmhpZ2hsaWdodFdp ZHRoKSl9fWlmKCJjYW5kbGVzdGljayI9PT1pLnR5cGV8fCJvaGxjIj09PWkudHlwZSl7dmFy IFQ9ITEhPT0oaS5pbmNyZWFzaW5nfHx7fSkuc2hvd2xlZ2VuZCxrPSExIT09KGkuZGVjcmVh c2luZ3x8e30pLnNob3dsZWdlbmQsQT1tKGkuaW5jcmVhc2luZyksTT1tKGkuZGVjcmVhc2lu Zyk7aWYoITEhPT1BJiYhMSE9PU0pe3ZhciBTPWcoQSxNLFQsayk7UyYmKGkubmFtZT1TKX1l bHNlIUEmJiFNfHxpLm5hbWV8fChpLm5hbWU9QXx8TSl9aWYoQXJyYXkuaXNBcnJheShpLnRy YW5zZm9ybXMpKXt2YXIgRT1pLnRyYW5zZm9ybXM7Zm9yKG49MDtuPEUubGVuZ3RoO24rKyl7 dmFyIEw9RVtuXTtpZihvLmlzUGxhaW5PYmplY3QoTCkpc3dpdGNoKEwudHlwZSl7Y2FzZSJm aWx0ZXIiOkwuZmlsdGVyc3JjJiYoTC50YXJnZXQ9TC5maWx0ZXJzcmMsZGVsZXRlIEwuZmls dGVyc3JjKSxMLmNhbGVuZGFyJiYoTC52YWx1ZWNhbGVuZGFyfHwoTC52YWx1ZWNhbGVuZGFy PUwuY2FsZW5kYXIpLGRlbGV0ZSBMLmNhbGVuZGFyKTticmVhaztjYXNlImdyb3VwYnkiOmlm KEwuc3R5bGVzPUwuc3R5bGVzfHxMLnN0eWxlLEwuc3R5bGVzJiYhQXJyYXkuaXNBcnJheShM LnN0eWxlcykpe3ZhciBDPUwuc3R5bGVzLFA9T2JqZWN0LmtleXMoQyk7TC5zdHlsZXM9W107 Zm9yKHZhciBJPTA7STxQLmxlbmd0aDtJKyspTC5zdHlsZXMucHVzaCh7dGFyZ2V0OlBbSV0s dmFsdWU6Q1tQW0ldXX0pfX19fXkoaSwibGluZSIpJiZkZWxldGUgaS5saW5lLCJtYXJrZXIi aW4gaSYmKHkoaS5tYXJrZXIsImxpbmUiKSYmZGVsZXRlIGkubWFya2VyLmxpbmUseShpLCJt YXJrZXIiKSYmZGVsZXRlIGkubWFya2VyKSxjLmNsZWFuKGkpLGkuYXV0b2JpbngmJihkZWxl dGUgaS5hdXRvYmlueCxkZWxldGUgaS54YmlucyksaS5hdXRvYmlueSYmKGRlbGV0ZSBpLmF1 dG9iaW55LGRlbGV0ZSBpLnliaW5zKSxkKGkpLGkuY29sb3JiYXImJmQoaS5jb2xvcmJhciks aS5tYXJrZXImJmkubWFya2VyLmNvbG9yYmFyJiZkKGkubWFya2VyLmNvbG9yYmFyKSxpLmxp bmUmJmkubGluZS5jb2xvcmJhciYmZChpLmxpbmUuY29sb3JiYXIpLGkuYWF4aXMmJmQoaS5h YXhpcyksaS5iYXhpcyYmZChpLmJheGlzKX19LHIuc3dhcFhZRGF0YT1mdW5jdGlvbih0KXt2 YXIgZTtpZihvLnN3YXBBdHRycyh0LFsiPyIsIj8wIiwiZD8iLCI/YmlucyIsIm5iaW5zPyIs ImF1dG9iaW4/IiwiP3NyYyIsImVycm9yXz8iXSksQXJyYXkuaXNBcnJheSh0LnopJiZBcnJh eS5pc0FycmF5KHQuelswXSkmJih0LnRyYW5zcG9zZT9kZWxldGUgdC50cmFuc3Bvc2U6dC50 cmFuc3Bvc2U9ITApLHQuZXJyb3JfeCYmdC5lcnJvcl95KXt2YXIgcj10LmVycm9yX3ksbj0i Y29weV95c3R5bGUiaW4gcj9yLmNvcHlfeXN0eWxlOiEoci5jb2xvcnx8ci50aGlja25lc3N8 fHIud2lkdGgpO28uc3dhcEF0dHJzKHQsWyJlcnJvcl8/LmNvcHlfeXN0eWxlIl0pLG4mJm8u c3dhcEF0dHJzKHQsWyJlcnJvcl8/LmNvbG9yIiwiZXJyb3JfPy50aGlja25lc3MiLCJlcnJv cl8/LndpZHRoIl0pfWlmKCJzdHJpbmciPT10eXBlb2YgdC5ob3ZlcmluZm8pe3ZhciBpPXQu aG92ZXJpbmZvLnNwbGl0KCIrIik7Zm9yKGU9MDtlPGkubGVuZ3RoO2UrKykieCI9PT1pW2Vd P2lbZV09InkiOiJ5Ij09PWlbZV0mJihpW2VdPSJ4Iik7dC5ob3ZlcmluZm89aS5qb2luKCIr Iil9fSxyLmNvZXJjZVRyYWNlSW5kaWNlcz1mdW5jdGlvbih0LGUpe2lmKG4oZSkpcmV0dXJu W2VdO2lmKCFBcnJheS5pc0FycmF5KGUpfHwhZS5sZW5ndGgpcmV0dXJuIHQuZGF0YS5tYXAo KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSk7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZh ciByPVtdLGk9MDtpPGUubGVuZ3RoO2krKylvLmlzSW5kZXgoZVtpXSx0LmRhdGEubGVuZ3Ro KT9yLnB1c2goZVtpXSk6by53YXJuKCJ0cmFjZSBpbmRleCAoIixlW2ldLCIpIGlzIG5vdCBh IG51bWJlciBvciBpcyBvdXQgb2YgYm91bmRzIik7cmV0dXJuIHJ9cmV0dXJuIGV9LHIubWFu YWdlQXJyYXlDb250YWluZXJzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgaT10Lm9iaixhPXQucGFy dHMscz1hLmxlbmd0aCxsPWFbcy0xXSxjPW4obCk7aWYoYyYmbnVsbD09PWUpe3ZhciB1PWEu c2xpY2UoMCxzLTEpLmpvaW4oIi4iKTtvLm5lc3RlZFByb3BlcnR5KGksdSkuZ2V0KCkuc3Bs aWNlKGwsMSl9ZWxzZSBjJiZ2b2lkIDA9PT10LmdldCgpPyh2b2lkIDA9PT10LmdldCgpJiYo clt0LmFzdHJdPW51bGwpLHQuc2V0KGUpKTp0LnNldChlKX07dmFyIHg9LyhcLlteXFtcXVwu XSt8XFtbXlxbXF1cLl0rXF0pJC87ZnVuY3Rpb24gYih0KXt2YXIgZT10LnNlYXJjaCh4KTtp ZihlPjApcmV0dXJuIHQuc3Vic3RyKDAsZSl9ci5oYXNQYXJlbnQ9ZnVuY3Rpb24odCxlKXtm b3IodmFyIHI9YihlKTtyOyl7aWYociBpbiB0KXJldHVybiEwO3I9YihyKX1yZXR1cm4hMX07 dmFyIF89WyJ4IiwieSIsInoiXTtyLmNsZWFyQXhpc1R5cGVzPWZ1bmN0aW9uKHQsZSxyKXtm b3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylmb3IodmFyIGk9dC5fZnVsbERhdGFbbl0sYT0w O2E8MzthKyspe3ZhciBzPWYodCxpLF9bYV0pO2lmKHMmJiJsb2ciIT09cy50eXBlKXt2YXIg bD1zLl9uYW1lLGM9cy5faWQuc3Vic3RyKDEpO2lmKCJzY2VuZSI9PT1jLnN1YnN0cigwLDUp KXtpZih2b2lkIDAhPT1yW2NdKWNvbnRpbnVlO2w9YysiLiIrbH12YXIgdT1sKyIudHlwZSI7 dm9pZCAwPT09cltsXSYmdm9pZCAwPT09clt1XSYmby5uZXN0ZWRQcm9wZXJ0eSh0LmxheW91 dCx1KS5zZXQobnVsbCl9fX19LHsiLi4vY29tcG9uZW50cy9jb2xvciI6MzY2LCIuLi9saWIi OjUwMywiLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIjo1NTgsIi4uL3Bsb3RzL3Bsb3Rz Ijo2MTksIi4uL3JlZ2lzdHJ5Ijo2MzgsImZhc3QtaXNudW1lcmljIjoxOTAsImdsLW1hdDQv ZnJvbVF1YXQiOjIwMH1dLDUzODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCIuL3Bsb3RfYXBpIik7ci5fZG9QbG90PW4uX2RvUGxvdCxyLm5ld1Bsb3Q9bi5uZXdQ bG90LHIucmVzdHlsZT1uLnJlc3R5bGUsci5yZWxheW91dD1uLnJlbGF5b3V0LHIucmVkcmF3 PW4ucmVkcmF3LHIudXBkYXRlPW4udXBkYXRlLHIuX2d1aVJlc3R5bGU9bi5fZ3VpUmVzdHls ZSxyLl9ndWlSZWxheW91dD1uLl9ndWlSZWxheW91dCxyLl9ndWlVcGRhdGU9bi5fZ3VpVXBk YXRlLHIuX3N0b3JlRGlyZWN0R1VJRWRpdD1uLl9zdG9yZURpcmVjdEdVSUVkaXQsci5yZWFj dD1uLnJlYWN0LHIuZXh0ZW5kVHJhY2VzPW4uZXh0ZW5kVHJhY2VzLHIucHJlcGVuZFRyYWNl cz1uLnByZXBlbmRUcmFjZXMsci5hZGRUcmFjZXM9bi5hZGRUcmFjZXMsci5kZWxldGVUcmFj ZXM9bi5kZWxldGVUcmFjZXMsci5tb3ZlVHJhY2VzPW4ubW92ZVRyYWNlcyxyLnB1cmdlPW4u cHVyZ2Usci5hZGRGcmFtZXM9bi5hZGRGcmFtZXMsci5kZWxldGVGcmFtZXM9bi5kZWxldGVG cmFtZXMsci5hbmltYXRlPW4uYW5pbWF0ZSxyLnNldFBsb3RDb25maWc9bi5zZXRQbG90Q29u ZmlnLHIudG9JbWFnZT10KCIuL3RvX2ltYWdlIiksci52YWxpZGF0ZT10KCIuL3ZhbGlkYXRl Iiksci5kb3dubG9hZEltYWdlPXQoIi4uL3NuYXBzaG90L2Rvd25sb2FkIik7dmFyIGk9dCgi Li90ZW1wbGF0ZV9hcGkiKTtyLm1ha2VUZW1wbGF0ZT1pLm1ha2VUZW1wbGF0ZSxyLnZhbGlk YXRlVGVtcGxhdGU9aS52YWxpZGF0ZVRlbXBsYXRlfSx7Ii4uL3NuYXBzaG90L2Rvd25sb2Fk Ijo2NDAsIi4vcGxvdF9hcGkiOjU0MCwiLi90ZW1wbGF0ZV9hcGkiOjU0NSwiLi90b19pbWFn ZSI6NTQ2LCIuL3ZhbGlkYXRlIjo1NDd9XSw1Mzk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiLi4vbGliL2lzX3BsYWluX29iamVjdCIpLGk9dCgiLi4vbGliL25v b3AiKSxhPXQoIi4uL2xpYi9sb2dnZXJzIiksbz10KCIuLi9saWIvc2VhcmNoIikuc29ydGVy QXNjLHM9dCgiLi4vcmVnaXN0cnkiKTtyLmNvbnRhaW5lckFycmF5TWF0Y2g9dCgiLi9jb250 YWluZXJfYXJyYXlfbWF0Y2giKTt2YXIgbD1yLmlzQWRkVmFsPWZ1bmN0aW9uKHQpe3JldHVy biJhZGQiPT09dHx8bih0KX0sYz1yLmlzUmVtb3ZlVmFsPWZ1bmN0aW9uKHQpe3JldHVybiBu dWxsPT09dHx8InJlbW92ZSI9PT10fTtyLmFwcGx5Q29udGFpbmVyQXJyYXlDaGFuZ2VzPWZ1 bmN0aW9uKHQsZSxyLG4sdSl7dmFyIGY9ZS5hc3RyLGg9cy5nZXRDb21wb25lbnRNZXRob2Qo Ziwic3VwcGx5TGF5b3V0RGVmYXVsdHMiKSxwPXMuZ2V0Q29tcG9uZW50TWV0aG9kKGYsImRy YXciKSxkPXMuZ2V0Q29tcG9uZW50TWV0aG9kKGYsImRyYXdPbmUiKSxtPW4ucmVwbG90fHxu LnJlY2FsY3x8aD09PWl8fHA9PT1pLGc9dC5sYXlvdXQsdj10Ll9mdWxsTGF5b3V0O2lmKHJb IiJdKXtPYmplY3Qua2V5cyhyKS5sZW5ndGg+MSYmYS53YXJuKCJGdWxsIGFycmF5IGVkaXRz IGFyZSBpbmNvbXBhdGlibGUgd2l0aCBvdGhlciBlZGl0cyIsZik7dmFyIHk9clsiIl1bIiJd O2lmKGMoeSkpZS5zZXQobnVsbCk7ZWxzZXtpZighQXJyYXkuaXNBcnJheSh5KSlyZXR1cm4g YS53YXJuKCJVbnJlY29nbml6ZWQgZnVsbCBhcnJheSBlZGl0IHZhbHVlIixmLHkpLCEwO2Uu c2V0KHkpfXJldHVybiFtJiYoaChnLHYpLHAodCksITApfXZhciB4LGIsXyx3LFQsayxBLE0s Uz1PYmplY3Qua2V5cyhyKS5tYXAoTnVtYmVyKS5zb3J0KG8pLEU9ZS5nZXQoKSxMPUV8fFtd LEM9dSh2LGYpLmdldCgpLFA9W10sST0tMSxPPUwubGVuZ3RoO2Zvcih4PTA7eDxTLmxlbmd0 aDt4KyspaWYodz1yW189U1t4XV0sVD1PYmplY3Qua2V5cyh3KSxrPXdbIiJdLEE9bChrKSxf PDB8fF8+TC5sZW5ndGgtKEE/MDoxKSlhLndhcm4oImluZGV4IG91dCBvZiByYW5nZSIsZixf KTtlbHNlIGlmKHZvaWQgMCE9PWspVC5sZW5ndGg+MSYmYS53YXJuKCJJbnNlcnRpb24gJiBy ZW1vdmFsIGFyZSBpbmNvbXBhdGlibGUgd2l0aCBlZGl0cyB0byB0aGUgc2FtZSBpbmRleC4i LGYsXyksYyhrKT9QLnB1c2goXyk6QT8oImFkZCI9PT1rJiYoaz17fSksTC5zcGxpY2UoXyww LGspLEMmJkMuc3BsaWNlKF8sMCx7fSkpOmEud2FybigiVW5yZWNvZ25pemVkIGZ1bGwgb2Jq ZWN0IGVkaXQgdmFsdWUiLGYsXyxrKSwtMT09PUkmJihJPV8pO2Vsc2UgZm9yKGI9MDtiPFQu bGVuZ3RoO2IrKylNPWYrIlsiK18rIl0uIix1KExbX10sVFtiXSxNKS5zZXQod1tUW2JdXSk7 Zm9yKHg9UC5sZW5ndGgtMTt4Pj0wO3gtLSlMLnNwbGljZShQW3hdLDEpLEMmJkMuc3BsaWNl KFBbeF0sMSk7aWYoTC5sZW5ndGg/RXx8ZS5zZXQoTCk6ZS5zZXQobnVsbCksbSlyZXR1cm4h MTtpZihoKGcsdiksZCE9PWkpe3ZhciB6O2lmKC0xPT09SSl6PVM7ZWxzZXtmb3IoTz1NYXRo Lm1heChMLmxlbmd0aCxPKSx6PVtdLHg9MDt4PFMubGVuZ3RoJiYhKChfPVNbeF0pPj1JKTt4 Kyspei5wdXNoKF8pO2Zvcih4PUk7eDxPO3grKyl6LnB1c2goeCl9Zm9yKHg9MDt4PHoubGVu Z3RoO3grKylkKHQselt4XSl9ZWxzZSBwKHQpO3JldHVybiEwfX0seyIuLi9saWIvaXNfcGxh aW5fb2JqZWN0Ijo1MDQsIi4uL2xpYi9sb2dnZXJzIjo1MDcsIi4uL2xpYi9ub29wIjo1MTIs Ii4uL2xpYi9zZWFyY2giOjUyMywiLi4vcmVnaXN0cnkiOjYzOCwiLi9jb250YWluZXJfYXJy YXlfbWF0Y2giOjUzNX1dLDU0MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCJAcGxvdGx5L2QzIiksaT10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiaGFzLWhvdmVy Iiksbz10KCIuLi9saWIiKSxzPW8ubmVzdGVkUHJvcGVydHksbD10KCIuLi9saWIvZXZlbnRz IiksYz10KCIuLi9saWIvcXVldWUiKSx1PXQoIi4uL3JlZ2lzdHJ5IiksZj10KCIuL3Bsb3Rf c2NoZW1hIiksaD10KCIuLi9wbG90cy9wbG90cyIpLHA9dCgiLi4vcGxvdHMvY2FydGVzaWFu L2F4ZXMiKSxkPXQoIi4uL2NvbXBvbmVudHMvZHJhd2luZyIpLG09dCgiLi4vY29tcG9uZW50 cy9jb2xvciIpLGc9dCgiLi4vcGxvdHMvY2FydGVzaWFuL2dyYXBoX2ludGVyYWN0IikuaW5p dEludGVyYWN0aW9ucyx2PXQoIi4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIikseT10 KCIuLi9wbG90cy9jYXJ0ZXNpYW4vc2VsZWN0IikuY2xlYXJTZWxlY3QseD10KCIuL3Bsb3Rf Y29uZmlnIikuZGZsdENvbmZpZyxiPXQoIi4vbWFuYWdlX2FycmF5cyIpLF89dCgiLi9oZWxw ZXJzIiksdz10KCIuL3N1YnJvdXRpbmVzIiksVD10KCIuL2VkaXRfdHlwZXMiKSxrPXQoIi4u L3Bsb3RzL2NhcnRlc2lhbi9jb25zdGFudHMiKS5BWF9OQU1FX1BBVFRFUk4sQT0wO2Z1bmN0 aW9uIE0odCl7dmFyIGU9dC5fZnVsbExheW91dDtlLl9yZWRyYXdGcm9tQXV0b01hcmdpbkNv dW50P2UuX3JlZHJhd0Zyb21BdXRvTWFyZ2luQ291bnQtLTp0LmVtaXQoInBsb3RseV9hZnRl cnBsb3QiKX1mdW5jdGlvbiBTKHQsZSl7dHJ5e3QuX2Z1bGxMYXlvdXQuX3BhcGVyLnN0eWxl KCJiYWNrZ3JvdW5kIixlKX1jYXRjaCh0KXtvLmVycm9yKHQpfX1mdW5jdGlvbiBFKHQsZSl7 Uyh0LG0uY29tYmluZShlLCJ3aGl0ZSIpKX1mdW5jdGlvbiBMKHQsZSl7aWYoIXQuX2NvbnRl eHQpe3QuX2NvbnRleHQ9by5leHRlbmREZWVwKHt9LHgpO3ZhciByPW4uc2VsZWN0KCJiYXNl Iik7dC5fY29udGV4dC5fYmFzZVVybD1yLnNpemUoKSYmci5hdHRyKCJocmVmIik/d2luZG93 LmxvY2F0aW9uLmhyZWYuc3BsaXQoIiMiKVswXToiIn12YXIgaSxzLGwsYz10Ll9jb250ZXh0 O2lmKGUpe2ZvcihzPU9iamVjdC5rZXlzKGUpLGk9MDtpPHMubGVuZ3RoO2krKykiZWRpdGFi bGUiIT09KGw9c1tpXSkmJiJlZGl0cyIhPT1sJiZsIGluIGMmJigic2V0QmFja2dyb3VuZCI9 PT1sJiYib3BhcXVlIj09PWVbbF0/Y1tsXT1FOmNbbF09ZVtsXSk7ZS5wbG90M2RQaXhlbFJh dGlvJiYhYy5wbG90R2xQaXhlbFJhdGlvJiYoYy5wbG90R2xQaXhlbFJhdGlvPWMucGxvdDNk UGl4ZWxSYXRpbyk7dmFyIHU9ZS5lZGl0YWJsZTtpZih2b2lkIDAhPT11KWZvcihjLmVkaXRh YmxlPXUscz1PYmplY3Qua2V5cyhjLmVkaXRzKSxpPTA7aTxzLmxlbmd0aDtpKyspYy5lZGl0 c1tzW2ldXT11O2lmKGUuZWRpdHMpZm9yKHM9T2JqZWN0LmtleXMoZS5lZGl0cyksaT0wO2k8 cy5sZW5ndGg7aSsrKShsPXNbaV0paW4gYy5lZGl0cyYmKGMuZWRpdHNbbF09ZS5lZGl0c1ts XSk7Yy5fZXhwb3J0ZWRQbG90PWUuX2V4cG9ydGVkUGxvdH1jLnN0YXRpY1Bsb3QmJihjLmVk aXRhYmxlPSExLGMuZWRpdHM9e30sYy5hdXRvc2l6YWJsZT0hMSxjLnNjcm9sbFpvb209ITEs Yy5kb3VibGVDbGljaz0hMSxjLnNob3dUaXBzPSExLGMuc2hvd0xpbms9ITEsYy5kaXNwbGF5 TW9kZUJhcj0hMSksImhvdmVyIiE9PWMuZGlzcGxheU1vZGVCYXJ8fGF8fChjLmRpc3BsYXlN b2RlQmFyPSEwKSwidHJhbnNwYXJlbnQiIT09Yy5zZXRCYWNrZ3JvdW5kJiYiZnVuY3Rpb24i PT10eXBlb2YgYy5zZXRCYWNrZ3JvdW5kfHwoYy5zZXRCYWNrZ3JvdW5kPVMpLGMuX2hhc1pl cm9IZWlnaHQ9Yy5faGFzWmVyb0hlaWdodHx8MD09PXQuY2xpZW50SGVpZ2h0LGMuX2hhc1pl cm9XaWR0aD1jLl9oYXNaZXJvV2lkdGh8fDA9PT10LmNsaWVudFdpZHRoO3ZhciBmPWMuc2Ny b2xsWm9vbSxoPWMuX3Njcm9sbFpvb209e307aWYoITA9PT1mKWguY2FydGVzaWFuPTEsaC5n bDNkPTEsaC5nZW89MSxoLm1hcGJveD0xO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBmKXt2 YXIgcD1mLnNwbGl0KCIrIik7Zm9yKGk9MDtpPHAubGVuZ3RoO2krKyloW3BbaV1dPTF9ZWxz ZSExIT09ZiYmKGguZ2wzZD0xLGguZ2VvPTEsaC5tYXBib3g9MSl9ZnVuY3Rpb24gQyh0LGUp e3ZhciByLG4saT1lKzEsYT1bXTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKShuPXRbcl0pPDA/ YS5wdXNoKGkrbik6YS5wdXNoKG4pO3JldHVybiBhfWZ1bmN0aW9uIFAodCxlLHIpe3ZhciBu LGk7Zm9yKG49MDtuPGUubGVuZ3RoO24rKyl7aWYoKGk9ZVtuXSkhPT1wYXJzZUludChpLDEw KSl0aHJvdyBuZXcgRXJyb3IoImFsbCB2YWx1ZXMgaW4gIityKyIgbXVzdCBiZSBpbnRlZ2Vy cyIpO2lmKGk+PXQuZGF0YS5sZW5ndGh8fGk8LXQuZGF0YS5sZW5ndGgpdGhyb3cgbmV3IEVy cm9yKHIrIiBtdXN0IGJlIHZhbGlkIGluZGljZXMgZm9yIGdkLmRhdGEuIik7aWYoZS5pbmRl eE9mKGksbisxKT4tMXx8aT49MCYmZS5pbmRleE9mKC10LmRhdGEubGVuZ3RoK2kpPi0xfHxp PDAmJmUuaW5kZXhPZih0LmRhdGEubGVuZ3RoK2kpPi0xKXRocm93IG5ldyBFcnJvcigiZWFj aCBpbmRleCBpbiAiK3IrIiBtdXN0IGJlIHVuaXF1ZS4iKX19ZnVuY3Rpb24gSSh0LGUscil7 aWYoIUFycmF5LmlzQXJyYXkodC5kYXRhKSl0aHJvdyBuZXcgRXJyb3IoImdkLmRhdGEgbXVz dCBiZSBhbiBhcnJheS4iKTtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBFcnJvcigiY3VycmVu dEluZGljZXMgaXMgYSByZXF1aXJlZCBhcmd1bWVudC4iKTtpZihBcnJheS5pc0FycmF5KGUp fHwoZT1bZV0pLFAodCxlLCJjdXJyZW50SW5kaWNlcyIpLHZvaWQgMD09PXJ8fEFycmF5Lmlz QXJyYXkocil8fChyPVtyXSksdm9pZCAwIT09ciYmUCh0LHIsIm5ld0luZGljZXMiKSx2b2lk IDAhPT1yJiZlLmxlbmd0aCE9PXIubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiY3VycmVudCBh bmQgbmV3IGluZGljZXMgbXVzdCBiZSBvZiBlcXVhbCBsZW5ndGguIil9ZnVuY3Rpb24gTyh0 LGUscixuLGEpeyFmdW5jdGlvbih0LGUscixuKXt2YXIgaT1vLmlzUGxhaW5PYmplY3Qobik7 aWYoIUFycmF5LmlzQXJyYXkodC5kYXRhKSl0aHJvdyBuZXcgRXJyb3IoImdkLmRhdGEgbXVz dCBiZSBhbiBhcnJheSIpO2lmKCFvLmlzUGxhaW5PYmplY3QoZSkpdGhyb3cgbmV3IEVycm9y KCJ1cGRhdGUgbXVzdCBiZSBhIGtleTp2YWx1ZSBvYmplY3QiKTtpZih2b2lkIDA9PT1yKXRo cm93IG5ldyBFcnJvcigiaW5kaWNlcyBtdXN0IGJlIGFuIGludGVnZXIgb3IgYXJyYXkgb2Yg aW50ZWdlcnMiKTtmb3IodmFyIGEgaW4gUCh0LHIsImluZGljZXMiKSxlKXtpZighQXJyYXku aXNBcnJheShlW2FdKXx8ZVthXS5sZW5ndGghPT1yLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3Io ImF0dHJpYnV0ZSAiK2ErIiBtdXN0IGJlIGFuIGFycmF5IG9mIGxlbmd0aCBlcXVhbCB0byBp bmRpY2VzIGFycmF5IGxlbmd0aCIpO2lmKGkmJighKGEgaW4gbil8fCFBcnJheS5pc0FycmF5 KG5bYV0pfHxuW2FdLmxlbmd0aCE9PWVbYV0ubGVuZ3RoKSl0aHJvdyBuZXcgRXJyb3IoIndo ZW4gbWF4UG9pbnRzIGlzIHNldCBhcyBhIGtleTp2YWx1ZSBvYmplY3QgaXQgbXVzdCBjb250 YWluIGEgMToxIGNvcnJpc3BvbmRlbmNlIHdpdGggdGhlIGtleXMgYW5kIG51bWJlciBvZiB0 cmFjZXMgaW4gdGhlIHVwZGF0ZSBvYmplY3QiKX19KHQsZSxyLG4pO2Zvcih2YXIgbD1mdW5j dGlvbih0LGUscixuKXt2YXIgYSxsLGMsdSxmLGg9by5pc1BsYWluT2JqZWN0KG4pLHA9W107 Zm9yKHZhciBkIGluIEFycmF5LmlzQXJyYXkocil8fChyPVtyXSkscj1DKHIsdC5kYXRhLmxl bmd0aC0xKSxlKWZvcih2YXIgbT0wO208ci5sZW5ndGg7bSsrKXtpZihhPXQuZGF0YVtyW21d XSxsPShjPXMoYSxkKSkuZ2V0KCksdT1lW2RdW21dLCFvLmlzQXJyYXlPclR5cGVkQXJyYXko dSkpdGhyb3cgbmV3IEVycm9yKCJhdHRyaWJ1dGU6ICIrZCsiIGluZGV4OiAiK20rIiBtdXN0 IGJlIGFuIGFycmF5Iik7aWYoIW8uaXNBcnJheU9yVHlwZWRBcnJheShsKSl0aHJvdyBuZXcg RXJyb3IoImNhbm5vdCBleHRlbmQgbWlzc2luZyBvciBub24tYXJyYXkgYXR0cmlidXRlOiAi K2QpO2lmKGwuY29uc3RydWN0b3IhPT11LmNvbnN0cnVjdG9yKXRocm93IG5ldyBFcnJvcigi Y2Fubm90IGV4dGVuZCBhcnJheSB3aXRoIGFuIGFycmF5IG9mIGEgZGlmZmVyZW50IHR5cGU6 ICIrZCk7Zj1oP25bZF1bbV06bixpKGYpfHwoZj0tMSkscC5wdXNoKHtwcm9wOmMsdGFyZ2V0 OmwsaW5zZXJ0OnUsbWF4cDpNYXRoLmZsb29yKGYpfSl9cmV0dXJuIHB9KHQsZSxyLG4pLGM9 e30sdT17fSxmPTA7ZjxsLmxlbmd0aDtmKyspe3ZhciBoPWxbZl0ucHJvcCxwPWxbZl0ubWF4 cCxkPWEobFtmXS50YXJnZXQsbFtmXS5pbnNlcnQscCk7aC5zZXQoZFswXSksQXJyYXkuaXNB cnJheShjW2guYXN0cl0pfHwoY1toLmFzdHJdPVtdKSxjW2guYXN0cl0ucHVzaChkWzFdKSxB cnJheS5pc0FycmF5KHVbaC5hc3RyXSl8fCh1W2guYXN0cl09W10pLHVbaC5hc3RyXS5wdXNo KGxbZl0udGFyZ2V0Lmxlbmd0aCl9cmV0dXJue3VwZGF0ZTpjLG1heFBvaW50czp1fX1mdW5j dGlvbiB6KHQsZSl7dmFyIHI9bmV3IHQuY29uc3RydWN0b3IodC5sZW5ndGgrZS5sZW5ndGgp O3JldHVybiByLnNldCh0KSxyLnNldChlLHQubGVuZ3RoKSxyfWZ1bmN0aW9uIEQodCxlLG4s aSl7dD1vLmdldEdyYXBoRGl2KHQpLF8uY2xlYXJQcm9taXNlUXVldWUodCk7dmFyIGE9e307 aWYoInN0cmluZyI9PXR5cGVvZiBlKWFbZV09bjtlbHNle2lmKCFvLmlzUGxhaW5PYmplY3Qo ZSkpcmV0dXJuIG8ud2FybigiUmVzdHlsZSBmYWlsLiIsZSxuLGkpLFByb21pc2UucmVqZWN0 KCk7YT1vLmV4dGVuZEZsYXQoe30sZSksdm9pZCAwPT09aSYmKGk9bil9T2JqZWN0LmtleXMo YSkubGVuZ3RoJiYodC5jaGFuZ2VkPSEwKTt2YXIgcz1fLmNvZXJjZVRyYWNlSW5kaWNlcyh0 LGkpLGw9Tih0LGEscyksdT1sLmZsYWdzO3UuY2FsYyYmKHQuY2FsY2RhdGE9dm9pZCAwKSx1 LmNsZWFyQXhpc1R5cGVzJiZfLmNsZWFyQXhpc1R5cGVzKHQscyx7fSk7dmFyIGY9W107dS5m dWxsUmVwbG90P2YucHVzaChyLl9kb1Bsb3QpOihmLnB1c2goaC5wcmV2aW91c1Byb21pc2Vz KSxoLnN1cHBseURlZmF1bHRzKHQpLHUubWFya2VyU2l6ZSYmKGguZG9DYWxjZGF0YSh0KSxI KGYpKSx1LnN0eWxlJiZmLnB1c2gody5kb1RyYWNlU3R5bGUpLHUuY29sb3JiYXJzJiZmLnB1 c2gody5kb0NvbG9yQmFycyksZi5wdXNoKE0pKSxmLnB1c2goaC5yZWhvdmVyLGgucmVkcmFn KSxjLmFkZCh0LEQsW3QsbC51bmRvaXQsbC50cmFjZXNdLEQsW3QsbC5yZWRvaXQsbC50cmFj ZXNdKTt2YXIgcD1vLnN5bmNPckFzeW5jKGYsdCk7cmV0dXJuIHAmJnAudGhlbnx8KHA9UHJv bWlzZS5yZXNvbHZlKCkpLHAudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gdC5lbWl0KCJwbG90 bHlfcmVzdHlsZSIsbC5ldmVudERhdGEpLHR9KSl9ZnVuY3Rpb24gUih0KXtyZXR1cm4gdm9p ZCAwPT09dD9udWxsOnR9ZnVuY3Rpb24gRih0LGUpe3JldHVybiBlP2Z1bmN0aW9uKGUscixu KXt2YXIgaT1zKGUsciksYT1pLnNldDtyZXR1cm4gaS5zZXQ9ZnVuY3Rpb24oZSl7Qigobnx8 IiIpK3IsaS5nZXQoKSxlLHQpLGEoZSl9LGl9OnN9ZnVuY3Rpb24gQih0LGUscixuKXtpZihB cnJheS5pc0FycmF5KGUpfHxBcnJheS5pc0FycmF5KHIpKWZvcih2YXIgaT1BcnJheS5pc0Fy cmF5KGUpP2U6W10sYT1BcnJheS5pc0FycmF5KHIpP3I6W10scz1NYXRoLm1heChpLmxlbmd0 aCxhLmxlbmd0aCksbD0wO2w8cztsKyspQih0KyJbIitsKyJdIixpW2xdLGFbbF0sbik7ZWxz ZSBpZihvLmlzUGxhaW5PYmplY3QoZSl8fG8uaXNQbGFpbk9iamVjdChyKSl7dmFyIGM9by5p c1BsYWluT2JqZWN0KGUpP2U6e30sdT1vLmlzUGxhaW5PYmplY3Qocik/cjp7fSxmPW8uZXh0 ZW5kRmxhdCh7fSxjLHUpO2Zvcih2YXIgaCBpbiBmKUIodCsiLiIraCxjW2hdLHVbaF0sbil9 ZWxzZSB2b2lkIDA9PT1uW3RdJiYoblt0XT1SKGUpKX1mdW5jdGlvbiBOKHQsZSxyKXt2YXIg bixpPXQuX2Z1bGxMYXlvdXQsYT10Ll9mdWxsRGF0YSxsPXQuZGF0YSxjPWkuX2d1aUVkaXRp bmcsZD1GKGkuX3ByZUdVSSxjKSxtPW8uZXh0ZW5kRGVlcEFsbCh7fSxlKTtqKGUpO3ZhciBn LHY9VC50cmFjZUZsYWdzKCkseT17fSx4PXt9O2Z1bmN0aW9uIGIoKXtyZXR1cm4gci5tYXAo KGZ1bmN0aW9uKCl7fSkpfWZ1bmN0aW9uIHcodCl7dmFyIGU9cC5pZDJuYW1lKHQpOy0xPT09 Zy5pbmRleE9mKGUpJiZnLnB1c2goZSl9ZnVuY3Rpb24gayh0KXtyZXR1cm4iTEFZT1VUIit0 KyIuYXV0b3JhbmdlIn1mdW5jdGlvbiBBKHQpe3JldHVybiJMQVlPVVQiK3QrIi5yYW5nZSJ9 ZnVuY3Rpb24gTSh0KXtmb3IodmFyIGU9dDtlPGEubGVuZ3RoO2UrKylpZihhW2VdLl9pbnB1 dD09PWxbdF0pcmV0dXJuIGFbZV19ZnVuY3Rpb24gUyhuLGEsbyl7aWYoQXJyYXkuaXNBcnJh eShuKSluLmZvckVhY2goKGZ1bmN0aW9uKHQpe1ModCxhLG8pfSkpO2Vsc2UgaWYoIShuIGlu IGUpJiYhXy5oYXNQYXJlbnQoZSxuKSl7dmFyIHM7aWYoIkxBWU9VVCI9PT1uLnN1YnN0cigw LDYpKXM9ZCh0LmxheW91dCxuLnJlcGxhY2UoIkxBWU9VVCIsIiIpKTtlbHNle3ZhciB1PXJb b107cz1GKGkuX3RyYWNlUHJlR1VJW00odSkuX2Z1bGxJbnB1dC51aWRdLGMpKGxbdV0sbil9 biBpbiB4fHwoeFtuXT1iKCkpLHZvaWQgMD09PXhbbl1bb10mJih4W25dW29dPVIocy5nZXQo KSkpLHZvaWQgMCE9PWEmJnMuc2V0KGEpfX1mdW5jdGlvbiBFKHQpe3JldHVybiBmdW5jdGlv bihlKXtyZXR1cm4gYVtlXVt0XX19ZnVuY3Rpb24gTCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxu KXtyZXR1cm4hMT09PWU/YVtyW25dXVt0XTpudWxsfX1mb3IodmFyIEMgaW4gZSl7aWYoXy5o YXNQYXJlbnQoZSxDKSl0aHJvdyBuZXcgRXJyb3IoImNhbm5vdCBzZXQgIitDKyIgYW5kIGEg cGFyZW50IGF0dHJpYnV0ZSBzaW11bHRhbmVvdXNseSIpO3ZhciBQLEksTyx6LEQsQixOPWVb Q107aWYoImF1dG9iaW54IiE9PUMmJiJhdXRvYmlueSIhPT1DfHwoQz1DLmNoYXJBdChDLmxl bmd0aC0xKSsiYmlucyIsTj1BcnJheS5pc0FycmF5KE4pP04ubWFwKEwoQykpOiExPT09Tj9y Lm1hcChFKEMpKTpudWxsKSx5W0NdPU4sIkxBWU9VVCIhPT1DLnN1YnN0cigwLDYpKXtmb3Io eFtDXT1iKCksbj0wO248ci5sZW5ndGg7bisrKXtpZihQPWxbcltuXV0sST1NKHJbbl0pLHo9 KE89RihpLl90cmFjZVByZUdVSVtJLl9mdWxsSW5wdXQudWlkXSxjKShQLEMpKS5nZXQoKSx2 b2lkIDAhPT0oRD1BcnJheS5pc0FycmF5KE4pP05bbiVOLmxlbmd0aF06Tikpe3ZhciBVPU8u cGFydHNbTy5wYXJ0cy5sZW5ndGgtMV0sVj1DLnN1YnN0cigwLEMubGVuZ3RoLVUubGVuZ3Ro LTEpLEg9Vj9WKyIuIjoiIixxPVY/cyhJLFYpLmdldCgpOkk7aWYoKEI9Zi5nZXRUcmFjZVZh bE9iamVjdChJLE8ucGFydHMpKSYmQi5pbXBsaWVkRWRpdHMmJm51bGwhPT1EKWZvcih2YXIg RyBpbiBCLmltcGxpZWRFZGl0cylTKG8ucmVsYXRpdmVBdHRyKEMsRyksQi5pbXBsaWVkRWRp dHNbR10sbik7ZWxzZSBpZigidGhpY2tuZXNzbW9kZSIhPT1VJiYibGVubW9kZSIhPT1VfHx6 PT09RHx8ImZyYWN0aW9uIiE9PUQmJiJwaXhlbHMiIT09RHx8IXEpe2lmKCJ0eXBlIj09PUMm JigicGllIj09PUQhPSgicGllIj09PXopfHwiZnVubmVsYXJlYSI9PT1EIT0oImZ1bm5lbGFy ZWEiPT09eikpKXt2YXIgWT0ieCIsVz0ieSI7ImJhciIhPT1EJiYiYmFyIiE9PXp8fCJoIiE9 PVAub3JpZW50YXRpb258fChZPSJ5IixXPSJ4Iiksby5zd2FwQXR0cnMoUCxbIj8iLCI/c3Jj Il0sImxhYmVscyIsWSksby5zd2FwQXR0cnMoUCxbImQ/IiwiPzAiXSwibGFiZWwiLFkpLG8u c3dhcEF0dHJzKFAsWyI/IiwiP3NyYyJdLCJ2YWx1ZXMiLFcpLCJwaWUiPT09enx8ImZ1bm5l bGFyZWEiPT09ej8ocyhQLCJtYXJrZXIuY29sb3IiKS5zZXQocyhQLCJtYXJrZXIuY29sb3Jz IikuZ2V0KCkpLGkuX3BpZWxheWVyLnNlbGVjdEFsbCgiZy50cmFjZSIpLnJlbW92ZSgpKTp1 LnRyYWNlSXMoUCwiY2FydGVzaWFuIikmJnMoUCwibWFya2VyLmNvbG9ycyIpLnNldChzKFAs Im1hcmtlci5jb2xvciIpLmdldCgpKX19ZWxzZXt2YXIgWD1pLl9zaXplLFo9cS5vcmllbnQs Sj0idG9wIj09PVp8fCJib3R0b20iPT09WjtpZigidGhpY2tuZXNzbW9kZSI9PT1VKXt2YXIg Sz1KP1guaDpYLnc7UyhIKyJ0aGlja25lc3MiLHEudGhpY2tuZXNzKigiZnJhY3Rpb24iPT09 RD8xL0s6Syksbil9ZWxzZXt2YXIgUT1KP1gudzpYLmg7UyhIKyJsZW4iLHEubGVuKigiZnJh Y3Rpb24iPT09RD8xL1E6USksbil9fXhbQ11bbl09Uih6KTtpZigtMSE9PVsic3dhcHh5Iiwi c3dhcHh5YXhlcyIsIm9yaWVudGF0aW9uIiwib3JpZW50YXRpb25heGVzIl0uaW5kZXhPZihD KSl7aWYoIm9yaWVudGF0aW9uIj09PUMpe08uc2V0KEQpO3ZhciAkPVAueCYmIVAueT8iaCI6 InYiO2lmKChPLmdldCgpfHwkKT09PUkub3JpZW50YXRpb24pY29udGludWV9ZWxzZSJvcmll bnRhdGlvbmF4ZXMiPT09QyYmKFAub3JpZW50YXRpb249e3Y6ImgiLGg6InYifVtJLm9yaWVu dGF0aW9uXSk7Xy5zd2FwWFlEYXRhKFApLHYuY2FsYz12LmNsZWFyQXhpc1R5cGVzPSEwfWVs c2UtMSE9PWguZGF0YUFycmF5Q29udGFpbmVycy5pbmRleE9mKE8ucGFydHNbMF0pPyhfLm1h bmFnZUFycmF5Q29udGFpbmVycyhPLEQseCksdi5jYWxjPSEwKTooQj9CLmFycmF5T2smJiF1 LnRyYWNlSXMoSSwicmVnbCIpJiYoby5pc0FycmF5T3JUeXBlZEFycmF5KEQpfHxvLmlzQXJy YXlPclR5cGVkQXJyYXkoeikpP3YuY2FsYz0hMDpULnVwZGF0ZSh2LEIpOnYuY2FsYz0hMCxP LnNldChEKSl9fWlmKC0xIT09WyJzd2FweHlheGVzIiwib3JpZW50YXRpb25heGVzIl0uaW5k ZXhPZihDKSYmcC5zd2FwKHQsciksIm9yaWVudGF0aW9uYXhlcyI9PT1DKXt2YXIgdHQ9cyh0 LmxheW91dCwiaG92ZXJtb2RlIiksZXQ9dHQuZ2V0KCk7IngiPT09ZXQ/dHQuc2V0KCJ5Iik6 InkiPT09ZXQ/dHQuc2V0KCJ4Iik6InggdW5pZmllZCI9PT1ldD90dC5zZXQoInkgdW5pZmll ZCIpOiJ5IHVuaWZpZWQiPT09ZXQmJnR0LnNldCgieCB1bmlmaWVkIil9aWYoLTEhPT1bIm9y aWVudGF0aW9uIiwidHlwZSJdLmluZGV4T2YoQykpe2ZvcihnPVtdLG49MDtuPHIubGVuZ3Ro O24rKyl7dmFyIHJ0PWxbcltuXV07dS50cmFjZUlzKHJ0LCJjYXJ0ZXNpYW4iKSYmKHcocnQu eGF4aXN8fCJ4IiksdyhydC55YXhpc3x8InkiKSl9UyhnLm1hcChrKSwhMCwwKSxTKGcubWFw KEEpLFswLDFdLDApfX1lbHNlIE89ZCh0LmxheW91dCxDLnJlcGxhY2UoIkxBWU9VVCIsIiIp KSx4W0NdPVtSKE8uZ2V0KCkpXSxPLnNldChBcnJheS5pc0FycmF5KE4pP05bMF06Tiksdi5j YWxjPSEwfXJldHVybih2LmNhbGN8fHYucGxvdCkmJih2LmZ1bGxSZXBsb3Q9ITApLHtmbGFn czp2LHVuZG9pdDp4LHJlZG9pdDp5LHRyYWNlczpyLGV2ZW50RGF0YTpvLmV4dGVuZERlZXBO b0FycmF5cyhbXSxbbSxyXSl9fWZ1bmN0aW9uIGoodCl7dmFyIGUscixuLGk9by5jb3VudGVy UmVnZXgoImF4aXMiLCIudGl0bGUiLCExLCExKSxhPS9jb2xvcmJhclwudGl0bGUkLyxzPU9i amVjdC5rZXlzKHQpO2ZvcihlPTA7ZTxzLmxlbmd0aDtlKyspcj1zW2VdLG49dFtyXSwidGl0 bGUiIT09ciYmIWkudGVzdChyKSYmIWEudGVzdChyKXx8InN0cmluZyIhPXR5cGVvZiBuJiYi bnVtYmVyIiE9dHlwZW9mIG4/ci5pbmRleE9mKCJ0aXRsZWZvbnQiKT4tMSYmLTE9PT1yLmlu ZGV4T2YoImdyb3VwdGl0bGVmb250Iik/bChyLHIucmVwbGFjZSgidGl0bGVmb250IiwidGl0 bGUuZm9udCIpKTpyLmluZGV4T2YoInRpdGxlcG9zaXRpb24iKT4tMT9sKHIsci5yZXBsYWNl KCJ0aXRsZXBvc2l0aW9uIiwidGl0bGUucG9zaXRpb24iKSk6ci5pbmRleE9mKCJ0aXRsZXNp ZGUiKT4tMT9sKHIsci5yZXBsYWNlKCJ0aXRsZXNpZGUiLCJ0aXRsZS5zaWRlIikpOnIuaW5k ZXhPZigidGl0bGVvZmZzZXQiKT4tMSYmbChyLHIucmVwbGFjZSgidGl0bGVvZmZzZXQiLCJ0 aXRsZS5vZmZzZXQiKSk6bChyLHIucmVwbGFjZSgidGl0bGUiLCJ0aXRsZS50ZXh0IikpO2Z1 bmN0aW9uIGwoZSxyKXt0W3JdPXRbZV0sZGVsZXRlIHRbZV19fWZ1bmN0aW9uIFUodCxlLHIp e3Q9by5nZXRHcmFwaERpdih0KSxfLmNsZWFyUHJvbWlzZVF1ZXVlKHQpO3ZhciBuPXt9O2lm KCJzdHJpbmciPT10eXBlb2YgZSluW2VdPXI7ZWxzZXtpZighby5pc1BsYWluT2JqZWN0KGUp KXJldHVybiBvLndhcm4oIlJlbGF5b3V0IGZhaWwuIixlLHIpLFByb21pc2UucmVqZWN0KCk7 bj1vLmV4dGVuZEZsYXQoe30sZSl9T2JqZWN0LmtleXMobikubGVuZ3RoJiYodC5jaGFuZ2Vk PSEwKTt2YXIgaT1XKHQsbiksYT1pLmZsYWdzO2EuY2FsYyYmKHQuY2FsY2RhdGE9dm9pZCAw KTt2YXIgcz1baC5wcmV2aW91c1Byb21pc2VzXTthLmxheW91dFJlcGxvdD9zLnB1c2gody5s YXlvdXRSZXBsb3QpOk9iamVjdC5rZXlzKG4pLmxlbmd0aCYmKFYodCxhLGkpfHxoLnN1cHBs eURlZmF1bHRzKHQpLGEubGVnZW5kJiZzLnB1c2gody5kb0xlZ2VuZCksYS5sYXlvdXRzdHls ZSYmcy5wdXNoKHcubGF5b3V0U3R5bGVzKSxhLmF4cmFuZ2UmJkgocyxpLnJhbmdlc0FsdGVy ZWQpLGEudGlja3MmJnMucHVzaCh3LmRvVGlja3NSZWxheW91dCksYS5tb2RlYmFyJiZzLnB1 c2gody5kb01vZGVCYXIpLGEuY2FtZXJhJiZzLnB1c2gody5kb0NhbWVyYSksYS5jb2xvcmJh cnMmJnMucHVzaCh3LmRvQ29sb3JCYXJzKSxzLnB1c2goTSkpLHMucHVzaChoLnJlaG92ZXIs aC5yZWRyYWcpLGMuYWRkKHQsVSxbdCxpLnVuZG9pdF0sVSxbdCxpLnJlZG9pdF0pO3ZhciBs PW8uc3luY09yQXN5bmMocyx0KTtyZXR1cm4gbCYmbC50aGVufHwobD1Qcm9taXNlLnJlc29s dmUodCkpLGwudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gdC5lbWl0KCJwbG90bHlfcmVsYXlv dXQiLGkuZXZlbnREYXRhKSx0fSkpfWZ1bmN0aW9uIFYodCxlLHIpe3ZhciBuPXQuX2Z1bGxM YXlvdXQ7aWYoIWUuYXhyYW5nZSlyZXR1cm4hMTtmb3IodmFyIGkgaW4gZSlpZigiYXhyYW5n ZSIhPT1pJiZlW2ldKXJldHVybiExO2Zvcih2YXIgYSBpbiByLnJhbmdlc0FsdGVyZWQpe3Zh ciBvPXAuaWQybmFtZShhKSxzPXQubGF5b3V0W29dLGw9bltvXTtpZihsLmF1dG9yYW5nZT1z LmF1dG9yYW5nZSxzLnJhbmdlJiYobC5yYW5nZT1zLnJhbmdlLnNsaWNlKCkpLGwuY2xlYW5S YW5nZSgpLGwuX21hdGNoR3JvdXApZm9yKHZhciBjIGluIGwuX21hdGNoR3JvdXApaWYoYyE9 PWEpe3ZhciB1PW5bcC5pZDJuYW1lKGMpXTt1LmF1dG9yYW5nZT1sLmF1dG9yYW5nZSx1LnJh bmdlPWwucmFuZ2Uuc2xpY2UoKSx1Ll9pbnB1dC5yYW5nZT1sLnJhbmdlLnNsaWNlKCl9fXJl dHVybiEwfWZ1bmN0aW9uIEgodCxlKXt2YXIgcj1lP2Z1bmN0aW9uKHQpe3ZhciByPVtdLG49 ITA7Zm9yKHZhciBpIGluIGUpe3ZhciBhPXAuZ2V0RnJvbUlkKHQsaSk7aWYoci5wdXNoKGkp LC0xIT09KGEudGlja2xhYmVscG9zaXRpb258fCIiKS5pbmRleE9mKCJpbnNpZGUiKSYmYS5f YW5jaG9yQXhpcyYmci5wdXNoKGEuX2FuY2hvckF4aXMuX2lkKSxhLl9tYXRjaEdyb3VwKWZv cih2YXIgbyBpbiBhLl9tYXRjaEdyb3VwKWVbb118fHIucHVzaChvKTthLmF1dG9tYXJnaW4m JihuPSExKX1yZXR1cm4gcC5kcmF3KHQscix7c2tpcFRpdGxlOm59KX06ZnVuY3Rpb24odCl7 cmV0dXJuIHAuZHJhdyh0LCJyZWRyYXciKX07dC5wdXNoKHksdy5kb0F1dG9SYW5nZUFuZENv bnN0cmFpbnRzLHIsdy5kcmF3RGF0YSx3LmZpbmFsRHJhdyl9dmFyIHE9L15beHl6XWF4aXNb MC05XSpcLnJhbmdlKFxbWzB8MV1cXSk/JC8sRz0vXlt4eXpdYXhpc1swLTldKlwuYXV0b3Jh bmdlJC8sWT0vXlt4eXpdYXhpc1swLTldKlwuZG9tYWluKFxbWzB8MV1cXSk/JC87ZnVuY3Rp b24gVyh0LGUpe3ZhciByLG4saSxhPXQubGF5b3V0LGw9dC5fZnVsbExheW91dCxjPWwuX2d1 aUVkaXRpbmcsaD1GKGwuX3ByZUdVSSxjKSxkPU9iamVjdC5rZXlzKGUpLG09cC5saXN0KHQp LGc9by5leHRlbmREZWVwQWxsKHt9LGUpLHY9e307Zm9yKGooZSksZD1PYmplY3Qua2V5cyhl KSxuPTA7bjxkLmxlbmd0aDtuKyspaWYoMD09PWRbbl0uaW5kZXhPZigiYWxsYXhlcyIpKXtm b3IoaT0wO2k8bS5sZW5ndGg7aSsrKXt2YXIgeT1tW2ldLl9pZC5zdWJzdHIoMSkseD0tMSE9 PXkuaW5kZXhPZigic2NlbmUiKT95KyIuIjoiIix3PWRbbl0ucmVwbGFjZSgiYWxsYXhlcyIs eCttW2ldLl9uYW1lKTtlW3ddfHwoZVt3XT1lW2Rbbl1dKX1kZWxldGUgZVtkW25dXX12YXIg QT1ULmxheW91dEZsYWdzKCksTT17fSxTPXt9O2Z1bmN0aW9uIEUodCxyKXtpZihBcnJheS5p c0FycmF5KHQpKXQuZm9yRWFjaCgoZnVuY3Rpb24odCl7RSh0LHIpfSkpO2Vsc2UgaWYoISh0 IGluIGUpJiYhXy5oYXNQYXJlbnQoZSx0KSl7dmFyIG49aChhLHQpO3QgaW4gU3x8KFNbdF09 UihuLmdldCgpKSksdm9pZCAwIT09ciYmbi5zZXQocil9fXZhciBMLEM9e307ZnVuY3Rpb24g UCh0KXt2YXIgZT1wLm5hbWUyaWQodC5zcGxpdCgiLiIpWzBdKTtyZXR1cm4gQ1tlXT0xLGV9 Zm9yKHZhciBJIGluIGUpe2lmKF8uaGFzUGFyZW50KGUsSSkpdGhyb3cgbmV3IEVycm9yKCJj YW5ub3Qgc2V0ICIrSSsiIGFuZCBhIHBhcmVudCBhdHRyaWJ1dGUgc2ltdWx0YW5lb3VzbHki KTtmb3IodmFyIE89aChhLEkpLHo9ZVtJXSxEPU8ucGFydHMubGVuZ3RoLTE7RD4wJiYic3Ry aW5nIiE9dHlwZW9mIE8ucGFydHNbRF07KUQtLTt2YXIgQj1PLnBhcnRzW0RdLE49Ty5wYXJ0 c1tELTFdKyIuIitCLFU9Ty5wYXJ0cy5zbGljZSgwLEQpLmpvaW4oIi4iKSxWPXModC5sYXlv dXQsVSkuZ2V0KCksSD1zKGwsVSkuZ2V0KCksVz1PLmdldCgpO2lmKHZvaWQgMCE9PXope01b SV09eixTW0ldPSJyZXZlcnNlIj09PUI/ejpSKFcpO3ZhciBaPWYuZ2V0TGF5b3V0VmFsT2Jq ZWN0KGwsTy5wYXJ0cyk7aWYoWiYmWi5pbXBsaWVkRWRpdHMmJm51bGwhPT16KWZvcih2YXIg SiBpbiBaLmltcGxpZWRFZGl0cylFKG8ucmVsYXRpdmVBdHRyKEksSiksWi5pbXBsaWVkRWRp dHNbSl0pO2lmKC0xIT09WyJ3aWR0aCIsImhlaWdodCJdLmluZGV4T2YoSSkpaWYoeil7RSgi YXV0b3NpemUiLG51bGwpO3ZhciBLPSJoZWlnaHQiPT09ST8id2lkdGgiOiJoZWlnaHQiO0Uo SyxsW0tdKX1lbHNlIGxbSV09dC5faW5pdGlhbEF1dG9TaXplW0ldO2Vsc2UgaWYoImF1dG9z aXplIj09PUkpRSgid2lkdGgiLHo/bnVsbDpsLndpZHRoKSxFKCJoZWlnaHQiLHo/bnVsbDps LmhlaWdodCk7ZWxzZSBpZihOLm1hdGNoKHEpKVAoTikscyhsLFUrIi5faW5wdXRSYW5nZSIp LnNldChudWxsKTtlbHNlIGlmKE4ubWF0Y2goRykpe1AoTikscyhsLFUrIi5faW5wdXRSYW5n ZSIpLnNldChudWxsKTt2YXIgUT1zKGwsVSkuZ2V0KCk7US5faW5wdXREb21haW4mJihRLl9p bnB1dC5kb21haW49US5faW5wdXREb21haW4uc2xpY2UoKSl9ZWxzZSBOLm1hdGNoKFkpJiZz KGwsVSsiLl9pbnB1dERvbWFpbiIpLnNldChudWxsKTtpZigidHlwZSI9PT1CKXtMPVY7dmFy ICQ9ImxpbmVhciI9PT1ILnR5cGUmJiJsb2ciPT09eix0dD0ibG9nIj09PUgudHlwZSYmImxp bmVhciI9PT16O2lmKCR8fHR0KXtpZihMJiZMLnJhbmdlKWlmKEguYXV0b3JhbmdlKSQmJihM LnJhbmdlPUwucmFuZ2VbMV0+TC5yYW5nZVswXT9bMSwyXTpbMiwxXSk7ZWxzZXt2YXIgZXQ9 TC5yYW5nZVswXSxydD1MLnJhbmdlWzFdOyQ/KGV0PD0wJiZydDw9MCYmRShVKyIuYXV0b3Jh bmdlIiwhMCksZXQ8PTA/ZXQ9cnQvMWU2OnJ0PD0wJiYocnQ9ZXQvMWU2KSxFKFUrIi5yYW5n ZVswXSIsTWF0aC5sb2coZXQpL01hdGguTE4xMCksRShVKyIucmFuZ2VbMV0iLE1hdGgubG9n KHJ0KS9NYXRoLkxOMTApKTooRShVKyIucmFuZ2VbMF0iLE1hdGgucG93KDEwLGV0KSksRShV KyIucmFuZ2VbMV0iLE1hdGgucG93KDEwLHJ0KSkpfWVsc2UgRShVKyIuYXV0b3JhbmdlIiwh MCk7QXJyYXkuaXNBcnJheShsLl9zdWJwbG90cy5wb2xhcikmJmwuX3N1YnBsb3RzLnBvbGFy Lmxlbmd0aCYmbFtPLnBhcnRzWzBdXSYmInJhZGlhbGF4aXMiPT09Ty5wYXJ0c1sxXSYmZGVs ZXRlIGxbTy5wYXJ0c1swXV0uX3N1YnBsb3Qudmlld0luaXRpYWxbInJhZGlhbGF4aXMucmFu Z2UiXSx1LmdldENvbXBvbmVudE1ldGhvZCgiYW5ub3RhdGlvbnMiLCJjb252ZXJ0Q29vcmRz IikodCxILHosRSksdS5nZXRDb21wb25lbnRNZXRob2QoImltYWdlcyIsImNvbnZlcnRDb29y ZHMiKSh0LEgseixFKX1lbHNlIEUoVSsiLmF1dG9yYW5nZSIsITApLEUoVSsiLnJhbmdlIixu dWxsKTtzKGwsVSsiLl9pbnB1dFJhbmdlIikuc2V0KG51bGwpfWVsc2UgaWYoQi5tYXRjaChr KSl7dmFyIG50PXMobCxJKS5nZXQoKSxpdD0oenx8e30pLnR5cGU7aXQmJiItIiE9PWl0fHwo aXQ9ImxpbmVhciIpLHUuZ2V0Q29tcG9uZW50TWV0aG9kKCJhbm5vdGF0aW9ucyIsImNvbnZl cnRDb29yZHMiKSh0LG50LGl0LEUpLHUuZ2V0Q29tcG9uZW50TWV0aG9kKCJpbWFnZXMiLCJj b252ZXJ0Q29vcmRzIikodCxudCxpdCxFKX12YXIgYXQ9Yi5jb250YWluZXJBcnJheU1hdGNo KEkpO2lmKGF0KXtyPWF0LmFycmF5LG49YXQuaW5kZXg7dmFyIG90PWF0LnByb3BlcnR5LHN0 PVp8fHtlZGl0VHlwZToiY2FsYyJ9OyIiIT09biYmIiI9PT1vdCYmKGIuaXNBZGRWYWwoeik/ U1tJXT1udWxsOmIuaXNSZW1vdmVWYWwoeik/U1tJXT0ocyhhLHIpLmdldCgpfHxbXSlbbl06 by53YXJuKCJ1bnJlY29nbml6ZWQgZnVsbCBvYmplY3QgdmFsdWUiLGUpKSxULnVwZGF0ZShB LHN0KSx2W3JdfHwodltyXT17fSk7dmFyIGx0PXZbcl1bbl07bHR8fChsdD12W3JdW25dPXt9 KSxsdFtvdF09eixkZWxldGUgZVtJXX1lbHNlInJldmVyc2UiPT09Qj8oVi5yYW5nZT9WLnJh bmdlLnJldmVyc2UoKTooRShVKyIuYXV0b3JhbmdlIiwhMCksVi5yYW5nZT1bMSwwXSksSC5h dXRvcmFuZ2U/QS5jYWxjPSEwOkEucGxvdD0hMCk6KCJkcmFnbW9kZSI9PT1JJiYoITE9PT16 JiYhMSE9PVd8fCExIT09eiYmITE9PT1XKXx8bC5faGFzKCJzY2F0dGVyLWxpa2UiKSYmbC5f aGFzKCJyZWdsIikmJiJkcmFnbW9kZSI9PT1JJiYoImxhc3NvIj09PXp8fCJzZWxlY3QiPT09 eikmJiJsYXNzbyIhPT1XJiYic2VsZWN0IiE9PVd8fGwuX2hhcygiZ2wyZCIpP0EucGxvdD0h MDpaP1QudXBkYXRlKEEsWik6QS5jYWxjPSEwLE8uc2V0KHopKX19Zm9yKHIgaW4gdil7Yi5h cHBseUNvbnRhaW5lckFycmF5Q2hhbmdlcyh0LGgoYSxyKSx2W3JdLEEsaCl8fChBLnBsb3Q9 ITApfWZvcih2YXIgY3QgaW4gQyl7dmFyIHV0PShMPXAuZ2V0RnJvbUlkKHQsY3QpKSYmTC5f Y29uc3RyYWludEdyb3VwO2lmKHV0KWZvcih2YXIgZnQgaW4gQS5jYWxjPSEwLHV0KUNbZnRd fHwocC5nZXRGcm9tSWQodCxmdCkuX2NvbnN0cmFpbnRTaHJpbmthYmxlPSEwKX1yZXR1cm4o WCh0KXx8ZS5oZWlnaHR8fGUud2lkdGgpJiYoQS5wbG90PSEwKSwoQS5wbG90fHxBLmNhbGMp JiYoQS5sYXlvdXRSZXBsb3Q9ITApLHtmbGFnczpBLHJhbmdlc0FsdGVyZWQ6Qyx1bmRvaXQ6 UyxyZWRvaXQ6TSxldmVudERhdGE6Z319ZnVuY3Rpb24gWCh0KXt2YXIgZT10Ll9mdWxsTGF5 b3V0LHI9ZS53aWR0aCxuPWUuaGVpZ2h0O3JldHVybiB0LmxheW91dC5hdXRvc2l6ZSYmaC5w bG90QXV0b1NpemUodCx0LmxheW91dCxlKSxlLndpZHRoIT09cnx8ZS5oZWlnaHQhPT1ufWZ1 bmN0aW9uIFoodCxlLG4saSl7dD1vLmdldEdyYXBoRGl2KHQpLF8uY2xlYXJQcm9taXNlUXVl dWUodCksby5pc1BsYWluT2JqZWN0KGUpfHwoZT17fSksby5pc1BsYWluT2JqZWN0KG4pfHwo bj17fSksT2JqZWN0LmtleXMoZSkubGVuZ3RoJiYodC5jaGFuZ2VkPSEwKSxPYmplY3Qua2V5 cyhuKS5sZW5ndGgmJih0LmNoYW5nZWQ9ITApO3ZhciBhPV8uY29lcmNlVHJhY2VJbmRpY2Vz KHQsaSkscz1OKHQsby5leHRlbmRGbGF0KHt9LGUpLGEpLGw9cy5mbGFncyx1PVcodCxvLmV4 dGVuZEZsYXQoe30sbikpLGY9dS5mbGFnczsobC5jYWxjfHxmLmNhbGMpJiYodC5jYWxjZGF0 YT12b2lkIDApLGwuY2xlYXJBeGlzVHlwZXMmJl8uY2xlYXJBeGlzVHlwZXModCxhLG4pO3Zh ciBwPVtdO2YubGF5b3V0UmVwbG90P3AucHVzaCh3LmxheW91dFJlcGxvdCk6bC5mdWxsUmVw bG90P3AucHVzaChyLl9kb1Bsb3QpOihwLnB1c2goaC5wcmV2aW91c1Byb21pc2VzKSxWKHQs Zix1KXx8aC5zdXBwbHlEZWZhdWx0cyh0KSxsLnN0eWxlJiZwLnB1c2gody5kb1RyYWNlU3R5 bGUpLChsLmNvbG9yYmFyc3x8Zi5jb2xvcmJhcnMpJiZwLnB1c2gody5kb0NvbG9yQmFycyks Zi5sZWdlbmQmJnAucHVzaCh3LmRvTGVnZW5kKSxmLmxheW91dHN0eWxlJiZwLnB1c2gody5s YXlvdXRTdHlsZXMpLGYuYXhyYW5nZSYmSChwLHUucmFuZ2VzQWx0ZXJlZCksZi50aWNrcyYm cC5wdXNoKHcuZG9UaWNrc1JlbGF5b3V0KSxmLm1vZGViYXImJnAucHVzaCh3LmRvTW9kZUJh ciksZi5jYW1lcmEmJnAucHVzaCh3LmRvQ2FtZXJhKSxwLnB1c2goTSkpLHAucHVzaChoLnJl aG92ZXIsaC5yZWRyYWcpLGMuYWRkKHQsWixbdCxzLnVuZG9pdCx1LnVuZG9pdCxzLnRyYWNl c10sWixbdCxzLnJlZG9pdCx1LnJlZG9pdCxzLnRyYWNlc10pO3ZhciBkPW8uc3luY09yQXN5 bmMocCx0KTtyZXR1cm4gZCYmZC50aGVufHwoZD1Qcm9taXNlLnJlc29sdmUodCkpLGQudGhl bigoZnVuY3Rpb24oKXtyZXR1cm4gdC5lbWl0KCJwbG90bHlfdXBkYXRlIix7ZGF0YTpzLmV2 ZW50RGF0YSxsYXlvdXQ6dS5ldmVudERhdGF9KSx0fSkpfWZ1bmN0aW9uIEoodCl7cmV0dXJu IGZ1bmN0aW9uKGUpe2UuX2Z1bGxMYXlvdXQuX2d1aUVkaXRpbmc9ITA7dmFyIHI9dC5hcHBs eShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIGUuX2Z1bGxMYXlvdXQuX2d1aUVkaXRpbmc9ITEs cn19dmFyIEs9W3twYXR0ZXJuOi9eaGlkZGVubGFiZWxzLyxhdHRyOiJsZWdlbmQudWlyZXZp c2lvbiJ9LHtwYXR0ZXJuOi9eKCh4fHkpYXhpc1xkKilcLigoYXV0byk/cmFuZ2V8dGl0bGVc LnRleHQpL30se3BhdHRlcm46L2F4aXNcZCpcLnNob3dzcGlrZXMkLyxhdHRyOiJtb2RlYmFy LnVpcmV2aXNpb24ifSx7cGF0dGVybjovKGhvdmVyfGRyYWcpbW9kZSQvLGF0dHI6Im1vZGVi YXIudWlyZXZpc2lvbiJ9LHtwYXR0ZXJuOi9eKHNjZW5lXGQqKVwuY2FtZXJhL30se3BhdHRl cm46L14oZ2VvXGQqKVwuKHByb2plY3Rpb258Y2VudGVyfGZpdGJvdW5kcykvfSx7cGF0dGVy bjovXih0ZXJuYXJ5XGQqXC5bYWJjXWF4aXMpXC4obWlufHRpdGxlXC50ZXh0KSQvfSx7cGF0 dGVybjovXihwb2xhclxkKlwucmFkaWFsYXhpcylcLigoYXV0byk/cmFuZ2V8YW5nbGV8dGl0 bGVcLnRleHQpL30se3BhdHRlcm46L14ocG9sYXJcZCpcLmFuZ3VsYXJheGlzKVwucm90YXRp b24vfSx7cGF0dGVybjovXihtYXBib3hcZCopXC4oY2VudGVyfHpvb218YmVhcmluZ3xwaXRj aCkvfSx7cGF0dGVybjovXmxlZ2VuZFwuKHh8eSkkLyxhdHRyOiJlZGl0cmV2aXNpb24ifSx7 cGF0dGVybjovXihzaGFwZXN8YW5ub3RhdGlvbnMpLyxhdHRyOiJlZGl0cmV2aXNpb24ifSx7 cGF0dGVybjovXnRpdGxlXC50ZXh0JC8sYXR0cjoiZWRpdHJldmlzaW9uIn1dLFE9W3twYXR0 ZXJuOi9ec2VsZWN0ZWRwb2ludHMkLyxhdHRyOiJzZWxlY3Rpb25yZXZpc2lvbiJ9LHtwYXR0 ZXJuOi8oXnx2YWx1ZVwuKXZpc2libGUkLyxhdHRyOiJsZWdlbmQudWlyZXZpc2lvbiJ9LHtw YXR0ZXJuOi9eZGltZW5zaW9uc1xbXGQrXF1cLmNvbnN0cmFpbnRyYW5nZS99LHtwYXR0ZXJu Oi9ebm9kZVwuKHh8eXxncm91cHMpL30se3BhdHRlcm46L15sZXZlbCQvfSx7cGF0dGVybjov KF58dmFsdWVcLiluYW1lJC99LHtwYXR0ZXJuOi9jb2xvcmJhclwudGl0bGVcLnRleHQkL30s e3BhdHRlcm46L2NvbG9yYmFyXC4oeHx5KSQvLGF0dHI6ImVkaXRyZXZpc2lvbiJ9XTtmdW5j dGlvbiAkKHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl0saT10 Lm1hdGNoKG4ucGF0dGVybik7aWYoaSl7dmFyIGE9aVsxXXx8IiI7cmV0dXJue2hlYWQ6YSx0 YWlsOnQuc3Vic3RyKGEubGVuZ3RoKzEpLGF0dHI6bi5hdHRyfX19fWZ1bmN0aW9uIHR0KHQs ZSl7dmFyIHI9cyhlLHQpLmdldCgpO2lmKHZvaWQgMCE9PXIpcmV0dXJuIHI7dmFyIG49dC5z cGxpdCgiLiIpO2ZvcihuLnBvcCgpO24ubGVuZ3RoPjE7KWlmKG4ucG9wKCksdm9pZCAwIT09 KHI9cyhlLG4uam9pbigiLiIpKyIudWlyZXZpc2lvbiIpLmdldCgpKSlyZXR1cm4gcjtyZXR1 cm4gZS51aXJldmlzaW9ufWZ1bmN0aW9uIGV0KHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0 aDtyKyspaWYoZVtyXS5fZnVsbElucHV0LnVpZD09PXQpcmV0dXJuIHI7cmV0dXJuLTF9ZnVu Y3Rpb24gcnQodCxlLHIpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKWlmKGVbbl0udWlk PT09dClyZXR1cm4gbjtyZXR1cm4hZVtyXXx8ZVtyXS51aWQ/LTE6cn1mdW5jdGlvbiBudCh0 LGUpe3ZhciByPW8uaXNQbGFpbk9iamVjdCh0KSxuPUFycmF5LmlzQXJyYXkodCk7cmV0dXJu IHJ8fG4/KHImJm8uaXNQbGFpbk9iamVjdChlKXx8biYmQXJyYXkuaXNBcnJheShlKSkmJkpT T04uc3RyaW5naWZ5KHQpPT09SlNPTi5zdHJpbmdpZnkoZSk6dD09PWV9ZnVuY3Rpb24gaXQo dCxlLHIsbil7dmFyIGksYSxsLGM9bi5nZXRWYWxPYmplY3QsdT1uLmZsYWdzLGY9bi5pbW11 dGFibGUsaD1uLmluQXJyYXkscD1uLmFycmF5SW5kZXg7ZnVuY3Rpb24gZCgpe3ZhciB0PWku ZWRpdFR5cGU7aCYmLTEhPT10LmluZGV4T2YoImFycmF5ZHJhdyIpP28ucHVzaFVuaXF1ZSh1 LmFycmF5c1toXSxwKTooVC51cGRhdGUodSxpKSwibm9uZSIhPT10JiZ1Lm5DaGFuZ2VzKyss bi50cmFuc2l0aW9uJiZpLmFuaW0mJnUubkNoYW5nZXNBbmltKyssKHEudGVzdChsKXx8Ry50 ZXN0KGwpKSYmKHUucmFuZ2VzQWx0ZXJlZFtyWzBdXT0xKSxZLnRlc3QobCkmJnMoZSwiX2lu cHV0RG9tYWluIikuc2V0KG51bGwpLCJkYXRhcmV2aXNpb24iPT09YSYmKHUubmV3RGF0YVJl dmlzaW9uPTEpKX1mdW5jdGlvbiBtKHQpe3JldHVybiJkYXRhX2FycmF5Ij09PXQudmFsVHlw ZXx8dC5hcnJheU9rfWZvcihhIGluIHQpe2lmKHUuY2FsYyYmIW4udHJhbnNpdGlvbilyZXR1 cm47dmFyIGc9dFthXSx2PWVbYV0seT1yLmNvbmNhdChhKTtpZihsPXkuam9pbigiLiIpLCJf IiE9PWEuY2hhckF0KDApJiYiZnVuY3Rpb24iIT10eXBlb2YgZyYmZyE9PXYpe2lmKCgidGlj azAiPT09YXx8ImR0aWNrIj09PWEpJiYiZ2VvIiE9PXJbMF0pe3ZhciB4PWUudGlja21vZGU7 aWYoImF1dG8iPT09eHx8ImFycmF5Ij09PXh8fCF4KWNvbnRpbnVlfWlmKCgicmFuZ2UiIT09 YXx8IWUuYXV0b3JhbmdlKSYmKCJ6bWluIiE9PWEmJiJ6bWF4IiE9PWF8fCJjb250b3VyY2Fy cGV0IiE9PWUudHlwZSkmJihpPWMoeSkpJiYoIWkuX2NvbXBhcmVBc0pTT058fEpTT04uc3Ry aW5naWZ5KGcpIT09SlNPTi5zdHJpbmdpZnkodikpKXt2YXIgYixfPWkudmFsVHlwZSx3PW0o aSksaz1BcnJheS5pc0FycmF5KGcpLEE9QXJyYXkuaXNBcnJheSh2KTtpZihrJiZBKXt2YXIg TT0iX2lucHV0XyIrYSxTPXRbTV0sRT1lW01dO2lmKEFycmF5LmlzQXJyYXkoUykmJlM9PT1F KWNvbnRpbnVlfWlmKHZvaWQgMD09PXYpdyYmaz91LmNhbGM9ITA6ZCgpO2Vsc2UgaWYoaS5f aXNMaW5rZWRUb0FycmF5KXt2YXIgTD1bXSxDPSExO2h8fCh1LmFycmF5c1thXT1MKTt2YXIg UD1NYXRoLm1pbihnLmxlbmd0aCx2Lmxlbmd0aCksST1NYXRoLm1heChnLmxlbmd0aCx2Lmxl bmd0aCk7aWYoUCE9PUkpe2lmKCJhcnJheWRyYXciIT09aS5lZGl0VHlwZSl7ZCgpO2NvbnRp bnVlfUM9ITB9Zm9yKGI9MDtiPFA7YisrKWl0KGdbYl0sdltiXSx5LmNvbmNhdChiKSxvLmV4 dGVuZEZsYXQoe2luQXJyYXk6YSxhcnJheUluZGV4OmJ9LG4pKTtpZihDKWZvcihiPVA7YjxJ O2IrKylMLnB1c2goYil9ZWxzZSFfJiZvLmlzUGxhaW5PYmplY3QoZyk/aXQoZyx2LHksbik6 dz9rJiZBPyhmJiYodS5jYWxjPSEwKSwoZnx8bi5uZXdEYXRhUmV2aXNpb24pJiZkKCkpOmsh PT1BP3UuY2FsYz0hMDpkKCk6ayYmQSYmZy5sZW5ndGg9PT12Lmxlbmd0aCYmU3RyaW5nKGcp PT09U3RyaW5nKHYpfHxkKCl9fX1mb3IoYSBpbiBlKWlmKCEoYSBpbiB0KSYmIl8iIT09YS5j aGFyQXQoMCkmJiJmdW5jdGlvbiIhPXR5cGVvZiBlW2FdKXtpZihtKGk9YyhyLmNvbmNhdChh KSkpJiZBcnJheS5pc0FycmF5KGVbYV0pKXJldHVybiB2b2lkKHUuY2FsYz0hMCk7ZCgpfX1m dW5jdGlvbiBhdCh0KXt2YXIgZT10Ll9mdWxsTGF5b3V0LHI9dC5nZXRCb3VuZGluZ0NsaWVu dFJlY3QoKTtpZighby5lcXVhbERvbVJlY3RzKHIsZS5fbGFzdEJCb3gpKXt2YXIgbj1lLl9p bnZUcmFuc2Zvcm09by5pbnZlcnNlVHJhbnNmb3JtTWF0cml4KG8uZ2V0RnVsbFRyYW5zZm9y bU1hdHJpeCh0KSk7ZS5faW52U2NhbGVYPU1hdGguc3FydChuWzBdWzBdKm5bMF1bMF0rblsw XVsxXSpuWzBdWzFdK25bMF1bMl0qblswXVsyXSksZS5faW52U2NhbGVZPU1hdGguc3FydChu WzFdWzBdKm5bMV1bMF0rblsxXVsxXSpuWzFdWzFdK25bMV1bMl0qblsxXVsyXSksZS5fbGFz dEJCb3g9cn19ci5hbmltYXRlPWZ1bmN0aW9uKHQsZSxyKXtpZih0PW8uZ2V0R3JhcGhEaXYo dCksIW8uaXNQbG90RGl2KHQpKXRocm93IG5ldyBFcnJvcigiVGhpcyBlbGVtZW50IGlzIG5v dCBhIFBsb3RseSBwbG90OiAiK3QrIi4gSXQncyBsaWtlbHkgdGhhdCB5b3UndmUgZmFpbGVk IHRvIGNyZWF0ZSBhIHBsb3QgYmVmb3JlIGFuaW1hdGluZyBpdC4gRm9yIG1vcmUgZGV0YWls cywgc2VlIGh0dHBzOi8vcGxvdGx5LmNvbS9qYXZhc2NyaXB0L2FuaW1hdGlvbnMvIik7dmFy IG49dC5fdHJhbnNpdGlvbkRhdGE7bi5fZnJhbWVRdWV1ZXx8KG4uX2ZyYW1lUXVldWU9W10p O3ZhciBpPShyPWguc3VwcGx5QW5pbWF0aW9uRGVmYXVsdHMocikpLnRyYW5zaXRpb24sYT1y LmZyYW1lO2Z1bmN0aW9uIHModCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoaSk/dD49aS5sZW5n dGg/aVswXTppW3RdOml9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShhKT90 Pj1hLmxlbmd0aD9hWzBdOmFbdF06YX1mdW5jdGlvbiBjKHQsZSl7dmFyIHI9MDtyZXR1cm4g ZnVuY3Rpb24oKXtpZih0JiYrK3I9PT1lKXJldHVybiB0KCl9fXJldHVybiB2b2lkIDA9PT1u Ll9mcmFtZVdhaXRpbmdDbnQmJihuLl9mcmFtZVdhaXRpbmdDbnQ9MCksbmV3IFByb21pc2Uo KGZ1bmN0aW9uKGEsdSl7ZnVuY3Rpb24gZigpe24uX2N1cnJlbnRGcmFtZSYmbi5fY3VycmVu dEZyYW1lLm9uQ29tcGxldGUmJm4uX2N1cnJlbnRGcmFtZS5vbkNvbXBsZXRlKCk7dmFyIGU9 bi5fY3VycmVudEZyYW1lPW4uX2ZyYW1lUXVldWUuc2hpZnQoKTtpZihlKXt2YXIgcj1lLm5h bWU/ZS5uYW1lLnRvU3RyaW5nKCk6bnVsbDt0Ll9mdWxsTGF5b3V0Ll9jdXJyZW50RnJhbWU9 cixuLl9sYXN0RnJhbWVBdD1EYXRlLm5vdygpLG4uX3RpbWVUb05leHQ9ZS5mcmFtZU9wdHMu ZHVyYXRpb24saC50cmFuc2l0aW9uKHQsZS5mcmFtZS5kYXRhLGUuZnJhbWUubGF5b3V0LF8u Y29lcmNlVHJhY2VJbmRpY2VzKHQsZS5mcmFtZS50cmFjZXMpLGUuZnJhbWVPcHRzLGUudHJh bnNpdGlvbk9wdHMpLnRoZW4oKGZ1bmN0aW9uKCl7ZS5vbkNvbXBsZXRlJiZlLm9uQ29tcGxl dGUoKX0pKSx0LmVtaXQoInBsb3RseV9hbmltYXRpbmdmcmFtZSIse25hbWU6cixmcmFtZTpl LmZyYW1lLGFuaW1hdGlvbjp7ZnJhbWU6ZS5mcmFtZU9wdHMsdHJhbnNpdGlvbjplLnRyYW5z aXRpb25PcHRzfX0pfWVsc2UgdC5lbWl0KCJwbG90bHlfYW5pbWF0ZWQiKSx3aW5kb3cuY2Fu Y2VsQW5pbWF0aW9uRnJhbWUobi5fYW5pbWF0aW9uUmFmKSxuLl9hbmltYXRpb25SYWY9bnVs bH1mdW5jdGlvbiBwKCl7dC5lbWl0KCJwbG90bHlfYW5pbWF0aW5nIiksbi5fbGFzdEZyYW1l QXQ9LTEvMCxuLl90aW1lVG9OZXh0PTAsbi5fcnVubmluZ1RyYW5zaXRpb25zPTAsbi5fY3Vy cmVudEZyYW1lPW51bGw7dmFyIGU9ZnVuY3Rpb24oKXtuLl9hbmltYXRpb25SYWY9d2luZG93 LnJlcXVlc3RBbmltYXRpb25GcmFtZShlKSxEYXRlLm5vdygpLW4uX2xhc3RGcmFtZUF0Pm4u X3RpbWVUb05leHQmJmYoKX07ZSgpfXZhciBkLG0sZz0wO2Z1bmN0aW9uIHYodCl7cmV0dXJu IEFycmF5LmlzQXJyYXkoaSk/Zz49aS5sZW5ndGg/dC50cmFuc2l0aW9uT3B0cz1pW2ddOnQu dHJhbnNpdGlvbk9wdHM9aVswXTp0LnRyYW5zaXRpb25PcHRzPWksZysrLHR9dmFyIHk9W10s eD1udWxsPT1lLGI9QXJyYXkuaXNBcnJheShlKTtpZigheCYmIWImJm8uaXNQbGFpbk9iamVj dChlKSl5LnB1c2goe3R5cGU6Im9iamVjdCIsZGF0YTp2KG8uZXh0ZW5kRmxhdCh7fSxlKSl9 KTtlbHNlIGlmKHh8fC0xIT09WyJzdHJpbmciLCJudW1iZXIiXS5pbmRleE9mKHR5cGVvZiBl KSlmb3IoZD0wO2Q8bi5fZnJhbWVzLmxlbmd0aDtkKyspKG09bi5fZnJhbWVzW2RdKSYmKHh8 fFN0cmluZyhtLmdyb3VwKT09PVN0cmluZyhlKSkmJnkucHVzaCh7dHlwZToiYnluYW1lIixu YW1lOlN0cmluZyhtLm5hbWUpLGRhdGE6dih7bmFtZTptLm5hbWV9KX0pO2Vsc2UgaWYoYilm b3IoZD0wO2Q8ZS5sZW5ndGg7ZCsrKXt2YXIgdz1lW2RdOy0xIT09WyJudW1iZXIiLCJzdHJp bmciXS5pbmRleE9mKHR5cGVvZiB3KT8odz1TdHJpbmcodykseS5wdXNoKHt0eXBlOiJieW5h bWUiLG5hbWU6dyxkYXRhOnYoe25hbWU6d30pfSkpOm8uaXNQbGFpbk9iamVjdCh3KSYmeS5w dXNoKHt0eXBlOiJvYmplY3QiLGRhdGE6dihvLmV4dGVuZEZsYXQoe30sdykpfSl9Zm9yKGQ9 MDtkPHkubGVuZ3RoO2QrKylpZigiYnluYW1lIj09PShtPXlbZF0pLnR5cGUmJiFuLl9mcmFt ZUhhc2hbbS5kYXRhLm5hbWVdKXJldHVybiBvLndhcm4oJ2FuaW1hdGUgZmFpbHVyZTogZnJh bWUgbm90IGZvdW5kOiAiJyttLmRhdGEubmFtZSsnIicpLHZvaWQgdSgpOy0xIT09WyJuZXh0 IiwiaW1tZWRpYXRlIl0uaW5kZXhPZihyLm1vZGUpJiZmdW5jdGlvbigpe2lmKDAhPT1uLl9m cmFtZVF1ZXVlLmxlbmd0aCl7Zm9yKDtuLl9mcmFtZVF1ZXVlLmxlbmd0aDspe3ZhciBlPW4u X2ZyYW1lUXVldWUucG9wKCk7ZS5vbkludGVycnVwdCYmZS5vbkludGVycnVwdCgpfXQuZW1p dCgicGxvdGx5X2FuaW1hdGlvbmludGVycnVwdGVkIixbXSl9fSgpLCJyZXZlcnNlIj09PXIu ZGlyZWN0aW9uJiZ5LnJldmVyc2UoKTt2YXIgVD10Ll9mdWxsTGF5b3V0Ll9jdXJyZW50RnJh bWU7aWYoVCYmci5mcm9tY3VycmVudCl7dmFyIGs9LTE7Zm9yKGQ9MDtkPHkubGVuZ3RoO2Qr KylpZigiYnluYW1lIj09PShtPXlbZF0pLnR5cGUmJm0ubmFtZT09PVQpe2s9ZDticmVha31p ZihrPjAmJms8eS5sZW5ndGgtMSl7dmFyIEE9W107Zm9yKGQ9MDtkPHkubGVuZ3RoO2QrKylt PXlbZF0sKCJieW5hbWUiIT09eVtkXS50eXBlfHxkPmspJiZBLnB1c2gobSk7eT1BfX15Lmxl bmd0aD4wP2Z1bmN0aW9uKGUpe2lmKDAhPT1lLmxlbmd0aCl7Zm9yKHZhciBpPTA7aTxlLmxl bmd0aDtpKyspe3ZhciBvO289ImJ5bmFtZSI9PT1lW2ldLnR5cGU/aC5jb21wdXRlRnJhbWUo dCxlW2ldLm5hbWUpOmVbaV0uZGF0YTt2YXIgZj1sKGkpLGQ9cyhpKTtkLmR1cmF0aW9uPU1h dGgubWluKGQuZHVyYXRpb24sZi5kdXJhdGlvbik7dmFyIG09e2ZyYW1lOm8sbmFtZTplW2ld Lm5hbWUsZnJhbWVPcHRzOmYsdHJhbnNpdGlvbk9wdHM6ZH07aT09PWUubGVuZ3RoLTEmJiht Lm9uQ29tcGxldGU9YyhhLDIpLG0ub25JbnRlcnJ1cHQ9dSksbi5fZnJhbWVRdWV1ZS5wdXNo KG0pfSJpbW1lZGlhdGUiPT09ci5tb2RlJiYobi5fbGFzdEZyYW1lQXQ9LTEvMCksbi5fYW5p bWF0aW9uUmFmfHxwKCl9fSh5KToodC5lbWl0KCJwbG90bHlfYW5pbWF0ZWQiKSxhKCkpfSkp fSxyLmFkZEZyYW1lcz1mdW5jdGlvbih0LGUscil7aWYodD1vLmdldEdyYXBoRGl2KHQpLG51 bGw9PWUpcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO2lmKCFvLmlzUGxvdERpdih0KSl0aHJv dyBuZXcgRXJyb3IoIlRoaXMgZWxlbWVudCBpcyBub3QgYSBQbG90bHkgcGxvdDogIit0KyIu IEl0J3MgbGlrZWx5IHRoYXQgeW91J3ZlIGZhaWxlZCB0byBjcmVhdGUgYSBwbG90IGJlZm9y ZSBhZGRpbmcgZnJhbWVzLiBGb3IgbW9yZSBkZXRhaWxzLCBzZWUgaHR0cHM6Ly9wbG90bHku Y29tL2phdmFzY3JpcHQvYW5pbWF0aW9ucy8iKTt2YXIgbixpLGEscyxsPXQuX3RyYW5zaXRp b25EYXRhLl9mcmFtZXMsdT10Ll90cmFuc2l0aW9uRGF0YS5fZnJhbWVIYXNoO2lmKCFBcnJh eS5pc0FycmF5KGUpKXRocm93IG5ldyBFcnJvcigiYWRkRnJhbWVzIGZhaWx1cmU6IGZyYW1l TGlzdCBtdXN0IGJlIGFuIEFycmF5IG9mIGZyYW1lIGRlZmluaXRpb25zIitlKTt2YXIgZj1s Lmxlbmd0aCsyKmUubGVuZ3RoLHA9W10sZD17fTtmb3Iobj1lLmxlbmd0aC0xO24+PTA7bi0t KWlmKG8uaXNQbGFpbk9iamVjdChlW25dKSl7dmFyIG09ZVtuXS5uYW1lLGc9KHVbbV18fGRb bV18fHt9KS5uYW1lLHY9ZVtuXS5uYW1lLHk9dVtnXXx8ZFtnXTtnJiZ2JiYibnVtYmVyIj09 dHlwZW9mIHYmJnkmJkE8NSYmKEErKyxvLndhcm4oJ2FkZEZyYW1lczogb3ZlcndyaXRpbmcg ZnJhbWUgIicrKHVbZ118fGRbZ10pLm5hbWUrJyIgd2l0aCBhIGZyYW1lIHdob3NlIG5hbWUg b2YgdHlwZSAibnVtYmVyIiBhbHNvIGVxdWF0ZXMgdG8gIicrZysnIi4gVGhpcyBpcyB2YWxp ZCBidXQgbWF5IHBvdGVudGlhbGx5IGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBzaW5j ZSBhbGwgcGxvdGx5LmpzIGZyYW1lIG5hbWVzIGFyZSBzdG9yZWQgaW50ZXJuYWxseSBhcyBz dHJpbmdzLicpLDU9PT1BJiZvLndhcm4oImFkZEZyYW1lczogVGhpcyBBUEkgY2FsbCBoYXMg eWllbGRlZCB0b28gbWFueSBvZiB0aGVzZSB3YXJuaW5ncy4gRm9yIHRoZSByZXN0IG9mIHRo aXMgY2FsbCwgZnVydGhlciB3YXJuaW5ncyBhYm91dCBudW1lcmljIGZyYW1lIG5hbWVzIHdp bGwgYmUgc3VwcHJlc3NlZC4iKSksZFttXT17bmFtZTptfSxwLnB1c2goe2ZyYW1lOmguc3Vw cGx5RnJhbWVEZWZhdWx0cyhlW25dKSxpbmRleDpyJiZ2b2lkIDAhPT1yW25dJiZudWxsIT09 cltuXT9yW25dOmYrbn0pfXAuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5pbmRleD5l LmluZGV4Py0xOnQuaW5kZXg8ZS5pbmRleD8xOjB9KSk7dmFyIHg9W10sYj1bXSxfPWwubGVu Z3RoO2ZvcihuPXAubGVuZ3RoLTE7bj49MDtuLS0pe2lmKCJudW1iZXIiPT10eXBlb2YoaT1w W25dLmZyYW1lKS5uYW1lJiZvLndhcm4oIldhcm5pbmc6IGFkZEZyYW1lcyBhY2NlcHRzIGZy YW1lcyB3aXRoIG51bWVyaWMgbmFtZXMsIGJ1dCB0aGUgbnVtYmVycyBhcmVpbXBsaWNpdGx5 IGNhc3QgdG8gc3RyaW5ncyIpLCFpLm5hbWUpZm9yKDt1W2kubmFtZT0iZnJhbWUgIit0Ll90 cmFuc2l0aW9uRGF0YS5fY291bnRlcisrXTspO2lmKHVbaS5uYW1lXSl7Zm9yKGE9MDthPGwu bGVuZ3RoJiYobFthXXx8e30pLm5hbWUhPT1pLm5hbWU7YSsrKTt4LnB1c2goe3R5cGU6InJl cGxhY2UiLGluZGV4OmEsdmFsdWU6aX0pLGIudW5zaGlmdCh7dHlwZToicmVwbGFjZSIsaW5k ZXg6YSx2YWx1ZTpsW2FdfSl9ZWxzZSBzPU1hdGgubWF4KDAsTWF0aC5taW4ocFtuXS5pbmRl eCxfKSkseC5wdXNoKHt0eXBlOiJpbnNlcnQiLGluZGV4OnMsdmFsdWU6aX0pLGIudW5zaGlm dCh7dHlwZToiZGVsZXRlIixpbmRleDpzfSksXysrfXZhciB3PWgubW9kaWZ5RnJhbWVzLFQ9 aC5tb2RpZnlGcmFtZXMsaz1bdCxiXSxNPVt0LHhdO3JldHVybiBjJiZjLmFkZCh0LHcsayxU LE0pLGgubW9kaWZ5RnJhbWVzKHQseCl9LHIuZGVsZXRlRnJhbWVzPWZ1bmN0aW9uKHQsZSl7 aWYodD1vLmdldEdyYXBoRGl2KHQpLCFvLmlzUGxvdERpdih0KSl0aHJvdyBuZXcgRXJyb3Io IlRoaXMgZWxlbWVudCBpcyBub3QgYSBQbG90bHkgcGxvdDogIit0KTt2YXIgcixuLGk9dC5f dHJhbnNpdGlvbkRhdGEuX2ZyYW1lcyxhPVtdLHM9W107aWYoIWUpZm9yKGU9W10scj0wO3I8 aS5sZW5ndGg7cisrKWUucHVzaChyKTtmb3IoKGU9ZS5zbGljZSgpKS5zb3J0KCkscj1lLmxl bmd0aC0xO3I+PTA7ci0tKW49ZVtyXSxhLnB1c2goe3R5cGU6ImRlbGV0ZSIsaW5kZXg6bn0p LHMudW5zaGlmdCh7dHlwZToiaW5zZXJ0IixpbmRleDpuLHZhbHVlOmlbbl19KTt2YXIgbD1o Lm1vZGlmeUZyYW1lcyx1PWgubW9kaWZ5RnJhbWVzLGY9W3Qsc10scD1bdCxhXTtyZXR1cm4g YyYmYy5hZGQodCxsLGYsdSxwKSxoLm1vZGlmeUZyYW1lcyh0LGEpfSxyLmFkZFRyYWNlcz1m dW5jdGlvbiB0KGUsbixpKXtlPW8uZ2V0R3JhcGhEaXYoZSk7dmFyIGEscyxsPVtdLHU9ci5k ZWxldGVUcmFjZXMsZj10LGg9W2UsbF0scD1bZSxuXTtmb3IoZnVuY3Rpb24odCxlLHIpe3Zh ciBuLGk7aWYoIUFycmF5LmlzQXJyYXkodC5kYXRhKSl0aHJvdyBuZXcgRXJyb3IoImdkLmRh dGEgbXVzdCBiZSBhbiBhcnJheS4iKTtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBFcnJvcigi dHJhY2VzIG11c3QgYmUgZGVmaW5lZC4iKTtmb3IoQXJyYXkuaXNBcnJheShlKXx8KGU9W2Vd KSxuPTA7bjxlLmxlbmd0aDtuKyspaWYoIm9iamVjdCIhPXR5cGVvZihpPWVbbl0pfHxBcnJh eS5pc0FycmF5KGkpfHxudWxsPT09aSl0aHJvdyBuZXcgRXJyb3IoImFsbCB2YWx1ZXMgaW4g dHJhY2VzIGFycmF5IG11c3QgYmUgbm9uLWFycmF5IG9iamVjdHMiKTtpZih2b2lkIDA9PT1y fHxBcnJheS5pc0FycmF5KHIpfHwocj1bcl0pLHZvaWQgMCE9PXImJnIubGVuZ3RoIT09ZS5s ZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJpZiBpbmRpY2VzIGlzIHNwZWNpZmllZCwgdHJhY2Vz Lmxlbmd0aCBtdXN0IGVxdWFsIGluZGljZXMubGVuZ3RoIil9KGUsbixpKSxBcnJheS5pc0Fy cmF5KG4pfHwobj1bbl0pLG49bi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBvLmV4dGVuZEZs YXQoe30sdCl9KSksXy5jbGVhbkRhdGEobiksYT0wO2E8bi5sZW5ndGg7YSsrKWUuZGF0YS5w dXNoKG5bYV0pO2ZvcihhPTA7YTxuLmxlbmd0aDthKyspbC5wdXNoKC1uLmxlbmd0aCthKTtp Zih2b2lkIDA9PT1pKXJldHVybiBzPXIucmVkcmF3KGUpLGMuYWRkKGUsdSxoLGYscCkscztB cnJheS5pc0FycmF5KGkpfHwoaT1baV0pO3RyeXtJKGUsbCxpKX1jYXRjaCh0KXt0aHJvdyBl LmRhdGEuc3BsaWNlKGUuZGF0YS5sZW5ndGgtbi5sZW5ndGgsbi5sZW5ndGgpLHR9cmV0dXJu IGMuc3RhcnRTZXF1ZW5jZShlKSxjLmFkZChlLHUsaCxmLHApLHM9ci5tb3ZlVHJhY2VzKGUs bCxpKSxjLnN0b3BTZXF1ZW5jZShlKSxzfSxyLmRlbGV0ZVRyYWNlcz1mdW5jdGlvbiB0KGUs bil7ZT1vLmdldEdyYXBoRGl2KGUpO3ZhciBpLGEscz1bXSxsPXIuYWRkVHJhY2VzLHU9dCxm PVtlLHMsbl0saD1bZSxuXTtpZih2b2lkIDA9PT1uKXRocm93IG5ldyBFcnJvcigiaW5kaWNl cyBtdXN0IGJlIGFuIGludGVnZXIgb3IgYXJyYXkgb2YgaW50ZWdlcnMuIik7Zm9yKEFycmF5 LmlzQXJyYXkobil8fChuPVtuXSksUChlLG4sImluZGljZXMiKSwobj1DKG4sZS5kYXRhLmxl bmd0aC0xKSkuc29ydChvLnNvcnRlckRlcyksaT0wO2k8bi5sZW5ndGg7aSs9MSlhPWUuZGF0 YS5zcGxpY2UobltpXSwxKVswXSxzLnB1c2goYSk7dmFyIHA9ci5yZWRyYXcoZSk7cmV0dXJu IGMuYWRkKGUsbCxmLHUsaCkscH0sci5leHRlbmRUcmFjZXM9ZnVuY3Rpb24gdChlLG4saSxh KXtmdW5jdGlvbiBzKHQsZSxyKXt2YXIgbixpO2lmKG8uaXNUeXBlZEFycmF5KHQpKWlmKHI8 MCl7dmFyIGE9bmV3IHQuY29uc3RydWN0b3IoMCkscz16KHQsZSk7cjwwPyhuPXMsaT1hKToo bj1hLGk9cyl9ZWxzZSBpZihuPW5ldyB0LmNvbnN0cnVjdG9yKHIpLGk9bmV3IHQuY29uc3Ry dWN0b3IodC5sZW5ndGgrZS5sZW5ndGgtcikscj09PWUubGVuZ3RoKW4uc2V0KGUpLGkuc2V0 KHQpO2Vsc2UgaWYocjxlLmxlbmd0aCl7dmFyIGw9ZS5sZW5ndGgtcjtuLnNldChlLnN1YmFy cmF5KGwpKSxpLnNldCh0KSxpLnNldChlLnN1YmFycmF5KDAsbCksdC5sZW5ndGgpfWVsc2V7 dmFyIGM9ci1lLmxlbmd0aCx1PXQubGVuZ3RoLWM7bi5zZXQodC5zdWJhcnJheSh1KSksbi5z ZXQoZSxjKSxpLnNldCh0LnN1YmFycmF5KDAsdSkpfWVsc2Ugbj10LmNvbmNhdChlKSxpPXI+ PTAmJnI8bi5sZW5ndGg/bi5zcGxpY2UoMCxuLmxlbmd0aC1yKTpbXTtyZXR1cm5bbixpXX12 YXIgbD1PKGU9by5nZXRHcmFwaERpdihlKSxuLGksYSxzKSx1PXIucmVkcmF3KGUpLGY9W2Us bC51cGRhdGUsaSxsLm1heFBvaW50c107cmV0dXJuIGMuYWRkKGUsci5wcmVwZW5kVHJhY2Vz LGYsdCxhcmd1bWVudHMpLHV9LHIubW92ZVRyYWNlcz1mdW5jdGlvbiB0KGUsbixpKXt2YXIg YSxzPVtdLGw9W10sdT10LGY9dCxoPVtlPW8uZ2V0R3JhcGhEaXYoZSksaSxuXSxwPVtlLG4s aV07aWYoSShlLG4saSksbj1BcnJheS5pc0FycmF5KG4pP246W25dLHZvaWQgMD09PWkpZm9y KGk9W10sYT0wO2E8bi5sZW5ndGg7YSsrKWkucHVzaCgtbi5sZW5ndGgrYSk7Zm9yKGk9QXJy YXkuaXNBcnJheShpKT9pOltpXSxuPUMobixlLmRhdGEubGVuZ3RoLTEpLGk9QyhpLGUuZGF0 YS5sZW5ndGgtMSksYT0wO2E8ZS5kYXRhLmxlbmd0aDthKyspLTE9PT1uLmluZGV4T2YoYSkm JnMucHVzaChlLmRhdGFbYV0pO2ZvcihhPTA7YTxuLmxlbmd0aDthKyspbC5wdXNoKHtuZXdJ bmRleDppW2FdLHRyYWNlOmUuZGF0YVtuW2FdXX0pO2ZvcihsLnNvcnQoKGZ1bmN0aW9uKHQs ZSl7cmV0dXJuIHQubmV3SW5kZXgtZS5uZXdJbmRleH0pKSxhPTA7YTxsLmxlbmd0aDthKz0x KXMuc3BsaWNlKGxbYV0ubmV3SW5kZXgsMCxsW2FdLnRyYWNlKTtlLmRhdGE9czt2YXIgZD1y LnJlZHJhdyhlKTtyZXR1cm4gYy5hZGQoZSx1LGgsZixwKSxkfSxyLnByZXBlbmRUcmFjZXM9 ZnVuY3Rpb24gdChlLG4saSxhKXtmdW5jdGlvbiBzKHQsZSxyKXt2YXIgbixpO2lmKG8uaXNU eXBlZEFycmF5KHQpKWlmKHI8PTApe3ZhciBhPW5ldyB0LmNvbnN0cnVjdG9yKDApLHM9eihl LHQpO3I8MD8obj1zLGk9YSk6KG49YSxpPXMpfWVsc2UgaWYobj1uZXcgdC5jb25zdHJ1Y3Rv cihyKSxpPW5ldyB0LmNvbnN0cnVjdG9yKHQubGVuZ3RoK2UubGVuZ3RoLXIpLHI9PT1lLmxl bmd0aCluLnNldChlKSxpLnNldCh0KTtlbHNlIGlmKHI8ZS5sZW5ndGgpe3ZhciBsPWUubGVu Z3RoLXI7bi5zZXQoZS5zdWJhcnJheSgwLGwpKSxpLnNldChlLnN1YmFycmF5KGwpKSxpLnNl dCh0LGwpfWVsc2V7dmFyIGM9ci1lLmxlbmd0aDtuLnNldChlKSxuLnNldCh0LnN1YmFycmF5 KDAsYyksZS5sZW5ndGgpLGkuc2V0KHQuc3ViYXJyYXkoYykpfWVsc2Ugbj1lLmNvbmNhdCh0 KSxpPXI+PTAmJnI8bi5sZW5ndGg/bi5zcGxpY2UocixuLmxlbmd0aCk6W107cmV0dXJuW24s aV19dmFyIGw9TyhlPW8uZ2V0R3JhcGhEaXYoZSksbixpLGEscyksdT1yLnJlZHJhdyhlKSxm PVtlLGwudXBkYXRlLGksbC5tYXhQb2ludHNdO3JldHVybiBjLmFkZChlLHIuZXh0ZW5kVHJh Y2VzLGYsdCxhcmd1bWVudHMpLHV9LHIubmV3UGxvdD1mdW5jdGlvbih0LGUsbixpKXtyZXR1 cm4gdD1vLmdldEdyYXBoRGl2KHQpLGguY2xlYW5QbG90KFtdLHt9LHQuX2Z1bGxEYXRhfHxb XSx0Ll9mdWxsTGF5b3V0fHx7fSksaC5wdXJnZSh0KSxyLl9kb1Bsb3QodCxlLG4saSl9LHIu X2RvUGxvdD1mdW5jdGlvbih0LGUsaSxhKXt2YXIgcztpZih0PW8uZ2V0R3JhcGhEaXYodCks bC5pbml0KHQpLG8uaXNQbGFpbk9iamVjdChlKSl7dmFyIGM9ZTtlPWMuZGF0YSxpPWMubGF5 b3V0LGE9Yy5jb25maWcscz1jLmZyYW1lc31pZighMT09PWwudHJpZ2dlckhhbmRsZXIodCwi cGxvdGx5X2JlZm9yZXBsb3QiLFtlLGksYV0pKXJldHVybiBQcm9taXNlLnJlamVjdCgpO2V8 fGl8fG8uaXNQbG90RGl2KHQpfHxvLndhcm4oIkNhbGxpbmcgX2RvUGxvdCBhcyBpZiByZWRy YXdpbmcgYnV0IHRoaXMgY29udGFpbmVyIGRvZXNuJ3QgeWV0IGhhdmUgYSBwbG90LiIsdCks TCh0LGEpLGl8fChpPXt9KSxuLnNlbGVjdCh0KS5jbGFzc2VkKCJqcy1wbG90bHktcGxvdCIs ITApLGQubWFrZVRlc3RlcigpLEFycmF5LmlzQXJyYXkodC5fcHJvbWlzZXMpfHwodC5fcHJv bWlzZXM9W10pO3ZhciBmPTA9PT0odC5kYXRhfHxbXSkubGVuZ3RoJiZBcnJheS5pc0FycmF5 KGUpO0FycmF5LmlzQXJyYXkoZSkmJihfLmNsZWFuRGF0YShlKSxmP3QuZGF0YT1lOnQuZGF0 YS5wdXNoLmFwcGx5KHQuZGF0YSxlKSx0LmVtcHR5PSExKSx0LmxheW91dCYmIWZ8fCh0Lmxh eW91dD1fLmNsZWFuTGF5b3V0KGkpKSxoLnN1cHBseURlZmF1bHRzKHQpO3ZhciBtPXQuX2Z1 bGxMYXlvdXQseT1tLl9oYXMoImNhcnRlc2lhbiIpO20uX3JlcGxvdHRpbmc9ITAsKGZ8fG0u X3Nob3VsZENyZWF0ZUJnTGF5ZXIpJiYoIWZ1bmN0aW9uKHQpe3ZhciBlPW4uc2VsZWN0KHQp LHI9dC5fZnVsbExheW91dDtpZihyLl9jYWxjSW52ZXJzZVRyYW5zZm9ybT1hdCxyLl9jYWxj SW52ZXJzZVRyYW5zZm9ybSh0KSxyLl9jb250YWluZXI9ZS5zZWxlY3RBbGwoIi5wbG90LWNv bnRhaW5lciIpLmRhdGEoWzBdKSxyLl9jb250YWluZXIuZW50ZXIoKS5pbnNlcnQoImRpdiIs IjpmaXJzdC1jaGlsZCIpLmNsYXNzZWQoInBsb3QtY29udGFpbmVyIiwhMCkuY2xhc3NlZCgi cGxvdGx5IiwhMCksci5fcGFwZXJkaXY9ci5fY29udGFpbmVyLnNlbGVjdEFsbCgiLnN2Zy1j b250YWluZXIiKS5kYXRhKFswXSksci5fcGFwZXJkaXYuZW50ZXIoKS5hcHBlbmQoImRpdiIp LmNsYXNzZWQoInVzZXItc2VsZWN0LW5vbmUiLCEwKS5jbGFzc2VkKCJzdmctY29udGFpbmVy IiwhMCkuc3R5bGUoInBvc2l0aW9uIiwicmVsYXRpdmUiKSxyLl9nbGNvbnRhaW5lcj1yLl9w YXBlcmRpdi5zZWxlY3RBbGwoIi5nbC1jb250YWluZXIiKS5kYXRhKFt7fV0pLHIuX2dsY29u dGFpbmVyLmVudGVyKCkuYXBwZW5kKCJkaXYiKS5jbGFzc2VkKCJnbC1jb250YWluZXIiLCEw KSxyLl9wYXBlcmRpdi5zZWxlY3RBbGwoIi5tYWluLXN2ZyIpLnJlbW92ZSgpLHIuX3BhcGVy ZGl2LnNlbGVjdCgiLm1vZGViYXItY29udGFpbmVyIikucmVtb3ZlKCksci5fcGFwZXI9ci5f cGFwZXJkaXYuaW5zZXJ0KCJzdmciLCI6Zmlyc3QtY2hpbGQiKS5jbGFzc2VkKCJtYWluLXN2 ZyIsITApLHIuX3RvcHBhcGVyPXIuX3BhcGVyZGl2LmFwcGVuZCgic3ZnIikuY2xhc3NlZCgi bWFpbi1zdmciLCEwKSxyLl9tb2RlYmFyZGl2PXIuX3BhcGVyZGl2LmFwcGVuZCgiZGl2Iiks ZGVsZXRlIHIuX21vZGVCYXIsci5faG92ZXJwYXBlcj1yLl9wYXBlcmRpdi5hcHBlbmQoInN2 ZyIpLmNsYXNzZWQoIm1haW4tc3ZnIiwhMCksIXIuX3VpZCl7dmFyIGk9e307bi5zZWxlY3RB bGwoImRlZnMiKS5lYWNoKChmdW5jdGlvbigpe3RoaXMuaWQmJihpW3RoaXMuaWQuc3BsaXQo Ii0iKVsxXV09MSl9KSksci5fdWlkPW8ucmFuZHN0cihpKX1yLl9wYXBlcmRpdi5zZWxlY3RB bGwoIi5tYWluLXN2ZyIpLmF0dHIodi5zdmdBdHRycyksci5fZGVmcz1yLl9wYXBlci5hcHBl bmQoImRlZnMiKS5hdHRyKCJpZCIsImRlZnMtIityLl91aWQpLHIuX2NsaXBzPXIuX2RlZnMu YXBwZW5kKCJnIikuY2xhc3NlZCgiY2xpcHMiLCEwKSxyLl90b3BkZWZzPXIuX3RvcHBhcGVy LmFwcGVuZCgiZGVmcyIpLmF0dHIoImlkIiwidG9wZGVmcy0iK3IuX3VpZCksci5fdG9wY2xp cHM9ci5fdG9wZGVmcy5hcHBlbmQoImciKS5jbGFzc2VkKCJjbGlwcyIsITApLHIuX2JnTGF5 ZXI9ci5fcGFwZXIuYXBwZW5kKCJnIikuY2xhc3NlZCgiYmdsYXllciIsITApLHIuX2RyYWdn ZXJzPXIuX3BhcGVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImRyYWdsYXllciIsITApO3ZhciBh PXIuX3BhcGVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImxheWVyLWJlbG93IiwhMCk7ci5faW1h Z2VMb3dlckxheWVyPWEuYXBwZW5kKCJnIikuY2xhc3NlZCgiaW1hZ2VsYXllciIsITApLHIu X3NoYXBlTG93ZXJMYXllcj1hLmFwcGVuZCgiZyIpLmNsYXNzZWQoInNoYXBlbGF5ZXIiLCEw KSxyLl9jYXJ0ZXNpYW5sYXllcj1yLl9wYXBlci5hcHBlbmQoImciKS5jbGFzc2VkKCJjYXJ0 ZXNpYW5sYXllciIsITApLHIuX3BvbGFybGF5ZXI9ci5fcGFwZXIuYXBwZW5kKCJnIikuY2xh c3NlZCgicG9sYXJsYXllciIsITApLHIuX3NtaXRobGF5ZXI9ci5fcGFwZXIuYXBwZW5kKCJn IikuY2xhc3NlZCgic21pdGhsYXllciIsITApLHIuX3Rlcm5hcnlsYXllcj1yLl9wYXBlci5h cHBlbmQoImciKS5jbGFzc2VkKCJ0ZXJuYXJ5bGF5ZXIiLCEwKSxyLl9nZW9sYXllcj1yLl9w YXBlci5hcHBlbmQoImciKS5jbGFzc2VkKCJnZW9sYXllciIsITApLHIuX2Z1bm5lbGFyZWFs YXllcj1yLl9wYXBlci5hcHBlbmQoImciKS5jbGFzc2VkKCJmdW5uZWxhcmVhbGF5ZXIiLCEw KSxyLl9waWVsYXllcj1yLl9wYXBlci5hcHBlbmQoImciKS5jbGFzc2VkKCJwaWVsYXllciIs ITApLHIuX2ljaWNsZWxheWVyPXIuX3BhcGVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImljaWNs ZWxheWVyIiwhMCksci5fdHJlZW1hcGxheWVyPXIuX3BhcGVyLmFwcGVuZCgiZyIpLmNsYXNz ZWQoInRyZWVtYXBsYXllciIsITApLHIuX3N1bmJ1cnN0bGF5ZXI9ci5fcGFwZXIuYXBwZW5k KCJnIikuY2xhc3NlZCgic3VuYnVyc3RsYXllciIsITApLHIuX2luZGljYXRvcmxheWVyPXIu X3RvcHBhcGVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImluZGljYXRvcmxheWVyIiwhMCksci5f Z2xpbWFnZXM9ci5fcGFwZXIuYXBwZW5kKCJnIikuY2xhc3NlZCgiZ2xpbWFnZXMiLCEwKTt2 YXIgcz1yLl90b3BwYXBlci5hcHBlbmQoImciKS5jbGFzc2VkKCJsYXllci1hYm92ZSIsITAp O3IuX2ltYWdlVXBwZXJMYXllcj1zLmFwcGVuZCgiZyIpLmNsYXNzZWQoImltYWdlbGF5ZXIi LCEwKSxyLl9zaGFwZVVwcGVyTGF5ZXI9cy5hcHBlbmQoImciKS5jbGFzc2VkKCJzaGFwZWxh eWVyIiwhMCksci5faW5mb2xheWVyPXIuX3RvcHBhcGVyLmFwcGVuZCgiZyIpLmNsYXNzZWQo ImluZm9sYXllciIsITApLHIuX21lbnVsYXllcj1yLl90b3BwYXBlci5hcHBlbmQoImciKS5j bGFzc2VkKCJtZW51bGF5ZXIiLCEwKSxyLl96b29tbGF5ZXI9ci5fdG9wcGFwZXIuYXBwZW5k KCJnIikuY2xhc3NlZCgiem9vbWxheWVyIiwhMCksci5faG92ZXJsYXllcj1yLl9ob3ZlcnBh cGVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImhvdmVybGF5ZXIiLCEwKSxyLl9tb2RlYmFyZGl2 LmNsYXNzZWQoIm1vZGViYXItY29udGFpbmVyIiwhMCkuc3R5bGUoInBvc2l0aW9uIiwiYWJz b2x1dGUiKS5zdHlsZSgidG9wIiwiMHB4Iikuc3R5bGUoInJpZ2h0IiwiMHB4IiksdC5lbWl0 KCJwbG90bHlfZnJhbWV3b3JrIil9KHQpLG0uX3Nob3VsZENyZWF0ZUJnTGF5ZXImJmRlbGV0 ZSBtLl9zaG91bGRDcmVhdGVCZ0xheWVyKSxkLmluaXRHcmFkaWVudHModCksZC5pbml0UGF0 dGVybnModCksZiYmcC5zYXZlU2hvd1NwaWtlSW5pdGlhbCh0KTt2YXIgeD0hdC5jYWxjZGF0 YXx8dC5jYWxjZGF0YS5sZW5ndGghPT0odC5fZnVsbERhdGF8fFtdKS5sZW5ndGg7eCYmaC5k b0NhbGNkYXRhKHQpO2Zvcih2YXIgYj0wO2I8dC5jYWxjZGF0YS5sZW5ndGg7YisrKXQuY2Fs Y2RhdGFbYl1bMF0udHJhY2U9dC5fZnVsbERhdGFbYl07dC5fY29udGV4dC5yZXNwb25zaXZl P3QuX3Jlc3BvbnNpdmVDaGFydEhhbmRsZXJ8fCh0Ll9yZXNwb25zaXZlQ2hhcnRIYW5kbGVy PWZ1bmN0aW9uKCl7by5pc0hpZGRlbih0KXx8aC5yZXNpemUodCl9LHdpbmRvdy5hZGRFdmVu dExpc3RlbmVyKCJyZXNpemUiLHQuX3Jlc3BvbnNpdmVDaGFydEhhbmRsZXIpKTpvLmNsZWFy UmVzcG9uc2l2ZSh0KTt2YXIgVD1vLmV4dGVuZEZsYXQoe30sbS5fc2l6ZSksaz0wO2Z1bmN0 aW9uIEEoKXtpZihoLmNsZWFyQXV0b01hcmdpbklkcyh0KSx3LmRyYXdNYXJnaW5QdXNoZXJz KHQpLHAuYWxsb3dBdXRvTWFyZ2luKHQpLG0uX2hhcygicGllIikpZm9yKHZhciBlPXQuX2Z1 bGxEYXRhLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXTsicGllIj09PW4udHlwZSYm bi5hdXRvbWFyZ2luJiZoLmFsbG93QXV0b01hcmdpbih0LCJwaWUuIituLnVpZCsiLmF1dG9t YXJnaW4iKX1yZXR1cm4gaC5kb0F1dG9NYXJnaW4odCksaC5wcmV2aW91c1Byb21pc2VzKHQp fWZ1bmN0aW9uIFMoKXt0Ll90cmFuc2l0aW9uaW5nfHwody5kb0F1dG9SYW5nZUFuZENvbnN0 cmFpbnRzKHQpLGYmJnAuc2F2ZVJhbmdlSW5pdGlhbCh0KSx1LmdldENvbXBvbmVudE1ldGhv ZCgicmFuZ2VzbGlkZXIiLCJjYWxjQXV0b3JhbmdlIikodCkpfXZhciBFPVtoLnByZXZpb3Vz UHJvbWlzZXMsZnVuY3Rpb24oKXtpZihzKXJldHVybiByLmFkZEZyYW1lcyh0LHMpfSxmdW5j dGlvbiBlKCl7Zm9yKHZhciByPW0uX2Jhc2VQbG90TW9kdWxlcyxuPTA7bjxyLmxlbmd0aDtu KyspcltuXS5kcmF3RnJhbWV3b3JrJiZyW25dLmRyYXdGcmFtZXdvcmsodCk7IW0uX2dsY2Fu dmFzJiZtLl9oYXMoImdsIikmJihtLl9nbGNhbnZhcz1tLl9nbGNvbnRhaW5lci5zZWxlY3RB bGwoIi5nbC1jYW52YXMiKS5kYXRhKFt7a2V5OiJjb250ZXh0TGF5ZXIiLGNvbnRleHQ6ITAs cGljazohMX0se2tleToiZm9jdXNMYXllciIsY29udGV4dDohMSxwaWNrOiExfSx7a2V5OiJw aWNrTGF5ZXIiLGNvbnRleHQ6ITEscGljazohMH1dLChmdW5jdGlvbih0KXtyZXR1cm4gdC5r ZXl9KSksbS5fZ2xjYW52YXMuZW50ZXIoKS5hcHBlbmQoImNhbnZhcyIpLmF0dHIoImNsYXNz IiwoZnVuY3Rpb24odCl7cmV0dXJuImdsLWNhbnZhcyBnbC1jYW52YXMtIit0LmtleS5yZXBs YWNlKCJMYXllciIsIiIpfSkpLnN0eWxlKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDowLGxl ZnQ6MCxvdmVyZmxvdzoidmlzaWJsZSIsInBvaW50ZXItZXZlbnRzIjoibm9uZSJ9KSk7dmFy IGk9dC5fY29udGV4dC5wbG90R2xQaXhlbFJhdGlvO2lmKG0uX2dsY2FudmFzKXttLl9nbGNh bnZhcy5hdHRyKCJ3aWR0aCIsbS53aWR0aCppKS5hdHRyKCJoZWlnaHQiLG0uaGVpZ2h0Kmkp LnN0eWxlKCJ3aWR0aCIsbS53aWR0aCsicHgiKS5zdHlsZSgiaGVpZ2h0IixtLmhlaWdodCsi cHgiKTt2YXIgYT1tLl9nbGNhbnZhcy5kYXRhKClbMF0ucmVnbDtpZihhJiYoTWF0aC5mbG9v cihtLndpZHRoKmkpIT09YS5fZ2wuZHJhd2luZ0J1ZmZlcldpZHRofHxNYXRoLmZsb29yKG0u aGVpZ2h0KmkpIT09YS5fZ2wuZHJhd2luZ0J1ZmZlckhlaWdodCkpe3ZhciBzPSJXZWJHTCBj b250ZXh0IGJ1ZmZlciBhbmQgY2FudmFzIGRpbWVuc2lvbnMgZG8gbm90IG1hdGNoIGR1ZSB0 byBicm93c2VyL1dlYkdMIGJ1Zy4iO2lmKCFrKXJldHVybiBvLmxvZyhzKyIgQ2xlYXJpbmcg Z3JhcGggYW5kIHBsb3R0aW5nIGFnYWluLiIpLGguY2xlYW5QbG90KFtdLHt9LHQuX2Z1bGxE YXRhLG0pLGguc3VwcGx5RGVmYXVsdHModCksbT10Ll9mdWxsTGF5b3V0LGguZG9DYWxjZGF0 YSh0KSxrKyssZSgpO28uZXJyb3Iocyl9fXJldHVybiJoIj09PW0ubW9kZWJhci5vcmllbnRh dGlvbj9tLl9tb2RlYmFyZGl2LnN0eWxlKCJoZWlnaHQiLG51bGwpLnN0eWxlKCJ3aWR0aCIs IjEwMCUiKTptLl9tb2RlYmFyZGl2LnN0eWxlKCJ3aWR0aCIsbnVsbCkuc3R5bGUoImhlaWdo dCIsbS5oZWlnaHQrInB4IiksaC5wcmV2aW91c1Byb21pc2VzKHQpfSxBLGZ1bmN0aW9uKCl7 aWYoaC5kaWRNYXJnaW5DaGFuZ2UoVCxtLl9zaXplKSlyZXR1cm4gby5zeW5jT3JBc3luYyhb QSx3LmxheW91dFN0eWxlc10sdCl9XTt5JiZFLnB1c2goKGZ1bmN0aW9uKCl7aWYoeClyZXR1 cm4gby5zeW5jT3JBc3luYyhbdS5nZXRDb21wb25lbnRNZXRob2QoInNoYXBlcyIsImNhbGNB dXRvcmFuZ2UiKSx1LmdldENvbXBvbmVudE1ldGhvZCgiYW5ub3RhdGlvbnMiLCJjYWxjQXV0 b3JhbmdlIiksU10sdCk7UygpfSkpLEUucHVzaCh3LmxheW91dFN0eWxlcykseSYmRS5wdXNo KChmdW5jdGlvbigpe3JldHVybiBwLmRyYXcodCxmPyIiOiJyZWRyYXciKX0pLChmdW5jdGlv bih0KXt0Ll9mdWxsTGF5b3V0Ll9pbnNpZGVUaWNrTGFiZWxzQXV0b3JhbmdlJiZVKHQsdC5f ZnVsbExheW91dC5faW5zaWRlVGlja0xhYmVsc0F1dG9yYW5nZSkudGhlbigoZnVuY3Rpb24o KXt0Ll9mdWxsTGF5b3V0Ll9pbnNpZGVUaWNrTGFiZWxzQXV0b3JhbmdlPXZvaWQgMH0pKX0p KSxFLnB1c2gody5kcmF3RGF0YSx3LmZpbmFsRHJhdyxnLGguYWRkTGlua3MsaC5yZWhvdmVy LGgucmVkcmFnLGguZG9BdXRvTWFyZ2luLChmdW5jdGlvbih0KXt0Ll9mdWxsTGF5b3V0Ll9p bnNpZGVUaWNrTGFiZWxzQXV0b3JhbmdlJiZmJiZwLnNhdmVSYW5nZUluaXRpYWwodCwhMCl9 KSxoLnByZXZpb3VzUHJvbWlzZXMpO3ZhciBDPW8uc3luY09yQXN5bmMoRSx0KTtyZXR1cm4g QyYmQy50aGVufHwoQz1Qcm9taXNlLnJlc29sdmUoKSksQy50aGVuKChmdW5jdGlvbigpe3Jl dHVybiBNKHQpLHR9KSl9LHIucHVyZ2U9ZnVuY3Rpb24odCl7dmFyIGU9KHQ9by5nZXRHcmFw aERpdih0KSkuX2Z1bGxMYXlvdXR8fHt9LHI9dC5fZnVsbERhdGF8fFtdO3JldHVybiBoLmNs ZWFuUGxvdChbXSx7fSxyLGUpLGgucHVyZ2UodCksbC5wdXJnZSh0KSxlLl9jb250YWluZXIm JmUuX2NvbnRhaW5lci5yZW1vdmUoKSxkZWxldGUgdC5fY29udGV4dCx0fSxyLnJlYWN0PWZ1 bmN0aW9uKHQsZSxuLGkpe3ZhciBhLGw7dD1vLmdldEdyYXBoRGl2KHQpLF8uY2xlYXJQcm9t aXNlUXVldWUodCk7dmFyIGM9dC5fZnVsbERhdGEscD10Ll9mdWxsTGF5b3V0O2lmKG8uaXNQ bG90RGl2KHQpJiZjJiZwKXtpZihvLmlzUGxhaW5PYmplY3QoZSkpe3ZhciBkPWU7ZT1kLmRh dGEsbj1kLmxheW91dCxpPWQuY29uZmlnLGE9ZC5mcmFtZXN9dmFyIG09ITE7aWYoaSl7dmFy IGc9by5leHRlbmREZWVwKHt9LHQuX2NvbnRleHQpO3QuX2NvbnRleHQ9dm9pZCAwLEwodCxp KSxtPWZ1bmN0aW9uIHQoZSxyKXt2YXIgbjtmb3IobiBpbiBlKWlmKCJfIiE9PW4uY2hhckF0 KDApKXt2YXIgaT1lW25dLGE9cltuXTtpZihpIT09YSlpZihvLmlzUGxhaW5PYmplY3QoaSkm Jm8uaXNQbGFpbk9iamVjdChhKSl7aWYodChpLGEpKXJldHVybiEwfWVsc2V7aWYoIUFycmF5 LmlzQXJyYXkoaSl8fCFBcnJheS5pc0FycmF5KGEpKXJldHVybiEwO2lmKGkubGVuZ3RoIT09 YS5sZW5ndGgpcmV0dXJuITA7Zm9yKHZhciBzPTA7czxpLmxlbmd0aDtzKyspaWYoaVtzXSE9 PWFbc10pe2lmKCFvLmlzUGxhaW5PYmplY3QoaVtzXSl8fCFvLmlzUGxhaW5PYmplY3QoYVtz XSkpcmV0dXJuITA7aWYodChpW3NdLGFbc10pKXJldHVybiEwfX19fShnLHQuX2NvbnRleHQp fXQuZGF0YT1lfHxbXSxfLmNsZWFuRGF0YSh0LmRhdGEpLHQubGF5b3V0PW58fHt9LF8uY2xl YW5MYXlvdXQodC5sYXlvdXQpLGZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpLGEsbCxjLHUsZixo LHAsZCxtLGc9bi5fcHJlR1VJLHY9W10seT17fSx4PXt9O2ZvcihpIGluIGcpe2lmKHU9JChp LEspKXtpZihkPXUuaGVhZCxtPXUudGFpbCxhPXUuYXR0cnx8ZCsiLnVpcmV2aXNpb24iLChj PShsPXMobixhKS5nZXQoKSkmJnR0KGEsZSkpJiZjPT09bCl7aWYobnVsbD09PShmPWdbaV0p JiYoZj12b2lkIDApLG50KHA9KGg9cyhlLGkpKS5nZXQoKSxmKSl7dm9pZCAwPT09cCYmImF1 dG9yYW5nZSI9PT1tJiZ2LnB1c2goZCksaC5zZXQoUihzKG4saSkuZ2V0KCkpKTtjb250aW51 ZX1pZigiYXV0b3JhbmdlIj09PW18fCJyYW5nZVsiPT09bS5zdWJzdHIoMCw2KSl7dmFyIGI9 Z1tkKyIucmFuZ2VbMF0iXSxfPWdbZCsiLnJhbmdlWzFdIl0sdz1nW2QrIi5hdXRvcmFuZ2Ui XTtpZih3fHxudWxsPT09dyYmbnVsbD09PWImJm51bGw9PT1fKXtpZighKGQgaW4geSkpe3Zh ciBUPXMoZSxkKS5nZXQoKTt5W2RdPVQmJihULmF1dG9yYW5nZXx8ITEhPT1ULmF1dG9yYW5n ZSYmKCFULnJhbmdlfHwyIT09VC5yYW5nZS5sZW5ndGgpKX1pZih5W2RdKXtoLnNldChSKHMo bixpKS5nZXQoKSkpO2NvbnRpbnVlfX19fX1lbHNlIG8ud2FybigidW5yZWNvZ25pemVkIEdV SSBlZGl0OiAiK2kpO2RlbGV0ZSBnW2ldLHUmJiJyYW5nZVsiPT09dS50YWlsLnN1YnN0cigw LDYpJiYoeFt1LmhlYWRdPTEpfWZvcih2YXIgaz0wO2s8di5sZW5ndGg7aysrKXt2YXIgQT12 W2tdO2lmKHhbQV0pe3ZhciBNPXMoZSxBKS5nZXQoKTtNJiZkZWxldGUgTS5hdXRvcmFuZ2V9 fXZhciBTPW4uX3RyYWNlUHJlR1VJO2Zvcih2YXIgRSBpbiBTKXt2YXIgTCxDPVNbRV0sUD1u dWxsO2ZvcihpIGluIEMpe2lmKCFQKXt2YXIgST1ldChFLHIpO2lmKEk8MCl7ZGVsZXRlIFNb RV07YnJlYWt9dmFyIE89cnQoRSx0LChMPXJbSV0uX2Z1bGxJbnB1dCkuaW5kZXgpO2lmKE88 MCl7ZGVsZXRlIFNbRV07YnJlYWt9UD10W09dfWlmKHU9JChpLFEpKXtpZih1LmF0dHI/Yz0o bD1zKG4sdS5hdHRyKS5nZXQoKSkmJnR0KHUuYXR0cixlKToobD1MLnVpcmV2aXNpb24sdm9p ZCAwPT09KGM9UC51aXJldmlzaW9uKSYmKGM9ZS51aXJldmlzaW9uKSksYyYmYz09PWwmJihu dWxsPT09KGY9Q1tpXSkmJihmPXZvaWQgMCksbnQocD0oaD1zKFAsaSkpLmdldCgpLGYpKSl7 aC5zZXQoUihzKEwsaSkuZ2V0KCkpKTtjb250aW51ZX19ZWxzZSBvLndhcm4oInVucmVjb2du aXplZCBHVUkgZWRpdDogIitpKyIgaW4gdHJhY2UgdWlkICIrRSk7ZGVsZXRlIENbaV19fX0o dC5kYXRhLHQubGF5b3V0LGMscCksaC5zdXBwbHlEZWZhdWx0cyh0LHtza2lwVXBkYXRlQ2Fs YzohMH0pO3ZhciB2PXQuX2Z1bGxEYXRhLHk9dC5fZnVsbExheW91dCx4PXZvaWQgMD09PXku ZGF0YXJldmlzaW9uLGI9eS50cmFuc2l0aW9uLGs9ZnVuY3Rpb24odCxlLHIsbixpKXt2YXIg YT1ULmxheW91dEZsYWdzKCk7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gZi5nZXRMYXlvdXRWYWxP YmplY3Qocix0KX1hLmFycmF5cz17fSxhLnJhbmdlc0FsdGVyZWQ9e30sYS5uQ2hhbmdlcz0w LGEubkNoYW5nZXNBbmltPTAsaXQoZSxyLFtdLHtnZXRWYWxPYmplY3Q6byxmbGFnczphLGlt bXV0YWJsZTpuLHRyYW5zaXRpb246aSxnZDp0fSksKGEucGxvdHx8YS5jYWxjKSYmKGEubGF5 b3V0UmVwbG90PSEwKTtpJiZhLm5DaGFuZ2VzJiZhLm5DaGFuZ2VzQW5pbSYmKGEuYW5pbT1h Lm5DaGFuZ2VzPT09YS5uQ2hhbmdlc0FuaW0/ImFsbCI6InNvbWUiKTtyZXR1cm4gYX0odCxw LHkseCxiKSxBPWsubmV3RGF0YVJldmlzaW9uLFM9ZnVuY3Rpb24odCxlLHIsbixpLGEpe3Zh ciBvPWUubGVuZ3RoPT09ci5sZW5ndGg7aWYoIWkmJiFvKXJldHVybntmdWxsUmVwbG90OiEw LGNhbGM6ITB9O3ZhciBzLGwsYz1ULnRyYWNlRmxhZ3MoKTtjLmFycmF5cz17fSxjLm5DaGFu Z2VzPTAsYy5uQ2hhbmdlc0FuaW09MDt2YXIgdT17Z2V0VmFsT2JqZWN0OmZ1bmN0aW9uKHQp e3ZhciBlPWYuZ2V0VHJhY2VWYWxPYmplY3QobCx0KTtyZXR1cm4hbC5fbW9kdWxlLmFuaW1h dGFibGUmJmUuYW5pbSYmKGUuYW5pbT0hMSksZX0sZmxhZ3M6YyxpbW11dGFibGU6bix0cmFu c2l0aW9uOmksbmV3RGF0YVJldmlzaW9uOmEsZ2Q6dH0scD17fTtmb3Iocz0wO3M8ZS5sZW5n dGg7cysrKWlmKHJbc10pe2lmKGw9cltzXS5fZnVsbElucHV0LGguaGFzTWFrZXNEYXRhVHJh bnNmb3JtKGwpJiYobD1yW3NdKSxwW2wudWlkXSljb250aW51ZTtwW2wudWlkXT0xLGl0KGVb c10uX2Z1bGxJbnB1dCxsLFtdLHUpfShjLmNhbGN8fGMucGxvdCkmJihjLmZ1bGxSZXBsb3Q9 ITApO2kmJmMubkNoYW5nZXMmJmMubkNoYW5nZXNBbmltJiYoYy5hbmltPWMubkNoYW5nZXM9 PT1jLm5DaGFuZ2VzQW5pbSYmbz8iYWxsIjoic29tZSIpO3JldHVybiBjfSh0LGMsdix4LGIs QSk7aWYoWCh0KSYmKGsubGF5b3V0UmVwbG90PSEwKSxTLmNhbGN8fGsuY2FsYyl7dC5jYWxj ZGF0YT12b2lkIDA7Zm9yKHZhciBFPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHkpLEM9 MDtDPEUubGVuZ3RoO0MrKyl7dmFyIFA9RVtDXSxJPVAuc3Vic3RyaW5nKDAsNSk7aWYoInhh eGlzIj09PUl8fCJ5YXhpcyI9PT1JKXt2YXIgTz15W1BdLl9lbXB0eUNhdGVnb3JpZXM7TyYm TygpfX19ZWxzZSBoLnN1cHBseURlZmF1bHRzVXBkYXRlQ2FsYyh0LmNhbGNkYXRhLHYpO3Zh ciB6PVtdO2lmKGEmJih0Ll90cmFuc2l0aW9uRGF0YT17fSxoLmNyZWF0ZVRyYW5zaXRpb25E YXRhKHQpLHoucHVzaCgoZnVuY3Rpb24oKXtyZXR1cm4gci5hZGRGcmFtZXModCxhKX0pKSks eS50cmFuc2l0aW9uJiYhbSYmKFMuYW5pbXx8ay5hbmltKSlrLnRpY2tzJiZ6LnB1c2gody5k b1RpY2tzUmVsYXlvdXQpLGguZG9DYWxjZGF0YSh0KSx3LmRvQXV0b1JhbmdlQW5kQ29uc3Ry YWludHModCksei5wdXNoKChmdW5jdGlvbigpe3JldHVybiBoLnRyYW5zaXRpb25Gcm9tUmVh Y3QodCxTLGsscCl9KSk7ZWxzZSBpZihTLmZ1bGxSZXBsb3R8fGsubGF5b3V0UmVwbG90fHxt KXQuX2Z1bGxMYXlvdXQuX3NraXBEZWZhdWx0cz0hMCx6LnB1c2goci5fZG9QbG90KTtlbHNl e2Zvcih2YXIgRCBpbiBrLmFycmF5cyl7dmFyIEY9ay5hcnJheXNbRF07aWYoRi5sZW5ndGgp e3ZhciBCPXUuZ2V0Q29tcG9uZW50TWV0aG9kKEQsImRyYXdPbmUiKTtpZihCIT09by5ub29w KWZvcih2YXIgTj0wO048Ri5sZW5ndGg7TisrKUIodCxGW05dKTtlbHNle3ZhciBqPXUuZ2V0 Q29tcG9uZW50TWV0aG9kKEQsImRyYXciKTtpZihqPT09by5ub29wKXRocm93IG5ldyBFcnJv cigiY2Fubm90IGRyYXcgY29tcG9uZW50czogIitEKTtqKHQpfX19ei5wdXNoKGgucHJldmlv dXNQcm9taXNlcyksUy5zdHlsZSYmei5wdXNoKHcuZG9UcmFjZVN0eWxlKSwoUy5jb2xvcmJh cnN8fGsuY29sb3JiYXJzKSYmei5wdXNoKHcuZG9Db2xvckJhcnMpLGsubGVnZW5kJiZ6LnB1 c2gody5kb0xlZ2VuZCksay5sYXlvdXRzdHlsZSYmei5wdXNoKHcubGF5b3V0U3R5bGVzKSxr LmF4cmFuZ2UmJkgoeiksay50aWNrcyYmei5wdXNoKHcuZG9UaWNrc1JlbGF5b3V0KSxrLm1v ZGViYXImJnoucHVzaCh3LmRvTW9kZUJhciksay5jYW1lcmEmJnoucHVzaCh3LmRvQ2FtZXJh KSx6LnB1c2goTSl9ei5wdXNoKGgucmVob3ZlcixoLnJlZHJhZyksKGw9by5zeW5jT3JBc3lu Yyh6LHQpKSYmbC50aGVufHwobD1Qcm9taXNlLnJlc29sdmUodCkpfWVsc2UgbD1yLm5ld1Bs b3QodCxlLG4saSk7cmV0dXJuIGwudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gdC5lbWl0KCJw bG90bHlfcmVhY3QiLHtkYXRhOmUsbGF5b3V0Om59KSx0fSkpfSxyLnJlZHJhdz1mdW5jdGlv bih0KXtpZih0PW8uZ2V0R3JhcGhEaXYodCksIW8uaXNQbG90RGl2KHQpKXRocm93IG5ldyBF cnJvcigiVGhpcyBlbGVtZW50IGlzIG5vdCBhIFBsb3RseSBwbG90OiAiK3QpO3JldHVybiBf LmNsZWFuRGF0YSh0LmRhdGEpLF8uY2xlYW5MYXlvdXQodC5sYXlvdXQpLHQuY2FsY2RhdGE9 dm9pZCAwLHIuX2RvUGxvdCh0KS50aGVuKChmdW5jdGlvbigpe3JldHVybiB0LmVtaXQoInBs b3RseV9yZWRyYXciKSx0fSkpfSxyLnJlbGF5b3V0PVUsci5yZXN0eWxlPUQsci5zZXRQbG90 Q29uZmlnPWZ1bmN0aW9uKHQpe3JldHVybiBvLmV4dGVuZEZsYXQoeCx0KX0sci51cGRhdGU9 WixyLl9ndWlSZWxheW91dD1KKFUpLHIuX2d1aVJlc3R5bGU9SihEKSxyLl9ndWlVcGRhdGU9 SihaKSxyLl9zdG9yZURpcmVjdEdVSUVkaXQ9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbiBp biByKXtCKG4scyh0LG4pLmdldCgpLHJbbl0sZSl9fX0seyIuLi9jb21wb25lbnRzL2NvbG9y IjozNjYsIi4uL2NvbXBvbmVudHMvZHJhd2luZyI6Mzg4LCIuLi9jb25zdGFudHMveG1sbnNf bmFtZXNwYWNlcyI6NDgwLCIuLi9saWIiOjUwMywiLi4vbGliL2V2ZW50cyI6NDkyLCIuLi9s aWIvcXVldWUiOjUxOSwiLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjU1NCwiLi4vcGxvdHMv Y2FydGVzaWFuL2NvbnN0YW50cyI6NTYxLCIuLi9wbG90cy9jYXJ0ZXNpYW4vZ3JhcGhfaW50 ZXJhY3QiOjU2NCwiLi4vcGxvdHMvY2FydGVzaWFuL3NlbGVjdCI6NTc1LCIuLi9wbG90cy9w bG90cyI6NjE5LCIuLi9yZWdpc3RyeSI6NjM4LCIuL2VkaXRfdHlwZXMiOjUzNiwiLi9oZWxw ZXJzIjo1MzcsIi4vbWFuYWdlX2FycmF5cyI6NTM5LCIuL3Bsb3RfY29uZmlnIjo1NDEsIi4v cGxvdF9zY2hlbWEiOjU0MiwiLi9zdWJyb3V0aW5lcyI6NTQ0LCJAcGxvdGx5L2QzIjo1OCwi ZmFzdC1pc251bWVyaWMiOjE5MCwiaGFzLWhvdmVyIjoyMjh9XSw1NDE6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49e3N0YXRpY1Bsb3Q6e3ZhbFR5cGU6ImJvb2xlYW4i LGRmbHQ6ITF9LHR5cGVzZXRNYXRoOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSxwbG90 bHlTZXJ2ZXJVUkw6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIn0sZWRpdGFibGU6e3ZhbFR5 cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LGVkaXRzOnthbm5vdGF0aW9uUG9zaXRpb246e3ZhbFR5 cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LGFubm90YXRpb25UYWlsOnt2YWxUeXBlOiJib29sZWFu IixkZmx0OiExfSxhbm5vdGF0aW9uVGV4dDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0s YXhpc1RpdGxlVGV4dDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sY29sb3JiYXJQb3Np dGlvbjp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sY29sb3JiYXJUaXRsZVRleHQ6e3Zh bFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LGxlZ2VuZFBvc2l0aW9uOnt2YWxUeXBlOiJib29s ZWFuIixkZmx0OiExfSxsZWdlbmRUZXh0Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxz aGFwZVBvc2l0aW9uOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSx0aXRsZVRleHQ6e3Zh bFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9fSxhdXRvc2l6YWJsZTp7dmFsVHlwZToiYm9vbGVh biIsZGZsdDohMX0scmVzcG9uc2l2ZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sZmls bEZyYW1lOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxmcmFtZU1hcmdpbnM6e3ZhbFR5 cGU6Im51bWJlciIsZGZsdDowLG1pbjowLG1heDouNX0sc2Nyb2xsWm9vbTp7dmFsVHlwZToi ZmxhZ2xpc3QiLGZsYWdzOlsiY2FydGVzaWFuIiwiZ2wzZCIsImdlbyIsIm1hcGJveCJdLGV4 dHJhczpbITAsITFdLGRmbHQ6ImdsM2QrZ2VvK21hcGJveCJ9LGRvdWJsZUNsaWNrOnt2YWxU eXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyExLCJyZXNldCIsImF1dG9zaXplIiwicmVzZXQr YXV0b3NpemUiXSxkZmx0OiJyZXNldCthdXRvc2l6ZSJ9LGRvdWJsZUNsaWNrRGVsYXk6e3Zh bFR5cGU6Im51bWJlciIsZGZsdDozMDAsbWluOjB9LHNob3dBeGlzRHJhZ0hhbmRsZXM6e3Zh bFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITB9LHNob3dBeGlzUmFuZ2VFbnRyeUJveGVzOnt2YWxU eXBlOiJib29sZWFuIixkZmx0OiEwfSxzaG93VGlwczp7dmFsVHlwZToiYm9vbGVhbiIsZGZs dDohMH0sc2hvd0xpbms6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LGxpbmtUZXh0Ont2 YWxUeXBlOiJzdHJpbmciLGRmbHQ6IkVkaXQgY2hhcnQiLG5vQmxhbms6ITB9LHNlbmREYXRh Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSxzaG93U291cmNlczp7dmFsVHlwZToiYW55 IixkZmx0OiExfSxkaXNwbGF5TW9kZUJhcjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVz OlsiaG92ZXIiLCEwLCExXSxkZmx0OiJob3ZlciJ9LHNob3dTZW5kVG9DbG91ZDp7dmFsVHlw ZToiYm9vbGVhbiIsZGZsdDohMX0sc2hvd0VkaXRJbkNoYXJ0U3R1ZGlvOnt2YWxUeXBlOiJi b29sZWFuIixkZmx0OiExfSxtb2RlQmFyQnV0dG9uc1RvUmVtb3ZlOnt2YWxUeXBlOiJhbnki LGRmbHQ6W119LG1vZGVCYXJCdXR0b25zVG9BZGQ6e3ZhbFR5cGU6ImFueSIsZGZsdDpbXX0s bW9kZUJhckJ1dHRvbnM6e3ZhbFR5cGU6ImFueSIsZGZsdDohMX0sdG9JbWFnZUJ1dHRvbk9w dGlvbnM6e3ZhbFR5cGU6ImFueSIsZGZsdDp7fX0sZGlzcGxheWxvZ286e3ZhbFR5cGU6ImJv b2xlYW4iLGRmbHQ6ITB9LHdhdGVybWFyazp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0s cGxvdEdsUGl4ZWxSYXRpbzp7dmFsVHlwZToibnVtYmVyIixkZmx0OjIsbWluOjEsbWF4OjR9 LHNldEJhY2tncm91bmQ6e3ZhbFR5cGU6ImFueSIsZGZsdDoidHJhbnNwYXJlbnQifSx0b3Bv anNvblVSTDp7dmFsVHlwZToic3RyaW5nIixub0JsYW5rOiEwLGRmbHQ6Imh0dHBzOi8vY2Ru LnBsb3QubHkvIn0sbWFwYm94QWNjZXNzVG9rZW46e3ZhbFR5cGU6InN0cmluZyIsZGZsdDpu dWxsfSxsb2dnaW5nOnt2YWxUeXBlOiJpbnRlZ2VyIixtaW46MCxtYXg6MixkZmx0OjF9LG5v dGlmeU9uTG9nZ2luZzp7dmFsVHlwZToiaW50ZWdlciIsbWluOjAsbWF4OjIsZGZsdDowfSxx dWV1ZUxlbmd0aDp7dmFsVHlwZToiaW50ZWdlciIsbWluOjAsZGZsdDowfSxnbG9iYWxUcmFu c2Zvcm1zOnt2YWxUeXBlOiJhbnkiLGRmbHQ6W119LGxvY2FsZTp7dmFsVHlwZToic3RyaW5n IixkZmx0OiJlbi1VUyJ9LGxvY2FsZXM6e3ZhbFR5cGU6ImFueSIsZGZsdDp7fX19LGk9e307 IWZ1bmN0aW9uIHQoZSxyKXtmb3IodmFyIG4gaW4gZSl7dmFyIGk9ZVtuXTtpLnZhbFR5cGU/ cltuXT1pLmRmbHQ6KHJbbl18fChyW25dPXt9KSx0KGkscltuXSkpfX0obixpKSxlLmV4cG9y dHM9e2NvbmZpZ0F0dHJpYnV0ZXM6bixkZmx0Q29uZmlnOml9fSx7fV0sNTQyOltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3JlZ2lzdHJ5IiksaT10KCIuLi9s aWIiKSxhPXQoIi4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxvPXQoIi4uL3Bsb3RzL2xheW91dF9h dHRyaWJ1dGVzIikscz10KCIuLi9wbG90cy9mcmFtZV9hdHRyaWJ1dGVzIiksbD10KCIuLi9w bG90cy9hbmltYXRpb25fYXR0cmlidXRlcyIpLGM9dCgiLi9wbG90X2NvbmZpZyIpLmNvbmZp Z0F0dHJpYnV0ZXMsdT10KCIuL2VkaXRfdHlwZXMiKSxmPWkuZXh0ZW5kRGVlcEFsbCxoPWku aXNQbGFpbk9iamVjdCxwPWkuaXNBcnJheU9yVHlwZWRBcnJheSxkPWkubmVzdGVkUHJvcGVy dHksbT1pLnZhbE9iamVjdE1ldGEsZz1bIl9pc1N1YnBsb3RPYmoiLCJfaXNMaW5rZWRUb0Fy cmF5IiwiX2FycmF5QXR0clJlZ2V4cHMiLCJfZGVwcmVjYXRlZCJdO2Z1bmN0aW9uIHYodCxl LHIpe2lmKCF0KXJldHVybiExO2lmKHQuX2lzTGlua2VkVG9BcnJheSlpZih5KGVbcl0pKXIr KztlbHNlIGlmKHI8ZS5sZW5ndGgpcmV0dXJuITE7Zm9yKDtyPGUubGVuZ3RoO3IrKyl7dmFy IG49dFtlW3JdXTtpZighaChuKSlicmVhaztpZih0PW4scj09PWUubGVuZ3RoLTEpYnJlYWs7 aWYodC5faXNMaW5rZWRUb0FycmF5KXtpZigheShlWysrcl0pKXJldHVybiExfWVsc2UgaWYo ImluZm9fYXJyYXkiPT09dC52YWxUeXBlKXt2YXIgaT1lWysrcl07aWYoIXkoaSkpcmV0dXJu ITE7dmFyIGE9dC5pdGVtcztpZihBcnJheS5pc0FycmF5KGEpKXtpZihpPj1hLmxlbmd0aCly ZXR1cm4hMTtpZigyPT09dC5kaW1lbnNpb25zKXtpZihyKyssZS5sZW5ndGg9PT1yKXJldHVy biB0O3ZhciBvPWVbcl07aWYoIXkobykpcmV0dXJuITE7dD1hW2ldW29dfWVsc2UgdD1hW2ld fWVsc2UgdD1hfX1yZXR1cm4gdH1mdW5jdGlvbiB5KHQpe3JldHVybiB0PT09TWF0aC5yb3Vu ZCh0KSYmdD49MH1mdW5jdGlvbiB4KCl7dmFyIHQsZSxyPXt9O2Zvcih0IGluIGYocixvKSxu LnN1YnBsb3RzUmVnaXN0cnkpe2lmKChlPW4uc3VicGxvdHNSZWdpc3RyeVt0XSkubGF5b3V0 QXR0cmlidXRlcylpZihBcnJheS5pc0FycmF5KGUuYXR0cikpZm9yKHZhciBpPTA7aTxlLmF0 dHIubGVuZ3RoO2krKyl3KHIsZSxlLmF0dHJbaV0pO2Vsc2UgdyhyLGUsInN1YnBsb3QiPT09 ZS5hdHRyP2UubmFtZTplLmF0dHIpfWZvcih0IGluIG4uY29tcG9uZW50c1JlZ2lzdHJ5KXt2 YXIgYT0oZT1uLmNvbXBvbmVudHNSZWdpc3RyeVt0XSkuc2NoZW1hO2lmKGEmJihhLnN1YnBs b3RzfHxhLmxheW91dCkpe3ZhciBzPWEuc3VicGxvdHM7aWYocyYmcy54YXhpcyYmIXMueWF4 aXMpZm9yKHZhciBsIGluIHMueGF4aXMpZGVsZXRlIHIueWF4aXNbbF19ZWxzZSJjb2xvcnNj YWxlIj09PWUubmFtZT9mKHIsZS5sYXlvdXRBdHRyaWJ1dGVzKTplLmxheW91dEF0dHJpYnV0 ZXMmJlQocixlLmxheW91dEF0dHJpYnV0ZXMsZS5uYW1lKX1yZXR1cm57bGF5b3V0QXR0cmli dXRlczpfKHIpfX1mdW5jdGlvbiBiKCl7dmFyIHQ9e2ZyYW1lczpmKHt9LHMpfTtyZXR1cm4g Xyh0KSx0LmZyYW1lc31mdW5jdGlvbiBfKHQpe3JldHVybiBmdW5jdGlvbih0KXtyLmNyYXds KHQsKGZ1bmN0aW9uKHQsZSxuKXtyLmlzVmFsT2JqZWN0KHQpPyEwIT09dC5hcnJheU9rJiYi ZGF0YV9hcnJheSIhPT10LnZhbFR5cGV8fChuW2UrInNyYyJdPXt2YWxUeXBlOiJzdHJpbmci LGVkaXRUeXBlOiJub25lIn0pOmgodCkmJih0LnJvbGU9Im9iamVjdCIpfSkpfSh0KSxmdW5j dGlvbih0KXtyLmNyYXdsKHQsKGZ1bmN0aW9uKHQsZSxyKXtpZih0KXt2YXIgbj10Ll9pc0xp bmtlZFRvQXJyYXk7biYmKGRlbGV0ZSB0Ll9pc0xpbmtlZFRvQXJyYXkscltlXT17aXRlbXM6 e319LHJbZV0uaXRlbXNbbl09dCxyW2VdLnJvbGU9Im9iamVjdCIpfX0pKX0odCksZnVuY3Rp b24odCl7IWZ1bmN0aW9uIHQoZSl7Zm9yKHZhciByIGluIGUpaWYoaChlW3JdKSl0KGVbcl0p O2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlW3JdKSlmb3IodmFyIG49MDtuPGVbcl0ubGVuZ3Ro O24rKyl0KGVbcl1bbl0pO2Vsc2UgZVtyXWluc3RhbmNlb2YgUmVnRXhwJiYoZVtyXT1lW3Jd LnRvU3RyaW5nKCkpfSh0KX0odCksdH1mdW5jdGlvbiB3KHQsZSxyKXt2YXIgbj1kKHQsciks aT1mKHt9LGUubGF5b3V0QXR0cmlidXRlcyk7aS5faXNTdWJwbG90T2JqPSEwLG4uc2V0KGkp fWZ1bmN0aW9uIFQodCxlLHIpe3ZhciBuPWQodCxyKTtuLnNldChmKG4uZ2V0KCl8fHt9LGUp KX1yLklTX1NVQlBMT1RfT0JKPSJfaXNTdWJwbG90T2JqIixyLklTX0xJTktFRF9UT19BUlJB WT0iX2lzTGlua2VkVG9BcnJheSIsci5ERVBSRUNBVEVEPSJfZGVwcmVjYXRlZCIsci5VTkRF UlNDT1JFX0FUVFJTPWcsci5nZXQ9ZnVuY3Rpb24oKXt2YXIgdD17fTtuLmFsbFR5cGVzLmZv ckVhY2goKGZ1bmN0aW9uKGUpe3RbZV09ZnVuY3Rpb24odCl7dmFyIGUsaTtlPW4ubW9kdWxl c1t0XS5fbW9kdWxlLGk9ZS5iYXNlUGxvdE1vZHVsZTt2YXIgbz17dHlwZTpudWxsfSxzPWYo e30sYSksbD1mKHt9LGUuYXR0cmlidXRlcyk7ci5jcmF3bChsLChmdW5jdGlvbih0LGUscixu LGkpe2QocyxpKS5zZXQodm9pZCAwKSx2b2lkIDA9PT10JiZkKGwsaSkuc2V0KHZvaWQgMCl9 KSksZihvLHMpLG4udHJhY2VJcyh0LCJub09wYWNpdHkiKSYmZGVsZXRlIG8ub3BhY2l0eTtu LnRyYWNlSXModCwic2hvd0xlZ2VuZCIpfHwoZGVsZXRlIG8uc2hvd2xlZ2VuZCxkZWxldGUg by5sZWdlbmRncm91cCk7bi50cmFjZUlzKHQsIm5vSG92ZXIiKSYmKGRlbGV0ZSBvLmhvdmVy aW5mbyxkZWxldGUgby5ob3ZlcmxhYmVsKTtlLnNlbGVjdFBvaW50c3x8ZGVsZXRlIG8uc2Vs ZWN0ZWRwb2ludHM7ZihvLGwpLGkuYXR0cmlidXRlcyYmZihvLGkuYXR0cmlidXRlcyk7by50 eXBlPXQ7dmFyIGM9e21ldGE6ZS5tZXRhfHx7fSxjYXRlZ29yaWVzOmUuY2F0ZWdvcmllc3x8 e30sYW5pbWF0YWJsZTpCb29sZWFuKGUuYW5pbWF0YWJsZSksdHlwZTp0LGF0dHJpYnV0ZXM6 XyhvKX07aWYoZS5sYXlvdXRBdHRyaWJ1dGVzKXt2YXIgdT17fTtmKHUsZS5sYXlvdXRBdHRy aWJ1dGVzKSxjLmxheW91dEF0dHJpYnV0ZXM9Xyh1KX1lLmFuaW1hdGFibGV8fHIuY3Jhd2wo YywoZnVuY3Rpb24odCl7ci5pc1ZhbE9iamVjdCh0KSYmImFuaW0iaW4gdCYmZGVsZXRlIHQu YW5pbX0pKTtyZXR1cm4gY30oZSl9KSk7dmFyIGU9e307cmV0dXJuIE9iamVjdC5rZXlzKG4u dHJhbnNmb3Jtc1JlZ2lzdHJ5KS5mb3JFYWNoKChmdW5jdGlvbih0KXtlW3RdPWZ1bmN0aW9u KHQpe3ZhciBlPW4udHJhbnNmb3Jtc1JlZ2lzdHJ5W3RdLHI9Zih7fSxlLmF0dHJpYnV0ZXMp O3JldHVybiBPYmplY3Qua2V5cyhuLmNvbXBvbmVudHNSZWdpc3RyeSkuZm9yRWFjaCgoZnVu Y3Rpb24oZSl7dmFyIGk9bi5jb21wb25lbnRzUmVnaXN0cnlbZV07aS5zY2hlbWEmJmkuc2No ZW1hLnRyYW5zZm9ybXMmJmkuc2NoZW1hLnRyYW5zZm9ybXNbdF0mJk9iamVjdC5rZXlzKGku c2NoZW1hLnRyYW5zZm9ybXNbdF0pLmZvckVhY2goKGZ1bmN0aW9uKGUpe1QocixpLnNjaGVt YS50cmFuc2Zvcm1zW3RdW2VdLGUpfSkpfSkpLHthdHRyaWJ1dGVzOl8ocil9fSh0KX0pKSx7 ZGVmczp7dmFsT2JqZWN0czptLG1ldGFLZXlzOmcuY29uY2F0KFsiZGVzY3JpcHRpb24iLCJy b2xlIiwiZWRpdFR5cGUiLCJpbXBsaWVkRWRpdHMiXSksZWRpdFR5cGU6e3RyYWNlczp1LnRy YWNlcyxsYXlvdXQ6dS5sYXlvdXR9LGltcGxpZWRFZGl0czp7fX0sdHJhY2VzOnQsbGF5b3V0 OngoKSx0cmFuc2Zvcm1zOmUsZnJhbWVzOmIoKSxhbmltYXRpb246XyhsKSxjb25maWc6Xyhj KX19LHIuY3Jhd2w9ZnVuY3Rpb24odCxlLG4saSl7dmFyIGE9bnx8MDtpPWl8fCIiLE9iamVj dC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBvPXRbbl07aWYoLTE9PT1nLmlu ZGV4T2Yobikpe3ZhciBzPShpP2krIi4iOiIiKStuO2UobyxuLHQsYSxzKSxyLmlzVmFsT2Jq ZWN0KG8pfHxoKG8pJiYiaW1wbGllZEVkaXRzIiE9PW4mJnIuY3Jhd2wobyxlLGErMSxzKX19 KSl9LHIuaXNWYWxPYmplY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnZvaWQgMCE9PXQudmFs VHlwZX0sci5maW5kQXJyYXlBdHRyaWJ1dGVzPWZ1bmN0aW9uKHQpe3ZhciBlLG4saT1bXSxv PVtdLHM9W107ZnVuY3Rpb24gbCh0LHIsYSxsKXtvPW8uc2xpY2UoMCxsKS5jb25jYXQoW3Jd KSxzPXMuc2xpY2UoMCxsKS5jb25jYXQoW3QmJnQuX2lzTGlua2VkVG9BcnJheV0pLHQmJigi ZGF0YV9hcnJheSI9PT10LnZhbFR5cGV8fCEwPT09dC5hcnJheU9rKSYmISgiY29sb3JiYXIi PT09b1tsLTFdJiYoInRpY2t0ZXh0Ij09PXJ8fCJ0aWNrdmFscyI9PT1yKSkmJmZ1bmN0aW9u IHQoZSxyLGEpe3ZhciBsPWVbb1tyXV0sYz1hK29bcl07aWYocj09PW8ubGVuZ3RoLTEpcChs KSYmaS5wdXNoKG4rYyk7ZWxzZSBpZihzW3JdKXtpZihBcnJheS5pc0FycmF5KGwpKWZvcih2 YXIgdT0wO3U8bC5sZW5ndGg7dSsrKWgobFt1XSkmJnQobFt1XSxyKzEsYysiWyIrdSsiXS4i KX1lbHNlIGgobCkmJnQobCxyKzEsYysiLiIpfShlLDAsIiIpfWU9dCxuPSIiLHIuY3Jhd2wo YSxsKSx0Ll9tb2R1bGUmJnQuX21vZHVsZS5hdHRyaWJ1dGVzJiZyLmNyYXdsKHQuX21vZHVs ZS5hdHRyaWJ1dGVzLGwpO3ZhciBjPXQudHJhbnNmb3JtcztpZihjKWZvcih2YXIgdT0wO3U8 Yy5sZW5ndGg7dSsrKXt2YXIgZj1jW3VdLGQ9Zi5fbW9kdWxlO2QmJihuPSJ0cmFuc2Zvcm1z WyIrdSsiXS4iLGU9ZixyLmNyYXdsKGQuYXR0cmlidXRlcyxsKSl9cmV0dXJuIGl9LHIuZ2V0 VHJhY2VWYWxPYmplY3Q9ZnVuY3Rpb24odCxlKXt2YXIgcixpLG89ZVswXSxzPTE7aWYoInRy YW5zZm9ybXMiPT09byl7aWYoMT09PWUubGVuZ3RoKXJldHVybiBhLnRyYW5zZm9ybXM7dmFy IGw9dC50cmFuc2Zvcm1zO2lmKCFBcnJheS5pc0FycmF5KGwpfHwhbC5sZW5ndGgpcmV0dXJu ITE7dmFyIGM9ZVsxXTtpZigheShjKXx8Yz49bC5sZW5ndGgpcmV0dXJuITE7aT0ocj0obi50 cmFuc2Zvcm1zUmVnaXN0cnlbbFtjXS50eXBlXXx8e30pLmF0dHJpYnV0ZXMpJiZyW2VbMl1d LHM9M31lbHNle3ZhciB1PXQuX21vZHVsZTtpZih1fHwodT0obi5tb2R1bGVzW3QudHlwZXx8 YS50eXBlLmRmbHRdfHx7fSkuX21vZHVsZSksIXUpcmV0dXJuITE7aWYoIShpPShyPXUuYXR0 cmlidXRlcykmJnJbb10pKXt2YXIgZj11LmJhc2VQbG90TW9kdWxlO2YmJmYuYXR0cmlidXRl cyYmKGk9Zi5hdHRyaWJ1dGVzW29dKX1pfHwoaT1hW29dKX1yZXR1cm4gdihpLGUscyl9LHIu Z2V0TGF5b3V0VmFsT2JqZWN0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHYoZnVuY3Rpb24odCxl KXt2YXIgcixpLGEscyxsPXQuX2Jhc2VQbG90TW9kdWxlcztpZihsKXt2YXIgYztmb3Iocj0w O3I8bC5sZW5ndGg7cisrKXtpZigoYT1sW3JdKS5hdHRyUmVnZXgmJmEuYXR0clJlZ2V4LnRl c3QoZSkpe2lmKGEubGF5b3V0QXR0ck92ZXJyaWRlcylyZXR1cm4gYS5sYXlvdXRBdHRyT3Zl cnJpZGVzOyFjJiZhLmxheW91dEF0dHJpYnV0ZXMmJihjPWEubGF5b3V0QXR0cmlidXRlcyl9 dmFyIHU9YS5iYXNlTGF5b3V0QXR0ck92ZXJyaWRlcztpZih1JiZlIGluIHUpcmV0dXJuIHVb ZV19aWYoYylyZXR1cm4gY312YXIgZj10Ll9tb2R1bGVzO2lmKGYpZm9yKHI9MDtyPGYubGVu Z3RoO3IrKylpZigocz1mW3JdLmxheW91dEF0dHJpYnV0ZXMpJiZlIGluIHMpcmV0dXJuIHNb ZV07Zm9yKGkgaW4gbi5jb21wb25lbnRzUmVnaXN0cnkpe2lmKCJjb2xvcnNjYWxlIj09PShh PW4uY29tcG9uZW50c1JlZ2lzdHJ5W2ldKS5uYW1lJiYwPT09ZS5pbmRleE9mKCJjb2xvcmF4 aXMiKSlyZXR1cm4gYS5sYXlvdXRBdHRyaWJ1dGVzW2VdO2lmKCFhLnNjaGVtYSYmZT09PWEu bmFtZSlyZXR1cm4gYS5sYXlvdXRBdHRyaWJ1dGVzfXJldHVybiBlIGluIG8mJm9bZV19KHQs ZVswXSksZSwxKX19LHsiLi4vbGliIjo1MDMsIi4uL3Bsb3RzL2FuaW1hdGlvbl9hdHRyaWJ1 dGVzIjo1NDgsIi4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjU1MCwiLi4vcGxvdHMvZnJhbWVfYXR0 cmlidXRlcyI6NTg2LCIuLi9wbG90cy9sYXlvdXRfYXR0cmlidXRlcyI6NjEwLCIuLi9yZWdp c3RyeSI6NjM4LCIuL2VkaXRfdHlwZXMiOjUzNiwiLi9wbG90X2NvbmZpZyI6NTQxfV0sNTQz OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2xpYiIpLGk9dCgi Li4vcGxvdHMvYXR0cmlidXRlcyIpLGE9e25hbWU6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5 cGU6Im5vbmUifX07ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmInN0cmluZyI9PXR5cGVvZiB0 fWZ1bmN0aW9uIHModCl7dmFyIGU9dC5sZW5ndGgtMTtyZXR1cm4icyIhPT10LmNoYXJBdChl KSYmbi53YXJuKCJiYWQgYXJndW1lbnQgdG8gYXJyYXlEZWZhdWx0S2V5OiAiK3QpLHQuc3Vi c3RyKDAsdC5sZW5ndGgtMSkrImRlZmF1bHRzIn1hLnRlbXBsYXRlaXRlbW5hbWU9e3ZhbFR5 cGU6InN0cmluZyIsZWRpdFR5cGU6ImNhbGMifSxyLnRlbXBsYXRlZEFycmF5PWZ1bmN0aW9u KHQsZSl7cmV0dXJuIGUuX2lzTGlua2VkVG9BcnJheT10LGUubmFtZT1hLm5hbWUsZS50ZW1w bGF0ZWl0ZW1uYW1lPWEudGVtcGxhdGVpdGVtbmFtZSxlfSxyLnRyYWNlVGVtcGxhdGVyPWZ1 bmN0aW9uKHQpe3ZhciBlLHIsYT17fTtmb3IoZSBpbiB0KXI9dFtlXSxBcnJheS5pc0FycmF5 KHIpJiZyLmxlbmd0aCYmKGFbZV09MCk7cmV0dXJue25ld1RyYWNlOmZ1bmN0aW9uKG8pe3Zh ciBzPXt0eXBlOmU9bi5jb2VyY2Uobyx7fSxpLCJ0eXBlIiksX3RlbXBsYXRlOm51bGx9O2lm KGUgaW4gYSl7cj10W2VdO3ZhciBsPWFbZV0lci5sZW5ndGg7YVtlXSsrLHMuX3RlbXBsYXRl PXJbbF19cmV0dXJuIHN9fX0sci5uZXdDb250YWluZXI9ZnVuY3Rpb24odCxlLHIpe3ZhciBp PXQuX3RlbXBsYXRlLGE9aSYmKGlbZV18fHImJmlbcl0pO3JldHVybiBuLmlzUGxhaW5PYmpl Y3QoYSl8fChhPW51bGwpLHRbZV09e190ZW1wbGF0ZTphfX0sci5hcnJheVRlbXBsYXRlcj1m dW5jdGlvbih0LGUscil7dmFyIG49dC5fdGVtcGxhdGUsaT1uJiZuW3MoZSldLGE9biYmbltl XTtBcnJheS5pc0FycmF5KGEpJiZhLmxlbmd0aHx8KGE9W10pO3ZhciBsPXt9O3JldHVybntu ZXdJdGVtOmZ1bmN0aW9uKHQpe3ZhciBlPXtuYW1lOnQubmFtZSxfaW5wdXQ6dH0sbj1lLnRl bXBsYXRlaXRlbW5hbWU9dC50ZW1wbGF0ZWl0ZW1uYW1lO2lmKCFvKG4pKXJldHVybiBlLl90 ZW1wbGF0ZT1pLGU7Zm9yKHZhciBzPTA7czxhLmxlbmd0aDtzKyspe3ZhciBjPWFbc107aWYo Yy5uYW1lPT09bilyZXR1cm4gbFtuXT0xLGUuX3RlbXBsYXRlPWMsZX1yZXR1cm4gZVtyXT10 W3JdfHwhMSxlLl90ZW1wbGF0ZT0hMSxlfSxkZWZhdWx0SXRlbXM6ZnVuY3Rpb24oKXtmb3Io dmFyIHQ9W10sZT0wO2U8YS5sZW5ndGg7ZSsrKXt2YXIgcj1hW2VdLG49ci5uYW1lO2lmKG8o bikmJiFsW25dKXt2YXIgaT17X3RlbXBsYXRlOnIsbmFtZTpuLF9pbnB1dDp7X3RlbXBsYXRl aXRlbW5hbWU6bn19O2kudGVtcGxhdGVpdGVtbmFtZT1yLnRlbXBsYXRlaXRlbW5hbWUsdC5w dXNoKGkpLGxbbl09MX19cmV0dXJuIHR9fX0sci5hcnJheURlZmF1bHRLZXk9cyxyLmFycmF5 RWRpdG9yPWZ1bmN0aW9uKHQsZSxyKXt2YXIgaT0obi5uZXN0ZWRQcm9wZXJ0eSh0LGUpLmdl dCgpfHxbXSkubGVuZ3RoLGE9ci5faW5kZXgsbz1hPj1pJiYoci5faW5wdXR8fHt9KS5fdGVt cGxhdGVpdGVtbmFtZTtvJiYoYT1pKTt2YXIgcyxsPWUrIlsiK2ErIl0iO2Z1bmN0aW9uIGMo KXtzPXt9LG8mJihzW2xdPXt9LHNbbF0udGVtcGxhdGVpdGVtbmFtZT1vKX1mdW5jdGlvbiB1 KHQsZSl7bz9uLm5lc3RlZFByb3BlcnR5KHNbbF0sdCkuc2V0KGUpOnNbbCsiLiIrdF09ZX1m dW5jdGlvbiBmKCl7dmFyIHQ9cztyZXR1cm4gYygpLHR9cmV0dXJuIGMoKSx7bW9kaWZ5QmFz ZTpmdW5jdGlvbih0LGUpe3NbdF09ZX0sbW9kaWZ5SXRlbTp1LGdldFVwZGF0ZU9iajpmLGFw cGx5VXBkYXRlOmZ1bmN0aW9uKGUscil7ZSYmdShlLHIpO3ZhciBpPWYoKTtmb3IodmFyIGEg aW4gaSluLm5lc3RlZFByb3BlcnR5KHQsYSkuc2V0KGlbYV0pfX19fSx7Ii4uL2xpYiI6NTAz LCIuLi9wbG90cy9hdHRyaWJ1dGVzIjo1NTB9XSw1NDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiQHBsb3RseS9kMyIpLGk9dCgiLi4vcmVnaXN0cnkiKSxhPXQo Ii4uL3Bsb3RzL3Bsb3RzIiksbz10KCIuLi9saWIiKSxzPXQoIi4uL2xpYi9jbGVhcl9nbF9j YW52YXNlcyIpLGw9dCgiLi4vY29tcG9uZW50cy9jb2xvciIpLGM9dCgiLi4vY29tcG9uZW50 cy9kcmF3aW5nIiksdT10KCIuLi9jb21wb25lbnRzL3RpdGxlcyIpLGY9dCgiLi4vY29tcG9u ZW50cy9tb2RlYmFyIiksaD10KCIuLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLHA9dCgiLi4v Y29uc3RhbnRzL2FsaWdubWVudCIpLGQ9dCgiLi4vcGxvdHMvY2FydGVzaWFuL2NvbnN0cmFp bnRzIiksbT1kLmVuZm9yY2UsZz1kLmNsZWFuLHY9dCgiLi4vcGxvdHMvY2FydGVzaWFuL2F1 dG9yYW5nZSIpLmRvQXV0b1JhbmdlO2Z1bmN0aW9uIHkodCxlLHIpe2Zvcih2YXIgbj0wO248 ci5sZW5ndGg7bisrKXt2YXIgaT1yW25dWzBdLGE9cltuXVsxXTtpZighKGlbMF0+PXRbMV18 fGlbMV08PXRbMF0pJiYoYVswXTxlWzFdJiZhWzFdPmVbMF0pKXJldHVybiEwfXJldHVybiEx fWZ1bmN0aW9uIHgodCl7dmFyIGUsaSxzLHUsZCxtLGc9dC5fZnVsbExheW91dCx2PWcuX3Np emUseD12LnAsXz1oLmxpc3QodCwiIiwhMCk7aWYoZy5fcGFwZXJkaXYuc3R5bGUoe3dpZHRo OnQuX2NvbnRleHQucmVzcG9uc2l2ZSYmZy5hdXRvc2l6ZSYmIXQuX2NvbnRleHQuX2hhc1pl cm9XaWR0aCYmIXQubGF5b3V0LndpZHRoPyIxMDAlIjpnLndpZHRoKyJweCIsaGVpZ2h0OnQu X2NvbnRleHQucmVzcG9uc2l2ZSYmZy5hdXRvc2l6ZSYmIXQuX2NvbnRleHQuX2hhc1plcm9I ZWlnaHQmJiF0LmxheW91dC5oZWlnaHQ/IjEwMCUiOmcuaGVpZ2h0KyJweCJ9KS5zZWxlY3RB bGwoIi5tYWluLXN2ZyIpLmNhbGwoYy5zZXRTaXplLGcud2lkdGgsZy5oZWlnaHQpLHQuX2Nv bnRleHQuc2V0QmFja2dyb3VuZCh0LGcucGFwZXJfYmdjb2xvciksci5kcmF3TWFpblRpdGxl KHQpLGYubWFuYWdlKHQpLCFnLl9oYXMoImNhcnRlc2lhbiIpKXJldHVybiBhLnByZXZpb3Vz UHJvbWlzZXModCk7ZnVuY3Rpb24gVCh0LGUscil7dmFyIG49dC5fbHcvMjtyZXR1cm4ieCI9 PT10Ll9pZC5jaGFyQXQoMCk/ZT8idG9wIj09PXI/ZS5fb2Zmc2V0LXgtbjplLl9vZmZzZXQr ZS5fbGVuZ3RoK3grbjp2LnQrdi5oKigxLSh0LnBvc2l0aW9ufHwwKSkrbiUxOmU/InJpZ2h0 Ij09PXI/ZS5fb2Zmc2V0K2UuX2xlbmd0aCt4K246ZS5fb2Zmc2V0LXgtbjp2Lmwrdi53Kih0 LnBvc2l0aW9ufHwwKStuJTF9Zm9yKGU9MDtlPF8ubGVuZ3RoO2UrKyl7dmFyIGs9KHU9X1tl XSkuX2FuY2hvckF4aXM7dS5fbGluZXBvc2l0aW9ucz17fSx1Ll9sdz1jLmNyaXNwUm91bmQo dCx1LmxpbmV3aWR0aCwxKSx1Ll9tYWluTGluZVBvc2l0aW9uPVQodSxrLHUuc2lkZSksdS5f bWFpbk1pcnJvclBvc2l0aW9uPXUubWlycm9yJiZrP1QodSxrLHAuT1BQT1NJVEVfU0lERVt1 LnNpZGVdKTpudWxsfXZhciBBPVtdLE09W10sUz1bXSxFPTE9PT1sLm9wYWNpdHkoZy5wYXBl cl9iZ2NvbG9yKSYmMT09PWwub3BhY2l0eShnLnBsb3RfYmdjb2xvcikmJmcucGFwZXJfYmdj b2xvcj09PWcucGxvdF9iZ2NvbG9yO2ZvcihpIGluIGcuX3Bsb3RzKWlmKChzPWcuX3Bsb3Rz W2ldKS5tYWlucGxvdClzLmJnJiZzLmJnLnJlbW92ZSgpLHMuYmc9dm9pZCAwO2Vsc2V7dmFy IEw9cy54YXhpcy5kb21haW4sQz1zLnlheGlzLmRvbWFpbixQPXMucGxvdGdyb3VwO2lmKHko TCxDLFMpKXt2YXIgST1QLm5vZGUoKSxPPXMuYmc9by5lbnN1cmVTaW5nbGUoUCwicmVjdCIs ImJnIik7SS5pbnNlcnRCZWZvcmUoTy5ub2RlKCksSS5jaGlsZE5vZGVzWzBdKSxNLnB1c2go aSl9ZWxzZSBQLnNlbGVjdCgicmVjdC5iZyIpLnJlbW92ZSgpLFMucHVzaChbTCxDXSksRXx8 KEEucHVzaChpKSxNLnB1c2goaSkpfXZhciB6LEQsUixGLEIsTixqLFUsVixILHEsRyxZLFc9 Zy5fYmdMYXllci5zZWxlY3RBbGwoIi5iZyIpLmRhdGEoQSk7Zm9yKFcuZW50ZXIoKS5hcHBl bmQoInJlY3QiKS5jbGFzc2VkKCJiZyIsITApLFcuZXhpdCgpLnJlbW92ZSgpLFcuZWFjaCgo ZnVuY3Rpb24odCl7Zy5fcGxvdHNbdF0uYmc9bi5zZWxlY3QodGhpcyl9KSksZT0wO2U8TS5s ZW5ndGg7ZSsrKXM9Zy5fcGxvdHNbTVtlXV0sZD1zLnhheGlzLG09cy55YXhpcyxzLmJnJiZ2 b2lkIDAhPT1kLl9vZmZzZXQmJnZvaWQgMCE9PW0uX29mZnNldCYmcy5iZy5jYWxsKGMuc2V0 UmVjdCxkLl9vZmZzZXQteCxtLl9vZmZzZXQteCxkLl9sZW5ndGgrMip4LG0uX2xlbmd0aCsy KngpLmNhbGwobC5maWxsLGcucGxvdF9iZ2NvbG9yKS5zdHlsZSgic3Ryb2tlLXdpZHRoIiww KTtpZighZy5faGFzT25seUxhcmdlU3Bsb21zKWZvcihpIGluIGcuX3Bsb3RzKXtzPWcuX3Bs b3RzW2ldLGQ9cy54YXhpcyxtPXMueWF4aXM7dmFyIFgsWixKPXMuY2xpcElkPSJjbGlwIitn Ll91aWQraSsicGxvdCIsSz1vLmVuc3VyZVNpbmdsZUJ5SWQoZy5fY2xpcHMsImNsaXBQYXRo IixKLChmdW5jdGlvbih0KXt0LmNsYXNzZWQoInBsb3RjbGlwIiwhMCkuYXBwZW5kKCJyZWN0 Iil9KSk7cy5jbGlwUmVjdD1LLnNlbGVjdCgicmVjdCIpLmF0dHIoe3dpZHRoOmQuX2xlbmd0 aCxoZWlnaHQ6bS5fbGVuZ3RofSksYy5zZXRUcmFuc2xhdGUocy5wbG90LGQuX29mZnNldCxt Ll9vZmZzZXQpLHMuX2hhc0NsaXBPbkF4aXNGYWxzZT8oWD1udWxsLFo9Sik6KFg9SixaPW51 bGwpLGMuc2V0Q2xpcFVybChzLnBsb3QsWCx0KSxzLmxheWVyQ2xpcElkPVp9ZnVuY3Rpb24g USh0KXtyZXR1cm4iTSIreisiLCIrdCsiSCIrRH1mdW5jdGlvbiAkKHQpe3JldHVybiJNIitk Ll9vZmZzZXQrIiwiK3QrImgiK2QuX2xlbmd0aH1mdW5jdGlvbiB0dCh0KXtyZXR1cm4iTSIr dCsiLCIrVSsiViIran1mdW5jdGlvbiBldCh0KXtyZXR1cm4iTSIrdCsiLCIrbS5fb2Zmc2V0 KyJ2IittLl9sZW5ndGh9ZnVuY3Rpb24gcnQodCxlLHIpe2lmKCF0LnNob3dsaW5lfHxpIT09 dC5fbWFpblN1YnBsb3QpcmV0dXJuIiI7aWYoIXQuX2FuY2hvckF4aXMpcmV0dXJuIHIodC5f bWFpbkxpbmVQb3NpdGlvbik7dmFyIG49ZSh0Ll9tYWluTGluZVBvc2l0aW9uKTtyZXR1cm4g dC5taXJyb3ImJihuKz1lKHQuX21haW5NaXJyb3JQb3NpdGlvbikpLG59Zm9yKGkgaW4gZy5f cGxvdHMpe3M9Zy5fcGxvdHNbaV0sZD1zLnhheGlzLG09cy55YXhpczt2YXIgbnQ9Ik0wLDAi O2IoZCxpKSYmKEI9dyhkLCJsZWZ0IixtLF8pLHo9ZC5fb2Zmc2V0LShCP3grQjowKSxOPXco ZCwicmlnaHQiLG0sXyksRD1kLl9vZmZzZXQrZC5fbGVuZ3RoKyhOP3grTjowKSxSPVQoZCxt LCJib3R0b20iKSxGPVQoZCxtLCJ0b3AiKSwhKFk9IWQuX2FuY2hvckF4aXN8fGkhPT1kLl9t YWluU3VicGxvdCl8fCJhbGx0aWNrcyIhPT1kLm1pcnJvciYmImFsbCIhPT1kLm1pcnJvcnx8 KGQuX2xpbmVwb3NpdGlvbnNbaV09W1IsRl0pLG50PXJ0KGQsUSwkKSxZJiZkLnNob3dsaW5l JiYoImFsbCI9PT1kLm1pcnJvcnx8ImFsbHRpY2tzIj09PWQubWlycm9yKSYmKG50Kz1RKFIp K1EoRikpLHMueGxpbmVzLnN0eWxlKCJzdHJva2Utd2lkdGgiLGQuX2x3KyJweCIpLmNhbGwo bC5zdHJva2UsZC5zaG93bGluZT9kLmxpbmVjb2xvcjoicmdiYSgwLDAsMCwwKSIpKSxzLnhs aW5lcy5hdHRyKCJkIixudCk7dmFyIGl0PSJNMCwwIjtiKG0saSkmJihxPXcobSwiYm90dG9t IixkLF8pLGo9bS5fb2Zmc2V0K20uX2xlbmd0aCsocT94OjApLEc9dyhtLCJ0b3AiLGQsXyks VT1tLl9vZmZzZXQtKEc/eDowKSxWPVQobSxkLCJsZWZ0IiksSD1UKG0sZCwicmlnaHQiKSwh KFk9IW0uX2FuY2hvckF4aXN8fGkhPT1tLl9tYWluU3VicGxvdCl8fCJhbGx0aWNrcyIhPT1t Lm1pcnJvciYmImFsbCIhPT1tLm1pcnJvcnx8KG0uX2xpbmVwb3NpdGlvbnNbaV09W1YsSF0p LGl0PXJ0KG0sdHQsZXQpLFkmJm0uc2hvd2xpbmUmJigiYWxsIj09PW0ubWlycm9yfHwiYWxs dGlja3MiPT09bS5taXJyb3IpJiYoaXQrPXR0KFYpK3R0KEgpKSxzLnlsaW5lcy5zdHlsZSgi c3Ryb2tlLXdpZHRoIixtLl9sdysicHgiKS5jYWxsKGwuc3Ryb2tlLG0uc2hvd2xpbmU/bS5s aW5lY29sb3I6InJnYmEoMCwwLDAsMCkiKSkscy55bGluZXMuYXR0cigiZCIsaXQpfXJldHVy biBoLm1ha2VDbGlwUGF0aHModCksYS5wcmV2aW91c1Byb21pc2VzKHQpfWZ1bmN0aW9uIGIo dCxlKXtyZXR1cm4odC50aWNrc3x8dC5zaG93bGluZSkmJihlPT09dC5fbWFpblN1YnBsb3R8 fCJhbGwiPT09dC5taXJyb3J8fCJhbGx0aWNrcyI9PT10Lm1pcnJvcil9ZnVuY3Rpb24gXyh0 LGUscil7aWYoIXIuc2hvd2xpbmV8fCFyLl9sdylyZXR1cm4hMTtpZigiYWxsIj09PXIubWly cm9yfHwiYWxsdGlja3MiPT09ci5taXJyb3IpcmV0dXJuITA7dmFyIG49ci5fYW5jaG9yQXhp cztpZighbilyZXR1cm4hMTt2YXIgaT1wLkZST01fQkxbZV07cmV0dXJuIHIuc2lkZT09PWU/ bi5kb21haW5baV09PT10LmRvbWFpbltpXTpyLm1pcnJvciYmbi5kb21haW5bMS1pXT09PXQu ZG9tYWluWzEtaV19ZnVuY3Rpb24gdyh0LGUscixuKXtpZihfKHQsZSxyKSlyZXR1cm4gci5f bHc7Zm9yKHZhciBpPTA7aTxuLmxlbmd0aDtpKyspe3ZhciBhPW5baV07aWYoYS5fbWFpbkF4 aXM9PT1yLl9tYWluQXhpcyYmXyh0LGUsYSkpcmV0dXJuIGEuX2x3fXJldHVybiAwfWZ1bmN0 aW9uIFQodCxlKXt2YXIgcj10LnRpdGxlLG49dC5fc2l6ZSxpPTA7c3dpdGNoKCJzdGFydCI9 PT1lP2k9ci5wYWQubDoiZW5kIj09PWUmJihpPS1yLnBhZC5yKSxyLnhyZWYpe2Nhc2UicGFw ZXIiOnJldHVybiBuLmwrbi53KnIueCtpO2Nhc2UiY29udGFpbmVyIjpkZWZhdWx0OnJldHVy biB0LndpZHRoKnIueCtpfX1mdW5jdGlvbiBrKHQsZSl7dmFyIHI9dC50aXRsZSxuPXQuX3Np emUsaT0wO2lmKCIwZW0iIT09ZSYmZT9lPT09cC5DQVBfU0hJRlQrImVtIiYmKGk9ci5wYWQu dCk6aT0tci5wYWQuYiwiYXV0byI9PT1yLnkpcmV0dXJuIG4udC8yO3N3aXRjaChyLnlyZWYp e2Nhc2UicGFwZXIiOnJldHVybiBuLnQrbi5oLW4uaCpyLnkraTtjYXNlImNvbnRhaW5lciI6 ZGVmYXVsdDpyZXR1cm4gdC5oZWlnaHQtdC5oZWlnaHQqci55K2l9fXIubGF5b3V0U3R5bGVz PWZ1bmN0aW9uKHQpe3JldHVybiBvLnN5bmNPckFzeW5jKFthLmRvQXV0b01hcmdpbix4XSx0 KX0sci5kcmF3TWFpblRpdGxlPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQscj1m dW5jdGlvbih0KXt2YXIgZT10LnRpdGxlLHI9Im1pZGRsZSI7by5pc1JpZ2h0QW5jaG9yKGUp P3I9ImVuZCI6by5pc0xlZnRBbmNob3IoZSkmJihyPSJzdGFydCIpO3JldHVybiByfShlKSxu PWZ1bmN0aW9uKHQpe3ZhciBlPXQudGl0bGUscj0iMGVtIjtvLmlzVG9wQW5jaG9yKGUpP3I9 cC5DQVBfU0hJRlQrImVtIjpvLmlzTWlkZGxlQW5jaG9yKGUpJiYocj1wLk1JRF9TSElGVCsi ZW0iKTtyZXR1cm4gcn0oZSk7dS5kcmF3KHQsImd0aXRsZSIse3Byb3BDb250YWluZXI6ZSxw cm9wTmFtZToidGl0bGUudGV4dCIscGxhY2Vob2xkZXI6ZS5fZGZsdFRpdGxlLnBsb3QsYXR0 cmlidXRlczp7eDpUKGUscikseTprKGUsbiksInRleHQtYW5jaG9yIjpyLGR5Om59fSl9LHIu ZG9UcmFjZVN0eWxlPWZ1bmN0aW9uKHQpe3ZhciBlLG49dC5jYWxjZGF0YSxvPVtdO2Zvcihl PTA7ZTxuLmxlbmd0aDtlKyspe3ZhciBsPW5bZV0sYz1sWzBdfHx7fSx1PWMudHJhY2V8fHt9 LGY9dS5fbW9kdWxlfHx7fSxoPWYuYXJyYXlzVG9DYWxjZGF0YTtoJiZoKGwsdSk7dmFyIHA9 Zi5lZGl0U3R5bGU7cCYmby5wdXNoKHtmbjpwLGNkMDpjfSl9aWYoby5sZW5ndGgpe2Zvcihl PTA7ZTxvLmxlbmd0aDtlKyspe3ZhciBkPW9bZV07ZC5mbih0LGQuY2QwKX1zKHQpLHIucmVk cmF3UmVnbFRyYWNlcyh0KX1yZXR1cm4gYS5zdHlsZSh0KSxpLmdldENvbXBvbmVudE1ldGhv ZCgibGVnZW5kIiwiZHJhdyIpKHQpLGEucHJldmlvdXNQcm9taXNlcyh0KX0sci5kb0NvbG9y QmFycz1mdW5jdGlvbih0KXtyZXR1cm4gaS5nZXRDb21wb25lbnRNZXRob2QoImNvbG9yYmFy IiwiZHJhdyIpKHQpLGEucHJldmlvdXNQcm9taXNlcyh0KX0sci5sYXlvdXRSZXBsb3Q9ZnVu Y3Rpb24odCl7dmFyIGU9dC5sYXlvdXQ7cmV0dXJuIHQubGF5b3V0PXZvaWQgMCxpLmNhbGwo Il9kb1Bsb3QiLHQsIiIsZSl9LHIuZG9MZWdlbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGkuZ2V0 Q29tcG9uZW50TWV0aG9kKCJsZWdlbmQiLCJkcmF3IikodCksYS5wcmV2aW91c1Byb21pc2Vz KHQpfSxyLmRvVGlja3NSZWxheW91dD1mdW5jdGlvbih0KXtyZXR1cm4gaC5kcmF3KHQsInJl ZHJhdyIpLHQuX2Z1bGxMYXlvdXQuX2hhc09ubHlMYXJnZVNwbG9tcyYmKGkuc3VicGxvdHNS ZWdpc3RyeS5zcGxvbS51cGRhdGVHcmlkKHQpLHModCksci5yZWRyYXdSZWdsVHJhY2VzKHQp KSxyLmRyYXdNYWluVGl0bGUodCksYS5wcmV2aW91c1Byb21pc2VzKHQpfSxyLmRvTW9kZUJh cj1mdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0O2YubWFuYWdlKHQpO2Zvcih2YXIg cj0wO3I8ZS5fYmFzZVBsb3RNb2R1bGVzLmxlbmd0aDtyKyspe3ZhciBuPWUuX2Jhc2VQbG90 TW9kdWxlc1tyXS51cGRhdGVGeDtuJiZuKHQpfXJldHVybiBhLnByZXZpb3VzUHJvbWlzZXMo dCl9LHIuZG9DYW1lcmE9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuX2Z1bGxMYXlvdXQscj1l Ll9zdWJwbG90cy5nbDNkLG49MDtuPHIubGVuZ3RoO24rKyl7dmFyIGk9ZVtyW25dXTtpLl9z Y2VuZS5zZXRWaWV3cG9ydChpKX19LHIuZHJhd0RhdGE9ZnVuY3Rpb24odCl7dmFyIGU9dC5f ZnVsbExheW91dDtzKHQpO2Zvcih2YXIgbj1lLl9iYXNlUGxvdE1vZHVsZXMsbz0wO288bi5s ZW5ndGg7bysrKW5bb10ucGxvdCh0KTtyZXR1cm4gci5yZWRyYXdSZWdsVHJhY2VzKHQpLGEu c3R5bGUodCksaS5nZXRDb21wb25lbnRNZXRob2QoInNoYXBlcyIsImRyYXciKSh0KSxpLmdl dENvbXBvbmVudE1ldGhvZCgiYW5ub3RhdGlvbnMiLCJkcmF3IikodCksaS5nZXRDb21wb25l bnRNZXRob2QoImltYWdlcyIsImRyYXciKSh0KSxlLl9yZXBsb3R0aW5nPSExLGEucHJldmlv dXNQcm9taXNlcyh0KX0sci5yZWRyYXdSZWdsVHJhY2VzPWZ1bmN0aW9uKHQpe3ZhciBlPXQu X2Z1bGxMYXlvdXQ7aWYoZS5faGFzKCJyZWdsIikpe3ZhciByLG4saT10Ll9mdWxsRGF0YSxh PVtdLHM9W107Zm9yKGUuX2hhc09ubHlMYXJnZVNwbG9tcyYmZS5fc3Bsb21HcmlkLmRyYXco KSxyPTA7cjxpLmxlbmd0aDtyKyspe3ZhciBsPWlbcl07ITA9PT1sLnZpc2libGUmJjAhPT1s Ll9sZW5ndGgmJigic3Bsb20iPT09bC50eXBlP2UuX3NwbG9tU2NlbmVzW2wudWlkXS5kcmF3 KCk6InNjYXR0ZXJnbCI9PT1sLnR5cGU/by5wdXNoVW5pcXVlKGEsbC54YXhpcytsLnlheGlz KToic2NhdHRlcnBvbGFyZ2wiPT09bC50eXBlJiZvLnB1c2hVbmlxdWUocyxsLnN1YnBsb3Qp KX1mb3Iocj0wO3I8YS5sZW5ndGg7cisrKShuPWUuX3Bsb3RzW2Fbcl1dKS5fc2NlbmUmJm4u X3NjZW5lLmRyYXcoKTtmb3Iocj0wO3I8cy5sZW5ndGg7cisrKShuPWVbc1tyXV0uX3N1YnBs b3QpLl9zY2VuZSYmbi5fc2NlbmUuZHJhdygpfX0sci5kb0F1dG9SYW5nZUFuZENvbnN0cmFp bnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyPWgubGlzdCh0LCIiLCEwKSxuPXt9LGk9MDtp PHIubGVuZ3RoO2krKylpZighblsoZT1yW2ldKS5faWRdKXtuW2UuX2lkXT0xLGcodCxlKSx2 KHQsZSk7dmFyIGE9ZS5fbWF0Y2hHcm91cDtpZihhKWZvcih2YXIgbyBpbiBhKXt2YXIgcz1o LmdldEZyb21JZCh0LG8pO3YodCxzLGUucmFuZ2UpLG5bb109MX19bSh0KX0sci5maW5hbERy YXc9ZnVuY3Rpb24odCl7aS5nZXRDb21wb25lbnRNZXRob2QoInJhbmdlc2xpZGVyIiwiZHJh dyIpKHQpLGkuZ2V0Q29tcG9uZW50TWV0aG9kKCJyYW5nZXNlbGVjdG9yIiwiZHJhdyIpKHQp fSxyLmRyYXdNYXJnaW5QdXNoZXJzPWZ1bmN0aW9uKHQpe2kuZ2V0Q29tcG9uZW50TWV0aG9k KCJsZWdlbmQiLCJkcmF3IikodCksaS5nZXRDb21wb25lbnRNZXRob2QoInJhbmdlc2VsZWN0 b3IiLCJkcmF3IikodCksaS5nZXRDb21wb25lbnRNZXRob2QoInNsaWRlcnMiLCJkcmF3Iiko dCksaS5nZXRDb21wb25lbnRNZXRob2QoInVwZGF0ZW1lbnVzIiwiZHJhdyIpKHQpLGkuZ2V0 Q29tcG9uZW50TWV0aG9kKCJjb2xvcmJhciIsImRyYXciKSh0KX19LHsiLi4vY29tcG9uZW50 cy9jb2xvciI6MzY2LCIuLi9jb21wb25lbnRzL2RyYXdpbmciOjM4OCwiLi4vY29tcG9uZW50 cy9tb2RlYmFyIjo0MjksIi4uL2NvbXBvbmVudHMvdGl0bGVzIjo0NjQsIi4uL2NvbnN0YW50 cy9hbGlnbm1lbnQiOjQ3MSwiLi4vbGliIjo1MDMsIi4uL2xpYi9jbGVhcl9nbF9jYW52YXNl cyI6NDg3LCIuLi9wbG90cy9jYXJ0ZXNpYW4vYXV0b3JhbmdlIjo1NTMsIi4uL3Bsb3RzL2Nh cnRlc2lhbi9heGVzIjo1NTQsIi4uL3Bsb3RzL2NhcnRlc2lhbi9jb25zdHJhaW50cyI6NTYy LCIuLi9wbG90cy9wbG90cyI6NjE5LCIuLi9yZWdpc3RyeSI6NjM4LCJAcGxvdGx5L2QzIjo1 OH1dLDU0NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9saWIi KSxpPW4uaXNQbGFpbk9iamVjdCxhPXQoIi4vcGxvdF9zY2hlbWEiKSxvPXQoIi4uL3Bsb3Rz L3Bsb3RzIikscz10KCIuLi9wbG90cy9hdHRyaWJ1dGVzIiksbD10KCIuL3Bsb3RfdGVtcGxh dGUiKSxjPXQoIi4vcGxvdF9jb25maWciKS5kZmx0Q29uZmlnO2Z1bmN0aW9uIHUodCxlKXt0 PW4uZXh0ZW5kRGVlcCh7fSx0KTt2YXIgcixhLG89T2JqZWN0LmtleXModCkuc29ydCgpO2Z1 bmN0aW9uIHMoZSxyLG4pe2lmKGkocikmJmkoZSkpdShlLHIpO2Vsc2UgaWYoQXJyYXkuaXNB cnJheShyKSYmQXJyYXkuaXNBcnJheShlKSl7dmFyIG89bC5hcnJheVRlbXBsYXRlcih7X3Rl bXBsYXRlOnR9LG4pO2ZvcihhPTA7YTxyLmxlbmd0aDthKyspe3ZhciBzPXJbYV0sYz1vLm5l d0l0ZW0ocykuX3RlbXBsYXRlO2MmJnUoYyxzKX12YXIgZj1vLmRlZmF1bHRJdGVtcygpO2Zv cihhPTA7YTxmLmxlbmd0aDthKyspci5wdXNoKGZbYV0uX3RlbXBsYXRlKTtmb3IoYT0wO2E8 ci5sZW5ndGg7YSsrKWRlbGV0ZSByW2FdLnRlbXBsYXRlaXRlbW5hbWV9fWZvcihyPTA7cjxv Lmxlbmd0aDtyKyspe3ZhciBjPW9bcl0saD10W2NdO2lmKGMgaW4gZT9zKGgsZVtjXSxjKTpl W2NdPWgsZihjKT09PWMpZm9yKHZhciBwIGluIGUpe3ZhciBkPWYocCk7cD09PWR8fGQhPT1j fHxwIGluIHR8fHMoaCxlW3BdLGMpfX19ZnVuY3Rpb24gZih0KXtyZXR1cm4gdC5yZXBsYWNl KC9bMC05XSskLywiIil9ZnVuY3Rpb24gaCh0LGUscixhLG8pe3ZhciBzPW8mJnIobyk7Zm9y KHZhciBjIGluIHQpe3ZhciB1PXRbY10scD1tKHQsYyxhKSxkPW0odCxjLG8pLGc9cihkKTtp ZighZyl7dmFyIHY9ZihjKTt2IT09YyYmKGc9cihkPW0odCx2LG8pKSl9aWYoKCFzfHxzIT09 ZykmJiEoIWd8fGcuX25vVGVtcGxhdGluZ3x8ImRhdGFfYXJyYXkiPT09Zy52YWxUeXBlfHxn LmFycmF5T2smJkFycmF5LmlzQXJyYXkodSkpKWlmKCFnLnZhbFR5cGUmJmkodSkpaCh1LGUs cixwLGQpO2Vsc2UgaWYoZy5faXNMaW5rZWRUb0FycmF5JiZBcnJheS5pc0FycmF5KHUpKWZv cih2YXIgeT0hMSx4PTAsYj17fSxfPTA7Xzx1Lmxlbmd0aDtfKyspe3ZhciB3PXVbX107aWYo aSh3KSl7dmFyIFQ9dy5uYW1lO2lmKFQpYltUXXx8KGgodyxlLHIsbSh1LHgscCksbSh1LHgs ZCkpLHgrKyxiW1RdPTEpO2Vsc2UgaWYoIXkpe3ZhciBrPW0odCxsLmFycmF5RGVmYXVsdEtl eShjKSxhKSxBPW0odSx4LHApO2godyxlLHIsQSxtKHUseCxkKSk7dmFyIE09bi5uZXN0ZWRQ cm9wZXJ0eShlLEEpO24ubmVzdGVkUHJvcGVydHkoZSxrKS5zZXQoTS5nZXQoKSksTS5zZXQo bnVsbCkseT0hMH19fWVsc2V7bi5uZXN0ZWRQcm9wZXJ0eShlLHApLnNldCh1KX19fWZ1bmN0 aW9uIHAodCxlKXtyZXR1cm4gYS5nZXRMYXlvdXRWYWxPYmplY3QodCxuLm5lc3RlZFByb3Bl cnR5KHt9LGUpLnBhcnRzKX1mdW5jdGlvbiBkKHQsZSl7cmV0dXJuIGEuZ2V0VHJhY2VWYWxP YmplY3QodCxuLm5lc3RlZFByb3BlcnR5KHt9LGUpLnBhcnRzKX1mdW5jdGlvbiBtKHQsZSxy KXtyZXR1cm4gcj9BcnJheS5pc0FycmF5KHQpP3IrIlsiK2UrIl0iOnIrIi4iK2U6ZX1mdW5j dGlvbiBnKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKGkodFtlXSkpcmV0dXJu ITB9ZnVuY3Rpb24gdih0KXt2YXIgZTtzd2l0Y2godC5jb2RlKXtjYXNlImRhdGEiOmU9IlRo ZSB0ZW1wbGF0ZSBoYXMgbm8ga2V5IGRhdGEuIjticmVhaztjYXNlImxheW91dCI6ZT0iVGhl IHRlbXBsYXRlIGhhcyBubyBrZXkgbGF5b3V0LiI7YnJlYWs7Y2FzZSJtaXNzaW5nIjplPXQu cGF0aD8iVGhlcmUgYXJlIG5vIHRlbXBsYXRlcyBmb3IgaXRlbSAiK3QucGF0aCsiIHdpdGgg bmFtZSAiK3QudGVtcGxhdGVpdGVtbmFtZToiVGhlcmUgYXJlIG5vIHRlbXBsYXRlcyBmb3Ig dHJhY2UgIit0LmluZGV4KyIsIG9mIHR5cGUgIit0LnRyYWNlVHlwZSsiLiI7YnJlYWs7Y2Fz ZSJ1bnVzZWQiOmU9dC5wYXRoPyJUaGUgdGVtcGxhdGUgaXRlbSBhdCAiK3QucGF0aCsiIHdh cyBub3QgdXNlZCBpbiBjb25zdHJ1Y3RpbmcgdGhlIHBsb3QuIjp0LmRhdGFDb3VudD8iU29t ZSBvZiB0aGUgdGVtcGxhdGVzIG9mIHR5cGUgIit0LnRyYWNlVHlwZSsiIHdlcmUgbm90IHVz ZWQuIFRoZSB0ZW1wbGF0ZSBoYXMgIit0LnRlbXBsYXRlQ291bnQrIiB0cmFjZXMsIHRoZSBk YXRhIG9ubHkgaGFzICIrdC5kYXRhQ291bnQrIiBvZiB0aGlzIHR5cGUuIjoiVGhlIHRlbXBs YXRlIGhhcyAiK3QudGVtcGxhdGVDb3VudCsiIHRyYWNlcyBvZiB0eXBlICIrdC50cmFjZVR5 cGUrIiBidXQgdGhlcmUgYXJlIG5vbmUgaW4gdGhlIGRhdGEuIjticmVhaztjYXNlInJldXNl ZCI6ZT0iU29tZSBvZiB0aGUgdGVtcGxhdGVzIG9mIHR5cGUgIit0LnRyYWNlVHlwZSsiIHdl cmUgdXNlZCBtb3JlIHRoYW4gb25jZS4gVGhlIHRlbXBsYXRlIGhhcyAiK3QudGVtcGxhdGVD b3VudCsiIHRyYWNlcywgdGhlIGRhdGEgaGFzICIrdC5kYXRhQ291bnQrIiBvZiB0aGlzIHR5 cGUuIn1yZXR1cm4gdC5tc2c9ZSx0fXIubWFrZVRlbXBsYXRlPWZ1bmN0aW9uKHQpe3Q9bi5p c1BsYWluT2JqZWN0KHQpP3Q6bi5nZXRHcmFwaERpdih0KSx0PW4uZXh0ZW5kRGVlcCh7X2Nv bnRleHQ6Y30se2RhdGE6dC5kYXRhLGxheW91dDp0LmxheW91dH0pLG8uc3VwcGx5RGVmYXVs dHModCk7dmFyIGU9dC5kYXRhfHxbXSxyPXQubGF5b3V0fHx7fTtyLl9iYXNlUGxvdE1vZHVs ZXM9dC5fZnVsbExheW91dC5fYmFzZVBsb3RNb2R1bGVzLHIuX21vZHVsZXM9dC5fZnVsbExh eW91dC5fbW9kdWxlczt2YXIgYT17ZGF0YTp7fSxsYXlvdXQ6e319O2UuZm9yRWFjaCgoZnVu Y3Rpb24odCl7dmFyIGU9e307aCh0LGUsZC5iaW5kKG51bGwsdCkpO3ZhciByPW4uY29lcmNl KHQse30scywidHlwZSIpLGk9YS5kYXRhW3JdO2l8fChpPWEuZGF0YVtyXT1bXSksaS5wdXNo KGUpfSkpLGgocixhLmxheW91dCxwLmJpbmQobnVsbCxyKSksZGVsZXRlIGEubGF5b3V0LnRl bXBsYXRlO3ZhciBsPXIudGVtcGxhdGU7aWYoaShsKSl7dmFyIGYsbSxnLHYseSx4LGI9bC5s YXlvdXQ7aShiKSYmdShiLGEubGF5b3V0KTt2YXIgXz1sLmRhdGE7aWYoaShfKSl7Zm9yKG0g aW4gYS5kYXRhKWlmKGc9X1ttXSxBcnJheS5pc0FycmF5KGcpKXtmb3IoeD0oeT1hLmRhdGFb bV0pLmxlbmd0aCx2PWcubGVuZ3RoLGY9MDtmPHg7ZisrKXUoZ1tmJXZdLHlbZl0pO2Zvcihm PXg7Zjx2O2YrKyl5LnB1c2gobi5leHRlbmREZWVwKHt9LGdbZl0pKX1mb3IobSBpbiBfKW0g aW4gYS5kYXRhfHwoYS5kYXRhW21dPW4uZXh0ZW5kRGVlcChbXSxfW21dKSl9fXJldHVybiBh fSxyLnZhbGlkYXRlVGVtcGxhdGU9ZnVuY3Rpb24odCxlKXt2YXIgcj1uLmV4dGVuZERlZXAo e30se19jb250ZXh0OmMsZGF0YTp0LmRhdGEsbGF5b3V0OnQubGF5b3V0fSksYT1yLmxheW91 dHx8e307aShlKXx8KGU9YS50ZW1wbGF0ZXx8e30pO3ZhciBzPWUubGF5b3V0LGw9ZS5kYXRh LHU9W107ci5sYXlvdXQ9YSxyLmxheW91dC50ZW1wbGF0ZT1lLG8uc3VwcGx5RGVmYXVsdHMo cik7dmFyIGg9ci5fZnVsbExheW91dCxwPXIuX2Z1bGxEYXRhLGQ9e307aWYoaShzKT8oIWZ1 bmN0aW9uIHQoZSxyKXtmb3IodmFyIG4gaW4gZSlpZigiXyIhPT1uLmNoYXJBdCgwKSYmaShl W25dKSl7dmFyIGEsbz1mKG4pLHM9W107Zm9yKGE9MDthPHIubGVuZ3RoO2ErKylzLnB1c2go bShlLG4sclthXSkpLG8hPT1uJiZzLnB1c2gobShlLG8sclthXSkpO2ZvcihhPTA7YTxzLmxl bmd0aDthKyspZFtzW2FdXT0xO3QoZVtuXSxzKX19KGgsWyJsYXlvdXQiXSksZnVuY3Rpb24g dChlLHIpe2Zvcih2YXIgbiBpbiBlKWlmKC0xPT09bi5pbmRleE9mKCJkZWZhdWx0cyIpJiZp KGVbbl0pKXt2YXIgYT1tKGUsbixyKTtkW2FdP3QoZVtuXSxhKTp1LnB1c2goe2NvZGU6InVu dXNlZCIscGF0aDphfSl9fShzLCJsYXlvdXQiKSk6dS5wdXNoKHtjb2RlOiJsYXlvdXQifSks aShsKSl7Zm9yKHZhciB5LHg9e30sYj0wO2I8cC5sZW5ndGg7YisrKXt2YXIgXz1wW2JdO3hb eT1fLnR5cGVdPSh4W3ldfHwwKSsxLF8uX2Z1bGxJbnB1dC5fdGVtcGxhdGV8fHUucHVzaCh7 Y29kZToibWlzc2luZyIsaW5kZXg6Xy5fZnVsbElucHV0LmluZGV4LHRyYWNlVHlwZTp5fSl9 Zm9yKHkgaW4gbCl7dmFyIHc9bFt5XS5sZW5ndGgsVD14W3ldfHwwO3c+VD91LnB1c2goe2Nv ZGU6InVudXNlZCIsdHJhY2VUeXBlOnksdGVtcGxhdGVDb3VudDp3LGRhdGFDb3VudDpUfSk6 VD53JiZ1LnB1c2goe2NvZGU6InJldXNlZCIsdHJhY2VUeXBlOnksdGVtcGxhdGVDb3VudDp3 LGRhdGFDb3VudDpUfSl9fWVsc2UgdS5wdXNoKHtjb2RlOiJkYXRhIn0pO2lmKGZ1bmN0aW9u IHQoZSxyKXtmb3IodmFyIG4gaW4gZSlpZigiXyIhPT1uLmNoYXJBdCgwKSl7dmFyIGE9ZVtu XSxvPW0oZSxuLHIpO2koYSk/KEFycmF5LmlzQXJyYXkoZSkmJiExPT09YS5fdGVtcGxhdGUm JmEudGVtcGxhdGVpdGVtbmFtZSYmdS5wdXNoKHtjb2RlOiJtaXNzaW5nIixwYXRoOm8sdGVt cGxhdGVpdGVtbmFtZTphLnRlbXBsYXRlaXRlbW5hbWV9KSx0KGEsbykpOkFycmF5LmlzQXJy YXkoYSkmJmcoYSkmJnQoYSxvKX19KHtkYXRhOnAsbGF5b3V0Omh9LCIiKSx1Lmxlbmd0aCly ZXR1cm4gdS5tYXAodil9fSx7Ii4uL2xpYiI6NTAzLCIuLi9wbG90cy9hdHRyaWJ1dGVzIjo1 NTAsIi4uL3Bsb3RzL3Bsb3RzIjo2MTksIi4vcGxvdF9jb25maWciOjU0MSwiLi9wbG90X3Nj aGVtYSI6NTQyLCIuL3Bsb3RfdGVtcGxhdGUiOjU0M31dLDU0NjpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGk9dCgiLi9wbG90X2Fw aSIpLGE9dCgiLi4vcGxvdHMvcGxvdHMiKSxvPXQoIi4uL2xpYiIpLHM9dCgiLi4vc25hcHNo b3QvaGVscGVycyIpLGw9dCgiLi4vc25hcHNob3QvdG9zdmciKSxjPXQoIi4uL3NuYXBzaG90 L3N2Z3RvaW1nIiksdT10KCIuLi92ZXJzaW9uIikudmVyc2lvbixmPXtmb3JtYXQ6e3ZhbFR5 cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInBuZyIsImpwZWciLCJ3ZWJwIiwic3ZnIiwiZnVs bC1qc29uIl0sZGZsdDoicG5nIn0sd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjF9LGhl aWdodDp7dmFsVHlwZToibnVtYmVyIixtaW46MX0sc2NhbGU6e3ZhbFR5cGU6Im51bWJlciIs bWluOjAsZGZsdDoxfSxzZXRCYWNrZ3JvdW5kOnt2YWxUeXBlOiJhbnkiLGRmbHQ6ITF9LGlt YWdlRGF0YU9ubHk6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9fTtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlKXt2YXIgcixoLHAsZDtmdW5jdGlvbiBtKHQpe3JldHVybiEodCBpbiBlKXx8 by52YWxpZGF0ZShlW3RdLGZbdF0pfWlmKGU9ZXx8e30sby5pc1BsYWluT2JqZWN0KHQpPyhy PXQuZGF0YXx8W10saD10LmxheW91dHx8e30scD10LmNvbmZpZ3x8e30sZD17fSk6KHQ9by5n ZXRHcmFwaERpdih0KSxyPW8uZXh0ZW5kRGVlcChbXSx0LmRhdGEpLGg9by5leHRlbmREZWVw KHt9LHQubGF5b3V0KSxwPXQuX2NvbnRleHQsZD10Ll9mdWxsTGF5b3V0fHx7fSksIW0oIndp ZHRoIikmJm51bGwhPT1lLndpZHRofHwhbSgiaGVpZ2h0IikmJm51bGwhPT1lLmhlaWdodCl0 aHJvdyBuZXcgRXJyb3IoIkhlaWdodCBhbmQgd2lkdGggc2hvdWxkIGJlIHBpeGVsIHZhbHVl cy4iKTtpZighbSgiZm9ybWF0IikpdGhyb3cgbmV3IEVycm9yKCJFeHBvcnQgZm9ybWF0IGlz IG5vdCAiK28uam9pbjIoZi5mb3JtYXQudmFsdWVzLCIsICIsIiBvciAiKSsiLiIpO3ZhciBn PXt9O2Z1bmN0aW9uIHYodCxyKXtyZXR1cm4gby5jb2VyY2UoZSxnLGYsdCxyKX12YXIgeT12 KCJmb3JtYXQiKSx4PXYoIndpZHRoIiksYj12KCJoZWlnaHQiKSxfPXYoInNjYWxlIiksdz12 KCJzZXRCYWNrZ3JvdW5kIiksVD12KCJpbWFnZURhdGFPbmx5Iiksaz1kb2N1bWVudC5jcmVh dGVFbGVtZW50KCJkaXYiKTtrLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsay5zdHlsZS5s ZWZ0PSItNTAwMHB4Iixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGspO3ZhciBBPW8uZXh0 ZW5kRmxhdCh7fSxoKTt4P0Eud2lkdGg9eDpudWxsPT09ZS53aWR0aCYmbihkLndpZHRoKSYm KEEud2lkdGg9ZC53aWR0aCksYj9BLmhlaWdodD1iOm51bGw9PT1lLmhlaWdodCYmbihkLmhl aWdodCkmJihBLmhlaWdodD1kLmhlaWdodCk7dmFyIE09by5leHRlbmRGbGF0KHt9LHAse19l eHBvcnRlZFBsb3Q6ITAsc3RhdGljUGxvdDohMCxzZXRCYWNrZ3JvdW5kOnd9KSxTPXMuZ2V0 UmVkcmF3RnVuYyhrKTtmdW5jdGlvbiBFKCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlv bih0KXtzZXRUaW1lb3V0KHQscy5nZXREZWxheShrLl9mdWxsTGF5b3V0KSl9KSl9ZnVuY3Rp b24gTCgpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCxlKXt2YXIgcj1sKGsseSxf KSxuPWsuX2Z1bGxMYXlvdXQud2lkdGgsZj1rLl9mdWxsTGF5b3V0LmhlaWdodDtmdW5jdGlv biBoKCl7aS5wdXJnZShrKSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGspfWlmKCJmdWxs LWpzb24iPT09eSl7dmFyIHA9YS5ncmFwaEpzb24oaywhMSwia2VlcGRhdGEiLCJvYmplY3Qi LCEwLCEwKTtyZXR1cm4gcC52ZXJzaW9uPXUscD1KU09OLnN0cmluZ2lmeShwKSxoKCksdChU P3A6cy5lbmNvZGVKU09OKHApKX1pZihoKCksInN2ZyI9PT15KXJldHVybiB0KFQ/cjpzLmVu Y29kZVNWRyhyKSk7dmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7ZC5p ZD1vLnJhbmRzdHIoKSxjKHtmb3JtYXQ6eSx3aWR0aDpuLGhlaWdodDpmLHNjYWxlOl8sY2Fu dmFzOmQsc3ZnOnIscHJvbWlzZTohMH0pLnRoZW4odCkuY2F0Y2goZSl9KSl9cmV0dXJuIG5l dyBQcm9taXNlKChmdW5jdGlvbih0LGUpe2kubmV3UGxvdChrLHIsQSxNKS50aGVuKFMpLnRo ZW4oRSkudGhlbihMKS50aGVuKChmdW5jdGlvbihlKXt0KGZ1bmN0aW9uKHQpe3JldHVybiBU P3QucmVwbGFjZShzLklNQUdFX1VSTF9QUkVGSVgsIiIpOnR9KGUpKX0pKS5jYXRjaCgoZnVu Y3Rpb24odCl7ZSh0KX0pKX0pKX19LHsiLi4vbGliIjo1MDMsIi4uL3Bsb3RzL3Bsb3RzIjo2 MTksIi4uL3NuYXBzaG90L2hlbHBlcnMiOjY0MiwiLi4vc25hcHNob3Qvc3ZndG9pbWciOjY0 NCwiLi4vc25hcHNob3QvdG9zdmciOjY0NiwiLi4vdmVyc2lvbiI6MTEyMywiLi9wbG90X2Fw aSI6NTQwLCJmYXN0LWlzbnVtZXJpYyI6MTkwfV0sNTQ3OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2xpYiIpLGk9dCgiLi4vcGxvdHMvcGxvdHMiKSxhPXQo Ii4vcGxvdF9zY2hlbWEiKSxvPXQoIi4vcGxvdF9jb25maWciKS5kZmx0Q29uZmlnLHM9bi5p c1BsYWluT2JqZWN0LGw9QXJyYXkuaXNBcnJheSxjPW4uaXNBcnJheU9yVHlwZWRBcnJheTtm dW5jdGlvbiB1KHQsZSxyLGksYSxvKXtvPW98fFtdO2Zvcih2YXIgZj1PYmplY3Qua2V5cyh0 KSxoPTA7aDxmLmxlbmd0aDtoKyspe3ZhciBwPWZbaF07aWYoInRyYW5zZm9ybXMiIT09cCl7 dmFyIHY9by5zbGljZSgpO3YucHVzaChwKTt2YXIgeT10W3BdLHg9ZVtwXSxiPWcocixwKSxf PShifHx7fSkudmFsVHlwZSx3PSJpbmZvX2FycmF5Ij09PV8sVD0iY29sb3JzY2FsZSI9PT1f LGs9KGJ8fHt9KS5pdGVtcztpZihtKHIscCkpaWYocyh5KSYmcyh4KSYmImFueSIhPT1fKXUo eSx4LGIsaSxhLHYpO2Vsc2UgaWYodyYmbCh5KSl7eS5sZW5ndGg+eC5sZW5ndGgmJmkucHVz aChkKCJ1bnVzZWQiLGEsdi5jb25jYXQoeC5sZW5ndGgpKSk7dmFyIEEsTSxTLEUsTCxDPXgu bGVuZ3RoLFA9QXJyYXkuaXNBcnJheShrKTtpZihQJiYoQz1NYXRoLm1pbihDLGsubGVuZ3Ro KSksMj09PWIuZGltZW5zaW9ucylmb3IoTT0wO008QztNKyspaWYobCh5W01dKSl7eVtNXS5s ZW5ndGg+eFtNXS5sZW5ndGgmJmkucHVzaChkKCJ1bnVzZWQiLGEsdi5jb25jYXQoTSx4W01d Lmxlbmd0aCkpKTt2YXIgST14W01dLmxlbmd0aDtmb3IoQT0wO0E8KFA/TWF0aC5taW4oSSxr W01dLmxlbmd0aCk6SSk7QSsrKVM9UD9rW01dW0FdOmssRT15W01dW0FdLEw9eFtNXVtBXSxu LnZhbGlkYXRlKEUsUyk/TCE9PUUmJkwhPT0rRSYmaS5wdXNoKGQoImR5bmFtaWMiLGEsdi5j b25jYXQoTSxBKSxFLEwpKTppLnB1c2goZCgidmFsdWUiLGEsdi5jb25jYXQoTSxBKSxFKSl9 ZWxzZSBpLnB1c2goZCgiYXJyYXkiLGEsdi5jb25jYXQoTSkseVtNXSkpO2Vsc2UgZm9yKE09 MDtNPEM7TSsrKVM9UD9rW01dOmssRT15W01dLEw9eFtNXSxuLnZhbGlkYXRlKEUsUyk/TCE9 PUUmJkwhPT0rRSYmaS5wdXNoKGQoImR5bmFtaWMiLGEsdi5jb25jYXQoTSksRSxMKSk6aS5w dXNoKGQoInZhbHVlIixhLHYuY29uY2F0KE0pLEUpKX1lbHNlIGlmKGIuaXRlbXMmJiF3JiZs KHkpKXt2YXIgTyx6LEQ9a1tPYmplY3Qua2V5cyhrKVswXV0sUj1bXTtmb3IoTz0wO088eC5s ZW5ndGg7TysrKXt2YXIgRj14W09dLl9pbmRleHx8TztpZigoej12LnNsaWNlKCkpLnB1c2go Rikscyh5W0ZdKSYmcyh4W09dKSl7Ui5wdXNoKEYpO3ZhciBCPXlbRl0sTj14W09dO3MoQikm JiExIT09Qi52aXNpYmxlJiYhMT09PU4udmlzaWJsZT9pLnB1c2goZCgiaW52aXNpYmxlIixh LHopKTp1KEIsTixELGksYSx6KX19Zm9yKE89MDtPPHkubGVuZ3RoO08rKykoej12LnNsaWNl KCkpLnB1c2goTykscyh5W09dKT8tMT09PVIuaW5kZXhPZihPKSYmaS5wdXNoKGQoInVudXNl ZCIsYSx6KSk6aS5wdXNoKGQoIm9iamVjdCIsYSx6LHlbT10pKX1lbHNlIXMoeSkmJnMoeCk/ aS5wdXNoKGQoIm9iamVjdCIsYSx2LHkpKTpjKHkpfHwhYyh4KXx8d3x8VD9wIGluIGU/bi52 YWxpZGF0ZSh5LGIpPyJlbnVtZXJhdGVkIj09PWIudmFsVHlwZSYmKGIuY29lcmNlTnVtYmVy JiZ5IT09K3h8fHkhPT14KSYmaS5wdXNoKGQoImR5bmFtaWMiLGEsdix5LHgpKTppLnB1c2go ZCgidmFsdWUiLGEsdix5KSk6aS5wdXNoKGQoInVudXNlZCIsYSx2LHkpKTppLnB1c2goZCgi YXJyYXkiLGEsdix5KSk7ZWxzZSBpLnB1c2goZCgic2NoZW1hIixhLHYpKX19cmV0dXJuIGl9 ZnVuY3Rpb24gZih0LGUpe2Zvcih2YXIgcj10LmxheW91dC5sYXlvdXRBdHRyaWJ1dGVzLGk9 MDtpPGUubGVuZ3RoO2krKyl7dmFyIGE9ZVtpXSxvPXQudHJhY2VzW2EudHlwZV0scz1vLmxh eW91dEF0dHJpYnV0ZXM7cyYmKGEuc3VicGxvdD9uLmV4dGVuZEZsYXQocltvLmF0dHJpYnV0 ZXMuc3VicGxvdC5kZmx0XSxzKTpuLmV4dGVuZEZsYXQocixzKSl9cmV0dXJuIHJ9ZS5leHBv cnRzPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09dCYmKHQ9W10pLHZvaWQgMD09PWUmJihlPXt9 KTt2YXIgcixjLGg9YS5nZXQoKSxwPVtdLG09e19jb250ZXh0Om4uZXh0ZW5kRmxhdCh7fSxv KX07bCh0KT8obS5kYXRhPW4uZXh0ZW5kRGVlcChbXSx0KSxyPXQpOihtLmRhdGE9W10scj1b XSxwLnB1c2goZCgiYXJyYXkiLCJkYXRhIikpKSxzKGUpPyhtLmxheW91dD1uLmV4dGVuZERl ZXAoe30sZSksYz1lKToobS5sYXlvdXQ9e30sYz17fSxhcmd1bWVudHMubGVuZ3RoPjEmJnAu cHVzaChkKCJvYmplY3QiLCJsYXlvdXQiKSkpLGkuc3VwcGx5RGVmYXVsdHMobSk7Zm9yKHZh ciBnPW0uX2Z1bGxEYXRhLHY9ci5sZW5ndGgseT0wO3k8djt5Kyspe3ZhciB4PXJbeV0sYj1b ImRhdGEiLHldO2lmKHMoeCkpe3ZhciBfPWdbeV0sdz1fLnR5cGUsVD1oLnRyYWNlc1t3XS5h dHRyaWJ1dGVzO1QudHlwZT17dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlt3XX0sITE9 PT1fLnZpc2libGUmJiExIT09eC52aXNpYmxlJiZwLnB1c2goZCgiaW52aXNpYmxlIixiKSks dSh4LF8sVCxwLGIpO3ZhciBrPXgudHJhbnNmb3JtcyxBPV8udHJhbnNmb3JtcztpZihrKXts KGspfHxwLnB1c2goZCgiYXJyYXkiLGIsWyJ0cmFuc2Zvcm1zIl0pKSxiLnB1c2goInRyYW5z Zm9ybXMiKTtmb3IodmFyIE09MDtNPGsubGVuZ3RoO00rKyl7dmFyIFM9WyJ0cmFuc2Zvcm1z IixNXSxFPWtbTV0udHlwZTtpZihzKGtbTV0pKXt2YXIgTD1oLnRyYW5zZm9ybXNbRV0/aC50 cmFuc2Zvcm1zW0VdLmF0dHJpYnV0ZXM6e307TC50eXBlPXt2YWxUeXBlOiJlbnVtZXJhdGVk Iix2YWx1ZXM6T2JqZWN0LmtleXMoaC50cmFuc2Zvcm1zKX0sdShrW01dLEFbTV0sTCxwLGIs Uyl9ZWxzZSBwLnB1c2goZCgib2JqZWN0IixiLFMpKX19fWVsc2UgcC5wdXNoKGQoIm9iamVj dCIsYikpfXZhciBDPW0uX2Z1bGxMYXlvdXQsUD1mKGgsZyk7cmV0dXJuIHUoYyxDLFAscCwi bGF5b3V0IiksMD09PXAubGVuZ3RoP3ZvaWQgMDpwfTt2YXIgaD17b2JqZWN0OmZ1bmN0aW9u KHQsZSl7cmV0dXJuKCJsYXlvdXQiPT09dCYmIiI9PT1lPyJUaGUgbGF5b3V0IGFyZ3VtZW50 IjoiZGF0YSI9PT10WzBdJiYiIj09PWU/IlRyYWNlICIrdFsxXSsiIGluIHRoZSBkYXRhIGFy Z3VtZW50IjpwKHQpKyJrZXkgIitlKSsiIG11c3QgYmUgbGlua2VkIHRvIGFuIG9iamVjdCBj b250YWluZXIifSxhcnJheTpmdW5jdGlvbih0LGUpe3JldHVybigiZGF0YSI9PT10PyJUaGUg ZGF0YSBhcmd1bWVudCI6cCh0KSsia2V5ICIrZSkrIiBtdXN0IGJlIGxpbmtlZCB0byBhbiBh cnJheSBjb250YWluZXIifSxzY2hlbWE6ZnVuY3Rpb24odCxlKXtyZXR1cm4gcCh0KSsia2V5 ICIrZSsiIGlzIG5vdCBwYXJ0IG9mIHRoZSBzY2hlbWEifSx1bnVzZWQ6ZnVuY3Rpb24odCxl LHIpe3ZhciBuPXMocik/ImNvbnRhaW5lciI6ImtleSI7cmV0dXJuIHAodCkrbisiICIrZSsi IGRpZCBub3QgZ2V0IGNvZXJjZWQifSxkeW5hbWljOmZ1bmN0aW9uKHQsZSxyLG4pe3JldHVy bltwKHQpKyJrZXkiLGUsIihzZXQgdG8gJyIrcisiJykiLCJnb3QgcmVzZXQgdG8iLCInIitu KyInIiwiZHVyaW5nIGRlZmF1bHRzLiJdLmpvaW4oIiAiKX0saW52aXNpYmxlOmZ1bmN0aW9u KHQsZSl7cmV0dXJuKGU/cCh0KSsiaXRlbSAiK2U6IlRyYWNlICIrdFsxXSkrIiBnb3QgZGVm YXVsdGVkIHRvIGJlIG5vdCB2aXNpYmxlIn0sdmFsdWU6ZnVuY3Rpb24odCxlLHIpe3JldHVy bltwKHQpKyJrZXkgIitlLCJpcyBzZXQgdG8gYW4gaW52YWxpZCB2YWx1ZSAoIityKyIpIl0u am9pbigiICIpfX07ZnVuY3Rpb24gcCh0KXtyZXR1cm4gbCh0KT8iSW4gZGF0YSB0cmFjZSAi K3RbMV0rIiwgIjoiSW4gIit0KyIsICJ9ZnVuY3Rpb24gZCh0LGUscixpLGEpe3ZhciBvLHM7 cj1yfHwiIixsKGUpPyhvPWVbMF0scz1lWzFdKToobz1lLHM9bnVsbCk7dmFyIGM9ZnVuY3Rp b24odCl7aWYoIWwodCkpcmV0dXJuIFN0cmluZyh0KTtmb3IodmFyIGU9IiIscj0wO3I8dC5s ZW5ndGg7cisrKXt2YXIgbj10W3JdOyJudW1iZXIiPT10eXBlb2Ygbj9lPWUuc3Vic3RyKDAs ZS5sZW5ndGgtMSkrIlsiK24rIl0iOmUrPW4scjx0Lmxlbmd0aC0xJiYoZSs9Ii4iKX1yZXR1 cm4gZX0ociksdT1oW3RdKGUsYyxpLGEpO3JldHVybiBuLmxvZyh1KSx7Y29kZTp0LGNvbnRh aW5lcjpvLHRyYWNlOnMscGF0aDpyLGFzdHI6Yyxtc2c6dX19ZnVuY3Rpb24gbSh0LGUpe3Zh ciByPXkoZSksbj1yLmtleU1pbnVzSWQsaT1yLmlkO3JldHVybiEhKG4gaW4gdCYmdFtuXS5f aXNTdWJwbG90T2JqJiZpKXx8ZSBpbiB0fWZ1bmN0aW9uIGcodCxlKXtyZXR1cm4gZSBpbiB0 P3RbZV06dFt5KGUpLmtleU1pbnVzSWRdfXZhciB2PW4uY291bnRlclJlZ2V4KCIoW2Etel0r KSIpO2Z1bmN0aW9uIHkodCl7dmFyIGU9dC5tYXRjaCh2KTtyZXR1cm57a2V5TWludXNJZDpl JiZlWzFdLGlkOmUmJmVbMl19fX0seyIuLi9saWIiOjUwMywiLi4vcGxvdHMvcGxvdHMiOjYx OSwiLi9wbG90X2NvbmZpZyI6NTQxLCIuL3Bsb3Rfc2NoZW1hIjo1NDJ9XSw1NDg6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXttb2RlOnt2YWxUeXBlOiJlbnVt ZXJhdGVkIixkZmx0OiJhZnRlcmFsbCIsdmFsdWVzOlsiaW1tZWRpYXRlIiwibmV4dCIsImFm dGVyYWxsIl19LGRpcmVjdGlvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiZm9y d2FyZCIsInJldmVyc2UiXSxkZmx0OiJmb3J3YXJkIn0sZnJvbWN1cnJlbnQ6e3ZhbFR5cGU6 ImJvb2xlYW4iLGRmbHQ6ITF9LGZyYW1lOntkdXJhdGlvbjp7dmFsVHlwZToibnVtYmVyIixt aW46MCxkZmx0OjUwMH0scmVkcmF3Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfX0sdHJh bnNpdGlvbjp7ZHVyYXRpb246e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDo1MDAsZWRp dFR5cGU6Im5vbmUifSxlYXNpbmc6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLGRmbHQ6ImN1Ymlj LWluLW91dCIsdmFsdWVzOlsibGluZWFyIiwicXVhZCIsImN1YmljIiwic2luIiwiZXhwIiwi Y2lyY2xlIiwiZWxhc3RpYyIsImJhY2siLCJib3VuY2UiLCJsaW5lYXItaW4iLCJxdWFkLWlu IiwiY3ViaWMtaW4iLCJzaW4taW4iLCJleHAtaW4iLCJjaXJjbGUtaW4iLCJlbGFzdGljLWlu IiwiYmFjay1pbiIsImJvdW5jZS1pbiIsImxpbmVhci1vdXQiLCJxdWFkLW91dCIsImN1Ymlj LW91dCIsInNpbi1vdXQiLCJleHAtb3V0IiwiY2lyY2xlLW91dCIsImVsYXN0aWMtb3V0Iiwi YmFjay1vdXQiLCJib3VuY2Utb3V0IiwibGluZWFyLWluLW91dCIsInF1YWQtaW4tb3V0Iiwi Y3ViaWMtaW4tb3V0Iiwic2luLWluLW91dCIsImV4cC1pbi1vdXQiLCJjaXJjbGUtaW4tb3V0 IiwiZWxhc3RpYy1pbi1vdXQiLCJiYWNrLWluLW91dCIsImJvdW5jZS1pbi1vdXQiXSxlZGl0 VHlwZToibm9uZSJ9LG9yZGVyaW5nOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJs YXlvdXQgZmlyc3QiLCJ0cmFjZXMgZmlyc3QiXSxkZmx0OiJsYXlvdXQgZmlyc3QiLGVkaXRU eXBlOiJub25lIn19fX0se31dLDU0OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCIuLi9saWIiKSxpPXQoIi4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKTtlLmV4 cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBhLG8scz1yLm5hbWUsbD1yLmluY2x1c2lvbkF0 dHJ8fCJ2aXNpYmxlIixjPWVbc10sdT1uLmlzQXJyYXlPclR5cGVkQXJyYXkodFtzXSk/dFtz XTpbXSxmPWVbc109W10saD1pLmFycmF5VGVtcGxhdGVyKGUscyxsKTtmb3IoYT0wO2E8dS5s ZW5ndGg7YSsrKXt2YXIgcD11W2FdO24uaXNQbGFpbk9iamVjdChwKT9vPWgubmV3SXRlbShw KToobz1oLm5ld0l0ZW0oe30pKVtsXT0hMSxvLl9pbmRleD1hLCExIT09b1tsXSYmci5oYW5k bGVJdGVtRGVmYXVsdHMocCxvLGUsciksZi5wdXNoKG8pfXZhciBkPWguZGVmYXVsdEl0ZW1z KCk7Zm9yKGE9MDthPGQubGVuZ3RoO2ErKykobz1kW2FdKS5faW5kZXg9Zi5sZW5ndGgsci5o YW5kbGVJdGVtRGVmYXVsdHMoe30sbyxlLHIse30pLGYucHVzaChvKTtpZihuLmlzQXJyYXlP clR5cGVkQXJyYXkoYykpe3ZhciBtPU1hdGgubWluKGMubGVuZ3RoLGYubGVuZ3RoKTtmb3Io YT0wO2E8bTthKyspbi5yZWxpbmtQcml2YXRlS2V5cyhmW2FdLGNbYV0pfXJldHVybiBmfX0s eyIuLi9saWIiOjUwMywiLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NTQzfV0sNTUwOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vZm9udF9hdHRyaWJ1dGVz IiksaT10KCIuLi9jb21wb25lbnRzL2Z4L2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9e3R5cGU6 e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbXSxkZmx0OiJzY2F0dGVyIixlZGl0VHlw ZToiY2FsYytjbGVhckF4aXNUeXBlcyIsX25vVGVtcGxhdGluZzohMH0sdmlzaWJsZTp7dmFs VHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlshMCwhMSwibGVnZW5kb25seSJdLGRmbHQ6ITAs ZWRpdFR5cGU6ImNhbGMifSxzaG93bGVnZW5kOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEw LGVkaXRUeXBlOiJzdHlsZSJ9LGxlZ2VuZGdyb3VwOnt2YWxUeXBlOiJzdHJpbmciLGRmbHQ6 IiIsZWRpdFR5cGU6InN0eWxlIn0sbGVnZW5kZ3JvdXB0aXRsZTp7dGV4dDp7dmFsVHlwZToi c3RyaW5nIixkZmx0OiIiLGVkaXRUeXBlOiJzdHlsZSJ9LGZvbnQ6bih7ZWRpdFR5cGU6InN0 eWxlIn0pLGVkaXRUeXBlOiJzdHlsZSJ9LGxlZ2VuZHJhbms6e3ZhbFR5cGU6Im51bWJlciIs ZGZsdDoxZTMsZWRpdFR5cGU6InN0eWxlIn0sb3BhY2l0eTp7dmFsVHlwZToibnVtYmVyIixt aW46MCxtYXg6MSxkZmx0OjEsZWRpdFR5cGU6InN0eWxlIn0sbmFtZTp7dmFsVHlwZToic3Ry aW5nIixlZGl0VHlwZToic3R5bGUifSx1aWQ6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6 InBsb3QiLGFuaW06ITB9LGlkczp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNh bGMiLGFuaW06ITB9LGN1c3RvbWRhdGE6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBl OiJjYWxjIn0sbWV0YTp7dmFsVHlwZToiYW55IixhcnJheU9rOiEwLGVkaXRUeXBlOiJwbG90 In0sc2VsZWN0ZWRwb2ludHM6e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6ImNhbGMifSxob3Zl cmluZm86e3ZhbFR5cGU6ImZsYWdsaXN0IixmbGFnczpbIngiLCJ5IiwieiIsInRleHQiLCJu YW1lIl0sZXh0cmFzOlsiYWxsIiwibm9uZSIsInNraXAiXSxhcnJheU9rOiEwLGRmbHQ6ImFs bCIsZWRpdFR5cGU6Im5vbmUifSxob3ZlcmxhYmVsOmkuaG92ZXJsYWJlbCxzdHJlYW06e3Rv a2VuOnt2YWxUeXBlOiJzdHJpbmciLG5vQmxhbms6ITAsc3RyaWN0OiEwLGVkaXRUeXBlOiJj YWxjIn0sbWF4cG9pbnRzOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxZTQsZGZsdDo1 MDAsZWRpdFR5cGU6ImNhbGMifSxlZGl0VHlwZToiY2FsYyJ9LHRyYW5zZm9ybXM6e19pc0xp bmtlZFRvQXJyYXk6InRyYW5zZm9ybSIsZWRpdFR5cGU6ImNhbGMifSx1aXJldmlzaW9uOnt2 YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJub25lIn19fSx7Ii4uL2NvbXBvbmVudHMvZngvYXR0 cmlidXRlcyI6Mzk3LCIuL2ZvbnRfYXR0cmlidXRlcyI6NTg1fV0sNTUxOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksaT10KCIuLi8u Li9saWIiKSxhPWkuZGF0ZVRpbWUybXMsbz1pLmluY3JlbWVudE1vbnRoLHM9dCgiLi4vLi4v Y29uc3RhbnRzL251bWVyaWNhbCIpLk9ORUFWR01PTlRIO2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUscixpKXtpZigiZGF0ZSIhPT1lLnR5cGUpcmV0dXJue3ZhbHM6aX07dmFyIGw9dFtyKyJw ZXJpb2RhbGlnbm1lbnQiXTtpZighbClyZXR1cm57dmFsczppfTt2YXIgYyx1PXRbcisicGVy aW9kIl07aWYobih1KSl7aWYoKHU9K3UpPD0wKXJldHVybnt2YWxzOml9fWVsc2UgaWYoInN0 cmluZyI9PXR5cGVvZiB1JiYiTSI9PT11LmNoYXJBdCgwKSl7dmFyIGY9K3Uuc3Vic3RyaW5n KDEpO2lmKCEoZj4wJiZNYXRoLnJvdW5kKGYpPT09ZikpcmV0dXJue3ZhbHM6aX07Yz1mfWZv cih2YXIgaD1lLmNhbGVuZGFyLHA9InN0YXJ0Ij09PWwsZD0iZW5kIj09PWwsbT10W3IrInBl cmlvZDAiXSxnPWEobSxoKXx8MCx2PVtdLHk9W10seD1bXSxiPWkubGVuZ3RoLF89MDtfPGI7 XysrKXt2YXIgdyxULGssQT1pW19dO2lmKGMpe2Zvcih3PU1hdGgucm91bmQoKEEtZykvKGMq cykpLGs9byhnLGMqdyxoKTtrPkE7KWs9byhrLC1jLGgpO2Zvcig7azw9QTspaz1vKGssYyxo KTtUPW8oaywtYyxoKX1lbHNle2ZvcihrPWcrKHc9TWF0aC5yb3VuZCgoQS1nKS91KSkqdTtr PkE7KWstPXU7Zm9yKDtrPD1BOylrKz11O1Q9ay11fXZbX109cD9UOmQ/azooVCtrKS8yLHlb X109VCx4W19dPWt9cmV0dXJue3ZhbHM6dixzdGFydHM6eSxlbmRzOnh9fX0seyIuLi8uLi9j b25zdGFudHMvbnVtZXJpY2FsIjo0NzksIi4uLy4uL2xpYiI6NTAzLCJmYXN0LWlzbnVtZXJp YyI6MTkwfV0sNTUyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17 eGF4aXM6e3ZhbFR5cGU6InN1YnBsb3RpZCIsZGZsdDoieCIsZWRpdFR5cGU6ImNhbGMrY2xl YXJBeGlzVHlwZXMifSx5YXhpczp7dmFsVHlwZToic3VicGxvdGlkIixkZmx0OiJ5IixlZGl0 VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9fX0se31dLDU1MzpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJAcGxvdGx5L2QzIiksaT10KCJmYXN0LWlzbnVtZXJp YyIpLGE9dCgiLi4vLi4vbGliIiksbz10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIiku RlBfU0FGRSxzPXQoIi4uLy4uL3JlZ2lzdHJ5IiksbD10KCIuLi8uLi9jb21wb25lbnRzL2Ry YXdpbmciKSxjPXQoIi4vYXhpc19pZHMiKSx1PWMuZ2V0RnJvbUlkLGY9Yy5pc0xpbmtlZDtm dW5jdGlvbiBoKHQsZSl7dmFyIHIsbixpPVtdLG89dC5fZnVsbExheW91dCxzPWQobyxlLDAp LGw9ZChvLGUsMSksYz1tKHQsZSksdT1jLm1pbixmPWMubWF4O2lmKDA9PT11Lmxlbmd0aHx8 MD09PWYubGVuZ3RoKXJldHVybiBhLnNpbXBsZU1hcChlLnJhbmdlLGUucjJsKTt2YXIgaD11 WzBdLnZhbCxnPWZbMF0udmFsO2ZvcihyPTE7cjx1Lmxlbmd0aCYmaD09PWc7cisrKWg9TWF0 aC5taW4oaCx1W3JdLnZhbCk7Zm9yKHI9MTtyPGYubGVuZ3RoJiZoPT09ZztyKyspZz1NYXRo Lm1heChnLGZbcl0udmFsKTt2YXIgdj0hMTtpZihlLnJhbmdlKXt2YXIgeT1hLnNpbXBsZU1h cChlLnJhbmdlLGUucjJsKTt2PXlbMV08eVswXX0icmV2ZXJzZWQiPT09ZS5hdXRvcmFuZ2Um Jih2PSEwLGUuYXV0b3JhbmdlPSEwKTt2YXIgeCxiLF8sdyxULGssQT1lLnJhbmdlbW9kZSxN PSJ0b3plcm8iPT09QSxTPSJub25uZWdhdGl2ZSI9PT1BLEU9ZS5fbGVuZ3RoLEw9RS8xMCxD PTA7Zm9yKHI9MDtyPHUubGVuZ3RoO3IrKylmb3IoeD11W3JdLG49MDtuPGYubGVuZ3RoO24r Kykoaz0oYj1mW25dKS52YWwteC52YWwtcChlLHgudmFsLGIudmFsKSk+MCYmKChUPUUtcyh4 KS1sKGIpKT5MP2svVD5DJiYoXz14LHc9YixDPWsvVCk6ay9FPkMmJihfPXt2YWw6eC52YWws bm9wYWQ6MX0sdz17dmFsOmIudmFsLG5vcGFkOjF9LEM9ay9FKSk7aWYoaD09PWcpe3ZhciBQ PWgtMSxJPWgrMTtpZihNKWlmKDA9PT1oKWk9WzAsMV07ZWxzZXt2YXIgTz0oaD4wP2Y6dSku cmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1heCh0LGwoZSkpfSksMCksej1o LygxLU1hdGgubWluKC41LE8vRSkpO2k9aD4wP1swLHpdOlt6LDBdfWVsc2UgaT1TP1tNYXRo Lm1heCgwLFApLE1hdGgubWF4KDEsSSldOltQLEldfWVsc2UgTT8oXy52YWw+PTAmJihfPXt2 YWw6MCxub3BhZDoxfSksdy52YWw8PTAmJih3PXt2YWw6MCxub3BhZDoxfSkpOlMmJihfLnZh bC1DKnMoXyk8MCYmKF89e3ZhbDowLG5vcGFkOjF9KSx3LnZhbDw9MCYmKHc9e3ZhbDoxLG5v cGFkOjF9KSksQz0ody52YWwtXy52YWwtcChlLHgudmFsLGIudmFsKSkvKEUtcyhfKS1sKHcp KSxpPVtfLnZhbC1DKnMoXyksdy52YWwrQypsKHcpXTtyZXR1cm4gdiYmaS5yZXZlcnNlKCks YS5zaW1wbGVNYXAoaSxlLmwycnx8TnVtYmVyKX1mdW5jdGlvbiBwKHQsZSxyKXt2YXIgbj0w O2lmKHQucmFuZ2VicmVha3MpZm9yKHZhciBpPXQubG9jYXRlQnJlYWtzKGUsciksYT0wO2E8 aS5sZW5ndGg7YSsrKXt2YXIgbz1pW2FdO24rPW8ubWF4LW8ubWlufXJldHVybiBufWZ1bmN0 aW9uIGQodCxlLHIpe3ZhciBpPS4wNSplLl9sZW5ndGgsbz1lLl9hbmNob3JBeGlzfHx7fTtp ZigtMSE9PShlLnRpY2tsYWJlbHBvc2l0aW9ufHwiIikuaW5kZXhPZigiaW5zaWRlIil8fC0x IT09KG8udGlja2xhYmVscG9zaXRpb258fCIiKS5pbmRleE9mKCJpbnNpZGUiKSl7dmFyIHM9 InJldmVyc2VkIj09PWUuYXV0b3JhbmdlO2lmKCFzKXt2YXIgYz1hLnNpbXBsZU1hcChlLnJh bmdlLGUucjJsKTtzPWNbMV08Y1swXX1zJiYocj0hcil9dmFyIHU9MDtyZXR1cm4gZih0LGUu X2lkKXx8KHU9ZnVuY3Rpb24odCxlLHIpe3ZhciBpPTAsbz0ieCI9PT1lLl9pZC5jaGFyQXQo MCk7Zm9yKHZhciBzIGluIHQuX3Bsb3RzKXt2YXIgYz10Ll9wbG90c1tzXTtpZihlLl9pZD09 PWMueGF4aXMuX2lkfHxlLl9pZD09PWMueWF4aXMuX2lkKXt2YXIgdT0obz9jLnlheGlzOmMu eGF4aXMpfHx7fTtpZigtMSE9PSh1LnRpY2tsYWJlbHBvc2l0aW9ufHwiIikuaW5kZXhPZigi aW5zaWRlIikmJighciYmKCJsZWZ0Ij09PXUuc2lkZXx8ImJvdHRvbSI9PT11LnNpZGUpfHxy JiYoInRvcCI9PT11LnNpZGV8fCJyaWdodCI9PT11LnNpZGUpKSl7aWYodS5fdmFscyl7dmFy IGY9YS5kZWcycmFkKHUuX3RpY2tBbmdsZXNbdS5faWQrInRpY2siXXx8MCksaD1NYXRoLmFi cyhNYXRoLmNvcyhmKSkscD1NYXRoLmFicyhNYXRoLnNpbihmKSk7aWYoIXUuX3ZhbHNbMF0u YmIpe3ZhciBkPXUuX2lkKyJ0aWNrIjt1Ll9zZWxlY3Rpb25zW2RdLmVhY2goKGZ1bmN0aW9u KHQpe3ZhciBlPW4uc2VsZWN0KHRoaXMpO2Uuc2VsZWN0KCIudGV4dC1tYXRoLWdyb3VwIiku ZW1wdHkoKSYmKHQuYmI9bC5iQm94KGUubm9kZSgpKSl9KSl9Zm9yKHZhciBtPTA7bTx1Ll92 YWxzLmxlbmd0aDttKyspe3ZhciBnPXUuX3ZhbHNbbV0uYmI7aWYoZyl7dmFyIHY9NitnLndp ZHRoLHk9NitnLmhlaWdodDtpPU1hdGgubWF4KGksbz9NYXRoLm1heCh2KmgseSpwKTpNYXRo Lm1heCh5KmgsdipwKSl9fX0iaW5zaWRlIj09PXUudGlja3MmJiJpbnNpZGUiPT09dS50aWNr bGFiZWxwb3NpdGlvbiYmKGkrPXUudGlja2xlbnx8MCl9fX1yZXR1cm4gaX0odCxlLHIpKSxp PU1hdGgubWF4KHUsaSksImRvbWFpbiI9PT1lLmNvbnN0cmFpbiYmZS5faW5wdXREb21haW4m JihpKj0oZS5faW5wdXREb21haW5bMV0tZS5faW5wdXREb21haW5bMF0pLyhlLmRvbWFpblsx XS1lLmRvbWFpblswXSkpLGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5vcGFkPzA6dC5wYWQrKHQu ZXh0cmFwYWQ/aTp1KX19ZS5leHBvcnRzPXtnZXRBdXRvUmFuZ2U6aCxtYWtlUGFkRm46ZCxk b0F1dG9SYW5nZTpmdW5jdGlvbih0LGUscil7aWYoZS5zZXRTY2FsZSgpLGUuYXV0b3Jhbmdl KXtlLnJhbmdlPXI/ci5zbGljZSgpOmgodCxlKSxlLl9yPWUucmFuZ2Uuc2xpY2UoKSxlLl9y bD1hLnNpbXBsZU1hcChlLl9yLGUucjJsKTt2YXIgbj1lLl9pbnB1dCxpPXt9O2lbZS5fYXR0 cisiLnJhbmdlIl09ZS5yYW5nZSxpW2UuX2F0dHIrIi5hdXRvcmFuZ2UiXT1lLmF1dG9yYW5n ZSxzLmNhbGwoIl9zdG9yZURpcmVjdEdVSUVkaXQiLHQubGF5b3V0LHQuX2Z1bGxMYXlvdXQu X3ByZUdVSSxpKSxuLnJhbmdlPWUucmFuZ2Uuc2xpY2UoKSxuLmF1dG9yYW5nZT1lLmF1dG9y YW5nZX12YXIgbz1lLl9hbmNob3JBeGlzO2lmKG8mJm8ucmFuZ2VzbGlkZXIpe3ZhciBsPW8u cmFuZ2VzbGlkZXJbZS5fbmFtZV07bCYmImF1dG8iPT09bC5yYW5nZW1vZGUmJihsLnJhbmdl PWgodCxlKSksby5faW5wdXQucmFuZ2VzbGlkZXJbZS5fbmFtZV09YS5leHRlbmRGbGF0KHt9 LGwpfX0sZmluZEV4dHJlbWVzOmZ1bmN0aW9uKHQsZSxyKXtyfHwocj17fSk7dC5fbXx8dC5z ZXRTY2FsZSgpO3ZhciBuLGEscyxsLGMsdSxmLGgscCxkPVtdLG09W10seT1lLmxlbmd0aCxi PXIucGFkZGVkfHwhMSxfPXIudG96ZXJvJiYoImxpbmVhciI9PT10LnR5cGV8fCItIj09PXQu dHlwZSksdz0ibG9nIj09PXQudHlwZSxUPSExLGs9ci52cGFkTGluZWFyaXplZHx8ITE7ZnVu Y3Rpb24gQSh0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBUPSEwLGZ1bmN0aW9uKGUp e3JldHVybiBNYXRoLm1heChOdW1iZXIodFtlXXx8MCksMCl9O3ZhciBlPU1hdGgubWF4KE51 bWJlcih0fHwwKSwwKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19dmFyIE09QSgodC5f bT4wP3IucHBhZHBsdXM6ci5wcGFkbWludXMpfHxyLnBwYWR8fDApLFM9QSgodC5fbT4wP3Iu cHBhZG1pbnVzOnIucHBhZHBsdXMpfHxyLnBwYWR8fDApLEU9QShyLnZwYWRwbHVzfHxyLnZw YWQpLEw9QShyLnZwYWRtaW51c3x8ci52cGFkKTtpZighVCl7aWYoaD0xLzAscD0tMS8wLHcp Zm9yKG49MDtuPHk7bisrKShhPWVbbl0pPGgmJmE+MCYmKGg9YSksYT5wJiZhPG8mJihwPWEp O2Vsc2UgZm9yKG49MDtuPHk7bisrKShhPWVbbl0pPGgmJmE+LW8mJihoPWEpLGE+cCYmYTxv JiYocD1hKTtlPVtoLHBdLHk9Mn12YXIgQz17dG96ZXJvOl8sZXh0cmFwYWQ6Yn07ZnVuY3Rp b24gUChyKXtzPWVbcl0saShzKSYmKHU9TShyKSxmPVMociksaz8obD10LmMybChzKS1MKHIp LGM9dC5jMmwocykrRShyKSk6KGg9cy1MKHIpLHA9cytFKHIpLHcmJmg8cC8xMCYmKGg9cC8x MCksbD10LmMybChoKSxjPXQuYzJsKHApKSxfJiYobD1NYXRoLm1pbigwLGwpLGM9TWF0aC5t YXgoMCxjKSkseChsKSYmZyhkLGwsZixDKSx4KGMpJiZ2KG0sYyx1LEMpKX12YXIgST1NYXRo Lm1pbig2LHkpO2ZvcihuPTA7bjxJO24rKylQKG4pO2ZvcihuPXktMTtuPj1JO24tLSlQKG4p O3JldHVybnttaW46ZCxtYXg6bSxvcHRzOnJ9fSxjb25jYXRFeHRyZW1lczptfTtmdW5jdGlv biBtKHQsZSxyKXt2YXIgbixpLGEsbz1lLl9pZCxzPXQuX2Z1bGxEYXRhLGw9dC5fZnVsbExh eW91dCxjPVtdLGY9W107ZnVuY3Rpb24gaCh0LGUpe2ZvcihuPTA7bjxlLmxlbmd0aDtuKysp e3ZhciByPXRbZVtuXV0scz0oci5fZXh0cmVtZXN8fHt9KVtvXTtpZighMD09PXIudmlzaWJs ZSYmcyl7Zm9yKGk9MDtpPHMubWluLmxlbmd0aDtpKyspYT1zLm1pbltpXSxnKGMsYS52YWws YS5wYWQse2V4dHJhcGFkOmEuZXh0cmFwYWR9KTtmb3IoaT0wO2k8cy5tYXgubGVuZ3RoO2kr KylhPXMubWF4W2ldLHYoZixhLnZhbCxhLnBhZCx7ZXh0cmFwYWQ6YS5leHRyYXBhZH0pfX19 aWYoaChzLGUuX3RyYWNlSW5kaWNlcyksaChsLmFubm90YXRpb25zfHxbXSxlLl9hbm5JbmRp Y2VzfHxbXSksaChsLnNoYXBlc3x8W10sZS5fc2hhcGVJbmRpY2VzfHxbXSksZS5fbWF0Y2hH cm91cCYmIXIpZm9yKHZhciBwIGluIGUuX21hdGNoR3JvdXApaWYocCE9PWUuX2lkKXt2YXIg ZD11KHQscCkseT1tKHQsZCwhMCkseD1lLl9sZW5ndGgvZC5fbGVuZ3RoO2ZvcihpPTA7aTx5 Lm1pbi5sZW5ndGg7aSsrKWE9eS5taW5baV0sZyhjLGEudmFsLGEucGFkKngse2V4dHJhcGFk OmEuZXh0cmFwYWR9KTtmb3IoaT0wO2k8eS5tYXgubGVuZ3RoO2krKylhPXkubWF4W2ldLHYo ZixhLnZhbCxhLnBhZCp4LHtleHRyYXBhZDphLmV4dHJhcGFkfSl9cmV0dXJue21pbjpjLG1h eDpmfX1mdW5jdGlvbiBnKHQsZSxyLG4pe3kodCxlLHIsbixiKX1mdW5jdGlvbiB2KHQsZSxy LG4pe3kodCxlLHIsbixfKX1mdW5jdGlvbiB5KHQsZSxyLG4saSl7Zm9yKHZhciBhPW4udG96 ZXJvLG89bi5leHRyYXBhZCxzPSEwLGw9MDtsPHQubGVuZ3RoJiZzO2wrKyl7dmFyIGM9dFts XTtpZihpKGMudmFsLGUpJiZjLnBhZD49ciYmKGMuZXh0cmFwYWR8fCFvKSl7cz0hMTticmVh a31pKGUsYy52YWwpJiZjLnBhZDw9ciYmKG98fCFjLmV4dHJhcGFkKSYmKHQuc3BsaWNlKGws MSksbC0tKX1pZihzKXt2YXIgdT1hJiYwPT09ZTt0LnB1c2goe3ZhbDplLHBhZDp1PzA6cixl eHRyYXBhZDohdSYmb30pfX1mdW5jdGlvbiB4KHQpe3JldHVybiBpKHQpJiZNYXRoLmFicyh0 KTxvfWZ1bmN0aW9uIGIodCxlKXtyZXR1cm4gdDw9ZX1mdW5jdGlvbiBfKHQsZSl7cmV0dXJu IHQ+PWV9fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6Mzg4LCIuLi8uLi9jb25zdGFu dHMvbnVtZXJpY2FsIjo0NzksIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9yZWdpc3RyeSI6NjM4 LCIuL2F4aXNfaWRzIjo1NTgsIkBwbG90bHkvZDMiOjU4LCJmYXN0LWlzbnVtZXJpYyI6MTkw fV0sNTU0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIkBwbG90bHkv ZDMiKSxpPXQoImZhc3QtaXNudW1lcmljIiksYT10KCIuLi8uLi9wbG90cy9wbG90cyIpLG89 dCgiLi4vLi4vcmVnaXN0cnkiKSxzPXQoIi4uLy4uL2xpYiIpLGw9cy5zdHJUcmFuc2xhdGUs Yz10KCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiKSx1PXQoIi4uLy4uL2NvbXBvbmVudHMv dGl0bGVzIiksZj10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksaD10KCIuLi8uLi9jb21w b25lbnRzL2RyYXdpbmciKSxwPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxkPXQoIi4vY2xl YW5fdGlja3MiKSxtPXQoIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiKSxnPW0uT05FTUFY WUVBUix2PW0uT05FQVZHWUVBUix5PW0uT05FTUlOWUVBUix4PW0uT05FTUFYUVVBUlRFUixi PW0uT05FQVZHUVVBUlRFUixfPW0uT05FTUlOUVVBUlRFUix3PW0uT05FTUFYTU9OVEgsVD1t Lk9ORUFWR01PTlRILGs9bS5PTkVNSU5NT05USCxBPW0uT05FV0VFSyxNPW0uT05FREFZLFM9 TS8yLEU9bS5PTkVIT1VSLEw9bS5PTkVNSU4sQz1tLk9ORVNFQyxQPW0uTUlOVVNfU0lHTixJ PW0uQkFETlVNLE89e0s6Inplcm9saW5lIn0sej17SzoiZ3JpZGxpbmUiLEw6InBhdGgifSxE PXtLOiJtaW5vci1ncmlkbGluZSIsTDoicGF0aCJ9LFI9e0s6InRpY2siLEw6InBhdGgifSxG PXtLOiJ0aWNrIixMOiJ0ZXh0In0sQj10KCIuLi8uLi9jb25zdGFudHMvYWxpZ25tZW50Iiks Tj1CLk1JRF9TSElGVCxqPUIuQ0FQX1NISUZULFU9Qi5MSU5FX1NQQUNJTkcsVj1CLk9QUE9T SVRFX1NJREUsSD1lLmV4cG9ydHM9e307SC5zZXRDb252ZXJ0PXQoIi4vc2V0X2NvbnZlcnQi KTt2YXIgcT10KCIuL2F4aXNfYXV0b3R5cGUiKSxHPXQoIi4vYXhpc19pZHMiKSxZPUcuaWRT b3J0LFc9Ry5pc0xpbmtlZDtILmlkMm5hbWU9Ry5pZDJuYW1lLEgubmFtZTJpZD1HLm5hbWUy aWQsSC5jbGVhbklkPUcuY2xlYW5JZCxILmxpc3Q9Ry5saXN0LEgubGlzdElkcz1HLmxpc3RJ ZHMsSC5nZXRGcm9tSWQ9Ry5nZXRGcm9tSWQsSC5nZXRGcm9tVHJhY2U9Ry5nZXRGcm9tVHJh Y2U7dmFyIFg9dCgiLi9hdXRvcmFuZ2UiKTtILmdldEF1dG9SYW5nZT1YLmdldEF1dG9SYW5n ZSxILmZpbmRFeHRyZW1lcz1YLmZpbmRFeHRyZW1lcztmdW5jdGlvbiBaKHQpe3ZhciBlPTFl LTQqKHRbMV0tdFswXSk7cmV0dXJuW3RbMF0tZSx0WzFdK2VdfUguY29lcmNlUmVmPWZ1bmN0 aW9uKHQsZSxyLG4saSxhKXt2YXIgbz1uLmNoYXJBdChuLmxlbmd0aC0xKSxsPXIuX2Z1bGxM YXlvdXQuX3N1YnBsb3RzW28rImF4aXMiXSxjPW4rInJlZiIsdT17fTtyZXR1cm4gaXx8KGk9 bFswXXx8KCJzdHJpbmciPT10eXBlb2YgYT9hOmFbMF0pKSxhfHwoYT1pKSxsPWwuY29uY2F0 KGwubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdCsiIGRvbWFpbiJ9KSkpLHVbY109e3ZhbFR5 cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpsLmNvbmNhdChhPyJzdHJpbmciPT10eXBlb2YgYT9b YV06YTpbXSksZGZsdDppfSxzLmNvZXJjZSh0LGUsdSxjKX0sSC5nZXRSZWZUeXBlPWZ1bmN0 aW9uKHQpe3JldHVybiB2b2lkIDA9PT10P3Q6InBhcGVyIj09PXQ/InBhcGVyIjoicGl4ZWwi PT09dD8icGl4ZWwiOi8oIGRvbWFpbikkLy50ZXN0KHQpPyJkb21haW4iOiJyYW5nZSJ9LEgu Y29lcmNlUG9zaXRpb249ZnVuY3Rpb24odCxlLHIsbixpLGEpe3ZhciBvLGw7aWYoInJhbmdl IiE9PUguZ2V0UmVmVHlwZShuKSlvPXMuZW5zdXJlTnVtYmVyLGw9cihpLGEpO2Vsc2V7dmFy IGM9SC5nZXRGcm9tSWQoZSxuKTtsPXIoaSxhPWMuZnJhY3Rpb24ycihhKSksbz1jLmNsZWFu UG9zfXRbaV09byhsKX0sSC5jbGVhblBvc2l0aW9uPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4o InBhcGVyIj09PXJ8fCJwaXhlbCI9PT1yP3MuZW5zdXJlTnVtYmVyOkguZ2V0RnJvbUlkKGUs cikuY2xlYW5Qb3MpKHQpfSxILnJlZHJhd0NvbXBvbmVudHM9ZnVuY3Rpb24odCxlKXtlPWV8 fEgubGlzdElkcyh0KTt2YXIgcj10Ll9mdWxsTGF5b3V0O2Z1bmN0aW9uIG4obixpLGEscyl7 Zm9yKHZhciBsPW8uZ2V0Q29tcG9uZW50TWV0aG9kKG4saSksYz17fSx1PTA7dTxlLmxlbmd0 aDt1KyspZm9yKHZhciBmPXJbSC5pZDJuYW1lKGVbdV0pXVthXSxoPTA7aDxmLmxlbmd0aDto Kyspe3ZhciBwPWZbaF07aWYoIWNbcF0mJihsKHQscCksY1twXT0xLHMpKXJldHVybn19bigi YW5ub3RhdGlvbnMiLCJkcmF3T25lIiwiX2FubkluZGljZXMiKSxuKCJzaGFwZXMiLCJkcmF3 T25lIiwiX3NoYXBlSW5kaWNlcyIpLG4oImltYWdlcyIsImRyYXciLCJfaW1nSW5kaWNlcyIs ITApfTt2YXIgSj1ILmdldERhdGFDb252ZXJzaW9ucz1mdW5jdGlvbih0LGUscixuKXt2YXIg aSxhPSJ4Ij09PXJ8fCJ5Ij09PXJ8fCJ6Ij09PXI/cjpuO2lmKEFycmF5LmlzQXJyYXkoYSkp e2lmKGk9e3R5cGU6cShuLHZvaWQgMCx7YXV0b3R5cGVudW1iZXJzOnQuX2Z1bGxMYXlvdXQu YXV0b3R5cGVudW1iZXJzfSksX2NhdGVnb3JpZXM6W119LEguc2V0Q29udmVydChpKSwiY2F0 ZWdvcnkiPT09aS50eXBlKWZvcih2YXIgbz0wO288bi5sZW5ndGg7bysrKWkuZDJjKG5bb10p fWVsc2UgaT1ILmdldEZyb21UcmFjZSh0LGUsYSk7cmV0dXJuIGk/e2QyYzppLmQyYyxjMmQ6 aS5jMmR9OiJpZHMiPT09YT97ZDJjOlEsYzJkOlF9OntkMmM6SyxjMmQ6S319O2Z1bmN0aW9u IEsodCl7cmV0dXJuK3R9ZnVuY3Rpb24gUSh0KXtyZXR1cm4gU3RyaW5nKHQpfWZ1bmN0aW9u ICQodCxlKXtyZXR1cm4gTWF0aC5hYnMoKHQvZSsuNSklMS0uNSk8LjAwMX1mdW5jdGlvbiB0 dCh0LGUpe3JldHVybiBNYXRoLmFicyh0L2UtMSk8LjAwMX1mdW5jdGlvbiBldCh0KXtyZXR1 cm4rdC5zdWJzdHJpbmcoMSl9ZnVuY3Rpb24gcnQodCl7dmFyIGU9WihzLnNpbXBsZU1hcCh0 LnJhbmdlLHQucjJsKSkscj1NYXRoLm1pbihlWzBdLGVbMV0pLG49TWF0aC5tYXgoZVswXSxl WzFdKSxpPSJjYXRlZ29yeSI9PT10LnR5cGU/dC5kMmxfbm9hZGQ6dC5kMmw7ImxvZyI9PT10 LnR5cGUmJiJMIiE9PVN0cmluZyh0LmR0aWNrKS5jaGFyQXQoMCkmJih0LmR0aWNrPSJMIitN YXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubWluKHQucmFuZ2VbMF0sdC5yYW5nZVsxXSkp LTEpKTtmb3IodmFyIGE9W10sbz0wO288PTE7bysrKWlmKCFvfHx0Lm1pbm9yKXt2YXIgbD1v P3QubWlub3IudGlja3ZhbHM6dC50aWNrdmFscyxjPW8/W106dC50aWNrdGV4dDtpZihsKXtB cnJheS5pc0FycmF5KGMpfHwoYz1bXSk7Zm9yKHZhciB1PTA7dTxsLmxlbmd0aDt1Kyspe3Zh ciBmPWkobFt1XSk7aWYoZj5yJiZmPG4pe3ZhciBoPXZvaWQgMD09PWNbdV0/SC50aWNrVGV4 dCh0LGYpOmh0KHQsZixTdHJpbmcoY1t1XSkpO28mJihoLm1pbm9yPSEwLGgudGV4dD0iIiks YS5wdXNoKGgpfX19fXJldHVybiB0LnJhbmdlYnJlYWtzJiYoYT1hLmZpbHRlcigoZnVuY3Rp b24oZSl7cmV0dXJuIHQubWFza0JyZWFrcyhlLngpIT09SX0pKSksYX1ILmdldERhdGFUb0Nv b3JkRnVuYz1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gSih0LGUscixuKS5kMmN9LEguY291 bnRlckxldHRlcj1mdW5jdGlvbih0KXt2YXIgZT10LmNoYXJBdCgwKTtyZXR1cm4ieCI9PT1l PyJ5IjoieSI9PT1lPyJ4Ijp2b2lkIDB9LEgubWluRHRpY2s9ZnVuY3Rpb24odCxlLHIsbil7 LTE9PT1bImxvZyIsImNhdGVnb3J5IiwibXVsdGljYXRlZ29yeSJdLmluZGV4T2YodC50eXBl KSYmbj92b2lkIDA9PT10Ll9taW5EdGljaz8odC5fbWluRHRpY2s9ZSx0Ll9mb3JjZVRpY2sw PXIpOnQuX21pbkR0aWNrJiYoKHQuX21pbkR0aWNrL2UrMWUtNiklMTwyZS02JiYoKHItdC5f Zm9yY2VUaWNrMCkvZSUxKzEuMDAwMDAxKSUxPDJlLTY/KHQuX21pbkR0aWNrPWUsdC5fZm9y Y2VUaWNrMD1yKTooKGUvdC5fbWluRHRpY2srMWUtNiklMT4yZS02fHwoKHItdC5fZm9yY2VU aWNrMCkvdC5fbWluRHRpY2slMSsxLjAwMDAwMSklMT4yZS02KSYmKHQuX21pbkR0aWNrPTAp KTp0Ll9taW5EdGljaz0wfSxILnNhdmVSYW5nZUluaXRpYWw9ZnVuY3Rpb24odCxlKXtmb3Io dmFyIHI9SC5saXN0KHQsIiIsITApLG49ITEsaT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgYT1y W2ldLG89dm9pZCAwPT09YS5fcmFuZ2VJbml0aWFsLHM9b3x8IShhLnJhbmdlWzBdPT09YS5f cmFuZ2VJbml0aWFsWzBdJiZhLnJhbmdlWzFdPT09YS5fcmFuZ2VJbml0aWFsWzFdKTsobyYm ITE9PT1hLmF1dG9yYW5nZXx8ZSYmcykmJihhLl9yYW5nZUluaXRpYWw9YS5yYW5nZS5zbGlj ZSgpLG49ITApfXJldHVybiBufSxILnNhdmVTaG93U3Bpa2VJbml0aWFsPWZ1bmN0aW9uKHQs ZSl7Zm9yKHZhciByPUgubGlzdCh0LCIiLCEwKSxuPSExLGk9Im9uIixhPTA7YTxyLmxlbmd0 aDthKyspe3ZhciBvPXJbYV0scz12b2lkIDA9PT1vLl9zaG93U3Bpa2VJbml0aWFsLGw9c3x8 IShvLnNob3dzcGlrZXM9PT1vLl9zaG93c3Bpa2VzKTsoc3x8ZSYmbCkmJihvLl9zaG93U3Bp a2VJbml0aWFsPW8uc2hvd3NwaWtlcyxuPSEwKSwib24iIT09aXx8by5zaG93c3Bpa2VzfHwo aT0ib2ZmIil9cmV0dXJuIHQuX2Z1bGxMYXlvdXQuX2NhcnRlc2lhblNwaWtlc0VuYWJsZWQ9 aSxufSxILmF1dG9CaW49ZnVuY3Rpb24odCxlLHIsbixhLG8pe3ZhciBsLGM9cy5hZ2dOdW1z KE1hdGgubWluLG51bGwsdCksdT1zLmFnZ051bXMoTWF0aC5tYXgsbnVsbCx0KTtpZigiY2F0 ZWdvcnkiPT09ZS50eXBlfHwibXVsdGljYXRlZ29yeSI9PT1lLnR5cGUpcmV0dXJue3N0YXJ0 OmMtLjUsZW5kOnUrLjUsc2l6ZTpNYXRoLm1heCgxLE1hdGgucm91bmQobyl8fDEpLF9kYXRh U3Bhbjp1LWN9O2lmKGF8fChhPWUuY2FsZW5kYXIpLGw9ImxvZyI9PT1lLnR5cGU/e3R5cGU6 ImxpbmVhciIscmFuZ2U6W2MsdV19Ont0eXBlOmUudHlwZSxyYW5nZTpzLnNpbXBsZU1hcChb Yyx1XSxlLmMyciwwLGEpLGNhbGVuZGFyOmF9LEguc2V0Q29udmVydChsKSxvPW8mJmQuZHRp Y2sobyxsLnR5cGUpKWwuZHRpY2s9byxsLnRpY2swPWQudGljazAodm9pZCAwLGwudHlwZSxh KTtlbHNle3ZhciBmO2lmKHIpZj0odS1jKS9yO2Vsc2V7dmFyIGg9cy5kaXN0aW5jdFZhbHMo dCkscD1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKGgubWluRGlmZikvTWF0aC5M TjEwKSksbT1wKnMucm91bmRVcChoLm1pbkRpZmYvcCxbLjksMS45LDQuOSw5LjldLCEwKTtm PU1hdGgubWF4KG0sMipzLnN0ZGV2KHQpL01hdGgucG93KHQubGVuZ3RoLG4/LjI1Oi40KSks aShmKXx8KGY9MSl9SC5hdXRvVGlja3MobCxmKX12YXIgZyx2PWwuZHRpY2sseT1ILnRpY2tJ bmNyZW1lbnQoSC50aWNrRmlyc3QobCksdiwicmV2ZXJzZSIsYSk7aWYoIm51bWJlciI9PXR5 cGVvZiB2KWc9KHk9ZnVuY3Rpb24odCxlLHIsbixhKXt2YXIgbz0wLHM9MCxsPTAsYz0wO2Z1 bmN0aW9uIHUoZSl7cmV0dXJuKDErMTAwKihlLXQpL3IuZHRpY2spJTEwMDwyfWZvcih2YXIg Zj0wO2Y8ZS5sZW5ndGg7ZisrKWVbZl0lMT09MD9sKys6aShlW2ZdKXx8YysrLHUoZVtmXSkm Jm8rKyx1KGVbZl0rci5kdGljay8yKSYmcysrO3ZhciBoPWUubGVuZ3RoLWM7aWYobD09PWgm JiJkYXRlIiE9PXIudHlwZSlyLmR0aWNrPDE/dD1uLS41KnIuZHRpY2s6KHQtPS41KStyLmR0 aWNrPG4mJih0Kz1yLmR0aWNrKTtlbHNlIGlmKHM8LjEqaCYmKG8+LjMqaHx8dShuKXx8dShh KSkpe3ZhciBwPXIuZHRpY2svMjt0Kz10K3A8bj9wOi1wfXJldHVybiB0fSh5LHQsbCxjLHUp KSsoMStNYXRoLmZsb29yKCh1LXkpL3YpKSp2O2Vsc2UgZm9yKCJNIj09PWwuZHRpY2suY2hh ckF0KDApJiYoeT1mdW5jdGlvbih0LGUscixuLGkpe3ZhciBhPXMuZmluZEV4YWN0RGF0ZXMo ZSxpKTtpZihhLmV4YWN0RGF5cz4uOCl7dmFyIG89TnVtYmVyKHIuc3Vic3RyKDEpKTthLmV4 YWN0WWVhcnM+LjgmJm8lMTI9PTA/dD1ILnRpY2tJbmNyZW1lbnQodCwiTTYiLCJyZXZlcnNl IikrMS41Kk06YS5leGFjdE1vbnRocz4uOD90PUgudGlja0luY3JlbWVudCh0LCJNMSIsInJl dmVyc2UiKSsxNS41Kk06dC09Uzt2YXIgbD1ILnRpY2tJbmNyZW1lbnQodCxyKTtpZihsPD1u KXJldHVybiBsfXJldHVybiB0fSh5LHQsdixjLGEpKSxnPXksMDtnPD11OylnPUgudGlja0lu Y3JlbWVudChnLHYsITEsYSk7cmV0dXJue3N0YXJ0OmUuYzJyKHksMCxhKSxlbmQ6ZS5jMnIo ZywwLGEpLHNpemU6dixfZGF0YVNwYW46dS1jfX0sSC5wcmVwTWlub3JUaWNrcz1mdW5jdGlv bih0LGUscil7aWYoIWUubWlub3IuZHRpY2spe2RlbGV0ZSB0LmR0aWNrO3ZhciBuLGE9ZS5k dGljayYmaShlLl90bWluKTtpZihhKXt2YXIgbz1ILnRpY2tJbmNyZW1lbnQoZS5fdG1pbixl LmR0aWNrLCEwKTtuPVtlLl90bWluLC45OSpvKy4wMSplLl90bWluXX1lbHNle3ZhciBsPXMu c2ltcGxlTWFwKGUucmFuZ2UsZS5yMmwpO249W2xbMF0sLjgqbFswXSsuMipsWzFdXX1pZih0 LnJhbmdlPXMuc2ltcGxlTWFwKG4sZS5sMnIpLHQuX2lzTWlub3I9ITAsSC5wcmVwVGlja3Mo dCxyKSxhKXt2YXIgYz1pKGUuZHRpY2spLHU9aSh0LmR0aWNrKSxmPWM/ZS5kdGljazorZS5k dGljay5zdWJzdHJpbmcoMSksaD11P3QuZHRpY2s6K3QuZHRpY2suc3Vic3RyaW5nKDEpO2Mm JnU/JChmLGgpP2Y9PT0yKkEmJmg9PT0yKk0mJih0LmR0aWNrPUEpOmY9PT0yKkEmJmg9PT0z Kk0/dC5kdGljaz1BOmYhPT1BfHwoZS5faW5wdXQubWlub3J8fHt9KS5udGlja3M/dHQoZi9o LDIuNSk/dC5kdGljaz1mLzI6dC5kdGljaz1mOnQuZHRpY2s9TToiTSI9PT1TdHJpbmcoZS5k dGljaykuY2hhckF0KDApP3U/dC5kdGljaz0iTTEiOiQoZixoKT9mPj0xMiYmMj09PWgmJih0 LmR0aWNrPSJNMyIpOnQuZHRpY2s9ZS5kdGljazoiTCI9PT1TdHJpbmcodC5kdGljaykuY2hh ckF0KDApPyJMIj09PVN0cmluZyhlLmR0aWNrKS5jaGFyQXQoMCk/JChmLGgpfHwodC5kdGlj az10dChmL2gsMi41KT9lLmR0aWNrLzI6ZS5kdGljayk6dC5kdGljaz0iRDEiOiJEMiI9PT10 LmR0aWNrJiYrZS5kdGljaz4xJiYodC5kdGljaz0xKX10LnJhbmdlPWUucmFuZ2V9dm9pZCAw PT09ZS5taW5vci5fdGljazBJbml0JiYodC50aWNrMD1lLnRpY2swKX0sSC5wcmVwVGlja3M9 ZnVuY3Rpb24odCxlKXt2YXIgcj1zLnNpbXBsZU1hcCh0LnJhbmdlLHQucjJsLHZvaWQgMCx2 b2lkIDAsZSk7aWYoImF1dG8iPT09dC50aWNrbW9kZXx8IXQuZHRpY2spe3ZhciBuLGE9dC5u dGlja3M7YXx8KCJjYXRlZ29yeSI9PT10LnR5cGV8fCJtdWx0aWNhdGVnb3J5Ij09PXQudHlw ZT8obj10LnRpY2tmb250P3MuYmlnRm9udCh0LnRpY2tmb250LnNpemV8fDEyKToxNSxhPXQu X2xlbmd0aC9uKToobj0ieSI9PT10Ll9pZC5jaGFyQXQoMCk/NDA6ODAsYT1zLmNvbnN0cmFp bih0Ll9sZW5ndGgvbiw0LDkpKzEpLCJyYWRpYWxheGlzIj09PXQuX25hbWUmJihhKj0yKSks dC5taW5vciYmImFycmF5IiE9PXQubWlub3IudGlja21vZGV8fCJhcnJheSI9PT10LnRpY2tt b2RlJiYoYSo9MTAwKSx0Ll9yb3VnaERUaWNrPU1hdGguYWJzKHJbMV0tclswXSkvYSxILmF1 dG9UaWNrcyh0LHQuX3JvdWdoRFRpY2spLHQuX21pbkR0aWNrPjAmJnQuZHRpY2s8Mip0Ll9t aW5EdGljayYmKHQuZHRpY2s9dC5fbWluRHRpY2ssdC50aWNrMD10Lmwycih0Ll9mb3JjZVRp Y2swKSl9InBlcmlvZCI9PT10LnRpY2tsYWJlbG1vZGUmJmZ1bmN0aW9uKHQpe3ZhciBlO2Z1 bmN0aW9uIHIoKXtyZXR1cm4hKGkodC5kdGljayl8fCJNIiE9PXQuZHRpY2suY2hhckF0KDAp KX12YXIgbj1yKCksYT1ILmdldFRpY2tGb3JtYXQodCk7aWYoYSl7dmFyIG89dC5fZHRpY2tJ bml0IT09dC5kdGljazsvJVtmTFFzU01YXS8udGVzdChhKXx8KC8lW0hJXS8udGVzdChhKT8o ZT1FLG8mJiFuJiZ0LmR0aWNrPEUmJih0LmR0aWNrPUUpKTovJXAvLnRlc3QoYSk/KGU9Uyxv JiYhbiYmdC5kdGljazxTJiYodC5kdGljaz1TKSk6LyVbQWFkZWp1d3hdLy50ZXN0KGEpPyhl PU0sbyYmIW4mJnQuZHRpY2s8TSYmKHQuZHRpY2s9TSkpOi8lW1VWV10vLnRlc3QoYSk/KGU9 QSxvJiYhbiYmdC5kdGljazxBJiYodC5kdGljaz1BKSk6LyVbQmJtXS8udGVzdChhKT8oZT1U LG8mJihuP2V0KHQuZHRpY2spPDE6dC5kdGljazxrKSYmKHQuZHRpY2s9Ik0xIikpOi8lW3Fd Ly50ZXN0KGEpPyhlPWIsbyYmKG4/ZXQodC5kdGljayk8Mzp0LmR0aWNrPF8pJiYodC5kdGlj az0iTTMiKSk6LyVbWXldLy50ZXN0KGEpJiYoZT12LG8mJihuP2V0KHQuZHRpY2spPDEyOnQu ZHRpY2s8eSkmJih0LmR0aWNrPSJNMTIiKSkpfShuPXIoKSkmJnQudGljazA9PT10Ll9kb3dU aWNrMCYmKHQudGljazA9dC5fcmF3VGljazApO3QuX2RlZmluZWREZWx0YT1lfSh0KSx0LnRp Y2swfHwodC50aWNrMD0iZGF0ZSI9PT10LnR5cGU/IjIwMDAtMDEtMDEiOjApLCJkYXRlIj09 PXQudHlwZSYmdC5kdGljazwuMSYmKHQuZHRpY2s9LjEpLGZ0KHQpfSxILmNhbGNUaWNrcz1m dW5jdGlvbih0LGUpe2Zvcih2YXIgcixuLGE9dC50eXBlLG89dC5jYWxlbmRhcixsPXQudGlj a2xhYmVsc3RlcCxjPSJwZXJpb2QiPT09dC50aWNrbGFiZWxtb2RlLHU9cy5zaW1wbGVNYXAo dC5yYW5nZSx0LnIybCx2b2lkIDAsdm9pZCAwLGUpLGY9dVsxXTx1WzBdLGg9TWF0aC5taW4o dVswXSx1WzFdKSxwPU1hdGgubWF4KHVbMF0sdVsxXSksZD1NYXRoLm1heCgxZTMsdC5fbGVu Z3RofHwwKSxtPVtdLEw9W10sQz1bXSxQPVtdLE89dC5taW5vciYmKHQubWlub3IudGlja3N8 fHQubWlub3Iuc2hvd2dyaWQpLHo9MTt6Pj0oTz8wOjEpO3otLSl7dmFyIEQ9IXo7ej8odC5f ZHRpY2tJbml0PXQuZHRpY2ssdC5fdGljazBJbml0PXQudGljazApOih0Lm1pbm9yLl9kdGlj a0luaXQ9dC5taW5vci5kdGljayx0Lm1pbm9yLl90aWNrMEluaXQ9dC5taW5vci50aWNrMCk7 dmFyIFI9ej90OnMuZXh0ZW5kRmxhdCh7fSx0LHQubWlub3IpO2lmKEQ/SC5wcmVwTWlub3JU aWNrcyhSLHQsZSk6SC5wcmVwVGlja3MoUixlKSwiYXJyYXkiIT09Ui50aWNrbW9kZSl7dmFy IEY9Wih1KSxCPUZbMF0sTj1GWzFdLGo9aShSLmR0aWNrKSxVPSJsb2ciPT09YSYmIShqfHwi TCI9PT1SLmR0aWNrLmNoYXJBdCgwKSksVj1ILnRpY2tGaXJzdChSLGUpO2lmKHope2lmKHQu X3RtaW49VixWPEIhPT1mKWJyZWFrOyJjYXRlZ29yeSIhPT1hJiYibXVsdGljYXRlZ29yeSIh PT1hfHwoTj1mP01hdGgubWF4KC0uNSxOKTpNYXRoLm1pbih0Ll9jYXRlZ29yaWVzLmxlbmd0 aC0uNSxOKSl9dmFyIHEsRyxZPW51bGwsVz1WO2lmKHopaj9HPXQuZHRpY2s6ImRhdGUiPT09 YT8ic3RyaW5nIj09dHlwZW9mIHQuZHRpY2smJiJNIj09PXQuZHRpY2suY2hhckF0KDApJiYo Rz1UKnQuZHRpY2suc3Vic3RyaW5nKDEpKTpHPXQuX3JvdWdoRFRpY2sscT1NYXRoLnJvdW5k KCh0LnIybChXKS10LnIybCh0LnRpY2swKSkvRyktMTt2YXIgWD1SLmR0aWNrO2ZvcihSLnJh bmdlYnJlYWtzJiZSLl90aWNrMEluaXQhPT1SLnRpY2swJiYoVz1DdChXLHQpLGZ8fChXPUgu dGlja0luY3JlbWVudChXLFgsIWYsbykpKSx6JiZjJiYoVz1ILnRpY2tJbmNyZW1lbnQoVyxY LCFmLG8pLHEtLSk7Zj9XPj1OOlc8PU47Vz1ILnRpY2tJbmNyZW1lbnQoVyxYLGYsbykpe2lm KHomJnErKyxSLnJhbmdlYnJlYWtzJiYhZil7aWYoVzxCKWNvbnRpbnVlO2lmKFIubWFza0Jy ZWFrcyhXKT09PUkmJkN0KFcsUik+PXApYnJlYWt9aWYoQy5sZW5ndGg+ZHx8Vz09PVkpYnJl YWs7WT1XO3ZhciBKPXt2YWx1ZTpXfTt6PyhVJiZXIT09KDB8VykmJihKLnNpbXBsZUxhYmVs PSEwKSxsPjEmJnElbCYmKEouc2tpcExhYmVsPSEwKSxDLnB1c2goSikpOihKLm1pbm9yPSEw LFAucHVzaChKKSl9fWVsc2Ugej8oQz1bXSxtPXJ0KHQpKTooUD1bXSxMPXJ0KHQpKX1pZihP JiYhKCJpbnNpZGUiPT09dC5taW5vci50aWNrcyYmIm91dHNpZGUiPT09dC50aWNrc3x8Im91 dHNpZGUiPT09dC5taW5vci50aWNrcyYmImluc2lkZSI9PT10LnRpY2tzKSl7Zm9yKHZhciBL PUMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZX0pKSxRPVtdLCQ9MDskPFAubGVu Z3RoOyQrKyl7dmFyIHR0PVBbJF0sZXQ9dHQudmFsdWU7aWYoLTE9PT1LLmluZGV4T2YoZXQp KXtmb3IodmFyIG50PSExLGl0PTA7IW50JiZpdDxDLmxlbmd0aDtpdCsrKTFlNytDW2l0XS52 YWx1ZT09PTFlNytldCYmKG50PSEwKTtudHx8US5wdXNoKHR0KX19UD1RfWlmKGMmJmZ1bmN0 aW9uKHQsZSxyKXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dFtuXS52YWx1 ZSxhPW4sbz1uKzE7bjx0Lmxlbmd0aC0xPyhhPW4sbz1uKzEpOm4+MD8oYT1uLTEsbz1uKToo YT1uLG89bik7dmFyIHMsbD10W2FdLnZhbHVlLGM9dFtvXS52YWx1ZSx1PU1hdGguYWJzKGMt bCksZj1yfHx1LGg9MDtmPj15P2g9dT49eSYmdTw9Zz91OnY6cj09PWImJmY+PV8/aD11Pj1f JiZ1PD14P3U6YjpmPj1rP2g9dT49ayYmdTw9dz91OlQ6cj09PUEmJmY+PUE/aD1BOmY+PU0/ aD1NOnI9PT1TJiZmPj1TP2g9UzpyPT09RSYmZj49RSYmKGg9RSksaD49dSYmKGg9dSxzPSEw KTt2YXIgcD1pK2g7aWYoZS5yYW5nZWJyZWFrcyYmaD4wKXtmb3IodmFyIGQ9MCxtPTA7bTw4 NDttKyspe3ZhciBMPShtKy41KS84NDtlLm1hc2tCcmVha3MoaSooMS1MKStMKnApIT09SSYm ZCsrfShoKj1kLzg0KXx8KHRbbl0uZHJvcD0hMCkscyYmdT5BJiYoaD11KX0oaD4wfHwwPT09 bikmJih0W25dLnBlcmlvZFg9aStoLzIpfX0oQyx0LHQuX2RlZmluZWREZWx0YSksdC5yYW5n ZWJyZWFrcyl7dmFyIGF0PSJ5Ij09PXQuX2lkLmNoYXJBdCgwKSxvdD0xOyJhdXRvIj09PXQu dGlja21vZGUmJihvdD10LnRpY2tmb250P3QudGlja2ZvbnQuc2l6ZToxMik7dmFyIHN0PU5h Tjtmb3Iocj1DLmxlbmd0aC0xO3I+LTE7ci0tKWlmKENbcl0uZHJvcClDLnNwbGljZShyLDEp O2Vsc2V7Q1tyXS52YWx1ZT1DdChDW3JdLnZhbHVlLHQpO3ZhciBsdD10LmMycChDW3JdLnZh bHVlKTsoYXQ/c3Q+bHQtb3Q6c3Q8bHQrb3QpP0Muc3BsaWNlKGY/cisxOnIsMSk6c3Q9bHR9 fUx0KHQpJiYzNjA9PT1NYXRoLmFicyh1WzFdLXVbMF0pJiZDLnBvcCgpLHQuX3RtYXg9KENb Qy5sZW5ndGgtMV18fHt9KS52YWx1ZSx0Ll9wcmV2RGF0ZUhlYWQ9IiIsdC5faW5DYWxjVGlj a3M9ITA7dmFyIGN0LHV0LGZ0PWZ1bmN0aW9uKGUpe2UudGV4dD0iIix0Ll9wcmV2RGF0ZUhl YWQ9bn07Zm9yKEM9Qy5jb25jYXQoUCkscj0wO3I8Qy5sZW5ndGg7cisrKXt2YXIgaHQ9Q1ty XS5taW5vcixwdD1DW3JdLnZhbHVlO2h0P0wucHVzaCh7eDpwdCxtaW5vcjohMH0pOihuPXQu X3ByZXZEYXRlSGVhZCxjdD1ILnRpY2tUZXh0KHQscHQsITEsQ1tyXS5zaW1wbGVMYWJlbCks dm9pZCAwIT09KHV0PUNbcl0ucGVyaW9kWCkmJihjdC5wZXJpb2RYPXV0LCh1dD5wfHx1dDxo KSYmKHV0PnAmJihjdC5wZXJpb2RYPXApLHV0PGgmJihjdC5wZXJpb2RYPWgpLGZ0KGN0KSkp LENbcl0uc2tpcExhYmVsJiZmdChjdCksbS5wdXNoKGN0KSl9cmV0dXJuIG09bS5jb25jYXQo TCksdC5faW5DYWxjVGlja3M9ITEsYyYmbS5sZW5ndGgmJihtWzBdLm5vVGljaz0hMCksbX07 dmFyIG50PVsyLDUsMTBdLGl0PVsxLDIsMyw2LDEyXSxhdD1bMSwyLDUsMTAsMTUsMzBdLG90 PVsxLDIsMyw3LDE0XSxzdD1bLS4wNDYsMCwuMzAxLC40NzcsLjYwMiwuNjk5LC43NzgsLjg0 NSwuOTAzLC45NTQsMV0sbHQ9Wy0uMzAxLDAsLjMwMSwuNjk5LDFdLGN0PVsxNSwzMCw0NSw5 MCwxODBdO2Z1bmN0aW9uIHV0KHQsZSxyKXtyZXR1cm4gZSpzLnJvdW5kVXAodC9lLHIpfWZ1 bmN0aW9uIGZ0KHQpe3ZhciBlPXQuZHRpY2s7aWYodC5fdGlja2V4cG9uZW50PTAsaShlKXx8 InN0cmluZyI9PXR5cGVvZiBlfHwoZT0xKSwiY2F0ZWdvcnkiIT09dC50eXBlJiYibXVsdGlj YXRlZ29yeSIhPT10LnR5cGV8fCh0Ll90aWNrcm91bmQ9bnVsbCksImRhdGUiPT09dC50eXBl KXt2YXIgcj10LnIybCh0LnRpY2swKSxuPXQubDJyKHIpLnJlcGxhY2UoLyheLXxpKS9nLCIi KSxhPW4ubGVuZ3RoO2lmKCJNIj09PVN0cmluZyhlKS5jaGFyQXQoMCkpYT4xMHx8IjAxLTAx IiE9PW4uc3Vic3RyKDUpP3QuX3RpY2tyb3VuZD0iZCI6dC5fdGlja3JvdW5kPStlLnN1YnN0 cigxKSUxMj09MD8ieSI6Im0iO2Vsc2UgaWYoZT49TSYmYTw9MTB8fGU+PTE1Kk0pdC5fdGlj a3JvdW5kPSJkIjtlbHNlIGlmKGU+PUwmJmE8PTE2fHxlPj1FKXQuX3RpY2tyb3VuZD0iTSI7 ZWxzZSBpZihlPj1DJiZhPD0xOXx8ZT49TCl0Ll90aWNrcm91bmQ9IlMiO2Vsc2V7dmFyIG89 dC5sMnIocitlKS5yZXBsYWNlKC9eLS8sIiIpLmxlbmd0aDt0Ll90aWNrcm91bmQ9TWF0aC5t YXgoYSxvKS0yMCx0Ll90aWNrcm91bmQ8MCYmKHQuX3RpY2tyb3VuZD00KX19ZWxzZSBpZihp KGUpfHwiTCI9PT1lLmNoYXJBdCgwKSl7dmFyIHM9dC5yYW5nZS5tYXAodC5yMmR8fE51bWJl cik7aShlKXx8KGU9TnVtYmVyKGUuc3Vic3RyKDEpKSksdC5fdGlja3JvdW5kPTItTWF0aC5m bG9vcihNYXRoLmxvZyhlKS9NYXRoLkxOMTArLjAxKTt2YXIgbD1NYXRoLm1heChNYXRoLmFi cyhzWzBdKSxNYXRoLmFicyhzWzFdKSksYz1NYXRoLmZsb29yKE1hdGgubG9nKGwpL01hdGgu TE4xMCsuMDEpLHU9dm9pZCAwPT09dC5taW5leHBvbmVudD8zOnQubWluZXhwb25lbnQ7TWF0 aC5hYnMoYyk+dSYmKGR0KHQuZXhwb25lbnRmb3JtYXQpJiYhbXQoYyk/dC5fdGlja2V4cG9u ZW50PTMqTWF0aC5yb3VuZCgoYy0xKS8zKTp0Ll90aWNrZXhwb25lbnQ9Yyl9ZWxzZSB0Ll90 aWNrcm91bmQ9bnVsbH1mdW5jdGlvbiBodCh0LGUscil7dmFyIG49dC50aWNrZm9udHx8e307 cmV0dXJue3g6ZSxkeDowLGR5OjAsdGV4dDpyfHwiIixmb250U2l6ZTpuLnNpemUsZm9udDpu LmZhbWlseSxmb250Q29sb3I6bi5jb2xvcn19SC5hdXRvVGlja3M9ZnVuY3Rpb24odCxlLHIp e3ZhciBuO2Z1bmN0aW9uIGEodCl7cmV0dXJuIE1hdGgucG93KHQsTWF0aC5mbG9vcihNYXRo LmxvZyhlKS9NYXRoLkxOMTApKX1pZigiZGF0ZSI9PT10LnR5cGUpe3QudGljazA9cy5kYXRl VGljazAodC5jYWxlbmRhciwwKTt2YXIgbz0yKmU7aWYobz52KWUvPXYsbj1hKDEwKSx0LmR0 aWNrPSJNIisxMip1dChlLG4sbnQpO2Vsc2UgaWYobz5UKWUvPVQsdC5kdGljaz0iTSIrdXQo ZSwxLGl0KTtlbHNlIGlmKG8+TSl7aWYodC5kdGljaz11dChlLE0sdC5faGFzRGF5T2ZXZWVr QnJlYWtzP1sxLDIsNywxNF06b3QpLCFyKXt2YXIgbD1ILmdldFRpY2tGb3JtYXQodCksYz0i cGVyaW9kIj09PXQudGlja2xhYmVsbW9kZTtjJiYodC5fcmF3VGljazA9dC50aWNrMCksLyVb dVZXXS8udGVzdChsKT90LnRpY2swPXMuZGF0ZVRpY2swKHQuY2FsZW5kYXIsMik6dC50aWNr MD1zLmRhdGVUaWNrMCh0LmNhbGVuZGFyLDEpLGMmJih0Ll9kb3dUaWNrMD10LnRpY2swKX19 ZWxzZSBvPkU/dC5kdGljaz11dChlLEUsaXQpOm8+TD90LmR0aWNrPXV0KGUsTCxhdCk6bz5D P3QuZHRpY2s9dXQoZSxDLGF0KToobj1hKDEwKSx0LmR0aWNrPXV0KGUsbixudCkpfWVsc2Ug aWYoImxvZyI9PT10LnR5cGUpe3QudGljazA9MDt2YXIgdT1zLnNpbXBsZU1hcCh0LnJhbmdl LHQucjJsKTtpZih0Ll9pc01pbm9yJiYoZSo9MS41KSxlPi43KXQuZHRpY2s9TWF0aC5jZWls KGUpO2Vsc2UgaWYoTWF0aC5hYnModVsxXS11WzBdKTwxKXt2YXIgZj0xLjUqTWF0aC5hYnMo KHVbMV0tdVswXSkvZSk7ZT1NYXRoLmFicyhNYXRoLnBvdygxMCx1WzFdKS1NYXRoLnBvdygx MCx1WzBdKSkvZixuPWEoMTApLHQuZHRpY2s9IkwiK3V0KGUsbixudCl9ZWxzZSB0LmR0aWNr PWU+LjM/IkQyIjoiRDEifWVsc2UiY2F0ZWdvcnkiPT09dC50eXBlfHwibXVsdGljYXRlZ29y eSI9PT10LnR5cGU/KHQudGljazA9MCx0LmR0aWNrPU1hdGguY2VpbChNYXRoLm1heChlLDEp KSk6THQodCk/KHQudGljazA9MCxuPTEsdC5kdGljaz11dChlLG4sY3QpKToodC50aWNrMD0w LG49YSgxMCksdC5kdGljaz11dChlLG4sbnQpKTtpZigwPT09dC5kdGljayYmKHQuZHRpY2s9 MSksIWkodC5kdGljaykmJiJzdHJpbmciIT10eXBlb2YgdC5kdGljayl7dmFyIGg9dC5kdGlj azt0aHJvdyB0LmR0aWNrPTEsImF4LmR0aWNrIGVycm9yOiAiK1N0cmluZyhoKX19LEgudGlj a0luY3JlbWVudD1mdW5jdGlvbih0LGUscixhKXt2YXIgbz1yPy0xOjE7aWYoaShlKSlyZXR1 cm4gcy5pbmNyZW1lbnQodCxvKmUpO3ZhciBsPWUuY2hhckF0KDApLGM9bypOdW1iZXIoZS5z dWJzdHIoMSkpO2lmKCJNIj09PWwpcmV0dXJuIHMuaW5jcmVtZW50TW9udGgodCxjLGEpO2lm KCJMIj09PWwpcmV0dXJuIE1hdGgubG9nKE1hdGgucG93KDEwLHQpK2MpL01hdGguTE4xMDtp ZigiRCI9PT1sKXt2YXIgdT0iRDIiPT09ZT9sdDpzdCxmPXQrLjAxKm8saD1zLnJvdW5kVXAo cy5tb2QoZiwxKSx1LHIpO3JldHVybiBNYXRoLmZsb29yKGYpK01hdGgubG9nKG4ucm91bmQo TWF0aC5wb3coMTAsaCksMSkpL01hdGguTE4xMH10aHJvdyJ1bnJlY29nbml6ZWQgZHRpY2sg IitTdHJpbmcoZSl9LEgudGlja0ZpcnN0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5yMmx8fE51 bWJlcixhPXMuc2ltcGxlTWFwKHQucmFuZ2Uscix2b2lkIDAsdm9pZCAwLGUpLG89YVsxXTxh WzBdLGw9bz9NYXRoLmZsb29yOk1hdGguY2VpbCxjPVooYSlbMF0sdT10LmR0aWNrLGY9cih0 LnRpY2swKTtpZihpKHUpKXt2YXIgaD1sKChjLWYpL3UpKnUrZjtyZXR1cm4iY2F0ZWdvcnki IT09dC50eXBlJiYibXVsdGljYXRlZ29yeSIhPT10LnR5cGV8fChoPXMuY29uc3RyYWluKGgs MCx0Ll9jYXRlZ29yaWVzLmxlbmd0aC0xKSksaH12YXIgcD11LmNoYXJBdCgwKSxkPU51bWJl cih1LnN1YnN0cigxKSk7aWYoIk0iPT09cCl7Zm9yKHZhciBtLGcsdix5PTAseD1mO3k8MTA7 KXtpZigoKG09SC50aWNrSW5jcmVtZW50KHgsdSxvLHQuY2FsZW5kYXIpKS1jKSooeC1jKTw9 MClyZXR1cm4gbz9NYXRoLm1pbih4LG0pOk1hdGgubWF4KHgsbSk7Zz0oYy0oeCttKS8yKS8o bS14KSx2PXArKE1hdGguYWJzKE1hdGgucm91bmQoZykpfHwxKSpkLHg9SC50aWNrSW5jcmVt ZW50KHgsdixnPDA/IW86byx0LmNhbGVuZGFyKSx5Kyt9cmV0dXJuIHMuZXJyb3IoInRpY2tG aXJzdCBkaWQgbm90IGNvbnZlcmdlIix0KSx4fWlmKCJMIj09PXApcmV0dXJuIE1hdGgubG9n KGwoKE1hdGgucG93KDEwLGMpLWYpL2QpKmQrZikvTWF0aC5MTjEwO2lmKCJEIj09PXApe3Zh ciBiPSJEMiI9PT11P2x0OnN0LF89cy5yb3VuZFVwKHMubW9kKGMsMSksYixvKTtyZXR1cm4g TWF0aC5mbG9vcihjKStNYXRoLmxvZyhuLnJvdW5kKE1hdGgucG93KDEwLF8pLDEpKS9NYXRo LkxOMTB9dGhyb3cidW5yZWNvZ25pemVkIGR0aWNrICIrU3RyaW5nKHUpfSxILnRpY2tUZXh0 PWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhLG89aHQodCxlKSxsPSJhcnJheSI9PT10LnRpY2tt b2RlLGM9cnx8bCx1PXQudHlwZSxmPSJjYXRlZ29yeSI9PT11P3QuZDJsX25vYWRkOnQuZDJs O2lmKGwmJkFycmF5LmlzQXJyYXkodC50aWNrdGV4dCkpe3ZhciBoPXMuc2ltcGxlTWFwKHQu cmFuZ2UsdC5yMmwpLHA9KE1hdGguYWJzKGhbMV0taFswXSktKHQuX2xCcmVha3N8fDApKS8x ZTQ7Zm9yKGE9MDthPHQudGlja3RleHQubGVuZ3RoJiYhKE1hdGguYWJzKGUtZih0LnRpY2t2 YWxzW2FdKSk8cCk7YSsrKTtpZihhPHQudGlja3RleHQubGVuZ3RoKXJldHVybiBvLnRleHQ9 U3RyaW5nKHQudGlja3RleHRbYV0pLG99ZnVuY3Rpb24gZChuKXtpZih2b2lkIDA9PT1uKXJl dHVybiEwO2lmKHIpcmV0dXJuIm5vbmUiPT09bjt2YXIgaT17Zmlyc3Q6dC5fdG1pbixsYXN0 OnQuX3RtYXh9W25dO3JldHVybiJhbGwiIT09biYmZSE9PWl9dmFyIG09cj8ibmV2ZXIiOiJu b25lIiE9PXQuZXhwb25lbnRmb3JtYXQmJmQodC5zaG93ZXhwb25lbnQpPyJoaWRlIjoiIjtp ZigiZGF0ZSI9PT11P2Z1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPXQuX3RpY2tyb3VuZCxvPXIm JnQuaG92ZXJmb3JtYXR8fEguZ2V0VGlja0Zvcm1hdCh0KTtuJiYoYT1pKGEpPzQ6e3k6Im0i LG06ImQiLGQ6Ik0iLE06IlMiLFM6NH1bYV0pO3ZhciBsLGM9cy5mb3JtYXREYXRlKGUueCxv LGEsdC5fZGF0ZUZvcm1hdCx0LmNhbGVuZGFyLHQuX2V4dHJhRm9ybWF0KSx1PWMuaW5kZXhP ZigiXG4iKTstMSE9PXUmJihsPWMuc3Vic3RyKHUrMSksYz1jLnN1YnN0cigwLHUpKTtuJiYo IjAwOjAwOjAwIj09PWN8fCIwMDowMCI9PT1jPyhjPWwsbD0iIik6OD09PWMubGVuZ3RoJiYo Yz1jLnJlcGxhY2UoLzowMCQvLCIiKSkpO2lmKGwpaWYocikiZCI9PT1hP2MrPSIsICIrbDpj PWwrKGM/IiwgIitjOiIiKTtlbHNlIGlmKHQuX2luQ2FsY1RpY2tzJiZ0Ll9wcmV2RGF0ZUhl YWQ9PT1sKXt2YXIgZj1QdCh0KSxoPXQuX3RydWVTaWRlfHx0LnNpZGU7KCFmJiYidG9wIj09 PWh8fGYmJiJib3R0b20iPT09aCkmJihjKz0iPGJyPiAiKX1lbHNlIHQuX3ByZXZEYXRlSGVh ZD1sLGMrPSI8YnI+IitsO2UudGV4dD1jfSh0LG8scixjKToibG9nIj09PXU/ZnVuY3Rpb24o dCxlLHIsbixhKXt2YXIgbz10LmR0aWNrLGw9ZS54LGM9dC50aWNrZm9ybWF0LHU9InN0cmlu ZyI9PXR5cGVvZiBvJiZvLmNoYXJBdCgwKTsibmV2ZXIiPT09YSYmKGE9IiIpO24mJiJMIiE9 PXUmJihvPSJMMyIsdT0iTCIpO2lmKGN8fCJMIj09PXUpZS50ZXh0PWd0KE1hdGgucG93KDEw LGwpLHQsYSxuKTtlbHNlIGlmKGkobyl8fCJEIj09PXUmJnMubW9kKGwrLjAxLDEpPC4xKXt2 YXIgZj1NYXRoLnJvdW5kKGwpLGg9TWF0aC5hYnMoZikscD10LmV4cG9uZW50Zm9ybWF0OyJw b3dlciI9PT1wfHxkdChwKSYmbXQoZik/KGUudGV4dD0wPT09Zj8xOjE9PT1mPyIxMCI6IjEw PHN1cD4iKyhmPjE/IiI6UCkraCsiPC9zdXA+IixlLmZvbnRTaXplKj0xLjI1KTooImUiPT09 cHx8IkUiPT09cCkmJmg+Mj9lLnRleHQ9IjEiK3ArKGY+MD8iKyI6UCkraDooZS50ZXh0PWd0 KE1hdGgucG93KDEwLGwpLHQsIiIsImZha2Vob3ZlciIpLCJEMSI9PT1vJiYieSI9PT10Ll9p ZC5jaGFyQXQoMCkmJihlLmR5LT1lLmZvbnRTaXplLzYpKX1lbHNle2lmKCJEIiE9PXUpdGhy b3cidW5yZWNvZ25pemVkIGR0aWNrICIrU3RyaW5nKG8pO2UudGV4dD1TdHJpbmcoTWF0aC5y b3VuZChNYXRoLnBvdygxMCxzLm1vZChsLDEpKSkpLGUuZm9udFNpemUqPS43NX1pZigiRDEi PT09dC5kdGljayl7dmFyIGQ9U3RyaW5nKGUudGV4dCkuY2hhckF0KDApOyIwIiE9PWQmJiIx IiE9PWR8fCgieSI9PT10Ll9pZC5jaGFyQXQoMCk/ZS5keC09ZS5mb250U2l6ZS80OihlLmR5 Kz1lLmZvbnRTaXplLzIsZS5keCs9KHQucmFuZ2VbMV0+dC5yYW5nZVswXT8xOi0xKSplLmZv bnRTaXplKihsPDA/LjU6LjI1KSkpfX0odCxvLDAsYyxtKToiY2F0ZWdvcnkiPT09dT9mdW5j dGlvbih0LGUpe3ZhciByPXQuX2NhdGVnb3JpZXNbTWF0aC5yb3VuZChlLngpXTt2b2lkIDA9 PT1yJiYocj0iIik7ZS50ZXh0PVN0cmluZyhyKX0odCxvKToibXVsdGljYXRlZ29yeSI9PT11 P2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj1NYXRoLnJvdW5kKGUueCksaT10Ll9jYXRlZ29yaWVz W25dfHxbXSxhPXZvaWQgMD09PWlbMV0/IiI6U3RyaW5nKGlbMV0pLG89dm9pZCAwPT09aVsw XT8iIjpTdHJpbmcoaVswXSk7cj9lLnRleHQ9bysiIC0gIithOihlLnRleHQ9YSxlLnRleHQy PW8pfSh0LG8scik6THQodCk/ZnVuY3Rpb24odCxlLHIsbixpKXtpZigicmFkaWFucyIhPT10 LnRoZXRhdW5pdHx8cillLnRleHQ9Z3QoZS54LHQsaSxuKTtlbHNle3ZhciBhPWUueC8xODA7 aWYoMD09PWEpZS50ZXh0PSIwIjtlbHNle3ZhciBvPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUo dCxlKXtyZXR1cm4gTWF0aC5hYnModC1lKTw9MWUtNn12YXIgcj1mdW5jdGlvbih0KXtmb3Io dmFyIHI9MTshZShNYXRoLnJvdW5kKHQqcikvcix0KTspcio9MTA7cmV0dXJuIHJ9KHQpLG49 dCpyLGk9TWF0aC5hYnMoZnVuY3Rpb24gdChyLG4pe3JldHVybiBlKG4sMCk/cjp0KG4sciVu KX0obixyKSk7cmV0dXJuW01hdGgucm91bmQobi9pKSxNYXRoLnJvdW5kKHIvaSldfShhKTtp ZihvWzFdPj0xMDApZS50ZXh0PWd0KHMuZGVnMnJhZChlLngpLHQsaSxuKTtlbHNle3ZhciBs PWUueDwwOzE9PT1vWzFdPzE9PT1vWzBdP2UudGV4dD0iXHUwM2MwIjplLnRleHQ9b1swXSsi XHUwM2MwIjplLnRleHQ9WyI8c3VwPiIsb1swXSwiPC9zdXA+IiwiXHUyMDQ0IiwiPHN1Yj4i LG9bMV0sIjwvc3ViPiIsIlx1MDNjMCJdLmpvaW4oIiIpLGwmJihlLnRleHQ9UCtlLnRleHQp fX19fSh0LG8scixjLG0pOmZ1bmN0aW9uKHQsZSxyLG4saSl7Im5ldmVyIj09PWk/aT0iIjoi YWxsIj09PXQuc2hvd2V4cG9uZW50JiZNYXRoLmFicyhlLngvdC5kdGljayk8MWUtNiYmKGk9 ImhpZGUiKTtlLnRleHQ9Z3QoZS54LHQsaSxuKX0odCxvLDAsYyxtKSxufHwodC50aWNrcHJl Zml4JiYhZCh0LnNob3d0aWNrcHJlZml4KSYmKG8udGV4dD10LnRpY2twcmVmaXgrby50ZXh0 KSx0LnRpY2tzdWZmaXgmJiFkKHQuc2hvd3RpY2tzdWZmaXgpJiYoby50ZXh0Kz10LnRpY2tz dWZmaXgpKSwiYm91bmRhcmllcyI9PT10LnRpY2tzb258fHQuc2hvd2RpdmlkZXJzKXt2YXIg Zz1mdW5jdGlvbihlKXt2YXIgcj10LmwycChlKTtyZXR1cm4gcj49MCYmcjw9dC5fbGVuZ3Ro P2U6bnVsbH07by54Ym5kPVtnKG8ueC0uNSksZyhvLngrdC5kdGljay0uNSldfXJldHVybiBv fSxILmhvdmVyTGFiZWxUZXh0PWZ1bmN0aW9uKHQsZSxyKXtyJiYodD1zLmV4dGVuZEZsYXQo e30sdCx7aG92ZXJmb3JtYXQ6cn0pKTt2YXIgbj1BcnJheS5pc0FycmF5KGUpP2VbMF06ZSxp PUFycmF5LmlzQXJyYXkoZSk/ZVsxXTp2b2lkIDA7aWYodm9pZCAwIT09aSYmaSE9PW4pcmV0 dXJuIEguaG92ZXJMYWJlbFRleHQodCxuLHIpKyIgLSAiK0guaG92ZXJMYWJlbFRleHQodCxp LHIpO3ZhciBhPSJsb2ciPT09dC50eXBlJiZuPD0wLG89SC50aWNrVGV4dCh0LHQuYzJsKGE/ LW46biksImhvdmVyIikudGV4dDtyZXR1cm4gYT8wPT09bj8iMCI6UCtvOm99O3ZhciBwdD1b ImYiLCJwIiwibiIsIlx1MDNiYyIsIm0iLCIiLCJrIiwiTSIsIkciLCJUIl07ZnVuY3Rpb24g ZHQodCl7cmV0dXJuIlNJIj09PXR8fCJCIj09PXR9ZnVuY3Rpb24gbXQodCl7cmV0dXJuIHQ+ MTR8fHQ8LTE1fWZ1bmN0aW9uIGd0KHQsZSxyLG4pe3ZhciBhPXQ8MCxvPWUuX3RpY2tyb3Vu ZCxsPXJ8fGUuZXhwb25lbnRmb3JtYXR8fCJCIixjPWUuX3RpY2tleHBvbmVudCx1PUguZ2V0 VGlja0Zvcm1hdChlKSxmPWUuc2VwYXJhdGV0aG91c2FuZHM7aWYobil7dmFyIGg9e2V4cG9u ZW50Zm9ybWF0OmwsbWluZXhwb25lbnQ6ZS5taW5leHBvbmVudCxkdGljazoibm9uZSI9PT1l LnNob3dleHBvbmVudD9lLmR0aWNrOmkodCkmJk1hdGguYWJzKHQpfHwxLHJhbmdlOiJub25l Ij09PWUuc2hvd2V4cG9uZW50P2UucmFuZ2UubWFwKGUucjJkKTpbMCx0fHwxXX07ZnQoaCks bz0oTnVtYmVyKGguX3RpY2tyb3VuZCl8fDApKzQsYz1oLl90aWNrZXhwb25lbnQsZS5ob3Zl cmZvcm1hdCYmKHU9ZS5ob3ZlcmZvcm1hdCl9aWYodSlyZXR1cm4gZS5fbnVtRm9ybWF0KHUp KHQpLnJlcGxhY2UoLy0vZyxQKTt2YXIgcCxkPU1hdGgucG93KDEwLC1vKS8yO2lmKCJub25l Ij09PWwmJihjPTApLCh0PU1hdGguYWJzKHQpKTxkKXQ9IjAiLGE9ITE7ZWxzZXtpZih0Kz1k LGMmJih0Kj1NYXRoLnBvdygxMCwtYyksbys9YyksMD09PW8pdD1TdHJpbmcoTWF0aC5mbG9v cih0KSk7ZWxzZSBpZihvPDApe3Q9KHQ9U3RyaW5nKE1hdGgucm91bmQodCkpKS5zdWJzdHIo MCx0Lmxlbmd0aCtvKTtmb3IodmFyIG09bzttPDA7bSsrKXQrPSIwIn1lbHNle3ZhciBnPSh0 PVN0cmluZyh0KSkuaW5kZXhPZigiLiIpKzE7ZyYmKHQ9dC5zdWJzdHIoMCxnK28pLnJlcGxh Y2UoL1wuPzArJC8sIiIpKX10PXMubnVtU2VwYXJhdGUodCxlLl9zZXBhcmF0b3JzLGYpfWMm JiJoaWRlIiE9PWwmJihkdChsKSYmbXQoYykmJihsPSJwb3dlciIpLHA9YzwwP1ArLWM6InBv d2VyIiE9PWw/IisiK2M6U3RyaW5nKGMpLCJlIj09PWx8fCJFIj09PWw/dCs9bCtwOiJwb3dl ciI9PT1sP3QrPSJceGQ3MTA8c3VwPiIrcCsiPC9zdXA+IjoiQiI9PT1sJiY5PT09Yz90Kz0i QiI6ZHQobCkmJih0Kz1wdFtjLzMrNV0pKTtyZXR1cm4gYT9QK3Q6dH1mdW5jdGlvbiB2dCh0 LGUpe2Zvcih2YXIgcj1bXSxuPXt9LGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIGE9ZVtpXTtu W2EudGV4dDJdP25bYS50ZXh0Ml0ucHVzaChhLngpOm5bYS50ZXh0Ml09W2EueF19Zm9yKHZh ciBvIGluIG4pci5wdXNoKGh0KHQscy5pbnRlcnAobltvXSwuNSksbykpO3JldHVybiByfWZ1 bmN0aW9uIHl0KHQpe3JldHVybiB2b2lkIDAhPT10LnBlcmlvZFg/dC5wZXJpb2RYOnQueH1m dW5jdGlvbiB4dCh0KXtyZXR1cm5bdC50ZXh0LHQueCx0LmF4SW5mbyx0LmZvbnQsdC5mb250 U2l6ZSx0LmZvbnRDb2xvcl0uam9pbigiXyIpfWZ1bmN0aW9uIGJ0KHQpe3ZhciBlPXQudGl0 bGUuZm9udC5zaXplLHI9KHQudGl0bGUudGV4dC5tYXRjaChjLkJSX1RBR19BTEwpfHxbXSku bGVuZ3RoO3JldHVybiB0LnRpdGxlLmhhc093blByb3BlcnR5KCJzdGFuZG9mZiIpP3I/ZSoo aityKlUpOmUqajpyP2UqKHIrMSkqVTplfWZ1bmN0aW9uIF90KHQsZSl7dmFyIHI9dC5sMnAo ZSk7cmV0dXJuIHI+MSYmcjx0Ll9sZW5ndGgtMX1mdW5jdGlvbiB3dCh0KXt2YXIgZT1uLnNl bGVjdCh0KSxyPWUuc2VsZWN0KCIudGV4dC1tYXRoLWdyb3VwIik7cmV0dXJuIHIuZW1wdHko KT9lLnNlbGVjdCgidGV4dCIpOnJ9ZnVuY3Rpb24gVHQodCl7cmV0dXJuIHQuX2lkKyIuYXV0 b21hcmdpbiJ9ZnVuY3Rpb24ga3QodCl7cmV0dXJuIFR0KHQpKyIubWlycm9yIn1mdW5jdGlv biBBdCh0KXtyZXR1cm4gdC5faWQrIi5yYW5nZXNsaWRlciJ9ZnVuY3Rpb24gTXQodCxlKXtm b3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyktMT09PXQuaW5kZXhPZihlW3JdKSYmdC5wdXNo KGVbcl0pfWZ1bmN0aW9uIFN0KHQsZSxyKXt2YXIgbixpLGE9W10sbz1bXSxsPXQubGF5b3V0 O2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspYS5wdXNoKEguZ2V0RnJvbUlkKHQsZVtuXSkpO2Zv cihuPTA7bjxyLmxlbmd0aDtuKyspby5wdXNoKEguZ2V0RnJvbUlkKHQscltuXSkpO3ZhciBj PU9iamVjdC5rZXlzKHApLHU9WyJhbmNob3IiLCJkb21haW4iLCJvdmVybGF5aW5nIiwicG9z aXRpb24iLCJzaWRlIiwidGlja2FuZ2xlIiwiZWRpdFR5cGUiXSxmPVsibGluZWFyIiwibG9n Il07Zm9yKG49MDtuPGMubGVuZ3RoO24rKyl7dmFyIGg9Y1tuXSxkPWFbMF1baF0sbT1vWzBd W2hdLGc9ITAsdj0hMSx5PSExO2lmKCJfIiE9PWguY2hhckF0KDApJiYiZnVuY3Rpb24iIT10 eXBlb2YgZCYmLTE9PT11LmluZGV4T2YoaCkpe2ZvcihpPTE7aTxhLmxlbmd0aCYmZztpKysp e3ZhciB4PWFbaV1baF07InR5cGUiPT09aCYmLTEhPT1mLmluZGV4T2YoZCkmJi0xIT09Zi5p bmRleE9mKHgpJiZkIT09eD92PSEwOnghPT1kJiYoZz0hMSl9Zm9yKGk9MTtpPG8ubGVuZ3Ro JiZnO2krKyl7dmFyIGI9b1tpXVtoXTsidHlwZSI9PT1oJiYtMSE9PWYuaW5kZXhPZihtKSYm LTEhPT1mLmluZGV4T2YoYikmJm0hPT1iP3k9ITA6b1tpXVtoXSE9PW0mJihnPSExKX1nJiYo diYmKGxbYVswXS5fbmFtZV0udHlwZT0ibGluZWFyIikseSYmKGxbb1swXS5fbmFtZV0udHlw ZT0ibGluZWFyIiksRXQobCxoLGEsbyx0Ll9mdWxsTGF5b3V0Ll9kZmx0VGl0bGUpKX19Zm9y KG49MDtuPHQuX2Z1bGxMYXlvdXQuYW5ub3RhdGlvbnMubGVuZ3RoO24rKyl7dmFyIF89dC5f ZnVsbExheW91dC5hbm5vdGF0aW9uc1tuXTstMSE9PWUuaW5kZXhPZihfLnhyZWYpJiYtMSE9 PXIuaW5kZXhPZihfLnlyZWYpJiZzLnN3YXBBdHRycyhsLmFubm90YXRpb25zW25dLFsiPyJd KX19ZnVuY3Rpb24gRXQodCxlLHIsbixpKXt2YXIgYSxvPXMubmVzdGVkUHJvcGVydHksbD1v KHRbclswXS5fbmFtZV0sZSkuZ2V0KCksYz1vKHRbblswXS5fbmFtZV0sZSkuZ2V0KCk7Zm9y KCJ0aXRsZSI9PT1lJiYobCYmbC50ZXh0PT09aS54JiYobC50ZXh0PWkueSksYyYmYy50ZXh0 PT09aS55JiYoYy50ZXh0PWkueCkpLGE9MDthPHIubGVuZ3RoO2ErKylvKHQsclthXS5fbmFt ZSsiLiIrZSkuc2V0KGMpO2ZvcihhPTA7YTxuLmxlbmd0aDthKyspbyh0LG5bYV0uX25hbWUr Ii4iK2UpLnNldChsKX1mdW5jdGlvbiBMdCh0KXtyZXR1cm4iYW5ndWxhcmF4aXMiPT09dC5f aWR9ZnVuY3Rpb24gQ3QodCxlKXtmb3IodmFyIHI9ZS5fcmFuZ2VicmVha3MubGVuZ3RoLG49 MDtuPHI7bisrKXt2YXIgaT1lLl9yYW5nZWJyZWFrc1tuXTtpZih0Pj1pLm1pbiYmdDxpLm1h eClyZXR1cm4gaS5tYXh9cmV0dXJuIHR9ZnVuY3Rpb24gUHQodCl7cmV0dXJuLTEhPT0odC50 aWNrbGFiZWxwb3NpdGlvbnx8IiIpLmluZGV4T2YoImluc2lkZSIpfWZ1bmN0aW9uIEl0KHQs ZSl7UHQodC5fYW5jaG9yQXhpc3x8e30pJiZ0Ll9oaWRlQ291bnRlckF4aXNJbnNpZGVUaWNr TGFiZWxzJiZ0Ll9oaWRlQ291bnRlckF4aXNJbnNpZGVUaWNrTGFiZWxzKGUpfUguZ2V0VGlj a0Zvcm1hdD1mdW5jdGlvbih0KXt2YXIgZSxyLG4saSxhLG8scyxsO2Z1bmN0aW9uIGModCl7 cmV0dXJuInN0cmluZyIhPXR5cGVvZiB0P3Q6TnVtYmVyKHQucmVwbGFjZSgiTSIsIiIpKSpU fWZ1bmN0aW9uIHUodCxlKXt2YXIgcj1bIkwiLCJEIl07aWYodHlwZW9mIHQ9PXR5cGVvZiBl KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQtZTt2YXIgbj1yLmluZGV4T2YodC5j aGFyQXQoMCkpLGk9ci5pbmRleE9mKGUuY2hhckF0KDApKTtyZXR1cm4gbj09PWk/TnVtYmVy KHQucmVwbGFjZSgvKEx8RCkvZywiIikpLU51bWJlcihlLnJlcGxhY2UoLyhMfEQpL2csIiIp KTpuLWl9cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0PzE6LTF9ZnVuY3Rpb24gZih0LGUpe3Zh ciByPW51bGw9PT1lWzBdLG49bnVsbD09PWVbMV0saT11KHQsZVswXSk+PTAsYT11KHQsZVsx XSk8PTA7cmV0dXJuKHJ8fGkpJiYobnx8YSl9aWYodC50aWNrZm9ybWF0c3RvcHMmJnQudGlj a2Zvcm1hdHN0b3BzLmxlbmd0aD4wKXN3aXRjaCh0LnR5cGUpe2Nhc2UiZGF0ZSI6Y2FzZSJs aW5lYXIiOmZvcihlPTA7ZTx0LnRpY2tmb3JtYXRzdG9wcy5sZW5ndGg7ZSsrKWlmKChuPXQu dGlja2Zvcm1hdHN0b3BzW2VdKS5lbmFibGVkJiYoaT10LmR0aWNrLGE9bi5kdGlja3Jhbmdl LG89dm9pZCAwLHM9dm9pZCAwLGw9dm9pZCAwLG89Y3x8ZnVuY3Rpb24odCl7cmV0dXJuIHR9 LHM9YVswXSxsPWFbMV0sKCFzJiYibnVtYmVyIiE9dHlwZW9mIHN8fG8ocyk8PW8oaSkpJiYo IWwmJiJudW1iZXIiIT10eXBlb2YgbHx8byhsKT49byhpKSkpKXtyPW47YnJlYWt9YnJlYWs7 Y2FzZSJsb2ciOmZvcihlPTA7ZTx0LnRpY2tmb3JtYXRzdG9wcy5sZW5ndGg7ZSsrKWlmKChu PXQudGlja2Zvcm1hdHN0b3BzW2VdKS5lbmFibGVkJiZmKHQuZHRpY2ssbi5kdGlja3Jhbmdl KSl7cj1uO2JyZWFrfX1yZXR1cm4gcj9yLnZhbHVlOnQudGlja2Zvcm1hdH0sSC5nZXRTdWJw bG90cz1mdW5jdGlvbih0LGUpe3ZhciByPXQuX2Z1bGxMYXlvdXQuX3N1YnBsb3RzLG49ci5j YXJ0ZXNpYW4uY29uY2F0KHIuZ2wyZHx8W10pLGk9ZT9ILmZpbmRTdWJwbG90c1dpdGhBeGlz KG4sZSk6bjtyZXR1cm4gaS5zb3J0KChmdW5jdGlvbih0LGUpe3ZhciByPXQuc3Vic3RyKDEp LnNwbGl0KCJ5Iiksbj1lLnN1YnN0cigxKS5zcGxpdCgieSIpO3JldHVybiByWzBdPT09blsw XT8rclsxXS0rblsxXTorclswXS0rblswXX0pKSxpfSxILmZpbmRTdWJwbG90c1dpdGhBeGlz PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPW5ldyBSZWdFeHAoIngiPT09ZS5faWQuY2hhckF0 KDApPyJeIitlLl9pZCsieSI6ZS5faWQrIiQiKSxuPVtdLGk9MDtpPHQubGVuZ3RoO2krKyl7 dmFyIGE9dFtpXTtyLnRlc3QoYSkmJm4ucHVzaChhKX1yZXR1cm4gbn0sSC5tYWtlQ2xpcFBh dGhzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQ7aWYoIWUuX2hhc09ubHlMYXJn ZVNwbG9tcyl7dmFyIHIsaSxhPXtfb2Zmc2V0OjAsX2xlbmd0aDplLndpZHRoLF9pZDoiIn0s bz17X29mZnNldDowLF9sZW5ndGg6ZS5oZWlnaHQsX2lkOiIifSxzPUgubGlzdCh0LCJ4Iiwh MCksbD1ILmxpc3QodCwieSIsITApLGM9W107Zm9yKHI9MDtyPHMubGVuZ3RoO3IrKylmb3Io Yy5wdXNoKHt4OnNbcl0seTpvfSksaT0wO2k8bC5sZW5ndGg7aSsrKTA9PT1yJiZjLnB1c2go e3g6YSx5OmxbaV19KSxjLnB1c2goe3g6c1tyXSx5OmxbaV19KTt2YXIgdT1lLl9jbGlwcy5z ZWxlY3RBbGwoIi5heGVzY2xpcCIpLmRhdGEoYywoZnVuY3Rpb24odCl7cmV0dXJuIHQueC5f aWQrdC55Ll9pZH0pKTt1LmVudGVyKCkuYXBwZW5kKCJjbGlwUGF0aCIpLmNsYXNzZWQoImF4 ZXNjbGlwIiwhMCkuYXR0cigiaWQiLChmdW5jdGlvbih0KXtyZXR1cm4iY2xpcCIrZS5fdWlk K3QueC5faWQrdC55Ll9pZH0pKS5hcHBlbmQoInJlY3QiKSx1LmV4aXQoKS5yZW1vdmUoKSx1 LmVhY2goKGZ1bmN0aW9uKHQpe24uc2VsZWN0KHRoaXMpLnNlbGVjdCgicmVjdCIpLmF0dHIo e3g6dC54Ll9vZmZzZXR8fDAseTp0LnkuX29mZnNldHx8MCx3aWR0aDp0LnguX2xlbmd0aHx8 MSxoZWlnaHQ6dC55Ll9sZW5ndGh8fDF9KX0pKX19LEguZHJhdz1mdW5jdGlvbih0LGUscil7 dmFyIG49dC5fZnVsbExheW91dDsicmVkcmF3Ij09PWUmJm4uX3BhcGVyLnNlbGVjdEFsbCgi Zy5zdWJwbG90IikuZWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dFswXSxyPW4uX3Bsb3RzW2Vd O2lmKHIpe3ZhciBpPXIueGF4aXMsYT1yLnlheGlzO3IueGF4aXNsYXllci5zZWxlY3RBbGwo Ii4iK2kuX2lkKyJ0aWNrIikucmVtb3ZlKCksci55YXhpc2xheWVyLnNlbGVjdEFsbCgiLiIr YS5faWQrInRpY2siKS5yZW1vdmUoKSxyLnhheGlzbGF5ZXIuc2VsZWN0QWxsKCIuIitpLl9p ZCsidGljazIiKS5yZW1vdmUoKSxyLnlheGlzbGF5ZXIuc2VsZWN0QWxsKCIuIithLl9pZCsi dGljazIiKS5yZW1vdmUoKSxyLnhheGlzbGF5ZXIuc2VsZWN0QWxsKCIuIitpLl9pZCsiZGl2 aWRlciIpLnJlbW92ZSgpLHIueWF4aXNsYXllci5zZWxlY3RBbGwoIi4iK2EuX2lkKyJkaXZp ZGVyIikucmVtb3ZlKCksci5taW5vckdyaWRsYXllciYmci5taW5vckdyaWRsYXllci5zZWxl Y3RBbGwoInBhdGgiKS5yZW1vdmUoKSxyLmdyaWRsYXllciYmci5ncmlkbGF5ZXIuc2VsZWN0 QWxsKCJwYXRoIikucmVtb3ZlKCksci56ZXJvbGluZWxheWVyJiZyLnplcm9saW5lbGF5ZXIu c2VsZWN0QWxsKCJwYXRoIikucmVtb3ZlKCksbi5faW5mb2xheWVyLnNlbGVjdCgiLmctIitp Ll9pZCsidGl0bGUiKS5yZW1vdmUoKSxuLl9pbmZvbGF5ZXIuc2VsZWN0KCIuZy0iK2EuX2lk KyJ0aXRsZSIpLnJlbW92ZSgpfX0pKTt2YXIgaT1lJiYicmVkcmF3IiE9PWU/ZTpILmxpc3RJ ZHModCk7cmV0dXJuIHMuc3luY09yQXN5bmMoaS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBm dW5jdGlvbigpe2lmKGUpe3ZhciBuPUguZ2V0RnJvbUlkKHQsZSksaT1ILmRyYXdPbmUodCxu LHIpO3JldHVybiBuLl9yPW4ucmFuZ2Uuc2xpY2UoKSxuLl9ybD1zLnNpbXBsZU1hcChuLl9y LG4ucjJsKSxpfX19KSkpfSxILmRyYXdPbmU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGksbDty PXJ8fHt9LGUuc2V0U2NhbGUoKTt2YXIgYz10Ll9mdWxsTGF5b3V0LHA9ZS5faWQsZD1wLmNo YXJBdCgwKSxtPUguY291bnRlckxldHRlcihwKSxnPWMuX3Bsb3RzW2UuX21haW5TdWJwbG90 XTtpZihnKXt2YXIgdj1nW2QrImF4aXNsYXllciJdLHk9ZS5fbWFpbkxpbmVQb3NpdGlvbix4 PWUuX21haW5NaXJyb3JQb3NpdGlvbixiPWUuX3ZhbHM9SC5jYWxjVGlja3MoZSksXz1bZS5t aXJyb3IseSx4XS5qb2luKCJfIik7Zm9yKG49MDtuPGIubGVuZ3RoO24rKyliW25dLmF4SW5m bz1fO2UuX3NlbGVjdGlvbnM9e30sZS5fdGlja0FuZ2xlcyYmKGUuX3ByZXZUaWNrQW5nbGVz PWUuX3RpY2tBbmdsZXMpLGUuX3RpY2tBbmdsZXM9e30sZS5fZGVwdGg9bnVsbDt2YXIgdz17 fTtpZihlLnZpc2libGUpe3ZhciBULGssQT1ILm1ha2VUcmFuc1RpY2tGbihlKSxNPUgubWFr ZVRyYW5zVGlja0xhYmVsRm4oZSksUz0iaW5zaWRlIj09PWUudGlja3MsRT0ib3V0c2lkZSI9 PT1lLnRpY2tzO2lmKCJib3VuZGFyaWVzIj09PWUudGlja3Nvbil7dmFyIEw9ZnVuY3Rpb24o dCxlKXt2YXIgcixuPVtdLGk9ZnVuY3Rpb24odCxlKXt2YXIgcj10LnhibmRbZV07bnVsbCE9 PXImJm4ucHVzaChzLmV4dGVuZEZsYXQoe30sdCx7eDpyfSkpfTtpZihlLmxlbmd0aCl7Zm9y KHI9MDtyPGUubGVuZ3RoO3IrKylpKGVbcl0sMCk7aShlW3ItMV0sMSl9cmV0dXJuIG59KDAs Yik7az1ILmNsaXBFbmRzKGUsTCksVD1TP2s6TH1lbHNlIGs9SC5jbGlwRW5kcyhlLGIpLFQ9 UyYmInBlcmlvZCIhPT1lLnRpY2tsYWJlbG1vZGU/azpiO3ZhciBDLFA9ZS5fZ3JpZFZhbHM9 ayxJPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixpPVtdLGE9ZS5sZW5ndGgmJmVbZS5sZW5ndGgt MV0ueDxlWzBdLngsbz1mdW5jdGlvbih0LGUpe3ZhciByPXQueGJuZFtlXTtudWxsIT09ciYm aS5wdXNoKHMuZXh0ZW5kRmxhdCh7fSx0LHt4OnJ9KSl9O2lmKHQuc2hvd2RpdmlkZXJzJiZl Lmxlbmd0aCl7Zm9yKHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIGw9ZVtyXTtsLnRleHQyIT09 biYmbyhsLGE/MTowKSxuPWwudGV4dDJ9byhlW3ItMV0sYT8wOjEpfXJldHVybiBpfShlLGIp O2lmKCFjLl9oYXNPbmx5TGFyZ2VTcGxvbXMpe3ZhciBPPWUuX3N1YnBsb3RzV2l0aCx6PXt9 O2ZvcihuPTA7bjxPLmxlbmd0aDtuKyspe2k9T1tuXTt2YXIgRD0obD1jLl9wbG90c1tpXSlb bSsiYXhpcyJdLFI9RC5fbWFpbkF4aXMuX2lkO2lmKCF6W1JdKXt6W1JdPTE7dmFyIEY9Ingi PT09ZD8iTTAsIitELl9vZmZzZXQrInYiK0QuX2xlbmd0aDoiTSIrRC5fb2Zmc2V0KyIsMGgi K0QuX2xlbmd0aDtILmRyYXdHcmlkKHQsZSx7dmFsczpQLGNvdW50ZXJBeGlzOkQsbGF5ZXI6 bC5ncmlkbGF5ZXIuc2VsZWN0KCIuIitwKSxtaW5vckxheWVyOmwubWlub3JHcmlkbGF5ZXIu c2VsZWN0KCIuIitwKSxwYXRoOkYsdHJhbnNGbjpBfSksSC5kcmF3WmVyb0xpbmUodCxlLHtj b3VudGVyQXhpczpELGxheWVyOmwuemVyb2xpbmVsYXllcixwYXRoOkYsdHJhbnNGbjpBfSl9 fX12YXIgQj1ILmdldFRpY2tTaWducyhlKSxOPUguZ2V0VGlja1NpZ25zKGUsIm1pbm9yIik7 aWYoZS50aWNrc3x8ZS5taW5vciYmZS5taW5vci50aWNrcyl7dmFyIGoscSxHLFksVz1ILm1h a2VUaWNrUGF0aChlLHksQlsyXSksWD1ILm1ha2VUaWNrUGF0aChlLHksTlsyXSx7bWlub3I6 ITB9KTtpZihlLl9hbmNob3JBeGlzJiZlLm1pcnJvciYmITAhPT1lLm1pcnJvcj8oaj1ILm1h a2VUaWNrUGF0aChlLHgsQlszXSkscT1ILm1ha2VUaWNrUGF0aChlLHgsTlszXSx7bWlub3I6 ITB9KSxHPVcraixZPVgrcSk6KGo9IiIscT0iIixHPVcsWT1YKSxlLnNob3dkaXZpZGVycyYm RSYmImJvdW5kYXJpZXMiPT09ZS50aWNrc29uKXt2YXIgWj17fTtmb3Iobj0wO248SS5sZW5n dGg7bisrKVpbSVtuXS54XT0xO0M9ZnVuY3Rpb24odCl7cmV0dXJuIFpbdC54XT9qOkd9fWVs c2UgQz1mdW5jdGlvbih0KXtyZXR1cm4gdC5taW5vcj9ZOkd9fWlmKEguZHJhd1RpY2tzKHQs ZSx7dmFsczpULGxheWVyOnYscGF0aDpDLHRyYW5zRm46QX0pLCJhbGx0aWNrcyI9PT1lLm1p cnJvcil7dmFyIEo9T2JqZWN0LmtleXMoZS5fbGluZXBvc2l0aW9uc3x8e30pO2ZvcihuPTA7 bjxKLmxlbmd0aDtuKyspe2k9SltuXSxsPWMuX3Bsb3RzW2ldO3ZhciBLPWUuX2xpbmVwb3Np dGlvbnNbaV18fFtdLFE9S1swXSwkPUtbMV0sdHQ9S1syXSxldD1ILm1ha2VUaWNrUGF0aChl LFEsdHQ/QlswXTpOWzBdLHttaW5vcjp0dH0pK0gubWFrZVRpY2tQYXRoKGUsJCx0dD9CWzFd Ok5bMV0se21pbm9yOnR0fSk7SC5kcmF3VGlja3ModCxlLHt2YWxzOlQsbGF5ZXI6bFtkKyJh eGlzbGF5ZXIiXSxwYXRoOmV0LHRyYW5zRm46QX0pfX12YXIgcnQ9W107aWYocnQucHVzaCgo ZnVuY3Rpb24oKXtyZXR1cm4gSC5kcmF3TGFiZWxzKHQsZSx7dmFsczpiLGxheWVyOnYscGxv dGluZm86bCx0cmFuc0ZuOk0sbGFiZWxGbnM6SC5tYWtlTGFiZWxGbnMoZSx5KX0pfSkpLCJt dWx0aWNhdGVnb3J5Ij09PWUudHlwZSl7dmFyIG50PXt4OjIseToxMH1bZF07cnQucHVzaCgo ZnVuY3Rpb24oKXt2YXIgcj17eDoiaGVpZ2h0Iix5OiJ3aWR0aCJ9W2RdLG49YXQoKVtyXStu dCsoZS5fdGlja0FuZ2xlc1twKyJ0aWNrIl0/ZS50aWNrZm9udC5zaXplKlU6MCk7cmV0dXJu IEguZHJhd0xhYmVscyh0LGUse3ZhbHM6dnQoZSxiKSxsYXllcjp2LGNsczpwKyJ0aWNrMiIs cmVwb3NpdGlvbk9uVXBkYXRlOiEwLHNlY29uZGFyeTohMCx0cmFuc0ZuOkEsbGFiZWxGbnM6 SC5tYWtlTGFiZWxGbnMoZSx5K24qQls0XSl9KX0pKSxydC5wdXNoKChmdW5jdGlvbigpe3Jl dHVybiBlLl9kZXB0aD1CWzRdKihhdCgidGljazIiKVtlLnNpZGVdLXkpLGZ1bmN0aW9uKHQs ZSxyKXt2YXIgbj1lLl9pZCsiZGl2aWRlciIsaT1yLnZhbHMsYT1yLmxheWVyLnNlbGVjdEFs bCgicGF0aC4iK24pLmRhdGEoaSx4dCk7YS5leGl0KCkucmVtb3ZlKCksYS5lbnRlcigpLmlu c2VydCgicGF0aCIsIjpmaXJzdC1jaGlsZCIpLmNsYXNzZWQobiwxKS5jbGFzc2VkKCJjcmlz cCIsMSkuY2FsbChmLnN0cm9rZSxlLmRpdmlkZXJjb2xvcikuc3R5bGUoInN0cm9rZS13aWR0 aCIsaC5jcmlzcFJvdW5kKHQsZS5kaXZpZGVyd2lkdGgsMSkrInB4IiksYS5hdHRyKCJ0cmFu c2Zvcm0iLHIudHJhbnNGbikuYXR0cigiZCIsci5wYXRoKX0odCxlLHt2YWxzOkksbGF5ZXI6 dixwYXRoOkgubWFrZVRpY2tQYXRoKGUseSxCWzRdLHtsZW46ZS5fZGVwdGh9KSx0cmFuc0Zu OkF9KX0pKX1lbHNlIGUudGl0bGUuaGFzT3duUHJvcGVydHkoInN0YW5kb2ZmIikmJnJ0LnB1 c2goKGZ1bmN0aW9uKCl7ZS5fZGVwdGg9Qls0XSooYXQoKVtlLnNpZGVdLXkpfSkpO3ZhciBp dD1vLmdldENvbXBvbmVudE1ldGhvZCgicmFuZ2VzbGlkZXIiLCJpc1Zpc2libGUiKShlKTty ZXR1cm4gcnQucHVzaCgoZnVuY3Rpb24oKXt2YXIgcixuLGkscyxsPWUuc2lkZS5jaGFyQXQo MCksdT1WW2Uuc2lkZV0uY2hhckF0KDApLGY9SC5nZXRQeFBvc2l0aW9uKHQsZSksaD1FP2Uu dGlja2xlbjowO2lmKChlLmF1dG9tYXJnaW58fGl0KSYmKCJtdWx0aWNhdGVnb3J5Ij09PWUu dHlwZT9yPWF0KCJ0aWNrMiIpOihyPWF0KCksIngiPT09ZCYmImIiPT09bCYmKGUuX2RlcHRo PU1hdGgubWF4KHIud2lkdGg+MD9yLmJvdHRvbS1mOjAsaCkpKSksZS5hdXRvbWFyZ2luKXtu PXt4OjAseTowLHI6MCxsOjAsdDowLGI6MH07dmFyIHA9WzAsMV07aWYoIngiPT09ZCl7aWYo ImIiPT09bD9uW2xdPWUuX2RlcHRoOihuW2xdPWUuX2RlcHRoPU1hdGgubWF4KHIud2lkdGg+ MD9mLXIudG9wOjAsaCkscC5yZXZlcnNlKCkpLHIud2lkdGg+MCl7dmFyIGc9ci5yaWdodC0o ZS5fb2Zmc2V0K2UuX2xlbmd0aCk7Zz4wJiYobi54cj0xLG4ucj1nKTt2YXIgdj1lLl9vZmZz ZXQtci5sZWZ0O3Y+MCYmKG4ueGw9MCxuLmw9dil9fWVsc2UgaWYoImwiPT09bD9uW2xdPWUu X2RlcHRoPU1hdGgubWF4KHIuaGVpZ2h0PjA/Zi1yLmxlZnQ6MCxoKToobltsXT1lLl9kZXB0 aD1NYXRoLm1heChyLmhlaWdodD4wP3IucmlnaHQtZjowLGgpLHAucmV2ZXJzZSgpKSxyLmhl aWdodD4wKXt2YXIgeT1yLmJvdHRvbS0oZS5fb2Zmc2V0K2UuX2xlbmd0aCk7eT4wJiYobi55 Yj0wLG4uYj15KTt2YXIgeD1lLl9vZmZzZXQtci50b3A7eD4wJiYobi55dD0xLG4udD14KX1u W21dPSJmcmVlIj09PWUuYW5jaG9yP2UucG9zaXRpb246ZS5fYW5jaG9yQXhpcy5kb21haW5b cFswXV0sZS50aXRsZS50ZXh0IT09Yy5fZGZsdFRpdGxlW2RdJiYobltsXSs9YnQoZSkrKGUu dGl0bGUuc3RhbmRvZmZ8fDApKSxlLm1pcnJvciYmImZyZWUiIT09ZS5hbmNob3ImJigoaT17 eDowLHk6MCxyOjAsbDowLHQ6MCxiOjB9KVt1XT1lLmxpbmV3aWR0aCxlLm1pcnJvciYmITAh PT1lLm1pcnJvciYmKGlbdV0rPWgpLCEwPT09ZS5taXJyb3J8fCJ0aWNrcyI9PT1lLm1pcnJv cj9pW21dPWUuX2FuY2hvckF4aXMuZG9tYWluW3BbMV1dOiJhbGwiIT09ZS5taXJyb3ImJiJh bGx0aWNrcyIhPT1lLm1pcnJvcnx8KGlbbV09W2UuX2NvdW50ZXJEb21haW5NaW4sZS5fY291 bnRlckRvbWFpbk1heF1bcFsxXV0pKX1pdCYmKHM9by5nZXRDb21wb25lbnRNZXRob2QoInJh bmdlc2xpZGVyIiwiYXV0b01hcmdpbk9wdHMiKSh0LGUpKSxhLmF1dG9NYXJnaW4odCxUdChl KSxuKSxhLmF1dG9NYXJnaW4odCxrdChlKSxpKSxhLmF1dG9NYXJnaW4odCxBdChlKSxzKX0p KSxyLnNraXBUaXRsZXx8aXQmJiJib3R0b20iPT09ZS5zaWRlfHxydC5wdXNoKChmdW5jdGlv bigpe3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciByLG49dC5fZnVsbExheW91dCxpPWUuX2lk LGE9aS5jaGFyQXQoMCksbz1lLnRpdGxlLmZvbnQuc2l6ZTtpZihlLnRpdGxlLmhhc093blBy b3BlcnR5KCJzdGFuZG9mZiIpKXI9ZS5fZGVwdGgrZS50aXRsZS5zdGFuZG9mZitidChlKTtl bHNle3ZhciBzPVB0KGUpO2lmKCJtdWx0aWNhdGVnb3J5Ij09PWUudHlwZSlyPWUuX2RlcHRo O2Vsc2V7dmFyIGw9MS41Km87cyYmKGw9LjUqbywib3V0c2lkZSI9PT1lLnRpY2tzJiYobCs9 ZS50aWNrbGVuKSkscj0xMCtsKyhlLmxpbmV3aWR0aD9lLmxpbmV3aWR0aC0xOjApfXN8fChy Kz0ieCI9PT1hPyJ0b3AiPT09ZS5zaWRlP28qKGUuc2hvd3RpY2tsYWJlbHM/MTowKTpvKihl LnNob3d0aWNrbGFiZWxzPzEuNTouNSk6InJpZ2h0Ij09PWUuc2lkZT9vKihlLnNob3d0aWNr bGFiZWxzPzE6LjUpOm8qKGUuc2hvd3RpY2tsYWJlbHM/LjU6MCkpfXZhciBjLGYscCxkLG09 SC5nZXRQeFBvc2l0aW9uKHQsZSk7IngiPT09YT8oZj1lLl9vZmZzZXQrZS5fbGVuZ3RoLzIs cD0idG9wIj09PWUuc2lkZT9tLXI6bStyKToocD1lLl9vZmZzZXQrZS5fbGVuZ3RoLzIsZj0i cmlnaHQiPT09ZS5zaWRlP20rcjptLXIsYz17cm90YXRlOiItOTAiLG9mZnNldDowfSk7aWYo Im11bHRpY2F0ZWdvcnkiIT09ZS50eXBlKXt2YXIgZz1lLl9zZWxlY3Rpb25zW2UuX2lkKyJ0 aWNrIl07aWYoZD17c2VsZWN0aW9uOmcsc2lkZTplLnNpZGV9LGcmJmcubm9kZSgpJiZnLm5v ZGUoKS5wYXJlbnROb2RlKXt2YXIgdj1oLmdldFRyYW5zbGF0ZShnLm5vZGUoKS5wYXJlbnRO b2RlKTtkLm9mZnNldExlZnQ9di54LGQub2Zmc2V0VG9wPXYueX1lLnRpdGxlLmhhc093blBy b3BlcnR5KCJzdGFuZG9mZiIpJiYoZC5wYWQ9MCl9cmV0dXJuIHUuZHJhdyh0LGkrInRpdGxl Iix7cHJvcENvbnRhaW5lcjplLHByb3BOYW1lOmUuX25hbWUrIi50aXRsZS50ZXh0IixwbGFj ZWhvbGRlcjpuLl9kZmx0VGl0bGVbYV0sYXZvaWQ6ZCx0cmFuc2Zvcm06YyxhdHRyaWJ1dGVz Ont4OmYseTpwLCJ0ZXh0LWFuY2hvciI6Im1pZGRsZSJ9fSl9KHQsZSl9KSkscy5zeW5jT3JB c3luYyhydCl9fWZ1bmN0aW9uIGF0KHQpe3ZhciByPXArKHR8fCJ0aWNrIik7cmV0dXJuIHdb cl18fCh3W3JdPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixpLGE7dC5fc2VsZWN0aW9uc1tlXS5z aXplKCk/KHI9MS8wLG49LTEvMCxpPTEvMCxhPS0xLzAsdC5fc2VsZWN0aW9uc1tlXS5lYWNo KChmdW5jdGlvbigpe3ZhciB0PXd0KHRoaXMpLGU9aC5iQm94KHQubm9kZSgpLnBhcmVudE5v ZGUpO3I9TWF0aC5taW4ocixlLnRvcCksbj1NYXRoLm1heChuLGUuYm90dG9tKSxpPU1hdGgu bWluKGksZS5sZWZ0KSxhPU1hdGgubWF4KGEsZS5yaWdodCl9KSkpOihyPTAsbj0wLGk9MCxh PTApO3JldHVybnt0b3A6cixib3R0b206bixsZWZ0OmkscmlnaHQ6YSxoZWlnaHQ6bi1yLHdp ZHRoOmEtaX19KGUscikpLHdbcl19fSxILmdldFRpY2tTaWducz1mdW5jdGlvbih0LGUpe3Zh ciByPXQuX2lkLmNoYXJBdCgwKSxuPXt4OiJ0b3AiLHk6InJpZ2h0In1bcl0saT10LnNpZGU9 PT1uPzE6LTEsYT1bLTEsMSxpLC1pXTtyZXR1cm4iaW5zaWRlIiE9PShlPyh0Lm1pbm9yfHx7 fSkudGlja3M6dC50aWNrcyk9PSgieCI9PT1yKSYmKGE9YS5tYXAoKGZ1bmN0aW9uKHQpe3Jl dHVybi10fSkpKSx0LnNpZGUmJmEucHVzaCh7bDotMSx0Oi0xLHI6MSxiOjF9W3Quc2lkZS5j aGFyQXQoMCldKSxhfSxILm1ha2VUcmFuc1RpY2tGbj1mdW5jdGlvbih0KXtyZXR1cm4ieCI9 PT10Ll9pZC5jaGFyQXQoMCk/ZnVuY3Rpb24oZSl7cmV0dXJuIGwodC5fb2Zmc2V0K3QubDJw KGUueCksMCl9OmZ1bmN0aW9uKGUpe3JldHVybiBsKDAsdC5fb2Zmc2V0K3QubDJwKGUueCkp fX0sSC5tYWtlVHJhbnNUaWNrTGFiZWxGbj1mdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbih0 KXt2YXIgZT10LnRpY2tsYWJlbHBvc2l0aW9ufHwiIixyPWZ1bmN0aW9uKHQpe3JldHVybi0x IT09ZS5pbmRleE9mKHQpfSxuPXIoInRvcCIpLGk9cigibGVmdCIpLGE9cigicmlnaHQiKSxv PXIoImJvdHRvbSIpLHM9cigiaW5zaWRlIiksbD1vfHxpfHxufHxhO2lmKCFsJiYhcylyZXR1 cm5bMCwwXTt2YXIgYz10LnNpZGUsdT1sPyh0LnRpY2t3aWR0aHx8MCkvMjowLGY9MyxoPXQu dGlja2ZvbnQ/dC50aWNrZm9udC5zaXplOjEyOyhvfHxuKSYmKHUrPWgqaixmKz0odC5saW5l d2lkdGh8fDApLzIpOyhpfHxhKSYmKHUrPSh0LmxpbmV3aWR0aHx8MCkvMixmKz0zKTtzJiYi dG9wIj09PWMmJihmLT1oKigxLWopKTsoaXx8bikmJih1PS11KTsiYm90dG9tIiE9PWMmJiJy aWdodCIhPT1jfHwoZj0tZik7cmV0dXJuW2w/dTowLHM/ZjowXX0odCkscj1lWzBdLG49ZVsx XTtyZXR1cm4ieCI9PT10Ll9pZC5jaGFyQXQoMCk/ZnVuY3Rpb24oZSl7cmV0dXJuIGwocit0 Ll9vZmZzZXQrdC5sMnAoeXQoZSkpLG4pfTpmdW5jdGlvbihlKXtyZXR1cm4gbChuLHIrdC5f b2Zmc2V0K3QubDJwKHl0KGUpKSl9fSxILm1ha2VUaWNrUGF0aD1mdW5jdGlvbih0LGUscixu KXtufHwobj17fSk7dmFyIGk9bi5taW5vcjtpZihpJiYhdC5taW5vcilyZXR1cm4iIjt2YXIg YT12b2lkIDAhPT1uLmxlbj9uLmxlbjppP3QubWlub3IudGlja2xlbjp0LnRpY2tsZW4sbz10 Ll9pZC5jaGFyQXQoMCkscz0odC5saW5ld2lkdGh8fDEpLzI7cmV0dXJuIngiPT09bz8iTTAs IisoZStzKnIpKyJ2IithKnI6Ik0iKyhlK3MqcikrIiwwaCIrYSpyfSxILm1ha2VMYWJlbEZu cz1mdW5jdGlvbih0LGUscil7dmFyIG49dC50aWNrbGFiZWxwb3NpdGlvbnx8IiIsYT1mdW5j dGlvbih0KXtyZXR1cm4tMSE9PW4uaW5kZXhPZih0KX0sbz1hKCJ0b3AiKSxsPWEoImxlZnQi KSxjPWEoInJpZ2h0IiksdT1hKCJib3R0b20iKXx8bHx8b3x8YyxmPWEoImluc2lkZSIpLGg9 Imluc2lkZSI9PT1uJiYiaW5zaWRlIj09PXQudGlja3N8fCFmJiYib3V0c2lkZSI9PT10LnRp Y2tzJiYiYm91bmRhcmllcyIhPT10LnRpY2tzb24scD0wLGQ9MCxtPWg/dC50aWNrbGVuOjA7 aWYoZj9tKj0tMTp1JiYobT0wKSxoJiYocCs9bSxyKSl7dmFyIGc9cy5kZWcycmFkKHIpO3A9 bSpNYXRoLmNvcyhnKSsxLGQ9bSpNYXRoLnNpbihnKX10LnNob3d0aWNrbGFiZWxzJiYoaHx8 dC5zaG93bGluZSkmJihwKz0uMip0LnRpY2tmb250LnNpemUpO3ZhciB2LHkseCxiLF8sdz17 bGFiZWxTdGFuZG9mZjpwKz0odC5saW5ld2lkdGh8fDEpLzIqKGY/LTE6MSksbGFiZWxTaGlm dDpkfSxUPTAsaz10LnNpZGUsQT10Ll9pZC5jaGFyQXQoMCksTT10LnRpY2thbmdsZTtpZigi eCI9PT1BKWI9KF89IWYmJiJib3R0b20iPT09a3x8ZiYmInRvcCI9PT1rKT8xOi0xLGYmJihi Kj0tMSksdj1kKmIseT1lK3AqYix4PV8/MTotLjIsOTA9PT1NYXRoLmFicyhNKSYmKGY/eCs9 Tjp4PS05MD09PU0mJiJib3R0b20iPT09az9qOjkwPT09TSYmInRvcCI9PT1rP046LjUsVD1O LzIqKE0vOTApKSx3LnhGbj1mdW5jdGlvbih0KXtyZXR1cm4gdC5keCt2K1QqdC5mb250U2l6 ZX0sdy55Rm49ZnVuY3Rpb24odCl7cmV0dXJuIHQuZHkreSt0LmZvbnRTaXplKnh9LHcuYW5j aG9yRm49ZnVuY3Rpb24odCxlKXtpZih1KXtpZihsKXJldHVybiJlbmQiO2lmKGMpcmV0dXJu InN0YXJ0In1yZXR1cm4gaShlKSYmMCE9PWUmJjE4MCE9PWU/ZSpiPDAhPT1mPyJlbmQiOiJz dGFydCI6Im1pZGRsZSJ9LHcuaGVpZ2h0Rm49ZnVuY3Rpb24oZSxyLG4pe3JldHVybiByPC02 MHx8cj42MD8tLjUqbjoidG9wIj09PXQuc2lkZSE9PWY/LW46MH07ZWxzZSBpZigieSI9PT1B KXtpZihiPShfPSFmJiYibGVmdCI9PT1rfHxmJiYicmlnaHQiPT09ayk/MTotMSxmJiYoYio9 LTEpLHY9cCx5PWQqYix4PTAsZnx8OTAhPT1NYXRoLmFicyhNKXx8KHg9LTkwPT09TSYmImxl ZnQiPT09a3x8OTA9PT1NJiYicmlnaHQiPT09az9qOi41KSxmKXt2YXIgUz1pKE0pPytNOjA7 aWYoMCE9PVMpe3ZhciBFPXMuZGVnMnJhZChTKTtUPU1hdGguYWJzKE1hdGguc2luKEUpKSpq KmIseD0wfX13LnhGbj1mdW5jdGlvbih0KXtyZXR1cm4gdC5keCtlLSh2K3QuZm9udFNpemUq eCkqYitUKnQuZm9udFNpemV9LHcueUZuPWZ1bmN0aW9uKHQpe3JldHVybiB0LmR5K3krdC5m b250U2l6ZSpOfSx3LmFuY2hvckZuPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkoZSkmJjkwPT09 TWF0aC5hYnMoZSk/Im1pZGRsZSI6Xz8iZW5kIjoic3RhcnQifSx3LmhlaWdodEZuPWZ1bmN0 aW9uKGUscixuKXtyZXR1cm4icmlnaHQiPT09dC5zaWRlJiYocio9LTEpLHI8LTMwPy1uOnI8 MzA/LS41Km46MH19cmV0dXJuIHd9LEguZHJhd1RpY2tzPWZ1bmN0aW9uKHQsZSxyKXtyPXJ8 fHt9O3ZhciBpPWUuX2lkKyJ0aWNrIixhPVtdLmNvbmNhdChlLm1pbm9yJiZlLm1pbm9yLnRp Y2tzP3IudmFscy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1pbm9yJiYhdC5ub1Rp Y2t9KSk6W10pLmNvbmNhdChlLnRpY2tzP3IudmFscy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3Jl dHVybiF0Lm1pbm9yJiYhdC5ub1RpY2t9KSk6W10pLG89ci5sYXllci5zZWxlY3RBbGwoInBh dGguIitpKS5kYXRhKGEseHQpO28uZXhpdCgpLnJlbW92ZSgpLG8uZW50ZXIoKS5hcHBlbmQo InBhdGgiKS5jbGFzc2VkKGksMSkuY2xhc3NlZCgidGlja3MiLDEpLmNsYXNzZWQoImNyaXNw IiwhMSE9PXIuY3Jpc3ApLmVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBmLnN0cm9rZShuLnNl bGVjdCh0aGlzKSx0Lm1pbm9yP2UubWlub3IudGlja2NvbG9yOmUudGlja2NvbG9yKX0pKS5z dHlsZSgic3Ryb2tlLXdpZHRoIiwoZnVuY3Rpb24ocil7cmV0dXJuIGguY3Jpc3BSb3VuZCh0 LHIubWlub3I/ZS5taW5vci50aWNrd2lkdGg6ZS50aWNrd2lkdGgsMSkrInB4In0pKS5hdHRy KCJkIixyLnBhdGgpLnN0eWxlKCJkaXNwbGF5IixudWxsKSxJdChlLFtSXSksby5hdHRyKCJ0 cmFuc2Zvcm0iLHIudHJhbnNGbil9LEguZHJhd0dyaWQ9ZnVuY3Rpb24odCxlLHIpe3I9cnx8 e307dmFyIGk9ZS5faWQrImdyaWQiLGE9ZS5taW5vciYmZS5taW5vci5zaG93Z3JpZCxvPWE/ ci52YWxzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQubWlub3J9KSk6W10scz1lLnNo b3dncmlkP3IudmFscy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiF0Lm1pbm9yfSkpOltd LGw9ci5jb3VudGVyQXhpcztpZihsJiZILnNob3VsZFNob3daZXJvTGluZSh0LGUsbCkpZm9y KHZhciBjPSJhcnJheSI9PT1lLnRpY2ttb2RlLHU9MDt1PHMubGVuZ3RoO3UrKyl7dmFyIHA9 c1t1XS54O2lmKGM/IXA6TWF0aC5hYnMocCk8ZS5kdGljay8xMDApe2lmKHM9cy5zbGljZSgw LHUpLmNvbmNhdChzLnNsaWNlKHUrMSkpLCFjKWJyZWFrO3UtLX19ZS5fZ3c9aC5jcmlzcFJv dW5kKHQsZS5ncmlkd2lkdGgsMSk7Zm9yKHZhciBkPWE/aC5jcmlzcFJvdW5kKHQsZS5taW5v ci5ncmlkd2lkdGgsMSk6MCxtPXIubGF5ZXIsZz1yLm1pbm9yTGF5ZXIsdj0xO3Y+PTA7di0t KXt2YXIgeT12P206ZztpZih5KXt2YXIgeD15LnNlbGVjdEFsbCgicGF0aC4iK2kpLmRhdGEo dj9zOm8seHQpO3guZXhpdCgpLnJlbW92ZSgpLHguZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5j bGFzc2VkKGksMSkuY2xhc3NlZCgiY3Jpc3AiLCExIT09ci5jcmlzcCkseC5hdHRyKCJ0cmFu c2Zvcm0iLHIudHJhbnNGbikuYXR0cigiZCIsci5wYXRoKS5lYWNoKChmdW5jdGlvbih0KXty ZXR1cm4gZi5zdHJva2Uobi5zZWxlY3QodGhpcyksdC5taW5vcj9lLm1pbm9yLmdyaWRjb2xv cjplLmdyaWRjb2xvcnx8IiNkZGQiKX0pKS5zdHlsZSgic3Ryb2tlLWRhc2hhcnJheSIsKGZ1 bmN0aW9uKHQpe3JldHVybiBoLmRhc2hTdHlsZSh0Lm1pbm9yP2UubWlub3IuZ3JpZGRhc2g6 ZS5ncmlkZGFzaCx0Lm1pbm9yP2UubWlub3IuZ3JpZHdpZHRoOmUuZ3JpZHdpZHRoKX0pKS5z dHlsZSgic3Ryb2tlLXdpZHRoIiwoZnVuY3Rpb24odCl7cmV0dXJuKHQubWlub3I/ZDplLl9n dykrInB4In0pKS5zdHlsZSgiZGlzcGxheSIsbnVsbCksImZ1bmN0aW9uIj09dHlwZW9mIHIu cGF0aCYmeC5hdHRyKCJkIixyLnBhdGgpfX1JdChlLFt6LERdKX0sSC5kcmF3WmVyb0xpbmU9 ZnVuY3Rpb24odCxlLHIpe3I9cnx8cjt2YXIgbj1lLl9pZCsiemwiLGk9SC5zaG91bGRTaG93 WmVyb0xpbmUodCxlLHIuY291bnRlckF4aXMpLGE9ci5sYXllci5zZWxlY3RBbGwoInBhdGgu IituKS5kYXRhKGk/W3t4OjAsaWQ6ZS5faWR9XTpbXSk7YS5leGl0KCkucmVtb3ZlKCksYS5l bnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQobiwxKS5jbGFzc2VkKCJ6bCIsMSkuY2xh c3NlZCgiY3Jpc3AiLCExIT09ci5jcmlzcCkuZWFjaCgoZnVuY3Rpb24oKXtyLmxheWVyLnNl bGVjdEFsbCgicGF0aCIpLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIFkodC5pZCxlLmlk KX0pKX0pKSxhLmF0dHIoInRyYW5zZm9ybSIsci50cmFuc0ZuKS5hdHRyKCJkIixyLnBhdGgp LmNhbGwoZi5zdHJva2UsZS56ZXJvbGluZWNvbG9yfHxmLmRlZmF1bHRMaW5lKS5zdHlsZSgi c3Ryb2tlLXdpZHRoIixoLmNyaXNwUm91bmQodCxlLnplcm9saW5ld2lkdGgsZS5fZ3d8fDEp KyJweCIpLnN0eWxlKCJkaXNwbGF5IixudWxsKSxJdChlLFtPXSl9LEguZHJhd0xhYmVscz1m dW5jdGlvbih0LGUscil7cj1yfHx7fTt2YXIgYT10Ll9mdWxsTGF5b3V0LG89ZS5faWQsdT1v LmNoYXJBdCgwKSxmPXIuY2xzfHxvKyJ0aWNrIixwPXIudmFscy5maWx0ZXIoKGZ1bmN0aW9u KHQpe3JldHVybiB0LnRleHR9KSksZD1yLmxhYmVsRm5zLG09ci5zZWNvbmRhcnk/MDplLnRp Y2thbmdsZSxnPShlLl9wcmV2VGlja0FuZ2xlc3x8e30pW2ZdLHY9ci5sYXllci5zZWxlY3RB bGwoImcuIitmKS5kYXRhKGUuc2hvd3RpY2tsYWJlbHM/cDpbXSx4dCkseT1bXTtmdW5jdGlv biB4KHQsYSl7dC5lYWNoKChmdW5jdGlvbih0KXt2YXIgbz1uLnNlbGVjdCh0aGlzKSxzPW8u c2VsZWN0KCIudGV4dC1tYXRoLWdyb3VwIiksdT1kLmFuY2hvckZuKHQsYSksZj1yLnRyYW5z Rm4uY2FsbChvLm5vZGUoKSx0KSsoaShhKSYmMCE9K2E/IiByb3RhdGUoIithKyIsIitkLnhG bih0KSsiLCIrKGQueUZuKHQpLXQuZm9udFNpemUvMikrIikiOiIiKSxwPWMubGluZUNvdW50 KG8pLG09VSp0LmZvbnRTaXplLGc9ZC5oZWlnaHRGbih0LGkoYSk/K2E6MCwocC0xKSptKTtp ZihnJiYoZis9bCgwLGcpKSxzLmVtcHR5KCkpe3ZhciB2PW8uc2VsZWN0KCJ0ZXh0Iik7di5h dHRyKHt0cmFuc2Zvcm06ZiwidGV4dC1hbmNob3IiOnV9KSx2LnN0eWxlKCJvcGFjaXR5Iiwx KSxlLl9hZGp1c3RUaWNrTGFiZWxzT3ZlcmZsb3cmJmUuX2FkanVzdFRpY2tMYWJlbHNPdmVy ZmxvdygpfWVsc2V7dmFyIHk9aC5iQm94KHMubm9kZSgpKS53aWR0aCp7ZW5kOi0uNSxzdGFy dDouNX1bdV07cy5hdHRyKCJ0cmFuc2Zvcm0iLGYrbCh5LDApKX19KSl9di5lbnRlcigpLmFw cGVuZCgiZyIpLmNsYXNzZWQoZiwxKS5hcHBlbmQoInRleHQiKS5hdHRyKCJ0ZXh0LWFuY2hv ciIsIm1pZGRsZSIpLmVhY2goKGZ1bmN0aW9uKGUpe3ZhciByPW4uc2VsZWN0KHRoaXMpLGk9 dC5fcHJvbWlzZXMubGVuZ3RoO3IuY2FsbChjLnBvc2l0aW9uVGV4dCxkLnhGbihlKSxkLnlG bihlKSkuY2FsbChoLmZvbnQsZS5mb250LGUuZm9udFNpemUsZS5mb250Q29sb3IpLnRleHQo ZS50ZXh0KS5jYWxsKGMuY29udmVydFRvVHNwYW5zLHQpLHQuX3Byb21pc2VzW2ldP3kucHVz aCh0Ll9wcm9taXNlcy5wb3AoKS50aGVuKChmdW5jdGlvbigpe3gocixtKX0pKSk6eChyLG0p fSkpLEl0KGUsW0ZdKSx2LmV4aXQoKS5yZW1vdmUoKSxyLnJlcG9zaXRpb25PblVwZGF0ZSYm di5lYWNoKChmdW5jdGlvbih0KXtuLnNlbGVjdCh0aGlzKS5zZWxlY3QoInRleHQiKS5jYWxs KGMucG9zaXRpb25UZXh0LGQueEZuKHQpLGQueUZuKHQpKX0pKSxlLl9hZGp1c3RUaWNrTGFi ZWxzT3ZlcmZsb3c9ZnVuY3Rpb24oKXt2YXIgcj1lLnRpY2tsYWJlbG92ZXJmbG93O2lmKHIm JiJhbGxvdyIhPT1yKXt2YXIgaT0tMSE9PXIuaW5kZXhPZigiaGlkZSIpLG89IngiPT09ZS5f aWQuY2hhckF0KDApLGw9MCxjPW8/dC5fZnVsbExheW91dC53aWR0aDp0Ll9mdWxsTGF5b3V0 LmhlaWdodDtpZigtMSE9PXIuaW5kZXhPZigiZG9tYWluIikpe3ZhciB1PXMuc2ltcGxlTWFw KGUucmFuZ2UsZS5yMmwpO2w9ZS5sMnAodVswXSkrZS5fb2Zmc2V0LGM9ZS5sMnAodVsxXSkr ZS5fb2Zmc2V0fXZhciBmPU1hdGgubWluKGwsYykscD1NYXRoLm1heChsLGMpLGQ9ZS5zaWRl LG09MS8wLGc9LTEvMDtmb3IodmFyIHkgaW4gdi5lYWNoKChmdW5jdGlvbih0KXt2YXIgcj1u LnNlbGVjdCh0aGlzKTtpZihyLnNlbGVjdCgiLnRleHQtbWF0aC1ncm91cCIpLmVtcHR5KCkp e3ZhciBhPWguYkJveChyLm5vZGUoKSkscz0wO28/KGEucmlnaHQ+cHx8YS5sZWZ0PGYpJiYo cz0xKTooYS5ib3R0b20+cHx8YS50b3ArKGUudGlja2FuZ2xlPzA6dC5mb250U2l6ZS80KTxm KSYmKHM9MSk7dmFyIGw9ci5zZWxlY3QoInRleHQiKTtzP2kmJmwuc3R5bGUoIm9wYWNpdHki LDApOihsLnN0eWxlKCJvcGFjaXR5IiwxKSxtPSJib3R0b20iPT09ZHx8InJpZ2h0Ij09PWQ/ TWF0aC5taW4obSxvP2EudG9wOmEubGVmdCk6LTEvMCxnPSJ0b3AiPT09ZHx8ImxlZnQiPT09 ZD9NYXRoLm1heChnLG8/YS5ib3R0b206YS5yaWdodCk6MS8wKX19KSksYS5fcGxvdHMpe3Zh ciB4PWEuX3Bsb3RzW3ldO2lmKGUuX2lkPT09eC54YXhpcy5faWR8fGUuX2lkPT09eC55YXhp cy5faWQpe3ZhciBiPW8/eC55YXhpczp4LnhheGlzO2ImJihiWyJfdmlzaWJsZUxhYmVsTWlu XyIrZS5faWRdPW0sYlsiX3Zpc2libGVMYWJlbE1heF8iK2UuX2lkXT1nKX19fX0sZS5faGlk ZUNvdW50ZXJBeGlzSW5zaWRlVGlja0xhYmVscz1mdW5jdGlvbih0KXt2YXIgcj0ieCI9PT1l Ll9pZC5jaGFyQXQoMCksaT1bXTtmb3IodmFyIG8gaW4gYS5fcGxvdHMpe3ZhciBzPWEuX3Bs b3RzW29dO2UuX2lkIT09cy54YXhpcy5faWQmJmUuX2lkIT09cy55YXhpcy5faWR8fGkucHVz aChyP3MueWF4aXM6cy54YXhpcyl9aS5mb3JFYWNoKChmdW5jdGlvbihyLGkpe3ImJlB0KHIp JiYodHx8W08sRCx6LFIsRl0pLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBvPSJ0aWNrIj09 PXQuSyYmInRleHQiPT09dC5MJiYicGVyaW9kIj09PWUudGlja2xhYmVsbW9kZSxzPWEuX3Bs b3RzW2UuX21haW5TdWJwbG90XTsodC5LPT09Ty5LP3MuemVyb2xpbmVsYXllci5zZWxlY3RB bGwoIi4iK2UuX2lkKyJ6bCIpOnQuSz09PUQuSz9zLm1pbm9yR3JpZGxheWVyLnNlbGVjdEFs bCgiLiIrZS5faWQpOnQuSz09PXouSz9zLmdyaWRsYXllci5zZWxlY3RBbGwoIi4iK2UuX2lk KTpzW2UuX2lkLmNoYXJBdCgwKSsiYXhpc2xheWVyIl0pLmVhY2goKGZ1bmN0aW9uKCl7dmFy IGE9bi5zZWxlY3QodGhpcyk7dC5MJiYoYT1hLnNlbGVjdEFsbCh0LkwpKSxhLmVhY2goKGZ1 bmN0aW9uKGEpe3ZhciBzPWUubDJwKG8/eXQoYSk6YS54KStlLl9vZmZzZXQsbD1uLnNlbGVj dCh0aGlzKTtzPGVbIl92aXNpYmxlTGFiZWxNYXhfIityLl9pZF0mJnM+ZVsiX3Zpc2libGVM YWJlbE1pbl8iK3IuX2lkXT9sLnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpOiJ0aWNrIiE9PXQu S3x8aXx8bC5zdHlsZSgiZGlzcGxheSIsbnVsbCl9KSl9KSl9KSl9KSl9LHgodixnKzE/Zzpt KTt2YXIgYj1udWxsO2UuX3NlbGVjdGlvbnMmJihlLl9zZWxlY3Rpb25zW2ZdPXYpO3ZhciBf PVtmdW5jdGlvbigpe3JldHVybiB5Lmxlbmd0aCYmUHJvbWlzZS5hbGwoeSl9XTtlLmF1dG9t YXJnaW4mJmEuX3JlZHJhd0Zyb21BdXRvTWFyZ2luQ291bnQmJjkwPT09Zz8oYj05MCxfLnB1 c2goKGZ1bmN0aW9uKCl7eCh2LGcpfSkpKTpfLnB1c2goKGZ1bmN0aW9uKCl7aWYoeCh2LG0p LHAubGVuZ3RoJiYieCI9PT11JiYhaShtKSYmKCJsb2ciIT09ZS50eXBlfHwiRCIhPT1TdHJp bmcoZS5kdGljaykuY2hhckF0KDApKSl7Yj0wO3ZhciB0LG49MCxhPVtdO2lmKHYuZWFjaCgo ZnVuY3Rpb24odCl7bj1NYXRoLm1heChuLHQuZm9udFNpemUpO3ZhciByPWUubDJwKHQueCks aT13dCh0aGlzKSxvPWguYkJveChpLm5vZGUoKSk7YS5wdXNoKHt0b3A6MCxib3R0b206MTAs aGVpZ2h0OjEwLGxlZnQ6ci1vLndpZHRoLzIscmlnaHQ6citvLndpZHRoLzIrMix3aWR0aDpv LndpZHRoKzJ9KX0pKSwiYm91bmRhcmllcyIhPT1lLnRpY2tzb24mJiFlLnNob3dkaXZpZGVy c3x8ci5zZWNvbmRhcnkpe3ZhciBvPXAubGVuZ3RoLGw9TWF0aC5hYnMoKHBbby0xXS54LXBb MF0ueCkqZS5fbSkvKG8tMSksYz1lLnRpY2tsYWJlbHBvc2l0aW9ufHwiIixmPWZ1bmN0aW9u KHQpe3JldHVybi0xIT09Yy5pbmRleE9mKHQpfSxkPWYoInRvcCIpLGc9ZigibGVmdCIpLHk9 ZigicmlnaHQiKSxfPWYoImJvdHRvbSIpfHxnfHxkfHx5PyhlLnRpY2t3aWR0aHx8MCkrNjow LHc9bDwyLjUqbnx8Im11bHRpY2F0ZWdvcnkiPT09ZS50eXBlfHwicmVhbGF4aXMiPT09ZS5f bmFtZTtmb3IodD0wO3Q8YS5sZW5ndGgtMTt0KyspaWYocy5iQm94SW50ZXJzZWN0KGFbdF0s YVt0KzFdLF8pKXtiPXc/OTA6MzA7YnJlYWt9fWVsc2V7dmFyIFQ9Mjtmb3IoZS50aWNrcyYm KFQrPWUudGlja3dpZHRoLzIpLHQ9MDt0PGEubGVuZ3RoO3QrKyl7dmFyIGs9cFt0XS54Ym5k LEE9YVt0XTtpZihudWxsIT09a1swXSYmQS5sZWZ0LWUubDJwKGtbMF0pPFR8fG51bGwhPT1r WzFdJiZlLmwycChrWzFdKS1BLnJpZ2h0PFQpe2I9OTA7YnJlYWt9fX1iJiZ4KHYsYil9fSkp LGUuX3RpY2tBbmdsZXMmJl8ucHVzaCgoZnVuY3Rpb24oKXtlLl90aWNrQW5nbGVzW2ZdPW51 bGw9PT1iP2kobSk/bTowOmJ9KSk7dmFyIHc9ZS5fYW5jaG9yQXhpczt3JiZ3LmF1dG9yYW5n ZSYmUHQoZSkmJiFXKGEsZS5faWQpJiYoYS5faW5zaWRlVGlja0xhYmVsc0F1dG9yYW5nZXx8 KGEuX2luc2lkZVRpY2tMYWJlbHNBdXRvcmFuZ2U9e30pLGEuX2luc2lkZVRpY2tMYWJlbHNB dXRvcmFuZ2Vbdy5fbmFtZSsiLmF1dG9yYW5nZSJdPXcuYXV0b3JhbmdlLF8ucHVzaCgoZnVu Y3Rpb24oKXt2LmVhY2goKGZ1bmN0aW9uKHQscil7dmFyIG49d3QodGhpcyk7bi5zZWxlY3Qo Ii50ZXh0LW1hdGgtZ3JvdXAiKS5lbXB0eSgpJiYoZS5fdmFsc1tyXS5iYj1oLmJCb3gobi5u b2RlKCkpKX0pKX0pKSk7dmFyIFQ9cy5zeW5jT3JBc3luYyhfKTtyZXR1cm4gVCYmVC50aGVu JiZ0Ll9wcm9taXNlcy5wdXNoKFQpLFR9LEguZ2V0UHhQb3NpdGlvbj1mdW5jdGlvbih0LGUp e3ZhciByLG49dC5fZnVsbExheW91dC5fc2l6ZSxpPWUuX2lkLmNoYXJBdCgwKSxhPWUuc2lk ZTtyZXR1cm4iZnJlZSIhPT1lLmFuY2hvcj9yPWUuX2FuY2hvckF4aXM6IngiPT09aT9yPXtf b2Zmc2V0Om4udCsoMS0oZS5wb3NpdGlvbnx8MCkpKm4uaCxfbGVuZ3RoOjB9OiJ5Ij09PWkm JihyPXtfb2Zmc2V0Om4ubCsoZS5wb3NpdGlvbnx8MCkqbi53LF9sZW5ndGg6MH0pLCJ0b3Ai PT09YXx8ImxlZnQiPT09YT9yLl9vZmZzZXQ6ImJvdHRvbSI9PT1hfHwicmlnaHQiPT09YT9y Ll9vZmZzZXQrci5fbGVuZ3RoOnZvaWQgMH0sSC5zaG91bGRTaG93WmVyb0xpbmU9ZnVuY3Rp b24odCxlLHIpe3ZhciBuPXMuc2ltcGxlTWFwKGUucmFuZ2UsZS5yMmwpO3JldHVybiBuWzBd Km5bMV08PTAmJmUuemVyb2xpbmUmJigibGluZWFyIj09PWUudHlwZXx8Ii0iPT09ZS50eXBl KSYmIShlLnJhbmdlYnJlYWtzJiZlLm1hc2tCcmVha3MoMCk9PT1JKSYmKF90KGUsMCl8fCFm dW5jdGlvbih0LGUscixuKXt2YXIgaT1yLl9tYWluQXhpcztpZighaSlyZXR1cm47dmFyIGE9 dC5fZnVsbExheW91dCxvPWUuX2lkLmNoYXJBdCgwKSxzPUguY291bnRlckxldHRlcihlLl9p ZCksbD1lLl9vZmZzZXQrKE1hdGguYWJzKG5bMF0pPE1hdGguYWJzKG5bMV0pPT0oIngiPT09 byk/MDplLl9sZW5ndGgpO2Z1bmN0aW9uIGModCl7aWYoIXQuc2hvd2xpbmV8fCF0LmxpbmV3 aWR0aClyZXR1cm4hMTt2YXIgcj1NYXRoLm1heCgodC5saW5ld2lkdGgrZS56ZXJvbGluZXdp ZHRoKS8yLDEpO2Z1bmN0aW9uIG4odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZNYXRo LmFicyh0LWwpPHJ9aWYobih0Ll9tYWluTGluZVBvc2l0aW9uKXx8bih0Ll9tYWluTWlycm9y UG9zaXRpb24pKXJldHVybiEwO3ZhciBpPXQuX2xpbmVwb3NpdGlvbnN8fHt9O2Zvcih2YXIg YSBpbiBpKWlmKG4oaVthXVswXSl8fG4oaVthXVsxXSkpcmV0dXJuITB9dmFyIHU9YS5fcGxv dHNbci5fbWFpblN1YnBsb3RdO2lmKCEodS5tYWlucGxvdGluZm98fHUpLm92ZXJsYXlzLmxl bmd0aClyZXR1cm4gYyhyKTtmb3IodmFyIGY9SC5saXN0KHQscyksaD0wO2g8Zi5sZW5ndGg7 aCsrKXt2YXIgcD1mW2hdO2lmKHAuX21haW5BeGlzPT09aSYmYyhwKSlyZXR1cm4hMH19KHQs ZSxyLG4pfHxmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10Ll9mdWxsRGF0YSxuPWUuX21haW5T dWJwbG90LGk9ZS5faWQuY2hhckF0KDApLGE9MDthPHIubGVuZ3RoO2ErKyl7dmFyIHM9clth XTtpZighMD09PXMudmlzaWJsZSYmcy54YXhpcytzLnlheGlzPT09bil7aWYoby50cmFjZUlz KHMsImJhci1saWtlIikmJnMub3JpZW50YXRpb249PT17eDoiaCIseToidiJ9W2ldKXJldHVy biEwO2lmKHMuZmlsbCYmcy5maWxsLmNoYXJBdChzLmZpbGwubGVuZ3RoLTEpPT09aSlyZXR1 cm4hMH19cmV0dXJuITF9KHQsZSkpfSxILmNsaXBFbmRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJu IGUuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gX3QodCxlLngpfSkpfSxILmFsbG93QXV0 b01hcmdpbj1mdW5jdGlvbih0KXtmb3IodmFyIGU9SC5saXN0KHQsIiIsITApLHI9MDtyPGUu bGVuZ3RoO3IrKyl7dmFyIG49ZVtyXTtuLmF1dG9tYXJnaW4mJihhLmFsbG93QXV0b01hcmdp bih0LFR0KG4pKSxuLm1pcnJvciYmYS5hbGxvd0F1dG9NYXJnaW4odCxrdChuKSkpLG8uZ2V0 Q29tcG9uZW50TWV0aG9kKCJyYW5nZXNsaWRlciIsImlzVmlzaWJsZSIpKG4pJiZhLmFsbG93 QXV0b01hcmdpbih0LEF0KG4pKX19LEguc3dhcD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1m dW5jdGlvbih0LGUpe3ZhciByLG4saT1bXTtmb3Iocj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIg YT1bXSxvPXQuX2Z1bGxEYXRhW2Vbcl1dLnhheGlzLHM9dC5fZnVsbERhdGFbZVtyXV0ueWF4 aXM7aWYobyYmcyl7Zm9yKG49MDtuPGkubGVuZ3RoO24rKyktMT09PWlbbl0ueC5pbmRleE9m KG8pJiYtMT09PWlbbl0ueS5pbmRleE9mKHMpfHxhLnB1c2gobik7aWYoYS5sZW5ndGgpe3Zh ciBsLGM9aVthWzBdXTtpZihhLmxlbmd0aD4xKWZvcihuPTE7bjxhLmxlbmd0aDtuKyspbD1p W2Fbbl1dLE10KGMueCxsLngpLE10KGMueSxsLnkpO010KGMueCxbb10pLE10KGMueSxbc10p fWVsc2UgaS5wdXNoKHt4OltvXSx5OltzXX0pfX1yZXR1cm4gaX0odCxlKSxuPTA7bjxyLmxl bmd0aDtuKyspU3QodCxyW25dLngscltuXS55KX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xv ciI6MzY2LCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjM4OCwiLi4vLi4vY29tcG9uZW50 cy90aXRsZXMiOjQ2NCwiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCI6NDcxLCIuLi8uLi9j b25zdGFudHMvbnVtZXJpY2FsIjo0NzksIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9saWIvc3Zn X3RleHRfdXRpbHMiOjUyOSwiLi4vLi4vcGxvdHMvcGxvdHMiOjYxOSwiLi4vLi4vcmVnaXN0 cnkiOjYzOCwiLi9hdXRvcmFuZ2UiOjU1MywiLi9heGlzX2F1dG90eXBlIjo1NTUsIi4vYXhp c19pZHMiOjU1OCwiLi9jbGVhbl90aWNrcyI6NTYwLCIuL2xheW91dF9hdHRyaWJ1dGVzIjo1 NjksIi4vc2V0X2NvbnZlcnQiOjU3NiwiQHBsb3RseS9kMyI6NTgsImZhc3QtaXNudW1lcmlj IjoxOTB9XSw1NTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFz dC1pc251bWVyaWMiKSxpPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vY29uc3RhbnRzL251 bWVyaWNhbCIpLkJBRE5VTSxvPWkuaXNBcnJheU9yVHlwZWRBcnJheSxzPWkuaXNEYXRlVGlt ZSxsPWkuY2xlYW5OdW1iZXIsYz1NYXRoLnJvdW5kO2Z1bmN0aW9uIHUodCxlKXtyZXR1cm4g ZT9uKHQpOiJudW1iZXIiPT10eXBlb2YgdH1mdW5jdGlvbiBmKHQpe3JldHVybiBNYXRoLm1h eCgxLCh0LTEpLzFlMyl9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgaT10LGg9ci5u b011bHRpQ2F0ZWdvcnk7aWYobyhpKSYmIWkubGVuZ3RoKXJldHVybiItIjtpZighaCYmZnVu Y3Rpb24odCl7cmV0dXJuIG8odFswXSkmJm8odFsxXSl9KGkpKXJldHVybiJtdWx0aWNhdGVn b3J5IjtpZihoJiZBcnJheS5pc0FycmF5KGlbMF0pKXtmb3IodmFyIHA9W10sZD0wO2Q8aS5s ZW5ndGg7ZCsrKWlmKG8oaVtkXSkpZm9yKHZhciBtPTA7bTxpW2RdLmxlbmd0aDttKyspcC5w dXNoKGlbZF1bbV0pO2k9cH1pZihmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10Lmxlbmd0aCxp PWYociksYT0wLG89MCxsPXt9LHU9MDt1PHI7dSs9aSl7dmFyIGg9Yyh1KSxwPXRbaF0sZD1T dHJpbmcocCk7bFtkXXx8KGxbZF09MSxzKHAsZSkmJmErKyxuKHApJiZvKyspfXJldHVybiBh PjIqb30oaSxlKSlyZXR1cm4iZGF0ZSI7dmFyIGc9InN0cmljdCIhPT1yLmF1dG90eXBlbnVt YmVycztyZXR1cm4gZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGgsbj1mKHIpLGk9 MCxvPTAscz17fSx1PTA7dTxyO3UrPW4pe3ZhciBoPWModSkscD10W2hdLGQ9U3RyaW5nKHAp O2lmKCFzW2RdKXtzW2RdPTE7dmFyIG09dHlwZW9mIHA7ImJvb2xlYW4iPT09bT9vKys6KGU/ bChwKSE9PWE6Im51bWJlciI9PT1tKT9pKys6InN0cmluZyI9PT1tJiZvKyt9fXJldHVybiBv PjIqaX0oaSxnKT8iY2F0ZWdvcnkiOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQubGVuZ3Ro LG49MDtuPHI7bisrKWlmKHUodFtuXSxlKSlyZXR1cm4hMDtyZXR1cm4hMX0oaSxnKT8ibGlu ZWFyIjoiLSJ9fSx7Ii4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiOjQ3OSwiLi4vLi4vbGli Ijo1MDMsImZhc3QtaXNudW1lcmljIjoxOTB9XSw1NTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxpPXQoIi4uLy4uL3JlZ2lzdHJ5 IiksYT10KCIuLi8uLi9saWIiKSxvPXQoIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUi KSxzPXQoIi4uL2FycmF5X2NvbnRhaW5lcl9kZWZhdWx0cyIpLGw9dCgiLi9sYXlvdXRfYXR0 cmlidXRlcyIpLGM9dCgiLi90aWNrX3ZhbHVlX2RlZmF1bHRzIiksdT10KCIuL3RpY2tfbWFy a19kZWZhdWx0cyIpLGY9dCgiLi90aWNrX2xhYmVsX2RlZmF1bHRzIiksaD10KCIuL3ByZWZp eF9zdWZmaXhfZGVmYXVsdHMiKSxwPXQoIi4vY2F0ZWdvcnlfb3JkZXJfZGVmYXVsdHMiKSxk PXQoIi4vbGluZV9ncmlkX2RlZmF1bHRzIiksbT10KCIuL3NldF9jb252ZXJ0IiksZz10KCIu L2NvbnN0YW50cyIpLldFRUtEQVlfUEFUVEVSTix2PXQoIi4vY29uc3RhbnRzIikuSE9VUl9Q QVRURVJOO2Z1bmN0aW9uIHkodCxlLHIpe2Z1bmN0aW9uIGkocixuKXtyZXR1cm4gYS5jb2Vy Y2UodCxlLGwucmFuZ2VicmVha3MscixuKX1pZihpKCJlbmFibGVkIikpe3ZhciBvPWkoImJv dW5kcyIpO2lmKG8mJm8ubGVuZ3RoPj0yKXt2YXIgcyxjLHU9IiI7aWYoMj09PW8ubGVuZ3Ro KWZvcihzPTA7czwyO3MrKylpZihjPWIob1tzXSkpe3U9ZzticmVha312YXIgZj1pKCJwYXR0 ZXJuIix1KTtpZihmPT09Zylmb3Iocz0wO3M8MjtzKyspKGM9YihvW3NdKSkmJihlLmJvdW5k c1tzXT1vW3NdPWMtMSk7aWYoZilmb3Iocz0wO3M8MjtzKyspc3dpdGNoKGM9b1tzXSxmKXtj YXNlIGc6aWYoIW4oYykpcmV0dXJuIHZvaWQoZS5lbmFibGVkPSExKTtpZigoYz0rYykhPT1N YXRoLmZsb29yKGMpfHxjPDB8fGM+PTcpcmV0dXJuIHZvaWQoZS5lbmFibGVkPSExKTtlLmJv dW5kc1tzXT1vW3NdPWM7YnJlYWs7Y2FzZSB2OmlmKCFuKGMpKXJldHVybiB2b2lkKGUuZW5h YmxlZD0hMSk7aWYoKGM9K2MpPDB8fGM+MjQpcmV0dXJuIHZvaWQoZS5lbmFibGVkPSExKTtl LmJvdW5kc1tzXT1vW3NdPWN9aWYoITE9PT1yLmF1dG9yYW5nZSl7dmFyIGg9ci5yYW5nZTtp ZihoWzBdPGhbMV0pe2lmKG9bMF08aFswXSYmb1sxXT5oWzFdKXJldHVybiB2b2lkKGUuZW5h YmxlZD0hMSl9ZWxzZSBpZihvWzBdPmhbMF0mJm9bMV08aFsxXSlyZXR1cm4gdm9pZChlLmVu YWJsZWQ9ITEpfX1lbHNle3ZhciBwPWkoInZhbHVlcyIpO2lmKCFwfHwhcC5sZW5ndGgpcmV0 dXJuIHZvaWQoZS5lbmFibGVkPSExKTtpKCJkdmFsdWUiKX19fWUuZXhwb3J0cz1mdW5jdGlv bih0LGUscixuLHYpe3ZhciB4LGI9bi5sZXR0ZXIsXz1uLmZvbnR8fHt9LHc9bi5zcGxvbVN0 YXNofHx7fSxUPXIoInZpc2libGUiLCFuLnZpc2libGVEZmx0KSxrPWUuX3RlbXBsYXRlfHx7 fSxBPWUudHlwZXx8ay50eXBlfHwiLSI7ImRhdGUiPT09QSYmKGkuZ2V0Q29tcG9uZW50TWV0 aG9kKCJjYWxlbmRhcnMiLCJoYW5kbGVEZWZhdWx0cyIpKHQsZSwiY2FsZW5kYXIiLG4uY2Fs ZW5kYXIpLG4ubm9UaWNrbGFiZWxtb2RlfHwoeD1yKCJ0aWNrbGFiZWxtb2RlIikpKTt2YXIg TT0iIjtuLm5vVGlja2xhYmVscG9zaXRpb24mJiJtdWx0aWNhdGVnb3J5IiE9PUF8fChNPWEu Y29lcmNlKHQsZSx7dGlja2xhYmVscG9zaXRpb246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLGRm bHQ6Im91dHNpZGUiLHZhbHVlczoicGVyaW9kIj09PXg/WyJvdXRzaWRlIiwiaW5zaWRlIl06 IngiPT09Yj9bIm91dHNpZGUiLCJpbnNpZGUiLCJvdXRzaWRlIGxlZnQiLCJpbnNpZGUgbGVm dCIsIm91dHNpZGUgcmlnaHQiLCJpbnNpZGUgcmlnaHQiXTpbIm91dHNpZGUiLCJpbnNpZGUi LCJvdXRzaWRlIHRvcCIsImluc2lkZSB0b3AiLCJvdXRzaWRlIGJvdHRvbSIsImluc2lkZSBi b3R0b20iXX19LCJ0aWNrbGFiZWxwb3NpdGlvbiIpKSxuLm5vVGlja2xhYmVsb3ZlcmZsb3d8 fHIoInRpY2tsYWJlbG92ZXJmbG93IiwtMSE9PU0uaW5kZXhPZigiaW5zaWRlIik/ImhpZGUg cGFzdCBkb21haW4iOiJjYXRlZ29yeSI9PT1BfHwibXVsdGljYXRlZ29yeSI9PT1BPyJhbGxv dyI6ImhpZGUgcGFzdCBkaXYiKSxtKGUsdik7dmFyIFM9IWUuaXNWYWxpZFJhbmdlKHQucmFu Z2UpO1MmJm4ucmV2ZXJzZURmbHQmJihTPSJyZXZlcnNlZCIpLCFyKCJhdXRvcmFuZ2UiLFMp fHwibGluZWFyIiE9PUEmJiItIiE9PUF8fHIoInJhbmdlbW9kZSIpLHIoInJhbmdlIiksZS5j bGVhblJhbmdlKCkscCh0LGUscixuKSwiY2F0ZWdvcnkiPT09QXx8bi5ub0hvdmVyfHxyKCJo b3ZlcmZvcm1hdCIpO3ZhciBFPXIoImNvbG9yIiksTD1FIT09bC5jb2xvci5kZmx0P0U6Xy5j b2xvcixDPXcubGFiZWx8fHYuX2RmbHRUaXRsZVtiXTtpZihoKHQsZSxyLEEsbiksIVQpcmV0 dXJuIGU7cigidGl0bGUudGV4dCIsQyksYS5jb2VyY2VGb250KHIsInRpdGxlLmZvbnQiLHtm YW1pbHk6Xy5mYW1pbHksc2l6ZTphLmJpZ0ZvbnQoXy5zaXplKSxjb2xvcjpMfSksYyh0LGUs cixBKTt2YXIgUD1uLmhhc01pbm9yO2lmKFAmJihvLm5ld0NvbnRhaW5lcihlLCJtaW5vciIp LGModCxlLHIsQSx7aXNNaW5vcjohMH0pKSxmKHQsZSxyLEEsbiksdSh0LGUscixuKSxQKXt2 YXIgST1uLmlzTWlub3I7bi5pc01pbm9yPSEwLHUodCxlLHIsbiksbi5pc01pbm9yPUl9ZCh0 LGUscix7ZGZsdENvbG9yOkUsYmdDb2xvcjpuLmJnQ29sb3Isc2hvd0dyaWQ6bi5zaG93R3Jp ZCxoYXNNaW5vcjpQLGF0dHJpYnV0ZXM6bH0pLCFQfHxlLm1pbm9yLnRpY2tzfHxlLm1pbm9y LnNob3dncmlkfHxkZWxldGUgZS5taW5vciwoZS5zaG93bGluZXx8ZS50aWNrcykmJnIoIm1p cnJvciIpLG4uYXV0b21hcmdpbiYmcigiYXV0b21hcmdpbiIpO3ZhciBPLHo9Im11bHRpY2F0 ZWdvcnkiPT09QTtuLm5vVGlja3Nvbnx8ImNhdGVnb3J5IiE9PUEmJiF6fHwhZS50aWNrcyYm IWUuc2hvd2dyaWR8fCh6JiYoTz0iYm91bmRhcmllcyIpLCJib3VuZGFyaWVzIj09PXIoInRp Y2tzb24iLE8pJiZkZWxldGUgZS50aWNrbGFiZWxwb3NpdGlvbik7eiYmKHIoInNob3dkaXZp ZGVycyIpJiYocigiZGl2aWRlcmNvbG9yIikscigiZGl2aWRlcndpZHRoIikpKTtpZigiZGF0 ZSI9PT1BKWlmKHModCxlLHtuYW1lOiJyYW5nZWJyZWFrcyIsaW5jbHVzaW9uQXR0cjoiZW5h YmxlZCIsaGFuZGxlSXRlbURlZmF1bHRzOnl9KSxlLnJhbmdlYnJlYWtzLmxlbmd0aCl7Zm9y KHZhciBEPTA7RDxlLnJhbmdlYnJlYWtzLmxlbmd0aDtEKyspaWYoZS5yYW5nZWJyZWFrc1tE XS5wYXR0ZXJuPT09Zyl7ZS5faGFzRGF5T2ZXZWVrQnJlYWtzPSEwO2JyZWFrfWlmKG0oZSx2 KSx2Ll9oYXMoInNjYXR0ZXJnbCIpfHx2Ll9oYXMoInNwbG9tIikpZm9yKHZhciBSPTA7Ujxu LmRhdGEubGVuZ3RoO1IrKyl7dmFyIEY9bi5kYXRhW1JdOyJzY2F0dGVyZ2wiIT09Ri50eXBl JiYic3Bsb20iIT09Ri50eXBlfHwoRi52aXNpYmxlPSExLGEud2FybihGLnR5cGUrIiB0cmFj ZXMgZG8gbm90IHdvcmsgb24gYXhlcyB3aXRoIHJhbmdlYnJlYWtzLiBTZXR0aW5nIHRyYWNl ICIrRi5pbmRleCsiIHRvIGB2aXNpYmxlOiBmYWxzZWAuIikpfX1lbHNlIGRlbGV0ZSBlLnJh bmdlYnJlYWtzO3JldHVybiBlfTt2YXIgeD17c3VuOjEsbW9uOjIsdHVlOjMsd2VkOjQsdGh1 OjUsZnJpOjYsc2F0Ojd9O2Z1bmN0aW9uIGIodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJl dHVybiB4W3Quc3Vic3RyKDAsMykudG9Mb3dlckNhc2UoKV19fSx7Ii4uLy4uL2xpYiI6NTAz LCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIjo1NDMsIi4uLy4uL3JlZ2lzdHJ5Ijo2 MzgsIi4uL2FycmF5X2NvbnRhaW5lcl9kZWZhdWx0cyI6NTQ5LCIuL2NhdGVnb3J5X29yZGVy X2RlZmF1bHRzIjo1NTksIi4vY29uc3RhbnRzIjo1NjEsIi4vbGF5b3V0X2F0dHJpYnV0ZXMi OjU2OSwiLi9saW5lX2dyaWRfZGVmYXVsdHMiOjU3MSwiLi9wcmVmaXhfc3VmZml4X2RlZmF1 bHRzIjo1NzMsIi4vc2V0X2NvbnZlcnQiOjU3NiwiLi90aWNrX2xhYmVsX2RlZmF1bHRzIjo1 NzgsIi4vdGlja19tYXJrX2RlZmF1bHRzIjo1NzksIi4vdGlja192YWx1ZV9kZWZhdWx0cyI6 NTgwLCJmYXN0LWlzbnVtZXJpYyI6MTkwfV0sNTU3OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbnN0YW50cy9kb2NzIiksaT1uLkZPUk1BVF9MSU5L LGE9bi5EQVRFX0ZPUk1BVF9MSU5LO2Z1bmN0aW9uIG8odCxlKXtyZXR1cm5bIlNldHMgdGhl ICIrdCsiIGZvcm1hdHRpbmcgcnVsZSIrKGU/ImZvciBgIitlKyJgICI6IiIpLCJ1c2luZyBk MyBmb3JtYXR0aW5nIG1pbmktbGFuZ3VhZ2VzIiwid2hpY2ggYXJlIHZlcnkgc2ltaWxhciB0 byB0aG9zZSBpbiBQeXRob24uIEZvciBudW1iZXJzLCBzZWU6ICIraSsiLiJdLmpvaW4oIiAi KX1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuIG8odCxlKStbIiBBbmQgZm9yIGRhdGVzIHNlZTog IithKyIuIiwiV2UgYWRkIHR3byBpdGVtcyB0byBkMydzIGRhdGUgZm9ybWF0dGVyOiIsIiol aCogZm9yIGhhbGYgb2YgdGhlIHllYXIgYXMgYSBkZWNpbWFsIG51bWJlciBhcyB3ZWxsIGFz IiwiKiV7bn1mKiBmb3IgZnJhY3Rpb25hbCBzZWNvbmRzIiwid2l0aCBuIGRpZ2l0cy4gRm9y IGV4YW1wbGUsICoyMDE2LTEwLTEzIDA5OjE1OjIzLjQ1Niogd2l0aCB0aWNrZm9ybWF0Iiwi KiVIfiVNfiVTLiUyZiogd291bGQgZGlzcGxheSAqMDl+MTV+MjMuNDYqIl0uam9pbigiICIp fWUuZXhwb3J0cz17YXhpc0hvdmVyRm9ybWF0OmZ1bmN0aW9uKHQsZSl7cmV0dXJue3ZhbFR5 cGU6InN0cmluZyIsZGZsdDoiIixlZGl0VHlwZToibm9uZSIsZGVzY3JpcHRpb246KGU/bzpz KSgiaG92ZXIgdGV4dCIsdCkrWyJCeSBkZWZhdWx0IHRoZSB2YWx1ZXMgYXJlIGZvcm1hdHRl ZCB1c2luZyAiKyhlPyJnZW5lcmljIG51bWJlciBmb3JtYXQiOiJgIit0KyJheGlzLmhvdmVy Zm9ybWF0YCIpKyIuIl0uam9pbigiICIpfX0sZGVzY3JpcHRpb25Pbmx5TnVtYmVyczpvLGRl c2NyaXB0aW9uV2l0aERhdGVzOnN9fSx7Ii4uLy4uL2NvbnN0YW50cy9kb2NzIjo0NzR9XSw1 NTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcmVnaXN0 cnkiKSxpPXQoIi4vY29uc3RhbnRzIik7ZnVuY3Rpb24gYSh0LGUpe2lmKGUmJmUubGVuZ3Ro KWZvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKWlmKGVbcl1bdF0pcmV0dXJuITA7cmV0dXJu ITF9ci5pZDJuYW1lPWZ1bmN0aW9uKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdCYmdC5tYXRj aChpLkFYX0lEX1BBVFRFUk4pKXt2YXIgZT10LnNwbGl0KCIgIilbMF0uc3Vic3RyKDEpO3Jl dHVybiIxIj09PWUmJihlPSIiKSx0LmNoYXJBdCgwKSsiYXhpcyIrZX19LHIubmFtZTJpZD1m dW5jdGlvbih0KXtpZih0Lm1hdGNoKGkuQVhfTkFNRV9QQVRURVJOKSl7dmFyIGU9dC5zdWJz dHIoNSk7cmV0dXJuIjEiPT09ZSYmKGU9IiIpLHQuY2hhckF0KDApK2V9fSxyLmNsZWFuSWQ9 ZnVuY3Rpb24odCxlLHIpe3ZhciBuPS8oIGRvbWFpbikkLy50ZXN0KHQpO2lmKCJzdHJpbmci PT10eXBlb2YgdCYmdC5tYXRjaChpLkFYX0lEX1BBVFRFUk4pJiYoIWV8fHQuY2hhckF0KDAp PT09ZSkmJighbnx8cikpe3ZhciBhPXQuc3BsaXQoIiAiKVswXS5zdWJzdHIoMSkucmVwbGFj ZSgvXjArLywiIik7cmV0dXJuIjEiPT09YSYmKGE9IiIpLHQuY2hhckF0KDApK2ErKG4mJnI/ IiBkb21haW4iOiIiKX19LHIubGlzdD1mdW5jdGlvbih0LGUsbil7dmFyIGk9dC5fZnVsbExh eW91dDtpZighaSlyZXR1cm5bXTt2YXIgYSxvPXIubGlzdElkcyh0LGUpLHM9bmV3IEFycmF5 KG8ubGVuZ3RoKTtmb3IoYT0wO2E8by5sZW5ndGg7YSsrKXt2YXIgbD1vW2FdO3NbYV09aVts LmNoYXJBdCgwKSsiYXhpcyIrbC5zdWJzdHIoMSldfWlmKCFuKXt2YXIgYz1pLl9zdWJwbG90 cy5nbDNkfHxbXTtmb3IoYT0wO2E8Yy5sZW5ndGg7YSsrKXt2YXIgdT1pW2NbYV1dO2U/cy5w dXNoKHVbZSsiYXhpcyJdKTpzLnB1c2godS54YXhpcyx1LnlheGlzLHUuemF4aXMpfX1yZXR1 cm4gc30sci5saXN0SWRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5fZnVsbExheW91dDtpZigh cilyZXR1cm5bXTt2YXIgbj1yLl9zdWJwbG90cztyZXR1cm4gZT9uW2UrImF4aXMiXTpuLnhh eGlzLmNvbmNhdChuLnlheGlzKX0sci5nZXRGcm9tSWQ9ZnVuY3Rpb24odCxlLG4pe3ZhciBp PXQuX2Z1bGxMYXlvdXQ7cmV0dXJuIGU9dm9pZCAwPT09ZXx8InN0cmluZyIhPXR5cGVvZiBl P2U6ZS5yZXBsYWNlKCIgZG9tYWluIiwiIiksIngiPT09bj9lPWUucmVwbGFjZSgveVswLTld Ki8sIiIpOiJ5Ij09PW4mJihlPWUucmVwbGFjZSgveFswLTldKi8sIiIpKSxpW3IuaWQybmFt ZShlKV19LHIuZ2V0RnJvbVRyYWNlPWZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10Ll9mdWxsTGF5 b3V0LG89bnVsbDtpZihuLnRyYWNlSXMoZSwiZ2wzZCIpKXt2YXIgcz1lLnNjZW5lOyJzY2Vu ZSI9PT1zLnN1YnN0cigwLDUpJiYobz1hW3NdW2krImF4aXMiXSl9ZWxzZSBvPXIuZ2V0RnJv bUlkKHQsZVtpKyJheGlzIl18fGkpO3JldHVybiBvfSxyLmlkU29ydD1mdW5jdGlvbih0LGUp e3ZhciByPXQuY2hhckF0KDApLG49ZS5jaGFyQXQoMCk7cmV0dXJuIHIhPT1uP3I+bj8xOi0x OisodC5zdWJzdHIoMSl8fDEpLSsoZS5zdWJzdHIoMSl8fDEpfSxyLnJlZjJpZD1mdW5jdGlv bih0KXtyZXR1cm4hIS9eW3h5el0vLnRlc3QodCkmJnQuc3BsaXQoIiAiKVswXX0sci5pc0xp bmtlZD1mdW5jdGlvbih0LGUpe3JldHVybiBhKGUsdC5fYXhpc01hdGNoR3JvdXBzKXx8YShl LHQuX2F4aXNDb25zdHJhaW50R3JvdXBzKX19LHsiLi4vLi4vcmVnaXN0cnkiOjYzOCwiLi9j b25zdGFudHMiOjU2MX1dLDU1OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4 cG9ydHM9ZnVuY3Rpb24odCxlLHIsbil7aWYoImNhdGVnb3J5Ij09PWUudHlwZSl7dmFyIGks YT10LmNhdGVnb3J5YXJyYXksbz1BcnJheS5pc0FycmF5KGEpJiZhLmxlbmd0aD4wO28mJihp PSJhcnJheSIpO3ZhciBzLGw9cigiY2F0ZWdvcnlvcmRlciIsaSk7ImFycmF5Ij09PWwmJihz PXIoImNhdGVnb3J5YXJyYXkiKSksb3x8ImFycmF5IiE9PWx8fChsPWUuY2F0ZWdvcnlvcmRl cj0idHJhY2UiKSwidHJhY2UiPT09bD9lLl9pbml0aWFsQ2F0ZWdvcmllcz1bXToiYXJyYXki PT09bD9lLl9pbml0aWFsQ2F0ZWdvcmllcz1zLnNsaWNlKCk6KHM9ZnVuY3Rpb24odCxlKXt2 YXIgcixuLGksYT1lLmRhdGFBdHRyfHx0Ll9pZC5jaGFyQXQoMCksbz17fTtpZihlLmF4RGF0 YSlyPWUuYXhEYXRhO2Vsc2UgZm9yKHI9W10sbj0wO248ZS5kYXRhLmxlbmd0aDtuKyspe3Zh ciBzPWUuZGF0YVtuXTtzW2ErImF4aXMiXT09PXQuX2lkJiZyLnB1c2gocyl9Zm9yKG49MDtu PHIubGVuZ3RoO24rKyl7dmFyIGw9cltuXVthXTtmb3IoaT0wO2k8bC5sZW5ndGg7aSsrKXt2 YXIgYz1sW2ldO251bGwhPWMmJihvW2NdPTEpfX1yZXR1cm4gT2JqZWN0LmtleXMobyl9KGUs bikuc29ydCgpLCJjYXRlZ29yeSBhc2NlbmRpbmciPT09bD9lLl9pbml0aWFsQ2F0ZWdvcmll cz1zOiJjYXRlZ29yeSBkZXNjZW5kaW5nIj09PWwmJihlLl9pbml0aWFsQ2F0ZWdvcmllcz1z LnJldmVyc2UoKSkpfX19LHt9XSw1NjA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxpPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4v Y29uc3RhbnRzL251bWVyaWNhbCIpLG89YS5PTkVEQVkscz1hLk9ORVdFRUs7ci5kdGljaz1m dW5jdGlvbih0LGUpe3ZhciByPSJsb2ciPT09ZSxpPSJkYXRlIj09PWUsYT0iY2F0ZWdvcnki PT09ZSxzPWk/bzoxO2lmKCF0KXJldHVybiBzO2lmKG4odCkpcmV0dXJuKHQ9TnVtYmVyKHQp KTw9MD9zOmE/TWF0aC5tYXgoMSxNYXRoLnJvdW5kKHQpKTppP01hdGgubWF4KC4xLHQpOnQ7 aWYoInN0cmluZyIhPXR5cGVvZiB0fHwhaSYmIXIpcmV0dXJuIHM7dmFyIGw9dC5jaGFyQXQo MCksYz10LnN1YnN0cigxKTtyZXR1cm4oYz1uKGMpP051bWJlcihjKTowKTw9MHx8IShpJiYi TSI9PT1sJiZjPT09TWF0aC5yb3VuZChjKXx8ciYmIkwiPT09bHx8ciYmIkQiPT09bCYmKDE9 PT1jfHwyPT09YykpP3M6dH0sci50aWNrMD1mdW5jdGlvbih0LGUscixhKXtyZXR1cm4iZGF0 ZSI9PT1lP2kuY2xlYW5EYXRlKHQsaS5kYXRlVGljazAocixhJXM9PTA/MTowKSk6IkQxIiE9 PWEmJiJEMiIhPT1hP24odCk/TnVtYmVyKHQpOjA6dm9pZCAwfX0seyIuLi8uLi9jb25zdGFu dHMvbnVtZXJpY2FsIjo0NzksIi4uLy4uL2xpYiI6NTAzLCJmYXN0LWlzbnVtZXJpYyI6MTkw fV0sNTYxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xp Yi9yZWdleCIpLmNvdW50ZXI7ZS5leHBvcnRzPXtpZFJlZ2V4Ont4Om4oIngiLCIoIGRvbWFp bik/IikseTpuKCJ5IiwiKCBkb21haW4pPyIpfSxhdHRyUmVnZXg6bigiW3h5XWF4aXMiKSx4 QXhpc01hdGNoOm4oInhheGlzIikseUF4aXNNYXRjaDpuKCJ5YXhpcyIpLEFYX0lEX1BBVFRF Uk46L15beHl6XVswLTldKiggZG9tYWluKT8kLyxBWF9OQU1FX1BBVFRFUk46L15beHl6XWF4 aXNbMC05XSokLyxTVUJQTE9UX1BBVFRFUk46L154KFswLTldKil5KFswLTldKikkLyxIT1VS X1BBVFRFUk46ImhvdXIiLFdFRUtEQVlfUEFUVEVSTjoiZGF5IG9mIHdlZWsiLE1JTkRSQUc6 OCxNSU5TRUxFQ1Q6MTIsTUlOWk9PTToyMCxEUkFHR0VSU0laRToyMCxCRU5EUFg6MS41LFJF RFJBV0RFTEFZOjUwLFNFTEVDVERFTEFZOjEwMCxTRUxFQ1RJRDoiLXNlbGVjdCIsREZMVFJB TkdFWDpbLTEsNl0sREZMVFJBTkdFWTpbLTEsNF0sdHJhY2VMYXllckNsYXNzZXM6WyJpbWFn ZWxheWVyIiwiaGVhdG1hcGxheWVyIiwiY29udG91cmNhcnBldGxheWVyIiwiY29udG91cmxh eWVyIiwiZnVubmVsbGF5ZXIiLCJ3YXRlcmZhbGxsYXllciIsImJhcmxheWVyIiwiY2FycGV0 bGF5ZXIiLCJ2aW9saW5sYXllciIsImJveGxheWVyIiwib2hsY2xheWVyIiwic2NhdHRlcmNh cnBldGxheWVyIiwic2NhdHRlcmxheWVyIl0sY2xpcE9uQXhpc0ZhbHNlUXVlcnk6WyIuc2Nh dHRlcmxheWVyIiwiLmJhcmxheWVyIiwiLmZ1bm5lbGxheWVyIiwiLndhdGVyZmFsbGxheWVy Il0sbGF5ZXJWYWx1ZTJsYXllckNsYXNzOnsiYWJvdmUgdHJhY2VzIjoiYWJvdmUiLCJiZWxv dyB0cmFjZXMiOiJiZWxvdyJ9fX0seyIuLi8uLi9saWIvcmVnZXgiOjUyMH1dLDU2MjpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4v YXV0b3JhbmdlIiksYT10KCIuL2F4aXNfaWRzIikuaWQybmFtZSxvPXQoIi4vbGF5b3V0X2F0 dHJpYnV0ZXMiKSxzPXQoIi4vc2NhbGVfem9vbSIpLGw9dCgiLi9zZXRfY29udmVydCIpLGM9 dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkFMTU9TVF9FUVVBTCx1PXQoIi4uLy4u L2NvbnN0YW50cy9hbGlnbm1lbnQiKS5GUk9NX0JMO2Z1bmN0aW9uIGYodCxlLHIpe3ZhciBp PXIuYXhJZHMscz1yLmxheW91dE91dCxsPXIuaGFzSW1hZ2UsYz1zLl9heGlzQ29uc3RyYWlu dEdyb3Vwcyx1PXMuX2F4aXNNYXRjaEdyb3VwcyxmPWUuX2lkLG09Zi5jaGFyQXQoMCksZz0o KHMuX3NwbG9tQXhlc3x8e30pW21dfHx7fSlbZl18fHt9LHY9ZS5faWQseT0ieCI9PT12LmNo YXJBdCgwKTtmdW5jdGlvbiB4KHIsaSl7cmV0dXJuIG4uY29lcmNlKHQsZSxvLHIsaSl9ZS5f bWF0Y2hHcm91cD1udWxsLGUuX2NvbnN0cmFpbnRHcm91cD1udWxsLHgoImNvbnN0cmFpbiIs bD8iZG9tYWluIjoicmFuZ2UiKSxuLmNvZXJjZSh0LGUse2NvbnN0cmFpbnRvd2FyZDp7dmFs VHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOnk/WyJsZWZ0IiwiY2VudGVyIiwicmlnaHQiXTpb ImJvdHRvbSIsIm1pZGRsZSIsInRvcCJdLGRmbHQ6eT8iY2VudGVyIjoibWlkZGxlIn19LCJj b25zdHJhaW50b3dhcmQiKTt2YXIgYixfLHc9ZS50eXBlLFQ9W107Zm9yKGI9MDtiPGkubGVu Z3RoO2IrKyl7aWYoKF89aVtiXSkhPT12KXNbYShfKV0udHlwZT09PXcmJlQucHVzaChfKX12 YXIgaz1wKGMsdik7aWYoayl7dmFyIEE9W107Zm9yKGI9MDtiPFQubGVuZ3RoO2IrKylrW189 VFtiXV18fEEucHVzaChfKTtUPUF9dmFyIE0sUyxFPVQubGVuZ3RoO0UmJih0Lm1hdGNoZXN8 fGcubWF0Y2hlcykmJihNPW4uY29lcmNlKHQsZSx7bWF0Y2hlczp7dmFsVHlwZToiZW51bWVy YXRlZCIsdmFsdWVzOlQsZGZsdDotMSE9PVQuaW5kZXhPZihnLm1hdGNoZXMpP2cubWF0Y2hl czp2b2lkIDB9fSwibWF0Y2hlcyIpKTt2YXIgTD1sJiYheT9lLmFuY2hvcjp2b2lkIDA7aWYo RSYmIU0mJih0LnNjYWxlYW5jaG9yfHxMKSYmKFM9bi5jb2VyY2UodCxlLHtzY2FsZWFuY2hv cjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlR9fSwic2NhbGVhbmNob3IiLEwpKSxN KXtlLl9tYXRjaEdyb3VwPWQodSx2LE0sMSk7dmFyIEM9c1thKE0pXSxQPWgocyxlKS9oKHMs Qyk7eSE9PSgieCI9PT1NLmNoYXJBdCgwKSkmJihQPSh5PyJ4IjoieSIpK1ApLGQoYyx2LE0s UCl9ZWxzZSB0Lm1hdGNoZXMmJi0xIT09aS5pbmRleE9mKHQubWF0Y2hlcykmJm4ud2Fybigi aWdub3JlZCAiK2UuX25hbWUrJy5tYXRjaGVzOiAiJyt0Lm1hdGNoZXMrJyIgdG8gYXZvaWQg YW4gaW5maW5pdGUgbG9vcCcpO2lmKFMpe3ZhciBJPXgoInNjYWxlcmF0aW8iKTtJfHwoST1l LnNjYWxlcmF0aW89MSksZChjLHYsUyxJKX1lbHNlIHQuc2NhbGVhbmNob3ImJi0xIT09aS5p bmRleE9mKHQuc2NhbGVhbmNob3IpJiZuLndhcm4oImlnbm9yZWQgIitlLl9uYW1lKycuc2Nh bGVhbmNob3I6ICInK3Quc2NhbGVhbmNob3IrJyIgdG8gYXZvaWQgZWl0aGVyIGFuIGluZmlu aXRlIGxvb3AgYW5kIHBvc3NpYmx5IGluY29uc2lzdGVudCBzY2FsZXJhdGlvcywgb3IgYmVj YXVzZSB0aGlzIGF4aXMgZGVjbGFyZXMgYSAqbWF0Y2hlcyogY29uc3RyYWludC4nKX1mdW5j dGlvbiBoKHQsZSl7dmFyIHI9ZS5kb21haW47cmV0dXJuIHJ8fChyPXRbYShlLm92ZXJsYXlp bmcpXS5kb21haW4pLHJbMV0tclswXX1mdW5jdGlvbiBwKHQsZSl7Zm9yKHZhciByPTA7cjx0 Lmxlbmd0aDtyKyspaWYodFtyXVtlXSlyZXR1cm4gdFtyXTtyZXR1cm4gbnVsbH1mdW5jdGlv biBkKHQsZSxyLG4pe3ZhciBpLGEsbyxzLGwsYz1wKHQsZSk7bnVsbD09PWM/KChjPXt9KVtl XT0xLGw9dC5sZW5ndGgsdC5wdXNoKGMpKTpsPXQuaW5kZXhPZihjKTt2YXIgdT1PYmplY3Qu a2V5cyhjKTtmb3IoaT0wO2k8dC5sZW5ndGg7aSsrKWlmKG89dFtpXSxpIT09bCYmb1tyXSl7 dmFyIGY9b1tyXTtmb3IoYT0wO2E8dS5sZW5ndGg7YSsrKW9bcz11W2FdXT1tKGYsbShuLGNb c10pKTtyZXR1cm4gdm9pZCB0LnNwbGljZShsLDEpfWlmKDEhPT1uKWZvcihhPTA7YTx1Lmxl bmd0aDthKyspe3ZhciBoPXVbYV07Y1toXT1tKG4sY1toXSl9Y1tyXT0xfWZ1bmN0aW9uIG0o dCxlKXt2YXIgcixuLGk9IiIsYT0iIjsic3RyaW5nIj09dHlwZW9mIHQmJihyPShpPXQubWF0 Y2goL15beHldKi8pWzBdKS5sZW5ndGgsdD0rdC5zdWJzdHIocikpLCJzdHJpbmciPT10eXBl b2YgZSYmKG49KGE9ZS5tYXRjaCgvXlt4eV0qLylbMF0pLmxlbmd0aCxlPStlLnN1YnN0cihu KSk7dmFyIG89dCplO3JldHVybiByfHxuP3ImJm4mJmkuY2hhckF0KDApIT09YS5jaGFyQXQo MCk/cj09PW4/bzoocj5uP2kuc3Vic3RyKG4pOmEuc3Vic3RyKHIpKStvOmkrYSt0KmU6b31m dW5jdGlvbiBnKHQsZSl7Zm9yKHZhciByPWUuX3NpemUsbj1yLmgvci53LGk9e30sYT1PYmpl Y3Qua2V5cyh0KSxvPTA7bzxhLmxlbmd0aDtvKyspe3ZhciBzPWFbb10sbD10W3NdO2lmKCJz dHJpbmciPT10eXBlb2YgbCl7dmFyIGM9bC5tYXRjaCgvXlt4eV0qLylbMF0sdT1jLmxlbmd0 aDtsPStsLnN1YnN0cih1KTtmb3IodmFyIGY9InkiPT09Yy5jaGFyQXQoMCk/bjoxL24saD0w O2g8dTtoKyspbCo9Zn1pW3NdPWx9cmV0dXJuIGl9ZnVuY3Rpb24gdih0LGUpe3ZhciByPXQu X2lucHV0RG9tYWluLG49dVt0LmNvbnN0cmFpbnRvd2FyZF0saT1yWzBdKyhyWzFdLXJbMF0p Km47dC5kb21haW49dC5faW5wdXQuZG9tYWluPVtpKyhyWzBdLWkpL2UsaSsoclsxXS1pKS9l XSx0LnNldFNjYWxlKCl9ci5oYW5kbGVEZWZhdWx0cz1mdW5jdGlvbih0LGUscil7dmFyIGks byxzLGMsdSxoLHAsZCxtPXIuYXhJZHMsZz1yLmF4SGFzSW1hZ2Usdj1lLl9heGlzQ29uc3Ry YWludEdyb3Vwcz1bXSx5PWUuX2F4aXNNYXRjaEdyb3Vwcz1bXTtmb3IoaT0wO2k8bS5sZW5n dGg7aSsrKWYodT10W2M9YShtW2ldKV0saD1lW2NdLHtheElkczptLGxheW91dE91dDplLGhh c0ltYWdlOmdbY119KTtmdW5jdGlvbiB4KHQscil7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKylm b3IocyBpbiBvPXRbaV0pZVthKHMpXVtyXT1vfWZvcih4KHksIl9tYXRjaEdyb3VwIiksaT0w O2k8di5sZW5ndGg7aSsrKWZvcihzIGluIG89dltpXSlpZigoaD1lW2EocyldKS5maXhlZHJh bmdlKXtmb3IodmFyIGIgaW4gbyl7dmFyIF89YShiKTshMT09PSh0W19dfHx7fSkuZml4ZWRy YW5nZSYmbi53YXJuKCJmaXhlZHJhbmdlIHdhcyBzcGVjaWZpZWQgYXMgZmFsc2UgZm9yIGF4 aXMgIitfKyIgYnV0IHdhcyBvdmVycmlkZGVuIGJlY2F1c2UgYW5vdGhlciBheGlzIGluIGl0 cyBjb25zdHJhaW50IGdyb3VwIGhhcyBmaXhlZHJhbmdlIHRydWUiKSxlW19dLmZpeGVkcmFu Z2U9ITB9YnJlYWt9Zm9yKGk9MDtpPHYubGVuZ3RoOyl7Zm9yKHMgaW4gbz12W2ldKXsoaD1l W2EocyldKS5fbWF0Y2hHcm91cCYmT2JqZWN0LmtleXMoaC5fbWF0Y2hHcm91cCkubGVuZ3Ro PT09T2JqZWN0LmtleXMobykubGVuZ3RoJiYodi5zcGxpY2UoaSwxKSxpLS0pO2JyZWFrfWkr K314KHYsIl9jb25zdHJhaW50R3JvdXAiKTt2YXIgdz1bImNvbnN0cmFpbiIsInJhbmdlIiwi YXV0b3JhbmdlIiwicmFuZ2Vtb2RlIiwicmFuZ2VicmVha3MiLCJjYXRlZ29yeW9yZGVyIiwi Y2F0ZWdvcnlhcnJheSJdLFQ9ITEsaz0hMTtmdW5jdGlvbiBBKCl7ZD1oW3BdLCJyYW5nZWJy ZWFrcyI9PT1wJiYoaz1oLl9oYXNEYXlPZldlZWtCcmVha3MpfWZvcihpPTA7aTx5Lmxlbmd0 aDtpKyspe289eVtpXTtmb3IodmFyIE09MDtNPHcubGVuZ3RoO00rKyl7dmFyIFM7Zm9yKHMg aW4gcD13W01dLGQ9bnVsbCxvKWlmKHU9dFtjPWEocyldLGg9ZVtjXSxwIGluIGgpe2lmKCFo Lm1hdGNoZXMmJihTPWgscCBpbiB1KSl7QSgpO2JyZWFrfW51bGw9PT1kJiZwIGluIHUmJkEo KX1pZigicmFuZ2UiPT09cCYmZCYmKFQ9ITApLCJhdXRvcmFuZ2UiPT09cCYmbnVsbD09PWQm JlQmJihkPSExKSxudWxsPT09ZCYmcCBpbiBTJiYoZD1TW3BdKSxudWxsIT09ZClmb3IocyBp biBvKShoPWVbYShzKV0pW3BdPSJyYW5nZSI9PT1wP2Quc2xpY2UoKTpkLCJyYW5nZWJyZWFr cyI9PT1wJiYoaC5faGFzRGF5T2ZXZWVrQnJlYWtzPWssbChoLGUpKX19fSxyLmVuZm9yY2U9 ZnVuY3Rpb24odCl7dmFyIGUscixuLG8sbCx1LGYsaCxwPXQuX2Z1bGxMYXlvdXQsZD1wLl9h eGlzQ29uc3RyYWludEdyb3Vwc3x8W107Zm9yKGU9MDtlPGQubGVuZ3RoO2UrKyl7bj1nKGRb ZV0scCk7dmFyIG09T2JqZWN0LmtleXMobikseT0xLzAseD0wLGI9MS8wLF89e30sdz17fSxU PSExO2ZvcihyPTA7cjxtLmxlbmd0aDtyKyspd1tvPW1bcl1dPWw9cFthKG8pXSxsLl9pbnB1 dERvbWFpbj9sLmRvbWFpbj1sLl9pbnB1dERvbWFpbi5zbGljZSgpOmwuX2lucHV0RG9tYWlu PWwuZG9tYWluLnNsaWNlKCksbC5faW5wdXRSYW5nZXx8KGwuX2lucHV0UmFuZ2U9bC5yYW5n ZS5zbGljZSgpKSxsLnNldFNjYWxlKCksX1tvXT11PU1hdGguYWJzKGwuX20pL25bb10seT1N YXRoLm1pbih5LHUpLCJkb21haW4iIT09bC5jb25zdHJhaW4mJmwuX2NvbnN0cmFpbnRTaHJp bmthYmxlfHwoYj1NYXRoLm1pbihiLHUpKSxkZWxldGUgbC5fY29uc3RyYWludFNocmlua2Fi bGUseD1NYXRoLm1heCh4LHUpLCJkb21haW4iPT09bC5jb25zdHJhaW4mJihUPSEwKTtpZigh KHk+Yyp4KXx8VClmb3Iocj0wO3I8bS5sZW5ndGg7cisrKWlmKHU9X1tvPW1bcl1dLGY9KGw9 d1tvXSkuY29uc3RyYWluLHUhPT1ifHwiZG9tYWluIj09PWYpaWYoaD11L2IsInJhbmdlIj09 PWYpcyhsLGgpO2Vsc2V7dmFyIGs9bC5faW5wdXREb21haW4sQT0obC5kb21haW5bMV0tbC5k b21haW5bMF0pLyhrWzFdLWtbMF0pLE09KGwucjJsKGwucmFuZ2VbMV0pLWwucjJsKGwucmFu Z2VbMF0pKS8obC5yMmwobC5faW5wdXRSYW5nZVsxXSktbC5yMmwobC5faW5wdXRSYW5nZVsw XSkpO2lmKChoLz1BKSpNPDEpe2wuZG9tYWluPWwuX2lucHV0LmRvbWFpbj1rLnNsaWNlKCks cyhsLGgpO2NvbnRpbnVlfWlmKE08MSYmKGwucmFuZ2U9bC5faW5wdXQucmFuZ2U9bC5faW5w dXRSYW5nZS5zbGljZSgpLGgqPU0pLGwuYXV0b3JhbmdlKXt2YXIgUz1sLnIybChsLnJhbmdl WzBdKSxFPWwucjJsKGwucmFuZ2VbMV0pLEw9KFMrRSkvMixDPUwsUD1MLEk9TWF0aC5hYnMo RS1MKSxPPUwtSSpoKjEuMDAwMSx6PUwrSSpoKjEuMDAwMSxEPWkubWFrZVBhZEZuKHAsbCww KSxSPWkubWFrZVBhZEZuKHAsbCwxKTt2KGwsaCk7dmFyIEYsQixOPU1hdGguYWJzKGwuX20p LGo9aS5jb25jYXRFeHRyZW1lcyh0LGwpLFU9ai5taW4sVj1qLm1heDtmb3IoQj0wO0I8VS5s ZW5ndGg7QisrKShGPVVbQl0udmFsLUQoVVtCXSkvTik+TyYmRjxDJiYoQz1GKTtmb3IoQj0w O0I8Vi5sZW5ndGg7QisrKShGPVZbQl0udmFsK1IoVltCXSkvTik8eiYmRj5QJiYoUD1GKTto Lz0oUC1DKS8oMipJKSxDPWwubDJyKEMpLFA9bC5sMnIoUCksbC5yYW5nZT1sLl9pbnB1dC5y YW5nZT1TPEU/W0MsUF06W1AsQ119dihsLGgpfX19LHIuZ2V0QXhpc0dyb3VwPWZ1bmN0aW9u KHQsZSl7Zm9yKHZhciByPXQuX2F4aXNNYXRjaEdyb3VwcyxuPTA7bjxyLmxlbmd0aDtuKysp e2lmKHJbbl1bZV0pcmV0dXJuImciK259cmV0dXJuIGV9LHIuY2xlYW49ZnVuY3Rpb24odCxl KXtpZihlLl9pbnB1dERvbWFpbil7Zm9yKHZhciByPSExLG49ZS5faWQsaT10Ll9mdWxsTGF5 b3V0Ll9heGlzQ29uc3RyYWludEdyb3VwcyxhPTA7YTxpLmxlbmd0aDthKyspaWYoaVthXVtu XSl7cj0hMDticmVha31yJiYiZG9tYWluIj09PWUuY29uc3RyYWlufHwoZS5faW5wdXQuZG9t YWluPWUuZG9tYWluPWUuX2lucHV0RG9tYWluLGRlbGV0ZSBlLl9pbnB1dERvbWFpbil9fX0s eyIuLi8uLi9jb25zdGFudHMvYWxpZ25tZW50Ijo0NzEsIi4uLy4uL2NvbnN0YW50cy9udW1l cmljYWwiOjQ3OSwiLi4vLi4vbGliIjo1MDMsIi4vYXV0b3JhbmdlIjo1NTMsIi4vYXhpc19p ZHMiOjU1OCwiLi9sYXlvdXRfYXR0cmlidXRlcyI6NTY5LCIuL3NjYWxlX3pvb20iOjU3NCwi Li9zZXRfY29udmVydCI6NTc2fV0sNTYzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoIkBwbG90bHkvZDMiKSxpPXQoIi4uLy4uL2xpYiIpLGE9aS5udW1iZXJGb3Jt YXQsbz10KCJ0aW55Y29sb3IyIikscz10KCJoYXMtcGFzc2l2ZS1ldmVudHMiKSxsPXQoIi4u Ly4uL3JlZ2lzdHJ5IiksYz1pLnN0clRyYW5zbGF0ZSx1PXQoIi4uLy4uL2xpYi9zdmdfdGV4 dF91dGlscyIpLGY9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGg9dCgiLi4vLi4vY29t cG9uZW50cy9kcmF3aW5nIikscD10KCIuLi8uLi9jb21wb25lbnRzL2Z4IiksZD10KCIuL2F4 ZXMiKSxtPXQoIi4uLy4uL2xpYi9zZXRjdXJzb3IiKSxnPXQoIi4uLy4uL2NvbXBvbmVudHMv ZHJhZ2VsZW1lbnQiKSx2PXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhZ2VsZW1lbnQvaGVscGVy cyIpLHk9di5zZWxlY3RpbmdPckRyYXdpbmcseD12LmZyZWVNb2RlLGI9dCgiLi4vLi4vY29u c3RhbnRzL2FsaWdubWVudCIpLkZST01fVEwsXz10KCIuLi8uLi9saWIvY2xlYXJfZ2xfY2Fu dmFzZXMiKSx3PXQoIi4uLy4uL3Bsb3RfYXBpL3N1YnJvdXRpbmVzIikucmVkcmF3UmVnbFRy YWNlcyxUPXQoIi4uL3Bsb3RzIiksaz10KCIuL2F4aXNfaWRzIikuZ2V0RnJvbUlkLEE9dCgi Li9zZWxlY3QiKS5wcmVwU2VsZWN0LE09dCgiLi9zZWxlY3QiKS5jbGVhclNlbGVjdCxTPXQo Ii4vc2VsZWN0Iikuc2VsZWN0T25DbGljayxFPXQoIi4vc2NhbGVfem9vbSIpLEw9dCgiLi9j b25zdGFudHMiKSxDPUwuTUlORFJBRyxQPUwuTUlOWk9PTSxJPSEwO2Z1bmN0aW9uIE8odCxl LHIsbil7dmFyIGE9aS5lbnN1cmVTaW5nbGUodC5kcmFnbGF5ZXIsZSxyLChmdW5jdGlvbihl KXtlLmNsYXNzZWQoImRyYWciLCEwKS5zdHlsZSh7ZmlsbDoidHJhbnNwYXJlbnQiLCJzdHJv a2Utd2lkdGgiOjB9KS5hdHRyKCJkYXRhLXN1YnBsb3QiLHQuaWQpfSkpO3JldHVybiBhLmNh bGwobSxuKSxhLm5vZGUoKX1mdW5jdGlvbiB6KHQsZSxyLGksYSxvLHMpe3ZhciBsPU8odCwi cmVjdCIsZSxyKTtyZXR1cm4gbi5zZWxlY3QobCkuY2FsbChoLnNldFJlY3QsaSxhLG8scyks bH1mdW5jdGlvbiBEKHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspaWYoIXRbcl0u Zml4ZWRyYW5nZSlyZXR1cm4gZTtyZXR1cm4iIn1mdW5jdGlvbiBSKHQsZSxyLG4saSl7Zm9y KHZhciBhPTA7YTx0Lmxlbmd0aDthKyspe3ZhciBvPXRbYV07aWYoIW8uZml4ZWRyYW5nZSlp ZihvLnJhbmdlYnJlYWtzKXt2YXIgcz0ieSI9PT1vLl9pZC5jaGFyQXQoMCksbD1zPzEtZTpl LGM9cz8xLXI6cjtuW28uX25hbWUrIi5yYW5nZVswXSJdPW8ubDJyKG8ucDJsKGwqby5fbGVu Z3RoKSksbltvLl9uYW1lKyIucmFuZ2VbMV0iXT1vLmwycihvLnAybChjKm8uX2xlbmd0aCkp fWVsc2V7dmFyIHU9by5fcmxbMF0sZj1vLl9ybFsxXS11O25bby5fbmFtZSsiLnJhbmdlWzBd Il09by5sMnIodStmKmUpLG5bby5fbmFtZSsiLnJhbmdlWzFdIl09by5sMnIodStmKnIpfX1p ZihpJiZpLmxlbmd0aCl7dmFyIGg9KGUrKDEtcikpLzI7UihpLGgsMS1oLG4sW10pfX1mdW5j dGlvbiBGKHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07aWYo IW4uZml4ZWRyYW5nZSlpZihuLnJhbmdlYnJlYWtzKXt2YXIgaT1uLl9sZW5ndGgsYT0obi5w MmwoMCtlKS1uLnAybCgwKSsobi5wMmwoaStlKS1uLnAybChpKSkpLzI7bi5yYW5nZT1bbi5s MnIobi5fcmxbMF0tYSksbi5sMnIobi5fcmxbMV0tYSldfWVsc2Ugbi5yYW5nZT1bbi5sMnIo bi5fcmxbMF0tZS9uLl9tKSxuLmwycihuLl9ybFsxXS1lL24uX20pXX19ZnVuY3Rpb24gQih0 KXtyZXR1cm4gMS0odD49MD9NYXRoLm1pbih0LC45KToxLygxL01hdGgubWF4KHQsLS4zKSsz LjIyMikpfWZ1bmN0aW9uIE4odCxlLHIsbixpKXtyZXR1cm4gdC5hcHBlbmQoInBhdGgiKS5h dHRyKCJjbGFzcyIsInpvb21ib3giKS5zdHlsZSh7ZmlsbDplPi4yPyJyZ2JhKDAsMCwwLDAp IjoicmdiYSgyNTUsMjU1LDI1NSwwKSIsInN0cm9rZS13aWR0aCI6MH0pLmF0dHIoInRyYW5z Zm9ybSIsYyhyLG4pKS5hdHRyKCJkIixpKyJaIil9ZnVuY3Rpb24gaih0LGUscil7cmV0dXJu IHQuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJ6b29tYm94LWNvcm5lcnMiKS5zdHls ZSh7ZmlsbDpmLmJhY2tncm91bmQsc3Ryb2tlOmYuZGVmYXVsdExpbmUsInN0cm9rZS13aWR0 aCI6MSxvcGFjaXR5OjB9KS5hdHRyKCJ0cmFuc2Zvcm0iLGMoZSxyKSkuYXR0cigiZCIsIk0w LDBaIil9ZnVuY3Rpb24gVSh0LGUscixuLGksYSl7dC5hdHRyKCJkIixuKyJNIityLmwrIiwi K3IudCsidiIrci5oKyJoIityLncrInYtIityLmgrImgtIityLncrIloiKSxWKHQsZSxpLGEp fWZ1bmN0aW9uIFYodCxlLHIsbil7cnx8KHQudHJhbnNpdGlvbigpLnN0eWxlKCJmaWxsIixu Pi4yPyJyZ2JhKDAsMCwwLDAuNCkiOiJyZ2JhKDI1NSwyNTUsMjU1LDAuMykiKS5kdXJhdGlv bigyMDApLGUudHJhbnNpdGlvbigpLnN0eWxlKCJvcGFjaXR5IiwxKS5kdXJhdGlvbigyMDAp KX1mdW5jdGlvbiBIKHQpe24uc2VsZWN0KHQpLnNlbGVjdEFsbCgiLnpvb21ib3gsLmpzLXpv b21ib3gtYmFja2Ryb3AsLmpzLXpvb21ib3gtbWVudSwuem9vbWJveC1jb3JuZXJzIikucmVt b3ZlKCl9ZnVuY3Rpb24gcSh0KXtJJiZ0LmRhdGEmJnQuX2NvbnRleHQuc2hvd1RpcHMmJihp Lm5vdGlmaWVyKGkuXyh0LCJEb3VibGUtY2xpY2sgdG8gem9vbSBiYWNrIG91dCIpLCJsb25n IiksST0hMSl9ZnVuY3Rpb24gRyh0KXt2YXIgZT1NYXRoLmZsb29yKE1hdGgubWluKHQuYi10 LnQsdC5yLXQubCxQKS8yKTtyZXR1cm4iTSIrKHQubC0zLjUpKyIsIisodC50LS41K2UpKyJo M3YiKy1lKyJoIitlKyJ2LTNoLSIrKGUrMykrIlpNIisodC5yKzMuNSkrIiwiKyh0LnQtLjUr ZSkrImgtM3YiKy1lKyJoIistZSsidi0zaCIrKGUrMykrIlpNIisodC5yKzMuNSkrIiwiKyh0 LmIrLjUtZSkrImgtM3YiK2UrImgiKy1lKyJ2M2giKyhlKzMpKyJaTSIrKHQubC0zLjUpKyIs IisodC5iKy41LWUpKyJoM3YiK2UrImgiK2UrInYzaC0iKyhlKzMpKyJaIn1mdW5jdGlvbiBZ KHQsZSxyLG4sYSl7Zm9yKHZhciBvLHMsbCxjLHU9ITEsZj17fSxoPXt9LHA9KGF8fHt9KS54 YUhhc2gsZD0oYXx8e30pLnlhSGFzaCxtPTA7bTxlLmxlbmd0aDttKyspe3ZhciBnPWVbbV07 Zm9yKG8gaW4gcilpZihnW29dKXtmb3IobCBpbiBnKWEmJihwW2xdfHxkW2xdKXx8KCJ4Ij09 PWwuY2hhckF0KDApP3I6bilbbF18fChmW2xdPW8pO2ZvcihzIGluIG4pYSYmKHBbc118fGRb c10pfHwhZ1tzXXx8KHU9ITApfWZvcihzIGluIG4paWYoZ1tzXSlmb3IoYyBpbiBnKWEmJihw W2NdfHxkW2NdKXx8KCJ4Ij09PWMuY2hhckF0KDApP3I6bilbY118fChoW2NdPXMpfXUmJihp LmV4dGVuZEZsYXQoZixoKSxoPXt9KTt2YXIgdj17fSx5PVtdO2ZvcihsIGluIGYpe3ZhciB4 PWsodCxsKTt5LnB1c2goeCksdlt4Ll9pZF09eH12YXIgYj17fSxfPVtdO2ZvcihjIGluIGgp e3ZhciB3PWsodCxjKTtfLnB1c2godyksYlt3Ll9pZF09d31yZXR1cm57eGFIYXNoOnYseWFI YXNoOmIseGF4ZXM6eSx5YXhlczpfLHhMaW5rczpmLHlMaW5rczpoLGlzU3VicGxvdENvbnN0 cmFpbmVkOnV9fWZ1bmN0aW9uIFcodCxlKXtpZihzKXt2YXIgcj12b2lkIDAhPT10Lm9ud2hl ZWw/IndoZWVsIjoibW91c2V3aGVlbCI7dC5fb253aGVlbCYmdC5yZW1vdmVFdmVudExpc3Rl bmVyKHIsdC5fb253aGVlbCksdC5fb253aGVlbD1lLHQuYWRkRXZlbnRMaXN0ZW5lcihyLGUs e3Bhc3NpdmU6ITF9KX1lbHNlIHZvaWQgMCE9PXQub253aGVlbD90Lm9ud2hlZWw9ZTp2b2lk IDAhPT10Lm9ubW91c2V3aGVlbD90Lm9ubW91c2V3aGVlbD1lOnQuaXNBZGRlZFdoZWVsRXZl bnR8fCh0LmlzQWRkZWRXaGVlbEV2ZW50PSEwLHQuYWRkRXZlbnRMaXN0ZW5lcigid2hlZWwi LGUse3Bhc3NpdmU6ITF9KSl9ZnVuY3Rpb24gWCh0KXt2YXIgZT1bXTtmb3IodmFyIHIgaW4g dCllLnB1c2godFtyXSk7cmV0dXJuIGV9ZS5leHBvcnRzPXttYWtlRHJhZ0JveDpmdW5jdGlv bih0LGUscixzLGMsZixtLHYpe3ZhciBJLE8sVixaLEosSyxRLCQsdHQsZXQscnQsbnQsaXQs YXQsb3Qsc3QsbHQsY3QsdXQsZnQsaHQscHQsZHQsbXQ9dC5fZnVsbExheW91dC5fem9vbWxh eWVyLGd0PW0rdj09PSJuc2V3Iix2dD0xPT09KG0rdikubGVuZ3RoO2Z1bmN0aW9uIHl0KCl7 aWYoST1lLnhheGlzLE89ZS55YXhpcyx0dD1JLl9sZW5ndGgsZXQ9Ty5fbGVuZ3RoLFE9SS5f b2Zmc2V0LCQ9Ty5fb2Zmc2V0LChWPXt9KVtJLl9pZF09SSwoWj17fSlbTy5faWRdPU8sbSYm dilmb3IodmFyIHI9ZS5vdmVybGF5cyxuPTA7bjxyLmxlbmd0aDtuKyspe3ZhciBpPXJbbl0u eGF4aXM7VltpLl9pZF09aTt2YXIgYT1yW25dLnlheGlzO1pbYS5faWRdPWF9Sj1YKFYpLEs9 WChaKSxpdD1EKEosdiksYXQ9RChLLG0pLG90PSFhdCYmIWl0LG50PVkodCx0Ll9mdWxsTGF5 b3V0Ll9heGlzTWF0Y2hHcm91cHMsVixaKTt2YXIgbz0ocnQ9WSh0LHQuX2Z1bGxMYXlvdXQu X2F4aXNDb25zdHJhaW50R3JvdXBzLFYsWixudCkpLmlzU3VicGxvdENvbnN0cmFpbmVkfHxu dC5pc1N1YnBsb3RDb25zdHJhaW5lZDtzdD12fHxvLGx0PW18fG87dmFyIHM9dC5fZnVsbExh eW91dDtjdD1zLl9oYXMoInNjYXR0ZXJnbCIpLHV0PXMuX2hhcygic3Bsb20iKSxmdD1zLl9o YXMoInN2ZyIpfXl0KCk7dmFyIHh0PWZ1bmN0aW9uKHQsZSxyKXtpZighdClyZXR1cm4icG9p bnRlciI7aWYoIm5zZXciPT09dClyZXR1cm4gcj8iIjoicGFuIj09PWU/Im1vdmUiOiJjcm9z c2hhaXIiO3JldHVybiB0LnRvTG93ZXJDYXNlKCkrIi1yZXNpemUifShhdCtpdCx0Ll9mdWxs TGF5b3V0LmRyYWdtb2RlLGd0KSxidD16KGUsbSt2KyJkcmFnIix4dCxyLHMsYyxmKTtpZihv dCYmIWd0KXJldHVybiBidC5vbm1vdXNlZG93bj1udWxsLGJ0LnN0eWxlLnBvaW50ZXJFdmVu dHM9Im5vbmUiLGJ0O3ZhciBfdCx3dCxUdCxrdCxBdCxNdCxTdCxFdCxMdCxDdCxQdD17ZWxl bWVudDpidCxnZDp0LHBsb3RpbmZvOmV9O2Z1bmN0aW9uIEl0KCl7UHQucGxvdGluZm8uc2Vs ZWN0aW9uPSExLE0odCl9ZnVuY3Rpb24gT3QodCxyKXt2YXIgaT1QdC5nZDtpZihpLl9mdWxs TGF5b3V0Ll9hY3RpdmVTaGFwZUluZGV4Pj0wKWkuX2Z1bGxMYXlvdXQuX2RlYWN0aXZhdGVT aGFwZShpKTtlbHNle3ZhciBvPWkuX2Z1bGxMYXlvdXQuY2xpY2ttb2RlO2lmKEgoaSksMiE9 PXR8fHZ0fHxxdCgpLGd0KW8uaW5kZXhPZigic2VsZWN0Iik+LTEmJlMocixpLEosSyxlLmlk LFB0KSxvLmluZGV4T2YoImV2ZW50Iik+LTEmJnAuY2xpY2soaSxyLGUuaWQpO2Vsc2UgaWYo MT09PXQmJnZ0KXt2YXIgcz1tP086SSxjPSJzIj09PW18fCJ3Ij09PXY/MDoxLGY9cy5fbmFt ZSsiLnJhbmdlWyIrYysiXSIsaD1mdW5jdGlvbih0LGUpe3ZhciByLG49dC5yYW5nZVtlXSxp PU1hdGguYWJzKG4tdC5yYW5nZVsxLWVdKTtyZXR1cm4iZGF0ZSI9PT10LnR5cGU/bjoibG9n Ij09PXQudHlwZT8ocj1NYXRoLmNlaWwoTWF0aC5tYXgoMCwtTWF0aC5sb2coaSkvTWF0aC5M TjEwKSkrMyxhKCIuIityKyJnIikoTWF0aC5wb3coMTAsbikpKToocj1NYXRoLmZsb29yKE1h dGgubG9nKE1hdGguYWJzKG4pKS9NYXRoLkxOMTApLU1hdGguZmxvb3IoTWF0aC5sb2coaSkv TWF0aC5MTjEwKSs0LGEoIi4iK1N0cmluZyhyKSsiZyIpKG4pKX0ocyxjKSxkPSJsZWZ0Iixn PSJtaWRkbGUiO2lmKHMuZml4ZWRyYW5nZSlyZXR1cm47bT8oZz0ibiI9PT1tPyJ0b3AiOiJi b3R0b20iLCJyaWdodCI9PT1zLnNpZGUmJihkPSJyaWdodCIpKToiZSI9PT12JiYoZD0icmln aHQiKSxpLl9jb250ZXh0LnNob3dBeGlzUmFuZ2VFbnRyeUJveGVzJiZuLnNlbGVjdChidCku Y2FsbCh1Lm1ha2VFZGl0YWJsZSx7Z2Q6aSxpbW1lZGlhdGU6ITAsYmFja2dyb3VuZDppLl9m dWxsTGF5b3V0LnBhcGVyX2JnY29sb3IsdGV4dDpTdHJpbmcoaCksZmlsbDpzLnRpY2tmb250 P3MudGlja2ZvbnQuY29sb3I6IiM0NDQiLGhvcml6b250YWxBbGlnbjpkLHZlcnRpY2FsQWxp Z246Z30pLm9uKCJlZGl0IiwoZnVuY3Rpb24odCl7dmFyIGU9cy5kMnIodCk7dm9pZCAwIT09 ZSYmbC5jYWxsKCJfZ3VpUmVsYXlvdXQiLGksZixlKX0pKX19fWZ1bmN0aW9uIHp0KGUscil7 aWYodC5fdHJhbnNpdGlvbmluZ1dpdGhEdXJhdGlvbilyZXR1cm4hMTt2YXIgbj1NYXRoLm1h eCgwLE1hdGgubWluKHR0LHB0KmUrX3QpKSxpPU1hdGgubWF4KDAsTWF0aC5taW4oZXQsZHQq cit3dCkpLGE9TWF0aC5hYnMobi1fdCksbz1NYXRoLmFicyhpLXd0KTtmdW5jdGlvbiBzKCl7 U3Q9IiIsVHQucj1UdC5sLFR0LnQ9VHQuYixMdC5hdHRyKCJkIiwiTTAsMFoiKX1pZihUdC5s PU1hdGgubWluKF90LG4pLFR0LnI9TWF0aC5tYXgoX3QsbiksVHQudD1NYXRoLm1pbih3dCxp KSxUdC5iPU1hdGgubWF4KHd0LGkpLHJ0LmlzU3VicGxvdENvbnN0cmFpbmVkKWE+UHx8bz5Q PyhTdD0ieHkiLGEvdHQ+by9ldD8obz1hKmV0L3R0LHd0Pmk/VHQudD13dC1vOlR0LmI9d3Qr byk6KGE9byp0dC9ldCxfdD5uP1R0Lmw9X3QtYTpUdC5yPV90K2EpLEx0LmF0dHIoImQiLEco VHQpKSk6cygpO2Vsc2UgaWYobnQuaXNTdWJwbG90Q29uc3RyYWluZWQpaWYoYT5QfHxvPlAp e1N0PSJ4eSI7dmFyIGw9TWF0aC5taW4oVHQubC90dCwoZXQtVHQuYikvZXQpLGM9TWF0aC5t YXgoVHQuci90dCwoZXQtVHQudCkvZXQpO1R0Lmw9bCp0dCxUdC5yPWMqdHQsVHQuYj0oMS1s KSpldCxUdC50PSgxLWMpKmV0LEx0LmF0dHIoImQiLEcoVHQpKX1lbHNlIHMoKTtlbHNlIWF0 fHxvPE1hdGgubWluKE1hdGgubWF4KC42KmEsQyksUCk/YTxDfHwhaXQ/cygpOihUdC50PTAs VHQuYj1ldCxTdD0ieCIsTHQuYXR0cigiZCIsZnVuY3Rpb24odCxlKXtyZXR1cm4iTSIrKHQu bC0uNSkrIiwiKyhlLVAtLjUpKyJoLTN2IisoMipQKzEpKyJoM1pNIisodC5yKy41KSsiLCIr KGUtUC0uNSkrImgzdiIrKDIqUCsxKSsiaC0zWiJ9KFR0LHd0KSkpOiFpdHx8YTxNYXRoLm1p biguNipvLFApPyhUdC5sPTAsVHQucj10dCxTdD0ieSIsTHQuYXR0cigiZCIsZnVuY3Rpb24o dCxlKXtyZXR1cm4iTSIrKGUtUC0uNSkrIiwiKyh0LnQtLjUpKyJ2LTNoIisoMipQKzEpKyJ2 M1pNIisoZS1QLS41KSsiLCIrKHQuYisuNSkrInYzaCIrKDIqUCsxKSsidi0zWiJ9KFR0LF90 KSkpOihTdD0ieHkiLEx0LmF0dHIoImQiLEcoVHQpKSk7VHQudz1UdC5yLVR0LmwsVHQuaD1U dC5iLVR0LnQsU3QmJihDdD0hMCksdC5fZHJhZ2dlZD1DdCxVKEV0LEx0LFR0LEF0LE10LGt0 KSxEdCgpLHQuZW1pdCgicGxvdGx5X3JlbGF5b3V0aW5nIixodCksTXQ9ITB9ZnVuY3Rpb24g RHQoKXtodD17fSwieHkiIT09U3QmJiJ4IiE9PVN0fHwoUihKLFR0LmwvdHQsVHQuci90dCxo dCxydC54YXhlcyksVnQoIngiLGh0KSksInh5IiE9PVN0JiYieSIhPT1TdHx8KFIoSywoZXQt VHQuYikvZXQsKGV0LVR0LnQpL2V0LGh0LHJ0LnlheGVzKSxWdCgieSIsaHQpKX1mdW5jdGlv biBSdCgpe0R0KCksSCh0KSxHdCgpLHEodCl9UHQucHJlcEZuPWZ1bmN0aW9uKGUscixuKXt2 YXIgYT1QdC5kcmFnbW9kZSxzPXQuX2Z1bGxMYXlvdXQuZHJhZ21vZGU7cyE9PWEmJihQdC5k cmFnbW9kZT1zKSx5dCgpLHB0PXQuX2Z1bGxMYXlvdXQuX2ludlNjYWxlWCxkdD10Ll9mdWxs TGF5b3V0Ll9pbnZTY2FsZVksb3R8fChndD9lLnNoaWZ0S2V5PyJwYW4iPT09cz9zPSJ6b29t Ijp5KHMpfHwocz0icGFuIik6ZS5jdHJsS2V5JiYocz0icGFuIik6cz0icGFuIikseChzKT9Q dC5taW5EcmFnPTE6UHQubWluRHJhZz12b2lkIDAseShzKT8oUHQueGF4ZXM9SixQdC55YXhl cz1LLEEoZSxyLG4sUHQscykpOihQdC5jbGlja0ZuPU90LHkoYSkmJkl0KCksb3R8fCgiem9v bSI9PT1zPyhQdC5tb3ZlRm49enQsUHQuZG9uZUZuPVJ0LFB0Lm1pbkRyYWc9MSxmdW5jdGlv bihlLHIsbil7dmFyIGE9YnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7X3Q9ci1hLmxlZnQs d3Q9bi1hLnRvcCx0Ll9mdWxsTGF5b3V0Ll9jYWxjSW52ZXJzZVRyYW5zZm9ybSh0KTt2YXIg cz1pLmFwcGx5M0RUcmFuc2Zvcm0odC5fZnVsbExheW91dC5faW52VHJhbnNmb3JtKShfdCx3 dCk7X3Q9c1swXSx3dD1zWzFdLFR0PXtsOl90LHI6X3QsdzowLHQ6d3QsYjp3dCxoOjB9LGt0 PXQuX2htcGl4Y291bnQ/dC5faG1sdW1jb3VudC90Ll9obXBpeGNvdW50Om8odC5fZnVsbExh eW91dC5wbG90X2JnY29sb3IpLmdldEx1bWluYW5jZSgpLE10PSExLFN0PSJ4eSIsQ3Q9ITEs RXQ9TihtdCxrdCxRLCQsQXQ9Ik0wLDBIIit0dCsiViIrZXQrIkgwVjAiKSxMdD1qKG10LFEs JCl9KDAscixuKSk6InBhbiI9PT1zJiYoUHQubW92ZUZuPVV0LFB0LmRvbmVGbj1HdCkpKSx0 Ll9mdWxsTGF5b3V0Ll9yZWRyYWc9ZnVuY3Rpb24oKXt2YXIgZT10Ll9kcmFnZGF0YTtpZihl JiZlLmVsZW1lbnQ9PT1idCl7dmFyIHI9dC5fZnVsbExheW91dC5kcmFnbW9kZTt5KHIpfHwo eXQoKSxZdChbMCwwLHR0LGV0XSksUHQubW92ZUZuKGUuZHgsZS5keSkpfX19LGcuaW5pdChQ dCk7dmFyIEZ0PVswLDAsdHQsZXRdLEJ0PW51bGwsTnQ9TC5SRURSQVdERUxBWSxqdD1lLm1h aW5wbG90P3QuX2Z1bGxMYXlvdXQuX3Bsb3RzW2UubWFpbnBsb3RdOmU7ZnVuY3Rpb24gVXQo ZSxyKXtpZihlKj1wdCxyKj1kdCwhdC5fdHJhbnNpdGlvbmluZ1dpdGhEdXJhdGlvbil7aWYo dC5fZnVsbExheW91dC5fcmVwbG90dGluZz0hMCwiZXciPT09aXR8fCJucyI9PT1hdCl7dmFy IG49aXQ/LWU6MCxpPWF0Py1yOjA7aWYobnQuaXNTdWJwbG90Q29uc3RyYWluZWQpe2lmKGl0 JiZhdCl7dmFyIGE9KGUvdHQtci9ldCkvMjtuPS0oZT1hKnR0KSxpPS0ocj0tYSpldCl9YXQ/ bj0taSp0dC9ldDppPS1uKmV0L3R0fXJldHVybiBpdCYmKEYoSixlKSxWdCgieCIpKSxhdCYm KEYoSyxyKSxWdCgieSIpKSxZdChbbixpLHR0LGV0XSksSHQoKSx2b2lkIHQuZW1pdCgicGxv dGx5X3JlbGF5b3V0aW5nIixodCl9dmFyIG8scyxsPSJ3Ij09PWl0PT0oIm4iPT09YXQpPzE6 LTE7aWYoaXQmJmF0JiYocnQuaXNTdWJwbG90Q29uc3RyYWluZWR8fG50LmlzU3VicGxvdENv bnN0cmFpbmVkKSl7dmFyIGM9KGUvdHQrbCpyL2V0KS8yO2U9Yyp0dCxyPWwqYypldH1pZigi dyI9PT1pdD9lPXAoSiwwLGUpOiJlIj09PWl0P2U9cChKLDEsLWUpOml0fHwoZT0wKSwibiI9 PT1hdD9yPXAoSywxLHIpOiJzIj09PWF0P3I9cChLLDAsLXIpOmF0fHwocj0wKSxvPSJ3Ij09 PWl0P2U6MCxzPSJuIj09PWF0P3I6MCxydC5pc1N1YnBsb3RDb25zdHJhaW5lZCYmIW50Lmlz U3VicGxvdENvbnN0cmFpbmVkfHxudC5pc1N1YnBsb3RDb25zdHJhaW5lZCYmaXQmJmF0JiZs PjApe3ZhciB1O2lmKG50LmlzU3VicGxvdENvbnN0cmFpbmVkfHwhaXQmJjE9PT1hdC5sZW5n dGgpe2Zvcih1PTA7dTxKLmxlbmd0aDt1KyspSlt1XS5yYW5nZT1KW3VdLl9yLnNsaWNlKCks RShKW3VdLDEtci9ldCk7bz0oZT1yKnR0L2V0KS8yfWlmKG50LmlzU3VicGxvdENvbnN0cmFp bmVkfHwhYXQmJjE9PT1pdC5sZW5ndGgpe2Zvcih1PTA7dTxLLmxlbmd0aDt1KyspS1t1XS5y YW5nZT1LW3VdLl9yLnNsaWNlKCksRShLW3VdLDEtZS90dCk7cz0ocj1lKmV0L3R0KS8yfX1u dC5pc1N1YnBsb3RDb25zdHJhaW5lZCYmYXR8fFZ0KCJ4IiksbnQuaXNTdWJwbG90Q29uc3Ry YWluZWQmJml0fHxWdCgieSIpO3ZhciBmPXR0LWUsaD1ldC1yOyFudC5pc1N1YnBsb3RDb25z dHJhaW5lZHx8aXQmJmF0fHwoaXQ/KHM9bz8wOmUqZXQvdHQsaD1mKmV0L3R0KToobz1zPzA6 cip0dC9ldCxmPWgqdHQvZXQpKSxZdChbbyxzLGYsaF0pLEh0KCksdC5lbWl0KCJwbG90bHlf cmVsYXlvdXRpbmciLGh0KX1mdW5jdGlvbiBwKHQsZSxyKXtmb3IodmFyIG4saSxhPTEtZSxv PTA7bzx0Lmxlbmd0aDtvKyspe3ZhciBzPXRbb107aWYoIXMuZml4ZWRyYW5nZSl7bj1zLGk9 cy5fcmxbYV0rKHMuX3JsW2VdLXMuX3JsW2FdKS9CKHIvcy5fbGVuZ3RoKTt2YXIgbD1zLmwy cihpKTshMSE9PWwmJnZvaWQgMCE9PWwmJihzLnJhbmdlW2VdPWwpfX1yZXR1cm4gbi5fbGVu Z3RoKihuLl9ybFtlXS1pKS8obi5fcmxbZV0tbi5fcmxbYV0pfX1mdW5jdGlvbiBWdCh0LGUp e2Zvcih2YXIgcj1udC5pc1N1YnBsb3RDb25zdHJhaW5lZD97eDpLLHk6Sn1bdF06bnRbdCsi YXhlcyJdLG49bnQuaXNTdWJwbG90Q29uc3RyYWluZWQ/e3g6Six5Okt9W3RdOltdLGk9MDtp PHIubGVuZ3RoO2krKyl7dmFyIGE9cltpXSxvPWEuX2lkLHM9bnQueExpbmtzW29dfHxudC55 TGlua3Nbb10sbD1uWzBdfHxWW3NdfHxaW3NdO2wmJihlPyhlW2EuX25hbWUrIi5yYW5nZVsw XSJdPWVbbC5fbmFtZSsiLnJhbmdlWzBdIl0sZVthLl9uYW1lKyIucmFuZ2VbMV0iXT1lW2wu X25hbWUrIi5yYW5nZVsxXSJdKTphLnJhbmdlPWwucmFuZ2Uuc2xpY2UoKSl9fWZ1bmN0aW9u IEh0KCl7dmFyIGUscj1bXTtmdW5jdGlvbiBuKHQpe2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKysp dFtlXS5maXhlZHJhbmdlfHxyLnB1c2godFtlXS5faWQpfWZvcihzdCYmKG4oSiksbihydC54 YXhlcyksbihudC54YXhlcykpLGx0JiYobihLKSxuKHJ0LnlheGVzKSxuKG50LnlheGVzKSks aHQ9e30sZT0wO2U8ci5sZW5ndGg7ZSsrKXt2YXIgaT1yW2VdLGE9ayh0LGkpO2QuZHJhd09u ZSh0LGEse3NraXBUaXRsZTohMH0pLGh0W2EuX25hbWUrIi5yYW5nZVswXSJdPWEucmFuZ2Vb MF0saHRbYS5fbmFtZSsiLnJhbmdlWzFdIl09YS5yYW5nZVsxXX1kLnJlZHJhd0NvbXBvbmVu dHModCxyKX1mdW5jdGlvbiBxdCgpe2lmKCF0Ll90cmFuc2l0aW9uaW5nV2l0aER1cmF0aW9u KXt2YXIgZT10Ll9jb250ZXh0LmRvdWJsZUNsaWNrLHI9W107aXQmJihyPXIuY29uY2F0KEop KSxhdCYmKHI9ci5jb25jYXQoSykpLG50LnhheGVzJiYocj1yLmNvbmNhdChudC54YXhlcykp LG50LnlheGVzJiYocj1yLmNvbmNhdChudC55YXhlcykpO3ZhciBuLGksYSxvPXt9O2lmKCJy ZXNldCthdXRvc2l6ZSI9PT1lKWZvcihlPSJhdXRvc2l6ZSIsaT0wO2k8ci5sZW5ndGg7aSsr KWlmKChuPXJbaV0pLl9yYW5nZUluaXRpYWwmJihuLnJhbmdlWzBdIT09bi5fcmFuZ2VJbml0 aWFsWzBdfHxuLnJhbmdlWzFdIT09bi5fcmFuZ2VJbml0aWFsWzFdKXx8IW4uX3JhbmdlSW5p dGlhbCYmIW4uYXV0b3JhbmdlKXtlPSJyZXNldCI7YnJlYWt9aWYoImF1dG9zaXplIj09PWUp Zm9yKGk9MDtpPHIubGVuZ3RoO2krKykobj1yW2ldKS5maXhlZHJhbmdlfHwob1tuLl9uYW1l KyIuYXV0b3JhbmdlIl09ITApO2Vsc2UgaWYoInJlc2V0Ij09PWUpZm9yKChpdHx8cnQuaXNT dWJwbG90Q29uc3RyYWluZWQpJiYocj1yLmNvbmNhdChydC54YXhlcykpLGF0JiYhcnQuaXNT dWJwbG90Q29uc3RyYWluZWQmJihyPXIuY29uY2F0KHJ0LnlheGVzKSkscnQuaXNTdWJwbG90 Q29uc3RyYWluZWQmJihpdD9hdHx8KHI9ci5jb25jYXQoSykpOnI9ci5jb25jYXQoSikpLGk9 MDtpPHIubGVuZ3RoO2krKykobj1yW2ldKS5maXhlZHJhbmdlfHwobi5fcmFuZ2VJbml0aWFs PyhhPW4uX3JhbmdlSW5pdGlhbCxvW24uX25hbWUrIi5yYW5nZVswXSJdPWFbMF0sb1tuLl9u YW1lKyIucmFuZ2VbMV0iXT1hWzFdKTpvW24uX25hbWUrIi5hdXRvcmFuZ2UiXT0hMCk7dC5l bWl0KCJwbG90bHlfZG91YmxlY2xpY2siLG51bGwpLGwuY2FsbCgiX2d1aVJlbGF5b3V0Iix0 LG8pfX1mdW5jdGlvbiBHdCgpe1l0KFswLDAsdHQsZXRdKSxpLnN5bmNPckFzeW5jKFtULnBy ZXZpb3VzUHJvbWlzZXMsZnVuY3Rpb24oKXt0Ll9mdWxsTGF5b3V0Ll9yZXBsb3R0aW5nPSEx LGwuY2FsbCgiX2d1aVJlbGF5b3V0Iix0LGh0KX1dLHQpfWZ1bmN0aW9uIFl0KGUpe3ZhciBy LG4sYSxvLHM9dC5fZnVsbExheW91dCxjPXMuX3Bsb3RzLHU9cy5fc3VicGxvdHMuY2FydGVz aWFuO2lmKHV0JiZsLnN1YnBsb3RzUmVnaXN0cnkuc3Bsb20uZHJhZyh0KSxjdClmb3Iocj0w O3I8dS5sZW5ndGg7cisrKWlmKGE9KG49Y1t1W3JdXSkueGF4aXMsbz1uLnlheGlzLG4uX3Nj ZW5lKXt2YXIgZj1pLnNpbXBsZU1hcChhLnJhbmdlLGEucjJsKSxwPWkuc2ltcGxlTWFwKG8u cmFuZ2Usby5yMmwpO24uX3NjZW5lLnVwZGF0ZSh7cmFuZ2U6W2ZbMF0scFswXSxmWzFdLHBb MV1dfSl9aWYoKHV0fHxjdCkmJihfKHQpLHcodCkpLGZ0KXt2YXIgZD1lWzJdL0kuX2xlbmd0 aCxnPWVbM10vTy5fbGVuZ3RoO2ZvcihyPTA7cjx1Lmxlbmd0aDtyKyspe2E9KG49Y1t1W3Jd XSkueGF4aXMsbz1uLnlheGlzO3ZhciB5LHgsYixULGs9KHN0fHxudC5pc1N1YnBsb3RDb25z dHJhaW5lZCkmJiFhLmZpeGVkcmFuZ2UmJlZbYS5faWRdLEE9KGx0fHxudC5pc1N1YnBsb3RD b25zdHJhaW5lZCkmJiFvLmZpeGVkcmFuZ2UmJlpbby5faWRdO2lmKGs/KHk9ZCxiPXZ8fG50 LmlzU3VicGxvdENvbnN0cmFpbmVkP2VbMF06WnQoYSx5KSk6bnQueGFIYXNoW2EuX2lkXT8o eT1kLGI9ZVswXSphLl9sZW5ndGgvSS5fbGVuZ3RoKTpudC55YUhhc2hbYS5faWRdPyh5PWcs Yj0ibnMiPT09YXQ/LWVbMV0qYS5fbGVuZ3RoL08uX2xlbmd0aDpadChhLHkse246InRvcCIs czoiYm90dG9tIn1bYXRdKSk6Yj1YdChhLHk9V3QoYSxkLGcpKSxBPyh4PWcsVD1tfHxudC5p c1N1YnBsb3RDb25zdHJhaW5lZD9lWzFdOlp0KG8seCkpOm50LnlhSGFzaFtvLl9pZF0/KHg9 ZyxUPWVbMV0qby5fbGVuZ3RoL08uX2xlbmd0aCk6bnQueGFIYXNoW28uX2lkXT8oeD1kLFQ9 ImV3Ij09PWl0Py1lWzBdKm8uX2xlbmd0aC9JLl9sZW5ndGg6WnQobyx4LHtlOiJyaWdodCIs dzoibGVmdCJ9W2l0XSkpOlQ9WHQobyx4PVd0KG8sZCxnKSkseXx8eCl7eXx8KHk9MSkseHx8 KHg9MSk7dmFyIE09YS5fb2Zmc2V0LWIveSxTPW8uX29mZnNldC1UL3g7bi5jbGlwUmVjdC5j YWxsKGguc2V0VHJhbnNsYXRlLGIsVCkuY2FsbChoLnNldFNjYWxlLHkseCksbi5wbG90LmNh bGwoaC5zZXRUcmFuc2xhdGUsTSxTKS5jYWxsKGguc2V0U2NhbGUsMS95LDEveCkseT09PW4u eFNjYWxlRmFjdG9yJiZ4PT09bi55U2NhbGVGYWN0b3J8fChoLnNldFBvaW50R3JvdXBTY2Fs ZShuLnpvb21TY2FsZVB0cyx5LHgpLGguc2V0VGV4dFBvaW50c1NjYWxlKG4uem9vbVNjYWxl VHh0LHkseCkpLGguaGlkZU91dHNpZGVSYW5nZVBvaW50cyhuLmNsaXBPbkF4aXNGYWxzZVRy YWNlcyxuKSxuLnhTY2FsZUZhY3Rvcj15LG4ueVNjYWxlRmFjdG9yPXh9fX19ZnVuY3Rpb24g V3QodCxlLHIpe3JldHVybiB0LmZpeGVkcmFuZ2U/MDpzdCYmcnQueGFIYXNoW3QuX2lkXT9l Omx0JiYocnQuaXNTdWJwbG90Q29uc3RyYWluZWQ/cnQueGFIYXNoOnJ0LnlhSGFzaClbdC5f aWRdP3I6MH1mdW5jdGlvbiBYdCh0LGUpe3JldHVybiBlPyh0LnJhbmdlPXQuX3Iuc2xpY2Uo KSxFKHQsZSksWnQodCxlKSk6MH1mdW5jdGlvbiBadCh0LGUscil7cmV0dXJuIHQuX2xlbmd0 aCooMS1lKSpiW3J8fHQuY29uc3RyYWludG93YXJkfHwibWlkZGxlIl19cmV0dXJuIG0ubGVu Z3RoKnYubGVuZ3RoIT0xJiZXKGJ0LChmdW5jdGlvbihlKXtpZih0Ll9jb250ZXh0Ll9zY3Jv bGxab29tLmNhcnRlc2lhbnx8dC5fZnVsbExheW91dC5fZW5hYmxlc2Nyb2xsem9vbSl7aWYo SXQoKSx0Ll90cmFuc2l0aW9uaW5nV2l0aER1cmF0aW9uKXJldHVybiBlLnByZXZlbnREZWZh dWx0KCksdm9pZCBlLnN0b3BQcm9wYWdhdGlvbigpO3l0KCksY2xlYXJUaW1lb3V0KEJ0KTt2 YXIgcj0tZS5kZWx0YVk7aWYoaXNGaW5pdGUocil8fChyPWUud2hlZWxEZWx0YS8xMCksaXNG aW5pdGUocikpe3ZhciBuLGE9TWF0aC5leHAoLU1hdGgubWluKE1hdGgubWF4KHIsLTIwKSwy MCkvMjAwKSxvPWp0LmRyYWdsYXllci5zZWxlY3QoIi5uc2V3ZHJhZyIpLm5vZGUoKS5nZXRC b3VuZGluZ0NsaWVudFJlY3QoKSxzPShlLmNsaWVudFgtby5sZWZ0KS9vLndpZHRoLGw9KG8u Ym90dG9tLWUuY2xpZW50WSkvby5oZWlnaHQ7aWYoc3Qpe2Zvcih2fHwocz0uNSksbj0wO248 Si5sZW5ndGg7bisrKWMoSltuXSxzLGEpO1Z0KCJ4IiksRnRbMl0qPWEsRnRbMF0rPUZ0WzJd KnMqKDEvYS0xKX1pZihsdCl7Zm9yKG18fChsPS41KSxuPTA7bjxLLmxlbmd0aDtuKyspYyhL W25dLGwsYSk7VnQoInkiKSxGdFszXSo9YSxGdFsxXSs9RnRbM10qKDEtbCkqKDEvYS0xKX1Z dChGdCksSHQoKSx0LmVtaXQoInBsb3RseV9yZWxheW91dGluZyIsaHQpLEJ0PXNldFRpbWVv dXQoKGZ1bmN0aW9uKCl7dC5fZnVsbExheW91dCYmKEZ0PVswLDAsdHQsZXRdLEd0KCkpfSks TnQpLGUucHJldmVudERlZmF1bHQoKX1lbHNlIGkubG9nKCJEaWQgbm90IGZpbmQgd2hlZWwg bW90aW9uIGF0dHJpYnV0ZXM6ICIsZSl9ZnVuY3Rpb24gYyh0LGUscil7aWYoIXQuZml4ZWRy YW5nZSl7dmFyIG49aS5zaW1wbGVNYXAodC5yYW5nZSx0LnIybCksYT1uWzBdKyhuWzFdLW5b MF0pKmU7dC5yYW5nZT1uLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQubDJyKGErKGUtYSkq cil9KSl9fX0pKSxidH0sbWFrZURyYWdnZXI6TyxtYWtlUmVjdERyYWdnZXI6eixtYWtlWm9v bWJveDpOLG1ha2VDb3JuZXJzOmosdXBkYXRlWm9vbWJveDpVLHh5Q29ybmVyczpHLHRyYW5z aXRpb25ab29tYm94OlYscmVtb3ZlWm9vbWJveDpILHNob3dEb3VibGVDbGlja05vdGlmaWVy OnEsYXR0YWNoV2hlZWxFdmVudEhhbmRsZXI6V319LHsiLi4vLi4vY29tcG9uZW50cy9jb2xv ciI6MzY2LCIuLi8uLi9jb21wb25lbnRzL2RyYWdlbGVtZW50IjozODUsIi4uLy4uL2NvbXBv bmVudHMvZHJhZ2VsZW1lbnQvaGVscGVycyI6Mzg0LCIuLi8uLi9jb21wb25lbnRzL2RyYXdp bmciOjM4OCwiLi4vLi4vY29tcG9uZW50cy9meCI6NDA2LCIuLi8uLi9jb25zdGFudHMvYWxp Z25tZW50Ijo0NzEsIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9saWIvY2xlYXJfZ2xfY2FudmFz ZXMiOjQ4NywiLi4vLi4vbGliL3NldGN1cnNvciI6NTI0LCIuLi8uLi9saWIvc3ZnX3RleHRf dXRpbHMiOjUyOSwiLi4vLi4vcGxvdF9hcGkvc3Vicm91dGluZXMiOjU0NCwiLi4vLi4vcmVn aXN0cnkiOjYzOCwiLi4vcGxvdHMiOjYxOSwiLi9heGVzIjo1NTQsIi4vYXhpc19pZHMiOjU1 OCwiLi9jb25zdGFudHMiOjU2MSwiLi9zY2FsZV96b29tIjo1NzQsIi4vc2VsZWN0Ijo1NzUs IkBwbG90bHkvZDMiOjU4LCJoYXMtcGFzc2l2ZS1ldmVudHMiOjIyOSx0aW55Y29sb3IyOjMx Mn1dLDU2NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJAcGxvdGx5 L2QzIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2Z4IiksYT10KCIuLi8uLi9jb21wb25lbnRz L2RyYWdlbGVtZW50Iiksbz10KCIuLi8uLi9saWIvc2V0Y3Vyc29yIikscz10KCIuL2RyYWdi b3giKS5tYWtlRHJhZ0JveCxsPXQoIi4vY29uc3RhbnRzIikuRFJBR0dFUlNJWkU7ci5pbml0 SW50ZXJhY3Rpb25zPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQ7aWYodC5fY29u dGV4dC5zdGF0aWNQbG90KW4uc2VsZWN0KHQpLnNlbGVjdEFsbCgiLmRyYWciKS5yZW1vdmUo KTtlbHNlIGlmKGUuX2hhcygiY2FydGVzaWFuIil8fGUuX2hhcygic3Bsb20iKSl7T2JqZWN0 LmtleXMoZS5fcGxvdHN8fHt9KS5zb3J0KChmdW5jdGlvbih0LHIpe2lmKChlLl9wbG90c1t0 XS5tYWlucGxvdCYmITApPT09KGUuX3Bsb3RzW3JdLm1haW5wbG90JiYhMCkpe3ZhciBuPXQu c3BsaXQoInkiKSxpPXIuc3BsaXQoInkiKTtyZXR1cm4gblswXT09PWlbMF0/TnVtYmVyKG5b MV18fDEpLU51bWJlcihpWzFdfHwxKTpOdW1iZXIoblswXXx8MSktTnVtYmVyKGlbMF18fDEp fXJldHVybiBlLl9wbG90c1t0XS5tYWlucGxvdD8xOi0xfSkpLmZvckVhY2goKGZ1bmN0aW9u KHIpe3ZhciBuPWUuX3Bsb3RzW3JdLG89bi54YXhpcyxjPW4ueWF4aXM7aWYoIW4ubWFpbnBs b3Qpe3ZhciB1PXModCxuLG8uX29mZnNldCxjLl9vZmZzZXQsby5fbGVuZ3RoLGMuX2xlbmd0 aCwibnMiLCJldyIpO3Uub25tb3VzZW1vdmU9ZnVuY3Rpb24oZSl7dC5fZnVsbExheW91dC5f cmVob3Zlcj1mdW5jdGlvbigpe3QuX2Z1bGxMYXlvdXQuX2hvdmVyc3VicGxvdD09PXImJnQu X2Z1bGxMYXlvdXQuX3Bsb3RzW3JdJiZpLmhvdmVyKHQsZSxyKX0saS5ob3Zlcih0LGUsciks dC5fZnVsbExheW91dC5fbGFzdGhvdmVyPXUsdC5fZnVsbExheW91dC5faG92ZXJzdWJwbG90 PXJ9LHUub25tb3VzZW91dD1mdW5jdGlvbihlKXt0Ll9kcmFnZ2luZ3x8KHQuX2Z1bGxMYXlv dXQuX2hvdmVyc3VicGxvdD1udWxsLGEudW5ob3Zlcih0LGUpKX0sdC5fY29udGV4dC5zaG93 QXhpc0RyYWdIYW5kbGVzJiYocyh0LG4sby5fb2Zmc2V0LWwsYy5fb2Zmc2V0LWwsbCxsLCJu IiwidyIpLHModCxuLG8uX29mZnNldCtvLl9sZW5ndGgsYy5fb2Zmc2V0LWwsbCxsLCJuIiwi ZSIpLHModCxuLG8uX29mZnNldC1sLGMuX29mZnNldCtjLl9sZW5ndGgsbCxsLCJzIiwidyIp LHModCxuLG8uX29mZnNldCtvLl9sZW5ndGgsYy5fb2Zmc2V0K2MuX2xlbmd0aCxsLGwsInMi LCJlIikpfWlmKHQuX2NvbnRleHQuc2hvd0F4aXNEcmFnSGFuZGxlcyl7aWYocj09PW8uX21h aW5TdWJwbG90KXt2YXIgZj1vLl9tYWluTGluZVBvc2l0aW9uOyJ0b3AiPT09by5zaWRlJiYo Zi09bCkscyh0LG4sby5fb2Zmc2V0Ky4xKm8uX2xlbmd0aCxmLC44Km8uX2xlbmd0aCxsLCIi LCJldyIpLHModCxuLG8uX29mZnNldCxmLC4xKm8uX2xlbmd0aCxsLCIiLCJ3Iikscyh0LG4s by5fb2Zmc2V0Ky45Km8uX2xlbmd0aCxmLC4xKm8uX2xlbmd0aCxsLCIiLCJlIil9aWYocj09 PWMuX21haW5TdWJwbG90KXt2YXIgaD1jLl9tYWluTGluZVBvc2l0aW9uOyJyaWdodCIhPT1j LnNpZGUmJihoLT1sKSxzKHQsbixoLGMuX29mZnNldCsuMSpjLl9sZW5ndGgsbCwuOCpjLl9s ZW5ndGgsIm5zIiwiIikscyh0LG4saCxjLl9vZmZzZXQrLjkqYy5fbGVuZ3RoLGwsLjEqYy5f bGVuZ3RoLCJzIiwiIikscyh0LG4saCxjLl9vZmZzZXQsbCwuMSpjLl9sZW5ndGgsIm4iLCIi KX19fSkpO3ZhciBvPWUuX2hvdmVybGF5ZXIubm9kZSgpO28ub25tb3VzZW1vdmU9ZnVuY3Rp b24ocil7ci50YXJnZXQ9dC5fZnVsbExheW91dC5fbGFzdGhvdmVyLGkuaG92ZXIodCxyLGUu X2hvdmVyc3VicGxvdCl9LG8ub25jbGljaz1mdW5jdGlvbihlKXtlLnRhcmdldD10Ll9mdWxs TGF5b3V0Ll9sYXN0aG92ZXIsaS5jbGljayh0LGUpfSxvLm9ubW91c2Vkb3duPWZ1bmN0aW9u KGUpe3QuX2Z1bGxMYXlvdXQuX2xhc3Rob3Zlci5vbm1vdXNlZG93bihlKX0sci51cGRhdGVG eCh0KX19LHIudXBkYXRlRng9ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dCxyPSJw YW4iPT09ZS5kcmFnbW9kZT8ibW92ZSI6ImNyb3NzaGFpciI7byhlLl9kcmFnZ2VycyxyKX19 LHsiLi4vLi4vY29tcG9uZW50cy9kcmFnZWxlbWVudCI6Mzg1LCIuLi8uLi9jb21wb25lbnRz L2Z4Ijo0MDYsIi4uLy4uL2xpYi9zZXRjdXJzb3IiOjUyNCwiLi9jb25zdGFudHMiOjU2MSwi Li9kcmFnYm94Ijo1NjMsIkBwbG90bHkvZDMiOjU4fV0sNTY1OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17Y2xlYXJPdXRsaW5lQ29udHJvbGxlcnM6ZnVuY3Rp b24odCl7dmFyIGU9dC5fZnVsbExheW91dC5fem9vbWxheWVyO2UmJmUuc2VsZWN0QWxsKCIu b3V0bGluZS1jb250cm9sbGVycyIpLnJlbW92ZSgpfSxjbGVhclNlbGVjdDpmdW5jdGlvbih0 KXt2YXIgZT10Ll9mdWxsTGF5b3V0Ll96b29tbGF5ZXI7ZSYmZS5zZWxlY3RBbGwoIi5zZWxl Y3Qtb3V0bGluZSIpLnJlbW92ZSgpLHQuX2Z1bGxMYXlvdXQuX2RyYXdpbmc9ITF9fX0se31d LDU2NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIi KS5zdHJUcmFuc2xhdGU7ZnVuY3Rpb24gaSh0LGUpe3N3aXRjaCh0LnR5cGUpe2Nhc2UibG9n IjpyZXR1cm4gdC5wMmQoZSk7Y2FzZSJkYXRlIjpyZXR1cm4gdC5wMnIoZSwwLHQuY2FsZW5k YXIpO2RlZmF1bHQ6cmV0dXJuIHQucDJyKGUpfX1lLmV4cG9ydHM9e3AycjppLHIycDpmdW5j dGlvbih0LGUpe3N3aXRjaCh0LnR5cGUpe2Nhc2UibG9nIjpyZXR1cm4gdC5kMnAoZSk7Y2Fz ZSJkYXRlIjpyZXR1cm4gdC5yMnAoZSwwLHQuY2FsZW5kYXIpO2RlZmF1bHQ6cmV0dXJuIHQu cjJwKGUpfX0sYXhWYWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0ieSI9PT10Ll9pZC5jaGFyQXQo MCk/MTowO3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gaSh0LHJbZV0pfX0sZ2V0VHJhbnNm b3JtOmZ1bmN0aW9uKHQpe3JldHVybiBuKHQueGF4aXMuX29mZnNldCx0LnlheGlzLl9vZmZz ZXQpfX19LHsiLi4vLi4vbGliIjo1MDN9XSw1Njc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiLi4vLi4vcmVnaXN0cnkiKSxpPXQoIi4uLy4uL2xpYiIpLGE9dCgi Li9heGlzX2lkcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxy KXt2YXIgbz1lW3RdO2lmKEFycmF5LmlzQXJyYXkobykpZm9yKHZhciBzPW4uc3VicGxvdHNS ZWdpc3RyeS5jYXJ0ZXNpYW4sbD1zLmlkUmVnZXgsYz1yLl9zdWJwbG90cyx1PWMueGF4aXMs Zj1jLnlheGlzLGg9Yy5jYXJ0ZXNpYW4scD1yLl9oYXMoImNhcnRlc2lhbiIpfHxyLl9oYXMo ImdsMmQiKSxkPTA7ZDxvLmxlbmd0aDtkKyspe3ZhciBtPW9bZF07aWYoaS5pc1BsYWluT2Jq ZWN0KG0pKXt2YXIgZz1hLmNsZWFuSWQobS54cmVmLCJ4IiwhMSksdj1hLmNsZWFuSWQobS55 cmVmLCJ5IiwhMSkseT1sLngudGVzdChnKSx4PWwueS50ZXN0KHYpO2lmKHl8fHgpe3B8fGku cHVzaFVuaXF1ZShyLl9iYXNlUGxvdE1vZHVsZXMscyk7dmFyIGI9ITE7eSYmLTE9PT11Lmlu ZGV4T2YoZykmJih1LnB1c2goZyksYj0hMCkseCYmLTE9PT1mLmluZGV4T2YodikmJihmLnB1 c2godiksYj0hMCksYiYmeSYmeCYmaC5wdXNoKGcrdil9fX19fX0seyIuLi8uLi9saWIiOjUw MywiLi4vLi4vcmVnaXN0cnkiOjYzOCwiLi9heGlzX2lkcyI6NTU4fV0sNTY4OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIkBwbG90bHkvZDMiKSxpPXQoIi4uLy4u L3JlZ2lzdHJ5IiksYT10KCIuLi8uLi9saWIiKSxvPXQoIi4uL3Bsb3RzIikscz10KCIuLi8u Li9jb21wb25lbnRzL2RyYXdpbmciKSxsPXQoIi4uL2dldF9kYXRhIikuZ2V0TW9kdWxlQ2Fs Y0RhdGEsYz10KCIuL2F4aXNfaWRzIiksdT10KCIuL2NvbnN0YW50cyIpLGY9dCgiLi4vLi4v Y29uc3RhbnRzL3htbG5zX25hbWVzcGFjZXMiKSxoPWEuZW5zdXJlU2luZ2xlO2Z1bmN0aW9u IHAodCxlLHIpe3JldHVybiBhLmVuc3VyZVNpbmdsZSh0LGUsciwoZnVuY3Rpb24odCl7dC5k YXR1bShyKX0pKX1mdW5jdGlvbiBkKHQsZSxyLGEsbyl7Zm9yKHZhciBjLGYsaCxwPXUudHJh Y2VMYXllckNsYXNzZXMsZD10Ll9mdWxsTGF5b3V0LG09ZC5fbW9kdWxlcyxnPVtdLHY9W10s eT0wO3k8bS5sZW5ndGg7eSsrKXt2YXIgeD0oYz1tW3ldKS5uYW1lLGI9aS5tb2R1bGVzW3hd LmNhdGVnb3JpZXM7aWYoYi5zdmcpe3ZhciBfPWMubGF5ZXJOYW1lfHx4KyJsYXllciIsdz1j LnBsb3Q7aD0oZj1sKHIsdykpWzBdLHI9ZlsxXSxoLmxlbmd0aCYmZy5wdXNoKHtpOnAuaW5k ZXhPZihfKSxjbGFzc05hbWU6XyxwbG90TWV0aG9kOncsY2RNb2R1bGU6aH0pLGIuem9vbVNj YWxlJiZ2LnB1c2goIi4iK18pfX1nLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuaS1l Lml9KSk7dmFyIFQ9ZS5wbG90LnNlbGVjdEFsbCgiZy5tbGF5ZXIiKS5kYXRhKGcsKGZ1bmN0 aW9uKHQpe3JldHVybiB0LmNsYXNzTmFtZX0pKTtpZihULmVudGVyKCkuYXBwZW5kKCJnIiku YXR0cigiY2xhc3MiLChmdW5jdGlvbih0KXtyZXR1cm4gdC5jbGFzc05hbWV9KSkuY2xhc3Nl ZCgibWxheWVyIiwhMCkuY2xhc3NlZCgicmFuZ2VwbG90IixlLmlzUmFuZ2VQbG90KSxULmV4 aXQoKS5yZW1vdmUoKSxULm9yZGVyKCksVC5lYWNoKChmdW5jdGlvbihyKXt2YXIgaT1uLnNl bGVjdCh0aGlzKSxsPXIuY2xhc3NOYW1lO3IucGxvdE1ldGhvZCh0LGUsci5jZE1vZHVsZSxp LGEsbyksLTE9PT11LmNsaXBPbkF4aXNGYWxzZVF1ZXJ5LmluZGV4T2YoIi4iK2wpJiZzLnNl dENsaXBVcmwoaSxlLmxheWVyQ2xpcElkLHQpfSkpLGQuX2hhcygic2NhdHRlcmdsIikmJihj PWkuZ2V0TW9kdWxlKCJzY2F0dGVyZ2wiKSxoPWwocixjKVswXSxjLnBsb3QodCxlLGgpKSwh dC5fY29udGV4dC5zdGF0aWNQbG90JiYoZS5faGFzQ2xpcE9uQXhpc0ZhbHNlJiYoZS5jbGlw T25BeGlzRmFsc2VUcmFjZXM9ZS5wbG90LnNlbGVjdEFsbCh1LmNsaXBPbkF4aXNGYWxzZVF1 ZXJ5LmpvaW4oIiwiKSkuc2VsZWN0QWxsKCIudHJhY2UiKSksdi5sZW5ndGgpKXt2YXIgaz1l LnBsb3Quc2VsZWN0QWxsKHYuam9pbigiLCIpKS5zZWxlY3RBbGwoIi50cmFjZSIpO2Uuem9v bVNjYWxlUHRzPWsuc2VsZWN0QWxsKCJwYXRoLnBvaW50IiksZS56b29tU2NhbGVUeHQ9ay5z ZWxlY3RBbGwoIi50ZXh0cG9pbnQiKX19ZnVuY3Rpb24gbSh0LGUpe3ZhciByPWUucGxvdGdy b3VwLG49ZS5pZCxpPXUubGF5ZXJWYWx1ZTJsYXllckNsYXNzW2UueGF4aXMubGF5ZXJdLGE9 dS5sYXllclZhbHVlMmxheWVyQ2xhc3NbZS55YXhpcy5sYXllcl0sbz10Ll9mdWxsTGF5b3V0 Ll9oYXNPbmx5TGFyZ2VTcGxvbXM7aWYoZS5tYWlucGxvdCl7dmFyIHM9ZS5tYWlucGxvdGlu Zm8sbD1zLnBsb3Rncm91cCxmPW4rIi14IixkPW4rIi15IjtlLm1pbm9yR3JpZGxheWVyPXMu bWlub3JHcmlkbGF5ZXIsZS5ncmlkbGF5ZXI9cy5ncmlkbGF5ZXIsZS56ZXJvbGluZWxheWVy PXMuemVyb2xpbmVsYXllcixoKHMub3ZlcmxpbmVzQmVsb3csInBhdGgiLGYpLGgocy5vdmVy bGluZXNCZWxvdywicGF0aCIsZCksaChzLm92ZXJheGVzQmVsb3csImciLGYpLGgocy5vdmVy YXhlc0JlbG93LCJnIixkKSxlLnBsb3Q9aChzLm92ZXJwbG90LCJnIixuKSxoKHMub3Zlcmxp bmVzQWJvdmUsInBhdGgiLGYpLGgocy5vdmVybGluZXNBYm92ZSwicGF0aCIsZCksaChzLm92 ZXJheGVzQWJvdmUsImciLGYpLGgocy5vdmVyYXhlc0Fib3ZlLCJnIixkKSxlLnhsaW5lcz1s LnNlbGVjdCgiLm92ZXJsaW5lcy0iK2kpLnNlbGVjdCgiLiIrZiksZS55bGluZXM9bC5zZWxl Y3QoIi5vdmVybGluZXMtIithKS5zZWxlY3QoIi4iK2QpLGUueGF4aXNsYXllcj1sLnNlbGVj dCgiLm92ZXJheGVzLSIraSkuc2VsZWN0KCIuIitmKSxlLnlheGlzbGF5ZXI9bC5zZWxlY3Qo Ii5vdmVyYXhlcy0iK2EpLnNlbGVjdCgiLiIrZCl9ZWxzZSBpZihvKWUueGxpbmVzPWgociwi cGF0aCIsInhsaW5lcy1hYm92ZSIpLGUueWxpbmVzPWgociwicGF0aCIsInlsaW5lcy1hYm92 ZSIpLGUueGF4aXNsYXllcj1oKHIsImciLCJ4YXhpc2xheWVyLWFib3ZlIiksZS55YXhpc2xh eWVyPWgociwiZyIsInlheGlzbGF5ZXItYWJvdmUiKTtlbHNle3ZhciBtPWgociwiZyIsImxh eWVyLXN1YnBsb3QiKTtlLnNoYXBlbGF5ZXI9aChtLCJnIiwic2hhcGVsYXllciIpLGUuaW1h Z2VsYXllcj1oKG0sImciLCJpbWFnZWxheWVyIiksZS5taW5vckdyaWRsYXllcj1oKHIsImci LCJtaW5vci1ncmlkbGF5ZXIiKSxlLmdyaWRsYXllcj1oKHIsImciLCJncmlkbGF5ZXIiKSxl Lnplcm9saW5lbGF5ZXI9aChyLCJnIiwiemVyb2xpbmVsYXllciIpLGgociwicGF0aCIsInhs aW5lcy1iZWxvdyIpLGgociwicGF0aCIsInlsaW5lcy1iZWxvdyIpLGUub3ZlcmxpbmVzQmVs b3c9aChyLCJnIiwib3ZlcmxpbmVzLWJlbG93IiksaChyLCJnIiwieGF4aXNsYXllci1iZWxv dyIpLGgociwiZyIsInlheGlzbGF5ZXItYmVsb3ciKSxlLm92ZXJheGVzQmVsb3c9aChyLCJn Iiwib3ZlcmF4ZXMtYmVsb3ciKSxlLnBsb3Q9aChyLCJnIiwicGxvdCIpLGUub3ZlcnBsb3Q9 aChyLCJnIiwib3ZlcnBsb3QiKSxlLnhsaW5lcz1oKHIsInBhdGgiLCJ4bGluZXMtYWJvdmUi KSxlLnlsaW5lcz1oKHIsInBhdGgiLCJ5bGluZXMtYWJvdmUiKSxlLm92ZXJsaW5lc0Fib3Zl PWgociwiZyIsIm92ZXJsaW5lcy1hYm92ZSIpLGgociwiZyIsInhheGlzbGF5ZXItYWJvdmUi KSxoKHIsImciLCJ5YXhpc2xheWVyLWFib3ZlIiksZS5vdmVyYXhlc0Fib3ZlPWgociwiZyIs Im92ZXJheGVzLWFib3ZlIiksZS54bGluZXM9ci5zZWxlY3QoIi54bGluZXMtIitpKSxlLnls aW5lcz1yLnNlbGVjdCgiLnlsaW5lcy0iK2EpLGUueGF4aXNsYXllcj1yLnNlbGVjdCgiLnhh eGlzbGF5ZXItIitpKSxlLnlheGlzbGF5ZXI9ci5zZWxlY3QoIi55YXhpc2xheWVyLSIrYSl9 b3x8KHAoZS5taW5vckdyaWRsYXllciwiZyIsZS54YXhpcy5faWQpLHAoZS5taW5vckdyaWRs YXllciwiZyIsZS55YXhpcy5faWQpLGUubWlub3JHcmlkbGF5ZXIuc2VsZWN0QWxsKCJnIiku bWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdFswXX0pKS5zb3J0KGMuaWRTb3J0KSxwKGUuZ3Jp ZGxheWVyLCJnIixlLnhheGlzLl9pZCkscChlLmdyaWRsYXllciwiZyIsZS55YXhpcy5faWQp LGUuZ3JpZGxheWVyLnNlbGVjdEFsbCgiZyIpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHRb MF19KSkuc29ydChjLmlkU29ydCkpLGUueGxpbmVzLnN0eWxlKCJmaWxsIiwibm9uZSIpLmNs YXNzZWQoImNyaXNwIiwhMCksZS55bGluZXMuc3R5bGUoImZpbGwiLCJub25lIikuY2xhc3Nl ZCgiY3Jpc3AiLCEwKX1mdW5jdGlvbiBnKHQsZSl7aWYodCl7dmFyIHI9e307Zm9yKHZhciBp IGluIHQuZWFjaCgoZnVuY3Rpb24odCl7dmFyIGk9dFswXTtuLnNlbGVjdCh0aGlzKS5yZW1v dmUoKSx2KGksZSkscltpXT0hMH0pKSxlLl9wbG90cylmb3IodmFyIGE9ZS5fcGxvdHNbaV0u b3ZlcmxheXN8fFtdLG89MDtvPGEubGVuZ3RoO28rKyl7dmFyIHM9YVtvXTtyW3MuaWRdJiZz LnBsb3Quc2VsZWN0QWxsKCIudHJhY2UiKS5yZW1vdmUoKX19fWZ1bmN0aW9uIHYodCxlKXtl Ll9kcmFnZ2Vycy5zZWxlY3RBbGwoImcuIit0KS5yZW1vdmUoKSxlLl9kZWZzLnNlbGVjdCgi I2NsaXAiK2UuX3VpZCt0KyJwbG90IikucmVtb3ZlKCl9ci5uYW1lPSJjYXJ0ZXNpYW4iLHIu YXR0cj1bInhheGlzIiwieWF4aXMiXSxyLmlkUm9vdD1bIngiLCJ5Il0sci5pZFJlZ2V4PXUu aWRSZWdleCxyLmF0dHJSZWdleD11LmF0dHJSZWdleCxyLmF0dHJpYnV0ZXM9dCgiLi9hdHRy aWJ1dGVzIiksci5sYXlvdXRBdHRyaWJ1dGVzPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxy LnN1cHBseUxheW91dERlZmF1bHRzPXQoIi4vbGF5b3V0X2RlZmF1bHRzIiksci50cmFuc2l0 aW9uQXhlcz10KCIuL3RyYW5zaXRpb25fYXhlcyIpLHIuZmluYWxpemVTdWJwbG90cz1mdW5j dGlvbih0LGUpe3ZhciByLG4saSxvPWUuX3N1YnBsb3RzLHM9by54YXhpcyxsPW8ueWF4aXMs Zj1vLmNhcnRlc2lhbixoPWYuY29uY2F0KG8uZ2wyZHx8W10pLHA9e30sZD17fTtmb3Iocj0w O3I8aC5sZW5ndGg7cisrKXt2YXIgbT1oW3JdLnNwbGl0KCJ5Iik7cFttWzBdXT0xLGRbInki K21bMV1dPTF9Zm9yKHI9MDtyPHMubGVuZ3RoO3IrKylwW249c1tyXV18fChpPSh0W2MuaWQy bmFtZShuKV18fHt9KS5hbmNob3IsdS5pZFJlZ2V4LnkudGVzdChpKXx8KGk9InkiKSxmLnB1 c2gobitpKSxoLnB1c2gobitpKSxkW2ldfHwoZFtpXT0xLGEucHVzaFVuaXF1ZShsLGkpKSk7 Zm9yKHI9MDtyPGwubGVuZ3RoO3IrKylkW2k9bFtyXV18fChuPSh0W2MuaWQybmFtZShpKV18 fHt9KS5hbmNob3IsdS5pZFJlZ2V4LngudGVzdChuKXx8KG49IngiKSxmLnB1c2gobitpKSxo LnB1c2gobitpKSxwW25dfHwocFtuXT0xLGEucHVzaFVuaXF1ZShzLG4pKSk7aWYoIWgubGVu Z3RoKXtmb3IodmFyIGcgaW4gbj0iIixpPSIiLHQpe2lmKHUuYXR0clJlZ2V4LnRlc3QoZykp IngiPT09Zy5jaGFyQXQoMCk/KCFufHwrZy5zdWJzdHIoNSk8K24uc3Vic3RyKDUpKSYmKG49 Zyk6KCFpfHwrZy5zdWJzdHIoNSk8K2kuc3Vic3RyKDUpKSYmKGk9Zyl9bj1uP2MubmFtZTJp ZChuKToieCIsaT1pP2MubmFtZTJpZChpKToieSIscy5wdXNoKG4pLGwucHVzaChpKSxmLnB1 c2gobitpKX19LHIucGxvdD1mdW5jdGlvbih0LGUscixuKXt2YXIgaSxhPXQuX2Z1bGxMYXlv dXQsbz1hLl9zdWJwbG90cy5jYXJ0ZXNpYW4scz10LmNhbGNkYXRhO2lmKCFBcnJheS5pc0Fy cmF5KGUpKWZvcihlPVtdLGk9MDtpPHMubGVuZ3RoO2krKyllLnB1c2goaSk7Zm9yKGk9MDtp PG8ubGVuZ3RoO2krKyl7Zm9yKHZhciBsLGM9b1tpXSx1PWEuX3Bsb3RzW2NdLGY9W10saD0w O2g8cy5sZW5ndGg7aCsrKXt2YXIgcD1zW2hdLG09cFswXS50cmFjZTttLnhheGlzK20ueWF4 aXM9PT1jJiYoKC0xIT09ZS5pbmRleE9mKG0uaW5kZXgpfHxtLmNhcnBldCkmJihsJiZsWzBd LnRyYWNlLnhheGlzK2xbMF0udHJhY2UueWF4aXM9PT1jJiYtMSE9PVsidG9uZXh0eCIsInRv bmV4dHkiLCJ0b25leHQiXS5pbmRleE9mKG0uZmlsbCkmJi0xPT09Zi5pbmRleE9mKGwpJiZm LnB1c2gobCksZi5wdXNoKHApKSxsPXApfWQodCx1LGYscixuKX19LHIuY2xlYW49ZnVuY3Rp b24odCxlLHIsbil7dmFyIGksYSxvLHM9bi5fcGxvdHN8fHt9LGw9ZS5fcGxvdHN8fHt9LHU9 bi5fc3VicGxvdHN8fHt9O2lmKG4uX2hhc09ubHlMYXJnZVNwbG9tcyYmIWUuX2hhc09ubHlM YXJnZVNwbG9tcylmb3IobyBpbiBzKShpPXNbb10pLnBsb3Rncm91cCYmaS5wbG90Z3JvdXAu cmVtb3ZlKCk7dmFyIGY9bi5faGFzJiZuLl9oYXMoImdsIiksaD1lLl9oYXMmJmUuX2hhcygi Z2wiKTtpZihmJiYhaClmb3IobyBpbiBzKShpPXNbb10pLl9zY2VuZSYmaS5fc2NlbmUuZGVz dHJveSgpO2lmKHUueGF4aXMmJnUueWF4aXMpe3ZhciBwPWMubGlzdElkcyh7X2Z1bGxMYXlv dXQ6bn0pO2ZvcihhPTA7YTxwLmxlbmd0aDthKyspe3ZhciBkPXBbYV07ZVtjLmlkMm5hbWUo ZCldfHxuLl9pbmZvbGF5ZXIuc2VsZWN0QWxsKCIuZy0iK2QrInRpdGxlIikucmVtb3ZlKCl9 fXZhciBtPW4uX2hhcyYmbi5faGFzKCJjYXJ0ZXNpYW4iKSx5PWUuX2hhcyYmZS5faGFzKCJj YXJ0ZXNpYW4iKTtpZihtJiYheSlnKG4uX2NhcnRlc2lhbmxheWVyLnNlbGVjdEFsbCgiLnN1 YnBsb3QiKSxuKSxuLl9kZWZzLnNlbGVjdEFsbCgiLmF4ZXNjbGlwIikucmVtb3ZlKCksZGVs ZXRlIG4uX2F4aXNDb25zdHJhaW50R3JvdXBzLGRlbGV0ZSBuLl9heGlzTWF0Y2hHcm91cHM7 ZWxzZSBpZih1LmNhcnRlc2lhbilmb3IoYT0wO2E8dS5jYXJ0ZXNpYW4ubGVuZ3RoO2ErKyl7 dmFyIHg9dS5jYXJ0ZXNpYW5bYV07aWYoIWxbeF0pe3ZhciBiPSIuIit4KyIsLiIreCsiLXgs LiIreCsiLXkiO24uX2NhcnRlc2lhbmxheWVyLnNlbGVjdEFsbChiKS5yZW1vdmUoKSx2KHgs bil9fX0sci5kcmF3RnJhbWV3b3JrPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2Z1bGxMYXlvdXQs cj1mdW5jdGlvbih0KXt2YXIgZSxyLG4saSxhLG8scz10Ll9mdWxsTGF5b3V0LGw9cy5fc3Vi cGxvdHMuY2FydGVzaWFuLGM9bC5sZW5ndGgsdT1bXSxmPVtdO2ZvcihlPTA7ZTxjO2UrKyl7 bj1sW2VdLGk9cy5fcGxvdHNbbl0sYT1pLnhheGlzLG89aS55YXhpczt2YXIgaD1hLl9tYWlu QXhpcyxwPW8uX21haW5BeGlzLGQ9aC5faWQrcC5faWQsbT1zLl9wbG90c1tkXTtpLm92ZXJs YXlzPVtdLGQhPT1uJiZtPyhpLm1haW5wbG90PWQsaS5tYWlucGxvdGluZm89bSxmLnB1c2go bikpOihpLm1haW5wbG90PXZvaWQgMCxpLm1haW5wbG90aW5mbz12b2lkIDAsdS5wdXNoKG4p KX1mb3IoZT0wO2U8Zi5sZW5ndGg7ZSsrKW49ZltlXSwoaT1zLl9wbG90c1tuXSkubWFpbnBs b3RpbmZvLm92ZXJsYXlzLnB1c2goaSk7dmFyIGc9dS5jb25jYXQoZiksdj1uZXcgQXJyYXko Yyk7Zm9yKGU9MDtlPGM7ZSsrKXtuPWdbZV0saT1zLl9wbG90c1tuXSxhPWkueGF4aXMsbz1p LnlheGlzO3ZhciB5PVtuLGEubGF5ZXIsby5sYXllcixhLm92ZXJsYXlpbmd8fCIiLG8ub3Zl cmxheWluZ3x8IiJdO2ZvcihyPTA7cjxpLm92ZXJsYXlzLmxlbmd0aDtyKyspeS5wdXNoKGku b3ZlcmxheXNbcl0uaWQpO3ZbZV09eX1yZXR1cm4gdn0odCksaT1lLl9jYXJ0ZXNpYW5sYXll ci5zZWxlY3RBbGwoIi5zdWJwbG90IikuZGF0YShyLFN0cmluZyk7aS5lbnRlcigpLmFwcGVu ZCgiZyIpLmF0dHIoImNsYXNzIiwoZnVuY3Rpb24odCl7cmV0dXJuInN1YnBsb3QgIit0WzBd fSkpLGkub3JkZXIoKSxpLmV4aXQoKS5jYWxsKGcsZSksaS5lYWNoKChmdW5jdGlvbihyKXt2 YXIgaT1yWzBdLGE9ZS5fcGxvdHNbaV07YS5wbG90Z3JvdXA9bi5zZWxlY3QodGhpcyksbSh0 LGEpLGEuZHJhZ2xheWVyPWgoZS5fZHJhZ2dlcnMsImciLGkpfSkpfSxyLnJhbmdlUGxvdD1m dW5jdGlvbih0LGUscil7bSh0LGUpLGQodCxlLHIpLG8uc3R5bGUodCl9LHIudG9TVkc9ZnVu Y3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dC5fZ2xpbWFnZXMscj1uLnNlbGVjdCh0KS5z ZWxlY3RBbGwoIi5zdmctY29udGFpbmVyIik7ci5maWx0ZXIoKGZ1bmN0aW9uKHQsZSl7cmV0 dXJuIGU9PT1yLnNpemUoKS0xfSkpLnNlbGVjdEFsbCgiLmdsLWNhbnZhcy1jb250ZXh0LCAu Z2wtY2FudmFzLWZvY3VzIikuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD10aGlzLnRvRGF0YVVS TCgiaW1hZ2UvcG5nIik7ZS5hcHBlbmQoInN2ZzppbWFnZSIpLmF0dHIoe3htbG5zOmYuc3Zn LCJ4bGluazpocmVmIjp0LHByZXNlcnZlQXNwZWN0UmF0aW86Im5vbmUiLHg6MCx5OjAsd2lk dGg6dGhpcy5zdHlsZS53aWR0aCxoZWlnaHQ6dGhpcy5zdHlsZS5oZWlnaHR9KX0pKX0sci51 cGRhdGVGeD10KCIuL2dyYXBoX2ludGVyYWN0IikudXBkYXRlRnh9LHsiLi4vLi4vY29tcG9u ZW50cy9kcmF3aW5nIjozODgsIi4uLy4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIjo0 ODAsIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9yZWdpc3RyeSI6NjM4LCIuLi9nZXRfZGF0YSI6 NTkzLCIuLi9wbG90cyI6NjE5LCIuL2F0dHJpYnV0ZXMiOjU1MiwiLi9heGlzX2lkcyI6NTU4 LCIuL2NvbnN0YW50cyI6NTYxLCIuL2dyYXBoX2ludGVyYWN0Ijo1NjQsIi4vbGF5b3V0X2F0 dHJpYnV0ZXMiOjU2OSwiLi9sYXlvdXRfZGVmYXVsdHMiOjU3MCwiLi90cmFuc2l0aW9uX2F4 ZXMiOjU4MSwiQHBsb3RseS9kMyI6NTh9XSw1Njk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiLi4vZm9udF9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9jb21wb25l bnRzL2NvbG9yL2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZy9h dHRyaWJ1dGVzIikuZGFzaCxvPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LHM9 dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLnRlbXBsYXRlZEFycmF5LGw9dCgi Li4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfZm9ybWF0X2F0dHJpYnV0ZXMiKS5kZXNjcmlw dGlvbldpdGhEYXRlcyxjPXQoIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiKS5PTkVEQVks dT10KCIuL2NvbnN0YW50cyIpLGY9dS5IT1VSX1BBVFRFUk4saD11LldFRUtEQVlfUEFUVEVS TixwPXt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhdXRvIiwibGluZWFyIiwiYXJy YXkiXSxlZGl0VHlwZToidGlja3MiLGltcGxpZWRFZGl0czp7dGljazA6dm9pZCAwLGR0aWNr OnZvaWQgMH19O2Z1bmN0aW9uIGQodCl7cmV0dXJue3ZhbFR5cGU6ImludGVnZXIiLG1pbjow LGRmbHQ6dD81OjAsZWRpdFR5cGU6InRpY2tzIn19dmFyIG09e3ZhbFR5cGU6ImFueSIsZWRp dFR5cGU6InRpY2tzIixpbXBsaWVkRWRpdHM6e3RpY2ttb2RlOiJsaW5lYXIifX0sZz17dmFs VHlwZToiYW55IixlZGl0VHlwZToidGlja3MiLGltcGxpZWRFZGl0czp7dGlja21vZGU6Imxp bmVhciJ9fSx2PXt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToidGlja3MifSx5PXt2 YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJvdXRzaWRlIiwiaW5zaWRlIiwiIl0sZWRp dFR5cGU6InRpY2tzIn07ZnVuY3Rpb24geCh0KXt2YXIgZT17dmFsVHlwZToibnVtYmVyIixt aW46MCxlZGl0VHlwZToidGlja3MifTtyZXR1cm4gdHx8KGUuZGZsdD01KSxlfWZ1bmN0aW9u IGIodCl7dmFyIGU9e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZWRpdFR5cGU6InRpY2tzIn07 cmV0dXJuIHR8fChlLmRmbHQ9MSksZX12YXIgXz17dmFsVHlwZToiY29sb3IiLGRmbHQ6aS5k ZWZhdWx0TGluZSxlZGl0VHlwZToidGlja3MifSx3PXt2YWxUeXBlOiJjb2xvciIsZGZsdDpp LmxpZ2h0TGluZSxlZGl0VHlwZToidGlja3MifTtmdW5jdGlvbiBUKHQpe3ZhciBlPXt2YWxU eXBlOiJudW1iZXIiLG1pbjowLGVkaXRUeXBlOiJ0aWNrcyJ9O3JldHVybiB0fHwoZS5kZmx0 PTEpLGV9dmFyIGs9byh7fSxhLHtlZGl0VHlwZToidGlja3MifSksQT17dmFsVHlwZToiYm9v bGVhbiIsZWRpdFR5cGU6InRpY2tzIn07ZS5leHBvcnRzPXt2aXNpYmxlOnt2YWxUeXBlOiJi b29sZWFuIixlZGl0VHlwZToicGxvdCJ9LGNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpp LmRlZmF1bHRMaW5lLGVkaXRUeXBlOiJ0aWNrcyJ9LHRpdGxlOnt0ZXh0Ont2YWxUeXBlOiJz dHJpbmciLGVkaXRUeXBlOiJ0aWNrcyJ9LGZvbnQ6bih7ZWRpdFR5cGU6InRpY2tzIn0pLHN0 YW5kb2ZmOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGVkaXRUeXBlOiJ0aWNrcyJ9LGVkaXRU eXBlOiJ0aWNrcyJ9LHR5cGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbIi0iLCJs aW5lYXIiLCJsb2ciLCJkYXRlIiwiY2F0ZWdvcnkiLCJtdWx0aWNhdGVnb3J5Il0sZGZsdDoi LSIsZWRpdFR5cGU6ImNhbGMiLF9ub1RlbXBsYXRpbmc6ITB9LGF1dG90eXBlbnVtYmVyczp7 dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiY29udmVydCB0eXBlcyIsInN0cmljdCJd LGRmbHQ6ImNvbnZlcnQgdHlwZXMiLGVkaXRUeXBlOiJjYWxjIn0sYXV0b3JhbmdlOnt2YWxU eXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyEwLCExLCJyZXZlcnNlZCJdLGRmbHQ6ITAsZWRp dFR5cGU6ImF4cmFuZ2UiLGltcGxpZWRFZGl0czp7InJhbmdlWzBdIjp2b2lkIDAsInJhbmdl WzFdIjp2b2lkIDB9fSxyYW5nZW1vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpb Im5vcm1hbCIsInRvemVybyIsIm5vbm5lZ2F0aXZlIl0sZGZsdDoibm9ybWFsIixlZGl0VHlw ZToicGxvdCJ9LHJhbmdlOnt2YWxUeXBlOiJpbmZvX2FycmF5IixpdGVtczpbe3ZhbFR5cGU6 ImFueSIsZWRpdFR5cGU6ImF4cmFuZ2UiLGltcGxpZWRFZGl0czp7Il5hdXRvcmFuZ2UiOiEx fSxhbmltOiEwfSx7dmFsVHlwZToiYW55IixlZGl0VHlwZToiYXhyYW5nZSIsaW1wbGllZEVk aXRzOnsiXmF1dG9yYW5nZSI6ITF9LGFuaW06ITB9XSxlZGl0VHlwZToiYXhyYW5nZSIsaW1w bGllZEVkaXRzOnthdXRvcmFuZ2U6ITF9LGFuaW06ITB9LGZpeGVkcmFuZ2U6e3ZhbFR5cGU6 ImJvb2xlYW4iLGRmbHQ6ITEsZWRpdFR5cGU6ImNhbGMifSxzY2FsZWFuY2hvcjp7dmFsVHlw ZToiZW51bWVyYXRlZCIsdmFsdWVzOlt1LmlkUmVnZXgueC50b1N0cmluZygpLHUuaWRSZWdl eC55LnRvU3RyaW5nKCldLGVkaXRUeXBlOiJwbG90In0sc2NhbGVyYXRpbzp7dmFsVHlwZToi bnVtYmVyIixtaW46MCxkZmx0OjEsZWRpdFR5cGU6InBsb3QifSxjb25zdHJhaW46e3ZhbFR5 cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInJhbmdlIiwiZG9tYWluIl0sZWRpdFR5cGU6InBs b3QifSxjb25zdHJhaW50b3dhcmQ6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImxl ZnQiLCJjZW50ZXIiLCJyaWdodCIsInRvcCIsIm1pZGRsZSIsImJvdHRvbSJdLGVkaXRUeXBl OiJwbG90In0sbWF0Y2hlczp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlt1LmlkUmVn ZXgueC50b1N0cmluZygpLHUuaWRSZWdleC55LnRvU3RyaW5nKCldLGVkaXRUeXBlOiJjYWxj In0scmFuZ2VicmVha3M6cygicmFuZ2VicmVhayIse2VuYWJsZWQ6e3ZhbFR5cGU6ImJvb2xl YW4iLGRmbHQ6ITAsZWRpdFR5cGU6ImNhbGMifSxib3VuZHM6e3ZhbFR5cGU6ImluZm9fYXJy YXkiLGl0ZW1zOlt7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYyJ9LHt2YWxUeXBlOiJh bnkiLGVkaXRUeXBlOiJjYWxjIn1dLGVkaXRUeXBlOiJjYWxjIn0scGF0dGVybjp7dmFsVHlw ZToiZW51bWVyYXRlZCIsdmFsdWVzOltoLGYsIiJdLGVkaXRUeXBlOiJjYWxjIn0sdmFsdWVz Ont2YWxUeXBlOiJpbmZvX2FycmF5IixmcmVlTGVuZ3RoOiEwLGVkaXRUeXBlOiJjYWxjIixp dGVtczp7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYyJ9fSxkdmFsdWU6e3ZhbFR5cGU6 Im51bWJlciIsZWRpdFR5cGU6ImNhbGMiLG1pbjowLGRmbHQ6Y30sZWRpdFR5cGU6ImNhbGMi fSksdGlja21vZGU6cCxudGlja3M6ZCgpLHRpY2swOm0sZHRpY2s6Zyx0aWNrbGFiZWxzdGVw Ont2YWxUeXBlOiJpbnRlZ2VyIixtaW46MSxkZmx0OjEsZWRpdFR5cGU6InRpY2tzIn0sdGlj a3ZhbHM6dix0aWNrdGV4dDp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6InRpY2tz In0sdGlja3M6eSx0aWNrc29uOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJsYWJl bHMiLCJib3VuZGFyaWVzIl0sZGZsdDoibGFiZWxzIixlZGl0VHlwZToidGlja3MifSx0aWNr bGFiZWxtb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJpbnN0YW50IiwicGVy aW9kIl0sZGZsdDoiaW5zdGFudCIsZWRpdFR5cGU6InRpY2tzIn0sdGlja2xhYmVscG9zaXRp b246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbIm91dHNpZGUiLCJpbnNpZGUiLCJv dXRzaWRlIHRvcCIsImluc2lkZSB0b3AiLCJvdXRzaWRlIGxlZnQiLCJpbnNpZGUgbGVmdCIs Im91dHNpZGUgcmlnaHQiLCJpbnNpZGUgcmlnaHQiLCJvdXRzaWRlIGJvdHRvbSIsImluc2lk ZSBib3R0b20iXSxkZmx0OiJvdXRzaWRlIixlZGl0VHlwZToiY2FsYyJ9LHRpY2tsYWJlbG92 ZXJmbG93Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhbGxvdyIsImhpZGUgcGFz dCBkaXYiLCJoaWRlIHBhc3QgZG9tYWluIl0sZWRpdFR5cGU6ImNhbGMifSxtaXJyb3I6e3Zh bFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbITAsInRpY2tzIiwhMSwiYWxsIiwiYWxsdGlj a3MiXSxkZmx0OiExLGVkaXRUeXBlOiJ0aWNrcytsYXlvdXRzdHlsZSJ9LHRpY2tsZW46eCgp LHRpY2t3aWR0aDpiKCksdGlja2NvbG9yOl8sc2hvd3RpY2tsYWJlbHM6e3ZhbFR5cGU6ImJv b2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6InRpY2tzIn0sYXV0b21hcmdpbjp7dmFsVHlwZToi Ym9vbGVhbiIsZGZsdDohMSxlZGl0VHlwZToidGlja3MifSxzaG93c3Bpa2VzOnt2YWxUeXBl OiJib29sZWFuIixkZmx0OiExLGVkaXRUeXBlOiJtb2RlYmFyIn0sc3Bpa2Vjb2xvcjp7dmFs VHlwZToiY29sb3IiLGRmbHQ6bnVsbCxlZGl0VHlwZToibm9uZSJ9LHNwaWtldGhpY2tuZXNz Ont2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MyxlZGl0VHlwZToibm9uZSJ9LHNwaWtlZGFzaDpv KHt9LGEse2RmbHQ6ImRhc2giLGVkaXRUeXBlOiJub25lIn0pLHNwaWtlbW9kZTp7dmFsVHlw ZToiZmxhZ2xpc3QiLGZsYWdzOlsidG9heGlzIiwiYWNyb3NzIiwibWFya2VyIl0sZGZsdDoi dG9heGlzIixlZGl0VHlwZToibm9uZSJ9LHNwaWtlc25hcDp7dmFsVHlwZToiZW51bWVyYXRl ZCIsdmFsdWVzOlsiZGF0YSIsImN1cnNvciIsImhvdmVyZWQgZGF0YSJdLGRmbHQ6ImhvdmVy ZWQgZGF0YSIsZWRpdFR5cGU6Im5vbmUifSx0aWNrZm9udDpuKHtlZGl0VHlwZToidGlja3Mi fSksdGlja2FuZ2xlOnt2YWxUeXBlOiJhbmdsZSIsZGZsdDoiYXV0byIsZWRpdFR5cGU6InRp Y2tzIn0sdGlja3ByZWZpeDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGVkaXRUeXBlOiJ0 aWNrcyJ9LHNob3d0aWNrcHJlZml4Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJh bGwiLCJmaXJzdCIsImxhc3QiLCJub25lIl0sZGZsdDoiYWxsIixlZGl0VHlwZToidGlja3Mi fSx0aWNrc3VmZml4Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6InRpY2tz In0sc2hvd3RpY2tzdWZmaXg6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImFsbCIs ImZpcnN0IiwibGFzdCIsIm5vbmUiXSxkZmx0OiJhbGwiLGVkaXRUeXBlOiJ0aWNrcyJ9LHNo b3dleHBvbmVudDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiYWxsIiwiZmlyc3Qi LCJsYXN0Iiwibm9uZSJdLGRmbHQ6ImFsbCIsZWRpdFR5cGU6InRpY2tzIn0sZXhwb25lbnRm b3JtYXQ6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbIm5vbmUiLCJlIiwiRSIsInBv d2VyIiwiU0kiLCJCIl0sZGZsdDoiQiIsZWRpdFR5cGU6InRpY2tzIn0sbWluZXhwb25lbnQ6 e3ZhbFR5cGU6Im51bWJlciIsZGZsdDozLG1pbjowLGVkaXRUeXBlOiJ0aWNrcyJ9LHNlcGFy YXRldGhvdXNhbmRzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExLGVkaXRUeXBlOiJ0aWNr cyJ9LHRpY2tmb3JtYXQ6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIixlZGl0VHlwZToidGlj a3MiLGRlc2NyaXB0aW9uOmwoInRpY2sgbGFiZWwiKX0sdGlja2Zvcm1hdHN0b3BzOnMoInRp Y2tmb3JtYXRzdG9wIix7ZW5hYmxlZDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0 VHlwZToidGlja3MifSxkdGlja3JhbmdlOnt2YWxUeXBlOiJpbmZvX2FycmF5IixpdGVtczpb e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6InRpY2tzIn0se3ZhbFR5cGU6ImFueSIsZWRpdFR5 cGU6InRpY2tzIn1dLGVkaXRUeXBlOiJ0aWNrcyJ9LHZhbHVlOnt2YWxUeXBlOiJzdHJpbmci LGRmbHQ6IiIsZWRpdFR5cGU6InRpY2tzIn0sZWRpdFR5cGU6InRpY2tzIn0pLGhvdmVyZm9y bWF0Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6Im5vbmUiLGRlc2NyaXB0 aW9uOmwoImhvdmVyIHRleHQiKX0sc2hvd2xpbmU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6 ITEsZWRpdFR5cGU6InRpY2tzK2xheW91dHN0eWxlIn0sbGluZWNvbG9yOnt2YWxUeXBlOiJj b2xvciIsZGZsdDppLmRlZmF1bHRMaW5lLGVkaXRUeXBlOiJsYXlvdXRzdHlsZSJ9LGxpbmV3 aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjEsZWRpdFR5cGU6InRpY2tzK2xh eW91dHN0eWxlIn0sc2hvd2dyaWQ6QSxncmlkY29sb3I6dyxncmlkd2lkdGg6VCgpLGdyaWRk YXNoOmssemVyb2xpbmU6e3ZhbFR5cGU6ImJvb2xlYW4iLGVkaXRUeXBlOiJ0aWNrcyJ9LHpl cm9saW5lY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmkuZGVmYXVsdExpbmUsZWRpdFR5 cGU6InRpY2tzIn0semVyb2xpbmV3aWR0aDp7dmFsVHlwZToibnVtYmVyIixkZmx0OjEsZWRp dFR5cGU6InRpY2tzIn0sc2hvd2RpdmlkZXJzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEw LGVkaXRUeXBlOiJ0aWNrcyJ9LGRpdmlkZXJjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6 aS5kZWZhdWx0TGluZSxlZGl0VHlwZToidGlja3MifSxkaXZpZGVyd2lkdGg6e3ZhbFR5cGU6 Im51bWJlciIsZGZsdDoxLGVkaXRUeXBlOiJ0aWNrcyJ9LGFuY2hvcjp7dmFsVHlwZToiZW51 bWVyYXRlZCIsdmFsdWVzOlsiZnJlZSIsdS5pZFJlZ2V4LngudG9TdHJpbmcoKSx1LmlkUmVn ZXgueS50b1N0cmluZygpXSxlZGl0VHlwZToicGxvdCJ9LHNpZGU6e3ZhbFR5cGU6ImVudW1l cmF0ZWQiLHZhbHVlczpbInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCJdLGVkaXRUeXBl OiJwbG90In0sb3ZlcmxheWluZzp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiZnJl ZSIsdS5pZFJlZ2V4LngudG9TdHJpbmcoKSx1LmlkUmVnZXgueS50b1N0cmluZygpXSxlZGl0 VHlwZToicGxvdCJ9LG1pbm9yOnt0aWNrbW9kZTpwLG50aWNrczpkKCJtaW5vciIpLHRpY2sw Om0sZHRpY2s6Zyx0aWNrdmFsczp2LHRpY2tzOnksdGlja2xlbjp4KCJtaW5vciIpLHRpY2t3 aWR0aDpiKCJtaW5vciIpLHRpY2tjb2xvcjpfLGdyaWRjb2xvcjp3LGdyaWR3aWR0aDpUKCJt aW5vciIpLGdyaWRkYXNoOmssc2hvd2dyaWQ6QSxlZGl0VHlwZToidGlja3MifSxsYXllcjp7 dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiYWJvdmUgdHJhY2VzIiwiYmVsb3cgdHJh Y2VzIl0sZGZsdDoiYWJvdmUgdHJhY2VzIixlZGl0VHlwZToicGxvdCJ9LGRvbWFpbjp7dmFs VHlwZToiaW5mb19hcnJheSIsaXRlbXM6W3t2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDox LGVkaXRUeXBlOiJwbG90In0se3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZWRpdFR5 cGU6InBsb3QifV0sZGZsdDpbMCwxXSxlZGl0VHlwZToicGxvdCJ9LHBvc2l0aW9uOnt2YWxU eXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MCxlZGl0VHlwZToicGxvdCJ9LGNhdGVn b3J5b3JkZXI6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInRyYWNlIiwiY2F0ZWdv cnkgYXNjZW5kaW5nIiwiY2F0ZWdvcnkgZGVzY2VuZGluZyIsImFycmF5IiwidG90YWwgYXNj ZW5kaW5nIiwidG90YWwgZGVzY2VuZGluZyIsIm1pbiBhc2NlbmRpbmciLCJtaW4gZGVzY2Vu ZGluZyIsIm1heCBhc2NlbmRpbmciLCJtYXggZGVzY2VuZGluZyIsInN1bSBhc2NlbmRpbmci LCJzdW0gZGVzY2VuZGluZyIsIm1lYW4gYXNjZW5kaW5nIiwibWVhbiBkZXNjZW5kaW5nIiwi bWVkaWFuIGFzY2VuZGluZyIsIm1lZGlhbiBkZXNjZW5kaW5nIl0sZGZsdDoidHJhY2UiLGVk aXRUeXBlOiJjYWxjIn0sY2F0ZWdvcnlhcnJheTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRp dFR5cGU6ImNhbGMifSx1aXJldmlzaW9uOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJub25l In0sZWRpdFR5cGU6ImNhbGMiLF9kZXByZWNhdGVkOnthdXRvdGljazp7dmFsVHlwZToiYm9v bGVhbiIsZWRpdFR5cGU6InRpY2tzIn0sdGl0bGU6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5 cGU6InRpY2tzIn0sdGl0bGVmb250Om4oe2VkaXRUeXBlOiJ0aWNrcyJ9KX19fSx7Ii4uLy4u L2NvbXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyI6MzY1LCIuLi8uLi9jb21wb25lbnRzL2Ry YXdpbmcvYXR0cmlidXRlcyI6Mzg3LCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIjo0Nzks Ii4uLy4uL2xpYi9leHRlbmQiOjQ5MywiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6 NTQzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19mb3JtYXRfYXR0cmlidXRlcyI6NTU3 LCIuLi9mb250X2F0dHJpYnV0ZXMiOjU4NSwiLi9jb25zdGFudHMiOjU2MX1dLDU3MDpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4u Ly4uL2NvbXBvbmVudHMvY29sb3IiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvZngvaGVscGVy cyIpLmlzVW5pZmllZEhvdmVyLG89dCgiLi4vLi4vY29tcG9uZW50cy9meC9ob3Zlcm1vZGVf ZGVmYXVsdHMiKSxzPXQoIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKSxsPXQoIi4u L2xheW91dF9hdHRyaWJ1dGVzIiksYz10KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksdT10KCIu L3R5cGVfZGVmYXVsdHMiKSxmPXQoIi4vYXhpc19kZWZhdWx0cyIpLGg9dCgiLi9jb25zdHJh aW50cyIpLHA9dCgiLi9wb3NpdGlvbl9kZWZhdWx0cyIpLGQ9dCgiLi9heGlzX2lkcyIpLG09 ZC5pZDJuYW1lLGc9ZC5uYW1lMmlkLHY9dCgiLi9jb25zdGFudHMiKS5BWF9JRF9QQVRURVJO LHk9dCgiLi4vLi4vcmVnaXN0cnkiKSx4PXkudHJhY2VJcyxiPXkuZ2V0Q29tcG9uZW50TWV0 aG9kO2Z1bmN0aW9uIF8odCxlLHIpe0FycmF5LmlzQXJyYXkodFtlXSk/dFtlXS5wdXNoKHIp OnRbZV09W3JdfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIHksdyxUPWUuYXV0b3R5 cGVudW1iZXJzLGs9e30sQT17fSxNPXt9LFM9e30sRT17fSxMPXt9LEM9e30sUD17fSxJPXt9 LE89e307Zm9yKHk9MDt5PHIubGVuZ3RoO3krKyl7dmFyIHo9clt5XTtpZih4KHosImNhcnRl c2lhbiIpfHx4KHosImdsMmQiKSl7dmFyIEQsUjtpZih6LnhheGlzKUQ9bSh6LnhheGlzKSxf KGssRCx6KTtlbHNlIGlmKHoueGF4ZXMpZm9yKHc9MDt3PHoueGF4ZXMubGVuZ3RoO3crKylf KGssbSh6LnhheGVzW3ddKSx6KTtpZih6LnlheGlzKVI9bSh6LnlheGlzKSxfKGssUix6KTtl bHNlIGlmKHoueWF4ZXMpZm9yKHc9MDt3PHoueWF4ZXMubGVuZ3RoO3crKylfKGssbSh6Lnlh eGVzW3ddKSx6KTtpZigiZnVubmVsIj09PXoudHlwZT8iaCI9PT16Lm9yaWVudGF0aW9uPyhE JiYoQVtEXT0hMCksUiYmKENbUl09ITApKTpSJiYoTVtSXT0hMCk6ImltYWdlIj09PXoudHlw ZT8oUiYmKFBbUl09ITApLEQmJihQW0RdPSEwKSk6KFImJihFW1JdPSEwLExbUl09ITApLHgo eiwiY2FycGV0IikmJigiY2FycGV0IiE9PXoudHlwZXx8ei5fY2hlYXRlcil8fEQmJihTW0Rd PSEwKSksImNhcnBldCI9PT16LnR5cGUmJnouX2NoZWF0ZXImJkQmJihBW0RdPSEwKSx4KHos IjJkTWFwIikmJihJW0RdPSEwLElbUl09ITApLHgoeiwib3JpZW50ZWQiKSlPWyJoIj09PXou b3JpZW50YXRpb24/UjpEXT0hMH19dmFyIEY9ZS5fc3VicGxvdHMsQj1GLnhheGlzLE49Ri55 YXhpcyxqPW4uc2ltcGxlTWFwKEIsbSksVT1uLnNpbXBsZU1hcChOLG0pLFY9ai5jb25jYXQo VSksSD1pLmJhY2tncm91bmQ7Qi5sZW5ndGgmJk4ubGVuZ3RoJiYoSD1uLmNvZXJjZSh0LGUs bCwicGxvdF9iZ2NvbG9yIikpO3ZhciBxLEcsWSxXLFgsWj1pLmNvbWJpbmUoSCxlLnBhcGVy X2JnY29sb3IpO2Z1bmN0aW9uIEooKXt2YXIgdD1rW3FdfHxbXTtYLl90cmFjZUluZGljZXM9 dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Ll9leHBhbmRlZEluZGV4fSkpLFguX2Fubklu ZGljZXM9W10sWC5fc2hhcGVJbmRpY2VzPVtdLFguX2ltZ0luZGljZXM9W10sWC5fc3VicGxv dHNXaXRoPVtdLFguX2NvdW50ZXJBeGVzPVtdLFguX25hbWU9WC5fYXR0cj1xLFguX2lkPUd9 ZnVuY3Rpb24gSyh0LGUpe3JldHVybiBuLmNvZXJjZShXLFgsYyx0LGUpfWZ1bmN0aW9uIFEo dCxlKXtyZXR1cm4gbi5jb2VyY2UyKFcsWCxjLHQsZSl9ZnVuY3Rpb24gJCh0KXtyZXR1cm4i eCI9PT10P046Qn1mdW5jdGlvbiB0dChlLHIpe2Zvcih2YXIgbj0ieCI9PT1lP2o6VSxpPVtd LGE9MDthPG4ubGVuZ3RoO2ErKyl7dmFyIG89blthXTtvPT09cnx8KHRbb118fHt9KS5vdmVy bGF5aW5nfHxpLnB1c2goZyhvKSl9cmV0dXJuIGl9dmFyIGV0PXt4OiQoIngiKSx5OiQoInki KX0scnQ9ZXQueC5jb25jYXQoZXQueSksbnQ9e30saXQ9W107ZnVuY3Rpb24gYXQoKXt2YXIg dD1XLm1hdGNoZXM7di50ZXN0KHQpJiYtMT09PXJ0LmluZGV4T2YodCkmJihudFt0XT1XLnR5 cGUsaXQ9T2JqZWN0LmtleXMobnQpKX12YXIgb3Q9byh0LGUpLHN0PWEob3QpO2Zvcih5PTA7 eTxWLmxlbmd0aDt5Kyspe3E9Vlt5XSxHPWcocSksWT1xLmNoYXJBdCgwKSxuLmlzUGxhaW5P YmplY3QodFtxXSl8fCh0W3FdPXt9KSxXPXRbcV0sWD1zLm5ld0NvbnRhaW5lcihlLHEsWSsi YXhpcyIpLEooKTt2YXIgbHQ9IngiPT09WSYmIVNbcV0mJkFbcV18fCJ5Ij09PVkmJiFFW3Fd JiZNW3FdLGN0PSJ5Ij09PVkmJighTFtxXSYmQ1txXXx8UFtxXSksdXQ9e2hhc01pbm9yOiEw LGxldHRlcjpZLGZvbnQ6ZS5mb250LG91dGVyVGlja3M6SVtxXSxzaG93R3JpZDohT1txXSxk YXRhOmtbcV18fFtdLGJnQ29sb3I6WixjYWxlbmRhcjplLmNhbGVuZGFyLGF1dG9tYXJnaW46 ITAsdmlzaWJsZURmbHQ6bHQscmV2ZXJzZURmbHQ6Y3QsYXV0b3R5cGVudW1iZXJzRGZsdDpU LHNwbG9tU3Rhc2g6KChlLl9zcGxvbUF4ZXN8fHt9KVtZXXx8e30pW0ddfTtLKCJ1aXJldmlz aW9uIixlLnVpcmV2aXNpb24pLHUoVyxYLEssdXQpLGYoVyxYLEssdXQsZSk7dmFyIGZ0PXN0 JiZZPT09b3QuY2hhckF0KDApLGh0PVEoInNwaWtlY29sb3IiLHN0P1guY29sb3I6dm9pZCAw KSxwdD1RKCJzcGlrZXRoaWNrbmVzcyIsc3Q/MS41OnZvaWQgMCksZHQ9USgic3Bpa2VkYXNo IixzdD8iZG90Ijp2b2lkIDApLG10PVEoInNwaWtlbW9kZSIsc3Q/ImFjcm9zcyI6dm9pZCAw KSxndD1RKCJzcGlrZXNuYXAiKTtLKCJzaG93c3Bpa2VzIiwhIShmdHx8aHR8fHB0fHxkdHx8 bXR8fGd0KSl8fChkZWxldGUgWC5zcGlrZWNvbG9yLGRlbGV0ZSBYLnNwaWtldGhpY2tuZXNz LGRlbGV0ZSBYLnNwaWtlZGFzaCxkZWxldGUgWC5zcGlrZW1vZGUsZGVsZXRlIFguc3Bpa2Vz bmFwKSxwKFcsWCxLLHtsZXR0ZXI6WSxjb3VudGVyQXhlczpldFtZXSxvdmVybGF5YWJsZUF4 ZXM6dHQoWSxxKSxncmlkOmUuZ3JpZH0pLEsoInRpdGxlLnN0YW5kb2ZmIiksYXQoKSxYLl9p bnB1dD1XfWZvcih5PTA7eTxpdC5sZW5ndGg7KXtHPWl0W3krK10sWT0ocT1tKEcpKS5jaGFy QXQoMCksbi5pc1BsYWluT2JqZWN0KHRbcV0pfHwodFtxXT17fSksVz10W3FdLFg9cy5uZXdD b250YWluZXIoZSxxLFkrImF4aXMiKSxKKCk7dmFyIHZ0PXtsZXR0ZXI6WSxmb250OmUuZm9u dCxvdXRlclRpY2tzOklbcV0sc2hvd0dyaWQ6IU9bcV0sZGF0YTpbXSxiZ0NvbG9yOlosY2Fs ZW5kYXI6ZS5jYWxlbmRhcixhdXRvbWFyZ2luOiEwLHZpc2libGVEZmx0OiExLHJldmVyc2VE Zmx0OiExLGF1dG90eXBlbnVtYmVyc0RmbHQ6VCxzcGxvbVN0YXNoOigoZS5fc3Bsb21BeGVz fHx7fSlbWV18fHt9KVtHXX07SygidWlyZXZpc2lvbiIsZS51aXJldmlzaW9uKSxYLnR5cGU9 bnRbR118fCJsaW5lYXIiLGYoVyxYLEssdnQsZSkscChXLFgsSyx7bGV0dGVyOlksY291bnRl ckF4ZXM6ZXRbWV0sb3ZlcmxheWFibGVBeGVzOnR0KFkscSksZ3JpZDplLmdyaWR9KSxLKCJm aXhlZHJhbmdlIiksYXQoKSxYLl9pbnB1dD1XfXZhciB5dD1iKCJyYW5nZXNsaWRlciIsImhh bmRsZURlZmF1bHRzIikseHQ9YigicmFuZ2VzZWxlY3RvciIsImhhbmRsZURlZmF1bHRzIik7 Zm9yKHk9MDt5PGoubGVuZ3RoO3krKylxPWpbeV0sVz10W3FdLFg9ZVtxXSx5dCh0LGUscSks ImRhdGUiPT09WC50eXBlJiZ4dChXLFgsZSxVLFguY2FsZW5kYXIpLEsoImZpeGVkcmFuZ2Ui KTtmb3IoeT0wO3k8VS5sZW5ndGg7eSsrKXtxPVVbeV0sVz10W3FdLFg9ZVtxXTt2YXIgYnQ9 ZVttKFguYW5jaG9yKV07SygiZml4ZWRyYW5nZSIsYigicmFuZ2VzbGlkZXIiLCJpc1Zpc2li bGUiKShidCkpfWguaGFuZGxlRGVmYXVsdHModCxlLHtheElkczpydC5jb25jYXQoaXQpLnNv cnQoZC5pZFNvcnQpLGF4SGFzSW1hZ2U6UH0pfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9y IjozNjYsIi4uLy4uL2NvbXBvbmVudHMvZngvaGVscGVycyI6NDAyLCIuLi8uLi9jb21wb25l bnRzL2Z4L2hvdmVybW9kZV9kZWZhdWx0cyI6NDA1LCIuLi8uLi9saWIiOjUwMywiLi4vLi4v cGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NTQzLCIuLi8uLi9yZWdpc3RyeSI6NjM4LCIuLi9s YXlvdXRfYXR0cmlidXRlcyI6NjEwLCIuL2F4aXNfZGVmYXVsdHMiOjU1NiwiLi9heGlzX2lk cyI6NTU4LCIuL2NvbnN0YW50cyI6NTYxLCIuL2NvbnN0cmFpbnRzIjo1NjIsIi4vbGF5b3V0 X2F0dHJpYnV0ZXMiOjU2OSwiLi9wb3NpdGlvbl9kZWZhdWx0cyI6NTcyLCIuL3R5cGVfZGVm YXVsdHMiOjU4Mn1dLDU3MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCJ0aW55Y29sb3IyIikubWl4LGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1 dGVzIiksYT10KCIuLi8uLi9saWIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbyl7dmFy IHM9KG89b3x8e30pLmRmbHRDb2xvcjtmdW5jdGlvbiBsKHIsbil7cmV0dXJuIGEuY29lcmNl Mih0LGUsby5hdHRyaWJ1dGVzLHIsbil9dmFyIGM9bCgibGluZWNvbG9yIixzKSx1PWwoImxp bmV3aWR0aCIpO3IoInNob3dsaW5lIixvLnNob3dMaW5lfHwhIWN8fCEhdSl8fChkZWxldGUg ZS5saW5lY29sb3IsZGVsZXRlIGUubGluZXdpZHRoKTt2YXIgZj1sKCJncmlkY29sb3IiLG4o cyxvLmJnQ29sb3Isby5ibGVuZHx8aS5saWdodEZyYWN0aW9uKS50b1JnYlN0cmluZygpKSxo PWwoImdyaWR3aWR0aCIpLHA9bCgiZ3JpZGRhc2giKTtpZihyKCJzaG93Z3JpZCIsby5zaG93 R3JpZHx8ISFmfHwhIWh8fCEhcCl8fChkZWxldGUgZS5ncmlkY29sb3IsZGVsZXRlIGUuZ3Jp ZHdpZHRoLGRlbGV0ZSBlLmdyaWRkYXNoKSxvLmhhc01pbm9yKXt2YXIgZD1sKCJtaW5vci5n cmlkY29sb3IiLG4oZS5ncmlkY29sb3Isby5iZ0NvbG9yLDY3KS50b1JnYlN0cmluZygpKSxt PWwoIm1pbm9yLmdyaWR3aWR0aCIsZS5ncmlkd2lkdGh8fDEpLGc9bCgibWlub3IuZ3JpZGRh c2giLGUuZ3JpZGRhc2h8fCJzb2xpZCIpO3IoIm1pbm9yLnNob3dncmlkIiwhIWR8fCEhbXx8 ISFnKXx8KGRlbGV0ZSBlLm1pbm9yLmdyaWRjb2xvcixkZWxldGUgZS5taW5vci5ncmlkd2lk dGgsZGVsZXRlIGUubWlub3IuZ3JpZGRhc2gpfWlmKCFvLm5vWmVyb0xpbmUpe3ZhciB2PWwo Inplcm9saW5lY29sb3IiLHMpLHk9bCgiemVyb2xpbmV3aWR0aCIpO3IoInplcm9saW5lIixv LnNob3dHcmlkfHwhIXZ8fCEheSl8fChkZWxldGUgZS56ZXJvbGluZWNvbG9yLGRlbGV0ZSBl Lnplcm9saW5ld2lkdGgpfX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVz IjozNjUsIi4uLy4uL2xpYiI6NTAzLHRpbnljb2xvcjI6MzEyfV0sNTcyOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksaT10KCIuLi8u Li9saWIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsYSl7dmFyIG8scyxsLGMsdT1hLmNv dW50ZXJBeGVzfHxbXSxmPWEub3ZlcmxheWFibGVBeGVzfHxbXSxoPWEubGV0dGVyLHA9YS5n cmlkO3AmJihzPXAuX2RvbWFpbnNbaF1bcC5fYXhpc01hcFtlLl9pZF1dLG89cC5fYW5jaG9y c1tlLl9pZF0scyYmKGw9cFtoKyJzaWRlIl0uc3BsaXQoIiAiKVswXSxjPXAuZG9tYWluW2hd WyJyaWdodCI9PT1sfHwidG9wIj09PWw/MTowXSkpLHM9c3x8WzAsMV0sbz1vfHwobih0LnBv c2l0aW9uKT8iZnJlZSI6dVswXXx8ImZyZWUiKSxsPWx8fCgieCI9PT1oPyJib3R0b20iOiJs ZWZ0IiksYz1jfHwwLCJmcmVlIj09PWkuY29lcmNlKHQsZSx7YW5jaG9yOnt2YWxUeXBlOiJl bnVtZXJhdGVkIix2YWx1ZXM6WyJmcmVlIl0uY29uY2F0KHUpLGRmbHQ6b319LCJhbmNob3Ii KSYmcigicG9zaXRpb24iLGMpLGkuY29lcmNlKHQsZSx7c2lkZTp7dmFsVHlwZToiZW51bWVy YXRlZCIsdmFsdWVzOiJ4Ij09PWg/WyJib3R0b20iLCJ0b3AiXTpbImxlZnQiLCJyaWdodCJd LGRmbHQ6bH19LCJzaWRlIik7dmFyIGQ9ITE7aWYoZi5sZW5ndGgmJihkPWkuY29lcmNlKHQs ZSx7b3ZlcmxheWluZzp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlshMV0uY29uY2F0 KGYpLGRmbHQ6ITF9fSwib3ZlcmxheWluZyIpKSwhZCl7dmFyIG09cigiZG9tYWluIixzKTtt WzBdPm1bMV0tMS80MDk2JiYoZS5kb21haW49cyksaS5ub25lT3JBbGwodC5kb21haW4sZS5k b21haW4scyl9cmV0dXJuIHIoImxheWVyIiksZX19LHsiLi4vLi4vbGliIjo1MDMsImZhc3Qt aXNudW1lcmljIjoxOTB9XSw1NzM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgiLi9zaG93X2RmbHQiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaSxhKXthfHwo YT17fSk7dmFyIG89YS50aWNrU3VmZml4RGZsdCxzPW4odCk7cigidGlja3ByZWZpeCIpJiZy KCJzaG93dGlja3ByZWZpeCIscykscigidGlja3N1ZmZpeCIsbykmJnIoInNob3d0aWNrc3Vm Zml4IixzKX19LHsiLi9zaG93X2RmbHQiOjU3N31dLDU3NDpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb25zdGFudHMvYWxpZ25tZW50IikuRlJPTV9C TDtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZvaWQgMD09PXImJihyPW5bdC5jb25zdHJh aW50b3dhcmR8fCJjZW50ZXIiXSk7dmFyIGk9W3QucjJsKHQucmFuZ2VbMF0pLHQucjJsKHQu cmFuZ2VbMV0pXSxhPWlbMF0rKGlbMV0taVswXSkqcjt0LnJhbmdlPXQuX2lucHV0LnJhbmdl PVt0LmwycihhKyhpWzBdLWEpKmUpLHQubDJyKGErKGlbMV0tYSkqZSldLHQuc2V0U2NhbGUo KX19LHsiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCI6NDcxfV0sNTc1OltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInBvbHlib29sanMiKSxpPXQoIi4uLy4uL3Jl Z2lzdHJ5IiksYT10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKS5kYXNoU3R5bGUsbz10 KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIikscz10KCIuLi8uLi9jb21wb25lbnRzL2Z4Iiks bD10KCIuLi8uLi9jb21wb25lbnRzL2Z4L2hlbHBlcnMiKS5tYWtlRXZlbnREYXRhLGM9dCgi Li4vLi4vY29tcG9uZW50cy9kcmFnZWxlbWVudC9oZWxwZXJzIiksdT1jLmZyZWVNb2RlLGY9 Yy5yZWN0TW9kZSxoPWMuZHJhd01vZGUscD1jLm9wZW5Nb2RlLGQ9Yy5zZWxlY3RNb2RlLG09 dCgiLi4vLi4vY29tcG9uZW50cy9zaGFwZXMvZHJhd19uZXdzaGFwZS9kaXNwbGF5X291dGxp bmVzIiksZz10KCIuLi8uLi9jb21wb25lbnRzL3NoYXBlcy9kcmF3X25ld3NoYXBlL2hlbHBl cnMiKS5oYW5kbGVFbGxpcHNlLHY9dCgiLi4vLi4vY29tcG9uZW50cy9zaGFwZXMvZHJhd19u ZXdzaGFwZS9uZXdzaGFwZXMiKSx5PXQoIi4uLy4uL2xpYiIpLHg9dCgiLi4vLi4vbGliL3Bv bHlnb24iKSxiPXQoIi4uLy4uL2xpYi90aHJvdHRsZSIpLF89dCgiLi9heGlzX2lkcyIpLmdl dEZyb21JZCx3PXQoIi4uLy4uL2xpYi9jbGVhcl9nbF9jYW52YXNlcyIpLFQ9dCgiLi4vLi4v cGxvdF9hcGkvc3Vicm91dGluZXMiKS5yZWRyYXdSZWdsVHJhY2VzLGs9dCgiLi9jb25zdGFu dHMiKSxBPWsuTUlOU0VMRUNULE09eC5maWx0ZXIsUz14LnRlc3RlcixFPXQoIi4vaGFuZGxl X291dGxpbmUiKS5jbGVhclNlbGVjdCxMPXQoIi4vaGVscGVycyIpLEM9TC5wMnIsUD1MLmF4 VmFsdWUsST1MLmdldFRyYW5zZm9ybTtmdW5jdGlvbiBPKHQsZSxyLG4saSxhLG8pe3ZhciBz LGwsYyx1LGYsaCxkLGcsdix5PWUuX2hvdmVyZGF0YSx4PWUuX2Z1bGxMYXlvdXQuY2xpY2tt b2RlLmluZGV4T2YoImV2ZW50Iik+LTEsYj1bXTtpZihmdW5jdGlvbih0KXtyZXR1cm4gdCYm QXJyYXkuaXNBcnJheSh0KSYmITAhPT10WzBdLmhvdmVyT25Cb3h9KHkpKXtGKHQsZSxhKTt2 YXIgXz1mdW5jdGlvbih0LGUpe3ZhciByLG4saT10WzBdLGE9LTEsbz1bXTtmb3Iobj0wO248 ZS5sZW5ndGg7bisrKWlmKHI9ZVtuXSxpLmZ1bGxEYXRhLl9leHBhbmRlZEluZGV4PT09ci5j ZFswXS50cmFjZS5fZXhwYW5kZWRJbmRleCl7aWYoITA9PT1pLmhvdmVyT25Cb3gpYnJlYWs7 dm9pZCAwIT09aS5wb2ludE51bWJlcj9hPWkucG9pbnROdW1iZXI6dm9pZCAwIT09aS5iaW5O dW1iZXImJihhPWkuYmluTnVtYmVyLG89aS5wb2ludE51bWJlcnMpO2JyZWFrfXJldHVybntw b2ludE51bWJlcjphLHBvaW50TnVtYmVyczpvLHNlYXJjaEluZm86cn19KHkscz1OKGUscixu LGkpKTtpZihfLnBvaW50TnVtYmVycy5sZW5ndGg+MD9mdW5jdGlvbih0LGUpe3ZhciByLG4s aSxhPVtdO2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspKHI9dFtpXSkuY2RbMF0udHJhY2Uuc2Vs ZWN0ZWRwb2ludHMmJnIuY2RbMF0udHJhY2Uuc2VsZWN0ZWRwb2ludHMubGVuZ3RoPjAmJmEu cHVzaChyKTtpZigxPT09YS5sZW5ndGgmJmFbMF09PT1lLnNlYXJjaEluZm8mJihuPWUuc2Vh cmNoSW5mby5jZFswXS50cmFjZSkuc2VsZWN0ZWRwb2ludHMubGVuZ3RoPT09ZS5wb2ludE51 bWJlcnMubGVuZ3RoKXtmb3IoaT0wO2k8ZS5wb2ludE51bWJlcnMubGVuZ3RoO2krKylpZihu LnNlbGVjdGVkcG9pbnRzLmluZGV4T2YoZS5wb2ludE51bWJlcnNbaV0pPDApcmV0dXJuITE7 cmV0dXJuITB9cmV0dXJuITF9KHMsXyk6ZnVuY3Rpb24odCl7dmFyIGUscixuLGk9MDtmb3Io bj0wO248dC5sZW5ndGg7bisrKWlmKGU9dFtuXSwocj1lLmNkWzBdLnRyYWNlKS5zZWxlY3Rl ZHBvaW50cyl7aWYoci5zZWxlY3RlZHBvaW50cy5sZW5ndGg+MSlyZXR1cm4hMTtpZigoaSs9 ci5zZWxlY3RlZHBvaW50cy5sZW5ndGgpPjEpcmV0dXJuITF9cmV0dXJuIDE9PT1pfShzKSYm KGg9aihfKSkpe2ZvcihvJiZvLnJlbW92ZSgpLHY9MDt2PHMubGVuZ3RoO3YrKykobD1zW3Zd KS5fbW9kdWxlLnNlbGVjdFBvaW50cyhsLCExKTtVKGUscyksQihhKSx4JiZlLmVtaXQoInBs b3RseV9kZXNlbGVjdCIsbnVsbCl9ZWxzZXtmb3IoZD10LnNoaWZ0S2V5JiYodm9pZCAwIT09 aD9oOmooXykpLGM9ZnVuY3Rpb24odCxlLHIpe3JldHVybntwb2ludE51bWJlcjp0LHNlYXJj aEluZm86ZSxzdWJ0cmFjdDpyfX0oXy5wb2ludE51bWJlcixfLnNlYXJjaEluZm8sZCksdT1S KGEuc2VsZWN0aW9uRGVmcy5jb25jYXQoW2NdKSksdj0wO3Y8cy5sZW5ndGg7disrKWlmKGY9 VihzW3ZdLl9tb2R1bGUuc2VsZWN0UG9pbnRzKHNbdl0sdSksc1t2XSksYi5sZW5ndGgpZm9y KHZhciB3PTA7dzxmLmxlbmd0aDt3KyspYi5wdXNoKGZbd10pO2Vsc2UgYj1mO2lmKFUoZSxz LGc9e3BvaW50czpifSksYyYmYSYmYS5zZWxlY3Rpb25EZWZzLnB1c2goYyksbyl7dmFyIFQ9 YS5tZXJnZWRQb2x5Z29ucyxrPXAoYS5kcmFnbW9kZSk7bShIKFQsayksbyxhKX14JiZlLmVt aXQoInBsb3RseV9zZWxlY3RlZCIsZyl9fX1mdW5jdGlvbiB6KHQpe3JldHVybiJwb2ludE51 bWJlciJpbiB0JiYic2VhcmNoSW5mbyJpbiB0fWZ1bmN0aW9uIEQodCl7cmV0dXJue3htaW46 MCx4bWF4OjAseW1pbjowLHltYXg6MCxwdHM6W10sY29udGFpbnM6ZnVuY3Rpb24oZSxyLG4s aSl7dmFyIGE9dC5zZWFyY2hJbmZvLmNkWzBdLnRyYWNlLl9leHBhbmRlZEluZGV4O3JldHVy biBpLmNkWzBdLnRyYWNlLl9leHBhbmRlZEluZGV4PT09YSYmbj09PXQucG9pbnROdW1iZXJ9 LGlzUmVjdDohMSxkZWdlbmVyYXRlOiExLHN1YnRyYWN0OnQuc3VidHJhY3R9fWZ1bmN0aW9u IFIodCl7Zm9yKHZhciBlPVtdLHI9eih0WzBdKT8wOnRbMF1bMF1bMF0sbj1yLGk9eih0WzBd KT8wOnRbMF1bMF1bMV0sYT1pLG89MDtvPHQubGVuZ3RoO28rKylpZih6KHRbb10pKWUucHVz aChEKHRbb10pKTtlbHNle3ZhciBzPXgudGVzdGVyKHRbb10pO3Muc3VidHJhY3Q9dFtvXS5z dWJ0cmFjdCxlLnB1c2gocykscj1NYXRoLm1pbihyLHMueG1pbiksbj1NYXRoLm1heChuLHMu eG1heCksaT1NYXRoLm1pbihpLHMueW1pbiksYT1NYXRoLm1heChhLHMueW1heCl9cmV0dXJu e3htaW46cix4bWF4Om4seW1pbjppLHltYXg6YSxwdHM6W10sY29udGFpbnM6ZnVuY3Rpb24o dCxyLG4saSl7Zm9yKHZhciBhPSExLG89MDtvPGUubGVuZ3RoO28rKyllW29dLmNvbnRhaW5z KHQscixuLGkpJiYoYT0hMT09PWVbb10uc3VidHJhY3QpO3JldHVybiBhfSxpc1JlY3Q6ITEs ZGVnZW5lcmF0ZTohMX19ZnVuY3Rpb24gRih0LGUscil7ZS5fZnVsbExheW91dC5fZHJhd2lu Zz0hMTt2YXIgbj1lLl9mdWxsTGF5b3V0LGk9ci5wbG90aW5mbyxhPXIuZHJhZ21vZGUsbz1u Ll9sYXN0U2VsZWN0ZWRTdWJwbG90JiZuLl9sYXN0U2VsZWN0ZWRTdWJwbG90PT09aS5pZCxz PSh0LnNoaWZ0S2V5fHx0LmFsdEtleSkmJiEoaChhKSYmcChhKSk7byYmcyYmaS5zZWxlY3Rp b24mJmkuc2VsZWN0aW9uLnNlbGVjdGlvbkRlZnMmJiFyLnNlbGVjdGlvbkRlZnM/KHIuc2Vs ZWN0aW9uRGVmcz1pLnNlbGVjdGlvbi5zZWxlY3Rpb25EZWZzLHIubWVyZ2VkUG9seWdvbnM9 aS5zZWxlY3Rpb24ubWVyZ2VkUG9seWdvbnMpOnMmJmkuc2VsZWN0aW9ufHxCKHIpLG98fChF KGUpLG4uX2xhc3RTZWxlY3RlZFN1YnBsb3Q9aS5pZCl9ZnVuY3Rpb24gQih0KXt2YXIgZT10 LmRyYWdtb2RlLHI9dC5wbG90aW5mbyxuPXQuZ2Q7aWYobi5fZnVsbExheW91dC5fYWN0aXZl U2hhcGVJbmRleD49MCYmbi5fZnVsbExheW91dC5fZGVhY3RpdmF0ZVNoYXBlKG4pLGgoZSkp e3ZhciBhPW4uX2Z1bGxMYXlvdXQuX3pvb21sYXllci5zZWxlY3RBbGwoIi5zZWxlY3Qtb3V0 bGluZS0iK3IuaWQpO2lmKGEmJm4uX2Z1bGxMYXlvdXQuX2RyYXdpbmcpe3ZhciBvPXYoYSx0 KTtvJiZpLmNhbGwoIl9ndWlSZWxheW91dCIsbix7c2hhcGVzOm99KSxuLl9mdWxsTGF5b3V0 Ll9kcmF3aW5nPSExfX1yLnNlbGVjdGlvbj17fSxyLnNlbGVjdGlvbi5zZWxlY3Rpb25EZWZz PXQuc2VsZWN0aW9uRGVmcz1bXSxyLnNlbGVjdGlvbi5tZXJnZWRQb2x5Z29ucz10Lm1lcmdl ZFBvbHlnb25zPVtdfWZ1bmN0aW9uIE4odCxlLHIsbil7dmFyIGksYSxvLHM9W10sbD1lLm1h cCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuX2lkfSkpLGM9ci5tYXAoKGZ1bmN0aW9uKHQpe3Jl dHVybiB0Ll9pZH0pKTtmb3Iobz0wO288dC5jYWxjZGF0YS5sZW5ndGg7bysrKWlmKCEwPT09 KGE9KGk9dC5jYWxjZGF0YVtvXSlbMF0udHJhY2UpLnZpc2libGUmJmEuX21vZHVsZSYmYS5f bW9kdWxlLnNlbGVjdFBvaW50cylpZighbnx8YS5zdWJwbG90IT09biYmYS5nZW8hPT1uKWlm KCJzcGxvbSI9PT1hLnR5cGUmJmEuX3hheGVzW2xbMF1dJiZhLl95YXhlc1tjWzBdXSl7dmFy IHU9aChhLl9tb2R1bGUsaSxlWzBdLHJbMF0pO3Uuc2NlbmU9dC5fZnVsbExheW91dC5fc3Bs b21TY2VuZXNbYS51aWRdLHMucHVzaCh1KX1lbHNlIGlmKCJzYW5rZXkiPT09YS50eXBlKXt2 YXIgZj1oKGEuX21vZHVsZSxpLGVbMF0sclswXSk7cy5wdXNoKGYpfWVsc2V7aWYoLTE9PT1s LmluZGV4T2YoYS54YXhpcykpY29udGludWU7aWYoLTE9PT1jLmluZGV4T2YoYS55YXhpcykp Y29udGludWU7cy5wdXNoKGgoYS5fbW9kdWxlLGksXyh0LGEueGF4aXMpLF8odCxhLnlheGlz KSkpfWVsc2Ugcy5wdXNoKGgoYS5fbW9kdWxlLGksZVswXSxyWzBdKSk7cmV0dXJuIHM7ZnVu Y3Rpb24gaCh0LGUscixuKXtyZXR1cm57X21vZHVsZTp0LGNkOmUseGF4aXM6cix5YXhpczpu fX19ZnVuY3Rpb24gaih0KXt2YXIgZT10LnNlYXJjaEluZm8uY2RbMF0udHJhY2Uscj10LnBv aW50TnVtYmVyLG49dC5wb2ludE51bWJlcnMsaT1uLmxlbmd0aD4wP25bMF06cjtyZXR1cm4h IWUuc2VsZWN0ZWRwb2ludHMmJmUuc2VsZWN0ZWRwb2ludHMuaW5kZXhPZihpKT4tMX1mdW5j dGlvbiBVKHQsZSxyKXt2YXIgbixhLG8scztmb3Iobj0wO248ZS5sZW5ndGg7bisrKXt2YXIg bD1lW25dLmNkWzBdLnRyYWNlLl9mdWxsSW5wdXQsYz10Ll9mdWxsTGF5b3V0Ll90cmFjZVBy ZUdVSVtsLnVpZF18fHt9O3ZvaWQgMD09PWMuc2VsZWN0ZWRwb2ludHMmJihjLnNlbGVjdGVk cG9pbnRzPWwuX2lucHV0LnNlbGVjdGVkcG9pbnRzfHxudWxsKX1pZihyKXt2YXIgdT1yLnBv aW50c3x8W107Zm9yKG49MDtuPGUubGVuZ3RoO24rKykocz1lW25dLmNkWzBdLnRyYWNlKS5f aW5wdXQuc2VsZWN0ZWRwb2ludHM9cy5fZnVsbElucHV0LnNlbGVjdGVkcG9pbnRzPVtdLHMu X2Z1bGxJbnB1dCE9PXMmJihzLnNlbGVjdGVkcG9pbnRzPVtdKTtmb3Iobj0wO248dS5sZW5n dGg7bisrKXt2YXIgZj11W25dLGg9Zi5kYXRhLHA9Zi5mdWxsRGF0YTtmLnBvaW50SW5kaWNl cz8oW10ucHVzaC5hcHBseShoLnNlbGVjdGVkcG9pbnRzLGYucG9pbnRJbmRpY2VzKSxzLl9m dWxsSW5wdXQhPT1zJiZbXS5wdXNoLmFwcGx5KHAuc2VsZWN0ZWRwb2ludHMsZi5wb2ludElu ZGljZXMpKTooaC5zZWxlY3RlZHBvaW50cy5wdXNoKGYucG9pbnRJbmRleCkscy5fZnVsbElu cHV0IT09cyYmcC5zZWxlY3RlZHBvaW50cy5wdXNoKGYucG9pbnRJbmRleCkpfX1lbHNlIGZv cihuPTA7bjxlLmxlbmd0aDtuKyspZGVsZXRlKHM9ZVtuXS5jZFswXS50cmFjZSkuc2VsZWN0 ZWRwb2ludHMsZGVsZXRlIHMuX2lucHV0LnNlbGVjdGVkcG9pbnRzLHMuX2Z1bGxJbnB1dCE9 PXMmJmRlbGV0ZSBzLl9mdWxsSW5wdXQuc2VsZWN0ZWRwb2ludHM7dmFyIGQ9ITE7Zm9yKG49 MDtuPGUubGVuZ3RoO24rKyl7cz0obz0oYT1lW25dKS5jZClbMF0udHJhY2UsaS50cmFjZUlz KHMsInJlZ2wiKSYmKGQ9ITApO3ZhciBtPWEuX21vZHVsZSxnPW0uc3R5bGVPblNlbGVjdHx8 bS5zdHlsZTtnJiYoZyh0LG8sb1swXS5ub2RlMyksb1swXS5ub2RlUmFuZ2VQbG90MyYmZyh0 LG8sb1swXS5ub2RlUmFuZ2VQbG90MykpfWQmJih3KHQpLFQodCkpfWZ1bmN0aW9uIFYodCxl KXtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgcj1lLmNkLG49ZS5jZFswXS50cmFjZSxp PTA7aTx0Lmxlbmd0aDtpKyspdFtpXT1sKHRbaV0sbixyKTtyZXR1cm4gdH1mdW5jdGlvbiBI KHQsZSl7Zm9yKHZhciByPVtdLG49MDtuPHQubGVuZ3RoO24rKyl7cltuXT1bXTtmb3IodmFy IGk9MDtpPHRbbl0ubGVuZ3RoO2krKyl7cltuXVtpXT1bXSxyW25dW2ldWzBdPWk/IkwiOiJN Ijtmb3IodmFyIGE9MDthPHRbbl1baV0ubGVuZ3RoO2ErKylyW25dW2ldLnB1c2godFtuXVtp XVthXSl9ZXx8cltuXS5wdXNoKFsiWiIscltuXVswXVsxXSxyW25dWzBdWzJdXSl9cmV0dXJu IHJ9ZS5leHBvcnRzPXtwcmVwU2VsZWN0OmZ1bmN0aW9uKHQsZSxyLGksbCl7dmFyIGM9dShs KSx2PWYobCkseD1wKGwpLF89aChsKSx3PWQobCksVD0iZHJhd2NpcmNsZSI9PT1sLEU9ImRy YXdsaW5lIj09PWx8fFQsTD1pLmdkLHo9TC5fZnVsbExheW91dCxEPXouX3pvb21sYXllcixq PWkuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxxPWkucGxvdGluZm8sRz1JKHEp LFk9ZS1qLmxlZnQsVz1yLWoudG9wO3ouX2NhbGNJbnZlcnNlVHJhbnNmb3JtKEwpO3ZhciBY PXkuYXBwbHkzRFRyYW5zZm9ybSh6Ll9pbnZUcmFuc2Zvcm0pKFksVyk7WT1YWzBdLFc9WFsx XTt2YXIgWixKLEssUSwkLHR0LGV0LHJ0PXouX2ludlNjYWxlWCxudD16Ll9pbnZTY2FsZVks aXQ9WSxhdD1XLG90PSJNIitZKyIsIitXLHN0PWkueGF4ZXNbMF0uX2xlbmd0aCxsdD1pLnlh eGVzWzBdLl9sZW5ndGgsY3Q9aS54YXhlcy5jb25jYXQoaS55YXhlcyksdXQ9dC5hbHRLZXkm JiEoaChsKSYmeCk7Rih0LEwsaSksYyYmKFo9TShbW1ksV11dLGsuQkVORFBYKSk7dmFyIGZ0 PUQuc2VsZWN0QWxsKCJwYXRoLnNlbGVjdC1vdXRsaW5lLSIrcS5pZCkuZGF0YShfP1swXTpb MSwyXSksaHQ9ei5uZXdzaGFwZTtmdC5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNs YXNzIiwoZnVuY3Rpb24odCl7cmV0dXJuInNlbGVjdC1vdXRsaW5lIHNlbGVjdC1vdXRsaW5l LSIrdCsiIHNlbGVjdC1vdXRsaW5lLSIrcS5pZH0pKS5zdHlsZShfP3tvcGFjaXR5Omh0Lm9w YWNpdHkvMixmaWxsOng/dm9pZCAwOmh0LmZpbGxjb2xvcixzdHJva2U6aHQubGluZS5jb2xv ciwic3Ryb2tlLWRhc2hhcnJheSI6YShodC5saW5lLmRhc2gsaHQubGluZS53aWR0aCksInN0 cm9rZS13aWR0aCI6aHQubGluZS53aWR0aCsicHgifTp7fSkuYXR0cigiZmlsbC1ydWxlIixo dC5maWxscnVsZSkuY2xhc3NlZCgiY3Vyc29yLW1vdmUiLCEhXykuYXR0cigidHJhbnNmb3Jt IixHKS5hdHRyKCJkIixvdCsiWiIpO3ZhciBwdCxkdD1ELmFwcGVuZCgicGF0aCIpLmF0dHIo ImNsYXNzIiwiem9vbWJveC1jb3JuZXJzIikuc3R5bGUoe2ZpbGw6by5iYWNrZ3JvdW5kLHN0 cm9rZTpvLmRlZmF1bHRMaW5lLCJzdHJva2Utd2lkdGgiOjF9KS5hdHRyKCJ0cmFuc2Zvcm0i LEcpLmF0dHIoImQiLCJNMCwwWiIpLG10PXouX3VpZCtrLlNFTEVDVElELGd0PVtdLHZ0PU4o TCxpLnhheGVzLGkueWF4ZXMsaS5zdWJwbG90KTtmdW5jdGlvbiB5dCh0LGUpe3JldHVybiB0 LWV9cHQ9cS5maWxsUmFuZ2VJdGVtcz9xLmZpbGxSYW5nZUl0ZW1zOnY/ZnVuY3Rpb24odCxl KXt2YXIgcj10LnJhbmdlPXt9O2ZvcigkPTA7JDxjdC5sZW5ndGg7JCsrKXt2YXIgbj1jdFsk XSxpPW4uX2lkLmNoYXJBdCgwKTtyW24uX2lkXT1bQyhuLGVbaSsibWluIl0pLEMobixlW2kr Im1heCJdKV0uc29ydCh5dCl9fTpmdW5jdGlvbih0LGUscil7dmFyIG49dC5sYXNzb1BvaW50 cz17fTtmb3IoJD0wOyQ8Y3QubGVuZ3RoOyQrKyl7dmFyIGk9Y3RbJF07bltpLl9pZF09ci5m aWx0ZXJlZC5tYXAoUChpKSl9fSxpLm1vdmVGbj1mdW5jdGlvbih0LGUpe2l0PU1hdGgubWF4 KDAsTWF0aC5taW4oc3QscnQqdCtZKSksYXQ9TWF0aC5tYXgoMCxNYXRoLm1pbihsdCxudCpl K1cpKTt2YXIgcj1NYXRoLmFicyhpdC1ZKSxhPU1hdGguYWJzKGF0LVcpO2lmKHYpe3ZhciBv LHMsbDtpZih3KXt2YXIgdT16LnNlbGVjdGRpcmVjdGlvbjtzd2l0Y2gobz0iYW55Ij09PXU/ YTxNYXRoLm1pbiguNipyLEEpPyJoIjpyPE1hdGgubWluKC42KmEsQSk/InYiOiJkIjp1KXtj YXNlImgiOnM9VD9sdC8yOjAsbD1sdDticmVhaztjYXNlInYiOnM9VD9zdC8yOjAsbD1zdH19 aWYoXylzd2l0Y2goei5uZXdzaGFwZS5kcmF3ZGlyZWN0aW9uKXtjYXNlInZlcnRpY2FsIjpv PSJoIixzPVQ/bHQvMjowLGw9bHQ7YnJlYWs7Y2FzZSJob3Jpem9udGFsIjpvPSJ2IixzPVQ/ c3QvMjowLGw9c3Q7YnJlYWs7Y2FzZSJvcnRobyI6cjxhPyhvPSJoIixzPVcsbD1hdCk6KG89 InYiLHM9WSxsPWl0KTticmVhaztkZWZhdWx0Om89ImQifSJoIj09PW8/KChRPUU/ZyhULFtp dCxzXSxbaXQsbF0pOltbWSxzXSxbWSxsXSxbaXQsbF0sW2l0LHNdXSkueG1pbj1FP2l0Ok1h dGgubWluKFksaXQpLFEueG1heD1FP2l0Ok1hdGgubWF4KFksaXQpLFEueW1pbj1NYXRoLm1p bihzLGwpLFEueW1heD1NYXRoLm1heChzLGwpLGR0LmF0dHIoImQiLCJNIitRLnhtaW4rIiwi KyhXLUEpKyJoLTR2IisyKkErImg0Wk0iKyhRLnhtYXgtMSkrIiwiKyhXLUEpKyJoNHYiKzIq QSsiaC00WiIpKToidiI9PT1vPygoUT1FP2coVCxbcyxhdF0sW2wsYXRdKTpbW3MsV10sW3Ms YXRdLFtsLGF0XSxbbCxXXV0pLnhtaW49TWF0aC5taW4ocyxsKSxRLnhtYXg9TWF0aC5tYXgo cyxsKSxRLnltaW49RT9hdDpNYXRoLm1pbihXLGF0KSxRLnltYXg9RT9hdDpNYXRoLm1heChX LGF0KSxkdC5hdHRyKCJkIiwiTSIrKFktQSkrIiwiK1EueW1pbisidi00aCIrMipBKyJ2NFpN IisoWS1BKSsiLCIrKFEueW1heC0xKSsidjRoIisyKkErInYtNFoiKSk6ImQiPT09byYmKChR PUU/ZyhULFtZLFddLFtpdCxhdF0pOltbWSxXXSxbWSxhdF0sW2l0LGF0XSxbaXQsV11dKS54 bWluPU1hdGgubWluKFksaXQpLFEueG1heD1NYXRoLm1heChZLGl0KSxRLnltaW49TWF0aC5t aW4oVyxhdCksUS55bWF4PU1hdGgubWF4KFcsYXQpLGR0LmF0dHIoImQiLCJNMCwwWiIpKX1l bHNlIGMmJihaLmFkZFB0KFtpdCxhdF0pLFE9Wi5maWx0ZXJlZCk7aS5zZWxlY3Rpb25EZWZz JiZpLnNlbGVjdGlvbkRlZnMubGVuZ3RoPyhLPWZ1bmN0aW9uKHQsZSxyKXtpZihyKXJldHVy biBuLmRpZmZlcmVuY2Uoe3JlZ2lvbnM6dCxpbnZlcnRlZDohMX0se3JlZ2lvbnM6W2VdLGlu dmVydGVkOiExfSkucmVnaW9ucztyZXR1cm4gbi51bmlvbih7cmVnaW9uczp0LGludmVydGVk OiExfSx7cmVnaW9uczpbZV0saW52ZXJ0ZWQ6ITF9KS5yZWdpb25zfShpLm1lcmdlZFBvbHln b25zLFEsdXQpLFEuc3VidHJhY3Q9dXQsSj1SKGkuc2VsZWN0aW9uRGVmcy5jb25jYXQoW1Fd KSkpOihLPVtRXSxKPVMoUSkpLG0oSChLLHgpLGZ0LGkpLHcmJmIudGhyb3R0bGUobXQsay5T RUxFQ1RERUxBWSwoZnVuY3Rpb24oKXt2YXIgdDtndD1bXTt2YXIgZSxyPVtdO2ZvcigkPTA7 JDx2dC5sZW5ndGg7JCsrKWlmKGU9KHR0PXZ0WyRdKS5fbW9kdWxlLnNlbGVjdFBvaW50cyh0 dCxKKSxyLnB1c2goZSksdD1WKGUsdHQpLGd0Lmxlbmd0aClmb3IodmFyIG49MDtuPHQubGVu Z3RoO24rKylndC5wdXNoKHRbbl0pO2Vsc2UgZ3Q9dDtVKEwsdnQsZXQ9e3BvaW50czpndH0p LHB0KGV0LFEsWiksaS5nZC5lbWl0KCJwbG90bHlfc2VsZWN0aW5nIixldCl9KSl9LGkuY2xp Y2tGbj1mdW5jdGlvbih0LGUpe2lmKGR0LnJlbW92ZSgpLEwuX2Z1bGxMYXlvdXQuX2FjdGl2 ZVNoYXBlSW5kZXg+PTApTC5fZnVsbExheW91dC5fZGVhY3RpdmF0ZVNoYXBlKEwpO2Vsc2Ug aWYoIV8pe3ZhciByPXouY2xpY2ttb2RlO2IuZG9uZShtdCkudGhlbigoZnVuY3Rpb24oKXtp ZihiLmNsZWFyKG10KSwyPT09dCl7Zm9yKGZ0LnJlbW92ZSgpLCQ9MDskPHZ0Lmxlbmd0aDsk KyspKHR0PXZ0WyRdKS5fbW9kdWxlLnNlbGVjdFBvaW50cyh0dCwhMSk7VShMLHZ0KSxCKGkp LEwuZW1pdCgicGxvdGx5X2Rlc2VsZWN0IixudWxsKX1lbHNlIHIuaW5kZXhPZigic2VsZWN0 Iik+LTEmJk8oZSxMLGkueGF4ZXMsaS55YXhlcyxpLnN1YnBsb3QsaSxmdCksImV2ZW50Ij09 PXImJkwuZW1pdCgicGxvdGx5X3NlbGVjdGVkIix2b2lkIDApO3MuY2xpY2soTCxlKX0pKS5j YXRjaCh5LmVycm9yKX19LGkuZG9uZUZuPWZ1bmN0aW9uKCl7ZHQucmVtb3ZlKCksYi5kb25l KG10KS50aGVuKChmdW5jdGlvbigpe2IuY2xlYXIobXQpLGkuZ2QuZW1pdCgicGxvdGx5X3Nl bGVjdGVkIixldCksUSYmaS5zZWxlY3Rpb25EZWZzJiYoUS5zdWJ0cmFjdD11dCxpLnNlbGVj dGlvbkRlZnMucHVzaChRKSxpLm1lcmdlZFBvbHlnb25zLmxlbmd0aD0wLFtdLnB1c2guYXBw bHkoaS5tZXJnZWRQb2x5Z29ucyxLKSksaS5kb25lRm5Db21wbGV0ZWQmJmkuZG9uZUZuQ29t cGxldGVkKGd0KX0pKS5jYXRjaCh5LmVycm9yKSxfJiZCKGkpfX0sY2xlYXJTZWxlY3Q6RSxj bGVhclNlbGVjdGlvbnNDYWNoZTpCLHNlbGVjdE9uQ2xpY2s6T319LHsiLi4vLi4vY29tcG9u ZW50cy9jb2xvciI6MzY2LCIuLi8uLi9jb21wb25lbnRzL2RyYWdlbGVtZW50L2hlbHBlcnMi OjM4NCwiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjozODgsIi4uLy4uL2NvbXBvbmVudHMv ZngiOjQwNiwiLi4vLi4vY29tcG9uZW50cy9meC9oZWxwZXJzIjo0MDIsIi4uLy4uL2NvbXBv bmVudHMvc2hhcGVzL2RyYXdfbmV3c2hhcGUvZGlzcGxheV9vdXRsaW5lcyI6NDU0LCIuLi8u Li9jb21wb25lbnRzL3NoYXBlcy9kcmF3X25ld3NoYXBlL2hlbHBlcnMiOjQ1NSwiLi4vLi4v Y29tcG9uZW50cy9zaGFwZXMvZHJhd19uZXdzaGFwZS9uZXdzaGFwZXMiOjQ1NiwiLi4vLi4v bGliIjo1MDMsIi4uLy4uL2xpYi9jbGVhcl9nbF9jYW52YXNlcyI6NDg3LCIuLi8uLi9saWIv cG9seWdvbiI6NTE1LCIuLi8uLi9saWIvdGhyb3R0bGUiOjUzMCwiLi4vLi4vcGxvdF9hcGkv c3Vicm91dGluZXMiOjU0NCwiLi4vLi4vcmVnaXN0cnkiOjYzOCwiLi9heGlzX2lkcyI6NTU4 LCIuL2NvbnN0YW50cyI6NTYxLCIuL2hhbmRsZV9vdXRsaW5lIjo1NjUsIi4vaGVscGVycyI6 NTY2LHBvbHlib29sanM6MjU0fV0sNTc2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoIkBwbG90bHkvZDMiKSxpPXQoImQzLXRpbWUtZm9ybWF0IikudXRjRm9ybWF0 LGE9dCgiLi4vLi4vbGliIiksbz1hLm51bWJlckZvcm1hdCxzPXQoImZhc3QtaXNudW1lcmlj IiksbD1hLmNsZWFuTnVtYmVyLGM9YS5tczJEYXRlVGltZSx1PWEuZGF0ZVRpbWUybXMsZj1h LmVuc3VyZU51bWJlcixoPWEuaXNBcnJheU9yVHlwZWRBcnJheSxwPXQoIi4uLy4uL2NvbnN0 YW50cy9udW1lcmljYWwiKSxkPXAuRlBfU0FGRSxtPXAuQkFETlVNLGc9cC5MT0dfQ0xJUCx2 PXAuT05FV0VFSyx5PXAuT05FREFZLHg9cC5PTkVIT1VSLGI9cC5PTkVNSU4sXz1wLk9ORVNF Qyx3PXQoIi4vYXhpc19pZHMiKSxUPXQoIi4vY29uc3RhbnRzIiksaz1ULkhPVVJfUEFUVEVS TixBPVQuV0VFS0RBWV9QQVRURVJOO2Z1bmN0aW9uIE0odCl7cmV0dXJuIE1hdGgucG93KDEw LHQpfWZ1bmN0aW9uIFModCl7cmV0dXJuIG51bGwhPXR9ZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSl7ZT1lfHx7fTt2YXIgcj10Ll9pZHx8IngiLHA9ci5jaGFyQXQoMCk7ZnVuY3Rpb24gRShl LHIpe2lmKGU+MClyZXR1cm4gTWF0aC5sb2coZSkvTWF0aC5MTjEwO2lmKGU8PTAmJnImJnQu cmFuZ2UmJjI9PT10LnJhbmdlLmxlbmd0aCl7dmFyIG49dC5yYW5nZVswXSxpPXQucmFuZ2Vb MV07cmV0dXJuLjUqKG4raS0yKmcqTWF0aC5hYnMobi1pKSl9cmV0dXJuIG19ZnVuY3Rpb24g TChlLHIsbixpKXtpZigoaXx8e30pLm1zVVRDJiZzKGUpKXJldHVybitlO3ZhciBvPXUoZSxu fHx0LmNhbGVuZGFyKTtpZihvPT09bSl7aWYoIXMoZSkpcmV0dXJuIG07ZT0rZTt2YXIgbD1N YXRoLmZsb29yKDEwKmEubW9kKGUrLjA1LDEpKSxjPU1hdGgucm91bmQoZS1sLzEwKTtvPXUo bmV3IERhdGUoYykpK2wvMTB9cmV0dXJuIG99ZnVuY3Rpb24gQyhlLHIsbil7cmV0dXJuIGMo ZSxyLG58fHQuY2FsZW5kYXIpfWZ1bmN0aW9uIFAoZSl7cmV0dXJuIHQuX2NhdGVnb3JpZXNb TWF0aC5yb3VuZChlKV19ZnVuY3Rpb24gSShlKXtpZihTKGUpKXtpZih2b2lkIDA9PT10Ll9j YXRlZ29yaWVzTWFwJiYodC5fY2F0ZWdvcmllc01hcD17fSksdm9pZCAwIT09dC5fY2F0ZWdv cmllc01hcFtlXSlyZXR1cm4gdC5fY2F0ZWdvcmllc01hcFtlXTt0Ll9jYXRlZ29yaWVzLnB1 c2goIm51bWJlciI9PXR5cGVvZiBlP1N0cmluZyhlKTplKTt2YXIgcj10Ll9jYXRlZ29yaWVz Lmxlbmd0aC0xO3JldHVybiB0Ll9jYXRlZ29yaWVzTWFwW2VdPXIscn1yZXR1cm4gbX1mdW5j dGlvbiBPKGUpe2lmKHQuX2NhdGVnb3JpZXNNYXApcmV0dXJuIHQuX2NhdGVnb3JpZXNNYXBb ZV19ZnVuY3Rpb24geih0KXt2YXIgZT1PKHQpO3JldHVybiB2b2lkIDAhPT1lP2U6cyh0KT8r dDp2b2lkIDB9ZnVuY3Rpb24gRCh0KXtyZXR1cm4gcyh0KT8rdDpPKHQpfWZ1bmN0aW9uIFIo dCxlLHIpe3JldHVybiBuLnJvdW5kKHIrZSp0LDIpfWZ1bmN0aW9uIEYodCxlLHIpe3JldHVy bih0LXIpL2V9dmFyIEI9ZnVuY3Rpb24oZSl7cmV0dXJuIHMoZSk/UihlLHQuX20sdC5fYik6 bX0sTj1mdW5jdGlvbihlKXtyZXR1cm4gRihlLHQuX20sdC5fYil9O2lmKHQucmFuZ2VicmVh a3Mpe3ZhciBqPSJ5Ij09PXA7Qj1mdW5jdGlvbihlKXtpZighcyhlKSlyZXR1cm4gbTt2YXIg cj10Ll9yYW5nZWJyZWFrcy5sZW5ndGg7aWYoIXIpcmV0dXJuIFIoZSx0Ll9tLHQuX2IpO3Zh ciBuPWo7dC5yYW5nZVswXT50LnJhbmdlWzFdJiYobj0hbik7Zm9yKHZhciBpPW4/LTE6MSxh PWkqZSxvPTAsbD0wO2w8cjtsKyspe3ZhciBjPWkqdC5fcmFuZ2VicmVha3NbbF0ubWluLHU9 aSp0Ll9yYW5nZWJyZWFrc1tsXS5tYXg7aWYoYTxjKWJyZWFrO2lmKCEoYT51KSl7bz1hPChj K3UpLzI/bDpsKzE7YnJlYWt9bz1sKzF9dmFyIGY9dC5fQltvXXx8MDtyZXR1cm4gaXNGaW5p dGUoZik/UihlLHQuX20yLGYpOjB9LE49ZnVuY3Rpb24oZSl7dmFyIHI9dC5fcmFuZ2VicmVh a3MubGVuZ3RoO2lmKCFyKXJldHVybiBGKGUsdC5fbSx0Ll9iKTtmb3IodmFyIG49MCxpPTA7 aTxyJiYhKGU8dC5fcmFuZ2VicmVha3NbaV0ucG1pbik7aSsrKWU+dC5fcmFuZ2VicmVha3Nb aV0ucG1heCYmKG49aSsxKTtyZXR1cm4gRihlLHQuX20yLHQuX0Jbbl0pfX10LmMybD0ibG9n Ij09PXQudHlwZT9FOmYsdC5sMmM9ImxvZyI9PT10LnR5cGU/TTpmLHQubDJwPUIsdC5wMmw9 Tix0LmMycD0ibG9nIj09PXQudHlwZT9mdW5jdGlvbih0LGUpe3JldHVybiBCKEUodCxlKSl9 OkIsdC5wMmM9ImxvZyI9PT10LnR5cGU/ZnVuY3Rpb24odCl7cmV0dXJuIE0oTih0KSl9Ok4s LTEhPT1bImxpbmVhciIsIi0iXS5pbmRleE9mKHQudHlwZSk/KHQuZDJyPXQucjJkPXQuZDJj PXQucjJjPXQuZDJsPXQucjJsPWwsdC5jMmQ9dC5jMnI9dC5sMmQ9dC5sMnI9Zix0LmQycD10 LnIycD1mdW5jdGlvbihlKXtyZXR1cm4gdC5sMnAobChlKSl9LHQucDJkPXQucDJyPU4sdC5j bGVhblBvcz1mKToibG9nIj09PXQudHlwZT8odC5kMnI9dC5kMmw9ZnVuY3Rpb24odCxlKXty ZXR1cm4gRShsKHQpLGUpfSx0LnIyZD10LnIyYz1mdW5jdGlvbih0KXtyZXR1cm4gTShsKHQp KX0sdC5kMmM9dC5yMmw9bCx0LmMyZD10Lmwycj1mLHQuYzJyPUUsdC5sMmQ9TSx0LmQycD1m dW5jdGlvbihlLHIpe3JldHVybiB0LmwycCh0LmQycihlLHIpKX0sdC5wMmQ9ZnVuY3Rpb24o dCl7cmV0dXJuIE0oTih0KSl9LHQucjJwPWZ1bmN0aW9uKGUpe3JldHVybiB0LmwycChsKGUp KX0sdC5wMnI9Tix0LmNsZWFuUG9zPWYpOiJkYXRlIj09PXQudHlwZT8odC5kMnI9dC5yMmQ9 YS5pZGVudGl0eSx0LmQyYz10LnIyYz10LmQybD10LnIybD1MLHQuYzJkPXQuYzJyPXQubDJk PXQubDJyPUMsdC5kMnA9dC5yMnA9ZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0LmwycChMKGUs MCxuKSl9LHQucDJkPXQucDJyPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gQyhOKHQpLGUscil9 LHQuY2xlYW5Qb3M9ZnVuY3Rpb24oZSl7cmV0dXJuIGEuY2xlYW5EYXRlKGUsbSx0LmNhbGVu ZGFyKX0pOiJjYXRlZ29yeSI9PT10LnR5cGU/KHQuZDJjPXQuZDJsPUksdC5yMmQ9dC5jMmQ9 dC5sMmQ9UCx0LmQycj10LmQybF9ub2FkZD16LHQucjJjPWZ1bmN0aW9uKGUpe3ZhciByPUQo ZSk7cmV0dXJuIHZvaWQgMCE9PXI/cjp0LmZyYWN0aW9uMnIoLjUpfSx0Lmwycj10LmMycj1m LHQucjJsPUQsdC5kMnA9ZnVuY3Rpb24oZSl7cmV0dXJuIHQubDJwKHQucjJjKGUpKX0sdC5w MmQ9ZnVuY3Rpb24odCl7cmV0dXJuIFAoTih0KSl9LHQucjJwPXQuZDJwLHQucDJyPU4sdC5j bGVhblBvcz1mdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJiIiIT09dD90 OmYodCl9KToibXVsdGljYXRlZ29yeSI9PT10LnR5cGUmJih0LnIyZD10LmMyZD10LmwyZD1Q LHQuZDJyPXQuZDJsX25vYWRkPXosdC5yMmM9ZnVuY3Rpb24oZSl7dmFyIHI9eihlKTtyZXR1 cm4gdm9pZCAwIT09cj9yOnQuZnJhY3Rpb24yciguNSl9LHQucjJjX2p1c3RfaW5kaWNlcz1P LHQubDJyPXQuYzJyPWYsdC5yMmw9eix0LmQycD1mdW5jdGlvbihlKXtyZXR1cm4gdC5sMnAo dC5yMmMoZSkpfSx0LnAyZD1mdW5jdGlvbih0KXtyZXR1cm4gUChOKHQpKX0sdC5yMnA9dC5k MnAsdC5wMnI9Tix0LmNsZWFuUG9zPWZ1bmN0aW9uKHQpe3JldHVybiBBcnJheS5pc0FycmF5 KHQpfHwic3RyaW5nIj09dHlwZW9mIHQmJiIiIT09dD90OmYodCl9LHQuc2V0dXBNdWx0aUNh dGVnb3J5PWZ1bmN0aW9uKG4pe3ZhciBpLG8scz10Ll90cmFjZUluZGljZXMsbD10Ll9tYXRj aEdyb3VwO2lmKGwmJjA9PT10Ll9jYXRlZ29yaWVzLmxlbmd0aClmb3IodmFyIGMgaW4gbClp ZihjIT09cil7dmFyIHU9ZVt3LmlkMm5hbWUoYyldO3M9cy5jb25jYXQodS5fdHJhY2VJbmRp Y2VzKX12YXIgZj1bWzAse31dLFswLHt9XV0sZD1bXTtmb3IoaT0wO2k8cy5sZW5ndGg7aSsr KXt2YXIgbT1uW3NbaV1dO2lmKHAgaW4gbSl7dmFyIGc9bVtwXSx2PW0uX2xlbmd0aHx8YS5t aW5Sb3dMZW5ndGgoZyk7aWYoaChnWzBdKSYmaChnWzFdKSlmb3Iobz0wO288djtvKyspe3Zh ciB5PWdbMF1bb10seD1nWzFdW29dO1MoeSkmJlMoeCkmJihkLnB1c2goW3kseF0pLHkgaW4g ZlswXVsxXXx8KGZbMF1bMV1beV09ZlswXVswXSsrKSx4IGluIGZbMV1bMV18fChmWzFdWzFd W3hdPWZbMV1bMF0rKykpfX19Zm9yKGQuc29ydCgoZnVuY3Rpb24odCxlKXt2YXIgcj1mWzBd WzFdLG49clt0WzBdXS1yW2VbMF1dO2lmKG4pcmV0dXJuIG47dmFyIGk9ZlsxXVsxXTtyZXR1 cm4gaVt0WzFdXS1pW2VbMV1dfSkpLGk9MDtpPGQubGVuZ3RoO2krKylJKGRbaV0pfSksdC5m cmFjdGlvbjJyPWZ1bmN0aW9uKGUpe3ZhciByPXQucjJsKHQucmFuZ2VbMF0pLG49dC5yMmwo dC5yYW5nZVsxXSk7cmV0dXJuIHQubDJyKHIrZSoobi1yKSl9LHQucjJmcmFjdGlvbj1mdW5j dGlvbihlKXt2YXIgcj10LnIybCh0LnJhbmdlWzBdKSxuPXQucjJsKHQucmFuZ2VbMV0pO3Jl dHVybih0LnIybChlKS1yKS8obi1yKX0sdC5jbGVhblJhbmdlPWZ1bmN0aW9uKGUscil7cnx8 KHI9e30pLGV8fChlPSJyYW5nZSIpO3ZhciBuLGksbz1hLm5lc3RlZFByb3BlcnR5KHQsZSku Z2V0KCk7aWYoaT0oaT0iZGF0ZSI9PT10LnR5cGU/YS5kZmx0UmFuZ2UodC5jYWxlbmRhcik6 InkiPT09cD9ULkRGTFRSQU5HRVk6InJlYWxheGlzIj09PXQuX25hbWU/WzAsMV06ci5kZmx0 UmFuZ2V8fFQuREZMVFJBTkdFWCkuc2xpY2UoKSwidG96ZXJvIiE9PXQucmFuZ2Vtb2RlJiYi bm9ubmVnYXRpdmUiIT09dC5yYW5nZW1vZGV8fChpWzBdPTApLG8mJjI9PT1vLmxlbmd0aClm b3IoImRhdGUiIT09dC50eXBlfHx0LmF1dG9yYW5nZXx8KG9bMF09YS5jbGVhbkRhdGUob1sw XSxtLHQuY2FsZW5kYXIpLG9bMV09YS5jbGVhbkRhdGUob1sxXSxtLHQuY2FsZW5kYXIpKSxu PTA7bjwyO24rKylpZigiZGF0ZSI9PT10LnR5cGUpe2lmKCFhLmlzRGF0ZVRpbWUob1tuXSx0 LmNhbGVuZGFyKSl7dFtlXT1pO2JyZWFrfWlmKHQucjJsKG9bMF0pPT09dC5yMmwob1sxXSkp e3ZhciBsPWEuY29uc3RyYWluKHQucjJsKG9bMF0pLGEuTUlOX01TKzFlMyxhLk1BWF9NUy0x ZTMpO29bMF09dC5sMnIobC0xZTMpLG9bMV09dC5sMnIobCsxZTMpO2JyZWFrfX1lbHNle2lm KCFzKG9bbl0pKXtpZighcyhvWzEtbl0pKXt0W2VdPWk7YnJlYWt9b1tuXT1vWzEtbl0qKG4/ MTA6LjEpfWlmKG9bbl08LWQ/b1tuXT0tZDpvW25dPmQmJihvW25dPWQpLG9bMF09PT1vWzFd KXt2YXIgYz1NYXRoLm1heCgxLE1hdGguYWJzKDFlLTYqb1swXSkpO29bMF0tPWMsb1sxXSs9 Y319ZWxzZSBhLm5lc3RlZFByb3BlcnR5KHQsZSkuc2V0KGkpfSx0LnNldFNjYWxlPWZ1bmN0 aW9uKHIpe3ZhciBuPWUuX3NpemU7aWYodC5vdmVybGF5aW5nKXt2YXIgaT13LmdldEZyb21J ZCh7X2Z1bGxMYXlvdXQ6ZX0sdC5vdmVybGF5aW5nKTt0LmRvbWFpbj1pLmRvbWFpbn12YXIg YT1yJiZ0Ll9yPyJfciI6InJhbmdlIixvPXQuY2FsZW5kYXI7dC5jbGVhblJhbmdlKGEpO3Zh ciBzLGwsYz10LnIybCh0W2FdWzBdLG8pLHU9dC5yMmwodFthXVsxXSxvKSxmPSJ5Ij09PXA7 aWYoKGY/KHQuX29mZnNldD1uLnQrKDEtdC5kb21haW5bMV0pKm4uaCx0Ll9sZW5ndGg9bi5o Kih0LmRvbWFpblsxXS10LmRvbWFpblswXSksdC5fbT10Ll9sZW5ndGgvKGMtdSksdC5fYj0t dC5fbSp1KToodC5fb2Zmc2V0PW4ubCt0LmRvbWFpblswXSpuLncsdC5fbGVuZ3RoPW4udyoo dC5kb21haW5bMV0tdC5kb21haW5bMF0pLHQuX209dC5fbGVuZ3RoLyh1LWMpLHQuX2I9LXQu X20qYyksdC5fcmFuZ2VicmVha3M9W10sdC5fbEJyZWFrcz0wLHQuX20yPTAsdC5fQj1bXSx0 LnJhbmdlYnJlYWtzKSYmKHQuX3JhbmdlYnJlYWtzPXQubG9jYXRlQnJlYWtzKE1hdGgubWlu KGMsdSksTWF0aC5tYXgoYyx1KSksdC5fcmFuZ2VicmVha3MubGVuZ3RoKSl7Zm9yKHM9MDtz PHQuX3JhbmdlYnJlYWtzLmxlbmd0aDtzKyspbD10Ll9yYW5nZWJyZWFrc1tzXSx0Ll9sQnJl YWtzKz1NYXRoLmFicyhsLm1heC1sLm1pbik7dmFyIGg9ZjtjPnUmJihoPSFoKSxoJiZ0Ll9y YW5nZWJyZWFrcy5yZXZlcnNlKCk7dmFyIGQ9aD8tMToxO2Zvcih0Ll9tMj1kKnQuX2xlbmd0 aC8oTWF0aC5hYnModS1jKS10Ll9sQnJlYWtzKSx0Ll9CLnB1c2goLXQuX20yKihmP3U6Yykp LHM9MDtzPHQuX3JhbmdlYnJlYWtzLmxlbmd0aDtzKyspbD10Ll9yYW5nZWJyZWFrc1tzXSx0 Ll9CLnB1c2godC5fQlt0Ll9CLmxlbmd0aC0xXS1kKnQuX20yKihsLm1heC1sLm1pbikpO2Zv cihzPTA7czx0Ll9yYW5nZWJyZWFrcy5sZW5ndGg7cysrKShsPXQuX3JhbmdlYnJlYWtzW3Nd KS5wbWluPUIobC5taW4pLGwucG1heD1CKGwubWF4KX1pZighaXNGaW5pdGUodC5fbSl8fCFp c0Zpbml0ZSh0Ll9iKXx8dC5fbGVuZ3RoPDApdGhyb3cgZS5fcmVwbG90dGluZz0hMSxuZXcg RXJyb3IoIlNvbWV0aGluZyB3ZW50IHdyb25nIHdpdGggYXhpcyBzY2FsaW5nIil9LHQubWFz a0JyZWFrcz1mdW5jdGlvbihlKXt2YXIgcixuLGksbyxzLGM9dC5yYW5nZWJyZWFrc3x8W107 Yy5fY2FjaGVkUGF0dGVybnN8fChjLl9jYWNoZWRQYXR0ZXJucz1jLm1hcCgoZnVuY3Rpb24o ZSl7cmV0dXJuIGUuZW5hYmxlZCYmZS5ib3VuZHM/YS5zaW1wbGVNYXAoZS5ib3VuZHMsZS5w YXR0ZXJuP2w6dC5kMmMpOm51bGx9KSkpLGMuX2NhY2hlZFZhbHVlc3x8KGMuX2NhY2hlZFZh bHVlcz1jLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZW5hYmxlZCYmZS52YWx1ZXM/YS5z aW1wbGVNYXAoZS52YWx1ZXMsdC5kMmMpLnNvcnQoYS5zb3J0ZXJBc2MpOm51bGx9KSkpO2Zv cih2YXIgdT0wO3U8Yy5sZW5ndGg7dSsrKXt2YXIgZj1jW3VdO2lmKGYuZW5hYmxlZClpZihm LmJvdW5kcyl7dmFyIGg9Zi5wYXR0ZXJuO3N3aXRjaChuPShyPWMuX2NhY2hlZFBhdHRlcm5z W3VdKVswXSxpPXJbMV0saCl7Y2FzZSBBOm89KHM9bmV3IERhdGUoZSkpLmdldFVUQ0RheSgp LG4+aSYmKGkrPTcsbzxuJiYobys9NykpO2JyZWFrO2Nhc2UgazpvPShzPW5ldyBEYXRlKGUp KS5nZXRVVENIb3VycygpKyhzLmdldFVUQ01pbnV0ZXMoKS82MCtzLmdldFVUQ1NlY29uZHMo KS8zNjAwK3MuZ2V0VVRDTWlsbGlzZWNvbmRzKCkvMzZlNSksbj5pJiYoaSs9MjQsbzxuJiYo bys9MjQpKTticmVhaztjYXNlIiI6bz1lfWlmKG8+PW4mJm88aSlyZXR1cm4gbX1lbHNlIGZv cih2YXIgcD1jLl9jYWNoZWRWYWx1ZXNbdV0sZD0wO2Q8cC5sZW5ndGg7ZCsrKWlmKGk9KG49 cFtkXSkrZi5kdmFsdWUsZT49biYmZTxpKXJldHVybiBtfXJldHVybiBlfSx0LmxvY2F0ZUJy ZWFrcz1mdW5jdGlvbihlLHIpe3ZhciBuLGksbyxzLGM9W107aWYoIXQucmFuZ2VicmVha3Mp cmV0dXJuIGM7dmFyIHU9dC5yYW5nZWJyZWFrcy5zbGljZSgpLnNvcnQoKGZ1bmN0aW9uKHQs ZSl7cmV0dXJuIHQucGF0dGVybj09PUEmJmUucGF0dGVybj09PWs/LTE6ZS5wYXR0ZXJuPT09 QSYmdC5wYXR0ZXJuPT09az8xOjB9KSksZj1mdW5jdGlvbih0LG4pe2lmKCh0PWEuY29uc3Ry YWluKHQsZSxyKSkhPT0obj1hLmNvbnN0cmFpbihuLGUscikpKXtmb3IodmFyIGk9ITAsbz0w O288Yy5sZW5ndGg7bysrKXt2YXIgcz1jW29dO3Q8cy5tYXgmJm4+PXMubWluJiYodDxzLm1p biYmKHMubWluPXQpLG4+cy5tYXgmJihzLm1heD1uKSxpPSExKX1pJiZjLnB1c2goe21pbjp0 LG1heDpufSl9fTtmb3Iobj0wO248dS5sZW5ndGg7bisrKXt2YXIgaD11W25dO2lmKGguZW5h YmxlZClpZihoLmJvdW5kcyl7dmFyIHA9ZSxkPXI7aC5wYXR0ZXJuJiYocD1NYXRoLmZsb29y KHApKSxvPShpPWEuc2ltcGxlTWFwKGguYm91bmRzLGgucGF0dGVybj9sOnQucjJsKSlbMF0s cz1pWzFdO3ZhciBtLGcsdz1uZXcgRGF0ZShwKTtzd2l0Y2goaC5wYXR0ZXJuKXtjYXNlIEE6 Zz12LG09KHMtbysoczxvPzc6MCkpKnkscCs9byp5LSh3LmdldFVUQ0RheSgpKnkrdy5nZXRV VENIb3VycygpKngrdy5nZXRVVENNaW51dGVzKCkqYit3LmdldFVUQ1NlY29uZHMoKSpfK3cu Z2V0VVRDTWlsbGlzZWNvbmRzKCkpO2JyZWFrO2Nhc2UgazpnPXksbT0ocy1vKyhzPG8/MjQ6 MCkpKngscCs9byp4LSh3LmdldFVUQ0hvdXJzKCkqeCt3LmdldFVUQ01pbnV0ZXMoKSpiK3cu Z2V0VVRDU2Vjb25kcygpKl8rdy5nZXRVVENNaWxsaXNlY29uZHMoKSk7YnJlYWs7ZGVmYXVs dDpwPU1hdGgubWluKGlbMF0saVsxXSksbT1nPShkPU1hdGgubWF4KGlbMF0saVsxXSkpLXB9 Zm9yKHZhciBUPXA7VDxkO1QrPWcpZihULFQrbSl9ZWxzZSBmb3IodmFyIE09YS5zaW1wbGVN YXAoaC52YWx1ZXMsdC5kMmMpLFM9MDtTPE0ubGVuZ3RoO1MrKylmKG89TVtTXSxzPW8raC5k dmFsdWUpfXJldHVybiBjLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubWluLWUubWlu fSkpLGN9LHQubWFrZUNhbGNkYXRhPWZ1bmN0aW9uKGUscixuKXt2YXIgaSxvLHMsbCxjPXQu dHlwZSx1PSJkYXRlIj09PWMmJmVbcisiY2FsZW5kYXIiXTtpZihyIGluIGUpe2lmKGk9ZVty XSxsPWUuX2xlbmd0aHx8YS5taW5Sb3dMZW5ndGgoaSksYS5pc1R5cGVkQXJyYXkoaSkmJigi bGluZWFyIj09PWN8fCJsb2ciPT09Yykpe2lmKGw9PT1pLmxlbmd0aClyZXR1cm4gaTtpZihp LnN1YmFycmF5KXJldHVybiBpLnN1YmFycmF5KDAsbCl9aWYoIm11bHRpY2F0ZWdvcnkiPT09 YylyZXR1cm4gZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9bmV3IEFycmF5KGUpLG49MDtuPGU7 bisrKXt2YXIgaT0odFswXXx8W10pW25dLGE9KHRbMV18fFtdKVtuXTtyW25dPU8oW2ksYV0p fXJldHVybiByfShpLGwpO2ZvcihvPW5ldyBBcnJheShsKSxzPTA7czxsO3MrKylvW3NdPXQu ZDJjKGlbc10sMCx1LG4pfWVsc2V7dmFyIGY9cisiMCJpbiBlP3QuZDJjKGVbcisiMCJdLDAs dSk6MCxoPWVbImQiK3JdP051bWJlcihlWyJkIityXSk6MTtmb3IoaT1lW3t4OiJ5Iix5OiJ4 In1bcl1dLGw9ZS5fbGVuZ3RofHxpLmxlbmd0aCxvPW5ldyBBcnJheShsKSxzPTA7czxsO3Mr KylvW3NdPWYrcypofWlmKHQucmFuZ2VicmVha3MpZm9yKHM9MDtzPGw7cysrKW9bc109dC5t YXNrQnJlYWtzKG9bc10pO3JldHVybiBvfSx0LmlzVmFsaWRSYW5nZT1mdW5jdGlvbihlKXty ZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmMj09PWUubGVuZ3RoJiZzKHQucjJsKGVbMF0pKSYm cyh0LnIybChlWzFdKSl9LHQuaXNQdFdpdGhpblJhbmdlPWZ1bmN0aW9uKGUscil7dmFyIG49 dC5jMmwoZVtwXSxudWxsLHIpLGk9dC5yMmwodC5yYW5nZVswXSksYT10LnIybCh0LnJhbmdl WzFdKTtyZXR1cm4gaTxhP2k8PW4mJm48PWE6YTw9biYmbjw9aX0sdC5fZW1wdHlDYXRlZ29y aWVzPWZ1bmN0aW9uKCl7dC5fY2F0ZWdvcmllcz1bXSx0Ll9jYXRlZ29yaWVzTWFwPXt9fSx0 LmNsZWFyQ2FsYz1mdW5jdGlvbigpe3ZhciByPXQuX21hdGNoR3JvdXA7aWYocil7dmFyIG49 bnVsbCxpPW51bGw7Zm9yKHZhciBhIGluIHIpe3ZhciBvPWVbdy5pZDJuYW1lKGEpXTtpZihv Ll9jYXRlZ29yaWVzKXtuPW8uX2NhdGVnb3JpZXMsaT1vLl9jYXRlZ29yaWVzTWFwO2JyZWFr fX1uJiZpPyh0Ll9jYXRlZ29yaWVzPW4sdC5fY2F0ZWdvcmllc01hcD1pKTp0Ll9lbXB0eUNh dGVnb3JpZXMoKX1lbHNlIHQuX2VtcHR5Q2F0ZWdvcmllcygpO2lmKHQuX2luaXRpYWxDYXRl Z29yaWVzKWZvcih2YXIgcz0wO3M8dC5faW5pdGlhbENhdGVnb3JpZXMubGVuZ3RoO3MrKylJ KHQuX2luaXRpYWxDYXRlZ29yaWVzW3NdKX0sdC5zb3J0QnlJbml0aWFsQ2F0ZWdvcmllcz1m dW5jdGlvbigpe3ZhciBuPVtdO2lmKHQuX2VtcHR5Q2F0ZWdvcmllcygpLHQuX2luaXRpYWxD YXRlZ29yaWVzKWZvcih2YXIgaT0wO2k8dC5faW5pdGlhbENhdGVnb3JpZXMubGVuZ3RoO2kr KylJKHQuX2luaXRpYWxDYXRlZ29yaWVzW2ldKTtuPW4uY29uY2F0KHQuX3RyYWNlSW5kaWNl cyk7dmFyIGE9dC5fbWF0Y2hHcm91cDtmb3IodmFyIG8gaW4gYSlpZihyIT09byl7dmFyIHM9 ZVt3LmlkMm5hbWUobyldO3MuX2NhdGVnb3JpZXM9dC5fY2F0ZWdvcmllcyxzLl9jYXRlZ29y aWVzTWFwPXQuX2NhdGVnb3JpZXNNYXAsbj1uLmNvbmNhdChzLl90cmFjZUluZGljZXMpfXJl dHVybiBufTt2YXIgVT1lLl9kM2xvY2FsZTsiZGF0ZSI9PT10LnR5cGUmJih0Ll9kYXRlRm9y bWF0PVU/VS50aW1lRm9ybWF0OmksdC5fZXh0cmFGb3JtYXQ9ZS5fZXh0cmFGb3JtYXQpLHQu X3NlcGFyYXRvcnM9ZS5zZXBhcmF0b3JzLHQuX251bUZvcm1hdD1VP1UubnVtYmVyRm9ybWF0 Om8sZGVsZXRlIHQuX21pbkR0aWNrLGRlbGV0ZSB0Ll9mb3JjZVRpY2swfX0seyIuLi8uLi9j b25zdGFudHMvbnVtZXJpY2FsIjo0NzksIi4uLy4uL2xpYiI6NTAzLCIuL2F4aXNfaWRzIjo1 NTgsIi4vY29uc3RhbnRzIjo1NjEsIkBwbG90bHkvZDMiOjU4LCJkMy10aW1lLWZvcm1hdCI6 MTIwLCJmYXN0LWlzbnVtZXJpYyI6MTkwfV0sNTc3OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1bInNob3dleHBvbmVudCIsInNo b3d0aWNrcHJlZml4Iiwic2hvd3RpY2tzdWZmaXgiXS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3Jl dHVybiB2b2lkIDAhPT10W2VdfSkpO2lmKGUuZXZlcnkoKGZ1bmN0aW9uKHIpe3JldHVybiB0 W3JdPT09dFtlWzBdXX0pKXx8MT09PWUubGVuZ3RoKXJldHVybiB0W2VbMF1dfX0se31dLDU3 ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxp PXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKS5jb250cmFzdCxhPXQoIi4vbGF5b3V0X2F0 dHJpYnV0ZXMiKSxvPXQoIi4vc2hvd19kZmx0Iikscz10KCIuLi9hcnJheV9jb250YWluZXJf ZGVmYXVsdHMiKTtmdW5jdGlvbiBsKHQsZSl7ZnVuY3Rpb24gcihyLGkpe3JldHVybiBuLmNv ZXJjZSh0LGUsYS50aWNrZm9ybWF0c3RvcHMscixpKX1yKCJlbmFibGVkIikmJihyKCJkdGlj a3JhbmdlIikscigidmFsdWUiKSl9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGMsdSl7dXx8 KHU9e30pO3ZhciBmPW8odCk7aWYocigic2hvd3RpY2tsYWJlbHMiKSl7dmFyIGg9dS5mb250 fHx7fSxwPWUuY29sb3IsZD0tMSE9PShlLnRpY2tsYWJlbHBvc2l0aW9ufHwiIikuaW5kZXhP ZigiaW5zaWRlIik/aSh1LmJnQ29sb3IpOnAmJnAhPT1hLmNvbG9yLmRmbHQ/cDpoLmNvbG9y O2lmKG4uY29lcmNlRm9udChyLCJ0aWNrZm9udCIse2ZhbWlseTpoLmZhbWlseSxzaXplOmgu c2l6ZSxjb2xvcjpkfSksdS5ub1RpY2tsYWJlbHN0ZXB8fCJtdWx0aWNhdGVnb3J5Ij09PWN8 fCJsb2ciPT09Y3x8cigidGlja2xhYmVsc3RlcCIpLHUubm9Bbmd8fHIoInRpY2thbmdsZSIp LCJjYXRlZ29yeSIhPT1jKXt2YXIgbT1yKCJ0aWNrZm9ybWF0Iik7cyh0LGUse25hbWU6InRp Y2tmb3JtYXRzdG9wcyIsaW5jbHVzaW9uQXR0cjoiZW5hYmxlZCIsaGFuZGxlSXRlbURlZmF1 bHRzOmx9KSxlLnRpY2tmb3JtYXRzdG9wcy5sZW5ndGh8fGRlbGV0ZSBlLnRpY2tmb3JtYXRz dG9wcyx1Lm5vRXhwfHxtfHwiZGF0ZSI9PT1jfHwocigic2hvd2V4cG9uZW50IixmKSxyKCJl eHBvbmVudGZvcm1hdCIpLHIoIm1pbmV4cG9uZW50Iikscigic2VwYXJhdGV0aG91c2FuZHMi KSl9fX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6MzY2LCIuLi8uLi9saWIiOjUwMywi Li4vYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIjo1NDksIi4vbGF5b3V0X2F0dHJpYnV0ZXMi OjU2OSwiLi9zaG93X2RmbHQiOjU3N31dLDU3OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKTtl LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsYSl7dmFyIG89YS5pc01pbm9yLHM9bz90Lm1pbm9y fHx7fTp0LGw9bz9lLm1pbm9yOmUsYz1vP2kubWlub3I6aSx1PW8/Im1pbm9yLiI6IiIsZj1u LmNvZXJjZTIocyxsLGMsInRpY2tsZW4iLG8/LjYqKGUudGlja2xlbnx8NSk6dm9pZCAwKSxo PW4uY29lcmNlMihzLGwsYywidGlja3dpZHRoIixvP2UudGlja3dpZHRofHwxOnZvaWQgMCks cD1uLmNvZXJjZTIocyxsLGMsInRpY2tjb2xvciIsKG8/ZS50aWNrY29sb3I6dm9pZCAwKXx8 bC5jb2xvcik7cih1KyJ0aWNrcyIsIW8mJmEub3V0ZXJUaWNrc3x8Znx8aHx8cD8ib3V0c2lk ZSI6IiIpfHwoZGVsZXRlIGwudGlja2xlbixkZWxldGUgbC50aWNrd2lkdGgsZGVsZXRlIGwu dGlja2NvbG9yKX19LHsiLi4vLi4vbGliIjo1MDMsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjU2 OX1dLDU4MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2NsZWFu X3RpY2tzIiksaT10KCIuLi8uLi9saWIiKS5pc0FycmF5T3JUeXBlZEFycmF5O2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUscixhLG8pe298fChvPXt9KTt2YXIgcz1vLmlzTWlub3IsbD1zP3Qu bWlub3J8fHt9OnQsYz1zP2UubWlub3I6ZSx1PXM/Im1pbm9yLiI6IiI7ZnVuY3Rpb24gZih0 KXt2YXIgZT1sW3RdO3JldHVybiB2b2lkIDAhPT1lP2U6KGMuX3RlbXBsYXRlfHx7fSlbdF19 dmFyIGg9ZigidGljazAiKSxwPWYoImR0aWNrIiksZD1mKCJ0aWNrdmFscyIpLG09cih1KyJ0 aWNrbW9kZSIsaShkKT8iYXJyYXkiOnA/ImxpbmVhciI6ImF1dG8iKTtpZigiYXV0byI9PT1t KXIodSsibnRpY2tzIik7ZWxzZSBpZigibGluZWFyIj09PW0pe3ZhciBnPWMuZHRpY2s9bi5k dGljayhwLGEpO2MudGljazA9bi50aWNrMChoLGEsZS5jYWxlbmRhcixnKX1lbHNlIGlmKCJt dWx0aWNhdGVnb3J5IiE9PWEpe3ZvaWQgMD09PXIodSsidGlja3ZhbHMiKT9jLnRpY2ttb2Rl PSJhdXRvIjpzfHxyKCJ0aWNrdGV4dCIpfX19LHsiLi4vLi4vbGliIjo1MDMsIi4vY2xlYW5f dGlja3MiOjU2MH1dLDU4MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCJAcGxvdGx5L2QzIiksaT10KCIuLi8uLi9yZWdpc3RyeSIpLGE9dCgiLi4vLi4vbGliIiks bz10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxzPXQoIi4vYXhlcyIpO2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUscixsKXt2YXIgYz10Ll9mdWxsTGF5b3V0O2lmKDAhPT1lLmxlbmd0 aCl7dmFyIHUsZixoLHA7bCYmKHU9bCgpKTt2YXIgZD1uLmVhc2Uoci5lYXNpbmcpO3JldHVy biB0Ll90cmFuc2l0aW9uRGF0YS5faW50ZXJydXB0Q2FsbGJhY2tzLnB1c2goKGZ1bmN0aW9u KCl7cmV0dXJuIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShwKSxwPW51bGwsZnVuY3Rp b24oKXtmb3IodmFyIHI9e30sbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgYT1lW25dLG89YS5w bG90aW5mby54YXhpcyxzPWEucGxvdGluZm8ueWF4aXM7YS54cjAmJihyW28uX25hbWUrIi5y YW5nZSJdPWEueHIwLnNsaWNlKCkpLGEueXIwJiYocltzLl9uYW1lKyIucmFuZ2UiXT1hLnly MC5zbGljZSgpKX1yZXR1cm4gaS5jYWxsKCJyZWxheW91dCIsdCxyKS50aGVuKChmdW5jdGlv bigpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKW0oZVt0XS5wbG90aW5mbyl9KSl9KCl9 KSksZj1EYXRlLm5vdygpLHA9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rp b24gbigpe2g9RGF0ZS5ub3coKTtmb3IodmFyIGE9TWF0aC5taW4oMSwoaC1mKS9yLmR1cmF0 aW9uKSxvPWQoYSkscz0wO3M8ZS5sZW5ndGg7cysrKWcoZVtzXSxvKTtoLWY+ci5kdXJhdGlv bj8oIWZ1bmN0aW9uKCl7Zm9yKHZhciByPXt9LG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIGE9 ZVtuXSxvPWEucGxvdGluZm8ueGF4aXMscz1hLnBsb3RpbmZvLnlheGlzO2EueHIxJiYocltv Ll9uYW1lKyIucmFuZ2UiXT1hLnhyMS5zbGljZSgpKSxhLnlyMSYmKHJbcy5fbmFtZSsiLnJh bmdlIl09YS55cjEuc2xpY2UoKSl9dSYmdSgpLGkuY2FsbCgicmVsYXlvdXQiLHQscikudGhl bigoZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyltKGVbdF0ucGxvdGlu Zm8pfSkpfSgpLHA9d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKG4pKTpwPXdpbmRvdy5y ZXF1ZXN0QW5pbWF0aW9uRnJhbWUobil9KSksUHJvbWlzZS5yZXNvbHZlKCl9ZnVuY3Rpb24g bSh0KXt2YXIgZT10LnhheGlzLHI9dC55YXhpcztjLl9kZWZzLnNlbGVjdCgiIyIrdC5jbGlw SWQrIj4gcmVjdCIpLmNhbGwoby5zZXRUcmFuc2xhdGUsMCwwKS5jYWxsKG8uc2V0U2NhbGUs MSwxKSx0LnBsb3QuY2FsbChvLnNldFRyYW5zbGF0ZSxlLl9vZmZzZXQsci5fb2Zmc2V0KS5j YWxsKG8uc2V0U2NhbGUsMSwxKTt2YXIgbj10LnBsb3Quc2VsZWN0QWxsKCIuc2NhdHRlcmxh eWVyIC50cmFjZSIpO24uc2VsZWN0QWxsKCIucG9pbnQiKS5jYWxsKG8uc2V0UG9pbnRHcm91 cFNjYWxlLDEsMSksbi5zZWxlY3RBbGwoIi50ZXh0cG9pbnQiKS5jYWxsKG8uc2V0VGV4dFBv aW50c1NjYWxlLDEsMSksbi5jYWxsKG8uaGlkZU91dHNpZGVSYW5nZVBvaW50cyx0KX1mdW5j dGlvbiBnKGUscil7dmFyIG49ZS5wbG90aW5mbyxpPW4ueGF4aXMsbD1uLnlheGlzLGM9aS5f bGVuZ3RoLHU9bC5fbGVuZ3RoLGY9ISFlLnhyMSxoPSEhZS55cjEscD1bXTtpZihmKXt2YXIg ZD1hLnNpbXBsZU1hcChlLnhyMCxpLnIybCksbT1hLnNpbXBsZU1hcChlLnhyMSxpLnIybCks Zz1kWzFdLWRbMF0sdj1tWzFdLW1bMF07cFswXT0oZFswXSooMS1yKStyKm1bMF0tZFswXSkv KGRbMV0tZFswXSkqYyxwWzJdPWMqKDEtcityKnYvZyksaS5yYW5nZVswXT1pLmwycihkWzBd KigxLXIpK3IqbVswXSksaS5yYW5nZVsxXT1pLmwycihkWzFdKigxLXIpK3IqbVsxXSl9ZWxz ZSBwWzBdPTAscFsyXT1jO2lmKGgpe3ZhciB5PWEuc2ltcGxlTWFwKGUueXIwLGwucjJsKSx4 PWEuc2ltcGxlTWFwKGUueXIxLGwucjJsKSxiPXlbMV0teVswXSxfPXhbMV0teFswXTtwWzFd PSh5WzFdKigxLXIpK3IqeFsxXS15WzFdKS8oeVswXS15WzFdKSp1LHBbM109dSooMS1yK3Iq Xy9iKSxsLnJhbmdlWzBdPWkubDJyKHlbMF0qKDEtcikrcip4WzBdKSxsLnJhbmdlWzFdPWwu bDJyKHlbMV0qKDEtcikrcip4WzFdKX1lbHNlIHBbMV09MCxwWzNdPXU7cy5kcmF3T25lKHQs aSx7c2tpcFRpdGxlOiEwfSkscy5kcmF3T25lKHQsbCx7c2tpcFRpdGxlOiEwfSkscy5yZWRy YXdDb21wb25lbnRzKHQsW2kuX2lkLGwuX2lkXSk7dmFyIHc9Zj9jL3BbMl06MSxUPWg/dS9w WzNdOjEsaz1mP3BbMF06MCxBPWg/cFsxXTowLE09Zj9wWzBdL3BbMl0qYzowLFM9aD9wWzFd L3BbM10qdTowLEU9aS5fb2Zmc2V0LU0sTD1sLl9vZmZzZXQtUztuLmNsaXBSZWN0LmNhbGwo by5zZXRUcmFuc2xhdGUsayxBKS5jYWxsKG8uc2V0U2NhbGUsMS93LDEvVCksbi5wbG90LmNh bGwoby5zZXRUcmFuc2xhdGUsRSxMKS5jYWxsKG8uc2V0U2NhbGUsdyxUKSxvLnNldFBvaW50 R3JvdXBTY2FsZShuLnpvb21TY2FsZVB0cywxL3csMS9UKSxvLnNldFRleHRQb2ludHNTY2Fs ZShuLnpvb21TY2FsZVR4dCwxL3csMS9UKX1zLnJlZHJhd0NvbXBvbmVudHModCl9fSx7Ii4u Ly4uL2NvbXBvbmVudHMvZHJhd2luZyI6Mzg4LCIuLi8uLi9saWIiOjUwMywiLi4vLi4vcmVn aXN0cnkiOjYzOCwiLi9heGVzIjo1NTQsIkBwbG90bHkvZDMiOjU4fV0sNTgyOltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3JlZ2lzdHJ5IikudHJhY2VJ cyxpPXQoIi4vYXhpc19hdXRvdHlwZSIpO2Z1bmN0aW9uIGEodCl7cmV0dXJue3Y6IngiLGg6 InkifVt0Lm9yaWVudGF0aW9ufHwidiJdfWZ1bmN0aW9uIG8odCxlKXt2YXIgcj1hKHQpLGk9 bih0LCJib3gtdmlvbGluIiksbz1uKHQuX2Z1bGxJbnB1dHx8e30sImNhbmRsZXN0aWNrIik7 cmV0dXJuIGkmJiFvJiZlPT09ciYmdm9pZCAwPT09dFtyXSYmdm9pZCAwPT09dFtyKyIwIl19 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHMpe3IoImF1dG90eXBlbnVtYmVycyIscy5hdXRv dHlwZW51bWJlcnNEZmx0KSwiLSI9PT1yKCJ0eXBlIiwocy5zcGxvbVN0YXNofHx7fSkudHlw ZSkmJighZnVuY3Rpb24odCxlKXtpZigiLSIhPT10LnR5cGUpcmV0dXJuO3ZhciByLHM9dC5f aWQsbD1zLmNoYXJBdCgwKTstMSE9PXMuaW5kZXhPZigic2NlbmUiKSYmKHM9bCk7dmFyIGM9 ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgaT10W25d O2lmKCJzcGxvbSI9PT1pLnR5cGUmJmkuX2xlbmd0aD4wJiYoaVsiXyIrcisiYXhlcyJdfHx7 fSlbZV0pcmV0dXJuIGk7aWYoKGlbcisiYXhpcyJdfHxyKT09PWUpe2lmKG8oaSxyKSlyZXR1 cm4gaTtpZigoaVtyXXx8W10pLmxlbmd0aHx8aVtyKyIwIl0pcmV0dXJuIGl9fX0oZSxzLGwp O2lmKCFjKXJldHVybjtpZigiaGlzdG9ncmFtIj09PWMudHlwZSYmbD09PXt2OiJ5IixoOiJ4 In1bYy5vcmllbnRhdGlvbnx8InYiXSlyZXR1cm4gdm9pZCh0LnR5cGU9ImxpbmVhciIpO3Zh ciB1PWwrImNhbGVuZGFyIixmPWNbdV0saD17bm9NdWx0aUNhdGVnb3J5OiFuKGMsImNhcnRl c2lhbiIpfHxuKGMsIm5vTXVsdGlDYXRlZ29yeSIpfTsiYm94Ij09PWMudHlwZSYmYy5faGFz UHJlQ29tcFN0YXRzJiZsPT09e2g6IngiLHY6InkifVtjLm9yaWVudGF0aW9ufHwidiJdJiYo aC5ub011bHRpQ2F0ZWdvcnk9ITApO2lmKGguYXV0b3R5cGVudW1iZXJzPXQuYXV0b3R5cGVu dW1iZXJzLG8oYyxsKSl7dmFyIHA9YShjKSxkPVtdO2ZvcihyPTA7cjxlLmxlbmd0aDtyKysp e3ZhciBtPWVbcl07bihtLCJib3gtdmlvbGluIikmJihtW2wrImF4aXMiXXx8bCk9PT1zJiYo dm9pZCAwIT09bVtwXT9kLnB1c2gobVtwXVswXSk6dm9pZCAwIT09bS5uYW1lP2QucHVzaCht Lm5hbWUpOmQucHVzaCgidGV4dCIpLG1bdV0hPT1mJiYoZj12b2lkIDApKX10LnR5cGU9aShk LGYsaCl9ZWxzZSBpZigic3Bsb20iPT09Yy50eXBlKXt2YXIgZz1jLmRpbWVuc2lvbnNbYy5f YXhlc0RpbVtzXV07Zy52aXNpYmxlJiYodC50eXBlPWkoZy52YWx1ZXMsZixoKSl9ZWxzZSB0 LnR5cGU9aShjW2xdfHxbY1tsKyIwIl1dLGYsaCl9KGUscy5kYXRhKSwiLSI9PT1lLnR5cGU/ ZS50eXBlPSJsaW5lYXIiOnQudHlwZT1lLnR5cGUpfX0seyIuLi8uLi9yZWdpc3RyeSI6NjM4 LCIuL2F4aXNfYXV0b3R5cGUiOjU1NX1dLDU4MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj10KCIuLi9yZWdpc3RyeSIpLGk9dCgiLi4vbGliIik7ZnVuY3Rpb24gYSh0 LGUscil7dmFyIG4sYSxvLHM9ITE7aWYoImRhdGEiPT09ZS50eXBlKW49dC5fZnVsbERhdGFb bnVsbCE9PWUudHJhY2VzP2UudHJhY2VzWzBdOjBdO2Vsc2V7aWYoImxheW91dCIhPT1lLnR5 cGUpcmV0dXJuITE7bj10Ll9mdWxsTGF5b3V0fXJldHVybiBhPWkubmVzdGVkUHJvcGVydHko bixlLnByb3ApLmdldCgpLChvPXJbZS50eXBlXT1yW2UudHlwZV18fHt9KS5oYXNPd25Qcm9w ZXJ0eShlLnByb3ApJiZvW2UucHJvcF0hPT1hJiYocz0hMCksb1tlLnByb3BdPWEse2NoYW5n ZWQ6cyx2YWx1ZTphfX1mdW5jdGlvbiBvKHQsZSl7dmFyIHI9W10sbj1lWzBdLGE9e307aWYo InN0cmluZyI9PXR5cGVvZiBuKWFbbl09ZVsxXTtlbHNle2lmKCFpLmlzUGxhaW5PYmplY3Qo bikpcmV0dXJuIHI7YT1ufXJldHVybiBsKGEsKGZ1bmN0aW9uKHQsZSxuKXtyLnB1c2goe3R5 cGU6ImxheW91dCIscHJvcDp0LHZhbHVlOm59KX0pLCIiLDApLHJ9ZnVuY3Rpb24gcyh0LGUp e3ZhciByLG4sYSxvLHM9W107aWYobj1lWzBdLGE9ZVsxXSxyPWVbMl0sbz17fSwic3RyaW5n Ij09dHlwZW9mIG4pb1tuXT1hO2Vsc2V7aWYoIWkuaXNQbGFpbk9iamVjdChuKSlyZXR1cm4g cztvPW4sdm9pZCAwPT09ciYmKHI9YSl9cmV0dXJuIHZvaWQgMD09PXImJihyPW51bGwpLGwo bywoZnVuY3Rpb24oZSxuLGkpe3ZhciBhLG87aWYoQXJyYXkuaXNBcnJheShpKSl7bz1pLnNs aWNlKCk7dmFyIGw9TWF0aC5taW4oby5sZW5ndGgsdC5kYXRhLmxlbmd0aCk7ciYmKGw9TWF0 aC5taW4obCxyLmxlbmd0aCkpLGE9W107Zm9yKHZhciBjPTA7YzxsO2MrKylhW2NdPXI/cltj XTpjfWVsc2Ugbz1pLGE9cj9yLnNsaWNlKCk6bnVsbDtpZihudWxsPT09YSlBcnJheS5pc0Fy cmF5KG8pJiYobz1vWzBdKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoYSkpe2lmKCFBcnJheS5p c0FycmF5KG8pKXt2YXIgdT1vO289W107Zm9yKHZhciBmPTA7ZjxhLmxlbmd0aDtmKyspb1tm XT11fW8ubGVuZ3RoPU1hdGgubWluKGEubGVuZ3RoLG8ubGVuZ3RoKX1zLnB1c2goe3R5cGU6 ImRhdGEiLHByb3A6ZSx0cmFjZXM6YSx2YWx1ZTpvfSl9KSwiIiwwKSxzfWZ1bmN0aW9uIGwo dCxlLHIsbil7T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24oYSl7dmFyIG89dFth XTtpZigiXyIhPT1hWzBdKXt2YXIgcz1yKyhuPjA/Ii4iOiIiKSthO2kuaXNQbGFpbk9iamVj dChvKT9sKG8sZSxzLG4rMSk6ZShzLGEsbyl9fSkpfXIubWFuYWdlQ29tbWFuZE9ic2VydmVy PWZ1bmN0aW9uKHQsZSxuLG8pe3ZhciBzPXt9LGw9ITA7ZSYmZS5fY29tbWFuZE9ic2VydmVy JiYocz1lLl9jb21tYW5kT2JzZXJ2ZXIpLHMuY2FjaGV8fChzLmNhY2hlPXt9KSxzLmxvb2t1 cFRhYmxlPXt9O3ZhciBjPXIuaGFzU2ltcGxlQVBJQ29tbWFuZEJpbmRpbmdzKHQsbixzLmxv b2t1cFRhYmxlKTtpZihlJiZlLl9jb21tYW5kT2JzZXJ2ZXIpe2lmKGMpcmV0dXJuIHM7aWYo ZS5fY29tbWFuZE9ic2VydmVyLnJlbW92ZSlyZXR1cm4gZS5fY29tbWFuZE9ic2VydmVyLnJl bW92ZSgpLGUuX2NvbW1hbmRPYnNlcnZlcj1udWxsLHN9aWYoYyl7YSh0LGMscy5jYWNoZSks cy5jaGVjaz1mdW5jdGlvbigpe2lmKGwpe3ZhciBlPWEodCxjLHMuY2FjaGUpO3JldHVybiBl LmNoYW5nZWQmJm8mJnZvaWQgMCE9PXMubG9va3VwVGFibGVbZS52YWx1ZV0mJihzLmRpc2Fi bGUoKSxQcm9taXNlLnJlc29sdmUobyh7dmFsdWU6ZS52YWx1ZSx0eXBlOmMudHlwZSxwcm9w OmMucHJvcCx0cmFjZXM6Yy50cmFjZXMsaW5kZXg6cy5sb29rdXBUYWJsZVtlLnZhbHVlXX0p KS50aGVuKHMuZW5hYmxlLHMuZW5hYmxlKSksZS5jaGFuZ2VkfX07Zm9yKHZhciB1PVsicGxv dGx5X3JlbGF5b3V0IiwicGxvdGx5X3JlZHJhdyIsInBsb3RseV9yZXN0eWxlIiwicGxvdGx5 X3VwZGF0ZSIsInBsb3RseV9hbmltYXRpbmdmcmFtZSIsInBsb3RseV9hZnRlcnBsb3QiXSxm PTA7Zjx1Lmxlbmd0aDtmKyspdC5faW50ZXJuYWxPbih1W2ZdLHMuY2hlY2spO3MucmVtb3Zl PWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx1Lmxlbmd0aDtlKyspdC5fcmVtb3ZlSW50ZXJu YWxMaXN0ZW5lcih1W2VdLHMuY2hlY2spfX1lbHNlIGkubG9nKCJVbmFibGUgdG8gYXV0b21h dGljYWxseSBiaW5kIHBsb3QgdXBkYXRlcyB0byBBUEkgY29tbWFuZCIpLHMubG9va3VwVGFi bGU9e30scy5yZW1vdmU9ZnVuY3Rpb24oKXt9O3JldHVybiBzLmRpc2FibGU9ZnVuY3Rpb24o KXtsPSExfSxzLmVuYWJsZT1mdW5jdGlvbigpe2w9ITB9LGUmJihlLl9jb21tYW5kT2JzZXJ2 ZXI9cyksc30sci5oYXNTaW1wbGVBUElDb21tYW5kQmluZGluZ3M9ZnVuY3Rpb24odCxlLG4p e3ZhciBpLGEsbz1lLmxlbmd0aDtmb3IoaT0wO2k8bztpKyspe3ZhciBzLGw9ZVtpXSxjPWwu bWV0aG9kLHU9bC5hcmdzO2lmKEFycmF5LmlzQXJyYXkodSl8fCh1PVtdKSwhYylyZXR1cm4h MTt2YXIgZj1yLmNvbXB1dGVBUElDb21tYW5kQmluZGluZ3ModCxjLHUpO2lmKDEhPT1mLmxl bmd0aClyZXR1cm4hMTtpZihhKXtpZigocz1mWzBdKS50eXBlIT09YS50eXBlKXJldHVybiEx O2lmKHMucHJvcCE9PWEucHJvcClyZXR1cm4hMTtpZihBcnJheS5pc0FycmF5KGEudHJhY2Vz KSl7aWYoIUFycmF5LmlzQXJyYXkocy50cmFjZXMpKXJldHVybiExO3MudHJhY2VzLnNvcnQo KTtmb3IodmFyIGg9MDtoPGEudHJhY2VzLmxlbmd0aDtoKyspaWYoYS50cmFjZXNbaF0hPT1z LnRyYWNlc1toXSlyZXR1cm4hMX1lbHNlIGlmKHMucHJvcCE9PWEucHJvcClyZXR1cm4hMX1l bHNlIGE9ZlswXSxBcnJheS5pc0FycmF5KGEudHJhY2VzKSYmYS50cmFjZXMuc29ydCgpO3Zh ciBwPShzPWZbMF0pLnZhbHVlO2lmKEFycmF5LmlzQXJyYXkocCkpe2lmKDEhPT1wLmxlbmd0 aClyZXR1cm4hMTtwPXBbMF19biYmKG5bcF09aSl9cmV0dXJuIGF9LHIuZXhlY3V0ZUFQSUNv bW1hbmQ9ZnVuY3Rpb24odCxlLHIpe2lmKCJza2lwIj09PWUpcmV0dXJuIFByb21pc2UucmVz b2x2ZSgpO3ZhciBhPW4uYXBpTWV0aG9kUmVnaXN0cnlbZV0sbz1bdF07QXJyYXkuaXNBcnJh eShyKXx8KHI9W10pO2Zvcih2YXIgcz0wO3M8ci5sZW5ndGg7cysrKW8ucHVzaChyW3NdKTty ZXR1cm4gYS5hcHBseShudWxsLG8pLmNhdGNoKChmdW5jdGlvbih0KXtyZXR1cm4gaS53YXJu KCJBUEkgY2FsbCB0byBQbG90bHkuIitlKyIgcmVqZWN0ZWQuIix0KSxQcm9taXNlLnJlamVj dCh0KX0pKX0sci5jb21wdXRlQVBJQ29tbWFuZEJpbmRpbmdzPWZ1bmN0aW9uKHQsZSxyKXt2 YXIgbjtzd2l0Y2goQXJyYXkuaXNBcnJheShyKXx8KHI9W10pLGUpe2Nhc2UicmVzdHlsZSI6 bj1zKHQscik7YnJlYWs7Y2FzZSJyZWxheW91dCI6bj1vKHQscik7YnJlYWs7Y2FzZSJ1cGRh dGUiOm49cyh0LFtyWzBdLHJbMl1dKS5jb25jYXQobyh0LFtyWzFdXSkpO2JyZWFrO2Nhc2Ui YW5pbWF0ZSI6bj1mdW5jdGlvbih0LGUpe3JldHVybiBBcnJheS5pc0FycmF5KGVbMF0pJiYx PT09ZVswXS5sZW5ndGgmJi0xIT09WyJzdHJpbmciLCJudW1iZXIiXS5pbmRleE9mKHR5cGVv ZiBlWzBdWzBdKT9be3R5cGU6ImxheW91dCIscHJvcDoiX2N1cnJlbnRGcmFtZSIsdmFsdWU6 ZVswXVswXS50b1N0cmluZygpfV06W119KDAscik7YnJlYWs7ZGVmYXVsdDpuPVtdfXJldHVy biBufX0seyIuLi9saWIiOjUwMywiLi4vcmVnaXN0cnkiOjYzOH1dLDU4NDpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxh dDtyLmF0dHJpYnV0ZXM9ZnVuY3Rpb24odCxlKXtlPWV8fHt9O3ZhciByPXt2YWxUeXBlOiJp bmZvX2FycmF5IixlZGl0VHlwZToodD10fHx7fSkuZWRpdFR5cGUsaXRlbXM6W3t2YWxUeXBl OiJudW1iZXIiLG1pbjowLG1heDoxLGVkaXRUeXBlOnQuZWRpdFR5cGV9LHt2YWxUeXBlOiJu dW1iZXIiLG1pbjowLG1heDoxLGVkaXRUeXBlOnQuZWRpdFR5cGV9XSxkZmx0OlswLDFdfSxp PSh0Lm5hbWUmJnQubmFtZSx0LnRyYWNlLGUuZGVzY3JpcHRpb24mJmUuZGVzY3JpcHRpb24s e3g6bih7fSxyLHt9KSx5Om4oe30scix7fSksZWRpdFR5cGU6dC5lZGl0VHlwZX0pO3JldHVy biB0Lm5vR3JpZENlbGx8fChpLnJvdz17dmFsVHlwZToiaW50ZWdlciIsbWluOjAsZGZsdDow LGVkaXRUeXBlOnQuZWRpdFR5cGV9LGkuY29sdW1uPXt2YWxUeXBlOiJpbnRlZ2VyIixtaW46 MCxkZmx0OjAsZWRpdFR5cGU6dC5lZGl0VHlwZX0pLGl9LHIuZGVmYXVsdHM9ZnVuY3Rpb24o dCxlLHIsbil7dmFyIGk9biYmbi54fHxbMCwxXSxhPW4mJm4ueXx8WzAsMV0sbz1lLmdyaWQ7 aWYobyl7dmFyIHM9cigiZG9tYWluLmNvbHVtbiIpO3ZvaWQgMCE9PXMmJihzPG8uY29sdW1u cz9pPW8uX2RvbWFpbnMueFtzXTpkZWxldGUgdC5kb21haW4uY29sdW1uKTt2YXIgbD1yKCJk b21haW4ucm93Iik7dm9pZCAwIT09bCYmKGw8by5yb3dzP2E9by5fZG9tYWlucy55W2xdOmRl bGV0ZSB0LmRvbWFpbi5yb3cpfXZhciBjPXIoImRvbWFpbi54IixpKSx1PXIoImRvbWFpbi55 IixhKTtjWzBdPGNbMV18fCh0LmRvbWFpbi54PWkuc2xpY2UoKSksdVswXTx1WzFdfHwodC5k b21haW4ueT1hLnNsaWNlKCkpfX0seyIuLi9saWIvZXh0ZW5kIjo0OTN9XSw1ODU6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQu ZWRpdFR5cGUscj10LmNvbG9yRWRpdFR5cGU7dm9pZCAwPT09ciYmKHI9ZSk7dmFyIG49e2Zh bWlseTp7dmFsVHlwZToic3RyaW5nIixub0JsYW5rOiEwLHN0cmljdDohMCxlZGl0VHlwZTpl fSxzaXplOnt2YWxUeXBlOiJudW1iZXIiLG1pbjoxLGVkaXRUeXBlOmV9LGNvbG9yOnt2YWxU eXBlOiJjb2xvciIsZWRpdFR5cGU6cn0sZWRpdFR5cGU6ZX07cmV0dXJuIHQuYXV0b1NpemUm JihuLnNpemUuZGZsdD0iYXV0byIpLHQuYXV0b0NvbG9yJiYobi5jb2xvci5kZmx0PSJhdXRv IiksdC5hcnJheU9rJiYobi5mYW1pbHkuYXJyYXlPaz0hMCxuLnNpemUuYXJyYXlPaz0hMCxu LmNvbG9yLmFycmF5T2s9ITApLG59fSx7fV0sNTg2OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO2UuZXhwb3J0cz17X2lzTGlua2VkVG9BcnJheToiZnJhbWVzX2VudHJ5Iixncm91 cDp7dmFsVHlwZToic3RyaW5nIn0sbmFtZTp7dmFsVHlwZToic3RyaW5nIn0sdHJhY2VzOnt2 YWxUeXBlOiJhbnkifSxiYXNlZnJhbWU6e3ZhbFR5cGU6InN0cmluZyJ9LGRhdGE6e3ZhbFR5 cGU6ImFueSJ9LGxheW91dDp7dmFsVHlwZToiYW55In19fSx7fV0sNTg3OltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3IucHJvak5hbWVzPXthaXJ5OiJhaXJ5IixhaXRvZmY6ImFp dG9mZiIsImFsYmVycyB1c2EiOiJhbGJlcnNVc2EiLGFsYmVyczoiYWxiZXJzIixhdWd1c3Q6 ImF1Z3VzdCIsImF6aW11dGhhbCBlcXVhbCBhcmVhIjoiYXppbXV0aGFsRXF1YWxBcmVhIiwi YXppbXV0aGFsIGVxdWlkaXN0YW50IjoiYXppbXV0aGFsRXF1aWRpc3RhbnQiLGJha2VyOiJi YWtlciIsYmVydGluMTk1MzoiYmVydGluMTk1MyIsYm9nZ3M6ImJvZ2dzIixib25uZToiYm9u bmUiLGJvdHRvbWxleToiYm90dG9tbGV5Iixicm9tbGV5OiJicm9tbGV5Iixjb2xsaWdub246 ImNvbGxpZ25vbiIsImNvbmljIGNvbmZvcm1hbCI6ImNvbmljQ29uZm9ybWFsIiwiY29uaWMg ZXF1YWwgYXJlYSI6ImNvbmljRXF1YWxBcmVhIiwiY29uaWMgZXF1aWRpc3RhbnQiOiJjb25p Y0VxdWlkaXN0YW50IixjcmFpZzoiY3JhaWciLGNyYXN0ZXI6ImNyYXN0ZXIiLCJjeWxpbmRy aWNhbCBlcXVhbCBhcmVhIjoiY3lsaW5kcmljYWxFcXVhbEFyZWEiLCJjeWxpbmRyaWNhbCBz dGVyZW9ncmFwaGljIjoiY3lsaW5kcmljYWxTdGVyZW9ncmFwaGljIixlY2tlcnQxOiJlY2tl cnQxIixlY2tlcnQyOiJlY2tlcnQyIixlY2tlcnQzOiJlY2tlcnQzIixlY2tlcnQ0OiJlY2tl cnQ0IixlY2tlcnQ1OiJlY2tlcnQ1IixlY2tlcnQ2OiJlY2tlcnQ2IixlaXNlbmxvaHI6ImVp c2VubG9ociIsZXF1aXJlY3Rhbmd1bGFyOiJlcXVpcmVjdGFuZ3VsYXIiLGZhaGV5OiJmYWhl eSIsImZvdWNhdXQgc2ludXNvaWRhbCI6ImZvdWNhdXRTaW51c29pZGFsIixmb3VjYXV0OiJm b3VjYXV0IixnaW56YnVyZzQ6ImdpbnpidXJnNCIsZ2luemJ1cmc1OiJnaW56YnVyZzUiLGdp bnpidXJnNjoiZ2luemJ1cmc2IixnaW56YnVyZzg6ImdpbnpidXJnOCIsZ2luemJ1cmc5OiJn aW56YnVyZzkiLGdub21vbmljOiJnbm9tb25pYyIsImdyaW5nb3J0ZW4gcXVpbmN1bmNpYWwi OiJncmluZ29ydGVuUXVpbmN1bmNpYWwiLGdyaW5nb3J0ZW46ImdyaW5nb3J0ZW4iLGd1eW91 OiJndXlvdSIsaGFtbWVyOiJoYW1tZXIiLGhpbGw6ImhpbGwiLGhvbW9sb3NpbmU6ImhvbW9s b3NpbmUiLGh1Zm5hZ2VsOiJodWZuYWdlbCIsaHlwZXJlbGxpcHRpY2FsOiJoeXBlcmVsbGlw dGljYWwiLGthdnJheXNraXk3OiJrYXZyYXlza2l5NyIsbGFncmFuZ2U6ImxhZ3JhbmdlIixs YXJyaXZlZToibGFycml2ZWUiLGxhc2tvd3NraToibGFza293c2tpIixsb3hpbXV0aGFsOiJs b3hpbXV0aGFsIixtZXJjYXRvcjoibWVyY2F0b3IiLG1pbGxlcjoibWlsbGVyIixtb2xsd2Vp ZGU6Im1vbGx3ZWlkZSIsIm10IGZsYXQgcG9sYXIgcGFyYWJvbGljIjoibXRGbGF0UG9sYXJQ YXJhYm9saWMiLCJtdCBmbGF0IHBvbGFyIHF1YXJ0aWMiOiJtdEZsYXRQb2xhclF1YXJ0aWMi LCJtdCBmbGF0IHBvbGFyIHNpbnVzb2lkYWwiOiJtdEZsYXRQb2xhclNpbnVzb2lkYWwiLCJu YXR1cmFsIGVhcnRoIjoibmF0dXJhbEVhcnRoIiwibmF0dXJhbCBlYXJ0aDEiOiJuYXR1cmFs RWFydGgxIiwibmF0dXJhbCBlYXJ0aDIiOiJuYXR1cmFsRWFydGgyIiwibmVsbCBoYW1tZXIi OiJuZWxsSGFtbWVyIixuaWNvbG9zaToibmljb2xvc2kiLG9ydGhvZ3JhcGhpYzoib3J0aG9n cmFwaGljIixwYXR0ZXJzb246InBhdHRlcnNvbiIsInBlaXJjZSBxdWluY3VuY2lhbCI6InBl aXJjZVF1aW5jdW5jaWFsIixwb2x5Y29uaWM6InBvbHljb25pYyIsInJlY3Rhbmd1bGFyIHBv bHljb25pYyI6InJlY3Rhbmd1bGFyUG9seWNvbmljIixyb2JpbnNvbjoicm9iaW5zb24iLHNh dGVsbGl0ZToic2F0ZWxsaXRlIiwic2ludSBtb2xsd2VpZGUiOiJzaW51TW9sbHdlaWRlIixz aW51c29pZGFsOiJzaW51c29pZGFsIixzdGVyZW9ncmFwaGljOiJzdGVyZW9ncmFwaGljIix0 aW1lczoidGltZXMiLCJ0cmFuc3ZlcnNlIG1lcmNhdG9yIjoidHJhbnN2ZXJzZU1lcmNhdG9y IiwidmFuIGRlciBncmludGVuIjoidmFuRGVyR3JpbnRlbiIsInZhbiBkZXIgZ3JpbnRlbjIi OiJ2YW5EZXJHcmludGVuMiIsInZhbiBkZXIgZ3JpbnRlbjMiOiJ2YW5EZXJHcmludGVuMyIs InZhbiBkZXIgZ3JpbnRlbjQiOiJ2YW5EZXJHcmludGVuNCIsd2FnbmVyNDoid2FnbmVyNCIs d2FnbmVyNjoid2FnbmVyNiIsd2llY2hlbDoid2llY2hlbCIsIndpbmtlbCB0cmlwZWwiOiJ3 aW5rZWwzIix3aW5rZWwzOiJ3aW5rZWwzIn0sci5heGVzTmFtZXM9WyJsb25heGlzIiwibGF0 YXhpcyJdLHIubG9uYXhpc1NwYW49e29ydGhvZ3JhcGhpYzoxODAsImF6aW11dGhhbCBlcXVh bCBhcmVhIjozNjAsImF6aW11dGhhbCBlcXVpZGlzdGFudCI6MzYwLCJjb25pYyBjb25mb3Jt YWwiOjE4MCxnbm9tb25pYzoxNjAsc3RlcmVvZ3JhcGhpYzoxODAsInRyYW5zdmVyc2UgbWVy Y2F0b3IiOjE4MCwiKiI6MzYwfSxyLmxhdGF4aXNTcGFuPXsiY29uaWMgY29uZm9ybWFsIjox NTAsc3RlcmVvZ3JhcGhpYzoxNzkuNSwiKiI6MTgwfSxyLnNjb3BlRGVmYXVsdHM9e3dvcmxk Ontsb25heGlzUmFuZ2U6Wy0xODAsMTgwXSxsYXRheGlzUmFuZ2U6Wy05MCw5MF0scHJvalR5 cGU6ImVxdWlyZWN0YW5ndWxhciIscHJvalJvdGF0ZTpbMCwwLDBdfSx1c2E6e2xvbmF4aXNS YW5nZTpbLTE4MCwtNTBdLGxhdGF4aXNSYW5nZTpbMTUsODBdLHByb2pUeXBlOiJhbGJlcnMg dXNhIn0sZXVyb3BlOntsb25heGlzUmFuZ2U6Wy0zMCw2MF0sbGF0YXhpc1JhbmdlOlszMCw4 NV0scHJvalR5cGU6ImNvbmljIGNvbmZvcm1hbCIscHJvalJvdGF0ZTpbMTUsMCwwXSxwcm9q UGFyYWxsZWxzOlswLDYwXX0sYXNpYTp7bG9uYXhpc1JhbmdlOlsyMiwxNjBdLGxhdGF4aXNS YW5nZTpbLTE1LDU1XSxwcm9qVHlwZToibWVyY2F0b3IiLHByb2pSb3RhdGU6WzAsMCwwXX0s YWZyaWNhOntsb25heGlzUmFuZ2U6Wy0zMCw2MF0sbGF0YXhpc1JhbmdlOlstNDAsNDBdLHBy b2pUeXBlOiJtZXJjYXRvciIscHJvalJvdGF0ZTpbMCwwLDBdfSwibm9ydGggYW1lcmljYSI6 e2xvbmF4aXNSYW5nZTpbLTE4MCwtNDVdLGxhdGF4aXNSYW5nZTpbNSw4NV0scHJvalR5cGU6 ImNvbmljIGNvbmZvcm1hbCIscHJvalJvdGF0ZTpbLTEwMCwwLDBdLHByb2pQYXJhbGxlbHM6 WzI5LjUsNDUuNV19LCJzb3V0aCBhbWVyaWNhIjp7bG9uYXhpc1JhbmdlOlstMTAwLC0zMF0s bGF0YXhpc1JhbmdlOlstNjAsMTVdLHByb2pUeXBlOiJtZXJjYXRvciIscHJvalJvdGF0ZTpb MCwwLDBdfX0sci5jbGlwUGFkPS4wMDEsci5wcmVjaXNpb249LjEsci5sYW5kQ29sb3I9IiNG MERDODIiLHIud2F0ZXJDb2xvcj0iIzMzOTlGRiIsci5sb2NhdGlvbm1vZGVUb0xheWVyPXsi SVNPLTMiOiJjb3VudHJpZXMiLCJVU0Etc3RhdGVzIjoic3VidW5pdHMiLCJjb3VudHJ5IG5h bWVzIjoiY291bnRyaWVzIn0sci5zcGhlcmVTVkc9e3R5cGU6IlNwaGVyZSJ9LHIuZmlsbExh eWVycz17b2NlYW46MSxsYW5kOjEsbGFrZXM6MX0sci5saW5lTGF5ZXJzPXtzdWJ1bml0czox LGNvdW50cmllczoxLGNvYXN0bGluZXM6MSxyaXZlcnM6MSxmcmFtZToxfSxyLmxheWVycz1b ImJnIiwib2NlYW4iLCJsYW5kIiwibGFrZXMiLCJzdWJ1bml0cyIsImNvdW50cmllcyIsImNv YXN0bGluZXMiLCJyaXZlcnMiLCJsYXRheGlzIiwibG9uYXhpcyIsImZyYW1lIiwiYmFja3Bs b3QiLCJmcm9udHBsb3QiXSxyLmxheWVyc0ZvckNob3JvcGxldGg9WyJiZyIsIm9jZWFuIiwi bGFuZCIsInN1YnVuaXRzIiwiY291bnRyaWVzIiwiY29hc3RsaW5lcyIsImxhdGF4aXMiLCJs b25heGlzIiwiZnJhbWUiLCJiYWNrcGxvdCIsInJpdmVycyIsImxha2VzIiwiZnJvbnRwbG90 Il0sci5sYXllck5hbWVUb0FkamVjdGl2ZT17b2NlYW46Im9jZWFuIixsYW5kOiJsYW5kIixs YWtlczoibGFrZSIsc3VidW5pdHM6InN1YnVuaXQiLGNvdW50cmllczoiY291bnRyeSIsY29h c3RsaW5lczoiY29hc3RsaW5lIixyaXZlcnM6InJpdmVyIixmcmFtZToiZnJhbWUifX0se31d LDU4ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJAcGxvdGx5L2Qz IiksaT10KCJkMy1nZW8iKSxhPWkuZ2VvUGF0aCxvPWkuZ2VvRGlzdGFuY2Uscz10KCJkMy1n ZW8tcHJvamVjdGlvbiIpLGw9dCgiLi4vLi4vcmVnaXN0cnkiKSxjPXQoIi4uLy4uL2xpYiIp LHU9Yy5zdHJUcmFuc2xhdGUsZj10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksaD10KCIu Li8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxwPXQoIi4uLy4uL2NvbXBvbmVudHMvZngiKSxk PXQoIi4uL3Bsb3RzIiksbT10KCIuLi9jYXJ0ZXNpYW4vYXhlcyIpLGc9dCgiLi4vY2FydGVz aWFuL2F1dG9yYW5nZSIpLmdldEF1dG9SYW5nZSx2PXQoIi4uLy4uL2NvbXBvbmVudHMvZHJh Z2VsZW1lbnQiKSx5PXQoIi4uL2NhcnRlc2lhbi9zZWxlY3QiKS5wcmVwU2VsZWN0LHg9dCgi Li4vY2FydGVzaWFuL3NlbGVjdCIpLmNsZWFyU2VsZWN0LGI9dCgiLi4vY2FydGVzaWFuL3Nl bGVjdCIpLnNlbGVjdE9uQ2xpY2ssXz10KCIuL3pvb20iKSx3PXQoIi4vY29uc3RhbnRzIiks VD10KCIuLi8uLi9saWIvZ2VvX2xvY2F0aW9uX3V0aWxzIiksaz10KCIuLi8uLi9saWIvdG9w b2pzb25fdXRpbHMiKSxBPXQoInRvcG9qc29uLWNsaWVudCIpLmZlYXR1cmU7ZnVuY3Rpb24g TSh0KXt0aGlzLmlkPXQuaWQsdGhpcy5ncmFwaERpdj10LmdyYXBoRGl2LHRoaXMuY29udGFp bmVyPXQuY29udGFpbmVyLHRoaXMudG9wb2pzb25VUkw9dC50b3BvanNvblVSTCx0aGlzLmlz U3RhdGljPXQuc3RhdGljUGxvdCx0aGlzLnRvcG9qc29uTmFtZT1udWxsLHRoaXMudG9wb2pz b249bnVsbCx0aGlzLnByb2plY3Rpb249bnVsbCx0aGlzLnNjb3BlPW51bGwsdGhpcy52aWV3 SW5pdGlhbD1udWxsLHRoaXMuZml0U2NhbGU9bnVsbCx0aGlzLmJvdW5kcz1udWxsLHRoaXMu bWlkUHQ9bnVsbCx0aGlzLmhhc0Nob3JvcGxldGg9ITEsdGhpcy50cmFjZUhhc2g9e30sdGhp cy5sYXllcnM9e30sdGhpcy5iYXNlUGF0aHM9e30sdGhpcy5kYXRhUGF0aHM9e30sdGhpcy5k YXRhUG9pbnRzPXt9LHRoaXMuY2xpcERlZj1udWxsLHRoaXMuY2xpcFJlY3Q9bnVsbCx0aGlz LmJnUmVjdD1udWxsLHRoaXMubWFrZUZyYW1ld29yaygpfXZhciBTPU0ucHJvdG90eXBlO2Z1 bmN0aW9uIEUodCxlKXt2YXIgcj13LmNsaXBQYWQsbj10WzBdK3IsaT10WzFdLXIsYT1lWzBd K3Isbz1lWzFdLXI7bj4wJiZpPDAmJihpKz0zNjApO3ZhciBzPShpLW4pLzQ7cmV0dXJue3R5 cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOltbW24sYV0sW24sb10sW24rcyxvXSxbbisyKnMs b10sW24rMypzLG9dLFtpLG9dLFtpLGFdLFtpLXMsYV0sW2ktMipzLGFdLFtpLTMqcyxhXSxb bixhXV1dfX1lLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBNKHQpfSxTLnBsb3Q9 ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMsaT1lW3RoaXMuaWRdLGE9W10sbz0hMTtmb3Io dmFyIHMgaW4gdy5sYXllck5hbWVUb0FkamVjdGl2ZSlpZigiZnJhbWUiIT09cyYmaVsic2hv dyIrc10pe289ITA7YnJlYWt9Zm9yKHZhciBsPTA7bDx0Lmxlbmd0aDtsKyspaWYodFswXVsw XS50cmFjZS5sb2NhdGlvbm1vZGUpe289ITA7YnJlYWt9aWYobyl7dmFyIGM9ay5nZXRUb3Bv anNvbk5hbWUoaSk7bnVsbCE9PW4udG9wb2pzb24mJmM9PT1uLnRvcG9qc29uTmFtZXx8KG4u dG9wb2pzb25OYW1lPWMsdm9pZCAwPT09UGxvdGx5R2VvQXNzZXRzLnRvcG9qc29uW24udG9w b2pzb25OYW1lXSYmYS5wdXNoKG4uZmV0Y2hUb3BvanNvbigpKSl9YT1hLmNvbmNhdChULmZl dGNoVHJhY2VHZW9EYXRhKHQpKSxyLnB1c2gobmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsaSl7 UHJvbWlzZS5hbGwoYSkudGhlbigoZnVuY3Rpb24oKXtuLnRvcG9qc29uPVBsb3RseUdlb0Fz c2V0cy50b3BvanNvbltuLnRvcG9qc29uTmFtZV0sbi51cGRhdGUodCxlKSxyKCl9KSkuY2F0 Y2goaSl9KSkpfSxTLmZldGNoVG9wb2pzb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9ay5n ZXRUb3BvanNvblBhdGgodC50b3BvanNvblVSTCx0LnRvcG9qc29uTmFtZSk7cmV0dXJuIG5l dyBQcm9taXNlKChmdW5jdGlvbihyLGkpe24uanNvbihlLChmdW5jdGlvbihuLGEpe2lmKG4p cmV0dXJuIDQwND09PW4uc3RhdHVzP2kobmV3IEVycm9yKFsicGxvdGx5LmpzIGNvdWxkIG5v dCBmaW5kIHRvcG9qc29uIGZpbGUgYXQiLGUrIi4iLCJNYWtlIHN1cmUgdGhlICp0b3BvanNv blVSTCogcGxvdCBjb25maWcgb3B0aW9uIiwiaXMgc2V0IHByb3Blcmx5LiJdLmpvaW4oIiAi KSkpOmkobmV3IEVycm9yKFsidW5leHBlY3RlZCBlcnJvciB3aGlsZSBmZXRjaGluZyB0b3Bv anNvbiBmaWxlIGF0IixlXS5qb2luKCIgIikpKTtQbG90bHlHZW9Bc3NldHMudG9wb2pzb25b dC50b3BvanNvbk5hbWVdPWEscigpfSkpfSkpfSxTLnVwZGF0ZT1mdW5jdGlvbih0LGUpe3Zh ciByPWVbdGhpcy5pZF07dGhpcy5oYXNDaG9yb3BsZXRoPSExO2Zvcih2YXIgbj0wO248dC5s ZW5ndGg7bisrKXt2YXIgaT10W25dLGE9aVswXS50cmFjZTsiY2hvcm9wbGV0aCI9PT1hLnR5 cGUmJih0aGlzLmhhc0Nob3JvcGxldGg9ITApLCEwPT09YS52aXNpYmxlJiZhLl9sZW5ndGg+ MCYmYS5fbW9kdWxlLmNhbGNHZW9KU09OKGksZSl9aWYoIXRoaXMudXBkYXRlUHJvamVjdGlv bih0LGUpKXt0aGlzLnZpZXdJbml0aWFsJiZ0aGlzLnNjb3BlPT09ci5zY29wZXx8dGhpcy5z YXZlVmlld0luaXRpYWwociksdGhpcy5zY29wZT1yLnNjb3BlLHRoaXMudXBkYXRlQmFzZUxh eWVycyhlLHIpLHRoaXMudXBkYXRlRGltcyhlLHIpLHRoaXMudXBkYXRlRngoZSxyKSxkLmdl bmVyYWxVcGRhdGVQZXJUcmFjZU1vZHVsZSh0aGlzLmdyYXBoRGl2LHRoaXMsdCxyKTt2YXIg bz10aGlzLmxheWVycy5mcm9udHBsb3Quc2VsZWN0KCIuc2NhdHRlcmxheWVyIik7dGhpcy5k YXRhUG9pbnRzLnBvaW50PW8uc2VsZWN0QWxsKCIucG9pbnQiKSx0aGlzLmRhdGFQb2ludHMu dGV4dD1vLnNlbGVjdEFsbCgidGV4dCIpLHRoaXMuZGF0YVBhdGhzLmxpbmU9by5zZWxlY3RB bGwoIi5qcy1saW5lIik7dmFyIHM9dGhpcy5sYXllcnMuYmFja3Bsb3Quc2VsZWN0KCIuY2hv cm9wbGV0aGxheWVyIik7dGhpcy5kYXRhUGF0aHMuY2hvcm9wbGV0aD1zLnNlbGVjdEFsbCgi cGF0aCIpLHRoaXMucmVuZGVyKCl9fSxTLnVwZGF0ZVByb2plY3Rpb249ZnVuY3Rpb24odCxl KXt2YXIgcj10aGlzLmdyYXBoRGl2LG49ZVt0aGlzLmlkXSxsPWUuX3NpemUsdT1uLmRvbWFp bixmPW4ucHJvamVjdGlvbixoPW4ubG9uYXhpcyxwPW4ubGF0YXhpcyxkPWguX2F4LG09cC5f YXgsdj10aGlzLnByb2plY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9dC5wcm9qZWN0aW9uLHI9 ZS50eXBlLG49dy5wcm9qTmFtZXNbcl07bj0iZ2VvIitjLnRpdGxlQ2FzZShuKTtmb3IodmFy IGw9KGlbbl18fHNbbl0pKCksdT10Ll9pc1NhdGVsbGl0ZT8xODAqTWF0aC5hY29zKDEvZS5k aXN0YW5jZSkvTWF0aC5QSTp0Ll9pc0NsaXBwZWQ/dy5sb25heGlzU3BhbltyXS8yOm51bGws Zj1bImNlbnRlciIsInJvdGF0ZSIsInBhcmFsbGVscyIsImNsaXBFeHRlbnQiXSxoPWZ1bmN0 aW9uKHQpe3JldHVybiB0P2w6W119LHA9MDtwPGYubGVuZ3RoO3ArKyl7dmFyIGQ9ZltwXTsi ZnVuY3Rpb24iIT10eXBlb2YgbFtkXSYmKGxbZF09aCl9bC5pc0xvbkxhdE92ZXJFZGdlcz1m dW5jdGlvbih0KXtpZihudWxsPT09bCh0KSlyZXR1cm4hMDtpZih1KXt2YXIgZT1sLnJvdGF0 ZSgpO3JldHVybiBvKHQsWy1lWzBdLC1lWzFdXSk+dSpNYXRoLlBJLzE4MH1yZXR1cm4hMX0s bC5nZXRQYXRoPWZ1bmN0aW9uKCl7cmV0dXJuIGEoKS5wcm9qZWN0aW9uKGwpfSxsLmdldEJv dW5kcz1mdW5jdGlvbih0KXtyZXR1cm4gbC5nZXRQYXRoKCkuYm91bmRzKHQpfSxsLnByZWNp c2lvbih3LnByZWNpc2lvbiksdC5faXNTYXRlbGxpdGUmJmwudGlsdChlLnRpbHQpLmRpc3Rh bmNlKGUuZGlzdGFuY2UpO3UmJmwuY2xpcEFuZ2xlKHUtdy5jbGlwUGFkKTtyZXR1cm4gbH0o bikseT1bW2wubCtsLncqdS54WzBdLGwudCtsLmgqKDEtdS55WzFdKV0sW2wubCtsLncqdS54 WzFdLGwudCtsLmgqKDEtdS55WzBdKV1dLHg9bi5jZW50ZXJ8fHt9LGI9Zi5yb3RhdGlvbnx8 e30sXz1oLnJhbmdlfHxbXSxUPXAucmFuZ2V8fFtdO2lmKG4uZml0Ym91bmRzKXtkLl9sZW5n dGg9eVsxXVswXS15WzBdWzBdLG0uX2xlbmd0aD15WzFdWzFdLXlbMF1bMV0sZC5yYW5nZT1n KHIsZCksbS5yYW5nZT1nKHIsbSk7dmFyIGs9KGQucmFuZ2VbMF0rZC5yYW5nZVsxXSkvMixB PShtLnJhbmdlWzBdK20ucmFuZ2VbMV0pLzI7aWYobi5faXNTY29wZWQpeD17bG9uOmssbGF0 OkF9O2Vsc2UgaWYobi5faXNDbGlwcGVkKXt4PXtsb246ayxsYXQ6QX0sYj17bG9uOmssbGF0 OkEscm9sbDpiLnJvbGx9O3ZhciBNPWYudHlwZSxTPXcubG9uYXhpc1NwYW5bTV0vMnx8MTgw LEw9dy5sYXRheGlzU3BhbltNXS8yfHw5MDtfPVtrLVMsaytTXSxUPVtBLUwsQStMXX1lbHNl IHg9e2xvbjprLGxhdDpBfSxiPXtsb246ayxsYXQ6Yi5sYXQscm9sbDpiLnJvbGx9fXYuY2Vu dGVyKFt4Lmxvbi1iLmxvbix4LmxhdC1iLmxhdF0pLnJvdGF0ZShbLWIubG9uLC1iLmxhdCxi LnJvbGxdKS5wYXJhbGxlbHMoZi5wYXJhbGxlbHMpO3ZhciBDPUUoXyxUKTt2LmZpdEV4dGVu dCh5LEMpO3ZhciBQPXRoaXMuYm91bmRzPXYuZ2V0Qm91bmRzKEMpLEk9dGhpcy5maXRTY2Fs ZT12LnNjYWxlKCksTz12LnRyYW5zbGF0ZSgpO2lmKG4uZml0Ym91bmRzKXt2YXIgej12Lmdl dEJvdW5kcyhFKGQucmFuZ2UsbS5yYW5nZSkpLEQ9TWF0aC5taW4oKFBbMV1bMF0tUFswXVsw XSkvKHpbMV1bMF0telswXVswXSksKFBbMV1bMV0tUFswXVsxXSkvKHpbMV1bMV0telswXVsx XSkpO2lzRmluaXRlKEQpP3Yuc2NhbGUoRCpJKTpjLndhcm4oIlNvbWV0aGluZyB3ZW50IHdy b25nIGR1cmluZyIrdGhpcy5pZCsiZml0Ym91bmRzIGNvbXB1dGF0aW9ucy4iKX1lbHNlIHYu c2NhbGUoZi5zY2FsZSpJKTt2YXIgUj10aGlzLm1pZFB0PVsoUFswXVswXStQWzFdWzBdKS8y LChQWzBdWzFdK1BbMV1bMV0pLzJdO2lmKHYudHJhbnNsYXRlKFtPWzBdKyhSWzBdLU9bMF0p LE9bMV0rKFJbMV0tT1sxXSldKS5jbGlwRXh0ZW50KFApLG4uX2lzQWxiZXJzVXNhKXt2YXIg Rj12KFt4Lmxvbix4LmxhdF0pLEI9di50cmFuc2xhdGUoKTt2LnRyYW5zbGF0ZShbQlswXS0o RlswXS1CWzBdKSxCWzFdLShGWzFdLUJbMV0pXSl9fSxTLnVwZGF0ZUJhc2VMYXllcnM9ZnVu Y3Rpb24odCxlKXt2YXIgcj10aGlzLGk9ci50b3BvanNvbixhPXIubGF5ZXJzLG89ci5iYXNl UGF0aHM7ZnVuY3Rpb24gcyh0KXtyZXR1cm4ibG9uYXhpcyI9PT10fHwibGF0YXhpcyI9PT10 fWZ1bmN0aW9uIGwodCl7cmV0dXJuIEJvb2xlYW4ody5saW5lTGF5ZXJzW3RdKX1mdW5jdGlv biBjKHQpe3JldHVybiBCb29sZWFuKHcuZmlsbExheWVyc1t0XSl9dmFyIHU9KHRoaXMuaGFz Q2hvcm9wbGV0aD93LmxheWVyc0ZvckNob3JvcGxldGg6dy5sYXllcnMpLmZpbHRlcigoZnVu Y3Rpb24odCl7cmV0dXJuIGwodCl8fGModCk/ZVsic2hvdyIrdF06IXModCl8fGVbdF0uc2hv d2dyaWR9KSkscD1yLmZyYW1ld29yay5zZWxlY3RBbGwoIi5sYXllciIpLmRhdGEodSxTdHJp bmcpO3AuZXhpdCgpLmVhY2goKGZ1bmN0aW9uKHQpe2RlbGV0ZSBhW3RdLGRlbGV0ZSBvW3Rd LG4uc2VsZWN0KHRoaXMpLnJlbW92ZSgpfSkpLHAuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRy KCJjbGFzcyIsKGZ1bmN0aW9uKHQpe3JldHVybiJsYXllciAiK3R9KSkuZWFjaCgoZnVuY3Rp b24odCl7dmFyIGU9YVt0XT1uLnNlbGVjdCh0aGlzKTsiYmciPT09dD9yLmJnUmVjdD1lLmFw cGVuZCgicmVjdCIpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpOnModCk/b1t0XT1l LmFwcGVuZCgicGF0aCIpLnN0eWxlKCJmaWxsIiwibm9uZSIpOiJiYWNrcGxvdCI9PT10P2Uu YXBwZW5kKCJnIikuY2xhc3NlZCgiY2hvcm9wbGV0aGxheWVyIiwhMCk6ImZyb250cGxvdCI9 PT10P2UuYXBwZW5kKCJnIikuY2xhc3NlZCgic2NhdHRlcmxheWVyIiwhMCk6bCh0KT9vW3Rd PWUuYXBwZW5kKCJwYXRoIikuc3R5bGUoImZpbGwiLCJub25lIikuc3R5bGUoInN0cm9rZS1t aXRlcmxpbWl0IiwyKTpjKHQpJiYob1t0XT1lLmFwcGVuZCgicGF0aCIpLnN0eWxlKCJzdHJv a2UiLCJub25lIikpfSkpLHAub3JkZXIoKSxwLmVhY2goKGZ1bmN0aW9uKHIpe3ZhciBuPW9b cl0sYT13LmxheWVyTmFtZVRvQWRqZWN0aXZlW3JdOyJmcmFtZSI9PT1yP24uZGF0dW0ody5z cGhlcmVTVkcpOmwocil8fGMocik/bi5kYXR1bShBKGksaS5vYmplY3RzW3JdKSk6cyhyKSYm bi5kYXR1bShmdW5jdGlvbih0LGUscil7dmFyIG4saSxhLG89ZVt0XSxzPXcuc2NvcGVEZWZh dWx0c1tlLnNjb3BlXTsibG9uYXhpcyI9PT10PyhuPXMubG9uYXhpc1JhbmdlLGk9cy5sYXRh eGlzUmFuZ2UsYT1mdW5jdGlvbih0LGUpe3JldHVyblt0LGVdfSk6ImxhdGF4aXMiPT09dCYm KG49cy5sYXRheGlzUmFuZ2UsaT1zLmxvbmF4aXNSYW5nZSxhPWZ1bmN0aW9uKHQsZSl7cmV0 dXJuW2UsdF19KTt2YXIgbD17dHlwZToibGluZWFyIixyYW5nZTpbblswXSxuWzFdLTFlLTZd LHRpY2swOm8udGljazAsZHRpY2s6by5kdGlja307bS5zZXRDb252ZXJ0KGwscik7dmFyIGM9 bS5jYWxjVGlja3MobCk7ZS5pc1Njb3BlZHx8ImxvbmF4aXMiIT09dHx8Yy5wb3AoKTtmb3Io dmFyIHU9Yy5sZW5ndGgsZj1uZXcgQXJyYXkodSksaD0wO2g8dTtoKyspZm9yKHZhciBwPWNb aF0ueCxkPWZbaF09W10sZz1pWzBdO2c8aVsxXSsyLjU7Zys9Mi41KWQucHVzaChhKHAsZykp O3JldHVybnt0eXBlOiJNdWx0aUxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOmZ9fShyLGUsdCkp LmNhbGwoZi5zdHJva2UsZVtyXS5ncmlkY29sb3IpLmNhbGwoaC5kYXNoTGluZSxlW3JdLmdy aWRkYXNoLGVbcl0uZ3JpZHdpZHRoKSxsKHIpP24uY2FsbChmLnN0cm9rZSxlW2ErImNvbG9y Il0pLmNhbGwoaC5kYXNoTGluZSwiIixlW2ErIndpZHRoIl0pOmMocikmJm4uY2FsbChmLmZp bGwsZVthKyJjb2xvciJdKX0pKX0sUy51cGRhdGVEaW1zPWZ1bmN0aW9uKHQsZSl7dmFyIHI9 dGhpcy5ib3VuZHMsbj0oZS5mcmFtZXdpZHRofHwwKS8yLGk9clswXVswXS1uLGE9clswXVsx XS1uLG89clsxXVswXS1pK24scz1yWzFdWzFdLWErbjtoLnNldFJlY3QodGhpcy5jbGlwUmVj dCxpLGEsbyxzKSx0aGlzLmJnUmVjdC5jYWxsKGguc2V0UmVjdCxpLGEsbyxzKS5jYWxsKGYu ZmlsbCxlLmJnY29sb3IpLHRoaXMueGF4aXMuX29mZnNldD1pLHRoaXMueGF4aXMuX2xlbmd0 aD1vLHRoaXMueWF4aXMuX29mZnNldD1hLHRoaXMueWF4aXMuX2xlbmd0aD1zfSxTLnVwZGF0 ZUZ4PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcyxpPXIuZ3JhcGhEaXYsYT1yLmJnUmVjdCxv PXQuZHJhZ21vZGUscz10LmNsaWNrbW9kZTtpZighci5pc1N0YXRpYyl7dmFyIHU7InNlbGVj dCI9PT1vP3U9ZnVuY3Rpb24odCxlKXsodC5yYW5nZT17fSlbci5pZF09W2goW2UueG1pbixl LnltaW5dKSxoKFtlLnhtYXgsZS55bWF4XSldfToibGFzc28iPT09byYmKHU9ZnVuY3Rpb24o dCxlLG4peyh0Lmxhc3NvUG9pbnRzPXt9KVtyLmlkXT1uLmZpbHRlcmVkLm1hcChoKX0pO3Zh ciBmPXtlbGVtZW50OnIuYmdSZWN0Lm5vZGUoKSxnZDppLHBsb3RpbmZvOntpZDpyLmlkLHhh eGlzOnIueGF4aXMseWF4aXM6ci55YXhpcyxmaWxsUmFuZ2VJdGVtczp1fSx4YXhlczpbci54 YXhpc10seWF4ZXM6W3IueWF4aXNdLHN1YnBsb3Q6ci5pZCxjbGlja0ZuOmZ1bmN0aW9uKHQp ezI9PT10JiZ4KGkpfX07InBhbiI9PT1vPyhhLm5vZGUoKS5vbm1vdXNlZG93bj1udWxsLGEu Y2FsbChfKHIsZSkpLGEub24oImRibGNsaWNrLnpvb20iLChmdW5jdGlvbigpe3ZhciB0PXIu dmlld0luaXRpYWwsZT17fTtmb3IodmFyIG4gaW4gdCllW3IuaWQrIi4iK25dPXRbbl07bC5j YWxsKCJfZ3VpUmVsYXlvdXQiLGksZSksaS5lbWl0KCJwbG90bHlfZG91YmxlY2xpY2siLG51 bGwpfSkpLGkuX2NvbnRleHQuX3Njcm9sbFpvb20uZ2VvfHxhLm9uKCJ3aGVlbC56b29tIixu dWxsKSk6InNlbGVjdCIhPT1vJiYibGFzc28iIT09b3x8KGEub24oIi56b29tIixudWxsKSxm LnByZXBGbj1mdW5jdGlvbih0LGUscil7eSh0LGUscixmLG8pfSx2LmluaXQoZikpLGEub24o Im1vdXNlbW92ZSIsKGZ1bmN0aW9uKCl7dmFyIHQ9ci5wcm9qZWN0aW9uLmludmVydChjLmdl dFBvc2l0aW9uRnJvbUQzRXZlbnQoKSk7aWYoIXQpcmV0dXJuIHYudW5ob3ZlcihpLG4uZXZl bnQpO3IueGF4aXMucDJjPWZ1bmN0aW9uKCl7cmV0dXJuIHRbMF19LHIueWF4aXMucDJjPWZ1 bmN0aW9uKCl7cmV0dXJuIHRbMV19LHAuaG92ZXIoaSxuLmV2ZW50LHIuaWQpfSkpLGEub24o Im1vdXNlb3V0IiwoZnVuY3Rpb24oKXtpLl9kcmFnZ2luZ3x8di51bmhvdmVyKGksbi5ldmVu dCl9KSksYS5vbigiY2xpY2siLChmdW5jdGlvbigpeyJzZWxlY3QiIT09byYmImxhc3NvIiE9 PW8mJihzLmluZGV4T2YoInNlbGVjdCIpPi0xJiZiKG4uZXZlbnQsaSxbci54YXhpc10sW3Iu eWF4aXNdLHIuaWQsZikscy5pbmRleE9mKCJldmVudCIpPi0xJiZwLmNsaWNrKGksbi5ldmVu dCkpfSkpfWZ1bmN0aW9uIGgodCl7cmV0dXJuIHIucHJvamVjdGlvbi5pbnZlcnQoW3RbMF0r ci54YXhpcy5fb2Zmc2V0LHRbMV0rci55YXhpcy5fb2Zmc2V0XSl9fSxTLm1ha2VGcmFtZXdv cms9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC5ncmFwaERpdixyPWUuX2Z1bGxMYXlvdXQs aT0iY2xpcCIrci5fdWlkK3QuaWQ7dC5jbGlwRGVmPXIuX2NsaXBzLmFwcGVuZCgiY2xpcFBh dGgiKS5hdHRyKCJpZCIsaSksdC5jbGlwUmVjdD10LmNsaXBEZWYuYXBwZW5kKCJyZWN0Iiks dC5mcmFtZXdvcms9bi5zZWxlY3QodC5jb250YWluZXIpLmFwcGVuZCgiZyIpLmF0dHIoImNs YXNzIiwiZ2VvICIrdC5pZCkuY2FsbChoLnNldENsaXBVcmwsaSxlKSx0LnByb2plY3Q9ZnVu Y3Rpb24oZSl7dmFyIHI9dC5wcm9qZWN0aW9uKGUpO3JldHVybiByP1tyWzBdLXQueGF4aXMu X29mZnNldCxyWzFdLXQueWF4aXMuX29mZnNldF06W251bGwsbnVsbF19LHQueGF4aXM9e19p ZDoieCIsYzJwOmZ1bmN0aW9uKGUpe3JldHVybiB0LnByb2plY3QoZSlbMF19fSx0LnlheGlz PXtfaWQ6InkiLGMycDpmdW5jdGlvbihlKXtyZXR1cm4gdC5wcm9qZWN0KGUpWzFdfX0sdC5t b2NrQXhpcz17dHlwZToibGluZWFyIixzaG93ZXhwb25lbnQ6ImFsbCIsZXhwb25lbnRmb3Jt YXQ6IkIifSxtLnNldENvbnZlcnQodC5tb2NrQXhpcyxyKX0sUy5zYXZlVmlld0luaXRpYWw9 ZnVuY3Rpb24odCl7dmFyIGUscj10LmNlbnRlcnx8e30sbj10LnByb2plY3Rpb24saT1uLnJv dGF0aW9ufHx7fTt0aGlzLnZpZXdJbml0aWFsPXtmaXRib3VuZHM6dC5maXRib3VuZHMsInBy b2plY3Rpb24uc2NhbGUiOm4uc2NhbGV9LGU9dC5faXNTY29wZWQ/eyJjZW50ZXIubG9uIjpy LmxvbiwiY2VudGVyLmxhdCI6ci5sYXR9OnQuX2lzQ2xpcHBlZD97InByb2plY3Rpb24ucm90 YXRpb24ubG9uIjppLmxvbiwicHJvamVjdGlvbi5yb3RhdGlvbi5sYXQiOmkubGF0fTp7ImNl bnRlci5sb24iOnIubG9uLCJjZW50ZXIubGF0IjpyLmxhdCwicHJvamVjdGlvbi5yb3RhdGlv bi5sb24iOmkubG9ufSxjLmV4dGVuZEZsYXQodGhpcy52aWV3SW5pdGlhbCxlKX0sUy5yZW5k ZXI9ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMucHJvamVjdGlvbixyPWUuZ2V0UGF0aCgpO2Z1 bmN0aW9uIG4odCl7dmFyIHI9ZSh0LmxvbmxhdCk7cmV0dXJuIHI/dShyWzBdLHJbMV0pOm51 bGx9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gZS5pc0xvbkxhdE92ZXJFZGdlcyh0LmxvbmxhdCk/ Im5vbmUiOm51bGx9Zm9yKHQgaW4gdGhpcy5iYXNlUGF0aHMpdGhpcy5iYXNlUGF0aHNbdF0u YXR0cigiZCIscik7Zm9yKHQgaW4gdGhpcy5kYXRhUGF0aHMpdGhpcy5kYXRhUGF0aHNbdF0u YXR0cigiZCIsKGZ1bmN0aW9uKHQpe3JldHVybiByKHQuZ2VvanNvbil9KSk7Zm9yKHQgaW4g dGhpcy5kYXRhUG9pbnRzKXRoaXMuZGF0YVBvaW50c1t0XS5hdHRyKCJkaXNwbGF5IixpKS5h dHRyKCJ0cmFuc2Zvcm0iLG4pfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjozNjYsIi4u Ly4uL2NvbXBvbmVudHMvZHJhZ2VsZW1lbnQiOjM4NSwiLi4vLi4vY29tcG9uZW50cy9kcmF3 aW5nIjozODgsIi4uLy4uL2NvbXBvbmVudHMvZngiOjQwNiwiLi4vLi4vbGliIjo1MDMsIi4u Ly4uL2xpYi9nZW9fbG9jYXRpb25fdXRpbHMiOjQ5NiwiLi4vLi4vbGliL3RvcG9qc29uX3V0 aWxzIjo1MzIsIi4uLy4uL3JlZ2lzdHJ5Ijo2MzgsIi4uL2NhcnRlc2lhbi9hdXRvcmFuZ2Ui OjU1MywiLi4vY2FydGVzaWFuL2F4ZXMiOjU1NCwiLi4vY2FydGVzaWFuL3NlbGVjdCI6NTc1 LCIuLi9wbG90cyI6NjE5LCIuL2NvbnN0YW50cyI6NTg3LCIuL3pvb20iOjU5MiwiQHBsb3Rs eS9kMyI6NTgsImQzLWdlbyI6MTE0LCJkMy1nZW8tcHJvamVjdGlvbiI6MTEzLCJ0b3BvanNv bi1jbGllbnQiOjMxNX1dLDU4OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCIuLi8uLi9wbG90cy9nZXRfZGF0YSIpLmdldFN1YnBsb3RDYWxjRGF0YSxpPXQoIi4u Ly4uL2xpYiIpLmNvdW50ZXJSZWdleCxhPXQoIi4vZ2VvIiksbz0iZ2VvIixzPWkobyksbD17 fTtsLmdlbz17dmFsVHlwZToic3VicGxvdGlkIixkZmx0Om8sZWRpdFR5cGU6ImNhbGMifSxl LmV4cG9ydHM9e2F0dHI6byxuYW1lOm8saWRSb290Om8saWRSZWdleDpzLGF0dHJSZWdleDpz LGF0dHJpYnV0ZXM6bCxsYXlvdXRBdHRyaWJ1dGVzOnQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMi KSxzdXBwbHlMYXlvdXREZWZhdWx0czp0KCIuL2xheW91dF9kZWZhdWx0cyIpLHBsb3Q6ZnVu Y3Rpb24odCl7Zm9yKHZhciBlPXQuX2Z1bGxMYXlvdXQscj10LmNhbGNkYXRhLGk9ZS5fc3Vi cGxvdHMuZ2VvLHM9MDtzPGkubGVuZ3RoO3MrKyl7dmFyIGw9aVtzXSxjPW4ocixvLGwpLHU9 ZVtsXS5fc3VicGxvdDt1fHwodT1hKHtpZDpsLGdyYXBoRGl2OnQsY29udGFpbmVyOmUuX2dl b2xheWVyLm5vZGUoKSx0b3BvanNvblVSTDp0Ll9jb250ZXh0LnRvcG9qc29uVVJMLHN0YXRp Y1Bsb3Q6dC5fY29udGV4dC5zdGF0aWNQbG90fSksZVtsXS5fc3VicGxvdD11KSx1LnBsb3Qo YyxlLHQuX3Byb21pc2VzKX19LHVwZGF0ZUZ4OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Ll9m dWxsTGF5b3V0LHI9ZS5fc3VicGxvdHMuZ2VvLG49MDtuPHIubGVuZ3RoO24rKyl7dmFyIGk9 ZVtyW25dXTtpLl9zdWJwbG90LnVwZGF0ZUZ4KGUsaSl9fSxjbGVhbjpmdW5jdGlvbih0LGUs cixuKXtmb3IodmFyIGk9bi5fc3VicGxvdHMuZ2VvfHxbXSxhPTA7YTxpLmxlbmd0aDthKysp e3ZhciBvPWlbYV0scz1uW29dLl9zdWJwbG90OyFlW29dJiZzJiYocy5mcmFtZXdvcmsucmVt b3ZlKCkscy5jbGlwRGVmLnJlbW92ZSgpKX19fX0seyIuLi8uLi9saWIiOjUwMywiLi4vLi4v cGxvdHMvZ2V0X2RhdGEiOjU5MywiLi9nZW8iOjU4OCwiLi9sYXlvdXRfYXR0cmlidXRlcyI6 NTkwLCIuL2xheW91dF9kZWZhdWx0cyI6NTkxfV0sNTkwOltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyIp LGk9dCgiLi4vZG9tYWluIikuYXR0cmlidXRlcyxhPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJh d2luZy9hdHRyaWJ1dGVzIikuZGFzaCxvPXQoIi4vY29uc3RhbnRzIikscz10KCIuLi8uLi9w bG90X2FwaS9lZGl0X3R5cGVzIikub3ZlcnJpZGVBbGwsbD10KCIuLi8uLi9saWIvc29ydF9v YmplY3Rfa2V5cyIpLGM9e3JhbmdlOnt2YWxUeXBlOiJpbmZvX2FycmF5IixpdGVtczpbe3Zh bFR5cGU6Im51bWJlciJ9LHt2YWxUeXBlOiJudW1iZXIifV19LHNob3dncmlkOnt2YWxUeXBl OiJib29sZWFuIixkZmx0OiExfSx0aWNrMDp7dmFsVHlwZToibnVtYmVyIixkZmx0OjB9LGR0 aWNrOnt2YWxUeXBlOiJudW1iZXIifSxncmlkY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0 Om4ubGlnaHRMaW5lfSxncmlkd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDox fSxncmlkZGFzaDphfTsoZS5leHBvcnRzPXMoe2RvbWFpbjppKHtuYW1lOiJnZW8ifSx7fSks Zml0Ym91bmRzOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyExLCJsb2NhdGlvbnMi LCJnZW9qc29uIl0sZGZsdDohMSxlZGl0VHlwZToicGxvdCJ9LHJlc29sdXRpb246e3ZhbFR5 cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbMTEwLDUwXSxkZmx0OjExMCxjb2VyY2VOdW1iZXI6 ITB9LHNjb3BlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6bChvLnNjb3BlRGVmYXVs dHMpLGRmbHQ6IndvcmxkIn0scHJvamVjdGlvbjp7dHlwZTp7dmFsVHlwZToiZW51bWVyYXRl ZCIsdmFsdWVzOmwoby5wcm9qTmFtZXMpfSxyb3RhdGlvbjp7bG9uOnt2YWxUeXBlOiJudW1i ZXIifSxsYXQ6e3ZhbFR5cGU6Im51bWJlciJ9LHJvbGw6e3ZhbFR5cGU6Im51bWJlciJ9fSx0 aWx0Ont2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MH0sZGlzdGFuY2U6e3ZhbFR5cGU6Im51bWJl ciIsbWluOjEuMDAxLGRmbHQ6Mn0scGFyYWxsZWxzOnt2YWxUeXBlOiJpbmZvX2FycmF5Iixp dGVtczpbe3ZhbFR5cGU6Im51bWJlciJ9LHt2YWxUeXBlOiJudW1iZXIifV19LHNjYWxlOnt2 YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MX19LGNlbnRlcjp7bG9uOnt2YWxUeXBlOiJu dW1iZXIifSxsYXQ6e3ZhbFR5cGU6Im51bWJlciJ9fSx2aXNpYmxlOnt2YWxUeXBlOiJib29s ZWFuIixkZmx0OiEwfSxzaG93Y29hc3RsaW5lczp7dmFsVHlwZToiYm9vbGVhbiJ9LGNvYXN0 bGluZWNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpuLmRlZmF1bHRMaW5lfSxjb2FzdGxp bmV3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjF9LHNob3dsYW5kOnt2YWxU eXBlOiJib29sZWFuIixkZmx0OiExfSxsYW5kY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0 Om8ubGFuZENvbG9yfSxzaG93b2NlYW46e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LG9j ZWFuY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0Om8ud2F0ZXJDb2xvcn0sc2hvd2xha2Vz Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxsYWtlY29sb3I6e3ZhbFR5cGU6ImNvbG9y IixkZmx0Om8ud2F0ZXJDb2xvcn0sc2hvd3JpdmVyczp7dmFsVHlwZToiYm9vbGVhbiIsZGZs dDohMX0scml2ZXJjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6by53YXRlckNvbG9yfSxy aXZlcndpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MX0sc2hvd2NvdW50cmll czp7dmFsVHlwZToiYm9vbGVhbiJ9LGNvdW50cnljb2xvcjp7dmFsVHlwZToiY29sb3IiLGRm bHQ6bi5kZWZhdWx0TGluZX0sY291bnRyeXdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjow LGRmbHQ6MX0sc2hvd3N1YnVuaXRzOnt2YWxUeXBlOiJib29sZWFuIn0sc3VidW5pdGNvbG9y Ont2YWxUeXBlOiJjb2xvciIsZGZsdDpuLmRlZmF1bHRMaW5lfSxzdWJ1bml0d2lkdGg6e3Zh bFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoxfSxzaG93ZnJhbWU6e3ZhbFR5cGU6ImJvb2xl YW4ifSxmcmFtZWNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpuLmRlZmF1bHRMaW5lfSxm cmFtZXdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MX0sYmdjb2xvcjp7dmFs VHlwZToiY29sb3IiLGRmbHQ6bi5iYWNrZ3JvdW5kfSxsb25heGlzOmMsbGF0YXhpczpjfSwi cGxvdCIsImZyb20tcm9vdCIpKS51aXJldmlzaW9uPXt2YWxUeXBlOiJhbnkiLGVkaXRUeXBl OiJub25lIn19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIjozNjUsIi4u Ly4uL2NvbXBvbmVudHMvZHJhd2luZy9hdHRyaWJ1dGVzIjozODcsIi4uLy4uL2xpYi9zb3J0 X29iamVjdF9rZXlzIjo1MjYsIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiOjUzNiwiLi4v ZG9tYWluIjo1ODQsIi4vY29uc3RhbnRzIjo1ODd9XSw1OTE6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuLi9zdWJwbG90X2RlZmF1 bHRzIiksYT10KCIuLi9nZXRfZGF0YSIpLmdldFN1YnBsb3REYXRhLG89dCgiLi9jb25zdGFu dHMiKSxzPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxsPW8uYXhlc05hbWVzO2Z1bmN0aW9u IGModCxlLHIsaSl7dmFyIHM9YShpLmZ1bGxEYXRhLCJnZW8iLGkuaWQpLm1hcCgoZnVuY3Rp b24odCl7cmV0dXJuIHQuX2V4cGFuZGVkSW5kZXh9KSksYz1yKCJyZXNvbHV0aW9uIiksdT1y KCJzY29wZSIpLGY9by5zY29wZURlZmF1bHRzW3VdLGg9cigicHJvamVjdGlvbi50eXBlIixm LnByb2pUeXBlKSxwPWUuX2lzQWxiZXJzVXNhPSJhbGJlcnMgdXNhIj09PWg7cCYmKHU9ZS5z Y29wZT0idXNhIik7dmFyIGQ9ZS5faXNTY29wZWQ9IndvcmxkIiE9PXUsbT1lLl9pc1NhdGVs bGl0ZT0ic2F0ZWxsaXRlIj09PWgsZz1lLl9pc0NvbmljPS0xIT09aC5pbmRleE9mKCJjb25p YyIpfHwiYWxiZXJzIj09PWgsdj1lLl9pc0NsaXBwZWQ9ISFvLmxvbmF4aXNTcGFuW2hdO2lm KCExPT09dC52aXNpYmxlKXt2YXIgeT1uLmV4dGVuZERlZXAoe30sZS5fdGVtcGxhdGUpO3ku c2hvd2NvYXN0bGluZXM9ITEseS5zaG93Y291bnRyaWVzPSExLHkuc2hvd2ZyYW1lPSExLHku c2hvd2xha2VzPSExLHkuc2hvd2xhbmQ9ITEseS5zaG93b2NlYW49ITEseS5zaG93cml2ZXJz PSExLHkuc2hvd3N1YnVuaXRzPSExLHkubG9uYXhpcyYmKHkubG9uYXhpcy5zaG93Z3JpZD0h MSkseS5sYXRheGlzJiYoeS5sYXRheGlzLnNob3dncmlkPSExKSxlLl90ZW1wbGF0ZT15fWZv cih2YXIgeD1yKCJ2aXNpYmxlIiksYj0wO2I8bC5sZW5ndGg7YisrKXt2YXIgXyx3PWxbYl0s VD1bMzAsMTBdW2JdO2lmKGQpXz1mW3crIlJhbmdlIl07ZWxzZXt2YXIgaz1vW3crIlNwYW4i XSxBPShrW2hdfHxrWyIqIl0pLzIsTT1yKCJwcm9qZWN0aW9uLnJvdGF0aW9uLiIrdy5zdWJz dHIoMCwzKSxmLnByb2pSb3RhdGVbYl0pO189W00tQSxNK0FdfXZhciBTPXIodysiLnJhbmdl IixfKTtyKHcrIi50aWNrMCIpLHIodysiLmR0aWNrIixUKSxyKHcrIi5zaG93Z3JpZCIsISF4 JiZ2b2lkIDApJiYocih3KyIuZ3JpZGNvbG9yIikscih3KyIuZ3JpZHdpZHRoIikscih3KyIu Z3JpZGRhc2giKSksZVt3XS5fYXg9e3R5cGU6ImxpbmVhciIsX2lkOncuc2xpY2UoMCwzKSxf dHJhY2VJbmRpY2VzOnMsc2V0U2NhbGU6bi5pZGVudGl0eSxjMmw6bi5pZGVudGl0eSxyMmw6 bi5pZGVudGl0eSxhdXRvcmFuZ2U6ITAscmFuZ2U6Uy5zbGljZSgpLF9tOjEsX2lucHV0Ont9 fX12YXIgRT1lLmxvbmF4aXMucmFuZ2UsTD1lLmxhdGF4aXMucmFuZ2UsQz1FWzBdLFA9RVsx XTtDPjAmJlA8MCYmKFArPTM2MCk7dmFyIEksTyx6LEQ9KEMrUCkvMjtpZighcCl7dmFyIFI9 ZD9mLnByb2pSb3RhdGU6W0QsMCwwXTtJPXIoInByb2plY3Rpb24ucm90YXRpb24ubG9uIixS WzBdKSxyKCJwcm9qZWN0aW9uLnJvdGF0aW9uLmxhdCIsUlsxXSkscigicHJvamVjdGlvbi5y b3RhdGlvbi5yb2xsIixSWzJdKSxyKCJzaG93Y29hc3RsaW5lcyIsIWQmJngpJiYocigiY29h c3RsaW5lY29sb3IiKSxyKCJjb2FzdGxpbmV3aWR0aCIpKSxyKCJzaG93b2NlYW4iLCEheCYm dm9pZCAwKSYmcigib2NlYW5jb2xvciIpfShwPyhPPS05Ni42LHo9MzguNyk6KE89ZD9EOkks ej0oTFswXStMWzFdKS8yKSxyKCJjZW50ZXIubG9uIixPKSxyKCJjZW50ZXIubGF0Iix6KSxt JiYocigicHJvamVjdGlvbi50aWx0IikscigicHJvamVjdGlvbi5kaXN0YW5jZSIpKSxnKSYm cigicHJvamVjdGlvbi5wYXJhbGxlbHMiLGYucHJvalBhcmFsbGVsc3x8WzAsNjBdKTtyKCJw cm9qZWN0aW9uLnNjYWxlIikscigic2hvd2xhbmQiLCEheCYmdm9pZCAwKSYmcigibGFuZGNv bG9yIikscigic2hvd2xha2VzIiwhIXgmJnZvaWQgMCkmJnIoImxha2Vjb2xvciIpLHIoInNo b3dyaXZlcnMiLCEheCYmdm9pZCAwKSYmKHIoInJpdmVyY29sb3IiKSxyKCJyaXZlcndpZHRo IikpLHIoInNob3djb3VudHJpZXMiLGQmJiJ1c2EiIT09dSYmeCkmJihyKCJjb3VudHJ5Y29s b3IiKSxyKCJjb3VudHJ5d2lkdGgiKSksKCJ1c2EiPT09dXx8Im5vcnRoIGFtZXJpY2EiPT09 dSYmNTA9PT1jKSYmKHIoInNob3dzdWJ1bml0cyIseCkscigic3VidW5pdGNvbG9yIikscigi c3VidW5pdHdpZHRoIikpLGR8fHIoInNob3dmcmFtZSIseCkmJihyKCJmcmFtZWNvbG9yIiks cigiZnJhbWV3aWR0aCIpKSxyKCJiZ2NvbG9yIikscigiZml0Ym91bmRzIikmJihkZWxldGUg ZS5wcm9qZWN0aW9uLnNjYWxlLGQ/KGRlbGV0ZSBlLmNlbnRlci5sb24sZGVsZXRlIGUuY2Vu dGVyLmxhdCk6dj8oZGVsZXRlIGUuY2VudGVyLmxvbixkZWxldGUgZS5jZW50ZXIubGF0LGRl bGV0ZSBlLnByb2plY3Rpb24ucm90YXRpb24ubG9uLGRlbGV0ZSBlLnByb2plY3Rpb24ucm90 YXRpb24ubGF0LGRlbGV0ZSBlLmxvbmF4aXMucmFuZ2UsZGVsZXRlIGUubGF0YXhpcy5yYW5n ZSk6KGRlbGV0ZSBlLmNlbnRlci5sb24sZGVsZXRlIGUuY2VudGVyLmxhdCxkZWxldGUgZS5w cm9qZWN0aW9uLnJvdGF0aW9uLmxvbikpfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7aSh0 LGUscix7dHlwZToiZ2VvIixhdHRyaWJ1dGVzOnMsaGFuZGxlRGVmYXVsdHM6YyxmdWxsRGF0 YTpyLHBhcnRpdGlvbjoieSJ9KX19LHsiLi4vLi4vbGliIjo1MDMsIi4uL2dldF9kYXRhIjo1 OTMsIi4uL3N1YnBsb3RfZGVmYXVsdHMiOjYzMiwiLi9jb25zdGFudHMiOjU4NywiLi9sYXlv dXRfYXR0cmlidXRlcyI6NTkwfV0sNTkyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoIkBwbG90bHkvZDMiKSxpPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vcmVn aXN0cnkiKSxvPU1hdGguUEkvMTgwLHM9MTgwL01hdGguUEksbD17Y3Vyc29yOiJwb2ludGVy In0sYz17Y3Vyc29yOiJhdXRvIn07ZnVuY3Rpb24gdSh0LGUpe3JldHVybiBuLmJlaGF2aW9y Lnpvb20oKS50cmFuc2xhdGUoZS50cmFuc2xhdGUoKSkuc2NhbGUoZS5zY2FsZSgpKX1mdW5j dGlvbiBmKHQsZSxyKXt2YXIgbj10LmlkLG89dC5ncmFwaERpdixzPW8ubGF5b3V0LGw9c1tu XSxjPW8uX2Z1bGxMYXlvdXQsdT1jW25dLGY9e30saD17fTtmdW5jdGlvbiBwKHQsZSl7Zltu KyIuIit0XT1pLm5lc3RlZFByb3BlcnR5KGwsdCkuZ2V0KCksYS5jYWxsKCJfc3RvcmVEaXJl Y3RHVUlFZGl0IixzLGMuX3ByZUdVSSxmKTt2YXIgcj1pLm5lc3RlZFByb3BlcnR5KHUsdCk7 ci5nZXQoKSE9PWUmJihyLnNldChlKSxpLm5lc3RlZFByb3BlcnR5KGwsdCkuc2V0KGUpLGhb bisiLiIrdF09ZSl9cihwKSxwKCJwcm9qZWN0aW9uLnNjYWxlIixlLnNjYWxlKCkvdC5maXRT Y2FsZSkscCgiZml0Ym91bmRzIiwhMSksby5lbWl0KCJwbG90bHlfcmVsYXlvdXQiLGgpfWZ1 bmN0aW9uIGgodCxlKXt2YXIgcj11KDAsZSk7ZnVuY3Rpb24gaShyKXt2YXIgbj1lLmludmVy dCh0Lm1pZFB0KTtyKCJjZW50ZXIubG9uIixuWzBdKSxyKCJjZW50ZXIubGF0IixuWzFdKX1y ZXR1cm4gci5vbigiem9vbXN0YXJ0IiwoZnVuY3Rpb24oKXtuLnNlbGVjdCh0aGlzKS5zdHls ZShsKX0pKS5vbigiem9vbSIsKGZ1bmN0aW9uKCl7ZS5zY2FsZShuLmV2ZW50LnNjYWxlKS50 cmFuc2xhdGUobi5ldmVudC50cmFuc2xhdGUpLHQucmVuZGVyKCk7dmFyIHI9ZS5pbnZlcnQo dC5taWRQdCk7dC5ncmFwaERpdi5lbWl0KCJwbG90bHlfcmVsYXlvdXRpbmciLHsiZ2VvLnBy b2plY3Rpb24uc2NhbGUiOmUuc2NhbGUoKS90LmZpdFNjYWxlLCJnZW8uY2VudGVyLmxvbiI6 clswXSwiZ2VvLmNlbnRlci5sYXQiOnJbMV19KX0pKS5vbigiem9vbWVuZCIsKGZ1bmN0aW9u KCl7bi5zZWxlY3QodGhpcykuc3R5bGUoYyksZih0LGUsaSl9KSkscn1mdW5jdGlvbiBwKHQs ZSl7dmFyIHIsaSxhLG8scyxoLHAsZCxtLGc9dSgwLGUpO2Z1bmN0aW9uIHYodCl7cmV0dXJu IGUuaW52ZXJ0KHQpfWZ1bmN0aW9uIHkocil7dmFyIG49ZS5yb3RhdGUoKSxpPWUuaW52ZXJ0 KHQubWlkUHQpO3IoInByb2plY3Rpb24ucm90YXRpb24ubG9uIiwtblswXSkscigiY2VudGVy LmxvbiIsaVswXSkscigiY2VudGVyLmxhdCIsaVsxXSl9cmV0dXJuIGcub24oInpvb21zdGFy dCIsKGZ1bmN0aW9uKCl7bi5zZWxlY3QodGhpcykuc3R5bGUobCkscj1uLm1vdXNlKHRoaXMp LGk9ZS5yb3RhdGUoKSxhPWUudHJhbnNsYXRlKCksbz1pLHM9dihyKX0pKS5vbigiem9vbSIs KGZ1bmN0aW9uKCl7aWYoaD1uLm1vdXNlKHRoaXMpLGZ1bmN0aW9uKHQpe3ZhciByPXYodCk7 aWYoIXIpcmV0dXJuITA7dmFyIG49ZShyKTtyZXR1cm4gTWF0aC5hYnMoblswXS10WzBdKT4y fHxNYXRoLmFicyhuWzFdLXRbMV0pPjJ9KHIpKXJldHVybiBnLnNjYWxlKGUuc2NhbGUoKSks dm9pZCBnLnRyYW5zbGF0ZShlLnRyYW5zbGF0ZSgpKTtlLnNjYWxlKG4uZXZlbnQuc2NhbGUp LGUudHJhbnNsYXRlKFthWzBdLG4uZXZlbnQudHJhbnNsYXRlWzFdXSkscz92KGgpJiYoZD12 KGgpLHA9W29bMF0rKGRbMF0tc1swXSksaVsxXSxpWzJdXSxlLnJvdGF0ZShwKSxvPXApOnM9 dihyPWgpLG09ITAsdC5yZW5kZXIoKTt2YXIgbD1lLnJvdGF0ZSgpLGM9ZS5pbnZlcnQodC5t aWRQdCk7dC5ncmFwaERpdi5lbWl0KCJwbG90bHlfcmVsYXlvdXRpbmciLHsiZ2VvLnByb2pl Y3Rpb24uc2NhbGUiOmUuc2NhbGUoKS90LmZpdFNjYWxlLCJnZW8uY2VudGVyLmxvbiI6Y1sw XSwiZ2VvLmNlbnRlci5sYXQiOmNbMV0sImdlby5wcm9qZWN0aW9uLnJvdGF0aW9uLmxvbiI6 LWxbMF19KX0pKS5vbigiem9vbWVuZCIsKGZ1bmN0aW9uKCl7bi5zZWxlY3QodGhpcykuc3R5 bGUoYyksbSYmZih0LGUseSl9KSksZ31mdW5jdGlvbiBkKHQsZSl7dmFyIHIsaT17cjplLnJv dGF0ZSgpLGs6ZS5zY2FsZSgpfSxhPXUoMCxlKSxvPWZ1bmN0aW9uKHQpe3ZhciBlPTAscj1h cmd1bWVudHMubGVuZ3RoLGk9W107Zm9yKDsrK2U8cjspaS5wdXNoKGFyZ3VtZW50c1tlXSk7 dmFyIGE9bi5kaXNwYXRjaC5hcHBseShudWxsLGkpO3JldHVybiBhLm9mPWZ1bmN0aW9uKGUs cil7cmV0dXJuIGZ1bmN0aW9uKGkpe3ZhciBvO3RyeXtvPWkuc291cmNlRXZlbnQ9bi5ldmVu dCxpLnRhcmdldD10LG4uZXZlbnQ9aSxhW2kudHlwZV0uYXBwbHkoZSxyKX1maW5hbGx5e24u ZXZlbnQ9b319fSxhfShhLCJ6b29tc3RhcnQiLCJ6b29tIiwiem9vbWVuZCIpLHM9MCxoPWEu b247ZnVuY3Rpb24gcCh0KXtzKyt8fHQoe3R5cGU6Inpvb21zdGFydCJ9KX1mdW5jdGlvbiBk KHQpe3Qoe3R5cGU6Inpvb20ifSl9ZnVuY3Rpb24gYih0KXstLXN8fHQoe3R5cGU6Inpvb21l bmQifSl9ZnVuY3Rpb24gXyh0KXt2YXIgcj1lLnJvdGF0ZSgpO3QoInByb2plY3Rpb24ucm90 YXRpb24ubG9uIiwtclswXSksdCgicHJvamVjdGlvbi5yb3RhdGlvbi5sYXQiLC1yWzFdKX1y ZXR1cm4gYS5vbigiem9vbXN0YXJ0IiwoZnVuY3Rpb24oKXtuLnNlbGVjdCh0aGlzKS5zdHls ZShsKTt2YXIgdD1uLm1vdXNlKHRoaXMpLHM9ZS5yb3RhdGUoKSxjPXMsdT1lLnRyYW5zbGF0 ZSgpLGY9ZyhzKTtyPW0oZSx0KSxoLmNhbGwoYSwiem9vbSIsKGZ1bmN0aW9uKCl7dmFyIGE9 bi5tb3VzZSh0aGlzKTtpZihlLnNjYWxlKGkuaz1uLmV2ZW50LnNjYWxlKSxyKXtpZihtKGUs YSkpe2Uucm90YXRlKHMpLnRyYW5zbGF0ZSh1KTt2YXIgbD1tKGUsYSksaD15KHIsbCkscD1U KHYoZixoKSksZz1pLnI9eChwLHIsYyk7aXNGaW5pdGUoZ1swXSkmJmlzRmluaXRlKGdbMV0p JiZpc0Zpbml0ZShnWzJdKXx8KGc9YyksZS5yb3RhdGUoZyksYz1nfX1lbHNlIHI9bShlLHQ9 YSk7ZChvLm9mKHRoaXMsYXJndW1lbnRzKSl9KSkscChvLm9mKHRoaXMsYXJndW1lbnRzKSl9 KSkub24oInpvb21lbmQiLChmdW5jdGlvbigpe24uc2VsZWN0KHRoaXMpLnN0eWxlKGMpLGgu Y2FsbChhLCJ6b29tIixudWxsKSxiKG8ub2YodGhpcyxhcmd1bWVudHMpKSxmKHQsZSxfKX0p KS5vbigiem9vbS5yZWRyYXciLChmdW5jdGlvbigpe3QucmVuZGVyKCk7dmFyIHI9ZS5yb3Rh dGUoKTt0LmdyYXBoRGl2LmVtaXQoInBsb3RseV9yZWxheW91dGluZyIseyJnZW8ucHJvamVj dGlvbi5zY2FsZSI6ZS5zY2FsZSgpL3QuZml0U2NhbGUsImdlby5wcm9qZWN0aW9uLnJvdGF0 aW9uLmxvbiI6LXJbMF0sImdlby5wcm9qZWN0aW9uLnJvdGF0aW9uLmxhdCI6LXJbMV19KX0p KSxuLnJlYmluZChhLG8sIm9uIil9ZnVuY3Rpb24gbSh0LGUpe3ZhciByPXQuaW52ZXJ0KGUp O3JldHVybiByJiZpc0Zpbml0ZShyWzBdKSYmaXNGaW5pdGUoclsxXSkmJmZ1bmN0aW9uKHQp e3ZhciBlPXRbMF0qbyxyPXRbMV0qbyxuPU1hdGguY29zKHIpO3JldHVybltuKk1hdGguY29z KGUpLG4qTWF0aC5zaW4oZSksTWF0aC5zaW4ocildfShyKX1mdW5jdGlvbiBnKHQpe3ZhciBl PS41KnRbMF0qbyxyPS41KnRbMV0qbyxuPS41KnRbMl0qbyxpPU1hdGguc2luKGUpLGE9TWF0 aC5jb3MoZSkscz1NYXRoLnNpbihyKSxsPU1hdGguY29zKHIpLGM9TWF0aC5zaW4obiksdT1N YXRoLmNvcyhuKTtyZXR1cm5bYSpsKnUraSpzKmMsaSpsKnUtYSpzKmMsYSpzKnUraSpsKmMs YSpsKmMtaSpzKnVdfWZ1bmN0aW9uIHYodCxlKXt2YXIgcj10WzBdLG49dFsxXSxpPXRbMl0s YT10WzNdLG89ZVswXSxzPWVbMV0sbD1lWzJdLGM9ZVszXTtyZXR1cm5bcipvLW4qcy1pKmwt YSpjLHIqcytuKm8raSpjLWEqbCxyKmwtbipjK2kqbythKnMscipjK24qbC1pKnMrYSpvXX1m dW5jdGlvbiB5KHQsZSl7aWYodCYmZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm5bdFsx XSplWzJdLXRbMl0qZVsxXSx0WzJdKmVbMF0tdFswXSplWzJdLHRbMF0qZVsxXS10WzFdKmVb MF1dfSh0LGUpLG49TWF0aC5zcXJ0KGsocixyKSksaT0uNSpNYXRoLmFjb3MoTWF0aC5tYXgo LTEsTWF0aC5taW4oMSxrKHQsZSkpKSksYT1NYXRoLnNpbihpKS9uO3JldHVybiBuJiZbTWF0 aC5jb3MoaSksclsyXSphLC1yWzFdKmEsclswXSphXX19ZnVuY3Rpb24geCh0LGUscil7dmFy IG49dyhlLDIsdFswXSk7bj13KG4sMSx0WzFdKSxuPXcobiwwLHRbMl0tclsyXSk7dmFyIGks YSxvPWVbMF0sbD1lWzFdLGM9ZVsyXSx1PW5bMF0sZj1uWzFdLGg9blsyXSxwPU1hdGguYXRh bjIobCxvKSpzLGQ9TWF0aC5zcXJ0KG8qbytsKmwpO01hdGguYWJzKGYpPmQ/KGE9KGY+MD85 MDotOTApLXAsaT0wKTooYT1NYXRoLmFzaW4oZi9kKSpzLXAsaT1NYXRoLnNxcnQoZCpkLWYq ZikpO3ZhciBtPTE4MC1hLTIqcCxnPShNYXRoLmF0YW4yKGgsdSktTWF0aC5hdGFuMihjLGkp KSpzLHY9KE1hdGguYXRhbjIoaCx1KS1NYXRoLmF0YW4yKGMsLWkpKSpzO3JldHVybiBiKHJb MF0sclsxXSxhLGcpPD1iKHJbMF0sclsxXSxtLHYpP1thLGcsclsyXV06W20sdixyWzJdXX1m dW5jdGlvbiBiKHQsZSxyLG4pe3ZhciBpPV8oci10KSxhPV8obi1lKTtyZXR1cm4gTWF0aC5z cXJ0KGkqaSthKmEpfWZ1bmN0aW9uIF8odCl7cmV0dXJuKHQlMzYwKzU0MCklMzYwLTE4MH1m dW5jdGlvbiB3KHQsZSxyKXt2YXIgbj1yKm8saT10LnNsaWNlKCksYT0wPT09ZT8xOjAscz0y PT09ZT8xOjIsbD1NYXRoLmNvcyhuKSxjPU1hdGguc2luKG4pO3JldHVybiBpW2FdPXRbYV0q bC10W3NdKmMsaVtzXT10W3NdKmwrdFthXSpjLGl9ZnVuY3Rpb24gVCh0KXtyZXR1cm5bTWF0 aC5hdGFuMigyKih0WzBdKnRbMV0rdFsyXSp0WzNdKSwxLTIqKHRbMV0qdFsxXSt0WzJdKnRb Ml0pKSpzLE1hdGguYXNpbihNYXRoLm1heCgtMSxNYXRoLm1pbigxLDIqKHRbMF0qdFsyXS10 WzNdKnRbMV0pKSkpKnMsTWF0aC5hdGFuMigyKih0WzBdKnRbM10rdFsxXSp0WzJdKSwxLTIq KHRbMl0qdFsyXSt0WzNdKnRbM10pKSpzXX1mdW5jdGlvbiBrKHQsZSl7Zm9yKHZhciByPTAs bj0wLGk9dC5sZW5ndGg7bjxpOysrbilyKz10W25dKmVbbl07cmV0dXJuIHJ9ZS5leHBvcnRz PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5wcm9qZWN0aW9uO3JldHVybihlLl9pc1Njb3BlZD9o OmUuX2lzQ2xpcHBlZD9kOnApKHQscil9fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi8uLi9yZWdp c3RyeSI6NjM4LCJAcGxvdGx5L2QzIjo1OH1dLDU5MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCIuLi9yZWdpc3RyeSIpLGk9dCgiLi9jYXJ0ZXNpYW4vY29uc3Rh bnRzIikuU1VCUExPVF9QQVRURVJOO3IuZ2V0U3VicGxvdENhbGNEYXRhPWZ1bmN0aW9uKHQs ZSxyKXt2YXIgaT1uLnN1YnBsb3RzUmVnaXN0cnlbZV07aWYoIWkpcmV0dXJuW107Zm9yKHZh ciBhPWkuYXR0cixvPVtdLHM9MDtzPHQubGVuZ3RoO3MrKyl7dmFyIGw9dFtzXTtsWzBdLnRy YWNlW2FdPT09ciYmby5wdXNoKGwpfXJldHVybiBvfSxyLmdldE1vZHVsZUNhbGNEYXRhPWZ1 bmN0aW9uKHQsZSl7dmFyIHIsaT1bXSxhPVtdO2lmKCEocj0ic3RyaW5nIj09dHlwZW9mIGU/ bi5nZXRNb2R1bGUoZSkucGxvdDoiZnVuY3Rpb24iPT10eXBlb2YgZT9lOmUucGxvdCkpcmV0 dXJuW2ksdF07Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspe3ZhciBzPXRbb10sbD1zWzBd LnRyYWNlOyEwPT09bC52aXNpYmxlJiYwIT09bC5fbGVuZ3RoJiYobC5fbW9kdWxlLnBsb3Q9 PT1yP2kucHVzaChzKTphLnB1c2gocykpfXJldHVybltpLGFdfSxyLmdldFN1YnBsb3REYXRh PWZ1bmN0aW9uKHQsZSxyKXtpZighbi5zdWJwbG90c1JlZ2lzdHJ5W2VdKXJldHVybltdO3Zh ciBhLG8scyxsPW4uc3VicGxvdHNSZWdpc3RyeVtlXS5hdHRyLGM9W107aWYoImdsMmQiPT09 ZSl7dmFyIHU9ci5tYXRjaChpKTtvPSJ4Iit1WzFdLHM9InkiK3VbMl19Zm9yKHZhciBmPTA7 Zjx0Lmxlbmd0aDtmKyspYT10W2ZdLCJnbDJkIj09PWUmJm4udHJhY2VJcyhhLCJnbDJkIik/ YVtsWzBdXT09PW8mJmFbbFsxXV09PT1zJiZjLnB1c2goYSk6YVtsXT09PXImJmMucHVzaChh KTtyZXR1cm4gY319LHsiLi4vcmVnaXN0cnkiOjYzOCwiLi9jYXJ0ZXNpYW4vY29uc3RhbnRz Ijo1NjF9XSw1OTQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgibW91 c2UtY2hhbmdlIiksaT10KCJtb3VzZS13aGVlbCIpLGE9dCgibW91c2UtZXZlbnQtb2Zmc2V0 Iiksbz10KCIuLi9jYXJ0ZXNpYW4vY29uc3RhbnRzIikscz10KCJoYXMtcGFzc2l2ZS1ldmVu dHMiKTtmdW5jdGlvbiBsKHQsZSl7dGhpcy5lbGVtZW50PXQsdGhpcy5wbG90PWUsdGhpcy5t b3VzZUxpc3RlbmVyPW51bGwsdGhpcy53aGVlbExpc3RlbmVyPW51bGwsdGhpcy5sYXN0SW5w dXRUaW1lPURhdGUubm93KCksdGhpcy5sYXN0UG9zPVswLDBdLHRoaXMuYm94RW5hYmxlZD0h MSx0aGlzLmJveEluaXRlZD0hMSx0aGlzLmJveFN0YXJ0PVswLDBdLHRoaXMuYm94RW5kPVsw LDBdLHRoaXMuZHJhZ1N0YXJ0PVswLDBdfWUuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10 Lm1vdXNlQ29udGFpbmVyLHI9dC5nbHBsb3QsYz1uZXcgbChlLHIpO2Z1bmN0aW9uIHUoKXt0 LnhheGlzLmF1dG9yYW5nZT0hMSx0LnlheGlzLmF1dG9yYW5nZT0hMX1mdW5jdGlvbiBmKGUs bixpKXt2YXIgYSxzLGw9dC5jYWxjRGF0YUJveCgpLGY9ci52aWV3Qm94LGg9Yy5sYXN0UG9z WzBdLHA9Yy5sYXN0UG9zWzFdLGQ9by5NSU5EUkFHKnIucGl4ZWxSYXRpbyxtPW8uTUlOWk9P TSpyLnBpeGVsUmF0aW87ZnVuY3Rpb24gZyhlLHIsbil7dmFyIGk9TWF0aC5taW4ocixuKSxh PU1hdGgubWF4KHIsbik7aSE9PWE/KGxbZV09aSxsW2UrMl09YSxjLmRhdGFCb3g9bCx0LnNl dFJhbmdlcyhsKSk6KHQuc2VsZWN0Qm94LnNlbGVjdEJveD1bMCwwLDEsMV0sdC5nbHBsb3Qu c2V0RGlydHkoKSl9c3dpdGNoKG4qPXIucGl4ZWxSYXRpbyxpKj1yLnBpeGVsUmF0aW8saT1m WzNdLWZbMV0taSx0LmZ1bGxMYXlvdXQuZHJhZ21vZGUpe2Nhc2Uiem9vbSI6aWYoZSl7dmFy IHY9bi8oZlsyXS1mWzBdKSoobFsyXS1sWzBdKStsWzBdLHk9aS8oZlszXS1mWzFdKSoobFsz XS1sWzFdKStsWzFdO2MuYm94SW5pdGVkfHwoYy5ib3hTdGFydFswXT12LGMuYm94U3RhcnRb MV09eSxjLmRyYWdTdGFydFswXT1uLGMuZHJhZ1N0YXJ0WzFdPWkpLGMuYm94RW5kWzBdPXYs Yy5ib3hFbmRbMV09eSxjLmJveEluaXRlZD0hMCxjLmJveEVuYWJsZWR8fGMuYm94U3RhcnRb MF09PT1jLmJveEVuZFswXSYmYy5ib3hTdGFydFsxXT09PWMuYm94RW5kWzFdfHwoYy5ib3hF bmFibGVkPSEwKTt2YXIgeD1NYXRoLmFicyhjLmRyYWdTdGFydFswXS1uKTxtLGI9TWF0aC5h YnMoYy5kcmFnU3RhcnRbMV0taSk8bTtpZighZnVuY3Rpb24oKXtmb3IodmFyIGU9dC5ncmFw aERpdi5fZnVsbExheW91dC5fYXhpc0NvbnN0cmFpbnRHcm91cHMscj10LnhheGlzLl9pZCxu PXQueWF4aXMuX2lkLGk9MDtpPGUubGVuZ3RoO2krKylpZigtMSE9PWVbaV1bcl0pe2lmKC0x IT09ZVtpXVtuXSlyZXR1cm4hMDticmVha31yZXR1cm4hMX0oKXx8eCYmYil4JiYoYy5ib3hF bmRbMF09Yy5ib3hTdGFydFswXSksYiYmKGMuYm94RW5kWzFdPWMuYm94U3RhcnRbMV0pO2Vs c2V7YT1jLmJveEVuZFswXS1jLmJveFN0YXJ0WzBdLHM9Yy5ib3hFbmRbMV0tYy5ib3hTdGFy dFsxXTt2YXIgXz0obFszXS1sWzFdKS8obFsyXS1sWzBdKTtNYXRoLmFicyhhKl8pPk1hdGgu YWJzKHMpPyhjLmJveEVuZFsxXT1jLmJveFN0YXJ0WzFdK01hdGguYWJzKGEpKl8qKHM+PTA/ MTotMSksYy5ib3hFbmRbMV08bFsxXT8oYy5ib3hFbmRbMV09bFsxXSxjLmJveEVuZFswXT1j LmJveFN0YXJ0WzBdKyhsWzFdLWMuYm94U3RhcnRbMV0pL01hdGguYWJzKF8pKTpjLmJveEVu ZFsxXT5sWzNdJiYoYy5ib3hFbmRbMV09bFszXSxjLmJveEVuZFswXT1jLmJveFN0YXJ0WzBd KyhsWzNdLWMuYm94U3RhcnRbMV0pL01hdGguYWJzKF8pKSk6KGMuYm94RW5kWzBdPWMuYm94 U3RhcnRbMF0rTWF0aC5hYnMocykvXyooYT49MD8xOi0xKSxjLmJveEVuZFswXTxsWzBdPyhj LmJveEVuZFswXT1sWzBdLGMuYm94RW5kWzFdPWMuYm94U3RhcnRbMV0rKGxbMF0tYy5ib3hT dGFydFswXSkqTWF0aC5hYnMoXykpOmMuYm94RW5kWzBdPmxbMl0mJihjLmJveEVuZFswXT1s WzJdLGMuYm94RW5kWzFdPWMuYm94U3RhcnRbMV0rKGxbMl0tYy5ib3hTdGFydFswXSkqTWF0 aC5hYnMoXykpKX19ZWxzZSBjLmJveEVuYWJsZWQ/KGE9Yy5ib3hTdGFydFswXSE9PWMuYm94 RW5kWzBdLHM9Yy5ib3hTdGFydFsxXSE9PWMuYm94RW5kWzFdLGF8fHM/KGEmJihnKDAsYy5i b3hTdGFydFswXSxjLmJveEVuZFswXSksdC54YXhpcy5hdXRvcmFuZ2U9ITEpLHMmJihnKDEs Yy5ib3hTdGFydFsxXSxjLmJveEVuZFsxXSksdC55YXhpcy5hdXRvcmFuZ2U9ITEpLHQucmVs YXlvdXRDYWxsYmFjaygpKTp0LmdscGxvdC5zZXREaXJ0eSgpLGMuYm94RW5hYmxlZD0hMSxj LmJveEluaXRlZD0hMSk6Yy5ib3hJbml0ZWQmJihjLmJveEluaXRlZD0hMSk7YnJlYWs7Y2Fz ZSJwYW4iOmMuYm94RW5hYmxlZD0hMSxjLmJveEluaXRlZD0hMSxlPyhjLnBhbm5pbmd8fChj LmRyYWdTdGFydFswXT1uLGMuZHJhZ1N0YXJ0WzFdPWkpLE1hdGguYWJzKGMuZHJhZ1N0YXJ0 WzBdLW4pPGQmJihuPWMuZHJhZ1N0YXJ0WzBdKSxNYXRoLmFicyhjLmRyYWdTdGFydFsxXS1p KTxkJiYoaT1jLmRyYWdTdGFydFsxXSksYT0oaC1uKSoobFsyXS1sWzBdKS8oci52aWV3Qm94 WzJdLXIudmlld0JveFswXSkscz0ocC1pKSoobFszXS1sWzFdKS8oci52aWV3Qm94WzNdLXIu dmlld0JveFsxXSksbFswXSs9YSxsWzJdKz1hLGxbMV0rPXMsbFszXSs9cyx0LnNldFJhbmdl cyhsKSxjLnBhbm5pbmc9ITAsYy5sYXN0SW5wdXRUaW1lPURhdGUubm93KCksdSgpLHQuY2Ft ZXJhQ2hhbmdlZCgpLHQuaGFuZGxlQW5ub3RhdGlvbnMoKSk6Yy5wYW5uaW5nJiYoYy5wYW5u aW5nPSExLHQucmVsYXlvdXRDYWxsYmFjaygpKX1jLmxhc3RQb3NbMF09bixjLmxhc3RQb3Nb MV09aX1yZXR1cm4gYy5tb3VzZUxpc3RlbmVyPW4oZSxmKSxlLmFkZEV2ZW50TGlzdGVuZXIo InRvdWNoc3RhcnQiLChmdW5jdGlvbih0KXt2YXIgcj1hKHQuY2hhbmdlZFRvdWNoZXNbMF0s ZSk7ZigwLHJbMF0sclsxXSksZigxLHJbMF0sclsxXSksdC5wcmV2ZW50RGVmYXVsdCgpfSks ISFzJiZ7cGFzc2l2ZTohMX0pLGUuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIiwoZnVu Y3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpO3ZhciByPWEodC5jaGFuZ2VkVG91Y2hlc1sw XSxlKTtmKDEsclswXSxyWzFdKSx0LnByZXZlbnREZWZhdWx0KCl9KSwhIXMmJntwYXNzaXZl OiExfSksZS5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsKGZ1bmN0aW9uKHQpe2YoMCxj Lmxhc3RQb3NbMF0sYy5sYXN0UG9zWzFdKSx0LnByZXZlbnREZWZhdWx0KCl9KSwhIXMmJntw YXNzaXZlOiExfSksYy53aGVlbExpc3RlbmVyPWkoZSwoZnVuY3Rpb24oZSxuKXtpZighdC5z Y3JvbGxab29tKXJldHVybiExO3ZhciBpPXQuY2FsY0RhdGFCb3goKSxhPXIudmlld0JveCxv PWMubGFzdFBvc1swXSxzPWMubGFzdFBvc1sxXSxsPU1hdGguZXhwKDUqbi8oYVszXS1hWzFd KSksZj1vLyhhWzJdLWFbMF0pKihpWzJdLWlbMF0pK2lbMF0saD1zLyhhWzNdLWFbMV0pKihp WzNdLWlbMV0pK2lbMV07cmV0dXJuIGlbMF09KGlbMF0tZikqbCtmLGlbMl09KGlbMl0tZikq bCtmLGlbMV09KGlbMV0taCkqbCtoLGlbM109KGlbM10taCkqbCtoLHQuc2V0UmFuZ2VzKGkp LGMubGFzdElucHV0VGltZT1EYXRlLm5vdygpLHUoKSx0LmNhbWVyYUNoYW5nZWQoKSx0Lmhh bmRsZUFubm90YXRpb25zKCksdC5yZWxheW91dENhbGxiYWNrKCksITB9KSwhMCksY319LHsi Li4vY2FydGVzaWFuL2NvbnN0YW50cyI6NTYxLCJoYXMtcGFzc2l2ZS1ldmVudHMiOjIyOSwi bW91c2UtY2hhbmdlIjoyNDEsIm1vdXNlLWV2ZW50LW9mZnNldCI6MjQyLCJtb3VzZS13aGVl bCI6MjQ0fV0sNTk1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4u L2NhcnRlc2lhbi9heGVzIiksaT10KCIuLi8uLi9saWIvc3RyMnJnYmFycmF5Iik7ZnVuY3Rp b24gYSh0KXt0aGlzLnNjZW5lPXQsdGhpcy5nbD10LmdsLHRoaXMucGl4ZWxSYXRpbz10LnBp eGVsUmF0aW8sdGhpcy5zY3JlZW5Cb3g9WzAsMCwxLDFdLHRoaXMudmlld0JveD1bMCwwLDEs MV0sdGhpcy5kYXRhQm94PVstMSwtMSwxLDFdLHRoaXMuYm9yZGVyTGluZUVuYWJsZT1bITEs ITEsITEsITFdLHRoaXMuYm9yZGVyTGluZVdpZHRoPVsxLDEsMSwxXSx0aGlzLmJvcmRlckxp bmVDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlz LnRpY2tzPVtbXSxbXV0sdGhpcy50aWNrRW5hYmxlPVshMCwhMCwhMSwhMV0sdGhpcy50aWNr UGFkPVsxNSwxNSwxNSwxNV0sdGhpcy50aWNrQW5nbGU9WzAsMCwwLDBdLHRoaXMudGlja0Nv bG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMudGlj a01hcmtMZW5ndGg9WzAsMCwwLDBdLHRoaXMudGlja01hcmtXaWR0aD1bMCwwLDAsMF0sdGhp cy50aWNrTWFya0NvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAs MV1dLHRoaXMubGFiZWxzPVsieCIsInkiXSx0aGlzLmxhYmVsRW5hYmxlPVshMCwhMCwhMSwh MV0sdGhpcy5sYWJlbEFuZ2xlPVswLE1hdGguUEkvMiwwLDMqTWF0aC5QSS8yXSx0aGlzLmxh YmVsUGFkPVsxNSwxNSwxNSwxNV0sdGhpcy5sYWJlbFNpemU9WzEyLDEyXSx0aGlzLmxhYmVs Rm9udD1bInNhbnMtc2VyaWYiLCJzYW5zLXNlcmlmIl0sdGhpcy5sYWJlbENvbG9yPVtbMCww LDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMudGl0bGU9IiIsdGhp cy50aXRsZUVuYWJsZT0hMCx0aGlzLnRpdGxlQ2VudGVyPVswLDAsMCwwXSx0aGlzLnRpdGxl QW5nbGU9MCx0aGlzLnRpdGxlQ29sb3I9WzAsMCwwLDFdLHRoaXMudGl0bGVGb250PSJzYW5z LXNlcmlmIix0aGlzLnRpdGxlU2l6ZT0xOCx0aGlzLmdyaWRMaW5lRW5hYmxlPVshMCwhMF0s dGhpcy5ncmlkTGluZUNvbG9yPVtbMCwwLDAsLjVdLFswLDAsMCwuNV1dLHRoaXMuZ3JpZExp bmVXaWR0aD1bMSwxXSx0aGlzLnplcm9MaW5lRW5hYmxlPVshMCwhMF0sdGhpcy56ZXJvTGlu ZVdpZHRoPVsxLDFdLHRoaXMuemVyb0xpbmVDb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXV0s dGhpcy5ib3JkZXJDb2xvcj1bMCwwLDAsMF0sdGhpcy5iYWNrZ3JvdW5kQ29sb3I9WzAsMCww LDBdLHRoaXMuc3RhdGljPXRoaXMuc2NlbmUuc3RhdGljUGxvdH12YXIgbz1hLnByb3RvdHlw ZSxzPVsieGF4aXMiLCJ5YXhpcyJdO28ubWVyZ2U9ZnVuY3Rpb24odCl7dmFyIGUscixuLGEs byxsLGMsdSxmLGgscDtmb3IodGhpcy50aXRsZUVuYWJsZT0hMSx0aGlzLmJhY2tncm91bmRD b2xvcj1pKHQucGxvdF9iZ2NvbG9yKSxoPTA7aDwyOysraCl7dmFyIGQ9KGU9c1toXSkuY2hh ckF0KDApO2ZvcihuPShyPXRbdGhpcy5zY2VuZVtlXS5fbmFtZV0pLnRpdGxlLnRleHQ9PT10 aGlzLnNjZW5lLmZ1bGxMYXlvdXQuX2RmbHRUaXRsZVtkXT8iIjpyLnRpdGxlLnRleHQscD0w O3A8PTI7cCs9Mil0aGlzLmxhYmVsRW5hYmxlW2grcF09ITEsdGhpcy5sYWJlbHNbaCtwXT1u LHRoaXMubGFiZWxDb2xvcltoK3BdPWkoci50aXRsZS5mb250LmNvbG9yKSx0aGlzLmxhYmVs Rm9udFtoK3BdPXIudGl0bGUuZm9udC5mYW1pbHksdGhpcy5sYWJlbFNpemVbaCtwXT1yLnRp dGxlLmZvbnQuc2l6ZSx0aGlzLmxhYmVsUGFkW2grcF09dGhpcy5nZXRMYWJlbFBhZChlLHIp LHRoaXMudGlja0VuYWJsZVtoK3BdPSExLHRoaXMudGlja0NvbG9yW2grcF09aSgoci50aWNr Zm9udHx8e30pLmNvbG9yKSx0aGlzLnRpY2tBbmdsZVtoK3BdPSJhdXRvIj09PXIudGlja2Fu Z2xlPzA6TWF0aC5QSSotci50aWNrYW5nbGUvMTgwLHRoaXMudGlja1BhZFtoK3BdPXRoaXMu Z2V0VGlja1BhZChyKSx0aGlzLnRpY2tNYXJrTGVuZ3RoW2grcF09MCx0aGlzLnRpY2tNYXJr V2lkdGhbaCtwXT1yLnRpY2t3aWR0aHx8MCx0aGlzLnRpY2tNYXJrQ29sb3JbaCtwXT1pKHIu dGlja2NvbG9yKSx0aGlzLmJvcmRlckxpbmVFbmFibGVbaCtwXT0hMSx0aGlzLmJvcmRlckxp bmVDb2xvcltoK3BdPWkoci5saW5lY29sb3IpLHRoaXMuYm9yZGVyTGluZVdpZHRoW2grcF09 ci5saW5ld2lkdGh8fDA7Yz10aGlzLmhhc1NoYXJlZEF4aXMociksbz10aGlzLmhhc0F4aXNJ bkRmbHRQb3MoZSxyKSYmIWMsbD10aGlzLmhhc0F4aXNJbkFsdHJQb3MoZSxyKSYmIWMsYT1y Lm1pcnJvcnx8ITEsdT1jPy0xIT09U3RyaW5nKGEpLmluZGV4T2YoImFsbCIpOiEhYSxmPWM/ ImFsbHRpY2tzIj09PWE6LTEhPT1TdHJpbmcoYSkuaW5kZXhPZigidGlja3MiKSxvP3RoaXMu bGFiZWxFbmFibGVbaF09ITA6bCYmKHRoaXMubGFiZWxFbmFibGVbaCsyXT0hMCksbz90aGlz LnRpY2tFbmFibGVbaF09ci5zaG93dGlja2xhYmVsczpsJiYodGhpcy50aWNrRW5hYmxlW2gr Ml09ci5zaG93dGlja2xhYmVscyksKG98fHUpJiYodGhpcy5ib3JkZXJMaW5lRW5hYmxlW2hd PXIuc2hvd2xpbmUpLChsfHx1KSYmKHRoaXMuYm9yZGVyTGluZUVuYWJsZVtoKzJdPXIuc2hv d2xpbmUpLChvfHxmKSYmKHRoaXMudGlja01hcmtMZW5ndGhbaF09dGhpcy5nZXRUaWNrTWFy a0xlbmd0aChyKSksKGx8fGYpJiYodGhpcy50aWNrTWFya0xlbmd0aFtoKzJdPXRoaXMuZ2V0 VGlja01hcmtMZW5ndGgocikpLHRoaXMuZ3JpZExpbmVFbmFibGVbaF09ci5zaG93Z3JpZCx0 aGlzLmdyaWRMaW5lQ29sb3JbaF09aShyLmdyaWRjb2xvciksdGhpcy5ncmlkTGluZVdpZHRo W2hdPXIuZ3JpZHdpZHRoLHRoaXMuemVyb0xpbmVFbmFibGVbaF09ci56ZXJvbGluZSx0aGlz Lnplcm9MaW5lQ29sb3JbaF09aShyLnplcm9saW5lY29sb3IpLHRoaXMuemVyb0xpbmVXaWR0 aFtoXT1yLnplcm9saW5ld2lkdGh9fSxvLmhhc1NoYXJlZEF4aXM9ZnVuY3Rpb24odCl7dmFy IGU9dGhpcy5zY2VuZSxyPWUuZnVsbExheW91dC5fc3VicGxvdHMuZ2wyZDtyZXR1cm4gMCE9 PW4uZmluZFN1YnBsb3RzV2l0aEF4aXMocix0KS5pbmRleE9mKGUuaWQpfSxvLmhhc0F4aXNJ bkRmbHRQb3M9ZnVuY3Rpb24odCxlKXt2YXIgcj1lLnNpZGU7cmV0dXJuInhheGlzIj09PXQ/ ImJvdHRvbSI9PT1yOiJ5YXhpcyI9PT10PyJsZWZ0Ij09PXI6dm9pZCAwfSxvLmhhc0F4aXNJ bkFsdHJQb3M9ZnVuY3Rpb24odCxlKXt2YXIgcj1lLnNpZGU7cmV0dXJuInhheGlzIj09PXQ/ InRvcCI9PT1yOiJ5YXhpcyI9PT10PyJyaWdodCI9PT1yOnZvaWQgMH0sby5nZXRMYWJlbFBh ZD1mdW5jdGlvbih0LGUpe3ZhciByPWUudGl0bGUuZm9udC5zaXplLG49ZS5zaG93dGlja2xh YmVscztyZXR1cm4ieGF4aXMiPT09dD8idG9wIj09PWUuc2lkZT9yKigxLjUrKG4/MTowKSkt MTA6ciooMS41KyhuPy41OjApKS0xMDoieWF4aXMiPT09dD8icmlnaHQiPT09ZS5zaWRlPzEw K3IqKDEuNSsobj8xOi41KSk6MTArciooMS41KyhuPy41OjApKTp2b2lkIDB9LG8uZ2V0VGlj a1BhZD1mdW5jdGlvbih0KXtyZXR1cm4ib3V0c2lkZSI9PT10LnRpY2tzPzEwK3QudGlja2xl bjoxNX0sby5nZXRUaWNrTWFya0xlbmd0aD1mdW5jdGlvbih0KXtpZighdC50aWNrcylyZXR1 cm4gMDt2YXIgZT10LnRpY2tsZW47cmV0dXJuImluc2lkZSI9PT10LnRpY2tzPy1lOmV9LGUu ZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGEodCl9fSx7Ii4uLy4uL2xpYi9zdHIy cmdiYXJyYXkiOjUyOCwiLi4vY2FydGVzaWFuL2F4ZXMiOjU1NH1dLDU5NjpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVz Iikub3ZlcnJpZGVBbGwsaT10KCIuL3NjZW5lMmQiKSxhPXQoIi4uL2xheW91dF9hdHRyaWJ1 dGVzIiksbz10KCIuLi8uLi9jb25zdGFudHMveG1sbnNfbmFtZXNwYWNlcyIpLHM9dCgiLi4v Y2FydGVzaWFuL2NvbnN0YW50cyIpLGw9dCgiLi4vY2FydGVzaWFuIiksYz10KCIuLi8uLi9j b21wb25lbnRzL2Z4L2xheW91dF9hdHRyaWJ1dGVzIiksdT10KCIuLi9nZXRfZGF0YSIpLmdl dFN1YnBsb3REYXRhO3IubmFtZT0iZ2wyZCIsci5hdHRyPVsieGF4aXMiLCJ5YXhpcyJdLHIu aWRSb290PVsieCIsInkiXSxyLmlkUmVnZXg9cy5pZFJlZ2V4LHIuYXR0clJlZ2V4PXMuYXR0 clJlZ2V4LHIuYXR0cmlidXRlcz10KCIuLi9jYXJ0ZXNpYW4vYXR0cmlidXRlcyIpLHIuc3Vw cGx5TGF5b3V0RGVmYXVsdHM9ZnVuY3Rpb24odCxlLHIpe2UuX2hhcygiY2FydGVzaWFuIil8 fGwuc3VwcGx5TGF5b3V0RGVmYXVsdHModCxlLHIpfSxyLmxheW91dEF0dHJPdmVycmlkZXM9 bihsLmxheW91dEF0dHJpYnV0ZXMsInBsb3QiLCJmcm9tLXJvb3QiKSxyLmJhc2VMYXlvdXRB dHRyT3ZlcnJpZGVzPW4oe3Bsb3RfYmdjb2xvcjphLnBsb3RfYmdjb2xvcixob3ZlcmxhYmVs OmMuaG92ZXJsYWJlbH0sInBsb3QiLCJuZXN0ZWQiKSxyLnBsb3Q9ZnVuY3Rpb24odCl7Zm9y KHZhciBlPXQuX2Z1bGxMYXlvdXQscj10Ll9mdWxsRGF0YSxuPWUuX3N1YnBsb3RzLmdsMmQs YT0wO2E8bi5sZW5ndGg7YSsrKXt2YXIgbz1uW2FdLHM9ZS5fcGxvdHNbb10sbD11KHIsImds MmQiLG8pLGM9cy5fc2NlbmUyZDt2b2lkIDA9PT1jJiYoYz1uZXcgaSh7aWQ6byxncmFwaERp djp0LGNvbnRhaW5lcjp0LnF1ZXJ5U2VsZWN0b3IoIi5nbC1jb250YWluZXIiKSxzdGF0aWNQ bG90OnQuX2NvbnRleHQuc3RhdGljUGxvdCxwbG90R2xQaXhlbFJhdGlvOnQuX2NvbnRleHQu cGxvdEdsUGl4ZWxSYXRpb30sZSkscy5fc2NlbmUyZD1jKSxjLnBsb3QobCx0LmNhbGNkYXRh LGUsdC5sYXlvdXQpfX0sci5jbGVhbj1mdW5jdGlvbih0LGUscixuKXtmb3IodmFyIGk9bi5f c3VicGxvdHMuZ2wyZHx8W10sYT0wO2E8aS5sZW5ndGg7YSsrKXt2YXIgbz1pW2FdLHM9bi5f cGxvdHNbb107aWYocy5fc2NlbmUyZCl7dmFyIGM9dSh0LCJnbDJkIixvKTswPT09Yy5sZW5n dGgmJihzLl9zY2VuZTJkLmRlc3Ryb3koKSxkZWxldGUgbi5fcGxvdHNbb10pfX1sLmNsZWFu LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sci5kcmF3RnJhbWV3b3JrPWZ1bmN0aW9uKHQpe3Qu X2NvbnRleHQuc3RhdGljUGxvdHx8bC5kcmF3RnJhbWV3b3JrKHQpfSxyLnRvU1ZHPWZ1bmN0 aW9uKHQpe2Zvcih2YXIgZT10Ll9mdWxsTGF5b3V0LHI9ZS5fc3VicGxvdHMuZ2wyZCxuPTA7 bjxyLmxlbmd0aDtuKyspe3ZhciBpPWUuX3Bsb3RzW3Jbbl1dLl9zY2VuZTJkLGE9aS50b0lt YWdlKCJwbmciKTtlLl9nbGltYWdlcy5hcHBlbmQoInN2ZzppbWFnZSIpLmF0dHIoe3htbG5z Om8uc3ZnLCJ4bGluazpocmVmIjphLHg6MCx5OjAsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAw JSIscHJlc2VydmVBc3BlY3RSYXRpbzoibm9uZSJ9KSxpLmRlc3Ryb3koKX19LHIudXBkYXRl Rng9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuX2Z1bGxMYXlvdXQscj1lLl9zdWJwbG90cy5n bDJkLG49MDtuPHIubGVuZ3RoO24rKyl7ZS5fcGxvdHNbcltuXV0uX3NjZW5lMmQudXBkYXRl RngoZS5kcmFnbW9kZSl9fX0seyIuLi8uLi9jb21wb25lbnRzL2Z4L2xheW91dF9hdHRyaWJ1 dGVzIjo0MDcsIi4uLy4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2VzIjo0ODAsIi4uLy4u L3Bsb3RfYXBpL2VkaXRfdHlwZXMiOjUzNiwiLi4vY2FydGVzaWFuIjo1NjgsIi4uL2NhcnRl c2lhbi9hdHRyaWJ1dGVzIjo1NTIsIi4uL2NhcnRlc2lhbi9jb25zdGFudHMiOjU2MSwiLi4v Z2V0X2RhdGEiOjU5MywiLi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjYxMCwiLi9zY2VuZTJkIjo1 OTd9XSw1OTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG4saSxhPXQoIi4u Ly4uL3JlZ2lzdHJ5Iiksbz10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLHM9dCgi Li4vLi4vY29tcG9uZW50cy9meCIpLGw9dCgiLi4vLi4vLi4vc3RhY2tnbF9tb2R1bGVzIiku Z2xfcGxvdDJkLGM9dCgiLi4vLi4vLi4vc3RhY2tnbF9tb2R1bGVzIikuZ2xfc3Bpa2VzMmQs dT10KCIuLi8uLi8uLi9zdGFja2dsX21vZHVsZXMiKS5nbF9zZWxlY3RfYm94LGY9dCgid2Vi Z2wtY29udGV4dCIpLGg9dCgiLi9jb252ZXJ0IikscD10KCIuL2NhbWVyYSIpLGQ9dCgiLi4v Li4vbGliL3Nob3dfbm9fd2ViZ2xfbXNnIiksbT10KCIuLi9jYXJ0ZXNpYW4vY29uc3RyYWlu dHMiKSxnPW0uZW5mb3JjZSx2PW0uY2xlYW4seT10KCIuLi9jYXJ0ZXNpYW4vYXV0b3Jhbmdl IikuZG9BdXRvUmFuZ2UseD10KCIuLi8uLi9jb21wb25lbnRzL2RyYWdlbGVtZW50L2hlbHBl cnMiKSxiPXguZHJhd01vZGUsXz14LnNlbGVjdE1vZGUsdz1bInhheGlzIiwieWF4aXMiXSxU PXQoIi4uL2NhcnRlc2lhbi9jb25zdGFudHMiKS5TVUJQTE9UX1BBVFRFUk47ZnVuY3Rpb24g ayh0LGUpe3RoaXMuY29udGFpbmVyPXQuY29udGFpbmVyLHRoaXMuZ3JhcGhEaXY9dC5ncmFw aERpdix0aGlzLnBpeGVsUmF0aW89dC5wbG90R2xQaXhlbFJhdGlvfHx3aW5kb3cuZGV2aWNl UGl4ZWxSYXRpbyx0aGlzLmlkPXQuaWQsdGhpcy5zdGF0aWNQbG90PSEhdC5zdGF0aWNQbG90 LHRoaXMuc2Nyb2xsWm9vbT10aGlzLmdyYXBoRGl2Ll9jb250ZXh0Ll9zY3JvbGxab29tLmNh cnRlc2lhbix0aGlzLmZ1bGxEYXRhPW51bGwsdGhpcy51cGRhdGVSZWZzKGUpLHRoaXMubWFr ZUZyYW1ld29yaygpLHRoaXMuc3RvcHBlZHx8KHRoaXMuZ2xwbG90T3B0aW9ucz1oKHRoaXMp LHRoaXMuZ2xwbG90T3B0aW9ucy5tZXJnZShlKSx0aGlzLmdscGxvdD1sKHRoaXMuZ2xwbG90 T3B0aW9ucyksdGhpcy5jYW1lcmE9cCh0aGlzKSx0aGlzLnRyYWNlcz17fSx0aGlzLnNwaWtl cz1jKHRoaXMuZ2xwbG90KSx0aGlzLnNlbGVjdEJveD11KHRoaXMuZ2xwbG90LHtpbm5lckZp bGw6ITEsb3V0ZXJGaWxsOiEwfSksdGhpcy5sYXN0QnV0dG9uU3RhdGU9MCx0aGlzLnBpY2tS ZXN1bHQ9bnVsbCx0aGlzLmlzTW91c2VPdmVyPSEwLHRoaXMuc3RvcHBlZD0hMSx0aGlzLnJl ZHJhdz10aGlzLmRyYXcuYmluZCh0aGlzKSx0aGlzLnJlZHJhdygpKX1lLmV4cG9ydHM9azt2 YXIgQT1rLnByb3RvdHlwZTtBLm1ha2VGcmFtZXdvcms9ZnVuY3Rpb24oKXtpZih0aGlzLnN0 YXRpY1Bsb3Qpe2lmKCEoaXx8KG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiks aT1mKHtjYW52YXM6bixwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6ITEscHJlbXVsdGlwbGllZEFs cGhhOiEwLGFudGlhbGlhczohMH0pKSkpdGhyb3cgbmV3IEVycm9yKCJFcnJvciBjcmVhdGlu ZyBzdGF0aWMgY2FudmFzL2NvbnRleHQgZm9yIGltYWdlIHNlcnZlciIpO3RoaXMuY2FudmFz PW4sdGhpcy5nbD1pfWVsc2V7dmFyIHQ9dGhpcy5jb250YWluZXIucXVlcnlTZWxlY3Rvcigi LmdsLWNhbnZhcy1mb2N1cyIpLGU9Zih7Y2FudmFzOnQscHJlc2VydmVEcmF3aW5nQnVmZmVy OiEwLHByZW11bHRpcGxpZWRBbHBoYTohMH0pO2lmKCFlKXJldHVybiBkKHRoaXMpLHZvaWQo dGhpcy5zdG9wcGVkPSEwKTt0aGlzLmNhbnZhcz10LHRoaXMuZ2w9ZX12YXIgcj10aGlzLmNh bnZhcztyLnN0eWxlLndpZHRoPSIxMDAlIixyLnN0eWxlLmhlaWdodD0iMTAwJSIsci5zdHls ZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHIuc3R5bGUudG9wPSIwcHgiLHIuc3R5bGUubGVmdD0i MHB4IixyLnN0eWxlWyJwb2ludGVyLWV2ZW50cyJdPSJub25lIix0aGlzLnVwZGF0ZVNpemUo cik7dmFyIGE9dGhpcy5zdmdDb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInN2ZyIpO2Euc3R5bGUucG9zaXRpb249ImFi c29sdXRlIixhLnN0eWxlLnRvcD1hLnN0eWxlLmxlZnQ9IjBweCIsYS5zdHlsZS53aWR0aD1h LnN0eWxlLmhlaWdodD0iMTAwJSIsYS5zdHlsZVsiei1pbmRleCJdPTIwLGEuc3R5bGVbInBv aW50ZXItZXZlbnRzIl09Im5vbmUiO3ZhciBvPXRoaXMubW91c2VDb250YWluZXI9ZG9jdW1l bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7by5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLG8u c3R5bGVbInBvaW50ZXItZXZlbnRzIl09ImF1dG8iLHRoaXMucGlja0NhbnZhcz10aGlzLmNv bnRhaW5lci5xdWVyeVNlbGVjdG9yKCIuZ2wtY2FudmFzLXBpY2siKTt2YXIgcz10aGlzLmNv bnRhaW5lcjtzLmFwcGVuZENoaWxkKGEpLHMuYXBwZW5kQ2hpbGQobyk7dmFyIGw9dGhpcztv LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0IiwoZnVuY3Rpb24oKXtsLmlzTW91c2VPdmVy PSExLGwudW5ob3ZlcigpfSkpLG8uYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwoZnVu Y3Rpb24oKXtsLmlzTW91c2VPdmVyPSEwfSkpfSxBLnRvSW1hZ2U9ZnVuY3Rpb24odCl7dHx8 KHQ9InBuZyIpLHRoaXMuc3RvcHBlZD0hMCx0aGlzLnN0YXRpY1Bsb3QmJnRoaXMuY29udGFp bmVyLmFwcGVuZENoaWxkKG4pLHRoaXMudXBkYXRlU2l6ZSh0aGlzLmNhbnZhcyk7dmFyIGU9 dGhpcy5nbHBsb3QuZ2wscj1lLmRyYXdpbmdCdWZmZXJXaWR0aCxpPWUuZHJhd2luZ0J1ZmZl ckhlaWdodDtlLmNsZWFyQ29sb3IoMSwxLDEsMCksZS5jbGVhcihlLkNPTE9SX0JVRkZFUl9C SVR8ZS5ERVBUSF9CVUZGRVJfQklUKSx0aGlzLmdscGxvdC5zZXREaXJ0eSgpLHRoaXMuZ2xw bG90LmRyYXcoKSxlLmJpbmRGcmFtZWJ1ZmZlcihlLkZSQU1FQlVGRkVSLG51bGwpO3ZhciBh PW5ldyBVaW50OEFycmF5KHIqaSo0KTtlLnJlYWRQaXhlbHMoMCwwLHIsaSxlLlJHQkEsZS5V TlNJR05FRF9CWVRFLGEpO2Zvcih2YXIgbz0wLHM9aS0xO288czsrK28sLS1zKWZvcih2YXIg bD0wO2w8cjsrK2wpZm9yKHZhciBjPTA7Yzw0OysrYyl7dmFyIHU9YVs0KihyKm8rbCkrY107 YVs0KihyKm8rbCkrY109YVs0KihyKnMrbCkrY10sYVs0KihyKnMrbCkrY109dX12YXIgZj1k b2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtmLndpZHRoPXIsZi5oZWlnaHQ9aTt2 YXIgaCxwPWYuZ2V0Q29udGV4dCgiMmQiLHt3aWxsUmVhZEZyZXF1ZW50bHk6ITB9KSxkPXAu Y3JlYXRlSW1hZ2VEYXRhKHIsaSk7c3dpdGNoKGQuZGF0YS5zZXQoYSkscC5wdXRJbWFnZURh dGEoZCwwLDApLHQpe2Nhc2UianBlZyI6aD1mLnRvRGF0YVVSTCgiaW1hZ2UvanBlZyIpO2Jy ZWFrO2Nhc2Uid2VicCI6aD1mLnRvRGF0YVVSTCgiaW1hZ2Uvd2VicCIpO2JyZWFrO2RlZmF1 bHQ6aD1mLnRvRGF0YVVSTCgiaW1hZ2UvcG5nIil9cmV0dXJuIHRoaXMuc3RhdGljUGxvdCYm dGhpcy5jb250YWluZXIucmVtb3ZlQ2hpbGQobiksaH0sQS51cGRhdGVTaXplPWZ1bmN0aW9u KHQpe3R8fCh0PXRoaXMuY2FudmFzKTt2YXIgZT10aGlzLnBpeGVsUmF0aW8scj10aGlzLmZ1 bGxMYXlvdXQsbj1yLndpZHRoLGk9ci5oZWlnaHQsYT0wfE1hdGguY2VpbChlKm4pLG89MHxN YXRoLmNlaWwoZSppKTtyZXR1cm4gdC53aWR0aD09PWEmJnQuaGVpZ2h0PT09b3x8KHQud2lk dGg9YSx0LmhlaWdodD1vKSx0fSxBLmNvbXB1dGVUaWNrTWFya3M9ZnVuY3Rpb24oKXt0aGlz LnhheGlzLnNldFNjYWxlKCksdGhpcy55YXhpcy5zZXRTY2FsZSgpO2Zvcih2YXIgdD1bby5j YWxjVGlja3ModGhpcy54YXhpcyksby5jYWxjVGlja3ModGhpcy55YXhpcyldLGU9MDtlPDI7 KytlKWZvcih2YXIgcj0wO3I8dFtlXS5sZW5ndGg7KytyKXRbZV1bcl0udGV4dD10W2VdW3Jd LnRleHQrIiI7cmV0dXJuIHR9LEEudXBkYXRlUmVmcz1mdW5jdGlvbih0KXt0aGlzLmZ1bGxM YXlvdXQ9dDt2YXIgZT10aGlzLmlkLm1hdGNoKFQpLHI9InhheGlzIitlWzFdLG49InlheGlz IitlWzJdO3RoaXMueGF4aXM9dGhpcy5mdWxsTGF5b3V0W3JdLHRoaXMueWF4aXM9dGhpcy5m dWxsTGF5b3V0W25dfSxBLnJlbGF5b3V0Q2FsbGJhY2s9ZnVuY3Rpb24oKXt2YXIgdD10aGlz LmdyYXBoRGl2LGU9dGhpcy54YXhpcyxyPXRoaXMueWF4aXMsbj10LmxheW91dCxpPXt9LG89 aVtlLl9uYW1lKyIucmFuZ2UiXT1lLnJhbmdlLnNsaWNlKCkscz1pW3IuX25hbWUrIi5yYW5n ZSJdPXIucmFuZ2Uuc2xpY2UoKTtpW2UuX25hbWUrIi5hdXRvcmFuZ2UiXT1lLmF1dG9yYW5n ZSxpW3IuX25hbWUrIi5hdXRvcmFuZ2UiXT1yLmF1dG9yYW5nZSxhLmNhbGwoIl9zdG9yZURp cmVjdEdVSUVkaXQiLHQubGF5b3V0LHQuX2Z1bGxMYXlvdXQuX3ByZUdVSSxpKTt2YXIgbD1u W2UuX25hbWVdO2wucmFuZ2U9byxsLmF1dG9yYW5nZT1lLmF1dG9yYW5nZTt2YXIgYz1uW3Iu X25hbWVdO2MucmFuZ2U9cyxjLmF1dG9yYW5nZT1yLmF1dG9yYW5nZSxpLmxhc3RJbnB1dFRp bWU9dGhpcy5jYW1lcmEubGFzdElucHV0VGltZSx0LmVtaXQoInBsb3RseV9yZWxheW91dCIs aSl9LEEuY2FtZXJhQ2hhbmdlZD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuY2FtZXJhO3RoaXMu Z2xwbG90LnNldERhdGFCb3godGhpcy5jYWxjRGF0YUJveCgpKTt2YXIgZT10aGlzLmNvbXB1 dGVUaWNrTWFya3MoKTsoZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MDtyPDI7KytyKXt2YXIg bj10W3JdLGk9ZVtyXTtpZihuLmxlbmd0aCE9PWkubGVuZ3RoKXJldHVybiEwO2Zvcih2YXIg YT0wO2E8bi5sZW5ndGg7KythKWlmKG5bYV0ueCE9PWlbYV0ueClyZXR1cm4hMH1yZXR1cm4h MX0pKGUsdGhpcy5nbHBsb3RPcHRpb25zLnRpY2tzKSYmKHRoaXMuZ2xwbG90T3B0aW9ucy50 aWNrcz1lLHRoaXMuZ2xwbG90T3B0aW9ucy5kYXRhQm94PXQuZGF0YUJveCx0aGlzLmdscGxv dC51cGRhdGUodGhpcy5nbHBsb3RPcHRpb25zKSx0aGlzLmhhbmRsZUFubm90YXRpb25zKCkp fSxBLmhhbmRsZUFubm90YXRpb25zPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuZ3JhcGhE aXYsZT10aGlzLmZ1bGxMYXlvdXQuYW5ub3RhdGlvbnMscj0wO3I8ZS5sZW5ndGg7cisrKXt2 YXIgbj1lW3JdO24ueHJlZj09PXRoaXMueGF4aXMuX2lkJiZuLnlyZWY9PT10aGlzLnlheGlz Ll9pZCYmYS5nZXRDb21wb25lbnRNZXRob2QoImFubm90YXRpb25zIiwiZHJhd09uZSIpKHQs cil9fSxBLmRlc3Ryb3k9ZnVuY3Rpb24oKXtpZih0aGlzLmdscGxvdCl7dmFyIHQ9dGhpcy50 cmFjZXM7dCYmT2JqZWN0LmtleXModCkubWFwKChmdW5jdGlvbihlKXt0W2VdLmRpc3Bvc2Uo KSxkZWxldGUgdFtlXX0pKSx0aGlzLmdscGxvdC5kaXNwb3NlKCksdGhpcy5jb250YWluZXIu cmVtb3ZlQ2hpbGQodGhpcy5zdmdDb250YWluZXIpLHRoaXMuY29udGFpbmVyLnJlbW92ZUNo aWxkKHRoaXMubW91c2VDb250YWluZXIpLHRoaXMuZnVsbERhdGE9bnVsbCx0aGlzLmdscGxv dD1udWxsLHRoaXMuc3RvcHBlZD0hMCx0aGlzLmNhbWVyYS5tb3VzZUxpc3RlbmVyLmVuYWJs ZWQ9ITEsdGhpcy5tb3VzZUNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCJ3aGVlbCIs dGhpcy5jYW1lcmEud2hlZWxMaXN0ZW5lciksdGhpcy5jYW1lcmE9bnVsbH19LEEucGxvdD1m dW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5nbHBsb3Q7dGhpcy51cGRhdGVSZWZzKHIpLHRo aXMueGF4aXMuY2xlYXJDYWxjKCksdGhpcy55YXhpcy5jbGVhckNhbGMoKSx0aGlzLnVwZGF0 ZVRyYWNlcyh0LGUpLHRoaXMudXBkYXRlRngoci5kcmFnbW9kZSk7dmFyIGk9ci53aWR0aCxh PXIuaGVpZ2h0O3RoaXMudXBkYXRlU2l6ZSh0aGlzLmNhbnZhcyk7dmFyIG89dGhpcy5nbHBs b3RPcHRpb25zO28ubWVyZ2Uociksby5zY3JlZW5Cb3g9WzAsMCxpLGFdO3ZhciBzPXtfZnVs bExheW91dDp7X2F4aXNDb25zdHJhaW50R3JvdXBzOnIuX2F4aXNDb25zdHJhaW50R3JvdXBz LHhheGlzOnRoaXMueGF4aXMseWF4aXM6dGhpcy55YXhpcyxfc2l6ZTpyLl9zaXplfX07dihz LHRoaXMueGF4aXMpLHYocyx0aGlzLnlheGlzKTt2YXIgbCxjLHU9ci5fc2l6ZSxmPXRoaXMu eGF4aXMuZG9tYWluLGg9dGhpcy55YXhpcy5kb21haW47Zm9yKG8udmlld0JveD1bdS5sK2Zb MF0qdS53LHUuYitoWzBdKnUuaCxpLXUuci0oMS1mWzFdKSp1LncsYS11LnQtKDEtaFsxXSkq dS5oXSx0aGlzLm1vdXNlQ29udGFpbmVyLnN0eWxlLndpZHRoPXUudyooZlsxXS1mWzBdKSsi cHgiLHRoaXMubW91c2VDb250YWluZXIuc3R5bGUuaGVpZ2h0PXUuaCooaFsxXS1oWzBdKSsi cHgiLHRoaXMubW91c2VDb250YWluZXIuaGVpZ2h0PXUuaCooaFsxXS1oWzBdKSx0aGlzLm1v dXNlQ29udGFpbmVyLnN0eWxlLmxlZnQ9dS5sK2ZbMF0qdS53KyJweCIsdGhpcy5tb3VzZUNv bnRhaW5lci5zdHlsZS50b3A9dS50KygxLWhbMV0pKnUuaCsicHgiLGM9MDtjPDI7KytjKShs PXRoaXNbd1tjXV0pLl9sZW5ndGg9by52aWV3Qm94W2MrMl0tby52aWV3Qm94W2NdLHkodGhp cy5ncmFwaERpdixsKSxsLnNldFNjYWxlKCk7ZyhzKSxvLnRpY2tzPXRoaXMuY29tcHV0ZVRp Y2tNYXJrcygpLG8uZGF0YUJveD10aGlzLmNhbGNEYXRhQm94KCksby5tZXJnZShyKSxuLnVw ZGF0ZShvKSx0aGlzLmdscGxvdC5kcmF3KCl9LEEuY2FsY0RhdGFCb3g9ZnVuY3Rpb24oKXt2 YXIgdD10aGlzLnhheGlzLGU9dGhpcy55YXhpcyxyPXQucmFuZ2Usbj1lLnJhbmdlLGk9dC5y MmwsYT1lLnIybDtyZXR1cm5baShyWzBdKSxhKG5bMF0pLGkoclsxXSksYShuWzFdKV19LEEu c2V0UmFuZ2VzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMueGF4aXMscj10aGlzLnlheGlzLG49 ZS5sMnIsaT1yLmwycjtlLnJhbmdlPVtuKHRbMF0pLG4odFsyXSldLHIucmFuZ2U9W2kodFsx XSksaSh0WzNdKV19LEEudXBkYXRlVHJhY2VzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixpLGE9 T2JqZWN0LmtleXModGhpcy50cmFjZXMpO3RoaXMuZnVsbERhdGE9dDt0OmZvcihyPTA7cjxh Lmxlbmd0aDtyKyspe3ZhciBvPWFbcl0scz10aGlzLnRyYWNlc1tvXTtmb3Iobj0wO248dC5s ZW5ndGg7bisrKWlmKChpPXRbbl0pLnVpZD09PW8mJmkudHlwZT09PXMudHlwZSljb250aW51 ZSB0O3MuZGlzcG9zZSgpLGRlbGV0ZSB0aGlzLnRyYWNlc1tvXX1mb3Iocj0wO3I8dC5sZW5n dGg7cisrKXtpPXRbcl07dmFyIGw9ZVtyXSxjPXRoaXMudHJhY2VzW2kudWlkXTtjP2MudXBk YXRlKGksbCk6KGM9aS5fbW9kdWxlLnBsb3QodGhpcyxpLGwpLHRoaXMudHJhY2VzW2kudWlk XT1jKX10aGlzLmdscGxvdC5vYmplY3RzLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQu X3RyYWNlLmluZGV4LWUuX3RyYWNlLmluZGV4fSkpfSxBLnVwZGF0ZUZ4PWZ1bmN0aW9uKHQp e18odCl8fGIodCk/KHRoaXMucGlja0NhbnZhcy5zdHlsZVsicG9pbnRlci1ldmVudHMiXT0i bm9uZSIsdGhpcy5tb3VzZUNvbnRhaW5lci5zdHlsZVsicG9pbnRlci1ldmVudHMiXT0ibm9u ZSIpOih0aGlzLnBpY2tDYW52YXMuc3R5bGVbInBvaW50ZXItZXZlbnRzIl09ImF1dG8iLHRo aXMubW91c2VDb250YWluZXIuc3R5bGVbInBvaW50ZXItZXZlbnRzIl09ImF1dG8iKSx0aGlz Lm1vdXNlQ29udGFpbmVyLnN0eWxlLmN1cnNvcj0icGFuIj09PXQ/Im1vdmUiOiJ6b29tIj09 PXQ/ImNyb3NzaGFpciI6bnVsbH0sQS5lbWl0UG9pbnRBY3Rpb249ZnVuY3Rpb24odCxlKXtm b3IodmFyIHIsbj10LnRyYWNlLnVpZCxpPXQucG9pbnRJbmRleCxhPTA7YTx0aGlzLmZ1bGxE YXRhLmxlbmd0aDthKyspdGhpcy5mdWxsRGF0YVthXS51aWQ9PT1uJiYocj10aGlzLmZ1bGxE YXRhW2FdKTt2YXIgbz17eDp0LnRyYWNlQ29vcmRbMF0seTp0LnRyYWNlQ29vcmRbMV0sY3Vy dmVOdW1iZXI6ci5pbmRleCxwb2ludE51bWJlcjppLGRhdGE6ci5faW5wdXQsZnVsbERhdGE6 dGhpcy5mdWxsRGF0YSx4YXhpczp0aGlzLnhheGlzLHlheGlzOnRoaXMueWF4aXN9O3MuYXBw ZW5kQXJyYXlQb2ludFZhbHVlKG8scixpKSx0aGlzLmdyYXBoRGl2LmVtaXQoZSx7cG9pbnRz OltvXX0pfSxBLmRyYXc9ZnVuY3Rpb24oKXtpZighdGhpcy5zdG9wcGVkKXtyZXF1ZXN0QW5p bWF0aW9uRnJhbWUodGhpcy5yZWRyYXcpO3ZhciB0PXRoaXMuZ2xwbG90LGU9dGhpcy5jYW1l cmEscj1lLm1vdXNlTGlzdGVuZXIsbj0xPT09dGhpcy5sYXN0QnV0dG9uU3RhdGUmJjA9PT1y LmJ1dHRvbnMsaT10aGlzLmZ1bGxMYXlvdXQ7dGhpcy5sYXN0QnV0dG9uU3RhdGU9ci5idXR0 b25zLHRoaXMuY2FtZXJhQ2hhbmdlZCgpO3ZhciBhLG89ci54KnQucGl4ZWxSYXRpbyxsPXRo aXMuY2FudmFzLmhlaWdodC10LnBpeGVsUmF0aW8qci55O2lmKGUuYm94RW5hYmxlZCYmInpv b20iPT09aS5kcmFnbW9kZSl7dGhpcy5zZWxlY3RCb3guZW5hYmxlZD0hMDtmb3IodmFyIGM9 dGhpcy5zZWxlY3RCb3guc2VsZWN0Qm94PVtNYXRoLm1pbihlLmJveFN0YXJ0WzBdLGUuYm94 RW5kWzBdKSxNYXRoLm1pbihlLmJveFN0YXJ0WzFdLGUuYm94RW5kWzFdKSxNYXRoLm1heChl LmJveFN0YXJ0WzBdLGUuYm94RW5kWzBdKSxNYXRoLm1heChlLmJveFN0YXJ0WzFdLGUuYm94 RW5kWzFdKV0sdT0wO3U8Mjt1KyspZS5ib3hTdGFydFt1XT09PWUuYm94RW5kW3VdJiYoY1t1 XT10LmRhdGFCb3hbdV0sY1t1KzJdPXQuZGF0YUJveFt1KzJdKTt0LnNldERpcnR5KCl9ZWxz ZSBpZighZS5wYW5uaW5nJiZ0aGlzLmlzTW91c2VPdmVyKXt0aGlzLnNlbGVjdEJveC5lbmFi bGVkPSExO3ZhciBmPWkuX3NpemUsaD10aGlzLnhheGlzLmRvbWFpbixwPXRoaXMueWF4aXMu ZG9tYWluLGQ9KGE9dC5waWNrKG8vdC5waXhlbFJhdGlvK2YubCtoWzBdKmYudyxsL3QucGl4 ZWxSYXRpby0oZi50KygxLXBbMV0pKmYuaCkpKSYmYS5vYmplY3QuX3RyYWNlLmhhbmRsZVBp Y2soYSk7aWYoZCYmbiYmdGhpcy5lbWl0UG9pbnRBY3Rpb24oZCwicGxvdGx5X2NsaWNrIiks YSYmInNraXAiIT09YS5vYmplY3QuX3RyYWNlLmhvdmVyaW5mbyYmaS5ob3Zlcm1vZGUmJmQm JighdGhpcy5sYXN0UGlja1Jlc3VsdHx8dGhpcy5sYXN0UGlja1Jlc3VsdC50cmFjZVVpZCE9 PWQudHJhY2UudWlkfHx0aGlzLmxhc3RQaWNrUmVzdWx0LmRhdGFDb29yZFswXSE9PWQuZGF0 YUNvb3JkWzBdfHx0aGlzLmxhc3RQaWNrUmVzdWx0LmRhdGFDb29yZFsxXSE9PWQuZGF0YUNv b3JkWzFdKSl7dmFyIG09ZDt0aGlzLmxhc3RQaWNrUmVzdWx0PXt0cmFjZVVpZDpkLnRyYWNl P2QudHJhY2UudWlkOm51bGwsZGF0YUNvb3JkOmQuZGF0YUNvb3JkLnNsaWNlKCl9LHRoaXMu c3Bpa2VzLnVwZGF0ZSh7Y2VudGVyOmEuZGF0YUNvb3JkfSksbS5zY3JlZW5Db29yZD1bKCh0 LnZpZXdCb3hbMl0tdC52aWV3Qm94WzBdKSooYS5kYXRhQ29vcmRbMF0tdC5kYXRhQm94WzBd KS8odC5kYXRhQm94WzJdLXQuZGF0YUJveFswXSkrdC52aWV3Qm94WzBdKS90LnBpeGVsUmF0 aW8sKHRoaXMuY2FudmFzLmhlaWdodC0odC52aWV3Qm94WzNdLXQudmlld0JveFsxXSkqKGEu ZGF0YUNvb3JkWzFdLXQuZGF0YUJveFsxXSkvKHQuZGF0YUJveFszXS10LmRhdGFCb3hbMV0p LXQudmlld0JveFsxXSkvdC5waXhlbFJhdGlvXSx0aGlzLmVtaXRQb2ludEFjdGlvbihkLCJw bG90bHlfaG92ZXIiKTt2YXIgZz10aGlzLmZ1bGxEYXRhW20udHJhY2UuaW5kZXhdfHx7fSx2 PW0ucG9pbnRJbmRleCx5PXMuY2FzdEhvdmVyaW5mbyhnLGksdik7aWYoeSYmImFsbCIhPT15 KXt2YXIgeD15LnNwbGl0KCIrIik7LTE9PT14LmluZGV4T2YoIngiKSYmKG0udHJhY2VDb29y ZFswXT12b2lkIDApLC0xPT09eC5pbmRleE9mKCJ5IikmJihtLnRyYWNlQ29vcmRbMV09dm9p ZCAwKSwtMT09PXguaW5kZXhPZigieiIpJiYobS50cmFjZUNvb3JkWzJdPXZvaWQgMCksLTE9 PT14LmluZGV4T2YoInRleHQiKSYmKG0udGV4dExhYmVsPXZvaWQgMCksLTE9PT14LmluZGV4 T2YoIm5hbWUiKSYmKG0ubmFtZT12b2lkIDApfXMubG9uZUhvdmVyKHt4Om0uc2NyZWVuQ29v cmRbMF0seTptLnNjcmVlbkNvb3JkWzFdLHhMYWJlbDp0aGlzLmhvdmVyRm9ybWF0dGVyKCJ4 YXhpcyIsbS50cmFjZUNvb3JkWzBdKSx5TGFiZWw6dGhpcy5ob3ZlckZvcm1hdHRlcigieWF4 aXMiLG0udHJhY2VDb29yZFsxXSksekxhYmVsOm0udHJhY2VDb29yZFsyXSx0ZXh0Om0udGV4 dExhYmVsLG5hbWU6bS5uYW1lLGNvbG9yOnMuY2FzdEhvdmVyT3B0aW9uKGcsdiwiYmdjb2xv ciIpfHxtLmNvbG9yLGJvcmRlckNvbG9yOnMuY2FzdEhvdmVyT3B0aW9uKGcsdiwiYm9yZGVy Y29sb3IiKSxmb250RmFtaWx5OnMuY2FzdEhvdmVyT3B0aW9uKGcsdiwiZm9udC5mYW1pbHki KSxmb250U2l6ZTpzLmNhc3RIb3Zlck9wdGlvbihnLHYsImZvbnQuc2l6ZSIpLGZvbnRDb2xv cjpzLmNhc3RIb3Zlck9wdGlvbihnLHYsImZvbnQuY29sb3IiKSxuYW1lTGVuZ3RoOnMuY2Fz dEhvdmVyT3B0aW9uKGcsdiwibmFtZWxlbmd0aCIpLHRleHRBbGlnbjpzLmNhc3RIb3Zlck9w dGlvbihnLHYsImFsaWduIil9LHtjb250YWluZXI6dGhpcy5zdmdDb250YWluZXIsZ2Q6dGhp cy5ncmFwaERpdn0pfX1hfHx0aGlzLnVuaG92ZXIoKSx0LmRyYXcoKX19LEEudW5ob3Zlcj1m dW5jdGlvbigpe3RoaXMubGFzdFBpY2tSZXN1bHQmJih0aGlzLnNwaWtlcy51cGRhdGUoe30p LHRoaXMubGFzdFBpY2tSZXN1bHQ9bnVsbCx0aGlzLmdyYXBoRGl2LmVtaXQoInBsb3RseV91 bmhvdmVyIikscy5sb25lVW5ob3Zlcih0aGlzLnN2Z0NvbnRhaW5lcikpfSxBLmhvdmVyRm9y bWF0dGVyPWZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwIT09ZSl7dmFyIHI9dGhpc1t0XTtyZXR1 cm4gby50aWNrVGV4dChyLHIuYzJsKGUpLCJob3ZlciIpLnRleHR9fX0seyIuLi8uLi8uLi9z dGFja2dsX21vZHVsZXMiOjExMjQsIi4uLy4uL2NvbXBvbmVudHMvZHJhZ2VsZW1lbnQvaGVs cGVycyI6Mzg0LCIuLi8uLi9jb21wb25lbnRzL2Z4Ijo0MDYsIi4uLy4uL2xpYi9zaG93X25v X3dlYmdsX21zZyI6NTI1LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NTU0LCIuLi8u Li9yZWdpc3RyeSI6NjM4LCIuLi9jYXJ0ZXNpYW4vYXV0b3JhbmdlIjo1NTMsIi4uL2NhcnRl c2lhbi9jb25zdGFudHMiOjU2MSwiLi4vY2FydGVzaWFuL2NvbnN0cmFpbnRzIjo1NjIsIi4v Y2FtZXJhIjo1OTQsIi4vY29udmVydCI6NTk1LCJ3ZWJnbC1jb250ZXh0IjozMzF9XSw1OTg6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdF9hcGkv ZWRpdF90eXBlcyIpLm92ZXJyaWRlQWxsLGk9dCgiLi4vLi4vY29tcG9uZW50cy9meC9sYXlv dXRfYXR0cmlidXRlcyIpLGE9dCgiLi9zY2VuZSIpLG89dCgiLi4vZ2V0X2RhdGEiKS5nZXRT dWJwbG90RGF0YSxzPXQoIi4uLy4uL2xpYiIpLGw9dCgiLi4vLi4vY29uc3RhbnRzL3htbG5z X25hbWVzcGFjZXMiKTtyLm5hbWU9ImdsM2QiLHIuYXR0cj0ic2NlbmUiLHIuaWRSb290PSJz Y2VuZSIsci5pZFJlZ2V4PXIuYXR0clJlZ2V4PXMuY291bnRlclJlZ2V4KCJzY2VuZSIpLHIu YXR0cmlidXRlcz10KCIuL2xheW91dC9hdHRyaWJ1dGVzIiksci5sYXlvdXRBdHRyaWJ1dGVz PXQoIi4vbGF5b3V0L2xheW91dF9hdHRyaWJ1dGVzIiksci5iYXNlTGF5b3V0QXR0ck92ZXJy aWRlcz1uKHtob3ZlcmxhYmVsOmkuaG92ZXJsYWJlbH0sInBsb3QiLCJuZXN0ZWQiKSxyLnN1 cHBseUxheW91dERlZmF1bHRzPXQoIi4vbGF5b3V0L2RlZmF1bHRzIiksci5wbG90PWZ1bmN0 aW9uKHQpe2Zvcih2YXIgZT10Ll9mdWxsTGF5b3V0LHI9dC5fZnVsbERhdGEsbj1lLl9zdWJw bG90cy5nbDNkLGk9MDtpPG4ubGVuZ3RoO2krKyl7dmFyIHM9bltpXSxsPW8ociwiZ2wzZCIs cyksYz1lW3NdLHU9Yy5jYW1lcmEsZj1jLl9zY2VuZTtmfHwoZj1uZXcgYSh7aWQ6cyxncmFw aERpdjp0LGNvbnRhaW5lcjp0LnF1ZXJ5U2VsZWN0b3IoIi5nbC1jb250YWluZXIiKSxzdGF0 aWNQbG90OnQuX2NvbnRleHQuc3RhdGljUGxvdCxwbG90R2xQaXhlbFJhdGlvOnQuX2NvbnRl eHQucGxvdEdsUGl4ZWxSYXRpbyxjYW1lcmE6dX0sZSksYy5fc2NlbmU9ZiksZi52aWV3SW5p dGlhbHx8KGYudmlld0luaXRpYWw9e3VwOnt4OnUudXAueCx5OnUudXAueSx6OnUudXAuen0s ZXllOnt4OnUuZXllLngseTp1LmV5ZS55LHo6dS5leWUuen0sY2VudGVyOnt4OnUuY2VudGVy LngseTp1LmNlbnRlci55LHo6dS5jZW50ZXIuen19KSxmLnBsb3QobCxlLHQubGF5b3V0KX19 LHIuY2xlYW49ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBpPW4uX3N1YnBsb3RzLmdsM2R8 fFtdLGE9MDthPGkubGVuZ3RoO2ErKyl7dmFyIG89aVthXTshZVtvXSYmbltvXS5fc2NlbmUm JihuW29dLl9zY2VuZS5kZXN0cm95KCksbi5faW5mb2xheWVyJiZuLl9pbmZvbGF5ZXIuc2Vs ZWN0QWxsKCIuYW5ub3RhdGlvbi0iK28pLnJlbW92ZSgpKX19LHIudG9TVkc9ZnVuY3Rpb24o dCl7Zm9yKHZhciBlPXQuX2Z1bGxMYXlvdXQscj1lLl9zdWJwbG90cy5nbDNkLG49ZS5fc2l6 ZSxpPTA7aTxyLmxlbmd0aDtpKyspe3ZhciBhPWVbcltpXV0sbz1hLmRvbWFpbixzPWEuX3Nj ZW5lLGM9cy50b0ltYWdlKCJwbmciKTtlLl9nbGltYWdlcy5hcHBlbmQoInN2ZzppbWFnZSIp LmF0dHIoe3htbG5zOmwuc3ZnLCJ4bGluazpocmVmIjpjLHg6bi5sK24udypvLnhbMF0seTpu LnQrbi5oKigxLW8ueVsxXSksd2lkdGg6bi53KihvLnhbMV0tby54WzBdKSxoZWlnaHQ6bi5o KihvLnlbMV0tby55WzBdKSxwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJub25lIn0pLHMuZGVzdHJv eSgpfX0sci5jbGVhbklkPWZ1bmN0aW9uKHQpe2lmKHQubWF0Y2goL15zY2VuZVswLTldKiQv KSl7dmFyIGU9dC5zdWJzdHIoNSk7cmV0dXJuIjEiPT09ZSYmKGU9IiIpLCJzY2VuZSIrZX19 LHIudXBkYXRlRng9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuX2Z1bGxMYXlvdXQscj1lLl9z dWJwbG90cy5nbDNkLG49MDtuPHIubGVuZ3RoO24rKyl7ZVtyW25dXS5fc2NlbmUudXBkYXRl RngoZS5kcmFnbW9kZSxlLmhvdmVybW9kZSl9fX0seyIuLi8uLi9jb21wb25lbnRzL2Z4L2xh eW91dF9hdHRyaWJ1dGVzIjo0MDcsIi4uLy4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2Vz Ijo0ODAsIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIjo1MzYs Ii4uL2dldF9kYXRhIjo1OTMsIi4vbGF5b3V0L2F0dHJpYnV0ZXMiOjU5OSwiLi9sYXlvdXQv ZGVmYXVsdHMiOjYwMywiLi9sYXlvdXQvbGF5b3V0X2F0dHJpYnV0ZXMiOjYwNCwiLi9zY2Vu ZSI6NjA4fV0sNTk5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17 c2NlbmU6e3ZhbFR5cGU6InN1YnBsb3RpZCIsZGZsdDoic2NlbmUiLGVkaXRUeXBlOiJjYWxj K2NsZWFyQXhpc1R5cGVzIn19fSx7fV0sNjAwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4uLy4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxpPXQoIi4uLy4uL2Nh cnRlc2lhbi9sYXlvdXRfYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vLi4vbGliL2V4dGVuZCIp LmV4dGVuZEZsYXQsbz10KCIuLi8uLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIikub3ZlcnJp ZGVBbGw7ZS5leHBvcnRzPW8oe3Zpc2libGU6aS52aXNpYmxlLHNob3dzcGlrZXM6e3ZhbFR5 cGU6ImJvb2xlYW4iLGRmbHQ6ITB9LHNwaWtlc2lkZXM6e3ZhbFR5cGU6ImJvb2xlYW4iLGRm bHQ6ITB9LHNwaWtldGhpY2tuZXNzOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6Mn0s c3Bpa2Vjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6bi5kZWZhdWx0TGluZX0sc2hvd2Jh Y2tncm91bmQ6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LGJhY2tncm91bmRjb2xvcjp7 dmFsVHlwZToiY29sb3IiLGRmbHQ6InJnYmEoMjA0LCAyMDQsIDIwNCwgMC41KSJ9LHNob3dh eGVzbGFiZWxzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSxjb2xvcjppLmNvbG9yLGNh dGVnb3J5b3JkZXI6aS5jYXRlZ29yeW9yZGVyLGNhdGVnb3J5YXJyYXk6aS5jYXRlZ29yeWFy cmF5LHRpdGxlOnt0ZXh0OmkudGl0bGUudGV4dCxmb250OmkudGl0bGUuZm9udH0sdHlwZTph KHt9LGkudHlwZSx7dmFsdWVzOlsiLSIsImxpbmVhciIsImxvZyIsImRhdGUiLCJjYXRlZ29y eSJdfSksYXV0b3R5cGVudW1iZXJzOmkuYXV0b3R5cGVudW1iZXJzLGF1dG9yYW5nZTppLmF1 dG9yYW5nZSxyYW5nZW1vZGU6aS5yYW5nZW1vZGUscmFuZ2U6YSh7fSxpLnJhbmdlLHtpdGVt czpbe3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6InBsb3QiLGltcGxpZWRFZGl0czp7Il5hdXRv cmFuZ2UiOiExfX0se3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6InBsb3QiLGltcGxpZWRFZGl0 czp7Il5hdXRvcmFuZ2UiOiExfX1dLGFuaW06ITF9KSx0aWNrbW9kZTppLnRpY2ttb2RlLG50 aWNrczppLm50aWNrcyx0aWNrMDppLnRpY2swLGR0aWNrOmkuZHRpY2ssdGlja3ZhbHM6aS50 aWNrdmFscyx0aWNrdGV4dDppLnRpY2t0ZXh0LHRpY2tzOmkudGlja3MsbWlycm9yOmkubWly cm9yLHRpY2tsZW46aS50aWNrbGVuLHRpY2t3aWR0aDppLnRpY2t3aWR0aCx0aWNrY29sb3I6 aS50aWNrY29sb3Isc2hvd3RpY2tsYWJlbHM6aS5zaG93dGlja2xhYmVscyx0aWNrZm9udDpp LnRpY2tmb250LHRpY2thbmdsZTppLnRpY2thbmdsZSx0aWNrcHJlZml4OmkudGlja3ByZWZp eCxzaG93dGlja3ByZWZpeDppLnNob3d0aWNrcHJlZml4LHRpY2tzdWZmaXg6aS50aWNrc3Vm Zml4LHNob3d0aWNrc3VmZml4Omkuc2hvd3RpY2tzdWZmaXgsc2hvd2V4cG9uZW50Omkuc2hv d2V4cG9uZW50LGV4cG9uZW50Zm9ybWF0OmkuZXhwb25lbnRmb3JtYXQsbWluZXhwb25lbnQ6 aS5taW5leHBvbmVudCxzZXBhcmF0ZXRob3VzYW5kczppLnNlcGFyYXRldGhvdXNhbmRzLHRp Y2tmb3JtYXQ6aS50aWNrZm9ybWF0LHRpY2tmb3JtYXRzdG9wczppLnRpY2tmb3JtYXRzdG9w cyxob3ZlcmZvcm1hdDppLmhvdmVyZm9ybWF0LHNob3dsaW5lOmkuc2hvd2xpbmUsbGluZWNv bG9yOmkubGluZWNvbG9yLGxpbmV3aWR0aDppLmxpbmV3aWR0aCxzaG93Z3JpZDppLnNob3dn cmlkLGdyaWRjb2xvcjphKHt9LGkuZ3JpZGNvbG9yLHtkZmx0OiJyZ2IoMjA0LCAyMDQsIDIw NCkifSksZ3JpZHdpZHRoOmkuZ3JpZHdpZHRoLHplcm9saW5lOmkuemVyb2xpbmUsemVyb2xp bmVjb2xvcjppLnplcm9saW5lY29sb3IsemVyb2xpbmV3aWR0aDppLnplcm9saW5ld2lkdGgs X2RlcHJlY2F0ZWQ6e3RpdGxlOmkuX2RlcHJlY2F0ZWQudGl0bGUsdGl0bGVmb250OmkuX2Rl cHJlY2F0ZWQudGl0bGVmb250fX0sInBsb3QiLCJmcm9tLXJvb3QiKX0seyIuLi8uLi8uLi9j b21wb25lbnRzL2NvbG9yIjozNjYsIi4uLy4uLy4uL2xpYi9leHRlbmQiOjQ5MywiLi4vLi4v Li4vcGxvdF9hcGkvZWRpdF90eXBlcyI6NTM2LCIuLi8uLi9jYXJ0ZXNpYW4vbGF5b3V0X2F0 dHJpYnV0ZXMiOjU2OX1dLDYwMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCJ0aW55Y29sb3IyIikubWl4LGk9dCgiLi4vLi4vLi4vbGliIiksYT10KCIuLi8uLi8u Li9wbG90X2FwaS9wbG90X3RlbXBsYXRlIiksbz10KCIuL2F4aXNfYXR0cmlidXRlcyIpLHM9 dCgiLi4vLi4vY2FydGVzaWFuL3R5cGVfZGVmYXVsdHMiKSxsPXQoIi4uLy4uL2NhcnRlc2lh bi9heGlzX2RlZmF1bHRzIiksYz1bInhheGlzIiwieWF4aXMiLCJ6YXhpcyJdO2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUscil7dmFyIHUsZjtmdW5jdGlvbiBoKHQsZSl7cmV0dXJuIGkuY29l cmNlKHUsZixvLHQsZSl9Zm9yKHZhciBwPTA7cDxjLmxlbmd0aDtwKyspe3ZhciBkPWNbcF07 dT10W2RdfHx7fSwoZj1hLm5ld0NvbnRhaW5lcihlLGQpKS5faWQ9ZFswXStyLnNjZW5lLGYu X25hbWU9ZCxzKHUsZixoLHIpLGwodSxmLGgse2ZvbnQ6ci5mb250LGxldHRlcjpkWzBdLGRh dGE6ci5kYXRhLHNob3dHcmlkOiEwLG5vVGlja3NvbjohMCxub1RpY2tsYWJlbG1vZGU6ITAs bm9UaWNrbGFiZWxzdGVwOiEwLG5vVGlja2xhYmVscG9zaXRpb246ITAsbm9UaWNrbGFiZWxv dmVyZmxvdzohMCxiZ0NvbG9yOnIuYmdDb2xvcixjYWxlbmRhcjpyLmNhbGVuZGFyfSxyLmZ1 bGxMYXlvdXQpLGgoImdyaWRjb2xvciIsbihmLmNvbG9yLHIuYmdDb2xvciwxMzYwMC8xODcp LnRvUmdiU3RyaW5nKCkpLGgoInRpdGxlLnRleHQiLGRbMF0pLGYuc2V0U2NhbGU9aS5ub29w LGgoInNob3dzcGlrZXMiKSYmKGgoInNwaWtlc2lkZXMiKSxoKCJzcGlrZXRoaWNrbmVzcyIp LGgoInNwaWtlY29sb3IiLGYuY29sb3IpKSxoKCJzaG93YXhlc2xhYmVscyIpLGgoInNob3di YWNrZ3JvdW5kIikmJmgoImJhY2tncm91bmRjb2xvciIpfX19LHsiLi4vLi4vLi4vbGliIjo1 MDMsIi4uLy4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjU0MywiLi4vLi4vY2FydGVz aWFuL2F4aXNfZGVmYXVsdHMiOjU1NiwiLi4vLi4vY2FydGVzaWFuL3R5cGVfZGVmYXVsdHMi OjU4MiwiLi9heGlzX2F0dHJpYnV0ZXMiOjYwMCx0aW55Y29sb3IyOjMxMn1dLDYwMjpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi8uLi9saWIvc3RyMnJn YmFycmF5IiksaT10KCIuLi8uLi8uLi9saWIiKSxhPVsieGF4aXMiLCJ5YXhpcyIsInpheGlz Il07ZnVuY3Rpb24gbygpe3RoaXMuYm91bmRzPVtbLTEwLC0xMCwtMTBdLFsxMCwxMCwxMF1d LHRoaXMudGlja3M9W1tdLFtdLFtdXSx0aGlzLnRpY2tFbmFibGU9WyEwLCEwLCEwXSx0aGlz LnRpY2tGb250PVsic2Fucy1zZXJpZiIsInNhbnMtc2VyaWYiLCJzYW5zLXNlcmlmIl0sdGhp cy50aWNrU2l6ZT1bMTIsMTIsMTJdLHRoaXMudGlja0FuZ2xlPVswLDAsMF0sdGhpcy50aWNr Q29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLnRpY2tQYWQ9WzE4 LDE4LDE4XSx0aGlzLmxhYmVscz1bIngiLCJ5IiwieiJdLHRoaXMubGFiZWxFbmFibGU9WyEw LCEwLCEwXSx0aGlzLmxhYmVsRm9udD1bIk9wZW4gU2FucyIsIk9wZW4gU2FucyIsIk9wZW4g U2FucyJdLHRoaXMubGFiZWxTaXplPVsyMCwyMCwyMF0sdGhpcy5sYWJlbENvbG9yPVtbMCww LDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy5sYWJlbFBhZD1bMzAsMzAsMzBdLHRo aXMubGluZUVuYWJsZT1bITAsITAsITBdLHRoaXMubGluZU1pcnJvcj1bITEsITEsITFdLHRo aXMubGluZVdpZHRoPVsxLDEsMV0sdGhpcy5saW5lQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAs MV0sWzAsMCwwLDFdXSx0aGlzLmxpbmVUaWNrRW5hYmxlPVshMCwhMCwhMF0sdGhpcy5saW5l VGlja01pcnJvcj1bITEsITEsITFdLHRoaXMubGluZVRpY2tMZW5ndGg9WzEwLDEwLDEwXSx0 aGlzLmxpbmVUaWNrV2lkdGg9WzEsMSwxXSx0aGlzLmxpbmVUaWNrQ29sb3I9W1swLDAsMCwx XSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlzLmdyaWRFbmFibGU9WyEwLCEwLCEwXSx0aGlz LmdyaWRXaWR0aD1bMSwxLDFdLHRoaXMuZ3JpZENvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFd LFswLDAsMCwxXV0sdGhpcy56ZXJvRW5hYmxlPVshMCwhMCwhMF0sdGhpcy56ZXJvTGluZUNv bG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy56ZXJvTGluZVdpZHRo PVsyLDIsMl0sdGhpcy5iYWNrZ3JvdW5kRW5hYmxlPVshMCwhMCwhMF0sdGhpcy5iYWNrZ3Jv dW5kQ29sb3I9W1suOCwuOCwuOCwuNV0sWy44LC44LC44LC41XSxbLjgsLjgsLjgsLjVdXSx0 aGlzLl9kZWZhdWx0VGlja1BhZD10aGlzLnRpY2tQYWQuc2xpY2UoKSx0aGlzLl9kZWZhdWx0 TGFiZWxQYWQ9dGhpcy5sYWJlbFBhZC5zbGljZSgpLHRoaXMuX2RlZmF1bHRMaW5lVGlja0xl bmd0aD10aGlzLmxpbmVUaWNrTGVuZ3RoLnNsaWNlKCl9by5wcm90b3R5cGUubWVyZ2U9ZnVu Y3Rpb24odCxlKXtmb3IodmFyIHI9MDtyPDM7KytyKXt2YXIgbz1lW2Fbcl1dO28udmlzaWJs ZT8odGhpcy5sYWJlbHNbcl09dC5fbWV0YT9pLnRlbXBsYXRlU3RyaW5nKG8udGl0bGUudGV4 dCx0Ll9tZXRhKTpvLnRpdGxlLnRleHQsImZvbnQiaW4gby50aXRsZSYmKG8udGl0bGUuZm9u dC5jb2xvciYmKHRoaXMubGFiZWxDb2xvcltyXT1uKG8udGl0bGUuZm9udC5jb2xvcikpLG8u dGl0bGUuZm9udC5mYW1pbHkmJih0aGlzLmxhYmVsRm9udFtyXT1vLnRpdGxlLmZvbnQuZmFt aWx5KSxvLnRpdGxlLmZvbnQuc2l6ZSYmKHRoaXMubGFiZWxTaXplW3JdPW8udGl0bGUuZm9u dC5zaXplKSksInNob3dsaW5lImluIG8mJih0aGlzLmxpbmVFbmFibGVbcl09by5zaG93bGlu ZSksImxpbmVjb2xvciJpbiBvJiYodGhpcy5saW5lQ29sb3Jbcl09bihvLmxpbmVjb2xvcikp LCJsaW5ld2lkdGgiaW4gbyYmKHRoaXMubGluZVdpZHRoW3JdPW8ubGluZXdpZHRoKSwic2hv d2dyaWQiaW4gbyYmKHRoaXMuZ3JpZEVuYWJsZVtyXT1vLnNob3dncmlkKSwiZ3JpZGNvbG9y ImluIG8mJih0aGlzLmdyaWRDb2xvcltyXT1uKG8uZ3JpZGNvbG9yKSksImdyaWR3aWR0aCJp biBvJiYodGhpcy5ncmlkV2lkdGhbcl09by5ncmlkd2lkdGgpLCJsb2ciPT09by50eXBlP3Ro aXMuemVyb0VuYWJsZVtyXT0hMToiemVyb2xpbmUiaW4gbyYmKHRoaXMuemVyb0VuYWJsZVty XT1vLnplcm9saW5lKSwiemVyb2xpbmVjb2xvciJpbiBvJiYodGhpcy56ZXJvTGluZUNvbG9y W3JdPW4oby56ZXJvbGluZWNvbG9yKSksInplcm9saW5ld2lkdGgiaW4gbyYmKHRoaXMuemVy b0xpbmVXaWR0aFtyXT1vLnplcm9saW5ld2lkdGgpLCJ0aWNrcyJpbiBvJiZvLnRpY2tzP3Ro aXMubGluZVRpY2tFbmFibGVbcl09ITA6dGhpcy5saW5lVGlja0VuYWJsZVtyXT0hMSwidGlj a2xlbiJpbiBvJiYodGhpcy5saW5lVGlja0xlbmd0aFtyXT10aGlzLl9kZWZhdWx0TGluZVRp Y2tMZW5ndGhbcl09by50aWNrbGVuKSwidGlja2NvbG9yImluIG8mJih0aGlzLmxpbmVUaWNr Q29sb3Jbcl09bihvLnRpY2tjb2xvcikpLCJ0aWNrd2lkdGgiaW4gbyYmKHRoaXMubGluZVRp Y2tXaWR0aFtyXT1vLnRpY2t3aWR0aCksInRpY2thbmdsZSJpbiBvJiYodGhpcy50aWNrQW5n bGVbcl09ImF1dG8iPT09by50aWNrYW5nbGU/LTM2MDA6TWF0aC5QSSotby50aWNrYW5nbGUv MTgwKSwic2hvd3RpY2tsYWJlbHMiaW4gbyYmKHRoaXMudGlja0VuYWJsZVtyXT1vLnNob3d0 aWNrbGFiZWxzKSwidGlja2ZvbnQiaW4gbyYmKG8udGlja2ZvbnQuY29sb3ImJih0aGlzLnRp Y2tDb2xvcltyXT1uKG8udGlja2ZvbnQuY29sb3IpKSxvLnRpY2tmb250LmZhbWlseSYmKHRo aXMudGlja0ZvbnRbcl09by50aWNrZm9udC5mYW1pbHkpLG8udGlja2ZvbnQuc2l6ZSYmKHRo aXMudGlja1NpemVbcl09by50aWNrZm9udC5zaXplKSksIm1pcnJvciJpbiBvPy0xIT09WyJ0 aWNrcyIsImFsbCIsImFsbHRpY2tzIl0uaW5kZXhPZihvLm1pcnJvcik/KHRoaXMubGluZVRp Y2tNaXJyb3Jbcl09ITAsdGhpcy5saW5lTWlycm9yW3JdPSEwKTohMD09PW8ubWlycm9yPyh0 aGlzLmxpbmVUaWNrTWlycm9yW3JdPSExLHRoaXMubGluZU1pcnJvcltyXT0hMCk6KHRoaXMu bGluZVRpY2tNaXJyb3Jbcl09ITEsdGhpcy5saW5lTWlycm9yW3JdPSExKTp0aGlzLmxpbmVN aXJyb3Jbcl09ITEsInNob3diYWNrZ3JvdW5kImluIG8mJiExIT09by5zaG93YmFja2dyb3Vu ZD8odGhpcy5iYWNrZ3JvdW5kRW5hYmxlW3JdPSEwLHRoaXMuYmFja2dyb3VuZENvbG9yW3Jd PW4oby5iYWNrZ3JvdW5kY29sb3IpKTp0aGlzLmJhY2tncm91bmRFbmFibGVbcl09ITEpOih0 aGlzLnRpY2tFbmFibGVbcl09ITEsdGhpcy5sYWJlbEVuYWJsZVtyXT0hMSx0aGlzLmxpbmVF bmFibGVbcl09ITEsdGhpcy5saW5lVGlja0VuYWJsZVtyXT0hMSx0aGlzLmdyaWRFbmFibGVb cl09ITEsdGhpcy56ZXJvRW5hYmxlW3JdPSExLHRoaXMuYmFja2dyb3VuZEVuYWJsZVtyXT0h MSl9fSxlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1uZXcgbztyZXR1cm4gci5tZXJn ZSh0LGUpLHJ9fSx7Ii4uLy4uLy4uL2xpYiI6NTAzLCIuLi8uLi8uLi9saWIvc3RyMnJnYmFy cmF5Ijo1Mjh9XSw2MDM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgi Li4vLi4vLi4vbGliIiksaT10KCIuLi8uLi8uLi9jb21wb25lbnRzL2NvbG9yIiksYT10KCIu Li8uLi8uLi9yZWdpc3RyeSIpLG89dCgiLi4vLi4vc3VicGxvdF9kZWZhdWx0cyIpLHM9dCgi Li9heGlzX2RlZmF1bHRzIiksbD10KCIuL2xheW91dF9hdHRyaWJ1dGVzIiksYz10KCIuLi8u Li9nZXRfZGF0YSIpLmdldFN1YnBsb3REYXRhO2Z1bmN0aW9uIHUodCxlLHIsbil7Zm9yKHZh ciBvPXIoImJnY29sb3IiKSxsPWkuY29tYmluZShvLG4ucGFwZXJfYmdjb2xvciksdT1bInVw IiwiY2VudGVyIiwiZXllIl0sZj0wO2Y8dS5sZW5ndGg7ZisrKXIoImNhbWVyYS4iK3VbZl0r Ii54IikscigiY2FtZXJhLiIrdVtmXSsiLnkiKSxyKCJjYW1lcmEuIit1W2ZdKyIueiIpO3Io ImNhbWVyYS5wcm9qZWN0aW9uLnR5cGUiKTt2YXIgaD0hIXIoImFzcGVjdHJhdGlvLngiKSYm ISFyKCJhc3BlY3RyYXRpby55IikmJiEhcigiYXNwZWN0cmF0aW8ueiIpLHA9cigiYXNwZWN0 bW9kZSIsaD8ibWFudWFsIjoiYXV0byIpO2h8fCh0LmFzcGVjdHJhdGlvPWUuYXNwZWN0cmF0 aW89e3g6MSx5OjEsejoxfSwibWFudWFsIj09PXAmJihlLmFzcGVjdG1vZGU9ImF1dG8iKSx0 LmFzcGVjdG1vZGU9ZS5hc3BlY3Rtb2RlKTt2YXIgZD1jKG4uZnVsbERhdGEsImdsM2QiLG4u aWQpO3ModCxlLHtmb250Om4uZm9udCxzY2VuZTpuLmlkLGRhdGE6ZCxiZ0NvbG9yOmwsY2Fs ZW5kYXI6bi5jYWxlbmRhcixhdXRvdHlwZW51bWJlcnNEZmx0Om4uYXV0b3R5cGVudW1iZXJz RGZsdCxmdWxsTGF5b3V0Om4uZnVsbExheW91dH0pLGEuZ2V0Q29tcG9uZW50TWV0aG9kKCJh bm5vdGF0aW9uczNkIiwiaGFuZGxlRGVmYXVsdHMiKSh0LGUsbik7dmFyIG09bi5nZXREZmx0 RnJvbUxheW91dCgiZHJhZ21vZGUiKTtpZighMSE9PW0mJiFtKWlmKG09Im9yYml0Iix0LmNh bWVyYSYmdC5jYW1lcmEudXApe3ZhciBnPXQuY2FtZXJhLnVwLngsdj10LmNhbWVyYS51cC55 LHk9dC5jYW1lcmEudXAuejswIT09eSYmKGcmJnYmJnk/eS9NYXRoLnNxcnQoZypnK3Yqdit5 KnkpPi45OTkmJihtPSJ0dXJudGFibGUiKTptPSJ0dXJudGFibGUiKX1lbHNlIG09InR1cm50 YWJsZSI7cigiZHJhZ21vZGUiLG0pLHIoImhvdmVybW9kZSIsbi5nZXREZmx0RnJvbUxheW91 dCgiaG92ZXJtb2RlIikpfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGk9ZS5fYmFz ZVBsb3RNb2R1bGVzLmxlbmd0aD4xO28odCxlLHIse3R5cGU6ImdsM2QiLGF0dHJpYnV0ZXM6 bCxoYW5kbGVEZWZhdWx0czp1LGZ1bGxMYXlvdXQ6ZSxmb250OmUuZm9udCxmdWxsRGF0YTpy LGdldERmbHRGcm9tTGF5b3V0OmZ1bmN0aW9uKGUpe2lmKCFpKXJldHVybiBuLnZhbGlkYXRl KHRbZV0sbFtlXSk/dFtlXTp2b2lkIDB9LGF1dG90eXBlbnVtYmVyc0RmbHQ6ZS5hdXRvdHlw ZW51bWJlcnMscGFwZXJfYmdjb2xvcjplLnBhcGVyX2JnY29sb3IsY2FsZW5kYXI6ZS5jYWxl bmRhcn0pfX0seyIuLi8uLi8uLi9jb21wb25lbnRzL2NvbG9yIjozNjYsIi4uLy4uLy4uL2xp YiI6NTAzLCIuLi8uLi8uLi9yZWdpc3RyeSI6NjM4LCIuLi8uLi9nZXRfZGF0YSI6NTkzLCIu Li8uLi9zdWJwbG90X2RlZmF1bHRzIjo2MzIsIi4vYXhpc19kZWZhdWx0cyI6NjAxLCIuL2xh eW91dF9hdHRyaWJ1dGVzIjo2MDR9XSw2MDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiLi9heGlzX2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL2RvbWFpbiIpLmF0 dHJpYnV0ZXMsYT10KCIuLi8uLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxvPXQoIi4u Ly4uLy4uL2xpYiIpLmNvdW50ZXJSZWdleDtmdW5jdGlvbiBzKHQsZSxyKXtyZXR1cm57eDp7 dmFsVHlwZToibnVtYmVyIixkZmx0OnQsZWRpdFR5cGU6ImNhbWVyYSJ9LHk6e3ZhbFR5cGU6 Im51bWJlciIsZGZsdDplLGVkaXRUeXBlOiJjYW1lcmEifSx6Ont2YWxUeXBlOiJudW1iZXIi LGRmbHQ6cixlZGl0VHlwZToiY2FtZXJhIn0sZWRpdFR5cGU6ImNhbWVyYSJ9fWUuZXhwb3J0 cz17X2FycmF5QXR0clJlZ2V4cHM6W28oInNjZW5lIiwiLmFubm90YXRpb25zIiwhMCldLGJn Y29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OiJyZ2JhKDAsMCwwLDApIixlZGl0VHlwZToi cGxvdCJ9LGNhbWVyYTp7dXA6YShzKDAsMCwxKSx7fSksY2VudGVyOmEocygwLDAsMCkse30p LGV5ZTphKHMoMS4yNSwxLjI1LDEuMjUpLHt9KSxwcm9qZWN0aW9uOnt0eXBlOnt2YWxUeXBl OiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJwZXJzcGVjdGl2ZSIsIm9ydGhvZ3JhcGhpYyJdLGRm bHQ6InBlcnNwZWN0aXZlIixlZGl0VHlwZToiY2FsYyJ9LGVkaXRUeXBlOiJjYWxjIn0sZWRp dFR5cGU6ImNhbWVyYSJ9LGRvbWFpbjppKHtuYW1lOiJzY2VuZSIsZWRpdFR5cGU6InBsb3Qi fSksYXNwZWN0bW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiYXV0byIsImN1 YmUiLCJkYXRhIiwibWFudWFsIl0sZGZsdDoiYXV0byIsZWRpdFR5cGU6InBsb3QiLGltcGxp ZWRFZGl0czp7ImFzcGVjdHJhdGlvLngiOnZvaWQgMCwiYXNwZWN0cmF0aW8ueSI6dm9pZCAw LCJhc3BlY3RyYXRpby56Ijp2b2lkIDB9fSxhc3BlY3RyYXRpbzp7eDp7dmFsVHlwZToibnVt YmVyIixtaW46MCxlZGl0VHlwZToicGxvdCIsaW1wbGllZEVkaXRzOnsiXmFzcGVjdG1vZGUi OiJtYW51YWwifX0seTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxlZGl0VHlwZToicGxvdCIs aW1wbGllZEVkaXRzOnsiXmFzcGVjdG1vZGUiOiJtYW51YWwifX0sejp7dmFsVHlwZToibnVt YmVyIixtaW46MCxlZGl0VHlwZToicGxvdCIsaW1wbGllZEVkaXRzOnsiXmFzcGVjdG1vZGUi OiJtYW51YWwifX0sZWRpdFR5cGU6InBsb3QiLGltcGxpZWRFZGl0czp7YXNwZWN0bW9kZToi bWFudWFsIn19LHhheGlzOm4seWF4aXM6bix6YXhpczpuLGRyYWdtb2RlOnt2YWxUeXBlOiJl bnVtZXJhdGVkIix2YWx1ZXM6WyJvcmJpdCIsInR1cm50YWJsZSIsInpvb20iLCJwYW4iLCEx XSxlZGl0VHlwZToicGxvdCJ9LGhvdmVybW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFs dWVzOlsiY2xvc2VzdCIsITFdLGRmbHQ6ImNsb3Nlc3QiLGVkaXRUeXBlOiJtb2RlYmFyIn0s dWlyZXZpc2lvbjp7dmFsVHlwZToiYW55IixlZGl0VHlwZToibm9uZSJ9LGVkaXRUeXBlOiJw bG90IixfZGVwcmVjYXRlZDp7Y2FtZXJhcG9zaXRpb246e3ZhbFR5cGU6ImluZm9fYXJyYXki LGVkaXRUeXBlOiJjYW1lcmEifX19fSx7Ii4uLy4uLy4uL2xpYiI6NTAzLCIuLi8uLi8uLi9s aWIvZXh0ZW5kIjo0OTMsIi4uLy4uL2RvbWFpbiI6NTg0LCIuL2F4aXNfYXR0cmlidXRlcyI6 NjAwfV0sNjA1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4u Ly4uL2xpYi9zdHIycmdiYXJyYXkiKSxpPVsieGF4aXMiLCJ5YXhpcyIsInpheGlzIl07ZnVu Y3Rpb24gYSgpe3RoaXMuZW5hYmxlZD1bITAsITAsITBdLHRoaXMuY29sb3JzPVtbMCwwLDAs MV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy5kcmF3U2lkZXM9WyEwLCEwLCEwXSx0aGlz LmxpbmVXaWR0aD1bMSwxLDFdfWEucHJvdG90eXBlLm1lcmdlPWZ1bmN0aW9uKHQpe2Zvcih2 YXIgZT0wO2U8MzsrK2Upe3ZhciByPXRbaVtlXV07ci52aXNpYmxlPyh0aGlzLmVuYWJsZWRb ZV09ci5zaG93c3Bpa2VzLHRoaXMuY29sb3JzW2VdPW4oci5zcGlrZWNvbG9yKSx0aGlzLmRy YXdTaWRlc1tlXT1yLnNwaWtlc2lkZXMsdGhpcy5saW5lV2lkdGhbZV09ci5zcGlrZXRoaWNr bmVzcyk6KHRoaXMuZW5hYmxlZFtlXT0hMSx0aGlzLmRyYXdTaWRlc1tlXT0hMSl9fSxlLmV4 cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IGE7cmV0dXJuIGUubWVyZ2UodCksZX19LHsi Li4vLi4vLi4vbGliL3N0cjJyZ2JhcnJheSI6NTI4fV0sNjA2OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5heGVzT3B0 aW9ucyxyPXQuZ2xwbG90LmF4ZXNQaXhlbHMscz10LmZ1bGxTY2VuZUxheW91dCxsPVtbXSxb XSxbXV0sYz0wO2M8MzsrK2Mpe3ZhciB1PXNbYVtjXV07aWYodS5fbGVuZ3RoPShyW2NdLmhp LXJbY10ubG8pKnJbY10ucGl4ZWxzUGVyRGF0YVVuaXQvdC5kYXRhU2NhbGVbY10sTWF0aC5h YnModS5fbGVuZ3RoKT09PTEvMHx8aXNOYU4odS5fbGVuZ3RoKSlsW2NdPVtdO2Vsc2V7dS5f aW5wdXRfcmFuZ2U9dS5yYW5nZS5zbGljZSgpLHUucmFuZ2VbMF09cltjXS5sby90LmRhdGFT Y2FsZVtjXSx1LnJhbmdlWzFdPXJbY10uaGkvdC5kYXRhU2NhbGVbY10sdS5fbT0xLyh0LmRh dGFTY2FsZVtjXSpyW2NdLnBpeGVsc1BlckRhdGFVbml0KSx1LnJhbmdlWzBdPT09dS5yYW5n ZVsxXSYmKHUucmFuZ2VbMF0tPTEsdS5yYW5nZVsxXSs9MSk7dmFyIGY9dS50aWNrbW9kZTtp ZigiYXV0byI9PT11LnRpY2ttb2RlKXt1LnRpY2ttb2RlPSJsaW5lYXIiO3ZhciBoPXUubnRp Y2tzfHxpLmNvbnN0cmFpbih1Ll9sZW5ndGgvNDAsNCw5KTtuLmF1dG9UaWNrcyh1LE1hdGgu YWJzKHUucmFuZ2VbMV0tdS5yYW5nZVswXSkvaCl9Zm9yKHZhciBwPW4uY2FsY1RpY2tzKHUs e21zVVRDOiEwfSksZD0wO2Q8cC5sZW5ndGg7KytkKXBbZF0ueD1wW2RdLngqdC5kYXRhU2Nh bGVbY10sImRhdGUiPT09dS50eXBlJiYocFtkXS50ZXh0PXBbZF0udGV4dC5yZXBsYWNlKC9c PGJyXD4vZywiICIpKTtsW2NdPXAsdS50aWNrbW9kZT1mfX1lLnRpY2tzPWw7Zm9yKGM9MDtj PDM7KytjKXtvW2NdPS41Kih0LmdscGxvdC5ib3VuZHNbMF1bY10rdC5nbHBsb3QuYm91bmRz WzFdW2NdKTtmb3IoZD0wO2Q8MjsrK2QpZS5ib3VuZHNbZF1bY109dC5nbHBsb3QuYm91bmRz W2RdW2NdfXQuY29udG91ckxldmVscz1mdW5jdGlvbih0KXtmb3IodmFyIGU9bmV3IEFycmF5 KDMpLHI9MDtyPDM7KytyKXtmb3IodmFyIG49dFtyXSxpPW5ldyBBcnJheShuLmxlbmd0aCks YT0wO2E8bi5sZW5ndGg7KythKWlbYV09blthXS54O2Vbcl09aX1yZXR1cm4gZX0obCl9O3Zh ciBuPXQoIi4uLy4uL2NhcnRlc2lhbi9heGVzIiksaT10KCIuLi8uLi8uLi9saWIiKSxhPVsi eGF4aXMiLCJ5YXhpcyIsInpheGlzIl0sbz1bMCwwLDBdfSx7Ii4uLy4uLy4uL2xpYiI6NTAz LCIuLi8uLi9jYXJ0ZXNpYW4vYXhlcyI6NTU0fV0sNjA3OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxlKXt2YXIgcixuLGk9WzAsMCwwLDBdO2ZvcihyPTA7 cjw0Oysrcilmb3Iobj0wO248NDsrK24paVtuXSs9dFs0KnIrbl0qZVtyXTtyZXR1cm4gaX1l LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbih0LnByb2plY3Rpb24sbih0LnZpZXcs bih0Lm1vZGVsLFtlWzBdLGVbMV0sZVsyXSwxXSkpKX19LHt9XSw2MDg6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG4saSxhPXQoIi4uLy4uLy4uL3N0YWNrZ2xfbW9kdWxl cyIpLmdsX3Bsb3QzZCxvPWEuY3JlYXRlQ2FtZXJhLHM9YS5jcmVhdGVTY2VuZSxsPXQoIndl YmdsLWNvbnRleHQiKSxjPXQoImhhcy1wYXNzaXZlLWV2ZW50cyIpLHU9dCgiLi4vLi4vcmVn aXN0cnkiKSxmPXQoIi4uLy4uL2xpYiIpLGg9Zi5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKSxw PXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksZD10KCIuLi8uLi9jb21wb25lbnRz L2Z4IiksbT10KCIuLi8uLi9saWIvc3RyMnJnYmFycmF5IiksZz10KCIuLi8uLi9saWIvc2hv d19ub193ZWJnbF9tc2ciKSx2PXQoIi4vcHJvamVjdCIpLHk9dCgiLi9sYXlvdXQvY29udmVy dCIpLHg9dCgiLi9sYXlvdXQvc3Bpa2VzIiksYj10KCIuL2xheW91dC90aWNrX21hcmtzIik7 ZnVuY3Rpb24gXyh0LGUpe3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLG49 dC5jb250YWluZXI7dGhpcy5ncmFwaERpdj10LmdyYXBoRGl2O3ZhciBpPWRvY3VtZW50LmNy ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJzdmciKTtpLnN0 eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsaS5zdHlsZS50b3A9aS5zdHlsZS5sZWZ0PSIwcHgi LGkuc3R5bGUud2lkdGg9aS5zdHlsZS5oZWlnaHQ9IjEwMCUiLGkuc3R5bGVbInotaW5kZXgi XT0yMCxpLnN0eWxlWyJwb2ludGVyLWV2ZW50cyJdPSJub25lIixyLmFwcGVuZENoaWxkKGkp LHRoaXMuc3ZnQ29udGFpbmVyPWksci5pZD10LmlkLHIuc3R5bGUucG9zaXRpb249ImFic29s dXRlIixyLnN0eWxlLnRvcD1yLnN0eWxlLmxlZnQ9IjBweCIsci5zdHlsZS53aWR0aD1yLnN0 eWxlLmhlaWdodD0iMTAwJSIsbi5hcHBlbmRDaGlsZChyKSx0aGlzLmZ1bGxMYXlvdXQ9ZSx0 aGlzLmlkPXQuaWR8fCJzY2VuZSIsdGhpcy5mdWxsU2NlbmVMYXlvdXQ9ZVt0aGlzLmlkXSx0 aGlzLnBsb3RBcmdzPVtbXSx7fSx7fV0sdGhpcy5heGVzT3B0aW9ucz15KGUsZVt0aGlzLmlk XSksdGhpcy5zcGlrZU9wdGlvbnM9eChlW3RoaXMuaWRdKSx0aGlzLmNvbnRhaW5lcj1yLHRo aXMuc3RhdGljTW9kZT0hIXQuc3RhdGljUGxvdCx0aGlzLnBpeGVsUmF0aW89dGhpcy5waXhl bFJhdGlvfHx0LnBsb3RHbFBpeGVsUmF0aW98fDIsdGhpcy5kYXRhU2NhbGU9WzEsMSwxXSx0 aGlzLmNvbnRvdXJMZXZlbHM9W1tdLFtdLFtdXSx0aGlzLmNvbnZlcnRBbm5vdGF0aW9ucz11 LmdldENvbXBvbmVudE1ldGhvZCgiYW5ub3RhdGlvbnMzZCIsImNvbnZlcnQiKSx0aGlzLmRy YXdBbm5vdGF0aW9ucz11LmdldENvbXBvbmVudE1ldGhvZCgiYW5ub3RhdGlvbnMzZCIsImRy YXciKSx0aGlzLmluaXRpYWxpemVHTFBsb3QoKX12YXIgdz1fLnByb3RvdHlwZTt3LnByZXBh cmVPcHRpb25zPWZ1bmN0aW9uKCl7dmFyIHQ9e2NhbnZhczp0aGlzLmNhbnZhcyxnbDp0aGlz LmdsLGdsT3B0aW9uczp7cHJlc2VydmVEcmF3aW5nQnVmZmVyOmgscHJlbXVsdGlwbGllZEFs cGhhOiEwLGFudGlhbGlhczohMH0sY29udGFpbmVyOnRoaXMuY29udGFpbmVyLGF4ZXM6dGhp cy5heGVzT3B0aW9ucyxzcGlrZXM6dGhpcy5zcGlrZU9wdGlvbnMscGlja1JhZGl1czoxMCxz bmFwVG9EYXRhOiEwLGF1dG9TY2FsZTohMCxhdXRvQm91bmRzOiExLGNhbWVyYU9iamVjdDp0 aGlzLmNhbWVyYSxwaXhlbFJhdGlvOnRoaXMucGl4ZWxSYXRpb307aWYodGhpcy5zdGF0aWNN b2RlKXtpZighKGl8fChuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLGk9bCh7 Y2FudmFzOm4scHJlc2VydmVEcmF3aW5nQnVmZmVyOiEwLHByZW11bHRpcGxpZWRBbHBoYToh MCxhbnRpYWxpYXM6ITB9KSkpKXRocm93IG5ldyBFcnJvcigiZXJyb3IgY3JlYXRpbmcgc3Rh dGljIGNhbnZhcy9jb250ZXh0IGZvciBpbWFnZSBzZXJ2ZXIiKTt0LmdsPWksdC5jYW52YXM9 bn1yZXR1cm4gdH07dmFyIFQ9ITA7dy50cnlDcmVhdGVQbG90PWZ1bmN0aW9uKCl7dmFyIHQ9 dGhpcy5wcmVwYXJlT3B0aW9ucygpLGU9ITA7dHJ5e3RoaXMuZ2xwbG90PXModCl9Y2F0Y2go cil7aWYodGhpcy5zdGF0aWNNb2RlfHwhVHx8aCllPSExO2Vsc2V7Zi53YXJuKFsid2ViZ2wg c2V0dXAgZmFpbGVkIHBvc3NpYmx5IGR1ZSB0byIsImZhbHNlIHByZXNlcnZlRHJhd2luZ0J1 ZmZlciBjb25maWcuIiwiVGhlIG1vYmlsZS90YWJsZXQgZGV2aWNlIG1heSBub3QgYmUgZGV0 ZWN0ZWQgYnkgaXMtbW9iaWxlIG1vZHVsZS4iLCJFbmFibGluZyBwcmVzZXJ2ZURyYXdpbmdC dWZmZXIgaW4gc2Vjb25kIGF0dGVtcHQgdG8gY3JlYXRlIHdlYmdsIHNjZW5lLi4uIl0uam9p bigiICIpKTt0cnl7aD10LmdsT3B0aW9ucy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI9ITAsdGhp cy5nbHBsb3Q9cyh0KX1jYXRjaChyKXtoPXQuZ2xPcHRpb25zLnByZXNlcnZlRHJhd2luZ0J1 ZmZlcj0hMSxlPSExfX19cmV0dXJuIFQ9ITEsZX0sdy5pbml0aWFsaXplR0xDYW1lcmE9ZnVu Y3Rpb24oKXt2YXIgdD10aGlzLmZ1bGxTY2VuZUxheW91dC5jYW1lcmEsZT0ib3J0aG9ncmFw aGljIj09PXQucHJvamVjdGlvbi50eXBlO3RoaXMuY2FtZXJhPW8odGhpcy5jb250YWluZXIs e2NlbnRlcjpbdC5jZW50ZXIueCx0LmNlbnRlci55LHQuY2VudGVyLnpdLGV5ZTpbdC5leWUu eCx0LmV5ZS55LHQuZXllLnpdLHVwOlt0LnVwLngsdC51cC55LHQudXAuel0sX29ydGhvOmUs em9vbU1pbjouMDEsem9vbU1heDoxMDAsbW9kZToib3JiaXQifSl9LHcuaW5pdGlhbGl6ZUdM UGxvdD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYodC5pbml0aWFsaXplR0xDYW1lcmEoKSwh dC50cnlDcmVhdGVQbG90KCkpcmV0dXJuIGcodCk7dC50cmFjZXM9e30sdC5tYWtlNHRoRGlt ZW5zaW9uKCk7dmFyIGU9dC5ncmFwaERpdixyPWUubGF5b3V0LG49ZnVuY3Rpb24oKXt2YXIg ZT17fTtyZXR1cm4gdC5pc0NhbWVyYUNoYW5nZWQocikmJihlW3QuaWQrIi5jYW1lcmEiXT10 LmdldENhbWVyYSgpKSx0LmlzQXNwZWN0Q2hhbmdlZChyKSYmKGVbdC5pZCsiLmFzcGVjdHJh dGlvIl09dC5nbHBsb3QuZ2V0QXNwZWN0cmF0aW8oKSwibWFudWFsIiE9PXJbdC5pZF0uYXNw ZWN0bW9kZSYmKHQuZnVsbFNjZW5lTGF5b3V0LmFzcGVjdG1vZGU9clt0LmlkXS5hc3BlY3Rt b2RlPWVbdC5pZCsiLmFzcGVjdG1vZGUiXT0ibWFudWFsIikpLGV9LGk9ZnVuY3Rpb24odCl7 aWYoITEhPT10LmZ1bGxTY2VuZUxheW91dC5kcmFnbW9kZSl7dmFyIGU9bigpO3Quc2F2ZUxh eW91dChyKSx0LmdyYXBoRGl2LmVtaXQoInBsb3RseV9yZWxheW91dCIsZSl9fTtyZXR1cm4g dC5nbHBsb3QuY2FudmFzJiYodC5nbHBsb3QuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIm1v dXNldXAiLChmdW5jdGlvbigpe2kodCl9KSksdC5nbHBsb3QuY2FudmFzLmFkZEV2ZW50TGlz dGVuZXIoIndoZWVsIiwoZnVuY3Rpb24ocil7aWYoZS5fY29udGV4dC5fc2Nyb2xsWm9vbS5n bDNkKXtpZih0LmNhbWVyYS5fb3J0aG8pe3ZhciBuPXIuZGVsdGFYPnIuZGVsdGFZPzEuMTox LzEuMSxhPXQuZ2xwbG90LmdldEFzcGVjdHJhdGlvKCk7dC5nbHBsb3Quc2V0QXNwZWN0cmF0 aW8oe3g6biphLngseTpuKmEueSx6Om4qYS56fSl9aSh0KX19KSwhIWMmJntwYXNzaXZlOiEx fSksdC5nbHBsb3QuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsKGZ1bmN0 aW9uKCl7aWYoITEhPT10LmZ1bGxTY2VuZUxheW91dC5kcmFnbW9kZSYmMCE9PXQuY2FtZXJh Lm1vdXNlTGlzdGVuZXIuYnV0dG9ucyl7dmFyIGU9bigpO3QuZ3JhcGhEaXYuZW1pdCgicGxv dGx5X3JlbGF5b3V0aW5nIixlKX19KSksdC5zdGF0aWNNb2RlfHx0LmdscGxvdC5jYW52YXMu YWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIsKGZ1bmN0aW9uKHIpe2UmJmUu ZW1pdCYmZS5lbWl0KCJwbG90bHlfd2ViZ2xjb250ZXh0bG9zdCIse2V2ZW50OnIsbGF5ZXI6 dC5pZH0pfSksITEpKSx0LmdscGxvdC5vbmNvbnRleHRsb3NzPWZ1bmN0aW9uKCl7dC5yZWNv dmVyQ29udGV4dCgpfSx0LmdscGxvdC5vbnJlbmRlcj1mdW5jdGlvbigpe3QucmVuZGVyKCl9 LCEwfSx3LnJlbmRlcj1mdW5jdGlvbigpe3ZhciB0LGU9dGhpcyxyPWUuZ3JhcGhEaXYsbj1l LnN2Z0NvbnRhaW5lcixpPWUuY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3Iu X2Z1bGxMYXlvdXQuX2NhbGNJbnZlcnNlVHJhbnNmb3JtKHIpO3ZhciBhPXIuX2Z1bGxMYXlv dXQuX2ludlNjYWxlWCxvPXIuX2Z1bGxMYXlvdXQuX2ludlNjYWxlWSxzPWkud2lkdGgqYSxs PWkuaGVpZ2h0Km87bi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ2aWV3Qm94IiwiMCAwICIrcysi ICIrbCksbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIscyksbi5zZXRBdHRyaWJ1dGVO UyhudWxsLCJoZWlnaHQiLGwpLGIoZSksZS5nbHBsb3QuYXhlcy51cGRhdGUoZS5heGVzT3B0 aW9ucyk7Zm9yKHZhciBjPU9iamVjdC5rZXlzKGUudHJhY2VzKSx1PW51bGwsaD1lLmdscGxv dC5zZWxlY3Rpb24sbT0wO208Yy5sZW5ndGg7KyttKSJza2lwIiE9PSh0PWUudHJhY2VzW2Nb bV1dKS5kYXRhLmhvdmVyaW5mbyYmdC5oYW5kbGVQaWNrKGgpJiYodT10KSx0LnNldENvbnRv dXJMZXZlbHMmJnQuc2V0Q29udG91ckxldmVscygpO2Z1bmN0aW9uIGcodCxyLG4pe3ZhciBp PWUuZnVsbFNjZW5lTGF5b3V0W3QrImF4aXMiXTtyZXR1cm4ibG9nIiE9PWkudHlwZSYmKHI9 aS5kMmwocikpLHAuaG92ZXJMYWJlbFRleHQoaSxyLG4pfWlmKG51bGwhPT11KXt2YXIgeT12 KGUuZ2xwbG90LmNhbWVyYVBhcmFtcyxoLmRhdGFDb29yZGluYXRlKTt0PXUuZGF0YTt2YXIg eCxfPXIuX2Z1bGxEYXRhW3QuaW5kZXhdLHc9aC5pbmRleCxUPXt4TGFiZWw6ZygieCIsaC50 cmFjZUNvb3JkaW5hdGVbMF0sdC54aG92ZXJmb3JtYXQpLHlMYWJlbDpnKCJ5IixoLnRyYWNl Q29vcmRpbmF0ZVsxXSx0Lnlob3ZlcmZvcm1hdCksekxhYmVsOmcoInoiLGgudHJhY2VDb29y ZGluYXRlWzJdLHQuemhvdmVyZm9ybWF0KX0saz1kLmNhc3RIb3ZlcmluZm8oXyxlLmZ1bGxM YXlvdXQsdyksQT0oa3x8IiIpLnNwbGl0KCIrIiksTT1rJiYiYWxsIj09PWs7Xy5ob3ZlcnRl bXBsYXRlfHxNfHwoLTE9PT1BLmluZGV4T2YoIngiKSYmKFQueExhYmVsPXZvaWQgMCksLTE9 PT1BLmluZGV4T2YoInkiKSYmKFQueUxhYmVsPXZvaWQgMCksLTE9PT1BLmluZGV4T2YoInoi KSYmKFQuekxhYmVsPXZvaWQgMCksLTE9PT1BLmluZGV4T2YoInRleHQiKSYmKGgudGV4dExh YmVsPXZvaWQgMCksLTE9PT1BLmluZGV4T2YoIm5hbWUiKSYmKHUubmFtZT12b2lkIDApKTt2 YXIgUz1bXTsiY29uZSI9PT10LnR5cGV8fCJzdHJlYW10dWJlIj09PXQudHlwZT8oVC51TGFi ZWw9ZygieCIsaC50cmFjZUNvb3JkaW5hdGVbM10sdC51aG92ZXJmb3JtYXQpLChNfHwtMSE9 PUEuaW5kZXhPZigidSIpKSYmUy5wdXNoKCJ1OiAiK1QudUxhYmVsKSxULnZMYWJlbD1nKCJ5 IixoLnRyYWNlQ29vcmRpbmF0ZVs0XSx0LnZob3ZlcmZvcm1hdCksKE18fC0xIT09QS5pbmRl eE9mKCJ2IikpJiZTLnB1c2goInY6ICIrVC52TGFiZWwpLFQud0xhYmVsPWcoInoiLGgudHJh Y2VDb29yZGluYXRlWzVdLHQud2hvdmVyZm9ybWF0KSwoTXx8LTEhPT1BLmluZGV4T2YoInci KSkmJlMucHVzaCgidzogIitULndMYWJlbCksVC5ub3JtTGFiZWw9aC50cmFjZUNvb3JkaW5h dGVbNl0udG9QcmVjaXNpb24oMyksKE18fC0xIT09QS5pbmRleE9mKCJub3JtIikpJiZTLnB1 c2goIm5vcm06ICIrVC5ub3JtTGFiZWwpLCJzdHJlYW10dWJlIj09PXQudHlwZSYmKFQuZGl2 ZXJnZW5jZUxhYmVsPWgudHJhY2VDb29yZGluYXRlWzddLnRvUHJlY2lzaW9uKDMpLChNfHwt MSE9PUEuaW5kZXhPZigiZGl2ZXJnZW5jZSIpKSYmUy5wdXNoKCJkaXZlcmdlbmNlOiAiK1Qu ZGl2ZXJnZW5jZUxhYmVsKSksaC50ZXh0TGFiZWwmJlMucHVzaChoLnRleHRMYWJlbCkseD1T LmpvaW4oIjxicj4iKSk6Imlzb3N1cmZhY2UiPT09dC50eXBlfHwidm9sdW1lIj09PXQudHlw ZT8oVC52YWx1ZUxhYmVsPXAuaG92ZXJMYWJlbFRleHQoZS5fbW9ja0F4aXMsZS5fbW9ja0F4 aXMuZDJsKGgudHJhY2VDb29yZGluYXRlWzNdKSx0LnZhbHVlaG92ZXJmb3JtYXQpLFMucHVz aCgidmFsdWU6ICIrVC52YWx1ZUxhYmVsKSxoLnRleHRMYWJlbCYmUy5wdXNoKGgudGV4dExh YmVsKSx4PVMuam9pbigiPGJyPiIpKTp4PWgudGV4dExhYmVsO3ZhciBFPXt4OmgudHJhY2VD b29yZGluYXRlWzBdLHk6aC50cmFjZUNvb3JkaW5hdGVbMV0sejpoLnRyYWNlQ29vcmRpbmF0 ZVsyXSxkYXRhOl8uX2lucHV0LGZ1bGxEYXRhOl8sY3VydmVOdW1iZXI6Xy5pbmRleCxwb2lu dE51bWJlcjp3fTtkLmFwcGVuZEFycmF5UG9pbnRWYWx1ZShFLF8sdyksdC5fbW9kdWxlLmV2 ZW50RGF0YSYmKEU9Xy5fbW9kdWxlLmV2ZW50RGF0YShFLGgsXyx7fSx3KSk7dmFyIEw9e3Bv aW50czpbRV19O2lmKGUuZnVsbFNjZW5lTGF5b3V0LmhvdmVybW9kZSl7dmFyIEM9W107ZC5s b25lSG92ZXIoe3RyYWNlOl8seDooLjUrLjUqeVswXS95WzNdKSpzLHk6KC41LS41KnlbMV0v eVszXSkqbCx4TGFiZWw6VC54TGFiZWwseUxhYmVsOlQueUxhYmVsLHpMYWJlbDpULnpMYWJl bCx0ZXh0OngsbmFtZTp1Lm5hbWUsY29sb3I6ZC5jYXN0SG92ZXJPcHRpb24oXyx3LCJiZ2Nv bG9yIil8fHUuY29sb3IsYm9yZGVyQ29sb3I6ZC5jYXN0SG92ZXJPcHRpb24oXyx3LCJib3Jk ZXJjb2xvciIpLGZvbnRGYW1pbHk6ZC5jYXN0SG92ZXJPcHRpb24oXyx3LCJmb250LmZhbWls eSIpLGZvbnRTaXplOmQuY2FzdEhvdmVyT3B0aW9uKF8sdywiZm9udC5zaXplIiksZm9udENv bG9yOmQuY2FzdEhvdmVyT3B0aW9uKF8sdywiZm9udC5jb2xvciIpLG5hbWVMZW5ndGg6ZC5j YXN0SG92ZXJPcHRpb24oXyx3LCJuYW1lbGVuZ3RoIiksdGV4dEFsaWduOmQuY2FzdEhvdmVy T3B0aW9uKF8sdywiYWxpZ24iKSxob3ZlcnRlbXBsYXRlOmYuY2FzdE9wdGlvbihfLHcsImhv dmVydGVtcGxhdGUiKSxob3ZlcnRlbXBsYXRlTGFiZWxzOmYuZXh0ZW5kRmxhdCh7fSxFLFQp LGV2ZW50RGF0YTpbRV19LHtjb250YWluZXI6bixnZDpyLGluT3V0X2Jib3g6Q30pLEUuYmJv eD1DWzBdfWguYnV0dG9ucyYmaC5kaXN0YW5jZTw1P3IuZW1pdCgicGxvdGx5X2NsaWNrIixM KTpyLmVtaXQoInBsb3RseV9ob3ZlciIsTCksdGhpcy5vbGRFdmVudERhdGE9TH1lbHNlIGQu bG9uZVVuaG92ZXIobiksdGhpcy5vbGRFdmVudERhdGEmJnIuZW1pdCgicGxvdGx5X3VuaG92 ZXIiLHRoaXMub2xkRXZlbnREYXRhKSx0aGlzLm9sZEV2ZW50RGF0YT12b2lkIDA7ZS5kcmF3 QW5ub3RhdGlvbnMoZSl9LHcucmVjb3ZlckNvbnRleHQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlz O3QuZ2xwbG90LmRpc3Bvc2UoKTt2YXIgZT1mdW5jdGlvbigpe3QuZ2xwbG90LmdsLmlzQ29u dGV4dExvc3QoKT9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZSk6dC5pbml0aWFsaXplR0xQbG90 KCk/dC5wbG90LmFwcGx5KHQsdC5wbG90QXJncyk6Zi5lcnJvcigiQ2F0YXN0cm9waGljIGFu ZCB1bnJlY292ZXJhYmxlIFdlYkdMIGVycm9yLiBDb250ZXh0IGxvc3QuIil9O3JlcXVlc3RB bmltYXRpb25GcmFtZShlKX07dmFyIGs9WyJ4YXhpcyIsInlheGlzIiwiemF4aXMiXTtmdW5j dGlvbiBBKHQsZSxyKXtmb3IodmFyIG49dC5mdWxsU2NlbmVMYXlvdXQsaT0wO2k8MztpKysp e3ZhciBhPWtbaV0sbz1hLmNoYXJBdCgwKSxzPW5bYV0sbD1lW29dLGM9ZVtvKyJjYWxlbmRh ciJdLHU9ZVsiXyIrbysibGVuZ3RoIl07aWYoZi5pc0FycmF5T3JUeXBlZEFycmF5KGwpKWZv cih2YXIgaCxwPTA7cDwodXx8bC5sZW5ndGgpO3ArKylpZihmLmlzQXJyYXlPclR5cGVkQXJy YXkobFtwXSkpZm9yKHZhciBkPTA7ZDxsW3BdLmxlbmd0aDsrK2QpaD1zLmQybChsW3BdW2Rd LDAsYyksIWlzTmFOKGgpJiZpc0Zpbml0ZShoKSYmKHJbMF1baV09TWF0aC5taW4oclswXVtp XSxoKSxyWzFdW2ldPU1hdGgubWF4KHJbMV1baV0saCkpO2Vsc2UgaD1zLmQybChsW3BdLDAs YyksIWlzTmFOKGgpJiZpc0Zpbml0ZShoKSYmKHJbMF1baV09TWF0aC5taW4oclswXVtpXSxo KSxyWzFdW2ldPU1hdGgubWF4KHJbMV1baV0saCkpO2Vsc2UgclswXVtpXT1NYXRoLm1pbihy WzBdW2ldLDApLHJbMV1baV09TWF0aC5tYXgoclsxXVtpXSx1LTEpfX13LnBsb3Q9ZnVuY3Rp b24odCxlLHIpe2lmKHRoaXMucGxvdEFyZ3M9W3QsZSxyXSwhdGhpcy5nbHBsb3QuY29udGV4 dExvc3Qpe3ZhciBuLGksYSxvLHMsbCxjPWVbdGhpcy5pZF0sdT1yW3RoaXMuaWRdO3RoaXMu ZnVsbExheW91dD1lLHRoaXMuZnVsbFNjZW5lTGF5b3V0PWMsdGhpcy5heGVzT3B0aW9ucy5t ZXJnZShlLGMpLHRoaXMuc3Bpa2VPcHRpb25zLm1lcmdlKGMpLHRoaXMuc2V0Vmlld3BvcnQo YyksdGhpcy51cGRhdGVGeChjLmRyYWdtb2RlLGMuaG92ZXJtb2RlKSx0aGlzLmNhbWVyYS5l bmFibGVXaGVlbD10aGlzLmdyYXBoRGl2Ll9jb250ZXh0Ll9zY3JvbGxab29tLmdsM2QsdGhp cy5nbHBsb3Quc2V0Q2xlYXJDb2xvcihtKGMuYmdjb2xvcikpLHRoaXMuc2V0Q29udmVydChz KSx0P0FycmF5LmlzQXJyYXkodCl8fCh0PVt0XSk6dD1bXTt2YXIgZj1bWzEvMCwxLzAsMS8w XSxbLTEvMCwtMS8wLC0xLzBdXTtmb3IoYT0wO2E8dC5sZW5ndGg7KythKSEwPT09KG49dFth XSkudmlzaWJsZSYmMCE9PW4uX2xlbmd0aCYmQSh0aGlzLG4sZik7IWZ1bmN0aW9uKHQsZSl7 Zm9yKHZhciByPXQuZnVsbFNjZW5lTGF5b3V0LG49ci5hbm5vdGF0aW9uc3x8W10saT0wO2k8 MztpKyspZm9yKHZhciBhPWtbaV0sbz1hLmNoYXJBdCgwKSxzPXJbYV0sbD0wO2w8bi5sZW5n dGg7bCsrKXt2YXIgYz1uW2xdO2lmKGMudmlzaWJsZSl7dmFyIHU9cy5yMmwoY1tvXSk7IWlz TmFOKHUpJiZpc0Zpbml0ZSh1KSYmKGVbMF1baV09TWF0aC5taW4oZVswXVtpXSx1KSxlWzFd W2ldPU1hdGgubWF4KGVbMV1baV0sdSkpfX19KHRoaXMsZik7dmFyIGg9WzEsMSwxXTtmb3Io bz0wO288MzsrK28pZlsxXVtvXT09PWZbMF1bb10/aFtvXT0xOmhbb109MS8oZlsxXVtvXS1m WzBdW29dKTtmb3IodGhpcy5kYXRhU2NhbGU9aCx0aGlzLmNvbnZlcnRBbm5vdGF0aW9ucyh0 aGlzKSxhPTA7YTx0Lmxlbmd0aDsrK2EpITA9PT0obj10W2FdKS52aXNpYmxlJiYwIT09bi5f bGVuZ3RoJiYoKGk9dGhpcy50cmFjZXNbbi51aWRdKT9pLmRhdGEudHlwZT09PW4udHlwZT9p LnVwZGF0ZShuKTooaS5kaXNwb3NlKCksaT1uLl9tb2R1bGUucGxvdCh0aGlzLG4pLHRoaXMu dHJhY2VzW24udWlkXT1pKTooaT1uLl9tb2R1bGUucGxvdCh0aGlzLG4pLHRoaXMudHJhY2Vz W24udWlkXT1pKSxpLm5hbWU9bi5uYW1lKTt2YXIgcD1PYmplY3Qua2V5cyh0aGlzLnRyYWNl cyk7dDpmb3IoYT0wO2E8cC5sZW5ndGg7KythKXtmb3Iobz0wO288dC5sZW5ndGg7KytvKWlm KHRbb10udWlkPT09cFthXSYmITA9PT10W29dLnZpc2libGUmJjAhPT10W29dLl9sZW5ndGgp Y29udGludWUgdDsoaT10aGlzLnRyYWNlc1twW2FdXSkuZGlzcG9zZSgpLGRlbGV0ZSB0aGlz LnRyYWNlc1twW2FdXX10aGlzLmdscGxvdC5vYmplY3RzLnNvcnQoKGZ1bmN0aW9uKHQsZSl7 cmV0dXJuIHQuX3RyYWNlLmRhdGEuaW5kZXgtZS5fdHJhY2UuZGF0YS5pbmRleH0pKTt2YXIg ZCxnPVtbMCwwLDBdLFswLDAsMF1dLHY9W10seT17fTtmb3IoYT0wO2E8MzsrK2Epe2lmKChs PShzPWNba1thXV0pLnR5cGUpaW4geT8oeVtsXS5hY2MqPWhbYV0seVtsXS5jb3VudCs9MSk6 eVtsXT17YWNjOmhbYV0sY291bnQ6MX0scy5hdXRvcmFuZ2Upe2dbMF1bYV09MS8wLGdbMV1b YV09LTEvMDt2YXIgeD10aGlzLmdscGxvdC5vYmplY3RzLGI9dGhpcy5mdWxsU2NlbmVMYXlv dXQuYW5ub3RhdGlvbnN8fFtdLF89cy5fbmFtZS5jaGFyQXQoMCk7Zm9yKG89MDtvPHgubGVu Z3RoO28rKyl7dmFyIHc9eFtvXSxUPXcuYm91bmRzLE09dy5fdHJhY2UuZGF0YS5fcGFkfHww OyJFcnJvckJhcnMiPT09dy5jb25zdHJ1Y3Rvci5uYW1lJiZzLl9sb3dlckxvZ0Vycm9yQm91 bmQ/Z1swXVthXT1NYXRoLm1pbihnWzBdW2FdLHMuX2xvd2VyTG9nRXJyb3JCb3VuZCk6Z1sw XVthXT1NYXRoLm1pbihnWzBdW2FdLFRbMF1bYV0vaFthXS1NKSxnWzFdW2FdPU1hdGgubWF4 KGdbMV1bYV0sVFsxXVthXS9oW2FdK00pfWZvcihvPTA7bzxiLmxlbmd0aDtvKyspe3ZhciBT PWJbb107aWYoUy52aXNpYmxlKXt2YXIgRT1zLnIybChTW19dKTtnWzBdW2FdPU1hdGgubWlu KGdbMF1bYV0sRSksZ1sxXVthXT1NYXRoLm1heChnWzFdW2FdLEUpfX1pZigicmFuZ2Vtb2Rl ImluIHMmJiJ0b3plcm8iPT09cy5yYW5nZW1vZGUmJihnWzBdW2FdPU1hdGgubWluKGdbMF1b YV0sMCksZ1sxXVthXT1NYXRoLm1heChnWzFdW2FdLDApKSxnWzBdW2FdPmdbMV1bYV0pZ1sw XVthXT0tMSxnWzFdW2FdPTE7ZWxzZXt2YXIgTD1nWzFdW2FdLWdbMF1bYV07Z1swXVthXS09 TC8zMixnWzFdW2FdKz1MLzMyfWlmKCJyZXZlcnNlZCI9PT1zLmF1dG9yYW5nZSl7dmFyIEM9 Z1swXVthXTtnWzBdW2FdPWdbMV1bYV0sZ1sxXVthXT1DfX1lbHNle3ZhciBQPXMucmFuZ2U7 Z1swXVthXT1zLnIybChQWzBdKSxnWzFdW2FdPXMucjJsKFBbMV0pfWdbMF1bYV09PT1nWzFd W2FdJiYoZ1swXVthXS09MSxnWzFdW2FdKz0xKSx2W2FdPWdbMV1bYV0tZ1swXVthXSx0aGlz LmdscGxvdC5zZXRCb3VuZHMoYSx7bWluOmdbMF1bYV0qaFthXSxtYXg6Z1sxXVthXSpoW2Fd fSl9dmFyIEk9Yy5hc3BlY3Rtb2RlO2lmKCJjdWJlIj09PUkpZD1bMSwxLDFdO2Vsc2UgaWYo Im1hbnVhbCI9PT1JKXt2YXIgTz1jLmFzcGVjdHJhdGlvO2Q9W08ueCxPLnksTy56XX1lbHNl e2lmKCJhdXRvIiE9PUkmJiJkYXRhIiE9PUkpdGhyb3cgbmV3IEVycm9yKCJzY2VuZS5qcyBh c3BlY3RSYXRpbyB3YXMgbm90IG9uZSBvZiB0aGUgZW51bWVyYXRlZCB0eXBlcyIpO3ZhciB6 PVsxLDEsMV07Zm9yKGE9MDthPDM7KythKXt2YXIgRD15W2w9KHM9Y1trW2FdXSkudHlwZV07 elthXT1NYXRoLnBvdyhELmFjYywxL0QuY291bnQpL2hbYV19ZD0iZGF0YSI9PT1JfHxNYXRo Lm1heC5hcHBseShudWxsLHopL01hdGgubWluLmFwcGx5KG51bGwseik8PTQ/ejpbMSwxLDFd fWMuYXNwZWN0cmF0aW8ueD11LmFzcGVjdHJhdGlvLng9ZFswXSxjLmFzcGVjdHJhdGlvLnk9 dS5hc3BlY3RyYXRpby55PWRbMV0sYy5hc3BlY3RyYXRpby56PXUuYXNwZWN0cmF0aW8uej1k WzJdLHRoaXMuZ2xwbG90LnNldEFzcGVjdHJhdGlvKGMuYXNwZWN0cmF0aW8pLHRoaXMudmll d0luaXRpYWwuYXNwZWN0cmF0aW98fCh0aGlzLnZpZXdJbml0aWFsLmFzcGVjdHJhdGlvPXt4 OmMuYXNwZWN0cmF0aW8ueCx5OmMuYXNwZWN0cmF0aW8ueSx6OmMuYXNwZWN0cmF0aW8uen0p LHRoaXMudmlld0luaXRpYWwuYXNwZWN0bW9kZXx8KHRoaXMudmlld0luaXRpYWwuYXNwZWN0 bW9kZT1jLmFzcGVjdG1vZGUpO3ZhciBSPWMuZG9tYWlufHxudWxsLEY9ZS5fc2l6ZXx8bnVs bDtpZihSJiZGKXt2YXIgQj10aGlzLmNvbnRhaW5lci5zdHlsZTtCLnBvc2l0aW9uPSJhYnNv bHV0ZSIsQi5sZWZ0PUYubCtSLnhbMF0qRi53KyJweCIsQi50b3A9Ri50KygxLVIueVsxXSkq Ri5oKyJweCIsQi53aWR0aD1GLncqKFIueFsxXS1SLnhbMF0pKyJweCIsQi5oZWlnaHQ9Ri5o KihSLnlbMV0tUi55WzBdKSsicHgifXRoaXMuZ2xwbG90LnJlZHJhdygpfX0sdy5kZXN0cm95 PWZ1bmN0aW9uKCl7dGhpcy5nbHBsb3QmJih0aGlzLmNhbWVyYS5tb3VzZUxpc3RlbmVyLmVu YWJsZWQ9ITEsdGhpcy5jb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2hlZWwiLHRo aXMuY2FtZXJhLndoZWVsTGlzdGVuZXIpLHRoaXMuY2FtZXJhPW51bGwsdGhpcy5nbHBsb3Qu ZGlzcG9zZSgpLHRoaXMuY29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5j b250YWluZXIpLHRoaXMuZ2xwbG90PW51bGwpfSx3LmdldENhbWVyYT1mdW5jdGlvbigpe3Zh ciB0O3JldHVybiB0aGlzLmNhbWVyYS52aWV3LnJlY2FsY01hdHJpeCh0aGlzLmNhbWVyYS52 aWV3Lmxhc3RUKCkpLHt1cDp7eDoodD10aGlzLmNhbWVyYSkudXBbMF0seTp0LnVwWzFdLHo6 dC51cFsyXX0sY2VudGVyOnt4OnQuY2VudGVyWzBdLHk6dC5jZW50ZXJbMV0sejp0LmNlbnRl clsyXX0sZXllOnt4OnQuZXllWzBdLHk6dC5leWVbMV0sejp0LmV5ZVsyXX0scHJvamVjdGlv bjp7dHlwZTohMD09PXQuX29ydGhvPyJvcnRob2dyYXBoaWMiOiJwZXJzcGVjdGl2ZSJ9fX0s dy5zZXRWaWV3cG9ydD1mdW5jdGlvbih0KXt2YXIgZSxyPXQuY2FtZXJhO3RoaXMuY2FtZXJh Lmxvb2tBdC5hcHBseSh0aGlzLFtbKGU9cikuZXllLngsZS5leWUueSxlLmV5ZS56XSxbZS5j ZW50ZXIueCxlLmNlbnRlci55LGUuY2VudGVyLnpdLFtlLnVwLngsZS51cC55LGUudXAuel1d KSx0aGlzLmdscGxvdC5zZXRBc3BlY3RyYXRpbyh0LmFzcGVjdHJhdGlvKSwib3J0aG9ncmFw aGljIj09PXIucHJvamVjdGlvbi50eXBlIT09dGhpcy5jYW1lcmEuX29ydGhvJiYodGhpcy5n bHBsb3QucmVkcmF3KCksdGhpcy5nbHBsb3QuY2xlYXJSR0JBKCksdGhpcy5nbHBsb3QuZGlz cG9zZSgpLHRoaXMuaW5pdGlhbGl6ZUdMUGxvdCgpKX0sdy5pc0NhbWVyYUNoYW5nZWQ9ZnVu Y3Rpb24odCl7dmFyIGU9dGhpcy5nZXRDYW1lcmEoKSxyPWYubmVzdGVkUHJvcGVydHkodCx0 aGlzLmlkKyIuY2FtZXJhIikuZ2V0KCk7ZnVuY3Rpb24gbih0LGUscixuKXt2YXIgaT1bInVw IiwiY2VudGVyIiwiZXllIl0sYT1bIngiLCJ5IiwieiJdO3JldHVybiBlW2lbcl1dJiZ0W2lb cl1dW2Fbbl1dPT09ZVtpW3JdXVthW25dXX12YXIgaT0hMTtpZih2b2lkIDA9PT1yKWk9ITA7 ZWxzZXtmb3IodmFyIGE9MDthPDM7YSsrKWZvcih2YXIgbz0wO288MztvKyspaWYoIW4oZSxy LGEsbykpe2k9ITA7YnJlYWt9KCFyLnByb2plY3Rpb258fGUucHJvamVjdGlvbiYmZS5wcm9q ZWN0aW9uLnR5cGUhPT1yLnByb2plY3Rpb24udHlwZSkmJihpPSEwKX1yZXR1cm4gaX0sdy5p c0FzcGVjdENoYW5nZWQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nbHBsb3QuZ2V0QXNwZWN0 cmF0aW8oKSxyPWYubmVzdGVkUHJvcGVydHkodCx0aGlzLmlkKyIuYXNwZWN0cmF0aW8iKS5n ZXQoKTtyZXR1cm4gdm9pZCAwPT09cnx8ci54IT09ZS54fHxyLnkhPT1lLnl8fHIueiE9PWUu en0sdy5zYXZlTGF5b3V0PWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpLGEsbyxzPXRoaXMuZnVs bExheW91dCxsPXRoaXMuaXNDYW1lcmFDaGFuZ2VkKHQpLGM9dGhpcy5pc0FzcGVjdENoYW5n ZWQodCksaD1sfHxjO2lmKGgpe3ZhciBwPXt9O2lmKGwmJihlPXRoaXMuZ2V0Q2FtZXJhKCks bj0ocj1mLm5lc3RlZFByb3BlcnR5KHQsdGhpcy5pZCsiLmNhbWVyYSIpKS5nZXQoKSxwW3Ro aXMuaWQrIi5jYW1lcmEiXT1uKSxjJiYoaT10aGlzLmdscGxvdC5nZXRBc3BlY3RyYXRpbygp LG89KGE9Zi5uZXN0ZWRQcm9wZXJ0eSh0LHRoaXMuaWQrIi5hc3BlY3RyYXRpbyIpKS5nZXQo KSxwW3RoaXMuaWQrIi5hc3BlY3RyYXRpbyJdPW8pLHUuY2FsbCgiX3N0b3JlRGlyZWN0R1VJ RWRpdCIsdCxzLl9wcmVHVUkscCksbClyLnNldChlKSxmLm5lc3RlZFByb3BlcnR5KHMsdGhp cy5pZCsiLmNhbWVyYSIpLnNldChlKTtpZihjKWEuc2V0KGkpLGYubmVzdGVkUHJvcGVydHko cyx0aGlzLmlkKyIuYXNwZWN0cmF0aW8iKS5zZXQoaSksdGhpcy5nbHBsb3QucmVkcmF3KCl9 cmV0dXJuIGh9LHcudXBkYXRlRng9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmNhbWVyYTtp ZihyKWlmKCJvcmJpdCI9PT10KXIubW9kZT0ib3JiaXQiLHIua2V5QmluZGluZ01vZGU9InJv dGF0ZSI7ZWxzZSBpZigidHVybnRhYmxlIj09PXQpe3IudXA9WzAsMCwxXSxyLm1vZGU9InR1 cm50YWJsZSIsci5rZXlCaW5kaW5nTW9kZT0icm90YXRlIjt2YXIgbj10aGlzLmdyYXBoRGl2 LGk9bi5fZnVsbExheW91dCxhPXRoaXMuZnVsbFNjZW5lTGF5b3V0LmNhbWVyYSxvPWEudXAu eCxzPWEudXAueSxsPWEudXAuejtpZihsL01hdGguc3FydChvKm8rcypzK2wqbCk8Ljk5OSl7 dmFyIGM9dGhpcy5pZCsiLmNhbWVyYS51cCIsaD17eDowLHk6MCx6OjF9LHA9e307cFtjXT1o O3ZhciBkPW4ubGF5b3V0O3UuY2FsbCgiX3N0b3JlRGlyZWN0R1VJRWRpdCIsZCxpLl9wcmVH VUkscCksYS51cD1oLGYubmVzdGVkUHJvcGVydHkoZCxjKS5zZXQoaCl9fWVsc2Ugci5rZXlC aW5kaW5nTW9kZT10O3RoaXMuZnVsbFNjZW5lTGF5b3V0LmhvdmVybW9kZT1lfSx3LnRvSW1h Z2U9ZnVuY3Rpb24odCl7dHx8KHQ9InBuZyIpLHRoaXMuc3RhdGljTW9kZSYmdGhpcy5jb250 YWluZXIuYXBwZW5kQ2hpbGQobiksdGhpcy5nbHBsb3QucmVkcmF3KCk7dmFyIGU9dGhpcy5n bHBsb3QuZ2wscj1lLmRyYXdpbmdCdWZmZXJXaWR0aCxpPWUuZHJhd2luZ0J1ZmZlckhlaWdo dDtlLmJpbmRGcmFtZWJ1ZmZlcihlLkZSQU1FQlVGRkVSLG51bGwpO3ZhciBhPW5ldyBVaW50 OEFycmF5KHIqaSo0KTtlLnJlYWRQaXhlbHMoMCwwLHIsaSxlLlJHQkEsZS5VTlNJR05FRF9C WVRFLGEpLGZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49MCxpPXItMTtuPGk7KytuLC0taSlm b3IodmFyIGE9MDthPGU7KythKWZvcih2YXIgbz0wO288NDsrK28pe3ZhciBzPTQqKGUqbith KStvLGw9NCooZSppK2EpK28sYz10W3NdO3Rbc109dFtsXSx0W2xdPWN9fShhLHIsaSksZnVu Y3Rpb24odCxlLHIpe2Zvcih2YXIgbj0wO248cjsrK24pZm9yKHZhciBpPTA7aTxlOysraSl7 dmFyIGE9NCooZSpuK2kpLG89dFthKzNdO2lmKG8+MClmb3IodmFyIHM9MjU1L28sbD0wO2w8 MzsrK2wpdFthK2xdPU1hdGgubWluKHMqdFthK2xdLDI1NSl9fShhLHIsaSk7dmFyIG89ZG9j dW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7by53aWR0aD1yLG8uaGVpZ2h0PWk7dmFy IHMsbD1vLmdldENvbnRleHQoIjJkIix7d2lsbFJlYWRGcmVxdWVudGx5OiEwfSksYz1sLmNy ZWF0ZUltYWdlRGF0YShyLGkpO3N3aXRjaChjLmRhdGEuc2V0KGEpLGwucHV0SW1hZ2VEYXRh KGMsMCwwKSx0KXtjYXNlImpwZWciOnM9by50b0RhdGFVUkwoImltYWdlL2pwZWciKTticmVh aztjYXNlIndlYnAiOnM9by50b0RhdGFVUkwoImltYWdlL3dlYnAiKTticmVhaztkZWZhdWx0 OnM9by50b0RhdGFVUkwoImltYWdlL3BuZyIpfXJldHVybiB0aGlzLnN0YXRpY01vZGUmJnRo aXMuY29udGFpbmVyLnJlbW92ZUNoaWxkKG4pLHN9LHcuc2V0Q29udmVydD1mdW5jdGlvbigp e2Zvcih2YXIgdD0wO3Q8Mzt0Kyspe3ZhciBlPXRoaXMuZnVsbFNjZW5lTGF5b3V0W2tbdF1d O3Auc2V0Q29udmVydChlLHRoaXMuZnVsbExheW91dCksZS5zZXRTY2FsZT1mLm5vb3B9fSx3 Lm1ha2U0dGhEaW1lbnNpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdyYXBoRGl2Ll9mdWxs TGF5b3V0O3RoaXMuX21vY2tBeGlzPXt0eXBlOiJsaW5lYXIiLHNob3dleHBvbmVudDoiYWxs IixleHBvbmVudGZvcm1hdDoiQiJ9LHAuc2V0Q29udmVydCh0aGlzLl9tb2NrQXhpcyx0KX0s ZS5leHBvcnRzPV99LHsiLi4vLi4vLi4vc3RhY2tnbF9tb2R1bGVzIjoxMTI0LCIuLi8uLi9j b21wb25lbnRzL2Z4Ijo0MDYsIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9saWIvc2hvd19ub193 ZWJnbF9tc2ciOjUyNSwiLi4vLi4vbGliL3N0cjJyZ2JhcnJheSI6NTI4LCIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4vYXhlcyI6NTU0LCIuLi8uLi9yZWdpc3RyeSI6NjM4LCIuL2xheW91dC9j b252ZXJ0Ijo2MDIsIi4vbGF5b3V0L3NwaWtlcyI6NjA1LCIuL2xheW91dC90aWNrX21hcmtz Ijo2MDYsIi4vcHJvamVjdCI6NjA3LCJoYXMtcGFzc2l2ZS1ldmVudHMiOjIyOSwid2ViZ2wt Y29udGV4dCI6MzMxfV0sNjA5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhw b3J0cz1mdW5jdGlvbih0LGUscixuKXtuPW58fHQubGVuZ3RoO2Zvcih2YXIgaT1uZXcgQXJy YXkobiksYT0wO2E8bjthKyspaVthXT1bdFthXSxlW2FdLHJbYV1dO3JldHVybiBpfX0se31d LDYxMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2ZvbnRfYXR0 cmlidXRlcyIpLGk9dCgiLi9hbmltYXRpb25fYXR0cmlidXRlcyIpLGE9dCgiLi4vY29tcG9u ZW50cy9jb2xvci9hdHRyaWJ1dGVzIiksbz10KCIuLi9jb21wb25lbnRzL3NoYXBlcy9kcmF3 X25ld3NoYXBlL2F0dHJpYnV0ZXMiKSxzPXQoIi4vcGFkX2F0dHJpYnV0ZXMiKSxsPXQoIi4u L2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LGM9bih7ZWRpdFR5cGU6ImNhbGMifSk7Yy5mYW1p bHkuZGZsdD0nIk9wZW4gU2FucyIsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmJyxjLnNp emUuZGZsdD0xMixjLmNvbG9yLmRmbHQ9YS5kZWZhdWx0TGluZSxlLmV4cG9ydHM9e2ZvbnQ6 Yyx0aXRsZTp7dGV4dDp7dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToibGF5b3V0c3R5bGUi fSxmb250Om4oe2VkaXRUeXBlOiJsYXlvdXRzdHlsZSJ9KSx4cmVmOnt2YWxUeXBlOiJlbnVt ZXJhdGVkIixkZmx0OiJjb250YWluZXIiLHZhbHVlczpbImNvbnRhaW5lciIsInBhcGVyIl0s ZWRpdFR5cGU6ImxheW91dHN0eWxlIn0seXJlZjp7dmFsVHlwZToiZW51bWVyYXRlZCIsZGZs dDoiY29udGFpbmVyIix2YWx1ZXM6WyJjb250YWluZXIiLCJwYXBlciJdLGVkaXRUeXBlOiJs YXlvdXRzdHlsZSJ9LHg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDouNSxl ZGl0VHlwZToibGF5b3V0c3R5bGUifSx5Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDox LGRmbHQ6ImF1dG8iLGVkaXRUeXBlOiJsYXlvdXRzdHlsZSJ9LHhhbmNob3I6e3ZhbFR5cGU6 ImVudW1lcmF0ZWQiLGRmbHQ6ImF1dG8iLHZhbHVlczpbImF1dG8iLCJsZWZ0IiwiY2VudGVy IiwicmlnaHQiXSxlZGl0VHlwZToibGF5b3V0c3R5bGUifSx5YW5jaG9yOnt2YWxUeXBlOiJl bnVtZXJhdGVkIixkZmx0OiJhdXRvIix2YWx1ZXM6WyJhdXRvIiwidG9wIiwibWlkZGxlIiwi Ym90dG9tIl0sZWRpdFR5cGU6ImxheW91dHN0eWxlIn0scGFkOmwocyh7ZWRpdFR5cGU6Imxh eW91dHN0eWxlIn0pLHt9KSxlZGl0VHlwZToibGF5b3V0c3R5bGUifSx1bmlmb3JtdGV4dDp7 bW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlshMSwiaGlkZSIsInNob3ciXSxk Zmx0OiExLGVkaXRUeXBlOiJwbG90In0sbWluc2l6ZTp7dmFsVHlwZToibnVtYmVyIixtaW46 MCxkZmx0OjAsZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToicGxvdCJ9LGF1dG9zaXplOnt2 YWxUeXBlOiJib29sZWFuIixkZmx0OiExLGVkaXRUeXBlOiJub25lIn0sd2lkdGg6e3ZhbFR5 cGU6Im51bWJlciIsbWluOjEwLGRmbHQ6NzAwLGVkaXRUeXBlOiJwbG90In0saGVpZ2h0Ont2 YWxUeXBlOiJudW1iZXIiLG1pbjoxMCxkZmx0OjQ1MCxlZGl0VHlwZToicGxvdCJ9LG1hcmdp bjp7bDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjgwLGVkaXRUeXBlOiJwbG90In0s cjp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjgwLGVkaXRUeXBlOiJwbG90In0sdDp7 dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjEwMCxlZGl0VHlwZToicGxvdCJ9LGI6e3Zh bFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDo4MCxlZGl0VHlwZToicGxvdCJ9LHBhZDp7dmFs VHlwZToibnVtYmVyIixtaW46MCxkZmx0OjAsZWRpdFR5cGU6InBsb3QifSxhdXRvZXhwYW5k Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJwbG90In0sZWRpdFR5cGU6 InBsb3QifSxjb21wdXRlZDp7dmFsVHlwZToiYW55IixlZGl0VHlwZToibm9uZSJ9LHBhcGVy X2JnY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmEuYmFja2dyb3VuZCxlZGl0VHlwZToi cGxvdCJ9LHBsb3RfYmdjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6YS5iYWNrZ3JvdW5k LGVkaXRUeXBlOiJsYXlvdXRzdHlsZSJ9LGF1dG90eXBlbnVtYmVyczp7dmFsVHlwZToiZW51 bWVyYXRlZCIsdmFsdWVzOlsiY29udmVydCB0eXBlcyIsInN0cmljdCJdLGRmbHQ6ImNvbnZl cnQgdHlwZXMiLGVkaXRUeXBlOiJjYWxjIn0sc2VwYXJhdG9yczp7dmFsVHlwZToic3RyaW5n IixlZGl0VHlwZToicGxvdCJ9LGhpZGVzb3VyY2VzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0 OiExLGVkaXRUeXBlOiJwbG90In0sc2hvd2xlZ2VuZDp7dmFsVHlwZToiYm9vbGVhbiIsZWRp dFR5cGU6ImxlZ2VuZCJ9LGNvbG9yd2F5Ont2YWxUeXBlOiJjb2xvcmxpc3QiLGRmbHQ6YS5k ZWZhdWx0cyxlZGl0VHlwZToiY2FsYyJ9LGRhdGFyZXZpc2lvbjp7dmFsVHlwZToiYW55Iixl ZGl0VHlwZToiY2FsYyJ9LHVpcmV2aXNpb246e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6Im5v bmUifSxlZGl0cmV2aXNpb246e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6Im5vbmUifSxzZWxl Y3Rpb25yZXZpc2lvbjp7dmFsVHlwZToiYW55IixlZGl0VHlwZToibm9uZSJ9LHRlbXBsYXRl Ont2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJjYWxjIn0sbmV3c2hhcGU6by5uZXdzaGFwZSxh Y3RpdmVzaGFwZTpvLmFjdGl2ZXNoYXBlLG1ldGE6e3ZhbFR5cGU6ImFueSIsYXJyYXlPazoh MCxlZGl0VHlwZToicGxvdCJ9LHRyYW5zaXRpb246bCh7fSxpLnRyYW5zaXRpb24se2VkaXRU eXBlOiJub25lIn0pLF9kZXByZWNhdGVkOnt0aXRsZTp7dmFsVHlwZToic3RyaW5nIixlZGl0 VHlwZToibGF5b3V0c3R5bGUifSx0aXRsZWZvbnQ6bih7ZWRpdFR5cGU6ImxheW91dHN0eWxl In0pfX19LHsiLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIjozNjUsIi4uL2NvbXBv bmVudHMvc2hhcGVzL2RyYXdfbmV3c2hhcGUvYXR0cmlidXRlcyI6NDUxLCIuLi9saWIvZXh0 ZW5kIjo0OTMsIi4vYW5pbWF0aW9uX2F0dHJpYnV0ZXMiOjU0OCwiLi9mb250X2F0dHJpYnV0 ZXMiOjU4NSwiLi9wYWRfYXR0cmlidXRlcyI6NjE4fV0sNjExOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYi9zb3J0X29iamVjdF9rZXlzIiksaT0n XHhhOSA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly93d3cub3BlbnN0cmVldG1h cC5vcmcvY29weXJpZ2h0Ij5PcGVuU3RyZWV0TWFwPC9hPiBjb250cmlidXRvcnMnLGE9Wydc eGE5IDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL2NhcnRvLmNvbS8iPkNhcnRv PC9hPicsaV0uam9pbigiICIpLG89WydNYXAgdGlsZXMgYnkgPGEgdGFyZ2V0PSJfYmxhbmsi IGhyZWY9Imh0dHBzOi8vc3RhbWVuLmNvbSI+U3RhbWVuIERlc2lnbjwvYT4nLCd1bmRlciA8 YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xp Y2Vuc2VzL2J5LzMuMCI+Q0MgQlkgMy4wPC9hPicsInwiLCdEYXRhIGJ5IDxhIHRhcmdldD0i X2JsYW5rIiBocmVmPSJodHRwczovL29wZW5zdHJlZXRtYXAub3JnIj5PcGVuU3RyZWV0TWFw PC9hPiBjb250cmlidXRvcnMnLCd1bmRlciA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0 cHM6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvY29weXJpZ2h0Ij5PRGJMPC9hPiddLmpvaW4o IiAiKSxzPXsib3Blbi1zdHJlZXQtbWFwIjp7aWQ6Im9zbSIsdmVyc2lvbjo4LHNvdXJjZXM6 eyJwbG90bHktb3NtLXRpbGVzIjp7dHlwZToicmFzdGVyIixhdHRyaWJ1dGlvbjppLHRpbGVz OlsiaHR0cHM6Ly9hLnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nIiwi aHR0cHM6Ly9iLnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nIl0sdGls ZVNpemU6MjU2fX0sbGF5ZXJzOlt7aWQ6InBsb3RseS1vc20tdGlsZXMiLHR5cGU6InJhc3Rl ciIsc291cmNlOiJwbG90bHktb3NtLXRpbGVzIixtaW56b29tOjAsbWF4em9vbToyMn1dfSwi d2hpdGUtYmciOntpZDoid2hpdGUtYmciLHZlcnNpb246OCxzb3VyY2VzOnt9LGxheWVyczpb e2lkOiJ3aGl0ZS1iZyIsdHlwZToiYmFja2dyb3VuZCIscGFpbnQ6eyJiYWNrZ3JvdW5kLWNv bG9yIjoiI0ZGRkZGRiJ9LG1pbnpvb206MCxtYXh6b29tOjIyfV19LCJjYXJ0by1wb3NpdHJv biI6e2lkOiJjYXJ0by1wb3NpdHJvbiIsdmVyc2lvbjo4LHNvdXJjZXM6eyJwbG90bHktY2Fy dG8tcG9zaXRyb24iOnt0eXBlOiJyYXN0ZXIiLGF0dHJpYnV0aW9uOmEsdGlsZXM6WyJodHRw czovL2NhcnRvZGItYmFzZW1hcHMtYy5nbG9iYWwuc3NsLmZhc3RseS5uZXQvbGlnaHRfYWxs L3t6fS97eH0ve3l9LnBuZyJdLHRpbGVTaXplOjI1Nn19LGxheWVyczpbe2lkOiJwbG90bHkt Y2FydG8tcG9zaXRyb24iLHR5cGU6InJhc3RlciIsc291cmNlOiJwbG90bHktY2FydG8tcG9z aXRyb24iLG1pbnpvb206MCxtYXh6b29tOjIyfV19LCJjYXJ0by1kYXJrbWF0dGVyIjp7aWQ6 ImNhcnRvLWRhcmttYXR0ZXIiLHZlcnNpb246OCxzb3VyY2VzOnsicGxvdGx5LWNhcnRvLWRh cmttYXR0ZXIiOnt0eXBlOiJyYXN0ZXIiLGF0dHJpYnV0aW9uOmEsdGlsZXM6WyJodHRwczov L2NhcnRvZGItYmFzZW1hcHMtYy5nbG9iYWwuc3NsLmZhc3RseS5uZXQvZGFya19hbGwve3p9 L3t4fS97eX0ucG5nIl0sdGlsZVNpemU6MjU2fX0sbGF5ZXJzOlt7aWQ6InBsb3RseS1jYXJ0 by1kYXJrbWF0dGVyIix0eXBlOiJyYXN0ZXIiLHNvdXJjZToicGxvdGx5LWNhcnRvLWRhcmtt YXR0ZXIiLG1pbnpvb206MCxtYXh6b29tOjIyfV19LCJzdGFtZW4tdGVycmFpbiI6e2lkOiJz dGFtZW4tdGVycmFpbiIsdmVyc2lvbjo4LHNvdXJjZXM6eyJwbG90bHktc3RhbWVuLXRlcnJh aW4iOnt0eXBlOiJyYXN0ZXIiLGF0dHJpYnV0aW9uOm8sdGlsZXM6WyJodHRwczovL3N0YW1l bi10aWxlcy5hLnNzbC5mYXN0bHkubmV0L3RlcnJhaW4ve3p9L3t4fS97eX0ucG5nIl0sdGls ZVNpemU6MjU2fX0sbGF5ZXJzOlt7aWQ6InBsb3RseS1zdGFtZW4tdGVycmFpbiIsdHlwZToi cmFzdGVyIixzb3VyY2U6InBsb3RseS1zdGFtZW4tdGVycmFpbiIsbWluem9vbTowLG1heHpv b206MjJ9XX0sInN0YW1lbi10b25lciI6e2lkOiJzdGFtZW4tdG9uZXIiLHZlcnNpb246OCxz b3VyY2VzOnsicGxvdGx5LXN0YW1lbi10b25lciI6e3R5cGU6InJhc3RlciIsYXR0cmlidXRp b246byx0aWxlczpbImh0dHBzOi8vc3RhbWVuLXRpbGVzLmEuc3NsLmZhc3RseS5uZXQvdG9u ZXIve3p9L3t4fS97eX0ucG5nIl0sdGlsZVNpemU6MjU2fX0sbGF5ZXJzOlt7aWQ6InBsb3Rs eS1zdGFtZW4tdG9uZXIiLHR5cGU6InJhc3RlciIsc291cmNlOiJwbG90bHktc3RhbWVuLXRv bmVyIixtaW56b29tOjAsbWF4em9vbToyMn1dfSwic3RhbWVuLXdhdGVyY29sb3IiOntpZDoi c3RhbWVuLXdhdGVyY29sb3IiLHZlcnNpb246OCxzb3VyY2VzOnsicGxvdGx5LXN0YW1lbi13 YXRlcmNvbG9yIjp7dHlwZToicmFzdGVyIixhdHRyaWJ1dGlvbjpbJ01hcCB0aWxlcyBieSA8 YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly9zdGFtZW4uY29tIj5TdGFtZW4gRGVz aWduPC9hPicsJ3VuZGVyIDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL2NyZWF0 aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvMy4wIj5DQyBCWSAzLjA8L2E+JywifCIsJ0Rh dGEgYnkgPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vb3BlbnN0cmVldG1hcC5v cmciPk9wZW5TdHJlZXRNYXA8L2E+IGNvbnRyaWJ1dG9ycycsJ3VuZGVyIDxhIHRhcmdldD0i X2JsYW5rIiBocmVmPSJodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkt c2EvMy4wIj5DQyBCWSBTQTwvYT4nXS5qb2luKCIgIiksdGlsZXM6WyJodHRwczovL3N0YW1l bi10aWxlcy5hLnNzbC5mYXN0bHkubmV0L3dhdGVyY29sb3Ive3p9L3t4fS97eX0ucG5nIl0s dGlsZVNpemU6MjU2fX0sbGF5ZXJzOlt7aWQ6InBsb3RseS1zdGFtZW4td2F0ZXJjb2xvciIs dHlwZToicmFzdGVyIixzb3VyY2U6InBsb3RseS1zdGFtZW4td2F0ZXJjb2xvciIsbWluem9v bTowLG1heHpvb206MjJ9XX19LGw9bihzKTtlLmV4cG9ydHM9e3JlcXVpcmVkVmVyc2lvbjoi MS4xMC4xIixzdHlsZVVybFByZWZpeDoibWFwYm94Oi8vc3R5bGVzL21hcGJveC8iLHN0eWxl VXJsU3VmZml4OiJ2OSIsc3R5bGVWYWx1ZXNNYXBib3g6WyJiYXNpYyIsInN0cmVldHMiLCJv dXRkb29ycyIsImxpZ2h0IiwiZGFyayIsInNhdGVsbGl0ZSIsInNhdGVsbGl0ZS1zdHJlZXRz Il0sc3R5bGVWYWx1ZURmbHQ6ImJhc2ljIixzdHlsZXNOb25NYXBib3g6cyxzdHlsZVZhbHVl c05vbk1hcGJveDpsLHRyYWNlTGF5ZXJQcmVmaXg6InBsb3RseS10cmFjZS1sYXllci0iLGxh eW91dExheWVyUHJlZml4OiJwbG90bHktbGF5b3V0LWxheWVyLSIsd3JvbmdWZXJzaW9uRXJy b3JNc2c6WyJZb3VyIGN1c3RvbSBwbG90bHkuanMgYnVuZGxlIGlzIG5vdCB1c2luZyB0aGUg Y29ycmVjdCBtYXBib3gtZ2wgdmVyc2lvbiIsIlBsZWFzZSBpbnN0YWxsIG1hcGJveC1nbEAx LjEwLjEuIl0uam9pbigiXG4iKSxub0FjY2Vzc1Rva2VuRXJyb3JNc2c6WyJNaXNzaW5nIE1h cGJveCBhY2Nlc3MgdG9rZW4uIiwiTWFwYm94IHRyYWNlIHR5cGUgcmVxdWlyZSBhIE1hcGJv eCBhY2Nlc3MgdG9rZW4gdG8gYmUgcmVnaXN0ZXJlZC4iLCJGb3IgZXhhbXBsZToiLCIgIFBs b3RseS5uZXdQbG90KGdkLCBkYXRhLCBsYXlvdXQsIHsgbWFwYm94QWNjZXNzVG9rZW46ICdt eS1hY2Nlc3MtdG9rZW4nIH0pOyIsIk1vcmUgaW5mbyBoZXJlOiBodHRwczovL3d3dy5tYXBi b3guY29tL2hlbHAvZGVmaW5lLWFjY2Vzcy10b2tlbi8iXS5qb2luKCJcbiIpLG1pc3NpbmdT dHlsZUVycm9yTXNnOlsiTm8gdmFsaWQgbWFwYm94IHN0eWxlIGZvdW5kLCBwbGVhc2Ugc2V0 IGBtYXBib3guc3R5bGVgIHRvIG9uZSBvZjoiLGwuam9pbigiLCAiKSwib3IgcmVnaXN0ZXIg YSBNYXBib3ggYWNjZXNzIHRva2VuIHRvIHVzZSBhIE1hcGJveC1zZXJ2ZWQgc3R5bGUuIl0u am9pbigiXG4iKSxtdWx0aXBsZVRva2Vuc0Vycm9yTXNnOlsiU2V0IG11bHRpcGxlIG1hcGJv eCBhY2Nlc3MgdG9rZW4gYWNyb3NzIGRpZmZlcmVudCBtYXBib3ggc3VicGxvdCwiLCJ1c2lu ZyBmaXJzdCB0b2tlbiBmb3VuZCBhcyBtYXBib3gtZ2wgZG9lcyBub3QgYWxsb3cgbXVsdGlw bGVhY2Nlc3MgdG9rZW5zIG9uIHRoZSBzYW1lIHBhZ2UuIl0uam9pbigiXG4iKSxtYXBPbkVy cm9yTXNnOiJNYXBib3ggZXJyb3IuIixtYXBib3hMb2dvOntwYXRoMDoibSAxMC41LDEuMjQg YyAtNS4xMSwwIC05LjI1LDQuMTUgLTkuMjUsOS4yNSAwLDUuMSA0LjE1LDkuMjUgOS4yNSw5 LjI1IDUuMSwwIDkuMjUsLTQuMTUgOS4yNSwtOS4yNSAwLC01LjExIC00LjE0LC05LjI1IC05 LjI1LC05LjI1IHogbSA0LjM5LDExLjUzIGMgLTEuOTMsMS45MyAtNC43OCwyLjMxIC02Ljcs Mi4zMSAtMC43LDAgLTEuNDEsLTAuMDUgLTIuMSwtMC4xNiAwLDAgLTEuMDIsLTUuNjQgMi4x NCwtOC44MSAwLjgzLC0wLjgzIDEuOTUsLTEuMjggMy4xMywtMS4yOCAxLjI3LDAgMi40OSww LjUxIDMuMzksMS40MiAxLjg0LDEuODQgMS44OSw0Ljc1IDAuMTQsNi41MiB6IixwYXRoMToi TSAxMC41LC0wLjAxIEMgNC43LC0wLjAxIDAsNC43IDAsMTAuNDkgYyAwLDUuNzkgNC43LDEw LjUgMTAuNSwxMC41IDUuOCwwIDEwLjUsLTQuNyAxMC41LC0xMC41IEMgMjAuOTksNC43IDE2 LjMsLTAuMDEgMTAuNSwtMC4wMSBaIG0gMCwxOS43NSBjIC01LjExLDAgLTkuMjUsLTQuMTUg LTkuMjUsLTkuMjUgMCwtNS4xIDQuMTQsLTkuMjYgOS4yNSwtOS4yNiA1LjExLDAgOS4yNSw0 LjE1IDkuMjUsOS4yNSAwLDUuMTMgLTQuMTQsOS4yNiAtOS4yNSw5LjI2IHoiLHBhdGgyOiJN IDE0Ljc0LDYuMjUgQyAxMi45LDQuNDEgOS45OCw0LjM1IDguMjMsNi4xIDUuMDcsOS4yNyA2 LjA5LDE0LjkxIDYuMDksMTQuOTEgYyAwLDAgNS42NCwxLjAyIDguODEsLTIuMTQgQyAxNi42 NCwxMSAxNi41OSw4LjA5IDE0Ljc0LDYuMjUgWiBtIC0yLjI3LDQuMDkgLTAuOTEsMS44NyAt MC45LC0xLjg3IC0xLjg2LC0wLjkxIDEuODYsLTAuOSAwLjksLTEuODcgMC45MSwxLjg3IDEu ODYsMC45IHoiLHBvbHlnb246IjExLjU2LDEyLjIxIDEwLjY2LDEwLjM0IDguOCw5LjQzIDEw LjY2LDguNTMgMTEuNTYsNi42NiAxMi40Nyw4LjUzIDE0LjMzLDkuNDMgMTIuNDcsMTAuMzQi fSxzdHlsZVJ1bGVzOnttYXA6Im92ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTsi LCJtaXNzaW5nLWNzcyI6ImRpc3BsYXk6bm9uZTsiLGNhbmFyeToiYmFja2dyb3VuZC1jb2xv cjpzYWxtb247IiwiY3RybC1ib3R0b20tbGVmdCI6InBvc2l0aW9uOiBhYnNvbHV0ZTsgcG9p bnRlci1ldmVudHM6IG5vbmU7IHotaW5kZXg6IDI7IGJvdHRvbTogMDsgbGVmdDogMDsiLCJj dHJsLWJvdHRvbS1yaWdodCI6InBvc2l0aW9uOiBhYnNvbHV0ZTsgcG9pbnRlci1ldmVudHM6 IG5vbmU7IHotaW5kZXg6IDI7IHJpZ2h0OiAwOyBib3R0b206IDA7IixjdHJsOiJjbGVhcjog Ym90aDsgcG9pbnRlci1ldmVudHM6IGF1dG87IHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDAp OyIsImN0cmwtYXR0cmliLm1hcGJveGdsLWNvbXBhY3QgLm1hcGJveGdsLWN0cmwtYXR0cmli LWlubmVyIjoiZGlzcGxheTogbm9uZTsiLCJjdHJsLWF0dHJpYi5tYXBib3hnbC1jb21wYWN0 OmhvdmVyIC5tYXBib3hnbC1jdHJsLWF0dHJpYi1pbm5lciI6ImRpc3BsYXk6IGJsb2NrOyBt YXJnaW4tdG9wOjJweCIsImN0cmwtYXR0cmliLm1hcGJveGdsLWNvbXBhY3Q6aG92ZXIiOiJw YWRkaW5nOiAycHggMjRweCAycHggNHB4OyB2aXNpYmlsaXR5OiB2aXNpYmxlOyBtYXJnaW4t dG9wOiA2cHg7IiwiY3RybC1hdHRyaWIubWFwYm94Z2wtY29tcGFjdDo6YWZ0ZXIiOidjb250 ZW50OiAiIjsgY3Vyc29yOiBwb2ludGVyOyBwb3NpdGlvbjogYWJzb2x1dGU7IGJhY2tncm91 bmQtaW1hZ2U6IHVybChcJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2 ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2 ZyIlM0UgJTNDcGF0aCBmaWxsPSIlMjMzMzMzMzMiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0i TTQsMTBhNiw2IDAgMSwwIDEyLDBhNiw2IDAgMSwwIC0xMiwwIE05LDdhMSwxIDAgMSwwIDIs MGExLDEgMCAxLDAgLTIsMCBNOSwxMGExLDEgMCAxLDEgMiwwbDAsM2ExLDEgMCAxLDEgLTIs MCIvJTNFICUzQy9zdmclM0VcJyk7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUs IDI1NSwgMC41KTsgd2lkdGg6IDI0cHg7IGhlaWdodDogMjRweDsgYm94LXNpemluZzogYm9y ZGVyLWJveDsgYm9yZGVyLXJhZGl1czogMTJweDsnLCJjdHJsLWF0dHJpYi5tYXBib3hnbC1j b21wYWN0IjoibWluLWhlaWdodDogMjBweDsgcGFkZGluZzogMDsgbWFyZ2luOiAxMHB4OyBw b3NpdGlvbjogcmVsYXRpdmU7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRp dXM6IDNweCAxMnB4IDEycHggM3B4OyIsImN0cmwtYm90dG9tLXJpZ2h0ID4gLm1hcGJveGds LWN0cmwtYXR0cmliLm1hcGJveGdsLWNvbXBhY3Q6OmFmdGVyIjoiYm90dG9tOiAwOyByaWdo dDogMCIsImN0cmwtYm90dG9tLWxlZnQgPiAubWFwYm94Z2wtY3RybC1hdHRyaWIubWFwYm94 Z2wtY29tcGFjdDo6YWZ0ZXIiOiJib3R0b206IDA7IGxlZnQ6IDAiLCJjdHJsLWJvdHRvbS1s ZWZ0IC5tYXBib3hnbC1jdHJsIjoibWFyZ2luOiAwIDAgMTBweCAxMHB4OyBmbG9hdDogbGVm dDsiLCJjdHJsLWJvdHRvbS1yaWdodCAubWFwYm94Z2wtY3RybCI6Im1hcmdpbjogMCAxMHB4 IDEwcHggMDsgZmxvYXQ6IHJpZ2h0OyIsImN0cmwtYXR0cmliIjoiY29sb3I6IHJnYmEoMCwg MCwgMCwgMC43NSk7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZm9udC1zaXplOiAxMnB4Iiwi Y3RybC1hdHRyaWIgYSI6ImNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNzUpOyB0ZXh0LWRlY29y YXRpb246IG5vbmU7IGZvbnQtc2l6ZTogMTJweCIsImN0cmwtYXR0cmliIGE6aG92ZXIiOiJj b2xvcjogaW5oZXJpdDsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IiwiY3RybC1hdHRy aWIgLm1hcGJveC1pbXByb3ZlLW1hcCI6ImZvbnQtd2VpZ2h0OiBib2xkOyBtYXJnaW4tbGVm dDogMnB4OyIsImF0dHJpYi1lbXB0eSI6ImRpc3BsYXk6IG5vbmU7IiwiY3RybC1sb2dvIjon ZGlzcGxheTpibG9jazsgd2lkdGg6IDIxcHg7IGhlaWdodDogMjFweDsgYmFja2dyb3VuZC1p bWFnZTogdXJsKFwnZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDP3htbCB2 ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/JTNFICUzQ3N2ZyB2ZXJzaW9uPSIxLjEi IGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIg dmlld0JveD0iMCAwIDIxIDIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAy MSAyMTsiIHhtbDpzcGFjZT0icHJlc2VydmUiJTNFJTNDZyB0cmFuc2Zvcm09InRyYW5zbGF0 ZSgwLDAuMDEpIiUzRSUzQ3BhdGggZD0ibSAxMC41LDEuMjQgYyAtNS4xMSwwIC05LjI1LDQu MTUgLTkuMjUsOS4yNSAwLDUuMSA0LjE1LDkuMjUgOS4yNSw5LjI1IDUuMSwwIDkuMjUsLTQu MTUgOS4yNSwtOS4yNSAwLC01LjExIC00LjE0LC05LjI1IC05LjI1LC05LjI1IHogbSA0LjM5 LDExLjUzIGMgLTEuOTMsMS45MyAtNC43OCwyLjMxIC02LjcsMi4zMSAtMC43LDAgLTEuNDEs LTAuMDUgLTIuMSwtMC4xNiAwLDAgLTEuMDIsLTUuNjQgMi4xNCwtOC44MSAwLjgzLC0wLjgz IDEuOTUsLTEuMjggMy4xMywtMS4yOCAxLjI3LDAgMi40OSwwLjUxIDMuMzksMS40MiAxLjg0 LDEuODQgMS44OSw0Ljc1IDAuMTQsNi41MiB6IiBzdHlsZT0ib3BhY2l0eTowLjk7ZmlsbDol MjNmZmZmZmY7ZW5hYmxlLWJhY2tncm91bmQ6bmV3IiBjbGFzcz0ic3QwIi8lM0UlM0NwYXRo IGQ9Ik0gMTAuNSwtMC4wMSBDIDQuNywtMC4wMSAwLDQuNyAwLDEwLjQ5IGMgMCw1Ljc5IDQu NywxMC41IDEwLjUsMTAuNSA1LjgsMCAxMC41LC00LjcgMTAuNSwtMTAuNSBDIDIwLjk5LDQu NyAxNi4zLC0wLjAxIDEwLjUsLTAuMDEgWiBtIDAsMTkuNzUgYyAtNS4xMSwwIC05LjI1LC00 LjE1IC05LjI1LC05LjI1IDAsLTUuMSA0LjE0LC05LjI2IDkuMjUsLTkuMjYgNS4xMSwwIDku MjUsNC4xNSA5LjI1LDkuMjUgMCw1LjEzIC00LjE0LDkuMjYgLTkuMjUsOS4yNiB6IiBzdHls ZT0ib3BhY2l0eTowLjM1O2VuYWJsZS1iYWNrZ3JvdW5kOm5ldyIgY2xhc3M9InN0MSIvJTNF JTNDcGF0aCBkPSJNIDE0Ljc0LDYuMjUgQyAxMi45LDQuNDEgOS45OCw0LjM1IDguMjMsNi4x IDUuMDcsOS4yNyA2LjA5LDE0LjkxIDYuMDksMTQuOTEgYyAwLDAgNS42NCwxLjAyIDguODEs LTIuMTQgQyAxNi42NCwxMSAxNi41OSw4LjA5IDE0Ljc0LDYuMjUgWiBtIC0yLjI3LDQuMDkg LTAuOTEsMS44NyAtMC45LC0xLjg3IC0xLjg2LC0wLjkxIDEuODYsLTAuOSAwLjksLTEuODcg MC45MSwxLjg3IDEuODYsMC45IHoiIHN0eWxlPSJvcGFjaXR5OjAuMzU7ZW5hYmxlLWJhY2tn cm91bmQ6bmV3IiBjbGFzcz0ic3QxIi8lM0UlM0Nwb2x5Z29uIHBvaW50cz0iMTEuNTYsMTIu MjEgMTAuNjYsMTAuMzQgOC44LDkuNDMgMTAuNjYsOC41MyAxMS41Niw2LjY2IDEyLjQ3LDgu NTMgMTQuMzMsOS40MyAxMi40NywxMC4zNCAiIHN0eWxlPSJvcGFjaXR5OjAuOTtmaWxsOiUy M2ZmZmZmZjtlbmFibGUtYmFja2dyb3VuZDpuZXciIGNsYXNzPSJzdDAiLyUzRSUzQy9nJTNF JTNDL3N2ZyUzRVwnKSd9fX0seyIuLi8uLi9saWIvc29ydF9vYmplY3Rfa2V5cyI6NTI2fV0s NjEyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIp O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQuc3BsaXQoIiAiKSxpPXJbMF0sYT1y WzFdLG89bi5pc0FycmF5T3JUeXBlZEFycmF5KGUpP24ubWVhbihlKTplLHM9LjUrby8xMDAs bD0xLjUrby8xMDAsYz1bIiIsIiJdLHU9WzAsMF07c3dpdGNoKGkpe2Nhc2UidG9wIjpjWzBd PSJ0b3AiLHVbMV09LWw7YnJlYWs7Y2FzZSJib3R0b20iOmNbMF09ImJvdHRvbSIsdVsxXT1s fXN3aXRjaChhKXtjYXNlImxlZnQiOmNbMV09InJpZ2h0Iix1WzBdPS1zO2JyZWFrO2Nhc2Ui cmlnaHQiOmNbMV09ImxlZnQiLHVbMF09c31yZXR1cm57YW5jaG9yOmNbMF0mJmNbMV0/Yy5q b2luKCItIik6Y1swXT9jWzBdOmNbMV0/Y1sxXToiY2VudGVyIixvZmZzZXQ6dX19fSx7Ii4u Ly4uL2xpYiI6NTAzfV0sNjEzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIm1hcGJveC1nbC9kaXN0L21hcGJveC1nbC11bm1pbmlmaWVkIiksaT10KCIuLi8uLi9s aWIiKSxhPWkuc3RyVHJhbnNsYXRlLG89aS5zdHJTY2FsZSxzPXQoIi4uLy4uL3Bsb3RzL2dl dF9kYXRhIikuZ2V0U3VicGxvdENhbGNEYXRhLGw9dCgiLi4vLi4vY29uc3RhbnRzL3htbG5z X25hbWVzcGFjZXMiKSxjPXQoIkBwbG90bHkvZDMiKSx1PXQoIi4uLy4uL2NvbXBvbmVudHMv ZHJhd2luZyIpLGY9dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIiksaD10KCIuL21hcGJv eCIpLHA9ci5jb25zdGFudHM9dCgiLi9jb25zdGFudHMiKTtmdW5jdGlvbiBkKHQpe3JldHVy biJzdHJpbmciPT10eXBlb2YgdCYmKC0xIT09cC5zdHlsZVZhbHVlc01hcGJveC5pbmRleE9m KHQpfHwwPT09dC5pbmRleE9mKCJtYXBib3g6Ly8iKSl9ci5uYW1lPSJtYXBib3giLHIuYXR0 cj0ic3VicGxvdCIsci5pZFJvb3Q9Im1hcGJveCIsci5pZFJlZ2V4PXIuYXR0clJlZ2V4PWku Y291bnRlclJlZ2V4KCJtYXBib3giKSxyLmF0dHJpYnV0ZXM9e3N1YnBsb3Q6e3ZhbFR5cGU6 InN1YnBsb3RpZCIsZGZsdDoibWFwYm94IixlZGl0VHlwZToiY2FsYyJ9fSxyLmxheW91dEF0 dHJpYnV0ZXM9dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpLHIuc3VwcGx5TGF5b3V0RGVmYXVs dHM9dCgiLi9sYXlvdXRfZGVmYXVsdHMiKSxyLnBsb3Q9ZnVuY3Rpb24odCl7dmFyIGU9dC5f ZnVsbExheW91dCxyPXQuY2FsY2RhdGEsYT1lLl9zdWJwbG90cy5tYXBib3g7aWYobi52ZXJz aW9uIT09cC5yZXF1aXJlZFZlcnNpb24pdGhyb3cgbmV3IEVycm9yKHAud3JvbmdWZXJzaW9u RXJyb3JNc2cpO3ZhciBvPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5fZnVsbExheW91dDtpZigi Ij09PXQuX2NvbnRleHQubWFwYm94QWNjZXNzVG9rZW4pcmV0dXJuIiI7Zm9yKHZhciBuPVtd LGE9W10sbz0hMSxzPSExLGw9MDtsPGUubGVuZ3RoO2wrKyl7dmFyIGM9cltlW2xdXSx1PWMu YWNjZXNzdG9rZW47ZChjLnN0eWxlKSYmKHU/aS5wdXNoVW5pcXVlKG4sdSk6KGQoYy5faW5w dXQuc3R5bGUpJiYoaS5lcnJvcigiVXNlcyBNYXBib3ggbWFwIHN0eWxlLCBidXQgZGlkIG5v dCBzZXQgYW4gYWNjZXNzIHRva2VuLiIpLG89ITApLHM9ITApKSx1JiZpLnB1c2hVbmlxdWUo YSx1KX1pZihzKXt2YXIgZj1vP3Aubm9BY2Nlc3NUb2tlbkVycm9yTXNnOnAubWlzc2luZ1N0 eWxlRXJyb3JNc2c7dGhyb3cgaS5lcnJvcihmKSxuZXcgRXJyb3IoZil9cmV0dXJuIG4ubGVu Z3RoPyhuLmxlbmd0aD4xJiZpLndhcm4ocC5tdWx0aXBsZVRva2Vuc0Vycm9yTXNnKSxuWzBd KTooYS5sZW5ndGgmJmkubG9nKFsiTGlzdGVkIG1hcGJveCBhY2Nlc3MgdG9rZW4ocykiLGEu am9pbigiLCIpLCJidXQgZGlkIG5vdCB1c2UgYSBNYXBib3ggbWFwIHN0eWxlLCBpZ25vcmlu ZyB0b2tlbihzKS4iXS5qb2luKCIgIikpLCIiKX0odCxhKTtuLmFjY2Vzc1Rva2VuPW87Zm9y KHZhciBsPTA7bDxhLmxlbmd0aDtsKyspe3ZhciBjPWFbbF0sdT1zKHIsIm1hcGJveCIsYyks Zj1lW2NdLG09Zi5fc3VicGxvdDttfHwobT1uZXcgaCh0LGMpLGVbY10uX3N1YnBsb3Q9bSks bS52aWV3SW5pdGlhbHx8KG0udmlld0luaXRpYWw9e2NlbnRlcjppLmV4dGVuZEZsYXQoe30s Zi5jZW50ZXIpLHpvb206Zi56b29tLGJlYXJpbmc6Zi5iZWFyaW5nLHBpdGNoOmYucGl0Y2h9 KSxtLnBsb3QodSxlLHQuX3Byb21pc2VzKX19LHIuY2xlYW49ZnVuY3Rpb24odCxlLHIsbil7 Zm9yKHZhciBpPW4uX3N1YnBsb3RzLm1hcGJveHx8W10sYT0wO2E8aS5sZW5ndGg7YSsrKXt2 YXIgbz1pW2FdOyFlW29dJiZuW29dLl9zdWJwbG90JiZuW29dLl9zdWJwbG90LmRlc3Ryb3ko KX19LHIudG9TVkc9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuX2Z1bGxMYXlvdXQscj1lLl9z dWJwbG90cy5tYXBib3gsbj1lLl9zaXplLGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIHM9ZVty W2ldXSxoPXMuZG9tYWluLGQ9cy5fc3VicGxvdC50b0ltYWdlKCJwbmciKTtlLl9nbGltYWdl cy5hcHBlbmQoInN2ZzppbWFnZSIpLmF0dHIoe3htbG5zOmwuc3ZnLCJ4bGluazpocmVmIjpk LHg6bi5sK24udypoLnhbMF0seTpuLnQrbi5oKigxLWgueVsxXSksd2lkdGg6bi53KihoLnhb MV0taC54WzBdKSxoZWlnaHQ6bi5oKihoLnlbMV0taC55WzBdKSxwcmVzZXJ2ZUFzcGVjdFJh dGlvOiJub25lIn0pO3ZhciBtPWMuc2VsZWN0KHMuX3N1YnBsb3QuZGl2KTtpZighKG51bGw9 PT1tLnNlbGVjdCgiLm1hcGJveGdsLWN0cmwtbG9nbyIpLm5vZGUoKS5vZmZzZXRQYXJlbnQp KXt2YXIgZz1lLl9nbGltYWdlcy5hcHBlbmQoImciKTtnLmF0dHIoInRyYW5zZm9ybSIsYShu Lmwrbi53KmgueFswXSsxMCxuLnQrbi5oKigxLWgueVswXSktMzEpKSxnLmFwcGVuZCgicGF0 aCIpLmF0dHIoImQiLHAubWFwYm94TG9nby5wYXRoMCkuc3R5bGUoe29wYWNpdHk6LjksZmls bDoiI2ZmZmZmZiIsImVuYWJsZS1iYWNrZ3JvdW5kIjoibmV3In0pLGcuYXBwZW5kKCJwYXRo IikuYXR0cigiZCIscC5tYXBib3hMb2dvLnBhdGgxKS5zdHlsZSgib3BhY2l0eSIsLjM1KS5z dHlsZSgiZW5hYmxlLWJhY2tncm91bmQiLCJuZXciKSxnLmFwcGVuZCgicGF0aCIpLmF0dHIo ImQiLHAubWFwYm94TG9nby5wYXRoMikuc3R5bGUoIm9wYWNpdHkiLC4zNSkuc3R5bGUoImVu YWJsZS1iYWNrZ3JvdW5kIiwibmV3IiksZy5hcHBlbmQoInBvbHlnb24iKS5hdHRyKCJwb2lu dHMiLHAubWFwYm94TG9nby5wb2x5Z29uKS5zdHlsZSh7b3BhY2l0eTouOSxmaWxsOiIjZmZm ZmZmIiwiZW5hYmxlLWJhY2tncm91bmQiOiJuZXcifSl9dmFyIHY9bS5zZWxlY3QoIi5tYXBi b3hnbC1jdHJsLWF0dHJpYiIpLnRleHQoKS5yZXBsYWNlKCJJbXByb3ZlIHRoaXMgbWFwIiwi IikseT1lLl9nbGltYWdlcy5hcHBlbmQoImciKSx4PXkuYXBwZW5kKCJ0ZXh0Iik7eC50ZXh0 KHYpLmNsYXNzZWQoInN0YXRpYy1hdHRyaWJ1dGlvbiIsITApLmF0dHIoeyJmb250LXNpemUi OjEyLCJmb250LWZhbWlseSI6IkFyaWFsIixjb2xvcjoicmdiYSgwLCAwLCAwLCAwLjc1KSIs InRleHQtYW5jaG9yIjoiZW5kIiwiZGF0YS11bmZvcm1hdHRlZCI6dn0pO3ZhciBiPXUuYkJv eCh4Lm5vZGUoKSksXz1uLncqKGgueFsxXS1oLnhbMF0pO2lmKGIud2lkdGg+Xy8yKXt2YXIg dz12LnNwbGl0KCJ8Iikuam9pbigiPGJyPiIpO3gudGV4dCh3KS5hdHRyKCJkYXRhLXVuZm9y bWF0dGVkIix3KS5jYWxsKGYuY29udmVydFRvVHNwYW5zLHQpLGI9dS5iQm94KHgubm9kZSgp KX14LmF0dHIoInRyYW5zZm9ybSIsYSgtMyw4LWIuaGVpZ2h0KSkseS5pbnNlcnQoInJlY3Qi LCIuc3RhdGljLWF0dHJpYnV0aW9uIikuYXR0cih7eDotYi53aWR0aC02LHk6LWIuaGVpZ2h0 LTMsd2lkdGg6Yi53aWR0aCs2LGhlaWdodDpiLmhlaWdodCszLGZpbGw6InJnYmEoMjU1LCAy NTUsIDI1NSwgMC43NSkifSk7dmFyIFQ9MTtiLndpZHRoKzY+XyYmKFQ9Xy8oYi53aWR0aCs2 KSk7dmFyIGs9W24ubCtuLncqaC54WzFdLG4udCtuLmgqKDEtaC55WzBdKV07eS5hdHRyKCJ0 cmFuc2Zvcm0iLGEoa1swXSxrWzFdKStvKFQpKX19LHIudXBkYXRlRng9ZnVuY3Rpb24odCl7 Zm9yKHZhciBlPXQuX2Z1bGxMYXlvdXQscj1lLl9zdWJwbG90cy5tYXBib3gsbj0wO248ci5s ZW5ndGg7bisrKXtlW3Jbbl1dLl9zdWJwbG90LnVwZGF0ZUZ4KGUpfX19LHsiLi4vLi4vY29t cG9uZW50cy9kcmF3aW5nIjozODgsIi4uLy4uL2NvbnN0YW50cy94bWxuc19uYW1lc3BhY2Vz Ijo0ODAsIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiOjUyOSwi Li4vLi4vcGxvdHMvZ2V0X2RhdGEiOjU5MywiLi9jb25zdGFudHMiOjYxMSwiLi9sYXlvdXRf YXR0cmlidXRlcyI6NjE1LCIuL2xheW91dF9kZWZhdWx0cyI6NjE2LCIuL21hcGJveCI6NjE3 LCJAcGxvdGx5L2QzIjo1OCwibWFwYm94LWdsL2Rpc3QvbWFwYm94LWdsLXVubWluaWZpZWQi OjIzOX1dLDYxNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8u Li9saWIiKSxpPXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyIpLnNhbml0aXplSFRNTCxh PXQoIi4vY29udmVydF90ZXh0X29wdHMiKSxvPXQoIi4vY29uc3RhbnRzIik7ZnVuY3Rpb24g cyh0LGUpe3RoaXMuc3VicGxvdD10LHRoaXMudWlkPXQudWlkKyItIitlLHRoaXMuaW5kZXg9 ZSx0aGlzLmlkU291cmNlPSJzb3VyY2UtIit0aGlzLnVpZCx0aGlzLmlkTGF5ZXI9by5sYXlv dXRMYXllclByZWZpeCt0aGlzLnVpZCx0aGlzLnNvdXJjZVR5cGU9bnVsbCx0aGlzLnNvdXJj ZT1udWxsLHRoaXMubGF5ZXJUeXBlPW51bGwsdGhpcy5iZWxvdz1udWxsLHRoaXMudmlzaWJs ZT0hMX12YXIgbD1zLnByb3RvdHlwZTtmdW5jdGlvbiBjKHQpe2lmKCF0LnZpc2libGUpcmV0 dXJuITE7dmFyIGU9dC5zb3VyY2U7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7 Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspaWYoInN0cmluZyIhPXR5cGVvZiBlW3JdfHww PT09ZVtyXS5sZW5ndGgpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIG4uaXNQbGFpbk9iamVj dChlKXx8InN0cmluZyI9PXR5cGVvZiBlJiZlLmxlbmd0aD4wfWZ1bmN0aW9uIHUodCl7dmFy IGU9e30scj17fTtzd2l0Y2godC50eXBlKXtjYXNlImNpcmNsZSI6bi5leHRlbmRGbGF0KHIs eyJjaXJjbGUtcmFkaXVzIjp0LmNpcmNsZS5yYWRpdXMsImNpcmNsZS1jb2xvciI6dC5jb2xv ciwiY2lyY2xlLW9wYWNpdHkiOnQub3BhY2l0eX0pO2JyZWFrO2Nhc2UibGluZSI6bi5leHRl bmRGbGF0KHIseyJsaW5lLXdpZHRoIjp0LmxpbmUud2lkdGgsImxpbmUtY29sb3IiOnQuY29s b3IsImxpbmUtb3BhY2l0eSI6dC5vcGFjaXR5LCJsaW5lLWRhc2hhcnJheSI6dC5saW5lLmRh c2h9KTticmVhaztjYXNlImZpbGwiOm4uZXh0ZW5kRmxhdChyLHsiZmlsbC1jb2xvciI6dC5j b2xvciwiZmlsbC1vdXRsaW5lLWNvbG9yIjp0LmZpbGwub3V0bGluZWNvbG9yLCJmaWxsLW9w YWNpdHkiOnQub3BhY2l0eX0pO2JyZWFrO2Nhc2Uic3ltYm9sIjp2YXIgaT10LnN5bWJvbCxv PWEoaS50ZXh0cG9zaXRpb24saS5pY29uc2l6ZSk7bi5leHRlbmRGbGF0KGUseyJpY29uLWlt YWdlIjppLmljb24rIi0xNSIsImljb24tc2l6ZSI6aS5pY29uc2l6ZS8xMCwidGV4dC1maWVs ZCI6aS50ZXh0LCJ0ZXh0LXNpemUiOmkudGV4dGZvbnQuc2l6ZSwidGV4dC1hbmNob3IiOm8u YW5jaG9yLCJ0ZXh0LW9mZnNldCI6by5vZmZzZXQsInN5bWJvbC1wbGFjZW1lbnQiOmkucGxh Y2VtZW50fSksbi5leHRlbmRGbGF0KHIseyJpY29uLWNvbG9yIjp0LmNvbG9yLCJ0ZXh0LWNv bG9yIjppLnRleHRmb250LmNvbG9yLCJ0ZXh0LW9wYWNpdHkiOnQub3BhY2l0eX0pO2JyZWFr O2Nhc2UicmFzdGVyIjpuLmV4dGVuZEZsYXQocix7InJhc3Rlci1mYWRlLWR1cmF0aW9uIjow LCJyYXN0ZXItb3BhY2l0eSI6dC5vcGFjaXR5fSl9cmV0dXJue2xheW91dDplLHBhaW50OnJ9 fWwudXBkYXRlPWZ1bmN0aW9uKHQpe3RoaXMudmlzaWJsZT90aGlzLm5lZWRzTmV3SW1hZ2Uo dCk/dGhpcy51cGRhdGVJbWFnZSh0KTp0aGlzLm5lZWRzTmV3U291cmNlKHQpPyh0aGlzLnJl bW92ZUxheWVyKCksdGhpcy51cGRhdGVTb3VyY2UodCksdGhpcy51cGRhdGVMYXllcih0KSk6 dGhpcy5uZWVkc05ld0xheWVyKHQpP3RoaXMudXBkYXRlTGF5ZXIodCk6dGhpcy51cGRhdGVT dHlsZSh0KToodGhpcy51cGRhdGVTb3VyY2UodCksdGhpcy51cGRhdGVMYXllcih0KSksdGhp cy52aXNpYmxlPWModCl9LGwubmVlZHNOZXdJbWFnZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhp cy5zdWJwbG90Lm1hcC5nZXRTb3VyY2UodGhpcy5pZFNvdXJjZSkmJiJpbWFnZSI9PT10aGlz LnNvdXJjZVR5cGUmJiJpbWFnZSI9PT10LnNvdXJjZXR5cGUmJih0aGlzLnNvdXJjZSE9PXQu c291cmNlfHxKU09OLnN0cmluZ2lmeSh0aGlzLmNvb3JkaW5hdGVzKSE9PUpTT04uc3RyaW5n aWZ5KHQuY29vcmRpbmF0ZXMpKX0sbC5uZWVkc05ld1NvdXJjZT1mdW5jdGlvbih0KXtyZXR1 cm4gdGhpcy5zb3VyY2VUeXBlIT09dC5zb3VyY2V0eXBlfHxKU09OLnN0cmluZ2lmeSh0aGlz LnNvdXJjZSkhPT1KU09OLnN0cmluZ2lmeSh0LnNvdXJjZSl8fHRoaXMubGF5ZXJUeXBlIT09 dC50eXBlfSxsLm5lZWRzTmV3TGF5ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGF5ZXJU eXBlIT09dC50eXBlfHx0aGlzLmJlbG93IT09dGhpcy5zdWJwbG90LmJlbG93TG9va3VwWyJs YXlvdXQtIit0aGlzLmluZGV4XX0sbC5sb29rdXBCZWxvdz1mdW5jdGlvbigpe3JldHVybiB0 aGlzLnN1YnBsb3QuYmVsb3dMb29rdXBbImxheW91dC0iK3RoaXMuaW5kZXhdfSxsLnVwZGF0 ZUltYWdlPWZ1bmN0aW9uKHQpe3RoaXMuc3VicGxvdC5tYXAuZ2V0U291cmNlKHRoaXMuaWRT b3VyY2UpLnVwZGF0ZUltYWdlKHt1cmw6dC5zb3VyY2UsY29vcmRpbmF0ZXM6dC5jb29yZGlu YXRlc30pO3ZhciBlPXRoaXMuZmluZEZvbGxvd2luZ01hcGJveExheWVySWQodGhpcy5sb29r dXBCZWxvdygpKTtudWxsIT09ZSYmdGhpcy5zdWJwbG90Lm1hcC5tb3ZlTGF5ZXIodGhpcy5p ZExheWVyLGUpfSxsLnVwZGF0ZVNvdXJjZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnN1YnBs b3QubWFwO2lmKGUuZ2V0U291cmNlKHRoaXMuaWRTb3VyY2UpJiZlLnJlbW92ZVNvdXJjZSh0 aGlzLmlkU291cmNlKSx0aGlzLnNvdXJjZVR5cGU9dC5zb3VyY2V0eXBlLHRoaXMuc291cmNl PXQuc291cmNlLGModCkpe3ZhciByPWZ1bmN0aW9uKHQpe3ZhciBlLHI9dC5zb3VyY2V0eXBl LG49dC5zb3VyY2UsYT17dHlwZTpyfTsiZ2VvanNvbiI9PT1yP2U9ImRhdGEiOiJ2ZWN0b3Ii PT09cj9lPSJzdHJpbmciPT10eXBlb2Ygbj8idXJsIjoidGlsZXMiOiJyYXN0ZXIiPT09cj8o ZT0idGlsZXMiLGEudGlsZVNpemU9MjU2KToiaW1hZ2UiPT09ciYmKGU9InVybCIsYS5jb29y ZGluYXRlcz10LmNvb3JkaW5hdGVzKTthW2VdPW4sdC5zb3VyY2VhdHRyaWJ1dGlvbiYmKGEu YXR0cmlidXRpb249aSh0LnNvdXJjZWF0dHJpYnV0aW9uKSk7cmV0dXJuIGF9KHQpO2UuYWRk U291cmNlKHRoaXMuaWRTb3VyY2Uscil9fSxsLmZpbmRGb2xsb3dpbmdNYXBib3hMYXllcklk PWZ1bmN0aW9uKHQpe2lmKCJ0cmFjZXMiPT09dClmb3IodmFyIGU9dGhpcy5zdWJwbG90Lmdl dE1hcExheWVycygpLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXS5pZDtpZigic3Ry aW5nIj09dHlwZW9mIG4mJjA9PT1uLmluZGV4T2Yoby50cmFjZUxheWVyUHJlZml4KSl7dD1u O2JyZWFrfX1yZXR1cm4gdH0sbC51cGRhdGVMYXllcj1mdW5jdGlvbih0KXt2YXIgZT10aGlz LnN1YnBsb3Qscj11KHQpLG49dGhpcy5sb29rdXBCZWxvdygpLGk9dGhpcy5maW5kRm9sbG93 aW5nTWFwYm94TGF5ZXJJZChuKTt0aGlzLnJlbW92ZUxheWVyKCksYyh0KSYmZS5hZGRMYXll cih7aWQ6dGhpcy5pZExheWVyLHNvdXJjZTp0aGlzLmlkU291cmNlLCJzb3VyY2UtbGF5ZXIi OnQuc291cmNlbGF5ZXJ8fCIiLHR5cGU6dC50eXBlLG1pbnpvb206dC5taW56b29tLG1heHpv b206dC5tYXh6b29tLGxheW91dDpyLmxheW91dCxwYWludDpyLnBhaW50fSxpKSx0aGlzLmxh eWVyVHlwZT10LnR5cGUsdGhpcy5iZWxvdz1ufSxsLnVwZGF0ZVN0eWxlPWZ1bmN0aW9uKHQp e2lmKGModCkpe3ZhciBlPXUodCk7dGhpcy5zdWJwbG90LnNldE9wdGlvbnModGhpcy5pZExh eWVyLCJzZXRMYXlvdXRQcm9wZXJ0eSIsZS5sYXlvdXQpLHRoaXMuc3VicGxvdC5zZXRPcHRp b25zKHRoaXMuaWRMYXllciwic2V0UGFpbnRQcm9wZXJ0eSIsZS5wYWludCl9fSxsLnJlbW92 ZUxheWVyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zdWJwbG90Lm1hcDt0LmdldExheWVyKHRo aXMuaWRMYXllcikmJnQucmVtb3ZlTGF5ZXIodGhpcy5pZExheWVyKX0sbC5kaXNwb3NlPWZ1 bmN0aW9uKCl7dmFyIHQ9dGhpcy5zdWJwbG90Lm1hcDt0LmdldExheWVyKHRoaXMuaWRMYXll cikmJnQucmVtb3ZlTGF5ZXIodGhpcy5pZExheWVyKSx0LmdldFNvdXJjZSh0aGlzLmlkU291 cmNlKSYmdC5yZW1vdmVTb3VyY2UodGhpcy5pZFNvdXJjZSl9LGUuZXhwb3J0cz1mdW5jdGlv bih0LGUscil7dmFyIG49bmV3IHModCxlKTtyZXR1cm4gbi51cGRhdGUociksbn19LHsiLi4v Li4vbGliIjo1MDMsIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyI6NTI5LCIuL2NvbnN0YW50 cyI6NjExLCIuL2NvbnZlcnRfdGV4dF9vcHRzIjo2MTJ9XSw2MTU6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9jb21wb25l bnRzL2NvbG9yIikuZGVmYXVsdExpbmUsYT10KCIuLi9kb21haW4iKS5hdHRyaWJ1dGVzLG89 dCgiLi4vZm9udF9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi90cmFjZXMvc2NhdHRlci9hdHRy aWJ1dGVzIikudGV4dHBvc2l0aW9uLGw9dCgiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyIp Lm92ZXJyaWRlQWxsLGM9dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLnRlbXBs YXRlZEFycmF5LHU9dCgiLi9jb25zdGFudHMiKSxmPW8oe30pO2YuZmFtaWx5LmRmbHQ9Ik9w ZW4gU2FucyBSZWd1bGFyLCBBcmlhbCBVbmljb2RlIE1TIFJlZ3VsYXIiLChlLmV4cG9ydHM9 bCh7X2FycmF5QXR0clJlZ2V4cHM6W24uY291bnRlclJlZ2V4KCJtYXBib3giLCIubGF5ZXJz IiwhMCldLGRvbWFpbjphKHtuYW1lOiJtYXBib3gifSksYWNjZXNzdG9rZW46e3ZhbFR5cGU6 InN0cmluZyIsbm9CbGFuazohMCxzdHJpY3Q6ITB9LHN0eWxlOnt2YWxUeXBlOiJhbnkiLHZh bHVlczp1LnN0eWxlVmFsdWVzTWFwYm94LmNvbmNhdCh1LnN0eWxlVmFsdWVzTm9uTWFwYm94 KSxkZmx0OnUuc3R5bGVWYWx1ZURmbHR9LGNlbnRlcjp7bG9uOnt2YWxUeXBlOiJudW1iZXIi LGRmbHQ6MH0sbGF0Ont2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MH19LHpvb206e3ZhbFR5cGU6 Im51bWJlciIsZGZsdDoxfSxiZWFyaW5nOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MH0scGl0 Y2g6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDowfSxsYXllcnM6YygibGF5ZXIiLHt2aXNpYmxl Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSxzb3VyY2V0eXBlOnt2YWxUeXBlOiJlbnVt ZXJhdGVkIix2YWx1ZXM6WyJnZW9qc29uIiwidmVjdG9yIiwicmFzdGVyIiwiaW1hZ2UiXSxk Zmx0OiJnZW9qc29uIn0sc291cmNlOnt2YWxUeXBlOiJhbnkifSxzb3VyY2VsYXllcjp7dmFs VHlwZToic3RyaW5nIixkZmx0OiIifSxzb3VyY2VhdHRyaWJ1dGlvbjp7dmFsVHlwZToic3Ry aW5nIn0sdHlwZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiY2lyY2xlIiwibGlu ZSIsImZpbGwiLCJzeW1ib2wiLCJyYXN0ZXIiXSxkZmx0OiJjaXJjbGUifSxjb29yZGluYXRl czp7dmFsVHlwZToiYW55In0sYmVsb3c6e3ZhbFR5cGU6InN0cmluZyJ9LGNvbG9yOnt2YWxU eXBlOiJjb2xvciIsZGZsdDppfSxvcGFjaXR5Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1h eDoxLGRmbHQ6MX0sbWluem9vbTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MjQsZGZs dDowfSxtYXh6b29tOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoyNCxkZmx0OjI0fSxj aXJjbGU6e3JhZGl1czp7dmFsVHlwZToibnVtYmVyIixkZmx0OjE1fX0sbGluZTp7d2lkdGg6 e3ZhbFR5cGU6Im51bWJlciIsZGZsdDoyfSxkYXNoOnt2YWxUeXBlOiJkYXRhX2FycmF5In19 LGZpbGw6e291dGxpbmVjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6aX19LHN5bWJvbDp7 aWNvbjp7dmFsVHlwZToic3RyaW5nIixkZmx0OiJtYXJrZXIifSxpY29uc2l6ZTp7dmFsVHlw ZToibnVtYmVyIixkZmx0OjEwfSx0ZXh0Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiJ9LHBs YWNlbWVudDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsicG9pbnQiLCJsaW5lIiwi bGluZS1jZW50ZXIiXSxkZmx0OiJwb2ludCJ9LHRleHRmb250OmYsdGV4dHBvc2l0aW9uOm4u ZXh0ZW5kRmxhdCh7fSxzLHthcnJheU9rOiExfSl9fSl9LCJwbG90IiwiZnJvbS1yb290Iikp LnVpcmV2aXNpb249e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6Im5vbmUifX0seyIuLi8uLi9j b21wb25lbnRzL2NvbG9yIjozNjYsIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9wbG90X2FwaS9l ZGl0X3R5cGVzIjo1MzYsIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjU0MywiLi4v Li4vdHJhY2VzL3NjYXR0ZXIvYXR0cmlidXRlcyI6OTI3LCIuLi9kb21haW4iOjU4NCwiLi4v Zm9udF9hdHRyaWJ1dGVzIjo1ODUsIi4vY29uc3RhbnRzIjo2MTF9XSw2MTY6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuLi9zdWJw bG90X2RlZmF1bHRzIiksYT10KCIuLi9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiKSxvPXQo Ii4vbGF5b3V0X2F0dHJpYnV0ZXMiKTtmdW5jdGlvbiBzKHQsZSxyLG4pe3IoImFjY2Vzc3Rv a2VuIixuLmFjY2Vzc1Rva2VuKSxyKCJzdHlsZSIpLHIoImNlbnRlci5sb24iKSxyKCJjZW50 ZXIubGF0Iikscigiem9vbSIpLHIoImJlYXJpbmciKSxyKCJwaXRjaCIpLGEodCxlLHtuYW1l OiJsYXllcnMiLGhhbmRsZUl0ZW1EZWZhdWx0czpsfSksZS5faW5wdXQ9dH1mdW5jdGlvbiBs KHQsZSl7ZnVuY3Rpb24gcihyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUsby5sYXllcnMscixp KX1pZihyKCJ2aXNpYmxlIikpe3ZhciBpLGE9cigic291cmNldHlwZSIpLHM9InJhc3RlciI9 PT1hfHwiaW1hZ2UiPT09YTtyKCJzb3VyY2UiKSxyKCJzb3VyY2VhdHRyaWJ1dGlvbiIpLCJ2 ZWN0b3IiPT09YSYmcigic291cmNlbGF5ZXIiKSwiaW1hZ2UiPT09YSYmcigiY29vcmRpbmF0 ZXMiKSxzJiYoaT0icmFzdGVyIik7dmFyIGw9cigidHlwZSIsaSk7cyYmInJhc3RlciIhPT1s JiYobD1lLnR5cGU9InJhc3RlciIsbi5sb2coIlNvdXJjZSB0eXBlcyAqcmFzdGVyKiBhbmQg KmltYWdlKiBtdXN0IGRyYXduICpyYXN0ZXIqIGxheWVyIHR5cGUuIikpLHIoImJlbG93Iiks cigiY29sb3IiKSxyKCJvcGFjaXR5IikscigibWluem9vbSIpLHIoIm1heHpvb20iKSwiY2ly Y2xlIj09PWwmJnIoImNpcmNsZS5yYWRpdXMiKSwibGluZSI9PT1sJiYocigibGluZS53aWR0 aCIpLHIoImxpbmUuZGFzaCIpKSwiZmlsbCI9PT1sJiZyKCJmaWxsLm91dGxpbmVjb2xvciIp LCJzeW1ib2wiPT09bCYmKHIoInN5bWJvbC5pY29uIikscigic3ltYm9sLmljb25zaXplIiks cigic3ltYm9sLnRleHQiKSxuLmNvZXJjZUZvbnQociwic3ltYm9sLnRleHRmb250Iikscigi c3ltYm9sLnRleHRwb3NpdGlvbiIpLHIoInN5bWJvbC5wbGFjZW1lbnQiKSl9fWUuZXhwb3J0 cz1mdW5jdGlvbih0LGUscil7aSh0LGUscix7dHlwZToibWFwYm94IixhdHRyaWJ1dGVzOm8s aGFuZGxlRGVmYXVsdHM6cyxwYXJ0aXRpb246InkiLGFjY2Vzc1Rva2VuOmUuX21hcGJveEFj Y2Vzc1Rva2VufSl9fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi9hcnJheV9jb250YWluZXJfZGVm YXVsdHMiOjU0OSwiLi4vc3VicGxvdF9kZWZhdWx0cyI6NjMyLCIuL2xheW91dF9hdHRyaWJ1 dGVzIjo2MTV9XSw2MTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgi bWFwYm94LWdsL2Rpc3QvbWFwYm94LWdsLXVubWluaWZpZWQiKSxpPXQoIi4uLy4uL2xpYiIp LGE9dCgiLi4vLi4vbGliL2dlb19sb2NhdGlvbl91dGlscyIpLG89dCgiLi4vLi4vcmVnaXN0 cnkiKSxzPXQoIi4uL2NhcnRlc2lhbi9heGVzIiksbD10KCIuLi8uLi9jb21wb25lbnRzL2Ry YWdlbGVtZW50IiksYz10KCIuLi8uLi9jb21wb25lbnRzL2Z4IiksdT10KCIuLi8uLi9jb21w b25lbnRzL2RyYWdlbGVtZW50L2hlbHBlcnMiKSxmPXUucmVjdE1vZGUsaD11LmRyYXdNb2Rl LHA9dS5zZWxlY3RNb2RlLGQ9dCgiLi4vY2FydGVzaWFuL3NlbGVjdCIpLnByZXBTZWxlY3Qs bT10KCIuLi9jYXJ0ZXNpYW4vc2VsZWN0IikuY2xlYXJTZWxlY3QsZz10KCIuLi9jYXJ0ZXNp YW4vc2VsZWN0IikuY2xlYXJTZWxlY3Rpb25zQ2FjaGUsdj10KCIuLi9jYXJ0ZXNpYW4vc2Vs ZWN0Iikuc2VsZWN0T25DbGljayx5PXQoIi4vY29uc3RhbnRzIikseD10KCIuL2xheWVycyIp O2Z1bmN0aW9uIGIodCxlKXt0aGlzLmlkPWUsdGhpcy5nZD10O3ZhciByPXQuX2Z1bGxMYXlv dXQsbj10Ll9jb250ZXh0O3RoaXMuY29udGFpbmVyPXIuX2dsY29udGFpbmVyLm5vZGUoKSx0 aGlzLmlzU3RhdGljPW4uc3RhdGljUGxvdCx0aGlzLnVpZD1yLl91aWQrIi0iK3RoaXMuaWQs dGhpcy5kaXY9bnVsbCx0aGlzLnhheGlzPW51bGwsdGhpcy55YXhpcz1udWxsLHRoaXMuY3Jl YXRlRnJhbWV3b3JrKHIpLHRoaXMubWFwPW51bGwsdGhpcy5hY2Nlc3NUb2tlbj1udWxsLHRo aXMuc3R5bGVPYmo9bnVsbCx0aGlzLnRyYWNlSGFzaD17fSx0aGlzLmxheWVyTGlzdD1bXSx0 aGlzLmJlbG93TG9va3VwPXt9LHRoaXMuZHJhZ2dpbmc9ITEsdGhpcy53aGVlbGluZz0hMX12 YXIgXz1iLnByb3RvdHlwZTtfLnBsb3Q9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGk9dGhpcyxh PWVbaS5pZF07aS5tYXAmJmEuYWNjZXNzdG9rZW4hPT1pLmFjY2Vzc1Rva2VuJiYoaS5tYXAu cmVtb3ZlKCksaS5tYXA9bnVsbCxpLnN0eWxlT2JqPW51bGwsaS50cmFjZUhhc2g9e30saS5s YXllckxpc3Q9W10pLG49aS5tYXA/bmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbil7aS51cGRh dGVNYXAodCxlLHIsbil9KSk6bmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbil7aS5jcmVhdGVN YXAodCxlLHIsbil9KSksci5wdXNoKG4pfSxfLmNyZWF0ZU1hcD1mdW5jdGlvbih0LGUscixp KXt2YXIgbz10aGlzLHM9ZVtvLmlkXSxsPW8uc3R5bGVPYmo9VChzLnN0eWxlKTtvLmFjY2Vz c1Rva2VuPXMuYWNjZXNzdG9rZW47dmFyIGM9by5tYXA9bmV3IG4uTWFwKHtjb250YWluZXI6 by5kaXYsc3R5bGU6bC5zdHlsZSxjZW50ZXI6QShzLmNlbnRlciksem9vbTpzLnpvb20sYmVh cmluZzpzLmJlYXJpbmcscGl0Y2g6cy5waXRjaCxpbnRlcmFjdGl2ZTohby5pc1N0YXRpYyxw cmVzZXJ2ZURyYXdpbmdCdWZmZXI6by5pc1N0YXRpYyxkb3VibGVDbGlja1pvb206ITEsYm94 Wm9vbTohMSxhdHRyaWJ1dGlvbkNvbnRyb2w6ITF9KS5hZGRDb250cm9sKG5ldyBuLkF0dHJp YnV0aW9uQ29udHJvbCh7Y29tcGFjdDohMH0pKTtjLl9jYW52YXMuc3R5bGUubGVmdD0iMHB4 IixjLl9jYW52YXMuc3R5bGUudG9wPSIwcHgiLG8ucmVqZWN0T25FcnJvcihpKSxvLmlzU3Rh dGljfHxvLmluaXRGeCh0LGUpO3ZhciB1PVtdO3UucHVzaChuZXcgUHJvbWlzZSgoZnVuY3Rp b24odCl7Yy5vbmNlKCJsb2FkIix0KX0pKSksdT11LmNvbmNhdChhLmZldGNoVHJhY2VHZW9E YXRhKHQpKSxQcm9taXNlLmFsbCh1KS50aGVuKChmdW5jdGlvbigpe28uZmlsbEJlbG93TG9v a3VwKHQsZSksby51cGRhdGVEYXRhKHQpLG8udXBkYXRlTGF5b3V0KGUpLG8ucmVzb2x2ZU9u UmVuZGVyKHIpfSkpLmNhdGNoKGkpfSxfLnVwZGF0ZU1hcD1mdW5jdGlvbih0LGUscixuKXt2 YXIgaT10aGlzLG89aS5tYXAscz1lW3RoaXMuaWRdO2kucmVqZWN0T25FcnJvcihuKTt2YXIg bD1bXSxjPVQocy5zdHlsZSk7SlNPTi5zdHJpbmdpZnkoaS5zdHlsZU9iaikhPT1KU09OLnN0 cmluZ2lmeShjKSYmKGkuc3R5bGVPYmo9YyxvLnNldFN0eWxlKGMuc3R5bGUpLGkudHJhY2VI YXNoPXt9LGwucHVzaChuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7by5vbmNlKCJzdHlsZWRh dGEiLHQpfSkpKSksbD1sLmNvbmNhdChhLmZldGNoVHJhY2VHZW9EYXRhKHQpKSxQcm9taXNl LmFsbChsKS50aGVuKChmdW5jdGlvbigpe2kuZmlsbEJlbG93TG9va3VwKHQsZSksaS51cGRh dGVEYXRhKHQpLGkudXBkYXRlTGF5b3V0KGUpLGkucmVzb2x2ZU9uUmVuZGVyKHIpfSkpLmNh dGNoKG4pfSxfLmZpbGxCZWxvd0xvb2t1cD1mdW5jdGlvbih0LGUpe3ZhciByLG4saT1lW3Ro aXMuaWRdLmxheWVycyxhPXRoaXMuYmVsb3dMb29rdXA9e30sbz0hMTtmb3Iocj0wO3I8dC5s ZW5ndGg7cisrKXt2YXIgcz10W3JdWzBdLnRyYWNlLGw9cy5fbW9kdWxlOyJzdHJpbmciPT10 eXBlb2Ygcy5iZWxvdz9uPXMuYmVsb3c6bC5nZXRCZWxvdyYmKG49bC5nZXRCZWxvdyhzLHRo aXMpKSwiIj09PW4mJihvPSEwKSxhWyJ0cmFjZS0iK3MudWlkXT1ufHwiIn1mb3Iocj0wO3I8 aS5sZW5ndGg7cisrKXt2YXIgYz1pW3JdO249InN0cmluZyI9PXR5cGVvZiBjLmJlbG93P2Mu YmVsb3c6bz8idHJhY2VzIjoiIixhWyJsYXlvdXQtIityXT1ufXZhciB1LGYsaD17fTtmb3Io dSBpbiBhKWhbbj1hW3VdXT9oW25dLnB1c2godSk6aFtuXT1bdV07Zm9yKG4gaW4gaCl7dmFy IHA9aFtuXTtpZihwLmxlbmd0aD4xKWZvcihyPTA7cjxwLmxlbmd0aDtyKyspMD09PSh1PXBb cl0pLmluZGV4T2YoInRyYWNlLSIpPyhmPXUuc3BsaXQoInRyYWNlLSIpWzFdLHRoaXMudHJh Y2VIYXNoW2ZdJiYodGhpcy50cmFjZUhhc2hbZl0uYmVsb3c9bnVsbCkpOjA9PT11LmluZGV4 T2YoImxheW91dC0iKSYmKGY9dS5zcGxpdCgibGF5b3V0LSIpWzFdLHRoaXMubGF5ZXJMaXN0 W2ZdJiYodGhpcy5sYXllckxpc3RbZl0uYmVsb3c9bnVsbCkpfX07dmFyIHc9e2Nob3JvcGxl dGhtYXBib3g6MCxkZW5zaXR5bWFwYm94OjEsc2NhdHRlcm1hcGJveDoyfTtmdW5jdGlvbiBU KHQpe3ZhciBlPXt9O3JldHVybiBpLmlzUGxhaW5PYmplY3QodCk/KGUuaWQ9dC5pZCxlLnN0 eWxlPXQpOiJzdHJpbmciPT10eXBlb2YgdD8oZS5pZD10LC0xIT09eS5zdHlsZVZhbHVlc01h cGJveC5pbmRleE9mKHQpP2Uuc3R5bGU9ayh0KTp5LnN0eWxlc05vbk1hcGJveFt0XT9lLnN0 eWxlPXkuc3R5bGVzTm9uTWFwYm94W3RdOmUuc3R5bGU9dCk6KGUuaWQ9eS5zdHlsZVZhbHVl RGZsdCxlLnN0eWxlPWsoeS5zdHlsZVZhbHVlRGZsdCkpLGUudHJhbnNpdGlvbj17ZHVyYXRp b246MCxkZWxheTowfSxlfWZ1bmN0aW9uIGsodCl7cmV0dXJuIHkuc3R5bGVVcmxQcmVmaXgr dCsiLSIreS5zdHlsZVVybFN1ZmZpeH1mdW5jdGlvbiBBKHQpe3JldHVyblt0Lmxvbix0Lmxh dF19Xy51cGRhdGVEYXRhPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpLGE9dGhpcy50cmFjZUhh c2gsbz10LnNsaWNlKCkuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gd1t0WzBdLnRyYWNl LnR5cGVdLXdbZVswXS50cmFjZS50eXBlXX0pKTtmb3Iobj0wO248by5sZW5ndGg7bisrKXt2 YXIgcz1vW25dLGw9ITE7KGU9YVsocj1zWzBdLnRyYWNlKS51aWRdKSYmKGUudHlwZT09PXIu dHlwZT8oZS51cGRhdGUocyksbD0hMCk6ZS5kaXNwb3NlKCkpLCFsJiZyLl9tb2R1bGUmJihh W3IudWlkXT1yLl9tb2R1bGUucGxvdCh0aGlzLHMpKX12YXIgYz1PYmplY3Qua2V5cyhhKTt0 OmZvcihuPTA7bjxjLmxlbmd0aDtuKyspe3ZhciB1PWNbbl07Zm9yKGk9MDtpPHQubGVuZ3Ro O2krKylpZih1PT09KHI9dFtpXVswXS50cmFjZSkudWlkKWNvbnRpbnVlIHQ7KGU9YVt1XSku ZGlzcG9zZSgpLGRlbGV0ZSBhW3VdfX0sXy51cGRhdGVMYXlvdXQ9ZnVuY3Rpb24odCl7dmFy IGU9dGhpcy5tYXAscj10W3RoaXMuaWRdO3RoaXMuZHJhZ2dpbmd8fHRoaXMud2hlZWxpbmd8 fChlLnNldENlbnRlcihBKHIuY2VudGVyKSksZS5zZXRab29tKHIuem9vbSksZS5zZXRCZWFy aW5nKHIuYmVhcmluZyksZS5zZXRQaXRjaChyLnBpdGNoKSksdGhpcy51cGRhdGVMYXllcnMo dCksdGhpcy51cGRhdGVGcmFtZXdvcmsodCksdGhpcy51cGRhdGVGeCh0KSx0aGlzLm1hcC5y ZXNpemUoKSx0aGlzLmdkLl9jb250ZXh0Ll9zY3JvbGxab29tLm1hcGJveD9lLnNjcm9sbFpv b20uZW5hYmxlKCk6ZS5zY3JvbGxab29tLmRpc2FibGUoKX0sXy5yZXNvbHZlT25SZW5kZXI9 ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5tYXA7ZS5vbigicmVuZGVyIiwoZnVuY3Rpb24gcigp e2UubG9hZGVkKCkmJihlLm9mZigicmVuZGVyIixyKSxzZXRUaW1lb3V0KHQsMTApKX0pKX0s Xy5yZWplY3RPbkVycm9yPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubWFwO2Z1bmN0aW9uIHIo KXt0KG5ldyBFcnJvcih5Lm1hcE9uRXJyb3JNc2cpKX1lLm9uY2UoImVycm9yIixyKSxlLm9u Y2UoInN0eWxlLmVycm9yIixyKSxlLm9uY2UoInNvdXJjZS5lcnJvciIsciksZS5vbmNlKCJ0 aWxlLmVycm9yIixyKSxlLm9uY2UoImxheWVyLmVycm9yIixyKX0sXy5jcmVhdGVGcmFtZXdv cms9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxyPWUuZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1l bnQoImRpdiIpO3IuaWQ9ZS51aWQsci5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGUuY29u dGFpbmVyLmFwcGVuZENoaWxkKHIpLGUueGF4aXM9e19pZDoieCIsYzJwOmZ1bmN0aW9uKHQp e3JldHVybiBlLnByb2plY3QodCkueH19LGUueWF4aXM9e19pZDoieSIsYzJwOmZ1bmN0aW9u KHQpe3JldHVybiBlLnByb2plY3QodCkueX19LGUudXBkYXRlRnJhbWV3b3JrKHQpLGUubW9j a0F4aXM9e3R5cGU6ImxpbmVhciIsc2hvd2V4cG9uZW50OiJhbGwiLGV4cG9uZW50Zm9ybWF0 OiJCIn0scy5zZXRDb252ZXJ0KGUubW9ja0F4aXMsdCl9LF8uaW5pdEZ4PWZ1bmN0aW9uKHQs ZSl7dmFyIHI9dGhpcyxuPXIuZ2QsaT1yLm1hcDtmdW5jdGlvbiBhKCl7Yy5sb25lVW5ob3Zl cihlLl9ob3ZlcmxheWVyKX1mdW5jdGlvbiBzKCl7dmFyIHQ9ci5nZXRWaWV3KCk7bi5lbWl0 KCJwbG90bHlfcmVsYXlvdXRpbmciLHIuZ2V0Vmlld0VkaXRzV2l0aERlcml2ZWQodCkpfWku b24oIm1vdmVlbmQiLChmdW5jdGlvbih0KXtpZihyLm1hcCl7dmFyIGU9bi5fZnVsbExheW91 dDtpZih0Lm9yaWdpbmFsRXZlbnR8fHIud2hlZWxpbmcpe3ZhciBpPWVbci5pZF07by5jYWxs KCJfc3RvcmVEaXJlY3RHVUlFZGl0IixuLmxheW91dCxlLl9wcmVHVUksci5nZXRWaWV3RWRp dHMoaSkpO3ZhciBhPXIuZ2V0VmlldygpO2kuX2lucHV0LmNlbnRlcj1pLmNlbnRlcj1hLmNl bnRlcixpLl9pbnB1dC56b29tPWkuem9vbT1hLnpvb20saS5faW5wdXQuYmVhcmluZz1pLmJl YXJpbmc9YS5iZWFyaW5nLGkuX2lucHV0LnBpdGNoPWkucGl0Y2g9YS5waXRjaCxuLmVtaXQo InBsb3RseV9yZWxheW91dCIsci5nZXRWaWV3RWRpdHNXaXRoRGVyaXZlZChhKSl9dC5vcmln aW5hbEV2ZW50JiYibW91c2V1cCI9PT10Lm9yaWdpbmFsRXZlbnQudHlwZT9yLmRyYWdnaW5n PSExOnIud2hlZWxpbmcmJihyLndoZWVsaW5nPSExKSxlLl9yZWhvdmVyJiZlLl9yZWhvdmVy KCl9fSkpLGkub24oIndoZWVsIiwoZnVuY3Rpb24oKXtyLndoZWVsaW5nPSEwfSkpLGkub24o Im1vdXNlbW92ZSIsKGZ1bmN0aW9uKHQpe3ZhciBlPXIuZGl2LmdldEJvdW5kaW5nQ2xpZW50 UmVjdCgpLGE9W3Qub3JpZ2luYWxFdmVudC5vZmZzZXRYLHQub3JpZ2luYWxFdmVudC5vZmZz ZXRZXTt0LnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4g ZX0sci54YXhpcy5wMmM9ZnVuY3Rpb24oKXtyZXR1cm4gaS51bnByb2plY3QoYSkubG5nfSxy LnlheGlzLnAyYz1mdW5jdGlvbigpe3JldHVybiBpLnVucHJvamVjdChhKS5sYXR9LG4uX2Z1 bGxMYXlvdXQuX3JlaG92ZXI9ZnVuY3Rpb24oKXtuLl9mdWxsTGF5b3V0Ll9ob3ZlcnN1YnBs b3Q9PT1yLmlkJiZuLl9mdWxsTGF5b3V0W3IuaWRdJiZjLmhvdmVyKG4sdCxyLmlkKX0sYy5o b3ZlcihuLHQsci5pZCksbi5fZnVsbExheW91dC5faG92ZXJzdWJwbG90PXIuaWR9KSksaS5v bigiZHJhZ3N0YXJ0IiwoZnVuY3Rpb24oKXtyLmRyYWdnaW5nPSEwLGEoKX0pKSxpLm9uKCJ6 b29tc3RhcnQiLGEpLGkub24oIm1vdXNlb3V0IiwoZnVuY3Rpb24oKXtuLl9mdWxsTGF5b3V0 Ll9ob3ZlcnN1YnBsb3Q9bnVsbH0pKSxpLm9uKCJkcmFnIixzKSxpLm9uKCJ6b29tIixzKSxp Lm9uKCJkYmxjbGljayIsKGZ1bmN0aW9uKCl7dmFyIHQ9bi5fZnVsbExheW91dFtyLmlkXTtv LmNhbGwoIl9zdG9yZURpcmVjdEdVSUVkaXQiLG4ubGF5b3V0LG4uX2Z1bGxMYXlvdXQuX3By ZUdVSSxyLmdldFZpZXdFZGl0cyh0KSk7dmFyIGU9ci52aWV3SW5pdGlhbDtpLnNldENlbnRl cihBKGUuY2VudGVyKSksaS5zZXRab29tKGUuem9vbSksaS5zZXRCZWFyaW5nKGUuYmVhcmlu ZyksaS5zZXRQaXRjaChlLnBpdGNoKTt2YXIgYT1yLmdldFZpZXcoKTt0Ll9pbnB1dC5jZW50 ZXI9dC5jZW50ZXI9YS5jZW50ZXIsdC5faW5wdXQuem9vbT10Lnpvb209YS56b29tLHQuX2lu cHV0LmJlYXJpbmc9dC5iZWFyaW5nPWEuYmVhcmluZyx0Ll9pbnB1dC5waXRjaD10LnBpdGNo PWEucGl0Y2gsbi5lbWl0KCJwbG90bHlfZG91YmxlY2xpY2siLG51bGwpLG4uZW1pdCgicGxv dGx5X3JlbGF5b3V0IixyLmdldFZpZXdFZGl0c1dpdGhEZXJpdmVkKGEpKX0pKSxyLmNsZWFy U2VsZWN0PWZ1bmN0aW9uKCl7ZyhyLmRyYWdPcHRpb25zKSxtKHIuZHJhZ09wdGlvbnMuZ2Qp fSxyLm9uQ2xpY2tJblBhbkZuPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIg aT1uLl9mdWxsTGF5b3V0LmNsaWNrbW9kZTtpLmluZGV4T2YoInNlbGVjdCIpPi0xJiZ2KGUu b3JpZ2luYWxFdmVudCxuLFtyLnhheGlzXSxbci55YXhpc10sci5pZCx0KSxpLmluZGV4T2Yo ImV2ZW50Iik+LTEmJmMuY2xpY2sobixlLm9yaWdpbmFsRXZlbnQpfX19LF8udXBkYXRlRng9 ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxyPWUubWFwLG49ZS5nZDtpZighZS5pc1N0YXRpYyl7 dmFyIGEsbz10LmRyYWdtb2RlO2E9ZihvKT9mdW5jdGlvbih0LHIpeyh0LnJhbmdlPXt9KVtl LmlkXT1bYyhbci54bWluLHIueW1pbl0pLGMoW3IueG1heCxyLnltYXhdKV19OmZ1bmN0aW9u KHQscixuKXsodC5sYXNzb1BvaW50cz17fSlbZS5pZF09bi5maWx0ZXJlZC5tYXAoYyl9O3Zh ciBzPWUuZHJhZ09wdGlvbnM7ZS5kcmFnT3B0aW9ucz1pLmV4dGVuZERlZXAoc3x8e30se2Ry YWdtb2RlOnQuZHJhZ21vZGUsZWxlbWVudDplLmRpdixnZDpuLHBsb3RpbmZvOntpZDplLmlk LGRvbWFpbjp0W2UuaWRdLmRvbWFpbix4YXhpczplLnhheGlzLHlheGlzOmUueWF4aXMsZmls bFJhbmdlSXRlbXM6YX0seGF4ZXM6W2UueGF4aXNdLHlheGVzOltlLnlheGlzXSxzdWJwbG90 OmUuaWR9KSxyLm9mZigiY2xpY2siLGUub25DbGlja0luUGFuSGFuZGxlcikscChvKXx8aChv KT8oci5kcmFnUGFuLmRpc2FibGUoKSxyLm9uKCJ6b29tc3RhcnQiLGUuY2xlYXJTZWxlY3Qp LGUuZHJhZ09wdGlvbnMucHJlcEZuPWZ1bmN0aW9uKHQscixuKXtkKHQscixuLGUuZHJhZ09w dGlvbnMsbyl9LGwuaW5pdChlLmRyYWdPcHRpb25zKSk6KHIuZHJhZ1Bhbi5lbmFibGUoKSxy Lm9mZigiem9vbXN0YXJ0IixlLmNsZWFyU2VsZWN0KSxlLmRpdi5vbm1vdXNlZG93bj1udWxs LGUub25DbGlja0luUGFuSGFuZGxlcj1lLm9uQ2xpY2tJblBhbkZuKGUuZHJhZ09wdGlvbnMp LHIub24oImNsaWNrIixlLm9uQ2xpY2tJblBhbkhhbmRsZXIpKX1mdW5jdGlvbiBjKHQpe3Zh ciByPWUubWFwLnVucHJvamVjdCh0KTtyZXR1cm5bci5sbmcsci5sYXRdfX0sXy51cGRhdGVG cmFtZXdvcms9ZnVuY3Rpb24odCl7dmFyIGU9dFt0aGlzLmlkXS5kb21haW4scj10Ll9zaXpl LG49dGhpcy5kaXYuc3R5bGU7bi53aWR0aD1yLncqKGUueFsxXS1lLnhbMF0pKyJweCIsbi5o ZWlnaHQ9ci5oKihlLnlbMV0tZS55WzBdKSsicHgiLG4ubGVmdD1yLmwrZS54WzBdKnIudysi cHgiLG4udG9wPXIudCsoMS1lLnlbMV0pKnIuaCsicHgiLHRoaXMueGF4aXMuX29mZnNldD1y LmwrZS54WzBdKnIudyx0aGlzLnhheGlzLl9sZW5ndGg9ci53KihlLnhbMV0tZS54WzBdKSx0 aGlzLnlheGlzLl9vZmZzZXQ9ci50KygxLWUueVsxXSkqci5oLHRoaXMueWF4aXMuX2xlbmd0 aD1yLmgqKGUueVsxXS1lLnlbMF0pfSxfLnVwZGF0ZUxheWVycz1mdW5jdGlvbih0KXt2YXIg ZSxyPXRbdGhpcy5pZF0ubGF5ZXJzLG49dGhpcy5sYXllckxpc3Q7aWYoci5sZW5ndGghPT1u Lmxlbmd0aCl7Zm9yKGU9MDtlPG4ubGVuZ3RoO2UrKyluW2VdLmRpc3Bvc2UoKTtmb3Iobj10 aGlzLmxheWVyTGlzdD1bXSxlPTA7ZTxyLmxlbmd0aDtlKyspbi5wdXNoKHgodGhpcyxlLHJb ZV0pKX1lbHNlIGZvcihlPTA7ZTxyLmxlbmd0aDtlKyspbltlXS51cGRhdGUocltlXSl9LF8u ZGVzdHJveT1mdW5jdGlvbigpe3RoaXMubWFwJiYodGhpcy5tYXAucmVtb3ZlKCksdGhpcy5t YXA9bnVsbCx0aGlzLmNvbnRhaW5lci5yZW1vdmVDaGlsZCh0aGlzLmRpdikpfSxfLnRvSW1h Z2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAuc3RvcCgpLHRoaXMubWFwLmdldENhbnZh cygpLnRvRGF0YVVSTCgpfSxfLnNldE9wdGlvbnM9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIg biBpbiByKXRoaXMubWFwW2VdKHQsbixyW25dKX0sXy5nZXRNYXBMYXllcnM9ZnVuY3Rpb24o KXtyZXR1cm4gdGhpcy5tYXAuZ2V0U3R5bGUoKS5sYXllcnN9LF8uYWRkTGF5ZXI9ZnVuY3Rp b24odCxlKXt2YXIgcj10aGlzLm1hcDtpZigic3RyaW5nIj09dHlwZW9mIGUpe2lmKCIiPT09 ZSlyZXR1cm4gdm9pZCByLmFkZExheWVyKHQsZSk7Zm9yKHZhciBuPXRoaXMuZ2V0TWFwTGF5 ZXJzKCksYT0wO2E8bi5sZW5ndGg7YSsrKWlmKGU9PT1uW2FdLmlkKXJldHVybiB2b2lkIHIu YWRkTGF5ZXIodCxlKTtpLndhcm4oWyJUcnlpbmcgdG8gYWRkIGxheWVyIHdpdGggKmJlbG93 KiB2YWx1ZSIsZSwicmVmZXJlbmNpbmcgYSBsYXllciB0aGF0IGRvZXMgbm90IGV4aXN0Iiwi b3IgdGhhdCBkb2VzIG5vdCB5ZXQgZXhpc3QuIl0uam9pbigiICIpKX1yLmFkZExheWVyKHQp fSxfLnByb2plY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWFwLnByb2plY3QobmV3IG4u TG5nTGF0KHRbMF0sdFsxXSkpfSxfLmdldFZpZXc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1h cCxlPXQuZ2V0Q2VudGVyKCkscj17bG9uOmUubG5nLGxhdDplLmxhdH0sbj10LmdldENhbnZh cygpLGk9cGFyc2VJbnQobi5zdHlsZS53aWR0aCksYT1wYXJzZUludChuLnN0eWxlLmhlaWdo dCk7cmV0dXJue2NlbnRlcjpyLHpvb206dC5nZXRab29tKCksYmVhcmluZzp0LmdldEJlYXJp bmcoKSxwaXRjaDp0LmdldFBpdGNoKCksX2Rlcml2ZWQ6e2Nvb3JkaW5hdGVzOlt0LnVucHJv amVjdChbMCwwXSkudG9BcnJheSgpLHQudW5wcm9qZWN0KFtpLDBdKS50b0FycmF5KCksdC51 bnByb2plY3QoW2ksYV0pLnRvQXJyYXkoKSx0LnVucHJvamVjdChbMCxhXSkudG9BcnJheSgp XX19fSxfLmdldFZpZXdFZGl0cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5pZCxyPVsi Y2VudGVyIiwiem9vbSIsImJlYXJpbmciLCJwaXRjaCJdLG49e30saT0wO2k8ci5sZW5ndGg7 aSsrKXt2YXIgYT1yW2ldO25bZSsiLiIrYV09dFthXX1yZXR1cm4gbn0sXy5nZXRWaWV3RWRp dHNXaXRoRGVyaXZlZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmlkLHI9dGhpcy5nZXRWaWV3 RWRpdHModCk7cmV0dXJuIHJbZSsiLl9kZXJpdmVkIl09dC5fZGVyaXZlZCxyfSxlLmV4cG9y dHM9Yn0seyIuLi8uLi9jb21wb25lbnRzL2RyYWdlbGVtZW50IjozODUsIi4uLy4uL2NvbXBv bmVudHMvZHJhZ2VsZW1lbnQvaGVscGVycyI6Mzg0LCIuLi8uLi9jb21wb25lbnRzL2Z4Ijo0 MDYsIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9saWIvZ2VvX2xvY2F0aW9uX3V0aWxzIjo0OTYs Ii4uLy4uL3JlZ2lzdHJ5Ijo2MzgsIi4uL2NhcnRlc2lhbi9heGVzIjo1NTQsIi4uL2NhcnRl c2lhbi9zZWxlY3QiOjU3NSwiLi9jb25zdGFudHMiOjYxMSwiLi9sYXllcnMiOjYxNCwibWFw Ym94LWdsL2Rpc3QvbWFwYm94LWdsLXVubWluaWZpZWQiOjIzOX1dLDYxODpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5lZGl0 VHlwZTtyZXR1cm57dDp7dmFsVHlwZToibnVtYmVyIixkZmx0OjAsZWRpdFR5cGU6ZX0scjp7 dmFsVHlwZToibnVtYmVyIixkZmx0OjAsZWRpdFR5cGU6ZX0sYjp7dmFsVHlwZToibnVtYmVy IixkZmx0OjAsZWRpdFR5cGU6ZX0sbDp7dmFsVHlwZToibnVtYmVyIixkZmx0OjAsZWRpdFR5 cGU6ZX0sZWRpdFR5cGU6ZX19fSx7fV0sNjE5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIkBwbG90bHkvZDMiKSxpPXQoImQzLXRpbWUtZm9ybWF0IikudGltZUZv cm1hdExvY2FsZSxhPXQoImQzLWZvcm1hdCIpLmZvcm1hdExvY2FsZSxvPXQoImZhc3QtaXNu dW1lcmljIikscz10KCIuLi9yZWdpc3RyeSIpLGw9dCgiLi4vcGxvdF9hcGkvcGxvdF9zY2hl bWEiKSxjPXQoIi4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKSx1PXQoIi4uL2xpYiIpLGY9 dCgiLi4vY29tcG9uZW50cy9jb2xvciIpLGg9dCgiLi4vY29uc3RhbnRzL251bWVyaWNhbCIp LkJBRE5VTSxwPXQoIi4vY2FydGVzaWFuL2F4aXNfaWRzIiksZD10KCIuL2NhcnRlc2lhbi9o YW5kbGVfb3V0bGluZSIpLmNsZWFyU2VsZWN0LG09dCgiLi9hbmltYXRpb25fYXR0cmlidXRl cyIpLGc9dCgiLi9mcmFtZV9hdHRyaWJ1dGVzIiksdj10KCIuLi9wbG90cy9nZXRfZGF0YSIp LmdldE1vZHVsZUNhbGNEYXRhLHk9dS5yZWxpbmtQcml2YXRlS2V5cyx4PXUuXyxiPWUuZXhw b3J0cz17fTt1LmV4dGVuZEZsYXQoYixzKSxiLmF0dHJpYnV0ZXM9dCgiLi9hdHRyaWJ1dGVz IiksYi5hdHRyaWJ1dGVzLnR5cGUudmFsdWVzPWIuYWxsVHlwZXMsYi5mb250QXR0cnM9dCgi Li9mb250X2F0dHJpYnV0ZXMiKSxiLmxheW91dEF0dHJpYnV0ZXM9dCgiLi9sYXlvdXRfYXR0 cmlidXRlcyIpLGIuZm9udFdlaWdodD0ibm9ybWFsIjt2YXIgXz1iLnRyYW5zZm9ybXNSZWdp c3RyeSx3PXQoIi4vY29tbWFuZCIpO2IuZXhlY3V0ZUFQSUNvbW1hbmQ9dy5leGVjdXRlQVBJ Q29tbWFuZCxiLmNvbXB1dGVBUElDb21tYW5kQmluZGluZ3M9dy5jb21wdXRlQVBJQ29tbWFu ZEJpbmRpbmdzLGIubWFuYWdlQ29tbWFuZE9ic2VydmVyPXcubWFuYWdlQ29tbWFuZE9ic2Vy dmVyLGIuaGFzU2ltcGxlQVBJQ29tbWFuZEJpbmRpbmdzPXcuaGFzU2ltcGxlQVBJQ29tbWFu ZEJpbmRpbmdzLGIucmVkcmF3VGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gdD11LmdldEdyYXBo RGl2KHQpLG5ldyBQcm9taXNlKChmdW5jdGlvbihlKXtzZXRUaW1lb3V0KChmdW5jdGlvbigp e3QuX2Z1bGxMYXlvdXQmJihzLmdldENvbXBvbmVudE1ldGhvZCgiYW5ub3RhdGlvbnMiLCJk cmF3IikodCkscy5nZXRDb21wb25lbnRNZXRob2QoImxlZ2VuZCIsImRyYXciKSh0KSxzLmdl dENvbXBvbmVudE1ldGhvZCgiY29sb3JiYXIiLCJkcmF3IikodCksZShiLnByZXZpb3VzUHJv bWlzZXModCkpKX0pLDMwMCl9KSl9LGIucmVzaXplPWZ1bmN0aW9uKHQpe3ZhciBlO3Q9dS5n ZXRHcmFwaERpdih0KTt2YXIgcj1uZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixuKXt0JiYhdS5p c0hpZGRlbih0KXx8bihuZXcgRXJyb3IoIlJlc2l6ZSBtdXN0IGJlIHBhc3NlZCBhIGRpc3Bs YXllZCBwbG90IGRpdiBlbGVtZW50LiIpKSx0Ll9yZWRyYXdUaW1lciYmY2xlYXJUaW1lb3V0 KHQuX3JlZHJhd1RpbWVyKSx0Ll9yZXNvbHZlUmVzaXplJiYoZT10Ll9yZXNvbHZlUmVzaXpl KSx0Ll9yZXNvbHZlUmVzaXplPXIsdC5fcmVkcmF3VGltZXI9c2V0VGltZW91dCgoZnVuY3Rp b24oKXtpZighdC5sYXlvdXR8fHQubGF5b3V0LndpZHRoJiZ0LmxheW91dC5oZWlnaHR8fHUu aXNIaWRkZW4odCkpcih0KTtlbHNle2RlbGV0ZSB0LmxheW91dC53aWR0aCxkZWxldGUgdC5s YXlvdXQuaGVpZ2h0O3ZhciBlPXQuY2hhbmdlZDt0LmF1dG9wbGF5PSEwLHMuY2FsbCgicmVs YXlvdXQiLHQse2F1dG9zaXplOiEwfSkudGhlbigoZnVuY3Rpb24oKXt0LmNoYW5nZWQ9ZSx0 Ll9yZXNvbHZlUmVzaXplPT09ciYmKGRlbGV0ZSB0Ll9yZXNvbHZlUmVzaXplLHIodCkpfSkp fX0pLDEwMCl9KSk7cmV0dXJuIGUmJmUocikscn0sYi5wcmV2aW91c1Byb21pc2VzPWZ1bmN0 aW9uKHQpe2lmKCh0Ll9wcm9taXNlc3x8W10pLmxlbmd0aClyZXR1cm4gUHJvbWlzZS5hbGwo dC5fcHJvbWlzZXMpLnRoZW4oKGZ1bmN0aW9uKCl7dC5fcHJvbWlzZXM9W119KSl9LGIuYWRk TGlua3M9ZnVuY3Rpb24odCl7aWYodC5fY29udGV4dC5zaG93TGlua3x8dC5fY29udGV4dC5z aG93U291cmNlcyl7dmFyIGU9dC5fZnVsbExheW91dCxyPXUuZW5zdXJlU2luZ2xlKGUuX3Bh cGVyLCJ0ZXh0IiwianMtcGxvdC1saW5rLWNvbnRhaW5lciIsKGZ1bmN0aW9uKHQpe3Quc3R5 bGUoeyJmb250LWZhbWlseSI6JyJPcGVuIFNhbnMiLCBBcmlhbCwgc2Fucy1zZXJpZicsImZv bnQtc2l6ZSI6IjEycHgiLGZpbGw6Zi5kZWZhdWx0TGluZSwicG9pbnRlci1ldmVudHMiOiJh bGwifSkuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1uLnNlbGVjdCh0aGlzKTt0LmFwcGVuZCgi dHNwYW4iKS5jbGFzc2VkKCJqcy1saW5rLXRvLXRvb2wiLCEwKSx0LmFwcGVuZCgidHNwYW4i KS5jbGFzc2VkKCJqcy1saW5rLXNwYWNlciIsITApLHQuYXBwZW5kKCJ0c3BhbiIpLmNsYXNz ZWQoImpzLXNvdXJjZWxpbmtzIiwhMCl9KSl9KSksaT1yLm5vZGUoKSxhPXt5OmUuX3BhcGVy LmF0dHIoImhlaWdodCIpLTl9O2RvY3VtZW50LmJvZHkuY29udGFpbnMoaSkmJmkuZ2V0Q29t cHV0ZWRUZXh0TGVuZ3RoKCk+PWUud2lkdGgtMjA/KGFbInRleHQtYW5jaG9yIl09InN0YXJ0 IixhLng9NSk6KGFbInRleHQtYW5jaG9yIl09ImVuZCIsYS54PWUuX3BhcGVyLmF0dHIoIndp ZHRoIiktNyksci5hdHRyKGEpO3ZhciBvPXIuc2VsZWN0KCIuanMtbGluay10by10b29sIiks cz1yLnNlbGVjdCgiLmpzLWxpbmstc3BhY2VyIiksbD1yLnNlbGVjdCgiLmpzLXNvdXJjZWxp bmtzIik7dC5fY29udGV4dC5zaG93U291cmNlcyYmdC5fY29udGV4dC5zaG93U291cmNlcyh0 KSx0Ll9jb250ZXh0LnNob3dMaW5rJiZmdW5jdGlvbih0LGUpe2UudGV4dCgiIik7dmFyIHI9 ZS5hcHBlbmQoImEiKS5hdHRyKHsieGxpbms6eGxpbms6aHJlZiI6IiMiLGNsYXNzOiJsaW5r LS1pbXB0IGxpbmstLWVtYmVkdmlldyIsImZvbnQtd2VpZ2h0IjoiYm9sZCJ9KS50ZXh0KHQu X2NvbnRleHQubGlua1RleHQrIiAiK1N0cmluZy5mcm9tQ2hhckNvZGUoMTg3KSk7aWYodC5f Y29udGV4dC5zZW5kRGF0YSlyLm9uKCJjbGljayIsKGZ1bmN0aW9uKCl7Yi5zZW5kRGF0YVRv Q2xvdWQodCl9KSk7ZWxzZXt2YXIgbj13aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuc3BsaXQo Ii8iKSxpPXdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7ci5hdHRyKHsieGxpbms6eGxpbms6c2hv dyI6Im5ldyIsInhsaW5rOnhsaW5rOmhyZWYiOiIvIituWzJdLnNwbGl0KCIuIilbMF0rIi8i K25bMV0raX0pfX0odCxvKSxzLnRleHQoby50ZXh0KCkmJmwudGV4dCgpPyIgLSAiOiIiKX19 LGIuc2VuZERhdGFUb0Nsb3VkPWZ1bmN0aW9uKHQpe3ZhciBlPSh3aW5kb3cuUExPVExZRU5W fHx7fSkuQkFTRV9VUkx8fHQuX2NvbnRleHQucGxvdGx5U2VydmVyVVJMO2lmKGUpe3QuZW1p dCgicGxvdGx5X2JlZm9yZWV4cG9ydCIpO3ZhciByPW4uc2VsZWN0KHQpLmFwcGVuZCgiZGl2 IikuYXR0cigiaWQiLCJoaWRkZW5mb3JtIikuc3R5bGUoImRpc3BsYXkiLCJub25lIiksaT1y LmFwcGVuZCgiZm9ybSIpLmF0dHIoe2FjdGlvbjplKyIvZXh0ZXJuYWwiLG1ldGhvZDoicG9z dCIsdGFyZ2V0OiJfYmxhbmsifSk7cmV0dXJuIGkuYXBwZW5kKCJpbnB1dCIpLmF0dHIoe3R5 cGU6InRleHQiLG5hbWU6ImRhdGEifSkubm9kZSgpLnZhbHVlPWIuZ3JhcGhKc29uKHQsITEs ImtlZXBkYXRhIiksaS5ub2RlKCkuc3VibWl0KCksci5yZW1vdmUoKSx0LmVtaXQoInBsb3Rs eV9hZnRlcmV4cG9ydCIpLCExfX07dmFyIFQ9WyJkYXlzIiwic2hvcnREYXlzIiwibW9udGhz Iiwic2hvcnRNb250aHMiLCJwZXJpb2RzIiwiZGF0ZVRpbWUiLCJkYXRlIiwidGltZSIsImRl Y2ltYWwiLCJ0aG91c2FuZHMiLCJncm91cGluZyIsImN1cnJlbmN5Il0saz1bInllYXIiLCJt b250aCIsImRheU1vbnRoIiwiZGF5TW9udGhZZWFyIl07ZnVuY3Rpb24gQSh0LGUpe3ZhciBy PXQuX2NvbnRleHQubG9jYWxlO3J8fChyPSJlbi1VUyIpO3ZhciBuPSExLGk9e307ZnVuY3Rp b24gYSh0KXtmb3IodmFyIHI9ITAsYT0wO2E8ZS5sZW5ndGg7YSsrKXt2YXIgbz1lW2FdO2lb b118fCh0W29dP2lbb109dFtvXTpyPSExKX1yJiYobj0hMCl9Zm9yKHZhciBvPTA7bzwyO28r Kyl7Zm9yKHZhciBsPXQuX2NvbnRleHQubG9jYWxlcyxjPTA7YzwyO2MrKyl7dmFyIHU9KGxb cl18fHt9KS5mb3JtYXQ7aWYodSYmKGEodSksbikpYnJlYWs7bD1zLmxvY2FsZVJlZ2lzdHJ5 fXZhciBmPXIuc3BsaXQoIi0iKVswXTtpZihufHxmPT09cilicmVhaztyPWZ9cmV0dXJuIG58 fGEocy5sb2NhbGVSZWdpc3RyeS5lbi5mb3JtYXQpLGl9ZnVuY3Rpb24gTSh0LGUpe3ZhciBy PXtfZnVsbExheW91dDplfSxuPSJ4Ij09PXQuX2lkLmNoYXJBdCgwKSxpPXQuX21haW5BeGlz Ll9hbmNob3JBeGlzLGE9IiIsbz0iIixzPSIiO2lmKGkmJihzPWkuX21haW5BeGlzLl9pZCxh PW4/dC5faWQrczpzK3QuX2lkKSwhYXx8IWUuX3Bsb3RzW2FdKXthPSIiO2Zvcih2YXIgbD10 Ll9jb3VudGVyQXhlcyxjPTA7YzxsLmxlbmd0aDtjKyspe3ZhciB1PWxbY10sZj1uP3QuX2lk K3U6dSt0Ll9pZDtvfHwobz1mKTt2YXIgaD1wLmdldEZyb21JZChyLHUpO2lmKHMmJmgub3Zl cmxheWluZz09PXMpe2E9ZjticmVha319fXJldHVybiBhfHxvfWZ1bmN0aW9uIFModCl7dmFy IGU9dC50cmFuc2Zvcm1zO2lmKEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoKWZvcih2YXIg cj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdLGk9bi5fbW9kdWxlfHxfW24udHlwZV07 aWYoaSYmaS5tYWtlc0RhdGEpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gRSh0LGUscixu KXtmb3IodmFyIGk9dC50cmFuc2Zvcm1zLGE9W3RdLG89MDtvPGkubGVuZ3RoO28rKyl7dmFy IHM9aVtvXSxsPV9bcy50eXBlXTtsJiZsLnRyYW5zZm9ybSYmKGE9bC50cmFuc2Zvcm0oYSx7 dHJhbnNmb3JtOnMsZnVsbFRyYWNlOnQsZnVsbERhdGE6ZSxsYXlvdXQ6cixmdWxsTGF5b3V0 Om4sdHJhbnNmb3JtSW5kZXg6b30pKX1yZXR1cm4gYX1mdW5jdGlvbiBMKHQpe3JldHVybiJz dHJpbmciPT10eXBlb2YgdCYmInB4Ij09PXQuc3Vic3RyKHQubGVuZ3RoLTIpJiZwYXJzZUZs b2F0KHQpfWZ1bmN0aW9uIEModCl7dmFyIGU9dC5tYXJnaW47aWYoIXQuX3NpemUpe3ZhciBy PXQuX3NpemU9e2w6TWF0aC5yb3VuZChlLmwpLHI6TWF0aC5yb3VuZChlLnIpLHQ6TWF0aC5y b3VuZChlLnQpLGI6TWF0aC5yb3VuZChlLmIpLHA6TWF0aC5yb3VuZChlLnBhZCl9O3Iudz1N YXRoLnJvdW5kKHQud2lkdGgpLXIubC1yLnIsci5oPU1hdGgucm91bmQodC5oZWlnaHQpLXIu dC1yLmJ9dC5fcHVzaG1hcmdpbnx8KHQuX3B1c2htYXJnaW49e30pLHQuX3B1c2htYXJnaW5J ZHN8fCh0Ll9wdXNobWFyZ2luSWRzPXt9KX1iLnN1cHBseURlZmF1bHRzPWZ1bmN0aW9uKHQs ZSl7dmFyIHI9ZSYmZS5za2lwVXBkYXRlQ2FsYyxuPXQuX2Z1bGxMYXlvdXR8fHt9O2lmKG4u X3NraXBEZWZhdWx0cylkZWxldGUgbi5fc2tpcERlZmF1bHRzO2Vsc2V7dmFyIG8sbD10Ll9m dWxsTGF5b3V0PXt9LGM9dC5sYXlvdXR8fHt9LGY9dC5fZnVsbERhdGF8fFtdLGg9dC5fZnVs bERhdGE9W10scD10LmRhdGF8fFtdLG09dC5jYWxjZGF0YXx8W10sZz10Ll9jb250ZXh0fHx7 fTt0Ll90cmFuc2l0aW9uRGF0YXx8Yi5jcmVhdGVUcmFuc2l0aW9uRGF0YSh0KSxsLl9kZmx0 VGl0bGU9e3Bsb3Q6eCh0LCJDbGljayB0byBlbnRlciBQbG90IHRpdGxlIikseDp4KHQsIkNs aWNrIHRvIGVudGVyIFggYXhpcyB0aXRsZSIpLHk6eCh0LCJDbGljayB0byBlbnRlciBZIGF4 aXMgdGl0bGUiKSxjb2xvcmJhcjp4KHQsIkNsaWNrIHRvIGVudGVyIENvbG9yc2NhbGUgdGl0 bGUiKSxhbm5vdGF0aW9uOngodCwibmV3IHRleHQiKX0sbC5fdHJhY2VXb3JkPXgodCwidHJh Y2UiKTt2YXIgdj1BKHQsVCk7aWYobC5fbWFwYm94QWNjZXNzVG9rZW49Zy5tYXBib3hBY2Nl c3NUb2tlbixuLl9pbml0aWFsQXV0b1NpemVJc0RvbmUpe3ZhciBfPW4ud2lkdGgsdz1uLmhl aWdodDtiLnN1cHBseUxheW91dEdsb2JhbERlZmF1bHRzKGMsbCx2KSxjLndpZHRofHwobC53 aWR0aD1fKSxjLmhlaWdodHx8KGwuaGVpZ2h0PXcpLGIuc2FuaXRpemVNYXJnaW5zKGwpfWVs c2V7Yi5zdXBwbHlMYXlvdXRHbG9iYWxEZWZhdWx0cyhjLGwsdik7dmFyIE09IWMud2lkdGh8 fCFjLmhlaWdodCxTPWwuYXV0b3NpemUsRT1nLmF1dG9zaXphYmxlO00mJihTfHxFKT9iLnBs b3RBdXRvU2l6ZSh0LGMsbCk6TSYmYi5zYW5pdGl6ZU1hcmdpbnMobCksIVMmJk0mJihjLndp ZHRoPWwud2lkdGgsYy5oZWlnaHQ9bC5oZWlnaHQpfWwuX2QzbG9jYWxlPWZ1bmN0aW9uKHQs ZSl7cmV0dXJuIHQuZGVjaW1hbD1lLmNoYXJBdCgwKSx0LnRob3VzYW5kcz1lLmNoYXJBdCgx KSx7bnVtYmVyRm9ybWF0OmZ1bmN0aW9uKGUpe3RyeXtlPWEodCkuZm9ybWF0KHUuYWRqdXN0 Rm9ybWF0KGUpKX1jYXRjaCh0KXtyZXR1cm4gdS53YXJuQmFkRm9ybWF0KGUpLHUubm9Gb3Jt YXR9cmV0dXJuIGV9LHRpbWVGb3JtYXQ6aSh0KS51dGNGb3JtYXR9fSh2LGwuc2VwYXJhdG9y cyksbC5fZXh0cmFGb3JtYXQ9QSh0LGspLGwuX2luaXRpYWxBdXRvU2l6ZUlzRG9uZT0hMCxs Ll9kYXRhTGVuZ3RoPXAubGVuZ3RoLGwuX21vZHVsZXM9W10sbC5fdmlzaWJsZU1vZHVsZXM9 W10sbC5fYmFzZVBsb3RNb2R1bGVzPVtdO3ZhciBMPWwuX3N1YnBsb3RzPWZ1bmN0aW9uKCl7 dmFyIHQsZSxyPXMuY29sbGVjdGFibGVTdWJwbG90VHlwZXMsbj17fTtpZighcil7cj1bXTt2 YXIgaT1zLnN1YnBsb3RzUmVnaXN0cnk7Zm9yKHZhciBhIGluIGkpe3ZhciBvPWlbYV0uYXR0 cjtpZihvJiYoci5wdXNoKGEpLEFycmF5LmlzQXJyYXkobykpKWZvcihlPTA7ZTxvLmxlbmd0 aDtlKyspdS5wdXNoVW5pcXVlKHIsb1tlXSl9fWZvcih0PTA7dDxyLmxlbmd0aDt0Kyspblty W3RdXT1bXTtyZXR1cm4gbn0oKSxQPWwuX3NwbG9tQXhlcz17eDp7fSx5Ont9fSxJPWwuX3Nw bG9tU3VicGxvdHM9e307bC5fc3Bsb21HcmlkRGZsdD17fSxsLl9zY2F0dGVyU3RhY2tPcHRz PXt9LGwuX2ZpcnN0U2NhdHRlcj17fSxsLl9hbGlnbm1lbnRPcHRzPXt9LGwuX2NvbG9yQXhl cz17fSxsLl9yZXF1ZXN0UmFuZ2VzbGlkZXI9e30sbC5fdHJhY2VVaWRzPWZ1bmN0aW9uKHQs ZSl7dmFyIHIsbixpPWUubGVuZ3RoLGE9W107Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFy IG89dFtyXS5fZnVsbElucHV0O28hPT1uJiZhLnB1c2gobyksbj1vfXZhciBzPWEubGVuZ3Ro LGw9bmV3IEFycmF5KGkpLGM9e307ZnVuY3Rpb24gZih0LGUpe2xbZV09dCxjW3RdPTF9ZnVu Y3Rpb24gaCh0LGUpe2lmKHQmJiJzdHJpbmciPT10eXBlb2YgdCYmIWNbdF0pcmV0dXJuIGYo dCxlKSwhMH1mb3Iocj0wO3I8aTtyKyspe3ZhciBwPWVbcl0udWlkOyJudW1iZXIiPT10eXBl b2YgcCYmKHA9U3RyaW5nKHApKSxoKHAscil8fChyPHMmJmgoYVtyXS51aWQscil8fGYodS5y YW5kc3RyKGMpLHIpKX1yZXR1cm4gbH0oZixwKSxsLl9nbG9iYWxUcmFuc2Zvcm1zPSh0Ll9j b250ZXh0fHx7fSkuZ2xvYmFsVHJhbnNmb3JtcyxiLnN1cHBseURhdGFEZWZhdWx0cyhwLGgs YyxsKTt2YXIgTz1PYmplY3Qua2V5cyhQLngpLHo9T2JqZWN0LmtleXMoUC55KTtpZihPLmxl bmd0aD4xJiZ6Lmxlbmd0aD4xKXtmb3Iocy5nZXRDb21wb25lbnRNZXRob2QoImdyaWQiLCJz aXplRGVmYXVsdHMiKShjLGwpLG89MDtvPE8ubGVuZ3RoO28rKyl1LnB1c2hVbmlxdWUoTC54 YXhpcyxPW29dKTtmb3Iobz0wO288ei5sZW5ndGg7bysrKXUucHVzaFVuaXF1ZShMLnlheGlz LHpbb10pO2Zvcih2YXIgRCBpbiBJKXUucHVzaFVuaXF1ZShMLmNhcnRlc2lhbixEKX1pZihs Ll9oYXM9Yi5faGFzUGxvdFR5cGUuYmluZChsKSxmLmxlbmd0aD09PWgubGVuZ3RoKWZvcihv PTA7bzxoLmxlbmd0aDtvKyspeShoW29dLGZbb10pO2Iuc3VwcGx5TGF5b3V0TW9kdWxlRGVm YXVsdHMoYyxsLGgsdC5fdHJhbnNpdGlvbkRhdGEpO3ZhciBSPWwuX3Zpc2libGVNb2R1bGVz LEY9W107Zm9yKG89MDtvPFIubGVuZ3RoO28rKyl7dmFyIEI9UltvXS5jcm9zc1RyYWNlRGVm YXVsdHM7QiYmdS5wdXNoVW5pcXVlKEYsQil9Zm9yKG89MDtvPEYubGVuZ3RoO28rKylGW29d KGgsbCk7bC5faGFzT25seUxhcmdlU3Bsb21zPTE9PT1sLl9iYXNlUGxvdE1vZHVsZXMubGVu Z3RoJiYic3Bsb20iPT09bC5fYmFzZVBsb3RNb2R1bGVzWzBdLm5hbWUmJk8ubGVuZ3RoPjE1 JiZ6Lmxlbmd0aD4xNSYmMD09PWwuc2hhcGVzLmxlbmd0aCYmMD09PWwuaW1hZ2VzLmxlbmd0 aCxiLmxpbmtTdWJwbG90cyhoLGwsZixuKSxiLmNsZWFuUGxvdChoLGwsZixuKTt2YXIgTj0h KCFuLl9oYXN8fCFuLl9oYXMoImdsMmQiKSksaj0hKCFsLl9oYXN8fCFsLl9oYXMoImdsMmQi KSksVT0hKCFuLl9oYXN8fCFuLl9oYXMoImNhcnRlc2lhbiIpKXx8TixWPSEoIWwuX2hhc3x8 IWwuX2hhcygiY2FydGVzaWFuIikpfHxqO1UmJiFWP24uX2JnTGF5ZXIucmVtb3ZlKCk6ViYm IVUmJihsLl9zaG91bGRDcmVhdGVCZ0xheWVyPSEwKSxuLl96b29tbGF5ZXImJiF0Ll9kcmFn Z2luZyYmZCh7X2Z1bGxMYXlvdXQ6bn0pLGZ1bmN0aW9uKHQsZSl7dmFyIHIsbj1bXTtlLm1l dGEmJihyPWUuX21ldGE9e21ldGE6ZS5tZXRhLGxheW91dDp7bWV0YTplLm1ldGF9fSk7Zm9y KHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBhPXRbaV07YS5tZXRhP25bYS5pbmRleF09 YS5fbWV0YT17bWV0YTphLm1ldGF9OmUubWV0YSYmKGEuX21ldGE9e21ldGE6ZS5tZXRhfSks ZS5tZXRhJiYoYS5fbWV0YS5sYXlvdXQ9e21ldGE6ZS5tZXRhfSl9bi5sZW5ndGgmJihyfHwo cj1lLl9tZXRhPXt9KSxyLmRhdGE9bil9KGgsbCkseShsLG4pLHMuZ2V0Q29tcG9uZW50TWV0 aG9kKCJjb2xvcnNjYWxlIiwiY3Jvc3NUcmFjZURlZmF1bHRzIikoaCxsKSxsLl9wcmVHVUl8 fChsLl9wcmVHVUk9e30pLGwuX3RyYWNlUHJlR1VJfHwobC5fdHJhY2VQcmVHVUk9e30pO3Zh ciBILHE9bC5fdHJhY2VQcmVHVUksRz17fTtmb3IoSCBpbiBxKUdbSF09Im9sZCI7Zm9yKG89 MDtvPGgubGVuZ3RoO28rKylHW0g9aFtvXS5fZnVsbElucHV0LnVpZF18fChxW0hdPXt9KSxH W0hdPSJuZXciO2ZvcihIIGluIEcpIm9sZCI9PT1HW0hdJiZkZWxldGUgcVtIXTtDKGwpLHMu Z2V0Q29tcG9uZW50TWV0aG9kKCJyYW5nZXNsaWRlciIsIm1ha2VEYXRhIikobCkscnx8bS5s ZW5ndGghPT1oLmxlbmd0aHx8Yi5zdXBwbHlEZWZhdWx0c1VwZGF0ZUNhbGMobSxoKX19LGIu c3VwcGx5RGVmYXVsdHNVcGRhdGVDYWxjPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTA7cjxl Lmxlbmd0aDtyKyspe3ZhciBuPWVbcl0saT0odFtyXXx8W10pWzBdO2lmKGkmJmkudHJhY2Up e3ZhciBhPWkudHJhY2U7aWYoYS5faGFzQ2FsY1RyYW5zZm9ybSl7dmFyIG8scyxsLGM9YS5f YXJyYXlBdHRycztmb3Iobz0wO288Yy5sZW5ndGg7bysrKXM9Y1tvXSxsPXUubmVzdGVkUHJv cGVydHkoYSxzKS5nZXQoKS5zbGljZSgpLHUubmVzdGVkUHJvcGVydHkobixzKS5zZXQobCl9 aS50cmFjZT1ufX19LGIuY3JlYXRlVHJhbnNpdGlvbkRhdGE9ZnVuY3Rpb24odCl7dC5fdHJh bnNpdGlvbkRhdGF8fCh0Ll90cmFuc2l0aW9uRGF0YT17fSksdC5fdHJhbnNpdGlvbkRhdGEu X2ZyYW1lc3x8KHQuX3RyYW5zaXRpb25EYXRhLl9mcmFtZXM9W10pLHQuX3RyYW5zaXRpb25E YXRhLl9mcmFtZUhhc2h8fCh0Ll90cmFuc2l0aW9uRGF0YS5fZnJhbWVIYXNoPXt9KSx0Ll90 cmFuc2l0aW9uRGF0YS5fY291bnRlcnx8KHQuX3RyYW5zaXRpb25EYXRhLl9jb3VudGVyPTAp LHQuX3RyYW5zaXRpb25EYXRhLl9pbnRlcnJ1cHRDYWxsYmFja3N8fCh0Ll90cmFuc2l0aW9u RGF0YS5faW50ZXJydXB0Q2FsbGJhY2tzPVtdKX0sYi5faGFzUGxvdFR5cGU9ZnVuY3Rpb24o dCl7dmFyIGUscj10aGlzLl9iYXNlUGxvdE1vZHVsZXN8fFtdO2ZvcihlPTA7ZTxyLmxlbmd0 aDtlKyspaWYocltlXS5uYW1lPT09dClyZXR1cm4hMDt2YXIgbj10aGlzLl9tb2R1bGVzfHxb XTtmb3IoZT0wO2U8bi5sZW5ndGg7ZSsrKXt2YXIgaT1uW2VdLm5hbWU7aWYoaT09PXQpcmV0 dXJuITA7dmFyIGE9cy5tb2R1bGVzW2ldO2lmKGEmJmEuY2F0ZWdvcmllc1t0XSlyZXR1cm4h MH1yZXR1cm4hMX0sYi5jbGVhblBsb3Q9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGksYSxvPW4u X2Jhc2VQbG90TW9kdWxlc3x8W107Zm9yKGk9MDtpPG8ubGVuZ3RoO2krKyl7dmFyIHM9b1tp XTtzLmNsZWFuJiZzLmNsZWFuKHQsZSxyLG4pfXZhciBsPW4uX2hhcyYmbi5faGFzKCJnbCIp LGM9ZS5faGFzJiZlLl9oYXMoImdsIik7bCYmIWMmJnZvaWQgMCE9PW4uX2dsY29udGFpbmVy JiYobi5fZ2xjb250YWluZXIuc2VsZWN0QWxsKCIuZ2wtY2FudmFzIikucmVtb3ZlKCksbi5f Z2xjb250YWluZXIuc2VsZWN0QWxsKCIubm8td2ViZ2wiKS5yZW1vdmUoKSxuLl9nbGNhbnZh cz1udWxsKTt2YXIgdT0hIW4uX2luZm9sYXllcjt0OmZvcihpPTA7aTxyLmxlbmd0aDtpKysp e3ZhciBmPXJbaV0udWlkO2ZvcihhPTA7YTx0Lmxlbmd0aDthKyspe2lmKGY9PT10W2FdLnVp ZCljb250aW51ZSB0fXUmJm4uX2luZm9sYXllci5zZWxlY3QoIi5jYiIrZikucmVtb3ZlKCl9 fSxiLmxpbmtTdWJwbG90cz1mdW5jdGlvbih0LGUscixuKXt2YXIgaSxhLG89bi5fcGxvdHN8 fHt9LGw9ZS5fcGxvdHM9e30sYz1lLl9zdWJwbG90cyxmPXtfZnVsbERhdGE6dCxfZnVsbExh eW91dDplfSxoPWMuY2FydGVzaWFuLmNvbmNhdChjLmdsMmR8fFtdKTtmb3IoaT0wO2k8aC5s ZW5ndGg7aSsrKXt2YXIgZCxtPWhbaV0sZz1vW21dLHY9cC5nZXRGcm9tSWQoZixtLCJ4Iiks eT1wLmdldEZyb21JZChmLG0sInkiKTtmb3IoZz9kPWxbbV09ZzooZD1sW21dPXt9KS5pZD1t LHYuX2NvdW50ZXJBeGVzLnB1c2goeS5faWQpLHkuX2NvdW50ZXJBeGVzLnB1c2godi5faWQp LHYuX3N1YnBsb3RzV2l0aC5wdXNoKG0pLHkuX3N1YnBsb3RzV2l0aC5wdXNoKG0pLGQueGF4 aXM9dixkLnlheGlzPXksZC5faGFzQ2xpcE9uQXhpc0ZhbHNlPSExLGE9MDthPHQubGVuZ3Ro O2ErKyl7dmFyIHg9dFthXTtpZih4LnhheGlzPT09ZC54YXhpcy5faWQmJngueWF4aXM9PT1k LnlheGlzLl9pZCYmITE9PT14LmNsaXBvbmF4aXMpe2QuX2hhc0NsaXBPbkF4aXNGYWxzZT0h MDticmVha319fXZhciBiLF89cC5saXN0KGYsbnVsbCwhMCk7Zm9yKGk9MDtpPF8ubGVuZ3Ro O2krKyl7dmFyIHc9bnVsbDsoYj1fW2ldKS5vdmVybGF5aW5nJiYodz1wLmdldEZyb21JZChm LGIub3ZlcmxheWluZykpJiZ3Lm92ZXJsYXlpbmcmJihiLm92ZXJsYXlpbmc9ITEsdz1udWxs KSxiLl9tYWluQXhpcz13fHxiLHcmJihiLmRvbWFpbj13LmRvbWFpbi5zbGljZSgpKSxiLl9h bmNob3JBeGlzPSJmcmVlIj09PWIuYW5jaG9yP251bGw6cC5nZXRGcm9tSWQoZixiLmFuY2hv cil9Zm9yKGk9MDtpPF8ubGVuZ3RoO2krKylpZigoYj1fW2ldKS5fY291bnRlckF4ZXMuc29y dChwLmlkU29ydCksYi5fc3VicGxvdHNXaXRoLnNvcnQodS5zdWJwbG90U29ydCksYi5fbWFp blN1YnBsb3Q9TShiLGUpLGIuX2NvdW50ZXJBeGVzLmxlbmd0aCYmKGIuc3Bpa2Vtb2RlJiYt MSE9PWIuc3Bpa2Vtb2RlLmluZGV4T2YoImFjcm9zcyIpfHxiLmF1dG9tYXJnaW4mJmIubWly cm9yJiYiZnJlZSIhPT1iLmFuY2hvcnx8cy5nZXRDb21wb25lbnRNZXRob2QoInJhbmdlc2xp ZGVyIiwiaXNWaXNpYmxlIikoYikpKXt2YXIgVD0xLGs9MDtmb3IoYT0wO2E8Yi5fY291bnRl ckF4ZXMubGVuZ3RoO2ErKyl7dmFyIEE9cC5nZXRGcm9tSWQoZixiLl9jb3VudGVyQXhlc1th XSk7VD1NYXRoLm1pbihULEEuZG9tYWluWzBdKSxrPU1hdGgubWF4KGssQS5kb21haW5bMV0p fVQ8ayYmKGIuX2NvdW50ZXJEb21haW5NaW49VCxiLl9jb3VudGVyRG9tYWluTWF4PWspfX0s Yi5jbGVhckV4cGFuZGVkVHJhY2VEZWZhdWx0Q29sb3JzPWZ1bmN0aW9uKHQpe3ZhciBlLHIs bjtmb3Iocj1bXSwoZT10Ll9tb2R1bGUuX2NvbG9yQXR0cnMpfHwodC5fbW9kdWxlLl9jb2xv ckF0dHJzPWU9W10sbC5jcmF3bCh0Ll9tb2R1bGUuYXR0cmlidXRlcywoZnVuY3Rpb24odCxu LGksYSl7clthXT1uLHIubGVuZ3RoPWErMSwiY29sb3IiPT09dC52YWxUeXBlJiZ2b2lkIDA9 PT10LmRmbHQmJmUucHVzaChyLmpvaW4oIi4iKSl9KSkpLG49MDtuPGUubGVuZ3RoO24rKyl7 dS5uZXN0ZWRQcm9wZXJ0eSh0LCJfaW5wdXQuIitlW25dKS5nZXQoKXx8dS5uZXN0ZWRQcm9w ZXJ0eSh0LGVbbl0pLnNldChudWxsKX19LGIuc3VwcGx5RGF0YURlZmF1bHRzPWZ1bmN0aW9u KHQsZSxyLG4pe3ZhciBpLGEsbyxsPW4uX21vZHVsZXMsZj1uLl92aXNpYmxlTW9kdWxlcyxo PW4uX2Jhc2VQbG90TW9kdWxlcyxwPTAsZD0wO2Z1bmN0aW9uIG0odCl7ZS5wdXNoKHQpO3Zh ciByPXQuX21vZHVsZTtyJiYodS5wdXNoVW5pcXVlKGwsciksITA9PT10LnZpc2libGUmJnUu cHVzaFVuaXF1ZShmLHIpLHUucHVzaFVuaXF1ZShoLHQuX21vZHVsZS5iYXNlUGxvdE1vZHVs ZSkscCsrLCExIT09dC5faW5wdXQudmlzaWJsZSYmZCsrKX1uLl90cmFuc2Zvcm1Nb2R1bGVz PVtdO3ZhciBnPXt9LHY9W10seD0oci50ZW1wbGF0ZXx8e30pLmRhdGF8fHt9LF89Yy50cmFj ZVRlbXBsYXRlcih4KTtmb3IoaT0wO2k8dC5sZW5ndGg7aSsrKXtpZihvPXRbaV0sKGE9Xy5u ZXdUcmFjZShvKSkudWlkPW4uX3RyYWNlVWlkc1tpXSxiLnN1cHBseVRyYWNlRGVmYXVsdHMo byxhLGQsbixpKSxhLmluZGV4PWksYS5faW5wdXQ9byxhLl9leHBhbmRlZEluZGV4PXAsYS50 cmFuc2Zvcm1zJiZhLnRyYW5zZm9ybXMubGVuZ3RoKWZvcih2YXIgdz0hMSE9PW8udmlzaWJs ZSYmITE9PT1hLnZpc2libGUsVD1FKGEsZSxyLG4pLGs9MDtrPFQubGVuZ3RoO2srKyl7dmFy IEE9VFtrXSxNPXtfdGVtcGxhdGU6YS5fdGVtcGxhdGUsdHlwZTphLnR5cGUsdWlkOmEudWlk K2t9O3cmJiExPT09QS52aXNpYmxlJiZkZWxldGUgQS52aXNpYmxlLGIuc3VwcGx5VHJhY2VE ZWZhdWx0cyhBLE0scCxuLGkpLHkoTSxBKSxNLmluZGV4PWksTS5faW5wdXQ9byxNLl9mdWxs SW5wdXQ9YSxNLl9leHBhbmRlZEluZGV4PXAsTS5fZXhwYW5kZWRJbnB1dD1BLG0oTSl9ZWxz ZSBhLl9mdWxsSW5wdXQ9YSxhLl9leHBhbmRlZElucHV0PWEsbShhKTtzLnRyYWNlSXMoYSwi Y2FycGV0QXhpcyIpJiYoZ1thLmNhcnBldF09YSkscy50cmFjZUlzKGEsImNhcnBldERlcGVu ZGVudCIpJiZ2LnB1c2goaSl9Zm9yKGk9MDtpPHYubGVuZ3RoO2krKylpZigoYT1lW3ZbaV1d KS52aXNpYmxlKXt2YXIgUz1nW2EuY2FycGV0XTthLl9jYXJwZXQ9UyxTJiZTLnZpc2libGU/ KGEueGF4aXM9Uy54YXhpcyxhLnlheGlzPVMueWF4aXMpOmEudmlzaWJsZT0hMX19LGIuc3Vw cGx5QW5pbWF0aW9uRGVmYXVsdHM9ZnVuY3Rpb24odCl7dmFyIGU7dD10fHx7fTt2YXIgcj17 fTtmdW5jdGlvbiBuKGUsbil7cmV0dXJuIHUuY29lcmNlKHR8fHt9LHIsbSxlLG4pfWlmKG4o Im1vZGUiKSxuKCJkaXJlY3Rpb24iKSxuKCJmcm9tY3VycmVudCIpLEFycmF5LmlzQXJyYXko dC5mcmFtZSkpZm9yKHIuZnJhbWU9W10sZT0wO2U8dC5mcmFtZS5sZW5ndGg7ZSsrKXIuZnJh bWVbZV09Yi5zdXBwbHlBbmltYXRpb25GcmFtZURlZmF1bHRzKHQuZnJhbWVbZV18fHt9KTtl bHNlIHIuZnJhbWU9Yi5zdXBwbHlBbmltYXRpb25GcmFtZURlZmF1bHRzKHQuZnJhbWV8fHt9 KTtpZihBcnJheS5pc0FycmF5KHQudHJhbnNpdGlvbikpZm9yKHIudHJhbnNpdGlvbj1bXSxl PTA7ZTx0LnRyYW5zaXRpb24ubGVuZ3RoO2UrKylyLnRyYW5zaXRpb25bZV09Yi5zdXBwbHlB bmltYXRpb25UcmFuc2l0aW9uRGVmYXVsdHModC50cmFuc2l0aW9uW2VdfHx7fSk7ZWxzZSBy LnRyYW5zaXRpb249Yi5zdXBwbHlBbmltYXRpb25UcmFuc2l0aW9uRGVmYXVsdHModC50cmFu c2l0aW9ufHx7fSk7cmV0dXJuIHJ9LGIuc3VwcGx5QW5pbWF0aW9uRnJhbWVEZWZhdWx0cz1m dW5jdGlvbih0KXt2YXIgZT17fTtmdW5jdGlvbiByKHIsbil7cmV0dXJuIHUuY29lcmNlKHR8 fHt9LGUsbS5mcmFtZSxyLG4pfXJldHVybiByKCJkdXJhdGlvbiIpLHIoInJlZHJhdyIpLGV9 LGIuc3VwcGx5QW5pbWF0aW9uVHJhbnNpdGlvbkRlZmF1bHRzPWZ1bmN0aW9uKHQpe3ZhciBl PXt9O2Z1bmN0aW9uIHIocixuKXtyZXR1cm4gdS5jb2VyY2UodHx8e30sZSxtLnRyYW5zaXRp b24scixuKX1yZXR1cm4gcigiZHVyYXRpb24iKSxyKCJlYXNpbmciKSxlfSxiLnN1cHBseUZy YW1lRGVmYXVsdHM9ZnVuY3Rpb24odCl7dmFyIGU9e307ZnVuY3Rpb24gcihyLG4pe3JldHVy biB1LmNvZXJjZSh0LGUsZyxyLG4pfXJldHVybiByKCJncm91cCIpLHIoIm5hbWUiKSxyKCJ0 cmFjZXMiKSxyKCJiYXNlZnJhbWUiKSxyKCJkYXRhIikscigibGF5b3V0IiksZX0sYi5zdXBw bHlUcmFjZURlZmF1bHRzPWZ1bmN0aW9uKHQsZSxyLG4saSl7dmFyIGEsbz1uLmNvbG9yd2F5 fHxmLmRlZmF1bHRzLGw9b1tyJW8ubGVuZ3RoXTtmdW5jdGlvbiBjKHIsbil7cmV0dXJuIHUu Y29lcmNlKHQsZSxiLmF0dHJpYnV0ZXMscixuKX12YXIgaD1jKCJ2aXNpYmxlIik7YygidHlw ZSIpLGMoIm5hbWUiLG4uX3RyYWNlV29yZCsiICIraSksYygidWlyZXZpc2lvbiIsbi51aXJl dmlzaW9uKTt2YXIgcD1iLmdldE1vZHVsZShlKTtpZihlLl9tb2R1bGU9cCxwKXt2YXIgZD1w LmJhc2VQbG90TW9kdWxlLG09ZC5hdHRyLGc9ZC5hdHRyaWJ1dGVzO2lmKG0mJmcpe3ZhciB2 PW4uX3N1YnBsb3RzLHk9IiI7aWYoaHx8ImdsMmQiIT09ZC5uYW1lKXtpZihBcnJheS5pc0Fy cmF5KG0pKWZvcihhPTA7YTxtLmxlbmd0aDthKyspe3ZhciB4PW1bYV0sXz11LmNvZXJjZSh0 LGUsZyx4KTt2W3hdJiZ1LnB1c2hVbmlxdWUodlt4XSxfKSx5Kz1ffWVsc2UgeT11LmNvZXJj ZSh0LGUsZyxtKTt2W2QubmFtZV0mJnUucHVzaFVuaXF1ZSh2W2QubmFtZV0seSl9fX1yZXR1 cm4gaCYmKGMoImN1c3RvbWRhdGEiKSxjKCJpZHMiKSxjKCJtZXRhIikscy50cmFjZUlzKGUs InNob3dMZWdlbmQiKT8odS5jb2VyY2UodCxlLHAuYXR0cmlidXRlcy5zaG93bGVnZW5kP3Au YXR0cmlidXRlczpiLmF0dHJpYnV0ZXMsInNob3dsZWdlbmQiKSxjKCJsZWdlbmRncm91cCIp LGMoImxlZ2VuZGdyb3VwdGl0bGUudGV4dCIpLGMoImxlZ2VuZHJhbmsiKSxlLl9kZmx0U2hv d0xlZ2VuZD0hMCk6ZS5fZGZsdFNob3dMZWdlbmQ9ITEscCYmcC5zdXBwbHlEZWZhdWx0cyh0 LGUsbCxuKSxzLnRyYWNlSXMoZSwibm9PcGFjaXR5Iil8fGMoIm9wYWNpdHkiKSxzLnRyYWNl SXMoZSwibm90TGVnZW5kSXNvbGF0YWJsZSIpJiYoZS52aXNpYmxlPSEhZS52aXNpYmxlKSxz LnRyYWNlSXMoZSwibm9Ib3ZlciIpfHwoZS5ob3ZlcnRlbXBsYXRlfHx1LmNvZXJjZUhvdmVy aW5mbyh0LGUsbiksInBhcmNhdHMiIT09ZS50eXBlJiZzLmdldENvbXBvbmVudE1ldGhvZCgi ZngiLCJzdXBwbHlEZWZhdWx0cyIpKHQsZSxsLG4pKSxwJiZwLnNlbGVjdFBvaW50cyYmYygi c2VsZWN0ZWRwb2ludHMiKSxiLnN1cHBseVRyYW5zZm9ybURlZmF1bHRzKHQsZSxuKSksZX0s Yi5oYXNNYWtlc0RhdGFUcmFuc2Zvcm09UyxiLnN1cHBseVRyYW5zZm9ybURlZmF1bHRzPWZ1 bmN0aW9uKHQsZSxyKXtpZihlLl9sZW5ndGh8fFModCkpe3ZhciBuPXIuX2dsb2JhbFRyYW5z Zm9ybXN8fFtdLGk9ci5fdHJhbnNmb3JtTW9kdWxlc3x8W107aWYoQXJyYXkuaXNBcnJheSh0 LnRyYW5zZm9ybXMpfHwwIT09bi5sZW5ndGgpZm9yKHZhciBhPXQudHJhbnNmb3Jtc3x8W10s bz1uLmNvbmNhdChhKSxzPWUudHJhbnNmb3Jtcz1bXSxsPTA7bDxvLmxlbmd0aDtsKyspe3Zh ciBjLGY9b1tsXSxoPWYudHlwZSxwPV9baF0sZD0hKGYuX21vZHVsZSYmZi5fbW9kdWxlPT09 cCksbT1wJiYiZnVuY3Rpb24iPT10eXBlb2YgcC50cmFuc2Zvcm07cHx8dS53YXJuKCJVbnJl Y29nbml6ZWQgdHJhbnNmb3JtIHR5cGUgIitoKyIuIikscCYmcC5zdXBwbHlEZWZhdWx0cyYm KGR8fG0pPygoYz1wLnN1cHBseURlZmF1bHRzKGYsZSxyLHQpKS50eXBlPWgsYy5fbW9kdWxl PXAsdS5wdXNoVW5pcXVlKGkscCkpOmM9dS5leHRlbmRGbGF0KHt9LGYpLHMucHVzaChjKX19 fSxiLnN1cHBseUxheW91dEdsb2JhbERlZmF1bHRzPWZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlv biBuKHIsbil7cmV0dXJuIHUuY29lcmNlKHQsZSxiLmxheW91dEF0dHJpYnV0ZXMscixuKX12 YXIgaT10LnRlbXBsYXRlO3UuaXNQbGFpbk9iamVjdChpKSYmKGUudGVtcGxhdGU9aSxlLl90 ZW1wbGF0ZT1pLmxheW91dCxlLl9kYXRhVGVtcGxhdGU9aS5kYXRhKSxuKCJhdXRvdHlwZW51 bWJlcnMiKTt2YXIgYT11LmNvZXJjZUZvbnQobiwiZm9udCIpLG89YS5zaXplO3UuY29lcmNl Rm9udChuLCJ0aXRsZS5mb250Iix1LmV4dGVuZEZsYXQoe30sYSx7c2l6ZTpNYXRoLnJvdW5k KDEuNCpvKX0pKSxuKCJ0aXRsZS50ZXh0IixlLl9kZmx0VGl0bGUucGxvdCksbigidGl0bGUu eHJlZiIpLG4oInRpdGxlLnlyZWYiKSxuKCJ0aXRsZS54IiksbigidGl0bGUueSIpLG4oInRp dGxlLnhhbmNob3IiKSxuKCJ0aXRsZS55YW5jaG9yIiksbigidGl0bGUucGFkLnQiKSxuKCJ0 aXRsZS5wYWQuciIpLG4oInRpdGxlLnBhZC5iIiksbigidGl0bGUucGFkLmwiKSxuKCJ1bmlm b3JtdGV4dC5tb2RlIikmJm4oInVuaWZvcm10ZXh0Lm1pbnNpemUiKSxuKCJhdXRvc2l6ZSIs ISh0LndpZHRoJiZ0LmhlaWdodCkpLG4oIndpZHRoIiksbigiaGVpZ2h0IiksbigibWFyZ2lu LmwiKSxuKCJtYXJnaW4uciIpLG4oIm1hcmdpbi50IiksbigibWFyZ2luLmIiKSxuKCJtYXJn aW4ucGFkIiksbigibWFyZ2luLmF1dG9leHBhbmQiKSx0LndpZHRoJiZ0LmhlaWdodCYmYi5z YW5pdGl6ZU1hcmdpbnMoZSkscy5nZXRDb21wb25lbnRNZXRob2QoImdyaWQiLCJzaXplRGVm YXVsdHMiKSh0LGUpLG4oInBhcGVyX2JnY29sb3IiKSxuKCJzZXBhcmF0b3JzIixyLmRlY2lt YWwrci50aG91c2FuZHMpLG4oImhpZGVzb3VyY2VzIiksbigiY29sb3J3YXkiKSxuKCJkYXRh cmV2aXNpb24iKTt2YXIgbD1uKCJ1aXJldmlzaW9uIik7bigiZWRpdHJldmlzaW9uIixsKSxu KCJzZWxlY3Rpb25yZXZpc2lvbiIsbCkscy5nZXRDb21wb25lbnRNZXRob2QoIm1vZGViYXIi LCJzdXBwbHlMYXlvdXREZWZhdWx0cyIpKHQsZSkscy5nZXRDb21wb25lbnRNZXRob2QoInNo YXBlcyIsInN1cHBseURyYXdOZXdTaGFwZURlZmF1bHRzIikodCxlLG4pLG4oIm1ldGEiKSx1 LmlzUGxhaW5PYmplY3QodC50cmFuc2l0aW9uKSYmKG4oInRyYW5zaXRpb24uZHVyYXRpb24i KSxuKCJ0cmFuc2l0aW9uLmVhc2luZyIpLG4oInRyYW5zaXRpb24ub3JkZXJpbmciKSkscy5n ZXRDb21wb25lbnRNZXRob2QoImNhbGVuZGFycyIsImhhbmRsZURlZmF1bHRzIikodCxlLCJj YWxlbmRhciIpLHMuZ2V0Q29tcG9uZW50TWV0aG9kKCJmeCIsInN1cHBseUxheW91dEdsb2Jh bERlZmF1bHRzIikodCxlLG4pfSxiLnBsb3RBdXRvU2l6ZT1mdW5jdGlvbih0LGUscil7dmFy IG4saSxhPXQuX2NvbnRleHR8fHt9LHM9YS5mcmFtZU1hcmdpbnMsbD11LmlzUGxvdERpdih0 KTtpZihsJiZ0LmVtaXQoInBsb3RseV9hdXRvc2l6ZSIpLGEuZmlsbEZyYW1lKW49d2luZG93 LmlubmVyV2lkdGgsaT13aW5kb3cuaW5uZXJIZWlnaHQsZG9jdW1lbnQuYm9keS5zdHlsZS5v dmVyZmxvdz0iaGlkZGVuIjtlbHNle3ZhciBjPWw/d2luZG93LmdldENvbXB1dGVkU3R5bGUo dCk6e307aWYobj1MKGMud2lkdGgpfHxMKGMubWF4V2lkdGgpfHxyLndpZHRoLGk9TChjLmhl aWdodCl8fEwoYy5tYXhIZWlnaHQpfHxyLmhlaWdodCxvKHMpJiZzPjApe3ZhciBmPTEtMipz O249TWF0aC5yb3VuZChmKm4pLGk9TWF0aC5yb3VuZChmKmkpfX12YXIgaD1iLmxheW91dEF0 dHJpYnV0ZXMud2lkdGgubWluLHA9Yi5sYXlvdXRBdHRyaWJ1dGVzLmhlaWdodC5taW47bjxo JiYobj1oKSxpPHAmJihpPXApO3ZhciBkPSFlLndpZHRoJiZNYXRoLmFicyhyLndpZHRoLW4p PjEsbT0hZS5oZWlnaHQmJk1hdGguYWJzKHIuaGVpZ2h0LWkpPjE7KG18fGQpJiYoZCYmKHIu d2lkdGg9biksbSYmKHIuaGVpZ2h0PWkpKSx0Ll9pbml0aWFsQXV0b1NpemV8fCh0Ll9pbml0 aWFsQXV0b1NpemU9e3dpZHRoOm4saGVpZ2h0Oml9KSxiLnNhbml0aXplTWFyZ2lucyhyKX0s Yi5zdXBwbHlMYXlvdXRNb2R1bGVEZWZhdWx0cz1mdW5jdGlvbih0LGUscixuKXt2YXIgaSxh LG8sbD1zLmNvbXBvbmVudHNSZWdpc3RyeSxjPWUuX2Jhc2VQbG90TW9kdWxlcyxmPXMuc3Vi cGxvdHNSZWdpc3RyeS5jYXJ0ZXNpYW47Zm9yKGkgaW4gbCkobz1sW2ldKS5pbmNsdWRlQmFz ZVBsb3QmJm8uaW5jbHVkZUJhc2VQbG90KHQsZSk7Zm9yKHZhciBoIGluIGMubGVuZ3RofHxj LnB1c2goZiksZS5faGFzKCJjYXJ0ZXNpYW4iKSYmKHMuZ2V0Q29tcG9uZW50TWV0aG9kKCJn cmlkIiwiY29udGVudERlZmF1bHRzIikodCxlKSxmLmZpbmFsaXplU3VicGxvdHModCxlKSks ZS5fc3VicGxvdHMpZS5fc3VicGxvdHNbaF0uc29ydCh1LnN1YnBsb3RTb3J0KTtmb3IoYT0w O2E8Yy5sZW5ndGg7YSsrKShvPWNbYV0pLnN1cHBseUxheW91dERlZmF1bHRzJiZvLnN1cHBs eUxheW91dERlZmF1bHRzKHQsZSxyKTt2YXIgcD1lLl9tb2R1bGVzO2ZvcihhPTA7YTxwLmxl bmd0aDthKyspKG89cFthXSkuc3VwcGx5TGF5b3V0RGVmYXVsdHMmJm8uc3VwcGx5TGF5b3V0 RGVmYXVsdHModCxlLHIpO3ZhciBkPWUuX3RyYW5zZm9ybU1vZHVsZXM7Zm9yKGE9MDthPGQu bGVuZ3RoO2ErKykobz1kW2FdKS5zdXBwbHlMYXlvdXREZWZhdWx0cyYmby5zdXBwbHlMYXlv dXREZWZhdWx0cyh0LGUscixuKTtmb3IoaSBpbiBsKShvPWxbaV0pLnN1cHBseUxheW91dERl ZmF1bHRzJiZvLnN1cHBseUxheW91dERlZmF1bHRzKHQsZSxyKX0sYi5wdXJnZT1mdW5jdGlv bih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0fHx7fTt2b2lkIDAhPT1lLl9nbGNvbnRhaW5lciYm KGUuX2dsY29udGFpbmVyLnNlbGVjdEFsbCgiLmdsLWNhbnZhcyIpLnJlbW92ZSgpLGUuX2ds Y29udGFpbmVyLnJlbW92ZSgpLGUuX2dsY2FudmFzPW51bGwpLGUuX21vZGVCYXImJmUuX21v ZGVCYXIuZGVzdHJveSgpLHQuX3RyYW5zaXRpb25EYXRhJiYodC5fdHJhbnNpdGlvbkRhdGEu X2ludGVycnVwdENhbGxiYWNrcyYmKHQuX3RyYW5zaXRpb25EYXRhLl9pbnRlcnJ1cHRDYWxs YmFja3MubGVuZ3RoPTApLHQuX3RyYW5zaXRpb25EYXRhLl9hbmltYXRpb25SYWYmJndpbmRv dy5jYW5jZWxBbmltYXRpb25GcmFtZSh0Ll90cmFuc2l0aW9uRGF0YS5fYW5pbWF0aW9uUmFm KSksdS5jbGVhclRocm90dGxlKCksdS5jbGVhclJlc3BvbnNpdmUodCksZGVsZXRlIHQuZGF0 YSxkZWxldGUgdC5sYXlvdXQsZGVsZXRlIHQuX2Z1bGxEYXRhLGRlbGV0ZSB0Ll9mdWxsTGF5 b3V0LGRlbGV0ZSB0LmNhbGNkYXRhLGRlbGV0ZSB0LmVtcHR5LGRlbGV0ZSB0LmZpZCxkZWxl dGUgdC51bmRvcXVldWUsZGVsZXRlIHQudW5kb251bSxkZWxldGUgdC5hdXRvcGxheSxkZWxl dGUgdC5jaGFuZ2VkLGRlbGV0ZSB0Ll9wcm9taXNlcyxkZWxldGUgdC5fcmVkcmF3VGltZXIs ZGVsZXRlIHQuX2htbHVtY291bnQsZGVsZXRlIHQuX2htcGl4Y291bnQsZGVsZXRlIHQuX3Ry YW5zaXRpb25EYXRhLGRlbGV0ZSB0Ll90cmFuc2l0aW9uaW5nLGRlbGV0ZSB0Ll9pbml0aWFs QXV0b1NpemUsZGVsZXRlIHQuX3RyYW5zaXRpb25pbmdXaXRoRHVyYXRpb24sZGVsZXRlIHQu X2RyYWdnaW5nLGRlbGV0ZSB0Ll9kcmFnZ2VkLGRlbGV0ZSB0Ll9kcmFnZGF0YSxkZWxldGUg dC5faG92ZXJkYXRhLGRlbGV0ZSB0Ll9zbmFwc2hvdEluUHJvZ3Jlc3MsZGVsZXRlIHQuX2Vk aXRpbmcsZGVsZXRlIHQuX21vdXNlRG93blRpbWUsZGVsZXRlIHQuX2xlZ2VuZE1vdXNlRG93 blRpbWUsdC5yZW1vdmVBbGxMaXN0ZW5lcnMmJnQucmVtb3ZlQWxsTGlzdGVuZXJzKCl9LGIu c3R5bGU9ZnVuY3Rpb24odCl7dmFyIGUscj10Ll9mdWxsTGF5b3V0Ll92aXNpYmxlTW9kdWxl cyxuPVtdO2ZvcihlPTA7ZTxyLmxlbmd0aDtlKyspe3ZhciBpPXJbZV07aS5zdHlsZSYmdS5w dXNoVW5pcXVlKG4saS5zdHlsZSl9Zm9yKGU9MDtlPG4ubGVuZ3RoO2UrKyluW2VdKHQpfSxi LnNhbml0aXplTWFyZ2lucz1mdW5jdGlvbih0KXtpZih0JiZ0Lm1hcmdpbil7dmFyIGUscj10 LndpZHRoLG49dC5oZWlnaHQsaT10Lm1hcmdpbixhPXItKGkubCtpLnIpLG89bi0oaS50K2ku Yik7YTwwJiYoZT0oci0xKS8oaS5sK2kuciksaS5sPU1hdGguZmxvb3IoZSppLmwpLGkucj1N YXRoLmZsb29yKGUqaS5yKSksbzwwJiYoZT0obi0xKS8oaS50K2kuYiksaS50PU1hdGguZmxv b3IoZSppLnQpLGkuYj1NYXRoLmZsb29yKGUqaS5iKSl9fSxiLmNsZWFyQXV0b01hcmdpbklk cz1mdW5jdGlvbih0KXt0Ll9mdWxsTGF5b3V0Ll9wdXNobWFyZ2luSWRzPXt9fSxiLmFsbG93 QXV0b01hcmdpbj1mdW5jdGlvbih0LGUpe3QuX2Z1bGxMYXlvdXQuX3B1c2htYXJnaW5JZHNb ZV09MX07Yi5hdXRvTWFyZ2luPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10Ll9mdWxsTGF5b3V0 LGk9bi53aWR0aCxhPW4uaGVpZ2h0LG89bi5tYXJnaW4scz11LmNvbnN0cmFpbihpLW8ubC1v LnIsMiw2NCksbD11LmNvbnN0cmFpbihhLW8udC1vLmIsMiw2NCksYz1NYXRoLm1heCgwLGkt cyksZj1NYXRoLm1heCgwLGEtbCksaD1uLl9wdXNobWFyZ2luLHA9bi5fcHVzaG1hcmdpbklk cztpZighMSE9PW8uYXV0b2V4cGFuZCl7aWYocil7dmFyIGQ9ci5wYWQ7aWYodm9pZCAwPT09 ZCYmKGQ9TWF0aC5taW4oMTIsby5sLG8ucixvLnQsby5iKSksYyl7dmFyIG09KHIubCtyLnIp L2M7bT4xJiYoci5sLz1tLHIuci89bSl9aWYoZil7dmFyIGc9KHIudCtyLmIpL2Y7Zz4xJiYo ci50Lz1nLHIuYi89Zyl9dmFyIHY9dm9pZCAwIT09ci54bD9yLnhsOnIueCx5PXZvaWQgMCE9 PXIueHI/ci54cjpyLngseD12b2lkIDAhPT1yLnl0P3IueXQ6ci55LF89dm9pZCAwIT09ci55 Yj9yLnliOnIueTtoW2VdPXtsOnt2YWw6dixzaXplOnIubCtkfSxyOnt2YWw6eSxzaXplOnIu citkfSxiOnt2YWw6XyxzaXplOnIuYitkfSx0Ont2YWw6eCxzaXplOnIudCtkfX0scFtlXT0x fWVsc2UgZGVsZXRlIGhbZV0sZGVsZXRlIHBbZV07aWYoIW4uX3JlcGxvdHRpbmcpcmV0dXJu IGIuZG9BdXRvTWFyZ2luKHQpfX0sYi5kb0F1dG9NYXJnaW49ZnVuY3Rpb24odCl7dmFyIGU9 dC5fZnVsbExheW91dCxyPWUud2lkdGgsbj1lLmhlaWdodDtlLl9zaXplfHwoZS5fc2l6ZT17 fSksQyhlKTt2YXIgaT1lLl9zaXplLGE9ZS5tYXJnaW4sbD11LmV4dGVuZEZsYXQoe30saSks Yz1hLmwsZj1hLnIsaD1hLnQsZD1hLmIsbT1lLl9wdXNobWFyZ2luLGc9ZS5fcHVzaG1hcmdp bklkcztpZighMSE9PWUubWFyZ2luLmF1dG9leHBhbmQpe2Zvcih2YXIgdiBpbiBtKWdbdl18 fGRlbGV0ZSBtW3ZdO2Zvcih2YXIgeSBpbiBtLmJhc2U9e2w6e3ZhbDowLHNpemU6Y30scjp7 dmFsOjEsc2l6ZTpmfSx0Ont2YWw6MSxzaXplOmh9LGI6e3ZhbDowLHNpemU6ZH19LG0pe3Zh ciB4PW1beV0ubHx8e30sXz1tW3ldLmJ8fHt9LHc9eC52YWwsVD14LnNpemUsaz1fLnZhbCxB PV8uc2l6ZTtmb3IodmFyIE0gaW4gbSl7aWYobyhUKSYmbVtNXS5yKXt2YXIgUz1tW01dLnIu dmFsLEU9bVtNXS5yLnNpemU7aWYoUz53KXt2YXIgTD0oVCpTKyhFLXIpKncpLyhTLXcpLFA9 KEUqKDEtdykrKFQtcikqKDEtUykpLyhTLXcpO0wrUD5jK2YmJihjPUwsZj1QKX19aWYobyhB KSYmbVtNXS50KXt2YXIgST1tW01dLnQudmFsLE89bVtNXS50LnNpemU7aWYoST5rKXt2YXIg ej0oQSpJKyhPLW4pKmspLyhJLWspLEQ9KE8qKDEtaykrKEEtbikqKDEtSSkpLyhJLWspO3or RD5kK2gmJihkPXosaD1EKX19fX19dmFyIFI9dS5jb25zdHJhaW4oci1hLmwtYS5yLDIsNjQp LEY9dS5jb25zdHJhaW4obi1hLnQtYS5iLDIsNjQpLEI9TWF0aC5tYXgoMCxyLVIpLE49TWF0 aC5tYXgoMCxuLUYpO2lmKEIpe3ZhciBqPShjK2YpL0I7aj4xJiYoYy89aixmLz1qKX1pZihO KXt2YXIgVT0oZCtoKS9OO1U+MSYmKGQvPVUsaC89VSl9aWYoaS5sPU1hdGgucm91bmQoYyks aS5yPU1hdGgucm91bmQoZiksaS50PU1hdGgucm91bmQoaCksaS5iPU1hdGgucm91bmQoZCks aS5wPU1hdGgucm91bmQoYS5wYWQpLGkudz1NYXRoLnJvdW5kKHIpLWkubC1pLnIsaS5oPU1h dGgucm91bmQobiktaS50LWkuYiwhZS5fcmVwbG90dGluZyYmYi5kaWRNYXJnaW5DaGFuZ2Uo bCxpKSl7Il9yZWRyYXdGcm9tQXV0b01hcmdpbkNvdW50ImluIGU/ZS5fcmVkcmF3RnJvbUF1 dG9NYXJnaW5Db3VudCsrOmUuX3JlZHJhd0Zyb21BdXRvTWFyZ2luQ291bnQ9MTt2YXIgVj0z KigxK09iamVjdC5rZXlzKGcpLmxlbmd0aCk7aWYoZS5fcmVkcmF3RnJvbUF1dG9NYXJnaW5D b3VudDxWKXJldHVybiBzLmNhbGwoIl9kb1Bsb3QiLHQpO2UuX3NpemU9bCx1Lndhcm4oIlRv byBtYW55IGF1dG8tbWFyZ2luIHJlZHJhd3MuIil9IWZ1bmN0aW9uKHQpe3ZhciBlPXAubGlz dCh0LCIiLCEwKTtbIl9hZGp1c3RUaWNrTGFiZWxzT3ZlcmZsb3ciLCJfaGlkZUNvdW50ZXJB eGlzSW5zaWRlVGlja0xhYmVscyJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2Zvcih2YXIgcj0w O3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdW3RdO24mJm4oKX19KSl9KHQpfTt2YXIgUD1b ImwiLCJyIiwidCIsImIiLCJwIiwidyIsImgiXTtmdW5jdGlvbiBJKHQsZSxyKXt2YXIgbj0h MTt2YXIgaT1bYi5wcmV2aW91c1Byb21pc2VzLGZ1bmN0aW9uKCl7aWYodC5fdHJhbnNpdGlv bkRhdGEpcmV0dXJuIHQuX3RyYW5zaXRpb25pbmc9ITEsZnVuY3Rpb24odCl7dmFyIGU9UHJv bWlzZS5yZXNvbHZlKCk7aWYoIXQpcmV0dXJuIGU7Zm9yKDt0Lmxlbmd0aDspZT1lLnRoZW4o dC5zaGlmdCgpKTtyZXR1cm4gZX0odC5fdHJhbnNpdGlvbkRhdGEuX2ludGVycnVwdENhbGxi YWNrcyl9LHIucHJlcGFyZUZuLGIucmVob3ZlcixmdW5jdGlvbigpe3JldHVybiB0LmVtaXQo InBsb3RseV90cmFuc2l0aW9uaW5nIixbXSksbmV3IFByb21pc2UoKGZ1bmN0aW9uKGkpe3Qu X3RyYW5zaXRpb25pbmc9ITAsZS5kdXJhdGlvbj4wJiYodC5fdHJhbnNpdGlvbmluZ1dpdGhE dXJhdGlvbj0hMCksdC5fdHJhbnNpdGlvbkRhdGEuX2ludGVycnVwdENhbGxiYWNrcy5wdXNo KChmdW5jdGlvbigpe249ITB9KSksci5yZWRyYXcmJnQuX3RyYW5zaXRpb25EYXRhLl9pbnRl cnJ1cHRDYWxsYmFja3MucHVzaCgoZnVuY3Rpb24oKXtyZXR1cm4gcy5jYWxsKCJyZWRyYXci LHQpfSkpLHQuX3RyYW5zaXRpb25EYXRhLl9pbnRlcnJ1cHRDYWxsYmFja3MucHVzaCgoZnVu Y3Rpb24oKXt0LmVtaXQoInBsb3RseV90cmFuc2l0aW9uaW50ZXJydXB0ZWQiLFtdKX0pKTt2 YXIgYT0wLG89MDtmdW5jdGlvbiBsKCl7cmV0dXJuIGErKyxmdW5jdGlvbigpe28rKyxufHxv IT09YXx8ZnVuY3Rpb24oZSl7aWYoIXQuX3RyYW5zaXRpb25EYXRhKXJldHVybjsoZnVuY3Rp b24odCl7aWYodClmb3IoO3QubGVuZ3RoOyl0LnNoaWZ0KCl9KSh0Ll90cmFuc2l0aW9uRGF0 YS5faW50ZXJydXB0Q2FsbGJhY2tzKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKChmdW5jdGlv bigpe2lmKHIucmVkcmF3KXJldHVybiBzLmNhbGwoInJlZHJhdyIsdCl9KSkudGhlbigoZnVu Y3Rpb24oKXt0Ll90cmFuc2l0aW9uaW5nPSExLHQuX3RyYW5zaXRpb25pbmdXaXRoRHVyYXRp b249ITEsdC5lbWl0KCJwbG90bHlfdHJhbnNpdGlvbmVkIixbXSl9KSkudGhlbihlKX0oaSl9 fXIucnVuRm4obCksc2V0VGltZW91dChsKCkpfSkpfV0sYT11LnN5bmNPckFzeW5jKGksdCk7 cmV0dXJuIGEmJmEudGhlbnx8KGE9UHJvbWlzZS5yZXNvbHZlKCkpLGEudGhlbigoZnVuY3Rp b24oKXtyZXR1cm4gdH0pKX1iLmRpZE1hcmdpbkNoYW5nZT1mdW5jdGlvbih0LGUpe2Zvcih2 YXIgcj0wO3I8UC5sZW5ndGg7cisrKXt2YXIgbj1QW3JdLGk9dFtuXSxhPWVbbl07aWYoIW8o aSl8fE1hdGguYWJzKGEtaSk+MSlyZXR1cm4hMH1yZXR1cm4hMX0sYi5ncmFwaEpzb249ZnVu Y3Rpb24odCxlLHIsbixpLGEpeyhpJiZlJiYhdC5fZnVsbERhdGF8fGkmJiFlJiYhdC5fZnVs bExheW91dCkmJmIuc3VwcGx5RGVmYXVsdHModCk7dmFyIG89aT90Ll9mdWxsRGF0YTp0LmRh dGEscz1pP3QuX2Z1bGxMYXlvdXQ6dC5sYXlvdXQsbD0odC5fdHJhbnNpdGlvbkRhdGF8fHt9 KS5fZnJhbWVzO2Z1bmN0aW9uIGModCxlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1 cm4gZT8iX2Z1bmN0aW9uXyI6bnVsbDtpZih1LmlzUGxhaW5PYmplY3QodCkpe3ZhciBuLGk9 e307cmV0dXJuIE9iamVjdC5rZXlzKHQpLnNvcnQoKS5mb3JFYWNoKChmdW5jdGlvbihhKXtp ZigtMT09PVsiXyIsIlsiXS5pbmRleE9mKGEuY2hhckF0KDApKSlpZigiZnVuY3Rpb24iIT10 eXBlb2YgdFthXSl7aWYoImtlZXBkYXRhIj09PXIpe2lmKCJzcmMiPT09YS5zdWJzdHIoYS5s ZW5ndGgtMykpcmV0dXJufWVsc2UgaWYoImtlZXBzdHJlYW0iPT09cil7aWYoInN0cmluZyI9 PXR5cGVvZihuPXRbYSsic3JjIl0pJiZuLmluZGV4T2YoIjoiKT4wJiYhdS5pc1BsYWluT2Jq ZWN0KHQuc3RyZWFtKSlyZXR1cm59ZWxzZSBpZigia2VlcGFsbCIhPT1yJiYic3RyaW5nIj09 dHlwZW9mKG49dFthKyJzcmMiXSkmJm4uaW5kZXhPZigiOiIpPjApcmV0dXJuO2lbYV09Yyh0 W2FdLGUpfWVsc2UgZSYmKGlbYV09Il9mdW5jdGlvbiIpfSkpLGl9cmV0dXJuIEFycmF5Lmlz QXJyYXkodCk/dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBjKHQsZSl9KSk6dS5pc1R5cGVk QXJyYXkodCk/dS5zaW1wbGVNYXAodCx1LmlkZW50aXR5KTp1LmlzSlNEYXRlKHQpP3UubXMy RGF0ZVRpbWVMb2NhbCgrdCk6dH12YXIgZj17ZGF0YToob3x8W10pLm1hcCgoZnVuY3Rpb24o dCl7dmFyIHI9Yyh0KTtyZXR1cm4gZSYmZGVsZXRlIHIuZml0LHJ9KSl9O2lmKCFlJiYoZi5s YXlvdXQ9YyhzKSxpKSl7dmFyIGg9cy5fc2l6ZTtmLmxheW91dC5jb21wdXRlZD17bWFyZ2lu OntiOmguYixsOmgubCxyOmgucix0OmgudH19fXJldHVybiBsJiYoZi5mcmFtZXM9YyhsKSks YSYmKGYuY29uZmlnPWModC5fY29udGV4dCwhMCkpLCJvYmplY3QiPT09bj9mOkpTT04uc3Ry aW5naWZ5KGYpfSxiLm1vZGlmeUZyYW1lcz1mdW5jdGlvbih0LGUpe3ZhciByLG4saSxhPXQu X3RyYW5zaXRpb25EYXRhLl9mcmFtZXMsbz10Ll90cmFuc2l0aW9uRGF0YS5fZnJhbWVIYXNo O2ZvcihyPTA7cjxlLmxlbmd0aDtyKyspc3dpdGNoKChuPWVbcl0pLnR5cGUpe2Nhc2UicmVw bGFjZSI6aT1uLnZhbHVlO3ZhciBzPShhW24uaW5kZXhdfHx7fSkubmFtZSxsPWkubmFtZTth W24uaW5kZXhdPW9bbF09aSxsIT09cyYmKGRlbGV0ZSBvW3NdLG9bbF09aSk7YnJlYWs7Y2Fz ZSJpbnNlcnQiOm9bKGk9bi52YWx1ZSkubmFtZV09aSxhLnNwbGljZShuLmluZGV4LDAsaSk7 YnJlYWs7Y2FzZSJkZWxldGUiOmRlbGV0ZSBvWyhpPWFbbi5pbmRleF0pLm5hbWVdLGEuc3Bs aWNlKG4uaW5kZXgsMSl9cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfSxiLmNvbXB1dGVGcmFt ZT1mdW5jdGlvbih0LGUpe3ZhciByLG4saSxhLG89dC5fdHJhbnNpdGlvbkRhdGEuX2ZyYW1l SGFzaDtpZighZSl0aHJvdyBuZXcgRXJyb3IoImNvbXB1dGVGcmFtZSBtdXN0IGJlIGdpdmVu IGEgc3RyaW5nIGZyYW1lIG5hbWUiKTt2YXIgcz1vW2UudG9TdHJpbmcoKV07aWYoIXMpcmV0 dXJuITE7Zm9yKHZhciBsPVtzXSxjPVtzLm5hbWVdO3MuYmFzZWZyYW1lJiYocz1vW3MuYmFz ZWZyYW1lLnRvU3RyaW5nKCldKSYmLTE9PT1jLmluZGV4T2Yocy5uYW1lKTspbC5wdXNoKHMp LGMucHVzaChzLm5hbWUpO2Zvcih2YXIgdT17fTtzPWwucG9wKCk7KWlmKHMubGF5b3V0JiYo dS5sYXlvdXQ9Yi5leHRlbmRMYXlvdXQodS5sYXlvdXQscy5sYXlvdXQpKSxzLmRhdGEpe2lm KHUuZGF0YXx8KHUuZGF0YT1bXSksIShuPXMudHJhY2VzKSlmb3Iobj1bXSxyPTA7cjxzLmRh dGEubGVuZ3RoO3IrKyluW3JdPXI7Zm9yKHUudHJhY2VzfHwodS50cmFjZXM9W10pLHI9MDty PHMuZGF0YS5sZW5ndGg7cisrKW51bGwhPShpPW5bcl0pJiYoLTE9PT0oYT11LnRyYWNlcy5p bmRleE9mKGkpKSYmKGE9dS5kYXRhLmxlbmd0aCx1LnRyYWNlc1thXT1pKSx1LmRhdGFbYV09 Yi5leHRlbmRUcmFjZSh1LmRhdGFbYV0scy5kYXRhW3JdKSl9cmV0dXJuIHV9LGIucmVjb21w dXRlRnJhbWVIYXNoPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Ll90cmFuc2l0aW9uRGF0YS5f ZnJhbWVIYXNoPXt9LHI9dC5fdHJhbnNpdGlvbkRhdGEuX2ZyYW1lcyxuPTA7bjxyLmxlbmd0 aDtuKyspe3ZhciBpPXJbbl07aSYmaS5uYW1lJiYoZVtpLm5hbWVdPWkpfX0sYi5leHRlbmRP YmplY3RXaXRoQ29udGFpbmVycz1mdW5jdGlvbih0LGUscil7dmFyIG4saSxhLG8scyxsLGMs Zj11LmV4dGVuZERlZXBOb0FycmF5cyh7fSxlfHx7fSksaD11LmV4cGFuZE9iamVjdFBhdGhz KGYpLHA9e307aWYociYmci5sZW5ndGgpZm9yKGE9MDthPHIubGVuZ3RoO2ErKyl2b2lkIDA9 PT0oaT0obj11Lm5lc3RlZFByb3BlcnR5KGgsclthXSkpLmdldCgpKT91Lm5lc3RlZFByb3Bl cnR5KHAsclthXSkuc2V0KG51bGwpOihuLnNldChudWxsKSx1Lm5lc3RlZFByb3BlcnR5KHAs clthXSkuc2V0KGkpKTtpZih0PXUuZXh0ZW5kRGVlcE5vQXJyYXlzKHR8fHt9LGgpLHImJnIu bGVuZ3RoKWZvcihhPTA7YTxyLmxlbmd0aDthKyspaWYobD11Lm5lc3RlZFByb3BlcnR5KHAs clthXSkuZ2V0KCkpe2ZvcihjPShzPXUubmVzdGVkUHJvcGVydHkodCxyW2FdKSkuZ2V0KCks QXJyYXkuaXNBcnJheShjKXx8KGM9W10scy5zZXQoYykpLG89MDtvPGwubGVuZ3RoO28rKyl7 dmFyIGQ9bFtvXTtjW29dPW51bGw9PT1kP251bGw6Yi5leHRlbmRPYmplY3RXaXRoQ29udGFp bmVycyhjW29dLGQpfXMuc2V0KGMpfXJldHVybiB0fSxiLmRhdGFBcnJheUNvbnRhaW5lcnM9 WyJ0cmFuc2Zvcm1zIiwiZGltZW5zaW9ucyJdLGIubGF5b3V0QXJyYXlDb250YWluZXJzPXMu bGF5b3V0QXJyYXlDb250YWluZXJzLGIuZXh0ZW5kVHJhY2U9ZnVuY3Rpb24odCxlKXtyZXR1 cm4gYi5leHRlbmRPYmplY3RXaXRoQ29udGFpbmVycyh0LGUsYi5kYXRhQXJyYXlDb250YWlu ZXJzKX0sYi5leHRlbmRMYXlvdXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gYi5leHRlbmRPYmpl Y3RXaXRoQ29udGFpbmVycyh0LGUsYi5sYXlvdXRBcnJheUNvbnRhaW5lcnMpfSxiLnRyYW5z aXRpb249ZnVuY3Rpb24odCxlLHIsbixpLGEpe3ZhciBvPXtyZWRyYXc6aS5yZWRyYXd9LHM9 e30sbD1bXTtyZXR1cm4gby5wcmVwYXJlRm49ZnVuY3Rpb24oKXtmb3IodmFyIGk9QXJyYXku aXNBcnJheShlKT9lLmxlbmd0aDowLGE9bi5zbGljZSgwLGkpLG89MDtvPGEubGVuZ3RoO28r Kyl7dmFyIGM9YVtvXSxmPXQuX2Z1bGxEYXRhW2NdLl9tb2R1bGU7aWYoZil7aWYoZi5hbmlt YXRhYmxlKXt2YXIgaD1mLmJhc2VQbG90TW9kdWxlLm5hbWU7c1toXXx8KHNbaF09W10pLHNb aF0ucHVzaChjKX10LmRhdGFbYVtvXV09Yi5leHRlbmRUcmFjZSh0LmRhdGFbYVtvXV0sZVtv XSl9fXZhciBwPXUuZXhwYW5kT2JqZWN0UGF0aHModS5leHRlbmREZWVwTm9BcnJheXMoe30s cikpLGQ9L15beHldYXhpc1swLTldKiQvO2Zvcih2YXIgbSBpbiBwKWQudGVzdChtKSYmZGVs ZXRlIHBbbV0ucmFuZ2U7Yi5leHRlbmRMYXlvdXQodC5sYXlvdXQscCksZGVsZXRlIHQuY2Fs Y2RhdGEsYi5zdXBwbHlEZWZhdWx0cyh0KSxiLmRvQ2FsY2RhdGEodCk7dmFyIGc9dS5leHBh bmRPYmplY3RQYXRocyhyKTtpZihnKXt2YXIgdj10Ll9mdWxsTGF5b3V0Ll9wbG90cztmb3Io dmFyIHkgaW4gdil7dmFyIHg9dlt5XSxfPXgueGF4aXMsdz14LnlheGlzLFQ9Xy5yYW5nZS5z bGljZSgpLGs9dy5yYW5nZS5zbGljZSgpLEE9bnVsbCxNPW51bGwsUz1udWxsLEU9bnVsbDtB cnJheS5pc0FycmF5KGdbXy5fbmFtZSsiLnJhbmdlIl0pP0E9Z1tfLl9uYW1lKyIucmFuZ2Ui XS5zbGljZSgpOkFycmF5LmlzQXJyYXkoKGdbXy5fbmFtZV18fHt9KS5yYW5nZSkmJihBPWdb Xy5fbmFtZV0ucmFuZ2Uuc2xpY2UoKSksQXJyYXkuaXNBcnJheShnW3cuX25hbWUrIi5yYW5n ZSJdKT9NPWdbdy5fbmFtZSsiLnJhbmdlIl0uc2xpY2UoKTpBcnJheS5pc0FycmF5KChnW3cu X25hbWVdfHx7fSkucmFuZ2UpJiYoTT1nW3cuX25hbWVdLnJhbmdlLnNsaWNlKCkpLFQmJkEm JihfLnIybChUWzBdKSE9PV8ucjJsKEFbMF0pfHxfLnIybChUWzFdKSE9PV8ucjJsKEFbMV0p KSYmKFM9e3hyMDpULHhyMTpBfSksayYmTSYmKHcucjJsKGtbMF0pIT09dy5yMmwoTVswXSl8 fHcucjJsKGtbMV0pIT09dy5yMmwoTVsxXSkpJiYoRT17eXIwOmsseXIxOk19KSwoU3x8RSkm JmwucHVzaCh1LmV4dGVuZEZsYXQoe3Bsb3RpbmZvOnh9LFMsRSkpfX1yZXR1cm4gUHJvbWlz ZS5yZXNvbHZlKCl9LG8ucnVuRm49ZnVuY3Rpb24oZSl7dmFyIG4saSxvPXQuX2Z1bGxMYXlv dXQuX2Jhc2VQbG90TW9kdWxlcyxjPWwubGVuZ3RoO2lmKHIpZm9yKGk9MDtpPG8ubGVuZ3Ro O2krKylvW2ldLnRyYW5zaXRpb25BeGVzJiZvW2ldLnRyYW5zaXRpb25BeGVzKHQsbCxhLGUp O2Zvcih2YXIgZiBpbiBjPygobj11LmV4dGVuZEZsYXQoe30sYSkpLmR1cmF0aW9uPTAsZGVs ZXRlIHMuY2FydGVzaWFuKTpuPWEscyl7dmFyIGg9c1tmXTt0Ll9mdWxsRGF0YVtoWzBdXS5f bW9kdWxlLmJhc2VQbG90TW9kdWxlLnBsb3QodCxoLG4sZSl9fSxJKHQsYSxvKX0sYi50cmFu c2l0aW9uRnJvbVJlYWN0PWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXQuX2Z1bGxMYXlvdXQs YT1pLnRyYW5zaXRpb24sbz17fSxzPVtdO3JldHVybiBvLnByZXBhcmVGbj1mdW5jdGlvbigp e3ZhciB0PWkuX3Bsb3RzO2Zvcih2YXIgYSBpbiBvLnJlZHJhdz0hMSwic29tZSI9PT1lLmFu aW0mJihvLnJlZHJhdz0hMCksInNvbWUiPT09ci5hbmltJiYoby5yZWRyYXc9ITApLHQpe3Zh ciBsPXRbYV0sYz1sLnhheGlzLGY9bC55YXhpcyxoPW5bYy5fbmFtZV0ucmFuZ2Uuc2xpY2Uo KSxwPW5bZi5fbmFtZV0ucmFuZ2Uuc2xpY2UoKSxkPWMucmFuZ2Uuc2xpY2UoKSxtPWYucmFu Z2Uuc2xpY2UoKTtjLnNldFNjYWxlKCksZi5zZXRTY2FsZSgpO3ZhciBnPW51bGwsdj1udWxs O2MucjJsKGhbMF0pPT09Yy5yMmwoZFswXSkmJmMucjJsKGhbMV0pPT09Yy5yMmwoZFsxXSl8 fChnPXt4cjA6aCx4cjE6ZH0pLGYucjJsKHBbMF0pPT09Zi5yMmwobVswXSkmJmYucjJsKHBb MV0pPT09Zi5yMmwobVsxXSl8fCh2PXt5cjA6cCx5cjE6bX0pLChnfHx2KSYmcy5wdXNoKHUu ZXh0ZW5kRmxhdCh7cGxvdGluZm86bH0sZyx2KSl9cmV0dXJuIFByb21pc2UucmVzb2x2ZSgp fSxvLnJ1bkZuPWZ1bmN0aW9uKHIpe2Zvcih2YXIgbixpLG8sbD10Ll9mdWxsRGF0YSxjPXQu X2Z1bGxMYXlvdXQuX2Jhc2VQbG90TW9kdWxlcyxmPVtdLGg9MDtoPGwubGVuZ3RoO2grKylm LnB1c2goaCk7ZnVuY3Rpb24gcCgpe2lmKHQuX2Z1bGxMYXlvdXQpZm9yKHZhciBlPTA7ZTxj Lmxlbmd0aDtlKyspY1tlXS50cmFuc2l0aW9uQXhlcyYmY1tlXS50cmFuc2l0aW9uQXhlcyh0 LHMsbixyKX1mdW5jdGlvbiBkKCl7aWYodC5fZnVsbExheW91dClmb3IodmFyIGU9MDtlPGMu bGVuZ3RoO2UrKyljW2VdLnBsb3QodCxvLGkscil9cy5sZW5ndGgmJmUuYW5pbT8idHJhY2Vz IGZpcnN0Ij09PWEub3JkZXJpbmc/KG49dS5leHRlbmRGbGF0KHt9LGEse2R1cmF0aW9uOjB9 KSxvPWYsaT1hLHNldFRpbWVvdXQocCxhLmR1cmF0aW9uKSxkKCkpOihuPWEsbz1udWxsLGk9 dS5leHRlbmRGbGF0KHt9LGEse2R1cmF0aW9uOjB9KSxzZXRUaW1lb3V0KGQsbi5kdXJhdGlv bikscCgpKTpzLmxlbmd0aD8obj1hLHAoKSk6ZS5hbmltJiYobz1mLGk9YSxkKCkpfSxJKHQs YSxvKX0sYi5kb0NhbGNkYXRhPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixpLGEsbz1wLmxpc3Qo dCksYz10Ll9mdWxsRGF0YSxmPXQuX2Z1bGxMYXlvdXQsZD1uZXcgQXJyYXkoYy5sZW5ndGgp LG09KHQuY2FsY2RhdGF8fFtdKS5zbGljZSgpO2Zvcih0LmNhbGNkYXRhPWQsZi5fbnVtQm94 ZXM9MCxmLl9udW1WaW9saW5zPTAsZi5fdmlvbGluU2NhbGVHcm91cFN0YXRzPXt9LHQuX2ht cGl4Y291bnQ9MCx0Ll9obWx1bWNvdW50PTAsZi5fcGllY29sb3JtYXA9e30sZi5fc3VuYnVy c3Rjb2xvcm1hcD17fSxmLl90cmVlbWFwY29sb3JtYXA9e30sZi5faWNpY2xlY29sb3JtYXA9 e30sZi5fZnVubmVsYXJlYWNvbG9ybWFwPXt9LGk9MDtpPGMubGVuZ3RoO2krKylBcnJheS5p c0FycmF5KGUpJiYtMT09PWUuaW5kZXhPZihpKSYmKGRbaV09bVtpXSk7Zm9yKGk9MDtpPGMu bGVuZ3RoO2krKykocj1jW2ldKS5fYXJyYXlBdHRycz1sLmZpbmRBcnJheUF0dHJpYnV0ZXMo ciksci5fZXh0cmVtZXM9e307dmFyIGc9Zi5fc3VicGxvdHMucG9sYXJ8fFtdO2ZvcihpPTA7 aTxnLmxlbmd0aDtpKyspby5wdXNoKGZbZ1tpXV0ucmFkaWFsYXhpcyxmW2dbaV1dLmFuZ3Vs YXJheGlzKTtmb3IodmFyIHYgaW4gZi5fY29sb3JBeGVzKXt2YXIgeT1mW3ZdOyExIT09eS5j YXV0byYmKGRlbGV0ZSB5LmNtaW4sZGVsZXRlIHkuY21heCl9dmFyIHg9ITE7ZnVuY3Rpb24g YihlKXtpZihyPWNbZV0sbj1yLl9tb2R1bGUsITA9PT1yLnZpc2libGUmJnIudHJhbnNmb3Jt cyl7aWYobiYmbi5jYWxjKXt2YXIgaT1uLmNhbGModCxyKTtpWzBdJiZpWzBdLnQmJmlbMF0u dC5fc2NlbmUmJmRlbGV0ZSBpWzBdLnQuX3NjZW5lLmRpcnR5fWZvcihhPTA7YTxyLnRyYW5z Zm9ybXMubGVuZ3RoO2ErKyl7dmFyIG89ci50cmFuc2Zvcm1zW2FdOyhuPV9bby50eXBlXSkm Jm4uY2FsY1RyYW5zZm9ybSYmKHIuX2hhc0NhbGNUcmFuc2Zvcm09ITAseD0hMCxuLmNhbGNU cmFuc2Zvcm0odCxyLG8pKX19fWZ1bmN0aW9uIHcoZSxpKXtpZihyPWNbZV0sISEobj1yLl9t b2R1bGUpLmlzQ29udGFpbmVyPT09aSl7dmFyIG89W107aWYoITA9PT1yLnZpc2libGUmJjAh PT1yLl9sZW5ndGgpe2RlbGV0ZSByLl9pbmRleFRvUG9pbnRzO3ZhciBzPXIudHJhbnNmb3Jt c3x8W107Zm9yKGE9cy5sZW5ndGgtMTthPj0wO2EtLSlpZihzW2FdLmVuYWJsZWQpe3IuX2lu ZGV4VG9Qb2ludHM9c1thXS5faW5kZXhUb1BvaW50czticmVha31uJiZuLmNhbGMmJihvPW4u Y2FsYyh0LHIpKX1BcnJheS5pc0FycmF5KG8pJiZvWzBdfHwobz1be3g6aCx5Omh9XSksb1sw XS50fHwob1swXS50PXt9KSxvWzBdLnRyYWNlPXIsZFtlXT1vfX1mb3IoeihvLGMsZiksaT0w O2k8Yy5sZW5ndGg7aSsrKXcoaSwhMCk7Zm9yKGk9MDtpPGMubGVuZ3RoO2krKyliKGkpO2Zv cih4JiZ6KG8sYyxmKSxpPTA7aTxjLmxlbmd0aDtpKyspdyhpLCEwKTtmb3IoaT0wO2k8Yy5s ZW5ndGg7aSsrKXcoaSwhMSk7RCh0KTt2YXIgVD1mdW5jdGlvbih0LGUpe3ZhciByLG4saSxh LG8sbD1bXTtmdW5jdGlvbiBjKHQscixuKXt2YXIgaT1yLl9pZC5jaGFyQXQoMCk7aWYoImhp c3RvZ3JhbTJkY29udG91ciI9PT10KXt2YXIgYT1yLl9jb3VudGVyQXhlc1swXSxvPXAuZ2V0 RnJvbUlkKGUsYSkscz0ieCI9PT1pfHwieCI9PT1hJiYiY2F0ZWdvcnkiPT09by50eXBlLGw9 InkiPT09aXx8InkiPT09YSYmImNhdGVnb3J5Ij09PW8udHlwZTtyZXR1cm4gZnVuY3Rpb24o dCxlKXtyZXR1cm4gMD09PXR8fDA9PT1lfHxzJiZ0PT09bltlXS5sZW5ndGgtMXx8bCYmZT09 PW4ubGVuZ3RoLTE/LTE6KCJ5Ij09PWk/ZTp0KS0xfX1yZXR1cm4gZnVuY3Rpb24odCxlKXty ZXR1cm4ieSI9PT1pP2U6dH19dmFyIGY9e21pbjpmdW5jdGlvbih0KXtyZXR1cm4gdS5hZ2dO dW1zKE1hdGgubWluLG51bGwsdCl9LG1heDpmdW5jdGlvbih0KXtyZXR1cm4gdS5hZ2dOdW1z KE1hdGgubWF4LG51bGwsdCl9LHN1bTpmdW5jdGlvbih0KXtyZXR1cm4gdS5hZ2dOdW1zKChm dW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSxudWxsLHQpfSx0b3RhbDpmdW5jdGlvbih0KXty ZXR1cm4gdS5hZ2dOdW1zKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSxudWxsLHQpfSxt ZWFuOmZ1bmN0aW9uKHQpe3JldHVybiB1Lm1lYW4odCl9LG1lZGlhbjpmdW5jdGlvbih0KXty ZXR1cm4gdS5tZWRpYW4odCl9fTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgaD10W3Jd O2lmKCJjYXRlZ29yeSI9PT1oLnR5cGUpe3ZhciBkPWguY2F0ZWdvcnlvcmRlci5tYXRjaChP KTtpZihkKXt2YXIgbT1kWzFdLGc9ZFsyXSx2PWguX2lkLmNoYXJBdCgwKSx5PSJ4Ij09PXYs eD1bXTtmb3Iobj0wO248aC5fY2F0ZWdvcmllcy5sZW5ndGg7bisrKXgucHVzaChbaC5fY2F0 ZWdvcmllc1tuXSxbXV0pO2ZvcihuPTA7bjxoLl90cmFjZUluZGljZXMubGVuZ3RoO24rKyl7 dmFyIGI9aC5fdHJhY2VJbmRpY2VzW25dLF89ZS5fZnVsbERhdGFbYl07aWYoITA9PT1fLnZp c2libGUpe3ZhciB3PV8udHlwZTtzLnRyYWNlSXMoXywiaGlzdG9ncmFtIikmJihkZWxldGUg Xy5feGF1dG9CaW5GaW5pc2hlZCxkZWxldGUgXy5feWF1dG9CaW5GaW5pc2hlZCk7dmFyIFQ9 InNwbG9tIj09PXcsaz0ic2NhdHRlcmdsIj09PXcsQT1lLmNhbGNkYXRhW2JdO2ZvcihpPTA7 aTxBLmxlbmd0aDtpKyspe3ZhciBNLFMsRT1BW2ldO2lmKFQpe3ZhciBMPV8uX2F4ZXNEaW1b aC5faWRdO2lmKCF5KXt2YXIgQz1fLl9kaWFnW0xdWzBdO0MmJihoPWUuX2Z1bGxMYXlvdXRb cC5pZDJuYW1lKEMpXSl9dmFyIFA9RS50cmFjZS5kaW1lbnNpb25zW0xdLnZhbHVlcztmb3Io YT0wO2E8UC5sZW5ndGg7YSsrKWZvcihNPWguX2NhdGVnb3JpZXNNYXBbUFthXV0sbz0wO288 RS50cmFjZS5kaW1lbnNpb25zLmxlbmd0aDtvKyspaWYobyE9PUwpe3ZhciBJPUUudHJhY2Uu ZGltZW5zaW9uc1tvXTt4W01dWzFdLnB1c2goSS52YWx1ZXNbYV0pfX1lbHNlIGlmKGspe2Zv cihhPTA7YTxFLnQueC5sZW5ndGg7YSsrKXk/KE09RS50LnhbYV0sUz1FLnQueVthXSk6KE09 RS50LnlbYV0sUz1FLnQueFthXSkseFtNXVsxXS5wdXNoKFMpO0UudCYmRS50Ll9zY2VuZSYm ZGVsZXRlIEUudC5fc2NlbmUuZGlydHl9ZWxzZSBpZihFLmhhc093blByb3BlcnR5KCJ6Iikp e1M9RS56O3ZhciB6PWMoXy50eXBlLGgsUyk7Zm9yKGE9MDthPFMubGVuZ3RoO2ErKylmb3Io bz0wO288U1thXS5sZW5ndGg7bysrKShNPXoobyxhKSkrMSYmeFtNXVsxXS5wdXNoKFNbYV1b b10pfWVsc2UgZm9yKHZvaWQgMD09PShNPUUucCkmJihNPUVbdl0pLHZvaWQgMD09PShTPUUu cykmJihTPUUudiksdm9pZCAwPT09UyYmKFM9eT9FLnk6RS54KSxBcnJheS5pc0FycmF5KFMp fHwoUz12b2lkIDA9PT1TP1tdOltTXSksYT0wO2E8Uy5sZW5ndGg7YSsrKXhbTV1bMV0ucHVz aChTW2FdKX19fWguX2NhdGVnb3JpZXNWYWx1ZT14O3ZhciBEPVtdO2ZvcihuPTA7bjx4Lmxl bmd0aDtuKyspRC5wdXNoKFt4W25dWzBdLGZbbV0oeFtuXVsxXSldKTtELnNvcnQoKGZ1bmN0 aW9uKHQsZSl7cmV0dXJuIHRbMV0tZVsxXX0pKSxoLl9jYXRlZ29yaWVzQWdncmVnYXRlZFZh bHVlPUQsaC5faW5pdGlhbENhdGVnb3JpZXM9RC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0 WzBdfSkpLCJkZXNjZW5kaW5nIj09PWcmJmguX2luaXRpYWxDYXRlZ29yaWVzLnJldmVyc2Uo KSxsPWwuY29uY2F0KGguc29ydEJ5SW5pdGlhbENhdGVnb3JpZXMoKSl9fX1yZXR1cm4gbH0o byx0KTtpZihULmxlbmd0aCl7Zm9yKGYuX251bUJveGVzPTAsZi5fbnVtVmlvbGlucz0wLGk9 MDtpPFQubGVuZ3RoO2krKyl3KFRbaV0sITApO2ZvcihpPTA7aTxULmxlbmd0aDtpKyspdyhU W2ldLCExKTtEKHQpfXMuZ2V0Q29tcG9uZW50TWV0aG9kKCJmeCIsImNhbGMiKSh0KSxzLmdl dENvbXBvbmVudE1ldGhvZCgiZXJyb3JiYXJzIiwiY2FsYyIpKHQpfTt2YXIgTz0vKHRvdGFs fHN1bXxtaW58bWF4fG1lYW58bWVkaWFuKSAoYXNjZW5kaW5nfGRlc2NlbmRpbmcpLztmdW5j dGlvbiB6KHQsZSxyKXt2YXIgbj17fTtmdW5jdGlvbiBpKHQpe3QuY2xlYXJDYWxjKCksIm11 bHRpY2F0ZWdvcnkiPT09dC50eXBlJiZ0LnNldHVwTXVsdGlDYXRlZ29yeShlKSxuW3QuX2lk XT0xfXUuc2ltcGxlTWFwKHQsaSk7Zm9yKHZhciBhPXIuX2F4aXNNYXRjaEdyb3Vwc3x8W10s bz0wO288YS5sZW5ndGg7bysrKWZvcih2YXIgcyBpbiBhW29dKW5bc118fGkocltwLmlkMm5h bWUocyldKX1mdW5jdGlvbiBEKHQpe3ZhciBlLHIsbixpPXQuX2Z1bGxMYXlvdXQsYT1pLl92 aXNpYmxlTW9kdWxlcyxvPXt9O2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspe3ZhciBzPWFbcl0s bD1zLmNyb3NzVHJhY2VDYWxjO2lmKGwpe3ZhciBjPXMuYmFzZVBsb3RNb2R1bGUubmFtZTtv W2NdP3UucHVzaFVuaXF1ZShvW2NdLGwpOm9bY109W2xdfX1mb3IobiBpbiBvKXt2YXIgZj1v W25dLGg9aS5fc3VicGxvdHNbbl07aWYoQXJyYXkuaXNBcnJheShoKSlmb3IoZT0wO2U8aC5s ZW5ndGg7ZSsrKXt2YXIgcD1oW2VdLGQ9ImNhcnRlc2lhbiI9PT1uP2kuX3Bsb3RzW3BdOmlb cF07Zm9yKHI9MDtyPGYubGVuZ3RoO3IrKylmW3JdKHQsZCxwKX1lbHNlIGZvcihyPTA7cjxm Lmxlbmd0aDtyKyspZltyXSh0KX19Yi5yZWhvdmVyPWZ1bmN0aW9uKHQpe3QuX2Z1bGxMYXlv dXQuX3JlaG92ZXImJnQuX2Z1bGxMYXlvdXQuX3JlaG92ZXIoKX0sYi5yZWRyYWc9ZnVuY3Rp b24odCl7dC5fZnVsbExheW91dC5fcmVkcmFnJiZ0Ll9mdWxsTGF5b3V0Ll9yZWRyYWcoKX0s Yi5nZW5lcmFsVXBkYXRlUGVyVHJhY2VNb2R1bGU9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGks YT1lLnRyYWNlSGFzaCxvPXt9O2ZvcihpPTA7aTxyLmxlbmd0aDtpKyspe3ZhciBzPXJbaV0s bD1zWzBdLnRyYWNlO2wudmlzaWJsZSYmKG9bbC50eXBlXT1vW2wudHlwZV18fFtdLG9bbC50 eXBlXS5wdXNoKHMpKX1mb3IodmFyIGMgaW4gYSlpZighb1tjXSl7dmFyIGY9YVtjXVswXTtm WzBdLnRyYWNlLnZpc2libGU9ITEsb1tjXT1bZl19Zm9yKHZhciBoIGluIG8pe3ZhciBwPW9b aF07cFswXVswXS50cmFjZS5fbW9kdWxlLnBsb3QodCxlLHUuZmlsdGVyVmlzaWJsZShwKSxu KX1lLnRyYWNlSGFzaD1vfSxiLnBsb3RCYXNlUGxvdD1mdW5jdGlvbih0LGUscixuLGkpe3Zh ciBhPXMuZ2V0TW9kdWxlKHQpLG89dihlLmNhbGNkYXRhLGEpWzBdO2EucGxvdChlLG8sbixp KX0sYi5jbGVhbkJhc2VQbG90PWZ1bmN0aW9uKHQsZSxyLG4saSl7dmFyIGE9aS5faGFzJiZp Ll9oYXModCksbz1yLl9oYXMmJnIuX2hhcyh0KTthJiYhbyYmaVsiXyIrdCsibGF5ZXIiXS5z ZWxlY3RBbGwoImcudHJhY2UiKS5yZW1vdmUoKX19LHsiLi4vY29tcG9uZW50cy9jb2xvciI6 MzY2LCIuLi9jb25zdGFudHMvbnVtZXJpY2FsIjo0NzksIi4uL2xpYiI6NTAzLCIuLi9wbG90 X2FwaS9wbG90X3NjaGVtYSI6NTQyLCIuLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIjo1NDMs Ii4uL3Bsb3RzL2dldF9kYXRhIjo1OTMsIi4uL3JlZ2lzdHJ5Ijo2MzgsIi4vYW5pbWF0aW9u X2F0dHJpYnV0ZXMiOjU0OCwiLi9hdHRyaWJ1dGVzIjo1NTAsIi4vY2FydGVzaWFuL2F4aXNf aWRzIjo1NTgsIi4vY2FydGVzaWFuL2hhbmRsZV9vdXRsaW5lIjo1NjUsIi4vY29tbWFuZCI6 NTgzLCIuL2ZvbnRfYXR0cmlidXRlcyI6NTg1LCIuL2ZyYW1lX2F0dHJpYnV0ZXMiOjU4Niwi Li9sYXlvdXRfYXR0cmlidXRlcyI6NjEwLCJAcGxvdGx5L2QzIjo1OCwiZDMtZm9ybWF0Ijox MTIsImQzLXRpbWUtZm9ybWF0IjoxMjAsImZhc3QtaXNudW1lcmljIjoxOTB9XSw2MjA6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXthdHRyOiJzdWJwbG90Iixu YW1lOiJwb2xhciIsYXhpc05hbWVzOlsiYW5ndWxhcmF4aXMiLCJyYWRpYWxheGlzIl0sYXhp c05hbWUyZGF0YUFycmF5Onthbmd1bGFyYXhpczoidGhldGEiLHJhZGlhbGF4aXM6InIifSxs YXllck5hbWVzOlsiZHJhZ2xheWVyIiwicGxvdGJnIiwiYmFja3Bsb3QiLCJhbmd1bGFyLWdy aWQiLCJyYWRpYWwtZ3JpZCIsImZyb250cGxvdCIsImFuZ3VsYXItbGluZSIsInJhZGlhbC1s aW5lIiwiYW5ndWxhci1heGlzIiwicmFkaWFsLWF4aXMiXSxyYWRpYWxEcmFnQm94U2l6ZTo1 MCxhbmd1bGFyRHJhZ0JveFNpemU6MzAsY29ybmVyTGVuOjI1LGNvcm5lckhhbGZXaWR0aDoy LE1JTkRSQUc6OCxNSU5aT09NOjIwLE9GRkVER0U6MjB9fSx7fV0sNjIxOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vbGli L3BvbHlnb24iKS50ZXN0ZXIsYT1uLmZpbmRJbmRleE9mTWluLG89bi5pc0FuZ2xlSW5zaWRl U2VjdG9yLHM9bi5hbmdsZURlbHRhLGw9bi5hbmdsZURpc3Q7ZnVuY3Rpb24gYyh0LGUscixu KXt2YXIgaSxhLG89blswXSxzPW5bMV0sbD1mKE1hdGguc2luKGUpLU1hdGguc2luKHQpKSxj PWYoTWF0aC5jb3MoZSktTWF0aC5jb3ModCkpLHU9TWF0aC50YW4ociksaD1mKDEvdSkscD1s L2MsZD1zLXAqbztyZXR1cm4gaD9sJiZjP2E9dSooaT1kLyh1LXApKTpjPyhpPXMqaCxhPXMp OihpPW8sYT1vKnUpOmwmJmM/KGk9MCxhPWQpOmM/KGk9MCxhPXMpOmk9YT1OYU4sW2ksYV19 ZnVuY3Rpb24gdSh0LGUscixpKXtyZXR1cm4gbi5pc0Z1bGxDaXJjbGUoW2Uscl0pP2Z1bmN0 aW9uKHQsZSl7dmFyIHIsbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKzEpO2ZvcihyPTA7cjxu O3IrKyl7dmFyIGE9ZVtyXTtpW3JdPVt0Kk1hdGguY29zKGEpLHQqTWF0aC5zaW4oYSldfXJl dHVybiBpW3JdPWlbMF0uc2xpY2UoKSxpfSh0LGkpOmZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBz LHUsZj1pLmxlbmd0aCxoPVtdO2Z1bmN0aW9uIHAoZSl7cmV0dXJuW3QqTWF0aC5jb3MoZSks dCpNYXRoLnNpbihlKV19ZnVuY3Rpb24gZCh0LGUscil7cmV0dXJuIGModCxlLHIscCh0KSl9 ZnVuY3Rpb24gbSh0KXtyZXR1cm4gbi5tb2QodCxmKX1mdW5jdGlvbiBnKHQpe3JldHVybiBv KHQsW2Uscl0pfXZhciB2PWEoaSwoZnVuY3Rpb24odCl7cmV0dXJuIGcodCk/bCh0LGUpOjEv MH0pKSx5PWQoaVt2XSxpW20odi0xKV0sZSk7Zm9yKGgucHVzaCh5KSxzPXYsdT0wO3U8Zjtz KyssdSsrKXt2YXIgeD1pW20ocyldO2lmKCFnKHgpKWJyZWFrO2gucHVzaChwKHgpKX12YXIg Yj1hKGksKGZ1bmN0aW9uKHQpe3JldHVybiBnKHQpP2wodCxyKToxLzB9KSksXz1kKGlbYl0s aVttKGIrMSldLHIpO3JldHVybiBoLnB1c2goXyksaC5wdXNoKFswLDBdKSxoLnB1c2goaFsw XS5zbGljZSgpKSxofSh0LGUscixpKX1mdW5jdGlvbiBmKHQpe3JldHVybiBNYXRoLmFicyh0 KT4xZS0xMD90OjB9ZnVuY3Rpb24gaCh0LGUscil7ZT1lfHwwLHI9cnx8MDtmb3IodmFyIG49 dC5sZW5ndGgsaT1uZXcgQXJyYXkobiksYT0wO2E8bjthKyspe3ZhciBvPXRbYV07aVthXT1b ZStvWzBdLHItb1sxXV19cmV0dXJuIGl9ZS5leHBvcnRzPXtpc1B0SW5zaWRlUG9seWdvbjpm dW5jdGlvbih0LGUscixuLGEpe2lmKCFvKGUsbikpcmV0dXJuITE7dmFyIHMsbDtyWzBdPHJb MV0/KHM9clswXSxsPXJbMV0pOihzPXJbMV0sbD1yWzBdKTt2YXIgYz1pKHUocyxuWzBdLG5b MV0sYSkpLGY9aSh1KGwsblswXSxuWzFdLGEpKSxoPVt0Kk1hdGguY29zKGUpLHQqTWF0aC5z aW4oZSldO3JldHVybiBmLmNvbnRhaW5zKGgpJiYhYy5jb250YWlucyhoKX0sZmluZFBvbHln b25PZmZzZXQ6ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBpPTEvMCxhPTEvMCxvPXUodCxl LHIsbikscz0wO3M8by5sZW5ndGg7cysrKXt2YXIgbD1vW3NdO2k9TWF0aC5taW4oaSxsWzBd KSxhPU1hdGgubWluKGEsLWxbMV0pfXJldHVybltpLGFdfSxmaW5kRW5jbG9zaW5nVmVydGV4 QW5nbGVzOmZ1bmN0aW9uKHQsZSl7dmFyIHI9YShlLChmdW5jdGlvbihlKXt2YXIgcj1zKGUs dCk7cmV0dXJuIHI+MD9yOjEvMH0pKSxpPW4ubW9kKHIrMSxlLmxlbmd0aCk7cmV0dXJuW2Vb cl0sZVtpXV19LGZpbmRJbnRlcnNlY3Rpb25YWTpjLGZpbmRYWWF0TGVuZ3RoOmZ1bmN0aW9u KHQsZSxyLG4pe3ZhciBpPS1lKnIsYT1lKmUrMSxvPTIqKGUqaS1yKSxzPWkqaStyKnItdCp0 LGw9TWF0aC5zcXJ0KG8qby00KmEqcyksYz0oLW8rbCkvKDIqYSksdT0oLW8tbCkvKDIqYSk7 cmV0dXJuW1tjLGUqYytpK25dLFt1LGUqdStpK25dXX0sY2xhbXBUaW55OmYscGF0aFBvbHln b246ZnVuY3Rpb24odCxlLHIsbixpLGEpe3JldHVybiJNIitoKHUodCxlLHIsbiksaSxhKS5q b2luKCJMIil9LHBhdGhQb2x5Z29uQW5udWx1czpmdW5jdGlvbih0LGUscixuLGksYSxvKXt2 YXIgcyxsO3Q8ZT8ocz10LGw9ZSk6KHM9ZSxsPXQpO3ZhciBjPWgodShzLHIsbixpKSxhLG8p O3JldHVybiJNIitoKHUobCxyLG4saSksYSxvKS5yZXZlcnNlKCkuam9pbigiTCIpKyJNIitj LmpvaW4oIkwiKX19fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi8uLi9saWIvcG9seWdvbiI6NTE1 fV0sNjIyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2dldF9k YXRhIikuZ2V0U3VicGxvdENhbGNEYXRhLGk9dCgiLi4vLi4vbGliIikuY291bnRlclJlZ2V4 LGE9dCgiLi9wb2xhciIpLG89dCgiLi9jb25zdGFudHMiKSxzPW8uYXR0cixsPW8ubmFtZSxj PWkobCksdT17fTt1W3NdPXt2YWxUeXBlOiJzdWJwbG90aWQiLGRmbHQ6bCxlZGl0VHlwZToi Y2FsYyJ9LGUuZXhwb3J0cz17YXR0cjpzLG5hbWU6bCxpZFJvb3Q6bCxpZFJlZ2V4OmMsYXR0 clJlZ2V4OmMsYXR0cmlidXRlczp1LGxheW91dEF0dHJpYnV0ZXM6dCgiLi9sYXlvdXRfYXR0 cmlidXRlcyIpLHN1cHBseUxheW91dERlZmF1bHRzOnQoIi4vbGF5b3V0X2RlZmF1bHRzIiks cGxvdDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5fZnVsbExheW91dCxyPXQuY2FsY2RhdGEs aT1lLl9zdWJwbG90c1tsXSxvPTA7bzxpLmxlbmd0aDtvKyspe3ZhciBzPWlbb10sYz1uKHIs bCxzKSx1PWVbc10uX3N1YnBsb3Q7dXx8KHU9YSh0LHMpLGVbc10uX3N1YnBsb3Q9dSksdS5w bG90KGMsZSx0Ll9wcm9taXNlcyl9fSxjbGVhbjpmdW5jdGlvbih0LGUscixuKXtmb3IodmFy IGk9bi5fc3VicGxvdHNbbF18fFtdLGE9bi5faGFzJiZuLl9oYXMoImdsIiksbz1lLl9oYXMm JmUuX2hhcygiZ2wiKSxzPWEmJiFvLGM9MDtjPGkubGVuZ3RoO2MrKyl7dmFyIHU9aVtjXSxm PW5bdV0uX3N1YnBsb3Q7aWYoIWVbdV0mJmYpZm9yKHZhciBoIGluIGYuZnJhbWV3b3JrLnJl bW92ZSgpLGYubGF5ZXJzWyJyYWRpYWwtYXhpcy10aXRsZSJdLnJlbW92ZSgpLGYuY2xpcFBh dGhzKWYuY2xpcFBhdGhzW2hdLnJlbW92ZSgpO3MmJmYuX3NjZW5lJiYoZi5fc2NlbmUuZGVz dHJveSgpLGYuX3NjZW5lPW51bGwpfX0sdG9TVkc6dCgiLi4vY2FydGVzaWFuIikudG9TVkd9 fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi9jYXJ0ZXNpYW4iOjU2OCwiLi4vZ2V0X2RhdGEiOjU5 MywiLi9jb25zdGFudHMiOjYyMCwiLi9sYXlvdXRfYXR0cmlidXRlcyI6NjIzLCIuL2xheW91 dF9kZWZhdWx0cyI6NjI0LCIuL3BvbGFyIjo2MjV9XSw2MjM6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVz IiksaT10KCIuLi9jYXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxhPXQoIi4uL2RvbWFp biIpLmF0dHJpYnV0ZXMsbz10KCIuLi8uLi9saWIiKS5leHRlbmRGbGF0LHM9dCgiLi4vLi4v cGxvdF9hcGkvZWRpdF90eXBlcyIpLm92ZXJyaWRlQWxsLGw9cyh7Y29sb3I6aS5jb2xvcixz aG93bGluZTpvKHt9LGkuc2hvd2xpbmUse2RmbHQ6ITB9KSxsaW5lY29sb3I6aS5saW5lY29s b3IsbGluZXdpZHRoOmkubGluZXdpZHRoLHNob3dncmlkOm8oe30saS5zaG93Z3JpZCx7ZGZs dDohMH0pLGdyaWRjb2xvcjppLmdyaWRjb2xvcixncmlkd2lkdGg6aS5ncmlkd2lkdGgsZ3Jp ZGRhc2g6aS5ncmlkZGFzaH0sInBsb3QiLCJmcm9tLXJvb3QiKSxjPXMoe3RpY2ttb2RlOmku dGlja21vZGUsbnRpY2tzOmkubnRpY2tzLHRpY2swOmkudGljazAsZHRpY2s6aS5kdGljayx0 aWNrdmFsczppLnRpY2t2YWxzLHRpY2t0ZXh0OmkudGlja3RleHQsdGlja3M6aS50aWNrcyx0 aWNrbGVuOmkudGlja2xlbix0aWNrd2lkdGg6aS50aWNrd2lkdGgsdGlja2NvbG9yOmkudGlj a2NvbG9yLHRpY2tsYWJlbHN0ZXA6aS50aWNrbGFiZWxzdGVwLHNob3d0aWNrbGFiZWxzOmku c2hvd3RpY2tsYWJlbHMsc2hvd3RpY2twcmVmaXg6aS5zaG93dGlja3ByZWZpeCx0aWNrcHJl Zml4OmkudGlja3ByZWZpeCxzaG93dGlja3N1ZmZpeDppLnNob3d0aWNrc3VmZml4LHRpY2tz dWZmaXg6aS50aWNrc3VmZml4LHNob3dleHBvbmVudDppLnNob3dleHBvbmVudCxleHBvbmVu dGZvcm1hdDppLmV4cG9uZW50Zm9ybWF0LG1pbmV4cG9uZW50OmkubWluZXhwb25lbnQsc2Vw YXJhdGV0aG91c2FuZHM6aS5zZXBhcmF0ZXRob3VzYW5kcyx0aWNrZm9udDppLnRpY2tmb250 LHRpY2thbmdsZTppLnRpY2thbmdsZSx0aWNrZm9ybWF0OmkudGlja2Zvcm1hdCx0aWNrZm9y bWF0c3RvcHM6aS50aWNrZm9ybWF0c3RvcHMsbGF5ZXI6aS5sYXllcn0sInBsb3QiLCJmcm9t LXJvb3QiKSx1PXt2aXNpYmxlOm8oe30saS52aXNpYmxlLHtkZmx0OiEwfSksdHlwZTpvKHt9 LGkudHlwZSx7dmFsdWVzOlsiLSIsImxpbmVhciIsImxvZyIsImRhdGUiLCJjYXRlZ29yeSJd fSksYXV0b3R5cGVudW1iZXJzOmkuYXV0b3R5cGVudW1iZXJzLGF1dG9yYW5nZTpvKHt9LGku YXV0b3JhbmdlLHtlZGl0VHlwZToicGxvdCJ9KSxyYW5nZW1vZGU6e3ZhbFR5cGU6ImVudW1l cmF0ZWQiLHZhbHVlczpbInRvemVybyIsIm5vbm5lZ2F0aXZlIiwibm9ybWFsIl0sZGZsdDoi dG96ZXJvIixlZGl0VHlwZToiY2FsYyJ9LHJhbmdlOm8oe30saS5yYW5nZSx7aXRlbXM6W3t2 YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJwbG90IixpbXBsaWVkRWRpdHM6eyJeYXV0b3Jhbmdl IjohMX19LHt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJwbG90IixpbXBsaWVkRWRpdHM6eyJe YXV0b3JhbmdlIjohMX19XSxlZGl0VHlwZToicGxvdCJ9KSxjYXRlZ29yeW9yZGVyOmkuY2F0 ZWdvcnlvcmRlcixjYXRlZ29yeWFycmF5OmkuY2F0ZWdvcnlhcnJheSxhbmdsZTp7dmFsVHlw ZToiYW5nbGUiLGVkaXRUeXBlOiJwbG90In0sc2lkZTp7dmFsVHlwZToiZW51bWVyYXRlZCIs dmFsdWVzOlsiY2xvY2t3aXNlIiwiY291bnRlcmNsb2Nrd2lzZSJdLGRmbHQ6ImNsb2Nrd2lz ZSIsZWRpdFR5cGU6InBsb3QifSx0aXRsZTp7dGV4dDpvKHt9LGkudGl0bGUudGV4dCx7ZWRp dFR5cGU6InBsb3QiLGRmbHQ6IiJ9KSxmb250Om8oe30saS50aXRsZS5mb250LHtlZGl0VHlw ZToicGxvdCJ9KSxlZGl0VHlwZToicGxvdCJ9LGhvdmVyZm9ybWF0OmkuaG92ZXJmb3JtYXQs dWlyZXZpc2lvbjp7dmFsVHlwZToiYW55IixlZGl0VHlwZToibm9uZSJ9LGVkaXRUeXBlOiJj YWxjIixfZGVwcmVjYXRlZDp7dGl0bGU6aS5fZGVwcmVjYXRlZC50aXRsZSx0aXRsZWZvbnQ6 aS5fZGVwcmVjYXRlZC50aXRsZWZvbnR9fTtvKHUsbCxjKTt2YXIgZj17dmlzaWJsZTpvKHt9 LGkudmlzaWJsZSx7ZGZsdDohMH0pLHR5cGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVl czpbIi0iLCJsaW5lYXIiLCJjYXRlZ29yeSJdLGRmbHQ6Ii0iLGVkaXRUeXBlOiJjYWxjIixf bm9UZW1wbGF0aW5nOiEwfSxhdXRvdHlwZW51bWJlcnM6aS5hdXRvdHlwZW51bWJlcnMsY2F0 ZWdvcnlvcmRlcjppLmNhdGVnb3J5b3JkZXIsY2F0ZWdvcnlhcnJheTppLmNhdGVnb3J5YXJy YXksdGhldGF1bml0Ont2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJyYWRpYW5zIiwi ZGVncmVlcyJdLGRmbHQ6ImRlZ3JlZXMiLGVkaXRUeXBlOiJjYWxjIn0scGVyaW9kOnt2YWxU eXBlOiJudW1iZXIiLGVkaXRUeXBlOiJjYWxjIixtaW46MH0sZGlyZWN0aW9uOnt2YWxUeXBl OiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJjb3VudGVyY2xvY2t3aXNlIiwiY2xvY2t3aXNlIl0s ZGZsdDoiY291bnRlcmNsb2Nrd2lzZSIsZWRpdFR5cGU6ImNhbGMifSxyb3RhdGlvbjp7dmFs VHlwZToiYW5nbGUiLGVkaXRUeXBlOiJjYWxjIn0saG92ZXJmb3JtYXQ6aS5ob3ZlcmZvcm1h dCx1aXJldmlzaW9uOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJub25lIn0sZWRpdFR5cGU6 ImNhbGMifTtvKGYsbCxjKSxlLmV4cG9ydHM9e2RvbWFpbjphKHtuYW1lOiJwb2xhciIsZWRp dFR5cGU6InBsb3QifSksc2VjdG9yOnt2YWxUeXBlOiJpbmZvX2FycmF5IixpdGVtczpbe3Zh bFR5cGU6Im51bWJlciIsZWRpdFR5cGU6InBsb3QifSx7dmFsVHlwZToibnVtYmVyIixlZGl0 VHlwZToicGxvdCJ9XSxkZmx0OlswLDM2MF0sZWRpdFR5cGU6InBsb3QifSxob2xlOnt2YWxU eXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MCxlZGl0VHlwZToicGxvdCJ9LGJnY29s b3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToicGxvdCIsZGZsdDpuLmJhY2tncm91bmR9 LHJhZGlhbGF4aXM6dSxhbmd1bGFyYXhpczpmLGdyaWRzaGFwZTp7dmFsVHlwZToiZW51bWVy YXRlZCIsdmFsdWVzOlsiY2lyY3VsYXIiLCJsaW5lYXIiXSxkZmx0OiJjaXJjdWxhciIsZWRp dFR5cGU6InBsb3QifSx1aXJldmlzaW9uOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJub25l In0sZWRpdFR5cGU6ImNhbGMifX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0 ZXMiOjM2NSwiLi4vLi4vbGliIjo1MDMsIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiOjUz NiwiLi4vY2FydGVzaWFuL2xheW91dF9hdHRyaWJ1dGVzIjo1NjksIi4uL2RvbWFpbiI6NTg0 fV0sNjI0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xp YiIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGE9dCgiLi4vLi4vcGxvdF9hcGkv cGxvdF90ZW1wbGF0ZSIpLG89dCgiLi4vc3VicGxvdF9kZWZhdWx0cyIpLHM9dCgiLi4vZ2V0 X2RhdGEiKS5nZXRTdWJwbG90RGF0YSxsPXQoIi4uL2NhcnRlc2lhbi90aWNrX3ZhbHVlX2Rl ZmF1bHRzIiksYz10KCIuLi9jYXJ0ZXNpYW4vdGlja19tYXJrX2RlZmF1bHRzIiksdT10KCIu Li9jYXJ0ZXNpYW4vdGlja19sYWJlbF9kZWZhdWx0cyIpLGY9dCgiLi4vY2FydGVzaWFuL3By ZWZpeF9zdWZmaXhfZGVmYXVsdHMiKSxoPXQoIi4uL2NhcnRlc2lhbi9jYXRlZ29yeV9vcmRl cl9kZWZhdWx0cyIpLHA9dCgiLi4vY2FydGVzaWFuL2xpbmVfZ3JpZF9kZWZhdWx0cyIpLGQ9 dCgiLi4vY2FydGVzaWFuL2F4aXNfYXV0b3R5cGUiKSxtPXQoIi4vbGF5b3V0X2F0dHJpYnV0 ZXMiKSxnPXQoIi4vc2V0X2NvbnZlcnQiKSx2PXQoIi4vY29uc3RhbnRzIikseT12LmF4aXNO YW1lcztmdW5jdGlvbiB4KHQsZSxyLG8pe3ZhciBkPXIoImJnY29sb3IiKTtvLmJnQ29sb3I9 aS5jb21iaW5lKGQsby5wYXBlcl9iZ2NvbG9yKTt2YXIgeD1yKCJzZWN0b3IiKTtyKCJob2xl Iik7dmFyIF8sdz1zKG8uZnVsbERhdGEsdi5uYW1lLG8uaWQpLFQ9by5sYXlvdXRPdXQ7ZnVu Y3Rpb24gayh0LGUpe3JldHVybiByKF8rIi4iK3QsZSl9Zm9yKHZhciBBPTA7QTx5Lmxlbmd0 aDtBKyspe189eVtBXSxuLmlzUGxhaW5PYmplY3QodFtfXSl8fCh0W19dPXt9KTt2YXIgTT10 W19dLFM9YS5uZXdDb250YWluZXIoZSxfKTtTLl9pZD1TLl9uYW1lPV8sUy5fYXR0cj1vLmlk KyIuIitfLFMuX3RyYWNlSW5kaWNlcz13Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuX2V4 cGFuZGVkSW5kZXh9KSk7dmFyIEU9di5heGlzTmFtZTJkYXRhQXJyYXlbX10sTD1iKE0sUyxr LHcsRSxvKTtoKE0sUyxrLHtheERhdGE6dyxkYXRhQXR0cjpFfSk7dmFyIEM9aygidmlzaWJs ZSIpO3N3aXRjaChnKFMsZSxUKSxrKCJ1aXJldmlzaW9uIixlLnVpcmV2aXNpb24pLFMuX209 MSxfKXtjYXNlInJhZGlhbGF4aXMiOnZhciBQPWsoImF1dG9yYW5nZSIsIVMuaXNWYWxpZFJh bmdlKE0ucmFuZ2UpKTtNLmF1dG9yYW5nZT1QLCFQfHwibGluZWFyIiE9PUwmJiItIiE9PUx8 fGsoInJhbmdlbW9kZSIpLCJyZXZlcnNlZCI9PT1QJiYoUy5fbT0tMSksaygicmFuZ2UiKSxT LmNsZWFuUmFuZ2UoInJhbmdlIix7ZGZsdFJhbmdlOlswLDFdfSk7YnJlYWs7Y2FzZSJhbmd1 bGFyYXhpcyI6aWYoImRhdGUiPT09TCl7bi5sb2coIlBvbGFyIHBsb3RzIGRvIG5vdCBzdXBw b3J0IGRhdGUgYW5ndWxhciBheGVzIHlldC4iKTtmb3IodmFyIEk9MDtJPHcubGVuZ3RoO0kr Kyl3W0ldLnZpc2libGU9ITE7TD1NLnR5cGU9Uy50eXBlPSJsaW5lYXIifWsoImxpbmVhciI9 PT1MPyJ0aGV0YXVuaXQiOiJwZXJpb2QiKTt2YXIgTz1rKCJkaXJlY3Rpb24iKTtrKCJyb3Rh dGlvbiIse2NvdW50ZXJjbG9ja3dpc2U6MCxjbG9ja3dpc2U6OTB9W09dKX1pZihmKE0sUyxr LFMudHlwZSx7dGlja1N1ZmZpeERmbHQ6ImRlZ3JlZXMiPT09Uy50aGV0YXVuaXQ/Ilx4YjAi OnZvaWQgMH0pLEMpe3ZhciB6LEQsUixGLEI9by5mb250fHx7fTtEPSh6PWsoImNvbG9yIikp PT09TS5jb2xvcj96OkIuY29sb3IsUj1CLnNpemUsRj1CLmZhbWlseSxsKE0sUyxrLFMudHlw ZSksdShNLFMsayxTLnR5cGUse2ZvbnQ6e2NvbG9yOkQsc2l6ZTpSLGZhbWlseTpGfX0pLGMo TSxTLGsse291dGVyVGlja3M6ITB9KSxwKE0sUyxrLHtkZmx0Q29sb3I6eixiZ0NvbG9yOm8u YmdDb2xvcixibGVuZDo2MCxzaG93TGluZTohMCxzaG93R3JpZDohMCxub1plcm9MaW5lOiEw LGF0dHJpYnV0ZXM6bVtfXX0pLGsoImxheWVyIiksInJhZGlhbGF4aXMiPT09XyYmKGsoInNp ZGUiKSxrKCJhbmdsZSIseFswXSksaygidGl0bGUudGV4dCIpLG4uY29lcmNlRm9udChrLCJ0 aXRsZS5mb250Iix7Y29sb3I6RCxzaXplOm4uYmlnRm9udChSKSxmYW1pbHk6Rn0pKX0iY2F0 ZWdvcnkiIT09TCYmaygiaG92ZXJmb3JtYXQiKSxTLl9pbnB1dD1NfSJjYXRlZ29yeSI9PT1l LmFuZ3VsYXJheGlzLnR5cGUmJnIoImdyaWRzaGFwZSIpfWZ1bmN0aW9uIGIodCxlLHIsbixp LGEpe3ZhciBvPXIoImF1dG90eXBlbnVtYmVycyIsYS5hdXRvdHlwZW51bWJlcnNEZmx0KTtp ZigiLSI9PT1yKCJ0eXBlIikpe2Zvcih2YXIgcyxsPTA7bDxuLmxlbmd0aDtsKyspaWYoblts XS52aXNpYmxlKXtzPW5bbF07YnJlYWt9cyYmc1tpXSYmKGUudHlwZT1kKHNbaV0sImdyZWdv cmlhbiIse25vTXVsdGlDYXRlZ29yeTohMCxhdXRvdHlwZW51bWJlcnM6b30pKSwiLSI9PT1l LnR5cGU/ZS50eXBlPSJsaW5lYXIiOnQudHlwZT1lLnR5cGV9cmV0dXJuIGUudHlwZX1lLmV4 cG9ydHM9ZnVuY3Rpb24odCxlLHIpe28odCxlLHIse3R5cGU6di5uYW1lLGF0dHJpYnV0ZXM6 bSxoYW5kbGVEZWZhdWx0czp4LGZvbnQ6ZS5mb250LGF1dG90eXBlbnVtYmVyc0RmbHQ6ZS5h dXRvdHlwZW51bWJlcnMscGFwZXJfYmdjb2xvcjplLnBhcGVyX2JnY29sb3IsZnVsbERhdGE6 cixsYXlvdXRPdXQ6ZX0pfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjozNjYsIi4uLy4u L2xpYiI6NTAzLCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIjo1NDMsIi4uL2NhcnRl c2lhbi9heGlzX2F1dG90eXBlIjo1NTUsIi4uL2NhcnRlc2lhbi9jYXRlZ29yeV9vcmRlcl9k ZWZhdWx0cyI6NTU5LCIuLi9jYXJ0ZXNpYW4vbGluZV9ncmlkX2RlZmF1bHRzIjo1NzEsIi4u L2NhcnRlc2lhbi9wcmVmaXhfc3VmZml4X2RlZmF1bHRzIjo1NzMsIi4uL2NhcnRlc2lhbi90 aWNrX2xhYmVsX2RlZmF1bHRzIjo1NzgsIi4uL2NhcnRlc2lhbi90aWNrX21hcmtfZGVmYXVs dHMiOjU3OSwiLi4vY2FydGVzaWFuL3RpY2tfdmFsdWVfZGVmYXVsdHMiOjU4MCwiLi4vZ2V0 X2RhdGEiOjU5MywiLi4vc3VicGxvdF9kZWZhdWx0cyI6NjMyLCIuL2NvbnN0YW50cyI6NjIw LCIuL2xheW91dF9hdHRyaWJ1dGVzIjo2MjMsIi4vc2V0X2NvbnZlcnQiOjYyNn1dLDYyNTpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJAcGxvdGx5L2QzIiksaT10 KCJ0aW55Y29sb3IyIiksYT10KCIuLi8uLi9yZWdpc3RyeSIpLG89dCgiLi4vLi4vbGliIiks cz1vLnN0clJvdGF0ZSxsPW8uc3RyVHJhbnNsYXRlLGM9dCgiLi4vLi4vY29tcG9uZW50cy9j b2xvciIpLHU9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksZj10KCIuLi9wbG90cyIp LGg9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxwPXQoIi4uL2NhcnRlc2lhbi9z ZXRfY29udmVydCIpLGQ9dCgiLi9zZXRfY29udmVydCIpLG09dCgiLi4vY2FydGVzaWFuL2F1 dG9yYW5nZSIpLmRvQXV0b1JhbmdlLGc9dCgiLi4vY2FydGVzaWFuL2RyYWdib3giKSx2PXQo Ii4uLy4uL2NvbXBvbmVudHMvZHJhZ2VsZW1lbnQiKSx5PXQoIi4uLy4uL2NvbXBvbmVudHMv ZngiKSx4PXQoIi4uLy4uL2NvbXBvbmVudHMvdGl0bGVzIiksYj10KCIuLi9jYXJ0ZXNpYW4v c2VsZWN0IikucHJlcFNlbGVjdCxfPXQoIi4uL2NhcnRlc2lhbi9zZWxlY3QiKS5zZWxlY3RP bkNsaWNrLHc9dCgiLi4vY2FydGVzaWFuL3NlbGVjdCIpLmNsZWFyU2VsZWN0LFQ9dCgiLi4v Li4vbGliL3NldGN1cnNvciIpLGs9dCgiLi4vLi4vbGliL2NsZWFyX2dsX2NhbnZhc2VzIiks QT10KCIuLi8uLi9wbG90X2FwaS9zdWJyb3V0aW5lcyIpLnJlZHJhd1JlZ2xUcmFjZXMsTT10 KCIuLi8uLi9jb25zdGFudHMvYWxpZ25tZW50IikuTUlEX1NISUZULFM9dCgiLi9jb25zdGFu dHMiKSxFPXQoIi4vaGVscGVycyIpLEw9dCgiLi4vc21pdGgvaGVscGVycyIpLEM9TC5zbWl0 aCxQPUwucmVhY3RhbmNlQXJjLEk9TC5yZXNpc3RhbmNlQXJjLE89TC5zbWl0aFRyYW5zZm9y bSx6PW8uXyxEPW8ubW9kLFI9by5kZWcycmFkLEY9by5yYWQyZGVnO2Z1bmN0aW9uIEIodCxl LHIpe3RoaXMuaXNTbWl0aD1yfHwhMSx0aGlzLmlkPWUsdGhpcy5nZD10LHRoaXMuX2hhc0Ns aXBPbkF4aXNGYWxzZT1udWxsLHRoaXMudmFuZ2xlcz1udWxsLHRoaXMucmFkaWFsQXhpc0Fu Z2xlPW51bGwsdGhpcy50cmFjZUhhc2g9e30sdGhpcy5sYXllcnM9e30sdGhpcy5jbGlwUGF0 aHM9e30sdGhpcy5jbGlwSWRzPXt9LHRoaXMudmlld0luaXRpYWw9e307dmFyIG49dC5fZnVs bExheW91dCxpPSJjbGlwIituLl91aWQrZTt0aGlzLmNsaXBJZHMuZm9yVHJhY2VzPWkrIi1m b3ItdHJhY2VzIix0aGlzLmNsaXBQYXRocy5mb3JUcmFjZXM9bi5fY2xpcHMuYXBwZW5kKCJj bGlwUGF0aCIpLmF0dHIoImlkIix0aGlzLmNsaXBJZHMuZm9yVHJhY2VzKSx0aGlzLmNsaXBQ YXRocy5mb3JUcmFjZXMuYXBwZW5kKCJwYXRoIiksdGhpcy5mcmFtZXdvcms9blsiXyIrKHI/ InNtaXRoIjoicG9sYXIiKSsibGF5ZXIiXS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsZSks dGhpcy5nZXRIb2xlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmlzU21pdGg/MDp0LmhvbGV9 LHRoaXMuZ2V0U2VjdG9yPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmlzU21pdGg/WzAsMzYw XTp0LnNlY3Rvcn0sdGhpcy5nZXRSYWRpYWw9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaXNT bWl0aD90LnJlYWxheGlzOnQucmFkaWFsYXhpc30sdGhpcy5nZXRBbmd1bGFyPWZ1bmN0aW9u KHQpe3JldHVybiB0aGlzLmlzU21pdGg/dC5pbWFnaW5hcnlheGlzOnQuYW5ndWxhcmF4aXN9 LHJ8fCh0aGlzLnJhZGlhbFRpY2tMYXlvdXQ9bnVsbCx0aGlzLmFuZ3VsYXJUaWNrTGF5b3V0 PW51bGwpfXZhciBOPUIucHJvdG90eXBlO2Z1bmN0aW9uIGoodCl7dmFyIGU9dC50aWNrcytT dHJpbmcodC50aWNrbGVuKStTdHJpbmcodC5zaG93dGlja2xhYmVscyk7cmV0dXJuInNpZGUi aW4gdCYmKGUrPXQuc2lkZSksZX1mdW5jdGlvbiBVKHQsZSl7cmV0dXJuIGVbby5maW5kSW5k ZXhPZk1pbihlLChmdW5jdGlvbihlKXtyZXR1cm4gby5hbmdsZURpc3QodCxlKX0pKV19ZnVu Y3Rpb24gVih0LGUscil7cmV0dXJuIGU/KHQuYXR0cigiZGlzcGxheSIsbnVsbCksdC5hdHRy KHIpKTp0JiZ0LmF0dHIoImRpc3BsYXkiLCJub25lIiksdH1lLmV4cG9ydHM9ZnVuY3Rpb24o dCxlLHIpe3JldHVybiBuZXcgQih0LGUscil9LE4ucGxvdD1mdW5jdGlvbih0LGUpe2Zvcih2 YXIgcj1lW3RoaXMuaWRdLG49ITEsaT0wO2k8dC5sZW5ndGg7aSsrKXtpZighMT09PXRbaV1b MF0udHJhY2UuY2xpcG9uYXhpcyl7bj0hMDticmVha319dGhpcy5faGFzQ2xpcE9uQXhpc0Zh bHNlPW4sdGhpcy51cGRhdGVMYXllcnMoZSxyKSx0aGlzLnVwZGF0ZUxheW91dChlLHIpLGYu Z2VuZXJhbFVwZGF0ZVBlclRyYWNlTW9kdWxlKHRoaXMuZ2QsdGhpcyx0LHIpLHRoaXMudXBk YXRlRngoZSxyKSx0aGlzLmlzU21pdGgmJihkZWxldGUgci5yZWFsYXhpcy5yYW5nZSxkZWxl dGUgci5pbWFnaW5hcnlheGlzLnJhbmdlKX0sTi51cGRhdGVMYXllcnM9ZnVuY3Rpb24odCxl KXt2YXIgcj10aGlzLmlzU21pdGgsaT10aGlzLmxheWVycyxhPXRoaXMuZ2V0UmFkaWFsKGUp LG89dGhpcy5nZXRBbmd1bGFyKGUpLHM9Uy5sYXllck5hbWVzLGw9cy5pbmRleE9mKCJmcm9u dHBsb3QiKSxjPXMuc2xpY2UoMCxsKSx1PSJiZWxvdyB0cmFjZXMiPT09by5sYXllcixmPSJi ZWxvdyB0cmFjZXMiPT09YS5sYXllcjt1JiZjLnB1c2goImFuZ3VsYXItbGluZSIpLGYmJmMu cHVzaCgicmFkaWFsLWxpbmUiKSx1JiZjLnB1c2goImFuZ3VsYXItYXhpcyIpLGYmJmMucHVz aCgicmFkaWFsLWF4aXMiKSxjLnB1c2goImZyb250cGxvdCIpLHV8fGMucHVzaCgiYW5ndWxh ci1saW5lIiksZnx8Yy5wdXNoKCJyYWRpYWwtbGluZSIpLHV8fGMucHVzaCgiYW5ndWxhci1h eGlzIiksZnx8Yy5wdXNoKCJyYWRpYWwtYXhpcyIpO3ZhciBoPShyPyJzbWl0aCI6InBvbGFy IikrInN1YmxheWVyIixwPXRoaXMuZnJhbWV3b3JrLnNlbGVjdEFsbCgiLiIraCkuZGF0YShj LFN0cmluZyk7cC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwoZnVuY3Rpb24o dCl7cmV0dXJuIGgrIiAiK3R9KSkuZWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9aVt0XT1uLnNl bGVjdCh0aGlzKTtzd2l0Y2godCl7Y2FzZSJmcm9udHBsb3QiOnJ8fGUuYXBwZW5kKCJnIiku Y2xhc3NlZCgiYmFybGF5ZXIiLCEwKSxlLmFwcGVuZCgiZyIpLmNsYXNzZWQoInNjYXR0ZXJs YXllciIsITApO2JyZWFrO2Nhc2UiYmFja3Bsb3QiOmUuYXBwZW5kKCJnIikuY2xhc3NlZCgi bWFwbGF5ZXIiLCEwKTticmVhaztjYXNlInBsb3RiZyI6aS5iZz1lLmFwcGVuZCgicGF0aCIp O2JyZWFrO2Nhc2UicmFkaWFsLWdyaWQiOmNhc2UiYW5ndWxhci1ncmlkIjplLnN0eWxlKCJm aWxsIiwibm9uZSIpO2JyZWFrO2Nhc2UicmFkaWFsLWxpbmUiOmUuYXBwZW5kKCJsaW5lIiku c3R5bGUoImZpbGwiLCJub25lIik7YnJlYWs7Y2FzZSJhbmd1bGFyLWxpbmUiOmUuYXBwZW5k KCJwYXRoIikuc3R5bGUoImZpbGwiLCJub25lIil9fSkpLHAub3JkZXIoKX0sTi51cGRhdGVM YXlvdXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmxheWVycyxuPXQuX3NpemUsaT10aGlz LmdldFJhZGlhbChlKSxhPXRoaXMuZ2V0QW5ndWxhcihlKSxvPWUuZG9tYWluLngscz1lLmRv bWFpbi55O3RoaXMueE9mZnNldD1uLmwrbi53Km9bMF0sdGhpcy55T2Zmc2V0PW4udCtuLmgq KDEtc1sxXSk7dmFyIGY9dGhpcy54TGVuZ3RoPW4udyoob1sxXS1vWzBdKSxoPXRoaXMueUxl bmd0aD1uLmgqKHNbMV0tc1swXSkscD10aGlzLmdldFNlY3RvcihlKTt0aGlzLnNlY3Rvcklu UmFkPXAubWFwKFIpO3ZhciBkLG0sZyx2LHkseD10aGlzLnNlY3RvckJCb3g9ZnVuY3Rpb24o dCl7dmFyIGUscixuLGksYT10WzBdLG89dFsxXS1hLHM9RChhLDM2MCksbD1zK28sYz1NYXRo LmNvcyhSKHMpKSx1PU1hdGguc2luKFIocykpLGY9TWF0aC5jb3MoUihsKSksaD1NYXRoLnNp bihSKGwpKTtpPXM8PTkwJiZsPj05MHx8cz45MCYmbD49NDUwPzE6dTw9MCYmaDw9MD8wOk1h dGgubWF4KHUsaCk7ZT1zPD0xODAmJmw+PTE4MHx8cz4xODAmJmw+PTU0MD8tMTpjPj0wJiZm Pj0wPzA6TWF0aC5taW4oYyxmKTtyPXM8PTI3MCYmbD49MjcwfHxzPjI3MCYmbD49NjMwPy0x OnU+PTAmJmg+PTA/MDpNYXRoLm1pbih1LGgpO249bD49MzYwPzE6Yzw9MCYmZjw9MD8wOk1h dGgubWF4KGMsZik7cmV0dXJuW2UscixuLGldfShwKSxiPXhbMl0teFswXSxfPXhbM10teFsx XSx3PWgvZixUPU1hdGguYWJzKF8vYik7dz5UPyhkPWYseT0oaC0obT1mKlQpKS9uLmgvMixn PVtvWzBdLG9bMV1dLHY9W3NbMF0reSxzWzFdLXldKToobT1oLHk9KGYtKGQ9aC9UKSkvbi53 LzIsZz1bb1swXSt5LG9bMV0teV0sdj1bc1swXSxzWzFdXSksdGhpcy54TGVuZ3RoMj1kLHRo aXMueUxlbmd0aDI9bSx0aGlzLnhEb21haW4yPWcsdGhpcy55RG9tYWluMj12O3ZhciBrLEE9 dGhpcy54T2Zmc2V0Mj1uLmwrbi53KmdbMF0sTT10aGlzLnlPZmZzZXQyPW4udCtuLmgqKDEt dlsxXSksUz10aGlzLnJhZGl1cz1kL2IsRT10aGlzLmlubmVyUmFkaXVzPXRoaXMuZ2V0SG9s ZShlKSpTLEw9dGhpcy5jeD1BLVMqeFswXSxDPXRoaXMuY3k9TStTKnhbM10sUD10aGlzLmN4 eD1MLUEsST10aGlzLmN5eT1DLU0sTz1pLnNpZGU7ImNvdW50ZXJjbG9ja3dpc2UiPT09Tz8o az1PLE89InRvcCIpOiJjbG9ja3dpc2UiPT09TyYmKGs9TyxPPSJib3R0b20iKSx0aGlzLnJh ZGlhbEF4aXM9dGhpcy5tb2NrQXhpcyh0LGUsaSx7X2lkOiJ4IixzaWRlOk8sX3RydWVTaWRl OmssZG9tYWluOltFL24udyxTL24ud119KSx0aGlzLmFuZ3VsYXJBeGlzPXRoaXMubW9ja0F4 aXModCxlLGEse3NpZGU6InJpZ2h0Iixkb21haW46WzAsTWF0aC5QSV0sYXV0b3JhbmdlOiEx fSksdGhpcy5kb0F1dG9SYW5nZSh0LGUpLHRoaXMudXBkYXRlQW5ndWxhckF4aXModCxlKSx0 aGlzLnVwZGF0ZVJhZGlhbEF4aXModCxlKSx0aGlzLnVwZGF0ZVJhZGlhbEF4aXNUaXRsZSh0 LGUpLHRoaXMueGF4aXM9dGhpcy5tb2NrQ2FydGVzaWFuQXhpcyh0LGUse19pZDoieCIsZG9t YWluOmd9KSx0aGlzLnlheGlzPXRoaXMubW9ja0NhcnRlc2lhbkF4aXModCxlLHtfaWQ6Inki LGRvbWFpbjp2fSk7dmFyIHo9dGhpcy5wYXRoU3VicGxvdCgpO3RoaXMuY2xpcFBhdGhzLmZv clRyYWNlcy5zZWxlY3QoInBhdGgiKS5hdHRyKCJkIix6KS5hdHRyKCJ0cmFuc2Zvcm0iLGwo UCxJKSksci5mcm9udHBsb3QuYXR0cigidHJhbnNmb3JtIixsKEEsTSkpLmNhbGwodS5zZXRD bGlwVXJsLHRoaXMuX2hhc0NsaXBPbkF4aXNGYWxzZT9udWxsOnRoaXMuY2xpcElkcy5mb3JU cmFjZXMsdGhpcy5nZCksci5iZy5hdHRyKCJkIix6KS5hdHRyKCJ0cmFuc2Zvcm0iLGwoTCxD KSkuY2FsbChjLmZpbGwsZS5iZ2NvbG9yKX0sTi5tb2NrQXhpcz1mdW5jdGlvbih0LGUscixu KXt2YXIgaT1vLmV4dGVuZEZsYXQoe30scixuKTtyZXR1cm4gZChpLGUsdCksaX0sTi5tb2Nr Q2FydGVzaWFuQXhpcz1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcyxpPW4uaXNTbWl0aCxh PXIuX2lkLHM9by5leHRlbmRGbGF0KHt0eXBlOiJsaW5lYXIifSxyKTtwKHMsdCk7dmFyIGw9 e3g6WzAsMl0seTpbMSwzXX07cmV0dXJuIHMuc2V0UmFuZ2U9ZnVuY3Rpb24oKXt2YXIgdD1u LnNlY3RvckJCb3gscj1sW2FdLGk9bi5yYWRpYWxBeGlzLl9ybCxvPShpWzFdLWlbMF0pLygx LW4uZ2V0SG9sZShlKSk7cy5yYW5nZT1bdFtyWzBdXSpvLHRbclsxXV0qb119LHMuaXNQdFdp dGhpblJhbmdlPSJ4IiE9PWF8fGk/ZnVuY3Rpb24oKXtyZXR1cm4hMH06ZnVuY3Rpb24odCl7 cmV0dXJuIG4uaXNQdEluc2lkZSh0KX0scy5zZXRSYW5nZSgpLHMuc2V0U2NhbGUoKSxzfSxO LmRvQXV0b1JhbmdlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5nZCxuPXRoaXMucmFkaWFs QXhpcyxpPXRoaXMuZ2V0UmFkaWFsKGUpO20ocixuKTt2YXIgYT1uLnJhbmdlO2kucmFuZ2U9 YS5zbGljZSgpLGkuX2lucHV0LnJhbmdlPWEuc2xpY2UoKSxuLl9ybD1bbi5yMmwoYVswXSxu dWxsLCJncmVnb3JpYW4iKSxuLnIybChhWzFdLG51bGwsImdyZWdvcmlhbiIpXX0sTi51cGRh dGVSYWRpYWxBeGlzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcyxuPXIuZ2QsaT1yLmxheWVy cyxhPXIucmFkaXVzLHU9ci5pbm5lclJhZGl1cyxmPXIuY3gscD1yLmN5LGQ9ci5nZXRSYWRp YWwoZSksbT1EKHIuZ2V0U2VjdG9yKGUpWzBdLDM2MCksZz1yLnJhZGlhbEF4aXMsdj11PGEs eT1yLmlzU21pdGg7eXx8KHIuZmlsbFZpZXdJbml0aWFsS2V5KCJyYWRpYWxheGlzLmFuZ2xl IixkLmFuZ2xlKSxyLmZpbGxWaWV3SW5pdGlhbEtleSgicmFkaWFsYXhpcy5yYW5nZSIsZy5y YW5nZS5zbGljZSgpKSxnLnNldEdlb21ldHJ5KCkpLCJhdXRvIj09PWcudGlja2FuZ2xlJiZt PjkwJiZtPD0yNzAmJihnLnRpY2thbmdsZT0xODApO3ZhciB4PXk/ZnVuY3Rpb24odCl7dmFy IGU9TyhyLEMoW3QueCwwXSkpO3JldHVybiBsKGVbMF0tZixlWzFdLXApfTpmdW5jdGlvbih0 KXtyZXR1cm4gbChnLmwycCh0LngpK3UsMCl9LGI9eT9mdW5jdGlvbih0KXtyZXR1cm4gSShy LHQueCwtMS8wLDEvMCl9OmZ1bmN0aW9uKHQpe3JldHVybiByLnBhdGhBcmMoZy5yMnAodC54 KSt1KX0sXz1qKGQpO2lmKHIucmFkaWFsVGlja0xheW91dCE9PV8mJihpWyJyYWRpYWwtYXhp cyJdLnNlbGVjdEFsbCgiLnh0aWNrIikucmVtb3ZlKCksci5yYWRpYWxUaWNrTGF5b3V0PV8p LHYpe2cuc2V0U2NhbGUoKTt2YXIgdz0wLFQ9eT8oZy50aWNrdmFsc3x8W10pLmZpbHRlcigo ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTB9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gaC50 aWNrVGV4dChnLHQsITAsITEpfSkpOmguY2FsY1RpY2tzKGcpLGs9eT9UOmguY2xpcEVuZHMo ZyxUKSxBPWguZ2V0VGlja1NpZ25zKGcpWzJdO3kmJigoInRvcCI9PT1nLnRpY2tzJiYiYm90 dG9tIj09PWcuc2lkZXx8ImJvdHRvbSI9PT1nLnRpY2tzJiYidG9wIj09PWcuc2lkZSkmJihB PS1BKSwidG9wIj09PWcudGlja3MmJiJ0b3AiPT09Zy5zaWRlJiYodz0tZy50aWNrbGVuKSwi Ym90dG9tIj09PWcudGlja3MmJiJib3R0b20iPT09Zy5zaWRlJiYodz1nLnRpY2tsZW4pKSxo LmRyYXdUaWNrcyhuLGcse3ZhbHM6VCxsYXllcjppWyJyYWRpYWwtYXhpcyJdLHBhdGg6aC5t YWtlVGlja1BhdGgoZywwLEEpLHRyYW5zRm46eCxjcmlzcDohMX0pLGguZHJhd0dyaWQobixn LHt2YWxzOmssbGF5ZXI6aVsicmFkaWFsLWdyaWQiXSxwYXRoOmIsdHJhbnNGbjpvLm5vb3As Y3Jpc3A6ITF9KSxoLmRyYXdMYWJlbHMobixnLHt2YWxzOlQsbGF5ZXI6aVsicmFkaWFsLWF4 aXMiXSx0cmFuc0ZuOngsbGFiZWxGbnM6aC5tYWtlTGFiZWxGbnMoZyx3KX0pfXZhciBNPXIu cmFkaWFsQXhpc0FuZ2xlPXIudmFuZ2xlcz9GKFUoUihkLmFuZ2xlKSxyLnZhbmdsZXMpKTpk LmFuZ2xlLFM9bChmLHApLEU9UytzKC1NKTtWKGlbInJhZGlhbC1heGlzIl0sdiYmKGQuc2hv d3RpY2tsYWJlbHN8fGQudGlja3MpLHt0cmFuc2Zvcm06RX0pLFYoaVsicmFkaWFsLWdyaWQi XSx2JiZkLnNob3dncmlkLHt0cmFuc2Zvcm06eT8iIjpTfSksVihpWyJyYWRpYWwtbGluZSJd LnNlbGVjdCgibGluZSIpLHYmJmQuc2hvd2xpbmUse3gxOnk/LWE6dSx5MTowLHgyOmEseTI6 MCx0cmFuc2Zvcm06RX0pLmF0dHIoInN0cm9rZS13aWR0aCIsZC5saW5ld2lkdGgpLmNhbGwo Yy5zdHJva2UsZC5saW5lY29sb3IpfSxOLnVwZGF0ZVJhZGlhbEF4aXNUaXRsZT1mdW5jdGlv bih0LGUscil7aWYoIXRoaXMuaXNTbWl0aCl7dmFyIG49dGhpcy5nZCxpPXRoaXMucmFkaXVz LGE9dGhpcy5jeCxvPXRoaXMuY3kscz10aGlzLmdldFJhZGlhbChlKSxsPXRoaXMuaWQrInRp dGxlIixjPTA7aWYocy50aXRsZSl7dmFyIGY9dS5iQm94KHRoaXMubGF5ZXJzWyJyYWRpYWwt YXhpcyJdLm5vZGUoKSkuaGVpZ2h0LGg9cy50aXRsZS5mb250LnNpemUscD1zLnNpZGU7Yz0i dG9wIj09PXA/aDoiY291bnRlcmNsb2Nrd2lzZSI9PT1wPy0oZisuNCpoKTpmKy44Kmh9dmFy IGQ9dm9pZCAwIT09cj9yOnRoaXMucmFkaWFsQXhpc0FuZ2xlLG09UihkKSxnPU1hdGguY29z KG0pLHY9TWF0aC5zaW4obSkseT1hK2kvMipnK2MqdixiPW8taS8yKnYrYypnO3RoaXMubGF5 ZXJzWyJyYWRpYWwtYXhpcy10aXRsZSJdPXguZHJhdyhuLGwse3Byb3BDb250YWluZXI6cyxw cm9wTmFtZTp0aGlzLmlkKyIucmFkaWFsYXhpcy50aXRsZSIscGxhY2Vob2xkZXI6eihuLCJD bGljayB0byBlbnRlciByYWRpYWwgYXhpcyB0aXRsZSIpLGF0dHJpYnV0ZXM6e3g6eSx5OmIs InRleHQtYW5jaG9yIjoibWlkZGxlIn0sdHJhbnNmb3JtOntyb3RhdGU6LWR9fSl9fSxOLnVw ZGF0ZUFuZ3VsYXJBeGlzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcyxuPXIuZ2QsaT1yLmxh eWVycyxhPXIucmFkaXVzLHU9ci5pbm5lclJhZGl1cyxmPXIuY3gscD1yLmN5LGQ9ci5nZXRB bmd1bGFyKGUpLG09ci5hbmd1bGFyQXhpcyxnPXIuaXNTbWl0aDtnfHwoci5maWxsVmlld0lu aXRpYWxLZXkoImFuZ3VsYXJheGlzLnJvdGF0aW9uIixkLnJvdGF0aW9uKSxtLnNldEdlb21l dHJ5KCksbS5zZXRTY2FsZSgpKTt2YXIgdj1nP2Z1bmN0aW9uKHQpe3ZhciBlPU8ocixDKFsw LHQueF0pKTtyZXR1cm4gTWF0aC5hdGFuMihlWzBdLWYsZVsxXS1wKS1NYXRoLlBJLzJ9OmZ1 bmN0aW9uKHQpe3JldHVybiBtLnQyZyh0LngpfTsibGluZWFyIj09PW0udHlwZSYmInJhZGlh bnMiPT09bS50aGV0YXVuaXQmJihtLnRpY2swPUYobS50aWNrMCksbS5kdGljaz1GKG0uZHRp Y2spKTt2YXIgeT1mdW5jdGlvbih0KXtyZXR1cm4gbChmK2EqTWF0aC5jb3ModCkscC1hKk1h dGguc2luKHQpKX0seD1nP2Z1bmN0aW9uKHQpe3ZhciBlPU8ocixDKFswLHQueF0pKTtyZXR1 cm4gbChlWzBdLGVbMV0pfTpmdW5jdGlvbih0KXtyZXR1cm4geSh2KHQpKX0sYj1nP2Z1bmN0 aW9uKHQpe3ZhciBlPU8ocixDKFswLHQueF0pKSxuPU1hdGguYXRhbjIoZVswXS1mLGVbMV0t cCktTWF0aC5QSS8yO3JldHVybiBsKGVbMF0sZVsxXSkrcygtRihuKSl9OmZ1bmN0aW9uKHQp e3ZhciBlPXYodCk7cmV0dXJuIHkoZSkrcygtRihlKSl9LF89Zz9mdW5jdGlvbih0KXtyZXR1 cm4gUChyLHQueCwwLDEvMCl9OmZ1bmN0aW9uKHQpe3ZhciBlPXYodCkscj1NYXRoLmNvcyhl KSxuPU1hdGguc2luKGUpO3JldHVybiJNIitbZit1KnIscC11Km5dKyJMIitbZithKnIscC1h Km5dfSx3PWgubWFrZUxhYmVsRm5zKG0sMCkubGFiZWxTdGFuZG9mZixUPXt4Rm46ZnVuY3Rp b24odCl7dmFyIGU9dih0KTtyZXR1cm4gTWF0aC5jb3MoZSkqd30seUZuOmZ1bmN0aW9uKHQp e3ZhciBlPXYodCkscj1NYXRoLnNpbihlKT4wPy4yOjE7cmV0dXJuLU1hdGguc2luKGUpKih3 K3QuZm9udFNpemUqcikrTWF0aC5hYnMoTWF0aC5jb3MoZSkpKih0LmZvbnRTaXplKk0pfSxh bmNob3JGbjpmdW5jdGlvbih0KXt2YXIgZT12KHQpLHI9TWF0aC5jb3MoZSk7cmV0dXJuIE1h dGguYWJzKHIpPC4xPyJtaWRkbGUiOnI+MD8ic3RhcnQiOiJlbmQifSxoZWlnaHRGbjpmdW5j dGlvbih0LGUscil7dmFyIG49dih0KTtyZXR1cm4tLjUqKDErTWF0aC5zaW4obikpKnJ9fSxr PWooZCk7ci5hbmd1bGFyVGlja0xheW91dCE9PWsmJihpWyJhbmd1bGFyLWF4aXMiXS5zZWxl Y3RBbGwoIi4iK20uX2lkKyJ0aWNrIikucmVtb3ZlKCksci5hbmd1bGFyVGlja0xheW91dD1r KTt2YXIgQSxTPWc/WzEvMF0uY29uY2F0KG0udGlja3ZhbHN8fFtdKS5tYXAoKGZ1bmN0aW9u KHQpe3JldHVybiBoLnRpY2tUZXh0KG0sdCwhMCwhMSl9KSk6aC5jYWxjVGlja3MobSk7aWYo ZyYmKFNbMF0udGV4dD0iXHUyMjFlIixTWzBdLmZvbnRTaXplKj0xLjc1KSwibGluZWFyIj09 PWUuZ3JpZHNoYXBlPyhBPVMubWFwKHYpLG8uYW5nbGVEZWx0YShBWzBdLEFbMV0pPDAmJihB PUEuc2xpY2UoKS5yZXZlcnNlKCkpKTpBPW51bGwsci52YW5nbGVzPUEsImNhdGVnb3J5Ij09 PW0udHlwZSYmKFM9Uy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBvLmlzQW5nbGVJbnNp ZGVTZWN0b3Iodih0KSxyLnNlY3RvckluUmFkKX0pKSksbS52aXNpYmxlKXt2YXIgRT0iaW5z aWRlIj09PW0udGlja3M/LTE6MSxMPShtLmxpbmV3aWR0aHx8MSkvMjtoLmRyYXdUaWNrcyhu LG0se3ZhbHM6UyxsYXllcjppWyJhbmd1bGFyLWF4aXMiXSxwYXRoOiJNIitFKkwrIiwwaCIr RSptLnRpY2tsZW4sdHJhbnNGbjpiLGNyaXNwOiExfSksaC5kcmF3R3JpZChuLG0se3ZhbHM6 UyxsYXllcjppWyJhbmd1bGFyLWdyaWQiXSxwYXRoOl8sdHJhbnNGbjpvLm5vb3AsY3Jpc3A6 ITF9KSxoLmRyYXdMYWJlbHMobixtLHt2YWxzOlMsbGF5ZXI6aVsiYW5ndWxhci1heGlzIl0s cmVwb3NpdGlvbk9uVXBkYXRlOiEwLHRyYW5zRm46eCxsYWJlbEZuczpUfSl9VihpWyJhbmd1 bGFyLWxpbmUiXS5zZWxlY3QoInBhdGgiKSxkLnNob3dsaW5lLHtkOnIucGF0aFN1YnBsb3Qo KSx0cmFuc2Zvcm06bChmLHApfSkuYXR0cigic3Ryb2tlLXdpZHRoIixkLmxpbmV3aWR0aCku Y2FsbChjLnN0cm9rZSxkLmxpbmVjb2xvcil9LE4udXBkYXRlRng9ZnVuY3Rpb24odCxlKXt0 aGlzLmdkLl9jb250ZXh0LnN0YXRpY1Bsb3R8fCghdGhpcy5pc1NtaXRoJiYodGhpcy51cGRh dGVBbmd1bGFyRHJhZyh0KSx0aGlzLnVwZGF0ZVJhZGlhbERyYWcodCxlLDApLHRoaXMudXBk YXRlUmFkaWFsRHJhZyh0LGUsMSkpLHRoaXMudXBkYXRlSG92ZXJBbmRNYWluRHJhZyh0KSl9 LE4udXBkYXRlSG92ZXJBbmRNYWluRHJhZz1mdW5jdGlvbih0KXt2YXIgZSxyLHM9dGhpcyxj PXMuaXNTbWl0aCx1PXMuZ2QsZj1zLmxheWVycyxoPXQuX3pvb21sYXllcixwPVMuTUlOWk9P TSxkPVMuT0ZGRURHRSxtPXMucmFkaXVzLHg9cy5pbm5lclJhZGl1cyxUPXMuY3gsaz1zLmN5 LEE9cy5jeHgsTT1zLmN5eSxMPXMuc2VjdG9ySW5SYWQsQz1zLnZhbmdsZXMsUD1zLnJhZGlh bEF4aXMsST1FLmNsYW1wVGlueSxPPUUuZmluZFhZYXRMZW5ndGgsej1FLmZpbmRFbmNsb3Np bmdWZXJ0ZXhBbmdsZXMsRD1TLmNvcm5lckhhbGZXaWR0aCxSPVMuY29ybmVyTGVuLzIsRj1n Lm1ha2VEcmFnZ2VyKGYsInBhdGgiLCJtYWluZHJhZyIsITE9PT10LmRyYWdtb2RlPyJub25l IjoiY3Jvc3NoYWlyIik7bi5zZWxlY3QoRikuYXR0cigiZCIscy5wYXRoU3VicGxvdCgpKS5h dHRyKCJ0cmFuc2Zvcm0iLGwoVCxrKSksRi5vbm1vdXNlbW92ZT1mdW5jdGlvbih0KXt5Lmhv dmVyKHUsdCxzLmlkKSx1Ll9mdWxsTGF5b3V0Ll9sYXN0aG92ZXI9Rix1Ll9mdWxsTGF5b3V0 Ll9ob3ZlcnN1YnBsb3Q9cy5pZH0sRi5vbm1vdXNlb3V0PWZ1bmN0aW9uKHQpe3UuX2RyYWdn aW5nfHx2LnVuaG92ZXIodSx0KX07dmFyIEIsTixqLFUsVixILHEsRyxZLFc9e2VsZW1lbnQ6 RixnZDp1LHN1YnBsb3Q6cy5pZCxwbG90aW5mbzp7aWQ6cy5pZCx4YXhpczpzLnhheGlzLHlh eGlzOnMueWF4aXN9LHhheGVzOltzLnhheGlzXSx5YXhlczpbcy55YXhpc119O2Z1bmN0aW9u IFgodCxlKXtyZXR1cm4gTWF0aC5zcXJ0KHQqdCtlKmUpfWZ1bmN0aW9uIFoodCxlKXtyZXR1 cm4gWCh0LUEsZS1NKX1mdW5jdGlvbiBKKHQsZSl7cmV0dXJuIE1hdGguYXRhbjIoTS1lLHQt QSl9ZnVuY3Rpb24gSyh0LGUpe3JldHVyblt0Kk1hdGguY29zKGUpLHQqTWF0aC5zaW4oLWUp XX1mdW5jdGlvbiBRKHQsZSl7aWYoMD09PXQpcmV0dXJuIHMucGF0aFNlY3RvcigyKkQpO3Zh ciByPVIvdCxuPWUtcixpPWUrcixhPU1hdGgubWF4KDAsTWF0aC5taW4odCxtKSksbz1hLUQs bD1hK0Q7cmV0dXJuIk0iK0sobyxuKSsiQSIrW28sb10rIiAwLDAsMCAiK0sobyxpKSsiTCIr SyhsLGkpKyJBIitbbCxsXSsiIDAsMCwxICIrSyhsLG4pKyJaIn1mdW5jdGlvbiAkKHQsZSxy KXtpZigwPT09dClyZXR1cm4gcy5wYXRoU2VjdG9yKDIqRCk7dmFyIG4saSxhPUsodCxlKSxv PUsodCxyKSxsPUkoKGFbMF0rb1swXSkvMiksYz1JKChhWzFdK29bMV0pLzIpO2lmKGwmJmMp e3ZhciB1PWMvbCxmPS0xL3UsaD1PKEQsdSxsLGMpO249TyhSLGYsaFswXVswXSxoWzBdWzFd KSxpPU8oUixmLGhbMV1bMF0saFsxXVsxXSl9ZWxzZXt2YXIgcCxkO2M/KHA9UixkPUQpOihw PUQsZD1SKSxuPVtbbC1wLGMtZF0sW2wrcCxjLWRdXSxpPVtbbC1wLGMrZF0sW2wrcCxjK2Rd XX1yZXR1cm4iTSIrbi5qb2luKCJMIikrIkwiK2kucmV2ZXJzZSgpLmpvaW4oIkwiKSsiWiJ9 ZnVuY3Rpb24gdHQodCxlKXtyZXR1cm4gZT1NYXRoLm1heChNYXRoLm1pbihlLG0pLHgpLHQ8 ZD90PTA6bS10PGQ/dD1tOmU8ZD9lPTA6bS1lPGQmJihlPW0pLE1hdGguYWJzKGUtdCk+cD8o dDxlPyhqPXQsVT1lKTooaj1lLFU9dCksITApOihqPW51bGwsVT1udWxsLCExKX1mdW5jdGlv biBldCh0LGUpe3Q9dHx8VixlPWV8fCJNMCwwWiIsRy5hdHRyKCJkIix0KSxZLmF0dHIoImQi LGUpLGcudHJhbnNpdGlvblpvb21ib3goRyxZLEgscSksSD0hMDt2YXIgcj17fTtvdChyKSx1 LmVtaXQoInBsb3RseV9yZWxheW91dGluZyIscil9ZnVuY3Rpb24gcnQodCxuKXt2YXIgaSxh LG89QisodCo9ZSksbD1OKyhuKj1yKSxjPVooQixOKSx1PU1hdGgubWluKFoobyxsKSxtKSxm PUooQixOKTt0dChjLHUpJiYoaT1WK3MucGF0aFNlY3RvcihVKSxqJiYoaSs9cy5wYXRoU2Vj dG9yKGopKSxhPVEoaixmKStRKFUsZikpLGV0KGksYSl9ZnVuY3Rpb24gbnQodCxlLHIsbil7 dmFyIGk9RS5maW5kSW50ZXJzZWN0aW9uWFkocixuLHIsW3QtQSxNLWVdKTtyZXR1cm4gWChp WzBdLGlbMV0pfWZ1bmN0aW9uIGl0KHQsZSl7dmFyIHIsbixpPUIrdCxhPU4rZSxvPUooQixO KSxsPUooaSxhKSxjPXoobyxDKSx1PXoobCxDKTt0dChudChCLE4sY1swXSxjWzFdKSxNYXRo Lm1pbihudChpLGEsdVswXSx1WzFdKSxtKSkmJihyPVYrcy5wYXRoU2VjdG9yKFUpLGomJihy Kz1zLnBhdGhTZWN0b3IoaikpLG49WyQoaixjWzBdLGNbMV0pLCQoVSxjWzBdLGNbMV0pXS5q b2luKCIgIikpLGV0KHIsbil9ZnVuY3Rpb24gYXQoKXtpZihnLnJlbW92ZVpvb21ib3godSks bnVsbCE9PWomJm51bGwhPT1VKXt2YXIgdD17fTtvdCh0KSxnLnNob3dEb3VibGVDbGlja05v dGlmaWVyKHUpLGEuY2FsbCgiX2d1aVJlbGF5b3V0Iix1LHQpfX1mdW5jdGlvbiBvdCh0KXt2 YXIgZT1QLl9ybCxyPShlWzFdLWVbMF0pLygxLXgvbSkvbSxuPVtlWzBdKyhqLXgpKnIsZVsw XSsoVS14KSpyXTt0W3MuaWQrIi5yYWRpYWxheGlzLnJhbmdlIl09bn1mdW5jdGlvbiBzdCh0 LGUpe3ZhciByPXUuX2Z1bGxMYXlvdXQuY2xpY2ttb2RlO2lmKGcucmVtb3ZlWm9vbWJveCh1 KSwyPT09dCl7dmFyIG49e307Zm9yKHZhciBpIGluIHMudmlld0luaXRpYWwpbltzLmlkKyIu IitpXT1zLnZpZXdJbml0aWFsW2ldO3UuZW1pdCgicGxvdGx5X2RvdWJsZWNsaWNrIixudWxs KSxhLmNhbGwoIl9ndWlSZWxheW91dCIsdSxuKX1yLmluZGV4T2YoInNlbGVjdCIpPi0xJiYx PT09dCYmXyhlLHUsW3MueGF4aXNdLFtzLnlheGlzXSxzLmlkLFcpLHIuaW5kZXhPZigiZXZl bnQiKT4tMSYmeS5jbGljayh1LGUscy5pZCl9Vy5wcmVwRm49ZnVuY3Rpb24odCxuLGEpe3Zh ciBsPXUuX2Z1bGxMYXlvdXQuZHJhZ21vZGUsZj1GLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp O3UuX2Z1bGxMYXlvdXQuX2NhbGNJbnZlcnNlVHJhbnNmb3JtKHUpO3ZhciBwPXUuX2Z1bGxM YXlvdXQuX2ludlRyYW5zZm9ybTtlPXUuX2Z1bGxMYXlvdXQuX2ludlNjYWxlWCxyPXUuX2Z1 bGxMYXlvdXQuX2ludlNjYWxlWTt2YXIgZD1vLmFwcGx5M0RUcmFuc2Zvcm0ocCkobi1mLmxl ZnQsYS1mLnRvcCk7aWYoQj1kWzBdLE49ZFsxXSxDKXt2YXIgdj1FLmZpbmRQb2x5Z29uT2Zm c2V0KG0sTFswXSxMWzFdLEMpO0IrPUErdlswXSxOKz1NK3ZbMV19c3dpdGNoKGwpe2Nhc2Ui em9vbSI6Vy5jbGlja0ZuPXN0LGN8fChXLm1vdmVGbj1DP2l0OnJ0LFcuZG9uZUZuPWF0LGZ1 bmN0aW9uKCl7aj1udWxsLFU9bnVsbCxWPXMucGF0aFN1YnBsb3QoKSxIPSExO3ZhciB0PXUu X2Z1bGxMYXlvdXRbcy5pZF07cT1pKHQuYmdjb2xvcikuZ2V0THVtaW5hbmNlKCksKEc9Zy5t YWtlWm9vbWJveChoLHEsVCxrLFYpKS5hdHRyKCJmaWxsLXJ1bGUiLCJldmVub2RkIiksWT1n Lm1ha2VDb3JuZXJzKGgsVCxrKSx3KHUpfSgpKTticmVhaztjYXNlInNlbGVjdCI6Y2FzZSJs YXNzbyI6Yih0LG4sYSxXLGwpfX0sdi5pbml0KFcpfSxOLnVwZGF0ZVJhZGlhbERyYWc9ZnVu Y3Rpb24odCxlLHIpe3ZhciBpPXRoaXMsYz1pLmdkLHU9aS5sYXllcnMsZj1pLnJhZGl1cyxo PWkuaW5uZXJSYWRpdXMscD1pLmN4LGQ9aS5jeSxtPWkucmFkaWFsQXhpcyx5PVMucmFkaWFs RHJhZ0JveFNpemUseD15LzI7aWYobS52aXNpYmxlKXt2YXIgYixfLFQsTT1SKGkucmFkaWFs QXhpc0FuZ2xlKSxFPW0uX3JsLEw9RVswXSxDPUVbMV0sUD1FW3JdLEk9Ljc1KihFWzFdLUVb MF0pLygxLWkuZ2V0SG9sZShlKSkvZjtyPyhiPXArKGYreCkqTWF0aC5jb3MoTSksXz1kLShm K3gpKk1hdGguc2luKE0pLFQ9InJhZGlhbGRyYWciKTooYj1wKyhoLXgpKk1hdGguY29zKE0p LF89ZC0oaC14KSpNYXRoLnNpbihNKSxUPSJyYWRpYWxkcmFnLWlubmVyIik7dmFyIE8seixE LEI9Zy5tYWtlUmVjdERyYWdnZXIodSxULCJjcm9zc2hhaXIiLC14LC14LHkseSksTj17ZWxl bWVudDpCLGdkOmN9OyExPT09dC5kcmFnbW9kZSYmKE4uZHJhZ21vZGU9ITEpLFYobi5zZWxl Y3QoQiksbS52aXNpYmxlJiZoPGYse3RyYW5zZm9ybTpsKGIsXyl9KSxOLnByZXBGbj1mdW5j dGlvbigpe089bnVsbCx6PW51bGwsRD1udWxsLE4ubW92ZUZuPWosTi5kb25lRm49SCx3KGMp fSxOLmNsYW1wRm49ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5zcXJ0KHQqdCtlKmUpPFMu TUlORFJBRyYmKHQ9MCxlPTApLFt0LGVdfSx2LmluaXQoTil9ZnVuY3Rpb24gaih0LGUpe2lm KE8pTyh0LGUpO2Vsc2V7dmFyIG49W3QsLWVdLGE9W01hdGguY29zKE0pLE1hdGguc2luKE0p XSxzPU1hdGguYWJzKG8uZG90KG4sYSkvTWF0aC5zcXJ0KG8uZG90KG4sbikpKTtpc05hTihz KXx8KE89czwuNT9xOkcpfXZhciBsPXt9OyFmdW5jdGlvbih0KXtudWxsIT09ej90W2kuaWQr Ii5yYWRpYWxheGlzLmFuZ2xlIl09ejpudWxsIT09RCYmKHRbaS5pZCsiLnJhZGlhbGF4aXMu cmFuZ2VbIityKyJdIl09RCl9KGwpLGMuZW1pdCgicGxvdGx5X3JlbGF5b3V0aW5nIixsKX1m dW5jdGlvbiBIKCl7bnVsbCE9PXo/YS5jYWxsKCJfZ3VpUmVsYXlvdXQiLGMsaS5pZCsiLnJh ZGlhbGF4aXMuYW5nbGUiLHopOm51bGwhPT1EJiZhLmNhbGwoIl9ndWlSZWxheW91dCIsYyxp LmlkKyIucmFkaWFsYXhpcy5yYW5nZVsiK3IrIl0iLEQpfWZ1bmN0aW9uIHEodCxlKXtpZigw IT09cil7dmFyIG49Yit0LGE9XytlO3o9TWF0aC5hdGFuMihkLWEsbi1wKSxpLnZhbmdsZXMm Jih6PVUoeixpLnZhbmdsZXMpKSx6PUYoeik7dmFyIG89bChwLGQpK3MoLXopO3VbInJhZGlh bC1heGlzIl0uYXR0cigidHJhbnNmb3JtIixvKSx1WyJyYWRpYWwtbGluZSJdLnNlbGVjdCgi bGluZSIpLmF0dHIoInRyYW5zZm9ybSIsbyk7dmFyIGM9aS5nZC5fZnVsbExheW91dCxmPWNb aS5pZF07aS51cGRhdGVSYWRpYWxBeGlzVGl0bGUoYyxmLHopfX1mdW5jdGlvbiBHKHQsZSl7 dmFyIG49by5kb3QoW3QsLWVdLFtNYXRoLmNvcyhNKSxNYXRoLnNpbihNKV0pO2lmKEQ9UC1J Km4sST4wPT0ocj9EPkw6RDxDKSl7dmFyIHM9Yy5fZnVsbExheW91dCxsPXNbaS5pZF07bS5y YW5nZVtyXT1ELG0uX3JsW3JdPUQsaS51cGRhdGVSYWRpYWxBeGlzKHMsbCksaS54YXhpcy5z ZXRSYW5nZSgpLGkueGF4aXMuc2V0U2NhbGUoKSxpLnlheGlzLnNldFJhbmdlKCksaS55YXhp cy5zZXRTY2FsZSgpO3ZhciB1PSExO2Zvcih2YXIgZiBpbiBpLnRyYWNlSGFzaCl7dmFyIGg9 aS50cmFjZUhhc2hbZl0scD1vLmZpbHRlclZpc2libGUoaCk7aFswXVswXS50cmFjZS5fbW9k dWxlLnBsb3QoYyxpLHAsbCksYS50cmFjZUlzKGYsImdsIikmJnAubGVuZ3RoJiYodT0hMCl9 dSYmKGsoYyksQShjKSl9ZWxzZSBEPW51bGx9fSxOLnVwZGF0ZUFuZ3VsYXJEcmFnPWZ1bmN0 aW9uKHQpe3ZhciBlPXRoaXMscj1lLmdkLGk9ZS5sYXllcnMsYz1lLnJhZGl1cyxmPWUuYW5n dWxhckF4aXMsaD1lLmN4LHA9ZS5jeSxkPWUuY3h4LG09ZS5jeXkseT1TLmFuZ3VsYXJEcmFn Qm94U2l6ZSx4PWcubWFrZURyYWdnZXIoaSwicGF0aCIsImFuZ3VsYXJkcmFnIiwhMT09PXQu ZHJhZ21vZGU/Im5vbmUiOiJtb3ZlIiksYj17ZWxlbWVudDp4LGdkOnJ9O2Z1bmN0aW9uIF8o dCxlKXtyZXR1cm4gTWF0aC5hdGFuMihtK3ktZSx0LWQteSl9ITE9PT10LmRyYWdtb2RlP2Iu ZHJhZ21vZGU9ITE6bi5zZWxlY3QoeCkuYXR0cigiZCIsZS5wYXRoQW5udWx1cyhjLGMreSkp LmF0dHIoInRyYW5zZm9ybSIsbChoLHApKS5jYWxsKFQsIm1vdmUiKTt2YXIgTSxFLEwsQyxQ LEksTz1pLmZyb250cGxvdC5zZWxlY3QoIi5zY2F0dGVybGF5ZXIiKS5zZWxlY3RBbGwoIi50 cmFjZSIpLHo9Ty5zZWxlY3RBbGwoIi5wb2ludCIpLEQ9Ty5zZWxlY3RBbGwoIi50ZXh0cG9p bnQiKTtmdW5jdGlvbiBSKGMsZyl7dmFyIHY9ZS5nZC5fZnVsbExheW91dCx5PXZbZS5pZF0s eD1fKE0rYyp0Ll9pbnZTY2FsZVgsRStnKnQuX2ludlNjYWxlWSksYj1GKHgtSSk7aWYoQz1M K2IsaS5mcm9udHBsb3QuYXR0cigidHJhbnNmb3JtIixsKGUueE9mZnNldDIsZS55T2Zmc2V0 MikrcyhbLWIsZCxtXSkpLGUudmFuZ2xlcyl7UD1lLnJhZGlhbEF4aXNBbmdsZStiO3ZhciB3 PWwoaCxwKStzKC1iKSxUPWwoaCxwKStzKC1QKTtpLmJnLmF0dHIoInRyYW5zZm9ybSIsdyks aVsicmFkaWFsLWdyaWQiXS5hdHRyKCJ0cmFuc2Zvcm0iLHcpLGlbInJhZGlhbC1heGlzIl0u YXR0cigidHJhbnNmb3JtIixUKSxpWyJyYWRpYWwtbGluZSJdLnNlbGVjdCgibGluZSIpLmF0 dHIoInRyYW5zZm9ybSIsVCksZS51cGRhdGVSYWRpYWxBeGlzVGl0bGUodix5LFApfWVsc2Ug ZS5jbGlwUGF0aHMuZm9yVHJhY2VzLnNlbGVjdCgicGF0aCIpLmF0dHIoInRyYW5zZm9ybSIs bChkLG0pK3MoYikpO3ouZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1uLnNlbGVjdCh0aGlzKSxl PXUuZ2V0VHJhbnNsYXRlKHQpO3QuYXR0cigidHJhbnNmb3JtIixsKGUueCxlLnkpK3MoW2Jd KSl9KSksRC5lYWNoKChmdW5jdGlvbigpe3ZhciB0PW4uc2VsZWN0KHRoaXMpLGU9dC5zZWxl Y3QoInRleHQiKSxyPXUuZ2V0VHJhbnNsYXRlKHQpO3QuYXR0cigidHJhbnNmb3JtIixzKFti LGUuYXR0cigieCIpLGUuYXR0cigieSIpXSkrbChyLngsci55KSl9KSksZi5yb3RhdGlvbj1v Lm1vZEhhbGYoQywzNjApLGUudXBkYXRlQW5ndWxhckF4aXModix5KSxlLl9oYXNDbGlwT25B eGlzRmFsc2UmJiFvLmlzRnVsbENpcmNsZShlLnNlY3RvckluUmFkKSYmTy5jYWxsKHUuaGlk ZU91dHNpZGVSYW5nZVBvaW50cyxlKTt2YXIgUz0hMTtmb3IodmFyIFIgaW4gZS50cmFjZUhh c2gpaWYoYS50cmFjZUlzKFIsImdsIikpe3ZhciBOPWUudHJhY2VIYXNoW1JdLGo9by5maWx0 ZXJWaXNpYmxlKE4pO05bMF1bMF0udHJhY2UuX21vZHVsZS5wbG90KHIsZSxqLHkpLGoubGVu Z3RoJiYoUz0hMCl9UyYmKGsociksQShyKSk7dmFyIFU9e307QihVKSxyLmVtaXQoInBsb3Rs eV9yZWxheW91dGluZyIsVSl9ZnVuY3Rpb24gQih0KXt0W2UuaWQrIi5hbmd1bGFyYXhpcy5y b3RhdGlvbiJdPUMsZS52YW5nbGVzJiYodFtlLmlkKyIucmFkaWFsYXhpcy5hbmdsZSJdPVAp fWZ1bmN0aW9uIE4oKXtELnNlbGVjdCgidGV4dCIpLmF0dHIoInRyYW5zZm9ybSIsbnVsbCk7 dmFyIHQ9e307Qih0KSxhLmNhbGwoIl9ndWlSZWxheW91dCIscix0KX1iLnByZXBGbj1mdW5j dGlvbihuLGksYSl7dmFyIHM9dFtlLmlkXTtMPXMuYW5ndWxhcmF4aXMucm90YXRpb247dmFy IGw9eC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtNPWktbC5sZWZ0LEU9YS1sLnRvcCxyLl9m dWxsTGF5b3V0Ll9jYWxjSW52ZXJzZVRyYW5zZm9ybShyKTt2YXIgYz1vLmFwcGx5M0RUcmFu c2Zvcm0odC5faW52VHJhbnNmb3JtKShNLEUpO009Y1swXSxFPWNbMV0sST1fKE0sRSksYi5t b3ZlRm49UixiLmRvbmVGbj1OLHcocil9LGUudmFuZ2xlcyYmIW8uaXNGdWxsQ2lyY2xlKGUu c2VjdG9ySW5SYWQpJiYoYi5wcmVwRm49by5ub29wLFQobi5zZWxlY3QoeCksbnVsbCkpLHYu aW5pdChiKX0sTi5pc1B0SW5zaWRlPWZ1bmN0aW9uKHQpe2lmKHRoaXMuaXNTbWl0aClyZXR1 cm4hMDt2YXIgZT10aGlzLnNlY3RvckluUmFkLHI9dGhpcy52YW5nbGVzLG49dGhpcy5hbmd1 bGFyQXhpcy5jMmcodC50aGV0YSksaT10aGlzLnJhZGlhbEF4aXMsYT1pLmMybCh0LnIpLHM9 aS5fcmw7cmV0dXJuKHI/RS5pc1B0SW5zaWRlUG9seWdvbjpvLmlzUHRJbnNpZGVTZWN0b3Ip KGEsbixzLGUscil9LE4ucGF0aEFyYz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnNlY3Rvcklu UmFkLHI9dGhpcy52YW5nbGVzO3JldHVybihyP0UucGF0aFBvbHlnb246by5wYXRoQXJjKSh0 LGVbMF0sZVsxXSxyKX0sTi5wYXRoU2VjdG9yPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuc2Vj dG9ySW5SYWQscj10aGlzLnZhbmdsZXM7cmV0dXJuKHI/RS5wYXRoUG9seWdvbjpvLnBhdGhT ZWN0b3IpKHQsZVswXSxlWzFdLHIpfSxOLnBhdGhBbm51bHVzPWZ1bmN0aW9uKHQsZSl7dmFy IHI9dGhpcy5zZWN0b3JJblJhZCxuPXRoaXMudmFuZ2xlcztyZXR1cm4obj9FLnBhdGhQb2x5 Z29uQW5udWx1czpvLnBhdGhBbm51bHVzKSh0LGUsclswXSxyWzFdLG4pfSxOLnBhdGhTdWJw bG90PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5pbm5lclJhZGl1cyxlPXRoaXMucmFkaXVzO3Jl dHVybiB0P3RoaXMucGF0aEFubnVsdXModCxlKTp0aGlzLnBhdGhTZWN0b3IoZSl9LE4uZmls bFZpZXdJbml0aWFsS2V5PWZ1bmN0aW9uKHQsZSl7dCBpbiB0aGlzLnZpZXdJbml0aWFsfHwo dGhpcy52aWV3SW5pdGlhbFt0XT1lKX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6MzY2 LCIuLi8uLi9jb21wb25lbnRzL2RyYWdlbGVtZW50IjozODUsIi4uLy4uL2NvbXBvbmVudHMv ZHJhd2luZyI6Mzg4LCIuLi8uLi9jb21wb25lbnRzL2Z4Ijo0MDYsIi4uLy4uL2NvbXBvbmVu dHMvdGl0bGVzIjo0NjQsIi4uLy4uL2NvbnN0YW50cy9hbGlnbm1lbnQiOjQ3MSwiLi4vLi4v bGliIjo1MDMsIi4uLy4uL2xpYi9jbGVhcl9nbF9jYW52YXNlcyI6NDg3LCIuLi8uLi9saWIv c2V0Y3Vyc29yIjo1MjQsIi4uLy4uL3Bsb3RfYXBpL3N1YnJvdXRpbmVzIjo1NDQsIi4uLy4u L3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo1NTQsIi4uLy4uL3JlZ2lzdHJ5Ijo2MzgsIi4uL2Nh cnRlc2lhbi9hdXRvcmFuZ2UiOjU1MywiLi4vY2FydGVzaWFuL2RyYWdib3giOjU2MywiLi4v Y2FydGVzaWFuL3NlbGVjdCI6NTc1LCIuLi9jYXJ0ZXNpYW4vc2V0X2NvbnZlcnQiOjU3Niwi Li4vcGxvdHMiOjYxOSwiLi4vc21pdGgvaGVscGVycyI6NjI4LCIuL2NvbnN0YW50cyI6NjIw LCIuL2hlbHBlcnMiOjYyMSwiLi9zZXRfY29udmVydCI6NjI2LCJAcGxvdGx5L2QzIjo1OCx0 aW55Y29sb3IyOjMxMn1dLDYyNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCIuLi8uLi9saWIiKSxpPXQoIi4uL2NhcnRlc2lhbi9zZXRfY29udmVydCIpLGE9bi5k ZWcycmFkLG89bi5yYWQyZGVnO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7c3dpdGNoKGko dCxyKSx0Ll9pZCl7Y2FzZSJ4IjpjYXNlInJhZGlhbGF4aXMiOiFmdW5jdGlvbih0LGUpe3Zh ciByPWUuX3N1YnBsb3Q7dC5zZXRHZW9tZXRyeT1mdW5jdGlvbigpe3ZhciBlPXQuX3JsWzBd LG49dC5fcmxbMV0saT1yLmlubmVyUmFkaXVzLGE9KHIucmFkaXVzLWkpLyhuLWUpLG89aS9h LHM9ZT5uP2Z1bmN0aW9uKHQpe3JldHVybiB0PD0wfTpmdW5jdGlvbih0KXtyZXR1cm4gdD49 MH07dC5jMmc9ZnVuY3Rpb24ocil7dmFyIG49dC5jMmwociktZTtyZXR1cm4ocyhuKT9uOjAp K299LHQuZzJjPWZ1bmN0aW9uKHIpe3JldHVybiB0LmwyYyhyK2Utbyl9LHQuZzJwPWZ1bmN0 aW9uKHQpe3JldHVybiB0KmF9LHQuYzJwPWZ1bmN0aW9uKGUpe3JldHVybiB0LmcycCh0LmMy ZyhlKSl9fX0odCxlKTticmVhaztjYXNlImFuZ3VsYXJheGlzIjohZnVuY3Rpb24odCxlKXt2 YXIgcj10LnR5cGU7aWYoImxpbmVhciI9PT1yKXt2YXIgaT10LmQyYyxzPXQuYzJkO3QuZDJj PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuImRlZ3JlZXMiPT09 ZT9hKHQpOnR9KGkodCksZSl9LHQuYzJkPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHMoZnVuY3Rp b24odCxlKXtyZXR1cm4iZGVncmVlcyI9PT1lP28odCk6dH0odCxlKSl9fXQubWFrZUNhbGNk YXRhPWZ1bmN0aW9uKGUsaSl7dmFyIGEsbyxzPWVbaV0sbD1lLl9sZW5ndGgsYz1mdW5jdGlv bihyKXtyZXR1cm4gdC5kMmMocixlLnRoZXRhdW5pdCl9O2lmKHMpe2lmKG4uaXNUeXBlZEFy cmF5KHMpJiYibGluZWFyIj09PXIpe2lmKGw9PT1zLmxlbmd0aClyZXR1cm4gcztpZihzLnN1 YmFycmF5KXJldHVybiBzLnN1YmFycmF5KDAsbCl9Zm9yKGE9bmV3IEFycmF5KGwpLG89MDtv PGw7bysrKWFbb109YyhzW29dKX1lbHNle3ZhciB1PWkrIjAiLGY9ImQiK2ksaD11IGluIGU/ YyhlW3VdKTowLHA9ZVtmXT9jKGVbZl0pOih0LnBlcmlvZHx8MipNYXRoLlBJKS9sO2Zvcihh PW5ldyBBcnJheShsKSxvPTA7bzxsO28rKylhW29dPWgrbypwfXJldHVybiBhfSx0LnNldEdl b21ldHJ5PWZ1bmN0aW9uKCl7dmFyIGkscyxsLGMsdT1lLnNlY3RvcixmPXUubWFwKGEpLGg9 e2Nsb2Nrd2lzZTotMSxjb3VudGVyY2xvY2t3aXNlOjF9W3QuZGlyZWN0aW9uXSxwPWEodC5y b3RhdGlvbiksZD1mdW5jdGlvbih0KXtyZXR1cm4gaCp0K3B9LG09ZnVuY3Rpb24odCl7cmV0 dXJuKHQtcCkvaH07c3dpdGNoKHIpe2Nhc2UibGluZWFyIjpzPWk9bi5pZGVudGl0eSxjPWEs bD1vLHQucmFuZ2U9bi5pc0Z1bGxDaXJjbGUoZik/W3VbMF0sdVswXSszNjBdOmYubWFwKG0p Lm1hcChvKTticmVhaztjYXNlImNhdGVnb3J5Ijp2YXIgZz10Ll9jYXRlZ29yaWVzLmxlbmd0 aCx2PXQucGVyaW9kP01hdGgubWF4KHQucGVyaW9kLGcpOmc7MD09PXYmJih2PTEpLHM9Yz1m dW5jdGlvbih0KXtyZXR1cm4gMip0Kk1hdGguUEkvdn0saT1sPWZ1bmN0aW9uKHQpe3JldHVy biB0KnYvTWF0aC5QSS8yfSx0LnJhbmdlPVswLHZdfXQuYzJnPWZ1bmN0aW9uKHQpe3JldHVy biBkKHModCkpfSx0LmcyYz1mdW5jdGlvbih0KXtyZXR1cm4gaShtKHQpKX0sdC50Mmc9ZnVu Y3Rpb24odCl7cmV0dXJuIGQoYyh0KSl9LHQuZzJ0PWZ1bmN0aW9uKHQpe3JldHVybiBsKG0o dCkpfX19KHQsZSl9fX0seyIuLi8uLi9saWIiOjUwMywiLi4vY2FydGVzaWFuL3NldF9jb252 ZXJ0Ijo1NzZ9XSw2Mjc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRz PXthdHRyOiJzdWJwbG90IixuYW1lOiJzbWl0aCIsYXhpc05hbWVzOlsicmVhbGF4aXMiLCJp bWFnaW5hcnlheGlzIl0sYXhpc05hbWUyZGF0YUFycmF5OntpbWFnaW5hcnlheGlzOiJpbWFn IixyZWFsYXhpczoicmVhbCJ9fX0se31dLDYyODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0IjtmdW5jdGlvbiBuKHQpe3JldHVybiB0PDA/LTE6dD4wPzE6MH1mdW5jdGlvbiBpKHQp e3ZhciBlPXRbMF0scj10WzFdO2lmKCFpc0Zpbml0ZShlKXx8IWlzRmluaXRlKHIpKXJldHVy blsxLDBdO3ZhciBuPShlKzEpKihlKzEpK3IqcjtyZXR1cm5bKGUqZStyKnItMSkvbiwyKnIv bl19ZnVuY3Rpb24gYSh0LGUpe3ZhciByPWVbMF0sbj1lWzFdO3JldHVybltyKnQucmFkaXVz K3QuY3gsLW4qdC5yYWRpdXMrdC5jeV19ZnVuY3Rpb24gbyh0LGUpe3JldHVybiBlKnQucmFk aXVzfWUuZXhwb3J0cz17c21pdGg6aSxyZWFjdGFuY2VBcmM6ZnVuY3Rpb24odCxlLHIsbil7 dmFyIHM9YSh0LGkoW3IsZV0pKSxsPXNbMF0sYz1zWzFdLHU9YSh0LGkoW24sZV0pKSxmPXVb MF0saD11WzFdO2lmKDA9PT1lKXJldHVyblsiTSIrbCsiLCIrYywiTCIrZisiLCIraF0uam9p bigiICIpO3ZhciBwPW8odCwxL01hdGguYWJzKGUpKTtyZXR1cm5bIk0iK2wrIiwiK2MsIkEi K3ArIiwiK3ArIiAwIDAsIisoZTwwPzE6MCkrIiAiK2YrIiwiK2hdLmpvaW4oIiAiKX0scmVz aXN0YW5jZUFyYzpmdW5jdGlvbih0LGUscixzKXt2YXIgbD1vKHQsMS8oZSsxKSksYz1hKHQs aShbZSxyXSkpLHU9Y1swXSxmPWNbMV0saD1hKHQsaShbZSxzXSkpLHA9aFswXSxkPWhbMV07 aWYobihyKSE9PW4ocykpe3ZhciBtPWEodCxpKFtlLDBdKSk7cmV0dXJuWyJNIit1KyIsIitm LCJBIitsKyIsIitsKyIgMCAwLCIrKDA8cj8wOjEpKyIgIittWzBdKyIsIittWzFdLCJBIits KyIsIitsKyIgMCAwLCIrKHM8MD8wOjEpK3ArIiwiK2RdLmpvaW4oIiAiKX1yZXR1cm5bIk0i K3UrIiwiK2YsIkEiK2wrIiwiK2wrIiAwIDAsIisoczxyPzA6MSkrIiAiK3ArIiwiK2RdLmpv aW4oIiAiKX0sc21pdGhUcmFuc2Zvcm06YX19LHt9XSw2Mjk6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiLi4vZ2V0X2RhdGEiKS5nZXRTdWJwbG90Q2FsY0RhdGEs aT10KCIuLi8uLi9saWIiKS5jb3VudGVyUmVnZXgsYT10KCIuLi9wb2xhci9wb2xhciIpLG89 dCgiLi9jb25zdGFudHMiKSxzPW8uYXR0cixsPW8ubmFtZSxjPWkobCksdT17fTt1W3NdPXt2 YWxUeXBlOiJzdWJwbG90aWQiLGRmbHQ6bCxlZGl0VHlwZToiY2FsYyJ9LGUuZXhwb3J0cz17 YXR0cjpzLG5hbWU6bCxpZFJvb3Q6bCxpZFJlZ2V4OmMsYXR0clJlZ2V4OmMsYXR0cmlidXRl czp1LGxheW91dEF0dHJpYnV0ZXM6dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpLHN1cHBseUxh eW91dERlZmF1bHRzOnQoIi4vbGF5b3V0X2RlZmF1bHRzIikscGxvdDpmdW5jdGlvbih0KXtm b3IodmFyIGU9dC5fZnVsbExheW91dCxyPXQuY2FsY2RhdGEsaT1lLl9zdWJwbG90c1tsXSxv PTA7bzxpLmxlbmd0aDtvKyspe3ZhciBzPWlbb10sYz1uKHIsbCxzKSx1PWVbc10uX3N1YnBs b3Q7dXx8KHU9YSh0LHMsITApLGVbc10uX3N1YnBsb3Q9dSksdS5wbG90KGMsZSx0Ll9wcm9t aXNlcyl9fSxjbGVhbjpmdW5jdGlvbih0LGUscixuKXtmb3IodmFyIGk9bi5fc3VicGxvdHNb bF18fFtdLGE9MDthPGkubGVuZ3RoO2ErKyl7dmFyIG89aVthXSxzPW5bb10uX3N1YnBsb3Q7 aWYoIWVbb10mJnMpZm9yKHZhciBjIGluIHMuZnJhbWV3b3JrLnJlbW92ZSgpLHMuY2xpcFBh dGhzKXMuY2xpcFBhdGhzW2NdLnJlbW92ZSgpfX0sdG9TVkc6dCgiLi4vY2FydGVzaWFuIiku dG9TVkd9fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi9jYXJ0ZXNpYW4iOjU2OCwiLi4vZ2V0X2Rh dGEiOjU5MywiLi4vcG9sYXIvcG9sYXIiOjYyNSwiLi9jb25zdGFudHMiOjYyNywiLi9sYXlv dXRfYXR0cmlidXRlcyI6NjMwLCIuL2xheW91dF9kZWZhdWx0cyI6NjMxfV0sNjMwOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29s b3IvYXR0cmlidXRlcyIpLGk9dCgiLi4vY2FydGVzaWFuL2xheW91dF9hdHRyaWJ1dGVzIiks YT10KCIuLi9kb21haW4iKS5hdHRyaWJ1dGVzLG89dCgiLi4vLi4vbGliIikuZXh0ZW5kRmxh dCxzPXQoIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiKS5vdmVycmlkZUFsbCxsPXMoe2Nv bG9yOmkuY29sb3Isc2hvd2xpbmU6byh7fSxpLnNob3dsaW5lLHtkZmx0OiEwfSksbGluZWNv bG9yOmkubGluZWNvbG9yLGxpbmV3aWR0aDppLmxpbmV3aWR0aCxzaG93Z3JpZDpvKHt9LGku c2hvd2dyaWQse2RmbHQ6ITB9KSxncmlkY29sb3I6aS5ncmlkY29sb3IsZ3JpZHdpZHRoOmku Z3JpZHdpZHRoLGdyaWRkYXNoOmkuZ3JpZGRhc2h9LCJwbG90IiwiZnJvbS1yb290IiksYz1z KHt0aWNrbGVuOmkudGlja2xlbix0aWNrd2lkdGg6byh7fSxpLnRpY2t3aWR0aCx7ZGZsdDoy fSksdGlja2NvbG9yOmkudGlja2NvbG9yLHNob3d0aWNrbGFiZWxzOmkuc2hvd3RpY2tsYWJl bHMsc2hvd3RpY2twcmVmaXg6aS5zaG93dGlja3ByZWZpeCx0aWNrcHJlZml4OmkudGlja3By ZWZpeCxzaG93dGlja3N1ZmZpeDppLnNob3d0aWNrc3VmZml4LHRpY2tzdWZmaXg6aS50aWNr c3VmZml4LHRpY2tmb250OmkudGlja2ZvbnQsdGlja2Zvcm1hdDppLnRpY2tmb3JtYXQsaG92 ZXJmb3JtYXQ6aS5ob3ZlcmZvcm1hdCxsYXllcjppLmxheWVyfSwicGxvdCIsImZyb20tcm9v dCIpLHU9byh7dmlzaWJsZTpvKHt9LGkudmlzaWJsZSx7ZGZsdDohMH0pLHRpY2t2YWxzOntk Zmx0OlsuMiwuNSwxLDIsNV0sdmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6InBsb3Qi fSx0aWNrYW5nbGU6byh7fSxpLnRpY2thbmdsZSx7ZGZsdDo5MH0pLHRpY2tzOnt2YWxUeXBl OiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0b3AiLCJib3R0b20iLCIiXSxlZGl0VHlwZToidGlj a3MifSxzaWRlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0b3AiLCJib3R0b20i XSxkZmx0OiJ0b3AiLGVkaXRUeXBlOiJwbG90In0sZWRpdFR5cGU6ImNhbGMifSxsLGMpLGY9 byh7dmlzaWJsZTpvKHt9LGkudmlzaWJsZSx7ZGZsdDohMH0pLHRpY2t2YWxzOnt2YWxUeXBl OiJkYXRhX2FycmF5IixlZGl0VHlwZToicGxvdCJ9LHRpY2tzOmkudGlja3MsZWRpdFR5cGU6 ImNhbGMifSxsLGMpO2UuZXhwb3J0cz17ZG9tYWluOmEoe25hbWU6InNtaXRoIixlZGl0VHlw ZToicGxvdCJ9KSxiZ2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRpdFR5cGU6InBsb3QiLGRm bHQ6bi5iYWNrZ3JvdW5kfSxyZWFsYXhpczp1LGltYWdpbmFyeWF4aXM6ZixlZGl0VHlwZToi Y2FsYyJ9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyI6MzY1LCIuLi8u Li9saWIiOjUwMywiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyI6NTM2LCIuLi9jYXJ0ZXNp YW4vbGF5b3V0X2F0dHJpYnV0ZXMiOjU2OSwiLi4vZG9tYWluIjo1ODR9XSw2MzE6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG4saSxhLG89dCgiLi4vLi4vbGliIikscz10 KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksbD10KCIuLi8uLi9wbG90X2FwaS9wbG90X3Rl bXBsYXRlIiksYz10KCIuLi9zdWJwbG90X2RlZmF1bHRzIiksdT10KCIuLi9nZXRfZGF0YSIp LmdldFN1YnBsb3REYXRhLGY9dCgiLi4vY2FydGVzaWFuL3ByZWZpeF9zdWZmaXhfZGVmYXVs dHMiKSxoPXQoIi4uL2NhcnRlc2lhbi90aWNrX2xhYmVsX2RlZmF1bHRzIikscD10KCIuLi9j YXJ0ZXNpYW4vbGluZV9ncmlkX2RlZmF1bHRzIiksZD10KCIuLi9jYXJ0ZXNpYW4vc2V0X2Nv bnZlcnQiKSxtPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxnPXQoIi4vY29uc3RhbnRzIiks dj1nLmF4aXNOYW1lcyx5PShuPWZ1bmN0aW9uKHQpe3JldHVybiB0LnNsaWNlKCkucmV2ZXJz ZSgpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuLXR9KSkuY29uY2F0KFswXSkuY29uY2F0KHQp fSxpPVN0cmluZyxhPXt9LGZ1bmN0aW9uKHQpe3ZhciBlPWk/aSh0KTp0O2lmKGUgaW4gYSly ZXR1cm4gYVtlXTt2YXIgcj1uKHQpO3JldHVybiBhW2VdPXIscn0pO2Z1bmN0aW9uIHgodCxl LHIsbil7dmFyIGk9cigiYmdjb2xvciIpO24uYmdDb2xvcj1zLmNvbWJpbmUoaSxuLnBhcGVy X2JnY29sb3IpO3ZhciBhLGM9dShuLmZ1bGxEYXRhLGcubmFtZSxuLmlkKSx4PW4ubGF5b3V0 T3V0O2Z1bmN0aW9uIGIodCxlKXtyZXR1cm4gcihhKyIuIit0LGUpfWZvcih2YXIgXz0wO188 di5sZW5ndGg7XysrKXthPXZbX10sby5pc1BsYWluT2JqZWN0KHRbYV0pfHwodFthXT17fSk7 dmFyIHc9dFthXSxUPWwubmV3Q29udGFpbmVyKGUsYSk7VC5faWQ9VC5fbmFtZT1hLFQuX2F0 dHI9bi5pZCsiLiIrYSxULl90cmFjZUluZGljZXM9Yy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVy biB0Ll9leHBhbmRlZEluZGV4fSkpO3ZhciBrPWIoInZpc2libGUiKTtpZihULnR5cGU9Imxp bmVhciIsZChULHgpLGYodyxULGIsVC50eXBlKSxrKXt2YXIgQSxNLFMsRSxMPSJyZWFsYXhp cyI9PT1hO2lmKEwmJmIoInNpZGUiKSxMKWIoInRpY2t2YWxzIik7ZWxzZSBiKCJ0aWNrdmFs cyIseShlLnJlYWxheGlzLnRpY2t2YWxzfHxtLnJlYWxheGlzLnRpY2t2YWxzLmRmbHQpKTt2 YXIgQz1uLmZvbnR8fHt9O2smJihNPShBPWIoImNvbG9yIikpPT09dy5jb2xvcj9BOkMuY29s b3IsUz1DLnNpemUsRT1DLmZhbWlseSksaCh3LFQsYixULnR5cGUse25vVGlja2xhYmVsc3Rl cDohMCxub0FuZzohTCxub0V4cDohMCxmb250Ontjb2xvcjpNLHNpemU6UyxmYW1pbHk6RX19 KSxvLmNvZXJjZTIodCxlLG0sYSsiLnRpY2tsZW4iKSxvLmNvZXJjZTIodCxlLG0sYSsiLnRp Y2t3aWR0aCIpLG8uY29lcmNlMih0LGUsbSxhKyIudGlja2NvbG9yIixlLmNvbG9yKSxiKCJ0 aWNrcyIpfHwoZGVsZXRlIGVbYV0udGlja2xlbixkZWxldGUgZVthXS50aWNrd2lkdGgsZGVs ZXRlIGVbYV0udGlja2NvbG9yKSxwKHcsVCxiLHtkZmx0Q29sb3I6QSxiZ0NvbG9yOm4uYmdD b2xvcixibGVuZDo2MCxzaG93TGluZTohMCxzaG93R3JpZDohMCxub1plcm9MaW5lOiEwLGF0 dHJpYnV0ZXM6bVthXX0pLGIoImxheWVyIil9YigiaG92ZXJmb3JtYXQiKSxkZWxldGUgVC50 eXBlLFQuX2lucHV0PXd9fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7Yyh0LGUscix7bm9V aXJldmlzaW9uOiEwLHR5cGU6Zy5uYW1lLGF0dHJpYnV0ZXM6bSxoYW5kbGVEZWZhdWx0czp4 LGZvbnQ6ZS5mb250LHBhcGVyX2JnY29sb3I6ZS5wYXBlcl9iZ2NvbG9yLGZ1bGxEYXRhOnIs bGF5b3V0T3V0OmV9KX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6MzY2LCIuLi8uLi9s aWIiOjUwMywiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NTQzLCIuLi9jYXJ0ZXNp YW4vbGluZV9ncmlkX2RlZmF1bHRzIjo1NzEsIi4uL2NhcnRlc2lhbi9wcmVmaXhfc3VmZml4 X2RlZmF1bHRzIjo1NzMsIi4uL2NhcnRlc2lhbi9zZXRfY29udmVydCI6NTc2LCIuLi9jYXJ0 ZXNpYW4vdGlja19sYWJlbF9kZWZhdWx0cyI6NTc4LCIuLi9nZXRfZGF0YSI6NTkzLCIuLi9z dWJwbG90X2RlZmF1bHRzIjo2MzIsIi4vY29uc3RhbnRzIjo2MjcsIi4vbGF5b3V0X2F0dHJp YnV0ZXMiOjYzMH1dLDYzMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCIuLi9saWIiKSxpPXQoIi4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKSxhPXQoIi4vZG9t YWluIikuZGVmYXVsdHM7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG8pe3ZhciBzLGwsYz1v LnR5cGUsdT1vLmF0dHJpYnV0ZXMsZj1vLmhhbmRsZURlZmF1bHRzLGg9by5wYXJ0aXRpb258 fCJ4IixwPWUuX3N1YnBsb3RzW2NdLGQ9cC5sZW5ndGgsbT1kJiZwWzBdLnJlcGxhY2UoL1xk KyQvLCIiKTtmdW5jdGlvbiBnKHQsZSl7cmV0dXJuIG4uY29lcmNlKHMsbCx1LHQsZSl9Zm9y KHZhciB2PTA7djxkO3YrKyl7dmFyIHk9cFt2XTtzPXRbeV0/dFt5XTp0W3ldPXt9LGw9aS5u ZXdDb250YWluZXIoZSx5LG0pLG8ubm9VaXJldmlzaW9ufHxnKCJ1aXJldmlzaW9uIixlLnVp cmV2aXNpb24pO3ZhciB4PXt9O3hbaF09W3YvZCwodisxKS9kXSxhKGwsZSxnLHgpLG8uaWQ9 eSxmKHMsbCxnLG8pfX19LHsiLi4vbGliIjo1MDMsIi4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxh dGUiOjU0MywiLi9kb21haW4iOjU4NH1dLDYzMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj10KCIuLi9jb25zdGFudHMvZG9jcyIpO24uRk9STUFUX0xJTkssbi5EQVRF X0ZPUk1BVF9MSU5LO2Z1bmN0aW9uIGkodCl7dmFyIGU9dC5kZXNjcmlwdGlvbj8iICIrdC5k ZXNjcmlwdGlvbjoiIixyPXQua2V5c3x8W107aWYoci5sZW5ndGg+MCl7Zm9yKHZhciBuPVtd LGk9MDtpPHIubGVuZ3RoO2krKyluW2ldPSJgIityW2ldKyJgIjtlKz0iRmluYWxseSwgdGhl IHRlbXBsYXRlIHN0cmluZyBoYXMgYWNjZXNzIHRvICIsZT0xPT09ci5sZW5ndGg/InZhcmlh YmxlICIrblswXToidmFyaWFibGVzICIrbi5zbGljZSgwLC0xKS5qb2luKCIsICIpKyIgYW5k ICIrbi5zbGljZSgtMSkrIi4ifXJldHVybiBlfXIuaG92ZXJ0ZW1wbGF0ZUF0dHJzPWZ1bmN0 aW9uKHQsZSl7dD10fHx7fTtpKGU9ZXx8e30pO3ZhciByPXt2YWxUeXBlOiJzdHJpbmciLGRm bHQ6IiIsZWRpdFR5cGU6dC5lZGl0VHlwZXx8Im5vbmUifTtyZXR1cm4hMSE9PXQuYXJyYXlP ayYmKHIuYXJyYXlPaz0hMCkscn0sci50ZXh0dGVtcGxhdGVBdHRycz1mdW5jdGlvbih0LGUp e3Q9dHx8e307aShlPWV8fHt9KTt2YXIgcj17dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGVk aXRUeXBlOnQuZWRpdFR5cGV8fCJjYWxjIn07cmV0dXJuITEhPT10LmFycmF5T2smJihyLmFy cmF5T2s9ITApLHJ9fSx7Ii4uL2NvbnN0YW50cy9kb2NzIjo0NzR9XSw2MzQ6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi90ZXJuYXJ5IiksaT10KCIuLi8uLi9w bG90cy9nZXRfZGF0YSIpLmdldFN1YnBsb3RDYWxjRGF0YSxhPXQoIi4uLy4uL2xpYiIpLmNv dW50ZXJSZWdleDtyLm5hbWU9InRlcm5hcnkiO3ZhciBvPXIuYXR0cj0ic3VicGxvdCI7ci5p ZFJvb3Q9InRlcm5hcnkiLHIuaWRSZWdleD1yLmF0dHJSZWdleD1hKCJ0ZXJuYXJ5IiksKHIu YXR0cmlidXRlcz17fSlbb109e3ZhbFR5cGU6InN1YnBsb3RpZCIsZGZsdDoidGVybmFyeSIs ZWRpdFR5cGU6ImNhbGMifSxyLmxheW91dEF0dHJpYnV0ZXM9dCgiLi9sYXlvdXRfYXR0cmli dXRlcyIpLHIuc3VwcGx5TGF5b3V0RGVmYXVsdHM9dCgiLi9sYXlvdXRfZGVmYXVsdHMiKSxy LnBsb3Q9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuX2Z1bGxMYXlvdXQscj10LmNhbGNkYXRh LGE9ZS5fc3VicGxvdHMudGVybmFyeSxvPTA7bzxhLmxlbmd0aDtvKyspe3ZhciBzPWFbb10s bD1pKHIsInRlcm5hcnkiLHMpLGM9ZVtzXS5fc3VicGxvdDtjfHwoYz1uZXcgbih7aWQ6cyxn cmFwaERpdjp0LGNvbnRhaW5lcjplLl90ZXJuYXJ5bGF5ZXIubm9kZSgpfSxlKSxlW3NdLl9z dWJwbG90PWMpLGMucGxvdChsLGUsdC5fcHJvbWlzZXMpfX0sci5jbGVhbj1mdW5jdGlvbih0 LGUscixuKXtmb3IodmFyIGk9bi5fc3VicGxvdHMudGVybmFyeXx8W10sYT0wO2E8aS5sZW5n dGg7YSsrKXt2YXIgbz1pW2FdLHM9bltvXS5fc3VicGxvdDshZVtvXSYmcyYmKHMucGxvdENv bnRhaW5lci5yZW1vdmUoKSxzLmNsaXBEZWYucmVtb3ZlKCkscy5jbGlwRGVmUmVsYXRpdmUu cmVtb3ZlKCkscy5sYXllcnNbImEtdGl0bGUiXS5yZW1vdmUoKSxzLmxheWVyc1siYi10aXRs ZSJdLnJlbW92ZSgpLHMubGF5ZXJzWyJjLXRpdGxlIl0ucmVtb3ZlKCkpfX19LHsiLi4vLi4v bGliIjo1MDMsIi4uLy4uL3Bsb3RzL2dldF9kYXRhIjo1OTMsIi4vbGF5b3V0X2F0dHJpYnV0 ZXMiOjYzNSwiLi9sYXlvdXRfZGVmYXVsdHMiOjYzNiwiLi90ZXJuYXJ5Ijo2Mzd9XSw2MzU6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50 cy9jb2xvci9hdHRyaWJ1dGVzIiksaT10KCIuLi9kb21haW4iKS5hdHRyaWJ1dGVzLGE9dCgi Li4vY2FydGVzaWFuL2xheW91dF9hdHRyaWJ1dGVzIiksbz10KCIuLi8uLi9wbG90X2FwaS9l ZGl0X3R5cGVzIikub3ZlcnJpZGVBbGwscz10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5k RmxhdCxsPXt0aXRsZTp7dGV4dDphLnRpdGxlLnRleHQsZm9udDphLnRpdGxlLmZvbnR9LGNv bG9yOmEuY29sb3IsdGlja21vZGU6YS50aWNrbW9kZSxudGlja3M6cyh7fSxhLm50aWNrcyx7 ZGZsdDo2LG1pbjoxfSksdGljazA6YS50aWNrMCxkdGljazphLmR0aWNrLHRpY2t2YWxzOmEu dGlja3ZhbHMsdGlja3RleHQ6YS50aWNrdGV4dCx0aWNrczphLnRpY2tzLHRpY2tsZW46YS50 aWNrbGVuLHRpY2t3aWR0aDphLnRpY2t3aWR0aCx0aWNrY29sb3I6YS50aWNrY29sb3IsdGlj a2xhYmVsc3RlcDphLnRpY2tsYWJlbHN0ZXAsc2hvd3RpY2tsYWJlbHM6YS5zaG93dGlja2xh YmVscyxzaG93dGlja3ByZWZpeDphLnNob3d0aWNrcHJlZml4LHRpY2twcmVmaXg6YS50aWNr cHJlZml4LHNob3d0aWNrc3VmZml4OmEuc2hvd3RpY2tzdWZmaXgsdGlja3N1ZmZpeDphLnRp Y2tzdWZmaXgsc2hvd2V4cG9uZW50OmEuc2hvd2V4cG9uZW50LGV4cG9uZW50Zm9ybWF0OmEu ZXhwb25lbnRmb3JtYXQsbWluZXhwb25lbnQ6YS5taW5leHBvbmVudCxzZXBhcmF0ZXRob3Vz YW5kczphLnNlcGFyYXRldGhvdXNhbmRzLHRpY2tmb250OmEudGlja2ZvbnQsdGlja2FuZ2xl OmEudGlja2FuZ2xlLHRpY2tmb3JtYXQ6YS50aWNrZm9ybWF0LHRpY2tmb3JtYXRzdG9wczph LnRpY2tmb3JtYXRzdG9wcyxob3ZlcmZvcm1hdDphLmhvdmVyZm9ybWF0LHNob3dsaW5lOnMo e30sYS5zaG93bGluZSx7ZGZsdDohMH0pLGxpbmVjb2xvcjphLmxpbmVjb2xvcixsaW5ld2lk dGg6YS5saW5ld2lkdGgsc2hvd2dyaWQ6cyh7fSxhLnNob3dncmlkLHtkZmx0OiEwfSksZ3Jp ZGNvbG9yOmEuZ3JpZGNvbG9yLGdyaWR3aWR0aDphLmdyaWR3aWR0aCxncmlkZGFzaDphLmdy aWRkYXNoLGxheWVyOmEubGF5ZXIsbWluOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MCxtaW46 MH0sX2RlcHJlY2F0ZWQ6e3RpdGxlOmEuX2RlcHJlY2F0ZWQudGl0bGUsdGl0bGVmb250OmEu X2RlcHJlY2F0ZWQudGl0bGVmb250fX0sYz1lLmV4cG9ydHM9byh7ZG9tYWluOmkoe25hbWU6 InRlcm5hcnkifSksYmdjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6bi5iYWNrZ3JvdW5k fSxzdW06e3ZhbFR5cGU6Im51bWJlciIsZGZsdDoxLG1pbjowfSxhYXhpczpsLGJheGlzOmws Y2F4aXM6bH0sInBsb3QiLCJmcm9tLXJvb3QiKTtjLnVpcmV2aXNpb249e3ZhbFR5cGU6ImFu eSIsZWRpdFR5cGU6Im5vbmUifSxjLmFheGlzLnVpcmV2aXNpb249Yy5iYXhpcy51aXJldmlz aW9uPWMuY2F4aXMudWlyZXZpc2lvbj17dmFsVHlwZToiYW55IixlZGl0VHlwZToibm9uZSJ9 fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyI6MzY1LCIuLi8uLi9saWIv ZXh0ZW5kIjo0OTMsIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiOjUzNiwiLi4vY2FydGVz aWFuL2xheW91dF9hdHRyaWJ1dGVzIjo1NjksIi4uL2RvbWFpbiI6NTg0fV0sNjM2OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29s b3IiKSxpPXQoIi4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiKSxhPXQoIi4uLy4uL2xp YiIpLG89dCgiLi4vc3VicGxvdF9kZWZhdWx0cyIpLHM9dCgiLi4vY2FydGVzaWFuL3RpY2tf bGFiZWxfZGVmYXVsdHMiKSxsPXQoIi4uL2NhcnRlc2lhbi9wcmVmaXhfc3VmZml4X2RlZmF1 bHRzIiksYz10KCIuLi9jYXJ0ZXNpYW4vdGlja19tYXJrX2RlZmF1bHRzIiksdT10KCIuLi9j YXJ0ZXNpYW4vdGlja192YWx1ZV9kZWZhdWx0cyIpLGY9dCgiLi4vY2FydGVzaWFuL2xpbmVf Z3JpZF9kZWZhdWx0cyIpLGg9dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpLHA9WyJhYXhpcyIs ImJheGlzIiwiY2F4aXMiXTtmdW5jdGlvbiBkKHQsZSxyLGEpe3ZhciBvLHMsbCxjPXIoImJn Y29sb3IiKSx1PXIoInN1bSIpO2EuYmdDb2xvcj1uLmNvbWJpbmUoYyxhLnBhcGVyX2JnY29s b3IpO2Zvcih2YXIgZj0wO2Y8cC5sZW5ndGg7ZisrKXM9dFtvPXBbZl1dfHx7fSwobD1pLm5l d0NvbnRhaW5lcihlLG8pKS5fbmFtZT1vLG0ocyxsLGEsZSk7dmFyIGg9ZS5hYXhpcyxkPWUu YmF4aXMsZz1lLmNheGlzO2gubWluK2QubWluK2cubWluPj11JiYoaC5taW49MCxkLm1pbj0w LGcubWluPTAsdC5hYXhpcyYmZGVsZXRlIHQuYWF4aXMubWluLHQuYmF4aXMmJmRlbGV0ZSB0 LmJheGlzLm1pbix0LmNheGlzJiZkZWxldGUgdC5jYXhpcy5taW4pfWZ1bmN0aW9uIG0odCxl LHIsbil7dmFyIGk9aFtlLl9uYW1lXTtmdW5jdGlvbiBvKHIsbil7cmV0dXJuIGEuY29lcmNl KHQsZSxpLHIsbil9bygidWlyZXZpc2lvbiIsbi51aXJldmlzaW9uKSxlLnR5cGU9ImxpbmVh ciI7dmFyIHA9bygiY29sb3IiKSxkPXAhPT1pLmNvbG9yLmRmbHQ/cDpyLmZvbnQuY29sb3Is bT1lLl9uYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpLGc9IkNvbXBvbmVudCAiK20sdj1v KCJ0aXRsZS50ZXh0IixnKTtlLl9ob3ZlcnRpdGxlPXY9PT1nP3Y6bSxhLmNvZXJjZUZvbnQo bywidGl0bGUuZm9udCIse2ZhbWlseTpyLmZvbnQuZmFtaWx5LHNpemU6YS5iaWdGb250KHIu Zm9udC5zaXplKSxjb2xvcjpkfSksbygibWluIiksdSh0LGUsbywibGluZWFyIiksbCh0LGUs bywibGluZWFyIikscyh0LGUsbywibGluZWFyIiksYyh0LGUsbyx7b3V0ZXJUaWNrczohMH0p LG8oInNob3d0aWNrbGFiZWxzIikmJihhLmNvZXJjZUZvbnQobywidGlja2ZvbnQiLHtmYW1p bHk6ci5mb250LmZhbWlseSxzaXplOnIuZm9udC5zaXplLGNvbG9yOmR9KSxvKCJ0aWNrYW5n bGUiKSxvKCJ0aWNrZm9ybWF0IikpLGYodCxlLG8se2RmbHRDb2xvcjpwLGJnQ29sb3I6ci5i Z0NvbG9yLGJsZW5kOjYwLHNob3dMaW5lOiEwLHNob3dHcmlkOiEwLG5vWmVyb0xpbmU6ITAs YXR0cmlidXRlczppfSksbygiaG92ZXJmb3JtYXQiKSxvKCJsYXllciIpfWUuZXhwb3J0cz1m dW5jdGlvbih0LGUscil7byh0LGUscix7dHlwZToidGVybmFyeSIsYXR0cmlidXRlczpoLGhh bmRsZURlZmF1bHRzOmQsZm9udDplLmZvbnQscGFwZXJfYmdjb2xvcjplLnBhcGVyX2JnY29s b3J9KX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6MzY2LCIuLi8uLi9saWIiOjUwMywi Li4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NTQzLCIuLi9jYXJ0ZXNpYW4vbGluZV9n cmlkX2RlZmF1bHRzIjo1NzEsIi4uL2NhcnRlc2lhbi9wcmVmaXhfc3VmZml4X2RlZmF1bHRz Ijo1NzMsIi4uL2NhcnRlc2lhbi90aWNrX2xhYmVsX2RlZmF1bHRzIjo1NzgsIi4uL2NhcnRl c2lhbi90aWNrX21hcmtfZGVmYXVsdHMiOjU3OSwiLi4vY2FydGVzaWFuL3RpY2tfdmFsdWVf ZGVmYXVsdHMiOjU4MCwiLi4vc3VicGxvdF9kZWZhdWx0cyI6NjMyLCIuL2xheW91dF9hdHRy aWJ1dGVzIjo2MzV9XSw2Mzc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiQHBsb3RseS9kMyIpLGk9dCgidGlueWNvbG9yMiIpLGE9dCgiLi4vLi4vcmVnaXN0cnki KSxvPXQoIi4uLy4uL2xpYiIpLHM9by5zdHJUcmFuc2xhdGUsbD1vLl8sYz10KCIuLi8uLi9j b21wb25lbnRzL2NvbG9yIiksdT10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxmPXQo Ii4uL2NhcnRlc2lhbi9zZXRfY29udmVydCIpLGg9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4 dGVuZEZsYXQscD10KCIuLi9wbG90cyIpLGQ9dCgiLi4vY2FydGVzaWFuL2F4ZXMiKSxtPXQo Ii4uLy4uL2NvbXBvbmVudHMvZHJhZ2VsZW1lbnQiKSxnPXQoIi4uLy4uL2NvbXBvbmVudHMv ZngiKSx2PXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhZ2VsZW1lbnQvaGVscGVycyIpLHk9di5m cmVlTW9kZSx4PXYucmVjdE1vZGUsYj10KCIuLi8uLi9jb21wb25lbnRzL3RpdGxlcyIpLF89 dCgiLi4vY2FydGVzaWFuL3NlbGVjdCIpLnByZXBTZWxlY3Qsdz10KCIuLi9jYXJ0ZXNpYW4v c2VsZWN0Iikuc2VsZWN0T25DbGljayxUPXQoIi4uL2NhcnRlc2lhbi9zZWxlY3QiKS5jbGVh clNlbGVjdCxrPXQoIi4uL2NhcnRlc2lhbi9zZWxlY3QiKS5jbGVhclNlbGVjdGlvbnNDYWNo ZSxBPXQoIi4uL2NhcnRlc2lhbi9jb25zdGFudHMiKTtmdW5jdGlvbiBNKHQsZSl7dGhpcy5p ZD10LmlkLHRoaXMuZ3JhcGhEaXY9dC5ncmFwaERpdix0aGlzLmluaXQoZSksdGhpcy5tYWtl RnJhbWV3b3JrKGUpLHRoaXMuYVRpY2tMYXlvdXQ9bnVsbCx0aGlzLmJUaWNrTGF5b3V0PW51 bGwsdGhpcy5jVGlja0xheW91dD1udWxsfWUuZXhwb3J0cz1NO3ZhciBTPU0ucHJvdG90eXBl O1MuaW5pdD1mdW5jdGlvbih0KXt0aGlzLmNvbnRhaW5lcj10Ll90ZXJuYXJ5bGF5ZXIsdGhp cy5kZWZzPXQuX2RlZnMsdGhpcy5sYXlvdXRJZD10Ll91aWQsdGhpcy50cmFjZUhhc2g9e30s dGhpcy5sYXllcnM9e319LFMucGxvdD1mdW5jdGlvbih0LGUpe3ZhciByPWVbdGhpcy5pZF0s bj1lLl9zaXplO3RoaXMuX2hhc0NsaXBPbkF4aXNGYWxzZT0hMTtmb3IodmFyIGk9MDtpPHQu bGVuZ3RoO2krKyl7aWYoITE9PT10W2ldWzBdLnRyYWNlLmNsaXBvbmF4aXMpe3RoaXMuX2hh c0NsaXBPbkF4aXNGYWxzZT0hMDticmVha319dGhpcy51cGRhdGVMYXllcnMociksdGhpcy5h ZGp1c3RMYXlvdXQocixuKSxwLmdlbmVyYWxVcGRhdGVQZXJUcmFjZU1vZHVsZSh0aGlzLmdy YXBoRGl2LHRoaXMsdCxyKSx0aGlzLmxheWVycy5wbG90Ymcuc2VsZWN0KCJwYXRoIikuY2Fs bChjLmZpbGwsci5iZ2NvbG9yKX0sUy5tYWtlRnJhbWV3b3JrPWZ1bmN0aW9uKHQpe3ZhciBl PXRoaXMuZ3JhcGhEaXYscj10W3RoaXMuaWRdLG49dGhpcy5jbGlwSWQ9ImNsaXAiK3RoaXMu bGF5b3V0SWQrdGhpcy5pZCxpPXRoaXMuY2xpcElkUmVsYXRpdmU9ImNsaXAtcmVsYXRpdmUi K3RoaXMubGF5b3V0SWQrdGhpcy5pZDt0aGlzLmNsaXBEZWY9by5lbnN1cmVTaW5nbGVCeUlk KHQuX2NsaXBzLCJjbGlwUGF0aCIsbiwoZnVuY3Rpb24odCl7dC5hcHBlbmQoInBhdGgiKS5h dHRyKCJkIiwiTTAsMFoiKX0pKSx0aGlzLmNsaXBEZWZSZWxhdGl2ZT1vLmVuc3VyZVNpbmds ZUJ5SWQodC5fY2xpcHMsImNsaXBQYXRoIixpLChmdW5jdGlvbih0KXt0LmFwcGVuZCgicGF0 aCIpLmF0dHIoImQiLCJNMCwwWiIpfSkpLHRoaXMucGxvdENvbnRhaW5lcj1vLmVuc3VyZVNp bmdsZSh0aGlzLmNvbnRhaW5lciwiZyIsdGhpcy5pZCksdGhpcy51cGRhdGVMYXllcnMociks dS5zZXRDbGlwVXJsKHRoaXMubGF5ZXJzLmJhY2twbG90LG4sZSksdS5zZXRDbGlwVXJsKHRo aXMubGF5ZXJzLmdyaWRzLG4sZSl9LFMudXBkYXRlTGF5ZXJzPWZ1bmN0aW9uKHQpe3ZhciBl PXRoaXMubGF5ZXJzLHI9WyJkcmFnbGF5ZXIiLCJwbG90YmciLCJiYWNrcGxvdCIsImdyaWRz Il07ImJlbG93IHRyYWNlcyI9PT10LmFheGlzLmxheWVyJiZyLnB1c2goImFheGlzIiwiYWxp bmUiKSwiYmVsb3cgdHJhY2VzIj09PXQuYmF4aXMubGF5ZXImJnIucHVzaCgiYmF4aXMiLCJi bGluZSIpLCJiZWxvdyB0cmFjZXMiPT09dC5jYXhpcy5sYXllciYmci5wdXNoKCJjYXhpcyIs ImNsaW5lIiksci5wdXNoKCJmcm9udHBsb3QiKSwiYWJvdmUgdHJhY2VzIj09PXQuYWF4aXMu bGF5ZXImJnIucHVzaCgiYWF4aXMiLCJhbGluZSIpLCJhYm92ZSB0cmFjZXMiPT09dC5iYXhp cy5sYXllciYmci5wdXNoKCJiYXhpcyIsImJsaW5lIiksImFib3ZlIHRyYWNlcyI9PT10LmNh eGlzLmxheWVyJiZyLnB1c2goImNheGlzIiwiY2xpbmUiKTt2YXIgaT10aGlzLnBsb3RDb250 YWluZXIuc2VsZWN0QWxsKCJnLnRvcGxldmVsIikuZGF0YShyLFN0cmluZyksYT1bImFncmlk IiwiYmdyaWQiLCJjZ3JpZCJdO2kuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIs KGZ1bmN0aW9uKHQpe3JldHVybiJ0b3BsZXZlbCAiK3R9KSkuZWFjaCgoZnVuY3Rpb24odCl7 dmFyIHI9bi5zZWxlY3QodGhpcyk7ZVt0XT1yLCJmcm9udHBsb3QiPT09dD9yLmFwcGVuZCgi ZyIpLmNsYXNzZWQoInNjYXR0ZXJsYXllciIsITApOiJiYWNrcGxvdCI9PT10P3IuYXBwZW5k KCJnIikuY2xhc3NlZCgibWFwbGF5ZXIiLCEwKToicGxvdGJnIj09PXQ/ci5hcHBlbmQoInBh dGgiKS5hdHRyKCJkIiwiTTAsMFoiKToiYWxpbmUiPT09dHx8ImJsaW5lIj09PXR8fCJjbGlu ZSI9PT10P3IuYXBwZW5kKCJwYXRoIik6ImdyaWRzIj09PXQmJmEuZm9yRWFjaCgoZnVuY3Rp b24odCl7ZVt0XT1yLmFwcGVuZCgiZyIpLmNsYXNzZWQoImdyaWQgIit0LCEwKX0pKX0pKSxp Lm9yZGVyKCl9O3ZhciBFPU1hdGguc3FydCg0LzMpO1MuYWRqdXN0TGF5b3V0PWZ1bmN0aW9u KHQsZSl7dmFyIHIsbixpLGEsbyxsLHA9dGhpcyxkPXQuZG9tYWluLG09KGQueFswXStkLnhb MV0pLzIsZz0oZC55WzBdK2QueVsxXSkvMix2PWQueFsxXS1kLnhbMF0seT1kLnlbMV0tZC55 WzBdLHg9diplLncsYj15KmUuaCxfPXQuc3VtLHc9dC5hYXhpcy5taW4sVD10LmJheGlzLm1p bixrPXQuY2F4aXMubWluO3g+RSpiP2k9KGE9YikqRTphPShpPXgpL0Usbz12KmkveCxsPXkq YS9iLHI9ZS5sK2UudyptLWkvMixuPWUudCtlLmgqKDEtZyktYS8yLHAueDA9cixwLnkwPW4s cC53PWkscC5oPWEscC5zdW09XyxwLnhheGlzPXt0eXBlOiJsaW5lYXIiLHJhbmdlOlt3KzIq ay1fLF8tdy0yKlRdLGRvbWFpbjpbbS1vLzIsbStvLzJdLF9pZDoieCJ9LGYocC54YXhpcyxw LmdyYXBoRGl2Ll9mdWxsTGF5b3V0KSxwLnhheGlzLnNldFNjYWxlKCkscC54YXhpcy5pc1B0 V2l0aGluUmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIHQuYT49cC5hYXhpcy5yYW5nZVswXSYm dC5hPD1wLmFheGlzLnJhbmdlWzFdJiZ0LmI+PXAuYmF4aXMucmFuZ2VbMV0mJnQuYjw9cC5i YXhpcy5yYW5nZVswXSYmdC5jPj1wLmNheGlzLnJhbmdlWzFdJiZ0LmM8PXAuY2F4aXMucmFu Z2VbMF19LHAueWF4aXM9e3R5cGU6ImxpbmVhciIscmFuZ2U6W3csXy1ULWtdLGRvbWFpbjpb Zy1sLzIsZytsLzJdLF9pZDoieSJ9LGYocC55YXhpcyxwLmdyYXBoRGl2Ll9mdWxsTGF5b3V0 KSxwLnlheGlzLnNldFNjYWxlKCkscC55YXhpcy5pc1B0V2l0aGluUmFuZ2U9ZnVuY3Rpb24o KXtyZXR1cm4hMH07dmFyIEE9cC55YXhpcy5kb21haW5bMF0sTT1wLmFheGlzPWgoe30sdC5h YXhpcyx7cmFuZ2U6W3csXy1ULWtdLHNpZGU6ImxlZnQiLHRpY2thbmdsZTooK3QuYWF4aXMu dGlja2FuZ2xlfHwwKS0zMCxkb21haW46W0EsQStsKkVdLGFuY2hvcjoiZnJlZSIscG9zaXRp b246MCxfaWQ6InkiLF9sZW5ndGg6aX0pO2YoTSxwLmdyYXBoRGl2Ll9mdWxsTGF5b3V0KSxN LnNldFNjYWxlKCk7dmFyIFM9cC5iYXhpcz1oKHt9LHQuYmF4aXMse3JhbmdlOltfLXctayxU XSxzaWRlOiJib3R0b20iLGRvbWFpbjpwLnhheGlzLmRvbWFpbixhbmNob3I6ImZyZWUiLHBv c2l0aW9uOjAsX2lkOiJ4IixfbGVuZ3RoOml9KTtmKFMscC5ncmFwaERpdi5fZnVsbExheW91 dCksUy5zZXRTY2FsZSgpO3ZhciBMPXAuY2F4aXM9aCh7fSx0LmNheGlzLHtyYW5nZTpbXy13 LVQsa10sc2lkZToicmlnaHQiLHRpY2thbmdsZTooK3QuY2F4aXMudGlja2FuZ2xlfHwwKSsz MCxkb21haW46W0EsQStsKkVdLGFuY2hvcjoiZnJlZSIscG9zaXRpb246MCxfaWQ6InkiLF9s ZW5ndGg6aX0pO2YoTCxwLmdyYXBoRGl2Ll9mdWxsTGF5b3V0KSxMLnNldFNjYWxlKCk7dmFy IEM9Ik0iK3IrIiwiKyhuK2EpKyJoIitpKyJsLSIraS8yKyIsLSIrYSsiWiI7cC5jbGlwRGVm LnNlbGVjdCgicGF0aCIpLmF0dHIoImQiLEMpLHAubGF5ZXJzLnBsb3RiZy5zZWxlY3QoInBh dGgiKS5hdHRyKCJkIixDKTt2YXIgUD0iTTAsIithKyJoIitpKyJsLSIraS8yKyIsLSIrYSsi WiI7cC5jbGlwRGVmUmVsYXRpdmUuc2VsZWN0KCJwYXRoIikuYXR0cigiZCIsUCk7dmFyIEk9 cyhyLG4pO3AucGxvdENvbnRhaW5lci5zZWxlY3RBbGwoIi5zY2F0dGVybGF5ZXIsLm1hcGxh eWVyIikuYXR0cigidHJhbnNmb3JtIixJKSxwLmNsaXBEZWZSZWxhdGl2ZS5zZWxlY3QoInBh dGgiKS5hdHRyKCJ0cmFuc2Zvcm0iLG51bGwpO3ZhciBPPXMoci1TLl9vZmZzZXQsbithKTtw LmxheWVycy5iYXhpcy5hdHRyKCJ0cmFuc2Zvcm0iLE8pLHAubGF5ZXJzLmJncmlkLmF0dHIo InRyYW5zZm9ybSIsTyk7dmFyIHo9cyhyK2kvMixuKSsicm90YXRlKDMwKSIrcygwLC1NLl9v ZmZzZXQpO3AubGF5ZXJzLmFheGlzLmF0dHIoInRyYW5zZm9ybSIseikscC5sYXllcnMuYWdy aWQuYXR0cigidHJhbnNmb3JtIix6KTt2YXIgRD1zKHIraS8yLG4pKyJyb3RhdGUoLTMwKSIr cygwLC1MLl9vZmZzZXQpO3AubGF5ZXJzLmNheGlzLmF0dHIoInRyYW5zZm9ybSIsRCkscC5s YXllcnMuY2dyaWQuYXR0cigidHJhbnNmb3JtIixEKSxwLmRyYXdBeGVzKCEwKSxwLmxheWVy cy5hbGluZS5zZWxlY3QoInBhdGgiKS5hdHRyKCJkIixNLnNob3dsaW5lPyJNIityKyIsIiso bithKSsibCIraS8yKyIsLSIrYToiTTAsMCIpLmNhbGwoYy5zdHJva2UsTS5saW5lY29sb3J8 fCIjMDAwIikuc3R5bGUoInN0cm9rZS13aWR0aCIsKE0ubGluZXdpZHRofHwwKSsicHgiKSxw LmxheWVycy5ibGluZS5zZWxlY3QoInBhdGgiKS5hdHRyKCJkIixTLnNob3dsaW5lPyJNIity KyIsIisobithKSsiaCIraToiTTAsMCIpLmNhbGwoYy5zdHJva2UsUy5saW5lY29sb3J8fCIj MDAwIikuc3R5bGUoInN0cm9rZS13aWR0aCIsKFMubGluZXdpZHRofHwwKSsicHgiKSxwLmxh eWVycy5jbGluZS5zZWxlY3QoInBhdGgiKS5hdHRyKCJkIixMLnNob3dsaW5lPyJNIisocitp LzIpKyIsIituKyJsIitpLzIrIiwiK2E6Ik0wLDAiKS5jYWxsKGMuc3Ryb2tlLEwubGluZWNv bG9yfHwiIzAwMCIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLChMLmxpbmV3aWR0aHx8MCkrInB4 IikscC5ncmFwaERpdi5fY29udGV4dC5zdGF0aWNQbG90fHxwLmluaXRJbnRlcmFjdGlvbnMo KSx1LnNldENsaXBVcmwocC5sYXllcnMuZnJvbnRwbG90LHAuX2hhc0NsaXBPbkF4aXNGYWxz ZT9udWxsOnAuY2xpcElkLHAuZ3JhcGhEaXYpfSxTLmRyYXdBeGVzPWZ1bmN0aW9uKHQpe3Zh ciBlPXRoaXMuZ3JhcGhEaXYscj10aGlzLmlkLnN1YnN0cig3KSsidGl0bGUiLG49dGhpcy5s YXllcnMsaT10aGlzLmFheGlzLGE9dGhpcy5iYXhpcyxvPXRoaXMuY2F4aXM7aWYodGhpcy5k cmF3QXgoaSksdGhpcy5kcmF3QXgoYSksdGhpcy5kcmF3QXgobyksdCl7dmFyIHM9TWF0aC5t YXgoaS5zaG93dGlja2xhYmVscz9pLnRpY2tmb250LnNpemUvMjowLChvLnNob3d0aWNrbGFi ZWxzPy43NSpvLnRpY2tmb250LnNpemU6MCkrKCJvdXRzaWRlIj09PW8udGlja3M/Ljg3Km8u dGlja2xlbjowKSksYz0oYS5zaG93dGlja2xhYmVscz9hLnRpY2tmb250LnNpemU6MCkrKCJv dXRzaWRlIj09PWEudGlja3M/YS50aWNrbGVuOjApKzM7blsiYS10aXRsZSJdPWIuZHJhdyhl LCJhIityLHtwcm9wQ29udGFpbmVyOmkscHJvcE5hbWU6dGhpcy5pZCsiLmFheGlzLnRpdGxl IixwbGFjZWhvbGRlcjpsKGUsIkNsaWNrIHRvIGVudGVyIENvbXBvbmVudCBBIHRpdGxlIiks YXR0cmlidXRlczp7eDp0aGlzLngwK3RoaXMudy8yLHk6dGhpcy55MC1pLnRpdGxlLmZvbnQu c2l6ZS8zLXMsInRleHQtYW5jaG9yIjoibWlkZGxlIn19KSxuWyJiLXRpdGxlIl09Yi5kcmF3 KGUsImIiK3Ise3Byb3BDb250YWluZXI6YSxwcm9wTmFtZTp0aGlzLmlkKyIuYmF4aXMudGl0 bGUiLHBsYWNlaG9sZGVyOmwoZSwiQ2xpY2sgdG8gZW50ZXIgQ29tcG9uZW50IEIgdGl0bGUi KSxhdHRyaWJ1dGVzOnt4OnRoaXMueDAtYyx5OnRoaXMueTArdGhpcy5oKy44MyphLnRpdGxl LmZvbnQuc2l6ZStjLCJ0ZXh0LWFuY2hvciI6Im1pZGRsZSJ9fSksblsiYy10aXRsZSJdPWIu ZHJhdyhlLCJjIityLHtwcm9wQ29udGFpbmVyOm8scHJvcE5hbWU6dGhpcy5pZCsiLmNheGlz LnRpdGxlIixwbGFjZWhvbGRlcjpsKGUsIkNsaWNrIHRvIGVudGVyIENvbXBvbmVudCBDIHRp dGxlIiksYXR0cmlidXRlczp7eDp0aGlzLngwK3RoaXMudytjLHk6dGhpcy55MCt0aGlzLmgr LjgzKm8udGl0bGUuZm9udC5zaXplK2MsInRleHQtYW5jaG9yIjoibWlkZGxlIn19KX19LFMu ZHJhd0F4PWZ1bmN0aW9uKHQpe3ZhciBlLHI9dGhpcy5ncmFwaERpdixuPXQuX25hbWUsaT1u LmNoYXJBdCgwKSxhPXQuX2lkLHM9dGhpcy5sYXllcnNbbl0sbD1pKyJ0aWNrTGF5b3V0Iixj PShlPXQpLnRpY2tzK1N0cmluZyhlLnRpY2tsZW4pK1N0cmluZyhlLnNob3d0aWNrbGFiZWxz KTt0aGlzW2xdIT09YyYmKHMuc2VsZWN0QWxsKCIuIithKyJ0aWNrIikucmVtb3ZlKCksdGhp c1tsXT1jKSx0LnNldFNjYWxlKCk7dmFyIHU9ZC5jYWxjVGlja3ModCksZj1kLmNsaXBFbmRz KHQsdSksaD1kLm1ha2VUcmFuc1RpY2tGbih0KSxwPWQuZ2V0VGlja1NpZ25zKHQpWzJdLG09 by5kZWcycmFkKDMwKSxnPXAqKHQubGluZXdpZHRofHwxKS8yLHY9cCp0LnRpY2tsZW4seT10 aGlzLncseD10aGlzLmgsYj0iYiI9PT1pPyJNMCwiK2crImwiK01hdGguc2luKG0pKnYrIiwi K01hdGguY29zKG0pKnY6Ik0iK2crIiwwbCIrTWF0aC5jb3MobSkqdisiLCIrLU1hdGguc2lu KG0pKnYsXz17YToiTTAsMGwiK3grIiwtIit5LzIsYjoiTTAsMGwtIit5LzIrIiwtIit4LGM6 Ik0wLDBsLSIreCsiLCIreS8yfVtpXTtkLmRyYXdUaWNrcyhyLHQse3ZhbHM6Imluc2lkZSI9 PT10LnRpY2tzP2Y6dSxsYXllcjpzLHBhdGg6Yix0cmFuc0ZuOmgsY3Jpc3A6ITF9KSxkLmRy YXdHcmlkKHIsdCx7dmFsczpmLGxheWVyOnRoaXMubGF5ZXJzW2krImdyaWQiXSxwYXRoOl8s dHJhbnNGbjpoLGNyaXNwOiExfSksZC5kcmF3TGFiZWxzKHIsdCx7dmFsczp1LGxheWVyOnMs dHJhbnNGbjpoLGxhYmVsRm5zOmQubWFrZUxhYmVsRm5zKHQsMCwzMCl9KX07dmFyIEw9QS5N SU5aT09NLzIrLjg3LEM9Im0tMC44NywuNWgiK0wrInYzaC0iKyhMKzUuMikrImwiKyhMLzIr Mi42KSsiLC0iKyguODcqTCs0LjUpKyJsMi42LDEuNWwtIitMLzIrIiwiKy44NypMKyJaIixQ PSJtMC44NywuNWgtIitMKyJ2M2giKyhMKzUuMikrImwtIisoTC8yKzIuNikrIiwtIisoLjg3 KkwrNC41KSsibC0yLjYsMS41bCIrTC8yKyIsIisuODcqTCsiWiIsST0ibTAsMWwiK0wvMisi LCIrLjg3KkwrImwyLjYsLTEuNWwtIisoTC8yKzIuNikrIiwtIisoLjg3KkwrNC41KSsibC0i KyhMLzIrMi42KSsiLCIrKC44NypMKzQuNSkrImwyLjYsMS41bCIrTC8yKyIsLSIrLjg3Kkwr IloiLE89ITA7ZnVuY3Rpb24geih0KXtuLnNlbGVjdCh0KS5zZWxlY3RBbGwoIi56b29tYm94 LC5qcy16b29tYm94LWJhY2tkcm9wLC5qcy16b29tYm94LW1lbnUsLnpvb21ib3gtY29ybmVy cyIpLnJlbW92ZSgpfVMuY2xlYXJTZWxlY3Q9ZnVuY3Rpb24oKXtrKHRoaXMuZHJhZ09wdGlv bnMpLFQodGhpcy5kcmFnT3B0aW9ucy5nZCl9LFMuaW5pdEludGVyYWN0aW9ucz1mdW5jdGlv bigpe3ZhciB0LGUscixuLGYsaCxwLGQsdixiLFQsayxNPXRoaXMsUz1NLmxheWVycy5wbG90 Ymcuc2VsZWN0KCJwYXRoIikubm9kZSgpLEw9TS5ncmFwaERpdixEPUwuX2Z1bGxMYXlvdXQu X3pvb21sYXllcjtmdW5jdGlvbiBSKHQpe3ZhciBlPXt9O3JldHVybiBlW00uaWQrIi5hYXhp cy5taW4iXT10LmEsZVtNLmlkKyIuYmF4aXMubWluIl09dC5iLGVbTS5pZCsiLmNheGlzLm1p biJdPXQuYyxlfWZ1bmN0aW9uIEYodCxlKXt2YXIgcj1MLl9mdWxsTGF5b3V0LmNsaWNrbW9k ZTt6KEwpLDI9PT10JiYoTC5lbWl0KCJwbG90bHlfZG91YmxlY2xpY2siLG51bGwpLGEuY2Fs bCgiX2d1aVJlbGF5b3V0IixMLFIoe2E6MCxiOjAsYzowfSkpKSxyLmluZGV4T2YoInNlbGVj dCIpPi0xJiYxPT09dCYmdyhlLEwsW00ueGF4aXNdLFtNLnlheGlzXSxNLmlkLE0uZHJhZ09w dGlvbnMpLHIuaW5kZXhPZigiZXZlbnQiKT4tMSYmZy5jbGljayhMLGUsTS5pZCl9ZnVuY3Rp b24gQih0LGUpe3JldHVybiAxLWUvTS5ofWZ1bmN0aW9uIE4odCxlKXtyZXR1cm4gMS0odCso TS5oLWUpL01hdGguc3FydCgzKSkvTS53fWZ1bmN0aW9uIGoodCxlKXtyZXR1cm4odC0oTS5o LWUpL01hdGguc3FydCgzKSkvTS53fWZ1bmN0aW9uIFUoaSxhKXt2YXIgbz1yK2kqdCxzPW4r YSplLGw9TWF0aC5tYXgoMCxNYXRoLm1pbigxLEIoMCxuKSxCKDAscykpKSxjPU1hdGgubWF4 KDAsTWF0aC5taW4oMSxOKHIsbiksTihvLHMpKSksdT1NYXRoLm1heCgwLE1hdGgubWluKDEs aihyLG4pLGoobyxzKSkpLG09KGwvMit1KSpNLncsZz0oMS1sLzItYykqTS53LHk9KG0rZykv Mix4PWctbSxfPSgxLWwpKk0uaCx3PV8teC9FO3g8QS5NSU5aT09NPyhwPWYsVC5hdHRyKCJk Iix2KSxrLmF0dHIoImQiLCJNMCwwWiIpKToocD17YTpmLmErbCpoLGI6Zi5iK2MqaCxjOmYu Yyt1Kmh9LFQuYXR0cigiZCIsdisiTSIrbSsiLCIrXysiSCIrZysiTCIreSsiLCIrdysiTCIr bSsiLCIrXysiWiIpLGsuYXR0cigiZCIsIk0iK3IrIiwiK24rIm0wLjUsMC41aDV2LTJoLTV2 LTVoLTJ2NWgtNXYyaDV2NWgyWk0iK20rIiwiK18rQysiTSIrZysiLCIrXytQKyJNIit5KyIs Iit3K0kpKSxifHwoVC50cmFuc2l0aW9uKCkuc3R5bGUoImZpbGwiLGQ+LjI/InJnYmEoMCww LDAsMC40KSI6InJnYmEoMjU1LDI1NSwyNTUsMC4zKSIpLmR1cmF0aW9uKDIwMCksay50cmFu c2l0aW9uKCkuc3R5bGUoIm9wYWNpdHkiLDEpLmR1cmF0aW9uKDIwMCksYj0hMCksTC5lbWl0 KCJwbG90bHlfcmVsYXlvdXRpbmciLFIocCkpfWZ1bmN0aW9uIFYoKXt6KEwpLHAhPT1mJiYo YS5jYWxsKCJfZ3VpUmVsYXlvdXQiLEwsUihwKSksTyYmTC5kYXRhJiZMLl9jb250ZXh0LnNo b3dUaXBzJiYoby5ub3RpZmllcihsKEwsIkRvdWJsZS1jbGljayB0byB6b29tIGJhY2sgb3V0 IiksImxvbmciKSxPPSExKSl9ZnVuY3Rpb24gSCh0LGUpe3ZhciByPXQvTS54YXhpcy5fbSxu PWUvTS55YXhpcy5fbSxpPVsocD17YTpmLmEtbixiOmYuYisocituKS8yLGM6Zi5jLShyLW4p LzJ9KS5hLHAuYixwLmNdLnNvcnQoby5zb3J0ZXJBc2MpLGE9aS5pbmRleE9mKHAuYSksbD1p LmluZGV4T2YocC5iKSxjPWkuaW5kZXhPZihwLmMpO2lbMF08MCYmKGlbMV0raVswXS8yPDA/ KGlbMl0rPWlbMF0raVsxXSxpWzBdPWlbMV09MCk6KGlbMl0rPWlbMF0vMixpWzFdKz1pWzBd LzIsaVswXT0wKSxwPXthOmlbYV0sYjppW2xdLGM6aVtjXX0sZT0oZi5hLXAuYSkqTS55YXhp cy5fbSx0PShmLmMtcC5jLWYuYitwLmIpKk0ueGF4aXMuX20pO3ZhciBoPXMoTS54MCt0LE0u eTArZSk7TS5wbG90Q29udGFpbmVyLnNlbGVjdEFsbCgiLnNjYXR0ZXJsYXllciwubWFwbGF5 ZXIiKS5hdHRyKCJ0cmFuc2Zvcm0iLGgpO3ZhciBkPXMoLXQsLWUpO00uY2xpcERlZlJlbGF0 aXZlLnNlbGVjdCgicGF0aCIpLmF0dHIoInRyYW5zZm9ybSIsZCksTS5hYXhpcy5yYW5nZT1b cC5hLE0uc3VtLXAuYi1wLmNdLE0uYmF4aXMucmFuZ2U9W00uc3VtLXAuYS1wLmMscC5iXSxN LmNheGlzLnJhbmdlPVtNLnN1bS1wLmEtcC5iLHAuY10sTS5kcmF3QXhlcyghMSksTS5faGFz Q2xpcE9uQXhpc0ZhbHNlJiZNLnBsb3RDb250YWluZXIuc2VsZWN0KCIuc2NhdHRlcmxheWVy Iikuc2VsZWN0QWxsKCIudHJhY2UiKS5jYWxsKHUuaGlkZU91dHNpZGVSYW5nZVBvaW50cyxN KSxMLmVtaXQoInBsb3RseV9yZWxheW91dGluZyIsUihwKSl9ZnVuY3Rpb24gcSgpe2EuY2Fs bCgiX2d1aVJlbGF5b3V0IixMLFIocCkpfXRoaXMuZHJhZ09wdGlvbnM9e2VsZW1lbnQ6Uyxn ZDpMLHBsb3RpbmZvOntpZDpNLmlkLGRvbWFpbjpMLl9mdWxsTGF5b3V0W00uaWRdLmRvbWFp bix4YXhpczpNLnhheGlzLHlheGlzOk0ueWF4aXN9LHN1YnBsb3Q6TS5pZCxwcmVwRm46ZnVu Y3Rpb24oYSxsLHUpe00uZHJhZ09wdGlvbnMueGF4ZXM9W00ueGF4aXNdLE0uZHJhZ09wdGlv bnMueWF4ZXM9W00ueWF4aXNdLHQ9TC5fZnVsbExheW91dC5faW52U2NhbGVYLGU9TC5fZnVs bExheW91dC5faW52U2NhbGVZO3ZhciBtPU0uZHJhZ09wdGlvbnMuZHJhZ21vZGU9TC5fZnVs bExheW91dC5kcmFnbW9kZTt5KG0pP00uZHJhZ09wdGlvbnMubWluRHJhZz0xOk0uZHJhZ09w dGlvbnMubWluRHJhZz12b2lkIDAsInpvb20iPT09bT8oTS5kcmFnT3B0aW9ucy5tb3ZlRm49 VSxNLmRyYWdPcHRpb25zLmNsaWNrRm49RixNLmRyYWdPcHRpb25zLmRvbmVGbj1WLGZ1bmN0 aW9uKHQsZSxhKXt2YXIgbD1TLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3I9ZS1sLmxlZnQs bj1hLWwudG9wLEwuX2Z1bGxMYXlvdXQuX2NhbGNJbnZlcnNlVHJhbnNmb3JtKEwpO3ZhciB1 PUwuX2Z1bGxMYXlvdXQuX2ludlRyYW5zZm9ybSxtPW8uYXBwbHkzRFRyYW5zZm9ybSh1KShy LG4pO3I9bVswXSxuPW1bMV0sZj17YTpNLmFheGlzLnJhbmdlWzBdLGI6TS5iYXhpcy5yYW5n ZVsxXSxjOk0uY2F4aXMucmFuZ2VbMV19LHA9ZixoPU0uYWF4aXMucmFuZ2VbMV0tZi5hLGQ9 aShNLmdyYXBoRGl2Ll9mdWxsTGF5b3V0W00uaWRdLmJnY29sb3IpLmdldEx1bWluYW5jZSgp LHY9Ik0wLCIrTS5oKyJMIitNLncvMisiLCAwTCIrTS53KyIsIitNLmgrIloiLGI9ITEsVD1E LmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwiem9vbWJveCIpLmF0dHIoInRyYW5zZm9y bSIscyhNLngwLE0ueTApKS5zdHlsZSh7ZmlsbDpkPi4yPyJyZ2JhKDAsMCwwLDApIjoicmdi YSgyNTUsMjU1LDI1NSwwKSIsInN0cm9rZS13aWR0aCI6MH0pLmF0dHIoImQiLHYpLGs9RC5h cHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsInpvb21ib3gtY29ybmVycyIpLmF0dHIoInRy YW5zZm9ybSIscyhNLngwLE0ueTApKS5zdHlsZSh7ZmlsbDpjLmJhY2tncm91bmQsc3Ryb2tl OmMuZGVmYXVsdExpbmUsInN0cm9rZS13aWR0aCI6MSxvcGFjaXR5OjB9KS5hdHRyKCJkIiwi TTAsMFoiKSxNLmNsZWFyU2VsZWN0KEwpfSgwLGwsdSkpOiJwYW4iPT09bT8oTS5kcmFnT3B0 aW9ucy5tb3ZlRm49SCxNLmRyYWdPcHRpb25zLmNsaWNrRm49RixNLmRyYWdPcHRpb25zLmRv bmVGbj1xLGY9e2E6TS5hYXhpcy5yYW5nZVswXSxiOk0uYmF4aXMucmFuZ2VbMV0sYzpNLmNh eGlzLnJhbmdlWzFdfSxwPWYsTS5jbGVhclNlbGVjdChMKSk6KHgobSl8fHkobSkpJiZfKGEs bCx1LE0uZHJhZ09wdGlvbnMsbSl9fSxTLm9ubW91c2Vtb3ZlPWZ1bmN0aW9uKHQpe2cuaG92 ZXIoTCx0LE0uaWQpLEwuX2Z1bGxMYXlvdXQuX2xhc3Rob3Zlcj1TLEwuX2Z1bGxMYXlvdXQu X2hvdmVyc3VicGxvdD1NLmlkfSxTLm9ubW91c2VvdXQ9ZnVuY3Rpb24odCl7TC5fZHJhZ2dp bmd8fG0udW5ob3ZlcihMLHQpfSxtLmluaXQodGhpcy5kcmFnT3B0aW9ucyl9fSx7Ii4uLy4u L2NvbXBvbmVudHMvY29sb3IiOjM2NiwiLi4vLi4vY29tcG9uZW50cy9kcmFnZWxlbWVudCI6 Mzg1LCIuLi8uLi9jb21wb25lbnRzL2RyYWdlbGVtZW50L2hlbHBlcnMiOjM4NCwiLi4vLi4v Y29tcG9uZW50cy9kcmF3aW5nIjozODgsIi4uLy4uL2NvbXBvbmVudHMvZngiOjQwNiwiLi4v Li4vY29tcG9uZW50cy90aXRsZXMiOjQ2NCwiLi4vLi4vbGliIjo1MDMsIi4uLy4uL2xpYi9l eHRlbmQiOjQ5MywiLi4vLi4vcmVnaXN0cnkiOjYzOCwiLi4vY2FydGVzaWFuL2F4ZXMiOjU1 NCwiLi4vY2FydGVzaWFuL2NvbnN0YW50cyI6NTYxLCIuLi9jYXJ0ZXNpYW4vc2VsZWN0Ijo1 NzUsIi4uL2NhcnRlc2lhbi9zZXRfY29udmVydCI6NTc2LCIuLi9wbG90cyI6NjE5LCJAcGxv dGx5L2QzIjo1OCx0aW55Y29sb3IyOjMxMn1dLDYzODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCIuL2xpYi9sb2dnZXJzIiksaT10KCIuL2xpYi9ub29wIiksYT10 KCIuL2xpYi9wdXNoX3VuaXF1ZSIpLG89dCgiLi9saWIvaXNfcGxhaW5fb2JqZWN0Iikscz10 KCIuL2xpYi9kb20iKS5hZGRTdHlsZVJ1bGUsbD10KCIuL2xpYi9leHRlbmQiKSxjPXQoIi4v cGxvdHMvYXR0cmlidXRlcyIpLHU9dCgiLi9wbG90cy9sYXlvdXRfYXR0cmlidXRlcyIpLGY9 bC5leHRlbmRGbGF0LGg9bC5leHRlbmREZWVwQWxsO2Z1bmN0aW9uIHAodCl7dmFyIGU9dC5u YW1lLGk9dC5jYXRlZ29yaWVzLGE9dC5tZXRhO2lmKHIubW9kdWxlc1tlXSluLmxvZygiVHlw ZSAiK2UrIiBhbHJlYWR5IHJlZ2lzdGVyZWQiKTtlbHNle3Iuc3VicGxvdHNSZWdpc3RyeVt0 LmJhc2VQbG90TW9kdWxlLm5hbWVdfHxmdW5jdGlvbih0KXt2YXIgZT10Lm5hbWU7aWYoci5z dWJwbG90c1JlZ2lzdHJ5W2VdKXJldHVybiB2b2lkIG4ubG9nKCJQbG90IHR5cGUgIitlKyIg YWxyZWFkeSByZWdpc3RlcmVkLiIpO2Zvcih2YXIgaSBpbiB2KHQpLHIuc3VicGxvdHNSZWdp c3RyeVtlXT10LHIuY29tcG9uZW50c1JlZ2lzdHJ5KWIoaSx0Lm5hbWUpfSh0LmJhc2VQbG90 TW9kdWxlKTtmb3IodmFyIG89e30sbD0wO2w8aS5sZW5ndGg7bCsrKW9baVtsXV09ITAsci5h bGxDYXRlZ29yaWVzW2lbbF1dPSEwO2Zvcih2YXIgYyBpbiByLm1vZHVsZXNbZV09e19tb2R1 bGU6dCxjYXRlZ29yaWVzOm99LGEmJk9iamVjdC5rZXlzKGEpLmxlbmd0aCYmKHIubW9kdWxl c1tlXS5tZXRhPWEpLHIuYWxsVHlwZXMucHVzaChlKSxyLmNvbXBvbmVudHNSZWdpc3RyeSl5 KGMsZSk7dC5sYXlvdXRBdHRyaWJ1dGVzJiZmKHIudHJhY2VMYXlvdXRBdHRyaWJ1dGVzLHQu bGF5b3V0QXR0cmlidXRlcyk7dmFyIHU9dC5iYXNlUGxvdE1vZHVsZSxoPXUubmFtZTtpZigi bWFwYm94Ij09PWgpe3ZhciBwPXUuY29uc3RhbnRzLnN0eWxlUnVsZXM7Zm9yKHZhciBkIGlu IHApcygiLmpzLXBsb3RseS1wbG90IC5wbG90bHkgLm1hcGJveGdsLSIrZCxwW2RdKX0iZ2Vv IiE9PWgmJiJtYXBib3giIT09aHx8dm9pZCAwIT09d2luZG93LlBsb3RseUdlb0Fzc2V0c3x8 KHdpbmRvdy5QbG90bHlHZW9Bc3NldHM9e3RvcG9qc29uOnt9fSl9fWZ1bmN0aW9uIGQodCl7 aWYoInN0cmluZyIhPXR5cGVvZiB0Lm5hbWUpdGhyb3cgbmV3IEVycm9yKCJDb21wb25lbnQg bW9kdWxlICpuYW1lKiBtdXN0IGJlIGEgc3RyaW5nLiIpO3ZhciBlPXQubmFtZTtmb3IodmFy IG4gaW4gci5jb21wb25lbnRzUmVnaXN0cnlbZV09dCx0LmxheW91dEF0dHJpYnV0ZXMmJih0 LmxheW91dEF0dHJpYnV0ZXMuX2lzTGlua2VkVG9BcnJheSYmYShyLmxheW91dEFycmF5Q29u dGFpbmVycyxlKSx2KHQpKSxyLm1vZHVsZXMpeShlLG4pO2Zvcih2YXIgaSBpbiByLnN1YnBs b3RzUmVnaXN0cnkpYihlLGkpO2Zvcih2YXIgbyBpbiByLnRyYW5zZm9ybXNSZWdpc3RyeSl4 KGUsbyk7dC5zY2hlbWEmJnQuc2NoZW1hLmxheW91dCYmaCh1LHQuc2NoZW1hLmxheW91dCl9 ZnVuY3Rpb24gbSh0KXtpZigic3RyaW5nIiE9dHlwZW9mIHQubmFtZSl0aHJvdyBuZXcgRXJy b3IoIlRyYW5zZm9ybSBtb2R1bGUgKm5hbWUqIG11c3QgYmUgYSBzdHJpbmcuIik7dmFyIGU9 IlRyYW5zZm9ybSBtb2R1bGUgIit0Lm5hbWUsaT0iZnVuY3Rpb24iPT10eXBlb2YgdC50cmFu c2Zvcm0sYT0iZnVuY3Rpb24iPT10eXBlb2YgdC5jYWxjVHJhbnNmb3JtO2lmKCFpJiYhYSl0 aHJvdyBuZXcgRXJyb3IoZSsiIGlzIG1pc3NpbmcgYSAqdHJhbnNmb3JtKiBvciAqY2FsY1Ry YW5zZm9ybSogbWV0aG9kLiIpO2Zvcih2YXIgcyBpbiBpJiZhJiZuLmxvZyhbZSsiIGhhcyBi b3RoIGEgKnRyYW5zZm9ybSogYW5kICpjYWxjVHJhbnNmb3JtKiBtZXRob2RzLiIsIlBsZWFz ZSBub3RlIHRoYXQgYWxsICp0cmFuc2Zvcm0qIG1ldGhvZHMgYXJlIGV4ZWN1dGVkIiwiYmVm b3JlIGFsbCAqY2FsY1RyYW5zZm9ybSogbWV0aG9kcy4iXS5qb2luKCIgIikpLG8odC5hdHRy aWJ1dGVzKXx8bi5sb2coZSsiIHJlZ2lzdGVyZWQgd2l0aG91dCBhbiAqYXR0cmlidXRlcyog b2JqZWN0LiIpLCJmdW5jdGlvbiIhPXR5cGVvZiB0LnN1cHBseURlZmF1bHRzJiZuLmxvZyhl KyIgcmVnaXN0ZXJlZCB3aXRob3V0IGEgKnN1cHBseURlZmF1bHRzKiBtZXRob2QuIiksci50 cmFuc2Zvcm1zUmVnaXN0cnlbdC5uYW1lXT10LHIuY29tcG9uZW50c1JlZ2lzdHJ5KXgocyx0 Lm5hbWUpfWZ1bmN0aW9uIGcodCl7dmFyIGU9dC5uYW1lLG49ZS5zcGxpdCgiLSIpWzBdLGk9 dC5kaWN0aW9uYXJ5LGE9dC5mb3JtYXQsbz1pJiZPYmplY3Qua2V5cyhpKS5sZW5ndGgscz1h JiZPYmplY3Qua2V5cyhhKS5sZW5ndGgsbD1yLmxvY2FsZVJlZ2lzdHJ5LGM9bFtlXTtpZihj fHwobFtlXT1jPXt9KSxuIT09ZSl7dmFyIHU9bFtuXTt1fHwobFtuXT11PXt9KSxvJiZ1LmRp Y3Rpb25hcnk9PT1jLmRpY3Rpb25hcnkmJih1LmRpY3Rpb25hcnk9aSkscyYmdS5mb3JtYXQ9 PT1jLmZvcm1hdCYmKHUuZm9ybWF0PWEpfW8mJihjLmRpY3Rpb25hcnk9aSkscyYmKGMuZm9y bWF0PWEpfWZ1bmN0aW9uIHYodCl7aWYodC5sYXlvdXRBdHRyaWJ1dGVzKXt2YXIgZT10Lmxh eW91dEF0dHJpYnV0ZXMuX2FycmF5QXR0clJlZ2V4cHM7aWYoZSlmb3IodmFyIG49MDtuPGUu bGVuZ3RoO24rKylhKHIubGF5b3V0QXJyYXlSZWdleGVzLGVbbl0pfX1mdW5jdGlvbiB5KHQs ZSl7dmFyIG49ci5jb21wb25lbnRzUmVnaXN0cnlbdF0uc2NoZW1hO2lmKG4mJm4udHJhY2Vz KXt2YXIgaT1uLnRyYWNlc1tlXTtpJiZoKHIubW9kdWxlc1tlXS5fbW9kdWxlLmF0dHJpYnV0 ZXMsaSl9fWZ1bmN0aW9uIHgodCxlKXt2YXIgbj1yLmNvbXBvbmVudHNSZWdpc3RyeVt0XS5z Y2hlbWE7aWYobiYmbi50cmFuc2Zvcm1zKXt2YXIgaT1uLnRyYW5zZm9ybXNbZV07aSYmaChy LnRyYW5zZm9ybXNSZWdpc3RyeVtlXS5hdHRyaWJ1dGVzLGkpfX1mdW5jdGlvbiBiKHQsZSl7 dmFyIG49ci5jb21wb25lbnRzUmVnaXN0cnlbdF0uc2NoZW1hO2lmKG4mJm4uc3VicGxvdHMp e3ZhciBpPXIuc3VicGxvdHNSZWdpc3RyeVtlXSxhPWkubGF5b3V0QXR0cmlidXRlcyxvPSJz dWJwbG90Ij09PWkuYXR0cj9pLm5hbWU6aS5hdHRyO0FycmF5LmlzQXJyYXkobykmJihvPW9b MF0pO3ZhciBzPW4uc3VicGxvdHNbb107YSYmcyYmaChhLHMpfX1mdW5jdGlvbiBfKHQpe3Jl dHVybiJvYmplY3QiPT10eXBlb2YgdCYmKHQ9dC50eXBlKSx0fXIubW9kdWxlcz17fSxyLmFs bENhdGVnb3JpZXM9e30sci5hbGxUeXBlcz1bXSxyLnN1YnBsb3RzUmVnaXN0cnk9e30sci50 cmFuc2Zvcm1zUmVnaXN0cnk9e30sci5jb21wb25lbnRzUmVnaXN0cnk9e30sci5sYXlvdXRB cnJheUNvbnRhaW5lcnM9W10sci5sYXlvdXRBcnJheVJlZ2V4ZXM9W10sci50cmFjZUxheW91 dEF0dHJpYnV0ZXM9e30sci5sb2NhbGVSZWdpc3RyeT17fSxyLmFwaU1ldGhvZFJlZ2lzdHJ5 PXt9LHIuY29sbGVjdGFibGVTdWJwbG90VHlwZXM9bnVsbCxyLnJlZ2lzdGVyPWZ1bmN0aW9u KHQpe2lmKHIuY29sbGVjdGFibGVTdWJwbG90VHlwZXM9bnVsbCwhdCl0aHJvdyBuZXcgRXJy b3IoIk5vIGFyZ3VtZW50IHBhc3NlZCB0byBQbG90bHkucmVnaXN0ZXIuIik7dCYmIUFycmF5 LmlzQXJyYXkodCkmJih0PVt0XSk7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBu PXRbZV07aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIG1vZHVsZSB3YXMgYXR0ZW1w dGVkIHRvIGJlIHJlZ2lzdGVyZWQhIik7c3dpdGNoKG4ubW9kdWxlVHlwZSl7Y2FzZSJ0cmFj ZSI6cChuKTticmVhaztjYXNlInRyYW5zZm9ybSI6bShuKTticmVhaztjYXNlImNvbXBvbmVu dCI6ZChuKTticmVhaztjYXNlImxvY2FsZSI6ZyhuKTticmVhaztjYXNlImFwaU1ldGhvZCI6 dmFyIGk9bi5uYW1lO3IuYXBpTWV0aG9kUmVnaXN0cnlbaV09bi5mbjticmVhaztkZWZhdWx0 OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCBtb2R1bGUgd2FzIGF0dGVtcHRlZCB0byBiZSBy ZWdpc3RlcmVkISIpfX19LHIuZ2V0TW9kdWxlPWZ1bmN0aW9uKHQpe3ZhciBlPXIubW9kdWxl c1tfKHQpXTtyZXR1cm4hIWUmJmUuX21vZHVsZX0sci50cmFjZUlzPWZ1bmN0aW9uKHQsZSl7 aWYoInZhcmlvdXMiPT09KHQ9Xyh0KSkpcmV0dXJuITE7dmFyIGk9ci5tb2R1bGVzW3RdO3Jl dHVybiBpfHwodCYmbi5sb2coIlVucmVjb2duaXplZCB0cmFjZSB0eXBlICIrdCsiLiIpLGk9 ci5tb2R1bGVzW2MudHlwZS5kZmx0XSksISFpLmNhdGVnb3JpZXNbZV19LHIuZ2V0VHJhbnNm b3JtSW5kaWNlcz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1bXSxuPXQudHJhbnNmb3Jtc3x8 W10saT0wO2k8bi5sZW5ndGg7aSsrKW5baV0udHlwZT09PWUmJnIucHVzaChpKTtyZXR1cm4g cn0sci5oYXNUcmFuc2Zvcm09ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC50cmFuc2Zvcm1z fHxbXSxuPTA7bjxyLmxlbmd0aDtuKyspaWYocltuXS50eXBlPT09ZSlyZXR1cm4hMDtyZXR1 cm4hMX0sci5nZXRDb21wb25lbnRNZXRob2Q9ZnVuY3Rpb24odCxlKXt2YXIgbj1yLmNvbXBv bmVudHNSZWdpc3RyeVt0XTtyZXR1cm4gbiYmbltlXXx8aX0sci5jYWxsPWZ1bmN0aW9uKCl7 dmFyIHQ9YXJndW1lbnRzWzBdLGU9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJu IHIuYXBpTWV0aG9kUmVnaXN0cnlbdF0uYXBwbHkobnVsbCxlKX19LHsiLi9saWIvZG9tIjo0 OTEsIi4vbGliL2V4dGVuZCI6NDkzLCIuL2xpYi9pc19wbGFpbl9vYmplY3QiOjUwNCwiLi9s aWIvbG9nZ2VycyI6NTA3LCIuL2xpYi9ub29wIjo1MTIsIi4vbGliL3B1c2hfdW5pcXVlIjo1 MTgsIi4vcGxvdHMvYXR0cmlidXRlcyI6NTUwLCIuL3Bsb3RzL2xheW91dF9hdHRyaWJ1dGVz Ijo2MTB9XSw2Mzk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4v cmVnaXN0cnkiKSxpPXQoIi4uL2xpYiIpLGE9aS5leHRlbmRGbGF0LG89aS5leHRlbmREZWVw O2Z1bmN0aW9uIHModCl7dmFyIGU7c3dpdGNoKHQpe2Nhc2UidGhlbWVzX190aHVtYiI6ZT17 YXV0b3NpemU6ITAsd2lkdGg6MTUwLGhlaWdodDoxNTAsdGl0bGU6e3RleHQ6IiJ9LHNob3ds ZWdlbmQ6ITEsbWFyZ2luOntsOjUscjo1LHQ6NSxiOjUscGFkOjB9LGFubm90YXRpb25zOltd fTticmVhaztjYXNlInRodW1ibmFpbCI6ZT17dGl0bGU6e3RleHQ6IiJ9LGhpZGVzb3VyY2Vz OiEwLHNob3dsZWdlbmQ6ITEsYm9yZGVyd2lkdGg6MCxib3JkZXJjb2xvcjoiIixtYXJnaW46 e2w6MSxyOjEsdDoxLGI6MSxwYWQ6MH0sYW5ub3RhdGlvbnM6W119O2JyZWFrO2RlZmF1bHQ6 ZT17fX1yZXR1cm4gZX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixpLGw9dC5kYXRh LGM9dC5sYXlvdXQsdT1vKFtdLGwpLGY9byh7fSxjLHMoZS50aWxlQ2xhc3MpKSxoPXQuX2Nv bnRleHR8fHt9O2lmKGUud2lkdGgmJihmLndpZHRoPWUud2lkdGgpLGUuaGVpZ2h0JiYoZi5o ZWlnaHQ9ZS5oZWlnaHQpLCJ0aHVtYm5haWwiPT09ZS50aWxlQ2xhc3N8fCJ0aGVtZXNfX3Ro dW1iIj09PWUudGlsZUNsYXNzKXtmLmFubm90YXRpb25zPVtdO3ZhciBwPU9iamVjdC5rZXlz KGYpO2ZvcihyPTA7cjxwLmxlbmd0aDtyKyspaT1wW3JdLFsieGF4aXMiLCJ5YXhpcyIsInph eGlzIl0uaW5kZXhPZihpLnNsaWNlKDAsNSkpPi0xJiYoZltwW3JdXS50aXRsZT17dGV4dDoi In0pO2ZvcihyPTA7cjx1Lmxlbmd0aDtyKyspe3ZhciBkPXVbcl07ZC5zaG93c2NhbGU9ITEs ZC5tYXJrZXImJihkLm1hcmtlci5zaG93c2NhbGU9ITEpLG4udHJhY2VJcyhkLCJwaWUtbGlr ZSIpJiYoZC50ZXh0cG9zaXRpb249Im5vbmUiKX19aWYoQXJyYXkuaXNBcnJheShlLmFubm90 YXRpb25zKSlmb3Iocj0wO3I8ZS5hbm5vdGF0aW9ucy5sZW5ndGg7cisrKWYuYW5ub3RhdGlv bnMucHVzaChlLmFubm90YXRpb25zW3JdKTt2YXIgbT1PYmplY3Qua2V5cyhmKS5maWx0ZXIo KGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hdGNoKC9ec2NlbmVcZCokLyl9KSk7aWYobS5sZW5n dGgpe3ZhciBnPXt9O2ZvcigidGh1bWJuYWlsIj09PWUudGlsZUNsYXNzJiYoZz17dGl0bGU6 e3RleHQ6IiJ9LHNob3dheGVzbGFiZWxzOiExLHNob3d0aWNrbGFiZWxzOiExLGxpbmV0aWNr ZW5hYmxlOiExfSkscj0wO3I8bS5sZW5ndGg7cisrKXt2YXIgdj1mW21bcl1dO3YueGF4aXN8 fCh2LnhheGlzPXt9KSx2LnlheGlzfHwodi55YXhpcz17fSksdi56YXhpc3x8KHYuemF4aXM9 e30pLGEodi54YXhpcyxnKSxhKHYueWF4aXMsZyksYSh2LnpheGlzLGcpLHYuX3NjZW5lPW51 bGx9fXZhciB5PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UudGlsZUNsYXNzJiYo eS5jbGFzc05hbWU9ZS50aWxlQ2xhc3MpO3ZhciB4PXtnZDp5LHRkOnksbGF5b3V0OmYsZGF0 YTp1LGNvbmZpZzp7c3RhdGljUGxvdDp2b2lkIDA9PT1lLnN0YXRpY1Bsb3R8fGUuc3RhdGlj UGxvdCxwbG90R2xQaXhlbFJhdGlvOnZvaWQgMD09PWUucGxvdEdsUGl4ZWxSYXRpbz8yOmUu cGxvdEdsUGl4ZWxSYXRpbyxkaXNwbGF5bG9nbzplLmRpc3BsYXlsb2dvfHwhMSxzaG93TGlu azplLnNob3dMaW5rfHwhMSxzaG93VGlwczplLnNob3dUaXBzfHwhMSxtYXBib3hBY2Nlc3NU b2tlbjpoLm1hcGJveEFjY2Vzc1Rva2VufX07cmV0dXJuInRyYW5zcGFyZW50IiE9PWUuc2V0 QmFja2dyb3VuZCYmKHguY29uZmlnLnNldEJhY2tncm91bmQ9ZS5zZXRCYWNrZ3JvdW5kfHwi b3BhcXVlIikseC5nZC5kZWZhdWx0TGF5b3V0PXMoZS50aWxlQ2xhc3MpLHh9fSx7Ii4uL2xp YiI6NTAzLCIuLi9yZWdpc3RyeSI6NjM4fV0sNjQwOltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4uL2xpYiIpLGk9dCgiLi4vcGxvdF9hcGkvdG9faW1hZ2UiKSxh PXQoIi4vZmlsZXNhdmVyIiksbz10KCIuL2hlbHBlcnMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24o dCxlKXt2YXIgcjtyZXR1cm4gbi5pc1BsYWluT2JqZWN0KHQpfHwocj1uLmdldEdyYXBoRGl2 KHQpKSwoZT1lfHx7fSkuZm9ybWF0PWUuZm9ybWF0fHwicG5nIixlLndpZHRoPWUud2lkdGh8 fG51bGwsZS5oZWlnaHQ9ZS5oZWlnaHR8fG51bGwsZS5pbWFnZURhdGFPbmx5PSEwLG5ldyBQ cm9taXNlKChmdW5jdGlvbihzLGwpe3ImJnIuX3NuYXBzaG90SW5Qcm9ncmVzcyYmbChuZXcg RXJyb3IoIlNuYXBzaG90dGluZyBhbHJlYWR5IGluIHByb2dyZXNzLiIpKSxuLmlzSUUoKSYm InN2ZyIhPT1lLmZvcm1hdCYmbChuZXcgRXJyb3Ioby5NU0dfSUVfQkFEX0ZPUk1BVCkpLHIm JihyLl9zbmFwc2hvdEluUHJvZ3Jlc3M9ITApO3ZhciBjPWkodCxlKSx1PWUuZmlsZW5hbWV8 fHQuZm58fCJuZXdwbG90Ijt1Kz0iLiIrZS5mb3JtYXQucmVwbGFjZSgiLSIsIi4iKSxjLnRo ZW4oKGZ1bmN0aW9uKHQpe3JldHVybiByJiYoci5fc25hcHNob3RJblByb2dyZXNzPSExKSxh KHQsdSxlLmZvcm1hdCl9KSkudGhlbigoZnVuY3Rpb24odCl7cyh0KX0pKS5jYXRjaCgoZnVu Y3Rpb24odCl7ciYmKHIuX3NuYXBzaG90SW5Qcm9ncmVzcz0hMSksbCh0KX0pKX0pKX19LHsi Li4vbGliIjo1MDMsIi4uL3Bsb3RfYXBpL3RvX2ltYWdlIjo1NDYsIi4vZmlsZXNhdmVyIjo2 NDEsIi4vaGVscGVycyI6NjQyfV0sNjQxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoIi4uL2xpYiIpLGk9dCgiLi9oZWxwZXJzIik7ZS5leHBvcnRzPWZ1bmN0aW9u KHQsZSxyKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIiksbz0iZG93bmxvYWQi aW4gYTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHMsbCl7dmFyIGMsdTtpZihuLmlz SUUoKSlyZXR1cm4gYz1pLmNyZWF0ZUJsb2IodCwic3ZnIiksd2luZG93Lm5hdmlnYXRvci5t c1NhdmVCbG9iKGMsZSksYz1udWxsLHMoZSk7aWYobylyZXR1cm4gYz1pLmNyZWF0ZUJsb2Io dCxyKSx1PWkuY3JlYXRlT2JqZWN0VVJMKGMpLGEuaHJlZj11LGEuZG93bmxvYWQ9ZSxkb2N1 bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpLGEuY2xpY2soKSxkb2N1bWVudC5ib2R5LnJlbW92 ZUNoaWxkKGEpLGkucmV2b2tlT2JqZWN0VVJMKHUpLGM9bnVsbCxzKGUpO2lmKG4uaXNTYWZh cmkoKSl7dmFyIGY9InN2ZyI9PT1yPyIsIjoiO2Jhc2U2NCwiO3JldHVybiBpLm9jdGV0U3Ry ZWFtKGYrZW5jb2RlVVJJQ29tcG9uZW50KHQpKSxzKGUpfWwobmV3IEVycm9yKCJkb3dubG9h ZCBlcnJvciIpKX0pKX19LHsiLi4vbGliIjo1MDMsIi4vaGVscGVycyI6NjQyfV0sNjQyOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3JlZ2lzdHJ5Iik7ci5n ZXREZWxheT1mdW5jdGlvbih0KXtyZXR1cm4gdC5faGFzJiYodC5faGFzKCJnbDNkIil8fHQu X2hhcygiZ2wyZCIpfHx0Ll9oYXMoIm1hcGJveCIpKT81MDA6MH0sci5nZXRSZWRyYXdGdW5j PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe24uZ2V0Q29tcG9uZW50TWV0aG9kKCJj b2xvcmJhciIsImRyYXciKSh0KX19LHIuZW5jb2RlU1ZHPWZ1bmN0aW9uKHQpe3JldHVybiJk YXRhOmltYWdlL3N2Zyt4bWwsIitlbmNvZGVVUklDb21wb25lbnQodCl9LHIuZW5jb2RlSlNP Tj1mdW5jdGlvbih0KXtyZXR1cm4iZGF0YTphcHBsaWNhdGlvbi9qc29uLCIrZW5jb2RlVVJJ Q29tcG9uZW50KHQpfTt2YXIgaT13aW5kb3cuVVJMfHx3aW5kb3cud2Via2l0VVJMO3IuY3Jl YXRlT2JqZWN0VVJMPWZ1bmN0aW9uKHQpe3JldHVybiBpLmNyZWF0ZU9iamVjdFVSTCh0KX0s ci5yZXZva2VPYmplY3RVUkw9ZnVuY3Rpb24odCl7cmV0dXJuIGkucmV2b2tlT2JqZWN0VVJM KHQpfSxyLmNyZWF0ZUJsb2I9ZnVuY3Rpb24odCxlKXtpZigic3ZnIj09PWUpcmV0dXJuIG5l dyB3aW5kb3cuQmxvYihbdF0se3R5cGU6ImltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCJ9 KTtpZigiZnVsbC1qc29uIj09PWUpcmV0dXJuIG5ldyB3aW5kb3cuQmxvYihbdF0se3R5cGU6 ImFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtOCJ9KTt2YXIgcj1mdW5jdGlvbih0KXtm b3IodmFyIGU9dC5sZW5ndGgscj1uZXcgQXJyYXlCdWZmZXIoZSksbj1uZXcgVWludDhBcnJh eShyKSxpPTA7aTxlO2krKyluW2ldPXQuY2hhckNvZGVBdChpKTtyZXR1cm4gcn0od2luZG93 LmF0b2IodCkpO3JldHVybiBuZXcgd2luZG93LkJsb2IoW3JdLHt0eXBlOiJpbWFnZS8iK2V9 KX0sci5vY3RldFN0cmVhbT1mdW5jdGlvbih0KXtkb2N1bWVudC5sb2NhdGlvbi5ocmVmPSJk YXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIrdH0sci5JTUFHRV9VUkxfUFJFRklYPS9e ZGF0YTppbWFnZVwvXHcrO2Jhc2U2NCwvLHIuTVNHX0lFX0JBRF9GT1JNQVQ9IlNvcnJ5IElF IGRvZXMgbm90IHN1cHBvcnQgZG93bmxvYWRpbmcgZnJvbSBjYW52YXMuIFRyeSB7Zm9ybWF0 OidzdmcnfSBpbnN0ZWFkLiJ9LHsiLi4vcmVnaXN0cnkiOjYzOH1dLDY0MzpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2hlbHBlcnMiKSxpPXtnZXREZWxheTpu LmdldERlbGF5LGdldFJlZHJhd0Z1bmM6bi5nZXRSZWRyYXdGdW5jLGNsb25lOnQoIi4vY2xv bmVwbG90IiksdG9TVkc6dCgiLi90b3N2ZyIpLHN2Z1RvSW1nOnQoIi4vc3ZndG9pbWciKSx0 b0ltYWdlOnQoIi4vdG9pbWFnZSIpLGRvd25sb2FkSW1hZ2U6dCgiLi9kb3dubG9hZCIpfTtl LmV4cG9ydHM9aX0seyIuL2Nsb25lcGxvdCI6NjM5LCIuL2Rvd25sb2FkIjo2NDAsIi4vaGVs cGVycyI6NjQyLCIuL3N2Z3RvaW1nIjo2NDQsIi4vdG9pbWFnZSI6NjQ1LCIuL3Rvc3ZnIjo2 NDZ9XSw2NDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vbGli IiksaT10KCJldmVudHMiKS5FdmVudEVtaXR0ZXIsYT10KCIuL2hlbHBlcnMiKTtlLmV4cG9y dHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5lbWl0dGVyfHxuZXcgaSxyPW5ldyBQcm9taXNlKChm dW5jdGlvbihpLG8pe3ZhciBzPXdpbmRvdy5JbWFnZSxsPXQuc3ZnLGM9dC5mb3JtYXR8fCJw bmciO2lmKG4uaXNJRSgpJiYic3ZnIiE9PWMpe3ZhciB1PW5ldyBFcnJvcihhLk1TR19JRV9C QURfRk9STUFUKTtyZXR1cm4gbyh1KSx0LnByb21pc2U/cjplLmVtaXQoImVycm9yIix1KX12 YXIgZixoLHA9dC5jYW52YXMsZD10LnNjYWxlfHwxLG09dC53aWR0aHx8MzAwLGc9dC5oZWln aHR8fDE1MCx2PWQqbSx5PWQqZyx4PXAuZ2V0Q29udGV4dCgiMmQiLHt3aWxsUmVhZEZyZXF1 ZW50bHk6ITB9KSxiPW5ldyBzOyJzdmciPT09Y3x8bi5pc1NhZmFyaSgpP2g9YS5lbmNvZGVT VkcobCk6KGY9YS5jcmVhdGVCbG9iKGwsInN2ZyIpLGg9YS5jcmVhdGVPYmplY3RVUkwoZikp LHAud2lkdGg9dixwLmhlaWdodD15LGIub25sb2FkPWZ1bmN0aW9uKCl7dmFyIHI7c3dpdGNo KGY9bnVsbCxhLnJldm9rZU9iamVjdFVSTChoKSwic3ZnIiE9PWMmJnguZHJhd0ltYWdlKGIs MCwwLHYseSksYyl7Y2FzZSJqcGVnIjpyPXAudG9EYXRhVVJMKCJpbWFnZS9qcGVnIik7YnJl YWs7Y2FzZSJwbmciOnI9cC50b0RhdGFVUkwoImltYWdlL3BuZyIpO2JyZWFrO2Nhc2Uid2Vi cCI6cj1wLnRvRGF0YVVSTCgiaW1hZ2Uvd2VicCIpO2JyZWFrO2Nhc2Uic3ZnIjpyPWg7YnJl YWs7ZGVmYXVsdDp2YXIgbj0iSW1hZ2UgZm9ybWF0IGlzIG5vdCBqcGVnLCBwbmcsIHN2ZyBv ciB3ZWJwLiI7aWYobyhuZXcgRXJyb3IobikpLCF0LnByb21pc2UpcmV0dXJuIGUuZW1pdCgi ZXJyb3IiLG4pfWkociksdC5wcm9taXNlfHxlLmVtaXQoInN1Y2Nlc3MiLHIpfSxiLm9uZXJy b3I9ZnVuY3Rpb24ocil7aWYoZj1udWxsLGEucmV2b2tlT2JqZWN0VVJMKGgpLG8ociksIXQu cHJvbWlzZSlyZXR1cm4gZS5lbWl0KCJlcnJvciIscil9LGIuc3JjPWh9KSk7cmV0dXJuIHQu cHJvbWlzZT9yOmV9fSx7Ii4uL2xpYiI6NTAzLCIuL2hlbHBlcnMiOjY0MixldmVudHM6ODR9 XSw2NDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZXZlbnRzIiku RXZlbnRFbWl0dGVyLGk9dCgiLi4vcmVnaXN0cnkiKSxhPXQoIi4uL2xpYiIpLG89dCgiLi9o ZWxwZXJzIikscz10KCIuL2Nsb25lcGxvdCIpLGw9dCgiLi90b3N2ZyIpLGM9dCgiLi9zdmd0 b2ltZyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPW5ldyBuLHU9cyh0LHtmb3Jt YXQ6InBuZyJ9KSxmPXUuZ2Q7Zi5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGYuc3R5bGUu bGVmdD0iLTUwMDBweCIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmKTt2YXIgaD1vLmdl dFJlZHJhd0Z1bmMoZik7cmV0dXJuIGkuY2FsbCgiX2RvUGxvdCIsZix1LmRhdGEsdS5sYXlv dXQsdS5jb25maWcpLnRoZW4oaCkudGhlbigoZnVuY3Rpb24oKXt2YXIgdD1vLmdldERlbGF5 KGYuX2Z1bGxMYXlvdXQpO3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dmFyIHQ9bChmKSxuPWRv Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO24uaWQ9YS5yYW5kc3RyKCksKHI9Yyh7 Zm9ybWF0OmUuZm9ybWF0LHdpZHRoOmYuX2Z1bGxMYXlvdXQud2lkdGgsaGVpZ2h0OmYuX2Z1 bGxMYXlvdXQuaGVpZ2h0LGNhbnZhczpuLGVtaXR0ZXI6cixzdmc6dH0pKS5jbGVhbj1mdW5j dGlvbigpe2YmJmRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZil9fSksdCl9KSkuY2F0Y2go KGZ1bmN0aW9uKHQpe3IuZW1pdCgiZXJyb3IiLHQpfSkpLHJ9fSx7Ii4uL2xpYiI6NTAzLCIu Li9yZWdpc3RyeSI6NjM4LCIuL2Nsb25lcGxvdCI6NjM5LCIuL2hlbHBlcnMiOjY0MiwiLi9z dmd0b2ltZyI6NjQ0LCIuL3Rvc3ZnIjo2NDYsZXZlbnRzOjg0fV0sNjQ2OltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIkBwbG90bHkvZDMiKSxpPXQoIi4uL2xpYiIp LGE9dCgiLi4vY29tcG9uZW50cy9kcmF3aW5nIiksbz10KCIuLi9jb21wb25lbnRzL2NvbG9y Iikscz10KCIuLi9jb25zdGFudHMveG1sbnNfbmFtZXNwYWNlcyIpLGw9LyIvZyxjPW5ldyBS ZWdFeHAoJygiVE9CRVNUUklQUEVEKXwoVE9CRVNUUklQUEVEIiknLCJnIik7ZS5leHBvcnRz PWZ1bmN0aW9uKHQsZSxyKXt2YXIgdSxmPXQuX2Z1bGxMYXlvdXQsaD1mLl9wYXBlcixwPWYu X3RvcHBhcGVyLGQ9Zi53aWR0aCxtPWYuaGVpZ2h0O2guaW5zZXJ0KCJyZWN0IiwiOmZpcnN0 LWNoaWxkIikuY2FsbChhLnNldFJlY3QsMCwwLGQsbSkuY2FsbChvLmZpbGwsZi5wYXBlcl9i Z2NvbG9yKTt2YXIgZz1mLl9iYXNlUGxvdE1vZHVsZXN8fFtdO2Zvcih1PTA7dTxnLmxlbmd0 aDt1Kyspe3ZhciB2PWdbdV07di50b1NWRyYmdi50b1NWRyh0KX1pZihwKXt2YXIgeT1wLm5v ZGUoKS5jaGlsZE5vZGVzLHg9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoeSk7Zm9yKHU9 MDt1PHgubGVuZ3RoO3UrKyl7dmFyIGI9eFt1XTtiLmNoaWxkTm9kZXMubGVuZ3RoJiZoLm5v ZGUoKS5hcHBlbmRDaGlsZChiKX19Zi5fZHJhZ2dlcnMmJmYuX2RyYWdnZXJzLnJlbW92ZSgp LGgubm9kZSgpLnN0eWxlLmJhY2tncm91bmQ9IiIsaC5zZWxlY3RBbGwoInRleHQiKS5hdHRy KHsiZGF0YS11bmZvcm1hdHRlZCI6bnVsbCwiZGF0YS1tYXRoIjpudWxsfSkuZWFjaCgoZnVu Y3Rpb24oKXt2YXIgdD1uLnNlbGVjdCh0aGlzKTtpZigiaGlkZGVuIiE9PXRoaXMuc3R5bGUu dmlzaWJpbGl0eSYmIm5vbmUiIT09dGhpcy5zdHlsZS5kaXNwbGF5KXt0LnN0eWxlKHt2aXNp YmlsaXR5Om51bGwsZGlzcGxheTpudWxsfSk7dmFyIGU9dGhpcy5zdHlsZS5mb250RmFtaWx5 O2UmJi0xIT09ZS5pbmRleE9mKCciJykmJnQuc3R5bGUoImZvbnQtZmFtaWx5IixlLnJlcGxh Y2UobCwiVE9CRVNUUklQUEVEIikpfWVsc2UgdC5yZW1vdmUoKX0pKSxoLnNlbGVjdEFsbCgi LmdyYWRpZW50X2ZpbGxlZCwucGF0dGVybl9maWxsZWQiKS5lYWNoKChmdW5jdGlvbigpe3Zh ciB0PW4uc2VsZWN0KHRoaXMpLGU9dGhpcy5zdHlsZS5maWxsO2UmJi0xIT09ZS5pbmRleE9m KCJ1cmwoIikmJnQuc3R5bGUoImZpbGwiLGUucmVwbGFjZShsLCJUT0JFU1RSSVBQRUQiKSk7 dmFyIHI9dGhpcy5zdHlsZS5zdHJva2U7ciYmLTEhPT1yLmluZGV4T2YoInVybCgiKSYmdC5z dHlsZSgic3Ryb2tlIixyLnJlcGxhY2UobCwiVE9CRVNUUklQUEVEIikpfSkpLCJwZGYiIT09 ZSYmImVwcyIhPT1lfHxoLnNlbGVjdEFsbCgiI01hdGhKYXhfU1ZHX2dseXBocyBwYXRoIiku YXR0cigic3Ryb2tlLXdpZHRoIiwwKSxoLm5vZGUoKS5zZXRBdHRyaWJ1dGVOUyhzLnhtbG5z LCJ4bWxucyIscy5zdmcpLGgubm9kZSgpLnNldEF0dHJpYnV0ZU5TKHMueG1sbnMsInhtbG5z OnhsaW5rIixzLnhsaW5rKSwic3ZnIj09PWUmJnImJihoLmF0dHIoIndpZHRoIixyKmQpLGgu YXR0cigiaGVpZ2h0IixyKm0pLGguYXR0cigidmlld0JveCIsIjAgMCAiK2QrIiAiK20pKTt2 YXIgXz0obmV3IHdpbmRvdy5YTUxTZXJpYWxpemVyKS5zZXJpYWxpemVUb1N0cmluZyhoLm5v ZGUoKSk7cmV0dXJuIF89ZnVuY3Rpb24odCl7dmFyIGU9bi5zZWxlY3QoImJvZHkiKS5hcHBl bmQoImRpdiIpLnN0eWxlKHtkaXNwbGF5OiJub25lIn0pLmh0bWwoIiIpLHI9dC5yZXBsYWNl KC8oJlteO10qOykvZ2ksKGZ1bmN0aW9uKHQpe3JldHVybiImbHQ7Ij09PXQ/IiYjNjA7Ijoi JnJ0OyI9PT10PyImIzYyOyI6LTEhPT10LmluZGV4T2YoIjwiKXx8LTEhPT10LmluZGV4T2Yo Ij4iKT8iIjplLmh0bWwodCkudGV4dCgpfSkpO3JldHVybiBlLnJlbW92ZSgpLHJ9KF8pLF89 KF89Xy5yZXBsYWNlKC8mKD8hXHcrO3xcI1swLTldKzt8IFwjeFswLTlBLUZdKzspL2csIiZh bXA7IikpLnJlcGxhY2UoYywiJyIpLGkuaXNJRSgpJiYoXz0oXz0oXz1fLnJlcGxhY2UoLyIv Z2ksIiciKSkucmVwbGFjZSgvKFwoJyMpKFteJ10qKSgnXCkpL2dpLCcoIiMkMiIpJykpLnJl cGxhY2UoLyhcXCcpL2dpLCciJykpLF99fSx7Ii4uL2NvbXBvbmVudHMvY29sb3IiOjM2Niwi Li4vY29tcG9uZW50cy9kcmF3aW5nIjozODgsIi4uL2NvbnN0YW50cy94bWxuc19uYW1lc3Bh Y2VzIjo0ODAsIi4uL2xpYiI6NTAzLCJAcGxvdGx5L2QzIjo1OH1dLDY0NzpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKTtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlKXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdLmk9cjtuLm1lcmdl QXJyYXkoZS50ZXh0LHQsInR4Iiksbi5tZXJnZUFycmF5KGUuaG92ZXJ0ZXh0LHQsImh0eCIp O3ZhciBpPWUubWFya2VyO2lmKGkpe24ubWVyZ2VBcnJheShpLm9wYWNpdHksdCwibW8iLCEw KSxuLm1lcmdlQXJyYXkoaS5jb2xvcix0LCJtYyIpO3ZhciBhPWkubGluZTthJiYobi5tZXJn ZUFycmF5KGEuY29sb3IsdCwibWxjIiksbi5tZXJnZUFycmF5Q2FzdFBvc2l0aXZlKGEud2lk dGgsdCwibWx3IikpfX19LHsiLi4vLi4vbGliIjo1MDN9XSw2NDg6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIiksaT10KCIu Li8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19mb3JtYXRfYXR0cmlidXRlcyIpLmF4aXNIb3Zl ckZvcm1hdCxhPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRl bXBsYXRlQXR0cnMsbz10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIikudGV4 dHRlbXBsYXRlQXR0cnMscz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmli dXRlcyIpLGw9dCgiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIiksYz10KCIuL2NvbnN0 YW50cyIpLHU9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nL2F0dHJpYnV0ZXMiKS5wYXR0 ZXJuLGY9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQsaD1sKHtlZGl0VHlwZToi Y2FsYyIsYXJyYXlPazohMCxjb2xvckVkaXRUeXBlOiJzdHlsZSJ9KSxwPWYoe30sbi5tYXJr ZXIubGluZS53aWR0aCx7ZGZsdDowfSksZD1mKHt3aWR0aDpwLGVkaXRUeXBlOiJjYWxjIn0s cygibWFya2VyLmxpbmUiKSksbT1mKHtsaW5lOmQsZWRpdFR5cGU6ImNhbGMifSxzKCJtYXJr ZXIiKSx7b3BhY2l0eTp7dmFsVHlwZToibnVtYmVyIixhcnJheU9rOiEwLGRmbHQ6MSxtaW46 MCxtYXg6MSxlZGl0VHlwZToic3R5bGUifSxwYXR0ZXJuOnV9KTtlLmV4cG9ydHM9e3g6bi54 LHgwOm4ueDAsZHg6bi5keCx5Om4ueSx5MDpuLnkwLGR5Om4uZHkseHBlcmlvZDpuLnhwZXJp b2QseXBlcmlvZDpuLnlwZXJpb2QseHBlcmlvZDA6bi54cGVyaW9kMCx5cGVyaW9kMDpuLnlw ZXJpb2QwLHhwZXJpb2RhbGlnbm1lbnQ6bi54cGVyaW9kYWxpZ25tZW50LHlwZXJpb2RhbGln bm1lbnQ6bi55cGVyaW9kYWxpZ25tZW50LHhob3ZlcmZvcm1hdDppKCJ4IikseWhvdmVyZm9y bWF0OmkoInkiKSx0ZXh0Om4udGV4dCx0ZXh0dGVtcGxhdGU6byh7ZWRpdFR5cGU6InBsb3Qi fSx7a2V5czpjLmV2ZW50RGF0YUtleXN9KSxob3ZlcnRleHQ6bi5ob3ZlcnRleHQsaG92ZXJ0 ZW1wbGF0ZTphKHt9LHtrZXlzOmMuZXZlbnREYXRhS2V5c30pLHRleHRwb3NpdGlvbjp7dmFs VHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiaW5zaWRlIiwib3V0c2lkZSIsImF1dG8iLCJu b25lIl0sZGZsdDoiYXV0byIsYXJyYXlPazohMCxlZGl0VHlwZToiY2FsYyJ9LGluc2lkZXRl eHRhbmNob3I6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImVuZCIsIm1pZGRsZSIs InN0YXJ0Il0sZGZsdDoiZW5kIixlZGl0VHlwZToicGxvdCJ9LHRleHRhbmdsZTp7dmFsVHlw ZToiYW5nbGUiLGRmbHQ6ImF1dG8iLGVkaXRUeXBlOiJwbG90In0sdGV4dGZvbnQ6Zih7fSxo LHt9KSxpbnNpZGV0ZXh0Zm9udDpmKHt9LGgse30pLG91dHNpZGV0ZXh0Zm9udDpmKHt9LGgs e30pLGNvbnN0cmFpbnRleHQ6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImluc2lk ZSIsIm91dHNpZGUiLCJib3RoIiwibm9uZSJdLGRmbHQ6ImJvdGgiLGVkaXRUeXBlOiJjYWxj In0sY2xpcG9uYXhpczpmKHt9LG4uY2xpcG9uYXhpcyx7fSksb3JpZW50YXRpb246e3ZhbFR5 cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInYiLCJoIl0sZWRpdFR5cGU6ImNhbGMrY2xlYXJB eGlzVHlwZXMifSxiYXNlOnt2YWxUeXBlOiJhbnkiLGRmbHQ6bnVsbCxhcnJheU9rOiEwLGVk aXRUeXBlOiJjYWxjIn0sb2Zmc2V0Ont2YWxUeXBlOiJudW1iZXIiLGRmbHQ6bnVsbCxhcnJh eU9rOiEwLGVkaXRUeXBlOiJjYWxjIn0sd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDpu dWxsLG1pbjowLGFycmF5T2s6ITAsZWRpdFR5cGU6ImNhbGMifSxtYXJrZXI6bSxvZmZzZXRn cm91cDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGVkaXRUeXBlOiJjYWxjIn0sYWxpZ25t ZW50Z3JvdXA6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIixlZGl0VHlwZToiY2FsYyJ9LHNl bGVjdGVkOnttYXJrZXI6e29wYWNpdHk6bi5zZWxlY3RlZC5tYXJrZXIub3BhY2l0eSxjb2xv cjpuLnNlbGVjdGVkLm1hcmtlci5jb2xvcixlZGl0VHlwZToic3R5bGUifSx0ZXh0Zm9udDpu LnNlbGVjdGVkLnRleHRmb250LGVkaXRUeXBlOiJzdHlsZSJ9LHVuc2VsZWN0ZWQ6e21hcmtl cjp7b3BhY2l0eTpuLnVuc2VsZWN0ZWQubWFya2VyLm9wYWNpdHksY29sb3I6bi51bnNlbGVj dGVkLm1hcmtlci5jb2xvcixlZGl0VHlwZToic3R5bGUifSx0ZXh0Zm9udDpuLnVuc2VsZWN0 ZWQudGV4dGZvbnQsZWRpdFR5cGU6InN0eWxlIn0sX2RlcHJlY2F0ZWQ6e2JhcmRpcjp7dmFs VHlwZToiZW51bWVyYXRlZCIsZWRpdFR5cGU6ImNhbGMiLHZhbHVlczpbInYiLCJoIl19fX19 LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiOjM3MywiLi4vLi4v Y29tcG9uZW50cy9kcmF3aW5nL2F0dHJpYnV0ZXMiOjM4NywiLi4vLi4vbGliL2V4dGVuZCI6 NDkzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19mb3JtYXRfYXR0cmlidXRlcyI6NTU3 LCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiOjU4NSwiLi4vLi4vcGxvdHMvdGVtcGxh dGVfYXR0cmlidXRlcyI6NjMzLCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiOjkyNywiLi9jb25z dGFudHMiOjY1MH1dLDY0OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGk9dCgiLi4vLi4vcGxvdHMvY2FydGVz aWFuL2FsaWduX3BlcmlvZCIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2hl bHBlcnMiKS5oYXNDb2xvcnNjYWxlLG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxl L2NhbGMiKSxzPXQoIi4vYXJyYXlzX3RvX2NhbGNkYXRhIiksbD10KCIuLi9zY2F0dGVyL2Nh bGNfc2VsZWN0aW9uIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsYyx1LGYsaCxw LGQ9bi5nZXRGcm9tSWQodCxlLnhheGlzfHwieCIpLG09bi5nZXRGcm9tSWQodCxlLnlheGlz fHwieSIpLGc9e21zVVRDOiEoIWUuYmFzZSYmMCE9PWUuYmFzZSl9OyJoIj09PWUub3JpZW50 YXRpb24/KHI9ZC5tYWtlQ2FsY2RhdGEoZSwieCIsZyksdT1tLm1ha2VDYWxjZGF0YShlLCJ5 IiksZj1pKGUsbSwieSIsdSksaD0hIWUueXBlcmlvZGFsaWdubWVudCxwPSJ5Iik6KHI9bS5t YWtlQ2FsY2RhdGEoZSwieSIsZyksdT1kLm1ha2VDYWxjZGF0YShlLCJ4IiksZj1pKGUsZCwi eCIsdSksaD0hIWUueHBlcmlvZGFsaWdubWVudCxwPSJ4IiksYz1mLnZhbHM7Zm9yKHZhciB2 PU1hdGgubWluKGMubGVuZ3RoLHIubGVuZ3RoKSx5PW5ldyBBcnJheSh2KSx4PTA7eDx2O3gr Kyl5W3hdPXtwOmNbeF0sczpyW3hdfSxoJiYoeVt4XS5vcmlnX3A9dVt4XSx5W3hdW3ArIkVu ZCJdPWYuZW5kc1t4XSx5W3hdW3ArIlN0YXJ0Il09Zi5zdGFydHNbeF0pLGUuaWRzJiYoeVt4 XS5pZD1TdHJpbmcoZS5pZHNbeF0pKTtyZXR1cm4gYShlLCJtYXJrZXIiKSYmbyh0LGUse3Zh bHM6ZS5tYXJrZXIuY29sb3IsY29udGFpbmVyU3RyOiJtYXJrZXIiLGNMZXR0ZXI6ImMifSks YShlLCJtYXJrZXIubGluZSIpJiZvKHQsZSx7dmFsczplLm1hcmtlci5saW5lLmNvbG9yLGNv bnRhaW5lclN0cjoibWFya2VyLmxpbmUiLGNMZXR0ZXI6ImMifSkscyh5LGUpLGwoeSxlKSx5 fX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyI6Mzc0LCIuLi8uLi9jb21w b25lbnRzL2NvbG9yc2NhbGUvaGVscGVycyI6Mzc3LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4v YWxpZ25fcGVyaW9kIjo1NTEsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo1NTQsIi4u L3NjYXR0ZXIvY2FsY19zZWxlY3Rpb24iOjkyOSwiLi9hcnJheXNfdG9fY2FsY2RhdGEiOjY0 N31dLDY1MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e1RFWFRQ QUQ6MyxldmVudERhdGFLZXlzOlsidmFsdWUiLCJsYWJlbCJdfX0se31dLDY1MTpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGk9dCgi Li4vLi4vbGliIikuaXNBcnJheU9yVHlwZWRBcnJheSxhPXQoIi4uLy4uL2NvbnN0YW50cy9u dW1lcmljYWwiKS5CQUROVU0sbz10KCIuLi8uLi9yZWdpc3RyeSIpLHM9dCgiLi4vLi4vcGxv dHMvY2FydGVzaWFuL2F4ZXMiKSxsPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9jb25zdHJh aW50cyIpLmdldEF4aXNHcm91cCxjPXQoIi4vc2lldmUuanMiKTtmdW5jdGlvbiB1KHQsZSxy LG8sdSl7aWYoby5sZW5ndGgpe3ZhciBiLF8sdyxUO3N3aXRjaChmdW5jdGlvbih0LGUpe3Zh ciByLGE7Zm9yKHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG8scz1lW3JdLGw9c1swXS50cmFj ZSxjPSJmdW5uZWwiPT09bC50eXBlP2wuX2Jhc2U6bC5iYXNlLHU9ImgiPT09bC5vcmllbnRh dGlvbj9sLnhjYWxlbmRhcjpsLnljYWxlbmRhcixmPSJjYXRlZ29yeSI9PT10LnR5cGV8fCJt dWx0aWNhdGVnb3J5Ij09PXQudHlwZT9mdW5jdGlvbigpe3JldHVybiBudWxsfTp0LmQyYztp ZihpKGMpKXtmb3IoYT0wO2E8TWF0aC5taW4oYy5sZW5ndGgscy5sZW5ndGgpO2ErKylvPWYo Y1thXSwwLHUpLG4obyk/KHNbYV0uYj0rbyxzW2FdLmhhc0I9MSk6c1thXS5iPTA7Zm9yKDth PHMubGVuZ3RoO2ErKylzW2FdLmI9MH1lbHNle289ZihjLDAsdSk7dmFyIGg9bihvKTtmb3Io bz1oP286MCxhPTA7YTxzLmxlbmd0aDthKyspc1thXS5iPW8saCYmKHNbYV0uaGFzQj0xKX19 fShyLG8pLHUubW9kZSl7Y2FzZSJvdmVybGF5IjpmKGUscixvLHUpO2JyZWFrO2Nhc2UiZ3Jv dXAiOmZvcihiPVtdLF89W10sdz0wO3c8by5sZW5ndGg7dysrKXZvaWQgMD09PShUPW9bd10p WzBdLnRyYWNlLm9mZnNldD9fLnB1c2goVCk6Yi5wdXNoKFQpO18ubGVuZ3RoJiZmdW5jdGlv bih0LGUscixuLGkpe3ZhciBvPW5ldyBjKG4se3Bvc0F4aXM6ZSxzZXBOZWdWYWw6ITEsb3Zl cmxhcE5vTWVyZ2U6IWkubm9ybX0pOyhmdW5jdGlvbih0LGUscixuKXtmb3IodmFyIGk9dC5f ZnVsbExheW91dCxhPXIucG9zaXRpb25zLG89ci5kaXN0aW5jdFBvc2l0aW9ucyxzPXIubWlu RGlmZixjPXIudHJhY2VzLHU9Yy5sZW5ndGgsZj1hLmxlbmd0aCE9PW8ubGVuZ3RoLGg9cyoo MS1uLmdhcCksZz1sKGksZS5faWQpK2NbMF1bMF0udHJhY2Uub3JpZW50YXRpb24sdj1pLl9h bGlnbm1lbnRPcHRzW2ddfHx7fSx5PTA7eTx1O3krKyl7dmFyIHgsYixfPWNbeV0sdz1fWzBd LnRyYWNlLFQ9dlt3LmFsaWdubWVudGdyb3VwXXx8e30saz1PYmplY3Qua2V5cyhULm9mZnNl dEdyb3Vwc3x8e30pLmxlbmd0aCxBPSh4PWs/aC9rOmY/aC91OmgpKigxLShuLmdyb3VwZ2Fw fHwwKSk7Yj1rPygoMip3Ll9vZmZzZXRJbmRleCsxLWspKngtQSkvMjpmPygoMip5KzEtdSkq eC1BKS8yOi1BLzI7dmFyIE09X1swXS50O00uYmFyd2lkdGg9QSxNLnBvZmZzZXQ9YixNLmJh cmdyb3Vwd2lkdGg9aCxNLmJhcmRlbHRhPXN9ci5iaW5XaWR0aD1jWzBdWzBdLnQuYmFyd2lk dGgvMTAwLHAociksZChlLHIpLG0oZSxyLGYpfSkodCxlLG8saSksZnVuY3Rpb24odCxlKXtm b3IodmFyIHI9dC50cmFjZXMsbj0wO248ci5sZW5ndGg7bisrKXt2YXIgaT1yW25dO2lmKHZv aWQgMD09PWlbMF0udHJhY2UuYmFzZSlmb3IodmFyIG89bmV3IGMoW2ldLHtwb3NBeGlzOmUs c2VwTmVnVmFsOiEwLG92ZXJsYXBOb01lcmdlOiEwfSkscz0wO3M8aS5sZW5ndGg7cysrKXt2 YXIgbD1pW3NdO2lmKGwucCE9PWEpe3ZhciB1PW8ucHV0KGwucCxsLmIrbC5zKTt1JiYobC5i PXUpfX19fShvLGUpLGkubm9ybT8odihvKSx5KHIsbyxpKSk6ZyhyLG8pfSh0LGUscixfLHUp LGIubGVuZ3RoJiZmKGUscixiLHUpO2JyZWFrO2Nhc2Uic3RhY2siOmNhc2UicmVsYXRpdmUi OmZvcihiPVtdLF89W10sdz0wO3c8by5sZW5ndGg7dysrKXZvaWQgMD09PShUPW9bd10pWzBd LnRyYWNlLmJhc2U/Xy5wdXNoKFQpOmIucHVzaChUKTtfLmxlbmd0aCYmZnVuY3Rpb24odCxl LHIsbixpKXt2YXIgbz1uZXcgYyhuLHtwb3NBeGlzOmUsc2VwTmVnVmFsOiJyZWxhdGl2ZSI9 PT1pLm1vZGUsb3ZlcmxhcE5vTWVyZ2U6IShpLm5vcm18fCJzdGFjayI9PT1pLm1vZGV8fCJy ZWxhdGl2ZSI9PT1pLm1vZGUpfSk7aChlLG8saSksZnVuY3Rpb24odCxlLHIpe3ZhciBuLGks byxsLGMsdSxmPXgodCksaD1lLnRyYWNlcztmb3IobD0wO2w8aC5sZW5ndGg7bCsrKWlmKG49 aFtsXSwiZnVubmVsIj09PShpPW5bMF0udHJhY2UpLnR5cGUpZm9yKGM9MDtjPG4ubGVuZ3Ro O2MrKykodT1uW2NdKS5zIT09YSYmZS5wdXQodS5wLC0uNSp1LnMpO2ZvcihsPTA7bDxoLmxl bmd0aDtsKyspe249aFtsXSxpPW5bMF0udHJhY2Usbz0iZnVubmVsIj09PWkudHlwZTt2YXIg cD1bXTtmb3IoYz0wO2M8bi5sZW5ndGg7YysrKWlmKCh1PW5bY10pLnMhPT1hKXt2YXIgZDtk PW8/dS5zOnUucyt1LmI7dmFyIG09ZS5wdXQodS5wLGQpLGc9bStkO3UuYj1tLHVbZl09Zyxy Lm5vcm18fChwLnB1c2goZyksdS5oYXNCJiZwLnB1c2gobSkpfXIubm9ybXx8KGkuX2V4dHJl bWVzW3QuX2lkXT1zLmZpbmRFeHRyZW1lcyh0LHAse3RvemVybzohMCxwYWRkZWQ6ITB9KSl9 fShyLG8saSk7Zm9yKHZhciBsPTA7bDxuLmxlbmd0aDtsKyspZm9yKHZhciB1PW5bbF0sZj0w O2Y8dS5sZW5ndGg7ZisrKXt2YXIgcD11W2ZdO2lmKHAucyE9PWEpcC5iK3Aucz09PW8uZ2V0 KHAucCxwLnMpJiYocC5fb3V0bW9zdD0hMCl9aS5ub3JtJiZ5KHIsbyxpKX0oMCxlLHIsXyx1 KSxiLmxlbmd0aCYmZihlLHIsYix1KX0hZnVuY3Rpb24odCxlKXt2YXIgcixpLGEsbz14KGUp LHM9e30sbD0xLzAsYz0tMS8wO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspZm9yKGE9dFtyXSxp PTA7aTxhLmxlbmd0aDtpKyspe3ZhciB1PWFbaV0ucDtuKHUpJiYobD1NYXRoLm1pbihsLHUp LGM9TWF0aC5tYXgoYyx1KSl9dmFyIGY9MWU0LyhjLWwpLGg9cy5yb3VuZD1mdW5jdGlvbih0 KXtyZXR1cm4gU3RyaW5nKE1hdGgucm91bmQoZioodC1sKSkpfTtmb3Iocj0wO3I8dC5sZW5n dGg7cisrKXsoYT10W3JdKVswXS50LmV4dGVudHM9czt2YXIgcD1hWzBdLnQucG9mZnNldCxk PUFycmF5LmlzQXJyYXkocCk7Zm9yKGk9MDtpPGEubGVuZ3RoO2krKyl7dmFyIG09YVtpXSxn PW1bb10tbS53LzI7aWYobihnKSl7dmFyIHY9bVtvXSttLncvMix5PWgobS5wKTtzW3ldP3Nb eV09W01hdGgubWluKGcsc1t5XVswXSksTWF0aC5tYXgodixzW3ldWzFdKV06c1t5XT1bZyx2 XX1tLnAwPW0ucCsoZD9wW2ldOnApLG0ucDE9bS5wMCttLncsbS5zMD1tLmIsbS5zMT1tLnMw K20uc319fShvLGUpfX1mdW5jdGlvbiBmKHQsZSxyLG4pe2Zvcih2YXIgaT0wO2k8ci5sZW5n dGg7aSsrKXt2YXIgYT1yW2ldLG89bmV3IGMoW2FdLHtwb3NBeGlzOnQsc2VwTmVnVmFsOiEx LG92ZXJsYXBOb01lcmdlOiFuLm5vcm19KTtoKHQsbyxuKSxuLm5vcm0/KHYobykseShlLG8s bikpOmcoZSxvKX19ZnVuY3Rpb24gaCh0LGUscil7Zm9yKHZhciBuPWUubWluRGlmZixpPWUu dHJhY2VzLGE9biooMS1yLmdhcCksbz1hKigxLShyLmdyb3VwZ2FwfHwwKSkscz0tby8yLGw9 MDtsPGkubGVuZ3RoO2wrKyl7dmFyIGM9aVtsXVswXS50O2MuYmFyd2lkdGg9byxjLnBvZmZz ZXQ9cyxjLmJhcmdyb3Vwd2lkdGg9YSxjLmJhcmRlbHRhPW59ZS5iaW5XaWR0aD1pWzBdWzBd LnQuYmFyd2lkdGgvMTAwLHAoZSksZCh0LGUpLG0odCxlKX1mdW5jdGlvbiBwKHQpe3ZhciBl LHIsYT10LnRyYWNlcztmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKXt2YXIgbyxzPWFbZV0sbD1z WzBdLGM9bC50cmFjZSx1PWwudCxmPWMuX29mZnNldHx8Yy5vZmZzZXQsaD11LnBvZmZzZXQ7 aWYoaShmKSl7Zm9yKG89QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZiwwLHMubGVuZ3Ro KSxyPTA7cjxvLmxlbmd0aDtyKyspbihvW3JdKXx8KG9bcl09aCk7Zm9yKHI9by5sZW5ndGg7 cjxzLmxlbmd0aDtyKyspby5wdXNoKGgpO3UucG9mZnNldD1vfWVsc2Ugdm9pZCAwIT09ZiYm KHUucG9mZnNldD1mKTt2YXIgcD1jLl93aWR0aHx8Yy53aWR0aCxkPXUuYmFyd2lkdGg7aWYo aShwKSl7dmFyIG09QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwocCwwLHMubGVuZ3RoKTtm b3Iocj0wO3I8bS5sZW5ndGg7cisrKW4obVtyXSl8fChtW3JdPWQpO2ZvcihyPW0ubGVuZ3Ro O3I8cy5sZW5ndGg7cisrKW0ucHVzaChkKTtpZih1LmJhcndpZHRoPW0sdm9pZCAwPT09Zil7 Zm9yKG89W10scj0wO3I8cy5sZW5ndGg7cisrKW8ucHVzaChoKyhkLW1bcl0pLzIpO3UucG9m ZnNldD1vfX1lbHNlIHZvaWQgMCE9PXAmJih1LmJhcndpZHRoPXAsdm9pZCAwPT09ZiYmKHUu cG9mZnNldD1oKyhkLXApLzIpKX19ZnVuY3Rpb24gZCh0LGUpe2Zvcih2YXIgcj1lLnRyYWNl cyxuPXgodCksaT0wO2k8ci5sZW5ndGg7aSsrKWZvcih2YXIgYT1yW2ldLG89YVswXS50LHM9 by5wb2Zmc2V0LGw9QXJyYXkuaXNBcnJheShzKSxjPW8uYmFyd2lkdGgsdT1BcnJheS5pc0Fy cmF5KGMpLGY9MDtmPGEubGVuZ3RoO2YrKyl7dmFyIGg9YVtmXSxwPWgudz11P2NbZl06Yzto W25dPWgucCsobD9zW2ZdOnMpK3AvMn19ZnVuY3Rpb24gbSh0LGUscil7dmFyIG49ZS50cmFj ZXMsaT1lLm1pbkRpZmYvMjtzLm1pbkR0aWNrKHQsZS5taW5EaWZmLGUuZGlzdGluY3RQb3Np dGlvbnNbMF0scik7Zm9yKHZhciBhPTA7YTxuLmxlbmd0aDthKyspe3ZhciBvLGwsYyx1LGY9 blthXSxoPWZbMF0scD1oLnRyYWNlLGQ9W107Zm9yKHU9MDt1PGYubGVuZ3RoO3UrKylsPShv PWZbdV0pLnAtaSxjPW8ucCtpLGQucHVzaChsLGMpO2lmKHAud2lkdGh8fHAub2Zmc2V0KXt2 YXIgbT1oLnQsZz1tLnBvZmZzZXQsdj1tLmJhcndpZHRoLHk9QXJyYXkuaXNBcnJheShnKSx4 PUFycmF5LmlzQXJyYXkodik7Zm9yKHU9MDt1PGYubGVuZ3RoO3UrKyl7bz1mW3VdO3ZhciBi PXk/Z1t1XTpnLF89eD92W3VdOnY7Yz0obD1vLnArYikrXyxkLnB1c2gobCxjKX19cC5fZXh0 cmVtZXNbdC5faWRdPXMuZmluZEV4dHJlbWVzKHQsZCx7cGFkZGVkOiExfSl9fWZ1bmN0aW9u IGcodCxlKXtmb3IodmFyIHI9ZS50cmFjZXMsbj14KHQpLGk9MDtpPHIubGVuZ3RoO2krKyl7 Zm9yKHZhciBhPXJbaV0sbz1hWzBdLnRyYWNlLGw9W10sYz0hMSx1PTA7dTxhLmxlbmd0aDt1 Kyspe3ZhciBmPWFbdV0saD1mLmIscD1oK2YucztmW25dPXAsbC5wdXNoKHApLGYuaGFzQiYm bC5wdXNoKGgpLGYuaGFzQiYmZi5ifHwoYz0hMCl9by5fZXh0cmVtZXNbdC5faWRdPXMuZmlu ZEV4dHJlbWVzKHQsbCx7dG96ZXJvOmMscGFkZGVkOiEwfSl9fWZ1bmN0aW9uIHYodCl7Zm9y KHZhciBlPXQudHJhY2VzLHI9MDtyPGUubGVuZ3RoO3IrKylmb3IodmFyIG49ZVtyXSxpPTA7 aTxuLmxlbmd0aDtpKyspe3ZhciBvPW5baV07by5zIT09YSYmdC5wdXQoby5wLG8uYitvLnMp fX1mdW5jdGlvbiB5KHQsZSxyKXt2YXIgaT1lLnRyYWNlcyxvPXgodCksbD0iZnJhY3Rpb24i PT09ci5ub3JtPzE6MTAwLGM9bC8xZTksdT10LmwyYyh0LmMybCgwKSksZj0ic3RhY2siPT09 ci5tb2RlP2w6dTtmdW5jdGlvbiBoKGUpe3JldHVybiBuKHQuYzJsKGUpKSYmKGU8dS1jfHxl PmYrY3x8IW4odSkpfWZvcih2YXIgcD0wO3A8aS5sZW5ndGg7cCsrKXtmb3IodmFyIGQ9aVtw XSxtPWRbMF0udHJhY2UsZz1bXSx2PSExLHk9ITEsYj0wO2I8ZC5sZW5ndGg7YisrKXt2YXIg Xz1kW2JdO2lmKF8ucyE9PWEpe3ZhciB3PU1hdGguYWJzKGwvZS5nZXQoXy5wLF8ucykpO18u Yio9dyxfLnMqPXc7dmFyIFQ9Xy5iLGs9VCtfLnM7X1tvXT1rLGcucHVzaChrKSx5PXl8fGgo ayksXy5oYXNCJiYoZy5wdXNoKFQpLHk9eXx8aChUKSksXy5oYXNCJiZfLmJ8fCh2PSEwKX19 bS5fZXh0cmVtZXNbdC5faWRdPXMuZmluZEV4dHJlbWVzKHQsZyx7dG96ZXJvOnYscGFkZGVk Onl9KX19ZnVuY3Rpb24geCh0KXtyZXR1cm4gdC5faWQuY2hhckF0KDApfWUuZXhwb3J0cz17 Y3Jvc3NUcmFjZUNhbGM6ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9ZS54YXhpcyxuPWUueWF4 aXMsaT10Ll9mdWxsTGF5b3V0LGE9dC5fZnVsbERhdGEscz10LmNhbGNkYXRhLGw9W10sYz1b XSxmPTA7ZjxhLmxlbmd0aDtmKyspe3ZhciBoPWFbZl07aWYoITA9PT1oLnZpc2libGUmJm8u dHJhY2VJcyhoLCJiYXIiKSYmaC54YXhpcz09PXIuX2lkJiZoLnlheGlzPT09bi5faWQmJigi aCI9PT1oLm9yaWVudGF0aW9uP2wucHVzaChzW2ZdKTpjLnB1c2goc1tmXSksaC5fY29tcHV0 ZVBoKSlmb3IodmFyIHA9dC5jYWxjZGF0YVtmXSxkPTA7ZDxwLmxlbmd0aDtkKyspImZ1bmN0 aW9uIj09dHlwZW9mIHBbZF0ucGgwJiYocFtkXS5waDA9cFtkXS5waDAoKSksImZ1bmN0aW9u Ij09dHlwZW9mIHBbZF0ucGgxJiYocFtkXS5waDE9cFtkXS5waDEoKSl9dmFyIG09e3hDYXQ6 ImNhdGVnb3J5Ij09PXIudHlwZXx8Im11bHRpY2F0ZWdvcnkiPT09ci50eXBlLHlDYXQ6ImNh dGVnb3J5Ij09PW4udHlwZXx8Im11bHRpY2F0ZWdvcnkiPT09bi50eXBlLG1vZGU6aS5iYXJt b2RlLG5vcm06aS5iYXJub3JtLGdhcDppLmJhcmdhcCxncm91cGdhcDppLmJhcmdyb3VwZ2Fw fTt1KHQscixuLGMsbSksdSh0LG4scixsLG0pfSxzZXRHcm91cFBvc2l0aW9uczp1fX0seyIu Li8uLi9jb25zdGFudHMvbnVtZXJpY2FsIjo0NzksIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9w bG90cy9jYXJ0ZXNpYW4vYXhlcyI6NTU0LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vY29uc3Ry YWludHMiOjU2MiwiLi4vLi4vcmVnaXN0cnkiOjYzOCwiLi9zaWV2ZS5qcyI6NjYxLCJmYXN0 LWlzbnVtZXJpYyI6MTkwfV0sNjUyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGE9dCgi Li4vLi4vcmVnaXN0cnkiKSxvPXQoIi4uL3NjYXR0ZXIveHlfZGVmYXVsdHMiKSxzPXQoIi4u L3NjYXR0ZXIvcGVyaW9kX2RlZmF1bHRzIiksbD10KCIuL3N0eWxlX2RlZmF1bHRzIiksYz10 KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vY29uc3RyYWludHMiKS5nZXRBeGlzR3JvdXAsdT10 KCIuL2F0dHJpYnV0ZXMiKSxmPW4uY29lcmNlRm9udDtmdW5jdGlvbiBoKHQsZSxyLG4pe3Zh ciBpPWUub3JpZW50YXRpb24sYT1lW3t2OiJ4IixoOiJ5In1baV0rImF4aXMiXSxvPWMocixh KStpLHM9ci5fYWxpZ25tZW50T3B0c3x8e30sbD1uKCJhbGlnbm1lbnRncm91cCIpLHU9c1tv XTt1fHwodT1zW29dPXt9KTt2YXIgZj11W2xdO2Y/Zi50cmFjZXMucHVzaChlKTpmPXVbbF09 e3RyYWNlczpbZV0sYWxpZ25tZW50SW5kZXg6T2JqZWN0LmtleXModSkubGVuZ3RoLG9mZnNl dEdyb3Vwczp7fX07dmFyIGg9bigib2Zmc2V0Z3JvdXAiKSxwPWYub2Zmc2V0R3JvdXBzLGQ9 cFtoXTtoJiYoZHx8KGQ9cFtoXT17b2Zmc2V0SW5kZXg6T2JqZWN0LmtleXMocCkubGVuZ3Ro fSksZS5fb2Zmc2V0SW5kZXg9ZC5vZmZzZXRJbmRleCl9ZnVuY3Rpb24gcCh0LGUscixpLGEs byl7dmFyIHM9ISghMT09PShvPW98fHt9KS5tb2R1bGVIYXNTZWxlY3RlZCksbD0hKCExPT09 by5tb2R1bGVIYXNVbnNlbGVjdGVkKSxjPSEoITE9PT1vLm1vZHVsZUhhc0NvbnN0cmFpbiks dT0hKCExPT09by5tb2R1bGVIYXNDbGlwb25heGlzKSxoPSEoITE9PT1vLm1vZHVsZUhhc1Rl eHRhbmdsZSkscD0hKCExPT09by5tb2R1bGVIYXNJbnNpZGVhbmNob3IpLGQ9ISFvLmhhc1Bh dGhiYXIsbT1BcnJheS5pc0FycmF5KGEpfHwiYXV0byI9PT1hLGc9bXx8Imluc2lkZSI9PT1h LHY9bXx8Im91dHNpZGUiPT09YTtpZihnfHx2KXt2YXIgeT1mKGksInRleHRmb250IixyLmZv bnQpLHg9bi5leHRlbmRGbGF0KHt9LHkpLGI9ISh0LnRleHRmb250JiZ0LnRleHRmb250LmNv bG9yKTtpZihiJiZkZWxldGUgeC5jb2xvcixmKGksImluc2lkZXRleHRmb250Iix4KSxkKXt2 YXIgXz1uLmV4dGVuZEZsYXQoe30seSk7YiYmZGVsZXRlIF8uY29sb3IsZihpLCJwYXRoYmFy LnRleHRmb250IixfKX12JiZmKGksIm91dHNpZGV0ZXh0Zm9udCIseSkscyYmaSgic2VsZWN0 ZWQudGV4dGZvbnQuY29sb3IiKSxsJiZpKCJ1bnNlbGVjdGVkLnRleHRmb250LmNvbG9yIiks YyYmaSgiY29uc3RyYWludGV4dCIpLHUmJmkoImNsaXBvbmF4aXMiKSxoJiZpKCJ0ZXh0YW5n bGUiKSxpKCJ0ZXh0dGVtcGxhdGUiKX1nJiZwJiZpKCJpbnNpZGV0ZXh0YW5jaG9yIil9ZS5l eHBvcnRzPXtzdXBwbHlEZWZhdWx0czpmdW5jdGlvbih0LGUscixjKXtmdW5jdGlvbiBmKHIs aSl7cmV0dXJuIG4uY29lcmNlKHQsZSx1LHIsaSl9aWYobyh0LGUsYyxmKSl7cyh0LGUsYyxm KSxmKCJ4aG92ZXJmb3JtYXQiKSxmKCJ5aG92ZXJmb3JtYXQiKSxmKCJvcmllbnRhdGlvbiIs ZS54JiYhZS55PyJoIjoidiIpLGYoImJhc2UiKSxmKCJvZmZzZXQiKSxmKCJ3aWR0aCIpLGYo InRleHQiKSxmKCJob3ZlcnRleHQiKSxmKCJob3ZlcnRlbXBsYXRlIik7dmFyIGg9ZigidGV4 dHBvc2l0aW9uIik7cCh0LGUsYyxmLGgse21vZHVsZUhhc1NlbGVjdGVkOiEwLG1vZHVsZUhh c1Vuc2VsZWN0ZWQ6ITAsbW9kdWxlSGFzQ29uc3RyYWluOiEwLG1vZHVsZUhhc0NsaXBvbmF4 aXM6ITAsbW9kdWxlSGFzVGV4dGFuZ2xlOiEwLG1vZHVsZUhhc0luc2lkZWFuY2hvcjohMH0p LGwodCxlLGYscixjKTt2YXIgZD0oZS5tYXJrZXIubGluZXx8e30pLmNvbG9yLG09YS5nZXRD b21wb25lbnRNZXRob2QoImVycm9yYmFycyIsInN1cHBseURlZmF1bHRzIik7bSh0LGUsZHx8 aS5kZWZhdWx0TGluZSx7YXhpczoieSJ9KSxtKHQsZSxkfHxpLmRlZmF1bHRMaW5lLHtheGlz OiJ4Iixpbmhlcml0OiJ5In0pLG4uY29lcmNlU2VsZWN0aW9uTWFya2VyT3BhY2l0eShlLGYp fWVsc2UgZS52aXNpYmxlPSExfSxjcm9zc1RyYWNlRGVmYXVsdHM6ZnVuY3Rpb24odCxlKXt2 YXIgcjtmdW5jdGlvbiBpKHQpe3JldHVybiBuLmNvZXJjZShyLl9pbnB1dCxyLHUsdCl9aWYo Imdyb3VwIj09PWUuYmFybW9kZSlmb3IodmFyIGE9MDthPHQubGVuZ3RoO2ErKykiYmFyIj09 PShyPXRbYV0pLnR5cGUmJihyLl9pbnB1dCxoKDAscixlLGkpKX0saGFuZGxlR3JvdXBpbmdE ZWZhdWx0czpoLGhhbmRsZVRleHQ6cH19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6MzY2 LCIuLi8uLi9saWIiOjUwMywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2NvbnN0cmFpbnRzIjo1 NjIsIi4uLy4uL3JlZ2lzdHJ5Ijo2MzgsIi4uL3NjYXR0ZXIvcGVyaW9kX2RlZmF1bHRzIjo5 NDcsIi4uL3NjYXR0ZXIveHlfZGVmYXVsdHMiOjk1NCwiLi9hdHRyaWJ1dGVzIjo2NDgsIi4v c3R5bGVfZGVmYXVsdHMiOjY2M31dLDY1MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0Lng9InhWYWwiaW4gZT9lLnhW YWw6ZS54LHQueT0ieVZhbCJpbiBlP2UueVZhbDplLnksZS54YSYmKHQueGF4aXM9ZS54YSks ZS55YSYmKHQueWF4aXM9ZS55YSksImgiPT09ci5vcmllbnRhdGlvbj8odC5sYWJlbD10Lnks dC52YWx1ZT10LngpOih0LmxhYmVsPXQueCx0LnZhbHVlPXQueSksdH19LHt9XSw2NTQ6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxp PXQoInRpbnljb2xvcjIiKSxhPXQoIi4uLy4uL2xpYiIpLmlzQXJyYXlPclR5cGVkQXJyYXk7 ci5jb2VyY2VTdHJpbmc9ZnVuY3Rpb24odCxlLHIpe2lmKCJzdHJpbmciPT10eXBlb2YgZSl7 aWYoZXx8IXQubm9CbGFuaylyZXR1cm4gZX1lbHNlIGlmKCgibnVtYmVyIj09dHlwZW9mIGV8 fCEwPT09ZSkmJiF0LnN0cmljdClyZXR1cm4gU3RyaW5nKGUpO3JldHVybiB2b2lkIDAhPT1y P3I6dC5kZmx0fSxyLmNvZXJjZU51bWJlcj1mdW5jdGlvbih0LGUscil7aWYobihlKSl7ZT0r ZTt2YXIgaT10Lm1pbixhPXQubWF4O2lmKCEodm9pZCAwIT09aSYmZTxpfHx2b2lkIDAhPT1h JiZlPmEpKXJldHVybiBlfXJldHVybiB2b2lkIDAhPT1yP3I6dC5kZmx0fSxyLmNvZXJjZUNv bG9yPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gaShlKS5pc1ZhbGlkKCk/ZTp2b2lkIDAhPT1y P3I6dC5kZmx0fSxyLmNvZXJjZUVudW1lcmF0ZWQ9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0 LmNvZXJjZU51bWJlciYmKGU9K2UpLC0xIT09dC52YWx1ZXMuaW5kZXhPZihlKT9lOnZvaWQg MCE9PXI/cjp0LmRmbHR9LHIuZ2V0VmFsdWU9ZnVuY3Rpb24odCxlKXt2YXIgcjtyZXR1cm4g QXJyYXkuaXNBcnJheSh0KT9lPHQubGVuZ3RoJiYocj10W2VdKTpyPXQscn0sci5nZXRMaW5l V2lkdGg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gMDxlLm1sdz9lLm1sdzphKHQubWFya2VyLmxp bmUud2lkdGgpPzA6dC5tYXJrZXIubGluZS53aWR0aH19LHsiLi4vLi4vbGliIjo1MDMsImZh c3QtaXNudW1lcmljIjoxOTAsdGlueWNvbG9yMjozMTJ9XSw2NTU6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9meCIpLGk9dCgiLi4v Li4vcmVnaXN0cnkiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxvPXQoIi4uLy4u L2xpYiIpLmZpbGxUZXh0LHM9dCgiLi9oZWxwZXJzIikuZ2V0TGluZVdpZHRoLGw9dCgiLi4v Li4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKS5ob3ZlckxhYmVsVGV4dCxjPXQoIi4uLy4uL2Nv bnN0YW50cy9udW1lcmljYWwiKS5CQUROVU07ZnVuY3Rpb24gdSh0LGUscixpLGEpe3ZhciBz LHUsZixoLHAsZCxtLGc9dC5jZCx2PWdbMF0udHJhY2UseT1nWzBdLnQseD0iY2xvc2VzdCI9 PT1pLGI9IndhdGVyZmFsbCI9PT12LnR5cGUsXz10Lm1heEhvdmVyRGlzdGFuY2Usdz10Lm1h eFNwaWtlRGlzdGFuY2U7ImgiPT09di5vcmllbnRhdGlvbj8ocz1yLHU9ZSxmPSJ5IixoPSJ4 IixwPXosZD1JKToocz1lLHU9cixmPSJ4IixoPSJ5IixkPXoscD1JKTt2YXIgVD12W2YrInBl cmlvZCJdLGs9eHx8VDtmdW5jdGlvbiBBKHQpe3JldHVybiBTKHQsLTEpfWZ1bmN0aW9uIE0o dCl7cmV0dXJuIFModCwxKX1mdW5jdGlvbiBTKHQsZSl7dmFyIHI9dC53O3JldHVybiB0W2Zd K2Uqci8yfWZ1bmN0aW9uIEUodCl7cmV0dXJuIHRbZisiRW5kIl0tdFtmKyJTdGFydCJdfXZh ciBMPXg/QTpUP2Z1bmN0aW9uKHQpe3JldHVybiB0LnAtRSh0KS8yfTpmdW5jdGlvbih0KXty ZXR1cm4gTWF0aC5taW4oQSh0KSx0LnAteS5iYXJkZWx0YS8yKX0sQz14P006VD9mdW5jdGlv bih0KXtyZXR1cm4gdC5wK0UodCkvMn06ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubWF4KE0o dCksdC5wK3kuYmFyZGVsdGEvMil9O2Z1bmN0aW9uIFAodCxlLHIpe3JldHVybiBhLmZpbml0 ZVJhbmdlJiYocj0wKSxuLmluYm94KHQtcyxlLXMscitNYXRoLm1pbigxLE1hdGguYWJzKGUt dCkvbSktMSl9ZnVuY3Rpb24gSSh0KXtyZXR1cm4gUChMKHQpLEModCksXyl9ZnVuY3Rpb24g Tyh0KXt2YXIgZT10W2hdO2lmKGIpe3ZhciByPU1hdGguYWJzKHQucmF3Uyl8fDA7dT4wP2Ur PXI6dTwwJiYoZS09cil9cmV0dXJuIGV9ZnVuY3Rpb24geih0KXt2YXIgZT11LHI9dC5iLGk9 Tyh0KTtyZXR1cm4gbi5pbmJveChyLWUsaS1lLF8rKGktZSkvKGktciktMSl9dmFyIEQ9dFtm KyJhIl0sUj10W2grImEiXTttPU1hdGguYWJzKEQucjJjKEQucmFuZ2VbMV0pLUQucjJjKEQu cmFuZ2VbMF0pKTt2YXIgRj1uLmdldERpc3RhbmNlRnVuY3Rpb24oaSxwLGQsKGZ1bmN0aW9u KHQpe3JldHVybihwKHQpK2QodCkpLzJ9KSk7aWYobi5nZXRDbG9zZXN0KGcsRix0KSwhMSE9 PXQuaW5kZXgmJmdbdC5pbmRleF0ucCE9PWMpe2t8fChMPWZ1bmN0aW9uKHQpe3JldHVybiBN YXRoLm1pbihBKHQpLHQucC15LmJhcmdyb3Vwd2lkdGgvMil9LEM9ZnVuY3Rpb24odCl7cmV0 dXJuIE1hdGgubWF4KE0odCksdC5wK3kuYmFyZ3JvdXB3aWR0aC8yKX0pO3ZhciBCPWdbdC5p bmRleF0sTj12LmJhc2U/Qi5iK0IuczpCLnM7dFtoKyIwIl09dFtoKyIxIl09Ui5jMnAoQlto XSwhMCksdFtoKyJMYWJlbFZhbCJdPU47dmFyIGo9eS5leHRlbnRzW3kuZXh0ZW50cy5yb3Vu ZChCLnApXTt0W2YrIjAiXT1ELmMycCh4P0woQik6alswXSwhMCksdFtmKyIxIl09RC5jMnAo eD9DKEIpOmpbMV0sITApO3ZhciBVPXZvaWQgMCE9PUIub3JpZ19wO3JldHVybiB0W2YrIkxh YmVsVmFsIl09VT9CLm9yaWdfcDpCLnAsdC5sYWJlbExhYmVsPWwoRCx0W2YrIkxhYmVsVmFs Il0sdltmKyJob3ZlcmZvcm1hdCJdKSx0LnZhbHVlTGFiZWw9bChSLHRbaCsiTGFiZWxWYWwi XSx2W2grImhvdmVyZm9ybWF0Il0pLHQuYmFzZUxhYmVsPWwoUixCLmIsdltoKyJob3ZlcmZv cm1hdCJdKSx0LnNwaWtlRGlzdGFuY2U9KGZ1bmN0aW9uKHQpe3ZhciBlPXUscj10LmIsaT1P KHQpO3JldHVybiBuLmluYm94KHItZSxpLWUsdysoaS1lKS8oaS1yKS0xKX0oQikrZnVuY3Rp b24odCl7cmV0dXJuIFAoQSh0KSxNKHQpLHcpfShCKSkvMix0W2YrIlNwaWtlIl09RC5jMnAo Qi5wLCEwKSxvKEIsdix0KSx0LmhvdmVydGVtcGxhdGU9di5ob3ZlcnRlbXBsYXRlLHR9fWZ1 bmN0aW9uIGYodCxlKXt2YXIgcj1lLm1jY3x8dC5tYXJrZXIuY29sb3Isbj1lLm1sY2N8fHQu bWFya2VyLmxpbmUuY29sb3IsaT1zKHQsZSk7cmV0dXJuIGEub3BhY2l0eShyKT9yOmEub3Bh Y2l0eShuKSYmaT9uOnZvaWQgMH1lLmV4cG9ydHM9e2hvdmVyUG9pbnRzOmZ1bmN0aW9uKHQs ZSxyLG4sYSl7dmFyIG89dSh0LGUscixuLGEpO2lmKG8pe3ZhciBzPW8uY2QsbD1zWzBdLnRy YWNlLGM9c1tvLmluZGV4XTtyZXR1cm4gby5jb2xvcj1mKGwsYyksaS5nZXRDb21wb25lbnRN ZXRob2QoImVycm9yYmFycyIsImhvdmVySW5mbyIpKGMsbCxvKSxbb119fSxob3Zlck9uQmFy czp1LGdldFRyYWNlQ29sb3I6Zn19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6MzY2LCIu Li8uLi9jb21wb25lbnRzL2Z4Ijo0MDYsIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiOjQ3 OSwiLi4vLi4vbGliIjo1MDMsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo1NTQsIi4u Ly4uL3JlZ2lzdHJ5Ijo2MzgsIi4vaGVscGVycyI6NjU0fV0sNjU2OltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMi KSxsYXlvdXRBdHRyaWJ1dGVzOnQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZh dWx0czp0KCIuL2RlZmF1bHRzIikuc3VwcGx5RGVmYXVsdHMsY3Jvc3NUcmFjZURlZmF1bHRz OnQoIi4vZGVmYXVsdHMiKS5jcm9zc1RyYWNlRGVmYXVsdHMsc3VwcGx5TGF5b3V0RGVmYXVs dHM6dCgiLi9sYXlvdXRfZGVmYXVsdHMiKSxjYWxjOnQoIi4vY2FsYyIpLGNyb3NzVHJhY2VD YWxjOnQoIi4vY3Jvc3NfdHJhY2VfY2FsYyIpLmNyb3NzVHJhY2VDYWxjLGNvbG9yYmFyOnQo Ii4uL3NjYXR0ZXIvbWFya2VyX2NvbG9yYmFyIiksYXJyYXlzVG9DYWxjZGF0YTp0KCIuL2Fy cmF5c190b19jYWxjZGF0YSIpLHBsb3Q6dCgiLi9wbG90IikucGxvdCxzdHlsZTp0KCIuL3N0 eWxlIikuc3R5bGUsc3R5bGVPblNlbGVjdDp0KCIuL3N0eWxlIikuc3R5bGVPblNlbGVjdCxo b3ZlclBvaW50czp0KCIuL2hvdmVyIikuaG92ZXJQb2ludHMsZXZlbnREYXRhOnQoIi4vZXZl bnRfZGF0YSIpLHNlbGVjdFBvaW50czp0KCIuL3NlbGVjdCIpLG1vZHVsZVR5cGU6InRyYWNl IixuYW1lOiJiYXIiLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIp LGNhdGVnb3JpZXM6WyJiYXItbGlrZSIsImNhcnRlc2lhbiIsInN2ZyIsImJhciIsIm9yaWVu dGVkIiwiZXJyb3JCYXJzT0siLCJzaG93TGVnZW5kIiwiem9vbVNjYWxlIl0sYW5pbWF0YWJs ZTohMCxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iOjU2OCwiLi4vc2NhdHRl ci9tYXJrZXJfY29sb3JiYXIiOjk0NSwiLi9hcnJheXNfdG9fY2FsY2RhdGEiOjY0NywiLi9h dHRyaWJ1dGVzIjo2NDgsIi4vY2FsYyI6NjQ5LCIuL2Nyb3NzX3RyYWNlX2NhbGMiOjY1MSwi Li9kZWZhdWx0cyI6NjUyLCIuL2V2ZW50X2RhdGEiOjY1MywiLi9ob3ZlciI6NjU1LCIuL2xh eW91dF9hdHRyaWJ1dGVzIjo2NTcsIi4vbGF5b3V0X2RlZmF1bHRzIjo2NTgsIi4vcGxvdCI6 NjU5LCIuL3NlbGVjdCI6NjYwLCIuL3N0eWxlIjo2NjJ9XSw2NTc6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtiYXJtb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVk Iix2YWx1ZXM6WyJzdGFjayIsImdyb3VwIiwib3ZlcmxheSIsInJlbGF0aXZlIl0sZGZsdDoi Z3JvdXAiLGVkaXRUeXBlOiJjYWxjIn0sYmFybm9ybTp7dmFsVHlwZToiZW51bWVyYXRlZCIs dmFsdWVzOlsiIiwiZnJhY3Rpb24iLCJwZXJjZW50Il0sZGZsdDoiIixlZGl0VHlwZToiY2Fs YyJ9LGJhcmdhcDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxlZGl0VHlwZToiY2Fs YyJ9LGJhcmdyb3VwZ2FwOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MCxl ZGl0VHlwZToiY2FsYyJ9fX0se31dLDY1ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbj10KCIuLi8uLi9yZWdpc3RyeSIpLGk9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFu L2F4ZXMiKSxhPXQoIi4uLy4uL2xpYiIpLG89dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpO2Uu ZXhwb3J0cz1mdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gcyhyLG4pe3JldHVybiBhLmNvZXJj ZSh0LGUsbyxyLG4pfWZvcih2YXIgbD0hMSxjPSExLHU9ITEsZj17fSxoPXMoImJhcm1vZGUi KSxwPTA7cDxyLmxlbmd0aDtwKyspe3ZhciBkPXJbcF07aWYobi50cmFjZUlzKGQsImJhciIp JiZkLnZpc2libGUpe2lmKGw9ITAsImdyb3VwIj09PWgpe3ZhciBtPWQueGF4aXMrZC55YXhp cztmW21dJiYodT0hMCksZlttXT0hMH1pZihkLnZpc2libGUmJiJoaXN0b2dyYW0iPT09ZC50 eXBlKSJjYXRlZ29yeSIhPT1pLmdldEZyb21JZCh7X2Z1bGxMYXlvdXQ6ZX0sZFsidiI9PT1k Lm9yaWVudGF0aW9uPyJ4YXhpcyI6InlheGlzIl0pLnR5cGUmJihjPSEwKX19bD8oIm92ZXJs YXkiIT09aCYmcygiYmFybm9ybSIpLHMoImJhcmdhcCIsYyYmIXU/MDouMikscygiYmFyZ3Jv dXBnYXAiKSk6ZGVsZXRlIGUuYmFybW9kZX19LHsiLi4vLi4vbGliIjo1MDMsIi4uLy4uL3Bs b3RzL2NhcnRlc2lhbi9heGVzIjo1NTQsIi4uLy4uL3JlZ2lzdHJ5Ijo2MzgsIi4vbGF5b3V0 X2F0dHJpYnV0ZXMiOjY1N31dLDY1OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCJAcGxvdGx5L2QzIiksaT10KCJmYXN0LWlzbnVtZXJpYyIpLGE9dCgiLi4vLi4v bGliIiksbz10KCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiKSxzPXQoIi4uLy4uL2NvbXBv bmVudHMvY29sb3IiKSxsPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLGM9dCgiLi4v Li4vcmVnaXN0cnkiKSx1PXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIikudGlja1Rl eHQsZj10KCIuL3VuaWZvcm1fdGV4dCIpLGg9Zi5yZWNvcmRNaW5UZXh0U2l6ZSxwPWYuY2xl YXJNaW5UZXh0U2l6ZSxkPXQoIi4vc3R5bGUiKSxtPXQoIi4vaGVscGVycyIpLGc9dCgiLi9j b25zdGFudHMiKSx2PXQoIi4vYXR0cmlidXRlcyIpLHk9di50ZXh0LHg9di50ZXh0cG9zaXRp b24sYj10KCIuLi8uLi9jb21wb25lbnRzL2Z4L2hlbHBlcnMiKS5hcHBlbmRBcnJheVBvaW50 VmFsdWUsXz1nLlRFWFRQQUQ7ZnVuY3Rpb24gdyh0KXtyZXR1cm4gdC5pZH1mdW5jdGlvbiBU KHQpe2lmKHQuaWRzKXJldHVybiB3fWZ1bmN0aW9uIGsodCxlKXtyZXR1cm4gdDxlPzE6LTF9 ZnVuY3Rpb24gQSh0LGUscixuKXt2YXIgaTtyZXR1cm4hZS51bmlmb3JtdGV4dC5tb2RlJiZN KHIpPyhuJiYoaT1uKCkpLHQudHJhbnNpdGlvbigpLmR1cmF0aW9uKHIuZHVyYXRpb24pLmVh c2Uoci5lYXNpbmcpLmVhY2goImVuZCIsKGZ1bmN0aW9uKCl7aSYmaSgpfSkpLmVhY2goImlu dGVycnVwdCIsKGZ1bmN0aW9uKCl7aSYmaSgpfSkpKTp0fWZ1bmN0aW9uIE0odCl7cmV0dXJu IHQmJnQuZHVyYXRpb24+MH1mdW5jdGlvbiBTKHQpe3JldHVybiJhdXRvIj09PXQ/MDp0fWZ1 bmN0aW9uIEUodCxlKXt2YXIgcj1NYXRoLlBJLzE4MCplLG49TWF0aC5hYnMoTWF0aC5zaW4o cikpLGk9TWF0aC5hYnMoTWF0aC5jb3MocikpO3JldHVybnt4OnQud2lkdGgqaSt0LmhlaWdo dCpuLHk6dC53aWR0aCpuK3QuaGVpZ2h0Kml9fWZ1bmN0aW9uIEwodCxlLHIsbixpLGEpe3Zh ciBvPSEhYS5pc0hvcml6b250YWwscz0hIWEuY29uc3RyYWluZWQsbD1hLmFuZ2xlfHwwLGM9 YS5hbmNob3J8fCJlbmQiLHU9ImVuZCI9PT1jLGY9InN0YXJ0Ij09PWMsaD0oKGEubGVmdFRv UmlnaHR8fDApKzEpLzIscD0xLWgsZD1pLndpZHRoLG09aS5oZWlnaHQsZz1NYXRoLmFicyhl LXQpLHY9TWF0aC5hYnMobi1yKSx5PWc+MipfJiZ2PjIqXz9fOjA7Zy09Mip5LHYtPTIqeTt2 YXIgeD1TKGwpOyJhdXRvIiE9PWx8fGQ8PWcmJm08PXZ8fCEoZD5nfHxtPnYpfHwoZD52fHxt PmcpJiZkPG09PWc8dnx8KHgrPTkwKTt2YXIgYj1FKGkseCksdz0xO3MmJih3PU1hdGgubWlu KDEsZy9iLngsdi9iLnkpKTt2YXIgVD1pLmxlZnQqcCtpLnJpZ2h0KmgsQT0oaS50b3AraS5i b3R0b20pLzIsTT0odCtfKSpwKyhlLV8pKmgsTD0ocituKS8yLEM9MCxQPTA7aWYoZnx8dSl7 dmFyIEk9KG8/Yi54OmIueSkvMixPPW8/ayh0LGUpOmsocixuKTtvP2Y/KE09dCtPKnksQz0t TypJKTooTT1lLU8qeSxDPU8qSSk6Zj8oTD1yK08qeSxQPS1PKkkpOihMPW4tTyp5LFA9TypJ KX1yZXR1cm57dGV4dFg6VCx0ZXh0WTpBLHRhcmdldFg6TSx0YXJnZXRZOkwsYW5jaG9yWDpD LGFuY2hvclk6UCxzY2FsZTp3LHJvdGF0ZTp4fX1lLmV4cG9ydHM9e3Bsb3Q6ZnVuY3Rpb24o dCxlLHIsZixnLHYpe3ZhciB3PWUueGF4aXMsQz1lLnlheGlzLFA9dC5fZnVsbExheW91dDtn fHwoZz17bW9kZTpQLmJhcm1vZGUsbm9ybTpQLmJhcm1vZGUsZ2FwOlAuYmFyZ2FwLGdyb3Vw Z2FwOlAuYmFyZ3JvdXBnYXB9LHAoImJhciIsUCkpO3ZhciBJPWEubWFrZVRyYWNlR3JvdXBz KGYsciwidHJhY2UgYmFycyIpLmVhY2goKGZ1bmN0aW9uKHIpe3ZhciBjPW4uc2VsZWN0KHRo aXMpLGY9clswXS50cmFjZSxwPSJ3YXRlcmZhbGwiPT09Zi50eXBlLEk9ImZ1bm5lbCI9PT1m LnR5cGUsTz0iYmFyIj09PWYudHlwZXx8SSx6PTA7cCYmZi5jb25uZWN0b3IudmlzaWJsZSYm ImJldHdlZW4iPT09Zi5jb25uZWN0b3IubW9kZSYmKHo9Zi5jb25uZWN0b3IubGluZS53aWR0 aC8yKTt2YXIgRD0iaCI9PT1mLm9yaWVudGF0aW9uLFI9TShnKSxGPWEuZW5zdXJlU2luZ2xl KGMsImciLCJwb2ludHMiKSxCPVQoZiksTj1GLnNlbGVjdEFsbCgiZy5wb2ludCIpLmRhdGEo YS5pZGVudGl0eSxCKTtOLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgicG9pbnQiLCEw KSxOLmV4aXQoKS5yZW1vdmUoKSxOLmVhY2goKGZ1bmN0aW9uKGMscCl7dmFyIFQsTSxJPW4u c2VsZWN0KHRoaXMpLEY9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9W10sYT1bXSxvPW4/ZTpy LHM9bj9yOmU7cmV0dXJuIGlbMF09by5jMnAodC5zMCwhMCksYVswXT1zLmMycCh0LnAwLCEw KSxpWzFdPW8uYzJwKHQuczEsITApLGFbMV09cy5jMnAodC5wMSwhMCksbj9baSxhXTpbYSxp XX0oYyx3LEMsRCksQj1GWzBdWzBdLE49RlswXVsxXSxqPUZbMV1bMF0sVT1GWzFdWzFdLFY9 MD09KEQ/Ti1COlUtaik7aWYoViYmTyYmbS5nZXRMaW5lV2lkdGgoZixjKSYmKFY9ITEpLFZ8 fChWPSEoaShCKSYmaShOKSYmaShqKSYmaShVKSkpLGMuaXNCbGFuaz1WLFYmJihEP049QjpV PWopLHomJiFWJiYoRD8oQi09ayhCLE4pKnosTis9ayhCLE4pKnopOihqLT1rKGosVSkqeixV Kz1rKGosVSkqeikpLCJ3YXRlcmZhbGwiPT09Zi50eXBlKXtpZighVil7dmFyIEg9ZltjLmRp cl0ubWFya2VyO1Q9SC5saW5lLndpZHRoLE09SC5jb2xvcn19ZWxzZSBUPW0uZ2V0TGluZVdp ZHRoKGYsYyksTT1jLm1jfHxmLm1hcmtlci5jb2xvcjtmdW5jdGlvbiBxKHQpe3ZhciBlPW4u cm91bmQoVC8yJTEsMik7cmV0dXJuIDA9PT1nLmdhcCYmMD09PWcuZ3JvdXBnYXA/bi5yb3Vu ZChNYXRoLnJvdW5kKHQpLWUsMik6dH1pZighdC5fY29udGV4dC5zdGF0aWNQbG90KXt2YXIg Rz1zLm9wYWNpdHkoTSk8MXx8VD4uMDE/cTpmdW5jdGlvbih0LGUscil7cmV0dXJuIHImJnQ9 PT1lP3Q6TWF0aC5hYnModC1lKT49Mj9xKHQpOnQ+ZT9NYXRoLmNlaWwodCk6TWF0aC5mbG9v cih0KX07Qj1HKEIsTixEKSxOPUcoTixCLEQpLGo9RyhqLFUsIUQpLFU9RyhVLGosIUQpfXZh ciBZPUEoYS5lbnN1cmVTaW5nbGUoSSwicGF0aCIpLFAsZyx2KTtpZihZLnN0eWxlKCJ2ZWN0 b3ItZWZmZWN0Iiwibm9uLXNjYWxpbmctc3Ryb2tlIikuYXR0cigiZCIsaXNOYU4oKE4tQikq KFUtaikpfHxWJiZ0Ll9jb250ZXh0LnN0YXRpY1Bsb3Q/Ik0wLDBaIjoiTSIrQisiLCIraisi ViIrVSsiSCIrTisiViIraisiWiIpLmNhbGwobC5zZXRDbGlwVXJsLGUubGF5ZXJDbGlwSWQs dCksIVAudW5pZm9ybXRleHQubW9kZSYmUil7dmFyIFc9bC5tYWtlUG9pbnRTdHlsZUZucyhm KTtsLnNpbmdsZVBvaW50U3R5bGUoYyxZLGYsVyx0KX0hZnVuY3Rpb24odCxlLHIsbixpLHMs YyxmLHAsZyx2KXt2YXIgdyxUPWUueGF4aXMsTT1lLnlheGlzLEM9dC5fZnVsbExheW91dDtm dW5jdGlvbiBQKGUscixuKXtyZXR1cm4gYS5lbnN1cmVTaW5nbGUoZSwidGV4dCIpLnRleHQo cikuYXR0cih7Y2xhc3M6ImJhcnRleHQgYmFydGV4dC0iK3csInRleHQtYW5jaG9yIjoibWlk ZGxlIiwiZGF0YS1ub3RleCI6MX0pLmNhbGwobC5mb250LG4pLmNhbGwoby5jb252ZXJ0VG9U c3BhbnMsdCl9dmFyIEk9blswXS50cmFjZSxPPSJoIj09PUkub3JpZW50YXRpb24sej1mdW5j dGlvbih0LGUscixuLGkpe3ZhciBvLHM9ZVswXS50cmFjZTtvPXMudGV4dHRlbXBsYXRlP2Z1 bmN0aW9uKHQsZSxyLG4saSl7dmFyIG89ZVswXS50cmFjZSxzPWEuY2FzdE9wdGlvbihvLHIs InRleHR0ZW1wbGF0ZSIpO2lmKCFzKXJldHVybiIiO3ZhciBsLGMsZixoLHA9Imhpc3RvZ3Jh bSI9PT1vLnR5cGUsZD0id2F0ZXJmYWxsIj09PW8udHlwZSxtPSJmdW5uZWwiPT09by50eXBl LGc9ImgiPT09by5vcmllbnRhdGlvbjtnPyhsPSJ5IixjPWksZj0ieCIsaD1uKToobD0ieCIs Yz1uLGY9InkiLGg9aSk7ZnVuY3Rpb24gdih0KXtyZXR1cm4gdShoLGguYzJsKHQpLCEwKS50 ZXh0fXZhciB5PWVbcl0seD17fTt4LmxhYmVsPXkucCx4LmxhYmVsTGFiZWw9eFtsKyJMYWJl bCJdPShfPXkucCx1KGMsYy5jMmwoXyksITApLnRleHQpO3ZhciBfO3ZhciB3PWEuY2FzdE9w dGlvbihvLHkuaSwidGV4dCIpOygwPT09d3x8dykmJih4LnRleHQ9dyk7eC52YWx1ZT15LnMs eC52YWx1ZUxhYmVsPXhbZisiTGFiZWwiXT12KHkucyk7dmFyIFQ9e307YihULG8seS5pKSwo cHx8dm9pZCAwPT09VC54KSYmKFQueD1nP3gudmFsdWU6eC5sYWJlbCk7KHB8fHZvaWQgMD09 PVQueSkmJihULnk9Zz94LmxhYmVsOngudmFsdWUpOyhwfHx2b2lkIDA9PT1ULnhMYWJlbCkm JihULnhMYWJlbD1nP3gudmFsdWVMYWJlbDp4LmxhYmVsTGFiZWwpOyhwfHx2b2lkIDA9PT1U LnlMYWJlbCkmJihULnlMYWJlbD1nP3gubGFiZWxMYWJlbDp4LnZhbHVlTGFiZWwpO2QmJih4 LmRlbHRhPSt5LnJhd1N8fHkucyx4LmRlbHRhTGFiZWw9dih4LmRlbHRhKSx4LmZpbmFsPXku dix4LmZpbmFsTGFiZWw9dih4LmZpbmFsKSx4LmluaXRpYWw9eC5maW5hbC14LmRlbHRhLHgu aW5pdGlhbExhYmVsPXYoeC5pbml0aWFsKSk7bSYmKHgudmFsdWU9eS5zLHgudmFsdWVMYWJl bD12KHgudmFsdWUpLHgucGVyY2VudEluaXRpYWw9eS5iZWdSLHgucGVyY2VudEluaXRpYWxM YWJlbD1hLmZvcm1hdFBlcmNlbnQoeS5iZWdSKSx4LnBlcmNlbnRQcmV2aW91cz15LmRpZlIs eC5wZXJjZW50UHJldmlvdXNMYWJlbD1hLmZvcm1hdFBlcmNlbnQoeS5kaWZSKSx4LnBlcmNl bnRUb3RhbD15LnN1bVIseC5wZXJjZW5Ub3RhbExhYmVsPWEuZm9ybWF0UGVyY2VudCh5LnN1 bVIpKTt2YXIgaz1hLmNhc3RPcHRpb24obyx5LmksImN1c3RvbWRhdGEiKTtrJiYoeC5jdXN0 b21kYXRhPWspO3JldHVybiBhLnRleHR0ZW1wbGF0ZVN0cmluZyhzLHgsdC5fZDNsb2NhbGUs VCx4LG8uX21ldGF8fHt9KX0odCxlLHIsbixpKTpzLnRleHRpbmZvP2Z1bmN0aW9uKHQsZSxy LG4pe3ZhciBpPXRbMF0udHJhY2Usbz0iaCI9PT1pLm9yaWVudGF0aW9uLHM9IndhdGVyZmFs bCI9PT1pLnR5cGUsbD0iZnVubmVsIj09PWkudHlwZTtmdW5jdGlvbiBjKHQpe3JldHVybiB1 KG8/cjpuLCt0LCEwKS50ZXh0fXZhciBmLGg9aS50ZXh0aW5mbyxwPXRbZV0sZD1oLnNwbGl0 KCIrIiksbT1bXSxnPWZ1bmN0aW9uKHQpe3JldHVybi0xIT09ZC5pbmRleE9mKHQpfTtnKCJs YWJlbCIpJiZtLnB1c2goKHY9dFtlXS5wLHUobz9uOnIsdiwhMCkudGV4dCkpO3ZhciB2O2co InRleHQiKSYmKDA9PT0oZj1hLmNhc3RPcHRpb24oaSxwLmksInRleHQiKSl8fGYpJiZtLnB1 c2goZik7aWYocyl7dmFyIHk9K3AucmF3U3x8cC5zLHg9cC52LGI9eC15O2coImluaXRpYWwi KSYmbS5wdXNoKGMoYikpLGcoImRlbHRhIikmJm0ucHVzaChjKHkpKSxnKCJmaW5hbCIpJiZt LnB1c2goYyh4KSl9aWYobCl7ZygidmFsdWUiKSYmbS5wdXNoKGMocC5zKSk7dmFyIF89MDtn KCJwZXJjZW50IGluaXRpYWwiKSYmXysrLGcoInBlcmNlbnQgcHJldmlvdXMiKSYmXysrLGco InBlcmNlbnQgdG90YWwiKSYmXysrO3ZhciB3PV8+MTtnKCJwZXJjZW50IGluaXRpYWwiKSYm KGY9YS5mb3JtYXRQZXJjZW50KHAuYmVnUiksdyYmKGYrPSIgb2YgaW5pdGlhbCIpLG0ucHVz aChmKSksZygicGVyY2VudCBwcmV2aW91cyIpJiYoZj1hLmZvcm1hdFBlcmNlbnQocC5kaWZS KSx3JiYoZis9IiBvZiBwcmV2aW91cyIpLG0ucHVzaChmKSksZygicGVyY2VudCB0b3RhbCIp JiYoZj1hLmZvcm1hdFBlcmNlbnQocC5zdW1SKSx3JiYoZis9IiBvZiB0b3RhbCIpLG0ucHVz aChmKSl9cmV0dXJuIG0uam9pbigiPGJyPiIpfShlLHIsbixpKTptLmdldFZhbHVlKHMudGV4 dCxyKTtyZXR1cm4gbS5jb2VyY2VTdHJpbmcoeSxvKX0oQyxuLGksVCxNKTt3PWZ1bmN0aW9u KHQsZSl7dmFyIHI9bS5nZXRWYWx1ZSh0LnRleHRwb3NpdGlvbixlKTtyZXR1cm4gbS5jb2Vy Y2VFbnVtZXJhdGVkKHgscil9KEksaSk7dmFyIEQ9InN0YWNrIj09PWcubW9kZXx8InJlbGF0 aXZlIj09PWcubW9kZSxSPW5baV0sRj0hRHx8Ui5fb3V0bW9zdDtpZighenx8Im5vbmUiPT09 d3x8KFIuaXNCbGFua3x8cz09PWN8fGY9PT1wKSYmKCJhdXRvIj09PXd8fCJpbnNpZGUiPT09 dykpcmV0dXJuIHZvaWQgci5zZWxlY3QoInRleHQiKS5yZW1vdmUoKTt2YXIgQj1DLmZvbnQs Tj1kLmdldEJhckNvbG9yKG5baV0sSSksaj1kLmdldEluc2lkZVRleHRGb250KEksaSxCLE4p LFU9ZC5nZXRPdXRzaWRlVGV4dEZvbnQoSSxpLEIpLFY9ci5kYXR1bSgpO08/ImxvZyI9PT1U LnR5cGUmJlYuczA8PTAmJihzPVQucmFuZ2VbMF08VC5yYW5nZVsxXT8wOlQuX2xlbmd0aCk6 ImxvZyI9PT1NLnR5cGUmJlYuczA8PTAmJihmPU0ucmFuZ2VbMF08TS5yYW5nZVsxXT9NLl9s ZW5ndGg6MCk7dmFyIEgscSxHLFksVyxYPU1hdGguYWJzKGMtcyktMipfLFo9TWF0aC5hYnMo cC1mKS0yKl87Im91dHNpZGUiPT09dyYmKEZ8fFIuaGFzQnx8KHc9Imluc2lkZSIpKTtpZigi YXV0byI9PT13KWlmKEYpe3c9Imluc2lkZSIsVz1hLmVuc3VyZVVuaWZvcm1Gb250U2l6ZSh0 LGopLEg9UChyLHosVykscT1sLmJCb3goSC5ub2RlKCkpLEc9cS53aWR0aCxZPXEuaGVpZ2h0 O3ZhciBKPUc8PVgmJlk8PVosSz1HPD1aJiZZPD1YLFE9Tz9YPj1HKihaL1kpOlo+PVkqKFgv Ryk7Rz4wJiZZPjAmJihKfHxLfHxRKT93PSJpbnNpZGUiOih3PSJvdXRzaWRlIixILnJlbW92 ZSgpLEg9bnVsbCl9ZWxzZSB3PSJpbnNpZGUiO2lmKCFIKXtXPWEuZW5zdXJlVW5pZm9ybUZv bnRTaXplKHQsIm91dHNpZGUiPT09dz9VOmopO3ZhciAkPShIPVAocix6LFcpKS5hdHRyKCJ0 cmFuc2Zvcm0iKTtpZihILmF0dHIoInRyYW5zZm9ybSIsIiIpLHE9bC5iQm94KEgubm9kZSgp KSxHPXEud2lkdGgsWT1xLmhlaWdodCxILmF0dHIoInRyYW5zZm9ybSIsJCksRzw9MHx8WTw9 MClyZXR1cm4gdm9pZCBILnJlbW92ZSgpfXZhciB0dCxldCxydD1JLnRleHRhbmdsZTsib3V0 c2lkZSI9PT13PyhldD0iYm90aCI9PT1JLmNvbnN0cmFpbnRleHR8fCJvdXRzaWRlIj09PUku Y29uc3RyYWludGV4dCx0dD1mdW5jdGlvbih0LGUscixuLGksYSl7dmFyIG8scz0hIWEuaXNI b3Jpem9udGFsLGw9ISFhLmNvbnN0cmFpbmVkLGM9YS5hbmdsZXx8MCx1PWkud2lkdGgsZj1p LmhlaWdodCxoPU1hdGguYWJzKGUtdCkscD1NYXRoLmFicyhuLXIpO289cz9wPjIqXz9fOjA6 aD4yKl8/XzowO3ZhciBkPTE7bCYmKGQ9cz9NYXRoLm1pbigxLHAvZik6TWF0aC5taW4oMSxo L3UpKTt2YXIgbT1TKGMpLGc9RShpLG0pLHY9KHM/Zy54OmcueSkvMix5PShpLmxlZnQraS5y aWdodCkvMix4PShpLnRvcCtpLmJvdHRvbSkvMixiPSh0K2UpLzIsdz0ocituKS8yLFQ9MCxB PTAsTT1zP2soZSx0KTprKHIsbik7cz8oYj1lLU0qbyxUPU0qdik6KHc9bitNKm8sQT0tTSp2 KTtyZXR1cm57dGV4dFg6eSx0ZXh0WTp4LHRhcmdldFg6Yix0YXJnZXRZOncsYW5jaG9yWDpU LGFuY2hvclk6QSxzY2FsZTpkLHJvdGF0ZTptfX0ocyxjLGYscCxxLHtpc0hvcml6b250YWw6 Tyxjb25zdHJhaW5lZDpldCxhbmdsZTpydH0pKTooZXQ9ImJvdGgiPT09SS5jb25zdHJhaW50 ZXh0fHwiaW5zaWRlIj09PUkuY29uc3RyYWludGV4dCx0dD1MKHMsYyxmLHAscSx7aXNIb3Jp em9udGFsOk8sY29uc3RyYWluZWQ6ZXQsYW5nbGU6cnQsYW5jaG9yOkkuaW5zaWRldGV4dGFu Y2hvcn0pKTt0dC5mb250U2l6ZT1XLnNpemUsaCgiaGlzdG9ncmFtIj09PUkudHlwZT8iYmFy IjpJLnR5cGUsdHQsQyksUi50cmFuc2Zvcm09dHQsQShILEMsZyx2KS5hdHRyKCJ0cmFuc2Zv cm0iLGEuZ2V0VGV4dFRyYW5zZm9ybSh0dCkpfSh0LGUsSSxyLHAsQixOLGosVSxnLHYpLGUu bGF5ZXJDbGlwSWQmJmwuaGlkZU91dHNpZGVSYW5nZVBvaW50KGMsSS5zZWxlY3QoInRleHQi KSx3LEMsZi54Y2FsZW5kYXIsZi55Y2FsZW5kYXIpfSkpO3ZhciBqPSExPT09Zi5jbGlwb25h eGlzO2wuc2V0Q2xpcFVybChjLGo/bnVsbDplLmxheWVyQ2xpcElkLHQpfSkpO2MuZ2V0Q29t cG9uZW50TWV0aG9kKCJlcnJvcmJhcnMiLCJwbG90IikodCxJLGUsZyl9LHRvTW92ZUluc2lk ZUJhcjpMfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjozNjYsIi4uLy4uL2NvbXBvbmVu dHMvZHJhd2luZyI6Mzg4LCIuLi8uLi9jb21wb25lbnRzL2Z4L2hlbHBlcnMiOjQwMiwiLi4v Li4vbGliIjo1MDMsIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyI6NTI5LCIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4vYXhlcyI6NTU0LCIuLi8uLi9yZWdpc3RyeSI6NjM4LCIuL2F0dHJpYnV0 ZXMiOjY0OCwiLi9jb25zdGFudHMiOjY1MCwiLi9oZWxwZXJzIjo2NTQsIi4vc3R5bGUiOjY2 MiwiLi91bmlmb3JtX3RleHQiOjY2NCwiQHBsb3RseS9kMyI6NTgsImZhc3QtaXNudW1lcmlj IjoxOTB9XSw2NjA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0 LGUscixuLGkpe3ZhciBhPWUuYzJwKG4/dC5zMDp0LnAwLCEwKSxvPWUuYzJwKG4/dC5zMTp0 LnAxLCEwKSxzPXIuYzJwKG4/dC5wMDp0LnMwLCEwKSxsPXIuYzJwKG4/dC5wMTp0LnMxLCEw KTtyZXR1cm4gaT9bKGErbykvMiwocytsKS8yXTpuP1tvLChzK2wpLzJdOlsoYStvKS8yLGxd fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLGk9dC5jZCxhPXQueGF4aXMsbz10Lnlh eGlzLHM9aVswXS50cmFjZSxsPSJmdW5uZWwiPT09cy50eXBlLGM9ImgiPT09cy5vcmllbnRh dGlvbix1PVtdO2lmKCExPT09ZSlmb3Iocj0wO3I8aS5sZW5ndGg7cisrKWlbcl0uc2VsZWN0 ZWQ9MDtlbHNlIGZvcihyPTA7cjxpLmxlbmd0aDtyKyspe3ZhciBmPWlbcl0saD0iY3QiaW4g Zj9mLmN0Om4oZixhLG8sYyxsKTtlLmNvbnRhaW5zKGgsITEscix0KT8odS5wdXNoKHtwb2lu dE51bWJlcjpyLHg6YS5jMmQoZi54KSx5Om8uYzJkKGYueSl9KSxmLnNlbGVjdGVkPTEpOmYu c2VsZWN0ZWQ9MH1yZXR1cm4gdX19LHt9XSw2NjE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZS5leHBvcnRzPWE7dmFyIG49dCgiLi4vLi4vbGliIikuZGlzdGluY3RWYWxzLGk9 dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkJBRE5VTTtmdW5jdGlvbiBhKHQsZSl7 dGhpcy50cmFjZXM9dCx0aGlzLnNlcE5lZ1ZhbD1lLnNlcE5lZ1ZhbCx0aGlzLm92ZXJsYXBO b01lcmdlPWUub3ZlcmxhcE5vTWVyZ2U7Zm9yKHZhciByPTEvMCxhPVtdLG89MDtvPHQubGVu Z3RoO28rKyl7Zm9yKHZhciBzPXRbb10sbD0wO2w8cy5sZW5ndGg7bCsrKXt2YXIgYz1zW2xd O2MucCE9PWkmJmEucHVzaChjLnApfXNbMF0mJnNbMF0ud2lkdGgxJiYocj1NYXRoLm1pbihz WzBdLndpZHRoMSxyKSl9dGhpcy5wb3NpdGlvbnM9YTt2YXIgdT1uKGEpO3RoaXMuZGlzdGlu Y3RQb3NpdGlvbnM9dS52YWxzLDE9PT11LnZhbHMubGVuZ3RoJiZyIT09MS8wP3RoaXMubWlu RGlmZj1yOnRoaXMubWluRGlmZj1NYXRoLm1pbih1Lm1pbkRpZmYscik7dmFyIGY9KGUucG9z QXhpc3x8e30pLnR5cGU7ImNhdGVnb3J5IiE9PWYmJiJtdWx0aWNhdGVnb3J5IiE9PWZ8fCh0 aGlzLm1pbkRpZmY9MSksdGhpcy5iaW5XaWR0aD10aGlzLm1pbkRpZmYsdGhpcy5iaW5zPXt9 fWEucHJvdG90eXBlLnB1dD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuZ2V0TGFiZWwodCxl KSxuPXRoaXMuYmluc1tyXXx8MDtyZXR1cm4gdGhpcy5iaW5zW3JdPW4rZSxufSxhLnByb3Rv dHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmdldExhYmVsKHQsZSk7cmV0dXJu IHRoaXMuYmluc1tyXXx8MH0sYS5wcm90b3R5cGUuZ2V0TGFiZWw9ZnVuY3Rpb24odCxlKXty ZXR1cm4oZTwwJiZ0aGlzLnNlcE5lZ1ZhbD8idiI6Il4iKSsodGhpcy5vdmVybGFwTm9NZXJn ZT90Ok1hdGgucm91bmQodC90aGlzLmJpbldpZHRoKSl9fSx7Ii4uLy4uL2NvbnN0YW50cy9u dW1lcmljYWwiOjQ3OSwiLi4vLi4vbGliIjo1MDN9XSw2NjI6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiQHBsb3RseS9kMyIpLGk9dCgiLi4vLi4vY29tcG9uZW50 cy9jb2xvciIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksbz10KCIuLi8uLi9s aWIiKSxzPXQoIi4uLy4uL3JlZ2lzdHJ5IiksbD10KCIuL3VuaWZvcm1fdGV4dCIpLnJlc2l6 ZVRleHQsYz10KCIuL2F0dHJpYnV0ZXMiKSx1PWMudGV4dGZvbnQsZj1jLmluc2lkZXRleHRm b250LGg9Yy5vdXRzaWRldGV4dGZvbnQscD10KCIuL2hlbHBlcnMiKTtmdW5jdGlvbiBkKHQs ZSxyKXthLnBvaW50U3R5bGUodC5zZWxlY3RBbGwoInBhdGgiKSxlLHIpLG0odCxlLHIpfWZ1 bmN0aW9uIG0odCxlLHIpe3Quc2VsZWN0QWxsKCJ0ZXh0IikuZWFjaCgoZnVuY3Rpb24odCl7 dmFyIGk9bi5zZWxlY3QodGhpcykscz1vLmVuc3VyZVVuaWZvcm1Gb250U2l6ZShyLGcoaSx0 LGUscikpO2EuZm9udChpLHMpfSkpfWZ1bmN0aW9uIGcodCxlLHIsbil7dmFyIGk9bi5fZnVs bExheW91dC5mb250LGE9ci50ZXh0Zm9udDtpZih0LmNsYXNzZWQoImJhcnRleHQtaW5zaWRl Iikpe3ZhciBvPV8oZSxyKTthPXkocixlLmksaSxvKX1lbHNlIHQuY2xhc3NlZCgiYmFydGV4 dC1vdXRzaWRlIikmJihhPXgocixlLmksaSkpO3JldHVybiBhfWZ1bmN0aW9uIHYodCxlLHIp e3JldHVybiBiKHUsdC50ZXh0Zm9udCxlLHIpfWZ1bmN0aW9uIHkodCxlLHIsbil7dmFyIGE9 dih0LGUscik7cmV0dXJuKHZvaWQgMD09PXQuX2lucHV0LnRleHRmb250fHx2b2lkIDA9PT10 Ll9pbnB1dC50ZXh0Zm9udC5jb2xvcnx8QXJyYXkuaXNBcnJheSh0LnRleHRmb250LmNvbG9y KSYmdm9pZCAwPT09dC50ZXh0Zm9udC5jb2xvcltlXSkmJihhPXtjb2xvcjppLmNvbnRyYXN0 KG4pLGZhbWlseTphLmZhbWlseSxzaXplOmEuc2l6ZX0pLGIoZix0Lmluc2lkZXRleHRmb250 LGUsYSl9ZnVuY3Rpb24geCh0LGUscil7dmFyIG49dih0LGUscik7cmV0dXJuIGIoaCx0Lm91 dHNpZGV0ZXh0Zm9udCxlLG4pfWZ1bmN0aW9uIGIodCxlLHIsbil7ZT1lfHx7fTt2YXIgaT1w LmdldFZhbHVlKGUuZmFtaWx5LHIpLGE9cC5nZXRWYWx1ZShlLnNpemUsciksbz1wLmdldFZh bHVlKGUuY29sb3Iscik7cmV0dXJue2ZhbWlseTpwLmNvZXJjZVN0cmluZyh0LmZhbWlseSxp LG4uZmFtaWx5KSxzaXplOnAuY29lcmNlTnVtYmVyKHQuc2l6ZSxhLG4uc2l6ZSksY29sb3I6 cC5jb2VyY2VDb2xvcih0LmNvbG9yLG8sbi5jb2xvcil9fWZ1bmN0aW9uIF8odCxlKXtyZXR1 cm4id2F0ZXJmYWxsIj09PWUudHlwZT9lW3QuZGlyXS5tYXJrZXIuY29sb3I6dC5tY2N8fHQu bWN8fGUubWFya2VyLmNvbG9yfWUuZXhwb3J0cz17c3R5bGU6ZnVuY3Rpb24odCl7dmFyIGU9 bi5zZWxlY3QodCkuc2VsZWN0QWxsKCJnLmJhcmxheWVyIikuc2VsZWN0QWxsKCJnLnRyYWNl Iik7bCh0LGUsImJhciIpO3ZhciByPWUuc2l6ZSgpLGk9dC5fZnVsbExheW91dDtlLnN0eWxl KCJvcGFjaXR5IiwoZnVuY3Rpb24odCl7cmV0dXJuIHRbMF0udHJhY2Uub3BhY2l0eX0pKS5l YWNoKChmdW5jdGlvbih0KXsoInN0YWNrIj09PWkuYmFybW9kZSYmcj4xfHwwPT09aS5iYXJn YXAmJjA9PT1pLmJhcmdyb3VwZ2FwJiYhdFswXS50cmFjZS5tYXJrZXIubGluZS53aWR0aCkm Jm4uc2VsZWN0KHRoaXMpLmF0dHIoInNoYXBlLXJlbmRlcmluZyIsImNyaXNwRWRnZXMiKX0p KSxlLnNlbGVjdEFsbCgiZy5wb2ludHMiKS5lYWNoKChmdW5jdGlvbihlKXtkKG4uc2VsZWN0 KHRoaXMpLGVbMF0udHJhY2UsdCl9KSkscy5nZXRDb21wb25lbnRNZXRob2QoImVycm9yYmFy cyIsInN0eWxlIikoZSl9LHN0eWxlVGV4dFBvaW50czptLHN0eWxlT25TZWxlY3Q6ZnVuY3Rp b24odCxlLHIpe3ZhciBpPWVbMF0udHJhY2U7aS5zZWxlY3RlZHBvaW50cz9mdW5jdGlvbih0 LGUscil7YS5zZWxlY3RlZFBvaW50U3R5bGUodC5zZWxlY3RBbGwoInBhdGgiKSxlKSxmdW5j dGlvbih0LGUscil7dC5lYWNoKChmdW5jdGlvbih0KXt2YXIgaSxzPW4uc2VsZWN0KHRoaXMp O2lmKHQuc2VsZWN0ZWQpe2k9by5lbnN1cmVVbmlmb3JtRm9udFNpemUocixnKHMsdCxlLHIp KTt2YXIgbD1lLnNlbGVjdGVkLnRleHRmb250JiZlLnNlbGVjdGVkLnRleHRmb250LmNvbG9y O2wmJihpLmNvbG9yPWwpLGEuZm9udChzLGkpfWVsc2UgYS5zZWxlY3RlZFRleHRTdHlsZShz LGUpfSkpfSh0LnNlbGVjdEFsbCgidGV4dCIpLGUscil9KHIsaSx0KTooZChyLGksdCkscy5n ZXRDb21wb25lbnRNZXRob2QoImVycm9yYmFycyIsInN0eWxlIikocikpfSxnZXRJbnNpZGVU ZXh0Rm9udDp5LGdldE91dHNpZGVUZXh0Rm9udDp4LGdldEJhckNvbG9yOl8scmVzaXplVGV4 dDpsfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjozNjYsIi4uLy4uL2NvbXBvbmVudHMv ZHJhd2luZyI6Mzg4LCIuLi8uLi9saWIiOjUwMywiLi4vLi4vcmVnaXN0cnkiOjYzOCwiLi9h dHRyaWJ1dGVzIjo2NDgsIi4vaGVscGVycyI6NjU0LCIuL3VuaWZvcm1fdGV4dCI6NjY0LCJA cGxvdGx5L2QzIjo1OH1dLDY2MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2Nv bG9yc2NhbGUvaGVscGVycyIpLmhhc0NvbG9yc2NhbGUsYT10KCIuLi8uLi9jb21wb25lbnRz L2NvbG9yc2NhbGUvZGVmYXVsdHMiKSxvPXQoIi4uLy4uL2xpYiIpLmNvZXJjZVBhdHRlcm47 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHMsbCl7dmFyIGM9cigibWFya2VyLmNvbG9yIixz KSx1PWkodCwibWFya2VyIik7dSYmYSh0LGUsbCxyLHtwcmVmaXg6Im1hcmtlci4iLGNMZXR0 ZXI6ImMifSkscigibWFya2VyLmxpbmUuY29sb3IiLG4uZGVmYXVsdExpbmUpLGkodCwibWFy a2VyLmxpbmUiKSYmYSh0LGUsbCxyLHtwcmVmaXg6Im1hcmtlci5saW5lLiIsY0xldHRlcjoi YyJ9KSxyKCJtYXJrZXIubGluZS53aWR0aCIpLHIoIm1hcmtlci5vcGFjaXR5IiksbyhyLCJt YXJrZXIucGF0dGVybiIsYyx1KSxyKCJzZWxlY3RlZC5tYXJrZXIuY29sb3IiKSxyKCJ1bnNl bGVjdGVkLm1hcmtlci5jb2xvciIpfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjozNjYs Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyI6Mzc2LCIuLi8uLi9jb21w b25lbnRzL2NvbG9yc2NhbGUvaGVscGVycyI6Mzc3LCIuLi8uLi9saWIiOjUwM31dLDY2NDpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJAcGxvdGx5L2QzIiksaT10 KCIuLi8uLi9saWIiKTtmdW5jdGlvbiBhKHQpe3JldHVybiJfIit0KyJUZXh0X21pbnNpemUi fWUuZXhwb3J0cz17cmVjb3JkTWluVGV4dFNpemU6ZnVuY3Rpb24odCxlLHIpe2lmKHIudW5p Zm9ybXRleHQubW9kZSl7dmFyIG49YSh0KSxpPXIudW5pZm9ybXRleHQubWluc2l6ZSxvPWUu c2NhbGUqZS5mb250U2l6ZTtlLmhpZGU9bzxpLHJbbl09cltuXXx8MS8wLGUuaGlkZXx8KHJb bl09TWF0aC5taW4ocltuXSxNYXRoLm1heChvLGkpKSl9fSxjbGVhck1pblRleHRTaXplOmZ1 bmN0aW9uKHQsZSl7ZVthKHQpXT12b2lkIDB9LHJlc2l6ZVRleHQ6ZnVuY3Rpb24odCxlLHIp e3ZhciBhPXQuX2Z1bGxMYXlvdXQsbz1hWyJfIityKyJUZXh0X21pbnNpemUiXTtpZihvKXt2 YXIgcyxsPSJoaWRlIj09PWEudW5pZm9ybXRleHQubW9kZTtzd2l0Y2gocil7Y2FzZSJmdW5u ZWxhcmVhIjpjYXNlInBpZSI6Y2FzZSJzdW5idXJzdCI6cz0iZy5zbGljZSI7YnJlYWs7Y2Fz ZSJ0cmVlbWFwIjpjYXNlImljaWNsZSI6cz0iZy5zbGljZSwgZy5wYXRoYmFyIjticmVhaztk ZWZhdWx0OnM9ImcucG9pbnRzID4gZy5wb2ludCJ9ZS5zZWxlY3RBbGwocykuZWFjaCgoZnVu Y3Rpb24odCl7dmFyIGU9dC50cmFuc2Zvcm07ZSYmKGUuc2NhbGU9bCYmZS5oaWRlPzA6by9l LmZvbnRTaXplLG4uc2VsZWN0KHRoaXMpLnNlbGVjdCgidGV4dCIpLmF0dHIoInRyYW5zZm9y bSIsaS5nZXRUZXh0VHJhbnNmb3JtKGUpKSl9KSl9fX19LHsiLi4vLi4vbGliIjo1MDMsIkBw bG90bHkvZDMiOjU4fV0sNjY1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0 cnMsaT10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxhPXQoIi4uL3NjYXR0ZXJw b2xhci9hdHRyaWJ1dGVzIiksbz10KCIuLi9iYXIvYXR0cmlidXRlcyIpO2UuZXhwb3J0cz17 cjphLnIsdGhldGE6YS50aGV0YSxyMDphLnIwLGRyOmEuZHIsdGhldGEwOmEudGhldGEwLGR0 aGV0YTphLmR0aGV0YSx0aGV0YXVuaXQ6YS50aGV0YXVuaXQsYmFzZTppKHt9LG8uYmFzZSx7 fSksb2Zmc2V0Omkoe30sby5vZmZzZXQse30pLHdpZHRoOmkoe30sby53aWR0aCx7fSksdGV4 dDppKHt9LG8udGV4dCx7fSksaG92ZXJ0ZXh0Omkoe30sby5ob3ZlcnRleHQse30pLG1hcmtl cjpvLm1hcmtlcixob3ZlcmluZm86YS5ob3ZlcmluZm8saG92ZXJ0ZW1wbGF0ZTpuKCksc2Vs ZWN0ZWQ6by5zZWxlY3RlZCx1bnNlbGVjdGVkOm8udW5zZWxlY3RlZH19LHsiLi4vLi4vbGli L2V4dGVuZCI6NDkzLCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo2MzMsIi4u L2Jhci9hdHRyaWJ1dGVzIjo2NDgsIi4uL3NjYXR0ZXJwb2xhci9hdHRyaWJ1dGVzIjoxMDAy fV0sNjY2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2Nv bXBvbmVudHMvY29sb3JzY2FsZS9oZWxwZXJzIikuaGFzQ29sb3JzY2FsZSxpPXQoIi4uLy4u L2NvbXBvbmVudHMvY29sb3JzY2FsZS9jYWxjIiksYT10KCIuLi9iYXIvYXJyYXlzX3RvX2Nh bGNkYXRhIiksbz10KCIuLi9iYXIvY3Jvc3NfdHJhY2VfY2FsYyIpLnNldEdyb3VwUG9zaXRp b25zLHM9dCgiLi4vc2NhdHRlci9jYWxjX3NlbGVjdGlvbiIpLGw9dCgiLi4vLi4vcmVnaXN0 cnkiKS50cmFjZUlzLGM9dCgiLi4vLi4vbGliIikuZXh0ZW5kRmxhdDtlLmV4cG9ydHM9e2Nh bGM6ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5fZnVsbExheW91dCxvPWUuc3VicGxvdCxs PXJbb10ucmFkaWFsYXhpcyxjPXJbb10uYW5ndWxhcmF4aXMsdT1sLm1ha2VDYWxjZGF0YShl LCJyIiksZj1jLm1ha2VDYWxjZGF0YShlLCJ0aGV0YSIpLGg9ZS5fbGVuZ3RoLHA9bmV3IEFy cmF5KGgpLGQ9dSxtPWYsZz0wO2c8aDtnKyspcFtnXT17cDptW2ddLHM6ZFtnXX07ZnVuY3Rp b24gdih0KXt2YXIgcj1lW3RdO3ZvaWQgMCE9PXImJihlWyJfIit0XT1BcnJheS5pc0FycmF5 KHIpP2MubWFrZUNhbGNkYXRhKGUsdCk6Yy5kMmMocixlLnRoZXRhdW5pdCkpfXJldHVybiJs aW5lYXIiPT09Yy50eXBlJiYodigid2lkdGgiKSx2KCJvZmZzZXQiKSksbihlLCJtYXJrZXIi KSYmaSh0LGUse3ZhbHM6ZS5tYXJrZXIuY29sb3IsY29udGFpbmVyU3RyOiJtYXJrZXIiLGNM ZXR0ZXI6ImMifSksbihlLCJtYXJrZXIubGluZSIpJiZpKHQsZSx7dmFsczplLm1hcmtlci5s aW5lLmNvbG9yLGNvbnRhaW5lclN0cjoibWFya2VyLmxpbmUiLGNMZXR0ZXI6ImMifSksYShw LGUpLHMocCxlKSxwfSxjcm9zc1RyYWNlQ2FsYzpmdW5jdGlvbih0LGUscil7Zm9yKHZhciBu PXQuY2FsY2RhdGEsaT1bXSxhPTA7YTxuLmxlbmd0aDthKyspe3ZhciBzPW5bYV0sdT1zWzBd LnRyYWNlOyEwPT09dS52aXNpYmxlJiZsKHUsImJhciIpJiZ1LnN1YnBsb3Q9PT1yJiZpLnB1 c2gocyl9dmFyIGY9Yyh7fSxlLnJhZGlhbGF4aXMse19pZDoieCJ9KSxoPWUuYW5ndWxhcmF4 aXM7byh0LGgsZixpLHttb2RlOmUuYmFybW9kZSxub3JtOmUuYmFybm9ybSxnYXA6ZS5iYXJn YXAsZ3JvdXBnYXA6ZS5iYXJncm91cGdhcH0pfX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xv cnNjYWxlL2NhbGMiOjM3NCwiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2hlbHBlcnMi OjM3NywiLi4vLi4vbGliIjo1MDMsIi4uLy4uL3JlZ2lzdHJ5Ijo2MzgsIi4uL2Jhci9hcnJh eXNfdG9fY2FsY2RhdGEiOjY0NywiLi4vYmFyL2Nyb3NzX3RyYWNlX2NhbGMiOjY1MSwiLi4v c2NhdHRlci9jYWxjX3NlbGVjdGlvbiI6OTI5fV0sNjY3OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vc2NhdHRlcnBvbGFyL2Rl ZmF1bHRzIikuaGFuZGxlUlRoZXRhRGVmYXVsdHMsYT10KCIuLi9iYXIvc3R5bGVfZGVmYXVs dHMiKSxvPXQoIi4vYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixzKXtm dW5jdGlvbiBsKHIsaSl7cmV0dXJuIG4uY29lcmNlKHQsZSxvLHIsaSl9aSh0LGUscyxsKT8o bCgidGhldGF1bml0IiksbCgiYmFzZSIpLGwoIm9mZnNldCIpLGwoIndpZHRoIiksbCgidGV4 dCIpLGwoImhvdmVydGV4dCIpLGwoImhvdmVydGVtcGxhdGUiKSxhKHQsZSxsLHIscyksbi5j b2VyY2VTZWxlY3Rpb25NYXJrZXJPcGFjaXR5KGUsbCkpOmUudmlzaWJsZT0hMX19LHsiLi4v Li4vbGliIjo1MDMsIi4uL2Jhci9zdHlsZV9kZWZhdWx0cyI6NjYzLCIuLi9zY2F0dGVycG9s YXIvZGVmYXVsdHMiOjEwMDQsIi4vYXR0cmlidXRlcyI6NjY1fV0sNjY4OltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvZngiKSxpPXQo Ii4uLy4uL2xpYiIpLGE9dCgiLi4vYmFyL2hvdmVyIikuZ2V0VHJhY2VDb2xvcixvPWkuZmls bFRleHQscz10KCIuLi9zY2F0dGVycG9sYXIvaG92ZXIiKS5tYWtlSG92ZXJQb2ludFRleHQs bD10KCIuLi8uLi9wbG90cy9wb2xhci9oZWxwZXJzIikuaXNQdEluc2lkZVBvbHlnb247ZS5l eHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgYz10LmNkLHU9Y1swXS50cmFjZSxmPXQuc3Vi cGxvdCxoPWYucmFkaWFsQXhpcyxwPWYuYW5ndWxhckF4aXMsZD1mLnZhbmdsZXMsbT1kP2w6 aS5pc1B0SW5zaWRlU2VjdG9yLGc9dC5tYXhIb3ZlckRpc3RhbmNlLHY9cC5fcGVyaW9kfHwy Kk1hdGguUEkseT1NYXRoLmFicyhoLmcycChNYXRoLnNxcnQoZSplK3IqcikpKSx4PU1hdGgu YXRhbjIocixlKTtoLnJhbmdlWzBdPmgucmFuZ2VbMV0mJih4Kz1NYXRoLlBJKTtpZihuLmdl dENsb3Nlc3QoYywoZnVuY3Rpb24odCl7cmV0dXJuIG0oeSx4LFt0LnJwMCx0LnJwMV0sW3Qu dGhldGFnMCx0LnRoZXRhZzFdLGQpP2crTWF0aC5taW4oMSxNYXRoLmFicyh0LnRoZXRhZzEt dC50aGV0YWcwKS92KS0xKyh0LnJwMS15KS8odC5ycDEtdC5ycDApLTE6MS8wfSksdCksITEh PT10LmluZGV4KXt2YXIgYj1jW3QuaW5kZXhdO3QueDA9dC54MT1iLmN0WzBdLHQueTA9dC55 MT1iLmN0WzFdO3ZhciBfPWkuZXh0ZW5kRmxhdCh7fSxiLHtyOmIucyx0aGV0YTpiLnB9KTty ZXR1cm4gbyhiLHUsdCkscyhfLHUsZix0KSx0LmhvdmVydGVtcGxhdGU9dS5ob3ZlcnRlbXBs YXRlLHQuY29sb3I9YSh1LGIpLHQueExhYmVsVmFsPXQueUxhYmVsVmFsPXZvaWQgMCxiLnM8 MCYmKHQuaWRlYWxBbGlnbj0ibGVmdCIpLFt0XX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvZngi OjQwNiwiLi4vLi4vbGliIjo1MDMsIi4uLy4uL3Bsb3RzL3BvbGFyL2hlbHBlcnMiOjYyMSwi Li4vYmFyL2hvdmVyIjo2NTUsIi4uL3NjYXR0ZXJwb2xhci9ob3ZlciI6MTAwNn1dLDY2OTpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e21vZHVsZVR5cGU6InRy YWNlIixuYW1lOiJiYXJwb2xhciIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvcG9s YXIiKSxjYXRlZ29yaWVzOlsicG9sYXIiLCJiYXIiLCJzaG93TGVnZW5kIl0sYXR0cmlidXRl czp0KCIuL2F0dHJpYnV0ZXMiKSxsYXlvdXRBdHRyaWJ1dGVzOnQoIi4vbGF5b3V0X2F0dHJp YnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksc3VwcGx5TGF5b3V0RGVm YXVsdHM6dCgiLi9sYXlvdXRfZGVmYXVsdHMiKSxjYWxjOnQoIi4vY2FsYyIpLmNhbGMsY3Jv c3NUcmFjZUNhbGM6dCgiLi9jYWxjIikuY3Jvc3NUcmFjZUNhbGMscGxvdDp0KCIuL3Bsb3Qi KSxjb2xvcmJhcjp0KCIuLi9zY2F0dGVyL21hcmtlcl9jb2xvcmJhciIpLGZvcm1hdExhYmVs czp0KCIuLi9zY2F0dGVycG9sYXIvZm9ybWF0X2xhYmVscyIpLHN0eWxlOnQoIi4uL2Jhci9z dHlsZSIpLnN0eWxlLHN0eWxlT25TZWxlY3Q6dCgiLi4vYmFyL3N0eWxlIikuc3R5bGVPblNl bGVjdCxob3ZlclBvaW50czp0KCIuL2hvdmVyIiksc2VsZWN0UG9pbnRzOnQoIi4uL2Jhci9z ZWxlY3QiKSxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9wb2xhciI6NjIyLCIuLi9iYXIvc2Vs ZWN0Ijo2NjAsIi4uL2Jhci9zdHlsZSI6NjYyLCIuLi9zY2F0dGVyL21hcmtlcl9jb2xvcmJh ciI6OTQ1LCIuLi9zY2F0dGVycG9sYXIvZm9ybWF0X2xhYmVscyI6MTAwNSwiLi9hdHRyaWJ1 dGVzIjo2NjUsIi4vY2FsYyI6NjY2LCIuL2RlZmF1bHRzIjo2NjcsIi4vaG92ZXIiOjY2OCwi Li9sYXlvdXRfYXR0cmlidXRlcyI6NjcwLCIuL2xheW91dF9kZWZhdWx0cyI6NjcxLCIuL3Bs b3QiOjY3Mn1dLDY3MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9 e2Jhcm1vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInN0YWNrIiwib3Zlcmxh eSJdLGRmbHQ6InN0YWNrIixlZGl0VHlwZToiY2FsYyJ9LGJhcmdhcDp7dmFsVHlwZToibnVt YmVyIixkZmx0Oi4xLG1pbjowLG1heDoxLGVkaXRUeXBlOiJjYWxjIn19fSx7fV0sNjcxOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgi Li9sYXlvdXRfYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGEs bz17fTtmdW5jdGlvbiBzKHIsbyl7cmV0dXJuIG4uY29lcmNlKHRbYV18fHt9LGVbYV0saSxy LG8pfWZvcih2YXIgbD0wO2w8ci5sZW5ndGg7bCsrKXt2YXIgYz1yW2xdOyJiYXJwb2xhciI9 PT1jLnR5cGUmJiEwPT09Yy52aXNpYmxlJiYob1thPWMuc3VicGxvdF18fChzKCJiYXJtb2Rl IikscygiYmFyZ2FwIiksb1thXT0xKSl9fX0seyIuLi8uLi9saWIiOjUwMywiLi9sYXlvdXRf YXR0cmlidXRlcyI6NjcwfV0sNjcyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIkBwbG90bHkvZDMiKSxpPXQoImZhc3QtaXNudW1lcmljIiksYT10KCIuLi8uLi9s aWIiKSxvPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLHM9dCgiLi4vLi4vcGxvdHMv cG9sYXIvaGVscGVycyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGw9ZS54YXhp cyxjPWUueWF4aXMsdT1lLnJhZGlhbEF4aXMsZj1lLmFuZ3VsYXJBeGlzLGg9ZnVuY3Rpb24o dCl7dmFyIGU9dC5jeHgscj10LmN5eTtpZih0LnZhbmdsZXMpcmV0dXJuIGZ1bmN0aW9uKG4s aSxvLGwpe3ZhciBjLHU7YS5hbmdsZURlbHRhKG8sbCk+MD8oYz1vLHU9bCk6KGM9bCx1PW8p O3ZhciBmPVtzLmZpbmRFbmNsb3NpbmdWZXJ0ZXhBbmdsZXMoYyx0LnZhbmdsZXMpWzBdLChj K3UpLzIscy5maW5kRW5jbG9zaW5nVmVydGV4QW5nbGVzKHUsdC52YW5nbGVzKVsxXV07cmV0 dXJuIHMucGF0aFBvbHlnb25Bbm51bHVzKG4saSxjLHUsZixlLHIpfTtyZXR1cm4gZnVuY3Rp b24odCxuLGksbyl7cmV0dXJuIGEucGF0aEFubnVsdXModCxuLGksbyxlLHIpfX0oZSkscD1l LmxheWVycy5mcm9udHBsb3Quc2VsZWN0KCJnLmJhcmxheWVyIik7YS5tYWtlVHJhY2VHcm91 cHMocCxyLCJ0cmFjZSBiYXJzIikuZWFjaCgoZnVuY3Rpb24oKXt2YXIgcj1uLnNlbGVjdCh0 aGlzKSxzPWEuZW5zdXJlU2luZ2xlKHIsImciLCJwb2ludHMiKS5zZWxlY3RBbGwoImcucG9p bnQiKS5kYXRhKGEuaWRlbnRpdHkpO3MuZW50ZXIoKS5hcHBlbmQoImciKS5zdHlsZSgidmVj dG9yLWVmZmVjdCIsIm5vbi1zY2FsaW5nLXN0cm9rZSIpLnN0eWxlKCJzdHJva2UtbWl0ZXJs aW1pdCIsMikuY2xhc3NlZCgicG9pbnQiLCEwKSxzLmV4aXQoKS5yZW1vdmUoKSxzLmVhY2go KGZ1bmN0aW9uKHQpe3ZhciBlLHI9bi5zZWxlY3QodGhpcyksbz10LnJwMD11LmMycCh0LnMw KSxzPXQucnAxPXUuYzJwKHQuczEpLHA9dC50aGV0YWcwPWYuYzJnKHQucDApLGQ9dC50aGV0 YWcxPWYuYzJnKHQucDEpO2lmKGkobykmJmkocykmJmkocCkmJmkoZCkmJm8hPT1zJiZwIT09 ZCl7dmFyIG09dS5jMmcodC5zMSksZz0ocCtkKS8yO3QuY3Q9W2wuYzJwKG0qTWF0aC5jb3Mo ZykpLGMuYzJwKG0qTWF0aC5zaW4oZykpXSxlPWgobyxzLHAsZCl9ZWxzZSBlPSJNMCwwWiI7 YS5lbnN1cmVTaW5nbGUociwicGF0aCIpLmF0dHIoImQiLGUpfSkpLG8uc2V0Q2xpcFVybChy LGUuX2hhc0NsaXBPbkF4aXNGYWxzZT9lLmNsaXBJZHMuZm9yVHJhY2VzOm51bGwsdCl9KSl9 fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6Mzg4LCIuLi8uLi9saWIiOjUwMywiLi4v Li4vcGxvdHMvcG9sYXIvaGVscGVycyI6NjIxLCJAcGxvdGx5L2QzIjo1OCwiZmFzdC1pc251 bWVyaWMiOjE5MH1dLDY3MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiKSxpPXQoIi4uL2Jhci9hdHRyaWJ1dGVzIiksYT10 KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL3Bsb3Rz L2NhcnRlc2lhbi9heGlzX2Zvcm1hdF9hdHRyaWJ1dGVzIikuYXhpc0hvdmVyRm9ybWF0LHM9 dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVBdHRy cyxsPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LGM9bi5tYXJrZXIsdT1jLmxp bmU7ZS5leHBvcnRzPXt5Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYytj bGVhckF4aXNUeXBlcyJ9LHg6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxj K2NsZWFyQXhpc1R5cGVzIn0seDA6e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6ImNhbGMrY2xl YXJBeGlzVHlwZXMifSx5MDp7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYytjbGVhckF4 aXNUeXBlcyJ9LGR4Ont2YWxUeXBlOiJudW1iZXIiLGVkaXRUeXBlOiJjYWxjIn0sZHk6e3Zh bFR5cGU6Im51bWJlciIsZWRpdFR5cGU6ImNhbGMifSx4cGVyaW9kOm4ueHBlcmlvZCx5cGVy aW9kOm4ueXBlcmlvZCx4cGVyaW9kMDpuLnhwZXJpb2QwLHlwZXJpb2QwOm4ueXBlcmlvZDAs eHBlcmlvZGFsaWdubWVudDpuLnhwZXJpb2RhbGlnbm1lbnQseXBlcmlvZGFsaWdubWVudDpu LnlwZXJpb2RhbGlnbm1lbnQseGhvdmVyZm9ybWF0Om8oIngiKSx5aG92ZXJmb3JtYXQ6bygi eSIpLG5hbWU6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlw ZXMifSxxMTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlz VHlwZXMifSxtZWRpYW46e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjK2Ns ZWFyQXhpc1R5cGVzIn0scTM6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxj K2NsZWFyQXhpc1R5cGVzIn0sbG93ZXJmZW5jZTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRp dFR5cGU6ImNhbGMifSx1cHBlcmZlbmNlOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlw ZToiY2FsYyJ9LG5vdGNoZWQ6e3ZhbFR5cGU6ImJvb2xlYW4iLGVkaXRUeXBlOiJjYWxjIn0s bm90Y2h3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6LjUsZGZsdDouMjUsZWRp dFR5cGU6ImNhbGMifSxub3RjaHNwYW46e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBl OiJjYWxjIn0sYm94cG9pbnRzOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhbGwi LCJvdXRsaWVycyIsInN1c3BlY3RlZG91dGxpZXJzIiwhMV0sZWRpdFR5cGU6ImNhbGMifSxq aXR0ZXI6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZWRpdFR5cGU6ImNhbGMifSxw b2ludHBvczp7dmFsVHlwZToibnVtYmVyIixtaW46LTIsbWF4OjIsZWRpdFR5cGU6ImNhbGMi fSxib3htZWFuOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyEwLCJzZCIsITFdLGVk aXRUeXBlOiJjYWxjIn0sbWVhbjp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNh bGMifSxzZDp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxvcmllbnRh dGlvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsidiIsImgiXSxlZGl0VHlwZToi Y2FsYytjbGVhckF4aXNUeXBlcyJ9LHF1YXJ0aWxlbWV0aG9kOnt2YWxUeXBlOiJlbnVtZXJh dGVkIix2YWx1ZXM6WyJsaW5lYXIiLCJleGNsdXNpdmUiLCJpbmNsdXNpdmUiXSxkZmx0OiJs aW5lYXIiLGVkaXRUeXBlOiJjYWxjIn0sd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAs ZGZsdDowLGVkaXRUeXBlOiJjYWxjIn0sbWFya2VyOntvdXRsaWVyY29sb3I6e3ZhbFR5cGU6 ImNvbG9yIixkZmx0OiJyZ2JhKDAsIDAsIDAsIDApIixlZGl0VHlwZToic3R5bGUifSxzeW1i b2w6bCh7fSxjLnN5bWJvbCx7YXJyYXlPazohMSxlZGl0VHlwZToicGxvdCJ9KSxvcGFjaXR5 Omwoe30sYy5vcGFjaXR5LHthcnJheU9rOiExLGRmbHQ6MSxlZGl0VHlwZToic3R5bGUifSks c2l6ZTpsKHt9LGMuc2l6ZSx7YXJyYXlPazohMSxlZGl0VHlwZToiY2FsYyJ9KSxjb2xvcjps KHt9LGMuY29sb3Ise2FycmF5T2s6ITEsZWRpdFR5cGU6InN0eWxlIn0pLGxpbmU6e2NvbG9y Omwoe30sdS5jb2xvcix7YXJyYXlPazohMSxkZmx0OmEuZGVmYXVsdExpbmUsZWRpdFR5cGU6 InN0eWxlIn0pLHdpZHRoOmwoe30sdS53aWR0aCx7YXJyYXlPazohMSxkZmx0OjAsZWRpdFR5 cGU6InN0eWxlIn0pLG91dGxpZXJjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJz dHlsZSJ9LG91dGxpZXJ3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjEsZWRp dFR5cGU6InN0eWxlIn0sZWRpdFR5cGU6InN0eWxlIn0sZWRpdFR5cGU6InBsb3QifSxsaW5l Ontjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJzdHlsZSJ9LHdpZHRoOnt2YWxU eXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MixlZGl0VHlwZToic3R5bGUifSxlZGl0VHlwZToi cGxvdCJ9LGZpbGxjb2xvcjpuLmZpbGxjb2xvcix3aGlza2Vyd2lkdGg6e3ZhbFR5cGU6Im51 bWJlciIsbWluOjAsbWF4OjEsZGZsdDouNSxlZGl0VHlwZToiY2FsYyJ9LG9mZnNldGdyb3Vw Omkub2Zmc2V0Z3JvdXAsYWxpZ25tZW50Z3JvdXA6aS5hbGlnbm1lbnRncm91cCxzZWxlY3Rl ZDp7bWFya2VyOm4uc2VsZWN0ZWQubWFya2VyLGVkaXRUeXBlOiJzdHlsZSJ9LHVuc2VsZWN0 ZWQ6e21hcmtlcjpuLnVuc2VsZWN0ZWQubWFya2VyLGVkaXRUeXBlOiJzdHlsZSJ9LHRleHQ6 bCh7fSxuLnRleHQse30pLGhvdmVydGV4dDpsKHt9LG4uaG92ZXJ0ZXh0LHt9KSxob3ZlcnRl bXBsYXRlOnMoe30pLGhvdmVyb246e3ZhbFR5cGU6ImZsYWdsaXN0IixmbGFnczpbImJveGVz IiwicG9pbnRzIl0sZGZsdDoiYm94ZXMrcG9pbnRzIixlZGl0VHlwZToic3R5bGUifX19LHsi Li4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIjozNjUsIi4uLy4uL2xpYi9leHRl bmQiOjQ5MywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfZm9ybWF0X2F0dHJpYnV0ZXMi OjU1NywiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6NjMzLCIuLi9iYXIvYXR0 cmlidXRlcyI6NjQ4LCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiOjkyN31dLDY3NDpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGk9dCgi Li4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxhPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lh bi9hbGlnbl9wZXJpb2QiKSxvPXQoIi4uLy4uL2xpYiIpLHM9dCgiLi4vLi4vY29uc3RhbnRz L251bWVyaWNhbCIpLkJBRE5VTSxsPW8uXztlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIg cixjLHkseCxiLF8sdyxUPXQuX2Z1bGxMYXlvdXQsaz1pLmdldEZyb21JZCh0LGUueGF4aXN8 fCJ4IiksQT1pLmdldEZyb21JZCh0LGUueWF4aXN8fCJ5IiksTT1bXSxTPSJ2aW9saW4iPT09 ZS50eXBlPyJfbnVtVmlvbGlucyI6Il9udW1Cb3hlcyI7ImgiPT09ZS5vcmllbnRhdGlvbj8o eT1rLHg9IngiLGI9QSxfPSJ5Iix3PSEhZS55cGVyaW9kYWxpZ25tZW50KTooeT1BLHg9Inki LGI9ayxfPSJ4Iix3PSEhZS54cGVyaW9kYWxpZ25tZW50KTt2YXIgRSxMLEMsUCxJLE8sej1m dW5jdGlvbih0LGUscixpKXt2YXIgcyxsPWUrIjAiaW4gdCxjPSJkIitlIGluIHQ7aWYoZSBp biB0fHxsJiZjKXt2YXIgdT1yLm1ha2VDYWxjZGF0YSh0LGUpO3JldHVyblthKHQscixlLHUp LnZhbHMsdV19cz1sP3RbZSsiMCJdOiJuYW1lImluIHQmJigiY2F0ZWdvcnkiPT09ci50eXBl fHxuKHQubmFtZSkmJi0xIT09WyJsaW5lYXIiLCJsb2ciXS5pbmRleE9mKHIudHlwZSl8fG8u aXNEYXRlVGltZSh0Lm5hbWUpJiYiZGF0ZSI9PT1yLnR5cGUpP3QubmFtZTppO2Zvcih2YXIg Zj0ibXVsdGljYXRlZ29yeSI9PT1yLnR5cGU/ci5yMmNfanVzdF9pbmRpY2VzKHMpOnIuZDJj KHMsMCx0W2UrImNhbGVuZGFyIl0pLGg9dC5fbGVuZ3RoLHA9bmV3IEFycmF5KGgpLGQ9MDtk PGg7ZCsrKXBbZF09ZjtyZXR1cm5bcF19KGUsXyxiLFRbU10pLEQ9elswXSxSPXpbMV0sRj1v LmRpc3RpbmN0VmFscyhELGIpLEI9Ri52YWxzLE49Ri5taW5EaWZmLzIsaj0iYWxsIj09PShl LmJveHBvaW50c3x8ZS5wb2ludHMpP28uaWRlbnRpdHk6ZnVuY3Rpb24odCl7cmV0dXJuIHQu djxFLmxmfHx0LnY+RS51Zn07aWYoZS5faGFzUHJlQ29tcFN0YXRzKXt2YXIgVT1lW3hdLFY9 ZnVuY3Rpb24odCl7cmV0dXJuIHkuZDJjKChlW3RdfHxbXSlbcl0pfSxIPTEvMCxxPS0xLzA7 Zm9yKHI9MDtyPGUuX2xlbmd0aDtyKyspe3ZhciBHPURbcl07aWYobihHKSl7aWYoKEU9e30p LnBvcz1FW19dPUcsdyYmUiYmKEUub3JpZ19wPVJbcl0pLEUucTE9VigicTEiKSxFLm1lZD1W KCJtZWRpYW4iKSxFLnEzPVYoInEzIiksTD1bXSxVJiZvLmlzQXJyYXlPclR5cGVkQXJyYXko VVtyXSkpZm9yKGM9MDtjPFVbcl0ubGVuZ3RoO2MrKykoTz15LmQyYyhVW3JdW2NdKSkhPT1z JiYodShJPXt2Ok8saTpbcixjXX0sZSxbcixjXSksTC5wdXNoKEkpKTtpZihFLnB0cz1MLnNv cnQoZiksUD0oQz1FW3hdPUwubWFwKGgpKS5sZW5ndGgsRS5tZWQhPT1zJiZFLnExIT09cyYm RS5xMyE9PXMmJkUubWVkPj1FLnExJiZFLnEzPj1FLm1lZCl7dmFyIFk9VigibG93ZXJmZW5j ZSIpO0UubGY9WSE9PXMmJlk8PUUucTE/WTpwKEUsQyxQKTt2YXIgVz1WKCJ1cHBlcmZlbmNl Iik7RS51Zj1XIT09cyYmVz49RS5xMz9XOmQoRSxDLFApO3ZhciBYPVYoIm1lYW4iKTtFLm1l YW49WCE9PXM/WDpQP28ubWVhbihDLFApOihFLnExK0UucTMpLzI7dmFyIFo9Vigic2QiKTtF LnNkPVghPT1zJiZaPj0wP1o6UD9vLnN0ZGV2KEMsUCxFLm1lYW4pOkUucTMtRS5xMSxFLmxv PW0oRSksRS51bz1nKEUpO3ZhciBKPVYoIm5vdGNoc3BhbiIpO0o9SiE9PXMmJko+MD9KOnYo RSxQKSxFLmxuPUUubWVkLUosRS51bj1FLm1lZCtKO3ZhciBLPUUubGYsUT1FLnVmO2UuYm94 cG9pbnRzJiZDLmxlbmd0aCYmKEs9TWF0aC5taW4oSyxDWzBdKSxRPU1hdGgubWF4KFEsQ1tQ LTFdKSksZS5ub3RjaGVkJiYoSz1NYXRoLm1pbihLLEUubG4pLFE9TWF0aC5tYXgoUSxFLnVu KSksRS5taW49SyxFLm1heD1RfWVsc2V7dmFyICQ7by53YXJuKFsiSW52YWxpZCBpbnB1dCAt IG1ha2Ugc3VyZSB0aGF0IHExIDw9IG1lZGlhbiA8PSBxMyIsInExID0gIitFLnExLCJtZWRp YW4gPSAiK0UubWVkLCJxMyA9ICIrRS5xM10uam9pbigiXG4iKSksJD1FLm1lZCE9PXM/RS5t ZWQ6RS5xMSE9PXM/RS5xMyE9PXM/KEUucTErRS5xMykvMjpFLnExOkUucTMhPT1zP0UucTM6 MCxFLm1lZD0kLEUucTE9RS5xMz0kLEUubGY9RS51Zj0kLEUubWVhbj1FLnNkPSQsRS5sbj1F LnVuPSQsRS5taW49RS5tYXg9JH1IPU1hdGgubWluKEgsRS5taW4pLHE9TWF0aC5tYXgocSxF Lm1heCksRS5wdHMyPUwuZmlsdGVyKGopLE0ucHVzaChFKX19ZS5fZXh0cmVtZXNbeS5faWRd PWkuZmluZEV4dHJlbWVzKHksW0gscV0se3BhZGRlZDohMH0pfWVsc2V7dmFyIHR0PXkubWFr ZUNhbGNkYXRhKGUseCksZXQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGgsbj1u ZXcgQXJyYXkocisxKSxpPTA7aTxyO2krKyluW2ldPXRbaV0tZTtyZXR1cm4gbltyXT10W3It MV0rZSxufShCLE4pLHJ0PUIubGVuZ3RoLG50PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcg QXJyYXkodCkscj0wO3I8dDtyKyspZVtyXT1bXTtyZXR1cm4gZX0ocnQpO2ZvcihyPTA7cjxl Ll9sZW5ndGg7cisrKWlmKE89dHRbcl0sbihPKSl7dmFyIGl0PW8uZmluZEJpbihEW3JdLGV0 KTtpdD49MCYmaXQ8cnQmJih1KEk9e3Y6TyxpOnJ9LGUsciksbnRbaXRdLnB1c2goSSkpfXZh ciBhdD0xLzAsb3Q9LTEvMCxzdD1lLnF1YXJ0aWxlbWV0aG9kLGx0PSJleGNsdXNpdmUiPT09 c3QsY3Q9ImluY2x1c2l2ZSI9PT1zdDtmb3Iocj0wO3I8cnQ7cisrKWlmKG50W3JdLmxlbmd0 aD4wKXt2YXIgdXQsZnQ7aWYoKEU9e30pLnBvcz1FW19dPUJbcl0sTD1FLnB0cz1udFtyXS5z b3J0KGYpLFA9KEM9RVt4XT1MLm1hcChoKSkubGVuZ3RoLEUubWluPUNbMF0sRS5tYXg9Q1tQ LTFdLEUubWVhbj1vLm1lYW4oQyxQKSxFLnNkPW8uc3RkZXYoQyxQLEUubWVhbiksRS5tZWQ9 by5pbnRlcnAoQywuNSksUCUyJiYobHR8fGN0KSlsdD8odXQ9Qy5zbGljZSgwLFAvMiksZnQ9 Qy5zbGljZShQLzIrMSkpOmN0JiYodXQ9Qy5zbGljZSgwLFAvMisxKSxmdD1DLnNsaWNlKFAv MikpLEUucTE9by5pbnRlcnAodXQsLjUpLEUucTM9by5pbnRlcnAoZnQsLjUpO2Vsc2UgRS5x MT1vLmludGVycChDLC4yNSksRS5xMz1vLmludGVycChDLC43NSk7RS5sZj1wKEUsQyxQKSxF LnVmPWQoRSxDLFApLEUubG89bShFKSxFLnVvPWcoRSk7dmFyIGh0PXYoRSxQKTtFLmxuPUUu bWVkLWh0LEUudW49RS5tZWQraHQsYXQ9TWF0aC5taW4oYXQsRS5sbiksb3Q9TWF0aC5tYXgo b3QsRS51biksRS5wdHMyPUwuZmlsdGVyKGopLE0ucHVzaChFKX1lLl9leHRyZW1lc1t5Ll9p ZF09aS5maW5kRXh0cmVtZXMoeSxlLm5vdGNoZWQ/dHQuY29uY2F0KFthdCxvdF0pOnR0LHtw YWRkZWQ6ITB9KX1yZXR1cm4gZnVuY3Rpb24odCxlKXtpZihvLmlzQXJyYXlPclR5cGVkQXJy YXkoZS5zZWxlY3RlZHBvaW50cykpZm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe2Zvcih2 YXIgbj10W3JdLnB0c3x8W10saT17fSxhPTA7YTxuLmxlbmd0aDthKyspaVtuW2FdLmldPWE7 by50YWdTZWxlY3RlZChuLGUsaSl9fShNLGUpLE0ubGVuZ3RoPjA/KE1bMF0udD17bnVtOlRb U10sZFBvczpOLHBvc0xldHRlcjpfLHZhbExldHRlcjp4LGxhYmVsczp7bWVkOmwodCwibWVk aWFuOiIpLG1pbjpsKHQsIm1pbjoiKSxxMTpsKHQsInExOiIpLHEzOmwodCwicTM6IiksbWF4 OmwodCwibWF4OiIpLG1lYW46InNkIj09PWUuYm94bWVhbj9sKHQsIm1lYW4gXHhiMSBcdTAz YzM6Iik6bCh0LCJtZWFuOiIpLGxmOmwodCwibG93ZXIgZmVuY2U6IiksdWY6bCh0LCJ1cHBl ciBmZW5jZToiKX19LFRbU10rKyxNKTpbe3Q6e2VtcHR5OiEwfX1dfTt2YXIgYz17dGV4dDoi dHgiLGhvdmVydGV4dDoiaHR4In07ZnVuY3Rpb24gdSh0LGUscil7Zm9yKHZhciBuIGluIGMp by5pc0FycmF5T3JUeXBlZEFycmF5KGVbbl0pJiYoQXJyYXkuaXNBcnJheShyKT9vLmlzQXJy YXlPclR5cGVkQXJyYXkoZVtuXVtyWzBdXSkmJih0W2Nbbl1dPWVbbl1bclswXV1bclsxXV0p OnRbY1tuXV09ZVtuXVtyXSl9ZnVuY3Rpb24gZih0LGUpe3JldHVybiB0LnYtZS52fWZ1bmN0 aW9uIGgodCl7cmV0dXJuIHQudn1mdW5jdGlvbiBwKHQsZSxyKXtyZXR1cm4gMD09PXI/dC5x MTpNYXRoLm1pbih0LnExLGVbTWF0aC5taW4oby5maW5kQmluKDIuNSp0LnExLTEuNSp0LnEz LGUsITApKzEsci0xKV0pfWZ1bmN0aW9uIGQodCxlLHIpe3JldHVybiAwPT09cj90LnEzOk1h dGgubWF4KHQucTMsZVtNYXRoLm1heChvLmZpbmRCaW4oMi41KnQucTMtMS41KnQucTEsZSks MCldKX1mdW5jdGlvbiBtKHQpe3JldHVybiA0KnQucTEtMyp0LnEzfWZ1bmN0aW9uIGcodCl7 cmV0dXJuIDQqdC5xMy0zKnQucTF9ZnVuY3Rpb24gdih0LGUpe3JldHVybiAwPT09ZT8wOjEu NTcqKHQucTMtdC5xMSkvTWF0aC5zcXJ0KGUpfX0seyIuLi8uLi9jb25zdGFudHMvbnVtZXJp Y2FsIjo0NzksIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYWxpZ25f cGVyaW9kIjo1NTEsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo1NTQsImZhc3QtaXNu dW1lcmljIjoxOTB9XSw2NzU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxpPXQoIi4uLy4uL2xpYiIpLGE9dCgi Li4vLi4vcGxvdHMvY2FydGVzaWFuL2NvbnN0cmFpbnRzIikuZ2V0QXhpc0dyb3VwLG89WyJ2 IiwiaCJdO2Z1bmN0aW9uIHModCxlLHIsbyl7dmFyIHMsbCxjLHU9ZS5jYWxjZGF0YSxmPWUu X2Z1bGxMYXlvdXQsaD1vLl9pZCxwPWguY2hhckF0KDApLGQ9W10sbT0wO2ZvcihzPTA7czxy Lmxlbmd0aDtzKyspZm9yKGM9dVtyW3NdXSxsPTA7bDxjLmxlbmd0aDtsKyspZC5wdXNoKG8u YzJsKGNbbF0ucG9zLCEwKSksbSs9KGNbbF0ucHRzMnx8W10pLmxlbmd0aDtpZihkLmxlbmd0 aCl7dmFyIGc9aS5kaXN0aW5jdFZhbHMoZCk7ImNhdGVnb3J5IiE9PW8udHlwZSYmIm11bHRp Y2F0ZWdvcnkiIT09by50eXBlfHwoZy5taW5EaWZmPTEpO3ZhciB2PWcubWluRGlmZi8yO24u bWluRHRpY2sobyxnLm1pbkRpZmYsZy52YWxzWzBdLCEwKTt2YXIgeT1mWyJ2aW9saW4iPT09 dD8iX251bVZpb2xpbnMiOiJfbnVtQm94ZXMiXSx4PSJncm91cCI9PT1mW3QrIm1vZGUiXSYm eT4xLGI9MS1mW3QrImdhcCJdLF89MS1mW3QrImdyb3VwZ2FwIl07Zm9yKHM9MDtzPHIubGVu Z3RoO3MrKyl7dmFyIHcsVCxrLEEsTSxTLEU9KGM9dVtyW3NdXSlbMF0udHJhY2UsTD1jWzBd LnQsQz1FLndpZHRoLFA9RS5zaWRlO2lmKEMpdz1UPUE9Qy8yLGs9MDtlbHNlIGlmKHc9dix4 KXt2YXIgST1hKGYsby5faWQpK0Uub3JpZW50YXRpb24sTz0oZi5fYWxpZ25tZW50T3B0c1tJ XXx8e30pW0UuYWxpZ25tZW50Z3JvdXBdfHx7fSx6PU9iamVjdC5rZXlzKE8ub2Zmc2V0R3Jv dXBzfHx7fSkubGVuZ3RoLEQ9enx8eTtUPXcqYipfL0Qsaz0yKncqKCgoej9FLl9vZmZzZXRJ bmRleDpMLm51bSkrLjUpL0QtLjUpKmIsQT13KmIvRH1lbHNlIFQ9dypiKl8saz0wLEE9dztM LmRQb3M9dyxMLmJQb3M9ayxMLmJkUG9zPVQsTC53SG92ZXI9QTt2YXIgUixGLEIsTixqLFUs Vj1rK1QsSD1Cb29sZWFuKEMpO2lmKCJwb3NpdGl2ZSI9PT1QPyhNPXcqKEM/MTouNSksUj1W LFM9Uj1rKToibmVnYXRpdmUiPT09UD8oTT1SPWssUz13KihDPzE6LjUpLEY9Vik6KE09Uz13 LFI9Rj1WKSwoRS5ib3hwb2ludHN8fEUucG9pbnRzKSYmbT4wKXt2YXIgcT1FLnBvaW50cG9z LEc9RS5qaXR0ZXIsWT1FLm1hcmtlci5zaXplLzIsVz0wO3ErRz49MCYmKChXPVYqKHErRykp Pk0/KEg9ITAsaj1ZLEI9Vyk6Vz5SJiYoaj1ZLEI9TSkpLFc8PU0mJihCPU0pO3ZhciBYPTA7 cS1HPD0wJiYoKFg9LVYqKHEtRykpPlM/KEg9ITAsVT1ZLE49WCk6WD5GJiYoVT1ZLE49Uykp LFg8PVMmJihOPVMpfWVsc2UgQj1NLE49Uzt2YXIgWj1uZXcgQXJyYXkoYy5sZW5ndGgpO2Zv cihsPTA7bDxjLmxlbmd0aDtsKyspWltsXT1jW2xdLnBvcztFLl9leHRyZW1lc1toXT1uLmZp bmRFeHRyZW1lcyhvLFose3BhZGRlZDpILHZwYWRtaW51czpOLHZwYWRwbHVzOkIsdnBhZExp bmVhcml6ZWQ6ITAscHBhZG1pbnVzOnt4OlUseTpqfVtwXSxwcGFkcGx1czp7eDpqLHk6VX1b cF19KX19fWUuZXhwb3J0cz17Y3Jvc3NUcmFjZUNhbGM6ZnVuY3Rpb24odCxlKXtmb3IodmFy IHI9dC5jYWxjZGF0YSxuPWUueGF4aXMsaT1lLnlheGlzLGE9MDthPG8ubGVuZ3RoO2ErKyl7 Zm9yKHZhciBsPW9bYV0sYz0iaCI9PT1sP2k6bix1PVtdLGY9MDtmPHIubGVuZ3RoO2YrKyl7 dmFyIGg9cltmXSxwPWhbMF0udCxkPWhbMF0udHJhY2U7ITAhPT1kLnZpc2libGV8fCJib3gi IT09ZC50eXBlJiYiY2FuZGxlc3RpY2siIT09ZC50eXBlfHxwLmVtcHR5fHwoZC5vcmllbnRh dGlvbnx8InYiKSE9PWx8fGQueGF4aXMhPT1uLl9pZHx8ZC55YXhpcyE9PWkuX2lkfHx1LnB1 c2goZil9cygiYm94Iix0LHUsYyl9fSxzZXRQb3NpdGlvbk9mZnNldDpzfX0seyIuLi8uLi9s aWIiOjUwMywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjU1NCwiLi4vLi4vcGxvdHMv Y2FydGVzaWFuL2NvbnN0cmFpbnRzIjo1NjJ9XSw2NzY6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9yZWdpc3RyeSIpLGE9 dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLG89dCgiLi4vc2NhdHRlci9wZXJpb2RfZGVm YXVsdHMiKSxzPXQoIi4uL2Jhci9kZWZhdWx0cyIpLmhhbmRsZUdyb3VwaW5nRGVmYXVsdHMs bD10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19hdXRvdHlwZSIpLGM9dCgiLi9hdHRy aWJ1dGVzIik7ZnVuY3Rpb24gdSh0LGUscixhKXtmdW5jdGlvbiBvKHQpe3ZhciBlPTA7cmV0 dXJuIHQmJnQubGVuZ3RoJiYoZSs9MSxuLmlzQXJyYXlPclR5cGVkQXJyYXkodFswXSkmJnRb MF0ubGVuZ3RoJiYoZSs9MSkpLGV9ZnVuY3Rpb24gcyhlKXtyZXR1cm4gbi52YWxpZGF0ZSh0 W2VdLGNbZV0pfXZhciB1LGY9cigieSIpLGg9cigieCIpO2lmKCJib3giPT09ZS50eXBlKXt2 YXIgcD1yKCJxMSIpLGQ9cigibWVkaWFuIiksbT1yKCJxMyIpO2UuX2hhc1ByZUNvbXBTdGF0 cz1wJiZwLmxlbmd0aCYmZCYmZC5sZW5ndGgmJm0mJm0ubGVuZ3RoLHU9TWF0aC5taW4obi5t aW5Sb3dMZW5ndGgocCksbi5taW5Sb3dMZW5ndGgoZCksbi5taW5Sb3dMZW5ndGgobSkpfXZh ciBnLHYseT1vKGYpLHg9byhoKSxiPXkmJm4ubWluUm93TGVuZ3RoKGYpLF89eCYmbi5taW5S b3dMZW5ndGgoaCksdz1hLmNhbGVuZGFyLFQ9e2F1dG90eXBlbnVtYmVyczphLmF1dG90eXBl bnVtYmVyc307aWYoZS5faGFzUHJlQ29tcFN0YXRzKXN3aXRjaChTdHJpbmcoeCkrU3RyaW5n KHkpKXtjYXNlIjAwIjp2YXIgaz1zKCJ4MCIpfHxzKCJkeCIpO2c9KHMoInkwIil8fHMoImR5 IikpJiYhaz8iaCI6InYiLHY9dTticmVhaztjYXNlIjEwIjpnPSJ2Iix2PU1hdGgubWluKHUs Xyk7YnJlYWs7Y2FzZSIyMCI6Zz0iaCIsdj1NYXRoLm1pbih1LGgubGVuZ3RoKTticmVhaztj YXNlIjAxIjpnPSJoIix2PU1hdGgubWluKHUsYik7YnJlYWs7Y2FzZSIwMiI6Zz0idiIsdj1N YXRoLm1pbih1LGYubGVuZ3RoKTticmVhaztjYXNlIjEyIjpnPSJ2Iix2PU1hdGgubWluKHUs XyxmLmxlbmd0aCk7YnJlYWs7Y2FzZSIyMSI6Zz0iaCIsdj1NYXRoLm1pbih1LGgubGVuZ3Ro LGIpO2JyZWFrO2Nhc2UiMTEiOnY9MDticmVhaztjYXNlIjIyIjp2YXIgQSxNPSExO2ZvcihB PTA7QTxoLmxlbmd0aDtBKyspaWYoImNhdGVnb3J5Ij09PWwoaFtBXSx3LFQpKXtNPSEwO2Jy ZWFrfWlmKE0pZz0idiIsdj1NYXRoLm1pbih1LF8sZi5sZW5ndGgpO2Vsc2V7Zm9yKEE9MDtB PGYubGVuZ3RoO0ErKylpZigiY2F0ZWdvcnkiPT09bChmW0FdLHcsVCkpe009ITA7YnJlYWt9 TT8oZz0iaCIsdj1NYXRoLm1pbih1LGgubGVuZ3RoLGIpKTooZz0idiIsdj1NYXRoLm1pbih1 LF8sZi5sZW5ndGgpKX19ZWxzZSB5PjA/KGc9InYiLHY9eD4wP01hdGgubWluKF8sYik6TWF0 aC5taW4oYikpOng+MD8oZz0iaCIsdj1NYXRoLm1pbihfKSk6dj0wO2lmKHYpe2UuX2xlbmd0 aD12O3ZhciBTPXIoIm9yaWVudGF0aW9uIixnKTtlLl9oYXNQcmVDb21wU3RhdHM/InYiPT09 UyYmMD09PXg/KHIoIngwIiwwKSxyKCJkeCIsMSkpOiJoIj09PVMmJjA9PT15JiYocigieTAi LDApLHIoImR5IiwxKSk6InYiPT09UyYmMD09PXg/cigieDAiKToiaCI9PT1TJiYwPT09eSYm cigieTAiKSxpLmdldENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJzIiwiaGFuZGxlVHJhY2VE ZWZhdWx0cyIpKHQsZSxbIngiLCJ5Il0sYSl9ZWxzZSBlLnZpc2libGU9ITF9ZnVuY3Rpb24g Zih0LGUscixpKXt2YXIgYT1pLnByZWZpeCxvPW4uY29lcmNlMih0LGUsYywibWFya2VyLm91 dGxpZXJjb2xvciIpLHM9cigibWFya2VyLmxpbmUub3V0bGllcmNvbG9yIiksbD0ib3V0bGll cnMiO2UuX2hhc1ByZUNvbXBTdGF0cz9sPSJhbGwiOihvfHxzKSYmKGw9InN1c3BlY3RlZG91 dGxpZXJzIik7dmFyIHU9cihhKyJwb2ludHMiLGwpO3U/KHIoImppdHRlciIsImFsbCI9PT11 Py4zOjApLHIoInBvaW50cG9zIiwiYWxsIj09PXU/LTEuNTowKSxyKCJtYXJrZXIuc3ltYm9s IikscigibWFya2VyLm9wYWNpdHkiKSxyKCJtYXJrZXIuc2l6ZSIpLHIoIm1hcmtlci5jb2xv ciIsZS5saW5lLmNvbG9yKSxyKCJtYXJrZXIubGluZS5jb2xvciIpLHIoIm1hcmtlci5saW5l LndpZHRoIiksInN1c3BlY3RlZG91dGxpZXJzIj09PXUmJihyKCJtYXJrZXIubGluZS5vdXRs aWVyY29sb3IiLGUubWFya2VyLmNvbG9yKSxyKCJtYXJrZXIubGluZS5vdXRsaWVyd2lkdGgi KSkscigic2VsZWN0ZWQubWFya2VyLmNvbG9yIikscigidW5zZWxlY3RlZC5tYXJrZXIuY29s b3IiKSxyKCJzZWxlY3RlZC5tYXJrZXIuc2l6ZSIpLHIoInVuc2VsZWN0ZWQubWFya2VyLnNp emUiKSxyKCJ0ZXh0IikscigiaG92ZXJ0ZXh0IikpOmRlbGV0ZSBlLm1hcmtlcjt2YXIgZj1y KCJob3Zlcm9uIik7ImFsbCIhPT1mJiYtMT09PWYuaW5kZXhPZigicG9pbnRzIil8fHIoImhv dmVydGVtcGxhdGUiKSxuLmNvZXJjZVNlbGVjdGlvbk1hcmtlck9wYWNpdHkoZSxyKX1lLmV4 cG9ydHM9e3N1cHBseURlZmF1bHRzOmZ1bmN0aW9uKHQsZSxyLGkpe2Z1bmN0aW9uIHMocixp KXtyZXR1cm4gbi5jb2VyY2UodCxlLGMscixpKX1pZih1KHQsZSxzLGkpLCExIT09ZS52aXNp YmxlKXtvKHQsZSxpLHMpLHMoInhob3ZlcmZvcm1hdCIpLHMoInlob3ZlcmZvcm1hdCIpO3Zh ciBsPWUuX2hhc1ByZUNvbXBTdGF0cztsJiYocygibG93ZXJmZW5jZSIpLHMoInVwcGVyZmVu Y2UiKSkscygibGluZS5jb2xvciIsKHQubWFya2VyfHx7fSkuY29sb3J8fHIpLHMoImxpbmUu d2lkdGgiKSxzKCJmaWxsY29sb3IiLGEuYWRkT3BhY2l0eShlLmxpbmUuY29sb3IsLjUpKTt2 YXIgaD0hMTtpZihsKXt2YXIgcD1zKCJtZWFuIiksZD1zKCJzZCIpO3AmJnAubGVuZ3RoJiYo aD0hMCxkJiZkLmxlbmd0aCYmKGg9InNkIikpfXMoImJveG1lYW4iLGgpLHMoIndoaXNrZXJ3 aWR0aCIpLHMoIndpZHRoIikscygicXVhcnRpbGVtZXRob2QiKTt2YXIgbT0hMTtpZihsKXt2 YXIgZz1zKCJub3RjaHNwYW4iKTtnJiZnLmxlbmd0aCYmKG09ITApfWVsc2Ugbi52YWxpZGF0 ZSh0Lm5vdGNod2lkdGgsYy5ub3RjaHdpZHRoKSYmKG09ITApO3MoIm5vdGNoZWQiLG0pJiZz KCJub3RjaHdpZHRoIiksZih0LGUscyx7cHJlZml4OiJib3gifSl9fSxjcm9zc1RyYWNlRGVm YXVsdHM6ZnVuY3Rpb24odCxlKXt2YXIgcixpO2Z1bmN0aW9uIGEodCl7cmV0dXJuIG4uY29l cmNlKGkuX2lucHV0LGksYyx0KX1mb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIGw9 KGk9dFtvXSkudHlwZTsiYm94IiE9PWwmJiJ2aW9saW4iIT09bHx8KHI9aS5faW5wdXQsImdy b3VwIj09PWVbbCsibW9kZSJdJiZzKHIsaSxlLGEpKX19LGhhbmRsZVNhbXBsZURlZmF1bHRz OnUsaGFuZGxlUG9pbnRzRGVmYXVsdHM6Zn19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6 MzY2LCIuLi8uLi9saWIiOjUwMywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfYXV0b3R5 cGUiOjU1NSwiLi4vLi4vcmVnaXN0cnkiOjYzOCwiLi4vYmFyL2RlZmF1bHRzIjo2NTIsIi4u L3NjYXR0ZXIvcGVyaW9kX2RlZmF1bHRzIjo5NDcsIi4vYXR0cmlidXRlcyI6NjczfV0sNjc3 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUp e3JldHVybiBlLmhvdmVyT25Cb3gmJih0LmhvdmVyT25Cb3g9ZS5ob3Zlck9uQm94KSwieFZh bCJpbiBlJiYodC54PWUueFZhbCksInlWYWwiaW4gZSYmKHQueT1lLnlWYWwpLGUueGEmJih0 LnhheGlzPWUueGEpLGUueWEmJih0LnlheGlzPWUueWEpLHR9fSx7fV0sNjc4OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9h eGVzIiksaT10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvZngiKSxvPXQo Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxzPWkuZmlsbFRleHQ7ZnVuY3Rpb24gbCh0LGUs cixzKXt2YXIgbCxjLHUsZixoLHAsZCxtLGcsdix5LHgsYixfLHc9dC5jZCxUPXQueGEsaz10 LnlhLEE9d1swXS50cmFjZSxNPXdbMF0udCxTPSJ2aW9saW4iPT09QS50eXBlLEU9W10sTD1N LmJkUG9zLEM9TS53SG92ZXIsUD1mdW5jdGlvbih0KXtyZXR1cm4gdS5jMmwodC5wb3MpK00u YlBvcy11LmMybChwKX07UyYmImJvdGgiIT09QS5zaWRlPygicG9zaXRpdmUiPT09QS5zaWRl JiYoZz1mdW5jdGlvbih0KXt2YXIgZT1QKHQpO3JldHVybiBhLmluYm94KGUsZStDLHYpfSx4 PUwsYj0wKSwibmVnYXRpdmUiPT09QS5zaWRlJiYoZz1mdW5jdGlvbih0KXt2YXIgZT1QKHQp O3JldHVybiBhLmluYm94KGUtQyxlLHYpfSx4PTAsYj1MKSk6KGc9ZnVuY3Rpb24odCl7dmFy IGU9UCh0KTtyZXR1cm4gYS5pbmJveChlLUMsZStDLHYpfSx4PWI9TCksXz1TP2Z1bmN0aW9u KHQpe3JldHVybiBhLmluYm94KHQuc3BhblswXS1oLHQuc3BhblsxXS1oLHYpfTpmdW5jdGlv bih0KXtyZXR1cm4gYS5pbmJveCh0Lm1pbi1oLHQubWF4LWgsdil9LCJoIj09PUEub3JpZW50 YXRpb24/KGg9ZSxwPXIsZD1fLG09ZyxsPSJ5Iix1PWssYz0ieCIsZj1UKTooaD1yLHA9ZSxk PWcsbT1fLGw9IngiLHU9VCxjPSJ5IixmPWspO3ZhciBJPU1hdGgubWluKDEsTC9NYXRoLmFi cyh1LnIyYyh1LnJhbmdlWzFdKS11LnIyYyh1LnJhbmdlWzBdKSkpO2Z1bmN0aW9uIE8odCl7 cmV0dXJuKGQodCkrbSh0KSkvMn12PXQubWF4SG92ZXJEaXN0YW5jZS1JLHk9dC5tYXhTcGlr ZURpc3RhbmNlLUk7dmFyIHo9YS5nZXREaXN0YW5jZUZ1bmN0aW9uKHMsZCxtLE8pO2lmKGEu Z2V0Q2xvc2VzdCh3LHosdCksITE9PT10LmluZGV4KXJldHVybltdO3ZhciBEPXdbdC5pbmRl eF0sUj1BLmxpbmUuY29sb3IsRj0oQS5tYXJrZXJ8fHt9KS5jb2xvcjtvLm9wYWNpdHkoUikm JkEubGluZS53aWR0aD90LmNvbG9yPVI6by5vcGFjaXR5KEYpJiZBLmJveHBvaW50cz90LmNv bG9yPUY6dC5jb2xvcj1BLmZpbGxjb2xvcix0W2wrIjAiXT11LmMycChELnBvcytNLmJQb3Mt YiwhMCksdFtsKyIxIl09dS5jMnAoRC5wb3MrTS5iUG9zK3gsITApLHRbbCsiTGFiZWxWYWwi XT12b2lkIDAhPT1ELm9yaWdfcD9ELm9yaWdfcDpELnBvczt2YXIgQj1sKyJTcGlrZSI7dC5z cGlrZURpc3RhbmNlPU8oRCkqeS92LHRbQl09dS5jMnAoRC5wb3MsITApO3ZhciBOPXt9LGo9 WyJtZWQiLCJxMSIsInEzIiwibWluIiwibWF4Il07KEEuYm94bWVhbnx8KEEubWVhbmxpbmV8 fHt9KS52aXNpYmxlKSYmai5wdXNoKCJtZWFuIiksKEEuYm94cG9pbnRzfHxBLnBvaW50cykm JmoucHVzaCgibGYiLCJ1ZiIpO2Zvcih2YXIgVT0wO1U8ai5sZW5ndGg7VSsrKXt2YXIgVj1q W1VdO2lmKFYgaW4gRCYmIShEW1ZdaW4gTikpe05bRFtWXV09ITA7dmFyIEg9RFtWXSxxPWYu YzJwKEgsITApLEc9aS5leHRlbmRGbGF0KHt9LHQpO0cuYXR0cj1WLEdbYysiMCJdPUdbYysi MSJdPXEsR1tjKyJMYWJlbFZhbCJdPUgsR1tjKyJMYWJlbCJdPShNLmxhYmVscz9NLmxhYmVs c1tWXSsiICI6IiIpK24uaG92ZXJMYWJlbFRleHQoZixILEFbYysiaG92ZXJmb3JtYXQiXSks Ry5ob3Zlck9uQm94PSEwLCJtZWFuIj09PVYmJiJzZCJpbiBEJiYic2QiPT09QS5ib3htZWFu JiYoR1tjKyJlcnIiXT1ELnNkKSx0Lm5hbWU9IiIsdC5zcGlrZURpc3RhbmNlPXZvaWQgMCx0 W0JdPXZvaWQgMCxHLmhvdmVydGVtcGxhdGU9ITEsRS5wdXNoKEcpfX1yZXR1cm4gRX1mdW5j dGlvbiBjKHQsZSxyKXtmb3IodmFyIG4sbyxsLGM9dC5jZCx1PXQueGEsZj10LnlhLGg9Y1sw XS50cmFjZSxwPXUuYzJwKGUpLGQ9Zi5jMnAociksbT1hLnF1YWRyYXR1cmUoKGZ1bmN0aW9u KHQpe3ZhciBlPU1hdGgubWF4KDMsdC5tcmN8fDApO3JldHVybiBNYXRoLm1heChNYXRoLmFi cyh1LmMycCh0LngpLXApLWUsMS0zL2UpfSksKGZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgubWF4 KDMsdC5tcmN8fDApO3JldHVybiBNYXRoLm1heChNYXRoLmFicyhmLmMycCh0LnkpLWQpLWUs MS0zL2UpfSkpLGc9ITEsdj0wO3Y8Yy5sZW5ndGg7disrKXtvPWNbdl07Zm9yKHZhciB5PTA7 eTwoby5wdHN8fFtdKS5sZW5ndGg7eSsrKXt2YXIgeD1tKGw9by5wdHNbeV0pO3g8PXQuZGlz dGFuY2UmJih0LmRpc3RhbmNlPXgsZz1bdix5XSl9fWlmKCFnKXJldHVybiExO2w9KG89Y1tn WzBdXSkucHRzW2dbMV1dO3ZhciBiPXUuYzJwKGwueCwhMCksXz1mLmMycChsLnksITApLHc9 bC5tcmN8fDE7bj1pLmV4dGVuZEZsYXQoe30sdCx7aW5kZXg6bC5pLGNvbG9yOihoLm1hcmtl cnx8e30pLmNvbG9yLG5hbWU6aC5uYW1lLHgwOmItdyx4MTpiK3cseTA6Xy13LHkxOl8rdyxz cGlrZURpc3RhbmNlOnQuZGlzdGFuY2UsaG92ZXJ0ZW1wbGF0ZTpoLmhvdmVydGVtcGxhdGV9 KTt2YXIgVCxrPW8ub3JpZ19wLEE9dm9pZCAwIT09az9rOm8ucG9zO3JldHVybiJoIj09PWgu b3JpZW50YXRpb24/KFQ9ZixuLnhMYWJlbFZhbD1sLngsbi55TGFiZWxWYWw9QSk6KFQ9dSxu LnhMYWJlbFZhbD1BLG4ueUxhYmVsVmFsPWwueSksbltULl9pZC5jaGFyQXQoMCkrIlNwaWtl Il09VC5jMnAoby5wb3MsITApLHMobCxoLG4pLG59ZS5leHBvcnRzPXtob3ZlclBvaW50czpm dW5jdGlvbih0LGUscixuKXt2YXIgaSxhPXQuY2RbMF0udHJhY2UuaG92ZXJvbixvPVtdO3Jl dHVybi0xIT09YS5pbmRleE9mKCJib3hlcyIpJiYobz1vLmNvbmNhdChsKHQsZSxyLG4pKSks LTEhPT1hLmluZGV4T2YoInBvaW50cyIpJiYoaT1jKHQsZSxyKSksImNsb3Nlc3QiPT09bj9p P1tpXTpvOmk/KG8ucHVzaChpKSxvKTpvfSxob3Zlck9uQm94ZXM6bCxob3Zlck9uUG9pbnRz OmN9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjM2NiwiLi4vLi4vY29tcG9uZW50cy9m eCI6NDA2LCIuLi8uLi9saWIiOjUwMywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjU1 NH1dLDY3OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2F0dHJp YnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksbGF5b3V0QXR0cmlidXRlczp0KCIuL2xheW91dF9h dHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLnN1cHBseURlZmF1 bHRzLGNyb3NzVHJhY2VEZWZhdWx0czp0KCIuL2RlZmF1bHRzIikuY3Jvc3NUcmFjZURlZmF1 bHRzLHN1cHBseUxheW91dERlZmF1bHRzOnQoIi4vbGF5b3V0X2RlZmF1bHRzIikuc3VwcGx5 TGF5b3V0RGVmYXVsdHMsY2FsYzp0KCIuL2NhbGMiKSxjcm9zc1RyYWNlQ2FsYzp0KCIuL2Ny b3NzX3RyYWNlX2NhbGMiKS5jcm9zc1RyYWNlQ2FsYyxwbG90OnQoIi4vcGxvdCIpLnBsb3Qs c3R5bGU6dCgiLi9zdHlsZSIpLnN0eWxlLHN0eWxlT25TZWxlY3Q6dCgiLi9zdHlsZSIpLnN0 eWxlT25TZWxlY3QsaG92ZXJQb2ludHM6dCgiLi9ob3ZlciIpLmhvdmVyUG9pbnRzLGV2ZW50 RGF0YTp0KCIuL2V2ZW50X2RhdGEiKSxzZWxlY3RQb2ludHM6dCgiLi9zZWxlY3QiKSxtb2R1 bGVUeXBlOiJ0cmFjZSIsbmFtZToiYm94IixiYXNlUGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4iKSxjYXRlZ29yaWVzOlsiY2FydGVzaWFuIiwic3ZnIiwic3ltYm9scyIs Im9yaWVudGVkIiwiYm94LXZpb2xpbiIsInNob3dMZWdlbmQiLCJib3hMYXlvdXQiLCJ6b29t U2NhbGUiXSxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iOjU2OCwiLi9hdHRy aWJ1dGVzIjo2NzMsIi4vY2FsYyI6Njc0LCIuL2Nyb3NzX3RyYWNlX2NhbGMiOjY3NSwiLi9k ZWZhdWx0cyI6Njc2LCIuL2V2ZW50X2RhdGEiOjY3NywiLi9ob3ZlciI6Njc4LCIuL2xheW91 dF9hdHRyaWJ1dGVzIjo2ODAsIi4vbGF5b3V0X2RlZmF1bHRzIjo2ODEsIi4vcGxvdCI6Njgy LCIuL3NlbGVjdCI6NjgzLCIuL3N0eWxlIjo2ODR9XSw2ODA6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7ZS5leHBvcnRzPXtib3htb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2 YWx1ZXM6WyJncm91cCIsIm92ZXJsYXkiXSxkZmx0OiJvdmVybGF5IixlZGl0VHlwZToiY2Fs YyJ9LGJveGdhcDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0Oi4zLGVkaXRU eXBlOiJjYWxjIn0sYm94Z3JvdXBnYXA6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEs ZGZsdDouMyxlZGl0VHlwZToiY2FsYyJ9fX0se31dLDY4MTpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9yZWdpc3RyeSIpLGk9dCgiLi4vLi4vbGliIiks YT10KCIuL2xheW91dF9hdHRyaWJ1dGVzIik7ZnVuY3Rpb24gbyh0LGUscixpLGEpe2Zvcih2 YXIgbz1hKyJMYXlvdXQiLHM9ITEsbD0wO2w8ci5sZW5ndGg7bCsrKXt2YXIgYz1yW2xdO2lm KG4udHJhY2VJcyhjLG8pKXtzPSEwO2JyZWFrfX1zJiYoaShhKyJtb2RlIiksaShhKyJnYXAi KSxpKGErImdyb3VwZ2FwIikpfWUuZXhwb3J0cz17c3VwcGx5TGF5b3V0RGVmYXVsdHM6ZnVu Y3Rpb24odCxlLHIpe28oMCwwLHIsKGZ1bmN0aW9uKHIsbil7cmV0dXJuIGkuY29lcmNlKHQs ZSxhLHIsbil9KSwiYm94Iil9LF9zdXBwbHk6b319LHsiLi4vLi4vbGliIjo1MDMsIi4uLy4u L3JlZ2lzdHJ5Ijo2MzgsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjY4MH1dLDY4MjpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJAcGxvdGx5L2QzIiksaT10KCIuLi8u Li9saWIiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpO2Z1bmN0aW9uIG8odCxl LHIsYSl7dmFyIG8scyxsPSJoIj09PXIub3JpZW50YXRpb24sYz1lLnZhbCx1PWUucG9zLGY9 ISF1LnJhbmdlYnJlYWtzLGg9YS5iUG9zLHA9YS53ZFBvc3x8MCxkPWEuYlBvc1B4T2Zmc2V0 fHwwLG09ci53aGlza2Vyd2lkdGh8fDAsZz1yLm5vdGNoZWR8fCExLHY9Zz8xLTIqci5ub3Rj aHdpZHRoOjE7QXJyYXkuaXNBcnJheShhLmJkUG9zKT8obz1hLmJkUG9zWzBdLHM9YS5iZFBv c1sxXSk6KG89YS5iZFBvcyxzPWEuYmRQb3MpO3ZhciB5PXQuc2VsZWN0QWxsKCJwYXRoLmJv eCIpLmRhdGEoInZpb2xpbiIhPT1yLnR5cGV8fHIuYm94LnZpc2libGU/aS5pZGVudGl0eTpb XSk7eS5lbnRlcigpLmFwcGVuZCgicGF0aCIpLnN0eWxlKCJ2ZWN0b3ItZWZmZWN0Iiwibm9u LXNjYWxpbmctc3Ryb2tlIikuYXR0cigiY2xhc3MiLCJib3giKSx5LmV4aXQoKS5yZW1vdmUo KSx5LmVhY2goKGZ1bmN0aW9uKHQpe2lmKHQuZW1wdHkpcmV0dXJuIk0wLDBaIjt2YXIgZT11 LmMybCh0LnBvcytoLCEwKSxhPXUubDJwKGUtbykrZCx5PXUubDJwKGUrcykrZCx4PWY/KGEr eSkvMjp1LmwycChlKStkLGI9ci53aGlza2Vyd2lkdGgsXz1mP2EqYisoMS1iKSp4OnUubDJw KGUtcCkrZCx3PWY/eSpiKygxLWIpKng6dS5sMnAoZStwKStkLFQ9dS5sMnAoZS1vKnYpK2Qs az11LmwycChlK3MqdikrZCxBPWMuYzJwKHQucTEsITApLE09Yy5jMnAodC5xMywhMCksUz1p LmNvbnN0cmFpbihjLmMycCh0Lm1lZCwhMCksTWF0aC5taW4oQSxNKSsxLE1hdGgubWF4KEEs TSktMSksRT12b2lkIDA9PT10LmxmfHwhMT09PXIuYm94cG9pbnRzLEw9Yy5jMnAoRT90Lm1p bjp0LmxmLCEwKSxDPWMuYzJwKEU/dC5tYXg6dC51ZiwhMCksUD1jLmMycCh0LmxuLCEwKSxJ PWMuYzJwKHQudW4sITApO2w/bi5zZWxlY3QodGhpcykuYXR0cigiZCIsIk0iK1MrIiwiK1Qr IlYiK2srIk0iK0ErIiwiK2ErIlYiK3krKGc/IkgiK1ArIkwiK1MrIiwiK2srIkwiK0krIiwi K3k6IiIpKyJIIitNKyJWIithKyhnPyJIIitJKyJMIitTKyIsIitUKyJMIitQKyIsIithOiIi KSsiWk0iK0ErIiwiK3grIkgiK0wrIk0iK00rIiwiK3grIkgiK0MrKDA9PT1tPyIiOiJNIitM KyIsIitfKyJWIit3KyJNIitDKyIsIitfKyJWIit3KSk6bi5zZWxlY3QodGhpcykuYXR0cigi ZCIsIk0iK1QrIiwiK1MrIkgiK2srIk0iK2ErIiwiK0ErIkgiK3krKGc/IlYiK1ArIkwiK2sr IiwiK1MrIkwiK3krIiwiK0k6IiIpKyJWIitNKyJIIithKyhnPyJWIitJKyJMIitUKyIsIitT KyJMIithKyIsIitQOiIiKSsiWk0iK3grIiwiK0ErIlYiK0wrIk0iK3grIiwiK00rIlYiK0Mr KDA9PT1tPyIiOiJNIitfKyIsIitMKyJIIit3KyJNIitfKyIsIitDKyJIIit3KSl9KSl9ZnVu Y3Rpb24gcyh0LGUscixuKXt2YXIgbz1lLngscz1lLnksbD1uLmJkUG9zLGM9bi5iUG9zLHU9 ci5ib3hwb2ludHN8fHIucG9pbnRzO2kuc2VlZFBzZXVkb1JhbmRvbSgpO3ZhciBmPXQuc2Vs ZWN0QWxsKCJnLnBvaW50cyIpLmRhdGEodT9mdW5jdGlvbih0KXtyZXR1cm4gdC5mb3JFYWNo KChmdW5jdGlvbih0KXt0LnQ9bix0LnRyYWNlPXJ9KSksdH06W10pO2YuZW50ZXIoKS5hcHBl bmQoImciKS5hdHRyKCJjbGFzcyIsInBvaW50cyIpLGYuZXhpdCgpLnJlbW92ZSgpO3ZhciBo PWYuc2VsZWN0QWxsKCJwYXRoIikuZGF0YSgoZnVuY3Rpb24odCl7dmFyIGUsbixhPXQucHRz MixvPU1hdGgubWF4KCh0Lm1heC10Lm1pbikvMTAsdC5xMy10LnExKSxzPTFlLTkqbyxmPS4w MSpvLGg9W10scD0wO2lmKHIuaml0dGVyKXtpZigwPT09bylmb3IocD0xLGg9bmV3IEFycmF5 KGEubGVuZ3RoKSxlPTA7ZTxhLmxlbmd0aDtlKyspaFtlXT0xO2Vsc2UgZm9yKGU9MDtlPGEu bGVuZ3RoO2UrKyl7dmFyIGQ9TWF0aC5tYXgoMCxlLTUpLG09YVtkXS52LGc9TWF0aC5taW4o YS5sZW5ndGgtMSxlKzUpLHY9YVtnXS52OyJhbGwiIT09dSYmKGFbZV0udjx0LmxmP3Y9TWF0 aC5taW4odix0LmxmKTptPU1hdGgubWF4KG0sdC51ZikpO3ZhciB5PU1hdGguc3FydChmKihn LWQpLyh2LW0rcykpfHwwO3k9aS5jb25zdHJhaW4oTWF0aC5hYnMoeSksMCwxKSxoLnB1c2go eSkscD1NYXRoLm1heCh5LHApfW49MipyLmppdHRlci8ocHx8MSl9Zm9yKGU9MDtlPGEubGVu Z3RoO2UrKyl7dmFyIHg9YVtlXSxiPXgudixfPXIuaml0dGVyP24qaFtlXSooaS5wc2V1ZG9S YW5kb20oKS0uNSk6MCx3PXQucG9zK2MrbCooci5wb2ludHBvcytfKTsiaCI9PT1yLm9yaWVu dGF0aW9uPyh4Lnk9dyx4Lng9Yik6KHgueD13LHgueT1iKSwic3VzcGVjdGVkb3V0bGllcnMi PT09dSYmYjx0LnVvJiZiPnQubG8mJih4LnNvPSEwKX1yZXR1cm4gYX0pKTtoLmVudGVyKCku YXBwZW5kKCJwYXRoIikuY2xhc3NlZCgicG9pbnQiLCEwKSxoLmV4aXQoKS5yZW1vdmUoKSxo LmNhbGwoYS50cmFuc2xhdGVQb2ludHMsbyxzKX1mdW5jdGlvbiBsKHQsZSxyLGEpe3ZhciBv LHMsbD1lLnZhbCxjPWUucG9zLHU9ISFjLnJhbmdlYnJlYWtzLGY9YS5iUG9zLGg9YS5iUG9z UHhPZmZzZXR8fDAscD1yLmJveG1lYW58fChyLm1lYW5saW5lfHx7fSkudmlzaWJsZTtBcnJh eS5pc0FycmF5KGEuYmRQb3MpPyhvPWEuYmRQb3NbMF0scz1hLmJkUG9zWzFdKToobz1hLmJk UG9zLHM9YS5iZFBvcyk7dmFyIGQ9dC5zZWxlY3RBbGwoInBhdGgubWVhbiIpLmRhdGEoImJv eCI9PT1yLnR5cGUmJnIuYm94bWVhbnx8InZpb2xpbiI9PT1yLnR5cGUmJnIuYm94LnZpc2li bGUmJnIubWVhbmxpbmUudmlzaWJsZT9pLmlkZW50aXR5OltdKTtkLmVudGVyKCkuYXBwZW5k KCJwYXRoIikuYXR0cigiY2xhc3MiLCJtZWFuIikuc3R5bGUoe2ZpbGw6Im5vbmUiLCJ2ZWN0 b3ItZWZmZWN0Ijoibm9uLXNjYWxpbmctc3Ryb2tlIn0pLGQuZXhpdCgpLnJlbW92ZSgpLGQu ZWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9Yy5jMmwodC5wb3MrZiwhMCksaT1jLmwycChlLW8p K2gsYT1jLmwycChlK3MpK2gsZD11PyhpK2EpLzI6Yy5sMnAoZSkraCxtPWwuYzJwKHQubWVh biwhMCksZz1sLmMycCh0Lm1lYW4tdC5zZCwhMCksdj1sLmMycCh0Lm1lYW4rdC5zZCwhMCk7 ImgiPT09ci5vcmllbnRhdGlvbj9uLnNlbGVjdCh0aGlzKS5hdHRyKCJkIiwiTSIrbSsiLCIr aSsiViIrYSsoInNkIj09PXA/Im0wLDBMIitnKyIsIitkKyJMIittKyIsIitpKyJMIit2KyIs IitkKyJaIjoiIikpOm4uc2VsZWN0KHRoaXMpLmF0dHIoImQiLCJNIitpKyIsIittKyJIIith Kygic2QiPT09cD8ibTAsMEwiK2QrIiwiK2crIkwiK2krIiwiK20rIkwiK2QrIiwiK3YrIloi OiIiKSl9KSl9ZS5leHBvcnRzPXtwbG90OmZ1bmN0aW9uKHQsZSxyLGEpe3ZhciBjPWUueGF4 aXMsdT1lLnlheGlzO2kubWFrZVRyYWNlR3JvdXBzKGEsciwidHJhY2UgYm94ZXMiKS5lYWNo KChmdW5jdGlvbih0KXt2YXIgZSxyLGk9bi5zZWxlY3QodGhpcyksYT10WzBdLGY9YS50LGg9 YS50cmFjZTsoZi53ZFBvcz1mLmJkUG9zKmgud2hpc2tlcndpZHRoLCEwIT09aC52aXNpYmxl fHxmLmVtcHR5KT9pLnJlbW92ZSgpOigiaCI9PT1oLm9yaWVudGF0aW9uPyhlPXUscj1jKToo ZT1jLHI9dSksbyhpLHtwb3M6ZSx2YWw6cn0saCxmKSxzKGkse3g6Yyx5OnV9LGgsZiksbChp LHtwb3M6ZSx2YWw6cn0saCxmKSl9KSl9LHBsb3RCb3hBbmRXaGlza2VyczpvLHBsb3RQb2lu dHM6cyxwbG90Qm94TWVhbjpsfX0seyIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjM4OCwi Li4vLi4vbGliIjo1MDMsIkBwbG90bHkvZDMiOjU4fV0sNjgzOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLG4saT10LmNkLGE9 dC54YXhpcyxvPXQueWF4aXMscz1bXTtpZighMT09PWUpZm9yKHI9MDtyPGkubGVuZ3RoO3Ir Kylmb3Iobj0wO248KGlbcl0ucHRzfHxbXSkubGVuZ3RoO24rKylpW3JdLnB0c1tuXS5zZWxl Y3RlZD0wO2Vsc2UgZm9yKHI9MDtyPGkubGVuZ3RoO3IrKylmb3Iobj0wO248KGlbcl0ucHRz fHxbXSkubGVuZ3RoO24rKyl7dmFyIGw9aVtyXS5wdHNbbl0sYz1hLmMycChsLngpLHU9by5j MnAobC55KTtlLmNvbnRhaW5zKFtjLHVdLG51bGwsbC5pLHQpPyhzLnB1c2goe3BvaW50TnVt YmVyOmwuaSx4OmEuYzJkKGwueCkseTpvLmMyZChsLnkpfSksbC5zZWxlY3RlZD0xKTpsLnNl bGVjdGVkPTB9cmV0dXJuIHN9fSx7fV0sNjg0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIkBwbG90bHkvZDMiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3Ii KSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpO2UuZXhwb3J0cz17c3R5bGU6ZnVu Y3Rpb24odCxlLHIpe3ZhciBvPXJ8fG4uc2VsZWN0KHQpLnNlbGVjdEFsbCgiZy50cmFjZS5i b3hlcyIpO28uc3R5bGUoIm9wYWNpdHkiLChmdW5jdGlvbih0KXtyZXR1cm4gdFswXS50cmFj ZS5vcGFjaXR5fSkpLG8uZWFjaCgoZnVuY3Rpb24oZSl7dmFyIHI9bi5zZWxlY3QodGhpcyks bz1lWzBdLnRyYWNlLHM9by5saW5lLndpZHRoO2Z1bmN0aW9uIGwodCxlLHIsbil7dC5zdHls ZSgic3Ryb2tlLXdpZHRoIixlKyJweCIpLmNhbGwoaS5zdHJva2UscikuY2FsbChpLmZpbGws bil9dmFyIGM9ci5zZWxlY3RBbGwoInBhdGguYm94Iik7aWYoImNhbmRsZXN0aWNrIj09PW8u dHlwZSljLmVhY2goKGZ1bmN0aW9uKHQpe2lmKCF0LmVtcHR5KXt2YXIgZT1uLnNlbGVjdCh0 aGlzKSxyPW9bdC5kaXJdO2woZSxyLmxpbmUud2lkdGgsci5saW5lLmNvbG9yLHIuZmlsbGNv bG9yKSxlLnN0eWxlKCJvcGFjaXR5IixvLnNlbGVjdGVkcG9pbnRzJiYhdC5zZWxlY3RlZD8u MzoxKX19KSk7ZWxzZXtsKGMscyxvLmxpbmUuY29sb3Isby5maWxsY29sb3IpLHIuc2VsZWN0 QWxsKCJwYXRoLm1lYW4iKS5zdHlsZSh7InN0cm9rZS13aWR0aCI6cywic3Ryb2tlLWRhc2hh cnJheSI6MipzKyJweCwiK3MrInB4In0pLmNhbGwoaS5zdHJva2Usby5saW5lLmNvbG9yKTt2 YXIgdT1yLnNlbGVjdEFsbCgicGF0aC5wb2ludCIpO2EucG9pbnRTdHlsZSh1LG8sdCl9fSkp fSxzdHlsZU9uU2VsZWN0OmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lWzBdLnRyYWNlLGk9ci5z ZWxlY3RBbGwoInBhdGgucG9pbnQiKTtuLnNlbGVjdGVkcG9pbnRzP2Euc2VsZWN0ZWRQb2lu dFN0eWxlKGksbik6YS5wb2ludFN0eWxlKGksbix0KX19fSx7Ii4uLy4uL2NvbXBvbmVudHMv Y29sb3IiOjM2NiwiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjozODgsIkBwbG90bHkvZDMi OjU4fV0sNjg1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4u L2xpYiIpLmV4dGVuZEZsYXQsaT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19mb3Jt YXRfYXR0cmlidXRlcyIpLmF4aXNIb3ZlckZvcm1hdCxhPXQoIi4uL29obGMvYXR0cmlidXRl cyIpLG89dCgiLi4vYm94L2F0dHJpYnV0ZXMiKTtmdW5jdGlvbiBzKHQpe3JldHVybntsaW5l Ontjb2xvcjpuKHt9LG8ubGluZS5jb2xvcix7ZGZsdDp0fSksd2lkdGg6by5saW5lLndpZHRo LGVkaXRUeXBlOiJzdHlsZSJ9LGZpbGxjb2xvcjpvLmZpbGxjb2xvcixlZGl0VHlwZToic3R5 bGUifX1lLmV4cG9ydHM9e3hwZXJpb2Q6YS54cGVyaW9kLHhwZXJpb2QwOmEueHBlcmlvZDAs eHBlcmlvZGFsaWdubWVudDphLnhwZXJpb2RhbGlnbm1lbnQseGhvdmVyZm9ybWF0OmkoIngi KSx5aG92ZXJmb3JtYXQ6aSgieSIpLHg6YS54LG9wZW46YS5vcGVuLGhpZ2g6YS5oaWdoLGxv dzphLmxvdyxjbG9zZTphLmNsb3NlLGxpbmU6e3dpZHRoOm4oe30sby5saW5lLndpZHRoLHt9 KSxlZGl0VHlwZToic3R5bGUifSxpbmNyZWFzaW5nOnMoYS5pbmNyZWFzaW5nLmxpbmUuY29s b3IuZGZsdCksZGVjcmVhc2luZzpzKGEuZGVjcmVhc2luZy5saW5lLmNvbG9yLmRmbHQpLHRl eHQ6YS50ZXh0LGhvdmVydGV4dDphLmhvdmVydGV4dCx3aGlza2Vyd2lkdGg6bih7fSxvLndo aXNrZXJ3aWR0aCx7ZGZsdDowfSksaG92ZXJsYWJlbDphLmhvdmVybGFiZWx9fSx7Ii4uLy4u L2xpYiI6NTAzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19mb3JtYXRfYXR0cmlidXRl cyI6NTU3LCIuLi9ib3gvYXR0cmlidXRlcyI6NjczLCIuLi9vaGxjL2F0dHJpYnV0ZXMiOjg3 Mn1dLDY4NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9s aWIiKSxpPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksYT10KCIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4vYWxpZ25fcGVyaW9kIiksbz10KCIuLi9vaGxjL2NhbGMiKS5jYWxjQ29t bW9uO2Z1bmN0aW9uIHModCxlLHIsbil7cmV0dXJue21pbjpyLHExOk1hdGgubWluKHQsbiks bWVkOm4scTM6TWF0aC5tYXgodCxuKSxtYXg6ZX19ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7 dmFyIHI9dC5fZnVsbExheW91dCxsPWkuZ2V0RnJvbUlkKHQsZS54YXhpcyksYz1pLmdldEZy b21JZCh0LGUueWF4aXMpLHU9bC5tYWtlQ2FsY2RhdGEoZSwieCIpLGY9YShlLGwsIngiLHUp LnZhbHMsaD1vKHQsZSx1LGYsYyxzKTtyZXR1cm4gaC5sZW5ndGg/KG4uZXh0ZW5kRmxhdCho WzBdLnQse251bTpyLl9udW1Cb3hlcyxkUG9zOm4uZGlzdGluY3RWYWxzKGYpLm1pbkRpZmYv Mixwb3NMZXR0ZXI6IngiLHZhbExldHRlcjoieSJ9KSxyLl9udW1Cb3hlcysrLGgpOlt7dDp7 ZW1wdHk6ITB9fV19fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4v YWxpZ25fcGVyaW9kIjo1NTEsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo1NTQsIi4u L29obGMvY2FsYyI6ODczfV0sNjg3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGE9dCgi Li4vb2hsYy9vaGxjX2RlZmF1bHRzIiksbz10KCIuLi9zY2F0dGVyL3BlcmlvZF9kZWZhdWx0 cyIpLHM9dCgiLi9hdHRyaWJ1dGVzIik7ZnVuY3Rpb24gbCh0LGUscixuKXt2YXIgYT1yKG4r Ii5saW5lLmNvbG9yIik7cihuKyIubGluZS53aWR0aCIsZS5saW5lLndpZHRoKSxyKG4rIi5m aWxsY29sb3IiLGkuYWRkT3BhY2l0eShhLC41KSl9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxy LGkpe2Z1bmN0aW9uIGMocixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLHMscixpKX1hKHQsZSxj LGkpPyhvKHQsZSxpLGMse3g6ITB9KSxjKCJ4aG92ZXJmb3JtYXQiKSxjKCJ5aG92ZXJmb3Jt YXQiKSxjKCJsaW5lLndpZHRoIiksbCh0LGUsYywiaW5jcmVhc2luZyIpLGwodCxlLGMsImRl Y3JlYXNpbmciKSxjKCJ0ZXh0IiksYygiaG92ZXJ0ZXh0IiksYygid2hpc2tlcndpZHRoIiks aS5fcmVxdWVzdFJhbmdlc2xpZGVyW2UueGF4aXNdPSEwKTplLnZpc2libGU9ITF9fSx7Ii4u Ly4uL2NvbXBvbmVudHMvY29sb3IiOjM2NiwiLi4vLi4vbGliIjo1MDMsIi4uL29obGMvb2hs Y19kZWZhdWx0cyI6ODc3LCIuLi9zY2F0dGVyL3BlcmlvZF9kZWZhdWx0cyI6OTQ3LCIuL2F0 dHJpYnV0ZXMiOjY4NX1dLDY4ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4 cG9ydHM9e21vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJjYW5kbGVzdGljayIsYmFzZVBsb3RN b2R1bGU6dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuIiksY2F0ZWdvcmllczpbImNhcnRlc2lh biIsInN2ZyIsInNob3dMZWdlbmQiLCJjYW5kbGVzdGljayIsImJveExheW91dCJdLG1ldGE6 e30sYXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxsYXlvdXRBdHRyaWJ1dGVzOnQoIi4u L2JveC9sYXlvdXRfYXR0cmlidXRlcyIpLHN1cHBseUxheW91dERlZmF1bHRzOnQoIi4uL2Jv eC9sYXlvdXRfZGVmYXVsdHMiKS5zdXBwbHlMYXlvdXREZWZhdWx0cyxjcm9zc1RyYWNlQ2Fs Yzp0KCIuLi9ib3gvY3Jvc3NfdHJhY2VfY2FsYyIpLmNyb3NzVHJhY2VDYWxjLHN1cHBseURl ZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxjYWxjOnQoIi4vY2FsYyIpLHBsb3Q6dCgiLi4vYm94 L3Bsb3QiKS5wbG90LGxheWVyTmFtZToiYm94bGF5ZXIiLHN0eWxlOnQoIi4uL2JveC9zdHls ZSIpLnN0eWxlLGhvdmVyUG9pbnRzOnQoIi4uL29obGMvaG92ZXIiKS5ob3ZlclBvaW50cyxz ZWxlY3RQb2ludHM6dCgiLi4vb2hsYy9zZWxlY3QiKX19LHsiLi4vLi4vcGxvdHMvY2FydGVz aWFuIjo1NjgsIi4uL2JveC9jcm9zc190cmFjZV9jYWxjIjo2NzUsIi4uL2JveC9sYXlvdXRf YXR0cmlidXRlcyI6NjgwLCIuLi9ib3gvbGF5b3V0X2RlZmF1bHRzIjo2ODEsIi4uL2JveC9w bG90Ijo2ODIsIi4uL2JveC9zdHlsZSI6Njg0LCIuLi9vaGxjL2hvdmVyIjo4NzUsIi4uL29o bGMvc2VsZWN0Ijo4NzksIi4vYXR0cmlidXRlcyI6Njg1LCIuL2NhbGMiOjY4NiwiLi9kZWZh dWx0cyI6Njg3fV0sNjg5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo Ii4vYXhpc19kZWZhdWx0cyIpLGk9dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIp O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixhLG8pe2EoImEiKXx8KGEoImRhIiksYSgiYTAi KSksYSgiYiIpfHwoYSgiZGIiKSxhKCJiMCIpKSxmdW5jdGlvbih0LGUscixhKXtbImFheGlz IiwiYmF4aXMiXS5mb3JFYWNoKChmdW5jdGlvbihvKXt2YXIgcz1vLmNoYXJBdCgwKSxsPXRb b118fHt9LGM9aS5uZXdDb250YWluZXIoZSxvKSx1PXtub1RpY2tsYWJlbHN0ZXA6ITAsdGlj a2ZvbnQ6IngiLGlkOnMrImF4aXMiLGxldHRlcjpzLGZvbnQ6ZS5mb250LG5hbWU6byxkYXRh OnRbc10sY2FsZW5kYXI6ZS5jYWxlbmRhcixkZmx0Q29sb3I6YSxiZ0NvbG9yOnIucGFwZXJf Ymdjb2xvcixhdXRvdHlwZW51bWJlcnNEZmx0OnIuYXV0b3R5cGVudW1iZXJzLGZ1bGxMYXlv dXQ6cn07bihsLGMsdSksYy5fY2F0ZWdvcmllcz1jLl9jYXRlZ29yaWVzfHxbXSx0W29dfHwi LSI9PT1sLnR5cGV8fCh0W29dPXt0eXBlOmwudHlwZX0pfSkpfSh0LGUscixvKX19LHsiLi4v Li4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NTQzLCIuL2F4aXNfZGVmYXVsdHMiOjY5NH1d LDY5MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIi KS5pc0FycmF5T3JUeXBlZEFycmF5O2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZnVu Y3Rpb24gdChlLHIpe2lmKCFuKGUpfHxyPj0xMClyZXR1cm4gbnVsbDtmb3IodmFyIGk9MS8w LGE9LTEvMCxvPWUubGVuZ3RoLHM9MDtzPG87cysrKXt2YXIgbD1lW3NdO2lmKG4obCkpe3Zh ciBjPXQobCxyKzEpO2MmJihpPU1hdGgubWluKGNbMF0saSksYT1NYXRoLm1heChjWzFdLGEp KX1lbHNlIGk9TWF0aC5taW4obCxpKSxhPU1hdGgubWF4KGwsYSl9cmV0dXJuW2ksYV19KHQs MCl9fSx7Ii4uLy4uL2xpYiI6NTAzfV0sNjkxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyIpLGk9dCgiLi9heGlz X2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IvYXR0cmlidXRlcyIp LG89bih7ZWRpdFR5cGU6ImNhbGMifSk7by5mYW1pbHkuZGZsdD0nIk9wZW4gU2FucyIsIHZl cmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmJyxvLnNpemUuZGZsdD0xMixvLmNvbG9yLmRmbHQ9 YS5kZWZhdWx0TGluZSxlLmV4cG9ydHM9e2NhcnBldDp7dmFsVHlwZToic3RyaW5nIixlZGl0 VHlwZToiY2FsYyJ9LHg6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjK2Ns ZWFyQXhpc1R5cGVzIn0seTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMr Y2xlYXJBeGlzVHlwZXMifSxhOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2Fs YyJ9LGEwOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MCxlZGl0VHlwZToiY2FsYyJ9LGRhOnt2 YWxUeXBlOiJudW1iZXIiLGRmbHQ6MSxlZGl0VHlwZToiY2FsYyJ9LGI6e3ZhbFR5cGU6ImRh dGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sYjA6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDow LGVkaXRUeXBlOiJjYWxjIn0sZGI6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDoxLGVkaXRUeXBl OiJjYWxjIn0sY2hlYXRlcnNsb3BlOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MSxlZGl0VHlw ZToiY2FsYyJ9LGFheGlzOmksYmF4aXM6aSxmb250Om8sY29sb3I6e3ZhbFR5cGU6ImNvbG9y IixkZmx0OmEuZGVmYXVsdExpbmUsZWRpdFR5cGU6InBsb3QifSx0cmFuc2Zvcm1zOnZvaWQg MH19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIjozNjUsIi4uLy4uL3Bs b3RzL2ZvbnRfYXR0cmlidXRlcyI6NTg1LCIuL2F4aXNfYXR0cmlidXRlcyI6NjkzfV0sNjky OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLmlz QXJyYXlPclR5cGVkQXJyYXk7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBhLG8s cyxsLGMsdSxmLGgscCxkLG0sZyx2LHk9bihyKT8iYSI6ImIiLHg9KCJhIj09PXk/dC5hYXhp czp0LmJheGlzKS5zbW9vdGhpbmcsYj0iYSI9PT15P3QuYTJpOnQuYjJqLF89ImEiPT09eT9y Omksdz0iYSI9PT15P2k6cixUPSJhIj09PXk/ZS5hLmxlbmd0aDplLmIubGVuZ3RoLGs9ImEi PT09eT9lLmIubGVuZ3RoOmUuYS5sZW5ndGgsQT1NYXRoLmZsb29yKCJhIj09PXk/dC5iMmoo dyk6dC5hMmkodykpLE09ImEiPT09eT9mdW5jdGlvbihlKXtyZXR1cm4gdC5ldmFseHkoW10s ZSxBKX06ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZXZhbHh5KFtdLEEsZSl9O3gmJihzPU1hdGgu bWF4KDAsTWF0aC5taW4oay0yLEEpKSxsPUEtcyxvPSJhIj09PXk/ZnVuY3Rpb24oZSxyKXty ZXR1cm4gdC5keHlkaShbXSxlLHMscixsKX06ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdC5keHlk aihbXSxzLGUsbCxyKX0pO3ZhciBTPWIoX1swXSksRT1iKF9bMV0pLEw9UzxFPzE6LTEsQz0x ZS04KihFLVMpLFA9TD4wP01hdGguZmxvb3I6TWF0aC5jZWlsLEk9TD4wP01hdGguY2VpbDpN YXRoLmZsb29yLE89TD4wP01hdGgubWluOk1hdGgubWF4LHo9TD4wP01hdGgubWF4Ok1hdGgu bWluLEQ9UChTK0MpLFI9SShFLUMpLEY9W1tmPU0oUyldXTtmb3IoYT1EO2EqTDxSKkw7YSs9 TCljPVtdLG09eihTLGEpLHY9KGc9TyhFLGErTCkpLW0sdT1NYXRoLm1heCgwLE1hdGgubWlu KFQtMixNYXRoLmZsb29yKC41KihtK2cpKSkpLGg9TShnKSx4JiYocD1vKHUsbS11KSxkPW8o dSxnLXUpLGMucHVzaChbZlswXStwWzBdLzMqdixmWzFdK3BbMV0vMyp2XSksYy5wdXNoKFto WzBdLWRbMF0vMyp2LGhbMV0tZFsxXS8zKnZdKSksYy5wdXNoKGgpLEYucHVzaChjKSxmPWg7 cmV0dXJuIEZ9fSx7Ii4uLy4uL2xpYiI6NTAzfV0sNjkzOltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyIpLGk9dCgi Li4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9wbG90cy9j YXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lh bi9heGlzX2Zvcm1hdF9hdHRyaWJ1dGVzIikuZGVzY3JpcHRpb25XaXRoRGF0ZXMscz10KCIu Li8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIikub3ZlcnJpZGVBbGwsbD10KCIuLi8uLi9jb21w b25lbnRzL2RyYXdpbmcvYXR0cmlidXRlcyIpLmRhc2gsYz10KCIuLi8uLi9saWIvZXh0ZW5k IikuZXh0ZW5kRmxhdDtlLmV4cG9ydHM9e2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRpdFR5 cGU6ImNhbGMifSxzbW9vdGhpbmc6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDoxLG1pbjowLG1h eDoxLjMsZWRpdFR5cGU6ImNhbGMifSx0aXRsZTp7dGV4dDp7dmFsVHlwZToic3RyaW5nIixk Zmx0OiIiLGVkaXRUeXBlOiJjYWxjIn0sZm9udDpuKHtlZGl0VHlwZToiY2FsYyJ9KSxvZmZz ZXQ6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDoxMCxlZGl0VHlwZToiY2FsYyJ9LGVkaXRUeXBl OiJjYWxjIn0sdHlwZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiLSIsImxpbmVh ciIsImRhdGUiLCJjYXRlZ29yeSJdLGRmbHQ6Ii0iLGVkaXRUeXBlOiJjYWxjIn0sYXV0b3R5 cGVudW1iZXJzOmEuYXV0b3R5cGVudW1iZXJzLGF1dG9yYW5nZTp7dmFsVHlwZToiZW51bWVy YXRlZCIsdmFsdWVzOlshMCwhMSwicmV2ZXJzZWQiXSxkZmx0OiEwLGVkaXRUeXBlOiJjYWxj In0scmFuZ2Vtb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJub3JtYWwiLCJ0 b3plcm8iLCJub25uZWdhdGl2ZSJdLGRmbHQ6Im5vcm1hbCIsZWRpdFR5cGU6ImNhbGMifSxy YW5nZTp7dmFsVHlwZToiaW5mb19hcnJheSIsZWRpdFR5cGU6ImNhbGMiLGl0ZW1zOlt7dmFs VHlwZToiYW55IixlZGl0VHlwZToiY2FsYyJ9LHt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJj YWxjIn1dfSxmaXhlZHJhbmdlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExLGVkaXRUeXBl OiJjYWxjIn0sY2hlYXRlcnR5cGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImlu ZGV4IiwidmFsdWUiXSxkZmx0OiJ2YWx1ZSIsZWRpdFR5cGU6ImNhbGMifSx0aWNrbW9kZTp7 dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsibGluZWFyIiwiYXJyYXkiXSxkZmx0OiJh cnJheSIsZWRpdFR5cGU6ImNhbGMifSxudGlja3M6e3ZhbFR5cGU6ImludGVnZXIiLG1pbjow LGRmbHQ6MCxlZGl0VHlwZToiY2FsYyJ9LHRpY2t2YWxzOnt2YWxUeXBlOiJkYXRhX2FycmF5 IixlZGl0VHlwZToiY2FsYyJ9LHRpY2t0ZXh0Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0 VHlwZToiY2FsYyJ9LHNob3d0aWNrbGFiZWxzOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1 ZXM6WyJzdGFydCIsImVuZCIsImJvdGgiLCJub25lIl0sZGZsdDoic3RhcnQiLGVkaXRUeXBl OiJjYWxjIn0sdGlja2ZvbnQ6bih7ZWRpdFR5cGU6ImNhbGMifSksdGlja2FuZ2xlOnt2YWxU eXBlOiJhbmdsZSIsZGZsdDoiYXV0byIsZWRpdFR5cGU6ImNhbGMifSx0aWNrcHJlZml4Ont2 YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6ImNhbGMifSxzaG93dGlja3ByZWZp eDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiYWxsIiwiZmlyc3QiLCJsYXN0Iiwi bm9uZSJdLGRmbHQ6ImFsbCIsZWRpdFR5cGU6ImNhbGMifSx0aWNrc3VmZml4Ont2YWxUeXBl OiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6ImNhbGMifSxzaG93dGlja3N1ZmZpeDp7dmFs VHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiYWxsIiwiZmlyc3QiLCJsYXN0Iiwibm9uZSJd LGRmbHQ6ImFsbCIsZWRpdFR5cGU6ImNhbGMifSxzaG93ZXhwb25lbnQ6e3ZhbFR5cGU6ImVu dW1lcmF0ZWQiLHZhbHVlczpbImFsbCIsImZpcnN0IiwibGFzdCIsIm5vbmUiXSxkZmx0OiJh bGwiLGVkaXRUeXBlOiJjYWxjIn0sZXhwb25lbnRmb3JtYXQ6e3ZhbFR5cGU6ImVudW1lcmF0 ZWQiLHZhbHVlczpbIm5vbmUiLCJlIiwiRSIsInBvd2VyIiwiU0kiLCJCIl0sZGZsdDoiQiIs ZWRpdFR5cGU6ImNhbGMifSxtaW5leHBvbmVudDp7dmFsVHlwZToibnVtYmVyIixkZmx0OjMs bWluOjAsZWRpdFR5cGU6ImNhbGMifSxzZXBhcmF0ZXRob3VzYW5kczp7dmFsVHlwZToiYm9v bGVhbiIsZGZsdDohMSxlZGl0VHlwZToiY2FsYyJ9LHRpY2tmb3JtYXQ6e3ZhbFR5cGU6InN0 cmluZyIsZGZsdDoiIixlZGl0VHlwZToiY2FsYyIsZGVzY3JpcHRpb246bygidGljayBsYWJl bCIpfSx0aWNrZm9ybWF0c3RvcHM6cyhhLnRpY2tmb3JtYXRzdG9wcywiY2FsYyIsImZyb20t cm9vdCIpLGNhdGVnb3J5b3JkZXI6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInRy YWNlIiwiY2F0ZWdvcnkgYXNjZW5kaW5nIiwiY2F0ZWdvcnkgZGVzY2VuZGluZyIsImFycmF5 Il0sZGZsdDoidHJhY2UiLGVkaXRUeXBlOiJjYWxjIn0sY2F0ZWdvcnlhcnJheTp7dmFsVHlw ZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxsYWJlbHBhZGRpbmc6e3ZhbFR5cGU6 ImludGVnZXIiLGRmbHQ6MTAsZWRpdFR5cGU6ImNhbGMifSxsYWJlbHByZWZpeDp7dmFsVHlw ZToic3RyaW5nIixlZGl0VHlwZToiY2FsYyJ9LGxhYmVsc3VmZml4Ont2YWxUeXBlOiJzdHJp bmciLGRmbHQ6IiIsZWRpdFR5cGU6ImNhbGMifSxzaG93bGluZTp7dmFsVHlwZToiYm9vbGVh biIsZGZsdDohMSxlZGl0VHlwZToiY2FsYyJ9LGxpbmVjb2xvcjp7dmFsVHlwZToiY29sb3Ii LGRmbHQ6aS5kZWZhdWx0TGluZSxlZGl0VHlwZToiY2FsYyJ9LGxpbmV3aWR0aDp7dmFsVHlw ZToibnVtYmVyIixtaW46MCxkZmx0OjEsZWRpdFR5cGU6ImNhbGMifSxncmlkY29sb3I6e3Zh bFR5cGU6ImNvbG9yIixlZGl0VHlwZToiY2FsYyJ9LGdyaWR3aWR0aDp7dmFsVHlwZToibnVt YmVyIixtaW46MCxkZmx0OjEsZWRpdFR5cGU6ImNhbGMifSxncmlkZGFzaDpjKHt9LGwse2Vk aXRUeXBlOiJjYWxjIn0pLHNob3dncmlkOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVk aXRUeXBlOiJjYWxjIn0sbWlub3JncmlkY291bnQ6e3ZhbFR5cGU6ImludGVnZXIiLG1pbjow LGRmbHQ6MCxlZGl0VHlwZToiY2FsYyJ9LG1pbm9yZ3JpZHdpZHRoOnt2YWxUeXBlOiJudW1i ZXIiLG1pbjowLGRmbHQ6MSxlZGl0VHlwZToiY2FsYyJ9LG1pbm9yZ3JpZGRhc2g6Yyh7fSxs LHtlZGl0VHlwZToiY2FsYyJ9KSxtaW5vcmdyaWRjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRm bHQ6aS5saWdodExpbmUsZWRpdFR5cGU6ImNhbGMifSxzdGFydGxpbmU6e3ZhbFR5cGU6ImJv b2xlYW4iLGVkaXRUeXBlOiJjYWxjIn0sc3RhcnRsaW5lY29sb3I6e3ZhbFR5cGU6ImNvbG9y IixlZGl0VHlwZToiY2FsYyJ9LHN0YXJ0bGluZXdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLGRm bHQ6MSxlZGl0VHlwZToiY2FsYyJ9LGVuZGxpbmU6e3ZhbFR5cGU6ImJvb2xlYW4iLGVkaXRU eXBlOiJjYWxjIn0sZW5kbGluZXdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MSxlZGl0 VHlwZToiY2FsYyJ9LGVuZGxpbmVjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJj YWxjIn0sdGljazA6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDowLGVkaXRUeXBlOiJj YWxjIn0sZHRpY2s6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoxLGVkaXRUeXBlOiJj YWxjIn0sYXJyYXl0aWNrMDp7dmFsVHlwZToiaW50ZWdlciIsbWluOjAsZGZsdDowLGVkaXRU eXBlOiJjYWxjIn0sYXJyYXlkdGljazp7dmFsVHlwZToiaW50ZWdlciIsbWluOjEsZGZsdDox LGVkaXRUeXBlOiJjYWxjIn0sX2RlcHJlY2F0ZWQ6e3RpdGxlOnt2YWxUeXBlOiJzdHJpbmci LGVkaXRUeXBlOiJjYWxjIn0sdGl0bGVmb250Om4oe2VkaXRUeXBlOiJjYWxjIn0pLHRpdGxl b2Zmc2V0Ont2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MTAsZWRpdFR5cGU6ImNhbGMifX0sZWRp dFR5cGU6ImNhbGMifX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yL2F0dHJpYnV0ZXMiOjM2 NSwiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nL2F0dHJpYnV0ZXMiOjM4NywiLi4vLi4vbGli L2V4dGVuZCI6NDkzLCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIjo1MzYsIi4uLy4uL3Bs b3RzL2NhcnRlc2lhbi9heGlzX2Zvcm1hdF9hdHRyaWJ1dGVzIjo1NTcsIi4uLy4uL3Bsb3Rz L2NhcnRlc2lhbi9sYXlvdXRfYXR0cmlidXRlcyI6NTY5LCIuLi8uLi9wbG90cy9mb250X2F0 dHJpYnV0ZXMiOjU4NX1dLDY5NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCIuL2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKS5hZGRP cGFjaXR5LGE9dCgiLi4vLi4vcmVnaXN0cnkiKSxvPXQoIi4uLy4uL2xpYiIpLHM9dCgiLi4v Li4vcGxvdHMvY2FydGVzaWFuL3RpY2tfdmFsdWVfZGVmYXVsdHMiKSxsPXQoIi4uLy4uL3Bs b3RzL2NhcnRlc2lhbi90aWNrX2xhYmVsX2RlZmF1bHRzIiksYz10KCIuLi8uLi9wbG90cy9j YXJ0ZXNpYW4vcHJlZml4X3N1ZmZpeF9kZWZhdWx0cyIpLHU9dCgiLi4vLi4vcGxvdHMvY2Fy dGVzaWFuL2NhdGVnb3J5X29yZGVyX2RlZmF1bHRzIiksZj10KCIuLi8uLi9wbG90cy9jYXJ0 ZXNpYW4vc2V0X2NvbnZlcnQiKSxoPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2F1 dG90eXBlIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgcD1yLmxldHRlcixkPXIu Zm9udHx8e30sbT1uW3ArImF4aXMiXTtmdW5jdGlvbiBnKHIsbil7cmV0dXJuIG8uY29lcmNl KHQsZSxtLHIsbil9ZnVuY3Rpb24gdihyLG4pe3JldHVybiBvLmNvZXJjZTIodCxlLG0scixu KX1yLm5hbWUmJihlLl9uYW1lPXIubmFtZSxlLl9pZD1yLm5hbWUpLGcoImF1dG90eXBlbnVt YmVycyIsci5hdXRvdHlwZW51bWJlcnNEZmx0KTt2YXIgeT1nKCJ0eXBlIik7KCItIj09PXkm JihyLmRhdGEmJmZ1bmN0aW9uKHQsZSl7aWYoIi0iIT09dC50eXBlKXJldHVybjt2YXIgcj10 Ll9pZC5jaGFyQXQoMCksbj10W3IrImNhbGVuZGFyIl07dC50eXBlPWgoZSxuLHthdXRvdHlw ZW51bWJlcnM6dC5hdXRvdHlwZW51bWJlcnN9KX0oZSxyLmRhdGEpLCItIj09PWUudHlwZT9l LnR5cGU9ImxpbmVhciI6eT10LnR5cGU9ZS50eXBlKSxnKCJzbW9vdGhpbmciKSxnKCJjaGVh dGVydHlwZSIpLGcoInNob3d0aWNrbGFiZWxzIiksZygibGFiZWxwcmVmaXgiLHArIiA9ICIp LGcoImxhYmVsc3VmZml4IiksZygic2hvd3RpY2twcmVmaXgiKSxnKCJzaG93dGlja3N1ZmZp eCIpLGcoInNlcGFyYXRldGhvdXNhbmRzIiksZygidGlja2Zvcm1hdCIpLGcoImV4cG9uZW50 Zm9ybWF0IiksZygibWluZXhwb25lbnQiKSxnKCJzaG93ZXhwb25lbnQiKSxnKCJjYXRlZ29y eW9yZGVyIiksZygidGlja21vZGUiKSxnKCJ0aWNrdmFscyIpLGcoInRpY2t0ZXh0IiksZygi dGljazAiKSxnKCJkdGljayIpLCJhcnJheSI9PT1lLnRpY2ttb2RlJiYoZygiYXJyYXl0aWNr MCIpLGcoImFycmF5ZHRpY2siKSksZygibGFiZWxwYWRkaW5nIiksZS5faG92ZXJ0aXRsZT1w LCJkYXRlIj09PXkpJiZhLmdldENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJzIiwiaGFuZGxl RGVmYXVsdHMiKSh0LGUsImNhbGVuZGFyIixyLmNhbGVuZGFyKTtmKGUsci5mdWxsTGF5b3V0 KSxlLmMycD1vLmlkZW50aXR5O3ZhciB4PWcoImNvbG9yIixyLmRmbHRDb2xvciksYj14PT09 dC5jb2xvcj94OmQuY29sb3I7ZygidGl0bGUudGV4dCIpJiYoby5jb2VyY2VGb250KGcsInRp dGxlLmZvbnQiLHtmYW1pbHk6ZC5mYW1pbHksc2l6ZTpvLmJpZ0ZvbnQoZC5zaXplKSxjb2xv cjpifSksZygidGl0bGUub2Zmc2V0IikpLGcoInRpY2thbmdsZSIpLGcoImF1dG9yYW5nZSIs IWUuaXNWYWxpZFJhbmdlKHQucmFuZ2UpKSYmZygicmFuZ2Vtb2RlIiksZygicmFuZ2UiKSxl LmNsZWFuUmFuZ2UoKSxnKCJmaXhlZHJhbmdlIikscyh0LGUsZyx5KSxjKHQsZSxnLHksciks bCh0LGUsZyx5LHIpLHUodCxlLGcse2RhdGE6ci5kYXRhLGRhdGFBdHRyOnB9KTt2YXIgXz12 KCJncmlkY29sb3IiLGkoeCwuMykpLHc9digiZ3JpZHdpZHRoIiksVD12KCJncmlkZGFzaCIp LGs9Zygic2hvd2dyaWQiKTtrfHwoZGVsZXRlIGUuZ3JpZGNvbG9yLGRlbGV0ZSBlLmdyaWR3 aWR0aCxkZWxldGUgZS5ncmlkZGFzaCk7dmFyIEE9digic3RhcnRsaW5lY29sb3IiLHgpLE09 digic3RhcnRsaW5ld2lkdGgiLHcpO2coInN0YXJ0bGluZSIsZS5zaG93Z3JpZHx8ISFBfHwh IU0pfHwoZGVsZXRlIGUuc3RhcnRsaW5lY29sb3IsZGVsZXRlIGUuc3RhcnRsaW5ld2lkdGgp O3ZhciBTPXYoImVuZGxpbmVjb2xvciIseCksRT12KCJlbmRsaW5ld2lkdGgiLHcpO3JldHVy biBnKCJlbmRsaW5lIixlLnNob3dncmlkfHwhIVN8fCEhRSl8fChkZWxldGUgZS5lbmRsaW5l Y29sb3IsZGVsZXRlIGUuZW5kbGluZXdpZHRoKSxrPyhnKCJtaW5vcmdyaWRjb3VudCIpLGco Im1pbm9yZ3JpZHdpZHRoIix3KSxnKCJtaW5vcmdyaWRkYXNoIixUKSxnKCJtaW5vcmdyaWRj b2xvciIsaShfLC4wNikpLGUubWlub3JncmlkY291bnR8fChkZWxldGUgZS5taW5vcmdyaWR3 aWR0aCxkZWxldGUgZS5taW5vcmdyaWRkYXNoLGRlbGV0ZSBlLm1pbm9yZ3JpZGNvbG9yKSk6 KGRlbGV0ZSBlLmdyaWRjb2xvcixkZWxldGUgZS5ncmlkd2lkdGgsZGVsZXRlIGUuZ3JpZGRh c2gpLCJub25lIj09PWUuc2hvd3RpY2tsYWJlbHMmJihkZWxldGUgZS50aWNrZm9udCxkZWxl dGUgZS50aWNrYW5nbGUsZGVsZXRlIGUuc2hvd2V4cG9uZW50LGRlbGV0ZSBlLmV4cG9uZW50 Zm9ybWF0LGRlbGV0ZSBlLm1pbmV4cG9uZW50LGRlbGV0ZSBlLnRpY2tmb3JtYXQsZGVsZXRl IGUuc2hvd3RpY2tzdWZmaXgsZGVsZXRlIGUuc2hvd3RpY2twcmVmaXgpLGUuc2hvd3RpY2tz dWZmaXh8fGRlbGV0ZSBlLnRpY2tzdWZmaXgsZS5zaG93dGlja3ByZWZpeHx8ZGVsZXRlIGUu dGlja3ByZWZpeCxnKCJ0aWNrbW9kZSIpLGV9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3Ii OjM2NiwiLi4vLi4vbGliIjo1MDMsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2F1dG90 eXBlIjo1NTUsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9jYXRlZ29yeV9vcmRlcl9kZWZhdWx0 cyI6NTU5LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vcHJlZml4X3N1ZmZpeF9kZWZhdWx0cyI6 NTczLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vc2V0X2NvbnZlcnQiOjU3NiwiLi4vLi4vcGxv dHMvY2FydGVzaWFuL3RpY2tfbGFiZWxfZGVmYXVsdHMiOjU3OCwiLi4vLi4vcGxvdHMvY2Fy dGVzaWFuL3RpY2tfdmFsdWVfZGVmYXVsdHMiOjU4MCwiLi4vLi4vcmVnaXN0cnkiOjYzOCwi Li9hdHRyaWJ1dGVzIjo2OTF9XSw2OTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxpPXQoIi4uLy4uL2xpYiIp LmlzQXJyYXkxRCxhPXQoIi4vY2hlYXRlcl9iYXNpcyIpLG89dCgiLi9hcnJheV9taW5tYXgi KSxzPXQoIi4vY2FsY19ncmlkbGluZXMiKSxsPXQoIi4vY2FsY19sYWJlbHMiKSxjPXQoIi4v Y2FsY19jbGlwcGF0aCIpLHU9dCgiLi4vaGVhdG1hcC9jbGVhbl8yZF9hcnJheSIpLGY9dCgi Li9zbW9vdGhfZmlsbF8yZF9hcnJheSIpLGg9dCgiLi4vaGVhdG1hcC9jb252ZXJ0X2NvbHVt bl94eXoiKSxwPXQoIi4vc2V0X2NvbnZlcnQiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2 YXIgcj1uLmdldEZyb21JZCh0LGUueGF4aXMpLGQ9bi5nZXRGcm9tSWQodCxlLnlheGlzKSxt PWUuYWF4aXMsZz1lLmJheGlzLHY9ZS54LHk9ZS55LHg9W107diYmaSh2KSYmeC5wdXNoKCJ4 IikseSYmaSh5KSYmeC5wdXNoKCJ5IikseC5sZW5ndGgmJmgoZSxtLGcsImEiLCJiIix4KTt2 YXIgYj1lLl9hPWUuX2F8fGUuYSxfPWUuX2I9ZS5fYnx8ZS5iO3Y9ZS5feHx8ZS54LHk9ZS5f eXx8ZS55O3ZhciB3PXt9O2lmKGUuX2NoZWF0ZXIpe3ZhciBUPSJpbmRleCI9PT1tLmNoZWF0 ZXJ0eXBlP2IubGVuZ3RoOmIsaz0iaW5kZXgiPT09Zy5jaGVhdGVydHlwZT9fLmxlbmd0aDpf O3Y9YShULGssZS5jaGVhdGVyc2xvcGUpfWUuX3g9dj11KHYpLGUuX3k9eT11KHkpLGYodixi LF8pLGYoeSxiLF8pLHAoZSksZS5zZXRTY2FsZSgpO3ZhciBBPW8odiksTT1vKHkpLFM9LjUq KEFbMV0tQVswXSksRT0uNSooQVsxXStBWzBdKSxMPS41KihNWzFdLU1bMF0pLEM9LjUqKE1b MV0rTVswXSk7cmV0dXJuIEE9W0UtMS4zKlMsRSsxLjMqU10sTT1bQy0xLjMqTCxDKzEuMypM XSxlLl9leHRyZW1lc1tyLl9pZF09bi5maW5kRXh0cmVtZXMocixBLHtwYWRkZWQ6ITB9KSxl Ll9leHRyZW1lc1tkLl9pZF09bi5maW5kRXh0cmVtZXMoZCxNLHtwYWRkZWQ6ITB9KSxzKGUs ImEiLCJiIikscyhlLCJiIiwiYSIpLGwoZSxtKSxsKGUsZyksdy5jbGlwc2VnbWVudHM9Yyhl Ll94Y3RybCxlLl95Y3RybCxtLGcpLHcueD12LHcueT15LHcuYT1iLHcuYj1fLFt3XX19LHsi Li4vLi4vbGliIjo1MDMsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo1NTQsIi4uL2hl YXRtYXAvY2xlYW5fMmRfYXJyYXkiOjc5NCwiLi4vaGVhdG1hcC9jb252ZXJ0X2NvbHVtbl94 eXoiOjc5NiwiLi9hcnJheV9taW5tYXgiOjY5MCwiLi9jYWxjX2NsaXBwYXRoIjo2OTYsIi4v Y2FsY19ncmlkbGluZXMiOjY5NywiLi9jYWxjX2xhYmVscyI6Njk4LCIuL2NoZWF0ZXJfYmFz aXMiOjcwMCwiLi9zZXRfY29udmVydCI6NzEzLCIuL3Ntb290aF9maWxsXzJkX2FycmF5Ijo3 MTR9XSw2OTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0 aW9uKHQsZSxyLG4pe3ZhciBpLGEsbyxzPVtdLGw9ISFyLnNtb290aGluZyxjPSEhbi5zbW9v dGhpbmcsdT10WzBdLmxlbmd0aC0xLGY9dC5sZW5ndGgtMTtmb3IoaT0wLGE9W10sbz1bXTtp PD11O2krKylhW2ldPXRbMF1baV0sb1tpXT1lWzBdW2ldO2ZvcihzLnB1c2goe3g6YSx5Om8s YmljdWJpYzpsfSksaT0wLGE9W10sbz1bXTtpPD1mO2krKylhW2ldPXRbaV1bdV0sb1tpXT1l W2ldW3VdO2ZvcihzLnB1c2goe3g6YSx5Om8sYmljdWJpYzpjfSksaT11LGE9W10sbz1bXTtp Pj0wO2ktLSlhW3UtaV09dFtmXVtpXSxvW3UtaV09ZVtmXVtpXTtmb3Iocy5wdXNoKHt4OmEs eTpvLGJpY3ViaWM6bH0pLGk9ZixhPVtdLG89W107aT49MDtpLS0pYVtmLWldPXRbaV1bMF0s b1tmLWldPWVbaV1bMF07cmV0dXJuIHMucHVzaCh7eDphLHk6byxiaWN1YmljOmN9KSxzfX0s e31dLDY5NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9w bG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGk9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZs YXQ7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgYSxvLHMsbCxjLHUsZixoLHAsZCxt LGcsdix5LHg9dFsiXyIrZV0sYj10W2UrImF4aXMiXSxfPWIuX2dyaWRsaW5lcz1bXSx3PWIu X21pbm9yZ3JpZGxpbmVzPVtdLFQ9Yi5fYm91bmRhcnlsaW5lcz1bXSxrPXRbIl8iK3JdLEE9 dFtyKyJheGlzIl07ImFycmF5Ij09PWIudGlja21vZGUmJihiLnRpY2t2YWxzPXguc2xpY2Uo KSk7dmFyIE09dC5feGN0cmwsUz10Ll95Y3RybCxFPU1bMF0ubGVuZ3RoLEw9TS5sZW5ndGgs Qz10Ll9hLmxlbmd0aCxQPXQuX2IubGVuZ3RoO24ucHJlcFRpY2tzKGIpLCJhcnJheSI9PT1i LnRpY2ttb2RlJiZkZWxldGUgYi50aWNrdmFsczt2YXIgST1iLnNtb290aGluZz8zOjE7ZnVu Y3Rpb24gTyhuKXt2YXIgaSxhLG8scyxsLGMsdSxmLHAsZCxtLGcsdj1bXSx5PVtdLHg9e307 aWYoImIiPT09ZSlmb3IoYT10LmIyaihuKSxvPU1hdGguZmxvb3IoTWF0aC5tYXgoMCxNYXRo Lm1pbihQLTIsYSkpKSxzPWEtbyx4Lmxlbmd0aD1QLHguY3Jvc3NMZW5ndGg9Qyx4Lnh5PWZ1 bmN0aW9uKGUpe3JldHVybiB0LmV2YWx4eShbXSxlLGEpfSx4LmR4eT1mdW5jdGlvbihlLHIp e3JldHVybiB0LmR4eWRpKFtdLGUsbyxyLHMpfSxpPTA7aTxDO2krKyljPU1hdGgubWluKEMt MixpKSx1PWktYyxmPXQuZXZhbHh5KFtdLGksYSksQS5zbW9vdGhpbmcmJmk+MCYmKHA9dC5k eHlkaShbXSxpLTEsbywwLHMpLHYucHVzaChsWzBdK3BbMF0vMykseS5wdXNoKGxbMV0rcFsx XS8zKSxkPXQuZHh5ZGkoW10saS0xLG8sMSxzKSx2LnB1c2goZlswXS1kWzBdLzMpLHkucHVz aChmWzFdLWRbMV0vMykpLHYucHVzaChmWzBdKSx5LnB1c2goZlsxXSksbD1mO2Vsc2UgZm9y KGk9dC5hMmkobiksYz1NYXRoLmZsb29yKE1hdGgubWF4KDAsTWF0aC5taW4oQy0yLGkpKSks dT1pLWMseC5sZW5ndGg9Qyx4LmNyb3NzTGVuZ3RoPVAseC54eT1mdW5jdGlvbihlKXtyZXR1 cm4gdC5ldmFseHkoW10saSxlKX0seC5keHk9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdC5keHlk aihbXSxjLGUsdSxyKX0sYT0wO2E8UDthKyspbz1NYXRoLm1pbihQLTIsYSkscz1hLW8sZj10 LmV2YWx4eShbXSxpLGEpLEEuc21vb3RoaW5nJiZhPjAmJihtPXQuZHh5ZGooW10sYyxhLTEs dSwwKSx2LnB1c2gobFswXSttWzBdLzMpLHkucHVzaChsWzFdK21bMV0vMyksZz10LmR4eWRq KFtdLGMsYS0xLHUsMSksdi5wdXNoKGZbMF0tZ1swXS8zKSx5LnB1c2goZlsxXS1nWzFdLzMp KSx2LnB1c2goZlswXSkseS5wdXNoKGZbMV0pLGw9ZjtyZXR1cm4geC5heGlzTGV0dGVyPWUs eC5heGlzPWIseC5jcm9zc0F4aXM9QSx4LnZhbHVlPW4seC5jb25zdHZhcj1yLHguaW5kZXg9 aCx4Lng9dix4Lnk9eSx4LnNtb290aGluZz1BLnNtb290aGluZyx4fWZ1bmN0aW9uIHoobil7 dmFyIGksYSxvLHMsbCxjPVtdLHU9W10sZj17fTtpZihmLmxlbmd0aD14Lmxlbmd0aCxmLmNy b3NzTGVuZ3RoPWsubGVuZ3RoLCJiIj09PWUpZm9yKG89TWF0aC5tYXgoMCxNYXRoLm1pbihQ LTIsbikpLGw9TWF0aC5taW4oMSxNYXRoLm1heCgwLG4tbykpLGYueHk9ZnVuY3Rpb24oZSl7 cmV0dXJuIHQuZXZhbHh5KFtdLGUsbil9LGYuZHh5PWZ1bmN0aW9uKGUscil7cmV0dXJuIHQu ZHh5ZGkoW10sZSxvLHIsbCl9LGk9MDtpPEU7aSsrKWNbaV09TVtuKkldW2ldLHVbaV09U1tu KkldW2ldO2Vsc2UgZm9yKGE9TWF0aC5tYXgoMCxNYXRoLm1pbihDLTIsbikpLHM9TWF0aC5t aW4oMSxNYXRoLm1heCgwLG4tYSkpLGYueHk9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZXZhbHh5 KFtdLG4sZSl9LGYuZHh5PWZ1bmN0aW9uKGUscil7cmV0dXJuIHQuZHh5ZGooW10sYSxlLHMs cil9LGk9MDtpPEw7aSsrKWNbaV09TVtpXVtuKkldLHVbaV09U1tpXVtuKkldO3JldHVybiBm LmF4aXNMZXR0ZXI9ZSxmLmF4aXM9YixmLmNyb3NzQXhpcz1BLGYudmFsdWU9eFtuXSxmLmNv bnN0dmFyPXIsZi5pbmRleD1uLGYueD1jLGYueT11LGYuc21vb3RoaW5nPUEuc21vb3RoaW5n LGZ9aWYoImFycmF5Ij09PWIudGlja21vZGUpe2ZvcihsPTVlLTE1LHU9KGM9W01hdGguZmxv b3IoKHgubGVuZ3RoLTEtYi5hcnJheXRpY2swKS9iLmFycmF5ZHRpY2sqKDErbCkpLE1hdGgu Y2VpbCgtYi5hcnJheXRpY2swL2IuYXJyYXlkdGljay8oMStsKSldLnNvcnQoKGZ1bmN0aW9u KHQsZSl7cmV0dXJuIHQtZX0pKSlbMF0tMSxmPWNbMV0rMSxoPXU7aDxmO2grKykobz1iLmFy cmF5dGljazArYi5hcnJheWR0aWNrKmgpPDB8fG8+eC5sZW5ndGgtMXx8Xy5wdXNoKGkoeihv KSx7Y29sb3I6Yi5ncmlkY29sb3Isd2lkdGg6Yi5ncmlkd2lkdGgsZGFzaDpiLmdyaWRkYXNo fSkpO2ZvcihoPXU7aDxmO2grKylpZihzPWIuYXJyYXl0aWNrMCtiLmFycmF5ZHRpY2sqaCxt PU1hdGgubWluKHMrYi5hcnJheWR0aWNrLHgubGVuZ3RoLTEpLCEoczwwfHxzPngubGVuZ3Ro LTF8fG08MHx8bT54Lmxlbmd0aC0xKSlmb3IoZz14W3NdLHY9eFttXSxhPTA7YTxiLm1pbm9y Z3JpZGNvdW50O2ErKykoeT1tLXMpPD0wfHwoZD1nKyh2LWcpKihhKzEpLyhiLm1pbm9yZ3Jp ZGNvdW50KzEpKihiLmFycmF5ZHRpY2sveSkpPHhbMF18fGQ+eFt4Lmxlbmd0aC0xXXx8dy5w dXNoKGkoTyhkKSx7Y29sb3I6Yi5taW5vcmdyaWRjb2xvcix3aWR0aDpiLm1pbm9yZ3JpZHdp ZHRoLGRhc2g6Yi5taW5vcmdyaWRkYXNofSkpO2Iuc3RhcnRsaW5lJiZULnB1c2goaSh6KDAp LHtjb2xvcjpiLnN0YXJ0bGluZWNvbG9yLHdpZHRoOmIuc3RhcnRsaW5ld2lkdGh9KSksYi5l bmRsaW5lJiZULnB1c2goaSh6KHgubGVuZ3RoLTEpLHtjb2xvcjpiLmVuZGxpbmVjb2xvcix3 aWR0aDpiLmVuZGxpbmV3aWR0aH0pKX1lbHNle2ZvcihsPTVlLTE1LHU9KGM9W01hdGguZmxv b3IoKHhbeC5sZW5ndGgtMV0tYi50aWNrMCkvYi5kdGljayooMStsKSksTWF0aC5jZWlsKCh4 WzBdLWIudGljazApL2IuZHRpY2svKDErbCkpXS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVy biB0LWV9KSkpWzBdLGY9Y1sxXSxoPXU7aDw9ZjtoKyspcD1iLnRpY2swK2IuZHRpY2sqaCxf LnB1c2goaShPKHApLHtjb2xvcjpiLmdyaWRjb2xvcix3aWR0aDpiLmdyaWR3aWR0aCxkYXNo OmIuZ3JpZGRhc2h9KSk7Zm9yKGg9dS0xO2g8ZisxO2grKylmb3IocD1iLnRpY2swK2IuZHRp Y2sqaCxhPTA7YTxiLm1pbm9yZ3JpZGNvdW50O2ErKykoZD1wK2IuZHRpY2sqKGErMSkvKGIu bWlub3JncmlkY291bnQrMSkpPHhbMF18fGQ+eFt4Lmxlbmd0aC0xXXx8dy5wdXNoKGkoTyhk KSx7Y29sb3I6Yi5taW5vcmdyaWRjb2xvcix3aWR0aDpiLm1pbm9yZ3JpZHdpZHRoLGRhc2g6 Yi5taW5vcmdyaWRkYXNofSkpO2Iuc3RhcnRsaW5lJiZULnB1c2goaShPKHhbMF0pLHtjb2xv cjpiLnN0YXJ0bGluZWNvbG9yLHdpZHRoOmIuc3RhcnRsaW5ld2lkdGh9KSksYi5lbmRsaW5l JiZULnB1c2goaShPKHhbeC5sZW5ndGgtMV0pLHtjb2xvcjpiLmVuZGxpbmVjb2xvcix3aWR0 aDpiLmVuZGxpbmV3aWR0aH0pKX19fSx7Ii4uLy4uL2xpYi9leHRlbmQiOjQ5MywiLi4vLi4v cGxvdHMvY2FydGVzaWFuL2F4ZXMiOjU1NH1dLDY5ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGk9dCgiLi4v Li4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQ7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFy IHIsYSxvLHM9ZS5fbGFiZWxzPVtdLGw9ZS5fZ3JpZGxpbmVzO2ZvcihyPTA7cjxsLmxlbmd0 aDtyKyspbz1sW3JdLC0xIT09WyJzdGFydCIsImJvdGgiXS5pbmRleE9mKGUuc2hvd3RpY2ts YWJlbHMpJiYoYT1uLnRpY2tUZXh0KGUsby52YWx1ZSksaShhLHtwcmVmaXg6dm9pZCAwLHN1 ZmZpeDp2b2lkIDAsZW5kQW5jaG9yOiEwLHh5Om8ueHkoMCksZHh5Om8uZHh5KDAsMCksYXhp czpvLmF4aXMsbGVuZ3RoOm8uY3Jvc3NBeGlzLmxlbmd0aCxmb250Om8uYXhpcy50aWNrZm9u dCxpc0ZpcnN0OjA9PT1yLGlzTGFzdDpyPT09bC5sZW5ndGgtMX0pLHMucHVzaChhKSksLTEh PT1bImVuZCIsImJvdGgiXS5pbmRleE9mKGUuc2hvd3RpY2tsYWJlbHMpJiYoYT1uLnRpY2tU ZXh0KGUsby52YWx1ZSksaShhLHtlbmRBbmNob3I6ITEseHk6by54eShvLmNyb3NzTGVuZ3Ro LTEpLGR4eTpvLmR4eShvLmNyb3NzTGVuZ3RoLTIsMSksYXhpczpvLmF4aXMsbGVuZ3RoOm8u Y3Jvc3NBeGlzLmxlbmd0aCxmb250Om8uYXhpcy50aWNrZm9udCxpc0ZpcnN0OjA9PT1yLGlz TGFzdDpyPT09bC5sZW5ndGgtMX0pLHMucHVzaChhKSl9fSx7Ii4uLy4uL2xpYi9leHRlbmQi OjQ5MywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjU1NH1dLDY5OTpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9 dFswXS1lWzBdLGE9dFsxXS1lWzFdLG89clswXS1lWzBdLHM9clsxXS1lWzFdLGw9TWF0aC5w b3coaSppK2EqYSwuMjUpLGM9TWF0aC5wb3cobypvK3MqcywuMjUpLHU9KGMqYyppLWwqbCpv KSpuLGY9KGMqYyphLWwqbCpzKSpuLGg9YyoobCtjKSozLHA9bCoobCtjKSozO3JldHVybltb ZVswXSsoaCYmdS9oKSxlWzFdKyhoJiZmL2gpXSxbZVswXS0ocCYmdS9wKSxlWzFdLShwJiZm L3ApXV19fSx7fV0sNzAwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo Ii4uLy4uL2xpYiIpLmlzQXJyYXlPclR5cGVkQXJyYXk7ZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSxyKXt2YXIgaSxhLG8scyxsLGMsdT1bXSxmPW4odCk/dC5sZW5ndGg6dCxoPW4oZSk/ZS5s ZW5ndGg6ZSxwPW4odCk/dDpudWxsLGQ9bihlKT9lOm51bGw7cCYmKG89KHAubGVuZ3RoLTEp LyhwW3AubGVuZ3RoLTFdLXBbMF0pLyhmLTEpKSxkJiYocz0oZC5sZW5ndGgtMSkvKGRbZC5s ZW5ndGgtMV0tZFswXSkvKGgtMSkpO3ZhciBtPTEvMCxnPS0xLzA7Zm9yKGE9MDthPGg7YSsr KWZvcih1W2FdPVtdLGw9ZD8oZFthXS1kWzBdKSpzOmEvKGgtMSksaT0wO2k8ZjtpKyspYz0o cD8ocFtpXS1wWzBdKSpvOmkvKGYtMSkpLWwqcixtPU1hdGgubWluKGMsbSksZz1NYXRoLm1h eChjLGcpLHVbYV1baV09Yzt2YXIgdj0xLyhnLW0pLHk9LW0qdjtmb3IoYT0wO2E8aDthKysp Zm9yKGk9MDtpPGY7aSsrKXVbYV1baV09dip1W2FdW2ldK3k7cmV0dXJuIHV9fSx7Ii4uLy4u L2xpYiI6NTAzfV0sNzAxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo Ii4vY2F0bXVsbF9yb20iKSxpPXQoIi4uLy4uL2xpYiIpLmVuc3VyZUFycmF5O2Z1bmN0aW9u IGEodCxlLHIpe3ZhciBuPS0uNSpyWzBdKzEuNSplWzBdLGk9LS41KnJbMV0rMS41KmVbMV07 cmV0dXJuWygyKm4rdFswXSkvMywoMippK3RbMV0pLzNdfWUuZXhwb3J0cz1mdW5jdGlvbih0 LGUscixvLHMsbCl7dmFyIGMsdSxmLGgscCxkLG0sZyx2LHkseD1yWzBdLmxlbmd0aCxiPXIu bGVuZ3RoLF89cz8zKngtMjp4LHc9bD8zKmItMjpiO2Zvcih0PWkodCx3KSxlPWkoZSx3KSxm PTA7Zjx3O2YrKyl0W2ZdPWkodFtmXSxfKSxlW2ZdPWkoZVtmXSxfKTtmb3IodT0wLGg9MDt1 PGI7dSsrLGgrPWw/MzoxKWZvcihwPXRbaF0sZD1lW2hdLG09clt1XSxnPW9bdV0sYz0wLGY9 MDtjPHg7YysrLGYrPXM/MzoxKXBbZl09bVtjXSxkW2ZdPWdbY107aWYocylmb3IodT0wLGg9 MDt1PGI7dSsrLGgrPWw/MzoxKXtmb3IoYz0xLGY9MztjPHgtMTtjKyssZis9Myl2PW4oW3Jb dV1bYy0xXSxvW3VdW2MtMV1dLFtyW3VdW2NdLG9bdV1bY11dLFtyW3VdW2MrMV0sb1t1XVtj KzFdXSxzKSx0W2hdW2YtMV09dlswXVswXSxlW2hdW2YtMV09dlswXVsxXSx0W2hdW2YrMV09 dlsxXVswXSxlW2hdW2YrMV09dlsxXVsxXTt5PWEoW3RbaF1bMF0sZVtoXVswXV0sW3RbaF1b Ml0sZVtoXVsyXV0sW3RbaF1bM10sZVtoXVszXV0pLHRbaF1bMV09eVswXSxlW2hdWzFdPXlb MV0seT1hKFt0W2hdW18tMV0sZVtoXVtfLTFdXSxbdFtoXVtfLTNdLGVbaF1bXy0zXV0sW3Rb aF1bXy00XSxlW2hdW18tNF1dKSx0W2hdW18tMl09eVswXSxlW2hdW18tMl09eVsxXX1pZihs KWZvcihmPTA7ZjxfO2YrKyl7Zm9yKGg9MztoPHctMztoKz0zKXY9bihbdFtoLTNdW2ZdLGVb aC0zXVtmXV0sW3RbaF1bZl0sZVtoXVtmXV0sW3RbaCszXVtmXSxlW2grM11bZl1dLGwpLHRb aC0xXVtmXT12WzBdWzBdLGVbaC0xXVtmXT12WzBdWzFdLHRbaCsxXVtmXT12WzFdWzBdLGVb aCsxXVtmXT12WzFdWzFdO3k9YShbdFswXVtmXSxlWzBdW2ZdXSxbdFsyXVtmXSxlWzJdW2Zd XSxbdFszXVtmXSxlWzNdW2ZdXSksdFsxXVtmXT15WzBdLGVbMV1bZl09eVsxXSx5PWEoW3Rb dy0xXVtmXSxlW3ctMV1bZl1dLFt0W3ctM11bZl0sZVt3LTNdW2ZdXSxbdFt3LTRdW2ZdLGVb dy00XVtmXV0pLHRbdy0yXVtmXT15WzBdLGVbdy0yXVtmXT15WzFdfWlmKHMmJmwpZm9yKGg9 MTtoPHc7aCs9KGgrMSklMz09MD8yOjEpe2ZvcihmPTM7ZjxfLTM7Zis9Myl2PW4oW3RbaF1b Zi0zXSxlW2hdW2YtM11dLFt0W2hdW2ZdLGVbaF1bZl1dLFt0W2hdW2YrM10sZVtoXVtmKzNd XSxzKSx0W2hdW2YtMV09LjUqKHRbaF1bZi0xXSt2WzBdWzBdKSxlW2hdW2YtMV09LjUqKGVb aF1bZi0xXSt2WzBdWzFdKSx0W2hdW2YrMV09LjUqKHRbaF1bZisxXSt2WzFdWzBdKSxlW2hd W2YrMV09LjUqKGVbaF1bZisxXSt2WzFdWzFdKTt5PWEoW3RbaF1bMF0sZVtoXVswXV0sW3Rb aF1bMl0sZVtoXVsyXV0sW3RbaF1bM10sZVtoXVszXV0pLHRbaF1bMV09LjUqKHRbaF1bMV0r eVswXSksZVtoXVsxXT0uNSooZVtoXVsxXSt5WzFdKSx5PWEoW3RbaF1bXy0xXSxlW2hdW18t MV1dLFt0W2hdW18tM10sZVtoXVtfLTNdXSxbdFtoXVtfLTRdLGVbaF1bXy00XV0pLHRbaF1b Xy0yXT0uNSoodFtoXVtfLTJdK3lbMF0pLGVbaF1bXy0yXT0uNSooZVtoXVtfLTJdK3lbMV0p fXJldHVyblt0LGVdfX0seyIuLi8uLi9saWIiOjUwMywiLi9jYXRtdWxsX3JvbSI6Njk5fV0s NzAyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17UkVMQVRJVkVf Q1VMTF9UT0xFUkFOQ0U6MWUtNn19LHt9XSw3MDM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZSYmcj9mdW5jdGlvbihl LHIsbixpLGEpe3ZhciBvLHMsbCxjLHUsZjtlfHwoZT1bXSkscio9MyxuKj0zO3ZhciBoPWkq aSxwPTEtaSxkPXAqcCxtPXAqaSoyLGc9LTMqZCx2PTMqKGQtbSkseT0zKihtLWgpLHg9Mypo LGI9YSphLF89YiphLHc9MS1hLFQ9dyp3LGs9VCp3O2ZvcihmPTA7Zjx0Lmxlbmd0aDtmKysp bz1nKih1PXRbZl0pW25dW3JdK3YqdVtuXVtyKzFdK3kqdVtuXVtyKzJdK3gqdVtuXVtyKzNd LHM9Zyp1W24rMV1bcl0rdip1W24rMV1bcisxXSt5KnVbbisxXVtyKzJdK3gqdVtuKzFdW3Ir M10sbD1nKnVbbisyXVtyXSt2KnVbbisyXVtyKzFdK3kqdVtuKzJdW3IrMl0reCp1W24rMl1b ciszXSxjPWcqdVtuKzNdW3JdK3YqdVtuKzNdW3IrMV0reSp1W24rM11bcisyXSt4KnVbbisz XVtyKzNdLGVbZl09aypvKzMqKFQqYSpzK3cqYipsKStfKmM7cmV0dXJuIGV9OmU/ZnVuY3Rp b24oZSxyLG4saSxhKXt2YXIgbyxzLGwsYztlfHwoZT1bXSkscio9Mzt2YXIgdT1pKmksZj0x LWksaD1mKmYscD1mKmkqMixkPS0zKmgsbT0zKihoLXApLGc9MyoocC11KSx2PTMqdSx5PTEt YTtmb3IobD0wO2w8dC5sZW5ndGg7bCsrKW89ZCooYz10W2xdKVtuXVtyXSttKmNbbl1bcisx XStnKmNbbl1bcisyXSt2KmNbbl1bciszXSxzPWQqY1tuKzFdW3JdK20qY1tuKzFdW3IrMV0r ZypjW24rMV1bcisyXSt2KmNbbisxXVtyKzNdLGVbbF09eSpvK2EqcztyZXR1cm4gZX06cj9m dW5jdGlvbihlLHIsbixpLGEpe3ZhciBvLHMsbCxjLHUsZjtlfHwoZT1bXSksbio9Mzt2YXIg aD1hKmEscD1oKmEsZD0xLWEsbT1kKmQsZz1tKmQ7Zm9yKHU9MDt1PHQubGVuZ3RoO3UrKylv PShmPXRbdV0pW25dW3IrMV0tZltuXVtyXSxzPWZbbisxXVtyKzFdLWZbbisxXVtyXSxsPWZb bisyXVtyKzFdLWZbbisyXVtyXSxjPWZbbiszXVtyKzFdLWZbbiszXVtyXSxlW3VdPWcqbysz KihtKmEqcytkKmgqbCkrcCpjO3JldHVybiBlfTpmdW5jdGlvbihlLHIsbixpLGEpe3ZhciBv LHMsbCxjO2V8fChlPVtdKTt2YXIgdT0xLWE7Zm9yKGw9MDtsPHQubGVuZ3RoO2wrKylvPShj PXRbbF0pW25dW3IrMV0tY1tuXVtyXSxzPWNbbisxXVtyKzFdLWNbbisxXVtyXSxlW2xdPXUq bythKnM7cmV0dXJuIGV9fX0se31dLDcwNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBlJiZyP2Z1bmN0aW9uKGUscixu LGksYSl7dmFyIG8scyxsLGMsdSxmO2V8fChlPVtdKSxyKj0zLG4qPTM7dmFyIGg9aSppLHA9 aCppLGQ9MS1pLG09ZCpkLGc9bSpkLHY9YSphLHk9MS1hLHg9eSp5LGI9eSphKjIsXz0tMyp4 LHc9MyooeC1iKSxUPTMqKGItdiksaz0zKnY7Zm9yKGY9MDtmPHQubGVuZ3RoO2YrKylvPV8q KHU9dFtmXSlbbl1bcl0rdyp1W24rMV1bcl0rVCp1W24rMl1bcl0rayp1W24rM11bcl0scz1f KnVbbl1bcisxXSt3KnVbbisxXVtyKzFdK1QqdVtuKzJdW3IrMV0rayp1W24rM11bcisxXSxs PV8qdVtuXVtyKzJdK3cqdVtuKzFdW3IrMl0rVCp1W24rMl1bcisyXStrKnVbbiszXVtyKzJd LGM9Xyp1W25dW3IrM10rdyp1W24rMV1bciszXStUKnVbbisyXVtyKzNdK2sqdVtuKzNdW3Ir M10sZVtmXT1nKm8rMyoobSppKnMrZCpoKmwpK3AqYztyZXR1cm4gZX06ZT9mdW5jdGlvbihl LHIsbixpLGEpe3ZhciBvLHMsbCxjLHUsZjtlfHwoZT1bXSkscio9Mzt2YXIgaD1hKmEscD1o KmEsZD0xLWEsbT1kKmQsZz1tKmQ7Zm9yKHU9MDt1PHQubGVuZ3RoO3UrKylvPShmPXRbdV0p W24rMV1bcl0tZltuXVtyXSxzPWZbbisxXVtyKzFdLWZbbl1bcisxXSxsPWZbbisxXVtyKzJd LWZbbl1bcisyXSxjPWZbbisxXVtyKzNdLWZbbl1bciszXSxlW3VdPWcqbyszKihtKmEqcytk KmgqbCkrcCpjO3JldHVybiBlfTpyP2Z1bmN0aW9uKGUscixuLGksYSl7dmFyIG8scyxsLGM7 ZXx8KGU9W10pLG4qPTM7dmFyIHU9MS1pLGY9YSphLGg9MS1hLHA9aCpoLGQ9aCphKjIsbT0t MypwLGc9MyoocC1kKSx2PTMqKGQtZikseT0zKmY7Zm9yKGw9MDtsPHQubGVuZ3RoO2wrKylv PW0qKGM9dFtsXSlbbl1bcl0rZypjW24rMV1bcl0rdipjW24rMl1bcl0reSpjW24rM11bcl0s cz1tKmNbbl1bcisxXStnKmNbbisxXVtyKzFdK3YqY1tuKzJdW3IrMV0reSpjW24rM11bcisx XSxlW2xdPXUqbytpKnM7cmV0dXJuIGV9OmZ1bmN0aW9uKGUscixuLGksYSl7dmFyIG8scyxs LGM7ZXx8KGU9W10pO3ZhciB1PTEtaTtmb3IobD0wO2w8dC5sZW5ndGg7bCsrKW89KGM9dFts XSlbbisxXVtyXS1jW25dW3JdLHM9Y1tuKzFdW3IrMV0tY1tuXVtyKzFdLGVbbF09dSpvK2kq cztyZXR1cm4gZX19fSx7fV0sNzA1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Uu ZXhwb3J0cz1mdW5jdGlvbih0LGUscixuLGkpe3ZhciBhPWUtMixvPXItMjtyZXR1cm4gbiYm aT9mdW5jdGlvbihlLHIsbil7dmFyIGkscyxsLGMsdSxmO2V8fChlPVtdKTt2YXIgaD1NYXRo Lm1heCgwLE1hdGgubWluKE1hdGguZmxvb3IociksYSkpLHA9TWF0aC5tYXgoMCxNYXRoLm1p bihNYXRoLmZsb29yKG4pLG8pKSxkPU1hdGgubWF4KDAsTWF0aC5taW4oMSxyLWgpKSxtPU1h dGgubWF4KDAsTWF0aC5taW4oMSxuLXApKTtoKj0zLHAqPTM7dmFyIGc9ZCpkLHY9ZypkLHk9 MS1kLHg9eSp5LGI9eCp5LF89bSptLHc9XyptLFQ9MS1tLGs9VCpULEE9aypUO2ZvcihmPTA7 Zjx0Lmxlbmd0aDtmKyspaT1iKih1PXRbZl0pW3BdW2hdKzMqKHgqZCp1W3BdW2grMV0reSpn KnVbcF1baCsyXSkrdip1W3BdW2grM10scz1iKnVbcCsxXVtoXSszKih4KmQqdVtwKzFdW2gr MV0reSpnKnVbcCsxXVtoKzJdKSt2KnVbcCsxXVtoKzNdLGw9Yip1W3ArMl1baF0rMyooeCpk KnVbcCsyXVtoKzFdK3kqZyp1W3ArMl1baCsyXSkrdip1W3ArMl1baCszXSxjPWIqdVtwKzNd W2hdKzMqKHgqZCp1W3ArM11baCsxXSt5KmcqdVtwKzNdW2grMl0pK3YqdVtwKzNdW2grM10s ZVtmXT1BKmkrMyooayptKnMrVCpfKmwpK3cqYztyZXR1cm4gZX06bj9mdW5jdGlvbihlLHIs bil7ZXx8KGU9W10pO3ZhciBpLHMsbCxjLHUsZixoPU1hdGgubWF4KDAsTWF0aC5taW4oTWF0 aC5mbG9vcihyKSxhKSkscD1NYXRoLm1heCgwLE1hdGgubWluKE1hdGguZmxvb3Iobiksbykp LGQ9TWF0aC5tYXgoMCxNYXRoLm1pbigxLHItaCkpLG09TWF0aC5tYXgoMCxNYXRoLm1pbigx LG4tcCkpO2gqPTM7dmFyIGc9ZCpkLHY9ZypkLHk9MS1kLHg9eSp5LGI9eCp5LF89MS1tO2Zv cih1PTA7dTx0Lmxlbmd0aDt1KyspaT1fKihmPXRbdV0pW3BdW2hdK20qZltwKzFdW2hdLHM9 XypmW3BdW2grMV0rbSpmW3ArMV1baCsxXSxsPV8qZltwXVtoKzJdK20qZltwKzFdW2grMV0s Yz1fKmZbcF1baCszXSttKmZbcCsxXVtoKzFdLGVbdV09YippKzMqKHgqZCpzK3kqZypsKSt2 KmM7cmV0dXJuIGV9Omk/ZnVuY3Rpb24oZSxyLG4pe2V8fChlPVtdKTt2YXIgaSxzLGwsYyx1 LGYsaD1NYXRoLm1heCgwLE1hdGgubWluKE1hdGguZmxvb3IociksYSkpLHA9TWF0aC5tYXgo MCxNYXRoLm1pbihNYXRoLmZsb29yKG4pLG8pKSxkPU1hdGgubWF4KDAsTWF0aC5taW4oMSxy LWgpKSxtPU1hdGgubWF4KDAsTWF0aC5taW4oMSxuLXApKTtwKj0zO3ZhciBnPW0qbSx2PWcq bSx5PTEtbSx4PXkqeSxiPXgqeSxfPTEtZDtmb3IodT0wO3U8dC5sZW5ndGg7dSsrKWk9Xyoo Zj10W3VdKVtwXVtoXStkKmZbcF1baCsxXSxzPV8qZltwKzFdW2hdK2QqZltwKzFdW2grMV0s bD1fKmZbcCsyXVtoXStkKmZbcCsyXVtoKzFdLGM9XypmW3ArM11baF0rZCpmW3ArM11baCsx XSxlW3VdPWIqaSszKih4Km0qcyt5KmcqbCkrdipjO3JldHVybiBlfTpmdW5jdGlvbihlLHIs bil7ZXx8KGU9W10pO3ZhciBpLHMsbCxjLHU9TWF0aC5tYXgoMCxNYXRoLm1pbihNYXRoLmZs b29yKHIpLGEpKSxmPU1hdGgubWF4KDAsTWF0aC5taW4oTWF0aC5mbG9vcihuKSxvKSksaD1N YXRoLm1heCgwLE1hdGgubWluKDEsci11KSkscD1NYXRoLm1heCgwLE1hdGgubWluKDEsbi1m KSksZD0xLXAsbT0xLWg7Zm9yKGw9MDtsPHQubGVuZ3RoO2wrKylpPW0qKGM9dFtsXSlbZl1b dV0raCpjW2ZdW3UrMV0scz1tKmNbZisxXVt1XStoKmNbZisxXVt1KzFdLGVbbF09ZCppK3Aq cztyZXR1cm4gZX19fSx7fV0sNzA2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi94eV9kZWZhdWx0cyIpLGE9dCgiLi9hYl9kZWZh dWx0cyIpLG89dCgiLi9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9y L2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbCl7ZnVuY3Rpb24gYyhy LGkpe3JldHVybiBuLmNvZXJjZSh0LGUsbyxyLGkpfWUuX2NsaXBQYXRoSWQ9ImNsaXAiK2Uu dWlkKyJjYXJwZXQiO3ZhciB1PWMoImNvbG9yIixzLmRlZmF1bHRMaW5lKTsobi5jb2VyY2VG b250KGMsImZvbnQiKSxjKCJjYXJwZXQiKSxhKHQsZSxsLGMsdSksZS5hJiZlLmIpPyhlLmEu bGVuZ3RoPDMmJihlLmFheGlzLnNtb290aGluZz0wKSxlLmIubGVuZ3RoPDMmJihlLmJheGlz LnNtb290aGluZz0wKSxpKHQsZSxjKXx8KGUudmlzaWJsZT0hMSksZS5fY2hlYXRlciYmYygi Y2hlYXRlcnNsb3BlIikpOmUudmlzaWJsZT0hMX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xv ci9hdHRyaWJ1dGVzIjozNjUsIi4uLy4uL2xpYiI6NTAzLCIuL2FiX2RlZmF1bHRzIjo2ODks Ii4vYXR0cmlidXRlcyI6NjkxLCIuL3h5X2RlZmF1bHRzIjo3MTV9XSw3MDc6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmli dXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxwbG90OnQoIi4vcGxvdCIp LGNhbGM6dCgiLi9jYWxjIiksYW5pbWF0YWJsZTohMCxpc0NvbnRhaW5lcjohMCxtb2R1bGVU eXBlOiJ0cmFjZSIsbmFtZToiY2FycGV0IixiYXNlUGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4iKSxjYXRlZ29yaWVzOlsiY2FydGVzaWFuIiwic3ZnIiwiY2FycGV0Iiwi Y2FycGV0QXhpcyIsIm5vdExlZ2VuZElzb2xhdGFibGUiLCJub011bHRpQ2F0ZWdvcnkiLCJu b0hvdmVyIiwibm9Tb3J0aW5nQnlWYWx1ZSJdLG1ldGE6e319fSx7Ii4uLy4uL3Bsb3RzL2Nh cnRlc2lhbiI6NTY4LCIuL2F0dHJpYnV0ZXMiOjY5MSwiLi9jYWxjIjo2OTUsIi4vZGVmYXVs dHMiOjcwNiwiLi9wbG90Ijo3MTJ9XSw3MDg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByLG49dC5fZnVsbERhdGEubGVu Z3RoLGk9MDtpPG47aSsrKXt2YXIgYT10Ll9mdWxsRGF0YVtpXTtpZihhLmluZGV4IT09ZS5p bmRleCYmKCJjYXJwZXQiPT09YS50eXBlJiYocnx8KHI9YSksYS5jYXJwZXQ9PT1lLmNhcnBl dCkpKXJldHVybiBhfXJldHVybiByfX0se31dLDcwOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2lmKDA9PT10Lmxlbmd0aClyZXR1 cm4iIjt2YXIgbixpPVtdLGE9cj8zOjE7Zm9yKG49MDtuPHQubGVuZ3RoO24rPWEpaS5wdXNo KHRbbl0rIiwiK2Vbbl0pLHImJm48dC5sZW5ndGgtYSYmKGkucHVzaCgiQyIpLGkucHVzaChb dFtuKzFdKyIsIitlW24rMV0sdFtuKzJdKyIsIitlW24rMl0rIiAiXS5qb2luKCIgIikpKTty ZXR1cm4gaS5qb2luKHI/IiI6IkwiKX19LHt9XSw3MTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIikuaXNBcnJheU9yVHlwZWRBcnJheTtlLmV4 cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBpO2ZvcihuKHQpP3QubGVuZ3RoPmUubGVuZ3Ro JiYodD10LnNsaWNlKDAsZS5sZW5ndGgpKTp0PVtdLGk9MDtpPGUubGVuZ3RoO2krKyl0W2ld PXIoZVtpXSk7cmV0dXJuIHR9fSx7Ii4uLy4uL2xpYiI6NTAzfV0sNzExOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuLGksYSl7dmFy IG89aVswXSp0LmRwZHgoZSkscz1pWzFdKnQuZHBkeShyKSxsPTEsYz0xO2lmKGEpe3ZhciB1 PU1hdGguc3FydChpWzBdKmlbMF0raVsxXSppWzFdKSxmPU1hdGguc3FydChhWzBdKmFbMF0r YVsxXSphWzFdKSxoPShpWzBdKmFbMF0raVsxXSphWzFdKS91L2Y7Yz1NYXRoLm1heCgwLGgp fXZhciBwPTE4MCpNYXRoLmF0YW4yKHMsbykvTWF0aC5QSTtyZXR1cm4gcDwtOTA/KHArPTE4 MCxsPS1sKTpwPjkwJiYocC09MTgwLGw9LWwpLHthbmdsZTpwLGZsaXA6bCxwOnQuYzJwKG4s ZSxyKSxvZmZzZXRNdWx0cGxpZXI6Y319fSx7fV0sNzEyOltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoIkBwbG90bHkvZDMiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMv ZHJhd2luZyIpLGE9dCgiLi9tYXBfMWRfYXJyYXkiKSxvPXQoIi4vbWFrZXBhdGgiKSxzPXQo Ii4vb3JpZW50X3RleHQiKSxsPXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyIpLGM9dCgi Li4vLi4vbGliIiksdT1jLnN0clJvdGF0ZSxmPWMuc3RyVHJhbnNsYXRlLGg9dCgiLi4vLi4v Y29uc3RhbnRzL2FsaWdubWVudCIpO2Z1bmN0aW9uIHAodCxlLHIscyxsLGMpe3ZhciB1PSJj b25zdC0iK2wrIi1saW5lcyIsZj1yLnNlbGVjdEFsbCgiLiIrdSkuZGF0YShjKTtmLmVudGVy KCkuYXBwZW5kKCJwYXRoIikuY2xhc3NlZCh1LCEwKS5zdHlsZSgidmVjdG9yLWVmZmVjdCIs Im5vbi1zY2FsaW5nLXN0cm9rZSIpLGYuZWFjaCgoZnVuY3Rpb24ocil7dmFyIHM9cixsPXMu eCxjPXMueSx1PWEoW10sbCx0LmMycCksZj1hKFtdLGMsZS5jMnApLGg9Ik0iK28odSxmLHMu c21vb3RoaW5nKTtuLnNlbGVjdCh0aGlzKS5hdHRyKCJkIixoKS5zdHlsZSgic3Ryb2tlLXdp ZHRoIixzLndpZHRoKS5zdHlsZSgic3Ryb2tlIixzLmNvbG9yKS5zdHlsZSgic3Ryb2tlLWRh c2hhcnJheSIsaS5kYXNoU3R5bGUocy5kYXNoLHMud2lkdGgpKS5zdHlsZSgiZmlsbCIsIm5v bmUiKX0pKSxmLmV4aXQoKS5yZW1vdmUoKX1mdW5jdGlvbiBkKHQsZSxyLGEsbyxjLGgscCl7 dmFyIGQ9Yy5zZWxlY3RBbGwoInRleHQuIitwKS5kYXRhKGgpO2QuZW50ZXIoKS5hcHBlbmQo InRleHQiKS5jbGFzc2VkKHAsITApO3ZhciBtPTAsZz17fTtyZXR1cm4gZC5lYWNoKChmdW5j dGlvbihvLGMpe3ZhciBoO2lmKCJhdXRvIj09PW8uYXhpcy50aWNrYW5nbGUpaD1zKGEsZSxy LG8ueHksby5keHkpO2Vsc2V7dmFyIHA9KG8uYXhpcy50aWNrYW5nbGUrMTgwKSpNYXRoLlBJ LzE4MDtoPXMoYSxlLHIsby54eSxbTWF0aC5jb3MocCksTWF0aC5zaW4ocCldKX1jfHwoZz17 YW5nbGU6aC5hbmdsZSxmbGlwOmguZmxpcH0pO3ZhciBkPShvLmVuZEFuY2hvcj8tMToxKSpo LmZsaXAsdj1uLnNlbGVjdCh0aGlzKS5hdHRyKHsidGV4dC1hbmNob3IiOmQ+MD8ic3RhcnQi OiJlbmQiLCJkYXRhLW5vdGV4IjoxfSkuY2FsbChpLmZvbnQsby5mb250KS50ZXh0KG8udGV4 dCkuY2FsbChsLmNvbnZlcnRUb1RzcGFucyx0KSx5PWkuYkJveCh0aGlzKTt2LmF0dHIoInRy YW5zZm9ybSIsZihoLnBbMF0saC5wWzFdKSt1KGguYW5nbGUpK2Yoby5heGlzLmxhYmVscGFk ZGluZypkLC4zKnkuaGVpZ2h0KSksbT1NYXRoLm1heChtLHkud2lkdGgrby5heGlzLmxhYmVs cGFkZGluZyl9KSksZC5leGl0KCkucmVtb3ZlKCksZy5tYXhFeHRlbnQ9bSxnfWUuZXhwb3J0 cz1mdW5jdGlvbih0LGUscixpKXt2YXIgbD1lLnhheGlzLHU9ZS55YXhpcyxmPXQuX2Z1bGxM YXlvdXQuX2NsaXBzO2MubWFrZVRyYWNlR3JvdXBzKGksciwidHJhY2UiKS5lYWNoKChmdW5j dGlvbihlKXt2YXIgcj1uLnNlbGVjdCh0aGlzKSxpPWVbMF0saD1pLnRyYWNlLG09aC5hYXhp cyxnPWguYmF4aXMseT1jLmVuc3VyZVNpbmdsZShyLCJnIiwibWlub3JsYXllciIpLHg9Yy5l bnN1cmVTaW5nbGUociwiZyIsIm1ham9ybGF5ZXIiKSxiPWMuZW5zdXJlU2luZ2xlKHIsImci LCJib3VuZGFyeWxheWVyIiksXz1jLmVuc3VyZVNpbmdsZShyLCJnIiwibGFiZWxsYXllciIp O3Iuc3R5bGUoIm9wYWNpdHkiLGgub3BhY2l0eSkscChsLHUseCxtLCJhIixtLl9ncmlkbGlu ZXMpLHAobCx1LHgsZywiYiIsZy5fZ3JpZGxpbmVzKSxwKGwsdSx5LG0sImEiLG0uX21pbm9y Z3JpZGxpbmVzKSxwKGwsdSx5LGcsImIiLGcuX21pbm9yZ3JpZGxpbmVzKSxwKGwsdSxiLG0s ImEtYm91bmRhcnkiLG0uX2JvdW5kYXJ5bGluZXMpLHAobCx1LGIsZywiYi1ib3VuZGFyeSIs Zy5fYm91bmRhcnlsaW5lcyk7dmFyIHc9ZCh0LGwsdSxoLGksXyxtLl9sYWJlbHMsImEtbGFi ZWwiKSxUPWQodCxsLHUsaCxpLF8sZy5fbGFiZWxzLCJiLWxhYmVsIik7IWZ1bmN0aW9uKHQs ZSxyLG4saSxhLG8sbCl7dmFyIHUsZixoLHAsZD1jLmFnZ051bXMoTWF0aC5taW4sbnVsbCxy LmEpLG09Yy5hZ2dOdW1zKE1hdGgubWF4LG51bGwsci5hKSxnPWMuYWdnTnVtcyhNYXRoLm1p bixudWxsLHIuYikseT1jLmFnZ051bXMoTWF0aC5tYXgsbnVsbCxyLmIpO3U9LjUqKGQrbSks Zj1nLGg9ci5hYjJ4eSh1LGYsITApLHA9ci5keHlkYV9yb3VnaCh1LGYpLHZvaWQgMD09PW8u YW5nbGUmJmMuZXh0ZW5kRmxhdChvLHMocixpLGEsaCxyLmR4eWRiX3JvdWdoKHUsZikpKTt2 KHQsZSxyLG4saCxwLHIuYWF4aXMsaSxhLG8sImEtdGl0bGUiKSx1PWQsZj0uNSooZyt5KSxo PXIuYWIyeHkodSxmLCEwKSxwPXIuZHh5ZGJfcm91Z2godSxmKSx2b2lkIDA9PT1sLmFuZ2xl JiZjLmV4dGVuZEZsYXQobCxzKHIsaSxhLGgsci5keHlkYV9yb3VnaCh1LGYpKSk7dih0LGUs cixuLGgscCxyLmJheGlzLGksYSxsLCJiLXRpdGxlIil9KHQsXyxoLGksbCx1LHcsVCksZnVu Y3Rpb24odCxlLHIsbixpKXt2YXIgcyxsLHUsZixoPXIuc2VsZWN0KCIjIit0Ll9jbGlwUGF0 aElkKTtoLnNpemUoKXx8KGg9ci5hcHBlbmQoImNsaXBQYXRoIikuY2xhc3NlZCgiY2FycGV0 Y2xpcCIsITApKTt2YXIgcD1jLmVuc3VyZVNpbmdsZShoLCJwYXRoIiwiY2FycGV0Ym91bmRh cnkiKSxkPWUuY2xpcHNlZ21lbnRzLG09W107Zm9yKGY9MDtmPGQubGVuZ3RoO2YrKylzPWRb Zl0sbD1hKFtdLHMueCxuLmMycCksdT1hKFtdLHMueSxpLmMycCksbS5wdXNoKG8obCx1LHMu YmljdWJpYykpO3ZhciBnPSJNIittLmpvaW4oIkwiKSsiWiI7aC5hdHRyKCJpZCIsdC5fY2xp cFBhdGhJZCkscC5hdHRyKCJkIixnKX0oaCxpLGYsbCx1KX0pKX07dmFyIG09aC5MSU5FX1NQ QUNJTkcsZz0oMS1oLk1JRF9TSElGVCkvbSsxO2Z1bmN0aW9uIHYodCxlLHIsYSxvLGMsaCxw LGQsdix5KXt2YXIgeD1bXTtoLnRpdGxlLnRleHQmJngucHVzaChoLnRpdGxlLnRleHQpO3Zh ciBiPWUuc2VsZWN0QWxsKCJ0ZXh0LiIreSkuZGF0YSh4KSxfPXYubWF4RXh0ZW50O2IuZW50 ZXIoKS5hcHBlbmQoInRleHQiKS5jbGFzc2VkKHksITApLGIuZWFjaCgoZnVuY3Rpb24oKXt2 YXIgZT1zKHIscCxkLG8sYyk7LTE9PT1bInN0YXJ0IiwiYm90aCJdLmluZGV4T2YoaC5zaG93 dGlja2xhYmVscykmJihfPTApO3ZhciBhPWgudGl0bGUuZm9udC5zaXplO18rPWEraC50aXRs ZS5vZmZzZXQ7dmFyIHk9KHYuYW5nbGUrKHYuZmxpcDwwPzE4MDowKS1lLmFuZ2xlKzQ1MCkl MzYwLHg9eT45MCYmeTwyNzAsYj1uLnNlbGVjdCh0aGlzKTtiLnRleHQoaC50aXRsZS50ZXh0 KS5jYWxsKGwuY29udmVydFRvVHNwYW5zLHQpLHgmJihfPSgtbC5saW5lQ291bnQoYikrZykq bSphLV8pLGIuYXR0cigidHJhbnNmb3JtIixmKGUucFswXSxlLnBbMV0pK3UoZS5hbmdsZSkr ZigwLF8pKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmNhbGwoaS5mb250LGgudGl0 bGUuZm9udCl9KSksYi5leGl0KCkucmVtb3ZlKCl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJh d2luZyI6Mzg4LCIuLi8uLi9jb25zdGFudHMvYWxpZ25tZW50Ijo0NzEsIi4uLy4uL2xpYiI6 NTAzLCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiOjUyOSwiLi9tYWtlcGF0aCI6NzA5LCIu L21hcF8xZF9hcnJheSI6NzEwLCIuL29yaWVudF90ZXh0Ijo3MTEsIkBwbG90bHkvZDMiOjU4 fV0sNzEzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vY29uc3Rh bnRzIiksaT10KCIuLi8uLi9saWIvc2VhcmNoIikuZmluZEJpbixhPXQoIi4vY29tcHV0ZV9j b250cm9sX3BvaW50cyIpLG89dCgiLi9jcmVhdGVfc3BsaW5lX2V2YWx1YXRvciIpLHM9dCgi Li9jcmVhdGVfaV9kZXJpdmF0aXZlX2V2YWx1YXRvciIpLGw9dCgiLi9jcmVhdGVfal9kZXJp dmF0aXZlX2V2YWx1YXRvciIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10Ll9hLHI9 dC5fYixjPWUubGVuZ3RoLHU9ci5sZW5ndGgsZj10LmFheGlzLGg9dC5iYXhpcyxwPWVbMF0s ZD1lW2MtMV0sbT1yWzBdLGc9clt1LTFdLHY9ZVtlLmxlbmd0aC0xXS1lWzBdLHk9cltyLmxl bmd0aC0xXS1yWzBdLHg9dipuLlJFTEFUSVZFX0NVTExfVE9MRVJBTkNFLGI9eSpuLlJFTEFU SVZFX0NVTExfVE9MRVJBTkNFO3AtPXgsZCs9eCxtLT1iLGcrPWIsdC5pc1Zpc2libGU9ZnVu Y3Rpb24odCxlKXtyZXR1cm4gdD5wJiZ0PGQmJmU+bSYmZTxnfSx0LmlzT2NjbHVkZWQ9ZnVu Y3Rpb24odCxlKXtyZXR1cm4gdDxwfHx0PmR8fGU8bXx8ZT5nfSx0LnNldFNjYWxlPWZ1bmN0 aW9uKCl7dmFyIGU9dC5feCxyPXQuX3ksbj1hKHQuX3hjdHJsLHQuX3ljdHJsLGUscixmLnNt b290aGluZyxoLnNtb290aGluZyk7dC5feGN0cmw9blswXSx0Ll95Y3RybD1uWzFdLHQuZXZh bHh5PW8oW3QuX3hjdHJsLHQuX3ljdHJsXSxjLHUsZi5zbW9vdGhpbmcsaC5zbW9vdGhpbmcp LHQuZHh5ZGk9cyhbdC5feGN0cmwsdC5feWN0cmxdLGYuc21vb3RoaW5nLGguc21vb3RoaW5n KSx0LmR4eWRqPWwoW3QuX3hjdHJsLHQuX3ljdHJsXSxmLnNtb290aGluZyxoLnNtb290aGlu Zyl9LHQuaTJhPWZ1bmN0aW9uKHQpe3ZhciByPU1hdGgubWF4KDAsTWF0aC5mbG9vcih0WzBd KSxjLTIpLG49dFswXS1yO3JldHVybigxLW4pKmVbcl0rbiplW3IrMV19LHQuajJiPWZ1bmN0 aW9uKHQpe3ZhciBlPU1hdGgubWF4KDAsTWF0aC5mbG9vcih0WzFdKSxjLTIpLG49dFsxXS1l O3JldHVybigxLW4pKnJbZV0rbipyW2UrMV19LHQuaWoyYWI9ZnVuY3Rpb24oZSl7cmV0dXJu W3QuaTJhKGVbMF0pLHQuajJiKGVbMV0pXX0sdC5hMmk9ZnVuY3Rpb24odCl7dmFyIHI9TWF0 aC5tYXgoMCxNYXRoLm1pbihpKHQsZSksYy0yKSksbj1lW3JdLGE9ZVtyKzFdO3JldHVybiBN YXRoLm1heCgwLE1hdGgubWluKGMtMSxyKyh0LW4pLyhhLW4pKSl9LHQuYjJqPWZ1bmN0aW9u KHQpe3ZhciBlPU1hdGgubWF4KDAsTWF0aC5taW4oaSh0LHIpLHUtMikpLG49cltlXSxhPXJb ZSsxXTtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1pbih1LTEsZSsodC1uKS8oYS1uKSkpfSx0 LmFiMmlqPWZ1bmN0aW9uKGUpe3JldHVyblt0LmEyaShlWzBdKSx0LmIyaihlWzFdKV19LHQu aTJjPWZ1bmN0aW9uKGUscil7cmV0dXJuIHQuZXZhbHh5KFtdLGUscil9LHQuYWIyeHk9ZnVu Y3Rpb24obixpLGEpe2lmKCFhJiYobjxlWzBdfHxuPmVbYy0xXXxpPHJbMF18fGk+clt1LTFd KSlyZXR1cm5bITEsITFdO3ZhciBvPXQuYTJpKG4pLHM9dC5iMmooaSksbD10LmV2YWx4eShb XSxvLHMpO2lmKGEpe3ZhciBmLGgscCxkLG09MCxnPTAsdj1bXTtuPGVbMF0/KGY9MCxoPTAs bT0obi1lWzBdKS8oZVsxXS1lWzBdKSk6bj5lW2MtMV0/KGY9Yy0yLGg9MSxtPShuLWVbYy0x XSkvKGVbYy0xXS1lW2MtMl0pKTpoPW8tKGY9TWF0aC5tYXgoMCxNYXRoLm1pbihjLTIsTWF0 aC5mbG9vcihvKSkpKSxpPHJbMF0/KHA9MCxkPTAsZz0oaS1yWzBdKS8oclsxXS1yWzBdKSk6 aT5yW3UtMV0/KHA9dS0yLGQ9MSxnPShpLXJbdS0xXSkvKHJbdS0xXS1yW3UtMl0pKTpkPXMt KHA9TWF0aC5tYXgoMCxNYXRoLm1pbih1LTIsTWF0aC5mbG9vcihzKSkpKSxtJiYodC5keHlk aSh2LGYscCxoLGQpLGxbMF0rPXZbMF0qbSxsWzFdKz12WzFdKm0pLGcmJih0LmR4eWRqKHYs ZixwLGgsZCksbFswXSs9dlswXSpnLGxbMV0rPXZbMV0qZyl9cmV0dXJuIGx9LHQuYzJwPWZ1 bmN0aW9uKHQsZSxyKXtyZXR1cm5bZS5jMnAodFswXSksci5jMnAodFsxXSldfSx0LnAyeD1m dW5jdGlvbih0LGUscil7cmV0dXJuW2UucDJjKHRbMF0pLHIucDJjKHRbMV0pXX0sdC5kYWRp PWZ1bmN0aW9uKHQpe3ZhciByPU1hdGgubWF4KDAsTWF0aC5taW4oZS5sZW5ndGgtMix0KSk7 cmV0dXJuIGVbcisxXS1lW3JdfSx0LmRiZGo9ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5tYXgo MCxNYXRoLm1pbihyLmxlbmd0aC0yLHQpKTtyZXR1cm4gcltlKzFdLXJbZV19LHQuZHh5ZGE9 ZnVuY3Rpb24oZSxyLG4saSl7dmFyIGE9dC5keHlkaShudWxsLGUscixuLGkpLG89dC5kYWRp KGUsbik7cmV0dXJuW2FbMF0vbyxhWzFdL29dfSx0LmR4eWRiPWZ1bmN0aW9uKGUscixuLGkp e3ZhciBhPXQuZHh5ZGoobnVsbCxlLHIsbixpKSxvPXQuZGJkaihyLGkpO3JldHVyblthWzBd L28sYVsxXS9vXX0sdC5keHlkYV9yb3VnaD1mdW5jdGlvbihlLHIsbil7dmFyIGk9dioobnx8 LjEpLGE9dC5hYjJ4eShlK2ksciwhMCksbz10LmFiMnh5KGUtaSxyLCEwKTtyZXR1cm5bLjUq KGFbMF0tb1swXSkvaSwuNSooYVsxXS1vWzFdKS9pXX0sdC5keHlkYl9yb3VnaD1mdW5jdGlv bihlLHIsbil7dmFyIGk9eSoobnx8LjEpLGE9dC5hYjJ4eShlLHIraSwhMCksbz10LmFiMnh5 KGUsci1pLCEwKTtyZXR1cm5bLjUqKGFbMF0tb1swXSkvaSwuNSooYVsxXS1vWzFdKS9pXX0s dC5kcGR4PWZ1bmN0aW9uKHQpe3JldHVybiB0Ll9tfSx0LmRwZHk9ZnVuY3Rpb24odCl7cmV0 dXJuIHQuX219fX0seyIuLi8uLi9saWIvc2VhcmNoIjo1MjMsIi4vY29tcHV0ZV9jb250cm9s X3BvaW50cyI6NzAxLCIuL2NvbnN0YW50cyI6NzAyLCIuL2NyZWF0ZV9pX2Rlcml2YXRpdmVf ZXZhbHVhdG9yIjo3MDMsIi4vY3JlYXRlX2pfZGVyaXZhdGl2ZV9ldmFsdWF0b3IiOjcwNCwi Li9jcmVhdGVfc3BsaW5lX2V2YWx1YXRvciI6NzA1fV0sNzE0OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUscil7dmFyIGksYSxvLHM9W10sbD1bXSxjPXRbMF0ubGVuZ3RoLHU9dC5sZW5ndGg7ZnVu Y3Rpb24gZihlLHIpe3ZhciBuLGk9MCxhPTA7cmV0dXJuIGU+MCYmdm9pZCAwIT09KG49dFty XVtlLTFdKSYmKGErKyxpKz1uKSxlPGMtMSYmdm9pZCAwIT09KG49dFtyXVtlKzFdKSYmKGEr KyxpKz1uKSxyPjAmJnZvaWQgMCE9PShuPXRbci0xXVtlXSkmJihhKyssaSs9bikscjx1LTEm JnZvaWQgMCE9PShuPXRbcisxXVtlXSkmJihhKyssaSs9biksaS9NYXRoLm1heCgxLGEpfXZh ciBoLHAsZCxtLGcsdix5LHgsYixfLHcsVD0wO2ZvcihpPTA7aTxjO2krKylmb3IoYT0wO2E8 dTthKyspdm9pZCAwPT09dFthXVtpXSYmKHMucHVzaChpKSxsLnB1c2goYSksdFthXVtpXT1m KGksYSkpLFQ9TWF0aC5tYXgoVCxNYXRoLmFicyh0W2FdW2ldKSk7aWYoIXMubGVuZ3RoKXJl dHVybiB0O3ZhciBrPTAsQT0wLE09cy5sZW5ndGg7ZG97Zm9yKGs9MCxvPTA7bzxNO28rKyl7 aT1zW29dLGE9bFtvXTt2YXIgUyxFLEwsQyxQLEksTz0wLHo9MDswPT09aT8oTD1lW1A9TWF0 aC5taW4oYy0xLDIpXSxDPWVbMV0sUz10W2FdW1BdLHorPShFPXRbYV1bMV0pKyhFLVMpKihl WzBdLUMpLyhDLUwpLE8rKyk6aT09PWMtMSYmKEw9ZVtQPU1hdGgubWF4KDAsYy0zKV0sQz1l W2MtMl0sUz10W2FdW1BdLHorPShFPXRbYV1bYy0yXSkrKEUtUykqKGVbYy0xXS1DKS8oQy1M KSxPKyspLCgwPT09aXx8aT09PWMtMSkmJmE+MCYmYTx1LTEmJihoPXJbYSsxXS1yW2FdLHor PSgocD1yW2FdLXJbYS0xXSkqdFthKzFdW2ldK2gqdFthLTFdW2ldKS8ocCtoKSxPKyspLDA9 PT1hPyhMPXJbST1NYXRoLm1pbih1LTEsMildLEM9clsxXSxTPXRbSV1baV0seis9KEU9dFsx XVtpXSkrKEUtUykqKHJbMF0tQykvKEMtTCksTysrKTphPT09dS0xJiYoTD1yW0k9TWF0aC5t YXgoMCx1LTMpXSxDPXJbdS0yXSxTPXRbSV1baV0seis9KEU9dFt1LTJdW2ldKSsoRS1TKSoo clt1LTFdLUMpLyhDLUwpLE8rKyksKDA9PT1hfHxhPT09dS0xKSYmaT4wJiZpPGMtMSYmKGg9 ZVtpKzFdLWVbaV0seis9KChwPWVbaV0tZVtpLTFdKSp0W2FdW2krMV0raCp0W2FdW2ktMV0p LyhwK2gpLE8rKyksTz96Lz1POihkPWVbaSsxXS1lW2ldLG09ZVtpXS1lW2ktMV0seD0oZz1y W2ErMV0tclthXSkqKHY9clthXS1yW2EtMV0pKihnK3YpLHo9KCh5PWQqbSooZCttKSkqKHYq dFthKzFdW2ldK2cqdFthLTFdW2ldKSt4KihtKnRbYV1baSsxXStkKnRbYV1baS0xXSkpLyh4 KihtK2QpK3kqKHYrZykpKSxrKz0oXz0oYj16LXRbYV1baV0pL1QpKl8sdz1PPzA6Ljg1LHRb YV1baV0rPWIqKDErdyl9az1NYXRoLnNxcnQoayl9d2hpbGUoQSsrPDEwMCYmaz4xZS01KTty ZXR1cm4gbi5sb2coIlNtb290aGVyIGNvbnZlcmdlZCB0byIsaywiYWZ0ZXIiLEEsIml0ZXJh dGlvbnMiKSx0fX0seyIuLi8uLi9saWIiOjUwM31dLDcxNTpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKS5pc0FycmF5MUQ7ZS5leHBvcnRzPWZ1 bmN0aW9uKHQsZSxyKXt2YXIgaT1yKCJ4IiksYT1pJiZpLmxlbmd0aCxvPXIoInkiKSxzPW8m Jm8ubGVuZ3RoO2lmKCFhJiYhcylyZXR1cm4hMTtpZihlLl9jaGVhdGVyPSFpLGEmJiFuKGkp fHxzJiYhbihvKSllLl9sZW5ndGg9bnVsbDtlbHNle3ZhciBsPWE/aS5sZW5ndGg6MS8wO3Mm JihsPU1hdGgubWluKGwsby5sZW5ndGgpKSxlLmEmJmUuYS5sZW5ndGgmJihsPU1hdGgubWlu KGwsZS5hLmxlbmd0aCkpLGUuYiYmZS5iLmxlbmd0aCYmKGw9TWF0aC5taW4obCxlLmIubGVu Z3RoKSksZS5fbGVuZ3RoPWx9cmV0dXJuITB9fSx7Ii4uLy4uL2xpYiI6NTAzfV0sNzE2Oltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL3RlbXBs YXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsaT10KCIuLi9zY2F0dGVyZ2Vv L2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1 dGVzIiksbz10KCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9jb21wb25l bnRzL2NvbG9yL2F0dHJpYnV0ZXMiKS5kZWZhdWx0TGluZSxsPXQoIi4uLy4uL2xpYi9leHRl bmQiKS5leHRlbmRGbGF0LGM9aS5tYXJrZXIubGluZTtlLmV4cG9ydHM9bCh7bG9jYXRpb25z Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LGxvY2F0aW9ubW9kZTpp LmxvY2F0aW9ubW9kZSx6Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9 LGdlb2pzb246bCh7fSxpLmdlb2pzb24se30pLGZlYXR1cmVpZGtleTppLmZlYXR1cmVpZGtl eSx0ZXh0Omwoe30saS50ZXh0LHt9KSxob3ZlcnRleHQ6bCh7fSxpLmhvdmVydGV4dCx7fSks bWFya2VyOntsaW5lOntjb2xvcjpsKHt9LGMuY29sb3Ise2RmbHQ6c30pLHdpZHRoOmwoe30s Yy53aWR0aCx7ZGZsdDoxfSksZWRpdFR5cGU6ImNhbGMifSxvcGFjaXR5Ont2YWxUeXBlOiJu dW1iZXIiLGFycmF5T2s6ITAsbWluOjAsbWF4OjEsZGZsdDoxLGVkaXRUeXBlOiJzdHlsZSJ9 LGVkaXRUeXBlOiJjYWxjIn0sc2VsZWN0ZWQ6e21hcmtlcjp7b3BhY2l0eTppLnNlbGVjdGVk Lm1hcmtlci5vcGFjaXR5LGVkaXRUeXBlOiJwbG90In0sZWRpdFR5cGU6InBsb3QifSx1bnNl bGVjdGVkOnttYXJrZXI6e29wYWNpdHk6aS51bnNlbGVjdGVkLm1hcmtlci5vcGFjaXR5LGVk aXRUeXBlOiJwbG90In0sZWRpdFR5cGU6InBsb3QifSxob3ZlcmluZm86bCh7fSxvLmhvdmVy aW5mbyx7ZWRpdFR5cGU6ImNhbGMiLGZsYWdzOlsibG9jYXRpb24iLCJ6IiwidGV4dCIsIm5h bWUiXX0pLGhvdmVydGVtcGxhdGU6bigpLHNob3dsZWdlbmQ6bCh7fSxvLnNob3dsZWdlbmQs e2RmbHQ6ITF9KX0sYSgiIix7Y0xldHRlcjoieiIsZWRpdFR5cGVPdmVycmlkZToiY2FsYyJ9 KSl9LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIjozNjUsIi4uLy4uL2Nv bXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjozNzMsIi4uLy4uL2xpYi9leHRlbmQi OjQ5MywiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyI6NTUwLCIuLi8uLi9wbG90cy90ZW1wbGF0 ZV9hdHRyaWJ1dGVzIjo2MzMsIi4uL3NjYXR0ZXJnZW8vYXR0cmlidXRlcyI6OTY5fV0sNzE3 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmlj IiksaT10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIikuQkFETlVNLGE9dCgiLi4vLi4v Y29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiKSxvPXQoIi4uL3NjYXR0ZXIvYXJyYXlzX3Rv X2NhbGNkYXRhIikscz10KCIuLi9zY2F0dGVyL2NhbGNfc2VsZWN0aW9uIik7ZnVuY3Rpb24g bCh0KXtyZXR1cm4gdCYmInN0cmluZyI9PXR5cGVvZiB0fWUuZXhwb3J0cz1mdW5jdGlvbih0 LGUpe3ZhciByLGM9ZS5fbGVuZ3RoLHU9bmV3IEFycmF5KGMpO3I9ZS5nZW9qc29uP2Z1bmN0 aW9uKHQpe3JldHVybiBsKHQpfHxuKHQpfTpsO2Zvcih2YXIgZj0wO2Y8YztmKyspe3ZhciBo PXVbZl09e30scD1lLmxvY2F0aW9uc1tmXSxkPWUueltmXTtyKHApJiZuKGQpPyhoLmxvYz1w LGguej1kKTooaC5sb2M9bnVsbCxoLno9aSksaC5pbmRleD1mfXJldHVybiBvKHUsZSksYSh0 LGUse3ZhbHM6ZS56LGNvbnRhaW5lclN0cjoiIixjTGV0dGVyOiJ6In0pLHModSxlKSx1fX0s eyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyI6Mzc0LCIuLi8uLi9jb25zdGFu dHMvbnVtZXJpY2FsIjo0NzksIi4uL3NjYXR0ZXIvYXJyYXlzX3RvX2NhbGNkYXRhIjo5MjYs Ii4uL3NjYXR0ZXIvY2FsY19zZWxlY3Rpb24iOjkyOSwiZmFzdC1pc251bWVyaWMiOjE5MH1d LDcxODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIi KSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyIpLGE9dCgiLi9h dHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG8pe2Z1bmN0aW9uIHMocixp KXtyZXR1cm4gbi5jb2VyY2UodCxlLGEscixpKX12YXIgbD1zKCJsb2NhdGlvbnMiKSxjPXMo InoiKTtpZihsJiZsLmxlbmd0aCYmbi5pc0FycmF5T3JUeXBlZEFycmF5KGMpJiZjLmxlbmd0 aCl7ZS5fbGVuZ3RoPU1hdGgubWluKGwubGVuZ3RoLGMubGVuZ3RoKTt2YXIgdSxmPXMoImdl b2pzb24iKTsoInN0cmluZyI9PXR5cGVvZiBmJiYiIiE9PWZ8fG4uaXNQbGFpbk9iamVjdChm KSkmJih1PSJnZW9qc29uLWlkIiksImdlb2pzb24taWQiPT09cygibG9jYXRpb25tb2RlIix1 KSYmcygiZmVhdHVyZWlka2V5IikscygidGV4dCIpLHMoImhvdmVydGV4dCIpLHMoImhvdmVy dGVtcGxhdGUiKSxzKCJtYXJrZXIubGluZS53aWR0aCIpJiZzKCJtYXJrZXIubGluZS5jb2xv ciIpLHMoIm1hcmtlci5vcGFjaXR5IiksaSh0LGUsbyxzLHtwcmVmaXg6IiIsY0xldHRlcjoi eiJ9KSxuLmNvZXJjZVNlbGVjdGlvbk1hcmtlck9wYWNpdHkoZSxzKX1lbHNlIGUudmlzaWJs ZT0hMX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIjozNzYsIi4u Ly4uL2xpYiI6NTAzLCIuL2F0dHJpYnV0ZXMiOjcxNn1dLDcxOTpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbixpKXt0LmxvY2F0aW9u PWUubG9jYXRpb24sdC56PWUuejt2YXIgYT1uW2ldO3JldHVybiBhLmZJbiYmYS5mSW4ucHJv cGVydGllcyYmKHQucHJvcGVydGllcz1hLmZJbi5wcm9wZXJ0aWVzKSx0LmN0PWEuY3QsdH19 LHt9XSw3MjA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4v cGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxpPXQoIi4vYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4v bGliIikuZmlsbFRleHQ7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbyxzLGwsYyx1 PXQuY2QsZj11WzBdLnRyYWNlLGg9dC5zdWJwbG90LHA9W2Uscl0sZD1bZSszNjAscl07Zm9y KHM9MDtzPHUubGVuZ3RoO3MrKylpZihjPSExLChvPXVbc10pLl9wb2x5Z29ucyl7Zm9yKGw9 MDtsPG8uX3BvbHlnb25zLmxlbmd0aDtsKyspby5fcG9seWdvbnNbbF0uY29udGFpbnMocCkm JihjPSFjKSxvLl9wb2x5Z29uc1tsXS5jb250YWlucyhkKSYmKGM9IWMpO2lmKGMpYnJlYWt9 aWYoYyYmbylyZXR1cm4gdC54MD10LngxPXQueGEuYzJwKG8uY3QpLHQueTA9dC55MT10Lnlh LmMycChvLmN0KSx0LmluZGV4PW8uaW5kZXgsdC5sb2NhdGlvbj1vLmxvYyx0Lno9by56LHQu ekxhYmVsPW4udGlja1RleHQoaC5tb2NrQXhpcyxoLm1vY2tBeGlzLmMybChvLnopLCJob3Zl ciIpLnRleHQsdC5ob3ZlcnRlbXBsYXRlPW8uaG92ZXJ0ZW1wbGF0ZSxmdW5jdGlvbih0LGUs cil7aWYoZS5ob3ZlcnRlbXBsYXRlKXJldHVybjt2YXIgbj1yLmhpfHxlLmhvdmVyaW5mbyxv PVN0cmluZyhyLmxvYykscz0iYWxsIj09PW4/aS5ob3ZlcmluZm8uZmxhZ3M6bi5zcGxpdCgi KyIpLGw9LTEhPT1zLmluZGV4T2YoIm5hbWUiKSxjPS0xIT09cy5pbmRleE9mKCJsb2NhdGlv biIpLHU9LTEhPT1zLmluZGV4T2YoInoiKSxmPS0xIT09cy5pbmRleE9mKCJ0ZXh0IiksaD1b XTshbCYmYz90Lm5hbWVPdmVycmlkZT1vOihsJiYodC5uYW1lT3ZlcnJpZGU9ZS5uYW1lKSxj JiZoLnB1c2gobykpO3UmJmgucHVzaCh0LnpMYWJlbCk7ZiYmYShyLGUsaCk7dC5leHRyYVRl eHQ9aC5qb2luKCI8YnI+Iil9KHQsZixvKSxbdF19fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi8u Li9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NTU0LCIuL2F0dHJpYnV0ZXMiOjcxNn1dLDcyMTpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2F0dHJpYnV0ZXM6dCgi Li9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNvbG9yYmFy OnQoIi4uL2hlYXRtYXAvY29sb3JiYXIiKSxjYWxjOnQoIi4vY2FsYyIpLGNhbGNHZW9KU09O OnQoIi4vcGxvdCIpLmNhbGNHZW9KU09OLHBsb3Q6dCgiLi9wbG90IikucGxvdCxzdHlsZTp0 KCIuL3N0eWxlIikuc3R5bGUsc3R5bGVPblNlbGVjdDp0KCIuL3N0eWxlIikuc3R5bGVPblNl bGVjdCxob3ZlclBvaW50czp0KCIuL2hvdmVyIiksZXZlbnREYXRhOnQoIi4vZXZlbnRfZGF0 YSIpLHNlbGVjdFBvaW50czp0KCIuL3NlbGVjdCIpLG1vZHVsZVR5cGU6InRyYWNlIixuYW1l OiJjaG9yb3BsZXRoIixiYXNlUGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9nZW8iKSxjYXRl Z29yaWVzOlsiZ2VvIiwibm9PcGFjaXR5Iiwic2hvd0xlZ2VuZCJdLG1ldGE6e319fSx7Ii4u Ly4uL3Bsb3RzL2dlbyI6NTg5LCIuLi9oZWF0bWFwL2NvbG9yYmFyIjo3OTUsIi4vYXR0cmli dXRlcyI6NzE2LCIuL2NhbGMiOjcxNywiLi9kZWZhdWx0cyI6NzE4LCIuL2V2ZW50X2RhdGEi OjcxOSwiLi9ob3ZlciI6NzIwLCIuL3Bsb3QiOjcyMiwiLi9zZWxlY3QiOjcyMywiLi9zdHls ZSI6NzI0fV0sNzIyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIkBw bG90bHkvZDMiKSxpPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vbGliL2dlb19sb2NhdGlv bl91dGlscyIpLG89dCgiLi4vLi4vbGliL3RvcG9qc29uX3V0aWxzIikuZ2V0VG9wb2pzb25G ZWF0dXJlcyxzPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9hdXRvcmFuZ2UiKS5maW5kRXh0 cmVtZXMsbD10KCIuL3N0eWxlIikuc3R5bGU7ZS5leHBvcnRzPXtjYWxjR2VvSlNPTjpmdW5j dGlvbih0LGUpe2Zvcih2YXIgcj10WzBdLnRyYWNlLG49ZVtyLmdlb10saT1uLl9zdWJwbG90 LGw9ci5sb2NhdGlvbm1vZGUsYz1yLl9sZW5ndGgsdT0iZ2VvanNvbi1pZCI9PT1sP2EuZXh0 cmFjdFRyYWNlRmVhdHVyZSh0KTpvKHIsaS50b3BvanNvbiksZj1bXSxoPVtdLHA9MDtwPGM7 cCsrKXt2YXIgZD10W3BdLG09Imdlb2pzb24taWQiPT09bD9kLmZPdXQ6YS5sb2NhdGlvblRv RmVhdHVyZShsLGQubG9jLHUpO2lmKG0pe2QuZ2VvanNvbj1tLGQuY3Q9bS5wcm9wZXJ0aWVz LmN0LGQuX3BvbHlnb25zPWEuZmVhdHVyZTJwb2x5Z29ucyhtKTt2YXIgZz1hLmNvbXB1dGVC Ym94KG0pO2YucHVzaChnWzBdLGdbMl0pLGgucHVzaChnWzFdLGdbM10pfWVsc2UgZC5nZW9q c29uPW51bGx9aWYoImdlb2pzb24iPT09bi5maXRib3VuZHMmJiJnZW9qc29uLWlkIj09PWwp e3ZhciB2PWEuY29tcHV0ZUJib3goYS5nZXRUcmFjZUdlb2pzb24ocikpO2Y9W3ZbMF0sdlsy XV0saD1bdlsxXSx2WzNdXX12YXIgeT17cGFkZGVkOiEwfTtyLl9leHRyZW1lcy5sb249cyhu LmxvbmF4aXMuX2F4LGYseSksci5fZXh0cmVtZXMubGF0PXMobi5sYXRheGlzLl9heCxoLHkp fSxwbG90OmZ1bmN0aW9uKHQsZSxyKXt2YXIgYT1lLmxheWVycy5iYWNrcGxvdC5zZWxlY3Qo Ii5jaG9yb3BsZXRobGF5ZXIiKTtpLm1ha2VUcmFjZUdyb3VwcyhhLHIsInRyYWNlIGNob3Jv cGxldGgiKS5lYWNoKChmdW5jdGlvbihlKXt2YXIgcj1uLnNlbGVjdCh0aGlzKS5zZWxlY3RB bGwoInBhdGguY2hvcm9wbGV0aGxvY2F0aW9uIikuZGF0YShpLmlkZW50aXR5KTtyLmVudGVy KCkuYXBwZW5kKCJwYXRoIikuY2xhc3NlZCgiY2hvcm9wbGV0aGxvY2F0aW9uIiwhMCksci5l eGl0KCkucmVtb3ZlKCksbCh0LGUpfSkpfX19LHsiLi4vLi4vbGliIjo1MDMsIi4uLy4uL2xp Yi9nZW9fbG9jYXRpb25fdXRpbHMiOjQ5NiwiLi4vLi4vbGliL3RvcG9qc29uX3V0aWxzIjo1 MzIsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9hdXRvcmFuZ2UiOjU1MywiLi9zdHlsZSI6NzI0 LCJAcGxvdGx5L2QzIjo1OH1dLDcyMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijtl LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGksYSxvLHM9dC5jZCxsPXQueGF4aXMs Yz10LnlheGlzLHU9W107aWYoITE9PT1lKWZvcihyPTA7cjxzLmxlbmd0aDtyKyspc1tyXS5z ZWxlY3RlZD0wO2Vsc2UgZm9yKHI9MDtyPHMubGVuZ3RoO3IrKykoaT0obj1zW3JdKS5jdCkm JihhPWwuYzJwKGkpLG89Yy5jMnAoaSksZS5jb250YWlucyhbYSxvXSxudWxsLHIsdCk/KHUu cHVzaCh7cG9pbnROdW1iZXI6cixsb246aVswXSxsYXQ6aVsxXX0pLG4uc2VsZWN0ZWQ9MSk6 bi5zZWxlY3RlZD0wKTtyZXR1cm4gdX19LHt9XSw3MjQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiQHBsb3RseS9kMyIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9j b2xvciIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksbz10KCIuLi8uLi9jb21w b25lbnRzL2NvbG9yc2NhbGUiKTtmdW5jdGlvbiBzKHQsZSl7dmFyIHI9ZVswXS50cmFjZSxz PWVbMF0ubm9kZTMuc2VsZWN0QWxsKCIuY2hvcm9wbGV0aGxvY2F0aW9uIiksbD1yLm1hcmtl cnx8e30sYz1sLmxpbmV8fHt9LHU9by5tYWtlQ29sb3JTY2FsZUZ1bmNGcm9tVHJhY2Uocik7 cy5lYWNoKChmdW5jdGlvbih0KXtuLnNlbGVjdCh0aGlzKS5hdHRyKCJmaWxsIix1KHQueikp LmNhbGwoaS5zdHJva2UsdC5tbGN8fGMuY29sb3IpLmNhbGwoYS5kYXNoTGluZSwiIix0Lm1s d3x8Yy53aWR0aHx8MCkuc3R5bGUoIm9wYWNpdHkiLGwub3BhY2l0eSl9KSksYS5zZWxlY3Rl ZFBvaW50U3R5bGUocyxyLHQpfWUuZXhwb3J0cz17c3R5bGU6ZnVuY3Rpb24odCxlKXtlJiZz KHQsZSl9LHN0eWxlT25TZWxlY3Q6ZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLm5vZGUzLG49 ZVswXS50cmFjZTtuLnNlbGVjdGVkcG9pbnRzP2Euc2VsZWN0ZWRQb2ludFN0eWxlKHIuc2Vs ZWN0QWxsKCIuY2hvcm9wbGV0aGxvY2F0aW9uIiksbix0KTpzKHQsZSl9fX0seyIuLi8uLi9j b21wb25lbnRzL2NvbG9yIjozNjYsIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSI6Mzc4 LCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjM4OCwiQHBsb3RseS9kMyI6NTh9XSw3MjU6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vY2hvcm9wbGV0aC9h dHRyaWJ1dGVzIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRl cyIpLGE9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxh dGVBdHRycyxvPXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxzPXQoIi4uLy4uL2xpYi9l eHRlbmQiKS5leHRlbmRGbGF0O2UuZXhwb3J0cz1zKHtsb2NhdGlvbnM6e3ZhbFR5cGU6ImRh dGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sejp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRp dFR5cGU6ImNhbGMifSxnZW9qc29uOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJjYWxjIn0s ZmVhdHVyZWlka2V5OnMoe30sbi5mZWF0dXJlaWRrZXkse30pLGJlbG93Ont2YWxUeXBlOiJz dHJpbmciLGVkaXRUeXBlOiJwbG90In0sdGV4dDpuLnRleHQsaG92ZXJ0ZXh0Om4uaG92ZXJ0 ZXh0LG1hcmtlcjp7bGluZTp7Y29sb3I6cyh7fSxuLm1hcmtlci5saW5lLmNvbG9yLHtlZGl0 VHlwZToicGxvdCJ9KSx3aWR0aDpzKHt9LG4ubWFya2VyLmxpbmUud2lkdGgse2VkaXRUeXBl OiJwbG90In0pLGVkaXRUeXBlOiJjYWxjIn0sb3BhY2l0eTpzKHt9LG4ubWFya2VyLm9wYWNp dHkse2VkaXRUeXBlOiJwbG90In0pLGVkaXRUeXBlOiJjYWxjIn0sc2VsZWN0ZWQ6e21hcmtl cjp7b3BhY2l0eTpzKHt9LG4uc2VsZWN0ZWQubWFya2VyLm9wYWNpdHkse2VkaXRUeXBlOiJw bG90In0pLGVkaXRUeXBlOiJwbG90In0sZWRpdFR5cGU6InBsb3QifSx1bnNlbGVjdGVkOntt YXJrZXI6e29wYWNpdHk6cyh7fSxuLnVuc2VsZWN0ZWQubWFya2VyLm9wYWNpdHkse2VkaXRU eXBlOiJwbG90In0pLGVkaXRUeXBlOiJwbG90In0sZWRpdFR5cGU6InBsb3QifSxob3Zlcmlu Zm86bi5ob3ZlcmluZm8saG92ZXJ0ZW1wbGF0ZTphKHt9LHtrZXlzOlsicHJvcGVydGllcyJd fSksc2hvd2xlZ2VuZDpzKHt9LG8uc2hvd2xlZ2VuZCx7ZGZsdDohMX0pfSxpKCIiLHtjTGV0 dGVyOiJ6IixlZGl0VHlwZU92ZXJyaWRlOiJjYWxjIn0pKX0seyIuLi8uLi9jb21wb25lbnRz L2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6MzczLCIuLi8uLi9saWIvZXh0ZW5kIjo0OTMsIi4u Ly4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjU1MCwiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmli dXRlcyI6NjMzLCIuLi9jaG9yb3BsZXRoL2F0dHJpYnV0ZXMiOjcxNn1dLDcyNjpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGk9dCgi Li4vLi4vbGliIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiKSxvPXQoIi4u Ly4uL2NvbXBvbmVudHMvZHJhd2luZyIpLHM9dCgiLi4vLi4vbGliL2dlb2pzb25fdXRpbHMi KS5tYWtlQmxhbmssbD10KCIuLi8uLi9saWIvZ2VvX2xvY2F0aW9uX3V0aWxzIik7ZnVuY3Rp b24gYyh0KXt2YXIgZSxyPXRbMF0udHJhY2Usbj1yLl9vcHRzO2lmKHIuc2VsZWN0ZWRwb2lu dHMpe2Zvcih2YXIgYT1vLm1ha2VTZWxlY3RlZFBvaW50U3R5bGVGbnMocikscz0wO3M8dC5s ZW5ndGg7cysrKXt2YXIgbD10W3NdO2wuZk91dCYmKGwuZk91dC5wcm9wZXJ0aWVzLm1vMj1h LnNlbGVjdGVkT3BhY2l0eUZuKGwpKX1lPXt0eXBlOiJpZGVudGl0eSIscHJvcGVydHk6Im1v MiJ9fWVsc2UgZT1pLmlzQXJyYXlPclR5cGVkQXJyYXkoci5tYXJrZXIub3BhY2l0eSk/e3R5 cGU6ImlkZW50aXR5Iixwcm9wZXJ0eToibW8ifTpyLm1hcmtlci5vcGFjaXR5O3JldHVybiBp LmV4dGVuZEZsYXQobi5maWxsLnBhaW50LHsiZmlsbC1vcGFjaXR5IjplfSksaS5leHRlbmRG bGF0KG4ubGluZS5wYWludCx7ImxpbmUtb3BhY2l0eSI6ZX0pLG59ZS5leHBvcnRzPXtjb252 ZXJ0OmZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0udHJhY2Uscj0hMD09PWUudmlzaWJsZSYmMCE9 PWUuX2xlbmd0aCxvPXtsYXlvdXQ6e3Zpc2liaWxpdHk6Im5vbmUifSxwYWludDp7fX0sdT17 bGF5b3V0Ont2aXNpYmlsaXR5OiJub25lIn0scGFpbnQ6e319LGY9ZS5fb3B0cz17ZmlsbDpv LGxpbmU6dSxnZW9qc29uOnMoKX07aWYoIXIpcmV0dXJuIGY7dmFyIGg9bC5leHRyYWN0VHJh Y2VGZWF0dXJlKHQpO2lmKCFoKXJldHVybiBmO3ZhciBwLGQsbSxnPWEubWFrZUNvbG9yU2Nh bGVGdW5jRnJvbVRyYWNlKGUpLHY9ZS5tYXJrZXIseT12LmxpbmV8fHt9O2kuaXNBcnJheU9y VHlwZWRBcnJheSh2Lm9wYWNpdHkpJiYocD1mdW5jdGlvbih0KXt2YXIgZT10Lm1vO3JldHVy biBuKGUpPytpLmNvbnN0cmFpbihlLDAsMSk6MH0pLGkuaXNBcnJheU9yVHlwZWRBcnJheSh5 LmNvbG9yKSYmKGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQubWxjfSksaS5pc0FycmF5T3JUeXBl ZEFycmF5KHkud2lkdGgpJiYobT1mdW5jdGlvbih0KXtyZXR1cm4gdC5tbHd9KTtmb3IodmFy IHg9MDt4PHQubGVuZ3RoO3grKyl7dmFyIGI9dFt4XSxfPWIuZk91dDtpZihfKXt2YXIgdz1f LnByb3BlcnRpZXM7dy5mYz1nKGIueikscCYmKHcubW89cChiKSksZCYmKHcubWxjPWQoYikp LG0mJih3Lm1sdz1tKGIpKSxiLmN0PXcuY3QsYi5fcG9seWdvbnM9bC5mZWF0dXJlMnBvbHln b25zKF8pfX12YXIgVD1wP3t0eXBlOiJpZGVudGl0eSIscHJvcGVydHk6Im1vIn06di5vcGFj aXR5O3JldHVybiBpLmV4dGVuZEZsYXQoby5wYWludCx7ImZpbGwtY29sb3IiOnt0eXBlOiJp ZGVudGl0eSIscHJvcGVydHk6ImZjIn0sImZpbGwtb3BhY2l0eSI6VH0pLGkuZXh0ZW5kRmxh dCh1LnBhaW50LHsibGluZS1jb2xvciI6ZD97dHlwZToiaWRlbnRpdHkiLHByb3BlcnR5OiJt bGMifTp5LmNvbG9yLCJsaW5lLXdpZHRoIjptP3t0eXBlOiJpZGVudGl0eSIscHJvcGVydHk6 Im1sdyJ9Onkud2lkdGgsImxpbmUtb3BhY2l0eSI6VH0pLG8ubGF5b3V0LnZpc2liaWxpdHk9 InZpc2libGUiLHUubGF5b3V0LnZpc2liaWxpdHk9InZpc2libGUiLGYuZ2VvanNvbj17dHlw ZToiRmVhdHVyZUNvbGxlY3Rpb24iLGZlYXR1cmVzOmh9LGModCksZn0sY29udmVydE9uU2Vs ZWN0OmN9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSI6Mzc4LCIuLi8uLi9jb21w b25lbnRzL2RyYXdpbmciOjM4OCwiLi4vLi4vbGliIjo1MDMsIi4uLy4uL2xpYi9nZW9fbG9j YXRpb25fdXRpbHMiOjQ5NiwiLi4vLi4vbGliL2dlb2pzb25fdXRpbHMiOjQ5NywiZmFzdC1p c251bWVyaWMiOjE5MH1dLDcyNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZh dWx0cyIpLGE9dCgiLi9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG8p e2Z1bmN0aW9uIHMocixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLGEscixpKX12YXIgbD1zKCJs b2NhdGlvbnMiKSxjPXMoInoiKSx1PXMoImdlb2pzb24iKTtuLmlzQXJyYXlPclR5cGVkQXJy YXkobCkmJmwubGVuZ3RoJiZuLmlzQXJyYXlPclR5cGVkQXJyYXkoYykmJmMubGVuZ3RoJiYo InN0cmluZyI9PXR5cGVvZiB1JiYiIiE9PXV8fG4uaXNQbGFpbk9iamVjdCh1KSk/KHMoImZl YXR1cmVpZGtleSIpLGUuX2xlbmd0aD1NYXRoLm1pbihsLmxlbmd0aCxjLmxlbmd0aCkscygi YmVsb3ciKSxzKCJ0ZXh0IikscygiaG92ZXJ0ZXh0IikscygiaG92ZXJ0ZW1wbGF0ZSIpLHMo Im1hcmtlci5saW5lLndpZHRoIikmJnMoIm1hcmtlci5saW5lLmNvbG9yIikscygibWFya2Vy Lm9wYWNpdHkiKSxpKHQsZSxvLHMse3ByZWZpeDoiIixjTGV0dGVyOiJ6In0pLG4uY29lcmNl U2VsZWN0aW9uTWFya2VyT3BhY2l0eShlLHMpKTplLnZpc2libGU9ITF9fSx7Ii4uLy4uL2Nv bXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyI6Mzc2LCIuLi8uLi9saWIiOjUwMywiLi9h dHRyaWJ1dGVzIjo3MjV9XSw3Mjg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5l eHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQo Ii4vZGVmYXVsdHMiKSxjb2xvcmJhcjp0KCIuLi9oZWF0bWFwL2NvbG9yYmFyIiksY2FsYzp0 KCIuLi9jaG9yb3BsZXRoL2NhbGMiKSxwbG90OnQoIi4vcGxvdCIpLGhvdmVyUG9pbnRzOnQo Ii4uL2Nob3JvcGxldGgvaG92ZXIiKSxldmVudERhdGE6dCgiLi4vY2hvcm9wbGV0aC9ldmVu dF9kYXRhIiksc2VsZWN0UG9pbnRzOnQoIi4uL2Nob3JvcGxldGgvc2VsZWN0Iiksc3R5bGVP blNlbGVjdDpmdW5jdGlvbih0LGUpe2UmJmVbMF0udHJhY2UuX2dsVHJhY2UudXBkYXRlT25T ZWxlY3QoZSl9LGdldEJlbG93OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPWUuZ2V0TWFwTGF5 ZXJzKCksbj1yLmxlbmd0aC0yO24+PTA7bi0tKXt2YXIgaT1yW25dLmlkO2lmKCJzdHJpbmci PT10eXBlb2YgaSYmMD09PWkuaW5kZXhPZigid2F0ZXIiKSlmb3IodmFyIGE9bisxO2E8ci5s ZW5ndGg7YSsrKWlmKCJzdHJpbmciPT10eXBlb2YoaT1yW2FdLmlkKSYmLTE9PT1pLmluZGV4 T2YoInBsb3RseS0iKSlyZXR1cm4gaX19LG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJjaG9y b3BsZXRobWFwYm94IixiYXNlUGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9tYXBib3giKSxj YXRlZ29yaWVzOlsibWFwYm94IiwiZ2wiLCJub09wYWNpdHkiLCJzaG93TGVnZW5kIl0sbWV0 YTp7aHJfbmFtZToiY2hvcm9wbGV0aF9tYXBib3gifX19LHsiLi4vLi4vcGxvdHMvbWFwYm94 Ijo2MTMsIi4uL2Nob3JvcGxldGgvY2FsYyI6NzE3LCIuLi9jaG9yb3BsZXRoL2V2ZW50X2Rh dGEiOjcxOSwiLi4vY2hvcm9wbGV0aC9ob3ZlciI6NzIwLCIuLi9jaG9yb3BsZXRoL3NlbGVj dCI6NzIzLCIuLi9oZWF0bWFwL2NvbG9yYmFyIjo3OTUsIi4vYXR0cmlidXRlcyI6NzI1LCIu L2RlZmF1bHRzIjo3MjcsIi4vcGxvdCI6NzI5fV0sNzI5OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoIi4vY29udmVydCIpLmNvbnZlcnQsaT10KCIuL2NvbnZlcnQi KS5jb252ZXJ0T25TZWxlY3QsYT10KCIuLi8uLi9wbG90cy9tYXBib3gvY29uc3RhbnRzIiku dHJhY2VMYXllclByZWZpeDtmdW5jdGlvbiBvKHQsZSl7dGhpcy50eXBlPSJjaG9yb3BsZXRo bWFwYm94Iix0aGlzLnN1YnBsb3Q9dCx0aGlzLnVpZD1lLHRoaXMuc291cmNlSWQ9InNvdXJj ZS0iK2UsdGhpcy5sYXllckxpc3Q9W1siZmlsbCIsYStlKyItZmlsbCJdLFsibGluZSIsYStl KyItbGluZSJdXSx0aGlzLmJlbG93PW51bGx9dmFyIHM9by5wcm90b3R5cGU7cy51cGRhdGU9 ZnVuY3Rpb24odCl7dGhpcy5fdXBkYXRlKG4odCkpfSxzLnVwZGF0ZU9uU2VsZWN0PWZ1bmN0 aW9uKHQpe3RoaXMuX3VwZGF0ZShpKHQpKX0scy5fdXBkYXRlPWZ1bmN0aW9uKHQpe3ZhciBl PXRoaXMuc3VicGxvdCxyPXRoaXMubGF5ZXJMaXN0LG49ZS5iZWxvd0xvb2t1cFsidHJhY2Ut Iit0aGlzLnVpZF07ZS5tYXAuZ2V0U291cmNlKHRoaXMuc291cmNlSWQpLnNldERhdGEodC5n ZW9qc29uKSxuIT09dGhpcy5iZWxvdyYmKHRoaXMuX3JlbW92ZUxheWVycygpLHRoaXMuX2Fk ZExheWVycyh0LG4pLHRoaXMuYmVsb3c9bik7Zm9yKHZhciBpPTA7aTxyLmxlbmd0aDtpKysp e3ZhciBhPXJbaV0sbz1hWzBdLHM9YVsxXSxsPXRbb107ZS5zZXRPcHRpb25zKHMsInNldExh eW91dFByb3BlcnR5IixsLmxheW91dCksInZpc2libGUiPT09bC5sYXlvdXQudmlzaWJpbGl0 eSYmZS5zZXRPcHRpb25zKHMsInNldFBhaW50UHJvcGVydHkiLGwucGFpbnQpfX0scy5fYWRk TGF5ZXJzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXRoaXMuc3VicGxvdCxuPXRoaXMubGF5 ZXJMaXN0LGk9dGhpcy5zb3VyY2VJZCxhPTA7YTxuLmxlbmd0aDthKyspe3ZhciBvPW5bYV0s cz1vWzBdLGw9dFtzXTtyLmFkZExheWVyKHt0eXBlOnMsaWQ6b1sxXSxzb3VyY2U6aSxsYXlv dXQ6bC5sYXlvdXQscGFpbnQ6bC5wYWludH0sZSl9fSxzLl9yZW1vdmVMYXllcnM9ZnVuY3Rp b24oKXtmb3IodmFyIHQ9dGhpcy5zdWJwbG90Lm1hcCxlPXRoaXMubGF5ZXJMaXN0LHI9ZS5s ZW5ndGgtMTtyPj0wO3ItLSl0LnJlbW92ZUxheWVyKGVbcl1bMV0pfSxzLmRpc3Bvc2U9ZnVu Y3Rpb24oKXt2YXIgdD10aGlzLnN1YnBsb3QubWFwO3RoaXMuX3JlbW92ZUxheWVycygpLHQu cmVtb3ZlU291cmNlKHRoaXMuc291cmNlSWQpfSxlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2 YXIgcj1lWzBdLnRyYWNlLGk9bmV3IG8odCxyLnVpZCksYT1pLnNvdXJjZUlkLHM9bihlKSxs PWkuYmVsb3c9dC5iZWxvd0xvb2t1cFsidHJhY2UtIityLnVpZF07cmV0dXJuIHQubWFwLmFk ZFNvdXJjZShhLHt0eXBlOiJnZW9qc29uIixkYXRhOnMuZ2VvanNvbn0pLGkuX2FkZExheWVy cyhzLGwpLGVbMF0udHJhY2UuX2dsVHJhY2U9aSxpfX0seyIuLi8uLi9wbG90cy9tYXBib3gv Y29uc3RhbnRzIjo2MTEsIi4vY29udmVydCI6NzI2fV0sNzMwOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRy aWJ1dGVzIiksaT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19mb3JtYXRfYXR0cmli dXRlcyIpLmF4aXNIb3ZlckZvcm1hdCxhPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJp YnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsbz10KCIuLi9tZXNoM2QvYXR0cmlidXRlcyIp LHM9dCgiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyIpLGw9dCgiLi4vLi4vbGliL2V4dGVuZCIp LmV4dGVuZEZsYXQsYz17eDp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMr Y2xlYXJBeGlzVHlwZXMifSx5Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2Fs YytjbGVhckF4aXNUeXBlcyJ9LHo6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJj YWxjK2NsZWFyQXhpc1R5cGVzIn0sdTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6 ImNhbGMifSx2Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHc6e3Zh bFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sc2l6ZW1vZGU6e3ZhbFR5cGU6 ImVudW1lcmF0ZWQiLHZhbHVlczpbInNjYWxlZCIsImFic29sdXRlIl0sZWRpdFR5cGU6ImNh bGMiLGRmbHQ6InNjYWxlZCJ9LHNpemVyZWY6e3ZhbFR5cGU6Im51bWJlciIsZWRpdFR5cGU6 ImNhbGMiLG1pbjowfSxhbmNob3I6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLGVkaXRUeXBlOiJj YWxjIix2YWx1ZXM6WyJ0aXAiLCJ0YWlsIiwiY20iLCJjZW50ZXIiXSxkZmx0OiJjbSJ9LHRl eHQ6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIixhcnJheU9rOiEwLGVkaXRUeXBlOiJjYWxj In0saG92ZXJ0ZXh0Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsYXJyYXlPazohMCxlZGl0 VHlwZToiY2FsYyJ9LGhvdmVydGVtcGxhdGU6YSh7ZWRpdFR5cGU6ImNhbGMifSx7a2V5czpb Im5vcm0iXX0pLHVob3ZlcmZvcm1hdDppKCJ1IiwxKSx2aG92ZXJmb3JtYXQ6aSgidiIsMSks d2hvdmVyZm9ybWF0OmkoInciLDEpLHhob3ZlcmZvcm1hdDppKCJ4IikseWhvdmVyZm9ybWF0 OmkoInkiKSx6aG92ZXJmb3JtYXQ6aSgieiIpLHNob3dsZWdlbmQ6bCh7fSxzLnNob3dsZWdl bmQse2RmbHQ6ITF9KX07bChjLG4oIiIse2NvbG9yQXR0cjoidS92L3cgbm9ybSIsc2hvd1Nj YWxlRGZsdDohMCxlZGl0VHlwZU92ZXJyaWRlOiJjYWxjIn0pKTtbIm9wYWNpdHkiLCJsaWdo dHBvc2l0aW9uIiwibGlnaHRpbmciXS5mb3JFYWNoKChmdW5jdGlvbih0KXtjW3RdPW9bdF19 KSksYy5ob3ZlcmluZm89bCh7fSxzLmhvdmVyaW5mbyx7ZWRpdFR5cGU6ImNhbGMiLGZsYWdz OlsieCIsInkiLCJ6IiwidSIsInYiLCJ3Iiwibm9ybSIsInRleHQiLCJuYW1lIl0sZGZsdDoi eCt5K3orbm9ybSt0ZXh0K25hbWUifSksYy50cmFuc2Zvcm1zPXZvaWQgMCxlLmV4cG9ydHM9 Y30seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6MzczLCIuLi8u Li9saWIvZXh0ZW5kIjo0OTMsIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjU1MCwiLi4vLi4v cGxvdHMvY2FydGVzaWFuL2F4aXNfZm9ybWF0X2F0dHJpYnV0ZXMiOjU1NywiLi4vLi4vcGxv dHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6NjMzLCIuLi9tZXNoM2QvYXR0cmlidXRlcyI6ODY3 fV0sNzMxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2Nv bXBvbmVudHMvY29sb3JzY2FsZS9jYWxjIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9y KHZhciByPWUudSxpPWUudixhPWUudyxvPU1hdGgubWluKGUueC5sZW5ndGgsZS55Lmxlbmd0 aCxlLnoubGVuZ3RoLHIubGVuZ3RoLGkubGVuZ3RoLGEubGVuZ3RoKSxzPS0xLzAsbD0xLzAs Yz0wO2M8bztjKyspe3ZhciB1PXJbY10sZj1pW2NdLGg9YVtjXSxwPU1hdGguc3FydCh1KnUr ZipmK2gqaCk7cz1NYXRoLm1heChzLHApLGw9TWF0aC5taW4obCxwKX1lLl9sZW49byxlLl9u b3JtTWF4PXMsbih0LGUse3ZhbHM6W2wsc10sY29udGFpbmVyU3RyOiIiLGNMZXR0ZXI6ImMi fSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9jYWxjIjozNzR9XSw3MzI6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vLi4vc3RhY2tnbF9t b2R1bGVzIikuZ2xfY29uZTNkLGk9dCgiLi4vLi4vLi4vc3RhY2tnbF9tb2R1bGVzIikuZ2xf Y29uZTNkLmNyZWF0ZUNvbmVNZXNoLGE9dCgiLi4vLi4vbGliIikuc2ltcGxlTWFwLG89dCgi Li4vLi4vbGliL2dsX2Zvcm1hdF9jb2xvciIpLnBhcnNlQ29sb3JTY2FsZSxzPXQoIi4uLy4u L2NvbXBvbmVudHMvY29sb3JzY2FsZSIpLmV4dHJhY3RPcHRzLGw9dCgiLi4vLi4vcGxvdHMv Z2wzZC96aXAzIik7ZnVuY3Rpb24gYyh0LGUpe3RoaXMuc2NlbmU9dCx0aGlzLnVpZD1lLHRo aXMubWVzaD1udWxsLHRoaXMuZGF0YT1udWxsfXZhciB1PWMucHJvdG90eXBlO3UuaGFuZGxl UGljaz1mdW5jdGlvbih0KXtpZih0Lm9iamVjdD09PXRoaXMubWVzaCl7dmFyIGU9dC5pbmRl eD10LmRhdGEuaW5kZXgscj10aGlzLmRhdGEueFtlXSxuPXRoaXMuZGF0YS55W2VdLGk9dGhp cy5kYXRhLnpbZV0sYT10aGlzLmRhdGEudVtlXSxvPXRoaXMuZGF0YS52W2VdLHM9dGhpcy5k YXRhLndbZV07dC50cmFjZUNvb3JkaW5hdGU9W3IsbixpLGEsbyxzLE1hdGguc3FydChhKmEr bypvK3MqcyldO3ZhciBsPXRoaXMuZGF0YS5ob3ZlcnRleHR8fHRoaXMuZGF0YS50ZXh0O3Jl dHVybiBBcnJheS5pc0FycmF5KGwpJiZ2b2lkIDAhPT1sW2VdP3QudGV4dExhYmVsPWxbZV06 bCYmKHQudGV4dExhYmVsPWwpLCEwfX07dmFyIGY9e3hheGlzOjAseWF4aXM6MSx6YXhpczoy fSxoPXt0aXA6MSx0YWlsOjAsY206LjI1LGNlbnRlcjouNX0scD17dGlwOjEsdGFpbDoxLGNt Oi43NSxjZW50ZXI6LjV9O2Z1bmN0aW9uIGQodCxlKXt2YXIgcj10LmZ1bGxTY2VuZUxheW91 dCxpPXQuZGF0YVNjYWxlLGM9e307ZnVuY3Rpb24gdSh0LGUpe3ZhciBuPXJbZV0sbz1pW2Zb ZV1dO3JldHVybiBhKHQsKGZ1bmN0aW9uKHQpe3JldHVybiBuLmQybCh0KSpvfSkpfWMudmVj dG9ycz1sKHUoZS51LCJ4YXhpcyIpLHUoZS52LCJ5YXhpcyIpLHUoZS53LCJ6YXhpcyIpLGUu X2xlbiksYy5wb3NpdGlvbnM9bCh1KGUueCwieGF4aXMiKSx1KGUueSwieWF4aXMiKSx1KGUu eiwiemF4aXMiKSxlLl9sZW4pO3ZhciBkPXMoZSk7Yy5jb2xvcm1hcD1vKGUpLGMudmVydGV4 SW50ZW5zaXR5Qm91bmRzPVtkLm1pbi9lLl9ub3JtTWF4LGQubWF4L2UuX25vcm1NYXhdLGMu Y29uZU9mZnNldD1oW2UuYW5jaG9yXSwic2NhbGVkIj09PWUuc2l6ZW1vZGU/Yy5jb25lU2l6 ZT1lLnNpemVyZWZ8fC41OmMuY29uZVNpemU9ZS5zaXplcmVmJiZlLl9ub3JtTWF4P2Uuc2l6 ZXJlZi9lLl9ub3JtTWF4Oi41O3ZhciBtPW4oYyksZz1lLmxpZ2h0cG9zaXRpb247cmV0dXJu IG0ubGlnaHRQb3NpdGlvbj1bZy54LGcueSxnLnpdLG0uYW1iaWVudD1lLmxpZ2h0aW5nLmFt YmllbnQsbS5kaWZmdXNlPWUubGlnaHRpbmcuZGlmZnVzZSxtLnNwZWN1bGFyPWUubGlnaHRp bmcuc3BlY3VsYXIsbS5yb3VnaG5lc3M9ZS5saWdodGluZy5yb3VnaG5lc3MsbS5mcmVzbmVs PWUubGlnaHRpbmcuZnJlc25lbCxtLm9wYWNpdHk9ZS5vcGFjaXR5LGUuX3BhZD1wW2UuYW5j aG9yXSptLnZlY3RvclNjYWxlKm0uY29uZVNjYWxlKmUuX25vcm1NYXgsbX11LnVwZGF0ZT1m dW5jdGlvbih0KXt0aGlzLmRhdGE9dDt2YXIgZT1kKHRoaXMuc2NlbmUsdCk7dGhpcy5tZXNo LnVwZGF0ZShlKX0sdS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5zY2VuZS5nbHBsb3QucmVt b3ZlKHRoaXMubWVzaCksdGhpcy5tZXNoLmRpc3Bvc2UoKX0sZS5leHBvcnRzPWZ1bmN0aW9u KHQsZSl7dmFyIHI9dC5nbHBsb3QuZ2wsbj1kKHQsZSksYT1pKHIsbiksbz1uZXcgYyh0LGUu dWlkKTtyZXR1cm4gby5tZXNoPWEsby5kYXRhPWUsYS5fdHJhY2U9byx0LmdscGxvdC5hZGQo YSksb319LHsiLi4vLi4vLi4vc3RhY2tnbF9tb2R1bGVzIjoxMTI0LCIuLi8uLi9jb21wb25l bnRzL2NvbG9yc2NhbGUiOjM3OCwiLi4vLi4vbGliIjo1MDMsIi4uLy4uL2xpYi9nbF9mb3Jt YXRfY29sb3IiOjQ5OSwiLi4vLi4vcGxvdHMvZ2wzZC96aXAzIjo2MDl9XSw3MzM6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuLi8u Li9jb21wb25lbnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMiKSxhPXQoIi4vYXR0cmlidXRlcyIp O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixvKXtmdW5jdGlvbiBzKHIsaSl7cmV0dXJuIG4u Y29lcmNlKHQsZSxhLHIsaSl9dmFyIGw9cygidSIpLGM9cygidiIpLHU9cygidyIpLGY9cygi eCIpLGg9cygieSIpLHA9cygieiIpO2wmJmwubGVuZ3RoJiZjJiZjLmxlbmd0aCYmdSYmdS5s ZW5ndGgmJmYmJmYubGVuZ3RoJiZoJiZoLmxlbmd0aCYmcCYmcC5sZW5ndGg/KHMoInNpemVy ZWYiKSxzKCJzaXplbW9kZSIpLHMoImFuY2hvciIpLHMoImxpZ2h0aW5nLmFtYmllbnQiKSxz KCJsaWdodGluZy5kaWZmdXNlIikscygibGlnaHRpbmcuc3BlY3VsYXIiKSxzKCJsaWdodGlu Zy5yb3VnaG5lc3MiKSxzKCJsaWdodGluZy5mcmVzbmVsIikscygibGlnaHRwb3NpdGlvbi54 IikscygibGlnaHRwb3NpdGlvbi55IikscygibGlnaHRwb3NpdGlvbi56IiksaSh0LGUsbyxz LHtwcmVmaXg6IiIsY0xldHRlcjoiYyJ9KSxzKCJ0ZXh0IikscygiaG92ZXJ0ZXh0Iikscygi aG92ZXJ0ZW1wbGF0ZSIpLHMoInVob3ZlcmZvcm1hdCIpLHMoInZob3ZlcmZvcm1hdCIpLHMo Indob3ZlcmZvcm1hdCIpLHMoInhob3ZlcmZvcm1hdCIpLHMoInlob3ZlcmZvcm1hdCIpLHMo Inpob3ZlcmZvcm1hdCIpLGUuX2xlbmd0aD1udWxsKTplLnZpc2libGU9ITF9fSx7Ii4uLy4u L2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyI6Mzc2LCIuLi8uLi9saWIiOjUwMywi Li9hdHRyaWJ1dGVzIjo3MzB9XSw3MzQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 ZS5leHBvcnRzPXttb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToiY29uZSIsYmFzZVBsb3RNb2R1 bGU6dCgiLi4vLi4vcGxvdHMvZ2wzZCIpLGNhdGVnb3JpZXM6WyJnbDNkIiwic2hvd0xlZ2Vu ZCJdLGF0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9k ZWZhdWx0cyIpLGNvbG9yYmFyOnttaW46ImNtaW4iLG1heDoiY21heCJ9LGNhbGM6dCgiLi9j YWxjIikscGxvdDp0KCIuL2NvbnZlcnQiKSxldmVudERhdGE6ZnVuY3Rpb24odCxlKXtyZXR1 cm4gdC5ub3JtPWUudHJhY2VDb29yZGluYXRlWzZdLHR9LG1ldGE6e319fSx7Ii4uLy4uL3Bs b3RzL2dsM2QiOjU5OCwiLi9hdHRyaWJ1dGVzIjo3MzAsIi4vY2FsYyI6NzMxLCIuL2NvbnZl cnQiOjczMiwiLi9kZWZhdWx0cyI6NzMzfV0sNzM1OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4uL2hlYXRtYXAvYXR0cmlidXRlcyIpLGk9dCgiLi4vc2NhdHRl ci9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19mb3JtYXRf YXR0cmlidXRlcyIpLG89YS5heGlzSG92ZXJGb3JtYXQscz1hLmRlc2NyaXB0aW9uT25seU51 bWJlcnMsbD10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLGM9 dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nL2F0dHJpYnV0ZXMiKS5kYXNoLHU9dCgiLi4v Li4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIiksZj10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0 ZW5kRmxhdCxoPXQoIi4uLy4uL2NvbnN0YW50cy9maWx0ZXJfb3BzIikscD1oLkNPTVBBUklT T05fT1BTMixkPWguSU5URVJWQUxfT1BTLG09aS5saW5lO2UuZXhwb3J0cz1mKHt6Om4ueix4 Om4ueCx4MDpuLngwLGR4Om4uZHgseTpuLnkseTA6bi55MCxkeTpuLmR5LHhwZXJpb2Q6bi54 cGVyaW9kLHlwZXJpb2Q6bi55cGVyaW9kLHhwZXJpb2QwOmkueHBlcmlvZDAseXBlcmlvZDA6 aS55cGVyaW9kMCx4cGVyaW9kYWxpZ25tZW50Om4ueHBlcmlvZGFsaWdubWVudCx5cGVyaW9k YWxpZ25tZW50Om4ueXBlcmlvZGFsaWdubWVudCx0ZXh0Om4udGV4dCxob3ZlcnRleHQ6bi5o b3ZlcnRleHQsdHJhbnNwb3NlOm4udHJhbnNwb3NlLHh0eXBlOm4ueHR5cGUseXR5cGU6bi55 dHlwZSx4aG92ZXJmb3JtYXQ6bygieCIpLHlob3ZlcmZvcm1hdDpvKCJ5IiksemhvdmVyZm9y bWF0Om8oInoiLDEpLGhvdmVydGVtcGxhdGU6bi5ob3ZlcnRlbXBsYXRlLHRleHR0ZW1wbGF0 ZTpmKHt9LG4udGV4dHRlbXBsYXRlLHt9KSx0ZXh0Zm9udDpmKHt9LG4udGV4dGZvbnQse30p LGhvdmVyb25nYXBzOm4uaG92ZXJvbmdhcHMsY29ubmVjdGdhcHM6Zih7fSxuLmNvbm5lY3Rn YXBzLHt9KSxmaWxsY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToiY2FsYyJ9LGF1 dG9jb250b3VyOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJjYWxjIixp bXBsaWVkRWRpdHM6eyJjb250b3Vycy5zdGFydCI6dm9pZCAwLCJjb250b3Vycy5lbmQiOnZv aWQgMCwiY29udG91cnMuc2l6ZSI6dm9pZCAwfX0sbmNvbnRvdXJzOnt2YWxUeXBlOiJpbnRl Z2VyIixkZmx0OjE1LG1pbjoxLGVkaXRUeXBlOiJjYWxjIn0sY29udG91cnM6e3R5cGU6e3Zh bFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImxldmVscyIsImNvbnN0cmFpbnQiXSxkZmx0 OiJsZXZlbHMiLGVkaXRUeXBlOiJjYWxjIn0sc3RhcnQ6e3ZhbFR5cGU6Im51bWJlciIsZGZs dDpudWxsLGVkaXRUeXBlOiJwbG90IixpbXBsaWVkRWRpdHM6eyJeYXV0b2NvbnRvdXIiOiEx fX0sZW5kOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6bnVsbCxlZGl0VHlwZToicGxvdCIsaW1w bGllZEVkaXRzOnsiXmF1dG9jb250b3VyIjohMX19LHNpemU6e3ZhbFR5cGU6Im51bWJlciIs ZGZsdDpudWxsLG1pbjowLGVkaXRUeXBlOiJwbG90IixpbXBsaWVkRWRpdHM6eyJeYXV0b2Nv bnRvdXIiOiExfX0sY29sb3Jpbmc6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImZp bGwiLCJoZWF0bWFwIiwibGluZXMiLCJub25lIl0sZGZsdDoiZmlsbCIsZWRpdFR5cGU6ImNh bGMifSxzaG93bGluZXM6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6InBs b3QifSxzaG93bGFiZWxzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExLGVkaXRUeXBlOiJw bG90In0sbGFiZWxmb250OnUoe2VkaXRUeXBlOiJwbG90Iixjb2xvckVkaXRUeXBlOiJzdHls ZSJ9KSxsYWJlbGZvcm1hdDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGVkaXRUeXBlOiJw bG90IixkZXNjcmlwdGlvbjpzKCJjb250b3VyIGxhYmVsIil9LG9wZXJhdGlvbjp7dmFsVHlw ZToiZW51bWVyYXRlZCIsdmFsdWVzOltdLmNvbmNhdChwKS5jb25jYXQoZCksZGZsdDoiPSIs ZWRpdFR5cGU6ImNhbGMifSx2YWx1ZTp7dmFsVHlwZToiYW55IixkZmx0OjAsZWRpdFR5cGU6 ImNhbGMifSxlZGl0VHlwZToiY2FsYyIsaW1wbGllZEVkaXRzOnthdXRvY29udG91cjohMX19 LGxpbmU6e2NvbG9yOmYoe30sbS5jb2xvcix7ZWRpdFR5cGU6InN0eWxlK2NvbG9yYmFycyJ9 KSx3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxlZGl0VHlwZToic3R5bGUrY29sb3Ji YXJzIn0sZGFzaDpjLHNtb290aGluZzpmKHt9LG0uc21vb3RoaW5nLHt9KSxlZGl0VHlwZToi cGxvdCJ9fSxsKCIiLHtjTGV0dGVyOiJ6IixhdXRvQ29sb3JEZmx0OiExLGVkaXRUeXBlT3Zl cnJpZGU6ImNhbGMifSkpfSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1 dGVzIjozNzMsIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZy9hdHRyaWJ1dGVzIjozODcsIi4u Ly4uL2NvbnN0YW50cy9maWx0ZXJfb3BzIjo0NzUsIi4uLy4uL2xpYi9leHRlbmQiOjQ5Mywi Li4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfZm9ybWF0X2F0dHJpYnV0ZXMiOjU1NywiLi4v Li4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIjo1ODUsIi4uL2hlYXRtYXAvYXR0cmlidXRlcyI6 NzkyLCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiOjkyN31dLDczNjpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiKSxp PXQoIi4uL2hlYXRtYXAvY2FsYyIpLGE9dCgiLi9zZXRfY29udG91cnMiKSxvPXQoIi4vZW5k X3BsdXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1pKHQsZSkscz1yWzBdLno7 YShlLHMpO3ZhciBsLGM9ZS5jb250b3Vycyx1PW4uZXh0cmFjdE9wdHMoZSk7aWYoImhlYXRt YXAiPT09Yy5jb2xvcmluZyYmdS5hdXRvJiYhMT09PWUuYXV0b2NvbnRvdXIpe3ZhciBmPWMu c3RhcnQsaD1vKGMpLHA9Yy5zaXplfHwxLGQ9TWF0aC5mbG9vcigoaC1mKS9wKSsxO2lzRmlu aXRlKHApfHwocD0xLGQ9MSk7dmFyIG09Zi1wLzI7bD1bbSxtK2QqcF19ZWxzZSBsPXM7cmV0 dXJuIG4uY2FsYyh0LGUse3ZhbHM6bCxjTGV0dGVyOiJ6In0pLHJ9fSx7Ii4uLy4uL2NvbXBv bmVudHMvY29sb3JzY2FsZSI6Mzc4LCIuLi9oZWF0bWFwL2NhbGMiOjc5MywiLi9lbmRfcGx1 cyI6NzQ2LCIuL3NldF9jb250b3VycyI6NzU0fV0sNzM3OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLG49dFswXSxpPW4uejtz d2l0Y2goZS50eXBlKXtjYXNlImxldmVscyI6dmFyIGE9TWF0aC5taW4oaVswXVswXSxpWzBd WzFdKTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbz10W3JdO28ucHJlZml4Qm91bmRh cnk9IW8uZWRnZXBhdGhzLmxlbmd0aCYmKGE+by5sZXZlbHx8by5zdGFydHMubGVuZ3RoJiZh PT09by5sZXZlbCl9YnJlYWs7Y2FzZSJjb25zdHJhaW50IjppZihuLnByZWZpeEJvdW5kYXJ5 PSExLG4uZWRnZXBhdGhzLmxlbmd0aClyZXR1cm47dmFyIHM9bi54Lmxlbmd0aCxsPW4ueS5s ZW5ndGgsYz0tMS8wLHU9MS8wO2ZvcihyPTA7cjxsO3IrKyl1PU1hdGgubWluKHUsaVtyXVsw XSksdT1NYXRoLm1pbih1LGlbcl1bcy0xXSksYz1NYXRoLm1heChjLGlbcl1bMF0pLGM9TWF0 aC5tYXgoYyxpW3JdW3MtMV0pO2ZvcihyPTE7cjxzLTE7cisrKXU9TWF0aC5taW4odSxpWzBd W3JdKSx1PU1hdGgubWluKHUsaVtsLTFdW3JdKSxjPU1hdGgubWF4KGMsaVswXVtyXSksYz1N YXRoLm1heChjLGlbbC0xXVtyXSk7dmFyIGYsaCxwPWUudmFsdWU7c3dpdGNoKGUuX29wZXJh dGlvbil7Y2FzZSI+IjpwPmMmJihuLnByZWZpeEJvdW5kYXJ5PSEwKTticmVhaztjYXNlIjwi OihwPHV8fG4uc3RhcnRzLmxlbmd0aCYmcD09PXUpJiYobi5wcmVmaXhCb3VuZGFyeT0hMCk7 YnJlYWs7Y2FzZSJbXSI6Zj1NYXRoLm1pbihwWzBdLHBbMV0pLCgoaD1NYXRoLm1heChwWzBd LHBbMV0pKTx1fHxmPmN8fG4uc3RhcnRzLmxlbmd0aCYmaD09PXUpJiYobi5wcmVmaXhCb3Vu ZGFyeT0hMCk7YnJlYWs7Y2FzZSJdWyI6Zj1NYXRoLm1pbihwWzBdLHBbMV0pLGg9TWF0aC5t YXgocFswXSxwWzFdKSxmPHUmJmg+YyYmKG4ucHJlZml4Qm91bmRhcnk9ITApfX19fSx7fV0s NzM4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBv bmVudHMvY29sb3JzY2FsZSIpLGk9dCgiLi9tYWtlX2NvbG9yX21hcCIpLGE9dCgiLi9lbmRf cGx1cyIpO2UuZXhwb3J0cz17bWluOiJ6bWluIixtYXg6InptYXgiLGNhbGM6ZnVuY3Rpb24o dCxlLHIpe3ZhciBvPWUuY29udG91cnMscz1lLmxpbmUsbD1vLnNpemV8fDEsYz1vLmNvbG9y aW5nLHU9aShlLHtpc0NvbG9yYmFyOiEwfSk7aWYoImhlYXRtYXAiPT09Yyl7dmFyIGY9bi5l eHRyYWN0T3B0cyhlKTtyLl9maWxsZ3JhZGllbnQ9Zi5yZXZlcnNlc2NhbGU/bi5mbGlwU2Nh bGUoZi5jb2xvcnNjYWxlKTpmLmNvbG9yc2NhbGUsci5fenJhbmdlPVtmLm1pbixmLm1heF19 ZWxzZSJmaWxsIj09PWMmJihyLl9maWxsY29sb3I9dSk7ci5fbGluZT17Y29sb3I6ImxpbmVz Ij09PWM/dTpzLmNvbG9yLHdpZHRoOiExIT09by5zaG93bGluZXM/cy53aWR0aDowLGRhc2g6 cy5kYXNofSxyLl9sZXZlbHM9e3N0YXJ0Om8uc3RhcnQsZW5kOmEobyksc2l6ZTpsfX19fSx7 Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSI6Mzc4LCIuL2VuZF9wbHVzIjo3NDYsIi4v bWFrZV9jb2xvcl9tYXAiOjc1MX1dLDczOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 IjtlLmV4cG9ydHM9e0JPVFRPTVNUQVJUOlsxLDksMTMsMTA0LDcxM10sVE9QU1RBUlQ6WzQs Niw3LDEwNCw3MTNdLExFRlRTVEFSVDpbOCwxMiwxNCwyMDgsMTExNF0sUklHSFRTVEFSVDpb MiwzLDExLDIwOCwxMTE0XSxORVdERUxUQTpbbnVsbCxbLTEsMF0sWzAsLTFdLFstMSwwXSxb MSwwXSxudWxsLFswLC0xXSxbLTEsMF0sWzAsMV0sWzAsMV0sbnVsbCxbMCwxXSxbMSwwXSxb MSwwXSxbMCwtMV1dLENIT09TRVNBRERMRTp7MTA0Ols0LDFdLDIwODpbMiw4XSw3MTM6Wzcs MTNdLDExMTQ6WzExLDE0XX0sU0FERExFUkVNQUlOREVSOnsxOjQsMjo4LDQ6MSw3OjEzLDg6 MiwxMToxNCwxMzo3LDE0OjExfSxMQUJFTERJU1RBTkNFOjIsTEFCRUxJTkNSRUFTRToxMCxM QUJFTE1JTjozLExBQkVMTUFYOjEwLExBQkVMT1BUSU1JWkVSOntFREdFQ09TVDoxLEFOR0xF Q09TVDoxLE5FSUdIQk9SQ09TVDo1LFNBTUVMRVZFTEZBQ1RPUjoxMCxTQU1FTEVWRUxESVNU QU5DRTo1LE1BWENPU1Q6MTAwLElOSVRJQUxTRUFSQ0hQT0lOVFM6MTAsSVRFUkFUSU9OUzo1 fX19LHt9XSw3NDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFz dC1pc251bWVyaWMiKSxpPXQoIi4vbGFiZWxfZGVmYXVsdHMiKSxhPXQoIi4uLy4uL2NvbXBv bmVudHMvY29sb3IiKSxvPWEuYWRkT3BhY2l0eSxzPWEub3BhY2l0eSxsPXQoIi4uLy4uL2Nv bnN0YW50cy9maWx0ZXJfb3BzIiksYz1sLkNPTlNUUkFJTlRfUkVEVUNUSU9OLHU9bC5DT01Q QVJJU09OX09QUzI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGEsbCxmKXt2YXIgaCxwLGQs bT1lLmNvbnRvdXJzLGc9cigiY29udG91cnMub3BlcmF0aW9uIik7KG0uX29wZXJhdGlvbj1j W2ddLGZ1bmN0aW9uKHQsZSl7dmFyIHI7LTE9PT11LmluZGV4T2YoZS5vcGVyYXRpb24pPyh0 KCJjb250b3Vycy52YWx1ZSIsWzAsMV0pLEFycmF5LmlzQXJyYXkoZS52YWx1ZSk/ZS52YWx1 ZS5sZW5ndGg+Mj9lLnZhbHVlPWUudmFsdWUuc2xpY2UoMik6MD09PWUubGVuZ3RoP2UudmFs dWU9WzAsMV06ZS5sZW5ndGg8Mj8ocj1wYXJzZUZsb2F0KGUudmFsdWVbMF0pLGUudmFsdWU9 W3IscisxXSk6ZS52YWx1ZT1bcGFyc2VGbG9hdChlLnZhbHVlWzBdKSxwYXJzZUZsb2F0KGUu dmFsdWVbMV0pXTpuKGUudmFsdWUpJiYocj1wYXJzZUZsb2F0KGUudmFsdWUpLGUudmFsdWU9 W3IscisxXSkpOih0KCJjb250b3Vycy52YWx1ZSIsMCksbihlLnZhbHVlKXx8KEFycmF5Lmlz QXJyYXkoZS52YWx1ZSk/ZS52YWx1ZT1wYXJzZUZsb2F0KGUudmFsdWVbMF0pOmUudmFsdWU9 MCkpfShyLG0pLCI9Ij09PWc/aD1tLnNob3dsaW5lcz0hMDooaD1yKCJjb250b3Vycy5zaG93 bGluZXMiKSxkPXIoImZpbGxjb2xvciIsbygodC5saW5lfHx7fSkuY29sb3J8fGwsLjUpKSks aCkmJihwPXIoImxpbmUuY29sb3IiLGQmJnMoZCk/byhlLmZpbGxjb2xvciwxKTpsKSxyKCJs aW5lLndpZHRoIiwyKSxyKCJsaW5lLmRhc2giKSk7cigibGluZS5zbW9vdGhpbmciKSxpKHIs YSxwLGYpfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjozNjYsIi4uLy4uL2NvbnN0YW50 cy9maWx0ZXJfb3BzIjo0NzUsIi4vbGFiZWxfZGVmYXVsdHMiOjc1MCwiZmFzdC1pc251bWVy aWMiOjE5MH1dLDc0MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIu Li8uLi9jb25zdGFudHMvZmlsdGVyX29wcyIpLGk9dCgiZmFzdC1pc251bWVyaWMiKTtmdW5j dGlvbiBhKHQsZSl7dmFyIHIsYT1BcnJheS5pc0FycmF5KGUpO2Z1bmN0aW9uIG8odCl7cmV0 dXJuIGkodCk/K3Q6bnVsbH1yZXR1cm4tMSE9PW4uQ09NUEFSSVNPTl9PUFMyLmluZGV4T2Yo dCk/cj1vKGE/ZVswXTplKTotMSE9PW4uSU5URVJWQUxfT1BTLmluZGV4T2YodCk/cj1hP1tv KGVbMF0pLG8oZVsxXSldOltvKGUpLG8oZSldOi0xIT09bi5TRVRfT1BTLmluZGV4T2YodCkm JihyPWE/ZS5tYXAobyk6W28oZSldKSxyfWZ1bmN0aW9uIG8odCl7cmV0dXJuIGZ1bmN0aW9u KGUpe2U9YSh0LGUpO3ZhciByPU1hdGgubWluKGVbMF0sZVsxXSksbj1NYXRoLm1heChlWzBd LGVbMV0pO3JldHVybntzdGFydDpyLGVuZDpuLHNpemU6bi1yfX19ZnVuY3Rpb24gcyh0KXty ZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJue3N0YXJ0OmU9YSh0LGUpLGVuZDoxLzAsc2l6ZTox LzB9fX1lLmV4cG9ydHM9eyJbXSI6bygiW10iKSwiXVsiOm8oIl1bIiksIj4iOnMoIj4iKSwi PCI6cygiPCIpLCI9IjpzKCI9Iil9fSx7Ii4uLy4uL2NvbnN0YW50cy9maWx0ZXJfb3BzIjo0 NzUsImZhc3QtaXNudW1lcmljIjoxOTB9XSw3NDI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPW4oImNvbnRvdXJzLnN0 YXJ0IiksYT1uKCJjb250b3Vycy5lbmQiKSxvPSExPT09aXx8ITE9PT1hLHM9cigiY29udG91 cnMuc2l6ZSIpOyEobz9lLmF1dG9jb250b3VyPSEwOnIoImF1dG9jb250b3VyIiwhMSkpJiZz fHxyKCJuY29udG91cnMiKX19LHt9XSw3NDM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiLi4vLi4vbGliIik7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gbi5leHRlbmRG bGF0KHt9LHQse2VkZ2VwYXRoczpuLmV4dGVuZERlZXAoW10sdC5lZGdlcGF0aHMpLHBhdGhz Om4uZXh0ZW5kRGVlcChbXSx0LnBhdGhzKSxzdGFydHM6bi5leHRlbmREZWVwKFtdLHQuc3Rh cnRzKX0pfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLGEsbyxzPWZ1bmN0aW9uKHQp e3JldHVybiB0LnJldmVyc2UoKX0sbD1mdW5jdGlvbih0KXtyZXR1cm4gdH07c3dpdGNoKGUp e2Nhc2UiPSI6Y2FzZSI8IjpyZXR1cm4gdDtjYXNlIj4iOmZvcigxIT09dC5sZW5ndGgmJm4u d2FybigiQ29udG91ciBkYXRhIGludmFsaWQgZm9yIHRoZSBzcGVjaWZpZWQgaW5lcXVhbGl0 eSBvcGVyYXRpb24uIiksYT10WzBdLHI9MDtyPGEuZWRnZXBhdGhzLmxlbmd0aDtyKyspYS5l ZGdlcGF0aHNbcl09cyhhLmVkZ2VwYXRoc1tyXSk7Zm9yKHI9MDtyPGEucGF0aHMubGVuZ3Ro O3IrKylhLnBhdGhzW3JdPXMoYS5wYXRoc1tyXSk7Zm9yKHI9MDtyPGEuc3RhcnRzLmxlbmd0 aDtyKyspYS5zdGFydHNbcl09cyhhLnN0YXJ0c1tyXSk7cmV0dXJuIHQ7Y2FzZSJdWyI6dmFy IGM9cztzPWwsbD1jO2Nhc2UiW10iOmZvcigyIT09dC5sZW5ndGgmJm4ud2FybigiQ29udG91 ciBkYXRhIGludmFsaWQgZm9yIHRoZSBzcGVjaWZpZWQgaW5lcXVhbGl0eSByYW5nZSBvcGVy YXRpb24uIiksYT1pKHRbMF0pLG89aSh0WzFdKSxyPTA7cjxhLmVkZ2VwYXRocy5sZW5ndGg7 cisrKWEuZWRnZXBhdGhzW3JdPXMoYS5lZGdlcGF0aHNbcl0pO2ZvcihyPTA7cjxhLnBhdGhz Lmxlbmd0aDtyKyspYS5wYXRoc1tyXT1zKGEucGF0aHNbcl0pO2ZvcihyPTA7cjxhLnN0YXJ0 cy5sZW5ndGg7cisrKWEuc3RhcnRzW3JdPXMoYS5zdGFydHNbcl0pO2Zvcig7by5lZGdlcGF0 aHMubGVuZ3RoOylhLmVkZ2VwYXRocy5wdXNoKGwoby5lZGdlcGF0aHMuc2hpZnQoKSkpO2Zv cig7by5wYXRocy5sZW5ndGg7KWEucGF0aHMucHVzaChsKG8ucGF0aHMuc2hpZnQoKSkpO2Zv cig7by5zdGFydHMubGVuZ3RoOylhLnN0YXJ0cy5wdXNoKGwoby5zdGFydHMuc2hpZnQoKSkp O3JldHVyblthXX19fSx7Ii4uLy4uL2xpYiI6NTAzfV0sNzQ0OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vaGVhdG1hcC94eXpf ZGVmYXVsdHMiKSxhPXQoIi4uL3NjYXR0ZXIvcGVyaW9kX2RlZmF1bHRzIiksbz10KCIuL2Nv bnN0cmFpbnRfZGVmYXVsdHMiKSxzPXQoIi4vY29udG91cnNfZGVmYXVsdHMiKSxsPXQoIi4v c3R5bGVfZGVmYXVsdHMiKSxjPXQoIi4uL2hlYXRtYXAvbGFiZWxfZGVmYXVsdHMiKSx1PXQo Ii4vYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixmKXtmdW5jdGlvbiBo KHIsaSl7cmV0dXJuIG4uY29lcmNlKHQsZSx1LHIsaSl9aWYoaSh0LGUsaCxmKSl7YSh0LGUs ZixoKSxoKCJ4aG92ZXJmb3JtYXQiKSxoKCJ5aG92ZXJmb3JtYXQiKSxoKCJ0ZXh0IiksaCgi aG92ZXJ0ZXh0IiksaCgiaG92ZXJvbmdhcHMiKSxoKCJob3ZlcnRlbXBsYXRlIik7dmFyIHA9 ImNvbnN0cmFpbnQiPT09aCgiY29udG91cnMudHlwZSIpO2goImNvbm5lY3RnYXBzIixuLmlz QXJyYXkxRChlLnopKSxwP28odCxlLGgsZixyKToocyh0LGUsaCwoZnVuY3Rpb24ocil7cmV0 dXJuIG4uY29lcmNlMih0LGUsdSxyKX0pKSxsKHQsZSxoLGYpKSxlLmNvbnRvdXJzJiYiaGVh dG1hcCI9PT1lLmNvbnRvdXJzLmNvbG9yaW5nJiZjKGgsZil9ZWxzZSBlLnZpc2libGU9ITF9 fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi9oZWF0bWFwL2xhYmVsX2RlZmF1bHRzIjo4MDIsIi4u L2hlYXRtYXAveHl6X2RlZmF1bHRzIjo4MDcsIi4uL3NjYXR0ZXIvcGVyaW9kX2RlZmF1bHRz Ijo5NDcsIi4vYXR0cmlidXRlcyI6NzM1LCIuL2NvbnN0cmFpbnRfZGVmYXVsdHMiOjc0MCwi Li9jb250b3Vyc19kZWZhdWx0cyI6NzQyLCIuL3N0eWxlX2RlZmF1bHRzIjo3NTZ9XSw3NDU6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10 KCIuL2NvbnN0cmFpbnRfbWFwcGluZyIpLGE9dCgiLi9lbmRfcGx1cyIpO2UuZXhwb3J0cz1m dW5jdGlvbih0LGUscil7Zm9yKHZhciBvPSJjb25zdHJhaW50Ij09PXQudHlwZT9pW3QuX29w ZXJhdGlvbl0odC52YWx1ZSk6dCxzPW8uc2l6ZSxsPVtdLGM9YShvKSx1PXIudHJhY2UuX2Nh cnBldFRyYWNlLGY9dT97eGF4aXM6dS5hYXhpcyx5YXhpczp1LmJheGlzLHg6ci5hLHk6ci5i fTp7eGF4aXM6ZS54YXhpcyx5YXhpczplLnlheGlzLHg6ci54LHk6ci55fSxoPW8uc3RhcnQ7 aDxjO2grPXMpaWYobC5wdXNoKG4uZXh0ZW5kRmxhdCh7bGV2ZWw6aCxjcm9zc2luZ3M6e30s c3RhcnRzOltdLGVkZ2VwYXRoczpbXSxwYXRoczpbXSx6OnIueixzbW9vdGhpbmc6ci50cmFj ZS5saW5lLnNtb290aGluZ30sZikpLGwubGVuZ3RoPjFlMyl7bi53YXJuKCJUb28gbWFueSBj b250b3VycywgY2xpcHBpbmcgYXQgMTAwMCIsdCk7YnJlYWt9cmV0dXJuIGx9fSx7Ii4uLy4u L2xpYiI6NTAzLCIuL2NvbnN0cmFpbnRfbWFwcGluZyI6NzQxLCIuL2VuZF9wbHVzIjo3NDZ9 XSw3NDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9u KHQpe3JldHVybiB0LmVuZCt0LnNpemUvMWU2fX0se31dLDc0NzpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4vY29uc3RhbnRzIik7 ZnVuY3Rpb24gYSh0LGUscixuKXtyZXR1cm4gTWF0aC5hYnModFswXS1lWzBdKTxyJiZNYXRo LmFicyh0WzFdLWVbMV0pPG59ZnVuY3Rpb24gbyh0LGUscixvLGwpe3ZhciBjLHU9ZS5qb2lu KCIsIiksZj10LmNyb3NzaW5nc1t1XSxoPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj0wLGE9MDt0 PjIwJiZlPzIwOD09PXR8fDExMTQ9PT10P249MD09PXJbMF0/MTotMTphPTA9PT1yWzFdPzE6 LTE6LTEhPT1pLkJPVFRPTVNUQVJULmluZGV4T2YodCk/YT0xOi0xIT09aS5MRUZUU1RBUlQu aW5kZXhPZih0KT9uPTE6LTEhPT1pLlRPUFNUQVJULmluZGV4T2YodCk/YT0tMTpuPS0xO3Jl dHVybltuLGFdfShmLHIsZSkscD1bcyh0LGUsWy1oWzBdLC1oWzFdXSldLGQ9dC56Lmxlbmd0 aCxtPXQuelswXS5sZW5ndGgsZz1lLnNsaWNlKCksdj1oLnNsaWNlKCk7Zm9yKGM9MDtjPDFl NDtjKyspe2lmKGY+MjA/KGY9aS5DSE9PU0VTQURETEVbZl1bKGhbMF18fGhbMV0pPDA/MDox XSx0LmNyb3NzaW5nc1t1XT1pLlNBRERMRVJFTUFJTkRFUltmXSk6ZGVsZXRlIHQuY3Jvc3Np bmdzW3VdLCEoaD1pLk5FV0RFTFRBW2ZdKSl7bi5sb2coIkZvdW5kIGJhZCBtYXJjaGluZyBp bmRleDoiLGYsZSx0LmxldmVsKTticmVha31wLnB1c2gocyh0LGUsaCkpLGVbMF0rPWhbMF0s ZVsxXSs9aFsxXSx1PWUuam9pbigiLCIpLGEocFtwLmxlbmd0aC0xXSxwW3AubGVuZ3RoLTJd LG8sbCkmJnAucG9wKCk7dmFyIHk9aFswXSYmKGVbMF08MHx8ZVswXT5tLTIpfHxoWzFdJiYo ZVsxXTwwfHxlWzFdPmQtMik7aWYoZVswXT09PWdbMF0mJmVbMV09PT1nWzFdJiZoWzBdPT09 dlswXSYmaFsxXT09PXZbMV18fHImJnkpYnJlYWs7Zj10LmNyb3NzaW5nc1t1XX0xZTQ9PT1j JiZuLmxvZygiSW5maW5pdGUgbG9vcCBpbiBjb250b3VyPyIpO3ZhciB4LGIsXyx3LFQsayxB LE0sUyxFLEwsQyxQLEksTyx6PWEocFswXSxwW3AubGVuZ3RoLTFdLG8sbCksRD0wLFI9LjIq dC5zbW9vdGhpbmcsRj1bXSxCPTA7Zm9yKGM9MTtjPHAubGVuZ3RoO2MrKylDPXBbY10sUD1w W2MtMV0sST12b2lkIDAsTz12b2lkIDAsST1DWzJdLVBbMl0sTz1DWzNdLVBbM10sRCs9QT1N YXRoLnNxcnQoSSpJK08qTyksRi5wdXNoKEEpO3ZhciBOPUQvRi5sZW5ndGgqUjtmdW5jdGlv biBqKHQpe3JldHVybiBwW3QlcC5sZW5ndGhdfWZvcihjPXAubGVuZ3RoLTI7Yz49QjtjLS0p aWYoKHg9RltjXSk8Til7Zm9yKF89MCxiPWMtMTtiPj1CJiZ4K0ZbYl08TjtiLS0peCs9Rlti XTtpZih6JiZjPT09cC5sZW5ndGgtMilmb3IoXz0wO188YiYmeCtGW19dPE47XysrKXgrPUZb X107VD1jLWIrXysxLGs9TWF0aC5mbG9vcigoYytiK18rMikvMiksdz16fHxjIT09cC5sZW5n dGgtMj96fHwtMSE9PWI/VCUyP2ooayk6WyhqKGspWzBdK2ooaysxKVswXSkvMiwoaihrKVsx XStqKGsrMSlbMV0pLzJdOnBbMF06cFtwLmxlbmd0aC0xXSxwLnNwbGljZShiKzEsYy1iKzEs dyksYz1iKzEsXyYmKEI9XykseiYmKGM9PT1wLmxlbmd0aC0yP3BbX109cFtwLmxlbmd0aC0x XTowPT09YyYmKHBbcC5sZW5ndGgtMV09cFswXSkpfWZvcihwLnNwbGljZSgwLEIpLGM9MDtj PHAubGVuZ3RoO2MrKylwW2NdLmxlbmd0aD0yO2lmKCEocC5sZW5ndGg8MikpaWYoeilwLnBv cCgpLHQucGF0aHMucHVzaChwKTtlbHNle3J8fG4ubG9nKCJVbmNsb3NlZCBpbnRlcmlvciBj b250b3VyPyIsdC5sZXZlbCxnLmpvaW4oIiwiKSxwLmpvaW4oIkwiKSk7dmFyIFU9ITE7Zm9y KE09MDtNPHQuZWRnZXBhdGhzLmxlbmd0aDtNKyspaWYoRT10LmVkZ2VwYXRoc1tNXSwhVSYm YShFWzBdLHBbcC5sZW5ndGgtMV0sbyxsKSl7cC5wb3AoKSxVPSEwO3ZhciBWPSExO2ZvcihT PTA7Uzx0LmVkZ2VwYXRocy5sZW5ndGg7UysrKWlmKGEoKEw9dC5lZGdlcGF0aHNbU10pW0wu bGVuZ3RoLTFdLHBbMF0sbyxsKSl7Vj0hMCxwLnNoaWZ0KCksdC5lZGdlcGF0aHMuc3BsaWNl KE0sMSksUz09PU0/dC5wYXRocy5wdXNoKHAuY29uY2F0KEwpKTooUz5NJiZTLS0sdC5lZGdl cGF0aHNbU109TC5jb25jYXQocCxFKSk7YnJlYWt9Vnx8KHQuZWRnZXBhdGhzW01dPXAuY29u Y2F0KEUpKX1mb3IoTT0wO008dC5lZGdlcGF0aHMubGVuZ3RoJiYhVTtNKyspYSgoRT10LmVk Z2VwYXRoc1tNXSlbRS5sZW5ndGgtMV0scFswXSxvLGwpJiYocC5zaGlmdCgpLHQuZWRnZXBh dGhzW01dPUUuY29uY2F0KHApLFU9ITApO1V8fHQuZWRnZXBhdGhzLnB1c2gocCl9fWZ1bmN0 aW9uIHModCxlLHIpe3ZhciBuPWVbMF0rTWF0aC5tYXgoclswXSwwKSxpPWVbMV0rTWF0aC5t YXgoclsxXSwwKSxhPXQueltpXVtuXSxvPXQueGF4aXMscz10LnlheGlzO2lmKHJbMV0pe3Zh ciBsPSh0LmxldmVsLWEpLyh0LnpbaV1bbisxXS1hKSxjPSgxIT09bD8oMS1sKSpvLmMybCh0 Lnhbbl0pOjApKygwIT09bD9sKm8uYzJsKHQueFtuKzFdKTowKTtyZXR1cm5bby5jMnAoby5s MmMoYyksITApLHMuYzJwKHQueVtpXSwhMCksbitsLGldfXZhciB1PSh0LmxldmVsLWEpLyh0 LnpbaSsxXVtuXS1hKSxmPSgxIT09dT8oMS11KSpzLmMybCh0LnlbaV0pOjApKygwIT09dT91 KnMuYzJsKHQueVtpKzFdKTowKTtyZXR1cm5bby5jMnAodC54W25dLCEwKSxzLmMycChzLmwy YyhmKSwhMCksbixpK3VdfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGksYSxzLGw7 Zm9yKGU9ZXx8LjAxLHI9cnx8LjAxLGE9MDthPHQubGVuZ3RoO2ErKyl7Zm9yKHM9dFthXSxs PTA7bDxzLnN0YXJ0cy5sZW5ndGg7bCsrKW8ocyxzLnN0YXJ0c1tsXSwiZWRnZSIsZSxyKTtm b3IoaT0wO09iamVjdC5rZXlzKHMuY3Jvc3NpbmdzKS5sZW5ndGgmJmk8MWU0OylpKyssbyhz LE9iamVjdC5rZXlzKHMuY3Jvc3NpbmdzKVswXS5zcGxpdCgiLCIpLm1hcChOdW1iZXIpLHZv aWQgMCxlLHIpOzFlND09PWkmJm4ubG9nKCJJbmZpbml0ZSBsb29wIGluIGNvbnRvdXI/Iil9 fX0seyIuLi8uLi9saWIiOjUwMywiLi9jb25zdGFudHMiOjczOX1dLDc0ODpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiks aT10KCIuLi9oZWF0bWFwL2hvdmVyIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGEsbyl7 b3x8KG89e30pLG8uaXNDb250b3VyPSEwO3ZhciBzPWkodCxlLHIsYSxvKTtyZXR1cm4gcyYm cy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LnRyYWNlOyJjb25zdHJhaW50Ij09PWUu Y29udG91cnMudHlwZSYmKGUuZmlsbGNvbG9yJiZuLm9wYWNpdHkoZS5maWxsY29sb3IpP3Qu Y29sb3I9bi5hZGRPcGFjaXR5KGUuZmlsbGNvbG9yLDEpOmUuY29udG91cnMuc2hvd2xpbmVz JiZuLm9wYWNpdHkoZS5saW5lLmNvbG9yKSYmKHQuY29sb3I9bi5hZGRPcGFjaXR5KGUubGlu ZS5jb2xvciwxKSkpfSkpLHN9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjM2NiwiLi4v aGVhdG1hcC9ob3ZlciI6Nzk5fV0sNzQ5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O2UuZXhwb3J0cz17YXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0 czp0KCIuL2RlZmF1bHRzIiksY2FsYzp0KCIuL2NhbGMiKSxwbG90OnQoIi4vcGxvdCIpLnBs b3Qsc3R5bGU6dCgiLi9zdHlsZSIpLGNvbG9yYmFyOnQoIi4vY29sb3JiYXIiKSxob3ZlclBv aW50czp0KCIuL2hvdmVyIiksbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6ImNvbnRvdXIiLGJh c2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIpLGNhdGVnb3JpZXM6WyJj YXJ0ZXNpYW4iLCJzdmciLCIyZE1hcCIsImNvbnRvdXIiLCJzaG93TGVnZW5kIl0sbWV0YTp7 fX19LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuIjo1NjgsIi4vYXR0cmlidXRlcyI6NzM1LCIu L2NhbGMiOjczNiwiLi9jb2xvcmJhciI6NzM4LCIuL2RlZmF1bHRzIjo3NDQsIi4vaG92ZXIi Ojc0OCwiLi9wbG90Ijo3NTMsIi4vc3R5bGUiOjc1NX1dLDc1MDpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24o dCxlLHIsaSl7aWYoaXx8KGk9e30pLHQoImNvbnRvdXJzLnNob3dsYWJlbHMiKSl7dmFyIGE9 ZS5mb250O24uY29lcmNlRm9udCh0LCJjb250b3Vycy5sYWJlbGZvbnQiLHtmYW1pbHk6YS5m YW1pbHksc2l6ZTphLnNpemUsY29sb3I6cn0pLHQoImNvbnRvdXJzLmxhYmVsZm9ybWF0Iil9 ITEhPT1pLmhhc0hvdmVyJiZ0KCJ6aG92ZXJmb3JtYXQiKX19LHsiLi4vLi4vbGliIjo1MDN9 XSw3NTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiQHBsb3RseS9k MyIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIiksYT10KCIuL2VuZF9wbHVz Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuY29udG91cnMscj1lLnN0YXJ0LG89 YShlKSxzPWUuc2l6ZXx8MSxsPU1hdGguZmxvb3IoKG8tcikvcykrMSxjPSJsaW5lcyI9PT1l LmNvbG9yaW5nPzA6MSx1PWkuZXh0cmFjdE9wdHModCk7aXNGaW5pdGUocyl8fChzPTEsbD0x KTt2YXIgZixoLHA9dS5yZXZlcnNlc2NhbGU/aS5mbGlwU2NhbGUodS5jb2xvcnNjYWxlKTp1 LmNvbG9yc2NhbGUsZD1wLmxlbmd0aCxtPW5ldyBBcnJheShkKSxnPW5ldyBBcnJheShkKTtp ZigiaGVhdG1hcCI9PT1lLmNvbG9yaW5nKXt2YXIgdj11Lm1pbix5PXUubWF4O2ZvcihoPTA7 aDxkO2grKylmPXBbaF0sbVtoXT1mWzBdKih5LXYpK3YsZ1toXT1mWzFdO3ZhciB4PW4uZXh0 ZW50KFt2LHksZS5zdGFydCxlLnN0YXJ0K3MqKGwtMSldKSxiPXhbdjx5PzA6MV0sXz14W3Y8 eT8xOjBdO2IhPT12JiYobS5zcGxpY2UoMCwwLGIpLGcuc3BsaWNlKDAsMCxnWzBdKSksXyE9 PXkmJihtLnB1c2goXyksZy5wdXNoKGdbZy5sZW5ndGgtMV0pKX1lbHNlIGZvcihoPTA7aDxk O2grKylmPXBbaF0sbVtoXT0oZlswXSoobCtjLTEpLWMvMikqcytyLGdbaF09ZlsxXTtyZXR1 cm4gaS5tYWtlQ29sb3JTY2FsZUZ1bmMoe2RvbWFpbjptLHJhbmdlOmd9LHtub051bWVyaWND aGVjazohMH0pfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiOjM3OCwiLi9lbmRf cGx1cyI6NzQ2LCJAcGxvdGx5L2QzIjo1OH1dLDc1MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCIuL2NvbnN0YW50cyIpO2Z1bmN0aW9uIGkodCxlKXt2YXIgcj0o ZVswXVswXT50PzA6MSkrKGVbMF1bMV0+dD8wOjIpKyhlWzFdWzFdPnQ/MDo0KSsoZVsxXVsw XT50PzA6OCk7cmV0dXJuIDU9PT1yfHwxMD09PXI/dD4oZVswXVswXStlWzBdWzFdK2VbMV1b MF0rZVsxXVsxXSkvND81PT09cj83MTM6MTExNDo1PT09cj8xMDQ6MjA4OjE1PT09cj8wOnJ9 ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlLHIsYSxvLHMsbCxjLHUsZixoPXRbMF0ueixw PWgubGVuZ3RoLGQ9aFswXS5sZW5ndGgsbT0yPT09cHx8Mj09PWQ7Zm9yKHI9MDtyPHAtMTty KyspZm9yKG89W10sMD09PXImJihvPW8uY29uY2F0KG4uQk9UVE9NU1RBUlQpKSxyPT09cC0y JiYobz1vLmNvbmNhdChuLlRPUFNUQVJUKSksZT0wO2U8ZC0xO2UrKylmb3IoYT1vLnNsaWNl KCksMD09PWUmJihhPWEuY29uY2F0KG4uTEVGVFNUQVJUKSksZT09PWQtMiYmKGE9YS5jb25j YXQobi5SSUdIVFNUQVJUKSkscz1lKyIsIityLGw9W1toW3JdW2VdLGhbcl1bZSsxXV0sW2hb cisxXVtlXSxoW3IrMV1bZSsxXV1dLGY9MDtmPHQubGVuZ3RoO2YrKykoYz1pKCh1PXRbZl0p LmxldmVsLGwpKSYmKHUuY3Jvc3NpbmdzW3NdPWMsLTEhPT1hLmluZGV4T2YoYykmJih1LnN0 YXJ0cy5wdXNoKFtlLHJdKSxtJiYtMSE9PWEuaW5kZXhPZihjLGEuaW5kZXhPZihjKSsxKSYm dS5zdGFydHMucHVzaChbZSxyXSkpKX19LHsiLi9jb25zdGFudHMiOjczOX1dLDc1MzpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJAcGxvdGx5L2QzIiksaT10KCIu Li8uLi9saWIiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLG89dCgiLi4vLi4v Y29tcG9uZW50cy9jb2xvcnNjYWxlIikscz10KCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMi KSxsPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksYz10KCIuLi8uLi9wbG90cy9j YXJ0ZXNpYW4vc2V0X2NvbnZlcnQiKSx1PXQoIi4uL2hlYXRtYXAvcGxvdCIpLGY9dCgiLi9t YWtlX2Nyb3NzaW5ncyIpLGg9dCgiLi9maW5kX2FsbF9wYXRocyIpLHA9dCgiLi9lbXB0eV9w YXRoaW5mbyIpLGQ9dCgiLi9jb252ZXJ0X3RvX2NvbnN0cmFpbnRzIiksbT10KCIuL2Nsb3Nl X2JvdW5kYXJpZXMiKSxnPXQoIi4vY29uc3RhbnRzIiksdj1nLkxBQkVMT1BUSU1JWkVSO2Z1 bmN0aW9uIHkodCxlKXt2YXIgcixuLG8scyxsLGMsdSxmPSIiLGg9MCxwPXQuZWRnZXBhdGhz Lm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gZX0pKSxkPSEwO2Z1bmN0aW9uIG0odCl7cmV0 dXJuIE1hdGguYWJzKHRbMV0tZVsyXVsxXSk8LjAxfWZ1bmN0aW9uIGcodCl7cmV0dXJuIE1h dGguYWJzKHRbMF0tZVswXVswXSk8LjAxfWZ1bmN0aW9uIHYodCl7cmV0dXJuIE1hdGguYWJz KHRbMF0tZVsyXVswXSk8LjAxfWZvcig7cC5sZW5ndGg7KXtmb3IoYz1hLnNtb290aG9wZW4o dC5lZGdlcGF0aHNbaF0sdC5zbW9vdGhpbmcpLGYrPWQ/YzpjLnJlcGxhY2UoL15NLywiTCIp LHAuc3BsaWNlKHAuaW5kZXhPZihoKSwxKSxyPXQuZWRnZXBhdGhzW2hdW3QuZWRnZXBhdGhz W2hdLmxlbmd0aC0xXSxzPS0xLG89MDtvPDQ7bysrKXtpZighcil7aS5sb2coIk1pc3Npbmcg ZW5kPyIsaCx0KTticmVha31mb3IodT1yLE1hdGguYWJzKHVbMV0tZVswXVsxXSk8LjAxJiYh dihyKT9uPWVbMV06ZyhyKT9uPWVbMF06bShyKT9uPWVbM106dihyKSYmKG49ZVsyXSksbD0w O2w8dC5lZGdlcGF0aHMubGVuZ3RoO2wrKyl7dmFyIHk9dC5lZGdlcGF0aHNbbF1bMF07TWF0 aC5hYnMoclswXS1uWzBdKTwuMDE/TWF0aC5hYnMoclswXS15WzBdKTwuMDEmJih5WzFdLXJb MV0pKihuWzFdLXlbMV0pPj0wJiYobj15LHM9bCk6TWF0aC5hYnMoclsxXS1uWzFdKTwuMDE/ TWF0aC5hYnMoclsxXS15WzFdKTwuMDEmJih5WzBdLXJbMF0pKihuWzBdLXlbMF0pPj0wJiYo bj15LHM9bCk6aS5sb2coImVuZHB0IHRvIG5ld2VuZHB0IGlzIG5vdCB2ZXJ0LiBvciBob3J6 LiIscixuLHkpfWlmKHI9bixzPj0wKWJyZWFrO2YrPSJMIitufWlmKHM9PT10LmVkZ2VwYXRo cy5sZW5ndGgpe2kubG9nKCJ1bmNsb3NlZCBwZXJpbWV0ZXIgcGF0aCIpO2JyZWFrfWg9cywo ZD0tMT09PXAuaW5kZXhPZihoKSkmJihoPXBbMF0sZis9IloiKX1mb3IoaD0wO2g8dC5wYXRo cy5sZW5ndGg7aCsrKWYrPWEuc21vb3RoY2xvc2VkKHQucGF0aHNbaF0sdC5zbW9vdGhpbmcp O3JldHVybiBmfWZ1bmN0aW9uIHgodCxlLHIsbil7dmFyIGE9ZS53aWR0aC8yLG89ZS5oZWln aHQvMixzPXQueCxsPXQueSxjPXQudGhldGEsdT1NYXRoLmNvcyhjKSphLGY9TWF0aC5zaW4o YykqYSxoPShzPm4uY2VudGVyP24ucmlnaHQtczpzLW4ubGVmdCkvKHUrTWF0aC5hYnMoTWF0 aC5zaW4oYykqbykpLHA9KGw+bi5taWRkbGU/bi5ib3R0b20tbDpsLW4udG9wKS8oTWF0aC5h YnMoZikrTWF0aC5jb3MoYykqbyk7aWYoaDwxfHxwPDEpcmV0dXJuIDEvMDt2YXIgZD12LkVE R0VDT1NUKigxLyhoLTEpKzEvKHAtMSkpO2QrPXYuQU5HTEVDT1NUKmMqYztmb3IodmFyIG09 cy11LGc9bC1mLHk9cyt1LHg9bCtmLGI9MDtiPHIubGVuZ3RoO2IrKyl7dmFyIF89cltiXSx3 PU1hdGguY29zKF8udGhldGEpKl8ud2lkdGgvMixUPU1hdGguc2luKF8udGhldGEpKl8ud2lk dGgvMixrPTIqaS5zZWdtZW50RGlzdGFuY2UobSxnLHkseCxfLngtdyxfLnktVCxfLngrdyxf LnkrVCkvKGUuaGVpZ2h0K18uaGVpZ2h0KSxBPV8ubGV2ZWw9PT1lLmxldmVsLE09QT92LlNB TUVMRVZFTERJU1RBTkNFOjE7aWYoazw9TSlyZXR1cm4gMS8wO2QrPXYuTkVJR0hCT1JDT1NU KihBP3YuU0FNRUxFVkVMRkFDVE9SOjEpLyhrLU0pfXJldHVybiBkfWZ1bmN0aW9uIGIodCl7 dmFyIGUscixuPXQudHJhY2UuX2VtcHR5cG9pbnRzLGk9W10sYT10LnoubGVuZ3RoLG89dC56 WzBdLmxlbmd0aCxzPVtdO2ZvcihlPTA7ZTxvO2UrKylzLnB1c2goMSk7Zm9yKGU9MDtlPGE7 ZSsrKWkucHVzaChzLnNsaWNlKCkpO2ZvcihlPTA7ZTxuLmxlbmd0aDtlKyspaVsocj1uW2Vd KVswXV1bclsxXV09MDtyZXR1cm4gdC56bWFzaz1pLGl9ci5wbG90PWZ1bmN0aW9uKHQsZSxv LHMpe3ZhciBsPWUueGF4aXMsYz1lLnlheGlzO2kubWFrZVRyYWNlR3JvdXBzKHMsbywiY29u dG91ciIpLmVhY2goKGZ1bmN0aW9uKG8pe3ZhciBzPW4uc2VsZWN0KHRoaXMpLHY9b1swXSx4 PXYudHJhY2UsXz12Lngsdz12LnksVD14LmNvbnRvdXJzLGs9cChULGUsdiksQT1pLmVuc3Vy ZVNpbmdsZShzLCJnIiwiaGVhdG1hcGNvbG9yaW5nIiksTT1bXTsiaGVhdG1hcCI9PT1ULmNv bG9yaW5nJiYoTT1bb10pLHUodCxlLE0sQSksZihrKSxoKGspO3ZhciBTPWwuYzJwKF9bMF0s ITApLEU9bC5jMnAoX1tfLmxlbmd0aC0xXSwhMCksTD1jLmMycCh3WzBdLCEwKSxDPWMuYzJw KHdbdy5sZW5ndGgtMV0sITApLFA9W1tTLENdLFtFLENdLFtFLExdLFtTLExdXSxJPWs7ImNv bnN0cmFpbnQiPT09VC50eXBlJiYoST1kKGssVC5fb3BlcmF0aW9uKSksZnVuY3Rpb24odCxl LHIpe3ZhciBuPWkuZW5zdXJlU2luZ2xlKHQsImciLCJjb250b3VyYmciKS5zZWxlY3RBbGwo InBhdGgiKS5kYXRhKCJmaWxsIj09PXIuY29sb3Jpbmc/WzBdOltdKTtuLmVudGVyKCkuYXBw ZW5kKCJwYXRoIiksbi5leGl0KCkucmVtb3ZlKCksbi5hdHRyKCJkIiwiTSIrZS5qb2luKCJM IikrIloiKS5zdHlsZSgic3Ryb2tlIiwibm9uZSIpfShzLFAsVCksZnVuY3Rpb24odCxlLHIs YSl7dmFyIG89ImZpbGwiPT09YS5jb2xvcmluZ3x8ImNvbnN0cmFpbnQiPT09YS50eXBlJiYi PSIhPT1hLl9vcGVyYXRpb24scz0iTSIrci5qb2luKCJMIikrIloiO28mJm0oZSxhKTt2YXIg bD1pLmVuc3VyZVNpbmdsZSh0LCJnIiwiY29udG91cmZpbGwiKS5zZWxlY3RBbGwoInBhdGgi KS5kYXRhKG8/ZTpbXSk7bC5lbnRlcigpLmFwcGVuZCgicGF0aCIpLGwuZXhpdCgpLnJlbW92 ZSgpLGwuZWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9KHQucHJlZml4Qm91bmRhcnk/czoiIikr eSh0LHIpO2U/bi5zZWxlY3QodGhpcykuYXR0cigiZCIsZSkuc3R5bGUoInN0cm9rZSIsIm5v bmUiKTpuLnNlbGVjdCh0aGlzKS5yZW1vdmUoKX0pKX0ocyxJLFAsVCksZnVuY3Rpb24odCxl LG8scyxsKXt2YXIgYz1pLmVuc3VyZVNpbmdsZSh0LCJnIiwiY29udG91cmxpbmVzIiksdT0h MSE9PWwuc2hvd2xpbmVzLGY9bC5zaG93bGFiZWxzLGg9dSYmZixwPXIuY3JlYXRlTGluZXMo Yyx1fHxmLGUpLGQ9ci5jcmVhdGVMaW5lQ2xpcChjLGgsbyxzLnRyYWNlLnVpZCksbT10LnNl bGVjdEFsbCgiZy5jb250b3VybGFiZWxzIikuZGF0YShmP1swXTpbXSk7aWYobS5leGl0KCku cmVtb3ZlKCksbS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImNvbnRvdXJsYWJlbHMi LCEwKSxmKXt2YXIgdj1bXSx5PVtdO2kuY2xlYXJMb2NhdGlvbkNhY2hlKCk7dmFyIHg9ci5s YWJlbEZvcm1hdHRlcihvLHMpLGI9YS50ZXN0ZXIuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZGF0 YS1ub3RleCIsMSkuY2FsbChhLmZvbnQsbC5sYWJlbGZvbnQpLF89ZVswXS54YXhpcyx3PWVb MF0ueWF4aXMsVD1fLl9sZW5ndGgsaz13Ll9sZW5ndGgsQT1fLnJhbmdlLE09dy5yYW5nZSxT PWkuYWdnTnVtcyhNYXRoLm1pbixudWxsLHMueCksRT1pLmFnZ051bXMoTWF0aC5tYXgsbnVs bCxzLngpLEw9aS5hZ2dOdW1zKE1hdGgubWluLG51bGwscy55KSxDPWkuYWdnTnVtcyhNYXRo Lm1heCxudWxsLHMueSksUD1NYXRoLm1heChfLmMycChTLCEwKSwwKSxJPU1hdGgubWluKF8u YzJwKEUsITApLFQpLE89TWF0aC5tYXgody5jMnAoQywhMCksMCksej1NYXRoLm1pbih3LmMy cChMLCEwKSxrKSxEPXt9O0FbMF08QVsxXT8oRC5sZWZ0PVAsRC5yaWdodD1JKTooRC5sZWZ0 PUksRC5yaWdodD1QKSxNWzBdPE1bMV0/KEQudG9wPU8sRC5ib3R0b209eik6KEQudG9wPXos RC5ib3R0b209TyksRC5taWRkbGU9KEQudG9wK0QuYm90dG9tKS8yLEQuY2VudGVyPShELmxl ZnQrRC5yaWdodCkvMix2LnB1c2goW1tELmxlZnQsRC50b3BdLFtELnJpZ2h0LEQudG9wXSxb RC5yaWdodCxELmJvdHRvbV0sW0QubGVmdCxELmJvdHRvbV1dKTt2YXIgUj1NYXRoLnNxcnQo VCpUK2sqayksRj1nLkxBQkVMRElTVEFOQ0UqUi9NYXRoLm1heCgxLGUubGVuZ3RoL2cuTEFC RUxJTkNSRUFTRSk7cC5lYWNoKChmdW5jdGlvbih0KXt2YXIgZT1yLmNhbGNUZXh0T3B0cyh0 LmxldmVsLHgsYixvKTtuLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoInBhdGgiKS5lYWNoKChm dW5jdGlvbigpe3ZhciB0PWkuZ2V0VmlzaWJsZVNlZ21lbnQodGhpcyxELGUuaGVpZ2h0LzIp O2lmKHQmJiEodC5sZW48KGUud2lkdGgrZS5oZWlnaHQpKmcuTEFCRUxNSU4pKWZvcih2YXIg bj1NYXRoLm1pbihNYXRoLmNlaWwodC5sZW4vRiksZy5MQUJFTE1BWCksYT0wO2E8bjthKysp e3ZhciBvPXIuZmluZEJlc3RUZXh0TG9jYXRpb24odGhpcyx0LGUseSxEKTtpZighbylicmVh aztyLmFkZExhYmVsRGF0YShvLGUseSx2KX19KSl9KSksYi5yZW1vdmUoKSxyLmRyYXdMYWJl bHMobSx5LG8sZCxoP3Y6bnVsbCl9ZiYmIXUmJnAucmVtb3ZlKCl9KHMsayx0LHYsVCksZnVu Y3Rpb24odCxlLHIsbixvKXt2YXIgcz1uLnRyYWNlLGw9ci5fZnVsbExheW91dC5fY2xpcHMs Yz0iY2xpcCIrcy51aWQsdT1sLnNlbGVjdEFsbCgiIyIrYykuZGF0YShzLmNvbm5lY3RnYXBz P1tdOlswXSk7aWYodS5lbnRlcigpLmFwcGVuZCgiY2xpcFBhdGgiKS5jbGFzc2VkKCJjb250 b3VyY2xpcCIsITApLmF0dHIoImlkIixjKSx1LmV4aXQoKS5yZW1vdmUoKSwhMT09PXMuY29u bmVjdGdhcHMpe3ZhciBwPXtsZXZlbDouOSxjcm9zc2luZ3M6e30sc3RhcnRzOltdLGVkZ2Vw YXRoczpbXSxwYXRoczpbXSx4YXhpczplLnhheGlzLHlheGlzOmUueWF4aXMseDpuLngseTpu LnksejpiKG4pLHNtb290aGluZzowfTtmKFtwXSksaChbcF0pLG0oW3BdLHt0eXBlOiJsZXZl bHMifSksaS5lbnN1cmVTaW5nbGUodSwicGF0aCIsIiIpLmF0dHIoImQiLChwLnByZWZpeEJv dW5kYXJ5PyJNIitvLmpvaW4oIkwiKSsiWiI6IiIpK3kocCxvKSl9ZWxzZSBjPW51bGw7YS5z ZXRDbGlwVXJsKHQsYyxyKX0ocyxlLHQsdixQKX0pKX0sci5jcmVhdGVMaW5lcz1mdW5jdGlv bih0LGUscil7dmFyIG49clswXS5zbW9vdGhpbmcsaT10LnNlbGVjdEFsbCgiZy5jb250b3Vy bGV2ZWwiKS5kYXRhKGU/cjpbXSk7aWYoaS5leGl0KCkucmVtb3ZlKCksaS5lbnRlcigpLmFw cGVuZCgiZyIpLmNsYXNzZWQoImNvbnRvdXJsZXZlbCIsITApLGUpe3ZhciBvPWkuc2VsZWN0 QWxsKCJwYXRoLm9wZW5saW5lIikuZGF0YSgoZnVuY3Rpb24odCl7cmV0dXJuIHQucGVkZ2Vw YXRoc3x8dC5lZGdlcGF0aHN9KSk7by5leGl0KCkucmVtb3ZlKCksby5lbnRlcigpLmFwcGVu ZCgicGF0aCIpLmNsYXNzZWQoIm9wZW5saW5lIiwhMCksby5hdHRyKCJkIiwoZnVuY3Rpb24o dCl7cmV0dXJuIGEuc21vb3Rob3Blbih0LG4pfSkpLnN0eWxlKCJzdHJva2UtbWl0ZXJsaW1p dCIsMSkuc3R5bGUoInZlY3Rvci1lZmZlY3QiLCJub24tc2NhbGluZy1zdHJva2UiKTt2YXIg cz1pLnNlbGVjdEFsbCgicGF0aC5jbG9zZWRsaW5lIikuZGF0YSgoZnVuY3Rpb24odCl7cmV0 dXJuIHQucHBhdGhzfHx0LnBhdGhzfSkpO3MuZXhpdCgpLnJlbW92ZSgpLHMuZW50ZXIoKS5h cHBlbmQoInBhdGgiKS5jbGFzc2VkKCJjbG9zZWRsaW5lIiwhMCkscy5hdHRyKCJkIiwoZnVu Y3Rpb24odCl7cmV0dXJuIGEuc21vb3RoY2xvc2VkKHQsbil9KSkuc3R5bGUoInN0cm9rZS1t aXRlcmxpbWl0IiwxKS5zdHlsZSgidmVjdG9yLWVmZmVjdCIsIm5vbi1zY2FsaW5nLXN0cm9r ZSIpfXJldHVybiBpfSxyLmNyZWF0ZUxpbmVDbGlwPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBp PWU/ImNsaXBsaW5lIituOm51bGwsbz1yLl9mdWxsTGF5b3V0Ll9jbGlwcy5zZWxlY3RBbGwo IiMiK2kpLmRhdGEoZT9bMF06W10pO3JldHVybiBvLmV4aXQoKS5yZW1vdmUoKSxvLmVudGVy KCkuYXBwZW5kKCJjbGlwUGF0aCIpLmNsYXNzZWQoImNvbnRvdXJsaW5lY2xpcCIsITApLmF0 dHIoImlkIixpKSxhLnNldENsaXBVcmwodCxpLHIpLG99LHIubGFiZWxGb3JtYXR0ZXI9ZnVu Y3Rpb24odCxlKXt2YXIgcj10Ll9mdWxsTGF5b3V0LG49ZS50cmFjZSxpPW4uY29udG91cnMs YT17dHlwZToibGluZWFyIixfaWQ6Inljb250b3VyIixzaG93ZXhwb25lbnQ6ImFsbCIsZXhw b25lbnRmb3JtYXQ6IkIifTtpZihpLmxhYmVsZm9ybWF0KWEudGlja2Zvcm1hdD1pLmxhYmVs Zm9ybWF0LGMoYSxyKTtlbHNle3ZhciBzPW8uZXh0cmFjdE9wdHMobik7aWYocyYmcy5jb2xv cmJhciYmcy5jb2xvcmJhci5fYXhpcylhPXMuY29sb3JiYXIuX2F4aXM7ZWxzZXtpZigiY29u c3RyYWludCI9PT1pLnR5cGUpe3ZhciB1PWkudmFsdWU7QXJyYXkuaXNBcnJheSh1KT9hLnJh bmdlPVt1WzBdLHVbdS5sZW5ndGgtMV1dOmEucmFuZ2U9W3UsdV19ZWxzZSBhLnJhbmdlPVtp LnN0YXJ0LGkuZW5kXSxhLm50aWNrcz0oaS5lbmQtaS5zdGFydCkvaS5zaXplO2EucmFuZ2Vb MF09PT1hLnJhbmdlWzFdJiYoYS5yYW5nZVsxXSs9YS5yYW5nZVswXXx8MSksYS5udGlja3N8 fChhLm50aWNrcz0xZTMpLGMoYSxyKSxsLnByZXBUaWNrcyhhKSxhLl90bWluPW51bGwsYS5f dG1heD1udWxsfX1yZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGwudGlja1RleHQoYSx0KS50 ZXh0fX0sci5jYWxjVGV4dE9wdHM9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9ZSh0KTtyLnRl eHQoaSkuY2FsbChzLmNvbnZlcnRUb1RzcGFucyxuKTt2YXIgbz1yLm5vZGUoKSxsPWEuYkJv eChvLCEwKTtyZXR1cm57dGV4dDppLHdpZHRoOmwud2lkdGgsaGVpZ2h0OmwuaGVpZ2h0LGZv bnRTaXplOitvLnN0eWxlWyJmb250LXNpemUiXS5yZXBsYWNlKCJweCIsIiIpLGxldmVsOnQs ZHk6KGwudG9wK2wuYm90dG9tKS8yfX0sci5maW5kQmVzdFRleHRMb2NhdGlvbj1mdW5jdGlv bih0LGUscixuLGEpe3ZhciBvLHMsbCxjLHUsZj1yLndpZHRoO2UuaXNDbG9zZWQ/KHM9ZS5s ZW4vdi5JTklUSUFMU0VBUkNIUE9JTlRTLG89ZS5taW4rcy8yLGw9ZS5tYXgpOihzPShlLmxl bi1mKS8odi5JTklUSUFMU0VBUkNIUE9JTlRTKzEpLG89ZS5taW4rcytmLzIsbD1lLm1heC0o cytmKS8yKTtmb3IodmFyIGg9MS8wLHA9MDtwPHYuSVRFUkFUSU9OUztwKyspe2Zvcih2YXIg ZD1vO2Q8bDtkKz1zKXt2YXIgbT1pLmdldFRleHRMb2NhdGlvbih0LGUudG90YWwsZCxmKSxn PXgobSxyLG4sYSk7ZzxoJiYoaD1nLHU9bSxjPWQpfWlmKGg+Mip2Lk1BWENPU1QpYnJlYWs7 cCYmKHMvPTIpLGw9KG89Yy1zLzIpKzEuNSpzfWlmKGg8PXYuTUFYQ09TVClyZXR1cm4gdX0s ci5hZGRMYWJlbERhdGE9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9ZS5mb250U2l6ZSxhPWUu d2lkdGgraS8zLG89TWF0aC5tYXgoMCxlLmhlaWdodC1pLzMpLHM9dC54LGw9dC55LGM9dC50 aGV0YSx1PU1hdGguc2luKGMpLGY9TWF0aC5jb3MoYyksaD1mdW5jdGlvbih0LGUpe3JldHVy bltzK3QqZi1lKnUsbCt0KnUrZSpmXX0scD1baCgtYS8yLC1vLzIpLGgoLWEvMixvLzIpLGgo YS8yLG8vMiksaChhLzIsLW8vMildO3IucHVzaCh7dGV4dDplLnRleHQseDpzLHk6bCxkeTpl LmR5LHRoZXRhOmMsbGV2ZWw6ZS5sZXZlbCx3aWR0aDphLGhlaWdodDpvfSksbi5wdXNoKHAp fSxyLmRyYXdMYWJlbHM9ZnVuY3Rpb24odCxlLHIsYSxvKXt2YXIgbD10LnNlbGVjdEFsbCgi dGV4dCIpLmRhdGEoZSwoZnVuY3Rpb24odCl7cmV0dXJuIHQudGV4dCsiLCIrdC54KyIsIit0 LnkrIiwiK3QudGhldGF9KSk7aWYobC5leGl0KCkucmVtb3ZlKCksbC5lbnRlcigpLmFwcGVu ZCgidGV4dCIpLmF0dHIoeyJkYXRhLW5vdGV4IjoxLCJ0ZXh0LWFuY2hvciI6Im1pZGRsZSJ9 KS5lYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LngrTWF0aC5zaW4odC50aGV0YSkqdC5keSxp PXQueS1NYXRoLmNvcyh0LnRoZXRhKSp0LmR5O24uc2VsZWN0KHRoaXMpLnRleHQodC50ZXh0 KS5hdHRyKHt4OmUseTppLHRyYW5zZm9ybToicm90YXRlKCIrMTgwKnQudGhldGEvTWF0aC5Q SSsiICIrZSsiICIraSsiKSJ9KS5jYWxsKHMuY29udmVydFRvVHNwYW5zLHIpfSkpLG8pe2Zv cih2YXIgYz0iIix1PTA7dTxvLmxlbmd0aDt1KyspYys9Ik0iK29bdV0uam9pbigiTCIpKyJa IjtpLmVuc3VyZVNpbmdsZShhLCJwYXRoIiwiIikuYXR0cigiZCIsYyl9fX0seyIuLi8uLi9j b21wb25lbnRzL2NvbG9yc2NhbGUiOjM3OCwiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjoz ODgsIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiOjUyOSwiLi4v Li4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjU1NCwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL3Nl dF9jb252ZXJ0Ijo1NzYsIi4uL2hlYXRtYXAvcGxvdCI6ODA0LCIuL2Nsb3NlX2JvdW5kYXJp ZXMiOjczNywiLi9jb25zdGFudHMiOjczOSwiLi9jb252ZXJ0X3RvX2NvbnN0cmFpbnRzIjo3 NDMsIi4vZW1wdHlfcGF0aGluZm8iOjc0NSwiLi9maW5kX2FsbF9wYXRocyI6NzQ3LCIuL21h a2VfY3Jvc3NpbmdzIjo3NTIsIkBwbG90bHkvZDMiOjU4fV0sNzU0OltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiks aT10KCIuLi8uLi9saWIiKTtmdW5jdGlvbiBhKHQsZSxyKXt2YXIgaT17dHlwZToibGluZWFy IixyYW5nZTpbdCxlXX07cmV0dXJuIG4uYXV0b1RpY2tzKGksKGUtdCkvKHJ8fDE1KSksaX1l LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj10LmNvbnRvdXJzO2lmKHQuYXV0b2NvbnRv dXIpe3ZhciBvPXQuem1pbixzPXQuem1heDsodC56YXV0b3x8dm9pZCAwPT09bykmJihvPWku YWdnTnVtcyhNYXRoLm1pbixudWxsLGUpKSwodC56YXV0b3x8dm9pZCAwPT09cykmJihzPWku YWdnTnVtcyhNYXRoLm1heCxudWxsLGUpKTt2YXIgbD1hKG8scyx0Lm5jb250b3Vycyk7ci5z aXplPWwuZHRpY2ssci5zdGFydD1uLnRpY2tGaXJzdChsKSxsLnJhbmdlLnJldmVyc2UoKSxy LmVuZD1uLnRpY2tGaXJzdChsKSxyLnN0YXJ0PT09byYmKHIuc3RhcnQrPXIuc2l6ZSksci5l bmQ9PT1zJiYoci5lbmQtPXIuc2l6ZSksci5zdGFydD5yLmVuZCYmKHIuc3RhcnQ9ci5lbmQ9 KHIuc3RhcnQrci5lbmQpLzIpLHQuX2lucHV0LmNvbnRvdXJzfHwodC5faW5wdXQuY29udG91 cnM9e30pLGkuZXh0ZW5kRmxhdCh0Ll9pbnB1dC5jb250b3Vycyx7c3RhcnQ6ci5zdGFydCxl bmQ6ci5lbmQsc2l6ZTpyLnNpemV9KSx0Ll9pbnB1dC5hdXRvY29udG91cj0hMH1lbHNlIGlm KCJjb25zdHJhaW50IiE9PXIudHlwZSl7dmFyIGMsdT1yLnN0YXJ0LGY9ci5lbmQsaD10Ll9p bnB1dC5jb250b3VycztpZih1PmYmJihyLnN0YXJ0PWguc3RhcnQ9ZixmPXIuZW5kPWguZW5k PXUsdT1yLnN0YXJ0KSwhKHIuc2l6ZT4wKSljPXU9PT1mPzE6YSh1LGYsdC5uY29udG91cnMp LmR0aWNrLGguc2l6ZT1yLnNpemU9Y319fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4vYXhlcyI6NTU0fV0sNzU1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIkBwbG90bHkvZDMiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2lu ZyIpLGE9dCgiLi4vaGVhdG1hcC9zdHlsZSIpLG89dCgiLi9tYWtlX2NvbG9yX21hcCIpO2Uu ZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1uLnNlbGVjdCh0KS5zZWxlY3RBbGwoImcuY29u dG91ciIpO2Uuc3R5bGUoIm9wYWNpdHkiLChmdW5jdGlvbih0KXtyZXR1cm4gdFswXS50cmFj ZS5vcGFjaXR5fSkpLGUuZWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9bi5zZWxlY3QodGhpcyks cj10WzBdLnRyYWNlLGE9ci5jb250b3VycyxzPXIubGluZSxsPWEuc2l6ZXx8MSxjPWEuc3Rh cnQsdT0iY29uc3RyYWludCI9PT1hLnR5cGUsZj0hdSYmImxpbmVzIj09PWEuY29sb3Jpbmcs aD0hdSYmImZpbGwiPT09YS5jb2xvcmluZyxwPWZ8fGg/byhyKTpudWxsO2Uuc2VsZWN0QWxs KCJnLmNvbnRvdXJsZXZlbCIpLmVhY2goKGZ1bmN0aW9uKHQpe24uc2VsZWN0KHRoaXMpLnNl bGVjdEFsbCgicGF0aCIpLmNhbGwoaS5saW5lR3JvdXBTdHlsZSxzLndpZHRoLGY/cCh0Lmxl dmVsKTpzLmNvbG9yLHMuZGFzaCl9KSk7dmFyIGQ9YS5sYWJlbGZvbnQ7aWYoZS5zZWxlY3RB bGwoImcuY29udG91cmxhYmVscyB0ZXh0IikuZWFjaCgoZnVuY3Rpb24odCl7aS5mb250KG4u c2VsZWN0KHRoaXMpLHtmYW1pbHk6ZC5mYW1pbHksc2l6ZTpkLnNpemUsY29sb3I6ZC5jb2xv cnx8KGY/cCh0LmxldmVsKTpzLmNvbG9yKX0pfSkpLHUpZS5zZWxlY3RBbGwoImcuY29udG91 cmZpbGwgcGF0aCIpLnN0eWxlKCJmaWxsIixyLmZpbGxjb2xvcik7ZWxzZSBpZihoKXt2YXIg bTtlLnNlbGVjdEFsbCgiZy5jb250b3VyZmlsbCBwYXRoIikuc3R5bGUoImZpbGwiLChmdW5j dGlvbih0KXtyZXR1cm4gdm9pZCAwPT09bSYmKG09dC5sZXZlbCkscCh0LmxldmVsKy41Kmwp fSkpLHZvaWQgMD09PW0mJihtPWMpLGUuc2VsZWN0QWxsKCJnLmNvbnRvdXJiZyBwYXRoIiku c3R5bGUoImZpbGwiLHAobS0uNSpsKSl9fSkpLGEodCl9fSx7Ii4uLy4uL2NvbXBvbmVudHMv ZHJhd2luZyI6Mzg4LCIuLi9oZWF0bWFwL3N0eWxlIjo4MDUsIi4vbWFrZV9jb2xvcl9tYXAi Ojc1MSwiQHBsb3RseS9kMyI6NTh9XSw3NTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIiksaT10 KCIuL2xhYmVsX2RlZmF1bHRzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGEsbyl7dmFy IHMsbD1yKCJjb250b3Vycy5jb2xvcmluZyIpLGM9IiI7ImZpbGwiPT09bCYmKHM9cigiY29u dG91cnMuc2hvd2xpbmVzIikpLCExIT09cyYmKCJsaW5lcyIhPT1sJiYoYz1yKCJsaW5lLmNv bG9yIiwiIzAwMCIpKSxyKCJsaW5lLndpZHRoIiwuNSkscigibGluZS5kYXNoIikpLCJub25l IiE9PWwmJighMCE9PXQuc2hvd2xlZ2VuZCYmKGUuc2hvd2xlZ2VuZD0hMSksZS5fZGZsdFNo b3dMZWdlbmQ9ITEsbih0LGUsYSxyLHtwcmVmaXg6IiIsY0xldHRlcjoieiJ9KSkscigibGlu ZS5zbW9vdGhpbmciKSxpKHIsYSxjLG8pfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2Nh bGUvZGVmYXVsdHMiOjM3NiwiLi9sYWJlbF9kZWZhdWx0cyI6NzUwfV0sNzU3OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2hlYXRtYXAvYXR0cmlidXRlcyIp LGk9dCgiLi4vY29udG91ci9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2Nv bG9yc2NhbGUvYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZs YXQscz1pLmNvbnRvdXJzO2UuZXhwb3J0cz1vKHtjYXJwZXQ6e3ZhbFR5cGU6InN0cmluZyIs ZWRpdFR5cGU6ImNhbGMifSx6Om4ueixhOm4ueCxhMDpuLngwLGRhOm4uZHgsYjpuLnksYjA6 bi55MCxkYjpuLmR5LHRleHQ6bi50ZXh0LGhvdmVydGV4dDpuLmhvdmVydGV4dCx0cmFuc3Bv c2U6bi50cmFuc3Bvc2UsYXR5cGU6bi54dHlwZSxidHlwZTpuLnl0eXBlLGZpbGxjb2xvcjpp LmZpbGxjb2xvcixhdXRvY29udG91cjppLmF1dG9jb250b3VyLG5jb250b3VyczppLm5jb250 b3Vycyxjb250b3Vyczp7dHlwZTpzLnR5cGUsc3RhcnQ6cy5zdGFydCxlbmQ6cy5lbmQsc2l6 ZTpzLnNpemUsY29sb3Jpbmc6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImZpbGwi LCJsaW5lcyIsIm5vbmUiXSxkZmx0OiJmaWxsIixlZGl0VHlwZToiY2FsYyJ9LHNob3dsaW5l czpzLnNob3dsaW5lcyxzaG93bGFiZWxzOnMuc2hvd2xhYmVscyxsYWJlbGZvbnQ6cy5sYWJl bGZvbnQsbGFiZWxmb3JtYXQ6cy5sYWJlbGZvcm1hdCxvcGVyYXRpb246cy5vcGVyYXRpb24s dmFsdWU6cy52YWx1ZSxlZGl0VHlwZToiY2FsYyIsaW1wbGllZEVkaXRzOnthdXRvY29udG91 cjohMX19LGxpbmU6e2NvbG9yOmkubGluZS5jb2xvcix3aWR0aDppLmxpbmUud2lkdGgsZGFz aDppLmxpbmUuZGFzaCxzbW9vdGhpbmc6aS5saW5lLnNtb290aGluZyxlZGl0VHlwZToicGxv dCJ9LHRyYW5zZm9ybXM6dm9pZCAwfSxhKCIiLHtjTGV0dGVyOiJ6IixhdXRvQ29sb3JEZmx0 OiExfSkpfSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjozNzMs Ii4uLy4uL2xpYi9leHRlbmQiOjQ5MywiLi4vY29udG91ci9hdHRyaWJ1dGVzIjo3MzUsIi4u L2hlYXRtYXAvYXR0cmlidXRlcyI6NzkyfV0sNzU4OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9jYWxjIiksaT10 KCIuLi8uLi9saWIiKSxhPXQoIi4uL2hlYXRtYXAvY29udmVydF9jb2x1bW5feHl6Iiksbz10 KCIuLi9oZWF0bWFwL2NsZWFuXzJkX2FycmF5Iikscz10KCIuLi9oZWF0bWFwL2ludGVycDJk IiksbD10KCIuLi9oZWF0bWFwL2ZpbmRfZW1wdGllcyIpLGM9dCgiLi4vaGVhdG1hcC9tYWtl X2JvdW5kX2FycmF5IiksdT10KCIuL2RlZmF1bHRzIiksZj10KCIuLi9jYXJwZXQvbG9va3Vw X2NhcnBldGlkIiksaD10KCIuLi9jb250b3VyL3NldF9jb250b3VycyIpO2UuZXhwb3J0cz1m dW5jdGlvbih0LGUpe3ZhciByPWUuX2NhcnBldFRyYWNlPWYodCxlKTtpZihyJiZyLnZpc2li bGUmJiJsZWdlbmRvbmx5IiE9PXIudmlzaWJsZSl7aWYoIWUuYXx8IWUuYil7dmFyIHA9dC5k YXRhW3IuaW5kZXhdLGQ9dC5kYXRhW2UuaW5kZXhdO2QuYXx8KGQuYT1wLmEpLGQuYnx8KGQu Yj1wLmIpLHUoZCxlLGUuX2RlZmF1bHRDb2xvcix0Ll9mdWxsTGF5b3V0KX12YXIgbT1mdW5j dGlvbih0LGUpe3ZhciByLHUsZixoLHAsZCxtLGc9ZS5fY2FycGV0VHJhY2Usdj1nLmFheGlz LHk9Zy5iYXhpczt2Ll9taW5EdGljaz0wLHkuX21pbkR0aWNrPTAsaS5pc0FycmF5MUQoZS56 KSYmYShlLHYseSwiYSIsImIiLFsieiJdKTtyPWUuX2E9ZS5fYXx8ZS5hLGg9ZS5fYj1lLl9i fHxlLmIscj1yP3YubWFrZUNhbGNkYXRhKGUsIl9hIik6W10saD1oP3kubWFrZUNhbGNkYXRh KGUsIl9iIik6W10sdT1lLmEwfHwwLGY9ZS5kYXx8MSxwPWUuYjB8fDAsZD1lLmRifHwxLG09 ZS5fej1vKGUuX3p8fGUueixlLnRyYW5zcG9zZSksZS5fZW1wdHlwb2ludHM9bChtKSxzKG0s ZS5fZW1wdHlwb2ludHMpO3ZhciB4PWkubWF4Um93TGVuZ3RoKG0pLGI9InNjYWxlZCI9PT1l Lnh0eXBlPyIiOnIsXz1jKGUsYix1LGYseCx2KSx3PSJzY2FsZWQiPT09ZS55dHlwZT8iIjpo LFQ9YyhlLHcscCxkLG0ubGVuZ3RoLHkpLGs9e2E6XyxiOlQsejptfTsibGV2ZWxzIj09PWUu Y29udG91cnMudHlwZSYmIm5vbmUiIT09ZS5jb250b3Vycy5jb2xvcmluZyYmbih0LGUse3Zh bHM6bSxjb250YWluZXJTdHI6IiIsY0xldHRlcjoieiJ9KTtyZXR1cm5ba119KHQsZSk7cmV0 dXJuIGgoZSxlLl96KSxtfX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMi OjM3NCwiLi4vLi4vbGliIjo1MDMsIi4uL2NhcnBldC9sb29rdXBfY2FycGV0aWQiOjcwOCwi Li4vY29udG91ci9zZXRfY29udG91cnMiOjc1NCwiLi4vaGVhdG1hcC9jbGVhbl8yZF9hcnJh eSI6Nzk0LCIuLi9oZWF0bWFwL2NvbnZlcnRfY29sdW1uX3h5eiI6Nzk2LCIuLi9oZWF0bWFw L2ZpbmRfZW1wdGllcyI6Nzk4LCIuLi9oZWF0bWFwL2ludGVycDJkIjo4MDEsIi4uL2hlYXRt YXAvbWFrZV9ib3VuZF9hcnJheSI6ODAzLCIuL2RlZmF1bHRzIjo3NTl9XSw3NTk6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuLi9o ZWF0bWFwL3h5el9kZWZhdWx0cyIpLGE9dCgiLi9hdHRyaWJ1dGVzIiksbz10KCIuLi9jb250 b3VyL2NvbnN0cmFpbnRfZGVmYXVsdHMiKSxzPXQoIi4uL2NvbnRvdXIvY29udG91cnNfZGVm YXVsdHMiKSxsPXQoIi4uL2NvbnRvdXIvc3R5bGVfZGVmYXVsdHMiKTtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlLHIsYyl7ZnVuY3Rpb24gdShyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUsYSxy LGkpfWlmKHUoImNhcnBldCIpLHQuYSYmdC5iKXtpZighaSh0LGUsdSxjLCJhIiwiYiIpKXJl dHVybiB2b2lkKGUudmlzaWJsZT0hMSk7dSgidGV4dCIpLCJjb25zdHJhaW50Ij09PXUoImNv bnRvdXJzLnR5cGUiKT9vKHQsZSx1LGMscix7aGFzSG92ZXI6ITF9KToocyh0LGUsdSwoZnVu Y3Rpb24ocil7cmV0dXJuIG4uY29lcmNlMih0LGUsYSxyKX0pKSxsKHQsZSx1LGMse2hhc0hv dmVyOiExfSkpfWVsc2UgZS5fZGVmYXVsdENvbG9yPXIsZS5fbGVuZ3RoPW51bGx9fSx7Ii4u Ly4uL2xpYiI6NTAzLCIuLi9jb250b3VyL2NvbnN0cmFpbnRfZGVmYXVsdHMiOjc0MCwiLi4v Y29udG91ci9jb250b3Vyc19kZWZhdWx0cyI6NzQyLCIuLi9jb250b3VyL3N0eWxlX2RlZmF1 bHRzIjo3NTYsIi4uL2hlYXRtYXAveHl6X2RlZmF1bHRzIjo4MDcsIi4vYXR0cmlidXRlcyI6 NzU3fV0sNzYwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YXR0 cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRz IiksY29sb3JiYXI6dCgiLi4vY29udG91ci9jb2xvcmJhciIpLGNhbGM6dCgiLi9jYWxjIiks cGxvdDp0KCIuL3Bsb3QiKSxzdHlsZTp0KCIuLi9jb250b3VyL3N0eWxlIiksbW9kdWxlVHlw ZToidHJhY2UiLG5hbWU6ImNvbnRvdXJjYXJwZXQiLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4u L3Bsb3RzL2NhcnRlc2lhbiIpLGNhdGVnb3JpZXM6WyJjYXJ0ZXNpYW4iLCJzdmciLCJjYXJw ZXQiLCJjb250b3VyIiwic3ltYm9scyIsInNob3dMZWdlbmQiLCJoYXNMaW5lcyIsImNhcnBl dERlcGVuZGVudCIsIm5vSG92ZXIiLCJub1NvcnRpbmdCeVZhbHVlIl0sbWV0YTp7fX19LHsi Li4vLi4vcGxvdHMvY2FydGVzaWFuIjo1NjgsIi4uL2NvbnRvdXIvY29sb3JiYXIiOjczOCwi Li4vY29udG91ci9zdHlsZSI6NzU1LCIuL2F0dHJpYnV0ZXMiOjc1NywiLi9jYWxjIjo3NTgs Ii4vZGVmYXVsdHMiOjc1OSwiLi9wbG90Ijo3NjF9XSw3NjE6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiQHBsb3RseS9kMyIpLGk9dCgiLi4vY2FycGV0L21hcF8x ZF9hcnJheSIpLGE9dCgiLi4vY2FycGV0L21ha2VwYXRoIiksbz10KCIuLi8uLi9jb21wb25l bnRzL2RyYXdpbmciKSxzPXQoIi4uLy4uL2xpYiIpLGw9dCgiLi4vY29udG91ci9tYWtlX2Ny b3NzaW5ncyIpLGM9dCgiLi4vY29udG91ci9maW5kX2FsbF9wYXRocyIpLHU9dCgiLi4vY29u dG91ci9wbG90IiksZj10KCIuLi9jb250b3VyL2NvbnN0YW50cyIpLGg9dCgiLi4vY29udG91 ci9jb252ZXJ0X3RvX2NvbnN0cmFpbnRzIikscD10KCIuLi9jb250b3VyL2VtcHR5X3BhdGhp bmZvIiksZD10KCIuLi9jb250b3VyL2Nsb3NlX2JvdW5kYXJpZXMiKSxtPXQoIi4uL2NhcnBl dC9sb29rdXBfY2FycGV0aWQiKSxnPXQoIi4uL2NhcnBldC9heGlzX2FsaWduZWRfbGluZSIp O2Z1bmN0aW9uIHYodCxlLHIpe3ZhciBuPXQuZ2V0UG9pbnRBdExlbmd0aChlKSxpPXQuZ2V0 UG9pbnRBdExlbmd0aChyKSxhPWkueC1uLngsbz1pLnktbi55LHM9TWF0aC5zcXJ0KGEqYStv Km8pO3JldHVyblthL3Msby9zXX1mdW5jdGlvbiB5KHQpe3ZhciBlPU1hdGguc3FydCh0WzBd KnRbMF0rdFsxXSp0WzFdKTtyZXR1cm5bdFswXS9lLHRbMV0vZV19ZnVuY3Rpb24geCh0LGUp e3ZhciByPU1hdGguYWJzKHRbMF0qZVswXSt0WzFdKmVbMV0pO3JldHVybiBNYXRoLnNxcnQo MS1yKnIpL3J9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGIpe3ZhciBfPWUueGF4aXMsdz1l LnlheGlzO3MubWFrZVRyYWNlR3JvdXBzKGIsciwiY29udG91ciIpLmVhY2goKGZ1bmN0aW9u KHIpe3ZhciBiPW4uc2VsZWN0KHRoaXMpLFQ9clswXSxrPVQudHJhY2UsQT1rLl9jYXJwZXRU cmFjZT1tKHQsayksTT10LmNhbGNkYXRhW0EuaW5kZXhdWzBdO2lmKEEudmlzaWJsZSYmImxl Z2VuZG9ubHkiIT09QS52aXNpYmxlKXt2YXIgUz1ULmEsRT1ULmIsTD1rLmNvbnRvdXJzLEM9 cChMLGUsVCksUD0iY29uc3RyYWludCI9PT1MLnR5cGUsST1MLl9vcGVyYXRpb24sTz1QPyI9 Ij09PUk/ImxpbmVzIjoiZmlsbCI6TC5jb2xvcmluZyx6PVtbU1swXSxFW0UubGVuZ3RoLTFd XSxbU1tTLmxlbmd0aC0xXSxFW0UubGVuZ3RoLTFdXSxbU1tTLmxlbmd0aC0xXSxFWzBdXSxb U1swXSxFWzBdXV07bChDKTt2YXIgRD0xZS04KihTW1MubGVuZ3RoLTFdLVNbMF0pLFI9MWUt OCooRVtFLmxlbmd0aC0xXS1FWzBdKTtjKEMsRCxSKTt2YXIgRixCLE4saixVPUM7ImNvbnN0 cmFpbnQiPT09TC50eXBlJiYoVT1oKEMsSSkpLGZ1bmN0aW9uKHQsZSl7dmFyIHIsbixpLGEs byxzLGwsYyx1O2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspe2ZvcihhPXRbcl0sbz1hLnBlZGdl cGF0aHM9W10scz1hLnBwYXRocz1bXSxuPTA7bjxhLmVkZ2VwYXRocy5sZW5ndGg7bisrKXtm b3IodT1hLmVkZ2VwYXRoc1tuXSxsPVtdLGk9MDtpPHUubGVuZ3RoO2krKylsW2ldPWUodVtp XSk7by5wdXNoKGwpfWZvcihuPTA7bjxhLnBhdGhzLmxlbmd0aDtuKyspe2Zvcih1PWEucGF0 aHNbbl0sYz1bXSxpPTA7aTx1Lmxlbmd0aDtpKyspY1tpXT1lKHVbaV0pO3MucHVzaChjKX19 fShDLHEpO3ZhciBWPVtdO2ZvcihqPU0uY2xpcHNlZ21lbnRzLmxlbmd0aC0xO2o+PTA7ai0t KUY9TS5jbGlwc2VnbWVudHNbal0sQj1pKFtdLEYueCxfLmMycCksTj1pKFtdLEYueSx3LmMy cCksQi5yZXZlcnNlKCksTi5yZXZlcnNlKCksVi5wdXNoKGEoQixOLEYuYmljdWJpYykpO3Zh ciBIPSJNIitWLmpvaW4oIkwiKSsiWiI7IWZ1bmN0aW9uKHQsZSxyLG4sbyxsKXt2YXIgYyx1 LGYsaCxwPXMuZW5zdXJlU2luZ2xlKHQsImciLCJjb250b3VyYmciKS5zZWxlY3RBbGwoInBh dGgiKS5kYXRhKCJmaWxsIiE9PWx8fG8/W106WzBdKTtwLmVudGVyKCkuYXBwZW5kKCJwYXRo IikscC5leGl0KCkucmVtb3ZlKCk7dmFyIGQ9W107Zm9yKGg9MDtoPGUubGVuZ3RoO2grKylj PWVbaF0sdT1pKFtdLGMueCxyLmMycCksZj1pKFtdLGMueSxuLmMycCksZC5wdXNoKGEodSxm LGMuYmljdWJpYykpO3AuYXR0cigiZCIsIk0iK2Quam9pbigiTCIpKyJaIikuc3R5bGUoInN0 cm9rZSIsIm5vbmUiKX0oYixNLmNsaXBzZWdtZW50cyxfLHcsUCxPKSxmdW5jdGlvbih0LGUs cixpLGEsbCxjLHUsZixoLHApe3ZhciBtPSJmaWxsIj09PWg7bSYmZChhLHQuY29udG91cnMp O3ZhciB2PXMuZW5zdXJlU2luZ2xlKGUsImciLCJjb250b3VyZmlsbCIpLnNlbGVjdEFsbCgi cGF0aCIpLmRhdGEobT9hOltdKTt2LmVudGVyKCkuYXBwZW5kKCJwYXRoIiksdi5leGl0KCku cmVtb3ZlKCksdi5lYWNoKChmdW5jdGlvbih0KXt2YXIgZT0odC5wcmVmaXhCb3VuZGFyeT9w OiIiKStmdW5jdGlvbih0LGUscixuLGksYSxsLGMpe3ZhciB1LGYsaCxwLGQsbSx2LHk9IiIs eD1lLmVkZ2VwYXRocy5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSksYj0hMCxfPTFl LTQqTWF0aC5hYnMoclswXVswXS1yWzJdWzBdKSx3PTFlLTQqTWF0aC5hYnMoclswXVsxXS1y WzJdWzFdKTtmdW5jdGlvbiBUKHQpe3JldHVybiBNYXRoLmFicyh0WzFdLXJbMF1bMV0pPHd9 ZnVuY3Rpb24gayh0KXtyZXR1cm4gTWF0aC5hYnModFsxXS1yWzJdWzFdKTx3fWZ1bmN0aW9u IEEodCl7cmV0dXJuIE1hdGguYWJzKHRbMF0tclswXVswXSk8X31mdW5jdGlvbiBNKHQpe3Jl dHVybiBNYXRoLmFicyh0WzBdLXJbMl1bMF0pPF99ZnVuY3Rpb24gUyh0LGUpe3ZhciByLG4s byxzLHU9IiI7Zm9yKFQodCkmJiFNKHQpfHxrKHQpJiYhQSh0KT8ocz1pLmFheGlzLG89Zyhp LGEsW3RbMF0sZVswXV0sLjUqKHRbMV0rZVsxXSkpKToocz1pLmJheGlzLG89ZyhpLGEsLjUq KHRbMF0rZVswXSksW3RbMV0sZVsxXV0pKSxyPTE7cjxvLmxlbmd0aDtyKyspZm9yKHUrPXMu c21vb3RoaW5nPyJDIjoiTCIsbj0wO248b1tyXS5sZW5ndGg7bisrKXt2YXIgZj1vW3JdW25d O3UrPVtsLmMycChmWzBdKSxjLmMycChmWzFdKV0rIiAifXJldHVybiB1fXU9MCxmPW51bGw7 Zm9yKDt4Lmxlbmd0aDspe3ZhciBFPWUuZWRnZXBhdGhzW3VdWzBdO2ZvcihmJiYoeSs9Uyhm LEUpKSx2PW8uc21vb3Rob3BlbihlLmVkZ2VwYXRoc1t1XS5tYXAobiksZS5zbW9vdGhpbmcp LHkrPWI/djp2LnJlcGxhY2UoL15NLywiTCIpLHguc3BsaWNlKHguaW5kZXhPZih1KSwxKSxm PWUuZWRnZXBhdGhzW3VdW2UuZWRnZXBhdGhzW3VdLmxlbmd0aC0xXSxkPS0xLHA9MDtwPDQ7 cCsrKXtpZighZil7cy5sb2coIk1pc3NpbmcgZW5kPyIsdSxlKTticmVha31mb3IoVChmKSYm IU0oZik/aD1yWzFdOkEoZik/aD1yWzBdOmsoZik/aD1yWzNdOk0oZikmJihoPXJbMl0pLG09 MDttPGUuZWRnZXBhdGhzLmxlbmd0aDttKyspe3ZhciBMPWUuZWRnZXBhdGhzW21dWzBdO01h dGguYWJzKGZbMF0taFswXSk8Xz9NYXRoLmFicyhmWzBdLUxbMF0pPF8mJihMWzFdLWZbMV0p KihoWzFdLUxbMV0pPj0wJiYoaD1MLGQ9bSk6TWF0aC5hYnMoZlsxXS1oWzFdKTx3P01hdGgu YWJzKGZbMV0tTFsxXSk8dyYmKExbMF0tZlswXSkqKGhbMF0tTFswXSk+PTAmJihoPUwsZD1t KTpzLmxvZygiZW5kcHQgdG8gbmV3ZW5kcHQgaXMgbm90IHZlcnQuIG9yIGhvcnouIixmLGgs TCl9aWYoZD49MClicmVhazt5Kz1TKGYsaCksZj1ofWlmKGQ9PT1lLmVkZ2VwYXRocy5sZW5n dGgpe3MubG9nKCJ1bmNsb3NlZCBwZXJpbWV0ZXIgcGF0aCIpO2JyZWFrfXU9ZCwoYj0tMT09 PXguaW5kZXhPZih1KSkmJih1PXhbMF0seSs9UyhmLGgpKyJaIixmPW51bGwpfWZvcih1PTA7 dTxlLnBhdGhzLmxlbmd0aDt1KyspeSs9by5zbW9vdGhjbG9zZWQoZS5wYXRoc1t1XS5tYXAo biksZS5zbW9vdGhpbmcpO3JldHVybiB5fSgwLHQsbCxjLHUsZixyLGkpO2U/bi5zZWxlY3Qo dGhpcykuYXR0cigiZCIsZSkuc3R5bGUoInN0cm9rZSIsIm5vbmUiKTpuLnNlbGVjdCh0aGlz KS5yZW1vdmUoKX0pKX0oayxiLF8sdyxVLHoscSxBLE0sTyxIKSxmdW5jdGlvbih0LGUscixp LGEsbCxjKXt2YXIgaD1zLmVuc3VyZVNpbmdsZSh0LCJnIiwiY29udG91cmxpbmVzIikscD0h MSE9PWEuc2hvd2xpbmVzLGQ9YS5zaG93bGFiZWxzLG09cCYmZCxnPXUuY3JlYXRlTGluZXMo aCxwfHxkLGUpLGI9dS5jcmVhdGVMaW5lQ2xpcChoLG0scixpLnRyYWNlLnVpZCksXz10LnNl bGVjdEFsbCgiZy5jb250b3VybGFiZWxzIikuZGF0YShkP1swXTpbXSk7aWYoXy5leGl0KCku cmVtb3ZlKCksXy5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImNvbnRvdXJsYWJlbHMi LCEwKSxkKXt2YXIgdz1sLnhheGlzLFQ9bC55YXhpcyxrPXcuX2xlbmd0aCxBPVQuX2xlbmd0 aCxNPVtbWzAsMF0sW2ssMF0sW2ssQV0sWzAsQV1dXSxTPVtdO3MuY2xlYXJMb2NhdGlvbkNh Y2hlKCk7dmFyIEU9dS5sYWJlbEZvcm1hdHRlcihyLGkpLEw9by50ZXN0ZXIuYXBwZW5kKCJ0 ZXh0IikuYXR0cigiZGF0YS1ub3RleCIsMSkuY2FsbChvLmZvbnQsYS5sYWJlbGZvbnQpLEM9 e2xlZnQ6MCxyaWdodDprLGNlbnRlcjprLzIsdG9wOjAsYm90dG9tOkEsbWlkZGxlOkEvMn0s UD1NYXRoLnNxcnQoayprK0EqQSksST1mLkxBQkVMRElTVEFOQ0UqUC9NYXRoLm1heCgxLGUu bGVuZ3RoL2YuTEFCRUxJTkNSRUFTRSk7Zy5lYWNoKChmdW5jdGlvbih0KXt2YXIgZT11LmNh bGNUZXh0T3B0cyh0LmxldmVsLEUsTCxyKTtuLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoInBh dGgiKS5lYWNoKChmdW5jdGlvbihyKXt2YXIgbj1zLmdldFZpc2libGVTZWdtZW50KHRoaXMs QyxlLmhlaWdodC8yKTtpZihuJiYoZnVuY3Rpb24odCxlLHIsbixpLGEpe2Zvcih2YXIgbyxz PTA7czxyLnBlZGdlcGF0aHMubGVuZ3RoO3MrKyllPT09ci5wZWRnZXBhdGhzW3NdJiYobz1y LmVkZ2VwYXRoc1tzXSk7aWYoIW8pcmV0dXJuO3ZhciBsPWkuYVswXSxjPWkuYVtpLmEubGVu Z3RoLTFdLHU9aS5iWzBdLGY9aS5iW2kuYi5sZW5ndGgtMV07ZnVuY3Rpb24gaCh0LGUpe3Zh ciByLG49MDtyZXR1cm4oTWF0aC5hYnModFswXS1sKTwuMXx8TWF0aC5hYnModFswXS1jKTwu MSkmJihyPXkoaS5keHlkYl9yb3VnaCh0WzBdLHRbMV0sLjEpKSxuPU1hdGgubWF4KG4sYSp4 KGUscikvMikpLChNYXRoLmFicyh0WzFdLXUpPC4xfHxNYXRoLmFicyh0WzFdLWYpPC4xKSYm KHI9eShpLmR4eWRhX3JvdWdoKHRbMF0sdFsxXSwuMSkpLG49TWF0aC5tYXgobixhKngoZSxy KS8yKSksbn12YXIgcD12KHQsMCwxKSxkPXYodCxuLnRvdGFsLG4udG90YWwtMSksbT1oKG9b MF0scCksZz1uLnRvdGFsLWgob1tvLmxlbmd0aC0xXSxkKTtuLm1pbjxtJiYobi5taW49bSk7 bi5tYXg+ZyYmKG4ubWF4PWcpO24ubGVuPW4ubWF4LW4ubWlufSh0aGlzLHIsdCxuLGMsZS5o ZWlnaHQpLCEobi5sZW48KGUud2lkdGgrZS5oZWlnaHQpKmYuTEFCRUxNSU4pKSlmb3IodmFy IGk9TWF0aC5taW4oTWF0aC5jZWlsKG4ubGVuL0kpLGYuTEFCRUxNQVgpLGE9MDthPGk7YSsr KXt2YXIgbz11LmZpbmRCZXN0VGV4dExvY2F0aW9uKHRoaXMsbixlLFMsQyk7aWYoIW8pYnJl YWs7dS5hZGRMYWJlbERhdGEobyxlLFMsTSl9fSkpfSkpLEwucmVtb3ZlKCksdS5kcmF3TGFi ZWxzKF8sUyxyLGIsbT9NOm51bGwpfWQmJiFwJiZnLnJlbW92ZSgpfShiLEMsdCxULEwsZSxB KSxvLnNldENsaXBVcmwoYixBLl9jbGlwUGF0aElkLHQpfWZ1bmN0aW9uIHEodCl7dmFyIGU9 QS5hYjJ4eSh0WzBdLHRbMV0sITApO3JldHVybltfLmMycChlWzBdKSx3LmMycChlWzFdKV19 fSkpfX0seyIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjM4OCwiLi4vLi4vbGliIjo1MDMs Ii4uL2NhcnBldC9heGlzX2FsaWduZWRfbGluZSI6NjkyLCIuLi9jYXJwZXQvbG9va3VwX2Nh cnBldGlkIjo3MDgsIi4uL2NhcnBldC9tYWtlcGF0aCI6NzA5LCIuLi9jYXJwZXQvbWFwXzFk X2FycmF5Ijo3MTAsIi4uL2NvbnRvdXIvY2xvc2VfYm91bmRhcmllcyI6NzM3LCIuLi9jb250 b3VyL2NvbnN0YW50cyI6NzM5LCIuLi9jb250b3VyL2NvbnZlcnRfdG9fY29uc3RyYWludHMi Ojc0MywiLi4vY29udG91ci9lbXB0eV9wYXRoaW5mbyI6NzQ1LCIuLi9jb250b3VyL2ZpbmRf YWxsX3BhdGhzIjo3NDcsIi4uL2NvbnRvdXIvbWFrZV9jcm9zc2luZ3MiOjc1MiwiLi4vY29u dG91ci9wbG90Ijo3NTMsIkBwbG90bHkvZDMiOjU4fV0sNzYyOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRy aWJ1dGVzIiksaT10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIikuaG92ZXJ0 ZW1wbGF0ZUF0dHJzLGE9dCgiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyIpLG89dCgiLi4vc2Nh dHRlcm1hcGJveC9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5k RmxhdDtlLmV4cG9ydHM9cyh7bG9uOm8ubG9uLGxhdDpvLmxhdCx6Ont2YWxUeXBlOiJkYXRh X2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHJhZGl1czp7dmFsVHlwZToibnVtYmVyIixlZGl0 VHlwZToicGxvdCIsYXJyYXlPazohMCxtaW46MSxkZmx0OjMwfSxiZWxvdzp7dmFsVHlwZToi c3RyaW5nIixlZGl0VHlwZToicGxvdCJ9LHRleHQ6by50ZXh0LGhvdmVydGV4dDpvLmhvdmVy dGV4dCxob3ZlcmluZm86cyh7fSxhLmhvdmVyaW5mbyx7ZmxhZ3M6WyJsb24iLCJsYXQiLCJ6 IiwidGV4dCIsIm5hbWUiXX0pLGhvdmVydGVtcGxhdGU6aSgpLHNob3dsZWdlbmQ6cyh7fSxh LnNob3dsZWdlbmQse2RmbHQ6ITF9KX0sbigiIix7Y0xldHRlcjoieiIsZWRpdFR5cGVPdmVy cmlkZToiY2FsYyJ9KSl9LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0 ZXMiOjM3MywiLi4vLi4vbGliL2V4dGVuZCI6NDkzLCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVz Ijo1NTAsIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjYzMywiLi4vc2NhdHRl cm1hcGJveC9hdHRyaWJ1dGVzIjo5OTN9XSw3NjM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxpPXQoIi4uLy4uL2xpYiIpLmlzQXJy YXlPclR5cGVkQXJyYXksYT10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIikuQkFETlVN LG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiKSxzPXQoIi4uLy4uL2xp YiIpLl87ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPWUuX2xlbmd0aCxsPW5l dyBBcnJheShyKSxjPWUueix1PWkoYykmJmMubGVuZ3RoLGY9MDtmPHI7ZisrKXt2YXIgaD1s W2ZdPXt9LHA9ZS5sb25bZl0sZD1lLmxhdFtmXTtpZihoLmxvbmxhdD1uKHApJiZuKGQpP1sr cCwrZF06W2EsYV0sdSl7dmFyIG09Y1tmXTtoLno9bihtKT9tOmF9fXJldHVybiBvKHQsZSx7 dmFsczp1P2M6WzAsMV0sY29udGFpbmVyU3RyOiIiLGNMZXR0ZXI6InoifSksciYmKGxbMF0u dD17bGFiZWxzOntsYXQ6cyh0LCJsYXQ6IikrIiAiLGxvbjpzKHQsImxvbjoiKSsiICJ9fSks bH19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiOjM3NCwiLi4vLi4vY29u c3RhbnRzL251bWVyaWNhbCI6NDc5LCIuLi8uLi9saWIiOjUwMywiZmFzdC1pc251bWVyaWMi OjE5MH1dLDc2NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0 LWlzbnVtZXJpYyIpLGk9dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2Nv bG9yIiksbz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiKSxzPXQoIi4uLy4uL2Nv bnN0YW50cy9udW1lcmljYWwiKS5CQUROVU0sbD10KCIuLi8uLi9saWIvZ2VvanNvbl91dGls cyIpLm1ha2VCbGFuaztlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dFswXS50cmFjZSxy PSEwPT09ZS52aXNpYmxlJiYwIT09ZS5fbGVuZ3RoLGM9ZS5fb3B0cz17aGVhdG1hcDp7bGF5 b3V0Ont2aXNpYmlsaXR5OiJub25lIn0scGFpbnQ6e319LGdlb2pzb246bCgpfTtpZighcily ZXR1cm4gYzt2YXIgdSxmPVtdLGg9ZS56LHA9ZS5yYWRpdXMsZD1pLmlzQXJyYXlPclR5cGVk QXJyYXkoaCkmJmgubGVuZ3RoLG09aS5pc0FycmF5T3JUeXBlZEFycmF5KHApO2Zvcih1PTA7 dTx0Lmxlbmd0aDt1Kyspe3ZhciBnPXRbdV0sdj1nLmxvbmxhdDtpZih2WzBdIT09cyl7dmFy IHk9e307aWYoZCl7dmFyIHg9Zy56O3kuej14IT09cz94OjB9bSYmKHkucj1uKHBbdV0pJiZw W3VdPjA/K3BbdV06MCksZi5wdXNoKHt0eXBlOiJGZWF0dXJlIixnZW9tZXRyeTp7dHlwZToi UG9pbnQiLGNvb3JkaW5hdGVzOnZ9LHByb3BlcnRpZXM6eX0pfX12YXIgYj1vLmV4dHJhY3RP cHRzKGUpLF89Yi5yZXZlcnNlc2NhbGU/by5mbGlwU2NhbGUoYi5jb2xvcnNjYWxlKTpiLmNv bG9yc2NhbGUsdz1fWzBdWzFdLFQ9WyJpbnRlcnBvbGF0ZSIsWyJsaW5lYXIiXSxbImhlYXRt YXAtZGVuc2l0eSJdLDAsYS5vcGFjaXR5KHcpPDE/dzphLmFkZE9wYWNpdHkodywwKV07Zm9y KHU9MTt1PF8ubGVuZ3RoO3UrKylULnB1c2goX1t1XVswXSxfW3VdWzFdKTt2YXIgaz1bImlu dGVycG9sYXRlIixbImxpbmVhciJdLFsiZ2V0IiwieiJdLGIubWluLDAsYi5tYXgsMV07cmV0 dXJuIGkuZXh0ZW5kRmxhdChjLmhlYXRtYXAucGFpbnQseyJoZWF0bWFwLXdlaWdodCI6ZD9r OjEvKGIubWF4LWIubWluKSwiaGVhdG1hcC1jb2xvciI6VCwiaGVhdG1hcC1yYWRpdXMiOm0/ e3R5cGU6ImlkZW50aXR5Iixwcm9wZXJ0eToiciJ9OmUucmFkaXVzLCJoZWF0bWFwLW9wYWNp dHkiOmUub3BhY2l0eX0pLGMuZ2VvanNvbj17dHlwZToiRmVhdHVyZUNvbGxlY3Rpb24iLGZl YXR1cmVzOmZ9LGMuaGVhdG1hcC5sYXlvdXQudmlzaWJpbGl0eT0idmlzaWJsZSIsY319LHsi Li4vLi4vY29tcG9uZW50cy9jb2xvciI6MzY2LCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2Nh bGUiOjM3OCwiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NDc5LCIuLi8uLi9saWIiOjUw MywiLi4vLi4vbGliL2dlb2pzb25fdXRpbHMiOjQ5NywiZmFzdC1pc251bWVyaWMiOjE5MH1d LDc2NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIi KSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyIpLGE9dCgiLi9h dHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG8pe2Z1bmN0aW9uIHMocixp KXtyZXR1cm4gbi5jb2VyY2UodCxlLGEscixpKX12YXIgbD1zKCJsb24iKXx8W10sYz1zKCJs YXQiKXx8W10sdT1NYXRoLm1pbihsLmxlbmd0aCxjLmxlbmd0aCk7dT8oZS5fbGVuZ3RoPXUs cygieiIpLHMoInJhZGl1cyIpLHMoImJlbG93IikscygidGV4dCIpLHMoImhvdmVydGV4dCIp LHMoImhvdmVydGVtcGxhdGUiKSxpKHQsZSxvLHMse3ByZWZpeDoiIixjTGV0dGVyOiJ6In0p KTplLnZpc2libGU9ITF9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0 cyI6Mzc2LCIuLi8uLi9saWIiOjUwMywiLi9hdHRyaWJ1dGVzIjo3NjJ9XSw3NjY6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJu IHQubG9uPWUubG9uLHQubGF0PWUubGF0LHQuej1lLnosdH19LHt9XSw3Njc6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4 ZXMiKSxpPXQoIi4uL3NjYXR0ZXJtYXBib3gvaG92ZXIiKS5ob3ZlclBvaW50cyxhPXQoIi4u L3NjYXR0ZXJtYXBib3gvaG92ZXIiKS5nZXRFeHRyYVRleHQ7ZS5leHBvcnRzPWZ1bmN0aW9u KHQsZSxyKXt2YXIgbz1pKHQsZSxyKTtpZihvKXt2YXIgcz1vWzBdLGw9cy5jZCxjPWxbMF0u dHJhY2UsdT1sW3MuaW5kZXhdO2lmKGRlbGV0ZSBzLmNvbG9yLCJ6ImluIHUpe3ZhciBmPXMu c3VicGxvdC5tb2NrQXhpcztzLno9dS56LHMuekxhYmVsPW4udGlja1RleHQoZixmLmMybCh1 LnopLCJob3ZlciIpLnRleHR9cmV0dXJuIHMuZXh0cmFUZXh0PWEoYyx1LGxbMF0udC5sYWJl bHMpLFtzXX19fSx7Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo1NTQsIi4uL3NjYXR0 ZXJtYXBib3gvaG92ZXIiOjk5OH1dLDc2ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 IjtlLmV4cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVs dHM6dCgiLi9kZWZhdWx0cyIpLGNvbG9yYmFyOnQoIi4uL2hlYXRtYXAvY29sb3JiYXIiKSxm b3JtYXRMYWJlbHM6dCgiLi4vc2NhdHRlcm1hcGJveC9mb3JtYXRfbGFiZWxzIiksY2FsYzp0 KCIuL2NhbGMiKSxwbG90OnQoIi4vcGxvdCIpLGhvdmVyUG9pbnRzOnQoIi4vaG92ZXIiKSxl dmVudERhdGE6dCgiLi9ldmVudF9kYXRhIiksZ2V0QmVsb3c6ZnVuY3Rpb24odCxlKXtmb3Io dmFyIHI9ZS5nZXRNYXBMYXllcnMoKSxuPTA7bjxyLmxlbmd0aDtuKyspe3ZhciBpPXJbbl0s YT1pLmlkO2lmKCJzeW1ib2wiPT09aS50eXBlJiYic3RyaW5nIj09dHlwZW9mIGEmJi0xPT09 YS5pbmRleE9mKCJwbG90bHktIikpcmV0dXJuIGF9fSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFt ZToiZGVuc2l0eW1hcGJveCIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvbWFwYm94 IiksY2F0ZWdvcmllczpbIm1hcGJveCIsImdsIiwic2hvd0xlZ2VuZCJdLG1ldGE6e2hyX25h bWU6ImRlbnNpdHlfbWFwYm94In19fSx7Ii4uLy4uL3Bsb3RzL21hcGJveCI6NjEzLCIuLi9o ZWF0bWFwL2NvbG9yYmFyIjo3OTUsIi4uL3NjYXR0ZXJtYXBib3gvZm9ybWF0X2xhYmVscyI6 OTk3LCIuL2F0dHJpYnV0ZXMiOjc2MiwiLi9jYWxjIjo3NjMsIi4vZGVmYXVsdHMiOjc2NSwi Li9ldmVudF9kYXRhIjo3NjYsIi4vaG92ZXIiOjc2NywiLi9wbG90Ijo3Njl9XSw3Njk6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9jb252ZXJ0IiksaT10KCIu Li8uLi9wbG90cy9tYXBib3gvY29uc3RhbnRzIikudHJhY2VMYXllclByZWZpeDtmdW5jdGlv biBhKHQsZSl7dGhpcy50eXBlPSJkZW5zaXR5bWFwYm94Iix0aGlzLnN1YnBsb3Q9dCx0aGlz LnVpZD1lLHRoaXMuc291cmNlSWQ9InNvdXJjZS0iK2UsdGhpcy5sYXllckxpc3Q9W1siaGVh dG1hcCIsaStlKyItaGVhdG1hcCJdXSx0aGlzLmJlbG93PW51bGx9dmFyIG89YS5wcm90b3R5 cGU7by51cGRhdGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zdWJwbG90LHI9dGhpcy5sYXll ckxpc3QsaT1uKHQpLGE9ZS5iZWxvd0xvb2t1cFsidHJhY2UtIit0aGlzLnVpZF07ZS5tYXAu Z2V0U291cmNlKHRoaXMuc291cmNlSWQpLnNldERhdGEoaS5nZW9qc29uKSxhIT09dGhpcy5i ZWxvdyYmKHRoaXMuX3JlbW92ZUxheWVycygpLHRoaXMuX2FkZExheWVycyhpLGEpLHRoaXMu YmVsb3c9YSk7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspe3ZhciBzPXJbb10sbD1zWzBd LGM9c1sxXSx1PWlbbF07ZS5zZXRPcHRpb25zKGMsInNldExheW91dFByb3BlcnR5Iix1Lmxh eW91dCksInZpc2libGUiPT09dS5sYXlvdXQudmlzaWJpbGl0eSYmZS5zZXRPcHRpb25zKGMs InNldFBhaW50UHJvcGVydHkiLHUucGFpbnQpfX0sby5fYWRkTGF5ZXJzPWZ1bmN0aW9uKHQs ZSl7Zm9yKHZhciByPXRoaXMuc3VicGxvdCxuPXRoaXMubGF5ZXJMaXN0LGk9dGhpcy5zb3Vy Y2VJZCxhPTA7YTxuLmxlbmd0aDthKyspe3ZhciBvPW5bYV0scz1vWzBdLGw9dFtzXTtyLmFk ZExheWVyKHt0eXBlOnMsaWQ6b1sxXSxzb3VyY2U6aSxsYXlvdXQ6bC5sYXlvdXQscGFpbnQ6 bC5wYWludH0sZSl9fSxvLl9yZW1vdmVMYXllcnM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhp cy5zdWJwbG90Lm1hcCxlPXRoaXMubGF5ZXJMaXN0LHI9ZS5sZW5ndGgtMTtyPj0wO3ItLSl0 LnJlbW92ZUxheWVyKGVbcl1bMV0pfSxvLmRpc3Bvc2U9ZnVuY3Rpb24oKXt2YXIgdD10aGlz LnN1YnBsb3QubWFwO3RoaXMuX3JlbW92ZUxheWVycygpLHQucmVtb3ZlU291cmNlKHRoaXMu c291cmNlSWQpfSxlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLnRyYWNlLGk9 bmV3IGEodCxyLnVpZCksbz1pLnNvdXJjZUlkLHM9bihlKSxsPWkuYmVsb3c9dC5iZWxvd0xv b2t1cFsidHJhY2UtIityLnVpZF07cmV0dXJuIHQubWFwLmFkZFNvdXJjZShvLHt0eXBlOiJn ZW9qc29uIixkYXRhOnMuZ2VvanNvbn0pLGkuX2FkZExheWVycyhzLGwpLGl9fSx7Ii4uLy4u L3Bsb3RzL21hcGJveC9jb25zdGFudHMiOjYxMSwiLi9jb252ZXJ0Ijo3NjR9XSw3NzA6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIik7ZS5leHBv cnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspdFtyXS5pPXI7 bi5tZXJnZUFycmF5KGUudGV4dCx0LCJ0eCIpLG4ubWVyZ2VBcnJheShlLmhvdmVydGV4dCx0 LCJodHgiKTt2YXIgaT1lLm1hcmtlcjtpZihpKXtuLm1lcmdlQXJyYXkoaS5vcGFjaXR5LHQs Im1vIiksbi5tZXJnZUFycmF5KGkuY29sb3IsdCwibWMiKTt2YXIgYT1pLmxpbmU7YSYmKG4u bWVyZ2VBcnJheShhLmNvbG9yLHQsIm1sYyIpLG4ubWVyZ2VBcnJheUNhc3RQb3NpdGl2ZShh LndpZHRoLHQsIm1sdyIpKX19fSx7Ii4uLy4uL2xpYiI6NTAzfV0sNzcxOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuLGk9dCgiLi4vYmFyL2F0dHJpYnV0ZXMiKSxhPXQo Ii4uL3NjYXR0ZXIvYXR0cmlidXRlcyIpLmxpbmUsbz10KCIuLi8uLi9wbG90cy9hdHRyaWJ1 dGVzIikscz10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19mb3JtYXRfYXR0cmlidXRl cyIpLmF4aXNIb3ZlckZvcm1hdCxsPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0 ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsYz10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRy aWJ1dGVzIikudGV4dHRlbXBsYXRlQXR0cnMsdT10KCIuL2NvbnN0YW50cyIpLGY9dCgiLi4v Li4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQsaD10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9y Iik7ZS5leHBvcnRzPXt4OmkueCx4MDppLngwLGR4OmkuZHgseTppLnkseTA6aS55MCxkeTpp LmR5LHhwZXJpb2Q6aS54cGVyaW9kLHlwZXJpb2Q6aS55cGVyaW9kLHhwZXJpb2QwOmkueHBl cmlvZDAseXBlcmlvZDA6aS55cGVyaW9kMCx4cGVyaW9kYWxpZ25tZW50OmkueHBlcmlvZGFs aWdubWVudCx5cGVyaW9kYWxpZ25tZW50OmkueXBlcmlvZGFsaWdubWVudCx4aG92ZXJmb3Jt YXQ6cygieCIpLHlob3ZlcmZvcm1hdDpzKCJ5IiksaG92ZXJ0ZXh0OmkuaG92ZXJ0ZXh0LGhv dmVydGVtcGxhdGU6bCh7fSx7a2V5czp1LmV2ZW50RGF0YUtleXN9KSxob3ZlcmluZm86Zih7 fSxvLmhvdmVyaW5mbyx7ZmxhZ3M6WyJuYW1lIiwieCIsInkiLCJ0ZXh0IiwicGVyY2VudCBp bml0aWFsIiwicGVyY2VudCBwcmV2aW91cyIsInBlcmNlbnQgdG90YWwiXX0pLHRleHRpbmZv Ont2YWxUeXBlOiJmbGFnbGlzdCIsZmxhZ3M6WyJsYWJlbCIsInRleHQiLCJwZXJjZW50IGlu aXRpYWwiLCJwZXJjZW50IHByZXZpb3VzIiwicGVyY2VudCB0b3RhbCIsInZhbHVlIl0sZXh0 cmFzOlsibm9uZSJdLGVkaXRUeXBlOiJwbG90IixhcnJheU9rOiExfSx0ZXh0dGVtcGxhdGU6 Yyh7ZWRpdFR5cGU6InBsb3QifSx7a2V5czp1LmV2ZW50RGF0YUtleXMuY29uY2F0KFsibGFi ZWwiLCJ2YWx1ZSJdKX0pLHRleHQ6aS50ZXh0LHRleHRwb3NpdGlvbjppLnRleHRwb3NpdGlv bixpbnNpZGV0ZXh0YW5jaG9yOmYoe30saS5pbnNpZGV0ZXh0YW5jaG9yLHtkZmx0OiJtaWRk bGUifSksdGV4dGFuZ2xlOmYoe30saS50ZXh0YW5nbGUse2RmbHQ6MH0pLHRleHRmb250Omku dGV4dGZvbnQsaW5zaWRldGV4dGZvbnQ6aS5pbnNpZGV0ZXh0Zm9udCxvdXRzaWRldGV4dGZv bnQ6aS5vdXRzaWRldGV4dGZvbnQsY29uc3RyYWludGV4dDppLmNvbnN0cmFpbnRleHQsY2xp cG9uYXhpczppLmNsaXBvbmF4aXMsb3JpZW50YXRpb246Zih7fSxpLm9yaWVudGF0aW9uLHt9 KSxvZmZzZXQ6Zih7fSxpLm9mZnNldCx7YXJyYXlPazohMX0pLHdpZHRoOmYoe30saS53aWR0 aCx7YXJyYXlPazohMX0pLG1hcmtlcjoobj1mKHt9LGkubWFya2VyKSxkZWxldGUgbi5wYXR0 ZXJuLG4pLGNvbm5lY3Rvcjp7ZmlsbGNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRpdFR5cGU6 InN0eWxlIn0sbGluZTp7Y29sb3I6Zih7fSxhLmNvbG9yLHtkZmx0OmguZGVmYXVsdExpbmV9 KSx3aWR0aDpmKHt9LGEud2lkdGgse2RmbHQ6MCxlZGl0VHlwZToicGxvdCJ9KSxkYXNoOmEu ZGFzaCxlZGl0VHlwZToic3R5bGUifSx2aXNpYmxlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0 OiEwLGVkaXRUeXBlOiJwbG90In0sZWRpdFR5cGU6InBsb3QifSxvZmZzZXRncm91cDppLm9m ZnNldGdyb3VwLGFsaWdubWVudGdyb3VwOmkuYWxpZ25tZW50Z3JvdXB9fSx7Ii4uLy4uL2Nv bXBvbmVudHMvY29sb3IiOjM2NiwiLi4vLi4vbGliL2V4dGVuZCI6NDkzLCIuLi8uLi9wbG90 cy9hdHRyaWJ1dGVzIjo1NTAsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2Zvcm1hdF9h dHRyaWJ1dGVzIjo1NTcsIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjYzMywi Li4vYmFyL2F0dHJpYnV0ZXMiOjY0OCwiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIjo5MjcsIi4v Y29uc3RhbnRzIjo3NzN9XSw3NzI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxpPXQoIi4uLy4uL3Bsb3RzL2Nh cnRlc2lhbi9hbGlnbl9wZXJpb2QiKSxhPXQoIi4vYXJyYXlzX3RvX2NhbGNkYXRhIiksbz10 KCIuLi9zY2F0dGVyL2NhbGNfc2VsZWN0aW9uIikscz10KCIuLi8uLi9jb25zdGFudHMvbnVt ZXJpY2FsIikuQkFETlVNO2Z1bmN0aW9uIGwodCl7cmV0dXJuIHQ9PT1zPzA6dH1lLmV4cG9y dHM9ZnVuY3Rpb24odCxlKXt2YXIgcixjLHUsZixoLHAsZCxtLGc9bi5nZXRGcm9tSWQodCxl LnhheGlzfHwieCIpLHY9bi5nZXRGcm9tSWQodCxlLnlheGlzfHwieSIpOyJoIj09PWUub3Jp ZW50YXRpb24/KHI9Zy5tYWtlQ2FsY2RhdGEoZSwieCIpLHU9di5tYWtlQ2FsY2RhdGEoZSwi eSIpLGY9aShlLHYsInkiLHUpLGg9ISFlLnlwZXJpb2RhbGlnbm1lbnQscD0ieSIpOihyPXYu bWFrZUNhbGNkYXRhKGUsInkiKSx1PWcubWFrZUNhbGNkYXRhKGUsIngiKSxmPWkoZSxnLCJ4 Iix1KSxoPSEhZS54cGVyaW9kYWxpZ25tZW50LHA9IngiKSxjPWYudmFsczt2YXIgeSx4PU1h dGgubWluKGMubGVuZ3RoLHIubGVuZ3RoKSxiPW5ldyBBcnJheSh4KTtmb3IoZS5fYmFzZT1b XSxkPTA7ZDx4O2QrKyl7cltkXTwwJiYocltkXT1zKTt2YXIgXz0hMTtyW2RdIT09cyYmZCsx PHgmJnJbZCsxXSE9PXMmJihfPSEwKSxtPWJbZF09e3A6Y1tkXSxzOnJbZF0sY05leHQ6X30s ZS5fYmFzZVtkXT0tLjUqbS5zLGgmJihiW2RdLm9yaWdfcD11W2RdLGJbZF1bcCsiRW5kIl09 Zi5lbmRzW2RdLGJbZF1bcCsiU3RhcnQiXT1mLnN0YXJ0c1tkXSksZS5pZHMmJihtLmlkPVN0 cmluZyhlLmlkc1tkXSkpLDA9PT1kJiYoYlswXS52VG90YWw9MCksYlswXS52VG90YWwrPWwo bS5zKSxtLmJlZ1I9bChtLnMpL2woYlswXS5zKX1mb3IoZD0wO2Q8eDtkKyspKG09YltkXSku cyE9PXMmJihtLnN1bVI9bS5zL2JbMF0udlRvdGFsLG0uZGlmUj12b2lkIDAhPT15P20ucy95 OjEseT1tLnMpO3JldHVybiBhKGIsZSksbyhiLGUpLGJ9fSx7Ii4uLy4uL2NvbnN0YW50cy9u dW1lcmljYWwiOjQ3OSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2FsaWduX3BlcmlvZCI6NTUx LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NTU0LCIuLi9zY2F0dGVyL2NhbGNfc2Vs ZWN0aW9uIjo5MjksIi4vYXJyYXlzX3RvX2NhbGNkYXRhIjo3NzB9XSw3NzM6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtldmVudERhdGFLZXlzOlsicGVyY2Vu dEluaXRpYWwiLCJwZXJjZW50UHJldmlvdXMiLCJwZXJjZW50VG90YWwiXX19LHt9XSw3NzQ6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vYmFyL2Nyb3NzX3Ry YWNlX2NhbGMiKS5zZXRHcm91cFBvc2l0aW9ucztlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2 YXIgcixpLGE9dC5fZnVsbExheW91dCxvPXQuX2Z1bGxEYXRhLHM9dC5jYWxjZGF0YSxsPWUu eGF4aXMsYz1lLnlheGlzLHU9W10sZj1bXSxoPVtdO2ZvcihpPTA7aTxvLmxlbmd0aDtpKysp e3ZhciBwPW9baV0sZD0iaCI9PT1wLm9yaWVudGF0aW9uOyEwPT09cC52aXNpYmxlJiZwLnhh eGlzPT09bC5faWQmJnAueWF4aXM9PT1jLl9pZCYmImZ1bm5lbCI9PT1wLnR5cGUmJihyPXNb aV0sZD9oLnB1c2gocik6Zi5wdXNoKHIpLHUucHVzaChyKSl9dmFyIG09e21vZGU6YS5mdW5u ZWxtb2RlLG5vcm06YS5mdW5uZWxub3JtLGdhcDphLmZ1bm5lbGdhcCxncm91cGdhcDphLmZ1 bm5lbGdyb3VwZ2FwfTtmb3Iobih0LGwsYyxmLG0pLG4odCxjLGwsaCxtKSxpPTA7aTx1Lmxl bmd0aDtpKyspe3I9dVtpXTtmb3IodmFyIGc9MDtnPHIubGVuZ3RoO2crKylnKzE8ci5sZW5n dGgmJihyW2ddLm5leHRQMD1yW2crMV0ucDAscltnXS5uZXh0UzA9cltnKzFdLnMwLHJbZ10u bmV4dFAxPXJbZysxXS5wMSxyW2ddLm5leHRTMT1yW2crMV0uczEpfX19LHsiLi4vYmFyL2Ny b3NzX3RyYWNlX2NhbGMiOjY1MX1dLDc3NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4uL2Jhci9kZWZhdWx0cyIpLmhhbmRsZUdy b3VwaW5nRGVmYXVsdHMsYT10KCIuLi9iYXIvZGVmYXVsdHMiKS5oYW5kbGVUZXh0LG89dCgi Li4vc2NhdHRlci94eV9kZWZhdWx0cyIpLHM9dCgiLi4vc2NhdHRlci9wZXJpb2RfZGVmYXVs dHMiKSxsPXQoIi4vYXR0cmlidXRlcyIpLGM9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIp O2UuZXhwb3J0cz17c3VwcGx5RGVmYXVsdHM6ZnVuY3Rpb24odCxlLHIsaSl7ZnVuY3Rpb24g dShyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUsbCxyLGkpfWlmKG8odCxlLGksdSkpe3ModCxl LGksdSksdSgieGhvdmVyZm9ybWF0IiksdSgieWhvdmVyZm9ybWF0IiksdSgib3JpZW50YXRp b24iLGUueSYmIWUueD8idiI6ImgiKSx1KCJvZmZzZXQiKSx1KCJ3aWR0aCIpO3ZhciBmPXUo InRleHQiKTt1KCJob3ZlcnRleHQiKSx1KCJob3ZlcnRlbXBsYXRlIik7dmFyIGg9dSgidGV4 dHBvc2l0aW9uIik7YSh0LGUsaSx1LGgse21vZHVsZUhhc1NlbGVjdGVkOiExLG1vZHVsZUhh c1Vuc2VsZWN0ZWQ6ITEsbW9kdWxlSGFzQ29uc3RyYWluOiEwLG1vZHVsZUhhc0NsaXBvbmF4 aXM6ITAsbW9kdWxlSGFzVGV4dGFuZ2xlOiEwLG1vZHVsZUhhc0luc2lkZWFuY2hvcjohMH0p LCJub25lIj09PWUudGV4dHBvc2l0aW9ufHxlLnRleHR0ZW1wbGF0ZXx8dSgidGV4dGluZm8i LEFycmF5LmlzQXJyYXkoZik/InRleHQrdmFsdWUiOiJ2YWx1ZSIpO3ZhciBwPXUoIm1hcmtl ci5jb2xvciIscik7aWYodSgibWFya2VyLmxpbmUuY29sb3IiLGMuZGVmYXVsdExpbmUpLHUo Im1hcmtlci5saW5lLndpZHRoIiksdSgiY29ubmVjdG9yLnZpc2libGUiKSl1KCJjb25uZWN0 b3IuZmlsbGNvbG9yIixmdW5jdGlvbih0KXt2YXIgZT1uLmlzQXJyYXlPclR5cGVkQXJyYXko dCk/IiMwMDAiOnQ7cmV0dXJuIGMuYWRkT3BhY2l0eShlLC41KmMub3BhY2l0eShlKSl9KHAp KSx1KCJjb25uZWN0b3IubGluZS53aWR0aCIpJiYodSgiY29ubmVjdG9yLmxpbmUuY29sb3Ii KSx1KCJjb25uZWN0b3IubGluZS5kYXNoIikpfWVsc2UgZS52aXNpYmxlPSExfSxjcm9zc1Ry YWNlRGVmYXVsdHM6ZnVuY3Rpb24odCxlKXt2YXIgcixhO2Z1bmN0aW9uIG8odCl7cmV0dXJu IG4uY29lcmNlKGEuX2lucHV0LGEsbCx0KX1pZigiZ3JvdXAiPT09ZS5mdW5uZWxtb2RlKWZv cih2YXIgcz0wO3M8dC5sZW5ndGg7cysrKXI9KGE9dFtzXSkuX2lucHV0LGkocixhLGUsbyl9 fX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjozNjYsIi4uLy4uL2xpYiI6NTAzLCIuLi9i YXIvZGVmYXVsdHMiOjY1MiwiLi4vc2NhdHRlci9wZXJpb2RfZGVmYXVsdHMiOjk0NywiLi4v c2NhdHRlci94eV9kZWZhdWx0cyI6OTU0LCIuL2F0dHJpYnV0ZXMiOjc3MX1dLDc3NjpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1 cm4gdC54PSJ4VmFsImluIGU/ZS54VmFsOmUueCx0Lnk9InlWYWwiaW4gZT9lLnlWYWw6ZS55 LCJwZXJjZW50SW5pdGlhbCJpbiBlJiYodC5wZXJjZW50SW5pdGlhbD1lLnBlcmNlbnRJbml0 aWFsKSwicGVyY2VudFByZXZpb3VzImluIGUmJih0LnBlcmNlbnRQcmV2aW91cz1lLnBlcmNl bnRQcmV2aW91cyksInBlcmNlbnRUb3RhbCJpbiBlJiYodC5wZXJjZW50VG90YWw9ZS5wZXJj ZW50VG90YWwpLGUueGEmJih0LnhheGlzPWUueGEpLGUueWEmJih0LnlheGlzPWUueWEpLHR9 fSx7fV0sNzc3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4u L2NvbXBvbmVudHMvY29sb3IiKS5vcGFjaXR5LGk9dCgiLi4vYmFyL2hvdmVyIikuaG92ZXJP bkJhcnMsYT10KCIuLi8uLi9saWIiKS5mb3JtYXRQZXJjZW50O2UuZXhwb3J0cz1mdW5jdGlv bih0LGUscixvLHMpe3ZhciBsPWkodCxlLHIsbyxzKTtpZihsKXt2YXIgYz1sLmNkLHU9Y1sw XS50cmFjZSxmPSJoIj09PXUub3JpZW50YXRpb24saD1jW2wuaW5kZXhdO2xbKGY/IngiOiJ5 IikrIkxhYmVsVmFsIl09aC5zLGwucGVyY2VudEluaXRpYWw9aC5iZWdSLGwucGVyY2VudElu aXRpYWxMYWJlbD1hKGguYmVnUiwxKSxsLnBlcmNlbnRQcmV2aW91cz1oLmRpZlIsbC5wZXJj ZW50UHJldmlvdXNMYWJlbD1hKGguZGlmUiwxKSxsLnBlcmNlbnRUb3RhbD1oLnN1bVIsbC5w ZXJjZW50VG90YWxMYWJlbD1hKGguc3VtUiwxKTt2YXIgcD1oLmhpfHx1LmhvdmVyaW5mbyxk PVtdO2lmKHAmJiJub25lIiE9PXAmJiJza2lwIiE9PXApe3ZhciBtPSJhbGwiPT09cCxnPXAu c3BsaXQoIisiKSx2PWZ1bmN0aW9uKHQpe3JldHVybiBtfHwtMSE9PWcuaW5kZXhPZih0KX07 digicGVyY2VudCBpbml0aWFsIikmJmQucHVzaChsLnBlcmNlbnRJbml0aWFsTGFiZWwrIiBv ZiBpbml0aWFsIiksdigicGVyY2VudCBwcmV2aW91cyIpJiZkLnB1c2gobC5wZXJjZW50UHJl dmlvdXNMYWJlbCsiIG9mIHByZXZpb3VzIiksdigicGVyY2VudCB0b3RhbCIpJiZkLnB1c2go bC5wZXJjZW50VG90YWxMYWJlbCsiIG9mIHRvdGFsIil9cmV0dXJuIGwuZXh0cmFUZXh0PWQu am9pbigiPGJyPiIpLGwuY29sb3I9ZnVuY3Rpb24odCxlKXt2YXIgcj10Lm1hcmtlcixpPWUu bWN8fHIuY29sb3IsYT1lLm1sY3x8ci5saW5lLmNvbG9yLG89ZS5tbHd8fHIubGluZS53aWR0 aDtpZihuKGkpKXJldHVybiBpO2lmKG4oYSkmJm8pcmV0dXJuIGF9KHUsaCksW2xdfX19LHsi Li4vLi4vY29tcG9uZW50cy9jb2xvciI6MzY2LCIuLi8uLi9saWIiOjUwMywiLi4vYmFyL2hv dmVyIjo2NTV9XSw3Nzg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRz PXthdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLGxheW91dEF0dHJpYnV0ZXM6dCgiLi9s YXlvdXRfYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKS5zdXBw bHlEZWZhdWx0cyxjcm9zc1RyYWNlRGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLmNyb3NzVHJh Y2VEZWZhdWx0cyxzdXBwbHlMYXlvdXREZWZhdWx0czp0KCIuL2xheW91dF9kZWZhdWx0cyIp LGNhbGM6dCgiLi9jYWxjIiksY3Jvc3NUcmFjZUNhbGM6dCgiLi9jcm9zc190cmFjZV9jYWxj IikscGxvdDp0KCIuL3Bsb3QiKSxzdHlsZTp0KCIuL3N0eWxlIikuc3R5bGUsaG92ZXJQb2lu dHM6dCgiLi9ob3ZlciIpLGV2ZW50RGF0YTp0KCIuL2V2ZW50X2RhdGEiKSxzZWxlY3RQb2lu dHM6dCgiLi4vYmFyL3NlbGVjdCIpLG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJmdW5uZWwi LGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIpLGNhdGVnb3JpZXM6 WyJiYXItbGlrZSIsImNhcnRlc2lhbiIsInN2ZyIsIm9yaWVudGVkIiwic2hvd0xlZ2VuZCIs Inpvb21TY2FsZSJdLG1ldGE6e319fSx7Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbiI6NTY4LCIu Li9iYXIvc2VsZWN0Ijo2NjAsIi4vYXR0cmlidXRlcyI6NzcxLCIuL2NhbGMiOjc3MiwiLi9j cm9zc190cmFjZV9jYWxjIjo3NzQsIi4vZGVmYXVsdHMiOjc3NSwiLi9ldmVudF9kYXRhIjo3 NzYsIi4vaG92ZXIiOjc3NywiLi9sYXlvdXRfYXR0cmlidXRlcyI6Nzc5LCIuL2xheW91dF9k ZWZhdWx0cyI6NzgwLCIuL3Bsb3QiOjc4MSwiLi9zdHlsZSI6NzgyfV0sNzc5OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17ZnVubmVsbW9kZTp7dmFsVHlwZToi ZW51bWVyYXRlZCIsdmFsdWVzOlsic3RhY2siLCJncm91cCIsIm92ZXJsYXkiXSxkZmx0OiJz dGFjayIsZWRpdFR5cGU6ImNhbGMifSxmdW5uZWxnYXA6e3ZhbFR5cGU6Im51bWJlciIsbWlu OjAsbWF4OjEsZWRpdFR5cGU6ImNhbGMifSxmdW5uZWxncm91cGdhcDp7dmFsVHlwZToibnVt YmVyIixtaW46MCxtYXg6MSxkZmx0OjAsZWRpdFR5cGU6ImNhbGMifX19LHt9XSw3ODA6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIu L2xheW91dF9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgYT0h MTtmdW5jdGlvbiBvKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxpLHIsYSl9Zm9yKHZhciBz PTA7czxyLmxlbmd0aDtzKyspe3ZhciBsPXJbc107aWYobC52aXNpYmxlJiYiZnVubmVsIj09 PWwudHlwZSl7YT0hMDticmVha319YSYmKG8oImZ1bm5lbG1vZGUiKSxvKCJmdW5uZWxnYXAi LC4yKSxvKCJmdW5uZWxncm91cGdhcCIpKX19LHsiLi4vLi4vbGliIjo1MDMsIi4vbGF5b3V0 X2F0dHJpYnV0ZXMiOjc3OX1dLDc4MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCJAcGxvdGx5L2QzIiksaT10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL2NvbXBv bmVudHMvZHJhd2luZyIpLG89dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkJBRE5V TSxzPXQoIi4uL2Jhci9wbG90IiksbD10KCIuLi9iYXIvdW5pZm9ybV90ZXh0IikuY2xlYXJN aW5UZXh0U2l6ZTtmdW5jdGlvbiBjKHQsZSxyLG4pe3ZhciBpPVtdLGE9W10sbz1uP2U6cixz PW4/cjplO3JldHVybiBpWzBdPW8uYzJwKHQuczAsITApLGFbMF09cy5jMnAodC5wMCwhMCks aVsxXT1vLmMycCh0LnMxLCEwKSxhWzFdPXMuYzJwKHQucDEsITApLGlbMl09by5jMnAodC5u ZXh0UzAsITApLGFbMl09cy5jMnAodC5uZXh0UDAsITApLGlbM109by5jMnAodC5uZXh0UzEs ITApLGFbM109cy5jMnAodC5uZXh0UDEsITApLG4/W2ksYV06W2EsaV19ZS5leHBvcnRzPWZ1 bmN0aW9uKHQsZSxyLHUpe3ZhciBmPXQuX2Z1bGxMYXlvdXQ7bCgiZnVubmVsIixmKSxmdW5j dGlvbih0LGUscixzKXt2YXIgbD1lLnhheGlzLHU9ZS55YXhpcztpLm1ha2VUcmFjZUdyb3Vw cyhzLHIsInRyYWNlIGJhcnMiKS5lYWNoKChmdW5jdGlvbihyKXt2YXIgcz1uLnNlbGVjdCh0 aGlzKSxmPXJbMF0udHJhY2UsaD1pLmVuc3VyZVNpbmdsZShzLCJnIiwicmVnaW9ucyIpO2lm KGYuY29ubmVjdG9yJiZmLmNvbm5lY3Rvci52aXNpYmxlKXt2YXIgcD0iaCI9PT1mLm9yaWVu dGF0aW9uLGQ9aC5zZWxlY3RBbGwoImcucmVnaW9uIikuZGF0YShpLmlkZW50aXR5KTtkLmVu dGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgicmVnaW9uIiwhMCksZC5leGl0KCkucmVtb3Zl KCk7dmFyIG09ZC5zaXplKCk7ZC5lYWNoKChmdW5jdGlvbihyLHMpe2lmKHM9PT1tLTF8fHIu Y05leHQpe3ZhciBmPWMocixsLHUscCksaD1mWzBdLGQ9ZlsxXSxnPSIiO2hbMF0hPT1vJiZk WzBdIT09byYmaFsxXSE9PW8mJmRbMV0hPT1vJiZoWzJdIT09byYmZFsyXSE9PW8mJmhbM10h PT1vJiZkWzNdIT09byYmKGcrPXA/Ik0iK2hbMF0rIiwiK2RbMV0rIkwiK2hbMl0rIiwiK2Rb Ml0rIkgiK2hbM10rIkwiK2hbMV0rIiwiK2RbMV0rIloiOiJNIitoWzFdKyIsIitkWzFdKyJM IitoWzJdKyIsIitkWzNdKyJWIitkWzJdKyJMIitoWzFdKyIsIitkWzBdKyJaIiksIiI9PT1n JiYoZz0iTTAsMFoiKSxpLmVuc3VyZVNpbmdsZShuLnNlbGVjdCh0aGlzKSwicGF0aCIpLmF0 dHIoImQiLGcpLmNhbGwoYS5zZXRDbGlwVXJsLGUubGF5ZXJDbGlwSWQsdCl9fSkpfWVsc2Ug aC5yZW1vdmUoKX0pKX0odCxlLHIsdSksZnVuY3Rpb24odCxlLHIsbyl7dmFyIHM9ZS54YXhp cyxsPWUueWF4aXM7aS5tYWtlVHJhY2VHcm91cHMobyxyLCJ0cmFjZSBiYXJzIikuZWFjaCgo ZnVuY3Rpb24ocil7dmFyIG89bi5zZWxlY3QodGhpcyksdT1yWzBdLnRyYWNlLGY9aS5lbnN1 cmVTaW5nbGUobywiZyIsImxpbmVzIik7aWYodS5jb25uZWN0b3ImJnUuY29ubmVjdG9yLnZp c2libGUmJnUuY29ubmVjdG9yLmxpbmUud2lkdGgpe3ZhciBoPSJoIj09PXUub3JpZW50YXRp b24scD1mLnNlbGVjdEFsbCgiZy5saW5lIikuZGF0YShpLmlkZW50aXR5KTtwLmVudGVyKCku YXBwZW5kKCJnIikuY2xhc3NlZCgibGluZSIsITApLHAuZXhpdCgpLnJlbW92ZSgpO3ZhciBk PXAuc2l6ZSgpO3AuZWFjaCgoZnVuY3Rpb24ocixvKXtpZihvPT09ZC0xfHxyLmNOZXh0KXt2 YXIgdT1jKHIscyxsLGgpLGY9dVswXSxwPXVbMV0sbT0iIjt2b2lkIDAhPT1mWzNdJiZ2b2lk IDAhPT1wWzNdJiYoaD8obSs9Ik0iK2ZbMF0rIiwiK3BbMV0rIkwiK2ZbMl0rIiwiK3BbMl0s bSs9Ik0iK2ZbMV0rIiwiK3BbMV0rIkwiK2ZbM10rIiwiK3BbMl0pOihtKz0iTSIrZlsxXSsi LCIrcFsxXSsiTCIrZlsyXSsiLCIrcFszXSxtKz0iTSIrZlsxXSsiLCIrcFswXSsiTCIrZlsy XSsiLCIrcFsyXSkpLCIiPT09bSYmKG09Ik0wLDBaIiksaS5lbnN1cmVTaW5nbGUobi5zZWxl Y3QodGhpcyksInBhdGgiKS5hdHRyKCJkIixtKS5jYWxsKGEuc2V0Q2xpcFVybCxlLmxheWVy Q2xpcElkLHQpfX0pKX1lbHNlIGYucmVtb3ZlKCl9KSl9KHQsZSxyLHUpLHMucGxvdCh0LGUs cix1LHttb2RlOmYuZnVubmVsbW9kZSxub3JtOmYuZnVubmVsbW9kZSxnYXA6Zi5mdW5uZWxn YXAsZ3JvdXBnYXA6Zi5mdW5uZWxncm91cGdhcH0pfX0seyIuLi8uLi9jb21wb25lbnRzL2Ry YXdpbmciOjM4OCwiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NDc5LCIuLi8uLi9saWIi OjUwMywiLi4vYmFyL3Bsb3QiOjY1OSwiLi4vYmFyL3VuaWZvcm1fdGV4dCI6NjY0LCJAcGxv dGx5L2QzIjo1OH1dLDc4MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCJAcGxvdGx5L2QzIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxhPXQoIi4u Ly4uL2NvbXBvbmVudHMvY29sb3IiKSxvPXQoIi4uLy4uL2NvbnN0YW50cy9pbnRlcmFjdGlv bnMiKS5ERVNFTEVDVERJTSxzPXQoIi4uL2Jhci9zdHlsZSIpLGw9dCgiLi4vYmFyL3VuaWZv cm1fdGV4dCIpLnJlc2l6ZVRleHQsYz1zLnN0eWxlVGV4dFBvaW50cztlLmV4cG9ydHM9e3N0 eWxlOmZ1bmN0aW9uKHQsZSxyKXt2YXIgcz1yfHxuLnNlbGVjdCh0KS5zZWxlY3RBbGwoImcu ZnVubmVsbGF5ZXIiKS5zZWxlY3RBbGwoImcudHJhY2UiKTtsKHQscywiZnVubmVsIikscy5z dHlsZSgib3BhY2l0eSIsKGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdLnRyYWNlLm9wYWNpdHl9 KSkscy5lYWNoKChmdW5jdGlvbihlKXt2YXIgcj1uLnNlbGVjdCh0aGlzKSxzPWVbMF0udHJh Y2U7ci5zZWxlY3RBbGwoIi5wb2ludCA+IHBhdGgiKS5lYWNoKChmdW5jdGlvbih0KXtpZigh dC5pc0JsYW5rKXt2YXIgZT1zLm1hcmtlcjtuLnNlbGVjdCh0aGlzKS5jYWxsKGEuZmlsbCx0 Lm1jfHxlLmNvbG9yKS5jYWxsKGEuc3Ryb2tlLHQubWxjfHxlLmxpbmUuY29sb3IpLmNhbGwo aS5kYXNoTGluZSxlLmxpbmUuZGFzaCx0Lm1sd3x8ZS5saW5lLndpZHRoKS5zdHlsZSgib3Bh Y2l0eSIscy5zZWxlY3RlZHBvaW50cyYmIXQuc2VsZWN0ZWQ/bzoxKX19KSksYyhyLHMsdCks ci5zZWxlY3RBbGwoIi5yZWdpb25zIikuZWFjaCgoZnVuY3Rpb24oKXtuLnNlbGVjdCh0aGlz KS5zZWxlY3RBbGwoInBhdGgiKS5zdHlsZSgic3Ryb2tlLXdpZHRoIiwwKS5jYWxsKGEuZmls bCxzLmNvbm5lY3Rvci5maWxsY29sb3IpfSkpLHIuc2VsZWN0QWxsKCIubGluZXMiKS5lYWNo KChmdW5jdGlvbigpe3ZhciB0PXMuY29ubmVjdG9yLmxpbmU7aS5saW5lR3JvdXBTdHlsZShu LnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoInBhdGgiKSx0LndpZHRoLHQuY29sb3IsdC5kYXNo KX0pKX0pKX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjM2NiwiLi4vLi4vY29tcG9u ZW50cy9kcmF3aW5nIjozODgsIi4uLy4uL2NvbnN0YW50cy9pbnRlcmFjdGlvbnMiOjQ3OCwi Li4vYmFyL3N0eWxlIjo2NjIsIi4uL2Jhci91bmlmb3JtX3RleHQiOjY2NCwiQHBsb3RseS9k MyI6NTh9XSw3ODM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4v cGllL2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxhPXQoIi4u Ly4uL3Bsb3RzL2RvbWFpbiIpLmF0dHJpYnV0ZXMsbz10KCIuLi8uLi9wbG90cy90ZW1wbGF0 ZV9hdHRyaWJ1dGVzIikuaG92ZXJ0ZW1wbGF0ZUF0dHJzLHM9dCgiLi4vLi4vcGxvdHMvdGVt cGxhdGVfYXR0cmlidXRlcyIpLnRleHR0ZW1wbGF0ZUF0dHJzLGw9dCgiLi4vLi4vbGliL2V4 dGVuZCIpLmV4dGVuZEZsYXQ7ZS5leHBvcnRzPXtsYWJlbHM6bi5sYWJlbHMsbGFiZWwwOm4u bGFiZWwwLGRsYWJlbDpuLmRsYWJlbCx2YWx1ZXM6bi52YWx1ZXMsbWFya2VyOntjb2xvcnM6 bi5tYXJrZXIuY29sb3JzLGxpbmU6e2NvbG9yOmwoe30sbi5tYXJrZXIubGluZS5jb2xvcix7 ZGZsdDpudWxsfSksd2lkdGg6bCh7fSxuLm1hcmtlci5saW5lLndpZHRoLHtkZmx0OjF9KSxl ZGl0VHlwZToiY2FsYyJ9LGVkaXRUeXBlOiJjYWxjIn0sdGV4dDpuLnRleHQsaG92ZXJ0ZXh0 Om4uaG92ZXJ0ZXh0LHNjYWxlZ3JvdXA6bCh7fSxuLnNjYWxlZ3JvdXAse30pLHRleHRpbmZv Omwoe30sbi50ZXh0aW5mbyx7ZmxhZ3M6WyJsYWJlbCIsInRleHQiLCJ2YWx1ZSIsInBlcmNl bnQiXX0pLHRleHR0ZW1wbGF0ZTpzKHtlZGl0VHlwZToicGxvdCJ9LHtrZXlzOlsibGFiZWwi LCJjb2xvciIsInZhbHVlIiwidGV4dCIsInBlcmNlbnQiXX0pLGhvdmVyaW5mbzpsKHt9LGku aG92ZXJpbmZvLHtmbGFnczpbImxhYmVsIiwidGV4dCIsInZhbHVlIiwicGVyY2VudCIsIm5h bWUiXX0pLGhvdmVydGVtcGxhdGU6byh7fSx7a2V5czpbImxhYmVsIiwiY29sb3IiLCJ2YWx1 ZSIsInRleHQiLCJwZXJjZW50Il19KSx0ZXh0cG9zaXRpb246bCh7fSxuLnRleHRwb3NpdGlv bix7dmFsdWVzOlsiaW5zaWRlIiwibm9uZSJdLGRmbHQ6Imluc2lkZSJ9KSx0ZXh0Zm9udDpu LnRleHRmb250LGluc2lkZXRleHRmb250Om4uaW5zaWRldGV4dGZvbnQsdGl0bGU6e3RleHQ6 bi50aXRsZS50ZXh0LGZvbnQ6bi50aXRsZS5mb250LHBvc2l0aW9uOmwoe30sbi50aXRsZS5w b3NpdGlvbix7dmFsdWVzOlsidG9wIGxlZnQiLCJ0b3AgY2VudGVyIiwidG9wIHJpZ2h0Il0s ZGZsdDoidG9wIGNlbnRlciJ9KSxlZGl0VHlwZToicGxvdCJ9LGRvbWFpbjphKHtuYW1lOiJm dW5uZWxhcmVhIix0cmFjZTohMCxlZGl0VHlwZToiY2FsYyJ9KSxhc3BlY3RyYXRpbzp7dmFs VHlwZToibnVtYmVyIixtaW46MCxkZmx0OjEsZWRpdFR5cGU6InBsb3QifSxiYXNlcmF0aW86 e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDouMzMzLGVkaXRUeXBlOiJwbG90 In19fSx7Ii4uLy4uL2xpYi9leHRlbmQiOjQ5MywiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyI6 NTUwLCIuLi8uLi9wbG90cy9kb21haW4iOjU4NCwiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0 cmlidXRlcyI6NjMzLCIuLi9waWUvYXR0cmlidXRlcyI6OTAxfV0sNzg0OltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL3Bsb3RzIik7ci5uYW1l PSJmdW5uZWxhcmVhIixyLnBsb3Q9ZnVuY3Rpb24odCxlLGksYSl7bi5wbG90QmFzZVBsb3Qo ci5uYW1lLHQsZSxpLGEpfSxyLmNsZWFuPWZ1bmN0aW9uKHQsZSxpLGEpe24uY2xlYW5CYXNl UGxvdChyLm5hbWUsdCxlLGksYSl9fSx7Ii4uLy4uL3Bsb3RzL3Bsb3RzIjo2MTl9XSw3ODU6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vcGllL2NhbGMiKTtl LmV4cG9ydHM9e2NhbGM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5jYWxjKHQsZSl9LGNyb3Nz VHJhY2VDYWxjOmZ1bmN0aW9uKHQpe24uY3Jvc3NUcmFjZUNhbGModCx7dHlwZToiZnVubmVs YXJlYSJ9KX19fSx7Ii4uL3BpZS9jYWxjIjo5MDN9XSw3ODY6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuL2F0dHJpYnV0ZXMiKSxh PXQoIi4uLy4uL3Bsb3RzL2RvbWFpbiIpLmRlZmF1bHRzLG89dCgiLi4vYmFyL2RlZmF1bHRz IikuaGFuZGxlVGV4dCxzPXQoIi4uL3BpZS9kZWZhdWx0cyIpLmhhbmRsZUxhYmVsc0FuZFZh bHVlcztlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbCl7ZnVuY3Rpb24gYyhyLGEpe3JldHVy biBuLmNvZXJjZSh0LGUsaSxyLGEpfXZhciB1PWMoImxhYmVscyIpLGY9YygidmFsdWVzIiks aD1zKHUsZikscD1oLmxlbjtpZihlLl9oYXNMYWJlbHM9aC5oYXNMYWJlbHMsZS5faGFzVmFs dWVzPWguaGFzVmFsdWVzLCFlLl9oYXNMYWJlbHMmJmUuX2hhc1ZhbHVlcyYmKGMoImxhYmVs MCIpLGMoImRsYWJlbCIpKSxwKXtlLl9sZW5ndGg9cCxjKCJtYXJrZXIubGluZS53aWR0aCIp JiZjKCJtYXJrZXIubGluZS5jb2xvciIsbC5wYXBlcl9iZ2NvbG9yKSxjKCJtYXJrZXIuY29s b3JzIiksYygic2NhbGVncm91cCIpO3ZhciBkLG09YygidGV4dCIpLGc9YygidGV4dHRlbXBs YXRlIik7aWYoZ3x8KGQ9YygidGV4dGluZm8iLEFycmF5LmlzQXJyYXkobSk/InRleHQrcGVy Y2VudCI6InBlcmNlbnQiKSksYygiaG92ZXJ0ZXh0IiksYygiaG92ZXJ0ZW1wbGF0ZSIpLGd8 fGQmJiJub25lIiE9PWQpe3ZhciB2PWMoInRleHRwb3NpdGlvbiIpO28odCxlLGwsYyx2LHtt b2R1bGVIYXNTZWxlY3RlZDohMSxtb2R1bGVIYXNVbnNlbGVjdGVkOiExLG1vZHVsZUhhc0Nv bnN0cmFpbjohMSxtb2R1bGVIYXNDbGlwb25heGlzOiExLG1vZHVsZUhhc1RleHRhbmdsZToh MSxtb2R1bGVIYXNJbnNpZGVhbmNob3I6ITF9KX1hKGUsbCxjKSxjKCJ0aXRsZS50ZXh0Iikm JihjKCJ0aXRsZS5wb3NpdGlvbiIpLG4uY29lcmNlRm9udChjLCJ0aXRsZS5mb250IixsLmZv bnQpKSxjKCJhc3BlY3RyYXRpbyIpLGMoImJhc2VyYXRpbyIpfWVsc2UgZS52aXNpYmxlPSEx fX0seyIuLi8uLi9saWIiOjUwMywiLi4vLi4vcGxvdHMvZG9tYWluIjo1ODQsIi4uL2Jhci9k ZWZhdWx0cyI6NjUyLCIuLi9waWUvZGVmYXVsdHMiOjkwNCwiLi9hdHRyaWJ1dGVzIjo3ODN9 XSw3ODc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXttb2R1bGVU eXBlOiJ0cmFjZSIsbmFtZToiZnVubmVsYXJlYSIsYmFzZVBsb3RNb2R1bGU6dCgiLi9iYXNl X3Bsb3QiKSxjYXRlZ29yaWVzOlsicGllLWxpa2UiLCJmdW5uZWxhcmVhIiwic2hvd0xlZ2Vu ZCJdLGF0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksbGF5b3V0QXR0cmlidXRlczp0KCIu L2xheW91dF9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLHN1 cHBseUxheW91dERlZmF1bHRzOnQoIi4vbGF5b3V0X2RlZmF1bHRzIiksY2FsYzp0KCIuL2Nh bGMiKS5jYWxjLGNyb3NzVHJhY2VDYWxjOnQoIi4vY2FsYyIpLmNyb3NzVHJhY2VDYWxjLHBs b3Q6dCgiLi9wbG90Iiksc3R5bGU6dCgiLi9zdHlsZSIpLHN0eWxlT25lOnQoIi4uL3BpZS9z dHlsZV9vbmUiKSxtZXRhOnt9fX0seyIuLi9waWUvc3R5bGVfb25lIjo5MTIsIi4vYXR0cmli dXRlcyI6NzgzLCIuL2Jhc2VfcGxvdCI6Nzg0LCIuL2NhbGMiOjc4NSwiLi9kZWZhdWx0cyI6 Nzg2LCIuL2xheW91dF9hdHRyaWJ1dGVzIjo3ODgsIi4vbGF5b3V0X2RlZmF1bHRzIjo3ODks Ii4vcGxvdCI6NzkwLCIuL3N0eWxlIjo3OTF9XSw3ODg6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiLi4vcGllL2xheW91dF9hdHRyaWJ1dGVzIikuaGlkZGVubGFi ZWxzO2UuZXhwb3J0cz17aGlkZGVubGFiZWxzOm4sZnVubmVsYXJlYWNvbG9yd2F5Ont2YWxU eXBlOiJjb2xvcmxpc3QiLGVkaXRUeXBlOiJjYWxjIn0sZXh0ZW5kZnVubmVsYXJlYWNvbG9y czp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToiY2FsYyJ9fX0seyIuLi9w aWUvbGF5b3V0X2F0dHJpYnV0ZXMiOjkwOH1dLDc4OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMi KTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKHIsYSl7cmV0dXJuIG4uY29l cmNlKHQsZSxpLHIsYSl9cigiaGlkZGVubGFiZWxzIikscigiZnVubmVsYXJlYWNvbG9yd2F5 IixlLmNvbG9yd2F5KSxyKCJleHRlbmRmdW5uZWxhcmVhY29sb3JzIil9fSx7Ii4uLy4uL2xp YiI6NTAzLCIuL2xheW91dF9hdHRyaWJ1dGVzIjo3ODh9XSw3OTA6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiQHBsb3RseS9kMyIpLGk9dCgiLi4vLi4vY29tcG9u ZW50cy9kcmF3aW5nIiksYT10KCIuLi8uLi9saWIiKSxvPWEuc3RyU2NhbGUscz1hLnN0clRy YW5zbGF0ZSxsPXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyIpLGM9dCgiLi4vYmFyL3Bs b3QiKS50b01vdmVJbnNpZGVCYXIsdT10KCIuLi9iYXIvdW5pZm9ybV90ZXh0IiksZj11LnJl Y29yZE1pblRleHRTaXplLGg9dS5jbGVhck1pblRleHRTaXplLHA9dCgiLi4vcGllL2hlbHBl cnMiKSxkPXQoIi4uL3BpZS9wbG90IiksbT1kLmF0dGFjaEZ4SGFuZGxlcnMsZz1kLmRldGVy bWluZUluc2lkZVRleHRGb250LHY9ZC5sYXlvdXRBcmVhcyx5PWQucHJlcmVuZGVyVGl0bGVz LHg9ZC5wb3NpdGlvblRpdGxlT3V0c2lkZSxiPWQuZm9ybWF0U2xpY2VMYWJlbDtmdW5jdGlv biBfKHQsZSl7cmV0dXJuImwiKyhlWzBdLXRbMF0pKyIsIisoZVsxXS10WzFdKX1lLmV4cG9y dHM9ZnVuY3Rpb24odCxlKXt2YXIgcj10Ll9mdWxsTGF5b3V0O2goImZ1bm5lbGFyZWEiLHIp LHkoZSx0KSx2KGUsci5fc2l6ZSksYS5tYWtlVHJhY2VHcm91cHMoci5fZnVubmVsYXJlYWxh eWVyLGUsInRyYWNlIikuZWFjaCgoZnVuY3Rpb24oZSl7dmFyIHU9bi5zZWxlY3QodGhpcyks aD1lWzBdLGQ9aC50cmFjZTshZnVuY3Rpb24odCl7aWYoIXQubGVuZ3RoKXJldHVybjt2YXIg ZT10WzBdLHI9ZS50cmFjZSxuPXIuYXNwZWN0cmF0aW8saT1yLmJhc2VyYXRpbztpPi45OTkm JihpPS45OTkpO3ZhciBhLG89TWF0aC5wb3coaSwyKSxzPWUudlRvdGFsLGw9cyxjPXMqby8o MS1vKS9zO2Z1bmN0aW9uIHUoKXt2YXIgdCxlPXt4OnQ9TWF0aC5zcXJ0KGMpLHk6LXR9O3Jl dHVybltlLngsZS55XX12YXIgZixoLHA9W107Zm9yKHAucHVzaCh1KCkpLGY9dC5sZW5ndGgt MTtmPi0xO2YtLSlpZighKGg9dFtmXSkuaGlkZGVuKXt2YXIgZD1oLnYvbDtjKz1kLHAucHVz aCh1KCkpfXZhciBtPTEvMCxnPS0xLzA7Zm9yKGY9MDtmPHAubGVuZ3RoO2YrKylhPXBbZl0s bT1NYXRoLm1pbihtLGFbMV0pLGc9TWF0aC5tYXgoZyxhWzFdKTtmb3IoZj0wO2Y8cC5sZW5n dGg7ZisrKXBbZl1bMV0tPShnK20pLzI7dmFyIHY9cFtwLmxlbmd0aC0xXVswXSx5PWUucix4 PShnLW0pLzIsYj15L3YsXz15L3gqbjtmb3IoZS5yPV8qeCxmPTA7ZjxwLmxlbmd0aDtmKysp cFtmXVswXSo9YixwW2ZdWzFdKj1fO3ZhciB3PVstKGE9cFswXSlbMF0sYVsxXV0sVD1bYVsw XSxhWzFdXSxrPTA7Zm9yKGY9dC5sZW5ndGgtMTtmPi0xO2YtLSlpZighKGg9dFtmXSkuaGlk ZGVuKXt2YXIgQT1wW2srPTFdWzBdLE09cFtrXVsxXTtoLlRMPVstQSxNXSxoLlRSPVtBLE1d LGguQkw9dyxoLkJSPVQsaC5weG1pZD0oUz1oLlRSLEU9aC5CUixbLjUqKFNbMF0rRVswXSks LjUqKFNbMV0rRVsxXSldKSx3PWguVEwsVD1oLlRSfXZhciBTLEV9KGUpLHUuZWFjaCgoZnVu Y3Rpb24oKXt2YXIgdT1uLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoImcuc2xpY2UiKS5kYXRh KGUpO3UuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJzbGljZSIsITApLHUuZXhpdCgp LnJlbW92ZSgpLHUuZWFjaCgoZnVuY3Rpb24obyxzKXtpZihvLmhpZGRlbiluLnNlbGVjdCh0 aGlzKS5zZWxlY3RBbGwoInBhdGgsZyIpLnJlbW92ZSgpO2Vsc2V7by5wb2ludE51bWJlcj1v Lmksby5jdXJ2ZU51bWJlcj1kLmluZGV4O3ZhciB1PWguY3gsdj1oLmN5LHk9bi5zZWxlY3Qo dGhpcykseD15LnNlbGVjdEFsbCgicGF0aC5zdXJmYWNlIikuZGF0YShbb10pO3guZW50ZXIo KS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJzdXJmYWNlIiwhMCkuc3R5bGUoeyJwb2ludGVy LWV2ZW50cyI6ImFsbCJ9KSx5LmNhbGwobSx0LGUpO3ZhciB3PSJNIisodStvLlRSWzBdKSsi LCIrKHYrby5UUlsxXSkrXyhvLlRSLG8uQlIpK18oby5CUixvLkJMKStfKG8uQkwsby5UTCkr IloiO3guYXR0cigiZCIsdyksYih0LG8saCk7dmFyIFQ9cC5jYXN0T3B0aW9uKGQudGV4dHBv c2l0aW9uLG8ucHRzKSxrPXkuc2VsZWN0QWxsKCJnLnNsaWNldGV4dCIpLmRhdGEoby50ZXh0 JiYibm9uZSIhPT1UP1swXTpbXSk7ay5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInNs aWNldGV4dCIsITApLGsuZXhpdCgpLnJlbW92ZSgpLGsuZWFjaCgoZnVuY3Rpb24oKXt2YXIg aD1hLmVuc3VyZVNpbmdsZShuLnNlbGVjdCh0aGlzKSwidGV4dCIsIiIsKGZ1bmN0aW9uKHQp e3QuYXR0cigiZGF0YS1ub3RleCIsMSl9KSkscD1hLmVuc3VyZVVuaWZvcm1Gb250U2l6ZSh0 LGcoZCxvLHIuZm9udCkpO2gudGV4dChvLnRleHQpLmF0dHIoe2NsYXNzOiJzbGljZXRleHQi LHRyYW5zZm9ybToiIiwidGV4dC1hbmNob3IiOiJtaWRkbGUifSkuY2FsbChpLmZvbnQscCku Y2FsbChsLmNvbnZlcnRUb1RzcGFucyx0KTt2YXIgbSx5LHgsYj1pLmJCb3goaC5ub2RlKCkp LF89TWF0aC5taW4oby5CTFsxXSxvLkJSWzFdKSt2LHc9TWF0aC5tYXgoby5UTFsxXSxvLlRS WzFdKSt2O3k9TWF0aC5tYXgoby5UTFswXSxvLkJMWzBdKSt1LHg9TWF0aC5taW4oby5UUlsw XSxvLkJSWzBdKSt1LChtPWMoeSx4LF8sdyxiLHtpc0hvcml6b250YWw6ITAsY29uc3RyYWlu ZWQ6ITAsYW5nbGU6MCxhbmNob3I6Im1pZGRsZSJ9KSkuZm9udFNpemU9cC5zaXplLGYoZC50 eXBlLG0sciksZVtzXS50cmFuc2Zvcm09bSxoLmF0dHIoInRyYW5zZm9ybSIsYS5nZXRUZXh0 VHJhbnNmb3JtKG0pKX0pKX19KSk7dmFyIHY9bi5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJn LnRpdGxldGV4dCIpLmRhdGEoZC50aXRsZS50ZXh0P1swXTpbXSk7di5lbnRlcigpLmFwcGVu ZCgiZyIpLmNsYXNzZWQoInRpdGxldGV4dCIsITApLHYuZXhpdCgpLnJlbW92ZSgpLHYuZWFj aCgoZnVuY3Rpb24oKXt2YXIgZT1hLmVuc3VyZVNpbmdsZShuLnNlbGVjdCh0aGlzKSwidGV4 dCIsIiIsKGZ1bmN0aW9uKHQpe3QuYXR0cigiZGF0YS1ub3RleCIsMSl9KSksYz1kLnRpdGxl LnRleHQ7ZC5fbWV0YSYmKGM9YS50ZW1wbGF0ZVN0cmluZyhjLGQuX21ldGEpKSxlLnRleHQo YykuYXR0cih7Y2xhc3M6InRpdGxldGV4dCIsdHJhbnNmb3JtOiIiLCJ0ZXh0LWFuY2hvciI6 Im1pZGRsZSJ9KS5jYWxsKGkuZm9udCxkLnRpdGxlLmZvbnQpLmNhbGwobC5jb252ZXJ0VG9U c3BhbnMsdCk7dmFyIHU9eChoLHIuX3NpemUpO2UuYXR0cigidHJhbnNmb3JtIixzKHUueCx1 LnkpK28oTWF0aC5taW4oMSx1LnNjYWxlKSkrcyh1LnR4LHUudHkpKX0pKX0pKX0pKX19LHsi Li4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjozODgsIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9s aWIvc3ZnX3RleHRfdXRpbHMiOjUyOSwiLi4vYmFyL3Bsb3QiOjY1OSwiLi4vYmFyL3VuaWZv cm1fdGV4dCI6NjY0LCIuLi9waWUvaGVscGVycyI6OTA2LCIuLi9waWUvcGxvdCI6OTEwLCJA cGxvdGx5L2QzIjo1OH1dLDc5MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCJAcGxvdGx5L2QzIiksaT10KCIuLi9waWUvc3R5bGVfb25lIiksYT10KCIuLi9iYXIv dW5pZm9ybV90ZXh0IikucmVzaXplVGV4dDtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9 dC5fZnVsbExheW91dC5fZnVubmVsYXJlYWxheWVyLnNlbGVjdEFsbCgiLnRyYWNlIik7YSh0 LGUsImZ1bm5lbGFyZWEiKSxlLmVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0udHJhY2Us cj1uLnNlbGVjdCh0aGlzKTtyLnN0eWxlKHtvcGFjaXR5OmUub3BhY2l0eX0pLHIuc2VsZWN0 QWxsKCJwYXRoLnN1cmZhY2UiKS5lYWNoKChmdW5jdGlvbih0KXtuLnNlbGVjdCh0aGlzKS5j YWxsKGksdCxlKX0pKX0pKX19LHsiLi4vYmFyL3VuaWZvcm1fdGV4dCI6NjY0LCIuLi9waWUv c3R5bGVfb25lIjo5MTIsIkBwbG90bHkvZDMiOjU4fV0sNzkyOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3NjYXR0ZXIvYXR0cmlidXRlcyIpLGk9dCgiLi4v Li4vcGxvdHMvYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVz Iiksbz10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19mb3JtYXRfYXR0cmlidXRlcyIp LmF4aXNIb3ZlckZvcm1hdCxzPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMi KS5ob3ZlcnRlbXBsYXRlQXR0cnMsbD10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1 dGVzIikudGV4dHRlbXBsYXRlQXR0cnMsYz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2Nh bGUvYXR0cmlidXRlcyIpLHU9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQ7ZS5l eHBvcnRzPXUoe3o6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0seDp1 KHt9LG4ueCx7aW1wbGllZEVkaXRzOnt4dHlwZToiYXJyYXkifX0pLHgwOnUoe30sbi54MCx7 aW1wbGllZEVkaXRzOnt4dHlwZToic2NhbGVkIn19KSxkeDp1KHt9LG4uZHgse2ltcGxpZWRF ZGl0czp7eHR5cGU6InNjYWxlZCJ9fSkseTp1KHt9LG4ueSx7aW1wbGllZEVkaXRzOnt5dHlw ZToiYXJyYXkifX0pLHkwOnUoe30sbi55MCx7aW1wbGllZEVkaXRzOnt5dHlwZToic2NhbGVk In19KSxkeTp1KHt9LG4uZHkse2ltcGxpZWRFZGl0czp7eXR5cGU6InNjYWxlZCJ9fSkseHBl cmlvZDp1KHt9LG4ueHBlcmlvZCx7aW1wbGllZEVkaXRzOnt4dHlwZToic2NhbGVkIn19KSx5 cGVyaW9kOnUoe30sbi55cGVyaW9kLHtpbXBsaWVkRWRpdHM6e3l0eXBlOiJzY2FsZWQifX0p LHhwZXJpb2QwOnUoe30sbi54cGVyaW9kMCx7aW1wbGllZEVkaXRzOnt4dHlwZToic2NhbGVk In19KSx5cGVyaW9kMDp1KHt9LG4ueXBlcmlvZDAse2ltcGxpZWRFZGl0czp7eXR5cGU6InNj YWxlZCJ9fSkseHBlcmlvZGFsaWdubWVudDp1KHt9LG4ueHBlcmlvZGFsaWdubWVudCx7aW1w bGllZEVkaXRzOnt4dHlwZToic2NhbGVkIn19KSx5cGVyaW9kYWxpZ25tZW50OnUoe30sbi55 cGVyaW9kYWxpZ25tZW50LHtpbXBsaWVkRWRpdHM6e3l0eXBlOiJzY2FsZWQifX0pLHRleHQ6 e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0saG92ZXJ0ZXh0Ont2YWxU eXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHRyYW5zcG9zZTp7dmFsVHlwZToi Ym9vbGVhbiIsZGZsdDohMSxlZGl0VHlwZToiY2FsYyJ9LHh0eXBlOnt2YWxUeXBlOiJlbnVt ZXJhdGVkIix2YWx1ZXM6WyJhcnJheSIsInNjYWxlZCJdLGVkaXRUeXBlOiJjYWxjK2NsZWFy QXhpc1R5cGVzIn0seXR5cGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImFycmF5 Iiwic2NhbGVkIl0sZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifSx6c21vb3RoOnt2 YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJmYXN0IiwiYmVzdCIsITFdLGRmbHQ6ITEs ZWRpdFR5cGU6ImNhbGMifSxob3Zlcm9uZ2Fwczp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDoh MCxlZGl0VHlwZToibm9uZSJ9LGNvbm5lY3RnYXBzOnt2YWxUeXBlOiJib29sZWFuIixlZGl0 VHlwZToiY2FsYyJ9LHhnYXA6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDowLG1pbjowLGVkaXRU eXBlOiJwbG90In0seWdhcDp7dmFsVHlwZToibnVtYmVyIixkZmx0OjAsbWluOjAsZWRpdFR5 cGU6InBsb3QifSx4aG92ZXJmb3JtYXQ6bygieCIpLHlob3ZlcmZvcm1hdDpvKCJ5Iiksemhv dmVyZm9ybWF0Om8oInoiLDEpLGhvdmVydGVtcGxhdGU6cygpLHRleHR0ZW1wbGF0ZTpsKHth cnJheU9rOiExLGVkaXRUeXBlOiJwbG90In0se2tleXM6WyJ4IiwieSIsInoiLCJ0ZXh0Il19 KSx0ZXh0Zm9udDphKHtlZGl0VHlwZToicGxvdCIsYXV0b1NpemU6ITAsYXV0b0NvbG9yOiEw LGNvbG9yRWRpdFR5cGU6InN0eWxlIn0pLHNob3dsZWdlbmQ6dSh7fSxpLnNob3dsZWdlbmQs e2RmbHQ6ITF9KX0se3RyYW5zZm9ybXM6dm9pZCAwfSxjKCIiLHtjTGV0dGVyOiJ6IixhdXRv Q29sb3JEZmx0OiExfSkpfSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1 dGVzIjozNzMsIi4uLy4uL2xpYi9leHRlbmQiOjQ5MywiLi4vLi4vcGxvdHMvYXR0cmlidXRl cyI6NTUwLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19mb3JtYXRfYXR0cmlidXRlcyI6 NTU3LCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiOjU4NSwiLi4vLi4vcGxvdHMvdGVt cGxhdGVfYXR0cmlidXRlcyI6NjMzLCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiOjkyN31dLDc5 MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9yZWdpc3Ry eSIpLGk9dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIp LG89dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2FsaWduX3BlcmlvZCIpLHM9dCgiLi4vaGlz dG9ncmFtMmQvY2FsYyIpLGw9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMi KSxjPXQoIi4vY29udmVydF9jb2x1bW5feHl6IiksdT10KCIuL2NsZWFuXzJkX2FycmF5Iiks Zj10KCIuL2ludGVycDJkIiksaD10KCIuL2ZpbmRfZW1wdGllcyIpLHA9dCgiLi9tYWtlX2Jv dW5kX2FycmF5IiksZD10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIikuQkFETlVNO2Z1 bmN0aW9uIG0odCl7Zm9yKHZhciBlPVtdLHI9dC5sZW5ndGgsbj0wO248cjtuKyspe3ZhciBp PXRbbl07aSE9PWQmJmUucHVzaChpKX1yZXR1cm4gZX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxl KXt2YXIgcixnLHYseSx4LGIsXyx3LFQsayxBLE09YS5nZXRGcm9tSWQodCxlLnhheGlzfHwi eCIpLFM9YS5nZXRGcm9tSWQodCxlLnlheGlzfHwieSIpLEU9bi50cmFjZUlzKGUsImNvbnRv dXIiKSxMPW4udHJhY2VJcyhlLCJoaXN0b2dyYW0iKSxDPW4udHJhY2VJcyhlLCJnbDJkIiks UD1FPyJiZXN0IjplLnpzbW9vdGg7aWYoTS5fbWluRHRpY2s9MCxTLl9taW5EdGljaz0wLEwp eT0oQT1zKHQsZSkpLm9yaWdfeCxyPUEueCxnPUEueDAsdj1BLmR4LHc9QS5vcmlnX3kseD1B LnksYj1BLnkwLF89QS5keSxUPUEuejtlbHNle3ZhciBJPWUuejtpLmlzQXJyYXkxRChJKT8o YyhlLE0sUywieCIsInkiLFsieiJdKSxyPWUuX3gseD1lLl95LEk9ZS5feik6KHk9ZS54P00u bWFrZUNhbGNkYXRhKGUsIngiKTpbXSx3PWUueT9TLm1ha2VDYWxjZGF0YShlLCJ5Iik6W10s cj1vKGUsTSwieCIseSkudmFscyx4PW8oZSxTLCJ5Iix3KS52YWxzLGUuX3g9cixlLl95PXgp LGc9ZS54MCx2PWUuZHgsYj1lLnkwLF89ZS5keSxUPXUoSSxlLE0sUyl9ZnVuY3Rpb24gTyh0 KXtQPWUuX2lucHV0LnpzbW9vdGg9ZS56c21vb3RoPSExLGkud2FybignY2Fubm90IHVzZSB6 c21vb3RoOiAiZmFzdCI6ICcrdCl9aWYoKE0ucmFuZ2VicmVha3N8fFMucmFuZ2VicmVha3Mp JiYoVD1mdW5jdGlvbih0LGUscil7Zm9yKHZhciBuPVtdLGk9LTEsYT0wO2E8ci5sZW5ndGg7 YSsrKWlmKGVbYV0hPT1kKXtpKyssbltpXT1bXTtmb3IodmFyIG89MDtvPHJbYV0ubGVuZ3Ro O28rKyl0W29dIT09ZCYmbltpXS5wdXNoKHJbYV1bb10pfXJldHVybiBufShyLHgsVCksTHx8 KHI9bShyKSx4PW0oeCksZS5feD1yLGUuX3k9eCkpLEx8fCFFJiYhZS5jb25uZWN0Z2Fwc3x8 KGUuX2VtcHR5cG9pbnRzPWgoVCksZihULGUuX2VtcHR5cG9pbnRzKSksImZhc3QiPT09UClp ZigibG9nIj09PU0udHlwZXx8ImxvZyI9PT1TLnR5cGUpTygibG9nIGF4aXMgZm91bmQiKTtl bHNlIGlmKCFMKXtpZihyLmxlbmd0aCl7dmFyIHo9KHJbci5sZW5ndGgtMV0tclswXSkvKHIu bGVuZ3RoLTEpLEQ9TWF0aC5hYnMoei8xMDApO2ZvcihrPTA7azxyLmxlbmd0aC0xO2srKylp ZihNYXRoLmFicyhyW2srMV0tcltrXS16KT5EKXtPKCJ4IHNjYWxlIGlzIG5vdCBsaW5lYXIi KTticmVha319aWYoeC5sZW5ndGgmJiJmYXN0Ij09PVApe3ZhciBSPSh4W3gubGVuZ3RoLTFd LXhbMF0pLyh4Lmxlbmd0aC0xKSxGPU1hdGguYWJzKFIvMTAwKTtmb3Ioaz0wO2s8eC5sZW5n dGgtMTtrKyspaWYoTWF0aC5hYnMoeFtrKzFdLXhba10tUik+Ril7TygieSBzY2FsZSBpcyBu b3QgbGluZWFyIik7YnJlYWt9fX12YXIgQj1pLm1heFJvd0xlbmd0aChUKSxOPSJzY2FsZWQi PT09ZS54dHlwZT8iIjpyLGo9cChlLE4sZyx2LEIsTSksVT0ic2NhbGVkIj09PWUueXR5cGU/ IiI6eCxWPXAoZSxVLGIsXyxULmxlbmd0aCxTKTtDfHwoZS5fZXh0cmVtZXNbTS5faWRdPWEu ZmluZEV4dHJlbWVzKE0saiksZS5fZXh0cmVtZXNbUy5faWRdPWEuZmluZEV4dHJlbWVzKFMs VikpO3ZhciBIPXt4OmoseTpWLHo6VCx0ZXh0OmUuX3RleHR8fGUudGV4dCxob3ZlcnRleHQ6 ZS5faG92ZXJ0ZXh0fHxlLmhvdmVydGV4dH07aWYoZS54cGVyaW9kYWxpZ25tZW50JiZ5JiYo SC5vcmlnX3g9eSksZS55cGVyaW9kYWxpZ25tZW50JiZ3JiYoSC5vcmlnX3k9dyksTiYmTi5s ZW5ndGg9PT1qLmxlbmd0aC0xJiYoSC54Q2VudGVyPU4pLFUmJlUubGVuZ3RoPT09Vi5sZW5n dGgtMSYmKEgueUNlbnRlcj1VKSxMJiYoSC54UmFuZ2VzPUEueFJhbmdlcyxILnlSYW5nZXM9 QS55UmFuZ2VzLEgucHRzPUEucHRzKSxFfHxsKHQsZSx7dmFsczpULGNMZXR0ZXI6InoifSks RSYmZS5jb250b3VycyYmImhlYXRtYXAiPT09ZS5jb250b3Vycy5jb2xvcmluZyl7dmFyIHE9 e3R5cGU6ImNvbnRvdXIiPT09ZS50eXBlPyJoZWF0bWFwIjoiaGlzdG9ncmFtMmQiLHhjYWxl bmRhcjplLnhjYWxlbmRhcix5Y2FsZW5kYXI6ZS55Y2FsZW5kYXJ9O0gueGZpbGw9cChxLE4s Zyx2LEIsTSksSC55ZmlsbD1wKHEsVSxiLF8sVC5sZW5ndGgsUyl9cmV0dXJuW0hdfX0seyIu Li8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyI6Mzc0LCIuLi8uLi9jb25zdGFudHMv bnVtZXJpY2FsIjo0NzksIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4v YWxpZ25fcGVyaW9kIjo1NTEsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo1NTQsIi4u Ly4uL3JlZ2lzdHJ5Ijo2MzgsIi4uL2hpc3RvZ3JhbTJkL2NhbGMiOjgyNiwiLi9jbGVhbl8y ZF9hcnJheSI6Nzk0LCIuL2NvbnZlcnRfY29sdW1uX3h5eiI6Nzk2LCIuL2ZpbmRfZW1wdGll cyI6Nzk4LCIuL2ludGVycDJkIjo4MDEsIi4vbWFrZV9ib3VuZF9hcnJheSI6ODAzfV0sNzk0 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmlj IiksaT10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiKS5C QUROVU07ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG8pe3ZhciBzLGwsYyx1LGYsaDtmdW5j dGlvbiBwKHQpe2lmKG4odCkpcmV0dXJuK3R9aWYoZSYmZS50cmFuc3Bvc2Upe2ZvcihzPTAs Zj0wO2Y8dC5sZW5ndGg7ZisrKXM9TWF0aC5tYXgocyx0W2ZdLmxlbmd0aCk7aWYoMD09PXMp cmV0dXJuITE7Yz1mdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGh9LHU9ZnVuY3Rpb24odCxl LHIpe3JldHVybih0W3JdfHxbXSlbZV19fWVsc2Ugcz10Lmxlbmd0aCxjPWZ1bmN0aW9uKHQs ZSl7cmV0dXJuIHRbZV0ubGVuZ3RofSx1PWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4odFtlXXx8 W10pW3JdfTt2YXIgZD1mdW5jdGlvbih0LGUscil7cmV0dXJuIGU9PT1hfHxyPT09YT9hOnUo dCxlLHIpfTtmdW5jdGlvbiBtKHQpe2lmKGUmJiJjYXJwZXQiIT09ZS50eXBlJiYiY29udG91 cmNhcnBldCIhPT1lLnR5cGUmJnQmJiJjYXRlZ29yeSI9PT10LnR5cGUmJmVbIl8iK3QuX2lk LmNoYXJBdCgwKV0ubGVuZ3RoKXt2YXIgcj10Ll9pZC5jaGFyQXQoMCksbj17fSxvPWVbIl8i K3IrIkNhdGVnb3J5TWFwIl18fGVbcl07Zm9yKGY9MDtmPG8ubGVuZ3RoO2YrKyluW29bZl1d PWY7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciByPW5bdC5fY2F0ZWdvcmllc1tlXV07cmV0dXJu IHIrMT9yOmF9fXJldHVybiBpLmlkZW50aXR5fXZhciBnPW0ociksdj1tKG8pO28mJiJjYXRl Z29yeSI9PT1vLnR5cGUmJihzPW8uX2NhdGVnb3JpZXMubGVuZ3RoKTt2YXIgeT1uZXcgQXJy YXkocyk7Zm9yKGY9MDtmPHM7ZisrKWZvcihsPXImJiJjYXRlZ29yeSI9PT1yLnR5cGU/ci5f Y2F0ZWdvcmllcy5sZW5ndGg6Yyh0LGYpLHlbZl09bmV3IEFycmF5KGwpLGg9MDtoPGw7aCsr KXlbZl1baF09cChkKHQsdihmKSxnKGgpKSk7cmV0dXJuIHl9fSx7Ii4uLy4uL2NvbnN0YW50 cy9udW1lcmljYWwiOjQ3OSwiLi4vLi4vbGliIjo1MDMsImZhc3QtaXNudW1lcmljIjoxOTB9 XSw3OTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXttaW46Inpt aW4iLG1heDoiem1heCJ9fSx7fV0sNzk2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIp LkJBRE5VTSxhPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9hbGlnbl9wZXJpb2QiKTtlLmV4 cG9ydHM9ZnVuY3Rpb24odCxlLHIsbyxzLGwpe3ZhciBjPXQuX2xlbmd0aCx1PWUubWFrZUNh bGNkYXRhKHQsbyksZj1yLm1ha2VDYWxjZGF0YSh0LHMpO3U9YSh0LGUsbyx1KS52YWxzLGY9 YSh0LHIscyxmKS52YWxzO3ZhciBoLHAsZCxtLGc9dC50ZXh0LHY9dm9pZCAwIT09ZyYmbi5p c0FycmF5MUQoZykseT10LmhvdmVydGV4dCx4PXZvaWQgMCE9PXkmJm4uaXNBcnJheTFEKHkp LGI9bi5kaXN0aW5jdFZhbHModSksXz1iLnZhbHMsdz1uLmRpc3RpbmN0VmFscyhmKSxUPXcu dmFscyxrPVtdLEE9VC5sZW5ndGgsTT1fLmxlbmd0aDtmb3IoaD0wO2g8bC5sZW5ndGg7aCsr KWtbaF09bi5pbml0MmRBcnJheShBLE0pO3YmJihkPW4uaW5pdDJkQXJyYXkoQSxNKSkseCYm KG09bi5pbml0MmRBcnJheShBLE0pKTt2YXIgUz1uLmluaXQyZEFycmF5KEEsTSk7Zm9yKGg9 MDtoPGM7aCsrKWlmKHVbaF0hPT1pJiZmW2hdIT09aSl7dmFyIEU9bi5maW5kQmluKHVbaF0r Yi5taW5EaWZmLzIsXyksTD1uLmZpbmRCaW4oZltoXSt3Lm1pbkRpZmYvMixUKTtmb3IocD0w O3A8bC5sZW5ndGg7cCsrKXt2YXIgQz10W2xbcF1dO2tbcF1bTF1bRV09Q1toXSxTW0xdW0Vd PWh9diYmKGRbTF1bRV09Z1toXSkseCYmKG1bTF1bRV09eVtoXSl9Zm9yKHRbIl8iK29dPV8s dFsiXyIrc109VCxwPTA7cDxsLmxlbmd0aDtwKyspdFsiXyIrbFtwXV09a1twXTt2JiYodC5f dGV4dD1kKSx4JiYodC5faG92ZXJ0ZXh0PW0pLGUmJiJjYXRlZ29yeSI9PT1lLnR5cGUmJih0 WyJfIitvKyJDYXRlZ29yeU1hcCJdPV8ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fY2F0 ZWdvcmllc1t0XX0pKSksciYmImNhdGVnb3J5Ij09PXIudHlwZSYmKHRbIl8iK3MrIkNhdGVn b3J5TWFwIl09VC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiByLl9jYXRlZ29yaWVzW3RdfSkp KSx0Ll9hZnRlcjJiZWZvcmU9U319LHsiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NDc5 LCIuLi8uLi9saWIiOjUwMywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2FsaWduX3BlcmlvZCI6 NTUxfV0sNzk3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4u L2xpYiIpLGk9dCgiLi94eXpfZGVmYXVsdHMiKSxhPXQoIi4vbGFiZWxfZGVmYXVsdHMiKSxv PXQoIi4uL3NjYXR0ZXIvcGVyaW9kX2RlZmF1bHRzIikscz10KCIuL3N0eWxlX2RlZmF1bHRz IiksbD10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMiKSxjPXQoIi4v YXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscix1KXtmdW5jdGlvbiBmKHIs aSl7cmV0dXJuIG4uY29lcmNlKHQsZSxjLHIsaSl9aSh0LGUsZix1KT8obyh0LGUsdSxmKSxm KCJ4aG92ZXJmb3JtYXQiKSxmKCJ5aG92ZXJmb3JtYXQiKSxmKCJ0ZXh0IiksZigiaG92ZXJ0 ZXh0IiksZigiaG92ZXJ0ZW1wbGF0ZSIpLGEoZix1KSxzKHQsZSxmLHUpLGYoImhvdmVyb25n YXBzIiksZigiY29ubmVjdGdhcHMiLG4uaXNBcnJheTFEKGUueikmJiExIT09ZS56c21vb3Ro KSxsKHQsZSx1LGYse3ByZWZpeDoiIixjTGV0dGVyOiJ6In0pKTplLnZpc2libGU9ITF9fSx7 Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyI6Mzc2LCIuLi8uLi9saWIi OjUwMywiLi4vc2NhdHRlci9wZXJpb2RfZGVmYXVsdHMiOjk0NywiLi9hdHRyaWJ1dGVzIjo3 OTIsIi4vbGFiZWxfZGVmYXVsdHMiOjgwMiwiLi9zdHlsZV9kZWZhdWx0cyI6ODA2LCIuL3h5 el9kZWZhdWx0cyI6ODA3fV0sNzk4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIi4uLy4uL2xpYiIpLm1heFJvd0xlbmd0aDtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7 dmFyIGUscixpLGEsbyxzLGwsYyx1PVtdLGY9e30saD1bXSxwPXRbMF0sZD1bXSxtPVswLDAs MF0sZz1uKHQpO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspZm9yKGU9ZCxkPXAscD10W3IrMV18 fFtdLGk9MDtpPGc7aSsrKXZvaWQgMD09PWRbaV0mJigocz0odm9pZCAwIT09ZFtpLTFdPzE6 MCkrKHZvaWQgMCE9PWRbaSsxXT8xOjApKyh2b2lkIDAhPT1lW2ldPzE6MCkrKHZvaWQgMCE9 PXBbaV0/MTowKSk/KDA9PT1yJiZzKyssMD09PWkmJnMrKyxyPT09dC5sZW5ndGgtMSYmcysr LGk9PT1kLmxlbmd0aC0xJiZzKyssczw0JiYoZltbcixpXV09W3IsaSxzXSksdS5wdXNoKFty LGksc10pKTpoLnB1c2goW3IsaV0pKTtmb3IoO2gubGVuZ3RoOyl7Zm9yKGw9e30sYz0hMSxv PWgubGVuZ3RoLTE7bz49MDtvLS0pKHM9KChmW1socj0oYT1oW29dKVswXSktMSxpPWFbMV1d XXx8bSlbMl0rKGZbW3IrMSxpXV18fG0pWzJdKyhmW1tyLGktMV1dfHxtKVsyXSsoZltbcixp KzFdXXx8bSlbMl0pLzIwKSYmKGxbYV09W3IsaSxzXSxoLnNwbGljZShvLDEpLGM9ITApO2lm KCFjKXRocm93ImZpbmRFbXB0aWVzIGl0ZXJhdGVkIHdpdGggbm8gbmV3IG5laWdoYm9ycyI7 Zm9yKGEgaW4gbClmW2FdPWxbYV0sdS5wdXNoKGxbYV0pfXJldHVybiB1LnNvcnQoKGZ1bmN0 aW9uKHQsZSl7cmV0dXJuIGVbMl0tdFsyXX0pKX19LHsiLi4vLi4vbGliIjo1MDN9XSw3OTk6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50 cy9meCIpLGk9dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhl cyIpLG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIikuZXh0cmFjdE9wdHM7ZS5l eHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHMsbCl7bHx8KGw9e30pO3ZhciBjLHUsZixoLHA9bC5p c0NvbnRvdXIsZD10LmNkWzBdLG09ZC50cmFjZSxnPXQueGEsdj10LnlhLHk9ZC54LHg9ZC55 LGI9ZC56LF89ZC54Q2VudGVyLHc9ZC55Q2VudGVyLFQ9ZC56bWFzayxrPW0uemhvdmVyZm9y bWF0LEE9eSxNPXg7aWYoITEhPT10LmluZGV4KXt0cnl7Zj1NYXRoLnJvdW5kKHQuaW5kZXhb MV0pLGg9TWF0aC5yb3VuZCh0LmluZGV4WzBdKX1jYXRjaChlKXtyZXR1cm4gdm9pZCBpLmVy cm9yKCJFcnJvciBob3ZlcmluZyBvbiBoZWF0bWFwLCBwb2ludE51bWJlciBtdXN0IGJlIFty b3csY29sXSwgZm91bmQ6Iix0LmluZGV4KX1pZihmPDB8fGY+PWJbMF0ubGVuZ3RofHxoPDB8 fGg+Yi5sZW5ndGgpcmV0dXJufWVsc2V7aWYobi5pbmJveChlLXlbMF0sZS15W3kubGVuZ3Ro LTFdLDApPjB8fG4uaW5ib3goci14WzBdLHIteFt4Lmxlbmd0aC0xXSwwKT4wKXJldHVybjtp ZihwKXt2YXIgUztmb3IoQT1bMip5WzBdLXlbMV1dLFM9MTtTPHkubGVuZ3RoO1MrKylBLnB1 c2goKHlbU10reVtTLTFdKS8yKTtmb3IoQS5wdXNoKFsyKnlbeS5sZW5ndGgtMV0teVt5Lmxl bmd0aC0yXV0pLE09WzIqeFswXS14WzFdXSxTPTE7Uzx4Lmxlbmd0aDtTKyspTS5wdXNoKCh4 W1NdK3hbUy0xXSkvMik7TS5wdXNoKFsyKnhbeC5sZW5ndGgtMV0teFt4Lmxlbmd0aC0yXV0p fWY9TWF0aC5tYXgoMCxNYXRoLm1pbihBLmxlbmd0aC0yLGkuZmluZEJpbihlLEEpKSksaD1N YXRoLm1heCgwLE1hdGgubWluKE0ubGVuZ3RoLTIsaS5maW5kQmluKHIsTSkpKX12YXIgRSxM LEM9Zy5jMnAoeVtmXSksUD1nLmMycCh5W2YrMV0pLEk9di5jMnAoeFtoXSksTz12LmMycCh4 W2grMV0pO3A/KEU9ZC5vcmlnX3h8fHksTD1kLm9yaWdfeXx8eCxQPUMsYz1FW2ZdLE89SSx1 PUxbaF0pOihFPWQub3JpZ194fHxffHx5LEw9ZC5vcmlnX3l8fHd8fHgsYz1fP0VbZl06KEVb Zl0rRVtmKzFdKS8yLHU9dz9MW2hdOihMW2hdK0xbaCsxXSkvMixnJiYiY2F0ZWdvcnkiPT09 Zy50eXBlJiYoYz15W2ZdKSx2JiYiY2F0ZWdvcnkiPT09di50eXBlJiYodT14W2hdKSxtLnpz bW9vdGgmJihDPVA9Zy5jMnAoYyksST1PPXYuYzJwKHUpKSk7dmFyIHo9YltoXVtmXTtpZihU JiYhVFtoXVtmXSYmKHo9dm9pZCAwKSx2b2lkIDAhPT16fHxtLmhvdmVyb25nYXBzKXt2YXIg RDtBcnJheS5pc0FycmF5KGQuaG92ZXJ0ZXh0KSYmQXJyYXkuaXNBcnJheShkLmhvdmVydGV4 dFtoXSk/RD1kLmhvdmVydGV4dFtoXVtmXTpBcnJheS5pc0FycmF5KGQudGV4dCkmJkFycmF5 LmlzQXJyYXkoZC50ZXh0W2hdKSYmKEQ9ZC50ZXh0W2hdW2ZdKTt2YXIgUj1vKG0pLEY9e3R5 cGU6ImxpbmVhciIscmFuZ2U6W1IubWluLFIubWF4XSxob3ZlcmZvcm1hdDprLF9zZXBhcmF0 b3JzOmcuX3NlcGFyYXRvcnMsX251bUZvcm1hdDpnLl9udW1Gb3JtYXR9LEI9YS50aWNrVGV4 dChGLHosImhvdmVyIikudGV4dDtyZXR1cm5baS5leHRlbmRGbGF0KHQse2luZGV4Om0uX2Fm dGVyMmJlZm9yZT9tLl9hZnRlcjJiZWZvcmVbaF1bZl06W2gsZl0sZGlzdGFuY2U6dC5tYXhI b3ZlckRpc3RhbmNlLHNwaWtlRGlzdGFuY2U6dC5tYXhTcGlrZURpc3RhbmNlLHgwOkMseDE6 UCx5MDpJLHkxOk8seExhYmVsVmFsOmMseUxhYmVsVmFsOnUsekxhYmVsVmFsOnosekxhYmVs OkIsdGV4dDpEfSldfX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjozNzgsIi4u Ly4uL2NvbXBvbmVudHMvZngiOjQwNiwiLi4vLi4vbGliIjo1MDMsIi4uLy4uL3Bsb3RzL2Nh cnRlc2lhbi9heGVzIjo1NTR9XSw4MDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRz OnQoIi4vZGVmYXVsdHMiKSxjYWxjOnQoIi4vY2FsYyIpLHBsb3Q6dCgiLi9wbG90IiksY29s b3JiYXI6dCgiLi9jb2xvcmJhciIpLHN0eWxlOnQoIi4vc3R5bGUiKSxob3ZlclBvaW50czp0 KCIuL2hvdmVyIiksbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6ImhlYXRtYXAiLGJhc2VQbG90 TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIpLGNhdGVnb3JpZXM6WyJjYXJ0ZXNp YW4iLCJzdmciLCIyZE1hcCIsInNob3dMZWdlbmQiXSxtZXRhOnt9fX0seyIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4iOjU2OCwiLi9hdHRyaWJ1dGVzIjo3OTIsIi4vY2FsYyI6NzkzLCIuL2Nv bG9yYmFyIjo3OTUsIi4vZGVmYXVsdHMiOjc5NywiLi9ob3ZlciI6Nzk5LCIuL3Bsb3QiOjgw NCwiLi9zdHlsZSI6ODA1fV0sODAxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIi4uLy4uL2xpYiIpLGk9W1stMSwwXSxbMSwwXSxbMCwtMV0sWzAsMV1dO2Z1bmN0 aW9uIGEodCl7cmV0dXJuLjUtLjI1Kk1hdGgubWluKDEsLjUqdCl9ZnVuY3Rpb24gbyh0LGUs cil7dmFyIG4sYSxvLHMsbCxjLHUsZixoLHAsZCxtLGcsdj0wO2ZvcihzPTA7czxlLmxlbmd0 aDtzKyspe2ZvcihhPShuPWVbc10pWzBdLG89blsxXSxkPXRbYV1bb10scD0wLGg9MCxsPTA7 bDw0O2wrKykodT10W2ErKGM9aVtsXSlbMF1dKSYmdm9pZCAwIT09KGY9dVtvK2NbMV1dKSYm KDA9PT1wP209Zz1mOihtPU1hdGgubWluKG0sZiksZz1NYXRoLm1heChnLGYpKSxoKysscCs9 Zik7aWYoMD09PWgpdGhyb3ciaXRlcmF0ZUludGVycDJkIG9yZGVyIGlzIHdyb25nOiBubyBk ZWZpbmVkIG5laWdoYm9ycyI7dFthXVtvXT1wL2gsdm9pZCAwPT09ZD9oPDQmJih2PTEpOih0 W2FdW29dPSgxK3IpKnRbYV1bb10tcipkLGc+bSYmKHY9TWF0aC5tYXgodixNYXRoLmFicyh0 W2FdW29dLWQpLyhnLW0pKSkpfXJldHVybiB2fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3Zh ciByLGk9MTtmb3Iobyh0LGUpLHI9MDtyPGUubGVuZ3RoJiYhKGVbcl1bMl08NCk7cisrKTtm b3IoZT1lLnNsaWNlKHIpLHI9MDtyPDEwMCYmaT4uMDE7cisrKWk9byh0LGUsYShpKSk7cmV0 dXJuIGk+LjAxJiZuLmxvZygiaW50ZXJwMmQgZGlkbid0IGNvbnZlcmdlIHF1aWNrbHkiLGkp LHR9fSx7Ii4uLy4uL2xpYiI6NTAzfV0sODAyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3QoInRl eHR0ZW1wbGF0ZSIpO3ZhciByPW4uZXh0ZW5kRmxhdCh7fSxlLmZvbnQse2NvbG9yOiJhdXRv IixzaXplOiJhdXRvIn0pO24uY29lcmNlRm9udCh0LCJ0ZXh0Zm9udCIscil9fSx7Ii4uLy4u L2xpYiI6NTAzfV0sODAzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo Ii4uLy4uL3JlZ2lzdHJ5IiksaT10KCIuLi8uLi9saWIiKS5pc0FycmF5T3JUeXBlZEFycmF5 O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixhLG8scyl7dmFyIGwsYyx1LGY9W10saD1uLnRy YWNlSXModCwiY29udG91ciIpLHA9bi50cmFjZUlzKHQsImhpc3RvZ3JhbSIpLGQ9bi50cmFj ZUlzKHQsImdsMmQiKTtpZihpKGUpJiZlLmxlbmd0aD4xJiYhcCYmImNhdGVnb3J5IiE9PXMu dHlwZSl7dmFyIG09ZS5sZW5ndGg7aWYoIShtPD1vKSlyZXR1cm4gaD9lLnNsaWNlKDAsbyk6 ZS5zbGljZSgwLG8rMSk7aWYoaHx8ZClmPWUuc2xpY2UoMCxvKTtlbHNlIGlmKDE9PT1vKWY9 W2VbMF0tLjUsZVswXSsuNV07ZWxzZXtmb3IoZj1bMS41KmVbMF0tLjUqZVsxXV0sdT0xO3U8 bTt1KyspZi5wdXNoKC41KihlW3UtMV0rZVt1XSkpO2YucHVzaCgxLjUqZVttLTFdLS41KmVb bS0yXSl9aWYobTxvKXt2YXIgZz1mW2YubGVuZ3RoLTFdLHY9Zy1mW2YubGVuZ3RoLTJdO2Zv cih1PW07dTxvO3UrKylnKz12LGYucHVzaChnKX19ZWxzZXt2YXIgeT10W3MuX2lkLmNoYXJB dCgwKSsiY2FsZW5kYXIiXTtpZihwKWw9cy5yMmMociwwLHkpO2Vsc2UgaWYoaShlKSYmMT09 PWUubGVuZ3RoKWw9ZVswXTtlbHNlIGlmKHZvaWQgMD09PXIpbD0wO2Vsc2V7bD0oImxvZyI9 PT1zLnR5cGU/cy5kMmM6cy5yMmMpKHIsMCx5KX1mb3IoYz1hfHwxLHU9aHx8ZD8wOi0uNTt1 PG87dSsrKWYucHVzaChsK2MqdSl9cmV0dXJuIGZ9fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi8u Li9yZWdpc3RyeSI6NjM4fV0sODA0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIkBwbG90bHkvZDMiKSxpPXQoInRpbnljb2xvcjIiKSxhPXQoIi4uLy4uL3JlZ2lz dHJ5Iiksbz10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxzPXQoIi4uLy4uL3Bsb3Rz L2NhcnRlc2lhbi9heGVzIiksbD10KCIuLi8uLi9saWIiKSxjPXQoIi4uLy4uL2xpYi9zdmdf dGV4dF91dGlscyIpLHU9dCgiLi4vc2NhdHRlci9mb3JtYXRfbGFiZWxzIiksZj10KCIuLi8u Li9jb21wb25lbnRzL2NvbG9yIiksaD10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUi KS5leHRyYWN0T3B0cyxwPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSIpLm1ha2VD b2xvclNjYWxlRnVuY0Zyb21UcmFjZSxkPXQoIi4uLy4uL2NvbnN0YW50cy94bWxuc19uYW1l c3BhY2VzIiksbT10KCIuLi8uLi9jb25zdGFudHMvYWxpZ25tZW50IikuTElORV9TUEFDSU5H O2Z1bmN0aW9uIGcodCl7cmV0dXJuIHQuc2VsZWN0QWxsKCJnLmhlYXRtYXAtbGFiZWwiKX1m dW5jdGlvbiB2KHQpe2codCkucmVtb3ZlKCl9ZnVuY3Rpb24geSh0LGUpe3ZhciByPWUubGVu Z3RoLTIsbj1sLmNvbnN0cmFpbihsLmZpbmRCaW4odCxlKSwwLHIpLGk9ZVtuXSxhPWVbbisx XSxvPWwuY29uc3RyYWluKG4rKHQtaSkvKGEtaSktLjUsMCxyKSxzPU1hdGgucm91bmQobyks Yz1NYXRoLmFicyhvLXMpO3JldHVybiBvJiZvIT09ciYmYz97YmluMDpzLGZyYWM6YyxiaW4x Ok1hdGgucm91bmQocytjLyhvLXMpKX06e2JpbjA6cyxiaW4xOnMsZnJhYzowfX1mdW5jdGlv biB4KHQsZSl7dmFyIHI9ZS5sZW5ndGgtMSxuPWwuY29uc3RyYWluKGwuZmluZEJpbih0LGUp LDAsciksaT1lW25dLGE9KHQtaSkvKGVbbisxXS1pKXx8MDtyZXR1cm4gYTw9MD97YmluMDpu LGJpbjE6bixmcmFjOjB9OmE8LjU/e2JpbjA6bixiaW4xOm4rMSxmcmFjOmF9OntiaW4wOm4r MSxiaW4xOm4sZnJhYzoxLWF9fWZ1bmN0aW9uIGIodCxlLHIpe3RbZV09clswXSx0W2UrMV09 clsxXSx0W2UrMl09clsyXSx0W2UrM109TWF0aC5yb3VuZCgyNTUqclszXSl9ZS5leHBvcnRz PWZ1bmN0aW9uKHQsZSxyLF8pe3ZhciB3PWUueGF4aXMsVD1lLnlheGlzO2wubWFrZVRyYWNl R3JvdXBzKF8sciwiaG0iKS5lYWNoKChmdW5jdGlvbihlKXt2YXIgcixfLGssQSxNLFMsRSxM LEM9bi5zZWxlY3QodGhpcyksUD1lWzBdLEk9UC50cmFjZSxPPUkueGdhcHx8MCx6PUkueWdh cHx8MCxEPVAueixSPVAueCxGPVAueSxCPVAueENlbnRlcixOPVAueUNlbnRlcixqPWEudHJh Y2VJcyhJLCJjb250b3VyIiksVT1qPyJiZXN0IjpJLnpzbW9vdGgsVj1ELmxlbmd0aCxIPWwu bWF4Um93TGVuZ3RoKEQpLHE9ITEsRz0hMTtmb3IoUz0wO3ZvaWQgMD09PXImJlM8Ui5sZW5n dGgtMTspcj13LmMycChSW1NdKSxTKys7Zm9yKFM9Ui5sZW5ndGgtMTt2b2lkIDA9PT1fJiZT PjA7KV89dy5jMnAoUltTXSksUy0tO2ZvcihfPHImJihrPV8sXz1yLHI9ayxxPSEwKSxTPTA7 dm9pZCAwPT09QSYmUzxGLmxlbmd0aC0xOylBPVQuYzJwKEZbU10pLFMrKztmb3IoUz1GLmxl bmd0aC0xO3ZvaWQgMD09PU0mJlM+MDspTT1ULmMycChGW1NdKSxTLS07aWYoTTxBJiYoaz1B LEE9TSxNPWssRz0hMCksaiYmKEI9UixOPUYsUj1QLnhmaWxsLEY9UC55ZmlsbCksImZhc3Qi IT09VSl7dmFyIFk9ImJlc3QiPT09VT8wOi41O3I9TWF0aC5tYXgoLVkqdy5fbGVuZ3RoLHIp LF89TWF0aC5taW4oKDErWSkqdy5fbGVuZ3RoLF8pLEE9TWF0aC5tYXgoLVkqVC5fbGVuZ3Ro LEEpLE09TWF0aC5taW4oKDErWSkqVC5fbGVuZ3RoLE0pfXZhciBXLFgsWj1NYXRoLnJvdW5k KF8tciksSj1NYXRoLnJvdW5kKE0tQSk7aWYoWjw9MHx8Sjw9MClyZXR1cm4gQy5zZWxlY3RB bGwoImltYWdlIikuZGF0YShbXSkuZXhpdCgpLnJlbW92ZSgpLHZvaWQgdihDKTsiZmFzdCI9 PT1VPyhXPUgsWD1WKTooVz1aLFg9Sik7dmFyIEs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi Y2FudmFzIik7Sy53aWR0aD1XLEsuaGVpZ2h0PVg7dmFyIFEsJCx0dD1LLmdldENvbnRleHQo IjJkIiksZXQ9cChJLHtub051bWVyaWNDaGVjazohMCxyZXR1cm5BcnJheTohMH0pOyJmYXN0 Ij09PVU/KFE9cT9mdW5jdGlvbih0KXtyZXR1cm4gSC0xLXR9OmwuaWRlbnRpdHksJD1HP2Z1 bmN0aW9uKHQpe3JldHVybiBWLTEtdH06bC5pZGVudGl0eSk6KFE9ZnVuY3Rpb24odCl7cmV0 dXJuIGwuY29uc3RyYWluKE1hdGgucm91bmQody5jMnAoUlt0XSktciksMCxaKX0sJD1mdW5j dGlvbih0KXtyZXR1cm4gbC5jb25zdHJhaW4oTWF0aC5yb3VuZChULmMycChGW3RdKS1BKSww LEopfSk7dmFyIHJ0LG50LGl0LGF0LG90PSQoMCksc3Q9W290LG90XSxsdD1xPzA6MSxjdD1H PzA6MSx1dD0wLGZ0PTAsaHQ9MCxwdD0wO2Z1bmN0aW9uIGR0KHQsZSl7aWYodm9pZCAwIT09 dCl7dmFyIHI9ZXQodCk7cmV0dXJuIHJbMF09TWF0aC5yb3VuZChyWzBdKSxyWzFdPU1hdGgu cm91bmQoclsxXSksclsyXT1NYXRoLnJvdW5kKHJbMl0pLHV0Kz1lLGZ0Kz1yWzBdKmUsaHQr PXJbMV0qZSxwdCs9clsyXSplLHJ9cmV0dXJuWzAsMCwwLDBdfWZ1bmN0aW9uIG10KHQsZSxy LG4pe3ZhciBpPXRbci5iaW4wXTtpZih2b2lkIDA9PT1pKXJldHVybiBkdCh2b2lkIDAsMSk7 dmFyIGEsbz10W3IuYmluMV0scz1lW3IuYmluMF0sbD1lW3IuYmluMV0sYz1vLWl8fDAsdT1z LWl8fDA7cmV0dXJuIGE9dm9pZCAwPT09bz92b2lkIDA9PT1sPzA6dm9pZCAwPT09cz8yKihs LWkpOjIqKDIqbC1zLWkpLzM6dm9pZCAwPT09bD92b2lkIDA9PT1zPzA6MiooMippLW8tcykv Mzp2b2lkIDA9PT1zPzIqKDIqbC1vLWkpLzM6bCtpLW8tcyxkdChpK3IuZnJhYypjK24uZnJh YyoodStyLmZyYWMqYSkpfWlmKFUpe3ZhciBndCx2dD0wO3RyeXtndD1uZXcgVWludDhBcnJh eShaKkoqNCl9Y2F0Y2godCl7Z3Q9bmV3IEFycmF5KFoqSio0KX1pZigiYmVzdCI9PT1VKXt2 YXIgeXQseHQsYnQsX3Q9Qnx8Uix3dD1OfHxGLFR0PW5ldyBBcnJheShfdC5sZW5ndGgpLGt0 PW5ldyBBcnJheSh3dC5sZW5ndGgpLEF0PW5ldyBBcnJheShaKSxNdD1CP3g6eSxTdD1OP3g6 eTtmb3IoUz0wO1M8X3QubGVuZ3RoO1MrKylUdFtTXT1NYXRoLnJvdW5kKHcuYzJwKF90W1Nd KS1yKTtmb3IoUz0wO1M8d3QubGVuZ3RoO1MrKylrdFtTXT1NYXRoLnJvdW5kKFQuYzJwKHd0 W1NdKS1BKTtmb3IoUz0wO1M8WjtTKyspQXRbU109TXQoUyxUdCk7Zm9yKEU9MDtFPEo7RSsr KWZvcih4dD1EWyh5dD1TdChFLGt0KSkuYmluMF0sYnQ9RFt5dC5iaW4xXSxTPTA7UzxaO1Mr Kyx2dCs9NCliKGd0LHZ0LGF0PW10KHh0LGJ0LEF0W1NdLHl0KSl9ZWxzZSBmb3IoRT0wO0U8 VjtFKyspZm9yKGl0PURbRV0sc3Q9JChFKSxTPTA7UzxaO1MrKylhdD1kdChpdFtTXSwxKSxi KGd0LHZ0PTQqKHN0KlorUShTKSksYXQpO3ZhciBFdD10dC5jcmVhdGVJbWFnZURhdGEoWixK KTt0cnl7RXQuZGF0YS5zZXQoZ3QpfWNhdGNoKHQpe3ZhciBMdD1FdC5kYXRhLEN0PUx0Lmxl bmd0aDtmb3IoRT0wO0U8Q3Q7RSsrKUx0W0VdPWd0W0VdfXR0LnB1dEltYWdlRGF0YShFdCww LDApfWVsc2V7dmFyIFB0PU1hdGguZmxvb3IoTy8yKSxJdD1NYXRoLmZsb29yKHovMik7Zm9y KEU9MDtFPFY7RSsrKWlmKGl0PURbRV0sc3QucmV2ZXJzZSgpLHN0W2N0XT0kKEUrMSksc3Rb MF0hPT1zdFsxXSYmdm9pZCAwIT09c3RbMF0mJnZvaWQgMCE9PXN0WzFdKWZvcihydD1bbnQ9 USgwKSxudF0sUz0wO1M8SDtTKyspcnQucmV2ZXJzZSgpLHJ0W2x0XT1RKFMrMSkscnRbMF0h PT1ydFsxXSYmdm9pZCAwIT09cnRbMF0mJnZvaWQgMCE9PXJ0WzFdJiYoYXQ9ZHQoaXRbU10s KHJ0WzFdLXJ0WzBdKSooc3RbMV0tc3RbMF0pKSx0dC5maWxsU3R5bGU9InJnYmEoIithdC5q b2luKCIsIikrIikiLHR0LmZpbGxSZWN0KHJ0WzBdK1B0LHN0WzBdK0l0LHJ0WzFdLXJ0WzBd LU8sc3RbMV0tc3RbMF0teikpfWZ0PU1hdGgucm91bmQoZnQvdXQpLGh0PU1hdGgucm91bmQo aHQvdXQpLHB0PU1hdGgucm91bmQocHQvdXQpO3ZhciBPdD1pKCJyZ2IoIitmdCsiLCIraHQr IiwiK3B0KyIpIik7dC5faG1waXhjb3VudD0odC5faG1waXhjb3VudHx8MCkrdXQsdC5faG1s dW1jb3VudD0odC5faG1sdW1jb3VudHx8MCkrdXQqT3QuZ2V0THVtaW5hbmNlKCk7dmFyIHp0 PUMuc2VsZWN0QWxsKCJpbWFnZSIpLmRhdGEoZSk7enQuZW50ZXIoKS5hcHBlbmQoInN2Zzpp bWFnZSIpLmF0dHIoe3htbG5zOmQuc3ZnLHByZXNlcnZlQXNwZWN0UmF0aW86Im5vbmUifSks enQuYXR0cih7aGVpZ2h0Okosd2lkdGg6Wix4OnIseTpBLCJ4bGluazpocmVmIjpLLnRvRGF0 YVVSTCgiaW1hZ2UvcG5nIil9KSx2KEMpO3ZhciBEdD1JLnRleHR0ZW1wbGF0ZTtpZihEdCl7 dmFyIFJ0PWgoSSksRnQ9e3R5cGU6ImxpbmVhciIscmFuZ2U6W1J0Lm1pbixSdC5tYXhdLF9z ZXBhcmF0b3JzOncuX3NlcGFyYXRvcnMsX251bUZvcm1hdDp3Ll9udW1Gb3JtYXR9LEJ0PSJo aXN0b2dyYW0yZGNvbnRvdXIiPT09SS50eXBlLE50PSJjb250b3VyIj09PUkudHlwZSxqdD1O dD9WLTE6VixVdD1OdD8xOjAsVnQ9TnQ/SC0xOkgsSHQ9W107Zm9yKFM9TnQ/MTowO1M8anQ7 UysrKXt2YXIgcXQ7aWYoTnQpcXQ9UC55W1NdO2Vsc2UgaWYoQnQpe2lmKDA9PT1TfHxTPT09 Vi0xKWNvbnRpbnVlO3F0PVAueVtTXX1lbHNlIGlmKFAueUNlbnRlcilxdD1QLnlDZW50ZXJb U107ZWxzZXtpZihTKzE9PT1WJiZ2b2lkIDA9PT1QLnlbUysxXSljb250aW51ZTtxdD0oUC55 W1NdK1AueVtTKzFdKS8yfXZhciBHdD1NYXRoLnJvdW5kKFQuYzJwKHF0KSk7aWYoISgwPkd0 fHxHdD5ULl9sZW5ndGgpKWZvcihFPVV0O0U8VnQ7RSsrKXt2YXIgWXQ7aWYoTnQpWXQ9UC54 W0VdO2Vsc2UgaWYoQnQpe2lmKDA9PT1FfHxFPT09SC0xKWNvbnRpbnVlO1l0PVAueFtFXX1l bHNlIGlmKFAueENlbnRlcilZdD1QLnhDZW50ZXJbRV07ZWxzZXtpZihFKzE9PT1IJiZ2b2lk IDA9PT1QLnhbRSsxXSljb250aW51ZTtZdD0oUC54W0VdK1AueFtFKzFdKS8yfXZhciBXdD1N YXRoLnJvdW5kKHcuYzJwKFl0KSk7aWYoISgwPld0fHxXdD53Ll9sZW5ndGgpKXt2YXIgWHQ9 dSh7eDpZdCx5OnF0fSxJLHQuX2Z1bGxMYXlvdXQpO1h0Lng9WXQsWHQueT1xdDt2YXIgWnQ9 UC56W1NdW0VdO3ZvaWQgMD09PVp0PyhYdC56PSIiLFh0LnpMYWJlbD0iIik6KFh0Lno9WnQs WHQuekxhYmVsPXMudGlja1RleHQoRnQsWnQsImhvdmVyIikudGV4dCk7dmFyIEp0PVAudGV4 dCYmUC50ZXh0W1NdJiZQLnRleHRbU11bRV07dm9pZCAwIT09SnQmJiExIT09SnR8fChKdD0i IiksWHQudGV4dD1KdDt2YXIgS3Q9bC50ZXh0dGVtcGxhdGVTdHJpbmcoRHQsWHQsdC5fZnVs bExheW91dC5fZDNsb2NhbGUsWHQsSS5fbWV0YXx8e30pO2lmKEt0KXt2YXIgUXQ9S3Quc3Bs aXQoIjxicj4iKSwkdD1RdC5sZW5ndGgsdGU9MDtmb3IoTD0wO0w8JHQ7TCsrKXRlPU1hdGgu bWF4KHRlLFF0W0xdLmxlbmd0aCk7SHQucHVzaCh7bDokdCxjOnRlLHQ6S3QseDpXdCx5Okd0 LHo6WnR9KX19fX12YXIgZWU9SS50ZXh0Zm9udCxyZT1lZS5mYW1pbHksbmU9ZWUuc2l6ZSxp ZT10Ll9mdWxsTGF5b3V0LmZvbnQuc2l6ZTtpZighbmV8fCJhdXRvIj09PW5lKXt2YXIgYWU9 MS8wLG9lPTEvMCxzZT0wLGxlPTA7Zm9yKEw9MDtMPEh0Lmxlbmd0aDtMKyspe3ZhciBjZT1I dFtMXTtpZihzZT1NYXRoLm1heChzZSxjZS5sKSxsZT1NYXRoLm1heChsZSxjZS5jKSxMPEh0 Lmxlbmd0aC0xKXt2YXIgdWU9SHRbTCsxXSxmZT1NYXRoLmFicyh1ZS54LWNlLngpLGhlPU1h dGguYWJzKHVlLnktY2UueSk7ZmUmJihhZT1NYXRoLm1pbihhZSxmZSkpLGhlJiYob2U9TWF0 aC5taW4ob2UsaGUpKX19aXNGaW5pdGUoYWUpJiZpc0Zpbml0ZShvZSk/KGFlLT1PLG9lLT16 LGFlLz1sZSxvZS89c2UsYWUvPW0vMixvZS89bSxuZT1NYXRoLm1pbihNYXRoLmZsb29yKGFl KSxNYXRoLmZsb29yKG9lKSxpZSkpOm5lPWllfWlmKG5lPD0wfHwhaXNGaW5pdGUobmUpKXJl dHVybjtnKEMpLmRhdGEoSHQpLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgiaGVhdG1h cC1sYWJlbCIsMSkuYXBwZW5kKCJ0ZXh0IikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUi KS5lYWNoKChmdW5jdGlvbihlKXt2YXIgcj1uLnNlbGVjdCh0aGlzKSxpPWVlLmNvbG9yO2km JiJhdXRvIiE9PWl8fChpPWYuY29udHJhc3QoInJnYmEoIitldChlLnopLmpvaW4oKSsiKSIp KSxyLmF0dHIoImRhdGEtbm90ZXgiLDEpLmNhbGwoYy5wb3NpdGlvblRleHQsZnVuY3Rpb24o dCl7cmV0dXJuIHQueH0oZSksZnVuY3Rpb24odCl7cmV0dXJuIHQueS1uZSoodC5sKm0vMi0x KX0oZSkpLmNhbGwoby5mb250LHJlLG5lLGkpLnRleHQoZS50KS5jYWxsKGMuY29udmVydFRv VHNwYW5zLHQpfSkpfX0pKX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6MzY2LCIuLi8u Li9jb21wb25lbnRzL2NvbG9yc2NhbGUiOjM3OCwiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5n IjozODgsIi4uLy4uL2NvbnN0YW50cy9hbGlnbm1lbnQiOjQ3MSwiLi4vLi4vY29uc3RhbnRz L3htbG5zX25hbWVzcGFjZXMiOjQ4MCwiLi4vLi4vbGliIjo1MDMsIi4uLy4uL2xpYi9zdmdf dGV4dF91dGlscyI6NTI5LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NTU0LCIuLi8u Li9yZWdpc3RyeSI6NjM4LCIuLi9zY2F0dGVyL2Zvcm1hdF9sYWJlbHMiOjkzNiwiQHBsb3Rs eS9kMyI6NTgsdGlueWNvbG9yMjozMTJ9XSw4MDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiQHBsb3RseS9kMyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtuLnNl bGVjdCh0KS5zZWxlY3RBbGwoIi5obSBpbWFnZSIpLnN0eWxlKCJvcGFjaXR5IiwoZnVuY3Rp b24odCl7cmV0dXJuIHQudHJhY2Uub3BhY2l0eX0pKX19LHsiQHBsb3RseS9kMyI6NTh9XSw4 MDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSxyKXshMT09PXIoInpzbW9vdGgiKSYmKHIoInhnYXAiKSxyKCJ5Z2FwIikpLHIoInpob3Zl cmZvcm1hdCIpfX0se31dLDgwNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCJmYXN0LWlzbnVtZXJpYyIpLGk9dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9yZWdp c3RyeSIpO2Z1bmN0aW9uIG8odCxlKXt2YXIgcj1lKHQpO3JldHVybiJzY2FsZWQiPT09KHI/ ZSh0KyJ0eXBlIiwiYXJyYXkiKToic2NhbGVkIikmJihlKHQrIjAiKSxlKCJkIit0KSkscn1l LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIscyxsLGMpe3ZhciB1LGYsaD1yKCJ6Iik7aWYobD1s fHwieCIsYz1jfHwieSIsdm9pZCAwPT09aHx8IWgubGVuZ3RoKXJldHVybiAwO2lmKGkuaXNB cnJheTFEKHQueikpe3U9cihsKSxmPXIoYyk7dmFyIHA9aS5taW5Sb3dMZW5ndGgodSksZD1p Lm1pblJvd0xlbmd0aChmKTtpZigwPT09cHx8MD09PWQpcmV0dXJuIDA7ZS5fbGVuZ3RoPU1h dGgubWluKHAsZCxoLmxlbmd0aCl9ZWxzZXtpZih1PW8obCxyKSxmPW8oYyxyKSwhZnVuY3Rp b24odCl7Zm9yKHZhciBlLHI9ITAsYT0hMSxvPSExLHM9MDtzPHQubGVuZ3RoO3MrKyl7aWYo ZT10W3NdLCFpLmlzQXJyYXlPclR5cGVkQXJyYXkoZSkpe3I9ITE7YnJlYWt9ZS5sZW5ndGg+ MCYmKGE9ITApO2Zvcih2YXIgbD0wO2w8ZS5sZW5ndGg7bCsrKWlmKG4oZVtsXSkpe289ITA7 YnJlYWt9fXJldHVybiByJiZhJiZvfShoKSlyZXR1cm4gMDtyKCJ0cmFuc3Bvc2UiKSxlLl9s ZW5ndGg9bnVsbH1yZXR1cm4iaGVhdG1hcGdsIj09PXQudHlwZXx8YS5nZXRDb21wb25lbnRN ZXRob2QoImNhbGVuZGFycyIsImhhbmRsZVRyYWNlRGVmYXVsdHMiKSh0LGUsW2wsY10scyks ITB9fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi8uLi9yZWdpc3RyeSI6NjM4LCJmYXN0LWlzbnVt ZXJpYyI6MTkwfV0sODA4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Zvcih2YXIg bj10KCIuLi9oZWF0bWFwL2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29s b3JzY2FsZS9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxh dCxvPXQoIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiKS5vdmVycmlkZUFsbCxzPVsieiIs IngiLCJ4MCIsImR4IiwieSIsInkwIiwiZHkiLCJ0ZXh0IiwidHJhbnNwb3NlIiwieHR5cGUi LCJ5dHlwZSJdLGw9e30sYz0wO2M8cy5sZW5ndGg7YysrKXt2YXIgdT1zW2NdO2xbdV09blt1 XX1sLnpzbW9vdGg9e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImZhc3QiLCExXSxk Zmx0OiJmYXN0IixlZGl0VHlwZToiY2FsYyJ9LGEobCxpKCIiLHtjTGV0dGVyOiJ6IixhdXRv Q29sb3JEZmx0OiExfSkpLGUuZXhwb3J0cz1vKGwsImNhbGMiLCJuZXN0ZWQiKX0seyIuLi8u Li9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6MzczLCIuLi8uLi9saWIvZXh0 ZW5kIjo0OTMsIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiOjUzNiwiLi4vaGVhdG1hcC9h dHRyaWJ1dGVzIjo3OTJ9XSw4MDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgiLi4vLi4vLi4vc3RhY2tnbF9tb2R1bGVzIikuZ2xfaGVhdG1hcDJkLGk9dCgiLi4v Li4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxhPXQoIi4uLy4uL2xpYi9zdHIycmdiYXJyYXki KTtmdW5jdGlvbiBvKHQsZSl7dGhpcy5zY2VuZT10LHRoaXMudWlkPWUsdGhpcy50eXBlPSJo ZWF0bWFwZ2wiLHRoaXMubmFtZT0iIix0aGlzLmhvdmVyaW5mbz0iYWxsIix0aGlzLnhEYXRh PVtdLHRoaXMueURhdGE9W10sdGhpcy56RGF0YT1bXSx0aGlzLnRleHRMYWJlbHM9W10sdGhp cy5pZFRvSW5kZXg9W10sdGhpcy5ib3VuZHM9WzAsMCwwLDBdLHRoaXMub3B0aW9ucz17enNt b290aDoiZmFzdCIsejpbXSx4OltdLHk6W10sc2hhcGU6WzAsMF0sY29sb3JMZXZlbHM6WzBd LGNvbG9yVmFsdWVzOlswLDAsMCwxXX0sdGhpcy5oZWF0bWFwPW4odC5nbHBsb3QsdGhpcy5v cHRpb25zKSx0aGlzLmhlYXRtYXAuX3RyYWNlPXRoaXN9dmFyIHM9by5wcm90b3R5cGU7cy5o YW5kbGVQaWNrPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMub3B0aW9ucyxyPWUuc2hhcGUsbj10 LnBvaW50SWQsaT1uJXJbMF0sYT1NYXRoLmZsb29yKG4vclswXSksbz1uO3JldHVybnt0cmFj ZTp0aGlzLGRhdGFDb29yZDp0LmRhdGFDb29yZCx0cmFjZUNvb3JkOltlLnhbaV0sZS55W2Fd LGUueltvXV0sdGV4dExhYmVsOnRoaXMudGV4dExhYmVsc1tuXSxuYW1lOnRoaXMubmFtZSxw b2ludEluZGV4OlthLGldLGhvdmVyaW5mbzp0aGlzLmhvdmVyaW5mb319LHMudXBkYXRlPWZ1 bmN0aW9uKHQsZSl7dmFyIHI9ZVswXTt0aGlzLmluZGV4PXQuaW5kZXgsdGhpcy5uYW1lPXQu bmFtZSx0aGlzLmhvdmVyaW5mbz10LmhvdmVyaW5mbzt2YXIgbj1yLno7dGhpcy5vcHRpb25z Lno9W10uY29uY2F0LmFwcGx5KFtdLG4pO3ZhciBvPW5bMF0ubGVuZ3RoLHM9bi5sZW5ndGg7 dGhpcy5vcHRpb25zLnNoYXBlPVtvLHNdLHRoaXMub3B0aW9ucy54PXIueCx0aGlzLm9wdGlv bnMueT1yLnksdGhpcy5vcHRpb25zLnpzbW9vdGg9dC56c21vb3RoO3ZhciBsPWZ1bmN0aW9u KHQpe2Zvcih2YXIgZT10LmNvbG9yc2NhbGUscj10LnptaW4sbj10LnptYXgsaT1lLmxlbmd0 aCxvPW5ldyBBcnJheShpKSxzPW5ldyBBcnJheSg0KmkpLGw9MDtsPGk7bCsrKXt2YXIgYz1l W2xdLHU9YShjWzFdKTtvW2xdPXIrY1swXSoobi1yKTtmb3IodmFyIGY9MDtmPDQ7ZisrKXNb NCpsK2ZdPXVbZl19cmV0dXJue2NvbG9yTGV2ZWxzOm8sY29sb3JWYWx1ZXM6c319KHQpO3Ro aXMub3B0aW9ucy5jb2xvckxldmVscz1sLmNvbG9yTGV2ZWxzLHRoaXMub3B0aW9ucy5jb2xv clZhbHVlcz1sLmNvbG9yVmFsdWVzLHRoaXMudGV4dExhYmVscz1bXS5jb25jYXQuYXBwbHko W10sdC50ZXh0KSx0aGlzLmhlYXRtYXAudXBkYXRlKHRoaXMub3B0aW9ucyk7dmFyIGMsdSxm PXRoaXMuc2NlbmUueGF4aXMsaD10aGlzLnNjZW5lLnlheGlzOyExPT09dC56c21vb3RoJiYo Yz17cHBhZDpyLnhbMV0tci54WzBdfSx1PXtwcGFkOnIueVsxXS1yLnlbMF19KSx0Ll9leHRy ZW1lc1tmLl9pZF09aS5maW5kRXh0cmVtZXMoZixyLngsYyksdC5fZXh0cmVtZXNbaC5faWRd PWkuZmluZEV4dHJlbWVzKGgsci55LHUpfSxzLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLmhl YXRtYXAuZGlzcG9zZSgpfSxlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPW5ldyBv KHQsZS51aWQpO3JldHVybiBuLnVwZGF0ZShlLHIpLG59fSx7Ii4uLy4uLy4uL3N0YWNrZ2xf bW9kdWxlcyI6MTEyNCwiLi4vLi4vbGliL3N0cjJyZ2JhcnJheSI6NTI4LCIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4vYXhlcyI6NTU0fV0sODEwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vaGVhdG1hcC94eXpfZGVmYXVsdHMi KSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyIpLG89dCgiLi9h dHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHMpe2Z1bmN0aW9uIGwocixp KXtyZXR1cm4gbi5jb2VyY2UodCxlLG8scixpKX1pKHQsZSxsLHMpPyhsKCJ0ZXh0IiksbCgi enNtb290aCIpLGEodCxlLHMsbCx7cHJlZml4OiIiLGNMZXR0ZXI6InoifSkpOmUudmlzaWJs ZT0hMX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIjozNzYsIi4u Ly4uL2xpYiI6NTAzLCIuLi9oZWF0bWFwL3h5el9kZWZhdWx0cyI6ODA3LCIuL2F0dHJpYnV0 ZXMiOjgwOH1dLDgxMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtbIipoZWF0bWFw Z2wqIHRyYWNlIGlzIGRlcHJlY2F0ZWQhIiwiUGxlYXNlIGNvbnNpZGVyIHN3aXRjaGluZyB0 byB0aGUgKmhlYXRtYXAqIG9yICppbWFnZSogdHJhY2UgdHlwZXMuIiwiQWx0ZXJuYXRpdmVs eSB5b3UgY291bGQgY29udHJpYnV0ZS9zcG9uc29yIHJld3JpdGluZyB0aGlzIHRyYWNlIHR5 cGUiLCJiYXNlZCBvbiBjYXJ0ZXNpYW4gZmVhdHVyZXMgYW5kIHVzaW5nIHJlZ2wgZnJhbWV3 b3JrLiJdLmpvaW4oIiAiKTtlLmV4cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVz Iiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNvbG9yYmFyOnQoIi4uL2hlYXRt YXAvY29sb3JiYXIiKSxjYWxjOnQoIi4uL2hlYXRtYXAvY2FsYyIpLHBsb3Q6dCgiLi9jb252 ZXJ0IiksbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6ImhlYXRtYXBnbCIsYmFzZVBsb3RNb2R1 bGU6dCgiLi4vLi4vcGxvdHMvZ2wyZCIpLGNhdGVnb3JpZXM6WyJnbCIsImdsMmQiLCIyZE1h cCJdLG1ldGE6e319fSx7Ii4uLy4uL3Bsb3RzL2dsMmQiOjU5NiwiLi4vaGVhdG1hcC9jYWxj Ijo3OTMsIi4uL2hlYXRtYXAvY29sb3JiYXIiOjc5NSwiLi9hdHRyaWJ1dGVzIjo4MDgsIi4v Y29udmVydCI6ODA5LCIuL2RlZmF1bHRzIjo4MTB9XSw4MTI6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiLi4vYmFyL2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL3Bs b3RzL2NhcnRlc2lhbi9heGlzX2Zvcm1hdF9hdHRyaWJ1dGVzIikuYXhpc0hvdmVyRm9ybWF0 LGE9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVB dHRycyxvPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS50ZXh0dGVtcGxh dGVBdHRycyxzPXQoIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyIpLGw9dCgiLi9iaW5f YXR0cmlidXRlcyIpLGM9dCgiLi9jb25zdGFudHMiKSx1PXQoIi4uLy4uL2xpYi9leHRlbmQi KS5leHRlbmRGbGF0O2UuZXhwb3J0cz17eDp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5 cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifSx5Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0 VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LHhob3ZlcmZvcm1hdDppKCJ4IikseWhvdmVy Zm9ybWF0OmkoInkiKSx0ZXh0OnUoe30sbi50ZXh0LHt9KSxob3ZlcnRleHQ6dSh7fSxuLmhv dmVydGV4dCx7fSksb3JpZW50YXRpb246bi5vcmllbnRhdGlvbixoaXN0ZnVuYzp7dmFsVHlw ZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiY291bnQiLCJzdW0iLCJhdmciLCJtaW4iLCJtYXgi XSxkZmx0OiJjb3VudCIsZWRpdFR5cGU6ImNhbGMifSxoaXN0bm9ybTp7dmFsVHlwZToiZW51 bWVyYXRlZCIsdmFsdWVzOlsiIiwicGVyY2VudCIsInByb2JhYmlsaXR5IiwiZGVuc2l0eSIs InByb2JhYmlsaXR5IGRlbnNpdHkiXSxkZmx0OiIiLGVkaXRUeXBlOiJjYWxjIn0sY3VtdWxh dGl2ZTp7ZW5hYmxlZDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMSxlZGl0VHlwZToiY2Fs YyJ9LGRpcmVjdGlvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiaW5jcmVhc2lu ZyIsImRlY3JlYXNpbmciXSxkZmx0OiJpbmNyZWFzaW5nIixlZGl0VHlwZToiY2FsYyJ9LGN1 cnJlbnRiaW46e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImluY2x1ZGUiLCJleGNs dWRlIiwiaGFsZiJdLGRmbHQ6ImluY2x1ZGUiLGVkaXRUeXBlOiJjYWxjIn0sZWRpdFR5cGU6 ImNhbGMifSxuYmluc3g6e3ZhbFR5cGU6ImludGVnZXIiLG1pbjowLGRmbHQ6MCxlZGl0VHlw ZToiY2FsYyJ9LHhiaW5zOmwoIngiLCEwKSxuYmluc3k6e3ZhbFR5cGU6ImludGVnZXIiLG1p bjowLGRmbHQ6MCxlZGl0VHlwZToiY2FsYyJ9LHliaW5zOmwoInkiLCEwKSxhdXRvYmlueDp7 dmFsVHlwZToiYm9vbGVhbiIsZGZsdDpudWxsLGVkaXRUeXBlOiJjYWxjIn0sYXV0b2Jpbnk6 e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6bnVsbCxlZGl0VHlwZToiY2FsYyJ9LGJpbmdyb3Vw Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6ImNhbGMifSxob3ZlcnRlbXBs YXRlOmEoe30se2tleXM6Yy5ldmVudERhdGFLZXlzfSksdGV4dHRlbXBsYXRlOm8oe2FycmF5 T2s6ITEsZWRpdFR5cGU6InBsb3QifSx7a2V5czpbImxhYmVsIiwidmFsdWUiXX0pLHRleHRw b3NpdGlvbjp1KHt9LG4udGV4dHBvc2l0aW9uLHthcnJheU9rOiExfSksdGV4dGZvbnQ6cyh7 YXJyYXlPazohMSxlZGl0VHlwZToicGxvdCIsY29sb3JFZGl0VHlwZToic3R5bGUifSksb3V0 c2lkZXRleHRmb250OnMoe2FycmF5T2s6ITEsZWRpdFR5cGU6InBsb3QiLGNvbG9yRWRpdFR5 cGU6InN0eWxlIn0pLGluc2lkZXRleHRmb250OnMoe2FycmF5T2s6ITEsZWRpdFR5cGU6InBs b3QiLGNvbG9yRWRpdFR5cGU6InN0eWxlIn0pLGluc2lkZXRleHRhbmNob3I6bi5pbnNpZGV0 ZXh0YW5jaG9yLHRleHRhbmdsZTpuLnRleHRhbmdsZSxjbGlwb25heGlzOm4uY2xpcG9uYXhp cyxjb25zdHJhaW50ZXh0Om4uY29uc3RyYWludGV4dCxtYXJrZXI6bi5tYXJrZXIsb2Zmc2V0 Z3JvdXA6bi5vZmZzZXRncm91cCxhbGlnbm1lbnRncm91cDpuLmFsaWdubWVudGdyb3VwLHNl bGVjdGVkOm4uc2VsZWN0ZWQsdW5zZWxlY3RlZDpuLnVuc2VsZWN0ZWQsX2RlcHJlY2F0ZWQ6 e2JhcmRpcjpuLl9kZXByZWNhdGVkLmJhcmRpcn19fSx7Ii4uLy4uL2xpYi9leHRlbmQiOjQ5 MywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfZm9ybWF0X2F0dHJpYnV0ZXMiOjU1Nywi Li4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIjo1ODUsIi4uLy4uL3Bsb3RzL3RlbXBsYXRl X2F0dHJpYnV0ZXMiOjYzMywiLi4vYmFyL2F0dHJpYnV0ZXMiOjY0OCwiLi9iaW5fYXR0cmli dXRlcyI6ODE0LCIuL2NvbnN0YW50cyI6ODE4fV0sODEzOltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10Lmxlbmd0aCxu PTAsaT0wO2k8cjtpKyspZVtpXT8odFtpXS89ZVtpXSxuKz10W2ldKTp0W2ldPW51bGw7cmV0 dXJuIG59fSx7fV0sODE0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUpe3JldHVybntzdGFydDp7dmFsVHlwZToiYW55IixlZGl0VHlwZToi Y2FsYyJ9LGVuZDp7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYyJ9LHNpemU6e3ZhbFR5 cGU6ImFueSIsZWRpdFR5cGU6ImNhbGMifSxlZGl0VHlwZToiY2FsYyJ9fX0se31dLDgxNTpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIp O2UuZXhwb3J0cz17Y291bnQ6ZnVuY3Rpb24odCxlLHIpe3JldHVybiByW3RdKyssMX0sc3Vt OmZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBhPWlbZV07cmV0dXJuIG4oYSk/KGE9TnVtYmVyKGEp LHJbdF0rPWEsYSk6MH0sYXZnOmZ1bmN0aW9uKHQsZSxyLGksYSl7dmFyIG89aVtlXTtyZXR1 cm4gbihvKSYmKG89TnVtYmVyKG8pLHJbdF0rPW8sYVt0XSsrKSwwfSxtaW46ZnVuY3Rpb24o dCxlLHIsaSl7dmFyIGE9aVtlXTtpZihuKGEpKXtpZihhPU51bWJlcihhKSwhbihyW3RdKSly ZXR1cm4gclt0XT1hLGE7aWYoclt0XT5hKXt2YXIgbz1hLXJbdF07cmV0dXJuIHJbdF09YSxv fX1yZXR1cm4gMH0sbWF4OmZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBhPWlbZV07aWYobihhKSl7 aWYoYT1OdW1iZXIoYSksIW4oclt0XSkpcmV0dXJuIHJbdF09YSxhO2lmKHJbdF08YSl7dmFy IG89YS1yW3RdO3JldHVybiByW3RdPWEsb319cmV0dXJuIDB9fX0seyJmYXN0LWlzbnVtZXJp YyI6MTkwfV0sODE2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4u Ly4uL2NvbnN0YW50cy9udW1lcmljYWwiKSxpPW4uT05FQVZHWUVBUixhPW4uT05FQVZHTU9O VEgsbz1uLk9ORURBWSxzPW4uT05FSE9VUixsPW4uT05FTUlOLGM9bi5PTkVTRUMsdT10KCIu Li8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLnRpY2tJbmNyZW1lbnQ7ZnVuY3Rpb24gZih0 LGUscixuKXtpZih0KmU8PTApcmV0dXJuIDEvMDtmb3IodmFyIGk9TWF0aC5hYnMoZS10KSxh PSJkYXRlIj09PXIudHlwZSxvPWgoaSxhKSxzPTA7czwxMDtzKyspe3ZhciBsPWgoODAqbyxh KTtpZihvPT09bClicmVhaztpZighcChsLHQsZSxhLHIsbikpYnJlYWs7bz1sfXJldHVybiBv fWZ1bmN0aW9uIGgodCxlKXtyZXR1cm4gZSYmdD5jP3Q+bz90PjEuMSppP2k6dD4xLjEqYT9h Om86dD5zP3M6dD5sP2w6YzpNYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKHQpL01h dGguTE4xMCkpfWZ1bmN0aW9uIHAodCxlLHIsbixhLHMpe2lmKG4mJnQ+byl7dmFyIGw9ZChl LGEscyksYz1kKHIsYSxzKSx1PXQ9PT1pPzA6MTtyZXR1cm4gbFt1XSE9PWNbdV19cmV0dXJu IE1hdGguZmxvb3Ioci90KS1NYXRoLmZsb29yKGUvdCk+LjF9ZnVuY3Rpb24gZCh0LGUscil7 dmFyIG49ZS5jMmQodCxpLHIpLnNwbGl0KCItIik7cmV0dXJuIiI9PT1uWzBdJiYobi51bnNo aWZ0KCksblswXT0iLSIrblswXSksbn1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbixhKXt2 YXIgcyxsLGM9LTEuMSplLGg9LS4xKmUscD10LWgsZD1yWzBdLG09clsxXSxnPU1hdGgubWlu KGYoZCtoLGQrcCxuLGEpLGYobStoLG0rcCxuLGEpKSx2PU1hdGgubWluKGYoZCtjLGQraCxu LGEpLGYobStjLG0raCxuLGEpKTtpZihnPnYmJnY8TWF0aC5hYnMobS1kKS80ZTM/KHM9Zyxs PSExKToocz1NYXRoLm1pbihnLHYpLGw9ITApLCJkYXRlIj09PW4udHlwZSYmcz5vKXt2YXIg eT1zPT09aT8xOjYseD1zPT09aT8iTTEyIjoiTTEiO3JldHVybiBmdW5jdGlvbihlLHIpe3Zh ciBvPW4uYzJkKGUsaSxhKSxzPW8uaW5kZXhPZigiLSIseSk7cz4wJiYobz1vLnN1YnN0cigw LHMpKTt2YXIgYz1uLmQyYyhvLDAsYSk7aWYoYzxlKXt2YXIgZj11KGMseCwhMSxhKTsoYytm KS8yPGUrdCYmKGM9Zil9cmV0dXJuIHImJmw/dShjLHgsITAsYSk6Y319cmV0dXJuIGZ1bmN0 aW9uKGUscil7dmFyIG49cypNYXRoLnJvdW5kKGUvcyk7cmV0dXJuIG4rcy8xMDxlJiZuKy45 KnM8ZSt0JiYobis9cyksciYmbCYmKG4tPXMpLG59fX0seyIuLi8uLi9jb25zdGFudHMvbnVt ZXJpY2FsIjo0NzksIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo1NTR9XSw4MTc6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxp PXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vcmVnaXN0cnkiKSxvPXQoIi4uLy4uL3Bsb3Rz L2NhcnRlc2lhbi9heGVzIikscz10KCIuLi9iYXIvYXJyYXlzX3RvX2NhbGNkYXRhIiksbD10 KCIuL2Jpbl9mdW5jdGlvbnMiKSxjPXQoIi4vbm9ybV9mdW5jdGlvbnMiKSx1PXQoIi4vYXZl cmFnZSIpLGY9dCgiLi9iaW5fbGFiZWxfdmFscyIpO2Z1bmN0aW9uIGgodCxlLHIscyxsKXt2 YXIgYyx1LGYscCxkLG0sZyx2PXMrImJpbnMiLHk9dC5fZnVsbExheW91dCx4PWVbIl8iK3Mr ImJpbmdyb3VwIl0sYj15Ll9oaXN0b2dyYW1CaW5PcHRzW3hdLF89Im92ZXJsYXkiPT09eS5i YXJtb2RlLHc9ZnVuY3Rpb24odCl7cmV0dXJuIHIucjJjKHQsMCxwKX0sVD1mdW5jdGlvbih0 KXtyZXR1cm4gci5jMnIodCwwLHApfSxrPSJkYXRlIj09PXIudHlwZT9mdW5jdGlvbih0KXty ZXR1cm4gdHx8MD09PXQ/aS5jbGVhbkRhdGUodCxudWxsLHApOm51bGx9OmZ1bmN0aW9uKHQp e3JldHVybiBuKHQpP051bWJlcih0KTpudWxsfTtmdW5jdGlvbiBBKHQsZSxyKXtlW3QrIkZv dW5kIl0/KGVbdF09ayhlW3RdKSxudWxsPT09ZVt0XSYmKGVbdF09clt0XSkpOihtW3RdPWVb dF09clt0XSxpLm5lc3RlZFByb3BlcnR5KHVbMF0sdisiLiIrdCkuc2V0KHJbdF0pKX1pZihl WyJfIitzKyJhdXRvQmluRmluaXNoZWQiXSlkZWxldGUgZVsiXyIrcysiYXV0b0JpbkZpbmlz aGVkIl07ZWxzZXt1PWIudHJhY2VzO3ZhciBNPVtdLFM9ITAsRT0hMSxMPSExO2ZvcihjPTA7 Yzx1Lmxlbmd0aDtjKyspaWYoKGY9dVtjXSkudmlzaWJsZSl7dmFyIEM9Yi5kaXJzW2NdO2Q9 ZlsiXyIrQysicG9zMCJdPXIubWFrZUNhbGNkYXRhKGYsQyksTT1pLmNvbmNhdChNLGQpLGRl bGV0ZSBmWyJfIitzKyJhdXRvQmluRmluaXNoZWQiXSwhMD09PWUudmlzaWJsZSYmKFM/Uz0h MTooZGVsZXRlIGYuX2F1dG9CaW4sZlsiXyIrcysiYXV0b0JpbkZpbmlzaGVkIl09MSksYS50 cmFjZUlzKGYsIjJkTWFwIikmJihFPSEwKSwiaGlzdG9ncmFtMmRjb250b3VyIj09PWYudHlw ZSYmKEw9ITApKX1wPXVbMF1bcysiY2FsZW5kYXIiXTt2YXIgUD1vLmF1dG9CaW4oTSxyLGIu bmJpbnMsRSxwLGIuc2l6ZUZvdW5kJiZiLnNpemUpLEk9dVswXS5fYXV0b0Jpbj17fTtpZiht PUlbYi5kaXJzWzBdXT17fSxMJiYoYi5zaXplfHwoUC5zdGFydD1UKG8udGlja0luY3JlbWVu dCh3KFAuc3RhcnQpLFAuc2l6ZSwhMCxwKSkpLHZvaWQgMD09PWIuZW5kJiYoUC5lbmQ9VChv LnRpY2tJbmNyZW1lbnQodyhQLmVuZCksUC5zaXplLCExLHApKSkpLF8mJiFhLnRyYWNlSXMo ZSwiMmRNYXAiKSYmMD09PVAuX2RhdGFTcGFuJiYiY2F0ZWdvcnkiIT09ci50eXBlJiYibXVs dGljYXRlZ29yeSIhPT1yLnR5cGUpe2lmKGwpcmV0dXJuW1AsZCwhMF07UD1mdW5jdGlvbih0 LGUscixuLGEpe3ZhciBvLHMsbCxjPXQuX2Z1bGxMYXlvdXQsdT1mdW5jdGlvbih0LGUpe2Zv cih2YXIgcj1lLnhheGlzLG49ZS55YXhpcyxpPWUub3JpZW50YXRpb24sYT1bXSxvPXQuX2Z1 bGxEYXRhLHM9MDtzPG8ubGVuZ3RoO3MrKyl7dmFyIGw9b1tzXTsiaGlzdG9ncmFtIj09PWwu dHlwZSYmITA9PT1sLnZpc2libGUmJmwub3JpZW50YXRpb249PT1pJiZsLnhheGlzPT09ciYm bC55YXhpcz09PW4mJmEucHVzaChsKX1yZXR1cm4gYX0odCxlKSxmPSExLHA9MS8wLGQ9W2Vd O2ZvcihvPTA7bzx1Lmxlbmd0aDtvKyspaWYoKHM9dVtvXSk9PT1lKWY9ITA7ZWxzZSBpZihm KXt2YXIgbT1oKHQscyxyLG4sITApLGc9bVswXSx2PW1bMl07c1siXyIrbisiYXV0b0JpbkZp bmlzaGVkIl09MSxzWyJfIituKyJwb3MwIl09bVsxXSx2P2QucHVzaChzKTpwPU1hdGgubWlu KHAsZy5zaXplKX1lbHNlIGw9Yy5faGlzdG9ncmFtQmluT3B0c1tzWyJfIituKyJiaW5ncm91 cCJdXSxwPU1hdGgubWluKHAsbC5zaXplfHxzW2FdLnNpemUpO3ZhciB5PW5ldyBBcnJheShk Lmxlbmd0aCk7Zm9yKG89MDtvPGQubGVuZ3RoO28rKylmb3IodmFyIHg9ZFtvXVsiXyIrbisi cG9zMCJdLGI9MDtiPHgubGVuZ3RoO2IrKylpZih2b2lkIDAhPT14W2JdKXt5W29dPXhbYl07 YnJlYWt9aXNGaW5pdGUocCl8fChwPWkuZGlzdGluY3RWYWxzKHkpLm1pbkRpZmYpO2Zvcihv PTA7bzxkLmxlbmd0aDtvKyspe3ZhciBfPShzPWRbb10pW24rImNhbGVuZGFyIl0sdz17c3Rh cnQ6ci5jMnIoeVtvXS1wLzIsMCxfKSxlbmQ6ci5jMnIoeVtvXStwLzIsMCxfKSxzaXplOnB9 O3MuX2lucHV0W2FdPXNbYV09dywobD1jLl9oaXN0b2dyYW1CaW5PcHRzW3NbIl8iK24rImJp bmdyb3VwIl1dKSYmaS5leHRlbmRGbGF0KGwsdyl9cmV0dXJuIGVbYV19KHQsZSxyLHMsdil9 KGc9Zi5jdW11bGF0aXZlfHx7fSkuZW5hYmxlZCYmImluY2x1ZGUiIT09Zy5jdXJyZW50Ymlu JiYoImRlY3JlYXNpbmciPT09Zy5kaXJlY3Rpb24/UC5zdGFydD1UKG8udGlja0luY3JlbWVu dCh3KFAuc3RhcnQpLFAuc2l6ZSwhMCxwKSk6UC5lbmQ9VChvLnRpY2tJbmNyZW1lbnQodyhQ LmVuZCksUC5zaXplLCExLHApKSksYi5zaXplPVAuc2l6ZSxiLnNpemVGb3VuZHx8KG0uc2l6 ZT1QLnNpemUsaS5uZXN0ZWRQcm9wZXJ0eSh1WzBdLHYrIi5zaXplIikuc2V0KFAuc2l6ZSkp LEEoInN0YXJ0IixiLFApLEEoImVuZCIsYixQKX1kPWVbIl8iK3MrInBvczAiXSxkZWxldGUg ZVsiXyIrcysicG9zMCJdO3ZhciBPPWUuX2lucHV0W3ZdfHx7fSx6PWkuZXh0ZW5kRmxhdCh7 fSxiKSxEPWIuc3RhcnQsUj1yLnIybChPLnN0YXJ0KSxGPXZvaWQgMCE9PVI7aWYoKGIuc3Rh cnRGb3VuZHx8RikmJlIhPT1yLnIybChEKSl7dmFyIEI9Rj9SOmkuYWdnTnVtcyhNYXRoLm1p bixudWxsLGQpLE49e3R5cGU6ImNhdGVnb3J5Ij09PXIudHlwZXx8Im11bHRpY2F0ZWdvcnki PT09ci50eXBlPyJsaW5lYXIiOnIudHlwZSxyMmw6ci5yMmwsZHRpY2s6Yi5zaXplLHRpY2sw OkQsY2FsZW5kYXI6cCxyYW5nZTpbQixvLnRpY2tJbmNyZW1lbnQoQixiLnNpemUsITEscCld Lm1hcChyLmwycil9LGo9by50aWNrRmlyc3QoTik7aj5yLnIybChCKSYmKGo9by50aWNrSW5j cmVtZW50KGosYi5zaXplLCEwLHApKSx6LnN0YXJ0PXIubDJyKGopLEZ8fGkubmVzdGVkUHJv cGVydHkoZSx2KyIuc3RhcnQiKS5zZXQoei5zdGFydCl9dmFyIFU9Yi5lbmQsVj1yLnIybChP LmVuZCksSD12b2lkIDAhPT1WO2lmKChiLmVuZEZvdW5kfHxIKSYmViE9PXIucjJsKFUpKXt2 YXIgcT1IP1Y6aS5hZ2dOdW1zKE1hdGgubWF4LG51bGwsZCk7ei5lbmQ9ci5sMnIocSksSHx8 aS5uZXN0ZWRQcm9wZXJ0eShlLHYrIi5zdGFydCIpLnNldCh6LmVuZCl9dmFyIEc9ImF1dG9i aW4iK3M7cmV0dXJuITE9PT1lLl9pbnB1dFtHXSYmKGUuX2lucHV0W3ZdPWkuZXh0ZW5kRmxh dCh7fSxlW3ZdfHx7fSksZGVsZXRlIGUuX2lucHV0W0ddLGRlbGV0ZSBlW0ddKSxbeixkXX1l LmV4cG9ydHM9e2NhbGM6ZnVuY3Rpb24odCxlKXt2YXIgcixhLHAsZCxtPVtdLGc9W10sdj0i aCI9PT1lLm9yaWVudGF0aW9uLHk9by5nZXRGcm9tSWQodCx2P2UueWF4aXM6ZS54YXhpcyks eD12PyJ5IjoieCIsYj17eDoieSIseToieCJ9W3hdLF89ZVt4KyJjYWxlbmRhciJdLHc9ZS5j dW11bGF0aXZlLFQ9aCh0LGUseSx4KSxrPVRbMF0sQT1UWzFdLE09InN0cmluZyI9PXR5cGVv ZiBrLnNpemUsUz1bXSxFPU0/UzprLEw9W10sQz1bXSxQPVtdLEk9MCxPPWUuaGlzdG5vcm0s ej1lLmhpc3RmdW5jLEQ9LTEhPT1PLmluZGV4T2YoImRlbnNpdHkiKTt3LmVuYWJsZWQmJkQm JihPPU8ucmVwbGFjZSgvID9kZW5zaXR5JC8sIiIpLEQ9ITEpO3ZhciBSLEY9Im1heCI9PT16 fHwibWluIj09PXo/bnVsbDowLEI9bC5jb3VudCxOPWNbT10saj0hMSxVPWZ1bmN0aW9uKHQp e3JldHVybiB5LnIyYyh0LDAsXyl9O2ZvcihpLmlzQXJyYXlPclR5cGVkQXJyYXkoZVtiXSkm JiJjb3VudCIhPT16JiYoUj1lW2JdLGo9ImF2ZyI9PT16LEI9bFt6XSkscj1VKGsuc3RhcnQp LHA9VShrLmVuZCkrKHItby50aWNrSW5jcmVtZW50KHIsay5zaXplLCExLF8pKS8xZTY7cjxw JiZtLmxlbmd0aDwxZTYmJihhPW8udGlja0luY3JlbWVudChyLGsuc2l6ZSwhMSxfKSxtLnB1 c2goKHIrYSkvMiksZy5wdXNoKEYpLFAucHVzaChbXSksUy5wdXNoKHIpLEQmJkwucHVzaCgx LyhhLXIpKSxqJiZDLnB1c2goMCksIShhPD1yKSk7KXI9YTtTLnB1c2gociksTXx8ImRhdGUi IT09eS50eXBlfHwoRT17c3RhcnQ6VShFLnN0YXJ0KSxlbmQ6VShFLmVuZCksc2l6ZTpFLnNp emV9KSx0Ll9mdWxsTGF5b3V0Ll9yb3VuZEZuT3B0c3x8KHQuX2Z1bGxMYXlvdXQuX3JvdW5k Rm5PcHRzPXt9KTt2YXIgVj1lWyJfIit4KyJiaW5ncm91cCJdLEg9e2xlZnRHYXA6MS8wLHJp Z2h0R2FwOjEvMH07ViYmKHQuX2Z1bGxMYXlvdXQuX3JvdW5kRm5PcHRzW1ZdfHwodC5fZnVs bExheW91dC5fcm91bmRGbk9wdHNbVl09SCksSD10Ll9mdWxsTGF5b3V0Ll9yb3VuZEZuT3B0 c1tWXSk7dmFyIHEsRz1nLmxlbmd0aCxZPSEwLFc9SC5sZWZ0R2FwLFg9SC5yaWdodEdhcCxa PXt9O2ZvcihyPTA7cjxBLmxlbmd0aDtyKyspe3ZhciBKPUFbcl07KGQ9aS5maW5kQmluKEos RSkpPj0wJiZkPEcmJihJKz1CKGQscixnLFIsQyksWSYmUFtkXS5sZW5ndGgmJkohPT1BW1Bb ZF1bMF1dJiYoWT0hMSksUFtkXS5wdXNoKHIpLFpbcl09ZCxXPU1hdGgubWluKFcsSi1TW2Rd KSxYPU1hdGgubWluKFgsU1tkKzFdLUopKX1ILmxlZnRHYXA9VyxILnJpZ2h0R2FwPVgsWXx8 KHE9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10Ll9mdWxsTGF5b3V0 Ll9yb3VuZEZuT3B0c1tWXTtyZXR1cm4gZihuLmxlZnRHYXAsbi5yaWdodEdhcCxTLHksXyko ZSxyKX19KSxqJiYoST11KGcsQykpLE4mJk4oZyxJLEwpLHcuZW5hYmxlZCYmZnVuY3Rpb24o dCxlLHIpe3ZhciBuLGksYTtmdW5jdGlvbiBvKGUpe2E9dFtlXSx0W2VdLz0yfWZ1bmN0aW9u IHMoZSl7aT10W2VdLHRbZV09YStpLzIsYSs9aX1pZigiaGFsZiI9PT1yKWlmKCJpbmNyZWFz aW5nIj09PWUpZm9yKG8oMCksbj0xO248dC5sZW5ndGg7bisrKXMobik7ZWxzZSBmb3Iobyh0 Lmxlbmd0aC0xKSxuPXQubGVuZ3RoLTI7bj49MDtuLS0pcyhuKTtlbHNlIGlmKCJpbmNyZWFz aW5nIj09PWUpe2ZvcihuPTE7bjx0Lmxlbmd0aDtuKyspdFtuXSs9dFtuLTFdOyJleGNsdWRl Ij09PXImJih0LnVuc2hpZnQoMCksdC5wb3AoKSl9ZWxzZXtmb3Iobj10Lmxlbmd0aC0yO24+ PTA7bi0tKXRbbl0rPXRbbisxXTsiZXhjbHVkZSI9PT1yJiYodC5wdXNoKDApLHQuc2hpZnQo KSl9fShnLHcuZGlyZWN0aW9uLHcuY3VycmVudGJpbik7dmFyIEs9TWF0aC5taW4obS5sZW5n dGgsZy5sZW5ndGgpLFE9W10sJD0wLHR0PUstMTtmb3Iocj0wO3I8SztyKyspaWYoZ1tyXSl7 JD1yO2JyZWFrfWZvcihyPUstMTtyPj0kO3ItLSlpZihnW3JdKXt0dD1yO2JyZWFrfWZvcihy PSQ7cjw9dHQ7cisrKWlmKG4obVtyXSkmJm4oZ1tyXSkpe3ZhciBldD17cDptW3JdLHM6Z1ty XSxiOjB9O3cuZW5hYmxlZHx8KGV0LnB0cz1QW3JdLFk/ZXQucGgwPWV0LnBoMT1QW3JdLmxl bmd0aD9BW1Bbcl1bMF1dOm1bcl06KGUuX2NvbXB1dGVQaD0hMCxldC5waDA9cShTW3JdKSxl dC5waDE9cShTW3IrMV0sITApKSksUS5wdXNoKGV0KX1yZXR1cm4gMT09PVEubGVuZ3RoJiYo UVswXS53aWR0aDE9by50aWNrSW5jcmVtZW50KFFbMF0ucCxrLnNpemUsITEsXyktUVswXS5w KSxzKFEsZSksaS5pc0FycmF5T3JUeXBlZEFycmF5KGUuc2VsZWN0ZWRwb2ludHMpJiZpLnRh Z1NlbGVjdGVkKFEsZSxaKSxRfSxjYWxjQWxsQXV0b0JpbnM6aH19LHsiLi4vLi4vbGliIjo1 MDMsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo1NTQsIi4uLy4uL3JlZ2lzdHJ5Ijo2 MzgsIi4uL2Jhci9hcnJheXNfdG9fY2FsY2RhdGEiOjY0NywiLi9hdmVyYWdlIjo4MTMsIi4v YmluX2Z1bmN0aW9ucyI6ODE1LCIuL2Jpbl9sYWJlbF92YWxzIjo4MTYsIi4vbm9ybV9mdW5j dGlvbnMiOjgyNCwiZmFzdC1pc251bWVyaWMiOjE5MH1dLDgxODpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2V2ZW50RGF0YUtleXM6WyJiaW5OdW1iZXIiXX19 LHt9XSw4MTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4v bGliIiksaT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiKSxhPXQoIi4uLy4u L3JlZ2lzdHJ5IikudHJhY2VJcyxvPXQoIi4uL2Jhci9kZWZhdWx0cyIpLmhhbmRsZUdyb3Vw aW5nRGVmYXVsdHMscz1uLm5lc3RlZFByb3BlcnR5LGw9dCgiLi4vLi4vcGxvdHMvY2FydGVz aWFuL2NvbnN0cmFpbnRzIikuZ2V0QXhpc0dyb3VwLGM9W3thU3RyOnt4OiJ4Ymlucy5zdGFy dCIseToieWJpbnMuc3RhcnQifSxuYW1lOiJzdGFydCJ9LHthU3RyOnt4OiJ4Ymlucy5lbmQi LHk6InliaW5zLmVuZCJ9LG5hbWU6ImVuZCJ9LHthU3RyOnt4OiJ4Ymlucy5zaXplIix5OiJ5 Ymlucy5zaXplIn0sbmFtZToic2l6ZSJ9LHthU3RyOnt4OiJuYmluc3giLHk6Im5iaW5zeSJ9 LG5hbWU6Im5iaW5zIn1dLHU9WyJ4IiwieSJdO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3Zh ciByLGYsaCxwLGQsbSxnLHY9ZS5faGlzdG9ncmFtQmluT3B0cz17fSx5PVtdLHg9e30sYj1b XTtmdW5jdGlvbiBfKHQsZSl7cmV0dXJuIG4uY29lcmNlKHIuX2lucHV0LHIsci5fbW9kdWxl LmF0dHJpYnV0ZXMsdCxlKX1mdW5jdGlvbiB3KHQpe3JldHVybiJ2Ij09PXQub3JpZW50YXRp b24/IngiOiJ5In1mdW5jdGlvbiBUKHQscixhKXt2YXIgbz10LnVpZCsiX18iK2E7cnx8KHI9 byk7dmFyIHM9ZnVuY3Rpb24odCxyKXtyZXR1cm4gaS5nZXRGcm9tVHJhY2Uoe19mdWxsTGF5 b3V0OmV9LHQscikudHlwZX0odCxhKSxsPXRbYSsiY2FsZW5kYXIiXXx8IiIsYz12W3JdLHU9 ITA7YyYmKHM9PT1jLmF4VHlwZSYmbD09PWMuY2FsZW5kYXI/KHU9ITEsYy50cmFjZXMucHVz aCh0KSxjLmRpcnMucHVzaChhKSk6KHI9byxzIT09Yy5heFR5cGUmJm4ud2FybihbIkF0dGVt cHRlZCB0byBncm91cCB0aGUgYmlucyBvZiB0cmFjZSIsdC5pbmRleCwic2V0IG9uIGEiLCJ0 eXBlOiIrcywiYXhpcyIsIndpdGggYmlucyBvbiIsInR5cGU6IitjLmF4VHlwZSwiYXhpcy4i XS5qb2luKCIgIikpLGwhPT1jLmNhbGVuZGFyJiZuLndhcm4oWyJBdHRlbXB0ZWQgdG8gZ3Jv dXAgdGhlIGJpbnMgb2YgdHJhY2UiLHQuaW5kZXgsInNldCB3aXRoIGEiLGwsImNhbGVuZGFy Iiwid2l0aCBiaW5zIixjLmNhbGVuZGFyPyJvbiBhICIrYy5jYWxlbmRhcisiIGNhbGVuZGFy Ijoidy9vIGEgc2V0IGNhbGVuZGFyIl0uam9pbigiICIpKSkpLHUmJih2W3JdPXt0cmFjZXM6 W3RdLGRpcnM6W2FdLGF4VHlwZTpzLGNhbGVuZGFyOnRbYSsiY2FsZW5kYXIiXXx8IiJ9KSx0 WyJfIithKyJiaW5ncm91cCJdPXJ9Zm9yKGQ9MDtkPHQubGVuZ3RoO2QrKylyPXRbZF0sYShy LCJoaXN0b2dyYW0iKSYmKHkucHVzaChyKSxkZWxldGUgci5feGF1dG9CaW5GaW5pc2hlZCxk ZWxldGUgci5feWF1dG9CaW5GaW5pc2hlZCxhKHIsIjJkTWFwIil8fG8oci5faW5wdXQscixl LF8pKTt2YXIgaz1lLl9hbGlnbm1lbnRPcHRzfHx7fTtmb3IoZD0wO2Q8eS5sZW5ndGg7ZCsr KXtpZihyPXlbZF0saD0iIiwhYShyLCIyZE1hcCIpKXtpZihwPXcociksImdyb3VwIj09PWUu YmFybW9kZSYmci5hbGlnbm1lbnRncm91cCl7dmFyIEE9cltwKyJheGlzIl0sTT1sKGUsQSkr ci5vcmllbnRhdGlvbjsoa1tNXXx8e30pW3IuYWxpZ25tZW50Z3JvdXBdJiYoaD1NKX1ofHwi b3ZlcmxheSI9PT1lLmJhcm1vZGV8fChoPWwoZSxyLnhheGlzKStsKGUsci55YXhpcykrdyhy KSl9aD8oeFtoXXx8KHhbaF09W10pLHhbaF0ucHVzaChyKSk6Yi5wdXNoKHIpfWZvcihoIGlu IHgpaWYoMSE9PShmPXhbaF0pLmxlbmd0aCl7dmFyIFM9ITE7Zm9yKGYubGVuZ3RoJiYocj1m WzBdLFM9XygiYmluZ3JvdXAiKSksaD1TfHxoLGQ9MDtkPGYubGVuZ3RoO2QrKyl7dmFyIEU9 KHI9ZltkXSkuX2lucHV0LmJpbmdyb3VwO0UmJkUhPT1oJiZuLndhcm4oWyJUcmFjZSIsci5p bmRleCwibXVzdCBtYXRjaCIsIndpdGhpbiBiaW5ncm91cCIsaCsiLiIsIklnbm9yaW5nIGl0 cyBiaW5ncm91cDoiLEUsInNldHRpbmcuIl0uam9pbigiICIpKSxyLmJpbmdyb3VwPWgsVChy LGgsdyhyKSl9fWVsc2UgYi5wdXNoKGZbMF0pO2ZvcihkPTA7ZDxiLmxlbmd0aDtkKyspe3I9 YltkXTt2YXIgTD1fKCJiaW5ncm91cCIpO2lmKGEociwiMmRNYXAiKSlmb3IoZz0wO2c8Mjtn Kyspe3ZhciBDPV8oKHA9dVtnXSkrImJpbmdyb3VwIixMP0wrIl9fIitwOm51bGwpO1QocixD LHApfWVsc2UgVChyLEwsdyhyKSl9Zm9yKGggaW4gdil7dmFyIFA9dltoXTtmb3IoZj1QLnRy YWNlcyxtPTA7bTxjLmxlbmd0aDttKyspe3ZhciBJLE8sej1jW21dLEQ9ei5uYW1lO2lmKCJu YmlucyIhPT1EfHwhUC5zaXplRm91bmQpe2ZvcihkPTA7ZDxmLmxlbmd0aDtkKyspe2lmKHI9 ZltkXSxwPVAuZGlyc1tkXSxJPXouYVN0cltwXSx2b2lkIDAhPT1zKHIuX2lucHV0LEkpLmdl dCgpKXtQW0RdPV8oSSksUFtEKyJGb3VuZCJdPSEwO2JyZWFrfShPPShyLl9hdXRvQmlufHx7 fSlbcF18fHt9KVtEXSYmcyhyLEkpLnNldChPW0RdKX1pZigic3RhcnQiPT09RHx8ImVuZCI9 PT1EKWZvcig7ZDxmLmxlbmd0aDtkKyspKHI9ZltkXSlbIl8iK3ArImJpbmdyb3VwIl0mJl8o SSwoTz0oci5fYXV0b0Jpbnx8e30pW3BdfHx7fSlbRF0pOyJuYmlucyIhPT1EfHxQLnNpemVG b3VuZHx8UC5uYmluc0ZvdW5kfHwocj1mWzBdLFBbRF09XyhJKSl9fX19fSx7Ii4uLy4uL2xp YiI6NTAzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiOjU1OCwiLi4vLi4vcGxv dHMvY2FydGVzaWFuL2NvbnN0cmFpbnRzIjo1NjIsIi4uLy4uL3JlZ2lzdHJ5Ijo2MzgsIi4u L2Jhci9kZWZhdWx0cyI6NjUyfV0sODIwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoIi4uLy4uL3JlZ2lzdHJ5IiksaT10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4u L2NvbXBvbmVudHMvY29sb3IiKSxvPXQoIi4uL2Jhci9kZWZhdWx0cyIpLmhhbmRsZVRleHQs cz10KCIuLi9iYXIvc3R5bGVfZGVmYXVsdHMiKSxsPXQoIi4vYXR0cmlidXRlcyIpO2UuZXhw b3J0cz1mdW5jdGlvbih0LGUscixjKXtmdW5jdGlvbiB1KHIsbil7cmV0dXJuIGkuY29lcmNl KHQsZSxsLHIsbil9dmFyIGY9dSgieCIpLGg9dSgieSIpO3UoImN1bXVsYXRpdmUuZW5hYmxl ZCIpJiYodSgiY3VtdWxhdGl2ZS5kaXJlY3Rpb24iKSx1KCJjdW11bGF0aXZlLmN1cnJlbnRi aW4iKSksdSgidGV4dCIpO3ZhciBwPXUoInRleHRwb3NpdGlvbiIpO28odCxlLGMsdSxwLHtt b2R1bGVIYXNTZWxlY3RlZDohMCxtb2R1bGVIYXNVbnNlbGVjdGVkOiEwLG1vZHVsZUhhc0Nv bnN0cmFpbjohMCxtb2R1bGVIYXNDbGlwb25heGlzOiEwLG1vZHVsZUhhc1RleHRhbmdsZToh MCxtb2R1bGVIYXNJbnNpZGVhbmNob3I6ITB9KSx1KCJob3ZlcnRleHQiKSx1KCJob3ZlcnRl bXBsYXRlIiksdSgieGhvdmVyZm9ybWF0IiksdSgieWhvdmVyZm9ybWF0Iik7dmFyIGQ9dSgi b3JpZW50YXRpb24iLGgmJiFmPyJoIjoidiIpLG09InYiPT09ZD8ieCI6InkiLGc9InYiPT09 ZD8ieSI6IngiLHY9ZiYmaD9NYXRoLm1pbihpLm1pblJvd0xlbmd0aChmKSYmaS5taW5Sb3dM ZW5ndGgoaCkpOmkubWluUm93TGVuZ3RoKGVbbV18fFtdKTtpZih2KXtlLl9sZW5ndGg9dixu LmdldENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJzIiwiaGFuZGxlVHJhY2VEZWZhdWx0cyIp KHQsZSxbIngiLCJ5Il0sYyksZVtnXSYmdSgiaGlzdGZ1bmMiKSx1KCJoaXN0bm9ybSIpLHUo ImF1dG9iaW4iK20pLHModCxlLHUscixjKSxpLmNvZXJjZVNlbGVjdGlvbk1hcmtlck9wYWNp dHkoZSx1KTt2YXIgeT0oZS5tYXJrZXIubGluZXx8e30pLmNvbG9yLHg9bi5nZXRDb21wb25l bnRNZXRob2QoImVycm9yYmFycyIsInN1cHBseURlZmF1bHRzIik7eCh0LGUseXx8YS5kZWZh dWx0TGluZSx7YXhpczoieSJ9KSx4KHQsZSx5fHxhLmRlZmF1bHRMaW5lLHtheGlzOiJ4Iixp bmhlcml0OiJ5In0pfWVsc2UgZS52aXNpYmxlPSExfX0seyIuLi8uLi9jb21wb25lbnRzL2Nv bG9yIjozNjYsIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9yZWdpc3RyeSI6NjM4LCIuLi9iYXIv ZGVmYXVsdHMiOjY1MiwiLi4vYmFyL3N0eWxlX2RlZmF1bHRzIjo2NjMsIi4vYXR0cmlidXRl cyI6ODEyfV0sODIxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1m dW5jdGlvbih0LGUscixuLGkpe2lmKHQueD0ieFZhbCJpbiBlP2UueFZhbDplLngsdC55PSJ5 VmFsImluIGU/ZS55VmFsOmUueSwiekxhYmVsVmFsImluIGUmJih0Lno9ZS56TGFiZWxWYWwp LGUueGEmJih0LnhheGlzPWUueGEpLGUueWEmJih0LnlheGlzPWUueWEpLCEoci5jdW11bGF0 aXZlfHx7fSkuZW5hYmxlZCl7dmFyIGEsbz1BcnJheS5pc0FycmF5KGkpP25bMF0ucHRzW2lb MF1dW2lbMV1dOm5baV0ucHRzO2lmKHQucG9pbnROdW1iZXJzPW8sdC5iaW5OdW1iZXI9dC5w b2ludE51bWJlcixkZWxldGUgdC5wb2ludE51bWJlcixkZWxldGUgdC5wb2ludEluZGV4LHIu X2luZGV4VG9Qb2ludHMpe2E9W107Zm9yKHZhciBzPTA7czxvLmxlbmd0aDtzKyspYT1hLmNv bmNhdChyLl9pbmRleFRvUG9pbnRzW29bc11dKX1lbHNlIGE9bzt0LnBvaW50SW5kaWNlcz1h fXJldHVybiB0fX0se31dLDgyMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCIuLi9iYXIvaG92ZXIiKS5ob3ZlclBvaW50cyxpPXQoIi4uLy4uL3Bsb3RzL2NhcnRl c2lhbi9heGVzIikuaG92ZXJMYWJlbFRleHQ7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGEs byl7dmFyIHM9bih0LGUscixhLG8pO2lmKHMpe3ZhciBsPSh0PXNbMF0pLmNkW3QuaW5kZXhd LGM9dC5jZFswXS50cmFjZTtpZighYy5jdW11bGF0aXZlLmVuYWJsZWQpe3ZhciB1PSJoIj09 PWMub3JpZW50YXRpb24/InkiOiJ4Ijt0W3UrIkxhYmVsIl09aSh0W3UrImEiXSxbbC5waDAs bC5waDFdLGNbdSsiaG92ZXJmb3JtYXQiXSl9cmV0dXJuIHN9fX0seyIuLi8uLi9wbG90cy9j YXJ0ZXNpYW4vYXhlcyI6NTU0LCIuLi9iYXIvaG92ZXIiOjY1NX1dLDgyMzpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1 dGVzIiksbGF5b3V0QXR0cmlidXRlczp0KCIuLi9iYXIvbGF5b3V0X2F0dHJpYnV0ZXMiKSxz dXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY3Jvc3NUcmFjZURlZmF1bHRzOnQoIi4v Y3Jvc3NfdHJhY2VfZGVmYXVsdHMiKSxzdXBwbHlMYXlvdXREZWZhdWx0czp0KCIuLi9iYXIv bGF5b3V0X2RlZmF1bHRzIiksY2FsYzp0KCIuL2NhbGMiKS5jYWxjLGNyb3NzVHJhY2VDYWxj OnQoIi4uL2Jhci9jcm9zc190cmFjZV9jYWxjIikuY3Jvc3NUcmFjZUNhbGMscGxvdDp0KCIu Li9iYXIvcGxvdCIpLnBsb3QsbGF5ZXJOYW1lOiJiYXJsYXllciIsc3R5bGU6dCgiLi4vYmFy L3N0eWxlIikuc3R5bGUsc3R5bGVPblNlbGVjdDp0KCIuLi9iYXIvc3R5bGUiKS5zdHlsZU9u U2VsZWN0LGNvbG9yYmFyOnQoIi4uL3NjYXR0ZXIvbWFya2VyX2NvbG9yYmFyIiksaG92ZXJQ b2ludHM6dCgiLi9ob3ZlciIpLHNlbGVjdFBvaW50czp0KCIuLi9iYXIvc2VsZWN0IiksZXZl bnREYXRhOnQoIi4vZXZlbnRfZGF0YSIpLG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJoaXN0 b2dyYW0iLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIpLGNhdGVn b3JpZXM6WyJiYXItbGlrZSIsImNhcnRlc2lhbiIsInN2ZyIsImJhciIsImhpc3RvZ3JhbSIs Im9yaWVudGVkIiwiZXJyb3JCYXJzT0siLCJzaG93TGVnZW5kIl0sbWV0YTp7fX19LHsiLi4v Li4vcGxvdHMvY2FydGVzaWFuIjo1NjgsIi4uL2Jhci9jcm9zc190cmFjZV9jYWxjIjo2NTEs Ii4uL2Jhci9sYXlvdXRfYXR0cmlidXRlcyI6NjU3LCIuLi9iYXIvbGF5b3V0X2RlZmF1bHRz Ijo2NTgsIi4uL2Jhci9wbG90Ijo2NTksIi4uL2Jhci9zZWxlY3QiOjY2MCwiLi4vYmFyL3N0 eWxlIjo2NjIsIi4uL3NjYXR0ZXIvbWFya2VyX2NvbG9yYmFyIjo5NDUsIi4vYXR0cmlidXRl cyI6ODEyLCIuL2NhbGMiOjgxNywiLi9jcm9zc190cmFjZV9kZWZhdWx0cyI6ODE5LCIuL2Rl ZmF1bHRzIjo4MjAsIi4vZXZlbnRfZGF0YSI6ODIxLCIuL2hvdmVyIjo4MjJ9XSw4MjQ6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtwZXJjZW50OmZ1bmN0aW9u KHQsZSl7Zm9yKHZhciByPXQubGVuZ3RoLG49MTAwL2UsaT0wO2k8cjtpKyspdFtpXSo9bn0s cHJvYmFiaWxpdHk6ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGgsbj0wO248cjtu KyspdFtuXS89ZX0sZGVuc2l0eTpmdW5jdGlvbih0LGUscixuKXt2YXIgaT10Lmxlbmd0aDtu PW58fDE7Zm9yKHZhciBhPTA7YTxpO2ErKyl0W2FdKj1yW2FdKm59LCJwcm9iYWJpbGl0eSBk ZW5zaXR5IjpmdW5jdGlvbih0LGUscixuKXt2YXIgaT10Lmxlbmd0aDtuJiYoZS89bik7Zm9y KHZhciBhPTA7YTxpO2ErKyl0W2FdKj1yW2FdL2V9fX0se31dLDgyNTpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9oaXN0b2dyYW0vYXR0cmlidXRlcyIpLGk9 dCgiLi4vaGlzdG9ncmFtL2Jpbl9hdHRyaWJ1dGVzIiksYT10KCIuLi9oZWF0bWFwL2F0dHJp YnV0ZXMiKSxvPXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxzPXQoIi4uLy4uL3Bsb3Rz L2NhcnRlc2lhbi9heGlzX2Zvcm1hdF9hdHRyaWJ1dGVzIikuYXhpc0hvdmVyRm9ybWF0LGw9 dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVBdHRy cyxjPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS50ZXh0dGVtcGxhdGVB dHRycyx1PXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIiksZj10 KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdDtlLmV4cG9ydHM9Zih7eDpuLngseTpu Lnksejp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxtYXJrZXI6e2Nv bG9yOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LGVkaXRUeXBlOiJj YWxjIn0saGlzdG5vcm06bi5oaXN0bm9ybSxoaXN0ZnVuYzpuLmhpc3RmdW5jLG5iaW5zeDpu Lm5iaW5zeCx4YmluczppKCJ4IiksbmJpbnN5Om4ubmJpbnN5LHliaW5zOmkoInkiKSxhdXRv YmlueDpuLmF1dG9iaW54LGF1dG9iaW55Om4uYXV0b2JpbnksYmluZ3JvdXA6Zih7fSxuLmJp bmdyb3VwLHt9KSx4YmluZ3JvdXA6Zih7fSxuLmJpbmdyb3VwLHt9KSx5YmluZ3JvdXA6Zih7 fSxuLmJpbmdyb3VwLHt9KSx4Z2FwOmEueGdhcCx5Z2FwOmEueWdhcCx6c21vb3RoOmEuenNt b290aCx4aG92ZXJmb3JtYXQ6cygieCIpLHlob3ZlcmZvcm1hdDpzKCJ5IiksemhvdmVyZm9y bWF0OnMoInoiLDEpLGhvdmVydGVtcGxhdGU6bCh7fSx7a2V5czoieiJ9KSx0ZXh0dGVtcGxh dGU6Yyh7YXJyYXlPazohMSxlZGl0VHlwZToicGxvdCJ9LHtrZXlzOiJ6In0pLHRleHRmb250 OmEudGV4dGZvbnQsc2hvd2xlZ2VuZDpmKHt9LG8uc2hvd2xlZ2VuZCx7ZGZsdDohMX0pfSx1 KCIiLHtjTGV0dGVyOiJ6IixhdXRvQ29sb3JEZmx0OiExfSkpfSx7Ii4uLy4uL2NvbXBvbmVu dHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjozNzMsIi4uLy4uL2xpYi9leHRlbmQiOjQ5Mywi Li4vLi4vcGxvdHMvYXR0cmlidXRlcyI6NTUwLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhp c19mb3JtYXRfYXR0cmlidXRlcyI6NTU3LCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1 dGVzIjo2MzMsIi4uL2hlYXRtYXAvYXR0cmlidXRlcyI6NzkyLCIuLi9oaXN0b2dyYW0vYXR0 cmlidXRlcyI6ODEyLCIuLi9oaXN0b2dyYW0vYmluX2F0dHJpYnV0ZXMiOjgxNH1dLDgyNjpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQo Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksYT10KCIuLi9oaXN0b2dyYW0vYmluX2Z1 bmN0aW9ucyIpLG89dCgiLi4vaGlzdG9ncmFtL25vcm1fZnVuY3Rpb25zIikscz10KCIuLi9o aXN0b2dyYW0vYXZlcmFnZSIpLGw9dCgiLi4vaGlzdG9ncmFtL2Jpbl9sYWJlbF92YWxzIiks Yz10KCIuLi9oaXN0b2dyYW0vY2FsYyIpLmNhbGNBbGxBdXRvQmlucztmdW5jdGlvbiB1KHQs ZSxyLG4pe3ZhciBpLGE9bmV3IEFycmF5KHQpO2lmKG4pZm9yKGk9MDtpPHQ7aSsrKWFbaV09 MS8oZVtpKzFdLWVbaV0pO2Vsc2V7dmFyIG89MS9yO2ZvcihpPTA7aTx0O2krKylhW2ldPW99 cmV0dXJuIGF9ZnVuY3Rpb24gZih0LGUpe3JldHVybntzdGFydDp0KGUuc3RhcnQpLGVuZDp0 KGUuZW5kKSxzaXplOmUuc2l6ZX19ZnVuY3Rpb24gaCh0LGUscixuLGksYSl7dmFyIG8scz10 Lmxlbmd0aC0xLGM9bmV3IEFycmF5KHMpLHU9bChyLG4sdCxpLGEpO2ZvcihvPTA7bzxzO28r Kyl7dmFyIGY9KGV8fFtdKVtvXTtjW29dPXZvaWQgMD09PWY/W3UodFtvXSksdSh0W28rMV0s ITApXTpbZixmXX1yZXR1cm4gY31lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixsLHAs ZCxtPWkuZ2V0RnJvbUlkKHQsZS54YXhpcyksZz1pLmdldEZyb21JZCh0LGUueWF4aXMpLHY9 ZS54Y2FsZW5kYXIseT1lLnljYWxlbmRhcix4PWZ1bmN0aW9uKHQpe3JldHVybiBtLnIyYyh0 LDAsdil9LGI9ZnVuY3Rpb24odCl7cmV0dXJuIGcucjJjKHQsMCx5KX0sXz1jKHQsZSxtLCJ4 Iiksdz1fWzBdLFQ9X1sxXSxrPWModCxlLGcsInkiKSxBPWtbMF0sTT1rWzFdLFM9ZS5fbGVu Z3RoO1QubGVuZ3RoPlMmJlQuc3BsaWNlKFMsVC5sZW5ndGgtUyksTS5sZW5ndGg+UyYmTS5z cGxpY2UoUyxNLmxlbmd0aC1TKTt2YXIgRT1bXSxMPVtdLEM9W10sUD0ic3RyaW5nIj09dHlw ZW9mIHcuc2l6ZSxJPSJzdHJpbmciPT10eXBlb2YgQS5zaXplLE89W10sej1bXSxEPVA/Tzp3 LFI9ST96OkEsRj0wLEI9W10sTj1bXSxqPWUuaGlzdG5vcm0sVT1lLmhpc3RmdW5jLFY9LTEh PT1qLmluZGV4T2YoImRlbnNpdHkiKSxIPSJtYXgiPT09VXx8Im1pbiI9PT1VP251bGw6MCxx PWEuY291bnQsRz1vW2pdLFk9ITEsVz1bXSxYPVtdLFo9InoiaW4gZT9lLno6Im1hcmtlciJp biBlJiZBcnJheS5pc0FycmF5KGUubWFya2VyLmNvbG9yKT9lLm1hcmtlci5jb2xvcjoiIjta JiYiY291bnQiIT09VSYmKFk9ImF2ZyI9PT1VLHE9YVtVXSk7dmFyIEo9dy5zaXplLEs9eCh3 LnN0YXJ0KSxRPXgody5lbmQpKyhLLWkudGlja0luY3JlbWVudChLLEosITEsdikpLzFlNjtm b3Iocj1LO3I8UTtyPWkudGlja0luY3JlbWVudChyLEosITEsdikpTC5wdXNoKEgpLE8ucHVz aChyKSxZJiZDLnB1c2goMCk7Ty5wdXNoKHIpO3ZhciAkLHR0PUwubGVuZ3RoLGV0PShyLUsp L3R0LHJ0PSgkPUsrZXQvMixtLmMycigkLDAsdikpLG50PUEuc2l6ZSxpdD1iKEEuc3RhcnQp LGF0PWIoQS5lbmQpKyhpdC1pLnRpY2tJbmNyZW1lbnQoaXQsbnQsITEseSkpLzFlNjtmb3Io cj1pdDtyPGF0O3I9aS50aWNrSW5jcmVtZW50KHIsbnQsITEseSkpe0UucHVzaChMLnNsaWNl KCkpLHoucHVzaChyKTt2YXIgb3Q9bmV3IEFycmF5KHR0KTtmb3IobD0wO2w8dHQ7bCsrKW90 W2xdPVtdO04ucHVzaChvdCksWSYmQi5wdXNoKEMuc2xpY2UoKSl9ei5wdXNoKHIpO3ZhciBz dD1FLmxlbmd0aCxsdD0oci1pdCkvc3QsY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGcuYzJyKHQs MCx5KX0oaXQrbHQvMik7ViYmKFc9dShMLmxlbmd0aCxELGV0LFApLFg9dShFLmxlbmd0aCxS LGx0LEkpKSxQfHwiZGF0ZSIhPT1tLnR5cGV8fChEPWYoeCxEKSksSXx8ImRhdGUiIT09Zy50 eXBlfHwoUj1mKGIsUikpO3ZhciB1dD0hMCxmdD0hMCxodD1uZXcgQXJyYXkodHQpLHB0PW5l dyBBcnJheShzdCksZHQ9MS8wLG10PTEvMCxndD0xLzAsdnQ9MS8wO2ZvcihyPTA7cjxTO3Ir Kyl7dmFyIHl0PVRbcl0seHQ9TVtyXTtwPW4uZmluZEJpbih5dCxEKSxkPW4uZmluZEJpbih4 dCxSKSxwPj0wJiZwPHR0JiZkPj0wJiZkPHN0JiYoRis9cShwLHIsRVtkXSxaLEJbZF0pLE5b ZF1bcF0ucHVzaChyKSx1dCYmKHZvaWQgMD09PWh0W3BdP2h0W3BdPXl0Omh0W3BdIT09eXQm Jih1dD0hMSkpLGZ0JiYodm9pZCAwPT09cHRbZF0/cHRbZF09eHQ6cHRbZF0hPT14dCYmKGZ0 PSExKSksZHQ9TWF0aC5taW4oZHQseXQtT1twXSksbXQ9TWF0aC5taW4obXQsT1twKzFdLXl0 KSxndD1NYXRoLm1pbihndCx4dC16W2RdKSx2dD1NYXRoLm1pbih2dCx6W2QrMV0teHQpKX1p ZihZKWZvcihkPTA7ZDxzdDtkKyspRis9cyhFW2RdLEJbZF0pO2lmKEcpZm9yKGQ9MDtkPHN0 O2QrKylHKEVbZF0sRixXLFhbZF0pO3JldHVybnt4OlQseFJhbmdlczpoKE8sdXQmJmh0LGR0 LG10LG0sdikseDA6cnQsZHg6ZXQseTpNLHlSYW5nZXM6aCh6LGZ0JiZwdCxndCx2dCxnLHkp LHkwOmN0LGR5Omx0LHo6RSxwdHM6Tn19fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4vYXhlcyI6NTU0LCIuLi9oaXN0b2dyYW0vYXZlcmFnZSI6ODEzLCIuLi9o aXN0b2dyYW0vYmluX2Z1bmN0aW9ucyI6ODE1LCIuLi9oaXN0b2dyYW0vYmluX2xhYmVsX3Zh bHMiOjgxNiwiLi4vaGlzdG9ncmFtL2NhbGMiOjgxNywiLi4vaGlzdG9ncmFtL25vcm1fZnVu Y3Rpb25zIjo4MjR9XSw4Mjc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiLi4vLi4vbGliIiksaT10KCIuL3NhbXBsZV9kZWZhdWx0cyIpLGE9dCgiLi4vaGVhdG1h cC9zdHlsZV9kZWZhdWx0cyIpLG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2Rl ZmF1bHRzIikscz10KCIuLi9oZWF0bWFwL2xhYmVsX2RlZmF1bHRzIiksbD10KCIuL2F0dHJp YnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsYyl7ZnVuY3Rpb24gdShyLGkpe3Jl dHVybiBuLmNvZXJjZSh0LGUsbCxyLGkpfWkodCxlLHUsYyksITEhPT1lLnZpc2libGUmJihh KHQsZSx1LGMpLG8odCxlLGMsdSx7cHJlZml4OiIiLGNMZXR0ZXI6InoifSksdSgiaG92ZXJ0 ZW1wbGF0ZSIpLHModSxjKSx1KCJ4aG92ZXJmb3JtYXQiKSx1KCJ5aG92ZXJmb3JtYXQiKSl9 fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyI6Mzc2LCIuLi8uLi9s aWIiOjUwMywiLi4vaGVhdG1hcC9sYWJlbF9kZWZhdWx0cyI6ODAyLCIuLi9oZWF0bWFwL3N0 eWxlX2RlZmF1bHRzIjo4MDYsIi4vYXR0cmlidXRlcyI6ODI1LCIuL3NhbXBsZV9kZWZhdWx0 cyI6ODMwfV0sODI4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4u L2hlYXRtYXAvaG92ZXIiKSxpPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIikuaG92 ZXJMYWJlbFRleHQ7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGEsbyl7dmFyIHM9bih0LGUs cixhLG8pO2lmKHMpe3ZhciBsPSh0PXNbMF0pLmluZGV4LGM9bFswXSx1PWxbMV0sZj10LmNk WzBdLGg9Zi50cmFjZSxwPWYueFJhbmdlc1t1XSxkPWYueVJhbmdlc1tjXTtyZXR1cm4gdC54 TGFiZWw9aSh0LnhhLFtwWzBdLHBbMV1dLGgueGhvdmVyZm9ybWF0KSx0LnlMYWJlbD1pKHQu eWEsW2RbMF0sZFsxXV0saC55aG92ZXJmb3JtYXQpLHN9fX0seyIuLi8uLi9wbG90cy9jYXJ0 ZXNpYW4vYXhlcyI6NTU0LCIuLi9oZWF0bWFwL2hvdmVyIjo3OTl9XSw4Mjk6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmli dXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxjcm9zc1RyYWNlRGVmYXVs dHM6dCgiLi4vaGlzdG9ncmFtL2Nyb3NzX3RyYWNlX2RlZmF1bHRzIiksY2FsYzp0KCIuLi9o ZWF0bWFwL2NhbGMiKSxwbG90OnQoIi4uL2hlYXRtYXAvcGxvdCIpLGxheWVyTmFtZToiaGVh dG1hcGxheWVyIixjb2xvcmJhcjp0KCIuLi9oZWF0bWFwL2NvbG9yYmFyIiksc3R5bGU6dCgi Li4vaGVhdG1hcC9zdHlsZSIpLGhvdmVyUG9pbnRzOnQoIi4vaG92ZXIiKSxldmVudERhdGE6 dCgiLi4vaGlzdG9ncmFtL2V2ZW50X2RhdGEiKSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToi aGlzdG9ncmFtMmQiLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIp LGNhdGVnb3JpZXM6WyJjYXJ0ZXNpYW4iLCJzdmciLCIyZE1hcCIsImhpc3RvZ3JhbSIsInNo b3dMZWdlbmQiXSxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4iOjU2OCwiLi4v aGVhdG1hcC9jYWxjIjo3OTMsIi4uL2hlYXRtYXAvY29sb3JiYXIiOjc5NSwiLi4vaGVhdG1h cC9wbG90Ijo4MDQsIi4uL2hlYXRtYXAvc3R5bGUiOjgwNSwiLi4vaGlzdG9ncmFtL2Nyb3Nz X3RyYWNlX2RlZmF1bHRzIjo4MTksIi4uL2hpc3RvZ3JhbS9ldmVudF9kYXRhIjo4MjEsIi4v YXR0cmlidXRlcyI6ODI1LCIuL2RlZmF1bHRzIjo4MjcsIi4vaG92ZXIiOjgyOH1dLDgzMDpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9yZWdpc3RyeSIp LGk9dCgiLi4vLi4vbGliIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGEpe3ZhciBvPXIo IngiKSxzPXIoInkiKSxsPWkubWluUm93TGVuZ3RoKG8pLGM9aS5taW5Sb3dMZW5ndGgocyk7 bCYmYz8oZS5fbGVuZ3RoPU1hdGgubWluKGwsYyksbi5nZXRDb21wb25lbnRNZXRob2QoImNh bGVuZGFycyIsImhhbmRsZVRyYWNlRGVmYXVsdHMiKSh0LGUsWyJ4IiwieSJdLGEpLChyKCJ6 Iil8fHIoIm1hcmtlci5jb2xvciIpKSYmcigiaGlzdGZ1bmMiKSxyKCJoaXN0bm9ybSIpLHIo ImF1dG9iaW54IikscigiYXV0b2JpbnkiKSk6ZS52aXNpYmxlPSExfX0seyIuLi8uLi9saWIi OjUwMywiLi4vLi4vcmVnaXN0cnkiOjYzOH1dLDgzMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCIuLi9oaXN0b2dyYW0yZC9hdHRyaWJ1dGVzIiksaT10KCIuLi9j b250b3VyL2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9h dHRyaWJ1dGVzIiksbz10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19mb3JtYXRfYXR0 cmlidXRlcyIpLmF4aXNIb3ZlckZvcm1hdCxzPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRl bmRGbGF0O2UuZXhwb3J0cz1zKHt4Om4ueCx5Om4ueSx6Om4ueixtYXJrZXI6bi5tYXJrZXIs aGlzdG5vcm06bi5oaXN0bm9ybSxoaXN0ZnVuYzpuLmhpc3RmdW5jLG5iaW5zeDpuLm5iaW5z eCx4YmluczpuLnhiaW5zLG5iaW5zeTpuLm5iaW5zeSx5YmluczpuLnliaW5zLGF1dG9iaW54 Om4uYXV0b2JpbngsYXV0b2Jpbnk6bi5hdXRvYmlueSxiaW5ncm91cDpuLmJpbmdyb3VwLHhi aW5ncm91cDpuLnhiaW5ncm91cCx5YmluZ3JvdXA6bi55YmluZ3JvdXAsYXV0b2NvbnRvdXI6 aS5hdXRvY29udG91cixuY29udG91cnM6aS5uY29udG91cnMsY29udG91cnM6aS5jb250b3Vy cyxsaW5lOntjb2xvcjppLmxpbmUuY29sb3Isd2lkdGg6cyh7fSxpLmxpbmUud2lkdGgse2Rm bHQ6LjV9KSxkYXNoOmkubGluZS5kYXNoLHNtb290aGluZzppLmxpbmUuc21vb3RoaW5nLGVk aXRUeXBlOiJwbG90In0seGhvdmVyZm9ybWF0Om8oIngiKSx5aG92ZXJmb3JtYXQ6bygieSIp LHpob3ZlcmZvcm1hdDpvKCJ6IiwxKSxob3ZlcnRlbXBsYXRlOm4uaG92ZXJ0ZW1wbGF0ZSx0 ZXh0dGVtcGxhdGU6aS50ZXh0dGVtcGxhdGUsdGV4dGZvbnQ6aS50ZXh0Zm9udH0sYSgiIix7 Y0xldHRlcjoieiIsZWRpdFR5cGVPdmVycmlkZToiY2FsYyJ9KSl9LHsiLi4vLi4vY29tcG9u ZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiOjM3MywiLi4vLi4vbGliL2V4dGVuZCI6NDkz LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19mb3JtYXRfYXR0cmlidXRlcyI6NTU3LCIu Li9jb250b3VyL2F0dHJpYnV0ZXMiOjczNSwiLi4vaGlzdG9ncmFtMmQvYXR0cmlidXRlcyI6 ODI1fV0sODMyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4u L2xpYiIpLGk9dCgiLi4vaGlzdG9ncmFtMmQvc2FtcGxlX2RlZmF1bHRzIiksYT10KCIuLi9j b250b3VyL2NvbnRvdXJzX2RlZmF1bHRzIiksbz10KCIuLi9jb250b3VyL3N0eWxlX2RlZmF1 bHRzIikscz10KCIuLi9oZWF0bWFwL2xhYmVsX2RlZmF1bHRzIiksbD10KCIuL2F0dHJpYnV0 ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsYyl7ZnVuY3Rpb24gdShyLGkpe3JldHVy biBuLmNvZXJjZSh0LGUsbCxyLGkpfWkodCxlLHUsYyksITEhPT1lLnZpc2libGUmJihhKHQs ZSx1LChmdW5jdGlvbihyKXtyZXR1cm4gbi5jb2VyY2UyKHQsZSxsLHIpfSkpLG8odCxlLHUs YyksdSgieGhvdmVyZm9ybWF0IiksdSgieWhvdmVyZm9ybWF0IiksdSgiaG92ZXJ0ZW1wbGF0 ZSIpLGUuY29udG91cnMmJiJoZWF0bWFwIj09PWUuY29udG91cnMuY29sb3JpbmcmJnModSxj KSl9fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi9jb250b3VyL2NvbnRvdXJzX2RlZmF1bHRzIjo3 NDIsIi4uL2NvbnRvdXIvc3R5bGVfZGVmYXVsdHMiOjc1NiwiLi4vaGVhdG1hcC9sYWJlbF9k ZWZhdWx0cyI6ODAyLCIuLi9oaXN0b2dyYW0yZC9zYW1wbGVfZGVmYXVsdHMiOjgzMCwiLi9h dHRyaWJ1dGVzIjo4MzF9XSw4MzM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5l eHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQo Ii4vZGVmYXVsdHMiKSxjcm9zc1RyYWNlRGVmYXVsdHM6dCgiLi4vaGlzdG9ncmFtL2Nyb3Nz X3RyYWNlX2RlZmF1bHRzIiksY2FsYzp0KCIuLi9jb250b3VyL2NhbGMiKSxwbG90OnQoIi4u L2NvbnRvdXIvcGxvdCIpLnBsb3QsbGF5ZXJOYW1lOiJjb250b3VybGF5ZXIiLHN0eWxlOnQo Ii4uL2NvbnRvdXIvc3R5bGUiKSxjb2xvcmJhcjp0KCIuLi9jb250b3VyL2NvbG9yYmFyIiks aG92ZXJQb2ludHM6dCgiLi4vY29udG91ci9ob3ZlciIpLG1vZHVsZVR5cGU6InRyYWNlIixu YW1lOiJoaXN0b2dyYW0yZGNvbnRvdXIiLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3Rz L2NhcnRlc2lhbiIpLGNhdGVnb3JpZXM6WyJjYXJ0ZXNpYW4iLCJzdmciLCIyZE1hcCIsImNv bnRvdXIiLCJoaXN0b2dyYW0iLCJzaG93TGVnZW5kIl0sbWV0YTp7fX19LHsiLi4vLi4vcGxv dHMvY2FydGVzaWFuIjo1NjgsIi4uL2NvbnRvdXIvY2FsYyI6NzM2LCIuLi9jb250b3VyL2Nv bG9yYmFyIjo3MzgsIi4uL2NvbnRvdXIvaG92ZXIiOjc0OCwiLi4vY29udG91ci9wbG90Ijo3 NTMsIi4uL2NvbnRvdXIvc3R5bGUiOjc1NSwiLi4vaGlzdG9ncmFtL2Nyb3NzX3RyYWNlX2Rl ZmF1bHRzIjo4MTksIi4vYXR0cmlidXRlcyI6ODMxLCIuL2RlZmF1bHRzIjo4MzJ9XSw4MzQ6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvdGVt cGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVBdHRycyxpPXQoIi4uLy4uL3Bsb3Rz L3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS50ZXh0dGVtcGxhdGVBdHRycyxhPXQoIi4uLy4uL2Nv bXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIiksbz10KCIuLi8uLi9wbG90cy9kb21h aW4iKS5hdHRyaWJ1dGVzLHM9dCgiLi4vcGllL2F0dHJpYnV0ZXMiKSxsPXQoIi4uL3N1bmJ1 cnN0L2F0dHJpYnV0ZXMiKSxjPXQoIi4uL3RyZWVtYXAvYXR0cmlidXRlcyIpLHU9dCgiLi4v dHJlZW1hcC9jb25zdGFudHMiKSxmPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0 O2UuZXhwb3J0cz17bGFiZWxzOmwubGFiZWxzLHBhcmVudHM6bC5wYXJlbnRzLHZhbHVlczps LnZhbHVlcyxicmFuY2h2YWx1ZXM6bC5icmFuY2h2YWx1ZXMsY291bnQ6bC5jb3VudCxsZXZl bDpsLmxldmVsLG1heGRlcHRoOmwubWF4ZGVwdGgsdGlsaW5nOntvcmllbnRhdGlvbjp7dmFs VHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsidiIsImgiXSxkZmx0OiJoIixlZGl0VHlwZToi cGxvdCJ9LGZsaXA6Yy50aWxpbmcuZmxpcCxwYWQ6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAs ZGZsdDowLGVkaXRUeXBlOiJwbG90In0sZWRpdFR5cGU6ImNhbGMifSxtYXJrZXI6Zih7Y29s b3JzOmwubWFya2VyLmNvbG9ycyxsaW5lOmwubWFya2VyLmxpbmUsZWRpdFR5cGU6ImNhbGMi fSxhKCJtYXJrZXIiLHtjb2xvckF0dHI6ImNvbG9ycyIsYW5pbTohMX0pKSxsZWFmOmwubGVh ZixwYXRoYmFyOmMucGF0aGJhcix0ZXh0OnMudGV4dCx0ZXh0aW5mbzpsLnRleHRpbmZvLHRl eHR0ZW1wbGF0ZTppKHtlZGl0VHlwZToicGxvdCJ9LHtrZXlzOnUuZXZlbnREYXRhS2V5cy5j b25jYXQoWyJsYWJlbCIsInZhbHVlIl0pfSksaG92ZXJ0ZXh0OnMuaG92ZXJ0ZXh0LGhvdmVy aW5mbzpsLmhvdmVyaW5mbyxob3ZlcnRlbXBsYXRlOm4oe30se2tleXM6dS5ldmVudERhdGFL ZXlzfSksdGV4dGZvbnQ6cy50ZXh0Zm9udCxpbnNpZGV0ZXh0Zm9udDpzLmluc2lkZXRleHRm b250LG91dHNpZGV0ZXh0Zm9udDpjLm91dHNpZGV0ZXh0Zm9udCx0ZXh0cG9zaXRpb246Yy50 ZXh0cG9zaXRpb24sc29ydDpzLnNvcnQscm9vdDpsLnJvb3QsZG9tYWluOm8oe25hbWU6Imlj aWNsZSIsdHJhY2U6ITAsZWRpdFR5cGU6ImNhbGMifSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMv Y29sb3JzY2FsZS9hdHRyaWJ1dGVzIjozNzMsIi4uLy4uL2xpYi9leHRlbmQiOjQ5MywiLi4v Li4vcGxvdHMvZG9tYWluIjo1ODQsIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMi OjYzMywiLi4vcGllL2F0dHJpYnV0ZXMiOjkwMSwiLi4vc3VuYnVyc3QvYXR0cmlidXRlcyI6 MTA0OSwiLi4vdHJlZW1hcC9hdHRyaWJ1dGVzIjoxMDc1LCIuLi90cmVlbWFwL2NvbnN0YW50 cyI6MTA3OH1dLDgzNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIu Li8uLi9wbG90cy9wbG90cyIpO3IubmFtZT0iaWNpY2xlIixyLnBsb3Q9ZnVuY3Rpb24odCxl LGksYSl7bi5wbG90QmFzZVBsb3Qoci5uYW1lLHQsZSxpLGEpfSxyLmNsZWFuPWZ1bmN0aW9u KHQsZSxpLGEpe24uY2xlYW5CYXNlUGxvdChyLm5hbWUsdCxlLGksYSl9fSx7Ii4uLy4uL3Bs b3RzL3Bsb3RzIjo2MTl9XSw4MzY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgiLi4vc3VuYnVyc3QvY2FsYyIpO3IuY2FsYz1mdW5jdGlvbih0LGUpe3JldHVybiBu LmNhbGModCxlKX0sci5jcm9zc1RyYWNlQ2FsYz1mdW5jdGlvbih0KXtyZXR1cm4gbi5fcnVu Q3Jvc3NUcmFjZUNhbGMoImljaWNsZSIsdCl9fSx7Ii4uL3N1bmJ1cnN0L2NhbGMiOjEwNTF9 XSw4Mzc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGli IiksaT10KCIuL2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxv PXQoIi4uLy4uL3Bsb3RzL2RvbWFpbiIpLmRlZmF1bHRzLHM9dCgiLi4vYmFyL2RlZmF1bHRz IikuaGFuZGxlVGV4dCxsPXQoIi4uL2Jhci9jb25zdGFudHMiKS5URVhUUEFELGM9dCgiLi4v Li4vY29tcG9uZW50cy9jb2xvcnNjYWxlIiksdT1jLmhhc0NvbG9yc2NhbGUsZj1jLmhhbmRs ZURlZmF1bHRzO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixjKXtmdW5jdGlvbiBoKHIsYSl7 cmV0dXJuIG4uY29lcmNlKHQsZSxpLHIsYSl9dmFyIHA9aCgibGFiZWxzIiksZD1oKCJwYXJl bnRzIik7aWYocCYmcC5sZW5ndGgmJmQmJmQubGVuZ3RoKXt2YXIgbT1oKCJ2YWx1ZXMiKTtt JiZtLmxlbmd0aD9oKCJicmFuY2h2YWx1ZXMiKTpoKCJjb3VudCIpLGgoImxldmVsIiksaCgi bWF4ZGVwdGgiKSxoKCJ0aWxpbmcub3JpZW50YXRpb24iKSxoKCJ0aWxpbmcuZmxpcCIpLGgo InRpbGluZy5wYWQiKTt2YXIgZz1oKCJ0ZXh0Iik7aCgidGV4dHRlbXBsYXRlIiksZS50ZXh0 dGVtcGxhdGV8fGgoInRleHRpbmZvIixBcnJheS5pc0FycmF5KGcpPyJ0ZXh0K2xhYmVsIjoi bGFiZWwiKSxoKCJob3ZlcnRleHQiKSxoKCJob3ZlcnRlbXBsYXRlIik7dmFyIHY9aCgicGF0 aGJhci52aXNpYmxlIik7cyh0LGUsYyxoLCJhdXRvIix7aGFzUGF0aGJhcjp2LG1vZHVsZUhh c1NlbGVjdGVkOiExLG1vZHVsZUhhc1Vuc2VsZWN0ZWQ6ITEsbW9kdWxlSGFzQ29uc3RyYWlu OiExLG1vZHVsZUhhc0NsaXBvbmF4aXM6ITEsbW9kdWxlSGFzVGV4dGFuZ2xlOiExLG1vZHVs ZUhhc0luc2lkZWFuY2hvcjohMX0pLGgoInRleHRwb3NpdGlvbiIpLGgoIm1hcmtlci5saW5l LndpZHRoIikmJmgoIm1hcmtlci5saW5lLmNvbG9yIixjLnBhcGVyX2JnY29sb3IpLGgoIm1h cmtlci5jb2xvcnMiKTt2YXIgeT1lLl9oYXNDb2xvcnNjYWxlPXUodCwibWFya2VyIiwiY29s b3JzIil8fCh0Lm1hcmtlcnx8e30pLmNvbG9yYXhpczt5JiZmKHQsZSxjLGgse3ByZWZpeDoi bWFya2VyLiIsY0xldHRlcjoiYyJ9KSxoKCJsZWFmLm9wYWNpdHkiLHk/MTouNyksZS5faG92 ZXJlZD17bWFya2VyOntsaW5lOnt3aWR0aDoyLGNvbG9yOmEuY29udHJhc3QoYy5wYXBlcl9i Z2NvbG9yKX19fSx2JiYoaCgicGF0aGJhci50aGlja25lc3MiLGUucGF0aGJhci50ZXh0Zm9u dC5zaXplKzIqbCksaCgicGF0aGJhci5zaWRlIiksaCgicGF0aGJhci5lZGdlc2hhcGUiKSks aCgic29ydCIpLGgoInJvb3QuY29sb3IiKSxvKGUsYyxoKSxlLl9sZW5ndGg9bnVsbH1lbHNl IGUudmlzaWJsZT0hMX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6MzY2LCIuLi8uLi9j b21wb25lbnRzL2NvbG9yc2NhbGUiOjM3OCwiLi4vLi4vbGliIjo1MDMsIi4uLy4uL3Bsb3Rz L2RvbWFpbiI6NTg0LCIuLi9iYXIvY29uc3RhbnRzIjo2NTAsIi4uL2Jhci9kZWZhdWx0cyI6 NjUyLCIuL2F0dHJpYnV0ZXMiOjgzNH1dLDgzODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj10KCJAcGxvdGx5L2QzIiksaT10KCIuLi8uLi9saWIiKSxhPXQoIi4uLy4u L2NvbXBvbmVudHMvZHJhd2luZyIpLG89dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIiks cz10KCIuL3BhcnRpdGlvbiIpLGw9dCgiLi9zdHlsZSIpLnN0eWxlT25lLGM9dCgiLi4vdHJl ZW1hcC9jb25zdGFudHMiKSx1PXQoIi4uL3N1bmJ1cnN0L2hlbHBlcnMiKSxmPXQoIi4uL3N1 bmJ1cnN0L2Z4IiksaD10KCIuLi9zdW5idXJzdC9wbG90IikuZm9ybWF0U2xpY2VMYWJlbDtl LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIscCxkKXt2YXIgbT1kLndpZHRoLGc9ZC5oZWlnaHQs dj1kLnZpZXdYLHk9ZC52aWV3WSx4PWQucGF0aFNsaWNlLGI9ZC50b01vdmVJbnNpZGVTbGlj ZSxfPWQuc3RyVHJhbnNmb3JtLHc9ZC5oYXNUcmFuc2l0aW9uLFQ9ZC5oYW5kbGVTbGljZXNF eGl0LGs9ZC5tYWtlVXBkYXRlU2xpY2VJbnRlcnBvbGF0b3IsQT1kLm1ha2VVcGRhdGVUZXh0 SW50ZXJwb2xhdG9yLE09ZC5wcmV2RW50cnksUz10Ll9mdWxsTGF5b3V0LEU9ZVswXS50cmFj ZSxMPS0xIT09RS50ZXh0cG9zaXRpb24uaW5kZXhPZigibGVmdCIpLEM9LTEhPT1FLnRleHRw b3NpdGlvbi5pbmRleE9mKCJyaWdodCIpLFA9LTEhPT1FLnRleHRwb3NpdGlvbi5pbmRleE9m KCJib3R0b20iKSxJPXMocixbbSxnXSx7ZmxpcFg6RS50aWxpbmcuZmxpcC5pbmRleE9mKCJ4 Iik+LTEsZmxpcFk6RS50aWxpbmcuZmxpcC5pbmRleE9mKCJ5Iik+LTEsb3JpZW50YXRpb246 RS50aWxpbmcub3JpZW50YXRpb24scGFkOntpbm5lcjpFLnRpbGluZy5wYWR9LG1heERlcHRo OkUuX21heERlcHRofSkuZGVzY2VuZGFudHMoKSxPPTEvMCx6PS0xLzA7SS5mb3JFYWNoKChm dW5jdGlvbih0KXt2YXIgZT10LmRlcHRoO2U+PUUuX21heERlcHRoPyh0LngwPXQueDE9KHQu eDArdC54MSkvMix0LnkwPXQueTE9KHQueTArdC55MSkvMik6KE89TWF0aC5taW4oTyxlKSx6 PU1hdGgubWF4KHosZSkpfSkpLHA9cC5kYXRhKEksdS5nZXRQdElkKSxFLl9tYXhWaXNpYmxl TGF5ZXJzPWlzRmluaXRlKHopP3otTysxOjAscC5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNz ZWQoInNsaWNlIiwhMCksVChwLCExLHt9LFttLGddLHgpLHAub3JkZXIoKTt2YXIgRD1udWxs O2lmKHcmJk0pe3ZhciBSPXUuZ2V0UHRJZChNKTtwLmVhY2goKGZ1bmN0aW9uKHQpe251bGw9 PT1EJiZ1LmdldFB0SWQodCk9PT1SJiYoRD17eDA6dC54MCx4MTp0LngxLHkwOnQueTAseTE6 dC55MX0pfSkpfXZhciBGPWZ1bmN0aW9uKCl7cmV0dXJuIER8fHt4MDowLHgxOm0seTA6MCx5 MTpnfX0sQj1wO3JldHVybiB3JiYoQj1CLnRyYW5zaXRpb24oKS5lYWNoKCJlbmQiLChmdW5j dGlvbigpe3ZhciBlPW4uc2VsZWN0KHRoaXMpO3Uuc2V0U2xpY2VDdXJzb3IoZSx0LHtoaWRl T25Sb290OiEwLGhpZGVPbkxlYXZlczohMSxpc1RyYW5zaXRpb25pbmc6ITF9KX0pKSksQi5l YWNoKChmdW5jdGlvbihzKXtzLl94MD12KHMueDApLHMuX3gxPXYocy54MSkscy5feTA9eShz LnkwKSxzLl95MT15KHMueTEpLHMuX2hvdmVyWD12KHMueDEtRS50aWxpbmcucGFkKSxzLl9o b3Zlclk9eShQP3MueTEtRS50aWxpbmcucGFkLzI6cy55MCtFLnRpbGluZy5wYWQvMik7dmFy IHA9bi5zZWxlY3QodGhpcyksZD1pLmVuc3VyZVNpbmdsZShwLCJwYXRoIiwic3VyZmFjZSIs KGZ1bmN0aW9uKHQpe3Quc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIil9KSk7dz9kLnRy YW5zaXRpb24oKS5hdHRyVHdlZW4oImQiLChmdW5jdGlvbih0KXt2YXIgZT1rKHQsITEsRigp LFttLGddLHtvcmllbnRhdGlvbjpFLnRpbGluZy5vcmllbnRhdGlvbixmbGlwWDpFLnRpbGlu Zy5mbGlwLmluZGV4T2YoIngiKT4tMSxmbGlwWTpFLnRpbGluZy5mbGlwLmluZGV4T2YoInki KT4tMX0pO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4geChlKHQpKX19KSk6ZC5hdHRyKCJk Iix4KSxwLmNhbGwoZixyLHQsZSx7c3R5bGVPbmU6bCxldmVudERhdGFLZXlzOmMuZXZlbnRE YXRhS2V5cyx0cmFuc2l0aW9uVGltZTpjLkNMSUNLX1RSQU5TSVRJT05fVElNRSx0cmFuc2l0 aW9uRWFzaW5nOmMuQ0xJQ0tfVFJBTlNJVElPTl9FQVNJTkd9KS5jYWxsKHUuc2V0U2xpY2VD dXJzb3IsdCx7aXNUcmFuc2l0aW9uaW5nOnQuX3RyYW5zaXRpb25pbmd9KSxkLmNhbGwobCxz LEUse2hvdmVyZWQ6ITF9KSxzLngwPT09cy54MXx8cy55MD09PXMueTE/cy5fdGV4dD0iIjpz Ll90ZXh0PWgocyxyLEUsZSxTKXx8IiI7dmFyIFQ9aS5lbnN1cmVTaW5nbGUocCwiZyIsInNs aWNldGV4dCIpLE09aS5lbnN1cmVTaW5nbGUoVCwidGV4dCIsIiIsKGZ1bmN0aW9uKHQpe3Qu YXR0cigiZGF0YS1ub3RleCIsMSl9KSksST1pLmVuc3VyZVVuaWZvcm1Gb250U2l6ZSh0LHUu ZGV0ZXJtaW5lVGV4dEZvbnQoRSxzLFMuZm9udCkpO00udGV4dChzLl90ZXh0fHwiICIpLmNs YXNzZWQoInNsaWNldGV4dCIsITApLmF0dHIoInRleHQtYW5jaG9yIixDPyJlbmQiOkw/InN0 YXJ0IjoibWlkZGxlIikuY2FsbChhLmZvbnQsSSkuY2FsbChvLmNvbnZlcnRUb1RzcGFucyx0 KSxzLnRleHRCQj1hLmJCb3goTS5ub2RlKCkpLHMudHJhbnNmb3JtPWIocyx7Zm9udFNpemU6 SS5zaXplfSkscy50cmFuc2Zvcm0uZm9udFNpemU9SS5zaXplLHc/TS50cmFuc2l0aW9uKCku YXR0clR3ZWVuKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXt2YXIgZT1BKHQsITEsRigpLFtt LGddKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIF8oZSh0KSl9fSkpOk0uYXR0cigidHJh bnNmb3JtIixfKHMpKX0pKSxEfX0seyIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjM4OCwi Li4vLi4vbGliIjo1MDMsIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyI6NTI5LCIuLi9zdW5i dXJzdC9meCI6MTA1NCwiLi4vc3VuYnVyc3QvaGVscGVycyI6MTA1NSwiLi4vc3VuYnVyc3Qv cGxvdCI6MTA1OSwiLi4vdHJlZW1hcC9jb25zdGFudHMiOjEwNzgsIi4vcGFydGl0aW9uIjo4 NDIsIi4vc3R5bGUiOjg0NCwiQHBsb3RseS9kMyI6NTh9XSw4Mzk6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXttb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToiaWNp Y2xlIixiYXNlUGxvdE1vZHVsZTp0KCIuL2Jhc2VfcGxvdCIpLGNhdGVnb3JpZXM6W10sYW5p bWF0YWJsZTohMCxhdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLGxheW91dEF0dHJpYnV0 ZXM6dCgiLi9sYXlvdXRfYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVs dHMiKSxzdXBwbHlMYXlvdXREZWZhdWx0czp0KCIuL2xheW91dF9kZWZhdWx0cyIpLGNhbGM6 dCgiLi9jYWxjIikuY2FsYyxjcm9zc1RyYWNlQ2FsYzp0KCIuL2NhbGMiKS5jcm9zc1RyYWNl Q2FsYyxwbG90OnQoIi4vcGxvdCIpLHN0eWxlOnQoIi4vc3R5bGUiKS5zdHlsZSxjb2xvcmJh cjp0KCIuLi9zY2F0dGVyL21hcmtlcl9jb2xvcmJhciIpLG1ldGE6e319fSx7Ii4uL3NjYXR0 ZXIvbWFya2VyX2NvbG9yYmFyIjo5NDUsIi4vYXR0cmlidXRlcyI6ODM0LCIuL2Jhc2VfcGxv dCI6ODM1LCIuL2NhbGMiOjgzNiwiLi9kZWZhdWx0cyI6ODM3LCIuL2xheW91dF9hdHRyaWJ1 dGVzIjo4NDAsIi4vbGF5b3V0X2RlZmF1bHRzIjo4NDEsIi4vcGxvdCI6ODQzLCIuL3N0eWxl Ijo4NDR9XSw4NDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtp Y2ljbGVjb2xvcndheTp7dmFsVHlwZToiY29sb3JsaXN0IixlZGl0VHlwZToiY2FsYyJ9LGV4 dGVuZGljaWNsZWNvbG9yczp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMCxlZGl0VHlwZToi Y2FsYyJ9fX0se31dLDg0MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCIuLi8uLi9saWIiKSxpPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlKXtmdW5jdGlvbiByKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxpLHIsYSl9 cigiaWNpY2xlY29sb3J3YXkiLGUuY29sb3J3YXkpLHIoImV4dGVuZGljaWNsZWNvbG9ycyIp fX0seyIuLi8uLi9saWIiOjUwMywiLi9sYXlvdXRfYXR0cmlidXRlcyI6ODQwfV0sODQyOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzLWhpZXJhcmNoeSIpLGk9 dCgiLi4vdHJlZW1hcC9mbGlwX3RyZWUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3Zh ciBhPXIuZmxpcFgsbz1yLmZsaXBZLHM9ImgiPT09ci5vcmllbnRhdGlvbixsPXIubWF4RGVw dGgsYz1lWzBdLHU9ZVsxXTtsJiYoYz0odC5oZWlnaHQrMSkqZVswXS9NYXRoLm1pbih0Lmhl aWdodCsxLGwpLHU9KHQuaGVpZ2h0KzEpKmVbMV0vTWF0aC5taW4odC5oZWlnaHQrMSxsKSk7 dmFyIGY9bi5wYXJ0aXRpb24oKS5wYWRkaW5nKHIucGFkLmlubmVyKS5zaXplKHM/W2VbMV0s Y106W2VbMF0sdV0pKHQpO3JldHVybihzfHxhfHxvKSYmaShmLGUse3N3YXBYWTpzLGZsaXBY OmEsZmxpcFk6b30pLGZ9fSx7Ii4uL3RyZWVtYXAvZmxpcF90cmVlIjoxMDgzLCJkMy1oaWVy YXJjaHkiOjExNX1dLDg0MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCIuLi90cmVlbWFwL2RyYXciKSxpPXQoIi4vZHJhd19kZXNjZW5kYW50cyIpO2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUscixhKXtyZXR1cm4gbih0LGUscixhLHt0eXBlOiJpY2ljbGUiLGRy YXdEZXNjZW5kYW50czppfSl9fSx7Ii4uL3RyZWVtYXAvZHJhdyI6MTA4MCwiLi9kcmF3X2Rl c2NlbmRhbnRzIjo4Mzh9XSw4NDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgiQHBsb3RseS9kMyIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGE9dCgi Li4vLi4vbGliIiksbz10KCIuLi9iYXIvdW5pZm9ybV90ZXh0IikucmVzaXplVGV4dDtmdW5j dGlvbiBzKHQsZSxyKXt2YXIgbj1lLmRhdGEuZGF0YSxvPSFlLmNoaWxkcmVuLHM9bi5pLGw9 YS5jYXN0T3B0aW9uKHIscywibWFya2VyLmxpbmUuY29sb3IiKXx8aS5kZWZhdWx0TGluZSxj PWEuY2FzdE9wdGlvbihyLHMsIm1hcmtlci5saW5lLndpZHRoIil8fDA7dC5zdHlsZSgic3Ry b2tlLXdpZHRoIixjKS5jYWxsKGkuZmlsbCxuLmNvbG9yKS5jYWxsKGkuc3Ryb2tlLGwpLnN0 eWxlKCJvcGFjaXR5IixvP3IubGVhZi5vcGFjaXR5Om51bGwpfWUuZXhwb3J0cz17c3R5bGU6 ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dC5faWNpY2xlbGF5ZXIuc2VsZWN0QWxs KCIudHJhY2UiKTtvKHQsZSwiaWNpY2xlIiksZS5lYWNoKChmdW5jdGlvbih0KXt2YXIgZT1u LnNlbGVjdCh0aGlzKSxyPXRbMF0udHJhY2U7ZS5zdHlsZSgib3BhY2l0eSIsci5vcGFjaXR5 KSxlLnNlbGVjdEFsbCgicGF0aC5zdXJmYWNlIikuZWFjaCgoZnVuY3Rpb24odCl7bi5zZWxl Y3QodGhpcykuY2FsbChzLHQscil9KSl9KSl9LHN0eWxlT25lOnN9fSx7Ii4uLy4uL2NvbXBv bmVudHMvY29sb3IiOjM2NiwiLi4vLi4vbGliIjo1MDMsIi4uL2Jhci91bmlmb3JtX3RleHQi OjY2NCwiQHBsb3RseS9kMyI6NTh9XSw4NDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7Zm9yKHZhciBuPXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL3Bs b3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsYT10KCIuLi8u Li9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxvPXQoIi4vY29uc3RhbnRzIikuY29sb3Jtb2Rl bCxzPVsicmdiIiwicmdiYSIsInJnYmEyNTYiLCJoc2wiLCJoc2xhIl0sbD1bXSxjPVtdLHU9 MDt1PHMubGVuZ3RoO3UrKyl7dmFyIGY9b1tzW3VdXTtsLnB1c2goIkZvciB0aGUgYCIrc1t1 XSsiYCBjb2xvcm1vZGVsLCBpdCBpcyBbIisoZi56bWluRGZsdHx8Zi5taW4pLmpvaW4oIiwg IikrIl0uIiksYy5wdXNoKCJGb3IgdGhlIGAiK3NbdV0rImAgY29sb3Jtb2RlbCwgaXQgaXMg WyIrKGYuem1heERmbHR8fGYubWF4KS5qb2luKCIsICIpKyJdLiIpfWUuZXhwb3J0cz1hKHtz b3VyY2U6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6ImNhbGMifSx6Ont2YWxUeXBlOiJk YXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LGNvbG9ybW9kZWw6e3ZhbFR5cGU6ImVudW1l cmF0ZWQiLHZhbHVlczpzLGVkaXRUeXBlOiJjYWxjIn0senNtb290aDp7dmFsVHlwZToiZW51 bWVyYXRlZCIsdmFsdWVzOlsiZmFzdCIsITFdLGRmbHQ6ITEsZWRpdFR5cGU6InBsb3QifSx6 bWluOnt2YWxUeXBlOiJpbmZvX2FycmF5IixpdGVtczpbe3ZhbFR5cGU6Im51bWJlciIsZWRp dFR5cGU6ImNhbGMifSx7dmFsVHlwZToibnVtYmVyIixlZGl0VHlwZToiY2FsYyJ9LHt2YWxU eXBlOiJudW1iZXIiLGVkaXRUeXBlOiJjYWxjIn0se3ZhbFR5cGU6Im51bWJlciIsZWRpdFR5 cGU6ImNhbGMifV0sZWRpdFR5cGU6ImNhbGMifSx6bWF4Ont2YWxUeXBlOiJpbmZvX2FycmF5 IixpdGVtczpbe3ZhbFR5cGU6Im51bWJlciIsZWRpdFR5cGU6ImNhbGMifSx7dmFsVHlwZToi bnVtYmVyIixlZGl0VHlwZToiY2FsYyJ9LHt2YWxUeXBlOiJudW1iZXIiLGVkaXRUeXBlOiJj YWxjIn0se3ZhbFR5cGU6Im51bWJlciIsZWRpdFR5cGU6ImNhbGMifV0sZWRpdFR5cGU6ImNh bGMifSx4MDp7dmFsVHlwZToiYW55IixkZmx0OjAsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlz VHlwZXMifSx5MDp7dmFsVHlwZToiYW55IixkZmx0OjAsZWRpdFR5cGU6ImNhbGMrY2xlYXJB eGlzVHlwZXMifSxkeDp7dmFsVHlwZToibnVtYmVyIixkZmx0OjEsZWRpdFR5cGU6ImNhbGMi fSxkeTp7dmFsVHlwZToibnVtYmVyIixkZmx0OjEsZWRpdFR5cGU6ImNhbGMifSx0ZXh0Ont2 YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToicGxvdCJ9LGhvdmVydGV4dDp7dmFsVHlw ZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6InBsb3QifSxob3ZlcmluZm86YSh7fSxuLmhvdmVy aW5mbyx7ZmxhZ3M6WyJ4IiwieSIsInoiLCJjb2xvciIsIm5hbWUiLCJ0ZXh0Il0sZGZsdDoi eCt5K3ordGV4dCtuYW1lIn0pLGhvdmVydGVtcGxhdGU6aSh7fSx7a2V5czpbInoiLCJjb2xv ciIsImNvbG9ybW9kZWwiXX0pLHRyYW5zZm9ybXM6dm9pZCAwfSl9LHsiLi4vLi4vbGliL2V4 dGVuZCI6NDkzLCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIjo1NTAsIi4uLy4uL3Bsb3RzL3Rl bXBsYXRlX2F0dHJpYnV0ZXMiOjYzMywiLi9jb25zdGFudHMiOjg0N31dLDg0NjpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4vY29u c3RhbnRzIiksYT10KCJmYXN0LWlzbnVtZXJpYyIpLG89dCgiLi4vLi4vcGxvdHMvY2FydGVz aWFuL2F4ZXMiKSxzPXQoIi4uLy4uL2xpYiIpLm1heFJvd0xlbmd0aCxsPXQoIi4vaGVscGVy cyIpLmdldEltYWdlU2l6ZTtmdW5jdGlvbiBjKHQsZSxyLGkpe3JldHVybiBmdW5jdGlvbihh KXtyZXR1cm4gbi5jb25zdHJhaW4oKGEtdCkqZSxyLGkpfX1mdW5jdGlvbiB1KHQsZSl7cmV0 dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBuLmNvbnN0cmFpbihyLHQsZSl9fWUuZXhwb3J0cz1m dW5jdGlvbih0LGUpe3ZhciByLG47aWYoZS5faGFzWilyPWUuei5sZW5ndGgsbj1zKGUueik7 ZWxzZSBpZihlLl9oYXNTb3VyY2Upe3ZhciBmPWwoZS5zb3VyY2UpO3I9Zi5oZWlnaHQsbj1m LndpZHRofXZhciBoLHA9by5nZXRGcm9tSWQodCxlLnhheGlzfHwieCIpLGQ9by5nZXRGcm9t SWQodCxlLnlheGlzfHwieSIpLG09cC5kMmMoZS54MCktZS5keC8yLGc9ZC5kMmMoZS55MCkt ZS5keS8yLHY9W20sbStuKmUuZHhdLHk9W2csZytyKmUuZHldO2lmKHAmJiJsb2ciPT09cC50 eXBlKWZvcihoPTA7aDxuO2grKyl2LnB1c2gobStoKmUuZHgpO2lmKGQmJiJsb2ciPT09ZC50 eXBlKWZvcihoPTA7aDxyO2grKyl5LnB1c2goZytoKmUuZHkpO3JldHVybiBlLl9leHRyZW1l c1twLl9pZF09by5maW5kRXh0cmVtZXMocCx2KSxlLl9leHRyZW1lc1tkLl9pZF09by5maW5k RXh0cmVtZXMoZCx5KSxlLl9zY2FsZXI9ZnVuY3Rpb24odCl7dmFyIGU9aS5jb2xvcm1vZGVs W3QuY29sb3Jtb2RlbF0scj0oZS5jb2xvcm1vZGVsfHx0LmNvbG9ybW9kZWwpLmxlbmd0aDt0 Ll9zQXJyYXk9W107Zm9yKHZhciBuPTA7bjxyO24rKyllLm1pbltuXSE9PXQuem1pbltuXXx8 ZS5tYXhbbl0hPT10LnptYXhbbl0/dC5fc0FycmF5LnB1c2goYyh0LnptaW5bbl0sKGUubWF4 W25dLWUubWluW25dKS8odC56bWF4W25dLXQuem1pbltuXSksZS5taW5bbl0sZS5tYXhbbl0p KTp0Ll9zQXJyYXkucHVzaCh1KGUubWluW25dLGUubWF4W25dKSk7cmV0dXJuIGZ1bmN0aW9u KGUpe2Zvcih2YXIgbj1lLnNsaWNlKDAsciksaT0wO2k8cjtpKyspe3ZhciBvPW5baV07aWYo IWEobykpcmV0dXJuITE7bltpXT10Ll9zQXJyYXlbaV0obyl9cmV0dXJuIG59fShlKSxbe3gw Om0seTA6Zyx6OmUueix3Om4saDpyfV19fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4vYXhlcyI6NTU0LCIuL2NvbnN0YW50cyI6ODQ3LCIuL2hlbHBlcnMiOjg1 MCwiZmFzdC1pc251bWVyaWMiOjE5MH1dLDg0NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0IjtlLmV4cG9ydHM9e2NvbG9ybW9kZWw6e3JnYjp7bWluOlswLDAsMF0sbWF4OlsyNTUs MjU1LDI1NV0sZm10OmZ1bmN0aW9uKHQpe3JldHVybiB0LnNsaWNlKDAsMyl9LHN1ZmZpeDpb IiIsIiIsIiJdfSxyZ2JhOnttaW46WzAsMCwwLDBdLG1heDpbMjU1LDI1NSwyNTUsMV0sZm10 OmZ1bmN0aW9uKHQpe3JldHVybiB0LnNsaWNlKDAsNCl9LHN1ZmZpeDpbIiIsIiIsIiIsIiJd fSxyZ2JhMjU2Ontjb2xvcm1vZGVsOiJyZ2JhIix6bWluRGZsdDpbMCwwLDAsMF0sem1heERm bHQ6WzI1NSwyNTUsMjU1LDI1NV0sbWluOlswLDAsMCwwXSxtYXg6WzI1NSwyNTUsMjU1LDFd LGZtdDpmdW5jdGlvbih0KXtyZXR1cm4gdC5zbGljZSgwLDQpfSxzdWZmaXg6WyIiLCIiLCIi LCIiXX0saHNsOnttaW46WzAsMCwwXSxtYXg6WzM2MCwxMDAsMTAwXSxmbXQ6ZnVuY3Rpb24o dCl7dmFyIGU9dC5zbGljZSgwLDMpO3JldHVybiBlWzFdPWVbMV0rIiUiLGVbMl09ZVsyXSsi JSIsZX0sc3VmZml4OlsiXHhiMCIsIiUiLCIlIl19LGhzbGE6e21pbjpbMCwwLDAsMF0sbWF4 OlszNjAsMTAwLDEwMCwxXSxmbXQ6ZnVuY3Rpb24odCl7dmFyIGU9dC5zbGljZSgwLDQpO3Jl dHVybiBlWzFdPWVbMV0rIiUiLGVbMl09ZVsyXSsiJSIsZX0sc3VmZml4OlsiXHhiMCIsIiUi LCIlIiwiIl19fSxwaXhlbGF0ZWRTdHlsZTpbImltYWdlLXJlbmRlcmluZzogb3B0aW1pemVT cGVlZCIsImltYWdlLXJlbmRlcmluZzogLW1vei1jcmlzcC1lZGdlcyIsImltYWdlLXJlbmRl cmluZzogLW8tY3Jpc3AtZWRnZXMiLCJpbWFnZS1yZW5kZXJpbmc6IC13ZWJraXQtb3B0aW1p emUtY29udHJhc3QiLCJpbWFnZS1yZW5kZXJpbmc6IG9wdGltaXplLWNvbnRyYXN0IiwiaW1h Z2UtcmVuZGVyaW5nOiBjcmlzcC1lZGdlcyIsImltYWdlLXJlbmRlcmluZzogcGl4ZWxhdGVk IiwiIl0uam9pbigiOyAiKX19LHt9XSw4NDg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuL2F0dHJpYnV0ZXMiKSxhPXQoIi4vY29u c3RhbnRzIiksbz10KCIuLi8uLi9zbmFwc2hvdC9oZWxwZXJzIikuSU1BR0VfVVJMX1BSRUZJ WDtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKHIsYSl7cmV0dXJuIG4uY29l cmNlKHQsZSxpLHIsYSl9cigic291cmNlIiksZS5zb3VyY2UmJiFlLnNvdXJjZS5tYXRjaChv KSYmZGVsZXRlIGUuc291cmNlLGUuX2hhc1NvdXJjZT0hIWUuc291cmNlO3ZhciBzLGw9cigi eiIpOyhlLl9oYXNaPSEodm9pZCAwPT09bHx8IWwubGVuZ3RofHwhbFswXXx8IWxbMF0ubGVu Z3RoKSxlLl9oYXNafHxlLl9oYXNTb3VyY2UpPyhyKCJ4MCIpLHIoInkwIikscigiZHgiKSxy KCJkeSIpLGUuX2hhc1o/KHIoImNvbG9ybW9kZWwiLCJyZ2IiKSxyKCJ6bWluIiwocz1hLmNv bG9ybW9kZWxbZS5jb2xvcm1vZGVsXSkuem1pbkRmbHR8fHMubWluKSxyKCJ6bWF4IixzLnpt YXhEZmx0fHxzLm1heCkpOmUuX2hhc1NvdXJjZSYmKGUuY29sb3Jtb2RlbD0icmdiYTI1NiIs cz1hLmNvbG9ybW9kZWxbZS5jb2xvcm1vZGVsXSxlLnptaW49cy56bWluRGZsdCxlLnptYXg9 cy56bWF4RGZsdCkscigienNtb290aCIpLHIoInRleHQiKSxyKCJob3ZlcnRleHQiKSxyKCJo b3ZlcnRlbXBsYXRlIiksZS5fbGVuZ3RoPW51bGwpOmUudmlzaWJsZT0hMX19LHsiLi4vLi4v bGliIjo1MDMsIi4uLy4uL3NuYXBzaG90L2hlbHBlcnMiOjY0MiwiLi9hdHRyaWJ1dGVzIjo4 NDUsIi4vY29uc3RhbnRzIjo4NDd9XSw4NDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuInhWYWwiaW4gZSYmKHQueD1lLnhW YWwpLCJ5VmFsImluIGUmJih0Lnk9ZS55VmFsKSxlLnhhJiYodC54YXhpcz1lLnhhKSxlLnlh JiYodC55YXhpcz1lLnlhKSx0LmNvbG9yPWUuY29sb3IsdC5jb2xvcm1vZGVsPWUudHJhY2Uu Y29sb3Jtb2RlbCx0Lnp8fCh0Lno9ZS5jb2xvciksdH19LHt9XSw4NTA6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgicHJvYmUtaW1hZ2Utc2l6ZS9zeW5jIiksaT10 KCIuLi8uLi9zbmFwc2hvdC9oZWxwZXJzIikuSU1BR0VfVVJMX1BSRUZJWCxhPXQoImJ1ZmZl ci8iKS5CdWZmZXI7ci5nZXRJbWFnZVNpemU9ZnVuY3Rpb24odCl7dmFyIGU9dC5yZXBsYWNl KGksIiIpLHI9bmV3IGEoZSwiYmFzZTY0Iik7cmV0dXJuIG4ocil9fSx7Ii4uLy4uL3NuYXBz aG90L2hlbHBlcnMiOjY0MiwiYnVmZmVyLyI6ODUsInByb2JlLWltYWdlLXNpemUvc3luYyI6 Mjc2fV0sODUxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4u L2NvbXBvbmVudHMvZngiKSxpPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi9jb25zdGFudHMiKTtl LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBvPXQuY2RbMF0scz1vLnRyYWNlLGw9dC54 YSxjPXQueWE7aWYoIShuLmluYm94KGUtby54MCxlLShvLngwK28udypzLmR4KSwwKT4wfHxu LmluYm94KHItby55MCxyLShvLnkwK28uaCpzLmR5KSwwKT4wKSl7dmFyIHUsZj1NYXRoLmZs b29yKChlLW8ueDApL3MuZHgpLGg9TWF0aC5mbG9vcihNYXRoLmFicyhyLW8ueTApL3MuZHkp O2lmKHMuX2hhc1o/dT1vLnpbaF1bZl06cy5faGFzU291cmNlJiYodT1zLl9jYW52YXMuZWwu Z2V0Q29udGV4dCgiMmQiLHt3aWxsUmVhZEZyZXF1ZW50bHk6ITB9KS5nZXRJbWFnZURhdGEo ZixoLDEsMSkuZGF0YSksdSl7dmFyIHAsZD1vLmhpfHxzLmhvdmVyaW5mbztpZihkKXt2YXIg bT1kLnNwbGl0KCIrIik7LTEhPT1tLmluZGV4T2YoImFsbCIpJiYobT1bImNvbG9yIl0pLC0x IT09bS5pbmRleE9mKCJjb2xvciIpJiYocD0hMCl9dmFyIGcsdj1hLmNvbG9ybW9kZWxbcy5j b2xvcm1vZGVsXSx5PXYuY29sb3Jtb2RlbHx8cy5jb2xvcm1vZGVsLHg9eS5sZW5ndGgsYj1z Ll9zY2FsZXIodSksXz12LnN1ZmZpeCx3PVtdOyhzLmhvdmVydGVtcGxhdGV8fHApJiYody5w dXNoKCJbIitbYlswXStfWzBdLGJbMV0rX1sxXSxiWzJdK19bMl1dLmpvaW4oIiwgIikpLDQ9 PT14JiZ3LnB1c2goIiwgIitiWzNdK19bM10pLHcucHVzaCgiXSIpLHc9dy5qb2luKCIiKSx0 LmV4dHJhVGV4dD15LnRvVXBwZXJDYXNlKCkrIjogIit3KSxBcnJheS5pc0FycmF5KHMuaG92 ZXJ0ZXh0KSYmQXJyYXkuaXNBcnJheShzLmhvdmVydGV4dFtoXSk/Zz1zLmhvdmVydGV4dFto XVtmXTpBcnJheS5pc0FycmF5KHMudGV4dCkmJkFycmF5LmlzQXJyYXkocy50ZXh0W2hdKSYm KGc9cy50ZXh0W2hdW2ZdKTt2YXIgVD1jLmMycChvLnkwKyhoKy41KSpzLmR5KSxrPW8ueDAr KGYrLjUpKnMuZHgsQT1vLnkwKyhoKy41KSpzLmR5LE09IlsiK3Uuc2xpY2UoMCxzLmNvbG9y bW9kZWwubGVuZ3RoKS5qb2luKCIsICIpKyJdIjtyZXR1cm5baS5leHRlbmRGbGF0KHQse2lu ZGV4OltoLGZdLHgwOmwuYzJwKG8ueDArZipzLmR4KSx4MTpsLmMycChvLngwKyhmKzEpKnMu ZHgpLHkwOlQseTE6VCxjb2xvcjpiLHhWYWw6ayx4TGFiZWxWYWw6ayx5VmFsOkEseUxhYmVs VmFsOkEsekxhYmVsVmFsOk0sdGV4dDpnLGhvdmVydGVtcGxhdGVMYWJlbHM6e3pMYWJlbDpN LGNvbG9yTGFiZWw6dywiY29sb3JbMF1MYWJlbCI6YlswXStfWzBdLCJjb2xvclsxXUxhYmVs IjpiWzFdK19bMV0sImNvbG9yWzJdTGFiZWwiOmJbMl0rX1syXSwiY29sb3JbM11MYWJlbCI6 YlszXStfWzNdfX0pXX19fX0seyIuLi8uLi9jb21wb25lbnRzL2Z4Ijo0MDYsIi4uLy4uL2xp YiI6NTAzLCIuL2NvbnN0YW50cyI6ODQ3fV0sODUyOltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO2UuZXhwb3J0cz17YXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlE ZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY2FsYzp0KCIuL2NhbGMiKSxwbG90OnQoIi4vcGxv dCIpLHN0eWxlOnQoIi4vc3R5bGUiKSxob3ZlclBvaW50czp0KCIuL2hvdmVyIiksZXZlbnRE YXRhOnQoIi4vZXZlbnRfZGF0YSIpLG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJpbWFnZSIs YmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuIiksY2F0ZWdvcmllczpb ImNhcnRlc2lhbiIsInN2ZyIsIjJkTWFwIiwibm9Tb3J0aW5nQnlWYWx1ZSJdLGFuaW1hdGFi bGU6ITEsbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuIjo1NjgsIi4vYXR0cmli dXRlcyI6ODQ1LCIuL2NhbGMiOjg0NiwiLi9kZWZhdWx0cyI6ODQ4LCIuL2V2ZW50X2RhdGEi Ojg0OSwiLi9ob3ZlciI6ODUxLCIuL3Bsb3QiOjg1MywiLi9zdHlsZSI6ODU0fV0sODUzOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIkBwbG90bHkvZDMiKSxpPXQo Ii4uLy4uL2xpYiIpLGE9aS5zdHJUcmFuc2xhdGUsbz10KCIuLi8uLi9jb25zdGFudHMveG1s bnNfbmFtZXNwYWNlcyIpLHM9dCgiLi9jb25zdGFudHMiKSxsPWkuaXNJT1MoKXx8aS5pc1Nh ZmFyaSgpfHxpLmlzSUUoKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsYyl7dmFyIHU9ZS54 YXhpcyxmPWUueWF4aXMsaD0hKGx8fHQuX2NvbnRleHQuX2V4cG9ydGVkUGxvdCk7aS5tYWtl VHJhY2VHcm91cHMoYyxyLCJpbSIpLmVhY2goKGZ1bmN0aW9uKGUpe3ZhciByPW4uc2VsZWN0 KHRoaXMpLGw9ZVswXSxjPWwudHJhY2UscD0oImZhc3QiPT09Yy56c21vb3RofHwhMT09PWMu enNtb290aCYmaCkmJiFjLl9oYXNaJiZjLl9oYXNTb3VyY2UmJiJsaW5lYXIiPT09dS50eXBl JiYibGluZWFyIj09PWYudHlwZTtjLl9yZWFsSW1hZ2U9cDt2YXIgZCxtLGcsdix5LHgsYj1s LnosXz1sLngwLHc9bC55MCxUPWwudyxrPWwuaCxBPWMuZHgsTT1jLmR5O2Zvcih4PTA7dm9p ZCAwPT09ZCYmeDxUOylkPXUuYzJwKF8reCpBKSx4Kys7Zm9yKHg9VDt2b2lkIDA9PT1tJiZ4 PjA7KW09dS5jMnAoXyt4KkEpLHgtLTtmb3IoeD0wO3ZvaWQgMD09PXYmJng8azspdj1mLmMy cCh3K3gqTSkseCsrO2Zvcih4PWs7dm9pZCAwPT09eSYmeD4wOyl5PWYuYzJwKHcreCpNKSx4 LS07aWYobTxkJiYoZz1tLG09ZCxkPWcpLHk8diYmKGc9dix2PXkseT1nKSwhcCl7ZD1NYXRo Lm1heCgtLjUqdS5fbGVuZ3RoLGQpLG09TWF0aC5taW4oMS41KnUuX2xlbmd0aCxtKSx2PU1h dGgubWF4KC0uNSpmLl9sZW5ndGgsdikseT1NYXRoLm1pbigxLjUqZi5fbGVuZ3RoLHkpfXZh ciBTPU1hdGgucm91bmQobS1kKSxFPU1hdGgucm91bmQoeS12KTtpZihTPD0wfHxFPD0wKXty LnNlbGVjdEFsbCgiaW1hZ2UiKS5kYXRhKFtdKS5leGl0KCkucmVtb3ZlKCl9ZWxzZXt2YXIg TD1yLnNlbGVjdEFsbCgiaW1hZ2UiKS5kYXRhKFtlXSk7TC5lbnRlcigpLmFwcGVuZCgic3Zn OmltYWdlIikuYXR0cih7eG1sbnM6by5zdmcscHJlc2VydmVBc3BlY3RSYXRpbzoibm9uZSJ9 KSxMLmV4aXQoKS5yZW1vdmUoKTt2YXIgQz0hMT09PWMuenNtb290aD9zLnBpeGVsYXRlZFN0 eWxlOiIiO2lmKHApe3ZhciBQPWkuc2ltcGxlTWFwKHUucmFuZ2UsdS5yMmwpLEk9aS5zaW1w bGVNYXAoZi5yYW5nZSxmLnIybCksTz1QWzFdPFBbMF0sej1JWzFdPklbMF07aWYoT3x8eil7 dmFyIEQ9ZCtTLzIsUj12K0UvMjtDKz0idHJhbnNmb3JtOiIrYShEKyJweCIsUisicHgiKSsi c2NhbGUoIisoTz8tMToxKSsiLCIrKHo/LTE6MSkrIikiK2EoLUQrInB4IiwtUisicHgiKSsi OyJ9fUwuYXR0cigic3R5bGUiLEMpO3ZhciBGPW5ldyBQcm9taXNlKChmdW5jdGlvbih0KXtp ZihjLl9oYXNaKXQoKTtlbHNlIGlmKGMuX2hhc1NvdXJjZSlpZihjLl9jYW52YXMmJmMuX2Nh bnZhcy5lbC53aWR0aD09PVQmJmMuX2NhbnZhcy5lbC5oZWlnaHQ9PT1rJiZjLl9jYW52YXMu c291cmNlPT09Yy5zb3VyY2UpdCgpO2Vsc2V7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVu dCgiY2FudmFzIik7ZS53aWR0aD1ULGUuaGVpZ2h0PWs7dmFyIHI9ZS5nZXRDb250ZXh0KCIy ZCIse3dpbGxSZWFkRnJlcXVlbnRseTohMH0pO2MuX2ltYWdlPWMuX2ltYWdlfHxuZXcgSW1h Z2U7dmFyIG49Yy5faW1hZ2U7bi5vbmxvYWQ9ZnVuY3Rpb24oKXtyLmRyYXdJbWFnZShuLDAs MCksYy5fY2FudmFzPXtlbDplLHNvdXJjZTpjLnNvdXJjZX0sdCgpfSxuLnNldEF0dHJpYnV0 ZSgic3JjIixjLnNvdXJjZSl9fSkpLnRoZW4oKGZ1bmN0aW9uKCl7dmFyIHQ7aWYoYy5faGFz Wil0PUIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGJbZV1bdF19KSkudG9EYXRhVVJMKCJpbWFn ZS9wbmciKTtlbHNlIGlmKGMuX2hhc1NvdXJjZSlpZihwKXQ9Yy5zb3VyY2U7ZWxzZXt2YXIg ZT1jLl9jYW52YXMuZWwuZ2V0Q29udGV4dCgiMmQiLHt3aWxsUmVhZEZyZXF1ZW50bHk6ITB9 KS5nZXRJbWFnZURhdGEoMCwwLFQsaykuZGF0YTt0PUIoKGZ1bmN0aW9uKHQscil7dmFyIG49 NCoocipUK3QpO3JldHVybltlW25dLGVbbisxXSxlW24rMl0sZVtuKzNdXX0pKS50b0RhdGFV UkwoImltYWdlL3BuZyIpfUwuYXR0cih7InhsaW5rOmhyZWYiOnQsaGVpZ2h0OkUsd2lkdGg6 Uyx4OmQseTp2fSl9KSk7dC5fcHJvbWlzZXMucHVzaChGKX1mdW5jdGlvbiBCKHQpe3ZhciBl PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO2Uud2lkdGg9UyxlLmhlaWdodD1F O3ZhciByLG49ZS5nZXRDb250ZXh0KCIyZCIse3dpbGxSZWFkRnJlcXVlbnRseTohMH0pLGE9 ZnVuY3Rpb24odCl7cmV0dXJuIGkuY29uc3RyYWluKE1hdGgucm91bmQodS5jMnAoXyt0KkEp LWQpLDAsUyl9LG89ZnVuY3Rpb24odCl7cmV0dXJuIGkuY29uc3RyYWluKE1hdGgucm91bmQo Zi5jMnAodyt0Kk0pLXYpLDAsRSl9LGg9cy5jb2xvcm1vZGVsW2MuY29sb3Jtb2RlbF0scD1o LmNvbG9ybW9kZWx8fGMuY29sb3Jtb2RlbCxtPWguZm10O2Zvcih4PTA7eDxsLnc7eCsrKXt2 YXIgZz1hKHgpLHk9YSh4KzEpO2lmKHkhPT1nJiYhaXNOYU4oeSkmJiFpc05hTihnKSlmb3Io dmFyIGI9MDtiPGwuaDtiKyspe3ZhciBUPW8oYiksaz1vKGIrMSk7az09PVR8fGlzTmFOKGsp fHxpc05hTihUKXx8IXQoeCxiKXx8KHI9Yy5fc2NhbGVyKHQoeCxiKSksbi5maWxsU3R5bGU9 cj9wKyIoIittKHIpLmpvaW4oIiwiKSsiKSI6InJnYmEoMCwwLDAsMCkiLG4uZmlsbFJlY3Qo ZyxULHktZyxrLVQpKX19cmV0dXJuIGV9fSkpfX0seyIuLi8uLi9jb25zdGFudHMveG1sbnNf bmFtZXNwYWNlcyI6NDgwLCIuLi8uLi9saWIiOjUwMywiLi9jb25zdGFudHMiOjg0NywiQHBs b3RseS9kMyI6NTh9XSw4NTQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiQHBsb3RseS9kMyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtuLnNlbGVjdCh0KS5zZWxl Y3RBbGwoIi5pbSBpbWFnZSIpLnN0eWxlKCJvcGFjaXR5IiwoZnVuY3Rpb24odCl7cmV0dXJu IHRbMF0udHJhY2Uub3BhY2l0eX0pKX19LHsiQHBsb3RseS9kMyI6NTh9XSw4NTU6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4 dGVuZEZsYXQsaT10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRGVlcCxhPXQoIi4uLy4u L3Bsb3RfYXBpL2VkaXRfdHlwZXMiKS5vdmVycmlkZUFsbCxvPXQoIi4uLy4uL3Bsb3RzL2Zv bnRfYXR0cmlidXRlcyIpLHM9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVz IiksbD10KCIuLi8uLi9wbG90cy9kb21haW4iKS5hdHRyaWJ1dGVzLGM9dCgiLi4vLi4vcGxv dHMvY2FydGVzaWFuL2xheW91dF9hdHRyaWJ1dGVzIiksdT10KCIuLi8uLi9wbG90X2FwaS9w bG90X3RlbXBsYXRlIikudGVtcGxhdGVkQXJyYXksZj10KCIuLi8uLi9jb25zdGFudHMvZGVs dGEuanMiKSxoPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2Zvcm1hdF9hdHRyaWJ1 dGVzIikuZGVzY3JpcHRpb25Pbmx5TnVtYmVycyxwPW8oe2VkaXRUeXBlOiJwbG90Iixjb2xv ckVkaXRUeXBlOiJwbG90In0pLGQ9e2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRpdFR5cGU6 InBsb3QifSxsaW5lOntjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6cy5kZWZhdWx0TGlu ZSxlZGl0VHlwZToicGxvdCJ9LHdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6 MCxlZGl0VHlwZToicGxvdCJ9LGVkaXRUeXBlOiJjYWxjIn0sdGhpY2tuZXNzOnt2YWxUeXBl OiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MSxlZGl0VHlwZToicGxvdCJ9LGVkaXRUeXBl OiJjYWxjIn0sbT17dmFsVHlwZToiaW5mb19hcnJheSIsaXRlbXM6W3t2YWxUeXBlOiJudW1i ZXIiLGVkaXRUeXBlOiJwbG90In0se3ZhbFR5cGU6Im51bWJlciIsZWRpdFR5cGU6InBsb3Qi fV0sZWRpdFR5cGU6InBsb3QifSxnPXUoInN0ZXAiLGkoe30sZCx7cmFuZ2U6bX0pKTtlLmV4 cG9ydHM9e21vZGU6e3ZhbFR5cGU6ImZsYWdsaXN0IixlZGl0VHlwZToiY2FsYyIsZmxhZ3M6 WyJudW1iZXIiLCJkZWx0YSIsImdhdWdlIl0sZGZsdDoibnVtYmVyIn0sdmFsdWU6e3ZhbFR5 cGU6Im51bWJlciIsZWRpdFR5cGU6ImNhbGMiLGFuaW06ITB9LGFsaWduOnt2YWxUeXBlOiJl bnVtZXJhdGVkIix2YWx1ZXM6WyJsZWZ0IiwiY2VudGVyIiwicmlnaHQiXSxlZGl0VHlwZToi cGxvdCJ9LGRvbWFpbjpsKHtuYW1lOiJpbmRpY2F0b3IiLHRyYWNlOiEwLGVkaXRUeXBlOiJj YWxjIn0pLHRpdGxlOnt0ZXh0Ont2YWxUeXBlOiJzdHJpbmciLGVkaXRUeXBlOiJwbG90In0s YWxpZ246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImxlZnQiLCJjZW50ZXIiLCJy aWdodCJdLGVkaXRUeXBlOiJwbG90In0sZm9udDpuKHt9LHAse30pLGVkaXRUeXBlOiJwbG90 In0sbnVtYmVyOnt2YWx1ZWZvcm1hdDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGVkaXRU eXBlOiJwbG90IixkZXNjcmlwdGlvbjpoKCJ2YWx1ZSIpfSxmb250Om4oe30scCx7fSkscHJl Zml4Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRpdFR5cGU6InBsb3QifSxzdWZmaXg6 e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIixlZGl0VHlwZToicGxvdCJ9LGVkaXRUeXBlOiJw bG90In0sZGVsdGE6e3JlZmVyZW5jZTp7dmFsVHlwZToibnVtYmVyIixlZGl0VHlwZToiY2Fs YyJ9LHBvc2l0aW9uOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0b3AiLCJib3R0 b20iLCJsZWZ0IiwicmlnaHQiXSxkZmx0OiJib3R0b20iLGVkaXRUeXBlOiJwbG90In0scmVs YXRpdmU6e3ZhbFR5cGU6ImJvb2xlYW4iLGVkaXRUeXBlOiJwbG90IixkZmx0OiExfSx2YWx1 ZWZvcm1hdDp7dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToicGxvdCIsZGVzY3JpcHRpb246 aCgidmFsdWUiKX0saW5jcmVhc2luZzp7c3ltYm9sOnt2YWxUeXBlOiJzdHJpbmciLGRmbHQ6 Zi5JTkNSRUFTSU5HLlNZTUJPTCxlZGl0VHlwZToicGxvdCJ9LGNvbG9yOnt2YWxUeXBlOiJj b2xvciIsZGZsdDpmLklOQ1JFQVNJTkcuQ09MT1IsZWRpdFR5cGU6InBsb3QifSxlZGl0VHlw ZToicGxvdCJ9LGRlY3JlYXNpbmc6e3N5bWJvbDp7dmFsVHlwZToic3RyaW5nIixkZmx0OmYu REVDUkVBU0lORy5TWU1CT0wsZWRpdFR5cGU6InBsb3QifSxjb2xvcjp7dmFsVHlwZToiY29s b3IiLGRmbHQ6Zi5ERUNSRUFTSU5HLkNPTE9SLGVkaXRUeXBlOiJwbG90In0sZWRpdFR5cGU6 InBsb3QifSxmb250Om4oe30scCx7fSksZWRpdFR5cGU6ImNhbGMifSxnYXVnZTp7c2hhcGU6 e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLGVkaXRUeXBlOiJwbG90IixkZmx0OiJhbmd1bGFyIix2 YWx1ZXM6WyJhbmd1bGFyIiwiYnVsbGV0Il19LGJhcjppKHt9LGQse2NvbG9yOntkZmx0OiJn cmVlbiJ9fSksYmdjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJwbG90In0sYm9y ZGVyY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OnMuZGVmYXVsdExpbmUsZWRpdFR5cGU6 InBsb3QifSxib3JkZXJ3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxkZmx0OjEsZWRp dFR5cGU6InBsb3QifSxheGlzOmEoe3JhbmdlOm0sdmlzaWJsZTpuKHt9LGMudmlzaWJsZSx7 ZGZsdDohMH0pLHRpY2ttb2RlOmMudGlja21vZGUsbnRpY2tzOmMubnRpY2tzLHRpY2swOmMu dGljazAsZHRpY2s6Yy5kdGljayx0aWNrdmFsczpjLnRpY2t2YWxzLHRpY2t0ZXh0OmMudGlj a3RleHQsdGlja3M6bih7fSxjLnRpY2tzLHtkZmx0OiJvdXRzaWRlIn0pLHRpY2tsZW46Yy50 aWNrbGVuLHRpY2t3aWR0aDpjLnRpY2t3aWR0aCx0aWNrY29sb3I6Yy50aWNrY29sb3IsdGlj a2xhYmVsc3RlcDpjLnRpY2tsYWJlbHN0ZXAsc2hvd3RpY2tsYWJlbHM6Yy5zaG93dGlja2xh YmVscyx0aWNrZm9udDpvKHt9KSx0aWNrYW5nbGU6Yy50aWNrYW5nbGUsdGlja2Zvcm1hdDpj LnRpY2tmb3JtYXQsdGlja2Zvcm1hdHN0b3BzOmMudGlja2Zvcm1hdHN0b3BzLHRpY2twcmVm aXg6Yy50aWNrcHJlZml4LHNob3d0aWNrcHJlZml4OmMuc2hvd3RpY2twcmVmaXgsdGlja3N1 ZmZpeDpjLnRpY2tzdWZmaXgsc2hvd3RpY2tzdWZmaXg6Yy5zaG93dGlja3N1ZmZpeCxzZXBh cmF0ZXRob3VzYW5kczpjLnNlcGFyYXRldGhvdXNhbmRzLGV4cG9uZW50Zm9ybWF0OmMuZXhw b25lbnRmb3JtYXQsbWluZXhwb25lbnQ6Yy5taW5leHBvbmVudCxzaG93ZXhwb25lbnQ6Yy5z aG93ZXhwb25lbnQsZWRpdFR5cGU6InBsb3QifSwicGxvdCIpLHN0ZXBzOmcsdGhyZXNob2xk OntsaW5lOntjb2xvcjpuKHt9LGQubGluZS5jb2xvcix7fSksd2lkdGg6bih7fSxkLmxpbmUu d2lkdGgse2RmbHQ6MX0pLGVkaXRUeXBlOiJwbG90In0sdGhpY2tuZXNzOm4oe30sZC50aGlj a25lc3Mse2RmbHQ6Ljg1fSksdmFsdWU6e3ZhbFR5cGU6Im51bWJlciIsZWRpdFR5cGU6ImNh bGMiLGRmbHQ6ITF9LGVkaXRUeXBlOiJwbG90In0sZWRpdFR5cGU6InBsb3QifX19LHsiLi4v Li4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIjozNjUsIi4uLy4uL2NvbnN0YW50cy9k ZWx0YS5qcyI6NDczLCIuLi8uLi9saWIvZXh0ZW5kIjo0OTMsIi4uLy4uL3Bsb3RfYXBpL2Vk aXRfdHlwZXMiOjUzNiwiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NTQzLCIuLi8u Li9wbG90cy9jYXJ0ZXNpYW4vYXhpc19mb3JtYXRfYXR0cmlidXRlcyI6NTU3LCIuLi8uLi9w bG90cy9jYXJ0ZXNpYW4vbGF5b3V0X2F0dHJpYnV0ZXMiOjU2OSwiLi4vLi4vcGxvdHMvZG9t YWluIjo1ODQsIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyI6NTg1fV0sODU2OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL3Bsb3RzIik7 ci5uYW1lPSJpbmRpY2F0b3IiLHIucGxvdD1mdW5jdGlvbih0LGUsaSxhKXtuLnBsb3RCYXNl UGxvdChyLm5hbWUsdCxlLGksYSl9LHIuY2xlYW49ZnVuY3Rpb24odCxlLGksYSl7bi5jbGVh bkJhc2VQbG90KHIubmFtZSx0LGUsaSxhKX19LHsiLi4vLi4vcGxvdHMvcGxvdHMiOjYxOX1d LDg1NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2NhbGM6ZnVu Y3Rpb24odCxlKXt2YXIgcj1bXSxuPWUudmFsdWU7Im51bWJlciIhPXR5cGVvZiBlLl9sYXN0 VmFsdWUmJihlLl9sYXN0VmFsdWU9ZS52YWx1ZSk7dmFyIGk9ZS5fbGFzdFZhbHVlLGE9aTty ZXR1cm4gZS5faGFzRGVsdGEmJiJudW1iZXIiPT10eXBlb2YgZS5kZWx0YS5yZWZlcmVuY2Um JihhPWUuZGVsdGEucmVmZXJlbmNlKSxyWzBdPXt5Om4sbGFzdFk6aSxkZWx0YTpuLWEscmVs YXRpdmVEZWx0YToobi1hKS9hfSxyfX19LHt9XSw4NTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7ZS5leHBvcnRzPXtkZWZhdWx0TnVtYmVyRm9udFNpemU6ODAsYnVsbGV0TnVt YmVyRG9tYWluU2l6ZTouMjUsYnVsbGV0UGFkZGluZzouMDI1LGlubmVyUmFkaXVzOi43NSx2 YWx1ZVRoaWNrbmVzczouNSx0aXRsZVBhZGRpbmc6NSxob3Jpem9udGFsUGFkZGluZzoxMH19 LHt9XSw4NTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4v bGliIiksaT10KCIuL2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL3Bsb3RzL2RvbWFpbiIpLmRl ZmF1bHRzLG89dCgiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSIpLHM9dCgiLi4vLi4v cGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIiksbD10KCIuL2NvbnN0YW50cy5qcyIp LGM9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL3RpY2tfdmFsdWVfZGVmYXVsdHMiKSx1PXQo Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbi90aWNrX21hcmtfZGVmYXVsdHMiKSxmPXQoIi4uLy4u L3Bsb3RzL2NhcnRlc2lhbi90aWNrX2xhYmVsX2RlZmF1bHRzIiksaD10KCIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4vcHJlZml4X3N1ZmZpeF9kZWZhdWx0cyIpO2Z1bmN0aW9uIHAodCxlKXtm dW5jdGlvbiByKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxpLmdhdWdlLnN0ZXBzLHIsYSl9 cigiY29sb3IiKSxyKCJsaW5lLmNvbG9yIikscigibGluZS53aWR0aCIpLHIoInJhbmdlIiks cigidGhpY2tuZXNzIil9ZS5leHBvcnRzPXtzdXBwbHlEZWZhdWx0czpmdW5jdGlvbih0LGUs cixkKXtmdW5jdGlvbiBtKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxpLHIsYSl9YShlLGQs bSksbSgibW9kZSIpLGUuX2hhc051bWJlcj0tMSE9PWUubW9kZS5pbmRleE9mKCJudW1iZXIi KSxlLl9oYXNEZWx0YT0tMSE9PWUubW9kZS5pbmRleE9mKCJkZWx0YSIpLGUuX2hhc0dhdWdl PS0xIT09ZS5tb2RlLmluZGV4T2YoImdhdWdlIik7dmFyIGc9bSgidmFsdWUiKTtlLl9yYW5n ZT1bMCwibnVtYmVyIj09dHlwZW9mIGc/MS41Kmc6MV07dmFyIHYseSx4LGIsXyx3LFQ9bmV3 IEFycmF5KDIpO2Z1bmN0aW9uIGsodCxlKXtyZXR1cm4gbi5jb2VyY2UoeCxiLGkuZ2F1Z2Us dCxlKX1mdW5jdGlvbiBBKHQsZSl7cmV0dXJuIG4uY29lcmNlKF8sdyxpLmdhdWdlLmF4aXMs dCxlKX1pZihlLl9oYXNOdW1iZXImJihtKCJudW1iZXIudmFsdWVmb3JtYXQiKSxtKCJudW1i ZXIuZm9udC5jb2xvciIsZC5mb250LmNvbG9yKSxtKCJudW1iZXIuZm9udC5mYW1pbHkiLGQu Zm9udC5mYW1pbHkpLG0oIm51bWJlci5mb250LnNpemUiKSx2b2lkIDA9PT1lLm51bWJlci5m b250LnNpemUmJihlLm51bWJlci5mb250LnNpemU9bC5kZWZhdWx0TnVtYmVyRm9udFNpemUs VFswXT0hMCksbSgibnVtYmVyLnByZWZpeCIpLG0oIm51bWJlci5zdWZmaXgiKSx2PWUubnVt YmVyLmZvbnQuc2l6ZSksZS5faGFzRGVsdGEmJihtKCJkZWx0YS5mb250LmNvbG9yIixkLmZv bnQuY29sb3IpLG0oImRlbHRhLmZvbnQuZmFtaWx5IixkLmZvbnQuZmFtaWx5KSxtKCJkZWx0 YS5mb250LnNpemUiKSx2b2lkIDA9PT1lLmRlbHRhLmZvbnQuc2l6ZSYmKGUuZGVsdGEuZm9u dC5zaXplPShlLl9oYXNOdW1iZXI/LjU6MSkqKHZ8fGwuZGVmYXVsdE51bWJlckZvbnRTaXpl KSxUWzFdPSEwKSxtKCJkZWx0YS5yZWZlcmVuY2UiLGUudmFsdWUpLG0oImRlbHRhLnJlbGF0 aXZlIiksbSgiZGVsdGEudmFsdWVmb3JtYXQiLGUuZGVsdGEucmVsYXRpdmU/IjIlIjoiIiks bSgiZGVsdGEuaW5jcmVhc2luZy5zeW1ib2wiKSxtKCJkZWx0YS5pbmNyZWFzaW5nLmNvbG9y IiksbSgiZGVsdGEuZGVjcmVhc2luZy5zeW1ib2wiKSxtKCJkZWx0YS5kZWNyZWFzaW5nLmNv bG9yIiksbSgiZGVsdGEucG9zaXRpb24iKSx5PWUuZGVsdGEuZm9udC5zaXplKSxlLl9zY2Fs ZU51bWJlcnM9KCFlLl9oYXNOdW1iZXJ8fFRbMF0pJiYoIWUuX2hhc0RlbHRhfHxUWzFdKXx8 ITEsbSgidGl0bGUuZm9udC5jb2xvciIsZC5mb250LmNvbG9yKSxtKCJ0aXRsZS5mb250LmZh bWlseSIsZC5mb250LmZhbWlseSksbSgidGl0bGUuZm9udC5zaXplIiwuMjUqKHZ8fHl8fGwu ZGVmYXVsdE51bWJlckZvbnRTaXplKSksbSgidGl0bGUudGV4dCIpLGUuX2hhc0dhdWdlKXso eD10LmdhdWdlKXx8KHg9e30pLGI9by5uZXdDb250YWluZXIoZSwiZ2F1Z2UiKSxrKCJzaGFw ZSIpLChlLl9pc0J1bGxldD0iYnVsbGV0Ij09PWUuZ2F1Z2Uuc2hhcGUpfHxtKCJ0aXRsZS5h bGlnbiIsImNlbnRlciIpLChlLl9pc0FuZ3VsYXI9ImFuZ3VsYXIiPT09ZS5nYXVnZS5zaGFw ZSl8fG0oImFsaWduIiwiY2VudGVyIiksaygiYmdjb2xvciIsZC5wYXBlcl9iZ2NvbG9yKSxr KCJib3JkZXJ3aWR0aCIpLGsoImJvcmRlcmNvbG9yIiksaygiYmFyLmNvbG9yIiksaygiYmFy LmxpbmUuY29sb3IiKSxrKCJiYXIubGluZS53aWR0aCIpLGsoImJhci50aGlja25lc3MiLGwu dmFsdWVUaGlja25lc3MqKCJidWxsZXQiPT09ZS5nYXVnZS5zaGFwZT8uNToxKSkscyh4LGIs e25hbWU6InN0ZXBzIixoYW5kbGVJdGVtRGVmYXVsdHM6cH0pLGsoInRocmVzaG9sZC52YWx1 ZSIpLGsoInRocmVzaG9sZC50aGlja25lc3MiKSxrKCJ0aHJlc2hvbGQubGluZS53aWR0aCIp LGsoInRocmVzaG9sZC5saW5lLmNvbG9yIiksXz17fSx4JiYoXz14LmF4aXN8fHt9KSx3PW8u bmV3Q29udGFpbmVyKGIsImF4aXMiKSxBKCJ2aXNpYmxlIiksZS5fcmFuZ2U9QSgicmFuZ2Ui LGUuX3JhbmdlKTt2YXIgTT17b3V0ZXJUaWNrczohMH07YyhfLHcsQSwibGluZWFyIiksaChf LHcsQSwibGluZWFyIixNKSxmKF8sdyxBLCJsaW5lYXIiLE0pLHUoXyx3LEEsTSl9ZWxzZSBt KCJ0aXRsZS5hbGlnbiIsImNlbnRlciIpLG0oImFsaWduIiwiY2VudGVyIiksZS5faXNBbmd1 bGFyPWUuX2lzQnVsbGV0PSExO2UuX2xlbmd0aD1udWxsfX19LHsiLi4vLi4vbGliIjo1MDMs Ii4uLy4uL3Bsb3RfYXBpL3Bsb3RfdGVtcGxhdGUiOjU0MywiLi4vLi4vcGxvdHMvYXJyYXlf Y29udGFpbmVyX2RlZmF1bHRzIjo1NDksIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9wcmVmaXhf c3VmZml4X2RlZmF1bHRzIjo1NzMsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi90aWNrX2xhYmVs X2RlZmF1bHRzIjo1NzgsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi90aWNrX21hcmtfZGVmYXVs dHMiOjU3OSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL3RpY2tfdmFsdWVfZGVmYXVsdHMiOjU4 MCwiLi4vLi4vcGxvdHMvZG9tYWluIjo1ODQsIi4vYXR0cmlidXRlcyI6ODU1LCIuL2NvbnN0 YW50cy5qcyI6ODU4fV0sODYwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhw b3J0cz17bW9kdWxlVHlwZToidHJhY2UiLG5hbWU6ImluZGljYXRvciIsYmFzZVBsb3RNb2R1 bGU6dCgiLi9iYXNlX3Bsb3QiKSxjYXRlZ29yaWVzOlsic3ZnIiwibm9PcGFjaXR5Iiwibm9I b3ZlciJdLGFuaW1hdGFibGU6ITAsYXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBw bHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIikuc3VwcGx5RGVmYXVsdHMsY2FsYzp0KCIuL2Nh bGMiKS5jYWxjLHBsb3Q6dCgiLi9wbG90IiksbWV0YTp7fX19LHsiLi9hdHRyaWJ1dGVzIjo4 NTUsIi4vYmFzZV9wbG90Ijo4NTYsIi4vY2FsYyI6ODU3LCIuL2RlZmF1bHRzIjo4NTksIi4v cGxvdCI6ODYxfV0sODYxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo IkBwbG90bHkvZDMiKSxpPXQoImQzLWludGVycG9sYXRlIikuaW50ZXJwb2xhdGUsYT10KCJk My1pbnRlcnBvbGF0ZSIpLmludGVycG9sYXRlTnVtYmVyLG89dCgiLi4vLi4vbGliIikscz1v LnN0clNjYWxlLGw9by5zdHJUcmFuc2xhdGUsYz1vLnJhZDJkZWcsdT10KCIuLi8uLi9jb25z dGFudHMvYWxpZ25tZW50IikuTUlEX1NISUZULGY9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3 aW5nIiksaD10KCIuL2NvbnN0YW50cyIpLHA9dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxz IiksZD10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLG09dCgiLi4vLi4vcGxvdHMv Y2FydGVzaWFuL2F4aXNfZGVmYXVsdHMiKSxnPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9w b3NpdGlvbl9kZWZhdWx0cyIpLHY9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2xheW91dF9h dHRyaWJ1dGVzIikseT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIikseD17bGVmdDoic3Rh cnQiLGNlbnRlcjoibWlkZGxlIixyaWdodDoiZW5kIn0sYj17bGVmdDowLGNlbnRlcjouNSxy aWdodDoxfSxfPS9beXphZnBuXHhiNW1rTUdUUEVaWV0vO2Z1bmN0aW9uIHcodCl7cmV0dXJu IHQmJnQuZHVyYXRpb24+MH1mdW5jdGlvbiBUKHQpe3QuZWFjaCgoZnVuY3Rpb24odCl7eS5z dHJva2Uobi5zZWxlY3QodGhpcyksdC5saW5lLmNvbG9yKX0pKS5lYWNoKChmdW5jdGlvbih0 KXt5LmZpbGwobi5zZWxlY3QodGhpcyksdC5jb2xvcil9KSkuc3R5bGUoInN0cm9rZS13aWR0 aCIsKGZ1bmN0aW9uKHQpe3JldHVybiB0LmxpbmUud2lkdGh9KSl9ZnVuY3Rpb24gayh0LGUs cil7dmFyIG49dC5fZnVsbExheW91dCxpPW8uZXh0ZW5kRmxhdCh7dHlwZToibGluZWFyIix0 aWNrczoib3V0c2lkZSIscmFuZ2U6cixzaG93bGluZTohMH0sZSksYT17dHlwZToibGluZWFy IixfaWQ6IngiK2UuX2lkfSxzPXtsZXR0ZXI6IngiLGZvbnQ6bi5mb250LG5vSG92ZXI6ITAs bm9UaWNrc29uOiEwfTtmdW5jdGlvbiBsKHQsZSl7cmV0dXJuIG8uY29lcmNlKGksYSx2LHQs ZSl9cmV0dXJuIG0oaSxhLGwscyxuKSxnKGksYSxsLHMpLGF9ZnVuY3Rpb24gQSh0LGUscil7 cmV0dXJuW01hdGgubWluKGUvdC53aWR0aCxyL3QuaGVpZ2h0KSx0LGUrIngiK3JdfWZ1bmN0 aW9uIE0odCxlLHIsaSl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v d3d3LnczLm9yZy8yMDAwL3N2ZyIsInRleHQiKSxvPW4uc2VsZWN0KGEpO3JldHVybiBvLnRl eHQodCkuYXR0cigieCIsMCkuYXR0cigieSIsMCkuYXR0cigidGV4dC1hbmNob3IiLHIpLmF0 dHIoImRhdGEtdW5mb3JtYXR0ZWQiLHQpLmNhbGwocC5jb252ZXJ0VG9Uc3BhbnMsaSkuY2Fs bChmLmZvbnQsZSksZi5iQm94KG8ubm9kZSgpKX1mdW5jdGlvbiBTKHQsZSxyLG4saSxhKXt2 YXIgcz0iX2NhY2hlIitlO3Rbc10mJnRbc10ua2V5PT09aXx8KHRbc109e2tleTppLHZhbHVl OnJ9KTt2YXIgbD1vLmFnZ051bXMoYSxudWxsLFt0W3NdLnZhbHVlLG5dLDIpO3JldHVybiB0 W3NdLnZhbHVlPWwsbH1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbSl7dmFyIGcsdj10Ll9m dWxsTGF5b3V0O3cocikmJm0mJihnPW0oKSksby5tYWtlVHJhY2VHcm91cHModi5faW5kaWNh dG9ybGF5ZXIsZSwidHJhY2UiKS5lYWNoKChmdW5jdGlvbihlKXt2YXIgbSxFLEwsQyxQLEk9 ZVswXS50cmFjZSxPPW4uc2VsZWN0KHRoaXMpLHo9SS5faGFzR2F1Z2UsRD1JLl9pc0FuZ3Vs YXIsUj1JLl9pc0J1bGxldCxGPUkuZG9tYWluLEI9e3c6di5fc2l6ZS53KihGLnhbMV0tRi54 WzBdKSxoOnYuX3NpemUuaCooRi55WzFdLUYueVswXSksbDp2Ll9zaXplLmwrdi5fc2l6ZS53 KkYueFswXSxyOnYuX3NpemUucit2Ll9zaXplLncqKDEtRi54WzFdKSx0OnYuX3NpemUudCt2 Ll9zaXplLmgqKDEtRi55WzFdKSxiOnYuX3NpemUuYit2Ll9zaXplLmgqRi55WzBdfSxOPUIu bCtCLncvMixqPUIudCtCLmgvMixVPU1hdGgubWluKEIudy8yLEIuaCksVj1oLmlubmVyUmFk aXVzKlUsSD1JLmFsaWdufHwiY2VudGVyIjtpZihFPWoseil7aWYoRCYmKG09TixFPWorVS8y LEw9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIHI9TWF0aC5zcXJ0KHQu d2lkdGgvMioodC53aWR0aC8yKSt0LmhlaWdodCp0LmhlaWdodCk7cmV0dXJuW2Uvcix0LGVd fSh0LC45KlYpfSksUil7dmFyIHE9aC5idWxsZXRQYWRkaW5nLEc9MS1oLmJ1bGxldE51bWJl ckRvbWFpblNpemUrcTttPUIubCsoRysoMS1HKSpiW0hdKSpCLncsTD1mdW5jdGlvbih0KXty ZXR1cm4gQSh0LChoLmJ1bGxldE51bWJlckRvbWFpblNpemUtcSkqQi53LEIuaCl9fX1lbHNl IG09Qi5sK2JbSF0qQi53LEw9ZnVuY3Rpb24odCl7cmV0dXJuIEEodCxCLncsQi5oKX07IWZ1 bmN0aW9uKHQsZSxyLGkpe3ZhciBjLHUsaCxtPXJbMF0udHJhY2UsZz1pLm51bWJlcnNYLHY9 aS5udW1iZXJzWSxUPW0uYWxpZ258fCJjZW50ZXIiLEE9eFtUXSxFPWkudHJhbnNpdGlvbk9w dHMsTD1pLm9uQ29tcGxldGUsQz1vLmVuc3VyZVNpbmdsZShlLCJnIiwibnVtYmVycyIpLFA9 W107bS5faGFzTnVtYmVyJiZQLnB1c2goIm51bWJlciIpO20uX2hhc0RlbHRhJiYoUC5wdXNo KCJkZWx0YSIpLCJsZWZ0Ij09PW0uZGVsdGEucG9zaXRpb24mJlAucmV2ZXJzZSgpKTt2YXIg ST1DLnNlbGVjdEFsbCgidGV4dCIpLmRhdGEoUCk7ZnVuY3Rpb24gTyhlLHIsbixpKXtpZigh ZS5tYXRjaCgicyIpfHxuPj0wPT1pPj0wfHxyKG4pLnNsaWNlKC0xKS5tYXRjaChfKXx8cihp KS5zbGljZSgtMSkubWF0Y2goXykpcmV0dXJuIHI7dmFyIGE9ZS5zbGljZSgpLnJlcGxhY2Uo InMiLCJmIikucmVwbGFjZSgvXGQrLywoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlSW50KHQp LTF9KSksbz1rKHQse3RpY2tmb3JtYXQ6YX0pO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4g TWF0aC5hYnModCk8MT9kLnRpY2tUZXh0KG8sdCkudGV4dDpyKHQpfX1JLmVudGVyKCkuYXBw ZW5kKCJ0ZXh0IiksSS5hdHRyKCJ0ZXh0LWFuY2hvciIsKGZ1bmN0aW9uKCl7cmV0dXJuIEF9 KSkuYXR0cigiY2xhc3MiLChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKS5hdHRyKCJ4IixudWxs KS5hdHRyKCJ5IixudWxsKS5hdHRyKCJkeCIsbnVsbCkuYXR0cigiZHkiLG51bGwpLEkuZXhp dCgpLnJlbW92ZSgpO3ZhciB6LEQ9bS5tb2RlK20uYWxpZ247bS5faGFzRGVsdGEmJih6PWZ1 bmN0aW9uKCl7dmFyIGU9ayh0LHt0aWNrZm9ybWF0Om0uZGVsdGEudmFsdWVmb3JtYXR9LG0u X3JhbmdlKTtlLnNldFNjYWxlKCksZC5wcmVwVGlja3MoZSk7dmFyIGk9ZnVuY3Rpb24odCl7 cmV0dXJuIGQudGlja1RleHQoZSx0KS50ZXh0fSxvPWZ1bmN0aW9uKHQpe3JldHVybiBtLmRl bHRhLnJlbGF0aXZlP3QucmVsYXRpdmVEZWx0YTp0LmRlbHRhfSxzPWZ1bmN0aW9uKHQsZSl7 cmV0dXJuIDA9PT10fHwibnVtYmVyIiE9dHlwZW9mIHR8fGlzTmFOKHQpPyItIjoodD4wP20u ZGVsdGEuaW5jcmVhc2luZy5zeW1ib2w6bS5kZWx0YS5kZWNyZWFzaW5nLnN5bWJvbCkrZSh0 KX0sbD1mdW5jdGlvbih0KXtyZXR1cm4gdC5kZWx0YT49MD9tLmRlbHRhLmluY3JlYXNpbmcu Y29sb3I6bS5kZWx0YS5kZWNyZWFzaW5nLmNvbG9yfTt2b2lkIDA9PT1tLl9kZWx0YUxhc3RW YWx1ZSYmKG0uX2RlbHRhTGFzdFZhbHVlPW8oclswXSkpO3ZhciBjPUMuc2VsZWN0KCJ0ZXh0 LmRlbHRhIik7ZnVuY3Rpb24gaCgpe2MudGV4dChzKG8oclswXSksaSkpLmNhbGwoeS5maWxs LGwoclswXSkpLmNhbGwocC5jb252ZXJ0VG9Uc3BhbnMsdCl9cmV0dXJuIGMuY2FsbChmLmZv bnQsbS5kZWx0YS5mb250KS5jYWxsKHkuZmlsbCxsKHtkZWx0YTptLl9kZWx0YUxhc3RWYWx1 ZX0pKSx3KEUpP2MudHJhbnNpdGlvbigpLmR1cmF0aW9uKEUuZHVyYXRpb24pLmVhc2UoRS5l YXNpbmcpLnR3ZWVuKCJ0ZXh0IiwoZnVuY3Rpb24oKXt2YXIgdD1uLnNlbGVjdCh0aGlzKSxl PW8oclswXSksYz1tLl9kZWx0YUxhc3RWYWx1ZSx1PU8obS5kZWx0YS52YWx1ZWZvcm1hdCxp LGMsZSksZj1hKGMsZSk7cmV0dXJuIG0uX2RlbHRhTGFzdFZhbHVlPWUsZnVuY3Rpb24oZSl7 dC50ZXh0KHMoZihlKSx1KSksdC5jYWxsKHkuZmlsbCxsKHtkZWx0YTpmKGUpfSkpfX0pKS5l YWNoKCJlbmQiLChmdW5jdGlvbigpe2goKSxMJiZMKCl9KSkuZWFjaCgiaW50ZXJydXB0Iiwo ZnVuY3Rpb24oKXtoKCksTCYmTCgpfSkpOmgoKSx1PU0ocyhvKHJbMF0pLGkpLG0uZGVsdGEu Zm9udCxBLHQpLGN9KCksRCs9bS5kZWx0YS5wb3NpdGlvbittLmRlbHRhLmZvbnQuc2l6ZStt LmRlbHRhLmZvbnQuZmFtaWx5K20uZGVsdGEudmFsdWVmb3JtYXQsRCs9bS5kZWx0YS5pbmNy ZWFzaW5nLnN5bWJvbCttLmRlbHRhLmRlY3JlYXNpbmcuc3ltYm9sLGg9dSk7bS5faGFzTnVt YmVyJiYoIWZ1bmN0aW9uKCl7dmFyIGU9ayh0LHt0aWNrZm9ybWF0Om0ubnVtYmVyLnZhbHVl Zm9ybWF0fSxtLl9yYW5nZSk7ZS5zZXRTY2FsZSgpLGQucHJlcFRpY2tzKGUpO3ZhciBpPWZ1 bmN0aW9uKHQpe3JldHVybiBkLnRpY2tUZXh0KGUsdCkudGV4dH0sbz1tLm51bWJlci5zdWZm aXgscz1tLm51bWJlci5wcmVmaXgsbD1DLnNlbGVjdCgidGV4dC5udW1iZXIiKTtmdW5jdGlv biB1KCl7dmFyIGU9Im51bWJlciI9PXR5cGVvZiByWzBdLnk/cytpKHJbMF0ueSkrbzoiLSI7 bC50ZXh0KGUpLmNhbGwoZi5mb250LG0ubnVtYmVyLmZvbnQpLmNhbGwocC5jb252ZXJ0VG9U c3BhbnMsdCl9dyhFKT9sLnRyYW5zaXRpb24oKS5kdXJhdGlvbihFLmR1cmF0aW9uKS5lYXNl KEUuZWFzaW5nKS5lYWNoKCJlbmQiLChmdW5jdGlvbigpe3UoKSxMJiZMKCl9KSkuZWFjaCgi aW50ZXJydXB0IiwoZnVuY3Rpb24oKXt1KCksTCYmTCgpfSkpLmF0dHJUd2VlbigidGV4dCIs KGZ1bmN0aW9uKCl7dmFyIHQ9bi5zZWxlY3QodGhpcyksZT1hKHJbMF0ubGFzdFksclswXS55 KTttLl9sYXN0VmFsdWU9clswXS55O3ZhciBsPU8obS5udW1iZXIudmFsdWVmb3JtYXQsaSxy WzBdLmxhc3RZLHJbMF0ueSk7cmV0dXJuIGZ1bmN0aW9uKHIpe3QudGV4dChzK2woZShyKSkr byl9fSkpOnUoKSxjPU0ocytpKHJbMF0ueSkrbyxtLm51bWJlci5mb250LEEsdCl9KCksRCs9 bS5udW1iZXIuZm9udC5zaXplK20ubnVtYmVyLmZvbnQuZmFtaWx5K20ubnVtYmVyLnZhbHVl Zm9ybWF0K20ubnVtYmVyLnN1ZmZpeCttLm51bWJlci5wcmVmaXgsaD1jKTtpZihtLl9oYXNE ZWx0YSYmbS5faGFzTnVtYmVyKXt2YXIgUixGLEI9WyhjLmxlZnQrYy5yaWdodCkvMiwoYy50 b3ArYy5ib3R0b20pLzJdLE49Wyh1LmxlZnQrdS5yaWdodCkvMiwodS50b3ArdS5ib3R0b20p LzJdLGo9Ljc1Km0uZGVsdGEuZm9udC5zaXplOyJsZWZ0Ij09PW0uZGVsdGEucG9zaXRpb24m JihSPVMobSwiZGVsdGFQb3MiLDAsLTEqKGMud2lkdGgqYlttLmFsaWduXSt1LndpZHRoKigx LWJbbS5hbGlnbl0pK2opLEQsTWF0aC5taW4pLEY9QlsxXS1OWzFdLGg9e3dpZHRoOmMud2lk dGgrdS53aWR0aCtqLGhlaWdodDpNYXRoLm1heChjLmhlaWdodCx1LmhlaWdodCksbGVmdDp1 LmxlZnQrUixyaWdodDpjLnJpZ2h0LHRvcDpNYXRoLm1pbihjLnRvcCx1LnRvcCtGKSxib3R0 b206TWF0aC5tYXgoYy5ib3R0b20sdS5ib3R0b20rRil9KSwicmlnaHQiPT09bS5kZWx0YS5w b3NpdGlvbiYmKFI9UyhtLCJkZWx0YVBvcyIsMCxjLndpZHRoKigxLWJbbS5hbGlnbl0pK3Uu d2lkdGgqYlttLmFsaWduXStqLEQsTWF0aC5tYXgpLEY9QlsxXS1OWzFdLGg9e3dpZHRoOmMu d2lkdGgrdS53aWR0aCtqLGhlaWdodDpNYXRoLm1heChjLmhlaWdodCx1LmhlaWdodCksbGVm dDpjLmxlZnQscmlnaHQ6dS5yaWdodCtSLHRvcDpNYXRoLm1pbihjLnRvcCx1LnRvcCtGKSxi b3R0b206TWF0aC5tYXgoYy5ib3R0b20sdS5ib3R0b20rRil9KSwiYm90dG9tIj09PW0uZGVs dGEucG9zaXRpb24mJihSPW51bGwsRj11LmhlaWdodCxoPXt3aWR0aDpNYXRoLm1heChjLndp ZHRoLHUud2lkdGgpLGhlaWdodDpjLmhlaWdodCt1LmhlaWdodCxsZWZ0Ok1hdGgubWluKGMu bGVmdCx1LmxlZnQpLHJpZ2h0Ok1hdGgubWF4KGMucmlnaHQsdS5yaWdodCksdG9wOmMuYm90 dG9tLWMuaGVpZ2h0LGJvdHRvbTpjLmJvdHRvbSt1LmhlaWdodH0pLCJ0b3AiPT09bS5kZWx0 YS5wb3NpdGlvbiYmKFI9bnVsbCxGPWMudG9wLGg9e3dpZHRoOk1hdGgubWF4KGMud2lkdGgs dS53aWR0aCksaGVpZ2h0OmMuaGVpZ2h0K3UuaGVpZ2h0LGxlZnQ6TWF0aC5taW4oYy5sZWZ0 LHUubGVmdCkscmlnaHQ6TWF0aC5tYXgoYy5yaWdodCx1LnJpZ2h0KSx0b3A6Yy5ib3R0b20t Yy5oZWlnaHQtdS5oZWlnaHQsYm90dG9tOmMuYm90dG9tfSksei5hdHRyKHtkeDpSLGR5OkZ9 KX0obS5faGFzTnVtYmVyfHxtLl9oYXNEZWx0YSkmJkMuYXR0cigidHJhbnNmb3JtIiwoZnVu Y3Rpb24oKXt2YXIgdD1pLm51bWJlcnNTY2FsZXIoaCk7RCs9dFsyXTt2YXIgZSxyPVMobSwi bnVtYmVyc1NjYWxlIiwxLHRbMF0sRCxNYXRoLm1pbik7bS5fc2NhbGVOdW1iZXJzfHwocj0x KSxlPW0uX2lzQW5ndWxhcj92LXIqaC5ib3R0b206di1yKihoLnRvcCtoLmJvdHRvbSkvMixt Ll9udW1iZXJzVG9wPXIqaC50b3ArZTt2YXIgbj1oW1RdOyJjZW50ZXIiPT09VCYmKG49KGgu bGVmdCtoLnJpZ2h0KS8yKTt2YXIgYT1nLXIqbjtyZXR1cm4gYT1TKG0sIm51bWJlcnNUcmFu c2xhdGUiLDAsYSxELE1hdGgubWF4KSxsKGEsZSkrcyhyKX0pKX0odCxPLGUse251bWJlcnNY Om0sbnVtYmVyc1k6RSxudW1iZXJzU2NhbGVyOkwsdHJhbnNpdGlvbk9wdHM6cixvbkNvbXBs ZXRlOmd9KSx6JiYoQz17cmFuZ2U6SS5nYXVnZS5heGlzLnJhbmdlLGNvbG9yOkkuZ2F1Z2Uu Ymdjb2xvcixsaW5lOntjb2xvcjpJLmdhdWdlLmJvcmRlcmNvbG9yLHdpZHRoOjB9LHRoaWNr bmVzczoxfSxQPXtyYW5nZTpJLmdhdWdlLmF4aXMucmFuZ2UsY29sb3I6InJnYmEoMCwgMCwg MCwgMCkiLGxpbmU6e2NvbG9yOkkuZ2F1Z2UuYm9yZGVyY29sb3Isd2lkdGg6SS5nYXVnZS5i b3JkZXJ3aWR0aH0sdGhpY2tuZXNzOjF9KTt2YXIgWT1PLnNlbGVjdEFsbCgiZy5hbmd1bGFy IikuZGF0YShEP2U6W10pO1kuZXhpdCgpLnJlbW92ZSgpO3ZhciBXPU8uc2VsZWN0QWxsKCJn LmFuZ3VsYXJheGlzIikuZGF0YShEP2U6W10pO1cuZXhpdCgpLnJlbW92ZSgpLEQmJmZ1bmN0 aW9uKHQsZSxyLGEpe3ZhciBvLHMsZixoLHA9clswXS50cmFjZSxtPWEuc2l6ZSxnPWEucmFk aXVzLHY9YS5pbm5lclJhZGl1cyx5PWEuZ2F1Z2VCZyx4PWEuZ2F1Z2VPdXRsaW5lLGI9W20u bCttLncvMixtLnQrbS5oLzIrZy8yXSxfPWEuZ2F1Z2UsQT1hLmxheWVyLE09YS50cmFuc2l0 aW9uT3B0cyxTPWEub25Db21wbGV0ZSxFPU1hdGguUEkvMjtmdW5jdGlvbiBMKHQpe3ZhciBl PXAuZ2F1Z2UuYXhpcy5yYW5nZVswXSxyPSh0LWUpLyhwLmdhdWdlLmF4aXMucmFuZ2VbMV0t ZSkqTWF0aC5QSS1FO3JldHVybiByPC1FPy1FOnI+RT9FOnJ9ZnVuY3Rpb24gQyh0KXtyZXR1 cm4gbi5zdmcuYXJjKCkuaW5uZXJSYWRpdXMoKHYrZykvMi10LzIqKGctdikpLm91dGVyUmFk aXVzKCh2K2cpLzIrdC8yKihnLXYpKS5zdGFydEFuZ2xlKC1FKX1mdW5jdGlvbiBQKHQpe3Qu YXR0cigiZCIsKGZ1bmN0aW9uKHQpe3JldHVybiBDKHQudGhpY2tuZXNzKS5zdGFydEFuZ2xl KEwodC5yYW5nZVswXSkpLmVuZEFuZ2xlKEwodC5yYW5nZVsxXSkpKCl9KSl9Xy5lbnRlcigp LmFwcGVuZCgiZyIpLmNsYXNzZWQoImFuZ3VsYXIiLCEwKSxfLmF0dHIoInRyYW5zZm9ybSIs bChiWzBdLGJbMV0pKSxBLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgiYW5ndWxhcmF4 aXMiLCEwKS5jbGFzc2VkKCJjcmlzcCIsITApLEEuc2VsZWN0QWxsKCJnLnhhbmd1bGFyYXhp c3RpY2sscGF0aCx0ZXh0IikucmVtb3ZlKCksKG89ayh0LHAuZ2F1Z2UuYXhpcykpLnR5cGU9 ImxpbmVhciIsby5yYW5nZT1wLmdhdWdlLmF4aXMucmFuZ2Usby5faWQ9Inhhbmd1bGFyYXhp cyIsby50aWNrbGFiZWxvdmVyZmxvdz0iYWxsb3ciLG8uc2V0U2NhbGUoKTt2YXIgST1mdW5j dGlvbih0KXtyZXR1cm4oby5yYW5nZVswXS10LngpLyhvLnJhbmdlWzFdLW8ucmFuZ2VbMF0p Kk1hdGguUEkrTWF0aC5QSX0sTz17fSx6PWQubWFrZUxhYmVsRm5zKG8sMCkubGFiZWxTdGFu ZG9mZjtPLnhGbj1mdW5jdGlvbih0KXt2YXIgZT1JKHQpO3JldHVybiBNYXRoLmNvcyhlKSp6 fSxPLnlGbj1mdW5jdGlvbih0KXt2YXIgZT1JKHQpLHI9TWF0aC5zaW4oZSk+MD8uMjoxO3Jl dHVybi1NYXRoLnNpbihlKSooeit0LmZvbnRTaXplKnIpK01hdGguYWJzKE1hdGguY29zKGUp KSoodC5mb250U2l6ZSp1KX0sTy5hbmNob3JGbj1mdW5jdGlvbih0KXt2YXIgZT1JKHQpLHI9 TWF0aC5jb3MoZSk7cmV0dXJuIE1hdGguYWJzKHIpPC4xPyJtaWRkbGUiOnI+MD8ic3RhcnQi OiJlbmQifSxPLmhlaWdodEZuPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1JKHQpO3JldHVybi0u NSooMStNYXRoLnNpbihuKSkqcn07dmFyIEQ9ZnVuY3Rpb24odCl7cmV0dXJuIGwoYlswXStn Kk1hdGguY29zKHQpLGJbMV0tZypNYXRoLnNpbih0KSl9O2Y9ZnVuY3Rpb24odCl7cmV0dXJu IEQoSSh0KSl9O2lmKHM9ZC5jYWxjVGlja3MobyksaD1kLmdldFRpY2tTaWducyhvKVsyXSxv LnZpc2libGUpe2g9Imluc2lkZSI9PT1vLnRpY2tzPy0xOjE7dmFyIFI9KG8ubGluZXdpZHRo fHwxKS8yO2QuZHJhd1RpY2tzKHQsbyx7dmFsczpzLGxheWVyOkEscGF0aDoiTSIraCpSKyIs MGgiK2gqby50aWNrbGVuLHRyYW5zRm46ZnVuY3Rpb24odCl7dmFyIGU9SSh0KTtyZXR1cm4g RChlKSsicm90YXRlKCIrLWMoZSkrIikifX0pLGQuZHJhd0xhYmVscyh0LG8se3ZhbHM6cyxs YXllcjpBLHRyYW5zRm46ZixsYWJlbEZuczpPfSl9dmFyIEY9W3ldLmNvbmNhdChwLmdhdWdl LnN0ZXBzKSxCPV8uc2VsZWN0QWxsKCJnLmJnLWFyYyIpLmRhdGEoRik7Qi5lbnRlcigpLmFw cGVuZCgiZyIpLmNsYXNzZWQoImJnLWFyYyIsITApLmFwcGVuZCgicGF0aCIpLEIuc2VsZWN0 KCJwYXRoIikuY2FsbChQKS5jYWxsKFQpLEIuZXhpdCgpLnJlbW92ZSgpO3ZhciBOPUMocC5n YXVnZS5iYXIudGhpY2tuZXNzKSxqPV8uc2VsZWN0QWxsKCJnLnZhbHVlLWFyYyIpLmRhdGEo W3AuZ2F1Z2UuYmFyXSk7ai5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInZhbHVlLWFy YyIsITApLmFwcGVuZCgicGF0aCIpO3ZhciBVPWouc2VsZWN0KCJwYXRoIik7dyhNKT8oVS50 cmFuc2l0aW9uKCkuZHVyYXRpb24oTS5kdXJhdGlvbikuZWFzZShNLmVhc2luZykuZWFjaCgi ZW5kIiwoZnVuY3Rpb24oKXtTJiZTKCl9KSkuZWFjaCgiaW50ZXJydXB0IiwoZnVuY3Rpb24o KXtTJiZTKCl9KSkuYXR0clR3ZWVuKCJkIiwoVj1OLEg9TChyWzBdLmxhc3RZKSxxPUwoclsw XS55KSxmdW5jdGlvbigpe3ZhciB0PWkoSCxxKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJu IFYuZW5kQW5nbGUodChlKSkoKX19KSkscC5fbGFzdFZhbHVlPXJbMF0ueSk6VS5hdHRyKCJk IiwibnVtYmVyIj09dHlwZW9mIHJbMF0ueT9OLmVuZEFuZ2xlKEwoclswXS55KSk6Ik0wLDBa Iik7dmFyIFYsSCxxO1UuY2FsbChUKSxqLmV4aXQoKS5yZW1vdmUoKSxGPVtdO3ZhciBHPXAu Z2F1Z2UudGhyZXNob2xkLnZhbHVlOyhHfHwwPT09RykmJkYucHVzaCh7cmFuZ2U6W0csR10s Y29sb3I6cC5nYXVnZS50aHJlc2hvbGQuY29sb3IsbGluZTp7Y29sb3I6cC5nYXVnZS50aHJl c2hvbGQubGluZS5jb2xvcix3aWR0aDpwLmdhdWdlLnRocmVzaG9sZC5saW5lLndpZHRofSx0 aGlja25lc3M6cC5nYXVnZS50aHJlc2hvbGQudGhpY2tuZXNzfSk7dmFyIFk9Xy5zZWxlY3RB bGwoImcudGhyZXNob2xkLWFyYyIpLmRhdGEoRik7WS5lbnRlcigpLmFwcGVuZCgiZyIpLmNs YXNzZWQoInRocmVzaG9sZC1hcmMiLCEwKS5hcHBlbmQoInBhdGgiKSxZLnNlbGVjdCgicGF0 aCIpLmNhbGwoUCkuY2FsbChUKSxZLmV4aXQoKS5yZW1vdmUoKTt2YXIgVz1fLnNlbGVjdEFs bCgiZy5nYXVnZS1vdXRsaW5lIikuZGF0YShbeF0pO1cuZW50ZXIoKS5hcHBlbmQoImciKS5j bGFzc2VkKCJnYXVnZS1vdXRsaW5lIiwhMCkuYXBwZW5kKCJwYXRoIiksVy5zZWxlY3QoInBh dGgiKS5jYWxsKFApLmNhbGwoVCksVy5leGl0KCkucmVtb3ZlKCl9KHQsMCxlLHtyYWRpdXM6 VSxpbm5lclJhZGl1czpWLGdhdWdlOlksbGF5ZXI6VyxzaXplOkIsZ2F1Z2VCZzpDLGdhdWdl T3V0bGluZTpQLHRyYW5zaXRpb25PcHRzOnIsb25Db21wbGV0ZTpnfSk7dmFyIFg9Ty5zZWxl Y3RBbGwoImcuYnVsbGV0IikuZGF0YShSP2U6W10pO1guZXhpdCgpLnJlbW92ZSgpO3ZhciBa PU8uc2VsZWN0QWxsKCJnLmJ1bGxldGF4aXMiKS5kYXRhKFI/ZTpbXSk7Wi5leGl0KCkucmVt b3ZlKCksUiYmZnVuY3Rpb24odCxlLHIsbil7dmFyIGksYSxvLHMsYyx1PXJbMF0udHJhY2Us Zj1uLmdhdWdlLHA9bi5sYXllcixtPW4uZ2F1Z2VCZyxnPW4uZ2F1Z2VPdXRsaW5lLHY9bi5z aXplLHg9dS5kb21haW4sYj1uLnRyYW5zaXRpb25PcHRzLF89bi5vbkNvbXBsZXRlO2YuZW50 ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJidWxsZXQiLCEwKSxmLmF0dHIoInRyYW5zZm9y bSIsbCh2Lmwsdi50KSkscC5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImJ1bGxldGF4 aXMiLCEwKS5jbGFzc2VkKCJjcmlzcCIsITApLHAuc2VsZWN0QWxsKCJnLnhidWxsZXRheGlz dGljayxwYXRoLHRleHQiKS5yZW1vdmUoKTt2YXIgQT12LmgsTT11LmdhdWdlLmJhci50aGlj a25lc3MqQSxTPXgueFswXSxFPXgueFswXSsoeC54WzFdLXgueFswXSkqKHUuX2hhc051bWJl cnx8dS5faGFzRGVsdGE/MS1oLmJ1bGxldE51bWJlckRvbWFpblNpemU6MSk7KGk9ayh0LHUu Z2F1Z2UuYXhpcykpLl9pZD0ieGJ1bGxldGF4aXMiLGkuZG9tYWluPVtTLEVdLGkuc2V0U2Nh bGUoKSxhPWQuY2FsY1RpY2tzKGkpLG89ZC5tYWtlVHJhbnNUaWNrRm4oaSkscz1kLmdldFRp Y2tTaWducyhpKVsyXSxjPXYudCt2LmgsaS52aXNpYmxlJiYoZC5kcmF3VGlja3ModCxpLHt2 YWxzOiJpbnNpZGUiPT09aS50aWNrcz9kLmNsaXBFbmRzKGksYSk6YSxsYXllcjpwLHBhdGg6 ZC5tYWtlVGlja1BhdGgoaSxjLHMpLHRyYW5zRm46b30pLGQuZHJhd0xhYmVscyh0LGkse3Zh bHM6YSxsYXllcjpwLHRyYW5zRm46byxsYWJlbEZuczpkLm1ha2VMYWJlbEZucyhpLGMpfSkp O2Z1bmN0aW9uIEwodCl7dC5hdHRyKCJ3aWR0aCIsKGZ1bmN0aW9uKHQpe3JldHVybiBNYXRo Lm1heCgwLGkuYzJwKHQucmFuZ2VbMV0pLWkuYzJwKHQucmFuZ2VbMF0pKX0pKS5hdHRyKCJ4 IiwoZnVuY3Rpb24odCl7cmV0dXJuIGkuYzJwKHQucmFuZ2VbMF0pfSkpLmF0dHIoInkiLChm dW5jdGlvbih0KXtyZXR1cm4uNSooMS10LnRoaWNrbmVzcykqQX0pKS5hdHRyKCJoZWlnaHQi LChmdW5jdGlvbih0KXtyZXR1cm4gdC50aGlja25lc3MqQX0pKX12YXIgQz1bbV0uY29uY2F0 KHUuZ2F1Z2Uuc3RlcHMpLFA9Zi5zZWxlY3RBbGwoImcuYmctYnVsbGV0IikuZGF0YShDKTtQ LmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgiYmctYnVsbGV0IiwhMCkuYXBwZW5kKCJy ZWN0IiksUC5zZWxlY3QoInJlY3QiKS5jYWxsKEwpLmNhbGwoVCksUC5leGl0KCkucmVtb3Zl KCk7dmFyIEk9Zi5zZWxlY3RBbGwoImcudmFsdWUtYnVsbGV0IikuZGF0YShbdS5nYXVnZS5i YXJdKTtJLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgidmFsdWUtYnVsbGV0IiwhMCku YXBwZW5kKCJyZWN0IiksSS5zZWxlY3QoInJlY3QiKS5hdHRyKCJoZWlnaHQiLE0pLmF0dHIo InkiLChBLU0pLzIpLmNhbGwoVCksdyhiKT9JLnNlbGVjdCgicmVjdCIpLnRyYW5zaXRpb24o KS5kdXJhdGlvbihiLmR1cmF0aW9uKS5lYXNlKGIuZWFzaW5nKS5lYWNoKCJlbmQiLChmdW5j dGlvbigpe18mJl8oKX0pKS5lYWNoKCJpbnRlcnJ1cHQiLChmdW5jdGlvbigpe18mJl8oKX0p KS5hdHRyKCJ3aWR0aCIsTWF0aC5tYXgoMCxpLmMycChNYXRoLm1pbih1LmdhdWdlLmF4aXMu cmFuZ2VbMV0sclswXS55KSkpKTpJLnNlbGVjdCgicmVjdCIpLmF0dHIoIndpZHRoIiwibnVt YmVyIj09dHlwZW9mIHJbMF0ueT9NYXRoLm1heCgwLGkuYzJwKE1hdGgubWluKHUuZ2F1Z2Uu YXhpcy5yYW5nZVsxXSxyWzBdLnkpKSk6MCk7SS5leGl0KCkucmVtb3ZlKCk7dmFyIE89ci5m aWx0ZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIHUuZ2F1Z2UudGhyZXNob2xkLnZhbHVlfHwwPT09 dS5nYXVnZS50aHJlc2hvbGQudmFsdWV9KSksej1mLnNlbGVjdEFsbCgiZy50aHJlc2hvbGQt YnVsbGV0IikuZGF0YShPKTt6LmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgidGhyZXNo b2xkLWJ1bGxldCIsITApLmFwcGVuZCgibGluZSIpLHouc2VsZWN0KCJsaW5lIikuYXR0cigi eDEiLGkuYzJwKHUuZ2F1Z2UudGhyZXNob2xkLnZhbHVlKSkuYXR0cigieDIiLGkuYzJwKHUu Z2F1Z2UudGhyZXNob2xkLnZhbHVlKSkuYXR0cigieTEiLCgxLXUuZ2F1Z2UudGhyZXNob2xk LnRoaWNrbmVzcykvMipBKS5hdHRyKCJ5MiIsKDEtKDEtdS5nYXVnZS50aHJlc2hvbGQudGhp Y2tuZXNzKS8yKSpBKS5jYWxsKHkuc3Ryb2tlLHUuZ2F1Z2UudGhyZXNob2xkLmxpbmUuY29s b3IpLnN0eWxlKCJzdHJva2Utd2lkdGgiLHUuZ2F1Z2UudGhyZXNob2xkLmxpbmUud2lkdGgp LHouZXhpdCgpLnJlbW92ZSgpO3ZhciBEPWYuc2VsZWN0QWxsKCJnLmdhdWdlLW91dGxpbmUi KS5kYXRhKFtnXSk7RC5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImdhdWdlLW91dGxp bmUiLCEwKS5hcHBlbmQoInJlY3QiKSxELnNlbGVjdCgicmVjdCIpLmNhbGwoTCkuY2FsbChU KSxELmV4aXQoKS5yZW1vdmUoKX0odCwwLGUse2dhdWdlOlgsbGF5ZXI6WixzaXplOkIsZ2F1 Z2VCZzpDLGdhdWdlT3V0bGluZTpQLHRyYW5zaXRpb25PcHRzOnIsb25Db21wbGV0ZTpnfSk7 dmFyIEo9Ty5zZWxlY3RBbGwoInRleHQudGl0bGUiKS5kYXRhKGUpO0ouZXhpdCgpLnJlbW92 ZSgpLEouZW50ZXIoKS5hcHBlbmQoInRleHQiKS5jbGFzc2VkKCJ0aXRsZSIsITApLEouYXR0 cigidGV4dC1hbmNob3IiLChmdW5jdGlvbigpe3JldHVybiBSP3gucmlnaHQ6eFtJLnRpdGxl LmFsaWduXX0pKS50ZXh0KEkudGl0bGUudGV4dCkuY2FsbChmLmZvbnQsSS50aXRsZS5mb250 KS5jYWxsKHAuY29udmVydFRvVHNwYW5zLHQpLEouYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rp b24oKXt2YXIgdCxlPUIubCtCLncqYltJLnRpdGxlLmFsaWduXSxyPWgudGl0bGVQYWRkaW5n LG49Zi5iQm94KEoubm9kZSgpKTtpZih6KXtpZihEKWlmKEkuZ2F1Z2UuYXhpcy52aXNpYmxl KXQ9Zi5iQm94KFcubm9kZSgpKS50b3Atci1uLmJvdHRvbTtlbHNlIHQ9Qi50K0IuaC8yLVUv Mi1uLmJvdHRvbS1yO1ImJih0PUUtKG4udG9wK24uYm90dG9tKS8yLGU9Qi5sLWguYnVsbGV0 UGFkZGluZypCLncpfWVsc2UgdD1JLl9udW1iZXJzVG9wLXItbi5ib3R0b207cmV0dXJuIGwo ZSx0KX0pKX0pKX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6MzY2LCIuLi8uLi9jb21w b25lbnRzL2RyYXdpbmciOjM4OCwiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCI6NDcxLCIu Li8uLi9saWIiOjUwMywiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo1MjksIi4uLy4uL3Bs b3RzL2NhcnRlc2lhbi9heGVzIjo1NTQsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2Rl ZmF1bHRzIjo1NTYsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9sYXlvdXRfYXR0cmlidXRlcyI6 NTY5LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vcG9zaXRpb25fZGVmYXVsdHMiOjU3MiwiLi9j b25zdGFudHMiOjg1OCwiQHBsb3RseS9kMyI6NTgsImQzLWludGVycG9sYXRlIjoxMTZ9XSw4 NjI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9u ZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lh bi9heGlzX2Zvcm1hdF9hdHRyaWJ1dGVzIikuYXhpc0hvdmVyRm9ybWF0LGE9dCgiLi4vLi4v cGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVBdHRycyxvPXQoIi4u L21lc2gzZC9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIiksbD10 KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxjPXQoIi4uLy4uL3Bsb3RfYXBpL2Vk aXRfdHlwZXMiKS5vdmVycmlkZUFsbDt2YXIgdT1lLmV4cG9ydHM9YyhsKHt4Ont2YWxUeXBl OiJkYXRhX2FycmF5In0seTp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LHo6e3ZhbFR5cGU6ImRh dGFfYXJyYXkifSx2YWx1ZTp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LGlzb21pbjp7dmFsVHlw ZToibnVtYmVyIn0saXNvbWF4Ont2YWxUeXBlOiJudW1iZXIifSxzdXJmYWNlOntzaG93Ont2 YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSxjb3VudDp7dmFsVHlwZToiaW50ZWdlciIsZGZs dDoyLG1pbjoxfSxmaWxsOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MX0s cGF0dGVybjp7dmFsVHlwZToiZmxhZ2xpc3QiLGZsYWdzOlsiQSIsIkIiLCJDIiwiRCIsIkUi XSxleHRyYXM6WyJhbGwiLCJvZGQiLCJldmVuIl0sZGZsdDoiYWxsIn19LHNwYWNlZnJhbWU6 e3Nob3c6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LGZpbGw6e3ZhbFR5cGU6Im51bWJl ciIsbWluOjAsbWF4OjEsZGZsdDouMTV9fSxzbGljZXM6e3g6e3Nob3c6e3ZhbFR5cGU6ImJv b2xlYW4iLGRmbHQ6ITF9LGxvY2F0aW9uczp7dmFsVHlwZToiZGF0YV9hcnJheSIsZGZsdDpb XX0sZmlsbDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0OjF9fSx5OntzaG93 Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxsb2NhdGlvbnM6e3ZhbFR5cGU6ImRhdGFf YXJyYXkiLGRmbHQ6W119LGZpbGw6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZs dDoxfX0sejp7c2hvdzp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sbG9jYXRpb25zOnt2 YWxUeXBlOiJkYXRhX2FycmF5IixkZmx0OltdfSxmaWxsOnt2YWxUeXBlOiJudW1iZXIiLG1p bjowLG1heDoxLGRmbHQ6MX19fSxjYXBzOnt4OntzaG93Ont2YWxUeXBlOiJib29sZWFuIixk Zmx0OiEwfSxmaWxsOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MX19LHk6 e3Nob3c6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITB9LGZpbGw6e3ZhbFR5cGU6Im51bWJl ciIsbWluOjAsbWF4OjEsZGZsdDoxfX0sejp7c2hvdzp7dmFsVHlwZToiYm9vbGVhbiIsZGZs dDohMH0sZmlsbDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0OjF9fX0sdGV4 dDp7dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGFycmF5T2s6ITB9LGhvdmVydGV4dDp7dmFs VHlwZToic3RyaW5nIixkZmx0OiIiLGFycmF5T2s6ITB9LGhvdmVydGVtcGxhdGU6YSgpLHho b3ZlcmZvcm1hdDppKCJ4IikseWhvdmVyZm9ybWF0OmkoInkiKSx6aG92ZXJmb3JtYXQ6aSgi eiIpLHZhbHVlaG92ZXJmb3JtYXQ6aSgidmFsdWUiLDEpLHNob3dsZWdlbmQ6bCh7fSxzLnNo b3dsZWdlbmQse2RmbHQ6ITF9KX0sbigiIix7Y29sb3JBdHRyOiJgdmFsdWVgIixzaG93U2Nh bGVEZmx0OiEwLGVkaXRUeXBlT3ZlcnJpZGU6ImNhbGMifSkse29wYWNpdHk6by5vcGFjaXR5 LGxpZ2h0cG9zaXRpb246by5saWdodHBvc2l0aW9uLGxpZ2h0aW5nOm8ubGlnaHRpbmcsZmxh dHNoYWRpbmc6by5mbGF0c2hhZGluZyxjb250b3VyOm8uY29udG91cixob3ZlcmluZm86bCh7 fSxzLmhvdmVyaW5mbyl9KSwiY2FsYyIsIm5lc3RlZCIpO3UuZmxhdHNoYWRpbmcuZGZsdD0h MCx1LmxpZ2h0aW5nLmZhY2Vub3JtYWxzZXBzaWxvbi5kZmx0PTAsdS54LmVkaXRUeXBlPXUu eS5lZGl0VHlwZT11LnouZWRpdFR5cGU9dS52YWx1ZS5lZGl0VHlwZT0iY2FsYytjbGVhckF4 aXNUeXBlcyIsdS50cmFuc2Zvcm1zPXZvaWQgMH0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9y c2NhbGUvYXR0cmlidXRlcyI6MzczLCIuLi8uLi9saWIvZXh0ZW5kIjo0OTMsIi4uLy4uL3Bs b3RfYXBpL2VkaXRfdHlwZXMiOjUzNiwiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyI6NTUwLCIu Li8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19mb3JtYXRfYXR0cmlidXRlcyI6NTU3LCIuLi8u Li9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo2MzMsIi4uL21lc2gzZC9hdHRyaWJ1dGVz Ijo4Njd9XSw4NjM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4v Li4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiKSxpPXQoIi4uL3N0cmVhbXR1YmUvY2Fs YyIpLnByb2Nlc3NHcmlkLGE9dCgiLi4vc3RyZWFtdHViZS9jYWxjIikuZmlsdGVyO2UuZXhw b3J0cz1mdW5jdGlvbih0LGUpe2UuX2xlbj1NYXRoLm1pbihlLngubGVuZ3RoLGUueS5sZW5n dGgsZS56Lmxlbmd0aCxlLnZhbHVlLmxlbmd0aCksZS5feD1hKGUueCxlLl9sZW4pLGUuX3k9 YShlLnksZS5fbGVuKSxlLl96PWEoZS56LGUuX2xlbiksZS5fdmFsdWU9YShlLnZhbHVlLGUu X2xlbik7dmFyIHI9aShlKTtlLl9ncmlkRmlsbD1yLmZpbGwsZS5fWHM9ci5YcyxlLl9Zcz1y LllzLGUuX1pzPXIuWnMsZS5fbGVuPXIubGVuO2Zvcih2YXIgbz0xLzAscz0tMS8wLGw9MDts PGUuX2xlbjtsKyspe3ZhciBjPWUuX3ZhbHVlW2xdO289TWF0aC5taW4obyxjKSxzPU1hdGgu bWF4KHMsYyl9ZS5fbWluVmFsdWVzPW8sZS5fbWF4VmFsdWVzPXMsZS5fdk1pbj12b2lkIDA9 PT1lLmlzb21pbnx8bnVsbD09PWUuaXNvbWluP286ZS5pc29taW4sZS5fdk1heD12b2lkIDA9 PT1lLmlzb21heHx8bnVsbD09PWUuaXNvbWluP3M6ZS5pc29tYXgsbih0LGUse3ZhbHM6W2Uu X3ZNaW4sZS5fdk1heF0sY29udGFpbmVyU3RyOiIiLGNMZXR0ZXI6ImMifSl9fSx7Ii4uLy4u L2NvbXBvbmVudHMvY29sb3JzY2FsZS9jYWxjIjozNzQsIi4uL3N0cmVhbXR1YmUvY2FsYyI6 MTA0NX1dLDg2NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8u Li8uLi9zdGFja2dsX21vZHVsZXMiKS5nbF9tZXNoM2QsaT10KCIuLi8uLi9saWIvZ2xfZm9y bWF0X2NvbG9yIikucGFyc2VDb2xvclNjYWxlLGE9dCgiLi4vLi4vbGliL3N0cjJyZ2JhcnJh eSIpLG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIikuZXh0cmFjdE9wdHMscz10 KCIuLi8uLi9wbG90cy9nbDNkL3ppcDMiKSxsPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPWUu bGVuZ3RoLTE7cj4wO3ItLSl7dmFyIG49TWF0aC5taW4oZVtyXSxlW3ItMV0pLGk9TWF0aC5t YXgoZVtyXSxlW3ItMV0pO2lmKGk+biYmbjx0JiZ0PD1pKXJldHVybntpZDpyLGRpc3RSYXRp bzooaS10KS8oaS1uKX19cmV0dXJue2lkOjAsZGlzdFJhdGlvOjB9fTtmdW5jdGlvbiBjKHQs ZSxyKXt0aGlzLnNjZW5lPXQsdGhpcy51aWQ9cix0aGlzLm1lc2g9ZSx0aGlzLm5hbWU9IiIs dGhpcy5kYXRhPW51bGwsdGhpcy5zaG93Q29udG91cj0hMX12YXIgdT1jLnByb3RvdHlwZTt1 LmhhbmRsZVBpY2s9ZnVuY3Rpb24odCl7aWYodC5vYmplY3Q9PT10aGlzLm1lc2gpe3ZhciBl PXQuZGF0YS5pbmRleCxyPXRoaXMuZGF0YS5fbWVzaFhbZV0sbj10aGlzLmRhdGEuX21lc2hZ W2VdLGk9dGhpcy5kYXRhLl9tZXNoWltlXSxhPXRoaXMuZGF0YS5fWXMubGVuZ3RoLG89dGhp cy5kYXRhLl9acy5sZW5ndGgscz1sKHIsdGhpcy5kYXRhLl9YcykuaWQsYz1sKG4sdGhpcy5k YXRhLl9ZcykuaWQsdT1sKGksdGhpcy5kYXRhLl9acykuaWQsZj10LmluZGV4PXUrbypjK28q YSpzO3QudHJhY2VDb29yZGluYXRlPVt0aGlzLmRhdGEuX21lc2hYW2ZdLHRoaXMuZGF0YS5f bWVzaFlbZl0sdGhpcy5kYXRhLl9tZXNoWltmXSx0aGlzLmRhdGEuX3ZhbHVlW2ZdXTt2YXIg aD10aGlzLmRhdGEuaG92ZXJ0ZXh0fHx0aGlzLmRhdGEudGV4dDtyZXR1cm4gQXJyYXkuaXNB cnJheShoKSYmdm9pZCAwIT09aFtmXT90LnRleHRMYWJlbD1oW2ZdOmgmJih0LnRleHRMYWJl bD1oKSwhMH19LHUudXBkYXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuc2NlbmUscj1lLmZ1 bGxTY2VuZUxheW91dDtmdW5jdGlvbiBuKHQsZSxyLG4pe3JldHVybiBlLm1hcCgoZnVuY3Rp b24oZSl7cmV0dXJuIHQuZDJsKGUsMCxuKSpyfSkpfXRoaXMuZGF0YT1oKHQpO3ZhciBsPXtw b3NpdGlvbnM6cyhuKHIueGF4aXMsdC5fbWVzaFgsZS5kYXRhU2NhbGVbMF0sdC54Y2FsZW5k YXIpLG4oci55YXhpcyx0Ll9tZXNoWSxlLmRhdGFTY2FsZVsxXSx0LnljYWxlbmRhciksbihy LnpheGlzLHQuX21lc2haLGUuZGF0YVNjYWxlWzJdLHQuemNhbGVuZGFyKSksY2VsbHM6cyh0 Ll9tZXNoSSx0Ll9tZXNoSix0Ll9tZXNoSyksbGlnaHRQb3NpdGlvbjpbdC5saWdodHBvc2l0 aW9uLngsdC5saWdodHBvc2l0aW9uLnksdC5saWdodHBvc2l0aW9uLnpdLGFtYmllbnQ6dC5s aWdodGluZy5hbWJpZW50LGRpZmZ1c2U6dC5saWdodGluZy5kaWZmdXNlLHNwZWN1bGFyOnQu bGlnaHRpbmcuc3BlY3VsYXIscm91Z2huZXNzOnQubGlnaHRpbmcucm91Z2huZXNzLGZyZXNu ZWw6dC5saWdodGluZy5mcmVzbmVsLHZlcnRleE5vcm1hbHNFcHNpbG9uOnQubGlnaHRpbmcu dmVydGV4bm9ybWFsc2Vwc2lsb24sZmFjZU5vcm1hbHNFcHNpbG9uOnQubGlnaHRpbmcuZmFj ZW5vcm1hbHNlcHNpbG9uLG9wYWNpdHk6dC5vcGFjaXR5LGNvbnRvdXJFbmFibGU6dC5jb250 b3VyLnNob3csY29udG91ckNvbG9yOmEodC5jb250b3VyLmNvbG9yKS5zbGljZSgwLDMpLGNv bnRvdXJXaWR0aDp0LmNvbnRvdXIud2lkdGgsdXNlRmFjZXROb3JtYWxzOnQuZmxhdHNoYWRp bmd9LGM9byh0KTtsLnZlcnRleEludGVuc2l0eT10Ll9tZXNoSW50ZW5zaXR5LGwudmVydGV4 SW50ZW5zaXR5Qm91bmRzPVtjLm1pbixjLm1heF0sbC5jb2xvcm1hcD1pKHQpLHRoaXMubWVz aC51cGRhdGUobCl9LHUuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuc2NlbmUuZ2xwbG90LnJl bW92ZSh0aGlzLm1lc2gpLHRoaXMubWVzaC5kaXNwb3NlKCl9O3ZhciBmPVsieHl6IiwieHp5 IiwieXh6IiwieXp4Iiwienh5Iiwienl4Il07ZnVuY3Rpb24gaCh0KXt0Ll9tZXNoST1bXSx0 Ll9tZXNoSj1bXSx0Ll9tZXNoSz1bXTt2YXIgZSxyLG4saSxhLG8scyxjPXQuc3VyZmFjZS5z aG93LHU9dC5zcGFjZWZyYW1lLnNob3csaD10LnN1cmZhY2UuZmlsbCxwPXQuc3BhY2VmcmFt ZS5maWxsLGQ9ITEsbT0hMSxnPTAsdj10Ll9Ycyx5PXQuX1lzLHg9dC5fWnMsYj12Lmxlbmd0 aCxfPXkubGVuZ3RoLHc9eC5sZW5ndGgsVD1mLmluZGV4T2YodC5fZ3JpZEZpbGwucmVwbGFj ZSgvLS9nLCIiKS5yZXBsYWNlKC9cKy9nLCIiKSksaz1mdW5jdGlvbih0LGUscil7c3dpdGNo KFQpe2Nhc2UgNTpyZXR1cm4gcit3KmUrdypfKnQ7Y2FzZSA0OnJldHVybiByK3cqdCt3KmIq ZTtjYXNlIDM6cmV0dXJuIGUrXypyK18qdyp0O2Nhc2UgMjpyZXR1cm4gZStfKnQrXypiKnI7 Y2FzZSAxOnJldHVybiB0K2IqcitiKncqZTtkZWZhdWx0OnJldHVybiB0K2IqZStiKl8qcn19 LEE9dC5fbWluVmFsdWVzLE09dC5fbWF4VmFsdWVzLFM9dC5fdk1pbixFPXQuX3ZNYXg7ZnVu Y3Rpb24gTCh0LGUscyl7Zm9yKHZhciBsPW8ubGVuZ3RoLGM9cjtjPGw7YysrKWlmKHQ9PT1u W2NdJiZlPT09aVtjXSYmcz09PWFbY10pcmV0dXJuIGM7cmV0dXJuLTF9ZnVuY3Rpb24gQygp e3I9ZX1mdW5jdGlvbiBQKCl7bj1bXSxpPVtdLGE9W10sbz1bXSxlPTAsQygpfWZ1bmN0aW9u IEkodCxyLHMsbCl7cmV0dXJuIG4ucHVzaCh0KSxpLnB1c2gociksYS5wdXNoKHMpLG8ucHVz aChsKSwrK2UtMX1mdW5jdGlvbiBPKHQsZSxyKXtmb3IodmFyIG49W10saT0wO2k8dC5sZW5n dGg7aSsrKW5baV09dFtpXSooMS1yKStyKmVbaV07cmV0dXJuIG59ZnVuY3Rpb24geih0KXtz PXR9ZnVuY3Rpb24gRCh0LGUpe3JldHVybiJhbGwiPT09dHx8bnVsbD09PXR8fHQuaW5kZXhP ZihlKT4tMX1mdW5jdGlvbiBSKHQsZSl7cmV0dXJuIG51bGw9PT10P2U6dH1mdW5jdGlvbiBG KGUscixuKXtDKCk7dmFyIGksYSxvLGw9W3JdLGM9W25dO2lmKHM+PTEpbD1bcl0sYz1bbl07 ZWxzZSBpZihzPjApe3ZhciB1PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dFswXSxuPXRbMV0saT10 WzJdLGE9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj1bXSxpPTA7aTx0Lmxlbmd0aDtpKysp bltpXT0odFtpXStlW2ldK3JbaV0pLzM7cmV0dXJuIG59KHIsbixpKSxvPU1hdGguc3FydCgx LXMpLGw9TyhhLHIsbyksYz1PKGEsbixvKSx1PU8oYSxpLG8pLGY9ZVswXSxoPWVbMV0scD1l WzJdO3JldHVybnt4eXp2OltbcixuLGNdLFtjLGwscl0sW24saSx1XSxbdSxjLG5dLFtpLHIs bF0sW2wsdSxpXV0sYWJjOltbZixoLC0xXSxbLTEsLTEsZl0sW2gscCwtMV0sWy0xLC0xLGhd LFtwLGYsLTFdLFstMSwtMSxwXV19fShyLG4pO2w9dS54eXp2LGM9dS5hYmN9Zm9yKHZhciBm PTA7ZjxsLmxlbmd0aDtmKyspe3I9bFtmXSxuPWNbZl07Zm9yKHZhciBoPVtdLHA9MDtwPDM7 cCsrKXt2YXIgZD1yW3BdWzBdLG09cltwXVsxXSx2PXJbcF1bMl0seT1yW3BdWzNdLHg9bltw XT4tMT9uW3BdOkwoZCxtLHYpO2hbcF09eD4tMT94OkkoZCxtLHYsUihlLHkpKX1pPWhbMF0s YT1oWzFdLG89aFsyXSx0Ll9tZXNoSS5wdXNoKGkpLHQuX21lc2hKLnB1c2goYSksdC5fbWVz aEsucHVzaChvKSwrK2d9fWZ1bmN0aW9uIEIodCxlLHIsbil7dmFyIGk9dFszXTtpPHImJihp PXIpLGk+biYmKGk9bik7Zm9yKHZhciBhPSh0WzNdLWkpLyh0WzNdLWVbM10rMWUtOSksbz1b XSxzPTA7czw0O3MrKylvW3NdPSgxLWEpKnRbc10rYSplW3NdO3JldHVybiBvfWZ1bmN0aW9u IE4odCxlLHIpe3JldHVybiB0Pj1lJiZ0PD1yfWZ1bmN0aW9uIGoodCl7dmFyIGU9LjAwMSoo RS1TKTtyZXR1cm4gdD49Uy1lJiZ0PD1FK2V9ZnVuY3Rpb24gVShlKXtmb3IodmFyIHI9W10s bj0wO248NDtuKyspe3ZhciBpPWVbbl07ci5wdXNoKFt0Ll94W2ldLHQuX3lbaV0sdC5feltp XSx0Ll92YWx1ZVtpXV0pfXJldHVybiByfWZ1bmN0aW9uIFYodCxlLHIsbixpLGEpe2F8fChh PTEpLHI9Wy0xLC0xLC0xXTt2YXIgbz0hMSxzPVtOKGVbMF1bM10sbixpKSxOKGVbMV1bM10s bixpKSxOKGVbMl1bM10sbixpKV07aWYoIXNbMF0mJiFzWzFdJiYhc1syXSlyZXR1cm4hMTt2 YXIgbD1mdW5jdGlvbih0LGUscil7cmV0dXJuIGooZVswXVszXSkmJmooZVsxXVszXSkmJmoo ZVsyXVszXSk/KEYodCxlLHIpLCEwKTphPDMmJlYodCxlLHIsUyxFLCsrYSl9O2lmKHNbMF0m JnNbMV0mJnNbMl0pcmV0dXJuIGwodCxlLHIpfHxvO3ZhciBjPSExO3JldHVybltbMCwxLDJd LFsyLDAsMV0sWzEsMiwwXV0uZm9yRWFjaCgoZnVuY3Rpb24oYSl7aWYoc1thWzBdXSYmc1th WzFdXSYmIXNbYVsyXV0pe3ZhciB1PWVbYVswXV0sZj1lW2FbMV1dLGg9ZVthWzJdXSxwPUIo aCx1LG4saSksZD1CKGgsZixuLGkpO289bCh0LFtkLHAsdV0sWy0xLC0xLHJbYVswXV1dKXx8 byxvPWwodCxbdSxmLGRdLFtyW2FbMF1dLHJbYVsxXV0sLTFdKXx8byxjPSEwfX0pKSxjfHxb WzAsMSwyXSxbMSwyLDBdLFsyLDAsMV1dLmZvckVhY2goKGZ1bmN0aW9uKGEpe2lmKHNbYVsw XV0mJiFzW2FbMV1dJiYhc1thWzJdXSl7dmFyIHU9ZVthWzBdXSxmPWVbYVsxXV0saD1lW2Fb Ml1dLHA9QihmLHUsbixpKSxkPUIoaCx1LG4saSk7bz1sKHQsW2QscCx1XSxbLTEsLTEsclth WzBdXV0pfHxvLGM9ITB9fSkpLG99ZnVuY3Rpb24gSCh0LGUscixuKXt2YXIgaT0hMSxhPVUo ZSksbz1bTihhWzBdWzNdLHIsbiksTihhWzFdWzNdLHIsbiksTihhWzJdWzNdLHIsbiksTihh WzNdWzNdLHIsbildO2lmKCEob1swXXx8b1sxXXx8b1syXXx8b1szXSkpcmV0dXJuIGk7aWYo b1swXSYmb1sxXSYmb1syXSYmb1szXSlyZXR1cm4gbSYmKGk9ZnVuY3Rpb24odCxlLHIpe3Zh ciBuPWZ1bmN0aW9uKG4saSxhKXtGKHQsW2Vbbl0sZVtpXSxlW2FdXSxbcltuXSxyW2ldLHJb YV1dKX07bigwLDEsMiksbigzLDAsMSksbigyLDMsMCksbigxLDIsMyl9KHQsYSxlKXx8aSks aTt2YXIgcz0hMTtyZXR1cm5bWzAsMSwyLDNdLFszLDAsMSwyXSxbMiwzLDAsMV0sWzEsMiwz LDBdXS5mb3JFYWNoKChmdW5jdGlvbihsKXtpZihvW2xbMF1dJiZvW2xbMV1dJiZvW2xbMl1d JiYhb1tsWzNdXSl7dmFyIGM9YVtsWzBdXSx1PWFbbFsxXV0sZj1hW2xbMl1dLGg9YVtsWzNd XTtpZihtKWk9Rih0LFtjLHUsZl0sW2VbbFswXV0sZVtsWzFdXSxlW2xbMl1dXSl8fGk7ZWxz ZXt2YXIgcD1CKGgsYyxyLG4pLGQ9QihoLHUscixuKSxnPUIoaCxmLHIsbik7aT1GKG51bGws W3AsZCxnXSxbLTEsLTEsLTFdKXx8aX1zPSEwfX0pKSxzP2k6KFtbMCwxLDIsM10sWzEsMiwz LDBdLFsyLDMsMCwxXSxbMywwLDEsMl0sWzAsMiwzLDFdLFsxLDMsMiwwXV0uZm9yRWFjaCgo ZnVuY3Rpb24obCl7aWYob1tsWzBdXSYmb1tsWzFdXSYmIW9bbFsyXV0mJiFvW2xbM11dKXt2 YXIgYz1hW2xbMF1dLHU9YVtsWzFdXSxmPWFbbFsyXV0saD1hW2xbM11dLHA9QihmLGMscixu KSxkPUIoZix1LHIsbiksZz1CKGgsdSxyLG4pLHY9QihoLGMscixuKTttPyhpPUYodCxbYyx2 LHBdLFtlW2xbMF1dLC0xLC0xXSl8fGksaT1GKHQsW3UsZCxnXSxbZVtsWzFdXSwtMSwtMV0p fHxpKTppPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1mdW5jdGlvbihuLGksYSl7Rih0LFtlW25d LGVbaV0sZVthXV0sW3Jbbl0scltpXSxyW2FdXSl9O24oMCwxLDIpLG4oMiwzLDApfShudWxs LFtwLGQsZyx2XSxbLTEsLTEsLTEsLTFdKXx8aSxzPSEwfX0pKSxzfHxbWzAsMSwyLDNdLFsx LDIsMywwXSxbMiwzLDAsMV0sWzMsMCwxLDJdXS5mb3JFYWNoKChmdW5jdGlvbihsKXtpZihv W2xbMF1dJiYhb1tsWzFdXSYmIW9bbFsyXV0mJiFvW2xbM11dKXt2YXIgYz1hW2xbMF1dLHU9 YVtsWzFdXSxmPWFbbFsyXV0saD1hW2xbM11dLHA9Qih1LGMscixuKSxkPUIoZixjLHIsbiks Zz1CKGgsYyxyLG4pO20/KGk9Rih0LFtjLHAsZF0sW2VbbFswXV0sLTEsLTFdKXx8aSxpPUYo dCxbYyxkLGddLFtlW2xbMF1dLC0xLC0xXSl8fGksaT1GKHQsW2MsZyxwXSxbZVtsWzBdXSwt MSwtMV0pfHxpKTppPUYobnVsbCxbcCxkLGddLFstMSwtMSwtMV0pfHxpLHM9ITB9fSkpLGkp fWZ1bmN0aW9uIHEodCxlLHIsbixpLGEsbyxzLGwsYyx1KXt2YXIgZj0hMTtyZXR1cm4gZCYm KEQodCwiQSIpJiYoZj1IKG51bGwsW2UscixuLGFdLGMsdSl8fGYpLEQodCwiQiIpJiYoZj1I KG51bGwsW3IsbixpLGxdLGMsdSl8fGYpLEQodCwiQyIpJiYoZj1IKG51bGwsW3IsYSxvLGxd LGMsdSl8fGYpLEQodCwiRCIpJiYoZj1IKG51bGwsW24sYSxzLGxdLGMsdSl8fGYpLEQodCwi RSIpJiYoZj1IKG51bGwsW3IsbixhLGxdLGMsdSl8fGYpKSxtJiYoZj1IKHQsW3IsbixhLGxd LGMsdSl8fGYpLGZ9ZnVuY3Rpb24gRyh0LGUscixuLGksYSxvLHMpe3JldHVyblshMD09PXNb MF18fFYodCxVKFtlLHIsbl0pLFtlLHIsbl0sYSxvKSwhMD09PXNbMV18fFYodCxVKFtuLGks ZV0pLFtuLGksZV0sYSxvKV19ZnVuY3Rpb24gWSh0LGUscixuLGksYSxvLHMsbCl7cmV0dXJu IHM/Ryh0LGUscixpLG4sYSxvLGwpOkcodCxyLGksbixlLGEsbyxsKX1mdW5jdGlvbiBXKHQs ZSxyLG4saSxhLG8pe3ZhciBzLGwsYyx1LGY9ITEsaD1mdW5jdGlvbigpe2Y9Vih0LFtzLGws Y10sWy0xLC0xLC0xXSxpLGEpfHxmLGY9Vih0LFtjLHUsc10sWy0xLC0xLC0xXSxpLGEpfHxm fSxwPW9bMF0sZD1vWzFdLG09b1syXTtyZXR1cm4gcCYmKHM9TyhVKFtrKGUsci0wLG4tMCld KVswXSxVKFtrKGUtMSxyLTAsbi0wKV0pWzBdLHApLGw9TyhVKFtrKGUsci0wLG4tMSldKVsw XSxVKFtrKGUtMSxyLTAsbi0xKV0pWzBdLHApLGM9TyhVKFtrKGUsci0xLG4tMSldKVswXSxV KFtrKGUtMSxyLTEsbi0xKV0pWzBdLHApLHU9TyhVKFtrKGUsci0xLG4tMCldKVswXSxVKFtr KGUtMSxyLTEsbi0wKV0pWzBdLHApLGgoKSksZCYmKHM9TyhVKFtrKGUtMCxyLG4tMCldKVsw XSxVKFtrKGUtMCxyLTEsbi0wKV0pWzBdLGQpLGw9TyhVKFtrKGUtMCxyLG4tMSldKVswXSxV KFtrKGUtMCxyLTEsbi0xKV0pWzBdLGQpLGM9TyhVKFtrKGUtMSxyLG4tMSldKVswXSxVKFtr KGUtMSxyLTEsbi0xKV0pWzBdLGQpLHU9TyhVKFtrKGUtMSxyLG4tMCldKVswXSxVKFtrKGUt MSxyLTEsbi0wKV0pWzBdLGQpLGgoKSksbSYmKHM9TyhVKFtrKGUtMCxyLTAsbildKVswXSxV KFtrKGUtMCxyLTAsbi0xKV0pWzBdLG0pLGw9TyhVKFtrKGUtMCxyLTEsbildKVswXSxVKFtr KGUtMCxyLTEsbi0xKV0pWzBdLG0pLGM9TyhVKFtrKGUtMSxyLTEsbildKVswXSxVKFtrKGUt MSxyLTEsbi0xKV0pWzBdLG0pLHU9TyhVKFtrKGUtMSxyLTAsbildKVswXSxVKFtrKGUtMSxy LTAsbi0xKV0pWzBdLG0pLGgoKSksZn1mdW5jdGlvbiBYKHQsZSxyLG4saSxhLG8scyxsLGMs dSxmKXt2YXIgaD10O3JldHVybiBmPyhkJiYiZXZlbiI9PT10JiYoaD1udWxsKSxxKGgsZSxy LG4saSxhLG8scyxsLGMsdSkpOihkJiYib2RkIj09PXQmJihoPW51bGwpLHEoaCxsLHMsbyxh LGksbixyLGUsYyx1KSl9ZnVuY3Rpb24gWih0LGUscixuLGkpe2Zvcih2YXIgYT1bXSxvPTAs cz0wO3M8ZS5sZW5ndGg7cysrKWZvcih2YXIgbD1lW3NdLGM9MTtjPHc7YysrKWZvcih2YXIg dT0xO3U8Xzt1KyspYS5wdXNoKFkodCxrKGwsdS0xLGMtMSksayhsLHUtMSxjKSxrKGwsdSxj LTEpLGsobCx1LGMpLHIsbiwobCt1K2MpJTIsaSYmaVtvXT9pW29dOltdKSksbysrO3JldHVy biBhfWZ1bmN0aW9uIEoodCxlLHIsbixpKXtmb3IodmFyIGE9W10sbz0wLHM9MDtzPGUubGVu Z3RoO3MrKylmb3IodmFyIGw9ZVtzXSxjPTE7YzxiO2MrKylmb3IodmFyIHU9MTt1PHc7dSsr KWEucHVzaChZKHQsayhjLTEsbCx1LTEpLGsoYyxsLHUtMSksayhjLTEsbCx1KSxrKGMsbCx1 KSxyLG4sKGMrbCt1KSUyLGkmJmlbb10/aVtvXTpbXSkpLG8rKztyZXR1cm4gYX1mdW5jdGlv biBLKHQsZSxyLG4saSl7Zm9yKHZhciBhPVtdLG89MCxzPTA7czxlLmxlbmd0aDtzKyspZm9y KHZhciBsPWVbc10sYz0xO2M8XztjKyspZm9yKHZhciB1PTE7dTxiO3UrKylhLnB1c2goWSh0 LGsodS0xLGMtMSxsKSxrKHUtMSxjLGwpLGsodSxjLTEsbCksayh1LGMsbCkscixuLCh1K2Mr bCklMixpJiZpW29dP2lbb106W10pKSxvKys7cmV0dXJuIGF9ZnVuY3Rpb24gUSh0LGUscil7 Zm9yKHZhciBuPTE7bjx3O24rKylmb3IodmFyIGk9MTtpPF87aSsrKWZvcih2YXIgYT0xO2E8 YjthKyspWCh0LGsoYS0xLGktMSxuLTEpLGsoYS0xLGktMSxuKSxrKGEtMSxpLG4tMSksayhh LTEsaSxuKSxrKGEsaS0xLG4tMSksayhhLGktMSxuKSxrKGEsaSxuLTEpLGsoYSxpLG4pLGUs ciwoYStpK24pJTIpfWZ1bmN0aW9uICQodCxlLHIpe2Q9ITAsUSh0LGUsciksZD0hMX1mdW5j dGlvbiB0dCh0LGUscixuLGksYSl7Zm9yKHZhciBvPVtdLHM9MCxsPTA7bDxlLmxlbmd0aDts KyspZm9yKHZhciBjPWVbbF0sdT0xO3U8dzt1KyspZm9yKHZhciBmPTE7ZjxfO2YrKylvLnB1 c2goVyh0LGMsZix1LHIsbixpW2xdLGEmJmFbc10mJmFbc10pKSxzKys7cmV0dXJuIG99ZnVu Y3Rpb24gZXQodCxlLHIsbixpLGEpe2Zvcih2YXIgbz1bXSxzPTAsbD0wO2w8ZS5sZW5ndGg7 bCsrKWZvcih2YXIgYz1lW2xdLHU9MTt1PGI7dSsrKWZvcih2YXIgZj0xO2Y8dztmKyspby5w dXNoKFcodCx1LGMsZixyLG4saVtsXSxhJiZhW3NdJiZhW3NdKSkscysrO3JldHVybiBvfWZ1 bmN0aW9uIHJ0KHQsZSxyLG4saSxhKXtmb3IodmFyIG89W10scz0wLGw9MDtsPGUubGVuZ3Ro O2wrKylmb3IodmFyIGM9ZVtsXSx1PTE7dTxfO3UrKylmb3IodmFyIGY9MTtmPGI7ZisrKW8u cHVzaChXKHQsZix1LGMscixuLGlbbF0sYSYmYVtzXSYmYVtzXSkpLHMrKztyZXR1cm4gb31m dW5jdGlvbiBudCh0LGUpe2Zvcih2YXIgcj1bXSxuPXQ7bjxlO24rKylyLnB1c2gobik7cmV0 dXJuIHJ9cmV0dXJuIGZ1bmN0aW9uKCl7aWYoUCgpLGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7 ZTxiO2UrKylmb3IodmFyIHI9MDtyPF87cisrKWZvcih2YXIgbj0wO248dztuKyspe3ZhciBp PWsoZSxyLG4pO0kodC5feFtpXSx0Ll95W2ldLHQuX3pbaV0sdC5fdmFsdWVbaV0pfX0oKSx1 JiZwJiYoeihwKSxtPSEwLFEobnVsbCxTLEUpLG09ITEpLGMmJmgpe3ooaCk7Zm9yKHZhciBl PXQuc3VyZmFjZS5wYXR0ZXJuLHI9dC5zdXJmYWNlLmNvdW50LHM9MDtzPHI7cysrKXt2YXIg Zj0xPT09cj8uNTpzLyhyLTEpLGQ9KDEtZikqUytmKkUsVD1NYXRoLmFicyhkLUEpPk1hdGgu YWJzKGQtTSk/W0EsZF06W2QsTV07JChlLFRbMF0sVFsxXSl9fXZhciBMPVtbTWF0aC5taW4o UyxNKSxNYXRoLm1heChTLE0pXSxbTWF0aC5taW4oQSxFKSxNYXRoLm1heChBLEUpXV07WyJ4 IiwieSIsInoiXS5mb3JFYWNoKChmdW5jdGlvbihlKXtmb3IodmFyIHI9W10sbj0wO248TC5s ZW5ndGg7bisrKXt2YXIgaT0wLGE9TFtuXVswXSxvPUxbbl1bMV0scz10LnNsaWNlc1tlXTtp ZihzLnNob3cmJnMuZmlsbCl7eihzLmZpbGwpO3ZhciBjPVtdLHU9W10sZj1bXTtpZihzLmxv Y2F0aW9ucy5sZW5ndGgpZm9yKHZhciBoPTA7aDxzLmxvY2F0aW9ucy5sZW5ndGg7aCsrKXt2 YXIgcD1sKHMubG9jYXRpb25zW2hdLCJ4Ij09PWU/djoieSI9PT1lP3k6eCk7MD09PXAuZGlz dFJhdGlvP2MucHVzaChwLmlkKTpwLmlkPjAmJih1LnB1c2gocC5pZCksIngiPT09ZT9mLnB1 c2goW3AuZGlzdFJhdGlvLDAsMF0pOiJ5Ij09PWU/Zi5wdXNoKFswLHAuZGlzdFJhdGlvLDBd KTpmLnB1c2goWzAsMCxwLmRpc3RSYXRpb10pKX1lbHNlIGM9bnQoMSwieCI9PT1lP2ItMToi eSI9PT1lP18tMTp3LTEpO3UubGVuZ3RoPjAmJihyW2ldPSJ4Ij09PWU/dHQobnVsbCx1LGEs byxmLHJbaV0pOiJ5Ij09PWU/ZXQobnVsbCx1LGEsbyxmLHJbaV0pOnJ0KG51bGwsdSxhLG8s ZixyW2ldKSxpKyspLGMubGVuZ3RoPjAmJihyW2ldPSJ4Ij09PWU/WihudWxsLGMsYSxvLHJb aV0pOiJ5Ij09PWU/SihudWxsLGMsYSxvLHJbaV0pOksobnVsbCxjLGEsbyxyW2ldKSxpKysp fXZhciBkPXQuY2Fwc1tlXTtkLnNob3cmJmQuZmlsbCYmKHooZC5maWxsKSxyW2ldPSJ4Ij09 PWU/WihudWxsLFswLGItMV0sYSxvLHJbaV0pOiJ5Ij09PWU/SihudWxsLFswLF8tMV0sYSxv LHJbaV0pOksobnVsbCxbMCx3LTFdLGEsbyxyW2ldKSxpKyspfX0pKSwwPT09ZyYmUCgpLHQu X21lc2hYPW4sdC5fbWVzaFk9aSx0Ll9tZXNoWj1hLHQuX21lc2hJbnRlbnNpdHk9byx0Ll9Y cz12LHQuX1lzPXksdC5fWnM9eH0oKSx0fWUuZXhwb3J0cz17ZmluZE5lYXJlc3RPbkF4aXM6 bCxnZW5lcmF0ZUlzb01lc2hlczpoLGNyZWF0ZUlzb3N1cmZhY2VUcmFjZTpmdW5jdGlvbih0 LGUpe3ZhciByPXQuZ2xwbG90LmdsLGk9bih7Z2w6cn0pLGE9bmV3IGModCxpLGUudWlkKTty ZXR1cm4gaS5fdHJhY2U9YSxhLnVwZGF0ZShlKSx0LmdscGxvdC5hZGQoaSksYX19fSx7Ii4u Ly4uLy4uL3N0YWNrZ2xfbW9kdWxlcyI6MTEyNCwiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNj YWxlIjozNzgsIi4uLy4uL2xpYi9nbF9mb3JtYXRfY29sb3IiOjQ5OSwiLi4vLi4vbGliL3N0 cjJyZ2JhcnJheSI6NTI4LCIuLi8uLi9wbG90cy9nbDNkL3ppcDMiOjYwOX1dLDg2NTpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4u Ly4uL3JlZ2lzdHJ5IiksYT10KCIuL2F0dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL2NvbXBvbmVu dHMvY29sb3JzY2FsZS9kZWZhdWx0cyIpO2Z1bmN0aW9uIHModCxlLHIsbixhKXt2YXIgcz1h KCJpc29taW4iKSxsPWEoImlzb21heCIpO251bGwhPWwmJm51bGwhPXMmJnM+bCYmKGUuaXNv bWluPW51bGwsZS5pc29tYXg9bnVsbCk7dmFyIGM9YSgieCIpLHU9YSgieSIpLGY9YSgieiIp LGg9YSgidmFsdWUiKTtjJiZjLmxlbmd0aCYmdSYmdS5sZW5ndGgmJmYmJmYubGVuZ3RoJiZo JiZoLmxlbmd0aD8oaS5nZXRDb21wb25lbnRNZXRob2QoImNhbGVuZGFycyIsImhhbmRsZVRy YWNlRGVmYXVsdHMiKSh0LGUsWyJ4IiwieSIsInoiXSxuKSxhKCJ2YWx1ZWhvdmVyZm9ybWF0 IiksWyJ4IiwieSIsInoiXS5mb3JFYWNoKChmdW5jdGlvbih0KXthKHQrImhvdmVyZm9ybWF0 Iik7dmFyIGU9ImNhcHMuIit0O2EoZSsiLnNob3ciKSYmYShlKyIuZmlsbCIpO3ZhciByPSJz bGljZXMuIit0O2EocisiLnNob3ciKSYmKGEocisiLmZpbGwiKSxhKHIrIi5sb2NhdGlvbnMi KSl9KSksYSgic3BhY2VmcmFtZS5zaG93IikmJmEoInNwYWNlZnJhbWUuZmlsbCIpLGEoInN1 cmZhY2Uuc2hvdyIpJiYoYSgic3VyZmFjZS5jb3VudCIpLGEoInN1cmZhY2UuZmlsbCIpLGEo InN1cmZhY2UucGF0dGVybiIpKSxhKCJjb250b3VyLnNob3ciKSYmKGEoImNvbnRvdXIuY29s b3IiKSxhKCJjb250b3VyLndpZHRoIikpLFsidGV4dCIsImhvdmVydGV4dCIsImhvdmVydGVt cGxhdGUiLCJsaWdodGluZy5hbWJpZW50IiwibGlnaHRpbmcuZGlmZnVzZSIsImxpZ2h0aW5n LnNwZWN1bGFyIiwibGlnaHRpbmcucm91Z2huZXNzIiwibGlnaHRpbmcuZnJlc25lbCIsImxp Z2h0aW5nLnZlcnRleG5vcm1hbHNlcHNpbG9uIiwibGlnaHRpbmcuZmFjZW5vcm1hbHNlcHNp bG9uIiwibGlnaHRwb3NpdGlvbi54IiwibGlnaHRwb3NpdGlvbi55IiwibGlnaHRwb3NpdGlv bi56IiwiZmxhdHNoYWRpbmciLCJvcGFjaXR5Il0uZm9yRWFjaCgoZnVuY3Rpb24odCl7YSh0 KX0pKSxvKHQsZSxuLGEse3ByZWZpeDoiIixjTGV0dGVyOiJjIn0pLGUuX2xlbmd0aD1udWxs KTplLnZpc2libGU9ITF9ZS5leHBvcnRzPXtzdXBwbHlEZWZhdWx0czpmdW5jdGlvbih0LGUs cixpKXtzKHQsZSxyLGksKGZ1bmN0aW9uKHIsaSl7cmV0dXJuIG4uY29lcmNlKHQsZSxhLHIs aSl9KSl9LHN1cHBseUlzb0RlZmF1bHRzOnN9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3Jz Y2FsZS9kZWZhdWx0cyI6Mzc2LCIuLi8uLi9saWIiOjUwMywiLi4vLi4vcmVnaXN0cnkiOjYz OCwiLi9hdHRyaWJ1dGVzIjo4NjJ9XSw4NjY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1 bHRzOnQoIi4vZGVmYXVsdHMiKS5zdXBwbHlEZWZhdWx0cyxjYWxjOnQoIi4vY2FsYyIpLGNv bG9yYmFyOnttaW46ImNtaW4iLG1heDoiY21heCJ9LHBsb3Q6dCgiLi9jb252ZXJ0IikuY3Jl YXRlSXNvc3VyZmFjZVRyYWNlLG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJpc29zdXJmYWNl IixiYXNlUGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9nbDNkIiksY2F0ZWdvcmllczpbImds M2QiLCJzaG93TGVnZW5kIl0sbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvZ2wzZCI6NTk4LCIu L2F0dHJpYnV0ZXMiOjg2MiwiLi9jYWxjIjo4NjMsIi4vY29udmVydCI6ODY0LCIuL2RlZmF1 bHRzIjo4NjV9XSw4Njc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgi Li4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL3Bs b3RzL2NhcnRlc2lhbi9heGlzX2Zvcm1hdF9hdHRyaWJ1dGVzIikuYXhpc0hvdmVyRm9ybWF0 LGE9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVB dHRycyxvPXQoIi4uL3N1cmZhY2UvYXR0cmlidXRlcyIpLHM9dCgiLi4vLi4vcGxvdHMvYXR0 cmlidXRlcyIpLGw9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQ7ZS5leHBvcnRz PWwoe3g6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5 cGVzIn0seTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlz VHlwZXMifSx6Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYytjbGVhckF4 aXNUeXBlcyJ9LGk6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sajp7 dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxrOnt2YWxUeXBlOiJkYXRh X2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHRleHQ6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoi IixhcnJheU9rOiEwLGVkaXRUeXBlOiJjYWxjIn0saG92ZXJ0ZXh0Ont2YWxUeXBlOiJzdHJp bmciLGRmbHQ6IiIsYXJyYXlPazohMCxlZGl0VHlwZToiY2FsYyJ9LGhvdmVydGVtcGxhdGU6 YSh7ZWRpdFR5cGU6ImNhbGMifSkseGhvdmVyZm9ybWF0OmkoIngiKSx5aG92ZXJmb3JtYXQ6 aSgieSIpLHpob3ZlcmZvcm1hdDppKCJ6IiksZGVsYXVuYXlheGlzOnt2YWxUeXBlOiJlbnVt ZXJhdGVkIix2YWx1ZXM6WyJ4IiwieSIsInoiXSxkZmx0OiJ6IixlZGl0VHlwZToiY2FsYyJ9 LGFscGhhaHVsbDp7dmFsVHlwZToibnVtYmVyIixkZmx0Oi0xLGVkaXRUeXBlOiJjYWxjIn0s aW50ZW5zaXR5Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LGludGVu c2l0eW1vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInZlcnRleCIsImNlbGwi XSxkZmx0OiJ2ZXJ0ZXgiLGVkaXRUeXBlOiJjYWxjIn0sY29sb3I6e3ZhbFR5cGU6ImNvbG9y IixlZGl0VHlwZToiY2FsYyJ9LHZlcnRleGNvbG9yOnt2YWxUeXBlOiJkYXRhX2FycmF5Iixl ZGl0VHlwZToiY2FsYyJ9LGZhY2Vjb2xvcjp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5 cGU6ImNhbGMifSx0cmFuc2Zvcm1zOnZvaWQgMH0sbigiIix7Y29sb3JBdHRyOiJgaW50ZW5z aXR5YCIsc2hvd1NjYWxlRGZsdDohMCxlZGl0VHlwZU92ZXJyaWRlOiJjYWxjIn0pLHtvcGFj aXR5Om8ub3BhY2l0eSxmbGF0c2hhZGluZzp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMSxl ZGl0VHlwZToiY2FsYyJ9LGNvbnRvdXI6e3Nob3c6bCh7fSxvLmNvbnRvdXJzLnguc2hvdyx7 fSksY29sb3I6by5jb250b3Vycy54LmNvbG9yLHdpZHRoOm8uY29udG91cnMueC53aWR0aCxl ZGl0VHlwZToiY2FsYyJ9LGxpZ2h0cG9zaXRpb246e3g6bCh7fSxvLmxpZ2h0cG9zaXRpb24u eCx7ZGZsdDoxZTV9KSx5Omwoe30sby5saWdodHBvc2l0aW9uLnkse2RmbHQ6MWU1fSksejps KHt9LG8ubGlnaHRwb3NpdGlvbi56LHtkZmx0OjB9KSxlZGl0VHlwZToiY2FsYyJ9LGxpZ2h0 aW5nOmwoe3ZlcnRleG5vcm1hbHNlcHNpbG9uOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1h eDoxLGRmbHQ6MWUtMTIsZWRpdFR5cGU6ImNhbGMifSxmYWNlbm9ybWFsc2Vwc2lsb246e3Zh bFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDoxZS02LGVkaXRUeXBlOiJjYWxjIn0s ZWRpdFR5cGU6ImNhbGMifSxvLmxpZ2h0aW5nKSxob3ZlcmluZm86bCh7fSxzLmhvdmVyaW5m byx7ZWRpdFR5cGU6ImNhbGMifSksc2hvd2xlZ2VuZDpsKHt9LHMuc2hvd2xlZ2VuZCx7ZGZs dDohMX0pfSl9LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiOjM3 MywiLi4vLi4vbGliL2V4dGVuZCI6NDkzLCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIjo1NTAs Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2Zvcm1hdF9hdHRyaWJ1dGVzIjo1NTcsIi4u Ly4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjYzMywiLi4vc3VyZmFjZS9hdHRyaWJ1 dGVzIjoxMDYxfV0sODY4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9jYWxjIik7ZS5leHBvcnRzPWZ1bmN0aW9u KHQsZSl7ZS5pbnRlbnNpdHkmJm4odCxlLHt2YWxzOmUuaW50ZW5zaXR5LGNvbnRhaW5lclN0 cjoiIixjTGV0dGVyOiJjIn0pfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2Fs YyI6Mzc0fV0sODY5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4u Ly4uLy4uL3N0YWNrZ2xfbW9kdWxlcyIpLmdsX21lc2gzZCxpPXQoIi4uLy4uLy4uL3N0YWNr Z2xfbW9kdWxlcyIpLmRlbGF1bmF5X3RyaWFuZ3VsYXRlLGE9dCgiLi4vLi4vLi4vc3RhY2tn bF9tb2R1bGVzIikuYWxwaGFfc2hhcGUsbz10KCIuLi8uLi8uLi9zdGFja2dsX21vZHVsZXMi KS5jb252ZXhfaHVsbCxzPXQoIi4uLy4uL2xpYi9nbF9mb3JtYXRfY29sb3IiKS5wYXJzZUNv bG9yU2NhbGUsbD10KCIuLi8uLi9saWIvc3RyMnJnYmFycmF5IiksYz10KCIuLi8uLi9jb21w b25lbnRzL2NvbG9yc2NhbGUiKS5leHRyYWN0T3B0cyx1PXQoIi4uLy4uL3Bsb3RzL2dsM2Qv emlwMyIpO2Z1bmN0aW9uIGYodCxlLHIpe3RoaXMuc2NlbmU9dCx0aGlzLnVpZD1yLHRoaXMu bWVzaD1lLHRoaXMubmFtZT0iIix0aGlzLmNvbG9yPSIjZmZmIix0aGlzLmRhdGE9bnVsbCx0 aGlzLnNob3dDb250b3VyPSExfXZhciBoPWYucHJvdG90eXBlO2Z1bmN0aW9uIHAodCl7Zm9y KHZhciBlPVtdLHI9dC5sZW5ndGgsbj0wO248cjtuKyspZVtuXT1sKHRbbl0pO3JldHVybiBl fWZ1bmN0aW9uIGQodCxlLHIsbil7Zm9yKHZhciBpPVtdLGE9ZS5sZW5ndGgsbz0wO288YTtv KyspaVtvXT10LmQybChlW29dLDAsbikqcjtyZXR1cm4gaX1mdW5jdGlvbiBtKHQpe2Zvcih2 YXIgZT1bXSxyPXQubGVuZ3RoLG49MDtuPHI7bisrKWVbbl09TWF0aC5yb3VuZCh0W25dKTty ZXR1cm4gZX1mdW5jdGlvbiBnKHQsZSl7Zm9yKHZhciByPXQubGVuZ3RoLG49MDtuPHI7bisr KWlmKHRbbl08PS0uNXx8dFtuXT49ZS0uNSlyZXR1cm4hMTtyZXR1cm4hMH1oLmhhbmRsZVBp Y2s9ZnVuY3Rpb24odCl7aWYodC5vYmplY3Q9PT10aGlzLm1lc2gpe3ZhciBlPXQuaW5kZXg9 dC5kYXRhLmluZGV4O3QuZGF0YS5fY2VsbENlbnRlcj90LnRyYWNlQ29vcmRpbmF0ZT10LmRh dGEuZGF0YUNvb3JkaW5hdGU6dC50cmFjZUNvb3JkaW5hdGU9W3RoaXMuZGF0YS54W2VdLHRo aXMuZGF0YS55W2VdLHRoaXMuZGF0YS56W2VdXTt2YXIgcj10aGlzLmRhdGEuaG92ZXJ0ZXh0 fHx0aGlzLmRhdGEudGV4dDtyZXR1cm4gQXJyYXkuaXNBcnJheShyKSYmdm9pZCAwIT09cltl XT90LnRleHRMYWJlbD1yW2VdOnImJih0LnRleHRMYWJlbD1yKSwhMH19LGgudXBkYXRlPWZ1 bmN0aW9uKHQpe3ZhciBlPXRoaXMuc2NlbmUscj1lLmZ1bGxTY2VuZUxheW91dDt0aGlzLmRh dGE9dDt2YXIgbixmPXQueC5sZW5ndGgsaD11KGQoci54YXhpcyx0LngsZS5kYXRhU2NhbGVb MF0sdC54Y2FsZW5kYXIpLGQoci55YXhpcyx0LnksZS5kYXRhU2NhbGVbMV0sdC55Y2FsZW5k YXIpLGQoci56YXhpcyx0LnosZS5kYXRhU2NhbGVbMl0sdC56Y2FsZW5kYXIpKTtpZih0Lmkm JnQuaiYmdC5rKXtpZih0LmkubGVuZ3RoIT09dC5qLmxlbmd0aHx8dC5qLmxlbmd0aCE9PXQu ay5sZW5ndGh8fCFnKHQuaSxmKXx8IWcodC5qLGYpfHwhZyh0LmssZikpcmV0dXJuO249dSht KHQuaSksbSh0LmopLG0odC5rKSl9ZWxzZSBuPTA9PT10LmFscGhhaHVsbD9vKGgpOnQuYWxw aGFodWxsPjA/YSh0LmFscGhhaHVsbCxoKTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1bIngi LCJ5IiwieiJdLmluZGV4T2YodCksbj1bXSxhPWUubGVuZ3RoLG89MDtvPGE7bysrKW5bb109 W2Vbb11bKHIrMSklM10sZVtvXVsocisyKSUzXV07cmV0dXJuIGkobil9KHQuZGVsYXVuYXlh eGlzLGgpO3ZhciB2PXtwb3NpdGlvbnM6aCxjZWxsczpuLGxpZ2h0UG9zaXRpb246W3QubGln aHRwb3NpdGlvbi54LHQubGlnaHRwb3NpdGlvbi55LHQubGlnaHRwb3NpdGlvbi56XSxhbWJp ZW50OnQubGlnaHRpbmcuYW1iaWVudCxkaWZmdXNlOnQubGlnaHRpbmcuZGlmZnVzZSxzcGVj dWxhcjp0LmxpZ2h0aW5nLnNwZWN1bGFyLHJvdWdobmVzczp0LmxpZ2h0aW5nLnJvdWdobmVz cyxmcmVzbmVsOnQubGlnaHRpbmcuZnJlc25lbCx2ZXJ0ZXhOb3JtYWxzRXBzaWxvbjp0Lmxp Z2h0aW5nLnZlcnRleG5vcm1hbHNlcHNpbG9uLGZhY2VOb3JtYWxzRXBzaWxvbjp0LmxpZ2h0 aW5nLmZhY2Vub3JtYWxzZXBzaWxvbixvcGFjaXR5OnQub3BhY2l0eSxjb250b3VyRW5hYmxl OnQuY29udG91ci5zaG93LGNvbnRvdXJDb2xvcjpsKHQuY29udG91ci5jb2xvcikuc2xpY2Uo MCwzKSxjb250b3VyV2lkdGg6dC5jb250b3VyLndpZHRoLHVzZUZhY2V0Tm9ybWFsczp0LmZs YXRzaGFkaW5nfTtpZih0LmludGVuc2l0eSl7dmFyIHk9Yyh0KTt0aGlzLmNvbG9yPSIjZmZm Ijt2YXIgeD10LmludGVuc2l0eW1vZGU7dlt4KyJJbnRlbnNpdHkiXT10LmludGVuc2l0eSx2 W3grIkludGVuc2l0eUJvdW5kcyJdPVt5Lm1pbix5Lm1heF0sdi5jb2xvcm1hcD1zKHQpfWVs c2UgdC52ZXJ0ZXhjb2xvcj8odGhpcy5jb2xvcj10LnZlcnRleGNvbG9yWzBdLHYudmVydGV4 Q29sb3JzPXAodC52ZXJ0ZXhjb2xvcikpOnQuZmFjZWNvbG9yPyh0aGlzLmNvbG9yPXQuZmFj ZWNvbG9yWzBdLHYuY2VsbENvbG9ycz1wKHQuZmFjZWNvbG9yKSk6KHRoaXMuY29sb3I9dC5j b2xvcix2Lm1lc2hDb2xvcj1sKHQuY29sb3IpKTt0aGlzLm1lc2gudXBkYXRlKHYpfSxoLmRp c3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnNjZW5lLmdscGxvdC5yZW1vdmUodGhpcy5tZXNoKSx0 aGlzLm1lc2guZGlzcG9zZSgpfSxlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj10Lmds cGxvdC5nbCxpPW4oe2dsOnJ9KSxhPW5ldyBmKHQsaSxlLnVpZCk7cmV0dXJuIGkuX3RyYWNl PWEsYS51cGRhdGUoZSksdC5nbHBsb3QuYWRkKGkpLGF9fSx7Ii4uLy4uLy4uL3N0YWNrZ2xf bW9kdWxlcyI6MTEyNCwiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjozNzgsIi4uLy4u L2xpYi9nbF9mb3JtYXRfY29sb3IiOjQ5OSwiLi4vLi4vbGliL3N0cjJyZ2JhcnJheSI6NTI4 LCIuLi8uLi9wbG90cy9nbDNkL3ppcDMiOjYwOX1dLDg3MDpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9yZWdpc3RyeSIpLGk9dCgiLi4vLi4vbGliIiks YT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMiKSxvPXQoIi4vYXR0 cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixzKXtmdW5jdGlvbiBsKHIsbil7 cmV0dXJuIGkuY29lcmNlKHQsZSxvLHIsbil9ZnVuY3Rpb24gYyh0KXt2YXIgZT10Lm1hcCgo ZnVuY3Rpb24odCl7dmFyIGU9bCh0KTtyZXR1cm4gZSYmaS5pc0FycmF5T3JUeXBlZEFycmF5 KGUpP2U6bnVsbH0pKTtyZXR1cm4gZS5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQu bGVuZ3RoPT09ZVswXS5sZW5ndGh9KSkmJmV9YyhbIngiLCJ5IiwieiJdKT8oYyhbImkiLCJq IiwiayJdKSwoIWUuaXx8ZS5qJiZlLmspJiYoIWUuanx8ZS5rJiZlLmkpJiYoIWUua3x8ZS5p JiZlLmopPyhuLmdldENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJzIiwiaGFuZGxlVHJhY2VE ZWZhdWx0cyIpKHQsZSxbIngiLCJ5IiwieiJdLHMpLFsibGlnaHRpbmcuYW1iaWVudCIsImxp Z2h0aW5nLmRpZmZ1c2UiLCJsaWdodGluZy5zcGVjdWxhciIsImxpZ2h0aW5nLnJvdWdobmVz cyIsImxpZ2h0aW5nLmZyZXNuZWwiLCJsaWdodGluZy52ZXJ0ZXhub3JtYWxzZXBzaWxvbiIs ImxpZ2h0aW5nLmZhY2Vub3JtYWxzZXBzaWxvbiIsImxpZ2h0cG9zaXRpb24ueCIsImxpZ2h0 cG9zaXRpb24ueSIsImxpZ2h0cG9zaXRpb24ueiIsImZsYXRzaGFkaW5nIiwiYWxwaGFodWxs IiwiZGVsYXVuYXlheGlzIiwib3BhY2l0eSJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2wodCl9 KSksbCgiY29udG91ci5zaG93IikmJihsKCJjb250b3VyLmNvbG9yIiksbCgiY29udG91ci53 aWR0aCIpKSwiaW50ZW5zaXR5ImluIHQ/KGwoImludGVuc2l0eSIpLGwoImludGVuc2l0eW1v ZGUiKSxhKHQsZSxzLGwse3ByZWZpeDoiIixjTGV0dGVyOiJjIn0pKTooZS5zaG93c2NhbGU9 ITEsImZhY2Vjb2xvciJpbiB0P2woImZhY2Vjb2xvciIpOiJ2ZXJ0ZXhjb2xvciJpbiB0P2wo InZlcnRleGNvbG9yIik6bCgiY29sb3IiLHIpKSxsKCJ0ZXh0IiksbCgiaG92ZXJ0ZXh0Iiks bCgiaG92ZXJ0ZW1wbGF0ZSIpLGwoInhob3ZlcmZvcm1hdCIpLGwoInlob3ZlcmZvcm1hdCIp LGwoInpob3ZlcmZvcm1hdCIpLGUuX2xlbmd0aD1udWxsKTplLnZpc2libGU9ITEpOmUudmlz aWJsZT0hMX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2RlZmF1bHRzIjozNzYs Ii4uLy4uL2xpYiI6NTAzLCIuLi8uLi9yZWdpc3RyeSI6NjM4LCIuL2F0dHJpYnV0ZXMiOjg2 N31dLDg3MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2F0dHJp YnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIp LGNhbGM6dCgiLi9jYWxjIiksY29sb3JiYXI6e21pbjoiY21pbiIsbWF4OiJjbWF4In0scGxv dDp0KCIuL2NvbnZlcnQiKSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToibWVzaDNkIixiYXNl UGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9nbDNkIiksY2F0ZWdvcmllczpbImdsM2QiLCJz aG93TGVnZW5kIl0sbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvZ2wzZCI6NTk4LCIuL2F0dHJp YnV0ZXMiOjg2NywiLi9jYWxjIjo4NjgsIi4vY29udmVydCI6ODY5LCIuL2RlZmF1bHRzIjo4 NzB9XSw4NzI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4v bGliIikuZXh0ZW5kRmxhdCxpPXQoIi4uL3NjYXR0ZXIvYXR0cmlidXRlcyIpLGE9dCgiLi4v Li4vcGxvdHMvY2FydGVzaWFuL2F4aXNfZm9ybWF0X2F0dHJpYnV0ZXMiKS5heGlzSG92ZXJG b3JtYXQsbz10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmcvYXR0cmlidXRlcyIpLmRhc2gs cz10KCIuLi8uLi9jb21wb25lbnRzL2Z4L2F0dHJpYnV0ZXMiKSxsPXQoIi4uLy4uL2NvbnN0 YW50cy9kZWx0YS5qcyIpLGM9bC5JTkNSRUFTSU5HLkNPTE9SLHU9bC5ERUNSRUFTSU5HLkNP TE9SLGY9aS5saW5lO2Z1bmN0aW9uIGgodCl7cmV0dXJue2xpbmU6e2NvbG9yOm4oe30sZi5j b2xvcix7ZGZsdDp0fSksd2lkdGg6Zi53aWR0aCxkYXNoOm8sZWRpdFR5cGU6InN0eWxlIn0s ZWRpdFR5cGU6InN0eWxlIn19ZS5leHBvcnRzPXt4cGVyaW9kOmkueHBlcmlvZCx4cGVyaW9k MDppLnhwZXJpb2QwLHhwZXJpb2RhbGlnbm1lbnQ6aS54cGVyaW9kYWxpZ25tZW50LHhob3Zl cmZvcm1hdDphKCJ4IikseWhvdmVyZm9ybWF0OmEoInkiKSx4Ont2YWxUeXBlOiJkYXRhX2Fy cmF5IixlZGl0VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LG9wZW46e3ZhbFR5cGU6ImRh dGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0saGlnaDp7dmFsVHlwZToiZGF0YV9hcnJheSIs ZWRpdFR5cGU6ImNhbGMifSxsb3c6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJj YWxjIn0sY2xvc2U6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sbGlu ZTp7d2lkdGg6bih7fSxmLndpZHRoLHt9KSxkYXNoOm4oe30sbyx7fSksZWRpdFR5cGU6InN0 eWxlIn0saW5jcmVhc2luZzpoKGMpLGRlY3JlYXNpbmc6aCh1KSx0ZXh0Ont2YWxUeXBlOiJz dHJpbmciLGRmbHQ6IiIsYXJyYXlPazohMCxlZGl0VHlwZToiY2FsYyJ9LGhvdmVydGV4dDp7 dmFsVHlwZToic3RyaW5nIixkZmx0OiIiLGFycmF5T2s6ITAsZWRpdFR5cGU6ImNhbGMifSx0 aWNrd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4Oi41LGRmbHQ6LjMsZWRpdFR5 cGU6ImNhbGMifSxob3ZlcmxhYmVsOm4oe30scy5ob3ZlcmxhYmVsLHtzcGxpdDp7dmFsVHlw ZToiYm9vbGVhbiIsZGZsdDohMSxlZGl0VHlwZToic3R5bGUifX0pfX0seyIuLi8uLi9jb21w b25lbnRzL2RyYXdpbmcvYXR0cmlidXRlcyI6Mzg3LCIuLi8uLi9jb21wb25lbnRzL2Z4L2F0 dHJpYnV0ZXMiOjM5NywiLi4vLi4vY29uc3RhbnRzL2RlbHRhLmpzIjo0NzMsIi4uLy4uL2xp YiI6NTAzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19mb3JtYXRfYXR0cmlidXRlcyI6 NTU3LCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiOjkyN31dLDg3MzpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPW4uXyxhPXQoIi4uLy4uL3Bs b3RzL2NhcnRlc2lhbi9heGVzIiksbz10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYWxpZ25f cGVyaW9kIikscz10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIikuQkFETlVNO2Z1bmN0 aW9uIGwodCxlLHIsbil7cmV0dXJue286dCxoOmUsbDpyLGM6bn19ZnVuY3Rpb24gYyh0LGUs cixvLGwsYyl7Zm9yKHZhciB1PWwubWFrZUNhbGNkYXRhKGUsIm9wZW4iKSxmPWwubWFrZUNh bGNkYXRhKGUsImhpZ2giKSxoPWwubWFrZUNhbGNkYXRhKGUsImxvdyIpLHA9bC5tYWtlQ2Fs Y2RhdGEoZSwiY2xvc2UiKSxkPUFycmF5LmlzQXJyYXkoZS50ZXh0KSxtPUFycmF5LmlzQXJy YXkoZS5ob3ZlcnRleHQpLGc9ITAsdj1udWxsLHk9ISFlLnhwZXJpb2RhbGlnbm1lbnQseD1b XSxiPTA7YjxvLmxlbmd0aDtiKyspe3ZhciBfPW9bYl0sdz11W2JdLFQ9ZltiXSxrPWhbYl0s QT1wW2JdO2lmKF8hPT1zJiZ3IT09cyYmVCE9PXMmJmshPT1zJiZBIT09cyl7QT09PXc/bnVs bCE9PXYmJkEhPT12JiYoZz1BPnYpOmc9QT53LHY9QTt2YXIgTT1jKHcsVCxrLEEpO00ucG9z PV8sTS55Yz0odytBKS8yLE0uaT1iLE0uZGlyPWc/ImluY3JlYXNpbmciOiJkZWNyZWFzaW5n IixNLng9TS5wb3MsTS55PVtrLFRdLHkmJihNLm9yaWdfcD1yW2JdKSxkJiYoTS50eD1lLnRl eHRbYl0pLG0mJihNLmh0eD1lLmhvdmVydGV4dFtiXSkseC5wdXNoKE0pfWVsc2UgeC5wdXNo KHtwb3M6XyxlbXB0eTohMH0pfXJldHVybiBlLl9leHRyZW1lc1tsLl9pZF09YS5maW5kRXh0 cmVtZXMobCxuLmNvbmNhdChoLGYpLHtwYWRkZWQ6ITB9KSx4Lmxlbmd0aCYmKHhbMF0udD17 bGFiZWxzOntvcGVuOmkodCwib3BlbjoiKSsiICIsaGlnaDppKHQsImhpZ2g6IikrIiAiLGxv dzppKHQsImxvdzoiKSsiICIsY2xvc2U6aSh0LCJjbG9zZToiKSsiICJ9fSkseH1lLmV4cG9y dHM9e2NhbGM6ZnVuY3Rpb24odCxlKXt2YXIgcj1hLmdldEZyb21JZCh0LGUueGF4aXMpLGk9 YS5nZXRGcm9tSWQodCxlLnlheGlzKSxzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgaT1yLl9taW5E aWZmO2lmKCFpKXt2YXIgYSxzPXQuX2Z1bGxEYXRhLGw9W107Zm9yKGk9MS8wLGE9MDthPHMu bGVuZ3RoO2ErKyl7dmFyIGM9c1thXTtpZigib2hsYyI9PT1jLnR5cGUmJiEwPT09Yy52aXNp YmxlJiZjLnhheGlzPT09ZS5faWQpe2wucHVzaChjKTt2YXIgdT1lLm1ha2VDYWxjZGF0YShj LCJ4Iik7Yy5fb3JpZ1g9dTt2YXIgZj1vKHIsZSwieCIsdSkudmFscztjLl94Y2FsYz1mO3Zh ciBoPW4uZGlzdGluY3RWYWxzKGYpLm1pbkRpZmY7aCYmaXNGaW5pdGUoaCkmJihpPU1hdGgu bWluKGksaCkpfX1mb3IoaT09PTEvMCYmKGk9MSksYT0wO2E8bC5sZW5ndGg7YSsrKWxbYV0u X21pbkRpZmY9aX1yZXR1cm4gaSpyLnRpY2t3aWR0aH0odCxyLGUpLHU9ZS5fbWluRGlmZjtl Ll9taW5EaWZmPW51bGw7dmFyIGY9ZS5fb3JpZ1g7ZS5fb3JpZ1g9bnVsbDt2YXIgaD1lLl94 Y2FsYztlLl94Y2FsYz1udWxsO3ZhciBwPWModCxlLGYsaCxpLGwpO3JldHVybiBlLl9leHRy ZW1lc1tyLl9pZF09YS5maW5kRXh0cmVtZXMocixoLHt2cGFkOnUvMn0pLHAubGVuZ3RoPyhu LmV4dGVuZEZsYXQocFswXS50LHt3SG92ZXI6dS8yLHRpY2tMZW46c30pLHApOlt7dDp7ZW1w dHk6ITB9fV19LGNhbGNDb21tb246Y319LHsiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6 NDc5LCIuLi8uLi9saWIiOjUwMywiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2FsaWduX3Blcmlv ZCI6NTUxLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NTU0fV0sODc0OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi9vaGxj X2RlZmF1bHRzIiksYT10KCIuLi9zY2F0dGVyL3BlcmlvZF9kZWZhdWx0cyIpLG89dCgiLi9h dHRyaWJ1dGVzIik7ZnVuY3Rpb24gcyh0LGUscixuKXtyKG4rIi5saW5lLmNvbG9yIikscihu KyIubGluZS53aWR0aCIsZS5saW5lLndpZHRoKSxyKG4rIi5saW5lLmRhc2giLGUubGluZS5k YXNoKX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbCl7ZnVuY3Rpb24gYyhyLGkpe3JldHVy biBuLmNvZXJjZSh0LGUsbyxyLGkpfWkodCxlLGMsbCk/KGEodCxlLGwsYyx7eDohMH0pLGMo Inhob3ZlcmZvcm1hdCIpLGMoInlob3ZlcmZvcm1hdCIpLGMoImxpbmUud2lkdGgiKSxjKCJs aW5lLmRhc2giKSxzKHQsZSxjLCJpbmNyZWFzaW5nIikscyh0LGUsYywiZGVjcmVhc2luZyIp LGMoInRleHQiKSxjKCJob3ZlcnRleHQiKSxjKCJ0aWNrd2lkdGgiKSxsLl9yZXF1ZXN0UmFu Z2VzbGlkZXJbZS54YXhpc109ITApOmUudmlzaWJsZT0hMX19LHsiLi4vLi4vbGliIjo1MDMs Ii4uL3NjYXR0ZXIvcGVyaW9kX2RlZmF1bHRzIjo5NDcsIi4vYXR0cmlidXRlcyI6ODcyLCIu L29obGNfZGVmYXVsdHMiOjg3N31dLDg3NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGk9dCgiLi4vLi4vbGli IiksYT10KCIuLi8uLi9jb21wb25lbnRzL2Z4Iiksbz10KCIuLi8uLi9jb21wb25lbnRzL2Nv bG9yIikscz10KCIuLi8uLi9saWIiKS5maWxsVGV4dCxsPXQoIi4uLy4uL2NvbnN0YW50cy9k ZWx0YS5qcyIpLGM9e2luY3JlYXNpbmc6bC5JTkNSRUFTSU5HLlNZTUJPTCxkZWNyZWFzaW5n OmwuREVDUkVBU0lORy5TWU1CT0x9O2Z1bmN0aW9uIHUodCxlLHIsbil7dmFyIGkscyxsPXQu Y2QsYz10LnhhLHU9bFswXS50cmFjZSxmPWxbMF0udCxoPXUudHlwZSxwPSJvaGxjIj09PWg/ ImwiOiJtaW4iLGQ9Im9obGMiPT09aD8iaCI6Im1heCIsbT1mLmJQb3N8fDAsZz1mLmJkUG9z fHxmLnRpY2tMZW4sdj1mLndIb3Zlcix5PU1hdGgubWluKDEsZy9NYXRoLmFicyhjLnIyYyhj LnJhbmdlWzFdKS1jLnIyYyhjLnJhbmdlWzBdKSkpO2Z1bmN0aW9uIHgodCl7dmFyIHI9ZnVu Y3Rpb24odCl7cmV0dXJuIHQucG9zK20tZX0odCk7cmV0dXJuIGEuaW5ib3goci12LHIrdixp KX1mdW5jdGlvbiBiKHQpe3ZhciBlPXRbcF0sbj10W2RdO3JldHVybiBlPT09bnx8YS5pbmJv eChlLXIsbi1yLGkpfWZ1bmN0aW9uIF8odCl7cmV0dXJuKHgodCkrYih0KSkvMn1pPXQubWF4 SG92ZXJEaXN0YW5jZS15LHM9dC5tYXhTcGlrZURpc3RhbmNlLXk7dmFyIHc9YS5nZXREaXN0 YW5jZUZ1bmN0aW9uKG4seCxiLF8pO2lmKGEuZ2V0Q2xvc2VzdChsLHcsdCksITE9PT10Lmlu ZGV4KXJldHVybiBudWxsO3ZhciBUPWxbdC5pbmRleF07aWYoVC5lbXB0eSlyZXR1cm4gbnVs bDt2YXIgaz11W1QuZGlyXSxBPWsubGluZS5jb2xvcjtyZXR1cm4gby5vcGFjaXR5KEEpJiZr LmxpbmUud2lkdGg/dC5jb2xvcj1BOnQuY29sb3I9ay5maWxsY29sb3IsdC54MD1jLmMycChU LnBvcyttLWcsITApLHQueDE9Yy5jMnAoVC5wb3MrbStnLCEwKSx0LnhMYWJlbFZhbD12b2lk IDAhPT1ULm9yaWdfcD9ULm9yaWdfcDpULnBvcyx0LnNwaWtlRGlzdGFuY2U9XyhUKSpzL2ks dC54U3Bpa2U9Yy5jMnAoVC5wb3MsITApLHR9ZnVuY3Rpb24gZih0LGUscixhKXt2YXIgbz10 LmNkLHM9dC55YSxsPW9bMF0udHJhY2UsYz1vWzBdLnQsZj1bXSxoPXUodCxlLHIsYSk7aWYo IWgpcmV0dXJuW107dmFyIHA9b1toLmluZGV4XS5oaXx8bC5ob3ZlcmluZm8sZD1wLnNwbGl0 KCIrIik7aWYoISgiYWxsIj09PXB8fC0xIT09ZC5pbmRleE9mKCJ5IikpKXJldHVybltdO2Zv cih2YXIgbT1bImhpZ2giLCJvcGVuIiwiY2xvc2UiLCJsb3ciXSxnPXt9LHY9MDt2PG0ubGVu Z3RoO3YrKyl7dmFyIHkseD1tW3ZdLGI9bFt4XVtoLmluZGV4XSxfPXMuYzJwKGIsITApO2Ig aW4gZz8oeT1nW2JdKS55TGFiZWwrPSI8YnI+IitjLmxhYmVsc1t4XStuLmhvdmVyTGFiZWxU ZXh0KHMsYixsLnlob3ZlcmZvcm1hdCk6KCh5PWkuZXh0ZW5kRmxhdCh7fSxoKSkueTA9eS55 MT1fLHkueUxhYmVsVmFsPWIseS55TGFiZWw9Yy5sYWJlbHNbeF0rbi5ob3ZlckxhYmVsVGV4 dChzLGIsbC55aG92ZXJmb3JtYXQpLHkubmFtZT0iIixmLnB1c2goeSksZ1tiXT15KX1yZXR1 cm4gZn1mdW5jdGlvbiBoKHQsZSxyLGkpe3ZhciBhPXQuY2Qsbz10LnlhLGw9YVswXS50cmFj ZSxmPWFbMF0udCxoPXUodCxlLHIsaSk7aWYoIWgpcmV0dXJuW107dmFyIHA9YVtoLmluZGV4 XSxkPWguaW5kZXg9cC5pLG09cC5kaXI7ZnVuY3Rpb24gZyh0KXtyZXR1cm4gZi5sYWJlbHNb dF0rbi5ob3ZlckxhYmVsVGV4dChvLGxbdF1bZF0sbC55aG92ZXJmb3JtYXQpfXZhciB2PXAu aGl8fGwuaG92ZXJpbmZvLHk9di5zcGxpdCgiKyIpLHg9ImFsbCI9PT12LGI9eHx8LTEhPT15 LmluZGV4T2YoInkiKSxfPXh8fC0xIT09eS5pbmRleE9mKCJ0ZXh0Iiksdz1iP1tnKCJvcGVu IiksZygiaGlnaCIpLGcoImxvdyIpLGcoImNsb3NlIikrIiAgIitjW21dXTpbXTtyZXR1cm4g XyYmcyhwLGwsdyksaC5leHRyYVRleHQ9dy5qb2luKCI8YnI+IiksaC55MD1oLnkxPW8uYzJw KHAueWMsITApLFtoXX1lLmV4cG9ydHM9e2hvdmVyUG9pbnRzOmZ1bmN0aW9uKHQsZSxyLG4p e3JldHVybiB0LmNkWzBdLnRyYWNlLmhvdmVybGFiZWwuc3BsaXQ/Zih0LGUscixuKTpoKHQs ZSxyLG4pfSxob3ZlclNwbGl0OmYsaG92ZXJPblBvaW50czpofX0seyIuLi8uLi9jb21wb25l bnRzL2NvbG9yIjozNjYsIi4uLy4uL2NvbXBvbmVudHMvZngiOjQwNiwiLi4vLi4vY29uc3Rh bnRzL2RlbHRhLmpzIjo0NzMsIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9wbG90cy9jYXJ0ZXNp YW4vYXhlcyI6NTU0fV0sODc2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhw b3J0cz17bW9kdWxlVHlwZToidHJhY2UiLG5hbWU6Im9obGMiLGJhc2VQbG90TW9kdWxlOnQo Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbiIpLGNhdGVnb3JpZXM6WyJjYXJ0ZXNpYW4iLCJzdmci LCJzaG93TGVnZW5kIl0sbWV0YTp7fSxhdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1 cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxjYWxjOnQoIi4vY2FsYyIpLmNhbGMscGxv dDp0KCIuL3Bsb3QiKSxzdHlsZTp0KCIuL3N0eWxlIiksaG92ZXJQb2ludHM6dCgiLi9ob3Zl ciIpLmhvdmVyUG9pbnRzLHNlbGVjdFBvaW50czp0KCIuL3NlbGVjdCIpfX0seyIuLi8uLi9w bG90cy9jYXJ0ZXNpYW4iOjU2OCwiLi9hdHRyaWJ1dGVzIjo4NzIsIi4vY2FsYyI6ODczLCIu L2RlZmF1bHRzIjo4NzQsIi4vaG92ZXIiOjg3NSwiLi9wbG90Ijo4NzgsIi4vc2VsZWN0Ijo4 NzksIi4vc3R5bGUiOjg4MH1dLDg3NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCIuLi8uLi9yZWdpc3RyeSIpLGk9dCgiLi4vLi4vbGliIik7ZS5leHBvcnRzPWZ1 bmN0aW9uKHQsZSxyLGEpe3ZhciBvPXIoIngiKSxzPXIoIm9wZW4iKSxsPXIoImhpZ2giKSxj PXIoImxvdyIpLHU9cigiY2xvc2UiKTtpZihyKCJob3ZlcmxhYmVsLnNwbGl0Iiksbi5nZXRD b21wb25lbnRNZXRob2QoImNhbGVuZGFycyIsImhhbmRsZVRyYWNlRGVmYXVsdHMiKSh0LGUs WyJ4Il0sYSkscyYmbCYmYyYmdSl7dmFyIGY9TWF0aC5taW4ocy5sZW5ndGgsbC5sZW5ndGgs Yy5sZW5ndGgsdS5sZW5ndGgpO3JldHVybiBvJiYoZj1NYXRoLm1pbihmLGkubWluUm93TGVu Z3RoKG8pKSksZS5fbGVuZ3RoPWYsZn19fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi8uLi9yZWdp c3RyeSI6NjM4fV0sODc4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo IkBwbG90bHkvZDMiKSxpPXQoIi4uLy4uL2xpYiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUs cixhKXt2YXIgbz1lLnlheGlzLHM9ZS54YXhpcyxsPSEhcy5yYW5nZWJyZWFrcztpLm1ha2VU cmFjZUdyb3VwcyhhLHIsInRyYWNlIG9obGMiKS5lYWNoKChmdW5jdGlvbih0KXt2YXIgZT1u LnNlbGVjdCh0aGlzKSxyPXRbMF0sYT1yLnQ7aWYoITAhPT1yLnRyYWNlLnZpc2libGV8fGEu ZW1wdHkpZS5yZW1vdmUoKTtlbHNle3ZhciBjPWEudGlja0xlbix1PWUuc2VsZWN0QWxsKCJw YXRoIikuZGF0YShpLmlkZW50aXR5KTt1LmVudGVyKCkuYXBwZW5kKCJwYXRoIiksdS5leGl0 KCkucmVtb3ZlKCksdS5hdHRyKCJkIiwoZnVuY3Rpb24odCl7aWYodC5lbXB0eSlyZXR1cm4i TTAsMFoiO3ZhciBlPXMuYzJwKHQucG9zLWMsITApLHI9cy5jMnAodC5wb3MrYywhMCksbj1s PyhlK3IpLzI6cy5jMnAodC5wb3MsITApO3JldHVybiJNIitlKyIsIitvLmMycCh0Lm8sITAp KyJIIituKyJNIituKyIsIitvLmMycCh0LmgsITApKyJWIitvLmMycCh0LmwsITApKyJNIity KyIsIitvLmMycCh0LmMsITApKyJIIitufSkpfX0pKX19LHsiLi4vLi4vbGliIjo1MDMsIkBw bG90bHkvZDMiOjU4fV0sODc5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhw b3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLG49dC5jZCxpPXQueGF4aXMsYT10LnlheGlzLG89 W10scz1uWzBdLnQuYlBvc3x8MDtpZighMT09PWUpZm9yKHI9MDtyPG4ubGVuZ3RoO3IrKylu W3JdLnNlbGVjdGVkPTA7ZWxzZSBmb3Iocj0wO3I8bi5sZW5ndGg7cisrKXt2YXIgbD1uW3Jd O2UuY29udGFpbnMoW2kuYzJwKGwucG9zK3MpLGEuYzJwKGwueWMpXSxudWxsLGwuaSx0KT8o by5wdXNoKHtwb2ludE51bWJlcjpsLmkseDppLmMyZChsLnBvcykseTphLmMyZChsLnljKX0p LGwuc2VsZWN0ZWQ9MSk6bC5zZWxlY3RlZD0wfXJldHVybiBvfX0se31dLDg4MDpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJAcGxvdGx5L2QzIiksaT10KCIuLi8u Li9jb21wb25lbnRzL2RyYXdpbmciKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKTtl LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBvPXJ8fG4uc2VsZWN0KHQpLnNlbGVjdEFs bCgiZy5vaGxjbGF5ZXIiKS5zZWxlY3RBbGwoImcudHJhY2UiKTtvLnN0eWxlKCJvcGFjaXR5 IiwoZnVuY3Rpb24odCl7cmV0dXJuIHRbMF0udHJhY2Uub3BhY2l0eX0pKSxvLmVhY2goKGZ1 bmN0aW9uKHQpe3ZhciBlPXRbMF0udHJhY2U7bi5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJw YXRoIikuZWFjaCgoZnVuY3Rpb24odCl7aWYoIXQuZW1wdHkpe3ZhciByPWVbdC5kaXJdLmxp bmU7bi5zZWxlY3QodGhpcykuc3R5bGUoImZpbGwiLCJub25lIikuY2FsbChhLnN0cm9rZSxy LmNvbG9yKS5jYWxsKGkuZGFzaExpbmUsci5kYXNoLHIud2lkdGgpLnN0eWxlKCJvcGFjaXR5 IixlLnNlbGVjdGVkcG9pbnRzJiYhdC5zZWxlY3RlZD8uMzoxKX19KSl9KSl9fSx7Ii4uLy4u L2NvbXBvbmVudHMvY29sb3IiOjM2NiwiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjozODgs IkBwbG90bHkvZDMiOjU4fV0sODgxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRGbGF0LGk9dCgiLi4vLi4vcGxvdHMv YXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIiksbz10KCIu Li8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLHM9dCgiLi4vLi4vcGxv dHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVBdHRycyxsPXQoIi4uLy4u L3Bsb3RzL2RvbWFpbiIpLmF0dHJpYnV0ZXMsYz1uKHtlZGl0VHlwZToiY2FsYyJ9LG8oImxp bmUiLHtlZGl0VHlwZU92ZXJyaWRlOiJjYWxjIn0pLHtzaGFwZTp7dmFsVHlwZToiZW51bWVy YXRlZCIsdmFsdWVzOlsibGluZWFyIiwiaHNwbGluZSJdLGRmbHQ6ImxpbmVhciIsZWRpdFR5 cGU6InBsb3QifSxob3ZlcnRlbXBsYXRlOnMoe2VkaXRUeXBlOiJwbG90IixhcnJheU9rOiEx fSx7a2V5czpbImNvdW50IiwicHJvYmFiaWxpdHkiXX0pfSk7ZS5leHBvcnRzPXtkb21haW46 bCh7bmFtZToicGFyY2F0cyIsdHJhY2U6ITAsZWRpdFR5cGU6ImNhbGMifSksaG92ZXJpbmZv Om4oe30saS5ob3ZlcmluZm8se2ZsYWdzOlsiY291bnQiLCJwcm9iYWJpbGl0eSJdLGVkaXRU eXBlOiJwbG90IixhcnJheU9rOiExfSksaG92ZXJvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIs dmFsdWVzOlsiY2F0ZWdvcnkiLCJjb2xvciIsImRpbWVuc2lvbiJdLGRmbHQ6ImNhdGVnb3J5 IixlZGl0VHlwZToicGxvdCJ9LGhvdmVydGVtcGxhdGU6cyh7ZWRpdFR5cGU6InBsb3QiLGFy cmF5T2s6ITF9LHtrZXlzOlsiY291bnQiLCJwcm9iYWJpbGl0eSIsImNhdGVnb3J5IiwiY2F0 ZWdvcnljb3VudCIsImNvbG9yY291bnQiLCJiYW5kY29sb3Jjb3VudCJdfSksYXJyYW5nZW1l bnQ6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInBlcnBlbmRpY3VsYXIiLCJmcmVl Zm9ybSIsImZpeGVkIl0sZGZsdDoicGVycGVuZGljdWxhciIsZWRpdFR5cGU6InBsb3QifSxi dW5kbGVjb2xvcnM6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6InBsb3Qi fSxzb3J0cGF0aHM6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImZvcndhcmQiLCJi YWNrd2FyZCJdLGRmbHQ6ImZvcndhcmQiLGVkaXRUeXBlOiJwbG90In0sbGFiZWxmb250OmEo e2VkaXRUeXBlOiJjYWxjIn0pLHRpY2tmb250OmEoe2VkaXRUeXBlOiJjYWxjIn0pLGRpbWVu c2lvbnM6e19pc0xpbmtlZFRvQXJyYXk6ImRpbWVuc2lvbiIsbGFiZWw6e3ZhbFR5cGU6InN0 cmluZyIsZWRpdFR5cGU6ImNhbGMifSxjYXRlZ29yeW9yZGVyOnt2YWxUeXBlOiJlbnVtZXJh dGVkIix2YWx1ZXM6WyJ0cmFjZSIsImNhdGVnb3J5IGFzY2VuZGluZyIsImNhdGVnb3J5IGRl c2NlbmRpbmciLCJhcnJheSJdLGRmbHQ6InRyYWNlIixlZGl0VHlwZToiY2FsYyJ9LGNhdGVn b3J5YXJyYXk6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sdGlja3Rl eHQ6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sdmFsdWVzOnt2YWxU eXBlOiJkYXRhX2FycmF5IixkZmx0OltdLGVkaXRUeXBlOiJjYWxjIn0sZGlzcGxheWluZGV4 Ont2YWxUeXBlOiJpbnRlZ2VyIixlZGl0VHlwZToiY2FsYyJ9LGVkaXRUeXBlOiJjYWxjIix2 aXNpYmxlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJjYWxjIn19LGxp bmU6Yyxjb3VudHM6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDoxLGFycmF5T2s6ITAs ZWRpdFR5cGU6ImNhbGMifSxjdXN0b21kYXRhOnZvaWQgMCxob3ZlcmxhYmVsOnZvaWQgMCxp ZHM6dm9pZCAwLGxlZ2VuZGdyb3VwOnZvaWQgMCxsZWdlbmRyYW5rOnZvaWQgMCxvcGFjaXR5 OnZvaWQgMCxzZWxlY3RlZHBvaW50czp2b2lkIDAsc2hvd2xlZ2VuZDp2b2lkIDB9fSx7Ii4u Ly4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjozNzMsIi4uLy4uL2xpYi9l eHRlbmQiOjQ5MywiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyI6NTUwLCIuLi8uLi9wbG90cy9k b21haW4iOjU4NCwiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIjo1ODUsIi4uLy4uL3Bs b3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjYzM31dLDg4MjpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9nZXRfZGF0YSIpLmdldE1vZHVsZUNh bGNEYXRhLGk9dCgiLi9wbG90Iik7ci5uYW1lPSJwYXJjYXRzIixyLnBsb3Q9ZnVuY3Rpb24o dCxlLHIsYSl7dmFyIG89bih0LmNhbGNkYXRhLCJwYXJjYXRzIik7aWYoby5sZW5ndGgpe3Zh ciBzPW9bMF07aSh0LHMscixhKX19LHIuY2xlYW49ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9 bi5faGFzJiZuLl9oYXMoInBhcmNhdHMiKSxhPWUuX2hhcyYmZS5faGFzKCJwYXJjYXRzIik7 aSYmIWEmJm4uX3BhcGVyZGl2LnNlbGVjdEFsbCgiLnBhcmNhdHMiKS5yZW1vdmUoKX19LHsi Li4vLi4vcGxvdHMvZ2V0X2RhdGEiOjU5MywiLi9wbG90Ijo4ODd9XSw4ODM6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliL2d1cCIpLndyYXAsaT10 KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvaGVscGVycyIpLmhhc0NvbG9yc2NhbGUs YT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyIpLG89dCgiLi4vLi4vbGli L2ZpbHRlcl91bmlxdWUuanMiKSxzPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLGw9 dCgiLi4vLi4vbGliIiksYz10KCJmYXN0LWlzbnVtZXJpYyIpO2Z1bmN0aW9uIHUodCxlLHIp e3QudmFsdWVJbmRzLnB1c2goZSksdC5jb3VudCs9cn1mdW5jdGlvbiBmKHQsZSxyKXtyZXR1 cm57Y2F0ZWdvcnlJbmRzOnQsY29sb3I6ZSxyYXdDb2xvcjpyLHZhbHVlSW5kczpbXSxjb3Vu dDowfX1mdW5jdGlvbiBoKHQsZSxyKXt0LnZhbHVlSW5kcy5wdXNoKGUpLHQuY291bnQrPXJ9 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9bC5maWx0ZXJWaXNpYmxlKGUuZGltZW5z aW9ucyk7aWYoMD09PXIubGVuZ3RoKXJldHVybltdO3ZhciBwLGQsbSxnPXIubWFwKChmdW5j dGlvbih0KXt2YXIgZTtpZigidHJhY2UiPT09dC5jYXRlZ29yeW9yZGVyKWU9bnVsbDtlbHNl IGlmKCJhcnJheSI9PT10LmNhdGVnb3J5b3JkZXIpZT10LmNhdGVnb3J5YXJyYXk7ZWxzZXtl PW8odC52YWx1ZXMpO2Zvcih2YXIgcj0hMCxuPTA7bjxlLmxlbmd0aDtuKyspaWYoIWMoZVtu XSkpe3I9ITE7YnJlYWt9ZS5zb3J0KHI/bC5zb3J0ZXJBc2M6dm9pZCAwKSwiY2F0ZWdvcnkg ZGVzY2VuZGluZyI9PT10LmNhdGVnb3J5b3JkZXImJihlPWUucmV2ZXJzZSgpKX1yZXR1cm4g ZnVuY3Rpb24odCxlKXtlPW51bGw9PWU/W106ZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0 fSkpO3ZhciByPXt9LG49e30saT1bXTtlLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7clt0XT0w LG5bdF09ZX0pKTtmb3IodmFyIGE9MDthPHQubGVuZ3RoO2ErKyl7dmFyIG8scz10W2FdO3Zv aWQgMD09PXJbc10/KHJbc109MSxvPWUucHVzaChzKS0xLG5bc109byk6KHJbc10rKyxvPW5b c10pLGkucHVzaChvKX12YXIgbD1lLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHJbdF19KSk7 cmV0dXJue3VuaXF1ZVZhbHVlczplLHVuaXF1ZUNvdW50czpsLGluZHM6aX19KHQudmFsdWVz LGUpfSkpO3A9bC5pc0FycmF5T3JUeXBlZEFycmF5KGUuY291bnRzKT9lLmNvdW50czpbZS5j b3VudHNdLGZ1bmN0aW9uKHQpe3ZhciBlO2lmKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcg QXJyYXkodC5sZW5ndGgpLHI9MDtyPHQubGVuZ3RoO3IrKyl7aWYodFtyXTwwfHx0W3JdPj10 Lmxlbmd0aClyZXR1cm4hMTtpZih2b2lkIDAhPT1lW3Rbcl1dKXJldHVybiExO2VbdFtyXV09 ITB9cmV0dXJuITB9KHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kaXNwbGF5aW5kZXh9 KSkpKWZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXS5fZGlzcGxheWluZGV4PXRbZV0uZGlz cGxheWluZGV4O2Vsc2UgZm9yKGU9MDtlPHQubGVuZ3RoO2UrKyl0W2VdLl9kaXNwbGF5aW5k ZXg9ZX0ociksci5mb3JFYWNoKChmdW5jdGlvbih0LGUpeyFmdW5jdGlvbih0LGUpe3QuX2Nh dGVnb3J5YXJyYXk9ZS51bmlxdWVWYWx1ZXMsbnVsbD09PXQudGlja3RleHR8fHZvaWQgMD09 PXQudGlja3RleHQ/dC5fdGlja3RleHQ9W106dC5fdGlja3RleHQ9dC50aWNrdGV4dC5zbGlj ZSgpO2Zvcih2YXIgcj10Ll90aWNrdGV4dC5sZW5ndGg7cjxlLnVuaXF1ZVZhbHVlcy5sZW5n dGg7cisrKXQuX3RpY2t0ZXh0LnB1c2goZS51bmlxdWVWYWx1ZXNbcl0pfSh0LGdbZV0pfSkp O3ZhciB2LHk9ZS5saW5lO3k/KGkoZSwibGluZSIpJiZhKHQsZSx7dmFsczplLmxpbmUuY29s b3IsY29udGFpbmVyU3RyOiJsaW5lIixjTGV0dGVyOiJjIn0pLHY9cy50cnlDb2xvcnNjYWxl KHkpKTp2PWwuaWRlbnRpdHk7dmFyIHgsYixfLHcsVCxrPXJbMF0udmFsdWVzLmxlbmd0aCxB PXt9LE09Zy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmluZHN9KSk7Zm9yKG09MCx4PTA7 eDxrO3grKyl7dmFyIFM9W107Zm9yKGI9MDtiPE0ubGVuZ3RoO2IrKylTLnB1c2goTVtiXVt4 XSk7ZD1wW3glcC5sZW5ndGhdLG0rPWQ7dmFyIEU9KF89eCx3PXZvaWQgMCxUPXZvaWQgMCxs LmlzQXJyYXlPclR5cGVkQXJyYXkoeS5jb2xvcik/VD13PXkuY29sb3JbXyV5LmNvbG9yLmxl bmd0aF06dz15LmNvbG9yLHtjb2xvcjp2KHcpLHJhd0NvbG9yOlR9KSxMPVMrIi0iK0UucmF3 Q29sb3I7dm9pZCAwPT09QVtMXSYmKEFbTF09ZihTLEUuY29sb3IsRS5yYXdDb2xvcikpLGgo QVtMXSx4LGQpfXZhciBDLFA9ci5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9u KHQsZSxyLG4saSl7cmV0dXJue2RpbWVuc2lvbkluZDp0LGNvbnRhaW5lckluZDplLGRpc3Bs YXlJbmQ6cixkaW1lbnNpb25MYWJlbDpuLGNvdW50OmksY2F0ZWdvcmllczpbXSxkcmFnWDpu dWxsfX0oZSx0Ll9pbmRleCx0Ll9kaXNwbGF5aW5kZXgsdC5sYWJlbCxtKX0pKTtmb3IoeD0w O3g8azt4KyspZm9yKGQ9cFt4JXAubGVuZ3RoXSxiPTA7YjxQLmxlbmd0aDtiKyspe3ZhciBJ PVBbYl0uY29udGFpbmVySW5kLE89Z1tiXS5pbmRzW3hdLHo9UFtiXS5jYXRlZ29yaWVzO2lm KHZvaWQgMD09PXpbT10pe3ZhciBEPWUuZGltZW5zaW9uc1tJXS5fY2F0ZWdvcnlhcnJheVtP XSxSPWUuZGltZW5zaW9uc1tJXS5fdGlja3RleHRbT107eltPXT17ZGltZW5zaW9uSW5kOmIs Y2F0ZWdvcnlJbmQ6Qz1PLGNhdGVnb3J5VmFsdWU6RCxkaXNwbGF5SW5kOkMsY2F0ZWdvcnlM YWJlbDpSLHZhbHVlSW5kczpbXSxjb3VudDowLGRyYWdZOm51bGx9fXUoeltPXSx4LGQpfXJl dHVybiBuKGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJu IHQuY2F0ZWdvcmllcy5sZW5ndGh9KSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBN YXRoLm1heCh0LGUpfSkpO3JldHVybntkaW1lbnNpb25zOnQscGF0aHM6ZSx0cmFjZTp2b2lk IDAsbWF4Q2F0czpuLGNvdW50OnJ9fShQLEEsbSkpfX0seyIuLi8uLi9jb21wb25lbnRzL2Nv bG9yc2NhbGUvY2FsYyI6Mzc0LCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvaGVscGVy cyI6Mzc3LCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjM4OCwiLi4vLi4vbGliIjo1MDMs Ii4uLy4uL2xpYi9maWx0ZXJfdW5pcXVlLmpzIjo0OTQsIi4uLy4uL2xpYi9ndXAiOjUwMCwi ZmFzdC1pc251bWVyaWMiOjE5MH1dLDg4NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2Fs ZS9oZWxwZXJzIikuaGFzQ29sb3JzY2FsZSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3Jz Y2FsZS9kZWZhdWx0cyIpLG89dCgiLi4vLi4vcGxvdHMvZG9tYWluIikuZGVmYXVsdHMscz10 KCIuLi8uLi9wbG90cy9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiKSxsPXQoIi4vYXR0cmli dXRlcyIpLGM9dCgiLi4vcGFyY29vcmRzL21lcmdlX2xlbmd0aCIpO2Z1bmN0aW9uIHUodCxl KXtmdW5jdGlvbiByKHIsaSl7cmV0dXJuIG4uY29lcmNlKHQsZSxsLmRpbWVuc2lvbnMscixp KX12YXIgaT1yKCJ2YWx1ZXMiKSxhPXIoInZpc2libGUiKTtpZihpJiZpLmxlbmd0aHx8KGE9 ZS52aXNpYmxlPSExKSxhKXtyKCJsYWJlbCIpLHIoImRpc3BsYXlpbmRleCIsZS5faW5kZXgp O3ZhciBvLHM9dC5jYXRlZ29yeWFycmF5LGM9QXJyYXkuaXNBcnJheShzKSYmcy5sZW5ndGg+ MDtjJiYobz0iYXJyYXkiKTt2YXIgdT1yKCJjYXRlZ29yeW9yZGVyIixvKTsiYXJyYXkiPT09 dT8ocigiY2F0ZWdvcnlhcnJheSIpLHIoInRpY2t0ZXh0IikpOihkZWxldGUgdC5jYXRlZ29y eWFycmF5LGRlbGV0ZSB0LnRpY2t0ZXh0KSxjfHwiYXJyYXkiIT09dXx8KGUuY2F0ZWdvcnlv cmRlcj0idHJhY2UiKX19ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGYpe2Z1bmN0aW9uIGgo cixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLGwscixpKX12YXIgcD1zKHQsZSx7bmFtZToiZGlt ZW5zaW9ucyIsaGFuZGxlSXRlbURlZmF1bHRzOnV9KSxkPWZ1bmN0aW9uKHQsZSxyLG8scyl7 cygibGluZS5zaGFwZSIpLHMoImxpbmUuaG92ZXJ0ZW1wbGF0ZSIpO3ZhciBsPXMoImxpbmUu Y29sb3IiLG8uY29sb3J3YXlbMF0pO2lmKGkodCwibGluZSIpJiZuLmlzQXJyYXlPclR5cGVk QXJyYXkobCkpe2lmKGwubGVuZ3RoKXJldHVybiBzKCJsaW5lLmNvbG9yc2NhbGUiKSxhKHQs ZSxvLHMse3ByZWZpeDoibGluZS4iLGNMZXR0ZXI6ImMifSksbC5sZW5ndGg7ZS5saW5lLmNv bG9yPXJ9cmV0dXJuIDEvMH0odCxlLHIsZixoKTtvKGUsZixoKSxBcnJheS5pc0FycmF5KHAp JiZwLmxlbmd0aHx8KGUudmlzaWJsZT0hMSksYyhlLHAsInZhbHVlcyIsZCksaCgiaG92ZXJv biIpLGgoImhvdmVydGVtcGxhdGUiKSxoKCJhcnJhbmdlbWVudCIpLGgoImJ1bmRsZWNvbG9y cyIpLGgoInNvcnRwYXRocyIpLGgoImNvdW50cyIpO3ZhciBtPXtmYW1pbHk6Zi5mb250LmZh bWlseSxzaXplOk1hdGgucm91bmQoZi5mb250LnNpemUpLGNvbG9yOmYuZm9udC5jb2xvcn07 bi5jb2VyY2VGb250KGgsImxhYmVsZm9udCIsbSk7dmFyIGc9e2ZhbWlseTpmLmZvbnQuZmFt aWx5LHNpemU6TWF0aC5yb3VuZChmLmZvbnQuc2l6ZS8xLjIpLGNvbG9yOmYuZm9udC5jb2xv cn07bi5jb2VyY2VGb250KGgsInRpY2tmb250IixnKX19LHsiLi4vLi4vY29tcG9uZW50cy9j b2xvcnNjYWxlL2RlZmF1bHRzIjozNzYsIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9o ZWxwZXJzIjozNzcsIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9wbG90cy9hcnJheV9jb250YWlu ZXJfZGVmYXVsdHMiOjU0OSwiLi4vLi4vcGxvdHMvZG9tYWluIjo1ODQsIi4uL3BhcmNvb3Jk cy9tZXJnZV9sZW5ndGgiOjg5OCwiLi9hdHRyaWJ1dGVzIjo4ODF9XSw4ODU6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmli dXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxjYWxjOnQoIi4vY2FsYyIp LHBsb3Q6dCgiLi9wbG90IiksY29sb3JiYXI6e2NvbnRhaW5lcjoibGluZSIsbWluOiJjbWlu IixtYXg6ImNtYXgifSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToicGFyY2F0cyIsYmFzZVBs b3RNb2R1bGU6dCgiLi9iYXNlX3Bsb3QiKSxjYXRlZ29yaWVzOlsibm9PcGFjaXR5Il0sbWV0 YTp7fX19LHsiLi9hdHRyaWJ1dGVzIjo4ODEsIi4vYmFzZV9wbG90Ijo4ODIsIi4vY2FsYyI6 ODgzLCIuL2RlZmF1bHRzIjo4ODQsIi4vcGxvdCI6ODg3fV0sODg2OltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIkBwbG90bHkvZDMiKSxpPXQoImQzLWludGVycG9s YXRlIikuaW50ZXJwb2xhdGVOdW1iZXIsYT10KCIuLi8uLi9wbG90X2FwaS9wbG90X2FwaSIp LG89dCgiLi4vLi4vY29tcG9uZW50cy9meCIpLHM9dCgiLi4vLi4vbGliIiksbD1zLnN0clRy YW5zbGF0ZSxjPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLHU9dCgidGlueWNvbG9y MiIpLGY9dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIik7ZnVuY3Rpb24gaCh0LGUscixp KXt2YXIgYT10Lm1hcChGLmJpbmQoMCxlLHIpKSxvPWkuc2VsZWN0QWxsKCJnLnBhcmNhdHNs YXllciIpLmRhdGEoW251bGxdKTtvLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3Mi LCJwYXJjYXRzbGF5ZXIiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwiKTt2YXIgdT1v LnNlbGVjdEFsbCgiZy50cmFjZS5wYXJjYXRzIikuZGF0YShhLHApLGg9dS5lbnRlcigpLmFw cGVuZCgiZyIpLmF0dHIoImNsYXNzIiwidHJhY2UgcGFyY2F0cyIpO3UuYXR0cigidHJhbnNm b3JtIiwoZnVuY3Rpb24odCl7cmV0dXJuIGwodC54LHQueSl9KSksaC5hcHBlbmQoImciKS5h dHRyKCJjbGFzcyIsInBhdGhzIik7dmFyIHk9dS5zZWxlY3QoImcucGF0aHMiKS5zZWxlY3RB bGwoInBhdGgucGF0aCIpLmRhdGEoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnBhdGhzfSkscCk7 eS5hdHRyKCJmaWxsIiwoZnVuY3Rpb24odCl7cmV0dXJuIHQubW9kZWwuY29sb3J9KSk7dmFy IHg9eS5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwicGF0aCIpLmF0dHIo InN0cm9rZS1vcGFjaXR5IiwwKS5hdHRyKCJmaWxsIiwoZnVuY3Rpb24odCl7cmV0dXJuIHQu bW9kZWwuY29sb3J9KSkuYXR0cigiZmlsbC1vcGFjaXR5IiwwKTtfKHgpLHkuYXR0cigiZCIs KGZ1bmN0aW9uKHQpe3JldHVybiB0LnN2Z0R9KSkseC5lbXB0eSgpfHx5LnNvcnQobSkseS5l eGl0KCkucmVtb3ZlKCkseS5vbigibW91c2VvdmVyIixnKS5vbigibW91c2VvdXQiLHYpLm9u KCJjbGljayIsYiksaC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImRpbWVuc2lvbnMiKTt2 YXIgdz11LnNlbGVjdCgiZy5kaW1lbnNpb25zIikuc2VsZWN0QWxsKCJnLmRpbWVuc2lvbiIp LmRhdGEoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRpbWVuc2lvbnN9KSxwKTt3LmVudGVyKCku YXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJkaW1lbnNpb24iKSx3LmF0dHIoInRyYW5zZm9y bSIsKGZ1bmN0aW9uKHQpe3JldHVybiBsKHQueCwwKX0pKSx3LmV4aXQoKS5yZW1vdmUoKTt2 YXIgQT13LnNlbGVjdEFsbCgiZy5jYXRlZ29yeSIpLmRhdGEoKGZ1bmN0aW9uKHQpe3JldHVy biB0LmNhdGVnb3JpZXN9KSxwKSxNPUEuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFz cyIsImNhdGVnb3J5Iik7QS5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4g bCgwLHQueSl9KSksTS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsImNhdHJlY3QiKS5h dHRyKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKSxBLnNlbGVjdCgicmVjdC5jYXRyZWN0Iiku YXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJ3aWR0aCIsKGZ1bmN0aW9uKHQpe3JldHVybiB0 LndpZHRofSkpLmF0dHIoImhlaWdodCIsKGZ1bmN0aW9uKHQpe3JldHVybiB0LmhlaWdodH0p KSxUKE0pO3ZhciBTPUEuc2VsZWN0QWxsKCJyZWN0LmJhbmRyZWN0IikuZGF0YSgoZnVuY3Rp b24odCl7cmV0dXJuIHQuYmFuZHN9KSxwKTtTLmVhY2goKGZ1bmN0aW9uKCl7cy5yYWlzZVRv VG9wKHRoaXMpfSkpLFMuYXR0cigiZmlsbCIsKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNvbG9y fSkpO3ZhciBFPVMuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsImJhbmRy ZWN0IikuYXR0cigic3Ryb2tlLW9wYWNpdHkiLDApLmF0dHIoImZpbGwiLChmdW5jdGlvbih0 KXtyZXR1cm4gdC5jb2xvcn0pKS5hdHRyKCJmaWxsLW9wYWNpdHkiLDApO1MuYXR0cigiZmls bCIsKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNvbG9yfSkpLmF0dHIoIndpZHRoIiwoZnVuY3Rp b24odCl7cmV0dXJuIHQud2lkdGh9KSkuYXR0cigiaGVpZ2h0IiwoZnVuY3Rpb24odCl7cmV0 dXJuIHQuaGVpZ2h0fSkpLmF0dHIoInkiLChmdW5jdGlvbih0KXtyZXR1cm4gdC55fSkpLmF0 dHIoImN1cnNvciIsKGZ1bmN0aW9uKHQpe3JldHVybiJmaXhlZCI9PT10LnBhcmNhdHNWaWV3 TW9kZWwuYXJyYW5nZW1lbnQ/ImRlZmF1bHQiOiJwZXJwZW5kaWN1bGFyIj09PXQucGFyY2F0 c1ZpZXdNb2RlbC5hcnJhbmdlbWVudD8ibnMtcmVzaXplIjoibW92ZSJ9KSksayhFKSxTLmV4 aXQoKS5yZW1vdmUoKSxNLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwiY2F0bGFiZWwi KS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKTt2YXIgej1lLl9mdWxsTGF5b3V0LnBh cGVyX2JnY29sb3I7QS5zZWxlY3QoInRleHQuY2F0bGFiZWwiKS5hdHRyKCJ0ZXh0LWFuY2hv ciIsKGZ1bmN0aW9uKHQpe3JldHVybiBkKHQpPyJzdGFydCI6ImVuZCJ9KSkuYXR0cigiYWxp Z25tZW50LWJhc2VsaW5lIiwibWlkZGxlIikuc3R5bGUoInRleHQtc2hhZG93IixmLm1ha2VU ZXh0U2hhZG93KHopKS5zdHlsZSgiZmlsbCIsInJnYigwLCAwLCAwKSIpLmF0dHIoIngiLChm dW5jdGlvbih0KXtyZXR1cm4gZCh0KT90LndpZHRoKzU6LTV9KSkuYXR0cigieSIsKGZ1bmN0 aW9uKHQpe3JldHVybiB0LmhlaWdodC8yfSkpLnRleHQoKGZ1bmN0aW9uKHQpe3JldHVybiB0 Lm1vZGVsLmNhdGVnb3J5TGFiZWx9KSkuZWFjaCgoZnVuY3Rpb24odCl7Yy5mb250KG4uc2Vs ZWN0KHRoaXMpLHQucGFyY2F0c1ZpZXdNb2RlbC5jYXRlZ29yeWxhYmVsZm9udCksZi5jb252 ZXJ0VG9Uc3BhbnMobi5zZWxlY3QodGhpcyksZSl9KSksTS5hcHBlbmQoInRleHQiKS5hdHRy KCJjbGFzcyIsImRpbWxhYmVsIiksQS5zZWxlY3QoInRleHQuZGltbGFiZWwiKS5hdHRyKCJ0 ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoImFsaWdubWVudC1iYXNlbGluZSIsImJhc2Vs aW5lIikuYXR0cigiY3Vyc29yIiwoZnVuY3Rpb24odCl7cmV0dXJuImZpeGVkIj09PXQucGFy Y2F0c1ZpZXdNb2RlbC5hcnJhbmdlbWVudD8iZGVmYXVsdCI6ImV3LXJlc2l6ZSJ9KSkuYXR0 cigieCIsKGZ1bmN0aW9uKHQpe3JldHVybiB0LndpZHRoLzJ9KSkuYXR0cigieSIsLTUpLnRl eHQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIDA9PT1lP3QucGFyY2F0c1ZpZXdNb2RlbC5tb2Rl bC5kaW1lbnNpb25zW3QubW9kZWwuZGltZW5zaW9uSW5kXS5kaW1lbnNpb25MYWJlbDpudWxs fSkpLmVhY2goKGZ1bmN0aW9uKHQpe2MuZm9udChuLnNlbGVjdCh0aGlzKSx0LnBhcmNhdHNW aWV3TW9kZWwubGFiZWxmb250KX0pKSxBLnNlbGVjdEFsbCgicmVjdC5iYW5kcmVjdCIpLm9u KCJtb3VzZW92ZXIiLEwpLm9uKCJtb3VzZW91dCIsQyksQS5leGl0KCkucmVtb3ZlKCksdy5j YWxsKG4uYmVoYXZpb3IuZHJhZygpLm9yaWdpbigoZnVuY3Rpb24odCl7cmV0dXJue3g6dC54 LHk6MH19KSkub24oImRyYWdzdGFydCIsUCkub24oImRyYWciLEkpLm9uKCJkcmFnZW5kIixP KSksdS5lYWNoKChmdW5jdGlvbih0KXt0LnRyYWNlU2VsZWN0aW9uPW4uc2VsZWN0KHRoaXMp LHQucGF0aFNlbGVjdGlvbj1uLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoImcucGF0aHMiKS5z ZWxlY3RBbGwoInBhdGgucGF0aCIpLHQuZGltZW5zaW9uU2VsZWN0aW9uPW4uc2VsZWN0KHRo aXMpLnNlbGVjdEFsbCgiZy5kaW1lbnNpb25zIikuc2VsZWN0QWxsKCJnLmRpbWVuc2lvbiIp fSkpLHUuZXhpdCgpLnJlbW92ZSgpfWZ1bmN0aW9uIHAodCl7cmV0dXJuIHQua2V5fWZ1bmN0 aW9uIGQodCl7dmFyIGU9dC5wYXJjYXRzVmlld01vZGVsLmRpbWVuc2lvbnMubGVuZ3RoLHI9 dC5wYXJjYXRzVmlld01vZGVsLmRpbWVuc2lvbnNbZS0xXS5tb2RlbC5kaW1lbnNpb25JbmQ7 cmV0dXJuIHQubW9kZWwuZGltZW5zaW9uSW5kPT09cn1mdW5jdGlvbiBtKHQsZSl7cmV0dXJu IHQubW9kZWwucmF3Q29sb3I+ZS5tb2RlbC5yYXdDb2xvcj8xOnQubW9kZWwucmF3Q29sb3I8 ZS5tb2RlbC5yYXdDb2xvcj8tMTowfWZ1bmN0aW9uIGcodCl7aWYoIXQucGFyY2F0c1ZpZXdN b2RlbC5kcmFnRGltZW5zaW9uJiYtMT09PXQucGFyY2F0c1ZpZXdNb2RlbC5ob3ZlcmluZm9J dGVtcy5pbmRleE9mKCJza2lwIikpe3MucmFpc2VUb1RvcCh0aGlzKSx3KG4uc2VsZWN0KHRo aXMpKTt2YXIgZT15KHQpLHI9eCh0KTtpZih0LnBhcmNhdHNWaWV3TW9kZWwuZ3JhcGhEaXYu ZW1pdCgicGxvdGx5X2hvdmVyIix7cG9pbnRzOmUsZXZlbnQ6bi5ldmVudCxjb25zdHJhaW50 czpyfSksLTE9PT10LnBhcmNhdHNWaWV3TW9kZWwuaG92ZXJpbmZvSXRlbXMuaW5kZXhPZigi bm9uZSIpKXt2YXIgaSxhLGwsYz1uLm1vdXNlKHRoaXMpWzBdLGY9dC5wYXJjYXRzVmlld01v ZGVsLmdyYXBoRGl2LGg9dC5wYXJjYXRzVmlld01vZGVsLnRyYWNlLHA9Zi5fZnVsbExheW91 dCxkPXAuX3BhcGVyZGl2Lm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxtPXQucGFy Y2F0c1ZpZXdNb2RlbC5ncmFwaERpdi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtmb3IobD0w O2w8dC5sZWZ0WHMubGVuZ3RoLTE7bCsrKWlmKHQubGVmdFhzW2xdK3QuZGltV2lkdGhzW2xd LTI8PWMmJmM8PXQubGVmdFhzW2wrMV0rMil7dmFyIGc9dC5wYXJjYXRzVmlld01vZGVsLmRp bWVuc2lvbnNbbF0sdj10LnBhcmNhdHNWaWV3TW9kZWwuZGltZW5zaW9uc1tsKzFdO2k9KGcu eCtnLndpZHRoK3YueCkvMixhPSh0LnRvcFlzW2xdK3QudG9wWXNbbCsxXSt0LmhlaWdodCkv MjticmVha312YXIgYj10LnBhcmNhdHNWaWV3TW9kZWwueCtpLF89dC5wYXJjYXRzVmlld01v ZGVsLnkrYSxUPXUubW9zdFJlYWRhYmxlKHQubW9kZWwuY29sb3IsWyJibGFjayIsIndoaXRl Il0pLGs9dC5tb2RlbC5jb3VudCxBPWsvdC5wYXJjYXRzVmlld01vZGVsLm1vZGVsLmNvdW50 LE09e2NvdW50TGFiZWw6ayxwcm9iYWJpbGl0eUxhYmVsOkEudG9GaXhlZCgzKX0sUz1bXTst MSE9PXQucGFyY2F0c1ZpZXdNb2RlbC5ob3ZlcmluZm9JdGVtcy5pbmRleE9mKCJjb3VudCIp JiZTLnB1c2goWyJDb3VudDoiLE0uY291bnRMYWJlbF0uam9pbigiICIpKSwtMSE9PXQucGFy Y2F0c1ZpZXdNb2RlbC5ob3ZlcmluZm9JdGVtcy5pbmRleE9mKCJwcm9iYWJpbGl0eSIpJiZT LnB1c2goWyJQOiIsTS5wcm9iYWJpbGl0eUxhYmVsXS5qb2luKCIgIikpO3ZhciBFPVMuam9p bigiPGJyPiIpLEw9bi5tb3VzZShmKVswXTtvLmxvbmVIb3Zlcih7dHJhY2U6aCx4OmItZC5s ZWZ0K20ubGVmdCx5Ol8tZC50b3ArbS50b3AsdGV4dDpFLGNvbG9yOnQubW9kZWwuY29sb3Is Ym9yZGVyQ29sb3I6ImJsYWNrIixmb250RmFtaWx5OidNb25hY28sICJDb3VyaWVyIE5ldyIs IG1vbm9zcGFjZScsZm9udFNpemU6MTAsZm9udENvbG9yOlQsaWRlYWxBbGlnbjpMPGI/InJp Z2h0IjoibGVmdCIsaG92ZXJ0ZW1wbGF0ZTooaC5saW5lfHx7fSkuaG92ZXJ0ZW1wbGF0ZSxo b3ZlcnRlbXBsYXRlTGFiZWxzOk0sZXZlbnREYXRhOlt7ZGF0YTpoLl9pbnB1dCxmdWxsRGF0 YTpoLGNvdW50OmsscHJvYmFiaWxpdHk6QX1dfSx7Y29udGFpbmVyOnAuX2hvdmVybGF5ZXIu bm9kZSgpLG91dGVyQ29udGFpbmVyOnAuX3BhcGVyLm5vZGUoKSxnZDpmfSl9fX1mdW5jdGlv biB2KHQpe2lmKCF0LnBhcmNhdHNWaWV3TW9kZWwuZHJhZ0RpbWVuc2lvbiYmKF8obi5zZWxl Y3QodGhpcykpLG8ubG9uZVVuaG92ZXIodC5wYXJjYXRzVmlld01vZGVsLmdyYXBoRGl2Ll9m dWxsTGF5b3V0Ll9ob3ZlcmxheWVyLm5vZGUoKSksdC5wYXJjYXRzVmlld01vZGVsLnBhdGhT ZWxlY3Rpb24uc29ydChtKSwtMT09PXQucGFyY2F0c1ZpZXdNb2RlbC5ob3ZlcmluZm9JdGVt cy5pbmRleE9mKCJza2lwIikpKXt2YXIgZT15KHQpLHI9eCh0KTt0LnBhcmNhdHNWaWV3TW9k ZWwuZ3JhcGhEaXYuZW1pdCgicGxvdGx5X3VuaG92ZXIiLHtwb2ludHM6ZSxldmVudDpuLmV2 ZW50LGNvbnN0cmFpbnRzOnJ9KX19ZnVuY3Rpb24geSh0KXtmb3IodmFyIGU9W10scj16KHQu cGFyY2F0c1ZpZXdNb2RlbCksbj0wO248dC5tb2RlbC52YWx1ZUluZHMubGVuZ3RoO24rKyl7 dmFyIGk9dC5tb2RlbC52YWx1ZUluZHNbbl07ZS5wdXNoKHtjdXJ2ZU51bWJlcjpyLHBvaW50 TnVtYmVyOml9KX1yZXR1cm4gZX1mdW5jdGlvbiB4KHQpe2Zvcih2YXIgZT17fSxyPXQucGFy Y2F0c1ZpZXdNb2RlbC5tb2RlbC5kaW1lbnNpb25zLG49MDtuPHIubGVuZ3RoO24rKyl7dmFy IGk9cltuXSxhPWkuY2F0ZWdvcmllc1t0Lm1vZGVsLmNhdGVnb3J5SW5kc1tuXV07ZVtpLmNv bnRhaW5lckluZF09YS5jYXRlZ29yeVZhbHVlfXJldHVybiB2b2lkIDAhPT10Lm1vZGVsLnJh d0NvbG9yJiYoZS5jb2xvcj10Lm1vZGVsLnJhd0NvbG9yKSxlfWZ1bmN0aW9uIGIodCl7aWYo LTE9PT10LnBhcmNhdHNWaWV3TW9kZWwuaG92ZXJpbmZvSXRlbXMuaW5kZXhPZigic2tpcCIp KXt2YXIgZT15KHQpLHI9eCh0KTt0LnBhcmNhdHNWaWV3TW9kZWwuZ3JhcGhEaXYuZW1pdCgi cGxvdGx5X2NsaWNrIix7cG9pbnRzOmUsZXZlbnQ6bi5ldmVudCxjb25zdHJhaW50czpyfSl9 fWZ1bmN0aW9uIF8odCl7dC5hdHRyKCJmaWxsIiwoZnVuY3Rpb24odCl7cmV0dXJuIHQubW9k ZWwuY29sb3J9KSkuYXR0cigiZmlsbC1vcGFjaXR5IiwuNikuYXR0cigic3Ryb2tlIiwibGln aHRncmF5IikuYXR0cigic3Ryb2tlLXdpZHRoIiwuMikuYXR0cigic3Ryb2tlLW9wYWNpdHki LDEpfWZ1bmN0aW9uIHcodCl7dC5hdHRyKCJmaWxsLW9wYWNpdHkiLC44KS5hdHRyKCJzdHJv a2UiLChmdW5jdGlvbih0KXtyZXR1cm4gdS5tb3N0UmVhZGFibGUodC5tb2RlbC5jb2xvcixb ImJsYWNrIiwid2hpdGUiXSl9KSkuYXR0cigic3Ryb2tlLXdpZHRoIiwuMyl9ZnVuY3Rpb24g VCh0KXt0LnNlbGVjdCgicmVjdC5jYXRyZWN0IikuYXR0cigic3Ryb2tlIiwiYmxhY2siKS5h dHRyKCJzdHJva2Utd2lkdGgiLDEpLmF0dHIoInN0cm9rZS1vcGFjaXR5IiwxKX1mdW5jdGlv biBrKHQpe3QuYXR0cigic3Ryb2tlIiwiYmxhY2siKS5hdHRyKCJzdHJva2Utd2lkdGgiLC4y KS5hdHRyKCJzdHJva2Utb3BhY2l0eSIsMSkuYXR0cigiZmlsbC1vcGFjaXR5IiwxKX1mdW5j dGlvbiBBKHQpe3ZhciBlPXQucGFyY2F0c1ZpZXdNb2RlbC5wYXRoU2VsZWN0aW9uLHI9dC5j YXRlZ29yeVZpZXdNb2RlbC5tb2RlbC5kaW1lbnNpb25JbmQsbj10LmNhdGVnb3J5Vmlld01v ZGVsLm1vZGVsLmNhdGVnb3J5SW5kO3JldHVybiBlLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0 dXJuIGUubW9kZWwuY2F0ZWdvcnlJbmRzW3JdPT09biYmZS5tb2RlbC5jb2xvcj09PXQuY29s b3J9KSl9ZnVuY3Rpb24gTSh0LGUscil7dmFyIGk9bi5zZWxlY3QodCkuZGF0dW0oKSxhPWku Y2F0ZWdvcnlWaWV3TW9kZWwubW9kZWwsbz1pLnBhcmNhdHNWaWV3TW9kZWwuZ3JhcGhEaXYs cz1uLnNlbGVjdCh0LnBhcmVudE5vZGUpLnNlbGVjdEFsbCgicmVjdC5iYW5kcmVjdCIpLGw9 W107cy5lYWNoKChmdW5jdGlvbih0KXtBKHQpLmVhY2goKGZ1bmN0aW9uKHQpe0FycmF5LnBy b3RvdHlwZS5wdXNoLmFwcGx5KGwseSh0KSl9KSl9KSk7dmFyIGM9e307Y1thLmRpbWVuc2lv bkluZF09YS5jYXRlZ29yeVZhbHVlLG8uZW1pdChlLHtwb2ludHM6bCxldmVudDpyLGNvbnN0 cmFpbnRzOmN9KX1mdW5jdGlvbiBTKHQsZSxyKXt2YXIgaT1uLnNlbGVjdCh0KS5kYXR1bSgp LGE9aS5jYXRlZ29yeVZpZXdNb2RlbC5tb2RlbCxvPWkucGFyY2F0c1ZpZXdNb2RlbC5ncmFw aERpdixzPUEoaSksbD1bXTtzLmVhY2goKGZ1bmN0aW9uKHQpe0FycmF5LnByb3RvdHlwZS5w dXNoLmFwcGx5KGwseSh0KSl9KSk7dmFyIGM9e307Y1thLmRpbWVuc2lvbkluZF09YS5jYXRl Z29yeVZhbHVlLHZvaWQgMCE9PWkucmF3Q29sb3ImJihjLmNvbG9yPWkucmF3Q29sb3IpLG8u ZW1pdChlLHtwb2ludHM6bCxldmVudDpyLGNvbnN0cmFpbnRzOmN9KX1mdW5jdGlvbiBFKHQs ZSxyKXt0Ll9mdWxsTGF5b3V0Ll9jYWxjSW52ZXJzZVRyYW5zZm9ybSh0KTt2YXIgaSxhLG89 dC5fZnVsbExheW91dC5faW52U2NhbGVYLHM9dC5fZnVsbExheW91dC5faW52U2NhbGVZLGw9 bi5zZWxlY3Qoci5wYXJlbnROb2RlKS5zZWxlY3QoInJlY3QuY2F0cmVjdCIpLGM9bC5ub2Rl KCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdT1sLmRhdHVtKCksZj11LnBhcmNhdHNWaWV3 TW9kZWwsaD1mLm1vZGVsLmRpbWVuc2lvbnNbdS5tb2RlbC5kaW1lbnNpb25JbmRdLHA9Zi50 cmFjZSxkPWMudG9wK2MuaGVpZ2h0LzI7Zi5kaW1lbnNpb25zLmxlbmd0aD4xJiZoLmRpc3Bs YXlJbmQ9PT1mLmRpbWVuc2lvbnMubGVuZ3RoLTE/KGk9Yy5sZWZ0LGE9ImxlZnQiKTooaT1j LmxlZnQrYy53aWR0aCxhPSJyaWdodCIpO3ZhciBtPXUubW9kZWwuY291bnQsZz11Lm1vZGVs LmNhdGVnb3J5TGFiZWwsdj1tL3UucGFyY2F0c1ZpZXdNb2RlbC5tb2RlbC5jb3VudCx5PXtj b3VudExhYmVsOm0sY2F0ZWdvcnlMYWJlbDpnLHByb2JhYmlsaXR5TGFiZWw6di50b0ZpeGVk KDMpfSx4PVtdOy0xIT09dS5wYXJjYXRzVmlld01vZGVsLmhvdmVyaW5mb0l0ZW1zLmluZGV4 T2YoImNvdW50IikmJngucHVzaChbIkNvdW50OiIseS5jb3VudExhYmVsXS5qb2luKCIgIikp LC0xIT09dS5wYXJjYXRzVmlld01vZGVsLmhvdmVyaW5mb0l0ZW1zLmluZGV4T2YoInByb2Jh YmlsaXR5IikmJngucHVzaChbIlAoIit5LmNhdGVnb3J5TGFiZWwrIik6Iix5LnByb2JhYmls aXR5TGFiZWxdLmpvaW4oIiAiKSk7dmFyIGI9eC5qb2luKCI8YnI+Iik7cmV0dXJue3RyYWNl OnAseDpvKihpLWUubGVmdCkseTpzKihkLWUudG9wKSx0ZXh0OmIsY29sb3I6ImxpZ2h0Z3Jh eSIsYm9yZGVyQ29sb3I6ImJsYWNrIixmb250RmFtaWx5OidNb25hY28sICJDb3VyaWVyIE5l dyIsIG1vbm9zcGFjZScsZm9udFNpemU6MTIsZm9udENvbG9yOiJibGFjayIsaWRlYWxBbGln bjphLGhvdmVydGVtcGxhdGU6cC5ob3ZlcnRlbXBsYXRlLGhvdmVydGVtcGxhdGVMYWJlbHM6 eSxldmVudERhdGE6W3tkYXRhOnAuX2lucHV0LGZ1bGxEYXRhOnAsY291bnQ6bSxjYXRlZ29y eTpnLHByb2JhYmlsaXR5OnZ9XX19ZnVuY3Rpb24gTCh0KXtpZighdC5wYXJjYXRzVmlld01v ZGVsLmRyYWdEaW1lbnNpb24mJi0xPT09dC5wYXJjYXRzVmlld01vZGVsLmhvdmVyaW5mb0l0 ZW1zLmluZGV4T2YoInNraXAiKSl7aWYobi5tb3VzZSh0aGlzKVsxXTwtMSlyZXR1cm47dmFy IGUscj10LnBhcmNhdHNWaWV3TW9kZWwuZ3JhcGhEaXYsaT1yLl9mdWxsTGF5b3V0LGE9aS5f cGFwZXJkaXYubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGw9dC5wYXJjYXRzVmll d01vZGVsLmhvdmVyb247aWYoImNvbG9yIj09PWw/KCFmdW5jdGlvbih0KXt2YXIgZT1uLnNl bGVjdCh0KS5kYXR1bSgpLHI9QShlKTt3KHIpLHIuZWFjaCgoZnVuY3Rpb24oKXtzLnJhaXNl VG9Ub3AodGhpcyl9KSksbi5zZWxlY3QodC5wYXJlbnROb2RlKS5zZWxlY3RBbGwoInJlY3Qu YmFuZHJlY3QiKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNvbG9yPT09ZS5jb2xv cn0pKS5lYWNoKChmdW5jdGlvbigpe3MucmFpc2VUb1RvcCh0aGlzKSxuLnNlbGVjdCh0aGlz KS5hdHRyKCJzdHJva2UiLCJibGFjayIpLmF0dHIoInN0cm9rZS13aWR0aCIsMS41KX0pKX0o dGhpcyksUyh0aGlzLCJwbG90bHlfaG92ZXIiLG4uZXZlbnQpKTooIWZ1bmN0aW9uKHQpe24u c2VsZWN0KHQucGFyZW50Tm9kZSkuc2VsZWN0QWxsKCJyZWN0LmJhbmRyZWN0IikuZWFjaCgo ZnVuY3Rpb24odCl7dmFyIGU9QSh0KTt3KGUpLGUuZWFjaCgoZnVuY3Rpb24oKXtzLnJhaXNl VG9Ub3AodGhpcyl9KSl9KSksbi5zZWxlY3QodC5wYXJlbnROb2RlKS5zZWxlY3QoInJlY3Qu Y2F0cmVjdCIpLmF0dHIoInN0cm9rZSIsImJsYWNrIikuYXR0cigic3Ryb2tlLXdpZHRoIiwy LjUpfSh0aGlzKSxNKHRoaXMsInBsb3RseV9ob3ZlciIsbi5ldmVudCkpLC0xPT09dC5wYXJj YXRzVmlld01vZGVsLmhvdmVyaW5mb0l0ZW1zLmluZGV4T2YoIm5vbmUiKSkiY2F0ZWdvcnki PT09bD9lPUUocixhLHRoaXMpOiJjb2xvciI9PT1sP2U9ZnVuY3Rpb24odCxlLHIpe3QuX2Z1 bGxMYXlvdXQuX2NhbGNJbnZlcnNlVHJhbnNmb3JtKHQpO3ZhciBpLGEsbz10Ll9mdWxsTGF5 b3V0Ll9pbnZTY2FsZVgscz10Ll9mdWxsTGF5b3V0Ll9pbnZTY2FsZVksbD1yLmdldEJvdW5k aW5nQ2xpZW50UmVjdCgpLGM9bi5zZWxlY3QocikuZGF0dW0oKSxmPWMuY2F0ZWdvcnlWaWV3 TW9kZWwsaD1mLnBhcmNhdHNWaWV3TW9kZWwscD1oLm1vZGVsLmRpbWVuc2lvbnNbZi5tb2Rl bC5kaW1lbnNpb25JbmRdLGQ9aC50cmFjZSxtPWwueStsLmhlaWdodC8yO2guZGltZW5zaW9u cy5sZW5ndGg+MSYmcC5kaXNwbGF5SW5kPT09aC5kaW1lbnNpb25zLmxlbmd0aC0xPyhpPWwu bGVmdCxhPSJsZWZ0Iik6KGk9bC5sZWZ0K2wud2lkdGgsYT0icmlnaHQiKTt2YXIgZz1mLm1v ZGVsLmNhdGVnb3J5TGFiZWwsdj1jLnBhcmNhdHNWaWV3TW9kZWwubW9kZWwuY291bnQseT0w O2MuY2F0ZWdvcnlWaWV3TW9kZWwuYmFuZHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5jb2xv cj09PWMuY29sb3ImJih5Kz10LmNvdW50KX0pKTt2YXIgeD1mLm1vZGVsLmNvdW50LGI9MDto LnBhdGhTZWxlY3Rpb24uZWFjaCgoZnVuY3Rpb24odCl7dC5tb2RlbC5jb2xvcj09PWMuY29s b3ImJihiKz10Lm1vZGVsLmNvdW50KX0pKTt2YXIgXz15L3Ysdz15L2IsVD15L3gsaz17Y291 bnRMYWJlbDp2LGNhdGVnb3J5TGFiZWw6Zyxwcm9iYWJpbGl0eUxhYmVsOl8udG9GaXhlZCgz KX0sQT1bXTstMSE9PWYucGFyY2F0c1ZpZXdNb2RlbC5ob3ZlcmluZm9JdGVtcy5pbmRleE9m KCJjb3VudCIpJiZBLnB1c2goWyJDb3VudDoiLGsuY291bnRMYWJlbF0uam9pbigiICIpKSwt MSE9PWYucGFyY2F0c1ZpZXdNb2RlbC5ob3ZlcmluZm9JdGVtcy5pbmRleE9mKCJwcm9iYWJp bGl0eSIpJiYoQS5wdXNoKCJQKGNvbG9yIFx1MjIyOSAiK2crIik6ICIray5wcm9iYWJpbGl0 eUxhYmVsKSxBLnB1c2goIlAoIitnKyIgfCBjb2xvcik6ICIrdy50b0ZpeGVkKDMpKSxBLnB1 c2goIlAoY29sb3IgfCAiK2crIik6ICIrVC50b0ZpeGVkKDMpKSk7dmFyIE09QS5qb2luKCI8 YnI+IiksUz11Lm1vc3RSZWFkYWJsZShjLmNvbG9yLFsiYmxhY2siLCJ3aGl0ZSJdKTtyZXR1 cm57dHJhY2U6ZCx4Om8qKGktZS5sZWZ0KSx5OnMqKG0tZS50b3ApLHRleHQ6TSxjb2xvcjpj LmNvbG9yLGJvcmRlckNvbG9yOiJibGFjayIsZm9udEZhbWlseTonTW9uYWNvLCAiQ291cmll ciBOZXciLCBtb25vc3BhY2UnLGZvbnRDb2xvcjpTLGZvbnRTaXplOjEwLGlkZWFsQWxpZ246 YSxob3ZlcnRlbXBsYXRlOmQuaG92ZXJ0ZW1wbGF0ZSxob3ZlcnRlbXBsYXRlTGFiZWxzOmss ZXZlbnREYXRhOlt7ZGF0YTpkLl9pbnB1dCxmdWxsRGF0YTpkLGNhdGVnb3J5OmcsY291bnQ6 dixwcm9iYWJpbGl0eTpfLGNhdGVnb3J5Y291bnQ6eCxjb2xvcmNvdW50OmIsYmFuZGNvbG9y Y291bnQ6eX1dfX0ocixhLHRoaXMpOiJkaW1lbnNpb24iPT09bCYmKGU9ZnVuY3Rpb24odCxl LHIpe3ZhciBpPVtdO3JldHVybiBuLnNlbGVjdChyLnBhcmVudE5vZGUucGFyZW50Tm9kZSku c2VsZWN0QWxsKCJnLmNhdGVnb3J5Iikuc2VsZWN0KCJyZWN0LmNhdHJlY3QiKS5lYWNoKChm dW5jdGlvbigpe2kucHVzaChFKHQsZSx0aGlzKSl9KSksaX0ocixhLHRoaXMpKSxlJiZvLmxv bmVIb3ZlcihlLHtjb250YWluZXI6aS5faG92ZXJsYXllci5ub2RlKCksb3V0ZXJDb250YWlu ZXI6aS5fcGFwZXIubm9kZSgpLGdkOnJ9KX19ZnVuY3Rpb24gQyh0KXt2YXIgZT10LnBhcmNh dHNWaWV3TW9kZWw7aWYoIWUuZHJhZ0RpbWVuc2lvbiYmKF8oZS5wYXRoU2VsZWN0aW9uKSxU KGUuZGltZW5zaW9uU2VsZWN0aW9uLnNlbGVjdEFsbCgiZy5jYXRlZ29yeSIpKSxrKGUuZGlt ZW5zaW9uU2VsZWN0aW9uLnNlbGVjdEFsbCgiZy5jYXRlZ29yeSIpLnNlbGVjdEFsbCgicmVj dC5iYW5kcmVjdCIpKSxvLmxvbmVVbmhvdmVyKGUuZ3JhcGhEaXYuX2Z1bGxMYXlvdXQuX2hv dmVybGF5ZXIubm9kZSgpKSxlLnBhdGhTZWxlY3Rpb24uc29ydChtKSwtMT09PWUuaG92ZXJp bmZvSXRlbXMuaW5kZXhPZigic2tpcCIpKSl7ImNvbG9yIj09PXQucGFyY2F0c1ZpZXdNb2Rl bC5ob3Zlcm9uP1ModGhpcywicGxvdGx5X3VuaG92ZXIiLG4uZXZlbnQpOk0odGhpcywicGxv dGx5X3VuaG92ZXIiLG4uZXZlbnQpfX1mdW5jdGlvbiBQKHQpeyJmaXhlZCIhPT10LnBhcmNh dHNWaWV3TW9kZWwuYXJyYW5nZW1lbnQmJih0LmRyYWdEaW1lbnNpb25EaXNwbGF5SW5kPXQu bW9kZWwuZGlzcGxheUluZCx0LmluaXRpYWxEcmFnRGltZW5zaW9uRGlzcGxheUluZHM9dC5w YXJjYXRzVmlld01vZGVsLm1vZGVsLmRpbWVuc2lvbnMubWFwKChmdW5jdGlvbih0KXtyZXR1 cm4gdC5kaXNwbGF5SW5kfSkpLHQuZHJhZ0hhc01vdmVkPSExLHQuZHJhZ0NhdGVnb3J5RGlz cGxheUluZD1udWxsLG4uc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgiZy5jYXRlZ29yeSIpLnNl bGVjdCgicmVjdC5jYXRyZWN0IikuZWFjaCgoZnVuY3Rpb24oZSl7dmFyIHI9bi5tb3VzZSh0 aGlzKVswXSxpPW4ubW91c2UodGhpcylbMV07LTI8PXImJnI8PWUud2lkdGgrMiYmLTI8PWkm Jmk8PWUuaGVpZ2h0KzImJih0LmRyYWdDYXRlZ29yeURpc3BsYXlJbmQ9ZS5tb2RlbC5kaXNw bGF5SW5kLHQuaW5pdGlhbERyYWdDYXRlZ29yeURpc3BsYXlJbmRzPXQubW9kZWwuY2F0ZWdv cmllcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRpc3BsYXlJbmR9KSksZS5tb2RlbC5k cmFnWT1lLnkscy5yYWlzZVRvVG9wKHRoaXMucGFyZW50Tm9kZSksbi5zZWxlY3QodGhpcy5w YXJlbnROb2RlKS5zZWxlY3RBbGwoInJlY3QuYmFuZHJlY3QiKS5lYWNoKChmdW5jdGlvbihl KXtlLnk8aSYmaTw9ZS55K2UuaGVpZ2h0JiYodC5wb3RlbnRpYWxDbGlja0JhbmQ9dGhpcyl9 KSkpfSkpLHQucGFyY2F0c1ZpZXdNb2RlbC5kcmFnRGltZW5zaW9uPXQsby5sb25lVW5ob3Zl cih0LnBhcmNhdHNWaWV3TW9kZWwuZ3JhcGhEaXYuX2Z1bGxMYXlvdXQuX2hvdmVybGF5ZXIu bm9kZSgpKSl9ZnVuY3Rpb24gSSh0KXtpZigiZml4ZWQiIT09dC5wYXJjYXRzVmlld01vZGVs LmFycmFuZ2VtZW50JiYodC5kcmFnSGFzTW92ZWQ9ITAsbnVsbCE9PXQuZHJhZ0RpbWVuc2lv bkRpc3BsYXlJbmQpKXt2YXIgZT10LmRyYWdEaW1lbnNpb25EaXNwbGF5SW5kLHI9ZS0xLGk9 ZSsxLGE9dC5wYXJjYXRzVmlld01vZGVsLmRpbWVuc2lvbnNbZV07aWYobnVsbCE9PXQuZHJh Z0NhdGVnb3J5RGlzcGxheUluZCl7dmFyIG89YS5jYXRlZ29yaWVzW3QuZHJhZ0NhdGVnb3J5 RGlzcGxheUluZF07by5tb2RlbC5kcmFnWSs9bi5ldmVudC5keTt2YXIgcz1vLm1vZGVsLmRy YWdZLGw9by5tb2RlbC5kaXNwbGF5SW5kLGM9YS5jYXRlZ29yaWVzLHU9Y1tsLTFdLGY9Y1ts KzFdO3ZvaWQgMCE9PXUmJnM8dS55K3UuaGVpZ2h0LzImJihvLm1vZGVsLmRpc3BsYXlJbmQ9 dS5tb2RlbC5kaXNwbGF5SW5kLHUubW9kZWwuZGlzcGxheUluZD1sKSx2b2lkIDAhPT1mJiZz K28uaGVpZ2h0PmYueStmLmhlaWdodC8yJiYoby5tb2RlbC5kaXNwbGF5SW5kPWYubW9kZWwu ZGlzcGxheUluZCxmLm1vZGVsLmRpc3BsYXlJbmQ9bCksdC5kcmFnQ2F0ZWdvcnlEaXNwbGF5 SW5kPW8ubW9kZWwuZGlzcGxheUluZH1pZihudWxsPT09dC5kcmFnQ2F0ZWdvcnlEaXNwbGF5 SW5kfHwiZnJlZWZvcm0iPT09dC5wYXJjYXRzVmlld01vZGVsLmFycmFuZ2VtZW50KXthLm1v ZGVsLmRyYWdYPW4uZXZlbnQueDt2YXIgaD10LnBhcmNhdHNWaWV3TW9kZWwuZGltZW5zaW9u c1tyXSxwPXQucGFyY2F0c1ZpZXdNb2RlbC5kaW1lbnNpb25zW2ldO3ZvaWQgMCE9PWgmJmEu bW9kZWwuZHJhZ1g8aC54K2gud2lkdGgmJihhLm1vZGVsLmRpc3BsYXlJbmQ9aC5tb2RlbC5k aXNwbGF5SW5kLGgubW9kZWwuZGlzcGxheUluZD1lKSx2b2lkIDAhPT1wJiZhLm1vZGVsLmRy YWdYK2Eud2lkdGg+cC54JiYoYS5tb2RlbC5kaXNwbGF5SW5kPXAubW9kZWwuZGlzcGxheUlu ZCxwLm1vZGVsLmRpc3BsYXlJbmQ9dC5kcmFnRGltZW5zaW9uRGlzcGxheUluZCksdC5kcmFn RGltZW5zaW9uRGlzcGxheUluZD1hLm1vZGVsLmRpc3BsYXlJbmR9aih0LnBhcmNhdHNWaWV3 TW9kZWwpLE4odC5wYXJjYXRzVmlld01vZGVsKSxSKHQucGFyY2F0c1ZpZXdNb2RlbCksRCh0 LnBhcmNhdHNWaWV3TW9kZWwpfX1mdW5jdGlvbiBPKHQpe2lmKCJmaXhlZCIhPT10LnBhcmNh dHNWaWV3TW9kZWwuYXJyYW5nZW1lbnQmJm51bGwhPT10LmRyYWdEaW1lbnNpb25EaXNwbGF5 SW5kKXtuLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoInRleHQiKS5hdHRyKCJmb250LXdlaWdo dCIsIm5vcm1hbCIpO3ZhciBlPXt9LHI9eih0LnBhcmNhdHNWaWV3TW9kZWwpLGk9dC5wYXJj YXRzVmlld01vZGVsLm1vZGVsLmRpbWVuc2lvbnMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4g dC5kaXNwbGF5SW5kfSkpLG89dC5pbml0aWFsRHJhZ0RpbWVuc2lvbkRpc3BsYXlJbmRzLnNv bWUoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQhPT1pW2VdfSkpO28mJmkuZm9yRWFjaCgoZnVu Y3Rpb24ocixuKXt2YXIgaT10LnBhcmNhdHNWaWV3TW9kZWwubW9kZWwuZGltZW5zaW9uc1tu XS5jb250YWluZXJJbmQ7ZVsiZGltZW5zaW9uc1siK2krIl0uZGlzcGxheWluZGV4Il09cn0p KTt2YXIgcz0hMTtpZihudWxsIT09dC5kcmFnQ2F0ZWdvcnlEaXNwbGF5SW5kKXt2YXIgbD10 Lm1vZGVsLmNhdGVnb3JpZXMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kaXNwbGF5SW5k fSkpO2lmKHM9dC5pbml0aWFsRHJhZ0NhdGVnb3J5RGlzcGxheUluZHMuc29tZSgoZnVuY3Rp b24odCxlKXtyZXR1cm4gdCE9PWxbZV19KSkpe3ZhciBjPXQubW9kZWwuY2F0ZWdvcmllcy5z bGljZSgpLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZGlzcGxheUluZC1lLmRpc3Bs YXlJbmR9KSksdT1jLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuY2F0ZWdvcnlWYWx1ZX0p KSxmPWMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5jYXRlZ29yeUxhYmVsfSkpO2VbImRp bWVuc2lvbnNbIit0Lm1vZGVsLmNvbnRhaW5lckluZCsiXS5jYXRlZ29yeWFycmF5Il09W3Vd LGVbImRpbWVuc2lvbnNbIit0Lm1vZGVsLmNvbnRhaW5lckluZCsiXS50aWNrdGV4dCJdPVtm XSxlWyJkaW1lbnNpb25zWyIrdC5tb2RlbC5jb250YWluZXJJbmQrIl0uY2F0ZWdvcnlvcmRl ciJdPSJhcnJheSJ9fWlmKC0xPT09dC5wYXJjYXRzVmlld01vZGVsLmhvdmVyaW5mb0l0ZW1z LmluZGV4T2YoInNraXAiKSYmIXQuZHJhZ0hhc01vdmVkJiZ0LnBvdGVudGlhbENsaWNrQmFu ZCYmKCJjb2xvciI9PT10LnBhcmNhdHNWaWV3TW9kZWwuaG92ZXJvbj9TKHQucG90ZW50aWFs Q2xpY2tCYW5kLCJwbG90bHlfY2xpY2siLG4uZXZlbnQuc291cmNlRXZlbnQpOk0odC5wb3Rl bnRpYWxDbGlja0JhbmQsInBsb3RseV9jbGljayIsbi5ldmVudC5zb3VyY2VFdmVudCkpLHQu bW9kZWwuZHJhZ1g9bnVsbCxudWxsIT09dC5kcmFnQ2F0ZWdvcnlEaXNwbGF5SW5kKXQucGFy Y2F0c1ZpZXdNb2RlbC5kaW1lbnNpb25zW3QuZHJhZ0RpbWVuc2lvbkRpc3BsYXlJbmRdLmNh dGVnb3JpZXNbdC5kcmFnQ2F0ZWdvcnlEaXNwbGF5SW5kXS5tb2RlbC5kcmFnWT1udWxsLHQu ZHJhZ0NhdGVnb3J5RGlzcGxheUluZD1udWxsO3QuZHJhZ0RpbWVuc2lvbkRpc3BsYXlJbmQ9 bnVsbCx0LnBhcmNhdHNWaWV3TW9kZWwuZHJhZ0RpbWVuc2lvbj1udWxsLHQuZHJhZ0hhc01v dmVkPW51bGwsdC5wb3RlbnRpYWxDbGlja0JhbmQ9bnVsbCxqKHQucGFyY2F0c1ZpZXdNb2Rl bCksTih0LnBhcmNhdHNWaWV3TW9kZWwpLG4udHJhbnNpdGlvbigpLmR1cmF0aW9uKDMwMCku ZWFzZSgiY3ViaWMtaW4tb3V0IikuZWFjaCgoZnVuY3Rpb24oKXtSKHQucGFyY2F0c1ZpZXdN b2RlbCwhMCksRCh0LnBhcmNhdHNWaWV3TW9kZWwsITApfSkpLmVhY2goImVuZCIsKGZ1bmN0 aW9uKCl7KG98fHMpJiZhLnJlc3R5bGUodC5wYXJjYXRzVmlld01vZGVsLmdyYXBoRGl2LGUs W3JdKX0pKX19ZnVuY3Rpb24geih0KXtmb3IodmFyIGUscj10LmdyYXBoRGl2Ll9mdWxsRGF0 YSxuPTA7bjxyLmxlbmd0aDtuKyspaWYodC5rZXk9PT1yW25dLnVpZCl7ZT1uO2JyZWFrfXJl dHVybiBlfWZ1bmN0aW9uIEQodCxlKXt2YXIgcjt2b2lkIDA9PT1lJiYoZT0hMSksdC5wYXRo U2VsZWN0aW9uLmRhdGEoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnBhdGhzfSkscCksKHI9dC5w YXRoU2VsZWN0aW9uLGU/ci50cmFuc2l0aW9uKCk6cikuYXR0cigiZCIsKGZ1bmN0aW9uKHQp e3JldHVybiB0LnN2Z0R9KSl9ZnVuY3Rpb24gUih0LGUpe2Z1bmN0aW9uIHIodCl7cmV0dXJu IGU/dC50cmFuc2l0aW9uKCk6dH12b2lkIDA9PT1lJiYoZT0hMSksdC5kaW1lbnNpb25TZWxl Y3Rpb24uZGF0YSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGltZW5zaW9uc30pLHApO3ZhciBp PXQuZGltZW5zaW9uU2VsZWN0aW9uLnNlbGVjdEFsbCgiZy5jYXRlZ29yeSIpLmRhdGEoKGZ1 bmN0aW9uKHQpe3JldHVybiB0LmNhdGVnb3JpZXN9KSxwKTtyKHQuZGltZW5zaW9uU2VsZWN0 aW9uKS5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4gbCh0LngsMCl9KSks cihpKS5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4gbCgwLHQueSl9KSks aS5zZWxlY3QoIi5kaW1sYWJlbCIpLnRleHQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIDA9PT1l P3QucGFyY2F0c1ZpZXdNb2RlbC5tb2RlbC5kaW1lbnNpb25zW3QubW9kZWwuZGltZW5zaW9u SW5kXS5kaW1lbnNpb25MYWJlbDpudWxsfSkpLGkuc2VsZWN0KCIuY2F0bGFiZWwiKS5hdHRy KCJ0ZXh0LWFuY2hvciIsKGZ1bmN0aW9uKHQpe3JldHVybiBkKHQpPyJzdGFydCI6ImVuZCJ9 KSkuYXR0cigieCIsKGZ1bmN0aW9uKHQpe3JldHVybiBkKHQpP3Qud2lkdGgrNTotNX0pKS5l YWNoKChmdW5jdGlvbih0KXt2YXIgZSxyO2QodCk/KGU9dC53aWR0aCs1LHI9InN0YXJ0Iik6 KGU9LTUscj0iZW5kIiksbi5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJ0c3BhbiIpLmF0dHIo IngiLGUpLmF0dHIoInRleHQtYW5jaG9yIixyKX0pKTt2YXIgYT1pLnNlbGVjdEFsbCgicmVj dC5iYW5kcmVjdCIpLmRhdGEoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmJhbmRzfSkscCksbz1h LmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJiYW5kcmVjdCIpLmF0dHIo ImN1cnNvciIsIm1vdmUiKS5hdHRyKCJzdHJva2Utb3BhY2l0eSIsMCkuYXR0cigiZmlsbCIs KGZ1bmN0aW9uKHQpe3JldHVybiB0LmNvbG9yfSkpLmF0dHIoImZpbGwtb3BhY2l0eSIsMCk7 YS5hdHRyKCJmaWxsIiwoZnVuY3Rpb24odCl7cmV0dXJuIHQuY29sb3J9KSkuYXR0cigid2lk dGgiLChmdW5jdGlvbih0KXtyZXR1cm4gdC53aWR0aH0pKS5hdHRyKCJoZWlnaHQiLChmdW5j dGlvbih0KXtyZXR1cm4gdC5oZWlnaHR9KSkuYXR0cigieSIsKGZ1bmN0aW9uKHQpe3JldHVy biB0Lnl9KSksayhvKSxhLmVhY2goKGZ1bmN0aW9uKCl7cy5yYWlzZVRvVG9wKHRoaXMpfSkp LGEuZXhpdCgpLnJlbW92ZSgpfWZ1bmN0aW9uIEYodCxlLHIpe3ZhciBuLGk9clswXSxhPWUu bWFyZ2lufHx7bDo4MCxyOjgwLHQ6MTAwLGI6ODB9LG89aS50cmFjZSxzPW8uZG9tYWluLGw9 ZS53aWR0aCxjPWUuaGVpZ2h0LHU9TWF0aC5mbG9vcihsKihzLnhbMV0tcy54WzBdKSksZj1N YXRoLmZsb29yKGMqKHMueVsxXS1zLnlbMF0pKSxoPXMueFswXSpsK2EubCxwPWUuaGVpZ2h0 LXMueVsxXSplLmhlaWdodCthLnQsZD1vLmxpbmUuc2hhcGU7bj0iYWxsIj09PW8uaG92ZXJp bmZvP1siY291bnQiLCJwcm9iYWJpbGl0eSJdOihvLmhvdmVyaW5mb3x8IiIpLnNwbGl0KCIr Iik7dmFyIG09e3RyYWNlOm8sa2V5Om8udWlkLG1vZGVsOmkseDpoLHk6cCx3aWR0aDp1LGhl aWdodDpmLGhvdmVyb246by5ob3Zlcm9uLGhvdmVyaW5mb0l0ZW1zOm4sYXJyYW5nZW1lbnQ6 by5hcnJhbmdlbWVudCxidW5kbGVjb2xvcnM6by5idW5kbGVjb2xvcnMsc29ydHBhdGhzOm8u c29ydHBhdGhzLGxhYmVsZm9udDpvLmxhYmVsZm9udCxjYXRlZ29yeWxhYmVsZm9udDpvLnRp Y2tmb250LHBhdGhTaGFwZTpkLGRyYWdEaW1lbnNpb246bnVsbCxtYXJnaW46YSxwYXRoczpb XSxkaW1lbnNpb25zOltdLGdyYXBoRGl2OnQsdHJhY2VTZWxlY3Rpb246bnVsbCxwYXRoU2Vs ZWN0aW9uOm51bGwsZGltZW5zaW9uU2VsZWN0aW9uOm51bGx9O3JldHVybiBpLmRpbWVuc2lv bnMmJihqKG0pLE4obSkpLG19ZnVuY3Rpb24gQih0LGUscixuLGEpe3ZhciBvLHMsbD1bXSxj PVtdO2ZvcihzPTA7czxyLmxlbmd0aC0xO3MrKylvPWkocltzXSt0W3NdLHRbcysxXSksbC5w dXNoKG8oYSkpLGMucHVzaChvKDEtYSkpO3ZhciB1PSJNICIrdFswXSsiLCIrZVswXTtmb3Io dSs9ImwiK3JbMF0rIiwwICIscz0xO3M8ci5sZW5ndGg7cysrKXUrPSJDIitsW3MtMV0rIiwi K2Vbcy0xXSsiICIrY1tzLTFdKyIsIitlW3NdKyIgIit0W3NdKyIsIitlW3NdLHUrPSJsIity W3NdKyIsMCAiO2Zvcih1Kz0ibDAsIituKyIgIix1Kz0ibCAtIityW3IubGVuZ3RoLTFdKyIs MCAiLHM9ci5sZW5ndGgtMjtzPj0wO3MtLSl1Kz0iQyIrY1tzXSsiLCIrKGVbcysxXStuKSsi ICIrbFtzXSsiLCIrKGVbc10rbikrIiAiKyh0W3NdK3Jbc10pKyIsIisoZVtzXStuKSx1Kz0i bC0iK3Jbc10rIiwwICI7cmV0dXJuIHUrPSJaIn1mdW5jdGlvbiBOKHQpe3ZhciBlPXQuZGlt ZW5zaW9ucyxyPXQubW9kZWwsbj1lLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuY2F0ZWdv cmllcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnl9KSl9KSksaT10Lm1vZGVsLmRpbWVu c2lvbnMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5jYXRlZ29yaWVzLm1hcCgoZnVuY3Rp b24odCl7cmV0dXJuIHQuZGlzcGxheUluZH0pKX0pKSxhPXQubW9kZWwuZGltZW5zaW9ucy5t YXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRpc3BsYXlJbmR9KSksbz10LmRpbWVuc2lvbnMu bWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5tb2RlbC5kaW1lbnNpb25JbmR9KSkscz1lLm1h cCgoZnVuY3Rpb24odCl7cmV0dXJuIHQueH0pKSxsPWUubWFwKChmdW5jdGlvbih0KXtyZXR1 cm4gdC53aWR0aH0pKSxjPVtdO2Zvcih2YXIgdSBpbiByLnBhdGhzKXIucGF0aHMuaGFzT3du UHJvcGVydHkodSkmJmMucHVzaChyLnBhdGhzW3VdKTtmdW5jdGlvbiBmKHQpe3ZhciBlPXQu Y2F0ZWdvcnlJbmRzLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gaVtlXVt0XX0pKTtyZXR1 cm4gby5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfSkpfWMuc29ydCgoZnVuY3Rpb24o ZSxyKXt2YXIgbj1mKGUpLGk9ZihyKTtyZXR1cm4iYmFja3dhcmQiPT09dC5zb3J0cGF0aHMm JihuLnJldmVyc2UoKSxpLnJldmVyc2UoKSksbi5wdXNoKGUudmFsdWVJbmRzWzBdKSxpLnB1 c2goci52YWx1ZUluZHNbMF0pLHQuYnVuZGxlY29sb3JzJiYobi51bnNoaWZ0KGUucmF3Q29s b3IpLGkudW5zaGlmdChyLnJhd0NvbG9yKSksbjxpPy0xOm4+aT8xOjB9KSk7Zm9yKHZhciBo PW5ldyBBcnJheShjLmxlbmd0aCkscD1lWzBdLm1vZGVsLmNvdW50LGQ9ZVswXS5jYXRlZ29y aWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaGVpZ2h0fSkpLnJlZHVjZSgoZnVuY3Rp b24odCxlKXtyZXR1cm4gdCtlfSkpLG09MDttPGMubGVuZ3RoO20rKyl7dmFyIGcsdj1jW21d O2c9cD4wP2QqKHYuY291bnQvcCk6MDtmb3IodmFyIHkseD1uZXcgQXJyYXkobi5sZW5ndGgp LGI9MDtiPHYuY2F0ZWdvcnlJbmRzLmxlbmd0aDtiKyspe3ZhciBfPXYuY2F0ZWdvcnlJbmRz W2JdLHc9aVtiXVtfXSxUPWFbYl07eFtUXT1uW1RdW3ddLG5bVF1bd10rPWc7dmFyIGs9dC5k aW1lbnNpb25zW1RdLmNhdGVnb3JpZXNbd10sQT1rLmJhbmRzLmxlbmd0aCxNPWsuYmFuZHNb QS0xXTtpZih2b2lkIDA9PT1NfHx2LnJhd0NvbG9yIT09TS5yYXdDb2xvcil7dmFyIFM9dm9p ZCAwPT09TT8wOk0ueStNLmhlaWdodDtrLmJhbmRzLnB1c2goe2tleTpTLGNvbG9yOnYuY29s b3IscmF3Q29sb3I6di5yYXdDb2xvcixoZWlnaHQ6Zyx3aWR0aDprLndpZHRoLGNvdW50OnYu Y291bnQseTpTLGNhdGVnb3J5Vmlld01vZGVsOmsscGFyY2F0c1ZpZXdNb2RlbDp0fSl9ZWxz ZXt2YXIgRT1rLmJhbmRzW0EtMV07RS5oZWlnaHQrPWcsRS5jb3VudCs9di5jb3VudH19eT0i aHNwbGluZSI9PT10LnBhdGhTaGFwZT9CKHMseCxsLGcsLjUpOkIocyx4LGwsZywwKSxoW21d PXtrZXk6di52YWx1ZUluZHNbMF0sbW9kZWw6dixoZWlnaHQ6ZyxsZWZ0WHM6cyx0b3BZczp4 LGRpbVdpZHRoczpsLHN2Z0Q6eSxwYXJjYXRzVmlld01vZGVsOnR9fXQucGF0aHM9aH1mdW5j dGlvbiBqKHQpe3ZhciBlPXQubW9kZWwuZGltZW5zaW9ucy5tYXAoKGZ1bmN0aW9uKHQpe3Jl dHVybntkaXNwbGF5SW5kOnQuZGlzcGxheUluZCxkaW1lbnNpb25JbmQ6dC5kaW1lbnNpb25J bmR9fSkpO2Uuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5kaXNwbGF5SW5kLWUuZGlz cGxheUluZH0pKTt2YXIgcj1bXTtmb3IodmFyIG4gaW4gZSl7dmFyIGk9ZVtuXS5kaW1lbnNp b25JbmQsYT10Lm1vZGVsLmRpbWVuc2lvbnNbaV07ci5wdXNoKFUodCxhKSl9dC5kaW1lbnNp b25zPXJ9ZnVuY3Rpb24gVSh0LGUpe3ZhciByLG49dC5tb2RlbC5kaW1lbnNpb25zLmxlbmd0 aCxpPWUuZGlzcGxheUluZDtyPTQwKyhuPjE/KHQud2lkdGgtODAtMTYpLyhuLTEpOjApKmk7 dmFyIGEsbyxzLGwsYyx1PVtdLGY9dC5tb2RlbC5tYXhDYXRzLGg9ZS5jYXRlZ29yaWVzLmxl bmd0aCxwPWUuY291bnQsZD10LmhlaWdodC04KihmLTEpLG09OCooZi1oKS8yLGc9ZS5jYXRl Z29yaWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue2Rpc3BsYXlJbmQ6dC5kaXNwbGF5SW5k LGNhdGVnb3J5SW5kOnQuY2F0ZWdvcnlJbmR9fSkpO2ZvcihnLnNvcnQoKGZ1bmN0aW9uKHQs ZSl7cmV0dXJuIHQuZGlzcGxheUluZC1lLmRpc3BsYXlJbmR9KSksYz0wO2M8aDtjKyspbD1n W2NdLmNhdGVnb3J5SW5kLG89ZS5jYXRlZ29yaWVzW2xdLGE9cD4wP28uY291bnQvcCpkOjAs cz17a2V5Om8udmFsdWVJbmRzWzBdLG1vZGVsOm8sd2lkdGg6MTYsaGVpZ2h0OmEseTpudWxs IT09by5kcmFnWT9vLmRyYWdZOm0sYmFuZHM6W10scGFyY2F0c1ZpZXdNb2RlbDp0fSxtPW0r YSs4LHUucHVzaChzKTtyZXR1cm57a2V5OmUuZGltZW5zaW9uSW5kLHg6bnVsbCE9PWUuZHJh Z1g/ZS5kcmFnWDpyLHk6MCx3aWR0aDoxNixtb2RlbDplLGNhdGVnb3JpZXM6dSxwYXJjYXRz Vmlld01vZGVsOnQsZHJhZ0NhdGVnb3J5RGlzcGxheUluZDpudWxsLGRyYWdEaW1lbnNpb25E aXNwbGF5SW5kOm51bGwsaW5pdGlhbERyYWdEaW1lbnNpb25EaXNwbGF5SW5kczpudWxsLGlu aXRpYWxEcmFnQ2F0ZWdvcnlEaXNwbGF5SW5kczpudWxsLGRyYWdIYXNNb3ZlZDpudWxsLHBv dGVudGlhbENsaWNrQmFuZDpudWxsfX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbil7aChy LHQsbixlKX19LHsiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjozODgsIi4uLy4uL2NvbXBv bmVudHMvZngiOjQwNiwiLi4vLi4vbGliIjo1MDMsIi4uLy4uL2xpYi9zdmdfdGV4dF91dGls cyI6NTI5LCIuLi8uLi9wbG90X2FwaS9wbG90X2FwaSI6NTQwLCJAcGxvdGx5L2QzIjo1OCwi ZDMtaW50ZXJwb2xhdGUiOjExNix0aW55Y29sb3IyOjMxMn1dLDg4NzpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL3BhcmNhdHMiKTtlLmV4cG9ydHM9ZnVuY3Rp b24odCxlLHIsaSl7dmFyIGE9dC5fZnVsbExheW91dCxvPWEuX3BhcGVyLHM9YS5fc2l6ZTtu KHQsbyxlLHt3aWR0aDpzLncsaGVpZ2h0OnMuaCxtYXJnaW46e3Q6cy50LHI6cy5yLGI6cy5i LGw6cy5sfX0scixpKX19LHsiLi9wYXJjYXRzIjo4ODZ9XSw4ODg6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0 dHJpYnV0ZXMiKSxpPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9sYXlvdXRfYXR0cmlidXRl cyIpLGE9dCgiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIiksbz10KCIuLi8uLi9wbG90 cy9kb21haW4iKS5hdHRyaWJ1dGVzLHM9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZs YXQsbD10KCIuLi8uLi9wbG90X2FwaS9wbG90X3RlbXBsYXRlIikudGVtcGxhdGVkQXJyYXk7 ZS5leHBvcnRzPXtkb21haW46byh7bmFtZToicGFyY29vcmRzIix0cmFjZTohMCxlZGl0VHlw ZToicGxvdCJ9KSxsYWJlbGFuZ2xlOnt2YWxUeXBlOiJhbmdsZSIsZGZsdDowLGVkaXRUeXBl OiJwbG90In0sbGFiZWxzaWRlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0b3Ai LCJib3R0b20iXSxkZmx0OiJ0b3AiLGVkaXRUeXBlOiJwbG90In0sbGFiZWxmb250OmEoe2Vk aXRUeXBlOiJwbG90In0pLHRpY2tmb250OmEoe2VkaXRUeXBlOiJwbG90In0pLHJhbmdlZm9u dDphKHtlZGl0VHlwZToicGxvdCJ9KSxkaW1lbnNpb25zOmwoImRpbWVuc2lvbiIse2xhYmVs Ont2YWxUeXBlOiJzdHJpbmciLGVkaXRUeXBlOiJwbG90In0sdGlja3ZhbHM6cyh7fSxpLnRp Y2t2YWxzLHtlZGl0VHlwZToicGxvdCJ9KSx0aWNrdGV4dDpzKHt9LGkudGlja3RleHQse2Vk aXRUeXBlOiJwbG90In0pLHRpY2tmb3JtYXQ6cyh7fSxpLnRpY2tmb3JtYXQse2VkaXRUeXBl OiJwbG90In0pLHZpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6 InBsb3QifSxyYW5nZTp7dmFsVHlwZToiaW5mb19hcnJheSIsaXRlbXM6W3t2YWxUeXBlOiJu dW1iZXIiLGVkaXRUeXBlOiJwbG90In0se3ZhbFR5cGU6Im51bWJlciIsZWRpdFR5cGU6InBs b3QifV0sZWRpdFR5cGU6InBsb3QifSxjb25zdHJhaW50cmFuZ2U6e3ZhbFR5cGU6ImluZm9f YXJyYXkiLGZyZWVMZW5ndGg6ITAsZGltZW5zaW9uczoiMS0yIixpdGVtczpbe3ZhbFR5cGU6 ImFueSIsZWRpdFR5cGU6InBsb3QifSx7dmFsVHlwZToiYW55IixlZGl0VHlwZToicGxvdCJ9 XSxlZGl0VHlwZToicGxvdCJ9LG11bHRpc2VsZWN0Ont2YWxUeXBlOiJib29sZWFuIixkZmx0 OiEwLGVkaXRUeXBlOiJwbG90In0sdmFsdWVzOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0 VHlwZToiY2FsYyJ9LGVkaXRUeXBlOiJjYWxjIn0pLGxpbmU6cyh7ZWRpdFR5cGU6ImNhbGMi fSxuKCJsaW5lIix7Y29sb3JzY2FsZURmbHQ6IlZpcmlkaXMiLGF1dG9Db2xvckRmbHQ6ITEs ZWRpdFR5cGVPdmVycmlkZToiY2FsYyJ9KSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3Jz Y2FsZS9hdHRyaWJ1dGVzIjozNzMsIi4uLy4uL2xpYi9leHRlbmQiOjQ5MywiLi4vLi4vcGxv dF9hcGkvcGxvdF90ZW1wbGF0ZSI6NTQzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vbGF5b3V0 X2F0dHJpYnV0ZXMiOjU2OSwiLi4vLi4vcGxvdHMvZG9tYWluIjo1ODQsIi4uLy4uL3Bsb3Rz L2ZvbnRfYXR0cmlidXRlcyI6NTg1fV0sODg5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4vY29uc3RhbnRzIiksaT10KCJAcGxvdGx5L2QzIiksYT10KCIuLi8u Li9saWIvZ3VwIikua2V5RnVuLG89dCgiLi4vLi4vbGliL2d1cCIpLnJlcGVhdCxzPXQoIi4u Ly4uL2xpYiIpLnNvcnRlckFzYyxsPXQoIi4uLy4uL2xpYiIpLnN0clRyYW5zbGF0ZSxjPW4u YmFyLnNuYXBSYXRpbztmdW5jdGlvbiB1KHQsZSl7cmV0dXJuIHQqKDEtYykrZSpjfXZhciBm PW4uYmFyLnNuYXBDbG9zZTtmdW5jdGlvbiBoKHQsZSl7cmV0dXJuIHQqKDEtZikrZSpmfWZ1 bmN0aW9uIHAodCxlLHIsbil7aWYoZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MDtyPGUubGVu Z3RoO3IrKylpZih0Pj1lW3JdWzBdJiZ0PD1lW3JdWzFdKXJldHVybiEwO3JldHVybiExfShy LG4pKXJldHVybiByO3ZhciBpPXQ/LTE6MSxhPTAsbz1lLmxlbmd0aC0xO2lmKGk8MCl7dmFy IHM9YTthPW8sbz1zfWZvcih2YXIgbD1lW2FdLGM9bCxmPWE7aSpmPGkqbztmKz1pKXt2YXIg cD1mK2ksZD1lW3BdO2lmKGkqcjxpKmgobCxkKSlyZXR1cm4gdShsLGMpO2lmKGkqcjxpKmR8 fHA9PT1vKXJldHVybiB1KGQsbCk7Yz1sLGw9ZH19ZnVuY3Rpb24gZCh0KXt0LmF0dHIoIngi LC1uLmJhci5jYXB0dXJlV2lkdGgvMikuYXR0cigid2lkdGgiLG4uYmFyLmNhcHR1cmVXaWR0 aCl9ZnVuY3Rpb24gbSh0KXt0LmF0dHIoInZpc2liaWxpdHkiLCJ2aXNpYmxlIikuc3R5bGUo InZpc2liaWxpdHkiLCJ2aXNpYmxlIikuYXR0cigiZmlsbCIsInllbGxvdyIpLmF0dHIoIm9w YWNpdHkiLDApfWZ1bmN0aW9uIGcodCl7aWYoIXQuYnJ1c2guZmlsdGVyU3BlY2lmaWVkKXJl dHVybiIwLCIrdC5oZWlnaHQ7Zm9yKHZhciBlLHIsbixpPXYodC5icnVzaC5maWx0ZXIuZ2V0 Q29uc29saWRhdGVkKCksdC5oZWlnaHQpLGE9WzBdLG89aS5sZW5ndGg/aVswXVswXTpudWxs LHM9MDtzPGkubGVuZ3RoO3MrKylyPShlPWlbc10pWzFdLWVbMF0sYS5wdXNoKG8pLGEucHVz aChyKSwobj1zKzEpPGkubGVuZ3RoJiYobz1pW25dWzBdLWVbMV0pO3JldHVybiBhLnB1c2go dC5oZWlnaHQpLGF9ZnVuY3Rpb24gdih0LGUpe3JldHVybiB0Lm1hcCgoZnVuY3Rpb24odCl7 cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5tYXgoMCx0KmUpfSkpLnNv cnQocyl9KSl9ZnVuY3Rpb24geSgpe2kuc2VsZWN0KGRvY3VtZW50LmJvZHkpLnN0eWxlKCJj dXJzb3IiLG51bGwpfWZ1bmN0aW9uIHgodCl7dC5hdHRyKCJzdHJva2UtZGFzaGFycmF5Iixn KX1mdW5jdGlvbiBiKHQsZSl7dmFyIHI9aS5zZWxlY3QodCkuc2VsZWN0QWxsKCIuaGlnaGxp Z2h0LCAuaGlnaGxpZ2h0LXNoYWRvdyIpO3goZT9yLnRyYW5zaXRpb24oKS5kdXJhdGlvbihu LmJhci5zbmFwRHVyYXRpb24pLmVhY2goImVuZCIsZSk6cil9ZnVuY3Rpb24gXyh0LGUpe3Zh ciByLGk9dC5icnVzaCxhPU5hTixvPXt9O2lmKGkuZmlsdGVyU3BlY2lmaWVkKXt2YXIgcz10 LmhlaWdodCxsPWkuZmlsdGVyLmdldENvbnNvbGlkYXRlZCgpLGM9dihsLHMpLHU9TmFOLGY9 TmFOLGg9TmFOO2ZvcihyPTA7cjw9Yy5sZW5ndGg7cisrKXt2YXIgcD1jW3JdO2lmKHAmJnBb MF08PWUmJmU8PXBbMV0pe3U9cjticmVha31pZihmPXI/ci0xOk5hTixwJiZwWzBdPmUpe2g9 cjticmVha319aWYoYT11LGlzTmFOKGEpJiYoYT1pc05hTihmKXx8aXNOYU4oaCk/aXNOYU4o Zik/aDpmOmUtY1tmXVsxXTxjW2hdWzBdLWU/ZjpoKSwhaXNOYU4oYSkpe3ZhciBkPWNbYV0s bT1mdW5jdGlvbih0LGUpe3ZhciByPW4uYmFyLmhhbmRsZUhlaWdodDtpZighKGU+dFsxXSty fHxlPHRbMF0tcikpcmV0dXJuIGU+PS45KnRbMV0rLjEqdFswXT8ibiI6ZTw9LjkqdFswXSsu MSp0WzFdPyJzIjoibnMifShkLGUpO20mJihvLmludGVydmFsPWxbYV0sby5pbnRlcnZhbFBp eD1kLG8ucmVnaW9uPW0pfX1pZih0Lm9yZGluYWwmJiFvLnJlZ2lvbil7dmFyIGc9dC51bml0 VGlja3ZhbHMseT10LnVuaXRUb1BhZGRlZFB4LmludmVydChlKTtmb3Iocj0wO3I8Zy5sZW5n dGg7cisrKXt2YXIgeD1bLjI1KmdbTWF0aC5tYXgoci0xLDApXSsuNzUqZ1tyXSwuMjUqZ1tN YXRoLm1pbihyKzEsZy5sZW5ndGgtMSldKy43NSpnW3JdXTtpZih5Pj14WzBdJiZ5PD14WzFd KXtvLmNsaWNrYWJsZU9yZGluYWxSYW5nZT14O2JyZWFrfX19cmV0dXJuIG99ZnVuY3Rpb24g dyh0LGUpe2kuZXZlbnQuc291cmNlRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIHI9ZS5o ZWlnaHQtaS5tb3VzZSh0KVsxXS0yKm4udmVydGljYWxQYWRkaW5nLGE9ZS5icnVzaC5zdmdC cnVzaDthLndhc0RyYWdnZWQ9ITAsYS5fZHJhZ2dpbmc9ITAsYS5ncmFiYmluZ0Jhcj9hLm5l d0V4dGVudD1bci1hLmdyYWJQb2ludCxyK2EuYmFyTGVuZ3RoLWEuZ3JhYlBvaW50XS5tYXAo ZS51bml0VG9QYWRkZWRQeC5pbnZlcnQpOmEubmV3RXh0ZW50PVthLnN0YXJ0RXh0ZW50LGUu dW5pdFRvUGFkZGVkUHguaW52ZXJ0KHIpXS5zb3J0KHMpLGUuYnJ1c2guZmlsdGVyU3BlY2lm aWVkPSEwLGEuZXh0ZW50PWEuc3RheWluZ0ludGVydmFscy5jb25jYXQoW2EubmV3RXh0ZW50 XSksYS5icnVzaENhbGxiYWNrKGUpLGIodC5wYXJlbnROb2RlKX1mdW5jdGlvbiBUKHQsZSl7 dmFyIHI9XyhlLGUuaGVpZ2h0LWkubW91c2UodClbMV0tMipuLnZlcnRpY2FsUGFkZGluZyks YT0iY3Jvc3NoYWlyIjtyLmNsaWNrYWJsZU9yZGluYWxSYW5nZT9hPSJwb2ludGVyIjpyLnJl Z2lvbiYmKGE9ci5yZWdpb24rIi1yZXNpemUiKSxpLnNlbGVjdChkb2N1bWVudC5ib2R5KS5z dHlsZSgiY3Vyc29yIixhKX1mdW5jdGlvbiBrKHQpe3Qub24oIm1vdXNlbW92ZSIsKGZ1bmN0 aW9uKHQpe2kuZXZlbnQucHJldmVudERlZmF1bHQoKSx0LnBhcmVudC5pbkJydXNoRHJhZ3x8 VCh0aGlzLHQpfSkpLm9uKCJtb3VzZWxlYXZlIiwoZnVuY3Rpb24odCl7dC5wYXJlbnQuaW5C cnVzaERyYWd8fHkoKX0pKS5jYWxsKGkuYmVoYXZpb3IuZHJhZygpLm9uKCJkcmFnc3RhcnQi LChmdW5jdGlvbih0KXshZnVuY3Rpb24odCxlKXtpLmV2ZW50LnNvdXJjZUV2ZW50LnN0b3BQ cm9wYWdhdGlvbigpO3ZhciByPWUuaGVpZ2h0LWkubW91c2UodClbMV0tMipuLnZlcnRpY2Fs UGFkZGluZyxhPWUudW5pdFRvUGFkZGVkUHguaW52ZXJ0KHIpLG89ZS5icnVzaCxzPV8oZSxy KSxsPXMuaW50ZXJ2YWwsYz1vLnN2Z0JydXNoO2lmKGMud2FzRHJhZ2dlZD0hMSxjLmdyYWJi aW5nQmFyPSJucyI9PT1zLnJlZ2lvbixjLmdyYWJiaW5nQmFyKXt2YXIgdT1sLm1hcChlLnVu aXRUb1BhZGRlZFB4KTtjLmdyYWJQb2ludD1yLXVbMF0tbi52ZXJ0aWNhbFBhZGRpbmcsYy5i YXJMZW5ndGg9dVsxXS11WzBdfWMuY2xpY2thYmxlT3JkaW5hbFJhbmdlPXMuY2xpY2thYmxl T3JkaW5hbFJhbmdlLGMuc3RheWluZ0ludGVydmFscz1lLm11bHRpc2VsZWN0JiZvLmZpbHRl clNwZWNpZmllZD9vLmZpbHRlci5nZXRDb25zb2xpZGF0ZWQoKTpbXSxsJiYoYy5zdGF5aW5n SW50ZXJ2YWxzPWMuc3RheWluZ0ludGVydmFscy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVy biB0WzBdIT09bFswXSYmdFsxXSE9PWxbMV19KSkpLGMuc3RhcnRFeHRlbnQ9cy5yZWdpb24/ bFsicyI9PT1zLnJlZ2lvbj8xOjBdOmEsZS5wYXJlbnQuaW5CcnVzaERyYWc9ITAsYy5icnVz aFN0YXJ0Q2FsbGJhY2soKX0odGhpcyx0KX0pKS5vbigiZHJhZyIsKGZ1bmN0aW9uKHQpe3co dGhpcyx0KX0pKS5vbigiZHJhZ2VuZCIsKGZ1bmN0aW9uKHQpeyFmdW5jdGlvbih0LGUpe3Zh ciByPWUuYnJ1c2gsbj1yLmZpbHRlcixhPXIuc3ZnQnJ1c2g7YS5fZHJhZ2dpbmd8fChUKHQs ZSksdyh0LGUpLGUuYnJ1c2guc3ZnQnJ1c2gud2FzRHJhZ2dlZD0hMSksYS5fZHJhZ2dpbmc9 ITEsaS5ldmVudC5zb3VyY2VFdmVudC5zdG9wUHJvcGFnYXRpb24oKTt2YXIgbz1hLmdyYWJi aW5nQmFyO2lmKGEuZ3JhYmJpbmdCYXI9ITEsYS5ncmFiTG9jYXRpb249dm9pZCAwLGUucGFy ZW50LmluQnJ1c2hEcmFnPSExLHkoKSwhYS53YXNEcmFnZ2VkKXJldHVybiBhLndhc0RyYWdn ZWQ9dm9pZCAwLGEuY2xpY2thYmxlT3JkaW5hbFJhbmdlP3IuZmlsdGVyU3BlY2lmaWVkJiZl Lm11bHRpc2VsZWN0P2EuZXh0ZW50LnB1c2goYS5jbGlja2FibGVPcmRpbmFsUmFuZ2UpOihh LmV4dGVudD1bYS5jbGlja2FibGVPcmRpbmFsUmFuZ2VdLHIuZmlsdGVyU3BlY2lmaWVkPSEw KTpvPyhhLmV4dGVudD1hLnN0YXlpbmdJbnRlcnZhbHMsMD09PWEuZXh0ZW50Lmxlbmd0aCYm TShyKSk6TShyKSxhLmJydXNoQ2FsbGJhY2soZSksYih0LnBhcmVudE5vZGUpLHZvaWQgYS5i cnVzaEVuZENhbGxiYWNrKHIuZmlsdGVyU3BlY2lmaWVkP24uZ2V0Q29uc29saWRhdGVkKCk6 W10pO3ZhciBzPWZ1bmN0aW9uKCl7bi5zZXQobi5nZXRDb25zb2xpZGF0ZWQoKSl9O2lmKGUu b3JkaW5hbCl7dmFyIGw9ZS51bml0VGlja3ZhbHM7bFtsLmxlbmd0aC0xXTxsWzBdJiZsLnJl dmVyc2UoKSxhLm5ld0V4dGVudD1bcCgwLGwsYS5uZXdFeHRlbnRbMF0sYS5zdGF5aW5nSW50 ZXJ2YWxzKSxwKDEsbCxhLm5ld0V4dGVudFsxXSxhLnN0YXlpbmdJbnRlcnZhbHMpXTt2YXIg Yz1hLm5ld0V4dGVudFsxXT5hLm5ld0V4dGVudFswXTthLmV4dGVudD1hLnN0YXlpbmdJbnRl cnZhbHMuY29uY2F0KGM/W2EubmV3RXh0ZW50XTpbXSksYS5leHRlbnQubGVuZ3RofHxNKHIp LGEuYnJ1c2hDYWxsYmFjayhlKSxjP2IodC5wYXJlbnROb2RlLHMpOihzKCksYih0LnBhcmVu dE5vZGUpKX1lbHNlIHMoKTthLmJydXNoRW5kQ2FsbGJhY2soci5maWx0ZXJTcGVjaWZpZWQ/ bi5nZXRDb25zb2xpZGF0ZWQoKTpbXSl9KHRoaXMsdCl9KSkpfWZ1bmN0aW9uIEEodCxlKXty ZXR1cm4gdFswXS1lWzBdfWZ1bmN0aW9uIE0odCl7dC5maWx0ZXJTcGVjaWZpZWQ9ITEsdC5z dmdCcnVzaC5leHRlbnQ9W1stMS8wLDEvMF1dfWZ1bmN0aW9uIFModCl7Zm9yKHZhciBlLHI9 dC5zbGljZSgpLG49W10saT1yLnNoaWZ0KCk7aTspe2ZvcihlPWkuc2xpY2UoKTsoaT1yLnNo aWZ0KCkpJiZpWzBdPD1lWzFdOyllWzFdPU1hdGgubWF4KGVbMV0saVsxXSk7bi5wdXNoKGUp fXJldHVybiAxPT09bi5sZW5ndGgmJm5bMF1bMF0+blswXVsxXSYmKG49W10pLG59ZS5leHBv cnRzPXttYWtlQnJ1c2g6ZnVuY3Rpb24odCxlLHIsbixpLGEpe3ZhciBvLGw9ZnVuY3Rpb24o KXt2YXIgdCxlLHI9W107cmV0dXJue3NldDpmdW5jdGlvbihuKXsxPT09KHI9bi5tYXAoKGZ1 bmN0aW9uKHQpe3JldHVybiB0LnNsaWNlKCkuc29ydChzKX0pKS5zb3J0KEEpKS5sZW5ndGgm JnJbMF1bMF09PT0tMS8wJiZyWzBdWzFdPT09MS8wJiYocj1bWzAsLTFdXSksdD1TKHIpLGU9 ci5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuW01hdGgubWluKHRbMF0sZVswXSksTWF0 aC5tYXgodFsxXSxlWzFdKV19KSxbMS8wLC0xLzBdKX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJu IHIuc2xpY2UoKX0sZ2V0Q29uc29saWRhdGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHR9LGdldEJv dW5kczpmdW5jdGlvbigpe3JldHVybiBlfX19KCk7cmV0dXJuIGwuc2V0KHIpLHtmaWx0ZXI6 bCxmaWx0ZXJTcGVjaWZpZWQ6ZSxzdmdCcnVzaDp7ZXh0ZW50OltdLGJydXNoU3RhcnRDYWxs YmFjazpuLGJydXNoQ2FsbGJhY2s6KG89aSxmdW5jdGlvbih0KXt2YXIgZT10LmJydXNoLHI9 ZnVuY3Rpb24odCl7cmV0dXJuIHQuc3ZnQnJ1c2guZXh0ZW50Lm1hcCgoZnVuY3Rpb24odCl7 cmV0dXJuIHQuc2xpY2UoKX0pKX0oZSkuc2xpY2UoKTtlLmZpbHRlci5zZXQociksbygpfSks YnJ1c2hFbmRDYWxsYmFjazphfX19LGVuc3VyZUF4aXNCcnVzaDpmdW5jdGlvbih0LGUpe3Zh ciByPXQuc2VsZWN0QWxsKCIuIituLmNuLmF4aXNCcnVzaCkuZGF0YShvLGEpO3IuZW50ZXIo KS5hcHBlbmQoImciKS5jbGFzc2VkKG4uY24uYXhpc0JydXNoLCEwKSxmdW5jdGlvbih0LGUp e3ZhciByPXQuc2VsZWN0QWxsKCIuYmFja2dyb3VuZCIpLmRhdGEobyk7ci5lbnRlcigpLmFw cGVuZCgicmVjdCIpLmNsYXNzZWQoImJhY2tncm91bmQiLCEwKS5jYWxsKGQpLmNhbGwobSku c3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYXV0byIpLmF0dHIoInRyYW5zZm9ybSIsbCgwLG4u dmVydGljYWxQYWRkaW5nKSksci5jYWxsKGspLmF0dHIoImhlaWdodCIsKGZ1bmN0aW9uKHQp e3JldHVybiB0LmhlaWdodC1uLnZlcnRpY2FsUGFkZGluZ30pKTt2YXIgaT10LnNlbGVjdEFs bCgiLmhpZ2hsaWdodC1zaGFkb3ciKS5kYXRhKG8pO2kuZW50ZXIoKS5hcHBlbmQoImxpbmUi KS5jbGFzc2VkKCJoaWdobGlnaHQtc2hhZG93IiwhMCkuYXR0cigieCIsLW4uYmFyLndpZHRo LzIpLmF0dHIoInN0cm9rZS13aWR0aCIsbi5iYXIud2lkdGgrbi5iYXIuc3Ryb2tlV2lkdGgp LmF0dHIoInN0cm9rZSIsZSkuYXR0cigib3BhY2l0eSIsbi5iYXIuc3Ryb2tlT3BhY2l0eSku YXR0cigic3Ryb2tlLWxpbmVjYXAiLCJidXR0IiksaS5hdHRyKCJ5MSIsKGZ1bmN0aW9uKHQp e3JldHVybiB0LmhlaWdodH0pKS5jYWxsKHgpO3ZhciBhPXQuc2VsZWN0QWxsKCIuaGlnaGxp Z2h0IikuZGF0YShvKTthLmVudGVyKCkuYXBwZW5kKCJsaW5lIikuY2xhc3NlZCgiaGlnaGxp Z2h0IiwhMCkuYXR0cigieCIsLW4uYmFyLndpZHRoLzIpLmF0dHIoInN0cm9rZS13aWR0aCIs bi5iYXIud2lkdGgtbi5iYXIuc3Ryb2tlV2lkdGgpLmF0dHIoInN0cm9rZSIsbi5iYXIuZmls bENvbG9yKS5hdHRyKCJvcGFjaXR5IixuLmJhci5maWxsT3BhY2l0eSkuYXR0cigic3Ryb2tl LWxpbmVjYXAiLCJidXR0IiksYS5hdHRyKCJ5MSIsKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmhl aWdodH0pKS5jYWxsKHgpfShyLGUpfSxjbGVhblJhbmdlczpmdW5jdGlvbih0LGUpe2lmKEFy cmF5LmlzQXJyYXkodFswXSk/KHQ9dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnNvcnQo cyl9KSksdD1lLm11bHRpc2VsZWN0P1ModC5zb3J0KEEpKTpbdFswXV0pOnQ9W3Quc29ydChz KV0sZS50aWNrdmFscyl7dmFyIHI9ZS50aWNrdmFscy5zbGljZSgpLnNvcnQocyk7aWYoISh0 PXQubWFwKChmdW5jdGlvbih0KXt2YXIgZT1bcCgwLHIsdFswXSxbXSkscCgxLHIsdFsxXSxb XSldO2lmKGVbMV0+ZVswXSlyZXR1cm4gZX0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVy biB0fSkpKS5sZW5ndGgpcmV0dXJufXJldHVybiB0Lmxlbmd0aD4xP3Q6dFswXX19fSx7Ii4u Ly4uL2xpYiI6NTAzLCIuLi8uLi9saWIvZ3VwIjo1MDAsIi4vY29uc3RhbnRzIjo4OTMsIkBw bG90bHkvZDMiOjU4fV0sODkwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhw b3J0cz17YXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIu L2RlZmF1bHRzIiksY2FsYzp0KCIuL2NhbGMiKSxjb2xvcmJhcjp7Y29udGFpbmVyOiJsaW5l IixtaW46ImNtaW4iLG1heDoiY21heCJ9LG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJwYXJj b29yZHMiLGJhc2VQbG90TW9kdWxlOnQoIi4vYmFzZV9wbG90IiksY2F0ZWdvcmllczpbImds IiwicmVnbCIsIm5vT3BhY2l0eSIsIm5vSG92ZXIiXSxtZXRhOnt9fX0seyIuL2F0dHJpYnV0 ZXMiOjg4OCwiLi9iYXNlX3Bsb3QiOjg5MSwiLi9jYWxjIjo4OTIsIi4vZGVmYXVsdHMiOjg5 NH1dLDg5MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJAcGxvdGx5 L2QzIiksaT10KCIuLi8uLi9wbG90cy9nZXRfZGF0YSIpLmdldE1vZHVsZUNhbGNEYXRhLGE9 dCgiLi9wbG90Iiksbz10KCIuLi8uLi9jb25zdGFudHMveG1sbnNfbmFtZXNwYWNlcyIpO3Iu bmFtZT0icGFyY29vcmRzIixyLnBsb3Q9ZnVuY3Rpb24odCl7dmFyIGU9aSh0LmNhbGNkYXRh LCJwYXJjb29yZHMiKVswXTtlLmxlbmd0aCYmYSh0LGUpfSxyLmNsZWFuPWZ1bmN0aW9uKHQs ZSxyLG4pe3ZhciBpPW4uX2hhcyYmbi5faGFzKCJwYXJjb29yZHMiKSxhPWUuX2hhcyYmZS5f aGFzKCJwYXJjb29yZHMiKTtpJiYhYSYmKG4uX3BhcGVyZGl2LnNlbGVjdEFsbCgiLnBhcmNv b3JkcyIpLnJlbW92ZSgpLG4uX2dsaW1hZ2VzLnNlbGVjdEFsbCgiKiIpLnJlbW92ZSgpKX0s ci50b1NWRz1mdW5jdGlvbih0KXt2YXIgZT10Ll9mdWxsTGF5b3V0Ll9nbGltYWdlcyxyPW4u c2VsZWN0KHQpLnNlbGVjdEFsbCgiLnN2Zy1jb250YWluZXIiKTtyLmZpbHRlcigoZnVuY3Rp b24odCxlKXtyZXR1cm4gZT09PXIuc2l6ZSgpLTF9KSkuc2VsZWN0QWxsKCIuZ2wtY2FudmFz LWNvbnRleHQsIC5nbC1jYW52YXMtZm9jdXMiKS5lYWNoKChmdW5jdGlvbigpe3ZhciB0PXRo aXMudG9EYXRhVVJMKCJpbWFnZS9wbmciKTtlLmFwcGVuZCgic3ZnOmltYWdlIikuYXR0cih7 eG1sbnM6by5zdmcsInhsaW5rOmhyZWYiOnQscHJlc2VydmVBc3BlY3RSYXRpbzoibm9uZSIs eDowLHk6MCx3aWR0aDp0aGlzLnN0eWxlLndpZHRoLGhlaWdodDp0aGlzLnN0eWxlLmhlaWdo dH0pfSkpLHdpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe24uc2VsZWN0QWxsKCIjZmls dGVyQmFyUGF0dGVybiIpLmF0dHIoImlkIiwiZmlsdGVyQmFyUGF0dGVybiIpfSksNjApfX0s eyIuLi8uLi9jb25zdGFudHMveG1sbnNfbmFtZXNwYWNlcyI6NDgwLCIuLi8uLi9wbG90cy9n ZXRfZGF0YSI6NTkzLCIuL3Bsb3QiOjkwMCwiQHBsb3RseS9kMyI6NTh9XSw4OTI6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIikuaXNBcnJheU9y VHlwZWRBcnJheSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSIpLGE9dCgiLi4v Li4vbGliL2d1cCIpLndyYXA7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbztyZXR1 cm4gaS5oYXNDb2xvcnNjYWxlKGUsImxpbmUiKSYmbihlLmxpbmUuY29sb3IpPyhyPWUubGlu ZS5jb2xvcixvPWkuZXh0cmFjdE9wdHMoZS5saW5lKS5jb2xvcnNjYWxlLGkuY2FsYyh0LGUs e3ZhbHM6cixjb250YWluZXJTdHI6ImxpbmUiLGNMZXR0ZXI6ImMifSkpOihyPWZ1bmN0aW9u KHQpe2Zvcih2YXIgZT1uZXcgQXJyYXkodCkscj0wO3I8dDtyKyspZVtyXT0uNTtyZXR1cm4g ZX0oZS5fbGVuZ3RoKSxvPVtbMCxlLmxpbmUuY29sb3JdLFsxLGUubGluZS5jb2xvcl1dKSxh KHtsaW5lQ29sb3I6cixjc2NhbGU6b30pfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2Nh bGUiOjM3OCwiLi4vLi4vbGliIjo1MDMsIi4uLy4uL2xpYi9ndXAiOjUwMH1dLDg5MzpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e21heERpbWVuc2lvbkNvdW50 OjYwLG92ZXJkcmFnOjQ1LHZlcnRpY2FsUGFkZGluZzoyLHRpY2tEaXN0YW5jZTo1MCxjYW52 YXNQaXhlbFJhdGlvOjEsYmxvY2tMaW5lQ291bnQ6NWUzLGxheWVyczpbImNvbnRleHRMaW5l TGF5ZXIiLCJmb2N1c0xpbmVMYXllciIsInBpY2tMaW5lTGF5ZXIiXSxheGlzVGl0bGVPZmZz ZXQ6MjgsYXhpc0V4dGVudE9mZnNldDoxMCxkZXNlbGVjdGVkTGluZUNvbG9yOiIjNzc3Iixi YXI6e3dpZHRoOjQsY2FwdHVyZVdpZHRoOjEwLGZpbGxDb2xvcjoibWFnZW50YSIsZmlsbE9w YWNpdHk6MSxzbmFwRHVyYXRpb246MTUwLHNuYXBSYXRpbzouMjUsc25hcENsb3NlOi4wMSxz dHJva2VPcGFjaXR5OjEsc3Ryb2tlV2lkdGg6MSxoYW5kbGVIZWlnaHQ6OCxoYW5kbGVPcGFj aXR5OjEsaGFuZGxlT3ZlcmxhcDowfSxjbjp7YXhpc0V4dGVudFRleHQ6ImF4aXMtZXh0ZW50 LXRleHQiLHBhcmNvb3Jkc0xpbmVMYXllcnM6InBhcmNvb3Jkcy1saW5lLWxheWVycyIscGFy Y29vcmRzTGluZUxheWVyOiJwYXJjb29yZHMtbGluZXMiLHBhcmNvb3JkczoicGFyY29vcmRz IixwYXJjb29yZHNDb250cm9sVmlldzoicGFyY29vcmRzLWNvbnRyb2wtdmlldyIseUF4aXM6 InktYXhpcyIsYXhpc092ZXJsYXlzOiJheGlzLW92ZXJsYXlzIixheGlzOiJheGlzIixheGlz SGVhZGluZzoiYXhpcy1oZWFkaW5nIixheGlzVGl0bGU6ImF4aXMtdGl0bGUiLGF4aXNFeHRl bnQ6ImF4aXMtZXh0ZW50IixheGlzRXh0ZW50VG9wOiJheGlzLWV4dGVudC10b3AiLGF4aXNF eHRlbnRUb3BUZXh0OiJheGlzLWV4dGVudC10b3AtdGV4dCIsYXhpc0V4dGVudEJvdHRvbToi YXhpcy1leHRlbnQtYm90dG9tIixheGlzRXh0ZW50Qm90dG9tVGV4dDoiYXhpcy1leHRlbnQt Ym90dG9tLXRleHQiLGF4aXNCcnVzaDoiYXhpcy1icnVzaCJ9LGlkOntmaWx0ZXJCYXJQYXR0 ZXJuOiJmaWx0ZXItYmFyLXBhdHRlcm4ifX19LHt9XSw4OTQ6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9jb21wb25lbnRz L2NvbG9yc2NhbGUvaGVscGVycyIpLmhhc0NvbG9yc2NhbGUsYT10KCIuLi8uLi9jb21wb25l bnRzL2NvbG9yc2NhbGUvZGVmYXVsdHMiKSxvPXQoIi4uLy4uL3Bsb3RzL2RvbWFpbiIpLmRl ZmF1bHRzLHM9dCgiLi4vLi4vcGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIiksbD10 KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGM9dCgiLi9hdHRyaWJ1dGVzIiksdT10 KCIuL2F4aXNicnVzaCIpLGY9dCgiLi9jb25zdGFudHMiKS5tYXhEaW1lbnNpb25Db3VudCxo PXQoIi4vbWVyZ2VfbGVuZ3RoIik7ZnVuY3Rpb24gcCh0LGUscixpKXtmdW5jdGlvbiBhKHIs aSl7cmV0dXJuIG4uY29lcmNlKHQsZSxjLmRpbWVuc2lvbnMscixpKX12YXIgbz1hKCJ2YWx1 ZXMiKSxzPWEoInZpc2libGUiKTtpZihvJiZvLmxlbmd0aHx8KHM9ZS52aXNpYmxlPSExKSxz KXthKCJsYWJlbCIpLGEoInRpY2t2YWxzIiksYSgidGlja3RleHQiKSxhKCJ0aWNrZm9ybWF0 Iik7dmFyIGY9YSgicmFuZ2UiKTtlLl9heD17X2lkOiJ5Iix0eXBlOiJsaW5lYXIiLHNob3dl eHBvbmVudDoiYWxsIixleHBvbmVudGZvcm1hdDoiQiIscmFuZ2U6Zn0sbC5zZXRDb252ZXJ0 KGUuX2F4LGkubGF5b3V0KSxhKCJtdWx0aXNlbGVjdCIpO3ZhciBoPWEoImNvbnN0cmFpbnRy YW5nZSIpO2gmJihlLmNvbnN0cmFpbnRyYW5nZT11LmNsZWFuUmFuZ2VzKGgsZSkpfX1lLmV4 cG9ydHM9ZnVuY3Rpb24odCxlLHIsbCl7ZnVuY3Rpb24gdShyLGkpe3JldHVybiBuLmNvZXJj ZSh0LGUsYyxyLGkpfXZhciBkPXQuZGltZW5zaW9ucztBcnJheS5pc0FycmF5KGQpJiZkLmxl bmd0aD5mJiYobi5sb2coInBhcmNvb3JkcyB0cmFjZXMgc3VwcG9ydCB1cCB0byAiK2YrIiBk aW1lbnNpb25zIGF0IHRoZSBtb21lbnQiKSxkLnNwbGljZShmKSk7dmFyIG09cyh0LGUse25h bWU6ImRpbWVuc2lvbnMiLGxheW91dDpsLGhhbmRsZUl0ZW1EZWZhdWx0czpwfSksZz1mdW5j dGlvbih0LGUscixvLHMpe3ZhciBsPXMoImxpbmUuY29sb3IiLHIpO2lmKGkodCwibGluZSIp JiZuLmlzQXJyYXlPclR5cGVkQXJyYXkobCkpe2lmKGwubGVuZ3RoKXJldHVybiBzKCJsaW5l LmNvbG9yc2NhbGUiKSxhKHQsZSxvLHMse3ByZWZpeDoibGluZS4iLGNMZXR0ZXI6ImMifSks bC5sZW5ndGg7ZS5saW5lLmNvbG9yPXJ9cmV0dXJuIDEvMH0odCxlLHIsbCx1KTtvKGUsbCx1 KSxBcnJheS5pc0FycmF5KG0pJiZtLmxlbmd0aHx8KGUudmlzaWJsZT0hMSksaChlLG0sInZh bHVlcyIsZyk7dmFyIHY9e2ZhbWlseTpsLmZvbnQuZmFtaWx5LHNpemU6TWF0aC5yb3VuZChs LmZvbnQuc2l6ZS8xLjIpLGNvbG9yOmwuZm9udC5jb2xvcn07bi5jb2VyY2VGb250KHUsImxh YmVsZm9udCIsdiksbi5jb2VyY2VGb250KHUsInRpY2tmb250Iix2KSxuLmNvZXJjZUZvbnQo dSwicmFuZ2Vmb250Iix2KSx1KCJsYWJlbGFuZ2xlIiksdSgibGFiZWxzaWRlIil9fSx7Ii4u Ly4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyI6Mzc2LCIuLi8uLi9jb21wb25l bnRzL2NvbG9yc2NhbGUvaGVscGVycyI6Mzc3LCIuLi8uLi9saWIiOjUwMywiLi4vLi4vcGxv dHMvYXJyYXlfY29udGFpbmVyX2RlZmF1bHRzIjo1NDksIi4uLy4uL3Bsb3RzL2NhcnRlc2lh bi9heGVzIjo1NTQsIi4uLy4uL3Bsb3RzL2RvbWFpbiI6NTg0LCIuL2F0dHJpYnV0ZXMiOjg4 OCwiLi9heGlzYnJ1c2giOjg4OSwiLi9jb25zdGFudHMiOjg5MywiLi9tZXJnZV9sZW5ndGgi Ojg5OH1dLDg5NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8u Li9saWIiKS5pc1R5cGVkQXJyYXk7ci5jb252ZXJ0VHlwZWRBcnJheT1mdW5jdGlvbih0KXty ZXR1cm4gbih0KT9BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KTp0fSxyLmlzT3JkaW5h bD1mdW5jdGlvbih0KXtyZXR1cm4hIXQudGlja3ZhbHN9LHIuaXNWaXNpYmxlPWZ1bmN0aW9u KHQpe3JldHVybiB0LnZpc2libGV8fCEoInZpc2libGUiaW4gdCl9fSx7Ii4uLy4uL2xpYiI6 NTAzfV0sODk2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vYmFz ZV9pbmRleCIpO24ucGxvdD10KCIuL3Bsb3QiKSxlLmV4cG9ydHM9bn0seyIuL2Jhc2VfaW5k ZXgiOjg5MCwiLi9wbG90Ijo5MDB9XSw4OTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiZ2xzbGlmeSIpLGk9bihbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNk ZWZpbmUgR0xTTElGWSAxXG5cbnZhcnlpbmcgdmVjNCBmcmFnQ29sb3I7XG5cbmF0dHJpYnV0 ZSB2ZWM0IHAwMV8wNCwgcDA1XzA4LCBwMDlfMTIsIHAxM18xNixcbiAgICAgICAgICAgICAg IHAxN18yMCwgcDIxXzI0LCBwMjVfMjgsIHAyOV8zMixcbiAgICAgICAgICAgICAgIHAzM18z NiwgcDM3XzQwLCBwNDFfNDQsIHA0NV80OCxcbiAgICAgICAgICAgICAgIHA0OV81MiwgcDUz XzU2LCBwNTdfNjAsIGNvbG9ycztcblxudW5pZm9ybSBtYXQ0IGRpbTBBLCBkaW0xQSwgZGlt MEIsIGRpbTFCLCBkaW0wQywgZGltMUMsIGRpbTBELCBkaW0xRCxcbiAgICAgICAgICAgICBs b0EsIGhpQSwgbG9CLCBoaUIsIGxvQywgaGlDLCBsb0QsIGhpRDtcblxudW5pZm9ybSB2ZWMy IHJlc29sdXRpb24sIHZpZXdCb3hQb3MsIHZpZXdCb3hTaXplO1xudW5pZm9ybSBmbG9hdCBt YXNrSGVpZ2h0O1xudW5pZm9ybSBmbG9hdCBkcndMYXllcjsgLy8gMDogY29udGV4dCwgMTog Zm9jdXMsIDI6IHBpY2tcbnVuaWZvcm0gdmVjNCBjb250ZXh0Q29sb3I7XG51bmlmb3JtIHNh bXBsZXIyRCBtYXNrVGV4dHVyZSwgcGFsZXR0ZTtcblxuYm9vbCBpc1BpY2sgICAgPSAoZHJ3 TGF5ZXIgPiAxLjUpO1xuYm9vbCBpc0NvbnRleHQgPSAoZHJ3TGF5ZXIgPCAwLjUpO1xuXG5j b25zdCB2ZWM0IFpFUk9TID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApO1xuY29uc3QgdmVj NCBVTklUUyA9IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTtcblxuZmxvYXQgdmFsKG1hdDQg cCwgbWF0NCB2KSB7XG4gICAgcmV0dXJuIGRvdChtYXRyaXhDb21wTXVsdChwLCB2KSAqIFVO SVRTLCBVTklUUyk7XG59XG5cbmZsb2F0IGF4aXNZKGZsb2F0IHJhdGlvLCBtYXQ0IEEsIG1h dDQgQiwgbWF0NCBDLCBtYXQ0IEQpIHtcbiAgICBmbG9hdCB5MSA9IHZhbChBLCBkaW0wQSkg KyB2YWwoQiwgZGltMEIpICsgdmFsKEMsIGRpbTBDKSArIHZhbChELCBkaW0wRCk7XG4gICAg ZmxvYXQgeTIgPSB2YWwoQSwgZGltMUEpICsgdmFsKEIsIGRpbTFCKSArIHZhbChDLCBkaW0x QykgKyB2YWwoRCwgZGltMUQpO1xuICAgIHJldHVybiB5MSAqICgxLjAgLSByYXRpbykgKyB5 MiAqIHJhdGlvO1xufVxuXG5pbnQgaU1vZChpbnQgYSwgaW50IGIpIHtcbiAgICByZXR1cm4g YSAtIGIgKiAoYSAvIGIpO1xufVxuXG5ib29sIGZPdXRzaWRlKGZsb2F0IHAsIGZsb2F0IGxv LCBmbG9hdCBoaSkge1xuICAgIHJldHVybiAobG8gPCBoaSkgJiYgKGxvID4gcCB8fCBwID4g aGkpO1xufVxuXG5ib29sIHZPdXRzaWRlKHZlYzQgcCwgdmVjNCBsbywgdmVjNCBoaSkge1xu ICAgIHJldHVybiAoXG4gICAgICAgIGZPdXRzaWRlKHBbMF0sIGxvWzBdLCBoaVswXSkgfHxc biAgICAgICAgZk91dHNpZGUocFsxXSwgbG9bMV0sIGhpWzFdKSB8fFxuICAgICAgICBmT3V0 c2lkZShwWzJdLCBsb1syXSwgaGlbMl0pIHx8XG4gICAgICAgIGZPdXRzaWRlKHBbM10sIGxv WzNdLCBoaVszXSlcbiAgICApO1xufVxuXG5ib29sIG1PdXRzaWRlKG1hdDQgcCwgbWF0NCBs bywgbWF0NCBoaSkge1xuICAgIHJldHVybiAoXG4gICAgICAgIHZPdXRzaWRlKHBbMF0sIGxv WzBdLCBoaVswXSkgfHxcbiAgICAgICAgdk91dHNpZGUocFsxXSwgbG9bMV0sIGhpWzFdKSB8 fFxuICAgICAgICB2T3V0c2lkZShwWzJdLCBsb1syXSwgaGlbMl0pIHx8XG4gICAgICAgIHZP dXRzaWRlKHBbM10sIGxvWzNdLCBoaVszXSlcbiAgICApO1xufVxuXG5ib29sIG91dHNpZGVC b3VuZGluZ0JveChtYXQ0IEEsIG1hdDQgQiwgbWF0NCBDLCBtYXQ0IEQpIHtcbiAgICByZXR1 cm4gbU91dHNpZGUoQSwgbG9BLCBoaUEpIHx8XG4gICAgICAgICAgIG1PdXRzaWRlKEIsIGxv QiwgaGlCKSB8fFxuICAgICAgICAgICBtT3V0c2lkZShDLCBsb0MsIGhpQykgfHxcbiAgICAg ICAgICAgbU91dHNpZGUoRCwgbG9ELCBoaUQpO1xufVxuXG5ib29sIG91dHNpZGVSYXN0ZXJN YXNrKG1hdDQgQSwgbWF0NCBCLCBtYXQ0IEMsIG1hdDQgRCkge1xuICAgIG1hdDQgcG50c1s0 XTtcbiAgICBwbnRzWzBdID0gQTtcbiAgICBwbnRzWzFdID0gQjtcbiAgICBwbnRzWzJdID0g QztcbiAgICBwbnRzWzNdID0gRDtcblxuICAgIGZvcihpbnQgaSA9IDA7IGkgPCA0OyArK2kp IHtcbiAgICAgICAgZm9yKGludCBqID0gMDsgaiA8IDQ7ICsraikge1xuICAgICAgICAgICAg Zm9yKGludCBrID0gMDsgayA8IDQ7ICsraykge1xuICAgICAgICAgICAgICAgIGlmKDAgPT0g aU1vZChcbiAgICAgICAgICAgICAgICAgICAgaW50KDI1NS4wICogdGV4dHVyZTJEKG1hc2tU ZXh0dXJlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmVjMihcbiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZmxvYXQoaSAqIDIgKyBqIC8gMikgKyAwLjUpIC8gOC4wLFxuICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChwbnRzW2ldW2pdW2tdICogKG1hc2tIZWlnaHQg LSAxLjApICsgMS4wKSAvIG1hc2tIZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICkp WzNdXG4gICAgICAgICAgICAgICAgICAgICkgLyBpbnQocG93KDIuMCwgZmxvYXQoaU1vZChq ICogNCArIGssIDgpKSkpLFxuICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAg ICAgKSkgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4g ICAgcmV0dXJuIGZhbHNlO1xufVxuXG52ZWM0IHBvc2l0aW9uKGJvb2wgaXNDb250ZXh0LCBm bG9hdCB2LCBtYXQ0IEEsIG1hdDQgQiwgbWF0NCBDLCBtYXQ0IEQpIHtcbiAgICBmbG9hdCB4 ID0gMC41ICogc2lnbih2KSArIDAuNTtcbiAgICBmbG9hdCB5ID0gYXhpc1koeCwgQSwgQiwg QywgRCk7XG4gICAgZmxvYXQgeiA9IDEuMCAtIGFicyh2KTtcblxuICAgIHogKz0gaXNDb250 ZXh0ID8gMC4wIDogMi4wICogZmxvYXQoXG4gICAgICAgIG91dHNpZGVCb3VuZGluZ0JveChB LCBCLCBDLCBEKSB8fFxuICAgICAgICBvdXRzaWRlUmFzdGVyTWFzayhBLCBCLCBDLCBEKVxu ICAgICk7XG5cbiAgICByZXR1cm4gdmVjNChcbiAgICAgICAgMi4wICogKHZlYzIoeCwgeSkg KiB2aWV3Qm94U2l6ZSArIHZpZXdCb3hQb3MpIC8gcmVzb2x1dGlvbiAtIDEuMCxcbiAgICAg ICAgeixcbiAgICAgICAgMS4wXG4gICAgKTtcbn1cblxudm9pZCBtYWluKCkge1xuICAgIG1h dDQgQSA9IG1hdDQocDAxXzA0LCBwMDVfMDgsIHAwOV8xMiwgcDEzXzE2KTtcbiAgICBtYXQ0 IEIgPSBtYXQ0KHAxN18yMCwgcDIxXzI0LCBwMjVfMjgsIHAyOV8zMik7XG4gICAgbWF0NCBD ID0gbWF0NChwMzNfMzYsIHAzN180MCwgcDQxXzQ0LCBwNDVfNDgpO1xuICAgIG1hdDQgRCA9 IG1hdDQocDQ5XzUyLCBwNTNfNTYsIHA1N182MCwgWkVST1MpO1xuXG4gICAgZmxvYXQgdiA9 IGNvbG9yc1szXTtcblxuICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb24oaXNDb250ZXh0LCB2 LCBBLCBCLCBDLCBEKTtcblxuICAgIGZyYWdDb2xvciA9XG4gICAgICAgIGlzQ29udGV4dCA/ IHZlYzQoY29udGV4dENvbG9yKSA6XG4gICAgICAgIGlzUGljayA/IHZlYzQoY29sb3JzLnJn YiwgMS4wKSA6IHRleHR1cmUyRChwYWxldHRlLCB2ZWMyKGFicyh2KSwgMC41KSk7XG59XG4i XSksYT1uKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxu dmFyeWluZyB2ZWM0IGZyYWdDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICAgIGdsX0ZyYWdD b2xvciA9IGZyYWdDb2xvcjtcbn1cbiJdKSxvPXQoIi4vY29uc3RhbnRzIikubWF4RGltZW5z aW9uQ291bnQscz10KCIuLi8uLi9saWIiKSxsPW5ldyBVaW50OEFycmF5KDQpLGM9bmV3IFVp bnQ4QXJyYXkoNCksdT17c2hhcGU6WzI1NiwxXSxmb3JtYXQ6InJnYmEiLHR5cGU6InVpbnQ4 IixtYWc6Im5lYXJlc3QiLG1pbjoibmVhcmVzdCJ9O2Z1bmN0aW9uIGYodCxlLHIsbixpKXt2 YXIgYT10Ll9nbDthLmVuYWJsZShhLlNDSVNTT1JfVEVTVCksYS5zY2lzc29yKGUscixuLGkp LHQuY2xlYXIoe2NvbG9yOlswLDAsMCwwXSxkZXB0aDoxfSl9ZnVuY3Rpb24gaCh0LGUscixu LGksYSl7dmFyIG89YS5rZXk7ci5kcmF3Q29tcGxldGVkfHwoIWZ1bmN0aW9uKHQpe3QucmVh ZCh7eDowLHk6MCx3aWR0aDoxLGhlaWdodDoxLGRhdGE6bH0pfSh0KSxyLmRyYXdDb21wbGV0 ZWQ9ITApLGZ1bmN0aW9uIHMobCl7dmFyIGM9TWF0aC5taW4obixpLWwqbik7MD09PWwmJih3 aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUoci5jdXJyZW50UmFmc1tvXSksZGVsZXRlIHIu Y3VycmVudFJhZnNbb10sZih0LGEuc2Npc3NvclgsYS5zY2lzc29yWSxhLnNjaXNzb3JXaWR0 aCxhLnZpZXdCb3hTaXplWzFdKSksci5jbGVhck9ubHl8fChhLmNvdW50PTIqYyxhLm9mZnNl dD0yKmwqbixlKGEpLGwqbitjPGkmJihyLmN1cnJlbnRSYWZzW29dPXdpbmRvdy5yZXF1ZXN0 QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7cyhsKzEpfSkpKSxyLmRyYXdDb21wbGV0ZWQ9 ITEpfSgwKX1mdW5jdGlvbiBwKHQsZSl7Zm9yKHZhciByPW5ldyBBcnJheSgyNTYpLG49MDtu PDI1NjtuKyspcltuXT10KG4vMjU1KS5jb25jYXQoZSk7cmV0dXJuIHJ9ZnVuY3Rpb24gZCh0 LGUpe3JldHVybih0Pj4+OCplKSUyNTYvMjU1fWZ1bmN0aW9uIG0odCxlLHIpe2Zvcih2YXIg bj1uZXcgQXJyYXkoOCplKSxpPTAsYT0wO2E8ZTthKyspZm9yKHZhciBvPTA7bzwyO28rKylm b3IodmFyIHM9MDtzPDQ7cysrKXt2YXIgbD00KnQrcyxjPXJbNjQqYStsXTs2Mz09PWwmJjA9 PT1vJiYoYyo9LTEpLG5baSsrXT1jfXJldHVybiBufWZ1bmN0aW9uIGcodCl7dmFyIGU9IjAi K3Q7cmV0dXJuIGUuc3Vic3RyKGUubGVuZ3RoLTIpfWZ1bmN0aW9uIHYodCl7cmV0dXJuIHQ8 bz8icCIrZyh0KzEpKyJfIitnKHQrNCk6ImNvbG9ycyJ9ZnVuY3Rpb24geSh0LGUscixuLGks YSxvLGwsYyx1LGYsaCxwLGQpe2Zvcih2YXIgbT1bW10sW11dLGc9MDtnPDY0O2crKyltWzBd W2ddPWc9PT1pPzE6MCxtWzFdW2ddPWc9PT1hPzE6MDtvKj1kLGwqPWQsYyo9ZCx1Kj1kO3Zh ciB2PXQubGluZXMuY2FudmFzT3ZlcmRyYWcqZCx5PXQuZG9tYWluLHg9dC5jYW52YXNXaWR0 aCpkLGI9dC5jYW52YXNIZWlnaHQqZCxfPXQucGFkLmwqZCx3PXQucGFkLmIqZCxUPXQubGF5 b3V0SGVpZ2h0KmQsaz10LmxheW91dFdpZHRoKmQsQT10LmRlc2VsZWN0ZWRMaW5lcy5jb2xv cjtyZXR1cm4gcy5leHRlbmRGbGF0KHtrZXk6ZixyZXNvbHV0aW9uOlt4LGJdLHZpZXdCb3hQ b3M6W28rdixsXSx2aWV3Qm94U2l6ZTpbYyx1XSxpMDppLGkxOmEsZGltMEE6bVswXS5zbGlj ZSgwLDE2KSxkaW0wQjptWzBdLnNsaWNlKDE2LDMyKSxkaW0wQzptWzBdLnNsaWNlKDMyLDQ4 KSxkaW0wRDptWzBdLnNsaWNlKDQ4LDY0KSxkaW0xQTptWzFdLnNsaWNlKDAsMTYpLGRpbTFC Om1bMV0uc2xpY2UoMTYsMzIpLGRpbTFDOm1bMV0uc2xpY2UoMzIsNDgpLGRpbTFEOm1bMV0u c2xpY2UoNDgsNjQpLGRyd0xheWVyOmgsY29udGV4dENvbG9yOltBWzBdLzI1NSxBWzFdLzI1 NSxBWzJdLzI1NSxBWzNdPDE/QVszXTpNYXRoLm1heCgxLzI1NSxNYXRoLnBvdygxL3QubGlu ZXMuY29sb3IubGVuZ3RoLDEvMykpXSxzY2lzc29yWDoobj09PWU/MDpvK3YpKyhfLXYpK2sq eS54WzBdLHNjaXNzb3JXaWR0aDoobj09PXI/eC1vK3Y6YysuNSkrKG49PT1lP28rdjowKSxz Y2lzc29yWTpsK3crVCp5LnlbMF0sc2Npc3NvckhlaWdodDp1LHZpZXdwb3J0WDpfLXYrayp5 LnhbMF0sdmlld3BvcnRZOncrVCp5LnlbMF0sdmlld3BvcnRXaWR0aDp4LHZpZXdwb3J0SGVp Z2h0OmJ9LHApfWZ1bmN0aW9uIHgodCl7dmFyIGU9TWF0aC5tYXgoMCxNYXRoLmZsb29yKDIw NDcqdFswXSksMCkscj1NYXRoLm1pbigyMDQ3LE1hdGguY2VpbCgyMDQ3KnRbMV0pLDIwNDcp O3JldHVybltNYXRoLm1pbihlLHIpLE1hdGgubWF4KGUscildfWUuZXhwb3J0cz1mdW5jdGlv bih0LGUpe3ZhciByLG4sbCxnLGIsXz1lLmNvbnRleHQsdz1lLnBpY2ssVD1lLnJlZ2wsaz1U Ll9nbCxBPWsuZ2V0UGFyYW1ldGVyKGsuQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFKSxNPU1h dGgubWF4KEFbMF0sTWF0aC5taW4oQVsxXSxlLnZpZXdNb2RlbC5wbG90R2xQaXhlbFJhdGlv KSksUz17Y3VycmVudFJhZnM6e30sZHJhd0NvbXBsZXRlZDohMCxjbGVhck9ubHk6ITF9LEU9 ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXt9LHI9MDtyPD1vO3IrPTQpZVt2KHIpXT10LmJ1ZmZl cih7dXNhZ2U6ImR5bmFtaWMiLHR5cGU6ImZsb2F0IixkYXRhOm5ldyBVaW50OEFycmF5KDAp fSk7cmV0dXJuIGV9KFQpLEw9VC50ZXh0dXJlKHUpLEM9W107SShlKTt2YXIgUD1UKHtwcm9m aWxlOiExLGJsZW5kOntlbmFibGU6XyxmdW5jOntzcmNSR0I6InNyYyBhbHBoYSIsZHN0UkdC OiJvbmUgbWludXMgc3JjIGFscGhhIixzcmNBbHBoYToxLGRzdEFscGhhOjF9LGVxdWF0aW9u OntyZ2I6ImFkZCIsYWxwaGE6ImFkZCJ9LGNvbG9yOlswLDAsMCwwXX0sZGVwdGg6e2VuYWJs ZTohXyxtYXNrOiEwLGZ1bmM6Imxlc3MiLHJhbmdlOlswLDFdfSxjdWxsOntlbmFibGU6ITAs ZmFjZToiYmFjayJ9LHNjaXNzb3I6e2VuYWJsZTohMCxib3g6e3g6VC5wcm9wKCJzY2lzc29y WCIpLHk6VC5wcm9wKCJzY2lzc29yWSIpLHdpZHRoOlQucHJvcCgic2Npc3NvcldpZHRoIiks aGVpZ2h0OlQucHJvcCgic2Npc3NvckhlaWdodCIpfX0sdmlld3BvcnQ6e3g6VC5wcm9wKCJ2 aWV3cG9ydFgiKSx5OlQucHJvcCgidmlld3BvcnRZIiksd2lkdGg6VC5wcm9wKCJ2aWV3cG9y dFdpZHRoIiksaGVpZ2h0OlQucHJvcCgidmlld3BvcnRIZWlnaHQiKX0sZGl0aGVyOiExLHZl cnQ6aSxmcmFnOmEscHJpbWl0aXZlOiJsaW5lcyIsbGluZVdpZHRoOk0sYXR0cmlidXRlczpF LHVuaWZvcm1zOntyZXNvbHV0aW9uOlQucHJvcCgicmVzb2x1dGlvbiIpLHZpZXdCb3hQb3M6 VC5wcm9wKCJ2aWV3Qm94UG9zIiksdmlld0JveFNpemU6VC5wcm9wKCJ2aWV3Qm94U2l6ZSIp LGRpbTBBOlQucHJvcCgiZGltMEEiKSxkaW0xQTpULnByb3AoImRpbTFBIiksZGltMEI6VC5w cm9wKCJkaW0wQiIpLGRpbTFCOlQucHJvcCgiZGltMUIiKSxkaW0wQzpULnByb3AoImRpbTBD IiksZGltMUM6VC5wcm9wKCJkaW0xQyIpLGRpbTBEOlQucHJvcCgiZGltMEQiKSxkaW0xRDpU LnByb3AoImRpbTFEIiksbG9BOlQucHJvcCgibG9BIiksaGlBOlQucHJvcCgiaGlBIiksbG9C OlQucHJvcCgibG9CIiksaGlCOlQucHJvcCgiaGlCIiksbG9DOlQucHJvcCgibG9DIiksaGlD OlQucHJvcCgiaGlDIiksbG9EOlQucHJvcCgibG9EIiksaGlEOlQucHJvcCgiaGlEIikscGFs ZXR0ZTpMLGNvbnRleHRDb2xvcjpULnByb3AoImNvbnRleHRDb2xvciIpLG1hc2tUZXh0dXJl OlQucHJvcCgibWFza1RleHR1cmUiKSxkcndMYXllcjpULnByb3AoImRyd0xheWVyIiksbWFz a0hlaWdodDpULnByb3AoIm1hc2tIZWlnaHQiKX0sb2Zmc2V0OlQucHJvcCgib2Zmc2V0Iiks Y291bnQ6VC5wcm9wKCJjb3VudCIpfSk7ZnVuY3Rpb24gSSh0KXtyPXQubW9kZWwsbj10LnZp ZXdNb2RlbCxsPW4uZGltZW5zaW9ucy5zbGljZSgpLGc9bFswXT9sWzBdLnZhbHVlcy5sZW5n dGg6MDt2YXIgZT1yLmxpbmVzLGk9dz9lLmNvbG9yLm1hcCgoZnVuY3Rpb24odCxyKXtyZXR1 cm4gci9lLmNvbG9yLmxlbmd0aH0pKTplLmNvbG9yLGE9ZnVuY3Rpb24odCxlLHIpe2Zvcih2 YXIgbixpPW5ldyBBcnJheSh0KihvKzQpKSxhPTAscz0wO3M8dDtzKyspe2Zvcih2YXIgbD0w O2w8bztsKyspaVthKytdPWw8ZS5sZW5ndGg/ZVtsXS5wYWRkZWRVbml0VmFsdWVzW3NdOi41 O2lbYSsrXT1kKHMsMiksaVthKytdPWQocywxKSxpW2ErK109ZChzLDApLGlbYSsrXT0obj1y W3NdLE1hdGgubWF4KDFlLTYsTWF0aC5taW4oLjk5OTk5OSxuKSkpfXJldHVybiBpfShnLGws aSk7IWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49MDtuPD1vO24rPTQpdFt2KG4pXShtKG4v NCxlLHIpKX0oRSxnLGEpLF98fHd8fChMPVQudGV4dHVyZShzLmV4dGVuZEZsYXQoe2RhdGE6 cChyLnVuaXRUb0NvbG9yLDI1NSl9LHUpKSl9cmV0dXJue3JlbmRlcjpmdW5jdGlvbih0LGUs bil7dmFyIGksYSxvLHM9dC5sZW5ndGgsYz0xLzAsdT0tMS8wO2ZvcihpPTA7aTxzO2krKyl0 W2ldLmRpbTAuY2FudmFzWDxjJiYoYz10W2ldLmRpbTAuY2FudmFzWCxhPWkpLHRbaV0uZGlt MS5jYW52YXNYPnUmJih1PXRbaV0uZGltMS5jYW52YXNYLG89aSk7MD09PXMmJmYoVCwwLDAs ci5jYW52YXNXaWR0aCxyLmNhbnZhc0hlaWdodCk7dmFyIHA9ZnVuY3Rpb24odCl7dmFyIGUs cixuLGk9W1tdLFtdXTtmb3Iobj0wO248NjQ7bisrKXt2YXIgYT0hdCYmbjxsLmxlbmd0aD9s W25dLmJydXNoLmZpbHRlci5nZXRCb3VuZHMoKTpbLTEvMCwxLzBdO2lbMF1bbl09YVswXSxp WzFdW25dPWFbMV19dmFyIG89bmV3IEFycmF5KDE2Mzg0KTtmb3IoZT0wO2U8MTYzODQ7ZSsr KW9bZV09MjU1O2lmKCF0KWZvcihlPTA7ZTxsLmxlbmd0aDtlKyspe3ZhciBzPWUlOCxjPShl LXMpLzgsdT1NYXRoLnBvdygyLHMpLGY9bFtlXS5icnVzaC5maWx0ZXIuZ2V0KCk7aWYoIShm Lmxlbmd0aDwyKSl7dmFyIGg9eChmWzBdKVsxXTtmb3Iocj0xO3I8Zi5sZW5ndGg7cisrKXt2 YXIgcD14KGZbcl0pO2ZvcihuPWgrMTtuPHBbMF07bisrKW9bOCpuK2NdJj1+dTtoPU1hdGgu bWF4KGgscFsxXSl9fX12YXIgZD17c2hhcGU6WzgsMjA0OF0sZm9ybWF0OiJhbHBoYSIsdHlw ZToidWludDgiLG1hZzoibmVhcmVzdCIsbWluOiJuZWFyZXN0IixkYXRhOm99O3JldHVybiBi P2IoZCk6Yj1ULnRleHR1cmUoZCkse21hc2tUZXh0dXJlOmIsbWFza0hlaWdodDoyMDQ4LGxv QTppWzBdLnNsaWNlKDAsMTYpLGxvQjppWzBdLnNsaWNlKDE2LDMyKSxsb0M6aVswXS5zbGlj ZSgzMiw0OCksbG9EOmlbMF0uc2xpY2UoNDgsNjQpLGhpQTppWzFdLnNsaWNlKDAsMTYpLGhp QjppWzFdLnNsaWNlKDE2LDMyKSxoaUM6aVsxXS5zbGljZSgzMiw0OCksaGlEOmlbMV0uc2xp Y2UoNDgsNjQpfX0oXyk7Zm9yKGk9MDtpPHM7aSsrKXt2YXIgZD10W2ldLG09ZC5kaW0wLmNy b3NzZmlsdGVyRGltZW5zaW9uSW5kZXgsdj1kLmRpbTEuY3Jvc3NmaWx0ZXJEaW1lbnNpb25J bmRleCxrPWQuY2FudmFzWCxBPWQuY2FudmFzWSxNPWsrZC5wYW5lbFNpemVYLEU9ZC5wbG90 R2xQaXhlbFJhdGlvO2lmKGV8fCFDW21dfHxDW21dWzBdIT09a3x8Q1ttXVsxXSE9PU0pe0Nb bV09W2ssTV07dmFyIEw9eShyLGEsbyxpLG0sdixrLEEsZC5wYW5lbFNpemVYLGQucGFuZWxT aXplWSxkLmRpbTAuY3Jvc3NmaWx0ZXJEaW1lbnNpb25JbmRleCxfPzA6dz8yOjEscCxFKTtT LmNsZWFyT25seT1uO3ZhciBJPWU/ci5saW5lcy5ibG9ja0xpbmVDb3VudDpnO2goVCxQLFMs SSxnLEwpfX19LHJlYWRQaXhlbDpmdW5jdGlvbih0LGUpe3JldHVybiBULnJlYWQoe3g6dCx5 OmUsd2lkdGg6MSxoZWlnaHQ6MSxkYXRhOmN9KSxjfSxyZWFkUGl4ZWxzOmZ1bmN0aW9uKHQs ZSxyLG4pe3ZhciBpPW5ldyBVaW50OEFycmF5KDQqcipuKTtyZXR1cm4gVC5yZWFkKHt4OnQs eTplLHdpZHRoOnIsaGVpZ2h0Om4sZGF0YTppfSksaX0sZGVzdHJveTpmdW5jdGlvbigpe2Zv cih2YXIgZSBpbiB0LnN0eWxlWyJwb2ludGVyLWV2ZW50cyJdPSJub25lIixMLmRlc3Ryb3ko KSxiJiZiLmRlc3Ryb3koKSxFKUVbZV0uZGVzdHJveSgpfSx1cGRhdGU6SX19fSx7Ii4uLy4u L2xpYiI6NTAzLCIuL2NvbnN0YW50cyI6ODkzLGdsc2xpZnk6MjI3fV0sODk4OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuKXt2YXIg aSxhO2ZvcihufHwobj0xLzApLGk9MDtpPGUubGVuZ3RoO2krKykoYT1lW2ldKS52aXNpYmxl JiYobj1NYXRoLm1pbihuLGFbcl0ubGVuZ3RoKSk7Zm9yKG49PT0xLzAmJihuPTApLHQuX2xl bmd0aD1uLGk9MDtpPGUubGVuZ3RoO2krKykoYT1lW2ldKS52aXNpYmxlJiYoYS5fbGVuZ3Ro PW4pO3JldHVybiBufX0se31dLDg5OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCJAcGxvdGx5L2QzIiksaT10KCIuLi8uLi9saWIiKSxhPWkubnVtYmVyRm9ybWF0 LG89dCgiY29sb3ItcmdiYSIpLHM9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxs PWkuc3RyUm90YXRlLGM9aS5zdHJUcmFuc2xhdGUsdT10KCIuLi8uLi9saWIvc3ZnX3RleHRf dXRpbHMiKSxmPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLGg9dCgiLi4vLi4vY29t cG9uZW50cy9jb2xvcnNjYWxlIikscD10KCIuLi8uLi9saWIvZ3VwIiksZD1wLmtleUZ1bixt PXAucmVwZWF0LGc9cC51bndyYXAsdj10KCIuL2hlbHBlcnMiKSx5PXQoIi4vY29uc3RhbnRz IikseD10KCIuL2F4aXNicnVzaCIpLGI9dCgiLi9saW5lcyIpO2Z1bmN0aW9uIF8odCxlLHIp e3JldHVybiBpLmFnZ051bXModCxudWxsLGUscil9ZnVuY3Rpb24gdyh0LGUpe3JldHVybiBr KF8oTWF0aC5taW4sdCxlKSxfKE1hdGgubWF4LHQsZSkpfWZ1bmN0aW9uIFQodCl7dmFyIGU9 dC5yYW5nZTtyZXR1cm4gZT9rKGVbMF0sZVsxXSk6dyh0LnZhbHVlcyx0Ll9sZW5ndGgpfWZ1 bmN0aW9uIGsodCxlKXtyZXR1cm4haXNOYU4odCkmJmlzRmluaXRlKHQpfHwodD0wKSwhaXNO YU4oZSkmJmlzRmluaXRlKGUpfHwoZT0wKSx0PT09ZSYmKDA9PT10Pyh0LT0xLGUrPTEpOih0 Kj0uOSxlKj0xLjEpKSxbdCxlXX1mdW5jdGlvbiBBKHQsZSxyLGksbyl7dmFyIHMsbCxjPVQo cik7cmV0dXJuIGk/bi5zY2FsZS5vcmRpbmFsKCkuZG9tYWluKGkubWFwKChzPWEoci50aWNr Zm9ybWF0KSxsPW8sbD9mdW5jdGlvbih0LGUpe3ZhciByPWxbZV07cmV0dXJuIG51bGw9PXI/ cyh0KTpyfTpzKSkpLnJhbmdlKGkubWFwKChmdW5jdGlvbihyKXt2YXIgbj0oci1jWzBdKS8o Y1sxXS1jWzBdKTtyZXR1cm4gdC1lK24qKDIqZS10KX0pKSk6bi5zY2FsZS5saW5lYXIoKS5k b21haW4oYykucmFuZ2UoW3QtZSxlXSl9ZnVuY3Rpb24gTSh0KXtpZih0LnRpY2t2YWxzKXt2 YXIgZT1UKHQpO3JldHVybiBuLnNjYWxlLm9yZGluYWwoKS5kb21haW4odC50aWNrdmFscyku cmFuZ2UodC50aWNrdmFscy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybih0LWVbMF0pLyhlWzFd LWVbMF0pfSkpKX19ZnVuY3Rpb24gUyh0KXt2YXIgZT10Lm1hcCgoZnVuY3Rpb24odCl7cmV0 dXJuIHRbMF19KSkscj10Lm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9byh0WzFdKTtyZXR1cm4g bi5yZ2IoInJnYigiK2VbMF0rIiwiK2VbMV0rIiwiK2VbMl0rIikiKX0pKSxpPSJyZ2IiLnNw bGl0KCIiKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBuLnNjYWxlLmxpbmVhcigpLmNsYW1w KCEwKS5kb21haW4oZSkucmFuZ2Uoci5tYXAoKGk9dCxmdW5jdGlvbih0KXtyZXR1cm4gdFtp XX0pKSk7dmFyIGl9KSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpLm1hcCgoZnVuY3Rp b24oZSl7cmV0dXJuIGUodCl9KSl9fWZ1bmN0aW9uIEUodCl7cmV0dXJuIHQuZGltZW5zaW9u cy5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdC5icnVzaC5maWx0ZXJTcGVjaWZpZWR9KSl9 ZnVuY3Rpb24gTCh0LGUscil7dmFyIGE9ZyhlKSxzPWEudHJhY2UsbD12LmNvbnZlcnRUeXBl ZEFycmF5KGEubGluZUNvbG9yKSxjPXMubGluZSx1PXtjb2xvcjpvKHkuZGVzZWxlY3RlZExp bmVDb2xvcil9LGY9aC5leHRyYWN0T3B0cyhjKSxwPWYucmV2ZXJzZXNjYWxlP2guZmxpcFNj YWxlKGEuY3NjYWxlKTphLmNzY2FsZSxkPXMuZG9tYWluLG09cy5kaW1lbnNpb25zLHg9dC53 aWR0aCxiPXMubGFiZWxhbmdsZSxfPXMubGFiZWxzaWRlLHc9cy5sYWJlbGZvbnQsaz1zLnRp Y2tmb250LEE9cy5yYW5nZWZvbnQsTT1pLmV4dGVuZERlZXBOb0FycmF5cyh7fSxjLHtjb2xv cjpsLm1hcChuLnNjYWxlLmxpbmVhcigpLmRvbWFpbihUKHt2YWx1ZXM6bCxyYW5nZTpbZi5t aW4sZi5tYXhdLF9sZW5ndGg6cy5fbGVuZ3RofSkpKSxibG9ja0xpbmVDb3VudDp5LmJsb2Nr TGluZUNvdW50LGNhbnZhc092ZXJkcmFnOnkub3ZlcmRyYWcqeS5jYW52YXNQaXhlbFJhdGlv fSksRT1NYXRoLmZsb29yKHgqKGQueFsxXS1kLnhbMF0pKSxMPU1hdGguZmxvb3IodC5oZWln aHQqKGQueVsxXS1kLnlbMF0pKSxDPXQubWFyZ2lufHx7bDo4MCxyOjgwLHQ6MTAwLGI6ODB9 LFA9RSxJPUw7cmV0dXJue2tleTpyLGNvbENvdW50Om0uZmlsdGVyKHYuaXNWaXNpYmxlKS5s ZW5ndGgsZGltZW5zaW9uczptLHRpY2tEaXN0YW5jZTp5LnRpY2tEaXN0YW5jZSx1bml0VG9D b2xvcjpTKHApLGxpbmVzOk0sZGVzZWxlY3RlZExpbmVzOnUsbGFiZWxBbmdsZTpiLGxhYmVs U2lkZTpfLGxhYmVsRm9udDp3LHRpY2tGb250OmsscmFuZ2VGb250OkEsbGF5b3V0V2lkdGg6 eCxsYXlvdXRIZWlnaHQ6dC5oZWlnaHQsZG9tYWluOmQsdHJhbnNsYXRlWDpkLnhbMF0qeCx0 cmFuc2xhdGVZOnQuaGVpZ2h0LWQueVsxXSp0LmhlaWdodCxwYWQ6QyxjYW52YXNXaWR0aDpQ KnkuY2FudmFzUGl4ZWxSYXRpbysyKk0uY2FudmFzT3ZlcmRyYWcsY2FudmFzSGVpZ2h0Okkq eS5jYW52YXNQaXhlbFJhdGlvLHdpZHRoOlAsaGVpZ2h0OkksY2FudmFzUGl4ZWxSYXRpbzp5 LmNhbnZhc1BpeGVsUmF0aW99fWZ1bmN0aW9uIEModCxlLHIpe3ZhciBvPXIud2lkdGgscz1y LmhlaWdodCxsPXIuZGltZW5zaW9ucyxjPXIuY2FudmFzUGl4ZWxSYXRpbyx1PWZ1bmN0aW9u KHQpe3JldHVybiBvKnQvTWF0aC5tYXgoMSxyLmNvbENvdW50LTEpfSxmPXkudmVydGljYWxQ YWRkaW5nL3MsaD1mdW5jdGlvbih0LGUpe3JldHVybiBuLnNjYWxlLmxpbmVhcigpLnJhbmdl KFtlLHQtZV0pfShzLHkudmVydGljYWxQYWRkaW5nKSxwPXtrZXk6ci5rZXkseFNjYWxlOnUs bW9kZWw6cixpbkJydXNoRHJhZzohMX0sZD17fTtyZXR1cm4gcC5kaW1lbnNpb25zPWwuZmls dGVyKHYuaXNWaXNpYmxlKS5tYXAoKGZ1bmN0aW9uKG8sbCl7dmFyIG09ZnVuY3Rpb24odCxl KXtyZXR1cm4gbi5zY2FsZS5saW5lYXIoKS5kb21haW4oVCh0KSkucmFuZ2UoW2UsMS1lXSl9 KG8sZiksZz1kW28ubGFiZWxdO2Rbby5sYWJlbF09KGd8fDApKzE7dmFyIGI9by5sYWJlbCso Zz8iX18iK2c6IiIpLF89by5jb25zdHJhaW50cmFuZ2Usdz1fJiZfLmxlbmd0aDt3JiYhQXJy YXkuaXNBcnJheShfWzBdKSYmKF89W19dKTt2YXIgaz13P18ubWFwKChmdW5jdGlvbih0KXty ZXR1cm4gdC5tYXAobSl9KSk6W1stMS8wLDEvMF1dLFM9by52YWx1ZXM7Uy5sZW5ndGg+by5f bGVuZ3RoJiYoUz1TLnNsaWNlKDAsby5fbGVuZ3RoKSk7dmFyIEwsQz1vLnRpY2t2YWxzO2Z1 bmN0aW9uIFAodCxlKXtyZXR1cm57dmFsOnQsdGV4dDpMW2VdfX1mdW5jdGlvbiBJKHQsZSl7 cmV0dXJuIHQudmFsLWUudmFsfWlmKEFycmF5LmlzQXJyYXkoQykmJkMubGVuZ3RoKXtMPW8u dGlja3RleHQsQXJyYXkuaXNBcnJheShMKSYmTC5sZW5ndGg/TC5sZW5ndGg+Qy5sZW5ndGg/ TD1MLnNsaWNlKDAsQy5sZW5ndGgpOkMubGVuZ3RoPkwubGVuZ3RoJiYoQz1DLnNsaWNlKDAs TC5sZW5ndGgpKTpMPUMubWFwKGEoby50aWNrZm9ybWF0KSk7Zm9yKHZhciBPPTE7TzxDLmxl bmd0aDtPKyspaWYoQ1tPXTxDW08tMV0pe2Zvcih2YXIgej1DLm1hcChQKS5zb3J0KEkpLEQ9 MDtEPEMubGVuZ3RoO0QrKylDW0RdPXpbRF0udmFsLExbRF09eltEXS50ZXh0O2JyZWFrfX1l bHNlIEM9dm9pZCAwO3JldHVybiBTPXYuY29udmVydFR5cGVkQXJyYXkoUykse2tleTpiLGxh YmVsOm8ubGFiZWwsdGlja0Zvcm1hdDpvLnRpY2tmb3JtYXQsdGlja3ZhbHM6Qyx0aWNrdGV4 dDpMLG9yZGluYWw6di5pc09yZGluYWwobyksbXVsdGlzZWxlY3Q6by5tdWx0aXNlbGVjdCx4 SW5kZXg6bCxjcm9zc2ZpbHRlckRpbWVuc2lvbkluZGV4OmwsdmlzaWJsZUluZGV4Om8uX2lu ZGV4LGhlaWdodDpzLHZhbHVlczpTLHBhZGRlZFVuaXRWYWx1ZXM6Uy5tYXAobSksdW5pdFRp Y2t2YWxzOkMmJkMubWFwKG0pLHhTY2FsZTp1LHg6dShsKSxjYW52YXNYOnUobCkqYyx1bml0 VG9QYWRkZWRQeDpoLGRvbWFpblNjYWxlOkEocyx5LnZlcnRpY2FsUGFkZGluZyxvLEMsTCks b3JkaW5hbFNjYWxlOk0obykscGFyZW50OnAsbW9kZWw6cixicnVzaDp4Lm1ha2VCcnVzaCh0 LHcsaywoZnVuY3Rpb24oKXt0LmxpbmVQaWNrQWN0aXZlKCExKX0pLChmdW5jdGlvbigpe3Zh ciBlPXA7ZS5mb2N1c0xheWVyJiZlLmZvY3VzTGF5ZXIucmVuZGVyKGUucGFuZWxzLCEwKTt2 YXIgcj1FKGUpOyF0LmNvbnRleHRTaG93bigpJiZyPyhlLmNvbnRleHRMYXllciYmZS5jb250 ZXh0TGF5ZXIucmVuZGVyKGUucGFuZWxzLCEwKSx0LmNvbnRleHRTaG93bighMCkpOnQuY29u dGV4dFNob3duKCkmJiFyJiYoZS5jb250ZXh0TGF5ZXImJmUuY29udGV4dExheWVyLnJlbmRl cihlLnBhbmVscywhMCwhMCksdC5jb250ZXh0U2hvd24oITEpKX0pLChmdW5jdGlvbihyKXtp ZihwLmZvY3VzTGF5ZXIucmVuZGVyKHAucGFuZWxzLCEwKSxwLnBpY2tMYXllciYmcC5waWNr TGF5ZXIucmVuZGVyKHAucGFuZWxzLCEwKSx0LmxpbmVQaWNrQWN0aXZlKCEwKSxlJiZlLmZp bHRlckNoYW5nZWQpe3ZhciBuPW0uaW52ZXJ0LGE9ci5tYXAoKGZ1bmN0aW9uKHQpe3JldHVy biB0Lm1hcChuKS5zb3J0KGkuc29ydGVyQXNjKX0pKS5zb3J0KChmdW5jdGlvbih0LGUpe3Jl dHVybiB0WzBdLWVbMF19KSk7ZS5maWx0ZXJDaGFuZ2VkKHAua2V5LG8uX2luZGV4LGEpfX0p KX19KSkscH1mdW5jdGlvbiBQKHQpe3QuY2xhc3NlZCh5LmNuLmF4aXNFeHRlbnRUZXh0LCEw KS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLnN0eWxlKCJjdXJzb3IiLCJkZWZhdWx0 Iil9ZnVuY3Rpb24gSSh0LGUpe3ZhciByPSJ0b3AiPT09ZT8xOi0xLG49dCpNYXRoLlBJLzE4 MDtyZXR1cm57ZGlyOnIsZHg6TWF0aC5zaW4obiksZHk6TWF0aC5jb3MobiksZGVncmVlczp0 fX1mdW5jdGlvbiBPKHQsZSxyKXtmb3IodmFyIG49ZS5wYW5lbHN8fChlLnBhbmVscz1bXSks aT10LmRhdGEoKSxhPTA7YTxpLmxlbmd0aC0xO2ErKyl7dmFyIG89blthXXx8KG5bYV09e30p LHM9aVthXSxsPWlbYSsxXTtvLmRpbTA9cyxvLmRpbTE9bCxvLmNhbnZhc1g9cy5jYW52YXNY LG8ucGFuZWxTaXplWD1sLmNhbnZhc1gtcy5jYW52YXNYLG8ucGFuZWxTaXplWT1lLm1vZGVs LmNhbnZhc0hlaWdodCxvLnk9MCxvLmNhbnZhc1k9MCxvLnBsb3RHbFBpeGVsUmF0aW89cn19 ZnVuY3Rpb24geih0LGUpe3JldHVybiBzLnRpY2tUZXh0KHQuX2F4LGUsITEpLnRleHR9ZnVu Y3Rpb24gRCh0LGUpe2lmKHQub3JkaW5hbClyZXR1cm4iIjt2YXIgcj10LmRvbWFpblNjYWxl LmRvbWFpbigpLG49cltlP3IubGVuZ3RoLTE6MF07cmV0dXJuIHoodC5tb2RlbC5kaW1lbnNp b25zW3QudmlzaWJsZUluZGV4XSxuKX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsYSl7dmFy IG89dC5fZnVsbExheW91dCxoPW8uX3RvcHBhcGVyLHA9by5fZ2xjb250YWluZXIsXz10Ll9j b250ZXh0LnBsb3RHbFBpeGVsUmF0aW8sVD10Ll9mdWxsTGF5b3V0LnBhcGVyX2JnY29sb3I7 IWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKWZvcih2YXIgcj0wO3I8 dFtlXS5sZW5ndGg7cisrKWZvcih2YXIgbj10W2VdW3JdLnRyYWNlLGk9bi5kaW1lbnNpb25z LGE9MDthPGkubGVuZ3RoO2ErKyl7dmFyIG89aVthXS52YWx1ZXMsbD1pW2FdLl9heDtsJiYo bC5yYW5nZT9sLnJhbmdlPWsobC5yYW5nZVswXSxsLnJhbmdlWzFdKTpsLnJhbmdlPXcobyxu Ll9sZW5ndGgpLGwuZHRpY2t8fChsLmR0aWNrPS4wMSooTWF0aC5hYnMobC5yYW5nZVsxXS1s LnJhbmdlWzBdKXx8MSkpLGwudGlja2Zvcm1hdD1pW2FdLnRpY2tmb3JtYXQscy5jYWxjVGlj a3MobCksbC5jbGVhblJhbmdlKCkpfX0oZSk7dmFyIEEsTSxTPShBPSEwLE09ITEse2xpbmVQ aWNrQWN0aXZlOmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP0E9ISF0OkF9 LGNvbnRleHRTaG93bjpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9NPSEh dDpNfX0pLFI9ZS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBnKHQpLnRyYWNlLnZpc2li bGV9KSkubWFwKEwuYmluZCgwLHIpKS5tYXAoQy5iaW5kKDAsUyxhKSk7cC5lYWNoKChmdW5j dGlvbih0LGUpe3JldHVybiBpLmV4dGVuZEZsYXQodCxSW2VdKX0pKTt2YXIgRj1wLnNlbGVj dEFsbCgiLmdsLWNhbnZhcyIpLmVhY2goKGZ1bmN0aW9uKHQpe3Qudmlld01vZGVsPVJbMF0s dC52aWV3TW9kZWwucGxvdEdsUGl4ZWxSYXRpbz1fLHQudmlld01vZGVsLnBhcGVyQ29sb3I9 VCx0Lm1vZGVsPXQudmlld01vZGVsP3Qudmlld01vZGVsLm1vZGVsOm51bGx9KSksQj1udWxs O0YuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5waWNrfSkpLnN0eWxlKCJwb2ludGVy LWV2ZW50cyIsImF1dG8iKS5vbigibW91c2Vtb3ZlIiwoZnVuY3Rpb24odCl7aWYoUy5saW5l UGlja0FjdGl2ZSgpJiZ0LmxpbmVMYXllciYmYSYmYS5ob3Zlcil7dmFyIGU9bi5ldmVudCxy PXRoaXMud2lkdGgsaT10aGlzLmhlaWdodCxvPW4ubW91c2UodGhpcykscz1vWzBdLGw9b1sx XTtpZihzPDB8fGw8MHx8cz49cnx8bD49aSlyZXR1cm47dmFyIGM9dC5saW5lTGF5ZXIucmVh ZFBpeGVsKHMsaS0xLWwpLHU9MCE9PWNbM10sZj11P2NbMl0rMjU2KihjWzFdKzI1NipjWzBd KTpudWxsLGg9e3g6cyx5OmwsY2xpZW50WDplLmNsaWVudFgsY2xpZW50WTplLmNsaWVudFks ZGF0YUluZGV4OnQubW9kZWwua2V5LGN1cnZlTnVtYmVyOmZ9O2YhPT1CJiYodT9hLmhvdmVy KGgpOmEudW5ob3ZlciYmYS51bmhvdmVyKGgpLEI9Zil9fSkpLEYuc3R5bGUoIm9wYWNpdHki LChmdW5jdGlvbih0KXtyZXR1cm4gdC5waWNrPzA6MX0pKSxoLnN0eWxlKCJiYWNrZ3JvdW5k IiwicmdiYSgyNTUsIDI1NSwgMjU1LCAwKSIpO3ZhciBOPWguc2VsZWN0QWxsKCIuIit5LmNu LnBhcmNvb3JkcykuZGF0YShSLGQpO04uZXhpdCgpLnJlbW92ZSgpLE4uZW50ZXIoKS5hcHBl bmQoImciKS5jbGFzc2VkKHkuY24ucGFyY29vcmRzLCEwKS5zdHlsZSgic2hhcGUtcmVuZGVy aW5nIiwiY3Jpc3BFZGdlcyIpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKSxOLmF0 dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiBjKHQubW9kZWwudHJhbnNsYXRl WCx0Lm1vZGVsLnRyYW5zbGF0ZVkpfSkpO3ZhciBqPU4uc2VsZWN0QWxsKCIuIit5LmNuLnBh cmNvb3Jkc0NvbnRyb2xWaWV3KS5kYXRhKG0sZCk7ai5lbnRlcigpLmFwcGVuZCgiZyIpLmNs YXNzZWQoeS5jbi5wYXJjb29yZHNDb250cm9sVmlldywhMCksai5hdHRyKCJ0cmFuc2Zvcm0i LChmdW5jdGlvbih0KXtyZXR1cm4gYyh0Lm1vZGVsLnBhZC5sLHQubW9kZWwucGFkLnQpfSkp O3ZhciBVPWouc2VsZWN0QWxsKCIuIit5LmNuLnlBeGlzKS5kYXRhKChmdW5jdGlvbih0KXty ZXR1cm4gdC5kaW1lbnNpb25zfSksZCk7VS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQo eS5jbi55QXhpcywhMCksai5lYWNoKChmdW5jdGlvbih0KXtPKFUsdCxfKX0pKSxGLmVhY2go KGZ1bmN0aW9uKHQpe2lmKHQudmlld01vZGVsKXshdC5saW5lTGF5ZXJ8fGE/dC5saW5lTGF5 ZXI9Yih0aGlzLHQpOnQubGluZUxheWVyLnVwZGF0ZSh0KSwodC5rZXl8fDA9PT10LmtleSkm Jih0LnZpZXdNb2RlbFt0LmtleV09dC5saW5lTGF5ZXIpO3ZhciBlPSF0LmNvbnRleHR8fGE7 dC5saW5lTGF5ZXIucmVuZGVyKHQudmlld01vZGVsLnBhbmVscyxlKX19KSksVS5hdHRyKCJ0 cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4gYyh0LnhTY2FsZSh0LnhJbmRleCksMCl9 KSksVS5jYWxsKG4uYmVoYXZpb3IuZHJhZygpLm9yaWdpbigoZnVuY3Rpb24odCl7cmV0dXJu IHR9KSkub24oImRyYWciLChmdW5jdGlvbih0KXt2YXIgZT10LnBhcmVudDtTLmxpbmVQaWNr QWN0aXZlKCExKSx0Lng9TWF0aC5tYXgoLXkub3ZlcmRyYWcsTWF0aC5taW4odC5tb2RlbC53 aWR0aCt5Lm92ZXJkcmFnLG4uZXZlbnQueCkpLHQuY2FudmFzWD10LngqdC5tb2RlbC5jYW52 YXNQaXhlbFJhdGlvLFUuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC54LWUueH0pKS5l YWNoKChmdW5jdGlvbihlLHIpe2UueEluZGV4PXIsZS54PXQ9PT1lP2UueDplLnhTY2FsZShl LnhJbmRleCksZS5jYW52YXNYPWUueCplLm1vZGVsLmNhbnZhc1BpeGVsUmF0aW99KSksTyhV LGUsXyksVS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiAwIT09TWF0aC5hYnModC54SW5k ZXgtZS54SW5kZXgpfSkpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiBj KHQueFNjYWxlKHQueEluZGV4KSwwKX0pKSxuLnNlbGVjdCh0aGlzKS5hdHRyKCJ0cmFuc2Zv cm0iLGModC54LDApKSxVLmVhY2goKGZ1bmN0aW9uKHIsbixpKXtpPT09dC5wYXJlbnQua2V5 JiYoZS5kaW1lbnNpb25zW25dPXIpfSkpLGUuY29udGV4dExheWVyJiZlLmNvbnRleHRMYXll ci5yZW5kZXIoZS5wYW5lbHMsITEsIUUoZSkpLGUuZm9jdXNMYXllci5yZW5kZXImJmUuZm9j dXNMYXllci5yZW5kZXIoZS5wYW5lbHMpfSkpLm9uKCJkcmFnZW5kIiwoZnVuY3Rpb24odCl7 dmFyIGU9dC5wYXJlbnQ7dC54PXQueFNjYWxlKHQueEluZGV4KSx0LmNhbnZhc1g9dC54KnQu bW9kZWwuY2FudmFzUGl4ZWxSYXRpbyxPKFUsZSxfKSxuLnNlbGVjdCh0aGlzKS5hdHRyKCJ0 cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4gYyh0LngsMCl9KSksZS5jb250ZXh0TGF5 ZXImJmUuY29udGV4dExheWVyLnJlbmRlcihlLnBhbmVscywhMSwhRShlKSksZS5mb2N1c0xh eWVyJiZlLmZvY3VzTGF5ZXIucmVuZGVyKGUucGFuZWxzKSxlLnBpY2tMYXllciYmZS5waWNr TGF5ZXIucmVuZGVyKGUucGFuZWxzLCEwKSxTLmxpbmVQaWNrQWN0aXZlKCEwKSxhJiZhLmF4 ZXNNb3ZlZCYmYS5heGVzTW92ZWQoZS5rZXksZS5kaW1lbnNpb25zLm1hcCgoZnVuY3Rpb24o dCl7cmV0dXJuIHQuY3Jvc3NmaWx0ZXJEaW1lbnNpb25JbmRleH0pKSl9KSkpLFUuZXhpdCgp LnJlbW92ZSgpO3ZhciBWPVUuc2VsZWN0QWxsKCIuIit5LmNuLmF4aXNPdmVybGF5cykuZGF0 YShtLGQpO1YuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKHkuY24uYXhpc092ZXJsYXlz LCEwKSxWLnNlbGVjdEFsbCgiLiIreS5jbi5heGlzKS5yZW1vdmUoKTt2YXIgSD1WLnNlbGVj dEFsbCgiLiIreS5jbi5heGlzKS5kYXRhKG0sZCk7SC5lbnRlcigpLmFwcGVuZCgiZyIpLmNs YXNzZWQoeS5jbi5heGlzLCEwKSxILmVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXQubW9kZWwu aGVpZ2h0L3QubW9kZWwudGlja0Rpc3RhbmNlLHI9dC5kb21haW5TY2FsZSxpPXIuZG9tYWlu KCk7bi5zZWxlY3QodGhpcykuY2FsbChuLnN2Zy5heGlzKCkub3JpZW50KCJsZWZ0IikudGlj a1NpemUoNCkub3V0ZXJUaWNrU2l6ZSgyKS50aWNrcyhlLHQudGlja0Zvcm1hdCkudGlja1Zh bHVlcyh0Lm9yZGluYWw/aTpudWxsKS50aWNrRm9ybWF0KChmdW5jdGlvbihlKXtyZXR1cm4g di5pc09yZGluYWwodCk/ZTp6KHQubW9kZWwuZGltZW5zaW9uc1t0LnZpc2libGVJbmRleF0s ZSl9KSkuc2NhbGUocikpLGYuZm9udChILnNlbGVjdEFsbCgidGV4dCIpLHQubW9kZWwudGlj a0ZvbnQpfSkpLEguc2VsZWN0QWxsKCIuZG9tYWluLCAudGljaz5saW5lIikuYXR0cigiZmls bCIsIm5vbmUiKS5hdHRyKCJzdHJva2UiLCJibGFjayIpLmF0dHIoInN0cm9rZS1vcGFjaXR5 IiwuMjUpLmF0dHIoInN0cm9rZS13aWR0aCIsIjFweCIpLEguc2VsZWN0QWxsKCJ0ZXh0Iiku c3R5bGUoInRleHQtc2hhZG93Iix1Lm1ha2VUZXh0U2hhZG93KFQpKS5zdHlsZSgiY3Vyc29y IiwiZGVmYXVsdCIpO3ZhciBxPVYuc2VsZWN0QWxsKCIuIit5LmNuLmF4aXNIZWFkaW5nKS5k YXRhKG0sZCk7cS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoeS5jbi5heGlzSGVhZGlu ZywhMCk7dmFyIEc9cS5zZWxlY3RBbGwoIi4iK3kuY24uYXhpc1RpdGxlKS5kYXRhKG0sZCk7 Ry5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmNsYXNzZWQoeS5jbi5heGlzVGl0bGUsITApLmF0 dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikuc3R5bGUoImN1cnNvciIsImV3LXJlc2l6ZSIp LnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsImF1dG8iKSxHLnRleHQoKGZ1bmN0aW9uKHQpe3Jl dHVybiB0LmxhYmVsfSkpLmVhY2goKGZ1bmN0aW9uKGUpe3ZhciByPW4uc2VsZWN0KHRoaXMp O2YuZm9udChyLGUubW9kZWwubGFiZWxGb250KSx1LmNvbnZlcnRUb1RzcGFucyhyLHQpfSkp LmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3ZhciBlPUkodC5tb2RlbC5sYWJlbEFu Z2xlLHQubW9kZWwubGFiZWxTaWRlKSxyPXkuYXhpc1RpdGxlT2Zmc2V0O3JldHVybihlLmRp cj4wPyIiOmMoMCwyKnIrdC5tb2RlbC5oZWlnaHQpKStsKGUuZGVncmVlcykrYygtciplLmR4 LC1yKmUuZHkpfSkpLmF0dHIoInRleHQtYW5jaG9yIiwoZnVuY3Rpb24odCl7dmFyIGU9SSh0 Lm1vZGVsLmxhYmVsQW5nbGUsdC5tb2RlbC5sYWJlbFNpZGUpO3JldHVybiAyKk1hdGguYWJz KGUuZHgpPk1hdGguYWJzKGUuZHkpP2UuZGlyKmUuZHg8MD8ic3RhcnQiOiJlbmQiOiJtaWRk bGUifSkpO3ZhciBZPVYuc2VsZWN0QWxsKCIuIit5LmNuLmF4aXNFeHRlbnQpLmRhdGEobSxk KTtZLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCh5LmNuLmF4aXNFeHRlbnQsITApO3Zh ciBXPVkuc2VsZWN0QWxsKCIuIit5LmNuLmF4aXNFeHRlbnRUb3ApLmRhdGEobSxkKTtXLmVu dGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCh5LmNuLmF4aXNFeHRlbnRUb3AsITApLFcuYXR0 cigidHJhbnNmb3JtIixjKDAsLXkuYXhpc0V4dGVudE9mZnNldCkpO3ZhciBYPVcuc2VsZWN0 QWxsKCIuIit5LmNuLmF4aXNFeHRlbnRUb3BUZXh0KS5kYXRhKG0sZCk7WC5lbnRlcigpLmFw cGVuZCgidGV4dCIpLmNsYXNzZWQoeS5jbi5heGlzRXh0ZW50VG9wVGV4dCwhMCkuY2FsbChQ KSxYLnRleHQoKGZ1bmN0aW9uKHQpe3JldHVybiBEKHQsITApfSkpLmVhY2goKGZ1bmN0aW9u KHQpe2YuZm9udChuLnNlbGVjdCh0aGlzKSx0Lm1vZGVsLnJhbmdlRm9udCl9KSk7dmFyIFo9 WS5zZWxlY3RBbGwoIi4iK3kuY24uYXhpc0V4dGVudEJvdHRvbSkuZGF0YShtLGQpO1ouZW50 ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKHkuY24uYXhpc0V4dGVudEJvdHRvbSwhMCksWi5h dHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4gYygwLHQubW9kZWwuaGVpZ2h0 K3kuYXhpc0V4dGVudE9mZnNldCl9KSk7dmFyIEo9Wi5zZWxlY3RBbGwoIi4iK3kuY24uYXhp c0V4dGVudEJvdHRvbVRleHQpLmRhdGEobSxkKTtKLmVudGVyKCkuYXBwZW5kKCJ0ZXh0Iiku Y2xhc3NlZCh5LmNuLmF4aXNFeHRlbnRCb3R0b21UZXh0LCEwKS5hdHRyKCJkeSIsIjAuNzVl bSIpLmNhbGwoUCksSi50ZXh0KChmdW5jdGlvbih0KXtyZXR1cm4gRCh0LCExKX0pKS5lYWNo KChmdW5jdGlvbih0KXtmLmZvbnQobi5zZWxlY3QodGhpcyksdC5tb2RlbC5yYW5nZUZvbnQp fSkpLHguZW5zdXJlQXhpc0JydXNoKFYsVCl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3Jz Y2FsZSI6Mzc4LCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjM4OCwiLi4vLi4vbGliIjo1 MDMsIi4uLy4uL2xpYi9ndXAiOjUwMCwiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo1Mjks Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo1NTQsIi4vYXhpc2JydXNoIjo4ODksIi4v Y29uc3RhbnRzIjo4OTMsIi4vaGVscGVycyI6ODk1LCIuL2xpbmVzIjo4OTcsIkBwbG90bHkv ZDMiOjU4LCJjb2xvci1yZ2JhIjo5MX1dLDkwMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj10KCIuL3BhcmNvb3JkcyIpLGk9dCgiLi4vLi4vbGliL3ByZXBhcmVfcmVn bCIpLGE9dCgiLi9oZWxwZXJzIikuaXNWaXNpYmxlLG89e307ZnVuY3Rpb24gcyh0LGUscil7 dmFyIG49ZS5pbmRleE9mKHIpLGk9dC5pbmRleE9mKG4pO3JldHVybi0xPT09aSYmKGkrPWUu bGVuZ3RoKSxpfShlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj10Ll9mdWxsTGF5b3V0 O2lmKGkodCxbXSxvKSl7dmFyIGw9e30sYz17fSx1PXt9LGY9e30saD1yLl9zaXplO2UuZm9y RWFjaCgoZnVuY3Rpb24oZSxyKXt2YXIgbj1lWzBdLnRyYWNlO3Vbcl09bi5pbmRleDt2YXIg aT1mW3JdPW4uX2Z1bGxJbnB1dC5pbmRleDtsW3JdPXQuZGF0YVtpXS5kaW1lbnNpb25zLGNb cl09dC5kYXRhW2ldLmRpbWVuc2lvbnMuc2xpY2UoKX0pKTtuKHQsZSx7d2lkdGg6aC53LGhl aWdodDpoLmgsbWFyZ2luOnt0OmgudCxyOmgucixiOmguYixsOmgubH19LHtmaWx0ZXJDaGFu Z2VkOmZ1bmN0aW9uKGUsbixpKXt2YXIgYT1jW2VdW25dLG89aS5tYXAoKGZ1bmN0aW9uKHQp e3JldHVybiB0LnNsaWNlKCl9KSkscz0iZGltZW5zaW9uc1siK24rIl0uY29uc3RyYWludHJh bmdlIixsPXIuX3RyYWNlUHJlR1VJW3QuX2Z1bGxEYXRhW3VbZV1dLl9mdWxsSW5wdXQudWlk XTtpZih2b2lkIDA9PT1sW3NdKXt2YXIgaD1hLmNvbnN0cmFpbnRyYW5nZTtsW3NdPWh8fG51 bGx9dmFyIHA9dC5fZnVsbERhdGFbdVtlXV0uZGltZW5zaW9uc1tuXTtvLmxlbmd0aD8oMT09 PW8ubGVuZ3RoJiYobz1vWzBdKSxhLmNvbnN0cmFpbnRyYW5nZT1vLHAuY29uc3RyYWludHJh bmdlPW8uc2xpY2UoKSxvPVtvXSk6KGRlbGV0ZSBhLmNvbnN0cmFpbnRyYW5nZSxkZWxldGUg cC5jb25zdHJhaW50cmFuZ2Usbz1udWxsKTt2YXIgZD17fTtkW3NdPW8sdC5lbWl0KCJwbG90 bHlfcmVzdHlsZSIsW2QsW2ZbZV1dXSl9LGhvdmVyOmZ1bmN0aW9uKGUpe3QuZW1pdCgicGxv dGx5X2hvdmVyIixlKX0sdW5ob3ZlcjpmdW5jdGlvbihlKXt0LmVtaXQoInBsb3RseV91bmhv dmVyIixlKX0sYXhlc01vdmVkOmZ1bmN0aW9uKGUscil7dmFyIG49ZnVuY3Rpb24odCxlKXty ZXR1cm4gZnVuY3Rpb24ocixuKXtyZXR1cm4gcyh0LGUsciktcyh0LGUsbil9fShyLGNbZV0u ZmlsdGVyKGEpKTtsW2VdLnNvcnQobiksY1tlXS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVy biFhKHQpfSkpLnNvcnQoKGZ1bmN0aW9uKHQpe3JldHVybiBjW2VdLmluZGV4T2YodCl9KSku Zm9yRWFjaCgoZnVuY3Rpb24odCl7bFtlXS5zcGxpY2UobFtlXS5pbmRleE9mKHQpLDEpLGxb ZV0uc3BsaWNlKGNbZV0uaW5kZXhPZih0KSwwLHQpfSkpLHQuZW1pdCgicGxvdGx5X3Jlc3R5 bGUiLFt7ZGltZW5zaW9uczpbbFtlXV19LFtmW2VdXV0pfX0pfX0pLnJlZ2xQcmVjb21waWxl ZD1vfSx7Ii4uLy4uL2xpYi9wcmVwYXJlX3JlZ2wiOjUxNiwiLi9oZWxwZXJzIjo4OTUsIi4v cGFyY29vcmRzIjo4OTl9XSw5MDE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vcGxvdHMvZG9tYWlu IikuYXR0cmlidXRlcyxhPXQoIi4uLy4uL3Bsb3RzL2ZvbnRfYXR0cmlidXRlcyIpLG89dCgi Li4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9wbG90cy90 ZW1wbGF0ZV9hdHRyaWJ1dGVzIikuaG92ZXJ0ZW1wbGF0ZUF0dHJzLGw9dCgiLi4vLi4vcGxv dHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLnRleHR0ZW1wbGF0ZUF0dHJzLGM9dCgiLi4vLi4v bGliL2V4dGVuZCIpLmV4dGVuZEZsYXQsdT1hKHtlZGl0VHlwZToicGxvdCIsYXJyYXlPazoh MCxjb2xvckVkaXRUeXBlOiJwbG90In0pO2UuZXhwb3J0cz17bGFiZWxzOnt2YWxUeXBlOiJk YXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LGxhYmVsMDp7dmFsVHlwZToibnVtYmVyIixk Zmx0OjAsZWRpdFR5cGU6ImNhbGMifSxkbGFiZWw6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDox LGVkaXRUeXBlOiJjYWxjIn0sdmFsdWVzOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlw ZToiY2FsYyJ9LG1hcmtlcjp7Y29sb3JzOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlw ZToiY2FsYyJ9LGxpbmU6e2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDpvLmRlZmF1bHRM aW5lLGFycmF5T2s6ITAsZWRpdFR5cGU6InN0eWxlIn0sd2lkdGg6e3ZhbFR5cGU6Im51bWJl ciIsbWluOjAsZGZsdDowLGFycmF5T2s6ITAsZWRpdFR5cGU6InN0eWxlIn0sZWRpdFR5cGU6 ImNhbGMifSxlZGl0VHlwZToiY2FsYyJ9LHRleHQ6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVk aXRUeXBlOiJwbG90In0saG92ZXJ0ZXh0Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsYXJy YXlPazohMCxlZGl0VHlwZToic3R5bGUifSxzY2FsZWdyb3VwOnt2YWxUeXBlOiJzdHJpbmci LGRmbHQ6IiIsZWRpdFR5cGU6ImNhbGMifSx0ZXh0aW5mbzp7dmFsVHlwZToiZmxhZ2xpc3Qi LGZsYWdzOlsibGFiZWwiLCJ0ZXh0IiwidmFsdWUiLCJwZXJjZW50Il0sZXh0cmFzOlsibm9u ZSJdLGVkaXRUeXBlOiJjYWxjIn0saG92ZXJpbmZvOmMoe30sbi5ob3ZlcmluZm8se2ZsYWdz OlsibGFiZWwiLCJ0ZXh0IiwidmFsdWUiLCJwZXJjZW50IiwibmFtZSJdfSksaG92ZXJ0ZW1w bGF0ZTpzKHt9LHtrZXlzOlsibGFiZWwiLCJjb2xvciIsInZhbHVlIiwicGVyY2VudCIsInRl eHQiXX0pLHRleHR0ZW1wbGF0ZTpsKHtlZGl0VHlwZToicGxvdCJ9LHtrZXlzOlsibGFiZWwi LCJjb2xvciIsInZhbHVlIiwicGVyY2VudCIsInRleHQiXX0pLHRleHRwb3NpdGlvbjp7dmFs VHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiaW5zaWRlIiwib3V0c2lkZSIsImF1dG8iLCJu b25lIl0sZGZsdDoiYXV0byIsYXJyYXlPazohMCxlZGl0VHlwZToicGxvdCJ9LHRleHRmb250 OmMoe30sdSx7fSksaW5zaWRldGV4dG9yaWVudGF0aW9uOnt2YWxUeXBlOiJlbnVtZXJhdGVk Iix2YWx1ZXM6WyJob3Jpem9udGFsIiwicmFkaWFsIiwidGFuZ2VudGlhbCIsImF1dG8iXSxk Zmx0OiJhdXRvIixlZGl0VHlwZToicGxvdCJ9LGluc2lkZXRleHRmb250OmMoe30sdSx7fSks b3V0c2lkZXRleHRmb250OmMoe30sdSx7fSksYXV0b21hcmdpbjp7dmFsVHlwZToiYm9vbGVh biIsZGZsdDohMSxlZGl0VHlwZToicGxvdCJ9LHRpdGxlOnt0ZXh0Ont2YWxUeXBlOiJzdHJp bmciLGRmbHQ6IiIsZWRpdFR5cGU6InBsb3QifSxmb250OmMoe30sdSx7fSkscG9zaXRpb246 e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInRvcCBsZWZ0IiwidG9wIGNlbnRlciIs InRvcCByaWdodCIsIm1pZGRsZSBjZW50ZXIiLCJib3R0b20gbGVmdCIsImJvdHRvbSBjZW50 ZXIiLCJib3R0b20gcmlnaHQiXSxlZGl0VHlwZToicGxvdCJ9LGVkaXRUeXBlOiJwbG90In0s ZG9tYWluOmkoe25hbWU6InBpZSIsdHJhY2U6ITAsZWRpdFR5cGU6ImNhbGMifSksaG9sZTp7 dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0OjAsZWRpdFR5cGU6ImNhbGMifSxz b3J0Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJjYWxjIn0sZGlyZWN0 aW9uOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJjbG9ja3dpc2UiLCJjb3VudGVy Y2xvY2t3aXNlIl0sZGZsdDoiY291bnRlcmNsb2Nrd2lzZSIsZWRpdFR5cGU6ImNhbGMifSxy b3RhdGlvbjp7dmFsVHlwZToibnVtYmVyIixtaW46LTM2MCxtYXg6MzYwLGRmbHQ6MCxlZGl0 VHlwZToiY2FsYyJ9LHB1bGw6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDow LGFycmF5T2s6ITAsZWRpdFR5cGU6ImNhbGMifSxfZGVwcmVjYXRlZDp7dGl0bGU6e3ZhbFR5 cGU6InN0cmluZyIsZGZsdDoiIixlZGl0VHlwZToiY2FsYyJ9LHRpdGxlZm9udDpjKHt9LHUs e30pLHRpdGxlcG9zaXRpb246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInRvcCBs ZWZ0IiwidG9wIGNlbnRlciIsInRvcCByaWdodCIsIm1pZGRsZSBjZW50ZXIiLCJib3R0b20g bGVmdCIsImJvdHRvbSBjZW50ZXIiLCJib3R0b20gcmlnaHQiXSxlZGl0VHlwZToiY2FsYyJ9 fX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvci9hdHRyaWJ1dGVzIjozNjUsIi4uLy4uL2xp Yi9leHRlbmQiOjQ5MywiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyI6NTUwLCIuLi8uLi9wbG90 cy9kb21haW4iOjU4NCwiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIjo1ODUsIi4uLy4u L3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjYzM31dLDkwMjpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9wbG90cyIpO3IubmFtZT0icGll IixyLnBsb3Q9ZnVuY3Rpb24odCxlLGksYSl7bi5wbG90QmFzZVBsb3Qoci5uYW1lLHQsZSxp LGEpfSxyLmNsZWFuPWZ1bmN0aW9uKHQsZSxpLGEpe24uY2xlYW5CYXNlUGxvdChyLm5hbWUs dCxlLGksYSl9fSx7Ii4uLy4uL3Bsb3RzL3Bsb3RzIjo2MTl9XSw5MDM6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxpPXQoInRpbnlj b2xvcjIiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxvPXt9O2Z1bmN0aW9uIHMo dCl7cmV0dXJuIGZ1bmN0aW9uKGUscil7cmV0dXJuISFlJiYoISEoZT1pKGUpKS5pc1ZhbGlk KCkmJihlPWEuYWRkT3BhY2l0eShlLGUuZ2V0QWxwaGEoKSksdFtyXXx8KHRbcl09ZSksZSkp fX1mdW5jdGlvbiBsKHQsZSl7dmFyIHIsbj1KU09OLnN0cmluZ2lmeSh0KSxhPWVbbl07aWYo IWEpe2ZvcihhPXQuc2xpY2UoKSxyPTA7cjx0Lmxlbmd0aDtyKyspYS5wdXNoKGkodFtyXSku bGlnaHRlbigyMCkudG9IZXhTdHJpbmcoKSk7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKylhLnB1 c2goaSh0W3JdKS5kYXJrZW4oMjApLnRvSGV4U3RyaW5nKCkpO2Vbbl09YX1yZXR1cm4gYX1l LmV4cG9ydHM9e2NhbGM6ZnVuY3Rpb24odCxlKXt2YXIgcixpLGE9W10sbz10Ll9mdWxsTGF5 b3V0LGw9by5oaWRkZW5sYWJlbHN8fFtdLGM9ZS5sYWJlbHMsdT1lLm1hcmtlci5jb2xvcnN8 fFtdLGY9ZS52YWx1ZXMsaD1lLl9sZW5ndGgscD1lLl9oYXNWYWx1ZXMmJmg7aWYoZS5kbGFi ZWwpZm9yKGM9bmV3IEFycmF5KGgpLHI9MDtyPGg7cisrKWNbcl09U3RyaW5nKGUubGFiZWww K3IqZS5kbGFiZWwpO3ZhciBkPXt9LG09cyhvWyJfIitlLnR5cGUrImNvbG9ybWFwIl0pLGc9 MCx2PSExO2ZvcihyPTA7cjxoO3IrKyl7dmFyIHkseCxiO2lmKHApe2lmKHk9ZltyXSwhbih5 KSljb250aW51ZTt5PSt5fWVsc2UgeT0xO3ZvaWQgMCE9PSh4PWNbcl0pJiYiIiE9PXh8fCh4 PXIpO3ZhciBfPWRbeD1TdHJpbmcoeCldO3ZvaWQgMD09PV8/KGRbeF09YS5sZW5ndGgsKGI9 LTEhPT1sLmluZGV4T2YoeCkpfHwoZys9eSksYS5wdXNoKHt2OnksbGFiZWw6eCxjb2xvcjpt KHVbcl0seCksaTpyLHB0czpbcl0saGlkZGVuOmJ9KSk6KHY9ITAsKGk9YVtfXSkudis9eSxp LnB0cy5wdXNoKHIpLGkuaGlkZGVufHwoZys9eSksITE9PT1pLmNvbG9yJiZ1W3JdJiYoaS5j b2xvcj1tKHVbcl0seCkpKX1yZXR1cm4gYT1hLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJu IHQudj49MH0pKSwoImZ1bm5lbGFyZWEiPT09ZS50eXBlP3Y6ZS5zb3J0KSYmYS5zb3J0KChm dW5jdGlvbih0LGUpe3JldHVybiBlLnYtdC52fSkpLGFbMF0mJihhWzBdLnZUb3RhbD1nKSxh fSxjcm9zc1RyYWNlQ2FsYzpmdW5jdGlvbih0LGUpe3ZhciByPShlfHx7fSkudHlwZTtyfHwo cj0icGllIik7dmFyIG49dC5fZnVsbExheW91dCxpPXQuY2FsY2RhdGEsYT1uW3IrImNvbG9y d2F5Il0scz1uWyJfIityKyJjb2xvcm1hcCJdO25bImV4dGVuZCIrcisiY29sb3JzIl0mJihh PWwoYSxvKSk7Zm9yKHZhciBjPTAsdT0wO3U8aS5sZW5ndGg7dSsrKXt2YXIgZj1pW3VdO2lm KGZbMF0udHJhY2UudHlwZT09PXIpZm9yKHZhciBoPTA7aDxmLmxlbmd0aDtoKyspe3ZhciBw PWZbaF07ITE9PT1wLmNvbG9yJiYoc1twLmxhYmVsXT9wLmNvbG9yPXNbcC5sYWJlbF06KHNb cC5sYWJlbF09cC5jb2xvcj1hW2MlYS5sZW5ndGhdLGMrKykpfX19LG1ha2VQdWxsQ29sb3JG bjpzLGdlbmVyYXRlRXh0ZW5kZWRDb2xvcnM6bH19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xv ciI6MzY2LCJmYXN0LWlzbnVtZXJpYyI6MTkwLHRpbnljb2xvcjI6MzEyfV0sOTA0OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksaT10 KCIuLi8uLi9saWIiKSxhPXQoIi4vYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vcGxvdHMvZG9t YWluIikuZGVmYXVsdHMscz10KCIuLi9iYXIvZGVmYXVsdHMiKS5oYW5kbGVUZXh0O2Z1bmN0 aW9uIGwodCxlKXt2YXIgcj1BcnJheS5pc0FycmF5KHQpLGE9aS5pc0FycmF5T3JUeXBlZEFy cmF5KGUpLG89TWF0aC5taW4ocj90Lmxlbmd0aDoxLzAsYT9lLmxlbmd0aDoxLzApO2lmKGlz RmluaXRlKG8pfHwobz0wKSxvJiZhKXtmb3IodmFyIHMsbD0wO2w8bztsKyspe3ZhciBjPWVb bF07aWYobihjKSYmYz4wKXtzPSEwO2JyZWFrfX1zfHwobz0wKX1yZXR1cm57aGFzTGFiZWxz OnIsaGFzVmFsdWVzOmEsbGVuOm99fWUuZXhwb3J0cz17aGFuZGxlTGFiZWxzQW5kVmFsdWVz Omwsc3VwcGx5RGVmYXVsdHM6ZnVuY3Rpb24odCxlLHIsbil7ZnVuY3Rpb24gYyhyLG4pe3Jl dHVybiBpLmNvZXJjZSh0LGUsYSxyLG4pfXZhciB1PWwoYygibGFiZWxzIiksYygidmFsdWVz IikpLGY9dS5sZW47aWYoZS5faGFzTGFiZWxzPXUuaGFzTGFiZWxzLGUuX2hhc1ZhbHVlcz11 Lmhhc1ZhbHVlcywhZS5faGFzTGFiZWxzJiZlLl9oYXNWYWx1ZXMmJihjKCJsYWJlbDAiKSxj KCJkbGFiZWwiKSksZil7ZS5fbGVuZ3RoPWYsYygibWFya2VyLmxpbmUud2lkdGgiKSYmYygi bWFya2VyLmxpbmUuY29sb3IiKSxjKCJtYXJrZXIuY29sb3JzIiksYygic2NhbGVncm91cCIp O3ZhciBoLHA9YygidGV4dCIpLGQ9YygidGV4dHRlbXBsYXRlIik7aWYoZHx8KGg9YygidGV4 dGluZm8iLEFycmF5LmlzQXJyYXkocCk/InRleHQrcGVyY2VudCI6InBlcmNlbnQiKSksYygi aG92ZXJ0ZXh0IiksYygiaG92ZXJ0ZW1wbGF0ZSIpLGR8fGgmJiJub25lIiE9PWgpe3ZhciBt PWMoInRleHRwb3NpdGlvbiIpO3ModCxlLG4sYyxtLHttb2R1bGVIYXNTZWxlY3RlZDohMSxt b2R1bGVIYXNVbnNlbGVjdGVkOiExLG1vZHVsZUhhc0NvbnN0cmFpbjohMSxtb2R1bGVIYXND bGlwb25heGlzOiExLG1vZHVsZUhhc1RleHRhbmdsZTohMSxtb2R1bGVIYXNJbnNpZGVhbmNo b3I6ITF9KSwoQXJyYXkuaXNBcnJheShtKXx8ImF1dG8iPT09bXx8Im91dHNpZGUiPT09bSkm JmMoImF1dG9tYXJnaW4iKSwoImluc2lkZSI9PT1tfHwiYXV0byI9PT1tfHxBcnJheS5pc0Fy cmF5KG0pKSYmYygiaW5zaWRldGV4dG9yaWVudGF0aW9uIil9byhlLG4sYyk7dmFyIGc9Yygi aG9sZSIpO2lmKGMoInRpdGxlLnRleHQiKSl7dmFyIHY9YygidGl0bGUucG9zaXRpb24iLGc/ Im1pZGRsZSBjZW50ZXIiOiJ0b3AgY2VudGVyIik7Z3x8Im1pZGRsZSBjZW50ZXIiIT09dnx8 KGUudGl0bGUucG9zaXRpb249InRvcCBjZW50ZXIiKSxpLmNvZXJjZUZvbnQoYywidGl0bGUu Zm9udCIsbi5mb250KX1jKCJzb3J0IiksYygiZGlyZWN0aW9uIiksYygicm90YXRpb24iKSxj KCJwdWxsIil9ZWxzZSBlLnZpc2libGU9ITF9fX0seyIuLi8uLi9saWIiOjUwMywiLi4vLi4v cGxvdHMvZG9tYWluIjo1ODQsIi4uL2Jhci9kZWZhdWx0cyI6NjUyLCIuL2F0dHJpYnV0ZXMi OjkwMSwiZmFzdC1pc251bWVyaWMiOjE5MH1dLDkwNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2Z4L2hlbHBlcnMiKS5hcHBlbmRB cnJheU11bHRpUG9pbnRWYWx1ZXM7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9e2N1 cnZlTnVtYmVyOmUuaW5kZXgscG9pbnROdW1iZXJzOnQucHRzLGRhdGE6ZS5faW5wdXQsZnVs bERhdGE6ZSxsYWJlbDp0LmxhYmVsLGNvbG9yOnQuY29sb3IsdmFsdWU6dC52LHBlcmNlbnQ6 dC5wZXJjZW50LHRleHQ6dC50ZXh0LGJib3g6dC5iYm94LHY6dC52fTtyZXR1cm4gMT09PXQu cHRzLmxlbmd0aCYmKHIucG9pbnROdW1iZXI9ci5pPXQucHRzWzBdKSxuKHIsZSx0LnB0cyks ImZ1bm5lbGFyZWEiPT09ZS50eXBlJiYoZGVsZXRlIHIudixkZWxldGUgci5pKSxyfX0seyIu Li8uLi9jb21wb25lbnRzL2Z4L2hlbHBlcnMiOjQwMn1dLDkwNjpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKTtmdW5jdGlvbiBpKHQpe3JldHVy bi0xIT09dC5pbmRleE9mKCJlIik/dC5yZXBsYWNlKC9bLl0/MCtlLywiZSIpOi0xIT09dC5p bmRleE9mKCIuIik/dC5yZXBsYWNlKC9bLl0/MCskLywiIik6dH1yLmZvcm1hdFBpZVBlcmNl bnQ9ZnVuY3Rpb24odCxlKXt2YXIgcj1pKCgxMDAqdCkudG9QcmVjaXNpb24oMykpO3JldHVy biBuLm51bVNlcGFyYXRlKHIsZSkrIiUifSxyLmZvcm1hdFBpZVZhbHVlPWZ1bmN0aW9uKHQs ZSl7dmFyIHI9aSh0LnRvUHJlY2lzaW9uKDEwKSk7cmV0dXJuIG4ubnVtU2VwYXJhdGUocixl KX0sci5nZXRGaXJzdEZpbGxlZD1mdW5jdGlvbih0LGUpe2lmKEFycmF5LmlzQXJyYXkodCkp Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPXRbZVtyXV07aWYobnx8MD09PW58 fCIiPT09bilyZXR1cm4gbn19LHIuY2FzdE9wdGlvbj1mdW5jdGlvbih0LGUpe3JldHVybiBB cnJheS5pc0FycmF5KHQpP3IuZ2V0Rmlyc3RGaWxsZWQodCxlKTp0fHx2b2lkIDB9LHIuZ2V0 Um90YXRpb25BbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4oImF1dG8iPT09dD8wOnQpKk1hdGgu UEkvMTgwfX0seyIuLi8uLi9saWIiOjUwM31dLDkwNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0IjtlLmV4cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5 RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLnN1cHBseURlZmF1bHRzLHN1cHBseUxheW91dERl ZmF1bHRzOnQoIi4vbGF5b3V0X2RlZmF1bHRzIiksbGF5b3V0QXR0cmlidXRlczp0KCIuL2xh eW91dF9hdHRyaWJ1dGVzIiksY2FsYzp0KCIuL2NhbGMiKS5jYWxjLGNyb3NzVHJhY2VDYWxj OnQoIi4vY2FsYyIpLmNyb3NzVHJhY2VDYWxjLHBsb3Q6dCgiLi9wbG90IikucGxvdCxzdHls ZTp0KCIuL3N0eWxlIiksc3R5bGVPbmU6dCgiLi9zdHlsZV9vbmUiKSxtb2R1bGVUeXBlOiJ0 cmFjZSIsbmFtZToicGllIixiYXNlUGxvdE1vZHVsZTp0KCIuL2Jhc2VfcGxvdCIpLGNhdGVn b3JpZXM6WyJwaWUtbGlrZSIsInBpZSIsInNob3dMZWdlbmQiXSxtZXRhOnt9fX0seyIuL2F0 dHJpYnV0ZXMiOjkwMSwiLi9iYXNlX3Bsb3QiOjkwMiwiLi9jYWxjIjo5MDMsIi4vZGVmYXVs dHMiOjkwNCwiLi9sYXlvdXRfYXR0cmlidXRlcyI6OTA4LCIuL2xheW91dF9kZWZhdWx0cyI6 OTA5LCIuL3Bsb3QiOjkxMCwiLi9zdHlsZSI6OTExLCIuL3N0eWxlX29uZSI6OTEyfV0sOTA4 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17aGlkZGVubGFiZWxz Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHBpZWNvbG9yd2F5Ont2 YWxUeXBlOiJjb2xvcmxpc3QiLGVkaXRUeXBlOiJjYWxjIn0sZXh0ZW5kcGllY29sb3JzOnt2 YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJjYWxjIn19fSx7fV0sOTA5Oltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgi Li9sYXlvdXRfYXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Z1bmN0aW9u IHIocixhKXtyZXR1cm4gbi5jb2VyY2UodCxlLGkscixhKX1yKCJoaWRkZW5sYWJlbHMiKSxy KCJwaWVjb2xvcndheSIsZS5jb2xvcndheSkscigiZXh0ZW5kcGllY29sb3JzIil9fSx7Ii4u Ly4uL2xpYiI6NTAzLCIuL2xheW91dF9hdHRyaWJ1dGVzIjo5MDh9XSw5MTA6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiQHBsb3RseS9kMyIpLGk9dCgiLi4vLi4v cGxvdHMvcGxvdHMiKSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvZngiKSxvPXQoIi4uLy4uL2Nv bXBvbmVudHMvY29sb3IiKSxzPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLGw9dCgi Li4vLi4vbGliIiksYz1sLnN0clNjYWxlLHU9bC5zdHJUcmFuc2xhdGUsZj10KCIuLi8uLi9s aWIvc3ZnX3RleHRfdXRpbHMiKSxoPXQoIi4uL2Jhci91bmlmb3JtX3RleHQiKSxwPWgucmVj b3JkTWluVGV4dFNpemUsZD1oLmNsZWFyTWluVGV4dFNpemUsbT10KCIuLi9iYXIvY29uc3Rh bnRzIikuVEVYVFBBRCxnPXQoIi4vaGVscGVycyIpLHY9dCgiLi9ldmVudF9kYXRhIikseT10 KCIuLi8uLi9saWIiKS5pc1ZhbGlkVGV4dFZhbHVlO2Z1bmN0aW9uIHgodCxlLHIpe3ZhciBp PXJbMF0sbz1pLmN4LHM9aS5jeSxjPWkudHJhY2UsdT0iZnVubmVsYXJlYSI9PT1jLnR5cGU7 Il9oYXNIb3ZlckxhYmVsImluIGN8fChjLl9oYXNIb3ZlckxhYmVsPSExKSwiX2hhc0hvdmVy RXZlbnQiaW4gY3x8KGMuX2hhc0hvdmVyRXZlbnQ9ITEpLHQub24oIm1vdXNlb3ZlciIsKGZ1 bmN0aW9uKHQpe3ZhciByPWUuX2Z1bGxMYXlvdXQsZj1lLl9mdWxsRGF0YVtjLmluZGV4XTtp ZighZS5fZHJhZ2dpbmcmJiExIT09ci5ob3Zlcm1vZGUpe3ZhciBoPWYuaG92ZXJpbmZvO2lm KEFycmF5LmlzQXJyYXkoaCkmJihoPWEuY2FzdEhvdmVyaW5mbyh7aG92ZXJpbmZvOltnLmNh c3RPcHRpb24oaCx0LnB0cyldLF9tb2R1bGU6Yy5fbW9kdWxlfSxyLDApKSwiYWxsIj09PWgm JihoPSJsYWJlbCt0ZXh0K3ZhbHVlK3BlcmNlbnQrbmFtZSIpLGYuaG92ZXJ0ZW1wbGF0ZXx8 Im5vbmUiIT09aCYmInNraXAiIT09aCYmaCl7dmFyIHA9dC5ySW5zY3JpYmVkfHwwLGQ9byt0 LnB4bWlkWzBdKigxLXApLG09cyt0LnB4bWlkWzFdKigxLXApLHk9ci5zZXBhcmF0b3JzLHg9 W107aWYoaCYmLTEhPT1oLmluZGV4T2YoImxhYmVsIikmJngucHVzaCh0LmxhYmVsKSx0LnRl eHQ9Zy5jYXN0T3B0aW9uKGYuaG92ZXJ0ZXh0fHxmLnRleHQsdC5wdHMpLGgmJi0xIT09aC5p bmRleE9mKCJ0ZXh0Iikpe3ZhciBiPXQudGV4dDtsLmlzVmFsaWRUZXh0VmFsdWUoYikmJngu cHVzaChiKX10LnZhbHVlPXQudix0LnZhbHVlTGFiZWw9Zy5mb3JtYXRQaWVWYWx1ZSh0LnYs eSksaCYmLTEhPT1oLmluZGV4T2YoInZhbHVlIikmJngucHVzaCh0LnZhbHVlTGFiZWwpLHQu cGVyY2VudD10LnYvaS52VG90YWwsdC5wZXJjZW50TGFiZWw9Zy5mb3JtYXRQaWVQZXJjZW50 KHQucGVyY2VudCx5KSxoJiYtMSE9PWguaW5kZXhPZigicGVyY2VudCIpJiZ4LnB1c2godC5w ZXJjZW50TGFiZWwpO3ZhciBfPWYuaG92ZXJsYWJlbCx3PV8uZm9udCxUPVtdO2EubG9uZUhv dmVyKHt0cmFjZTpjLHgwOmQtcCppLnIseDE6ZCtwKmkucix5Om0sX3gwOnU/byt0LlRMWzBd OmQtcCppLnIsX3gxOnU/byt0LlRSWzBdOmQrcCppLnIsX3kwOnU/cyt0LlRMWzFdOm0tcCpp LnIsX3kxOnU/cyt0LkJMWzFdOm0rcCppLnIsdGV4dDp4LmpvaW4oIjxicj4iKSxuYW1lOmYu aG92ZXJ0ZW1wbGF0ZXx8LTEhPT1oLmluZGV4T2YoIm5hbWUiKT9mLm5hbWU6dm9pZCAwLGlk ZWFsQWxpZ246dC5weG1pZFswXTwwPyJsZWZ0IjoicmlnaHQiLGNvbG9yOmcuY2FzdE9wdGlv bihfLmJnY29sb3IsdC5wdHMpfHx0LmNvbG9yLGJvcmRlckNvbG9yOmcuY2FzdE9wdGlvbihf LmJvcmRlcmNvbG9yLHQucHRzKSxmb250RmFtaWx5OmcuY2FzdE9wdGlvbih3LmZhbWlseSx0 LnB0cyksZm9udFNpemU6Zy5jYXN0T3B0aW9uKHcuc2l6ZSx0LnB0cyksZm9udENvbG9yOmcu Y2FzdE9wdGlvbih3LmNvbG9yLHQucHRzKSxuYW1lTGVuZ3RoOmcuY2FzdE9wdGlvbihfLm5h bWVsZW5ndGgsdC5wdHMpLHRleHRBbGlnbjpnLmNhc3RPcHRpb24oXy5hbGlnbix0LnB0cyks aG92ZXJ0ZW1wbGF0ZTpnLmNhc3RPcHRpb24oZi5ob3ZlcnRlbXBsYXRlLHQucHRzKSxob3Zl cnRlbXBsYXRlTGFiZWxzOnQsZXZlbnREYXRhOlt2KHQsZildfSx7Y29udGFpbmVyOnIuX2hv dmVybGF5ZXIubm9kZSgpLG91dGVyQ29udGFpbmVyOnIuX3BhcGVyLm5vZGUoKSxnZDplLGlu T3V0X2Jib3g6VH0pLHQuYmJveD1UWzBdLGMuX2hhc0hvdmVyTGFiZWw9ITB9Yy5faGFzSG92 ZXJFdmVudD0hMCxlLmVtaXQoInBsb3RseV9ob3ZlciIse3BvaW50czpbdih0LGYpXSxldmVu dDpuLmV2ZW50fSl9fSkpLHQub24oIm1vdXNlb3V0IiwoZnVuY3Rpb24odCl7dmFyIHI9ZS5f ZnVsbExheW91dCxpPWUuX2Z1bGxEYXRhW2MuaW5kZXhdLG89bi5zZWxlY3QodGhpcykuZGF0 dW0oKTtjLl9oYXNIb3ZlckV2ZW50JiYodC5vcmlnaW5hbEV2ZW50PW4uZXZlbnQsZS5lbWl0 KCJwbG90bHlfdW5ob3ZlciIse3BvaW50czpbdihvLGkpXSxldmVudDpuLmV2ZW50fSksYy5f aGFzSG92ZXJFdmVudD0hMSksYy5faGFzSG92ZXJMYWJlbCYmKGEubG9uZVVuaG92ZXIoci5f aG92ZXJsYXllci5ub2RlKCkpLGMuX2hhc0hvdmVyTGFiZWw9ITEpfSkpLHQub24oImNsaWNr IiwoZnVuY3Rpb24odCl7dmFyIHI9ZS5fZnVsbExheW91dCxpPWUuX2Z1bGxEYXRhW2MuaW5k ZXhdO2UuX2RyYWdnaW5nfHwhMT09PXIuaG92ZXJtb2RlfHwoZS5faG92ZXJkYXRhPVt2KHQs aSldLGEuY2xpY2soZSxuLmV2ZW50KSl9KSl9ZnVuY3Rpb24gYih0LGUscil7dmFyIG49Zy5j YXN0T3B0aW9uKHQuaW5zaWRldGV4dGZvbnQuY29sb3IsZS5wdHMpOyFuJiZ0Ll9pbnB1dC50 ZXh0Zm9udCYmKG49Zy5jYXN0T3B0aW9uKHQuX2lucHV0LnRleHRmb250LmNvbG9yLGUucHRz KSk7dmFyIGk9Zy5jYXN0T3B0aW9uKHQuaW5zaWRldGV4dGZvbnQuZmFtaWx5LGUucHRzKXx8 Zy5jYXN0T3B0aW9uKHQudGV4dGZvbnQuZmFtaWx5LGUucHRzKXx8ci5mYW1pbHksYT1nLmNh c3RPcHRpb24odC5pbnNpZGV0ZXh0Zm9udC5zaXplLGUucHRzKXx8Zy5jYXN0T3B0aW9uKHQu dGV4dGZvbnQuc2l6ZSxlLnB0cyl8fHIuc2l6ZTtyZXR1cm57Y29sb3I6bnx8by5jb250cmFz dChlLmNvbG9yKSxmYW1pbHk6aSxzaXplOmF9fWZ1bmN0aW9uIF8odCxlKXtmb3IodmFyIHIs bixpPTA7aTx0Lmxlbmd0aDtpKyspaWYoKG49KHI9dFtpXVswXSkudHJhY2UpLnRpdGxlLnRl eHQpe3ZhciBhPW4udGl0bGUudGV4dDtuLl9tZXRhJiYoYT1sLnRlbXBsYXRlU3RyaW5nKGEs bi5fbWV0YSkpO3ZhciBvPXMudGVzdGVyLmFwcGVuZCgidGV4dCIpLmF0dHIoImRhdGEtbm90 ZXgiLDEpLnRleHQoYSkuY2FsbChzLmZvbnQsbi50aXRsZS5mb250KS5jYWxsKGYuY29udmVy dFRvVHNwYW5zLGUpLGM9cy5iQm94KG8ubm9kZSgpLCEwKTtyLnRpdGxlQm94PXt3aWR0aDpj LndpZHRoLGhlaWdodDpjLmhlaWdodH0sby5yZW1vdmUoKX19ZnVuY3Rpb24gdyh0LGUscil7 dmFyIG49ci5yfHxlLnJweDEsaT1lLnJJbnNjcmliZWQ7aWYoZS5zdGFydGFuZ2xlPT09ZS5z dG9wYW5nbGUpcmV0dXJue3JDZW50ZXI6MS1pLHNjYWxlOjAscm90YXRlOjAsdGV4dFBvc0Fu Z2xlOjB9O3ZhciBhLG89ZS5yaW5nLHM9MT09PW8mJk1hdGguYWJzKGUuc3RhcnRhbmdsZS1l LnN0b3BhbmdsZSk9PT0yKk1hdGguUEksbD1lLmhhbGZhbmdsZSxjPWUubWlkYW5nbGUsdT1y LnRyYWNlLmluc2lkZXRleHRvcmllbnRhdGlvbixmPSJob3Jpem9udGFsIj09PXUsaD0idGFu Z2VudGlhbCI9PT11LHA9InJhZGlhbCI9PT11LGQ9ImF1dG8iPT09dSxtPVtdO2lmKCFkKXt2 YXIgZyx2PWZ1bmN0aW9uKHIsaSl7aWYoZnVuY3Rpb24odCxlKXt2YXIgcj10LnN0YXJ0YW5n bGUsbj10LnN0b3BhbmdsZTtyZXR1cm4gcj5lJiZlPm58fHI8ZSYmZTxufShlLHIpKXt2YXIg cz1NYXRoLmFicyhyLWUuc3RhcnRhbmdsZSksbD1NYXRoLmFicyhyLWUuc3RvcGFuZ2xlKSxj PXM8bD9zOmw7KGE9InRhbiI9PT1pP2sodCxuLG8sYywwKTpUKHQsbixvLGMsTWF0aC5QSS8y KSkudGV4dFBvc0FuZ2xlPXIsbS5wdXNoKGEpfX07aWYoZnx8aCl7Zm9yKGc9NDtnPj0tNDtn LT0yKXYoTWF0aC5QSSpnLCJ0YW4iKTtmb3IoZz00O2c+PS00O2ctPTIpdihNYXRoLlBJKihn KzEpLCJ0YW4iKX1pZihmfHxwKXtmb3IoZz00O2c+PS00O2ctPTIpdihNYXRoLlBJKihnKzEu NSksInJhZCIpO2ZvcihnPTQ7Zz49LTQ7Zy09Mil2KE1hdGguUEkqKGcrLjUpLCJyYWQiKX19 aWYoc3x8ZHx8Zil7dmFyIHk9TWF0aC5zcXJ0KHQud2lkdGgqdC53aWR0aCt0LmhlaWdodCp0 LmhlaWdodCk7aWYoKGE9e3NjYWxlOmkqbioyL3ksckNlbnRlcjoxLWkscm90YXRlOjB9KS50 ZXh0UG9zQW5nbGU9KGUuc3RhcnRhbmdsZStlLnN0b3BhbmdsZSkvMixhLnNjYWxlPj0xKXJl dHVybiBhO20ucHVzaChhKX0oZHx8cCkmJigoYT1UKHQsbixvLGwsYykpLnRleHRQb3NBbmds ZT0oZS5zdGFydGFuZ2xlK2Uuc3RvcGFuZ2xlKS8yLG0ucHVzaChhKSksKGR8fGgpJiYoKGE9 ayh0LG4sbyxsLGMpKS50ZXh0UG9zQW5nbGU9KGUuc3RhcnRhbmdsZStlLnN0b3BhbmdsZSkv MixtLnB1c2goYSkpO2Zvcih2YXIgeD0wLGI9MCxfPTA7XzxtLmxlbmd0aDtfKyspe3ZhciB3 PW1bX10uc2NhbGU7aWYoYjx3JiYoYj13LHg9XyksIWQmJmI+PTEpYnJlYWt9cmV0dXJuIG1b eF19ZnVuY3Rpb24gVCh0LGUscixuLGkpe2U9TWF0aC5tYXgoMCxlLTIqbSk7dmFyIGE9dC53 aWR0aC90LmhlaWdodCxvPVMoYSxuLGUscik7cmV0dXJue3NjYWxlOjIqby90LmhlaWdodCxy Q2VudGVyOkEoYSxvL2UpLHJvdGF0ZTpNKGkpfX1mdW5jdGlvbiBrKHQsZSxyLG4saSl7ZT1N YXRoLm1heCgwLGUtMiptKTt2YXIgYT10LmhlaWdodC90LndpZHRoLG89UyhhLG4sZSxyKTty ZXR1cm57c2NhbGU6MipvL3Qud2lkdGgsckNlbnRlcjpBKGEsby9lKSxyb3RhdGU6TShpK01h dGguUEkvMil9fWZ1bmN0aW9uIEEodCxlKXtyZXR1cm4gTWF0aC5jb3MoZSktdCplfWZ1bmN0 aW9uIE0odCl7cmV0dXJuKDE4MC9NYXRoLlBJKnQrNzIwKSUxODAtOTB9ZnVuY3Rpb24gUyh0 LGUscixuKXt2YXIgaT10KzEvKDIqTWF0aC50YW4oZSkpO3JldHVybiByKk1hdGgubWluKDEv KE1hdGguc3FydChpKmkrLjUpK2kpLG4vKE1hdGguc3FydCh0KnQrbi8yKSt0KSl9ZnVuY3Rp b24gRSh0LGUpe3JldHVybiB0LnYhPT1lLnZUb3RhbHx8ZS50cmFjZS5ob2xlP01hdGgubWlu KDEvKDErMS9NYXRoLnNpbih0LmhhbGZhbmdsZSkpLHQucmluZy8yKToxfWZ1bmN0aW9uIEwo dCxlKXt2YXIgcj1lLnB4bWlkWzBdLG49ZS5weG1pZFsxXSxpPXQud2lkdGgvMixhPXQuaGVp Z2h0LzI7cmV0dXJuIHI8MCYmKGkqPS0xKSxuPDAmJihhKj0tMSkse3NjYWxlOjEsckNlbnRl cjoxLHJvdGF0ZTowLHg6aStNYXRoLmFicyhhKSooaT4wPzE6LTEpLzIseTphLygxK3Iqci8o bipuKSksb3V0c2lkZTohMH19ZnVuY3Rpb24gQyh0LGUpe3ZhciByLG4saSxhPXQudHJhY2Us bz17eDp0LmN4LHk6dC5jeX0scz17dHg6MCx0eTowfTtzLnR5Kz1hLnRpdGxlLmZvbnQuc2l6 ZSxpPUkoYSksLTEhPT1hLnRpdGxlLnBvc2l0aW9uLmluZGV4T2YoInRvcCIpPyhvLnktPSgx K2kpKnQucixzLnR5LT10LnRpdGxlQm94LmhlaWdodCk6LTEhPT1hLnRpdGxlLnBvc2l0aW9u LmluZGV4T2YoImJvdHRvbSIpJiYoby55Kz0oMStpKSp0LnIpO3ZhciBsLGMsdT0obD10LnIs Yz10LnRyYWNlLmFzcGVjdHJhdGlvLGwvKHZvaWQgMD09PWM/MTpjKSksZj1lLncqKGEuZG9t YWluLnhbMV0tYS5kb21haW4ueFswXSkvMjtyZXR1cm4tMSE9PWEudGl0bGUucG9zaXRpb24u aW5kZXhPZigibGVmdCIpPyhmKz11LG8ueC09KDEraSkqdSxzLnR4Kz10LnRpdGxlQm94Lndp ZHRoLzIpOi0xIT09YS50aXRsZS5wb3NpdGlvbi5pbmRleE9mKCJjZW50ZXIiKT9mKj0yOi0x IT09YS50aXRsZS5wb3NpdGlvbi5pbmRleE9mKCJyaWdodCIpJiYoZis9dSxvLngrPSgxK2kp KnUscy50eC09dC50aXRsZUJveC53aWR0aC8yKSxyPWYvdC50aXRsZUJveC53aWR0aCxuPVAo dCxlKS90LnRpdGxlQm94LmhlaWdodCx7eDpvLngseTpvLnksc2NhbGU6TWF0aC5taW4ocixu KSx0eDpzLnR4LHR5OnMudHl9fWZ1bmN0aW9uIFAodCxlKXt2YXIgcj10LnRyYWNlLG49ZS5o KihyLmRvbWFpbi55WzFdLXIuZG9tYWluLnlbMF0pO3JldHVybiBNYXRoLm1pbih0LnRpdGxl Qm94LmhlaWdodCxuLzIpfWZ1bmN0aW9uIEkodCl7dmFyIGUscj10LnB1bGw7aWYoIXIpcmV0 dXJuIDA7aWYoQXJyYXkuaXNBcnJheShyKSlmb3Iocj0wLGU9MDtlPHQucHVsbC5sZW5ndGg7 ZSsrKXQucHVsbFtlXT5yJiYocj10LnB1bGxbZV0pO3JldHVybiByfWZ1bmN0aW9uIE8odCxl KXtmb3IodmFyIHI9W10sbj0wO248dC5sZW5ndGg7bisrKXt2YXIgaT10W25dWzBdLGE9aS50 cmFjZSxvPWEuZG9tYWluLHM9ZS53KihvLnhbMV0tby54WzBdKSxsPWUuaCooby55WzFdLW8u eVswXSk7YS50aXRsZS50ZXh0JiYibWlkZGxlIGNlbnRlciIhPT1hLnRpdGxlLnBvc2l0aW9u JiYobC09UChpLGUpKTt2YXIgYz1zLzIsdT1sLzI7ImZ1bm5lbGFyZWEiIT09YS50eXBlfHxh LnNjYWxlZ3JvdXB8fCh1Lz1hLmFzcGVjdHJhdGlvKSxpLnI9TWF0aC5taW4oYyx1KS8oMStJ KGEpKSxpLmN4PWUubCtlLncqKGEuZG9tYWluLnhbMV0rYS5kb21haW4ueFswXSkvMixpLmN5 PWUudCtlLmgqKDEtYS5kb21haW4ueVswXSktbC8yLGEudGl0bGUudGV4dCYmLTEhPT1hLnRp dGxlLnBvc2l0aW9uLmluZGV4T2YoImJvdHRvbSIpJiYoaS5jeS09UChpLGUpKSxhLnNjYWxl Z3JvdXAmJi0xPT09ci5pbmRleE9mKGEuc2NhbGVncm91cCkmJnIucHVzaChhLnNjYWxlZ3Jv dXApfSFmdW5jdGlvbih0LGUpe2Zvcih2YXIgcixuLGksYT0wO2E8ZS5sZW5ndGg7YSsrKXt2 YXIgbz0xLzAscz1lW2FdO2ZvcihuPTA7bjx0Lmxlbmd0aDtuKyspaWYocj10W25dWzBdLChp PXIudHJhY2UpLnNjYWxlZ3JvdXA9PT1zKXt2YXIgbDtpZigicGllIj09PWkudHlwZSlsPXIu cipyLnI7ZWxzZSBpZigiZnVubmVsYXJlYSI9PT1pLnR5cGUpe3ZhciBjLHU7aS5hc3BlY3Ry YXRpbz4xPyhjPXIucix1PWMvaS5hc3BlY3RyYXRpbyk6KHU9ci5yLGM9dSppLmFzcGVjdHJh dGlvKSxjKj0oMStpLmJhc2VyYXRpbykvMixsPWMqdX1vPU1hdGgubWluKG8sbC9yLnZUb3Rh bCl9Zm9yKG49MDtuPHQubGVuZ3RoO24rKylpZihyPXRbbl1bMF0sKGk9ci50cmFjZSkuc2Nh bGVncm91cD09PXMpe3ZhciBmPW8qci52VG90YWw7ImZ1bm5lbGFyZWEiPT09aS50eXBlJiYo Zi89KDEraS5iYXNlcmF0aW8pLzIsZi89aS5hc3BlY3RyYXRpbyksci5yPU1hdGguc3FydChm KX19fSh0LHIpfWZ1bmN0aW9uIHoodCxlKXtyZXR1cm5bdCpNYXRoLnNpbihlKSwtdCpNYXRo LmNvcyhlKV19ZnVuY3Rpb24gRCh0LGUscil7dmFyIG49dC5fZnVsbExheW91dCxpPXIudHJh Y2UsYT1pLnRleHR0ZW1wbGF0ZSxvPWkudGV4dGluZm87aWYoIWEmJm8mJiJub25lIiE9PW8p e3ZhciBzLGM9by5zcGxpdCgiKyIpLHU9ZnVuY3Rpb24odCl7cmV0dXJuLTEhPT1jLmluZGV4 T2YodCl9LGY9dSgibGFiZWwiKSxoPXUoInRleHQiKSxwPXUoInZhbHVlIiksZD11KCJwZXJj ZW50IiksbT1uLnNlcGFyYXRvcnM7aWYocz1mP1tlLmxhYmVsXTpbXSxoKXt2YXIgdj1nLmdl dEZpcnN0RmlsbGVkKGkudGV4dCxlLnB0cyk7eSh2KSYmcy5wdXNoKHYpfXAmJnMucHVzaChn LmZvcm1hdFBpZVZhbHVlKGUudixtKSksZCYmcy5wdXNoKGcuZm9ybWF0UGllUGVyY2VudChl LnYvci52VG90YWwsbSkpLGUudGV4dD1zLmpvaW4oIjxicj4iKX1pZihhKXt2YXIgeD1sLmNh c3RPcHRpb24oaSxlLmksInRleHR0ZW1wbGF0ZSIpO2lmKHgpe3ZhciBiPWZ1bmN0aW9uKHQp e3JldHVybntsYWJlbDp0LmxhYmVsLHZhbHVlOnQudix2YWx1ZUxhYmVsOmcuZm9ybWF0UGll VmFsdWUodC52LG4uc2VwYXJhdG9ycykscGVyY2VudDp0LnYvci52VG90YWwscGVyY2VudExh YmVsOmcuZm9ybWF0UGllUGVyY2VudCh0LnYvci52VG90YWwsbi5zZXBhcmF0b3JzKSxjb2xv cjp0LmNvbG9yLHRleHQ6dC50ZXh0LGN1c3RvbWRhdGE6bC5jYXN0T3B0aW9uKGksdC5pLCJj dXN0b21kYXRhIil9fShlKSxfPWcuZ2V0Rmlyc3RGaWxsZWQoaS50ZXh0LGUucHRzKTsoeShf KXx8IiI9PT1fKSYmKGIudGV4dD1fKSxlLnRleHQ9bC50ZXh0dGVtcGxhdGVTdHJpbmcoeCxi LHQuX2Z1bGxMYXlvdXQuX2QzbG9jYWxlLGIsaS5fbWV0YXx8e30pfWVsc2UgZS50ZXh0PSIi fX1mdW5jdGlvbiBSKHQsZSl7dmFyIHI9dC5yb3RhdGUqTWF0aC5QSS8xODAsbj1NYXRoLmNv cyhyKSxpPU1hdGguc2luKHIpLGE9KGUubGVmdCtlLnJpZ2h0KS8yLG89KGUudG9wK2UuYm90 dG9tKS8yO3QudGV4dFg9YSpuLW8qaSx0LnRleHRZPWEqaStvKm4sdC5ub0NlbnRlcj0hMH1l LmV4cG9ydHM9e3Bsb3Q6ZnVuY3Rpb24odCxlKXt2YXIgcj10Ll9mdWxsTGF5b3V0LGE9ci5f c2l6ZTtkKCJwaWUiLHIpLF8oZSx0KSxPKGUsYSk7dmFyIGg9bC5tYWtlVHJhY2VHcm91cHMo ci5fcGllbGF5ZXIsZSwidHJhY2UiKS5lYWNoKChmdW5jdGlvbihlKXt2YXIgaD1uLnNlbGVj dCh0aGlzKSxkPWVbMF0sbT1kLnRyYWNlOyFmdW5jdGlvbih0KXt2YXIgZSxyLG4saT10WzBd LGE9aS5yLG89aS50cmFjZSxzPWcuZ2V0Um90YXRpb25BbmdsZShvLnJvdGF0aW9uKSxsPTIq TWF0aC5QSS9pLnZUb3RhbCxjPSJweDAiLHU9InB4MSI7aWYoImNvdW50ZXJjbG9ja3dpc2Ui PT09by5kaXJlY3Rpb24pe2ZvcihlPTA7ZTx0Lmxlbmd0aCYmdFtlXS5oaWRkZW47ZSsrKTtp ZihlPT09dC5sZW5ndGgpcmV0dXJuO3MrPWwqdFtlXS52LGwqPS0xLGM9InB4MSIsdT0icHgw In1mb3Iobj16KGEscyksZT0wO2U8dC5sZW5ndGg7ZSsrKShyPXRbZV0pLmhpZGRlbnx8KHJb Y109bixyLnN0YXJ0YW5nbGU9cyxzKz1sKnIudi8yLHIucHhtaWQ9eihhLHMpLHIubWlkYW5n bGU9cyxzKz1sKnIudi8yLG49eihhLHMpLHIuc3RvcGFuZ2xlPXMsclt1XT1uLHIubGFyZ2VB cmM9ci52PmkudlRvdGFsLzI/MTowLHIuaGFsZmFuZ2xlPU1hdGguUEkqTWF0aC5taW4oci52 L2kudlRvdGFsLC41KSxyLnJpbmc9MS1vLmhvbGUsci5ySW5zY3JpYmVkPUUocixpKSl9KGUp LGguYXR0cigic3Ryb2tlLWxpbmVqb2luIiwicm91bmQiKSxoLmVhY2goKGZ1bmN0aW9uKCl7 dmFyIHY9bi5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJnLnNsaWNlIikuZGF0YShlKTt2LmVu dGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgic2xpY2UiLCEwKSx2LmV4aXQoKS5yZW1vdmUo KTt2YXIgeT1bW1tdLFtdXSxbW10sW11dXSxfPSExO3YuZWFjaCgoZnVuY3Rpb24oaSxhKXtp ZihpLmhpZGRlbiluLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoInBhdGgsZyIpLnJlbW92ZSgp O2Vsc2V7aS5wb2ludE51bWJlcj1pLmksaS5jdXJ2ZU51bWJlcj1tLmluZGV4LHlbaS5weG1p ZFsxXTwwPzA6MV1baS5weG1pZFswXTwwPzA6MV0ucHVzaChpKTt2YXIgbz1kLmN4LGM9ZC5j eSx1PW4uc2VsZWN0KHRoaXMpLGg9dS5zZWxlY3RBbGwoInBhdGguc3VyZmFjZSIpLmRhdGEo W2ldKTtpZihoLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuY2xhc3NlZCgic3VyZmFjZSIsITAp LnN0eWxlKHsicG9pbnRlci1ldmVudHMiOiJhbGwifSksdS5jYWxsKHgsdCxlKSxtLnB1bGwp e3ZhciB2PStnLmNhc3RPcHRpb24obS5wdWxsLGkucHRzKXx8MDt2PjAmJihvKz12KmkucHht aWRbMF0sYys9dippLnB4bWlkWzFdKX1pLmN4RmluYWw9byxpLmN5RmluYWw9Yzt2YXIgVD1t LmhvbGU7aWYoaS52PT09ZC52VG90YWwpe3ZhciBrPSJNIisobytpLnB4MFswXSkrIiwiKyhj K2kucHgwWzFdKStDKGkucHgwLGkucHhtaWQsITAsMSkrQyhpLnB4bWlkLGkucHgwLCEwLDEp KyJaIjtUP2guYXR0cigiZCIsIk0iKyhvK1QqaS5weDBbMF0pKyIsIisoYytUKmkucHgwWzFd KStDKGkucHgwLGkucHhtaWQsITEsVCkrQyhpLnB4bWlkLGkucHgwLCExLFQpKyJaIitrKTpo LmF0dHIoImQiLGspfWVsc2V7dmFyIEE9QyhpLnB4MCxpLnB4MSwhMCwxKTtpZihUKXt2YXIg TT0xLVQ7aC5hdHRyKCJkIiwiTSIrKG8rVCppLnB4MVswXSkrIiwiKyhjK1QqaS5weDFbMV0p K0MoaS5weDEsaS5weDAsITEsVCkrImwiK00qaS5weDBbMF0rIiwiK00qaS5weDBbMV0rQSsi WiIpfWVsc2UgaC5hdHRyKCJkIiwiTSIrbysiLCIrYysibCIraS5weDBbMF0rIiwiK2kucHgw WzFdK0ErIloiKX1EKHQsaSxkKTt2YXIgUz1nLmNhc3RPcHRpb24obS50ZXh0cG9zaXRpb24s aS5wdHMpLEU9dS5zZWxlY3RBbGwoImcuc2xpY2V0ZXh0IikuZGF0YShpLnRleHQmJiJub25l IiE9PVM/WzBdOltdKTtFLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgic2xpY2V0ZXh0 IiwhMCksRS5leGl0KCkucmVtb3ZlKCksRS5lYWNoKChmdW5jdGlvbigpe3ZhciB1PWwuZW5z dXJlU2luZ2xlKG4uc2VsZWN0KHRoaXMpLCJ0ZXh0IiwiIiwoZnVuY3Rpb24odCl7dC5hdHRy KCJkYXRhLW5vdGV4IiwxKX0pKSxoPWwuZW5zdXJlVW5pZm9ybUZvbnRTaXplKHQsIm91dHNp ZGUiPT09Uz9mdW5jdGlvbih0LGUscil7dmFyIG49Zy5jYXN0T3B0aW9uKHQub3V0c2lkZXRl eHRmb250LmNvbG9yLGUucHRzKXx8Zy5jYXN0T3B0aW9uKHQudGV4dGZvbnQuY29sb3IsZS5w dHMpfHxyLmNvbG9yLGk9Zy5jYXN0T3B0aW9uKHQub3V0c2lkZXRleHRmb250LmZhbWlseSxl LnB0cyl8fGcuY2FzdE9wdGlvbih0LnRleHRmb250LmZhbWlseSxlLnB0cyl8fHIuZmFtaWx5 LGE9Zy5jYXN0T3B0aW9uKHQub3V0c2lkZXRleHRmb250LnNpemUsZS5wdHMpfHxnLmNhc3RP cHRpb24odC50ZXh0Zm9udC5zaXplLGUucHRzKXx8ci5zaXplO3JldHVybntjb2xvcjpuLGZh bWlseTppLHNpemU6YX19KG0saSxyLmZvbnQpOmIobSxpLHIuZm9udCkpO3UudGV4dChpLnRl eHQpLmF0dHIoe2NsYXNzOiJzbGljZXRleHQiLHRyYW5zZm9ybToiIiwidGV4dC1hbmNob3Ii OiJtaWRkbGUifSkuY2FsbChzLmZvbnQsaCkuY2FsbChmLmNvbnZlcnRUb1RzcGFucyx0KTt2 YXIgdix5PXMuYkJveCh1Lm5vZGUoKSk7aWYoIm91dHNpZGUiPT09Uyl2PUwoeSxpKTtlbHNl IGlmKHY9dyh5LGksZCksImF1dG8iPT09UyYmdi5zY2FsZTwxKXt2YXIgeD1sLmVuc3VyZVVu aWZvcm1Gb250U2l6ZSh0LG0ub3V0c2lkZXRleHRmb250KTt1LmNhbGwocy5mb250LHgpLHY9 TCh5PXMuYkJveCh1Lm5vZGUoKSksaSl9dmFyIFQ9di50ZXh0UG9zQW5nbGUsaz12b2lkIDA9 PT1UP2kucHhtaWQ6eihkLnIsVCk7aWYodi50YXJnZXRYPW8ra1swXSp2LnJDZW50ZXIrKHYu eHx8MCksdi50YXJnZXRZPWMra1sxXSp2LnJDZW50ZXIrKHYueXx8MCksUih2LHkpLHYub3V0 c2lkZSl7dmFyIEE9di50YXJnZXRZO2kueUxhYmVsTWluPUEteS5oZWlnaHQvMixpLnlMYWJl bE1pZD1BLGkueUxhYmVsTWF4PUEreS5oZWlnaHQvMixpLmxhYmVsRXh0cmFYPTAsaS5sYWJl bEV4dHJhWT0wLF89ITB9di5mb250U2l6ZT1oLnNpemUscChtLnR5cGUsdixyKSxlW2FdLnRy YW5zZm9ybT12LHUuYXR0cigidHJhbnNmb3JtIixsLmdldFRleHRUcmFuc2Zvcm0odikpfSkp fWZ1bmN0aW9uIEModCxlLHIsbil7dmFyIGE9biooZVswXS10WzBdKSxvPW4qKGVbMV0tdFsx XSk7cmV0dXJuImEiK24qZC5yKyIsIituKmQucisiIDAgIitpLmxhcmdlQXJjKyhyPyIgMSAi OiIgMCAiKSthKyIsIitvfX0pKTt2YXIgVD1uLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoImcu dGl0bGV0ZXh0IikuZGF0YShtLnRpdGxlLnRleHQ/WzBdOltdKTtpZihULmVudGVyKCkuYXBw ZW5kKCJnIikuY2xhc3NlZCgidGl0bGV0ZXh0IiwhMCksVC5leGl0KCkucmVtb3ZlKCksVC5l YWNoKChmdW5jdGlvbigpe3ZhciBlLHI9bC5lbnN1cmVTaW5nbGUobi5zZWxlY3QodGhpcyks InRleHQiLCIiLChmdW5jdGlvbih0KXt0LmF0dHIoImRhdGEtbm90ZXgiLDEpfSkpLGk9bS50 aXRsZS50ZXh0O20uX21ldGEmJihpPWwudGVtcGxhdGVTdHJpbmcoaSxtLl9tZXRhKSksci50 ZXh0KGkpLmF0dHIoe2NsYXNzOiJ0aXRsZXRleHQiLHRyYW5zZm9ybToiIiwidGV4dC1hbmNo b3IiOiJtaWRkbGUifSkuY2FsbChzLmZvbnQsbS50aXRsZS5mb250KS5jYWxsKGYuY29udmVy dFRvVHNwYW5zLHQpLGU9Im1pZGRsZSBjZW50ZXIiPT09bS50aXRsZS5wb3NpdGlvbj9mdW5j dGlvbih0KXt2YXIgZT1NYXRoLnNxcnQodC50aXRsZUJveC53aWR0aCp0LnRpdGxlQm94Lndp ZHRoK3QudGl0bGVCb3guaGVpZ2h0KnQudGl0bGVCb3guaGVpZ2h0KTtyZXR1cm57eDp0LmN4 LHk6dC5jeSxzY2FsZTp0LnRyYWNlLmhvbGUqdC5yKjIvZSx0eDowLHR5Oi10LnRpdGxlQm94 LmhlaWdodC8yK3QudHJhY2UudGl0bGUuZm9udC5zaXplfX0oZCk6QyhkLGEpLHIuYXR0cigi dHJhbnNmb3JtIix1KGUueCxlLnkpK2MoTWF0aC5taW4oMSxlLnNjYWxlKSkrdShlLnR4LGUu dHkpKX0pKSxfJiZmdW5jdGlvbih0LGUpe3ZhciByLG4saSxhLG8scyxsLGMsdSxmLGgscCxk O2Z1bmN0aW9uIG0odCxlKXtyZXR1cm4gdC5weG1pZFsxXS1lLnB4bWlkWzFdfWZ1bmN0aW9u IHYodCxlKXtyZXR1cm4gZS5weG1pZFsxXS10LnB4bWlkWzFdfWZ1bmN0aW9uIHkodCxyKXty fHwocj17fSk7dmFyIGksYyx1LGgscD1yLmxhYmVsRXh0cmFZKyhuP3IueUxhYmVsTWF4OnIu eUxhYmVsTWluKSxkPW4/dC55TGFiZWxNaW46dC55TGFiZWxNYXgsbT1uP3QueUxhYmVsTWF4 OnQueUxhYmVsTWluLHY9dC5jeUZpbmFsK28odC5weDBbMV0sdC5weDFbMV0pLHk9cC1kO2lm KHkqbD4wJiYodC5sYWJlbEV4dHJhWT15KSxBcnJheS5pc0FycmF5KGUucHVsbCkpZm9yKGM9 MDtjPGYubGVuZ3RoO2MrKykodT1mW2NdKT09PXR8fChnLmNhc3RPcHRpb24oZS5wdWxsLHQu cHRzKXx8MCk+PShnLmNhc3RPcHRpb24oZS5wdWxsLHUucHRzKXx8MCl8fCgodC5weG1pZFsx XS11LnB4bWlkWzFdKSpsPjA/KHk9dS5jeUZpbmFsK28odS5weDBbMV0sdS5weDFbMV0pLWQt dC5sYWJlbEV4dHJhWSkqbD4wJiYodC5sYWJlbEV4dHJhWSs9eSk6KG0rdC5sYWJlbEV4dHJh WS12KSpsPjAmJihpPTMqcypNYXRoLmFicyhjLWYuaW5kZXhPZih0KSksKGg9dS5jeEZpbmFs K2EodS5weDBbMF0sdS5weDFbMF0pK2ktKHQuY3hGaW5hbCt0LnB4bWlkWzBdKS10LmxhYmVs RXh0cmFYKSpzPjAmJih0LmxhYmVsRXh0cmFYKz1oKSkpfWZvcihuPTA7bjwyO24rKylmb3Io aT1uP206dixvPW4/TWF0aC5tYXg6TWF0aC5taW4sbD1uPzE6LTEscj0wO3I8MjtyKyspe2Zv cihhPXI/TWF0aC5tYXg6TWF0aC5taW4scz1yPzE6LTEsKGM9dFtuXVtyXSkuc29ydChpKSx1 PXRbMS1uXVtyXSxmPXUuY29uY2F0KGMpLHA9W10saD0wO2g8Yy5sZW5ndGg7aCsrKXZvaWQg MCE9PWNbaF0ueUxhYmVsTWlkJiZwLnB1c2goY1toXSk7Zm9yKGQ9ITEsaD0wO24mJmg8dS5s ZW5ndGg7aCsrKWlmKHZvaWQgMCE9PXVbaF0ueUxhYmVsTWlkKXtkPXVbaF07YnJlYWt9Zm9y KGg9MDtoPHAubGVuZ3RoO2grKyl7dmFyIHg9aCYmcFtoLTFdO2QmJiFoJiYoeD1kKSx5KHBb aF0seCl9fX0oeSxtKSxmdW5jdGlvbih0LGUpe3QuZWFjaCgoZnVuY3Rpb24odCl7dmFyIHI9 bi5zZWxlY3QodGhpcyk7aWYodC5sYWJlbEV4dHJhWHx8dC5sYWJlbEV4dHJhWSl7dmFyIGk9 ci5zZWxlY3QoImcuc2xpY2V0ZXh0IHRleHQiKTt0LnRyYW5zZm9ybS50YXJnZXRYKz10Lmxh YmVsRXh0cmFYLHQudHJhbnNmb3JtLnRhcmdldFkrPXQubGFiZWxFeHRyYVksaS5hdHRyKCJ0 cmFuc2Zvcm0iLGwuZ2V0VGV4dFRyYW5zZm9ybSh0LnRyYW5zZm9ybSkpO3ZhciBhPXQuY3hG aW5hbCt0LnB4bWlkWzBdLHM9Ik0iK2ErIiwiKyh0LmN5RmluYWwrdC5weG1pZFsxXSksYz0o dC55TGFiZWxNYXgtdC55TGFiZWxNaW4pKih0LnB4bWlkWzBdPDA/LTE6MSkvNDtpZih0Lmxh YmVsRXh0cmFYKXt2YXIgdT10LmxhYmVsRXh0cmFYKnQucHhtaWRbMV0vdC5weG1pZFswXSxm PXQueUxhYmVsTWlkK3QubGFiZWxFeHRyYVktKHQuY3lGaW5hbCt0LnB4bWlkWzFdKTtNYXRo LmFicyh1KT5NYXRoLmFicyhmKT9zKz0ibCIrZip0LnB4bWlkWzBdL3QucHhtaWRbMV0rIiwi K2YrIkgiKyhhK3QubGFiZWxFeHRyYVgrYyk6cys9ImwiK3QubGFiZWxFeHRyYVgrIiwiK3Ur InYiKyhmLXUpKyJoIitjfWVsc2Ugcys9IlYiKyh0LnlMYWJlbE1pZCt0LmxhYmVsRXh0cmFZ KSsiaCIrYztsLmVuc3VyZVNpbmdsZShyLCJwYXRoIiwidGV4dGxpbmUiKS5jYWxsKG8uc3Ry b2tlLGUub3V0c2lkZXRleHRmb250LmNvbG9yKS5hdHRyKHsic3Ryb2tlLXdpZHRoIjpNYXRo Lm1pbigyLGUub3V0c2lkZXRleHRmb250LnNpemUvOCksZDpzLGZpbGw6Im5vbmUifSl9ZWxz ZSByLnNlbGVjdCgicGF0aC50ZXh0bGluZSIpLnJlbW92ZSgpfSkpfSh2LG0pLF8mJm0uYXV0 b21hcmdpbil7dmFyIGs9cy5iQm94KGgubm9kZSgpKSxBPW0uZG9tYWluLE09YS53KihBLnhb MV0tQS54WzBdKSxTPWEuaCooQS55WzFdLUEueVswXSksRT0oLjUqTS1kLnIpL2EudyxQPSgu NSpTLWQucikvYS5oO2kuYXV0b01hcmdpbih0LCJwaWUuIittLnVpZCsiLmF1dG9tYXJnaW4i LHt4bDpBLnhbMF0tRSx4cjpBLnhbMV0rRSx5YjpBLnlbMF0tUCx5dDpBLnlbMV0rUCxsOk1h dGgubWF4KGQuY3gtZC5yLWsubGVmdCwwKSxyOk1hdGgubWF4KGsucmlnaHQtKGQuY3grZC5y KSwwKSxiOk1hdGgubWF4KGsuYm90dG9tLShkLmN5K2QuciksMCksdDpNYXRoLm1heChkLmN5 LWQuci1rLnRvcCwwKSxwYWQ6NX0pfX0pKX0pKTtzZXRUaW1lb3V0KChmdW5jdGlvbigpe2gu c2VsZWN0QWxsKCJ0c3BhbiIpLmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9bi5zZWxlY3QodGhp cyk7dC5hdHRyKCJkeSIpJiZ0LmF0dHIoImR5Iix0LmF0dHIoImR5IikpfSkpfSksMCl9LGZv cm1hdFNsaWNlTGFiZWw6RCx0cmFuc2Zvcm1JbnNpZGVUZXh0OncsZGV0ZXJtaW5lSW5zaWRl VGV4dEZvbnQ6Yixwb3NpdGlvblRpdGxlT3V0c2lkZTpDLHByZXJlbmRlclRpdGxlczpfLGxh eW91dEFyZWFzOk8sYXR0YWNoRnhIYW5kbGVyczp4LGNvbXB1dGVUcmFuc2Zvcm06Un19LHsi Li4vLi4vY29tcG9uZW50cy9jb2xvciI6MzY2LCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmci OjM4OCwiLi4vLi4vY29tcG9uZW50cy9meCI6NDA2LCIuLi8uLi9saWIiOjUwMywiLi4vLi4v bGliL3N2Z190ZXh0X3V0aWxzIjo1MjksIi4uLy4uL3Bsb3RzL3Bsb3RzIjo2MTksIi4uL2Jh ci9jb25zdGFudHMiOjY1MCwiLi4vYmFyL3VuaWZvcm1fdGV4dCI6NjY0LCIuL2V2ZW50X2Rh dGEiOjkwNSwiLi9oZWxwZXJzIjo5MDYsIkBwbG90bHkvZDMiOjU4fV0sOTExOltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIkBwbG90bHkvZDMiKSxpPXQoIi4vc3R5 bGVfb25lIiksYT10KCIuLi9iYXIvdW5pZm9ybV90ZXh0IikucmVzaXplVGV4dDtlLmV4cG9y dHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dC5fcGllbGF5ZXIuc2VsZWN0QWxs KCIudHJhY2UiKTthKHQsZSwicGllIiksZS5lYWNoKChmdW5jdGlvbih0KXt2YXIgZT10WzBd LnRyYWNlLHI9bi5zZWxlY3QodGhpcyk7ci5zdHlsZSh7b3BhY2l0eTplLm9wYWNpdHl9KSxy LnNlbGVjdEFsbCgicGF0aC5zdXJmYWNlIikuZWFjaCgoZnVuY3Rpb24odCl7bi5zZWxlY3Qo dGhpcykuY2FsbChpLHQsZSl9KSl9KSl9fSx7Ii4uL2Jhci91bmlmb3JtX3RleHQiOjY2NCwi Li9zdHlsZV9vbmUiOjkxMiwiQHBsb3RseS9kMyI6NTh9XSw5MTI6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGk9dCgi Li9oZWxwZXJzIikuY2FzdE9wdGlvbjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBh PXIubWFya2VyLmxpbmUsbz1pKGEuY29sb3IsZS5wdHMpfHxuLmRlZmF1bHRMaW5lLHM9aShh LndpZHRoLGUucHRzKXx8MDt0LnN0eWxlKCJzdHJva2Utd2lkdGgiLHMpLmNhbGwobi5maWxs LGUuY29sb3IpLmNhbGwobi5zdHJva2Usbyl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3Ii OjM2NiwiLi9oZWxwZXJzIjo5MDZ9XSw5MTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPXt4Om4ueCx5 Om4ueSx4eTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxpbmRpY2Vz Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHhib3VuZHM6e3ZhbFR5 cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0seWJvdW5kczp7dmFsVHlwZToiZGF0 YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSx0ZXh0Om4udGV4dCxtYXJrZXI6e2NvbG9yOnt2 YWxUeXBlOiJjb2xvciIsYXJyYXlPazohMSxlZGl0VHlwZToiY2FsYyJ9LG9wYWNpdHk6e3Zh bFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDoxLGFycmF5T2s6ITEsZWRpdFR5cGU6 ImNhbGMifSxibGVuZDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDpudWxsLGVkaXRUeXBlOiJj YWxjIn0sc2l6ZW1pbjp7dmFsVHlwZToibnVtYmVyIixtaW46LjEsbWF4OjIsZGZsdDouNSxl ZGl0VHlwZToiY2FsYyJ9LHNpemVtYXg6e3ZhbFR5cGU6Im51bWJlciIsbWluOi4xLGRmbHQ6 MjAsZWRpdFR5cGU6ImNhbGMifSxib3JkZXI6e2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsYXJy YXlPazohMSxlZGl0VHlwZToiY2FsYyJ9LGFyZWFyYXRpbzp7dmFsVHlwZToibnVtYmVyIixt aW46MCxtYXg6MSxkZmx0OjAsZWRpdFR5cGU6ImNhbGMifSxlZGl0VHlwZToiY2FsYyJ9LGVk aXRUeXBlOiJjYWxjIn0sdHJhbnNmb3Jtczp2b2lkIDB9fSx7Ii4uL3NjYXR0ZXIvYXR0cmli dXRlcyI6OTI3fV0sOTE0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo Ii4uLy4uLy4uL3N0YWNrZ2xfbW9kdWxlcyIpLmdsX3BvaW50Y2xvdWQyZCxpPXQoIi4uLy4u L2xpYi9zdHIycmdiYXJyYXkiKSxhPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9hdXRvcmFu Z2UiKS5maW5kRXh0cmVtZXMsbz10KCIuLi9zY2F0dGVyL2dldF90cmFjZV9jb2xvciIpO2Z1 bmN0aW9uIHModCxlKXt0aGlzLnNjZW5lPXQsdGhpcy51aWQ9ZSx0aGlzLnR5cGU9InBvaW50 Y2xvdWQiLHRoaXMucGlja1hEYXRhPVtdLHRoaXMucGlja1lEYXRhPVtdLHRoaXMueERhdGE9 W10sdGhpcy55RGF0YT1bXSx0aGlzLnRleHRMYWJlbHM9W10sdGhpcy5jb2xvcj0icmdiKDAs IDAsIDApIix0aGlzLm5hbWU9IiIsdGhpcy5ob3ZlcmluZm89ImFsbCIsdGhpcy5pZFRvSW5k ZXg9bmV3IEludDMyQXJyYXkoMCksdGhpcy5ib3VuZHM9WzAsMCwwLDBdLHRoaXMucG9pbnRj bG91ZE9wdGlvbnM9e3Bvc2l0aW9uczpuZXcgRmxvYXQzMkFycmF5KDApLGlkVG9JbmRleDp0 aGlzLmlkVG9JbmRleCxzaXplbWluOi41LHNpemVtYXg6MTIsY29sb3I6WzAsMCwwLDFdLGFy ZWFSYXRpbzoxLGJvcmRlckNvbG9yOlswLDAsMCwxXX0sdGhpcy5wb2ludGNsb3VkPW4odC5n bHBsb3QsdGhpcy5wb2ludGNsb3VkT3B0aW9ucyksdGhpcy5wb2ludGNsb3VkLl90cmFjZT10 aGlzfXZhciBsPXMucHJvdG90eXBlO2wuaGFuZGxlUGljaz1mdW5jdGlvbih0KXt2YXIgZT10 aGlzLmlkVG9JbmRleFt0LnBvaW50SWRdO3JldHVybnt0cmFjZTp0aGlzLGRhdGFDb29yZDp0 LmRhdGFDb29yZCx0cmFjZUNvb3JkOnRoaXMucGlja1hZRGF0YT9bdGhpcy5waWNrWFlEYXRh WzIqZV0sdGhpcy5waWNrWFlEYXRhWzIqZSsxXV06W3RoaXMucGlja1hEYXRhW2VdLHRoaXMu cGlja1lEYXRhW2VdXSx0ZXh0TGFiZWw6QXJyYXkuaXNBcnJheSh0aGlzLnRleHRMYWJlbHMp P3RoaXMudGV4dExhYmVsc1tlXTp0aGlzLnRleHRMYWJlbHMsY29sb3I6dGhpcy5jb2xvcixu YW1lOnRoaXMubmFtZSxwb2ludEluZGV4OmUsaG92ZXJpbmZvOnRoaXMuaG92ZXJpbmZvfX0s bC51cGRhdGU9ZnVuY3Rpb24odCl7dGhpcy5pbmRleD10LmluZGV4LHRoaXMudGV4dExhYmVs cz10LnRleHQsdGhpcy5uYW1lPXQubmFtZSx0aGlzLmhvdmVyaW5mbz10LmhvdmVyaW5mbyx0 aGlzLmJvdW5kcz1bMS8wLDEvMCwtMS8wLC0xLzBdLHRoaXMudXBkYXRlRmFzdCh0KSx0aGlz LmNvbG9yPW8odCx7fSl9LGwudXBkYXRlRmFzdD1mdW5jdGlvbih0KXt2YXIgZSxyLG4sbyxz LGwsYz10aGlzLnhEYXRhPXRoaXMucGlja1hEYXRhPXQueCx1PXRoaXMueURhdGE9dGhpcy5w aWNrWURhdGE9dC55LGY9dGhpcy5waWNrWFlEYXRhPXQueHksaD10Lnhib3VuZHMmJnQueWJv dW5kcyxwPXQuaW5kaWNlcyxkPXRoaXMuYm91bmRzO2lmKGYpe2lmKG49ZixlPWYubGVuZ3Ro Pj4+MSxoKWRbMF09dC54Ym91bmRzWzBdLGRbMl09dC54Ym91bmRzWzFdLGRbMV09dC55Ym91 bmRzWzBdLGRbM109dC55Ym91bmRzWzFdO2Vsc2UgZm9yKGw9MDtsPGU7bCsrKW89blsyKmxd LHM9blsyKmwrMV0sbzxkWzBdJiYoZFswXT1vKSxvPmRbMl0mJihkWzJdPW8pLHM8ZFsxXSYm KGRbMV09cykscz5kWzNdJiYoZFszXT1zKTtpZihwKXI9cDtlbHNlIGZvcihyPW5ldyBJbnQz MkFycmF5KGUpLGw9MDtsPGU7bCsrKXJbbF09bH1lbHNlIGZvcihlPWMubGVuZ3RoLG49bmV3 IEZsb2F0MzJBcnJheSgyKmUpLHI9bmV3IEludDMyQXJyYXkoZSksbD0wO2w8ZTtsKyspbz1j W2xdLHM9dVtsXSxyW2xdPWwsblsyKmxdPW8sblsyKmwrMV09cyxvPGRbMF0mJihkWzBdPW8p LG8+ZFsyXSYmKGRbMl09byksczxkWzFdJiYoZFsxXT1zKSxzPmRbM10mJihkWzNdPXMpO3Ro aXMuaWRUb0luZGV4PXIsdGhpcy5wb2ludGNsb3VkT3B0aW9ucy5pZFRvSW5kZXg9cix0aGlz LnBvaW50Y2xvdWRPcHRpb25zLnBvc2l0aW9ucz1uO3ZhciBtPWkodC5tYXJrZXIuY29sb3Ip LGc9aSh0Lm1hcmtlci5ib3JkZXIuY29sb3IpLHY9dC5vcGFjaXR5KnQubWFya2VyLm9wYWNp dHk7bVszXSo9dix0aGlzLnBvaW50Y2xvdWRPcHRpb25zLmNvbG9yPW07dmFyIHk9dC5tYXJr ZXIuYmxlbmQ7aWYobnVsbD09PXkpe3k9Yy5sZW5ndGg8MTAwfHx1Lmxlbmd0aDwxMDB9dGhp cy5wb2ludGNsb3VkT3B0aW9ucy5ibGVuZD15LGdbM10qPXYsdGhpcy5wb2ludGNsb3VkT3B0 aW9ucy5ib3JkZXJDb2xvcj1nO3ZhciB4PXQubWFya2VyLnNpemVtaW4sYj1NYXRoLm1heCh0 Lm1hcmtlci5zaXplbWF4LHQubWFya2VyLnNpemVtaW4pO3RoaXMucG9pbnRjbG91ZE9wdGlv bnMuc2l6ZU1pbj14LHRoaXMucG9pbnRjbG91ZE9wdGlvbnMuc2l6ZU1heD1iLHRoaXMucG9p bnRjbG91ZE9wdGlvbnMuYXJlYVJhdGlvPXQubWFya2VyLmJvcmRlci5hcmVhcmF0aW8sdGhp cy5wb2ludGNsb3VkLnVwZGF0ZSh0aGlzLnBvaW50Y2xvdWRPcHRpb25zKTt2YXIgXz10aGlz LnNjZW5lLnhheGlzLHc9dGhpcy5zY2VuZS55YXhpcyxUPWIvMnx8LjU7dC5fZXh0cmVtZXNb Xy5faWRdPWEoXyxbZFswXSxkWzJdXSx7cHBhZDpUfSksdC5fZXh0cmVtZXNbdy5faWRdPWEo dyxbZFsxXSxkWzNdXSx7cHBhZDpUfSl9LGwuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMucG9p bnRjbG91ZC5kaXNwb3NlKCl9LGUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPW5ldyBz KHQsZS51aWQpO3JldHVybiByLnVwZGF0ZShlKSxyfX0seyIuLi8uLi8uLi9zdGFja2dsX21v ZHVsZXMiOjExMjQsIi4uLy4uL2xpYi9zdHIycmdiYXJyYXkiOjUyOCwiLi4vLi4vcGxvdHMv Y2FydGVzaWFuL2F1dG9yYW5nZSI6NTUzLCIuLi9zY2F0dGVyL2dldF90cmFjZV9jb2xvciI6 OTM3fV0sOTE1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4u L2xpYiIpLGk9dCgiLi9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtm dW5jdGlvbiBhKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxpLHIsYSl9YSgieCIpLGEoInki KSxhKCJ4Ym91bmRzIiksYSgieWJvdW5kcyIpLHQueHkmJnQueHkgaW5zdGFuY2VvZiBGbG9h dDMyQXJyYXkmJihlLnh5PXQueHkpLHQuaW5kaWNlcyYmdC5pbmRpY2VzIGluc3RhbmNlb2Yg SW50MzJBcnJheSYmKGUuaW5kaWNlcz10LmluZGljZXMpLGEoInRleHQiKSxhKCJtYXJrZXIu Y29sb3IiLHIpLGEoIm1hcmtlci5vcGFjaXR5IiksYSgibWFya2VyLmJsZW5kIiksYSgibWFy a2VyLnNpemVtaW4iKSxhKCJtYXJrZXIuc2l6ZW1heCIpLGEoIm1hcmtlci5ib3JkZXIuY29s b3IiLHIpLGEoIm1hcmtlci5ib3JkZXIuYXJlYXJhdGlvIiksZS5fbGVuZ3RoPW51bGx9fSx7 Ii4uLy4uL2xpYiI6NTAzLCIuL2F0dHJpYnV0ZXMiOjkxM31dLDkxNjpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0IjtbIipwb2ludGNsb3VkKiB0cmFjZSBpcyBkZXByZWNhdGVkISIs IlBsZWFzZSBjb25zaWRlciBzd2l0Y2hpbmcgdG8gdGhlICpzY2F0dGVyZ2wqIHRyYWNlIHR5 cGUuIl0uam9pbigiICIpO2UuZXhwb3J0cz17YXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMi KSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY2FsYzp0KCIuLi9zY2F0dGVyM2Qv Y2FsYyIpLHBsb3Q6dCgiLi9jb252ZXJ0IiksbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6InBv aW50Y2xvdWQiLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL2dsMmQiKSxjYXRlZ29y aWVzOlsiZ2wiLCJnbDJkIiwic2hvd0xlZ2VuZCJdLG1ldGE6e319fSx7Ii4uLy4uL3Bsb3Rz L2dsMmQiOjU5NiwiLi4vc2NhdHRlcjNkL2NhbGMiOjk1NiwiLi9hdHRyaWJ1dGVzIjo5MTMs Ii4vY29udmVydCI6OTE0LCIuL2RlZmF1bHRzIjo5MTV9XSw5MTc6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIiks aT10KCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2Nv bG9yL2F0dHJpYnV0ZXMiKSxvPXQoIi4uLy4uL2NvbXBvbmVudHMvZngvYXR0cmlidXRlcyIp LHM9dCgiLi4vLi4vcGxvdHMvZG9tYWluIikuYXR0cmlidXRlcyxsPXQoIi4uLy4uL3Bsb3Rz L3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsYz10KCIuLi8uLi9j b21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLHU9dCgiLi4vLi4vcGxvdF9hcGkv cGxvdF90ZW1wbGF0ZSIpLnRlbXBsYXRlZEFycmF5LGY9dCgiLi4vLi4vcGxvdHMvY2FydGVz aWFuL2F4aXNfZm9ybWF0X2F0dHJpYnV0ZXMiKS5kZXNjcmlwdGlvbk9ubHlOdW1iZXJzLGg9 dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQscD10KCIuLi8uLi9wbG90X2FwaS9l ZGl0X3R5cGVzIikub3ZlcnJpZGVBbGw7KGUuZXhwb3J0cz1wKHtob3ZlcmluZm86aCh7fSxp LmhvdmVyaW5mbyx7ZmxhZ3M6W10sYXJyYXlPazohMX0pLGhvdmVybGFiZWw6by5ob3Zlcmxh YmVsLGRvbWFpbjpzKHtuYW1lOiJzYW5rZXkiLHRyYWNlOiEwfSksb3JpZW50YXRpb246e3Zh bFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInYiLCJoIl0sZGZsdDoiaCJ9LHZhbHVlZm9y bWF0Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6Ii4zcyIsZGVzY3JpcHRpb246ZigidmFsdWUi KX0sdmFsdWVzdWZmaXg6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiIn0sYXJyYW5nZW1lbnQ6 e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInNuYXAiLCJwZXJwZW5kaWN1bGFyIiwi ZnJlZWZvcm0iLCJmaXhlZCJdLGRmbHQ6InNuYXAifSx0ZXh0Zm9udDpuKHt9KSxjdXN0b21k YXRhOnZvaWQgMCxub2RlOntsYWJlbDp7dmFsVHlwZToiZGF0YV9hcnJheSIsZGZsdDpbXX0s Z3JvdXBzOnt2YWxUeXBlOiJpbmZvX2FycmF5IixpbXBsaWVkRWRpdHM6e3g6W10seTpbXX0s ZGltZW5zaW9uczoyLGZyZWVMZW5ndGg6ITAsZGZsdDpbXSxpdGVtczp7dmFsVHlwZToibnVt YmVyIixlZGl0VHlwZToiY2FsYyJ9fSx4Ont2YWxUeXBlOiJkYXRhX2FycmF5IixkZmx0Oltd fSx5Ont2YWxUeXBlOiJkYXRhX2FycmF5IixkZmx0OltdfSxjb2xvcjp7dmFsVHlwZToiY29s b3IiLGFycmF5T2s6ITB9LGN1c3RvbWRhdGE6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRU eXBlOiJjYWxjIn0sbGluZTp7Y29sb3I6e3ZhbFR5cGU6ImNvbG9yIixkZmx0OmEuZGVmYXVs dExpbmUsYXJyYXlPazohMH0sd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDou NSxhcnJheU9rOiEwfX0scGFkOnt2YWxUeXBlOiJudW1iZXIiLGFycmF5T2s6ITEsbWluOjAs ZGZsdDoyMH0sdGhpY2tuZXNzOnt2YWxUeXBlOiJudW1iZXIiLGFycmF5T2s6ITEsbWluOjEs ZGZsdDoyMH0saG92ZXJpbmZvOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJhbGwi LCJub25lIiwic2tpcCJdLGRmbHQ6ImFsbCJ9LGhvdmVybGFiZWw6by5ob3ZlcmxhYmVsLGhv dmVydGVtcGxhdGU6bCh7fSx7a2V5czpbInZhbHVlIiwibGFiZWwiXX0pfSxsaW5rOntsYWJl bDp7dmFsVHlwZToiZGF0YV9hcnJheSIsZGZsdDpbXX0sY29sb3I6e3ZhbFR5cGU6ImNvbG9y IixhcnJheU9rOiEwfSxjdXN0b21kYXRhOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlw ZToiY2FsYyJ9LGxpbmU6e2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZGZsdDphLmRlZmF1bHRM aW5lLGFycmF5T2s6ITB9LHdpZHRoOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MCxh cnJheU9rOiEwfX0sc291cmNlOnt2YWxUeXBlOiJkYXRhX2FycmF5IixkZmx0OltdfSx0YXJn ZXQ6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGRmbHQ6W119LHZhbHVlOnt2YWxUeXBlOiJkYXRh X2FycmF5IixkZmx0OltdfSxob3ZlcmluZm86e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVl czpbImFsbCIsIm5vbmUiLCJza2lwIl0sZGZsdDoiYWxsIn0saG92ZXJsYWJlbDpvLmhvdmVy bGFiZWwsaG92ZXJ0ZW1wbGF0ZTpsKHt9LHtrZXlzOlsidmFsdWUiLCJsYWJlbCJdfSksY29s b3JzY2FsZXM6dSgiY29uY2VudHJhdGlvbnNjYWxlcyIse2VkaXRUeXBlOiJjYWxjIixsYWJl bDp7dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToiY2FsYyIsZGZsdDoiIn0sY21heDp7dmFs VHlwZToibnVtYmVyIixlZGl0VHlwZToiY2FsYyIsZGZsdDoxfSxjbWluOnt2YWxUeXBlOiJu dW1iZXIiLGVkaXRUeXBlOiJjYWxjIixkZmx0OjB9LGNvbG9yc2NhbGU6aChjKCkuY29sb3Jz Y2FsZSx7ZGZsdDpbWzAsIndoaXRlIl0sWzEsImJsYWNrIl1dfSl9KX19LCJjYWxjIiwibmVz dGVkIikpLnRyYW5zZm9ybXM9dm9pZCAwfSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IvYXR0 cmlidXRlcyI6MzY1LCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6 MzczLCIuLi8uLi9jb21wb25lbnRzL2Z4L2F0dHJpYnV0ZXMiOjM5NywiLi4vLi4vbGliL2V4 dGVuZCI6NDkzLCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIjo1MzYsIi4uLy4uL3Bsb3Rf YXBpL3Bsb3RfdGVtcGxhdGUiOjU0MywiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyI6NTUwLCIu Li8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19mb3JtYXRfYXR0cmlidXRlcyI6NTU3LCIuLi8u Li9wbG90cy9kb21haW4iOjU4NCwiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIjo1ODUs Ii4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjYzM31dLDkxODpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVz Iikub3ZlcnJpZGVBbGwsaT10KCIuLi8uLi9wbG90cy9nZXRfZGF0YSIpLmdldE1vZHVsZUNh bGNEYXRhLGE9dCgiLi9wbG90Iiksbz10KCIuLi8uLi9jb21wb25lbnRzL2Z4L2xheW91dF9h dHRyaWJ1dGVzIikscz10KCIuLi8uLi9saWIvc2V0Y3Vyc29yIiksbD10KCIuLi8uLi9jb21w b25lbnRzL2RyYWdlbGVtZW50IiksYz10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vc2VsZWN0 IikucHJlcFNlbGVjdCx1PXQoIi4uLy4uL2xpYiIpLGY9dCgiLi4vLi4vcmVnaXN0cnkiKTtm dW5jdGlvbiBoKHQsZSl7dmFyIHI9dC5fZnVsbERhdGFbZV0sbj10Ll9mdWxsTGF5b3V0LGk9 bi5kcmFnbW9kZSxhPSJwYW4iPT09bi5kcmFnbW9kZT8ibW92ZSI6ImNyb3NzaGFpciIsbz1y Ll9iZ1JlY3Q7aWYoInBhbiIhPT1pJiYiem9vbSIhPT1pKXtzKG8sYSk7dmFyIGg9e19pZDoi eCIsYzJwOnUuaWRlbnRpdHksX29mZnNldDpyLl9zYW5rZXkudHJhbnNsYXRlWCxfbGVuZ3Ro OnIuX3NhbmtleS53aWR0aH0scD17X2lkOiJ5IixjMnA6dS5pZGVudGl0eSxfb2Zmc2V0OnIu X3NhbmtleS50cmFuc2xhdGVZLF9sZW5ndGg6ci5fc2Fua2V5LmhlaWdodH0sZD17Z2Q6dCxl bGVtZW50Om8ubm9kZSgpLHBsb3RpbmZvOntpZDplLHhheGlzOmgseWF4aXM6cCxmaWxsUmFu Z2VJdGVtczp1Lm5vb3B9LHN1YnBsb3Q6ZSx4YXhlczpbaF0seWF4ZXM6W3BdLGRvbmVGbkNv bXBsZXRlZDpmdW5jdGlvbihyKXt2YXIgbixpPXQuX2Z1bGxEYXRhW2VdLGE9aS5ub2RlLmdy b3Vwcy5zbGljZSgpLG89W107ZnVuY3Rpb24gcyh0KXtmb3IodmFyIGU9aS5fc2Fua2V5Lmdy YXBoLm5vZGVzLHI9MDtyPGUubGVuZ3RoO3IrKylpZihlW3JdLnBvaW50TnVtYmVyPT09dCly ZXR1cm4gZVtyXX1mb3IodmFyIGw9MDtsPHIubGVuZ3RoO2wrKyl7dmFyIGM9cyhyW2xdLnBv aW50TnVtYmVyKTtpZihjKWlmKGMuZ3JvdXApe2Zvcih2YXIgdT0wO3U8Yy5jaGlsZHJlbk5v ZGVzLmxlbmd0aDt1Kyspby5wdXNoKGMuY2hpbGRyZW5Ob2Rlc1t1XS5wb2ludE51bWJlcik7 YVtjLnBvaW50TnVtYmVyLWkubm9kZS5fY291bnRdPSExfWVsc2Ugby5wdXNoKGMucG9pbnRO dW1iZXIpfW49YS5maWx0ZXIoQm9vbGVhbikuY29uY2F0KFtvXSksZi5jYWxsKCJfZ3VpUmVz dHlsZSIsdCx7Im5vZGUuZ3JvdXBzIjpbbl19LGUpfSxwcmVwRm46ZnVuY3Rpb24odCxlLHIp e2ModCxlLHIsZCxpKX19O2wuaW5pdChkKX19ci5uYW1lPSJzYW5rZXkiLHIuYmFzZUxheW91 dEF0dHJPdmVycmlkZXM9bih7aG92ZXJsYWJlbDpvLmhvdmVybGFiZWx9LCJwbG90IiwibmVz dGVkIiksci5wbG90PWZ1bmN0aW9uKHQpe3ZhciBlPWkodC5jYWxjZGF0YSwic2Fua2V5Iilb MF07YSh0LGUpLHIudXBkYXRlRngodCl9LHIuY2xlYW49ZnVuY3Rpb24odCxlLHIsbil7dmFy IGk9bi5faGFzJiZuLl9oYXMoInNhbmtleSIpLGE9ZS5faGFzJiZlLl9oYXMoInNhbmtleSIp O2kmJiFhJiYobi5fcGFwZXJkaXYuc2VsZWN0QWxsKCIuc2Fua2V5IikucmVtb3ZlKCksbi5f cGFwZXJkaXYuc2VsZWN0QWxsKCIuYmdzYW5rZXkiKS5yZW1vdmUoKSl9LHIudXBkYXRlRng9 ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0Ll9mdWxsRGF0YS5sZW5ndGg7ZSsrKWgodCxl KX19LHsiLi4vLi4vY29tcG9uZW50cy9kcmFnZWxlbWVudCI6Mzg1LCIuLi8uLi9jb21wb25l bnRzL2Z4L2xheW91dF9hdHRyaWJ1dGVzIjo0MDcsIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9s aWIvc2V0Y3Vyc29yIjo1MjQsIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiOjUzNiwiLi4v Li4vcGxvdHMvY2FydGVzaWFuL3NlbGVjdCI6NTc1LCIuLi8uLi9wbG90cy9nZXRfZGF0YSI6 NTkzLCIuLi8uLi9yZWdpc3RyeSI6NjM4LCIuL3Bsb3QiOjkyM31dLDkxOTpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJzdHJvbmdseS1jb25uZWN0ZWQtY29tcG9u ZW50cyIpLGk9dCgiLi4vLi4vbGliIiksYT10KCIuLi8uLi9saWIvZ3VwIikud3JhcCxvPWku aXNBcnJheU9yVHlwZWRBcnJheSxzPWkuaXNJbmRleCxsPXQoIi4uLy4uL2NvbXBvbmVudHMv Y29sb3JzY2FsZSIpO2Z1bmN0aW9uIGModCl7dmFyIGUscj10Lm5vZGUsYT10LmxpbmssYz1b XSx1PW8oYS5jb2xvciksZj1vKGEuY3VzdG9tZGF0YSksaD17fSxwPXt9LGQ9YS5jb2xvcnNj YWxlcy5sZW5ndGg7Zm9yKGU9MDtlPGQ7ZSsrKXt2YXIgbT1hLmNvbG9yc2NhbGVzW2VdLGc9 bC5leHRyYWN0U2NhbGUobSx7Y0xldHRlcjoiYyJ9KSx2PWwubWFrZUNvbG9yU2NhbGVGdW5j KGcpO3BbbS5sYWJlbF09dn12YXIgeT0wO2ZvcihlPTA7ZTxhLnZhbHVlLmxlbmd0aDtlKysp YS5zb3VyY2VbZV0+eSYmKHk9YS5zb3VyY2VbZV0pLGEudGFyZ2V0W2VdPnkmJih5PWEudGFy Z2V0W2VdKTt2YXIgeCxiPXkrMTt0Lm5vZGUuX2NvdW50PWI7dmFyIF89dC5ub2RlLmdyb3Vw cyx3PXt9O2ZvcihlPTA7ZTxfLmxlbmd0aDtlKyspe3ZhciBUPV9bZV07Zm9yKHg9MDt4PFQu bGVuZ3RoO3grKyl7dmFyIGs9VFt4XSxBPWIrZTt3Lmhhc093blByb3BlcnR5KGspP2kud2Fy bigiTm9kZSAiK2srIiBpcyBhbHJlYWR5IHBhcnQgb2YgYSBncm91cC4iKTp3W2tdPUF9fXZh ciBNPXtzb3VyY2U6W10sdGFyZ2V0OltdfTtmb3IoZT0wO2U8YS52YWx1ZS5sZW5ndGg7ZSsr KXt2YXIgUz1hLnZhbHVlW2VdLEU9YS5zb3VyY2VbZV0sTD1hLnRhcmdldFtlXTtpZihTPjAm JnMoRSxiKSYmcyhMLGIpJiYoIXcuaGFzT3duUHJvcGVydHkoRSl8fCF3Lmhhc093blByb3Bl cnR5KEwpfHx3W0VdIT09d1tMXSkpe3cuaGFzT3duUHJvcGVydHkoTCkmJihMPXdbTF0pLHcu aGFzT3duUHJvcGVydHkoRSkmJihFPXdbRV0pLEw9K0wsaFtFPStFXT1oW0xdPSEwO3ZhciBD PSIiO2EubGFiZWwmJmEubGFiZWxbZV0mJihDPWEubGFiZWxbZV0pO3ZhciBQPW51bGw7QyYm cC5oYXNPd25Qcm9wZXJ0eShDKSYmKFA9cFtDXSksYy5wdXNoKHtwb2ludE51bWJlcjplLGxh YmVsOkMsY29sb3I6dT9hLmNvbG9yW2VdOmEuY29sb3IsY3VzdG9tZGF0YTpmP2EuY3VzdG9t ZGF0YVtlXTphLmN1c3RvbWRhdGEsY29uY2VudHJhdGlvbnNjYWxlOlAsc291cmNlOkUsdGFy Z2V0OkwsdmFsdWU6K1N9KSxNLnNvdXJjZS5wdXNoKEUpLE0udGFyZ2V0LnB1c2goTCl9fXZh ciBJPWIrXy5sZW5ndGgsTz1vKHIuY29sb3IpLHo9byhyLmN1c3RvbWRhdGEpLEQ9W107Zm9y KGU9MDtlPEk7ZSsrKWlmKGhbZV0pe3ZhciBSPXIubGFiZWxbZV07RC5wdXNoKHtncm91cDpl PmItMSxjaGlsZHJlbk5vZGVzOltdLHBvaW50TnVtYmVyOmUsbGFiZWw6Uixjb2xvcjpPP3Iu Y29sb3JbZV06ci5jb2xvcixjdXN0b21kYXRhOno/ci5jdXN0b21kYXRhW2VdOnIuY3VzdG9t ZGF0YX0pfXZhciBGPSExO3JldHVybiBmdW5jdGlvbih0LGUscil7Zm9yKHZhciBhPWkuaW5p dDJkQXJyYXkodCwwKSxvPTA7bzxNYXRoLm1pbihlLmxlbmd0aCxyLmxlbmd0aCk7bysrKWlm KGkuaXNJbmRleChlW29dLHQpJiZpLmlzSW5kZXgocltvXSx0KSl7aWYoZVtvXT09PXJbb10p cmV0dXJuITA7YVtlW29dXS5wdXNoKHJbb10pfXJldHVybiBuKGEpLmNvbXBvbmVudHMuc29t ZSgoZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RoPjF9KSl9KEksTS5zb3VyY2UsTS50YXJn ZXQpJiYoRj0hMCkse2NpcmN1bGFyOkYsbGlua3M6Yyxub2RlczpELGdyb3VwczpfLGdyb3Vw TG9va3VwOnd9fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPWMoZSk7cmV0dXJuIGEo e2NpcmN1bGFyOnIuY2lyY3VsYXIsX25vZGVzOnIubm9kZXMsX2xpbmtzOnIubGlua3MsX2dy b3VwczpyLmdyb3VwcyxfZ3JvdXBMb29rdXA6ci5ncm91cExvb2t1cH0pfX0seyIuLi8uLi9j b21wb25lbnRzL2NvbG9yc2NhbGUiOjM3OCwiLi4vLi4vbGliIjo1MDMsIi4uLy4uL2xpYi9n dXAiOjUwMCwic3Ryb25nbHktY29ubmVjdGVkLWNvbXBvbmVudHMiOjMwNn1dLDkyMDpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e25vZGVUZXh0T2Zmc2V0SG9y aXpvbnRhbDo0LG5vZGVUZXh0T2Zmc2V0VmVydGljYWw6Myxub2RlUGFkQWNyb3NzOjEwLHNh bmtleUl0ZXJhdGlvbnM6NTAsZm9yY2VJdGVyYXRpb25zOjUsZm9yY2VUaWNrc1BlckZyYW1l OjEwLGR1cmF0aW9uOjUwMCxlYXNlOiJsaW5lYXIiLGNuOntzYW5rZXk6InNhbmtleSIsc2Fu a2V5TGlua3M6InNhbmtleS1saW5rcyIsc2Fua2V5TGluazoic2Fua2V5LWxpbmsiLHNhbmtl eU5vZGVTZXQ6InNhbmtleS1ub2RlLXNldCIsc2Fua2V5Tm9kZToic2Fua2V5LW5vZGUiLG5v ZGVSZWN0OiJub2RlLXJlY3QiLG5vZGVMYWJlbDoibm9kZS1sYWJlbCJ9fX0se31dLDkyMTpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQo Ii4vYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLG89dCgidGlu eWNvbG9yMiIpLHM9dCgiLi4vLi4vcGxvdHMvZG9tYWluIikuZGVmYXVsdHMsbD10KCIuLi8u Li9jb21wb25lbnRzL2Z4L2hvdmVybGFiZWxfZGVmYXVsdHMiKSxjPXQoIi4uLy4uL3Bsb3Rf YXBpL3Bsb3RfdGVtcGxhdGUiKSx1PXQoIi4uLy4uL3Bsb3RzL2FycmF5X2NvbnRhaW5lcl9k ZWZhdWx0cyIpO2Z1bmN0aW9uIGYodCxlKXtmdW5jdGlvbiByKHIsYSl7cmV0dXJuIG4uY29l cmNlKHQsZSxpLmxpbmsuY29sb3JzY2FsZXMscixhKX1yKCJsYWJlbCIpLHIoImNtaW4iKSxy KCJjbWF4IikscigiY29sb3JzY2FsZSIpfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscixoKXtm dW5jdGlvbiBwKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxpLHIsYSl9dmFyIGQ9bi5leHRl bmREZWVwKGguaG92ZXJsYWJlbCx0LmhvdmVybGFiZWwpLG09dC5ub2RlLGc9Yy5uZXdDb250 YWluZXIoZSwibm9kZSIpO2Z1bmN0aW9uIHYodCxlKXtyZXR1cm4gbi5jb2VyY2UobSxnLGku bm9kZSx0LGUpfXYoImxhYmVsIiksdigiZ3JvdXBzIiksdigieCIpLHYoInkiKSx2KCJwYWQi KSx2KCJ0aGlja25lc3MiKSx2KCJsaW5lLmNvbG9yIiksdigibGluZS53aWR0aCIpLHYoImhv dmVyaW5mbyIsdC5ob3ZlcmluZm8pLGwobSxnLHYsZCksdigiaG92ZXJ0ZW1wbGF0ZSIpO3Zh ciB5PWguY29sb3J3YXk7digiY29sb3IiLGcubGFiZWwubWFwKChmdW5jdGlvbih0LGUpe3Jl dHVybiBhLmFkZE9wYWNpdHkoZnVuY3Rpb24odCl7cmV0dXJuIHlbdCV5Lmxlbmd0aF19KGUp LC44KX0pKSksdigiY3VzdG9tZGF0YSIpO3ZhciB4PXQubGlua3x8e30sYj1jLm5ld0NvbnRh aW5lcihlLCJsaW5rIik7ZnVuY3Rpb24gXyh0LGUpe3JldHVybiBuLmNvZXJjZSh4LGIsaS5s aW5rLHQsZSl9XygibGFiZWwiKSxfKCJzb3VyY2UiKSxfKCJ0YXJnZXQiKSxfKCJ2YWx1ZSIp LF8oImxpbmUuY29sb3IiKSxfKCJsaW5lLndpZHRoIiksXygiaG92ZXJpbmZvIix0LmhvdmVy aW5mbyksbCh4LGIsXyxkKSxfKCJob3ZlcnRlbXBsYXRlIik7dmFyIHcsVD1vKGgucGFwZXJf Ymdjb2xvcikuZ2V0THVtaW5hbmNlKCk8LjMzMz8icmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYp IjoicmdiYSgwLCAwLCAwLCAwLjIpIjtfKCJjb2xvciIsbi5yZXBlYXQoVCxiLnZhbHVlLmxl bmd0aCkpLF8oImN1c3RvbWRhdGEiKSx1KHgsYix7bmFtZToiY29sb3JzY2FsZXMiLGhhbmRs ZUl0ZW1EZWZhdWx0czpmfSkscyhlLGgscCkscCgib3JpZW50YXRpb24iKSxwKCJ2YWx1ZWZv cm1hdCIpLHAoInZhbHVlc3VmZml4IiksZy54Lmxlbmd0aCYmZy55Lmxlbmd0aCYmKHc9ImZy ZWVmb3JtIikscCgiYXJyYW5nZW1lbnQiLHcpLG4uY29lcmNlRm9udChwLCJ0ZXh0Zm9udCIs bi5leHRlbmRGbGF0KHt9LGguZm9udCkpLGUuX2xlbmd0aD1udWxsfX0seyIuLi8uLi9jb21w b25lbnRzL2NvbG9yIjozNjYsIi4uLy4uL2NvbXBvbmVudHMvZngvaG92ZXJsYWJlbF9kZWZh dWx0cyI6NDA0LCIuLi8uLi9saWIiOjUwMywiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0 ZSI6NTQzLCIuLi8uLi9wbG90cy9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiOjU0OSwiLi4v Li4vcGxvdHMvZG9tYWluIjo1ODQsIi4vYXR0cmlidXRlcyI6OTE3LHRpbnljb2xvcjI6MzEy fV0sOTIyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17YXR0cmli dXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiks Y2FsYzp0KCIuL2NhbGMiKSxwbG90OnQoIi4vcGxvdCIpLG1vZHVsZVR5cGU6InRyYWNlIixu YW1lOiJzYW5rZXkiLGJhc2VQbG90TW9kdWxlOnQoIi4vYmFzZV9wbG90Iiksc2VsZWN0UG9p bnRzOnQoIi4vc2VsZWN0LmpzIiksY2F0ZWdvcmllczpbIm5vT3BhY2l0eSJdLG1ldGE6e319 fSx7Ii4vYXR0cmlidXRlcyI6OTE3LCIuL2Jhc2VfcGxvdCI6OTE4LCIuL2NhbGMiOjkxOSwi Li9kZWZhdWx0cyI6OTIxLCIuL3Bsb3QiOjkyMywiLi9zZWxlY3QuanMiOjkyNX1dLDkyMzpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJAcGxvdGx5L2QzIiksaT10 KCIuLi8uLi9saWIiKSxhPWkubnVtYmVyRm9ybWF0LG89dCgiLi9yZW5kZXIiKSxzPXQoIi4u Ly4uL2NvbXBvbmVudHMvZngiKSxsPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxjPXQo Ii4vY29uc3RhbnRzIikuY24sdT1pLl87ZnVuY3Rpb24gZih0KXtyZXR1cm4iIiE9PXR9ZnVu Y3Rpb24gaCh0LGUpe3JldHVybiB0LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQua2V5 PT09ZS50cmFjZUlkfSkpfWZ1bmN0aW9uIHAodCxlKXtuLnNlbGVjdCh0KS5zZWxlY3QoInBh dGgiKS5zdHlsZSgiZmlsbC1vcGFjaXR5IixlKSxuLnNlbGVjdCh0KS5zZWxlY3QoInJlY3Qi KS5zdHlsZSgiZmlsbC1vcGFjaXR5IixlKX1mdW5jdGlvbiBkKHQpe24uc2VsZWN0KHQpLnNl bGVjdCgidGV4dC5uYW1lIikuc3R5bGUoImZpbGwiLCJibGFjayIpfWZ1bmN0aW9uIG0odCl7 cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybi0xIT09dC5ub2RlLnNvdXJjZUxpbmtzLmluZGV4 T2YoZS5saW5rKXx8LTEhPT10Lm5vZGUudGFyZ2V0TGlua3MuaW5kZXhPZihlLmxpbmspfX1m dW5jdGlvbiBnKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4tMSE9PWUubm9kZS5zb3Vy Y2VMaW5rcy5pbmRleE9mKHQubGluayl8fC0xIT09ZS5ub2RlLnRhcmdldExpbmtzLmluZGV4 T2YodC5saW5rKX19ZnVuY3Rpb24gdih0LGUscil7ZSYmciYmaChyLGUpLnNlbGVjdEFsbCgi LiIrYy5zYW5rZXlMaW5rKS5maWx0ZXIobShlKSkuY2FsbCh4LmJpbmQoMCxlLHIsITEpKX1m dW5jdGlvbiB5KHQsZSxyKXtlJiZyJiZoKHIsZSkuc2VsZWN0QWxsKCIuIitjLnNhbmtleUxp bmspLmZpbHRlcihtKGUpKS5jYWxsKGIuYmluZCgwLGUsciwhMSkpfWZ1bmN0aW9uIHgodCxl LHIsbil7dmFyIGk9bi5kYXR1bSgpLmxpbmsubGFiZWw7bi5zdHlsZSgiZmlsbC1vcGFjaXR5 IiwoZnVuY3Rpb24odCl7aWYoIXQubGluay5jb25jZW50cmF0aW9uc2NhbGUpcmV0dXJuLjR9 KSksaSYmaChlLHQpLnNlbGVjdEFsbCgiLiIrYy5zYW5rZXlMaW5rKS5maWx0ZXIoKGZ1bmN0 aW9uKHQpe3JldHVybiB0LmxpbmsubGFiZWw9PT1pfSkpLnN0eWxlKCJmaWxsLW9wYWNpdHki LChmdW5jdGlvbih0KXtpZighdC5saW5rLmNvbmNlbnRyYXRpb25zY2FsZSlyZXR1cm4uNH0p KSxyJiZoKGUsdCkuc2VsZWN0QWxsKCIuIitjLnNhbmtleU5vZGUpLmZpbHRlcihnKHQpKS5j YWxsKHYpfWZ1bmN0aW9uIGIodCxlLHIsbil7dmFyIGk9bi5kYXR1bSgpLmxpbmsubGFiZWw7 bi5zdHlsZSgiZmlsbC1vcGFjaXR5IiwoZnVuY3Rpb24odCl7cmV0dXJuIHQudGlueUNvbG9y QWxwaGF9KSksaSYmaChlLHQpLnNlbGVjdEFsbCgiLiIrYy5zYW5rZXlMaW5rKS5maWx0ZXIo KGZ1bmN0aW9uKHQpe3JldHVybiB0LmxpbmsubGFiZWw9PT1pfSkpLnN0eWxlKCJmaWxsLW9w YWNpdHkiLChmdW5jdGlvbih0KXtyZXR1cm4gdC50aW55Q29sb3JBbHBoYX0pKSxyJiZoKGUs dCkuc2VsZWN0QWxsKGMuc2Fua2V5Tm9kZSkuZmlsdGVyKGcodCkpLmNhbGwoeSl9ZnVuY3Rp b24gXyh0LGUpe3ZhciByPXQuaG92ZXJsYWJlbHx8e30sbj1pLm5lc3RlZFByb3BlcnR5KHIs ZSkuZ2V0KCk7cmV0dXJuIUFycmF5LmlzQXJyYXkobikmJm59ZS5leHBvcnRzPWZ1bmN0aW9u KHQsZSl7Zm9yKHZhciByPXQuX2Z1bGxMYXlvdXQsaT1yLl9wYXBlcixoPXIuX3NpemUsbT0w O208dC5fZnVsbERhdGEubGVuZ3RoO20rKylpZih0Ll9mdWxsRGF0YVttXS52aXNpYmxlJiZ0 Ll9mdWxsRGF0YVttXS50eXBlPT09Yy5zYW5rZXkmJiF0Ll9mdWxsRGF0YVttXS5fdmlld0lu aXRpYWwpe3ZhciBnPXQuX2Z1bGxEYXRhW21dLm5vZGU7dC5fZnVsbERhdGFbbV0uX3ZpZXdJ bml0aWFsPXtub2RlOntncm91cHM6Zy5ncm91cHMuc2xpY2UoKSx4OmcueC5zbGljZSgpLHk6 Zy55LnNsaWNlKCl9fX12YXIgdz11KHQsInNvdXJjZToiKSsiICIsVD11KHQsInRhcmdldDoi KSsiICIsaz11KHQsImNvbmNlbnRyYXRpb246IikrIiAiLEE9dSh0LCJpbmNvbWluZyBmbG93 IGNvdW50OiIpKyIgIixNPXUodCwib3V0Z29pbmcgZmxvdyBjb3VudDoiKSsiICI7byh0LGks ZSx7d2lkdGg6aC53LGhlaWdodDpoLmgsbWFyZ2luOnt0OmgudCxyOmgucixiOmguYixsOmgu bH19LHtsaW5rRXZlbnRzOntob3ZlcjpmdW5jdGlvbihlLHIsaSl7ITEhPT10Ll9mdWxsTGF5 b3V0LmhvdmVybW9kZSYmKG4uc2VsZWN0KGUpLmNhbGwoeC5iaW5kKDAscixpLCEwKSksInNr aXAiIT09ci5saW5rLnRyYWNlLmxpbmsuaG92ZXJpbmZvJiYoci5saW5rLmZ1bGxEYXRhPXIu bGluay50cmFjZSx0LmVtaXQoInBsb3RseV9ob3ZlciIse2V2ZW50Om4uZXZlbnQscG9pbnRz OltyLmxpbmtdfSkpKX0sZm9sbG93OmZ1bmN0aW9uKGUsaSl7aWYoITEhPT10Ll9mdWxsTGF5 b3V0LmhvdmVybW9kZSl7dmFyIG89aS5saW5rLnRyYWNlLmxpbms7aWYoIm5vbmUiIT09by5o b3ZlcmluZm8mJiJza2lwIiE9PW8uaG92ZXJpbmZvKXtmb3IodmFyIGM9W10sdT0wLGg9MDto PGkuZmxvdy5saW5rcy5sZW5ndGg7aCsrKXt2YXIgbT1pLmZsb3cubGlua3NbaF07aWYoImNs b3Nlc3QiIT09dC5fZnVsbExheW91dC5ob3Zlcm1vZGV8fGkubGluay5wb2ludE51bWJlcj09 PW0ucG9pbnROdW1iZXIpe2kubGluay5wb2ludE51bWJlcj09PW0ucG9pbnROdW1iZXImJih1 PWgpLG0uZnVsbERhdGE9bS50cmFjZSxvPWkubGluay50cmFjZS5saW5rO3ZhciBnPXkobSks dj17dmFsdWVMYWJlbDphKGkudmFsdWVGb3JtYXQpKG0udmFsdWUpK2kudmFsdWVTdWZmaXh9 O2MucHVzaCh7eDpnWzBdLHk6Z1sxXSxuYW1lOnYudmFsdWVMYWJlbCx0ZXh0OlttLmxhYmVs fHwiIix3K20uc291cmNlLmxhYmVsLFQrbS50YXJnZXQubGFiZWwsbS5jb25jZW50cmF0aW9u c2NhbGU/aythKCIlMC4yZiIpKG0uZmxvdy5sYWJlbENvbmNlbnRyYXRpb24pOiIiXS5maWx0 ZXIoZikuam9pbigiPGJyPiIpLGNvbG9yOl8obywiYmdjb2xvciIpfHxsLmFkZE9wYWNpdHko bS5jb2xvciwxKSxib3JkZXJDb2xvcjpfKG8sImJvcmRlcmNvbG9yIiksZm9udEZhbWlseTpf KG8sImZvbnQuZmFtaWx5IiksZm9udFNpemU6XyhvLCJmb250LnNpemUiKSxmb250Q29sb3I6 XyhvLCJmb250LmNvbG9yIiksbmFtZUxlbmd0aDpfKG8sIm5hbWVsZW5ndGgiKSx0ZXh0QWxp Z246XyhvLCJhbGlnbiIpLGlkZWFsQWxpZ246bi5ldmVudC54PGdbMF0/InJpZ2h0IjoibGVm dCIsaG92ZXJ0ZW1wbGF0ZTpvLmhvdmVydGVtcGxhdGUsaG92ZXJ0ZW1wbGF0ZUxhYmVsczp2 LGV2ZW50RGF0YTpbbV19KX19cy5sb25lSG92ZXIoYyx7Y29udGFpbmVyOnIuX2hvdmVybGF5 ZXIubm9kZSgpLG91dGVyQ29udGFpbmVyOnIuX3BhcGVyLm5vZGUoKSxnZDp0LGFuY2hvcklu ZGV4OnV9KS5lYWNoKChmdW5jdGlvbigpe2kubGluay5jb25jZW50cmF0aW9uc2NhbGV8fHAo dGhpcywuNjUpLGQodGhpcyl9KSl9fWZ1bmN0aW9uIHkodCl7dmFyIGUscjt0LmNpcmN1bGFy PyhlPSh0LmNpcmN1bGFyUGF0aERhdGEubGVmdElubmVyRXh0ZW50K3QuY2lyY3VsYXJQYXRo RGF0YS5yaWdodElubmVyRXh0ZW50KS8yLHI9dC5jaXJjdWxhclBhdGhEYXRhLnZlcnRpY2Fs RnVsbEV4dGVudCk6KGU9KHQuc291cmNlLngxK3QudGFyZ2V0LngwKS8yLHI9KHQueTArdC55 MSkvMik7dmFyIG49W2Uscl07cmV0dXJuInYiPT09dC50cmFjZS5vcmllbnRhdGlvbiYmbi5y ZXZlcnNlKCksblswXSs9aS5wYXJlbnQudHJhbnNsYXRlWCxuWzFdKz1pLnBhcmVudC50cmFu c2xhdGVZLG59fSx1bmhvdmVyOmZ1bmN0aW9uKGUsaSxhKXshMSE9PXQuX2Z1bGxMYXlvdXQu aG92ZXJtb2RlJiYobi5zZWxlY3QoZSkuY2FsbChiLmJpbmQoMCxpLGEsITApKSwic2tpcCIh PT1pLmxpbmsudHJhY2UubGluay5ob3ZlcmluZm8mJihpLmxpbmsuZnVsbERhdGE9aS5saW5r LnRyYWNlLHQuZW1pdCgicGxvdGx5X3VuaG92ZXIiLHtldmVudDpuLmV2ZW50LHBvaW50czpb aS5saW5rXX0pKSxzLmxvbmVVbmhvdmVyKHIuX2hvdmVybGF5ZXIubm9kZSgpKSl9LHNlbGVj dDpmdW5jdGlvbihlLHIpe3ZhciBpPXIubGluaztpLm9yaWdpbmFsRXZlbnQ9bi5ldmVudCx0 Ll9ob3ZlcmRhdGE9W2ldLHMuY2xpY2sodCx7dGFyZ2V0OiEwfSl9fSxub2RlRXZlbnRzOnto b3ZlcjpmdW5jdGlvbihlLHIsaSl7ITEhPT10Ll9mdWxsTGF5b3V0LmhvdmVybW9kZSYmKG4u c2VsZWN0KGUpLmNhbGwodixyLGkpLCJza2lwIiE9PXIubm9kZS50cmFjZS5ub2RlLmhvdmVy aW5mbyYmKHIubm9kZS5mdWxsRGF0YT1yLm5vZGUudHJhY2UsdC5lbWl0KCJwbG90bHlfaG92 ZXIiLHtldmVudDpuLmV2ZW50LHBvaW50czpbci5ub2RlXX0pKSl9LGZvbGxvdzpmdW5jdGlv bihlLGkpe2lmKCExIT09dC5fZnVsbExheW91dC5ob3Zlcm1vZGUpe3ZhciBvPWkubm9kZS50 cmFjZS5ub2RlO2lmKCJub25lIiE9PW8uaG92ZXJpbmZvJiYic2tpcCIhPT1vLmhvdmVyaW5m byl7dmFyIGw9bi5zZWxlY3QoZSkuc2VsZWN0KCIuIitjLm5vZGVSZWN0KSx1PXQuX2Z1bGxM YXlvdXQuX3BhcGVyZGl2Lm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxoPWwubm9k ZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG09aC5sZWZ0LTItdS5sZWZ0LGc9aC5yaWdo dCsyLXUubGVmdCx2PWgudG9wK2guaGVpZ2h0LzQtdS50b3AseT17dmFsdWVMYWJlbDphKGku dmFsdWVGb3JtYXQpKGkubm9kZS52YWx1ZSkraS52YWx1ZVN1ZmZpeH07aS5ub2RlLmZ1bGxE YXRhPWkubm9kZS50cmFjZSx0Ll9mdWxsTGF5b3V0Ll9jYWxjSW52ZXJzZVRyYW5zZm9ybSh0 KTt2YXIgeD10Ll9mdWxsTGF5b3V0Ll9pbnZTY2FsZVgsYj10Ll9mdWxsTGF5b3V0Ll9pbnZT Y2FsZVksdz1zLmxvbmVIb3Zlcih7eDA6eCptLHgxOngqZyx5OmIqdixuYW1lOmEoaS52YWx1 ZUZvcm1hdCkoaS5ub2RlLnZhbHVlKStpLnZhbHVlU3VmZml4LHRleHQ6W2kubm9kZS5sYWJl bCxBK2kubm9kZS50YXJnZXRMaW5rcy5sZW5ndGgsTStpLm5vZGUuc291cmNlTGlua3MubGVu Z3RoXS5maWx0ZXIoZikuam9pbigiPGJyPiIpLGNvbG9yOl8obywiYmdjb2xvciIpfHxpLnRp bnlDb2xvckh1ZSxib3JkZXJDb2xvcjpfKG8sImJvcmRlcmNvbG9yIiksZm9udEZhbWlseTpf KG8sImZvbnQuZmFtaWx5IiksZm9udFNpemU6XyhvLCJmb250LnNpemUiKSxmb250Q29sb3I6 XyhvLCJmb250LmNvbG9yIiksbmFtZUxlbmd0aDpfKG8sIm5hbWVsZW5ndGgiKSx0ZXh0QWxp Z246XyhvLCJhbGlnbiIpLGlkZWFsQWxpZ246ImxlZnQiLGhvdmVydGVtcGxhdGU6by5ob3Zl cnRlbXBsYXRlLGhvdmVydGVtcGxhdGVMYWJlbHM6eSxldmVudERhdGE6W2kubm9kZV19LHtj b250YWluZXI6ci5faG92ZXJsYXllci5ub2RlKCksb3V0ZXJDb250YWluZXI6ci5fcGFwZXIu bm9kZSgpLGdkOnR9KTtwKHcsLjg1KSxkKHcpfX19LHVuaG92ZXI6ZnVuY3Rpb24oZSxpLGEp eyExIT09dC5fZnVsbExheW91dC5ob3Zlcm1vZGUmJihuLnNlbGVjdChlKS5jYWxsKHksaSxh KSwic2tpcCIhPT1pLm5vZGUudHJhY2Uubm9kZS5ob3ZlcmluZm8mJihpLm5vZGUuZnVsbERh dGE9aS5ub2RlLnRyYWNlLHQuZW1pdCgicGxvdGx5X3VuaG92ZXIiLHtldmVudDpuLmV2ZW50 LHBvaW50czpbaS5ub2RlXX0pKSxzLmxvbmVVbmhvdmVyKHIuX2hvdmVybGF5ZXIubm9kZSgp KSl9LHNlbGVjdDpmdW5jdGlvbihlLHIsaSl7dmFyIGE9ci5ub2RlO2Eub3JpZ2luYWxFdmVu dD1uLmV2ZW50LHQuX2hvdmVyZGF0YT1bYV0sbi5zZWxlY3QoZSkuY2FsbCh5LHIsaSkscy5j bGljayh0LHt0YXJnZXQ6ITB9KX19fSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjM2 NiwiLi4vLi4vY29tcG9uZW50cy9meCI6NDA2LCIuLi8uLi9saWIiOjUwMywiLi9jb25zdGFu dHMiOjkyMCwiLi9yZW5kZXIiOjkyNCwiQHBsb3RseS9kMyI6NTh9XSw5MjQ6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZDMtZm9yY2UiKSxpPXQoImQzLWludGVy cG9sYXRlIikuaW50ZXJwb2xhdGVOdW1iZXIsYT10KCJAcGxvdGx5L2QzIiksbz10KCJAcGxv dGx5L2QzLXNhbmtleSIpLHM9dCgiQHBsb3RseS9kMy1zYW5rZXktY2lyY3VsYXIiKSxsPXQo Ii4vY29uc3RhbnRzIiksYz10KCJ0aW55Y29sb3IyIiksdT10KCIuLi8uLi9jb21wb25lbnRz L2NvbG9yIiksZj10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxoPXQoIi4uLy4uL2xp YiIpLHA9aC5zdHJUcmFuc2xhdGUsZD1oLnN0clJvdGF0ZSxtPXQoIi4uLy4uL2xpYi9ndXAi KSxnPW0ua2V5RnVuLHY9bS5yZXBlYXQseT1tLnVud3JhcCx4PXQoIi4uLy4uL2xpYi9zdmdf dGV4dF91dGlscyIpLGI9dCgiLi4vLi4vcmVnaXN0cnkiKSxfPXQoIi4uLy4uL2NvbnN0YW50 cy9hbGlnbm1lbnQiKSx3PV8uQ0FQX1NISUZULFQ9Xy5MSU5FX1NQQUNJTkc7ZnVuY3Rpb24g ayh0LGUscil7dmFyIG4saT15KGUpLGE9aS50cmFjZSx1PWEuZG9tYWluLGY9ImgiPT09YS5v cmllbnRhdGlvbixwPWEubm9kZS5wYWQsZD1hLm5vZGUudGhpY2tuZXNzLG09dC53aWR0aCoo dS54WzFdLXUueFswXSksZz10LmhlaWdodCoodS55WzFdLXUueVswXSksdj1pLl9ub2Rlcyx4 PWkuX2xpbmtzLGI9aS5jaXJjdWxhcjsobj1iP3Muc2Fua2V5Q2lyY3VsYXIoKS5jaXJjdWxh ckxpbmtHYXAoMCk6by5zYW5rZXkoKSkuaXRlcmF0aW9ucyhsLnNhbmtleUl0ZXJhdGlvbnMp LnNpemUoZj9bbSxnXTpbZyxtXSkubm9kZVdpZHRoKGQpLm5vZGVQYWRkaW5nKHApLm5vZGVJ ZCgoZnVuY3Rpb24odCl7cmV0dXJuIHQucG9pbnROdW1iZXJ9KSkubm9kZXModikubGlua3Mo eCk7dmFyIF8sdyxULGs9bigpO2Zvcih2YXIgQSBpbiBuLm5vZGVQYWRkaW5nKCk8cCYmaC53 YXJuKCJub2RlLnBhZCB3YXMgcmVkdWNlZCB0byAiLG4ubm9kZVBhZGRpbmcoKSwiIHRvIGZp dCB3aXRoaW4gdGhlIGZpZ3VyZS4iKSxpLl9ncm91cExvb2t1cCl7dmFyIE0sUz1wYXJzZUlu dChpLl9ncm91cExvb2t1cFtBXSk7Zm9yKF89MDtfPGsubm9kZXMubGVuZ3RoO18rKylpZihr Lm5vZGVzW19dLnBvaW50TnVtYmVyPT09Uyl7TT1rLm5vZGVzW19dO2JyZWFrfWlmKE0pe3Zh ciBFPXtwb2ludE51bWJlcjpwYXJzZUludChBKSx4MDpNLngwLHgxOk0ueDEseTA6TS55MCx5 MTpNLnkxLHBhcnRPZkdyb3VwOiEwLHNvdXJjZUxpbmtzOltdLHRhcmdldExpbmtzOltdfTtr Lm5vZGVzLnVuc2hpZnQoRSksTS5jaGlsZHJlbk5vZGVzLnVuc2hpZnQoRSl9fWlmKGZ1bmN0 aW9uKCl7Zm9yKF89MDtfPGsubm9kZXMubGVuZ3RoO18rKyl7dmFyIHQsZSxyPWsubm9kZXNb X10sbj17fTtmb3Iodz0wO3c8ci50YXJnZXRMaW5rcy5sZW5ndGg7dysrKXQ9KGU9ci50YXJn ZXRMaW5rc1t3XSkuc291cmNlLnBvaW50TnVtYmVyKyI6IitlLnRhcmdldC5wb2ludE51bWJl cixuLmhhc093blByb3BlcnR5KHQpfHwoblt0XT1bXSksblt0XS5wdXNoKGUpO3ZhciBpPU9i amVjdC5rZXlzKG4pO2Zvcih3PTA7dzxpLmxlbmd0aDt3Kyspe3ZhciBhPW5bdD1pW3ddXSxv PTAscz17fTtmb3IoVD0wO1Q8YS5sZW5ndGg7VCsrKXNbKGU9YVtUXSkubGFiZWxdfHwoc1tl LmxhYmVsXT0wKSxzW2UubGFiZWxdKz1lLnZhbHVlLG8rPWUudmFsdWU7Zm9yKFQ9MDtUPGEu bGVuZ3RoO1QrKykoZT1hW1RdKS5mbG93PXt2YWx1ZTpvLGxhYmVsQ29uY2VudHJhdGlvbjpz W2UubGFiZWxdL28sY29uY2VudHJhdGlvbjplLnZhbHVlL28sbGlua3M6YX0sZS5jb25jZW50 cmF0aW9uc2NhbGUmJihlLmNvbG9yPWMoZS5jb25jZW50cmF0aW9uc2NhbGUoZS5mbG93Lmxh YmVsQ29uY2VudHJhdGlvbikpKX12YXIgbD0wO2Zvcih3PTA7dzxyLnNvdXJjZUxpbmtzLmxl bmd0aDt3KyspbCs9ci5zb3VyY2VMaW5rc1t3XS52YWx1ZTtmb3Iodz0wO3c8ci5zb3VyY2VM aW5rcy5sZW5ndGg7dysrKShlPXIuc291cmNlTGlua3Nbd10pLmNvbmNlbnRyYXRpb25PdXQ9 ZS52YWx1ZS9sO3ZhciB1PTA7Zm9yKHc9MDt3PHIudGFyZ2V0TGlua3MubGVuZ3RoO3crKyl1 Kz1yLnRhcmdldExpbmtzW3ddLnZhbHVlO2Zvcih3PTA7dzxyLnRhcmdldExpbmtzLmxlbmd0 aDt3KyspKGU9ci50YXJnZXRMaW5rc1t3XSkuY29uY2VucmF0aW9uSW49ZS52YWx1ZS91fX0o KSxhLm5vZGUueC5sZW5ndGgmJmEubm9kZS55Lmxlbmd0aCl7Zm9yKF89MDtfPE1hdGgubWlu KGEubm9kZS54Lmxlbmd0aCxhLm5vZGUueS5sZW5ndGgsay5ub2Rlcy5sZW5ndGgpO18rKylp ZihhLm5vZGUueFtfXSYmYS5ub2RlLnlbX10pe3ZhciBMPVthLm5vZGUueFtfXSptLGEubm9k ZS55W19dKmddO2subm9kZXNbX10ueDA9TFswXS1kLzIsay5ub2Rlc1tfXS54MT1MWzBdK2Qv Mjt2YXIgQz1rLm5vZGVzW19dLnkxLWsubm9kZXNbX10ueTA7ay5ub2Rlc1tfXS55MD1MWzFd LUMvMixrLm5vZGVzW19dLnkxPUxbMV0rQy8yfWlmKCJzbmFwIj09PWEuYXJyYW5nZW1lbnQp IWZ1bmN0aW9uKHQpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGUscixuLGk9MCxhPXQu bGVuZ3RoO2Zvcih0LnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQueTAtZS55MH0pKSxu PTA7bjxhOysrbikoZT10W25dKS55MD49aXx8KHI9aS1lLnkwKT4xZS02JiYoZS55MCs9cixl LnkxKz1yKSxpPWUueTErcH0pKX0oZnVuY3Rpb24odCl7dmFyIGUscixuPXQubWFwKChmdW5j dGlvbih0LGUpe3JldHVybnt4MDp0LngwLGluZGV4OmV9fSkpLnNvcnQoKGZ1bmN0aW9uKHQs ZSl7cmV0dXJuIHQueDAtZS54MH0pKSxpPVtdLGE9LTEsbz0tMS8wO2ZvcihfPTA7XzxuLmxl bmd0aDtfKyspe3ZhciBzPXRbbltfXS5pbmRleF07cy54MD5vK2QmJihhKz0xLGU9cy54MCks bz1zLngwLGlbYV18fChpW2FdPVtdKSxpW2FdLnB1c2gocykscj1lLXMueDAscy54MCs9cixz LngxKz1yfXJldHVybiBpfSh2PWsubm9kZXMpKTtuLnVwZGF0ZShrKX1yZXR1cm57Y2lyY3Vs YXI6YixrZXk6cix0cmFjZTphLGd1aWQ6aC5yYW5kc3RyKCksaG9yaXpvbnRhbDpmLHdpZHRo Om0saGVpZ2h0Omcsbm9kZVBhZDphLm5vZGUucGFkLG5vZGVMaW5lQ29sb3I6YS5ub2RlLmxp bmUuY29sb3Isbm9kZUxpbmVXaWR0aDphLm5vZGUubGluZS53aWR0aCxsaW5rTGluZUNvbG9y OmEubGluay5saW5lLmNvbG9yLGxpbmtMaW5lV2lkdGg6YS5saW5rLmxpbmUud2lkdGgsdmFs dWVGb3JtYXQ6YS52YWx1ZWZvcm1hdCx2YWx1ZVN1ZmZpeDphLnZhbHVlc3VmZml4LHRleHRG b250OmEudGV4dGZvbnQsdHJhbnNsYXRlWDp1LnhbMF0qdC53aWR0aCt0Lm1hcmdpbi5sLHRy YW5zbGF0ZVk6dC5oZWlnaHQtdS55WzFdKnQuaGVpZ2h0K3QubWFyZ2luLnQsZHJhZ1BhcmFs bGVsOmY/ZzptLGRyYWdQZXJwZW5kaWN1bGFyOmY/bTpnLGFycmFuZ2VtZW50OmEuYXJyYW5n ZW1lbnQsc2Fua2V5Om4sZ3JhcGg6ayxmb3JjZUxheW91dHM6e30saW50ZXJhY3Rpb25TdGF0 ZTp7ZHJhZ0luUHJvZ3Jlc3M6ITEsaG92ZXJlZDohMX19fWZ1bmN0aW9uIEEodCxlLHIpe3Zh ciBuPWMoZS5jb2xvciksaT1lLnNvdXJjZS5sYWJlbCsifCIrZS50YXJnZXQubGFiZWwrIl9f IityO3JldHVybiBlLnRyYWNlPXQudHJhY2UsZS5jdXJ2ZU51bWJlcj10LnRyYWNlLmluZGV4 LHtjaXJjdWxhcjp0LmNpcmN1bGFyLGtleTppLHRyYWNlSWQ6dC5rZXkscG9pbnROdW1iZXI6 ZS5wb2ludE51bWJlcixsaW5rOmUsdGlueUNvbG9ySHVlOnUudGlueVJHQihuKSx0aW55Q29s b3JBbHBoYTpuLmdldEFscGhhKCksbGlua1BhdGg6TSxsaW5rTGluZUNvbG9yOnQubGlua0xp bmVDb2xvcixsaW5rTGluZVdpZHRoOnQubGlua0xpbmVXaWR0aCx2YWx1ZUZvcm1hdDp0LnZh bHVlRm9ybWF0LHZhbHVlU3VmZml4OnQudmFsdWVTdWZmaXgsc2Fua2V5OnQuc2Fua2V5LHBh cmVudDp0LGludGVyYWN0aW9uU3RhdGU6dC5pbnRlcmFjdGlvblN0YXRlLGZsb3c6ZS5mbG93 fX1mdW5jdGlvbiBNKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKHQubGluay5jaXJjdWxhcily ZXR1cm4gZT10Lmxpbmsscj1lLndpZHRoLzIsbj1lLmNpcmN1bGFyUGF0aERhdGEsInRvcCI9 PT1lLmNpcmN1bGFyTGlua1R5cGU/Ik0gIituLnRhcmdldFgrIiAiKyhuLnRhcmdldFkrcikr IiBMIituLnJpZ2h0SW5uZXJFeHRlbnQrIiAiKyhuLnRhcmdldFkrcikrIkEiKyhuLnJpZ2h0 TGFyZ2VBcmNSYWRpdXMrcikrIiAiKyhuLnJpZ2h0U21hbGxBcmNSYWRpdXMrcikrIiAwIDAg MSAiKyhuLnJpZ2h0RnVsbEV4dGVudC1yKSsiICIrKG4udGFyZ2V0WS1uLnJpZ2h0U21hbGxB cmNSYWRpdXMpKyJMIisobi5yaWdodEZ1bGxFeHRlbnQtcikrIiAiK24udmVydGljYWxSaWdo dElubmVyRXh0ZW50KyJBIisobi5yaWdodExhcmdlQXJjUmFkaXVzK3IpKyIgIisobi5yaWdo dExhcmdlQXJjUmFkaXVzK3IpKyIgMCAwIDEgIituLnJpZ2h0SW5uZXJFeHRlbnQrIiAiKyhu LnZlcnRpY2FsRnVsbEV4dGVudC1yKSsiTCIrbi5sZWZ0SW5uZXJFeHRlbnQrIiAiKyhuLnZl cnRpY2FsRnVsbEV4dGVudC1yKSsiQSIrKG4ubGVmdExhcmdlQXJjUmFkaXVzK3IpKyIgIiso bi5sZWZ0TGFyZ2VBcmNSYWRpdXMrcikrIiAwIDAgMSAiKyhuLmxlZnRGdWxsRXh0ZW50K3Ip KyIgIituLnZlcnRpY2FsTGVmdElubmVyRXh0ZW50KyJMIisobi5sZWZ0RnVsbEV4dGVudCty KSsiICIrKG4uc291cmNlWS1uLmxlZnRTbWFsbEFyY1JhZGl1cykrIkEiKyhuLmxlZnRMYXJn ZUFyY1JhZGl1cytyKSsiICIrKG4ubGVmdFNtYWxsQXJjUmFkaXVzK3IpKyIgMCAwIDEgIitu LmxlZnRJbm5lckV4dGVudCsiICIrKG4uc291cmNlWStyKSsiTCIrbi5zb3VyY2VYKyIgIiso bi5zb3VyY2VZK3IpKyJMIituLnNvdXJjZVgrIiAiKyhuLnNvdXJjZVktcikrIkwiK24ubGVm dElubmVyRXh0ZW50KyIgIisobi5zb3VyY2VZLXIpKyJBIisobi5sZWZ0TGFyZ2VBcmNSYWRp dXMtcikrIiAiKyhuLmxlZnRTbWFsbEFyY1JhZGl1cy1yKSsiIDAgMCAwICIrKG4ubGVmdEZ1 bGxFeHRlbnQtcikrIiAiKyhuLnNvdXJjZVktbi5sZWZ0U21hbGxBcmNSYWRpdXMpKyJMIiso bi5sZWZ0RnVsbEV4dGVudC1yKSsiICIrbi52ZXJ0aWNhbExlZnRJbm5lckV4dGVudCsiQSIr KG4ubGVmdExhcmdlQXJjUmFkaXVzLXIpKyIgIisobi5sZWZ0TGFyZ2VBcmNSYWRpdXMtcikr IiAwIDAgMCAiK24ubGVmdElubmVyRXh0ZW50KyIgIisobi52ZXJ0aWNhbEZ1bGxFeHRlbnQr cikrIkwiK24ucmlnaHRJbm5lckV4dGVudCsiICIrKG4udmVydGljYWxGdWxsRXh0ZW50K3Ip KyJBIisobi5yaWdodExhcmdlQXJjUmFkaXVzLXIpKyIgIisobi5yaWdodExhcmdlQXJjUmFk aXVzLXIpKyIgMCAwIDAgIisobi5yaWdodEZ1bGxFeHRlbnQrcikrIiAiK24udmVydGljYWxS aWdodElubmVyRXh0ZW50KyJMIisobi5yaWdodEZ1bGxFeHRlbnQrcikrIiAiKyhuLnRhcmdl dFktbi5yaWdodFNtYWxsQXJjUmFkaXVzKSsiQSIrKG4ucmlnaHRMYXJnZUFyY1JhZGl1cy1y KSsiICIrKG4ucmlnaHRTbWFsbEFyY1JhZGl1cy1yKSsiIDAgMCAwICIrbi5yaWdodElubmVy RXh0ZW50KyIgIisobi50YXJnZXRZLXIpKyJMIituLnRhcmdldFgrIiAiKyhuLnRhcmdldFkt cikrIloiOiJNICIrbi50YXJnZXRYKyIgIisobi50YXJnZXRZLXIpKyIgTCIrbi5yaWdodElu bmVyRXh0ZW50KyIgIisobi50YXJnZXRZLXIpKyJBIisobi5yaWdodExhcmdlQXJjUmFkaXVz K3IpKyIgIisobi5yaWdodFNtYWxsQXJjUmFkaXVzK3IpKyIgMCAwIDAgIisobi5yaWdodEZ1 bGxFeHRlbnQtcikrIiAiKyhuLnRhcmdldFkrbi5yaWdodFNtYWxsQXJjUmFkaXVzKSsiTCIr KG4ucmlnaHRGdWxsRXh0ZW50LXIpKyIgIituLnZlcnRpY2FsUmlnaHRJbm5lckV4dGVudCsi QSIrKG4ucmlnaHRMYXJnZUFyY1JhZGl1cytyKSsiICIrKG4ucmlnaHRMYXJnZUFyY1JhZGl1 cytyKSsiIDAgMCAwICIrbi5yaWdodElubmVyRXh0ZW50KyIgIisobi52ZXJ0aWNhbEZ1bGxF eHRlbnQrcikrIkwiK24ubGVmdElubmVyRXh0ZW50KyIgIisobi52ZXJ0aWNhbEZ1bGxFeHRl bnQrcikrIkEiKyhuLmxlZnRMYXJnZUFyY1JhZGl1cytyKSsiICIrKG4ubGVmdExhcmdlQXJj UmFkaXVzK3IpKyIgMCAwIDAgIisobi5sZWZ0RnVsbEV4dGVudCtyKSsiICIrbi52ZXJ0aWNh bExlZnRJbm5lckV4dGVudCsiTCIrKG4ubGVmdEZ1bGxFeHRlbnQrcikrIiAiKyhuLnNvdXJj ZVkrbi5sZWZ0U21hbGxBcmNSYWRpdXMpKyJBIisobi5sZWZ0TGFyZ2VBcmNSYWRpdXMrcikr IiAiKyhuLmxlZnRTbWFsbEFyY1JhZGl1cytyKSsiIDAgMCAwICIrbi5sZWZ0SW5uZXJFeHRl bnQrIiAiKyhuLnNvdXJjZVktcikrIkwiK24uc291cmNlWCsiICIrKG4uc291cmNlWS1yKSsi TCIrbi5zb3VyY2VYKyIgIisobi5zb3VyY2VZK3IpKyJMIituLmxlZnRJbm5lckV4dGVudCsi ICIrKG4uc291cmNlWStyKSsiQSIrKG4ubGVmdExhcmdlQXJjUmFkaXVzLXIpKyIgIisobi5s ZWZ0U21hbGxBcmNSYWRpdXMtcikrIiAwIDAgMSAiKyhuLmxlZnRGdWxsRXh0ZW50LXIpKyIg Iisobi5zb3VyY2VZK24ubGVmdFNtYWxsQXJjUmFkaXVzKSsiTCIrKG4ubGVmdEZ1bGxFeHRl bnQtcikrIiAiK24udmVydGljYWxMZWZ0SW5uZXJFeHRlbnQrIkEiKyhuLmxlZnRMYXJnZUFy Y1JhZGl1cy1yKSsiICIrKG4ubGVmdExhcmdlQXJjUmFkaXVzLXIpKyIgMCAwIDEgIituLmxl ZnRJbm5lckV4dGVudCsiICIrKG4udmVydGljYWxGdWxsRXh0ZW50LXIpKyJMIituLnJpZ2h0 SW5uZXJFeHRlbnQrIiAiKyhuLnZlcnRpY2FsRnVsbEV4dGVudC1yKSsiQSIrKG4ucmlnaHRM YXJnZUFyY1JhZGl1cy1yKSsiICIrKG4ucmlnaHRMYXJnZUFyY1JhZGl1cy1yKSsiIDAgMCAx ICIrKG4ucmlnaHRGdWxsRXh0ZW50K3IpKyIgIituLnZlcnRpY2FsUmlnaHRJbm5lckV4dGVu dCsiTCIrKG4ucmlnaHRGdWxsRXh0ZW50K3IpKyIgIisobi50YXJnZXRZK24ucmlnaHRTbWFs bEFyY1JhZGl1cykrIkEiKyhuLnJpZ2h0TGFyZ2VBcmNSYWRpdXMtcikrIiAiKyhuLnJpZ2h0 U21hbGxBcmNSYWRpdXMtcikrIiAwIDAgMSAiK24ucmlnaHRJbm5lckV4dGVudCsiICIrKG4u dGFyZ2V0WStyKSsiTCIrbi50YXJnZXRYKyIgIisobi50YXJnZXRZK3IpKyJaIjt2YXIgZSxy LG4sYT10Lmxpbmsuc291cmNlLngxLG89dC5saW5rLnRhcmdldC54MCxzPWkoYSxvKSxsPXMo LjUpLGM9cyguNSksdT10LmxpbmsueTAtdC5saW5rLndpZHRoLzIsZj10LmxpbmsueTArdC5s aW5rLndpZHRoLzIsaD10LmxpbmsueTEtdC5saW5rLndpZHRoLzIscD10LmxpbmsueTErdC5s aW5rLndpZHRoLzI7cmV0dXJuIk0iK2ErIiwiK3UrIkMiK2wrIiwiK3UrIiAiK2MrIiwiK2gr IiAiK28rIiwiK2grIkwiK28rIiwiK3ArIkMiK2MrIiwiK3ArIiAiK2wrIiwiK2YrIiAiK2Er IiwiK2YrIloifX1mdW5jdGlvbiBTKHQsZSl7dmFyIHI9YyhlLmNvbG9yKSxuPWwubm9kZVBh ZEFjcm9zcyxpPXQubm9kZVBhZC8yO2UuZHg9ZS54MS1lLngwLGUuZHk9ZS55MS1lLnkwO3Zh ciBhPWUuZHgsbz1NYXRoLm1heCguNSxlLmR5KSxzPSJub2RlXyIrZS5wb2ludE51bWJlcjty ZXR1cm4gZS5ncm91cCYmKHM9aC5yYW5kc3RyKCkpLGUudHJhY2U9dC50cmFjZSxlLmN1cnZl TnVtYmVyPXQudHJhY2UuaW5kZXgse2luZGV4OmUucG9pbnROdW1iZXIsa2V5OnMscGFydE9m R3JvdXA6ZS5wYXJ0T2ZHcm91cHx8ITEsZ3JvdXA6ZS5ncm91cCx0cmFjZUlkOnQua2V5LHRy YWNlOnQudHJhY2Usbm9kZTplLG5vZGVQYWQ6dC5ub2RlUGFkLG5vZGVMaW5lQ29sb3I6dC5u b2RlTGluZUNvbG9yLG5vZGVMaW5lV2lkdGg6dC5ub2RlTGluZVdpZHRoLHRleHRGb250OnQu dGV4dEZvbnQsc2l6ZTp0Lmhvcml6b250YWw/dC5oZWlnaHQ6dC53aWR0aCx2aXNpYmxlV2lk dGg6TWF0aC5jZWlsKGEpLHZpc2libGVIZWlnaHQ6byx6b25lWDotbix6b25lWTotaSx6b25l V2lkdGg6YSsyKm4sem9uZUhlaWdodDpvKzIqaSxsYWJlbFk6dC5ob3Jpem9udGFsP2UuZHkv MisxOmUuZHgvMisxLGxlZnQ6MT09PWUub3JpZ2luYWxMYXllcixzaXplQWNyb3NzOnQud2lk dGgsZm9yY2VMYXlvdXRzOnQuZm9yY2VMYXlvdXRzLGhvcml6b250YWw6dC5ob3Jpem9udGFs LGRhcmtCYWNrZ3JvdW5kOnIuZ2V0QnJpZ2h0bmVzcygpPD0xMjgsdGlueUNvbG9ySHVlOnUu dGlueVJHQihyKSx0aW55Q29sb3JBbHBoYTpyLmdldEFscGhhKCksdmFsdWVGb3JtYXQ6dC52 YWx1ZUZvcm1hdCx2YWx1ZVN1ZmZpeDp0LnZhbHVlU3VmZml4LHNhbmtleTp0LnNhbmtleSxn cmFwaDp0LmdyYXBoLGFycmFuZ2VtZW50OnQuYXJyYW5nZW1lbnQsdW5pcXVlTm9kZUxhYmVs UGF0aElkOlt0Lmd1aWQsdC5rZXksc10uam9pbigiXyIpLGludGVyYWN0aW9uU3RhdGU6dC5p bnRlcmFjdGlvblN0YXRlLGZpZ3VyZTp0fX1mdW5jdGlvbiBFKHQpe3QuYXR0cigidHJhbnNm b3JtIiwoZnVuY3Rpb24odCl7cmV0dXJuIHAodC5ub2RlLngwLnRvRml4ZWQoMyksdC5ub2Rl LnkwLnRvRml4ZWQoMykpfSkpfWZ1bmN0aW9uIEwodCl7dC5jYWxsKEUpfWZ1bmN0aW9uIEMo dCxlKXt0LmNhbGwoTCksZS5hdHRyKCJkIixNKCkpfWZ1bmN0aW9uIFAodCl7dC5hdHRyKCJ3 aWR0aCIsKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5vZGUueDEtdC5ub2RlLngwfSkpLmF0dHIo ImhlaWdodCIsKGZ1bmN0aW9uKHQpe3JldHVybiB0LnZpc2libGVIZWlnaHR9KSl9ZnVuY3Rp b24gSSh0KXtyZXR1cm4gdC5saW5rLndpZHRoPjF8fHQubGlua0xpbmVXaWR0aD4wfWZ1bmN0 aW9uIE8odCl7cmV0dXJuIHAodC50cmFuc2xhdGVYLHQudHJhbnNsYXRlWSkrKHQuaG9yaXpv bnRhbD8ibWF0cml4KDEgMCAwIDEgMCAwKSI6Im1hdHJpeCgwIDEgMSAwIDAgMCkiKX1mdW5j dGlvbiB6KHQsZSxyKXt0Lm9uKCIuYmFzaWMiLG51bGwpLm9uKCJtb3VzZW92ZXIuYmFzaWMi LChmdW5jdGlvbih0KXt0LmludGVyYWN0aW9uU3RhdGUuZHJhZ0luUHJvZ3Jlc3N8fHQucGFy dE9mR3JvdXB8fChyLmhvdmVyKHRoaXMsdCxlKSx0LmludGVyYWN0aW9uU3RhdGUuaG92ZXJl ZD1bdGhpcyx0XSl9KSkub24oIm1vdXNlbW92ZS5iYXNpYyIsKGZ1bmN0aW9uKHQpe3QuaW50 ZXJhY3Rpb25TdGF0ZS5kcmFnSW5Qcm9ncmVzc3x8dC5wYXJ0T2ZHcm91cHx8KHIuZm9sbG93 KHRoaXMsdCksdC5pbnRlcmFjdGlvblN0YXRlLmhvdmVyZWQ9W3RoaXMsdF0pfSkpLm9uKCJt b3VzZW91dC5iYXNpYyIsKGZ1bmN0aW9uKHQpe3QuaW50ZXJhY3Rpb25TdGF0ZS5kcmFnSW5Q cm9ncmVzc3x8dC5wYXJ0T2ZHcm91cHx8KHIudW5ob3Zlcih0aGlzLHQsZSksdC5pbnRlcmFj dGlvblN0YXRlLmhvdmVyZWQ9ITEpfSkpLm9uKCJjbGljay5iYXNpYyIsKGZ1bmN0aW9uKHQp e3QuaW50ZXJhY3Rpb25TdGF0ZS5ob3ZlcmVkJiYoci51bmhvdmVyKHRoaXMsdCxlKSx0Lmlu dGVyYWN0aW9uU3RhdGUuaG92ZXJlZD0hMSksdC5pbnRlcmFjdGlvblN0YXRlLmRyYWdJblBy b2dyZXNzfHx0LnBhcnRPZkdyb3VwfHxyLnNlbGVjdCh0aGlzLHQsZSl9KSl9ZnVuY3Rpb24g RCh0LGUscixpKXt2YXIgbz1hLmJlaGF2aW9yLmRyYWcoKS5vcmlnaW4oKGZ1bmN0aW9uKHQp e3JldHVybnt4OnQubm9kZS54MCt0LnZpc2libGVXaWR0aC8yLHk6dC5ub2RlLnkwK3Qudmlz aWJsZUhlaWdodC8yfX0pKS5vbigiZHJhZ3N0YXJ0IiwoZnVuY3Rpb24oYSl7aWYoImZpeGVk IiE9PWEuYXJyYW5nZW1lbnQmJihoLmVuc3VyZVNpbmdsZShpLl9mdWxsTGF5b3V0Ll9pbmZv bGF5ZXIsImciLCJkcmFnY292ZXIiLChmdW5jdGlvbih0KXtpLl9mdWxsTGF5b3V0Ll9kcmFn Q292ZXI9dH0pKSxoLnJhaXNlVG9Ub3AodGhpcyksYS5pbnRlcmFjdGlvblN0YXRlLmRyYWdJ blByb2dyZXNzPWEubm9kZSxGKGEubm9kZSksYS5pbnRlcmFjdGlvblN0YXRlLmhvdmVyZWQm JihyLm5vZGVFdmVudHMudW5ob3Zlci5hcHBseSgwLGEuaW50ZXJhY3Rpb25TdGF0ZS5ob3Zl cmVkKSxhLmludGVyYWN0aW9uU3RhdGUuaG92ZXJlZD0hMSksInNuYXAiPT09YS5hcnJhbmdl bWVudCkpe3ZhciBvPWEudHJhY2VJZCsifCIrYS5rZXk7YS5mb3JjZUxheW91dHNbb10/YS5m b3JjZUxheW91dHNbb10uYWxwaGEoMSk6ZnVuY3Rpb24odCxlLHIsaSl7IWZ1bmN0aW9uKHQp e2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0ueT0odFtlXS55MCt0W2VdLnkxKS8y LHRbZV0ueD0odFtlXS54MCt0W2VdLngxKS8yfShyLmdyYXBoLm5vZGVzKTt2YXIgYT1yLmdy YXBoLm5vZGVzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQub3JpZ2luYWxYPT09ci5u b2RlLm9yaWdpbmFsWH0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiF0LnBhcnRPZkdy b3VwfSkpO3IuZm9yY2VMYXlvdXRzW2VdPW4uZm9yY2VTaW11bGF0aW9uKGEpLmFscGhhRGVj YXkoMCkuZm9yY2UoImNvbGxpZGUiLG4uZm9yY2VDb2xsaWRlKCkucmFkaXVzKChmdW5jdGlv bih0KXtyZXR1cm4gdC5keS8yK3Iubm9kZVBhZC8yfSkpLnN0cmVuZ3RoKDEpLml0ZXJhdGlv bnMobC5mb3JjZUl0ZXJhdGlvbnMpKS5mb3JjZSgiY29uc3RyYWluIixmdW5jdGlvbih0LGUs cixuKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxpPTA7aTxyLmxlbmd0aDtpKysp e3ZhciBhPXJbaV07YT09PW4uaW50ZXJhY3Rpb25TdGF0ZS5kcmFnSW5Qcm9ncmVzcz8oYS54 PWEubGFzdERyYWdnZWRYLGEueT1hLmxhc3REcmFnZ2VkWSk6KGEudng9KGEub3JpZ2luYWxY LWEueCkvbC5mb3JjZVRpY2tzUGVyRnJhbWUsYS55PU1hdGgubWluKG4uc2l6ZS1hLmR5LzIs TWF0aC5tYXgoYS5keS8yLGEueSkpKSx0PU1hdGgubWF4KHQsTWF0aC5hYnMoYS52eCksTWF0 aC5hYnMoYS52eSkpfSFuLmludGVyYWN0aW9uU3RhdGUuZHJhZ0luUHJvZ3Jlc3MmJnQ8LjEm Jm4uZm9yY2VMYXlvdXRzW2VdLmFscGhhKCk+MCYmbi5mb3JjZUxheW91dHNbZV0uYWxwaGEo MCl9fSgwLGUsYSxyKSkuc3RvcCgpfSgwLG8sYSksZnVuY3Rpb24odCxlLHIsbixpKXt3aW5k b3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbiBhKCl7dmFyIG87Zm9yKG89MDtv PGwuZm9yY2VUaWNrc1BlckZyYW1lO28rKylyLmZvcmNlTGF5b3V0c1tuXS50aWNrKCk7aWYo ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXS55MD10W2VdLnkt dFtlXS5keS8yLHRbZV0ueTE9dFtlXS55MCt0W2VdLmR5LHRbZV0ueDA9dFtlXS54LXRbZV0u ZHgvMix0W2VdLngxPXRbZV0ueDArdFtlXS5keH0oci5ncmFwaC5ub2Rlcyksci5zYW5rZXku dXBkYXRlKHIuZ3JhcGgpLEModC5maWx0ZXIoQihyKSksZSksci5mb3JjZUxheW91dHNbbl0u YWxwaGEoKT4wKXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYSk7ZWxzZXt2YXIgcz1y Lm5vZGUub3JpZ2luYWxYO3Iubm9kZS54MD1zLXIudmlzaWJsZVdpZHRoLzIsci5ub2RlLngx PXMrci52aXNpYmxlV2lkdGgvMixSKHIsaSl9fSkpfSh0LGUsYSxvLGkpfX0pKS5vbigiZHJh ZyIsKGZ1bmN0aW9uKHIpe2lmKCJmaXhlZCIhPT1yLmFycmFuZ2VtZW50KXt2YXIgbj1hLmV2 ZW50LngsaT1hLmV2ZW50Lnk7InNuYXAiPT09ci5hcnJhbmdlbWVudD8oci5ub2RlLngwPW4t ci52aXNpYmxlV2lkdGgvMixyLm5vZGUueDE9bityLnZpc2libGVXaWR0aC8yLHIubm9kZS55 MD1pLXIudmlzaWJsZUhlaWdodC8yLHIubm9kZS55MT1pK3IudmlzaWJsZUhlaWdodC8yKToo ImZyZWVmb3JtIj09PXIuYXJyYW5nZW1lbnQmJihyLm5vZGUueDA9bi1yLnZpc2libGVXaWR0 aC8yLHIubm9kZS54MT1uK3IudmlzaWJsZVdpZHRoLzIpLGk9TWF0aC5tYXgoMCxNYXRoLm1p bihyLnNpemUtci52aXNpYmxlSGVpZ2h0LzIsaSkpLHIubm9kZS55MD1pLXIudmlzaWJsZUhl aWdodC8yLHIubm9kZS55MT1pK3IudmlzaWJsZUhlaWdodC8yKSxGKHIubm9kZSksInNuYXAi IT09ci5hcnJhbmdlbWVudCYmKHIuc2Fua2V5LnVwZGF0ZShyLmdyYXBoKSxDKHQuZmlsdGVy KEIocikpLGUpKX19KSkub24oImRyYWdlbmQiLChmdW5jdGlvbih0KXtpZigiZml4ZWQiIT09 dC5hcnJhbmdlbWVudCl7dC5pbnRlcmFjdGlvblN0YXRlLmRyYWdJblByb2dyZXNzPSExO2Zv cih2YXIgZT0wO2U8dC5ub2RlLmNoaWxkcmVuTm9kZXMubGVuZ3RoO2UrKyl0Lm5vZGUuY2hp bGRyZW5Ob2Rlc1tlXS54PXQubm9kZS54LHQubm9kZS5jaGlsZHJlbk5vZGVzW2VdLnk9dC5u b2RlLnk7InNuYXAiIT09dC5hcnJhbmdlbWVudCYmUih0LGkpfX0pKTt0Lm9uKCIuZHJhZyIs bnVsbCkuY2FsbChvKX1mdW5jdGlvbiBSKHQsZSl7Zm9yKHZhciByPVtdLG49W10saT0wO2k8 dC5ncmFwaC5ub2Rlcy5sZW5ndGg7aSsrKXt2YXIgYT0odC5ncmFwaC5ub2Rlc1tpXS54MCt0 LmdyYXBoLm5vZGVzW2ldLngxKS8yLG89KHQuZ3JhcGgubm9kZXNbaV0ueTArdC5ncmFwaC5u b2Rlc1tpXS55MSkvMjtyLnB1c2goYS90LmZpZ3VyZS53aWR0aCksbi5wdXNoKG8vdC5maWd1 cmUuaGVpZ2h0KX1iLmNhbGwoIl9ndWlSZXN0eWxlIixlLHsibm9kZS54Ijpbcl0sIm5vZGUu eSI6W25dfSx0LnRyYWNlLmluZGV4KS50aGVuKChmdW5jdGlvbigpe2UuX2Z1bGxMYXlvdXQu X2RyYWdDb3ZlciYmZS5fZnVsbExheW91dC5fZHJhZ0NvdmVyLnJlbW92ZSgpfSkpfWZ1bmN0 aW9uIEYodCl7dC5sYXN0RHJhZ2dlZFg9dC54MCt0LmR4LzIsdC5sYXN0RHJhZ2dlZFk9dC55 MCt0LmR5LzJ9ZnVuY3Rpb24gQih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUubm9k ZS5vcmlnaW5hbFg9PT10Lm5vZGUub3JpZ2luYWxYfX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxl LHIsbixpKXt2YXIgbz0hMTtoLmVuc3VyZVNpbmdsZSh0Ll9mdWxsTGF5b3V0Ll9pbmZvbGF5 ZXIsImciLCJmaXJzdC1yZW5kZXIiLChmdW5jdGlvbigpe289ITB9KSk7dmFyIHM9dC5fZnVs bExheW91dC5fZHJhZ0NvdmVyLG09ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB5KHQp LnRyYWNlLnZpc2libGV9KSkubWFwKGsuYmluZChudWxsLG4pKSxiPWUuc2VsZWN0QWxsKCIu IitsLmNuLnNhbmtleSkuZGF0YShtLGcpO2IuZXhpdCgpLnJlbW92ZSgpLGIuZW50ZXIoKS5h cHBlbmQoImciKS5jbGFzc2VkKGwuY24uc2Fua2V5LCEwKS5zdHlsZSgiYm94LXNpemluZyIs ImNvbnRlbnQtYm94Iikuc3R5bGUoInBvc2l0aW9uIiwiYWJzb2x1dGUiKS5zdHlsZSgibGVm dCIsMCkuc3R5bGUoInNoYXBlLXJlbmRlcmluZyIsImdlb21ldHJpY1ByZWNpc2lvbiIpLnN0 eWxlKCJwb2ludGVyLWV2ZW50cyIsImF1dG8iKS5hdHRyKCJ0cmFuc2Zvcm0iLE8pLGIuZWFj aCgoZnVuY3Rpb24oZSxyKXt0Ll9mdWxsRGF0YVtyXS5fc2Fua2V5PWU7dmFyIG49ImJnc2Fu a2V5LSIrZS50cmFjZS51aWQrIi0iK3I7aC5lbnN1cmVTaW5nbGUodC5fZnVsbExheW91dC5f ZHJhZ2dlcnMsInJlY3QiLG4pLHQuX2Z1bGxEYXRhW3JdLl9iZ1JlY3Q9YS5zZWxlY3QoIi4i K24pLHQuX2Z1bGxEYXRhW3JdLl9iZ1JlY3Quc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxs IikuYXR0cigid2lkdGgiLGUud2lkdGgpLmF0dHIoImhlaWdodCIsZS5oZWlnaHQpLmF0dHIo IngiLGUudHJhbnNsYXRlWCkuYXR0cigieSIsZS50cmFuc2xhdGVZKS5jbGFzc2VkKCJiZ3Nh bmtleSIsITApLnN0eWxlKHtmaWxsOiJ0cmFuc3BhcmVudCIsInN0cm9rZS13aWR0aCI6MH0p fSkpLGIudHJhbnNpdGlvbigpLmVhc2UobC5lYXNlKS5kdXJhdGlvbihsLmR1cmF0aW9uKS5h dHRyKCJ0cmFuc2Zvcm0iLE8pO3ZhciBfPWIuc2VsZWN0QWxsKCIuIitsLmNuLnNhbmtleUxp bmtzKS5kYXRhKHYsZyk7Xy5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQobC5jbi5zYW5r ZXlMaW5rcywhMCkuc3R5bGUoImZpbGwiLCJub25lIik7dmFyIEw9Xy5zZWxlY3RBbGwoIi4i K2wuY24uc2Fua2V5TGluaykuZGF0YSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ3JhcGgubGlu a3MuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZX0pKS5tYXAoQS5iaW5kKG51 bGwsdCkpfSksZyk7TC5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQobC5jbi5zYW5r ZXlMaW5rLCEwKS5jYWxsKHosYixpLmxpbmtFdmVudHMpLEwuc3R5bGUoInN0cm9rZSIsKGZ1 bmN0aW9uKHQpe3JldHVybiBJKHQpP3UudGlueVJHQihjKHQubGlua0xpbmVDb2xvcikpOnQu dGlueUNvbG9ySHVlfSkpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsKGZ1bmN0aW9uKHQpe3Jl dHVybiBJKHQpP3Uub3BhY2l0eSh0LmxpbmtMaW5lQ29sb3IpOnQudGlueUNvbG9yQWxwaGF9 KSkuc3R5bGUoImZpbGwiLChmdW5jdGlvbih0KXtyZXR1cm4gdC50aW55Q29sb3JIdWV9KSku c3R5bGUoImZpbGwtb3BhY2l0eSIsKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRpbnlDb2xvckFs cGhhfSkpLnN0eWxlKCJzdHJva2Utd2lkdGgiLChmdW5jdGlvbih0KXtyZXR1cm4gSSh0KT90 LmxpbmtMaW5lV2lkdGg6MX0pKS5hdHRyKCJkIixNKCkpLEwuc3R5bGUoIm9wYWNpdHkiLChm dW5jdGlvbigpe3JldHVybiB0Ll9jb250ZXh0LnN0YXRpY1Bsb3R8fG98fHM/MTowfSkpLnRy YW5zaXRpb24oKS5lYXNlKGwuZWFzZSkuZHVyYXRpb24obC5kdXJhdGlvbikuc3R5bGUoIm9w YWNpdHkiLDEpLEwuZXhpdCgpLnRyYW5zaXRpb24oKS5lYXNlKGwuZWFzZSkuZHVyYXRpb24o bC5kdXJhdGlvbikuc3R5bGUoIm9wYWNpdHkiLDApLnJlbW92ZSgpO3ZhciBDPWIuc2VsZWN0 QWxsKCIuIitsLmNuLnNhbmtleU5vZGVTZXQpLmRhdGEodixnKTtDLmVudGVyKCkuYXBwZW5k KCJnIikuY2xhc3NlZChsLmNuLnNhbmtleU5vZGVTZXQsITApLEMuc3R5bGUoImN1cnNvciIs KGZ1bmN0aW9uKHQpe3N3aXRjaCh0LmFycmFuZ2VtZW50KXtjYXNlImZpeGVkIjpyZXR1cm4i ZGVmYXVsdCI7Y2FzZSJwZXJwZW5kaWN1bGFyIjpyZXR1cm4ibnMtcmVzaXplIjtkZWZhdWx0 OnJldHVybiJtb3ZlIn19KSk7dmFyIFI9Qy5zZWxlY3RBbGwoIi4iK2wuY24uc2Fua2V5Tm9k ZSkuZGF0YSgoZnVuY3Rpb24odCl7dmFyIGU9dC5ncmFwaC5ub2RlcztyZXR1cm4gZnVuY3Rp b24odCl7dmFyIGUscj1bXTtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0ub3JpZ2luYWxY PSh0W2VdLngwK3RbZV0ueDEpLzIsdFtlXS5vcmlnaW5hbFk9KHRbZV0ueTArdFtlXS55MSkv MiwtMT09PXIuaW5kZXhPZih0W2VdLm9yaWdpbmFsWCkmJnIucHVzaCh0W2VdLm9yaWdpbmFs WCk7Zm9yKHIuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfSkpLGU9MDtlPHQubGVu Z3RoO2UrKyl0W2VdLm9yaWdpbmFsTGF5ZXJJbmRleD1yLmluZGV4T2YodFtlXS5vcmlnaW5h bFgpLHRbZV0ub3JpZ2luYWxMYXllcj10W2VdLm9yaWdpbmFsTGF5ZXJJbmRleC8oci5sZW5n dGgtMSl9KGUpLGUubWFwKFMuYmluZChudWxsLHQpKX0pLGcpO1IuZW50ZXIoKS5hcHBlbmQo ImciKS5jbGFzc2VkKGwuY24uc2Fua2V5Tm9kZSwhMCkuY2FsbChFKS5zdHlsZSgib3BhY2l0 eSIsKGZ1bmN0aW9uKGUpe3JldHVybiF0Ll9jb250ZXh0LnN0YXRpY1Bsb3QmJiFvfHxlLnBh cnRPZkdyb3VwPzA6MX0pKSxSLmNhbGwoeixiLGkubm9kZUV2ZW50cykuY2FsbChELEwsaSx0 KSxSLnRyYW5zaXRpb24oKS5lYXNlKGwuZWFzZSkuZHVyYXRpb24obC5kdXJhdGlvbikuY2Fs bChFKS5zdHlsZSgib3BhY2l0eSIsKGZ1bmN0aW9uKHQpe3JldHVybiB0LnBhcnRPZkdyb3Vw PzA6MX0pKSxSLmV4aXQoKS50cmFuc2l0aW9uKCkuZWFzZShsLmVhc2UpLmR1cmF0aW9uKGwu ZHVyYXRpb24pLnN0eWxlKCJvcGFjaXR5IiwwKS5yZW1vdmUoKTt2YXIgRj1SLnNlbGVjdEFs bCgiLiIrbC5jbi5ub2RlUmVjdCkuZGF0YSh2KTtGLmVudGVyKCkuYXBwZW5kKCJyZWN0Iiku Y2xhc3NlZChsLmNuLm5vZGVSZWN0LCEwKS5jYWxsKFApLEYuc3R5bGUoInN0cm9rZS13aWR0 aCIsKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5vZGVMaW5lV2lkdGh9KSkuc3R5bGUoInN0cm9r ZSIsKGZ1bmN0aW9uKHQpe3JldHVybiB1LnRpbnlSR0IoYyh0Lm5vZGVMaW5lQ29sb3IpKX0p KS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLChmdW5jdGlvbih0KXtyZXR1cm4gdS5vcGFjaXR5 KHQubm9kZUxpbmVDb2xvcil9KSkuc3R5bGUoImZpbGwiLChmdW5jdGlvbih0KXtyZXR1cm4g dC50aW55Q29sb3JIdWV9KSkuc3R5bGUoImZpbGwtb3BhY2l0eSIsKGZ1bmN0aW9uKHQpe3Jl dHVybiB0LnRpbnlDb2xvckFscGhhfSkpLEYudHJhbnNpdGlvbigpLmVhc2UobC5lYXNlKS5k dXJhdGlvbihsLmR1cmF0aW9uKS5jYWxsKFApO3ZhciBCPVIuc2VsZWN0QWxsKCIuIitsLmNu Lm5vZGVMYWJlbCkuZGF0YSh2KTtCLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuY2xhc3NlZChs LmNuLm5vZGVMYWJlbCwhMCkuc3R5bGUoImN1cnNvciIsImRlZmF1bHQiKSxCLmF0dHIoImRh dGEtbm90ZXgiLDEpLnRleHQoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5vZGUubGFiZWx9KSku ZWFjaCgoZnVuY3Rpb24oZSl7dmFyIHI9YS5zZWxlY3QodGhpcyk7Zi5mb250KHIsZS50ZXh0 Rm9udCkseC5jb252ZXJ0VG9Uc3BhbnMocix0KX0pKS5zdHlsZSgidGV4dC1zaGFkb3ciLHgu bWFrZVRleHRTaGFkb3codC5fZnVsbExheW91dC5wYXBlcl9iZ2NvbG9yKSkuYXR0cigidGV4 dC1hbmNob3IiLChmdW5jdGlvbih0KXtyZXR1cm4gdC5ob3Jpem9udGFsJiZ0LmxlZnQ/ImVu ZCI6InN0YXJ0In0pKS5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXt2YXIgZT1hLnNl bGVjdCh0aGlzKSxyPXgubGluZUNvdW50KGUpLG49dC50ZXh0Rm9udC5zaXplKigoci0xKSpU LXcpLGk9dC5ub2RlTGluZVdpZHRoLzIrMyxvPSgodC5ob3Jpem9udGFsP3QudmlzaWJsZUhl aWdodDp0LnZpc2libGVXaWR0aCktbikvMjt0Lmhvcml6b250YWwmJih0LmxlZnQ/aT0taTpp Kz10LnZpc2libGVXaWR0aCk7dmFyIHM9dC5ob3Jpem9udGFsPyIiOiJzY2FsZSgtMSwxKSIr ZCg5MCk7cmV0dXJuIHAodC5ob3Jpem9udGFsP2k6byx0Lmhvcml6b250YWw/bzppKStzfSkp LEIudHJhbnNpdGlvbigpLmVhc2UobC5lYXNlKS5kdXJhdGlvbihsLmR1cmF0aW9uKX19LHsi Li4vLi4vY29tcG9uZW50cy9jb2xvciI6MzY2LCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmci OjM4OCwiLi4vLi4vY29uc3RhbnRzL2FsaWdubWVudCI6NDcxLCIuLi8uLi9saWIiOjUwMywi Li4vLi4vbGliL2d1cCI6NTAwLCIuLi8uLi9saWIvc3ZnX3RleHRfdXRpbHMiOjUyOSwiLi4v Li4vcmVnaXN0cnkiOjYzOCwiLi9jb25zdGFudHMiOjkyMCwiQHBsb3RseS9kMyI6NTgsIkBw bG90bHkvZDMtc2Fua2V5Ijo1NywiQHBsb3RseS9kMy1zYW5rZXktY2lyY3VsYXIiOjU2LCJk My1mb3JjZSI6MTExLCJkMy1pbnRlcnBvbGF0ZSI6MTE2LHRpbnljb2xvcjI6MzEyfV0sOTI1 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUp e2Zvcih2YXIgcj1bXSxuPXQuY2RbMF0udHJhY2UsaT1uLl9zYW5rZXkuZ3JhcGgubm9kZXMs YT0wO2E8aS5sZW5ndGg7YSsrKXt2YXIgbz1pW2FdO2lmKCFvLnBhcnRPZkdyb3VwKXt2YXIg cz1bKG8ueDArby54MSkvMiwoby55MCtvLnkxKS8yXTsidiI9PT1uLm9yaWVudGF0aW9uJiZz LnJldmVyc2UoKSxlJiZlLmNvbnRhaW5zKHMsITEsYSx0KSYmci5wdXNoKHtwb2ludE51bWJl cjpvLnBvaW50TnVtYmVyfSl9fXJldHVybiByfX0se31dLDkyNjpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24o dCxlKXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdLmk9cjtuLm1lcmdlQXJyYXko ZS50ZXh0LHQsInR4Iiksbi5tZXJnZUFycmF5KGUudGV4dHRlbXBsYXRlLHQsInR4dCIpLG4u bWVyZ2VBcnJheShlLmhvdmVydGV4dCx0LCJodHgiKSxuLm1lcmdlQXJyYXkoZS5jdXN0b21k YXRhLHQsImRhdGEiKSxuLm1lcmdlQXJyYXkoZS50ZXh0cG9zaXRpb24sdCwidHAiKSxlLnRl eHRmb250JiYobi5tZXJnZUFycmF5Q2FzdFBvc2l0aXZlKGUudGV4dGZvbnQuc2l6ZSx0LCJ0 cyIpLG4ubWVyZ2VBcnJheShlLnRleHRmb250LmNvbG9yLHQsInRjIiksbi5tZXJnZUFycmF5 KGUudGV4dGZvbnQuZmFtaWx5LHQsInRmIikpO3ZhciBpPWUubWFya2VyO2lmKGkpe24ubWVy Z2VBcnJheUNhc3RQb3NpdGl2ZShpLnNpemUsdCwibXMiKSxuLm1lcmdlQXJyYXlDYXN0UG9z aXRpdmUoaS5vcGFjaXR5LHQsIm1vIiksbi5tZXJnZUFycmF5KGkuc3ltYm9sLHQsIm14Iiks bi5tZXJnZUFycmF5KGkuY29sb3IsdCwibWMiKTt2YXIgYT1pLmxpbmU7aS5saW5lJiYobi5t ZXJnZUFycmF5KGEuY29sb3IsdCwibWxjIiksbi5tZXJnZUFycmF5Q2FzdFBvc2l0aXZlKGEu d2lkdGgsdCwibWx3IikpO3ZhciBvPWkuZ3JhZGllbnQ7byYmIm5vbmUiIT09by50eXBlJiYo bi5tZXJnZUFycmF5KG8udHlwZSx0LCJtZ3QiKSxuLm1lcmdlQXJyYXkoby5jb2xvcix0LCJt Z2MiKSl9fX0seyIuLi8uLi9saWIiOjUwM31dLDkyNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19mb3JtYXRfYXR0 cmlidXRlcyIpLmF4aXNIb3ZlckZvcm1hdCxpPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0 dHJpYnV0ZXMiKS50ZXh0dGVtcGxhdGVBdHRycyxhPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRl X2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsbz10KCIuLi8uLi9jb21wb25lbnRz L2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLHM9dCgiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1 dGVzIiksbD10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmcvYXR0cmlidXRlcyIpLmRhc2gs Yz10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmcvYXR0cmlidXRlcyIpLnBhdHRlcm4sdT10 KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxmPXQoIi4vY29uc3RhbnRzIiksaD10KCIu Li8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdDtlLmV4cG9ydHM9e3g6e3ZhbFR5cGU6ImRh dGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIixhbmltOiEwfSx4MDp7 dmFsVHlwZToiYW55IixkZmx0OjAsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMiLGFu aW06ITB9LGR4Ont2YWxUeXBlOiJudW1iZXIiLGRmbHQ6MSxlZGl0VHlwZToiY2FsYyIsYW5p bTohMH0seTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlz VHlwZXMiLGFuaW06ITB9LHkwOnt2YWxUeXBlOiJhbnkiLGRmbHQ6MCxlZGl0VHlwZToiY2Fs YytjbGVhckF4aXNUeXBlcyIsYW5pbTohMH0sZHk6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDox LGVkaXRUeXBlOiJjYWxjIixhbmltOiEwfSx4cGVyaW9kOnt2YWxUeXBlOiJhbnkiLGRmbHQ6 MCxlZGl0VHlwZToiY2FsYyJ9LHlwZXJpb2Q6e3ZhbFR5cGU6ImFueSIsZGZsdDowLGVkaXRU eXBlOiJjYWxjIn0seHBlcmlvZDA6e3ZhbFR5cGU6ImFueSIsZWRpdFR5cGU6ImNhbGMifSx5 cGVyaW9kMDp7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2FsYyJ9LHhwZXJpb2RhbGlnbm1l bnQ6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInN0YXJ0IiwibWlkZGxlIiwiZW5k Il0sZGZsdDoibWlkZGxlIixlZGl0VHlwZToiY2FsYyJ9LHlwZXJpb2RhbGlnbm1lbnQ6e3Zh bFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInN0YXJ0IiwibWlkZGxlIiwiZW5kIl0sZGZs dDoibWlkZGxlIixlZGl0VHlwZToiY2FsYyJ9LHhob3ZlcmZvcm1hdDpuKCJ4IikseWhvdmVy Zm9ybWF0Om4oInkiKSxzdGFja2dyb3VwOnt2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsZWRp dFR5cGU6ImNhbGMifSxvcmllbnRhdGlvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVz OlsidiIsImgiXSxlZGl0VHlwZToiY2FsYyJ9LGdyb3Vwbm9ybTp7dmFsVHlwZToiZW51bWVy YXRlZCIsdmFsdWVzOlsiIiwiZnJhY3Rpb24iLCJwZXJjZW50Il0sZGZsdDoiIixlZGl0VHlw ZToiY2FsYyJ9LHN0YWNrZ2Fwczp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsiaW5m ZXIgemVybyIsImludGVycG9sYXRlIl0sZGZsdDoiaW5mZXIgemVybyIsZWRpdFR5cGU6ImNh bGMifSx0ZXh0Ont2YWxUeXBlOiJzdHJpbmciLGRmbHQ6IiIsYXJyYXlPazohMCxlZGl0VHlw ZToiY2FsYyJ9LHRleHR0ZW1wbGF0ZTppKHt9LHt9KSxob3ZlcnRleHQ6e3ZhbFR5cGU6InN0 cmluZyIsZGZsdDoiIixhcnJheU9rOiEwLGVkaXRUeXBlOiJzdHlsZSJ9LG1vZGU6e3ZhbFR5 cGU6ImZsYWdsaXN0IixmbGFnczpbImxpbmVzIiwibWFya2VycyIsInRleHQiXSxleHRyYXM6 WyJub25lIl0sZWRpdFR5cGU6ImNhbGMifSxob3Zlcm9uOnt2YWxUeXBlOiJmbGFnbGlzdCIs ZmxhZ3M6WyJwb2ludHMiLCJmaWxscyJdLGVkaXRUeXBlOiJzdHlsZSJ9LGhvdmVydGVtcGxh dGU6YSh7fSx7a2V5czpmLmV2ZW50RGF0YUtleXN9KSxsaW5lOntjb2xvcjp7dmFsVHlwZToi Y29sb3IiLGVkaXRUeXBlOiJzdHlsZSIsYW5pbTohMH0sd2lkdGg6e3ZhbFR5cGU6Im51bWJl ciIsbWluOjAsZGZsdDoyLGVkaXRUeXBlOiJzdHlsZSIsYW5pbTohMH0sc2hhcGU6e3ZhbFR5 cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImxpbmVhciIsInNwbGluZSIsImh2IiwidmgiLCJo dmgiLCJ2aHYiXSxkZmx0OiJsaW5lYXIiLGVkaXRUeXBlOiJwbG90In0sc21vb3RoaW5nOnt2 YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLjMsZGZsdDoxLGVkaXRUeXBlOiJwbG90In0s ZGFzaDpoKHt9LGwse2VkaXRUeXBlOiJzdHlsZSJ9KSxzaW1wbGlmeTp7dmFsVHlwZToiYm9v bGVhbiIsZGZsdDohMCxlZGl0VHlwZToicGxvdCJ9LGVkaXRUeXBlOiJwbG90In0sY29ubmVj dGdhcHM6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITEsZWRpdFR5cGU6ImNhbGMifSxjbGlw b25heGlzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJwbG90In0sZmls bDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsibm9uZSIsInRvemVyb3kiLCJ0b3pl cm94IiwidG9uZXh0eSIsInRvbmV4dHgiLCJ0b3NlbGYiLCJ0b25leHQiXSxlZGl0VHlwZToi Y2FsYyJ9LGZpbGxjb2xvcjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJzdHlsZSIsYW5p bTohMH0sZmlsbHBhdHRlcm46YyxtYXJrZXI6aCh7c3ltYm9sOnt2YWxUeXBlOiJlbnVtZXJh dGVkIix2YWx1ZXM6dS5zeW1ib2xMaXN0LGRmbHQ6ImNpcmNsZSIsYXJyYXlPazohMCxlZGl0 VHlwZToic3R5bGUifSxvcGFjaXR5Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGFy cmF5T2s6ITAsZWRpdFR5cGU6InN0eWxlIixhbmltOiEwfSxzaXplOnt2YWxUeXBlOiJudW1i ZXIiLG1pbjowLGRmbHQ6NixhcnJheU9rOiEwLGVkaXRUeXBlOiJjYWxjIixhbmltOiEwfSxt YXhkaXNwbGF5ZWQ6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZGZsdDowLGVkaXRUeXBlOiJw bG90In0sc2l6ZXJlZjp7dmFsVHlwZToibnVtYmVyIixkZmx0OjEsZWRpdFR5cGU6ImNhbGMi fSxzaXplbWluOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGRmbHQ6MCxlZGl0VHlwZToiY2Fs YyJ9LHNpemVtb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJkaWFtZXRlciIs ImFyZWEiXSxkZmx0OiJkaWFtZXRlciIsZWRpdFR5cGU6ImNhbGMifSxsaW5lOmgoe3dpZHRo Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLGFycmF5T2s6ITAsZWRpdFR5cGU6InN0eWxlIixh bmltOiEwfSxlZGl0VHlwZToiY2FsYyJ9LG8oIm1hcmtlci5saW5lIix7YW5pbTohMH0pKSxn cmFkaWVudDp7dHlwZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsicmFkaWFsIiwi aG9yaXpvbnRhbCIsInZlcnRpY2FsIiwibm9uZSJdLGFycmF5T2s6ITAsZGZsdDoibm9uZSIs ZWRpdFR5cGU6ImNhbGMifSxjb2xvcjp7dmFsVHlwZToiY29sb3IiLGFycmF5T2s6ITAsZWRp dFR5cGU6ImNhbGMifSxlZGl0VHlwZToiY2FsYyJ9LGVkaXRUeXBlOiJjYWxjIn0sbygibWFy a2VyIix7YW5pbTohMH0pKSxzZWxlY3RlZDp7bWFya2VyOntvcGFjaXR5Ont2YWxUeXBlOiJu dW1iZXIiLG1pbjowLG1heDoxLGVkaXRUeXBlOiJzdHlsZSJ9LGNvbG9yOnt2YWxUeXBlOiJj b2xvciIsZWRpdFR5cGU6InN0eWxlIn0sc2l6ZTp7dmFsVHlwZToibnVtYmVyIixtaW46MCxl ZGl0VHlwZToic3R5bGUifSxlZGl0VHlwZToic3R5bGUifSx0ZXh0Zm9udDp7Y29sb3I6e3Zh bFR5cGU6ImNvbG9yIixlZGl0VHlwZToic3R5bGUifSxlZGl0VHlwZToic3R5bGUifSxlZGl0 VHlwZToic3R5bGUifSx1bnNlbGVjdGVkOnttYXJrZXI6e29wYWNpdHk6e3ZhbFR5cGU6Im51 bWJlciIsbWluOjAsbWF4OjEsZWRpdFR5cGU6InN0eWxlIn0sY29sb3I6e3ZhbFR5cGU6ImNv bG9yIixlZGl0VHlwZToic3R5bGUifSxzaXplOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLGVk aXRUeXBlOiJzdHlsZSJ9LGVkaXRUeXBlOiJzdHlsZSJ9LHRleHRmb250Ontjb2xvcjp7dmFs VHlwZToiY29sb3IiLGVkaXRUeXBlOiJzdHlsZSJ9LGVkaXRUeXBlOiJzdHlsZSJ9LGVkaXRU eXBlOiJzdHlsZSJ9LHRleHRwb3NpdGlvbjp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVz OlsidG9wIGxlZnQiLCJ0b3AgY2VudGVyIiwidG9wIHJpZ2h0IiwibWlkZGxlIGxlZnQiLCJt aWRkbGUgY2VudGVyIiwibWlkZGxlIHJpZ2h0IiwiYm90dG9tIGxlZnQiLCJib3R0b20gY2Vu dGVyIiwiYm90dG9tIHJpZ2h0Il0sZGZsdDoibWlkZGxlIGNlbnRlciIsYXJyYXlPazohMCxl ZGl0VHlwZToiY2FsYyJ9LHRleHRmb250OnMoe2VkaXRUeXBlOiJjYWxjIixjb2xvckVkaXRU eXBlOiJzdHlsZSIsYXJyYXlPazohMH0pfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2Nh bGUvYXR0cmlidXRlcyI6MzczLCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjM4OCwiLi4v Li4vY29tcG9uZW50cy9kcmF3aW5nL2F0dHJpYnV0ZXMiOjM4NywiLi4vLi4vbGliL2V4dGVu ZCI6NDkzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19mb3JtYXRfYXR0cmlidXRlcyI6 NTU3LCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiOjU4NSwiLi4vLi4vcGxvdHMvdGVt cGxhdGVfYXR0cmlidXRlcyI6NjMzLCIuL2NvbnN0YW50cyI6OTMxfV0sOTI4OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksaT10KCIu Li8uLi9saWIiKSxhPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksbz10KCIuLi8u Li9wbG90cy9jYXJ0ZXNpYW4vYWxpZ25fcGVyaW9kIikscz10KCIuLi8uLi9jb25zdGFudHMv bnVtZXJpY2FsIikuQkFETlVNLGw9dCgiLi9zdWJ0eXBlcyIpLGM9dCgiLi9jb2xvcnNjYWxl X2NhbGMiKSx1PXQoIi4vYXJyYXlzX3RvX2NhbGNkYXRhIiksZj10KCIuL2NhbGNfc2VsZWN0 aW9uIik7ZnVuY3Rpb24gaCh0LGUscixuLGksbyxzKXt2YXIgYz1lLl9sZW5ndGgsdT10Ll9m dWxsTGF5b3V0LGY9ci5faWQsaD1uLl9pZCxwPXUuX2ZpcnN0U2NhdHRlclttKGUpXT09PWUu dWlkLGQ9KGcoZSx1LHIsbil8fHt9KS5vcmllbnRhdGlvbix2PWUuZmlsbDtyLl9taW5EdGlj az0wLG4uX21pbkR0aWNrPTA7dmFyIHk9e3BhZGRlZDohMH0seD17cGFkZGVkOiEwfTtzJiYo eS5wcGFkPXgucHBhZD1zKTt2YXIgYj1jPDJ8fGlbMF0hPT1pW2MtMV18fG9bMF0hPT1vW2Mt MV07YiYmKCJ0b3plcm94Ij09PXZ8fCJ0b25leHR4Ij09PXYmJihwfHwiaCI9PT1kKSk/eS50 b3plcm89ITA6KGUuZXJyb3JfeXx8e30pLnZpc2libGV8fCJ0b25leHR5IiE9PXYmJiJ0b3pl cm95IiE9PXYmJihsLmhhc01hcmtlcnMoZSl8fGwuaGFzVGV4dChlKSl8fCh5LnBhZGRlZD0h MSx5LnBwYWQ9MCksYiYmKCJ0b3plcm95Ij09PXZ8fCJ0b25leHR5Ij09PXYmJihwfHwidiI9 PT1kKSk/eC50b3plcm89ITA6InRvbmV4dHgiIT09diYmInRvemVyb3giIT09dnx8KHgucGFk ZGVkPSExKSxmJiYoZS5fZXh0cmVtZXNbZl09YS5maW5kRXh0cmVtZXMocixpLHkpKSxoJiYo ZS5fZXh0cmVtZXNbaF09YS5maW5kRXh0cmVtZXMobixvLHgpKX1mdW5jdGlvbiBwKHQsZSl7 aWYobC5oYXNNYXJrZXJzKHQpKXt2YXIgcixuPXQubWFya2VyLG89MS42Kih0Lm1hcmtlci5z aXplcmVmfHwxKTtpZihyPSJhcmVhIj09PXQubWFya2VyLnNpemVtb2RlP2Z1bmN0aW9uKHQp e3JldHVybiBNYXRoLm1heChNYXRoLnNxcnQoKHR8fDApL28pLDMpfTpmdW5jdGlvbih0KXty ZXR1cm4gTWF0aC5tYXgoKHR8fDApL28sMyl9LGkuaXNBcnJheU9yVHlwZWRBcnJheShuLnNp emUpKXt2YXIgcz17dHlwZToibGluZWFyIn07YS5zZXRDb252ZXJ0KHMpO2Zvcih2YXIgYz1z Lm1ha2VDYWxjZGF0YSh0Lm1hcmtlciwic2l6ZSIpLHU9bmV3IEFycmF5KGUpLGY9MDtmPGU7 ZisrKXVbZl09cihjW2ZdKTtyZXR1cm4gdX1yZXR1cm4gcihuLnNpemUpfX1mdW5jdGlvbiBk KHQsZSl7dmFyIHI9bShlKSxuPXQuX2ZpcnN0U2NhdHRlcjtuW3JdfHwobltyXT1lLnVpZCl9 ZnVuY3Rpb24gbSh0KXt2YXIgZT10LnN0YWNrZ3JvdXA7cmV0dXJuIHQueGF4aXMrdC55YXhp cyt0LnR5cGUrKGU/Ii0iK2U6IiIpfWZ1bmN0aW9uIGcodCxlLHIsbil7dmFyIGk9dC5zdGFj a2dyb3VwO2lmKGkpe3ZhciBhPWUuX3NjYXR0ZXJTdGFja09wdHNbci5faWQrbi5faWRdW2ld LG89InYiPT09YS5vcmllbnRhdGlvbj9uOnI7cmV0dXJuImxpbmVhciI9PT1vLnR5cGV8fCJs b2ciPT09by50eXBlP2E6dm9pZCAwfX1lLmV4cG9ydHM9e2NhbGM6ZnVuY3Rpb24odCxlKXt2 YXIgcixsLG0sdix5LHgsYj10Ll9mdWxsTGF5b3V0LF89YS5nZXRGcm9tSWQodCxlLnhheGlz fHwieCIpLHc9YS5nZXRGcm9tSWQodCxlLnlheGlzfHwieSIpLFQ9Xy5tYWtlQ2FsY2RhdGEo ZSwieCIpLGs9dy5tYWtlQ2FsY2RhdGEoZSwieSIpLEE9byhlLF8sIngiLFQpLE09byhlLHcs InkiLGspLFM9QS52YWxzLEU9TS52YWxzLEw9ZS5fbGVuZ3RoLEM9bmV3IEFycmF5KEwpLFA9 ZS5pZHMsST1nKGUsYixfLHcpLE89ITE7ZChiLGUpO3ZhciB6LEQ9IngiLFI9InkiO0k/KGku cHVzaFVuaXF1ZShJLnRyYWNlSW5kaWNlcyxlLl9leHBhbmRlZEluZGV4KSwocj0idiI9PT1J Lm9yaWVudGF0aW9uKT8oUj0icyIsej0ieCIpOihEPSJzIix6PSJ5IikseT0iaW50ZXJwb2xh dGUiPT09SS5zdGFja2dhcHMpOmgodCxlLF8sdyxTLEUscChlLEwpKTt2YXIgRj0hIWUueHBl cmlvZGFsaWdubWVudCxCPSEhZS55cGVyaW9kYWxpZ25tZW50O2ZvcihsPTA7bDxMO2wrKyl7 dmFyIE49Q1tsXT17fSxqPW4oU1tsXSksVT1uKEVbbF0pO2omJlU/KE5bRF09U1tsXSxOW1Jd PUVbbF0sRiYmKE4ub3JpZ194PVRbbF0sTi54RW5kPUEuZW5kc1tsXSxOLnhTdGFydD1BLnN0 YXJ0c1tsXSksQiYmKE4ub3JpZ195PWtbbF0sTi55RW5kPU0uZW5kc1tsXSxOLnlTdGFydD1N LnN0YXJ0c1tsXSkpOkkmJihyP2o6VSk/KE5bel09cj9TW2xdOkVbbF0sTi5nYXA9ITAseT8o Ti5zPXMsTz0hMCk6Ti5zPTApOk5bRF09TltSXT1zLFAmJihOLmlkPVN0cmluZyhQW2xdKSl9 aWYodShDLGUpLGModCxlKSxmKEMsZSksSSl7Zm9yKGw9MDtsPEMubGVuZ3RoOylDW2xdW3pd PT09cz9DLnNwbGljZShsLDEpOmwrKztpZihpLnNvcnQoQywoZnVuY3Rpb24odCxlKXtyZXR1 cm4gdFt6XS1lW3pdfHx0LmktZS5pfSkpLE8pe2ZvcihsPTA7bDxDLmxlbmd0aC0xJiZDW2xd LmdhcDspbCsrO2ZvcigoeD1DW2xdLnMpfHwoeD1DW2xdLnM9MCksbT0wO208bDttKyspQ1tt XS5zPXg7Zm9yKHY9Qy5sZW5ndGgtMTt2PmwmJkNbdl0uZ2FwOyl2LS07Zm9yKHg9Q1t2XS5z LG09Qy5sZW5ndGgtMTttPnY7bS0tKUNbbV0ucz14O2Zvcig7bDx2OylpZihDWysrbF0uZ2Fw KXtmb3IobT1sKzE7Q1ttXS5nYXA7KW0rKztmb3IodmFyIFY9Q1tsLTFdW3pdLEg9Q1tsLTFd LnMscT0oQ1ttXS5zLUgpLyhDW21dW3pdLVYpO2w8bTspQ1tsXS5zPUgrKENbbF1bel0tVikq cSxsKyt9fX1yZXR1cm4gQ30sY2FsY01hcmtlclNpemU6cCxjYWxjQXhpc0V4cGFuc2lvbjpo LHNldEZpcnN0U2NhdHRlcjpkLGdldFN0YWNrT3B0czpnfX0seyIuLi8uLi9jb25zdGFudHMv bnVtZXJpY2FsIjo0NzksIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4v YWxpZ25fcGVyaW9kIjo1NTEsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo1NTQsIi4v YXJyYXlzX3RvX2NhbGNkYXRhIjo5MjYsIi4vY2FsY19zZWxlY3Rpb24iOjkyOSwiLi9jb2xv cnNjYWxlX2NhbGMiOjkzMCwiLi9zdWJ0eXBlcyI6OTUyLCJmYXN0LWlzbnVtZXJpYyI6MTkw fV0sOTI5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xp YiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe24uaXNBcnJheU9yVHlwZWRBcnJheShlLnNl bGVjdGVkcG9pbnRzKSYmbi50YWdTZWxlY3RlZCh0LGUpfX0seyIuLi8uLi9saWIiOjUwM31d LDkzMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21w b25lbnRzL2NvbG9yc2NhbGUvaGVscGVycyIpLmhhc0NvbG9yc2NhbGUsaT10KCIuLi8uLi9j b21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyIpLGE9dCgiLi9zdWJ0eXBlcyIpO2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUpe2EuaGFzTGluZXMoZSkmJm4oZSwibGluZSIpJiZpKHQsZSx7dmFs czplLmxpbmUuY29sb3IsY29udGFpbmVyU3RyOiJsaW5lIixjTGV0dGVyOiJjIn0pLGEuaGFz TWFya2VycyhlKSYmKG4oZSwibWFya2VyIikmJmkodCxlLHt2YWxzOmUubWFya2VyLmNvbG9y LGNvbnRhaW5lclN0cjoibWFya2VyIixjTGV0dGVyOiJjIn0pLG4oZSwibWFya2VyLmxpbmUi KSYmaSh0LGUse3ZhbHM6ZS5tYXJrZXIubGluZS5jb2xvcixjb250YWluZXJTdHI6Im1hcmtl ci5saW5lIixjTGV0dGVyOiJjIn0pKX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxl L2NhbGMiOjM3NCwiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2hlbHBlcnMiOjM3Nywi Li9zdWJ0eXBlcyI6OTUyfV0sOTMxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Uu ZXhwb3J0cz17UFRTX0xJTkVTT05MWToyMCxtaW5Ub2xlcmFuY2U6LjIsdG9sZXJhbmNlR3Jv d3RoOjEwLG1heFNjcmVlbnNBd2F5OjIwLGV2ZW50RGF0YUtleXM6W119fSx7fV0sOTMyOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vY2FsYyIpO2Z1bmN0aW9u IGkodCxlLHIsbixpLGEsbyl7aVtuXT0hMDt2YXIgcz17aTpudWxsLGdhcDohMCxzOjB9O2lm KHNbb109cix0LnNwbGljZShlLDAscyksZSYmcj09PXRbZS0xXVtvXSl7dmFyIGw9dFtlLTFd O3Mucz1sLnMscy5pPWwuaSxzLmdhcD1sLmdhcH1lbHNlIGEmJihzLnM9ZnVuY3Rpb24odCxl LHIsbil7dmFyIGk9dFtlLTFdLGE9dFtlKzFdO3JldHVybiBhP2k/aS5zKyhhLnMtaS5zKSoo ci1pW25dKS8oYVtuXS1pW25dKTphLnM6aS5zfSh0LGUscixvKSk7ZXx8KHRbMF0udD10WzFd LnQsdFswXS50cmFjZT10WzFdLnRyYWNlLGRlbGV0ZSB0WzFdLnQsZGVsZXRlIHRbMV0udHJh Y2UpfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPWUueGF4aXMsYT1lLnlheGlzLG89 ci5faWQrYS5faWQscz10Ll9mdWxsTGF5b3V0Ll9zY2F0dGVyU3RhY2tPcHRzW29dO2lmKHMp e3ZhciBsLGMsdSxmLGgscCxkLG0sZyx2LHkseCxiLF8sdyxUPXQuY2FsY2RhdGE7Zm9yKHZh ciBrIGluIHMpe3ZhciBBPSh2PXNba10pLnRyYWNlSW5kaWNlcztpZihBLmxlbmd0aCl7Zm9y KHk9ImludGVycG9sYXRlIj09PXYuc3RhY2tnYXBzLHg9di5ncm91cG5vcm0sInYiPT09di5v cmllbnRhdGlvbj8oYj0ieCIsXz0ieSIpOihiPSJ5IixfPSJ4Iiksdz1uZXcgQXJyYXkoQS5s ZW5ndGgpLGw9MDtsPHcubGVuZ3RoO2wrKyl3W2xdPSExO3A9VFtBWzBdXTt2YXIgTT1uZXcg QXJyYXkocC5sZW5ndGgpO2ZvcihsPTA7bDxwLmxlbmd0aDtsKyspTVtsXT1wW2xdW2JdO2Zv cihsPTE7bDxBLmxlbmd0aDtsKyspe2ZvcihoPVRbQVtsXV0sYz11PTA7YzxoLmxlbmd0aDtj Kyspe2ZvcihkPWhbY11bYl07ZD5NW3VdJiZ1PE0ubGVuZ3RoO3UrKylpKGgsYyxNW3VdLGws dyx5LGIpLGMrKztpZihkIT09TVt1XSl7Zm9yKGY9MDtmPGw7ZisrKWkoVFtBW2ZdXSx1LGQs Zix3LHksYik7TS5zcGxpY2UodSwwLGQpfXUrK31mb3IoO3U8TS5sZW5ndGg7dSsrKWkoaCxj LE1bdV0sbCx3LHksYiksYysrfXZhciBTPU0ubGVuZ3RoO2ZvcihjPTA7YzxwLmxlbmd0aDtj Kyspe2ZvcihtPXBbY11bX109cFtjXS5zLGw9MTtsPEEubGVuZ3RoO2wrKykoaD1UW0FbbF1d KVswXS50cmFjZS5fcmF3TGVuZ3RoPWhbMF0udHJhY2UuX2xlbmd0aCxoWzBdLnRyYWNlLl9s ZW5ndGg9UyxtKz1oW2NdLnMsaFtjXVtfXT1tO2lmKHgpZm9yKGc9KCJmcmFjdGlvbiI9PT14 P206bS8xMDApfHwxLGw9MDtsPEEubGVuZ3RoO2wrKyl7dmFyIEU9VFtBW2xdXVtjXTtFW19d Lz1nLEUuc05vcm09RS5zL2d9fWZvcihsPTA7bDxBLmxlbmd0aDtsKyspe3ZhciBMPShoPVRb QVtsXV0pWzBdLnRyYWNlLEM9bi5jYWxjTWFya2VyU2l6ZShMLEwuX3Jhd0xlbmd0aCksUD1B cnJheS5pc0FycmF5KEMpO2lmKEMmJndbbF18fFApe3ZhciBJPUM7Zm9yKEM9bmV3IEFycmF5 KFMpLGM9MDtjPFM7YysrKUNbY109aFtjXS5nYXA/MDpQP0lbaFtjXS5pXTpJfXZhciBPPW5l dyBBcnJheShTKSx6PW5ldyBBcnJheShTKTtmb3IoYz0wO2M8UztjKyspT1tjXT1oW2NdLngs eltjXT1oW2NdLnk7bi5jYWxjQXhpc0V4cGFuc2lvbih0LEwscixhLE8seixDKSxoWzBdLnQu b3JpZW50YXRpb249di5vcmllbnRhdGlvbn19fX19fSx7Ii4vY2FsYyI6OTI4fV0sOTMzOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3Io dmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIHI9dFtlXTtpZigic2NhdHRlciI9PT1yLnR5 cGUpe3ZhciBuPXIuZmlsbDtpZigibm9uZSIhPT1uJiYidG9zZWxmIiE9PW4mJihyLm9wYWNp dHk9dm9pZCAwLCJ0b25leHR5Ij09PW58fCJ0b25leHR4Ij09PW4pKWZvcih2YXIgaT1lLTE7 aT49MDtpLS0pe3ZhciBhPXRbaV07aWYoInNjYXR0ZXIiPT09YS50eXBlJiZhLnhheGlzPT09 ci54YXhpcyYmYS55YXhpcz09PXIueWF4aXMpe2Eub3BhY2l0eT12b2lkIDA7YnJlYWt9fX19 fX0se31dLDkzNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8u Li9saWIiKSxpPXQoIi4uLy4uL3JlZ2lzdHJ5IiksYT10KCIuL2F0dHJpYnV0ZXMiKSxvPXQo Ii4vY29uc3RhbnRzIikscz10KCIuL3N1YnR5cGVzIiksbD10KCIuL3h5X2RlZmF1bHRzIiks Yz10KCIuL3BlcmlvZF9kZWZhdWx0cyIpLHU9dCgiLi9zdGFja19kZWZhdWx0cyIpLGY9dCgi Li9tYXJrZXJfZGVmYXVsdHMiKSxoPXQoIi4vbGluZV9kZWZhdWx0cyIpLHA9dCgiLi9saW5l X3NoYXBlX2RlZmF1bHRzIiksZD10KCIuL3RleHRfZGVmYXVsdHMiKSxtPXQoIi4vZmlsbGNv bG9yX2RlZmF1bHRzIiksZz10KCIuLi8uLi9saWIiKS5jb2VyY2VQYXR0ZXJuO2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUscix2KXtmdW5jdGlvbiB5KHIsaSl7cmV0dXJuIG4uY29lcmNlKHQs ZSxhLHIsaSl9dmFyIHg9bCh0LGUsdix5KTtpZih4fHwoZS52aXNpYmxlPSExKSxlLnZpc2li bGUpe2ModCxlLHYseSkseSgieGhvdmVyZm9ybWF0IikseSgieWhvdmVyZm9ybWF0Iik7dmFy IGI9dSh0LGUsdix5KSxfPSFiJiZ4PG8uUFRTX0xJTkVTT05MWT8ibGluZXMrbWFya2VycyI6 ImxpbmVzIjt5KCJ0ZXh0IikseSgiaG92ZXJ0ZXh0IikseSgibW9kZSIsXykscy5oYXNMaW5l cyhlKSYmKGgodCxlLHIsdix5KSxwKHQsZSx5KSx5KCJjb25uZWN0Z2FwcyIpLHkoImxpbmUu c2ltcGxpZnkiKSkscy5oYXNNYXJrZXJzKGUpJiZmKHQsZSxyLHYseSx7Z3JhZGllbnQ6ITB9 KSxzLmhhc1RleHQoZSkmJih5KCJ0ZXh0dGVtcGxhdGUiKSxkKHQsZSx2LHkpKTt2YXIgdz1b XTsocy5oYXNNYXJrZXJzKGUpfHxzLmhhc1RleHQoZSkpJiYoeSgiY2xpcG9uYXhpcyIpLHko Im1hcmtlci5tYXhkaXNwbGF5ZWQiKSx3LnB1c2goInBvaW50cyIpKSx5KCJmaWxsIixiP2Iu ZmlsbERmbHQ6Im5vbmUiKSwibm9uZSIhPT1lLmZpbGwmJihtKHQsZSxyLHkpLHMuaGFzTGlu ZXMoZSl8fHAodCxlLHkpLGcoeSwiZmlsbHBhdHRlcm4iLGUuZmlsbGNvbG9yLCExKSk7dmFy IFQ9KGUubGluZXx8e30pLmNvbG9yLGs9KGUubWFya2VyfHx7fSkuY29sb3I7InRvbmV4dCIh PT1lLmZpbGwmJiJ0b3NlbGYiIT09ZS5maWxsfHx3LnB1c2goImZpbGxzIikseSgiaG92ZXJv biIsdy5qb2luKCIrIil8fCJwb2ludHMiKSwiZmlsbHMiIT09ZS5ob3Zlcm9uJiZ5KCJob3Zl cnRlbXBsYXRlIik7dmFyIEE9aS5nZXRDb21wb25lbnRNZXRob2QoImVycm9yYmFycyIsInN1 cHBseURlZmF1bHRzIik7QSh0LGUsVHx8a3x8cix7YXhpczoieSJ9KSxBKHQsZSxUfHxrfHxy LHtheGlzOiJ4Iixpbmhlcml0OiJ5In0pLG4uY29lcmNlU2VsZWN0aW9uTWFya2VyT3BhY2l0 eShlLHkpfX19LHsiLi4vLi4vbGliIjo1MDMsIi4uLy4uL3JlZ2lzdHJ5Ijo2MzgsIi4vYXR0 cmlidXRlcyI6OTI3LCIuL2NvbnN0YW50cyI6OTMxLCIuL2ZpbGxjb2xvcl9kZWZhdWx0cyI6 OTM1LCIuL2xpbmVfZGVmYXVsdHMiOjk0MCwiLi9saW5lX3NoYXBlX2RlZmF1bHRzIjo5NDIs Ii4vbWFya2VyX2RlZmF1bHRzIjo5NDYsIi4vcGVyaW9kX2RlZmF1bHRzIjo5NDcsIi4vc3Rh Y2tfZGVmYXVsdHMiOjk1MCwiLi9zdWJ0eXBlcyI6OTUyLCIuL3RleHRfZGVmYXVsdHMiOjk1 MywiLi94eV9kZWZhdWx0cyI6OTU0fV0sOTM1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxpPXQoIi4uLy4uL2xpYiIp LmlzQXJyYXlPclR5cGVkQXJyYXk7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGEpe3ZhciBv PSExO2lmKGUubWFya2VyKXt2YXIgcz1lLm1hcmtlci5jb2xvcixsPShlLm1hcmtlci5saW5l fHx7fSkuY29sb3I7cyYmIWkocyk/bz1zOmwmJiFpKGwpJiYobz1sKX1hKCJmaWxsY29sb3Ii LG4uYWRkT3BhY2l0eSgoZS5saW5lfHx7fSkuY29sb3J8fG98fHIsLjUpKX19LHsiLi4vLi4v Y29tcG9uZW50cy9jb2xvciI6MzY2LCIuLi8uLi9saWIiOjUwM31dLDkzNjpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhl cyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGk9e30sYT17X2Z1bGxMYXlvdXQ6 cn0sbz1uLmdldEZyb21UcmFjZShhLGUsIngiKSxzPW4uZ2V0RnJvbVRyYWNlKGEsZSwieSIp O3JldHVybiBpLnhMYWJlbD1uLnRpY2tUZXh0KG8sby5jMmwodC54KSwhMCkudGV4dCxpLnlM YWJlbD1uLnRpY2tUZXh0KHMscy5jMmwodC55KSwhMCkudGV4dCxpfX0seyIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4vYXhlcyI6NTU0fV0sOTM3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxpPXQoIi4vc3VidHlwZXMi KTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixhO2lmKCJsaW5lcyI9PT10Lm1vZGUp cmV0dXJuKHI9dC5saW5lLmNvbG9yKSYmbi5vcGFjaXR5KHIpP3I6dC5maWxsY29sb3I7aWYo Im5vbmUiPT09dC5tb2RlKXJldHVybiB0LmZpbGw/dC5maWxsY29sb3I6IiI7dmFyIG89ZS5t Y2N8fCh0Lm1hcmtlcnx8e30pLmNvbG9yLHM9ZS5tbGNjfHwoKHQubWFya2VyfHx7fSkubGlu ZXx8e30pLmNvbG9yO3JldHVybihhPW8mJm4ub3BhY2l0eShvKT9vOnMmJm4ub3BhY2l0eShz KSYmKGUubWx3fHwoKHQubWFya2VyfHx7fSkubGluZXx8e30pLndpZHRoKT9zOiIiKT9uLm9w YWNpdHkoYSk8LjM/bi5hZGRPcGFjaXR5KGEsLjMpOmE6KHI9KHQubGluZXx8e30pLmNvbG9y KSYmbi5vcGFjaXR5KHIpJiZpLmhhc0xpbmVzKHQpJiZ0LmxpbmUud2lkdGg/cjp0LmZpbGxj b2xvcn19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6MzY2LCIuL3N1YnR5cGVzIjo5NTJ9 XSw5Mzg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGli IiksaT10KCIuLi8uLi9jb21wb25lbnRzL2Z4IiksYT10KCIuLi8uLi9yZWdpc3RyeSIpLG89 dCgiLi9nZXRfdHJhY2VfY29sb3IiKSxzPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxs PW4uZmlsbFRleHQ7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGMpe3ZhciB1PXQuY2QsZj11 WzBdLnRyYWNlLGg9dC54YSxwPXQueWEsZD1oLmMycChlKSxtPXAuYzJwKHIpLGc9W2QsbV0s dj1mLmhvdmVyb258fCIiLHk9LTEhPT1mLm1vZGUuaW5kZXhPZigibWFya2VycyIpPzM6LjUs eD0hIWYueHBlcmlvZGFsaWdubWVudCxiPSEhZi55cGVyaW9kYWxpZ25tZW50O2lmKC0xIT09 di5pbmRleE9mKCJwb2ludHMiKSl7dmFyIF89ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5tYXgo eSx0Lm1yY3x8MCkscj1oLmMycCh0LngpLWQsbj1wLmMycCh0LnkpLW07cmV0dXJuIE1hdGgu bWF4KE1hdGguc3FydChyKnIrbipuKS1lLDEteS9lKX0sdz1pLmdldERpc3RhbmNlRnVuY3Rp b24oYywoZnVuY3Rpb24odCl7aWYoeCl7dmFyIGU9aC5jMnAodC54U3RhcnQpLHI9aC5jMnAo dC54RW5kKTtyZXR1cm4gZD49TWF0aC5taW4oZSxyKSYmZDw9TWF0aC5tYXgoZSxyKT8wOjEv MH12YXIgbj1NYXRoLm1heCgzLHQubXJjfHwwKSxpPTEtMS9uLGE9TWF0aC5hYnMoaC5jMnAo dC54KS1kKTtyZXR1cm4gYTxuP2kqYS9uOmEtbitpfSksKGZ1bmN0aW9uKHQpe2lmKGIpe3Zh ciBlPXAuYzJwKHQueVN0YXJ0KSxyPXAuYzJwKHQueUVuZCk7cmV0dXJuIG0+PU1hdGgubWlu KGUscikmJm08PU1hdGgubWF4KGUscik/MDoxLzB9dmFyIG49TWF0aC5tYXgoMyx0Lm1yY3x8 MCksaT0xLTEvbixhPU1hdGguYWJzKHAuYzJwKHQueSktbSk7cmV0dXJuIGE8bj9pKmEvbjph LW4raX0pLF8pO2lmKGkuZ2V0Q2xvc2VzdCh1LHcsdCksITEhPT10LmluZGV4KXt2YXIgVD11 W3QuaW5kZXhdLGs9aC5jMnAoVC54LCEwKSxBPXAuYzJwKFQueSwhMCksTT1ULm1yY3x8MTt0 LmluZGV4PVQuaTt2YXIgUz11WzBdLnQub3JpZW50YXRpb24sRT1TJiYoVC5zTm9ybXx8VC5z KSxMPSJoIj09PVM/RTp2b2lkIDAhPT1ULm9yaWdfeD9ULm9yaWdfeDpULngsQz0idiI9PT1T P0U6dm9pZCAwIT09VC5vcmlnX3k/VC5vcmlnX3k6VC55O3JldHVybiBuLmV4dGVuZEZsYXQo dCx7Y29sb3I6byhmLFQpLHgwOmstTSx4MTprK00seExhYmVsVmFsOkwseTA6QS1NLHkxOkEr TSx5TGFiZWxWYWw6QyxzcGlrZURpc3RhbmNlOl8oVCksaG92ZXJ0ZW1wbGF0ZTpmLmhvdmVy dGVtcGxhdGV9KSxsKFQsZix0KSxhLmdldENvbXBvbmVudE1ldGhvZCgiZXJyb3JiYXJzIiwi aG92ZXJJbmZvIikoVCxmLHQpLFt0XX19aWYoLTEhPT12LmluZGV4T2YoImZpbGxzIikmJmYu X3BvbHlnb25zKXt2YXIgUCxJLE8seixELFIsRixCLE4saj1mLl9wb2x5Z29ucyxVPVtdLFY9 ITEsSD0xLzAscT0tMS8wLEc9MS8wLFk9LTEvMDtmb3IoUD0wO1A8ai5sZW5ndGg7UCsrKShP PWpbUF0pLmNvbnRhaW5zKGcpJiYoVj0hVixVLnB1c2goTyksRz1NYXRoLm1pbihHLE8ueW1p biksWT1NYXRoLm1heChZLE8ueW1heCkpO2lmKFYpe3ZhciBXPSgoRz1NYXRoLm1heChHLDAp KSsoWT1NYXRoLm1pbihZLHAuX2xlbmd0aCkpKS8yO2ZvcihQPTA7UDxVLmxlbmd0aDtQKysp Zm9yKHo9VVtQXS5wdHMsST0xO0k8ei5sZW5ndGg7SSsrKShCPXpbSS0xXVsxXSk+VyE9KE49 eltJXVsxXSk+PVcmJihSPXpbSS0xXVswXSxGPXpbSV1bMF0sTi1CJiYoRD1SKyhGLVIpKihX LUIpLyhOLUIpLEg9TWF0aC5taW4oSCxEKSxxPU1hdGgubWF4KHEsRCkpKTtIPU1hdGgubWF4 KEgsMCkscT1NYXRoLm1pbihxLGguX2xlbmd0aCk7dmFyIFg9cy5kZWZhdWx0TGluZTtyZXR1 cm4gcy5vcGFjaXR5KGYuZmlsbGNvbG9yKT9YPWYuZmlsbGNvbG9yOnMub3BhY2l0eSgoZi5s aW5lfHx7fSkuY29sb3IpJiYoWD1mLmxpbmUuY29sb3IpLG4uZXh0ZW5kRmxhdCh0LHtkaXN0 YW5jZTp0Lm1heEhvdmVyRGlzdGFuY2UseDA6SCx4MTpxLHkwOlcseTE6Vyxjb2xvcjpYLGhv dmVydGVtcGxhdGU6ITF9KSxkZWxldGUgdC5pbmRleCxmLnRleHQmJiFBcnJheS5pc0FycmF5 KGYudGV4dCk/dC50ZXh0PVN0cmluZyhmLnRleHQpOnQudGV4dD1mLm5hbWUsW3RdfX19fSx7 Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjM2NiwiLi4vLi4vY29tcG9uZW50cy9meCI6NDA2 LCIuLi8uLi9saWIiOjUwMywiLi4vLi4vcmVnaXN0cnkiOjYzOCwiLi9nZXRfdHJhY2VfY29s b3IiOjkzN31dLDkzOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIu L3N1YnR5cGVzIik7ZS5leHBvcnRzPXtoYXNMaW5lczpuLmhhc0xpbmVzLGhhc01hcmtlcnM6 bi5oYXNNYXJrZXJzLGhhc1RleHQ6bi5oYXNUZXh0LGlzQnViYmxlOm4uaXNCdWJibGUsYXR0 cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRz IiksY3Jvc3NUcmFjZURlZmF1bHRzOnQoIi4vY3Jvc3NfdHJhY2VfZGVmYXVsdHMiKSxjYWxj OnQoIi4vY2FsYyIpLmNhbGMsY3Jvc3NUcmFjZUNhbGM6dCgiLi9jcm9zc190cmFjZV9jYWxj IiksYXJyYXlzVG9DYWxjZGF0YTp0KCIuL2FycmF5c190b19jYWxjZGF0YSIpLHBsb3Q6dCgi Li9wbG90IiksY29sb3JiYXI6dCgiLi9tYXJrZXJfY29sb3JiYXIiKSxmb3JtYXRMYWJlbHM6 dCgiLi9mb3JtYXRfbGFiZWxzIiksc3R5bGU6dCgiLi9zdHlsZSIpLnN0eWxlLHN0eWxlT25T ZWxlY3Q6dCgiLi9zdHlsZSIpLnN0eWxlT25TZWxlY3QsaG92ZXJQb2ludHM6dCgiLi9ob3Zl ciIpLHNlbGVjdFBvaW50czp0KCIuL3NlbGVjdCIpLGFuaW1hdGFibGU6ITAsbW9kdWxlVHlw ZToidHJhY2UiLG5hbWU6InNjYXR0ZXIiLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3Rz L2NhcnRlc2lhbiIpLGNhdGVnb3JpZXM6WyJjYXJ0ZXNpYW4iLCJzdmciLCJzeW1ib2xzIiwi ZXJyb3JCYXJzT0siLCJzaG93TGVnZW5kIiwic2NhdHRlci1saWtlIiwiem9vbVNjYWxlIl0s bWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuIjo1NjgsIi4vYXJyYXlzX3RvX2Nh bGNkYXRhIjo5MjYsIi4vYXR0cmlidXRlcyI6OTI3LCIuL2NhbGMiOjkyOCwiLi9jcm9zc190 cmFjZV9jYWxjIjo5MzIsIi4vY3Jvc3NfdHJhY2VfZGVmYXVsdHMiOjkzMywiLi9kZWZhdWx0 cyI6OTM0LCIuL2Zvcm1hdF9sYWJlbHMiOjkzNiwiLi9ob3ZlciI6OTM4LCIuL21hcmtlcl9j b2xvcmJhciI6OTQ1LCIuL3Bsb3QiOjk0OCwiLi9zZWxlY3QiOjk0OSwiLi9zdHlsZSI6OTUx LCIuL3N1YnR5cGVzIjo5NTJ9XSw5NDA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiLi4vLi4vbGliIikuaXNBcnJheU9yVHlwZWRBcnJheSxpPXQoIi4uLy4uL2Nv bXBvbmVudHMvY29sb3JzY2FsZS9oZWxwZXJzIikuaGFzQ29sb3JzY2FsZSxhPXQoIi4uLy4u L2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUscixvLHMsbCl7dmFyIGM9KHQubWFya2VyfHx7fSkuY29sb3I7KHMoImxpbmUuY29sb3Ii LHIpLGkodCwibGluZSIpKT9hKHQsZSxvLHMse3ByZWZpeDoibGluZS4iLGNMZXR0ZXI6ImMi fSk6cygibGluZS5jb2xvciIsIW4oYykmJmN8fHIpO3MoImxpbmUud2lkdGgiKSwobHx8e30p Lm5vRGFzaHx8cygibGluZS5kYXNoIil9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2Fs ZS9kZWZhdWx0cyI6Mzc2LCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvaGVscGVycyI6 Mzc3LCIuLi8uLi9saWIiOjUwM31dLDk0MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbj10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIiksaT1uLkJBRE5VTSxhPW4u TE9HX0NMSVAsbz1hKy41LHM9YS0uNSxsPXQoIi4uLy4uL2xpYiIpLGM9bC5zZWdtZW50c0lu dGVyc2VjdCx1PWwuY29uc3RyYWluLGY9dCgiLi9jb25zdGFudHMiKTtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlKXt2YXIgcixuLGEsaCxwLGQsbSxnLHYseSx4LGIsXyx3LFQsayxBLE0sUz1l LnhheGlzLEU9ZS55YXhpcyxMPSJsb2ciPT09Uy50eXBlLEM9ImxvZyI9PT1FLnR5cGUsUD1T Ll9sZW5ndGgsST1FLl9sZW5ndGgsTz1lLmNvbm5lY3RHYXBzLHo9ZS5iYXNlVG9sZXJhbmNl LEQ9ZS5zaGFwZSxSPSJsaW5lYXIiPT09RCxGPWUuZmlsbCYmIm5vbmUiIT09ZS5maWxsLEI9 W10sTj1mLm1pblRvbGVyYW5jZSxqPXQubGVuZ3RoLFU9bmV3IEFycmF5KGopLFY9MDtmdW5j dGlvbiBIKHIpe3ZhciBuPXRbcl07aWYoIW4pcmV0dXJuITE7dmFyIGE9ZS5saW5lYXJpemVk P1MubDJwKG4ueCk6Uy5jMnAobi54KSxsPWUubGluZWFyaXplZD9FLmwycChuLnkpOkUuYzJw KG4ueSk7aWYoYT09PWkpe2lmKEwmJihhPVMuYzJwKG4ueCwhMCkpLGE9PT1pKXJldHVybiEx O0MmJmw9PT1pJiYoYSo9TWF0aC5hYnMoUy5fbSpJKihTLl9tPjA/bzpzKS8oRS5fbSpQKihF Ll9tPjA/bzpzKSkpKSxhKj0xZTN9aWYobD09PWkpe2lmKEMmJihsPUUuYzJwKG4ueSwhMCkp LGw9PT1pKXJldHVybiExO2wqPTFlM31yZXR1cm5bYSxsXX1mdW5jdGlvbiBxKHQsZSxyLG4p e3ZhciBpPXItdCxhPW4tZSxvPS41LXQscz0uNS1lLGw9aSppK2EqYSxjPWkqbythKnM7aWYo Yz4wJiZjPGwpe3ZhciB1PW8qYS1zKmk7aWYodSp1PGwpcmV0dXJuITB9fWZ1bmN0aW9uIEco dCxlKXt2YXIgcj10WzBdL1Asbj10WzFdL0ksaT1NYXRoLm1heCgwLC1yLHItMSwtbixuLTEp O3JldHVybiBpJiZ2b2lkIDAhPT1BJiZxKHIsbixBLE0pJiYoaT0wKSxpJiZlJiZxKHIsbixl WzBdL1AsZVsxXS9JKSYmKGk9MCksKDErZi50b2xlcmFuY2VHcm93dGgqaSkqen1mdW5jdGlv biBZKHQsZSl7dmFyIHI9dFswXS1lWzBdLG49dFsxXS1lWzFdO3JldHVybiBNYXRoLnNxcnQo cipyK24qbil9dmFyIFcsWCxaLEosSyxRLCQsdHQ9Zi5tYXhTY3JlZW5zQXdheSxldD0tUCp0 dCxydD1QKigxK3R0KSxudD0tSSp0dCxpdD1JKigxK3R0KSxhdD1bW2V0LG50LHJ0LG50XSxb cnQsbnQscnQsaXRdLFtydCxpdCxldCxpdF0sW2V0LGl0LGV0LG50XV07ZnVuY3Rpb24gb3Qo dCl7aWYodFswXTxldHx8dFswXT5ydHx8dFsxXTxudHx8dFsxXT5pdClyZXR1cm5bdSh0WzBd LGV0LHJ0KSx1KHRbMV0sbnQsaXQpXX1mdW5jdGlvbiBzdCh0LGUpe3JldHVybiB0WzBdPT09 ZVswXSYmKHRbMF09PT1ldHx8dFswXT09PXJ0KXx8KHRbMV09PT1lWzFdJiYodFsxXT09PW50 fHx0WzFdPT09aXQpfHx2b2lkIDApfWZ1bmN0aW9uIGx0KHQsZSxyKXtyZXR1cm4gZnVuY3Rp b24obixpKXt2YXIgYT1vdChuKSxvPW90KGkpLHM9W107aWYoYSYmbyYmc3QoYSxvKSlyZXR1 cm4gczthJiZzLnB1c2goYSksbyYmcy5wdXNoKG8pO3ZhciBjPTIqbC5jb25zdHJhaW4oKG5b dF0raVt0XSkvMixlLHIpLSgoYXx8bilbdF0rKG98fGkpW3RdKTtjJiYoKGEmJm8/Yz4wPT1h W3RdPm9bdF0/YTpvOmF8fG8pW3RdKz1jKTtyZXR1cm4gc319ZnVuY3Rpb24gY3QodCl7dmFy IGU9dFswXSxyPXRbMV0sbj1lPT09VVtWLTFdWzBdLGk9cj09PVVbVi0xXVsxXTtpZighbnx8 IWkpaWYoVj4xKXt2YXIgYT1lPT09VVtWLTJdWzBdLG89cj09PVVbVi0yXVsxXTtuJiYoZT09 PWV0fHxlPT09cnQpJiZhP28/Vi0tOlVbVi0xXT10OmkmJihyPT09bnR8fHI9PT1pdCkmJm8/ YT9WLS06VVtWLTFdPXQ6VVtWKytdPXR9ZWxzZSBVW1YrK109dH1mdW5jdGlvbiB1dCh0KXtV W1YtMV1bMF0hPT10WzBdJiZVW1YtMV1bMV0hPT10WzFdJiZjdChbWixKXSksY3QodCksSz1u dWxsLFo9Sj0wfWZ1bmN0aW9uIGZ0KHQpe2lmKEE9dFswXS9QLE09dFsxXS9JLFc9dFswXTxl dD9ldDp0WzBdPnJ0P3J0OjAsWD10WzFdPG50P250OnRbMV0+aXQ/aXQ6MCxXfHxYKXtpZihW KWlmKEspe3ZhciBlPSQoSyx0KTtlLmxlbmd0aD4xJiYodXQoZVswXSksVVtWKytdPWVbMV0p fWVsc2UgUT0kKFVbVi0xXSx0KVswXSxVW1YrK109UTtlbHNlIFVbVisrXT1bV3x8dFswXSxY fHx0WzFdXTt2YXIgcj1VW1YtMV07VyYmWCYmKHJbMF0hPT1XfHxyWzFdIT09WCk/KEsmJiha IT09VyYmSiE9PVg/Y3QoWiYmSj8obj1LLGE9KGk9dClbMF0tblswXSxvPShpWzFdLW5bMV0p L2EsKG5bMV0qaVswXS1pWzFdKm5bMF0pL2E+MD9bbz4wP2V0OnJ0LGl0XTpbbz4wP3J0OmV0 LG50XSk6W1p8fFcsSnx8WF0pOlomJkomJmN0KFtaLEpdKSksY3QoW1csWF0pKTpaLVcmJkot WCYmY3QoW1d8fFosWHx8Sl0pLEs9dCxaPVcsSj1YfWVsc2UgSyYmdXQoJChLLHQpWzBdKSxV W1YrK109dDt2YXIgbixpLGEsb31mb3IoImxpbmVhciI9PT1EfHwic3BsaW5lIj09PUQ/JD1m dW5jdGlvbih0LGUpe2Zvcih2YXIgcj1bXSxuPTAsaT0wO2k8NDtpKyspe3ZhciBhPWF0W2ld LG89Yyh0WzBdLHRbMV0sZVswXSxlWzFdLGFbMF0sYVsxXSxhWzJdLGFbM10pO28mJighbnx8 TWF0aC5hYnMoby54LXJbMF1bMF0pPjF8fE1hdGguYWJzKG8ueS1yWzBdWzFdKT4xKSYmKG89 W28ueCxvLnldLG4mJlkobyx0KTxZKHJbMF0sdCk/ci51bnNoaWZ0KG8pOnIucHVzaChvKSxu KyspfXJldHVybiByfToiaHYiPT09RHx8InZoIj09PUQ/JD1mdW5jdGlvbih0LGUpe3ZhciBy PVtdLG49b3QodCksaT1vdChlKTtyZXR1cm4gbiYmaSYmc3QobixpKXx8KG4mJnIucHVzaChu KSxpJiZyLnB1c2goaSkpLHJ9OiJodmgiPT09RD8kPWx0KDAsZXQscnQpOiJ2aHYiPT09RCYm KCQ9bHQoMSxudCxpdCkpLHI9MDtyPGo7cisrKWlmKG49SChyKSl7Zm9yKFY9MCxLPW51bGws ZnQobikscisrO3I8ajtyKyspe2lmKCEoaD1IKHIpKSl7aWYoTyljb250aW51ZTticmVha31p ZihSJiZlLnNpbXBsaWZ5KXt2YXIgaHQ9SChyKzEpO2lmKHk9WShoLG4pLEYmJigwPT09Vnx8 Vj09PWotMSl8fCEoeTxHKGgsaHQpKk4pKXtmb3IoZz1bKGhbMF0tblswXSkveSwoaFsxXS1u WzFdKS95XSxwPW4seD15LGI9dz1UPTAsbT0hMSxhPWgscisrO3I8dC5sZW5ndGg7cisrKXtp ZihkPWh0LGh0PUgocisxKSwhZCl7aWYoTyljb250aW51ZTticmVha31pZihrPSh2PVtkWzBd LW5bMF0sZFsxXS1uWzFdXSlbMF0qZ1sxXS12WzFdKmdbMF0sdz1NYXRoLm1pbih3LGspLChU PU1hdGgubWF4KFQsaykpLXc+RyhkLGh0KSlicmVhazthPWQsKF89dlswXSpnWzBdK3ZbMV0q Z1sxXSk+eD8oeD1fLGg9ZCxtPSExKTpfPGImJihiPV8scD1kLG09ITApfWlmKG0/KGZ0KGgp LGEhPT1wJiZmdChwKSk6KHAhPT1uJiZmdChwKSxhIT09aCYmZnQoaCkpLGZ0KGEpLHI+PXQu bGVuZ3RofHwhZClicmVhaztmdChkKSxuPWR9fWVsc2UgZnQoaCl9SyYmY3QoW1p8fEtbMF0s Snx8S1sxXV0pLEIucHVzaChVLnNsaWNlKDAsVikpfXJldHVybiBCfX0seyIuLi8uLi9jb25z dGFudHMvbnVtZXJpY2FsIjo0NzksIi4uLy4uL2xpYiI6NTAzLCIuL2NvbnN0YW50cyI6OTMx fV0sOTQyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlv bih0LGUscil7InNwbGluZSI9PT1yKCJsaW5lLnNoYXBlIikmJnIoImxpbmUuc21vb3RoaW5n Iil9fSx7fV0sOTQzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXt0b25l eHR4OjEsdG9uZXh0eToxLHRvbmV4dDoxfTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3Zh ciBpLGEsbyxzLGwsYz17fSx1PSExLGY9LTEsaD0wLHA9LTE7Zm9yKGE9MDthPHIubGVuZ3Ro O2ErKykobz0oaT1yW2FdWzBdLnRyYWNlKS5zdGFja2dyb3VwfHwiIik/byBpbiBjP2w9Y1tv XToobD1jW29dPWgsaCsrKTppLmZpbGwgaW4gbiYmcD49MD9sPXA6KGw9cD1oLGgrKyksbDxm JiYodT0hMCksaS5fZ3JvdXBJbmRleD1mPWw7dmFyIGQ9ci5zbGljZSgpO3UmJmQuc29ydCgo ZnVuY3Rpb24odCxlKXt2YXIgcj10WzBdLnRyYWNlLG49ZVswXS50cmFjZTtyZXR1cm4gci5f Z3JvdXBJbmRleC1uLl9ncm91cEluZGV4fHxyLmluZGV4LW4uaW5kZXh9KSk7dmFyIG09e307 Zm9yKGE9MDthPGQubGVuZ3RoO2ErKylvPShpPWRbYV1bMF0udHJhY2UpLnN0YWNrZ3JvdXB8 fCIiLCEwPT09aS52aXNpYmxlPyhpLl9uZXh0dHJhY2U9bnVsbCxpLmZpbGwgaW4gbiYmKHM9 bVtvXSxpLl9wcmV2dHJhY2U9c3x8bnVsbCxzJiYocy5fbmV4dHRyYWNlPWkpKSxpLl9vd25m aWxsPWkuZmlsbCYmKCJ0b3plcm8iPT09aS5maWxsLnN1YnN0cigwLDYpfHwidG9zZWxmIj09 PWkuZmlsbHx8InRvIj09PWkuZmlsbC5zdWJzdHIoMCwyKSYmIWkuX3ByZXZ0cmFjZSksbVtv XT1pKTppLl9wcmV2dHJhY2U9aS5fbmV4dHRyYWNlPWkuX293bmZpbGw9bnVsbDtyZXR1cm4g ZH19LHt9XSw5NDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFz dC1pc251bWVyaWMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtlfHwoZT0yKTt2YXIgcj10 Lm1hcmtlcixpPXIuc2l6ZXJlZnx8MSxhPXIuc2l6ZW1pbnx8MCxvPSJhcmVhIj09PXIuc2l6 ZW1vZGU/ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguc3FydCh0L2kpfTpmdW5jdGlvbih0KXty ZXR1cm4gdC9pfTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI9byh0L2UpO3JldHVybiBuKHIp JiZyPjA/TWF0aC5tYXgocixhKTowfX19LHsiZmFzdC1pc251bWVyaWMiOjE5MH1dLDk0NTpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2NvbnRhaW5lcjoibWFy a2VyIixtaW46ImNtaW4iLG1heDoiY21heCJ9fSx7fV0sOTQ2OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxpPXQoIi4u Ly4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9oZWxwZXJzIikuaGFzQ29sb3JzY2FsZSxhPXQo Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyIpLG89dCgiLi9zdWJ0eXBl cyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixzLGwsYyl7dmFyIHU9by5pc0J1YmJsZSh0 KSxmPSh0LmxpbmV8fHt9KS5jb2xvcjsoYz1jfHx7fSxmJiYocj1mKSxsKCJtYXJrZXIuc3lt Ym9sIiksbCgibWFya2VyLm9wYWNpdHkiLHU/Ljc6MSksbCgibWFya2VyLnNpemUiKSxsKCJt YXJrZXIuY29sb3IiLHIpLGkodCwibWFya2VyIikmJmEodCxlLHMsbCx7cHJlZml4OiJtYXJr ZXIuIixjTGV0dGVyOiJjIn0pLGMubm9TZWxlY3R8fChsKCJzZWxlY3RlZC5tYXJrZXIuY29s b3IiKSxsKCJ1bnNlbGVjdGVkLm1hcmtlci5jb2xvciIpLGwoInNlbGVjdGVkLm1hcmtlci5z aXplIiksbCgidW5zZWxlY3RlZC5tYXJrZXIuc2l6ZSIpKSxjLm5vTGluZXx8KGwoIm1hcmtl ci5saW5lLmNvbG9yIixmJiYhQXJyYXkuaXNBcnJheShmKSYmZS5tYXJrZXIuY29sb3IhPT1m P2Y6dT9uLmJhY2tncm91bmQ6bi5kZWZhdWx0TGluZSksaSh0LCJtYXJrZXIubGluZSIpJiZh KHQsZSxzLGwse3ByZWZpeDoibWFya2VyLmxpbmUuIixjTGV0dGVyOiJjIn0pLGwoIm1hcmtl ci5saW5lLndpZHRoIix1PzE6MCkpLHUmJihsKCJtYXJrZXIuc2l6ZXJlZiIpLGwoIm1hcmtl ci5zaXplbWluIiksbCgibWFya2VyLnNpemVtb2RlIikpLGMuZ3JhZGllbnQpJiYoIm5vbmUi IT09bCgibWFya2VyLmdyYWRpZW50LnR5cGUiKSYmbCgibWFya2VyLmdyYWRpZW50LmNvbG9y IikpfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yIjozNjYsIi4uLy4uL2NvbXBvbmVudHMv Y29sb3JzY2FsZS9kZWZhdWx0cyI6Mzc2LCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUv aGVscGVycyI6Mzc3LCIuL3N1YnR5cGVzIjo5NTJ9XSw5NDc6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIikuZGF0ZVRpY2swLGk9dCgiLi4vLi4v Y29uc3RhbnRzL251bWVyaWNhbCIpLk9ORVdFRUs7ZnVuY3Rpb24gYSh0LGUpe3JldHVybiBu KGUsdCVpPT0wPzE6MCl9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4saSl7aWYoaXx8KGk9 e3g6ITAseTohMH0pLGkueCl7dmFyIG89bigieHBlcmlvZCIpO28mJihuKCJ4cGVyaW9kMCIs YShvLGUueGNhbGVuZGFyKSksbigieHBlcmlvZGFsaWdubWVudCIpKX1pZihpLnkpe3ZhciBz PW4oInlwZXJpb2QiKTtzJiYobigieXBlcmlvZDAiLGEocyxlLnljYWxlbmRhcikpLG4oInlw ZXJpb2RhbGlnbm1lbnQiKSl9fX0seyIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIjo0Nzks Ii4uLy4uL2xpYiI6NTAzfV0sOTQ4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIkBwbG90bHkvZDMiKSxpPXQoIi4uLy4uL3JlZ2lzdHJ5IiksYT10KCIuLi8uLi9s aWIiKSxvPWEuZW5zdXJlU2luZ2xlLHM9YS5pZGVudGl0eSxsPXQoIi4uLy4uL2NvbXBvbmVu dHMvZHJhd2luZyIpLGM9dCgiLi9zdWJ0eXBlcyIpLHU9dCgiLi9saW5lX3BvaW50cyIpLGY9 dCgiLi9saW5rX3RyYWNlcyIpLGg9dCgiLi4vLi4vbGliL3BvbHlnb24iKS50ZXN0ZXI7ZnVu Y3Rpb24gcCh0LGUscixmLHAsZCxtKXt2YXIgZzshZnVuY3Rpb24odCxlLHIsaSxvKXt2YXIg cz1yLnhheGlzLGw9ci55YXhpcyx1PW4uZXh0ZW50KGEuc2ltcGxlTWFwKHMucmFuZ2Uscy5y MmMpKSxmPW4uZXh0ZW50KGEuc2ltcGxlTWFwKGwucmFuZ2UsbC5yMmMpKSxoPWlbMF0udHJh Y2U7aWYoIWMuaGFzTWFya2VycyhoKSlyZXR1cm47dmFyIHA9aC5tYXJrZXIubWF4ZGlzcGxh eWVkO2lmKDA9PT1wKXJldHVybjt2YXIgZD1pLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJu IHQueD49dVswXSYmdC54PD11WzFdJiZ0Lnk+PWZbMF0mJnQueTw9ZlsxXX0pKSxtPU1hdGgu Y2VpbChkLmxlbmd0aC9wKSxnPTA7by5mb3JFYWNoKChmdW5jdGlvbih0LHIpe3ZhciBuPXRb MF0udHJhY2U7Yy5oYXNNYXJrZXJzKG4pJiZuLm1hcmtlci5tYXhkaXNwbGF5ZWQ+MCYmcjxl JiZnKyt9KSk7dmFyIHY9TWF0aC5yb3VuZChnKm0vMytNYXRoLmZsb29yKGcvMykqbS83LjEp O2kuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZGVsZXRlIHQudmlzfSkpLGQuZm9yRWFjaCgoZnVu Y3Rpb24odCxlKXswPT09TWF0aC5yb3VuZCgoZSt2KSVtKSYmKHQudmlzPSEwKX0pKX0oMCxl LHIsZixwKTt2YXIgdj0hIW0mJm0uZHVyYXRpb24+MDtmdW5jdGlvbiB5KHQpe3JldHVybiB2 P3QudHJhbnNpdGlvbigpOnR9dmFyIHg9ci54YXhpcyxiPXIueWF4aXMsXz1mWzBdLnRyYWNl LHc9Xy5saW5lLFQ9bi5zZWxlY3QoZCksaz1vKFQsImciLCJlcnJvcmJhcnMiKSxBPW8oVCwi ZyIsImxpbmVzIiksTT1vKFQsImciLCJwb2ludHMiKSxTPW8oVCwiZyIsInRleHQiKTtpZihp LmdldENvbXBvbmVudE1ldGhvZCgiZXJyb3JiYXJzIiwicGxvdCIpKHQsayxyLG0pLCEwPT09 Xy52aXNpYmxlKXt2YXIgRSxMO3koVCkuc3R5bGUoIm9wYWNpdHkiLF8ub3BhY2l0eSk7dmFy IEM9Xy5maWxsLmNoYXJBdChfLmZpbGwubGVuZ3RoLTEpOyJ4IiE9PUMmJiJ5IiE9PUMmJihD PSIiKSxmWzBdW3IuaXNSYW5nZVBsb3Q/Im5vZGVSYW5nZVBsb3QzIjoibm9kZTMiXT1UO3Zh ciBQLEksTz0iIix6PVtdLEQ9Xy5fcHJldnRyYWNlO0QmJihPPUQuX3ByZXZSZXZwYXRofHwi IixMPUQuX25leHRGaWxsLHo9RC5fcG9seWdvbnMpO3ZhciBSLEYsQixOLGosVSxWLEg9IiIs cT0iIixHPVtdLFk9YS5ub29wO2lmKEU9Xy5fb3duRmlsbCxjLmhhc0xpbmVzKF8pfHwibm9u ZSIhPT1fLmZpbGwpe2ZvcihMJiZMLmRhdHVtKGYpLC0xIT09WyJodiIsInZoIiwiaHZoIiwi dmh2Il0uaW5kZXhPZih3LnNoYXBlKT8oUj1sLnN0ZXBzKHcuc2hhcGUpLEY9bC5zdGVwcyh3 LnNoYXBlLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIikpKTpSPUY9InNwbGluZSI9PT13 LnNoYXBlP2Z1bmN0aW9uKHQpe3ZhciBlPXRbdC5sZW5ndGgtMV07cmV0dXJuIHQubGVuZ3Ro PjEmJnRbMF1bMF09PT1lWzBdJiZ0WzBdWzFdPT09ZVsxXT9sLnNtb290aGNsb3NlZCh0LnNs aWNlKDEpLHcuc21vb3RoaW5nKTpsLnNtb290aG9wZW4odCx3LnNtb290aGluZyl9OmZ1bmN0 aW9uKHQpe3JldHVybiJNIit0LmpvaW4oIkwiKX0sQj1mdW5jdGlvbih0KXtyZXR1cm4gRih0 LnJldmVyc2UoKSl9LEc9dShmLHt4YXhpczp4LHlheGlzOmIsY29ubmVjdEdhcHM6Xy5jb25u ZWN0Z2FwcyxiYXNlVG9sZXJhbmNlOk1hdGgubWF4KHcud2lkdGh8fDEsMykvNCxzaGFwZTp3 LnNoYXBlLHNpbXBsaWZ5Oncuc2ltcGxpZnksZmlsbDpfLmZpbGx9KSxWPV8uX3BvbHlnb25z PW5ldyBBcnJheShHLmxlbmd0aCksZz0wO2c8Ry5sZW5ndGg7ZysrKV8uX3BvbHlnb25zW2dd PWgoR1tnXSk7Ry5sZW5ndGgmJihOPUdbMF1bMF0sVT0oaj1HW0cubGVuZ3RoLTFdKVtqLmxl bmd0aC0xXSksWT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoUD1SKGUpLEk9 QihlKSxIP0M/KEgrPSJMIitQLnN1YnN0cigxKSxxPUkrIkwiK3Euc3Vic3RyKDEpKTooSCs9 IloiK1AscT1JKyJaIitxKTooSD1QLHE9SSksYy5oYXNMaW5lcyhfKSYmZS5sZW5ndGg+MSl7 dmFyIHI9bi5zZWxlY3QodGhpcyk7aWYoci5kYXR1bShmKSx0KXkoci5zdHlsZSgib3BhY2l0 eSIsMCkuYXR0cigiZCIsUCkuY2FsbChsLmxpbmVHcm91cFN0eWxlKSkuc3R5bGUoIm9wYWNp dHkiLDEpO2Vsc2V7dmFyIGk9eShyKTtpLmF0dHIoImQiLFApLGwuc2luZ2xlTGluZVN0eWxl KGYsaSl9fX19fXZhciBXPUEuc2VsZWN0QWxsKCIuanMtbGluZSIpLmRhdGEoRyk7eShXLmV4 aXQoKSkuc3R5bGUoIm9wYWNpdHkiLDApLnJlbW92ZSgpLFcuZWFjaChZKCExKSksVy5lbnRl cigpLmFwcGVuZCgicGF0aCIpLmNsYXNzZWQoImpzLWxpbmUiLCEwKS5zdHlsZSgidmVjdG9y LWVmZmVjdCIsIm5vbi1zY2FsaW5nLXN0cm9rZSIpLmNhbGwobC5saW5lR3JvdXBTdHlsZSku ZWFjaChZKCEwKSksbC5zZXRDbGlwVXJsKFcsci5sYXllckNsaXBJZCx0KSxHLmxlbmd0aD8o RT8oRS5kYXR1bShmKSxOJiZVJiYoQz8oInkiPT09Qz9OWzFdPVVbMV09Yi5jMnAoMCwhMCk6 IngiPT09QyYmKE5bMF09VVswXT14LmMycCgwLCEwKSkseShFKS5hdHRyKCJkIiwiTSIrVSsi TCIrTisiTCIrSC5zdWJzdHIoMSkpLmNhbGwobC5zaW5nbGVGaWxsU3R5bGUsdCkpOnkoRSku YXR0cigiZCIsSCsiWiIpLmNhbGwobC5zaW5nbGVGaWxsU3R5bGUsdCkpKTpMJiYoInRvbmV4 dCI9PT1fLmZpbGwuc3Vic3RyKDAsNikmJkgmJk8/KCJ0b25leHQiPT09Xy5maWxsP3koTCku YXR0cigiZCIsSCsiWiIrTysiWiIpLmNhbGwobC5zaW5nbGVGaWxsU3R5bGUsdCk6eShMKS5h dHRyKCJkIixIKyJMIitPLnN1YnN0cigxKSsiWiIpLmNhbGwobC5zaW5nbGVGaWxsU3R5bGUs dCksXy5fcG9seWdvbnM9Xy5fcG9seWdvbnMuY29uY2F0KHopKTooWihMKSxfLl9wb2x5Z29u cz1udWxsKSksXy5fcHJldlJldnBhdGg9cSxfLl9wcmV2UG9seWdvbnM9Vik6KEU/WihFKTpM JiZaKEwpLF8uX3BvbHlnb25zPV8uX3ByZXZSZXZwYXRoPV8uX3ByZXZQb2x5Z29ucz1udWxs KSxNLmRhdHVtKGYpLFMuZGF0dW0oZiksZnVuY3Rpb24oZSxpLGEpe3ZhciBvLHU9YVswXS50 cmFjZSxmPWMuaGFzTWFya2Vycyh1KSxoPWMuaGFzVGV4dCh1KSxwPXR0KHUpLGQ9ZXQsbT1l dDtpZihmfHxoKXt2YXIgZz1zLF89dS5zdGFja2dyb3VwLHc9XyYmImluZmVyIHplcm8iPT09 dC5fZnVsbExheW91dC5fc2NhdHRlclN0YWNrT3B0c1t4Ll9pZCtiLl9pZF1bX10uc3RhY2tn YXBzO3UubWFya2VyLm1heGRpc3BsYXllZHx8dS5fbmVlZHNDdWxsP2c9dz9LOko6XyYmIXcm JihnPVEpLGYmJihkPWcpLGgmJihtPWcpfXZhciBULGs9KG89ZS5zZWxlY3RBbGwoInBhdGgu cG9pbnQiKS5kYXRhKGQscCkpLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuY2xhc3NlZCgicG9p bnQiLCEwKTt2JiZrLmNhbGwobC5wb2ludFN0eWxlLHUsdCkuY2FsbChsLnRyYW5zbGF0ZVBv aW50cyx4LGIpLnN0eWxlKCJvcGFjaXR5IiwwKS50cmFuc2l0aW9uKCkuc3R5bGUoIm9wYWNp dHkiLDEpLG8ub3JkZXIoKSxmJiYoVD1sLm1ha2VQb2ludFN0eWxlRm5zKHUpKSxvLmVhY2go KGZ1bmN0aW9uKGUpe3ZhciBpPW4uc2VsZWN0KHRoaXMpLGE9eShpKTtsLnRyYW5zbGF0ZVBv aW50KGUsYSx4LGIpPyhsLnNpbmdsZVBvaW50U3R5bGUoZSxhLHUsVCx0KSxyLmxheWVyQ2xp cElkJiZsLmhpZGVPdXRzaWRlUmFuZ2VQb2ludChlLGEseCxiLHUueGNhbGVuZGFyLHUueWNh bGVuZGFyKSx1LmN1c3RvbWRhdGEmJmkuY2xhc3NlZCgicGxvdGx5LWN1c3RvbWRhdGEiLG51 bGwhPT1lLmRhdGEmJnZvaWQgMCE9PWUuZGF0YSkpOmEucmVtb3ZlKCl9KSksdj9vLmV4aXQo KS50cmFuc2l0aW9uKCkuc3R5bGUoIm9wYWNpdHkiLDApLnJlbW92ZSgpOm8uZXhpdCgpLnJl bW92ZSgpLChvPWkuc2VsZWN0QWxsKCJnIikuZGF0YShtLHApKS5lbnRlcigpLmFwcGVuZCgi ZyIpLmNsYXNzZWQoInRleHRwb2ludCIsITApLmFwcGVuZCgidGV4dCIpLG8ub3JkZXIoKSxv LmVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPW4uc2VsZWN0KHRoaXMpLGk9eShlLnNlbGVjdCgi dGV4dCIpKTtsLnRyYW5zbGF0ZVBvaW50KHQsaSx4LGIpP3IubGF5ZXJDbGlwSWQmJmwuaGlk ZU91dHNpZGVSYW5nZVBvaW50KHQsZSx4LGIsdS54Y2FsZW5kYXIsdS55Y2FsZW5kYXIpOmUu cmVtb3ZlKCl9KSksby5zZWxlY3RBbGwoInRleHQiKS5jYWxsKGwudGV4dFBvaW50U3R5bGUs dSx0KS5lYWNoKChmdW5jdGlvbih0KXt2YXIgZT14LmMycCh0LngpLHI9Yi5jMnAodC55KTtu LnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoInRzcGFuLmxpbmUiKS5lYWNoKChmdW5jdGlvbigp e3kobi5zZWxlY3QodGhpcykpLmF0dHIoe3g6ZSx5OnJ9KX0pKX0pKSxvLmV4aXQoKS5yZW1v dmUoKX0oTSxTLGYpO3ZhciBYPSExPT09Xy5jbGlwb25heGlzP251bGw6ci5sYXllckNsaXBJ ZDtsLnNldENsaXBVcmwoTSxYLHQpLGwuc2V0Q2xpcFVybChTLFgsdCl9ZnVuY3Rpb24gWih0 KXt5KHQpLmF0dHIoImQiLCJNMCwwWiIpfWZ1bmN0aW9uIEoodCl7cmV0dXJuIHQuZmlsdGVy KChmdW5jdGlvbih0KXtyZXR1cm4hdC5nYXAmJnQudmlzfSkpfWZ1bmN0aW9uIEsodCl7cmV0 dXJuIHQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC52aXN9KSl9ZnVuY3Rpb24gUSh0 KXtyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiF0LmdhcH0pKX1mdW5jdGlv biAkKHQpe3JldHVybiB0LmlkfWZ1bmN0aW9uIHR0KHQpe2lmKHQuaWRzKXJldHVybiAkfWZ1 bmN0aW9uIGV0KCl7cmV0dXJuITF9fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscixpLGEsYyl7 dmFyIHUsaCxkPSFhLG09ISFhJiZhLmR1cmF0aW9uPjAsZz1mKHQsZSxyKTsoKHU9aS5zZWxl Y3RBbGwoImcudHJhY2UiKS5kYXRhKGcsKGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdLnRyYWNl LnVpZH0pKSkuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsKGZ1bmN0aW9uKHQp e3JldHVybiJ0cmFjZSBzY2F0dGVyIHRyYWNlIit0WzBdLnRyYWNlLnVpZH0pKS5zdHlsZSgi c3Ryb2tlLW1pdGVybGltaXQiLDIpLHUub3JkZXIoKSxmdW5jdGlvbih0LGUscil7ZS5lYWNo KChmdW5jdGlvbihlKXt2YXIgaT1vKG4uc2VsZWN0KHRoaXMpLCJnIiwiZmlsbHMiKTtsLnNl dENsaXBVcmwoaSxyLmxheWVyQ2xpcElkLHQpO3ZhciBhPWVbMF0udHJhY2UsYz1bXTthLl9v d25maWxsJiZjLnB1c2goIl9vd25GaWxsIiksYS5fbmV4dHRyYWNlJiZjLnB1c2goIl9uZXh0 RmlsbCIpO3ZhciB1PWkuc2VsZWN0QWxsKCJnIikuZGF0YShjLHMpO3UuZW50ZXIoKS5hcHBl bmQoImciKSx1LmV4aXQoKS5lYWNoKChmdW5jdGlvbih0KXthW3RdPW51bGx9KSkucmVtb3Zl KCksdS5vcmRlcigpLmVhY2goKGZ1bmN0aW9uKHQpe2FbdF09byhuLnNlbGVjdCh0aGlzKSwi cGF0aCIsImpzLWZpbGwiKX0pKX0pKX0odCx1LGUpLG0pPyhjJiYoaD1jKCkpLG4udHJhbnNp dGlvbigpLmR1cmF0aW9uKGEuZHVyYXRpb24pLmVhc2UoYS5lYXNpbmcpLmVhY2goImVuZCIs KGZ1bmN0aW9uKCl7aCYmaCgpfSkpLmVhY2goImludGVycnVwdCIsKGZ1bmN0aW9uKCl7aCYm aCgpfSkpLmVhY2goKGZ1bmN0aW9uKCl7aS5zZWxlY3RBbGwoImcudHJhY2UiKS5lYWNoKChm dW5jdGlvbihyLG4pe3AodCxuLGUscixnLHRoaXMsYSl9KSl9KSkpOnUuZWFjaCgoZnVuY3Rp b24ocixuKXtwKHQsbixlLHIsZyx0aGlzLGEpfSkpO2QmJnUuZXhpdCgpLnJlbW92ZSgpLGku c2VsZWN0QWxsKCJwYXRoOm5vdChbZF0pIikucmVtb3ZlKCl9fSx7Ii4uLy4uL2NvbXBvbmVu dHMvZHJhd2luZyI6Mzg4LCIuLi8uLi9saWIiOjUwMywiLi4vLi4vbGliL3BvbHlnb24iOjUx NSwiLi4vLi4vcmVnaXN0cnkiOjYzOCwiLi9saW5lX3BvaW50cyI6OTQxLCIuL2xpbmtfdHJh Y2VzIjo5NDMsIi4vc3VidHlwZXMiOjk1MiwiQHBsb3RseS9kMyI6NTh9XSw5NDk6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9zdWJ0eXBlcyIpO2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUpe3ZhciByLGksYSxvLHM9dC5jZCxsPXQueGF4aXMsYz10LnlheGlz LHU9W10sZj1zWzBdLnRyYWNlO2lmKCFuLmhhc01hcmtlcnMoZikmJiFuLmhhc1RleHQoZikp cmV0dXJuW107aWYoITE9PT1lKWZvcihyPTA7cjxzLmxlbmd0aDtyKyspc1tyXS5zZWxlY3Rl ZD0wO2Vsc2UgZm9yKHI9MDtyPHMubGVuZ3RoO3IrKylpPXNbcl0sYT1sLmMycChpLngpLG89 Yy5jMnAoaS55KSxudWxsIT09aS5pJiZlLmNvbnRhaW5zKFthLG9dLCExLHIsdCk/KHUucHVz aCh7cG9pbnROdW1iZXI6aS5pLHg6bC5jMmQoaS54KSx5OmMuYzJkKGkueSl9KSxpLnNlbGVj dGVkPTEpOmkuc2VsZWN0ZWQ9MDtyZXR1cm4gdX19LHsiLi9zdWJ0eXBlcyI6OTUyfV0sOTUw OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPVsib3JpZW50YXRpb24iLCJn cm91cG5vcm0iLCJzdGFja2dhcHMiXTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaSl7dmFy IGE9ci5fc2NhdHRlclN0YWNrT3B0cyxvPWkoInN0YWNrZ3JvdXAiKTtpZihvKXt2YXIgcz1l LnhheGlzK2UueWF4aXMsbD1hW3NdO2x8fChsPWFbc109e30pO3ZhciBjPWxbb10sdT0hMTtj P2MudHJhY2VzLnB1c2goZSk6KGM9bFtvXT17dHJhY2VJbmRpY2VzOltdLHRyYWNlczpbZV19 LHU9ITApO2Zvcih2YXIgZj17b3JpZW50YXRpb246ZS54JiYhZS55PyJoIjoidiJ9LGg9MDto PG4ubGVuZ3RoO2grKyl7dmFyIHA9bltoXSxkPXArIkZvdW5kIjtpZighY1tkXSl7dmFyIG09 dm9pZCAwIT09dFtwXSxnPSJvcmllbnRhdGlvbiI9PT1wO2lmKChtfHx1KSYmKGNbcF09aShw LGZbcF0pLGcmJihjLmZpbGxEZmx0PSJoIj09PWNbcF0/InRvbmV4dHgiOiJ0b25leHR5Iiks bSYmKGNbZF09ITAsIXUmJihkZWxldGUgYy50cmFjZXNbMF1bcF0sZykpKSlmb3IodmFyIHY9 MDt2PGMudHJhY2VzLmxlbmd0aC0xO3YrKyl7dmFyIHk9Yy50cmFjZXNbdl07eS5faW5wdXQu ZmlsbCE9PXkuZmlsbCYmKHkuZmlsbD1jLmZpbGxEZmx0KX19fXJldHVybiBjfX19LHt9XSw5 NTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiQHBsb3RseS9kMyIp LGk9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksYT10KCIuLi8uLi9yZWdpc3RyeSIp O2Z1bmN0aW9uIG8odCxlLHIpe2kucG9pbnRTdHlsZSh0LnNlbGVjdEFsbCgicGF0aC5wb2lu dCIpLGUscil9ZnVuY3Rpb24gcyh0LGUscil7aS50ZXh0UG9pbnRTdHlsZSh0LnNlbGVjdEFs bCgidGV4dCIpLGUscil9ZS5leHBvcnRzPXtzdHlsZTpmdW5jdGlvbih0KXt2YXIgZT1uLnNl bGVjdCh0KS5zZWxlY3RBbGwoImcudHJhY2Uuc2NhdHRlciIpO2Uuc3R5bGUoIm9wYWNpdHki LChmdW5jdGlvbih0KXtyZXR1cm4gdFswXS50cmFjZS5vcGFjaXR5fSkpLGUuc2VsZWN0QWxs KCJnLnBvaW50cyIpLmVhY2goKGZ1bmN0aW9uKGUpe28obi5zZWxlY3QodGhpcyksZS50cmFj ZXx8ZVswXS50cmFjZSx0KX0pKSxlLnNlbGVjdEFsbCgiZy50ZXh0IikuZWFjaCgoZnVuY3Rp b24oZSl7cyhuLnNlbGVjdCh0aGlzKSxlLnRyYWNlfHxlWzBdLnRyYWNlLHQpfSkpLGUuc2Vs ZWN0QWxsKCJnLnRyYWNlIHBhdGguanMtbGluZSIpLmNhbGwoaS5saW5lR3JvdXBTdHlsZSks ZS5zZWxlY3RBbGwoImcudHJhY2UgcGF0aC5qcy1maWxsIikuY2FsbChpLmZpbGxHcm91cFN0 eWxlLHQpLGEuZ2V0Q29tcG9uZW50TWV0aG9kKCJlcnJvcmJhcnMiLCJzdHlsZSIpKGUpfSxz dHlsZVBvaW50czpvLHN0eWxlVGV4dDpzLHN0eWxlT25TZWxlY3Q6ZnVuY3Rpb24odCxlLHIp e3ZhciBuPWVbMF0udHJhY2U7bi5zZWxlY3RlZHBvaW50cz8oaS5zZWxlY3RlZFBvaW50U3R5 bGUoci5zZWxlY3RBbGwoInBhdGgucG9pbnQiKSxuKSxpLnNlbGVjdGVkVGV4dFN0eWxlKHIu c2VsZWN0QWxsKCJ0ZXh0IiksbikpOihvKHIsbix0KSxzKHIsbix0KSl9fX0seyIuLi8uLi9j b21wb25lbnRzL2RyYXdpbmciOjM4OCwiLi4vLi4vcmVnaXN0cnkiOjYzOCwiQHBsb3RseS9k MyI6NTh9XSw5NTI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4v Li4vbGliIik7ZS5leHBvcnRzPXtoYXNMaW5lczpmdW5jdGlvbih0KXtyZXR1cm4gdC52aXNp YmxlJiZ0Lm1vZGUmJi0xIT09dC5tb2RlLmluZGV4T2YoImxpbmVzIil9LGhhc01hcmtlcnM6 ZnVuY3Rpb24odCl7cmV0dXJuIHQudmlzaWJsZSYmKHQubW9kZSYmLTEhPT10Lm1vZGUuaW5k ZXhPZigibWFya2VycyIpfHwic3Bsb20iPT09dC50eXBlKX0saGFzVGV4dDpmdW5jdGlvbih0 KXtyZXR1cm4gdC52aXNpYmxlJiZ0Lm1vZGUmJi0xIT09dC5tb2RlLmluZGV4T2YoInRleHQi KX0saXNCdWJibGU6ZnVuY3Rpb24odCl7cmV0dXJuIG4uaXNQbGFpbk9iamVjdCh0Lm1hcmtl cikmJm4uaXNBcnJheU9yVHlwZWRBcnJheSh0Lm1hcmtlci5zaXplKX19fSx7Ii4uLy4uL2xp YiI6NTAzfV0sOTUzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4u Ly4uL2xpYiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixpLGEpe2E9YXx8e30saSgidGV4 dHBvc2l0aW9uIiksbi5jb2VyY2VGb250KGksInRleHRmb250IixyLmZvbnQpLGEubm9TZWxl Y3R8fChpKCJzZWxlY3RlZC50ZXh0Zm9udC5jb2xvciIpLGkoInVuc2VsZWN0ZWQudGV4dGZv bnQuY29sb3IiKSl9fSx7Ii4uLy4uL2xpYiI6NTAzfV0sOTU0OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vcmVnaXN0cnki KTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsYSl7dmFyIG8scz1hKCJ4IiksbD1hKCJ5Iik7 aWYoaS5nZXRDb21wb25lbnRNZXRob2QoImNhbGVuZGFycyIsImhhbmRsZVRyYWNlRGVmYXVs dHMiKSh0LGUsWyJ4IiwieSJdLHIpLHMpe3ZhciBjPW4ubWluUm93TGVuZ3RoKHMpO2w/bz1N YXRoLm1pbihjLG4ubWluUm93TGVuZ3RoKGwpKToobz1jLGEoInkwIiksYSgiZHkiKSl9ZWxz ZXtpZighbClyZXR1cm4gMDtvPW4ubWluUm93TGVuZ3RoKGwpLGEoIngwIiksYSgiZHgiKX1y ZXR1cm4gZS5fbGVuZ3RoPW8sb319LHsiLi4vLi4vbGliIjo1MDMsIi4uLy4uL3JlZ2lzdHJ5 Ijo2Mzh9XSw5NTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4v c2NhdHRlci9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUv YXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfZm9ybWF0X2F0 dHJpYnV0ZXMiKS5heGlzSG92ZXJGb3JtYXQsbz10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9h dHRyaWJ1dGVzIikuaG92ZXJ0ZW1wbGF0ZUF0dHJzLHM9dCgiLi4vLi4vcGxvdHMvdGVtcGxh dGVfYXR0cmlidXRlcyIpLnRleHR0ZW1wbGF0ZUF0dHJzLGw9dCgiLi4vLi4vcGxvdHMvYXR0 cmlidXRlcyIpLGM9dCgiLi4vLi4vY29uc3RhbnRzL2dsM2RfZGFzaGVzIiksdT10KCIuLi8u Li9jb25zdGFudHMvZ2wzZF9tYXJrZXJzIiksZj10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0 ZW5kRmxhdCxoPXQoIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiKS5vdmVycmlkZUFsbCxw PXQoIi4uLy4uL2xpYi9zb3J0X29iamVjdF9rZXlzIiksZD1uLmxpbmUsbT1uLm1hcmtlcixn PW0ubGluZSx2PWYoe3dpZHRoOmQud2lkdGgsZGFzaDp7dmFsVHlwZToiZW51bWVyYXRlZCIs dmFsdWVzOnAoYyksZGZsdDoic29saWQifX0saSgibGluZSIpKTt2YXIgeT1lLmV4cG9ydHM9 aCh7eDpuLngseTpuLnksejp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LHRleHQ6Zih7fSxuLnRl eHQse30pLHRleHR0ZW1wbGF0ZTpzKHt9LHt9KSxob3ZlcnRleHQ6Zih7fSxuLmhvdmVydGV4 dCx7fSksaG92ZXJ0ZW1wbGF0ZTpvKCkseGhvdmVyZm9ybWF0OmEoIngiKSx5aG92ZXJmb3Jt YXQ6YSgieSIpLHpob3ZlcmZvcm1hdDphKCJ6IiksbW9kZTpmKHt9LG4ubW9kZSx7ZGZsdDoi bGluZXMrbWFya2VycyJ9KSxzdXJmYWNlYXhpczp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFs dWVzOlstMSwwLDEsMl0sZGZsdDotMX0sc3VyZmFjZWNvbG9yOnt2YWxUeXBlOiJjb2xvciJ9 LHByb2plY3Rpb246e3g6e3Nob3c6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LG9wYWNp dHk6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEsZGZsdDoxfSxzY2FsZTp7dmFsVHlw ZToibnVtYmVyIixtaW46MCxtYXg6MTAsZGZsdDoyLzN9fSx5OntzaG93Ont2YWxUeXBlOiJi b29sZWFuIixkZmx0OiExfSxvcGFjaXR5Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDox LGRmbHQ6MX0sc2NhbGU6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsbWF4OjEwLGRmbHQ6Mi8z fX0sejp7c2hvdzp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sb3BhY2l0eTp7dmFsVHlw ZToibnVtYmVyIixtaW46MCxtYXg6MSxkZmx0OjF9LHNjYWxlOnt2YWxUeXBlOiJudW1iZXIi LG1pbjowLG1heDoxMCxkZmx0OjIvM319fSxjb25uZWN0Z2FwczpuLmNvbm5lY3RnYXBzLGxp bmU6dixtYXJrZXI6Zih7c3ltYm9sOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6cCh1 KSxkZmx0OiJjaXJjbGUiLGFycmF5T2s6ITB9LHNpemU6Zih7fSxtLnNpemUse2RmbHQ6OH0p LHNpemVyZWY6bS5zaXplcmVmLHNpemVtaW46bS5zaXplbWluLHNpemVtb2RlOm0uc2l6ZW1v ZGUsb3BhY2l0eTpmKHt9LG0ub3BhY2l0eSx7YXJyYXlPazohMX0pLGNvbG9yYmFyOm0uY29s b3JiYXIsbGluZTpmKHt3aWR0aDpmKHt9LGcud2lkdGgse2FycmF5T2s6ITF9KX0saSgibWFy a2VyLmxpbmUiKSl9LGkoIm1hcmtlciIpKSx0ZXh0cG9zaXRpb246Zih7fSxuLnRleHRwb3Np dGlvbix7ZGZsdDoidG9wIGNlbnRlciJ9KSx0ZXh0Zm9udDp7Y29sb3I6bi50ZXh0Zm9udC5j b2xvcixzaXplOm4udGV4dGZvbnQuc2l6ZSxmYW1pbHk6Zih7fSxuLnRleHRmb250LmZhbWls eSx7YXJyYXlPazohMX0pfSxvcGFjaXR5Omwub3BhY2l0eSxob3ZlcmluZm86Zih7fSxsLmhv dmVyaW5mbyl9LCJjYWxjIiwibmVzdGVkIik7eS54LmVkaXRUeXBlPXkueS5lZGl0VHlwZT15 LnouZWRpdFR5cGU9ImNhbGMrY2xlYXJBeGlzVHlwZXMifSx7Ii4uLy4uL2NvbXBvbmVudHMv Y29sb3JzY2FsZS9hdHRyaWJ1dGVzIjozNzMsIi4uLy4uL2NvbnN0YW50cy9nbDNkX2Rhc2hl cyI6NDc2LCIuLi8uLi9jb25zdGFudHMvZ2wzZF9tYXJrZXJzIjo0NzcsIi4uLy4uL2xpYi9l eHRlbmQiOjQ5MywiLi4vLi4vbGliL3NvcnRfb2JqZWN0X2tleXMiOjUyNiwiLi4vLi4vcGxv dF9hcGkvZWRpdF90eXBlcyI6NTM2LCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIjo1NTAsIi4u Ly4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2Zvcm1hdF9hdHRyaWJ1dGVzIjo1NTcsIi4uLy4u L3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjYzMywiLi4vc2NhdHRlci9hdHRyaWJ1dGVz Ijo5Mjd9XSw5NTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4v c2NhdHRlci9hcnJheXNfdG9fY2FsY2RhdGEiKSxpPXQoIi4uL3NjYXR0ZXIvY29sb3JzY2Fs ZV9jYWxjIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9W3t4OiExLHk6ITEsdHJh Y2U6ZSx0Ont9fV07cmV0dXJuIG4ocixlKSxpKHQsZSkscn19LHsiLi4vc2NhdHRlci9hcnJh eXNfdG9fY2FsY2RhdGEiOjkyNiwiLi4vc2NhdHRlci9jb2xvcnNjYWxlX2NhbGMiOjkzMH1d LDk1NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9yZWdp c3RyeSIpO2Z1bmN0aW9uIGkodCxlLHIsaSl7aWYoIWV8fCFlLnZpc2libGUpcmV0dXJuIG51 bGw7Zm9yKHZhciBhPW4uZ2V0Q29tcG9uZW50TWV0aG9kKCJlcnJvcmJhcnMiLCJtYWtlQ29t cHV0ZUVycm9yIikoZSksbz1uZXcgQXJyYXkodC5sZW5ndGgpLHM9MDtzPHQubGVuZ3RoO3Mr Kyl7dmFyIGw9YSgrdFtzXSxzKTtpZigibG9nIj09PWkudHlwZSl7dmFyIGM9aS5jMmwodFtz XSksdT10W3NdLWxbMF0sZj10W3NdK2xbMV07aWYob1tzXT1bKGkuYzJsKHUsITApLWMpKnIs KGkuYzJsKGYsITApLWMpKnJdLHU+MCl7dmFyIGg9aS5jMmwodSk7aS5fbG93ZXJMb2dFcnJv ckJvdW5kfHwoaS5fbG93ZXJMb2dFcnJvckJvdW5kPWgpLGkuX2xvd2VyRXJyb3JCb3VuZD1N YXRoLm1pbihpLl9sb3dlckxvZ0Vycm9yQm91bmQsaCl9fWVsc2Ugb1tzXT1bLWxbMF0qcixs WzFdKnJdfXJldHVybiBvfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIG49W2kodC54 LHQuZXJyb3JfeCxlWzBdLHIueGF4aXMpLGkodC55LHQuZXJyb3JfeSxlWzFdLHIueWF4aXMp LGkodC56LHQuZXJyb3JfeixlWzJdLHIuemF4aXMpXSxhPWZ1bmN0aW9uKHQpe2Zvcih2YXIg ZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV0pcmV0dXJuIHRbZV0ubGVuZ3RoO3JldHVybiAw fShuKTtpZigwPT09YSlyZXR1cm4gbnVsbDtmb3IodmFyIG89bmV3IEFycmF5KGEpLHM9MDtz PGE7cysrKXtmb3IodmFyIGw9W1swLDAsMF0sWzAsMCwwXV0sYz0wO2M8MztjKyspaWYobltj XSlmb3IodmFyIHU9MDt1PDI7dSsrKWxbdV1bY109bltjXVtzXVt1XTtvW3NdPWx9cmV0dXJu IG99fSx7Ii4uLy4uL3JlZ2lzdHJ5Ijo2Mzh9XSw5NTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiLi4vLi4vLi4vc3RhY2tnbF9tb2R1bGVzIikuZ2xfbGluZTNk LGk9dCgiLi4vLi4vLi4vc3RhY2tnbF9tb2R1bGVzIikuZ2xfc2NhdHRlcjNkLGE9dCgiLi4v Li4vLi4vc3RhY2tnbF9tb2R1bGVzIikuZ2xfZXJyb3IzZCxvPXQoIi4uLy4uLy4uL3N0YWNr Z2xfbW9kdWxlcyIpLmdsX21lc2gzZCxzPXQoIi4uLy4uLy4uL3N0YWNrZ2xfbW9kdWxlcyIp LmRlbGF1bmF5X3RyaWFuZ3VsYXRlLGw9dCgiLi4vLi4vbGliIiksYz10KCIuLi8uLi9saWIv c3RyMnJnYmFycmF5IiksdT10KCIuLi8uLi9saWIvZ2xfZm9ybWF0X2NvbG9yIikuZm9ybWF0 Q29sb3IsZj10KCIuLi9zY2F0dGVyL21ha2VfYnViYmxlX3NpemVfZnVuYyIpLGg9dCgiLi4v Li4vY29uc3RhbnRzL2dsM2RfZGFzaGVzIikscD10KCIuLi8uLi9jb25zdGFudHMvZ2wzZF9t YXJrZXJzIiksZD10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLG09dCgiLi4vLi4v Y29tcG9uZW50cy9meC9oZWxwZXJzIikuYXBwZW5kQXJyYXlQb2ludFZhbHVlLGc9dCgiLi9j YWxjX2Vycm9ycyIpO2Z1bmN0aW9uIHYodCxlKXt0aGlzLnNjZW5lPXQsdGhpcy51aWQ9ZSx0 aGlzLmxpbmVQbG90PW51bGwsdGhpcy5zY2F0dGVyUGxvdD1udWxsLHRoaXMuZXJyb3JCYXJz PW51bGwsdGhpcy50ZXh0TWFya2Vycz1udWxsLHRoaXMuZGVsYXVuYXlNZXNoPW51bGwsdGhp cy5jb2xvcj1udWxsLHRoaXMubW9kZT0iIix0aGlzLmRhdGFQb2ludHM9W10sdGhpcy5heGVz Qm91bmRzPVtbLTEvMCwtMS8wLC0xLzBdLFsxLzAsMS8wLDEvMF1dLHRoaXMudGV4dExhYmVs cz1udWxsLHRoaXMuZGF0YT1udWxsfXZhciB5PXYucHJvdG90eXBlO2Z1bmN0aW9uIHgodCl7 cmV0dXJuIG51bGw9PXQ/MDp0LmluZGV4T2YoImxlZnQiKT4tMT8tMTp0LmluZGV4T2YoInJp Z2h0Iik+LTE/MTowfWZ1bmN0aW9uIGIodCl7cmV0dXJuIG51bGw9PXQ/MDp0LmluZGV4T2Yo InRvcCIpPi0xPy0xOnQuaW5kZXhPZigiYm90dG9tIik+LTE/MTowfWZ1bmN0aW9uIF8odCxl KXtyZXR1cm4gZSg0KnQpfWZ1bmN0aW9uIHcodCl7cmV0dXJuIHBbdF19ZnVuY3Rpb24gVCh0 LGUscixuLGkpe3ZhciBhPW51bGw7aWYobC5pc0FycmF5T3JUeXBlZEFycmF5KHQpKXthPVtd O2Zvcih2YXIgbz0wO288ZTtvKyspdm9pZCAwPT09dFtvXT9hW29dPW46YVtvXT1yKHRbb10s aSl9ZWxzZSBhPXIodCxsLmlkZW50aXR5KTtyZXR1cm4gYX1mdW5jdGlvbiBrKHQsZSl7dmFy IHIsbixpLGEsbyxzLGg9W10scD10LmZ1bGxTY2VuZUxheW91dCx2PXQuZGF0YVNjYWxlLHk9 cC54YXhpcyxrPXAueWF4aXMsQT1wLnpheGlzLE09ZS5tYXJrZXIsUz1lLmxpbmUsRT1lLnh8 fFtdLEw9ZS55fHxbXSxDPWUuenx8W10sUD1FLmxlbmd0aCxJPWUueGNhbGVuZGFyLE89ZS55 Y2FsZW5kYXIsej1lLnpjYWxlbmRhcjtmb3Iobz0wO288UDtvKyspcj15LmQybChFW29dLDAs SSkqdlswXSxuPWsuZDJsKExbb10sMCxPKSp2WzFdLGk9QS5kMmwoQ1tvXSwwLHopKnZbMl0s aFtvXT1bcixuLGldO2lmKEFycmF5LmlzQXJyYXkoZS50ZXh0KSlzPWUudGV4dDtlbHNlIGlm KHZvaWQgMCE9PWUudGV4dClmb3Iocz1uZXcgQXJyYXkoUCksbz0wO288UDtvKyspc1tvXT1l LnRleHQ7ZnVuY3Rpb24gRCh0LGUpe3ZhciByPXBbdF07cmV0dXJuIGQudGlja1RleHQocixy LmQybChlKSwhMCkudGV4dH12YXIgUj1lLnRleHR0ZW1wbGF0ZTtpZihSKXt2YXIgRj10LmZ1 bGxMYXlvdXQuX2QzbG9jYWxlLEI9QXJyYXkuaXNBcnJheShSKSxOPUI/TWF0aC5taW4oUi5s ZW5ndGgsUCk6UCxqPUI/ZnVuY3Rpb24odCl7cmV0dXJuIFJbdF19OmZ1bmN0aW9uKCl7cmV0 dXJuIFJ9O2ZvcihzPW5ldyBBcnJheShOKSxvPTA7bzxOO28rKyl7dmFyIFU9e3g6RVtvXSx5 Okxbb10sejpDW29dfSxWPXt4TGFiZWw6RCgieGF4aXMiLEVbb10pLHlMYWJlbDpEKCJ5YXhp cyIsTFtvXSksekxhYmVsOkQoInpheGlzIixDW29dKX0sSD17fTttKEgsZSxvKTt2YXIgcT1l Ll9tZXRhfHx7fTtzW29dPWwudGV4dHRlbXBsYXRlU3RyaW5nKGoobyksVixGLEgsVSxxKX19 aWYoYT17cG9zaXRpb246aCxtb2RlOmUubW9kZSx0ZXh0OnN9LCJsaW5lImluIGUmJihhLmxp bmVDb2xvcj11KFMsMSxQKSxhLmxpbmVXaWR0aD1TLndpZHRoLGEubGluZURhc2hlcz1TLmRh c2gpLCJtYXJrZXIiaW4gZSl7dmFyIEc9ZihlKTthLnNjYXR0ZXJDb2xvcj11KE0sMSxQKSxh LnNjYXR0ZXJTaXplPVQoTS5zaXplLFAsXywyMCxHKSxhLnNjYXR0ZXJNYXJrZXI9VChNLnN5 bWJvbCxQLHcsIlx1MjVjZiIpLGEuc2NhdHRlckxpbmVXaWR0aD1NLmxpbmUud2lkdGgsYS5z Y2F0dGVyTGluZUNvbG9yPXUoTS5saW5lLDEsUCksYS5zY2F0dGVyQW5nbGU9MH0idGV4dHBv c2l0aW9uImluIGUmJihhLnRleHRPZmZzZXQ9ZnVuY3Rpb24odCl7dmFyIGU9WzAsMF07aWYo QXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyllW3JdPVswLDBd LHRbcl0mJihlW3JdWzBdPXgodFtyXSksZVtyXVsxXT1iKHRbcl0pKTtlbHNlIGVbMF09eCh0 KSxlWzFdPWIodCk7cmV0dXJuIGV9KGUudGV4dHBvc2l0aW9uKSxhLnRleHRDb2xvcj11KGUu dGV4dGZvbnQsMSxQKSxhLnRleHRTaXplPVQoZS50ZXh0Zm9udC5zaXplLFAsbC5pZGVudGl0 eSwxMiksYS50ZXh0Rm9udD1lLnRleHRmb250LmZhbWlseSxhLnRleHRBbmdsZT0wKTt2YXIg WT1bIngiLCJ5IiwieiJdO2ZvcihhLnByb2plY3Q9WyExLCExLCExXSxhLnByb2plY3RTY2Fs ZT1bMSwxLDFdLGEucHJvamVjdE9wYWNpdHk9WzEsMSwxXSxvPTA7bzwzOysrbyl7dmFyIFc9 ZS5wcm9qZWN0aW9uW1lbb11dOyhhLnByb2plY3Rbb109Vy5zaG93KSYmKGEucHJvamVjdE9w YWNpdHlbb109Vy5vcGFjaXR5LGEucHJvamVjdFNjYWxlW29dPVcuc2NhbGUpfWEuZXJyb3JC b3VuZHM9ZyhlLHYscCk7dmFyIFg9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVswLDAsMF0scj1b WzAsMCwwXSxbMCwwLDBdLFswLDAsMF1dLG49WzEsMSwxXSxpPTA7aTwzO2krKyl7dmFyIGE9 dFtpXTthJiYhMSE9PWEuY29weV96c3R5bGUmJiExIT09dFsyXS52aXNpYmxlJiYoYT10WzJd KSxhJiZhLnZpc2libGUmJihlW2ldPWEud2lkdGgvMixyW2ldPWMoYS5jb2xvciksbltpXT1h LnRoaWNrbmVzcyl9cmV0dXJue2NhcFNpemU6ZSxjb2xvcjpyLGxpbmVXaWR0aDpufX0oW2Uu ZXJyb3JfeCxlLmVycm9yX3ksZS5lcnJvcl96XSk7cmV0dXJuIGEuZXJyb3JDb2xvcj1YLmNv bG9yLGEuZXJyb3JMaW5lV2lkdGg9WC5saW5lV2lkdGgsYS5lcnJvckNhcFNpemU9WC5jYXBT aXplLGEuZGVsYXVuYXlBeGlzPWUuc3VyZmFjZWF4aXMsYS5kZWxhdW5heUNvbG9yPWMoZS5z dXJmYWNlY29sb3IpLGF9ZnVuY3Rpb24gQSh0KXtpZihsLmlzQXJyYXlPclR5cGVkQXJyYXko dCkpe3ZhciBlPXRbMF07cmV0dXJuIGwuaXNBcnJheU9yVHlwZWRBcnJheShlKSYmKHQ9ZSks InJnYigiK3Quc2xpY2UoMCwzKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5k KDI1NSp0KX0pKSsiKSJ9cmV0dXJuIG51bGx9ZnVuY3Rpb24gTSh0KXtyZXR1cm4gbC5pc0Fy cmF5T3JUeXBlZEFycmF5KHQpPzQ9PT10Lmxlbmd0aCYmIm51bWJlciI9PXR5cGVvZiB0WzBd P0EodCk6dC5tYXAoQSk6bnVsbH15LmhhbmRsZVBpY2s9ZnVuY3Rpb24odCl7aWYodC5vYmpl Y3QmJih0Lm9iamVjdD09PXRoaXMubGluZVBsb3R8fHQub2JqZWN0PT09dGhpcy5kZWxhdW5h eU1lc2h8fHQub2JqZWN0PT09dGhpcy50ZXh0TWFya2Vyc3x8dC5vYmplY3Q9PT10aGlzLnNj YXR0ZXJQbG90KSl7dmFyIGU9dC5pbmRleD10LmRhdGEuaW5kZXg7cmV0dXJuIHQub2JqZWN0 LmhpZ2hsaWdodCYmdC5vYmplY3QuaGlnaGxpZ2h0KG51bGwpLHRoaXMuc2NhdHRlclBsb3Qm Jih0Lm9iamVjdD10aGlzLnNjYXR0ZXJQbG90LHRoaXMuc2NhdHRlclBsb3QuaGlnaGxpZ2h0 KHQuZGF0YSkpLHQudGV4dExhYmVsPSIiLHRoaXMudGV4dExhYmVscyYmKEFycmF5LmlzQXJy YXkodGhpcy50ZXh0TGFiZWxzKT8odGhpcy50ZXh0TGFiZWxzW2VdfHwwPT09dGhpcy50ZXh0 TGFiZWxzW2VdKSYmKHQudGV4dExhYmVsPXRoaXMudGV4dExhYmVsc1tlXSk6dC50ZXh0TGFi ZWw9dGhpcy50ZXh0TGFiZWxzKSx0LnRyYWNlQ29vcmRpbmF0ZT1bdGhpcy5kYXRhLnhbZV0s dGhpcy5kYXRhLnlbZV0sdGhpcy5kYXRhLnpbZV1dLCEwfX0seS51cGRhdGU9ZnVuY3Rpb24o dCl7dmFyIGUscixsLGMsdT10aGlzLnNjZW5lLmdscGxvdC5nbCxmPWguc29saWQ7dGhpcy5k YXRhPXQ7dmFyIHA9ayh0aGlzLnNjZW5lLHQpOyJtb2RlImluIHAmJih0aGlzLm1vZGU9cC5t b2RlKSwibGluZURhc2hlcyJpbiBwJiZwLmxpbmVEYXNoZXMgaW4gaCYmKGY9aFtwLmxpbmVE YXNoZXNdKSx0aGlzLmNvbG9yPU0ocC5zY2F0dGVyQ29sb3IpfHxNKHAubGluZUNvbG9yKSx0 aGlzLmRhdGFQb2ludHM9cC5wb3NpdGlvbixlPXtnbDp0aGlzLnNjZW5lLmdscGxvdC5nbCxw b3NpdGlvbjpwLnBvc2l0aW9uLGNvbG9yOnAubGluZUNvbG9yLGxpbmVXaWR0aDpwLmxpbmVX aWR0aHx8MSxkYXNoZXM6ZlswXSxkYXNoU2NhbGU6ZlsxXSxvcGFjaXR5OnQub3BhY2l0eSxj b25uZWN0R2Fwczp0LmNvbm5lY3RnYXBzfSwtMSE9PXRoaXMubW9kZS5pbmRleE9mKCJsaW5l cyIpP3RoaXMubGluZVBsb3Q/dGhpcy5saW5lUGxvdC51cGRhdGUoZSk6KHRoaXMubGluZVBs b3Q9bihlKSx0aGlzLmxpbmVQbG90Ll90cmFjZT10aGlzLHRoaXMuc2NlbmUuZ2xwbG90LmFk ZCh0aGlzLmxpbmVQbG90KSk6dGhpcy5saW5lUGxvdCYmKHRoaXMuc2NlbmUuZ2xwbG90LnJl bW92ZSh0aGlzLmxpbmVQbG90KSx0aGlzLmxpbmVQbG90LmRpc3Bvc2UoKSx0aGlzLmxpbmVQ bG90PW51bGwpO3ZhciBkPXQub3BhY2l0eTtpZih0Lm1hcmtlciYmdC5tYXJrZXIub3BhY2l0 eSYmKGQqPXQubWFya2VyLm9wYWNpdHkpLHI9e2dsOnRoaXMuc2NlbmUuZ2xwbG90LmdsLHBv c2l0aW9uOnAucG9zaXRpb24sY29sb3I6cC5zY2F0dGVyQ29sb3Isc2l6ZTpwLnNjYXR0ZXJT aXplLGdseXBoOnAuc2NhdHRlck1hcmtlcixvcGFjaXR5OmQsb3J0aG9ncmFwaGljOiEwLGxp bmVXaWR0aDpwLnNjYXR0ZXJMaW5lV2lkdGgsbGluZUNvbG9yOnAuc2NhdHRlckxpbmVDb2xv cixwcm9qZWN0OnAucHJvamVjdCxwcm9qZWN0U2NhbGU6cC5wcm9qZWN0U2NhbGUscHJvamVj dE9wYWNpdHk6cC5wcm9qZWN0T3BhY2l0eX0sLTEhPT10aGlzLm1vZGUuaW5kZXhPZigibWFy a2VycyIpP3RoaXMuc2NhdHRlclBsb3Q/dGhpcy5zY2F0dGVyUGxvdC51cGRhdGUocik6KHRo aXMuc2NhdHRlclBsb3Q9aShyKSx0aGlzLnNjYXR0ZXJQbG90Ll90cmFjZT10aGlzLHRoaXMu c2NhdHRlclBsb3QuaGlnaGxpZ2h0U2NhbGU9MSx0aGlzLnNjZW5lLmdscGxvdC5hZGQodGhp cy5zY2F0dGVyUGxvdCkpOnRoaXMuc2NhdHRlclBsb3QmJih0aGlzLnNjZW5lLmdscGxvdC5y ZW1vdmUodGhpcy5zY2F0dGVyUGxvdCksdGhpcy5zY2F0dGVyUGxvdC5kaXNwb3NlKCksdGhp cy5zY2F0dGVyUGxvdD1udWxsKSxjPXtnbDp0aGlzLnNjZW5lLmdscGxvdC5nbCxwb3NpdGlv bjpwLnBvc2l0aW9uLGdseXBoOnAudGV4dCxjb2xvcjpwLnRleHRDb2xvcixzaXplOnAudGV4 dFNpemUsYW5nbGU6cC50ZXh0QW5nbGUsYWxpZ25tZW50OnAudGV4dE9mZnNldCxmb250OnAu dGV4dEZvbnQsb3J0aG9ncmFwaGljOiEwLGxpbmVXaWR0aDowLHByb2plY3Q6ITEsb3BhY2l0 eTp0Lm9wYWNpdHl9LHRoaXMudGV4dExhYmVscz10LmhvdmVydGV4dHx8dC50ZXh0LC0xIT09 dGhpcy5tb2RlLmluZGV4T2YoInRleHQiKT90aGlzLnRleHRNYXJrZXJzP3RoaXMudGV4dE1h cmtlcnMudXBkYXRlKGMpOih0aGlzLnRleHRNYXJrZXJzPWkoYyksdGhpcy50ZXh0TWFya2Vy cy5fdHJhY2U9dGhpcyx0aGlzLnRleHRNYXJrZXJzLmhpZ2hsaWdodFNjYWxlPTEsdGhpcy5z Y2VuZS5nbHBsb3QuYWRkKHRoaXMudGV4dE1hcmtlcnMpKTp0aGlzLnRleHRNYXJrZXJzJiYo dGhpcy5zY2VuZS5nbHBsb3QucmVtb3ZlKHRoaXMudGV4dE1hcmtlcnMpLHRoaXMudGV4dE1h cmtlcnMuZGlzcG9zZSgpLHRoaXMudGV4dE1hcmtlcnM9bnVsbCksbD17Z2w6dGhpcy5zY2Vu ZS5nbHBsb3QuZ2wscG9zaXRpb246cC5wb3NpdGlvbixjb2xvcjpwLmVycm9yQ29sb3IsZXJy b3I6cC5lcnJvckJvdW5kcyxsaW5lV2lkdGg6cC5lcnJvckxpbmVXaWR0aCxjYXBTaXplOnAu ZXJyb3JDYXBTaXplLG9wYWNpdHk6dC5vcGFjaXR5fSx0aGlzLmVycm9yQmFycz9wLmVycm9y Qm91bmRzP3RoaXMuZXJyb3JCYXJzLnVwZGF0ZShsKToodGhpcy5zY2VuZS5nbHBsb3QucmVt b3ZlKHRoaXMuZXJyb3JCYXJzKSx0aGlzLmVycm9yQmFycy5kaXNwb3NlKCksdGhpcy5lcnJv ckJhcnM9bnVsbCk6cC5lcnJvckJvdW5kcyYmKHRoaXMuZXJyb3JCYXJzPWEobCksdGhpcy5l cnJvckJhcnMuX3RyYWNlPXRoaXMsdGhpcy5zY2VuZS5nbHBsb3QuYWRkKHRoaXMuZXJyb3JC YXJzKSkscC5kZWxhdW5heUF4aXM+PTApe3ZhciBtPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixp PShyKzEpJTMsYT0ocisyKSUzLG89W10sbD1bXTtmb3Iobj0wO248dC5sZW5ndGg7KytuKXt2 YXIgYz10W25dOyFpc05hTihjW2ldKSYmaXNGaW5pdGUoY1tpXSkmJiFpc05hTihjW2FdKSYm aXNGaW5pdGUoY1thXSkmJihvLnB1c2goW2NbaV0sY1thXV0pLGwucHVzaChuKSl9dmFyIHU9 cyhvKTtmb3Iobj0wO248dS5sZW5ndGg7KytuKWZvcih2YXIgZj11W25dLGg9MDtoPGYubGVu Z3RoOysraClmW2hdPWxbZltoXV07cmV0dXJue3Bvc2l0aW9uczp0LGNlbGxzOnUsbWVzaENv bG9yOmV9fShwLnBvc2l0aW9uLHAuZGVsYXVuYXlDb2xvcixwLmRlbGF1bmF5QXhpcyk7bS5v cGFjaXR5PXQub3BhY2l0eSx0aGlzLmRlbGF1bmF5TWVzaD90aGlzLmRlbGF1bmF5TWVzaC51 cGRhdGUobSk6KG0uZ2w9dSx0aGlzLmRlbGF1bmF5TWVzaD1vKG0pLHRoaXMuZGVsYXVuYXlN ZXNoLl90cmFjZT10aGlzLHRoaXMuc2NlbmUuZ2xwbG90LmFkZCh0aGlzLmRlbGF1bmF5TWVz aCkpfWVsc2UgdGhpcy5kZWxhdW5heU1lc2gmJih0aGlzLnNjZW5lLmdscGxvdC5yZW1vdmUo dGhpcy5kZWxhdW5heU1lc2gpLHRoaXMuZGVsYXVuYXlNZXNoLmRpc3Bvc2UoKSx0aGlzLmRl bGF1bmF5TWVzaD1udWxsKX0seS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5saW5lUGxvdCYm KHRoaXMuc2NlbmUuZ2xwbG90LnJlbW92ZSh0aGlzLmxpbmVQbG90KSx0aGlzLmxpbmVQbG90 LmRpc3Bvc2UoKSksdGhpcy5zY2F0dGVyUGxvdCYmKHRoaXMuc2NlbmUuZ2xwbG90LnJlbW92 ZSh0aGlzLnNjYXR0ZXJQbG90KSx0aGlzLnNjYXR0ZXJQbG90LmRpc3Bvc2UoKSksdGhpcy5l cnJvckJhcnMmJih0aGlzLnNjZW5lLmdscGxvdC5yZW1vdmUodGhpcy5lcnJvckJhcnMpLHRo aXMuZXJyb3JCYXJzLmRpc3Bvc2UoKSksdGhpcy50ZXh0TWFya2VycyYmKHRoaXMuc2NlbmUu Z2xwbG90LnJlbW92ZSh0aGlzLnRleHRNYXJrZXJzKSx0aGlzLnRleHRNYXJrZXJzLmRpc3Bv c2UoKSksdGhpcy5kZWxhdW5heU1lc2gmJih0aGlzLnNjZW5lLmdscGxvdC5yZW1vdmUodGhp cy5kZWxhdW5heU1lc2gpLHRoaXMuZGVsYXVuYXlNZXNoLmRpc3Bvc2UoKSl9LGUuZXhwb3J0 cz1mdW5jdGlvbih0LGUpe3ZhciByPW5ldyB2KHQsZS51aWQpO3JldHVybiByLnVwZGF0ZShl KSxyfX0seyIuLi8uLi8uLi9zdGFja2dsX21vZHVsZXMiOjExMjQsIi4uLy4uL2NvbXBvbmVu dHMvZngvaGVscGVycyI6NDAyLCIuLi8uLi9jb25zdGFudHMvZ2wzZF9kYXNoZXMiOjQ3Niwi Li4vLi4vY29uc3RhbnRzL2dsM2RfbWFya2VycyI6NDc3LCIuLi8uLi9saWIiOjUwMywiLi4v Li4vbGliL2dsX2Zvcm1hdF9jb2xvciI6NDk5LCIuLi8uLi9saWIvc3RyMnJnYmFycmF5Ijo1 MjgsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo1NTQsIi4uL3NjYXR0ZXIvbWFrZV9i dWJibGVfc2l6ZV9mdW5jIjo5NDQsIi4vY2FsY19lcnJvcnMiOjk1N31dLDk1OTpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9yZWdpc3RyeSIpLGk9dCgi Li4vLi4vbGliIiksYT10KCIuLi9zY2F0dGVyL3N1YnR5cGVzIiksbz10KCIuLi9zY2F0dGVy L21hcmtlcl9kZWZhdWx0cyIpLHM9dCgiLi4vc2NhdHRlci9saW5lX2RlZmF1bHRzIiksbD10 KCIuLi9zY2F0dGVyL3RleHRfZGVmYXVsdHMiKSxjPXQoIi4vYXR0cmlidXRlcyIpO2UuZXhw b3J0cz1mdW5jdGlvbih0LGUscix1KXtmdW5jdGlvbiBmKHIsbil7cmV0dXJuIGkuY29lcmNl KHQsZSxjLHIsbil9aWYoZnVuY3Rpb24odCxlLHIsaSl7dmFyIGE9MCxvPXIoIngiKSxzPXIo InkiKSxsPXIoInoiKTtuLmdldENvbXBvbmVudE1ldGhvZCgiY2FsZW5kYXJzIiwiaGFuZGxl VHJhY2VEZWZhdWx0cyIpKHQsZSxbIngiLCJ5IiwieiJdLGkpLG8mJnMmJmwmJihhPU1hdGgu bWluKG8ubGVuZ3RoLHMubGVuZ3RoLGwubGVuZ3RoKSxlLl9sZW5ndGg9ZS5feGxlbmd0aD1l Ll95bGVuZ3RoPWUuX3psZW5ndGg9YSk7cmV0dXJuIGF9KHQsZSxmLHUpKXtmKCJ0ZXh0Iiks ZigiaG92ZXJ0ZXh0IiksZigiaG92ZXJ0ZW1wbGF0ZSIpLGYoInhob3ZlcmZvcm1hdCIpLGYo Inlob3ZlcmZvcm1hdCIpLGYoInpob3ZlcmZvcm1hdCIpLGYoIm1vZGUiKSxhLmhhc0xpbmVz KGUpJiYoZigiY29ubmVjdGdhcHMiKSxzKHQsZSxyLHUsZikpLGEuaGFzTWFya2VycyhlKSYm byh0LGUscix1LGYse25vU2VsZWN0OiEwfSksYS5oYXNUZXh0KGUpJiYoZigidGV4dHRlbXBs YXRlIiksbCh0LGUsdSxmLHtub1NlbGVjdDohMH0pKTt2YXIgaD0oZS5saW5lfHx7fSkuY29s b3IscD0oZS5tYXJrZXJ8fHt9KS5jb2xvcjtmKCJzdXJmYWNlYXhpcyIpPj0wJiZmKCJzdXJm YWNlY29sb3IiLGh8fHApO2Zvcih2YXIgZD1bIngiLCJ5IiwieiJdLG09MDttPDM7KyttKXt2 YXIgZz0icHJvamVjdGlvbi4iK2RbbV07ZihnKyIuc2hvdyIpJiYoZihnKyIub3BhY2l0eSIp LGYoZysiLnNjYWxlIikpfXZhciB2PW4uZ2V0Q29tcG9uZW50TWV0aG9kKCJlcnJvcmJhcnMi LCJzdXBwbHlEZWZhdWx0cyIpO3YodCxlLGh8fHB8fHIse2F4aXM6InoifSksdih0LGUsaHx8 cHx8cix7YXhpczoieSIsaW5oZXJpdDoieiJ9KSx2KHQsZSxofHxwfHxyLHtheGlzOiJ4Iixp bmhlcml0OiJ6In0pfWVsc2UgZS52aXNpYmxlPSExfX0seyIuLi8uLi9saWIiOjUwMywiLi4v Li4vcmVnaXN0cnkiOjYzOCwiLi4vc2NhdHRlci9saW5lX2RlZmF1bHRzIjo5NDAsIi4uL3Nj YXR0ZXIvbWFya2VyX2RlZmF1bHRzIjo5NDYsIi4uL3NjYXR0ZXIvc3VidHlwZXMiOjk1Miwi Li4vc2NhdHRlci90ZXh0X2RlZmF1bHRzIjo5NTMsIi4vYXR0cmlidXRlcyI6OTU1fV0sOTYw OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17cGxvdDp0KCIuL2Nv bnZlcnQiKSxhdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLG1hcmtlclN5bWJvbHM6dCgi Li4vLi4vY29uc3RhbnRzL2dsM2RfbWFya2VycyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVm YXVsdHMiKSxjb2xvcmJhcjpbe2NvbnRhaW5lcjoibWFya2VyIixtaW46ImNtaW4iLG1heDoi Y21heCJ9LHtjb250YWluZXI6ImxpbmUiLG1pbjoiY21pbiIsbWF4OiJjbWF4In1dLGNhbGM6 dCgiLi9jYWxjIiksbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6InNjYXR0ZXIzZCIsYmFzZVBs b3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvZ2wzZCIpLGNhdGVnb3JpZXM6WyJnbDNkIiwic3lt Ym9scyIsInNob3dMZWdlbmQiLCJzY2F0dGVyLWxpa2UiXSxtZXRhOnt9fX0seyIuLi8uLi9j b25zdGFudHMvZ2wzZF9tYXJrZXJzIjo0NzcsIi4uLy4uL3Bsb3RzL2dsM2QiOjU5OCwiLi9h dHRyaWJ1dGVzIjo5NTUsIi4vY2FsYyI6OTU2LCIuL2NvbnZlcnQiOjk1OCwiLi9kZWZhdWx0 cyI6OTU5fV0sOTYxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4u L3NjYXR0ZXIvYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyIpLGE9 dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVydGVtcGxhdGVBdHRy cyxvPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS50ZXh0dGVtcGxhdGVB dHRycyxzPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIiksbD10 KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxjPW4ubWFya2VyLHU9bi5saW5lLGY9 Yy5saW5lO2UuZXhwb3J0cz17Y2FycGV0Ont2YWxUeXBlOiJzdHJpbmciLGVkaXRUeXBlOiJj YWxjIn0sYTp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5cGU6ImNhbGMifSxiOnt2YWxU eXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LG1vZGU6bCh7fSxuLm1vZGUse2Rm bHQ6Im1hcmtlcnMifSksdGV4dDpsKHt9LG4udGV4dCx7fSksdGV4dHRlbXBsYXRlOm8oe2Vk aXRUeXBlOiJwbG90In0se2tleXM6WyJhIiwiYiIsInRleHQiXX0pLGhvdmVydGV4dDpsKHt9 LG4uaG92ZXJ0ZXh0LHt9KSxsaW5lOntjb2xvcjp1LmNvbG9yLHdpZHRoOnUud2lkdGgsZGFz aDp1LmRhc2gsc2hhcGU6bCh7fSx1LnNoYXBlLHt2YWx1ZXM6WyJsaW5lYXIiLCJzcGxpbmUi XX0pLHNtb290aGluZzp1LnNtb290aGluZyxlZGl0VHlwZToiY2FsYyJ9LGNvbm5lY3RnYXBz Om4uY29ubmVjdGdhcHMsZmlsbDpsKHt9LG4uZmlsbCx7dmFsdWVzOlsibm9uZSIsInRvc2Vs ZiIsInRvbmV4dCJdLGRmbHQ6Im5vbmUifSksZmlsbGNvbG9yOm4uZmlsbGNvbG9yLG1hcmtl cjpsKHtzeW1ib2w6Yy5zeW1ib2wsb3BhY2l0eTpjLm9wYWNpdHksbWF4ZGlzcGxheWVkOmMu bWF4ZGlzcGxheWVkLHNpemU6Yy5zaXplLHNpemVyZWY6Yy5zaXplcmVmLHNpemVtaW46Yy5z aXplbWluLHNpemVtb2RlOmMuc2l6ZW1vZGUsbGluZTpsKHt3aWR0aDpmLndpZHRoLGVkaXRU eXBlOiJjYWxjIn0scygibWFya2VyLmxpbmUiKSksZ3JhZGllbnQ6Yy5ncmFkaWVudCxlZGl0 VHlwZToiY2FsYyJ9LHMoIm1hcmtlciIpKSx0ZXh0Zm9udDpuLnRleHRmb250LHRleHRwb3Np dGlvbjpuLnRleHRwb3NpdGlvbixzZWxlY3RlZDpuLnNlbGVjdGVkLHVuc2VsZWN0ZWQ6bi51 bnNlbGVjdGVkLGhvdmVyaW5mbzpsKHt9LGkuaG92ZXJpbmZvLHtmbGFnczpbImEiLCJiIiwi dGV4dCIsIm5hbWUiXX0pLGhvdmVyb246bi5ob3Zlcm9uLGhvdmVydGVtcGxhdGU6YSgpfX0s eyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyI6MzczLCIuLi8uLi9s aWIvZXh0ZW5kIjo0OTMsIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjU1MCwiLi4vLi4vcGxv dHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6NjMzLCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiOjky N31dLDk2MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlz bnVtZXJpYyIpLGk9dCgiLi4vc2NhdHRlci9jb2xvcnNjYWxlX2NhbGMiKSxhPXQoIi4uL3Nj YXR0ZXIvYXJyYXlzX3RvX2NhbGNkYXRhIiksbz10KCIuLi9zY2F0dGVyL2NhbGNfc2VsZWN0 aW9uIikscz10KCIuLi9zY2F0dGVyL2NhbGMiKS5jYWxjTWFya2VyU2l6ZSxsPXQoIi4uL2Nh cnBldC9sb29rdXBfY2FycGV0aWQiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1l Ll9jYXJwZXRUcmFjZT1sKHQsZSk7aWYociYmci52aXNpYmxlJiYibGVnZW5kb25seSIhPT1y LnZpc2libGUpe3ZhciBjO2UueGF4aXM9ci54YXhpcyxlLnlheGlzPXIueWF4aXM7dmFyIHUs ZixoPWUuX2xlbmd0aCxwPW5ldyBBcnJheShoKSxkPSExO2ZvcihjPTA7YzxoO2MrKylpZih1 PWUuYVtjXSxmPWUuYltjXSxuKHUpJiZuKGYpKXt2YXIgbT1yLmFiMnh5KCt1LCtmLCEwKSxn PXIuaXNWaXNpYmxlKCt1LCtmKTtnfHwoZD0hMCkscFtjXT17eDptWzBdLHk6bVsxXSxhOnUs YjpmLHZpczpnfX1lbHNlIHBbY109e3g6ITEseTohMX07cmV0dXJuIGUuX25lZWRzQ3VsbD1k LHBbMF0uY2FycGV0PXIscFswXS50cmFjZT1lLHMoZSxoKSxpKHQsZSksYShwLGUpLG8ocCxl KSxwfX19LHsiLi4vY2FycGV0L2xvb2t1cF9jYXJwZXRpZCI6NzA4LCIuLi9zY2F0dGVyL2Fy cmF5c190b19jYWxjZGF0YSI6OTI2LCIuLi9zY2F0dGVyL2NhbGMiOjkyOCwiLi4vc2NhdHRl ci9jYWxjX3NlbGVjdGlvbiI6OTI5LCIuLi9zY2F0dGVyL2NvbG9yc2NhbGVfY2FsYyI6OTMw LCJmYXN0LWlzbnVtZXJpYyI6MTkwfV0sOTYzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vc2NhdHRlci9jb25zdGFudHMiKSxh PXQoIi4uL3NjYXR0ZXIvc3VidHlwZXMiKSxvPXQoIi4uL3NjYXR0ZXIvbWFya2VyX2RlZmF1 bHRzIikscz10KCIuLi9zY2F0dGVyL2xpbmVfZGVmYXVsdHMiKSxsPXQoIi4uL3NjYXR0ZXIv bGluZV9zaGFwZV9kZWZhdWx0cyIpLGM9dCgiLi4vc2NhdHRlci90ZXh0X2RlZmF1bHRzIiks dT10KCIuLi9zY2F0dGVyL2ZpbGxjb2xvcl9kZWZhdWx0cyIpLGY9dCgiLi9hdHRyaWJ1dGVz Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGgpe2Z1bmN0aW9uIHAocixpKXtyZXR1cm4g bi5jb2VyY2UodCxlLGYscixpKX1wKCJjYXJwZXQiKSxlLnhheGlzPSJ4IixlLnlheGlzPSJ5 Ijt2YXIgZD1wKCJhIiksbT1wKCJiIiksZz1NYXRoLm1pbihkLmxlbmd0aCxtLmxlbmd0aCk7 aWYoZyl7ZS5fbGVuZ3RoPWcscCgidGV4dCIpLHAoInRleHR0ZW1wbGF0ZSIpLHAoImhvdmVy dGV4dCIpLHAoIm1vZGUiLGc8aS5QVFNfTElORVNPTkxZPyJsaW5lcyttYXJrZXJzIjoibGlu ZXMiKSxhLmhhc0xpbmVzKGUpJiYocyh0LGUscixoLHApLGwodCxlLHApLHAoImNvbm5lY3Rn YXBzIikpLGEuaGFzTWFya2VycyhlKSYmbyh0LGUscixoLHAse2dyYWRpZW50OiEwfSksYS5o YXNUZXh0KGUpJiZjKHQsZSxoLHApO3ZhciB2PVtdOyhhLmhhc01hcmtlcnMoZSl8fGEuaGFz VGV4dChlKSkmJihwKCJtYXJrZXIubWF4ZGlzcGxheWVkIiksdi5wdXNoKCJwb2ludHMiKSks cCgiZmlsbCIpLCJub25lIiE9PWUuZmlsbCYmKHUodCxlLHIscCksYS5oYXNMaW5lcyhlKXx8 bCh0LGUscCkpLCJ0b25leHQiIT09ZS5maWxsJiYidG9zZWxmIiE9PWUuZmlsbHx8di5wdXNo KCJmaWxscyIpLCJmaWxscyIhPT1wKCJob3Zlcm9uIix2LmpvaW4oIisiKXx8InBvaW50cyIp JiZwKCJob3ZlcnRlbXBsYXRlIiksbi5jb2VyY2VTZWxlY3Rpb25NYXJrZXJPcGFjaXR5KGUs cCl9ZWxzZSBlLnZpc2libGU9ITF9fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi9zY2F0dGVyL2Nv bnN0YW50cyI6OTMxLCIuLi9zY2F0dGVyL2ZpbGxjb2xvcl9kZWZhdWx0cyI6OTM1LCIuLi9z Y2F0dGVyL2xpbmVfZGVmYXVsdHMiOjk0MCwiLi4vc2NhdHRlci9saW5lX3NoYXBlX2RlZmF1 bHRzIjo5NDIsIi4uL3NjYXR0ZXIvbWFya2VyX2RlZmF1bHRzIjo5NDYsIi4uL3NjYXR0ZXIv c3VidHlwZXMiOjk1MiwiLi4vc2NhdHRlci90ZXh0X2RlZmF1bHRzIjo5NTMsIi4vYXR0cmli dXRlcyI6OTYxfV0sOTY0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUscixuLGkpe3ZhciBhPW5baV07cmV0dXJuIHQuYT1hLmEsdC5iPWEu Yix0Lnk9YS55LHR9fSx7fV0sOTY1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Uu ZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXt9LG49ZS5fY2FycGV0LGk9bi5hYjJpaihb dC5hLHQuYl0pLGE9TWF0aC5mbG9vcihpWzBdKSxvPWlbMF0tYSxzPU1hdGguZmxvb3IoaVsx XSksbD1pWzFdLXMsYz1uLmV2YWx4eShbXSxhLHMsbyxsKTtyZXR1cm4gci55TGFiZWw9Y1sx XS50b0ZpeGVkKDMpLHJ9fSx7fV0sOTY2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoIi4uL3NjYXR0ZXIvaG92ZXIiKSxpPXQoIi4uLy4uL2xpYiIpLmZpbGxUZXh0 O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixhKXt2YXIgbz1uKHQsZSxyLGEpO2lmKG8mJiEx IT09b1swXS5pbmRleCl7dmFyIHM9b1swXTtpZih2b2lkIDA9PT1zLmluZGV4KXt2YXIgbD0x LXMueTAvdC55YS5fbGVuZ3RoLGM9dC54YS5fbGVuZ3RoLHU9YypsLzIsZj1jLXU7cmV0dXJu IHMueDA9TWF0aC5tYXgoTWF0aC5taW4ocy54MCxmKSx1KSxzLngxPU1hdGgubWF4KE1hdGgu bWluKHMueDEsZiksdSksb312YXIgaD1zLmNkW3MuaW5kZXhdO3MuYT1oLmEscy5iPWguYixz LnhMYWJlbFZhbD12b2lkIDAscy55TGFiZWxWYWw9dm9pZCAwO3ZhciBwPXMudHJhY2UsZD1w Ll9jYXJwZXQsbT1wLl9tb2R1bGUuZm9ybWF0TGFiZWxzKGgscCk7cy55TGFiZWw9bS55TGFi ZWwsZGVsZXRlIHMudGV4dDt2YXIgZz1bXTtpZighcC5ob3ZlcnRlbXBsYXRlKXt2YXIgdj0o aC5oaXx8cC5ob3ZlcmluZm8pLnNwbGl0KCIrIik7LTEhPT12LmluZGV4T2YoImFsbCIpJiYo dj1bImEiLCJiIiwidGV4dCJdKSwtMSE9PXYuaW5kZXhPZigiYSIpJiZ5KGQuYWF4aXMsaC5h KSwtMSE9PXYuaW5kZXhPZigiYiIpJiZ5KGQuYmF4aXMsaC5iKSxnLnB1c2goInk6ICIrcy55 TGFiZWwpLC0xIT09di5pbmRleE9mKCJ0ZXh0IikmJmkoaCxwLGcpLHMuZXh0cmFUZXh0PWcu am9pbigiPGJyPiIpfXJldHVybiBvfWZ1bmN0aW9uIHkodCxlKXt2YXIgcjtyPXQubGFiZWxw cmVmaXgmJnQubGFiZWxwcmVmaXgubGVuZ3RoPjA/dC5sYWJlbHByZWZpeC5yZXBsYWNlKC8g PSAkLywiIik6dC5faG92ZXJ0aXRsZSxnLnB1c2gocisiOiAiK2UudG9GaXhlZCgzKSt0Lmxh YmVsc3VmZml4KX19fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi9zY2F0dGVyL2hvdmVyIjo5Mzh9 XSw5Njc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXthdHRyaWJ1 dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxj b2xvcmJhcjp0KCIuLi9zY2F0dGVyL21hcmtlcl9jb2xvcmJhciIpLGZvcm1hdExhYmVsczp0 KCIuL2Zvcm1hdF9sYWJlbHMiKSxjYWxjOnQoIi4vY2FsYyIpLHBsb3Q6dCgiLi9wbG90Iiks c3R5bGU6dCgiLi4vc2NhdHRlci9zdHlsZSIpLnN0eWxlLHN0eWxlT25TZWxlY3Q6dCgiLi4v c2NhdHRlci9zdHlsZSIpLnN0eWxlT25TZWxlY3QsaG92ZXJQb2ludHM6dCgiLi9ob3ZlciIp LHNlbGVjdFBvaW50czp0KCIuLi9zY2F0dGVyL3NlbGVjdCIpLGV2ZW50RGF0YTp0KCIuL2V2 ZW50X2RhdGEiKSxtb2R1bGVUeXBlOiJ0cmFjZSIsbmFtZToic2NhdHRlcmNhcnBldCIsYmFz ZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuIiksY2F0ZWdvcmllczpbInN2 ZyIsImNhcnBldCIsInN5bWJvbHMiLCJzaG93TGVnZW5kIiwiY2FycGV0RGVwZW5kZW50Iiwi em9vbVNjYWxlIl0sbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuIjo1NjgsIi4u L3NjYXR0ZXIvbWFya2VyX2NvbG9yYmFyIjo5NDUsIi4uL3NjYXR0ZXIvc2VsZWN0Ijo5NDks Ii4uL3NjYXR0ZXIvc3R5bGUiOjk1MSwiLi9hdHRyaWJ1dGVzIjo5NjEsIi4vY2FsYyI6OTYy LCIuL2RlZmF1bHRzIjo5NjMsIi4vZXZlbnRfZGF0YSI6OTY0LCIuL2Zvcm1hdF9sYWJlbHMi Ojk2NSwiLi9ob3ZlciI6OTY2LCIuL3Bsb3QiOjk2OH1dLDk2ODpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9zY2F0dGVyL3Bsb3QiKSxpPXQoIi4uLy4uL3Bs b3RzL2NhcnRlc2lhbi9heGVzIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciKTtl LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbyl7dmFyIHMsbCxjLHU9clswXVswXS5jYXJwZXQs Zj17eGF4aXM6aS5nZXRGcm9tSWQodCx1LnhheGlzfHwieCIpLHlheGlzOmkuZ2V0RnJvbUlk KHQsdS55YXhpc3x8InkiKSxwbG90OmUucGxvdH07Zm9yKG4odCxmLHIsbykscz0wO3M8ci5s ZW5ndGg7cysrKWw9cltzXVswXS50cmFjZSxjPW8uc2VsZWN0QWxsKCJnLnRyYWNlIitsLnVp ZCsiIC5qcy1saW5lIiksYS5zZXRDbGlwVXJsKGMscltzXVswXS5jYXJwZXQuX2NsaXBQYXRo SWQsdCl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6Mzg4LCIuLi8uLi9wbG90cy9j YXJ0ZXNpYW4vYXhlcyI6NTU0LCIuLi9zY2F0dGVyL3Bsb3QiOjk0OH1dLDk2OTpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9h dHRyaWJ1dGVzIikuaG92ZXJ0ZW1wbGF0ZUF0dHJzLGk9dCgiLi4vLi4vcGxvdHMvdGVtcGxh dGVfYXR0cmlidXRlcyIpLnRleHR0ZW1wbGF0ZUF0dHJzLGE9dCgiLi4vc2NhdHRlci9hdHRy aWJ1dGVzIiksbz10KCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9jb21w b25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLGw9dCgiLi4vLi4vY29tcG9uZW50cy9k cmF3aW5nL2F0dHJpYnV0ZXMiKS5kYXNoLGM9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVu ZEZsYXQsdT10KCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIikub3ZlcnJpZGVBbGwsZj1h Lm1hcmtlcixoPWEubGluZSxwPWYubGluZTtlLmV4cG9ydHM9dSh7bG9uOnt2YWxUeXBlOiJk YXRhX2FycmF5In0sbGF0Ont2YWxUeXBlOiJkYXRhX2FycmF5In0sbG9jYXRpb25zOnt2YWxU eXBlOiJkYXRhX2FycmF5In0sbG9jYXRpb25tb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2 YWx1ZXM6WyJJU08tMyIsIlVTQS1zdGF0ZXMiLCJjb3VudHJ5IG5hbWVzIiwiZ2VvanNvbi1p ZCJdLGRmbHQ6IklTTy0zIn0sZ2VvanNvbjp7dmFsVHlwZToiYW55IixlZGl0VHlwZToiY2Fs YyJ9LGZlYXR1cmVpZGtleTp7dmFsVHlwZToic3RyaW5nIixlZGl0VHlwZToiY2FsYyIsZGZs dDoiaWQifSxtb2RlOmMoe30sYS5tb2RlLHtkZmx0OiJtYXJrZXJzIn0pLHRleHQ6Yyh7fSxh LnRleHQse30pLHRleHR0ZW1wbGF0ZTppKHtlZGl0VHlwZToicGxvdCJ9LHtrZXlzOlsibGF0 IiwibG9uIiwibG9jYXRpb24iLCJ0ZXh0Il19KSxob3ZlcnRleHQ6Yyh7fSxhLmhvdmVydGV4 dCx7fSksdGV4dGZvbnQ6YS50ZXh0Zm9udCx0ZXh0cG9zaXRpb246YS50ZXh0cG9zaXRpb24s bGluZTp7Y29sb3I6aC5jb2xvcix3aWR0aDpoLndpZHRoLGRhc2g6bH0sY29ubmVjdGdhcHM6 YS5jb25uZWN0Z2FwcyxtYXJrZXI6Yyh7c3ltYm9sOmYuc3ltYm9sLG9wYWNpdHk6Zi5vcGFj aXR5LHNpemU6Zi5zaXplLHNpemVyZWY6Zi5zaXplcmVmLHNpemVtaW46Zi5zaXplbWluLHNp emVtb2RlOmYuc2l6ZW1vZGUsY29sb3JiYXI6Zi5jb2xvcmJhcixsaW5lOmMoe3dpZHRoOnAu d2lkdGh9LHMoIm1hcmtlci5saW5lIikpLGdyYWRpZW50OmYuZ3JhZGllbnR9LHMoIm1hcmtl ciIpKSxmaWxsOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJub25lIiwidG9zZWxm Il0sZGZsdDoibm9uZSJ9LGZpbGxjb2xvcjphLmZpbGxjb2xvcixzZWxlY3RlZDphLnNlbGVj dGVkLHVuc2VsZWN0ZWQ6YS51bnNlbGVjdGVkLGhvdmVyaW5mbzpjKHt9LG8uaG92ZXJpbmZv LHtmbGFnczpbImxvbiIsImxhdCIsImxvY2F0aW9uIiwidGV4dCIsIm5hbWUiXX0pLGhvdmVy dGVtcGxhdGU6bigpfSwiY2FsYyIsIm5lc3RlZCIpfSx7Ii4uLy4uL2NvbXBvbmVudHMvY29s b3JzY2FsZS9hdHRyaWJ1dGVzIjozNzMsIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZy9hdHRy aWJ1dGVzIjozODcsIi4uLy4uL2xpYi9leHRlbmQiOjQ5MywiLi4vLi4vcGxvdF9hcGkvZWRp dF90eXBlcyI6NTM2LCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIjo1NTAsIi4uLy4uL3Bsb3Rz L3RlbXBsYXRlX2F0dHJpYnV0ZXMiOjYzMywiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIjo5Mjd9 XSw5NzA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251 bWVyaWMiKSxpPXQoIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiKS5CQUROVU0sYT10KCIu Li9zY2F0dGVyL2NvbG9yc2NhbGVfY2FsYyIpLG89dCgiLi4vc2NhdHRlci9hcnJheXNfdG9f Y2FsY2RhdGEiKSxzPXQoIi4uL3NjYXR0ZXIvY2FsY19zZWxlY3Rpb24iKSxsPXQoIi4uLy4u L2xpYiIpLl87ZnVuY3Rpb24gYyh0KXtyZXR1cm4gdCYmInN0cmluZyI9PXR5cGVvZiB0fWUu ZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLHU9QXJyYXkuaXNBcnJheShlLmxvY2F0aW9u cyksZj11P2UubG9jYXRpb25zLmxlbmd0aDplLl9sZW5ndGgsaD1uZXcgQXJyYXkoZik7cj1l Lmdlb2pzb24/ZnVuY3Rpb24odCl7cmV0dXJuIGModCl8fG4odCl9OmM7Zm9yKHZhciBwPTA7 cDxmO3ArKyl7dmFyIGQ9aFtwXT17fTtpZih1KXt2YXIgbT1lLmxvY2F0aW9uc1twXTtkLmxv Yz1yKG0pP206bnVsbH1lbHNle3ZhciBnPWUubG9uW3BdLHY9ZS5sYXRbcF07bihnKSYmbih2 KT9kLmxvbmxhdD1bK2csK3ZdOmQubG9ubGF0PVtpLGldfX1yZXR1cm4gbyhoLGUpLGEodCxl KSxzKGgsZSksZiYmKGhbMF0udD17bGFiZWxzOntsYXQ6bCh0LCJsYXQ6IikrIiAiLGxvbjps KHQsImxvbjoiKSsiICJ9fSksaH19LHsiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NDc5 LCIuLi8uLi9saWIiOjUwMywiLi4vc2NhdHRlci9hcnJheXNfdG9fY2FsY2RhdGEiOjkyNiwi Li4vc2NhdHRlci9jYWxjX3NlbGVjdGlvbiI6OTI5LCIuLi9zY2F0dGVyL2NvbG9yc2NhbGVf Y2FsYyI6OTMwLCJmYXN0LWlzbnVtZXJpYyI6MTkwfV0sOTcxOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vc2NhdHRlci9zdWJ0 eXBlcyIpLGE9dCgiLi4vc2NhdHRlci9tYXJrZXJfZGVmYXVsdHMiKSxvPXQoIi4uL3NjYXR0 ZXIvbGluZV9kZWZhdWx0cyIpLHM9dCgiLi4vc2NhdHRlci90ZXh0X2RlZmF1bHRzIiksbD10 KCIuLi9zY2F0dGVyL2ZpbGxjb2xvcl9kZWZhdWx0cyIpLGM9dCgiLi9hdHRyaWJ1dGVzIik7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHUpe2Z1bmN0aW9uIGYocixpKXtyZXR1cm4gbi5j b2VyY2UodCxlLGMscixpKX12YXIgaCxwPWYoImxvY2F0aW9ucyIpO2lmKHAmJnAubGVuZ3Ro KXt2YXIgZCxtPWYoImdlb2pzb24iKTsoInN0cmluZyI9PXR5cGVvZiBtJiYiIiE9PW18fG4u aXNQbGFpbk9iamVjdChtKSkmJihkPSJnZW9qc29uLWlkIiksImdlb2pzb24taWQiPT09Zigi bG9jYXRpb25tb2RlIixkKSYmZigiZmVhdHVyZWlka2V5IiksaD1wLmxlbmd0aH1lbHNle3Zh ciBnPWYoImxvbiIpfHxbXSx2PWYoImxhdCIpfHxbXTtoPU1hdGgubWluKGcubGVuZ3RoLHYu bGVuZ3RoKX1oPyhlLl9sZW5ndGg9aCxmKCJ0ZXh0IiksZigiaG92ZXJ0ZXh0IiksZigiaG92 ZXJ0ZW1wbGF0ZSIpLGYoIm1vZGUiKSxpLmhhc0xpbmVzKGUpJiYobyh0LGUscix1LGYpLGYo ImNvbm5lY3RnYXBzIikpLGkuaGFzTWFya2VycyhlKSYmYSh0LGUscix1LGYse2dyYWRpZW50 OiEwfSksaS5oYXNUZXh0KGUpJiYoZigidGV4dHRlbXBsYXRlIikscyh0LGUsdSxmKSksZigi ZmlsbCIpLCJub25lIiE9PWUuZmlsbCYmbCh0LGUscixmKSxuLmNvZXJjZVNlbGVjdGlvbk1h cmtlck9wYWNpdHkoZSxmKSk6ZS52aXNpYmxlPSExfX0seyIuLi8uLi9saWIiOjUwMywiLi4v c2NhdHRlci9maWxsY29sb3JfZGVmYXVsdHMiOjkzNSwiLi4vc2NhdHRlci9saW5lX2RlZmF1 bHRzIjo5NDAsIi4uL3NjYXR0ZXIvbWFya2VyX2RlZmF1bHRzIjo5NDYsIi4uL3NjYXR0ZXIv c3VidHlwZXMiOjk1MiwiLi4vc2NhdHRlci90ZXh0X2RlZmF1bHRzIjo5NTMsIi4vYXR0cmli dXRlcyI6OTY5fV0sOTcyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUscixuLGkpe3QubG9uPWUubG9uLHQubGF0PWUubGF0LHQubG9jYXRp b249ZS5sb2M/ZS5sb2M6bnVsbDt2YXIgYT1uW2ldO3JldHVybiBhLmZJbiYmYS5mSW4ucHJv cGVydGllcyYmKHQucHJvcGVydGllcz1hLmZJbi5wcm9wZXJ0aWVzKSx0fX0se31dLDk3Mzpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0 ZXNpYW4vYXhlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGk9e30sYT1yW2Uu Z2VvXS5fc3VicGxvdC5tb2NrQXhpcyxvPXQubG9ubGF0O3JldHVybiBpLmxvbkxhYmVsPW4u dGlja1RleHQoYSxhLmMybChvWzBdKSwhMCkudGV4dCxpLmxhdExhYmVsPW4udGlja1RleHQo YSxhLmMybChvWzFdKSwhMCkudGV4dCxpfX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhl cyI6NTU0fV0sOTc0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4u Ly4uL2NvbXBvbmVudHMvZngiKSxpPXQoIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiKS5C QUROVU0sYT10KCIuLi9zY2F0dGVyL2dldF90cmFjZV9jb2xvciIpLG89dCgiLi4vLi4vbGli IikuZmlsbFRleHQscz10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxl LHIpe3ZhciBsPXQuY2QsYz1sWzBdLnRyYWNlLHU9dC54YSxmPXQueWEsaD10LnN1YnBsb3Qs cD1oLnByb2plY3Rpb24uaXNMb25MYXRPdmVyRWRnZXMsZD1oLnByb2plY3Q7aWYobi5nZXRD bG9zZXN0KGwsKGZ1bmN0aW9uKHQpe3ZhciBuPXQubG9ubGF0O2lmKG5bMF09PT1pKXJldHVy biAxLzA7aWYocChuKSlyZXR1cm4gMS8wO3ZhciBhPWQobiksbz1kKFtlLHJdKSxzPU1hdGgu YWJzKGFbMF0tb1swXSksbD1NYXRoLmFicyhhWzFdLW9bMV0pLGM9TWF0aC5tYXgoMyx0Lm1y Y3x8MCk7cmV0dXJuIE1hdGgubWF4KE1hdGguc3FydChzKnMrbCpsKS1jLDEtMy9jKX0pLHQp LCExIT09dC5pbmRleCl7dmFyIG09bFt0LmluZGV4XSxnPW0ubG9ubGF0LHY9W3UuYzJwKGcp LGYuYzJwKGcpXSx5PW0ubXJjfHwxO3QueDA9dlswXS15LHQueDE9dlswXSt5LHQueTA9dlsx XS15LHQueTE9dlsxXSt5LHQubG9jPW0ubG9jLHQubG9uPWdbMF0sdC5sYXQ9Z1sxXTt2YXIg eD17fTt4W2MuZ2VvXT17X3N1YnBsb3Q6aH07dmFyIGI9Yy5fbW9kdWxlLmZvcm1hdExhYmVs cyhtLGMseCk7cmV0dXJuIHQubG9uTGFiZWw9Yi5sb25MYWJlbCx0LmxhdExhYmVsPWIubGF0 TGFiZWwsdC5jb2xvcj1hKGMsbSksdC5leHRyYVRleHQ9ZnVuY3Rpb24odCxlLHIsbil7aWYo dC5ob3ZlcnRlbXBsYXRlKXJldHVybjt2YXIgaT1lLmhpfHx0LmhvdmVyaW5mbyxhPSJhbGwi PT09aT9zLmhvdmVyaW5mby5mbGFnczppLnNwbGl0KCIrIiksbD0tMSE9PWEuaW5kZXhPZigi bG9jYXRpb24iKSYmQXJyYXkuaXNBcnJheSh0LmxvY2F0aW9ucyksYz0tMSE9PWEuaW5kZXhP ZigibG9uIiksdT0tMSE9PWEuaW5kZXhPZigibGF0IiksZj0tMSE9PWEuaW5kZXhPZigidGV4 dCIpLGg9W107ZnVuY3Rpb24gcCh0KXtyZXR1cm4gdCsiXHhiMCJ9bD9oLnB1c2goZS5sb2Mp OmMmJnU/aC5wdXNoKCIoIitwKHIubGF0TGFiZWwpKyIsICIrcChyLmxvbkxhYmVsKSsiKSIp OmM/aC5wdXNoKG4ubG9uK3Aoci5sb25MYWJlbCkpOnUmJmgucHVzaChuLmxhdCtwKHIubGF0 TGFiZWwpKTtmJiZvKGUsdCxoKTtyZXR1cm4gaC5qb2luKCI8YnI+Iil9KGMsbSx0LGxbMF0u dC5sYWJlbHMpLHQuaG92ZXJ0ZW1wbGF0ZT1jLmhvdmVydGVtcGxhdGUsW3RdfX19LHsiLi4v Li4vY29tcG9uZW50cy9meCI6NDA2LCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIjo0Nzks Ii4uLy4uL2xpYiI6NTAzLCIuLi9zY2F0dGVyL2dldF90cmFjZV9jb2xvciI6OTM3LCIuL2F0 dHJpYnV0ZXMiOjk2OX1dLDk3NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4 cG9ydHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgi Li9kZWZhdWx0cyIpLGNvbG9yYmFyOnQoIi4uL3NjYXR0ZXIvbWFya2VyX2NvbG9yYmFyIiks Zm9ybWF0TGFiZWxzOnQoIi4vZm9ybWF0X2xhYmVscyIpLGNhbGM6dCgiLi9jYWxjIiksY2Fs Y0dlb0pTT046dCgiLi9wbG90IikuY2FsY0dlb0pTT04scGxvdDp0KCIuL3Bsb3QiKS5wbG90 LHN0eWxlOnQoIi4vc3R5bGUiKSxzdHlsZU9uU2VsZWN0OnQoIi4uL3NjYXR0ZXIvc3R5bGUi KS5zdHlsZU9uU2VsZWN0LGhvdmVyUG9pbnRzOnQoIi4vaG92ZXIiKSxldmVudERhdGE6dCgi Li9ldmVudF9kYXRhIiksc2VsZWN0UG9pbnRzOnQoIi4vc2VsZWN0IiksbW9kdWxlVHlwZToi dHJhY2UiLG5hbWU6InNjYXR0ZXJnZW8iLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3Rz L2dlbyIpLGNhdGVnb3JpZXM6WyJnZW8iLCJzeW1ib2xzIiwic2hvd0xlZ2VuZCIsInNjYXR0 ZXItbGlrZSJdLG1ldGE6e319fSx7Ii4uLy4uL3Bsb3RzL2dlbyI6NTg5LCIuLi9zY2F0dGVy L21hcmtlcl9jb2xvcmJhciI6OTQ1LCIuLi9zY2F0dGVyL3N0eWxlIjo5NTEsIi4vYXR0cmli dXRlcyI6OTY5LCIuL2NhbGMiOjk3MCwiLi9kZWZhdWx0cyI6OTcxLCIuL2V2ZW50X2RhdGEi Ojk3MiwiLi9mb3JtYXRfbGFiZWxzIjo5NzMsIi4vaG92ZXIiOjk3NCwiLi9wbG90Ijo5NzYs Ii4vc2VsZWN0Ijo5NzcsIi4vc3R5bGUiOjk3OH1dLDk3NjpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCJAcGxvdGx5L2QzIiksaT10KCIuLi8uLi9saWIiKSxhPXQo Ii4uLy4uL2xpYi90b3BvanNvbl91dGlscyIpLmdldFRvcG9qc29uRmVhdHVyZXMsbz10KCIu Li8uLi9saWIvZ2VvanNvbl91dGlscyIpLHM9dCgiLi4vLi4vbGliL2dlb19sb2NhdGlvbl91 dGlscyIpLGw9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F1dG9yYW5nZSIpLmZpbmRFeHRy ZW1lcyxjPXQoIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiKS5CQUROVU0sdT10KCIuLi9z Y2F0dGVyL2NhbGMiKS5jYWxjTWFya2VyU2l6ZSxmPXQoIi4uL3NjYXR0ZXIvc3VidHlwZXMi KSxoPXQoIi4vc3R5bGUiKTtlLmV4cG9ydHM9e2NhbGNHZW9KU09OOmZ1bmN0aW9uKHQsZSl7 dmFyIHIsbixpPXRbMF0udHJhY2Usbz1lW2kuZ2VvXSxmPW8uX3N1YnBsb3QsaD1pLl9sZW5n dGg7aWYoQXJyYXkuaXNBcnJheShpLmxvY2F0aW9ucykpe3ZhciBwPWkubG9jYXRpb25tb2Rl LGQ9Imdlb2pzb24taWQiPT09cD9zLmV4dHJhY3RUcmFjZUZlYXR1cmUodCk6YShpLGYudG9w b2pzb24pO2ZvcihyPTA7cjxoO3IrKyl7bj10W3JdO3ZhciBtPSJnZW9qc29uLWlkIj09PXA/ bi5mT3V0OnMubG9jYXRpb25Ub0ZlYXR1cmUocCxuLmxvYyxkKTtuLmxvbmxhdD1tP20ucHJv cGVydGllcy5jdDpbYyxjXX19dmFyIGcsdix5PXtwYWRkZWQ6ITB9O2lmKCJnZW9qc29uIj09 PW8uZml0Ym91bmRzJiYiZ2VvanNvbi1pZCI9PT1pLmxvY2F0aW9ubW9kZSl7dmFyIHg9cy5j b21wdXRlQmJveChzLmdldFRyYWNlR2VvanNvbihpKSk7Zz1beFswXSx4WzJdXSx2PVt4WzFd LHhbM11dfWVsc2V7Zm9yKGc9bmV3IEFycmF5KGgpLHY9bmV3IEFycmF5KGgpLHI9MDtyPGg7 cisrKW49dFtyXSxnW3JdPW4ubG9ubGF0WzBdLHZbcl09bi5sb25sYXRbMV07eS5wcGFkPXUo aSxoKX1pLl9leHRyZW1lcy5sb249bChvLmxvbmF4aXMuX2F4LGcseSksaS5fZXh0cmVtZXMu bGF0PWwoby5sYXRheGlzLl9heCx2LHkpfSxwbG90OmZ1bmN0aW9uKHQsZSxyKXt2YXIgYT1l LmxheWVycy5mcm9udHBsb3Quc2VsZWN0KCIuc2NhdHRlcmxheWVyIikscz1pLm1ha2VUcmFj ZUdyb3VwcyhhLHIsInRyYWNlIHNjYXR0ZXJnZW8iKTtmdW5jdGlvbiBsKHQsZSl7dC5sb25s YXRbMF09PT1jJiZuLnNlbGVjdChlKS5yZW1vdmUoKX1zLnNlbGVjdEFsbCgiKiIpLnJlbW92 ZSgpLHMuZWFjaCgoZnVuY3Rpb24oZSl7dmFyIHI9bi5zZWxlY3QodGhpcyksYT1lWzBdLnRy YWNlO2lmKGYuaGFzTGluZXMoYSl8fCJub25lIiE9PWEuZmlsbCl7dmFyIHM9by5jYWxjVHJh Y2VUb0xpbmVDb29yZHMoZSksYz0ibm9uZSIhPT1hLmZpbGw/by5tYWtlUG9seWdvbihzKTpv Lm1ha2VMaW5lKHMpO3Iuc2VsZWN0QWxsKCJwYXRoLmpzLWxpbmUiKS5kYXRhKFt7Z2VvanNv bjpjLHRyYWNlOmF9XSkuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5jbGFzc2VkKCJqcy1saW5l IiwhMCkuc3R5bGUoInN0cm9rZS1taXRlcmxpbWl0IiwyKX1mLmhhc01hcmtlcnMoYSkmJnIu c2VsZWN0QWxsKCJwYXRoLnBvaW50IikuZGF0YShpLmlkZW50aXR5KS5lbnRlcigpLmFwcGVu ZCgicGF0aCIpLmNsYXNzZWQoInBvaW50IiwhMCkuZWFjaCgoZnVuY3Rpb24odCl7bCh0LHRo aXMpfSkpLGYuaGFzVGV4dChhKSYmci5zZWxlY3RBbGwoImciKS5kYXRhKGkuaWRlbnRpdHkp LmVudGVyKCkuYXBwZW5kKCJnIikuYXBwZW5kKCJ0ZXh0IikuZWFjaCgoZnVuY3Rpb24odCl7 bCh0LHRoaXMpfSkpLGgodCxlKX0pKX19fSx7Ii4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwi OjQ3OSwiLi4vLi4vbGliIjo1MDMsIi4uLy4uL2xpYi9nZW9fbG9jYXRpb25fdXRpbHMiOjQ5 NiwiLi4vLi4vbGliL2dlb2pzb25fdXRpbHMiOjQ5NywiLi4vLi4vbGliL3RvcG9qc29uX3V0 aWxzIjo1MzIsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9hdXRvcmFuZ2UiOjU1MywiLi4vc2Nh dHRlci9jYWxjIjo5MjgsIi4uL3NjYXR0ZXIvc3VidHlwZXMiOjk1MiwiLi9zdHlsZSI6OTc4 LCJAcGxvdGx5L2QzIjo1OH1dLDk3NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCIuLi9zY2F0dGVyL3N1YnR5cGVzIiksaT10KCIuLi8uLi9jb25zdGFudHMvbnVt ZXJpY2FsIikuQkFETlVNO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLGEsbyxzLGws Yz10LmNkLHU9dC54YXhpcyxmPXQueWF4aXMsaD1bXSxwPWNbMF0udHJhY2U7aWYoIW4uaGFz TWFya2VycyhwKSYmIW4uaGFzVGV4dChwKSlyZXR1cm5bXTtpZighMT09PWUpZm9yKGw9MDts PGMubGVuZ3RoO2wrKyljW2xdLnNlbGVjdGVkPTA7ZWxzZSBmb3IobD0wO2w8Yy5sZW5ndGg7 bCsrKShhPShyPWNbbF0pLmxvbmxhdClbMF0hPT1pJiYobz11LmMycChhKSxzPWYuYzJwKGEp LGUuY29udGFpbnMoW28sc10sbnVsbCxsLHQpPyhoLnB1c2goe3BvaW50TnVtYmVyOmwsbG9u OmFbMF0sbGF0OmFbMV19KSxyLnNlbGVjdGVkPTEpOnIuc2VsZWN0ZWQ9MCk7cmV0dXJuIGh9 fSx7Ii4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiOjQ3OSwiLi4vc2NhdHRlci9zdWJ0eXBl cyI6OTUyfV0sOTc4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIkBw bG90bHkvZDMiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLGE9dCgiLi4vLi4v Y29tcG9uZW50cy9jb2xvciIpLG89dCgiLi4vc2NhdHRlci9zdHlsZSIpLHM9by5zdHlsZVBv aW50cyxsPW8uc3R5bGVUZXh0O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2UmJmZ1bmN0aW9u KHQsZSl7dmFyIHI9ZVswXS50cmFjZSxvPWVbMF0ubm9kZTM7by5zdHlsZSgib3BhY2l0eSIs ZVswXS50cmFjZS5vcGFjaXR5KSxzKG8scix0KSxsKG8scix0KSxvLnNlbGVjdEFsbCgicGF0 aC5qcy1saW5lIikuc3R5bGUoImZpbGwiLCJub25lIikuZWFjaCgoZnVuY3Rpb24odCl7dmFy IGU9bi5zZWxlY3QodGhpcykscj10LnRyYWNlLG89ci5saW5lfHx7fTtlLmNhbGwoYS5zdHJv a2Usby5jb2xvcikuY2FsbChpLmRhc2hMaW5lLG8uZGFzaHx8IiIsby53aWR0aHx8MCksIm5v bmUiIT09ci5maWxsJiZlLmNhbGwoYS5maWxsLHIuZmlsbGNvbG9yKX0pKX0odCxlKX19LHsi Li4vLi4vY29tcG9uZW50cy9jb2xvciI6MzY2LCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmci OjM4OCwiLi4vc2NhdHRlci9zdHlsZSI6OTUxLCJAcGxvdGx5L2QzIjo1OH1dLDk3OTpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9hdHRyaWJ1 dGVzIiksaT10KCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiKSxhPXQoIi4uLy4uL3Bsb3RzL2Nh cnRlc2lhbi9heGlzX2Zvcm1hdF9hdHRyaWJ1dGVzIikuYXhpc0hvdmVyRm9ybWF0LG89dCgi Li4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSxzPXQoIi4uLy4uL2xp Yi9zb3J0X29iamVjdF9rZXlzIiksbD10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxh dCxjPXQoIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMiKS5vdmVycmlkZUFsbCx1PXQoIi4v Y29uc3RhbnRzIikuREFTSEVTLGY9aS5saW5lLGg9aS5tYXJrZXIscD1oLmxpbmUsZD1lLmV4 cG9ydHM9Yyh7eDppLngseDA6aS54MCxkeDppLmR4LHk6aS55LHkwOmkueTAsZHk6aS5keSx4 cGVyaW9kOmkueHBlcmlvZCx5cGVyaW9kOmkueXBlcmlvZCx4cGVyaW9kMDppLnhwZXJpb2Qw LHlwZXJpb2QwOmkueXBlcmlvZDAseHBlcmlvZGFsaWdubWVudDppLnhwZXJpb2RhbGlnbm1l bnQseXBlcmlvZGFsaWdubWVudDppLnlwZXJpb2RhbGlnbm1lbnQseGhvdmVyZm9ybWF0OmEo IngiKSx5aG92ZXJmb3JtYXQ6YSgieSIpLHRleHQ6aS50ZXh0LGhvdmVydGV4dDppLmhvdmVy dGV4dCx0ZXh0cG9zaXRpb246aS50ZXh0cG9zaXRpb24sdGV4dGZvbnQ6aS50ZXh0Zm9udCxt b2RlOnt2YWxUeXBlOiJmbGFnbGlzdCIsZmxhZ3M6WyJsaW5lcyIsIm1hcmtlcnMiLCJ0ZXh0 Il0sZXh0cmFzOlsibm9uZSJdfSxsaW5lOntjb2xvcjpmLmNvbG9yLHdpZHRoOmYud2lkdGgs c2hhcGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImxpbmVhciIsImh2Iiwidmgi LCJodmgiLCJ2aHYiXSxkZmx0OiJsaW5lYXIiLGVkaXRUeXBlOiJwbG90In0sZGFzaDp7dmFs VHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOnModSksZGZsdDoic29saWQifX0sbWFya2VyOmwo e30sbygibWFya2VyIikse3N5bWJvbDpoLnN5bWJvbCxzaXplOmguc2l6ZSxzaXplcmVmOmgu c2l6ZXJlZixzaXplbWluOmguc2l6ZW1pbixzaXplbW9kZTpoLnNpemVtb2RlLG9wYWNpdHk6 aC5vcGFjaXR5LGNvbG9yYmFyOmguY29sb3JiYXIsbGluZTpsKHt9LG8oIm1hcmtlci5saW5l Iikse3dpZHRoOnAud2lkdGh9KX0pLGNvbm5lY3RnYXBzOmkuY29ubmVjdGdhcHMsZmlsbDps KHt9LGkuZmlsbCx7ZGZsdDoibm9uZSJ9KSxmaWxsY29sb3I6aS5maWxsY29sb3Isc2VsZWN0 ZWQ6e21hcmtlcjppLnNlbGVjdGVkLm1hcmtlcix0ZXh0Zm9udDppLnNlbGVjdGVkLnRleHRm b250fSx1bnNlbGVjdGVkOnttYXJrZXI6aS51bnNlbGVjdGVkLm1hcmtlcix0ZXh0Zm9udDpp LnVuc2VsZWN0ZWQudGV4dGZvbnR9LG9wYWNpdHk6bi5vcGFjaXR5fSwiY2FsYyIsIm5lc3Rl ZCIpO2QueC5lZGl0VHlwZT1kLnkuZWRpdFR5cGU9ZC54MC5lZGl0VHlwZT1kLnkwLmVkaXRU eXBlPSJjYWxjK2NsZWFyQXhpc1R5cGVzIixkLmhvdmVydGVtcGxhdGU9aS5ob3ZlcnRlbXBs YXRlLGQudGV4dHRlbXBsYXRlPWkudGV4dHRlbXBsYXRlfSx7Ii4uLy4uL2NvbXBvbmVudHMv Y29sb3JzY2FsZS9hdHRyaWJ1dGVzIjozNzMsIi4uLy4uL2xpYi9leHRlbmQiOjQ5MywiLi4v Li4vbGliL3NvcnRfb2JqZWN0X2tleXMiOjUyNiwiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBl cyI6NTM2LCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIjo1NTAsIi4uLy4uL3Bsb3RzL2NhcnRl c2lhbi9heGlzX2Zvcm1hdF9hdHRyaWJ1dGVzIjo1NTcsIi4uL3NjYXR0ZXIvYXR0cmlidXRl cyI6OTI3LCIuL2NvbnN0YW50cyI6OTgyfV0sOTgwOltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4vaG92ZXIiKTtlLmV4cG9ydHM9e21vZHVsZVR5cGU6InRyYWNl IixuYW1lOiJzY2F0dGVyZ2wiLGJhc2VQbG90TW9kdWxlOnQoIi4uLy4uL3Bsb3RzL2NhcnRl c2lhbiIpLGNhdGVnb3JpZXM6WyJnbCIsInJlZ2wiLCJjYXJ0ZXNpYW4iLCJzeW1ib2xzIiwi ZXJyb3JCYXJzT0siLCJzaG93TGVnZW5kIiwic2NhdHRlci1saWtlIl0sYXR0cmlidXRlczp0 KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY3Jvc3NU cmFjZURlZmF1bHRzOnQoIi4uL3NjYXR0ZXIvY3Jvc3NfdHJhY2VfZGVmYXVsdHMiKSxjb2xv cmJhcjp0KCIuLi9zY2F0dGVyL21hcmtlcl9jb2xvcmJhciIpLGZvcm1hdExhYmVsczp0KCIu L2Zvcm1hdF9sYWJlbHMiKSxjYWxjOnQoIi4vY2FsYyIpLGhvdmVyUG9pbnRzOm4uaG92ZXJQ b2ludHMsc2VsZWN0UG9pbnRzOnQoIi4vc2VsZWN0IiksbWV0YTp7fX19LHsiLi4vLi4vcGxv dHMvY2FydGVzaWFuIjo1NjgsIi4uL3NjYXR0ZXIvY3Jvc3NfdHJhY2VfZGVmYXVsdHMiOjkz MywiLi4vc2NhdHRlci9tYXJrZXJfY29sb3JiYXIiOjk0NSwiLi9hdHRyaWJ1dGVzIjo5Nzks Ii4vY2FsYyI6OTgxLCIuL2RlZmF1bHRzIjo5ODQsIi4vZm9ybWF0X2xhYmVscyI6OTg2LCIu L2hvdmVyIjo5ODgsIi4vc2VsZWN0Ijo5OTJ9XSw5ODE6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiQHBsb3RseS9wb2ludC1jbHVzdGVyIiksaT10KCIuLi8uLi9s aWIiKSxhPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2lkcyIpLG89dCgiLi4vLi4v cGxvdHMvY2FydGVzaWFuL2F1dG9yYW5nZSIpLmZpbmRFeHRyZW1lcyxzPXQoIi4uLy4uL3Bs b3RzL2NhcnRlc2lhbi9hbGlnbl9wZXJpb2QiKSxsPXQoIi4uL3NjYXR0ZXIvY2FsYyIpLGM9 bC5jYWxjTWFya2VyU2l6ZSx1PWwuY2FsY0F4aXNFeHBhbnNpb24sZj1sLnNldEZpcnN0U2Nh dHRlcixoPXQoIi4uL3NjYXR0ZXIvY29sb3JzY2FsZV9jYWxjIikscD10KCIuL2NvbnZlcnQi KSxkPXQoIi4vc2NlbmVfdXBkYXRlIiksbT10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2Fs IikuQkFETlVNLGc9dCgiLi9jb25zdGFudHMiKS5UT09fTUFOWV9QT0lOVFM7ZnVuY3Rpb24g dih0LGUscil7dmFyIG49dC5fZXh0cmVtZXNbZS5faWRdLGk9byhlLHIuX2JuZHMse3BhZGRl ZDohMH0pO24ubWluPW4ubWluLmNvbmNhdChpLm1pbiksbi5tYXg9bi5tYXguY29uY2F0KGku bWF4KX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixvPXQuX2Z1bGxMYXlvdXQsbD1h LmdldEZyb21JZCh0LGUueGF4aXMpLHk9YS5nZXRGcm9tSWQodCxlLnlheGlzKSx4PW8uX3Bs b3RzW2UueGF4aXMrZS55YXhpc10sYj1lLl9sZW5ndGgsXz1iPj1nLHc9MipiLFQ9e30saz1s Lm1ha2VDYWxjZGF0YShlLCJ4IiksQT15Lm1ha2VDYWxjZGF0YShlLCJ5IiksTT1zKGUsbCwi eCIsayksUz1zKGUseSwieSIsQSksRT1NLnZhbHMsTD1TLnZhbHM7ZS5feD1FLGUuX3k9TCxl LnhwZXJpb2RhbGlnbm1lbnQmJihlLl9vcmlnWD1rLGUuX3hTdGFydHM9TS5zdGFydHMsZS5f eEVuZHM9TS5lbmRzKSxlLnlwZXJpb2RhbGlnbm1lbnQmJihlLl9vcmlnWT1BLGUuX3lTdGFy dHM9Uy5zdGFydHMsZS5feUVuZHM9Uy5lbmRzKTt2YXIgQz1uZXcgQXJyYXkodyksUD1uZXcg QXJyYXkoYik7Zm9yKHI9MDtyPGI7cisrKUNbMipyXT1FW3JdPT09bT9OYU46RVtyXSxDWzIq cisxXT1MW3JdPT09bT9OYU46TFtyXSxQW3JdPXI7aWYoImxvZyI9PT1sLnR5cGUpZm9yKHI9 MDtyPHc7cis9MilDW3JdPWwuYzJsKENbcl0pO2lmKCJsb2ciPT09eS50eXBlKWZvcihyPTE7 cjx3O3IrPTIpQ1tyXT15LmMybChDW3JdKTtfJiYibG9nIiE9PWwudHlwZSYmImxvZyIhPT15 LnR5cGU/VC50cmVlPW4oQyk6VC5pZHM9UCxoKHQsZSk7dmFyIEksTz1mdW5jdGlvbih0LGUs cixuLGEsbyl7dmFyIHM9cC5zdHlsZSh0LHIpO3MubWFya2VyJiYocy5tYXJrZXIucG9zaXRp b25zPW4pO3MubGluZSYmbi5sZW5ndGg+MSYmaS5leHRlbmRGbGF0KHMubGluZSxwLmxpbmVQ b3NpdGlvbnModCxyLG4pKTtpZihzLmVycm9yWHx8cy5lcnJvclkpe3ZhciBsPXAuZXJyb3JC YXJQb3NpdGlvbnModCxyLG4sYSxvKTtzLmVycm9yWCYmaS5leHRlbmRGbGF0KHMuZXJyb3JY LGwueCkscy5lcnJvclkmJmkuZXh0ZW5kRmxhdChzLmVycm9yWSxsLnkpfXMudGV4dCYmKGku ZXh0ZW5kRmxhdChzLnRleHQse3Bvc2l0aW9uczpufSxwLnRleHRQb3NpdGlvbih0LHIscy50 ZXh0LHMubWFya2VyKSksaS5leHRlbmRGbGF0KHMudGV4dFNlbCx7cG9zaXRpb25zOm59LHAu dGV4dFBvc2l0aW9uKHQscixzLnRleHQscy5tYXJrZXJTZWwpKSxpLmV4dGVuZEZsYXQocy50 ZXh0VW5zZWwse3Bvc2l0aW9uczpufSxwLnRleHRQb3NpdGlvbih0LHIscy50ZXh0LHMubWFy a2VyVW5zZWwpKSk7cmV0dXJuIHN9KHQsMCxlLEMsRSxMKSx6PWQodCx4KTtyZXR1cm4gZihv LGUpLF8/Ty5tYXJrZXImJihJPU8ubWFya2VyLnNpemVBdmd8fE1hdGgubWF4KE8ubWFya2Vy LnNpemUsMykpOkk9YyhlLGIpLHUodCxlLGwseSxFLEwsSSksTy5lcnJvclgmJnYoZSxsLE8u ZXJyb3JYKSxPLmVycm9yWSYmdihlLHksTy5lcnJvclkpLE8uZmlsbCYmIXouZmlsbDJkJiYo ei5maWxsMmQ9ITApLE8ubWFya2VyJiYhei5zY2F0dGVyMmQmJih6LnNjYXR0ZXIyZD0hMCks Ty5saW5lJiYhei5saW5lMmQmJih6LmxpbmUyZD0hMCksIU8uZXJyb3JYJiYhTy5lcnJvcll8 fHouZXJyb3IyZHx8KHouZXJyb3IyZD0hMCksTy50ZXh0JiYhei5nbFRleHQmJih6LmdsVGV4 dD0hMCksTy5tYXJrZXImJihPLm1hcmtlci5zbmFwPWIpLHoubGluZU9wdGlvbnMucHVzaChP LmxpbmUpLHouZXJyb3JYT3B0aW9ucy5wdXNoKE8uZXJyb3JYKSx6LmVycm9yWU9wdGlvbnMu cHVzaChPLmVycm9yWSksei5maWxsT3B0aW9ucy5wdXNoKE8uZmlsbCksei5tYXJrZXJPcHRp b25zLnB1c2goTy5tYXJrZXIpLHoubWFya2VyU2VsZWN0ZWRPcHRpb25zLnB1c2goTy5tYXJr ZXJTZWwpLHoubWFya2VyVW5zZWxlY3RlZE9wdGlvbnMucHVzaChPLm1hcmtlclVuc2VsKSx6 LnRleHRPcHRpb25zLnB1c2goTy50ZXh0KSx6LnRleHRTZWxlY3RlZE9wdGlvbnMucHVzaChP LnRleHRTZWwpLHoudGV4dFVuc2VsZWN0ZWRPcHRpb25zLnB1c2goTy50ZXh0VW5zZWwpLHou c2VsZWN0QmF0Y2gucHVzaChbXSksei51bnNlbGVjdEJhdGNoLnB1c2goW10pLFQuX3NjZW5l PXosVC5pbmRleD16LmNvdW50LFQueD1FLFQueT1MLFQucG9zaXRpb25zPUMsei5jb3VudCsr LFt7eDohMSx5OiExLHQ6VCx0cmFjZTplfV19fSx7Ii4uLy4uL2NvbnN0YW50cy9udW1lcmlj YWwiOjQ3OSwiLi4vLi4vbGliIjo1MDMsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9hbGlnbl9w ZXJpb2QiOjU1MSwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F1dG9yYW5nZSI6NTUzLCIuLi8u Li9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiOjU1OCwiLi4vc2NhdHRlci9jYWxjIjo5Mjgs Ii4uL3NjYXR0ZXIvY29sb3JzY2FsZV9jYWxjIjo5MzAsIi4vY29uc3RhbnRzIjo5ODIsIi4v Y29udmVydCI6OTgzLCIuL3NjZW5lX3VwZGF0ZSI6OTkxLCJAcGxvdGx5L3BvaW50LWNsdXN0 ZXIiOjU5fV0sOTgyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17 VE9PX01BTllfUE9JTlRTOjFlNSxTWU1CT0xfU0RGX1NJWkU6MjAwLFNZTUJPTF9TSVpFOjIw LFNZTUJPTF9TVFJPS0U6MSxET1RfUkU6Ly1kb3QvLE9QRU5fUkU6Ly1vcGVuLyxEQVNIRVM6 e3NvbGlkOlsxXSxkb3Q6WzEsMV0sZGFzaDpbNCwxXSxsb25nZGFzaDpbOCwxXSxkYXNoZG90 Ols0LDEsMSwxXSxsb25nZGFzaGRvdDpbOCwxLDEsMV19fX0se31dLDk4MzpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGk9dCgic3Zn LXBhdGgtc2RmIiksYT10KCJjb2xvci1ub3JtYWxpemUiKSxvPXQoIi4uLy4uL3JlZ2lzdHJ5 Iikscz10KCIuLi8uLi9saWIiKSxsPXQoIi4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLGM9 dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfaWRzIiksdT10KCIuLi8uLi9saWIvZ2xf Zm9ybWF0X2NvbG9yIikuZm9ybWF0Q29sb3IsZj10KCIuLi9zY2F0dGVyL3N1YnR5cGVzIiks aD10KCIuLi9zY2F0dGVyL21ha2VfYnViYmxlX3NpemVfZnVuYyIpLHA9dCgiLi9oZWxwZXJz IiksZD10KCIuL2NvbnN0YW50cyIpLG09dCgiLi4vLi4vY29uc3RhbnRzL2ludGVyYWN0aW9u cyIpLkRFU0VMRUNURElNLGc9e3N0YXJ0OjEsbGVmdDoxLGVuZDotMSxyaWdodDotMSxtaWRk bGU6MCxjZW50ZXI6MCxib3R0b206MSx0b3A6LTF9LHY9dCgiLi4vLi4vY29tcG9uZW50cy9m eC9oZWxwZXJzIikuYXBwZW5kQXJyYXlQb2ludFZhbHVlO2Z1bmN0aW9uIHkodCxlKXt2YXIg cixpPXQuX2Z1bGxMYXlvdXQsYT1lLl9sZW5ndGgsbz1lLnRleHRmb250LGw9ZS50ZXh0cG9z aXRpb24sYz1BcnJheS5pc0FycmF5KGwpP2w6W2xdLHU9by5jb2xvcixmPW8uc2l6ZSxoPW8u ZmFtaWx5LHA9e30sZD10Ll9jb250ZXh0LnBsb3RHbFBpeGVsUmF0aW8sbT1lLnRleHR0ZW1w bGF0ZTtpZihtKXtwLnRleHQ9W107dmFyIGc9aS5fZDNsb2NhbGUseT1BcnJheS5pc0FycmF5 KG0pLHg9eT9NYXRoLm1pbihtLmxlbmd0aCxhKTphLGI9eT9mdW5jdGlvbih0KXtyZXR1cm4g bVt0XX06ZnVuY3Rpb24oKXtyZXR1cm4gbX07Zm9yKHI9MDtyPHg7cisrKXt2YXIgXz17aTpy fSx3PWUuX21vZHVsZS5mb3JtYXRMYWJlbHMoXyxlLGkpLFQ9e307dihULGUscik7dmFyIGs9 ZS5fbWV0YXx8e307cC50ZXh0LnB1c2gocy50ZXh0dGVtcGxhdGVTdHJpbmcoYihyKSx3LGcs VCxfLGspKX19ZWxzZSBBcnJheS5pc0FycmF5KGUudGV4dCkmJmUudGV4dC5sZW5ndGg8YT9w LnRleHQ9ZS50ZXh0LnNsaWNlKCk6cC50ZXh0PWUudGV4dDtpZihBcnJheS5pc0FycmF5KHAu dGV4dCkpZm9yKHI9cC50ZXh0Lmxlbmd0aDtyPGE7cisrKXAudGV4dFtyXT0iIjtmb3IocC5v cGFjaXR5PWUub3BhY2l0eSxwLmZvbnQ9e30scC5hbGlnbj1bXSxwLmJhc2VsaW5lPVtdLHI9 MDtyPGMubGVuZ3RoO3IrKyl7dmFyIEE9Y1tyXS5zcGxpdCgvXHMrLyk7c3dpdGNoKEFbMV0p e2Nhc2UibGVmdCI6cC5hbGlnbi5wdXNoKCJyaWdodCIpO2JyZWFrO2Nhc2UicmlnaHQiOnAu YWxpZ24ucHVzaCgibGVmdCIpO2JyZWFrO2RlZmF1bHQ6cC5hbGlnbi5wdXNoKEFbMV0pfXN3 aXRjaChBWzBdKXtjYXNlInRvcCI6cC5iYXNlbGluZS5wdXNoKCJib3R0b20iKTticmVhaztj YXNlImJvdHRvbSI6cC5iYXNlbGluZS5wdXNoKCJ0b3AiKTticmVhaztkZWZhdWx0OnAuYmFz ZWxpbmUucHVzaChBWzBdKX19aWYoQXJyYXkuaXNBcnJheSh1KSlmb3IocC5jb2xvcj1uZXcg QXJyYXkoYSkscj0wO3I8YTtyKyspcC5jb2xvcltyXT11W3JdO2Vsc2UgcC5jb2xvcj11O2lm KHMuaXNBcnJheU9yVHlwZWRBcnJheShmKXx8QXJyYXkuaXNBcnJheShoKSlmb3IocC5mb250 PW5ldyBBcnJheShhKSxyPTA7cjxhO3IrKyl7dmFyIE09cC5mb250W3JdPXt9O00uc2l6ZT0o cy5pc1R5cGVkQXJyYXkoZik/ZltyXTpBcnJheS5pc0FycmF5KGYpP24oZltyXSk/ZltyXTow OmYpKmQsTS5mYW1pbHk9QXJyYXkuaXNBcnJheShoKT9oW3JdOmh9ZWxzZSBwLmZvbnQ9e3Np emU6ZipkLGZhbWlseTpofTtyZXR1cm4gcH1mdW5jdGlvbiB4KHQpe3ZhciBlLHIsbj10Ll9s ZW5ndGgsaT10Lm1hcmtlcixvPXt9LGw9cy5pc0FycmF5T3JUeXBlZEFycmF5KGkuc3ltYm9s KSxjPXMuaXNBcnJheU9yVHlwZWRBcnJheShpLmNvbG9yKSxmPXMuaXNBcnJheU9yVHlwZWRB cnJheShpLmxpbmUuY29sb3IpLGQ9cy5pc0FycmF5T3JUeXBlZEFycmF5KGkub3BhY2l0eSks bT1zLmlzQXJyYXlPclR5cGVkQXJyYXkoaS5zaXplKSxnPXMuaXNBcnJheU9yVHlwZWRBcnJh eShpLmxpbmUud2lkdGgpO2lmKGx8fChyPXAuaXNPcGVuU3ltYm9sKGkuc3ltYm9sKSksbHx8 Y3x8Znx8ZCl7by5jb2xvcnM9bmV3IEFycmF5KG4pLG8uYm9yZGVyQ29sb3JzPW5ldyBBcnJh eShuKTt2YXIgdj11KGksaS5vcGFjaXR5LG4pLHk9dShpLmxpbmUsaS5vcGFjaXR5LG4pO2lm KCFBcnJheS5pc0FycmF5KHlbMF0pKXt2YXIgeD15O2Zvcih5PUFycmF5KG4pLGU9MDtlPG47 ZSsrKXlbZV09eH1pZighQXJyYXkuaXNBcnJheSh2WzBdKSl7dmFyIGI9djtmb3Iodj1BcnJh eShuKSxlPTA7ZTxuO2UrKyl2W2VdPWJ9Zm9yKG8uY29sb3JzPXYsby5ib3JkZXJDb2xvcnM9 eSxlPTA7ZTxuO2UrKyl7aWYobCl7dmFyIF89aS5zeW1ib2xbZV07cj1wLmlzT3BlblN5bWJv bChfKX1yJiYoeVtlXT12W2VdLnNsaWNlKCksdltlXT12W2VdLnNsaWNlKCksdltlXVszXT0w KX1vLm9wYWNpdHk9dC5vcGFjaXR5fWVsc2Ugcj8oby5jb2xvcj1hKGkuY29sb3IsInVpbnQ4 Iiksby5jb2xvclszXT0wLG8uYm9yZGVyQ29sb3I9YShpLmNvbG9yLCJ1aW50OCIpKTooby5j b2xvcj1hKGkuY29sb3IsInVpbnQ4Iiksby5ib3JkZXJDb2xvcj1hKGkubGluZS5jb2xvciwi dWludDgiKSksby5vcGFjaXR5PXQub3BhY2l0eSppLm9wYWNpdHk7aWYobClmb3Ioby5tYXJr ZXJzPW5ldyBBcnJheShuKSxlPTA7ZTxuO2UrKylvLm1hcmtlcnNbZV09RShpLnN5bWJvbFtl XSk7ZWxzZSBvLm1hcmtlcj1FKGkuc3ltYm9sKTt2YXIgdyxUPWgodCwxKTtpZihtfHxnKXt2 YXIgayxBPW8uc2l6ZXM9bmV3IEFycmF5KG4pLE09by5ib3JkZXJTaXplcz1uZXcgQXJyYXko biksUz0wO2lmKG0pe2ZvcihlPTA7ZTxuO2UrKylBW2VdPVQoaS5zaXplW2VdKSxTKz1BW2Vd O2s9Uy9ufWVsc2UgZm9yKHc9VChpLnNpemUpLGU9MDtlPG47ZSsrKUFbZV09dztpZihnKWZv cihlPTA7ZTxuO2UrKylNW2VdPWkubGluZS53aWR0aFtlXTtlbHNlIGZvcih3PWkubGluZS53 aWR0aCxlPTA7ZTxuO2UrKylNW2VdPXc7by5zaXplQXZnPWt9ZWxzZSBvLnNpemU9VChpJiZp LnNpemV8fDEwKSxvLmJvcmRlclNpemVzPVQoaS5saW5lLndpZHRoKTtyZXR1cm4gb31mdW5j dGlvbiBiKHQsZSl7dmFyIHI9dC5tYXJrZXIsbj17fTtyZXR1cm4gZT8oZS5tYXJrZXImJmUu bWFya2VyLnN5bWJvbD9uPXgocy5leHRlbmRGbGF0KHt9LHIsZS5tYXJrZXIpKTplLm1hcmtl ciYmKGUubWFya2VyLnNpemUmJihuLnNpemU9ZS5tYXJrZXIuc2l6ZSksZS5tYXJrZXIuY29s b3ImJihuLmNvbG9ycz1lLm1hcmtlci5jb2xvciksdm9pZCAwIT09ZS5tYXJrZXIub3BhY2l0 eSYmKG4ub3BhY2l0eT1lLm1hcmtlci5vcGFjaXR5KSksbik6bn1mdW5jdGlvbiBfKHQsZSxy KXt2YXIgbj17fTtpZighcilyZXR1cm4gbjtpZihyLnRleHRmb250KXt2YXIgaT17b3BhY2l0 eToxLHRleHQ6ZS50ZXh0LHRleHR0ZW1wbGF0ZTplLnRleHR0ZW1wbGF0ZSx0ZXh0cG9zaXRp b246ZS50ZXh0cG9zaXRpb24sdGV4dGZvbnQ6cy5leHRlbmRGbGF0KHt9LGUudGV4dGZvbnQp fTtyLnRleHRmb250JiZzLmV4dGVuZEZsYXQoaS50ZXh0Zm9udCxyLnRleHRmb250KSxuPXko dCxpKX1yZXR1cm4gbn1mdW5jdGlvbiB3KHQsZSxyKXt2YXIgbj17Y2FwU2l6ZToyKmUud2lk dGgqcixsaW5lV2lkdGg6ZS50aGlja25lc3Mqcixjb2xvcjplLmNvbG9yfTtyZXR1cm4gZS5j b3B5X3lzdHlsZSYmKG49dC5lcnJvcl95KSxufXZhciBUPWQuU1lNQk9MX1NERl9TSVpFLGs9 ZC5TWU1CT0xfU0laRSxBPWQuU1lNQk9MX1NUUk9LRSxNPXt9LFM9bC5zeW1ib2xGdW5jc1sw XSguMDUqayk7ZnVuY3Rpb24gRSh0KXtpZigiY2lyY2xlIj09PXQpcmV0dXJuIG51bGw7dmFy IGUscixuPWwuc3ltYm9sTnVtYmVyKHQpLGE9bC5zeW1ib2xGdW5jc1tuJTEwMF0sbz0hIWwu c3ltYm9sTm9Eb3RbbiUxMDBdLHM9ISFsLnN5bWJvbE5vRmlsbFtuJTEwMF0sYz1wLmlzRG90 U3ltYm9sKHQpO3JldHVybiBNW3RdP01bdF06KGU9YyYmIW8/YSgxLjEqaykrUzphKGspLHI9 aShlLHt3OlQsaDpULHZpZXdCb3g6Wy1rLC1rLGssa10sc3Ryb2tlOnM/QTotQX0pLE1bdF09 cixyfHxudWxsKX1lLmV4cG9ydHM9e3N0eWxlOmZ1bmN0aW9uKHQsZSl7dmFyIHIsbj17bWFy a2VyOnZvaWQgMCxtYXJrZXJTZWw6dm9pZCAwLG1hcmtlclVuc2VsOnZvaWQgMCxsaW5lOnZv aWQgMCxmaWxsOnZvaWQgMCxlcnJvclg6dm9pZCAwLGVycm9yWTp2b2lkIDAsdGV4dDp2b2lk IDAsdGV4dFNlbDp2b2lkIDAsdGV4dFVuc2VsOnZvaWQgMH0saT10Ll9jb250ZXh0LnBsb3RH bFBpeGVsUmF0aW87aWYoITAhPT1lLnZpc2libGUpcmV0dXJuIG47aWYoZi5oYXNUZXh0KGUp JiYobi50ZXh0PXkodCxlKSxuLnRleHRTZWw9Xyh0LGUsZS5zZWxlY3RlZCksbi50ZXh0VW5z ZWw9Xyh0LGUsZS51bnNlbGVjdGVkKSksZi5oYXNNYXJrZXJzKGUpJiYobi5tYXJrZXI9eChl KSxuLm1hcmtlclNlbD1iKGUsZS5zZWxlY3RlZCksbi5tYXJrZXJVbnNlbD1iKGUsZS51bnNl bGVjdGVkKSwhZS51bnNlbGVjdGVkJiZzLmlzQXJyYXlPclR5cGVkQXJyYXkoZS5tYXJrZXIu b3BhY2l0eSkpKXt2YXIgYT1lLm1hcmtlci5vcGFjaXR5O2ZvcihuLm1hcmtlclVuc2VsLm9w YWNpdHk9bmV3IEFycmF5KGEubGVuZ3RoKSxyPTA7cjxhLmxlbmd0aDtyKyspbi5tYXJrZXJV bnNlbC5vcGFjaXR5W3JdPW0qYVtyXX1pZihmLmhhc0xpbmVzKGUpKXtuLmxpbmU9e292ZXJs YXk6ITAsdGhpY2tuZXNzOmUubGluZS53aWR0aCppLGNvbG9yOmUubGluZS5jb2xvcixvcGFj aXR5OmUub3BhY2l0eX07dmFyIG89KGQuREFTSEVTW2UubGluZS5kYXNoXXx8WzFdKS5zbGlj ZSgpO2ZvcihyPTA7cjxvLmxlbmd0aDsrK3Ipb1tyXSo9ZS5saW5lLndpZHRoKmk7bi5saW5l LmRhc2hlcz1vfXJldHVybiBlLmVycm9yX3gmJmUuZXJyb3JfeC52aXNpYmxlJiYobi5lcnJv clg9dyhlLGUuZXJyb3JfeCxpKSksZS5lcnJvcl95JiZlLmVycm9yX3kudmlzaWJsZSYmKG4u ZXJyb3JZPXcoZSxlLmVycm9yX3ksaSkpLGUuZmlsbCYmIm5vbmUiIT09ZS5maWxsJiYobi5m aWxsPXtjbG9zZWQ6ITAsZmlsbDplLmZpbGxjb2xvcix0aGlja25lc3M6MH0pLG59LG1hcmtl clN0eWxlOngsbWFya2VyU2VsZWN0aW9uOmIsbGluZVBvc2l0aW9uczpmdW5jdGlvbih0LGUs cil7dmFyIG4saSxhPXIubGVuZ3RoLG89YS8yO2lmKGYuaGFzTGluZXMoZSkmJm8paWYoImh2 Ij09PWUubGluZS5zaGFwZSl7Zm9yKG49W10saT0wO2k8by0xO2krKylpc05hTihyWzIqaV0p fHxpc05hTihyWzIqaSsxXSk/bi5wdXNoKE5hTixOYU4sTmFOLE5hTik6KG4ucHVzaChyWzIq aV0sclsyKmkrMV0pLGlzTmFOKHJbMippKzJdKXx8aXNOYU4oclsyKmkrM10pP24ucHVzaChO YU4sTmFOKTpuLnB1c2goclsyKmkrMl0sclsyKmkrMV0pKTtuLnB1c2goclthLTJdLHJbYS0x XSl9ZWxzZSBpZigiaHZoIj09PWUubGluZS5zaGFwZSl7Zm9yKG49W10saT0wO2k8by0xO2kr KylpZihpc05hTihyWzIqaV0pfHxpc05hTihyWzIqaSsxXSl8fGlzTmFOKHJbMippKzJdKXx8 aXNOYU4oclsyKmkrM10pKWlzTmFOKHJbMippXSl8fGlzTmFOKHJbMippKzFdKT9uLnB1c2go TmFOLE5hTik6bi5wdXNoKHJbMippXSxyWzIqaSsxXSksbi5wdXNoKE5hTixOYU4pO2Vsc2V7 dmFyIHM9KHJbMippXStyWzIqaSsyXSkvMjtuLnB1c2goclsyKmldLHJbMippKzFdLHMsclsy KmkrMV0scyxyWzIqaSszXSl9bi5wdXNoKHJbYS0yXSxyW2EtMV0pfWVsc2UgaWYoInZodiI9 PT1lLmxpbmUuc2hhcGUpe2ZvcihuPVtdLGk9MDtpPG8tMTtpKyspaWYoaXNOYU4oclsyKmld KXx8aXNOYU4oclsyKmkrMV0pfHxpc05hTihyWzIqaSsyXSl8fGlzTmFOKHJbMippKzNdKSlp c05hTihyWzIqaV0pfHxpc05hTihyWzIqaSsxXSk/bi5wdXNoKE5hTixOYU4pOm4ucHVzaChy WzIqaV0sclsyKmkrMV0pLG4ucHVzaChOYU4sTmFOKTtlbHNle3ZhciBsPShyWzIqaSsxXSty WzIqaSszXSkvMjtuLnB1c2goclsyKmldLHJbMippKzFdLHJbMippXSxsLHJbMippKzJdLGwp fW4ucHVzaChyW2EtMl0sclthLTFdKX1lbHNlIGlmKCJ2aCI9PT1lLmxpbmUuc2hhcGUpe2Zv cihuPVtdLGk9MDtpPG8tMTtpKyspaXNOYU4oclsyKmldKXx8aXNOYU4oclsyKmkrMV0pP24u cHVzaChOYU4sTmFOLE5hTixOYU4pOihuLnB1c2goclsyKmldLHJbMippKzFdKSxpc05hTihy WzIqaSsyXSl8fGlzTmFOKHJbMippKzNdKT9uLnB1c2goTmFOLE5hTik6bi5wdXNoKHJbMipp XSxyWzIqaSszXSkpO24ucHVzaChyW2EtMl0sclthLTFdKX1lbHNlIG49cjt2YXIgYz0hMTtm b3IoaT0wO2k8bi5sZW5ndGg7aSsrKWlmKGlzTmFOKG5baV0pKXtjPSEwO2JyZWFrfXZhciB1 PWN8fG4ubGVuZ3RoPmQuVE9PX01BTllfUE9JTlRTfHxmLmhhc01hcmtlcnMoZSk/InJlY3Qi OiJyb3VuZCI7aWYoYyYmZS5jb25uZWN0Z2Fwcyl7dmFyIGg9blswXSxwPW5bMV07Zm9yKGk9 MDtpPG4ubGVuZ3RoO2krPTIpaXNOYU4obltpXSl8fGlzTmFOKG5baSsxXSk/KG5baV09aCxu W2krMV09cCk6KGg9bltpXSxwPW5baSsxXSl9cmV0dXJue2pvaW46dSxwb3NpdGlvbnM6bn19 LGVycm9yQmFyUG9zaXRpb25zOmZ1bmN0aW9uKHQsZSxyLGksYSl7dmFyIHM9by5nZXRDb21w b25lbnRNZXRob2QoImVycm9yYmFycyIsIm1ha2VDb21wdXRlRXJyb3IiKSxsPWMuZ2V0RnJv bUlkKHQsZS54YXhpcyksdT1jLmdldEZyb21JZCh0LGUueWF4aXMpLGY9ci5sZW5ndGgvMixo PXt9O2Z1bmN0aW9uIHAodCxpKXt2YXIgYT1pLl9pZC5jaGFyQXQoMCksbz1lWyJlcnJvcl8i K2FdO2lmKG8mJm8udmlzaWJsZSYmKCJsaW5lYXIiPT09aS50eXBlfHwibG9nIj09PWkudHlw ZSkpe2Zvcih2YXIgbD1zKG8pLGM9e3g6MCx5OjF9W2FdLHU9e3g6WzAsMSwyLDNdLHk6WzIs MywwLDFdfVthXSxwPW5ldyBGbG9hdDY0QXJyYXkoNCpmKSxkPTEvMCxtPS0xLzAsZz0wLHY9 MDtnPGY7ZysrLHYrPTQpe3ZhciB5PXRbZ107aWYobih5KSl7dmFyIHg9clsyKmcrY10sYj1s KHksZyksXz1iWzBdLHc9YlsxXTtpZihuKF8pJiZuKHcpKXt2YXIgVD15LV8saz15K3c7cFt2 K3VbMF1dPXgtaS5jMmwoVCkscFt2K3VbMV1dPWkuYzJsKGspLXgscFt2K3VbMl1dPTAscFt2 K3VbM11dPTAsZD1NYXRoLm1pbihkLHktXyksbT1NYXRoLm1heChtLHkrdyl9fX1oW2FdPXtw b3NpdGlvbnM6cixlcnJvcnM6cCxfYm5kczpbZCxtXX19fXJldHVybiBwKGksbCkscChhLHUp LGh9LHRleHRQb3NpdGlvbjpmdW5jdGlvbih0LGUscixuKXt2YXIgaSxhPWUuX2xlbmd0aCxv PXt9O2lmKGYuaGFzTWFya2VycyhlKSl7dmFyIHM9ci5mb250LGw9ci5hbGlnbixjPXIuYmFz ZWxpbmU7Zm9yKG8ub2Zmc2V0PW5ldyBBcnJheShhKSxpPTA7aTxhO2krKyl7dmFyIHU9bi5z aXplcz9uLnNpemVzW2ldOm4uc2l6ZSxoPUFycmF5LmlzQXJyYXkocyk/c1tpXS5zaXplOnMu c2l6ZSxwPUFycmF5LmlzQXJyYXkobCk/bC5sZW5ndGg+MT9sW2ldOmxbMF06bCxkPUFycmF5 LmlzQXJyYXkoYyk/Yy5sZW5ndGg+MT9jW2ldOmNbMF06YyxtPWdbcF0sdj1nW2RdLHk9dT91 Ly44KzE6MCx4PS12KnktLjUqdjtvLm9mZnNldFtpXT1bbSp5L2gseC9oXX19cmV0dXJuIG99 fX0seyIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjM4OCwiLi4vLi4vY29tcG9uZW50cy9m eC9oZWxwZXJzIjo0MDIsIi4uLy4uL2NvbnN0YW50cy9pbnRlcmFjdGlvbnMiOjQ3OCwiLi4v Li4vbGliIjo1MDMsIi4uLy4uL2xpYi9nbF9mb3JtYXRfY29sb3IiOjQ5OSwiLi4vLi4vcGxv dHMvY2FydGVzaWFuL2F4aXNfaWRzIjo1NTgsIi4uLy4uL3JlZ2lzdHJ5Ijo2MzgsIi4uL3Nj YXR0ZXIvbWFrZV9idWJibGVfc2l6ZV9mdW5jIjo5NDQsIi4uL3NjYXR0ZXIvc3VidHlwZXMi Ojk1MiwiLi9jb25zdGFudHMiOjk4MiwiLi9oZWxwZXJzIjo5ODcsImNvbG9yLW5vcm1hbGl6 ZSI6ODksImZhc3QtaXNudW1lcmljIjoxOTAsInN2Zy1wYXRoLXNkZiI6MzEwfV0sOTg0Oltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgi Li4vLi4vcmVnaXN0cnkiKSxhPXQoIi4vaGVscGVycyIpLG89dCgiLi9hdHRyaWJ1dGVzIiks cz10KCIuLi9zY2F0dGVyL2NvbnN0YW50cyIpLGw9dCgiLi4vc2NhdHRlci9zdWJ0eXBlcyIp LGM9dCgiLi4vc2NhdHRlci94eV9kZWZhdWx0cyIpLHU9dCgiLi4vc2NhdHRlci9wZXJpb2Rf ZGVmYXVsdHMiKSxmPXQoIi4uL3NjYXR0ZXIvbWFya2VyX2RlZmF1bHRzIiksaD10KCIuLi9z Y2F0dGVyL2xpbmVfZGVmYXVsdHMiKSxwPXQoIi4uL3NjYXR0ZXIvZmlsbGNvbG9yX2RlZmF1 bHRzIiksZD10KCIuLi9zY2F0dGVyL3RleHRfZGVmYXVsdHMiKTtlLmV4cG9ydHM9ZnVuY3Rp b24odCxlLHIsbSl7ZnVuY3Rpb24gZyhyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUsbyxyLGkp fXZhciB2PSEhdC5tYXJrZXImJmEuaXNPcGVuU3ltYm9sKHQubWFya2VyLnN5bWJvbCkseT1s LmlzQnViYmxlKHQpLHg9Yyh0LGUsbSxnKTtpZih4KXt1KHQsZSxtLGcpLGcoInhob3ZlcmZv cm1hdCIpLGcoInlob3ZlcmZvcm1hdCIpO3ZhciBiPXg8cy5QVFNfTElORVNPTkxZPyJsaW5l cyttYXJrZXJzIjoibGluZXMiO2coInRleHQiKSxnKCJob3ZlcnRleHQiKSxnKCJob3ZlcnRl bXBsYXRlIiksZygibW9kZSIsYiksbC5oYXNMaW5lcyhlKSYmKGcoImNvbm5lY3RnYXBzIiks aCh0LGUscixtLGcpLGcoImxpbmUuc2hhcGUiKSksbC5oYXNNYXJrZXJzKGUpJiYoZih0LGUs cixtLGcpLGcoIm1hcmtlci5saW5lLndpZHRoIix2fHx5PzE6MCkpLGwuaGFzVGV4dChlKSYm KGcoInRleHR0ZW1wbGF0ZSIpLGQodCxlLG0sZykpO3ZhciBfPShlLmxpbmV8fHt9KS5jb2xv cix3PShlLm1hcmtlcnx8e30pLmNvbG9yO2coImZpbGwiKSwibm9uZSIhPT1lLmZpbGwmJnAo dCxlLHIsZyk7dmFyIFQ9aS5nZXRDb21wb25lbnRNZXRob2QoImVycm9yYmFycyIsInN1cHBs eURlZmF1bHRzIik7VCh0LGUsX3x8d3x8cix7YXhpczoieSJ9KSxUKHQsZSxffHx3fHxyLHth eGlzOiJ4Iixpbmhlcml0OiJ5In0pLG4uY29lcmNlU2VsZWN0aW9uTWFya2VyT3BhY2l0eShl LGcpfWVsc2UgZS52aXNpYmxlPSExfX0seyIuLi8uLi9saWIiOjUwMywiLi4vLi4vcmVnaXN0 cnkiOjYzOCwiLi4vc2NhdHRlci9jb25zdGFudHMiOjkzMSwiLi4vc2NhdHRlci9maWxsY29s b3JfZGVmYXVsdHMiOjkzNSwiLi4vc2NhdHRlci9saW5lX2RlZmF1bHRzIjo5NDAsIi4uL3Nj YXR0ZXIvbWFya2VyX2RlZmF1bHRzIjo5NDYsIi4uL3NjYXR0ZXIvcGVyaW9kX2RlZmF1bHRz Ijo5NDcsIi4uL3NjYXR0ZXIvc3VidHlwZXMiOjk1MiwiLi4vc2NhdHRlci90ZXh0X2RlZmF1 bHRzIjo5NTMsIi4uL3NjYXR0ZXIveHlfZGVmYXVsdHMiOjk1NCwiLi9hdHRyaWJ1dGVzIjo5 NzksIi4vaGVscGVycyI6OTg3fV0sOTg1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIpLGE9 dCgiLi4vLi4vY29uc3RhbnRzL2ludGVyYWN0aW9ucyIpLkRFU0VMRUNURElNO2UuZXhwb3J0 cz17c3R5bGVUZXh0U2VsZWN0aW9uOmZ1bmN0aW9uKHQpe3ZhciBlLHIsbz10WzBdLHM9by50 cmFjZSxsPW8udCxjPWwuX3NjZW5lLHU9bC5pbmRleCxmPWMuc2VsZWN0QmF0Y2hbdV0saD1j LnVuc2VsZWN0QmF0Y2hbdV0scD1jLnRleHRPcHRpb25zW3VdLGQ9Yy50ZXh0U2VsZWN0ZWRP cHRpb25zW3VdfHx7fSxtPWMudGV4dFVuc2VsZWN0ZWRPcHRpb25zW3VdfHx7fSxnPW4uZXh0 ZW5kRmxhdCh7fSxwKTtpZihmLmxlbmd0aHx8aC5sZW5ndGgpe3ZhciB2PWQuY29sb3IseT1t LmNvbG9yLHg9cC5jb2xvcixiPUFycmF5LmlzQXJyYXkoeCk7Zm9yKGcuY29sb3I9bmV3IEFy cmF5KHMuX2xlbmd0aCksZT0wO2U8Zi5sZW5ndGg7ZSsrKXI9ZltlXSxnLmNvbG9yW3JdPXZ8 fChiP3hbcl06eCk7Zm9yKGU9MDtlPGgubGVuZ3RoO2UrKyl7cj1oW2VdO3ZhciBfPWI/eFty XTp4O2cuY29sb3Jbcl09eXx8KHY/XzppLmFkZE9wYWNpdHkoXyxhKSl9fWMuZ2xUZXh0W3Vd LnVwZGF0ZShnKX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjM2NiwiLi4vLi4vY29u c3RhbnRzL2ludGVyYWN0aW9ucyI6NDc4LCIuLi8uLi9saWIiOjUwM31dLDk4NjpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9zY2F0dGVyL2Zvcm1hdF9sYWJl bHMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBpPXQuaTtyZXR1cm4ieCJpbiB0 fHwodC54PWUuX3hbaV0pLCJ5ImluIHR8fCh0Lnk9ZS5feVtpXSksbih0LGUscil9fSx7Ii4u L3NjYXR0ZXIvZm9ybWF0X2xhYmVscyI6OTM2fV0sOTg3OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoIi4vY29uc3RhbnRzIik7ci5pc09wZW5TeW1ib2w9ZnVuY3Rp b24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P24uT1BFTl9SRS50ZXN0KHQpOnQlMjAw PjEwMH0sci5pc0RvdFN5bWJvbD1mdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9m IHQ/bi5ET1RfUkUudGVzdCh0KTp0PjIwMH19LHsiLi9jb25zdGFudHMiOjk4Mn1dLDk4ODpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9yZWdpc3RyeSIp LGk9dCgiLi4vLi4vbGliIiksYT10KCIuLi9zY2F0dGVyL2dldF90cmFjZV9jb2xvciIpO2Z1 bmN0aW9uIG8odCxlLHIsbyl7dmFyIHM9dC54YSxsPXQueWEsYz10LmRpc3RhbmNlLHU9dC5k eHksZj10LmluZGV4LGg9e3BvaW50TnVtYmVyOmYseDplW2ZdLHk6cltmXX07aC50eD1BcnJh eS5pc0FycmF5KG8udGV4dCk/by50ZXh0W2ZdOm8udGV4dCxoLmh0eD1BcnJheS5pc0FycmF5 KG8uaG92ZXJ0ZXh0KT9vLmhvdmVydGV4dFtmXTpvLmhvdmVydGV4dCxoLmRhdGE9QXJyYXku aXNBcnJheShvLmN1c3RvbWRhdGEpP28uY3VzdG9tZGF0YVtmXTpvLmN1c3RvbWRhdGEsaC50 cD1BcnJheS5pc0FycmF5KG8udGV4dHBvc2l0aW9uKT9vLnRleHRwb3NpdGlvbltmXTpvLnRl eHRwb3NpdGlvbjt2YXIgcD1vLnRleHRmb250O3AmJihoLnRzPWkuaXNBcnJheU9yVHlwZWRB cnJheShwLnNpemUpP3Auc2l6ZVtmXTpwLnNpemUsaC50Yz1BcnJheS5pc0FycmF5KHAuY29s b3IpP3AuY29sb3JbZl06cC5jb2xvcixoLnRmPUFycmF5LmlzQXJyYXkocC5mYW1pbHkpP3Au ZmFtaWx5W2ZdOnAuZmFtaWx5KTt2YXIgZD1vLm1hcmtlcjtkJiYoaC5tcz1pLmlzQXJyYXlP clR5cGVkQXJyYXkoZC5zaXplKT9kLnNpemVbZl06ZC5zaXplLGgubW89aS5pc0FycmF5T3JU eXBlZEFycmF5KGQub3BhY2l0eSk/ZC5vcGFjaXR5W2ZdOmQub3BhY2l0eSxoLm14PWkuaXNB cnJheU9yVHlwZWRBcnJheShkLnN5bWJvbCk/ZC5zeW1ib2xbZl06ZC5zeW1ib2wsaC5tYz1p LmlzQXJyYXlPclR5cGVkQXJyYXkoZC5jb2xvcik/ZC5jb2xvcltmXTpkLmNvbG9yKTt2YXIg bT1kJiZkLmxpbmU7bSYmKGgubWxjPUFycmF5LmlzQXJyYXkobS5jb2xvcik/bS5jb2xvcltm XTptLmNvbG9yLGgubWx3PWkuaXNBcnJheU9yVHlwZWRBcnJheShtLndpZHRoKT9tLndpZHRo W2ZdOm0ud2lkdGgpO3ZhciBnPWQmJmQuZ3JhZGllbnQ7ZyYmIm5vbmUiIT09Zy50eXBlJiYo aC5tZ3Q9QXJyYXkuaXNBcnJheShnLnR5cGUpP2cudHlwZVtmXTpnLnR5cGUsaC5tZ2M9QXJy YXkuaXNBcnJheShnLmNvbG9yKT9nLmNvbG9yW2ZdOmcuY29sb3IpO3ZhciB2PXMuYzJwKGgu eCwhMCkseT1sLmMycChoLnksITApLHg9aC5tcmN8fDEsYj1vLmhvdmVybGFiZWw7YiYmKGgu aGJnPUFycmF5LmlzQXJyYXkoYi5iZ2NvbG9yKT9iLmJnY29sb3JbZl06Yi5iZ2NvbG9yLGgu aGJjPUFycmF5LmlzQXJyYXkoYi5ib3JkZXJjb2xvcik/Yi5ib3JkZXJjb2xvcltmXTpiLmJv cmRlcmNvbG9yLGguaHRzPWkuaXNBcnJheU9yVHlwZWRBcnJheShiLmZvbnQuc2l6ZSk/Yi5m b250LnNpemVbZl06Yi5mb250LnNpemUsaC5odGM9QXJyYXkuaXNBcnJheShiLmZvbnQuY29s b3IpP2IuZm9udC5jb2xvcltmXTpiLmZvbnQuY29sb3IsaC5odGY9QXJyYXkuaXNBcnJheShi LmZvbnQuZmFtaWx5KT9iLmZvbnQuZmFtaWx5W2ZdOmIuZm9udC5mYW1pbHksaC5obmw9aS5p c0FycmF5T3JUeXBlZEFycmF5KGIubmFtZWxlbmd0aCk/Yi5uYW1lbGVuZ3RoW2ZdOmIubmFt ZWxlbmd0aCk7dmFyIF89by5ob3ZlcmluZm87XyYmKGguaGk9QXJyYXkuaXNBcnJheShfKT9f W2ZdOl8pO3ZhciB3PW8uaG92ZXJ0ZW1wbGF0ZTt3JiYoaC5odD1BcnJheS5pc0FycmF5KHcp P3dbZl06dyk7dmFyIFQ9e307VFt0LmluZGV4XT1oO3ZhciBrPW8uX29yaWdYLEE9by5fb3Jp Z1ksTT1pLmV4dGVuZEZsYXQoe30sdCx7Y29sb3I6YShvLGgpLHgwOnYteCx4MTp2K3gseExh YmVsVmFsOms/a1tmXTpoLngseTA6eS14LHkxOnkreCx5TGFiZWxWYWw6QT9BW2ZdOmgueSxj ZDpULGRpc3RhbmNlOmMsc3Bpa2VEaXN0YW5jZTp1LGhvdmVydGVtcGxhdGU6aC5odH0pO3Jl dHVybiBoLmh0eD9NLnRleHQ9aC5odHg6aC50eD9NLnRleHQ9aC50eDpvLnRleHQmJihNLnRl eHQ9by50ZXh0KSxpLmZpbGxUZXh0KGgsbyxNKSxuLmdldENvbXBvbmVudE1ldGhvZCgiZXJy b3JiYXJzIiwiaG92ZXJJbmZvIikoaCxvLE0pLE19ZS5leHBvcnRzPXtob3ZlclBvaW50czpm dW5jdGlvbih0LGUscixuKXt2YXIgaSxhLHMsbCxjLHUsZixoLHAsZCxtPXQuY2QsZz1tWzBd LnQsdj1tWzBdLnRyYWNlLHk9dC54YSx4PXQueWEsYj1nLngsXz1nLnksdz15LmMycChlKSxU PXguYzJwKHIpLGs9dC5kaXN0YW5jZTtpZihnLnRyZWUpe3ZhciBBPXkucDJjKHctayksTT15 LnAyYyh3K2spLFM9eC5wMmMoVC1rKSxFPXgucDJjKFQrayk7aT0ieCI9PT1uP2cudHJlZS5y YW5nZShNYXRoLm1pbihBLE0pLE1hdGgubWluKHguX3JsWzBdLHguX3JsWzFdKSxNYXRoLm1h eChBLE0pLE1hdGgubWF4KHguX3JsWzBdLHguX3JsWzFdKSk6Zy50cmVlLnJhbmdlKE1hdGgu bWluKEEsTSksTWF0aC5taW4oUyxFKSxNYXRoLm1heChBLE0pLE1hdGgubWF4KFMsRSkpfWVs c2UgaT1nLmlkczt2YXIgTD1rO2lmKCJ4Ij09PW4pe3ZhciBDPSEhdi54cGVyaW9kYWxpZ25t ZW50LFA9ISF2LnlwZXJpb2RhbGlnbm1lbnQ7Zm9yKHU9MDt1PGkubGVuZ3RoO3UrKyl7aWYo bD1iW2E9aVt1XV0sZj1NYXRoLmFicyh5LmMycChsKS13KSxDKXt2YXIgST15LmMycCh2Ll94 U3RhcnRzW2FdKSxPPXkuYzJwKHYuX3hFbmRzW2FdKTtmPXc+PU1hdGgubWluKEksTykmJnc8 PU1hdGgubWF4KEksTyk/MDoxLzB9aWYoZjxMKXtpZihMPWYsYz1fW2FdLGg9eC5jMnAoYykt VCxQKXt2YXIgej14LmMycCh2Ll95U3RhcnRzW2FdKSxEPXguYzJwKHYuX3lFbmRzW2FdKTto PVQ+PU1hdGgubWluKHosRCkmJlQ8PU1hdGgubWF4KHosRCk/MDoxLzB9ZD1NYXRoLnNxcnQo ZipmK2gqaCkscz1pW3VdfX19ZWxzZSBmb3IodT1pLmxlbmd0aC0xO3U+LTE7dS0tKWw9Ylth PWlbdV1dLGM9X1thXSxmPXkuYzJwKGwpLXcsaD14LmMycChjKS1ULChwPU1hdGguc3FydChm KmYraCpoKSk8TCYmKEw9ZD1wLHM9YSk7cmV0dXJuIHQuaW5kZXg9cyx0LmRpc3RhbmNlPUws dC5keHk9ZCx2b2lkIDA9PT1zP1t0XTpbbyh0LGIsXyx2KV19LGNhbGNIb3ZlcjpvfX0seyIu Li8uLi9saWIiOjUwMywiLi4vLi4vcmVnaXN0cnkiOjYzOCwiLi4vc2NhdHRlci9nZXRfdHJh Y2VfY29sb3IiOjkzN31dLDk4OTpbZnVuY3Rpb24odCxlLHIpe2FyZ3VtZW50c1s0XVs4OTZd WzBdLmFwcGx5KHIsYXJndW1lbnRzKX0seyIuL2Jhc2VfaW5kZXgiOjk4MCwiLi9wbG90Ijo5 OTAsZHVwOjg5Nn1dLDk5MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCJyZWdsLXNjYXR0ZXIyZCIpLGk9dCgicmVnbC1saW5lMmQiKSxhPXQoInJlZ2wtZXJyb3Iy ZCIpLG89dCgiZ2wtdGV4dCIpLHM9dCgiLi4vLi4vbGliIiksbD10KCIuLi8uLi9jb21wb25l bnRzL2RyYWdlbGVtZW50L2hlbHBlcnMiKS5zZWxlY3RNb2RlLGM9dCgiLi4vLi4vbGliL3By ZXBhcmVfcmVnbCIpLHU9dCgiLi4vc2NhdHRlci9zdWJ0eXBlcyIpLGY9dCgiLi4vc2NhdHRl ci9saW5rX3RyYWNlcyIpLGg9dCgiLi9lZGl0X3N0eWxlIikuc3R5bGVUZXh0U2VsZWN0aW9u LHA9e307ZnVuY3Rpb24gZCh0LGUscixuKXt2YXIgaT10Ll9zaXplLGE9dC53aWR0aCpuLG89 dC5oZWlnaHQqbixzPWkubCpuLGw9aS5iKm4sYz1pLnIqbix1PWkudCpuLGY9aS53Km4saD1p LmgqbjtyZXR1cm5bcytlLmRvbWFpblswXSpmLGwrci5kb21haW5bMF0qaCxhLWMtKDEtZS5k b21haW5bMV0pKmYsby11LSgxLXIuZG9tYWluWzFdKSpoXX0oZS5leHBvcnRzPWZ1bmN0aW9u KHQsZSxyKXtpZihyLmxlbmd0aCl7dmFyIG0sZyx2PXQuX2Z1bGxMYXlvdXQseT1lLl9zY2Vu ZSx4PWUueGF4aXMsYj1lLnlheGlzO2lmKHkpaWYoYyh0LFsiQU5HTEVfaW5zdGFuY2VkX2Fy cmF5cyIsIk9FU19lbGVtZW50X2luZGV4X3VpbnQiXSxwKSl7dmFyIF89eS5jb3VudCx3PXYu X2dsY2FudmFzLmRhdGEoKVswXS5yZWdsO2lmKGYodCxlLHIpLHkuZGlydHkpe2lmKCEwPT09 eS5lcnJvcjJkJiYoeS5lcnJvcjJkPWEodykpLCEwPT09eS5saW5lMmQmJih5LmxpbmUyZD1p KHcpKSwhMD09PXkuc2NhdHRlcjJkJiYoeS5zY2F0dGVyMmQ9bih3KSksITA9PT15LmZpbGwy ZCYmKHkuZmlsbDJkPWkodykpLCEwPT09eS5nbFRleHQpZm9yKHkuZ2xUZXh0PW5ldyBBcnJh eShfKSxtPTA7bTxfO20rKyl5LmdsVGV4dFttXT1uZXcgbyh3KTtpZih5LmdsVGV4dCl7aWYo Xz55LmdsVGV4dC5sZW5ndGgpe3ZhciBUPV8teS5nbFRleHQubGVuZ3RoO2ZvcihtPTA7bTxU O20rKyl5LmdsVGV4dC5wdXNoKG5ldyBvKHcpKX1lbHNlIGlmKF88eS5nbFRleHQubGVuZ3Ro KXt2YXIgaz15LmdsVGV4dC5sZW5ndGgtXzt5LmdsVGV4dC5zcGxpY2UoXyxrKS5mb3JFYWNo KChmdW5jdGlvbih0KXt0LmRlc3Ryb3koKX0pKX1mb3IobT0wO208XzttKyspeS5nbFRleHRb bV0udXBkYXRlKHkudGV4dE9wdGlvbnNbbV0pfWlmKHkubGluZTJkJiYoeS5saW5lMmQudXBk YXRlKHkubGluZU9wdGlvbnMpLHkubGluZU9wdGlvbnM9eS5saW5lT3B0aW9ucy5tYXAoKGZ1 bmN0aW9uKHQpe2lmKHQmJnQucG9zaXRpb25zKXtmb3IodmFyIGU9dC5wb3NpdGlvbnMscj0w O3I8ZS5sZW5ndGgmJihpc05hTihlW3JdKXx8aXNOYU4oZVtyKzFdKSk7KXIrPTI7Zm9yKHZh ciBuPWUubGVuZ3RoLTI7bj5yJiYoaXNOYU4oZVtuXSl8fGlzTmFOKGVbbisxXSkpOyluLT0y O3QucG9zaXRpb25zPWUuc2xpY2UocixuKzIpfXJldHVybiB0fSkpLHkubGluZTJkLnVwZGF0 ZSh5LmxpbmVPcHRpb25zKSkseS5lcnJvcjJkKXt2YXIgQT0oeS5lcnJvclhPcHRpb25zfHxb XSkuY29uY2F0KHkuZXJyb3JZT3B0aW9uc3x8W10pO3kuZXJyb3IyZC51cGRhdGUoQSl9eS5z Y2F0dGVyMmQmJnkuc2NhdHRlcjJkLnVwZGF0ZSh5Lm1hcmtlck9wdGlvbnMpLHkuZmlsbE9y ZGVyPXMucmVwZWF0KG51bGwsXykseS5maWxsMmQmJih5LmZpbGxPcHRpb25zPXkuZmlsbE9w dGlvbnMubWFwKChmdW5jdGlvbih0LGUpe3ZhciBuPXJbZV07aWYodCYmbiYmblswXSYmblsw XS50cmFjZSl7dmFyIGksYSxvPW5bMF0scz1vLnRyYWNlLGw9by50LGM9eS5saW5lT3B0aW9u c1tlXSx1PVtdO3MuX293bmZpbGwmJnUucHVzaChlKSxzLl9uZXh0dHJhY2UmJnUucHVzaChl KzEpLHUubGVuZ3RoJiYoeS5maWxsT3JkZXJbZV09dSk7dmFyIGYsaCxwPVtdLGQ9YyYmYy5w b3NpdGlvbnN8fGwucG9zaXRpb25zO2lmKCJ0b3plcm95Ij09PXMuZmlsbCl7Zm9yKGY9MDtm PGQubGVuZ3RoJiZpc05hTihkW2YrMV0pOylmKz0yO2ZvcihoPWQubGVuZ3RoLTI7aD5mJiZp c05hTihkW2grMV0pOyloLT0yOzAhPT1kW2YrMV0mJihwPVtkW2ZdLDBdKSxwPXAuY29uY2F0 KGQuc2xpY2UoZixoKzIpKSwwIT09ZFtoKzFdJiYocD1wLmNvbmNhdChbZFtoXSwwXSkpfWVs c2UgaWYoInRvemVyb3giPT09cy5maWxsKXtmb3IoZj0wO2Y8ZC5sZW5ndGgmJmlzTmFOKGRb Zl0pOylmKz0yO2ZvcihoPWQubGVuZ3RoLTI7aD5mJiZpc05hTihkW2hdKTspaC09MjswIT09 ZFtmXSYmKHA9WzAsZFtmKzFdXSkscD1wLmNvbmNhdChkLnNsaWNlKGYsaCsyKSksMCE9PWRb aF0mJihwPXAuY29uY2F0KFswLGRbaCsxXV0pKX1lbHNlIGlmKCJ0b3NlbGYiPT09cy5maWxs fHwidG9uZXh0Ij09PXMuZmlsbCl7Zm9yKHA9W10saT0wLHQuc3BsaXROdWxsPSEwLGE9MDth PGQubGVuZ3RoO2ErPTIpKGlzTmFOKGRbYV0pfHxpc05hTihkW2ErMV0pKSYmKChwPXAuY29u Y2F0KGQuc2xpY2UoaSxhKSkpLnB1c2goZFtpXSxkW2krMV0pLHAucHVzaChudWxsLG51bGwp LGk9YSsyKTtwPXAuY29uY2F0KGQuc2xpY2UoaSkpLGkmJnAucHVzaChkW2ldLGRbaSsxXSl9 ZWxzZXt2YXIgbT1zLl9uZXh0dHJhY2U7aWYobSl7dmFyIGc9eS5saW5lT3B0aW9uc1tlKzFd O2lmKGcpe3ZhciB2PWcucG9zaXRpb25zO2lmKCJ0b25leHR5Ij09PXMuZmlsbCl7Zm9yKHA9 ZC5zbGljZSgpLGU9TWF0aC5mbG9vcih2Lmxlbmd0aC8yKTtlLS07KXt2YXIgeD12WzIqZV0s Yj12WzIqZSsxXTtpc05hTih4KXx8aXNOYU4oYil8fHAucHVzaCh4LGIpfXQuZmlsbD1tLmZp bGxjb2xvcn19fX1pZihzLl9wcmV2dHJhY2UmJiJ0b25leHQiPT09cy5fcHJldnRyYWNlLmZp bGwpe3ZhciBfPXkubGluZU9wdGlvbnNbZS0xXS5wb3NpdGlvbnMsdz1wLmxlbmd0aC8yLFQ9 W2k9d107Zm9yKGE9MDthPF8ubGVuZ3RoO2ErPTIpKGlzTmFOKF9bYV0pfHxpc05hTihfW2Er MV0pKSYmKFQucHVzaChhLzIrdysxKSxpPWErMik7cD1wLmNvbmNhdChfKSx0LmhvbGU9VH1y ZXR1cm4gdC5maWxsbW9kZT1zLmZpbGwsdC5vcGFjaXR5PXMub3BhY2l0eSx0LnBvc2l0aW9u cz1wLHR9fSkpLHkuZmlsbDJkLnVwZGF0ZSh5LmZpbGxPcHRpb25zKSl9dmFyIE09di5kcmFn bW9kZSxTPWwoTSksRT12LmNsaWNrbW9kZS5pbmRleE9mKCJzZWxlY3QiKT4tMTtmb3IobT0w O208XzttKyspe3ZhciBMPXJbbV1bMF0sQz1MLnRyYWNlLFA9TC50LEk9UC5pbmRleCxPPUMu X2xlbmd0aCx6PVAueCxEPVAueTtpZihDLnNlbGVjdGVkcG9pbnRzfHxTfHxFKXtpZihTfHwo Uz0hMCksQy5zZWxlY3RlZHBvaW50cyl7dmFyIFI9eS5zZWxlY3RCYXRjaFtJXT1zLnNlbElu ZGljZXMyc2VsUG9pbnRzKEMpLEY9e307Zm9yKGc9MDtnPFIubGVuZ3RoO2crKylGW1JbZ11d PTE7dmFyIEI9W107Zm9yKGc9MDtnPE87ZysrKUZbZ118fEIucHVzaChnKTt5LnVuc2VsZWN0 QmF0Y2hbSV09Qn12YXIgTj1QLnhweD1uZXcgQXJyYXkoTyksaj1QLnlweD1uZXcgQXJyYXko Tyk7Zm9yKGc9MDtnPE87ZysrKU5bZ109eC5jMnAoeltnXSksaltnXT1iLmMycChEW2ddKX1l bHNlIFAueHB4PVAueXB4PW51bGx9aWYoUyl7aWYoeS5zZWxlY3QyZHx8KHkuc2VsZWN0MmQ9 bih2Ll9nbGNhbnZhcy5kYXRhKClbMV0ucmVnbCkpLHkuc2NhdHRlcjJkKXt2YXIgVT1uZXcg QXJyYXkoXyk7Zm9yKG09MDttPF87bSsrKVVbbV09eS5zZWxlY3RCYXRjaFttXS5sZW5ndGh8 fHkudW5zZWxlY3RCYXRjaFttXS5sZW5ndGg/eS5tYXJrZXJVbnNlbGVjdGVkT3B0aW9uc1tt XTp7fTt5LnNjYXR0ZXIyZC51cGRhdGUoVSl9eS5zZWxlY3QyZCYmKHkuc2VsZWN0MmQudXBk YXRlKHkubWFya2VyT3B0aW9ucykseS5zZWxlY3QyZC51cGRhdGUoeS5tYXJrZXJTZWxlY3Rl ZE9wdGlvbnMpKSx5LmdsVGV4dCYmci5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT0oKHR8 fFtdKVswXXx8e30pLnRyYWNlfHx7fTt1Lmhhc1RleHQoZSkmJmgodCl9KSl9ZWxzZSB5LnNj YXR0ZXIyZCYmeS5zY2F0dGVyMmQudXBkYXRlKHkubWFya2VyT3B0aW9ucyk7dmFyIFY9e3Zp ZXdwb3J0OmQodix4LGIsdC5fY29udGV4dC5wbG90R2xQaXhlbFJhdGlvKSxyYW5nZTpbKHgu X3JsfHx4LnJhbmdlKVswXSwoYi5fcmx8fGIucmFuZ2UpWzBdLCh4Ll9ybHx8eC5yYW5nZSlb MV0sKGIuX3JsfHxiLnJhbmdlKVsxXV19LEg9cy5yZXBlYXQoVix5LmNvdW50KTt5LmZpbGwy ZCYmeS5maWxsMmQudXBkYXRlKEgpLHkubGluZTJkJiZ5LmxpbmUyZC51cGRhdGUoSCkseS5l cnJvcjJkJiZ5LmVycm9yMmQudXBkYXRlKEguY29uY2F0KEgpKSx5LnNjYXR0ZXIyZCYmeS5z Y2F0dGVyMmQudXBkYXRlKEgpLHkuc2VsZWN0MmQmJnkuc2VsZWN0MmQudXBkYXRlKEgpLHku Z2xUZXh0JiZ5LmdsVGV4dC5mb3JFYWNoKChmdW5jdGlvbih0KXt0LnVwZGF0ZShWKX0pKX1l bHNlIHkuaW5pdCgpfX0pLnJlZ2xQcmVjb21waWxlZD1wfSx7Ii4uLy4uL2NvbXBvbmVudHMv ZHJhZ2VsZW1lbnQvaGVscGVycyI6Mzg0LCIuLi8uLi9saWIiOjUwMywiLi4vLi4vbGliL3By ZXBhcmVfcmVnbCI6NTE2LCIuLi9zY2F0dGVyL2xpbmtfdHJhY2VzIjo5NDMsIi4uL3NjYXR0 ZXIvc3VidHlwZXMiOjk1MiwiLi9lZGl0X3N0eWxlIjo5ODUsImdsLXRleHQiOjIyNSwicmVn bC1lcnJvcjJkIjoyNzksInJlZ2wtbGluZTJkIjoyODAsInJlZ2wtc2NhdHRlcjJkIjoyODF9 XSw5OTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGli Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS5fc2NlbmUsaT17Y291bnQ6MCxk aXJ0eTohMCxsaW5lT3B0aW9uczpbXSxmaWxsT3B0aW9uczpbXSxtYXJrZXJPcHRpb25zOltd LG1hcmtlclNlbGVjdGVkT3B0aW9uczpbXSxtYXJrZXJVbnNlbGVjdGVkT3B0aW9uczpbXSxl cnJvclhPcHRpb25zOltdLGVycm9yWU9wdGlvbnM6W10sdGV4dE9wdGlvbnM6W10sdGV4dFNl bGVjdGVkT3B0aW9uczpbXSx0ZXh0VW5zZWxlY3RlZE9wdGlvbnM6W10sc2VsZWN0QmF0Y2g6 W10sdW5zZWxlY3RCYXRjaDpbXX0sYT17ZmlsbDJkOiExLHNjYXR0ZXIyZDohMSxlcnJvcjJk OiExLGxpbmUyZDohMSxnbFRleHQ6ITEsc2VsZWN0MmQ6ITF9O3JldHVybiBlLl9zY2VuZXx8 KChyPWUuX3NjZW5lPXt9KS5pbml0PWZ1bmN0aW9uKCl7bi5leHRlbmRGbGF0KHIsYSxpKX0s ci5pbml0KCksci51cGRhdGU9ZnVuY3Rpb24odCl7dmFyIGU9bi5yZXBlYXQodCxyLmNvdW50 KTtpZihyLmZpbGwyZCYmci5maWxsMmQudXBkYXRlKGUpLHIuc2NhdHRlcjJkJiZyLnNjYXR0 ZXIyZC51cGRhdGUoZSksci5saW5lMmQmJnIubGluZTJkLnVwZGF0ZShlKSxyLmVycm9yMmQm JnIuZXJyb3IyZC51cGRhdGUoZS5jb25jYXQoZSkpLHIuc2VsZWN0MmQmJnIuc2VsZWN0MmQu dXBkYXRlKGUpLHIuZ2xUZXh0KWZvcih2YXIgaT0wO2k8ci5jb3VudDtpKyspci5nbFRleHRb aV0udXBkYXRlKHQpfSxyLmRyYXc9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9ci5jb3VudCxlPXIu ZmlsbDJkLGk9ci5lcnJvcjJkLGE9ci5saW5lMmQsbz1yLnNjYXR0ZXIyZCxzPXIuZ2xUZXh0 LGw9ci5zZWxlY3QyZCxjPXIuc2VsZWN0QmF0Y2gsdT1yLnVuc2VsZWN0QmF0Y2gsZj0wO2Y8 dDtmKyspe2lmKGUmJnIuZmlsbE9yZGVyW2ZdJiZlLmRyYXcoci5maWxsT3JkZXJbZl0pLGEm JnIubGluZU9wdGlvbnNbZl0mJmEuZHJhdyhmKSxpJiYoci5lcnJvclhPcHRpb25zW2ZdJiZp LmRyYXcoZiksci5lcnJvcllPcHRpb25zW2ZdJiZpLmRyYXcoZit0KSksbyYmci5tYXJrZXJP cHRpb25zW2ZdKWlmKHVbZl0ubGVuZ3RoKXt2YXIgaD1uLnJlcGVhdChbXSxyLmNvdW50KTto W2ZdPXVbZl0sby5kcmF3KGgpfWVsc2UgY1tmXS5sZW5ndGh8fG8uZHJhdyhmKTtzW2ZdJiZy LnRleHRPcHRpb25zW2ZdJiZzW2ZdLnJlbmRlcigpfWwmJmwuZHJhdyhjKSxyLmRpcnR5PSEx fSxyLmRlc3Ryb3k9ZnVuY3Rpb24oKXtyLmZpbGwyZCYmci5maWxsMmQuZGVzdHJveSYmci5m aWxsMmQuZGVzdHJveSgpLHIuc2NhdHRlcjJkJiZyLnNjYXR0ZXIyZC5kZXN0cm95JiZyLnNj YXR0ZXIyZC5kZXN0cm95KCksci5lcnJvcjJkJiZyLmVycm9yMmQuZGVzdHJveSYmci5lcnJv cjJkLmRlc3Ryb3koKSxyLmxpbmUyZCYmci5saW5lMmQuZGVzdHJveSYmci5saW5lMmQuZGVz dHJveSgpLHIuc2VsZWN0MmQmJnIuc2VsZWN0MmQuZGVzdHJveSYmci5zZWxlY3QyZC5kZXN0 cm95KCksci5nbFRleHQmJnIuZ2xUZXh0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuZGVzdHJv eSYmdC5kZXN0cm95KCl9KSksci5saW5lT3B0aW9ucz1udWxsLHIuZmlsbE9wdGlvbnM9bnVs bCxyLm1hcmtlck9wdGlvbnM9bnVsbCxyLm1hcmtlclNlbGVjdGVkT3B0aW9ucz1udWxsLHIu bWFya2VyVW5zZWxlY3RlZE9wdGlvbnM9bnVsbCxyLmVycm9yWE9wdGlvbnM9bnVsbCxyLmVy cm9yWU9wdGlvbnM9bnVsbCxyLnRleHRPcHRpb25zPW51bGwsci50ZXh0U2VsZWN0ZWRPcHRp b25zPW51bGwsci50ZXh0VW5zZWxlY3RlZE9wdGlvbnM9bnVsbCxyLnNlbGVjdEJhdGNoPW51 bGwsci51bnNlbGVjdEJhdGNoPW51bGwsZS5fc2NlbmU9bnVsbH0pLHIuZGlydHl8fG4uZXh0 ZW5kRmxhdChyLGkpLHJ9fSx7Ii4uLy4uL2xpYiI6NTAzfV0sOTkyOltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3NjYXR0ZXIvc3VidHlwZXMiKSxpPXQoIi4v ZWRpdF9zdHlsZSIpLnN0eWxlVGV4dFNlbGVjdGlvbjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxl KXt2YXIgcj10LmNkLGE9dC54YXhpcyxvPXQueWF4aXMscz1bXSxsPXJbMF0udHJhY2UsYz1y WzBdLnQsdT1sLl9sZW5ndGgsZj1jLngsaD1jLnkscD1jLl9zY2VuZSxkPWMuaW5kZXg7aWYo IXApcmV0dXJuIHM7dmFyIG09bi5oYXNUZXh0KGwpLGc9bi5oYXNNYXJrZXJzKGwpLHY9IWcm JiFtO2lmKCEwIT09bC52aXNpYmxlfHx2KXJldHVybiBzO3ZhciB5PVtdLHg9W107aWYoITEh PT1lJiYhZS5kZWdlbmVyYXRlKWZvcih2YXIgYj0wO2I8dTtiKyspZS5jb250YWlucyhbYy54 cHhbYl0sYy55cHhbYl1dLCExLGIsdCk/KHkucHVzaChiKSxzLnB1c2goe3BvaW50TnVtYmVy OmIseDphLmMyZChmW2JdKSx5Om8uYzJkKGhbYl0pfSkpOngucHVzaChiKTtpZihnKXt2YXIg Xz1wLnNjYXR0ZXIyZDtpZih5Lmxlbmd0aHx8eC5sZW5ndGgpe2lmKCFwLnNlbGVjdEJhdGNo W2RdLmxlbmd0aCYmIXAudW5zZWxlY3RCYXRjaFtkXS5sZW5ndGgpe3ZhciB3PW5ldyBBcnJh eShwLmNvdW50KTt3W2RdPXAubWFya2VyVW5zZWxlY3RlZE9wdGlvbnNbZF0sXy51cGRhdGUu YXBwbHkoXyx3KX19ZWxzZXt2YXIgVD1uZXcgQXJyYXkocC5jb3VudCk7VFtkXT1wLm1hcmtl ck9wdGlvbnNbZF0sXy51cGRhdGUuYXBwbHkoXyxUKX19cmV0dXJuIHAuc2VsZWN0QmF0Y2hb ZF09eSxwLnVuc2VsZWN0QmF0Y2hbZF09eCxtJiZpKHIpLHN9fSx7Ii4uL3NjYXR0ZXIvc3Vi dHlwZXMiOjk1MiwiLi9lZGl0X3N0eWxlIjo5ODV9XSw5OTM6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIp LmhvdmVydGVtcGxhdGVBdHRycyxpPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0 ZXMiKS50ZXh0dGVtcGxhdGVBdHRycyxhPXQoIi4uL3NjYXR0ZXJnZW8vYXR0cmlidXRlcyIp LG89dCgiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9wbG90cy9tYXBib3gv bGF5b3V0X2F0dHJpYnV0ZXMiKSxsPXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxjPXQo Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIiksdT10KCIuLi8uLi9s aWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxmPXQoIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlwZXMi KS5vdmVycmlkZUFsbCxoPWEubGluZSxwPWEubWFya2VyO2UuZXhwb3J0cz1mKHtsb246YS5s b24sbGF0OmEubGF0LG1vZGU6dSh7fSxvLm1vZGUse2RmbHQ6Im1hcmtlcnMifSksdGV4dDp1 KHt9LG8udGV4dCx7fSksdGV4dHRlbXBsYXRlOmkoe2VkaXRUeXBlOiJwbG90In0se2tleXM6 WyJsYXQiLCJsb24iLCJ0ZXh0Il19KSxob3ZlcnRleHQ6dSh7fSxvLmhvdmVydGV4dCx7fSks bGluZTp7Y29sb3I6aC5jb2xvcix3aWR0aDpoLndpZHRofSxjb25uZWN0Z2FwczpvLmNvbm5l Y3RnYXBzLG1hcmtlcjp1KHtzeW1ib2w6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoiY2lyY2xl IixhcnJheU9rOiEwfSxhbmdsZTp7dmFsVHlwZToibnVtYmVyIixkZmx0OiJhdXRvIixhcnJh eU9rOiEwfSxhbGxvd292ZXJsYXA6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITF9LG9wYWNp dHk6cC5vcGFjaXR5LHNpemU6cC5zaXplLHNpemVyZWY6cC5zaXplcmVmLHNpemVtaW46cC5z aXplbWluLHNpemVtb2RlOnAuc2l6ZW1vZGV9LGMoIm1hcmtlciIpKSxmaWxsOmEuZmlsbCxm aWxsY29sb3I6by5maWxsY29sb3IsdGV4dGZvbnQ6cy5sYXllcnMuc3ltYm9sLnRleHRmb250 LHRleHRwb3NpdGlvbjpzLmxheWVycy5zeW1ib2wudGV4dHBvc2l0aW9uLGJlbG93Ont2YWxU eXBlOiJzdHJpbmcifSxzZWxlY3RlZDp7bWFya2VyOm8uc2VsZWN0ZWQubWFya2VyfSx1bnNl bGVjdGVkOnttYXJrZXI6by51bnNlbGVjdGVkLm1hcmtlcn0saG92ZXJpbmZvOnUoe30sbC5o b3ZlcmluZm8se2ZsYWdzOlsibG9uIiwibGF0IiwidGV4dCIsIm5hbWUiXX0pLGhvdmVydGVt cGxhdGU6bigpfSwiY2FsYyIsIm5lc3RlZCIpfSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3Jz Y2FsZS9hdHRyaWJ1dGVzIjozNzMsIi4uLy4uL2xpYi9leHRlbmQiOjQ5MywiLi4vLi4vcGxv dF9hcGkvZWRpdF90eXBlcyI6NTM2LCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIjo1NTAsIi4u Ly4uL3Bsb3RzL21hcGJveC9sYXlvdXRfYXR0cmlidXRlcyI6NjE1LCIuLi8uLi9wbG90cy90 ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo2MzMsIi4uL3NjYXR0ZXIvYXR0cmlidXRlcyI6OTI3LCIu Li9zY2F0dGVyZ2VvL2F0dHJpYnV0ZXMiOjk2OX1dLDk5NDpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCJmYXN0LWlzbnVtZXJpYyIpLGk9dCgiLi4vLi4vbGliIiks YT10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIikuQkFETlVNLG89dCgiLi4vLi4vbGli L2dlb2pzb25fdXRpbHMiKSxzPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSIpLGw9 dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksYz10KCIuLi9zY2F0dGVyL21ha2VfYnVi YmxlX3NpemVfZnVuYyIpLHU9dCgiLi4vc2NhdHRlci9zdWJ0eXBlcyIpLGY9dCgiLi4vLi4v cGxvdHMvbWFwYm94L2NvbnZlcnRfdGV4dF9vcHRzIiksaD10KCIuLi8uLi9jb21wb25lbnRz L2Z4L2hlbHBlcnMiKS5hcHBlbmRBcnJheVBvaW50VmFsdWUscD10KCIuLi8uLi9saWIvc3Zn X3RleHRfdXRpbHMiKS5ORVdMSU5FUyxkPXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyIp LkJSX1RBR19BTEw7ZnVuY3Rpb24gbSgpe3JldHVybntnZW9qc29uOm8ubWFrZUJsYW5rKCks bGF5b3V0Ont2aXNpYmlsaXR5OiJub25lIn0scGFpbnQ6e319fWZ1bmN0aW9uIGcodCxlKXty ZXR1cm4gaS5pc0FycmF5T3JUeXBlZEFycmF5KHQpP2U/ZnVuY3Rpb24oZSl7cmV0dXJuIG4o dFtlXSk/K3RbZV06MH06ZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19OnQ/ZnVuY3Rpb24oKXty ZXR1cm4gdH06dn1mdW5jdGlvbiB2KCl7cmV0dXJuIiJ9ZnVuY3Rpb24geSh0KXtyZXR1cm4g dFswXT09PWF9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsYT1lWzBdLnRyYWNlLHg9 ITA9PT1hLnZpc2libGUmJjAhPT1hLl9sZW5ndGgsYj0ibm9uZSIhPT1hLmZpbGwsXz11Lmhh c0xpbmVzKGEpLHc9dS5oYXNNYXJrZXJzKGEpLFQ9dS5oYXNUZXh0KGEpLGs9dyYmImNpcmNs ZSI9PT1hLm1hcmtlci5zeW1ib2wsQT13JiYiY2lyY2xlIiE9PWEubWFya2VyLnN5bWJvbCxN PW0oKSxTPW0oKSxFPW0oKSxMPW0oKSxDPXtmaWxsOk0sbGluZTpTLGNpcmNsZTpFLHN5bWJv bDpMfTtpZigheClyZXR1cm4gQztpZigoYnx8XykmJihyPW8uY2FsY1RyYWNlVG9MaW5lQ29v cmRzKGUpKSxiJiYoTS5nZW9qc29uPW8ubWFrZVBvbHlnb24ociksTS5sYXlvdXQudmlzaWJp bGl0eT0idmlzaWJsZSIsaS5leHRlbmRGbGF0KE0ucGFpbnQseyJmaWxsLWNvbG9yIjphLmZp bGxjb2xvcn0pKSxfJiYoUy5nZW9qc29uPW8ubWFrZUxpbmUociksUy5sYXlvdXQudmlzaWJp bGl0eT0idmlzaWJsZSIsaS5leHRlbmRGbGF0KFMucGFpbnQseyJsaW5lLXdpZHRoIjphLmxp bmUud2lkdGgsImxpbmUtY29sb3IiOmEubGluZS5jb2xvciwibGluZS1vcGFjaXR5IjphLm9w YWNpdHl9KSksayl7dmFyIFA9ZnVuY3Rpb24odCl7dmFyIGUscixhLG8sdT10WzBdLnRyYWNl LGY9dS5tYXJrZXIsaD11LnNlbGVjdGVkcG9pbnRzLHA9aS5pc0FycmF5T3JUeXBlZEFycmF5 KGYuY29sb3IpLGQ9aS5pc0FycmF5T3JUeXBlZEFycmF5KGYuc2l6ZSksbT1pLmlzQXJyYXlP clR5cGVkQXJyYXkoZi5vcGFjaXR5KTtmdW5jdGlvbiBnKHQpe3JldHVybiB1Lm9wYWNpdHkq dH1wJiYocj1zLmhhc0NvbG9yc2NhbGUodSwibWFya2VyIik/cy5tYWtlQ29sb3JTY2FsZUZ1 bmNGcm9tVHJhY2UoZik6aS5pZGVudGl0eSk7ZCYmKGE9Yyh1KSk7bSYmKG89ZnVuY3Rpb24o dCl7cmV0dXJuIGcobih0KT8raS5jb25zdHJhaW4odCwwLDEpOjApfSk7dmFyIHYseD1bXTtm b3IoZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgYj10W2VdLF89Yi5sb25sYXQ7aWYoIXkoXykp e3ZhciB3PXt9O3ImJih3Lm1jYz1iLm1jYz1yKGIubWMpKSxhJiYody5tcmM9Yi5tcmM9YShi Lm1zKSksbyYmKHcubW89byhiLm1vKSksaCYmKHcuc2VsZWN0ZWQ9Yi5zZWxlY3RlZHx8MCks eC5wdXNoKHt0eXBlOiJGZWF0dXJlIixnZW9tZXRyeTp7dHlwZToiUG9pbnQiLGNvb3JkaW5h dGVzOl99LHByb3BlcnRpZXM6d30pfX1pZihoKWZvcih2PWwubWFrZVNlbGVjdGVkUG9pbnRT dHlsZUZucyh1KSxlPTA7ZTx4Lmxlbmd0aDtlKyspe3ZhciBUPXhbZV0ucHJvcGVydGllczt2 LnNlbGVjdGVkT3BhY2l0eUZuJiYoVC5tbz1nKHYuc2VsZWN0ZWRPcGFjaXR5Rm4oVCkpKSx2 LnNlbGVjdGVkQ29sb3JGbiYmKFQubWNjPXYuc2VsZWN0ZWRDb2xvckZuKFQpKSx2LnNlbGVj dGVkU2l6ZUZuJiYoVC5tcmM9di5zZWxlY3RlZFNpemVGbihUKSl9cmV0dXJue2dlb2pzb246 e3R5cGU6IkZlYXR1cmVDb2xsZWN0aW9uIixmZWF0dXJlczp4fSxtY2M6cHx8diYmdi5zZWxl Y3RlZENvbG9yRm4/e3R5cGU6ImlkZW50aXR5Iixwcm9wZXJ0eToibWNjIn06Zi5jb2xvcixt cmM6ZHx8diYmdi5zZWxlY3RlZFNpemVGbj97dHlwZToiaWRlbnRpdHkiLHByb3BlcnR5OiJt cmMifTooaz1mLnNpemUsay8yKSxtbzptfHx2JiZ2LnNlbGVjdGVkT3BhY2l0eUZuP3t0eXBl OiJpZGVudGl0eSIscHJvcGVydHk6Im1vIn06ZyhmLm9wYWNpdHkpfTt2YXIga30oZSk7RS5n ZW9qc29uPVAuZ2VvanNvbixFLmxheW91dC52aXNpYmlsaXR5PSJ2aXNpYmxlIixpLmV4dGVu ZEZsYXQoRS5wYWludCx7ImNpcmNsZS1jb2xvciI6UC5tY2MsImNpcmNsZS1yYWRpdXMiOlAu bXJjLCJjaXJjbGUtb3BhY2l0eSI6UC5tb30pfWlmKChBfHxUKSYmKEwuZ2VvanNvbj1mdW5j dGlvbih0LGUpe2Zvcih2YXIgcj1lLl9mdWxsTGF5b3V0LG49dFswXS50cmFjZSxhPW4ubWFy a2VyfHx7fSxvPWEuc3ltYm9sLHM9YS5hbmdsZSxsPSJjaXJjbGUiIT09bz9nKG8pOnYsYz0i YXV0byIhPT1zP2cocywhMCk6dixmPXUuaGFzVGV4dChuKT9nKG4udGV4dCk6dixtPVtdLHg9 MDt4PHQubGVuZ3RoO3grKyl7dmFyIGI9dFt4XTtpZigheShiLmxvbmxhdCkpe3ZhciBfLHc9 bi50ZXh0dGVtcGxhdGU7aWYodyl7dmFyIFQ9QXJyYXkuaXNBcnJheSh3KT93W3hdfHwiIjp3 LGs9bi5fbW9kdWxlLmZvcm1hdExhYmVscyhiLG4sciksQT17fTtoKEEsbixiLmkpO3ZhciBN PW4uX21ldGF8fHt9O189aS50ZXh0dGVtcGxhdGVTdHJpbmcoVCxrLHIuX2QzbG9jYWxlLEEs YixNKX1lbHNlIF89Zih4KTtfJiYoXz1fLnJlcGxhY2UocCwiIikucmVwbGFjZShkLCJcbiIp KSxtLnB1c2goe3R5cGU6IkZlYXR1cmUiLGdlb21ldHJ5Ont0eXBlOiJQb2ludCIsY29vcmRp bmF0ZXM6Yi5sb25sYXR9LHByb3BlcnRpZXM6e3N5bWJvbDpsKHgpLGFuZ2xlOmMoeCksdGV4 dDpffX0pfX1yZXR1cm57dHlwZToiRmVhdHVyZUNvbGxlY3Rpb24iLGZlYXR1cmVzOm19fShl LHQpLGkuZXh0ZW5kRmxhdChMLmxheW91dCx7dmlzaWJpbGl0eToidmlzaWJsZSIsImljb24t aW1hZ2UiOiJ7c3ltYm9sfS0xNSIsInRleHQtZmllbGQiOiJ7dGV4dH0ifSksQSYmKGkuZXh0 ZW5kRmxhdChMLmxheW91dCx7Imljb24tc2l6ZSI6YS5tYXJrZXIuc2l6ZS8xMH0pLCJhbmds ZSJpbiBhLm1hcmtlciYmImF1dG8iIT09YS5tYXJrZXIuYW5nbGUmJmkuZXh0ZW5kRmxhdChM LmxheW91dCx7Imljb24tcm90YXRlIjp7dHlwZToiaWRlbnRpdHkiLHByb3BlcnR5OiJhbmds ZSJ9LCJpY29uLXJvdGF0aW9uLWFsaWdubWVudCI6Im1hcCJ9KSxMLmxheW91dFsiaWNvbi1h bGxvdy1vdmVybGFwIl09YS5tYXJrZXIuYWxsb3dvdmVybGFwLGkuZXh0ZW5kRmxhdChMLnBh aW50LHsiaWNvbi1vcGFjaXR5IjphLm9wYWNpdHkqYS5tYXJrZXIub3BhY2l0eSwiaWNvbi1j b2xvciI6YS5tYXJrZXIuY29sb3J9KSksVCkpe3ZhciBJPShhLm1hcmtlcnx8e30pLnNpemUs Tz1mKGEudGV4dHBvc2l0aW9uLEkpO2kuZXh0ZW5kRmxhdChMLmxheW91dCx7InRleHQtc2l6 ZSI6YS50ZXh0Zm9udC5zaXplLCJ0ZXh0LWFuY2hvciI6Ty5hbmNob3IsInRleHQtb2Zmc2V0 IjpPLm9mZnNldH0pLGkuZXh0ZW5kRmxhdChMLnBhaW50LHsidGV4dC1jb2xvciI6YS50ZXh0 Zm9udC5jb2xvciwidGV4dC1vcGFjaXR5IjphLm9wYWNpdHl9KX1yZXR1cm4gQ319LHsiLi4v Li4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjozNzgsIi4uLy4uL2NvbXBvbmVudHMvZHJhd2lu ZyI6Mzg4LCIuLi8uLi9jb21wb25lbnRzL2Z4L2hlbHBlcnMiOjQwMiwiLi4vLi4vY29uc3Rh bnRzL251bWVyaWNhbCI6NDc5LCIuLi8uLi9saWIiOjUwMywiLi4vLi4vbGliL2dlb2pzb25f dXRpbHMiOjQ5NywiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo1MjksIi4uLy4uL3Bsb3Rz L21hcGJveC9jb252ZXJ0X3RleHRfb3B0cyI6NjEyLCIuLi9zY2F0dGVyL21ha2VfYnViYmxl X3NpemVfZnVuYyI6OTQ0LCIuLi9zY2F0dGVyL3N1YnR5cGVzIjo5NTIsImZhc3QtaXNudW1l cmljIjoxOTB9XSw5OTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgi Li4vLi4vbGliIiksaT10KCIuLi9zY2F0dGVyL3N1YnR5cGVzIiksYT10KCIuLi9zY2F0dGVy L21hcmtlcl9kZWZhdWx0cyIpLG89dCgiLi4vc2NhdHRlci9saW5lX2RlZmF1bHRzIikscz10 KCIuLi9zY2F0dGVyL3RleHRfZGVmYXVsdHMiKSxsPXQoIi4uL3NjYXR0ZXIvZmlsbGNvbG9y X2RlZmF1bHRzIiksYz10KCIuL2F0dHJpYnV0ZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxl LHIsdSl7ZnVuY3Rpb24gZihyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUsYyxyLGkpfWlmKGZ1 bmN0aW9uKHQsZSxyKXt2YXIgbj1yKCJsb24iKXx8W10saT1yKCJsYXQiKXx8W10sYT1NYXRo Lm1pbihuLmxlbmd0aCxpLmxlbmd0aCk7cmV0dXJuIGUuX2xlbmd0aD1hLGF9KDAsZSxmKSl7 aWYoZigidGV4dCIpLGYoInRleHR0ZW1wbGF0ZSIpLGYoImhvdmVydGV4dCIpLGYoImhvdmVy dGVtcGxhdGUiKSxmKCJtb2RlIiksZigiYmVsb3ciKSxpLmhhc0xpbmVzKGUpJiYobyh0LGUs cix1LGYse25vRGFzaDohMH0pLGYoImNvbm5lY3RnYXBzIikpLGkuaGFzTWFya2VycyhlKSl7 YSh0LGUscix1LGYse25vTGluZTohMH0pLGYoIm1hcmtlci5hbGxvd292ZXJsYXAiKSxmKCJt YXJrZXIuYW5nbGUiKTt2YXIgaD1lLm1hcmtlcjsiY2lyY2xlIiE9PWguc3ltYm9sJiYobi5p c0FycmF5T3JUeXBlZEFycmF5KGguc2l6ZSkmJihoLnNpemU9aC5zaXplWzBdKSxuLmlzQXJy YXlPclR5cGVkQXJyYXkoaC5jb2xvcikmJihoLmNvbG9yPWguY29sb3JbMF0pKX1pLmhhc1Rl eHQoZSkmJnModCxlLHUsZix7bm9TZWxlY3Q6ITB9KSxmKCJmaWxsIiksIm5vbmUiIT09ZS5m aWxsJiZsKHQsZSxyLGYpLG4uY29lcmNlU2VsZWN0aW9uTWFya2VyT3BhY2l0eShlLGYpfWVs c2UgZS52aXNpYmxlPSExfX0seyIuLi8uLi9saWIiOjUwMywiLi4vc2NhdHRlci9maWxsY29s b3JfZGVmYXVsdHMiOjkzNSwiLi4vc2NhdHRlci9saW5lX2RlZmF1bHRzIjo5NDAsIi4uL3Nj YXR0ZXIvbWFya2VyX2RlZmF1bHRzIjo5NDYsIi4uL3NjYXR0ZXIvc3VidHlwZXMiOjk1Miwi Li4vc2NhdHRlci90ZXh0X2RlZmF1bHRzIjo5NTMsIi4vYXR0cmlidXRlcyI6OTkzfV0sOTk2 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUp e3JldHVybiB0Lmxvbj1lLmxvbix0LmxhdD1lLmxhdCx0fX0se31dLDk5NzpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhl cyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIGk9e30sYT1yW2Uuc3VicGxvdF0u X3N1YnBsb3QubW9ja0F4aXMsbz10LmxvbmxhdDtyZXR1cm4gaS5sb25MYWJlbD1uLnRpY2tU ZXh0KGEsYS5jMmwob1swXSksITApLnRleHQsaS5sYXRMYWJlbD1uLnRpY2tUZXh0KGEsYS5j Mmwob1sxXSksITApLnRleHQsaX19LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiOjU1 NH1dLDk5ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9j b21wb25lbnRzL2Z4IiksaT10KCIuLi8uLi9saWIiKSxhPXQoIi4uL3NjYXR0ZXIvZ2V0X3Ry YWNlX2NvbG9yIiksbz1pLmZpbGxUZXh0LHM9dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNh bCIpLkJBRE5VTTtmdW5jdGlvbiBsKHQsZSxyKXtpZighdC5ob3ZlcnRlbXBsYXRlKXt2YXIg bj0oZS5oaXx8dC5ob3ZlcmluZm8pLnNwbGl0KCIrIiksaT0tMSE9PW4uaW5kZXhPZigiYWxs IiksYT0tMSE9PW4uaW5kZXhPZigibG9uIikscz0tMSE9PW4uaW5kZXhPZigibGF0IiksbD1l LmxvbmxhdCxjPVtdO3JldHVybiBpfHxhJiZzP2MucHVzaCgiKCIrdShsWzFdKSsiLCAiK3Uo bFswXSkrIikiKTphP2MucHVzaChyLmxvbit1KGxbMF0pKTpzJiZjLnB1c2goci5sYXQrdShs WzFdKSksKGl8fC0xIT09bi5pbmRleE9mKCJ0ZXh0IikpJiZvKGUsdCxjKSxjLmpvaW4oIjxi cj4iKX1mdW5jdGlvbiB1KHQpe3JldHVybiB0KyJceGIwIn19ZS5leHBvcnRzPXtob3ZlclBv aW50czpmdW5jdGlvbih0LGUscil7dmFyIG89dC5jZCxjPW9bMF0udHJhY2UsdT10LnhhLGY9 dC55YSxoPXQuc3VicGxvdCxwPTM2MCooZT49MD9NYXRoLmZsb29yKChlKzE4MCkvMzYwKTpN YXRoLmNlaWwoKGUtMTgwKS8zNjApKSxkPWUtcDtpZihuLmdldENsb3Nlc3QobywoZnVuY3Rp b24odCl7dmFyIGU9dC5sb25sYXQ7aWYoZVswXT09PXMpcmV0dXJuIDEvMDt2YXIgbj1pLm1v ZEhhbGYoZVswXSwzNjApLGE9ZVsxXSxvPWgucHJvamVjdChbbixhXSksbD1vLngtdS5jMnAo W2QsYV0pLGM9by55LWYuYzJwKFtuLHJdKSxwPU1hdGgubWF4KDMsdC5tcmN8fDApO3JldHVy biBNYXRoLm1heChNYXRoLnNxcnQobCpsK2MqYyktcCwxLTMvcCl9KSx0KSwhMSE9PXQuaW5k ZXgpe3ZhciBtPW9bdC5pbmRleF0sZz1tLmxvbmxhdCx2PVtpLm1vZEhhbGYoZ1swXSwzNjAp K3AsZ1sxXV0seT11LmMycCh2KSx4PWYuYzJwKHYpLGI9bS5tcmN8fDE7dC54MD15LWIsdC54 MT15K2IsdC55MD14LWIsdC55MT14K2I7dmFyIF89e307X1tjLnN1YnBsb3RdPXtfc3VicGxv dDpofTt2YXIgdz1jLl9tb2R1bGUuZm9ybWF0TGFiZWxzKG0sYyxfKTtyZXR1cm4gdC5sb25M YWJlbD13LmxvbkxhYmVsLHQubGF0TGFiZWw9dy5sYXRMYWJlbCx0LmNvbG9yPWEoYyxtKSx0 LmV4dHJhVGV4dD1sKGMsbSxvWzBdLnQubGFiZWxzKSx0LmhvdmVydGVtcGxhdGU9Yy5ob3Zl cnRlbXBsYXRlLFt0XX19LGdldEV4dHJhVGV4dDpsfX0seyIuLi8uLi9jb21wb25lbnRzL2Z4 Ijo0MDYsIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiOjQ3OSwiLi4vLi4vbGliIjo1MDMs Ii4uL3NjYXR0ZXIvZ2V0X3RyYWNlX2NvbG9yIjo5Mzd9XSw5OTk6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXthdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIp LHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxjb2xvcmJhcjp0KCIuLi9zY2F0dGVy L21hcmtlcl9jb2xvcmJhciIpLGZvcm1hdExhYmVsczp0KCIuL2Zvcm1hdF9sYWJlbHMiKSxj YWxjOnQoIi4uL3NjYXR0ZXJnZW8vY2FsYyIpLHBsb3Q6dCgiLi9wbG90IiksaG92ZXJQb2lu dHM6dCgiLi9ob3ZlciIpLmhvdmVyUG9pbnRzLGV2ZW50RGF0YTp0KCIuL2V2ZW50X2RhdGEi KSxzZWxlY3RQb2ludHM6dCgiLi9zZWxlY3QiKSxzdHlsZU9uU2VsZWN0OmZ1bmN0aW9uKHQs ZSl7ZSYmZVswXS50cmFjZS5fZ2xUcmFjZS51cGRhdGUoZSl9LG1vZHVsZVR5cGU6InRyYWNl IixuYW1lOiJzY2F0dGVybWFwYm94IixiYXNlUGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9t YXBib3giKSxjYXRlZ29yaWVzOlsibWFwYm94IiwiZ2wiLCJzeW1ib2xzIiwic2hvd0xlZ2Vu ZCIsInNjYXR0ZXItbGlrZSJdLG1ldGE6e319fSx7Ii4uLy4uL3Bsb3RzL21hcGJveCI6NjEz LCIuLi9zY2F0dGVyL21hcmtlcl9jb2xvcmJhciI6OTQ1LCIuLi9zY2F0dGVyZ2VvL2NhbGMi Ojk3MCwiLi9hdHRyaWJ1dGVzIjo5OTMsIi4vZGVmYXVsdHMiOjk5NSwiLi9ldmVudF9kYXRh Ijo5OTYsIi4vZm9ybWF0X2xhYmVscyI6OTk3LCIuL2hvdmVyIjo5OTgsIi4vcGxvdCI6MWUz LCIuL3NlbGVjdCI6MTAwMX1dLDFlMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCIuL2NvbnZlcnQiKSxpPXQoIi4uLy4uL3Bsb3RzL21hcGJveC9jb25zdGFudHMi KS50cmFjZUxheWVyUHJlZml4LGE9WyJmaWxsIiwibGluZSIsImNpcmNsZSIsInN5bWJvbCJd O2Z1bmN0aW9uIG8odCxlKXt0aGlzLnR5cGU9InNjYXR0ZXJtYXBib3giLHRoaXMuc3VicGxv dD10LHRoaXMudWlkPWUsdGhpcy5zb3VyY2VJZHM9e2ZpbGw6InNvdXJjZS0iK2UrIi1maWxs IixsaW5lOiJzb3VyY2UtIitlKyItbGluZSIsY2lyY2xlOiJzb3VyY2UtIitlKyItY2lyY2xl IixzeW1ib2w6InNvdXJjZS0iK2UrIi1zeW1ib2wifSx0aGlzLmxheWVySWRzPXtmaWxsOmkr ZSsiLWZpbGwiLGxpbmU6aStlKyItbGluZSIsY2lyY2xlOmkrZSsiLWNpcmNsZSIsc3ltYm9s OmkrZSsiLXN5bWJvbCJ9LHRoaXMuYmVsb3c9bnVsbH12YXIgcz1vLnByb3RvdHlwZTtzLmFk ZFNvdXJjZT1mdW5jdGlvbih0LGUpe3RoaXMuc3VicGxvdC5tYXAuYWRkU291cmNlKHRoaXMu c291cmNlSWRzW3RdLHt0eXBlOiJnZW9qc29uIixkYXRhOmUuZ2VvanNvbn0pfSxzLnNldFNv dXJjZURhdGE9ZnVuY3Rpb24odCxlKXt0aGlzLnN1YnBsb3QubWFwLmdldFNvdXJjZSh0aGlz LnNvdXJjZUlkc1t0XSkuc2V0RGF0YShlLmdlb2pzb24pfSxzLmFkZExheWVyPWZ1bmN0aW9u KHQsZSxyKXt0aGlzLnN1YnBsb3QuYWRkTGF5ZXIoe3R5cGU6dCxpZDp0aGlzLmxheWVySWRz W3RdLHNvdXJjZTp0aGlzLnNvdXJjZUlkc1t0XSxsYXlvdXQ6ZS5sYXlvdXQscGFpbnQ6ZS5w YWludH0scil9LHMudXBkYXRlPWZ1bmN0aW9uKHQpe3ZhciBlLHIsaSxvPXRoaXMuc3VicGxv dCxzPW8ubWFwLGw9bihvLmdkLHQpLGM9by5iZWxvd0xvb2t1cFsidHJhY2UtIit0aGlzLnVp ZF07aWYoYyE9PXRoaXMuYmVsb3cpe2ZvcihlPWEubGVuZ3RoLTE7ZT49MDtlLS0pcj1hW2Vd LHMucmVtb3ZlTGF5ZXIodGhpcy5sYXllcklkc1tyXSk7Zm9yKGU9MDtlPGEubGVuZ3RoO2Ur KylpPWxbcj1hW2VdXSx0aGlzLmFkZExheWVyKHIsaSxjKTt0aGlzLmJlbG93PWN9Zm9yKGU9 MDtlPGEubGVuZ3RoO2UrKylpPWxbcj1hW2VdXSxvLnNldE9wdGlvbnModGhpcy5sYXllcklk c1tyXSwic2V0TGF5b3V0UHJvcGVydHkiLGkubGF5b3V0KSwidmlzaWJsZSI9PT1pLmxheW91 dC52aXNpYmlsaXR5JiYodGhpcy5zZXRTb3VyY2VEYXRhKHIsaSksby5zZXRPcHRpb25zKHRo aXMubGF5ZXJJZHNbcl0sInNldFBhaW50UHJvcGVydHkiLGkucGFpbnQpKTt0WzBdLnRyYWNl Ll9nbFRyYWNlPXRoaXN9LHMuZGlzcG9zZT1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLnN1 YnBsb3QubWFwLGU9YS5sZW5ndGgtMTtlPj0wO2UtLSl7dmFyIHI9YVtlXTt0LnJlbW92ZUxh eWVyKHRoaXMubGF5ZXJJZHNbcl0pLHQucmVtb3ZlU291cmNlKHRoaXMuc291cmNlSWRzW3Jd KX19LGUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1lWzBdLnRyYWNlLGk9bmV3 IG8odCxyLnVpZCkscz1uKHQuZ2QsZSksbD1pLmJlbG93PXQuYmVsb3dMb29rdXBbInRyYWNl LSIrci51aWRdLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIHU9YVtjXSxmPXNbdV07aS5hZGRT b3VyY2UodSxmKSxpLmFkZExheWVyKHUsZixsKX1yZXR1cm4gZVswXS50cmFjZS5fZ2xUcmFj ZT1pLGl9fSx7Ii4uLy4uL3Bsb3RzL21hcGJveC9jb25zdGFudHMiOjYxMSwiLi9jb252ZXJ0 Ijo5OTR9XSwxMDAxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4u Ly4uL2xpYiIpLGk9dCgiLi4vc2NhdHRlci9zdWJ0eXBlcyIpLGE9dCgiLi4vLi4vY29uc3Rh bnRzL251bWVyaWNhbCIpLkJBRE5VTTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcixv PXQuY2Qscz10LnhheGlzLGw9dC55YXhpcyxjPVtdLHU9b1swXS50cmFjZTtpZighaS5oYXNN YXJrZXJzKHUpKXJldHVybltdO2lmKCExPT09ZSlmb3Iocj0wO3I8by5sZW5ndGg7cisrKW9b cl0uc2VsZWN0ZWQ9MDtlbHNlIGZvcihyPTA7cjxvLmxlbmd0aDtyKyspe3ZhciBmPW9bcl0s aD1mLmxvbmxhdDtpZihoWzBdIT09YSl7dmFyIHA9W24ubW9kSGFsZihoWzBdLDM2MCksaFsx XV0sZD1bcy5jMnAocCksbC5jMnAocCldO2UuY29udGFpbnMoZCxudWxsLHIsdCk/KGMucHVz aCh7cG9pbnROdW1iZXI6cixsb246aFswXSxsYXQ6aFsxXX0pLGYuc2VsZWN0ZWQ9MSk6Zi5z ZWxlY3RlZD0wfX1yZXR1cm4gY319LHsiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NDc5 LCIuLi8uLi9saWIiOjUwMywiLi4vc2NhdHRlci9zdWJ0eXBlcyI6OTUyfV0sMTAwMjpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy90ZW1wbGF0 ZV9hdHRyaWJ1dGVzIikuaG92ZXJ0ZW1wbGF0ZUF0dHJzLGk9dCgiLi4vLi4vcGxvdHMvdGVt cGxhdGVfYXR0cmlidXRlcyIpLnRleHR0ZW1wbGF0ZUF0dHJzLGE9dCgiLi4vLi4vbGliL2V4 dGVuZCIpLmV4dGVuZEZsYXQsbz10KCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiKSxzPXQoIi4u Ly4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxsPW8ubGluZTtlLmV4cG9ydHM9e21vZGU6by5tb2Rl LHI6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVz In0sdGhldGE6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhp c1R5cGVzIn0scjA6e3ZhbFR5cGU6ImFueSIsZGZsdDowLGVkaXRUeXBlOiJjYWxjK2NsZWFy QXhpc1R5cGVzIn0sZHI6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDoxLGVkaXRUeXBlOiJjYWxj In0sdGhldGEwOnt2YWxUeXBlOiJhbnkiLGRmbHQ6MCxlZGl0VHlwZToiY2FsYytjbGVhckF4 aXNUeXBlcyJ9LGR0aGV0YTp7dmFsVHlwZToibnVtYmVyIixlZGl0VHlwZToiY2FsYyJ9LHRo ZXRhdW5pdDp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsicmFkaWFucyIsImRlZ3Jl ZXMiLCJncmFkaWFucyJdLGRmbHQ6ImRlZ3JlZXMiLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhp c1R5cGVzIn0sdGV4dDpvLnRleHQsdGV4dHRlbXBsYXRlOmkoe2VkaXRUeXBlOiJwbG90In0s e2tleXM6WyJyIiwidGhldGEiLCJ0ZXh0Il19KSxob3ZlcnRleHQ6by5ob3ZlcnRleHQsbGlu ZTp7Y29sb3I6bC5jb2xvcix3aWR0aDpsLndpZHRoLGRhc2g6bC5kYXNoLHNoYXBlOmEoe30s bC5zaGFwZSx7dmFsdWVzOlsibGluZWFyIiwic3BsaW5lIl19KSxzbW9vdGhpbmc6bC5zbW9v dGhpbmcsZWRpdFR5cGU6ImNhbGMifSxjb25uZWN0Z2FwczpvLmNvbm5lY3RnYXBzLG1hcmtl cjpvLm1hcmtlcixjbGlwb25heGlzOmEoe30sby5jbGlwb25heGlzLHtkZmx0OiExfSksdGV4 dHBvc2l0aW9uOm8udGV4dHBvc2l0aW9uLHRleHRmb250Om8udGV4dGZvbnQsZmlsbDphKHt9 LG8uZmlsbCx7dmFsdWVzOlsibm9uZSIsInRvc2VsZiIsInRvbmV4dCJdLGRmbHQ6Im5vbmUi fSksZmlsbGNvbG9yOm8uZmlsbGNvbG9yLGhvdmVyaW5mbzphKHt9LHMuaG92ZXJpbmZvLHtm bGFnczpbInIiLCJ0aGV0YSIsInRleHQiLCJuYW1lIl19KSxob3Zlcm9uOm8uaG92ZXJvbixo b3ZlcnRlbXBsYXRlOm4oKSxzZWxlY3RlZDpvLnNlbGVjdGVkLHVuc2VsZWN0ZWQ6by51bnNl bGVjdGVkfX0seyIuLi8uLi9saWIvZXh0ZW5kIjo0OTMsIi4uLy4uL3Bsb3RzL2F0dHJpYnV0 ZXMiOjU1MCwiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6NjMzLCIuLi9zY2F0 dGVyL2F0dHJpYnV0ZXMiOjkyN31dLDEwMDM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiZmFzdC1pc251bWVyaWMiKSxpPXQoIi4uLy4uL2NvbnN0YW50cy9udW1l cmljYWwiKS5CQUROVU0sYT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLG89dCgi Li4vc2NhdHRlci9jb2xvcnNjYWxlX2NhbGMiKSxzPXQoIi4uL3NjYXR0ZXIvYXJyYXlzX3Rv X2NhbGNkYXRhIiksbD10KCIuLi9zY2F0dGVyL2NhbGNfc2VsZWN0aW9uIiksYz10KCIuLi9z Y2F0dGVyL2NhbGMiKS5jYWxjTWFya2VyU2l6ZTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtm b3IodmFyIHI9dC5fZnVsbExheW91dCx1PWUuc3VicGxvdCxmPXJbdV0ucmFkaWFsYXhpcyxo PXJbdV0uYW5ndWxhcmF4aXMscD1mLm1ha2VDYWxjZGF0YShlLCJyIiksZD1oLm1ha2VDYWxj ZGF0YShlLCJ0aGV0YSIpLG09ZS5fbGVuZ3RoLGc9bmV3IEFycmF5KG0pLHY9MDt2PG07disr KXt2YXIgeT1wW3ZdLHg9ZFt2XSxiPWdbdl09e307bih5KSYmbih4KT8oYi5yPXksYi50aGV0 YT14KTpiLnI9aX12YXIgXz1jKGUsbSk7cmV0dXJuIGUuX2V4dHJlbWVzLng9YS5maW5kRXh0 cmVtZXMoZixwLHtwcGFkOl99KSxvKHQsZSkscyhnLGUpLGwoZyxlKSxnfX0seyIuLi8uLi9j b25zdGFudHMvbnVtZXJpY2FsIjo0NzksIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo1 NTQsIi4uL3NjYXR0ZXIvYXJyYXlzX3RvX2NhbGNkYXRhIjo5MjYsIi4uL3NjYXR0ZXIvY2Fs YyI6OTI4LCIuLi9zY2F0dGVyL2NhbGNfc2VsZWN0aW9uIjo5MjksIi4uL3NjYXR0ZXIvY29s b3JzY2FsZV9jYWxjIjo5MzAsImZhc3QtaXNudW1lcmljIjoxOTB9XSwxMDA0OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vc2Nh dHRlci9zdWJ0eXBlcyIpLGE9dCgiLi4vc2NhdHRlci9tYXJrZXJfZGVmYXVsdHMiKSxvPXQo Ii4uL3NjYXR0ZXIvbGluZV9kZWZhdWx0cyIpLHM9dCgiLi4vc2NhdHRlci9saW5lX3NoYXBl X2RlZmF1bHRzIiksbD10KCIuLi9zY2F0dGVyL3RleHRfZGVmYXVsdHMiKSxjPXQoIi4uL3Nj YXR0ZXIvZmlsbGNvbG9yX2RlZmF1bHRzIiksdT10KCIuLi9zY2F0dGVyL2NvbnN0YW50cyIp LlBUU19MSU5FU09OTFksZj10KCIuL2F0dHJpYnV0ZXMiKTtmdW5jdGlvbiBoKHQsZSxyLG4p e3ZhciBpLGE9bigiciIpLG89bigidGhldGEiKTtpZihhKW8/aT1NYXRoLm1pbihhLmxlbmd0 aCxvLmxlbmd0aCk6KGk9YS5sZW5ndGgsbigidGhldGEwIiksbigiZHRoZXRhIikpO2Vsc2V7 aWYoIW8pcmV0dXJuIDA7aT1lLnRoZXRhLmxlbmd0aCxuKCJyMCIpLG4oImRyIil9cmV0dXJu IGUuX2xlbmd0aD1pLGl9ZS5leHBvcnRzPXtoYW5kbGVSVGhldGFEZWZhdWx0czpoLHN1cHBs eURlZmF1bHRzOmZ1bmN0aW9uKHQsZSxyLHApe2Z1bmN0aW9uIGQocixpKXtyZXR1cm4gbi5j b2VyY2UodCxlLGYscixpKX12YXIgbT1oKHQsZSxwLGQpO2lmKG0pe2QoInRoZXRhdW5pdCIp LGQoIm1vZGUiLG08dT8ibGluZXMrbWFya2VycyI6ImxpbmVzIiksZCgidGV4dCIpLGQoImhv dmVydGV4dCIpLCJmaWxscyIhPT1lLmhvdmVyb24mJmQoImhvdmVydGVtcGxhdGUiKSxpLmhh c0xpbmVzKGUpJiYobyh0LGUscixwLGQpLHModCxlLGQpLGQoImNvbm5lY3RnYXBzIikpLGku aGFzTWFya2VycyhlKSYmYSh0LGUscixwLGQse2dyYWRpZW50OiEwfSksaS5oYXNUZXh0KGUp JiYoZCgidGV4dHRlbXBsYXRlIiksbCh0LGUscCxkKSk7dmFyIGc9W107KGkuaGFzTWFya2Vy cyhlKXx8aS5oYXNUZXh0KGUpKSYmKGQoImNsaXBvbmF4aXMiKSxkKCJtYXJrZXIubWF4ZGlz cGxheWVkIiksZy5wdXNoKCJwb2ludHMiKSksZCgiZmlsbCIpLCJub25lIiE9PWUuZmlsbCYm KGModCxlLHIsZCksaS5oYXNMaW5lcyhlKXx8cyh0LGUsZCkpLCJ0b25leHQiIT09ZS5maWxs JiYidG9zZWxmIiE9PWUuZmlsbHx8Zy5wdXNoKCJmaWxscyIpLGQoImhvdmVyb24iLGcuam9p bigiKyIpfHwicG9pbnRzIiksbi5jb2VyY2VTZWxlY3Rpb25NYXJrZXJPcGFjaXR5KGUsZCl9 ZWxzZSBlLnZpc2libGU9ITF9fX0seyIuLi8uLi9saWIiOjUwMywiLi4vc2NhdHRlci9jb25z dGFudHMiOjkzMSwiLi4vc2NhdHRlci9maWxsY29sb3JfZGVmYXVsdHMiOjkzNSwiLi4vc2Nh dHRlci9saW5lX2RlZmF1bHRzIjo5NDAsIi4uL3NjYXR0ZXIvbGluZV9zaGFwZV9kZWZhdWx0 cyI6OTQyLCIuLi9zY2F0dGVyL21hcmtlcl9kZWZhdWx0cyI6OTQ2LCIuLi9zY2F0dGVyL3N1 YnR5cGVzIjo5NTIsIi4uL3NjYXR0ZXIvdGV4dF9kZWZhdWx0cyI6OTUzLCIuL2F0dHJpYnV0 ZXMiOjEwMDJ9XSwxMDA1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQo Ii4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKTtlLmV4cG9y dHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBhLG8scz17fSxsPXJbZS5zdWJwbG90XS5fc3VicGxv dDtsPyhhPWwucmFkaWFsQXhpcyxvPWwuYW5ndWxhckF4aXMpOihhPShsPXJbZS5zdWJwbG90 XSkucmFkaWFsYXhpcyxvPWwuYW5ndWxhcmF4aXMpO3ZhciBjPWEuYzJsKHQucik7cy5yTGFi ZWw9aS50aWNrVGV4dChhLGMsITApLnRleHQ7dmFyIHU9ImRlZ3JlZXMiPT09by50aGV0YXVu aXQ/bi5yYWQyZGVnKHQudGhldGEpOnQudGhldGE7cmV0dXJuIHMudGhldGFMYWJlbD1pLnRp Y2tUZXh0KG8sdSwhMCkudGV4dCxzfX0seyIuLi8uLi9saWIiOjUwMywiLi4vLi4vcGxvdHMv Y2FydGVzaWFuL2F4ZXMiOjU1NH1dLDEwMDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiLi4vc2NhdHRlci9ob3ZlciIpO2Z1bmN0aW9uIGkodCxlLHIsbil7dmFy IGk9ci5yYWRpYWxBeGlzLGE9ci5hbmd1bGFyQXhpcztpLl9ob3ZlcnRpdGxlPSJyIixhLl9o b3ZlcnRpdGxlPSJcdTAzYjgiO3ZhciBvPXt9O29bZS5zdWJwbG90XT17X3N1YnBsb3Q6cn07 dmFyIHM9ZS5fbW9kdWxlLmZvcm1hdExhYmVscyh0LGUsbyk7bi5yTGFiZWw9cy5yTGFiZWws bi50aGV0YUxhYmVsPXMudGhldGFMYWJlbDt2YXIgbD10LmhpfHxlLmhvdmVyaW5mbyxjPVtd O2Z1bmN0aW9uIHUodCxlKXtjLnB1c2godC5faG92ZXJ0aXRsZSsiOiAiK2UpfWlmKCFlLmhv dmVydGVtcGxhdGUpe3ZhciBmPWwuc3BsaXQoIisiKTstMSE9PWYuaW5kZXhPZigiYWxsIikm JihmPVsiciIsInRoZXRhIiwidGV4dCJdKSwtMSE9PWYuaW5kZXhPZigiciIpJiZ1KGksbi5y TGFiZWwpLC0xIT09Zi5pbmRleE9mKCJ0aGV0YSIpJiZ1KGEsbi50aGV0YUxhYmVsKSwtMSE9 PWYuaW5kZXhPZigidGV4dCIpJiZuLnRleHQmJihjLnB1c2gobi50ZXh0KSxkZWxldGUgbi50 ZXh0KSxuLmV4dHJhVGV4dD1jLmpvaW4oIjxicj4iKX19ZS5leHBvcnRzPXtob3ZlclBvaW50 czpmdW5jdGlvbih0LGUscixhKXt2YXIgbz1uKHQsZSxyLGEpO2lmKG8mJiExIT09b1swXS5p bmRleCl7dmFyIHM9b1swXTtpZih2b2lkIDA9PT1zLmluZGV4KXJldHVybiBvO3ZhciBsPXQu c3VicGxvdCxjPXMuY2Rbcy5pbmRleF0sdT1zLnRyYWNlO2lmKGwuaXNQdEluc2lkZShjKSly ZXR1cm4gcy54TGFiZWxWYWw9dm9pZCAwLHMueUxhYmVsVmFsPXZvaWQgMCxpKGMsdSxsLHMp LHMuaG92ZXJ0ZW1wbGF0ZT11LmhvdmVydGVtcGxhdGUsb319LG1ha2VIb3ZlclBvaW50VGV4 dDppfX0seyIuLi9zY2F0dGVyL2hvdmVyIjo5Mzh9XSwxMDA3OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17bW9kdWxlVHlwZToidHJhY2UiLG5hbWU6InNjYXR0 ZXJwb2xhciIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvcG9sYXIiKSxjYXRlZ29y aWVzOlsicG9sYXIiLCJzeW1ib2xzIiwic2hvd0xlZ2VuZCIsInNjYXR0ZXItbGlrZSJdLGF0 dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0 cyIpLnN1cHBseURlZmF1bHRzLGNvbG9yYmFyOnQoIi4uL3NjYXR0ZXIvbWFya2VyX2NvbG9y YmFyIiksZm9ybWF0TGFiZWxzOnQoIi4vZm9ybWF0X2xhYmVscyIpLGNhbGM6dCgiLi9jYWxj IikscGxvdDp0KCIuL3Bsb3QiKSxzdHlsZTp0KCIuLi9zY2F0dGVyL3N0eWxlIikuc3R5bGUs c3R5bGVPblNlbGVjdDp0KCIuLi9zY2F0dGVyL3N0eWxlIikuc3R5bGVPblNlbGVjdCxob3Zl clBvaW50czp0KCIuL2hvdmVyIikuaG92ZXJQb2ludHMsc2VsZWN0UG9pbnRzOnQoIi4uL3Nj YXR0ZXIvc2VsZWN0IiksbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvcG9sYXIiOjYyMiwiLi4v c2NhdHRlci9tYXJrZXJfY29sb3JiYXIiOjk0NSwiLi4vc2NhdHRlci9zZWxlY3QiOjk0OSwi Li4vc2NhdHRlci9zdHlsZSI6OTUxLCIuL2F0dHJpYnV0ZXMiOjEwMDIsIi4vY2FsYyI6MTAw MywiLi9kZWZhdWx0cyI6MTAwNCwiLi9mb3JtYXRfbGFiZWxzIjoxMDA1LCIuL2hvdmVyIjox MDA2LCIuL3Bsb3QiOjEwMDh9XSwxMDA4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoIi4uL3NjYXR0ZXIvcGxvdCIpLGk9dCgiLi4vLi4vY29uc3RhbnRzL251bWVy aWNhbCIpLkJBRE5VTTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgYT1lLmxh eWVycy5mcm9udHBsb3Quc2VsZWN0KCJnLnNjYXR0ZXJsYXllciIpLG89e3hheGlzOmUueGF4 aXMseWF4aXM6ZS55YXhpcyxwbG90OmUuZnJhbWV3b3JrLGxheWVyQ2xpcElkOmUuX2hhc0Ns aXBPbkF4aXNGYWxzZT9lLmNsaXBJZHMuZm9yVHJhY2VzOm51bGx9LHM9ZS5yYWRpYWxBeGlz LGw9ZS5hbmd1bGFyQXhpcyxjPTA7YzxyLmxlbmd0aDtjKyspZm9yKHZhciB1PXJbY10sZj0w O2Y8dS5sZW5ndGg7ZisrKXt2YXIgaD11W2ZdLHA9aC5yO2lmKHA9PT1pKWgueD1oLnk9aTtl bHNle3ZhciBkPXMuYzJnKHApLG09bC5jMmcoaC50aGV0YSk7aC54PWQqTWF0aC5jb3MobSks aC55PWQqTWF0aC5zaW4obSl9fW4odCxvLHIsYSl9fSx7Ii4uLy4uL2NvbnN0YW50cy9udW1l cmljYWwiOjQ3OSwiLi4vc2NhdHRlci9wbG90Ijo5NDh9XSwxMDA5OltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3NjYXR0ZXJwb2xhci9hdHRyaWJ1dGVzIiks aT10KCIuLi9zY2F0dGVyZ2wvYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vcGxvdHMvdGVtcGxh dGVfYXR0cmlidXRlcyIpLnRleHR0ZW1wbGF0ZUF0dHJzO2UuZXhwb3J0cz17bW9kZTpuLm1v ZGUscjpuLnIsdGhldGE6bi50aGV0YSxyMDpuLnIwLGRyOm4uZHIsdGhldGEwOm4udGhldGEw LGR0aGV0YTpuLmR0aGV0YSx0aGV0YXVuaXQ6bi50aGV0YXVuaXQsdGV4dDpuLnRleHQsdGV4 dHRlbXBsYXRlOmEoe2VkaXRUeXBlOiJwbG90In0se2tleXM6WyJyIiwidGhldGEiLCJ0ZXh0 Il19KSxob3ZlcnRleHQ6bi5ob3ZlcnRleHQsaG92ZXJ0ZW1wbGF0ZTpuLmhvdmVydGVtcGxh dGUsbGluZTppLmxpbmUsY29ubmVjdGdhcHM6aS5jb25uZWN0Z2FwcyxtYXJrZXI6aS5tYXJr ZXIsZmlsbDppLmZpbGwsZmlsbGNvbG9yOmkuZmlsbGNvbG9yLHRleHRwb3NpdGlvbjppLnRl eHRwb3NpdGlvbix0ZXh0Zm9udDppLnRleHRmb250LGhvdmVyaW5mbzpuLmhvdmVyaW5mbyxz ZWxlY3RlZDpuLnNlbGVjdGVkLHVuc2VsZWN0ZWQ6bi51bnNlbGVjdGVkfX0seyIuLi8uLi9w bG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIjo2MzMsIi4uL3NjYXR0ZXJnbC9hdHRyaWJ1dGVz Ijo5NzksIi4uL3NjYXR0ZXJwb2xhci9hdHRyaWJ1dGVzIjoxMDAyfV0sMTAxMDpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e21vZHVsZVR5cGU6InRyYWNlIixu YW1lOiJzY2F0dGVycG9sYXJnbCIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvcG9s YXIiKSxjYXRlZ29yaWVzOlsiZ2wiLCJyZWdsIiwicG9sYXIiLCJzeW1ib2xzIiwic2hvd0xl Z2VuZCIsInNjYXR0ZXItbGlrZSJdLGF0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3Vw cGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNvbG9yYmFyOnQoIi4uL3NjYXR0ZXIvbWFy a2VyX2NvbG9yYmFyIiksZm9ybWF0TGFiZWxzOnQoIi4vZm9ybWF0X2xhYmVscyIpLGNhbGM6 dCgiLi9jYWxjIiksaG92ZXJQb2ludHM6dCgiLi9ob3ZlciIpLmhvdmVyUG9pbnRzLHNlbGVj dFBvaW50czp0KCIuLi9zY2F0dGVyZ2wvc2VsZWN0IiksbWV0YTp7fX19LHsiLi4vLi4vcGxv dHMvcG9sYXIiOjYyMiwiLi4vc2NhdHRlci9tYXJrZXJfY29sb3JiYXIiOjk0NSwiLi4vc2Nh dHRlcmdsL3NlbGVjdCI6OTkyLCIuL2F0dHJpYnV0ZXMiOjEwMDksIi4vY2FsYyI6MTAxMSwi Li9kZWZhdWx0cyI6MTAxMiwiLi9mb3JtYXRfbGFiZWxzIjoxMDEzLCIuL2hvdmVyIjoxMDE0 fV0sMTAxMTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9zY2F0 dGVyL2NvbG9yc2NhbGVfY2FsYyIpLGk9dCgiLi4vc2NhdHRlci9jYWxjIikuY2FsY01hcmtl clNpemUsYT10KCIuLi9zY2F0dGVyZ2wvY29udmVydCIpLG89dCgiLi4vLi4vcGxvdHMvY2Fy dGVzaWFuL2F4ZXMiKSxzPXQoIi4uL3NjYXR0ZXJnbC9jb25zdGFudHMiKS5UT09fTUFOWV9Q T0lOVFM7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5fZnVsbExheW91dCxsPWUu c3VicGxvdCxjPXJbbF0ucmFkaWFsYXhpcyx1PXJbbF0uYW5ndWxhcmF4aXMsZj1lLl9yPWMu bWFrZUNhbGNkYXRhKGUsInIiKSxoPWUuX3RoZXRhPXUubWFrZUNhbGNkYXRhKGUsInRoZXRh IikscD1lLl9sZW5ndGgsZD17fTtwPGYubGVuZ3RoJiYoZj1mLnNsaWNlKDAscCkpLHA8aC5s ZW5ndGgmJihoPWguc2xpY2UoMCxwKSksZC5yPWYsZC50aGV0YT1oLG4odCxlKTt2YXIgbSxn PWQub3B0cz1hLnN0eWxlKHQsZSk7cmV0dXJuIHA8cz9tPWkoZSxwKTpnLm1hcmtlciYmKG09 MiooZy5tYXJrZXIuc2l6ZUF2Z3x8TWF0aC5tYXgoZy5tYXJrZXIuc2l6ZSwzKSkpLGUuX2V4 dHJlbWVzLng9by5maW5kRXh0cmVtZXMoYyxmLHtwcGFkOm19KSxbe3g6ITEseTohMSx0OmQs dHJhY2U6ZX1dfX0seyIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NTU0LCIuLi9zY2F0 dGVyL2NhbGMiOjkyOCwiLi4vc2NhdHRlci9jb2xvcnNjYWxlX2NhbGMiOjkzMCwiLi4vc2Nh dHRlcmdsL2NvbnN0YW50cyI6OTgyLCIuLi9zY2F0dGVyZ2wvY29udmVydCI6OTgzfV0sMTAx MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxp PXQoIi4uL3NjYXR0ZXIvc3VidHlwZXMiKSxhPXQoIi4uL3NjYXR0ZXJwb2xhci9kZWZhdWx0 cyIpLmhhbmRsZVJUaGV0YURlZmF1bHRzLG89dCgiLi4vc2NhdHRlci9tYXJrZXJfZGVmYXVs dHMiKSxzPXQoIi4uL3NjYXR0ZXIvbGluZV9kZWZhdWx0cyIpLGw9dCgiLi4vc2NhdHRlci90 ZXh0X2RlZmF1bHRzIiksYz10KCIuLi9zY2F0dGVyL2ZpbGxjb2xvcl9kZWZhdWx0cyIpLHU9 dCgiLi4vc2NhdHRlci9jb25zdGFudHMiKS5QVFNfTElORVNPTkxZLGY9dCgiLi9hdHRyaWJ1 dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGgpe2Z1bmN0aW9uIHAocixpKXtyZXR1 cm4gbi5jb2VyY2UodCxlLGYscixpKX12YXIgZD1hKHQsZSxoLHApO2Q/KHAoInRoZXRhdW5p dCIpLHAoIm1vZGUiLGQ8dT8ibGluZXMrbWFya2VycyI6ImxpbmVzIikscCgidGV4dCIpLHAo ImhvdmVydGV4dCIpLCJmaWxscyIhPT1lLmhvdmVyb24mJnAoImhvdmVydGVtcGxhdGUiKSxp Lmhhc0xpbmVzKGUpJiYocyh0LGUscixoLHApLHAoImNvbm5lY3RnYXBzIikpLGkuaGFzTWFy a2VycyhlKSYmbyh0LGUscixoLHApLGkuaGFzVGV4dChlKSYmKHAoInRleHR0ZW1wbGF0ZSIp LGwodCxlLGgscCkpLHAoImZpbGwiKSwibm9uZSIhPT1lLmZpbGwmJmModCxlLHIscCksbi5j b2VyY2VTZWxlY3Rpb25NYXJrZXJPcGFjaXR5KGUscCkpOmUudmlzaWJsZT0hMX19LHsiLi4v Li4vbGliIjo1MDMsIi4uL3NjYXR0ZXIvY29uc3RhbnRzIjo5MzEsIi4uL3NjYXR0ZXIvZmls bGNvbG9yX2RlZmF1bHRzIjo5MzUsIi4uL3NjYXR0ZXIvbGluZV9kZWZhdWx0cyI6OTQwLCIu Li9zY2F0dGVyL21hcmtlcl9kZWZhdWx0cyI6OTQ2LCIuLi9zY2F0dGVyL3N1YnR5cGVzIjo5 NTIsIi4uL3NjYXR0ZXIvdGV4dF9kZWZhdWx0cyI6OTUzLCIuLi9zY2F0dGVycG9sYXIvZGVm YXVsdHMiOjEwMDQsIi4vYXR0cmlidXRlcyI6MTAwOX1dLDEwMTM6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vc2NhdHRlcnBvbGFyL2Zvcm1hdF9sYWJlbHMi KTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBpPXQuaTtyZXR1cm4iciJpbiB0fHwo dC5yPWUuX3JbaV0pLCJ0aGV0YSJpbiB0fHwodC50aGV0YT1lLl90aGV0YVtpXSksbih0LGUs cil9fSx7Ii4uL3NjYXR0ZXJwb2xhci9mb3JtYXRfbGFiZWxzIjoxMDA1fV0sMTAxNDpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9zY2F0dGVyZ2wvaG92ZXIi KSxpPXQoIi4uL3NjYXR0ZXJwb2xhci9ob3ZlciIpLm1ha2VIb3ZlclBvaW50VGV4dDtlLmV4 cG9ydHM9e2hvdmVyUG9pbnRzOmZ1bmN0aW9uKHQsZSxyLGEpe3ZhciBvPXQuY2RbMF0udCxz PW8ucixsPW8udGhldGEsYz1uLmhvdmVyUG9pbnRzKHQsZSxyLGEpO2lmKGMmJiExIT09Y1sw XS5pbmRleCl7dmFyIHU9Y1swXTtpZih2b2lkIDA9PT11LmluZGV4KXJldHVybiBjO3ZhciBm PXQuc3VicGxvdCxoPXUuY2RbdS5pbmRleF0scD11LnRyYWNlO2lmKGgucj1zW3UuaW5kZXhd LGgudGhldGE9bFt1LmluZGV4XSxmLmlzUHRJbnNpZGUoaCkpcmV0dXJuIHUueExhYmVsVmFs PXZvaWQgMCx1LnlMYWJlbFZhbD12b2lkIDAsaShoLHAsZix1KSxjfX19fSx7Ii4uL3NjYXR0 ZXJnbC9ob3ZlciI6OTg4LCIuLi9zY2F0dGVycG9sYXIvaG92ZXIiOjEwMDZ9XSwxMDE1Oltm dW5jdGlvbih0LGUscil7YXJndW1lbnRzWzRdWzg5Nl1bMF0uYXBwbHkocixhcmd1bWVudHMp fSx7Ii4vYmFzZV9pbmRleCI6MTAxMCwiLi9wbG90IjoxMDE2LGR1cDo4OTZ9XSwxMDE2Oltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIkBwbG90bHkvcG9pbnQtY2x1 c3RlciIpLGk9dCgiZmFzdC1pc251bWVyaWMiKSxhPXQoIi4uL3NjYXR0ZXJnbC9wbG90Iiks bz10KCIuLi9zY2F0dGVyZ2wvc2NlbmVfdXBkYXRlIikscz10KCIuLi9zY2F0dGVyZ2wvY29u dmVydCIpLGw9dCgiLi4vLi4vbGliIiksYz10KCIuLi9zY2F0dGVyZ2wvY29uc3RhbnRzIiku VE9PX01BTllfUE9JTlRTO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7aWYoci5sZW5ndGgp e3ZhciB1PWUucmFkaWFsQXhpcyxmPWUuYW5ndWxhckF4aXMsaD1vKHQsZSk7cmV0dXJuIHIu Zm9yRWFjaCgoZnVuY3Rpb24ocil7aWYociYmclswXSYmclswXS50cmFjZSl7dmFyIGEsbz1y WzBdLHA9by50cmFjZSxkPW8udCxtPXAuX2xlbmd0aCxnPWQucix2PWQudGhldGEseT1kLm9w dHMseD1nLnNsaWNlKCksYj12LnNsaWNlKCk7Zm9yKGE9MDthPGcubGVuZ3RoO2ErKyllLmlz UHRJbnNpZGUoe3I6Z1thXSx0aGV0YTp2W2FdfSl8fCh4W2FdPU5hTixiW2FdPU5hTik7dmFy IF89bmV3IEFycmF5KDIqbSksdz1BcnJheShtKSxUPUFycmF5KG0pO2ZvcihhPTA7YTxtO2Er Kyl7dmFyIGssQSxNPXhbYV07aWYoaShNKSl7dmFyIFM9dS5jMmcoTSksRT1mLmMyZyhiW2Fd LHAudGhldGF1bml0KTtrPVMqTWF0aC5jb3MoRSksQT1TKk1hdGguc2luKEUpfWVsc2Ugaz1B PU5hTjt3W2FdPV9bMiphXT1rLFRbYV09X1syKmErMV09QX1kLnRyZWU9bihfKSx5Lm1hcmtl ciYmbT49YyYmKHkubWFya2VyLmNsdXN0ZXI9ZC50cmVlKSx5Lm1hcmtlciYmKHkubWFya2Vy U2VsLnBvc2l0aW9ucz15Lm1hcmtlclVuc2VsLnBvc2l0aW9ucz15Lm1hcmtlci5wb3NpdGlv bnM9XykseS5saW5lJiZfLmxlbmd0aD4xJiZsLmV4dGVuZEZsYXQoeS5saW5lLHMubGluZVBv c2l0aW9ucyh0LHAsXykpLHkudGV4dCYmKGwuZXh0ZW5kRmxhdCh5LnRleHQse3Bvc2l0aW9u czpffSxzLnRleHRQb3NpdGlvbih0LHAseS50ZXh0LHkubWFya2VyKSksbC5leHRlbmRGbGF0 KHkudGV4dFNlbCx7cG9zaXRpb25zOl99LHMudGV4dFBvc2l0aW9uKHQscCx5LnRleHQseS5t YXJrZXJTZWwpKSxsLmV4dGVuZEZsYXQoeS50ZXh0VW5zZWwse3Bvc2l0aW9uczpffSxzLnRl eHRQb3NpdGlvbih0LHAseS50ZXh0LHkubWFya2VyVW5zZWwpKSkseS5maWxsJiYhaC5maWxs MmQmJihoLmZpbGwyZD0hMCkseS5tYXJrZXImJiFoLnNjYXR0ZXIyZCYmKGguc2NhdHRlcjJk PSEwKSx5LmxpbmUmJiFoLmxpbmUyZCYmKGgubGluZTJkPSEwKSx5LnRleHQmJiFoLmdsVGV4 dCYmKGguZ2xUZXh0PSEwKSxoLmxpbmVPcHRpb25zLnB1c2goeS5saW5lKSxoLmZpbGxPcHRp b25zLnB1c2goeS5maWxsKSxoLm1hcmtlck9wdGlvbnMucHVzaCh5Lm1hcmtlciksaC5tYXJr ZXJTZWxlY3RlZE9wdGlvbnMucHVzaCh5Lm1hcmtlclNlbCksaC5tYXJrZXJVbnNlbGVjdGVk T3B0aW9ucy5wdXNoKHkubWFya2VyVW5zZWwpLGgudGV4dE9wdGlvbnMucHVzaCh5LnRleHQp LGgudGV4dFNlbGVjdGVkT3B0aW9ucy5wdXNoKHkudGV4dFNlbCksaC50ZXh0VW5zZWxlY3Rl ZE9wdGlvbnMucHVzaCh5LnRleHRVbnNlbCksaC5zZWxlY3RCYXRjaC5wdXNoKFtdKSxoLnVu c2VsZWN0QmF0Y2gucHVzaChbXSksZC54PXcsZC55PVQsZC5yYXd4PXcsZC5yYXd5PVQsZC5y PWcsZC50aGV0YT12LGQucG9zaXRpb25zPV8sZC5fc2NlbmU9aCxkLmluZGV4PWguY291bnQs aC5jb3VudCsrfX0pKSxhKHQsZSxyKX19LGUuZXhwb3J0cy5yZWdsUHJlY29tcGlsZWQ9e319 LHsiLi4vLi4vbGliIjo1MDMsIi4uL3NjYXR0ZXJnbC9jb25zdGFudHMiOjk4MiwiLi4vc2Nh dHRlcmdsL2NvbnZlcnQiOjk4MywiLi4vc2NhdHRlcmdsL3Bsb3QiOjk5MCwiLi4vc2NhdHRl cmdsL3NjZW5lX3VwZGF0ZSI6OTkxLCJAcGxvdGx5L3BvaW50LWNsdXN0ZXIiOjU5LCJmYXN0 LWlzbnVtZXJpYyI6MTkwfV0sMTAxNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIikuaG92ZXJ0ZW1wbGF0 ZUF0dHJzLGk9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLnRleHR0ZW1w bGF0ZUF0dHJzLGE9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVuZEZsYXQsbz10KCIuLi9z Y2F0dGVyL2F0dHJpYnV0ZXMiKSxzPXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxsPW8u bGluZTtlLmV4cG9ydHM9e21vZGU6by5tb2RlLHJlYWw6e3ZhbFR5cGU6ImRhdGFfYXJyYXki LGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn0saW1hZzp7dmFsVHlwZToiZGF0YV9h cnJheSIsZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifSx0ZXh0Om8udGV4dCx0ZXh0 dGVtcGxhdGU6aSh7ZWRpdFR5cGU6InBsb3QifSx7a2V5czpbInJlYWwiLCJpbWFnIiwidGV4 dCJdfSksaG92ZXJ0ZXh0Om8uaG92ZXJ0ZXh0LGxpbmU6e2NvbG9yOmwuY29sb3Isd2lkdGg6 bC53aWR0aCxkYXNoOmwuZGFzaCxzaGFwZTphKHt9LGwuc2hhcGUse3ZhbHVlczpbImxpbmVh ciIsInNwbGluZSJdfSksc21vb3RoaW5nOmwuc21vb3RoaW5nLGVkaXRUeXBlOiJjYWxjIn0s Y29ubmVjdGdhcHM6by5jb25uZWN0Z2FwcyxtYXJrZXI6by5tYXJrZXIsY2xpcG9uYXhpczph KHt9LG8uY2xpcG9uYXhpcyx7ZGZsdDohMX0pLHRleHRwb3NpdGlvbjpvLnRleHRwb3NpdGlv bix0ZXh0Zm9udDpvLnRleHRmb250LGZpbGw6YSh7fSxvLmZpbGwse3ZhbHVlczpbIm5vbmUi LCJ0b3NlbGYiLCJ0b25leHQiXSxkZmx0OiJub25lIn0pLGZpbGxjb2xvcjpvLmZpbGxjb2xv cixob3ZlcmluZm86YSh7fSxzLmhvdmVyaW5mbyx7ZmxhZ3M6WyJyZWFsIiwiaW1hZyIsInRl eHQiLCJuYW1lIl19KSxob3Zlcm9uOm8uaG92ZXJvbixob3ZlcnRlbXBsYXRlOm4oKSxzZWxl Y3RlZDpvLnNlbGVjdGVkLHVuc2VsZWN0ZWQ6by51bnNlbGVjdGVkfX0seyIuLi8uLi9saWIv ZXh0ZW5kIjo0OTMsIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjU1MCwiLi4vLi4vcGxvdHMv dGVtcGxhdGVfYXR0cmlidXRlcyI6NjMzLCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiOjkyN31d LDEwMTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZmFzdC1pc251 bWVyaWMiKSxpPXQoIi4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiKS5CQUROVU0sYT10KCIu Li9zY2F0dGVyL2NvbG9yc2NhbGVfY2FsYyIpLG89dCgiLi4vc2NhdHRlci9hcnJheXNfdG9f Y2FsY2RhdGEiKSxzPXQoIi4uL3NjYXR0ZXIvY2FsY19zZWxlY3Rpb24iKSxsPXQoIi4uL3Nj YXR0ZXIvY2FsYyIpLmNhbGNNYXJrZXJTaXplO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zv cih2YXIgcj10Ll9mdWxsTGF5b3V0LGM9ZS5zdWJwbG90LHU9cltjXS5yZWFsYXhpcyxmPXJb Y10uaW1hZ2luYXJ5YXhpcyxoPXUubWFrZUNhbGNkYXRhKGUsInJlYWwiKSxwPWYubWFrZUNh bGNkYXRhKGUsImltYWciKSxkPWUuX2xlbmd0aCxtPW5ldyBBcnJheShkKSxnPTA7ZzxkO2cr Kyl7dmFyIHY9aFtnXSx5PXBbZ10seD1tW2ddPXt9O24odikmJm4oeSk/KHgucmVhbD12LHgu aW1hZz15KTp4LnJlYWw9aX1yZXR1cm4gbChlLGQpLGEodCxlKSxvKG0sZSkscyhtLGUpLG19 fSx7Ii4uLy4uL2NvbnN0YW50cy9udW1lcmljYWwiOjQ3OSwiLi4vc2NhdHRlci9hcnJheXNf dG9fY2FsY2RhdGEiOjkyNiwiLi4vc2NhdHRlci9jYWxjIjo5MjgsIi4uL3NjYXR0ZXIvY2Fs Y19zZWxlY3Rpb24iOjkyOSwiLi4vc2NhdHRlci9jb2xvcnNjYWxlX2NhbGMiOjkzMCwiZmFz dC1pc251bWVyaWMiOjE5MH1dLDEwMTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuLi9zY2F0dGVyL3N1YnR5cGVzIiksYT10KCIu Li9zY2F0dGVyL21hcmtlcl9kZWZhdWx0cyIpLG89dCgiLi4vc2NhdHRlci9saW5lX2RlZmF1 bHRzIikscz10KCIuLi9zY2F0dGVyL2xpbmVfc2hhcGVfZGVmYXVsdHMiKSxsPXQoIi4uL3Nj YXR0ZXIvdGV4dF9kZWZhdWx0cyIpLGM9dCgiLi4vc2NhdHRlci9maWxsY29sb3JfZGVmYXVs dHMiKSx1PXQoIi4uL3NjYXR0ZXIvY29uc3RhbnRzIikuUFRTX0xJTkVTT05MWSxmPXQoIi4v YXR0cmlidXRlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixoKXtmdW5jdGlvbiBwKHIs aSl7cmV0dXJuIG4uY29lcmNlKHQsZSxmLHIsaSl9dmFyIGQ9ZnVuY3Rpb24odCxlLHIsbil7 dmFyIGksYT1uKCJyZWFsIiksbz1uKCJpbWFnIik7YSYmbyYmKGk9TWF0aC5taW4oYS5sZW5n dGgsby5sZW5ndGgpKTtyZXR1cm4gZS5fbGVuZ3RoPWksaX0oMCxlLDAscCk7aWYoZCl7cCgi bW9kZSIsZDx1PyJsaW5lcyttYXJrZXJzIjoibGluZXMiKSxwKCJ0ZXh0IikscCgiaG92ZXJ0 ZXh0IiksImZpbGxzIiE9PWUuaG92ZXJvbiYmcCgiaG92ZXJ0ZW1wbGF0ZSIpLGkuaGFzTGlu ZXMoZSkmJihvKHQsZSxyLGgscCkscyh0LGUscCkscCgiY29ubmVjdGdhcHMiKSksaS5oYXNN YXJrZXJzKGUpJiZhKHQsZSxyLGgscCx7Z3JhZGllbnQ6ITB9KSxpLmhhc1RleHQoZSkmJihw KCJ0ZXh0dGVtcGxhdGUiKSxsKHQsZSxoLHApKTt2YXIgbT1bXTsoaS5oYXNNYXJrZXJzKGUp fHxpLmhhc1RleHQoZSkpJiYocCgiY2xpcG9uYXhpcyIpLHAoIm1hcmtlci5tYXhkaXNwbGF5 ZWQiKSxtLnB1c2goInBvaW50cyIpKSxwKCJmaWxsIiksIm5vbmUiIT09ZS5maWxsJiYoYyh0 LGUscixwKSxpLmhhc0xpbmVzKGUpfHxzKHQsZSxwKSksInRvbmV4dCIhPT1lLmZpbGwmJiJ0 b3NlbGYiIT09ZS5maWxsfHxtLnB1c2goImZpbGxzIikscCgiaG92ZXJvbiIsbS5qb2luKCIr Iil8fCJwb2ludHMiKSxuLmNvZXJjZVNlbGVjdGlvbk1hcmtlck9wYWNpdHkoZSxwKX1lbHNl IGUudmlzaWJsZT0hMX19LHsiLi4vLi4vbGliIjo1MDMsIi4uL3NjYXR0ZXIvY29uc3RhbnRz Ijo5MzEsIi4uL3NjYXR0ZXIvZmlsbGNvbG9yX2RlZmF1bHRzIjo5MzUsIi4uL3NjYXR0ZXIv bGluZV9kZWZhdWx0cyI6OTQwLCIuLi9zY2F0dGVyL2xpbmVfc2hhcGVfZGVmYXVsdHMiOjk0 MiwiLi4vc2NhdHRlci9tYXJrZXJfZGVmYXVsdHMiOjk0NiwiLi4vc2NhdHRlci9zdWJ0eXBl cyI6OTUyLCIuLi9zY2F0dGVyL3RleHRfZGVmYXVsdHMiOjk1MywiLi9hdHRyaWJ1dGVzIjox MDE3fV0sMTAyMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8u Li9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFy IGk9e30sYT1yW2Uuc3VicGxvdF0uX3N1YnBsb3Q7cmV0dXJuIGkucmVhbExhYmVsPW4udGlj a1RleHQoYS5yYWRpYWxBeGlzLHQucmVhbCwhMCkudGV4dCxpLmltYWdMYWJlbD1uLnRpY2tU ZXh0KGEuYW5ndWxhckF4aXMsdC5pbWFnLCEwKS50ZXh0LGl9fSx7Ii4uLy4uL3Bsb3RzL2Nh cnRlc2lhbi9heGVzIjo1NTR9XSwxMDIxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoIi4uL3NjYXR0ZXIvaG92ZXIiKTtmdW5jdGlvbiBpKHQsZSxyLG4pe3ZhciBp PXIucmFkaWFsQXhpcyxhPXIuYW5ndWxhckF4aXM7aS5faG92ZXJ0aXRsZT0icmVhbCIsYS5f aG92ZXJ0aXRsZT0iaW1hZyI7dmFyIG89e307b1tlLnN1YnBsb3RdPXtfc3VicGxvdDpyfTt2 YXIgcz1lLl9tb2R1bGUuZm9ybWF0TGFiZWxzKHQsZSxvKTtuLnJlYWxMYWJlbD1zLnJlYWxM YWJlbCxuLmltYWdMYWJlbD1zLmltYWdMYWJlbDt2YXIgbD10LmhpfHxlLmhvdmVyaW5mbyxj PVtdO2Z1bmN0aW9uIHUodCxlKXtjLnB1c2godC5faG92ZXJ0aXRsZSsiOiAiK2UpfWlmKCFl LmhvdmVydGVtcGxhdGUpe3ZhciBmPWwuc3BsaXQoIisiKTstMSE9PWYuaW5kZXhPZigiYWxs IikmJihmPVsicmVhbCIsImltYWciLCJ0ZXh0Il0pLC0xIT09Zi5pbmRleE9mKCJyZWFsIikm JnUoaSxuLnJlYWxMYWJlbCksLTEhPT1mLmluZGV4T2YoImltYWciKSYmdShhLG4uaW1hZ0xh YmVsKSwtMSE9PWYuaW5kZXhPZigidGV4dCIpJiZuLnRleHQmJihjLnB1c2gobi50ZXh0KSxk ZWxldGUgbi50ZXh0KSxuLmV4dHJhVGV4dD1jLmpvaW4oIjxicj4iKX19ZS5leHBvcnRzPXto b3ZlclBvaW50czpmdW5jdGlvbih0LGUscixhKXt2YXIgbz1uKHQsZSxyLGEpO2lmKG8mJiEx IT09b1swXS5pbmRleCl7dmFyIHM9b1swXTtpZih2b2lkIDA9PT1zLmluZGV4KXJldHVybiBv O3ZhciBsPXQuc3VicGxvdCxjPXMuY2Rbcy5pbmRleF0sdT1zLnRyYWNlO2lmKGwuaXNQdElu c2lkZShjKSlyZXR1cm4gcy54TGFiZWxWYWw9dm9pZCAwLHMueUxhYmVsVmFsPXZvaWQgMCxp KGMsdSxsLHMpLHMuaG92ZXJ0ZW1wbGF0ZT11LmhvdmVydGVtcGxhdGUsb319LG1ha2VIb3Zl clBvaW50VGV4dDppfX0seyIuLi9zY2F0dGVyL2hvdmVyIjo5Mzh9XSwxMDIyOltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17bW9kdWxlVHlwZToidHJhY2UiLG5h bWU6InNjYXR0ZXJzbWl0aCIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvc21pdGgi KSxjYXRlZ29yaWVzOlsic21pdGgiLCJzeW1ib2xzIiwic2hvd0xlZ2VuZCIsInNjYXR0ZXIt bGlrZSJdLGF0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgi Li9kZWZhdWx0cyIpLGNvbG9yYmFyOnQoIi4uL3NjYXR0ZXIvbWFya2VyX2NvbG9yYmFyIiks Zm9ybWF0TGFiZWxzOnQoIi4vZm9ybWF0X2xhYmVscyIpLGNhbGM6dCgiLi9jYWxjIikscGxv dDp0KCIuL3Bsb3QiKSxzdHlsZTp0KCIuLi9zY2F0dGVyL3N0eWxlIikuc3R5bGUsc3R5bGVP blNlbGVjdDp0KCIuLi9zY2F0dGVyL3N0eWxlIikuc3R5bGVPblNlbGVjdCxob3ZlclBvaW50 czp0KCIuL2hvdmVyIikuaG92ZXJQb2ludHMsc2VsZWN0UG9pbnRzOnQoIi4uL3NjYXR0ZXIv c2VsZWN0IiksbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvc21pdGgiOjYyOSwiLi4vc2NhdHRl ci9tYXJrZXJfY29sb3JiYXIiOjk0NSwiLi4vc2NhdHRlci9zZWxlY3QiOjk0OSwiLi4vc2Nh dHRlci9zdHlsZSI6OTUxLCIuL2F0dHJpYnV0ZXMiOjEwMTcsIi4vY2FsYyI6MTAxOCwiLi9k ZWZhdWx0cyI6MTAxOSwiLi9mb3JtYXRfbGFiZWxzIjoxMDIwLCIuL2hvdmVyIjoxMDIxLCIu L3Bsb3QiOjEwMjN9XSwxMDIzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4uL3NjYXR0ZXIvcGxvdCIpLGk9dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIp LkJBRE5VTSxhPXQoIi4uLy4uL3Bsb3RzL3NtaXRoL2hlbHBlcnMiKS5zbWl0aDtlLmV4cG9y dHM9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbz1lLmxheWVycy5mcm9udHBsb3Quc2VsZWN0 KCJnLnNjYXR0ZXJsYXllciIpLHM9e3hheGlzOmUueGF4aXMseWF4aXM6ZS55YXhpcyxwbG90 OmUuZnJhbWV3b3JrLGxheWVyQ2xpcElkOmUuX2hhc0NsaXBPbkF4aXNGYWxzZT9lLmNsaXBJ ZHMuZm9yVHJhY2VzOm51bGx9LGw9MDtsPHIubGVuZ3RoO2wrKylmb3IodmFyIGM9cltsXSx1 PTA7dTxjLmxlbmd0aDt1Kyspe3ZhciBmPWNbdV0saD1mLnJlYWw7aWYoaD09PWkpZi54PWYu eT1pO2Vsc2V7dmFyIHA9YShbaCxmLmltYWddKTtmLng9cFswXSxmLnk9cFsxXX19bih0LHMs cixvKX19LHsiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NDc5LCIuLi8uLi9wbG90cy9z bWl0aC9oZWxwZXJzIjo2MjgsIi4uL3NjYXR0ZXIvcGxvdCI6OTQ4fV0sMTAyNDpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9h dHRyaWJ1dGVzIikuaG92ZXJ0ZW1wbGF0ZUF0dHJzLGk9dCgiLi4vLi4vcGxvdHMvdGVtcGxh dGVfYXR0cmlidXRlcyIpLnRleHR0ZW1wbGF0ZUF0dHJzLGE9dCgiLi4vc2NhdHRlci9hdHRy aWJ1dGVzIiksbz10KCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIikscz10KCIuLi8uLi9jb21w b25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLGw9dCgiLi4vLi4vY29tcG9uZW50cy9k cmF3aW5nL2F0dHJpYnV0ZXMiKS5kYXNoLGM9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVu ZEZsYXQsdT1hLm1hcmtlcixmPWEubGluZSxoPXUubGluZTtlLmV4cG9ydHM9e2E6e3ZhbFR5 cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sYjp7dmFsVHlwZToiZGF0YV9hcnJh eSIsZWRpdFR5cGU6ImNhbGMifSxjOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToi Y2FsYyJ9LHN1bTp7dmFsVHlwZToibnVtYmVyIixkZmx0OjAsbWluOjAsZWRpdFR5cGU6ImNh bGMifSxtb2RlOmMoe30sYS5tb2RlLHtkZmx0OiJtYXJrZXJzIn0pLHRleHQ6Yyh7fSxhLnRl eHQse30pLHRleHR0ZW1wbGF0ZTppKHtlZGl0VHlwZToicGxvdCJ9LHtrZXlzOlsiYSIsImIi LCJjIiwidGV4dCJdfSksaG92ZXJ0ZXh0OmMoe30sYS5ob3ZlcnRleHQse30pLGxpbmU6e2Nv bG9yOmYuY29sb3Isd2lkdGg6Zi53aWR0aCxkYXNoOmwsc2hhcGU6Yyh7fSxmLnNoYXBlLHt2 YWx1ZXM6WyJsaW5lYXIiLCJzcGxpbmUiXX0pLHNtb290aGluZzpmLnNtb290aGluZyxlZGl0 VHlwZToiY2FsYyJ9LGNvbm5lY3RnYXBzOmEuY29ubmVjdGdhcHMsY2xpcG9uYXhpczphLmNs aXBvbmF4aXMsZmlsbDpjKHt9LGEuZmlsbCx7dmFsdWVzOlsibm9uZSIsInRvc2VsZiIsInRv bmV4dCJdLGRmbHQ6Im5vbmUifSksZmlsbGNvbG9yOmEuZmlsbGNvbG9yLG1hcmtlcjpjKHtz eW1ib2w6dS5zeW1ib2wsb3BhY2l0eTp1Lm9wYWNpdHksbWF4ZGlzcGxheWVkOnUubWF4ZGlz cGxheWVkLHNpemU6dS5zaXplLHNpemVyZWY6dS5zaXplcmVmLHNpemVtaW46dS5zaXplbWlu LHNpemVtb2RlOnUuc2l6ZW1vZGUsbGluZTpjKHt3aWR0aDpoLndpZHRoLGVkaXRUeXBlOiJj YWxjIn0scygibWFya2VyLmxpbmUiKSksZ3JhZGllbnQ6dS5ncmFkaWVudCxlZGl0VHlwZToi Y2FsYyJ9LHMoIm1hcmtlciIpKSx0ZXh0Zm9udDphLnRleHRmb250LHRleHRwb3NpdGlvbjph LnRleHRwb3NpdGlvbixzZWxlY3RlZDphLnNlbGVjdGVkLHVuc2VsZWN0ZWQ6YS51bnNlbGVj dGVkLGhvdmVyaW5mbzpjKHt9LG8uaG92ZXJpbmZvLHtmbGFnczpbImEiLCJiIiwiYyIsInRl eHQiLCJuYW1lIl19KSxob3Zlcm9uOmEuaG92ZXJvbixob3ZlcnRlbXBsYXRlOm4oKX19LHsi Li4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiOjM3MywiLi4vLi4vY29t cG9uZW50cy9kcmF3aW5nL2F0dHJpYnV0ZXMiOjM4NywiLi4vLi4vbGliL2V4dGVuZCI6NDkz LCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIjo1NTAsIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0 dHJpYnV0ZXMiOjYzMywiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIjo5Mjd9XSwxMDI1OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImZhc3QtaXNudW1lcmljIiksaT10 KCIuLi9zY2F0dGVyL2NvbG9yc2NhbGVfY2FsYyIpLGE9dCgiLi4vc2NhdHRlci9hcnJheXNf dG9fY2FsY2RhdGEiKSxvPXQoIi4uL3NjYXR0ZXIvY2FsY19zZWxlY3Rpb24iKSxzPXQoIi4u L3NjYXR0ZXIvY2FsYyIpLmNhbGNNYXJrZXJTaXplLGw9WyJhIiwiYiIsImMiXSxjPXthOlsi YiIsImMiXSxiOlsiYSIsImMiXSxjOlsiYSIsImIiXX07ZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSl7dmFyIHIsdSxmLGgscCxkLG09dC5fZnVsbExheW91dFtlLnN1YnBsb3RdLnN1bSxnPWUu c3VtfHxtLHY9e2E6ZS5hLGI6ZS5iLGM6ZS5jfTtmb3Iocj0wO3I8bC5sZW5ndGg7cisrKWlm KCF2W2Y9bFtyXV0pe2ZvcihwPXZbY1tmXVswXV0sZD12W2NbZl1bMV1dLGg9bmV3IEFycmF5 KHAubGVuZ3RoKSx1PTA7dTxwLmxlbmd0aDt1KyspaFt1XT1nLXBbdV0tZFt1XTt2W2ZdPWh9 dmFyIHkseCxiLF8sdyxULGs9ZS5fbGVuZ3RoLEE9bmV3IEFycmF5KGspO2ZvcihyPTA7cjxr O3IrKyl5PXYuYVtyXSx4PXYuYltyXSxiPXYuY1tyXSxuKHkpJiZuKHgpJiZuKGIpPygxIT09 KF89bS8oKHk9K3kpKyh4PSt4KSsoYj0rYikpKSYmKHkqPV8seCo9XyxiKj1fKSxUPXksdz1i LXgsQVtyXT17eDp3LHk6VCxhOnksYjp4LGM6Yn0pOkFbcl09e3g6ITEseTohMX07cmV0dXJu IHMoZSxrKSxpKHQsZSksYShBLGUpLG8oQSxlKSxBfX0seyIuLi9zY2F0dGVyL2FycmF5c190 b19jYWxjZGF0YSI6OTI2LCIuLi9zY2F0dGVyL2NhbGMiOjkyOCwiLi4vc2NhdHRlci9jYWxj X3NlbGVjdGlvbiI6OTI5LCIuLi9zY2F0dGVyL2NvbG9yc2NhbGVfY2FsYyI6OTMwLCJmYXN0 LWlzbnVtZXJpYyI6MTkwfV0sMTAyNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4uL3NjYXR0ZXIvY29uc3RhbnRzIiksYT10KCIu Li9zY2F0dGVyL3N1YnR5cGVzIiksbz10KCIuLi9zY2F0dGVyL21hcmtlcl9kZWZhdWx0cyIp LHM9dCgiLi4vc2NhdHRlci9saW5lX2RlZmF1bHRzIiksbD10KCIuLi9zY2F0dGVyL2xpbmVf c2hhcGVfZGVmYXVsdHMiKSxjPXQoIi4uL3NjYXR0ZXIvdGV4dF9kZWZhdWx0cyIpLHU9dCgi Li4vc2NhdHRlci9maWxsY29sb3JfZGVmYXVsdHMiKSxmPXQoIi4vYXR0cmlidXRlcyIpO2Uu ZXhwb3J0cz1mdW5jdGlvbih0LGUscixoKXtmdW5jdGlvbiBwKHIsaSl7cmV0dXJuIG4uY29l cmNlKHQsZSxmLHIsaSl9dmFyIGQsbT1wKCJhIiksZz1wKCJiIiksdj1wKCJjIik7aWYobT8o ZD1tLmxlbmd0aCxnPyhkPU1hdGgubWluKGQsZy5sZW5ndGgpLHYmJihkPU1hdGgubWluKGQs di5sZW5ndGgpKSk6ZD12P01hdGgubWluKGQsdi5sZW5ndGgpOjApOmcmJnYmJihkPU1hdGgu bWluKGcubGVuZ3RoLHYubGVuZ3RoKSksZCl7ZS5fbGVuZ3RoPWQscCgic3VtIikscCgidGV4 dCIpLHAoImhvdmVydGV4dCIpLCJmaWxscyIhPT1lLmhvdmVyb24mJnAoImhvdmVydGVtcGxh dGUiKSxwKCJtb2RlIixkPGkuUFRTX0xJTkVTT05MWT8ibGluZXMrbWFya2VycyI6ImxpbmVz IiksYS5oYXNMaW5lcyhlKSYmKHModCxlLHIsaCxwKSxsKHQsZSxwKSxwKCJjb25uZWN0Z2Fw cyIpKSxhLmhhc01hcmtlcnMoZSkmJm8odCxlLHIsaCxwLHtncmFkaWVudDohMH0pLGEuaGFz VGV4dChlKSYmKHAoInRleHR0ZW1wbGF0ZSIpLGModCxlLGgscCkpO3ZhciB5PVtdOyhhLmhh c01hcmtlcnMoZSl8fGEuaGFzVGV4dChlKSkmJihwKCJjbGlwb25heGlzIikscCgibWFya2Vy Lm1heGRpc3BsYXllZCIpLHkucHVzaCgicG9pbnRzIikpLHAoImZpbGwiKSwibm9uZSIhPT1l LmZpbGwmJih1KHQsZSxyLHApLGEuaGFzTGluZXMoZSl8fGwodCxlLHApKSwidG9uZXh0IiE9 PWUuZmlsbCYmInRvc2VsZiIhPT1lLmZpbGx8fHkucHVzaCgiZmlsbHMiKSxwKCJob3Zlcm9u Iix5LmpvaW4oIisiKXx8InBvaW50cyIpLG4uY29lcmNlU2VsZWN0aW9uTWFya2VyT3BhY2l0 eShlLHApfWVsc2UgZS52aXNpYmxlPSExfX0seyIuLi8uLi9saWIiOjUwMywiLi4vc2NhdHRl ci9jb25zdGFudHMiOjkzMSwiLi4vc2NhdHRlci9maWxsY29sb3JfZGVmYXVsdHMiOjkzNSwi Li4vc2NhdHRlci9saW5lX2RlZmF1bHRzIjo5NDAsIi4uL3NjYXR0ZXIvbGluZV9zaGFwZV9k ZWZhdWx0cyI6OTQyLCIuLi9zY2F0dGVyL21hcmtlcl9kZWZhdWx0cyI6OTQ2LCIuLi9zY2F0 dGVyL3N1YnR5cGVzIjo5NTIsIi4uL3NjYXR0ZXIvdGV4dF9kZWZhdWx0cyI6OTUzLCIuL2F0 dHJpYnV0ZXMiOjEwMjR9XSwxMDI3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Uu ZXhwb3J0cz1mdW5jdGlvbih0LGUscixuLGkpe2lmKGUueGEmJih0LnhheGlzPWUueGEpLGUu eWEmJih0LnlheGlzPWUueWEpLG5baV0pe3ZhciBhPW5baV07dC5hPWEuYSx0LmI9YS5iLHQu Yz1hLmN9ZWxzZSB0LmE9ZS5hLHQuYj1lLmIsdC5jPWUuYztyZXR1cm4gdH19LHt9XSwxMDI4 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2Nh cnRlc2lhbi9heGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgaT17fSxhPXJb ZS5zdWJwbG90XS5fc3VicGxvdDtyZXR1cm4gaS5hTGFiZWw9bi50aWNrVGV4dChhLmFheGlz LHQuYSwhMCkudGV4dCxpLmJMYWJlbD1uLnRpY2tUZXh0KGEuYmF4aXMsdC5iLCEwKS50ZXh0 LGkuY0xhYmVsPW4udGlja1RleHQoYS5jYXhpcyx0LmMsITApLnRleHQsaX19LHsiLi4vLi4v cGxvdHMvY2FydGVzaWFuL2F4ZXMiOjU1NH1dLDEwMjk6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiLi4vc2NhdHRlci9ob3ZlciIpO2UuZXhwb3J0cz1mdW5jdGlv bih0LGUscixpKXt2YXIgYT1uKHQsZSxyLGkpO2lmKGEmJiExIT09YVswXS5pbmRleCl7dmFy IG89YVswXTtpZih2b2lkIDA9PT1vLmluZGV4KXt2YXIgcz0xLW8ueTAvdC55YS5fbGVuZ3Ro LGw9dC54YS5fbGVuZ3RoLGM9bCpzLzIsdT1sLWM7cmV0dXJuIG8ueDA9TWF0aC5tYXgoTWF0 aC5taW4oby54MCx1KSxjKSxvLngxPU1hdGgubWF4KE1hdGgubWluKG8ueDEsdSksYyksYX12 YXIgZj1vLmNkW28uaW5kZXhdLGg9by50cmFjZSxwPW8uc3VicGxvdDtvLmE9Zi5hLG8uYj1m LmIsby5jPWYuYyxvLnhMYWJlbFZhbD12b2lkIDAsby55TGFiZWxWYWw9dm9pZCAwO3ZhciBk PXt9O2RbaC5zdWJwbG90XT17X3N1YnBsb3Q6cH07dmFyIG09aC5fbW9kdWxlLmZvcm1hdExh YmVscyhmLGgsZCk7by5hTGFiZWw9bS5hTGFiZWwsby5iTGFiZWw9bS5iTGFiZWwsby5jTGFi ZWw9bS5jTGFiZWw7dmFyIGc9Zi5oaXx8aC5ob3ZlcmluZm8sdj1bXTtpZighaC5ob3ZlcnRl bXBsYXRlKXt2YXIgeT1nLnNwbGl0KCIrIik7LTEhPT15LmluZGV4T2YoImFsbCIpJiYoeT1b ImEiLCJiIiwiYyJdKSwtMSE9PXkuaW5kZXhPZigiYSIpJiZ4KHAuYWF4aXMsby5hTGFiZWwp LC0xIT09eS5pbmRleE9mKCJiIikmJngocC5iYXhpcyxvLmJMYWJlbCksLTEhPT15LmluZGV4 T2YoImMiKSYmeChwLmNheGlzLG8uY0xhYmVsKX1yZXR1cm4gby5leHRyYVRleHQ9di5qb2lu KCI8YnI+Iiksby5ob3ZlcnRlbXBsYXRlPWguaG92ZXJ0ZW1wbGF0ZSxhfWZ1bmN0aW9uIHgo dCxlKXt2LnB1c2godC5faG92ZXJ0aXRsZSsiOiAiK2UpfX19LHsiLi4vc2NhdHRlci9ob3Zl ciI6OTM4fV0sMTAzMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9 e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZh dWx0cyIpLGNvbG9yYmFyOnQoIi4uL3NjYXR0ZXIvbWFya2VyX2NvbG9yYmFyIiksZm9ybWF0 TGFiZWxzOnQoIi4vZm9ybWF0X2xhYmVscyIpLGNhbGM6dCgiLi9jYWxjIikscGxvdDp0KCIu L3Bsb3QiKSxzdHlsZTp0KCIuLi9zY2F0dGVyL3N0eWxlIikuc3R5bGUsc3R5bGVPblNlbGVj dDp0KCIuLi9zY2F0dGVyL3N0eWxlIikuc3R5bGVPblNlbGVjdCxob3ZlclBvaW50czp0KCIu L2hvdmVyIiksc2VsZWN0UG9pbnRzOnQoIi4uL3NjYXR0ZXIvc2VsZWN0IiksZXZlbnREYXRh OnQoIi4vZXZlbnRfZGF0YSIpLG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJzY2F0dGVydGVy bmFyeSIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvdGVybmFyeSIpLGNhdGVnb3Jp ZXM6WyJ0ZXJuYXJ5Iiwic3ltYm9scyIsInNob3dMZWdlbmQiLCJzY2F0dGVyLWxpa2UiXSxt ZXRhOnt9fX0seyIuLi8uLi9wbG90cy90ZXJuYXJ5Ijo2MzQsIi4uL3NjYXR0ZXIvbWFya2Vy X2NvbG9yYmFyIjo5NDUsIi4uL3NjYXR0ZXIvc2VsZWN0Ijo5NDksIi4uL3NjYXR0ZXIvc3R5 bGUiOjk1MSwiLi9hdHRyaWJ1dGVzIjoxMDI0LCIuL2NhbGMiOjEwMjUsIi4vZGVmYXVsdHMi OjEwMjYsIi4vZXZlbnRfZGF0YSI6MTAyNywiLi9mb3JtYXRfbGFiZWxzIjoxMDI4LCIuL2hv dmVyIjoxMDI5LCIuL3Bsb3QiOjEwMzF9XSwxMDMxOltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoIi4uL3NjYXR0ZXIvcGxvdCIpO2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUscil7dmFyIGk9ZS5wbG90Q29udGFpbmVyO2kuc2VsZWN0KCIuc2NhdHRlcmxheWVyIiku c2VsZWN0QWxsKCIqIikucmVtb3ZlKCk7dmFyIGE9e3hheGlzOmUueGF4aXMseWF4aXM6ZS55 YXhpcyxwbG90OmksbGF5ZXJDbGlwSWQ6ZS5faGFzQ2xpcE9uQXhpc0ZhbHNlP2UuY2xpcElk UmVsYXRpdmU6bnVsbH0sbz1lLmxheWVycy5mcm9udHBsb3Quc2VsZWN0KCJnLnNjYXR0ZXJs YXllciIpO24odCxhLHIsbyl9fSx7Ii4uL3NjYXR0ZXIvcGxvdCI6OTQ4fV0sMTAzMjpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9zY2F0dGVyL2F0dHJpYnV0 ZXMiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIiksYT10 KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19mb3JtYXRfYXR0cmlidXRlcyIpLmF4aXNI b3ZlckZvcm1hdCxvPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS5ob3Zl cnRlbXBsYXRlQXR0cnMscz10KCIuLi9zY2F0dGVyZ2wvYXR0cmlidXRlcyIpLGw9dCgiLi4v Li4vcGxvdHMvY2FydGVzaWFuL2NvbnN0YW50cyIpLmlkUmVnZXgsYz10KCIuLi8uLi9wbG90 X2FwaS9wbG90X3RlbXBsYXRlIikudGVtcGxhdGVkQXJyYXksdT10KCIuLi8uLi9saWIvZXh0 ZW5kIikuZXh0ZW5kRmxhdCxmPW4ubWFya2VyLGg9Zi5saW5lLHA9dShpKCJtYXJrZXIubGlu ZSIse2VkaXRUeXBlT3ZlcnJpZGU6ImNhbGMifSkse3dpZHRoOnUoe30saC53aWR0aCx7ZWRp dFR5cGU6ImNhbGMifSksZWRpdFR5cGU6ImNhbGMifSksZD11KGkoIm1hcmtlciIpLHtzeW1i b2w6Zi5zeW1ib2wsc2l6ZTp1KHt9LGYuc2l6ZSx7ZWRpdFR5cGU6Im1hcmtlclNpemUifSks c2l6ZXJlZjpmLnNpemVyZWYsc2l6ZW1pbjpmLnNpemVtaW4sc2l6ZW1vZGU6Zi5zaXplbW9k ZSxvcGFjaXR5OmYub3BhY2l0eSxjb2xvcmJhcjpmLmNvbG9yYmFyLGxpbmU6cCxlZGl0VHlw ZToiY2FsYyJ9KTtmdW5jdGlvbiBtKHQpe3JldHVybnt2YWxUeXBlOiJpbmZvX2FycmF5Iixm cmVlTGVuZ3RoOiEwLGVkaXRUeXBlOiJjYWxjIixpdGVtczp7dmFsVHlwZToic3VicGxvdGlk IixyZWdleDpsW3RdLGVkaXRUeXBlOiJwbG90In19fWQuY29sb3IuZWRpdFR5cGU9ZC5jbWlu LmVkaXRUeXBlPWQuY21heC5lZGl0VHlwZT0ic3R5bGUiLGUuZXhwb3J0cz17ZGltZW5zaW9u czpjKCJkaW1lbnNpb24iLHt2aXNpYmxlOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVk aXRUeXBlOiJjYWxjIn0sbGFiZWw6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6ImNhbGMi fSx2YWx1ZXM6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjK2NsZWFyQXhp c1R5cGVzIn0sYXhpczp7dHlwZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsibGlu ZWFyIiwibG9nIiwiZGF0ZSIsImNhdGVnb3J5Il0sZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlz VHlwZXMifSxtYXRjaGVzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiExLGVkaXRUeXBlOiJj YWxjIn0sZWRpdFR5cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifSxlZGl0VHlwZToiY2FsYytj bGVhckF4aXNUeXBlcyJ9KSx0ZXh0OnUoe30scy50ZXh0LHt9KSxob3ZlcnRleHQ6dSh7fSxz LmhvdmVydGV4dCx7fSksaG92ZXJ0ZW1wbGF0ZTpvKCkseGhvdmVyZm9ybWF0OmEoIngiKSx5 aG92ZXJmb3JtYXQ6YSgieSIpLG1hcmtlcjpkLHhheGVzOm0oIngiKSx5YXhlczptKCJ5Iiks ZGlhZ29uYWw6e3Zpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6 ImNhbGMifSxlZGl0VHlwZToiY2FsYyJ9LHNob3d1cHBlcmhhbGY6e3ZhbFR5cGU6ImJvb2xl YW4iLGRmbHQ6ITAsZWRpdFR5cGU6ImNhbGMifSxzaG93bG93ZXJoYWxmOnt2YWxUeXBlOiJi b29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJjYWxjIn0sc2VsZWN0ZWQ6e21hcmtlcjpzLnNl bGVjdGVkLm1hcmtlcixlZGl0VHlwZToiY2FsYyJ9LHVuc2VsZWN0ZWQ6e21hcmtlcjpzLnVu c2VsZWN0ZWQubWFya2VyLGVkaXRUeXBlOiJjYWxjIn0sb3BhY2l0eTpzLm9wYWNpdHl9fSx7 Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjozNzMsIi4uLy4uL2xp Yi9leHRlbmQiOjQ5MywiLi4vLi4vcGxvdF9hcGkvcGxvdF90ZW1wbGF0ZSI6NTQzLCIuLi8u Li9wbG90cy9jYXJ0ZXNpYW4vYXhpc19mb3JtYXRfYXR0cmlidXRlcyI6NTU3LCIuLi8uLi9w bG90cy9jYXJ0ZXNpYW4vY29uc3RhbnRzIjo1NjEsIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0 dHJpYnV0ZXMiOjYzMywiLi4vc2NhdHRlci9hdHRyaWJ1dGVzIjo5MjcsIi4uL3NjYXR0ZXJn bC9hdHRyaWJ1dGVzIjo5Nzl9XSwxMDMzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3ZhciBuPXQoIi4uLy4uL3JlZ2lzdHJ5IiksaT10KCIuLi8uLi9jb21wb25lbnRzL2dyaWQi KTtlLmV4cG9ydHM9e21vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJzcGxvbSIsY2F0ZWdvcmll czpbImdsIiwicmVnbCIsImNhcnRlc2lhbiIsInN5bWJvbHMiLCJzaG93TGVnZW5kIiwic2Nh dHRlci1saWtlIl0sYXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0 czp0KCIuL2RlZmF1bHRzIiksY29sb3JiYXI6dCgiLi4vc2NhdHRlci9tYXJrZXJfY29sb3Ji YXIiKSxjYWxjOnQoIi4vY2FsYyIpLHBsb3Q6dCgiLi9wbG90IiksaG92ZXJQb2ludHM6dCgi Li9ob3ZlciIpLmhvdmVyUG9pbnRzLHNlbGVjdFBvaW50czp0KCIuL3NlbGVjdCIpLGVkaXRT dHlsZTp0KCIuL2VkaXRfc3R5bGUiKSxtZXRhOnt9fSxuLnJlZ2lzdGVyKGkpfSx7Ii4uLy4u L2NvbXBvbmVudHMvZ3JpZCI6NDEwLCIuLi8uLi9yZWdpc3RyeSI6NjM4LCIuLi9zY2F0dGVy L21hcmtlcl9jb2xvcmJhciI6OTQ1LCIuL2F0dHJpYnV0ZXMiOjEwMzIsIi4vY2FsYyI6MTAz NSwiLi9kZWZhdWx0cyI6MTAzNiwiLi9lZGl0X3N0eWxlIjoxMDM3LCIuL2hvdmVyIjoxMDM5 LCIuL3Bsb3QiOjEwNDEsIi4vc2VsZWN0IjoxMDQzfV0sMTAzNDpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJyZWdsLWxpbmUyZCIpLGk9dCgiLi4vLi4vcmVnaXN0 cnkiKSxhPXQoIi4uLy4uL2xpYi9wcmVwYXJlX3JlZ2wiKSxvPXQoIi4uLy4uL3Bsb3RzL2dl dF9kYXRhIikuZ2V0TW9kdWxlQ2FsY0RhdGEscz10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4i KSxsPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2lkcyIpLmdldEZyb21JZCxjPXQo Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIikuc2hvdWxkU2hvd1plcm9MaW5lLHU9e307 ZnVuY3Rpb24gZih0LGUscil7Zm9yKHZhciBuPXIubWF0cml4T3B0aW9ucy5kYXRhLmxlbmd0 aCxpPWUuX3Zpc2libGVEaW1zLGE9ci52aWV3T3B0cy5yYW5nZXM9bmV3IEFycmF5KG4pLG89 MDtvPGkubGVuZ3RoO28rKyl7dmFyIHM9aVtvXSxjPWFbb109bmV3IEFycmF5KDQpLHU9bCh0 LGUuX2RpYWdbc11bMF0pO3UmJihjWzBdPXUucjJsKHUucmFuZ2VbMF0pLGNbMl09dS5yMmwo dS5yYW5nZVsxXSkpO3ZhciBmPWwodCxlLl9kaWFnW3NdWzFdKTtmJiYoY1sxXT1mLnIybChm LnJhbmdlWzBdKSxjWzNdPWYucjJsKGYucmFuZ2VbMV0pKX1yLnNlbGVjdEJhdGNoLmxlbmd0 aHx8ci51bnNlbGVjdEJhdGNoLmxlbmd0aD9yLm1hdHJpeC51cGRhdGUoe3JhbmdlczphfSx7 cmFuZ2VzOmF9KTpyLm1hdHJpeC51cGRhdGUoe3JhbmdlczphfSl9ZnVuY3Rpb24gaCh0KXt2 YXIgZT10Ll9mdWxsTGF5b3V0LHI9ZS5fZ2xjYW52YXMuZGF0YSgpWzBdLnJlZ2wsaT1lLl9z cGxvbUdyaWQ7aXx8KGk9ZS5fc3Bsb21HcmlkPW4ocikpLGkudXBkYXRlKGZ1bmN0aW9uKHQp e3ZhciBlLHI9dC5fY29udGV4dC5wbG90R2xQaXhlbFJhdGlvLG49dC5fZnVsbExheW91dCxp PW4uX3NpemUsYT1bMCwwLG4ud2lkdGgqcixuLmhlaWdodCpyXSxvPXt9O2Z1bmN0aW9uIHMo dCxlLG4saSxzLGwpe24qPXIsaSo9cixzKj1yLGwqPXI7dmFyIGM9ZVt0KyJjb2xvciJdLHU9 ZVt0KyJ3aWR0aCJdLGY9U3RyaW5nKGMrdSk7ZiBpbiBvP29bZl0uZGF0YS5wdXNoKE5hTixO YU4sbixpLHMsbCk6b1tmXT17ZGF0YTpbbixpLHMsbF0sam9pbjoicmVjdCIsdGhpY2tuZXNz OnUqcixjb2xvcjpjLHZpZXdwb3J0OmEscmFuZ2U6YSxvdmVybGF5OiExfX1mb3IoZSBpbiBu Ll9zcGxvbVN1YnBsb3RzKXt2YXIgbCx1LGY9bi5fcGxvdHNbZV0saD1mLnhheGlzLHA9Zi55 YXhpcyxkPWguX2dyaWRWYWxzLG09cC5fZ3JpZFZhbHMsZz1oLl9vZmZzZXQsdj1oLl9sZW5n dGgseT1wLl9sZW5ndGgseD1pLmIrcC5kb21haW5bMF0qaS5oLGI9LXAuX20sXz0tYipwLnIy bChwLnJhbmdlWzBdLHAuY2FsZW5kYXIpO2lmKGguc2hvd2dyaWQpZm9yKGU9MDtlPGQubGVu Z3RoO2UrKylsPWcraC5sMnAoZFtlXS54KSxzKCJncmlkIixoLGwseCxsLHgreSk7aWYocC5z aG93Z3JpZClmb3IoZT0wO2U8bS5sZW5ndGg7ZSsrKXU9eCtfK2IqbVtlXS54LHMoImdyaWQi LHAsZyx1LGcrdix1KTtjKHQsaCxwKSYmKGw9ZytoLmwycCgwKSxzKCJ6ZXJvbGluZSIsaCxs LHgsbCx4K3kpKSxjKHQscCxoKSYmcygiemVyb2xpbmUiLHAsZyx1PXgrXyswLGcrdix1KX12 YXIgdz1bXTtmb3IoZSBpbiBvKXcucHVzaChvW2VdKTtyZXR1cm4gd30odCkpfWUuZXhwb3J0 cz17bmFtZToic3Bsb20iLGF0dHI6cy5hdHRyLGF0dHJSZWdleDpzLmF0dHJSZWdleCxsYXlv dXRBdHRyaWJ1dGVzOnMubGF5b3V0QXR0cmlidXRlcyxzdXBwbHlMYXlvdXREZWZhdWx0czpz LnN1cHBseUxheW91dERlZmF1bHRzLGRyYXdGcmFtZXdvcms6cy5kcmF3RnJhbWV3b3JrLHBs b3Q6ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dCxyPWkuZ2V0TW9kdWxlKCJzcGxv bSIpLG49byh0LmNhbGNkYXRhLHIpWzBdO2EodCxbIkFOR0xFX2luc3RhbmNlZF9hcnJheXMi LCJPRVNfZWxlbWVudF9pbmRleF91aW50Il0sdSkmJihlLl9oYXNPbmx5TGFyZ2VTcGxvbXMm JmgodCksci5wbG90KHQse30sbikpfSxkcmFnOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY2FsY2Rh dGEscj10Ll9mdWxsTGF5b3V0O3IuX2hhc09ubHlMYXJnZVNwbG9tcyYmaCh0KTtmb3IodmFy IG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIGk9ZVtuXVswXS50cmFjZSxhPXIuX3NwbG9tU2Nl bmVzW2kudWlkXTsic3Bsb20iPT09aS50eXBlJiZhJiZhLm1hdHJpeCYmZih0LGksYSl9fSx1 cGRhdGVHcmlkOmgsY2xlYW46ZnVuY3Rpb24odCxlLHIsbil7dmFyIGksYT17fTtpZihuLl9z cGxvbVNjZW5lcyl7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKyl7dmFyIG89dFtpXTsic3Bsb20i PT09by50eXBlJiYoYVtvLnVpZF09MSl9Zm9yKGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIGw9 cltpXTtpZighYVtsLnVpZF0pe3ZhciBjPW4uX3NwbG9tU2NlbmVzW2wudWlkXTtjJiZjLmRl c3Ryb3kmJmMuZGVzdHJveSgpLG4uX3NwbG9tU2NlbmVzW2wudWlkXT1udWxsLGRlbGV0ZSBu Ll9zcGxvbVNjZW5lc1tsLnVpZF19fX0wPT09T2JqZWN0LmtleXMobi5fc3Bsb21TY2VuZXN8 fHt9KS5sZW5ndGgmJmRlbGV0ZSBuLl9zcGxvbVNjZW5lcyxuLl9zcGxvbUdyaWQmJiFlLl9o YXNPbmx5TGFyZ2VTcGxvbXMmJm4uX2hhc09ubHlMYXJnZVNwbG9tcyYmKG4uX3NwbG9tR3Jp ZC5kZXN0cm95KCksbi5fc3Bsb21HcmlkPW51bGwsZGVsZXRlIG4uX3NwbG9tR3JpZCkscy5j bGVhbih0LGUscixuKX0sdXBkYXRlRng6cy51cGRhdGVGeCx0b1NWRzpzLnRvU1ZHLHJlZ2xQ cmVjb21waWxlZDp1fX0seyIuLi8uLi9saWIvcHJlcGFyZV9yZWdsIjo1MTYsIi4uLy4uL3Bs b3RzL2NhcnRlc2lhbiI6NTY4LCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NTU0LCIu Li8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiOjU1OCwiLi4vLi4vcGxvdHMvZ2V0X2Rh dGEiOjU5MywiLi4vLi4vcmVnaXN0cnkiOjYzOCwicmVnbC1saW5lMmQiOjI4MH1dLDEwMzU6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10 KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiKSxhPXQoIi4uL3NjYXR0ZXIvY2Fs YyIpLmNhbGNNYXJrZXJTaXplLG89dCgiLi4vc2NhdHRlci9jYWxjIikuY2FsY0F4aXNFeHBh bnNpb24scz10KCIuLi9zY2F0dGVyL2NvbG9yc2NhbGVfY2FsYyIpLGw9dCgiLi4vc2NhdHRl cmdsL2NvbnZlcnQiKS5tYXJrZXJTZWxlY3Rpb24sYz10KCIuLi9zY2F0dGVyZ2wvY29udmVy dCIpLm1hcmtlclN0eWxlLHU9dCgiLi9zY2VuZV91cGRhdGUiKSxmPXQoIi4uLy4uL2NvbnN0 YW50cy9udW1lcmljYWwiKS5CQUROVU0saD10KCIuLi9zY2F0dGVyZ2wvY29uc3RhbnRzIiku VE9PX01BTllfUE9JTlRTO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLHAsZCxtLGcs dix5PWUuZGltZW5zaW9ucyx4PWUuX2xlbmd0aCxiPXt9LF89Yi5jZGF0YT1bXSx3PWIuZGF0 YT1bXSxUPWUuX3Zpc2libGVEaW1zPVtdO2Z1bmN0aW9uIGsodCxyKXtmb3IodmFyIGk9dC5t YWtlQ2FsY2RhdGEoe3Y6ci52YWx1ZXMsdmNhbGVuZGFyOmUuY2FsZW5kYXJ9LCJ2IiksYT0w O2E8aS5sZW5ndGg7YSsrKWlbYV09aVthXT09PWY/TmFOOmlbYV07Xy5wdXNoKGkpLHcucHVz aCgibG9nIj09PXQudHlwZT9uLnNpbXBsZU1hcChpLHQuYzJsKTppKX1mb3Iocj0wO3I8eS5s ZW5ndGg7cisrKWlmKChkPXlbcl0pLnZpc2libGUpe2lmKG09aS5nZXRGcm9tSWQodCxlLl9k aWFnW3JdWzBdKSxnPWkuZ2V0RnJvbUlkKHQsZS5fZGlhZ1tyXVsxXSksbSYmZyYmbS50eXBl IT09Zy50eXBlKXtuLmxvZygiU2tpcHBpbmcgc3Bsb20gZGltZW5zaW9uICIrcisiIHdpdGgg Y29uZmxpY3RpbmcgYXhpcyB0eXBlcyIpO2NvbnRpbnVlfW0/KGsobSxkKSxnJiYiY2F0ZWdv cnkiPT09Zy50eXBlJiYoZy5fY2F0ZWdvcmllcz1tLl9jYXRlZ29yaWVzLnNsaWNlKCkpKTpr KGcsZCksVC5wdXNoKHIpfWZvcihzKHQsZSksbi5leHRlbmRGbGF0KGIsYyhlKSksdj1fLmxl bmd0aCp4Pmg/Yi5zaXplQXZnfHxNYXRoLm1heChiLnNpemUsMyk6YShlLHgpLHA9MDtwPFQu bGVuZ3RoO3ArKylkPXlbcj1UW3BdXSxtPWkuZ2V0RnJvbUlkKHQsZS5fZGlhZ1tyXVswXSl8 fHt9LGc9aS5nZXRGcm9tSWQodCxlLl9kaWFnW3JdWzFdKXx8e30sbyh0LGUsbSxnLF9bcF0s X1twXSx2KTt2YXIgQT11KHQsZSk7cmV0dXJuIEEubWF0cml4fHwoQS5tYXRyaXg9ITApLEEu bWF0cml4T3B0aW9ucz1iLEEuc2VsZWN0ZWRPcHRpb25zPWwoZSxlLnNlbGVjdGVkKSxBLnVu c2VsZWN0ZWRPcHRpb25zPWwoZSxlLnVuc2VsZWN0ZWQpLFt7eDohMSx5OiExLHQ6e30sdHJh Y2U6ZX1dfX0seyIuLi8uLi9jb25zdGFudHMvbnVtZXJpY2FsIjo0NzksIi4uLy4uL2xpYiI6 NTAzLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiOjU1OCwiLi4vc2NhdHRlci9j YWxjIjo5MjgsIi4uL3NjYXR0ZXIvY29sb3JzY2FsZV9jYWxjIjo5MzAsIi4uL3NjYXR0ZXJn bC9jb25zdGFudHMiOjk4MiwiLi4vc2NhdHRlcmdsL2NvbnZlcnQiOjk4MywiLi9zY2VuZV91 cGRhdGUiOjEwNDJ9XSwxMDM2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vLi4vcGxvdHMvYXJyYXlfY29udGFpbmVyX2RlZmF1 bHRzIiksYT10KCIuL2F0dHJpYnV0ZXMiKSxvPXQoIi4uL3NjYXR0ZXIvc3VidHlwZXMiKSxz PXQoIi4uL3NjYXR0ZXIvbWFya2VyX2RlZmF1bHRzIiksbD10KCIuLi9wYXJjb29yZHMvbWVy Z2VfbGVuZ3RoIiksYz10KCIuLi9zY2F0dGVyZ2wvaGVscGVycyIpLmlzT3BlblN5bWJvbDtm dW5jdGlvbiB1KHQsZSl7ZnVuY3Rpb24gcihyLGkpe3JldHVybiBuLmNvZXJjZSh0LGUsYS5k aW1lbnNpb25zLHIsaSl9cigibGFiZWwiKTt2YXIgaT1yKCJ2YWx1ZXMiKTtpJiZpLmxlbmd0 aD9yKCJ2aXNpYmxlIik6ZS52aXNpYmxlPSExLHIoImF4aXMudHlwZSIpLHIoImF4aXMubWF0 Y2hlcyIpfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscixmKXtmdW5jdGlvbiBoKHIsaSl7cmV0 dXJuIG4uY29lcmNlKHQsZSxhLHIsaSl9dmFyIHA9aSh0LGUse25hbWU6ImRpbWVuc2lvbnMi LGhhbmRsZUl0ZW1EZWZhdWx0czp1fSksZD1oKCJkaWFnb25hbC52aXNpYmxlIiksbT1oKCJz aG93dXBwZXJoYWxmIiksZz1oKCJzaG93bG93ZXJoYWxmIik7aWYobChlLHAsInZhbHVlcyIp JiYoZHx8bXx8Zykpe2goInRleHQiKSxoKCJob3ZlcnRleHQiKSxoKCJob3ZlcnRlbXBsYXRl IiksaCgieGhvdmVyZm9ybWF0IiksaCgieWhvdmVyZm9ybWF0Iikscyh0LGUscixmLGgpO3Zh ciB2PWMoZS5tYXJrZXIuc3ltYm9sKSx5PW8uaXNCdWJibGUoZSk7aCgibWFya2VyLmxpbmUu d2lkdGgiLHZ8fHk/MTowKSxmdW5jdGlvbih0LGUscixuKXt2YXIgaSxhLG89ZS5kaW1lbnNp b25zLHM9by5sZW5ndGgsbD1lLnNob3d1cHBlcmhhbGYsYz1lLnNob3dsb3dlcmhhbGYsdT1l LmRpYWdvbmFsLnZpc2libGUsZj1uZXcgQXJyYXkocyksaD1uZXcgQXJyYXkocyk7Zm9yKGk9 MDtpPHM7aSsrKXt2YXIgcD1pP2krMToiIjtmW2ldPSJ4IitwLGhbaV09InkiK3B9dmFyIGQ9 bigieGF4ZXMiLGYpLG09bigieWF4ZXMiLGgpLGc9ZS5fZGlhZz1uZXcgQXJyYXkocyk7ZS5f eGF4ZXM9e30sZS5feWF4ZXM9e307dmFyIHY9W10seT1bXTtmdW5jdGlvbiB4KHQsbixpLGEp e2lmKHQpe3ZhciBvPXQuY2hhckF0KDApLHM9ci5fc3Bsb21BeGVzW29dO2lmKGVbIl8iK28r ImF4ZXMiXVt0XT0xLGEucHVzaCh0KSwhKHQgaW4gcykpe3ZhciBsPXNbdF09e307aSYmKGwu bGFiZWw9aS5sYWJlbHx8IiIsaS52aXNpYmxlJiZpLmF4aXMmJihpLmF4aXMudHlwZSYmKGwu dHlwZT1pLmF4aXMudHlwZSksaS5heGlzLm1hdGNoZXMmJihsLm1hdGNoZXM9bikpKX19fXZh ciBiPSF1JiYhYyxfPSF1JiYhbDtmb3IoZS5fYXhlc0RpbT17fSxpPTA7aTxzO2krKyl7dmFy IHc9b1tpXSxUPTA9PT1pLGs9aT09PXMtMSxBPVQmJmJ8fGsmJl8/dm9pZCAwOmRbaV0sTT1U JiZffHxrJiZiP3ZvaWQgMDptW2ldO3goQSxNLHcsdikseChNLEEsdyx5KSxnW2ldPVtBLE1d LGUuX2F4ZXNEaW1bQV09aSxlLl9heGVzRGltW01dPWl9Zm9yKGk9MDtpPHYubGVuZ3RoO2kr Kylmb3IoYT0wO2E8eS5sZW5ndGg7YSsrKXt2YXIgUz12W2ldK3lbYV07aT5hJiZsfHxpPGEm JmM/ci5fc3Bsb21TdWJwbG90c1tTXT0xOmkhPT1hfHwhdSYmYyYmbHx8KHIuX3NwbG9tU3Vi cGxvdHNbU109MSl9KCFjfHwhdSYmbCYmYykmJihyLl9zcGxvbUdyaWREZmx0LnhzaWRlPSJi b3R0b20iLHIuX3NwbG9tR3JpZERmbHQueXNpZGU9ImxlZnQiKX0oMCxlLGYsaCksbi5jb2Vy Y2VTZWxlY3Rpb25NYXJrZXJPcGFjaXR5KGUsaCl9ZWxzZSBlLnZpc2libGU9ITF9fSx7Ii4u Ly4uL2xpYiI6NTAzLCIuLi8uLi9wbG90cy9hcnJheV9jb250YWluZXJfZGVmYXVsdHMiOjU0 OSwiLi4vcGFyY29vcmRzL21lcmdlX2xlbmd0aCI6ODk4LCIuLi9zY2F0dGVyL21hcmtlcl9k ZWZhdWx0cyI6OTQ2LCIuLi9zY2F0dGVyL3N1YnR5cGVzIjo5NTIsIi4uL3NjYXR0ZXJnbC9o ZWxwZXJzIjo5ODcsIi4vYXR0cmlidXRlcyI6MTAzMn1dLDEwMzc6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuLi9zY2F0dGVyL2Nv bG9yc2NhbGVfY2FsYyIpLGE9dCgiLi4vc2NhdHRlcmdsL2NvbnZlcnQiKS5tYXJrZXJTdHls ZTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1lLnRyYWNlLG89dC5fZnVsbExheW91 dC5fc3Bsb21TY2VuZXNbci51aWRdO2lmKG8pe2kodCxyKSxuLmV4dGVuZEZsYXQoby5tYXRy aXhPcHRpb25zLGEocikpO3ZhciBzPW4uZXh0ZW5kRmxhdCh7fSxvLm1hdHJpeE9wdGlvbnMs by52aWV3T3B0cyk7by5tYXRyaXgudXBkYXRlKHMsbnVsbCl9fX0seyIuLi8uLi9saWIiOjUw MywiLi4vc2NhdHRlci9jb2xvcnNjYWxlX2NhbGMiOjkzMCwiLi4vc2NhdHRlcmdsL2NvbnZl cnQiOjk4M31dLDEwMzg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ci5nZXREaW1J bmRleD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1lLl9pZCxuPXt4OjAseToxfVtyLmNoYXJB dCgwKV0saT10Ll92aXNpYmxlRGltcyxhPTA7YTxpLmxlbmd0aDthKyspe3ZhciBvPWlbYV07 aWYodC5fZGlhZ1tvXVtuXT09PXIpcmV0dXJuIGF9cmV0dXJuITF9fSx7fV0sMTAzOTpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2hlbHBlcnMiKSxpPXQoIi4u L3NjYXR0ZXJnbC9ob3ZlciIpLmNhbGNIb3ZlcjtlLmV4cG9ydHM9e2hvdmVyUG9pbnRzOmZ1 bmN0aW9uKHQsZSxyKXt2YXIgYT10LmNkWzBdLnRyYWNlLG89dC5zY2VuZS5tYXRyaXhPcHRp b25zLmNkYXRhLHM9dC54YSxsPXQueWEsYz1zLmMycChlKSx1PWwuYzJwKHIpLGY9dC5kaXN0 YW5jZSxoPW4uZ2V0RGltSW5kZXgoYSxzKSxwPW4uZ2V0RGltSW5kZXgoYSxsKTtpZighMT09 PWh8fCExPT09cClyZXR1cm5bdF07Zm9yKHZhciBkLG0sZz1vW2hdLHY9b1twXSx5PWYseD0w O3g8Zy5sZW5ndGg7eCsrKXt2YXIgYj1nW3hdLF89dlt4XSx3PXMuYzJwKGIpLWMsVD1sLmMy cChfKS11LGs9TWF0aC5zcXJ0KHcqdytUKlQpO2s8eSYmKHk9bT1rLGQ9eCl9cmV0dXJuIHQu aW5kZXg9ZCx0LmRpc3RhbmNlPXksdC5keHk9bSx2b2lkIDA9PT1kP1t0XTpbaSh0LGcsdixh KV19fX0seyIuLi9zY2F0dGVyZ2wvaG92ZXIiOjk4OCwiLi9oZWxwZXJzIjoxMDM4fV0sMTA0 MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2Jhc2VfaW5kZXgi KTtuLmJhc2VQbG90TW9kdWxlPXQoIi4vYmFzZV9wbG90IiksZS5leHBvcnRzPW59LHsiLi9i YXNlX2luZGV4IjoxMDMzLCIuL2Jhc2VfcGxvdCI6MTAzNH1dLDEwNDE6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgicmVnbC1zcGxvbSIpLGk9dCgiLi4vLi4vbGli IiksYT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19pZHMiKSxvPXQoIi4uLy4uL2Nv bXBvbmVudHMvZHJhZ2VsZW1lbnQvaGVscGVycyIpLnNlbGVjdE1vZGU7ZnVuY3Rpb24gcyh0 LGUpe3ZhciByLHMsbCxjLHUsZj10Ll9mdWxsTGF5b3V0LGg9Zi5fc2l6ZSxwPWUudHJhY2Us ZD1lLnQsbT1mLl9zcGxvbVNjZW5lc1twLnVpZF0sZz1tLm1hdHJpeE9wdGlvbnMsdj1nLmNk YXRhLHk9Zi5fZ2xjYW52YXMuZGF0YSgpWzBdLnJlZ2wseD1mLmRyYWdtb2RlO2lmKDAhPT12 Lmxlbmd0aCl7Zy5sb3dlcj1wLnNob3d1cHBlcmhhbGYsZy51cHBlcj1wLnNob3dsb3dlcmhh bGYsZy5kaWFnb25hbD1wLmRpYWdvbmFsLnZpc2libGU7dmFyIGI9cC5fdmlzaWJsZURpbXMs Xz12Lmxlbmd0aCx3PW0udmlld09wdHM9e307Zm9yKHcucmFuZ2VzPW5ldyBBcnJheShfKSx3 LmRvbWFpbnM9bmV3IEFycmF5KF8pLHU9MDt1PGIubGVuZ3RoO3UrKyl7bD1iW3VdO3ZhciBU PXcucmFuZ2VzW3VdPW5ldyBBcnJheSg0KSxrPXcuZG9tYWluc1t1XT1uZXcgQXJyYXkoNCk7 KHI9YS5nZXRGcm9tSWQodCxwLl9kaWFnW2xdWzBdKSkmJihUWzBdPXIuX3JsWzBdLFRbMl09 ci5fcmxbMV0sa1swXT1yLmRvbWFpblswXSxrWzJdPXIuZG9tYWluWzFdKSwocz1hLmdldEZy b21JZCh0LHAuX2RpYWdbbF1bMV0pKSYmKFRbMV09cy5fcmxbMF0sVFszXT1zLl9ybFsxXSxr WzFdPXMuZG9tYWluWzBdLGtbM109cy5kb21haW5bMV0pfXZhciBBPXQuX2NvbnRleHQucGxv dEdsUGl4ZWxSYXRpbyxNPWgubCpBLFM9aC5iKkEsRT1oLncqQSxMPWguaCpBO3cudmlld3Bv cnQ9W00sUyxFK00sTCtTXSwhMD09PW0ubWF0cml4JiYobS5tYXRyaXg9bih5KSk7dmFyIEM9 Zi5jbGlja21vZGUuaW5kZXhPZigic2VsZWN0Iik+LTEsUD0hMDtpZihvKHgpfHwhIXAuc2Vs ZWN0ZWRwb2ludHN8fEMpe3ZhciBJPXAuX2xlbmd0aDtpZihwLnNlbGVjdGVkcG9pbnRzKXtt LnNlbGVjdEJhdGNoPXAuc2VsZWN0ZWRwb2ludHM7dmFyIE89cC5zZWxlY3RlZHBvaW50cyx6 PXt9O2ZvcihsPTA7bDxPLmxlbmd0aDtsKyspeltPW2xdXT0hMDt2YXIgRD1bXTtmb3IobD0w O2w8STtsKyspeltsXXx8RC5wdXNoKGwpO20udW5zZWxlY3RCYXRjaD1EfXZhciBSPWQueHB4 PW5ldyBBcnJheShfKSxGPWQueXB4PW5ldyBBcnJheShfKTtmb3IodT0wO3U8Yi5sZW5ndGg7 dSsrKXtpZihsPWJbdV0scj1hLmdldEZyb21JZCh0LHAuX2RpYWdbbF1bMF0pKWZvcihSW3Vd PW5ldyBBcnJheShJKSxjPTA7YzxJO2MrKylSW3VdW2NdPXIuYzJwKHZbdV1bY10pO2lmKHM9 YS5nZXRGcm9tSWQodCxwLl9kaWFnW2xdWzFdKSlmb3IoRlt1XT1uZXcgQXJyYXkoSSksYz0w O2M8STtjKyspRlt1XVtjXT1zLmMycCh2W3VdW2NdKX1pZihtLnNlbGVjdEJhdGNoLmxlbmd0 aHx8bS51bnNlbGVjdEJhdGNoLmxlbmd0aCl7dmFyIEI9aS5leHRlbmRGbGF0KHt9LGcsbS51 bnNlbGVjdGVkT3B0aW9ucyx3KSxOPWkuZXh0ZW5kRmxhdCh7fSxnLG0uc2VsZWN0ZWRPcHRp b25zLHcpO20ubWF0cml4LnVwZGF0ZShCLE4pLFA9ITF9fWVsc2UgZC54cHg9ZC55cHg9bnVs bDtpZihQKXt2YXIgaj1pLmV4dGVuZEZsYXQoe30sZyx3KTttLm1hdHJpeC51cGRhdGUoaixu dWxsKX19fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7aWYoci5sZW5ndGgpZm9yKHZhciBu PTA7bjxyLmxlbmd0aDtuKyspcyh0LHJbbl1bMF0pfX0seyIuLi8uLi9jb21wb25lbnRzL2Ry YWdlbGVtZW50L2hlbHBlcnMiOjM4NCwiLi4vLi4vbGliIjo1MDMsIi4uLy4uL3Bsb3RzL2Nh cnRlc2lhbi9heGlzX2lkcyI6NTU4LCJyZWdsLXNwbG9tIjoyODJ9XSwxMDQyOltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpO2UuZXhwb3J0cz1m dW5jdGlvbih0LGUpe3ZhciByPXQuX2Z1bGxMYXlvdXQsaT1lLnVpZCxhPXIuX3NwbG9tU2Nl bmVzO2F8fChhPXIuX3NwbG9tU2NlbmVzPXt9KTt2YXIgbz17ZGlydHk6ITAsc2VsZWN0QmF0 Y2g6W10sdW5zZWxlY3RCYXRjaDpbXX0scz1hW2UudWlkXTtyZXR1cm4gc3x8KChzPWFbaV09 bi5leHRlbmRGbGF0KHt9LG8se21hdHJpeDohMSxzZWxlY3RCYXRjaDpbXSx1bnNlbGVjdEJh dGNoOltdfSkpLmRyYXc9ZnVuY3Rpb24oKXtzLm1hdHJpeCYmcy5tYXRyaXguZHJhdyYmKHMu c2VsZWN0QmF0Y2gubGVuZ3RofHxzLnVuc2VsZWN0QmF0Y2gubGVuZ3RoP3MubWF0cml4LmRy YXcocy51bnNlbGVjdEJhdGNoLHMuc2VsZWN0QmF0Y2gpOnMubWF0cml4LmRyYXcoKSkscy5k aXJ0eT0hMX0scy5kZXN0cm95PWZ1bmN0aW9uKCl7cy5tYXRyaXgmJnMubWF0cml4LmRlc3Ry b3kmJnMubWF0cml4LmRlc3Ryb3koKSxzLm1hdHJpeE9wdGlvbnM9bnVsbCxzLnNlbGVjdEJh dGNoPW51bGwscy51bnNlbGVjdEJhdGNoPW51bGwscz1udWxsfSkscy5kaXJ0eXx8bi5leHRl bmRGbGF0KHMsbyksc319LHsiLi4vLi4vbGliIjo1MDN9XSwxMDQzOltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi4vc2NhdHRlci9z dWJ0eXBlcyIpLGE9dCgiLi9oZWxwZXJzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFy IHI9dC5jZCxvPXJbMF0udHJhY2Uscz1yWzBdLnQsbD10LnNjZW5lLGM9bC5tYXRyaXhPcHRp b25zLmNkYXRhLHU9dC54YXhpcyxmPXQueWF4aXMsaD1bXTtpZighbClyZXR1cm4gaDt2YXIg cD0haS5oYXNNYXJrZXJzKG8pJiYhaS5oYXNUZXh0KG8pO2lmKCEwIT09by52aXNpYmxlfHxw KXJldHVybiBoO3ZhciBkPWEuZ2V0RGltSW5kZXgobyx1KSxtPWEuZ2V0RGltSW5kZXgobyxm KTtpZighMT09PWR8fCExPT09bSlyZXR1cm4gaDt2YXIgZz1zLnhweFtkXSx2PXMueXB4W21d LHk9Y1tkXSx4PWNbbV0sYj1bXSxfPVtdO2lmKCExIT09ZSYmIWUuZGVnZW5lcmF0ZSlmb3Io dmFyIHc9MDt3PHkubGVuZ3RoO3crKyllLmNvbnRhaW5zKFtnW3ddLHZbd11dLG51bGwsdyx0 KT8oYi5wdXNoKHcpLGgucHVzaCh7cG9pbnROdW1iZXI6dyx4Onlbd10seTp4W3ddfSkpOl8u cHVzaCh3KTt2YXIgVD1sLm1hdHJpeE9wdGlvbnM7cmV0dXJuIGIubGVuZ3RofHxfLmxlbmd0 aD9sLnNlbGVjdEJhdGNoLmxlbmd0aHx8bC51bnNlbGVjdEJhdGNoLmxlbmd0aHx8bC5tYXRy aXgudXBkYXRlKGwudW5zZWxlY3RlZE9wdGlvbnMsbi5leHRlbmRGbGF0KHt9LFQsbC5zZWxl Y3RlZE9wdGlvbnMsbC52aWV3T3B0cykpOmwubWF0cml4LnVwZGF0ZShULG51bGwpLGwuc2Vs ZWN0QmF0Y2g9YixsLnVuc2VsZWN0QmF0Y2g9XyxofX0seyIuLi8uLi9saWIiOjUwMywiLi4v c2NhdHRlci9zdWJ0eXBlcyI6OTUyLCIuL2hlbHBlcnMiOjEwMzh9XSwxMDQ0OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3Jz Y2FsZS9hdHRyaWJ1dGVzIiksaT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhpc19mb3Jt YXRfYXR0cmlidXRlcyIpLmF4aXNIb3ZlckZvcm1hdCxhPXQoIi4uLy4uL3Bsb3RzL3RlbXBs YXRlX2F0dHJpYnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsbz10KCIuLi9tZXNoM2QvYXR0 cmlidXRlcyIpLHM9dCgiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyIpLGw9dCgiLi4vLi4vbGli L2V4dGVuZCIpLmV4dGVuZEZsYXQsYz17eDp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRpdFR5 cGU6ImNhbGMrY2xlYXJBeGlzVHlwZXMifSx5Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0 VHlwZToiY2FsYytjbGVhckF4aXNUeXBlcyJ9LHo6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVk aXRUeXBlOiJjYWxjK2NsZWFyQXhpc1R5cGVzIn0sdTp7dmFsVHlwZToiZGF0YV9hcnJheSIs ZWRpdFR5cGU6ImNhbGMifSx2Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2Fs YyJ9LHc6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sc3RhcnRzOnt4 Ont2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LHk6e3ZhbFR5cGU6ImRh dGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0sejp7dmFsVHlwZToiZGF0YV9hcnJheSIsZWRp dFR5cGU6ImNhbGMifSxlZGl0VHlwZToiY2FsYyJ9LG1heGRpc3BsYXllZDp7dmFsVHlwZToi aW50ZWdlciIsbWluOjAsZGZsdDoxZTMsZWRpdFR5cGU6ImNhbGMifSxzaXplcmVmOnt2YWxU eXBlOiJudW1iZXIiLGVkaXRUeXBlOiJjYWxjIixtaW46MCxkZmx0OjF9LHRleHQ6e3ZhbFR5 cGU6InN0cmluZyIsZGZsdDoiIixlZGl0VHlwZToiY2FsYyJ9LGhvdmVydGV4dDp7dmFsVHlw ZToic3RyaW5nIixkZmx0OiIiLGVkaXRUeXBlOiJjYWxjIn0saG92ZXJ0ZW1wbGF0ZTphKHtl ZGl0VHlwZToiY2FsYyJ9LHtrZXlzOlsidHViZXgiLCJ0dWJleSIsInR1YmV6IiwidHViZXUi LCJ0dWJldiIsInR1YmV3Iiwibm9ybSIsImRpdmVyZ2VuY2UiXX0pLHVob3ZlcmZvcm1hdDpp KCJ1IiwxKSx2aG92ZXJmb3JtYXQ6aSgidiIsMSksd2hvdmVyZm9ybWF0OmkoInciLDEpLHho b3ZlcmZvcm1hdDppKCJ4IikseWhvdmVyZm9ybWF0OmkoInkiKSx6aG92ZXJmb3JtYXQ6aSgi eiIpLHNob3dsZWdlbmQ6bCh7fSxzLnNob3dsZWdlbmQse2RmbHQ6ITF9KX07bChjLG4oIiIs e2NvbG9yQXR0cjoidS92L3cgbm9ybSIsc2hvd1NjYWxlRGZsdDohMCxlZGl0VHlwZU92ZXJy aWRlOiJjYWxjIn0pKTtbIm9wYWNpdHkiLCJsaWdodHBvc2l0aW9uIiwibGlnaHRpbmciXS5m b3JFYWNoKChmdW5jdGlvbih0KXtjW3RdPW9bdF19KSksYy5ob3ZlcmluZm89bCh7fSxzLmhv dmVyaW5mbyx7ZWRpdFR5cGU6ImNhbGMiLGZsYWdzOlsieCIsInkiLCJ6IiwidSIsInYiLCJ3 Iiwibm9ybSIsImRpdmVyZ2VuY2UiLCJ0ZXh0IiwibmFtZSJdLGRmbHQ6IngreSt6K25vcm0r dGV4dCtuYW1lIn0pLGMudHJhbnNmb3Jtcz12b2lkIDAsZS5leHBvcnRzPWN9LHsiLi4vLi4v Y29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiOjM3MywiLi4vLi4vbGliL2V4dGVu ZCI6NDkzLCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIjo1NTAsIi4uLy4uL3Bsb3RzL2NhcnRl c2lhbi9heGlzX2Zvcm1hdF9hdHRyaWJ1dGVzIjo1NTcsIi4uLy4uL3Bsb3RzL3RlbXBsYXRl X2F0dHJpYnV0ZXMiOjYzMywiLi4vbWVzaDNkL2F0dHJpYnV0ZXMiOjg2N31dLDEwNDU6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIu Li8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyIpO2Z1bmN0aW9uIGEodCl7dmFyIGUs cixpLGEscyxsLGMsdSxmLGgscCxkLG09dC5feCxnPXQuX3ksdj10Ll96LHk9dC5fbGVuLHg9 LTEvMCxiPTEvMCxfPS0xLzAsdz0xLzAsVD0tMS8wLGs9MS8wLEE9IiI7Zm9yKHkmJihjPW1b MF0sZj1nWzBdLHA9dlswXSkseT4xJiYodT1tW3ktMV0saD1nW3ktMV0sZD12W3ktMV0pLGU9 MDtlPHk7ZSsrKXg9TWF0aC5tYXgoeCxtW2VdKSxiPU1hdGgubWluKGIsbVtlXSksXz1NYXRo Lm1heChfLGdbZV0pLHc9TWF0aC5taW4odyxnW2VdKSxUPU1hdGgubWF4KFQsdltlXSksaz1N YXRoLm1pbihrLHZbZV0pLGF8fG1bZV09PT1jfHwoYT0hMCxBKz0ieCIpLHN8fGdbZV09PT1m fHwocz0hMCxBKz0ieSIpLGx8fHZbZV09PT1wfHwobD0hMCxBKz0ieiIpO2F8fChBKz0ieCIp LHN8fChBKz0ieSIpLGx8fChBKz0ieiIpO3ZhciBNPW8odC5feCksUz1vKHQuX3kpLEU9byh0 Ll96KTtBPShBPShBPUEucmVwbGFjZSgieCIsKGM+dT8iLSI6IisiKSsieCIpKS5yZXBsYWNl KCJ5IiwoZj5oPyItIjoiKyIpKyJ5IikpLnJlcGxhY2UoInoiLChwPmQ/Ii0iOiIrIikrInoi KTt2YXIgTD1mdW5jdGlvbigpe3k9MCxNPVtdLFM9W10sRT1bXX07KCF5fHx5PE0ubGVuZ3Ro KlMubGVuZ3RoKkUubGVuZ3RoKSYmTCgpO3ZhciBDPWZ1bmN0aW9uKHQpe3JldHVybiJ4Ij09 PXQ/bToieSI9PT10P2c6dn0sUD1mdW5jdGlvbih0KXtyZXR1cm4ieCI9PT10P006InkiPT09 dD9TOkV9LEk9ZnVuY3Rpb24odCl7cmV0dXJuIHRbeS0xXTx0WzBdPy0xOjF9LE89QyhBWzFd KSx6PUMoQVszXSksRD1DKEFbNV0pLFI9UChBWzFdKS5sZW5ndGgsRj1QKEFbM10pLmxlbmd0 aCxCPVAoQVs1XSkubGVuZ3RoLE49ITEsaj1mdW5jdGlvbih0LGUscil7cmV0dXJuIFIqKEYq dCtlKStyfSxVPUkoQyhBWzFdKSksVj1JKEMoQVszXSkpLEg9SShDKEFbNV0pKTtmb3IoZT0w O2U8Qi0xO2UrKyl7Zm9yKHI9MDtyPEYtMTtyKyspe2ZvcihpPTA7aTxSLTE7aSsrKXt2YXIg cT1qKGUscixpKSxHPWooZSxyLGkrMSksWT1qKGUscisxLGkpLFc9aihlKzEscixpKTtpZihP W3FdKlU8T1tHXSpVJiZ6W3FdKlY8eltZXSpWJiZEW3FdKkg8RFtXXSpIfHwoTj0hMCksTili cmVha31pZihOKWJyZWFrfWlmKE4pYnJlYWt9cmV0dXJuIE4mJihuLndhcm4oIkVuY291bnRl cmVkIGFyYml0cmFyeSBjb29yZGluYXRlcyEgVW5hYmxlIHRvIGlucHV0IGRhdGEgZ3JpZC4i KSxMKCkpLHt4TWluOmIseU1pbjp3LHpNaW46ayx4TWF4OngseU1heDpfLHpNYXg6VCxYczpN LFlzOlMsWnM6RSxsZW46eSxmaWxsOkF9fWZ1bmN0aW9uIG8odCl7cmV0dXJuIG4uZGlzdGlu Y3RWYWxzKHQpLnZhbHN9ZnVuY3Rpb24gcyh0LGUpe2lmKHZvaWQgMD09PWUmJihlPXQubGVu Z3RoKSxuLmlzVHlwZWRBcnJheSh0KSlyZXR1cm4gdC5zdWJhcnJheSgwLGUpO2Zvcih2YXIg cj1bXSxpPTA7aTxlO2krKylyW2ldPSt0W2ldO3JldHVybiByfWUuZXhwb3J0cz17Y2FsYzpm dW5jdGlvbih0LGUpe2UuX2xlbj1NYXRoLm1pbihlLnUubGVuZ3RoLGUudi5sZW5ndGgsZS53 Lmxlbmd0aCxlLngubGVuZ3RoLGUueS5sZW5ndGgsZS56Lmxlbmd0aCksZS5fdT1zKGUudSxl Ll9sZW4pLGUuX3Y9cyhlLnYsZS5fbGVuKSxlLl93PXMoZS53LGUuX2xlbiksZS5feD1zKGUu eCxlLl9sZW4pLGUuX3k9cyhlLnksZS5fbGVuKSxlLl96PXMoZS56LGUuX2xlbik7dmFyIHI9 YShlKTtlLl9ncmlkRmlsbD1yLmZpbGwsZS5fWHM9ci5YcyxlLl9Zcz1yLllzLGUuX1pzPXIu WnMsZS5fbGVuPXIubGVuO3ZhciBuLG8sbCxjPTA7ZS5zdGFydHMmJihuPXMoZS5zdGFydHMu eHx8W10pLG89cyhlLnN0YXJ0cy55fHxbXSksbD1zKGUuc3RhcnRzLnp8fFtdKSxjPU1hdGgu bWluKG4ubGVuZ3RoLG8ubGVuZ3RoLGwubGVuZ3RoKSksZS5fc3RhcnRzWD1ufHxbXSxlLl9z dGFydHNZPW98fFtdLGUuX3N0YXJ0c1o9bHx8W107dmFyIHUsZj0wLGg9MS8wO2Zvcih1PTA7 dTxlLl9sZW47dSsrKXt2YXIgcD1lLl91W3VdLGQ9ZS5fdlt1XSxtPWUuX3dbdV0sZz1NYXRo LnNxcnQocCpwK2QqZCttKm0pO2Y9TWF0aC5tYXgoZixnKSxoPU1hdGgubWluKGgsZyl9Zm9y KGkodCxlLHt2YWxzOltoLGZdLGNvbnRhaW5lclN0cjoiIixjTGV0dGVyOiJjIn0pLHU9MDt1 PGM7dSsrKXt2YXIgdj1uW3VdO3IueE1heD1NYXRoLm1heChyLnhNYXgsdiksci54TWluPU1h dGgubWluKHIueE1pbix2KTt2YXIgeT1vW3VdO3IueU1heD1NYXRoLm1heChyLnlNYXgseSks ci55TWluPU1hdGgubWluKHIueU1pbix5KTt2YXIgeD1sW3VdO3Iuek1heD1NYXRoLm1heChy LnpNYXgseCksci56TWluPU1hdGgubWluKHIuek1pbix4KX1lLl9zbGVuPWMsZS5fbm9ybU1h eD1mLGUuX3hibmRzPVtyLnhNaW4sci54TWF4XSxlLl95Ym5kcz1bci55TWluLHIueU1heF0s ZS5femJuZHM9W3Iuek1pbixyLnpNYXhdfSxmaWx0ZXI6cyxwcm9jZXNzR3JpZDphfX0seyIu Li8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvY2FsYyI6Mzc0LCIuLi8uLi9saWIiOjUwM31d LDEwNDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vLi4v c3RhY2tnbF9tb2R1bGVzIikuZ2xfc3RyZWFtdHViZTNkLGk9bi5jcmVhdGVUdWJlTWVzaCxh PXQoIi4uLy4uL2xpYiIpLG89dCgiLi4vLi4vbGliL2dsX2Zvcm1hdF9jb2xvciIpLnBhcnNl Q29sb3JTY2FsZSxzPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSIpLmV4dHJhY3RP cHRzLGw9dCgiLi4vLi4vcGxvdHMvZ2wzZC96aXAzIiksYz17eGF4aXM6MCx5YXhpczoxLHph eGlzOjJ9O2Z1bmN0aW9uIHUodCxlKXt0aGlzLnNjZW5lPXQsdGhpcy51aWQ9ZSx0aGlzLm1l c2g9bnVsbCx0aGlzLmRhdGE9bnVsbH12YXIgZj11LnByb3RvdHlwZTtmdW5jdGlvbiBoKHQp e3ZhciBlPXQubGVuZ3RoO3JldHVybiBlPjI/dC5zbGljZSgxLGUtMSk6Mj09PWU/Wyh0WzBd K3RbMV0pLzJdOnR9ZnVuY3Rpb24gcCh0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm4gMT09PWU/ Wy41LC41XTpbdFsxXS10WzBdLHRbZS0xXS10W2UtMl1dfWZ1bmN0aW9uIGQodCxlKXt2YXIg cj10LmZ1bGxTY2VuZUxheW91dCxpPXQuZGF0YVNjYWxlLHU9ZS5fbGVuLGY9e307ZnVuY3Rp b24gZCh0LGUpe3ZhciBuPXJbZV0sbz1pW2NbZV1dO3JldHVybiBhLnNpbXBsZU1hcCh0LChm dW5jdGlvbih0KXtyZXR1cm4gbi5kMmwodCkqb30pKX1pZihmLnZlY3RvcnM9bChkKGUuX3Us InhheGlzIiksZChlLl92LCJ5YXhpcyIpLGQoZS5fdywiemF4aXMiKSx1KSwhdSlyZXR1cm57 cG9zaXRpb25zOltdLGNlbGxzOltdfTt2YXIgbT1kKGUuX1hzLCJ4YXhpcyIpLGc9ZChlLl9Z cywieWF4aXMiKSx2PWQoZS5fWnMsInpheGlzIik7aWYoZi5tZXNoZ3JpZD1bbSxnLHZdLGYu Z3JpZEZpbGw9ZS5fZ3JpZEZpbGwsZS5fc2xlbilmLnN0YXJ0aW5nUG9zaXRpb25zPWwoZChl Ll9zdGFydHNYLCJ4YXhpcyIpLGQoZS5fc3RhcnRzWSwieWF4aXMiKSxkKGUuX3N0YXJ0c1os InpheGlzIikpO2Vsc2V7Zm9yKHZhciB5PWdbMF0seD1oKG0pLGI9aCh2KSxfPW5ldyBBcnJh eSh4Lmxlbmd0aCpiLmxlbmd0aCksdz0wLFQ9MDtUPHgubGVuZ3RoO1QrKylmb3IodmFyIGs9 MDtrPGIubGVuZ3RoO2srKylfW3crK109W3hbVF0seSxiW2tdXTtmLnN0YXJ0aW5nUG9zaXRp b25zPV99Zi5jb2xvcm1hcD1vKGUpLGYudHViZVNpemU9ZS5zaXplcmVmLGYubWF4TGVuZ3Ro PWUubWF4ZGlzcGxheWVkO3ZhciBBPWQoZS5feGJuZHMsInhheGlzIiksTT1kKGUuX3libmRz LCJ5YXhpcyIpLFM9ZChlLl96Ym5kcywiemF4aXMiKSxFPXAobSksTD1wKGcpLEM9cCh2KSxQ PVtbQVswXS1FWzBdLE1bMF0tTFswXSxTWzBdLUNbMF1dLFtBWzFdK0VbMV0sTVsxXStMWzFd LFNbMV0rQ1sxXV1dLEk9bihmLFApLE89cyhlKTtJLnZlcnRleEludGVuc2l0eUJvdW5kcz1b Ty5taW4vZS5fbm9ybU1heCxPLm1heC9lLl9ub3JtTWF4XTt2YXIgej1lLmxpZ2h0cG9zaXRp b247cmV0dXJuIEkubGlnaHRQb3NpdGlvbj1bei54LHoueSx6LnpdLEkuYW1iaWVudD1lLmxp Z2h0aW5nLmFtYmllbnQsSS5kaWZmdXNlPWUubGlnaHRpbmcuZGlmZnVzZSxJLnNwZWN1bGFy PWUubGlnaHRpbmcuc3BlY3VsYXIsSS5yb3VnaG5lc3M9ZS5saWdodGluZy5yb3VnaG5lc3Ms SS5mcmVzbmVsPWUubGlnaHRpbmcuZnJlc25lbCxJLm9wYWNpdHk9ZS5vcGFjaXR5LGUuX3Bh ZD1JLnR1YmVTY2FsZSplLnNpemVyZWYqMixJfWYuaGFuZGxlUGljaz1mdW5jdGlvbih0KXt2 YXIgZT10aGlzLnNjZW5lLmZ1bGxTY2VuZUxheW91dCxyPXRoaXMuc2NlbmUuZGF0YVNjYWxl O2Z1bmN0aW9uIG4odCxuKXt2YXIgaT1lW25dLGE9cltjW25dXTtyZXR1cm4gaS5sMmModCkv YX1pZih0Lm9iamVjdD09PXRoaXMubWVzaCl7dmFyIGk9dC5kYXRhLnBvc2l0aW9uLGE9dC5k YXRhLnZlbG9jaXR5O3JldHVybiB0LnRyYWNlQ29vcmRpbmF0ZT1bbihpWzBdLCJ4YXhpcyIp LG4oaVsxXSwieWF4aXMiKSxuKGlbMl0sInpheGlzIiksbihhWzBdLCJ4YXhpcyIpLG4oYVsx XSwieWF4aXMiKSxuKGFbMl0sInpheGlzIiksdC5kYXRhLmludGVuc2l0eSp0aGlzLmRhdGEu X25vcm1NYXgsdC5kYXRhLmRpdmVyZ2VuY2VdLHQudGV4dExhYmVsPXRoaXMuZGF0YS5ob3Zl cnRleHR8fHRoaXMuZGF0YS50ZXh0LCEwfX0sZi51cGRhdGU9ZnVuY3Rpb24odCl7dGhpcy5k YXRhPXQ7dmFyIGU9ZCh0aGlzLnNjZW5lLHQpO3RoaXMubWVzaC51cGRhdGUoZSl9LGYuZGlz cG9zZT1mdW5jdGlvbigpe3RoaXMuc2NlbmUuZ2xwbG90LnJlbW92ZSh0aGlzLm1lc2gpLHRo aXMubWVzaC5kaXNwb3NlKCl9LGUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQuZ2xw bG90LmdsLG49ZCh0LGUpLGE9aShyLG4pLG89bmV3IHUodCxlLnVpZCk7cmV0dXJuIG8ubWVz aD1hLG8uZGF0YT1lLGEuX3RyYWNlPW8sdC5nbHBsb3QuYWRkKGEpLG99fSx7Ii4uLy4uLy4u L3N0YWNrZ2xfbW9kdWxlcyI6MTEyNCwiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjoz NzgsIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9saWIvZ2xfZm9ybWF0X2NvbG9yIjo0OTksIi4u Ly4uL3Bsb3RzL2dsM2QvemlwMyI6NjA5fV0sMTA0NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29s b3JzY2FsZS9kZWZhdWx0cyIpLGE9dCgiLi9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0 aW9uKHQsZSxyLG8pe2Z1bmN0aW9uIHMocixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLGEscixp KX12YXIgbD1zKCJ1IiksYz1zKCJ2IiksdT1zKCJ3IiksZj1zKCJ4IiksaD1zKCJ5IikscD1z KCJ6Iik7bCYmbC5sZW5ndGgmJmMmJmMubGVuZ3RoJiZ1JiZ1Lmxlbmd0aCYmZiYmZi5sZW5n dGgmJmgmJmgubGVuZ3RoJiZwJiZwLmxlbmd0aD8ocygic3RhcnRzLngiKSxzKCJzdGFydHMu eSIpLHMoInN0YXJ0cy56IikscygibWF4ZGlzcGxheWVkIikscygic2l6ZXJlZiIpLHMoImxp Z2h0aW5nLmFtYmllbnQiKSxzKCJsaWdodGluZy5kaWZmdXNlIikscygibGlnaHRpbmcuc3Bl Y3VsYXIiKSxzKCJsaWdodGluZy5yb3VnaG5lc3MiKSxzKCJsaWdodGluZy5mcmVzbmVsIiks cygibGlnaHRwb3NpdGlvbi54IikscygibGlnaHRwb3NpdGlvbi55IikscygibGlnaHRwb3Np dGlvbi56IiksaSh0LGUsbyxzLHtwcmVmaXg6IiIsY0xldHRlcjoiYyJ9KSxzKCJ0ZXh0Iiks cygiaG92ZXJ0ZXh0IikscygiaG92ZXJ0ZW1wbGF0ZSIpLHMoInVob3ZlcmZvcm1hdCIpLHMo InZob3ZlcmZvcm1hdCIpLHMoIndob3ZlcmZvcm1hdCIpLHMoInhob3ZlcmZvcm1hdCIpLHMo Inlob3ZlcmZvcm1hdCIpLHMoInpob3ZlcmZvcm1hdCIpLGUuX2xlbmd0aD1udWxsKTplLnZp c2libGU9ITF9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyI6Mzc2 LCIuLi8uLi9saWIiOjUwMywiLi9hdHRyaWJ1dGVzIjoxMDQ0fV0sMTA0ODpbZnVuY3Rpb24o dCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e21vZHVsZVR5cGU6InRyYWNlIixuYW1l OiJzdHJlYW10dWJlIixiYXNlUGxvdE1vZHVsZTp0KCIuLi8uLi9wbG90cy9nbDNkIiksY2F0 ZWdvcmllczpbImdsM2QiLCJzaG93TGVnZW5kIl0sYXR0cmlidXRlczp0KCIuL2F0dHJpYnV0 ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY29sb3JiYXI6e21pbjoiY21p biIsbWF4OiJjbWF4In0sY2FsYzp0KCIuL2NhbGMiKS5jYWxjLHBsb3Q6dCgiLi9jb252ZXJ0 IiksZXZlbnREYXRhOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudHViZXg9dC54LHQudHViZXk9 dC55LHQudHViZXo9dC56LHQudHViZXU9ZS50cmFjZUNvb3JkaW5hdGVbM10sdC50dWJldj1l LnRyYWNlQ29vcmRpbmF0ZVs0XSx0LnR1YmV3PWUudHJhY2VDb29yZGluYXRlWzVdLHQubm9y bT1lLnRyYWNlQ29vcmRpbmF0ZVs2XSx0LmRpdmVyZ2VuY2U9ZS50cmFjZUNvb3JkaW5hdGVb N10sZGVsZXRlIHQueCxkZWxldGUgdC55LGRlbGV0ZSB0LnosdH0sbWV0YTp7fX19LHsiLi4v Li4vcGxvdHMvZ2wzZCI6NTk4LCIuL2F0dHJpYnV0ZXMiOjEwNDQsIi4vY2FsYyI6MTA0NSwi Li9jb252ZXJ0IjoxMDQ2LCIuL2RlZmF1bHRzIjoxMDQ3fV0sMTA0OTpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIiksaT10 KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIikuaG92ZXJ0ZW1wbGF0ZUF0dHJz LGE9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLnRleHR0ZW1wbGF0ZUF0 dHJzLG89dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiKSxzPXQo Ii4uLy4uL3Bsb3RzL2RvbWFpbiIpLmF0dHJpYnV0ZXMsbD10KCIuLi9waWUvYXR0cmlidXRl cyIpLGM9dCgiLi9jb25zdGFudHMiKSx1PXQoIi4uLy4uL2xpYi9leHRlbmQiKS5leHRlbmRG bGF0O2UuZXhwb3J0cz17bGFiZWxzOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToi Y2FsYyJ9LHBhcmVudHM6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJjYWxjIn0s dmFsdWVzOnt2YWxUeXBlOiJkYXRhX2FycmF5IixlZGl0VHlwZToiY2FsYyJ9LGJyYW5jaHZh bHVlczp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFsdWVzOlsicmVtYWluZGVyIiwidG90YWwi XSxkZmx0OiJyZW1haW5kZXIiLGVkaXRUeXBlOiJjYWxjIn0sY291bnQ6e3ZhbFR5cGU6ImZs YWdsaXN0IixmbGFnczpbImJyYW5jaGVzIiwibGVhdmVzIl0sZGZsdDoibGVhdmVzIixlZGl0 VHlwZToiY2FsYyJ9LGxldmVsOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJwbG90Iixhbmlt OiEwfSxtYXhkZXB0aDp7dmFsVHlwZToiaW50ZWdlciIsZWRpdFR5cGU6InBsb3QiLGRmbHQ6 LTF9LG1hcmtlcjp1KHtjb2xvcnM6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGVkaXRUeXBlOiJj YWxjIn0sbGluZTp7Y29sb3I6dSh7fSxsLm1hcmtlci5saW5lLmNvbG9yLHtkZmx0Om51bGx9 KSx3aWR0aDp1KHt9LGwubWFya2VyLmxpbmUud2lkdGgse2RmbHQ6MX0pLGVkaXRUeXBlOiJj YWxjIn0sZWRpdFR5cGU6ImNhbGMifSxvKCJtYXJrZXIiLHtjb2xvckF0dHI6ImNvbG9ycyIs YW5pbTohMX0pKSxsZWFmOntvcGFjaXR5Ont2YWxUeXBlOiJudW1iZXIiLGVkaXRUeXBlOiJz dHlsZSIsbWluOjAsbWF4OjF9LGVkaXRUeXBlOiJwbG90In0sdGV4dDpsLnRleHQsdGV4dGlu Zm86e3ZhbFR5cGU6ImZsYWdsaXN0IixmbGFnczpbImxhYmVsIiwidGV4dCIsInZhbHVlIiwi Y3VycmVudCBwYXRoIiwicGVyY2VudCByb290IiwicGVyY2VudCBlbnRyeSIsInBlcmNlbnQg cGFyZW50Il0sZXh0cmFzOlsibm9uZSJdLGVkaXRUeXBlOiJwbG90In0sdGV4dHRlbXBsYXRl OmEoe2VkaXRUeXBlOiJwbG90In0se2tleXM6Yy5ldmVudERhdGFLZXlzLmNvbmNhdChbImxh YmVsIiwidmFsdWUiXSl9KSxob3ZlcnRleHQ6bC5ob3ZlcnRleHQsaG92ZXJpbmZvOnUoe30s bi5ob3ZlcmluZm8se2ZsYWdzOlsibGFiZWwiLCJ0ZXh0IiwidmFsdWUiLCJuYW1lIiwiY3Vy cmVudCBwYXRoIiwicGVyY2VudCByb290IiwicGVyY2VudCBlbnRyeSIsInBlcmNlbnQgcGFy ZW50Il0sZGZsdDoibGFiZWwrdGV4dCt2YWx1ZStuYW1lIn0pLGhvdmVydGVtcGxhdGU6aSh7 fSx7a2V5czpjLmV2ZW50RGF0YUtleXN9KSx0ZXh0Zm9udDpsLnRleHRmb250LGluc2lkZXRl eHRvcmllbnRhdGlvbjpsLmluc2lkZXRleHRvcmllbnRhdGlvbixpbnNpZGV0ZXh0Zm9udDps Lmluc2lkZXRleHRmb250LG91dHNpZGV0ZXh0Zm9udDp1KHt9LGwub3V0c2lkZXRleHRmb250 LHt9KSxyb3RhdGlvbjp7dmFsVHlwZToiYW5nbGUiLGRmbHQ6MCxlZGl0VHlwZToicGxvdCJ9 LHNvcnQ6bC5zb3J0LHJvb3Q6e2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRpdFR5cGU6ImNh bGMiLGRmbHQ6InJnYmEoMCwwLDAsMCkifSxlZGl0VHlwZToiY2FsYyJ9LGRvbWFpbjpzKHtu YW1lOiJzdW5idXJzdCIsdHJhY2U6ITAsZWRpdFR5cGU6ImNhbGMifSl9fSx7Ii4uLy4uL2Nv bXBvbmVudHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjozNzMsIi4uLy4uL2xpYi9leHRlbmQi OjQ5MywiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyI6NTUwLCIuLi8uLi9wbG90cy9kb21haW4i OjU4NCwiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6NjMzLCIuLi9waWUvYXR0 cmlidXRlcyI6OTAxLCIuL2NvbnN0YW50cyI6MTA1Mn1dLDEwNTA6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vcGxvdHMvcGxvdHMiKTtyLm5hbWU9InN1 bmJ1cnN0IixyLnBsb3Q9ZnVuY3Rpb24odCxlLGksYSl7bi5wbG90QmFzZVBsb3Qoci5uYW1l LHQsZSxpLGEpfSxyLmNsZWFuPWZ1bmN0aW9uKHQsZSxpLGEpe24uY2xlYW5CYXNlUGxvdChy Lm5hbWUsdCxlLGksYSl9fSx7Ii4uLy4uL3Bsb3RzL3Bsb3RzIjo2MTl9XSwxMDUxOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImQzLWhpZXJhcmNoeSIpLGk9dCgi ZmFzdC1pc251bWVyaWMiKSxhPXQoIi4uLy4uL2xpYiIpLG89dCgiLi4vLi4vY29tcG9uZW50 cy9jb2xvcnNjYWxlIikubWFrZUNvbG9yU2NhbGVGdW5jRnJvbVRyYWNlLHM9dCgiLi4vcGll L2NhbGMiKS5tYWtlUHVsbENvbG9yRm4sbD10KCIuLi9waWUvY2FsYyIpLmdlbmVyYXRlRXh0 ZW5kZWRDb2xvcnMsYz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiKS5jYWxjLHU9 dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkFMTU9TVF9FUVVBTCxmPXt9LGg9e30s cD17fTtyLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgcixsLGYsaCxwLGQsbT10Ll9mdWxsTGF5 b3V0LGc9ZS5pZHMsdj1hLmlzQXJyYXlPclR5cGVkQXJyYXkoZykseT1lLmxhYmVscyx4PWUu cGFyZW50cyxiPWUudmFsdWVzLF89YS5pc0FycmF5T3JUeXBlZEFycmF5KGIpLHc9W10sVD17 fSxrPXt9LEE9ZnVuY3Rpb24odCl7cmV0dXJuIHR8fCJudW1iZXIiPT10eXBlb2YgdH0sTT1m dW5jdGlvbih0KXtyZXR1cm4hX3x8aShiW3RdKSYmYlt0XT49MH07dj8ocj1NYXRoLm1pbihn Lmxlbmd0aCx4Lmxlbmd0aCksbD1mdW5jdGlvbih0KXtyZXR1cm4gQShnW3RdKSYmTSh0KX0s Zj1mdW5jdGlvbih0KXtyZXR1cm4gU3RyaW5nKGdbdF0pfSk6KHI9TWF0aC5taW4oeS5sZW5n dGgseC5sZW5ndGgpLGw9ZnVuY3Rpb24odCl7cmV0dXJuIEEoeVt0XSkmJk0odCl9LGY9ZnVu Y3Rpb24odCl7cmV0dXJuIFN0cmluZyh5W3RdKX0pLF8mJihyPU1hdGgubWluKHIsYi5sZW5n dGgpKTtmb3IodmFyIFM9MDtTPHI7UysrKWlmKGwoUykpe3ZhciBFPWYoUyksTD1BKHhbU10p P1N0cmluZyh4W1NdKToiIixDPXtpOlMsaWQ6RSxwaWQ6TCxsYWJlbDpBKHlbU10pP1N0cmlu Zyh5W1NdKToiIn07XyYmKEMudj0rYltTXSksdy5wdXNoKEMpLHA9RSxUW2g9TF0/VFtoXS5w dXNoKHApOlRbaF09W3BdLGtbcF09MX1pZihUWyIiXSl7aWYoVFsiIl0ubGVuZ3RoPjEpe2Zv cih2YXIgUD1hLnJhbmRzdHIoKSxJPTA7STx3Lmxlbmd0aDtJKyspIiI9PT13W0ldLnBpZCYm KHdbSV0ucGlkPVApO3cudW5zaGlmdCh7aGFzTXVsdGlwbGVSb290czohMCxpZDpQLHBpZDoi IixsYWJlbDoiIn0pfX1lbHNle3ZhciBPLHo9W107Zm9yKE8gaW4gVClrW09dfHx6LnB1c2go Tyk7aWYoMSE9PXoubGVuZ3RoKXJldHVybiBhLndhcm4oWyJNdWx0aXBsZSBpbXBsaWVkIHJv b3RzLCBjYW5ub3QgYnVpbGQiLGUudHlwZSwiaGllcmFyY2h5IG9mIixlLm5hbWUrIi4iLCJU aGVzZSByb290cyBpbmNsdWRlOiIsei5qb2luKCIsICIpXS5qb2luKCIgIikpO089elswXSx3 LnVuc2hpZnQoe2hhc0ltcGxpZWRSb290OiEwLGlkOk8scGlkOiIiLGxhYmVsOk99KX10cnl7 ZD1uLnN0cmF0aWZ5KCkuaWQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkfSkpLnBhcmVudElk KChmdW5jdGlvbih0KXtyZXR1cm4gdC5waWR9KSkodyl9Y2F0Y2godCl7cmV0dXJuIGEud2Fy bihbIkZhaWxlZCB0byBidWlsZCIsZS50eXBlLCJoaWVyYXJjaHkgb2YiLGUubmFtZSsiLiIs IkVycm9yOiIsdC5tZXNzYWdlXS5qb2luKCIgIikpfXZhciBEPW4uaGllcmFyY2h5KGQpLFI9 ITE7aWYoXylzd2l0Y2goZS5icmFuY2h2YWx1ZXMpe2Nhc2UicmVtYWluZGVyIjpELnN1bSgo ZnVuY3Rpb24odCl7cmV0dXJuIHQuZGF0YS52fSkpO2JyZWFrO2Nhc2UidG90YWwiOkQuZWFj aCgoZnVuY3Rpb24odCl7dmFyIHI9dC5kYXRhLmRhdGEsbj1yLnY7aWYodC5jaGlsZHJlbil7 dmFyIGk9dC5jaGlsZHJlbi5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS5kYXRh LmRhdGEudn0pLDApO2lmKChyLmhhc0ltcGxpZWRSb290fHxyLmhhc011bHRpcGxlUm9vdHMp JiYobj1pKSxuPGkqdSlyZXR1cm4gUj0hMCxhLndhcm4oWyJUb3RhbCB2YWx1ZSBmb3Igbm9k ZSIsdC5kYXRhLmRhdGEuaWQsIm9mIixlLm5hbWUsImlzIHNtYWxsZXIgdGhhbiB0aGUgc3Vt IG9mIGl0cyBjaGlsZHJlbi4iLCJcbnBhcmVudCB2YWx1ZSA9IixuLCJcbmNoaWxkcmVuIHN1 bSA9IixpXS5qb2luKCIgIikpfXQudmFsdWU9bn0pKX1lbHNlIWZ1bmN0aW9uIHQoZSxyLG4p e3ZhciBpPTAsYT1lLmNoaWxkcmVuO2lmKGEpe2Zvcih2YXIgbz1hLmxlbmd0aCxzPTA7czxv O3MrKylpKz10KGFbc10scixuKTtuLmJyYW5jaGVzJiZpKyt9ZWxzZSBuLmxlYXZlcyYmaSsr O2UudmFsdWU9ZS5kYXRhLmRhdGEudmFsdWU9aSxyLl92YWx1ZXN8fChyLl92YWx1ZXM9W10p O3JldHVybiByLl92YWx1ZXNbZS5kYXRhLmRhdGEuaV09aSxpfShELGUse2JyYW5jaGVzOi0x IT09ZS5jb3VudC5pbmRleE9mKCJicmFuY2hlcyIpLGxlYXZlczotMSE9PWUuY291bnQuaW5k ZXhPZigibGVhdmVzIil9KTtpZighUil7dmFyIEYsQjtlLnNvcnQmJkQuc29ydCgoZnVuY3Rp b24odCxlKXtyZXR1cm4gZS52YWx1ZS10LnZhbHVlfSkpO3ZhciBOPWUubWFya2VyLmNvbG9y c3x8W10saj0hIU4ubGVuZ3RoO3JldHVybiBlLl9oYXNDb2xvcnNjYWxlPyhqfHwoTj1fP2Uu dmFsdWVzOmUuX3ZhbHVlcyksYyh0LGUse3ZhbHM6Tixjb250YWluZXJTdHI6Im1hcmtlciIs Y0xldHRlcjoiYyJ9KSxCPW8oZS5tYXJrZXIpKTpGPXMobVsiXyIrZS50eXBlKyJjb2xvcm1h cCJdKSxELmVhY2goKGZ1bmN0aW9uKHQpe3ZhciByPXQuZGF0YS5kYXRhO3IuY29sb3I9ZS5f aGFzQ29sb3JzY2FsZT9CKE5bci5pXSk6RihOW3IuaV0sci5pZCl9KSksd1swXS5oaWVyYXJj aHk9RCx3fX0sci5fcnVuQ3Jvc3NUcmFjZUNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgcj1lLl9m dWxsTGF5b3V0LG49ZS5jYWxjZGF0YSxpPXJbdCsiY29sb3J3YXkiXSxhPXJbIl8iK3QrImNv bG9ybWFwIl07clsiZXh0ZW5kIit0KyJjb2xvcnMiXSYmKGk9bChpLCJpY2ljbGUiPT09dD9w OiJ0cmVlbWFwIj09PXQ/aDpmKSk7dmFyIG8scz0wO2Z1bmN0aW9uIGModCl7dmFyIGU9dC5k YXRhLmRhdGEscj1lLmlkOyExPT09ZS5jb2xvciYmKGFbcl0/ZS5jb2xvcj1hW3JdOnQucGFy ZW50P3QucGFyZW50LnBhcmVudD9lLmNvbG9yPXQucGFyZW50LmRhdGEuZGF0YS5jb2xvcjoo YVtyXT1lLmNvbG9yPWlbcyVpLmxlbmd0aF0scysrKTplLmNvbG9yPW8pfWZvcih2YXIgdT0w O3U8bi5sZW5ndGg7dSsrKXt2YXIgZD1uW3VdWzBdO2QudHJhY2UudHlwZT09PXQmJmQuaGll cmFyY2h5JiYobz1kLnRyYWNlLnJvb3QuY29sb3IsZC5oaWVyYXJjaHkuZWFjaChjKSl9fSxy LmNyb3NzVHJhY2VDYWxjPWZ1bmN0aW9uKHQpe3JldHVybiByLl9ydW5Dcm9zc1RyYWNlQ2Fs Yygic3VuYnVyc3QiLHQpfX0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiOjM3OCwi Li4vLi4vY29uc3RhbnRzL251bWVyaWNhbCI6NDc5LCIuLi8uLi9saWIiOjUwMywiLi4vcGll L2NhbGMiOjkwMywiZDMtaGllcmFyY2h5IjoxMTUsImZhc3QtaXNudW1lcmljIjoxOTB9XSwx MDUyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17Q0xJQ0tfVFJB TlNJVElPTl9USU1FOjc1MCxDTElDS19UUkFOU0lUSU9OX0VBU0lORzoibGluZWFyIixldmVu dERhdGFLZXlzOlsiY3VycmVudFBhdGgiLCJyb290IiwiZW50cnkiLCJwZXJjZW50Um9vdCIs InBlcmNlbnRFbnRyeSIsInBlcmNlbnRQYXJlbnQiXX19LHt9XSwxMDUzOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi9hdHRyaWJ1 dGVzIiksYT10KCIuLi8uLi9wbG90cy9kb21haW4iKS5kZWZhdWx0cyxvPXQoIi4uL2Jhci9k ZWZhdWx0cyIpLmhhbmRsZVRleHQscz10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUi KSxsPXMuaGFzQ29sb3JzY2FsZSxjPXMuaGFuZGxlRGVmYXVsdHM7ZS5leHBvcnRzPWZ1bmN0 aW9uKHQsZSxyLHMpe2Z1bmN0aW9uIHUocixhKXtyZXR1cm4gbi5jb2VyY2UodCxlLGkscixh KX12YXIgZj11KCJsYWJlbHMiKSxoPXUoInBhcmVudHMiKTtpZihmJiZmLmxlbmd0aCYmaCYm aC5sZW5ndGgpe3ZhciBwPXUoInZhbHVlcyIpO3AmJnAubGVuZ3RoP3UoImJyYW5jaHZhbHVl cyIpOnUoImNvdW50IiksdSgibGV2ZWwiKSx1KCJtYXhkZXB0aCIpLHUoIm1hcmtlci5saW5l LndpZHRoIikmJnUoIm1hcmtlci5saW5lLmNvbG9yIixzLnBhcGVyX2JnY29sb3IpLHUoIm1h cmtlci5jb2xvcnMiKTt2YXIgZD1lLl9oYXNDb2xvcnNjYWxlPWwodCwibWFya2VyIiwiY29s b3JzIil8fCh0Lm1hcmtlcnx8e30pLmNvbG9yYXhpcztkJiZjKHQsZSxzLHUse3ByZWZpeDoi bWFya2VyLiIsY0xldHRlcjoiYyJ9KSx1KCJsZWFmLm9wYWNpdHkiLGQ/MTouNyk7dmFyIG09 dSgidGV4dCIpO3UoInRleHR0ZW1wbGF0ZSIpLGUudGV4dHRlbXBsYXRlfHx1KCJ0ZXh0aW5m byIsQXJyYXkuaXNBcnJheShtKT8idGV4dCtsYWJlbCI6ImxhYmVsIiksdSgiaG92ZXJ0ZXh0 IiksdSgiaG92ZXJ0ZW1wbGF0ZSIpO28odCxlLHMsdSwiYXV0byIse21vZHVsZUhhc1NlbGVj dGVkOiExLG1vZHVsZUhhc1Vuc2VsZWN0ZWQ6ITEsbW9kdWxlSGFzQ29uc3RyYWluOiExLG1v ZHVsZUhhc0NsaXBvbmF4aXM6ITEsbW9kdWxlSGFzVGV4dGFuZ2xlOiExLG1vZHVsZUhhc0lu c2lkZWFuY2hvcjohMX0pLHUoImluc2lkZXRleHRvcmllbnRhdGlvbiIpLHUoInNvcnQiKSx1 KCJyb3RhdGlvbiIpLHUoInJvb3QuY29sb3IiKSxhKGUscyx1KSxlLl9sZW5ndGg9bnVsbH1l bHNlIGUudmlzaWJsZT0hMX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIjozNzgs Ii4uLy4uL2xpYiI6NTAzLCIuLi8uLi9wbG90cy9kb21haW4iOjU4NCwiLi4vYmFyL2RlZmF1 bHRzIjo2NTIsIi4vYXR0cmlidXRlcyI6MTA0OX1dLDEwNTQ6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiQHBsb3RseS9kMyIpLGk9dCgiLi4vLi4vcmVnaXN0cnki KSxhPXQoIi4uLy4uL2NvbXBvbmVudHMvZngvaGVscGVycyIpLmFwcGVuZEFycmF5UG9pbnRW YWx1ZSxvPXQoIi4uLy4uL2NvbXBvbmVudHMvZngiKSxzPXQoIi4uLy4uL2xpYiIpLGw9dCgi Li4vLi4vbGliL2V2ZW50cyIpLGM9dCgiLi9oZWxwZXJzIiksdT10KCIuLi9waWUvaGVscGVy cyIpLmZvcm1hdFBpZVZhbHVlO2Z1bmN0aW9uIGYodCxlLHIpe2Zvcih2YXIgbj10LmRhdGEu ZGF0YSxpPXtjdXJ2ZU51bWJlcjplLmluZGV4LHBvaW50TnVtYmVyOm4uaSxkYXRhOmUuX2lu cHV0LGZ1bGxEYXRhOmV9LG89MDtvPHIubGVuZ3RoO28rKyl7dmFyIHM9cltvXTtzIGluIHQm JihpW3NdPXRbc10pfXJldHVybiJwYXJlbnRTdHJpbmciaW4gdCYmIWMuaXNIaWVyYXJjaHlS b290KHQpJiYoaS5wYXJlbnQ9dC5wYXJlbnRTdHJpbmcpLGEoaSxlLG4uaSksaX1lLmV4cG9y dHM9ZnVuY3Rpb24odCxlLHIsYSxoKXt2YXIgcD1hWzBdLGQ9cC50cmFjZSxtPXAuaGllcmFy Y2h5LGc9InN1bmJ1cnN0Ij09PWQudHlwZSx2PSJ0cmVlbWFwIj09PWQudHlwZXx8ImljaWNs ZSI9PT1kLnR5cGU7Il9oYXNIb3ZlckxhYmVsImluIGR8fChkLl9oYXNIb3ZlckxhYmVsPSEx KSwiX2hhc0hvdmVyRXZlbnQiaW4gZHx8KGQuX2hhc0hvdmVyRXZlbnQ9ITEpO3Qub24oIm1v dXNlb3ZlciIsKGZ1bmN0aW9uKGkpe3ZhciBhPXIuX2Z1bGxMYXlvdXQ7aWYoIXIuX2RyYWdn aW5nJiYhMSE9PWEuaG92ZXJtb2RlKXt2YXIgbCx5PXIuX2Z1bGxEYXRhW2QuaW5kZXhdLHg9 aS5kYXRhLmRhdGEsYj14LmksXz1jLmlzSGllcmFyY2h5Um9vdChpKSx3PWMuZ2V0UGFyZW50 KG0saSksVD1jLmdldFZhbHVlKGkpLGs9ZnVuY3Rpb24odCl7cmV0dXJuIHMuY2FzdE9wdGlv bih5LGIsdCl9LEE9aygiaG92ZXJ0ZW1wbGF0ZSIpLE09by5jYXN0SG92ZXJpbmZvKHksYSxi KSxTPWEuc2VwYXJhdG9ycztpZihBfHxNJiYibm9uZSIhPT1NJiYic2tpcCIhPT1NKXt2YXIg RSxMO2cmJihFPXAuY3graS5weG1pZFswXSooMS1pLnJJbnNjcmliZWQpLEw9cC5jeStpLnB4 bWlkWzFdKigxLWkuckluc2NyaWJlZCkpLHYmJihFPWkuX2hvdmVyWCxMPWkuX2hvdmVyWSk7 dmFyIEMsUD17fSxJPVtdLE89W10sej1mdW5jdGlvbih0KXtyZXR1cm4tMSE9PUkuaW5kZXhP Zih0KX07TSYmKEk9ImFsbCI9PT1NP3kuX21vZHVsZS5hdHRyaWJ1dGVzLmhvdmVyaW5mby5m bGFnczpNLnNwbGl0KCIrIikpLFAubGFiZWw9eC5sYWJlbCx6KCJsYWJlbCIpJiZQLmxhYmVs JiZPLnB1c2goUC5sYWJlbCkseC5oYXNPd25Qcm9wZXJ0eSgidiIpJiYoUC52YWx1ZT14LnYs UC52YWx1ZUxhYmVsPXUoUC52YWx1ZSxTKSx6KCJ2YWx1ZSIpJiZPLnB1c2goUC52YWx1ZUxh YmVsKSksUC5jdXJyZW50UGF0aD1pLmN1cnJlbnRQYXRoPWMuZ2V0UGF0aChpLmRhdGEpLHoo ImN1cnJlbnQgcGF0aCIpJiYhXyYmTy5wdXNoKFAuY3VycmVudFBhdGgpO3ZhciBEPVtdLFI9 ZnVuY3Rpb24oKXstMT09PUQuaW5kZXhPZihDKSYmKE8ucHVzaChDKSxELnB1c2goQykpfTtQ LnBlcmNlbnRQYXJlbnQ9aS5wZXJjZW50UGFyZW50PVQvYy5nZXRWYWx1ZSh3KSxQLnBhcmVu dD1pLnBhcmVudFN0cmluZz1jLmdldFB0TGFiZWwodykseigicGVyY2VudCBwYXJlbnQiKSYm KEM9Yy5mb3JtYXRQZXJjZW50KFAucGVyY2VudFBhcmVudCxTKSsiIG9mICIrUC5wYXJlbnQs UigpKSxQLnBlcmNlbnRFbnRyeT1pLnBlcmNlbnRFbnRyeT1UL2MuZ2V0VmFsdWUoZSksUC5l bnRyeT1pLmVudHJ5PWMuZ2V0UHRMYWJlbChlKSwheigicGVyY2VudCBlbnRyeSIpfHxffHxp Lm9uUGF0aGJhcnx8KEM9Yy5mb3JtYXRQZXJjZW50KFAucGVyY2VudEVudHJ5LFMpKyIgb2Yg IitQLmVudHJ5LFIoKSksUC5wZXJjZW50Um9vdD1pLnBlcmNlbnRSb290PVQvYy5nZXRWYWx1 ZShtKSxQLnJvb3Q9aS5yb290PWMuZ2V0UHRMYWJlbChtKSx6KCJwZXJjZW50IHJvb3QiKSYm IV8mJihDPWMuZm9ybWF0UGVyY2VudChQLnBlcmNlbnRSb290LFMpKyIgb2YgIitQLnJvb3Qs UigpKSxQLnRleHQ9aygiaG92ZXJ0ZXh0Iil8fGsoInRleHQiKSx6KCJ0ZXh0IikmJihDPVAu dGV4dCxzLmlzVmFsaWRUZXh0VmFsdWUoQykmJk8ucHVzaChDKSksbD1bZihpLHksaC5ldmVu dERhdGFLZXlzKV07dmFyIEY9e3RyYWNlOnkseTpMLF94MDppLl94MCxfeDE6aS5feDEsX3kw OmkuX3kwLF95MTppLl95MSx0ZXh0Ok8uam9pbigiPGJyPiIpLG5hbWU6QXx8eigibmFtZSIp P3kubmFtZTp2b2lkIDAsY29sb3I6aygiaG92ZXJsYWJlbC5iZ2NvbG9yIil8fHguY29sb3Is Ym9yZGVyQ29sb3I6aygiaG92ZXJsYWJlbC5ib3JkZXJjb2xvciIpLGZvbnRGYW1pbHk6aygi aG92ZXJsYWJlbC5mb250LmZhbWlseSIpLGZvbnRTaXplOmsoImhvdmVybGFiZWwuZm9udC5z aXplIiksZm9udENvbG9yOmsoImhvdmVybGFiZWwuZm9udC5jb2xvciIpLG5hbWVMZW5ndGg6 aygiaG92ZXJsYWJlbC5uYW1lbGVuZ3RoIiksdGV4dEFsaWduOmsoImhvdmVybGFiZWwuYWxp Z24iKSxob3ZlcnRlbXBsYXRlOkEsaG92ZXJ0ZW1wbGF0ZUxhYmVsczpQLGV2ZW50RGF0YTps fTtnJiYoRi54MD1FLWkuckluc2NyaWJlZCppLnJweDEsRi54MT1FK2kuckluc2NyaWJlZCpp LnJweDEsRi5pZGVhbEFsaWduPWkucHhtaWRbMF08MD8ibGVmdCI6InJpZ2h0IiksdiYmKEYu eD1FLEYuaWRlYWxBbGlnbj1FPDA/ImxlZnQiOiJyaWdodCIpO3ZhciBCPVtdO28ubG9uZUhv dmVyKEYse2NvbnRhaW5lcjphLl9ob3ZlcmxheWVyLm5vZGUoKSxvdXRlckNvbnRhaW5lcjph Ll9wYXBlci5ub2RlKCksZ2Q6cixpbk91dF9iYm94OkJ9KSxsWzBdLmJib3g9QlswXSxkLl9o YXNIb3ZlckxhYmVsPSEwfWlmKHYpe3ZhciBOPXQuc2VsZWN0KCJwYXRoLnN1cmZhY2UiKTto LnN0eWxlT25lKE4saSx5LHtob3ZlcmVkOiEwfSl9ZC5faGFzSG92ZXJFdmVudD0hMCxyLmVt aXQoInBsb3RseV9ob3ZlciIse3BvaW50czpsfHxbZihpLHksaC5ldmVudERhdGFLZXlzKV0s ZXZlbnQ6bi5ldmVudH0pfX0pKSx0Lm9uKCJtb3VzZW91dCIsKGZ1bmN0aW9uKGUpe3ZhciBp PXIuX2Z1bGxMYXlvdXQsYT1yLl9mdWxsRGF0YVtkLmluZGV4XSxzPW4uc2VsZWN0KHRoaXMp LmRhdHVtKCk7aWYoZC5faGFzSG92ZXJFdmVudCYmKGUub3JpZ2luYWxFdmVudD1uLmV2ZW50 LHIuZW1pdCgicGxvdGx5X3VuaG92ZXIiLHtwb2ludHM6W2YocyxhLGguZXZlbnREYXRhS2V5 cyldLGV2ZW50Om4uZXZlbnR9KSxkLl9oYXNIb3ZlckV2ZW50PSExKSxkLl9oYXNIb3Zlckxh YmVsJiYoby5sb25lVW5ob3ZlcihpLl9ob3ZlcmxheWVyLm5vZGUoKSksZC5faGFzSG92ZXJM YWJlbD0hMSksdil7dmFyIGw9dC5zZWxlY3QoInBhdGguc3VyZmFjZSIpO2guc3R5bGVPbmUo bCxzLGEse2hvdmVyZWQ6ITF9KX19KSksdC5vbigiY2xpY2siLChmdW5jdGlvbih0KXt2YXIg ZT1yLl9mdWxsTGF5b3V0LGE9ci5fZnVsbERhdGFbZC5pbmRleF0scz1nJiYoYy5pc0hpZXJh cmNoeVJvb3QodCl8fGMuaXNMZWFmKHQpKSx1PWMuZ2V0UHRJZCh0KSxwPWMuaXNFbnRyeSh0 KT9jLmZpbmRFbnRyeVdpdGhDaGlsZChtLHUpOmMuZmluZEVudHJ5V2l0aExldmVsKG0sdSks dj1jLmdldFB0SWQocCkseT17cG9pbnRzOltmKHQsYSxoLmV2ZW50RGF0YUtleXMpXSxldmVu dDpuLmV2ZW50fTtzfHwoeS5uZXh0TGV2ZWw9dik7dmFyIHg9bC50cmlnZ2VySGFuZGxlcihy LCJwbG90bHlfIitkLnR5cGUrImNsaWNrIix5KTtpZighMSE9PXgmJmUuaG92ZXJtb2RlJiYo ci5faG92ZXJkYXRhPVtmKHQsYSxoLmV2ZW50RGF0YUtleXMpXSxvLmNsaWNrKHIsbi5ldmVu dCkpLCFzJiYhMSE9PXgmJiFyLl9kcmFnZ2luZyYmIXIuX3RyYW5zaXRpb25pbmcpe2kuY2Fs bCgiX3N0b3JlRGlyZWN0R1VJRWRpdCIsYSxlLl90cmFjZVByZUdVSVthLnVpZF0se2xldmVs OmEubGV2ZWx9KTt2YXIgYj17ZGF0YTpbe2xldmVsOnZ9XSx0cmFjZXM6W2QuaW5kZXhdfSxf PXtmcmFtZTp7cmVkcmF3OiExLGR1cmF0aW9uOmgudHJhbnNpdGlvblRpbWV9LHRyYW5zaXRp b246e2R1cmF0aW9uOmgudHJhbnNpdGlvblRpbWUsZWFzaW5nOmgudHJhbnNpdGlvbkVhc2lu Z30sbW9kZToiaW1tZWRpYXRlIixmcm9tY3VycmVudDohMH07by5sb25lVW5ob3ZlcihlLl9o b3ZlcmxheWVyLm5vZGUoKSksaS5jYWxsKCJhbmltYXRlIixyLGIsXyl9fSkpfX0seyIuLi8u Li9jb21wb25lbnRzL2Z4Ijo0MDYsIi4uLy4uL2NvbXBvbmVudHMvZngvaGVscGVycyI6NDAy LCIuLi8uLi9saWIiOjUwMywiLi4vLi4vbGliL2V2ZW50cyI6NDkyLCIuLi8uLi9yZWdpc3Ry eSI6NjM4LCIuLi9waWUvaGVscGVycyI6OTA2LCIuL2hlbHBlcnMiOjEwNTUsIkBwbG90bHkv ZDMiOjU4fV0sMTA1NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIu Li8uLi9saWIiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxhPXQoIi4uLy4uL2xp Yi9zZXRjdXJzb3IiKSxvPXQoIi4uL3BpZS9oZWxwZXJzIik7ZnVuY3Rpb24gcyh0KXtyZXR1 cm4gdC5kYXRhLmRhdGEucGlkfXIuZmluZEVudHJ5V2l0aExldmVsPWZ1bmN0aW9uKHQsZSl7 dmFyIG47cmV0dXJuIGUmJnQuZWFjaEFmdGVyKChmdW5jdGlvbih0KXtpZihyLmdldFB0SWQo dCk9PT1lKXJldHVybiBuPXQuY29weSgpfSkpLG58fHR9LHIuZmluZEVudHJ5V2l0aENoaWxk PWZ1bmN0aW9uKHQsZSl7dmFyIG47cmV0dXJuIHQuZWFjaEFmdGVyKChmdW5jdGlvbih0KXtm b3IodmFyIGk9dC5jaGlsZHJlbnx8W10sYT0wO2E8aS5sZW5ndGg7YSsrKXt2YXIgbz1pW2Fd O2lmKHIuZ2V0UHRJZChvKT09PWUpcmV0dXJuIG49dC5jb3B5KCl9fSkpLG58fHR9LHIuaXNF bnRyeT1mdW5jdGlvbih0KXtyZXR1cm4hdC5wYXJlbnR9LHIuaXNMZWFmPWZ1bmN0aW9uKHQp e3JldHVybiF0LmNoaWxkcmVufSxyLmdldFB0SWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZGF0 YS5kYXRhLmlkfSxyLmdldFB0TGFiZWw9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZGF0YS5kYXRh LmxhYmVsfSxyLmdldFZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlfSxyLmlzSGll cmFyY2h5Um9vdD1mdW5jdGlvbih0KXtyZXR1cm4iIj09PXModCl9LHIuc2V0U2xpY2VDdXJz b3I9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4uaXNUcmFuc2l0aW9uaW5nO2lmKCFpKXt2YXIg bz10LmRhdHVtKCk7aT1uLmhpZGVPblJvb3QmJnIuaXNIaWVyYXJjaHlSb290KG8pfHxuLmhp ZGVPbkxlYXZlcyYmci5pc0xlYWYobyl9YSh0LGk/bnVsbDoicG9pbnRlciIpfSxyLmdldElu c2lkZVRleHRGb250S2V5PWZ1bmN0aW9uKHQsZSxyLGksYSl7dmFyIG89KGF8fHt9KS5vblBh dGhiYXI/InBhdGhiYXIudGV4dGZvbnQiOiJpbnNpZGV0ZXh0Zm9udCIscz1yLmRhdGEuZGF0 YS5pO3JldHVybiBuLmNhc3RPcHRpb24oZSxzLG8rIi4iK3QpfHxuLmNhc3RPcHRpb24oZSxz LCJ0ZXh0Zm9udC4iK3QpfHxpLnNpemV9LHIuZ2V0T3V0c2lkZVRleHRGb250S2V5PWZ1bmN0 aW9uKHQsZSxyLGkpe3ZhciBhPXIuZGF0YS5kYXRhLmk7cmV0dXJuIG4uY2FzdE9wdGlvbihl LGEsIm91dHNpZGV0ZXh0Zm9udC4iK3QpfHxuLmNhc3RPcHRpb24oZSxhLCJ0ZXh0Zm9udC4i K3QpfHxpLnNpemV9LHIuaXNPdXRzaWRlVGV4dD1mdW5jdGlvbih0LGUpe3JldHVybiF0Ll9o YXNDb2xvcnNjYWxlJiZyLmlzSGllcmFyY2h5Um9vdChlKX0sci5kZXRlcm1pbmVUZXh0Rm9u dD1mdW5jdGlvbih0LGUsYSxvKXtyZXR1cm4gci5pc091dHNpZGVUZXh0KHQsZSk/ZnVuY3Rp b24odCxlLG4pe3JldHVybntjb2xvcjpyLmdldE91dHNpZGVUZXh0Rm9udEtleSgiY29sb3Ii LHQsZSxuKSxmYW1pbHk6ci5nZXRPdXRzaWRlVGV4dEZvbnRLZXkoImZhbWlseSIsdCxlLG4p LHNpemU6ci5nZXRPdXRzaWRlVGV4dEZvbnRLZXkoInNpemUiLHQsZSxuKX19KHQsZSxhKTpm dW5jdGlvbih0LGUsYSxvKXt2YXIgcz0ob3x8e30pLm9uUGF0aGJhcixsPWUuZGF0YS5kYXRh LGM9bC5pLHU9bi5jYXN0T3B0aW9uKHQsYywocz8icGF0aGJhci50ZXh0Zm9udCI6Imluc2lk ZXRleHRmb250IikrIi5jb2xvciIpO3JldHVybiF1JiZ0Ll9pbnB1dC50ZXh0Zm9udCYmKHU9 bi5jYXN0T3B0aW9uKHQuX2lucHV0LGMsInRleHRmb250LmNvbG9yIikpLHtjb2xvcjp1fHxp LmNvbnRyYXN0KGwuY29sb3IpLGZhbWlseTpyLmdldEluc2lkZVRleHRGb250S2V5KCJmYW1p bHkiLHQsZSxhLG8pLHNpemU6ci5nZXRJbnNpZGVUZXh0Rm9udEtleSgic2l6ZSIsdCxlLGEs byl9fSh0LGUsYSxvKX0sci5oYXNUcmFuc2l0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiEhKHQm JnQuZHVyYXRpb24+MCl9LHIuZ2V0TWF4RGVwdGg9ZnVuY3Rpb24odCl7cmV0dXJuIHQubWF4 ZGVwdGg+PTA/dC5tYXhkZXB0aDoxLzB9LHIuaXNIZWFkZXI9ZnVuY3Rpb24odCxlKXtyZXR1 cm4hKHIuaXNMZWFmKHQpfHx0LmRlcHRoPT09ZS5fbWF4RGVwdGgtMSl9LHIuZ2V0UGFyZW50 PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIuZmluZEVudHJ5V2l0aExldmVsKHQscyhlKSl9LHIu bGlzdFBhdGg9ZnVuY3Rpb24odCxlKXt2YXIgbj10LnBhcmVudDtpZighbilyZXR1cm5bXTt2 YXIgaT1lP1tuLmRhdGFbZV1dOltuXTtyZXR1cm4gci5saXN0UGF0aChuLGUpLmNvbmNhdChp KX0sci5nZXRQYXRoPWZ1bmN0aW9uKHQpe3JldHVybiByLmxpc3RQYXRoKHQsImxhYmVsIiku am9pbigiLyIpKyIvIn0sci5mb3JtYXRWYWx1ZT1vLmZvcm1hdFBpZVZhbHVlLHIuZm9ybWF0 UGVyY2VudD1mdW5jdGlvbih0LGUpe3ZhciByPW4uZm9ybWF0UGVyY2VudCh0LDApO3JldHVy biIwJSI9PT1yJiYocj1vLmZvcm1hdFBpZVBlcmNlbnQodCxlKSkscn19LHsiLi4vLi4vY29t cG9uZW50cy9jb2xvciI6MzY2LCIuLi8uLi9saWIiOjUwMywiLi4vLi4vbGliL3NldGN1cnNv ciI6NTI0LCIuLi9waWUvaGVscGVycyI6OTA2fV0sMTA1NjpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e21vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJzdW5idXJz dCIsYmFzZVBsb3RNb2R1bGU6dCgiLi9iYXNlX3Bsb3QiKSxjYXRlZ29yaWVzOltdLGFuaW1h dGFibGU6ITAsYXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxsYXlvdXRBdHRyaWJ1dGVz OnQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKSxzdXBwbHlEZWZhdWx0czp0KCIuL2RlZmF1bHRz Iiksc3VwcGx5TGF5b3V0RGVmYXVsdHM6dCgiLi9sYXlvdXRfZGVmYXVsdHMiKSxjYWxjOnQo Ii4vY2FsYyIpLmNhbGMsY3Jvc3NUcmFjZUNhbGM6dCgiLi9jYWxjIikuY3Jvc3NUcmFjZUNh bGMscGxvdDp0KCIuL3Bsb3QiKS5wbG90LHN0eWxlOnQoIi4vc3R5bGUiKS5zdHlsZSxjb2xv cmJhcjp0KCIuLi9zY2F0dGVyL21hcmtlcl9jb2xvcmJhciIpLG1ldGE6e319fSx7Ii4uL3Nj YXR0ZXIvbWFya2VyX2NvbG9yYmFyIjo5NDUsIi4vYXR0cmlidXRlcyI6MTA0OSwiLi9iYXNl X3Bsb3QiOjEwNTAsIi4vY2FsYyI6MTA1MSwiLi9kZWZhdWx0cyI6MTA1MywiLi9sYXlvdXRf YXR0cmlidXRlcyI6MTA1NywiLi9sYXlvdXRfZGVmYXVsdHMiOjEwNTgsIi4vcGxvdCI6MTA1 OSwiLi9zdHlsZSI6MTA2MH1dLDEwNTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 ZS5leHBvcnRzPXtzdW5idXJzdGNvbG9yd2F5Ont2YWxUeXBlOiJjb2xvcmxpc3QiLGVkaXRU eXBlOiJjYWxjIn0sZXh0ZW5kc3VuYnVyc3Rjb2xvcnM6e3ZhbFR5cGU6ImJvb2xlYW4iLGRm bHQ6ITAsZWRpdFR5cGU6ImNhbGMifX19LHt9XSwxMDU4OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYiIpLGk9dCgiLi9sYXlvdXRfYXR0cmlidXRl cyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHIocixhKXtyZXR1cm4gbi5j b2VyY2UodCxlLGkscixhKX1yKCJzdW5idXJzdGNvbG9yd2F5IixlLmNvbG9yd2F5KSxyKCJl eHRlbmRzdW5idXJzdGNvbG9ycyIpfX0seyIuLi8uLi9saWIiOjUwMywiLi9sYXlvdXRfYXR0 cmlidXRlcyI6MTA1N31dLDEwNTk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgiQHBsb3RseS9kMyIpLGk9dCgiZDMtaGllcmFyY2h5IiksYT10KCJkMy1pbnRlcnBv bGF0ZSIpLmludGVycG9sYXRlLG89dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIikscz10 KCIuLi8uLi9saWIiKSxsPXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91dGlscyIpLGM9dCgiLi4v YmFyL3VuaWZvcm1fdGV4dCIpLHU9Yy5yZWNvcmRNaW5UZXh0U2l6ZSxmPWMuY2xlYXJNaW5U ZXh0U2l6ZSxoPXQoIi4uL3BpZS9wbG90IikscD10KCIuLi9waWUvaGVscGVycyIpLmdldFJv dGF0aW9uQW5nbGUsZD1oLmNvbXB1dGVUcmFuc2Zvcm0sbT1oLnRyYW5zZm9ybUluc2lkZVRl eHQsZz10KCIuL3N0eWxlIikuc3R5bGVPbmUsdj10KCIuLi9iYXIvc3R5bGUiKS5yZXNpemVU ZXh0LHk9dCgiLi9meCIpLHg9dCgiLi9jb25zdGFudHMiKSxiPXQoIi4vaGVscGVycyIpO2Z1 bmN0aW9uIF8odCxlLGMsZil7dmFyIGg9dC5fZnVsbExheW91dCx2PSFoLnVuaWZvcm10ZXh0 Lm1vZGUmJmIuaGFzVHJhbnNpdGlvbihmKSxfPW4uc2VsZWN0KGMpLnNlbGVjdEFsbCgiZy5z bGljZSIpLFQ9ZVswXSxrPVQudHJhY2UsQT1ULmhpZXJhcmNoeSxNPWIuZmluZEVudHJ5V2l0 aExldmVsKEEsay5sZXZlbCksUz1iLmdldE1heERlcHRoKGspLEU9aC5fc2l6ZSxMPWsuZG9t YWluLEM9RS53KihMLnhbMV0tTC54WzBdKSxQPUUuaCooTC55WzFdLUwueVswXSksST0uNSpN YXRoLm1pbihDLFApLE89VC5jeD1FLmwrRS53KihMLnhbMV0rTC54WzBdKS8yLHo9VC5jeT1F LnQrRS5oKigxLUwueVswXSktUC8yO2lmKCFNKXJldHVybiBfLnJlbW92ZSgpO3ZhciBEPW51 bGwsUj17fTt2JiZfLmVhY2goKGZ1bmN0aW9uKHQpe1JbYi5nZXRQdElkKHQpXT17cnB4MDp0 LnJweDAscnB4MTp0LnJweDEseDA6dC54MCx4MTp0LngxLHRyYW5zZm9ybTp0LnRyYW5zZm9y bX0sIUQmJmIuaXNFbnRyeSh0KSYmKEQ9dCl9KSk7dmFyIEY9ZnVuY3Rpb24odCl7cmV0dXJu IGkucGFydGl0aW9uKCkuc2l6ZShbMipNYXRoLlBJLHQuaGVpZ2h0KzFdKSh0KX0oTSkuZGVz Y2VuZGFudHMoKSxCPU0uaGVpZ2h0KzEsTj0wLGo9UztULmhhc011bHRpcGxlUm9vdHMmJmIu aXNIaWVyYXJjaHlSb290KE0pJiYoRj1GLnNsaWNlKDEpLEItPTEsTj0xLGorPTEpLEY9Ri5m aWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnkxPD1qfSkpO3ZhciBVPXAoay5yb3RhdGlv bik7VSYmRi5mb3JFYWNoKChmdW5jdGlvbih0KXt0LngwKz1VLHQueDErPVV9KSk7dmFyIFY9 TWF0aC5taW4oQixTKSxIPWZ1bmN0aW9uKHQpe3JldHVybih0LU4pL1YqSX0scT1mdW5jdGlv bih0LGUpe3JldHVyblt0Kk1hdGguY29zKGUpLC10Kk1hdGguc2luKGUpXX0sRz1mdW5jdGlv bih0KXtyZXR1cm4gcy5wYXRoQW5udWx1cyh0LnJweDAsdC5ycHgxLHQueDAsdC54MSxPLHop fSxZPWZ1bmN0aW9uKHQpe3JldHVybiBPK3codClbMF0qKHQudHJhbnNmb3JtLnJDZW50ZXJ8 fDApKyh0LnRyYW5zZm9ybS54fHwwKX0sVz1mdW5jdGlvbih0KXtyZXR1cm4geit3KHQpWzFd Kih0LnRyYW5zZm9ybS5yQ2VudGVyfHwwKSsodC50cmFuc2Zvcm0ueXx8MCl9OyhfPV8uZGF0 YShGLGIuZ2V0UHRJZCkpLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgic2xpY2UiLCEw KSx2P18uZXhpdCgpLnRyYW5zaXRpb24oKS5lYWNoKChmdW5jdGlvbigpe3ZhciB0PW4uc2Vs ZWN0KHRoaXMpO3Quc2VsZWN0KCJwYXRoLnN1cmZhY2UiKS50cmFuc2l0aW9uKCkuYXR0clR3 ZWVuKCJkIiwoZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24odCl7dmFyIGUscj1iLmdldFB0 SWQodCksbj1SW3JdLGk9UltiLmdldFB0SWQoTSldO2lmKGkpe3ZhciBvPSh0LngxPmkueDE/ MipNYXRoLlBJOjApK1U7ZT10LnJweDE8aS5ycHgxP3t4MDp0LngwLHgxOnQueDEscnB4MDow LHJweDE6MH06e3gwOm8seDE6byxycHgwOnQucnB4MCxycHgxOnQucnB4MX19ZWxzZXt2YXIg cyxsPWIuZ2V0UHRJZCh0LnBhcmVudCk7Xy5lYWNoKChmdW5jdGlvbih0KXtpZihiLmdldFB0 SWQodCk9PT1sKXJldHVybiBzPXR9KSk7dmFyIGMsdT1zLmNoaWxkcmVuO3UuZm9yRWFjaCgo ZnVuY3Rpb24odCxlKXtpZihiLmdldFB0SWQodCk9PT1yKXJldHVybiBjPWV9KSk7dmFyIGY9 dS5sZW5ndGgsaD1hKHMueDAscy54MSk7ZT17cnB4MDpJLHJweDE6SSx4MDpoKGMvZikseDE6 aCgoYysxKS9mKX19cmV0dXJuIGEobixlKX0odCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVy biBHKGUodCkpfX0pKSx0LnNlbGVjdCgiZy5zbGljZXRleHQiKS5hdHRyKCJvcGFjaXR5Iiww KX0pKS5yZW1vdmUoKTpfLmV4aXQoKS5yZW1vdmUoKSxfLm9yZGVyKCk7dmFyIFg9bnVsbDtp Zih2JiZEKXt2YXIgWj1iLmdldFB0SWQoRCk7Xy5lYWNoKChmdW5jdGlvbih0KXtudWxsPT09 WCYmYi5nZXRQdElkKHQpPT09WiYmKFg9dC54MSl9KSl9dmFyIEo9XztmdW5jdGlvbiBLKHQp e3ZhciBlPXQucGFyZW50LHI9UltiLmdldFB0SWQoZSldLG49e307aWYocil7dmFyIGk9ZS5j aGlsZHJlbixvPWkuaW5kZXhPZih0KSxzPWkubGVuZ3RoLGw9YShyLngwLHIueDEpO24ueDA9 bChvL3MpLG4ueDE9bChvL3MpfWVsc2Ugbi54MD1uLngxPTA7cmV0dXJuIG59diYmKEo9Si50 cmFuc2l0aW9uKCkuZWFjaCgiZW5kIiwoZnVuY3Rpb24oKXt2YXIgZT1uLnNlbGVjdCh0aGlz KTtiLnNldFNsaWNlQ3Vyc29yKGUsdCx7aGlkZU9uUm9vdDohMCxoaWRlT25MZWF2ZXM6ITAs aXNUcmFuc2l0aW9uaW5nOiExfSl9KSkpLEouZWFjaCgoZnVuY3Rpb24oaSl7dmFyIGM9bi5z ZWxlY3QodGhpcyksZj1zLmVuc3VyZVNpbmdsZShjLCJwYXRoIiwic3VyZmFjZSIsKGZ1bmN0 aW9uKHQpe3Quc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIil9KSk7aS5ycHgwPUgoaS55 MCksaS5ycHgxPUgoaS55MSksaS54bWlkPShpLngwK2kueDEpLzIsaS5weG1pZD1xKGkucnB4 MSxpLnhtaWQpLGkubWlkYW5nbGU9LShpLnhtaWQtTWF0aC5QSS8yKSxpLnN0YXJ0YW5nbGU9 LShpLngwLU1hdGguUEkvMiksaS5zdG9wYW5nbGU9LShpLngxLU1hdGguUEkvMiksaS5oYWxm YW5nbGU9LjUqTWF0aC5taW4ocy5hbmdsZURlbHRhKGkueDAsaS54MSl8fE1hdGguUEksTWF0 aC5QSSksaS5yaW5nPTEtaS5ycHgwL2kucnB4MSxpLnJJbnNjcmliZWQ9ZnVuY3Rpb24odCl7 cmV0dXJuIDA9PT10LnJweDAmJnMuaXNGdWxsQ2lyY2xlKFt0LngwLHQueDFdKT8xOk1hdGgu bWF4KDAsTWF0aC5taW4oMS8oMSsxL01hdGguc2luKHQuaGFsZmFuZ2xlKSksdC5yaW5nLzIp KX0oaSksdj9mLnRyYW5zaXRpb24oKS5hdHRyVHdlZW4oImQiLChmdW5jdGlvbih0KXt2YXIg ZT1mdW5jdGlvbih0KXt2YXIgZSxyPVJbYi5nZXRQdElkKHQpXSxuPXt4MDp0LngwLHgxOnQu eDEscnB4MDp0LnJweDAscnB4MTp0LnJweDF9O2lmKHIpZT1yO2Vsc2UgaWYoRClpZih0LnBh cmVudClpZihYKXt2YXIgaT0odC54MT5YPzIqTWF0aC5QSTowKStVO2U9e3gwOmkseDE6aX19 ZWxzZSBlPXtycHgwOkkscnB4MTpJfSxzLmV4dGVuZEZsYXQoZSxLKHQpKTtlbHNlIGU9e3Jw eDA6MCxycHgxOjB9O2Vsc2UgZT17eDA6VSx4MTpVfTtyZXR1cm4gYShlLG4pfSh0KTtyZXR1 cm4gZnVuY3Rpb24odCl7cmV0dXJuIEcoZSh0KSl9fSkpOmYuYXR0cigiZCIsRyksYy5jYWxs KHksTSx0LGUse2V2ZW50RGF0YUtleXM6eC5ldmVudERhdGFLZXlzLHRyYW5zaXRpb25UaW1l OnguQ0xJQ0tfVFJBTlNJVElPTl9USU1FLHRyYW5zaXRpb25FYXNpbmc6eC5DTElDS19UUkFO U0lUSU9OX0VBU0lOR30pLmNhbGwoYi5zZXRTbGljZUN1cnNvcix0LHtoaWRlT25Sb290OiEw LGhpZGVPbkxlYXZlczohMCxpc1RyYW5zaXRpb25pbmc6dC5fdHJhbnNpdGlvbmluZ30pLGYu Y2FsbChnLGksayk7dmFyIHA9cy5lbnN1cmVTaW5nbGUoYywiZyIsInNsaWNldGV4dCIpLF89 cy5lbnN1cmVTaW5nbGUocCwidGV4dCIsIiIsKGZ1bmN0aW9uKHQpe3QuYXR0cigiZGF0YS1u b3RleCIsMSl9KSksdz1zLmVuc3VyZVVuaWZvcm1Gb250U2l6ZSh0LGIuZGV0ZXJtaW5lVGV4 dEZvbnQoayxpLGguZm9udCkpO18udGV4dChyLmZvcm1hdFNsaWNlTGFiZWwoaSxNLGssZSxo KSkuY2xhc3NlZCgic2xpY2V0ZXh0IiwhMCkuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUi KS5jYWxsKG8uZm9udCx3KS5jYWxsKGwuY29udmVydFRvVHNwYW5zLHQpO3ZhciBBPW8uYkJv eChfLm5vZGUoKSk7aS50cmFuc2Zvcm09bShBLGksVCksaS50cmFuc2Zvcm0udGFyZ2V0WD1Z KGkpLGkudHJhbnNmb3JtLnRhcmdldFk9VyhpKTt2YXIgUz1mdW5jdGlvbih0LGUpe3ZhciBy PXQudHJhbnNmb3JtO3JldHVybiBkKHIsZSksci5mb250U2l6ZT13LnNpemUsdShrLnR5cGUs cixoKSxzLmdldFRleHRUcmFuc2Zvcm0ocil9O3Y/Xy50cmFuc2l0aW9uKCkuYXR0clR3ZWVu KCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbih0KXt2YXIgZSxyPVJb Yi5nZXRQdElkKHQpXSxuPXQudHJhbnNmb3JtO2lmKHIpZT1yO2Vsc2UgaWYoZT17cnB4MTp0 LnJweDEsdHJhbnNmb3JtOnt0ZXh0UG9zQW5nbGU6bi50ZXh0UG9zQW5nbGUsc2NhbGU6MCxy b3RhdGU6bi5yb3RhdGUsckNlbnRlcjpuLnJDZW50ZXIseDpuLngseTpuLnl9fSxEKWlmKHQu cGFyZW50KWlmKFgpe3ZhciBpPXQueDE+WD8yKk1hdGguUEk6MDtlLngwPWUueDE9aX1lbHNl IHMuZXh0ZW5kRmxhdChlLEsodCkpO2Vsc2UgZS54MD1lLngxPVU7ZWxzZSBlLngwPWUueDE9 VTt2YXIgbz1hKGUudHJhbnNmb3JtLnRleHRQb3NBbmdsZSx0LnRyYW5zZm9ybS50ZXh0UG9z QW5nbGUpLGw9YShlLnJweDEsdC5ycHgxKSxjPWEoZS54MCx0LngwKSxmPWEoZS54MSx0Lngx KSxwPWEoZS50cmFuc2Zvcm0uc2NhbGUsbi5zY2FsZSksZD1hKGUudHJhbnNmb3JtLnJvdGF0 ZSxuLnJvdGF0ZSksbT0wPT09bi5yQ2VudGVyPzM6MD09PWUudHJhbnNmb3JtLnJDZW50ZXI/ MS8zOjEsZz1hKGUudHJhbnNmb3JtLnJDZW50ZXIsbi5yQ2VudGVyKTtyZXR1cm4gZnVuY3Rp b24odCl7dmFyIGU9bCh0KSxyPWModCksaT1mKHQpLGE9ZnVuY3Rpb24odCl7cmV0dXJuIGco TWF0aC5wb3codCxtKSl9KHQpLHM9e3B4bWlkOnEoZSwocitpKS8yKSxycHgxOmUsdHJhbnNm b3JtOnt0ZXh0UG9zQW5nbGU6byh0KSxyQ2VudGVyOmEseDpuLngseTpuLnl9fTtyZXR1cm4g dShrLnR5cGUsbixoKSx7dHJhbnNmb3JtOnt0YXJnZXRYOlkocyksdGFyZ2V0WTpXKHMpLHNj YWxlOnAodCkscm90YXRlOmQodCksckNlbnRlcjphfX19fSh0KTtyZXR1cm4gZnVuY3Rpb24o dCl7cmV0dXJuIFMoZSh0KSxBKX19KSk6Xy5hdHRyKCJ0cmFuc2Zvcm0iLFMoaSxBKSl9KSl9 ZnVuY3Rpb24gdyh0KXtyZXR1cm4gZT10LnJweDEscj10LnRyYW5zZm9ybS50ZXh0UG9zQW5n bGUsW2UqTWF0aC5zaW4ociksLWUqTWF0aC5jb3MocildO3ZhciBlLHJ9ci5wbG90PWZ1bmN0 aW9uKHQsZSxyLGkpe3ZhciBhLG8scz10Ll9mdWxsTGF5b3V0LGw9cy5fc3VuYnVyc3RsYXll cixjPSFyLHU9IXMudW5pZm9ybXRleHQubW9kZSYmYi5oYXNUcmFuc2l0aW9uKHIpOyhmKCJz dW5idXJzdCIscyksKGE9bC5zZWxlY3RBbGwoImcudHJhY2Uuc3VuYnVyc3QiKS5kYXRhKGUs KGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdLnRyYWNlLnVpZH0pKSkuZW50ZXIoKS5hcHBlbmQo ImciKS5jbGFzc2VkKCJ0cmFjZSIsITApLmNsYXNzZWQoInN1bmJ1cnN0IiwhMCkuYXR0cigi c3Ryb2tlLWxpbmVqb2luIiwicm91bmQiKSxhLm9yZGVyKCksdSk/KGkmJihvPWkoKSksbi50 cmFuc2l0aW9uKCkuZHVyYXRpb24oci5kdXJhdGlvbikuZWFzZShyLmVhc2luZykuZWFjaCgi ZW5kIiwoZnVuY3Rpb24oKXtvJiZvKCl9KSkuZWFjaCgiaW50ZXJydXB0IiwoZnVuY3Rpb24o KXtvJiZvKCl9KSkuZWFjaCgoZnVuY3Rpb24oKXtsLnNlbGVjdEFsbCgiZy50cmFjZSIpLmVh Y2goKGZ1bmN0aW9uKGUpe18odCxlLHRoaXMscil9KSl9KSkpOihhLmVhY2goKGZ1bmN0aW9u KGUpe18odCxlLHRoaXMscil9KSkscy51bmlmb3JtdGV4dC5tb2RlJiZ2KHQscy5fc3VuYnVy c3RsYXllci5zZWxlY3RBbGwoIi50cmFjZSIpLCJzdW5idXJzdCIpKTtjJiZhLmV4aXQoKS5y ZW1vdmUoKX0sci5mb3JtYXRTbGljZUxhYmVsPWZ1bmN0aW9uKHQsZSxyLG4saSl7dmFyIGE9 ci50ZXh0dGVtcGxhdGUsbz1yLnRleHRpbmZvO2lmKCEoYXx8byYmIm5vbmUiIT09bykpcmV0 dXJuIiI7dmFyIGw9aS5zZXBhcmF0b3JzLGM9blswXSx1PXQuZGF0YS5kYXRhLGY9Yy5oaWVy YXJjaHksaD1iLmlzSGllcmFyY2h5Um9vdCh0KSxwPWIuZ2V0UGFyZW50KGYsdCksZD1iLmdl dFZhbHVlKHQpO2lmKCFhKXt2YXIgbSxnPW8uc3BsaXQoIisiKSx2PWZ1bmN0aW9uKHQpe3Jl dHVybi0xIT09Zy5pbmRleE9mKHQpfSx5PVtdO2lmKHYoImxhYmVsIikmJnUubGFiZWwmJnku cHVzaCh1LmxhYmVsKSx1Lmhhc093blByb3BlcnR5KCJ2IikmJnYoInZhbHVlIikmJnkucHVz aChiLmZvcm1hdFZhbHVlKHUudixsKSksIWgpe3YoImN1cnJlbnQgcGF0aCIpJiZ5LnB1c2go Yi5nZXRQYXRoKHQuZGF0YSkpO3ZhciB4PTA7digicGVyY2VudCBwYXJlbnQiKSYmeCsrLHYo InBlcmNlbnQgZW50cnkiKSYmeCsrLHYoInBlcmNlbnQgcm9vdCIpJiZ4Kys7dmFyIF89eD4x O2lmKHgpe3ZhciB3LFQ9ZnVuY3Rpb24odCl7bT1iLmZvcm1hdFBlcmNlbnQodyxsKSxfJiYo bSs9IiBvZiAiK3QpLHkucHVzaChtKX07digicGVyY2VudCBwYXJlbnQiKSYmIWgmJih3PWQv Yi5nZXRWYWx1ZShwKSxUKCJwYXJlbnQiKSksdigicGVyY2VudCBlbnRyeSIpJiYodz1kL2Iu Z2V0VmFsdWUoZSksVCgiZW50cnkiKSksdigicGVyY2VudCByb290IikmJih3PWQvYi5nZXRW YWx1ZShmKSxUKCJyb290IikpfX1yZXR1cm4gdigidGV4dCIpJiYobT1zLmNhc3RPcHRpb24o cix1LmksInRleHQiKSxzLmlzVmFsaWRUZXh0VmFsdWUobSkmJnkucHVzaChtKSkseS5qb2lu KCI8YnI+Iil9dmFyIGs9cy5jYXN0T3B0aW9uKHIsdS5pLCJ0ZXh0dGVtcGxhdGUiKTtpZigh aylyZXR1cm4iIjt2YXIgQT17fTt1LmxhYmVsJiYoQS5sYWJlbD11LmxhYmVsKSx1Lmhhc093 blByb3BlcnR5KCJ2IikmJihBLnZhbHVlPXUudixBLnZhbHVlTGFiZWw9Yi5mb3JtYXRWYWx1 ZSh1LnYsbCkpLEEuY3VycmVudFBhdGg9Yi5nZXRQYXRoKHQuZGF0YSksaHx8KEEucGVyY2Vu dFBhcmVudD1kL2IuZ2V0VmFsdWUocCksQS5wZXJjZW50UGFyZW50TGFiZWw9Yi5mb3JtYXRQ ZXJjZW50KEEucGVyY2VudFBhcmVudCxsKSxBLnBhcmVudD1iLmdldFB0TGFiZWwocCkpLEEu cGVyY2VudEVudHJ5PWQvYi5nZXRWYWx1ZShlKSxBLnBlcmNlbnRFbnRyeUxhYmVsPWIuZm9y bWF0UGVyY2VudChBLnBlcmNlbnRFbnRyeSxsKSxBLmVudHJ5PWIuZ2V0UHRMYWJlbChlKSxB LnBlcmNlbnRSb290PWQvYi5nZXRWYWx1ZShmKSxBLnBlcmNlbnRSb290TGFiZWw9Yi5mb3Jt YXRQZXJjZW50KEEucGVyY2VudFJvb3QsbCksQS5yb290PWIuZ2V0UHRMYWJlbChmKSx1Lmhh c093blByb3BlcnR5KCJjb2xvciIpJiYoQS5jb2xvcj11LmNvbG9yKTt2YXIgTT1zLmNhc3RP cHRpb24ocix1LmksInRleHQiKTtyZXR1cm4ocy5pc1ZhbGlkVGV4dFZhbHVlKE0pfHwiIj09 PU0pJiYoQS50ZXh0PU0pLEEuY3VzdG9tZGF0YT1zLmNhc3RPcHRpb24ocix1LmksImN1c3Rv bWRhdGEiKSxzLnRleHR0ZW1wbGF0ZVN0cmluZyhrLEEsaS5fZDNsb2NhbGUsQSxyLl9tZXRh fHx7fSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyI6Mzg4LCIuLi8uLi9saWIiOjUw MywiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo1MjksIi4uL2Jhci9zdHlsZSI6NjYyLCIu Li9iYXIvdW5pZm9ybV90ZXh0Ijo2NjQsIi4uL3BpZS9oZWxwZXJzIjo5MDYsIi4uL3BpZS9w bG90Ijo5MTAsIi4vY29uc3RhbnRzIjoxMDUyLCIuL2Z4IjoxMDU0LCIuL2hlbHBlcnMiOjEw NTUsIi4vc3R5bGUiOjEwNjAsIkBwbG90bHkvZDMiOjU4LCJkMy1oaWVyYXJjaHkiOjExNSwi ZDMtaW50ZXJwb2xhdGUiOjExNn1dLDEwNjA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiQHBsb3RseS9kMyIpLGk9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvciIp LGE9dCgiLi4vLi4vbGliIiksbz10KCIuLi9iYXIvdW5pZm9ybV90ZXh0IikucmVzaXplVGV4 dDtmdW5jdGlvbiBzKHQsZSxyKXt2YXIgbj1lLmRhdGEuZGF0YSxvPSFlLmNoaWxkcmVuLHM9 bi5pLGw9YS5jYXN0T3B0aW9uKHIscywibWFya2VyLmxpbmUuY29sb3IiKXx8aS5kZWZhdWx0 TGluZSxjPWEuY2FzdE9wdGlvbihyLHMsIm1hcmtlci5saW5lLndpZHRoIil8fDA7dC5zdHls ZSgic3Ryb2tlLXdpZHRoIixjKS5jYWxsKGkuZmlsbCxuLmNvbG9yKS5jYWxsKGkuc3Ryb2tl LGwpLnN0eWxlKCJvcGFjaXR5IixvP3IubGVhZi5vcGFjaXR5Om51bGwpfWUuZXhwb3J0cz17 c3R5bGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5fZnVsbExheW91dC5fc3VuYnVyc3RsYXllci5z ZWxlY3RBbGwoIi50cmFjZSIpO28odCxlLCJzdW5idXJzdCIpLGUuZWFjaCgoZnVuY3Rpb24o dCl7dmFyIGU9bi5zZWxlY3QodGhpcykscj10WzBdLnRyYWNlO2Uuc3R5bGUoIm9wYWNpdHki LHIub3BhY2l0eSksZS5zZWxlY3RBbGwoInBhdGguc3VyZmFjZSIpLmVhY2goKGZ1bmN0aW9u KHQpe24uc2VsZWN0KHRoaXMpLmNhbGwocyx0LHIpfSkpfSkpfSxzdHlsZU9uZTpzfX0seyIu Li8uLi9jb21wb25lbnRzL2NvbG9yIjozNjYsIi4uLy4uL2xpYiI6NTAzLCIuLi9iYXIvdW5p Zm9ybV90ZXh0Ijo2NjQsIkBwbG90bHkvZDMiOjU4fV0sMTA2MTpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksaT10KCIu Li8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUvYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4vcGxv dHMvY2FydGVzaWFuL2F4aXNfZm9ybWF0X2F0dHJpYnV0ZXMiKS5heGlzSG92ZXJGb3JtYXQs bz10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9hdHRyaWJ1dGVzIikuaG92ZXJ0ZW1wbGF0ZUF0 dHJzLHM9dCgiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyIpLGw9dCgiLi4vLi4vbGliL2V4dGVu ZCIpLmV4dGVuZEZsYXQsYz10KCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIikub3ZlcnJp ZGVBbGw7ZnVuY3Rpb24gdSh0KXtyZXR1cm57c2hvdzp7dmFsVHlwZToiYm9vbGVhbiIsZGZs dDohMX0sc3RhcnQ6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDpudWxsLGVkaXRUeXBlOiJwbG90 In0sZW5kOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6bnVsbCxlZGl0VHlwZToicGxvdCJ9LHNp emU6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDpudWxsLG1pbjowLGVkaXRUeXBlOiJwbG90In0s cHJvamVjdDp7eDp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0seTp7dmFsVHlwZToiYm9v bGVhbiIsZGZsdDohMX0sejp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX19LGNvbG9yOnt2 YWxUeXBlOiJjb2xvciIsZGZsdDpuLmRlZmF1bHRMaW5lfSx1c2Vjb2xvcm1hcDp7dmFsVHlw ZToiYm9vbGVhbiIsZGZsdDohMX0sd2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjEsbWF4 OjE2LGRmbHQ6Mn0saGlnaGxpZ2h0Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwfSxoaWdo bGlnaHRjb2xvcjp7dmFsVHlwZToiY29sb3IiLGRmbHQ6bi5kZWZhdWx0TGluZX0saGlnaGxp Z2h0d2lkdGg6e3ZhbFR5cGU6Im51bWJlciIsbWluOjEsbWF4OjE2LGRmbHQ6Mn19fXZhciBm PWUuZXhwb3J0cz1jKGwoe3o6e3ZhbFR5cGU6ImRhdGFfYXJyYXkifSx4Ont2YWxUeXBlOiJk YXRhX2FycmF5In0seTp7dmFsVHlwZToiZGF0YV9hcnJheSJ9LHRleHQ6e3ZhbFR5cGU6InN0 cmluZyIsZGZsdDoiIixhcnJheU9rOiEwfSxob3ZlcnRleHQ6e3ZhbFR5cGU6InN0cmluZyIs ZGZsdDoiIixhcnJheU9rOiEwfSxob3ZlcnRlbXBsYXRlOm8oKSx4aG92ZXJmb3JtYXQ6YSgi eCIpLHlob3ZlcmZvcm1hdDphKCJ5IiksemhvdmVyZm9ybWF0OmEoInoiKSxjb25uZWN0Z2Fw czp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMSxlZGl0VHlwZToiY2FsYyJ9LHN1cmZhY2Vj b2xvcjp7dmFsVHlwZToiZGF0YV9hcnJheSJ9fSxpKCIiLHtjb2xvckF0dHI6Inogb3Igc3Vy ZmFjZWNvbG9yIixzaG93U2NhbGVEZmx0OiEwLGF1dG9Db2xvckRmbHQ6ITEsZWRpdFR5cGVP dmVycmlkZToiY2FsYyJ9KSx7Y29udG91cnM6e3g6dSgpLHk6dSgpLHo6dSgpfSxoaWRlc3Vy ZmFjZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMX0sbGlnaHRwb3NpdGlvbjp7eDp7dmFs VHlwZToibnVtYmVyIixtaW46LTFlNSxtYXg6MWU1LGRmbHQ6MTB9LHk6e3ZhbFR5cGU6Im51 bWJlciIsbWluOi0xZTUsbWF4OjFlNSxkZmx0OjFlNH0sejp7dmFsVHlwZToibnVtYmVyIixt aW46LTFlNSxtYXg6MWU1LGRmbHQ6MH19LGxpZ2h0aW5nOnthbWJpZW50Ont2YWxUeXBlOiJu dW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6Ljh9LGRpZmZ1c2U6e3ZhbFR5cGU6Im51bWJlciIs bWluOjAsbWF4OjEsZGZsdDouOH0sc3BlY3VsYXI6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAs bWF4OjIsZGZsdDouMDV9LHJvdWdobmVzczp7dmFsVHlwZToibnVtYmVyIixtaW46MCxtYXg6 MSxkZmx0Oi41fSxmcmVzbmVsOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDo1LGRmbHQ6 LjJ9fSxvcGFjaXR5Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MX0sb3Bh Y2l0eXNjYWxlOnt2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJjYWxjIn0sX2RlcHJlY2F0ZWQ6 e3phdXRvOmwoe30saS56YXV0byx7fSksem1pbjpsKHt9LGkuem1pbix7fSksem1heDpsKHt9 LGkuem1heCx7fSl9LGhvdmVyaW5mbzpsKHt9LHMuaG92ZXJpbmZvKSxzaG93bGVnZW5kOmwo e30scy5zaG93bGVnZW5kLHtkZmx0OiExfSl9KSwiY2FsYyIsIm5lc3RlZCIpO2YueC5lZGl0 VHlwZT1mLnkuZWRpdFR5cGU9Zi56LmVkaXRUeXBlPSJjYWxjK2NsZWFyQXhpc1R5cGVzIixm LnRyYW5zZm9ybXM9dm9pZCAwfSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjM2NiwiLi4v Li4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJpYnV0ZXMiOjM3MywiLi4vLi4vbGliL2V4 dGVuZCI6NDkzLCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIjo1MzYsIi4uLy4uL3Bsb3Rz L2F0dHJpYnV0ZXMiOjU1MCwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfZm9ybWF0X2F0 dHJpYnV0ZXMiOjU1NywiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6NjMzfV0s MTA2MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9jb21w b25lbnRzL2NvbG9yc2NhbGUvY2FsYyIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Uuc3Vy ZmFjZWNvbG9yP24odCxlLHt2YWxzOmUuc3VyZmFjZWNvbG9yLGNvbnRhaW5lclN0cjoiIixj TGV0dGVyOiJjIn0pOm4odCxlLHt2YWxzOmUueixjb250YWluZXJTdHI6IiIsY0xldHRlcjoi YyJ9KX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2NhbGMiOjM3NH1dLDEwNjM6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vLi4vc3RhY2tn bF9tb2R1bGVzIikuZ2xfc3VyZmFjZTNkLGk9dCgiLi4vLi4vLi4vc3RhY2tnbF9tb2R1bGVz IikubmRhcnJheSxhPXQoIi4uLy4uLy4uL3N0YWNrZ2xfbW9kdWxlcyIpLm5kYXJyYXlfbGlu ZWFyX2ludGVycG9sYXRlLmQyLG89dCgiLi4vaGVhdG1hcC9pbnRlcnAyZCIpLHM9dCgiLi4v aGVhdG1hcC9maW5kX2VtcHRpZXMiKSxsPXQoIi4uLy4uL2xpYiIpLmlzQXJyYXlPclR5cGVk QXJyYXksYz10KCIuLi8uLi9saWIvZ2xfZm9ybWF0X2NvbG9yIikucGFyc2VDb2xvclNjYWxl LHU9dCgiLi4vLi4vbGliL3N0cjJyZ2JhcnJheSIpLGY9dCgiLi4vLi4vY29tcG9uZW50cy9j b2xvcnNjYWxlIikuZXh0cmFjdE9wdHM7ZnVuY3Rpb24gaCh0LGUscil7dGhpcy5zY2VuZT10 LHRoaXMudWlkPXIsdGhpcy5zdXJmYWNlPWUsdGhpcy5kYXRhPW51bGwsdGhpcy5zaG93Q29u dG91cj1bITEsITEsITFdLHRoaXMuY29udG91clN0YXJ0PVtudWxsLG51bGwsbnVsbF0sdGhp cy5jb250b3VyRW5kPVtudWxsLG51bGwsbnVsbF0sdGhpcy5jb250b3VyU2l6ZT1bMCwwLDBd LHRoaXMubWluVmFsdWVzPVsxLzAsMS8wLDEvMF0sdGhpcy5tYXhWYWx1ZXM9Wy0xLzAsLTEv MCwtMS8wXSx0aGlzLmRhdGFTY2FsZVg9MSx0aGlzLmRhdGFTY2FsZVk9MSx0aGlzLnJlZmlu ZURhdGE9ITAsdGhpcy5vYmplY3RPZmZzZXQ9WzAsMCwwXX12YXIgcD1oLnByb3RvdHlwZTtw LmdldFhhdD1mdW5jdGlvbih0LGUscixuKXt2YXIgaT1sKHRoaXMuZGF0YS54KT9sKHRoaXMu ZGF0YS54WzBdKT90aGlzLmRhdGEueFtlXVt0XTp0aGlzLmRhdGEueFt0XTp0O3JldHVybiB2 b2lkIDA9PT1yP2k6bi5kMmwoaSwwLHIpfSxwLmdldFlhdD1mdW5jdGlvbih0LGUscixuKXt2 YXIgaT1sKHRoaXMuZGF0YS55KT9sKHRoaXMuZGF0YS55WzBdKT90aGlzLmRhdGEueVtlXVt0 XTp0aGlzLmRhdGEueVtlXTplO3JldHVybiB2b2lkIDA9PT1yP2k6bi5kMmwoaSwwLHIpfSxw LmdldFphdD1mdW5jdGlvbih0LGUscixuKXt2YXIgaT10aGlzLmRhdGEueltlXVt0XTtyZXR1 cm4gbnVsbD09PWkmJnRoaXMuZGF0YS5jb25uZWN0Z2FwcyYmdGhpcy5kYXRhLl9pbnRlcnBv bGF0ZWRaJiYoaT10aGlzLmRhdGEuX2ludGVycG9sYXRlZFpbZV1bdF0pLHZvaWQgMD09PXI/ aTpuLmQybChpLDAscil9LHAuaGFuZGxlUGljaz1mdW5jdGlvbih0KXtpZih0Lm9iamVjdD09 PXRoaXMuc3VyZmFjZSl7dmFyIGU9KHQuZGF0YS5pbmRleFswXS0xKS90aGlzLmRhdGFTY2Fs ZVgtMSxyPSh0LmRhdGEuaW5kZXhbMV0tMSkvdGhpcy5kYXRhU2NhbGVZLTEsbj1NYXRoLm1h eChNYXRoLm1pbihNYXRoLnJvdW5kKGUpLHRoaXMuZGF0YS56WzBdLmxlbmd0aC0xKSwwKSxp PU1hdGgubWF4KE1hdGgubWluKE1hdGgucm91bmQociksdGhpcy5kYXRhLl95bGVuZ3RoLTEp LDApO3QuaW5kZXg9W24saV0sdC50cmFjZUNvb3JkaW5hdGU9W3RoaXMuZ2V0WGF0KG4saSks dGhpcy5nZXRZYXQobixpKSx0aGlzLmdldFphdChuLGkpXSx0LmRhdGFDb29yZGluYXRlPVt0 aGlzLmdldFhhdChuLGksdGhpcy5kYXRhLnhjYWxlbmRhcix0aGlzLnNjZW5lLmZ1bGxTY2Vu ZUxheW91dC54YXhpcyksdGhpcy5nZXRZYXQobixpLHRoaXMuZGF0YS55Y2FsZW5kYXIsdGhp cy5zY2VuZS5mdWxsU2NlbmVMYXlvdXQueWF4aXMpLHRoaXMuZ2V0WmF0KG4saSx0aGlzLmRh dGEuemNhbGVuZGFyLHRoaXMuc2NlbmUuZnVsbFNjZW5lTGF5b3V0LnpheGlzKV07Zm9yKHZh ciBhPTA7YTwzO2ErKyl7dmFyIG89dC5kYXRhQ29vcmRpbmF0ZVthXTtudWxsIT1vJiYodC5k YXRhQ29vcmRpbmF0ZVthXSo9dGhpcy5zY2VuZS5kYXRhU2NhbGVbYV0pfXZhciBzPXRoaXMu ZGF0YS5ob3ZlcnRleHR8fHRoaXMuZGF0YS50ZXh0O3JldHVybiBBcnJheS5pc0FycmF5KHMp JiZzW2ldJiZ2b2lkIDAhPT1zW2ldW25dP3QudGV4dExhYmVsPXNbaV1bbl06dC50ZXh0TGFi ZWw9c3x8IiIsdC5kYXRhLmRhdGFDb29yZGluYXRlPXQuZGF0YUNvb3JkaW5hdGUuc2xpY2Uo KSx0aGlzLnN1cmZhY2UuaGlnaGxpZ2h0KHQuZGF0YSksdGhpcy5zY2VuZS5nbHBsb3Quc3Bp a2VzLnBvc2l0aW9uPXQuZGF0YUNvb3JkaW5hdGUsITB9fTt2YXIgZD1bMiwzLDUsNywxMSwx MywxNywxOSwyMywyOSwzMSwzNyw0MSw0Myw0Nyw1Myw1OSw2MSw2Nyw3MSw3Myw3OSw4Myw4 OSw5NywxMDEsMTAzLDEwNywxMDksMTEzLDEyNywxMzEsMTM3LDEzOSwxNDksMTUxLDE1Nywx NjMsMTY3LDE3MywxNzksMTgxLDE5MSwxOTMsMTk3LDE5OSwyMTEsMjIzLDIyNywyMjksMjMz LDIzOSwyNDEsMjUxLDI1NywyNjMsMjY5LDI3MSwyNzcsMjgxLDI4MywyOTMsMzA3LDMxMSwz MTMsMzE3LDMzMSwzMzcsMzQ3LDM0OSwzNTMsMzU5LDM2NywzNzMsMzc5LDM4MywzODksMzk3 LDQwMSw0MDksNDE5LDQyMSw0MzEsNDMzLDQzOSw0NDMsNDQ5LDQ1Nyw0NjEsNDYzLDQ2Nyw0 NzksNDg3LDQ5MSw0OTksNTAzLDUwOSw1MjEsNTIzLDU0MSw1NDcsNTU3LDU2Myw1NjksNTcx LDU3Nyw1ODcsNTkzLDU5OSw2MDEsNjA3LDYxMyw2MTcsNjE5LDYzMSw2NDEsNjQzLDY0Nyw2 NTMsNjU5LDY2MSw2NzMsNjc3LDY4Myw2OTEsNzAxLDcwOSw3MTksNzI3LDczMyw3MzksNzQz LDc1MSw3NTcsNzYxLDc2OSw3NzMsNzg3LDc5Nyw4MDksODExLDgyMSw4MjMsODI3LDgyOSw4 MzksODUzLDg1Nyw4NTksODYzLDg3Nyw4ODEsODgzLDg4Nyw5MDcsOTExLDkxOSw5MjksOTM3 LDk0MSw5NDcsOTUzLDk2Nyw5NzEsOTc3LDk4Myw5OTEsOTk3LDEwMDksMTAxMywxMDE5LDEw MjEsMTAzMSwxMDMzLDEwMzksMTA0OSwxMDUxLDEwNjEsMTA2MywxMDY5LDEwODcsMTA5MSwx MDkzLDEwOTcsMTEwMywxMTA5LDExMTcsMTEyMywxMTI5LDExNTEsMTE1MywxMTYzLDExNzEs MTE4MSwxMTg3LDExOTMsMTIwMSwxMjEzLDEyMTcsMTIyMywxMjI5LDEyMzEsMTIzNywxMjQ5 LDEyNTksMTI3NywxMjc5LDEyODMsMTI4OSwxMjkxLDEyOTcsMTMwMSwxMzAzLDEzMDcsMTMx OSwxMzIxLDEzMjcsMTM2MSwxMzY3LDEzNzMsMTM4MSwxMzk5LDE0MDksMTQyMywxNDI3LDE0 MjksMTQzMywxNDM5LDE0NDcsMTQ1MSwxNDUzLDE0NTksMTQ3MSwxNDgxLDE0ODMsMTQ4Nywx NDg5LDE0OTMsMTQ5OSwxNTExLDE1MjMsMTUzMSwxNTQzLDE1NDksMTU1MywxNTU5LDE1Njcs MTU3MSwxNTc5LDE1ODMsMTU5NywxNjAxLDE2MDcsMTYwOSwxNjEzLDE2MTksMTYyMSwxNjI3 LDE2MzcsMTY1NywxNjYzLDE2NjcsMTY2OSwxNjkzLDE2OTcsMTY5OSwxNzA5LDE3MjEsMTcy MywxNzMzLDE3NDEsMTc0NywxNzUzLDE3NTksMTc3NywxNzgzLDE3ODcsMTc4OSwxODAxLDE4 MTEsMTgyMywxODMxLDE4NDcsMTg2MSwxODY3LDE4NzEsMTg3MywxODc3LDE4NzksMTg4OSwx OTAxLDE5MDcsMTkxMywxOTMxLDE5MzMsMTk0OSwxOTUxLDE5NzMsMTk3OSwxOTg3LDE5OTMs MTk5NywxOTk5LDIwMDMsMjAxMSwyMDE3LDIwMjcsMjAyOSwyMDM5LDIwNTMsMjA2MywyMDY5 LDIwODEsMjA4MywyMDg3LDIwODksMjA5OSwyMTExLDIxMTMsMjEyOSwyMTMxLDIxMzcsMjE0 MSwyMTQzLDIxNTMsMjE2MSwyMTc5LDIyMDMsMjIwNywyMjEzLDIyMjEsMjIzNywyMjM5LDIy NDMsMjI1MSwyMjY3LDIyNjksMjI3MywyMjgxLDIyODcsMjI5MywyMjk3LDIzMDksMjMxMSwy MzMzLDIzMzksMjM0MSwyMzQ3LDIzNTEsMjM1NywyMzcxLDIzNzcsMjM4MSwyMzgzLDIzODks MjM5MywyMzk5LDI0MTEsMjQxNywyNDIzLDI0MzcsMjQ0MSwyNDQ3LDI0NTksMjQ2NywyNDcz LDI0NzcsMjUwMywyNTIxLDI1MzEsMjUzOSwyNTQzLDI1NDksMjU1MSwyNTU3LDI1NzksMjU5 MSwyNTkzLDI2MDksMjYxNywyNjIxLDI2MzMsMjY0NywyNjU3LDI2NTksMjY2MywyNjcxLDI2 NzcsMjY4MywyNjg3LDI2ODksMjY5MywyNjk5LDI3MDcsMjcxMSwyNzEzLDI3MTksMjcyOSwy NzMxLDI3NDEsMjc0OSwyNzUzLDI3NjcsMjc3NywyNzg5LDI3OTEsMjc5NywyODAxLDI4MDMs MjgxOSwyODMzLDI4MzcsMjg0MywyODUxLDI4NTcsMjg2MSwyODc5LDI4ODcsMjg5NywyOTAz LDI5MDksMjkxNywyOTI3LDI5MzksMjk1MywyOTU3LDI5NjMsMjk2OSwyOTcxLDI5OTldO2Z1 bmN0aW9uIG0odCxlKXtpZih0PGUpcmV0dXJuIDA7Zm9yKHZhciByPTA7MD09PU1hdGguZmxv b3IodCVlKTspdC89ZSxyKys7cmV0dXJuIHJ9ZnVuY3Rpb24gZyh0KXtmb3IodmFyIGU9W10s cj0wO3I8ZC5sZW5ndGg7cisrKXt2YXIgbj1kW3JdO2UucHVzaChtKHQsbikpfXJldHVybiBl fWZ1bmN0aW9uIHYodCl7Zm9yKHZhciBlPWcodCkscj10LG49MDtuPGQubGVuZ3RoO24rKylp ZihlW25dPjApe3I9ZFtuXTticmVha31yZXR1cm4gcn1mdW5jdGlvbiB5KHQsZSl7aWYoISh0 PDF8fGU8MSkpe2Zvcih2YXIgcj1nKHQpLG49ZyhlKSxpPTEsYT0wO2E8ZC5sZW5ndGg7YSsr KWkqPU1hdGgucG93KGRbYV0sTWF0aC5tYXgoclthXSxuW2FdKSk7cmV0dXJuIGl9fXAuY2Fs Y1hudW1zPWZ1bmN0aW9uKHQpe3ZhciBlLHI9W107Zm9yKGU9MTtlPHQ7ZSsrKXt2YXIgbj10 aGlzLmdldFhhdChlLTEsMCksaT10aGlzLmdldFhhdChlLDApO3JbZS0xXT1pIT09biYmbnVs bCE9biYmbnVsbCE9aT9NYXRoLmFicyhpLW4pOjB9dmFyIGE9MDtmb3IoZT0xO2U8dDtlKysp YSs9cltlLTFdO2ZvcihlPTE7ZTx0O2UrKykwPT09cltlLTFdP3JbZS0xXT0xOnJbZS0xXT1N YXRoLnJvdW5kKGEvcltlLTFdKTtyZXR1cm4gcn0scC5jYWxjWW51bXM9ZnVuY3Rpb24odCl7 dmFyIGUscj1bXTtmb3IoZT0xO2U8dDtlKyspe3ZhciBuPXRoaXMuZ2V0WWF0KDAsZS0xKSxp PXRoaXMuZ2V0WWF0KDAsZSk7cltlLTFdPWkhPT1uJiZudWxsIT1uJiZudWxsIT1pP01hdGgu YWJzKGktbik6MH12YXIgYT0wO2ZvcihlPTE7ZTx0O2UrKylhKz1yW2UtMV07Zm9yKGU9MTtl PHQ7ZSsrKTA9PT1yW2UtMV0/cltlLTFdPTE6cltlLTFdPU1hdGgucm91bmQoYS9yW2UtMV0p O3JldHVybiByfTt2YXIgeD1bMSwyLDQsNiwxMiwyNCwzNiw0OCw2MCwxMjAsMTgwLDI0MCwz NjAsNzIwLDg0MCwxMjYwXSxiPXhbOV0sXz14WzEzXTtmdW5jdGlvbiB3KHQsZSxyKXt2YXIg bj1yWzhdK3JbMl0qZVswXStyWzVdKmVbMV07cmV0dXJuIHRbMF09KHJbNl0rclswXSplWzBd K3JbM10qZVsxXSkvbix0WzFdPShyWzddK3JbMV0qZVswXStyWzRdKmVbMV0pL24sdH1mdW5j dGlvbiBUKHQsZSxyKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBpPVswLDBd LG89dC5zaGFwZVswXSxzPXQuc2hhcGVbMV0sbD0wO2w8bztsKyspZm9yKHZhciBjPTA7Yzxz O2MrKylyKGksW2wsY10sbiksdC5zZXQobCxjLGEoZSxpWzBdLGlbMV0pKX0odCxlLHcsciks dH1mdW5jdGlvbiBrKHQsZSl7Zm9yKHZhciByPSExLG49MDtuPHQubGVuZ3RoO24rKylpZihl PT09dFtuXSl7cj0hMDticmVha30hMT09PXImJnQucHVzaChlKX1wLmVzdGltYXRlU2NhbGU9 ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MStmdW5jdGlvbih0KXtpZigwIT09dC5sZW5ndGgp e2Zvcih2YXIgZT0xLHI9MDtyPHQubGVuZ3RoO3IrKyllPXkoZSx0W3JdKTtyZXR1cm4gZX19 KDA9PT1lP3RoaXMuY2FsY1hudW1zKHQpOnRoaXMuY2FsY1ludW1zKHQpKTtyPGI7KXIqPTI7 Zm9yKDtyPl87KXItLSxyLz12KHIpLCsrcjxiJiYocj1fKTt2YXIgbj1NYXRoLnJvdW5kKHIv dCk7cmV0dXJuIG4+MT9uOjF9LHAucmVmaW5lQ29vcmRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIg ZT10aGlzLmRhdGFTY2FsZVgscj10aGlzLmRhdGFTY2FsZVksbj10WzBdLnNoYXBlWzBdLGE9 dFswXS5zaGFwZVsxXSxvPTB8TWF0aC5mbG9vcih0WzBdLnNoYXBlWzBdKmUrMSkscz0wfE1h dGguZmxvb3IodFswXS5zaGFwZVsxXSpyKzEpLGw9MStuKzEsYz0xK2ErMSx1PWkobmV3IEZs b2F0MzJBcnJheShsKmMpLFtsLGNdKSxmPVsxL2UsMCwwLDAsMS9yLDAsMCwwLDFdLGg9MDto PHQubGVuZ3RoOysraCl7dGhpcy5zdXJmYWNlLnBhZEZpZWxkKHUsdFtoXSk7dmFyIHA9aShu ZXcgRmxvYXQzMkFycmF5KG8qcyksW28sc10pO1QocCx1LGYpLHRbaF09cH19LHAuc2V0Q29u dG91ckxldmVscz1mdW5jdGlvbigpe3ZhciB0LGUscixuPVtbXSxbXSxbXV0saT1bITEsITEs ITFdLGE9ITE7Zm9yKHQ9MDt0PDM7Kyt0KWlmKHRoaXMuc2hvd0NvbnRvdXJbdF0mJihhPSEw LHRoaXMuY29udG91clNpemVbdF0+MCYmbnVsbCE9PXRoaXMuY29udG91clN0YXJ0W3RdJiZu dWxsIT09dGhpcy5jb250b3VyRW5kW3RdJiZ0aGlzLmNvbnRvdXJFbmRbdF0+dGhpcy5jb250 b3VyU3RhcnRbdF0pKWZvcihpW3RdPSEwLGU9dGhpcy5jb250b3VyU3RhcnRbdF07ZTx0aGlz LmNvbnRvdXJFbmRbdF07ZSs9dGhpcy5jb250b3VyU2l6ZVt0XSlyPWUqdGhpcy5zY2VuZS5k YXRhU2NhbGVbdF0sayhuW3RdLHIpO2lmKGEpe3ZhciBvPVtbXSxbXSxbXV07Zm9yKHQ9MDt0 PDM7Kyt0KXRoaXMuc2hvd0NvbnRvdXJbdF0mJihvW3RdPWlbdF0/blt0XTp0aGlzLnNjZW5l LmNvbnRvdXJMZXZlbHNbdF0pO3RoaXMuc3VyZmFjZS51cGRhdGUoe2xldmVsczpvfSl9fSxw LnVwZGF0ZT1mdW5jdGlvbih0KXt2YXIgZSxyLG4sYSxsPXRoaXMuc2NlbmUsaD1sLmZ1bGxT Y2VuZUxheW91dCxwPXRoaXMuc3VyZmFjZSxkPWModCksbT1sLmRhdGFTY2FsZSxnPXQuelsw XS5sZW5ndGgsdj10Ll95bGVuZ3RoLHk9bC5jb250b3VyTGV2ZWxzO3RoaXMuZGF0YT10O3Zh ciB4PVtdO2ZvcihlPTA7ZTwzO2UrKylmb3IoeFtlXT1bXSxyPTA7cjxnO3IrKyl4W2VdW3Jd PVtdO2ZvcihyPTA7cjxnO3IrKylmb3Iobj0wO248djtuKyspeFswXVtyXVtuXT10aGlzLmdl dFhhdChyLG4sdC54Y2FsZW5kYXIsaC54YXhpcykseFsxXVtyXVtuXT10aGlzLmdldFlhdChy LG4sdC55Y2FsZW5kYXIsaC55YXhpcykseFsyXVtyXVtuXT10aGlzLmdldFphdChyLG4sdC56 Y2FsZW5kYXIsaC56YXhpcyk7aWYodC5jb25uZWN0Z2Fwcylmb3IodC5fZW1wdHlwb2ludHM9 cyh4WzJdKSxvKHhbMl0sdC5fZW1wdHlwb2ludHMpLHQuX2ludGVycG9sYXRlZFo9W10scj0w O3I8ZztyKyspZm9yKHQuX2ludGVycG9sYXRlZFpbcl09W10sbj0wO248djtuKyspdC5faW50 ZXJwb2xhdGVkWltyXVtuXT14WzJdW3JdW25dO2ZvcihlPTA7ZTwzO2UrKylmb3Iocj0wO3I8 ZztyKyspZm9yKG49MDtuPHY7bisrKW51bGw9PShhPXhbZV1bcl1bbl0pP3hbZV1bcl1bbl09 TmFOOmE9eFtlXVtyXVtuXSo9bVtlXTtmb3IoZT0wO2U8MztlKyspZm9yKHI9MDtyPGc7cisr KWZvcihuPTA7bjx2O24rKyludWxsIT0oYT14W2VdW3JdW25dKSYmKHRoaXMubWluVmFsdWVz W2VdPmEmJih0aGlzLm1pblZhbHVlc1tlXT1hKSx0aGlzLm1heFZhbHVlc1tlXTxhJiYodGhp cy5tYXhWYWx1ZXNbZV09YSkpO2ZvcihlPTA7ZTwzO2UrKyl0aGlzLm9iamVjdE9mZnNldFtl XT0uNSoodGhpcy5taW5WYWx1ZXNbZV0rdGhpcy5tYXhWYWx1ZXNbZV0pO2ZvcihlPTA7ZTwz O2UrKylmb3Iocj0wO3I8ZztyKyspZm9yKG49MDtuPHY7bisrKW51bGwhPShhPXhbZV1bcl1b bl0pJiYoeFtlXVtyXVtuXS09dGhpcy5vYmplY3RPZmZzZXRbZV0pO3ZhciBiPVtpKG5ldyBG bG9hdDMyQXJyYXkoZyp2KSxbZyx2XSksaShuZXcgRmxvYXQzMkFycmF5KGcqdiksW2csdl0p LGkobmV3IEZsb2F0MzJBcnJheShnKnYpLFtnLHZdKV07Zm9yKGU9MDtlPDM7ZSsrKWZvcihy PTA7cjxnO3IrKylmb3Iobj0wO248djtuKyspYltlXS5zZXQocixuLHhbZV1bcl1bbl0pO3g9 W107dmFyIHc9e2NvbG9ybWFwOmQsbGV2ZWxzOltbXSxbXSxbXV0sc2hvd0NvbnRvdXI6WyEw LCEwLCEwXSxzaG93U3VyZmFjZTohdC5oaWRlc3VyZmFjZSxjb250b3VyUHJvamVjdDpbWyEx LCExLCExXSxbITEsITEsITFdLFshMSwhMSwhMV1dLGNvbnRvdXJXaWR0aDpbMSwxLDFdLGNv bnRvdXJDb2xvcjpbWzEsMSwxLDFdLFsxLDEsMSwxXSxbMSwxLDEsMV1dLGNvbnRvdXJUaW50 OlsxLDEsMV0sZHluYW1pY0NvbG9yOltbMSwxLDEsMV0sWzEsMSwxLDFdLFsxLDEsMSwxXV0s ZHluYW1pY1dpZHRoOlsxLDEsMV0sZHluYW1pY1RpbnQ6WzEsMSwxXSxvcGFjaXR5c2NhbGU6 dC5vcGFjaXR5c2NhbGUsb3BhY2l0eTp0Lm9wYWNpdHl9LFQ9Zih0KTtpZih3LmludGVuc2l0 eUJvdW5kcz1bVC5taW4sVC5tYXhdLHQuc3VyZmFjZWNvbG9yKXt2YXIgaz1pKG5ldyBGbG9h dDMyQXJyYXkoZyp2KSxbZyx2XSk7Zm9yKHI9MDtyPGc7cisrKWZvcihuPTA7bjx2O24rKylr LnNldChyLG4sdC5zdXJmYWNlY29sb3Jbbl1bcl0pO2IucHVzaChrKX1lbHNlIHcuaW50ZW5z aXR5Qm91bmRzWzBdKj1tWzJdLHcuaW50ZW5zaXR5Qm91bmRzWzFdKj1tWzJdOyhfPGJbMF0u c2hhcGVbMF18fF88YlswXS5zaGFwZVsxXSkmJih0aGlzLnJlZmluZURhdGE9ITEpLCEwPT09 dGhpcy5yZWZpbmVEYXRhJiYodGhpcy5kYXRhU2NhbGVYPXRoaXMuZXN0aW1hdGVTY2FsZShi WzBdLnNoYXBlWzBdLDApLHRoaXMuZGF0YVNjYWxlWT10aGlzLmVzdGltYXRlU2NhbGUoYlsw XS5zaGFwZVsxXSwxKSwxPT09dGhpcy5kYXRhU2NhbGVYJiYxPT09dGhpcy5kYXRhU2NhbGVZ fHx0aGlzLnJlZmluZUNvb3JkcyhiKSksdC5zdXJmYWNlY29sb3ImJih3LmludGVuc2l0eT1i LnBvcCgpKTt2YXIgQT1bITAsITAsITBdLE09WyJ4IiwieSIsInoiXTtmb3IoZT0wO2U8Mzsr K2Upe3ZhciBTPXQuY29udG91cnNbTVtlXV07QVtlXT1TLmhpZ2hsaWdodCx3LnNob3dDb250 b3VyW2VdPVMuc2hvd3x8Uy5oaWdobGlnaHQsdy5zaG93Q29udG91cltlXSYmKHcuY29udG91 clByb2plY3RbZV09W1MucHJvamVjdC54LFMucHJvamVjdC55LFMucHJvamVjdC56XSxTLnNo b3c/KHRoaXMuc2hvd0NvbnRvdXJbZV09ITAsdy5sZXZlbHNbZV09eVtlXSxwLmhpZ2hsaWdo dENvbG9yW2VdPXcuY29udG91ckNvbG9yW2VdPXUoUy5jb2xvciksUy51c2Vjb2xvcm1hcD9w LmhpZ2hsaWdodFRpbnRbZV09dy5jb250b3VyVGludFtlXT0wOnAuaGlnaGxpZ2h0VGludFtl XT13LmNvbnRvdXJUaW50W2VdPTEsdy5jb250b3VyV2lkdGhbZV09Uy53aWR0aCx0aGlzLmNv bnRvdXJTdGFydFtlXT1TLnN0YXJ0LHRoaXMuY29udG91ckVuZFtlXT1TLmVuZCx0aGlzLmNv bnRvdXJTaXplW2VdPVMuc2l6ZSk6KHRoaXMuc2hvd0NvbnRvdXJbZV09ITEsdGhpcy5jb250 b3VyU3RhcnRbZV09bnVsbCx0aGlzLmNvbnRvdXJFbmRbZV09bnVsbCx0aGlzLmNvbnRvdXJT aXplW2VdPTApLFMuaGlnaGxpZ2h0JiYody5keW5hbWljQ29sb3JbZV09dShTLmhpZ2hsaWdo dGNvbG9yKSx3LmR5bmFtaWNXaWR0aFtlXT1TLmhpZ2hsaWdodHdpZHRoKSl9KGZ1bmN0aW9u KHQpe3ZhciBlPXRbMF0ucmdiLHI9dFt0Lmxlbmd0aC0xXS5yZ2I7cmV0dXJuIGVbMF09PT1y WzBdJiZlWzFdPT09clsxXSYmZVsyXT09PXJbMl0mJmVbM109PT1yWzNdfSkoZCkmJih3LnZl cnRleENvbG9yPSEwKSx3Lm9iamVjdE9mZnNldD10aGlzLm9iamVjdE9mZnNldCx3LmNvb3Jk cz1iLHAudXBkYXRlKHcpLHAudmlzaWJsZT10LnZpc2libGUscC5lbmFibGVEeW5hbWljPUEs cC5lbmFibGVIaWdobGlnaHQ9QSxwLnNuYXBUb0RhdGE9ITAsImxpZ2h0aW5nImluIHQmJihw LmFtYmllbnRMaWdodD10LmxpZ2h0aW5nLmFtYmllbnQscC5kaWZmdXNlTGlnaHQ9dC5saWdo dGluZy5kaWZmdXNlLHAuc3BlY3VsYXJMaWdodD10LmxpZ2h0aW5nLnNwZWN1bGFyLHAucm91 Z2huZXNzPXQubGlnaHRpbmcucm91Z2huZXNzLHAuZnJlc25lbD10LmxpZ2h0aW5nLmZyZXNu ZWwpLCJsaWdodHBvc2l0aW9uImluIHQmJihwLmxpZ2h0UG9zaXRpb249W3QubGlnaHRwb3Np dGlvbi54LHQubGlnaHRwb3NpdGlvbi55LHQubGlnaHRwb3NpdGlvbi56XSl9LHAuZGlzcG9z ZT1mdW5jdGlvbigpe3RoaXMuc2NlbmUuZ2xwbG90LnJlbW92ZSh0aGlzLnN1cmZhY2UpLHRo aXMuc3VyZmFjZS5kaXNwb3NlKCl9LGUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQu Z2xwbG90LmdsLGk9bih7Z2w6cn0pLGE9bmV3IGgodCxpLGUudWlkKTtyZXR1cm4gaS5fdHJh Y2U9YSxhLnVwZGF0ZShlKSx0LmdscGxvdC5hZGQoaSksYX19LHsiLi4vLi4vLi4vc3RhY2tn bF9tb2R1bGVzIjoxMTI0LCIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUiOjM3OCwiLi4v Li4vbGliIjo1MDMsIi4uLy4uL2xpYi9nbF9mb3JtYXRfY29sb3IiOjQ5OSwiLi4vLi4vbGli L3N0cjJyZ2JhcnJheSI6NTI4LCIuLi9oZWF0bWFwL2ZpbmRfZW1wdGllcyI6Nzk4LCIuLi9o ZWF0bWFwL2ludGVycDJkIjo4MDF9XSwxMDY0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4uLy4uL3JlZ2lzdHJ5IiksaT10KCIuLi8uLi9saWIiKSxhPXQoIi4u Ly4uL2NvbXBvbmVudHMvY29sb3JzY2FsZS9kZWZhdWx0cyIpLG89dCgiLi9hdHRyaWJ1dGVz Iik7ZnVuY3Rpb24gcyh0LGUscixuKXt2YXIgaT1uKCJvcGFjaXR5c2NhbGUiKTsibWF4Ij09 PWk/ZS5vcGFjaXR5c2NhbGU9W1swLC4xXSxbMSwxXV06Im1pbiI9PT1pP2Uub3BhY2l0eXNj YWxlPVtbMCwxXSxbMSwuMV1dOiJleHRyZW1lcyI9PT1pP2Uub3BhY2l0eXNjYWxlPWZ1bmN0 aW9uKHQsZSl7Zm9yKHZhciByPVtdLG49MDtuPDMyO24rKyl7dmFyIGk9bi8zMSxhPWUrKDEt ZSkqKDEtTWF0aC5wb3coTWF0aC5zaW4odCppKk1hdGguUEkpLDIpKTtyLnB1c2goW2ksTWF0 aC5tYXgoMCxNYXRoLm1pbigxLGEpKV0pfXJldHVybiByfSgxLC4xKTpmdW5jdGlvbih0KXt2 YXIgZT0wO2lmKCFBcnJheS5pc0FycmF5KHQpfHx0Lmxlbmd0aDwyKXJldHVybiExO2lmKCF0 WzBdfHwhdFt0Lmxlbmd0aC0xXSlyZXR1cm4hMTtpZigwIT0rdFswXVswXXx8MSE9K3RbdC5s ZW5ndGgtMV1bMF0pcmV0dXJuITE7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBu PXRbcl07aWYoMiE9PW4ubGVuZ3RofHwrblswXTxlKXJldHVybiExO2U9K25bMF19cmV0dXJu ITB9KGkpfHwoZS5vcGFjaXR5c2NhbGU9dm9pZCAwKX1mdW5jdGlvbiBsKHQsZSxyKXtlIGlu IHQmJiEociBpbiB0KSYmKHRbcl09dFtlXSl9ZS5leHBvcnRzPXtzdXBwbHlEZWZhdWx0czpm dW5jdGlvbih0LGUscixjKXt2YXIgdSxmO2Z1bmN0aW9uIGgocixuKXtyZXR1cm4gaS5jb2Vy Y2UodCxlLG8scixuKX12YXIgcD1oKCJ4IiksZD1oKCJ5IiksbT1oKCJ6Iik7aWYoIW18fCFt Lmxlbmd0aHx8cCYmcC5sZW5ndGg8MXx8ZCYmZC5sZW5ndGg8MSllLnZpc2libGU9ITE7ZWxz ZXtlLl94bGVuZ3RoPUFycmF5LmlzQXJyYXkocCkmJmkuaXNBcnJheU9yVHlwZWRBcnJheShw WzBdKT9tLmxlbmd0aDptWzBdLmxlbmd0aCxlLl95bGVuZ3RoPW0ubGVuZ3RoLG4uZ2V0Q29t cG9uZW50TWV0aG9kKCJjYWxlbmRhcnMiLCJoYW5kbGVUcmFjZURlZmF1bHRzIikodCxlLFsi eCIsInkiLCJ6Il0sYyksaCgidGV4dCIpLGgoImhvdmVydGV4dCIpLGgoImhvdmVydGVtcGxh dGUiKSxoKCJ4aG92ZXJmb3JtYXQiKSxoKCJ5aG92ZXJmb3JtYXQiKSxoKCJ6aG92ZXJmb3Jt YXQiKSxbImxpZ2h0aW5nLmFtYmllbnQiLCJsaWdodGluZy5kaWZmdXNlIiwibGlnaHRpbmcu c3BlY3VsYXIiLCJsaWdodGluZy5yb3VnaG5lc3MiLCJsaWdodGluZy5mcmVzbmVsIiwibGln aHRwb3NpdGlvbi54IiwibGlnaHRwb3NpdGlvbi55IiwibGlnaHRwb3NpdGlvbi56IiwiaGlk ZXN1cmZhY2UiLCJjb25uZWN0Z2FwcyIsIm9wYWNpdHkiXS5mb3JFYWNoKChmdW5jdGlvbih0 KXtoKHQpfSkpO3ZhciBnPWgoInN1cmZhY2Vjb2xvciIpLHY9WyJ4IiwieSIsInoiXTtmb3Io dT0wO3U8MzsrK3Upe3ZhciB5PSJjb250b3Vycy4iK3ZbdV0seD1oKHkrIi5zaG93IiksYj1o KHkrIi5oaWdobGlnaHQiKTtpZih4fHxiKWZvcihmPTA7ZjwzOysrZiloKHkrIi5wcm9qZWN0 LiIrdltmXSk7eCYmKGgoeSsiLmNvbG9yIiksaCh5KyIud2lkdGgiKSxoKHkrIi51c2Vjb2xv cm1hcCIpKSxiJiYoaCh5KyIuaGlnaGxpZ2h0Y29sb3IiKSxoKHkrIi5oaWdobGlnaHR3aWR0 aCIpKSxoKHkrIi5zdGFydCIpLGgoeSsiLmVuZCIpLGgoeSsiLnNpemUiKX1nfHwobCh0LCJ6 bWluIiwiY21pbiIpLGwodCwiem1heCIsImNtYXgiKSxsKHQsInphdXRvIiwiY2F1dG8iKSks YSh0LGUsYyxoLHtwcmVmaXg6IiIsY0xldHRlcjoiYyJ9KSxzKHQsZSxjLGgpLGUuX2xlbmd0 aD1udWxsfX0sb3BhY2l0eXNjYWxlRGVmYXVsdHM6c319LHsiLi4vLi4vY29tcG9uZW50cy9j b2xvcnNjYWxlL2RlZmF1bHRzIjozNzYsIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9yZWdpc3Ry eSI6NjM4LCIuL2F0dHJpYnV0ZXMiOjEwNjF9XSwxMDY1OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO2UuZXhwb3J0cz17YXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBw bHlEZWZhdWx0czp0KCIuL2RlZmF1bHRzIikuc3VwcGx5RGVmYXVsdHMsY29sb3JiYXI6e21p bjoiY21pbiIsbWF4OiJjbWF4In0sY2FsYzp0KCIuL2NhbGMiKSxwbG90OnQoIi4vY29udmVy dCIpLG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJzdXJmYWNlIixiYXNlUGxvdE1vZHVsZTp0 KCIuLi8uLi9wbG90cy9nbDNkIiksY2F0ZWdvcmllczpbImdsM2QiLCIyZE1hcCIsInNob3dM ZWdlbmQiXSxtZXRhOnt9fX0seyIuLi8uLi9wbG90cy9nbDNkIjo1OTgsIi4vYXR0cmlidXRl cyI6MTA2MSwiLi9jYWxjIjoxMDYyLCIuL2NvbnZlcnQiOjEwNjMsIi4vZGVmYXVsdHMiOjEw NjR9XSwxMDY2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4u L2NvbXBvbmVudHMvYW5ub3RhdGlvbnMvYXR0cmlidXRlcyIpLGk9dCgiLi4vLi4vbGliL2V4 dGVuZCIpLmV4dGVuZEZsYXQsYT10KCIuLi8uLi9wbG90X2FwaS9lZGl0X3R5cGVzIikub3Zl cnJpZGVBbGwsbz10KCIuLi8uLi9wbG90cy9mb250X2F0dHJpYnV0ZXMiKSxzPXQoIi4uLy4u L3Bsb3RzL2RvbWFpbiIpLmF0dHJpYnV0ZXMsbD10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4v YXhpc19mb3JtYXRfYXR0cmlidXRlcyIpLmRlc2NyaXB0aW9uT25seU51bWJlcnM7KGUuZXhw b3J0cz1hKHtkb21haW46cyh7bmFtZToidGFibGUiLHRyYWNlOiEwfSksY29sdW1ud2lkdGg6 e3ZhbFR5cGU6Im51bWJlciIsYXJyYXlPazohMCxkZmx0Om51bGx9LGNvbHVtbm9yZGVyOnt2 YWxUeXBlOiJkYXRhX2FycmF5In0saGVhZGVyOnt2YWx1ZXM6e3ZhbFR5cGU6ImRhdGFfYXJy YXkiLGRmbHQ6W119LGZvcm1hdDp7dmFsVHlwZToiZGF0YV9hcnJheSIsZGZsdDpbXSxkZXNj cmlwdGlvbjpsKCJjZWxsIHZhbHVlIil9LHByZWZpeDp7dmFsVHlwZToic3RyaW5nIixhcnJh eU9rOiEwLGRmbHQ6bnVsbH0sc3VmZml4Ont2YWxUeXBlOiJzdHJpbmciLGFycmF5T2s6ITAs ZGZsdDpudWxsfSxoZWlnaHQ6e3ZhbFR5cGU6Im51bWJlciIsZGZsdDoyOH0sYWxpZ246aSh7 fSxuLmFsaWduLHthcnJheU9rOiEwfSksbGluZTp7d2lkdGg6e3ZhbFR5cGU6Im51bWJlciIs YXJyYXlPazohMCxkZmx0OjF9LGNvbG9yOnt2YWxUeXBlOiJjb2xvciIsYXJyYXlPazohMCxk Zmx0OiJncmV5In19LGZpbGw6e2NvbG9yOnt2YWxUeXBlOiJjb2xvciIsYXJyYXlPazohMCxk Zmx0OiJ3aGl0ZSJ9fSxmb250Omkoe30sbyh7YXJyYXlPazohMH0pKX0sY2VsbHM6e3ZhbHVl czp7dmFsVHlwZToiZGF0YV9hcnJheSIsZGZsdDpbXX0sZm9ybWF0Ont2YWxUeXBlOiJkYXRh X2FycmF5IixkZmx0OltdLGRlc2NyaXB0aW9uOmwoImNlbGwgdmFsdWUiKX0scHJlZml4Ont2 YWxUeXBlOiJzdHJpbmciLGFycmF5T2s6ITAsZGZsdDpudWxsfSxzdWZmaXg6e3ZhbFR5cGU6 InN0cmluZyIsYXJyYXlPazohMCxkZmx0Om51bGx9LGhlaWdodDp7dmFsVHlwZToibnVtYmVy IixkZmx0OjIwfSxhbGlnbjppKHt9LG4uYWxpZ24se2FycmF5T2s6ITB9KSxsaW5lOnt3aWR0 aDp7dmFsVHlwZToibnVtYmVyIixhcnJheU9rOiEwLGRmbHQ6MX0sY29sb3I6e3ZhbFR5cGU6 ImNvbG9yIixhcnJheU9rOiEwLGRmbHQ6ImdyZXkifX0sZmlsbDp7Y29sb3I6e3ZhbFR5cGU6 ImNvbG9yIixhcnJheU9rOiEwLGRmbHQ6IndoaXRlIn19LGZvbnQ6aSh7fSxvKHthcnJheU9r OiEwfSkpfX0sImNhbGMiLCJmcm9tLXJvb3QiKSkudHJhbnNmb3Jtcz12b2lkIDB9LHsiLi4v Li4vY29tcG9uZW50cy9hbm5vdGF0aW9ucy9hdHRyaWJ1dGVzIjozNDksIi4uLy4uL2xpYi9l eHRlbmQiOjQ5MywiLi4vLi4vcGxvdF9hcGkvZWRpdF90eXBlcyI6NTM2LCIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4vYXhpc19mb3JtYXRfYXR0cmlidXRlcyI6NTU3LCIuLi8uLi9wbG90cy9k b21haW4iOjU4NCwiLi4vLi4vcGxvdHMvZm9udF9hdHRyaWJ1dGVzIjo1ODV9XSwxMDY3Oltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2dldF9k YXRhIikuZ2V0TW9kdWxlQ2FsY0RhdGEsaT10KCIuL3Bsb3QiKTtyLm5hbWU9InRhYmxlIixy LnBsb3Q9ZnVuY3Rpb24odCl7dmFyIGU9bih0LmNhbGNkYXRhLCJ0YWJsZSIpWzBdO2UubGVu Z3RoJiZpKHQsZSl9LHIuY2xlYW49ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9bi5faGFzJiZu Ll9oYXMoInRhYmxlIiksYT1lLl9oYXMmJmUuX2hhcygidGFibGUiKTtpJiYhYSYmbi5fcGFw ZXJkaXYuc2VsZWN0QWxsKCIudGFibGUiKS5yZW1vdmUoKX19LHsiLi4vLi4vcGxvdHMvZ2V0 X2RhdGEiOjU5MywiLi9wbG90IjoxMDc0fV0sMTA2ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0Ijt2YXIgbj10KCIuLi8uLi9saWIvZ3VwIikud3JhcDtlLmV4cG9ydHM9ZnVuY3Rp b24oKXtyZXR1cm4gbih7fSl9fSx7Ii4uLy4uL2xpYi9ndXAiOjUwMH1dLDEwNjk6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtjZWxsUGFkOjgsY29sdW1uRXh0 ZW50T2Zmc2V0OjEwLGNvbHVtblRpdGxlT2Zmc2V0OjI4LGVtcHR5SGVhZGVySGVpZ2h0OjE2 LGxhdGV4Q2hlY2s6L15cJC4qXCQkLyxnb2xkZW5SYXRpbzoxLjYxOCxsaW5lQnJlYWtlcjoi PGJyPiIsbWF4RGltZW5zaW9uQ291bnQ6NjAsb3ZlcmRyYWc6NDUscmVsZWFzZVRyYW5zaXRp b25EdXJhdGlvbjoxMjAscmVsZWFzZVRyYW5zaXRpb25FYXNlOiJjdWJpYy1vdXQiLHNjcm9s bGJhckNhcHR1cmVXaWR0aDoxOCxzY3JvbGxiYXJIaWRlRGVsYXk6MWUzLHNjcm9sbGJhckhp ZGVEdXJhdGlvbjoxZTMsc2Nyb2xsYmFyT2Zmc2V0OjUsc2Nyb2xsYmFyV2lkdGg6OCx0cmFu c2l0aW9uRHVyYXRpb246MTAwLHRyYW5zaXRpb25FYXNlOiJjdWJpYy1vdXQiLHVwbGlmdDo1 LHdyYXBTcGFjZXI6IiAiLHdyYXBTcGxpdENoYXJhY3RlcjoiICIsY246e3RhYmxlOiJ0YWJs ZSIsdGFibGVDb250cm9sVmlldzoidGFibGUtY29udHJvbC12aWV3IixzY3JvbGxCYWNrZ3Jv dW5kOiJzY3JvbGwtYmFja2dyb3VuZCIseUNvbHVtbjoieS1jb2x1bW4iLGNvbHVtbkJsb2Nr OiJjb2x1bW4tYmxvY2siLHNjcm9sbEFyZWFDbGlwOiJzY3JvbGwtYXJlYS1jbGlwIixzY3Jv bGxBcmVhQ2xpcFJlY3Q6InNjcm9sbC1hcmVhLWNsaXAtcmVjdCIsY29sdW1uQm91bmRhcnk6 ImNvbHVtbi1ib3VuZGFyeSIsY29sdW1uQm91bmRhcnlDbGlwcGF0aDoiY29sdW1uLWJvdW5k YXJ5LWNsaXBwYXRoIixjb2x1bW5Cb3VuZGFyeVJlY3Q6ImNvbHVtbi1ib3VuZGFyeS1yZWN0 Iixjb2x1bW5DZWxsczoiY29sdW1uLWNlbGxzIixjb2x1bW5DZWxsOiJjb2x1bW4tY2VsbCIs Y2VsbFJlY3Q6ImNlbGwtcmVjdCIsY2VsbFRleHQ6ImNlbGwtdGV4dCIsY2VsbFRleHRIb2xk ZXI6ImNlbGwtdGV4dC1ob2xkZXIiLHNjcm9sbGJhcktpdDoic2Nyb2xsYmFyLWtpdCIsc2Ny b2xsYmFyOiJzY3JvbGxiYXIiLHNjcm9sbGJhclNsaWRlcjoic2Nyb2xsYmFyLXNsaWRlciIs c2Nyb2xsYmFyR2x5cGg6InNjcm9sbGJhci1nbHlwaCIsc2Nyb2xsYmFyQ2FwdHVyZVpvbmU6 InNjcm9sbGJhci1jYXB0dXJlLXpvbmUifX19LHt9XSwxMDcwOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vY29uc3RhbnRzIiksaT10KCIuLi8uLi9saWIvZXh0 ZW5kIikuZXh0ZW5kRmxhdCxhPXQoImZhc3QtaXNudW1lcmljIik7ZnVuY3Rpb24gbyh0KXtp ZihBcnJheS5pc0FycmF5KHQpKXtmb3IodmFyIGU9MCxyPTA7cjx0Lmxlbmd0aDtyKyspZT1N YXRoLm1heChlLG8odFtyXSkpO3JldHVybiBlfXJldHVybiB0fWZ1bmN0aW9uIHModCxlKXty ZXR1cm4gdCtlfWZ1bmN0aW9uIGwodCl7dmFyIGUscj10LnNsaWNlKCksbj0xLzAsaT0wO2Zv cihlPTA7ZTxyLmxlbmd0aDtlKyspQXJyYXkuaXNBcnJheShyW2VdKXx8KHJbZV09W3JbZV1d KSxuPU1hdGgubWluKG4scltlXS5sZW5ndGgpLGk9TWF0aC5tYXgoaSxyW2VdLmxlbmd0aCk7 aWYobiE9PWkpZm9yKGU9MDtlPHIubGVuZ3RoO2UrKyl7dmFyIGE9aS1yW2VdLmxlbmd0aDth JiYocltlXT1yW2VdLmNvbmNhdChjKGEpKSl9cmV0dXJuIHJ9ZnVuY3Rpb24gYyh0KXtmb3Io dmFyIGU9bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKWVbcl09IiI7cmV0dXJuIGV9ZnVuY3Rp b24gdSh0KXtyZXR1cm4gdC5jYWxjZGF0YS5jb2x1bW5zLnJlZHVjZSgoZnVuY3Rpb24oZSxy KXtyZXR1cm4gci54SW5kZXg8dC54SW5kZXg/ZStyLmNvbHVtbldpZHRoOmV9KSwwKX1mdW5j dGlvbiBmKHQsZSl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLm1hcCgoZnVuY3Rpb24ocil7cmV0 dXJuIGkoe30sdFtyXSx7YXV4aWxpYXJ5QmxvY2tzOmV9KX0pKX1mdW5jdGlvbiBoKHQsZSl7 Zm9yKHZhciByLG49e30saT0wLGE9MCxvPXtmaXJzdFJvd0luZGV4Om51bGwsbGFzdFJvd0lu ZGV4Om51bGwscm93czpbXX0scz0wLGw9MCxjPTA7Yzx0Lmxlbmd0aDtjKyspcj10W2NdLG8u cm93cy5wdXNoKHtyb3dJbmRleDpjLHJvd0hlaWdodDpyfSksKChhKz1yKT49ZXx8Yz09PXQu bGVuZ3RoLTEpJiYobltpXT1vLG8ua2V5PWwrKyxvLmZpcnN0Um93SW5kZXg9cyxvLmxhc3RS b3dJbmRleD1jLG89e2ZpcnN0Um93SW5kZXg6bnVsbCxsYXN0Um93SW5kZXg6bnVsbCxyb3dz OltdfSxpKz1hLHM9YysxLGE9MCk7cmV0dXJuIG59ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7 dmFyIHI9bChlLmNlbGxzLnZhbHVlcykscD1mdW5jdGlvbih0KXtyZXR1cm4gdC5zbGljZShl LmhlYWRlci52YWx1ZXMubGVuZ3RoLHQubGVuZ3RoKX0sZD1sKGUuaGVhZGVyLnZhbHVlcyk7 ZC5sZW5ndGgmJiFkWzBdLmxlbmd0aCYmKGRbMF09WyIiXSxkPWwoZCkpO3ZhciBtPWQuY29u Y2F0KHAocikubWFwKChmdW5jdGlvbigpe3JldHVybiBjKChkWzBdfHxbIiJdKS5sZW5ndGgp fSkpKSxnPWUuZG9tYWluLHY9TWF0aC5mbG9vcih0Ll9mdWxsTGF5b3V0Ll9zaXplLncqKGcu eFsxXS1nLnhbMF0pKSx5PU1hdGguZmxvb3IodC5fZnVsbExheW91dC5fc2l6ZS5oKihnLnlb MV0tZy55WzBdKSkseD1lLmhlYWRlci52YWx1ZXMubGVuZ3RoP21bMF0ubWFwKChmdW5jdGlv bigpe3JldHVybiBlLmhlYWRlci5oZWlnaHR9KSk6W24uZW1wdHlIZWFkZXJIZWlnaHRdLGI9 ci5sZW5ndGg/clswXS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuY2VsbHMuaGVpZ2h0fSkp OltdLF89eC5yZWR1Y2UocywwKSx3PWgoYix5LV8rbi51cGxpZnQpLFQ9ZihoKHgsXyksW10p LGs9Zih3LFQpLEE9e30sTT1lLl9mdWxsSW5wdXQuY29sdW1ub3JkZXIuY29uY2F0KHAoci5t YXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSkpKSxTPW0ubWFwKChmdW5jdGlvbih0LHIp e3ZhciBuPUFycmF5LmlzQXJyYXkoZS5jb2x1bW53aWR0aCk/ZS5jb2x1bW53aWR0aFtNYXRo Lm1pbihyLGUuY29sdW1ud2lkdGgubGVuZ3RoLTEpXTplLmNvbHVtbndpZHRoO3JldHVybiBh KG4pP051bWJlcihuKToxfSkpLEU9Uy5yZWR1Y2UocywwKTtTPVMubWFwKChmdW5jdGlvbih0 KXtyZXR1cm4gdC9FKnZ9KSk7dmFyIEw9TWF0aC5tYXgobyhlLmhlYWRlci5saW5lLndpZHRo KSxvKGUuY2VsbHMubGluZS53aWR0aCkpLEM9e2tleTplLnVpZCt0Ll9jb250ZXh0LnN0YXRp Y1Bsb3QsdHJhbnNsYXRlWDpnLnhbMF0qdC5fZnVsbExheW91dC5fc2l6ZS53LHRyYW5zbGF0 ZVk6dC5fZnVsbExheW91dC5fc2l6ZS5oKigxLWcueVsxXSksc2l6ZTp0Ll9mdWxsTGF5b3V0 Ll9zaXplLHdpZHRoOnYsbWF4TGluZVdpZHRoOkwsaGVpZ2h0OnksY29sdW1uT3JkZXI6TSxn cm91cEhlaWdodDp5LHJvd0Jsb2NrczprLGhlYWRlclJvd0Jsb2NrczpULHNjcm9sbFk6MCxj ZWxsczppKHt9LGUuY2VsbHMse3ZhbHVlczpyfSksaGVhZGVyQ2VsbHM6aSh7fSxlLmhlYWRl cix7dmFsdWVzOm19KSxnZENvbHVtbnM6bS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0WzBd fSkpLGdkQ29sdW1uc09yaWdpbmFsT3JkZXI6bS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0 WzBdfSkpLHByZXZQYWdlczpbMCwwXSxzY3JvbGxiYXJTdGF0ZTp7c2Nyb2xsYmFyU2Nyb2xs SW5Qcm9ncmVzczohMX0sY29sdW1uczptLm1hcCgoZnVuY3Rpb24odCxlKXt2YXIgcj1BW3Rd O3JldHVybiBBW3RdPShyfHwwKSsxLHtrZXk6dCsiX18iK0FbdF0sbGFiZWw6dCxzcGVjSW5k ZXg6ZSx4SW5kZXg6TVtlXSx4U2NhbGU6dSx4OnZvaWQgMCxjYWxjZGF0YTp2b2lkIDAsY29s dW1uV2lkdGg6U1tlXX19KSl9O3JldHVybiBDLmNvbHVtbnMuZm9yRWFjaCgoZnVuY3Rpb24o dCl7dC5jYWxjZGF0YT1DLHQueD11KHQpfSkpLEN9fSx7Ii4uLy4uL2xpYi9leHRlbmQiOjQ5 MywiLi9jb25zdGFudHMiOjEwNjksImZhc3QtaXNudW1lcmljIjoxOTB9XSwxMDcxOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL2xpYi9leHRlbmQiKS5l eHRlbmRGbGF0O3Iuc3BsaXRUb1BhbmVscz1mdW5jdGlvbih0KXt2YXIgZT1bMCwwXSxyPW4o e30sdCx7a2V5OiJoZWFkZXIiLHR5cGU6ImhlYWRlciIscGFnZTowLHByZXZQYWdlczplLGN1 cnJlbnRSZXBhaW50OltudWxsLG51bGxdLGRyYWdIYW5kbGU6ITAsdmFsdWVzOnQuY2FsY2Rh dGEuaGVhZGVyQ2VsbHMudmFsdWVzW3Quc3BlY0luZGV4XSxyb3dCbG9ja3M6dC5jYWxjZGF0 YS5oZWFkZXJSb3dCbG9ja3MsY2FsY2RhdGE6bih7fSx0LmNhbGNkYXRhLHtjZWxsczp0LmNh bGNkYXRhLmhlYWRlckNlbGxzfSl9KTtyZXR1cm5bbih7fSx0LHtrZXk6ImNlbGxzMSIsdHlw ZToiY2VsbHMiLHBhZ2U6MCxwcmV2UGFnZXM6ZSxjdXJyZW50UmVwYWludDpbbnVsbCxudWxs XSxkcmFnSGFuZGxlOiExLHZhbHVlczp0LmNhbGNkYXRhLmNlbGxzLnZhbHVlc1t0LnNwZWNJ bmRleF0scm93QmxvY2tzOnQuY2FsY2RhdGEucm93QmxvY2tzfSksbih7fSx0LHtrZXk6ImNl bGxzMiIsdHlwZToiY2VsbHMiLHBhZ2U6MSxwcmV2UGFnZXM6ZSxjdXJyZW50UmVwYWludDpb bnVsbCxudWxsXSxkcmFnSGFuZGxlOiExLHZhbHVlczp0LmNhbGNkYXRhLmNlbGxzLnZhbHVl c1t0LnNwZWNJbmRleF0scm93QmxvY2tzOnQuY2FsY2RhdGEucm93QmxvY2tzfSkscl19LHIu c3BsaXRUb0NlbGxzPWZ1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe3ZhciBlPXQucm93 QmxvY2tzW3QucGFnZV0scj1lP2Uucm93c1swXS5yb3dJbmRleDowLG49ZT9yK2Uucm93cy5s ZW5ndGg6MDtyZXR1cm5bcixuXX0odCk7cmV0dXJuKHQudmFsdWVzfHxbXSkuc2xpY2UoZVsw XSxlWzFdKS5tYXAoKGZ1bmN0aW9uKHIsbil7cmV0dXJue2tleVdpdGhpbkJsb2NrOm4rKCJz dHJpbmciPT10eXBlb2YgciYmci5tYXRjaCgvWzwkJj4gXS8pPyJfa2V5YnVzdGVyXyIrTWF0 aC5yYW5kb20oKToiIiksa2V5OmVbMF0rbixjb2x1bW46dCxjYWxjZGF0YTp0LmNhbGNkYXRh LHBhZ2U6dC5wYWdlLHJvd0Jsb2Nrczp0LnJvd0Jsb2Nrcyx2YWx1ZTpyfX0pKX19LHsiLi4v Li4vbGliL2V4dGVuZCI6NDkzfV0sMTA3MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4vYXR0cmlidXRlcyIpLGE9dCgiLi4vLi4v cGxvdHMvZG9tYWluIikuZGVmYXVsdHM7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG8pe2Z1 bmN0aW9uIHMocixhKXtyZXR1cm4gbi5jb2VyY2UodCxlLGkscixhKX1hKGUsbyxzKSxzKCJj b2x1bW53aWR0aCIpLHMoImhlYWRlci52YWx1ZXMiKSxzKCJoZWFkZXIuZm9ybWF0Iikscygi aGVhZGVyLmFsaWduIikscygiaGVhZGVyLnByZWZpeCIpLHMoImhlYWRlci5zdWZmaXgiKSxz KCJoZWFkZXIuaGVpZ2h0IikscygiaGVhZGVyLmxpbmUud2lkdGgiKSxzKCJoZWFkZXIubGlu ZS5jb2xvciIpLHMoImhlYWRlci5maWxsLmNvbG9yIiksbi5jb2VyY2VGb250KHMsImhlYWRl ci5mb250IixuLmV4dGVuZEZsYXQoe30sby5mb250KSksZnVuY3Rpb24odCxlKXtmb3IodmFy IHI9dC5jb2x1bW5vcmRlcnx8W10sbj10LmhlYWRlci52YWx1ZXMubGVuZ3RoLGk9ci5zbGlj ZSgwLG4pLGE9aS5zbGljZSgpLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pKSxv PWkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gYS5pbmRleE9mKHQpfSkpLHM9by5sZW5ndGg7 czxuO3MrKylvLnB1c2gocyk7ZSgiY29sdW1ub3JkZXIiLG8pfShlLHMpLHMoImNlbGxzLnZh bHVlcyIpLHMoImNlbGxzLmZvcm1hdCIpLHMoImNlbGxzLmFsaWduIikscygiY2VsbHMucHJl Zml4IikscygiY2VsbHMuc3VmZml4IikscygiY2VsbHMuaGVpZ2h0IikscygiY2VsbHMubGlu ZS53aWR0aCIpLHMoImNlbGxzLmxpbmUuY29sb3IiKSxzKCJjZWxscy5maWxsLmNvbG9yIiks bi5jb2VyY2VGb250KHMsImNlbGxzLmZvbnQiLG4uZXh0ZW5kRmxhdCh7fSxvLmZvbnQpKSxl Ll9sZW5ndGg9bnVsbH19LHsiLi4vLi4vbGliIjo1MDMsIi4uLy4uL3Bsb3RzL2RvbWFpbiI6 NTg0LCIuL2F0dHJpYnV0ZXMiOjEwNjZ9XSwxMDczOltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO2UuZXhwb3J0cz17YXR0cmlidXRlczp0KCIuL2F0dHJpYnV0ZXMiKSxzdXBwbHlE ZWZhdWx0czp0KCIuL2RlZmF1bHRzIiksY2FsYzp0KCIuL2NhbGMiKSxwbG90OnQoIi4vcGxv dCIpLG1vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJ0YWJsZSIsYmFzZVBsb3RNb2R1bGU6dCgi Li9iYXNlX3Bsb3QiKSxjYXRlZ29yaWVzOlsibm9PcGFjaXR5Il0sbWV0YTp7fX19LHsiLi9h dHRyaWJ1dGVzIjoxMDY2LCIuL2Jhc2VfcGxvdCI6MTA2NywiLi9jYWxjIjoxMDY4LCIuL2Rl ZmF1bHRzIjoxMDcyLCIuL3Bsb3QiOjEwNzR9XSwxMDc0OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoIi4vY29uc3RhbnRzIiksaT10KCJAcGxvdGx5L2QzIiksYT10 KCIuLi8uLi9saWIiKS5udW1iZXJGb3JtYXQsbz10KCIuLi8uLi9saWIvZ3VwIikscz10KCIu Li8uLi9jb21wb25lbnRzL2RyYXdpbmciKSxsPXQoIi4uLy4uL2xpYi9zdmdfdGV4dF91dGls cyIpLGM9dCgiLi4vLi4vbGliIikucmFpc2VUb1RvcCx1PXQoIi4uLy4uL2xpYiIpLnN0clRy YW5zbGF0ZSxmPXQoIi4uLy4uL2xpYiIpLmNhbmNlbFRyYW5zaXRpb24saD10KCIuL2RhdGFf cHJlcGFyYXRpb25faGVscGVyIikscD10KCIuL2RhdGFfc3BsaXRfaGVscGVycyIpLGQ9dCgi Li4vLi4vY29tcG9uZW50cy9jb2xvciIpO2Z1bmN0aW9uIG0odCl7cmV0dXJuIE1hdGguY2Vp bCh0LmNhbGNkYXRhLm1heExpbmVXaWR0aC8yKX1mdW5jdGlvbiBnKHQsZSl7cmV0dXJuImNs aXAiK3QuX2Z1bGxMYXlvdXQuX3VpZCsiX3Njcm9sbEFyZWFCb3R0b21DbGlwXyIrZS5rZXl9 ZnVuY3Rpb24gdih0LGUpe3JldHVybiJjbGlwIit0Ll9mdWxsTGF5b3V0Ll91aWQrIl9jb2x1 bW5Cb3VuZGFyeUNsaXBwYXRoXyIrZS5jYWxjZGF0YS5rZXkrIl8iK2Uuc3BlY0luZGV4fWZ1 bmN0aW9uIHkodCl7cmV0dXJuW10uY29uY2F0LmFwcGx5KFtdLHQubWFwKChmdW5jdGlvbih0 KXtyZXR1cm4gdH0pKSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5fX2RhdGFfX30pKX1m dW5jdGlvbiB4KHQsZSxyKXt2YXIgYT10LnNlbGVjdEFsbCgiLiIrbi5jbi5zY3JvbGxiYXJL aXQpLmRhdGEoby5yZXBlYXQsby5rZXlGdW4pO2EuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFz c2VkKG4uY24uc2Nyb2xsYmFyS2l0LCEwKS5zdHlsZSgic2hhcGUtcmVuZGVyaW5nIiwiZ2Vv bWV0cmljUHJlY2lzaW9uIiksYS5lYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LnNjcm9sbGJh clN0YXRlO2UudG90YWxIZWlnaHQ9ZnVuY3Rpb24odCl7dmFyIGU9dC5yb3dCbG9ja3M7cmV0 dXJuIEQoZSxlLmxlbmd0aC0xKSsoZS5sZW5ndGg/UihlW2UubGVuZ3RoLTFdLDEvMCk6MSl9 KHQpLGUuc2Nyb2xsYWJsZUFyZWFIZWlnaHQ9dC5ncm91cEhlaWdodC1TKHQpLGUuY3VycmVu dGx5VmlzaWJsZUhlaWdodD1NYXRoLm1pbihlLnRvdGFsSGVpZ2h0LGUuc2Nyb2xsYWJsZUFy ZWFIZWlnaHQpLGUucmF0aW89ZS5jdXJyZW50bHlWaXNpYmxlSGVpZ2h0L2UudG90YWxIZWln aHQsZS5iYXJMZW5ndGg9TWF0aC5tYXgoZS5yYXRpbyplLmN1cnJlbnRseVZpc2libGVIZWln aHQsbi5nb2xkZW5SYXRpbypuLnNjcm9sbGJhcldpZHRoKSxlLmJhcldpZ2dsZVJvb209ZS5j dXJyZW50bHlWaXNpYmxlSGVpZ2h0LWUuYmFyTGVuZ3RoLGUud2lnZ2xlUm9vbT1NYXRoLm1h eCgwLGUudG90YWxIZWlnaHQtZS5zY3JvbGxhYmxlQXJlYUhlaWdodCksZS50b3BZPTA9PT1l LmJhcldpZ2dsZVJvb20/MDp0LnNjcm9sbFkvZS53aWdnbGVSb29tKmUuYmFyV2lnZ2xlUm9v bSxlLmJvdHRvbVk9ZS50b3BZK2UuYmFyTGVuZ3RoLGUuZHJhZ011bHRpcGxpZXI9ZS53aWdn bGVSb29tL2UuYmFyV2lnZ2xlUm9vbX0pKS5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0 KXt2YXIgZT10LndpZHRoK24uc2Nyb2xsYmFyV2lkdGgvMituLnNjcm9sbGJhck9mZnNldDty ZXR1cm4gdShlLFModCkpfSkpO3ZhciBzPWEuc2VsZWN0QWxsKCIuIituLmNuLnNjcm9sbGJh cikuZGF0YShvLnJlcGVhdCxvLmtleUZ1bik7cy5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNz ZWQobi5jbi5zY3JvbGxiYXIsITApO3ZhciBsPXMuc2VsZWN0QWxsKCIuIituLmNuLnNjcm9s bGJhclNsaWRlcikuZGF0YShvLnJlcGVhdCxvLmtleUZ1bik7bC5lbnRlcigpLmFwcGVuZCgi ZyIpLmNsYXNzZWQobi5jbi5zY3JvbGxiYXJTbGlkZXIsITApLGwuYXR0cigidHJhbnNmb3Jt IiwoZnVuY3Rpb24odCl7cmV0dXJuIHUoMCx0LnNjcm9sbGJhclN0YXRlLnRvcFl8fDApfSkp O3ZhciBjPWwuc2VsZWN0QWxsKCIuIituLmNuLnNjcm9sbGJhckdseXBoKS5kYXRhKG8ucmVw ZWF0LG8ua2V5RnVuKTtjLmVudGVyKCkuYXBwZW5kKCJsaW5lIikuY2xhc3NlZChuLmNuLnNj cm9sbGJhckdseXBoLCEwKS5hdHRyKCJzdHJva2UiLCJibGFjayIpLmF0dHIoInN0cm9rZS13 aWR0aCIsbi5zY3JvbGxiYXJXaWR0aCkuYXR0cigic3Ryb2tlLWxpbmVjYXAiLCJyb3VuZCIp LmF0dHIoInkxIixuLnNjcm9sbGJhcldpZHRoLzIpLGMuYXR0cigieTIiLChmdW5jdGlvbih0 KXtyZXR1cm4gdC5zY3JvbGxiYXJTdGF0ZS5iYXJMZW5ndGgtbi5zY3JvbGxiYXJXaWR0aC8y fSkpLmF0dHIoInN0cm9rZS1vcGFjaXR5IiwoZnVuY3Rpb24odCl7cmV0dXJuIHQuY29sdW1u RHJhZ0luUHJvZ3Jlc3N8fCF0LnNjcm9sbGJhclN0YXRlLmJhcldpZ2dsZVJvb218fHI/MDou NH0pKSxjLnRyYW5zaXRpb24oKS5kZWxheSgwKS5kdXJhdGlvbigwKSxjLnRyYW5zaXRpb24o KS5kZWxheShuLnNjcm9sbGJhckhpZGVEZWxheSkuZHVyYXRpb24obi5zY3JvbGxiYXJIaWRl RHVyYXRpb24pLmF0dHIoInN0cm9rZS1vcGFjaXR5IiwwKTt2YXIgZj1zLnNlbGVjdEFsbCgi LiIrbi5jbi5zY3JvbGxiYXJDYXB0dXJlWm9uZSkuZGF0YShvLnJlcGVhdCxvLmtleUZ1bik7 Zi5lbnRlcigpLmFwcGVuZCgibGluZSIpLmNsYXNzZWQobi5jbi5zY3JvbGxiYXJDYXB0dXJl Wm9uZSwhMCkuYXR0cigic3Ryb2tlIiwid2hpdGUiKS5hdHRyKCJzdHJva2Utb3BhY2l0eSIs LjAxKS5hdHRyKCJzdHJva2Utd2lkdGgiLG4uc2Nyb2xsYmFyQ2FwdHVyZVdpZHRoKS5hdHRy KCJzdHJva2UtbGluZWNhcCIsImJ1dHQiKS5hdHRyKCJ5MSIsMCkub24oIm1vdXNlZG93biIs KGZ1bmN0aW9uKHIpe3ZhciBuPWkuZXZlbnQueSxhPXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRS ZWN0KCksbz1yLnNjcm9sbGJhclN0YXRlLHM9bi1hLnRvcCxsPWkuc2NhbGUubGluZWFyKCku ZG9tYWluKFswLG8uc2Nyb2xsYWJsZUFyZWFIZWlnaHRdKS5yYW5nZShbMCxvLnRvdGFsSGVp Z2h0XSkuY2xhbXAoITApO28udG9wWTw9cyYmczw9by5ib3R0b21ZfHxMKGUsdCxudWxsLGwo cy1vLmJhckxlbmd0aC8yKSkocil9KSkuY2FsbChpLmJlaGF2aW9yLmRyYWcoKS5vcmlnaW4o KGZ1bmN0aW9uKHQpe3JldHVybiBpLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpLHQuc2Nyb2xs YmFyU3RhdGUuc2Nyb2xsYmFyU2Nyb2xsSW5Qcm9ncmVzcz0hMCx0fSkpLm9uKCJkcmFnIixM KGUsdCkpLm9uKCJkcmFnZW5kIiwoZnVuY3Rpb24oKXt9KSkpLGYuYXR0cigieTIiLChmdW5j dGlvbih0KXtyZXR1cm4gdC5zY3JvbGxiYXJTdGF0ZS5zY3JvbGxhYmxlQXJlYUhlaWdodH0p KSxlLl9jb250ZXh0LnN0YXRpY1Bsb3QmJihjLnJlbW92ZSgpLGYucmVtb3ZlKCkpfWZ1bmN0 aW9uIGIodCxlLHIsYSl7dmFyIGw9ZnVuY3Rpb24odCl7dmFyIGU9dC5zZWxlY3RBbGwoIi4i K24uY24uY29sdW1uQ2VsbCkuZGF0YShwLnNwbGl0VG9DZWxscywoZnVuY3Rpb24odCl7cmV0 dXJuIHQua2V5V2l0aGluQmxvY2t9KSk7cmV0dXJuIGUuZW50ZXIoKS5hcHBlbmQoImciKS5j bGFzc2VkKG4uY24uY29sdW1uQ2VsbCwhMCksZS5leGl0KCkucmVtb3ZlKCksZX0oZnVuY3Rp b24odCl7dmFyIGU9dC5zZWxlY3RBbGwoIi4iK24uY24uY29sdW1uQ2VsbHMpLmRhdGEoby5y ZXBlYXQsby5rZXlGdW4pO3JldHVybiBlLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChu LmNuLmNvbHVtbkNlbGxzLCEwKSxlLmV4aXQoKS5yZW1vdmUoKSxlfShyKSk7IWZ1bmN0aW9u KHQpe3QuZWFjaCgoZnVuY3Rpb24odCxlKXt2YXIgcj10LmNhbGNkYXRhLmNlbGxzLmZvbnQs bj10LmNvbHVtbi5zcGVjSW5kZXgsaT17c2l6ZTpUKHIuc2l6ZSxuLGUpLGNvbG9yOlQoci5j b2xvcixuLGUpLGZhbWlseTpUKHIuZmFtaWx5LG4sZSl9O3Qucm93TnVtYmVyPXQua2V5LHQu YWxpZ249VCh0LmNhbGNkYXRhLmNlbGxzLmFsaWduLG4sZSksdC5jZWxsQm9yZGVyV2lkdGg9 VCh0LmNhbGNkYXRhLmNlbGxzLmxpbmUud2lkdGgsbixlKSx0LmZvbnQ9aX0pKX0obCksZnVu Y3Rpb24odCl7dC5hdHRyKCJ3aWR0aCIsKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNvbHVtbi5j b2x1bW5XaWR0aH0pKS5hdHRyKCJzdHJva2Utd2lkdGgiLChmdW5jdGlvbih0KXtyZXR1cm4g dC5jZWxsQm9yZGVyV2lkdGh9KSkuZWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9aS5zZWxlY3Qo dGhpcyk7ZC5zdHJva2UoZSxUKHQuY2FsY2RhdGEuY2VsbHMubGluZS5jb2xvcix0LmNvbHVt bi5zcGVjSW5kZXgsdC5yb3dOdW1iZXIpKSxkLmZpbGwoZSxUKHQuY2FsY2RhdGEuY2VsbHMu ZmlsbC5jb2xvcix0LmNvbHVtbi5zcGVjSW5kZXgsdC5yb3dOdW1iZXIpKX0pKX0oZnVuY3Rp b24odCl7dmFyIGU9dC5zZWxlY3RBbGwoIi4iK24uY24uY2VsbFJlY3QpLmRhdGEoby5yZXBl YXQsKGZ1bmN0aW9uKHQpe3JldHVybiB0LmtleVdpdGhpbkJsb2NrfSkpO3JldHVybiBlLmVu dGVyKCkuYXBwZW5kKCJyZWN0IikuY2xhc3NlZChuLmNuLmNlbGxSZWN0LCEwKSxlfShsKSk7 dmFyIGM9ZnVuY3Rpb24odCl7dmFyIGU9dC5zZWxlY3RBbGwoIi4iK24uY24uY2VsbFRleHQp LmRhdGEoby5yZXBlYXQsKGZ1bmN0aW9uKHQpe3JldHVybiB0LmtleVdpdGhpbkJsb2NrfSkp O3JldHVybiBlLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuY2xhc3NlZChuLmNuLmNlbGxUZXh0 LCEwKS5zdHlsZSgiY3Vyc29yIiwoZnVuY3Rpb24oKXtyZXR1cm4iYXV0byJ9KSkub24oIm1v dXNlZG93biIsKGZ1bmN0aW9uKCl7aS5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0pKSxlfShm dW5jdGlvbih0KXt2YXIgZT10LnNlbGVjdEFsbCgiLiIrbi5jbi5jZWxsVGV4dEhvbGRlciku ZGF0YShvLnJlcGVhdCwoZnVuY3Rpb24odCl7cmV0dXJuIHQua2V5V2l0aGluQmxvY2t9KSk7 cmV0dXJuIGUuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKG4uY24uY2VsbFRleHRIb2xk ZXIsITApLnN0eWxlKCJzaGFwZS1yZW5kZXJpbmciLCJnZW9tZXRyaWNQcmVjaXNpb24iKSxl fShsKSk7IWZ1bmN0aW9uKHQpe3QuZWFjaCgoZnVuY3Rpb24odCl7cy5mb250KGkuc2VsZWN0 KHRoaXMpLHQuZm9udCl9KSl9KGMpLF8oYyxlLGEsdCkseihsKX1mdW5jdGlvbiBfKHQsZSxy LG8pe3QudGV4dCgoZnVuY3Rpb24odCl7dmFyIGU9dC5jb2x1bW4uc3BlY0luZGV4LHI9dC5y b3dOdW1iZXIsaT10LnZhbHVlLG89InN0cmluZyI9PXR5cGVvZiBpLHM9byYmaS5tYXRjaCgv PGJyPi9pKSxsPSFvfHxzO3QubWF5SGF2ZU1hcmt1cD1vJiZpLm1hdGNoKC9bPCY+XS8pO3Zh ciBjLHU9InN0cmluZyI9PXR5cGVvZihjPWkpJiZjLm1hdGNoKG4ubGF0ZXhDaGVjayk7dC5s YXRleD11O3ZhciBmLGgscD11PyIiOlQodC5jYWxjZGF0YS5jZWxscy5wcmVmaXgsZSxyKXx8 IiIsZD11PyIiOlQodC5jYWxjZGF0YS5jZWxscy5zdWZmaXgsZSxyKXx8IiIsbT11P251bGw6 VCh0LmNhbGNkYXRhLmNlbGxzLmZvcm1hdCxlLHIpfHxudWxsLGc9cCsobT9hKG0pKHQudmFs dWUpOnQudmFsdWUpK2Q7aWYodC53cmFwcGluZ05lZWRlZD0hdC53cmFwcGVkJiYhbCYmIXUm JihmPXcoZykpLHQuY2VsbEhlaWdodE1heUluY3JlYXNlPXN8fHV8fHQubWF5SGF2ZU1hcmt1 cHx8KHZvaWQgMD09PWY/dyhnKTpmKSx0Lm5lZWRzQ29udmVydFRvVHNwYW5zPXQubWF5SGF2 ZU1hcmt1cHx8dC53cmFwcGluZ05lZWRlZHx8dC5sYXRleCx0LndyYXBwaW5nTmVlZGVkKXt2 YXIgdj0oIiAiPT09bi53cmFwU3BsaXRDaGFyYWN0ZXI/Zy5yZXBsYWNlKC88YSBocmVmPS9n aSwiPGFfaHJlZj0iKTpnKS5zcGxpdChuLndyYXBTcGxpdENoYXJhY3RlcikseT0iICI9PT1u LndyYXBTcGxpdENoYXJhY3Rlcj92Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFj ZSgvPGFfaHJlZj0vZ2ksIjxhIGhyZWY9Iil9KSk6djt0LmZyYWdtZW50cz15Lm1hcCgoZnVu Y3Rpb24odCl7cmV0dXJue3RleHQ6dCx3aWR0aDpudWxsfX0pKSx0LmZyYWdtZW50cy5wdXNo KHtmcmFnbWVudDpuLndyYXBTcGFjZXIsd2lkdGg6bnVsbH0pLGg9eS5qb2luKG4ubGluZUJy ZWFrZXIpK24ubGluZUJyZWFrZXIrbi53cmFwU3BhY2VyfWVsc2UgZGVsZXRlIHQuZnJhZ21l bnRzLGg9ZztyZXR1cm4gaH0pKS5hdHRyKCJkeSIsKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5l ZWRzQ29udmVydFRvVHNwYW5zPzA6IjAuNzVlbSJ9KSkuZWFjaCgoZnVuY3Rpb24odCl7dmFy IGE9aS5zZWxlY3QodGhpcykscz10LndyYXBwaW5nTmVlZGVkP1A6STt0Lm5lZWRzQ29udmVy dFRvVHNwYW5zP2wuY29udmVydFRvVHNwYW5zKGEsbyxzKHIsdGhpcyxlLG8sdCkpOmkuc2Vs ZWN0KHRoaXMucGFyZW50Tm9kZSkuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7cmV0 dXJuIHUoTyh0KSxuLmNlbGxQYWQpfSkpLmF0dHIoInRleHQtYW5jaG9yIiwoZnVuY3Rpb24o dCl7cmV0dXJue2xlZnQ6InN0YXJ0IixjZW50ZXI6Im1pZGRsZSIscmlnaHQ6ImVuZCJ9W3Qu YWxpZ25dfSkpfSkpfWZ1bmN0aW9uIHcodCl7cmV0dXJuLTEhPT10LmluZGV4T2Yobi53cmFw U3BsaXRDaGFyYWN0ZXIpfWZ1bmN0aW9uIFQodCxlLHIpe2lmKEFycmF5LmlzQXJyYXkodCkp e3ZhciBuPXRbTWF0aC5taW4oZSx0Lmxlbmd0aC0xKV07cmV0dXJuIEFycmF5LmlzQXJyYXko bik/bltNYXRoLm1pbihyLG4ubGVuZ3RoLTEpXTpufXJldHVybiB0fWZ1bmN0aW9uIGsodCxl LHIpe3QudHJhbnNpdGlvbigpLmVhc2Uobi5yZWxlYXNlVHJhbnNpdGlvbkVhc2UpLmR1cmF0 aW9uKG4ucmVsZWFzZVRyYW5zaXRpb25EdXJhdGlvbikuYXR0cigidHJhbnNmb3JtIix1KGUu eCxyKSl9ZnVuY3Rpb24gQSh0KXtyZXR1cm4iY2VsbHMiPT09dC50eXBlfWZ1bmN0aW9uIE0o dCl7cmV0dXJuImhlYWRlciI9PT10LnR5cGV9ZnVuY3Rpb24gUyh0KXtyZXR1cm4odC5yb3dC bG9ja3MubGVuZ3RoP3Qucm93QmxvY2tzWzBdLmF1eGlsaWFyeUJsb2NrczpbXSkucmVkdWNl KChmdW5jdGlvbih0LGUpe3JldHVybiB0K1IoZSwxLzApfSksMCl9ZnVuY3Rpb24gRSh0LGUs cil7dmFyIG49eShlKVswXTtpZih2b2lkIDAhPT1uKXt2YXIgaT1uLnJvd0Jsb2NrcyxhPW4u Y2FsY2RhdGEsbz1EKGksaS5sZW5ndGgpLHM9bi5jYWxjZGF0YS5ncm91cEhlaWdodC1TKG4p LGw9YS5zY3JvbGxZPU1hdGgubWF4KDAsTWF0aC5taW4oby1zLGEuc2Nyb2xsWSkpLGM9ZnVu Y3Rpb24odCxlLHIpe2Zvcih2YXIgbj1bXSxpPTAsYT0wO2E8dC5sZW5ndGg7YSsrKXtmb3Io dmFyIG89dFthXSxzPW8ucm93cyxsPTAsYz0wO2M8cy5sZW5ndGg7YysrKWwrPXNbY10ucm93 SGVpZ2h0O28uYWxsUm93c0hlaWdodD1sO2U8aStsJiZlK3I+aSYmbi5wdXNoKGEpLGkrPWx9 cmV0dXJuIG59KGksbCxzKTsxPT09Yy5sZW5ndGgmJihjWzBdPT09aS5sZW5ndGgtMT9jLnVu c2hpZnQoY1swXS0xKTpjLnB1c2goY1swXSsxKSksY1swXSUyJiZjLnJldmVyc2UoKSxlLmVh Y2goKGZ1bmN0aW9uKHQsZSl7dC5wYWdlPWNbZV0sdC5zY3JvbGxZPWx9KSksZS5hdHRyKCJ0 cmFuc2Zvcm0iLChmdW5jdGlvbih0KXt2YXIgZT1EKHQucm93QmxvY2tzLHQucGFnZSktdC5z Y3JvbGxZO3JldHVybiB1KDAsZSl9KSksdCYmKEModCxyLGUsYyxuLnByZXZQYWdlcyxuLDAp LEModCxyLGUsYyxuLnByZXZQYWdlcyxuLDEpLHgocix0KSl9fWZ1bmN0aW9uIEwodCxlLHIs YSl7cmV0dXJuIGZ1bmN0aW9uKG8pe3ZhciBzPW8uY2FsY2RhdGE/by5jYWxjZGF0YTpvLGw9 ZS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBzLmtleT09PXQua2V5fSkpLGM9cnx8cy5z Y3JvbGxiYXJTdGF0ZS5kcmFnTXVsdGlwbGllcix1PXMuc2Nyb2xsWTtzLnNjcm9sbFk9dm9p ZCAwPT09YT9zLnNjcm9sbFkrYyppLmV2ZW50LmR5OmE7dmFyIGY9bC5zZWxlY3RBbGwoIi4i K24uY24ueUNvbHVtbikuc2VsZWN0QWxsKCIuIituLmNuLmNvbHVtbkJsb2NrKS5maWx0ZXIo QSk7cmV0dXJuIEUodCxmLGwpLHMuc2Nyb2xsWT09PXV9fWZ1bmN0aW9uIEModCxlLHIsbixp LGEsbyl7bltvXSE9PWlbb10mJihjbGVhclRpbWVvdXQoYS5jdXJyZW50UmVwYWludFtvXSks YS5jdXJyZW50UmVwYWludFtvXT1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3ZhciBhPXIuZmls dGVyKChmdW5jdGlvbih0LGUpe3JldHVybiBlPT09byYmbltlXSE9PWlbZV19KSk7Yih0LGUs YSxyKSxpW29dPW5bb119KSkpfWZ1bmN0aW9uIFAodCxlLHIsYSl7cmV0dXJuIGZ1bmN0aW9u KCl7dmFyIG89aS5zZWxlY3QoZS5wYXJlbnROb2RlKTtvLmVhY2goKGZ1bmN0aW9uKHQpe3Zh ciBlPXQuZnJhZ21lbnRzO28uc2VsZWN0QWxsKCJ0c3Bhbi5saW5lIikuZWFjaCgoZnVuY3Rp b24odCxyKXtlW3JdLndpZHRoPXRoaXMuZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCl9KSk7dmFy IHIsaSxhPWVbZS5sZW5ndGgtMV0ud2lkdGgscz1lLnNsaWNlKDAsLTEpLGw9W10sYz0wLHU9 dC5jb2x1bW4uY29sdW1uV2lkdGgtMipuLmNlbGxQYWQ7Zm9yKHQudmFsdWU9IiI7cy5sZW5n dGg7KWMrKGk9KHI9cy5zaGlmdCgpKS53aWR0aCthKT51JiYodC52YWx1ZSs9bC5qb2luKG4u d3JhcFNwYWNlcikrbi5saW5lQnJlYWtlcixsPVtdLGM9MCksbC5wdXNoKHIudGV4dCksYys9 aTtjJiYodC52YWx1ZSs9bC5qb2luKG4ud3JhcFNwYWNlcikpLHQud3JhcHBlZD0hMH0pKSxv LnNlbGVjdEFsbCgidHNwYW4ubGluZSIpLnJlbW92ZSgpLF8oby5zZWxlY3QoIi4iK24uY24u Y2VsbFRleHQpLHIsdCxhKSxpLnNlbGVjdChlLnBhcmVudE5vZGUucGFyZW50Tm9kZSkuY2Fs bCh6KX19ZnVuY3Rpb24gSSh0LGUscixhLG8pe3JldHVybiBmdW5jdGlvbigpe2lmKCFvLnNl dHRsZWRZKXt2YXIgcz1pLnNlbGVjdChlLnBhcmVudE5vZGUpLGw9QihvKSxjPW8ua2V5LWwu Zmlyc3RSb3dJbmRleCxmPWwucm93c1tjXS5yb3dIZWlnaHQsaD1vLmNlbGxIZWlnaHRNYXlJ bmNyZWFzZT9lLnBhcmVudE5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KzIq bi5jZWxsUGFkOmYscD1NYXRoLm1heChoLGYpO3AtbC5yb3dzW2NdLnJvd0hlaWdodCYmKGwu cm93c1tjXS5yb3dIZWlnaHQ9cCx0LnNlbGVjdEFsbCgiLiIrbi5jbi5jb2x1bW5DZWxsKS5j YWxsKHopLEUobnVsbCx0LmZpbHRlcihBKSwwKSx4KHIsYSwhMCkpLHMuYXR0cigidHJhbnNm b3JtIiwoZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhcmVudE5vZGUuZ2V0Qm91bmRpbmdDbGll bnRSZWN0KCksZT1pLnNlbGVjdCh0aGlzLnBhcmVudE5vZGUpLnNlbGVjdCgiLiIrbi5jbi5j ZWxsUmVjdCkubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9dGhpcy50cmFuc2Zv cm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpLGE9ZS50b3AtdC50b3ArKHI/ci5tYXRyaXguZjpu LmNlbGxQYWQpO3JldHVybiB1KE8obyxpLnNlbGVjdCh0aGlzLnBhcmVudE5vZGUpLnNlbGVj dCgiLiIrbi5jbi5jZWxsVGV4dEhvbGRlcikubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVj dCgpLndpZHRoKSxhKX0pKSxvLnNldHRsZWRZPSEwfX19ZnVuY3Rpb24gTyh0LGUpe3N3aXRj aCh0LmFsaWduKXtjYXNlImxlZnQiOnJldHVybiBuLmNlbGxQYWQ7Y2FzZSJyaWdodCI6cmV0 dXJuIHQuY29sdW1uLmNvbHVtbldpZHRoLShlfHwwKS1uLmNlbGxQYWQ7Y2FzZSJjZW50ZXIi OnJldHVybih0LmNvbHVtbi5jb2x1bW5XaWR0aC0oZXx8MCkpLzI7ZGVmYXVsdDpyZXR1cm4g bi5jZWxsUGFkfX1mdW5jdGlvbiB6KHQpe3QuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24o dCl7dmFyIGU9dC5yb3dCbG9ja3NbMF0uYXV4aWxpYXJ5QmxvY2tzLnJlZHVjZSgoZnVuY3Rp b24odCxlKXtyZXR1cm4gdCtSKGUsMS8wKX0pLDApLHI9UihCKHQpLHQua2V5KTtyZXR1cm4g dSgwLHIrZSl9KSkuc2VsZWN0QWxsKCIuIituLmNuLmNlbGxSZWN0KS5hdHRyKCJoZWlnaHQi LChmdW5jdGlvbih0KXtyZXR1cm4oZT1CKHQpLHI9dC5rZXksZS5yb3dzW3ItZS5maXJzdFJv d0luZGV4XSkucm93SGVpZ2h0O3ZhciBlLHJ9KSl9ZnVuY3Rpb24gRCh0LGUpe2Zvcih2YXIg cj0wLG49ZS0xO24+PTA7bi0tKXIrPUYodFtuXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gUih0LGUp e2Zvcih2YXIgcj0wLG49MDtuPHQucm93cy5sZW5ndGgmJnQucm93c1tuXS5yb3dJbmRleDxl O24rKylyKz10LnJvd3Nbbl0ucm93SGVpZ2h0O3JldHVybiByfWZ1bmN0aW9uIEYodCl7dmFy IGU9dC5hbGxSb3dzSGVpZ2h0O2lmKHZvaWQgMCE9PWUpcmV0dXJuIGU7Zm9yKHZhciByPTAs bj0wO248dC5yb3dzLmxlbmd0aDtuKyspcis9dC5yb3dzW25dLnJvd0hlaWdodDtyZXR1cm4g dC5hbGxSb3dzSGVpZ2h0PXIscn1mdW5jdGlvbiBCKHQpe3JldHVybiB0LnJvd0Jsb2Nrc1t0 LnBhZ2VdfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPSF0Ll9jb250ZXh0LnN0YXRp Y1Bsb3QsYT10Ll9mdWxsTGF5b3V0Ll9wYXBlci5zZWxlY3RBbGwoIi4iK24uY24udGFibGUp LmRhdGEoZS5tYXAoKGZ1bmN0aW9uKGUpe3ZhciByPW8udW53cmFwKGUpLnRyYWNlO3JldHVy biBoKHQscil9KSksby5rZXlGdW4pO2EuZXhpdCgpLnJlbW92ZSgpLGEuZW50ZXIoKS5hcHBl bmQoImciKS5jbGFzc2VkKG4uY24udGFibGUsITApLmF0dHIoIm92ZXJmbG93IiwidmlzaWJs ZSIpLnN0eWxlKCJib3gtc2l6aW5nIiwiY29udGVudC1ib3giKS5zdHlsZSgicG9zaXRpb24i LCJhYnNvbHV0ZSIpLnN0eWxlKCJsZWZ0IiwwKS5zdHlsZSgib3ZlcmZsb3ciLCJ2aXNpYmxl Iikuc3R5bGUoInNoYXBlLXJlbmRlcmluZyIsImNyaXNwRWRnZXMiKS5zdHlsZSgicG9pbnRl ci1ldmVudHMiLCJhbGwiKSxhLmF0dHIoIndpZHRoIiwoZnVuY3Rpb24odCl7cmV0dXJuIHQu d2lkdGgrdC5zaXplLmwrdC5zaXplLnJ9KSkuYXR0cigiaGVpZ2h0IiwoZnVuY3Rpb24odCl7 cmV0dXJuIHQuaGVpZ2h0K3Quc2l6ZS50K3Quc2l6ZS5ifSkpLmF0dHIoInRyYW5zZm9ybSIs KGZ1bmN0aW9uKHQpe3JldHVybiB1KHQudHJhbnNsYXRlWCx0LnRyYW5zbGF0ZVkpfSkpO3Zh ciBsPWEuc2VsZWN0QWxsKCIuIituLmNuLnRhYmxlQ29udHJvbFZpZXcpLmRhdGEoby5yZXBl YXQsby5rZXlGdW4pLGQ9bC5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQobi5jbi50YWJs ZUNvbnRyb2xWaWV3LCEwKS5zdHlsZSgiYm94LXNpemluZyIsImNvbnRlbnQtYm94Iik7aWYo cil7dmFyIF89Im9ud2hlZWwiaW4gZG9jdW1lbnQ/IndoZWVsIjoibW91c2V3aGVlbCI7ZC5v bigibW91c2Vtb3ZlIiwoZnVuY3Rpb24oZSl7bC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVy biBlPT09dH0pKS5jYWxsKHgsdCl9KSkub24oXywoZnVuY3Rpb24oZSl7aWYoIWUuc2Nyb2xs YmFyU3RhdGUud2hlZWxpbmcpe2Uuc2Nyb2xsYmFyU3RhdGUud2hlZWxpbmc9ITA7dmFyIHI9 ZS5zY3JvbGxZK2kuZXZlbnQuZGVsdGFZO0wodCxsLG51bGwscikoZSl8fChpLmV2ZW50LnN0 b3BQcm9wYWdhdGlvbigpLGkuZXZlbnQucHJldmVudERlZmF1bHQoKSksZS5zY3JvbGxiYXJT dGF0ZS53aGVlbGluZz0hMX19KSkuY2FsbCh4LHQsITApfWwuYXR0cigidHJhbnNmb3JtIiwo ZnVuY3Rpb24odCl7cmV0dXJuIHUodC5zaXplLmwsdC5zaXplLnQpfSkpO3ZhciB3PWwuc2Vs ZWN0QWxsKCIuIituLmNuLnNjcm9sbEJhY2tncm91bmQpLmRhdGEoby5yZXBlYXQsby5rZXlG dW4pO3cuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5jbGFzc2VkKG4uY24uc2Nyb2xsQmFja2dy b3VuZCwhMCkuYXR0cigiZmlsbCIsIm5vbmUiKSx3LmF0dHIoIndpZHRoIiwoZnVuY3Rpb24o dCl7cmV0dXJuIHQud2lkdGh9KSkuYXR0cigiaGVpZ2h0IiwoZnVuY3Rpb24odCl7cmV0dXJu IHQuaGVpZ2h0fSkpLGwuZWFjaCgoZnVuY3Rpb24oZSl7cy5zZXRDbGlwVXJsKGkuc2VsZWN0 KHRoaXMpLGcodCxlKSx0KX0pKTt2YXIgVD1sLnNlbGVjdEFsbCgiLiIrbi5jbi55Q29sdW1u KS5kYXRhKChmdW5jdGlvbih0KXtyZXR1cm4gdC5jb2x1bW5zfSksby5rZXlGdW4pO1QuZW50 ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKG4uY24ueUNvbHVtbiwhMCksVC5leGl0KCkucmVt b3ZlKCksVC5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4gdSh0LngsMCl9 KSksciYmVC5jYWxsKGkuYmVoYXZpb3IuZHJhZygpLm9yaWdpbigoZnVuY3Rpb24oZSl7cmV0 dXJuIGsoaS5zZWxlY3QodGhpcyksZSwtbi51cGxpZnQpLGModGhpcyksZS5jYWxjZGF0YS5j b2x1bW5EcmFnSW5Qcm9ncmVzcz0hMCx4KGwuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4g ZS5jYWxjZGF0YS5rZXk9PT10LmtleX0pKSx0KSxlfSkpLm9uKCJkcmFnIiwoZnVuY3Rpb24o dCl7dmFyIGU9aS5zZWxlY3QodGhpcykscj1mdW5jdGlvbihlKXtyZXR1cm4odD09PWU/aS5l dmVudC54OmUueCkrZS5jb2x1bW5XaWR0aC8yfTt0Lng9TWF0aC5tYXgoLW4ub3ZlcmRyYWcs TWF0aC5taW4odC5jYWxjZGF0YS53aWR0aCtuLm92ZXJkcmFnLXQuY29sdW1uV2lkdGgsaS5l dmVudC54KSkseShUKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNhbGNkYXRhLmtl eT09PXQuY2FsY2RhdGEua2V5fSkpLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIodCkt cihlKX0pKS5mb3JFYWNoKChmdW5jdGlvbihlLHIpe2UueEluZGV4PXIsZS54PXQ9PT1lP2Uu eDplLnhTY2FsZShlKX0pKSxULmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIHQhPT1lfSkp LnRyYW5zaXRpb24oKS5lYXNlKG4udHJhbnNpdGlvbkVhc2UpLmR1cmF0aW9uKG4udHJhbnNp dGlvbkR1cmF0aW9uKS5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4gdSh0 LngsMCl9KSksZS5jYWxsKGYpLmF0dHIoInRyYW5zZm9ybSIsdSh0LngsLW4udXBsaWZ0KSl9 KSkub24oImRyYWdlbmQiLChmdW5jdGlvbihlKXt2YXIgcj1pLnNlbGVjdCh0aGlzKSxuPWUu Y2FsY2RhdGE7ZS54PWUueFNjYWxlKGUpLGUuY2FsY2RhdGEuY29sdW1uRHJhZ0luUHJvZ3Jl c3M9ITEsayhyLGUsMCksZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUuZ2RDb2x1bW5zT3JpZ2lu YWxPcmRlcjtlLmdkQ29sdW1ucy5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiByW24uaW5k ZXhPZih0KV0tcltuLmluZGV4T2YoZSldfSkpLGUuY29sdW1ub3JkZXI9cix0LmVtaXQoInBs b3RseV9yZXN0eWxlIil9KHQsbixuLmNvbHVtbnMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4g dC54SW5kZXh9KSkpfSkpKSxULmVhY2goKGZ1bmN0aW9uKGUpe3Muc2V0Q2xpcFVybChpLnNl bGVjdCh0aGlzKSx2KHQsZSksdCl9KSk7dmFyIFM9VC5zZWxlY3RBbGwoIi4iK24uY24uY29s dW1uQmxvY2spLmRhdGEocC5zcGxpdFRvUGFuZWxzLG8ua2V5RnVuKTtTLmVudGVyKCkuYXBw ZW5kKCJnIikuY2xhc3NlZChuLmNuLmNvbHVtbkJsb2NrLCEwKS5hdHRyKCJpZCIsKGZ1bmN0 aW9uKHQpe3JldHVybiB0LmtleX0pKSxTLnN0eWxlKCJjdXJzb3IiLChmdW5jdGlvbih0KXty ZXR1cm4gdC5kcmFnSGFuZGxlPyJldy1yZXNpemUiOnQuY2FsY2RhdGEuc2Nyb2xsYmFyU3Rh dGUuYmFyV2lnZ2xlUm9vbT8ibnMtcmVzaXplIjoiZGVmYXVsdCJ9KSk7dmFyIEM9Uy5maWx0 ZXIoTSksUD1TLmZpbHRlcihBKTtyJiZQLmNhbGwoaS5iZWhhdmlvci5kcmFnKCkub3JpZ2lu KChmdW5jdGlvbih0KXtyZXR1cm4gaS5ldmVudC5zdG9wUHJvcGFnYXRpb24oKSx0fSkpLm9u KCJkcmFnIixMKHQsbCwtMSkpLm9uKCJkcmFnZW5kIiwoZnVuY3Rpb24oKXt9KSkpLGIodCxs LEMsUyksYih0LGwsUCxTKTt2YXIgST1sLnNlbGVjdEFsbCgiLiIrbi5jbi5zY3JvbGxBcmVh Q2xpcCkuZGF0YShvLnJlcGVhdCxvLmtleUZ1bik7SS5lbnRlcigpLmFwcGVuZCgiY2xpcFBh dGgiKS5jbGFzc2VkKG4uY24uc2Nyb2xsQXJlYUNsaXAsITApLmF0dHIoImlkIiwoZnVuY3Rp b24oZSl7cmV0dXJuIGcodCxlKX0pKTt2YXIgTz1JLnNlbGVjdEFsbCgiLiIrbi5jbi5zY3Jv bGxBcmVhQ2xpcFJlY3QpLmRhdGEoby5yZXBlYXQsby5rZXlGdW4pO08uZW50ZXIoKS5hcHBl bmQoInJlY3QiKS5jbGFzc2VkKG4uY24uc2Nyb2xsQXJlYUNsaXBSZWN0LCEwKS5hdHRyKCJ4 Iiwtbi5vdmVyZHJhZykuYXR0cigieSIsLW4udXBsaWZ0KS5hdHRyKCJmaWxsIiwibm9uZSIp LE8uYXR0cigid2lkdGgiLChmdW5jdGlvbih0KXtyZXR1cm4gdC53aWR0aCsyKm4ub3ZlcmRy YWd9KSkuYXR0cigiaGVpZ2h0IiwoZnVuY3Rpb24odCl7cmV0dXJuIHQuaGVpZ2h0K24udXBs aWZ0fSkpLFQuc2VsZWN0QWxsKCIuIituLmNuLmNvbHVtbkJvdW5kYXJ5KS5kYXRhKG8ucmVw ZWF0LG8ua2V5RnVuKS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQobi5jbi5jb2x1bW5C b3VuZGFyeSwhMCk7dmFyIHo9VC5zZWxlY3RBbGwoIi4iK24uY24uY29sdW1uQm91bmRhcnlD bGlwcGF0aCkuZGF0YShvLnJlcGVhdCxvLmtleUZ1bik7ei5lbnRlcigpLmFwcGVuZCgiY2xp cFBhdGgiKS5jbGFzc2VkKG4uY24uY29sdW1uQm91bmRhcnlDbGlwcGF0aCwhMCksei5hdHRy KCJpZCIsKGZ1bmN0aW9uKGUpe3JldHVybiB2KHQsZSl9KSk7dmFyIEQ9ei5zZWxlY3RBbGwo Ii4iK24uY24uY29sdW1uQm91bmRhcnlSZWN0KS5kYXRhKG8ucmVwZWF0LG8ua2V5RnVuKTtE LmVudGVyKCkuYXBwZW5kKCJyZWN0IikuY2xhc3NlZChuLmNuLmNvbHVtbkJvdW5kYXJ5UmVj dCwhMCkuYXR0cigiZmlsbCIsIm5vbmUiKSxELmF0dHIoIndpZHRoIiwoZnVuY3Rpb24odCl7 cmV0dXJuIHQuY29sdW1uV2lkdGgrMiptKHQpfSkpLmF0dHIoImhlaWdodCIsKGZ1bmN0aW9u KHQpe3JldHVybiB0LmNhbGNkYXRhLmhlaWdodCsyKm0odCkrbi51cGxpZnR9KSkuYXR0cigi eCIsKGZ1bmN0aW9uKHQpe3JldHVybi1tKHQpfSkpLmF0dHIoInkiLChmdW5jdGlvbih0KXty ZXR1cm4tbSh0KX0pKSxFKG51bGwsUCxsKX19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6 MzY2LCIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjM4OCwiLi4vLi4vbGliIjo1MDMsIi4u Ly4uL2xpYi9ndXAiOjUwMCwiLi4vLi4vbGliL3N2Z190ZXh0X3V0aWxzIjo1MjksIi4vY29u c3RhbnRzIjoxMDY5LCIuL2RhdGFfcHJlcGFyYXRpb25faGVscGVyIjoxMDcwLCIuL2RhdGFf c3BsaXRfaGVscGVycyI6MTA3MSwiQHBsb3RseS9kMyI6NTh9XSwxMDc1OltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJp YnV0ZXMiKS5ob3ZlcnRlbXBsYXRlQXR0cnMsaT10KCIuLi8uLi9wbG90cy90ZW1wbGF0ZV9h dHRyaWJ1dGVzIikudGV4dHRlbXBsYXRlQXR0cnMsYT10KCIuLi8uLi9jb21wb25lbnRzL2Nv bG9yc2NhbGUvYXR0cmlidXRlcyIpLG89dCgiLi4vLi4vcGxvdHMvZG9tYWluIikuYXR0cmli dXRlcyxzPXQoIi4uL3BpZS9hdHRyaWJ1dGVzIiksbD10KCIuLi9zdW5idXJzdC9hdHRyaWJ1 dGVzIiksYz10KCIuL2NvbnN0YW50cyIpLHU9dCgiLi4vLi4vbGliL2V4dGVuZCIpLmV4dGVu ZEZsYXQ7ZS5leHBvcnRzPXtsYWJlbHM6bC5sYWJlbHMscGFyZW50czpsLnBhcmVudHMsdmFs dWVzOmwudmFsdWVzLGJyYW5jaHZhbHVlczpsLmJyYW5jaHZhbHVlcyxjb3VudDpsLmNvdW50 LGxldmVsOmwubGV2ZWwsbWF4ZGVwdGg6bC5tYXhkZXB0aCx0aWxpbmc6e3BhY2tpbmc6e3Zh bFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbInNxdWFyaWZ5IiwiYmluYXJ5IiwiZGljZSIs InNsaWNlIiwic2xpY2UtZGljZSIsImRpY2Utc2xpY2UiXSxkZmx0OiJzcXVhcmlmeSIsZWRp dFR5cGU6InBsb3QifSxzcXVhcmlmeXJhdGlvOnt2YWxUeXBlOiJudW1iZXIiLG1pbjoxLGRm bHQ6MSxlZGl0VHlwZToicGxvdCJ9LGZsaXA6e3ZhbFR5cGU6ImZsYWdsaXN0IixmbGFnczpb IngiLCJ5Il0sZGZsdDoiIixlZGl0VHlwZToicGxvdCJ9LHBhZDp7dmFsVHlwZToibnVtYmVy IixtaW46MCxkZmx0OjMsZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToiY2FsYyJ9LG1hcmtl cjp1KHtwYWQ6e3Q6e3ZhbFR5cGU6Im51bWJlciIsbWluOjAsZWRpdFR5cGU6InBsb3QifSxs Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLGVkaXRUeXBlOiJwbG90In0scjp7dmFsVHlwZToi bnVtYmVyIixtaW46MCxlZGl0VHlwZToicGxvdCJ9LGI6e3ZhbFR5cGU6Im51bWJlciIsbWlu OjAsZWRpdFR5cGU6InBsb3QifSxlZGl0VHlwZToiY2FsYyJ9LGNvbG9yczpsLm1hcmtlci5j b2xvcnMsZGVwdGhmYWRlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyEwLCExLCJy ZXZlcnNlZCJdLGVkaXRUeXBlOiJzdHlsZSJ9LGxpbmU6bC5tYXJrZXIubGluZSxlZGl0VHlw ZToiY2FsYyJ9LGEoIm1hcmtlciIse2NvbG9yQXR0cjoiY29sb3JzIixhbmltOiExfSkpLHBh dGhiYXI6e3Zpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6InBs b3QifSxzaWRlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJ0b3AiLCJib3R0b20i XSxkZmx0OiJ0b3AiLGVkaXRUeXBlOiJwbG90In0sZWRnZXNoYXBlOnt2YWxUeXBlOiJlbnVt ZXJhdGVkIix2YWx1ZXM6WyI+IiwiPCIsInwiLCIvIiwiXFwiXSxkZmx0OiI+IixlZGl0VHlw ZToicGxvdCJ9LHRoaWNrbmVzczp7dmFsVHlwZToibnVtYmVyIixtaW46MTIsZWRpdFR5cGU6 InBsb3QifSx0ZXh0Zm9udDp1KHt9LHMudGV4dGZvbnQse30pLGVkaXRUeXBlOiJjYWxjIn0s dGV4dDpzLnRleHQsdGV4dGluZm86bC50ZXh0aW5mbyx0ZXh0dGVtcGxhdGU6aSh7ZWRpdFR5 cGU6InBsb3QifSx7a2V5czpjLmV2ZW50RGF0YUtleXMuY29uY2F0KFsibGFiZWwiLCJ2YWx1 ZSJdKX0pLGhvdmVydGV4dDpzLmhvdmVydGV4dCxob3ZlcmluZm86bC5ob3ZlcmluZm8saG92 ZXJ0ZW1wbGF0ZTpuKHt9LHtrZXlzOmMuZXZlbnREYXRhS2V5c30pLHRleHRmb250OnMudGV4 dGZvbnQsaW5zaWRldGV4dGZvbnQ6cy5pbnNpZGV0ZXh0Zm9udCxvdXRzaWRldGV4dGZvbnQ6 dSh7fSxzLm91dHNpZGV0ZXh0Zm9udCx7fSksdGV4dHBvc2l0aW9uOnt2YWxUeXBlOiJlbnVt ZXJhdGVkIix2YWx1ZXM6WyJ0b3AgbGVmdCIsInRvcCBjZW50ZXIiLCJ0b3AgcmlnaHQiLCJt aWRkbGUgbGVmdCIsIm1pZGRsZSBjZW50ZXIiLCJtaWRkbGUgcmlnaHQiLCJib3R0b20gbGVm dCIsImJvdHRvbSBjZW50ZXIiLCJib3R0b20gcmlnaHQiXSxkZmx0OiJ0b3AgbGVmdCIsZWRp dFR5cGU6InBsb3QifSxzb3J0OnMuc29ydCxyb290Omwucm9vdCxkb21haW46byh7bmFtZToi dHJlZW1hcCIsdHJhY2U6ITAsZWRpdFR5cGU6ImNhbGMifSl9fSx7Ii4uLy4uL2NvbXBvbmVu dHMvY29sb3JzY2FsZS9hdHRyaWJ1dGVzIjozNzMsIi4uLy4uL2xpYi9leHRlbmQiOjQ5Mywi Li4vLi4vcGxvdHMvZG9tYWluIjo1ODQsIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0 ZXMiOjYzMywiLi4vcGllL2F0dHJpYnV0ZXMiOjkwMSwiLi4vc3VuYnVyc3QvYXR0cmlidXRl cyI6MTA0OSwiLi9jb25zdGFudHMiOjEwNzh9XSwxMDc2OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL3Bsb3RzIik7ci5uYW1lPSJ0cmVlbWFw IixyLnBsb3Q9ZnVuY3Rpb24odCxlLGksYSl7bi5wbG90QmFzZVBsb3Qoci5uYW1lLHQsZSxp LGEpfSxyLmNsZWFuPWZ1bmN0aW9uKHQsZSxpLGEpe24uY2xlYW5CYXNlUGxvdChyLm5hbWUs dCxlLGksYSl9fSx7Ii4uLy4uL3Bsb3RzL3Bsb3RzIjo2MTl9XSwxMDc3OltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL3N1bmJ1cnN0L2NhbGMiKTtyLmNhbGM9 ZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5jYWxjKHQsZSl9LHIuY3Jvc3NUcmFjZUNhbGM9ZnVu Y3Rpb24odCl7cmV0dXJuIG4uX3J1bkNyb3NzVHJhY2VDYWxjKCJ0cmVlbWFwIix0KX19LHsi Li4vc3VuYnVyc3QvY2FsYyI6MTA1MX1dLDEwNzg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZS5leHBvcnRzPXtDTElDS19UUkFOU0lUSU9OX1RJTUU6NzUwLENMSUNLX1RSQU5T SVRJT05fRUFTSU5HOiJwb2x5IixldmVudERhdGFLZXlzOlsiY3VycmVudFBhdGgiLCJyb290 IiwiZW50cnkiLCJwZXJjZW50Um9vdCIsInBlcmNlbnRFbnRyeSIsInBlcmNlbnRQYXJlbnQi XSxnYXBXaXRoUGF0aGJhcjoxfX0se31dLDEwNzk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuL2F0dHJpYnV0ZXMiKSxhPXQoIi4u Ly4uL2NvbXBvbmVudHMvY29sb3IiKSxvPXQoIi4uLy4uL3Bsb3RzL2RvbWFpbiIpLmRlZmF1 bHRzLHM9dCgiLi4vYmFyL2RlZmF1bHRzIikuaGFuZGxlVGV4dCxsPXQoIi4uL2Jhci9jb25z dGFudHMiKS5URVhUUEFELGM9dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIiksdT1j Lmhhc0NvbG9yc2NhbGUsZj1jLmhhbmRsZURlZmF1bHRzO2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUscixjKXtmdW5jdGlvbiBoKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxpLHIsYSl9dmFy IHA9aCgibGFiZWxzIiksZD1oKCJwYXJlbnRzIik7aWYocCYmcC5sZW5ndGgmJmQmJmQubGVu Z3RoKXt2YXIgbT1oKCJ2YWx1ZXMiKTttJiZtLmxlbmd0aD9oKCJicmFuY2h2YWx1ZXMiKTpo KCJjb3VudCIpLGgoImxldmVsIiksaCgibWF4ZGVwdGgiKSwic3F1YXJpZnkiPT09aCgidGls aW5nLnBhY2tpbmciKSYmaCgidGlsaW5nLnNxdWFyaWZ5cmF0aW8iKSxoKCJ0aWxpbmcuZmxp cCIpLGgoInRpbGluZy5wYWQiKTt2YXIgZz1oKCJ0ZXh0Iik7aCgidGV4dHRlbXBsYXRlIiks ZS50ZXh0dGVtcGxhdGV8fGgoInRleHRpbmZvIixBcnJheS5pc0FycmF5KGcpPyJ0ZXh0K2xh YmVsIjoibGFiZWwiKSxoKCJob3ZlcnRleHQiKSxoKCJob3ZlcnRlbXBsYXRlIik7dmFyIHY9 aCgicGF0aGJhci52aXNpYmxlIik7cyh0LGUsYyxoLCJhdXRvIix7aGFzUGF0aGJhcjp2LG1v ZHVsZUhhc1NlbGVjdGVkOiExLG1vZHVsZUhhc1Vuc2VsZWN0ZWQ6ITEsbW9kdWxlSGFzQ29u c3RyYWluOiExLG1vZHVsZUhhc0NsaXBvbmF4aXM6ITEsbW9kdWxlSGFzVGV4dGFuZ2xlOiEx LG1vZHVsZUhhc0luc2lkZWFuY2hvcjohMX0pLGgoInRleHRwb3NpdGlvbiIpO3ZhciB5PS0x IT09ZS50ZXh0cG9zaXRpb24uaW5kZXhPZigiYm90dG9tIik7aCgibWFya2VyLmxpbmUud2lk dGgiKSYmaCgibWFya2VyLmxpbmUuY29sb3IiLGMucGFwZXJfYmdjb2xvcik7dmFyIHg9aCgi bWFya2VyLmNvbG9ycyIpOyhlLl9oYXNDb2xvcnNjYWxlPXUodCwibWFya2VyIiwiY29sb3Jz Iil8fCh0Lm1hcmtlcnx8e30pLmNvbG9yYXhpcyk/Zih0LGUsYyxoLHtwcmVmaXg6Im1hcmtl ci4iLGNMZXR0ZXI6ImMifSk6aCgibWFya2VyLmRlcHRoZmFkZSIsISh4fHxbXSkubGVuZ3Ro KTt2YXIgYj0yKmUudGV4dGZvbnQuc2l6ZTtoKCJtYXJrZXIucGFkLnQiLHk/Yi80OmIpLGgo Im1hcmtlci5wYWQubCIsYi80KSxoKCJtYXJrZXIucGFkLnIiLGIvNCksaCgibWFya2VyLnBh ZC5iIix5P2I6Yi80KSxlLl9ob3ZlcmVkPXttYXJrZXI6e2xpbmU6e3dpZHRoOjIsY29sb3I6 YS5jb250cmFzdChjLnBhcGVyX2JnY29sb3IpfX19LHYmJihoKCJwYXRoYmFyLnRoaWNrbmVz cyIsZS5wYXRoYmFyLnRleHRmb250LnNpemUrMipsKSxoKCJwYXRoYmFyLnNpZGUiKSxoKCJw YXRoYmFyLmVkZ2VzaGFwZSIpKSxoKCJzb3J0IiksaCgicm9vdC5jb2xvciIpLG8oZSxjLGgp LGUuX2xlbmd0aD1udWxsfWVsc2UgZS52aXNpYmxlPSExfX0seyIuLi8uLi9jb21wb25lbnRz L2NvbG9yIjozNjYsIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSI6Mzc4LCIuLi8uLi9s aWIiOjUwMywiLi4vLi4vcGxvdHMvZG9tYWluIjo1ODQsIi4uL2Jhci9jb25zdGFudHMiOjY1 MCwiLi4vYmFyL2RlZmF1bHRzIjo2NTIsIi4vYXR0cmlidXRlcyI6MTA3NX1dLDEwODA6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiQHBsb3RseS9kMyIpLGk9dCgi Li4vc3VuYnVyc3QvaGVscGVycyIpLGE9dCgiLi4vYmFyL3VuaWZvcm1fdGV4dCIpLmNsZWFy TWluVGV4dFNpemUsbz10KCIuLi9iYXIvc3R5bGUiKS5yZXNpemVUZXh0LHM9dCgiLi9wbG90 X29uZSIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixsLGMpe3ZhciB1LGYsaD1jLnR5cGUs cD1jLmRyYXdEZXNjZW5kYW50cyxkPXQuX2Z1bGxMYXlvdXQsbT1kWyJfIitoKyJsYXllciJd LGc9IXI7KGEoaCxkKSwodT1tLnNlbGVjdEFsbCgiZy50cmFjZS4iK2gpLmRhdGEoZSwoZnVu Y3Rpb24odCl7cmV0dXJuIHRbMF0udHJhY2UudWlkfSkpKS5lbnRlcigpLmFwcGVuZCgiZyIp LmNsYXNzZWQoInRyYWNlIiwhMCkuY2xhc3NlZChoLCEwKSx1Lm9yZGVyKCksIWQudW5pZm9y bXRleHQubW9kZSYmaS5oYXNUcmFuc2l0aW9uKHIpKT8obCYmKGY9bCgpKSxuLnRyYW5zaXRp b24oKS5kdXJhdGlvbihyLmR1cmF0aW9uKS5lYXNlKHIuZWFzaW5nKS5lYWNoKCJlbmQiLChm dW5jdGlvbigpe2YmJmYoKX0pKS5lYWNoKCJpbnRlcnJ1cHQiLChmdW5jdGlvbigpe2YmJmYo KX0pKS5lYWNoKChmdW5jdGlvbigpe20uc2VsZWN0QWxsKCJnLnRyYWNlIikuZWFjaCgoZnVu Y3Rpb24oZSl7cyh0LGUsdGhpcyxyLHApfSkpfSkpKToodS5lYWNoKChmdW5jdGlvbihlKXtz KHQsZSx0aGlzLHIscCl9KSksZC51bmlmb3JtdGV4dC5tb2RlJiZvKHQsbS5zZWxlY3RBbGwo Ii50cmFjZSIpLGgpKTtnJiZ1LmV4aXQoKS5yZW1vdmUoKX19LHsiLi4vYmFyL3N0eWxlIjo2 NjIsIi4uL2Jhci91bmlmb3JtX3RleHQiOjY2NCwiLi4vc3VuYnVyc3QvaGVscGVycyI6MTA1 NSwiLi9wbG90X29uZSI6MTA4OSwiQHBsb3RseS9kMyI6NTh9XSwxMDgxOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIkBwbG90bHkvZDMiKSxpPXQoIi4uLy4uL2xp YiIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksbz10KCIuLi8uLi9saWIvc3Zn X3RleHRfdXRpbHMiKSxzPXQoIi4vcGFydGl0aW9uIiksbD10KCIuL3N0eWxlIikuc3R5bGVP bmUsYz10KCIuL2NvbnN0YW50cyIpLHU9dCgiLi4vc3VuYnVyc3QvaGVscGVycyIpLGY9dCgi Li4vc3VuYnVyc3QvZngiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaCxwKXt2YXIgZD1w LmJhckRpZlksbT1wLndpZHRoLGc9cC5oZWlnaHQsdj1wLnZpZXdYLHk9cC52aWV3WSx4PXAu cGF0aFNsaWNlLGI9cC50b01vdmVJbnNpZGVTbGljZSxfPXAuc3RyVHJhbnNmb3JtLHc9cC5o YXNUcmFuc2l0aW9uLFQ9cC5oYW5kbGVTbGljZXNFeGl0LGs9cC5tYWtlVXBkYXRlU2xpY2VJ bnRlcnBvbGF0b3IsQT1wLm1ha2VVcGRhdGVUZXh0SW50ZXJwb2xhdG9yLE09e30sUz10Ll9m dWxsTGF5b3V0LEU9ZVswXSxMPUUudHJhY2UsQz1FLmhpZXJhcmNoeSxQPW0vTC5fZW50cnlE ZXB0aCxJPXUubGlzdFBhdGgoci5kYXRhLCJpZCIpLE89cyhDLmNvcHkoKSxbbSxnXSx7cGFj a2luZzoiZGljZSIscGFkOntpbm5lcjowLHRvcDowLGxlZnQ6MCxyaWdodDowLGJvdHRvbTow fX0pLmRlc2NlbmRhbnRzKCk7KE89Ty5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBlPUkuaW5k ZXhPZih0LmRhdGEuaWQpO3JldHVybi0xIT09ZSYmKHQueDA9UCplLHQueDE9UCooZSsxKSx0 LnkwPWQsdC55MT1kK2csdC5vblBhdGhiYXI9ITAsITApfSkpKS5yZXZlcnNlKCksKGg9aC5k YXRhKE8sdS5nZXRQdElkKSkuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJwYXRoYmFy IiwhMCksVChoLCEwLE0sW20sZ10seCksaC5vcmRlcigpO3ZhciB6PWg7dyYmKHo9ei50cmFu c2l0aW9uKCkuZWFjaCgiZW5kIiwoZnVuY3Rpb24oKXt2YXIgZT1uLnNlbGVjdCh0aGlzKTt1 LnNldFNsaWNlQ3Vyc29yKGUsdCx7aGlkZU9uUm9vdDohMSxoaWRlT25MZWF2ZXM6ITEsaXNU cmFuc2l0aW9uaW5nOiExfSl9KSkpLHouZWFjaCgoZnVuY3Rpb24ocyl7cy5feDA9dihzLngw KSxzLl94MT12KHMueDEpLHMuX3kwPXkocy55MCkscy5feTE9eShzLnkxKSxzLl9ob3Zlclg9 dihzLngxLU1hdGgubWluKG0sZykvMikscy5faG92ZXJZPXkocy55MS1nLzIpO3ZhciBoPW4u c2VsZWN0KHRoaXMpLHA9aS5lbnN1cmVTaW5nbGUoaCwicGF0aCIsInN1cmZhY2UiLChmdW5j dGlvbih0KXt0LnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpfSkpO3c/cC50cmFuc2l0 aW9uKCkuYXR0clR3ZWVuKCJkIiwoZnVuY3Rpb24odCl7dmFyIGU9ayh0LCEwLE0sW20sZ10p O3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4geChlKHQpKX19KSk6cC5hdHRyKCJkIix4KSxo LmNhbGwoZixyLHQsZSx7c3R5bGVPbmU6bCxldmVudERhdGFLZXlzOmMuZXZlbnREYXRhS2V5 cyx0cmFuc2l0aW9uVGltZTpjLkNMSUNLX1RSQU5TSVRJT05fVElNRSx0cmFuc2l0aW9uRWFz aW5nOmMuQ0xJQ0tfVFJBTlNJVElPTl9FQVNJTkd9KS5jYWxsKHUuc2V0U2xpY2VDdXJzb3Is dCx7aGlkZU9uUm9vdDohMSxoaWRlT25MZWF2ZXM6ITEsaXNUcmFuc2l0aW9uaW5nOnQuX3Ry YW5zaXRpb25pbmd9KSxwLmNhbGwobCxzLEwse2hvdmVyZWQ6ITF9KSxzLl90ZXh0PSh1Lmdl dFB0TGFiZWwocyl8fCIiKS5zcGxpdCgiPGJyPiIpLmpvaW4oIiAiKXx8IiI7dmFyIGQ9aS5l bnN1cmVTaW5nbGUoaCwiZyIsInNsaWNldGV4dCIpLFQ9aS5lbnN1cmVTaW5nbGUoZCwidGV4 dCIsIiIsKGZ1bmN0aW9uKHQpe3QuYXR0cigiZGF0YS1ub3RleCIsMSl9KSksRT1pLmVuc3Vy ZVVuaWZvcm1Gb250U2l6ZSh0LHUuZGV0ZXJtaW5lVGV4dEZvbnQoTCxzLFMuZm9udCx7b25Q YXRoYmFyOiEwfSkpO1QudGV4dChzLl90ZXh0fHwiICIpLmNsYXNzZWQoInNsaWNldGV4dCIs ITApLmF0dHIoInRleHQtYW5jaG9yIiwic3RhcnQiKS5jYWxsKGEuZm9udCxFKS5jYWxsKG8u Y29udmVydFRvVHNwYW5zLHQpLHMudGV4dEJCPWEuYkJveChULm5vZGUoKSkscy50cmFuc2Zv cm09YihzLHtmb250U2l6ZTpFLnNpemUsb25QYXRoYmFyOiEwfSkscy50cmFuc2Zvcm0uZm9u dFNpemU9RS5zaXplLHc/VC50cmFuc2l0aW9uKCkuYXR0clR3ZWVuKCJ0cmFuc2Zvcm0iLChm dW5jdGlvbih0KXt2YXIgZT1BKHQsITAsTSxbbSxnXSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3Jl dHVybiBfKGUodCkpfX0pKTpULmF0dHIoInRyYW5zZm9ybSIsXyhzKSl9KSl9fSx7Ii4uLy4u L2NvbXBvbmVudHMvZHJhd2luZyI6Mzg4LCIuLi8uLi9saWIiOjUwMywiLi4vLi4vbGliL3N2 Z190ZXh0X3V0aWxzIjo1MjksIi4uL3N1bmJ1cnN0L2Z4IjoxMDU0LCIuLi9zdW5idXJzdC9o ZWxwZXJzIjoxMDU1LCIuL2NvbnN0YW50cyI6MTA3OCwiLi9wYXJ0aXRpb24iOjEwODcsIi4v c3R5bGUiOjEwOTAsIkBwbG90bHkvZDMiOjU4fV0sMTA4MjpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCJAcGxvdGx5L2QzIiksaT10KCIuLi8uLi9saWIiKSxhPXQo Ii4uLy4uL2NvbXBvbmVudHMvZHJhd2luZyIpLG89dCgiLi4vLi4vbGliL3N2Z190ZXh0X3V0 aWxzIikscz10KCIuL3BhcnRpdGlvbiIpLGw9dCgiLi9zdHlsZSIpLnN0eWxlT25lLGM9dCgi Li9jb25zdGFudHMiKSx1PXQoIi4uL3N1bmJ1cnN0L2hlbHBlcnMiKSxmPXQoIi4uL3N1bmJ1 cnN0L2Z4IiksaD10KCIuLi9zdW5idXJzdC9wbG90IikuZm9ybWF0U2xpY2VMYWJlbDtlLmV4 cG9ydHM9ZnVuY3Rpb24odCxlLHIscCxkKXt2YXIgbT1kLndpZHRoLGc9ZC5oZWlnaHQsdj1k LnZpZXdYLHk9ZC52aWV3WSx4PWQucGF0aFNsaWNlLGI9ZC50b01vdmVJbnNpZGVTbGljZSxf PWQuc3RyVHJhbnNmb3JtLHc9ZC5oYXNUcmFuc2l0aW9uLFQ9ZC5oYW5kbGVTbGljZXNFeGl0 LGs9ZC5tYWtlVXBkYXRlU2xpY2VJbnRlcnBvbGF0b3IsQT1kLm1ha2VVcGRhdGVUZXh0SW50 ZXJwb2xhdG9yLE09ZC5wcmV2RW50cnksUz10Ll9mdWxsTGF5b3V0LEU9ZVswXS50cmFjZSxM PS0xIT09RS50ZXh0cG9zaXRpb24uaW5kZXhPZigibGVmdCIpLEM9LTEhPT1FLnRleHRwb3Np dGlvbi5pbmRleE9mKCJyaWdodCIpLFA9LTEhPT1FLnRleHRwb3NpdGlvbi5pbmRleE9mKCJi b3R0b20iKSxJPSFQJiYhRS5tYXJrZXIucGFkLnR8fFAmJiFFLm1hcmtlci5wYWQuYixPPXMo cixbbSxnXSx7cGFja2luZzpFLnRpbGluZy5wYWNraW5nLHNxdWFyaWZ5cmF0aW86RS50aWxp bmcuc3F1YXJpZnlyYXRpbyxmbGlwWDpFLnRpbGluZy5mbGlwLmluZGV4T2YoIngiKT4tMSxm bGlwWTpFLnRpbGluZy5mbGlwLmluZGV4T2YoInkiKT4tMSxwYWQ6e2lubmVyOkUudGlsaW5n LnBhZCx0b3A6RS5tYXJrZXIucGFkLnQsbGVmdDpFLm1hcmtlci5wYWQubCxyaWdodDpFLm1h cmtlci5wYWQucixib3R0b206RS5tYXJrZXIucGFkLmJ9fSkuZGVzY2VuZGFudHMoKSx6PTEv MCxEPS0xLzA7Ty5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LmRlcHRoO2U+PUUuX21h eERlcHRoPyh0LngwPXQueDE9KHQueDArdC54MSkvMix0LnkwPXQueTE9KHQueTArdC55MSkv Mik6KHo9TWF0aC5taW4oeixlKSxEPU1hdGgubWF4KEQsZSkpfSkpLHA9cC5kYXRhKE8sdS5n ZXRQdElkKSxFLl9tYXhWaXNpYmxlTGF5ZXJzPWlzRmluaXRlKEQpP0QteisxOjAscC5lbnRl cigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInNsaWNlIiwhMCksVChwLCExLHt9LFttLGddLHgp LHAub3JkZXIoKTt2YXIgUj1udWxsO2lmKHcmJk0pe3ZhciBGPXUuZ2V0UHRJZChNKTtwLmVh Y2goKGZ1bmN0aW9uKHQpe251bGw9PT1SJiZ1LmdldFB0SWQodCk9PT1GJiYoUj17eDA6dC54 MCx4MTp0LngxLHkwOnQueTAseTE6dC55MX0pfSkpfXZhciBCPWZ1bmN0aW9uKCl7cmV0dXJu IFJ8fHt4MDowLHgxOm0seTA6MCx5MTpnfX0sTj1wO3JldHVybiB3JiYoTj1OLnRyYW5zaXRp b24oKS5lYWNoKCJlbmQiLChmdW5jdGlvbigpe3ZhciBlPW4uc2VsZWN0KHRoaXMpO3Uuc2V0 U2xpY2VDdXJzb3IoZSx0LHtoaWRlT25Sb290OiEwLGhpZGVPbkxlYXZlczohMSxpc1RyYW5z aXRpb25pbmc6ITF9KX0pKSksTi5lYWNoKChmdW5jdGlvbihzKXt2YXIgcD11LmlzSGVhZGVy KHMsRSk7cy5feDA9dihzLngwKSxzLl94MT12KHMueDEpLHMuX3kwPXkocy55MCkscy5feTE9 eShzLnkxKSxzLl9ob3Zlclg9dihzLngxLUUubWFya2VyLnBhZC5yKSxzLl9ob3Zlclk9eShQ P3MueTEtRS5tYXJrZXIucGFkLmIvMjpzLnkwK0UubWFya2VyLnBhZC50LzIpO3ZhciBkPW4u c2VsZWN0KHRoaXMpLFQ9aS5lbnN1cmVTaW5nbGUoZCwicGF0aCIsInN1cmZhY2UiLChmdW5j dGlvbih0KXt0LnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpfSkpO3c/VC50cmFuc2l0 aW9uKCkuYXR0clR3ZWVuKCJkIiwoZnVuY3Rpb24odCl7dmFyIGU9ayh0LCExLEIoKSxbbSxn XSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB4KGUodCkpfX0pKTpULmF0dHIoImQiLHgp LGQuY2FsbChmLHIsdCxlLHtzdHlsZU9uZTpsLGV2ZW50RGF0YUtleXM6Yy5ldmVudERhdGFL ZXlzLHRyYW5zaXRpb25UaW1lOmMuQ0xJQ0tfVFJBTlNJVElPTl9USU1FLHRyYW5zaXRpb25F YXNpbmc6Yy5DTElDS19UUkFOU0lUSU9OX0VBU0lOR30pLmNhbGwodS5zZXRTbGljZUN1cnNv cix0LHtpc1RyYW5zaXRpb25pbmc6dC5fdHJhbnNpdGlvbmluZ30pLFQuY2FsbChsLHMsRSx7 aG92ZXJlZDohMX0pLHMueDA9PT1zLngxfHxzLnkwPT09cy55MT9zLl90ZXh0PSIiOnMuX3Rl eHQ9cD9JPyIiOnUuZ2V0UHRMYWJlbChzKXx8IiI6aChzLHIsRSxlLFMpfHwiIjt2YXIgTT1p LmVuc3VyZVNpbmdsZShkLCJnIiwic2xpY2V0ZXh0IiksTz1pLmVuc3VyZVNpbmdsZShNLCJ0 ZXh0IiwiIiwoZnVuY3Rpb24odCl7dC5hdHRyKCJkYXRhLW5vdGV4IiwxKX0pKSx6PWkuZW5z dXJlVW5pZm9ybUZvbnRTaXplKHQsdS5kZXRlcm1pbmVUZXh0Rm9udChFLHMsUy5mb250KSk7 Ty50ZXh0KHMuX3RleHR8fCIgIikuY2xhc3NlZCgic2xpY2V0ZXh0IiwhMCkuYXR0cigidGV4 dC1hbmNob3IiLEM/ImVuZCI6THx8cD8ic3RhcnQiOiJtaWRkbGUiKS5jYWxsKGEuZm9udCx6 KS5jYWxsKG8uY29udmVydFRvVHNwYW5zLHQpLHMudGV4dEJCPWEuYkJveChPLm5vZGUoKSks cy50cmFuc2Zvcm09YihzLHtmb250U2l6ZTp6LnNpemUsaXNIZWFkZXI6cH0pLHMudHJhbnNm b3JtLmZvbnRTaXplPXouc2l6ZSx3P08udHJhbnNpdGlvbigpLmF0dHJUd2VlbigidHJhbnNm b3JtIiwoZnVuY3Rpb24odCl7dmFyIGU9QSh0LCExLEIoKSxbbSxnXSk7cmV0dXJuIGZ1bmN0 aW9uKHQpe3JldHVybiBfKGUodCkpfX0pKTpPLmF0dHIoInRyYW5zZm9ybSIsXyhzKSl9KSks Un19LHsiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjozODgsIi4uLy4uL2xpYiI6NTAzLCIu Li8uLi9saWIvc3ZnX3RleHRfdXRpbHMiOjUyOSwiLi4vc3VuYnVyc3QvZngiOjEwNTQsIi4u L3N1bmJ1cnN0L2hlbHBlcnMiOjEwNTUsIi4uL3N1bmJ1cnN0L3Bsb3QiOjEwNTksIi4vY29u c3RhbnRzIjoxMDc4LCIuL3BhcnRpdGlvbiI6MTA4NywiLi9zdHlsZSI6MTA5MCwiQHBsb3Rs eS9kMyI6NTh9XSwxMDgzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0 cz1mdW5jdGlvbiB0KGUscixuKXt2YXIgaTtuLnN3YXBYWSYmKGk9ZS54MCxlLngwPWUueTAs ZS55MD1pLGk9ZS54MSxlLngxPWUueTEsZS55MT1pKSxuLmZsaXBYJiYoaT1lLngwLGUueDA9 clswXS1lLngxLGUueDE9clswXS1pKSxuLmZsaXBZJiYoaT1lLnkwLGUueTA9clsxXS1lLnkx LGUueTE9clsxXS1pKTt2YXIgYT1lLmNoaWxkcmVuO2lmKGEpZm9yKHZhciBvPTA7bzxhLmxl bmd0aDtvKyspdChhW29dLHIsbil9fSx7fV0sMTA4NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0IjtlLmV4cG9ydHM9e21vZHVsZVR5cGU6InRyYWNlIixuYW1lOiJ0cmVlbWFwIixi YXNlUGxvdE1vZHVsZTp0KCIuL2Jhc2VfcGxvdCIpLGNhdGVnb3JpZXM6W10sYW5pbWF0YWJs ZTohMCxhdHRyaWJ1dGVzOnQoIi4vYXR0cmlidXRlcyIpLGxheW91dEF0dHJpYnV0ZXM6dCgi Li9sYXlvdXRfYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxz dXBwbHlMYXlvdXREZWZhdWx0czp0KCIuL2xheW91dF9kZWZhdWx0cyIpLGNhbGM6dCgiLi9j YWxjIikuY2FsYyxjcm9zc1RyYWNlQ2FsYzp0KCIuL2NhbGMiKS5jcm9zc1RyYWNlQ2FsYyxw bG90OnQoIi4vcGxvdCIpLHN0eWxlOnQoIi4vc3R5bGUiKS5zdHlsZSxjb2xvcmJhcjp0KCIu Li9zY2F0dGVyL21hcmtlcl9jb2xvcmJhciIpLG1ldGE6e319fSx7Ii4uL3NjYXR0ZXIvbWFy a2VyX2NvbG9yYmFyIjo5NDUsIi4vYXR0cmlidXRlcyI6MTA3NSwiLi9iYXNlX3Bsb3QiOjEw NzYsIi4vY2FsYyI6MTA3NywiLi9kZWZhdWx0cyI6MTA3OSwiLi9sYXlvdXRfYXR0cmlidXRl cyI6MTA4NSwiLi9sYXlvdXRfZGVmYXVsdHMiOjEwODYsIi4vcGxvdCI6MTA4OCwiLi9zdHls ZSI6MTA5MH1dLDEwODU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRz PXt0cmVlbWFwY29sb3J3YXk6e3ZhbFR5cGU6ImNvbG9ybGlzdCIsZWRpdFR5cGU6ImNhbGMi fSxleHRlbmR0cmVlbWFwY29sb3JzOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRU eXBlOiJjYWxjIn19fSx7fV0sMTA4NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCIuLi8uLi9saWIiKSxpPXQoIi4vbGF5b3V0X2F0dHJpYnV0ZXMiKTtlLmV4cG9y dHM9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxp LHIsYSl9cigidHJlZW1hcGNvbG9yd2F5IixlLmNvbG9yd2F5KSxyKCJleHRlbmR0cmVlbWFw Y29sb3JzIil9fSx7Ii4uLy4uL2xpYiI6NTAzLCIuL2xheW91dF9hdHRyaWJ1dGVzIjoxMDg1 fV0sMTA4NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkMy1oaWVy YXJjaHkiKSxpPXQoIi4vZmxpcF90cmVlIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2 YXIgYSxvPXIuZmxpcFgscz1yLmZsaXBZLGw9ImRpY2Utc2xpY2UiPT09ci5wYWNraW5nLGM9 ci5wYWRbcz8iYm90dG9tIjoidG9wIl0sdT1yLnBhZFtvPyJyaWdodCI6ImxlZnQiXSxmPXIu cGFkW28/ImxlZnQiOiJyaWdodCJdLGg9ci5wYWRbcz8idG9wIjoiYm90dG9tIl07bCYmKGE9 dSx1PWMsYz1hLGE9ZixmPWgsaD1hKTt2YXIgcD1uLnRyZWVtYXAoKS50aWxlKGZ1bmN0aW9u KHQsZSl7c3dpdGNoKHQpe2Nhc2Uic3F1YXJpZnkiOnJldHVybiBuLnRyZWVtYXBTcXVhcmlm eS5yYXRpbyhlKTtjYXNlImJpbmFyeSI6cmV0dXJuIG4udHJlZW1hcEJpbmFyeTtjYXNlImRp Y2UiOnJldHVybiBuLnRyZWVtYXBEaWNlO2Nhc2Uic2xpY2UiOnJldHVybiBuLnRyZWVtYXBT bGljZTtkZWZhdWx0OnJldHVybiBuLnRyZWVtYXBTbGljZURpY2V9fShyLnBhY2tpbmcsci5z cXVhcmlmeXJhdGlvKSkucGFkZGluZ0lubmVyKHIucGFkLmlubmVyKS5wYWRkaW5nTGVmdCh1 KS5wYWRkaW5nUmlnaHQoZikucGFkZGluZ1RvcChjKS5wYWRkaW5nQm90dG9tKGgpLnNpemUo bD9bZVsxXSxlWzBdXTplKSh0KTtyZXR1cm4obHx8b3x8cykmJmkocCxlLHtzd2FwWFk6bCxm bGlwWDpvLGZsaXBZOnN9KSxwfX0seyIuL2ZsaXBfdHJlZSI6MTA4MywiZDMtaGllcmFyY2h5 IjoxMTV9XSwxMDg4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4v ZHJhdyIpLGk9dCgiLi9kcmF3X2Rlc2NlbmRhbnRzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSxyLGEpe3JldHVybiBuKHQsZSxyLGEse3R5cGU6InRyZWVtYXAiLGRyYXdEZXNjZW5kYW50 czppfSl9fSx7Ii4vZHJhdyI6MTA4MCwiLi9kcmF3X2Rlc2NlbmRhbnRzIjoxMDgyfV0sMTA4 OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJAcGxvdGx5L2QzIiks aT10KCJkMy1pbnRlcnBvbGF0ZSIpLmludGVycG9sYXRlLGE9dCgiLi4vc3VuYnVyc3QvaGVs cGVycyIpLG89dCgiLi4vLi4vbGliIikscz10KCIuLi9iYXIvY29uc3RhbnRzIikuVEVYVFBB RCxsPXQoIi4uL2Jhci9wbG90IikudG9Nb3ZlSW5zaWRlQmFyLGM9dCgiLi4vYmFyL3VuaWZv cm1fdGV4dCIpLnJlY29yZE1pblRleHRTaXplLHU9dCgiLi9jb25zdGFudHMiKSxmPXQoIi4v ZHJhd19hbmNlc3RvcnMiKTtmdW5jdGlvbiBoKHQpe3JldHVybiBhLmlzSGllcmFyY2h5Um9v dCh0KT8iIjphLmdldFB0SWQodCl9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHAsZCl7dmFy IG09dC5fZnVsbExheW91dCxnPWVbMF0sdj1nLnRyYWNlLHk9ImljaWNsZSI9PT12LnR5cGUs eD1nLmhpZXJhcmNoeSxiPWEuZmluZEVudHJ5V2l0aExldmVsKHgsdi5sZXZlbCksXz1uLnNl bGVjdChyKSx3PV8uc2VsZWN0QWxsKCJnLnBhdGhiYXIiKSxUPV8uc2VsZWN0QWxsKCJnLnNs aWNlIik7aWYoIWIpcmV0dXJuIHcucmVtb3ZlKCksdm9pZCBULnJlbW92ZSgpO3ZhciBrPWEu aXNIaWVyYXJjaHlSb290KGIpLEE9IW0udW5pZm9ybXRleHQubW9kZSYmYS5oYXNUcmFuc2l0 aW9uKHApLE09YS5nZXRNYXhEZXB0aCh2KSxTPW0uX3NpemUsRT12LmRvbWFpbixMPVMudyoo RS54WzFdLUUueFswXSksQz1TLmgqKEUueVsxXS1FLnlbMF0pLFA9TCxJPXYucGF0aGJhci50 aGlja25lc3MsTz12Lm1hcmtlci5saW5lLndpZHRoK3UuZ2FwV2l0aFBhdGhiYXIsej12LnBh dGhiYXIudmlzaWJsZT92LnBhdGhiYXIuc2lkZS5pbmRleE9mKCJib3R0b20iKT4tMT9DK086 LShJK08pOjAsRD17eDA6UCx4MTpQLHkwOnoseTE6eitJfSxSPWZ1bmN0aW9uKHQsZSxyKXt2 YXIgbj12LnRpbGluZy5wYWQsaT1mdW5jdGlvbih0KXtyZXR1cm4gdC1uPD1lLngwfSxhPWZ1 bmN0aW9uKHQpe3JldHVybiB0K24+PWUueDF9LG89ZnVuY3Rpb24odCl7cmV0dXJuIHQtbjw9 ZS55MH0scz1mdW5jdGlvbih0KXtyZXR1cm4gdCtuPj1lLnkxfTtyZXR1cm4gdC54MD09PWUu eDAmJnQueDE9PT1lLngxJiZ0LnkwPT09ZS55MCYmdC55MT09PWUueTE/e3gwOnQueDAseDE6 dC54MSx5MDp0LnkwLHkxOnQueTF9Ont4MDppKHQueDAtbik/MDphKHQueDAtbik/clswXTp0 LngwLHgxOmkodC54MStuKT8wOmEodC54MStuKT9yWzBdOnQueDEseTA6byh0LnkwLW4pPzA6 cyh0LnkwLW4pP3JbMV06dC55MCx5MTpvKHQueTErbik/MDpzKHQueTErbik/clsxXTp0Lnkx fX0sRj1udWxsLEI9e30sTj17fSxqPW51bGwsVT1mdW5jdGlvbih0LGUpe3JldHVybiBlP0Jb aCh0KV06TltoKHQpXX0sVj1mdW5jdGlvbih0LGUscixuKXtpZihlKXJldHVybiBCW2goeCld fHxEO3ZhciBpPU5bdi5sZXZlbF18fHI7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0LmRh dGEuZGVwdGgtYi5kYXRhLmRlcHRoPE19KHQpP1IodCxpLG4pOnt9fTtnLmhhc011bHRpcGxl Um9vdHMmJmsmJk0rKyx2Ll9tYXhEZXB0aD1NLHYuX2JhY2tncm91bmRDb2xvcj1tLnBhcGVy X2JnY29sb3Isdi5fZW50cnlEZXB0aD1iLmRhdGEuZGVwdGgsdi5fYXRSb290TGV2ZWw9azt2 YXIgSD0tTC8yK1MubCtTLncqKEUueFsxXStFLnhbMF0pLzIscT0tQy8yK1MudCtTLmgqKDEt KEUueVsxXStFLnlbMF0pLzIpLEc9ZnVuY3Rpb24odCl7cmV0dXJuIEgrdH0sWT1mdW5jdGlv bih0KXtyZXR1cm4gcSt0fSxXPVkoMCksWD1HKDApLFo9ZnVuY3Rpb24odCl7cmV0dXJuIFgr dH0sSj1mdW5jdGlvbih0KXtyZXR1cm4gVyt0fTtmdW5jdGlvbiBLKHQsZSl7cmV0dXJuIHQr IiwiK2V9dmFyIFE9WigwKSwkPWZ1bmN0aW9uKHQpe3QueD1NYXRoLm1heChRLHQueCl9LHR0 PXYucGF0aGJhci5lZGdlc2hhcGUsZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10LngwLG49dC54 MSxpPXQueTAsYT10LnkxLG89dC50ZXh0QkIsdT1mdW5jdGlvbih0KXtyZXR1cm4tMSE9PXYu dGV4dHBvc2l0aW9uLmluZGV4T2YodCl9LGY9dSgiYm90dG9tIiksaD11KCJ0b3AiKXx8ZS5p c0hlYWRlciYmIWY/InN0YXJ0IjpmPyJlbmQiOiJtaWRkbGUiLHA9dSgicmlnaHQiKSxkPXUo ImxlZnQiKXx8ZS5vblBhdGhiYXI/LTE6cD8xOjAsZz12W3k/InRpbGluZyI6Im1hcmtlciJd LnBhZDtpZihlLmlzSGVhZGVyKXtpZigocis9KHk/ZzpnLmwpLXMpPj0obi09KHk/ZzpnLnIp LXMpKXt2YXIgeD0ocituKS8yO3I9eCxuPXh9dmFyIGI7Zj9pPChiPWEtKHk/ZzpnLmIpKSYm YjxhJiYoaT1iKTppPChiPWkrKHk/ZzpnLnQpKSYmYjxhJiYoYT1iKX12YXIgXz1sKHIsbixp LGEsbyx7aXNIb3Jpem9udGFsOiExLGNvbnN0cmFpbmVkOiEwLGFuZ2xlOjAsYW5jaG9yOmgs bGVmdFRvUmlnaHQ6ZH0pO3JldHVybiBfLmZvbnRTaXplPWUuZm9udFNpemUsXy50YXJnZXRY PUcoXy50YXJnZXRYKSxfLnRhcmdldFk9WShfLnRhcmdldFkpLGlzTmFOKF8udGFyZ2V0WCl8 fGlzTmFOKF8udGFyZ2V0WSk/e306KHIhPT1uJiZpIT09YSYmYyh2LnR5cGUsXyxtKSx7c2Nh bGU6Xy5zY2FsZSxyb3RhdGU6Xy5yb3RhdGUsdGV4dFg6Xy50ZXh0WCx0ZXh0WTpfLnRleHRZ LGFuY2hvclg6Xy5hbmNob3JYLGFuY2hvclk6Xy5hbmNob3JZLHRhcmdldFg6Xy50YXJnZXRY LHRhcmdldFk6Xy50YXJnZXRZfSl9LHJ0PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByLG49MCxp PXQ7IXImJm48TTspbisrLChpPWkucGFyZW50KT9yPVUoaSxlKTpuPU07cmV0dXJuIHJ8fHt9 fSxudD1mdW5jdGlvbih0LGUscixuLGEpe3ZhciBzLGw9VSh0LGUpO2lmKGwpcz1sO2Vsc2Ug aWYoZSlzPUQ7ZWxzZSBpZihGKWlmKHQucGFyZW50KXt2YXIgYz1qfHxyO2MmJiFlP3M9Uih0 LGMsbik6KHM9e30sby5leHRlbmRGbGF0KHMscnQodCxlKSkpfWVsc2Ugcz1vLmV4dGVuZEZs YXQoe30sdCkseSYmKCJoIj09PWEub3JpZW50YXRpb24/YS5mbGlwWD9zLngwPXQueDE6cy54 MT0wOmEuZmxpcFk/cy55MD10LnkxOnMueTE9MCk7ZWxzZSBzPXt9O3JldHVybiBpKHMse3gw OnQueDAseDE6dC54MSx5MDp0LnkwLHkxOnQueTF9KX0saXQ9ZnVuY3Rpb24odCxlLHIsbil7 dmFyIHM9VSh0LGUpLGw9e30sdT1WKHQsZSxyLG4pO28uZXh0ZW5kRmxhdChsLHt0cmFuc2Zv cm06ZXQoe3gwOnUueDAseDE6dS54MSx5MDp1LnkwLHkxOnUueTEsdGV4dEJCOnQudGV4dEJC LF90ZXh0OnQuX3RleHR9LHtpc0hlYWRlcjphLmlzSGVhZGVyKHQsdil9KX0pLHM/bD1zOnQu cGFyZW50JiZvLmV4dGVuZEZsYXQobCxydCh0LGUpKTt2YXIgZj10LnRyYW5zZm9ybTtyZXR1 cm4gdC54MCE9PXQueDEmJnQueTAhPT10LnkxJiZjKHYudHlwZSxmLG0pLGkobCx7dHJhbnNm b3JtOntzY2FsZTpmLnNjYWxlLHJvdGF0ZTpmLnJvdGF0ZSx0ZXh0WDpmLnRleHRYLHRleHRZ OmYudGV4dFksYW5jaG9yWDpmLmFuY2hvclgsYW5jaG9yWTpmLmFuY2hvclksdGFyZ2V0WDpm LnRhcmdldFgsdGFyZ2V0WTpmLnRhcmdldFl9fSl9LGF0PWZ1bmN0aW9uKHQsZSxyLGEsbyl7 dmFyIHM9YVswXSxsPWFbMV07QT90LmV4aXQoKS50cmFuc2l0aW9uKCkuZWFjaCgoZnVuY3Rp b24oKXt2YXIgdD1uLnNlbGVjdCh0aGlzKTt0LnNlbGVjdCgicGF0aC5zdXJmYWNlIikudHJh bnNpdGlvbigpLmF0dHJUd2VlbigiZCIsKGZ1bmN0aW9uKHQpe3ZhciByPWZ1bmN0aW9uKHQs ZSxyLG4pe3ZhciBhLG89VSh0LGUpO2lmKGUpYT1EO2Vsc2V7dmFyIHM9VShiLGUpO2E9cz9S KHQscyxuKTp7fX1yZXR1cm4gaShvLGEpfSh0LGUsMCxbcyxsXSk7cmV0dXJuIGZ1bmN0aW9u KHQpe3JldHVybiBvKHIodCkpfX0pKSx0LnNlbGVjdCgiZy5zbGljZXRleHQiKS5hdHRyKCJv cGFjaXR5IiwwKX0pKS5yZW1vdmUoKTp0LmV4aXQoKS5yZW1vdmUoKX0sb3Q9ZnVuY3Rpb24o dCl7dmFyIGU9dC50cmFuc2Zvcm07cmV0dXJuIHQueDAhPT10LngxJiZ0LnkwIT09dC55MSYm Yyh2LnR5cGUsZSxtKSxvLmdldFRleHRUcmFuc2Zvcm0oe3RleHRYOmUudGV4dFgsdGV4dFk6 ZS50ZXh0WSxhbmNob3JYOmUuYW5jaG9yWCxhbmNob3JZOmUuYW5jaG9yWSx0YXJnZXRYOmUu dGFyZ2V0WCx0YXJnZXRZOmUudGFyZ2V0WSxzY2FsZTplLnNjYWxlLHJvdGF0ZTplLnJvdGF0 ZX0pfTtBJiYody5lYWNoKChmdW5jdGlvbih0KXtCW2godCldPXt4MDp0LngwLHgxOnQueDEs eTA6dC55MCx5MTp0LnkxfSx0LnRyYW5zZm9ybSYmKEJbaCh0KV0udHJhbnNmb3JtPXt0ZXh0 WDp0LnRyYW5zZm9ybS50ZXh0WCx0ZXh0WTp0LnRyYW5zZm9ybS50ZXh0WSxhbmNob3JYOnQu dHJhbnNmb3JtLmFuY2hvclgsYW5jaG9yWTp0LnRyYW5zZm9ybS5hbmNob3JZLHRhcmdldFg6 dC50cmFuc2Zvcm0udGFyZ2V0WCx0YXJnZXRZOnQudHJhbnNmb3JtLnRhcmdldFksc2NhbGU6 dC50cmFuc2Zvcm0uc2NhbGUscm90YXRlOnQudHJhbnNmb3JtLnJvdGF0ZX0pfSkpLFQuZWFj aCgoZnVuY3Rpb24odCl7TltoKHQpXT17eDA6dC54MCx4MTp0LngxLHkwOnQueTAseTE6dC55 MX0sdC50cmFuc2Zvcm0mJihOW2godCldLnRyYW5zZm9ybT17dGV4dFg6dC50cmFuc2Zvcm0u dGV4dFgsdGV4dFk6dC50cmFuc2Zvcm0udGV4dFksYW5jaG9yWDp0LnRyYW5zZm9ybS5hbmNo b3JYLGFuY2hvclk6dC50cmFuc2Zvcm0uYW5jaG9yWSx0YXJnZXRYOnQudHJhbnNmb3JtLnRh cmdldFgsdGFyZ2V0WTp0LnRyYW5zZm9ybS50YXJnZXRZLHNjYWxlOnQudHJhbnNmb3JtLnNj YWxlLHJvdGF0ZTp0LnRyYW5zZm9ybS5yb3RhdGV9KSwhRiYmYS5pc0VudHJ5KHQpJiYoRj10 KX0pKSksaj1kKHQsZSxiLFQse3dpZHRoOkwsaGVpZ2h0OkMsdmlld1g6Ryx2aWV3WTpZLHBh dGhTbGljZTpmdW5jdGlvbih0KXt2YXIgZT1HKHQueDApLHI9Ryh0LngxKSxuPVkodC55MCks aT1ZKHQueTEpLGE9ci1lLG89aS1uO2lmKCFhfHwhbylyZXR1cm4iIjtyZXR1cm4iTSIrSyhl LG4rMCkrIkwiK0soci0wLG4pKyJMIitLKHIsaS0wKSsiTCIrSyhlKzAsaSkrIloifSx0b01v dmVJbnNpZGVTbGljZTpldCxwcmV2RW50cnk6RixtYWtlVXBkYXRlU2xpY2VJbnRlcnBvbGF0 b3I6bnQsbWFrZVVwZGF0ZVRleHRJbnRlcnBvbGF0b3I6aXQsaGFuZGxlU2xpY2VzRXhpdDph dCxoYXNUcmFuc2l0aW9uOkEsc3RyVHJhbnNmb3JtOm90fSksdi5wYXRoYmFyLnZpc2libGU/ Zih0LGUsYix3LHtiYXJEaWZZOnosd2lkdGg6UCxoZWlnaHQ6SSx2aWV3WDpaLHZpZXdZOkos cGF0aFNsaWNlOmZ1bmN0aW9uKHQpe3ZhciBlPVooTWF0aC5tYXgoTWF0aC5taW4odC54MCx0 LngwKSwwKSkscj1aKE1hdGgubWluKE1hdGgubWF4KHQueDEsdC54MSksUCkpLG49Sih0Lnkw KSxpPUoodC55MSksYT1JLzIsbz17fSxzPXt9O28ueD1lLHMueD1yLG8ueT1zLnk9KG4raSkv Mjt2YXIgbD17eDplLHk6bn0sYz17eDpyLHk6bn0sdT17eDpyLHk6aX0sZj17eDplLHk6aX07 cmV0dXJuIj4iPT09dHQ/KGwueC09YSxjLngtPWEsdS54LT1hLGYueC09YSk6Ii8iPT09dHQ/ KHUueC09YSxmLngtPWEsby54LT1hLzIscy54LT1hLzIpOiJcXCI9PT10dD8obC54LT1hLGMu eC09YSxvLngtPWEvMixzLngtPWEvMik6IjwiPT09dHQmJihvLngtPWEscy54LT1hKSwkKGwp LCQoZiksJChvKSwkKGMpLCQodSksJChzKSwiTSIrSyhsLngsbC55KSsiTCIrSyhjLngsYy55 KSsiTCIrSyhzLngscy55KSsiTCIrSyh1LngsdS55KSsiTCIrSyhmLngsZi55KSsiTCIrSyhv Lngsby55KSsiWiJ9LHRvTW92ZUluc2lkZVNsaWNlOmV0LG1ha2VVcGRhdGVTbGljZUludGVy cG9sYXRvcjpudCxtYWtlVXBkYXRlVGV4dEludGVycG9sYXRvcjppdCxoYW5kbGVTbGljZXNF eGl0OmF0LGhhc1RyYW5zaXRpb246QSxzdHJUcmFuc2Zvcm06b3R9KTp3LnJlbW92ZSgpfX0s eyIuLi8uLi9saWIiOjUwMywiLi4vYmFyL2NvbnN0YW50cyI6NjUwLCIuLi9iYXIvcGxvdCI6 NjU5LCIuLi9iYXIvdW5pZm9ybV90ZXh0Ijo2NjQsIi4uL3N1bmJ1cnN0L2hlbHBlcnMiOjEw NTUsIi4vY29uc3RhbnRzIjoxMDc4LCIuL2RyYXdfYW5jZXN0b3JzIjoxMDgxLCJAcGxvdGx5 L2QzIjo1OCwiZDMtaW50ZXJwb2xhdGUiOjExNn1dLDEwOTA6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiQHBsb3RseS9kMyIpLGk9dCgiLi4vLi4vY29tcG9uZW50 cy9jb2xvciIpLGE9dCgiLi4vLi4vbGliIiksbz10KCIuLi9zdW5idXJzdC9oZWxwZXJzIiks cz10KCIuLi9iYXIvdW5pZm9ybV90ZXh0IikucmVzaXplVGV4dDtmdW5jdGlvbiBsKHQsZSxy LG4pe3ZhciBzLGwsYz0obnx8e30pLmhvdmVyZWQsdT1lLmRhdGEuZGF0YSxmPXUuaSxoPXUu Y29sb3IscD1vLmlzSGllcmFyY2h5Um9vdChlKSxkPTE7aWYoYylzPXIuX2hvdmVyZWQubWFy a2VyLmxpbmUuY29sb3IsbD1yLl9ob3ZlcmVkLm1hcmtlci5saW5lLndpZHRoO2Vsc2UgaWYo cCYmaD09PXIucm9vdC5jb2xvcilkPTEwMCxzPSJyZ2JhKDAsMCwwLDApIixsPTA7ZWxzZSBp ZihzPWEuY2FzdE9wdGlvbihyLGYsIm1hcmtlci5saW5lLmNvbG9yIil8fGkuZGVmYXVsdExp bmUsbD1hLmNhc3RPcHRpb24ocixmLCJtYXJrZXIubGluZS53aWR0aCIpfHwwLCFyLl9oYXND b2xvcnNjYWxlJiYhZS5vblBhdGhiYXIpe3ZhciBtPXIubWFya2VyLmRlcHRoZmFkZTtpZiht KXt2YXIgZyx2PWkuY29tYmluZShpLmFkZE9wYWNpdHkoci5fYmFja2dyb3VuZENvbG9yLC43 NSksaCk7aWYoITA9PT1tKXt2YXIgeT1vLmdldE1heERlcHRoKHIpO2c9aXNGaW5pdGUoeSk/ by5pc0xlYWYoZSk/MDpyLl9tYXhWaXNpYmxlTGF5ZXJzLShlLmRhdGEuZGVwdGgtci5fZW50 cnlEZXB0aCk6ZS5kYXRhLmhlaWdodCsxfWVsc2UgZz1lLmRhdGEuZGVwdGgtci5fZW50cnlE ZXB0aCxyLl9hdFJvb3RMZXZlbHx8ZysrO2lmKGc+MClmb3IodmFyIHg9MDt4PGc7eCsrKXt2 YXIgYj0uNSp4L2c7aD1pLmNvbWJpbmUoaS5hZGRPcGFjaXR5KHYsYiksaCl9fX10LnN0eWxl KCJzdHJva2Utd2lkdGgiLGwpLmNhbGwoaS5maWxsLGgpLmNhbGwoaS5zdHJva2Uscykuc3R5 bGUoIm9wYWNpdHkiLGQpfWUuZXhwb3J0cz17c3R5bGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5f ZnVsbExheW91dC5fdHJlZW1hcGxheWVyLnNlbGVjdEFsbCgiLnRyYWNlIik7cyh0LGUsInRy ZWVtYXAiKSxlLmVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPW4uc2VsZWN0KHRoaXMpLHI9dFsw XS50cmFjZTtlLnN0eWxlKCJvcGFjaXR5IixyLm9wYWNpdHkpLGUuc2VsZWN0QWxsKCJwYXRo LnN1cmZhY2UiKS5lYWNoKChmdW5jdGlvbih0KXtuLnNlbGVjdCh0aGlzKS5jYWxsKGwsdCxy LHtob3ZlcmVkOiExfSl9KSl9KSl9LHN0eWxlT25lOmx9fSx7Ii4uLy4uL2NvbXBvbmVudHMv Y29sb3IiOjM2NiwiLi4vLi4vbGliIjo1MDMsIi4uL2Jhci91bmlmb3JtX3RleHQiOjY2NCwi Li4vc3VuYnVyc3QvaGVscGVycyI6MTA1NSwiQHBsb3RseS9kMyI6NTh9XSwxMDkxOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2JveC9hdHRyaWJ1dGVzIiks aT10KCIuLi8uLi9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxhPXQoIi4uLy4uL3Bsb3RzL2Nh cnRlc2lhbi9heGlzX2Zvcm1hdF9hdHRyaWJ1dGVzIikuYXhpc0hvdmVyRm9ybWF0O2UuZXhw b3J0cz17eTpuLnkseDpuLngseDA6bi54MCx5MDpuLnkwLHhob3ZlcmZvcm1hdDphKCJ4Iiks eWhvdmVyZm9ybWF0OmEoInkiKSxuYW1lOmkoe30sbi5uYW1lLHt9KSxvcmllbnRhdGlvbjpp KHt9LG4ub3JpZW50YXRpb24se30pLGJhbmR3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46 MCxlZGl0VHlwZToiY2FsYyJ9LHNjYWxlZ3JvdXA6e3ZhbFR5cGU6InN0cmluZyIsZGZsdDoi IixlZGl0VHlwZToiY2FsYyJ9LHNjYWxlbW9kZTp7dmFsVHlwZToiZW51bWVyYXRlZCIsdmFs dWVzOlsid2lkdGgiLCJjb3VudCJdLGRmbHQ6IndpZHRoIixlZGl0VHlwZToiY2FsYyJ9LHNw YW5tb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJzb2Z0IiwiaGFyZCIsIm1h bnVhbCJdLGRmbHQ6InNvZnQiLGVkaXRUeXBlOiJjYWxjIn0sc3Bhbjp7dmFsVHlwZToiaW5m b19hcnJheSIsaXRlbXM6W3t2YWxUeXBlOiJhbnkiLGVkaXRUeXBlOiJjYWxjIn0se3ZhbFR5 cGU6ImFueSIsZWRpdFR5cGU6ImNhbGMifV0sZWRpdFR5cGU6ImNhbGMifSxsaW5lOntjb2xv cjp7dmFsVHlwZToiY29sb3IiLGVkaXRUeXBlOiJzdHlsZSJ9LHdpZHRoOnt2YWxUeXBlOiJu dW1iZXIiLG1pbjowLGRmbHQ6MixlZGl0VHlwZToic3R5bGUifSxlZGl0VHlwZToicGxvdCJ9 LGZpbGxjb2xvcjpuLmZpbGxjb2xvcixwb2ludHM6aSh7fSxuLmJveHBvaW50cyx7fSksaml0 dGVyOmkoe30sbi5qaXR0ZXIse30pLHBvaW50cG9zOmkoe30sbi5wb2ludHBvcyx7fSksd2lk dGg6aSh7fSxuLndpZHRoLHt9KSxtYXJrZXI6bi5tYXJrZXIsdGV4dDpuLnRleHQsaG92ZXJ0 ZXh0Om4uaG92ZXJ0ZXh0LGhvdmVydGVtcGxhdGU6bi5ob3ZlcnRlbXBsYXRlLGJveDp7dmlz aWJsZTp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMSxlZGl0VHlwZToicGxvdCJ9LHdpZHRo Ont2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6LjI1LGVkaXRUeXBlOiJwbG90 In0sZmlsbGNvbG9yOnt2YWxUeXBlOiJjb2xvciIsZWRpdFR5cGU6InN0eWxlIn0sbGluZTp7 Y29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlwZToic3R5bGUifSx3aWR0aDp7dmFsVHlw ZToibnVtYmVyIixtaW46MCxlZGl0VHlwZToic3R5bGUifSxlZGl0VHlwZToic3R5bGUifSxl ZGl0VHlwZToicGxvdCJ9LG1lYW5saW5lOnt2aXNpYmxlOnt2YWxUeXBlOiJib29sZWFuIixk Zmx0OiExLGVkaXRUeXBlOiJwbG90In0sY29sb3I6e3ZhbFR5cGU6ImNvbG9yIixlZGl0VHlw ZToic3R5bGUifSx3aWR0aDp7dmFsVHlwZToibnVtYmVyIixtaW46MCxlZGl0VHlwZToic3R5 bGUifSxlZGl0VHlwZToicGxvdCJ9LHNpZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVl czpbImJvdGgiLCJwb3NpdGl2ZSIsIm5lZ2F0aXZlIl0sZGZsdDoiYm90aCIsZWRpdFR5cGU6 ImNhbGMifSxvZmZzZXRncm91cDpuLm9mZnNldGdyb3VwLGFsaWdubWVudGdyb3VwOm4uYWxp Z25tZW50Z3JvdXAsc2VsZWN0ZWQ6bi5zZWxlY3RlZCx1bnNlbGVjdGVkOm4udW5zZWxlY3Rl ZCxob3Zlcm9uOnt2YWxUeXBlOiJmbGFnbGlzdCIsZmxhZ3M6WyJ2aW9saW5zIiwicG9pbnRz Iiwia2RlIl0sZGZsdDoidmlvbGlucytwb2ludHMra2RlIixleHRyYXM6WyJhbGwiXSxlZGl0 VHlwZToic3R5bGUifX19LHsiLi4vLi4vbGliL2V4dGVuZCI6NDkzLCIuLi8uLi9wbG90cy9j YXJ0ZXNpYW4vYXhpc19mb3JtYXRfYXR0cmlidXRlcyI6NTU3LCIuLi9ib3gvYXR0cmlidXRl cyI6NjczfV0sMTA5MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIu Li8uLi9saWIiKSxpPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIiksYT10KCIuLi9i b3gvY2FsYyIpLG89dCgiLi9oZWxwZXJzIikscz10KCIuLi8uLi9jb25zdGFudHMvbnVtZXJp Y2FsIikuQkFETlVNO2Z1bmN0aW9uIGwodCxlLHIpe3ZhciBpPWUubWF4LWUubWluO2lmKCFp KXJldHVybiB0LmJhbmR3aWR0aD90LmJhbmR3aWR0aDowO2lmKHQuYmFuZHdpZHRoKXJldHVy biBNYXRoLm1heCh0LmJhbmR3aWR0aCxpLzFlNCk7dmFyIGE9ci5sZW5ndGgsbz1uLnN0ZGV2 KHIsYS0xLGUubWVhbik7cmV0dXJuIE1hdGgubWF4KGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4g MS4wNTkqTWF0aC5taW4oZSxyLzEuMzQ5KSpNYXRoLnBvdyh0LC0uMil9KGEsbyxlLnEzLWUu cTEpLGkvMTAwKX1mdW5jdGlvbiBjKHQsZSxyLG4pe3ZhciBhLG89dC5zcGFubW9kZSxsPXQu c3Bhbnx8W10sYz1bZS5taW4sZS5tYXhdLHU9W2UubWluLTIqbixlLm1heCsyKm5dO2Z1bmN0 aW9uIGYobil7dmFyIGk9bFtuXSxhPSJtdWx0aWNhdGVnb3J5Ij09PXIudHlwZT9yLnIyYyhp KTpyLmQyYyhpLDAsdFtlLnZhbExldHRlcisiY2FsZW5kYXIiXSk7cmV0dXJuIGE9PT1zP3Vb bl06YX12YXIgaD17dHlwZToibGluZWFyIixyYW5nZTphPSJzb2Z0Ij09PW8/dToiaGFyZCI9 PT1vP2M6W2YoMCksZigxKV19O3JldHVybiBpLnNldENvbnZlcnQoaCksaC5jbGVhblJhbmdl KCksYX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1hKHQsZSk7aWYoclswXS50LmVt cHR5KXJldHVybiByO2Zvcih2YXIgcz10Ll9mdWxsTGF5b3V0LHU9aS5nZXRGcm9tSWQodCxl WyJoIj09PWUub3JpZW50YXRpb24/InhheGlzIjoieWF4aXMiXSksZj0xLzAsaD0tMS8wLHA9 MCxkPTAsbT0wO208ci5sZW5ndGg7bSsrKXt2YXIgZz1yW21dLHY9Zy5wdHMubWFwKG8uZXh0 cmFjdFZhbCkseT1nLmJhbmR3aWR0aD1sKGUsZyx2KSx4PWcuc3Bhbj1jKGUsZyx1LHkpO2lm KGcubWluPT09Zy5tYXgmJjA9PT15KXg9Zy5zcGFuPVtnLm1pbixnLm1heF0sZy5kZW5zaXR5 PVt7djoxLHQ6eFswXX1dLGcuYmFuZHdpZHRoPXkscD1NYXRoLm1heChwLDEpO2Vsc2V7dmFy IGI9eFsxXS14WzBdLF89TWF0aC5jZWlsKGIvKHkvMykpLHc9Yi9fO2lmKCFpc0Zpbml0ZSh3 KXx8IWlzRmluaXRlKF8pKXJldHVybiBuLmVycm9yKCJTb21ldGhpbmcgd2VudCB3cm9uZyB3 aXRoIGNvbXB1dGluZyB0aGUgdmlvbGluIHNwYW4iKSxyWzBdLnQuZW1wdHk9ITAscjt2YXIg VD1vLm1ha2VLREUoZyxlLHYpO2cuZGVuc2l0eT1uZXcgQXJyYXkoXyk7Zm9yKHZhciBrPTAs QT14WzBdO0E8eFsxXSt3LzI7aysrLEErPXcpe3ZhciBNPVQoQSk7Zy5kZW5zaXR5W2tdPXt2 Ok0sdDpBfSxwPU1hdGgubWF4KHAsTSl9fWQ9TWF0aC5tYXgoZCx2Lmxlbmd0aCksZj1NYXRo Lm1pbihmLHhbMF0pLGg9TWF0aC5tYXgoaCx4WzFdKX12YXIgUz1pLmZpbmRFeHRyZW1lcyh1 LFtmLGhdLHtwYWRkZWQ6ITB9KTtpZihlLl9leHRyZW1lc1t1Ll9pZF09UyxlLndpZHRoKXJb MF0udC5tYXhLREU9cDtlbHNle3ZhciBFPXMuX3Zpb2xpblNjYWxlR3JvdXBTdGF0cyxMPWUu c2NhbGVncm91cCxDPUVbTF07Qz8oQy5tYXhLREU9TWF0aC5tYXgoQy5tYXhLREUscCksQy5t YXhDb3VudD1NYXRoLm1heChDLm1heENvdW50LGQpKTpFW0xdPXttYXhLREU6cCxtYXhDb3Vu dDpkfX1yZXR1cm4gclswXS50LmxhYmVscy5rZGU9bi5fKHQsImtkZToiKSxyfX0seyIuLi8u Li9jb25zdGFudHMvbnVtZXJpY2FsIjo0NzksIi4uLy4uL2xpYiI6NTAzLCIuLi8uLi9wbG90 cy9jYXJ0ZXNpYW4vYXhlcyI6NTU0LCIuLi9ib3gvY2FsYyI6Njc0LCIuL2hlbHBlcnMiOjEw OTV9XSwxMDkzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uL2Jv eC9jcm9zc190cmFjZV9jYWxjIikuc2V0UG9zaXRpb25PZmZzZXQsaT1bInYiLCJoIl07ZS5l eHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQuY2FsY2RhdGEsYT1lLnhheGlzLG89 ZS55YXhpcyxzPTA7czxpLmxlbmd0aDtzKyspe2Zvcih2YXIgbD1pW3NdLGM9ImgiPT09bD9v OmEsdT1bXSxmPTA7ZjxyLmxlbmd0aDtmKyspe3ZhciBoPXJbZl0scD1oWzBdLnQsZD1oWzBd LnRyYWNlOyEwIT09ZC52aXNpYmxlfHwidmlvbGluIiE9PWQudHlwZXx8cC5lbXB0eXx8ZC5v cmllbnRhdGlvbiE9PWx8fGQueGF4aXMhPT1hLl9pZHx8ZC55YXhpcyE9PW8uX2lkfHx1LnB1 c2goZil9bigidmlvbGluIix0LHUsYyl9fX0seyIuLi9ib3gvY3Jvc3NfdHJhY2VfY2FsYyI6 Njc1fV0sMTA5NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8u Li9saWIiKSxpPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSxhPXQoIi4uL2JveC9kZWZh dWx0cyIpLG89dCgiLi9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHMp e2Z1bmN0aW9uIGwocixpKXtyZXR1cm4gbi5jb2VyY2UodCxlLG8scixpKX1mdW5jdGlvbiBj KHIsaSl7cmV0dXJuIG4uY29lcmNlMih0LGUsbyxyLGkpfWlmKGEuaGFuZGxlU2FtcGxlRGVm YXVsdHModCxlLGwscyksITEhPT1lLnZpc2libGUpe2woImJhbmR3aWR0aCIpLGwoInNpZGUi KSxsKCJ3aWR0aCIpfHwobCgic2NhbGVncm91cCIsZS5uYW1lKSxsKCJzY2FsZW1vZGUiKSk7 dmFyIHUsZj1sKCJzcGFuIik7QXJyYXkuaXNBcnJheShmKSYmKHU9Im1hbnVhbCIpLGwoInNw YW5tb2RlIix1KTt2YXIgaD1sKCJsaW5lLmNvbG9yIiwodC5tYXJrZXJ8fHt9KS5jb2xvcnx8 cikscD1sKCJsaW5lLndpZHRoIiksZD1sKCJmaWxsY29sb3IiLGkuYWRkT3BhY2l0eShlLmxp bmUuY29sb3IsLjUpKTthLmhhbmRsZVBvaW50c0RlZmF1bHRzKHQsZSxsLHtwcmVmaXg6IiJ9 KTt2YXIgbT1jKCJib3gud2lkdGgiKSxnPWMoImJveC5maWxsY29sb3IiLGQpLHY9YygiYm94 LmxpbmUuY29sb3IiLGgpLHk9YygiYm94LmxpbmUud2lkdGgiLHApO2woImJveC52aXNpYmxl IixCb29sZWFuKG18fGd8fHZ8fHkpKXx8KGUuYm94PXt2aXNpYmxlOiExfSk7dmFyIHg9Yygi bWVhbmxpbmUuY29sb3IiLGgpLGI9YygibWVhbmxpbmUud2lkdGgiLHApO2woIm1lYW5saW5l LnZpc2libGUiLEJvb2xlYW4oeHx8YikpfHwoZS5tZWFubGluZT17dmlzaWJsZTohMX0pfX19 LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6MzY2LCIuLi8uLi9saWIiOjUwMywiLi4vYm94 L2RlZmF1bHRzIjo2NzYsIi4vYXR0cmlidXRlcyI6MTA5MX1dLDEwOTU6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT1mdW5jdGlvbih0KXty ZXR1cm4gMS9NYXRoLnNxcnQoMipNYXRoLlBJKSpNYXRoLmV4cCgtLjUqdCp0KX07ci5tYWtl S0RFPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yLmxlbmd0aCxhPWksbz10LmJhbmR3aWR0aCxz PTEvKG4qbyk7cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLGk9MDtpPG47aSsrKWUr PWEoKHQtcltpXSkvbyk7cmV0dXJuIHMqZX19LHIuZ2V0UG9zaXRpb25PbktkZVBhdGg9ZnVu Y3Rpb24odCxlLHIpe3ZhciBpLGE7ImgiPT09ZS5vcmllbnRhdGlvbj8oaT0ieSIsYT0ieCIp OihpPSJ4IixhPSJ5Iik7dmFyIG89bi5maW5kUG9pbnRPblBhdGgodC5wYXRoLHIsYSx7cGF0 aExlbmd0aDp0LnBhdGhMZW5ndGh9KSxzPXQucG9zQ2VudGVyUHgsbD1vW2ldO3JldHVyblts LCJib3RoIj09PWUuc2lkZT8yKnMtbDpzXX0sci5nZXRLZGVWYWx1ZT1mdW5jdGlvbih0LGUs bil7dmFyIGk9dC5wdHMubWFwKHIuZXh0cmFjdFZhbCk7cmV0dXJuIHIubWFrZUtERSh0LGUs aSkobikvdC5wb3NEZW5zaXR5U2NhbGV9LHIuZXh0cmFjdFZhbD1mdW5jdGlvbih0KXtyZXR1 cm4gdC52fX0seyIuLi8uLi9saWIiOjUwM31dLDEwOTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNp YW4vYXhlcyIpLGE9dCgiLi4vYm94L2hvdmVyIiksbz10KCIuL2hlbHBlcnMiKTtlLmV4cG9y dHM9ZnVuY3Rpb24odCxlLHIscyxsKXtsfHwobD17fSk7dmFyIGMsdSxmPWwuaG92ZXJMYXll cixoPXQuY2QscD1oWzBdLnRyYWNlLGQ9cC5ob3Zlcm9uLG09LTEhPT1kLmluZGV4T2YoInZp b2xpbnMiKSxnPS0xIT09ZC5pbmRleE9mKCJrZGUiKSx2PVtdO2lmKG18fGcpe3ZhciB5PWEu aG92ZXJPbkJveGVzKHQsZSxyLHMpO2lmKGcmJnkubGVuZ3RoPjApe3ZhciB4LGIsXyx3LFQs az10LnhhLEE9dC55YTsiaCI9PT1wLm9yaWVudGF0aW9uPyhUPWUseD0ieSIsXz1BLGI9Ingi LHc9ayk6KFQ9cix4PSJ4IixfPWssYj0ieSIsdz1BKTt2YXIgTT1oW3QuaW5kZXhdO2lmKFQ+ PU0uc3BhblswXSYmVDw9TS5zcGFuWzFdKXt2YXIgUz1uLmV4dGVuZEZsYXQoe30sdCksRT13 LmMycChULCEwKSxMPW8uZ2V0S2RlVmFsdWUoTSxwLFQpLEM9by5nZXRQb3NpdGlvbk9uS2Rl UGF0aChNLHAsRSksUD1fLl9vZmZzZXQsST1fLl9sZW5ndGg7U1t4KyIwIl09Q1swXSxTW3gr IjEiXT1DWzFdLFNbYisiMCJdPVNbYisiMSJdPUUsU1tiKyJMYWJlbCJdPWIrIjogIitpLmhv dmVyTGFiZWxUZXh0KHcsVCxwW2IrImhvdmVyZm9ybWF0Il0pKyIsICIraFswXS50LmxhYmVs cy5rZGUrIiAiK0wudG9GaXhlZCgzKSxTLnNwaWtlRGlzdGFuY2U9eVswXS5zcGlrZURpc3Rh bmNlO3ZhciBPPXgrIlNwaWtlIjtTW09dPXlbMF1bT10seVswXS5zcGlrZURpc3RhbmNlPXZv aWQgMCx5WzBdW09dPXZvaWQgMCxTLmhvdmVydGVtcGxhdGU9ITEsdi5wdXNoKFMpLCh1PXtz dHJva2U6dC5jb2xvcn0pW3grIjEiXT1uLmNvbnN0cmFpbihQK0NbMF0sUCxQK0kpLHVbeCsi MiJdPW4uY29uc3RyYWluKFArQ1sxXSxQLFArSSksdVtiKyIxIl09dVtiKyIyIl09dy5fb2Zm c2V0K0V9fW0mJih2PXYuY29uY2F0KHkpKX0tMSE9PWQuaW5kZXhPZigicG9pbnRzIikmJihj PWEuaG92ZXJPblBvaW50cyh0LGUscikpO3ZhciB6PWYuc2VsZWN0QWxsKCIudmlvbGlubGlu ZS0iK3AudWlkKS5kYXRhKHU/WzBdOltdKTtyZXR1cm4gei5lbnRlcigpLmFwcGVuZCgibGlu ZSIpLmNsYXNzZWQoInZpb2xpbmxpbmUtIitwLnVpZCwhMCkuYXR0cigic3Ryb2tlLXdpZHRo IiwxLjUpLHouZXhpdCgpLnJlbW92ZSgpLHouYXR0cih1KSwiY2xvc2VzdCI9PT1zP2M/W2Nd OnY6Yz8odi5wdXNoKGMpLHYpOnZ9fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi8uLi9wbG90cy9j YXJ0ZXNpYW4vYXhlcyI6NTU0LCIuLi9ib3gvaG92ZXIiOjY3OCwiLi9oZWxwZXJzIjoxMDk1 fV0sMTA5NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e2F0dHJp YnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksbGF5b3V0QXR0cmlidXRlczp0KCIuL2xheW91dF9h dHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLGNyb3NzVHJhY2VE ZWZhdWx0czp0KCIuLi9ib3gvZGVmYXVsdHMiKS5jcm9zc1RyYWNlRGVmYXVsdHMsc3VwcGx5 TGF5b3V0RGVmYXVsdHM6dCgiLi9sYXlvdXRfZGVmYXVsdHMiKSxjYWxjOnQoIi4vY2FsYyIp LGNyb3NzVHJhY2VDYWxjOnQoIi4vY3Jvc3NfdHJhY2VfY2FsYyIpLHBsb3Q6dCgiLi9wbG90 Iiksc3R5bGU6dCgiLi9zdHlsZSIpLHN0eWxlT25TZWxlY3Q6dCgiLi4vc2NhdHRlci9zdHls ZSIpLnN0eWxlT25TZWxlY3QsaG92ZXJQb2ludHM6dCgiLi9ob3ZlciIpLHNlbGVjdFBvaW50 czp0KCIuLi9ib3gvc2VsZWN0IiksbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6InZpb2xpbiIs YmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuIiksY2F0ZWdvcmllczpb ImNhcnRlc2lhbiIsInN2ZyIsInN5bWJvbHMiLCJvcmllbnRlZCIsImJveC12aW9saW4iLCJz aG93TGVnZW5kIiwidmlvbGluTGF5b3V0Iiwiem9vbVNjYWxlIl0sbWV0YTp7fX19LHsiLi4v Li4vcGxvdHMvY2FydGVzaWFuIjo1NjgsIi4uL2JveC9kZWZhdWx0cyI6Njc2LCIuLi9ib3gv c2VsZWN0Ijo2ODMsIi4uL3NjYXR0ZXIvc3R5bGUiOjk1MSwiLi9hdHRyaWJ1dGVzIjoxMDkx LCIuL2NhbGMiOjEwOTIsIi4vY3Jvc3NfdHJhY2VfY2FsYyI6MTA5MywiLi9kZWZhdWx0cyI6 MTA5NCwiLi9ob3ZlciI6MTA5NiwiLi9sYXlvdXRfYXR0cmlidXRlcyI6MTA5OCwiLi9sYXlv dXRfZGVmYXVsdHMiOjEwOTksIi4vcGxvdCI6MTEwMCwiLi9zdHlsZSI6MTEwMX1dLDEwOTg6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vYm94L2xheW91dF9h dHRyaWJ1dGVzIiksaT10KCIuLi8uLi9saWIiKS5leHRlbmRGbGF0O2UuZXhwb3J0cz17dmlv bGlubW9kZTppKHt9LG4uYm94bW9kZSx7fSksdmlvbGluZ2FwOmkoe30sbi5ib3hnYXAse30p LHZpb2xpbmdyb3VwZ2FwOmkoe30sbi5ib3hncm91cGdhcCx7fSl9fSx7Ii4uLy4uL2xpYiI6 NTAzLCIuLi9ib3gvbGF5b3V0X2F0dHJpYnV0ZXMiOjY4MH1dLDEwOTk6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vbGliIiksaT10KCIuL2xheW91dF9h dHRyaWJ1dGVzIiksYT10KCIuLi9ib3gvbGF5b3V0X2RlZmF1bHRzIik7ZS5leHBvcnRzPWZ1 bmN0aW9uKHQsZSxyKXthLl9zdXBwbHkodCxlLHIsKGZ1bmN0aW9uKHIsYSl7cmV0dXJuIG4u Y29lcmNlKHQsZSxpLHIsYSl9KSwidmlvbGluIil9fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi9i b3gvbGF5b3V0X2RlZmF1bHRzIjo2ODEsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjEwOTh9XSwx MTAwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIkBwbG90bHkvZDMi KSxpPXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksbz10 KCIuLi9ib3gvcGxvdCIpLHM9dCgiLi4vc2NhdHRlci9saW5lX3BvaW50cyIpLGw9dCgiLi9o ZWxwZXJzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGMpe3ZhciB1PXQuX2Z1bGxMYXlv dXQsZj1lLnhheGlzLGg9ZS55YXhpcztmdW5jdGlvbiBwKHQpe3ZhciBlPXModCx7eGF4aXM6 Zix5YXhpczpoLGNvbm5lY3RHYXBzOiEwLGJhc2VUb2xlcmFuY2U6Ljc1LHNoYXBlOiJzcGxp bmUiLHNpbXBsaWZ5OiEwLGxpbmVhcml6ZWQ6ITB9KTtyZXR1cm4gYS5zbW9vdGhvcGVuKGVb MF0sMSl9aS5tYWtlVHJhY2VHcm91cHMoYyxyLCJ0cmFjZSB2aW9saW5zIikuZWFjaCgoZnVu Y3Rpb24odCl7dmFyIHI9bi5zZWxlY3QodGhpcyksYT10WzBdLHM9YS50LGM9YS50cmFjZTtp ZighMCE9PWMudmlzaWJsZXx8cy5lbXB0eSlyLnJlbW92ZSgpO2Vsc2V7dmFyIGQ9cy5iUG9z LG09cy5iZFBvcyxnPWVbcy52YWxMZXR0ZXIrImF4aXMiXSx2PWVbcy5wb3NMZXR0ZXIrImF4 aXMiXSx5PSJib3RoIj09PWMuc2lkZSx4PXl8fCJwb3NpdGl2ZSI9PT1jLnNpZGUsYj15fHwi bmVnYXRpdmUiPT09Yy5zaWRlLF89ci5zZWxlY3RBbGwoInBhdGgudmlvbGluIikuZGF0YShp LmlkZW50aXR5KTtfLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuc3R5bGUoInZlY3Rvci1lZmZl Y3QiLCJub24tc2NhbGluZy1zdHJva2UiKS5hdHRyKCJjbGFzcyIsInZpb2xpbiIpLF8uZXhp dCgpLnJlbW92ZSgpLF8uZWFjaCgoZnVuY3Rpb24odCl7dmFyIGUscixpLGEsbyxsLGYsaCxf PW4uc2VsZWN0KHRoaXMpLHc9dC5kZW5zaXR5LFQ9dy5sZW5ndGgsaz12LmMybCh0LnBvcytk LCEwKSxBPXYubDJwKGspO2lmKGMud2lkdGgpZT1zLm1heEtERS9tO2Vsc2V7dmFyIE09dS5f dmlvbGluU2NhbGVHcm91cFN0YXRzW2Muc2NhbGVncm91cF07ZT0iY291bnQiPT09Yy5zY2Fs ZW1vZGU/TS5tYXhLREUvbSooTS5tYXhDb3VudC90LnB0cy5sZW5ndGgpOk0ubWF4S0RFL219 aWYoeCl7Zm9yKGY9bmV3IEFycmF5KFQpLG89MDtvPFQ7bysrKShoPWZbb109e30pW3MucG9z TGV0dGVyXT1rK3dbb10udi9lLGhbcy52YWxMZXR0ZXJdPWcuYzJsKHdbb10udCwhMCk7cj1w KGYpfWlmKGIpe2ZvcihmPW5ldyBBcnJheShUKSxsPTAsbz1ULTE7bDxUO2wrKyxvLS0pKGg9 ZltsXT17fSlbcy5wb3NMZXR0ZXJdPWstd1tvXS52L2UsaFtzLnZhbExldHRlcl09Zy5jMmwo d1tvXS50LCEwKTtpPXAoZil9aWYoeSlhPXIrIkwiK2kuc3Vic3RyKDEpKyJaIjtlbHNle3Zh ciBTPVtBLGcuYzJwKHdbMF0udCldLEU9W0EsZy5jMnAod1tULTFdLnQpXTsiaCI9PT1jLm9y aWVudGF0aW9uJiYoUy5yZXZlcnNlKCksRS5yZXZlcnNlKCkpLGE9eD8iTSIrUysiTCIrci5z dWJzdHIoMSkrIkwiK0U6Ik0iK0UrIkwiK2kuc3Vic3RyKDEpKyJMIitTfV8uYXR0cigiZCIs YSksdC5wb3NDZW50ZXJQeD1BLHQucG9zRGVuc2l0eVNjYWxlPWUqbSx0LnBhdGg9Xy5ub2Rl KCksdC5wYXRoTGVuZ3RoPXQucGF0aC5nZXRUb3RhbExlbmd0aCgpLyh5PzI6MSl9KSk7dmFy IHcsVCxrLEE9Yy5ib3gsTT1BLndpZHRoLFM9KEEubGluZXx8e30pLndpZHRoO3k/KHc9bSpN LFQ9MCk6eD8odz1bMCxtKk0vMl0sVD1TKnt4OjEseTotMX1bcy5wb3NMZXR0ZXJdKToodz1b bSpNLzIsMF0sVD1TKnt4Oi0xLHk6MX1bcy5wb3NMZXR0ZXJdKSxvLnBsb3RCb3hBbmRXaGlz a2VycyhyLHtwb3M6dix2YWw6Z30sYyx7YlBvczpkLGJkUG9zOncsYlBvc1B4T2Zmc2V0OlR9 KSxvLnBsb3RCb3hNZWFuKHIse3Bvczp2LHZhbDpnfSxjLHtiUG9zOmQsYmRQb3M6dyxiUG9z UHhPZmZzZXQ6VH0pLCFjLmJveC52aXNpYmxlJiZjLm1lYW5saW5lLnZpc2libGUmJihrPWku aWRlbnRpdHkpO3ZhciBFPXIuc2VsZWN0QWxsKCJwYXRoLm1lYW5saW5lIikuZGF0YShrfHxb XSk7RS5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwibWVhbmxpbmUiKS5z dHlsZSgiZmlsbCIsIm5vbmUiKS5zdHlsZSgidmVjdG9yLWVmZmVjdCIsIm5vbi1zY2FsaW5n LXN0cm9rZSIpLEUuZXhpdCgpLnJlbW92ZSgpLEUuZWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9 Zy5jMnAodC5tZWFuLCEwKSxyPWwuZ2V0UG9zaXRpb25PbktkZVBhdGgodCxjLGUpO24uc2Vs ZWN0KHRoaXMpLmF0dHIoImQiLCJoIj09PWMub3JpZW50YXRpb24/Ik0iK2UrIiwiK3JbMF0r IlYiK3JbMV06Ik0iK3JbMF0rIiwiK2UrIkgiK3JbMV0pfSkpLG8ucGxvdFBvaW50cyhyLHt4 OmYseTpofSxjLHMpfX0pKX19LHsiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIjozODgsIi4u Ly4uL2xpYiI6NTAzLCIuLi9ib3gvcGxvdCI6NjgyLCIuLi9zY2F0dGVyL2xpbmVfcG9pbnRz Ijo5NDEsIi4vaGVscGVycyI6MTA5NSwiQHBsb3RseS9kMyI6NTh9XSwxMTAxOltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIkBwbG90bHkvZDMiKSxpPXQoIi4uLy4u L2NvbXBvbmVudHMvY29sb3IiKSxhPXQoIi4uL3NjYXR0ZXIvc3R5bGUiKS5zdHlsZVBvaW50 cztlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9bi5zZWxlY3QodCkuc2VsZWN0QWxsKCJn LnRyYWNlLnZpb2xpbnMiKTtlLnN0eWxlKCJvcGFjaXR5IiwoZnVuY3Rpb24odCl7cmV0dXJu IHRbMF0udHJhY2Uub3BhY2l0eX0pKSxlLmVhY2goKGZ1bmN0aW9uKGUpe3ZhciByPWVbMF0u dHJhY2Usbz1uLnNlbGVjdCh0aGlzKSxzPXIuYm94fHx7fSxsPXMubGluZXx8e30sYz1yLm1l YW5saW5lfHx7fSx1PWMud2lkdGg7by5zZWxlY3RBbGwoInBhdGgudmlvbGluIikuc3R5bGUo InN0cm9rZS13aWR0aCIsci5saW5lLndpZHRoKyJweCIpLmNhbGwoaS5zdHJva2Usci5saW5l LmNvbG9yKS5jYWxsKGkuZmlsbCxyLmZpbGxjb2xvciksby5zZWxlY3RBbGwoInBhdGguYm94 Iikuc3R5bGUoInN0cm9rZS13aWR0aCIsbC53aWR0aCsicHgiKS5jYWxsKGkuc3Ryb2tlLGwu Y29sb3IpLmNhbGwoaS5maWxsLHMuZmlsbGNvbG9yKTt2YXIgZj17InN0cm9rZS13aWR0aCI6 dSsicHgiLCJzdHJva2UtZGFzaGFycmF5IjoyKnUrInB4LCIrdSsicHgifTtvLnNlbGVjdEFs bCgicGF0aC5tZWFuIikuc3R5bGUoZikuY2FsbChpLnN0cm9rZSxjLmNvbG9yKSxvLnNlbGVj dEFsbCgicGF0aC5tZWFubGluZSIpLnN0eWxlKGYpLmNhbGwoaS5zdHJva2UsYy5jb2xvciks YShvLHIsdCl9KSl9fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjM2NiwiLi4vc2NhdHRl ci9zdHlsZSI6OTUxLCJAcGxvdGx5L2QzIjo1OH1dLDExMDI6W2Z1bmN0aW9uKHQsZSxyKXsi dXNlIHN0cmljdCI7dmFyIG49dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlL2F0dHJp YnV0ZXMiKSxpPXQoIi4uL2lzb3N1cmZhY2UvYXR0cmlidXRlcyIpLGE9dCgiLi4vc3VyZmFj ZS9hdHRyaWJ1dGVzIiksbz10KCIuLi8uLi9wbG90cy9hdHRyaWJ1dGVzIikscz10KCIuLi8u Li9saWIvZXh0ZW5kIikuZXh0ZW5kRmxhdCxsPXQoIi4uLy4uL3Bsb3RfYXBpL2VkaXRfdHlw ZXMiKS5vdmVycmlkZUFsbCxjPWUuZXhwb3J0cz1sKHMoe3g6aS54LHk6aS55LHo6aS56LHZh bHVlOmkudmFsdWUsaXNvbWluOmkuaXNvbWluLGlzb21heDppLmlzb21heCxzdXJmYWNlOmku c3VyZmFjZSxzcGFjZWZyYW1lOntzaG93Ont2YWxUeXBlOiJib29sZWFuIixkZmx0OiExfSxm aWxsOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MX19LHNsaWNlczppLnNs aWNlcyxjYXBzOmkuY2Fwcyx0ZXh0OmkudGV4dCxob3ZlcnRleHQ6aS5ob3ZlcnRleHQseGhv dmVyZm9ybWF0OmkueGhvdmVyZm9ybWF0LHlob3ZlcmZvcm1hdDppLnlob3ZlcmZvcm1hdCx6 aG92ZXJmb3JtYXQ6aS56aG92ZXJmb3JtYXQsdmFsdWVob3ZlcmZvcm1hdDppLnZhbHVlaG92 ZXJmb3JtYXQsaG92ZXJ0ZW1wbGF0ZTppLmhvdmVydGVtcGxhdGV9LG4oIiIse2NvbG9yQXR0 cjoiYHZhbHVlYCIsc2hvd1NjYWxlRGZsdDohMCxlZGl0VHlwZU92ZXJyaWRlOiJjYWxjIn0p LHtjb2xvcmJhcjppLmNvbG9yYmFyLG9wYWNpdHk6aS5vcGFjaXR5LG9wYWNpdHlzY2FsZTph Lm9wYWNpdHlzY2FsZSxsaWdodHBvc2l0aW9uOmkubGlnaHRwb3NpdGlvbixsaWdodGluZzpp LmxpZ2h0aW5nLGZsYXRzaGFkaW5nOmkuZmxhdHNoYWRpbmcsY29udG91cjppLmNvbnRvdXIs aG92ZXJpbmZvOnMoe30sby5ob3ZlcmluZm8pLHNob3dsZWdlbmQ6cyh7fSxvLnNob3dsZWdl bmQse2RmbHQ6ITF9KX0pLCJjYWxjIiwibmVzdGVkIik7Yy54LmVkaXRUeXBlPWMueS5lZGl0 VHlwZT1jLnouZWRpdFR5cGU9Yy52YWx1ZS5lZGl0VHlwZT0iY2FsYytjbGVhckF4aXNUeXBl cyIsYy50cmFuc2Zvcm1zPXZvaWQgMH0seyIuLi8uLi9jb21wb25lbnRzL2NvbG9yc2NhbGUv YXR0cmlidXRlcyI6MzczLCIuLi8uLi9saWIvZXh0ZW5kIjo0OTMsIi4uLy4uL3Bsb3RfYXBp L2VkaXRfdHlwZXMiOjUzNiwiLi4vLi4vcGxvdHMvYXR0cmlidXRlcyI6NTUwLCIuLi9pc29z dXJmYWNlL2F0dHJpYnV0ZXMiOjg2MiwiLi4vc3VyZmFjZS9hdHRyaWJ1dGVzIjoxMDYxfV0s MTEwMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi8uLi8uLi9z dGFja2dsX21vZHVsZXMiKS5nbF9tZXNoM2QsaT10KCIuLi8uLi9saWIvZ2xfZm9ybWF0X2Nv bG9yIikucGFyc2VDb2xvclNjYWxlLGE9dCgiLi4vLi4vbGliL3N0cjJyZ2JhcnJheSIpLG89 dCgiLi4vLi4vY29tcG9uZW50cy9jb2xvcnNjYWxlIikuZXh0cmFjdE9wdHMscz10KCIuLi8u Li9wbG90cy9nbDNkL3ppcDMiKSxsPXQoIi4uL2lzb3N1cmZhY2UvY29udmVydCIpLmZpbmRO ZWFyZXN0T25BeGlzLGM9dCgiLi4vaXNvc3VyZmFjZS9jb252ZXJ0IikuZ2VuZXJhdGVJc29N ZXNoZXM7ZnVuY3Rpb24gdSh0LGUscil7dGhpcy5zY2VuZT10LHRoaXMudWlkPXIsdGhpcy5t ZXNoPWUsdGhpcy5uYW1lPSIiLHRoaXMuZGF0YT1udWxsLHRoaXMuc2hvd0NvbnRvdXI9ITF9 dmFyIGY9dS5wcm90b3R5cGU7Zi5oYW5kbGVQaWNrPWZ1bmN0aW9uKHQpe2lmKHQub2JqZWN0 PT09dGhpcy5tZXNoKXt2YXIgZT10LmRhdGEuaW5kZXgscj10aGlzLmRhdGEuX21lc2hYW2Vd LG49dGhpcy5kYXRhLl9tZXNoWVtlXSxpPXRoaXMuZGF0YS5fbWVzaFpbZV0sYT10aGlzLmRh dGEuX1lzLmxlbmd0aCxvPXRoaXMuZGF0YS5fWnMubGVuZ3RoLHM9bChyLHRoaXMuZGF0YS5f WHMpLmlkLGM9bChuLHRoaXMuZGF0YS5fWXMpLmlkLHU9bChpLHRoaXMuZGF0YS5fWnMpLmlk LGY9dC5pbmRleD11K28qYytvKmEqczt0LnRyYWNlQ29vcmRpbmF0ZT1bdGhpcy5kYXRhLl9t ZXNoWFtmXSx0aGlzLmRhdGEuX21lc2hZW2ZdLHRoaXMuZGF0YS5fbWVzaFpbZl0sdGhpcy5k YXRhLl92YWx1ZVtmXV07dmFyIGg9dGhpcy5kYXRhLmhvdmVydGV4dHx8dGhpcy5kYXRhLnRl eHQ7cmV0dXJuIEFycmF5LmlzQXJyYXkoaCkmJnZvaWQgMCE9PWhbZl0/dC50ZXh0TGFiZWw9 aFtmXTpoJiYodC50ZXh0TGFiZWw9aCksITB9fSxmLnVwZGF0ZT1mdW5jdGlvbih0KXt2YXIg ZT10aGlzLnNjZW5lLHI9ZS5mdWxsU2NlbmVMYXlvdXQ7ZnVuY3Rpb24gbih0LGUscixuKXty ZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0LmQybChlLDAsbikqcn0pKX10aGlz LmRhdGE9Yyh0KTt2YXIgbD17cG9zaXRpb25zOnMobihyLnhheGlzLHQuX21lc2hYLGUuZGF0 YVNjYWxlWzBdLHQueGNhbGVuZGFyKSxuKHIueWF4aXMsdC5fbWVzaFksZS5kYXRhU2NhbGVb MV0sdC55Y2FsZW5kYXIpLG4oci56YXhpcyx0Ll9tZXNoWixlLmRhdGFTY2FsZVsyXSx0Lnpj YWxlbmRhcikpLGNlbGxzOnModC5fbWVzaEksdC5fbWVzaEosdC5fbWVzaEspLGxpZ2h0UG9z aXRpb246W3QubGlnaHRwb3NpdGlvbi54LHQubGlnaHRwb3NpdGlvbi55LHQubGlnaHRwb3Np dGlvbi56XSxhbWJpZW50OnQubGlnaHRpbmcuYW1iaWVudCxkaWZmdXNlOnQubGlnaHRpbmcu ZGlmZnVzZSxzcGVjdWxhcjp0LmxpZ2h0aW5nLnNwZWN1bGFyLHJvdWdobmVzczp0LmxpZ2h0 aW5nLnJvdWdobmVzcyxmcmVzbmVsOnQubGlnaHRpbmcuZnJlc25lbCx2ZXJ0ZXhOb3JtYWxz RXBzaWxvbjp0LmxpZ2h0aW5nLnZlcnRleG5vcm1hbHNlcHNpbG9uLGZhY2VOb3JtYWxzRXBz aWxvbjp0LmxpZ2h0aW5nLmZhY2Vub3JtYWxzZXBzaWxvbixvcGFjaXR5OnQub3BhY2l0eSxv cGFjaXR5c2NhbGU6dC5vcGFjaXR5c2NhbGUsY29udG91ckVuYWJsZTp0LmNvbnRvdXIuc2hv dyxjb250b3VyQ29sb3I6YSh0LmNvbnRvdXIuY29sb3IpLnNsaWNlKDAsMyksY29udG91cldp ZHRoOnQuY29udG91ci53aWR0aCx1c2VGYWNldE5vcm1hbHM6dC5mbGF0c2hhZGluZ30sdT1v KHQpO2wudmVydGV4SW50ZW5zaXR5PXQuX21lc2hJbnRlbnNpdHksbC52ZXJ0ZXhJbnRlbnNp dHlCb3VuZHM9W3UubWluLHUubWF4XSxsLmNvbG9ybWFwPWkodCksdGhpcy5tZXNoLnVwZGF0 ZShsKX0sZi5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5zY2VuZS5nbHBsb3QucmVtb3ZlKHRo aXMubWVzaCksdGhpcy5tZXNoLmRpc3Bvc2UoKX0sZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7 dmFyIHI9dC5nbHBsb3QuZ2wsaT1uKHtnbDpyfSksYT1uZXcgdSh0LGksZS51aWQpO3JldHVy biBpLl90cmFjZT1hLGEudXBkYXRlKGUpLHQuZ2xwbG90LmFkZChpKSxhfX0seyIuLi8uLi8u Li9zdGFja2dsX21vZHVsZXMiOjExMjQsIi4uLy4uL2NvbXBvbmVudHMvY29sb3JzY2FsZSI6 Mzc4LCIuLi8uLi9saWIvZ2xfZm9ybWF0X2NvbG9yIjo0OTksIi4uLy4uL2xpYi9zdHIycmdi YXJyYXkiOjUyOCwiLi4vLi4vcGxvdHMvZ2wzZC96aXAzIjo2MDksIi4uL2lzb3N1cmZhY2Uv Y29udmVydCI6ODY0fV0sMTEwNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg bj10KCIuLi8uLi9saWIiKSxpPXQoIi4vYXR0cmlidXRlcyIpLGE9dCgiLi4vaXNvc3VyZmFj ZS9kZWZhdWx0cyIpLnN1cHBseUlzb0RlZmF1bHRzLG89dCgiLi4vc3VyZmFjZS9kZWZhdWx0 cyIpLm9wYWNpdHlzY2FsZURlZmF1bHRzO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixzKXtm dW5jdGlvbiBsKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxpLHIsYSl9YSh0LGUscixzLGwp LG8odCxlLHMsbCl9fSx7Ii4uLy4uL2xpYiI6NTAzLCIuLi9pc29zdXJmYWNlL2RlZmF1bHRz Ijo4NjUsIi4uL3N1cmZhY2UvZGVmYXVsdHMiOjEwNjQsIi4vYXR0cmlidXRlcyI6MTEwMn1d LDExMDU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXthdHRyaWJ1 dGVzOnQoIi4vYXR0cmlidXRlcyIpLHN1cHBseURlZmF1bHRzOnQoIi4vZGVmYXVsdHMiKSxj YWxjOnQoIi4uL2lzb3N1cmZhY2UvY2FsYyIpLGNvbG9yYmFyOnttaW46ImNtaW4iLG1heDoi Y21heCJ9LHBsb3Q6dCgiLi9jb252ZXJ0IiksbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6InZv bHVtZSIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvZ2wzZCIpLGNhdGVnb3JpZXM6 WyJnbDNkIiwic2hvd0xlZ2VuZCJdLG1ldGE6e319fSx7Ii4uLy4uL3Bsb3RzL2dsM2QiOjU5 OCwiLi4vaXNvc3VyZmFjZS9jYWxjIjo4NjMsIi4vYXR0cmlidXRlcyI6MTEwMiwiLi9jb252 ZXJ0IjoxMTAzLCIuL2RlZmF1bHRzIjoxMTA0fV0sMTEwNjpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCIuLi9iYXIvYXR0cmlidXRlcyIpLGk9dCgiLi4vc2NhdHRl ci9hdHRyaWJ1dGVzIikubGluZSxhPXQoIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiKSxvPXQo Ii4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGlzX2Zvcm1hdF9hdHRyaWJ1dGVzIikuYXhpc0hv dmVyRm9ybWF0LHM9dCgiLi4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyIpLmhvdmVy dGVtcGxhdGVBdHRycyxsPXQoIi4uLy4uL3Bsb3RzL3RlbXBsYXRlX2F0dHJpYnV0ZXMiKS50 ZXh0dGVtcGxhdGVBdHRycyxjPXQoIi4vY29uc3RhbnRzIiksdT10KCIuLi8uLi9saWIvZXh0 ZW5kIikuZXh0ZW5kRmxhdCxmPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKTtmdW5jdGlv biBoKHQpe3JldHVybnttYXJrZXI6e2NvbG9yOnUoe30sbi5tYXJrZXIuY29sb3Ise2FycmF5 T2s6ITEsZWRpdFR5cGU6InN0eWxlIn0pLGxpbmU6e2NvbG9yOnUoe30sbi5tYXJrZXIubGlu ZS5jb2xvcix7YXJyYXlPazohMSxlZGl0VHlwZToic3R5bGUifSksd2lkdGg6dSh7fSxuLm1h cmtlci5saW5lLndpZHRoLHthcnJheU9rOiExLGVkaXRUeXBlOiJzdHlsZSJ9KSxlZGl0VHlw ZToic3R5bGUifSxlZGl0VHlwZToic3R5bGUifSxlZGl0VHlwZToic3R5bGUifX1lLmV4cG9y dHM9e21lYXN1cmU6e3ZhbFR5cGU6ImRhdGFfYXJyYXkiLGRmbHQ6W10sZWRpdFR5cGU6ImNh bGMifSxiYXNlOnt2YWxUeXBlOiJudW1iZXIiLGRmbHQ6bnVsbCxhcnJheU9rOiExLGVkaXRU eXBlOiJjYWxjIn0seDpuLngseDA6bi54MCxkeDpuLmR4LHk6bi55LHkwOm4ueTAsZHk6bi5k eSx4cGVyaW9kOm4ueHBlcmlvZCx5cGVyaW9kOm4ueXBlcmlvZCx4cGVyaW9kMDpuLnhwZXJp b2QwLHlwZXJpb2QwOm4ueXBlcmlvZDAseHBlcmlvZGFsaWdubWVudDpuLnhwZXJpb2RhbGln bm1lbnQseXBlcmlvZGFsaWdubWVudDpuLnlwZXJpb2RhbGlnbm1lbnQseGhvdmVyZm9ybWF0 Om8oIngiKSx5aG92ZXJmb3JtYXQ6bygieSIpLGhvdmVydGV4dDpuLmhvdmVydGV4dCxob3Zl cnRlbXBsYXRlOnMoe30se2tleXM6Yy5ldmVudERhdGFLZXlzfSksaG92ZXJpbmZvOnUoe30s YS5ob3ZlcmluZm8se2ZsYWdzOlsibmFtZSIsIngiLCJ5IiwidGV4dCIsImluaXRpYWwiLCJk ZWx0YSIsImZpbmFsIl19KSx0ZXh0aW5mbzp7dmFsVHlwZToiZmxhZ2xpc3QiLGZsYWdzOlsi bGFiZWwiLCJ0ZXh0IiwiaW5pdGlhbCIsImRlbHRhIiwiZmluYWwiXSxleHRyYXM6WyJub25l Il0sZWRpdFR5cGU6InBsb3QiLGFycmF5T2s6ITF9LHRleHR0ZW1wbGF0ZTpsKHtlZGl0VHlw ZToicGxvdCJ9LHtrZXlzOmMuZXZlbnREYXRhS2V5cy5jb25jYXQoWyJsYWJlbCJdKX0pLHRl eHQ6bi50ZXh0LHRleHRwb3NpdGlvbjpuLnRleHRwb3NpdGlvbixpbnNpZGV0ZXh0YW5jaG9y Om4uaW5zaWRldGV4dGFuY2hvcix0ZXh0YW5nbGU6bi50ZXh0YW5nbGUsdGV4dGZvbnQ6bi50 ZXh0Zm9udCxpbnNpZGV0ZXh0Zm9udDpuLmluc2lkZXRleHRmb250LG91dHNpZGV0ZXh0Zm9u dDpuLm91dHNpZGV0ZXh0Zm9udCxjb25zdHJhaW50ZXh0Om4uY29uc3RyYWludGV4dCxjbGlw b25heGlzOm4uY2xpcG9uYXhpcyxvcmllbnRhdGlvbjpuLm9yaWVudGF0aW9uLG9mZnNldDpu Lm9mZnNldCx3aWR0aDpuLndpZHRoLGluY3JlYXNpbmc6aCgpLGRlY3JlYXNpbmc6aCgpLHRv dGFsczpoKCksY29ubmVjdG9yOntsaW5lOntjb2xvcjp1KHt9LGkuY29sb3Ise2RmbHQ6Zi5k ZWZhdWx0TGluZX0pLHdpZHRoOnUoe30saS53aWR0aCx7ZWRpdFR5cGU6InBsb3QifSksZGFz aDppLmRhc2gsZWRpdFR5cGU6InBsb3QifSxtb2RlOnt2YWxUeXBlOiJlbnVtZXJhdGVkIix2 YWx1ZXM6WyJzcGFubmluZyIsImJldHdlZW4iXSxkZmx0OiJiZXR3ZWVuIixlZGl0VHlwZToi cGxvdCJ9LHZpc2libGU6e3ZhbFR5cGU6ImJvb2xlYW4iLGRmbHQ6ITAsZWRpdFR5cGU6InBs b3QifSxlZGl0VHlwZToicGxvdCJ9LG9mZnNldGdyb3VwOm4ub2Zmc2V0Z3JvdXAsYWxpZ25t ZW50Z3JvdXA6bi5hbGlnbm1lbnRncm91cH19LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6 MzY2LCIuLi8uLi9saWIvZXh0ZW5kIjo0OTMsIi4uLy4uL3Bsb3RzL2F0dHJpYnV0ZXMiOjU1 MCwiLi4vLi4vcGxvdHMvY2FydGVzaWFuL2F4aXNfZm9ybWF0X2F0dHJpYnV0ZXMiOjU1Nywi Li4vLi4vcGxvdHMvdGVtcGxhdGVfYXR0cmlidXRlcyI6NjMzLCIuLi9iYXIvYXR0cmlidXRl cyI6NjQ4LCIuLi9zY2F0dGVyL2F0dHJpYnV0ZXMiOjkyNywiLi9jb25zdGFudHMiOjExMDh9 XSwxMTA3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4uLy4uL3Bs b3RzL2NhcnRlc2lhbi9heGVzIiksaT10KCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYWxpZ25f cGVyaW9kIiksYT10KCIuLi8uLi9saWIiKS5tZXJnZUFycmF5LG89dCgiLi4vc2NhdHRlci9j YWxjX3NlbGVjdGlvbiIpLHM9dCgiLi4vLi4vY29uc3RhbnRzL251bWVyaWNhbCIpLkJBRE5V TTtmdW5jdGlvbiBsKHQpe3JldHVybiJhIj09PXR8fCJhYnNvbHV0ZSI9PT10fWZ1bmN0aW9u IGModCl7cmV0dXJuInQiPT09dHx8InRvdGFsIj09PXR9ZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSl7dmFyIHIsdSxmLGgscCxkLG09bi5nZXRGcm9tSWQodCxlLnhheGlzfHwieCIpLGc9bi5n ZXRGcm9tSWQodCxlLnlheGlzfHwieSIpOyJoIj09PWUub3JpZW50YXRpb24/KHI9bS5tYWtl Q2FsY2RhdGEoZSwieCIpLGY9Zy5tYWtlQ2FsY2RhdGEoZSwieSIpLGg9aShlLGcsInkiLGYp LHA9ISFlLnlwZXJpb2RhbGlnbm1lbnQsZD0ieSIpOihyPWcubWFrZUNhbGNkYXRhKGUsInki KSxmPW0ubWFrZUNhbGNkYXRhKGUsIngiKSxoPWkoZSxtLCJ4IixmKSxwPSEhZS54cGVyaW9k YWxpZ25tZW50LGQ9IngiKSx1PWgudmFscztmb3IodmFyIHYseT1NYXRoLm1pbih1Lmxlbmd0 aCxyLmxlbmd0aCkseD1uZXcgQXJyYXkoeSksYj0wLF89ITEsdz0wO3c8eTt3Kyspe3ZhciBU PXJbd118fDAsaz0hMTsoclt3XSE9PXN8fGMoZS5tZWFzdXJlW3ddKXx8bChlLm1lYXN1cmVb d10pKSYmdysxPHkmJihyW3crMV0hPT1zfHxjKGUubWVhc3VyZVt3KzFdKXx8bChlLm1lYXN1 cmVbdysxXSkpJiYoaz0hMCk7dmFyIEE9eFt3XT17aTp3LHA6dVt3XSxzOlQscmF3UzpULGNO ZXh0Omt9O2woZS5tZWFzdXJlW3ddKT8oYj1BLnMsQS5pc1N1bT0hMCxBLmRpcj0idG90YWxz IixBLnM9Yik6YyhlLm1lYXN1cmVbd10pPyhBLmlzU3VtPSEwLEEuZGlyPSJ0b3RhbHMiLEEu cz1iKTooQS5pc1N1bT0hMSxBLmRpcj1BLnJhd1M8MD8iZGVjcmVhc2luZyI6ImluY3JlYXNp bmciLHY9QS5zLEEucz1iK3YsYis9diksInRvdGFscyI9PT1BLmRpciYmKF89ITApLHAmJih4 W3ddLm9yaWdfcD1mW3ddLHhbd11bZCsiRW5kIl09aC5lbmRzW3ddLHhbd11bZCsiU3RhcnQi XT1oLnN0YXJ0c1t3XSksZS5pZHMmJihBLmlkPVN0cmluZyhlLmlkc1t3XSkpLEEudj0oZS5i YXNlfHwwKStifXJldHVybiB4Lmxlbmd0aCYmKHhbMF0uaGFzVG90YWxzPV8pLGEoZS50ZXh0 LHgsInR4IiksYShlLmhvdmVydGV4dCx4LCJodHgiKSxvKHgsZSkseH19LHsiLi4vLi4vY29u c3RhbnRzL251bWVyaWNhbCI6NDc5LCIuLi8uLi9saWIiOjUwMywiLi4vLi4vcGxvdHMvY2Fy dGVzaWFuL2FsaWduX3BlcmlvZCI6NTUxLCIuLi8uLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6 NTU0LCIuLi9zY2F0dGVyL2NhbGNfc2VsZWN0aW9uIjo5Mjl9XSwxMTA4OltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17ZXZlbnREYXRhS2V5czpbImluaXRpYWwi LCJkZWx0YSIsImZpbmFsIl19fSx7fV0sMTEwOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0Ijt2YXIgbj10KCIuLi9iYXIvY3Jvc3NfdHJhY2VfY2FsYyIpLnNldEdyb3VwUG9zaXRp b25zO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLGksYT10Ll9mdWxsTGF5b3V0LG89 dC5fZnVsbERhdGEscz10LmNhbGNkYXRhLGw9ZS54YXhpcyxjPWUueWF4aXMsdT1bXSxmPVtd LGg9W107Zm9yKGk9MDtpPG8ubGVuZ3RoO2krKyl7dmFyIHA9b1tpXTshMD09PXAudmlzaWJs ZSYmcC54YXhpcz09PWwuX2lkJiZwLnlheGlzPT09Yy5faWQmJiJ3YXRlcmZhbGwiPT09cC50 eXBlJiYocj1zW2ldLCJoIj09PXAub3JpZW50YXRpb24/aC5wdXNoKHIpOmYucHVzaChyKSx1 LnB1c2gocikpfXZhciBkPXttb2RlOmEud2F0ZXJmYWxsbW9kZSxub3JtOmEud2F0ZXJmYWxs bm9ybSxnYXA6YS53YXRlcmZhbGxnYXAsZ3JvdXBnYXA6YS53YXRlcmZhbGxncm91cGdhcH07 Zm9yKG4odCxsLGMsZixkKSxuKHQsYyxsLGgsZCksaT0wO2k8dS5sZW5ndGg7aSsrKXtyPXVb aV07Zm9yKHZhciBtPTA7bTxyLmxlbmd0aDttKyspe3ZhciBnPXJbbV07ITE9PT1nLmlzU3Vt JiYoZy5zMCs9MD09PW0/MDpyW20tMV0ucyksbSsxPHIubGVuZ3RoJiYoclttXS5uZXh0UDA9 clttKzFdLnAwLHJbbV0ubmV4dFMwPXJbbSsxXS5zMCl9fX19LHsiLi4vYmFyL2Nyb3NzX3Ry YWNlX2NhbGMiOjY1MX1dLDExMTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgiLi4vLi4vbGliIiksaT10KCIuLi9iYXIvZGVmYXVsdHMiKS5oYW5kbGVHcm91cGlu Z0RlZmF1bHRzLGE9dCgiLi4vYmFyL2RlZmF1bHRzIikuaGFuZGxlVGV4dCxvPXQoIi4uL3Nj YXR0ZXIveHlfZGVmYXVsdHMiKSxzPXQoIi4uL3NjYXR0ZXIvcGVyaW9kX2RlZmF1bHRzIiks bD10KCIuL2F0dHJpYnV0ZXMiKSxjPXQoIi4uLy4uL2NvbXBvbmVudHMvY29sb3IiKSx1PXQo Ii4uLy4uL2NvbnN0YW50cy9kZWx0YS5qcyIpLGY9dS5JTkNSRUFTSU5HLkNPTE9SLGg9dS5E RUNSRUFTSU5HLkNPTE9SO2Z1bmN0aW9uIHAodCxlLHIpe3QoZSsiLm1hcmtlci5jb2xvciIs ciksdChlKyIubWFya2VyLmxpbmUuY29sb3IiLGMuZGVmYXVsdExpbmUpLHQoZSsiLm1hcmtl ci5saW5lLndpZHRoIil9ZS5leHBvcnRzPXtzdXBwbHlEZWZhdWx0czpmdW5jdGlvbih0LGUs cixpKXtmdW5jdGlvbiBjKHIsaSl7cmV0dXJuIG4uY29lcmNlKHQsZSxsLHIsaSl9aWYobyh0 LGUsaSxjKSl7cyh0LGUsaSxjKSxjKCJ4aG92ZXJmb3JtYXQiKSxjKCJ5aG92ZXJmb3JtYXQi KSxjKCJtZWFzdXJlIiksYygib3JpZW50YXRpb24iLGUueCYmIWUueT8iaCI6InYiKSxjKCJi YXNlIiksYygib2Zmc2V0IiksYygid2lkdGgiKSxjKCJ0ZXh0IiksYygiaG92ZXJ0ZXh0Iiks YygiaG92ZXJ0ZW1wbGF0ZSIpO3ZhciB1PWMoInRleHRwb3NpdGlvbiIpO2lmKGEodCxlLGks Yyx1LHttb2R1bGVIYXNTZWxlY3RlZDohMSxtb2R1bGVIYXNVbnNlbGVjdGVkOiExLG1vZHVs ZUhhc0NvbnN0cmFpbjohMCxtb2R1bGVIYXNDbGlwb25heGlzOiEwLG1vZHVsZUhhc1RleHRh bmdsZTohMCxtb2R1bGVIYXNJbnNpZGVhbmNob3I6ITB9KSwibm9uZSIhPT1lLnRleHRwb3Np dGlvbiYmKGMoInRleHR0ZW1wbGF0ZSIpLGUudGV4dHRlbXBsYXRlfHxjKCJ0ZXh0aW5mbyIp KSxwKGMsImluY3JlYXNpbmciLGYpLHAoYywiZGVjcmVhc2luZyIsaCkscChjLCJ0b3RhbHMi LCIjNDQ5OUZGIiksYygiY29ubmVjdG9yLnZpc2libGUiKSljKCJjb25uZWN0b3IubW9kZSIp LGMoImNvbm5lY3Rvci5saW5lLndpZHRoIikmJihjKCJjb25uZWN0b3IubGluZS5jb2xvciIp LGMoImNvbm5lY3Rvci5saW5lLmRhc2giKSl9ZWxzZSBlLnZpc2libGU9ITF9LGNyb3NzVHJh Y2VEZWZhdWx0czpmdW5jdGlvbih0LGUpe3ZhciByLGE7ZnVuY3Rpb24gbyh0KXtyZXR1cm4g bi5jb2VyY2UoYS5faW5wdXQsYSxsLHQpfWlmKCJncm91cCI9PT1lLndhdGVyZmFsbG1vZGUp Zm9yKHZhciBzPTA7czx0Lmxlbmd0aDtzKyspcj0oYT10W3NdKS5faW5wdXQsaShyLGEsZSxv KX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjM2NiwiLi4vLi4vY29uc3RhbnRzL2Rl bHRhLmpzIjo0NzMsIi4uLy4uL2xpYiI6NTAzLCIuLi9iYXIvZGVmYXVsdHMiOjY1MiwiLi4v c2NhdHRlci9wZXJpb2RfZGVmYXVsdHMiOjk0NywiLi4vc2NhdHRlci94eV9kZWZhdWx0cyI6 OTU0LCIuL2F0dHJpYnV0ZXMiOjExMDZ9XSwxMTExOltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0Lng9InhWYWwiaW4gZT9l LnhWYWw6ZS54LHQueT0ieVZhbCJpbiBlP2UueVZhbDplLnksImluaXRpYWwiaW4gZSYmKHQu aW5pdGlhbD1lLmluaXRpYWwpLCJkZWx0YSJpbiBlJiYodC5kZWx0YT1lLmRlbHRhKSwiZmlu YWwiaW4gZSYmKHQuZmluYWw9ZS5maW5hbCksZS54YSYmKHQueGF4aXM9ZS54YSksZS55YSYm KHQueWF4aXM9ZS55YSksdH19LHt9XSwxMTEyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIikuaG92ZXJMYWJlbFRl eHQsaT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIikub3BhY2l0eSxhPXQoIi4uL2Jhci9o b3ZlciIpLmhvdmVyT25CYXJzLG89dCgiLi4vLi4vY29uc3RhbnRzL2RlbHRhLmpzIikscz1v LklOQ1JFQVNJTkcuU1lNQk9MLGw9by5ERUNSRUFTSU5HLlNZTUJPTDtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlLHIsbyxjKXt2YXIgdT1hKHQsZSxyLG8sYyk7aWYodSl7dmFyIGY9dS5jZCxo PWZbMF0udHJhY2UscD0iaCI9PT1oLm9yaWVudGF0aW9uLGQ9cD8ieCI6InkiLG09cD90Lnhh OnQueWEsZz1mW3UuaW5kZXhdLHY9Zy5pc1N1bT9nLmIrZy5zOmcucmF3UztpZighZy5pc1N1 bSl7dS5pbml0aWFsPWcuYitnLnMtdix1LmRlbHRhPXYsdS5maW5hbD11LmluaXRpYWwrdS5k ZWx0YTt2YXIgeT1rKE1hdGguYWJzKHUuZGVsdGEpKTt1LmRlbHRhTGFiZWw9djwwPyIoIit5 KyIpIjp5LHUuZmluYWxMYWJlbD1rKHUuZmluYWwpLHUuaW5pdGlhbExhYmVsPWsodS5pbml0 aWFsKX12YXIgeD1nLmhpfHxoLmhvdmVyaW5mbyxiPVtdO2lmKHgmJiJub25lIiE9PXgmJiJz a2lwIiE9PXgpe3ZhciBfPSJhbGwiPT09eCx3PXguc3BsaXQoIisiKSxUPWZ1bmN0aW9uKHQp e3JldHVybiBffHwtMSE9PXcuaW5kZXhPZih0KX07Zy5pc1N1bXx8KCFUKCJmaW5hbCIpfHxU KHA/IngiOiJ5Iil8fGIucHVzaCh1LmZpbmFsTGFiZWwpLFQoImRlbHRhIikmJih2PDA/Yi5w dXNoKHUuZGVsdGFMYWJlbCsiICIrbCk6Yi5wdXNoKHUuZGVsdGFMYWJlbCsiICIrcykpLFQo ImluaXRpYWwiKSYmYi5wdXNoKCJJbml0aWFsOiAiK3UuaW5pdGlhbExhYmVsKSl9cmV0dXJu IGIubGVuZ3RoJiYodS5leHRyYVRleHQ9Yi5qb2luKCI8YnI+IikpLHUuY29sb3I9ZnVuY3Rp b24odCxlKXt2YXIgcj10W2UuZGlyXS5tYXJrZXIsbj1yLmNvbG9yLGE9ci5saW5lLmNvbG9y LG89ci5saW5lLndpZHRoO2lmKGkobikpcmV0dXJuIG47aWYoaShhKSYmbylyZXR1cm4gYX0o aCxnKSxbdV19ZnVuY3Rpb24gayh0KXtyZXR1cm4gbihtLHQsaFtkKyJob3ZlcmZvcm1hdCJd KX19fSx7Ii4uLy4uL2NvbXBvbmVudHMvY29sb3IiOjM2NiwiLi4vLi4vY29uc3RhbnRzL2Rl bHRhLmpzIjo0NzMsIi4uLy4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo1NTQsIi4uL2Jhci9o b3ZlciI6NjU1fV0sMTExMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9y dHM9e2F0dHJpYnV0ZXM6dCgiLi9hdHRyaWJ1dGVzIiksbGF5b3V0QXR0cmlidXRlczp0KCIu L2xheW91dF9hdHRyaWJ1dGVzIiksc3VwcGx5RGVmYXVsdHM6dCgiLi9kZWZhdWx0cyIpLnN1 cHBseURlZmF1bHRzLGNyb3NzVHJhY2VEZWZhdWx0czp0KCIuL2RlZmF1bHRzIikuY3Jvc3NU cmFjZURlZmF1bHRzLHN1cHBseUxheW91dERlZmF1bHRzOnQoIi4vbGF5b3V0X2RlZmF1bHRz IiksY2FsYzp0KCIuL2NhbGMiKSxjcm9zc1RyYWNlQ2FsYzp0KCIuL2Nyb3NzX3RyYWNlX2Nh bGMiKSxwbG90OnQoIi4vcGxvdCIpLHN0eWxlOnQoIi4vc3R5bGUiKS5zdHlsZSxob3ZlclBv aW50czp0KCIuL2hvdmVyIiksZXZlbnREYXRhOnQoIi4vZXZlbnRfZGF0YSIpLHNlbGVjdFBv aW50czp0KCIuLi9iYXIvc2VsZWN0IiksbW9kdWxlVHlwZToidHJhY2UiLG5hbWU6IndhdGVy ZmFsbCIsYmFzZVBsb3RNb2R1bGU6dCgiLi4vLi4vcGxvdHMvY2FydGVzaWFuIiksY2F0ZWdv cmllczpbImJhci1saWtlIiwiY2FydGVzaWFuIiwic3ZnIiwib3JpZW50ZWQiLCJzaG93TGVn ZW5kIiwiem9vbVNjYWxlIl0sbWV0YTp7fX19LHsiLi4vLi4vcGxvdHMvY2FydGVzaWFuIjo1 NjgsIi4uL2Jhci9zZWxlY3QiOjY2MCwiLi9hdHRyaWJ1dGVzIjoxMTA2LCIuL2NhbGMiOjEx MDcsIi4vY3Jvc3NfdHJhY2VfY2FsYyI6MTEwOSwiLi9kZWZhdWx0cyI6MTExMCwiLi9ldmVu dF9kYXRhIjoxMTExLCIuL2hvdmVyIjoxMTEyLCIuL2xheW91dF9hdHRyaWJ1dGVzIjoxMTE0 LCIuL2xheW91dF9kZWZhdWx0cyI6MTExNSwiLi9wbG90IjoxMTE2LCIuL3N0eWxlIjoxMTE3 fV0sMTExNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e3dhdGVy ZmFsbG1vZGU6e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVlczpbImdyb3VwIiwib3Zlcmxh eSJdLGRmbHQ6Imdyb3VwIixlZGl0VHlwZToiY2FsYyJ9LHdhdGVyZmFsbGdhcDp7dmFsVHlw ZToibnVtYmVyIixtaW46MCxtYXg6MSxlZGl0VHlwZToiY2FsYyJ9LHdhdGVyZmFsbGdyb3Vw Z2FwOnt2YWxUeXBlOiJudW1iZXIiLG1pbjowLG1heDoxLGRmbHQ6MCxlZGl0VHlwZToiY2Fs YyJ9fX0se31dLDExMTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgi Li4vLi4vbGliIiksaT10KCIuL2xheW91dF9hdHRyaWJ1dGVzIik7ZS5leHBvcnRzPWZ1bmN0 aW9uKHQsZSxyKXt2YXIgYT0hMTtmdW5jdGlvbiBvKHIsYSl7cmV0dXJuIG4uY29lcmNlKHQs ZSxpLHIsYSl9Zm9yKHZhciBzPTA7czxyLmxlbmd0aDtzKyspe3ZhciBsPXJbc107aWYobC52 aXNpYmxlJiYid2F0ZXJmYWxsIj09PWwudHlwZSl7YT0hMDticmVha319YSYmKG8oIndhdGVy ZmFsbG1vZGUiKSxvKCJ3YXRlcmZhbGxnYXAiLC4yKSxvKCJ3YXRlcmZhbGxncm91cGdhcCIp KX19LHsiLi4vLi4vbGliIjo1MDMsIi4vbGF5b3V0X2F0dHJpYnV0ZXMiOjExMTR9XSwxMTE2 OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIkBwbG90bHkvZDMiKSxp PXQoIi4uLy4uL2xpYiIpLGE9dCgiLi4vLi4vY29tcG9uZW50cy9kcmF3aW5nIiksbz10KCIu Li8uLi9jb25zdGFudHMvbnVtZXJpY2FsIikuQkFETlVNLHM9dCgiLi4vYmFyL3Bsb3QiKSxs PXQoIi4uL2Jhci91bmlmb3JtX3RleHQiKS5jbGVhck1pblRleHRTaXplO2UuZXhwb3J0cz1m dW5jdGlvbih0LGUscixjKXt2YXIgdT10Ll9mdWxsTGF5b3V0O2woIndhdGVyZmFsbCIsdSks cy5wbG90KHQsZSxyLGMse21vZGU6dS53YXRlcmZhbGxtb2RlLG5vcm06dS53YXRlcmZhbGxt b2RlLGdhcDp1LndhdGVyZmFsbGdhcCxncm91cGdhcDp1LndhdGVyZmFsbGdyb3VwZ2FwfSks ZnVuY3Rpb24odCxlLHIscyl7dmFyIGw9ZS54YXhpcyxjPWUueWF4aXM7aS5tYWtlVHJhY2VH cm91cHMocyxyLCJ0cmFjZSBiYXJzIikuZWFjaCgoZnVuY3Rpb24ocil7dmFyIHM9bi5zZWxl Y3QodGhpcyksdT1yWzBdLnRyYWNlLGY9aS5lbnN1cmVTaW5nbGUocywiZyIsImxpbmVzIik7 aWYodS5jb25uZWN0b3ImJnUuY29ubmVjdG9yLnZpc2libGUpe3ZhciBoPSJoIj09PXUub3Jp ZW50YXRpb24scD11LmNvbm5lY3Rvci5tb2RlLGQ9Zi5zZWxlY3RBbGwoImcubGluZSIpLmRh dGEoaS5pZGVudGl0eSk7ZC5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImxpbmUiLCEw KSxkLmV4aXQoKS5yZW1vdmUoKTt2YXIgbT1kLnNpemUoKTtkLmVhY2goKGZ1bmN0aW9uKHIs cyl7aWYocz09PW0tMXx8ci5jTmV4dCl7dmFyIHU9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9 W10sYT1bXSxvPW4/ZTpyLHM9bj9yOmU7cmV0dXJuIGlbMF09by5jMnAodC5zMCwhMCksYVsw XT1zLmMycCh0LnAwLCEwKSxpWzFdPW8uYzJwKHQuczEsITApLGFbMV09cy5jMnAodC5wMSwh MCksaVsyXT1vLmMycCh0Lm5leHRTMCwhMCksYVsyXT1zLmMycCh0Lm5leHRQMCwhMCksbj9b aSxhXTpbYSxpXX0ocixsLGMsaCksZj11WzBdLGQ9dVsxXSxnPSIiO2ZbMF0hPT1vJiZkWzBd IT09byYmZlsxXSE9PW8mJmRbMV0hPT1vJiYoInNwYW5uaW5nIj09PXAmJiFyLmlzU3VtJiZz PjAmJihnKz1oPyJNIitmWzBdKyIsIitkWzFdKyJWIitkWzBdOiJNIitmWzFdKyIsIitkWzBd KyJIIitmWzBdKSwiYmV0d2VlbiIhPT1wJiYoci5pc1N1bXx8czxtLTEpJiYoZys9aD8iTSIr ZlsxXSsiLCIrZFswXSsiViIrZFsxXToiTSIrZlswXSsiLCIrZFsxXSsiSCIrZlsxXSksZlsy XSE9PW8mJmRbMl0hPT1vJiYoZys9aD8iTSIrZlsxXSsiLCIrZFsxXSsiViIrZFsyXToiTSIr ZlsxXSsiLCIrZFsxXSsiSCIrZlsyXSkpLCIiPT09ZyYmKGc9Ik0wLDBaIiksaS5lbnN1cmVT aW5nbGUobi5zZWxlY3QodGhpcyksInBhdGgiKS5hdHRyKCJkIixnKS5jYWxsKGEuc2V0Q2xp cFVybCxlLmxheWVyQ2xpcElkLHQpfX0pKX1lbHNlIGYucmVtb3ZlKCl9KSl9KHQsZSxyLGMp fX0seyIuLi8uLi9jb21wb25lbnRzL2RyYXdpbmciOjM4OCwiLi4vLi4vY29uc3RhbnRzL251 bWVyaWNhbCI6NDc5LCIuLi8uLi9saWIiOjUwMywiLi4vYmFyL3Bsb3QiOjY1OSwiLi4vYmFy L3VuaWZvcm1fdGV4dCI6NjY0LCJAcGxvdGx5L2QzIjo1OH1dLDExMTc6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiQHBsb3RseS9kMyIpLGk9dCgiLi4vLi4vY29t cG9uZW50cy9kcmF3aW5nIiksYT10KCIuLi8uLi9jb21wb25lbnRzL2NvbG9yIiksbz10KCIu Li8uLi9jb25zdGFudHMvaW50ZXJhY3Rpb25zIikuREVTRUxFQ1RESU0scz10KCIuLi9iYXIv c3R5bGUiKSxsPXQoIi4uL2Jhci91bmlmb3JtX3RleHQiKS5yZXNpemVUZXh0LGM9cy5zdHls ZVRleHRQb2ludHM7ZS5leHBvcnRzPXtzdHlsZTpmdW5jdGlvbih0LGUscil7dmFyIHM9cnx8 bi5zZWxlY3QodCkuc2VsZWN0QWxsKCJnLndhdGVyZmFsbGxheWVyIikuc2VsZWN0QWxsKCJn LnRyYWNlIik7bCh0LHMsIndhdGVyZmFsbCIpLHMuc3R5bGUoIm9wYWNpdHkiLChmdW5jdGlv bih0KXtyZXR1cm4gdFswXS50cmFjZS5vcGFjaXR5fSkpLHMuZWFjaCgoZnVuY3Rpb24oZSl7 dmFyIHI9bi5zZWxlY3QodGhpcykscz1lWzBdLnRyYWNlO3Iuc2VsZWN0QWxsKCIucG9pbnQg PiBwYXRoIikuZWFjaCgoZnVuY3Rpb24odCl7aWYoIXQuaXNCbGFuayl7dmFyIGU9c1t0LmRp cl0ubWFya2VyO24uc2VsZWN0KHRoaXMpLmNhbGwoYS5maWxsLGUuY29sb3IpLmNhbGwoYS5z dHJva2UsZS5saW5lLmNvbG9yKS5jYWxsKGkuZGFzaExpbmUsZS5saW5lLmRhc2gsZS5saW5l LndpZHRoKS5zdHlsZSgib3BhY2l0eSIscy5zZWxlY3RlZHBvaW50cyYmIXQuc2VsZWN0ZWQ/ bzoxKX19KSksYyhyLHMsdCksci5zZWxlY3RBbGwoIi5saW5lcyIpLmVhY2goKGZ1bmN0aW9u KCl7dmFyIHQ9cy5jb25uZWN0b3IubGluZTtpLmxpbmVHcm91cFN0eWxlKG4uc2VsZWN0KHRo aXMpLnNlbGVjdEFsbCgicGF0aCIpLHQud2lkdGgsdC5jb2xvcix0LmRhc2gpfSkpfSkpfX19 LHsiLi4vLi4vY29tcG9uZW50cy9jb2xvciI6MzY2LCIuLi8uLi9jb21wb25lbnRzL2RyYXdp bmciOjM4OCwiLi4vLi4vY29uc3RhbnRzL2ludGVyYWN0aW9ucyI6NDc4LCIuLi9iYXIvc3R5 bGUiOjY2MiwiLi4vYmFyL3VuaWZvcm1fdGV4dCI6NjY0LCJAcGxvdGx5L2QzIjo1OH1dLDEx MTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vcGxvdHMvY2Fy dGVzaWFuL2F4ZXMiKSxpPXQoIi4uL2xpYiIpLGE9dCgiLi4vcGxvdF9hcGkvcGxvdF9zY2hl bWEiKSxvPXQoIi4vaGVscGVycyIpLnBvaW50c0FjY2Vzc29yRnVuY3Rpb24scz10KCIuLi9j b25zdGFudHMvbnVtZXJpY2FsIikuQkFETlVNO3IubW9kdWxlVHlwZT0idHJhbnNmb3JtIixy Lm5hbWU9ImFnZ3JlZ2F0ZSI7dmFyIGw9ci5hdHRyaWJ1dGVzPXtlbmFibGVkOnt2YWxUeXBl OiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJjYWxjIn0sZ3JvdXBzOnt2YWxUeXBlOiJz dHJpbmciLHN0cmljdDohMCxub0JsYW5rOiEwLGFycmF5T2s6ITAsZGZsdDoieCIsZWRpdFR5 cGU6ImNhbGMifSxhZ2dyZWdhdGlvbnM6e19pc0xpbmtlZFRvQXJyYXk6ImFnZ3JlZ2F0aW9u Iix0YXJnZXQ6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6ImNhbGMifSxmdW5jOnt2YWxU eXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJjb3VudCIsInN1bSIsImF2ZyIsIm1lZGlhbiIs Im1vZGUiLCJybXMiLCJzdGRkZXYiLCJtaW4iLCJtYXgiLCJmaXJzdCIsImxhc3QiLCJjaGFu Z2UiLCJyYW5nZSJdLGRmbHQ6ImZpcnN0IixlZGl0VHlwZToiY2FsYyJ9LGZ1bmNtb2RlOnt2 YWxUeXBlOiJlbnVtZXJhdGVkIix2YWx1ZXM6WyJzYW1wbGUiLCJwb3B1bGF0aW9uIl0sZGZs dDoic2FtcGxlIixlZGl0VHlwZToiY2FsYyJ9LGVuYWJsZWQ6e3ZhbFR5cGU6ImJvb2xlYW4i LGRmbHQ6ITAsZWRpdFR5cGU6ImNhbGMifSxlZGl0VHlwZToiY2FsYyJ9LGVkaXRUeXBlOiJj YWxjIn0sYz1sLmFnZ3JlZ2F0aW9ucztmdW5jdGlvbiB1KHQsZSxyLGEpe2lmKGEuZW5hYmxl ZCl7Zm9yKHZhciBvPWEudGFyZ2V0LGw9aS5uZXN0ZWRQcm9wZXJ0eShlLG8pLGM9bC5nZXQo KSx1PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5mdW5jLG49ZS5kMmMsYT1lLmMyZDtzd2l0Y2go cil7Y2FzZSJjb3VudCI6cmV0dXJuIGY7Y2FzZSJmaXJzdCI6cmV0dXJuIGg7Y2FzZSJsYXN0 IjpyZXR1cm4gcDtjYXNlInN1bSI6cmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAs aT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgbz1uKHRbZVtpXV0pO28hPT1zJiYocis9byl9cmV0 dXJuIGEocil9O2Nhc2UiYXZnIjpyZXR1cm4gZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MCxp PTAsbz0wO288ZS5sZW5ndGg7bysrKXt2YXIgbD1uKHRbZVtvXV0pO2whPT1zJiYocis9bCxp KyspfXJldHVybiBpP2Eoci9pKTpzfTtjYXNlIm1pbiI6cmV0dXJuIGZ1bmN0aW9uKHQsZSl7 Zm9yKHZhciByPTEvMCxpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBvPW4odFtlW2ldXSk7byE9 PXMmJihyPU1hdGgubWluKHIsbykpfXJldHVybiByPT09MS8wP3M6YShyKX07Y2FzZSJtYXgi OnJldHVybiBmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMS8wLGk9MDtpPGUubGVuZ3RoO2kr Kyl7dmFyIG89bih0W2VbaV1dKTtvIT09cyYmKHI9TWF0aC5tYXgocixvKSl9cmV0dXJuIHI9 PT0tMS8wP3M6YShyKX07Y2FzZSJyYW5nZSI6cmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZh ciByPTEvMCxpPS0xLzAsbz0wO288ZS5sZW5ndGg7bysrKXt2YXIgbD1uKHRbZVtvXV0pO2wh PT1zJiYocj1NYXRoLm1pbihyLGwpLGk9TWF0aC5tYXgoaSxsKSl9cmV0dXJuIGk9PT0tMS8w fHxyPT09MS8wP3M6YShpLXIpfTtjYXNlImNoYW5nZSI6cmV0dXJuIGZ1bmN0aW9uKHQsZSl7 dmFyIHI9bih0W2VbMF1dKSxpPW4odFtlW2UubGVuZ3RoLTFdXSk7cmV0dXJuIHI9PT1zfHxp PT09cz9zOmEoaS1yKX07Y2FzZSJtZWRpYW4iOnJldHVybiBmdW5jdGlvbih0LGUpe2Zvcih2 YXIgcj1bXSxvPTA7bzxlLmxlbmd0aDtvKyspe3ZhciBsPW4odFtlW29dXSk7bCE9PXMmJnIu cHVzaChsKX1pZighci5sZW5ndGgpcmV0dXJuIHM7ci5zb3J0KGkuc29ydGVyQXNjKTt2YXIg Yz0oci5sZW5ndGgtMSkvMjtyZXR1cm4gYSgocltNYXRoLmZsb29yKGMpXStyW01hdGguY2Vp bChjKV0pLzIpfTtjYXNlIm1vZGUiOnJldHVybiBmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj17 fSxpPTAsbz1zLGw9MDtsPGUubGVuZ3RoO2wrKyl7dmFyIGM9bih0W2VbbF1dKTtpZihjIT09 cyl7dmFyIHU9cltjXT0ocltjXXx8MCkrMTt1PmkmJihpPXUsbz1jKX19cmV0dXJuIGk/YShv KTpzfTtjYXNlInJtcyI6cmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsaT0wLG89 MDtvPGUubGVuZ3RoO28rKyl7dmFyIGw9bih0W2Vbb11dKTtsIT09cyYmKHIrPWwqbCxpKysp fXJldHVybiBpP2EoTWF0aC5zcXJ0KHIvaSkpOnN9O2Nhc2Uic3RkZGV2IjpyZXR1cm4gZnVu Y3Rpb24oZSxyKXt2YXIgaSxhPTAsbz0wLGw9MSxjPXM7Zm9yKGk9MDtpPHIubGVuZ3RoJiZj PT09cztpKyspYz1uKGVbcltpXV0pO2lmKGM9PT1zKXJldHVybiBzO2Zvcig7aTxyLmxlbmd0 aDtpKyspe3ZhciB1PW4oZVtyW2ldXSk7aWYodSE9PXMpe3ZhciBmPXUtYzthKz1mLG8rPWYq ZixsKyt9fXZhciBoPSJzYW1wbGUiPT09dC5mdW5jbW9kZT9sLTE6bDtyZXR1cm4gaD9NYXRo LnNxcnQoKG8tYSphL2wpL2gpOjB9fX0oYSxuLmdldERhdGFDb252ZXJzaW9ucyh0LGUsbyxj KSksZD1uZXcgQXJyYXkoci5sZW5ndGgpLG09MDttPHIubGVuZ3RoO20rKylkW21dPXUoYyxy W21dKTtsLnNldChkKSwiY291bnQiPT09YS5mdW5jJiZpLnB1c2hVbmlxdWUoZS5fYXJyYXlB dHRycyxvKX19ZnVuY3Rpb24gZih0LGUpe3JldHVybiBlLmxlbmd0aH1mdW5jdGlvbiBoKHQs ZSl7cmV0dXJuIHRbZVswXV19ZnVuY3Rpb24gcCh0LGUpe3JldHVybiB0W2VbZS5sZW5ndGgt MV1dfXIuc3VwcGx5RGVmYXVsdHM9ZnVuY3Rpb24odCxlKXt2YXIgcixuPXt9O2Z1bmN0aW9u IG8oZSxyKXtyZXR1cm4gaS5jb2VyY2UodCxuLGwsZSxyKX1pZighbygiZW5hYmxlZCIpKXJl dHVybiBuO3ZhciBzPWEuZmluZEFycmF5QXR0cmlidXRlcyhlKSx1PXt9O2ZvcihyPTA7cjxz Lmxlbmd0aDtyKyspdVtzW3JdXT0xO3ZhciBmPW8oImdyb3VwcyIpO2lmKCFBcnJheS5pc0Fy cmF5KGYpKXtpZighdVtmXSlyZXR1cm4gbi5lbmFibGVkPSExLG47dVtmXT0wfXZhciBoLHA9 dC5hZ2dyZWdhdGlvbnN8fFtdLGQ9bi5hZ2dyZWdhdGlvbnM9bmV3IEFycmF5KHAubGVuZ3Ro KTtmdW5jdGlvbiBtKHQsZSl7cmV0dXJuIGkuY29lcmNlKHBbcl0saCxjLHQsZSl9Zm9yKHI9 MDtyPHAubGVuZ3RoO3IrKyl7aD17X2luZGV4OnJ9O3ZhciBnPW0oInRhcmdldCIpLHY9bSgi ZnVuYyIpO20oImVuYWJsZWQiKSYmZyYmKHVbZ118fCJjb3VudCI9PT12JiZ2b2lkIDA9PT11 W2ddKT8oInN0ZGRldiI9PT12JiZtKCJmdW5jbW9kZSIpLHVbZ109MCxkW3JdPWgpOmRbcl09 e2VuYWJsZWQ6ITEsX2luZGV4OnJ9fWZvcihyPTA7cjxzLmxlbmd0aDtyKyspdVtzW3JdXSYm ZC5wdXNoKHt0YXJnZXQ6c1tyXSxmdW5jOmMuZnVuYy5kZmx0LGVuYWJsZWQ6ITAsX2luZGV4 Oi0xfSk7cmV0dXJuIG59LHIuY2FsY1RyYW5zZm9ybT1mdW5jdGlvbih0LGUscil7aWYoci5l bmFibGVkKXt2YXIgbj1yLmdyb3VwcyxhPWkuZ2V0VGFyZ2V0QXJyYXkoZSx7dGFyZ2V0Om59 KTtpZihhKXt2YXIgcyxsLGMsZixoPXt9LHA9e30sZD1bXSxtPW8oZS50cmFuc2Zvcm1zLHIp LGc9YS5sZW5ndGg7Zm9yKGUuX2xlbmd0aCYmKGc9TWF0aC5taW4oZyxlLl9sZW5ndGgpKSxz PTA7czxnO3MrKyl2b2lkIDA9PT0oYz1oW2w9YVtzXV0pPyhoW2xdPWQubGVuZ3RoLGY9W3Nd LGQucHVzaChmKSxwW2hbbF1dPW0ocykpOihkW2NdLnB1c2gocykscFtoW2xdXT0ocFtoW2xd XXx8W10pLmNvbmNhdChtKHMpKSk7ci5faW5kZXhUb1BvaW50cz1wO3ZhciB2PXIuYWdncmVn YXRpb25zO2ZvcihzPTA7czx2Lmxlbmd0aDtzKyspdSh0LGUsZCx2W3NdKTsic3RyaW5nIj09 dHlwZW9mIG4mJnUodCxlLGQse3RhcmdldDpuLGZ1bmM6ImZpcnN0IixlbmFibGVkOiEwfSks ZS5fbGVuZ3RoPWQubGVuZ3RofX19fSx7Ii4uL2NvbnN0YW50cy9udW1lcmljYWwiOjQ3OSwi Li4vbGliIjo1MDMsIi4uL3Bsb3RfYXBpL3Bsb3Rfc2NoZW1hIjo1NDIsIi4uL3Bsb3RzL2Nh cnRlc2lhbi9heGVzIjo1NTQsIi4vaGVscGVycyI6MTEyMX1dLDExMTk6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vbGliIiksaT10KCIuLi9yZWdpc3RyeSIp LGE9dCgiLi4vcGxvdHMvY2FydGVzaWFuL2F4ZXMiKSxvPXQoIi4vaGVscGVycyIpLnBvaW50 c0FjY2Vzc29yRnVuY3Rpb24scz10KCIuLi9jb25zdGFudHMvZmlsdGVyX29wcyIpLGw9cy5D T01QQVJJU09OX09QUyxjPXMuSU5URVJWQUxfT1BTLHU9cy5TRVRfT1BTO3IubW9kdWxlVHlw ZT0idHJhbnNmb3JtIixyLm5hbWU9ImZpbHRlciIsci5hdHRyaWJ1dGVzPXtlbmFibGVkOnt2 YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJjYWxjIn0sdGFyZ2V0Ont2YWxU eXBlOiJzdHJpbmciLHN0cmljdDohMCxub0JsYW5rOiEwLGFycmF5T2s6ITAsZGZsdDoieCIs ZWRpdFR5cGU6ImNhbGMifSxvcGVyYXRpb246e3ZhbFR5cGU6ImVudW1lcmF0ZWQiLHZhbHVl czpbXS5jb25jYXQobCkuY29uY2F0KGMpLmNvbmNhdCh1KSxkZmx0OiI9IixlZGl0VHlwZToi Y2FsYyJ9LHZhbHVlOnt2YWxUeXBlOiJhbnkiLGRmbHQ6MCxlZGl0VHlwZToiY2FsYyJ9LHBy ZXNlcnZlZ2Fwczp7dmFsVHlwZToiYm9vbGVhbiIsZGZsdDohMSxlZGl0VHlwZToiY2FsYyJ9 LGVkaXRUeXBlOiJjYWxjIn0sci5zdXBwbHlEZWZhdWx0cz1mdW5jdGlvbih0KXt2YXIgZT17 fTtmdW5jdGlvbiBhKGksYSl7cmV0dXJuIG4uY29lcmNlKHQsZSxyLmF0dHJpYnV0ZXMsaSxh KX1pZihhKCJlbmFibGVkIikpe3ZhciBvPWEoInRhcmdldCIpO2lmKG4uaXNBcnJheU9yVHlw ZWRBcnJheShvKSYmMD09PW8ubGVuZ3RoKXJldHVybiBlLmVuYWJsZWQ9ITEsZTthKCJwcmVz ZXJ2ZWdhcHMiKSxhKCJvcGVyYXRpb24iKSxhKCJ2YWx1ZSIpO3ZhciBzPWkuZ2V0Q29tcG9u ZW50TWV0aG9kKCJjYWxlbmRhcnMiLCJoYW5kbGVEZWZhdWx0cyIpO3ModCxlLCJ2YWx1ZWNh bGVuZGFyIixudWxsKSxzKHQsZSwidGFyZ2V0Y2FsZW5kYXIiLG51bGwpfXJldHVybiBlfSxy LmNhbGNUcmFuc2Zvcm09ZnVuY3Rpb24odCxlLHIpe2lmKHIuZW5hYmxlZCl7dmFyIGk9bi5n ZXRUYXJnZXRBcnJheShlLHIpO2lmKGkpe3ZhciBzPXIudGFyZ2V0LGY9aS5sZW5ndGg7ZS5f bGVuZ3RoJiYoZj1NYXRoLm1pbihmLGUuX2xlbmd0aCkpO3ZhciBoPXIudGFyZ2V0Y2FsZW5k YXIscD1lLl9hcnJheUF0dHJzLGQ9ci5wcmVzZXJ2ZWdhcHM7aWYoInN0cmluZyI9PXR5cGVv ZiBzKXt2YXIgbT1uLm5lc3RlZFByb3BlcnR5KGUscysiY2FsZW5kYXIiKS5nZXQoKTttJiYo aD1tKX12YXIgZyx2LHk9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQub3BlcmF0aW9uLGk9dC52 YWx1ZSxhPUFycmF5LmlzQXJyYXkoaSk7ZnVuY3Rpb24gbyh0KXtyZXR1cm4tMSE9PXQuaW5k ZXhPZihuKX12YXIgcyxmPWZ1bmN0aW9uKHIpe3JldHVybiBlKHIsMCx0LnZhbHVlY2FsZW5k YXIpfSxoPWZ1bmN0aW9uKHQpe3JldHVybiBlKHQsMCxyKX07byhsKT9zPWYoYT9pWzBdOmkp Om8oYyk/cz1hP1tmKGlbMF0pLGYoaVsxXSldOltmKGkpLGYoaSldOm8odSkmJihzPWE/aS5t YXAoZik6W2YoaSldKTtzd2l0Y2gobil7Y2FzZSI9IjpyZXR1cm4gZnVuY3Rpb24odCl7cmV0 dXJuIGgodCk9PT1zfTtjYXNlIiE9IjpyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGgodCkh PT1zfTtjYXNlIjwiOnJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaCh0KTxzfTtjYXNlIjw9 IjpyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGgodCk8PXN9O2Nhc2UiPiI6cmV0dXJuIGZ1 bmN0aW9uKHQpe3JldHVybiBoKHQpPnN9O2Nhc2UiPj0iOnJldHVybiBmdW5jdGlvbih0KXty ZXR1cm4gaCh0KT49c307Y2FzZSJbXSI6cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPWgodCk7 cmV0dXJuIGU+PXNbMF0mJmU8PXNbMV19O2Nhc2UiKCkiOnJldHVybiBmdW5jdGlvbih0KXt2 YXIgZT1oKHQpO3JldHVybiBlPnNbMF0mJmU8c1sxXX07Y2FzZSJbKSI6cmV0dXJuIGZ1bmN0 aW9uKHQpe3ZhciBlPWgodCk7cmV0dXJuIGU+PXNbMF0mJmU8c1sxXX07Y2FzZSIoXSI6cmV0 dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPWgodCk7cmV0dXJuIGU+c1swXSYmZTw9c1sxXX07Y2Fz ZSJdWyI6cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPWgodCk7cmV0dXJuIGU8PXNbMF18fGU+ PXNbMV19O2Nhc2UiKSgiOnJldHVybiBmdW5jdGlvbih0KXt2YXIgZT1oKHQpO3JldHVybiBl PHNbMF18fGU+c1sxXX07Y2FzZSJdKCI6cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPWgodCk7 cmV0dXJuIGU8PXNbMF18fGU+c1sxXX07Y2FzZSIpWyI6cmV0dXJuIGZ1bmN0aW9uKHQpe3Zh ciBlPWgodCk7cmV0dXJuIGU8c1swXXx8ZT49c1sxXX07Y2FzZSJ7fSI6cmV0dXJuIGZ1bmN0 aW9uKHQpe3JldHVybi0xIT09cy5pbmRleE9mKGgodCkpfTtjYXNlIn17IjpyZXR1cm4gZnVu Y3Rpb24odCl7cmV0dXJuLTE9PT1zLmluZGV4T2YoaCh0KSl9fX0ocixhLmdldERhdGFUb0Nv b3JkRnVuYyh0LGUscyxpKSxoKSx4PXt9LGI9e30sXz0wO2Q/KGc9ZnVuY3Rpb24odCl7eFt0 LmFzdHJdPW4uZXh0ZW5kRGVlcChbXSx0LmdldCgpKSx0LnNldChuZXcgQXJyYXkoZikpfSx2 PWZ1bmN0aW9uKHQsZSl7dmFyIHI9eFt0LmFzdHJdW2VdO3QuZ2V0KClbZV09cn0pOihnPWZ1 bmN0aW9uKHQpe3hbdC5hc3RyXT1uLmV4dGVuZERlZXAoW10sdC5nZXQoKSksdC5zZXQoW10p fSx2PWZ1bmN0aW9uKHQsZSl7dmFyIHI9eFt0LmFzdHJdW2VdO3QuZ2V0KCkucHVzaChyKX0p LGsoZyk7Zm9yKHZhciB3PW8oZS50cmFuc2Zvcm1zLHIpLFQ9MDtUPGY7VCsrKXt5KGlbVF0p PyhrKHYsVCksYltfKytdPXcoVCkpOmQmJl8rK31yLl9pbmRleFRvUG9pbnRzPWIsZS5fbGVu Z3RoPV99fWZ1bmN0aW9uIGsodCxyKXtmb3IodmFyIGk9MDtpPHAubGVuZ3RoO2krKyl7dChu Lm5lc3RlZFByb3BlcnR5KGUscFtpXSkscil9fX19LHsiLi4vY29uc3RhbnRzL2ZpbHRlcl9v cHMiOjQ3NSwiLi4vbGliIjo1MDMsIi4uL3Bsb3RzL2NhcnRlc2lhbi9heGVzIjo1NTQsIi4u L3JlZ2lzdHJ5Ijo2MzgsIi4vaGVscGVycyI6MTEyMX1dLDExMjA6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi4vbGliIiksaT10KCIuLi9wbG90X2FwaS9wbG90 X3NjaGVtYSIpLGE9dCgiLi4vcGxvdHMvcGxvdHMiKSxvPXQoIi4vaGVscGVycyIpLnBvaW50 c0FjY2Vzc29yRnVuY3Rpb247ZnVuY3Rpb24gcyh0LGUpe3ZhciByLHMsbCxjLHUsZixoLHAs ZCxtLGc9ZS50cmFuc2Zvcm0sdj1lLnRyYW5zZm9ybUluZGV4LHk9dC50cmFuc2Zvcm1zW3Zd Lmdyb3Vwcyx4PW8odC50cmFuc2Zvcm1zLGcpO2lmKCFuLmlzQXJyYXlPclR5cGVkQXJyYXko eSl8fDA9PT15Lmxlbmd0aClyZXR1cm5bdF07dmFyIGI9bi5maWx0ZXJVbmlxdWUoeSksXz1u ZXcgQXJyYXkoYi5sZW5ndGgpLHc9eS5sZW5ndGgsVD1pLmZpbmRBcnJheUF0dHJpYnV0ZXMo dCksaz1nLnN0eWxlc3x8W10sQT17fTtmb3Iocj0wO3I8ay5sZW5ndGg7cisrKUFba1tyXS50 YXJnZXRdPWtbcl0udmFsdWU7Zy5zdHlsZXMmJihtPW4ua2V5ZWRDb250YWluZXIoZywic3R5 bGVzIiwidGFyZ2V0IiwidmFsdWUubmFtZSIpKTt2YXIgTT17fSxTPXt9O2ZvcihyPTA7cjxi Lmxlbmd0aDtyKyspe01bZj1iW3JdXT1yLFNbZl09MCwoaD1fW3JdPW4uZXh0ZW5kRGVlcE5v QXJyYXlzKHt9LHQpKS5fZ3JvdXA9ZixoLnRyYW5zZm9ybXNbdl0uX2luZGV4VG9Qb2ludHM9 e307dmFyIEU9bnVsbDtmb3IobSYmKEU9bS5nZXQoZikpLGgubmFtZT1FfHwiIj09PUU/RTpu LnRlbXBsYXRlU3RyaW5nKGcubmFtZWZvcm1hdCx7dHJhY2U6dC5uYW1lLGdyb3VwOmZ9KSxw PWgudHJhbnNmb3JtcyxoLnRyYW5zZm9ybXM9W10scz0wO3M8cC5sZW5ndGg7cysrKWgudHJh bnNmb3Jtc1tzXT1uLmV4dGVuZERlZXBOb0FycmF5cyh7fSxwW3NdKTtmb3Iocz0wO3M8VC5s ZW5ndGg7cysrKW4ubmVzdGVkUHJvcGVydHkoaCxUW3NdKS5zZXQoW10pfWZvcihsPTA7bDxU Lmxlbmd0aDtsKyspe2ZvcihjPVRbbF0scz0wLGQ9W107czxiLmxlbmd0aDtzKyspZFtzXT1u Lm5lc3RlZFByb3BlcnR5KF9bc10sYykuZ2V0KCk7Zm9yKHU9bi5uZXN0ZWRQcm9wZXJ0eSh0 LGMpLmdldCgpLHM9MDtzPHc7cysrKWRbTVt5W3NdXV0ucHVzaCh1W3NdKX1mb3Iocz0wO3M8 dztzKyspeyhoPV9bTVt5W3NdXV0pLnRyYW5zZm9ybXNbdl0uX2luZGV4VG9Qb2ludHNbU1t5 W3NdXV09eChzKSxTW3lbc11dKyt9Zm9yKHI9MDtyPGIubGVuZ3RoO3IrKylmPWJbcl0saD1f W3JdLGEuY2xlYXJFeHBhbmRlZFRyYWNlRGVmYXVsdENvbG9ycyhoKSxoPW4uZXh0ZW5kRGVl cE5vQXJyYXlzKGgsQVtmXXx8e30pO3JldHVybiBffXIubW9kdWxlVHlwZT0idHJhbnNmb3Jt IixyLm5hbWU9Imdyb3VwYnkiLHIuYXR0cmlidXRlcz17ZW5hYmxlZDp7dmFsVHlwZToiYm9v bGVhbiIsZGZsdDohMCxlZGl0VHlwZToiY2FsYyJ9LGdyb3Vwczp7dmFsVHlwZToiZGF0YV9h cnJheSIsZGZsdDpbXSxlZGl0VHlwZToiY2FsYyJ9LG5hbWVmb3JtYXQ6e3ZhbFR5cGU6InN0 cmluZyIsZWRpdFR5cGU6ImNhbGMifSxzdHlsZXM6e19pc0xpbmtlZFRvQXJyYXk6InN0eWxl Iix0YXJnZXQ6e3ZhbFR5cGU6InN0cmluZyIsZWRpdFR5cGU6ImNhbGMifSx2YWx1ZTp7dmFs VHlwZToiYW55IixkZmx0Ont9LGVkaXRUeXBlOiJjYWxjIixfY29tcGFyZUFzSlNPTjohMH0s ZWRpdFR5cGU6ImNhbGMifSxlZGl0VHlwZToiY2FsYyJ9LHIuc3VwcGx5RGVmYXVsdHM9ZnVu Y3Rpb24odCxlLGkpe3ZhciBhLG89e307ZnVuY3Rpb24gcyhlLGkpe3JldHVybiBuLmNvZXJj ZSh0LG8sci5hdHRyaWJ1dGVzLGUsaSl9aWYoIXMoImVuYWJsZWQiKSlyZXR1cm4gbztzKCJn cm91cHMiKSxzKCJuYW1lZm9ybWF0IixpLl9kYXRhTGVuZ3RoPjE/IiV7Z3JvdXB9ICgle3Ry YWNlfSkiOiIle2dyb3VwfSIpO3ZhciBsPXQuc3R5bGVzLGM9by5zdHlsZXM9W107aWYobClm b3IoYT0wO2E8bC5sZW5ndGg7YSsrKXt2YXIgdT1jW2FdPXt9O24uY29lcmNlKGxbYV0sY1th XSxyLmF0dHJpYnV0ZXMuc3R5bGVzLCJ0YXJnZXQiKTt2YXIgZj1uLmNvZXJjZShsW2FdLGNb YV0sci5hdHRyaWJ1dGVzLnN0eWxlcywidmFsdWUiKTtuLmlzUGxhaW5PYmplY3QoZik/dS52 YWx1ZT1uLmV4dGVuZERlZXAoe30sZik6ZiYmZGVsZXRlIHUudmFsdWV9cmV0dXJuIG99LHIu dHJhbnNmb3JtPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixpLGE9W107Zm9yKG49MDtuPHQubGVu Z3RoO24rKylmb3Iocj1zKHRbbl0sZSksaT0wO2k8ci5sZW5ndGg7aSsrKWEucHVzaChyW2ld KTtyZXR1cm4gYX19LHsiLi4vbGliIjo1MDMsIi4uL3Bsb3RfYXBpL3Bsb3Rfc2NoZW1hIjo1 NDIsIi4uL3Bsb3RzL3Bsb3RzIjo2MTksIi4vaGVscGVycyI6MTEyMX1dLDExMjE6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ci5wb2ludHNBY2Nlc3NvckZ1bmN0aW9uPWZ1bmN0 aW9uKHQsZSl7Zm9yKHZhciByLG4saT0wO2k8dC5sZW5ndGgmJihyPXRbaV0pIT09ZTtpKysp ci5faW5kZXhUb1BvaW50cyYmITEhPT1yLmVuYWJsZWQmJihuPXIuX2luZGV4VG9Qb2ludHMp O3JldHVybiBuP2Z1bmN0aW9uKHQpe3JldHVybiBuW3RdfTpmdW5jdGlvbih0KXtyZXR1cm5b dF19fX0se31dLDExMjI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgi Li4vbGliIiksaT10KCIuLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyIpLGE9dCgiLi9oZWxwZXJz IikucG9pbnRzQWNjZXNzb3JGdW5jdGlvbixvPXQoIi4uL2NvbnN0YW50cy9udW1lcmljYWwi KS5CQUROVU07ci5tb2R1bGVUeXBlPSJ0cmFuc2Zvcm0iLHIubmFtZT0ic29ydCIsci5hdHRy aWJ1dGVzPXtlbmFibGVkOnt2YWxUeXBlOiJib29sZWFuIixkZmx0OiEwLGVkaXRUeXBlOiJj YWxjIn0sdGFyZ2V0Ont2YWxUeXBlOiJzdHJpbmciLHN0cmljdDohMCxub0JsYW5rOiEwLGFy cmF5T2s6ITAsZGZsdDoieCIsZWRpdFR5cGU6ImNhbGMifSxvcmRlcjp7dmFsVHlwZToiZW51 bWVyYXRlZCIsdmFsdWVzOlsiYXNjZW5kaW5nIiwiZGVzY2VuZGluZyJdLGRmbHQ6ImFzY2Vu ZGluZyIsZWRpdFR5cGU6ImNhbGMifSxlZGl0VHlwZToiY2FsYyJ9LHIuc3VwcGx5RGVmYXVs dHM9ZnVuY3Rpb24odCl7dmFyIGU9e307ZnVuY3Rpb24gaShpLGEpe3JldHVybiBuLmNvZXJj ZSh0LGUsci5hdHRyaWJ1dGVzLGksYSl9cmV0dXJuIGkoImVuYWJsZWQiKSYmKGkoInRhcmdl dCIpLGkoIm9yZGVyIikpLGV9LHIuY2FsY1RyYW5zZm9ybT1mdW5jdGlvbih0LGUscil7aWYo ci5lbmFibGVkKXt2YXIgcz1uLmdldFRhcmdldEFycmF5KGUscik7aWYocyl7dmFyIGw9ci50 YXJnZXQsYz1zLmxlbmd0aDtlLl9sZW5ndGgmJihjPU1hdGgubWluKGMsZS5fbGVuZ3RoKSk7 dmFyIHUsZixoPWUuX2FycmF5QXR0cnMscD1mdW5jdGlvbih0LGUscixuKXt2YXIgaSxhPW5l dyBBcnJheShuKSxzPW5ldyBBcnJheShuKTtmb3IoaT0wO2k8bjtpKyspYVtpXT17djplW2ld LGk6aX07Zm9yKGEuc29ydChmdW5jdGlvbih0LGUpe3N3aXRjaCh0Lm9yZGVyKXtjYXNlImFz Y2VuZGluZyI6cmV0dXJuIGZ1bmN0aW9uKHQscil7dmFyIG49ZSh0LnYpLGk9ZShyLnYpO3Jl dHVybiBuPT09bz8xOmk9PT1vPy0xOm4taX07Y2FzZSJkZXNjZW5kaW5nIjpyZXR1cm4gZnVu Y3Rpb24odCxyKXt2YXIgbj1lKHQudiksaT1lKHIudik7cmV0dXJuIG49PT1vPzE6aT09PW8/ LTE6aS1ufX19KHQscikpLGk9MDtpPG47aSsrKXNbaV09YVtpXS5pO3JldHVybiBzfShyLHMs aS5nZXREYXRhVG9Db29yZEZ1bmModCxlLGwscyksYyksZD1hKGUudHJhbnNmb3JtcyxyKSxt PXt9O2Zvcih1PTA7dTxoLmxlbmd0aDt1Kyspe3ZhciBnPW4ubmVzdGVkUHJvcGVydHkoZSxo W3VdKSx2PWcuZ2V0KCkseT1uZXcgQXJyYXkoYyk7Zm9yKGY9MDtmPGM7ZisrKXlbZl09dltw W2ZdXTtnLnNldCh5KX1mb3IoZj0wO2Y8YztmKyspbVtmXT1kKHBbZl0pO3IuX2luZGV4VG9Q b2ludHM9bSxlLl9sZW5ndGg9Y319fX0seyIuLi9jb25zdGFudHMvbnVtZXJpY2FsIjo0Nzks Ii4uL2xpYiI6NTAzLCIuLi9wbG90cy9jYXJ0ZXNpYW4vYXhlcyI6NTU0LCIuL2hlbHBlcnMi OjExMjF9XSwxMTIzOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3IudmVyc2lvbj0i Mi4xMi4xIn0se31dLDExMjQ6W2Z1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24obil7KGZ1bmN0 aW9uKCl7IWZ1bmN0aW9uKHQpeyJvYmplY3QiPT10eXBlb2YgciYmdm9pZCAwIT09ZT9lLmV4 cG9ydHM9dCgpOigidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dm9pZCAwIT09 bj9uOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMpLnN0YWNrZ2w9dCgpfSgo ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZShyLG4saSl7ZnVuY3Rpb24gYShzLGwpe2lm KCFuW3NdKXtpZighcltzXSl7dmFyIGM9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQ7aWYoIWwm JmMpcmV0dXJuIGMocywhMCk7aWYobylyZXR1cm4gbyhzLCEwKTt2YXIgdT1uZXcgRXJyb3Io IkNhbm5vdCBmaW5kIG1vZHVsZSAnIitzKyInIik7dGhyb3cgdS5jb2RlPSJNT0RVTEVfTk9U X0ZPVU5EIix1fXZhciBmPW5bc109e2V4cG9ydHM6e319O3Jbc11bMF0uY2FsbChmLmV4cG9y dHMsKGZ1bmN0aW9uKHQpe3JldHVybiBhKHJbc11bMV1bdF18fHQpfSksZixmLmV4cG9ydHMs ZSxyLG4saSl9cmV0dXJuIG5bc10uZXhwb3J0c31mb3IodmFyIG89ImZ1bmN0aW9uIj09dHlw ZW9mIHQmJnQscz0wO3M8aS5sZW5ndGg7cysrKWEoaVtzXSk7cmV0dXJuIGF9KHsxOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3IuYnl0ZUxlbmd0aD1mdW5jdGlvbih0KXt2YXIg ZT1jKHQpLHI9ZVswXSxuPWVbMV07cmV0dXJuIDMqKHIrbikvNC1ufSxyLnRvQnl0ZUFycmF5 PWZ1bmN0aW9uKHQpe3ZhciBlLHIsbj1jKHQpLG89blswXSxzPW5bMV0sbD1uZXcgYShmdW5j dGlvbih0LGUscil7cmV0dXJuIDMqKGUrcikvNC1yfSgwLG8scykpLHU9MCxmPXM+MD9vLTQ6 bztmb3Iocj0wO3I8ZjtyKz00KWU9aVt0LmNoYXJDb2RlQXQocildPDwxOHxpW3QuY2hhckNv ZGVBdChyKzEpXTw8MTJ8aVt0LmNoYXJDb2RlQXQocisyKV08PDZ8aVt0LmNoYXJDb2RlQXQo ciszKV0sbFt1KytdPWU+PjE2JjI1NSxsW3UrK109ZT4+OCYyNTUsbFt1KytdPTI1NSZlOzI9 PT1zJiYoZT1pW3QuY2hhckNvZGVBdChyKV08PDJ8aVt0LmNoYXJDb2RlQXQocisxKV0+PjQs bFt1KytdPTI1NSZlKTsxPT09cyYmKGU9aVt0LmNoYXJDb2RlQXQocildPDwxMHxpW3QuY2hh ckNvZGVBdChyKzEpXTw8NHxpW3QuY2hhckNvZGVBdChyKzIpXT4+MixsW3UrK109ZT4+OCYy NTUsbFt1KytdPTI1NSZlKTtyZXR1cm4gbH0sci5mcm9tQnl0ZUFycmF5PWZ1bmN0aW9uKHQp e2Zvcih2YXIgZSxyPXQubGVuZ3RoLGk9ciUzLGE9W10sbz0wLHM9ci1pO288cztvKz0xNjM4 MylhLnB1c2godSh0LG8sbysxNjM4Mz5zP3M6bysxNjM4MykpOzE9PT1pPyhlPXRbci0xXSxh LnB1c2gobltlPj4yXStuW2U8PDQmNjNdKyI9PSIpKToyPT09aSYmKGU9KHRbci0yXTw8OCkr dFtyLTFdLGEucHVzaChuW2U+PjEwXStuW2U+PjQmNjNdK25bZTw8MiY2M10rIj0iKSk7cmV0 dXJuIGEuam9pbigiIil9O2Zvcih2YXIgbj1bXSxpPVtdLGE9InVuZGVmaW5lZCIhPXR5cGVv ZiBVaW50OEFycmF5P1VpbnQ4QXJyYXk6QXJyYXksbz0iQUJDREVGR0hJSktMTU5PUFFSU1RV VldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIscz0wLGw9by5s ZW5ndGg7czxsOysrcyluW3NdPW9bc10saVtvLmNoYXJDb2RlQXQocyldPXM7ZnVuY3Rpb24g Yyh0KXt2YXIgZT10Lmxlbmd0aDtpZihlJTQ+MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQg c3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQiKTt2YXIgcj10LmluZGV4 T2YoIj0iKTtyZXR1cm4tMT09PXImJihyPWUpLFtyLHI9PT1lPzA6NC1yJTRdfWZ1bmN0aW9u IHUodCxlLHIpe2Zvcih2YXIgaSxhLG89W10scz1lO3M8cjtzKz0zKWk9KHRbc108PDE2JjE2 NzExNjgwKSsodFtzKzFdPDw4JjY1MjgwKSsoMjU1JnRbcysyXSksby5wdXNoKG5bKGE9aSk+ PjE4JjYzXStuW2E+PjEyJjYzXStuW2E+PjYmNjNdK25bNjMmYV0pO3JldHVybiBvLmpvaW4o IiIpfWlbIi0iLmNoYXJDb2RlQXQoMCldPTYyLGlbIl8iLmNoYXJDb2RlQXQoMCldPTYzfSx7 fV0sMjpbZnVuY3Rpb24odCxlLHIpe30se31dLDM6W2Z1bmN0aW9uKHQsZSxyKXsoZnVuY3Rp b24oZSl7KGZ1bmN0aW9uKCl7Ci8qIQogKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUu anMsIGZvciB0aGUgYnJvd3Nlci4KICoKICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlq ZWggPGh0dHBzOi8vZmVyb3NzLm9yZz4KICogQGxpY2Vuc2UgIE1JVAogKi8KInVzZSBzdHJp Y3QiO3ZhciBlPXQoImJhc2U2NC1qcyIpLG49dCgiaWVlZTc1NCIpO3IuQnVmZmVyPWEsci5T bG93QnVmZmVyPWZ1bmN0aW9uKHQpeyt0IT10JiYodD0wKTtyZXR1cm4gYS5hbGxvYygrdCl9 LHIuSU5TUEVDVF9NQVhfQllURVM9NTA7ZnVuY3Rpb24gaSh0KXtpZih0PjIxNDc0ODM2NDcp dGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSAiJyt0KyciIGlzIGludmFsaWQgZm9y IG9wdGlvbiAic2l6ZSInKTt2YXIgZT1uZXcgVWludDhBcnJheSh0KTtyZXR1cm4gZS5fX3By b3RvX189YS5wcm90b3R5cGUsZX1mdW5jdGlvbiBhKHQsZSxyKXtpZigibnVtYmVyIj09dHlw ZW9mIHQpe2lmKCJzdHJpbmciPT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUg InN0cmluZyIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4gUmVjZWl2ZWQgdHlw ZSBudW1iZXInKTtyZXR1cm4gbCh0KX1yZXR1cm4gbyh0LGUscil9ZnVuY3Rpb24gbyh0LGUs cil7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBmdW5jdGlvbih0LGUpeyJzdHJpbmci PT10eXBlb2YgZSYmIiIhPT1lfHwoZT0idXRmOCIpO2lmKCFhLmlzRW5jb2RpbmcoZSkpdGhy b3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitlKTt2YXIgcj0wfGYodCxl KSxuPWkociksbz1uLndyaXRlKHQsZSk7byE9PXImJihuPW4uc2xpY2UoMCxvKSk7cmV0dXJu IG59KHQsZSk7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KHQpKXJldHVybiBjKHQpO2lmKG51bGw9 PXQpdGhyb3cgVHlwZUVycm9yKCJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2Yg dHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBBcnJheS1saWtl IE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAiK3R5cGVvZiB0KTtpZihCKHQsQXJyYXlCdWZmZXIp fHx0JiZCKHQuYnVmZmVyLEFycmF5QnVmZmVyKSlyZXR1cm4gZnVuY3Rpb24odCxlLHIpe2lm KGU8MHx8dC5ieXRlTGVuZ3RoPGUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJvZmZzZXQiIGlz IG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpO2lmKHQuYnl0ZUxlbmd0aDxlKyhyfHwwKSl0 aHJvdyBuZXcgUmFuZ2VFcnJvcignImxlbmd0aCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91 bmRzJyk7dmFyIG47bj12b2lkIDA9PT1lJiZ2b2lkIDA9PT1yP25ldyBVaW50OEFycmF5KHQp OnZvaWQgMD09PXI/bmV3IFVpbnQ4QXJyYXkodCxlKTpuZXcgVWludDhBcnJheSh0LGUscik7 cmV0dXJuIG4uX19wcm90b19fPWEucHJvdG90eXBlLG59KHQsZSxyKTtpZigibnVtYmVyIj09 dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJ2YWx1ZSIgYXJndW1lbnQgbXVz dCBub3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJyk7dmFyIG49 dC52YWx1ZU9mJiZ0LnZhbHVlT2YoKTtpZihudWxsIT1uJiZuIT09dClyZXR1cm4gYS5mcm9t KG4sZSxyKTt2YXIgbz1mdW5jdGlvbih0KXtpZihhLmlzQnVmZmVyKHQpKXt2YXIgZT0wfHUo dC5sZW5ndGgpLHI9aShlKTtyZXR1cm4gMD09PXIubGVuZ3RofHx0LmNvcHkociwwLDAsZSks cn1pZih2b2lkIDAhPT10Lmxlbmd0aClyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIHQubGVuZ3Ro fHxOKHQubGVuZ3RoKT9pKDApOmModCk7aWYoIkJ1ZmZlciI9PT10LnR5cGUmJkFycmF5Lmlz QXJyYXkodC5kYXRhKSlyZXR1cm4gYyh0LmRhdGEpfSh0KTtpZihvKXJldHVybiBvO2lmKCJ1 bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1TeW1ib2wudG9QcmltaXRpdmUmJiJm dW5jdGlvbiI9PXR5cGVvZiB0W1N5bWJvbC50b1ByaW1pdGl2ZV0pcmV0dXJuIGEuZnJvbSh0 W1N5bWJvbC50b1ByaW1pdGl2ZV0oInN0cmluZyIpLGUscik7dGhyb3cgbmV3IFR5cGVFcnJv cigiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZm ZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVk IHR5cGUgIit0eXBlb2YgdCl9ZnVuY3Rpb24gcyh0KXtpZigibnVtYmVyIiE9dHlwZW9mIHQp dGhyb3cgbmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBu dW1iZXInKTtpZih0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSAiJyt0Kyci IGlzIGludmFsaWQgZm9yIG9wdGlvbiAic2l6ZSInKX1mdW5jdGlvbiBsKHQpe3JldHVybiBz KHQpLGkodDwwPzA6MHx1KHQpKX1mdW5jdGlvbiBjKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDww PzA6MHx1KHQubGVuZ3RoKSxyPWkoZSksbj0wO248ZTtuKz0xKXJbbl09MjU1JnRbbl07cmV0 dXJuIHJ9ZnVuY3Rpb24gdSh0KXtpZih0Pj0yMTQ3NDgzNjQ3KXRocm93IG5ldyBSYW5nZUVy cm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNp emU6IDB4IisyMTQ3NDgzNjQ3Li50b1N0cmluZygxNikrIiBieXRlcyIpO3JldHVybiAwfHR9 ZnVuY3Rpb24gZih0LGUpe2lmKGEuaXNCdWZmZXIodCkpcmV0dXJuIHQubGVuZ3RoO2lmKEFy cmF5QnVmZmVyLmlzVmlldyh0KXx8Qih0LEFycmF5QnVmZmVyKSlyZXR1cm4gdC5ieXRlTGVu Z3RoO2lmKCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInN0 cmluZyIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgb3Ig QXJyYXlCdWZmZXIuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgdCk7dmFyIHI9dC5sZW5ndGgs bj1hcmd1bWVudHMubGVuZ3RoPjImJiEwPT09YXJndW1lbnRzWzJdO2lmKCFuJiYwPT09cily ZXR1cm4gMDtmb3IodmFyIGk9ITE7Oylzd2l0Y2goZSl7Y2FzZSJhc2NpaSI6Y2FzZSJsYXRp bjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gcjtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVy biBEKHQpLmxlbmd0aDtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2Fz ZSJ1dGYtMTZsZSI6cmV0dXJuIDIqcjtjYXNlImhleCI6cmV0dXJuIHI+Pj4xO2Nhc2UiYmFz ZTY0IjpyZXR1cm4gUih0KS5sZW5ndGg7ZGVmYXVsdDppZihpKXJldHVybiBuPy0xOkQodCku bGVuZ3RoO2U9KCIiK2UpLnRvTG93ZXJDYXNlKCksaT0hMH19ZnVuY3Rpb24gaCh0LGUscil7 dmFyIG49ITE7aWYoKHZvaWQgMD09PWV8fGU8MCkmJihlPTApLGU+dGhpcy5sZW5ndGgpcmV0 dXJuIiI7aWYoKHZvaWQgMD09PXJ8fHI+dGhpcy5sZW5ndGgpJiYocj10aGlzLmxlbmd0aCks cjw9MClyZXR1cm4iIjtpZigocj4+Pj0wKTw9KGU+Pj49MCkpcmV0dXJuIiI7Zm9yKHR8fCh0 PSJ1dGY4Iik7Oylzd2l0Y2godCl7Y2FzZSJoZXgiOnJldHVybiBNKHRoaXMsZSxyKTtjYXNl InV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBUKHRoaXMsZSxyKTtjYXNlImFzY2lpIjpyZXR1 cm4gayh0aGlzLGUscik7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gQSh0aGlz LGUscik7Y2FzZSJiYXNlNjQiOnJldHVybiB3KHRoaXMsZSxyKTtjYXNlInVjczIiOmNhc2Ui dWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIFModGhpcyxlLHIp O2RlZmF1bHQ6aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAi K3QpO3Q9KHQrIiIpLnRvTG93ZXJDYXNlKCksbj0hMH19ZnVuY3Rpb24gcCh0LGUscil7dmFy IG49dFtlXTt0W2VdPXRbcl0sdFtyXT1ufWZ1bmN0aW9uIGQodCxlLHIsbixpKXtpZigwPT09 dC5sZW5ndGgpcmV0dXJuLTE7aWYoInN0cmluZyI9PXR5cGVvZiByPyhuPXIscj0wKTpyPjIx NDc0ODM2NDc/cj0yMTQ3NDgzNjQ3OnI8LTIxNDc0ODM2NDgmJihyPS0yMTQ3NDgzNjQ4KSxO KHI9K3IpJiYocj1pPzA6dC5sZW5ndGgtMSkscjwwJiYocj10Lmxlbmd0aCtyKSxyPj10Lmxl bmd0aCl7aWYoaSlyZXR1cm4tMTtyPXQubGVuZ3RoLTF9ZWxzZSBpZihyPDApe2lmKCFpKXJl dHVybi0xO3I9MH1pZigic3RyaW5nIj09dHlwZW9mIGUmJihlPWEuZnJvbShlLG4pKSxhLmlz QnVmZmVyKGUpKXJldHVybiAwPT09ZS5sZW5ndGg/LTE6bSh0LGUscixuLGkpO2lmKCJudW1i ZXIiPT10eXBlb2YgZSlyZXR1cm4gZSY9MjU1LCJmdW5jdGlvbiI9PXR5cGVvZiBVaW50OEFy cmF5LnByb3RvdHlwZS5pbmRleE9mP2k/VWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5j YWxsKHQsZSxyKTpVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKHQsZSxy KTptKHQsW2VdLHIsbixpKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJ2YWwgbXVzdCBiZSBzdHJp bmcsIG51bWJlciBvciBCdWZmZXIiKX1mdW5jdGlvbiBtKHQsZSxyLG4saSl7dmFyIGEsbz0x LHM9dC5sZW5ndGgsbD1lLmxlbmd0aDtpZih2b2lkIDAhPT1uJiYoInVjczIiPT09KG49U3Ry aW5nKG4pLnRvTG93ZXJDYXNlKCkpfHwidWNzLTIiPT09bnx8InV0ZjE2bGUiPT09bnx8InV0 Zi0xNmxlIj09PW4pKXtpZih0Lmxlbmd0aDwyfHxlLmxlbmd0aDwyKXJldHVybi0xO289Mixz Lz0yLGwvPTIsci89Mn1mdW5jdGlvbiBjKHQsZSl7cmV0dXJuIDE9PT1vP3RbZV06dC5yZWFk VUludDE2QkUoZSpvKX1pZihpKXt2YXIgdT0tMTtmb3IoYT1yO2E8czthKyspaWYoYyh0LGEp PT09YyhlLC0xPT09dT8wOmEtdSkpe2lmKC0xPT09dSYmKHU9YSksYS11KzE9PT1sKXJldHVy biB1Km99ZWxzZS0xIT09dSYmKGEtPWEtdSksdT0tMX1lbHNlIGZvcihyK2w+cyYmKHI9cy1s KSxhPXI7YT49MDthLS0pe2Zvcih2YXIgZj0hMCxoPTA7aDxsO2grKylpZihjKHQsYStoKSE9 PWMoZSxoKSl7Zj0hMTticmVha31pZihmKXJldHVybiBhfXJldHVybi0xfWZ1bmN0aW9uIGco dCxlLHIsbil7cj1OdW1iZXIocil8fDA7dmFyIGk9dC5sZW5ndGgtcjtuPyhuPU51bWJlcihu KSk+aSYmKG49aSk6bj1pO3ZhciBhPWUubGVuZ3RoO24+YS8yJiYobj1hLzIpO2Zvcih2YXIg bz0wO288bjsrK28pe3ZhciBzPXBhcnNlSW50KGUuc3Vic3RyKDIqbywyKSwxNik7aWYoTihz KSlyZXR1cm4gbzt0W3Irb109c31yZXR1cm4gb31mdW5jdGlvbiB2KHQsZSxyLG4pe3JldHVy biBGKEQoZSx0Lmxlbmd0aC1yKSx0LHIsbil9ZnVuY3Rpb24geSh0LGUscixuKXtyZXR1cm4g RihmdW5jdGlvbih0KXtmb3IodmFyIGU9W10scj0wO3I8dC5sZW5ndGg7KytyKWUucHVzaCgy NTUmdC5jaGFyQ29kZUF0KHIpKTtyZXR1cm4gZX0oZSksdCxyLG4pfWZ1bmN0aW9uIHgodCxl LHIsbil7cmV0dXJuIHkodCxlLHIsbil9ZnVuY3Rpb24gYih0LGUscixuKXtyZXR1cm4gRihS KGUpLHQscixuKX1mdW5jdGlvbiBfKHQsZSxyLG4pe3JldHVybiBGKGZ1bmN0aW9uKHQsZSl7 Zm9yKHZhciByLG4saSxhPVtdLG89MDtvPHQubGVuZ3RoJiYhKChlLT0yKTwwKTsrK28pcj10 LmNoYXJDb2RlQXQobyksbj1yPj44LGk9ciUyNTYsYS5wdXNoKGkpLGEucHVzaChuKTtyZXR1 cm4gYX0oZSx0Lmxlbmd0aC1yKSx0LHIsbil9ZnVuY3Rpb24gdyh0LHIsbil7cmV0dXJuIDA9 PT1yJiZuPT09dC5sZW5ndGg/ZS5mcm9tQnl0ZUFycmF5KHQpOmUuZnJvbUJ5dGVBcnJheSh0 LnNsaWNlKHIsbikpfWZ1bmN0aW9uIFQodCxlLHIpe3I9TWF0aC5taW4odC5sZW5ndGgscik7 Zm9yKHZhciBuPVtdLGk9ZTtpPHI7KXt2YXIgYSxvLHMsbCxjPXRbaV0sdT1udWxsLGY9Yz4y Mzk/NDpjPjIyMz8zOmM+MTkxPzI6MTtpZihpK2Y8PXIpc3dpdGNoKGYpe2Nhc2UgMTpjPDEy OCYmKHU9Yyk7YnJlYWs7Y2FzZSAyOjEyOD09KDE5MiYoYT10W2krMV0pKSYmKGw9KDMxJmMp PDw2fDYzJmEpPjEyNyYmKHU9bCk7YnJlYWs7Y2FzZSAzOmE9dFtpKzFdLG89dFtpKzJdLDEy OD09KDE5MiZhKSYmMTI4PT0oMTkyJm8pJiYobD0oMTUmYyk8PDEyfCg2MyZhKTw8Nnw2MyZv KT4yMDQ3JiYobDw1NTI5Nnx8bD41NzM0MykmJih1PWwpO2JyZWFrO2Nhc2UgNDphPXRbaSsx XSxvPXRbaSsyXSxzPXRbaSszXSwxMjg9PSgxOTImYSkmJjEyOD09KDE5MiZvKSYmMTI4PT0o MTkyJnMpJiYobD0oMTUmYyk8PDE4fCg2MyZhKTw8MTJ8KDYzJm8pPDw2fDYzJnMpPjY1NTM1 JiZsPDExMTQxMTImJih1PWwpfW51bGw9PT11Pyh1PTY1NTMzLGY9MSk6dT42NTUzNSYmKHUt PTY1NTM2LG4ucHVzaCh1Pj4+MTAmMTAyM3w1NTI5NiksdT01NjMyMHwxMDIzJnUpLG4ucHVz aCh1KSxpKz1mfXJldHVybiBmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aDtpZihlPD00MDk2 KXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyx0KTt2YXIgcj0iIixu PTA7Zm9yKDtuPGU7KXIrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLHQuc2xp Y2UobixuKz00MDk2KSk7cmV0dXJuIHJ9KG4pfXIua01heExlbmd0aD0yMTQ3NDgzNjQ3LGEu VFlQRURfQVJSQVlfU1VQUE9SVD1mdW5jdGlvbigpe3RyeXt2YXIgdD1uZXcgVWludDhBcnJh eSgxKTtyZXR1cm4gdC5fX3Byb3RvX189e19fcHJvdG9fXzpVaW50OEFycmF5LnByb3RvdHlw ZSxmb286ZnVuY3Rpb24oKXtyZXR1cm4gNDJ9fSw0Mj09PXQuZm9vKCl9Y2F0Y2godCl7cmV0 dXJuITF9fSgpLGEuVFlQRURfQVJSQVlfU1VQUE9SVHx8InVuZGVmaW5lZCI9PXR5cGVvZiBj b25zb2xlfHwiZnVuY3Rpb24iIT10eXBlb2YgY29uc29sZS5lcnJvcnx8Y29uc29sZS5lcnJv cigiVGhpcyBicm93c2VyIGxhY2tzIHR5cGVkIGFycmF5IChVaW50OEFycmF5KSBzdXBwb3J0 IHdoaWNoIGlzIHJlcXVpcmVkIGJ5IGBidWZmZXJgIHY1LnguIFVzZSBgYnVmZmVyYCB2NC54 IGlmIHlvdSByZXF1aXJlIG9sZCBicm93c2VyIHN1cHBvcnQuIiksT2JqZWN0LmRlZmluZVBy b3BlcnR5KGEucHJvdG90eXBlLCJwYXJlbnQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlv bigpe2lmKGEuaXNCdWZmZXIodGhpcykpcmV0dXJuIHRoaXMuYnVmZmVyfX0pLE9iamVjdC5k ZWZpbmVQcm9wZXJ0eShhLnByb3RvdHlwZSwib2Zmc2V0Iix7ZW51bWVyYWJsZTohMCxnZXQ6 ZnVuY3Rpb24oKXtpZihhLmlzQnVmZmVyKHRoaXMpKXJldHVybiB0aGlzLmJ5dGVPZmZzZXR9 fSksInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPVN5bWJvbC5zcGVjaWVzJiZh W1N5bWJvbC5zcGVjaWVzXT09PWEmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5z cGVjaWVzLHt2YWx1ZTpudWxsLGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHdyaXRh YmxlOiExfSksYS5wb29sU2l6ZT04MTkyLGEuZnJvbT1mdW5jdGlvbih0LGUscil7cmV0dXJu IG8odCxlLHIpfSxhLnByb3RvdHlwZS5fX3Byb3RvX189VWludDhBcnJheS5wcm90b3R5cGUs YS5fX3Byb3RvX189VWludDhBcnJheSxhLmFsbG9jPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4g ZnVuY3Rpb24odCxlLHIpe3JldHVybiBzKHQpLHQ8PTA/aSh0KTp2b2lkIDAhPT1lPyJzdHJp bmciPT10eXBlb2Ygcj9pKHQpLmZpbGwoZSxyKTppKHQpLmZpbGwoZSk6aSh0KX0odCxlLHIp fSxhLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKHQpe3JldHVybiBsKHQpfSxhLmFsbG9jVW5zYWZl U2xvdz1mdW5jdGlvbih0KXtyZXR1cm4gbCh0KX0sYS5pc0J1ZmZlcj1mdW5jdGlvbih0KXty ZXR1cm4gbnVsbCE9dCYmITA9PT10Ll9pc0J1ZmZlciYmdCE9PWEucHJvdG90eXBlfSxhLmNv bXBhcmU9ZnVuY3Rpb24odCxlKXtpZihCKHQsVWludDhBcnJheSkmJih0PWEuZnJvbSh0LHQu b2Zmc2V0LHQuYnl0ZUxlbmd0aCkpLEIoZSxVaW50OEFycmF5KSYmKGU9YS5mcm9tKGUsZS5v ZmZzZXQsZS5ieXRlTGVuZ3RoKSksIWEuaXNCdWZmZXIodCl8fCFhLmlzQnVmZmVyKGUpKXRo cm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAiYnVmMSIsICJidWYyIiBhcmd1bWVudHMgbXVzdCBi ZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheScpO2lmKHQ9PT1lKXJldHVybiAw O2Zvcih2YXIgcj10Lmxlbmd0aCxuPWUubGVuZ3RoLGk9MCxvPU1hdGgubWluKHIsbik7aTxv OysraSlpZih0W2ldIT09ZVtpXSl7cj10W2ldLG49ZVtpXTticmVha31yZXR1cm4gcjxuPy0x Om48cj8xOjB9LGEuaXNFbmNvZGluZz1mdW5jdGlvbih0KXtzd2l0Y2goU3RyaW5nKHQpLnRv TG93ZXJDYXNlKCkpe2Nhc2UiaGV4IjpjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2UiYXNj aWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6Y2FzZSJiYXNlNjQiOmNhc2UidWNzMiI6 Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4hMDtkZWZh dWx0OnJldHVybiExfX0sYS5jb25jYXQ9ZnVuY3Rpb24odCxlKXtpZighQXJyYXkuaXNBcnJh eSh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBB cnJheSBvZiBCdWZmZXJzJyk7aWYoMD09PXQubGVuZ3RoKXJldHVybiBhLmFsbG9jKDApO3Zh ciByO2lmKHZvaWQgMD09PWUpZm9yKGU9MCxyPTA7cjx0Lmxlbmd0aDsrK3IpZSs9dFtyXS5s ZW5ndGg7dmFyIG49YS5hbGxvY1Vuc2FmZShlKSxpPTA7Zm9yKHI9MDtyPHQubGVuZ3RoOysr cil7dmFyIG89dFtyXTtpZihCKG8sVWludDhBcnJheSkmJihvPWEuZnJvbShvKSksIWEuaXNC dWZmZXIobykpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUg YW4gQXJyYXkgb2YgQnVmZmVycycpO28uY29weShuLGkpLGkrPW8ubGVuZ3RofXJldHVybiBu fSxhLmJ5dGVMZW5ndGg9ZixhLnByb3RvdHlwZS5faXNCdWZmZXI9ITAsYS5wcm90b3R5cGUu c3dhcDE2PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5sZW5ndGg7aWYodCUyIT0wKXRocm93IG5l dyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0 cyIpO2Zvcih2YXIgZT0wO2U8dDtlKz0yKXAodGhpcyxlLGUrMSk7cmV0dXJuIHRoaXN9LGEu cHJvdG90eXBlLnN3YXAzMj1mdW5jdGlvbigpe3ZhciB0PXRoaXMubGVuZ3RoO2lmKHQlNCE9 MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxl IG9mIDMyLWJpdHMiKTtmb3IodmFyIGU9MDtlPHQ7ZSs9NClwKHRoaXMsZSxlKzMpLHAodGhp cyxlKzEsZSsyKTtyZXR1cm4gdGhpc30sYS5wcm90b3R5cGUuc3dhcDY0PWZ1bmN0aW9uKCl7 dmFyIHQ9dGhpcy5sZW5ndGg7aWYodCU4IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZm ZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cyIpO2Zvcih2YXIgZT0wO2U8 dDtlKz04KXAodGhpcyxlLGUrNykscCh0aGlzLGUrMSxlKzYpLHAodGhpcyxlKzIsZSs1KSxw KHRoaXMsZSszLGUrNCk7cmV0dXJuIHRoaXN9LGEucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0 aW9uKCl7dmFyIHQ9dGhpcy5sZW5ndGg7cmV0dXJuIDA9PT10PyIiOjA9PT1hcmd1bWVudHMu bGVuZ3RoP1QodGhpcywwLHQpOmguYXBwbHkodGhpcyxhcmd1bWVudHMpfSxhLnByb3RvdHlw ZS50b0xvY2FsZVN0cmluZz1hLnByb3RvdHlwZS50b1N0cmluZyxhLnByb3RvdHlwZS5lcXVh bHM9ZnVuY3Rpb24odCl7aWYoIWEuaXNCdWZmZXIodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigi QXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO3JldHVybiB0aGlzPT09dHx8MD09PWEuY29t cGFyZSh0aGlzLHQpfSxhLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7dmFyIHQ9IiIs ZT1yLklOU1BFQ1RfTUFYX0JZVEVTO3JldHVybiB0PXRoaXMudG9TdHJpbmcoImhleCIsMCxl KS5yZXBsYWNlKC8oLnsyfSkvZywiJDEgIikudHJpbSgpLHRoaXMubGVuZ3RoPmUmJih0Kz0i IC4uLiAiKSwiPEJ1ZmZlciAiK3QrIj4ifSxhLnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9u KHQsZSxyLG4saSl7aWYoQih0LFVpbnQ4QXJyYXkpJiYodD1hLmZyb20odCx0Lm9mZnNldCx0 LmJ5dGVMZW5ndGgpKSwhYS5pc0J1ZmZlcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUg InRhcmdldCIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhB cnJheS4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiB0KTtpZih2b2lkIDA9PT1lJiYoZT0wKSx2 b2lkIDA9PT1yJiYocj10P3QubGVuZ3RoOjApLHZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09 PWkmJihpPXRoaXMubGVuZ3RoKSxlPDB8fHI+dC5sZW5ndGh8fG48MHx8aT50aGlzLmxlbmd0 aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIGluZGV4Iik7aWYobj49aSYm ZT49cilyZXR1cm4gMDtpZihuPj1pKXJldHVybi0xO2lmKGU+PXIpcmV0dXJuIDE7aWYodGhp cz09PXQpcmV0dXJuIDA7Zm9yKHZhciBvPShpPj4+PTApLShuPj4+PTApLHM9KHI+Pj49MCkt KGU+Pj49MCksbD1NYXRoLm1pbihvLHMpLGM9dGhpcy5zbGljZShuLGkpLHU9dC5zbGljZShl LHIpLGY9MDtmPGw7KytmKWlmKGNbZl0hPT11W2ZdKXtvPWNbZl0scz11W2ZdO2JyZWFrfXJl dHVybiBvPHM/LTE6czxvPzE6MH0sYS5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24odCxl LHIpe3JldHVybi0xIT09dGhpcy5pbmRleE9mKHQsZSxyKX0sYS5wcm90b3R5cGUuaW5kZXhP Zj1mdW5jdGlvbih0LGUscil7cmV0dXJuIGQodGhpcyx0LGUsciwhMCl9LGEucHJvdG90eXBl Lmxhc3RJbmRleE9mPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZCh0aGlzLHQsZSxyLCExKX0s YS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCxlLHIsbil7aWYodm9pZCAwPT09ZSluPSJ1 dGY4IixyPXRoaXMubGVuZ3RoLGU9MDtlbHNlIGlmKHZvaWQgMD09PXImJiJzdHJpbmciPT10 eXBlb2YgZSluPWUscj10aGlzLmxlbmd0aCxlPTA7ZWxzZXtpZighaXNGaW5pdGUoZSkpdGhy b3cgbmV3IEVycm9yKCJCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0Wywg bGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCIpO2U+Pj49MCxpc0Zpbml0ZShyKT8o cj4+Pj0wLHZvaWQgMD09PW4mJihuPSJ1dGY4IikpOihuPXIscj12b2lkIDApfXZhciBpPXRo aXMubGVuZ3RoLWU7aWYoKHZvaWQgMD09PXJ8fHI+aSkmJihyPWkpLHQubGVuZ3RoPjAmJihy PDB8fGU8MCl8fGU+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQg dG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzIik7bnx8KG49InV0ZjgiKTtmb3IodmFy IGE9ITE7Oylzd2l0Y2gobil7Y2FzZSJoZXgiOnJldHVybiBnKHRoaXMsdCxlLHIpO2Nhc2Ui dXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIHYodGhpcyx0LGUscik7Y2FzZSJhc2NpaSI6cmV0 dXJuIHkodGhpcyx0LGUscik7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4geCh0 aGlzLHQsZSxyKTtjYXNlImJhc2U2NCI6cmV0dXJuIGIodGhpcyx0LGUscik7Y2FzZSJ1Y3My IjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBfKHRo aXMsdCxlLHIpO2RlZmF1bHQ6aWYoYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVu Y29kaW5nOiAiK24pO249KCIiK24pLnRvTG93ZXJDYXNlKCksYT0hMH19LGEucHJvdG90eXBl LnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJCdWZmZXIiLGRhdGE6QXJyYXkucHJv dG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyfHx0aGlzLDApfX07ZnVuY3Rpb24gayh0LGUs cil7dmFyIG49IiI7cj1NYXRoLm1pbih0Lmxlbmd0aCxyKTtmb3IodmFyIGk9ZTtpPHI7Kytp KW4rPVN0cmluZy5mcm9tQ2hhckNvZGUoMTI3JnRbaV0pO3JldHVybiBufWZ1bmN0aW9uIEEo dCxlLHIpe3ZhciBuPSIiO3I9TWF0aC5taW4odC5sZW5ndGgscik7Zm9yKHZhciBpPWU7aTxy OysraSluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRbaV0pO3JldHVybiBufWZ1bmN0aW9uIE0o dCxlLHIpe3ZhciBuPXQubGVuZ3RoOyghZXx8ZTwwKSYmKGU9MCksKCFyfHxyPDB8fHI+bikm JihyPW4pO2Zvcih2YXIgaT0iIixhPWU7YTxyOysrYSlpKz16KHRbYV0pO3JldHVybiBpfWZ1 bmN0aW9uIFModCxlLHIpe2Zvcih2YXIgbj10LnNsaWNlKGUsciksaT0iIixhPTA7YTxuLmxl bmd0aDthKz0yKWkrPVN0cmluZy5mcm9tQ2hhckNvZGUoblthXSsyNTYqblthKzFdKTtyZXR1 cm4gaX1mdW5jdGlvbiBFKHQsZSxyKXtpZih0JTEhPTB8fHQ8MCl0aHJvdyBuZXcgUmFuZ2VF cnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYodCtlPnIpdGhyb3cgbmV3IFJhbmdlRXJy b3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgiKX1mdW5jdGlvbiBM KHQsZSxyLG4saSxvKXtpZighYS5pc0J1ZmZlcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCci YnVmZmVyIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJyk7aWYoZT5pfHxl PG8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgaXMgb3V0IG9mIGJv dW5kcycpO2lmKHIrbj50Lmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0 IG9mIHJhbmdlIil9ZnVuY3Rpb24gQyh0LGUscixuLGksYSl7aWYocituPnQubGVuZ3RoKXRo cm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKTtpZihyPDApdGhyb3cg bmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uIFAodCxlLHIs aSxhKXtyZXR1cm4gZT0rZSxyPj4+PTAsYXx8Qyh0LDAsciw0KSxuLndyaXRlKHQsZSxyLGks MjMsNCkscis0fWZ1bmN0aW9uIEkodCxlLHIsaSxhKXtyZXR1cm4gZT0rZSxyPj4+PTAsYXx8 Qyh0LDAsciw4KSxuLndyaXRlKHQsZSxyLGksNTIsOCkscis4fWEucHJvdG90eXBlLnNsaWNl PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5sZW5ndGg7KHQ9fn50KTwwPyh0Kz1yKTwwJiYo dD0wKTp0PnImJih0PXIpLChlPXZvaWQgMD09PWU/cjp+fmUpPDA/KGUrPXIpPDAmJihlPTAp OmU+ciYmKGU9ciksZTx0JiYoZT10KTt2YXIgbj10aGlzLnN1YmFycmF5KHQsZSk7cmV0dXJu IG4uX19wcm90b19fPWEucHJvdG90eXBlLG59LGEucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVu Y3Rpb24odCxlLHIpe3Q+Pj49MCxlPj4+PTAscnx8RSh0LGUsdGhpcy5sZW5ndGgpO2Zvcih2 YXIgbj10aGlzW3RdLGk9MSxhPTA7KythPGUmJihpKj0yNTYpOyluKz10aGlzW3QrYV0qaTty ZXR1cm4gbn0sYS5wcm90b3R5cGUucmVhZFVJbnRCRT1mdW5jdGlvbih0LGUscil7dD4+Pj0w LGU+Pj49MCxyfHxFKHQsZSx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXRoaXNbdCstLWVdLGk9 MTtlPjAmJihpKj0yNTYpOyluKz10aGlzW3QrLS1lXSppO3JldHVybiBufSxhLnByb3RvdHlw ZS5yZWFkVUludDg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEUodCwxLHRoaXMu bGVuZ3RoKSx0aGlzW3RdfSxhLnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24odCxl KXtyZXR1cm4gdD4+Pj0wLGV8fEUodCwyLHRoaXMubGVuZ3RoKSx0aGlzW3RdfHRoaXNbdCsx XTw8OH0sYS5wcm90b3R5cGUucmVhZFVJbnQxNkJFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+ Pj49MCxlfHxFKHQsMix0aGlzLmxlbmd0aCksdGhpc1t0XTw8OHx0aGlzW3QrMV19LGEucHJv dG90eXBlLnJlYWRVSW50MzJMRT1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8RSh0 LDQsdGhpcy5sZW5ndGgpLCh0aGlzW3RdfHRoaXNbdCsxXTw8OHx0aGlzW3QrMl08PDE2KSsx Njc3NzIxNip0aGlzW3QrM119LGEucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbih0 LGUpe3JldHVybiB0Pj4+PTAsZXx8RSh0LDQsdGhpcy5sZW5ndGgpLDE2Nzc3MjE2KnRoaXNb dF0rKHRoaXNbdCsxXTw8MTZ8dGhpc1t0KzJdPDw4fHRoaXNbdCszXSl9LGEucHJvdG90eXBl LnJlYWRJbnRMRT1mdW5jdGlvbih0LGUscil7dD4+Pj0wLGU+Pj49MCxyfHxFKHQsZSx0aGlz Lmxlbmd0aCk7Zm9yKHZhciBuPXRoaXNbdF0saT0xLGE9MDsrK2E8ZSYmKGkqPTI1Nik7KW4r PXRoaXNbdCthXSppO3JldHVybiBuPj0oaSo9MTI4KSYmKG4tPU1hdGgucG93KDIsOCplKSks bn0sYS5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uKHQsZSxyKXt0Pj4+PTAsZT4+Pj0w LHJ8fEUodCxlLHRoaXMubGVuZ3RoKTtmb3IodmFyIG49ZSxpPTEsYT10aGlzW3QrLS1uXTtu PjAmJihpKj0yNTYpOylhKz10aGlzW3QrLS1uXSppO3JldHVybiBhPj0oaSo9MTI4KSYmKGEt PU1hdGgucG93KDIsOCplKSksYX0sYS5wcm90b3R5cGUucmVhZEludDg9ZnVuY3Rpb24odCxl KXtyZXR1cm4gdD4+Pj0wLGV8fEUodCwxLHRoaXMubGVuZ3RoKSwxMjgmdGhpc1t0XT8tMSoo MjU1LXRoaXNbdF0rMSk6dGhpc1t0XX0sYS5wcm90b3R5cGUucmVhZEludDE2TEU9ZnVuY3Rp b24odCxlKXt0Pj4+PTAsZXx8RSh0LDIsdGhpcy5sZW5ndGgpO3ZhciByPXRoaXNbdF18dGhp c1t0KzFdPDw4O3JldHVybiAzMjc2OCZyPzQyOTQ5MDE3NjB8cjpyfSxhLnByb3RvdHlwZS5y ZWFkSW50MTZCRT1mdW5jdGlvbih0LGUpe3Q+Pj49MCxlfHxFKHQsMix0aGlzLmxlbmd0aCk7 dmFyIHI9dGhpc1t0KzFdfHRoaXNbdF08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxy OnJ9LGEucHJvdG90eXBlLnJlYWRJbnQzMkxFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49 MCxlfHxFKHQsNCx0aGlzLmxlbmd0aCksdGhpc1t0XXx0aGlzW3QrMV08PDh8dGhpc1t0KzJd PDwxNnx0aGlzW3QrM108PDI0fSxhLnByb3RvdHlwZS5yZWFkSW50MzJCRT1mdW5jdGlvbih0 LGUpe3JldHVybiB0Pj4+PTAsZXx8RSh0LDQsdGhpcy5sZW5ndGgpLHRoaXNbdF08PDI0fHRo aXNbdCsxXTw8MTZ8dGhpc1t0KzJdPDw4fHRoaXNbdCszXX0sYS5wcm90b3R5cGUucmVhZEZs b2F0TEU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEUodCw0LHRoaXMubGVuZ3Ro KSxuLnJlYWQodGhpcyx0LCEwLDIzLDQpfSxhLnByb3RvdHlwZS5yZWFkRmxvYXRCRT1mdW5j dGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8RSh0LDQsdGhpcy5sZW5ndGgpLG4ucmVhZCh0 aGlzLHQsITEsMjMsNCl9LGEucHJvdG90eXBlLnJlYWREb3VibGVMRT1mdW5jdGlvbih0LGUp e3JldHVybiB0Pj4+PTAsZXx8RSh0LDgsdGhpcy5sZW5ndGgpLG4ucmVhZCh0aGlzLHQsITAs NTIsOCl9LGEucHJvdG90eXBlLnJlYWREb3VibGVCRT1mdW5jdGlvbih0LGUpe3JldHVybiB0 Pj4+PTAsZXx8RSh0LDgsdGhpcy5sZW5ndGgpLG4ucmVhZCh0aGlzLHQsITEsNTIsOCl9LGEu cHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKHQsZSxyLG4peyh0PSt0LGU+Pj49MCxy Pj4+PTAsbil8fEwodGhpcyx0LGUscixNYXRoLnBvdygyLDgqciktMSwwKTt2YXIgaT0xLGE9 MDtmb3IodGhpc1tlXT0yNTUmdDsrK2E8ciYmKGkqPTI1Nik7KXRoaXNbZSthXT10L2kmMjU1 O3JldHVybiBlK3J9LGEucHJvdG90eXBlLndyaXRlVUludEJFPWZ1bmN0aW9uKHQsZSxyLG4p eyh0PSt0LGU+Pj49MCxyPj4+PTAsbil8fEwodGhpcyx0LGUscixNYXRoLnBvdygyLDgqcikt MSwwKTt2YXIgaT1yLTEsYT0xO2Zvcih0aGlzW2UraV09MjU1JnQ7LS1pPj0wJiYoYSo9MjU2 KTspdGhpc1tlK2ldPXQvYSYyNTU7cmV0dXJuIGUrcn0sYS5wcm90b3R5cGUud3JpdGVVSW50 OD1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fEwodGhpcyx0LGUsMSwy NTUsMCksdGhpc1tlXT0yNTUmdCxlKzF9LGEucHJvdG90eXBlLndyaXRlVUludDE2TEU9ZnVu Y3Rpb24odCxlLHIpe3JldHVybiB0PSt0LGU+Pj49MCxyfHxMKHRoaXMsdCxlLDIsNjU1MzUs MCksdGhpc1tlXT0yNTUmdCx0aGlzW2UrMV09dD4+PjgsZSsyfSxhLnByb3RvdHlwZS53cml0 ZVVJbnQxNkJFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPj4+PTAscnx8TCh0aGlz LHQsZSwyLDY1NTM1LDApLHRoaXNbZV09dD4+PjgsdGhpc1tlKzFdPTI1NSZ0LGUrMn0sYS5w cm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+ Pj0wLHJ8fEwodGhpcyx0LGUsNCw0Mjk0OTY3Mjk1LDApLHRoaXNbZSszXT10Pj4+MjQsdGhp c1tlKzJdPXQ+Pj4xNix0aGlzW2UrMV09dD4+PjgsdGhpc1tlXT0yNTUmdCxlKzR9LGEucHJv dG90eXBlLndyaXRlVUludDMyQkU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PSt0LGU+Pj49 MCxyfHxMKHRoaXMsdCxlLDQsNDI5NDk2NzI5NSwwKSx0aGlzW2VdPXQ+Pj4yNCx0aGlzW2Ur MV09dD4+PjE2LHRoaXNbZSsyXT10Pj4+OCx0aGlzW2UrM109MjU1JnQsZSs0fSxhLnByb3Rv dHlwZS53cml0ZUludExFPWZ1bmN0aW9uKHQsZSxyLG4pe2lmKHQ9K3QsZT4+Pj0wLCFuKXt2 YXIgaT1NYXRoLnBvdygyLDgqci0xKTtMKHRoaXMsdCxlLHIsaS0xLC1pKX12YXIgYT0wLG89 MSxzPTA7Zm9yKHRoaXNbZV09MjU1JnQ7KythPHImJihvKj0yNTYpOyl0PDAmJjA9PT1zJiYw IT09dGhpc1tlK2EtMV0mJihzPTEpLHRoaXNbZSthXT0odC9vPj4wKS1zJjI1NTtyZXR1cm4g ZStyfSxhLnByb3RvdHlwZS53cml0ZUludEJFPWZ1bmN0aW9uKHQsZSxyLG4pe2lmKHQ9K3Qs ZT4+Pj0wLCFuKXt2YXIgaT1NYXRoLnBvdygyLDgqci0xKTtMKHRoaXMsdCxlLHIsaS0xLC1p KX12YXIgYT1yLTEsbz0xLHM9MDtmb3IodGhpc1tlK2FdPTI1NSZ0Oy0tYT49MCYmKG8qPTI1 Nik7KXQ8MCYmMD09PXMmJjAhPT10aGlzW2UrYSsxXSYmKHM9MSksdGhpc1tlK2FdPSh0L28+ PjApLXMmMjU1O3JldHVybiBlK3J9LGEucHJvdG90eXBlLndyaXRlSW50OD1mdW5jdGlvbih0 LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fEwodGhpcyx0LGUsMSwxMjcsLTEyOCksdDww JiYodD0yNTUrdCsxKSx0aGlzW2VdPTI1NSZ0LGUrMX0sYS5wcm90b3R5cGUud3JpdGVJbnQx NkxFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPj4+PTAscnx8TCh0aGlzLHQsZSwy LDMyNzY3LC0zMjc2OCksdGhpc1tlXT0yNTUmdCx0aGlzW2UrMV09dD4+PjgsZSsyfSxhLnBy b3RvdHlwZS53cml0ZUludDE2QkU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PSt0LGU+Pj49 MCxyfHxMKHRoaXMsdCxlLDIsMzI3NjcsLTMyNzY4KSx0aGlzW2VdPXQ+Pj44LHRoaXNbZSsx XT0yNTUmdCxlKzJ9LGEucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbih0LGUscil7 cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fEwodGhpcyx0LGUsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgz NjQ4KSx0aGlzW2VdPTI1NSZ0LHRoaXNbZSsxXT10Pj4+OCx0aGlzW2UrMl09dD4+PjE2LHRo aXNbZSszXT10Pj4+MjQsZSs0fSxhLnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24o dCxlLHIpe3JldHVybiB0PSt0LGU+Pj49MCxyfHxMKHRoaXMsdCxlLDQsMjE0NzQ4MzY0Nywt MjE0NzQ4MzY0OCksdDwwJiYodD00Mjk0OTY3Mjk1K3QrMSksdGhpc1tlXT10Pj4+MjQsdGhp c1tlKzFdPXQ+Pj4xNix0aGlzW2UrMl09dD4+PjgsdGhpc1tlKzNdPTI1NSZ0LGUrNH0sYS5w cm90b3R5cGUud3JpdGVGbG9hdExFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gUCh0aGlzLHQs ZSwhMCxyKX0sYS5wcm90b3R5cGUud3JpdGVGbG9hdEJFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1 cm4gUCh0aGlzLHQsZSwhMSxyKX0sYS5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlv bih0LGUscil7cmV0dXJuIEkodGhpcyx0LGUsITAscil9LGEucHJvdG90eXBlLndyaXRlRG91 YmxlQkU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBJKHRoaXMsdCxlLCExLHIpfSxhLnByb3Rv dHlwZS5jb3B5PWZ1bmN0aW9uKHQsZSxyLG4pe2lmKCFhLmlzQnVmZmVyKHQpKXRocm93IG5l dyBUeXBlRXJyb3IoImFyZ3VtZW50IHNob3VsZCBiZSBhIEJ1ZmZlciIpO2lmKHJ8fChyPTAp LG58fDA9PT1ufHwobj10aGlzLmxlbmd0aCksZT49dC5sZW5ndGgmJihlPXQubGVuZ3RoKSxl fHwoZT0wKSxuPjAmJm48ciYmKG49ciksbj09PXIpcmV0dXJuIDA7aWYoMD09PXQubGVuZ3Ro fHwwPT09dGhpcy5sZW5ndGgpcmV0dXJuIDA7aWYoZTwwKXRocm93IG5ldyBSYW5nZUVycm9y KCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzIik7aWYocjwwfHxyPj10aGlzLmxlbmd0aCl0 aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7aWYobjwwKXRocm93 IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcyIpO24+dGhpcy5sZW5n dGgmJihuPXRoaXMubGVuZ3RoKSx0Lmxlbmd0aC1lPG4tciYmKG49dC5sZW5ndGgtZStyKTt2 YXIgaT1uLXI7aWYodGhpcz09PXQmJiJmdW5jdGlvbiI9PXR5cGVvZiBVaW50OEFycmF5LnBy b3RvdHlwZS5jb3B5V2l0aGluKXRoaXMuY29weVdpdGhpbihlLHIsbik7ZWxzZSBpZih0aGlz PT09dCYmcjxlJiZlPG4pZm9yKHZhciBvPWktMTtvPj0wOy0tbyl0W28rZV09dGhpc1tvK3Jd O2Vsc2UgVWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwodCx0aGlzLnN1YmFycmF5KHIs biksZSk7cmV0dXJuIGl9LGEucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24odCxlLHIsbil7aWYo InN0cmluZyI9PXR5cGVvZiB0KXtpZigic3RyaW5nIj09dHlwZW9mIGU/KG49ZSxlPTAscj10 aGlzLmxlbmd0aCk6InN0cmluZyI9PXR5cGVvZiByJiYobj1yLHI9dGhpcy5sZW5ndGgpLHZv aWQgMCE9PW4mJiJzdHJpbmciIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCJlbmNv ZGluZyBtdXN0IGJlIGEgc3RyaW5nIik7aWYoInN0cmluZyI9PXR5cGVvZiBuJiYhYS5pc0Vu Y29kaW5nKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrbik7 aWYoMT09PXQubGVuZ3RoKXt2YXIgaT10LmNoYXJDb2RlQXQoMCk7KCJ1dGY4Ij09PW4mJmk8 MTI4fHwibGF0aW4xIj09PW4pJiYodD1pKX19ZWxzZSJudW1iZXIiPT10eXBlb2YgdCYmKHQm PTI1NSk7aWYoZTwwfHx0aGlzLmxlbmd0aDxlfHx0aGlzLmxlbmd0aDxyKXRocm93IG5ldyBS YW5nZUVycm9yKCJPdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihyPD1lKXJldHVybiB0aGlzO3Zh ciBvO2lmKGU+Pj49MCxyPXZvaWQgMD09PXI/dGhpcy5sZW5ndGg6cj4+PjAsdHx8KHQ9MCks Im51bWJlciI9PXR5cGVvZiB0KWZvcihvPWU7bzxyOysrbyl0aGlzW29dPXQ7ZWxzZXt2YXIg cz1hLmlzQnVmZmVyKHQpP3Q6YS5mcm9tKHQsbiksbD1zLmxlbmd0aDtpZigwPT09bCl0aHJv dyBuZXcgVHlwZUVycm9yKCdUaGUgdmFsdWUgIicrdCsnIiBpcyBpbnZhbGlkIGZvciBhcmd1 bWVudCAidmFsdWUiJyk7Zm9yKG89MDtvPHItZTsrK28pdGhpc1tvK2VdPXNbbyVsXX1yZXR1 cm4gdGhpc307dmFyIE89L1teKy8wLTlBLVphLXotX10vZztmdW5jdGlvbiB6KHQpe3JldHVy biB0PDE2PyIwIit0LnRvU3RyaW5nKDE2KTp0LnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBEKHQs ZSl7dmFyIHI7ZT1lfHwxLzA7Zm9yKHZhciBuPXQubGVuZ3RoLGk9bnVsbCxhPVtdLG89MDtv PG47KytvKXtpZigocj10LmNoYXJDb2RlQXQobykpPjU1Mjk1JiZyPDU3MzQ0KXtpZighaSl7 aWYocj41NjMxOSl7KGUtPTMpPi0xJiZhLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWlm KG8rMT09PW4peyhlLT0zKT4tMSYmYS5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1pPXI7 Y29udGludWV9aWYocjw1NjMyMCl7KGUtPTMpPi0xJiZhLnB1c2goMjM5LDE5MSwxODkpLGk9 cjtjb250aW51ZX1yPTY1NTM2KyhpLTU1Mjk2PDwxMHxyLTU2MzIwKX1lbHNlIGkmJihlLT0z KT4tMSYmYS5wdXNoKDIzOSwxOTEsMTg5KTtpZihpPW51bGwscjwxMjgpe2lmKChlLT0xKTww KWJyZWFrO2EucHVzaChyKX1lbHNlIGlmKHI8MjA0OCl7aWYoKGUtPTIpPDApYnJlYWs7YS5w dXNoKHI+PjZ8MTkyLDYzJnJ8MTI4KX1lbHNlIGlmKHI8NjU1MzYpe2lmKChlLT0zKTwwKWJy ZWFrO2EucHVzaChyPj4xMnwyMjQscj4+NiY2M3wxMjgsNjMmcnwxMjgpfWVsc2V7aWYoIShy PDExMTQxMTIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2RlIHBvaW50Iik7aWYoKGUt PTQpPDApYnJlYWs7YS5wdXNoKHI+PjE4fDI0MCxyPj4xMiY2M3wxMjgscj4+NiY2M3wxMjgs NjMmcnwxMjgpfX1yZXR1cm4gYX1mdW5jdGlvbiBSKHQpe3JldHVybiBlLnRvQnl0ZUFycmF5 KGZ1bmN0aW9uKHQpe2lmKCh0PSh0PXQuc3BsaXQoIj0iKVswXSkudHJpbSgpLnJlcGxhY2Uo TywiIikpLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7dC5sZW5ndGglNCE9MDspdCs9Ij0iO3Jl dHVybiB0fSh0KSl9ZnVuY3Rpb24gRih0LGUscixuKXtmb3IodmFyIGk9MDtpPG4mJiEoaSty Pj1lLmxlbmd0aHx8aT49dC5sZW5ndGgpOysraSllW2krcl09dFtpXTtyZXR1cm4gaX1mdW5j dGlvbiBCKHQsZSl7cmV0dXJuIHQgaW5zdGFuY2VvZiBlfHxudWxsIT10JiZudWxsIT10LmNv bnN0cnVjdG9yJiZudWxsIT10LmNvbnN0cnVjdG9yLm5hbWUmJnQuY29uc3RydWN0b3IubmFt ZT09PWUubmFtZX1mdW5jdGlvbiBOKHQpe3JldHVybiB0IT10fX0pLmNhbGwodGhpcyl9KS5j YWxsKHRoaXMsdCgiYnVmZmVyIikuQnVmZmVyKX0seyJiYXNlNjQtanMiOjEsYnVmZmVyOjMs aWVlZTc1NDo0fV0sNDpbZnVuY3Rpb24odCxlLHIpe3IucmVhZD1mdW5jdGlvbih0LGUscixu LGkpe3ZhciBhLG8scz04Kmktbi0xLGw9KDE8PHMpLTEsYz1sPj4xLHU9LTcsZj1yP2ktMTow LGg9cj8tMToxLHA9dFtlK2ZdO2ZvcihmKz1oLGE9cCYoMTw8LXUpLTEscD4+PS11LHUrPXM7 dT4wO2E9MjU2KmErdFtlK2ZdLGYrPWgsdS09OCk7Zm9yKG89YSYoMTw8LXUpLTEsYT4+PS11 LHUrPW47dT4wO289MjU2Km8rdFtlK2ZdLGYrPWgsdS09OCk7aWYoMD09PWEpYT0xLWM7ZWxz ZXtpZihhPT09bClyZXR1cm4gbz9OYU46MS8wKihwPy0xOjEpO28rPU1hdGgucG93KDIsbiks YS09Y31yZXR1cm4ocD8tMToxKSpvKk1hdGgucG93KDIsYS1uKX0sci53cml0ZT1mdW5jdGlv bih0LGUscixuLGksYSl7dmFyIG8scyxsLGM9OCphLWktMSx1PSgxPDxjKS0xLGY9dT4+MSxo PTIzPT09aT9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcpOjAscD1uPzA6YS0xLGQ9 bj8xOi0xLG09ZTwwfHwwPT09ZSYmMS9lPDA/MTowO2ZvcihlPU1hdGguYWJzKGUpLGlzTmFO KGUpfHxlPT09MS8wPyhzPWlzTmFOKGUpPzE6MCxvPXUpOihvPU1hdGguZmxvb3IoTWF0aC5s b2coZSkvTWF0aC5MTjIpLGUqKGw9TWF0aC5wb3coMiwtbykpPDEmJihvLS0sbCo9MiksKGUr PW8rZj49MT9oL2w6aCpNYXRoLnBvdygyLDEtZikpKmw+PTImJihvKyssbC89MiksbytmPj11 PyhzPTAsbz11KTpvK2Y+PTE/KHM9KGUqbC0xKSpNYXRoLnBvdygyLGkpLG8rPWYpOihzPWUq TWF0aC5wb3coMixmLTEpKk1hdGgucG93KDIsaSksbz0wKSk7aT49ODt0W3IrcF09MjU1JnMs cCs9ZCxzLz0yNTYsaS09OCk7Zm9yKG89bzw8aXxzLGMrPWk7Yz4wO3RbcitwXT0yNTUmbyxw Kz1kLG8vPTI1NixjLT04KTt0W3IrcC1kXXw9MTI4Km19fSx7fV0sNTpbZnVuY3Rpb24odCxl LHIpe3ZhciBuLGksYT1lLmV4cG9ydHM9e307ZnVuY3Rpb24gbygpe3Rocm93IG5ldyBFcnJv cigic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIHMoKXt0aHJv dyBuZXcgRXJyb3IoImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0 aW9uIGwodCl7aWYobj09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQodCwwKTtpZigo bj09PW98fCFuKSYmc2V0VGltZW91dClyZXR1cm4gbj1zZXRUaW1lb3V0LHNldFRpbWVvdXQo dCwwKTt0cnl7cmV0dXJuIG4odCwwKX1jYXRjaChlKXt0cnl7cmV0dXJuIG4uY2FsbChudWxs LHQsMCl9Y2F0Y2goZSl7cmV0dXJuIG4uY2FsbCh0aGlzLHQsMCl9fX0hZnVuY3Rpb24oKXt0 cnl7bj0iZnVuY3Rpb24iPT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0Om99Y2F0Y2go dCl7bj1vfXRyeXtpPSJmdW5jdGlvbiI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1l b3V0OnN9Y2F0Y2godCl7aT1zfX0oKTt2YXIgYyx1PVtdLGY9ITEsaD0tMTtmdW5jdGlvbiBw KCl7ZiYmYyYmKGY9ITEsYy5sZW5ndGg/dT1jLmNvbmNhdCh1KTpoPS0xLHUubGVuZ3RoJiZk KCkpfWZ1bmN0aW9uIGQoKXtpZighZil7dmFyIHQ9bChwKTtmPSEwO2Zvcih2YXIgZT11Lmxl bmd0aDtlOyl7Zm9yKGM9dSx1PVtdOysraDxlOyljJiZjW2hdLnJ1bigpO2g9LTEsZT11Lmxl bmd0aH1jPW51bGwsZj0hMSxmdW5jdGlvbih0KXtpZihpPT09Y2xlYXJUaW1lb3V0KXJldHVy biBjbGVhclRpbWVvdXQodCk7aWYoKGk9PT1zfHwhaSkmJmNsZWFyVGltZW91dClyZXR1cm4g aT1jbGVhclRpbWVvdXQsY2xlYXJUaW1lb3V0KHQpO3RyeXtpKHQpfWNhdGNoKGUpe3RyeXty ZXR1cm4gaS5jYWxsKG51bGwsdCl9Y2F0Y2goZSl7cmV0dXJuIGkuY2FsbCh0aGlzLHQpfX19 KHQpfX1mdW5jdGlvbiBtKHQsZSl7dGhpcy5mdW49dCx0aGlzLmFycmF5PWV9ZnVuY3Rpb24g Zygpe31hLm5leHRUaWNrPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBBcnJheShhcmd1bWVudHMu bGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlmb3IodmFyIHI9MTtyPGFyZ3VtZW50 cy5sZW5ndGg7cisrKWVbci0xXT1hcmd1bWVudHNbcl07dS5wdXNoKG5ldyBtKHQsZSkpLDEh PT11Lmxlbmd0aHx8Znx8bChkKX0sbS5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7dGhpcy5m dW4uYXBwbHkobnVsbCx0aGlzLmFycmF5KX0sYS50aXRsZT0iYnJvd3NlciIsYS5icm93c2Vy PSEwLGEuZW52PXt9LGEuYXJndj1bXSxhLnZlcnNpb249IiIsYS52ZXJzaW9ucz17fSxhLm9u PWcsYS5hZGRMaXN0ZW5lcj1nLGEub25jZT1nLGEub2ZmPWcsYS5yZW1vdmVMaXN0ZW5lcj1n LGEucmVtb3ZlQWxsTGlzdGVuZXJzPWcsYS5lbWl0PWcsYS5wcmVwZW5kTGlzdGVuZXI9Zyxh LnByZXBlbmRPbmNlTGlzdGVuZXI9ZyxhLmxpc3RlbmVycz1mdW5jdGlvbih0KXtyZXR1cm5b XX0sYS5iaW5kaW5nPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5iaW5k aW5nIGlzIG5vdCBzdXBwb3J0ZWQiKX0sYS5jd2Q9ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9LGEu Y2hkaXI9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmNoZGlyIGlzIG5v dCBzdXBwb3J0ZWQiKX0sYS51bWFzaz1mdW5jdGlvbigpe3JldHVybiAwfX0se31dLDY6W2Z1 bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9e2FscGhhX3NoYXBlOnQoImFscGhhLXNoYXBlIiks Y29udmV4X2h1bGw6dCgiY29udmV4LWh1bGwiKSxkZWxhdW5heV90cmlhbmd1bGF0ZTp0KCJk ZWxhdW5heS10cmlhbmd1bGF0ZSIpLGdsX2NvbmUzZDp0KCJnbC1jb25lM2QiKSxnbF9lcnJv cjNkOnQoImdsLWVycm9yM2QiKSxnbF9oZWF0bWFwMmQ6dCgiZ2wtaGVhdG1hcDJkIiksZ2xf bGluZTNkOnQoImdsLWxpbmUzZCIpLGdsX21lc2gzZDp0KCJnbC1tZXNoM2QiKSxnbF9wbG90 MmQ6dCgiZ2wtcGxvdDJkIiksZ2xfcGxvdDNkOnQoImdsLXBsb3QzZCIpLGdsX3BvaW50Y2xv dWQyZDp0KCJnbC1wb2ludGNsb3VkMmQiKSxnbF9zY2F0dGVyM2Q6dCgiZ2wtc2NhdHRlcjNk IiksZ2xfc2VsZWN0X2JveDp0KCJnbC1zZWxlY3QtYm94IiksZ2xfc3Bpa2VzMmQ6dCgiZ2wt c3Bpa2VzMmQiKSxnbF9zdHJlYW10dWJlM2Q6dCgiZ2wtc3RyZWFtdHViZTNkIiksZ2xfc3Vy ZmFjZTNkOnQoImdsLXN1cmZhY2UzZCIpLG5kYXJyYXk6dCgibmRhcnJheSIpLG5kYXJyYXlf bGluZWFyX2ludGVycG9sYXRlOnQoIm5kYXJyYXktbGluZWFyLWludGVycG9sYXRlIil9fSx7 ImFscGhhLXNoYXBlIjoxMiwiY29udmV4LWh1bGwiOjU4LCJkZWxhdW5heS10cmlhbmd1bGF0 ZSI6NjMsImdsLWNvbmUzZCI6NzksImdsLWVycm9yM2QiOjg0LCJnbC1oZWF0bWFwMmQiOjg4 LCJnbC1saW5lM2QiOjkxLCJnbC1tZXNoM2QiOjExMiwiZ2wtcGxvdDJkIjoxMTgsImdsLXBs b3QzZCI6MTIxLCJnbC1wb2ludGNsb3VkMmQiOjEyMywiZ2wtc2NhdHRlcjNkIjoxMjgsImds LXNlbGVjdC1ib3giOjEzMCwiZ2wtc3Bpa2VzMmQiOjEzOSwiZ2wtc3RyZWFtdHViZTNkIjox NDMsImdsLXN1cmZhY2UzZCI6MTQ1LG5kYXJyYXk6MjU5LCJuZGFycmF5LWxpbmVhci1pbnRl cnBvbGF0ZSI6MjUzfV0sNzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9y dHM9ZnVuY3Rpb24odCl7dmFyIGU9KHQ9dHx8e30pLmV5ZXx8WzAsMCwxXSxyPXQuY2VudGVy fHxbMCwwLDBdLHM9dC51cHx8WzAsMSwwXSxsPXQuZGlzdGFuY2VMaW1pdHN8fFswLDEvMF0s Yz10Lm1vZGV8fCJ0dXJudGFibGUiLHU9bigpLGY9aSgpLGg9YSgpO3JldHVybiB1LnNldERp c3RhbmNlTGltaXRzKGxbMF0sbFsxXSksdS5sb29rQXQoMCxlLHIscyksZi5zZXREaXN0YW5j ZUxpbWl0cyhsWzBdLGxbMV0pLGYubG9va0F0KDAsZSxyLHMpLGguc2V0RGlzdGFuY2VMaW1p dHMobFswXSxsWzFdKSxoLmxvb2tBdCgwLGUscixzKSxuZXcgbyh7dHVybnRhYmxlOnUsb3Ji aXQ6ZixtYXRyaXg6aH0sYyl9O3ZhciBuPXQoInR1cm50YWJsZS1jYW1lcmEtY29udHJvbGxl ciIpLGk9dCgib3JiaXQtY2FtZXJhLWNvbnRyb2xsZXIiKSxhPXQoIm1hdHJpeC1jYW1lcmEt Y29udHJvbGxlciIpO2Z1bmN0aW9uIG8odCxlKXt0aGlzLl9jb250cm9sbGVyTmFtZXM9T2Jq ZWN0LmtleXModCksdGhpcy5fY29udHJvbGxlckxpc3Q9dGhpcy5fY29udHJvbGxlck5hbWVz Lm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSksdGhpcy5fbW9kZT1lLHRoaXMuX2Fj dGl2ZT10W2VdLHRoaXMuX2FjdGl2ZXx8KHRoaXMuX21vZGU9InR1cm50YWJsZSIsdGhpcy5f YWN0aXZlPXQudHVybnRhYmxlKSx0aGlzLm1vZGVzPXRoaXMuX2NvbnRyb2xsZXJOYW1lcyx0 aGlzLmNvbXB1dGVkTWF0cml4PXRoaXMuX2FjdGl2ZS5jb21wdXRlZE1hdHJpeCx0aGlzLmNv bXB1dGVkRXllPXRoaXMuX2FjdGl2ZS5jb21wdXRlZEV5ZSx0aGlzLmNvbXB1dGVkVXA9dGhp cy5fYWN0aXZlLmNvbXB1dGVkVXAsdGhpcy5jb21wdXRlZENlbnRlcj10aGlzLl9hY3RpdmUu Y29tcHV0ZWRDZW50ZXIsdGhpcy5jb21wdXRlZFJhZGl1cz10aGlzLl9hY3RpdmUuY29tcHV0 ZWRSYWRpdXN9dmFyIHM9by5wcm90b3R5cGU7cy5mbHVzaD1mdW5jdGlvbih0KXtmb3IodmFy IGU9dGhpcy5fY29udHJvbGxlckxpc3Qscj0wO3I8ZS5sZW5ndGg7KytyKWVbcl0uZmx1c2go dCl9LHMuaWRsZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5fY29udHJvbGxlckxpc3Qs cj0wO3I8ZS5sZW5ndGg7KytyKWVbcl0uaWRsZSh0KX0scy5sb29rQXQ9ZnVuY3Rpb24odCxl LHIsbil7Zm9yKHZhciBpPXRoaXMuX2NvbnRyb2xsZXJMaXN0LGE9MDthPGkubGVuZ3RoOysr YSlpW2FdLmxvb2tBdCh0LGUscixuKX0scy5yb3RhdGU9ZnVuY3Rpb24odCxlLHIsbil7Zm9y KHZhciBpPXRoaXMuX2NvbnRyb2xsZXJMaXN0LGE9MDthPGkubGVuZ3RoOysrYSlpW2FdLnJv dGF0ZSh0LGUscixuKX0scy5wYW49ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBpPXRoaXMu X2NvbnRyb2xsZXJMaXN0LGE9MDthPGkubGVuZ3RoOysrYSlpW2FdLnBhbih0LGUscixuKX0s cy50cmFuc2xhdGU9ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBpPXRoaXMuX2NvbnRyb2xs ZXJMaXN0LGE9MDthPGkubGVuZ3RoOysrYSlpW2FdLnRyYW5zbGF0ZSh0LGUscixuKX0scy5z ZXRNYXRyaXg9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dGhpcy5fY29udHJvbGxlckxpc3Qs bj0wO248ci5sZW5ndGg7KytuKXJbbl0uc2V0TWF0cml4KHQsZSl9LHMuc2V0RGlzdGFuY2VM aW1pdHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dGhpcy5fY29udHJvbGxlckxpc3Qsbj0w O248ci5sZW5ndGg7KytuKXJbbl0uc2V0RGlzdGFuY2VMaW1pdHModCxlKX0scy5zZXREaXN0 YW5jZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10aGlzLl9jb250cm9sbGVyTGlzdCxuPTA7 bjxyLmxlbmd0aDsrK24pcltuXS5zZXREaXN0YW5jZSh0LGUpfSxzLnJlY2FsY01hdHJpeD1m dW5jdGlvbih0KXt0aGlzLl9hY3RpdmUucmVjYWxjTWF0cml4KHQpfSxzLmdldERpc3RhbmNl PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hY3RpdmUuZ2V0RGlzdGFuY2UodCl9LHMuZ2V0 RGlzdGFuY2VMaW1pdHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FjdGl2ZS5nZXREaXN0 YW5jZUxpbWl0cyh0KX0scy5sYXN0VD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hY3RpdmUu bGFzdFQoKX0scy5zZXRNb2RlPWZ1bmN0aW9uKHQpe2lmKHQhPT10aGlzLl9tb2RlKXt2YXIg ZT10aGlzLl9jb250cm9sbGVyTmFtZXMuaW5kZXhPZih0KTtpZighKGU8MCkpe3ZhciByPXRo aXMuX2FjdGl2ZSxuPXRoaXMuX2NvbnRyb2xsZXJMaXN0W2VdLGk9TWF0aC5tYXgoci5sYXN0 VCgpLG4ubGFzdFQoKSk7ci5yZWNhbGNNYXRyaXgoaSksbi5zZXRNYXRyaXgoaSxyLmNvbXB1 dGVkTWF0cml4KSx0aGlzLl9hY3RpdmU9bix0aGlzLl9tb2RlPXQsdGhpcy5jb21wdXRlZE1h dHJpeD10aGlzLl9hY3RpdmUuY29tcHV0ZWRNYXRyaXgsdGhpcy5jb21wdXRlZEV5ZT10aGlz Ll9hY3RpdmUuY29tcHV0ZWRFeWUsdGhpcy5jb21wdXRlZFVwPXRoaXMuX2FjdGl2ZS5jb21w dXRlZFVwLHRoaXMuY29tcHV0ZWRDZW50ZXI9dGhpcy5fYWN0aXZlLmNvbXB1dGVkQ2VudGVy LHRoaXMuY29tcHV0ZWRSYWRpdXM9dGhpcy5fYWN0aXZlLmNvbXB1dGVkUmFkaXVzfX19LHMu Z2V0TW9kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9tb2RlfX0seyJtYXRyaXgtY2FtZXJh LWNvbnRyb2xsZXIiOjI0NSwib3JiaXQtY2FtZXJhLWNvbnRyb2xsZXIiOjI2MywidHVybnRh YmxlLWNhbWVyYS1jb250cm9sbGVyIjozMDV9XSw4OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPSJ1bmRlZmluZWQiPT10eXBlb2YgV2Vha01hcD90KCJ3ZWFrLW1hcCIp OldlYWtNYXAsaT10KCJnbC1idWZmZXIiKSxhPXQoImdsLXZhbyIpLG89bmV3IG47ZS5leHBv cnRzPWZ1bmN0aW9uKHQpe3ZhciBlPW8uZ2V0KHQpLHI9ZSYmKGUuX3RyaWFuZ2xlQnVmZmVy LmhhbmRsZXx8ZS5fdHJpYW5nbGVCdWZmZXIuYnVmZmVyKTtpZighcnx8IXQuaXNCdWZmZXIo cikpe3ZhciBuPWkodCxuZXcgRmxvYXQzMkFycmF5KFstMSwtMSwtMSw0LDQsLTFdKSk7KGU9 YSh0LFt7YnVmZmVyOm4sdHlwZTp0LkZMT0FULHNpemU6Mn1dKSkuX3RyaWFuZ2xlQnVmZmVy PW4sby5zZXQodCxlKX1lLmJpbmQoKSx0LmRyYXdBcnJheXModC5UUklBTkdMRVMsMCwzKSxl LnVuYmluZCgpfX0seyJnbC1idWZmZXIiOjc4LCJnbC12YW8iOjE1MCwid2Vhay1tYXAiOjMx M31dLDk6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCJwYWQtbGVmdCIpO2UuZXhwb3J0cz1m dW5jdGlvbih0LGUscil7ZT0ibnVtYmVyIj09dHlwZW9mIGU/ZToxLHI9cnx8IjogIjt2YXIg aT10LnNwbGl0KC9ccj9cbi8pLGE9U3RyaW5nKGkubGVuZ3RoK2UtMSkubGVuZ3RoO3JldHVy biBpLm1hcCgoZnVuY3Rpb24odCxpKXt2YXIgbz1pK2Uscz1TdHJpbmcobykubGVuZ3RoO3Jl dHVybiBuKG8sYS1zKStyK3R9KSkuam9pbigiXG4iKX19LHsicGFkLWxlZnQiOjI2NH1dLDEw OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2 YXIgZT10Lmxlbmd0aDtpZigwPT09ZSlyZXR1cm5bXTtpZigxPT09ZSlyZXR1cm5bMF07Zm9y KHZhciByPXRbMF0ubGVuZ3RoLG49W3RbMF1dLGE9WzBdLG89MTtvPGU7KytvKWlmKG4ucHVz aCh0W29dKSxpKG4scikpe2lmKGEucHVzaChvKSxhLmxlbmd0aD09PXIrMSlyZXR1cm4gYX1l bHNlIG4ucG9wKCk7cmV0dXJuIGF9O3ZhciBuPXQoInJvYnVzdC1vcmllbnRhdGlvbiIpO2Z1 bmN0aW9uIGkodCxlKXtmb3IodmFyIHI9bmV3IEFycmF5KGUrMSksaT0wO2k8dC5sZW5ndGg7 KytpKXJbaV09dFtpXTtmb3IoaT0wO2k8PXQubGVuZ3RoOysraSl7Zm9yKHZhciBhPXQubGVu Z3RoO2E8PWU7KythKXtmb3IodmFyIG89bmV3IEFycmF5KGUpLHM9MDtzPGU7KytzKW9bc109 TWF0aC5wb3coYSsxLWkscyk7clthXT1vfWlmKG4uYXBwbHkodm9pZCAwLHIpKXJldHVybiEw fXJldHVybiExfX0seyJyb2J1c3Qtb3JpZW50YXRpb24iOjI4NH1dLDExOltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBuKGUp LmZpbHRlcigoZnVuY3Rpb24ocil7Zm9yKHZhciBuPW5ldyBBcnJheShyLmxlbmd0aCksYT0w O2E8ci5sZW5ndGg7KythKW5bYV09ZVtyW2FdXTtyZXR1cm4gaShuKSp0PDF9KSl9O3ZhciBu PXQoImRlbGF1bmF5LXRyaWFuZ3VsYXRlIiksaT10KCJjaXJjdW1yYWRpdXMiKX0se2NpcmN1 bXJhZGl1czo0OSwiZGVsYXVuYXktdHJpYW5ndWxhdGUiOjYzfV0sMTI6W2Z1bmN0aW9uKHQs ZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gaShuKHQsZSkpfTt2YXIgbj10 KCJhbHBoYS1jb21wbGV4IiksaT10KCJzaW1wbGljaWFsLWNvbXBsZXgtYm91bmRhcnkiKX0s eyJhbHBoYS1jb21wbGV4IjoxMSwic2ltcGxpY2lhbC1jb21wbGV4LWJvdW5kYXJ5IjoyOTB9 XSwxMzpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gYXRv Yih0KX19LHt9XSwxNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9 ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9ZS5sZW5ndGgsYT1uZXcgQXJyYXkocisxKSxvPTA7 bzxyOysrbyl7Zm9yKHZhciBzPW5ldyBBcnJheShyKzEpLGw9MDtsPD1yOysrbClzW2xdPXRb bF1bb107YVtvXT1zfWFbcl09bmV3IEFycmF5KHIrMSk7Zm9yKG89MDtvPD1yOysrbylhW3Jd W29dPTE7dmFyIGM9bmV3IEFycmF5KHIrMSk7Zm9yKG89MDtvPHI7KytvKWNbb109ZVtvXTtj W3JdPTE7dmFyIHU9bihhLGMpLGY9aSh1W3IrMV0pOzA9PT1mJiYoZj0xKTt2YXIgaD1uZXcg QXJyYXkocisxKTtmb3Iobz0wO288PXI7KytvKWhbb109aSh1W29dKS9mO3JldHVybiBofTt2 YXIgbj10KCJyb2J1c3QtbGluZWFyLXNvbHZlIik7ZnVuY3Rpb24gaSh0KXtmb3IodmFyIGU9 MCxyPTA7cjx0Lmxlbmd0aDsrK3IpZSs9dFtyXTtyZXR1cm4gZX19LHsicm9idXN0LWxpbmVh ci1zb2x2ZSI6MjgzfV0sMTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiLi9saWIvcmF0aW9uYWxpemUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4g bih0WzBdLm11bChlWzFdKS5hZGQoZVswXS5tdWwodFsxXSkpLHRbMV0ubXVsKGVbMV0pKX19 LHsiLi9saWIvcmF0aW9uYWxpemUiOjI1fV0sMTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbMF0ubXVsKGVbMV0pLmNt cChlWzBdLm11bCh0WzFdKSl9fSx7fV0sMTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7dmFyIG49dCgiLi9saWIvcmF0aW9uYWxpemUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxl KXtyZXR1cm4gbih0WzBdLm11bChlWzFdKSx0WzFdLm11bChlWzBdKSl9fSx7Ii4vbGliL3Jh dGlvbmFsaXplIjoyNX1dLDE4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBu PXQoIi4vaXMtcmF0IiksaT10KCIuL2xpYi9pcy1ibiIpLGE9dCgiLi9saWIvbnVtLXRvLWJu Iiksbz10KCIuL2xpYi9zdHItdG8tYm4iKSxzPXQoIi4vbGliL3JhdGlvbmFsaXplIiksbD10 KCIuL2RpdiIpO2UuZXhwb3J0cz1mdW5jdGlvbiB0KGUscil7aWYobihlKSlyZXR1cm4gcj9s KGUsdChyKSk6W2VbMF0uY2xvbmUoKSxlWzFdLmNsb25lKCldO3ZhciBjLHUsZj0wO2lmKGko ZSkpYz1lLmNsb25lKCk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGUpYz1vKGUpO2Vsc2V7 aWYoMD09PWUpcmV0dXJuW2EoMCksYSgxKV07aWYoZT09PU1hdGguZmxvb3IoZSkpYz1hKGUp O2Vsc2V7Zm9yKDtlIT09TWF0aC5mbG9vcihlKTspZSo9TWF0aC5wb3coMiwyNTYpLGYtPTI1 NjtjPWEoZSl9fWlmKG4ocikpYy5tdWwoclsxXSksdT1yWzBdLmNsb25lKCk7ZWxzZSBpZihp KHIpKXU9ci5jbG9uZSgpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiByKXU9byhyKTtlbHNl IGlmKHIpaWYocj09PU1hdGguZmxvb3IocikpdT1hKHIpO2Vsc2V7Zm9yKDtyIT09TWF0aC5m bG9vcihyKTspcio9TWF0aC5wb3coMiwyNTYpLGYrPTI1Njt1PWEocil9ZWxzZSB1PWEoMSk7 Zj4wP2M9Yy51c2hsbihmKTpmPDAmJih1PXUudXNobG4oLWYpKTtyZXR1cm4gcyhjLHUpfX0s eyIuL2RpdiI6MTcsIi4vaXMtcmF0IjoxOSwiLi9saWIvaXMtYm4iOjIzLCIuL2xpYi9udW0t dG8tYm4iOjI0LCIuL2xpYi9yYXRpb25hbGl6ZSI6MjUsIi4vbGliL3N0ci10by1ibiI6MjZ9 XSwxOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2xpYi9pcy1i biIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmMj09 PXQubGVuZ3RoJiZuKHRbMF0pJiZuKHRbMV0pfX0seyIuL2xpYi9pcy1ibiI6MjN9XSwyMDpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJibi5qcyIpO2UuZXhwb3J0 cz1mdW5jdGlvbih0KXtyZXR1cm4gdC5jbXAobmV3IG4oMCkpfX0seyJibi5qcyI6MzN9XSwy MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2JuLXNpZ24iKTtl LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGgscj10LndvcmRzLGk9MDtpZigx PT09ZSlpPXJbMF07ZWxzZSBpZigyPT09ZSlpPXJbMF0rNjcxMDg4NjQqclsxXTtlbHNlIGZv cih2YXIgYT0wO2E8ZTthKyspe3ZhciBvPXJbYV07aSs9bypNYXRoLnBvdyg2NzEwODg2NCxh KX1yZXR1cm4gbih0KSppfX0seyIuL2JuLXNpZ24iOjIwfV0sMjI6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgiZG91YmxlLWJpdHMiKSxpPXQoImJpdC10d2lkZGxl IikuY291bnRUcmFpbGluZ1plcm9zO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1pKG4u bG8odCkpO2lmKGU8MzIpcmV0dXJuIGU7dmFyIHI9aShuLmhpKHQpKTtpZihyPjIwKXJldHVy biA1MjtyZXR1cm4gciszMn19LHsiYml0LXR3aWRkbGUiOjMyLCJkb3VibGUtYml0cyI6NjR9 XSwyMzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt0KCJibi5qcyIpO2UuZXhwb3J0 cz1mdW5jdGlvbih0KXtyZXR1cm4gdCYmIm9iamVjdCI9PXR5cGVvZiB0JiZCb29sZWFuKHQu d29yZHMpfX0seyJibi5qcyI6MzN9XSwyNDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbj10KCJibi5qcyIpLGk9dCgiZG91YmxlLWJpdHMiKTtlLmV4cG9ydHM9ZnVuY3Rp b24odCl7dmFyIGU9aS5leHBvbmVudCh0KTtyZXR1cm4gZTw1Mj9uZXcgbih0KTpuZXcgbih0 Kk1hdGgucG93KDIsNTItZSkpLnVzaGxuKGUtNTIpfX0seyJibi5qcyI6MzMsImRvdWJsZS1i aXRzIjo2NH1dLDI1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4v bnVtLXRvLWJuIiksaT10KCIuL2JuLXNpZ24iKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2 YXIgcj1pKHQpLGE9aShlKTtpZigwPT09cilyZXR1cm5bbigwKSxuKDEpXTtpZigwPT09YSly ZXR1cm5bbigwKSxuKDApXTthPDAmJih0PXQubmVnKCksZT1lLm5lZygpKTt2YXIgbz10Lmdj ZChlKTtpZihvLmNtcG4oMSkpcmV0dXJuW3QuZGl2KG8pLGUuZGl2KG8pXTtyZXR1cm5bdCxl XX19LHsiLi9ibi1zaWduIjoyMCwiLi9udW0tdG8tYm4iOjI0fV0sMjY6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiYm4uanMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24o dCl7cmV0dXJuIG5ldyBuKHQpfX0seyJibi5qcyI6MzN9XSwyNzpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2xpYi9yYXRpb25hbGl6ZSIpO2UuZXhwb3J0cz1m dW5jdGlvbih0LGUpe3JldHVybiBuKHRbMF0ubXVsKGVbMF0pLHRbMV0ubXVsKGVbMV0pKX19 LHsiLi9saWIvcmF0aW9uYWxpemUiOjI1fV0sMjg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7dmFyIG49dCgiLi9saWIvYm4tc2lnbiIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXty ZXR1cm4gbih0WzBdKSpuKHRbMV0pfX0seyIuL2xpYi9ibi1zaWduIjoyMH1dLDI5OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vbGliL3JhdGlvbmFsaXplIik7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4odFswXS5tdWwoZVsxXSkuc3ViKHRb MV0ubXVsKGVbMF0pKSx0WzFdLm11bChlWzFdKSl9fSx7Ii4vbGliL3JhdGlvbmFsaXplIjoy NX1dLDMwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vbGliL2Ju LXRvLW51bSIpLGk9dCgiLi9saWIvY3R6Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBl PXRbMF0scj10WzFdO2lmKDA9PT1lLmNtcG4oMCkpcmV0dXJuIDA7dmFyIGE9ZS5hYnMoKS5k aXZtb2Qoci5hYnMoKSksbz1hLmRpdixzPW4obyksbD1hLm1vZCxjPWUubmVnYXRpdmUhPT1y Lm5lZ2F0aXZlPy0xOjE7aWYoMD09PWwuY21wbigwKSlyZXR1cm4gYypzO2lmKHMpe3ZhciB1 PWkocykrNCxmPW4obC51c2hsbih1KS5kaXZSb3VuZChyKSk7cmV0dXJuIGMqKHMrZipNYXRo LnBvdygyLC11KSl9dmFyIGg9ci5iaXRMZW5ndGgoKS1sLmJpdExlbmd0aCgpKzUzO2Y9bihs LnVzaGxuKGgpLmRpdlJvdW5kKHIpKTtyZXR1cm4gaDwxMDIzP2MqZipNYXRoLnBvdygyLC1o KTooZio9TWF0aC5wb3coMiwtMTAyMyksYypmKk1hdGgucG93KDIsMTAyMy1oKSl9fSx7Ii4v bGliL2JuLXRvLW51bSI6MjEsIi4vbGliL2N0eiI6MjJ9XSwzMTpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSxyLG4saSl7Zm9yKHZhciBhPWkrMTtuPD1p Oyl7dmFyIG89bitpPj4+MSxzPXRbb107KHZvaWQgMCE9PXI/cihzLGUpOnMtZSk+PTA/KGE9 byxpPW8tMSk6bj1vKzF9cmV0dXJuIGF9ZnVuY3Rpb24gaSh0LGUscixuLGkpe2Zvcih2YXIg YT1pKzE7bjw9aTspe3ZhciBvPW4raT4+PjEscz10W29dOyh2b2lkIDAhPT1yP3IocyxlKTpz LWUpPjA/KGE9byxpPW8tMSk6bj1vKzF9cmV0dXJuIGF9ZnVuY3Rpb24gYSh0LGUscixuLGkp e2Zvcih2YXIgYT1uLTE7bjw9aTspe3ZhciBvPW4raT4+PjEscz10W29dOyh2b2lkIDAhPT1y P3IocyxlKTpzLWUpPDA/KGE9byxuPW8rMSk6aT1vLTF9cmV0dXJuIGF9ZnVuY3Rpb24gbyh0 LGUscixuLGkpe2Zvcih2YXIgYT1uLTE7bjw9aTspe3ZhciBvPW4raT4+PjEscz10W29dOyh2 b2lkIDAhPT1yP3IocyxlKTpzLWUpPD0wPyhhPW8sbj1vKzEpOmk9by0xfXJldHVybiBhfWZ1 bmN0aW9uIHModCxlLHIsbixpKXtmb3IoO248PWk7KXt2YXIgYT1uK2k+Pj4xLG89dFthXSxz PXZvaWQgMCE9PXI/cihvLGUpOm8tZTtpZigwPT09cylyZXR1cm4gYTtzPD0wP249YSsxOmk9 YS0xfXJldHVybi0xfWZ1bmN0aW9uIGwodCxlLHIsbixpLGEpe3JldHVybiJmdW5jdGlvbiI9 PXR5cGVvZiByP2EodCxlLHIsdm9pZCAwPT09bj8wOjB8bix2b2lkIDA9PT1pP3QubGVuZ3Ro LTE6MHxpKTphKHQsZSx2b2lkIDAsdm9pZCAwPT09cj8wOjB8cix2b2lkIDA9PT1uP3QubGVu Z3RoLTE6MHxuKX1lLmV4cG9ydHM9e2dlOmZ1bmN0aW9uKHQsZSxyLGksYSl7cmV0dXJuIGwo dCxlLHIsaSxhLG4pfSxndDpmdW5jdGlvbih0LGUscixuLGEpe3JldHVybiBsKHQsZSxyLG4s YSxpKX0sbHQ6ZnVuY3Rpb24odCxlLHIsbixpKXtyZXR1cm4gbCh0LGUscixuLGksYSl9LGxl OmZ1bmN0aW9uKHQsZSxyLG4saSl7cmV0dXJuIGwodCxlLHIsbixpLG8pfSxlcTpmdW5jdGlv bih0LGUscixuLGkpe3JldHVybiBsKHQsZSxyLG4saSxzKX19fSx7fV0sMzI6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXt2YXIgZT0zMjtyZXR1cm4odCY9 LXQpJiZlLS0sNjU1MzUmdCYmKGUtPTE2KSwxNjcxMTkzNSZ0JiYoZS09OCksMjUyNjQ1MTM1 JnQmJihlLT00KSw4NTg5OTM0NTkmdCYmKGUtPTIpLDE0MzE2NTU3NjUmdCYmKGUtPTEpLGV9 ci5JTlRfQklUUz0zMixyLklOVF9NQVg9MjE0NzQ4MzY0NyxyLklOVF9NSU49LTE8PDMxLHIu c2lnbj1mdW5jdGlvbih0KXtyZXR1cm4odD4wKS0odDwwKX0sci5hYnM9ZnVuY3Rpb24odCl7 dmFyIGU9dD4+MzE7cmV0dXJuKHReZSktZX0sci5taW49ZnVuY3Rpb24odCxlKXtyZXR1cm4g ZV4odF5lKSYtKHQ8ZSl9LHIubWF4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHReKHReZSkmLSh0 PGUpfSxyLmlzUG93Mj1mdW5jdGlvbih0KXtyZXR1cm4hKHQmdC0xfHwhdCl9LHIubG9nMj1m dW5jdGlvbih0KXt2YXIgZSxyO3JldHVybiBlPSh0PjY1NTM1KTw8NCxlfD1yPSgodD4+Pj1l KT4yNTUpPDwzLGV8PXI9KCh0Pj4+PXIpPjE1KTw8MiwoZXw9cj0oKHQ+Pj49cik+Myk8PDEp fCh0Pj4+PXIpPj4xfSxyLmxvZzEwPWZ1bmN0aW9uKHQpe3JldHVybiB0Pj0xZTk/OTp0Pj0x ZTg/ODp0Pj0xZTc/Nzp0Pj0xZTY/Njp0Pj0xZTU/NTp0Pj0xZTQ/NDp0Pj0xZTM/Mzp0Pj0x MDA/Mjp0Pj0xMD8xOjB9LHIucG9wQ291bnQ9ZnVuY3Rpb24odCl7cmV0dXJuIDE2ODQzMDA5 KigodD0oODU4OTkzNDU5Jih0LT10Pj4+MSYxNDMxNjU1NzY1KSkrKHQ+Pj4yJjg1ODk5MzQ1 OSkpKyh0Pj4+NCkmMjUyNjQ1MTM1KT4+PjI0fSxyLmNvdW50VHJhaWxpbmdaZXJvcz1uLHIu bmV4dFBvdzI9ZnVuY3Rpb24odCl7cmV0dXJuIHQrPTA9PT10LC0tdCx0fD10Pj4+MSx0fD10 Pj4+Mix0fD10Pj4+NCx0fD10Pj4+OCwodHw9dD4+PjE2KSsxfSxyLnByZXZQb3cyPWZ1bmN0 aW9uKHQpe3JldHVybiB0fD10Pj4+MSx0fD10Pj4+Mix0fD10Pj4+NCx0fD10Pj4+OCwodHw9 dD4+PjE2KS0odD4+PjEpfSxyLnBhcml0eT1mdW5jdGlvbih0KXtyZXR1cm4gdF49dD4+PjE2 LHRePXQ+Pj44LHRePXQ+Pj40LDI3MDMwPj4+KHQmPTE1KSYxfTt2YXIgaT1uZXcgQXJyYXko MjU2KTshZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTwyNTY7KytlKXt2YXIgcj1lLG49ZSxp PTc7Zm9yKHI+Pj49MTtyO3I+Pj49MSluPDw9MSxufD0xJnIsLS1pO3RbZV09bjw8aSYyNTV9 fShpKSxyLnJldmVyc2U9ZnVuY3Rpb24odCl7cmV0dXJuIGlbMjU1JnRdPDwyNHxpW3Q+Pj44 JjI1NV08PDE2fGlbdD4+PjE2JjI1NV08PDh8aVt0Pj4+MjQmMjU1XX0sci5pbnRlcmxlYXZl Mj1mdW5jdGlvbih0LGUpe3JldHVybih0PTE0MzE2NTU3NjUmKCh0PTg1ODk5MzQ1OSYoKHQ9 MjUyNjQ1MTM1JigodD0xNjcxMTkzNSYoKHQmPTY1NTM1KXx0PDw4KSl8dDw8NCkpfHQ8PDIp KXx0PDwxKSl8KGU9MTQzMTY1NTc2NSYoKGU9ODU4OTkzNDU5JigoZT0yNTI2NDUxMzUmKChl PTE2NzExOTM1JigoZSY9NjU1MzUpfGU8PDgpKXxlPDw0KSl8ZTw8MikpfGU8PDEpKTw8MX0s ci5kZWludGVybGVhdmUyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuKHQ9NjU1MzUmKCh0PTE2NzEx OTM1JigodD0yNTI2NDUxMzUmKCh0PTg1ODk5MzQ1OSYoKHQ9dD4+PmUmMTQzMTY1NTc2NSl8 dD4+PjEpKXx0Pj4+MikpfHQ+Pj40KSl8dD4+PjE2KSk8PDE2Pj4xNn0sci5pbnRlcmxlYXZl Mz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9MTIyNzEzMzUxMyYoKHQ9MzI3MjM1NjAzNSYo KHQ9MjUxNzE5Njk1JigodD00Mjc4MTkwMzM1JigodCY9MTAyMyl8dDw8MTYpKXx0PDw4KSl8 dDw8NCkpfHQ8PDIpLCh0fD0oZT0xMjI3MTMzNTEzJigoZT0zMjcyMzU2MDM1JigoZT0yNTE3 MTk2OTUmKChlPTQyNzgxOTAzMzUmKChlJj0xMDIzKXxlPDwxNikpfGU8PDgpKXxlPDw0KSl8 ZTw8MikpPDwxKXwocj0xMjI3MTMzNTEzJigocj0zMjcyMzU2MDM1Jigocj0yNTE3MTk2OTUm KChyPTQyNzgxOTAzMzUmKChyJj0xMDIzKXxyPDwxNikpfHI8PDgpKXxyPDw0KSl8cjw8Mikp PDwyfSxyLmRlaW50ZXJsZWF2ZTM9ZnVuY3Rpb24odCxlKXtyZXR1cm4odD0xMDIzJigodD00 Mjc4MTkwMzM1JigodD0yNTE3MTk2OTUmKCh0PTMyNzIzNTYwMzUmKCh0PXQ+Pj5lJjEyMjcx MzM1MTMpfHQ+Pj4yKSl8dD4+PjQpKXx0Pj4+OCkpfHQ+Pj4xNikpPDwyMj4+MjJ9LHIubmV4 dENvbWJpbmF0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPXR8dC0xO3JldHVybiBlKzF8KH5lJi1+ ZSktMT4+Pm4odCkrMX19LHt9XSwzMzpbZnVuY3Rpb24odCxlLHIpeyFmdW5jdGlvbihlLHIp eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsZSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKGV8 fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rpb24gaSh0LGUpe3Quc3VwZXJfPWU7dmFyIHI9 ZnVuY3Rpb24oKXt9O3IucHJvdG90eXBlPWUucHJvdG90eXBlLHQucHJvdG90eXBlPW5ldyBy LHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gYSh0LGUscil7aWYoYS5pc0JO KHQpKXJldHVybiB0O3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhpcy5sZW5n dGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT10JiYoImxlIiE9PWUmJiJiZSIhPT1lfHwocj1l LGU9MTApLHRoaXMuX2luaXQodHx8MCxlfHwxMCxyfHwiYmUiKSl9dmFyIG87Im9iamVjdCI9 PXR5cGVvZiBlP2UuZXhwb3J0cz1hOnIuQk49YSxhLkJOPWEsYS53b3JkU2l6ZT0yNjt0cnl7 bz0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmdm9pZCAwIT09d2luZG93LkJ1ZmZlcj93 aW5kb3cuQnVmZmVyOnQoImJ1ZmZlciIpLkJ1ZmZlcn1jYXRjaCh0KXt9ZnVuY3Rpb24gcyh0 LGUpe3ZhciByPXQuY2hhckNvZGVBdChlKTtyZXR1cm4gcj49NjUmJnI8PTcwP3ItNTU6cj49 OTcmJnI8PTEwMj9yLTg3OnItNDgmMTV9ZnVuY3Rpb24gbCh0LGUscil7dmFyIG49cyh0LHIp O3JldHVybiByLTE+PWUmJihufD1zKHQsci0xKTw8NCksbn1mdW5jdGlvbiBjKHQsZSxyLG4p e2Zvcih2YXIgaT0wLGE9TWF0aC5taW4odC5sZW5ndGgsciksbz1lO288YTtvKyspe3ZhciBz PXQuY2hhckNvZGVBdChvKS00ODtpKj1uLGkrPXM+PTQ5P3MtNDkrMTA6cz49MTc/cy0xNysx MDpzfXJldHVybiBpfWEuaXNCTj1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGF8 fG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQmJnQuY29uc3RydWN0b3Iud29yZFNpemU9 PT1hLndvcmRTaXplJiZBcnJheS5pc0FycmF5KHQud29yZHMpfSxhLm1heD1mdW5jdGlvbih0 LGUpe3JldHVybiB0LmNtcChlKT4wP3Q6ZX0sYS5taW49ZnVuY3Rpb24odCxlKXtyZXR1cm4g dC5jbXAoZSk8MD90OmV9LGEucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKHQsZSxyKXtpZigi bnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHRoaXMuX2luaXROdW1iZXIodCxlLHIpO2lmKCJv YmplY3QiPT10eXBlb2YgdClyZXR1cm4gdGhpcy5faW5pdEFycmF5KHQsZSxyKTsiaGV4Ij09 PWUmJihlPTE2KSxuKGU9PT0oMHxlKSYmZT49MiYmZTw9MzYpO3ZhciBpPTA7Ii0iPT09KHQ9 dC50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJihpKyssdGhpcy5uZWdhdGl2 ZT0xKSxpPHQubGVuZ3RoJiYoMTY9PT1lP3RoaXMuX3BhcnNlSGV4KHQsaSxyKToodGhpcy5f cGFyc2VCYXNlKHQsZSxpKSwibGUiPT09ciYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJh eSgpLGUscikpKX0sYS5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24odCxlLHIpe3Q8 MCYmKHRoaXMubmVnYXRpdmU9MSx0PS10KSx0PDY3MTA4ODY0Pyh0aGlzLndvcmRzPVs2NzEw ODg2MyZ0XSx0aGlzLmxlbmd0aD0xKTp0PDQ1MDM1OTk2MjczNzA0OTY/KHRoaXMud29yZHM9 WzY3MTA4ODYzJnQsdC82NzEwODg2NCY2NzEwODg2M10sdGhpcy5sZW5ndGg9Mik6KG4odDw5 MDA3MTk5MjU0NzQwOTkyKSx0aGlzLndvcmRzPVs2NzEwODg2MyZ0LHQvNjcxMDg4NjQmNjcx MDg4NjMsMV0sdGhpcy5sZW5ndGg9MyksImxlIj09PXImJnRoaXMuX2luaXRBcnJheSh0aGlz LnRvQXJyYXkoKSxlLHIpfSxhLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKHQsZSxy KXtpZihuKCJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGgpLHQubGVuZ3RoPD0wKXJldHVybiB0 aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWls KHQubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFy IGk9MDtpPHRoaXMubGVuZ3RoO2krKyl0aGlzLndvcmRzW2ldPTA7dmFyIGEsbyxzPTA7aWYo ImJlIj09PXIpZm9yKGk9dC5sZW5ndGgtMSxhPTA7aT49MDtpLT0zKW89dFtpXXx0W2ktMV08 PDh8dFtpLTJdPDwxNix0aGlzLndvcmRzW2FdfD1vPDxzJjY3MTA4ODYzLHRoaXMud29yZHNb YSsxXT1vPj4+MjYtcyY2NzEwODg2Mywocys9MjQpPj0yNiYmKHMtPTI2LGErKyk7ZWxzZSBp ZigibGUiPT09cilmb3IoaT0wLGE9MDtpPHQubGVuZ3RoO2krPTMpbz10W2ldfHRbaSsxXTw8 OHx0W2krMl08PDE2LHRoaXMud29yZHNbYV18PW88PHMmNjcxMDg4NjMsdGhpcy53b3Jkc1th KzFdPW8+Pj4yNi1zJjY3MTA4ODYzLChzKz0yNCk+PTI2JiYocy09MjYsYSsrKTtyZXR1cm4g dGhpcy5zdHJpcCgpfSxhLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24odCxlLHIpe3Ro aXMubGVuZ3RoPU1hdGguY2VpbCgodC5sZW5ndGgtZSkvNiksdGhpcy53b3Jkcz1uZXcgQXJy YXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgbj0wO248dGhpcy5sZW5ndGg7bisrKXRoaXMud29y ZHNbbl09MDt2YXIgaSxhPTAsbz0wO2lmKCJiZSI9PT1yKWZvcihuPXQubGVuZ3RoLTE7bj49 ZTtuLT0yKWk9bCh0LGUsbik8PGEsdGhpcy53b3Jkc1tvXXw9NjcxMDg4NjMmaSxhPj0xOD8o YS09MTgsbys9MSx0aGlzLndvcmRzW29dfD1pPj4+MjYpOmErPTg7ZWxzZSBmb3Iobj0odC5s ZW5ndGgtZSklMj09MD9lKzE6ZTtuPHQubGVuZ3RoO24rPTIpaT1sKHQsZSxuKTw8YSx0aGlz LndvcmRzW29dfD02NzEwODg2MyZpLGE+PTE4PyhhLT0xOCxvKz0xLHRoaXMud29yZHNbb118 PWk+Pj4yNik6YSs9ODt0aGlzLnN0cmlwKCl9LGEucHJvdG90eXBlLl9wYXJzZUJhc2U9ZnVu Y3Rpb24odCxlLHIpe3RoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTE7Zm9yKHZhciBuPTAs aT0xO2k8PTY3MTA4ODYzO2kqPWUpbisrO24tLSxpPWkvZXwwO2Zvcih2YXIgYT10Lmxlbmd0 aC1yLG89YSVuLHM9TWF0aC5taW4oYSxhLW8pK3IsbD0wLHU9cjt1PHM7dSs9bilsPWModCx1 LHUrbixlKSx0aGlzLmltdWxuKGkpLHRoaXMud29yZHNbMF0rbDw2NzEwODg2ND90aGlzLndv cmRzWzBdKz1sOnRoaXMuX2lhZGRuKGwpO2lmKDAhPT1vKXt2YXIgZj0xO2ZvcihsPWModCx1 LHQubGVuZ3RoLGUpLHU9MDt1PG87dSsrKWYqPWU7dGhpcy5pbXVsbihmKSx0aGlzLndvcmRz WzBdK2w8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9bDp0aGlzLl9pYWRkbihsKX10aGlzLnN0 cmlwKCl9LGEucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24odCl7dC53b3Jkcz1uZXcgQXJyYXko dGhpcy5sZW5ndGgpO2Zvcih2YXIgZT0wO2U8dGhpcy5sZW5ndGg7ZSsrKXQud29yZHNbZV09 dGhpcy53b3Jkc1tlXTt0Lmxlbmd0aD10aGlzLmxlbmd0aCx0Lm5lZ2F0aXZlPXRoaXMubmVn YXRpdmUsdC5yZWQ9dGhpcy5yZWR9LGEucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFy IHQ9bmV3IGEobnVsbCk7cmV0dXJuIHRoaXMuY29weSh0KSx0fSxhLnByb3RvdHlwZS5fZXhw YW5kPWZ1bmN0aW9uKHQpe2Zvcig7dGhpcy5sZW5ndGg8dDspdGhpcy53b3Jkc1t0aGlzLmxl bmd0aCsrXT0wO3JldHVybiB0aGlzfSxhLnByb3RvdHlwZS5zdHJpcD1mdW5jdGlvbigpe2Zv cig7dGhpcy5sZW5ndGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRoaXMu bGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LGEucHJvdG90eXBlLl9ub3JtU2ln bj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBd JiYodGhpcy5uZWdhdGl2ZT0wKSx0aGlzfSxhLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9u KCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2 KSsiPiJ9O3ZhciB1PVsiIiwiMCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIiwiMDAwMDAw IiwiMDAwMDAwMCIsIjAwMDAwMDAwIiwiMDAwMDAwMDAwIiwiMDAwMDAwMDAwMCIsIjAwMDAw MDAwMDAwIiwiMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAw IiwiMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAw MDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAw MDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAw MDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCJdLGY9WzAsMCwyNSwxNiwx MiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUs NSw1LDUsNSw1LDUsNV0saD1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4 MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwz NTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0 MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5 NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5 MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtmdW5j dGlvbiBwKHQsZSxyKXtyLm5lZ2F0aXZlPWUubmVnYXRpdmVedC5uZWdhdGl2ZTt2YXIgbj10 Lmxlbmd0aCtlLmxlbmd0aHwwO3IubGVuZ3RoPW4sbj1uLTF8MDt2YXIgaT0wfHQud29yZHNb MF0sYT0wfGUud29yZHNbMF0sbz1pKmEscz02NzEwODg2MyZvLGw9by82NzEwODg2NHwwO3Iu d29yZHNbMF09cztmb3IodmFyIGM9MTtjPG47YysrKXtmb3IodmFyIHU9bD4+PjI2LGY9Njcx MDg4NjMmbCxoPU1hdGgubWluKGMsZS5sZW5ndGgtMSkscD1NYXRoLm1heCgwLGMtdC5sZW5n dGgrMSk7cDw9aDtwKyspe3ZhciBkPWMtcHwwO3UrPShvPShpPTB8dC53b3Jkc1tkXSkqKGE9 MHxlLndvcmRzW3BdKStmKS82NzEwODg2NHwwLGY9NjcxMDg4NjMmb31yLndvcmRzW2NdPTB8 ZixsPTB8dX1yZXR1cm4gMCE9PWw/ci53b3Jkc1tjXT0wfGw6ci5sZW5ndGgtLSxyLnN0cmlw KCl9YS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24odCxlKXt2YXIgcjtpZihlPTB8ZXx8 MSwxNj09PSh0PXR8fDEwKXx8ImhleCI9PT10KXtyPSIiO2Zvcih2YXIgaT0wLGE9MCxvPTA7 bzx0aGlzLmxlbmd0aDtvKyspe3ZhciBzPXRoaXMud29yZHNbb10sbD0oMTY3NzcyMTUmKHM8 PGl8YSkpLnRvU3RyaW5nKDE2KTtyPTAhPT0oYT1zPj4+MjQtaSYxNjc3NzIxNSl8fG8hPT10 aGlzLmxlbmd0aC0xP3VbNi1sLmxlbmd0aF0rbCtyOmwrciwoaSs9Mik+PTI2JiYoaS09MjYs by0tKX1mb3IoMCE9PWEmJihyPWEudG9TdHJpbmcoMTYpK3IpO3IubGVuZ3RoJWUhPTA7KXI9 IjAiK3I7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYocj0iLSIrcikscn1pZih0PT09KDB8 dCkmJnQ+PTImJnQ8PTM2KXt2YXIgYz1mW3RdLHA9aFt0XTtyPSIiO3ZhciBkPXRoaXMuY2xv bmUoKTtmb3IoZC5uZWdhdGl2ZT0wOyFkLmlzWmVybygpOyl7dmFyIG09ZC5tb2RuKHApLnRv U3RyaW5nKHQpO3I9KGQ9ZC5pZGl2bihwKSkuaXNaZXJvKCk/bStyOnVbYy1tLmxlbmd0aF0r bStyfWZvcih0aGlzLmlzWmVybygpJiYocj0iMCIrcik7ci5sZW5ndGglZSE9MDspcj0iMCIr cjtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihyPSItIityKSxyfW4oITEsIkJhc2Ugc2hv dWxkIGJlIGJldHdlZW4gMiBhbmQgMzYiKX0sYS5wcm90b3R5cGUudG9OdW1iZXI9ZnVuY3Rp b24oKXt2YXIgdD10aGlzLndvcmRzWzBdO3JldHVybiAyPT09dGhpcy5sZW5ndGg/dCs9Njcx MDg4NjQqdGhpcy53b3Jkc1sxXTozPT09dGhpcy5sZW5ndGgmJjE9PT10aGlzLndvcmRzWzJd P3QrPTQ1MDM1OTk2MjczNzA0OTYrNjcxMDg4NjQqdGhpcy53b3Jkc1sxXTp0aGlzLmxlbmd0 aD4yJiZuKCExLCJOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHMi KSwwIT09dGhpcy5uZWdhdGl2ZT8tdDp0fSxhLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24o KXtyZXR1cm4gdGhpcy50b1N0cmluZygxNil9LGEucHJvdG90eXBlLnRvQnVmZmVyPWZ1bmN0 aW9uKHQsZSl7cmV0dXJuIG4odm9pZCAwIT09byksdGhpcy50b0FycmF5TGlrZShvLHQsZSl9 LGEucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy50b0FycmF5 TGlrZShBcnJheSx0LGUpfSxhLnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbih0LGUs cil7dmFyIGk9dGhpcy5ieXRlTGVuZ3RoKCksYT1yfHxNYXRoLm1heCgxLGkpO24oaTw9YSwi Ynl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpLG4oYT4wLCJSZXF1ZXN0 ZWQgYXJyYXkgbGVuZ3RoIDw9IDAiKSx0aGlzLnN0cmlwKCk7dmFyIG8scyxsPSJsZSI9PT1l LGM9bmV3IHQoYSksdT10aGlzLmNsb25lKCk7aWYobCl7Zm9yKHM9MDshdS5pc1plcm8oKTtz Kyspbz11LmFuZGxuKDI1NSksdS5pdXNocm4oOCksY1tzXT1vO2Zvcig7czxhO3MrKyljW3Nd PTB9ZWxzZXtmb3Iocz0wO3M8YS1pO3MrKyljW3NdPTA7Zm9yKHM9MDshdS5pc1plcm8oKTtz Kyspbz11LmFuZGxuKDI1NSksdS5pdXNocm4oOCksY1thLXMtMV09b31yZXR1cm4gY30sTWF0 aC5jbHozMj9hLnByb3RvdHlwZS5fY291bnRCaXRzPWZ1bmN0aW9uKHQpe3JldHVybiAzMi1N YXRoLmNsejMyKHQpfTphLnByb3RvdHlwZS5fY291bnRCaXRzPWZ1bmN0aW9uKHQpe3ZhciBl PXQscj0wO3JldHVybiBlPj00MDk2JiYocis9MTMsZT4+Pj0xMyksZT49NjQmJihyKz03LGU+ Pj49NyksZT49OCYmKHIrPTQsZT4+Pj00KSxlPj0yJiYocis9MixlPj4+PTIpLHIrZX0sYS5w cm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKHQpe2lmKDA9PT10KXJldHVybiAyNjt2YXIg ZT10LHI9MDtyZXR1cm4gMD09KDgxOTEmZSkmJihyKz0xMyxlPj4+PTEzKSwwPT0oMTI3JmUp JiYocis9NyxlPj4+PTcpLDA9PSgxNSZlKSYmKHIrPTQsZT4+Pj00KSwwPT0oMyZlKSYmKHIr PTIsZT4+Pj0yKSwwPT0oMSZlKSYmcisrLHJ9LGEucHJvdG90eXBlLmJpdExlbmd0aD1mdW5j dGlvbigpe3ZhciB0PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0sZT10aGlzLl9jb3VudEJp dHModCk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKStlfSxhLnByb3RvdHlwZS56ZXJvQml0 cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciB0PTAsZT0w O2U8dGhpcy5sZW5ndGg7ZSsrKXt2YXIgcj10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW2Vd KTtpZih0Kz1yLDI2IT09cilicmVha31yZXR1cm4gdH0sYS5wcm90b3R5cGUuYnl0ZUxlbmd0 aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKS84KX0sYS5w cm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKHQpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90 aGlzLmFicygpLmlub3RuKHQpLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sYS5wcm90b3R5cGUu ZnJvbVR3b3M9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudGVzdG4odC0xKT90aGlzLm5vdG4o dCkuaWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sYS5wcm90b3R5cGUuaXNOZWc9ZnVu Y3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LGEucHJvdG90eXBlLm5lZz1mdW5j dGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSxhLnByb3RvdHlwZS5pbmVnPWZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlz fSxhLnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKHQpe2Zvcig7dGhpcy5sZW5ndGg8dC5sZW5n dGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3IodmFyIGU9MDtlPHQubGVuZ3Ro O2UrKyl0aGlzLndvcmRzW2VdPXRoaXMud29yZHNbZV18dC53b3Jkc1tlXTtyZXR1cm4gdGhp cy5zdHJpcCgpfSxhLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24odCl7cmV0dXJuIG4oMD09KHRo aXMubmVnYXRpdmV8dC5uZWdhdGl2ZSkpLHRoaXMuaXVvcih0KX0sYS5wcm90b3R5cGUub3I9 ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGVuZ3RoPnQubGVuZ3RoP3RoaXMuY2xvbmUoKS5p b3IodCk6dC5jbG9uZSgpLmlvcih0aGlzKX0sYS5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKHQp e3JldHVybiB0aGlzLmxlbmd0aD50Lmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcih0KTp0LmNs b25lKCkuaXVvcih0aGlzKX0sYS5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24odCl7dmFyIGU7 ZT10aGlzLmxlbmd0aD50Lmxlbmd0aD90OnRoaXM7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDty KyspdGhpcy53b3Jkc1tyXT10aGlzLndvcmRzW3JdJnQud29yZHNbcl07cmV0dXJuIHRoaXMu bGVuZ3RoPWUubGVuZ3RoLHRoaXMuc3RyaXAoKX0sYS5wcm90b3R5cGUuaWFuZD1mdW5jdGlv bih0KXtyZXR1cm4gbigwPT0odGhpcy5uZWdhdGl2ZXx0Lm5lZ2F0aXZlKSksdGhpcy5pdWFu ZCh0KX0sYS5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxlbmd0aD50 Lmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZCh0KTp0LmNsb25lKCkuaWFuZCh0aGlzKX0sYS5w cm90b3R5cGUudWFuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sZW5ndGg+dC5sZW5ndGg/ dGhpcy5jbG9uZSgpLml1YW5kKHQpOnQuY2xvbmUoKS5pdWFuZCh0aGlzKX0sYS5wcm90b3R5 cGUuaXV4b3I9ZnVuY3Rpb24odCl7dmFyIGUscjt0aGlzLmxlbmd0aD50Lmxlbmd0aD8oZT10 aGlzLHI9dCk6KGU9dCxyPXRoaXMpO2Zvcih2YXIgbj0wO248ci5sZW5ndGg7bisrKXRoaXMu d29yZHNbbl09ZS53b3Jkc1tuXV5yLndvcmRzW25dO2lmKHRoaXMhPT1lKWZvcig7bjxlLmxl bmd0aDtuKyspdGhpcy53b3Jkc1tuXT1lLndvcmRzW25dO3JldHVybiB0aGlzLmxlbmd0aD1l Lmxlbmd0aCx0aGlzLnN0cmlwKCl9LGEucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24odCl7cmV0 dXJuIG4oMD09KHRoaXMubmVnYXRpdmV8dC5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IodCl9LGEu cHJvdG90eXBlLnhvcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sZW5ndGg+dC5sZW5ndGg/ dGhpcy5jbG9uZSgpLml4b3IodCk6dC5jbG9uZSgpLml4b3IodGhpcyl9LGEucHJvdG90eXBl LnV4b3I9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGVuZ3RoPnQubGVuZ3RoP3RoaXMuY2xv bmUoKS5pdXhvcih0KTp0LmNsb25lKCkuaXV4b3IodGhpcyl9LGEucHJvdG90eXBlLmlub3Ru PWZ1bmN0aW9uKHQpe24oIm51bWJlciI9PXR5cGVvZiB0JiZ0Pj0wKTt2YXIgZT0wfE1hdGgu Y2VpbCh0LzI2KSxyPXQlMjY7dGhpcy5fZXhwYW5kKGUpLHI+MCYmZS0tO2Zvcih2YXIgaT0w O2k8ZTtpKyspdGhpcy53b3Jkc1tpXT02NzEwODg2MyZ+dGhpcy53b3Jkc1tpXTtyZXR1cm4g cj4wJiYodGhpcy53b3Jkc1tpXT1+dGhpcy53b3Jkc1tpXSY2NzEwODg2Mz4+MjYtciksdGhp cy5zdHJpcCgpfSxhLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNs b25lKCkuaW5vdG4odCl9LGEucHJvdG90eXBlLnNldG49ZnVuY3Rpb24odCxlKXtuKCJudW1i ZXIiPT10eXBlb2YgdCYmdD49MCk7dmFyIHI9dC8yNnwwLGk9dCUyNjtyZXR1cm4gdGhpcy5f ZXhwYW5kKHIrMSksdGhpcy53b3Jkc1tyXT1lP3RoaXMud29yZHNbcl18MTw8aTp0aGlzLndv cmRzW3JdJn4oMTw8aSksdGhpcy5zdHJpcCgpfSxhLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9u KHQpe3ZhciBlLHIsbjtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PXQubmVnYXRpdmUpcmV0 dXJuIHRoaXMubmVnYXRpdmU9MCxlPXRoaXMuaXN1Yih0KSx0aGlzLm5lZ2F0aXZlXj0xLHRo aXMuX25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT10Lm5lZ2F0aXZlKXJl dHVybiB0Lm5lZ2F0aXZlPTAsZT10aGlzLmlzdWIodCksdC5uZWdhdGl2ZT0xLGUuX25vcm1T aWduKCk7dGhpcy5sZW5ndGg+dC5sZW5ndGg/KHI9dGhpcyxuPXQpOihyPXQsbj10aGlzKTtm b3IodmFyIGk9MCxhPTA7YTxuLmxlbmd0aDthKyspZT0oMHxyLndvcmRzW2FdKSsoMHxuLndv cmRzW2FdKStpLHRoaXMud29yZHNbYV09NjcxMDg4NjMmZSxpPWU+Pj4yNjtmb3IoOzAhPT1p JiZhPHIubGVuZ3RoO2ErKyllPSgwfHIud29yZHNbYV0pK2ksdGhpcy53b3Jkc1thXT02NzEw ODg2MyZlLGk9ZT4+PjI2O2lmKHRoaXMubGVuZ3RoPXIubGVuZ3RoLDAhPT1pKXRoaXMud29y ZHNbdGhpcy5sZW5ndGhdPWksdGhpcy5sZW5ndGgrKztlbHNlIGlmKHIhPT10aGlzKWZvcig7 YTxyLmxlbmd0aDthKyspdGhpcy53b3Jkc1thXT1yLndvcmRzW2FdO3JldHVybiB0aGlzfSxh LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIDAhPT10Lm5lZ2F0aXZl JiYwPT09dGhpcy5uZWdhdGl2ZT8odC5uZWdhdGl2ZT0wLGU9dGhpcy5zdWIodCksdC5uZWdh dGl2ZV49MSxlKTowPT09dC5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVn YXRpdmU9MCxlPXQuc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSxlKTp0aGlzLmxlbmd0aD50 Lmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZCh0KTp0LmNsb25lKCkuaWFkZCh0aGlzKX0sYS5w cm90b3R5cGUuaXN1Yj1mdW5jdGlvbih0KXtpZigwIT09dC5uZWdhdGl2ZSl7dC5uZWdhdGl2 ZT0wO3ZhciBlPXRoaXMuaWFkZCh0KTtyZXR1cm4gdC5uZWdhdGl2ZT0xLGUuX25vcm1TaWdu KCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlh ZGQodCksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIHIsbixpPXRoaXMu Y21wKHQpO2lmKDA9PT1pKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5sZW5ndGg9MSx0 aGlzLndvcmRzWzBdPTAsdGhpcztpPjA/KHI9dGhpcyxuPXQpOihyPXQsbj10aGlzKTtmb3Io dmFyIGE9MCxvPTA7bzxuLmxlbmd0aDtvKyspYT0oZT0oMHxyLndvcmRzW29dKS0oMHxuLndv cmRzW29dKSthKT4+MjYsdGhpcy53b3Jkc1tvXT02NzEwODg2MyZlO2Zvcig7MCE9PWEmJm88 ci5sZW5ndGg7bysrKWE9KGU9KDB8ci53b3Jkc1tvXSkrYSk+PjI2LHRoaXMud29yZHNbb109 NjcxMDg4NjMmZTtpZigwPT09YSYmbzxyLmxlbmd0aCYmciE9PXRoaXMpZm9yKDtvPHIubGVu Z3RoO28rKyl0aGlzLndvcmRzW29dPXIud29yZHNbb107cmV0dXJuIHRoaXMubGVuZ3RoPU1h dGgubWF4KHRoaXMubGVuZ3RoLG8pLHIhPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlz LnN0cmlwKCl9LGEucHJvdG90eXBlLnN1Yj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9u ZSgpLmlzdWIodCl9O3ZhciBkPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixpLGEsbz10LndvcmRz LHM9ZS53b3JkcyxsPXIud29yZHMsYz0wLHU9MHxvWzBdLGY9ODE5MSZ1LGg9dT4+PjEzLHA9 MHxvWzFdLGQ9ODE5MSZwLG09cD4+PjEzLGc9MHxvWzJdLHY9ODE5MSZnLHk9Zz4+PjEzLHg9 MHxvWzNdLGI9ODE5MSZ4LF89eD4+PjEzLHc9MHxvWzRdLFQ9ODE5MSZ3LGs9dz4+PjEzLEE9 MHxvWzVdLE09ODE5MSZBLFM9QT4+PjEzLEU9MHxvWzZdLEw9ODE5MSZFLEM9RT4+PjEzLFA9 MHxvWzddLEk9ODE5MSZQLE89UD4+PjEzLHo9MHxvWzhdLEQ9ODE5MSZ6LFI9ej4+PjEzLEY9 MHxvWzldLEI9ODE5MSZGLE49Rj4+PjEzLGo9MHxzWzBdLFU9ODE5MSZqLFY9aj4+PjEzLEg9 MHxzWzFdLHE9ODE5MSZILEc9SD4+PjEzLFk9MHxzWzJdLFc9ODE5MSZZLFg9WT4+PjEzLFo9 MHxzWzNdLEo9ODE5MSZaLEs9Wj4+PjEzLFE9MHxzWzRdLCQ9ODE5MSZRLHR0PVE+Pj4xMyxl dD0wfHNbNV0scnQ9ODE5MSZldCxudD1ldD4+PjEzLGl0PTB8c1s2XSxhdD04MTkxJml0LG90 PWl0Pj4+MTMsc3Q9MHxzWzddLGx0PTgxOTEmc3QsY3Q9c3Q+Pj4xMyx1dD0wfHNbOF0sZnQ9 ODE5MSZ1dCxodD11dD4+PjEzLHB0PTB8c1s5XSxkdD04MTkxJnB0LG10PXB0Pj4+MTM7ci5u ZWdhdGl2ZT10Lm5lZ2F0aXZlXmUubmVnYXRpdmUsci5sZW5ndGg9MTk7dmFyIGd0PShjKyhu PU1hdGguaW11bChmLFUpKXwwKSsoKDgxOTEmKGk9KGk9TWF0aC5pbXVsKGYsVikpK01hdGgu aW11bChoLFUpfDApKTw8MTMpfDA7Yz0oKGE9TWF0aC5pbXVsKGgsVikpKyhpPj4+MTMpfDAp KyhndD4+PjI2KXwwLGd0Jj02NzEwODg2MyxuPU1hdGguaW11bChkLFUpLGk9KGk9TWF0aC5p bXVsKGQsVikpK01hdGguaW11bChtLFUpfDAsYT1NYXRoLmltdWwobSxWKTt2YXIgdnQ9KGMr KG49bitNYXRoLmltdWwoZixxKXwwKXwwKSsoKDgxOTEmKGk9KGk9aStNYXRoLmltdWwoZixH KXwwKStNYXRoLmltdWwoaCxxKXwwKSk8PDEzKXwwO2M9KChhPWErTWF0aC5pbXVsKGgsRyl8 MCkrKGk+Pj4xMyl8MCkrKHZ0Pj4+MjYpfDAsdnQmPTY3MTA4ODYzLG49TWF0aC5pbXVsKHYs VSksaT0oaT1NYXRoLmltdWwodixWKSkrTWF0aC5pbXVsKHksVSl8MCxhPU1hdGguaW11bCh5 LFYpLG49bitNYXRoLmltdWwoZCxxKXwwLGk9KGk9aStNYXRoLmltdWwoZCxHKXwwKStNYXRo LmltdWwobSxxKXwwLGE9YStNYXRoLmltdWwobSxHKXwwO3ZhciB5dD0oYysobj1uK01hdGgu aW11bChmLFcpfDApfDApKygoODE5MSYoaT0oaT1pK01hdGguaW11bChmLFgpfDApK01hdGgu aW11bChoLFcpfDApKTw8MTMpfDA7Yz0oKGE9YStNYXRoLmltdWwoaCxYKXwwKSsoaT4+PjEz KXwwKSsoeXQ+Pj4yNil8MCx5dCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoYixVKSxpPShpPU1h dGguaW11bChiLFYpKStNYXRoLmltdWwoXyxVKXwwLGE9TWF0aC5pbXVsKF8sViksbj1uK01h dGguaW11bCh2LHEpfDAsaT0oaT1pK01hdGguaW11bCh2LEcpfDApK01hdGguaW11bCh5LHEp fDAsYT1hK01hdGguaW11bCh5LEcpfDAsbj1uK01hdGguaW11bChkLFcpfDAsaT0oaT1pK01h dGguaW11bChkLFgpfDApK01hdGguaW11bChtLFcpfDAsYT1hK01hdGguaW11bChtLFgpfDA7 dmFyIHh0PShjKyhuPW4rTWF0aC5pbXVsKGYsSil8MCl8MCkrKCg4MTkxJihpPShpPWkrTWF0 aC5pbXVsKGYsSyl8MCkrTWF0aC5pbXVsKGgsSil8MCkpPDwxMyl8MDtjPSgoYT1hK01hdGgu aW11bChoLEspfDApKyhpPj4+MTMpfDApKyh4dD4+PjI2KXwwLHh0Jj02NzEwODg2MyxuPU1h dGguaW11bChULFUpLGk9KGk9TWF0aC5pbXVsKFQsVikpK01hdGguaW11bChrLFUpfDAsYT1N YXRoLmltdWwoayxWKSxuPW4rTWF0aC5pbXVsKGIscSl8MCxpPShpPWkrTWF0aC5pbXVsKGIs Ryl8MCkrTWF0aC5pbXVsKF8scSl8MCxhPWErTWF0aC5pbXVsKF8sRyl8MCxuPW4rTWF0aC5p bXVsKHYsVyl8MCxpPShpPWkrTWF0aC5pbXVsKHYsWCl8MCkrTWF0aC5pbXVsKHksVyl8MCxh PWErTWF0aC5pbXVsKHksWCl8MCxuPW4rTWF0aC5pbXVsKGQsSil8MCxpPShpPWkrTWF0aC5p bXVsKGQsSyl8MCkrTWF0aC5pbXVsKG0sSil8MCxhPWErTWF0aC5pbXVsKG0sSyl8MDt2YXIg YnQ9KGMrKG49bitNYXRoLmltdWwoZiwkKXwwKXwwKSsoKDgxOTEmKGk9KGk9aStNYXRoLmlt dWwoZix0dCl8MCkrTWF0aC5pbXVsKGgsJCl8MCkpPDwxMyl8MDtjPSgoYT1hK01hdGguaW11 bChoLHR0KXwwKSsoaT4+PjEzKXwwKSsoYnQ+Pj4yNil8MCxidCY9NjcxMDg4NjMsbj1NYXRo LmltdWwoTSxVKSxpPShpPU1hdGguaW11bChNLFYpKStNYXRoLmltdWwoUyxVKXwwLGE9TWF0 aC5pbXVsKFMsViksbj1uK01hdGguaW11bChULHEpfDAsaT0oaT1pK01hdGguaW11bChULEcp fDApK01hdGguaW11bChrLHEpfDAsYT1hK01hdGguaW11bChrLEcpfDAsbj1uK01hdGguaW11 bChiLFcpfDAsaT0oaT1pK01hdGguaW11bChiLFgpfDApK01hdGguaW11bChfLFcpfDAsYT1h K01hdGguaW11bChfLFgpfDAsbj1uK01hdGguaW11bCh2LEopfDAsaT0oaT1pK01hdGguaW11 bCh2LEspfDApK01hdGguaW11bCh5LEopfDAsYT1hK01hdGguaW11bCh5LEspfDAsbj1uK01h dGguaW11bChkLCQpfDAsaT0oaT1pK01hdGguaW11bChkLHR0KXwwKStNYXRoLmltdWwobSwk KXwwLGE9YStNYXRoLmltdWwobSx0dCl8MDt2YXIgX3Q9KGMrKG49bitNYXRoLmltdWwoZixy dCl8MCl8MCkrKCg4MTkxJihpPShpPWkrTWF0aC5pbXVsKGYsbnQpfDApK01hdGguaW11bCho LHJ0KXwwKSk8PDEzKXwwO2M9KChhPWErTWF0aC5pbXVsKGgsbnQpfDApKyhpPj4+MTMpfDAp KyhfdD4+PjI2KXwwLF90Jj02NzEwODg2MyxuPU1hdGguaW11bChMLFUpLGk9KGk9TWF0aC5p bXVsKEwsVikpK01hdGguaW11bChDLFUpfDAsYT1NYXRoLmltdWwoQyxWKSxuPW4rTWF0aC5p bXVsKE0scSl8MCxpPShpPWkrTWF0aC5pbXVsKE0sRyl8MCkrTWF0aC5pbXVsKFMscSl8MCxh PWErTWF0aC5pbXVsKFMsRyl8MCxuPW4rTWF0aC5pbXVsKFQsVyl8MCxpPShpPWkrTWF0aC5p bXVsKFQsWCl8MCkrTWF0aC5pbXVsKGssVyl8MCxhPWErTWF0aC5pbXVsKGssWCl8MCxuPW4r TWF0aC5pbXVsKGIsSil8MCxpPShpPWkrTWF0aC5pbXVsKGIsSyl8MCkrTWF0aC5pbXVsKF8s Sil8MCxhPWErTWF0aC5pbXVsKF8sSyl8MCxuPW4rTWF0aC5pbXVsKHYsJCl8MCxpPShpPWkr TWF0aC5pbXVsKHYsdHQpfDApK01hdGguaW11bCh5LCQpfDAsYT1hK01hdGguaW11bCh5LHR0 KXwwLG49bitNYXRoLmltdWwoZCxydCl8MCxpPShpPWkrTWF0aC5pbXVsKGQsbnQpfDApK01h dGguaW11bChtLHJ0KXwwLGE9YStNYXRoLmltdWwobSxudCl8MDt2YXIgd3Q9KGMrKG49bitN YXRoLmltdWwoZixhdCl8MCl8MCkrKCg4MTkxJihpPShpPWkrTWF0aC5pbXVsKGYsb3QpfDAp K01hdGguaW11bChoLGF0KXwwKSk8PDEzKXwwO2M9KChhPWErTWF0aC5pbXVsKGgsb3QpfDAp KyhpPj4+MTMpfDApKyh3dD4+PjI2KXwwLHd0Jj02NzEwODg2MyxuPU1hdGguaW11bChJLFUp LGk9KGk9TWF0aC5pbXVsKEksVikpK01hdGguaW11bChPLFUpfDAsYT1NYXRoLmltdWwoTyxW KSxuPW4rTWF0aC5pbXVsKEwscSl8MCxpPShpPWkrTWF0aC5pbXVsKEwsRyl8MCkrTWF0aC5p bXVsKEMscSl8MCxhPWErTWF0aC5pbXVsKEMsRyl8MCxuPW4rTWF0aC5pbXVsKE0sVyl8MCxp PShpPWkrTWF0aC5pbXVsKE0sWCl8MCkrTWF0aC5pbXVsKFMsVyl8MCxhPWErTWF0aC5pbXVs KFMsWCl8MCxuPW4rTWF0aC5pbXVsKFQsSil8MCxpPShpPWkrTWF0aC5pbXVsKFQsSyl8MCkr TWF0aC5pbXVsKGssSil8MCxhPWErTWF0aC5pbXVsKGssSyl8MCxuPW4rTWF0aC5pbXVsKGIs JCl8MCxpPShpPWkrTWF0aC5pbXVsKGIsdHQpfDApK01hdGguaW11bChfLCQpfDAsYT1hK01h dGguaW11bChfLHR0KXwwLG49bitNYXRoLmltdWwodixydCl8MCxpPShpPWkrTWF0aC5pbXVs KHYsbnQpfDApK01hdGguaW11bCh5LHJ0KXwwLGE9YStNYXRoLmltdWwoeSxudCl8MCxuPW4r TWF0aC5pbXVsKGQsYXQpfDAsaT0oaT1pK01hdGguaW11bChkLG90KXwwKStNYXRoLmltdWwo bSxhdCl8MCxhPWErTWF0aC5pbXVsKG0sb3QpfDA7dmFyIFR0PShjKyhuPW4rTWF0aC5pbXVs KGYsbHQpfDApfDApKygoODE5MSYoaT0oaT1pK01hdGguaW11bChmLGN0KXwwKStNYXRoLmlt dWwoaCxsdCl8MCkpPDwxMyl8MDtjPSgoYT1hK01hdGguaW11bChoLGN0KXwwKSsoaT4+PjEz KXwwKSsoVHQ+Pj4yNil8MCxUdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoRCxVKSxpPShpPU1h dGguaW11bChELFYpKStNYXRoLmltdWwoUixVKXwwLGE9TWF0aC5pbXVsKFIsViksbj1uK01h dGguaW11bChJLHEpfDAsaT0oaT1pK01hdGguaW11bChJLEcpfDApK01hdGguaW11bChPLHEp fDAsYT1hK01hdGguaW11bChPLEcpfDAsbj1uK01hdGguaW11bChMLFcpfDAsaT0oaT1pK01h dGguaW11bChMLFgpfDApK01hdGguaW11bChDLFcpfDAsYT1hK01hdGguaW11bChDLFgpfDAs bj1uK01hdGguaW11bChNLEopfDAsaT0oaT1pK01hdGguaW11bChNLEspfDApK01hdGguaW11 bChTLEopfDAsYT1hK01hdGguaW11bChTLEspfDAsbj1uK01hdGguaW11bChULCQpfDAsaT0o aT1pK01hdGguaW11bChULHR0KXwwKStNYXRoLmltdWwoaywkKXwwLGE9YStNYXRoLmltdWwo ayx0dCl8MCxuPW4rTWF0aC5pbXVsKGIscnQpfDAsaT0oaT1pK01hdGguaW11bChiLG50KXww KStNYXRoLmltdWwoXyxydCl8MCxhPWErTWF0aC5pbXVsKF8sbnQpfDAsbj1uK01hdGguaW11 bCh2LGF0KXwwLGk9KGk9aStNYXRoLmltdWwodixvdCl8MCkrTWF0aC5pbXVsKHksYXQpfDAs YT1hK01hdGguaW11bCh5LG90KXwwLG49bitNYXRoLmltdWwoZCxsdCl8MCxpPShpPWkrTWF0 aC5pbXVsKGQsY3QpfDApK01hdGguaW11bChtLGx0KXwwLGE9YStNYXRoLmltdWwobSxjdCl8 MDt2YXIga3Q9KGMrKG49bitNYXRoLmltdWwoZixmdCl8MCl8MCkrKCg4MTkxJihpPShpPWkr TWF0aC5pbXVsKGYsaHQpfDApK01hdGguaW11bChoLGZ0KXwwKSk8PDEzKXwwO2M9KChhPWEr TWF0aC5pbXVsKGgsaHQpfDApKyhpPj4+MTMpfDApKyhrdD4+PjI2KXwwLGt0Jj02NzEwODg2 MyxuPU1hdGguaW11bChCLFUpLGk9KGk9TWF0aC5pbXVsKEIsVikpK01hdGguaW11bChOLFUp fDAsYT1NYXRoLmltdWwoTixWKSxuPW4rTWF0aC5pbXVsKEQscSl8MCxpPShpPWkrTWF0aC5p bXVsKEQsRyl8MCkrTWF0aC5pbXVsKFIscSl8MCxhPWErTWF0aC5pbXVsKFIsRyl8MCxuPW4r TWF0aC5pbXVsKEksVyl8MCxpPShpPWkrTWF0aC5pbXVsKEksWCl8MCkrTWF0aC5pbXVsKE8s Vyl8MCxhPWErTWF0aC5pbXVsKE8sWCl8MCxuPW4rTWF0aC5pbXVsKEwsSil8MCxpPShpPWkr TWF0aC5pbXVsKEwsSyl8MCkrTWF0aC5pbXVsKEMsSil8MCxhPWErTWF0aC5pbXVsKEMsSyl8 MCxuPW4rTWF0aC5pbXVsKE0sJCl8MCxpPShpPWkrTWF0aC5pbXVsKE0sdHQpfDApK01hdGgu aW11bChTLCQpfDAsYT1hK01hdGguaW11bChTLHR0KXwwLG49bitNYXRoLmltdWwoVCxydCl8 MCxpPShpPWkrTWF0aC5pbXVsKFQsbnQpfDApK01hdGguaW11bChrLHJ0KXwwLGE9YStNYXRo LmltdWwoayxudCl8MCxuPW4rTWF0aC5pbXVsKGIsYXQpfDAsaT0oaT1pK01hdGguaW11bChi LG90KXwwKStNYXRoLmltdWwoXyxhdCl8MCxhPWErTWF0aC5pbXVsKF8sb3QpfDAsbj1uK01h dGguaW11bCh2LGx0KXwwLGk9KGk9aStNYXRoLmltdWwodixjdCl8MCkrTWF0aC5pbXVsKHks bHQpfDAsYT1hK01hdGguaW11bCh5LGN0KXwwLG49bitNYXRoLmltdWwoZCxmdCl8MCxpPShp PWkrTWF0aC5pbXVsKGQsaHQpfDApK01hdGguaW11bChtLGZ0KXwwLGE9YStNYXRoLmltdWwo bSxodCl8MDt2YXIgQXQ9KGMrKG49bitNYXRoLmltdWwoZixkdCl8MCl8MCkrKCg4MTkxJihp PShpPWkrTWF0aC5pbXVsKGYsbXQpfDApK01hdGguaW11bChoLGR0KXwwKSk8PDEzKXwwO2M9 KChhPWErTWF0aC5pbXVsKGgsbXQpfDApKyhpPj4+MTMpfDApKyhBdD4+PjI2KXwwLEF0Jj02 NzEwODg2MyxuPU1hdGguaW11bChCLHEpLGk9KGk9TWF0aC5pbXVsKEIsRykpK01hdGguaW11 bChOLHEpfDAsYT1NYXRoLmltdWwoTixHKSxuPW4rTWF0aC5pbXVsKEQsVyl8MCxpPShpPWkr TWF0aC5pbXVsKEQsWCl8MCkrTWF0aC5pbXVsKFIsVyl8MCxhPWErTWF0aC5pbXVsKFIsWCl8 MCxuPW4rTWF0aC5pbXVsKEksSil8MCxpPShpPWkrTWF0aC5pbXVsKEksSyl8MCkrTWF0aC5p bXVsKE8sSil8MCxhPWErTWF0aC5pbXVsKE8sSyl8MCxuPW4rTWF0aC5pbXVsKEwsJCl8MCxp PShpPWkrTWF0aC5pbXVsKEwsdHQpfDApK01hdGguaW11bChDLCQpfDAsYT1hK01hdGguaW11 bChDLHR0KXwwLG49bitNYXRoLmltdWwoTSxydCl8MCxpPShpPWkrTWF0aC5pbXVsKE0sbnQp fDApK01hdGguaW11bChTLHJ0KXwwLGE9YStNYXRoLmltdWwoUyxudCl8MCxuPW4rTWF0aC5p bXVsKFQsYXQpfDAsaT0oaT1pK01hdGguaW11bChULG90KXwwKStNYXRoLmltdWwoayxhdCl8 MCxhPWErTWF0aC5pbXVsKGssb3QpfDAsbj1uK01hdGguaW11bChiLGx0KXwwLGk9KGk9aStN YXRoLmltdWwoYixjdCl8MCkrTWF0aC5pbXVsKF8sbHQpfDAsYT1hK01hdGguaW11bChfLGN0 KXwwLG49bitNYXRoLmltdWwodixmdCl8MCxpPShpPWkrTWF0aC5pbXVsKHYsaHQpfDApK01h dGguaW11bCh5LGZ0KXwwLGE9YStNYXRoLmltdWwoeSxodCl8MDt2YXIgTXQ9KGMrKG49bitN YXRoLmltdWwoZCxkdCl8MCl8MCkrKCg4MTkxJihpPShpPWkrTWF0aC5pbXVsKGQsbXQpfDAp K01hdGguaW11bChtLGR0KXwwKSk8PDEzKXwwO2M9KChhPWErTWF0aC5pbXVsKG0sbXQpfDAp KyhpPj4+MTMpfDApKyhNdD4+PjI2KXwwLE10Jj02NzEwODg2MyxuPU1hdGguaW11bChCLFcp LGk9KGk9TWF0aC5pbXVsKEIsWCkpK01hdGguaW11bChOLFcpfDAsYT1NYXRoLmltdWwoTixY KSxuPW4rTWF0aC5pbXVsKEQsSil8MCxpPShpPWkrTWF0aC5pbXVsKEQsSyl8MCkrTWF0aC5p bXVsKFIsSil8MCxhPWErTWF0aC5pbXVsKFIsSyl8MCxuPW4rTWF0aC5pbXVsKEksJCl8MCxp PShpPWkrTWF0aC5pbXVsKEksdHQpfDApK01hdGguaW11bChPLCQpfDAsYT1hK01hdGguaW11 bChPLHR0KXwwLG49bitNYXRoLmltdWwoTCxydCl8MCxpPShpPWkrTWF0aC5pbXVsKEwsbnQp fDApK01hdGguaW11bChDLHJ0KXwwLGE9YStNYXRoLmltdWwoQyxudCl8MCxuPW4rTWF0aC5p bXVsKE0sYXQpfDAsaT0oaT1pK01hdGguaW11bChNLG90KXwwKStNYXRoLmltdWwoUyxhdCl8 MCxhPWErTWF0aC5pbXVsKFMsb3QpfDAsbj1uK01hdGguaW11bChULGx0KXwwLGk9KGk9aStN YXRoLmltdWwoVCxjdCl8MCkrTWF0aC5pbXVsKGssbHQpfDAsYT1hK01hdGguaW11bChrLGN0 KXwwLG49bitNYXRoLmltdWwoYixmdCl8MCxpPShpPWkrTWF0aC5pbXVsKGIsaHQpfDApK01h dGguaW11bChfLGZ0KXwwLGE9YStNYXRoLmltdWwoXyxodCl8MDt2YXIgU3Q9KGMrKG49bitN YXRoLmltdWwodixkdCl8MCl8MCkrKCg4MTkxJihpPShpPWkrTWF0aC5pbXVsKHYsbXQpfDAp K01hdGguaW11bCh5LGR0KXwwKSk8PDEzKXwwO2M9KChhPWErTWF0aC5pbXVsKHksbXQpfDAp KyhpPj4+MTMpfDApKyhTdD4+PjI2KXwwLFN0Jj02NzEwODg2MyxuPU1hdGguaW11bChCLEop LGk9KGk9TWF0aC5pbXVsKEIsSykpK01hdGguaW11bChOLEopfDAsYT1NYXRoLmltdWwoTixL KSxuPW4rTWF0aC5pbXVsKEQsJCl8MCxpPShpPWkrTWF0aC5pbXVsKEQsdHQpfDApK01hdGgu aW11bChSLCQpfDAsYT1hK01hdGguaW11bChSLHR0KXwwLG49bitNYXRoLmltdWwoSSxydCl8 MCxpPShpPWkrTWF0aC5pbXVsKEksbnQpfDApK01hdGguaW11bChPLHJ0KXwwLGE9YStNYXRo LmltdWwoTyxudCl8MCxuPW4rTWF0aC5pbXVsKEwsYXQpfDAsaT0oaT1pK01hdGguaW11bChM LG90KXwwKStNYXRoLmltdWwoQyxhdCl8MCxhPWErTWF0aC5pbXVsKEMsb3QpfDAsbj1uK01h dGguaW11bChNLGx0KXwwLGk9KGk9aStNYXRoLmltdWwoTSxjdCl8MCkrTWF0aC5pbXVsKFMs bHQpfDAsYT1hK01hdGguaW11bChTLGN0KXwwLG49bitNYXRoLmltdWwoVCxmdCl8MCxpPShp PWkrTWF0aC5pbXVsKFQsaHQpfDApK01hdGguaW11bChrLGZ0KXwwLGE9YStNYXRoLmltdWwo ayxodCl8MDt2YXIgRXQ9KGMrKG49bitNYXRoLmltdWwoYixkdCl8MCl8MCkrKCg4MTkxJihp PShpPWkrTWF0aC5pbXVsKGIsbXQpfDApK01hdGguaW11bChfLGR0KXwwKSk8PDEzKXwwO2M9 KChhPWErTWF0aC5pbXVsKF8sbXQpfDApKyhpPj4+MTMpfDApKyhFdD4+PjI2KXwwLEV0Jj02 NzEwODg2MyxuPU1hdGguaW11bChCLCQpLGk9KGk9TWF0aC5pbXVsKEIsdHQpKStNYXRoLmlt dWwoTiwkKXwwLGE9TWF0aC5pbXVsKE4sdHQpLG49bitNYXRoLmltdWwoRCxydCl8MCxpPShp PWkrTWF0aC5pbXVsKEQsbnQpfDApK01hdGguaW11bChSLHJ0KXwwLGE9YStNYXRoLmltdWwo UixudCl8MCxuPW4rTWF0aC5pbXVsKEksYXQpfDAsaT0oaT1pK01hdGguaW11bChJLG90KXww KStNYXRoLmltdWwoTyxhdCl8MCxhPWErTWF0aC5pbXVsKE8sb3QpfDAsbj1uK01hdGguaW11 bChMLGx0KXwwLGk9KGk9aStNYXRoLmltdWwoTCxjdCl8MCkrTWF0aC5pbXVsKEMsbHQpfDAs YT1hK01hdGguaW11bChDLGN0KXwwLG49bitNYXRoLmltdWwoTSxmdCl8MCxpPShpPWkrTWF0 aC5pbXVsKE0saHQpfDApK01hdGguaW11bChTLGZ0KXwwLGE9YStNYXRoLmltdWwoUyxodCl8 MDt2YXIgTHQ9KGMrKG49bitNYXRoLmltdWwoVCxkdCl8MCl8MCkrKCg4MTkxJihpPShpPWkr TWF0aC5pbXVsKFQsbXQpfDApK01hdGguaW11bChrLGR0KXwwKSk8PDEzKXwwO2M9KChhPWEr TWF0aC5pbXVsKGssbXQpfDApKyhpPj4+MTMpfDApKyhMdD4+PjI2KXwwLEx0Jj02NzEwODg2 MyxuPU1hdGguaW11bChCLHJ0KSxpPShpPU1hdGguaW11bChCLG50KSkrTWF0aC5pbXVsKE4s cnQpfDAsYT1NYXRoLmltdWwoTixudCksbj1uK01hdGguaW11bChELGF0KXwwLGk9KGk9aStN YXRoLmltdWwoRCxvdCl8MCkrTWF0aC5pbXVsKFIsYXQpfDAsYT1hK01hdGguaW11bChSLG90 KXwwLG49bitNYXRoLmltdWwoSSxsdCl8MCxpPShpPWkrTWF0aC5pbXVsKEksY3QpfDApK01h dGguaW11bChPLGx0KXwwLGE9YStNYXRoLmltdWwoTyxjdCl8MCxuPW4rTWF0aC5pbXVsKEws ZnQpfDAsaT0oaT1pK01hdGguaW11bChMLGh0KXwwKStNYXRoLmltdWwoQyxmdCl8MCxhPWEr TWF0aC5pbXVsKEMsaHQpfDA7dmFyIEN0PShjKyhuPW4rTWF0aC5pbXVsKE0sZHQpfDApfDAp KygoODE5MSYoaT0oaT1pK01hdGguaW11bChNLG10KXwwKStNYXRoLmltdWwoUyxkdCl8MCkp PDwxMyl8MDtjPSgoYT1hK01hdGguaW11bChTLG10KXwwKSsoaT4+PjEzKXwwKSsoQ3Q+Pj4y Nil8MCxDdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoQixhdCksaT0oaT1NYXRoLmltdWwoQixv dCkpK01hdGguaW11bChOLGF0KXwwLGE9TWF0aC5pbXVsKE4sb3QpLG49bitNYXRoLmltdWwo RCxsdCl8MCxpPShpPWkrTWF0aC5pbXVsKEQsY3QpfDApK01hdGguaW11bChSLGx0KXwwLGE9 YStNYXRoLmltdWwoUixjdCl8MCxuPW4rTWF0aC5pbXVsKEksZnQpfDAsaT0oaT1pK01hdGgu aW11bChJLGh0KXwwKStNYXRoLmltdWwoTyxmdCl8MCxhPWErTWF0aC5pbXVsKE8saHQpfDA7 dmFyIFB0PShjKyhuPW4rTWF0aC5pbXVsKEwsZHQpfDApfDApKygoODE5MSYoaT0oaT1pK01h dGguaW11bChMLG10KXwwKStNYXRoLmltdWwoQyxkdCl8MCkpPDwxMyl8MDtjPSgoYT1hK01h dGguaW11bChDLG10KXwwKSsoaT4+PjEzKXwwKSsoUHQ+Pj4yNil8MCxQdCY9NjcxMDg4NjMs bj1NYXRoLmltdWwoQixsdCksaT0oaT1NYXRoLmltdWwoQixjdCkpK01hdGguaW11bChOLGx0 KXwwLGE9TWF0aC5pbXVsKE4sY3QpLG49bitNYXRoLmltdWwoRCxmdCl8MCxpPShpPWkrTWF0 aC5pbXVsKEQsaHQpfDApK01hdGguaW11bChSLGZ0KXwwLGE9YStNYXRoLmltdWwoUixodCl8 MDt2YXIgSXQ9KGMrKG49bitNYXRoLmltdWwoSSxkdCl8MCl8MCkrKCg4MTkxJihpPShpPWkr TWF0aC5pbXVsKEksbXQpfDApK01hdGguaW11bChPLGR0KXwwKSk8PDEzKXwwO2M9KChhPWEr TWF0aC5pbXVsKE8sbXQpfDApKyhpPj4+MTMpfDApKyhJdD4+PjI2KXwwLEl0Jj02NzEwODg2 MyxuPU1hdGguaW11bChCLGZ0KSxpPShpPU1hdGguaW11bChCLGh0KSkrTWF0aC5pbXVsKE4s ZnQpfDAsYT1NYXRoLmltdWwoTixodCk7dmFyIE90PShjKyhuPW4rTWF0aC5pbXVsKEQsZHQp fDApfDApKygoODE5MSYoaT0oaT1pK01hdGguaW11bChELG10KXwwKStNYXRoLmltdWwoUixk dCl8MCkpPDwxMyl8MDtjPSgoYT1hK01hdGguaW11bChSLG10KXwwKSsoaT4+PjEzKXwwKSso T3Q+Pj4yNil8MCxPdCY9NjcxMDg4NjM7dmFyIHp0PShjKyhuPU1hdGguaW11bChCLGR0KSl8 MCkrKCg4MTkxJihpPShpPU1hdGguaW11bChCLG10KSkrTWF0aC5pbXVsKE4sZHQpfDApKTw8 MTMpfDA7cmV0dXJuIGM9KChhPU1hdGguaW11bChOLG10KSkrKGk+Pj4xMyl8MCkrKHp0Pj4+ MjYpfDAsenQmPTY3MTA4ODYzLGxbMF09Z3QsbFsxXT12dCxsWzJdPXl0LGxbM109eHQsbFs0 XT1idCxsWzVdPV90LGxbNl09d3QsbFs3XT1UdCxsWzhdPWt0LGxbOV09QXQsbFsxMF09TXQs bFsxMV09U3QsbFsxMl09RXQsbFsxM109THQsbFsxNF09Q3QsbFsxNV09UHQsbFsxNl09SXQs bFsxN109T3QsbFsxOF09enQsMCE9PWMmJihsWzE5XT1jLHIubGVuZ3RoKyspLHJ9O2Z1bmN0 aW9uIG0odCxlLHIpe3JldHVybihuZXcgZykubXVscCh0LGUscil9ZnVuY3Rpb24gZyh0LGUp e3RoaXMueD10LHRoaXMueT1lfU1hdGguaW11bHx8KGQ9cCksYS5wcm90b3R5cGUubXVsVG89 ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmxlbmd0aCt0Lmxlbmd0aDtyZXR1cm4gMTA9PT10 aGlzLmxlbmd0aCYmMTA9PT10Lmxlbmd0aD9kKHRoaXMsdCxlKTpyPDYzP3AodGhpcyx0LGUp OnI8MTAyND9mdW5jdGlvbih0LGUscil7ci5uZWdhdGl2ZT1lLm5lZ2F0aXZlXnQubmVnYXRp dmUsci5sZW5ndGg9dC5sZW5ndGgrZS5sZW5ndGg7Zm9yKHZhciBuPTAsaT0wLGE9MDthPHIu bGVuZ3RoLTE7YSsrKXt2YXIgbz1pO2k9MDtmb3IodmFyIHM9NjcxMDg4NjMmbixsPU1hdGgu bWluKGEsZS5sZW5ndGgtMSksYz1NYXRoLm1heCgwLGEtdC5sZW5ndGgrMSk7Yzw9bDtjKysp e3ZhciB1PWEtYyxmPSgwfHQud29yZHNbdV0pKigwfGUud29yZHNbY10pLGg9NjcxMDg4NjMm ZjtzPTY3MTA4ODYzJihoPWgrc3wwKSxpKz0obz0obz1vKyhmLzY3MTA4ODY0fDApfDApKyho Pj4+MjYpfDApPj4+MjYsbyY9NjcxMDg4NjN9ci53b3Jkc1thXT1zLG49byxvPWl9cmV0dXJu IDAhPT1uP3Iud29yZHNbYV09bjpyLmxlbmd0aC0tLHIuc3RyaXAoKX0odGhpcyx0LGUpOm0o dGhpcyx0LGUpfSxnLnByb3RvdHlwZS5tYWtlUkJUPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1u ZXcgQXJyYXkodCkscj1hLnByb3RvdHlwZS5fY291bnRCaXRzKHQpLTEsbj0wO248dDtuKysp ZVtuXT10aGlzLnJldkJpbihuLHIsdCk7cmV0dXJuIGV9LGcucHJvdG90eXBlLnJldkJpbj1m dW5jdGlvbih0LGUscil7aWYoMD09PXR8fHQ9PT1yLTEpcmV0dXJuIHQ7Zm9yKHZhciBuPTAs aT0wO2k8ZTtpKyspbnw9KDEmdCk8PGUtaS0xLHQ+Pj0xO3JldHVybiBufSxnLnByb3RvdHlw ZS5wZXJtdXRlPWZ1bmN0aW9uKHQsZSxyLG4saSxhKXtmb3IodmFyIG89MDtvPGE7bysrKW5b b109ZVt0W29dXSxpW29dPXJbdFtvXV19LGcucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlv bih0LGUscixuLGksYSl7dGhpcy5wZXJtdXRlKGEsdCxlLHIsbixpKTtmb3IodmFyIG89MTtv PGk7bzw8PTEpZm9yKHZhciBzPW88PDEsbD1NYXRoLmNvcygyKk1hdGguUEkvcyksYz1NYXRo LnNpbigyKk1hdGguUEkvcyksdT0wO3U8aTt1Kz1zKWZvcih2YXIgZj1sLGg9YyxwPTA7cDxv O3ArKyl7dmFyIGQ9clt1K3BdLG09blt1K3BdLGc9clt1K3Arb10sdj1uW3UrcCtvXSx5PWYq Zy1oKnY7dj1mKnYraCpnLGc9eSxyW3UrcF09ZCtnLG5bdStwXT1tK3Ysclt1K3Arb109ZC1n LG5bdStwK29dPW0tdixwIT09cyYmKHk9bCpmLWMqaCxoPWwqaCtjKmYsZj15KX19LGcucHJv dG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKHQsZSl7dmFyIHI9MXxNYXRoLm1heChlLHQp LG49MSZyLGk9MDtmb3Iocj1yLzJ8MDtyO3I+Pj49MSlpKys7cmV0dXJuIDE8PGkrMStufSxn LnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24odCxlLHIpe2lmKCEocjw9MSkpZm9yKHZh ciBuPTA7bjxyLzI7bisrKXt2YXIgaT10W25dO3Rbbl09dFtyLW4tMV0sdFtyLW4tMV09aSxp PWVbbl0sZVtuXT0tZVtyLW4tMV0sZVtyLW4tMV09LWl9fSxnLnByb3RvdHlwZS5ub3JtYWxp emUxM2I9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MCxuPTA7bjxlLzI7bisrKXt2YXIgaT04 MTkyKk1hdGgucm91bmQodFsyKm4rMV0vZSkrTWF0aC5yb3VuZCh0WzIqbl0vZSkrcjt0W25d PTY3MTA4ODYzJmkscj1pPDY3MTA4ODY0PzA6aS82NzEwODg2NHwwfXJldHVybiB0fSxnLnBy b3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKHQsZSxyLGkpe2Zvcih2YXIgYT0wLG89MDtv PGU7bysrKWErPTB8dFtvXSxyWzIqb109ODE5MSZhLGE+Pj49MTMsclsyKm8rMV09ODE5MSZh LGE+Pj49MTM7Zm9yKG89MiplO288aTsrK28pcltvXT0wO24oMD09PWEpLG4oMD09KC04MTky JmEpKX0sZy5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbih0KXtmb3IodmFyIGU9bmV3IEFycmF5 KHQpLHI9MDtyPHQ7cisrKWVbcl09MDtyZXR1cm4gZX0sZy5wcm90b3R5cGUubXVscD1mdW5j dGlvbih0LGUscil7dmFyIG49Mip0aGlzLmd1ZXNzTGVuMTNiKHQubGVuZ3RoLGUubGVuZ3Ro KSxpPXRoaXMubWFrZVJCVChuKSxhPXRoaXMuc3R1YihuKSxvPW5ldyBBcnJheShuKSxzPW5l dyBBcnJheShuKSxsPW5ldyBBcnJheShuKSxjPW5ldyBBcnJheShuKSx1PW5ldyBBcnJheShu KSxmPW5ldyBBcnJheShuKSxoPXIud29yZHM7aC5sZW5ndGg9bix0aGlzLmNvbnZlcnQxM2Io dC53b3Jkcyx0Lmxlbmd0aCxvLG4pLHRoaXMuY29udmVydDEzYihlLndvcmRzLGUubGVuZ3Ro LGMsbiksdGhpcy50cmFuc2Zvcm0obyxhLHMsbCxuLGkpLHRoaXMudHJhbnNmb3JtKGMsYSx1 LGYsbixpKTtmb3IodmFyIHA9MDtwPG47cCsrKXt2YXIgZD1zW3BdKnVbcF0tbFtwXSpmW3Bd O2xbcF09c1twXSpmW3BdK2xbcF0qdVtwXSxzW3BdPWR9cmV0dXJuIHRoaXMuY29uanVnYXRl KHMsbCxuKSx0aGlzLnRyYW5zZm9ybShzLGwsaCxhLG4saSksdGhpcy5jb25qdWdhdGUoaCxh LG4pLHRoaXMubm9ybWFsaXplMTNiKGgsbiksci5uZWdhdGl2ZT10Lm5lZ2F0aXZlXmUubmVn YXRpdmUsci5sZW5ndGg9dC5sZW5ndGgrZS5sZW5ndGgsci5zdHJpcCgpfSxhLnByb3RvdHlw ZS5tdWw9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IGEobnVsbCk7cmV0dXJuIGUud29yZHM9bmV3 IEFycmF5KHRoaXMubGVuZ3RoK3QubGVuZ3RoKSx0aGlzLm11bFRvKHQsZSl9LGEucHJvdG90 eXBlLm11bGY9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IGEobnVsbCk7cmV0dXJuIGUud29yZHM9 bmV3IEFycmF5KHRoaXMubGVuZ3RoK3QubGVuZ3RoKSxtKHRoaXMsdCxlKX0sYS5wcm90b3R5 cGUuaW11bD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKHQsdGhpcyl9 LGEucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKHQpe24oIm51bWJlciI9PXR5cGVvZiB0KSxu KHQ8NjcxMDg4NjQpO2Zvcih2YXIgZT0wLHI9MDtyPHRoaXMubGVuZ3RoO3IrKyl7dmFyIGk9 KDB8dGhpcy53b3Jkc1tyXSkqdCxhPSg2NzEwODg2MyZpKSsoNjcxMDg4NjMmZSk7ZT4+PTI2 LGUrPWkvNjcxMDg4NjR8MCxlKz1hPj4+MjYsdGhpcy53b3Jkc1tyXT02NzEwODg2MyZhfXJl dHVybiAwIT09ZSYmKHRoaXMud29yZHNbcl09ZSx0aGlzLmxlbmd0aCsrKSx0aGlzfSxhLnBy b3RvdHlwZS5tdWxuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4odCl9 LGEucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sYS5w cm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgp KX0sYS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe2Zvcih2 YXIgZT1uZXcgQXJyYXkodC5iaXRMZW5ndGgoKSkscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIg bj1yLzI2fDAsaT1yJTI2O2Vbcl09KHQud29yZHNbbl0mMTw8aSk+Pj5pfXJldHVybiBlfSh0 KTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIG5ldyBhKDEpO2Zvcih2YXIgcj10aGlzLG49MDtu PGUubGVuZ3RoJiYwPT09ZVtuXTtuKysscj1yLnNxcigpKTtpZigrK248ZS5sZW5ndGgpZm9y KHZhciBpPXIuc3FyKCk7bjxlLmxlbmd0aDtuKyssaT1pLnNxcigpKTAhPT1lW25dJiYocj1y Lm11bChpKSk7cmV0dXJuIHJ9LGEucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbih0KXtuKCJu dW1iZXIiPT10eXBlb2YgdCYmdD49MCk7dmFyIGUscj10JTI2LGk9KHQtcikvMjYsYT02NzEw ODg2Mz4+PjI2LXI8PDI2LXI7aWYoMCE9PXIpe3ZhciBvPTA7Zm9yKGU9MDtlPHRoaXMubGVu Z3RoO2UrKyl7dmFyIHM9dGhpcy53b3Jkc1tlXSZhLGw9KDB8dGhpcy53b3Jkc1tlXSktczw8 cjt0aGlzLndvcmRzW2VdPWx8byxvPXM+Pj4yNi1yfW8mJih0aGlzLndvcmRzW2VdPW8sdGhp cy5sZW5ndGgrKyl9aWYoMCE9PWkpe2ZvcihlPXRoaXMubGVuZ3RoLTE7ZT49MDtlLS0pdGhp cy53b3Jkc1tlK2ldPXRoaXMud29yZHNbZV07Zm9yKGU9MDtlPGk7ZSsrKXRoaXMud29yZHNb ZV09MDt0aGlzLmxlbmd0aCs9aX1yZXR1cm4gdGhpcy5zdHJpcCgpfSxhLnByb3RvdHlwZS5p c2hsbj1mdW5jdGlvbih0KXtyZXR1cm4gbigwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNo bG4odCl9LGEucHJvdG90eXBlLml1c2hybj1mdW5jdGlvbih0LGUscil7dmFyIGk7bigibnVt YmVyIj09dHlwZW9mIHQmJnQ+PTApLGk9ZT8oZS1lJTI2KS8yNjowO3ZhciBhPXQlMjYsbz1N YXRoLm1pbigodC1hKS8yNix0aGlzLmxlbmd0aCkscz02NzEwODg2M142NzEwODg2Mz4+PmE8 PGEsbD1yO2lmKGktPW8saT1NYXRoLm1heCgwLGkpLGwpe2Zvcih2YXIgYz0wO2M8bztjKysp bC53b3Jkc1tjXT10aGlzLndvcmRzW2NdO2wubGVuZ3RoPW99aWYoMD09PW8pO2Vsc2UgaWYo dGhpcy5sZW5ndGg+bylmb3IodGhpcy5sZW5ndGgtPW8sYz0wO2M8dGhpcy5sZW5ndGg7Yysr KXRoaXMud29yZHNbY109dGhpcy53b3Jkc1tjK29dO2Vsc2UgdGhpcy53b3Jkc1swXT0wLHRo aXMubGVuZ3RoPTE7dmFyIHU9MDtmb3IoYz10aGlzLmxlbmd0aC0xO2M+PTAmJigwIT09dXx8 Yz49aSk7Yy0tKXt2YXIgZj0wfHRoaXMud29yZHNbY107dGhpcy53b3Jkc1tjXT11PDwyNi1h fGY+Pj5hLHU9ZiZzfXJldHVybiBsJiYwIT09dSYmKGwud29yZHNbbC5sZW5ndGgrK109dSks MD09PXRoaXMubGVuZ3RoJiYodGhpcy53b3Jkc1swXT0wLHRoaXMubGVuZ3RoPTEpLHRoaXMu c3RyaXAoKX0sYS5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24odCxlLHIpe3JldHVybiBuKDA9 PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hybih0LGUscil9LGEucHJvdG90eXBlLnNobG49 ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbih0KX0sYS5wcm90b3R5cGUu dXNobG49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4odCl9LGEucHJv dG90eXBlLnNocm49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybih0KX0s YS5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNo cm4odCl9LGEucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uKHQpe24oIm51bWJlciI9PXR5cGVv ZiB0JiZ0Pj0wKTt2YXIgZT10JTI2LHI9KHQtZSkvMjYsaT0xPDxlO3JldHVybiEodGhpcy5s ZW5ndGg8PXIpJiYhISh0aGlzLndvcmRzW3JdJmkpfSxhLnByb3RvdHlwZS5pbWFza249ZnVu Y3Rpb24odCl7bigibnVtYmVyIj09dHlwZW9mIHQmJnQ+PTApO3ZhciBlPXQlMjYscj0odC1l KS8yNjtpZihuKDA9PT10aGlzLm5lZ2F0aXZlLCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBv c2l0aXZlIG51bWJlcnMiKSx0aGlzLmxlbmd0aDw9cilyZXR1cm4gdGhpcztpZigwIT09ZSYm cisrLHRoaXMubGVuZ3RoPU1hdGgubWluKHIsdGhpcy5sZW5ndGgpLDAhPT1lKXt2YXIgaT02 NzEwODg2M142NzEwODg2Mz4+PmU8PGU7dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9aX1y ZXR1cm4gdGhpcy5zdHJpcCgpfSxhLnByb3RvdHlwZS5tYXNrbj1mdW5jdGlvbih0KXtyZXR1 cm4gdGhpcy5jbG9uZSgpLmltYXNrbih0KX0sYS5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24o dCl7cmV0dXJuIG4oIm51bWJlciI9PXR5cGVvZiB0KSxuKHQ8NjcxMDg4NjQpLHQ8MD90aGlz LmlzdWJuKC10KTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5sZW5ndGgmJigwfHRoaXMu d29yZHNbMF0pPHQ/KHRoaXMud29yZHNbMF09dC0oMHx0aGlzLndvcmRzWzBdKSx0aGlzLm5l Z2F0aXZlPTAsdGhpcyk6KHRoaXMubmVnYXRpdmU9MCx0aGlzLmlzdWJuKHQpLHRoaXMubmVn YXRpdmU9MSx0aGlzKTp0aGlzLl9pYWRkbih0KX0sYS5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0 aW9uKHQpe3RoaXMud29yZHNbMF0rPXQ7Zm9yKHZhciBlPTA7ZTx0aGlzLmxlbmd0aCYmdGhp cy53b3Jkc1tlXT49NjcxMDg4NjQ7ZSsrKXRoaXMud29yZHNbZV0tPTY3MTA4ODY0LGU9PT10 aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbZSsxXT0xOnRoaXMud29yZHNbZSsxXSsrO3JldHVy biB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxlKzEpLHRoaXN9LGEucHJvdG90 eXBlLmlzdWJuPWZ1bmN0aW9uKHQpe2lmKG4oIm51bWJlciI9PXR5cGVvZiB0KSxuKHQ8Njcx MDg4NjQpLHQ8MClyZXR1cm4gdGhpcy5pYWRkbigtdCk7aWYoMCE9PXRoaXMubmVnYXRpdmUp cmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKHQpLHRoaXMubmVnYXRpdmU9MSx0 aGlzO2lmKHRoaXMud29yZHNbMF0tPXQsMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBd PDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBm b3IodmFyIGU9MDtlPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW2VdPDA7ZSsrKXRoaXMud29y ZHNbZV0rPTY3MTA4ODY0LHRoaXMud29yZHNbZSsxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgp fSxhLnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaWFk ZG4odCl9LGEucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUo KS5pc3Vibih0KX0sYS5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5l Z2F0aXZlPTAsdGhpc30sYS5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu Y2xvbmUoKS5pYWJzKCl9LGEucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbih0LGUs cil7dmFyIGksYSxvPXQubGVuZ3RoK3I7dGhpcy5fZXhwYW5kKG8pO3ZhciBzPTA7Zm9yKGk9 MDtpPHQubGVuZ3RoO2krKyl7YT0oMHx0aGlzLndvcmRzW2krcl0pK3M7dmFyIGw9KDB8dC53 b3Jkc1tpXSkqZTtzPSgoYS09NjcxMDg4NjMmbCk+PjI2KS0obC82NzEwODg2NHwwKSx0aGlz LndvcmRzW2krcl09NjcxMDg4NjMmYX1mb3IoO2k8dGhpcy5sZW5ndGgtcjtpKyspcz0oYT0o MHx0aGlzLndvcmRzW2krcl0pK3MpPj4yNix0aGlzLndvcmRzW2krcl09NjcxMDg4NjMmYTtp ZigwPT09cylyZXR1cm4gdGhpcy5zdHJpcCgpO2ZvcihuKC0xPT09cykscz0wLGk9MDtpPHRo aXMubGVuZ3RoO2krKylzPShhPS0oMHx0aGlzLndvcmRzW2ldKStzKT4+MjYsdGhpcy53b3Jk c1tpXT02NzEwODg2MyZhO3JldHVybiB0aGlzLm5lZ2F0aXZlPTEsdGhpcy5zdHJpcCgpfSxh LnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbih0LGUpe3ZhciByPSh0aGlzLmxlbmd0aCx0 Lmxlbmd0aCksbj10aGlzLmNsb25lKCksaT10LG89MHxpLndvcmRzW2kubGVuZ3RoLTFdOzAh PT0ocj0yNi10aGlzLl9jb3VudEJpdHMobykpJiYoaT1pLnVzaGxuKHIpLG4uaXVzaGxuKHIp LG89MHxpLndvcmRzW2kubGVuZ3RoLTFdKTt2YXIgcyxsPW4ubGVuZ3RoLWkubGVuZ3RoO2lm KCJtb2QiIT09ZSl7KHM9bmV3IGEobnVsbCkpLmxlbmd0aD1sKzEscy53b3Jkcz1uZXcgQXJy YXkocy5sZW5ndGgpO2Zvcih2YXIgYz0wO2M8cy5sZW5ndGg7YysrKXMud29yZHNbY109MH12 YXIgdT1uLmNsb25lKCkuX2lzaGxuc3VibXVsKGksMSxsKTswPT09dS5uZWdhdGl2ZSYmKG49 dSxzJiYocy53b3Jkc1tsXT0xKSk7Zm9yKHZhciBmPWwtMTtmPj0wO2YtLSl7dmFyIGg9Njcx MDg4NjQqKDB8bi53b3Jkc1tpLmxlbmd0aCtmXSkrKDB8bi53b3Jkc1tpLmxlbmd0aCtmLTFd KTtmb3IoaD1NYXRoLm1pbihoL298MCw2NzEwODg2Myksbi5faXNobG5zdWJtdWwoaSxoLGYp OzAhPT1uLm5lZ2F0aXZlOyloLS0sbi5uZWdhdGl2ZT0wLG4uX2lzaGxuc3VibXVsKGksMSxm KSxuLmlzWmVybygpfHwobi5uZWdhdGl2ZV49MSk7cyYmKHMud29yZHNbZl09aCl9cmV0dXJu IHMmJnMuc3RyaXAoKSxuLnN0cmlwKCksImRpdiIhPT1lJiYwIT09ciYmbi5pdXNocm4ociks e2RpdjpzfHxudWxsLG1vZDpufX0sYS5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKHQsZSxy KXtyZXR1cm4gbighdC5pc1plcm8oKSksdGhpcy5pc1plcm8oKT97ZGl2Om5ldyBhKDApLG1v ZDpuZXcgYSgwKX06MCE9PXRoaXMubmVnYXRpdmUmJjA9PT10Lm5lZ2F0aXZlPyhzPXRoaXMu bmVnKCkuZGl2bW9kKHQsZSksIm1vZCIhPT1lJiYoaT1zLmRpdi5uZWcoKSksImRpdiIhPT1l JiYobz1zLm1vZC5uZWcoKSxyJiYwIT09by5uZWdhdGl2ZSYmby5pYWRkKHQpKSx7ZGl2Omks bW9kOm99KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PXQubmVnYXRpdmU/KHM9dGhpcy5kaXZt b2QodC5uZWcoKSxlKSwibW9kIiE9PWUmJihpPXMuZGl2Lm5lZygpKSx7ZGl2OmksbW9kOnMu bW9kfSk6MCE9KHRoaXMubmVnYXRpdmUmdC5uZWdhdGl2ZSk/KHM9dGhpcy5uZWcoKS5kaXZt b2QodC5uZWcoKSxlKSwiZGl2IiE9PWUmJihvPXMubW9kLm5lZygpLHImJjAhPT1vLm5lZ2F0 aXZlJiZvLmlzdWIodCkpLHtkaXY6cy5kaXYsbW9kOm99KTp0Lmxlbmd0aD50aGlzLmxlbmd0 aHx8dGhpcy5jbXAodCk8MD97ZGl2Om5ldyBhKDApLG1vZDp0aGlzfToxPT09dC5sZW5ndGg/ ImRpdiI9PT1lP3tkaXY6dGhpcy5kaXZuKHQud29yZHNbMF0pLG1vZDpudWxsfToibW9kIj09 PWU/e2RpdjpudWxsLG1vZDpuZXcgYSh0aGlzLm1vZG4odC53b3Jkc1swXSkpfTp7ZGl2OnRo aXMuZGl2bih0LndvcmRzWzBdKSxtb2Q6bmV3IGEodGhpcy5tb2RuKHQud29yZHNbMF0pKX06 dGhpcy5fd29yZERpdih0LGUpO3ZhciBpLG8sc30sYS5wcm90b3R5cGUuZGl2PWZ1bmN0aW9u KHQpe3JldHVybiB0aGlzLmRpdm1vZCh0LCJkaXYiLCExKS5kaXZ9LGEucHJvdG90eXBlLm1v ZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kaXZtb2QodCwibW9kIiwhMSkubW9kfSxhLnBy b3RvdHlwZS51bW9kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRpdm1vZCh0LCJtb2QiLCEw KS5tb2R9LGEucHJvdG90eXBlLmRpdlJvdW5kPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGl2 bW9kKHQpO2lmKGUubW9kLmlzWmVybygpKXJldHVybiBlLmRpdjt2YXIgcj0wIT09ZS5kaXYu bmVnYXRpdmU/ZS5tb2QuaXN1Yih0KTplLm1vZCxuPXQudXNocm4oMSksaT10LmFuZGxuKDEp LGE9ci5jbXAobik7cmV0dXJuIGE8MHx8MT09PWkmJjA9PT1hP2UuZGl2OjAhPT1lLmRpdi5u ZWdhdGl2ZT9lLmRpdi5pc3VibigxKTplLmRpdi5pYWRkbigxKX0sYS5wcm90b3R5cGUubW9k bj1mdW5jdGlvbih0KXtuKHQ8PTY3MTA4ODYzKTtmb3IodmFyIGU9KDE8PDI2KSV0LHI9MCxp PXRoaXMubGVuZ3RoLTE7aT49MDtpLS0pcj0oZSpyKygwfHRoaXMud29yZHNbaV0pKSV0O3Jl dHVybiByfSxhLnByb3RvdHlwZS5pZGl2bj1mdW5jdGlvbih0KXtuKHQ8PTY3MTA4ODYzKTtm b3IodmFyIGU9MCxyPXRoaXMubGVuZ3RoLTE7cj49MDtyLS0pe3ZhciBpPSgwfHRoaXMud29y ZHNbcl0pKzY3MTA4ODY0KmU7dGhpcy53b3Jkc1tyXT1pL3R8MCxlPWkldH1yZXR1cm4gdGhp cy5zdHJpcCgpfSxhLnByb3RvdHlwZS5kaXZuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNs b25lKCkuaWRpdm4odCl9LGEucHJvdG90eXBlLmVnY2Q9ZnVuY3Rpb24odCl7bigwPT09dC5u ZWdhdGl2ZSksbighdC5pc1plcm8oKSk7dmFyIGU9dGhpcyxyPXQuY2xvbmUoKTtlPTAhPT1l Lm5lZ2F0aXZlP2UudW1vZCh0KTplLmNsb25lKCk7Zm9yKHZhciBpPW5ldyBhKDEpLG89bmV3 IGEoMCkscz1uZXcgYSgwKSxsPW5ldyBhKDEpLGM9MDtlLmlzRXZlbigpJiZyLmlzRXZlbigp OyllLml1c2hybigxKSxyLml1c2hybigxKSwrK2M7Zm9yKHZhciB1PXIuY2xvbmUoKSxmPWUu Y2xvbmUoKTshZS5pc1plcm8oKTspe2Zvcih2YXIgaD0wLHA9MTswPT0oZS53b3Jkc1swXSZw KSYmaDwyNjsrK2gscDw8PTEpO2lmKGg+MClmb3IoZS5pdXNocm4oaCk7aC0tID4wOykoaS5p c09kZCgpfHxvLmlzT2RkKCkpJiYoaS5pYWRkKHUpLG8uaXN1YihmKSksaS5pdXNocm4oMSks by5pdXNocm4oMSk7Zm9yKHZhciBkPTAsbT0xOzA9PShyLndvcmRzWzBdJm0pJiZkPDI2Oysr ZCxtPDw9MSk7aWYoZD4wKWZvcihyLml1c2hybihkKTtkLS0gPjA7KShzLmlzT2RkKCl8fGwu aXNPZGQoKSkmJihzLmlhZGQodSksbC5pc3ViKGYpKSxzLml1c2hybigxKSxsLml1c2hybigx KTtlLmNtcChyKT49MD8oZS5pc3ViKHIpLGkuaXN1YihzKSxvLmlzdWIobCkpOihyLmlzdWIo ZSkscy5pc3ViKGkpLGwuaXN1YihvKSl9cmV0dXJue2E6cyxiOmwsZ2NkOnIuaXVzaGxuKGMp fX0sYS5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKHQpe24oMD09PXQubmVnYXRpdmUpLG4o IXQuaXNaZXJvKCkpO3ZhciBlPXRoaXMscj10LmNsb25lKCk7ZT0wIT09ZS5uZWdhdGl2ZT9l LnVtb2QodCk6ZS5jbG9uZSgpO2Zvcih2YXIgaSxvPW5ldyBhKDEpLHM9bmV3IGEoMCksbD1y LmNsb25lKCk7ZS5jbXBuKDEpPjAmJnIuY21wbigxKT4wOyl7Zm9yKHZhciBjPTAsdT0xOzA9 PShlLndvcmRzWzBdJnUpJiZjPDI2OysrYyx1PDw9MSk7aWYoYz4wKWZvcihlLml1c2hybihj KTtjLS0gPjA7KW8uaXNPZGQoKSYmby5pYWRkKGwpLG8uaXVzaHJuKDEpO2Zvcih2YXIgZj0w LGg9MTswPT0oci53b3Jkc1swXSZoKSYmZjwyNjsrK2YsaDw8PTEpO2lmKGY+MClmb3Ioci5p dXNocm4oZik7Zi0tID4wOylzLmlzT2RkKCkmJnMuaWFkZChsKSxzLml1c2hybigxKTtlLmNt cChyKT49MD8oZS5pc3ViKHIpLG8uaXN1YihzKSk6KHIuaXN1YihlKSxzLmlzdWIobykpfXJl dHVybihpPTA9PT1lLmNtcG4oMSk/bzpzKS5jbXBuKDApPDAmJmkuaWFkZCh0KSxpfSxhLnBy b3RvdHlwZS5nY2Q9ZnVuY3Rpb24odCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gdC5hYnMo KTtpZih0LmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciBlPXRoaXMuY2xvbmUoKSxy PXQuY2xvbmUoKTtlLm5lZ2F0aXZlPTAsci5uZWdhdGl2ZT0wO2Zvcih2YXIgbj0wO2UuaXNF dmVuKCkmJnIuaXNFdmVuKCk7bisrKWUuaXVzaHJuKDEpLHIuaXVzaHJuKDEpO2Zvcig7Oyl7 Zm9yKDtlLmlzRXZlbigpOyllLml1c2hybigxKTtmb3IoO3IuaXNFdmVuKCk7KXIuaXVzaHJu KDEpO3ZhciBpPWUuY21wKHIpO2lmKGk8MCl7dmFyIGE9ZTtlPXIscj1hfWVsc2UgaWYoMD09 PWl8fDA9PT1yLmNtcG4oMSkpYnJlYWs7ZS5pc3ViKHIpfXJldHVybiByLml1c2hsbihuKX0s YS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lZ2NkKHQpLmEudW1v ZCh0KX0sYS5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PSgxJnRoaXMu d29yZHNbMF0pfSxhLnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiAxPT0oMSZ0 aGlzLndvcmRzWzBdKX0sYS5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24odCl7cmV0dXJuIHRo aXMud29yZHNbMF0mdH0sYS5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24odCl7bigibnVtYmVy Ij09dHlwZW9mIHQpO3ZhciBlPXQlMjYscj0odC1lKS8yNixpPTE8PGU7aWYodGhpcy5sZW5n dGg8PXIpcmV0dXJuIHRoaXMuX2V4cGFuZChyKzEpLHRoaXMud29yZHNbcl18PWksdGhpcztm b3IodmFyIGE9aSxvPXI7MCE9PWEmJm88dGhpcy5sZW5ndGg7bysrKXt2YXIgcz0wfHRoaXMu d29yZHNbb107YT0ocys9YSk+Pj4yNixzJj02NzEwODg2Myx0aGlzLndvcmRzW29dPXN9cmV0 dXJuIDAhPT1hJiYodGhpcy53b3Jkc1tvXT1hLHRoaXMubGVuZ3RoKyspLHRoaXN9LGEucHJv dG90eXBlLmlzWmVybz1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10 aGlzLndvcmRzWzBdfSxhLnByb3RvdHlwZS5jbXBuPWZ1bmN0aW9uKHQpe3ZhciBlLHI9dDww O2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYhcilyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2 ZSYmcilyZXR1cm4gMTtpZih0aGlzLnN0cmlwKCksdGhpcy5sZW5ndGg+MSllPTE7ZWxzZXty JiYodD0tdCksbih0PD02NzEwODg2MywiTnVtYmVyIGlzIHRvbyBiaWciKTt2YXIgaT0wfHRo aXMud29yZHNbMF07ZT1pPT09dD8wOmk8dD8tMToxfXJldHVybiAwIT09dGhpcy5uZWdhdGl2 ZT8wfC1lOmV9LGEucHJvdG90eXBlLmNtcD1mdW5jdGlvbih0KXtpZigwIT09dGhpcy5uZWdh dGl2ZSYmMD09PXQubmVnYXRpdmUpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAh PT10Lm5lZ2F0aXZlKXJldHVybiAxO3ZhciBlPXRoaXMudWNtcCh0KTtyZXR1cm4gMCE9PXRo aXMubmVnYXRpdmU/MHwtZTplfSxhLnByb3RvdHlwZS51Y21wPWZ1bmN0aW9uKHQpe2lmKHRo aXMubGVuZ3RoPnQubGVuZ3RoKXJldHVybiAxO2lmKHRoaXMubGVuZ3RoPHQubGVuZ3RoKXJl dHVybi0xO2Zvcih2YXIgZT0wLHI9dGhpcy5sZW5ndGgtMTtyPj0wO3ItLSl7dmFyIG49MHx0 aGlzLndvcmRzW3JdLGk9MHx0LndvcmRzW3JdO2lmKG4hPT1pKXtuPGk/ZT0tMTpuPmkmJihl PTEpO2JyZWFrfX1yZXR1cm4gZX0sYS5wcm90b3R5cGUuZ3RuPWZ1bmN0aW9uKHQpe3JldHVy biAxPT09dGhpcy5jbXBuKHQpfSxhLnByb3RvdHlwZS5ndD1mdW5jdGlvbih0KXtyZXR1cm4g MT09PXRoaXMuY21wKHQpfSxhLnByb3RvdHlwZS5ndGVuPWZ1bmN0aW9uKHQpe3JldHVybiB0 aGlzLmNtcG4odCk+PTB9LGEucHJvdG90eXBlLmd0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhp cy5jbXAodCk+PTB9LGEucHJvdG90eXBlLmx0bj1mdW5jdGlvbih0KXtyZXR1cm4tMT09PXRo aXMuY21wbih0KX0sYS5wcm90b3R5cGUubHQ9ZnVuY3Rpb24odCl7cmV0dXJuLTE9PT10aGlz LmNtcCh0KX0sYS5wcm90b3R5cGUubHRlbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbXBu KHQpPD0wfSxhLnByb3RvdHlwZS5sdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY21wKHQp PD0wfSxhLnByb3RvdHlwZS5lcW49ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10aGlzLmNtcG4o dCl9LGEucHJvdG90eXBlLmVxPWZ1bmN0aW9uKHQpe3JldHVybiAwPT09dGhpcy5jbXAodCl9 LGEucmVkPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgVCh0KX0sYS5wcm90b3R5cGUudG9SZWQ9 ZnVuY3Rpb24odCl7cmV0dXJuIG4oIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJl ZHVjdGlvbiBjb250ZXh0IiksbigwPT09dGhpcy5uZWdhdGl2ZSwicmVkIHdvcmtzIG9ubHkg d2l0aCBwb3NpdGl2ZXMiKSx0LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQodCl9LGEucHJv dG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnJlZCwiZnJvbVJlZCB3 b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMucmVk LmNvbnZlcnRGcm9tKHRoaXMpfSxhLnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVuY3Rpb24odCl7 cmV0dXJuIHRoaXMucmVkPXQsdGhpc30sYS5wcm90b3R5cGUuZm9yY2VSZWQ9ZnVuY3Rpb24o dCl7cmV0dXJuIG4oIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBj b250ZXh0IiksdGhpcy5fZm9yY2VSZWQodCl9LGEucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlv bih0KXtyZXR1cm4gbih0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVt YmVycyIpLHRoaXMucmVkLmFkZCh0aGlzLHQpfSxhLnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0 aW9uKHQpe3JldHVybiBuKHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQg bnVtYmVycyIpLHRoaXMucmVkLmlhZGQodGhpcyx0KX0sYS5wcm90b3R5cGUucmVkU3ViPWZ1 bmN0aW9uKHQpe3JldHVybiBuKHRoaXMucmVkLCJyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJl ZCBudW1iZXJzIiksdGhpcy5yZWQuc3ViKHRoaXMsdCl9LGEucHJvdG90eXBlLnJlZElTdWI9 ZnVuY3Rpb24odCl7cmV0dXJuIG4odGhpcy5yZWQsInJlZElTdWIgd29ya3Mgb25seSB3aXRo IHJlZCBudW1iZXJzIiksdGhpcy5yZWQuaXN1Yih0aGlzLHQpfSxhLnByb3RvdHlwZS5yZWRT aGw9ZnVuY3Rpb24odCl7cmV0dXJuIG4odGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdp dGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5zaGwodGhpcyx0KX0sYS5wcm90b3R5cGUucmVk TXVsPWZ1bmN0aW9uKHQpe3JldHVybiBuKHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3 aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyx0KSx0aGlzLnJlZC5t dWwodGhpcyx0KX0sYS5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbih0KXtyZXR1cm4gbih0 aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVk Ll92ZXJpZnkyKHRoaXMsdCksdGhpcy5yZWQuaW11bCh0aGlzLHQpfSxhLnByb3RvdHlwZS5y ZWRTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkg d2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNx cih0aGlzKX0sYS5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbigpe3JldHVybiBuKHRoaXMu cmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92 ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIodGhpcyl9LGEucHJvdG90eXBlLnJlZFNxcnQ9 ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnJlZCwicmVkU3FydCB3b3JrcyBvbmx5IHdpdGgg cmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRo aXMpfSxhLnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcy5yZWQs InJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3Zlcmlm eTEodGhpcyksdGhpcy5yZWQuaW52bSh0aGlzKX0sYS5wcm90b3R5cGUucmVkTmVnPWZ1bmN0 aW9uKCl7cmV0dXJuIG4odGhpcy5yZWQsInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51 bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LGEu cHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCYmIXQucmVk LCJyZWRQb3cobm9ybWFsTnVtKSIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVk LnBvdyh0aGlzLHQpfTt2YXIgdj17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1 NTE5Om51bGx9O2Z1bmN0aW9uIHkodCxlKXt0aGlzLm5hbWU9dCx0aGlzLnA9bmV3IGEoZSwx NiksdGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKSx0aGlzLms9bmV3IGEoMSkuaXVzaGxuKHRo aXMubikuaXN1Yih0aGlzLnApLHRoaXMudG1wPXRoaXMuX3RtcCgpfWZ1bmN0aW9uIHgoKXt5 LmNhbGwodGhpcywiazI1NiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZm IGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmIil9ZnVuY3Rpb24gYigpe3ku Y2FsbCh0aGlzLCJwMjI0IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYg MDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEiKX1mdW5jdGlvbiBfKCl7eS5jYWxsKHRoaXMs InAxOTIiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBm ZmZmZmZmZiIpfWZ1bmN0aW9uIHcoKXt5LmNhbGwodGhpcywiMjU1MTkiLCI3ZmZmZmZmZmZm ZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZm ZmVkIil9ZnVuY3Rpb24gVCh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpe3ZhciBlPWEuX3By aW1lKHQpO3RoaXMubT1lLnAsdGhpcy5wcmltZT1lfWVsc2Ugbih0Lmd0bigxKSwibW9kdWx1 cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxIiksdGhpcy5tPXQsdGhpcy5wcmltZT1udWxsfWZ1 bmN0aW9uIGsodCl7VC5jYWxsKHRoaXMsdCksdGhpcy5zaGlmdD10aGlzLm0uYml0TGVuZ3Ro KCksdGhpcy5zaGlmdCUyNiE9MCYmKHRoaXMuc2hpZnQrPTI2LXRoaXMuc2hpZnQlMjYpLHRo aXMucj1uZXcgYSgxKS5pdXNobG4odGhpcy5zaGlmdCksdGhpcy5yMj10aGlzLmltb2QodGhp cy5yLnNxcigpKSx0aGlzLnJpbnY9dGhpcy5yLl9pbnZtcCh0aGlzLm0pLHRoaXMubWludj10 aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSksdGhpcy5taW52PXRo aXMubWludi51bW9kKHRoaXMuciksdGhpcy5taW52PXRoaXMuci5zdWIodGhpcy5taW52KX15 LnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IGEobnVsbCk7cmV0dXJuIHQu d29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSx0fSx5LnByb3RvdHlwZS5p cmVkdWNlPWZ1bmN0aW9uKHQpe3ZhciBlLHI9dDtkb3t0aGlzLnNwbGl0KHIsdGhpcy50bXAp LGU9KHI9KHI9dGhpcy5pbXVsSyhyKSkuaWFkZCh0aGlzLnRtcCkpLmJpdExlbmd0aCgpfXdo aWxlKGU+dGhpcy5uKTt2YXIgbj1lPHRoaXMubj8tMTpyLnVjbXAodGhpcy5wKTtyZXR1cm4g MD09PW4/KHIud29yZHNbMF09MCxyLmxlbmd0aD0xKTpuPjA/ci5pc3ViKHRoaXMucCk6dm9p ZCAwIT09ci5zdHJpcD9yLnN0cmlwKCk6ci5fc3RyaXAoKSxyfSx5LnByb3RvdHlwZS5zcGxp dD1mdW5jdGlvbih0LGUpe3QuaXVzaHJuKHRoaXMubiwwLGUpfSx5LnByb3RvdHlwZS5pbXVs Sz1mdW5jdGlvbih0KXtyZXR1cm4gdC5pbXVsKHRoaXMuayl9LGkoeCx5KSx4LnByb3RvdHlw ZS5zcGxpdD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1NYXRoLm1pbih0Lmxlbmd0aCw5KSxu PTA7bjxyO24rKyllLndvcmRzW25dPXQud29yZHNbbl07aWYoZS5sZW5ndGg9cix0Lmxlbmd0 aDw9OSlyZXR1cm4gdC53b3Jkc1swXT0wLHZvaWQodC5sZW5ndGg9MSk7dmFyIGk9dC53b3Jk c1s5XTtmb3IoZS53b3Jkc1tlLmxlbmd0aCsrXT00MTk0MzAzJmksbj0xMDtuPHQubGVuZ3Ro O24rKyl7dmFyIGE9MHx0LndvcmRzW25dO3Qud29yZHNbbi0xMF09KDQxOTQzMDMmYSk8PDR8 aT4+PjIyLGk9YX1pPj4+PTIyLHQud29yZHNbbi0xMF09aSwwPT09aSYmdC5sZW5ndGg+MTA/ dC5sZW5ndGgtPTEwOnQubGVuZ3RoLT05fSx4LnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbih0 KXt0LndvcmRzW3QubGVuZ3RoXT0wLHQud29yZHNbdC5sZW5ndGgrMV09MCx0Lmxlbmd0aCs9 Mjtmb3IodmFyIGU9MCxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPTB8dC53b3Jkc1tyXTtl Kz05Nzcqbix0LndvcmRzW3JdPTY3MTA4ODYzJmUsZT02NCpuKyhlLzY3MTA4ODY0fDApfXJl dHVybiAwPT09dC53b3Jkc1t0Lmxlbmd0aC0xXSYmKHQubGVuZ3RoLS0sMD09PXQud29yZHNb dC5sZW5ndGgtMV0mJnQubGVuZ3RoLS0pLHR9LGkoYix5KSxpKF8seSksaSh3LHkpLHcucHJv dG90eXBlLmltdWxLPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLHI9MDtyPHQubGVuZ3RoO3Ir Kyl7dmFyIG49MTkqKDB8dC53b3Jkc1tyXSkrZSxpPTY3MTA4ODYzJm47bj4+Pj0yNix0Lndv cmRzW3JdPWksZT1ufXJldHVybiAwIT09ZSYmKHQud29yZHNbdC5sZW5ndGgrK109ZSksdH0s YS5fcHJpbWU9ZnVuY3Rpb24odCl7aWYodlt0XSlyZXR1cm4gdlt0XTt2YXIgZTtpZigiazI1 NiI9PT10KWU9bmV3IHg7ZWxzZSBpZigicDIyNCI9PT10KWU9bmV3IGI7ZWxzZSBpZigicDE5 MiI9PT10KWU9bmV3IF87ZWxzZXtpZigicDI1NTE5IiE9PXQpdGhyb3cgbmV3IEVycm9yKCJV bmtub3duIHByaW1lICIrdCk7ZT1uZXcgd31yZXR1cm4gdlt0XT1lLGV9LFQucHJvdG90eXBl Ll92ZXJpZnkxPWZ1bmN0aW9uKHQpe24oMD09PXQubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5 IHdpdGggcG9zaXRpdmVzIiksbih0LnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVt YmVycyIpfSxULnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbih0LGUpe24oMD09KHQubmVn YXRpdmV8ZS5uZWdhdGl2ZSksInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksbih0 LnJlZCYmdC5yZWQ9PT1lLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIp fSxULnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnByaW1lP3RoaXMu cHJpbWUuaXJlZHVjZSh0KS5fZm9yY2VSZWQodGhpcyk6dC51bW9kKHRoaXMubSkuX2ZvcmNl UmVkKHRoaXMpfSxULnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24odCl7cmV0dXJuIHQuaXNaZXJv KCk/dC5jbG9uZSgpOnRoaXMubS5zdWIodCkuX2ZvcmNlUmVkKHRoaXMpfSxULnByb3RvdHlw ZS5hZGQ9ZnVuY3Rpb24odCxlKXt0aGlzLl92ZXJpZnkyKHQsZSk7dmFyIHI9dC5hZGQoZSk7 cmV0dXJuIHIuY21wKHRoaXMubSk+PTAmJnIuaXN1Yih0aGlzLm0pLHIuX2ZvcmNlUmVkKHRo aXMpfSxULnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKHQsZSl7dGhpcy5fdmVyaWZ5Mih0LGUp O3ZhciByPXQuaWFkZChlKTtyZXR1cm4gci5jbXAodGhpcy5tKT49MCYmci5pc3ViKHRoaXMu bSkscn0sVC5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKHQsZSl7dGhpcy5fdmVyaWZ5Mih0LGUp O3ZhciByPXQuc3ViKGUpO3JldHVybiByLmNtcG4oMCk8MCYmci5pYWRkKHRoaXMubSksci5f Zm9yY2VSZWQodGhpcyl9LFQucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24odCxlKXt0aGlzLl92 ZXJpZnkyKHQsZSk7dmFyIHI9dC5pc3ViKGUpO3JldHVybiByLmNtcG4oMCk8MCYmci5pYWRk KHRoaXMubSkscn0sVC5wcm90b3R5cGUuc2hsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMu X3ZlcmlmeTEodCksdGhpcy5pbW9kKHQudXNobG4oZSkpfSxULnByb3RvdHlwZS5pbXVsPWZ1 bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIodCxlKSx0aGlzLmltb2QodC5pbXVs KGUpKX0sVC5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3Zlcmlm eTIodCxlKSx0aGlzLmltb2QodC5tdWwoZSkpfSxULnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9u KHQpe3JldHVybiB0aGlzLmltdWwodCx0LmNsb25lKCkpfSxULnByb3RvdHlwZS5zcXI9ZnVu Y3Rpb24odCl7cmV0dXJuIHRoaXMubXVsKHQsdCl9LFQucHJvdG90eXBlLnNxcnQ9ZnVuY3Rp b24odCl7aWYodC5pc1plcm8oKSlyZXR1cm4gdC5jbG9uZSgpO3ZhciBlPXRoaXMubS5hbmRs bigzKTtpZihuKGUlMj09MSksMz09PWUpe3ZhciByPXRoaXMubS5hZGQobmV3IGEoMSkpLml1 c2hybigyKTtyZXR1cm4gdGhpcy5wb3codCxyKX1mb3IodmFyIGk9dGhpcy5tLnN1Ym4oMSks bz0wOyFpLmlzWmVybygpJiYwPT09aS5hbmRsbigxKTspbysrLGkuaXVzaHJuKDEpO24oIWku aXNaZXJvKCkpO3ZhciBzPW5ldyBhKDEpLnRvUmVkKHRoaXMpLGw9cy5yZWROZWcoKSxjPXRo aXMubS5zdWJuKDEpLml1c2hybigxKSx1PXRoaXMubS5iaXRMZW5ndGgoKTtmb3IodT1uZXcg YSgyKnUqdSkudG9SZWQodGhpcyk7MCE9PXRoaXMucG93KHUsYykuY21wKGwpOyl1LnJlZElB ZGQobCk7Zm9yKHZhciBmPXRoaXMucG93KHUsaSksaD10aGlzLnBvdyh0LGkuYWRkbigxKS5p dXNocm4oMSkpLHA9dGhpcy5wb3codCxpKSxkPW87MCE9PXAuY21wKHMpOyl7Zm9yKHZhciBt PXAsZz0wOzAhPT1tLmNtcChzKTtnKyspbT1tLnJlZFNxcigpO24oZzxkKTt2YXIgdj10aGlz LnBvdyhmLG5ldyBhKDEpLml1c2hsbihkLWctMSkpO2g9aC5yZWRNdWwodiksZj12LnJlZFNx cigpLHA9cC5yZWRNdWwoZiksZD1nfXJldHVybiBofSxULnByb3RvdHlwZS5pbnZtPWZ1bmN0 aW9uKHQpe3ZhciBlPXQuX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT1lLm5lZ2F0aXZlPyhl Lm5lZ2F0aXZlPTAsdGhpcy5pbW9kKGUpLnJlZE5lZygpKTp0aGlzLmltb2QoZSl9LFQucHJv dG90eXBlLnBvdz1mdW5jdGlvbih0LGUpe2lmKGUuaXNaZXJvKCkpcmV0dXJuIG5ldyBhKDEp LnRvUmVkKHRoaXMpO2lmKDA9PT1lLmNtcG4oMSkpcmV0dXJuIHQuY2xvbmUoKTt2YXIgcj1u ZXcgQXJyYXkoMTYpO3JbMF09bmV3IGEoMSkudG9SZWQodGhpcyksclsxXT10O2Zvcih2YXIg bj0yO248ci5sZW5ndGg7bisrKXJbbl09dGhpcy5tdWwocltuLTFdLHQpO3ZhciBpPXJbMF0s bz0wLHM9MCxsPWUuYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT1sJiYobD0yNiksbj1lLmxlbmd0 aC0xO24+PTA7bi0tKXtmb3IodmFyIGM9ZS53b3Jkc1tuXSx1PWwtMTt1Pj0wO3UtLSl7dmFy IGY9Yz4+dSYxO2khPT1yWzBdJiYoaT10aGlzLnNxcihpKSksMCE9PWZ8fDAhPT1vPyhvPDw9 MSxvfD1mLCg0PT09KytzfHwwPT09biYmMD09PXUpJiYoaT10aGlzLm11bChpLHJbb10pLHM9 MCxvPTApKTpzPTB9bD0yNn1yZXR1cm4gaX0sVC5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0 aW9uKHQpe3ZhciBlPXQudW1vZCh0aGlzLm0pO3JldHVybiBlPT09dD9lLmNsb25lKCk6ZX0s VC5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24odCl7dmFyIGU9dC5jbG9uZSgpO3Jl dHVybiBlLnJlZD1udWxsLGV9LGEubW9udD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGsodCl9 LGkoayxUKSxrLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMu aW1vZCh0LnVzaGxuKHRoaXMuc2hpZnQpKX0say5wcm90b3R5cGUuY29udmVydEZyb209ZnVu Y3Rpb24odCl7dmFyIGU9dGhpcy5pbW9kKHQubXVsKHRoaXMucmludikpO3JldHVybiBlLnJl ZD1udWxsLGV9LGsucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24odCxlKXtpZih0LmlzWmVybygp fHxlLmlzWmVybygpKXJldHVybiB0LndvcmRzWzBdPTAsdC5sZW5ndGg9MSx0O3ZhciByPXQu aW11bChlKSxuPXIubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRo aXMuc2hpZnQpLm11bCh0aGlzLm0pLGk9ci5pc3ViKG4pLml1c2hybih0aGlzLnNoaWZ0KSxh PWk7cmV0dXJuIGkuY21wKHRoaXMubSk+PTA/YT1pLmlzdWIodGhpcy5tKTppLmNtcG4oMCk8 MCYmKGE9aS5pYWRkKHRoaXMubSkpLGEuX2ZvcmNlUmVkKHRoaXMpfSxrLnByb3RvdHlwZS5t dWw9ZnVuY3Rpb24odCxlKXtpZih0LmlzWmVybygpfHxlLmlzWmVybygpKXJldHVybiBuZXcg YSgwKS5fZm9yY2VSZWQodGhpcyk7dmFyIHI9dC5tdWwoZSksbj1yLm1hc2tuKHRoaXMuc2hp ZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxpPXIu aXN1YihuKS5pdXNocm4odGhpcy5zaGlmdCksbz1pO3JldHVybiBpLmNtcCh0aGlzLm0pPj0w P289aS5pc3ViKHRoaXMubSk6aS5jbXBuKDApPDAmJihvPWkuaWFkZCh0aGlzLm0pKSxvLl9m b3JjZVJlZCh0aGlzKX0say5wcm90b3R5cGUuaW52bT1mdW5jdGlvbih0KXtyZXR1cm4gdGhp cy5pbW9kKHQuX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKS5fZm9yY2VSZWQodGhpcyl9 fSh2b2lkIDA9PT1lfHxlLHRoaXMpfSx7YnVmZmVyOjJ9XSwzNDpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGUscixuLGk9dC5sZW5n dGgsYT0wO2ZvcihlPTA7ZTxpOysrZSlhKz10W2VdLmxlbmd0aDt2YXIgbz1uZXcgQXJyYXko YSkscz0wO2ZvcihlPTA7ZTxpOysrZSl7dmFyIGw9dFtlXSxjPWwubGVuZ3RoO2ZvcihyPTA7 cjxjOysrcil7dmFyIHU9b1tzKytdPW5ldyBBcnJheShjLTEpLGY9MDtmb3Iobj0wO248Yzsr K24pbiE9PXImJih1W2YrK109bFtuXSk7aWYoMSZyKXt2YXIgaD11WzFdO3VbMV09dVswXSx1 WzBdPWh9fX1yZXR1cm4gb319LHt9XSwzNTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtj YXNlIDE6cmV0dXJuIGYodCk7Y2FzZSAyOnJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlP2Mo dCx0LGUsITApOmgodCxlKTtjYXNlIDM6cmV0dXJuIGModCxlLHIsITEpO2RlZmF1bHQ6dGhy b3cgbmV3IEVycm9yKCJib3gtaW50ZXJzZWN0OiBJbnZhbGlkIGFyZ3VtZW50cyIpfX07dmFy IG4saT10KCJ0eXBlZGFycmF5LXBvb2wiKSxhPXQoIi4vbGliL3N3ZWVwIiksbz10KCIuL2xp Yi9pbnRlcnNlY3QiKTtmdW5jdGlvbiBzKHQsZSl7Zm9yKHZhciByPTA7cjx0OysrcilpZigh KGVbcl08PWVbcit0XSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gbCh0LGUscixuKXtm b3IodmFyIGk9MCxhPTAsbz0wLGw9dC5sZW5ndGg7bzxsOysrbyl7dmFyIGM9dFtvXTtpZigh cyhlLGMpKXtmb3IodmFyIHU9MDt1PDIqZTsrK3UpcltpKytdPWNbdV07blthKytdPW99fXJl dHVybiBhfWZ1bmN0aW9uIGModCxlLHIsbil7dmFyIHM9dC5sZW5ndGgsYz1lLmxlbmd0aDtp ZighKHM8PTB8fGM8PTApKXt2YXIgdT10WzBdLmxlbmd0aD4+PjE7aWYoISh1PD0wKSl7dmFy IGYsaD1pLm1hbGxvY0RvdWJsZSgyKnUqcykscD1pLm1hbGxvY0ludDMyKHMpO2lmKChzPWwo dCx1LGgscCkpPjApe2lmKDE9PT11JiZuKWEuaW5pdChzKSxmPWEuc3dlZXBDb21wbGV0ZSh1 LHIsMCxzLGgscCwwLHMsaCxwKTtlbHNle3ZhciBkPWkubWFsbG9jRG91YmxlKDIqdSpjKSxt PWkubWFsbG9jSW50MzIoYyk7KGM9bChlLHUsZCxtKSk+MCYmKGEuaW5pdChzK2MpLGY9MT09 PXU/YS5zd2VlcEJpcGFydGl0ZSh1LHIsMCxzLGgscCwwLGMsZCxtKTpvKHUscixuLHMsaCxw LGMsZCxtKSxpLmZyZWUoZCksaS5mcmVlKG0pKX1pLmZyZWUoaCksaS5mcmVlKHApfXJldHVy biBmfX19ZnVuY3Rpb24gdSh0LGUpe24ucHVzaChbdCxlXSl9ZnVuY3Rpb24gZih0KXtyZXR1 cm4gbj1bXSxjKHQsdCx1LCEwKSxufWZ1bmN0aW9uIGgodCxlKXtyZXR1cm4gbj1bXSxjKHQs ZSx1LCExKSxufX0seyIuL2xpYi9pbnRlcnNlY3QiOjM3LCIuL2xpYi9zd2VlcCI6NDEsInR5 cGVkYXJyYXktcG9vbCI6MzA4fV0sMzY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 ZnVuY3Rpb24gbih0KXtyZXR1cm4gdD9mdW5jdGlvbih0LGUscixuLGksYSxvLHMsbCxjLHUp e3JldHVybiBpLW4+bC1zP2Z1bmN0aW9uKHQsZSxyLG4saSxhLG8scyxsLGMsdSl7Zm9yKHZh ciBmPTIqdCxoPW4scD1mKm47aDxpOysraCxwKz1mKXt2YXIgZD1hW2UrcF0sbT1hW2UrcCt0 XSxnPW9baF07dDpmb3IodmFyIHY9cyx5PWYqczt2PGw7Kyt2LHkrPWYpe3ZhciB4PWNbZSt5 XSxiPWNbZSt5K3RdLF89dVt2XTtpZighKGI8ZHx8bTx4KSl7Zm9yKHZhciB3PWUrMTt3PHQ7 Kyt3KXt2YXIgVD1hW3crcF0saz1hW3crdCtwXSxBPWNbdyt5XSxNPWNbdyt0K3ldO2lmKGs8 QXx8TTxUKWNvbnRpbnVlIHR9dmFyIFM9cihnLF8pO2lmKHZvaWQgMCE9PVMpcmV0dXJuIFN9 fX19KHQsZSxyLG4saSxhLG8scyxsLGMsdSk6ZnVuY3Rpb24odCxlLHIsbixpLGEsbyxzLGws Yyx1KXtmb3IodmFyIGY9Mip0LGg9cyxwPWYqcztoPGw7KytoLHArPWYpe3ZhciBkPWNbZStw XSxtPWNbZStwK3RdLGc9dVtoXTt0OmZvcih2YXIgdj1uLHk9ZipuO3Y8aTsrK3YseSs9Zil7 dmFyIHg9YVtlK3ldLGI9YVtlK3krdF0sXz1vW3ZdO2lmKCEobTx4fHxiPGQpKXtmb3IodmFy IHc9ZSsxO3c8dDsrK3cpe3ZhciBUPWFbdyt5XSxrPWFbdyt0K3ldLEE9Y1t3K3BdLE09Y1t3 K3QrcF07aWYoazxBfHxNPFQpY29udGludWUgdH12YXIgUz1yKF8sZyk7aWYodm9pZCAwIT09 UylyZXR1cm4gU319fX0odCxlLHIsbixpLGEsbyxzLGwsYyx1KX06ZnVuY3Rpb24odCxlLHIs bixpLGEsbyxzLGwsYyx1LGYpe3JldHVybiBhLWk+Yy1sP24/ZnVuY3Rpb24odCxlLHIsbixp LGEsbyxzLGwsYyx1KXtmb3IodmFyIGY9Mip0LGg9bixwPWYqbjtoPGk7KytoLHArPWYpe3Zh ciBkPWFbZStwXSxtPWFbZStwK3RdLGc9b1toXTt0OmZvcih2YXIgdj1zLHk9ZipzO3Y8bDsr K3YseSs9Zil7dmFyIHg9Y1tlK3ldLGI9dVt2XTtpZighKHg8PWR8fG08eCkpe2Zvcih2YXIg Xz1lKzE7Xzx0OysrXyl7dmFyIHc9YVtfK3BdLFQ9YVtfK3QrcF0saz1jW18reV0sQT1jW18r dCt5XTtpZihUPGt8fEE8dyljb250aW51ZSB0fXZhciBNPXIoYixnKTtpZih2b2lkIDAhPT1N KXJldHVybiBNfX19fSh0LGUscixpLGEsbyxzLGwsYyx1LGYpOmZ1bmN0aW9uKHQsZSxyLG4s aSxhLG8scyxsLGMsdSl7Zm9yKHZhciBmPTIqdCxoPW4scD1mKm47aDxpOysraCxwKz1mKXt2 YXIgZD1hW2UrcF0sbT1hW2UrcCt0XSxnPW9baF07dDpmb3IodmFyIHY9cyx5PWYqczt2PGw7 Kyt2LHkrPWYpe3ZhciB4PWNbZSt5XSxiPXVbdl07aWYoISh4PGR8fG08eCkpe2Zvcih2YXIg Xz1lKzE7Xzx0OysrXyl7dmFyIHc9YVtfK3BdLFQ9YVtfK3QrcF0saz1jW18reV0sQT1jW18r dCt5XTtpZihUPGt8fEE8dyljb250aW51ZSB0fXZhciBNPXIoZyxiKTtpZih2b2lkIDAhPT1N KXJldHVybiBNfX19fSh0LGUscixpLGEsbyxzLGwsYyx1LGYpOm4/ZnVuY3Rpb24odCxlLHIs bixpLGEsbyxzLGwsYyx1KXtmb3IodmFyIGY9Mip0LGg9cyxwPWYqcztoPGw7KytoLHArPWYp e3ZhciBkPWNbZStwXSxtPXVbaF07dDpmb3IodmFyIGc9bix2PWYqbjtnPGk7KytnLHYrPWYp e3ZhciB5PWFbZSt2XSx4PWFbZSt2K3RdLGI9b1tnXTtpZighKGQ8PXl8fHg8ZCkpe2Zvcih2 YXIgXz1lKzE7Xzx0OysrXyl7dmFyIHc9YVtfK3ZdLFQ9YVtfK3Qrdl0saz1jW18rcF0sQT1j W18rdCtwXTtpZihUPGt8fEE8dyljb250aW51ZSB0fXZhciBNPXIobSxiKTtpZih2b2lkIDAh PT1NKXJldHVybiBNfX19fSh0LGUscixpLGEsbyxzLGwsYyx1LGYpOmZ1bmN0aW9uKHQsZSxy LG4saSxhLG8scyxsLGMsdSl7Zm9yKHZhciBmPTIqdCxoPXMscD1mKnM7aDxsOysraCxwKz1m KXt2YXIgZD1jW2UrcF0sbT11W2hdO3Q6Zm9yKHZhciBnPW4sdj1mKm47ZzxpOysrZyx2Kz1m KXt2YXIgeT1hW2Urdl0seD1hW2Urdit0XSxiPW9bZ107aWYoIShkPHl8fHg8ZCkpe2Zvcih2 YXIgXz1lKzE7Xzx0OysrXyl7dmFyIHc9YVtfK3ZdLFQ9YVtfK3Qrdl0saz1jW18rcF0sQT1j W18rdCtwXTtpZihUPGt8fEE8dyljb250aW51ZSB0fXZhciBNPXIoYixtKTtpZih2b2lkIDAh PT1NKXJldHVybiBNfX19fSh0LGUscixpLGEsbyxzLGwsYyx1LGYpfX1yLnBhcnRpYWw9bigh MSksci5mdWxsPW4oITApfSx7fV0sMzc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGEsdSx3LFQsayxBKXshZnVuY3Rpb24odCxlKXt2 YXIgcj04KmkubG9nMihlKzEpKih0KzEpfDAsYT1pLm5leHRQb3cyKDYqcik7di5sZW5ndGg8 YSYmKG4uZnJlZSh2KSx2PW4ubWFsbG9jSW50MzIoYSkpO3ZhciBvPWkubmV4dFBvdzIoMipy KTt5Lmxlbmd0aDxvJiYobi5mcmVlKHkpLHk9bi5tYWxsb2NEb3VibGUobykpfSh0LGErVCk7 dmFyIE0sUz0wLEU9Mip0O3goUysrLDAsMCxhLDAsVCxyPzE2OjAsLTEvMCwxLzApLHJ8fHgo UysrLDAsMCxULDAsYSwxLC0xLzAsMS8wKTtmb3IoO1M+MDspe3ZhciBMPTYqKFMtPTEpLEM9 dltMXSxQPXZbTCsxXSxJPXZbTCsyXSxPPXZbTCszXSx6PXZbTCs0XSxEPXZbTCs1XSxSPTIq UyxGPXlbUl0sQj15W1IrMV0sTj0xJkQsaj0hISgxNiZEKSxVPXUsVj13LEg9ayxxPUE7aWYo TiYmKFU9ayxWPUEsSD11LHE9dyksISgyJkQmJihJPXAodCxDLFAsSSxVLFYsQiksUD49SSl8 fDQmRCYmKFA9ZCh0LEMsUCxJLFUsVixGKSk+PUkpKXt2YXIgRz1JLVAsWT16LU87aWYoail7 aWYodCpHKihHK1kpPDE8PDIyKXtpZih2b2lkIDAhPT0oTT1sLnNjYW5Db21wbGV0ZSh0LEMs ZSxQLEksVSxWLE8seixILHEpKSlyZXR1cm4gTTtjb250aW51ZX19ZWxzZXtpZih0Kk1hdGgu bWluKEcsWSk8MTI4KXtpZih2b2lkIDAhPT0oTT1vKHQsQyxlLE4sUCxJLFUsVixPLHosSCxx KSkpcmV0dXJuIE07Y29udGludWV9aWYodCpHKlk8MTw8MjIpe2lmKHZvaWQgMCE9PShNPWwu c2NhbkJpcGFydGl0ZSh0LEMsZSxOLFAsSSxVLFYsTyx6LEgscSkpKXJldHVybiBNO2NvbnRp bnVlfX12YXIgVz1mKHQsQyxQLEksVSxWLEYsQik7aWYoUDxXKWlmKHQqKFctUCk8MTI4KXtp Zih2b2lkIDAhPT0oTT1zKHQsQysxLGUsUCxXLFUsVixPLHosSCxxKSkpcmV0dXJuIE19ZWxz ZSBpZihDPT09dC0yKXtpZih2b2lkIDAhPT0oTT1OP2wuc3dlZXBCaXBhcnRpdGUodCxlLE8s eixILHEsUCxXLFUsVik6bC5zd2VlcEJpcGFydGl0ZSh0LGUsUCxXLFUsVixPLHosSCxxKSkp cmV0dXJuIE19ZWxzZSB4KFMrKyxDKzEsUCxXLE8seixOLC0xLzAsMS8wKSx4KFMrKyxDKzEs Tyx6LFAsVywxXk4sLTEvMCwxLzApO2lmKFc8SSl7dmFyIFg9Yyh0LEMsTyx6LEgscSksWj1I W0UqWCtDXSxKPWgodCxDLFgseixILHEsWik7aWYoSjx6JiZ4KFMrKyxDLFcsSSxKLHosKDR8 TikrKGo/MTY6MCksWixCKSxPPFgmJngoUysrLEMsVyxJLE8sWCwoMnxOKSsoaj8xNjowKSxG LFopLFgrMT09PUope2lmKHZvaWQgMCE9PShNPWo/Xyh0LEMsZSxXLEksVSxWLFgsSCxxW1hd KTpiKHQsQyxlLE4sVyxJLFUsVixYLEgscVtYXSkpKXJldHVybiBNfWVsc2UgaWYoWDxKKXt2 YXIgSztpZihqKXtpZihLPW0odCxDLFcsSSxVLFYsWiksVzxLKXt2YXIgUT1oKHQsQyxXLEss VSxWLFopO2lmKEM9PT10LTIpe2lmKFc8USYmdm9pZCAwIT09KE09bC5zd2VlcENvbXBsZXRl KHQsZSxXLFEsVSxWLFgsSixILHEpKSlyZXR1cm4gTTtpZihRPEsmJnZvaWQgMCE9PShNPWwu c3dlZXBCaXBhcnRpdGUodCxlLFEsSyxVLFYsWCxKLEgscSkpKXJldHVybiBNfWVsc2UgVzxR JiZ4KFMrKyxDKzEsVyxRLFgsSiwxNiwtMS8wLDEvMCksUTxLJiYoeChTKyssQysxLFEsSyxY LEosMCwtMS8wLDEvMCkseChTKyssQysxLFgsSixRLEssMSwtMS8wLDEvMCkpfX1lbHNlIEs9 Tj9nKHQsQyxXLEksVSxWLFopOm0odCxDLFcsSSxVLFYsWiksVzxLJiYoQz09PXQtMj9NPU4/ bC5zd2VlcEJpcGFydGl0ZSh0LGUsWCxKLEgscSxXLEssVSxWKTpsLnN3ZWVwQmlwYXJ0aXRl KHQsZSxXLEssVSxWLFgsSixILHEpOih4KFMrKyxDKzEsVyxLLFgsSixOLC0xLzAsMS8wKSx4 KFMrKyxDKzEsWCxKLFcsSywxXk4sLTEvMCwxLzApKSl9fX19fTt2YXIgbj10KCJ0eXBlZGFy cmF5LXBvb2wiKSxpPXQoImJpdC10d2lkZGxlIiksYT10KCIuL2JydXRlIiksbz1hLnBhcnRp YWwscz1hLmZ1bGwsbD10KCIuL3N3ZWVwIiksYz10KCIuL21lZGlhbiIpLHU9dCgiLi9wYXJ0 aXRpb24iKSxmPXUoIiEobG8+PXAwKSYmIShwMT49aGkpIiksaD11KCJsbz09PXAwIikscD11 KCJsbzxwMCIpLGQ9dSgiaGk8PXAwIiksbT11KCJsbzw9cDAmJnAwPD1oaSIpLGc9dSgibG88 cDAmJnAwPD1oaSIpLHY9bi5tYWxsb2NJbnQzMigxMDI0KSx5PW4ubWFsbG9jRG91YmxlKDEw MjQpO2Z1bmN0aW9uIHgodCxlLHIsbixpLGEsbyxzLGwpe3ZhciBjPTYqdDt2W2NdPWUsdltj KzFdPXIsdltjKzJdPW4sdltjKzNdPWksdltjKzRdPWEsdltjKzVdPW87dmFyIHU9Mip0O3lb dV09cyx5W3UrMV09bH1mdW5jdGlvbiBiKHQsZSxyLG4saSxhLG8scyxsLGMsdSl7dmFyIGY9 Mip0LGg9bCpmLHA9Y1toK2VdO3Q6Zm9yKHZhciBkPWksbT1pKmY7ZDxhOysrZCxtKz1mKXt2 YXIgZz1vW20rZV0sdj1vW20rZSt0XTtpZighKHA8Z3x8djxwKSYmKCFufHxwIT09Zykpe2Zv cih2YXIgeSx4PXNbZF0sYj1lKzE7Yjx0OysrYil7Zz1vW20rYl0sdj1vW20rYit0XTt2YXIg Xz1jW2grYl0sdz1jW2grYit0XTtpZih2PF98fHc8Zyljb250aW51ZSB0fWlmKHZvaWQgMCE9 PSh5PW4/cih1LHgpOnIoeCx1KSkpcmV0dXJuIHl9fX1mdW5jdGlvbiBfKHQsZSxyLG4saSxh LG8scyxsLGMpe3ZhciB1PTIqdCxmPXMqdSxoPWxbZitlXTt0OmZvcih2YXIgcD1uLGQ9bip1 O3A8aTsrK3AsZCs9dSl7dmFyIG09b1twXTtpZihtIT09Yyl7dmFyIGc9YVtkK2VdLHY9YVtk K2UrdF07aWYoIShoPGd8fHY8aCkpe2Zvcih2YXIgeT1lKzE7eTx0OysreSl7Zz1hW2QreV0s dj1hW2QreSt0XTt2YXIgeD1sW2YreV0sYj1sW2YreSt0XTtpZih2PHh8fGI8Zyljb250aW51 ZSB0fXZhciBfPXIobSxjKTtpZih2b2lkIDAhPT1fKXJldHVybiBffX19fX0seyIuL2JydXRl IjozNiwiLi9tZWRpYW4iOjM4LCIuL3BhcnRpdGlvbiI6MzksIi4vc3dlZXAiOjQxLCJiaXQt dHdpZGRsZSI6MzIsInR5cGVkYXJyYXktcG9vbCI6MzA4fV0sMzg6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGEsbyxzKXtpZihhPD1y KzEpcmV0dXJuIHI7dmFyIGw9cixjPWEsdT1hK3I+Pj4xLGY9Mip0LGg9dSxwPW9bZip1K2Vd O2Zvcig7bDxjOyl7aWYoYy1sPDgpe2kodCxlLGwsYyxvLHMpLHA9b1tmKnUrZV07YnJlYWt9 dmFyIGQ9Yy1sLG09TWF0aC5yYW5kb20oKSpkK2x8MCxnPW9bZiptK2VdLHY9TWF0aC5yYW5k b20oKSpkK2x8MCx5PW9bZip2K2VdLHg9TWF0aC5yYW5kb20oKSpkK2x8MCxiPW9bZip4K2Vd O2c8PXk/Yj49eT8oaD12LHA9eSk6Zz49Yj8oaD1tLHA9Zyk6KGg9eCxwPWIpOnk+PWI/KGg9 dixwPXkpOmI+PWc/KGg9bSxwPWcpOihoPXgscD1iKTtmb3IodmFyIF89ZiooYy0xKSx3PWYq aCxUPTA7VDxmOysrVCwrK18sKyt3KXt2YXIgaz1vW19dO29bX109b1t3XSxvW3ddPWt9dmFy IEE9c1tjLTFdO3NbYy0xXT1zW2hdLHNbaF09QSxoPW4odCxlLGwsYy0xLG8scyxwKTtmb3Io Xz1mKihjLTEpLHc9ZipoLFQ9MDtUPGY7KytULCsrXywrK3cpe2s9b1tfXTtvW19dPW9bd10s b1t3XT1rfUE9c1tjLTFdO2lmKHNbYy0xXT1zW2hdLHNbaF09QSx1PGgpe2ZvcihjPWgtMTts PGMmJm9bZiooYy0xKStlXT09PXA7KWMtPTE7Yys9MX1lbHNle2lmKCEoaDx1KSlicmVhaztm b3IobD1oKzE7bDxjJiZvW2YqbCtlXT09PXA7KWwrPTF9fXJldHVybiBuKHQsZSxyLHUsbyxz LG9bZip1K2VdKX07dmFyIG49dCgiLi9wYXJ0aXRpb24iKSgibG88cDAiKTtmdW5jdGlvbiBp KHQsZSxyLG4saSxhKXtmb3IodmFyIG89Mip0LHM9byoocisxKStlLGw9cisxO2w8bjsrK2ws cys9bylmb3IodmFyIGM9aVtzXSx1PWwsZj1vKihsLTEpO3U+ciYmaVtmK2VdPmM7LS11LGYt PW8pe2Zvcih2YXIgaD1mLHA9ZitvLGQ9MDtkPG87KytkLCsraCwrK3Ape3ZhciBtPWlbaF07 aVtoXT1pW3BdLGlbcF09bX12YXIgZz1hW3VdO2FbdV09YVt1LTFdLGFbdS0xXT1nfX19LHsi Li9wYXJ0aXRpb24iOjM5fV0sMzk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5l eHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBuW3RdfTt2YXIgbj17ImxvPT09cDAiOmZ1bmN0 aW9uKHQsZSxyLG4saSxhLG8pe2Zvcih2YXIgcz0yKnQsbD1zKnIsYz1sLHU9cixmPWUsaD1y O24+aDsrK2gsbCs9cyl7aWYoaVtsK2ZdPT09bylpZih1PT09aCl1Kz0xLGMrPXM7ZWxzZXtm b3IodmFyIHA9MDtzPnA7KytwKXt2YXIgZD1pW2wrcF07aVtsK3BdPWlbY10saVtjKytdPWR9 dmFyIG09YVtoXTthW2hdPWFbdV0sYVt1KytdPW19fXJldHVybiB1fSwibG88cDAiOmZ1bmN0 aW9uKHQsZSxyLG4saSxhLG8pe2Zvcih2YXIgcz0yKnQsbD1zKnIsYz1sLHU9cixmPWUsaD1y O24+aDsrK2gsbCs9cyl7aWYoaVtsK2ZdPG8paWYodT09PWgpdSs9MSxjKz1zO2Vsc2V7Zm9y KHZhciBwPTA7cz5wOysrcCl7dmFyIGQ9aVtsK3BdO2lbbCtwXT1pW2NdLGlbYysrXT1kfXZh ciBtPWFbaF07YVtoXT1hW3VdLGFbdSsrXT1tfX1yZXR1cm4gdX0sImxvPD1wMCI6ZnVuY3Rp b24odCxlLHIsbixpLGEsbyl7Zm9yKHZhciBzPTIqdCxsPXMqcixjPWwsdT1yLGY9dCtlLGg9 cjtuPmg7KytoLGwrPXMpe2lmKGlbbCtmXTw9bylpZih1PT09aCl1Kz0xLGMrPXM7ZWxzZXtm b3IodmFyIHA9MDtzPnA7KytwKXt2YXIgZD1pW2wrcF07aVtsK3BdPWlbY10saVtjKytdPWR9 dmFyIG09YVtoXTthW2hdPWFbdV0sYVt1KytdPW19fXJldHVybiB1fSwiaGk8PXAwIjpmdW5j dGlvbih0LGUscixuLGksYSxvKXtmb3IodmFyIHM9Mip0LGw9cypyLGM9bCx1PXIsZj10K2Us aD1yO24+aDsrK2gsbCs9cyl7aWYoaVtsK2ZdPD1vKWlmKHU9PT1oKXUrPTEsYys9cztlbHNl e2Zvcih2YXIgcD0wO3M+cDsrK3Ape3ZhciBkPWlbbCtwXTtpW2wrcF09aVtjXSxpW2MrK109 ZH12YXIgbT1hW2hdO2FbaF09YVt1XSxhW3UrK109bX19cmV0dXJuIHV9LCJsbzxwMCYmcDA8 PWhpIjpmdW5jdGlvbih0LGUscixuLGksYSxvKXtmb3IodmFyIHM9Mip0LGw9cypyLGM9bCx1 PXIsZj1lLGg9dCtlLHA9cjtuPnA7KytwLGwrPXMpe3ZhciBkPWlbbCtmXSxtPWlbbCtoXTtp ZihkPG8mJm88PW0paWYodT09PXApdSs9MSxjKz1zO2Vsc2V7Zm9yKHZhciBnPTA7cz5nOysr Zyl7dmFyIHY9aVtsK2ddO2lbbCtnXT1pW2NdLGlbYysrXT12fXZhciB5PWFbcF07YVtwXT1h W3VdLGFbdSsrXT15fX1yZXR1cm4gdX0sImxvPD1wMCYmcDA8PWhpIjpmdW5jdGlvbih0LGUs cixuLGksYSxvKXtmb3IodmFyIHM9Mip0LGw9cypyLGM9bCx1PXIsZj1lLGg9dCtlLHA9cjtu PnA7KytwLGwrPXMpe3ZhciBkPWlbbCtmXSxtPWlbbCtoXTtpZihkPD1vJiZvPD1tKWlmKHU9 PT1wKXUrPTEsYys9cztlbHNle2Zvcih2YXIgZz0wO3M+ZzsrK2cpe3ZhciB2PWlbbCtnXTtp W2wrZ109aVtjXSxpW2MrK109dn12YXIgeT1hW3BdO2FbcF09YVt1XSxhW3UrK109eX19cmV0 dXJuIHV9LCIhKGxvPj1wMCkmJiEocDE+PWhpKSI6ZnVuY3Rpb24odCxlLHIsbixpLGEsbyxz KXtmb3IodmFyIGw9Mip0LGM9bCpyLHU9YyxmPXIsaD1lLHA9dCtlLGQ9cjtuPmQ7KytkLGMr PWwpe3ZhciBtPWlbYytoXSxnPWlbYytwXTtpZighKG0+PW98fHM+PWcpKWlmKGY9PT1kKWYr PTEsdSs9bDtlbHNle2Zvcih2YXIgdj0wO2w+djsrK3Ype3ZhciB5PWlbYyt2XTtpW2Mrdl09 aVt1XSxpW3UrK109eX12YXIgeD1hW2RdO2FbZF09YVtmXSxhW2YrK109eH19cmV0dXJuIGZ9 fX0se31dLDQwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5j dGlvbih0LGUpe2U8PTEyOD9uKDAsZS0xLHQpOmZ1bmN0aW9uIHQoZSxyLHUpe3ZhciBmPShy LWUrMSkvNnwwLGg9ZStmLHA9ci1mLGQ9ZStyPj4xLG09ZC1mLGc9ZCtmLHY9aCx5PW0seD1k LGI9ZyxfPXAsdz1lKzEsVD1yLTEsaz0wO2wodix5LHUpJiYoaz12LHY9eSx5PWspO2woYixf LHUpJiYoaz1iLGI9XyxfPWspO2wodix4LHUpJiYoaz12LHY9eCx4PWspO2woeSx4LHUpJiYo az15LHk9eCx4PWspO2wodixiLHUpJiYoaz12LHY9YixiPWspO2woeCxiLHUpJiYoaz14LHg9 YixiPWspO2woeSxfLHUpJiYoaz15LHk9XyxfPWspO2woeSx4LHUpJiYoaz15LHk9eCx4PWsp O2woYixfLHUpJiYoaz1iLGI9XyxfPWspO2Zvcih2YXIgQT11WzIqeV0sTT11WzIqeSsxXSxT PXVbMipiXSxFPXVbMipiKzFdLEw9Mip2LEM9Mip4LFA9MipfLEk9MipoLE89MipkLHo9Mipw LEQ9MDtEPDI7KytEKXt2YXIgUj11W0wrRF0sRj11W0MrRF0sQj11W1ArRF07dVtJK0RdPVIs dVtPK0RdPUYsdVt6K0RdPUJ9YShtLGUsdSksYShnLHIsdSk7Zm9yKHZhciBOPXc7Tjw9VDsr K04paWYoYyhOLEEsTSx1KSlOIT09dyYmaShOLHcsdSksKyt3O2Vsc2UgaWYoIWMoTixTLEUs dSkpZm9yKDs7KXtpZihjKFQsUyxFLHUpKXtjKFQsQSxNLHUpPyhvKE4sdyxULHUpLCsrdywt LVQpOihpKE4sVCx1KSwtLVQpO2JyZWFrfWlmKC0tVDxOKWJyZWFrfXMoZSx3LTEsQSxNLHUp LHMocixUKzEsUyxFLHUpLHctMi1lPD0zMj9uKGUsdy0yLHUpOnQoZSx3LTIsdSk7ci0oVCsy KTw9MzI/bihUKzIscix1KTp0KFQrMixyLHUpO1Qtdzw9MzI/bih3LFQsdSk6dCh3LFQsdSl9 KDAsZS0xLHQpfTtmdW5jdGlvbiBuKHQsZSxyKXtmb3IodmFyIG49MioodCsxKSxpPXQrMTtp PD1lOysraSl7Zm9yKHZhciBhPXJbbisrXSxvPXJbbisrXSxzPWksbD1uLTI7cy0tID50Oyl7 dmFyIGM9cltsLTJdLHU9cltsLTFdO2lmKGM8YSlicmVhaztpZihjPT09YSYmdTxvKWJyZWFr O3JbbF09YyxyW2wrMV09dSxsLT0yfXJbbF09YSxyW2wrMV09b319ZnVuY3Rpb24gaSh0LGUs cil7ZSo9Mjt2YXIgbj1yW3QqPTJdLGk9clt0KzFdO3JbdF09cltlXSxyW3QrMV09cltlKzFd LHJbZV09bixyW2UrMV09aX1mdW5jdGlvbiBhKHQsZSxyKXtlKj0yLHJbdCo9Ml09cltlXSxy W3QrMV09cltlKzFdfWZ1bmN0aW9uIG8odCxlLHIsbil7ZSo9MixyKj0yO3ZhciBpPW5bdCo9 Ml0sYT1uW3QrMV07blt0XT1uW2VdLG5bdCsxXT1uW2UrMV0sbltlXT1uW3JdLG5bZSsxXT1u W3IrMV0sbltyXT1pLG5bcisxXT1hfWZ1bmN0aW9uIHModCxlLHIsbixpKXtlKj0yLGlbdCo9 Ml09aVtlXSxpW2VdPXIsaVt0KzFdPWlbZSsxXSxpW2UrMV09bn1mdW5jdGlvbiBsKHQsZSxy KXtlKj0yO3ZhciBuPXJbdCo9Ml0saT1yW2VdO3JldHVybiEobjxpKSYmKG4hPT1pfHxyW3Qr MV0+cltlKzFdKX1mdW5jdGlvbiBjKHQsZSxyLG4pe3ZhciBpPW5bdCo9Ml07cmV0dXJuIGk8 ZXx8aT09PWUmJm5bdCsxXTxyfX0se31dLDQxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO2UuZXhwb3J0cz17aW5pdDpmdW5jdGlvbih0KXt2YXIgZT1pLm5leHRQb3cyKHQpO28u bGVuZ3RoPGUmJihuLmZyZWUobyksbz1uLm1hbGxvY0ludDMyKGUpKTtzLmxlbmd0aDxlJiYo bi5mcmVlKHMpLHM9bi5tYWxsb2NJbnQzMihlKSk7bC5sZW5ndGg8ZSYmKG4uZnJlZShsKSxs PW4ubWFsbG9jSW50MzIoZSkpO2MubGVuZ3RoPGUmJihuLmZyZWUoYyksYz1uLm1hbGxvY0lu dDMyKGUpKTt1Lmxlbmd0aDxlJiYobi5mcmVlKHUpLHU9bi5tYWxsb2NJbnQzMihlKSk7Zi5s ZW5ndGg8ZSYmKG4uZnJlZShmKSxmPW4ubWFsbG9jSW50MzIoZSkpO3ZhciByPTgqZTtoLmxl bmd0aDxyJiYobi5mcmVlKGgpLGg9bi5tYWxsb2NEb3VibGUocikpfSxzd2VlcEJpcGFydGl0 ZTpmdW5jdGlvbih0LGUscixuLGksdSxmLG0sZyx2KXtmb3IodmFyIHk9MCx4PTIqdCxiPXQt MSxfPXgtMSx3PXI7dzxuOysrdyl7dmFyIFQ9dVt3XSxrPXgqdztoW3krK109aVtrK2JdLGhb eSsrXT0tKFQrMSksaFt5KytdPWlbaytfXSxoW3krK109VH1mb3Iodz1mO3c8bTsrK3cpe1Q9 dlt3XSsoMTw8MjgpO3ZhciBBPXgqdztoW3krK109Z1tBK2JdLGhbeSsrXT0tVCxoW3krK109 Z1tBK19dLGhbeSsrXT1UfXZhciBNPXk+Pj4xO2EoaCxNKTt2YXIgUz0wLEU9MDtmb3Iodz0w O3c8TTsrK3cpe3ZhciBMPTB8aFsyKncrMV07aWYoTD49MTw8MjgpcChsLGMsRS0tLEw9TC0o MTw8MjgpfDApO2Vsc2UgaWYoTD49MClwKG8scyxTLS0sTCk7ZWxzZSBpZihMPD0tKDE8PDI4 KSl7TD0tTC0oMTw8MjgpfDA7Zm9yKHZhciBDPTA7QzxTOysrQyl7aWYodm9pZCAwIT09KFA9 ZShvW0NdLEwpKSlyZXR1cm4gUH1kKGwsYyxFKyssTCl9ZWxzZXtMPS1MLTF8MDtmb3IoQz0w O0M8RTsrK0Mpe3ZhciBQO2lmKHZvaWQgMCE9PShQPWUoTCxsW0NdKSkpcmV0dXJuIFB9ZChv LHMsUysrLEwpfX19LHN3ZWVwQ29tcGxldGU6ZnVuY3Rpb24odCxlLHIsbixpLG0sZyx2LHks eCl7Zm9yKHZhciBiPTAsXz0yKnQsdz10LTEsVD1fLTEsaz1yO2s8bjsrK2spe3ZhciBBPW1b a10rMTw8MSxNPV8qaztoW2IrK109aVtNK3ddLGhbYisrXT0tQSxoW2IrK109aVtNK1RdLGhb YisrXT1BfWZvcihrPWc7azx2Oysrayl7QT14W2tdKzE8PDE7dmFyIFM9XyprO2hbYisrXT15 W1Mrd10saFtiKytdPTF8LUEsaFtiKytdPXlbUytUXSxoW2IrK109MXxBfXZhciBFPWI+Pj4x O2EoaCxFKTt2YXIgTD0wLEM9MCxQPTA7Zm9yKGs9MDtrPEU7KytrKXt2YXIgST0wfGhbMipr KzFdLE89MSZJO2lmKGs8RS0xJiZJPj4xPT1oWzIqayszXT4+MSYmKE89MixrKz0xKSxJPDAp e2Zvcih2YXIgej0tKEk+PjEpLTEsRD0wO0Q8UDsrK0Qpe2lmKHZvaWQgMCE9PShSPWUodVtE XSx6KSkpcmV0dXJuIFJ9aWYoMCE9PU8pZm9yKEQ9MDtEPEw7KytEKXtpZih2b2lkIDAhPT0o Uj1lKG9bRF0seikpKXJldHVybiBSfWlmKDEhPT1PKWZvcihEPTA7RDxDOysrRCl7dmFyIFI7 aWYodm9pZCAwIT09KFI9ZShsW0RdLHopKSlyZXR1cm4gUn0wPT09Tz9kKG8scyxMKysseik6 MT09PU8/ZChsLGMsQysrLHopOjI9PT1PJiZkKHUsZixQKysseil9ZWxzZXt6PShJPj4xKS0x OzA9PT1PP3AobyxzLEwtLSx6KToxPT09Tz9wKGwsYyxDLS0seik6Mj09PU8mJnAodSxmLFAt LSx6KX19fSxzY2FuQmlwYXJ0aXRlOmZ1bmN0aW9uKHQsZSxyLG4saSxsLGMsdSxmLG0sZyx2 KXt2YXIgeT0wLHg9Mip0LGI9ZSxfPWUrdCx3PTEsVD0xO24/VD0xPDwyODp3PTE8PDI4O2Zv cih2YXIgaz1pO2s8bDsrK2spe3ZhciBBPWsrdyxNPXgqaztoW3krK109Y1tNK2JdLGhbeSsr XT0tQSxoW3krK109Y1tNK19dLGhbeSsrXT1BfWZvcihrPWY7azxtOysrayl7QT1rK1Q7dmFy IFM9eCprO2hbeSsrXT1nW1MrYl0saFt5KytdPS1BfXZhciBFPXk+Pj4xO2EoaCxFKTt2YXIg TD0wO2ZvcihrPTA7azxFOysrayl7dmFyIEM9MHxoWzIqaysxXTtpZihDPDApe3ZhciBQPSEx O2lmKChBPS1DKT49MTw8Mjg/KFA9IW4sQS09MTw8MjgpOihQPSEhbixBLT0xKSxQKWQobyxz LEwrKyxBKTtlbHNle3ZhciBJPXZbQV0sTz14KkEsej1nW08rZSsxXSxEPWdbTytlKzErdF07 dDpmb3IodmFyIFI9MDtSPEw7KytSKXt2YXIgRj1vW1JdLEI9eCpGO2lmKCEoRDxjW0IrZSsx XXx8Y1tCK2UrMSt0XTx6KSl7Zm9yKHZhciBOPWUrMjtOPHQ7KytOKWlmKGdbTytOK3RdPGNb QitOXXx8Y1tCK04rdF08Z1tPK05dKWNvbnRpbnVlIHQ7dmFyIGosVT11W0ZdO2lmKHZvaWQg MCE9PShqPW4/cihJLFUpOnIoVSxJKSkpcmV0dXJuIGp9fX19ZWxzZSBwKG8scyxMLS0sQy13 KX19LHNjYW5Db21wbGV0ZTpmdW5jdGlvbih0LGUscixuLGkscyxsLGMsdSxmLHApe2Zvcih2 YXIgZD0wLG09Mip0LGc9ZSx2PWUrdCx5PW47eTxpOysreSl7dmFyIHg9eSsoMTw8MjgpLGI9 bSp5O2hbZCsrXT1zW2IrZ10saFtkKytdPS14LGhbZCsrXT1zW2Irdl0saFtkKytdPXh9Zm9y KHk9Yzt5PHU7Kyt5KXt4PXkrMTt2YXIgXz1tKnk7aFtkKytdPWZbXytnXSxoW2QrK109LXh9 dmFyIHc9ZD4+PjE7YShoLHcpO3ZhciBUPTA7Zm9yKHk9MDt5PHc7Kyt5KXt2YXIgaz0wfGhb Mip5KzFdO2lmKGs8MCl7aWYoKHg9LWspPj0xPDwyOClvW1QrK109eC0oMTw8MjgpO2Vsc2V7 dmFyIEE9cFt4LT0xXSxNPW0qeCxTPWZbTStlKzFdLEU9ZltNK2UrMSt0XTt0OmZvcih2YXIg TD0wO0w8VDsrK0wpe3ZhciBDPW9bTF0sUD1sW0NdO2lmKFA9PT1BKWJyZWFrO3ZhciBJPW0q QztpZighKEU8c1tJK2UrMV18fHNbSStlKzErdF08Uykpe2Zvcih2YXIgTz1lKzI7Tzx0Oysr TylpZihmW00rTyt0XTxzW0krT118fHNbSStPK3RdPGZbTStPXSljb250aW51ZSB0O3ZhciB6 PXIoUCxBKTtpZih2b2lkIDAhPT16KXJldHVybiB6fX19fWVsc2V7Zm9yKHg9ay0oMTw8Mjgp LEw9VC0xO0w+PTA7LS1MKWlmKG9bTF09PT14KXtmb3IoTz1MKzE7TzxUOysrTylvW08tMV09 b1tPXTticmVha30tLVR9fX19O3ZhciBuPXQoInR5cGVkYXJyYXktcG9vbCIpLGk9dCgiYml0 LXR3aWRkbGUiKSxhPXQoIi4vc29ydCIpLG89bi5tYWxsb2NJbnQzMigxMDI0KSxzPW4ubWFs bG9jSW50MzIoMTAyNCksbD1uLm1hbGxvY0ludDMyKDEwMjQpLGM9bi5tYWxsb2NJbnQzMigx MDI0KSx1PW4ubWFsbG9jSW50MzIoMTAyNCksZj1uLm1hbGxvY0ludDMyKDEwMjQpLGg9bi5t YWxsb2NEb3VibGUoODE5Mik7ZnVuY3Rpb24gcCh0LGUscixuKXt2YXIgaT1lW25dLGE9dFty LTFdO3RbaV09YSxlW2FdPWl9ZnVuY3Rpb24gZCh0LGUscixuKXt0W3JdPW4sZVtuXT1yfX0s eyIuL3NvcnQiOjQwLCJiaXQtdHdpZGRsZSI6MzIsInR5cGVkYXJyYXktcG9vbCI6MzA4fV0s NDI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9saWIvbW9ub3Rv bmUiKSxpPXQoIi4vbGliL3RyaWFuZ3VsYXRpb24iKSxhPXQoIi4vbGliL2RlbGF1bmF5Iiks bz10KCIuL2xpYi9maWx0ZXIiKTtmdW5jdGlvbiBzKHQpe3JldHVybltNYXRoLm1pbih0WzBd LHRbMV0pLE1hdGgubWF4KHRbMF0sdFsxXSldfWZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gdFsw XS1lWzBdfHx0WzFdLWVbMV19ZnVuY3Rpb24gYyh0LGUscil7cmV0dXJuIGUgaW4gdD90W2Vd OnJ9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtBcnJheS5pc0FycmF5KGUpPyhyPXJ8fHt9 LGU9ZXx8W10pOihyPWV8fHt9LGU9W10pO3ZhciB1PSEhYyhyLCJkZWxhdW5heSIsITApLGY9 ISFjKHIsImludGVyaW9yIiwhMCksaD0hIWMociwiZXh0ZXJpb3IiLCEwKSxwPSEhYyhyLCJp bmZpbml0eSIsITEpO2lmKCFmJiYhaHx8MD09PXQubGVuZ3RoKXJldHVybltdO3ZhciBkPW4o dCxlKTtpZih1fHxmIT09aHx8cCl7Zm9yKHZhciBtPWkodC5sZW5ndGgsZnVuY3Rpb24odCl7 cmV0dXJuIHQubWFwKHMpLnNvcnQobCl9KGUpKSxnPTA7ZzxkLmxlbmd0aDsrK2cpe3ZhciB2 PWRbZ107bS5hZGRUcmlhbmdsZSh2WzBdLHZbMV0sdlsyXSl9cmV0dXJuIHUmJmEodCxtKSxo P2Y/cD9vKG0sMCxwKTptLmNlbGxzKCk6byhtLDEscCk6byhtLC0xKX1yZXR1cm4gZH19LHsi Li9saWIvZGVsYXVuYXkiOjQzLCIuL2xpYi9maWx0ZXIiOjQ0LCIuL2xpYi9tb25vdG9uZSI6 NDUsIi4vbGliL3RyaWFuZ3VsYXRpb24iOjQ2fV0sNDM6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgicm9idXN0LWluLXNwaGVyZSIpWzRdO3QoImJpbmFyeS1zZWFy Y2gtYm91bmRzIik7ZnVuY3Rpb24gaSh0LGUscixpLGEsbyl7dmFyIHM9ZS5vcHBvc2l0ZShp LGEpO2lmKCEoczwwKSl7aWYoYTxpKXt2YXIgbD1pO2k9YSxhPWwsbD1vLG89cyxzPWx9ZS5p c0NvbnN0cmFpbnQoaSxhKXx8bih0W2ldLHRbYV0sdFtvXSx0W3NdKTwwJiZyLnB1c2goaSxh KX19ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPVtdLGE9dC5sZW5ndGgsbz1l LnN0YXJzLHM9MDtzPGE7KytzKWZvcih2YXIgbD1vW3NdLGM9MTtjPGwubGVuZ3RoO2MrPTIp e2lmKCEoKHA9bFtjXSk8cykmJiFlLmlzQ29uc3RyYWludChzLHApKXtmb3IodmFyIHU9bFtj LTFdLGY9LTEsaD0xO2g8bC5sZW5ndGg7aCs9MilpZihsW2gtMV09PT1wKXtmPWxbaF07YnJl YWt9ZjwwfHxuKHRbc10sdFtwXSx0W3VdLHRbZl0pPDAmJnIucHVzaChzLHApfX1mb3IoO3Iu bGVuZ3RoPjA7KXtmb3IodmFyIHA9ci5wb3AoKSxkPShzPXIucG9wKCksdT0tMSxmPS0xLGw9 b1tzXSwxKTtkPGwubGVuZ3RoO2QrPTIpe3ZhciBtPWxbZC0xXSxnPWxbZF07bT09PXA/Zj1n Omc9PT1wJiYodT1tKX11PDB8fGY8MHx8KG4odFtzXSx0W3BdLHRbdV0sdFtmXSk+PTB8fChl LmZsaXAocyxwKSxpKHQsZSxyLHUscyxmKSxpKHQsZSxyLHMsZix1KSxpKHQsZSxyLGYscCx1 KSxpKHQsZSxyLHAsdSxmKSkpfX19LHsiYmluYXJ5LXNlYXJjaC1ib3VuZHMiOjMxLCJyb2J1 c3QtaW4tc3BoZXJlIjoyODJ9XSw0NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbixpPXQoImJpbmFyeS1zZWFyY2gtYm91bmRzIik7ZnVuY3Rpb24gYSh0LGUscixuLGks YSxvKXt0aGlzLmNlbGxzPXQsdGhpcy5uZWlnaGJvcj1lLHRoaXMuZmxhZ3M9bix0aGlzLmNv bnN0cmFpbnQ9cix0aGlzLmFjdGl2ZT1pLHRoaXMubmV4dD1hLHRoaXMuYm91bmRhcnk9b31m dW5jdGlvbiBvKHQsZSl7cmV0dXJuIHRbMF0tZVswXXx8dFsxXS1lWzFdfHx0WzJdLWVbMl19 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1mdW5jdGlvbih0LGUpe2Zvcih2YXIg cj10LmNlbGxzKCksbj1yLmxlbmd0aCxpPTA7aTxuOysraSl7dmFyIHM9KHY9cltpXSlbMF0s bD12WzFdLGM9dlsyXTtsPGM/bDxzJiYodlswXT1sLHZbMV09Yyx2WzJdPXMpOmM8cyYmKHZb MF09Yyx2WzFdPXMsdlsyXT1sKX1yLnNvcnQobyk7dmFyIHU9bmV3IEFycmF5KG4pO2Zvcihp PTA7aTx1Lmxlbmd0aDsrK2kpdVtpXT0wO3ZhciBmPVtdLGg9W10scD1uZXcgQXJyYXkoMypu KSxkPW5ldyBBcnJheSgzKm4pLG09bnVsbDtlJiYobT1bXSk7dmFyIGc9bmV3IGEocixwLGQs dSxmLGgsbSk7Zm9yKGk9MDtpPG47KytpKWZvcih2YXIgdj1yW2ldLHk9MDt5PDM7Kyt5KXtz PXZbeV0sbD12Wyh5KzEpJTNdO3ZhciB4PXBbMyppK3ldPWcubG9jYXRlKGwscyx0Lm9wcG9z aXRlKGwscykpLGI9ZFszKmkreV09dC5pc0NvbnN0cmFpbnQocyxsKTt4PDAmJihiP2gucHVz aChpKTooZi5wdXNoKGkpLHVbaV09MSksZSYmbS5wdXNoKFtsLHMsLTFdKSl9cmV0dXJuIGd9 KHQscik7aWYoMD09PWUpcmV0dXJuIHI/bi5jZWxscy5jb25jYXQobi5ib3VuZGFyeSk6bi5j ZWxsczt2YXIgaT0xLHM9bi5hY3RpdmUsbD1uLm5leHQsYz1uLmZsYWdzLHU9bi5jZWxscyxm PW4uY29uc3RyYWludCxoPW4ubmVpZ2hib3I7Zm9yKDtzLmxlbmd0aD4wfHxsLmxlbmd0aD4w Oyl7Zm9yKDtzLmxlbmd0aD4wOyl7dmFyIHA9cy5wb3AoKTtpZihjW3BdIT09LWkpe2NbcF09 aTt1W3BdO2Zvcih2YXIgZD0wO2Q8MzsrK2Qpe3ZhciBtPWhbMypwK2RdO20+PTAmJjA9PT1j W21dJiYoZlszKnArZF0/bC5wdXNoKG0pOihzLnB1c2gobSksY1ttXT1pKSl9fX12YXIgZz1s O2w9cyxzPWcsbC5sZW5ndGg9MCxpPS1pfXZhciB2PWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFy IG49MCxpPTA7aTx0Lmxlbmd0aDsrK2kpZVtpXT09PXImJih0W24rK109dFtpXSk7cmV0dXJu IHQubGVuZ3RoPW4sdH0odSxjLGUpO2lmKHIpcmV0dXJuIHYuY29uY2F0KG4uYm91bmRhcnkp O3JldHVybiB2fSxhLnByb3RvdHlwZS5sb2NhdGU9KG49WzAsMCwwXSxmdW5jdGlvbih0LGUs cil7dmFyIGE9dCxzPWUsbD1yO3JldHVybiBlPHI/ZTx0JiYoYT1lLHM9cixsPXQpOnI8dCYm KGE9cixzPXQsbD1lKSxhPDA/LTE6KG5bMF09YSxuWzFdPXMsblsyXT1sLGkuZXEodGhpcy5j ZWxscyxuLG8pKX0pfSx7ImJpbmFyeS1zZWFyY2gtYm91bmRzIjozMX1dLDQ1OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImJpbmFyeS1zZWFyY2gtYm91bmRzIiks aT10KCJyb2J1c3Qtb3JpZW50YXRpb24iKVszXTtmdW5jdGlvbiBhKHQsZSxyLG4saSl7dGhp cy5hPXQsdGhpcy5iPWUsdGhpcy5pZHg9cix0aGlzLmxvd2VySWRzPW4sdGhpcy51cHBlcklk cz1pfWZ1bmN0aW9uIG8odCxlLHIsbil7dGhpcy5hPXQsdGhpcy5iPWUsdGhpcy50eXBlPXIs dGhpcy5pZHg9bn1mdW5jdGlvbiBzKHQsZSl7dmFyIHI9dC5hWzBdLWUuYVswXXx8dC5hWzFd LWUuYVsxXXx8dC50eXBlLWUudHlwZTtyZXR1cm4gcnx8KDAhPT10LnR5cGUmJihyPWkodC5h LHQuYixlLmIpKT9yOnQuaWR4LWUuaWR4KX1mdW5jdGlvbiBsKHQsZSl7cmV0dXJuIGkodC5h LHQuYixlKX1mdW5jdGlvbiBjKHQsZSxyLGEsbyl7Zm9yKHZhciBzPW4ubHQoZSxhLGwpLGM9 bi5ndChlLGEsbCksdT1zO3U8YzsrK3Upe2Zvcih2YXIgZj1lW3VdLGg9Zi5sb3dlcklkcyxw PWgubGVuZ3RoO3A+MSYmaShyW2hbcC0yXV0scltoW3AtMV1dLGEpPjA7KXQucHVzaChbaFtw LTFdLGhbcC0yXSxvXSkscC09MTtoLmxlbmd0aD1wLGgucHVzaChvKTt2YXIgZD1mLnVwcGVy SWRzO2ZvcihwPWQubGVuZ3RoO3A+MSYmaShyW2RbcC0yXV0scltkW3AtMV1dLGEpPDA7KXQu cHVzaChbZFtwLTJdLGRbcC0xXSxvXSkscC09MTtkLmxlbmd0aD1wLGQucHVzaChvKX19ZnVu Y3Rpb24gdSh0LGUpe3ZhciByO3JldHVybihyPXQuYVswXTxlLmFbMF0/aSh0LmEsdC5iLGUu YSk6aShlLmIsZS5hLHQuYSkpP3I6KHI9ZS5iWzBdPHQuYlswXT9pKHQuYSx0LmIsZS5iKTpp KGUuYixlLmEsdC5iKSl8fHQuaWR4LWUuaWR4fWZ1bmN0aW9uIGYodCxlLHIpe3ZhciBpPW4u bGUodCxyLHUpLG89dFtpXSxzPW8udXBwZXJJZHMsbD1zW3MubGVuZ3RoLTFdO28udXBwZXJJ ZHM9W2xdLHQuc3BsaWNlKGkrMSwwLG5ldyBhKHIuYSxyLmIsci5pZHgsW2xdLHMpKX1mdW5j dGlvbiBoKHQsZSxyKXt2YXIgaT1yLmE7ci5hPXIuYixyLmI9aTt2YXIgYT1uLmVxKHQscix1 KSxvPXRbYV07dFthLTFdLnVwcGVySWRzPW8udXBwZXJJZHMsdC5zcGxpY2UoYSwxKX1lLmV4 cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGgsbj1lLmxlbmd0aCxpPVtd LGw9MDtsPHI7KytsKWkucHVzaChuZXcgbyh0W2xdLG51bGwsMCxsKSk7Zm9yKGw9MDtsPG47 KytsKXt2YXIgdT1lW2xdLHA9dFt1WzBdXSxkPXRbdVsxXV07cFswXTxkWzBdP2kucHVzaChu ZXcgbyhwLGQsMixsKSxuZXcgbyhkLHAsMSxsKSk6cFswXT5kWzBdJiZpLnB1c2gobmV3IG8o ZCxwLDIsbCksbmV3IG8ocCxkLDEsbCkpfWkuc29ydChzKTtmb3IodmFyIG09aVswXS5hWzBd LSgxK01hdGguYWJzKGlbMF0uYVswXSkpKk1hdGgucG93KDIsLTUyKSxnPVtuZXcgYShbbSwx XSxbbSwwXSwtMSxbXSxbXSxbXSxbXSldLHY9W10seT0obD0wLGkubGVuZ3RoKTtsPHk7Kyts KXt2YXIgeD1pW2xdLGI9eC50eXBlOzA9PT1iP2ModixnLHQseC5hLHguaWR4KToyPT09Yj9m KGcsdCx4KTpoKGcsdCx4KX1yZXR1cm4gdn19LHsiYmluYXJ5LXNlYXJjaC1ib3VuZHMiOjMx LCJyb2J1c3Qtb3JpZW50YXRpb24iOjI4NH1dLDQ2OltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO3ZhciBuPXQoImJpbmFyeS1zZWFyY2gtYm91bmRzIik7ZnVuY3Rpb24gaSh0LGUp e3RoaXMuc3RhcnM9dCx0aGlzLmVkZ2VzPWV9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9y KHZhciByPW5ldyBBcnJheSh0KSxuPTA7bjx0OysrbilyW25dPVtdO3JldHVybiBuZXcgaShy LGUpfTt2YXIgYT1pLnByb3RvdHlwZTtmdW5jdGlvbiBvKHQsZSxyKXtmb3IodmFyIG49MSxp PXQubGVuZ3RoO248aTtuKz0yKWlmKHRbbi0xXT09PWUmJnRbbl09PT1yKXJldHVybiB0W24t MV09dFtpLTJdLHRbbl09dFtpLTFdLHZvaWQodC5sZW5ndGg9aS0yKX1hLmlzQ29uc3RyYWlu dD1mdW5jdGlvbigpe3ZhciB0PVswLDBdO2Z1bmN0aW9uIGUodCxlKXtyZXR1cm4gdFswXS1l WzBdfHx0WzFdLWVbMV19cmV0dXJuIGZ1bmN0aW9uKHIsaSl7cmV0dXJuIHRbMF09TWF0aC5t aW4ocixpKSx0WzFdPU1hdGgubWF4KHIsaSksbi5lcSh0aGlzLmVkZ2VzLHQsZSk+PTB9fSgp LGEucmVtb3ZlVHJpYW5nbGU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMuc3RhcnM7byhu W3RdLGUsciksbyhuW2VdLHIsdCksbyhuW3JdLHQsZSl9LGEuYWRkVHJpYW5nbGU9ZnVuY3Rp b24odCxlLHIpe3ZhciBuPXRoaXMuc3RhcnM7blt0XS5wdXNoKGUsciksbltlXS5wdXNoKHIs dCksbltyXS5wdXNoKHQsZSl9LGEub3Bwb3NpdGU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9 dGhpcy5zdGFyc1tlXSxuPTEsaT1yLmxlbmd0aDtuPGk7bis9MilpZihyW25dPT09dClyZXR1 cm4gcltuLTFdO3JldHVybi0xfSxhLmZsaXA9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLm9w cG9zaXRlKHQsZSksbj10aGlzLm9wcG9zaXRlKGUsdCk7dGhpcy5yZW1vdmVUcmlhbmdsZSh0 LGUsciksdGhpcy5yZW1vdmVUcmlhbmdsZShlLHQsbiksdGhpcy5hZGRUcmlhbmdsZSh0LG4s ciksdGhpcy5hZGRUcmlhbmdsZShlLHIsbil9LGEuZWRnZXM9ZnVuY3Rpb24oKXtmb3IodmFy IHQ9dGhpcy5zdGFycyxlPVtdLHI9MCxuPXQubGVuZ3RoO3I8bjsrK3IpZm9yKHZhciBpPXRb cl0sYT0wLG89aS5sZW5ndGg7YTxvO2ErPTIpZS5wdXNoKFtpW2FdLGlbYSsxXV0pO3JldHVy biBlfSxhLmNlbGxzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuc3RhcnMsZT1bXSxyPTAs bj10Lmxlbmd0aDtyPG47KytyKWZvcih2YXIgaT10W3JdLGE9MCxvPWkubGVuZ3RoO2E8bzth Kz0yKXt2YXIgcz1pW2FdLGw9aVthKzFdO3I8TWF0aC5taW4ocyxsKSYmZS5wdXNoKFtyLHMs bF0pfXJldHVybiBlfX0seyJiaW5hcnktc2VhcmNoLWJvdW5kcyI6MzF9XSw0NzpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBl PTEscj0xO3I8dC5sZW5ndGg7KytyKWZvcih2YXIgbj0wO248cjsrK24paWYodFtyXTx0W25d KWU9LWU7ZWxzZSBpZih0W25dPT09dFtyXSlyZXR1cm4gMDtyZXR1cm4gZX19LHt9XSw0ODpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJkdXAiKSxpPXQoInJvYnVz dC1saW5lYXItc29sdmUiKTtmdW5jdGlvbiBhKHQsZSl7Zm9yKHZhciByPTAsbj10Lmxlbmd0 aCxpPTA7aTxuOysraSlyKz10W2ldKmVbaV07cmV0dXJuIHJ9ZnVuY3Rpb24gbyh0KXt2YXIg ZT10Lmxlbmd0aDtpZigwPT09ZSlyZXR1cm5bXTt0WzBdLmxlbmd0aDt2YXIgcj1uKFt0Lmxl bmd0aCsxLHQubGVuZ3RoKzFdLDEpLG89bihbdC5sZW5ndGgrMV0sMSk7cltlXVtlXT0wO2Zv cih2YXIgcz0wO3M8ZTsrK3Mpe2Zvcih2YXIgbD0wO2w8PXM7KytsKXJbbF1bc109cltzXVts XT0yKmEodFtzXSx0W2xdKTtvW3NdPWEodFtzXSx0W3NdKX12YXIgYz1pKHIsbyksdT0wLGY9 Y1tlKzFdO2ZvcihzPTA7czxmLmxlbmd0aDsrK3MpdSs9ZltzXTt2YXIgaD1uZXcgQXJyYXko ZSk7Zm9yKHM9MDtzPGU7KytzKXtmPWNbc107dmFyIHA9MDtmb3IobD0wO2w8Zi5sZW5ndGg7 KytsKXArPWZbbF07aFtzXT1wL3V9cmV0dXJuIGh9ZnVuY3Rpb24gcyh0KXtpZigwPT09dC5s ZW5ndGgpcmV0dXJuW107Zm9yKHZhciBlPXRbMF0ubGVuZ3RoLHI9bihbZV0pLGk9byh0KSxh PTA7YTx0Lmxlbmd0aDsrK2EpZm9yKHZhciBzPTA7czxlOysrcylyW3NdKz10W2FdW3NdKmlb YV07cmV0dXJuIHJ9cy5iYXJ5Y2VuZXRyaWM9byxlLmV4cG9ydHM9c30se2R1cDo2NSwicm9i dXN0LWxpbmVhci1zb2x2ZSI6MjgzfV0sNDk6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9 ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW4odCkscj0wLGk9MDtpPHQubGVuZ3RoOysraSlmb3Io dmFyIGE9dFtpXSxvPTA7bzxlLmxlbmd0aDsrK28pcis9TWF0aC5wb3coYVtvXS1lW29dLDIp O3JldHVybiBNYXRoLnNxcnQoci90Lmxlbmd0aCl9O3ZhciBuPXQoImNpcmN1bWNlbnRlciIp fSx7Y2lyY3VtY2VudGVyOjQ4fV0sNTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbjtpZihyKXtuPWU7Zm9yKHZhciBpPW5l dyBBcnJheShlLmxlbmd0aCksYT0wO2E8ZS5sZW5ndGg7KythKXt2YXIgbz1lW2FdO2lbYV09 W29bMF0sb1sxXSxyW2FdXX1lPWl9dmFyIHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWQodCxb XSxwKHQpKTtyZXR1cm4gdihlLG4sciksISFufSh0LGUsISFyKTtmb3IoO3kodCxlLCEhcik7 KXM9ITA7aWYociYmcyl7bi5sZW5ndGg9MCxyLmxlbmd0aD0wO2ZvcihhPTA7YTxlLmxlbmd0 aDsrK2Epe289ZVthXTtuLnB1c2goW29bMF0sb1sxXV0pLHIucHVzaChvWzJdKX19cmV0dXJu IHN9O3ZhciBuPXQoInVuaW9uLWZpbmQiKSxpPXQoImJveC1pbnRlcnNlY3QiKSxhPXQoInJv YnVzdC1zZWdtZW50LWludGVyc2VjdCIpLG89dCgiYmlnLXJhdCIpLHM9dCgiYmlnLXJhdC9j bXAiKSxsPXQoImJpZy1yYXQvdG8tZmxvYXQiKSxjPXQoInJhdC12ZWMiKSx1PXQoIm5leHRh ZnRlciIpLGY9dCgiLi9saWIvcmF0LXNlZy1pbnRlcnNlY3QiKTtmdW5jdGlvbiBoKHQpe3Zh ciBlPWwodCk7cmV0dXJuW3UoZSwtMS8wKSx1KGUsMS8wKV19ZnVuY3Rpb24gcCh0KXtmb3Io dmFyIGU9bmV3IEFycmF5KHQubGVuZ3RoKSxyPTA7cjx0Lmxlbmd0aDsrK3Ipe3ZhciBuPXRb cl07ZVtyXT1bdShuWzBdLC0xLzApLHUoblsxXSwtMS8wKSx1KG5bMF0sMS8wKSx1KG5bMV0s MS8wKV19cmV0dXJuIGV9ZnVuY3Rpb24gZCh0LGUscil7Zm9yKHZhciBhPWUubGVuZ3RoLG89 bmV3IG4oYSkscz1bXSxsPTA7bDxlLmxlbmd0aDsrK2wpe3ZhciBjPWVbbF0sZj1oKGNbMF0p LHA9aChjWzFdKTtzLnB1c2goW3UoZlswXSwtMS8wKSx1KHBbMF0sLTEvMCksdShmWzFdLDEv MCksdShwWzFdLDEvMCldKX1pKHMsKGZ1bmN0aW9uKHQsZSl7by5saW5rKHQsZSl9KSk7dmFy IGQ9ITAsbT1uZXcgQXJyYXkoYSk7Zm9yKGw9MDtsPGE7KytsKXsodj1vLmZpbmQobCkpIT09 bCYmKGQ9ITEsdFt2XT1bTWF0aC5taW4odFtsXVswXSx0W3ZdWzBdKSxNYXRoLm1pbih0W2xd WzFdLHRbdl1bMV0pXSl9aWYoZClyZXR1cm4gbnVsbDt2YXIgZz0wO2ZvcihsPTA7bDxhOysr bCl7dmFyIHY7KHY9by5maW5kKGwpKT09PWw/KG1bbF09Zyx0W2crK109dFtsXSk6bVtsXT0t MX10Lmxlbmd0aD1nO2ZvcihsPTA7bDxhOysrbCltW2xdPDAmJihtW2xdPW1bby5maW5kKGwp XSk7cmV0dXJuIG19ZnVuY3Rpb24gbSh0LGUpe3JldHVybiB0WzBdLWVbMF18fHRbMV0tZVsx XX1mdW5jdGlvbiBnKHQsZSl7dmFyIHI9dFswXS1lWzBdfHx0WzFdLWVbMV07cmV0dXJuIHJ8 fCh0WzJdPGVbMl0/LTE6dFsyXT5lWzJdPzE6MCl9ZnVuY3Rpb24gdih0LGUscil7aWYoMCE9 PXQubGVuZ3RoKXtpZihlKWZvcih2YXIgbj0wO248dC5sZW5ndGg7KytuKXt2YXIgaT1lWyhv PXRbbl0pWzBdXSxhPWVbb1sxXV07b1swXT1NYXRoLm1pbihpLGEpLG9bMV09TWF0aC5tYXgo aSxhKX1lbHNlIGZvcihuPTA7bjx0Lmxlbmd0aDsrK24pe3ZhciBvO2k9KG89dFtuXSlbMF0s YT1vWzFdO29bMF09TWF0aC5taW4oaSxhKSxvWzFdPU1hdGgubWF4KGksYSl9cj90LnNvcnQo Zyk6dC5zb3J0KG0pO3ZhciBzPTE7Zm9yKG49MTtuPHQubGVuZ3RoOysrbil7dmFyIGw9dFtu LTFdLGM9dFtuXTsoY1swXSE9PWxbMF18fGNbMV0hPT1sWzFdfHxyJiZjWzJdIT09bFsyXSkm Jih0W3MrK109Yyl9dC5sZW5ndGg9c319ZnVuY3Rpb24geSh0LGUscil7dmFyIG49ZnVuY3Rp b24odCxlKXtmb3IodmFyIHI9bmV3IEFycmF5KGUubGVuZ3RoKSxuPTA7bjxlLmxlbmd0aDsr K24pe3ZhciBpPWVbbl0sYT10W2lbMF1dLG89dFtpWzFdXTtyW25dPVt1KE1hdGgubWluKGFb MF0sb1swXSksLTEvMCksdShNYXRoLm1pbihhWzFdLG9bMV0pLC0xLzApLHUoTWF0aC5tYXgo YVswXSxvWzBdKSwxLzApLHUoTWF0aC5tYXgoYVsxXSxvWzFdKSwxLzApXX1yZXR1cm4gcn0o dCxlKSxoPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1bXTtyZXR1cm4gaShyLChmdW5jdGlvbihy LGkpe3ZhciBvPWVbcl0scz1lW2ldO2lmKG9bMF0hPT1zWzBdJiZvWzBdIT09c1sxXSYmb1sx XSE9PXNbMF0mJm9bMV0hPT1zWzFdKXt2YXIgbD10W29bMF1dLGM9dFtvWzFdXSx1PXRbc1sw XV0sZj10W3NbMV1dO2EobCxjLHUsZikmJm4ucHVzaChbcixpXSl9fSkpLG59KHQsZSxuKSxt PXAodCksZz1mdW5jdGlvbih0LGUscixuKXt2YXIgbz1bXTtyZXR1cm4gaShyLG4sKGZ1bmN0 aW9uKHIsbil7dmFyIGk9ZVtyXTtpZihpWzBdIT09biYmaVsxXSE9PW4pe3ZhciBzPXRbbl0s bD10W2lbMF1dLGM9dFtpWzFdXTthKGwsYyxzLHMpJiZvLnB1c2goW3Isbl0pfX0pKSxvfSh0 LGUsbixtKSx5PWQodCxmdW5jdGlvbih0LGUscixuLGkpe3ZhciBhLHUsaD10Lm1hcCgoZnVu Y3Rpb24odCl7cmV0dXJuW28odFswXSksbyh0WzFdKV19KSk7Zm9yKGE9MDthPHIubGVuZ3Ro OysrYSl7dmFyIHA9clthXTt1PXBbMF07dmFyIGQ9cFsxXSxtPWVbdV0sZz1lW2RdLHY9Zihj KHRbbVswXV0pLGModFttWzFdXSksYyh0W2dbMF1dKSxjKHRbZ1sxXV0pKTtpZih2KXt2YXIg eT10Lmxlbmd0aDt0LnB1c2goW2wodlswXSksbCh2WzFdKV0pLGgucHVzaCh2KSxuLnB1c2go W3UseV0sW2QseV0pfX1mb3Iobi5zb3J0KChmdW5jdGlvbih0LGUpe2lmKHRbMF0hPT1lWzBd KXJldHVybiB0WzBdLWVbMF07dmFyIHI9aFt0WzFdXSxuPWhbZVsxXV07cmV0dXJuIHMoclsw XSxuWzBdKXx8cyhyWzFdLG5bMV0pfSkpLGE9bi5sZW5ndGgtMTthPj0wOy0tYSl7dmFyIHg9 ZVt1PShTPW5bYV0pWzBdXSxiPXhbMF0sXz14WzFdLHc9dFtiXSxUPXRbX107aWYoKHdbMF0t VFswXXx8d1sxXS1UWzFdKTwwKXt2YXIgaz1iO2I9XyxfPWt9eFswXT1iO3ZhciBBLE09eFsx XT1TWzFdO2ZvcihpJiYoQT14WzJdKTthPjAmJm5bYS0xXVswXT09PXU7KXt2YXIgUyxFPShT PW5bLS1hXSlbMV07aT9lLnB1c2goW00sRSxBXSk6ZS5wdXNoKFtNLEVdKSxNPUV9aT9lLnB1 c2goW00sXyxBXSk6ZS5wdXNoKFtNLF9dKX1yZXR1cm4gaH0odCxlLGgsZyxyKSk7cmV0dXJu IHYoZSx5LHIpLCEheXx8KGgubGVuZ3RoPjB8fGcubGVuZ3RoPjApfX0seyIuL2xpYi9yYXQt c2VnLWludGVyc2VjdCI6NTEsImJpZy1yYXQiOjE4LCJiaWctcmF0L2NtcCI6MTYsImJpZy1y YXQvdG8tZmxvYXQiOjMwLCJib3gtaW50ZXJzZWN0IjozNSxuZXh0YWZ0ZXI6MjYwLCJyYXQt dmVjIjoyNzMsInJvYnVzdC1zZWdtZW50LWludGVyc2VjdCI6Mjg3LCJ1bmlvbi1maW5kIjoz MDl9XSw1MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rp b24odCxlLHIsbil7dmFyIGE9cyhlLHQpLGY9cyhuLHIpLGg9dShhLGYpO2lmKDA9PT1vKGgp KXJldHVybiBudWxsO3ZhciBwPXModCxyKSxkPXUoZixwKSxtPWkoZCxoKSxnPWMoYSxtKTty ZXR1cm4gbCh0LGcpfTt2YXIgbj10KCJiaWctcmF0L211bCIpLGk9dCgiYmlnLXJhdC9kaXYi KSxhPXQoImJpZy1yYXQvc3ViIiksbz10KCJiaWctcmF0L3NpZ24iKSxzPXQoInJhdC12ZWMv c3ViIiksbD10KCJyYXQtdmVjL2FkZCIpLGM9dCgicmF0LXZlYy9tdWxzIik7ZnVuY3Rpb24g dSh0LGUpe3JldHVybiBhKG4odFswXSxlWzFdKSxuKHRbMV0sZVswXSkpfX0seyJiaWctcmF0 L2RpdiI6MTcsImJpZy1yYXQvbXVsIjoyNywiYmlnLXJhdC9zaWduIjoyOCwiYmlnLXJhdC9z dWIiOjI5LCJyYXQtdmVjL2FkZCI6MjcyLCJyYXQtdmVjL211bHMiOjI3NCwicmF0LXZlYy9z dWIiOjI3NX1dLDUyOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXtqZXQ6W3tpbmRleDow LHJnYjpbMCwwLDEzMV19LHtpbmRleDouMTI1LHJnYjpbMCw2MCwxNzBdfSx7aW5kZXg6LjM3 NSxyZ2I6WzUsMjU1LDI1NV19LHtpbmRleDouNjI1LHJnYjpbMjU1LDI1NSwwXX0se2luZGV4 Oi44NzUscmdiOlsyNTAsMCwwXX0se2luZGV4OjEscmdiOlsxMjgsMCwwXX1dLGhzdjpbe2lu ZGV4OjAscmdiOlsyNTUsMCwwXX0se2luZGV4Oi4xNjkscmdiOlsyNTMsMjU1LDJdfSx7aW5k ZXg6LjE3MyxyZ2I6WzI0NywyNTUsMl19LHtpbmRleDouMzM3LHJnYjpbMCwyNTIsNF19LHtp bmRleDouMzQxLHJnYjpbMCwyNTIsMTBdfSx7aW5kZXg6LjUwNixyZ2I6WzEsMjQ5LDI1NV19 LHtpbmRleDouNjcxLHJnYjpbMiwwLDI1M119LHtpbmRleDouNjc1LHJnYjpbOCwwLDI1M119 LHtpbmRleDouODM5LHJnYjpbMjU1LDAsMjUxXX0se2luZGV4Oi44NDMscmdiOlsyNTUsMCwy NDVdfSx7aW5kZXg6MSxyZ2I6WzI1NSwwLDZdfV0saG90Olt7aW5kZXg6MCxyZ2I6WzAsMCww XX0se2luZGV4Oi4zLHJnYjpbMjMwLDAsMF19LHtpbmRleDouNixyZ2I6WzI1NSwyMTAsMF19 LHtpbmRleDoxLHJnYjpbMjU1LDI1NSwyNTVdfV0sc3ByaW5nOlt7aW5kZXg6MCxyZ2I6WzI1 NSwwLDI1NV19LHtpbmRleDoxLHJnYjpbMjU1LDI1NSwwXX1dLHN1bW1lcjpbe2luZGV4OjAs cmdiOlswLDEyOCwxMDJdfSx7aW5kZXg6MSxyZ2I6WzI1NSwyNTUsMTAyXX1dLGF1dHVtbjpb e2luZGV4OjAscmdiOlsyNTUsMCwwXX0se2luZGV4OjEscmdiOlsyNTUsMjU1LDBdfV0sd2lu dGVyOlt7aW5kZXg6MCxyZ2I6WzAsMCwyNTVdfSx7aW5kZXg6MSxyZ2I6WzAsMjU1LDEyOF19 XSxib25lOlt7aW5kZXg6MCxyZ2I6WzAsMCwwXX0se2luZGV4Oi4zNzYscmdiOls4NCw4NCwx MTZdfSx7aW5kZXg6Ljc1MyxyZ2I6WzE2OSwyMDAsMjAwXX0se2luZGV4OjEscmdiOlsyNTUs MjU1LDI1NV19XSxjb3BwZXI6W3tpbmRleDowLHJnYjpbMCwwLDBdfSx7aW5kZXg6LjgwNCxy Z2I6WzI1NSwxNjAsMTAyXX0se2luZGV4OjEscmdiOlsyNTUsMTk5LDEyN119XSxncmV5czpb e2luZGV4OjAscmdiOlswLDAsMF19LHtpbmRleDoxLHJnYjpbMjU1LDI1NSwyNTVdfV0seWln bmJ1Olt7aW5kZXg6MCxyZ2I6WzgsMjksODhdfSx7aW5kZXg6LjEyNSxyZ2I6WzM3LDUyLDE0 OF19LHtpbmRleDouMjUscmdiOlszNCw5NCwxNjhdfSx7aW5kZXg6LjM3NSxyZ2I6WzI5LDE0 NSwxOTJdfSx7aW5kZXg6LjUscmdiOls2NSwxODIsMTk2XX0se2luZGV4Oi42MjUscmdiOlsx MjcsMjA1LDE4N119LHtpbmRleDouNzUscmdiOlsxOTksMjMzLDE4MF19LHtpbmRleDouODc1 LHJnYjpbMjM3LDI0OCwyMTddfSx7aW5kZXg6MSxyZ2I6WzI1NSwyNTUsMjE3XX1dLGdyZWVu czpbe2luZGV4OjAscmdiOlswLDY4LDI3XX0se2luZGV4Oi4xMjUscmdiOlswLDEwOSw0NF19 LHtpbmRleDouMjUscmdiOlszNSwxMzksNjldfSx7aW5kZXg6LjM3NSxyZ2I6WzY1LDE3MSw5 M119LHtpbmRleDouNSxyZ2I6WzExNiwxOTYsMTE4XX0se2luZGV4Oi42MjUscmdiOlsxNjEs MjE3LDE1NV19LHtpbmRleDouNzUscmdiOlsxOTksMjMzLDE5Ml19LHtpbmRleDouODc1LHJn YjpbMjI5LDI0NSwyMjRdfSx7aW5kZXg6MSxyZ2I6WzI0NywyNTIsMjQ1XX1dLHlpb3JyZDpb e2luZGV4OjAscmdiOlsxMjgsMCwzOF19LHtpbmRleDouMTI1LHJnYjpbMTg5LDAsMzhdfSx7 aW5kZXg6LjI1LHJnYjpbMjI3LDI2LDI4XX0se2luZGV4Oi4zNzUscmdiOlsyNTIsNzgsNDJd fSx7aW5kZXg6LjUscmdiOlsyNTMsMTQxLDYwXX0se2luZGV4Oi42MjUscmdiOlsyNTQsMTc4 LDc2XX0se2luZGV4Oi43NSxyZ2I6WzI1NCwyMTcsMTE4XX0se2luZGV4Oi44NzUscmdiOlsy NTUsMjM3LDE2MF19LHtpbmRleDoxLHJnYjpbMjU1LDI1NSwyMDRdfV0sYmx1ZXJlZDpbe2lu ZGV4OjAscmdiOlswLDAsMjU1XX0se2luZGV4OjEscmdiOlsyNTUsMCwwXX1dLHJkYnU6W3tp bmRleDowLHJnYjpbNSwxMCwxNzJdfSx7aW5kZXg6LjM1LHJnYjpbMTA2LDEzNywyNDddfSx7 aW5kZXg6LjUscmdiOlsxOTAsMTkwLDE5MF19LHtpbmRleDouNixyZ2I6WzIyMCwxNzAsMTMy XX0se2luZGV4Oi43LHJnYjpbMjMwLDE0NSw5MF19LHtpbmRleDoxLHJnYjpbMTc4LDEwLDI4 XX1dLHBpY25pYzpbe2luZGV4OjAscmdiOlswLDAsMjU1XX0se2luZGV4Oi4xLHJnYjpbNTEs MTUzLDI1NV19LHtpbmRleDouMixyZ2I6WzEwMiwyMDQsMjU1XX0se2luZGV4Oi4zLHJnYjpb MTUzLDIwNCwyNTVdfSx7aW5kZXg6LjQscmdiOlsyMDQsMjA0LDI1NV19LHtpbmRleDouNSxy Z2I6WzI1NSwyNTUsMjU1XX0se2luZGV4Oi42LHJnYjpbMjU1LDIwNCwyNTVdfSx7aW5kZXg6 LjcscmdiOlsyNTUsMTUzLDI1NV19LHtpbmRleDouOCxyZ2I6WzI1NSwxMDIsMjA0XX0se2lu ZGV4Oi45LHJnYjpbMjU1LDEwMiwxMDJdfSx7aW5kZXg6MSxyZ2I6WzI1NSwwLDBdfV0scmFp bmJvdzpbe2luZGV4OjAscmdiOlsxNTAsMCw5MF19LHtpbmRleDouMTI1LHJnYjpbMCwwLDIw MF19LHtpbmRleDouMjUscmdiOlswLDI1LDI1NV19LHtpbmRleDouMzc1LHJnYjpbMCwxNTIs MjU1XX0se2luZGV4Oi41LHJnYjpbNDQsMjU1LDE1MF19LHtpbmRleDouNjI1LHJnYjpbMTUx LDI1NSwwXX0se2luZGV4Oi43NSxyZ2I6WzI1NSwyMzQsMF19LHtpbmRleDouODc1LHJnYjpb MjU1LDExMSwwXX0se2luZGV4OjEscmdiOlsyNTUsMCwwXX1dLHBvcnRsYW5kOlt7aW5kZXg6 MCxyZ2I6WzEyLDUxLDEzMV19LHtpbmRleDouMjUscmdiOlsxMCwxMzYsMTg2XX0se2luZGV4 Oi41LHJnYjpbMjQyLDIxMSw1Nl19LHtpbmRleDouNzUscmdiOlsyNDIsMTQzLDU2XX0se2lu ZGV4OjEscmdiOlsyMTcsMzAsMzBdfV0sYmxhY2tib2R5Olt7aW5kZXg6MCxyZ2I6WzAsMCww XX0se2luZGV4Oi4yLHJnYjpbMjMwLDAsMF19LHtpbmRleDouNCxyZ2I6WzIzMCwyMTAsMF19 LHtpbmRleDouNyxyZ2I6WzI1NSwyNTUsMjU1XX0se2luZGV4OjEscmdiOlsxNjAsMjAwLDI1 NV19XSxlYXJ0aDpbe2luZGV4OjAscmdiOlswLDAsMTMwXX0se2luZGV4Oi4xLHJnYjpbMCwx ODAsMTgwXX0se2luZGV4Oi4yLHJnYjpbNDAsMjEwLDQwXX0se2luZGV4Oi40LHJnYjpbMjMw LDIzMCw1MF19LHtpbmRleDouNixyZ2I6WzEyMCw3MCwyMF19LHtpbmRleDoxLHJnYjpbMjU1 LDI1NSwyNTVdfV0sZWxlY3RyaWM6W3tpbmRleDowLHJnYjpbMCwwLDBdfSx7aW5kZXg6LjE1 LHJnYjpbMzAsMCwxMDBdfSx7aW5kZXg6LjQscmdiOlsxMjAsMCwxMDBdfSx7aW5kZXg6LjYs cmdiOlsxNjAsOTAsMF19LHtpbmRleDouOCxyZ2I6WzIzMCwyMDAsMF19LHtpbmRleDoxLHJn YjpbMjU1LDI1MCwyMjBdfV0sYWxwaGE6W3tpbmRleDowLHJnYjpbMjU1LDI1NSwyNTUsMF19 LHtpbmRleDoxLHJnYjpbMjU1LDI1NSwyNTUsMV19XSx2aXJpZGlzOlt7aW5kZXg6MCxyZ2I6 WzY4LDEsODRdfSx7aW5kZXg6LjEzLHJnYjpbNzEsNDQsMTIyXX0se2luZGV4Oi4yNSxyZ2I6 WzU5LDgxLDEzOV19LHtpbmRleDouMzgscmdiOls0NCwxMTMsMTQyXX0se2luZGV4Oi41LHJn YjpbMzMsMTQ0LDE0MV19LHtpbmRleDouNjMscmdiOlszOSwxNzMsMTI5XX0se2luZGV4Oi43 NSxyZ2I6WzkyLDIwMCw5OV19LHtpbmRleDouODgscmdiOlsxNzAsMjIwLDUwXX0se2luZGV4 OjEscmdiOlsyNTMsMjMxLDM3XX1dLGluZmVybm86W3tpbmRleDowLHJnYjpbMCwwLDRdfSx7 aW5kZXg6LjEzLHJnYjpbMzEsMTIsNzJdfSx7aW5kZXg6LjI1LHJnYjpbODUsMTUsMTA5XX0s e2luZGV4Oi4zOCxyZ2I6WzEzNiwzNCwxMDZdfSx7aW5kZXg6LjUscmdiOlsxODYsNTQsODVd fSx7aW5kZXg6LjYzLHJnYjpbMjI3LDg5LDUxXX0se2luZGV4Oi43NSxyZ2I6WzI0OSwxNDAs MTBdfSx7aW5kZXg6Ljg4LHJnYjpbMjQ5LDIwMSw1MF19LHtpbmRleDoxLHJnYjpbMjUyLDI1 NSwxNjRdfV0sbWFnbWE6W3tpbmRleDowLHJnYjpbMCwwLDRdfSx7aW5kZXg6LjEzLHJnYjpb MjgsMTYsNjhdfSx7aW5kZXg6LjI1LHJnYjpbNzksMTgsMTIzXX0se2luZGV4Oi4zOCxyZ2I6 WzEyOSwzNywxMjldfSx7aW5kZXg6LjUscmdiOlsxODEsNTQsMTIyXX0se2luZGV4Oi42Myxy Z2I6WzIyOSw4MCwxMDBdfSx7aW5kZXg6Ljc1LHJnYjpbMjUxLDEzNSw5N119LHtpbmRleDou ODgscmdiOlsyNTQsMTk0LDEzNV19LHtpbmRleDoxLHJnYjpbMjUyLDI1MywxOTFdfV0scGxh c21hOlt7aW5kZXg6MCxyZ2I6WzEzLDgsMTM1XX0se2luZGV4Oi4xMyxyZ2I6Wzc1LDMsMTYx XX0se2luZGV4Oi4yNSxyZ2I6WzEyNSwzLDE2OF19LHtpbmRleDouMzgscmdiOlsxNjgsMzQs MTUwXX0se2luZGV4Oi41LHJnYjpbMjAzLDcwLDEyMV19LHtpbmRleDouNjMscmdiOlsyMjks MTA3LDkzXX0se2luZGV4Oi43NSxyZ2I6WzI0OCwxNDgsNjVdfSx7aW5kZXg6Ljg4LHJnYjpb MjUzLDE5NSw0MF19LHtpbmRleDoxLHJnYjpbMjQwLDI0OSwzM119XSx3YXJtOlt7aW5kZXg6 MCxyZ2I6WzEyNSwwLDE3OV19LHtpbmRleDouMTMscmdiOlsxNzIsMCwxODddfSx7aW5kZXg6 LjI1LHJnYjpbMjE5LDAsMTcwXX0se2luZGV4Oi4zOCxyZ2I6WzI1NSwwLDEzMF19LHtpbmRl eDouNSxyZ2I6WzI1NSw2Myw3NF19LHtpbmRleDouNjMscmdiOlsyNTUsMTIzLDBdfSx7aW5k ZXg6Ljc1LHJnYjpbMjM0LDE3NiwwXX0se2luZGV4Oi44OCxyZ2I6WzE5MCwyMjgsMF19LHtp bmRleDoxLHJnYjpbMTQ3LDI1NSwwXX1dLGNvb2w6W3tpbmRleDowLHJnYjpbMTI1LDAsMTc5 XX0se2luZGV4Oi4xMyxyZ2I6WzExNiwwLDIxOF19LHtpbmRleDouMjUscmdiOls5OCw3NCwy MzddfSx7aW5kZXg6LjM4LHJnYjpbNjgsMTQ2LDIzMV19LHtpbmRleDouNSxyZ2I6WzAsMjA0 LDE5N119LHtpbmRleDouNjMscmdiOlswLDI0NywxNDZdfSx7aW5kZXg6Ljc1LHJnYjpbMCwy NTUsODhdfSx7aW5kZXg6Ljg4LHJnYjpbNDAsMjU1LDhdfSx7aW5kZXg6MSxyZ2I6WzE0Nywy NTUsMF19XSwicmFpbmJvdy1zb2Z0Ijpbe2luZGV4OjAscmdiOlsxMjUsMCwxNzldfSx7aW5k ZXg6LjEscmdiOlsxOTksMCwxODBdfSx7aW5kZXg6LjIscmdiOlsyNTUsMCwxMjFdfSx7aW5k ZXg6LjMscmdiOlsyNTUsMTA4LDBdfSx7aW5kZXg6LjQscmdiOlsyMjIsMTk0LDBdfSx7aW5k ZXg6LjUscmdiOlsxNTAsMjU1LDBdfSx7aW5kZXg6LjYscmdiOlswLDI1NSw1NV19LHtpbmRl eDouNyxyZ2I6WzAsMjQ2LDE1MF19LHtpbmRleDouOCxyZ2I6WzUwLDE2NywyMjJdfSx7aW5k ZXg6LjkscmdiOlsxMDMsNTEsMjM1XX0se2luZGV4OjEscmdiOlsxMjQsMCwxODZdfV0sYmF0 aHltZXRyeTpbe2luZGV4OjAscmdiOls0MCwyNiw0NF19LHtpbmRleDouMTMscmdiOls1OSw0 OSw5MF19LHtpbmRleDouMjUscmdiOls2NCw3NiwxMzldfSx7aW5kZXg6LjM4LHJnYjpbNjMs MTEwLDE1MV19LHtpbmRleDouNSxyZ2I6WzcyLDE0MiwxNThdfSx7aW5kZXg6LjYzLHJnYjpb ODUsMTc0LDE2M119LHtpbmRleDouNzUscmdiOlsxMjAsMjA2LDE2M119LHtpbmRleDouODgs cmdiOlsxODcsMjMwLDE3Ml19LHtpbmRleDoxLHJnYjpbMjUzLDI1NCwyMDRdfV0sY2RvbTpb e2luZGV4OjAscmdiOls0NywxNSw2Ml19LHtpbmRleDouMTMscmdiOls4NywyMyw4Nl19LHtp bmRleDouMjUscmdiOlsxMzAsMjgsOTldfSx7aW5kZXg6LjM4LHJnYjpbMTcxLDQxLDk2XX0s e2luZGV4Oi41LHJnYjpbMjA2LDY3LDg2XX0se2luZGV4Oi42MyxyZ2I6WzIzMCwxMDYsODRd fSx7aW5kZXg6Ljc1LHJnYjpbMjQyLDE0OSwxMDNdfSx7aW5kZXg6Ljg4LHJnYjpbMjQ5LDE5 MywxMzVdfSx7aW5kZXg6MSxyZ2I6WzI1NCwyMzcsMTc2XX1dLGNobG9yb3BoeWxsOlt7aW5k ZXg6MCxyZ2I6WzE4LDM2LDIwXX0se2luZGV4Oi4xMyxyZ2I6WzI1LDYzLDQxXX0se2luZGV4 Oi4yNSxyZ2I6WzI0LDkxLDU5XX0se2luZGV4Oi4zOCxyZ2I6WzEzLDExOSw3Ml19LHtpbmRl eDouNSxyZ2I6WzE4LDE0OCw4MF19LHtpbmRleDouNjMscmdiOls4MCwxNzMsODldfSx7aW5k ZXg6Ljc1LHJnYjpbMTMyLDE5NiwxMjJdfSx7aW5kZXg6Ljg4LHJnYjpbMTc1LDIyMSwxNjJd fSx7aW5kZXg6MSxyZ2I6WzIxNSwyNDksMjA4XX1dLGRlbnNpdHk6W3tpbmRleDowLHJnYjpb NTQsMTQsMzZdfSx7aW5kZXg6LjEzLHJnYjpbODksMjMsODBdfSx7aW5kZXg6LjI1LHJnYjpb MTEwLDQ1LDEzMl19LHtpbmRleDouMzgscmdiOlsxMjAsNzcsMTc4XX0se2luZGV4Oi41LHJn YjpbMTIwLDExMywyMTNdfSx7aW5kZXg6LjYzLHJnYjpbMTE1LDE1MSwyMjhdfSx7aW5kZXg6 Ljc1LHJnYjpbMTM0LDE4NSwyMjddfSx7aW5kZXg6Ljg4LHJnYjpbMTc3LDIxNCwyMjddfSx7 aW5kZXg6MSxyZ2I6WzIzMCwyNDEsMjQxXX1dLCJmcmVlc3VyZmFjZS1ibHVlIjpbe2luZGV4 OjAscmdiOlszMCw0LDExMF19LHtpbmRleDouMTMscmdiOls0NywxNCwxNzZdfSx7aW5kZXg6 LjI1LHJnYjpbNDEsNDUsMjM2XX0se2luZGV4Oi4zOCxyZ2I6WzI1LDk5LDIxMl19LHtpbmRl eDouNSxyZ2I6WzY4LDEzMSwyMDBdfSx7aW5kZXg6LjYzLHJnYjpbMTE0LDE1NiwxOTddfSx7 aW5kZXg6Ljc1LHJnYjpbMTU3LDE4MSwyMDNdfSx7aW5kZXg6Ljg4LHJnYjpbMjAwLDIwOCwy MTZdfSx7aW5kZXg6MSxyZ2I6WzI0MSwyMzcsMjM2XX1dLCJmcmVlc3VyZmFjZS1yZWQiOlt7 aW5kZXg6MCxyZ2I6WzYwLDksMThdfSx7aW5kZXg6LjEzLHJnYjpbMTAwLDE3LDI3XX0se2lu ZGV4Oi4yNSxyZ2I6WzE0MiwyMCwyOV19LHtpbmRleDouMzgscmdiOlsxNzcsNDMsMjddfSx7 aW5kZXg6LjUscmdiOlsxOTIsODcsNjNdfSx7aW5kZXg6LjYzLHJnYjpbMjA1LDEyNSwxMDVd fSx7aW5kZXg6Ljc1LHJnYjpbMjE2LDE2MiwxNDhdfSx7aW5kZXg6Ljg4LHJnYjpbMjI3LDE5 OSwxOTNdfSx7aW5kZXg6MSxyZ2I6WzI0MSwyMzcsMjM2XX1dLG94eWdlbjpbe2luZGV4OjAs cmdiOls2NCw1LDVdfSx7aW5kZXg6LjEzLHJnYjpbMTA2LDYsMTVdfSx7aW5kZXg6LjI1LHJn YjpbMTQ0LDI2LDddfSx7aW5kZXg6LjM4LHJnYjpbMTY4LDY0LDNdfSx7aW5kZXg6LjUscmdi OlsxODgsMTAwLDRdfSx7aW5kZXg6LjYzLHJnYjpbMjA2LDEzNiwxMV19LHtpbmRleDouNzUs cmdiOlsyMjAsMTc0LDI1XX0se2luZGV4Oi44OCxyZ2I6WzIzMSwyMTUsNDRdfSx7aW5kZXg6 MSxyZ2I6WzI0OCwyNTQsMTA1XX1dLHBhcjpbe2luZGV4OjAscmdiOls1MSwyMCwyNF19LHtp bmRleDouMTMscmdiOls5MCwzMiwzNV19LHtpbmRleDouMjUscmdiOlsxMjksNDQsMzRdfSx7 aW5kZXg6LjM4LHJnYjpbMTU5LDY4LDI1XX0se2luZGV4Oi41LHJnYjpbMTgyLDk5LDE5XX0s e2luZGV4Oi42MyxyZ2I6WzE5OSwxMzQsMjJdfSx7aW5kZXg6Ljc1LHJnYjpbMjEyLDE3MSwz NV19LHtpbmRleDouODgscmdiOlsyMjEsMjEwLDU0XX0se2luZGV4OjEscmdiOlsyMjUsMjUz LDc1XX1dLHBoYXNlOlt7aW5kZXg6MCxyZ2I6WzE0NSwxMDUsMThdfSx7aW5kZXg6LjEzLHJn YjpbMTg0LDcxLDM4XX0se2luZGV4Oi4yNSxyZ2I6WzE4Niw1OCwxMTVdfSx7aW5kZXg6LjM4 LHJnYjpbMTYwLDcxLDE4NV19LHtpbmRleDouNSxyZ2I6WzExMCw5NywyMThdfSx7aW5kZXg6 LjYzLHJnYjpbNTAsMTIzLDE2NF19LHtpbmRleDouNzUscmdiOlszMSwxMzEsMTEwXX0se2lu ZGV4Oi44OCxyZ2I6Wzc3LDEyOSwzNF19LHtpbmRleDoxLHJnYjpbMTQ1LDEwNSwxOF19XSxz YWxpbml0eTpbe2luZGV4OjAscmdiOls0MiwyNCwxMDhdfSx7aW5kZXg6LjEzLHJnYjpbMzMs NTAsMTYyXX0se2luZGV4Oi4yNSxyZ2I6WzE1LDkwLDE0NV19LHtpbmRleDouMzgscmdiOls0 MCwxMTgsMTM3XX0se2luZGV4Oi41LHJnYjpbNTksMTQ2LDEzNV19LHtpbmRleDouNjMscmdi Ols3OSwxNzUsMTI2XX0se2luZGV4Oi43NSxyZ2I6WzEyMCwyMDMsMTA0XX0se2luZGV4Oi44 OCxyZ2I6WzE5MywyMjEsMTAwXX0se2luZGV4OjEscmdiOlsyNTMsMjM5LDE1NF19XSx0ZW1w ZXJhdHVyZTpbe2luZGV4OjAscmdiOls0LDM1LDUxXX0se2luZGV4Oi4xMyxyZ2I6WzIzLDUx LDEyMl19LHtpbmRleDouMjUscmdiOls4NSw1OSwxNTddfSx7aW5kZXg6LjM4LHJnYjpbMTI5 LDc5LDE0M119LHtpbmRleDouNSxyZ2I6WzE3NSw5NSwxMzBdfSx7aW5kZXg6LjYzLHJnYjpb MjIyLDExMiwxMDFdfSx7aW5kZXg6Ljc1LHJnYjpbMjQ5LDE0Niw2Nl19LHtpbmRleDouODgs cmdiOlsyNDksMTk2LDY1XX0se2luZGV4OjEscmdiOlsyMzIsMjUwLDkxXX1dLHR1cmJpZGl0 eTpbe2luZGV4OjAscmdiOlszNCwzMSwyN119LHtpbmRleDouMTMscmdiOls2NSw1MCw0MV19 LHtpbmRleDouMjUscmdiOls5OCw2OSw1Ml19LHtpbmRleDouMzgscmdiOlsxMzEsODksNTdd fSx7aW5kZXg6LjUscmdiOlsxNjEsMTEyLDU5XX0se2luZGV4Oi42MyxyZ2I6WzE4NSwxNDAs NjZdfSx7aW5kZXg6Ljc1LHJnYjpbMjAyLDE3NCw4OF19LHtpbmRleDouODgscmdiOlsyMTYs MjA5LDEyNl19LHtpbmRleDoxLHJnYjpbMjMzLDI0NiwxNzFdfV0sInZlbG9jaXR5LWJsdWUi Olt7aW5kZXg6MCxyZ2I6WzE3LDMyLDY0XX0se2luZGV4Oi4xMyxyZ2I6WzM1LDUyLDExNl19 LHtpbmRleDouMjUscmdiOlsyOSw4MSwxNTZdfSx7aW5kZXg6LjM4LHJnYjpbMzEsMTEzLDE2 Ml19LHtpbmRleDouNSxyZ2I6WzUwLDE0NCwxNjldfSx7aW5kZXg6LjYzLHJnYjpbODcsMTcz LDE3Nl19LHtpbmRleDouNzUscmdiOlsxNDksMTk2LDE4OV19LHtpbmRleDouODgscmdiOlsy MDMsMjIxLDIxMV19LHtpbmRleDoxLHJnYjpbMjU0LDI1MSwyMzBdfV0sInZlbG9jaXR5LWdy ZWVuIjpbe2luZGV4OjAscmdiOlsyMywzNSwxOV19LHtpbmRleDouMTMscmdiOlsyNCw2NCwz OF19LHtpbmRleDouMjUscmdiOlsxMSw5NSw0NV19LHtpbmRleDouMzgscmdiOlszOSwxMjMs MzVdfSx7aW5kZXg6LjUscmdiOls5NSwxNDYsMTJdfSx7aW5kZXg6LjYzLHJnYjpbMTUyLDE2 NSwxOF19LHtpbmRleDouNzUscmdiOlsyMDEsMTg2LDY5XX0se2luZGV4Oi44OCxyZ2I6WzIz MywyMTYsMTM3XX0se2luZGV4OjEscmdiOlsyNTUsMjUzLDIwNV19XSxjdWJlaGVsaXg6W3tp bmRleDowLHJnYjpbMCwwLDBdfSx7aW5kZXg6LjA3LHJnYjpbMjIsNSw1OV19LHtpbmRleDou MTMscmdiOls2MCw0LDEwNV19LHtpbmRleDouMixyZ2I6WzEwOSwxLDEzNV19LHtpbmRleDou MjcscmdiOlsxNjEsMCwxNDddfSx7aW5kZXg6LjMzLHJnYjpbMjEwLDIsMTQyXX0se2luZGV4 Oi40LHJnYjpbMjUxLDExLDEyM119LHtpbmRleDouNDcscmdiOlsyNTUsMjksOTddfSx7aW5k ZXg6LjUzLHJnYjpbMjU1LDU0LDY5XX0se2luZGV4Oi42LHJnYjpbMjU1LDg1LDQ2XX0se2lu ZGV4Oi42NyxyZ2I6WzI1NSwxMjAsMzRdfSx7aW5kZXg6LjczLHJnYjpbMjU1LDE1NywzN119 LHtpbmRleDouOCxyZ2I6WzI0MSwxOTEsNTddfSx7aW5kZXg6Ljg3LHJnYjpbMjI0LDIyMCw5 M119LHtpbmRleDouOTMscmdiOlsyMTgsMjQxLDE0Ml19LHtpbmRleDoxLHJnYjpbMjI3LDI1 MywxOThdfV19fSx7fV0sNTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiLi9jb2xvclNjYWxlIiksaT10KCJsZXJwIik7ZnVuY3Rpb24gYSh0KXtyZXR1cm5bdFsw XS8yNTUsdFsxXS8yNTUsdFsyXS8yNTUsdFszXV19ZnVuY3Rpb24gbyh0KXtmb3IodmFyIGUs cj0iIyIsbj0wO248MzsrK24pcis9KCIwMCIrKGU9KGU9dFtuXSkudG9TdHJpbmcoMTYpKSku c3Vic3RyKGUubGVuZ3RoKTtyZXR1cm4gcn1mdW5jdGlvbiBzKHQpe3JldHVybiJyZ2JhKCIr dC5qb2luKCIsIikrIikifWUuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZSxyLGwsYyx1LGYs aCxwLGQsbTt0fHwodD17fSk7cD0odC5uc2hhZGVzfHw3MiktMSxoPXQuZm9ybWF0fHwiaGV4 IiwoZj10LmNvbG9ybWFwKXx8KGY9ImpldCIpO2lmKCJzdHJpbmciPT10eXBlb2YgZil7aWYo Zj1mLnRvTG93ZXJDYXNlKCksIW5bZl0pdGhyb3cgRXJyb3IoZisiIG5vdCBhIHN1cHBvcnRl ZCBjb2xvcnNjYWxlIik7dT1uW2ZdfWVsc2V7aWYoIUFycmF5LmlzQXJyYXkoZikpdGhyb3cg RXJyb3IoInVuc3VwcG9ydGVkIGNvbG9ybWFwIG9wdGlvbiIsZik7dT1mLnNsaWNlKCl9aWYo dS5sZW5ndGg+cCsxKXRocm93IG5ldyBFcnJvcihmKyIgbWFwIHJlcXVpcmVzIG5zaGFkZXMg dG8gYmUgYXQgbGVhc3Qgc2l6ZSAiK3UubGVuZ3RoKTtkPUFycmF5LmlzQXJyYXkodC5hbHBo YSk/MiE9PXQuYWxwaGEubGVuZ3RoP1sxLDFdOnQuYWxwaGEuc2xpY2UoKToibnVtYmVyIj09 dHlwZW9mIHQuYWxwaGE/W3QuYWxwaGEsdC5hbHBoYV06WzEsMV07ZT11Lm1hcCgoZnVuY3Rp b24odCl7cmV0dXJuIE1hdGgucm91bmQodC5pbmRleCpwKX0pKSxkWzBdPU1hdGgubWluKE1h dGgubWF4KGRbMF0sMCksMSksZFsxXT1NYXRoLm1pbihNYXRoLm1heChkWzFdLDApLDEpO3Zh ciBnPXUubWFwKChmdW5jdGlvbih0LGUpe3ZhciByPXVbZV0uaW5kZXgsbj11W2VdLnJnYi5z bGljZSgpO3JldHVybiA0PT09bi5sZW5ndGgmJm5bM10+PTAmJm5bM108PTF8fChuWzNdPWRb MF0rKGRbMV0tZFswXSkqciksbn0pKSx2PVtdO2ZvcihtPTA7bTxlLmxlbmd0aC0xOysrbSl7 Yz1lW20rMV0tZVttXSxyPWdbbV0sbD1nW20rMV07Zm9yKHZhciB5PTA7eTxjO3krKyl7dmFy IHg9eS9jO3YucHVzaChbTWF0aC5yb3VuZChpKHJbMF0sbFswXSx4KSksTWF0aC5yb3VuZChp KHJbMV0sbFsxXSx4KSksTWF0aC5yb3VuZChpKHJbMl0sbFsyXSx4KSksaShyWzNdLGxbM10s eCldKX19di5wdXNoKHVbdS5sZW5ndGgtMV0ucmdiLmNvbmNhdChkWzFdKSksImhleCI9PT1o P3Y9di5tYXAobyk6InJnYmFTdHJpbmciPT09aD92PXYubWFwKHMpOiJmbG9hdCI9PT1oJiYo dj12Lm1hcChhKSk7cmV0dXJuIHZ9fSx7Ii4vY29sb3JTY2FsZSI6NTIsbGVycDoyNDB9XSw1 NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxl LHIsYSl7dmFyIG89bihlLHIsYSk7aWYoMD09PW8pe3ZhciBzPWkobih0LGUscikpLGM9aShu KHQsZSxhKSk7aWYocz09PWMpe2lmKDA9PT1zKXt2YXIgdT1sKHQsZSxyKSxmPWwodCxlLGEp O3JldHVybiB1PT09Zj8wOnU/MTotMX1yZXR1cm4gMH1yZXR1cm4gMD09PWM/cz4wfHxsKHQs ZSxhKT8tMToxOjA9PT1zP2M+MHx8bCh0LGUscik/MTotMTppKGMtcyl9dmFyIGg9bih0LGUs cik7cmV0dXJuIGg+MD9vPjAmJm4odCxlLGEpPjA/MTotMTpoPDA/bz4wfHxuKHQsZSxhKT4w PzE6LTE6bih0LGUsYSk+MHx8bCh0LGUscik/MTotMX07dmFyIG49dCgicm9idXN0LW9yaWVu dGF0aW9uIiksaT10KCJzaWdudW0iKSxhPXQoInR3by1zdW0iKSxvPXQoInJvYnVzdC1wcm9k dWN0Iikscz10KCJyb2J1c3Qtc3VtIik7ZnVuY3Rpb24gbCh0LGUscil7dmFyIG49YSh0WzBd LC1lWzBdKSxpPWEodFsxXSwtZVsxXSksbD1hKHJbMF0sLWVbMF0pLGM9YShyWzFdLC1lWzFd KSx1PXMobyhuLGwpLG8oaSxjKSk7cmV0dXJuIHVbdS5sZW5ndGgtMV0+PTB9fSx7InJvYnVz dC1vcmllbnRhdGlvbiI6Mjg0LCJyb2J1c3QtcHJvZHVjdCI6Mjg1LCJyb2J1c3Qtc3VtIjoy ODksc2lnbnVtOjU1LCJ0d28tc3VtIjozMDd9XSw1NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ug c3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQ8MD8tMTp0PjA/MTowfX0s e31dLDU2OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9 dC5sZW5ndGgsYT10Lmxlbmd0aC1lLmxlbmd0aDtpZihhKXJldHVybiBhO3N3aXRjaChyKXtj YXNlIDA6cmV0dXJuIDA7Y2FzZSAxOnJldHVybiB0WzBdLWVbMF07Y2FzZSAyOnJldHVybiB0 WzBdK3RbMV0tZVswXS1lWzFdfHxuKHRbMF0sdFsxXSktbihlWzBdLGVbMV0pO2Nhc2UgMzp2 YXIgbz10WzBdK3RbMV0scz1lWzBdK2VbMV07aWYoYT1vK3RbMl0tKHMrZVsyXSkpcmV0dXJu IGE7dmFyIGw9bih0WzBdLHRbMV0pLGM9bihlWzBdLGVbMV0pO3JldHVybiBuKGwsdFsyXSkt bihjLGVbMl0pfHxuKGwrdFsyXSxvKS1uKGMrZVsyXSxzKTtjYXNlIDQ6dmFyIHU9dFswXSxm PXRbMV0saD10WzJdLHA9dFszXSxkPWVbMF0sbT1lWzFdLGc9ZVsyXSx2PWVbM107cmV0dXJu IHUrZitoK3AtKGQrbStnK3YpfHxuKHUsZixoLHApLW4oZCxtLGcsdixkKXx8bih1K2YsdSto LHUrcCxmK2gsZitwLGgrcCktbihkK20sZCtnLGQrdixtK2csbSt2LGcrdil8fG4odStmK2gs dStmK3AsdStoK3AsZitoK3ApLW4oZCttK2csZCttK3YsZCtnK3YsbStnK3YpO2RlZmF1bHQ6 Zm9yKHZhciB5PXQuc2xpY2UoKS5zb3J0KGkpLHg9ZS5zbGljZSgpLnNvcnQoaSksYj0wO2I8 cjsrK2IpaWYoYT15W2JdLXhbYl0pcmV0dXJuIGE7cmV0dXJuIDB9fTt2YXIgbj1NYXRoLm1p bjtmdW5jdGlvbiBpKHQsZSl7cmV0dXJuIHQtZX19LHt9XSw1NzpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJjb21wYXJlLWNlbGwiKSxpPXQoImNlbGwtb3JpZW50 YXRpb24iKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbih0LGUpfHxpKHQpLWko ZSl9fSx7ImNlbGwtb3JpZW50YXRpb24iOjQ3LCJjb21wYXJlLWNlbGwiOjU2fV0sNTg6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9saWIvY2gxZCIpLGk9dCgi Li9saWIvY2gyZCIpLGE9dCgiLi9saWIvY2huZCIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2 YXIgZT10Lmxlbmd0aDtpZigwPT09ZSlyZXR1cm5bXTtpZigxPT09ZSlyZXR1cm5bWzBdXTt2 YXIgcj10WzBdLmxlbmd0aDtpZigwPT09cilyZXR1cm5bXTtpZigxPT09cilyZXR1cm4gbih0 KTtpZigyPT09cilyZXR1cm4gaSh0KTtyZXR1cm4gYSh0LHIpfX0seyIuL2xpYi9jaDFkIjo1 OSwiLi9saWIvY2gyZCI6NjAsIi4vbGliL2NobmQiOjYxfV0sNTk6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLHI9MCxu PTE7bjx0Lmxlbmd0aDsrK24pdFtuXVswXTx0W2VdWzBdJiYoZT1uKSx0W25dWzBdPnRbcl1b MF0mJihyPW4pO3JldHVybiBlPHI/W1tlXSxbcl1dOmU+cj9bW3JdLFtlXV06W1tlXV19fSx7 fV0sNjA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9u KHQpe3ZhciBlPW4odCkscj1lLmxlbmd0aDtpZihyPD0yKXJldHVybltdO2Zvcih2YXIgaT1u ZXcgQXJyYXkociksYT1lW3ItMV0sbz0wO288cjsrK28pe3ZhciBzPWVbb107aVtvXT1bYSxz XSxhPXN9cmV0dXJuIGl9O3ZhciBuPXQoIm1vbm90b25lLWNvbnZleC1odWxsLTJkIil9LHsi bW9ub3RvbmUtY29udmV4LWh1bGwtMmQiOjI0Nn1dLDYxOltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3RyeXtyZXR1cm4gbih0LCEwKX1j YXRjaChvKXt2YXIgcj1pKHQpO2lmKHIubGVuZ3RoPD1lKXJldHVybltdO3ZhciBhPWZ1bmN0 aW9uKHQsZSl7Zm9yKHZhciByPXQubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPGUubGVu Z3RoOysraSluW2ldPXRbZVtpXV07dmFyIGE9ZS5sZW5ndGg7Zm9yKGk9MDtpPHI7KytpKWUu aW5kZXhPZihpKTwwJiYoblthKytdPXRbaV0pO3JldHVybiBufSh0LHIpO3JldHVybiBmdW5j dGlvbih0LGUpe2Zvcih2YXIgcj10Lmxlbmd0aCxuPWUubGVuZ3RoLGk9MDtpPHI7KytpKWZv cih2YXIgYT10W2ldLG89MDtvPGEubGVuZ3RoOysrbyl7dmFyIHM9YVtvXTtpZihzPG4pYVtv XT1lW3NdO2Vsc2V7cy09bjtmb3IodmFyIGw9MDtsPG47KytsKXM+PWVbbF0mJihzKz0xKTth W29dPXN9fXJldHVybiB0fShuKGEsITApLHIpfX07dmFyIG49dCgiaW5jcmVtZW50YWwtY29u dmV4LWh1bGwiKSxpPXQoImFmZmluZS1odWxsIil9LHsiYWZmaW5lLWh1bGwiOjEwLCJpbmNy ZW1lbnRhbC1jb252ZXgtaHVsbCI6MjMzfV0sNjI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4saSxhKXt2YXIgbz1pLTEscz1pKmks bD1vKm8sYz0oMSsyKmkpKmwsdT1pKmwsZj1zKigzLTIqaSksaD1zKm87aWYodC5sZW5ndGgp e2F8fChhPW5ldyBBcnJheSh0Lmxlbmd0aCkpO2Zvcih2YXIgcD10Lmxlbmd0aC0xO3A+PTA7 LS1wKWFbcF09Yyp0W3BdK3UqZVtwXStmKnJbcF0raCpuW3BdO3JldHVybiBhfXJldHVybiBj KnQrdSplK2YqcitoKm59LGUuZXhwb3J0cy5kZXJpdmF0aXZlPWZ1bmN0aW9uKHQsZSxyLG4s aSxhKXt2YXIgbz02KmkqaS02Kmkscz0zKmkqaS00KmkrMSxsPS02KmkqaSs2KmksYz0zKmkq aS0yKmk7aWYodC5sZW5ndGgpe2F8fChhPW5ldyBBcnJheSh0Lmxlbmd0aCkpO2Zvcih2YXIg dT10Lmxlbmd0aC0xO3U+PTA7LS11KWFbdV09byp0W3VdK3MqZVt1XStsKnJbdV0rYypuW3Vd O3JldHVybiBhfXJldHVybiBvKnQrcyplK2wqclt1XStjKm59fSx7fV0sNjM6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiaW5jcmVtZW50YWwtY29udmV4LWh1bGwi KSxpPXQoInVuaXEiKTtmdW5jdGlvbiBhKHQsZSl7dGhpcy5wb2ludD10LHRoaXMuaW5kZXg9 ZX1mdW5jdGlvbiBvKHQsZSl7Zm9yKHZhciByPXQucG9pbnQsbj1lLnBvaW50LGk9ci5sZW5n dGgsYT0wO2E8aTsrK2Epe3ZhciBvPW5bYV0tclthXTtpZihvKXJldHVybiBvfXJldHVybiAw fWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQubGVuZ3RoO2lmKDA9PT1yKXJldHVy bltdO3ZhciBzPXRbMF0ubGVuZ3RoO2lmKHM8MSlyZXR1cm5bXTtpZigxPT09cylyZXR1cm4g ZnVuY3Rpb24odCxlLHIpe2lmKDE9PT10KXJldHVybiByP1tbLTEsMF1dOltdO3ZhciBuPWUu bWFwKChmdW5jdGlvbih0LGUpe3JldHVyblt0WzBdLGVdfSkpO24uc29ydCgoZnVuY3Rpb24o dCxlKXtyZXR1cm4gdFswXS1lWzBdfSkpO2Zvcih2YXIgaT1uZXcgQXJyYXkodC0xKSxhPTE7 YTx0OysrYSl7dmFyIG89blthLTFdLHM9blthXTtpW2EtMV09W29bMV0sc1sxXV19ciYmaS5w dXNoKFstMSxpWzBdWzFdXSxbaVt0LTFdWzFdLC0xXSk7cmV0dXJuIGl9KHIsdCxlKTtmb3Io dmFyIGw9bmV3IEFycmF5KHIpLGM9MSx1PTA7dTxyOysrdSl7Zm9yKHZhciBmPXRbdV0saD1u ZXcgQXJyYXkocysxKSxwPTAsZD0wO2Q8czsrK2Qpe3ZhciBtPWZbZF07aFtkXT1tLHArPW0q bX1oW3NdPXAsbFt1XT1uZXcgYShoLHUpLGM9TWF0aC5tYXgocCxjKX1pKGwsbykscj1sLmxl bmd0aDt2YXIgZz1uZXcgQXJyYXkocitzKzEpLHY9bmV3IEFycmF5KHIrcysxKSx5PShzKzEp KihzKzEpKmMseD1uZXcgQXJyYXkocysxKTtmb3IodT0wO3U8PXM7Kyt1KXhbdV09MDt4W3Nd PXksZ1swXT14LnNsaWNlKCksdlswXT0tMTtmb3IodT0wO3U8PXM7Kyt1KXsoaD14LnNsaWNl KCkpW3VdPTEsZ1t1KzFdPWgsdlt1KzFdPS0xfWZvcih1PTA7dTxyOysrdSl7dmFyIGI9bFt1 XTtnW3UrcysxXT1iLnBvaW50LHZbdStzKzFdPWIuaW5kZXh9dmFyIF89bihnLCExKTtfPWU/ Xy5maWx0ZXIoKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLHI9MDtyPD1zOysrcil7dmFyIG49 dlt0W3JdXTtpZihuPDAmJisrZT49MilyZXR1cm4hMTt0W3JdPW59cmV0dXJuITB9KSk6Xy5m aWx0ZXIoKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8PXM7KytlKXt2YXIgcj12W3RbZV1d O2lmKHI8MClyZXR1cm4hMTt0W2VdPXJ9cmV0dXJuITB9KSk7aWYoMSZzKWZvcih1PTA7dTxf Lmxlbmd0aDsrK3Upe2g9KGI9X1t1XSlbMF07YlswXT1iWzFdLGJbMV09aH1yZXR1cm4gX319 LHsiaW5jcmVtZW50YWwtY29udmV4LWh1bGwiOjIzMyx1bmlxOjMxMH1dLDY0OltmdW5jdGlv bih0LGUscil7KGZ1bmN0aW9uKHQpeyhmdW5jdGlvbigpe3ZhciByPSExO2lmKCJ1bmRlZmlu ZWQiIT10eXBlb2YgRmxvYXQ2NEFycmF5KXt2YXIgbj1uZXcgRmxvYXQ2NEFycmF5KDEpLGk9 bmV3IFVpbnQzMkFycmF5KG4uYnVmZmVyKTtpZihuWzBdPTEscj0hMCwxMDcyNjkzMjQ4PT09 aVsxXSl7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBuWzBdPXQsW2lbMF0saVsxXV19 LGUuZXhwb3J0cy5wYWNrPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGlbMF09dCxpWzFdPWUsblsw XX0sZS5leHBvcnRzLmxvPWZ1bmN0aW9uKHQpe3JldHVybiBuWzBdPXQsaVswXX0sZS5leHBv cnRzLmhpPWZ1bmN0aW9uKHQpe3JldHVybiBuWzBdPXQsaVsxXX19ZWxzZSBpZigxMDcyNjkz MjQ4PT09aVswXSl7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBuWzBdPXQsW2lbMV0s aVswXV19LGUuZXhwb3J0cy5wYWNrPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGlbMV09dCxpWzBd PWUsblswXX0sZS5leHBvcnRzLmxvPWZ1bmN0aW9uKHQpe3JldHVybiBuWzBdPXQsaVsxXX0s ZS5leHBvcnRzLmhpPWZ1bmN0aW9uKHQpe3JldHVybiBuWzBdPXQsaVswXX19ZWxzZSByPSEx fWlmKCFyKXt2YXIgYT1uZXcgdCg4KTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGEu d3JpdGVEb3VibGVMRSh0LDAsITApLFthLnJlYWRVSW50MzJMRSgwLCEwKSxhLnJlYWRVSW50 MzJMRSg0LCEwKV19LGUuZXhwb3J0cy5wYWNrPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGEud3Jp dGVVSW50MzJMRSh0LDAsITApLGEud3JpdGVVSW50MzJMRShlLDQsITApLGEucmVhZERvdWJs ZUxFKDAsITApfSxlLmV4cG9ydHMubG89ZnVuY3Rpb24odCl7cmV0dXJuIGEud3JpdGVEb3Vi bGVMRSh0LDAsITApLGEucmVhZFVJbnQzMkxFKDAsITApfSxlLmV4cG9ydHMuaGk9ZnVuY3Rp b24odCl7cmV0dXJuIGEud3JpdGVEb3VibGVMRSh0LDAsITApLGEucmVhZFVJbnQzMkxFKDQs ITApfX1lLmV4cG9ydHMuc2lnbj1mdW5jdGlvbih0KXtyZXR1cm4gZS5leHBvcnRzLmhpKHQp Pj4+MzF9LGUuZXhwb3J0cy5leHBvbmVudD1mdW5jdGlvbih0KXtyZXR1cm4oZS5leHBvcnRz LmhpKHQpPDwxPj4+MjEpLTEwMjN9LGUuZXhwb3J0cy5mcmFjdGlvbj1mdW5jdGlvbih0KXt2 YXIgcj1lLmV4cG9ydHMubG8odCksbj1lLmV4cG9ydHMuaGkodCksaT0xMDQ4NTc1Jm47cmV0 dXJuIDIxNDY0MzUwNzImbiYmKGkrPTE8PDIwKSxbcixpXX0sZS5leHBvcnRzLmRlbm9ybWFs aXplZD1mdW5jdGlvbih0KXtyZXR1cm4hKDIxNDY0MzUwNzImZS5leHBvcnRzLmhpKHQpKX19 KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHQoImJ1ZmZlciIpLkJ1ZmZlcil9LHtidWZmZXI6 M31dLDY1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlv bih0LGUpe3N3aXRjaCh2b2lkIDA9PT1lJiYoZT0wKSx0eXBlb2YgdCl7Y2FzZSJudW1iZXIi OmlmKHQ+MClyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgcixuO2ZvcihyPW5ldyBBcnJheSh0 KSxuPTA7bjx0OysrbilyW25dPWU7cmV0dXJuIHJ9KDB8dCxlKTticmVhaztjYXNlIm9iamVj dCI6aWYoIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0aClyZXR1cm4gZnVuY3Rpb24gdChlLHIs bil7dmFyIGk9MHxlW25dO2lmKGk8PTApcmV0dXJuW107dmFyIGEsbz1uZXcgQXJyYXkoaSk7 aWYobj09PWUubGVuZ3RoLTEpZm9yKGE9MDthPGk7KythKW9bYV09cjtlbHNlIGZvcihhPTA7 YTxpOysrYSlvW2FdPXQoZSxyLG4rMSk7cmV0dXJuIG99KHQsZSwwKX1yZXR1cm5bXX19LHt9 XSw2NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24o dCxlKXt2YXIgcj10Lmxlbmd0aDtpZigibnVtYmVyIiE9dHlwZW9mIGUpe2U9MDtmb3IodmFy IGk9MDtpPHI7KytpKXt2YXIgYT10W2ldO2U9TWF0aC5tYXgoZSxhWzBdLGFbMV0pfWU9MSso MHxlKX1lfD0wO3ZhciBvPW5ldyBBcnJheShlKTtmb3IoaT0wO2k8ZTsrK2kpb1tpXT1bXTtm b3IoaT0wO2k8cjsrK2kpe2E9dFtpXTtvW2FbMF1dLnB1c2goYVsxXSksb1thWzFdXS5wdXNo KGFbMF0pfWZvcih2YXIgcz0wO3M8ZTsrK3MpbihvW3NdLChmdW5jdGlvbih0LGUpe3JldHVy biB0LWV9KSk7cmV0dXJuIG99O3ZhciBuPXQoInVuaXEiKX0se3VuaXE6MzEwfV0sNjc6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2 YXIgbj1lfHwwLGk9cnx8MTtyZXR1cm5bW3RbMTJdK3RbMF0sdFsxM10rdFsxXSx0WzE0XSt0 WzJdLHRbMTVdK3RbM11dLFt0WzEyXS10WzBdLHRbMTNdLXRbMV0sdFsxNF0tdFsyXSx0WzE1 XS10WzNdXSxbdFsxMl0rdFs0XSx0WzEzXSt0WzVdLHRbMTRdK3RbNl0sdFsxNV0rdFs3XV0s W3RbMTJdLXRbNF0sdFsxM10tdFs1XSx0WzE0XS10WzZdLHRbMTVdLXRbN11dLFtuKnRbMTJd K3RbOF0sbip0WzEzXSt0WzldLG4qdFsxNF0rdFsxMF0sbip0WzE1XSt0WzExXV0sW2kqdFsx Ml0tdFs4XSxpKnRbMTNdLXRbOV0saSp0WzE0XS10WzEwXSxpKnRbMTVdLXRbMTFdXV19fSx7 fV0sNjg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9u KHQsZSxyKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBuZXcgbyhb MF0sWzBdLDApO2Nhc2UgMTpyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQ/bmV3IG8obj1sKHQp LG4sMCk6bmV3IG8odCxsKHQubGVuZ3RoKSwwKTtjYXNlIDI6aWYoIm51bWJlciI9PXR5cGVv ZiBlKXt2YXIgbj1sKHQubGVuZ3RoKTtyZXR1cm4gbmV3IG8odCxuLCtlKX1yPTA7Y2FzZSAz OmlmKHQubGVuZ3RoIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJzdGF0ZSBhbmQgdmVs b2NpdHkgbGVuZ3RocyBtdXN0IG1hdGNoIik7cmV0dXJuIG5ldyBvKHQsZSxyKX19O3ZhciBu PXQoImN1YmljLWhlcm1pdGUiKSxpPXQoImJpbmFyeS1zZWFyY2gtYm91bmRzIik7ZnVuY3Rp b24gYSh0LGUscil7cmV0dXJuIE1hdGgubWluKGUsTWF0aC5tYXgodCxyKSl9ZnVuY3Rpb24g byh0LGUscil7dGhpcy5kaW1lbnNpb249dC5sZW5ndGgsdGhpcy5ib3VuZHM9W25ldyBBcnJh eSh0aGlzLmRpbWVuc2lvbiksbmV3IEFycmF5KHRoaXMuZGltZW5zaW9uKV07Zm9yKHZhciBu PTA7bjx0aGlzLmRpbWVuc2lvbjsrK24pdGhpcy5ib3VuZHNbMF1bbl09LTEvMCx0aGlzLmJv dW5kc1sxXVtuXT0xLzA7dGhpcy5fc3RhdGU9dC5zbGljZSgpLnJldmVyc2UoKSx0aGlzLl92 ZWxvY2l0eT1lLnNsaWNlKCkucmV2ZXJzZSgpLHRoaXMuX3RpbWU9W3JdLHRoaXMuX3NjcmF0 Y2g9W3Quc2xpY2UoKSx0LnNsaWNlKCksdC5zbGljZSgpLHQuc2xpY2UoKSx0LnNsaWNlKCld fXZhciBzPW8ucHJvdG90eXBlO2Z1bmN0aW9uIGwodCl7Zm9yKHZhciBlPW5ldyBBcnJheSh0 KSxyPTA7cjx0OysrcillW3JdPTA7cmV0dXJuIGV9cy5mbHVzaD1mdW5jdGlvbih0KXt2YXIg ZT1pLmd0KHRoaXMuX3RpbWUsdCktMTtlPD0wfHwodGhpcy5fdGltZS5zcGxpY2UoMCxlKSx0 aGlzLl9zdGF0ZS5zcGxpY2UoMCxlKnRoaXMuZGltZW5zaW9uKSx0aGlzLl92ZWxvY2l0eS5z cGxpY2UoMCxlKnRoaXMuZGltZW5zaW9uKSl9LHMuY3VydmU9ZnVuY3Rpb24odCl7dmFyIGU9 dGhpcy5fdGltZSxyPWUubGVuZ3RoLG89aS5sZShlLHQpLHM9dGhpcy5fc2NyYXRjaFswXSxs PXRoaXMuX3N0YXRlLGM9dGhpcy5fdmVsb2NpdHksdT10aGlzLmRpbWVuc2lvbixmPXRoaXMu Ym91bmRzO2lmKG88MClmb3IodmFyIGg9dS0xLHA9MDtwPHU7KytwLC0taClzW3BdPWxbaF07 ZWxzZSBpZihvPj1yLTEpe2g9bC5sZW5ndGgtMTt2YXIgZD10LWVbci0xXTtmb3IocD0wO3A8 dTsrK3AsLS1oKXNbcF09bFtoXStkKmNbaF19ZWxzZXtoPXUqKG8rMSktMTt2YXIgbT1lW29d LGc9ZVtvKzFdLW18fDEsdj10aGlzLl9zY3JhdGNoWzFdLHk9dGhpcy5fc2NyYXRjaFsyXSx4 PXRoaXMuX3NjcmF0Y2hbM10sYj10aGlzLl9zY3JhdGNoWzRdLF89ITA7Zm9yKHA9MDtwPHU7 KytwLC0taCl2W3BdPWxbaF0seFtwXT1jW2hdKmcseVtwXT1sW2grdV0sYltwXT1jW2grdV0q ZyxfPV8mJnZbcF09PT15W3BdJiZ4W3BdPT09YltwXSYmMD09PXhbcF07aWYoXylmb3IocD0w O3A8dTsrK3Apc1twXT12W3BdO2Vsc2Ugbih2LHgseSxiLCh0LW0pL2cscyl9dmFyIHc9Zlsw XSxUPWZbMV07Zm9yKHA9MDtwPHU7KytwKXNbcF09YSh3W3BdLFRbcF0sc1twXSk7cmV0dXJu IHN9LHMuZGN1cnZlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3RpbWUscj1lLmxlbmd0aCxh PWkubGUoZSx0KSxvPXRoaXMuX3NjcmF0Y2hbMF0scz10aGlzLl9zdGF0ZSxsPXRoaXMuX3Zl bG9jaXR5LGM9dGhpcy5kaW1lbnNpb247aWYoYT49ci0xKWZvcih2YXIgdT1zLmxlbmd0aC0x LGY9KGVbci0xXSwwKTtmPGM7KytmLC0tdSlvW2ZdPWxbdV07ZWxzZXt1PWMqKGErMSktMTt2 YXIgaD1lW2FdLHA9ZVthKzFdLWh8fDEsZD10aGlzLl9zY3JhdGNoWzFdLG09dGhpcy5fc2Ny YXRjaFsyXSxnPXRoaXMuX3NjcmF0Y2hbM10sdj10aGlzLl9zY3JhdGNoWzRdLHk9ITA7Zm9y KGY9MDtmPGM7KytmLC0tdSlkW2ZdPXNbdV0sZ1tmXT1sW3VdKnAsbVtmXT1zW3UrY10sdltm XT1sW3UrY10qcCx5PXkmJmRbZl09PT1tW2ZdJiZnW2ZdPT09dltmXSYmMD09PWdbZl07aWYo eSlmb3IoZj0wO2Y8YzsrK2Ypb1tmXT0wO2Vsc2V7bi5kZXJpdmF0aXZlKGQsZyxtLHYsKHQt aCkvcCxvKTtmb3IoZj0wO2Y8YzsrK2Ypb1tmXS89cH19cmV0dXJuIG99LHMubGFzdFQ9ZnVu Y3Rpb24oKXt2YXIgdD10aGlzLl90aW1lO3JldHVybiB0W3QubGVuZ3RoLTFdfSxzLnN0YWJs ZT1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl92ZWxvY2l0eSxlPXQubGVuZ3RoLHI9dGhp cy5kaW1lbnNpb24tMTtyPj0wOy0tcilpZih0Wy0tZV0pcmV0dXJuITE7cmV0dXJuITB9LHMu anVtcD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmxhc3RUKCkscj10aGlzLmRpbWVuc2lvbjtp ZighKHQ8ZXx8YXJndW1lbnRzLmxlbmd0aCE9PXIrMSkpe3ZhciBuPXRoaXMuX3N0YXRlLGk9 dGhpcy5fdmVsb2NpdHksbz1uLmxlbmd0aC10aGlzLmRpbWVuc2lvbixzPXRoaXMuYm91bmRz LGw9c1swXSxjPXNbMV07dGhpcy5fdGltZS5wdXNoKGUsdCk7Zm9yKHZhciB1PTA7dTwyOysr dSlmb3IodmFyIGY9MDtmPHI7KytmKW4ucHVzaChuW28rK10pLGkucHVzaCgwKTt0aGlzLl90 aW1lLnB1c2godCk7Zm9yKGY9cjtmPjA7LS1mKW4ucHVzaChhKGxbZi0xXSxjW2YtMV0sYXJn dW1lbnRzW2ZdKSksaS5wdXNoKDApfX0scy5wdXNoPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMu bGFzdFQoKSxyPXRoaXMuZGltZW5zaW9uO2lmKCEodDxlfHxhcmd1bWVudHMubGVuZ3RoIT09 cisxKSl7dmFyIG49dGhpcy5fc3RhdGUsaT10aGlzLl92ZWxvY2l0eSxvPW4ubGVuZ3RoLXRo aXMuZGltZW5zaW9uLHM9dC1lLGw9dGhpcy5ib3VuZHMsYz1sWzBdLHU9bFsxXSxmPXM+MWUt Nj8xL3M6MDt0aGlzLl90aW1lLnB1c2godCk7Zm9yKHZhciBoPXI7aD4wOy0taCl7dmFyIHA9 YShjW2gtMV0sdVtoLTFdLGFyZ3VtZW50c1toXSk7bi5wdXNoKHApLGkucHVzaCgocC1uW28r K10pKmYpfX19LHMuc2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGltZW5zaW9uO2lmKCEo dDx0aGlzLmxhc3RUKCl8fGFyZ3VtZW50cy5sZW5ndGghPT1lKzEpKXt2YXIgcj10aGlzLl9z dGF0ZSxuPXRoaXMuX3ZlbG9jaXR5LGk9dGhpcy5ib3VuZHMsbz1pWzBdLHM9aVsxXTt0aGlz Ll90aW1lLnB1c2godCk7Zm9yKHZhciBsPWU7bD4wOy0tbClyLnB1c2goYShvW2wtMV0sc1ts LTFdLGFyZ3VtZW50c1tsXSkpLG4ucHVzaCgwKX19LHMubW92ZT1mdW5jdGlvbih0KXt2YXIg ZT10aGlzLmxhc3RUKCkscj10aGlzLmRpbWVuc2lvbjtpZighKHQ8PWV8fGFyZ3VtZW50cy5s ZW5ndGghPT1yKzEpKXt2YXIgbj10aGlzLl9zdGF0ZSxpPXRoaXMuX3ZlbG9jaXR5LG89bi5s ZW5ndGgtdGhpcy5kaW1lbnNpb24scz10aGlzLmJvdW5kcyxsPXNbMF0sYz1zWzFdLHU9dC1l LGY9dT4xZS02PzEvdTowO3RoaXMuX3RpbWUucHVzaCh0KTtmb3IodmFyIGg9cjtoPjA7LS1o KXt2YXIgcD1hcmd1bWVudHNbaF07bi5wdXNoKGEobFtoLTFdLGNbaC0xXSxuW28rK10rcCkp LGkucHVzaChwKmYpfX19LHMuaWRsZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmxhc3RUKCk7 aWYoISh0PGUpKXt2YXIgcj10aGlzLmRpbWVuc2lvbixuPXRoaXMuX3N0YXRlLGk9dGhpcy5f dmVsb2NpdHksbz1uLmxlbmd0aC1yLHM9dGhpcy5ib3VuZHMsbD1zWzBdLGM9c1sxXSx1PXQt ZTt0aGlzLl90aW1lLnB1c2godCk7Zm9yKHZhciBmPXItMTtmPj0wOy0tZiluLnB1c2goYShs W2ZdLGNbZl0sbltvXSt1Kmlbb10pKSxpLnB1c2goMCksbys9MX19fSx7ImJpbmFyeS1zZWFy Y2gtYm91bmRzIjozMSwiY3ViaWMtaGVybWl0ZSI6NjJ9XSw2OTpbZnVuY3Rpb24odCxlLHIp eyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBzKHR8fG0s bnVsbCl9O2Z1bmN0aW9uIG4odCxlLHIsbixpLGEpe3RoaXMuX2NvbG9yPXQsdGhpcy5rZXk9 ZSx0aGlzLnZhbHVlPXIsdGhpcy5sZWZ0PW4sdGhpcy5yaWdodD1pLHRoaXMuX2NvdW50PWF9 ZnVuY3Rpb24gaSh0KXtyZXR1cm4gbmV3IG4odC5fY29sb3IsdC5rZXksdC52YWx1ZSx0Lmxl ZnQsdC5yaWdodCx0Ll9jb3VudCl9ZnVuY3Rpb24gYSh0LGUpe3JldHVybiBuZXcgbih0LGUu a2V5LGUudmFsdWUsZS5sZWZ0LGUucmlnaHQsZS5fY291bnQpfWZ1bmN0aW9uIG8odCl7dC5f Y291bnQ9MSsodC5sZWZ0P3QubGVmdC5fY291bnQ6MCkrKHQucmlnaHQ/dC5yaWdodC5fY291 bnQ6MCl9ZnVuY3Rpb24gcyh0LGUpe3RoaXMuX2NvbXBhcmU9dCx0aGlzLnJvb3Q9ZX12YXIg bD1zLnByb3RvdHlwZTtmdW5jdGlvbiBjKHQsZSl7dmFyIHI7aWYoZS5sZWZ0JiYocj1jKHQs ZS5sZWZ0KSkpcmV0dXJuIHI7cmV0dXJuKHI9dChlLmtleSxlLnZhbHVlKSl8fChlLnJpZ2h0 P2ModCxlLnJpZ2h0KTp2b2lkIDApfWZ1bmN0aW9uIHUodCxlLHIsbil7aWYoZSh0LG4ua2V5 KTw9MCl7dmFyIGk7aWYobi5sZWZ0KWlmKGk9dSh0LGUscixuLmxlZnQpKXJldHVybiBpO2lm KGk9cihuLmtleSxuLnZhbHVlKSlyZXR1cm4gaX1pZihuLnJpZ2h0KXJldHVybiB1KHQsZSxy LG4ucmlnaHQpfWZ1bmN0aW9uIGYodCxlLHIsbixpKXt2YXIgYSxvPXIodCxpLmtleSkscz1y KGUsaS5rZXkpO2lmKG88PTApe2lmKGkubGVmdCYmKGE9Zih0LGUscixuLGkubGVmdCkpKXJl dHVybiBhO2lmKHM+MCYmKGE9bihpLmtleSxpLnZhbHVlKSkpcmV0dXJuIGF9aWYocz4wJiZp LnJpZ2h0KXJldHVybiBmKHQsZSxyLG4saS5yaWdodCl9ZnVuY3Rpb24gaCh0LGUpe3RoaXMu dHJlZT10LHRoaXMuX3N0YWNrPWV9T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsImtleXMiLHtn ZXQ6ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoKChmdW5jdGlvbihl LHIpe3QucHVzaChlKX0pKSx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJ2YWx1ZXMi LHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoKChmdW5jdGlv bihlLHIpe3QucHVzaChyKX0pKSx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJsZW5n dGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yb290P3RoaXMucm9vdC5fY291bnQ6 MH19KSxsLmluc2VydD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10aGlzLl9jb21wYXJlLGk9 dGhpcy5yb290LGw9W10sYz1bXTtpOyl7dmFyIHU9cih0LGkua2V5KTtsLnB1c2goaSksYy5w dXNoKHUpLGk9dTw9MD9pLmxlZnQ6aS5yaWdodH1sLnB1c2gobmV3IG4oMCx0LGUsbnVsbCxu dWxsLDEpKTtmb3IodmFyIGY9bC5sZW5ndGgtMjtmPj0wOy0tZil7aT1sW2ZdO2NbZl08PTA/ bFtmXT1uZXcgbihpLl9jb2xvcixpLmtleSxpLnZhbHVlLGxbZisxXSxpLnJpZ2h0LGkuX2Nv dW50KzEpOmxbZl09bmV3IG4oaS5fY29sb3IsaS5rZXksaS52YWx1ZSxpLmxlZnQsbFtmKzFd LGkuX2NvdW50KzEpfWZvcihmPWwubGVuZ3RoLTE7Zj4xOy0tZil7dmFyIGg9bFtmLTFdO2k9 bFtmXTtpZigxPT09aC5fY29sb3J8fDE9PT1pLl9jb2xvcilicmVhazt2YXIgcD1sW2YtMl07 aWYocC5sZWZ0PT09aClpZihoLmxlZnQ9PT1pKXtpZighKGQ9cC5yaWdodCl8fDAhPT1kLl9j b2xvcil7aWYocC5fY29sb3I9MCxwLmxlZnQ9aC5yaWdodCxoLl9jb2xvcj0xLGgucmlnaHQ9 cCxsW2YtMl09aCxsW2YtMV09aSxvKHApLG8oaCksZj49MykobT1sW2YtM10pLmxlZnQ9PT1w P20ubGVmdD1oOm0ucmlnaHQ9aDticmVha31oLl9jb2xvcj0xLHAucmlnaHQ9YSgxLGQpLHAu X2NvbG9yPTAsZi09MX1lbHNle2lmKCEoZD1wLnJpZ2h0KXx8MCE9PWQuX2NvbG9yKXtpZiho LnJpZ2h0PWkubGVmdCxwLl9jb2xvcj0wLHAubGVmdD1pLnJpZ2h0LGkuX2NvbG9yPTEsaS5s ZWZ0PWgsaS5yaWdodD1wLGxbZi0yXT1pLGxbZi0xXT1oLG8ocCksbyhoKSxvKGkpLGY+PTMp KG09bFtmLTNdKS5sZWZ0PT09cD9tLmxlZnQ9aTptLnJpZ2h0PWk7YnJlYWt9aC5fY29sb3I9 MSxwLnJpZ2h0PWEoMSxkKSxwLl9jb2xvcj0wLGYtPTF9ZWxzZSBpZihoLnJpZ2h0PT09aSl7 aWYoIShkPXAubGVmdCl8fDAhPT1kLl9jb2xvcil7aWYocC5fY29sb3I9MCxwLnJpZ2h0PWgu bGVmdCxoLl9jb2xvcj0xLGgubGVmdD1wLGxbZi0yXT1oLGxbZi0xXT1pLG8ocCksbyhoKSxm Pj0zKShtPWxbZi0zXSkucmlnaHQ9PT1wP20ucmlnaHQ9aDptLmxlZnQ9aDticmVha31oLl9j b2xvcj0xLHAubGVmdD1hKDEsZCkscC5fY29sb3I9MCxmLT0xfWVsc2V7dmFyIGQ7aWYoIShk PXAubGVmdCl8fDAhPT1kLl9jb2xvcil7dmFyIG07aWYoaC5sZWZ0PWkucmlnaHQscC5fY29s b3I9MCxwLnJpZ2h0PWkubGVmdCxpLl9jb2xvcj0xLGkucmlnaHQ9aCxpLmxlZnQ9cCxsW2Yt Ml09aSxsW2YtMV09aCxvKHApLG8oaCksbyhpKSxmPj0zKShtPWxbZi0zXSkucmlnaHQ9PT1w P20ucmlnaHQ9aTptLmxlZnQ9aTticmVha31oLl9jb2xvcj0xLHAubGVmdD1hKDEsZCkscC5f Y29sb3I9MCxmLT0xfX1yZXR1cm4gbFswXS5fY29sb3I9MSxuZXcgcyhyLGxbMF0pfSxsLmZv ckVhY2g9ZnVuY3Rpb24odCxlLHIpe2lmKHRoaXMucm9vdClzd2l0Y2goYXJndW1lbnRzLmxl bmd0aCl7Y2FzZSAxOnJldHVybiBjKHQsdGhpcy5yb290KTtjYXNlIDI6cmV0dXJuIHUoZSx0 aGlzLl9jb21wYXJlLHQsdGhpcy5yb290KTtjYXNlIDM6aWYodGhpcy5fY29tcGFyZShlLHIp Pj0wKXJldHVybjtyZXR1cm4gZihlLHIsdGhpcy5fY29tcGFyZSx0LHRoaXMucm9vdCl9fSxP YmplY3QuZGVmaW5lUHJvcGVydHkobCwiYmVnaW4iLHtnZXQ6ZnVuY3Rpb24oKXtmb3IodmFy IHQ9W10sZT10aGlzLnJvb3Q7ZTspdC5wdXNoKGUpLGU9ZS5sZWZ0O3JldHVybiBuZXcgaCh0 aGlzLHQpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLCJlbmQiLHtnZXQ6ZnVuY3Rpb24o KXtmb3IodmFyIHQ9W10sZT10aGlzLnJvb3Q7ZTspdC5wdXNoKGUpLGU9ZS5yaWdodDtyZXR1 cm4gbmV3IGgodGhpcyx0KX19KSxsLmF0PWZ1bmN0aW9uKHQpe2lmKHQ8MClyZXR1cm4gbmV3 IGgodGhpcyxbXSk7Zm9yKHZhciBlPXRoaXMucm9vdCxyPVtdOzspe2lmKHIucHVzaChlKSxl LmxlZnQpe2lmKHQ8ZS5sZWZ0Ll9jb3VudCl7ZT1lLmxlZnQ7Y29udGludWV9dC09ZS5sZWZ0 Ll9jb3VudH1pZighdClyZXR1cm4gbmV3IGgodGhpcyxyKTtpZih0LT0xLCFlLnJpZ2h0KWJy ZWFrO2lmKHQ+PWUucmlnaHQuX2NvdW50KWJyZWFrO2U9ZS5yaWdodH1yZXR1cm4gbmV3IGgo dGhpcyxbXSl9LGwuZ2U9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX2NvbXBhcmUscj10 aGlzLnJvb3Qsbj1bXSxpPTA7cjspe3ZhciBhPWUodCxyLmtleSk7bi5wdXNoKHIpLGE8PTAm JihpPW4ubGVuZ3RoKSxyPWE8PTA/ci5sZWZ0OnIucmlnaHR9cmV0dXJuIG4ubGVuZ3RoPWks bmV3IGgodGhpcyxuKX0sbC5ndD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5fY29tcGFy ZSxyPXRoaXMucm9vdCxuPVtdLGk9MDtyOyl7dmFyIGE9ZSh0LHIua2V5KTtuLnB1c2gociks YTwwJiYoaT1uLmxlbmd0aCkscj1hPDA/ci5sZWZ0OnIucmlnaHR9cmV0dXJuIG4ubGVuZ3Ro PWksbmV3IGgodGhpcyxuKX0sbC5sdD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5fY29t cGFyZSxyPXRoaXMucm9vdCxuPVtdLGk9MDtyOyl7dmFyIGE9ZSh0LHIua2V5KTtuLnB1c2go ciksYT4wJiYoaT1uLmxlbmd0aCkscj1hPD0wP3IubGVmdDpyLnJpZ2h0fXJldHVybiBuLmxl bmd0aD1pLG5ldyBoKHRoaXMsbil9LGwubGU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMu X2NvbXBhcmUscj10aGlzLnJvb3Qsbj1bXSxpPTA7cjspe3ZhciBhPWUodCxyLmtleSk7bi5w dXNoKHIpLGE+PTAmJihpPW4ubGVuZ3RoKSxyPWE8MD9yLmxlZnQ6ci5yaWdodH1yZXR1cm4g bi5sZW5ndGg9aSxuZXcgaCh0aGlzLG4pfSxsLmZpbmQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBl PXRoaXMuX2NvbXBhcmUscj10aGlzLnJvb3Qsbj1bXTtyOyl7dmFyIGk9ZSh0LHIua2V5KTtp ZihuLnB1c2gociksMD09PWkpcmV0dXJuIG5ldyBoKHRoaXMsbik7cj1pPD0wP3IubGVmdDpy LnJpZ2h0fXJldHVybiBuZXcgaCh0aGlzLFtdKX0sbC5yZW1vdmU9ZnVuY3Rpb24odCl7dmFy IGU9dGhpcy5maW5kKHQpO3JldHVybiBlP2UucmVtb3ZlKCk6dGhpc30sbC5nZXQ9ZnVuY3Rp b24odCl7Zm9yKHZhciBlPXRoaXMuX2NvbXBhcmUscj10aGlzLnJvb3Q7cjspe3ZhciBuPWUo dCxyLmtleSk7aWYoMD09PW4pcmV0dXJuIHIudmFsdWU7cj1uPD0wP3IubGVmdDpyLnJpZ2h0 fX07dmFyIHA9aC5wcm90b3R5cGU7ZnVuY3Rpb24gZCh0LGUpe3Qua2V5PWUua2V5LHQudmFs dWU9ZS52YWx1ZSx0LmxlZnQ9ZS5sZWZ0LHQucmlnaHQ9ZS5yaWdodCx0Ll9jb2xvcj1lLl9j b2xvcix0Ll9jb3VudD1lLl9jb3VudH1mdW5jdGlvbiBtKHQsZSl7cmV0dXJuIHQ8ZT8tMTp0 PmU/MTowfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShwLCJ2YWxpZCIse2dldDpmdW5jdGlvbigp e3JldHVybiB0aGlzLl9zdGFjay5sZW5ndGg+MH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHko cCwibm9kZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGFjay5sZW5ndGg+MD90 aGlzLl9zdGFja1t0aGlzLl9zdGFjay5sZW5ndGgtMV06bnVsbH0sZW51bWVyYWJsZTohMH0p LHAuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGgodGhpcy50cmVlLHRoaXMuX3N0YWNr LnNsaWNlKCkpfSxwLnJlbW92ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3N0YWNrO2lmKDA9 PT10Lmxlbmd0aClyZXR1cm4gdGhpcy50cmVlO3ZhciBlPW5ldyBBcnJheSh0Lmxlbmd0aCks cj10W3QubGVuZ3RoLTFdO2VbZS5sZW5ndGgtMV09bmV3IG4oci5fY29sb3Isci5rZXksci52 YWx1ZSxyLmxlZnQsci5yaWdodCxyLl9jb3VudCk7Zm9yKHZhciBsPXQubGVuZ3RoLTI7bD49 MDstLWwpeyhyPXRbbF0pLmxlZnQ9PT10W2wrMV0/ZVtsXT1uZXcgbihyLl9jb2xvcixyLmtl eSxyLnZhbHVlLGVbbCsxXSxyLnJpZ2h0LHIuX2NvdW50KTplW2xdPW5ldyBuKHIuX2NvbG9y LHIua2V5LHIudmFsdWUsci5sZWZ0LGVbbCsxXSxyLl9jb3VudCl9aWYoKHI9ZVtlLmxlbmd0 aC0xXSkubGVmdCYmci5yaWdodCl7dmFyIGM9ZS5sZW5ndGg7Zm9yKHI9ci5sZWZ0O3Iucmln aHQ7KWUucHVzaChyKSxyPXIucmlnaHQ7dmFyIHU9ZVtjLTFdO2UucHVzaChuZXcgbihyLl9j b2xvcix1LmtleSx1LnZhbHVlLHIubGVmdCxyLnJpZ2h0LHIuX2NvdW50KSksZVtjLTFdLmtl eT1yLmtleSxlW2MtMV0udmFsdWU9ci52YWx1ZTtmb3IobD1lLmxlbmd0aC0yO2w+PWM7LS1s KXI9ZVtsXSxlW2xdPW5ldyBuKHIuX2NvbG9yLHIua2V5LHIudmFsdWUsci5sZWZ0LGVbbCsx XSxyLl9jb3VudCk7ZVtjLTFdLmxlZnQ9ZVtjXX1pZigwPT09KHI9ZVtlLmxlbmd0aC0xXSku X2NvbG9yKXt2YXIgZj1lW2UubGVuZ3RoLTJdO2YubGVmdD09PXI/Zi5sZWZ0PW51bGw6Zi5y aWdodD09PXImJihmLnJpZ2h0PW51bGwpLGUucG9wKCk7Zm9yKGw9MDtsPGUubGVuZ3RoOysr bCllW2xdLl9jb3VudC0tO3JldHVybiBuZXcgcyh0aGlzLnRyZWUuX2NvbXBhcmUsZVswXSl9 aWYoci5sZWZ0fHxyLnJpZ2h0KXtyLmxlZnQ/ZChyLHIubGVmdCk6ci5yaWdodCYmZChyLHIu cmlnaHQpLHIuX2NvbG9yPTE7Zm9yKGw9MDtsPGUubGVuZ3RoLTE7KytsKWVbbF0uX2NvdW50 LS07cmV0dXJuIG5ldyBzKHRoaXMudHJlZS5fY29tcGFyZSxlWzBdKX1pZigxPT09ZS5sZW5n dGgpcmV0dXJuIG5ldyBzKHRoaXMudHJlZS5fY29tcGFyZSxudWxsKTtmb3IobD0wO2w8ZS5s ZW5ndGg7KytsKWVbbF0uX2NvdW50LS07dmFyIGg9ZVtlLmxlbmd0aC0yXTtyZXR1cm4gZnVu Y3Rpb24odCl7Zm9yKHZhciBlLHIsbixzLGw9dC5sZW5ndGgtMTtsPj0wOy0tbCl7aWYoZT10 W2xdLDA9PT1sKXJldHVybiB2b2lkKGUuX2NvbG9yPTEpO2lmKChyPXRbbC0xXSkubGVmdD09 PWUpe2lmKChuPXIucmlnaHQpLnJpZ2h0JiYwPT09bi5yaWdodC5fY29sb3Ipe2lmKHM9KG49 ci5yaWdodD1pKG4pKS5yaWdodD1pKG4ucmlnaHQpLHIucmlnaHQ9bi5sZWZ0LG4ubGVmdD1y LG4ucmlnaHQ9cyxuLl9jb2xvcj1yLl9jb2xvcixlLl9jb2xvcj0xLHIuX2NvbG9yPTEscy5f Y29sb3I9MSxvKHIpLG8obiksbD4xKShjPXRbbC0yXSkubGVmdD09PXI/Yy5sZWZ0PW46Yy5y aWdodD1uO3JldHVybiB2b2lkKHRbbC0xXT1uKX1pZihuLmxlZnQmJjA9PT1uLmxlZnQuX2Nv bG9yKXtpZihzPShuPXIucmlnaHQ9aShuKSkubGVmdD1pKG4ubGVmdCksci5yaWdodD1zLmxl ZnQsbi5sZWZ0PXMucmlnaHQscy5sZWZ0PXIscy5yaWdodD1uLHMuX2NvbG9yPXIuX2NvbG9y LHIuX2NvbG9yPTEsbi5fY29sb3I9MSxlLl9jb2xvcj0xLG8ociksbyhuKSxvKHMpLGw+MSko Yz10W2wtMl0pLmxlZnQ9PT1yP2MubGVmdD1zOmMucmlnaHQ9cztyZXR1cm4gdm9pZCh0W2wt MV09cyl9aWYoMT09PW4uX2NvbG9yKXtpZigwPT09ci5fY29sb3IpcmV0dXJuIHIuX2NvbG9y PTEsdm9pZChyLnJpZ2h0PWEoMCxuKSk7ci5yaWdodD1hKDAsbik7Y29udGludWV9bj1pKG4p LHIucmlnaHQ9bi5sZWZ0LG4ubGVmdD1yLG4uX2NvbG9yPXIuX2NvbG9yLHIuX2NvbG9yPTAs byhyKSxvKG4pLGw+MSYmKChjPXRbbC0yXSkubGVmdD09PXI/Yy5sZWZ0PW46Yy5yaWdodD1u KSx0W2wtMV09bix0W2xdPXIsbCsxPHQubGVuZ3RoP3RbbCsxXT1lOnQucHVzaChlKSxsKz0y fWVsc2V7aWYoKG49ci5sZWZ0KS5sZWZ0JiYwPT09bi5sZWZ0Ll9jb2xvcil7aWYocz0obj1y LmxlZnQ9aShuKSkubGVmdD1pKG4ubGVmdCksci5sZWZ0PW4ucmlnaHQsbi5yaWdodD1yLG4u bGVmdD1zLG4uX2NvbG9yPXIuX2NvbG9yLGUuX2NvbG9yPTEsci5fY29sb3I9MSxzLl9jb2xv cj0xLG8ociksbyhuKSxsPjEpKGM9dFtsLTJdKS5yaWdodD09PXI/Yy5yaWdodD1uOmMubGVm dD1uO3JldHVybiB2b2lkKHRbbC0xXT1uKX1pZihuLnJpZ2h0JiYwPT09bi5yaWdodC5fY29s b3Ipe2lmKHM9KG49ci5sZWZ0PWkobikpLnJpZ2h0PWkobi5yaWdodCksci5sZWZ0PXMucmln aHQsbi5yaWdodD1zLmxlZnQscy5yaWdodD1yLHMubGVmdD1uLHMuX2NvbG9yPXIuX2NvbG9y LHIuX2NvbG9yPTEsbi5fY29sb3I9MSxlLl9jb2xvcj0xLG8ociksbyhuKSxvKHMpLGw+MSko Yz10W2wtMl0pLnJpZ2h0PT09cj9jLnJpZ2h0PXM6Yy5sZWZ0PXM7cmV0dXJuIHZvaWQodFts LTFdPXMpfWlmKDE9PT1uLl9jb2xvcil7aWYoMD09PXIuX2NvbG9yKXJldHVybiByLl9jb2xv cj0xLHZvaWQoci5sZWZ0PWEoMCxuKSk7ci5sZWZ0PWEoMCxuKTtjb250aW51ZX12YXIgYztu PWkobiksci5sZWZ0PW4ucmlnaHQsbi5yaWdodD1yLG4uX2NvbG9yPXIuX2NvbG9yLHIuX2Nv bG9yPTAsbyhyKSxvKG4pLGw+MSYmKChjPXRbbC0yXSkucmlnaHQ9PT1yP2MucmlnaHQ9bjpj LmxlZnQ9biksdFtsLTFdPW4sdFtsXT1yLGwrMTx0Lmxlbmd0aD90W2wrMV09ZTp0LnB1c2go ZSksbCs9Mn19fShlKSxoLmxlZnQ9PT1yP2gubGVmdD1udWxsOmgucmlnaHQ9bnVsbCxuZXcg cyh0aGlzLnRyZWUuX2NvbXBhcmUsZVswXSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwLCJr ZXkiLHtnZXQ6ZnVuY3Rpb24oKXtpZih0aGlzLl9zdGFjay5sZW5ndGg+MClyZXR1cm4gdGhp cy5fc3RhY2tbdGhpcy5fc3RhY2subGVuZ3RoLTFdLmtleX0sZW51bWVyYWJsZTohMH0pLE9i amVjdC5kZWZpbmVQcm9wZXJ0eShwLCJ2YWx1ZSIse2dldDpmdW5jdGlvbigpe2lmKHRoaXMu X3N0YWNrLmxlbmd0aD4wKXJldHVybiB0aGlzLl9zdGFja1t0aGlzLl9zdGFjay5sZW5ndGgt MV0udmFsdWV9LGVudW1lcmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkocCwiaW5k ZXgiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgdD0wLGU9dGhpcy5fc3RhY2s7aWYoMD09PWUubGVu Z3RoKXt2YXIgcj10aGlzLnRyZWUucm9vdDtyZXR1cm4gcj9yLl9jb3VudDowfWVbZS5sZW5n dGgtMV0ubGVmdCYmKHQ9ZVtlLmxlbmd0aC0xXS5sZWZ0Ll9jb3VudCk7Zm9yKHZhciBuPWUu bGVuZ3RoLTI7bj49MDstLW4pZVtuKzFdPT09ZVtuXS5yaWdodCYmKCsrdCxlW25dLmxlZnQm Jih0Kz1lW25dLmxlZnQuX2NvdW50KSk7cmV0dXJuIHR9LGVudW1lcmFibGU6ITB9KSxwLm5l eHQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9zdGFjaztpZigwIT09dC5sZW5ndGgpe3ZhciBl PXRbdC5sZW5ndGgtMV07aWYoZS5yaWdodClmb3IoZT1lLnJpZ2h0O2U7KXQucHVzaChlKSxl PWUubGVmdDtlbHNlIGZvcih0LnBvcCgpO3QubGVuZ3RoPjAmJnRbdC5sZW5ndGgtMV0ucmln aHQ9PT1lOyllPXRbdC5sZW5ndGgtMV0sdC5wb3AoKX19LE9iamVjdC5kZWZpbmVQcm9wZXJ0 eShwLCJoYXNOZXh0Iix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc3RhY2s7aWYoMD09 PXQubGVuZ3RoKXJldHVybiExO2lmKHRbdC5sZW5ndGgtMV0ucmlnaHQpcmV0dXJuITA7Zm9y KHZhciBlPXQubGVuZ3RoLTE7ZT4wOy0tZSlpZih0W2UtMV0ubGVmdD09PXRbZV0pcmV0dXJu ITA7cmV0dXJuITF9fSkscC51cGRhdGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc3RhY2s7 aWYoMD09PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiQ2FuJ3QgdXBkYXRlIGVtcHR5IG5v ZGUhIik7dmFyIHI9bmV3IEFycmF5KGUubGVuZ3RoKSxpPWVbZS5sZW5ndGgtMV07cltyLmxl bmd0aC0xXT1uZXcgbihpLl9jb2xvcixpLmtleSx0LGkubGVmdCxpLnJpZ2h0LGkuX2NvdW50 KTtmb3IodmFyIGE9ZS5sZW5ndGgtMjthPj0wOy0tYSkoaT1lW2FdKS5sZWZ0PT09ZVthKzFd P3JbYV09bmV3IG4oaS5fY29sb3IsaS5rZXksaS52YWx1ZSxyW2ErMV0saS5yaWdodCxpLl9j b3VudCk6clthXT1uZXcgbihpLl9jb2xvcixpLmtleSxpLnZhbHVlLGkubGVmdCxyW2ErMV0s aS5fY291bnQpO3JldHVybiBuZXcgcyh0aGlzLnRyZWUuX2NvbXBhcmUsclswXSl9LHAucHJl dj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3N0YWNrO2lmKDAhPT10Lmxlbmd0aCl7dmFyIGU9 dFt0Lmxlbmd0aC0xXTtpZihlLmxlZnQpZm9yKGU9ZS5sZWZ0O2U7KXQucHVzaChlKSxlPWUu cmlnaHQ7ZWxzZSBmb3IodC5wb3AoKTt0Lmxlbmd0aD4wJiZ0W3QubGVuZ3RoLTFdLmxlZnQ9 PT1lOyllPXRbdC5sZW5ndGgtMV0sdC5wb3AoKX19LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShw LCJoYXNQcmV2Iix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc3RhY2s7aWYoMD09PXQu bGVuZ3RoKXJldHVybiExO2lmKHRbdC5sZW5ndGgtMV0ubGVmdClyZXR1cm4hMDtmb3IodmFy IGU9dC5sZW5ndGgtMTtlPjA7LS1lKWlmKHRbZS0xXS5yaWdodD09PXRbZV0pcmV0dXJuITA7 cmV0dXJuITF9fSl9LHt9XSw3MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4 cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1uZXcgdSh0KTtyZXR1cm4gci51cGRhdGUoZSks cn07dmFyIG49dCgiLi9saWIvdGV4dC5qcyIpLGk9dCgiLi9saWIvbGluZXMuanMiKSxhPXQo Ii4vbGliL2JhY2tncm91bmQuanMiKSxvPXQoIi4vbGliL2N1YmUuanMiKSxzPXQoIi4vbGli L3RpY2tzLmpzIiksbD1uZXcgRmxvYXQzMkFycmF5KFsxLDAsMCwwLDAsMSwwLDAsMCwwLDEs MCwwLDAsMCwxXSk7ZnVuY3Rpb24gYyh0LGUpe3JldHVybiB0WzBdPWVbMF0sdFsxXT1lWzFd LHRbMl09ZVsyXSx0fWZ1bmN0aW9uIHUodCl7dGhpcy5nbD10LHRoaXMucGl4ZWxSYXRpbz0x LHRoaXMuYm91bmRzPVtbLTEwLC0xMCwtMTBdLFsxMCwxMCwxMF1dLHRoaXMudGlja3M9W1td LFtdLFtdXSx0aGlzLmF1dG9UaWNrcz0hMCx0aGlzLnRpY2tTcGFjaW5nPVsxLDEsMV0sdGhp cy50aWNrRW5hYmxlPVshMCwhMCwhMF0sdGhpcy50aWNrRm9udD1bInNhbnMtc2VyaWYiLCJz YW5zLXNlcmlmIiwic2Fucy1zZXJpZiJdLHRoaXMudGlja1NpemU9WzEyLDEyLDEyXSx0aGlz LnRpY2tBbmdsZT1bMCwwLDBdLHRoaXMudGlja0FsaWduPVsiYXV0byIsImF1dG8iLCJhdXRv Il0sdGhpcy50aWNrQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSx0aGlz LnRpY2tQYWQ9WzEwLDEwLDEwXSx0aGlzLmxhc3RDdWJlUHJvcHM9e2N1YmVFZGdlczpbMCww LDBdLGF4aXM6WzAsMCwwXX0sdGhpcy5sYWJlbHM9WyJ4IiwieSIsInoiXSx0aGlzLmxhYmVs RW5hYmxlPVshMCwhMCwhMF0sdGhpcy5sYWJlbEZvbnQ9InNhbnMtc2VyaWYiLHRoaXMubGFi ZWxTaXplPVsyMCwyMCwyMF0sdGhpcy5sYWJlbEFuZ2xlPVswLDAsMF0sdGhpcy5sYWJlbEFs aWduPVsiYXV0byIsImF1dG8iLCJhdXRvIl0sdGhpcy5sYWJlbENvbG9yPVtbMCwwLDAsMV0s WzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy5sYWJlbFBhZD1bMTAsMTAsMTBdLHRoaXMubGlu ZUVuYWJsZT1bITAsITAsITBdLHRoaXMubGluZU1pcnJvcj1bITEsITEsITFdLHRoaXMubGlu ZVdpZHRoPVsxLDEsMV0sdGhpcy5saW5lQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAs MCwwLDFdXSx0aGlzLmxpbmVUaWNrRW5hYmxlPVshMCwhMCwhMF0sdGhpcy5saW5lVGlja01p cnJvcj1bITEsITEsITFdLHRoaXMubGluZVRpY2tMZW5ndGg9WzAsMCwwXSx0aGlzLmxpbmVU aWNrV2lkdGg9WzEsMSwxXSx0aGlzLmxpbmVUaWNrQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAs MV0sWzAsMCwwLDFdXSx0aGlzLmdyaWRFbmFibGU9WyEwLCEwLCEwXSx0aGlzLmdyaWRXaWR0 aD1bMSwxLDFdLHRoaXMuZ3JpZENvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwx XV0sdGhpcy56ZXJvRW5hYmxlPVshMCwhMCwhMF0sdGhpcy56ZXJvTGluZUNvbG9yPVtbMCww LDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy56ZXJvTGluZVdpZHRoPVsyLDIsMl0s dGhpcy5iYWNrZ3JvdW5kRW5hYmxlPVshMSwhMSwhMV0sdGhpcy5iYWNrZ3JvdW5kQ29sb3I9 W1suOCwuOCwuOCwuNV0sWy44LC44LC44LC41XSxbLjgsLjgsLjgsLjVdXSx0aGlzLl9maXJz dEluaXQ9ITAsdGhpcy5fdGV4dD1udWxsLHRoaXMuX2xpbmVzPW51bGwsdGhpcy5fYmFja2dy b3VuZD1hKHQpfXZhciBmPXUucHJvdG90eXBlO2Z1bmN0aW9uIGgoKXt0aGlzLnByaW1hbE9m ZnNldD1bMCwwLDBdLHRoaXMucHJpbWFsTWlub3I9WzAsMCwwXSx0aGlzLm1pcnJvck9mZnNl dD1bMCwwLDBdLHRoaXMubWlycm9yTWlub3I9WzAsMCwwXX1mLnVwZGF0ZT1mdW5jdGlvbih0 KXtmdW5jdGlvbiBlKGUscixuKXtpZihuIGluIHQpe3ZhciBpLGE9dFtuXSxvPXRoaXNbbl07 KGU/QXJyYXkuaXNBcnJheShhKSYmQXJyYXkuaXNBcnJheShhWzBdKTpBcnJheS5pc0FycmF5 KGEpKT90aGlzW25dPWk9W3IoYVswXSkscihhWzFdKSxyKGFbMl0pXTp0aGlzW25dPWk9W3Io YSkscihhKSxyKGEpXTtmb3IodmFyIHM9MDtzPDM7KytzKWlmKGlbc10hPT1vW3NdKXJldHVy biEwfXJldHVybiExfXQ9dHx8e307dmFyIHIsYT1lLmJpbmQodGhpcywhMSxOdW1iZXIpLG89 ZS5iaW5kKHRoaXMsITEsQm9vbGVhbiksbD1lLmJpbmQodGhpcywhMSxTdHJpbmcpLGM9ZS5i aW5kKHRoaXMsITAsKGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpe2lmKDM9PT10 Lmxlbmd0aClyZXR1cm5bK3RbMF0sK3RbMV0sK3RbMl0sMV07aWYoND09PXQubGVuZ3RoKXJl dHVyblsrdFswXSwrdFsxXSwrdFsyXSwrdFszXV19cmV0dXJuWzAsMCwwLDFdfSkpLHU9ITEs Zj0hMTtpZigiYm91bmRzImluIHQpZm9yKHZhciBoPXQuYm91bmRzLHA9MDtwPDI7KytwKWZv cih2YXIgZD0wO2Q8MzsrK2QpaFtwXVtkXSE9PXRoaXMuYm91bmRzW3BdW2RdJiYoZj0hMCks dGhpcy5ib3VuZHNbcF1bZF09aFtwXVtkXTtpZigidGlja3MiaW4gdCl7cj10LnRpY2tzLHU9 ITAsdGhpcy5hdXRvVGlja3M9ITE7Zm9yKHA9MDtwPDM7KytwKXRoaXMudGlja1NwYWNpbmdb cF09MH1lbHNlIGEoInRpY2tTcGFjaW5nIikmJih0aGlzLmF1dG9UaWNrcz0hMCxmPSEwKTtp Zih0aGlzLl9maXJzdEluaXQmJigidGlja3MiaW4gdHx8InRpY2tTcGFjaW5nImluIHR8fCh0 aGlzLmF1dG9UaWNrcz0hMCksZj0hMCx1PSEwLHRoaXMuX2ZpcnN0SW5pdD0hMSksZiYmdGhp cy5hdXRvVGlja3MmJihyPXMuY3JlYXRlKHRoaXMuYm91bmRzLHRoaXMudGlja1NwYWNpbmcp LHU9ITApLHUpe2ZvcihwPTA7cDwzOysrcClyW3BdLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0 dXJuIHQueC1lLnh9KSk7cy5lcXVhbChyLHRoaXMudGlja3MpP3U9ITE6dGhpcy50aWNrcz1y fW8oInRpY2tFbmFibGUiKSxsKCJ0aWNrRm9udCIpJiYodT0hMCksYSgidGlja1NpemUiKSxh KCJ0aWNrQW5nbGUiKSxhKCJ0aWNrUGFkIiksYygidGlja0NvbG9yIik7dmFyIG09bCgibGFi ZWxzIik7bCgibGFiZWxGb250IikmJihtPSEwKSxvKCJsYWJlbEVuYWJsZSIpLGEoImxhYmVs U2l6ZSIpLGEoImxhYmVsUGFkIiksYygibGFiZWxDb2xvciIpLG8oImxpbmVFbmFibGUiKSxv KCJsaW5lTWlycm9yIiksYSgibGluZVdpZHRoIiksYygibGluZUNvbG9yIiksbygibGluZVRp Y2tFbmFibGUiKSxvKCJsaW5lVGlja01pcnJvciIpLGEoImxpbmVUaWNrTGVuZ3RoIiksYSgi bGluZVRpY2tXaWR0aCIpLGMoImxpbmVUaWNrQ29sb3IiKSxvKCJncmlkRW5hYmxlIiksYSgi Z3JpZFdpZHRoIiksYygiZ3JpZENvbG9yIiksbygiemVyb0VuYWJsZSIpLGMoInplcm9MaW5l Q29sb3IiKSxhKCJ6ZXJvTGluZVdpZHRoIiksbygiYmFja2dyb3VuZEVuYWJsZSIpLGMoImJh Y2tncm91bmRDb2xvciIpLHRoaXMuX3RleHQ/dGhpcy5fdGV4dCYmKG18fHUpJiZ0aGlzLl90 ZXh0LnVwZGF0ZSh0aGlzLmJvdW5kcyx0aGlzLmxhYmVscyx0aGlzLmxhYmVsRm9udCx0aGlz LnRpY2tzLHRoaXMudGlja0ZvbnQpOnRoaXMuX3RleHQ9bih0aGlzLmdsLHRoaXMuYm91bmRz LHRoaXMubGFiZWxzLHRoaXMubGFiZWxGb250LHRoaXMudGlja3MsdGhpcy50aWNrRm9udCks dGhpcy5fbGluZXMmJnUmJih0aGlzLl9saW5lcy5kaXNwb3NlKCksdGhpcy5fbGluZXM9bnVs bCksdGhpcy5fbGluZXN8fCh0aGlzLl9saW5lcz1pKHRoaXMuZ2wsdGhpcy5ib3VuZHMsdGhp cy50aWNrcykpfTt2YXIgcD1bbmV3IGgsbmV3IGgsbmV3IGhdO2Z1bmN0aW9uIGQodCxlLHIs bixpKXtmb3IodmFyIGE9dC5wcmltYWxPZmZzZXQsbz10LnByaW1hbE1pbm9yLHM9dC5taXJy b3JPZmZzZXQsbD10Lm1pcnJvck1pbm9yLGM9bltlXSx1PTA7dTwzOysrdSlpZihlIT09dSl7 dmFyIGY9YSxoPXMscD1vLGQ9bDtjJjE8PHUmJihmPXMsaD1hLHA9bCxkPW8pLGZbdV09clsw XVt1XSxoW3VdPXJbMV1bdV0saVt1XT4wPyhwW3VdPS0xLGRbdV09MCk6KHBbdV09MCxkW3Vd PTEpfX12YXIgbT1bMCwwLDBdLGc9e21vZGVsOmwsdmlldzpsLHByb2plY3Rpb246bCxfb3J0 aG86ITF9O2YuaXNPcGFxdWU9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZi5pc1RyYW5zcGFyZW50 PWZ1bmN0aW9uKCl7cmV0dXJuITF9LGYuZHJhd1RyYW5zcGFyZW50PWZ1bmN0aW9uKHQpe307 dmFyIHY9WzAsMCwwXSx5PVswLDAsMF0seD1bMCwwLDBdO2YuZHJhdz1mdW5jdGlvbih0KXt0 PXR8fGc7Zm9yKHZhciBlPXRoaXMuZ2wscj10Lm1vZGVsfHxsLG49dC52aWV3fHxsLGk9dC5w cm9qZWN0aW9ufHxsLGE9dGhpcy5ib3VuZHMscz10Ll9vcnRob3x8ITEsdT1vKHIsbixpLGEs cyksZj11LmN1YmVFZGdlcyxoPXUuYXhpcyxiPW5bMTJdLF89blsxM10sdz1uWzE0XSxUPW5b MTVdLGs9KHM/MjoxKSp0aGlzLnBpeGVsUmF0aW8qKGlbM10qYitpWzddKl8raVsxMV0qdytp WzE1XSpUKS9lLmRyYXdpbmdCdWZmZXJIZWlnaHQsQT0wO0E8MzsrK0EpdGhpcy5sYXN0Q3Vi ZVByb3BzLmN1YmVFZGdlc1tBXT1mW0FdLHRoaXMubGFzdEN1YmVQcm9wcy5heGlzW0FdPWhb QV07dmFyIE09cDtmb3IoQT0wO0E8MzsrK0EpZChwW0FdLEEsdGhpcy5ib3VuZHMsZixoKTtl PXRoaXMuZ2w7dmFyIFMsRT1tO2ZvcihBPTA7QTwzOysrQSl0aGlzLmJhY2tncm91bmRFbmFi bGVbQV0/RVtBXT1oW0FdOkVbQV09MDt0aGlzLl9iYWNrZ3JvdW5kLmRyYXcocixuLGksYSxF LHRoaXMuYmFja2dyb3VuZENvbG9yKSx0aGlzLl9saW5lcy5iaW5kKHIsbixpLHRoaXMpO2Zv cihBPTA7QTwzOysrQSl7dmFyIEw9WzAsMCwwXTtoW0FdPjA/TFtBXT1hWzFdW0FdOkxbQV09 YVswXVtBXTtmb3IodmFyIEM9MDtDPDI7KytDKXt2YXIgUD0oQSsxK0MpJTMsST0oQSsxKygx XkMpKSUzO3RoaXMuZ3JpZEVuYWJsZVtQXSYmdGhpcy5fbGluZXMuZHJhd0dyaWQoUCxJLHRo aXMuYm91bmRzLEwsdGhpcy5ncmlkQ29sb3JbUF0sdGhpcy5ncmlkV2lkdGhbUF0qdGhpcy5w aXhlbFJhdGlvKX1mb3IoQz0wO0M8MjsrK0Mpe1A9KEErMStDKSUzLEk9KEErMSsoMV5DKSkl Mzt0aGlzLnplcm9FbmFibGVbSV0mJk1hdGgubWluKGFbMF1bSV0sYVsxXVtJXSk8PTAmJk1h dGgubWF4KGFbMF1bSV0sYVsxXVtJXSk+PTAmJnRoaXMuX2xpbmVzLmRyYXdaZXJvKFAsSSx0 aGlzLmJvdW5kcyxMLHRoaXMuemVyb0xpbmVDb2xvcltJXSx0aGlzLnplcm9MaW5lV2lkdGhb SV0qdGhpcy5waXhlbFJhdGlvKX19Zm9yKEE9MDtBPDM7KytBKXt0aGlzLmxpbmVFbmFibGVb QV0mJnRoaXMuX2xpbmVzLmRyYXdBeGlzTGluZShBLHRoaXMuYm91bmRzLE1bQV0ucHJpbWFs T2Zmc2V0LHRoaXMubGluZUNvbG9yW0FdLHRoaXMubGluZVdpZHRoW0FdKnRoaXMucGl4ZWxS YXRpbyksdGhpcy5saW5lTWlycm9yW0FdJiZ0aGlzLl9saW5lcy5kcmF3QXhpc0xpbmUoQSx0 aGlzLmJvdW5kcyxNW0FdLm1pcnJvck9mZnNldCx0aGlzLmxpbmVDb2xvcltBXSx0aGlzLmxp bmVXaWR0aFtBXSp0aGlzLnBpeGVsUmF0aW8pO3ZhciBPPWModixNW0FdLnByaW1hbE1pbm9y KSx6PWMoeSxNW0FdLm1pcnJvck1pbm9yKSxEPXRoaXMubGluZVRpY2tMZW5ndGg7Zm9yKEM9 MDtDPDM7KytDKXt2YXIgUj1rL3JbNSpDXTtPW0NdKj1EW0NdKlIseltDXSo9RFtDXSpSfXRo aXMubGluZVRpY2tFbmFibGVbQV0mJnRoaXMuX2xpbmVzLmRyYXdBeGlzVGlja3MoQSxNW0Fd LnByaW1hbE9mZnNldCxPLHRoaXMubGluZVRpY2tDb2xvcltBXSx0aGlzLmxpbmVUaWNrV2lk dGhbQV0qdGhpcy5waXhlbFJhdGlvKSx0aGlzLmxpbmVUaWNrTWlycm9yW0FdJiZ0aGlzLl9s aW5lcy5kcmF3QXhpc1RpY2tzKEEsTVtBXS5taXJyb3JPZmZzZXQseix0aGlzLmxpbmVUaWNr Q29sb3JbQV0sdGhpcy5saW5lVGlja1dpZHRoW0FdKnRoaXMucGl4ZWxSYXRpbyl9dGhpcy5f bGluZXMudW5iaW5kKCksdGhpcy5fdGV4dC5iaW5kKHIsbixpLHRoaXMucGl4ZWxSYXRpbyk7 dmFyIEYsQjtmdW5jdGlvbiBOKHQpeyhCPVswLDAsMF0pW3RdPTF9ZnVuY3Rpb24gaih0LGUs cil7dmFyIG49KHQrMSklMyxpPSh0KzIpJTMsYT1lW25dLG89ZVtpXSxzPXJbbl0sbD1yW2ld O2E+MCYmbD4wfHxhPjAmJmw8MHx8YTwwJiZsPjB8fGE8MCYmbDwwP04obik6KG8+MCYmcz4w fHxvPjAmJnM8MHx8bzwwJiZzPjB8fG88MCYmczwwKSYmTihpKX1mb3IoQT0wO0E8MzsrK0Ep e3ZhciBVPU1bQV0ucHJpbWFsTWlub3IsVj1NW0FdLm1pcnJvck1pbm9yLEg9Yyh4LE1bQV0u cHJpbWFsT2Zmc2V0KTtmb3IoQz0wO0M8MzsrK0MpdGhpcy5saW5lVGlja0VuYWJsZVtBXSYm KEhbQ10rPWsqVVtDXSpNYXRoLm1heCh0aGlzLmxpbmVUaWNrTGVuZ3RoW0NdLDApL3JbNSpD XSk7dmFyIHE9WzAsMCwwXTtpZihxW0FdPTEsdGhpcy50aWNrRW5hYmxlW0FdKXstMzYwMD09 PXRoaXMudGlja0FuZ2xlW0FdPyh0aGlzLnRpY2tBbmdsZVtBXT0wLHRoaXMudGlja0FsaWdu W0FdPSJhdXRvIik6dGhpcy50aWNrQWxpZ25bQV09LTEsRj0xLCJhdXRvIj09PShTPVt0aGlz LnRpY2tBbGlnbltBXSwuNSxGXSlbMF0/U1swXT0wOlNbMF09cGFyc2VJbnQoIiIrU1swXSks Qj1bMCwwLDBdLGooQSxVLFYpO2ZvcihDPTA7QzwzOysrQylIW0NdKz1rKlVbQ10qdGhpcy50 aWNrUGFkW0NdL3JbNSpDXTt0aGlzLl90ZXh0LmRyYXdUaWNrcyhBLHRoaXMudGlja1NpemVb QV0sdGhpcy50aWNrQW5nbGVbQV0sSCx0aGlzLnRpY2tDb2xvcltBXSxxLEIsUyl9aWYodGhp cy5sYWJlbEVuYWJsZVtBXSl7Rj0wLEI9WzAsMCwwXSx0aGlzLmxhYmVsc1tBXS5sZW5ndGg+ NCYmKE4oQSksRj0xKSwiYXV0byI9PT0oUz1bdGhpcy5sYWJlbEFsaWduW0FdLC41LEZdKVsw XT9TWzBdPTA6U1swXT1wYXJzZUludCgiIitTWzBdKTtmb3IoQz0wO0M8MzsrK0MpSFtDXSs9 aypVW0NdKnRoaXMubGFiZWxQYWRbQ10vcls1KkNdO0hbQV0rPS41KihhWzBdW0FdK2FbMV1b QV0pLHRoaXMuX3RleHQuZHJhd0xhYmVsKEEsdGhpcy5sYWJlbFNpemVbQV0sdGhpcy5sYWJl bEFuZ2xlW0FdLEgsdGhpcy5sYWJlbENvbG9yW0FdLFswLDAsMF0sQixTKX19dGhpcy5fdGV4 dC51bmJpbmQoKX0sZi5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5fdGV4dC5kaXNwb3NlKCks dGhpcy5fbGluZXMuZGlzcG9zZSgpLHRoaXMuX2JhY2tncm91bmQuZGlzcG9zZSgpLHRoaXMu X2xpbmVzPW51bGwsdGhpcy5fdGV4dD1udWxsLHRoaXMuX2JhY2tncm91bmQ9bnVsbCx0aGlz LmdsPW51bGx9fSx7Ii4vbGliL2JhY2tncm91bmQuanMiOjcxLCIuL2xpYi9jdWJlLmpzIjo3 MiwiLi9saWIvbGluZXMuanMiOjczLCIuL2xpYi90ZXh0LmpzIjo3NSwiLi9saWIvdGlja3Mu anMiOjc2fV0sNzE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1 bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxyPVtdLHM9MCxsPTA7bDwzOysrbClmb3IodmFyIGM9 KGwrMSklMyx1PShsKzIpJTMsZj1bMCwwLDBdLGg9WzAsMCwwXSxwPS0xO3A8PTE7cCs9Mil7 ci5wdXNoKHMscysyLHMrMSxzKzEscysyLHMrMyksZltsXT1wLGhbbF09cDtmb3IodmFyIGQ9 LTE7ZDw9MTtkKz0yKXtmW2NdPWQ7Zm9yKHZhciBtPS0xO208PTE7bSs9MilmW3VdPW0sZS5w dXNoKGZbMF0sZlsxXSxmWzJdLGhbMF0saFsxXSxoWzJdKSxzKz0xfXZhciBnPWM7Yz11LHU9 Z312YXIgdj1uKHQsbmV3IEZsb2F0MzJBcnJheShlKSkseT1uKHQsbmV3IFVpbnQxNkFycmF5 KHIpLHQuRUxFTUVOVF9BUlJBWV9CVUZGRVIpLHg9aSh0LFt7YnVmZmVyOnYsdHlwZTp0LkZM T0FULHNpemU6MyxvZmZzZXQ6MCxzdHJpZGU6MjR9LHtidWZmZXI6dix0eXBlOnQuRkxPQVQs c2l6ZTozLG9mZnNldDoxMixzdHJpZGU6MjR9XSx5KSxiPWEodCk7cmV0dXJuIGIuYXR0cmli dXRlcy5wb3NpdGlvbi5sb2NhdGlvbj0wLGIuYXR0cmlidXRlcy5ub3JtYWwubG9jYXRpb249 MSxuZXcgbyh0LHYseCxiKX07dmFyIG49dCgiZ2wtYnVmZmVyIiksaT10KCJnbC12YW8iKSxh PXQoIi4vc2hhZGVycyIpLmJnO2Z1bmN0aW9uIG8odCxlLHIsbil7dGhpcy5nbD10LHRoaXMu YnVmZmVyPWUsdGhpcy52YW89cix0aGlzLnNoYWRlcj1ufXZhciBzPW8ucHJvdG90eXBlO3Mu ZHJhdz1mdW5jdGlvbih0LGUscixuLGksYSl7Zm9yKHZhciBvPSExLHM9MDtzPDM7KytzKW89 b3x8aVtzXTtpZihvKXt2YXIgbD10aGlzLmdsO2wuZW5hYmxlKGwuUE9MWUdPTl9PRkZTRVRf RklMTCksbC5wb2x5Z29uT2Zmc2V0KDEsMiksdGhpcy5zaGFkZXIuYmluZCgpLHRoaXMuc2hh ZGVyLnVuaWZvcm1zPXttb2RlbDp0LHZpZXc6ZSxwcm9qZWN0aW9uOnIsYm91bmRzOm4sZW5h YmxlOmksY29sb3JzOmF9LHRoaXMudmFvLmJpbmQoKSx0aGlzLnZhby5kcmF3KHRoaXMuZ2wu VFJJQU5HTEVTLDM2KSx0aGlzLnZhby51bmJpbmQoKSxsLmRpc2FibGUobC5QT0xZR09OX09G RlNFVF9GSUxMKX19LHMuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMudmFvLmRpc3Bvc2UoKSx0 aGlzLmJ1ZmZlci5kaXNwb3NlKCksdGhpcy5zaGFkZXIuZGlzcG9zZSgpfX0seyIuL3NoYWRl cnMiOjc0LCJnbC1idWZmZXIiOjc4LCJnbC12YW8iOjE1MH1dLDcyOltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixhLHApe2kocyxlLHQp LGkocyxyLHMpO2Zvcih2YXIgeT0wLHg9MDt4PDI7Kyt4KXt1WzJdPWFbeF1bMl07Zm9yKHZh ciBiPTA7YjwyOysrYil7dVsxXT1hW2JdWzFdO2Zvcih2YXIgXz0wO188MjsrK18pdVswXT1h W19dWzBdLGgobFt5XSx1LHMpLHkrPTF9fXZhciB3PS0xO2Zvcih4PTA7eDw4OysreCl7Zm9y KHZhciBUPWxbeF1bM10saz0wO2s8MzsrK2spY1t4XVtrXT1sW3hdW2tdL1Q7cCYmKGNbeF1b Ml0qPS0xKSxUPDAmJih3PDB8fGNbeF1bMl08Y1t3XVsyXSkmJih3PXgpfWlmKHc8MCl7dz0w O2Zvcih2YXIgQT0wO0E8MzsrK0Epe2Zvcih2YXIgTT0oQSsyKSUzLFM9KEErMSklMyxFPS0x LEw9LTEsQz0wO0M8MjsrK0Mpe3ZhciBQPShPPUM8PEEpKyhDPDxNKSsoMS1DPDxTKSxJPU8r KDEtQzw8TSkrKEM8PFMpO28oY1tPXSxjW1BdLGNbSV0sZik8MHx8KEM/RT0xOkw9MSl9aWYo RTwwfHxMPDApTD5FJiYod3w9MTw8QSk7ZWxzZXtmb3IoQz0wO0M8MjsrK0Mpe1A9KE89Qzw8 QSkrKEM8PE0pKygxLUM8PFMpLEk9TysoMS1DPDxNKSsoQzw8Uyk7dmFyIE8sej1kKFtsW09d LGxbUF0sbFtJXSxsW08rKDE8PE0pKygxPDxTKV1dKTtDP0U9ejpMPXp9TD5FJiYod3w9MTw8 QSl9fX12YXIgRD03XncsUj0tMTtmb3IoeD0wO3g8ODsrK3gpeCE9PXcmJnghPT1EJiYoUjww fHxjW1JdWzFdPmNbeF1bMV0pJiYoUj14KTt2YXIgRj0tMTtmb3IoeD0wO3g8MzsrK3gpe2lm KChOPVJeMTw8eCkhPT13JiZOIT09RClGPDAmJihGPU4pLChTPWNbTl0pWzBdPGNbRl1bMF0m JihGPU4pfXZhciBCPS0xO2Zvcih4PTA7eDwzOysreCl7dmFyIE47aWYoKE49Ul4xPDx4KSE9 PXcmJk4hPT1EJiZOIT09RilCPDAmJihCPU4pLChTPWNbTl0pWzBdPmNbQl1bMF0mJihCPU4p fXZhciBqPW07alswXT1qWzFdPWpbMl09MCxqW24ubG9nMihGXlIpXT1SJkYsaltuLmxvZzIo Ul5CKV09UiZCO3ZhciBVPTdeQjtVPT09d3x8VT09PUQ/KFU9N15GLGpbbi5sb2cyKEJeVSld PVUmQik6altuLmxvZzIoRl5VKV09VSZGO3ZhciBWPWcsSD13O2ZvcihBPTA7QTwzOysrQSlW W0FdPUgmMTw8QT8tMToxO3JldHVybiB2fTt2YXIgbj10KCJiaXQtdHdpZGRsZSIpLGk9dCgi Z2wtbWF0NC9tdWx0aXBseSIpLGE9dCgic3BsaXQtcG9seWdvbiIpLG89dCgicm9idXN0LW9y aWVudGF0aW9uIikscz1uZXcgQXJyYXkoMTYpLGw9bmV3IEFycmF5KDgpLGM9bmV3IEFycmF5 KDgpLHU9bmV3IEFycmF5KDMpLGY9WzAsMCwwXTtmdW5jdGlvbiBoKHQsZSxyKXtmb3IodmFy IG49MDtuPDQ7KytuKXt0W25dPXJbMTIrbl07Zm9yKHZhciBpPTA7aTwzOysraSl0W25dKz1l W2ldKnJbNCppK25dfX0hZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PDg7Kyt0KWxbdF09WzEs MSwxLDFdLGNbdF09WzEsMSwxXX0oKTt2YXIgcD1bWzAsMCwxLDAsMF0sWzAsMCwtMSwxLDBd LFswLC0xLDAsMSwwXSxbMCwxLDAsMSwwXSxbLTEsMCwwLDEsMF0sWzEsMCwwLDEsMF1dO2Z1 bmN0aW9uIGQodCl7Zm9yKHZhciBlPTA7ZTxwLmxlbmd0aDsrK2UpaWYoKHQ9YS5wb3NpdGl2 ZSh0LHBbZV0pKS5sZW5ndGg8MylyZXR1cm4gMDt2YXIgcj10WzBdLG49clswXS9yWzNdLGk9 clsxXS9yWzNdLG89MDtmb3IoZT0xO2UrMTx0Lmxlbmd0aDsrK2Upe3ZhciBzPXRbZV0sbD10 W2UrMV0sYz1zWzBdL3NbM10tbix1PXNbMV0vc1szXS1pLGY9bFswXS9sWzNdLW4saD1sWzFd L2xbM10taTtvKz1NYXRoLmFicyhjKmgtdSpmKX1yZXR1cm4gb312YXIgbT1bMSwxLDFdLGc9 WzAsMCwwXSx2PXtjdWJlRWRnZXM6bSxheGlzOmd9fSx7ImJpdC10d2lkZGxlIjozMiwiZ2wt bWF0NC9tdWx0aXBseSI6MTAwLCJyb2J1c3Qtb3JpZW50YXRpb24iOjI4NCwic3BsaXQtcG9s eWdvbiI6MzAwfV0sNzM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRz PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbz1bXSxzPVswLDAsMF0sbD1bMCwwLDBdLGM9WzAsMCww XSx1PVswLDAsMF07by5wdXNoKDAsMCwxLDAsMSwxLDAsMCwtMSwwLDAsLTEsMCwxLDEsMCwx LC0xKTtmb3IodmFyIGY9MDtmPDM7KytmKXtmb3IodmFyIGg9by5sZW5ndGgvM3wwLGQ9MDtk PHJbZl0ubGVuZ3RoOysrZCl7dmFyIG09K3JbZl1bZF0ueDtvLnB1c2gobSwwLDEsbSwxLDEs bSwwLC0xLG0sMCwtMSxtLDEsMSxtLDEsLTEpfXZhciBnPW8ubGVuZ3RoLzN8MDtzW2ZdPWgs bFtmXT1nLWg7aD1vLmxlbmd0aC8zfDA7Zm9yKHZhciB2PTA7djxyW2ZdLmxlbmd0aDsrK3Yp e209K3JbZl1bdl0ueDtvLnB1c2gobSwwLDEsbSwxLDEsbSwwLC0xLG0sMCwtMSxtLDEsMSxt LDEsLTEpfWc9by5sZW5ndGgvM3wwO2NbZl09aCx1W2ZdPWctaH12YXIgeT1uKHQsbmV3IEZs b2F0MzJBcnJheShvKSkseD1pKHQsW3tidWZmZXI6eSx0eXBlOnQuRkxPQVQsc2l6ZTozLHN0 cmlkZTowLG9mZnNldDowfV0pLGI9YSh0KTtyZXR1cm4gYi5hdHRyaWJ1dGVzLnBvc2l0aW9u LmxvY2F0aW9uPTAsbmV3IHAodCx5LHgsYixsLHMsdSxjKX07dmFyIG49dCgiZ2wtYnVmZmVy IiksaT10KCJnbC12YW8iKSxhPXQoIi4vc2hhZGVycyIpLmxpbmUsbz1bMCwwLDBdLHM9WzAs MCwwXSxsPVswLDAsMF0sYz1bMCwwLDBdLHU9WzEsMV07ZnVuY3Rpb24gZih0KXtyZXR1cm4g dFswXT10WzFdPXRbMl09MCx0fWZ1bmN0aW9uIGgodCxlKXtyZXR1cm4gdFswXT1lWzBdLHRb MV09ZVsxXSx0WzJdPWVbMl0sdH1mdW5jdGlvbiBwKHQsZSxyLG4saSxhLG8scyl7dGhpcy5n bD10LHRoaXMudmVydEJ1ZmZlcj1lLHRoaXMudmFvPXIsdGhpcy5zaGFkZXI9bix0aGlzLnRp Y2tDb3VudD1pLHRoaXMudGlja09mZnNldD1hLHRoaXMuZ3JpZENvdW50PW8sdGhpcy5ncmlk T2Zmc2V0PXN9dmFyIGQ9cC5wcm90b3R5cGU7ZC5iaW5kPWZ1bmN0aW9uKHQsZSxyKXt0aGlz LnNoYWRlci5iaW5kKCksdGhpcy5zaGFkZXIudW5pZm9ybXMubW9kZWw9dCx0aGlzLnNoYWRl ci51bmlmb3Jtcy52aWV3PWUsdGhpcy5zaGFkZXIudW5pZm9ybXMucHJvamVjdGlvbj1yLHVb MF09dGhpcy5nbC5kcmF3aW5nQnVmZmVyV2lkdGgsdVsxXT10aGlzLmdsLmRyYXdpbmdCdWZm ZXJIZWlnaHQsdGhpcy5zaGFkZXIudW5pZm9ybXMuc2NyZWVuU2hhcGU9dSx0aGlzLnZhby5i aW5kKCl9LGQudW5iaW5kPWZ1bmN0aW9uKCl7dGhpcy52YW8udW5iaW5kKCl9LGQuZHJhd0F4 aXNMaW5lPWZ1bmN0aW9uKHQsZSxyLG4saSl7dmFyIGE9ZihzKTt0aGlzLnNoYWRlci51bmlm b3Jtcy5tYWpvckF4aXM9cyxhW3RdPWVbMV1bdF0tZVswXVt0XSx0aGlzLnNoYWRlci51bmlm b3Jtcy5taW5vckF4aXM9YTt2YXIgbyx1PWgoYyxyKTt1W3RdKz1lWzBdW3RdLHRoaXMuc2hh ZGVyLnVuaWZvcm1zLm9mZnNldD11LHRoaXMuc2hhZGVyLnVuaWZvcm1zLmxpbmVXaWR0aD1p LHRoaXMuc2hhZGVyLnVuaWZvcm1zLmNvbG9yPW4sKG89ZihsKSlbKHQrMiklM109MSx0aGlz LnNoYWRlci51bmlmb3Jtcy5zY3JlZW5BeGlzPW8sdGhpcy52YW8uZHJhdyh0aGlzLmdsLlRS SUFOR0xFUyw2KSwobz1mKGwpKVsodCsxKSUzXT0xLHRoaXMuc2hhZGVyLnVuaWZvcm1zLnNj cmVlbkF4aXM9byx0aGlzLnZhby5kcmF3KHRoaXMuZ2wuVFJJQU5HTEVTLDYpfSxkLmRyYXdB eGlzVGlja3M9ZnVuY3Rpb24odCxlLHIsbixpKXtpZih0aGlzLnRpY2tDb3VudFt0XSl7dmFy IGE9ZihvKTthW3RdPTEsdGhpcy5zaGFkZXIudW5pZm9ybXMubWFqb3JBeGlzPWEsdGhpcy5z aGFkZXIudW5pZm9ybXMub2Zmc2V0PWUsdGhpcy5zaGFkZXIudW5pZm9ybXMubWlub3JBeGlz PXIsdGhpcy5zaGFkZXIudW5pZm9ybXMuY29sb3I9bix0aGlzLnNoYWRlci51bmlmb3Jtcy5s aW5lV2lkdGg9aTt2YXIgcz1mKGwpO3NbdF09MSx0aGlzLnNoYWRlci51bmlmb3Jtcy5zY3Jl ZW5BeGlzPXMsdGhpcy52YW8uZHJhdyh0aGlzLmdsLlRSSUFOR0xFUyx0aGlzLnRpY2tDb3Vu dFt0XSx0aGlzLnRpY2tPZmZzZXRbdF0pfX0sZC5kcmF3R3JpZD1mdW5jdGlvbih0LGUscixu LGksYSl7aWYodGhpcy5ncmlkQ291bnRbdF0pe3ZhciB1PWYocyk7dVtlXT1yWzFdW2VdLXJb MF1bZV0sdGhpcy5zaGFkZXIudW5pZm9ybXMubWlub3JBeGlzPXU7dmFyIHA9aChjLG4pO3Bb ZV0rPXJbMF1bZV0sdGhpcy5zaGFkZXIudW5pZm9ybXMub2Zmc2V0PXA7dmFyIGQ9ZihvKTtk W3RdPTEsdGhpcy5zaGFkZXIudW5pZm9ybXMubWFqb3JBeGlzPWQ7dmFyIG09ZihsKTttW3Rd PTEsdGhpcy5zaGFkZXIudW5pZm9ybXMuc2NyZWVuQXhpcz1tLHRoaXMuc2hhZGVyLnVuaWZv cm1zLmxpbmVXaWR0aD1hLHRoaXMuc2hhZGVyLnVuaWZvcm1zLmNvbG9yPWksdGhpcy52YW8u ZHJhdyh0aGlzLmdsLlRSSUFOR0xFUyx0aGlzLmdyaWRDb3VudFt0XSx0aGlzLmdyaWRPZmZz ZXRbdF0pfX0sZC5kcmF3WmVybz1mdW5jdGlvbih0LGUscixuLGksYSl7dmFyIG89ZihzKTt0 aGlzLnNoYWRlci51bmlmb3Jtcy5tYWpvckF4aXM9byxvW3RdPXJbMV1bdF0tclswXVt0XSx0 aGlzLnNoYWRlci51bmlmb3Jtcy5taW5vckF4aXM9bzt2YXIgdT1oKGMsbik7dVt0XSs9clsw XVt0XSx0aGlzLnNoYWRlci51bmlmb3Jtcy5vZmZzZXQ9dTt2YXIgcD1mKGwpO3BbZV09MSx0 aGlzLnNoYWRlci51bmlmb3Jtcy5zY3JlZW5BeGlzPXAsdGhpcy5zaGFkZXIudW5pZm9ybXMu bGluZVdpZHRoPWEsdGhpcy5zaGFkZXIudW5pZm9ybXMuY29sb3I9aSx0aGlzLnZhby5kcmF3 KHRoaXMuZ2wuVFJJQU5HTEVTLDYpfSxkLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnZhby5k aXNwb3NlKCksdGhpcy52ZXJ0QnVmZmVyLmRpc3Bvc2UoKSx0aGlzLnNoYWRlci5kaXNwb3Nl KCl9fSx7Ii4vc2hhZGVycyI6NzQsImdsLWJ1ZmZlciI6NzgsImdsLXZhbyI6MTUwfV0sNzQ6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZ2xzbGlmeSIpLGk9dCgi Z2wtc2hhZGVyIiksYT1uKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNM SUZZIDFcblxuYXR0cmlidXRlIHZlYzMgcG9zaXRpb247XG5cbnVuaWZvcm0gbWF0NCBtb2Rl bCwgdmlldywgcHJvamVjdGlvbjtcbnVuaWZvcm0gdmVjMyBvZmZzZXQsIG1ham9yQXhpcywg bWlub3JBeGlzLCBzY3JlZW5BeGlzO1xudW5pZm9ybSBmbG9hdCBsaW5lV2lkdGg7XG51bmlm b3JtIHZlYzIgc2NyZWVuU2hhcGU7XG5cbnZlYzMgcHJvamVjdCh2ZWMzIHApIHtcbiAgdmVj NCBwcCA9IHByb2plY3Rpb24gKiB2aWV3ICogbW9kZWwgKiB2ZWM0KHAsIDEuMCk7XG4gIHJl dHVybiBwcC54eXogLyBtYXgocHAudywgMC4wMDAxKTtcbn1cblxudm9pZCBtYWluKCkge1xu ICB2ZWMzIG1ham9yID0gcG9zaXRpb24ueCAqIG1ham9yQXhpcztcbiAgdmVjMyBtaW5vciA9 IHBvc2l0aW9uLnkgKiBtaW5vckF4aXM7XG5cbiAgdmVjMyB2UG9zaXRpb24gPSBtYWpvciAr IG1pbm9yICsgb2Zmc2V0O1xuICB2ZWMzIHBQb3NpdGlvbiA9IHByb2plY3QodlBvc2l0aW9u KTtcbiAgdmVjMyBvZmZzZXQgPSBwcm9qZWN0KHZQb3NpdGlvbiArIHNjcmVlbkF4aXMgKiBw b3NpdGlvbi56KTtcblxuICB2ZWMyIHNjcmVlbiA9IG5vcm1hbGl6ZSgob2Zmc2V0IC0gcFBv c2l0aW9uKS54eSAqIHNjcmVlblNoYXBlKSAvIHNjcmVlblNoYXBlO1xuXG4gIGdsX1Bvc2l0 aW9uID0gdmVjNChwUG9zaXRpb24gKyB2ZWMzKDAuNSAqIHNjcmVlbiAqIGxpbmVXaWR0aCwg MCksIDEuMCk7XG59XG4iXSksbz1uKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmlu ZSBHTFNMSUZZIDFcblxudW5pZm9ybSB2ZWM0IGNvbG9yO1xudm9pZCBtYWluKCkge1xuICBn bF9GcmFnQ29sb3IgPSBjb2xvcjtcbn0iXSk7ci5saW5lPWZ1bmN0aW9uKHQpe3JldHVybiBp KHQsYSxvLG51bGwsW3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVjMyJ9XSl9O3ZhciBzPW4o WyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1 dGUgdmVjMyBwb3NpdGlvbjtcblxudW5pZm9ybSBtYXQ0IG1vZGVsLCB2aWV3LCBwcm9qZWN0 aW9uO1xudW5pZm9ybSB2ZWMzIG9mZnNldCwgYXhpcywgYWxpZ25EaXIsIGFsaWduT3B0O1xu dW5pZm9ybSBmbG9hdCBzY2FsZSwgYW5nbGUsIHBpeGVsU2NhbGU7XG51bmlmb3JtIHZlYzIg cmVzb2x1dGlvbjtcblxudmVjMyBwcm9qZWN0KHZlYzMgcCkge1xuICB2ZWM0IHBwID0gcHJv amVjdGlvbiAqIHZpZXcgKiBtb2RlbCAqIHZlYzQocCwgMS4wKTtcbiAgcmV0dXJuIHBwLnh5 eiAvIG1heChwcC53LCAwLjAwMDEpO1xufVxuXG5mbG9hdCBjb21wdXRlVmlld0FuZ2xlKHZl YzMgYSwgdmVjMyBiKSB7XG4gIHZlYzMgQSA9IHByb2plY3QoYSk7XG4gIHZlYzMgQiA9IHBy b2plY3QoYik7XG5cbiAgcmV0dXJuIGF0YW4oXG4gICAgKEIueSAtIEEueSkgKiByZXNvbHV0 aW9uLnksXG4gICAgKEIueCAtIEEueCkgKiByZXNvbHV0aW9uLnhcbiAgKTtcbn1cblxuY29u c3QgZmxvYXQgUEkgPSAzLjE0MTU5MjtcbmNvbnN0IGZsb2F0IFRXT19QSSA9IDIuMCAqIFBJ O1xuY29uc3QgZmxvYXQgSEFMRl9QSSA9IDAuNSAqIFBJO1xuY29uc3QgZmxvYXQgT05FX0FO RF9IQUxGX1BJID0gMS41ICogUEk7XG5cbmludCBvcHRpb24gPSBpbnQoZmxvb3IoYWxpZ25P cHQueCArIDAuMDAxKSk7XG5mbG9hdCBodl9yYXRpbyA9ICAgICAgIGFsaWduT3B0Lnk7XG5i b29sIGVuYWJsZUFsaWduID0gICAgKGFsaWduT3B0LnogIT0gMC4wKTtcblxuZmxvYXQgbW9k X2FuZ2xlKGZsb2F0IGEpIHtcbiAgcmV0dXJuIG1vZChhLCBQSSk7XG59XG5cbmZsb2F0IHBv c2l0aXZlX2FuZ2xlKGZsb2F0IGEpIHtcbiAgcmV0dXJuIG1vZF9hbmdsZSgoYSA8IDAuMCkg P1xuICAgIGEgKyBUV09fUEkgOlxuICAgIGFcbiAgKTtcbn1cblxuZmxvYXQgbG9va191cHdh cmRzKGZsb2F0IGEpIHtcbiAgZmxvYXQgYiA9IHBvc2l0aXZlX2FuZ2xlKGEpO1xuICByZXR1 cm4gKChiID4gSEFMRl9QSSkgJiYgKGIgPD0gT05FX0FORF9IQUxGX1BJKSkgP1xuICAgIGIg LSBQSSA6XG4gICAgYjtcbn1cblxuZmxvYXQgbG9va19ob3Jpem9udGFsX29yX3ZlcnRpY2Fs KGZsb2F0IGEsIGZsb2F0IHJhdGlvKSB7XG4gIC8vIHJhdGlvIGNvbnRyb2xzIHRoZSByYXRp byBiZXR3ZWVuIGJlaW5nIGhvcml6b250YWwgdG8gKHZlcnRpY2FsICsgaG9yaXpvbnRhbClc biAgLy8gaWYgcmF0aW8gaXMgc2V0IHRvIDAuNSB0aGVuIGl0IGlzIDUwJSwgNTAlLlxuICAv LyB3aGVuIHVzaW5nIGEgaGlnaGVyIHJhdGlvIGUuZy4gMC43NSB0aGUgcmVzdWx0IHdvdWxk XG4gIC8vIGxpa2VseSBiZSBtb3JlIGhvcml6b250YWwgdGhhbiB2ZXJ0aWNhbC5cblxuICBm bG9hdCBiID0gcG9zaXRpdmVfYW5nbGUoYSk7XG5cbiAgcmV0dXJuXG4gICAgKGIgPCAoICAg ICAgcmF0aW8pICogSEFMRl9QSSkgPyAwLjAgOlxuICAgIChiIDwgKDIuMCAtIHJhdGlvKSAq IEhBTEZfUEkpID8gLUhBTEZfUEkgOlxuICAgIChiIDwgKDIuMCArIHJhdGlvKSAqIEhBTEZf UEkpID8gMC4wIDpcbiAgICAoYiA8ICg0LjAgLSByYXRpbykgKiBIQUxGX1BJKSA/IEhBTEZf UEkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wO1xufVxuXG5m bG9hdCByb3VuZFRvKGZsb2F0IGEsIGZsb2F0IGIpIHtcbiAgcmV0dXJuIGZsb2F0KGIgKiBm bG9vcigoYSArIDAuNSAqIGIpIC8gYikpO1xufVxuXG5mbG9hdCBsb29rX3JvdW5kX25fZGly ZWN0aW9ucyhmbG9hdCBhLCBpbnQgbikge1xuICBmbG9hdCBiID0gcG9zaXRpdmVfYW5nbGUo YSk7XG4gIGZsb2F0IGRpdiA9IFRXT19QSSAvIGZsb2F0KG4pO1xuICBmbG9hdCBjID0gcm91 bmRUbyhiLCBkaXYpO1xuICByZXR1cm4gbG9va191cHdhcmRzKGMpO1xufVxuXG5mbG9hdCBh cHBseUFsaWduT3B0aW9uKGZsb2F0IHJhd0FuZ2xlLCBmbG9hdCBkZWx0YSkge1xuICByZXR1 cm5cbiAgICAob3B0aW9uID4gIDIpID8gbG9va19yb3VuZF9uX2RpcmVjdGlvbnMocmF3QW5n bGUgKyBkZWx0YSwgb3B0aW9uKSA6ICAgICAgIC8vIG9wdGlvbiAzLW46IHJvdW5kIHRvIG4g ZGlyZWN0aW9uc1xuICAgIChvcHRpb24gPT0gMikgPyBsb29rX2hvcml6b250YWxfb3JfdmVy dGljYWwocmF3QW5nbGUgKyBkZWx0YSwgaHZfcmF0aW8pIDogLy8gaG9yaXpvbnRhbCBvciB2 ZXJ0aWNhbFxuICAgIChvcHRpb24gPT0gMSkgPyByYXdBbmdsZSArIGRlbHRhIDogICAgICAg Ly8gdXNlIGZyZWUgYW5nbGUsIGFuZCBmbGlwIHRvIGFsaWduIHdpdGggb25lIGRpcmVjdGlv biBvZiB0aGUgYXhpc1xuICAgIChvcHRpb24gPT0gMCkgPyBsb29rX3Vwd2FyZHMocmF3QW5n bGUpIDogLy8gdXNlIGZyZWUgYW5nbGUsIGFuZCBzdGF5IHVwd2FyZHNcbiAgICAob3B0aW9u ID09LTEpID8gMC4wIDogICAgICAgICAgICAgICAgICAgIC8vIHVzZWZ1bCBmb3IgYmFja3dh cmQgY29tcGF0aWJpbGl0eSwgYWxsIHRleHRzIHJlbWFpbnMgaG9yaXpvbnRhbFxuICAgICAg ICAgICAgICAgICAgICByYXdBbmdsZTsgICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIHJl dHVybiBiYWNrIHJhdyBpbnB1dCBhbmdsZVxufVxuXG5ib29sIGlzQXhpc1RpdGxlID0gKGF4 aXMueCA9PSAwLjApICYmXG4gICAgICAgICAgICAgICAgICAgKGF4aXMueSA9PSAwLjApICYm XG4gICAgICAgICAgICAgICAgICAgKGF4aXMueiA9PSAwLjApO1xuXG52b2lkIG1haW4oKSB7 XG4gIC8vQ29tcHV0ZSB3b3JsZCBvZmZzZXRcbiAgZmxvYXQgYXhpc0Rpc3RhbmNlID0gcG9z aXRpb24uejtcbiAgdmVjMyBkYXRhUG9zaXRpb24gPSBheGlzRGlzdGFuY2UgKiBheGlzICsg b2Zmc2V0O1xuXG4gIGZsb2F0IGJldGEgPSBhbmdsZTsgLy8gaS5lLiB1c2VyIGRlZmluZWQg YXR0cmlidXRlcyBmb3IgZWFjaCB0aWNrXG5cbiAgZmxvYXQgYXhpc0FuZ2xlO1xuICBmbG9h dCBjbGlwQW5nbGU7XG4gIGZsb2F0IGZsaXA7XG5cbiAgaWYgKGVuYWJsZUFsaWduKSB7XG4g ICAgYXhpc0FuZ2xlID0gKGlzQXhpc1RpdGxlKSA/IEhBTEZfUEkgOlxuICAgICAgICAgICAg ICAgICAgICAgIGNvbXB1dGVWaWV3QW5nbGUoZGF0YVBvc2l0aW9uLCBkYXRhUG9zaXRpb24g KyBheGlzKTtcbiAgICBjbGlwQW5nbGUgPSBjb21wdXRlVmlld0FuZ2xlKGRhdGFQb3NpdGlv biwgZGF0YVBvc2l0aW9uICsgYWxpZ25EaXIpO1xuXG4gICAgYXhpc0FuZ2xlICs9IChzaW4o YXhpc0FuZ2xlKSA8IDAuMCkgPyBQSSA6IDAuMDtcbiAgICBjbGlwQW5nbGUgKz0gKHNpbihj bGlwQW5nbGUpIDwgMC4wKSA/IFBJIDogMC4wO1xuXG4gICAgZmxpcCA9IChkb3QodmVjMihj b3MoYXhpc0FuZ2xlKSwgc2luKGF4aXNBbmdsZSkpLFxuICAgICAgICAgICAgICAgIHZlYzIo c2luKGNsaXBBbmdsZSksLWNvcyhjbGlwQW5nbGUpKSkgPiAwLjApID8gMS4wIDogMC4wO1xu XG4gICAgYmV0YSArPSBhcHBseUFsaWduT3B0aW9uKGNsaXBBbmdsZSwgZmxpcCAqIFBJKTtc biAgfVxuXG4gIC8vQ29tcHV0ZSBwbGFuZSBvZmZzZXRcbiAgdmVjMiBwbGFuZUNvb3JkID0g cG9zaXRpb24ueHkgKiBwaXhlbFNjYWxlO1xuXG4gIG1hdDIgcGxhbmVYZm9ybSA9IHNjYWxl ICogbWF0MihcbiAgICAgY29zKGJldGEpLCBzaW4oYmV0YSksXG4gICAgLXNpbihiZXRhKSwg Y29zKGJldGEpXG4gICk7XG5cbiAgdmVjMiB2aWV3T2Zmc2V0ID0gMi4wICogcGxhbmVYZm9y bSAqIHBsYW5lQ29vcmQgLyByZXNvbHV0aW9uO1xuXG4gIC8vQ29tcHV0ZSBjbGlwIHBvc2l0 aW9uXG4gIHZlYzMgY2xpcFBvc2l0aW9uID0gcHJvamVjdChkYXRhUG9zaXRpb24pO1xuXG4g IC8vQXBwbHkgdGV4dCBvZmZzZXQgaW4gY2xpcCBjb29yZGluYXRlc1xuICBjbGlwUG9zaXRp b24gKz0gdmVjMyh2aWV3T2Zmc2V0LCAwLjApO1xuXG4gIC8vRG9uZVxuICBnbF9Qb3NpdGlv biA9IHZlYzQoY2xpcFBvc2l0aW9uLCAxLjApO1xufSJdKSxsPW4oWyJwcmVjaXNpb24gaGln aHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG51bmlmb3JtIHZlYzQgY29sb3I7XG52 b2lkIG1haW4oKSB7XG4gIGdsX0ZyYWdDb2xvciA9IGNvbG9yO1xufSJdKTtyLnRleHQ9ZnVu Y3Rpb24odCl7cmV0dXJuIGkodCxzLGwsbnVsbCxbe25hbWU6InBvc2l0aW9uIix0eXBlOiJ2 ZWMzIn1dKX07dmFyIGM9bihbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xT TElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uO1xuYXR0cmlidXRlIHZlYzMgbm9y bWFsO1xuXG51bmlmb3JtIG1hdDQgbW9kZWwsIHZpZXcsIHByb2plY3Rpb247XG51bmlmb3Jt IHZlYzMgZW5hYmxlO1xudW5pZm9ybSB2ZWMzIGJvdW5kc1syXTtcblxudmFyeWluZyB2ZWMz IGNvbG9yQ2hhbm5lbDtcblxudm9pZCBtYWluKCkge1xuXG4gIHZlYzMgc2lnbkF4aXMgPSBz aWduKGJvdW5kc1sxXSAtIGJvdW5kc1swXSk7XG5cbiAgdmVjMyByZWFsTm9ybWFsID0gc2ln bkF4aXMgKiBub3JtYWw7XG5cbiAgaWYoZG90KHJlYWxOb3JtYWwsIGVuYWJsZSkgPiAwLjAp IHtcbiAgICB2ZWMzIG1pblJhbmdlID0gbWluKGJvdW5kc1swXSwgYm91bmRzWzFdKTtcbiAg ICB2ZWMzIG1heFJhbmdlID0gbWF4KGJvdW5kc1swXSwgYm91bmRzWzFdKTtcbiAgICB2ZWMz IG5Qb3NpdGlvbiA9IG1peChtaW5SYW5nZSwgbWF4UmFuZ2UsIDAuNSAqIChwb3NpdGlvbiAr IDEuMCkpO1xuICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbiAqIHZpZXcgKiBtb2RlbCAq IHZlYzQoblBvc2l0aW9uLCAxLjApO1xuICB9IGVsc2Uge1xuICAgIGdsX1Bvc2l0aW9uID0g dmVjNCgwLDAsMCwwKTtcbiAgfVxuXG4gIGNvbG9yQ2hhbm5lbCA9IGFicyhyZWFsTm9ybWFs KTtcbn0iXSksdT1uKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZ IDFcblxudW5pZm9ybSB2ZWM0IGNvbG9yc1szXTtcblxudmFyeWluZyB2ZWMzIGNvbG9yQ2hh bm5lbDtcblxudm9pZCBtYWluKCkge1xuICBnbF9GcmFnQ29sb3IgPSBjb2xvckNoYW5uZWwu eCAqIGNvbG9yc1swXSArXG4gICAgICAgICAgICAgICAgIGNvbG9yQ2hhbm5lbC55ICogY29s b3JzWzFdICtcbiAgICAgICAgICAgICAgICAgY29sb3JDaGFubmVsLnogKiBjb2xvcnNbMl07 XG59Il0pO3IuYmc9ZnVuY3Rpb24odCl7cmV0dXJuIGkodCxjLHUsbnVsbCxbe25hbWU6InBv c2l0aW9uIix0eXBlOiJ2ZWMzIn0se25hbWU6Im5vcm1hbCIsdHlwZToidmVjMyJ9XSl9fSx7 ImdsLXNoYWRlciI6MTMyLGdsc2xpZnk6MjMxfV0sNzU6W2Z1bmN0aW9uKHQsZSxyKXsoZnVu Y3Rpb24ocil7KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUscixhLHMsbCl7dmFyIHU9bih0KSxmPWkodCxbe2J1ZmZlcjp1LHNpemU6M31dKSxoPW8o dCk7aC5hdHRyaWJ1dGVzLnBvc2l0aW9uLmxvY2F0aW9uPTA7dmFyIHA9bmV3IGModCxoLHUs Zik7cmV0dXJuIHAudXBkYXRlKGUscixhLHMsbCkscH07dmFyIG49dCgiZ2wtYnVmZmVyIiks aT10KCJnbC12YW8iKSxhPXQoInZlY3Rvcml6ZS10ZXh0Iiksbz10KCIuL3NoYWRlcnMiKS50 ZXh0LHM9d2luZG93fHxyLmdsb2JhbHx8e30sbD1zLl9fVEVYVF9DQUNIRXx8e307cy5fX1RF WFRfQ0FDSEU9e307ZnVuY3Rpb24gYyh0LGUscixuKXt0aGlzLmdsPXQsdGhpcy5zaGFkZXI9 ZSx0aGlzLmJ1ZmZlcj1yLHRoaXMudmFvPW4sdGhpcy50aWNrT2Zmc2V0PXRoaXMudGlja0Nv dW50PXRoaXMubGFiZWxPZmZzZXQ9dGhpcy5sYWJlbENvdW50PW51bGx9dmFyIHU9Yy5wcm90 b3R5cGUsZj1bMCwwXTt1LmJpbmQ9ZnVuY3Rpb24odCxlLHIsbil7dGhpcy52YW8uYmluZCgp LHRoaXMuc2hhZGVyLmJpbmQoKTt2YXIgaT10aGlzLnNoYWRlci51bmlmb3JtcztpLm1vZGVs PXQsaS52aWV3PWUsaS5wcm9qZWN0aW9uPXIsaS5waXhlbFNjYWxlPW4sZlswXT10aGlzLmds LmRyYXdpbmdCdWZmZXJXaWR0aCxmWzFdPXRoaXMuZ2wuZHJhd2luZ0J1ZmZlckhlaWdodCx0 aGlzLnNoYWRlci51bmlmb3Jtcy5yZXNvbHV0aW9uPWZ9LHUudW5iaW5kPWZ1bmN0aW9uKCl7 dGhpcy52YW8udW5iaW5kKCl9LHUudXBkYXRlPWZ1bmN0aW9uKHQsZSxyLG4saSl7dmFyIG89 W107ZnVuY3Rpb24gcyh0LGUscixuLGkscyl7dmFyIGM9bFtyXTtjfHwoYz1sW3JdPXt9KTt2 YXIgdT1jW2VdO3V8fCh1PWNbZV09ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIGEodCxlKX1j YXRjaChlKXtyZXR1cm4gY29uc29sZS53YXJuKCdlcnJvciB2ZWN0b3JpemluZyB0ZXh0OiIn K3QrJyIgZXJyb3I6JyxlKSx7Y2VsbHM6W10scG9zaXRpb25zOltdfX19KGUse3RyaWFuZ2xl czohMCxmb250OnIsdGV4dEFsaWduOiJjZW50ZXIiLHRleHRCYXNlbGluZToibWlkZGxlIixs aW5lU3BhY2luZzppLHN0eWxldGFnczpzfSkpO2Zvcih2YXIgZj0obnx8MTIpLzEyLGg9dS5w b3NpdGlvbnMscD11LmNlbGxzLGQ9MCxtPXAubGVuZ3RoO2Q8bTsrK2QpZm9yKHZhciBnPXBb ZF0sdj0yO3Y+PTA7LS12KXt2YXIgeT1oW2dbdl1dO28ucHVzaChmKnlbMF0sLWYqeVsxXSx0 KX19Zm9yKHZhciBjPVswLDAsMF0sdT1bMCwwLDBdLGY9WzAsMCwwXSxoPVswLDAsMF0scD17 YnJlYWtsaW5lczohMCxib2xkczohMCxpdGFsaWNzOiEwLHN1YnNjcmlwdHM6ITAsc3VwZXJz Y3JpcHRzOiEwfSxkPTA7ZDwzOysrZCl7ZltkXT1vLmxlbmd0aC8zfDAscyguNSoodFswXVtk XSt0WzFdW2RdKSxlW2RdLHJbZF0sMTIsMS4yNSxwKSxoW2RdPShvLmxlbmd0aC8zfDApLWZb ZF0sY1tkXT1vLmxlbmd0aC8zfDA7Zm9yKHZhciBtPTA7bTxuW2RdLmxlbmd0aDsrK20pbltk XVttXS50ZXh0JiZzKG5bZF1bbV0ueCxuW2RdW21dLnRleHQsbltkXVttXS5mb250fHxpLG5b ZF1bbV0uZm9udFNpemV8fDEyLDEuMjUscCk7dVtkXT0oby5sZW5ndGgvM3wwKS1jW2RdfXRo aXMuYnVmZmVyLnVwZGF0ZShvKSx0aGlzLnRpY2tPZmZzZXQ9Yyx0aGlzLnRpY2tDb3VudD11 LHRoaXMubGFiZWxPZmZzZXQ9Zix0aGlzLmxhYmVsQ291bnQ9aH0sdS5kcmF3VGlja3M9ZnVu Y3Rpb24odCxlLHIsbixpLGEsbyxzKXt0aGlzLnRpY2tDb3VudFt0XSYmKHRoaXMuc2hhZGVy LnVuaWZvcm1zLmF4aXM9YSx0aGlzLnNoYWRlci51bmlmb3Jtcy5jb2xvcj1pLHRoaXMuc2hh ZGVyLnVuaWZvcm1zLmFuZ2xlPXIsdGhpcy5zaGFkZXIudW5pZm9ybXMuc2NhbGU9ZSx0aGlz LnNoYWRlci51bmlmb3Jtcy5vZmZzZXQ9bix0aGlzLnNoYWRlci51bmlmb3Jtcy5hbGlnbkRp cj1vLHRoaXMuc2hhZGVyLnVuaWZvcm1zLmFsaWduT3B0PXMsdGhpcy52YW8uZHJhdyh0aGlz LmdsLlRSSUFOR0xFUyx0aGlzLnRpY2tDb3VudFt0XSx0aGlzLnRpY2tPZmZzZXRbdF0pKX0s dS5kcmF3TGFiZWw9ZnVuY3Rpb24odCxlLHIsbixpLGEsbyxzKXt0aGlzLmxhYmVsQ291bnRb dF0mJih0aGlzLnNoYWRlci51bmlmb3Jtcy5heGlzPWEsdGhpcy5zaGFkZXIudW5pZm9ybXMu Y29sb3I9aSx0aGlzLnNoYWRlci51bmlmb3Jtcy5hbmdsZT1yLHRoaXMuc2hhZGVyLnVuaWZv cm1zLnNjYWxlPWUsdGhpcy5zaGFkZXIudW5pZm9ybXMub2Zmc2V0PW4sdGhpcy5zaGFkZXIu dW5pZm9ybXMuYWxpZ25EaXI9byx0aGlzLnNoYWRlci51bmlmb3Jtcy5hbGlnbk9wdD1zLHRo aXMudmFvLmRyYXcodGhpcy5nbC5UUklBTkdMRVMsdGhpcy5sYWJlbENvdW50W3RdLHRoaXMu bGFiZWxPZmZzZXRbdF0pKX0sdS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5zaGFkZXIuZGlz cG9zZSgpLHRoaXMudmFvLmRpc3Bvc2UoKSx0aGlzLmJ1ZmZlci5kaXNwb3NlKCl9fSkuY2Fs bCh0aGlzKX0pLmNhbGwodGhpcyx0KCJfcHJvY2VzcyIpKX0seyIuL3NoYWRlcnMiOjc0LF9w cm9jZXNzOjUsImdsLWJ1ZmZlciI6NzgsImdsLXZhbyI6MTUwLCJ2ZWN0b3JpemUtdGV4dCI6 MzExfV0sNzY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUp e3ZhciByPXQrIiIsbj1yLmluZGV4T2YoIi4iKSxpPTA7bj49MCYmKGk9ci5sZW5ndGgtbi0x KTt2YXIgYT1NYXRoLnBvdygxMCxpKSxvPU1hdGgucm91bmQodCplKmEpLHM9bysiIjtpZihz LmluZGV4T2YoImUiKT49MClyZXR1cm4gczt2YXIgbD1vL2EsYz1vJWE7bzwwPyhsPTB8LU1h dGguY2VpbChsKSxjPTB8LWMpOihsPTB8TWF0aC5mbG9vcihsKSxjfD0wKTt2YXIgdT0iIits O2lmKG88MCYmKHU9Ii0iK3UpLGkpe2Zvcih2YXIgZj0iIitjO2YubGVuZ3RoPGk7KWY9IjAi K2Y7cmV0dXJuIHUrIi4iK2Z9cmV0dXJuIHV9ci5jcmVhdGU9ZnVuY3Rpb24odCxlKXtmb3Io dmFyIHI9W10saT0wO2k8MzsrK2kpe2Zvcih2YXIgYT1bXSxvPSh0WzBdW2ldLHRbMV1baV0s MCk7byplW2ldPD10WzFdW2ldOysrbylhLnB1c2goe3g6byplW2ldLHRleHQ6bihlW2ldLG8p fSk7Zm9yKG89LTE7byplW2ldPj10WzBdW2ldOy0tbylhLnB1c2goe3g6byplW2ldLHRleHQ6 bihlW2ldLG8pfSk7ci5wdXNoKGEpfXJldHVybiByfSxyLmVxdWFsPWZ1bmN0aW9uKHQsZSl7 Zm9yKHZhciByPTA7cjwzOysrcil7aWYodFtyXS5sZW5ndGghPT1lW3JdLmxlbmd0aClyZXR1 cm4hMTtmb3IodmFyIG49MDtuPHRbcl0ubGVuZ3RoOysrbil7dmFyIGk9dFtyXVtuXSxhPWVb cl1bbl07aWYoaS54IT09YS54fHxpLnRleHQhPT1hLnRleHR8fGkuZm9udCE9PWEuZm9udHx8 aS5mb250Q29sb3IhPT1hLmZvbnRDb2xvcnx8aS5mb250U2l6ZSE9PWEuZm9udFNpemV8fGku ZHghPT1hLmR4fHxpLmR5IT09YS5keSlyZXR1cm4hMX19cmV0dXJuITB9fSx7fV0sNzc6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGws Zil7dmFyIGg9ZS5tb2RlbHx8YyxwPWUudmlld3x8Yyx2PWUucHJvamVjdGlvbnx8Yyx5PWUu X29ydGhvfHwhMSx4PXQuYm91bmRzLGI9KGY9Znx8YShoLHAsdix4LHkpKS5heGlzO28odSxw LGgpLG8odSx2LHUpO2Zvcih2YXIgXz1tLHc9MDt3PDM7Kyt3KV9bd10ubG89MS8wLF9bd10u aGk9LTEvMCxfW3ddLnBpeGVsc1BlckRhdGFVbml0PTEvMDt2YXIgVD1uKHModSx1KSk7cyh1 LHUpO2Zvcih2YXIgaz0wO2s8MzsrK2spe3ZhciBBPShrKzEpJTMsTT0oaysyKSUzLFM9Zzt0 OmZvcih3PTA7dzwyOysrdyl7dmFyIEU9W107aWYoYltrXTwwIT0hIXcpe1Nba109eFt3XVtr XTtmb3IodmFyIEw9MDtMPDI7KytMKXtTW0FdPXhbTF53XVtBXTtmb3IodmFyIEM9MDtDPDI7 KytDKVNbTV09eFtDXkxed11bTV0sRS5wdXNoKFMuc2xpY2UoKSl9dmFyIFA9eT81OjQ7Zm9y KEw9UDtMPT09UDsrK0wpe2lmKDA9PT1FLmxlbmd0aCljb250aW51ZSB0O0U9aS5wb3NpdGl2 ZShFLFRbTF0pfWZvcihMPTA7TDxFLmxlbmd0aDsrK0wpe009RVtMXTt2YXIgST1kKGcsdSxN LHIsbCk7Zm9yKEM9MDtDPDM7KytDKV9bQ10ubG89TWF0aC5taW4oX1tDXS5sbyxNW0NdKSxf W0NdLmhpPU1hdGgubWF4KF9bQ10uaGksTVtDXSksQyE9PWsmJihfW0NdLnBpeGVsc1BlckRh dGFVbml0PU1hdGgubWluKF9bQ10ucGl4ZWxzUGVyRGF0YVVuaXQsTWF0aC5hYnMoSVtDXSkp KX19fX1yZXR1cm4gX307dmFyIG49dCgiZXh0cmFjdC1mcnVzdHVtLXBsYW5lcyIpLGk9dCgi c3BsaXQtcG9seWdvbiIpLGE9dCgiLi9saWIvY3ViZS5qcyIpLG89dCgiZ2wtbWF0NC9tdWx0 aXBseSIpLHM9dCgiZ2wtbWF0NC90cmFuc3Bvc2UiKSxsPXQoImdsLXZlYzQvdHJhbnNmb3Jt TWF0NCIpLGM9bmV3IEZsb2F0MzJBcnJheShbMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCww LDAsMV0pLHU9bmV3IEZsb2F0MzJBcnJheSgxNik7ZnVuY3Rpb24gZih0LGUscil7dGhpcy5s bz10LHRoaXMuaGk9ZSx0aGlzLnBpeGVsc1BlckRhdGFVbml0PXJ9dmFyIGg9WzAsMCwwLDFd LHA9WzAsMCwwLDFdO2Z1bmN0aW9uIGQodCxlLHIsbixpKXtmb3IodmFyIGE9MDthPDM7Kyth KXtmb3IodmFyIG89aCxzPXAsYz0wO2M8MzsrK2Mpc1tjXT1vW2NdPXJbY107c1szXT1vWzNd PTEsc1thXSs9MSxsKHMscyxlKSxzWzNdPDAmJih0W2FdPTEvMCksb1thXS09MSxsKG8sbyxl KSxvWzNdPDAmJih0W2FdPTEvMCk7dmFyIHU9KG9bMF0vb1szXS1zWzBdL3NbM10pKm4sZj0o b1sxXS9vWzNdLXNbMV0vc1szXSkqaTt0W2FdPS4yNSpNYXRoLnNxcnQodSp1K2YqZil9cmV0 dXJuIHR9dmFyIG09W25ldyBmKDEvMCwtMS8wLDEvMCksbmV3IGYoMS8wLC0xLzAsMS8wKSxu ZXcgZigxLzAsLTEvMCwxLzApXSxnPVswLDAsMF19LHsiLi9saWIvY3ViZS5qcyI6NzIsImV4 dHJhY3QtZnJ1c3R1bS1wbGFuZXMiOjY3LCJnbC1tYXQ0L211bHRpcGx5IjoxMDAsImdsLW1h dDQvdHJhbnNwb3NlIjoxMDksImdsLXZlYzQvdHJhbnNmb3JtTWF0NCI6MjIxLCJzcGxpdC1w b2x5Z29uIjozMDB9XSw3ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCJ0eXBlZGFycmF5LXBvb2wiKSxpPXQoIm5kYXJyYXktb3BzIiksYT10KCJuZGFycmF5Iiks bz1bInVpbnQ4IiwidWludDhfY2xhbXBlZCIsInVpbnQxNiIsInVpbnQzMiIsImludDgiLCJp bnQxNiIsImludDMyIiwiZmxvYXQzMiJdO2Z1bmN0aW9uIHModCxlLHIsbixpKXt0aGlzLmds PXQsdGhpcy50eXBlPWUsdGhpcy5oYW5kbGU9cix0aGlzLmxlbmd0aD1uLHRoaXMudXNhZ2U9 aX12YXIgbD1zLnByb3RvdHlwZTtmdW5jdGlvbiBjKHQsZSxyLG4saSxhKXt2YXIgbz1pLmxl bmd0aCppLkJZVEVTX1BFUl9FTEVNRU5UO2lmKGE8MClyZXR1cm4gdC5idWZmZXJEYXRhKGUs aSxuKSxvO2lmKG8rYT5yKXRocm93IG5ldyBFcnJvcigiZ2wtYnVmZmVyOiBJZiByZXNpemlu ZyBidWZmZXIsIG11c3Qgbm90IHNwZWNpZnkgb2Zmc2V0Iik7cmV0dXJuIHQuYnVmZmVyU3Vi RGF0YShlLGEsaSkscn1mdW5jdGlvbiB1KHQsZSl7Zm9yKHZhciByPW4ubWFsbG9jKHQubGVu Z3RoLGUpLGk9dC5sZW5ndGgsYT0wO2E8aTsrK2EpclthXT10W2FdO3JldHVybiByfWwuYmlu ZD1mdW5jdGlvbigpe3RoaXMuZ2wuYmluZEJ1ZmZlcih0aGlzLnR5cGUsdGhpcy5oYW5kbGUp fSxsLnVuYmluZD1mdW5jdGlvbigpe3RoaXMuZ2wuYmluZEJ1ZmZlcih0aGlzLnR5cGUsbnVs bCl9LGwuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuZ2wuZGVsZXRlQnVmZmVyKHRoaXMuaGFu ZGxlKX0sbC51cGRhdGU9ZnVuY3Rpb24odCxlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUmJihl PS0xKSx0aGlzLmJpbmQoKSwib2JqZWN0Ij09dHlwZW9mIHQmJnZvaWQgMCE9PXQuc2hhcGUp e3ZhciByPXQuZHR5cGU7aWYoby5pbmRleE9mKHIpPDAmJihyPSJmbG9hdDMyIiksdGhpcy50 eXBlPT09dGhpcy5nbC5FTEVNRU5UX0FSUkFZX0JVRkZFUilyPWdsLmdldEV4dGVuc2lvbigi T0VTX2VsZW1lbnRfaW5kZXhfdWludCIpJiYidWludDE2IiE9PXI/InVpbnQzMiI6InVpbnQx NiI7aWYocj09PXQuZHR5cGUmJmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTEsbj1lLmxlbmd0 aC0xO24+PTA7LS1uKXtpZihlW25dIT09cilyZXR1cm4hMTtyKj10W25dfXJldHVybiEwfSh0 LnNoYXBlLHQuc3RyaWRlKSkwPT09dC5vZmZzZXQmJnQuZGF0YS5sZW5ndGg9PT10LnNoYXBl WzBdP3RoaXMubGVuZ3RoPWModGhpcy5nbCx0aGlzLnR5cGUsdGhpcy5sZW5ndGgsdGhpcy51 c2FnZSx0LmRhdGEsZSk6dGhpcy5sZW5ndGg9Yyh0aGlzLmdsLHRoaXMudHlwZSx0aGlzLmxl bmd0aCx0aGlzLnVzYWdlLHQuZGF0YS5zdWJhcnJheSh0Lm9mZnNldCx0LnNoYXBlWzBdKSxl KTtlbHNle3ZhciBzPW4ubWFsbG9jKHQuc2l6ZSxyKSxsPWEocyx0LnNoYXBlKTtpLmFzc2ln bihsLHQpLHRoaXMubGVuZ3RoPWModGhpcy5nbCx0aGlzLnR5cGUsdGhpcy5sZW5ndGgsdGhp cy51c2FnZSxlPDA/czpzLnN1YmFycmF5KDAsdC5zaXplKSxlKSxuLmZyZWUocyl9fWVsc2Ug aWYoQXJyYXkuaXNBcnJheSh0KSl7dmFyIGY7Zj10aGlzLnR5cGU9PT10aGlzLmdsLkVMRU1F TlRfQVJSQVlfQlVGRkVSP3UodCwidWludDE2Iik6dSh0LCJmbG9hdDMyIiksdGhpcy5sZW5n dGg9Yyh0aGlzLmdsLHRoaXMudHlwZSx0aGlzLmxlbmd0aCx0aGlzLnVzYWdlLGU8MD9mOmYu c3ViYXJyYXkoMCx0Lmxlbmd0aCksZSksbi5mcmVlKGYpfWVsc2UgaWYoIm9iamVjdCI9PXR5 cGVvZiB0JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RoKXRoaXMubGVuZ3RoPWModGhpcy5n bCx0aGlzLnR5cGUsdGhpcy5sZW5ndGgsdGhpcy51c2FnZSx0LGUpO2Vsc2V7aWYoIm51bWJl ciIhPXR5cGVvZiB0JiZ2b2lkIDAhPT10KXRocm93IG5ldyBFcnJvcigiZ2wtYnVmZmVyOiBJ bnZhbGlkIGRhdGEgdHlwZSIpO2lmKGU+PTApdGhyb3cgbmV3IEVycm9yKCJnbC1idWZmZXI6 IENhbm5vdCBzcGVjaWZ5IG9mZnNldCB3aGVuIHJlc2l6aW5nIGJ1ZmZlciIpOyh0fD0wKTw9 MCYmKHQ9MSksdGhpcy5nbC5idWZmZXJEYXRhKHRoaXMudHlwZSwwfHQsdGhpcy51c2FnZSks dGhpcy5sZW5ndGg9dH19LGUuZXhwb3J0cz1mdW5jdGlvbih0LGUscixuKXtpZihyPXJ8fHQu QVJSQVlfQlVGRkVSLG49bnx8dC5EWU5BTUlDX0RSQVcsciE9PXQuQVJSQVlfQlVGRkVSJiZy IT09dC5FTEVNRU5UX0FSUkFZX0JVRkZFUil0aHJvdyBuZXcgRXJyb3IoImdsLWJ1ZmZlcjog SW52YWxpZCB0eXBlIGZvciB3ZWJnbCBidWZmZXIsIG11c3QgYmUgZWl0aGVyIGdsLkFSUkFZ X0JVRkZFUiBvciBnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiIpO2lmKG4hPT10LkRZTkFNSUNf RFJBVyYmbiE9PXQuU1RBVElDX0RSQVcmJm4hPT10LlNUUkVBTV9EUkFXKXRocm93IG5ldyBF cnJvcigiZ2wtYnVmZmVyOiBJbnZhbGlkIHVzYWdlIGZvciBidWZmZXIsIG11c3QgYmUgZWl0 aGVyIGdsLkRZTkFNSUNfRFJBVywgZ2wuU1RBVElDX0RSQVcgb3IgZ2wuU1RSRUFNX0RSQVci KTt2YXIgaT10LmNyZWF0ZUJ1ZmZlcigpLGE9bmV3IHModCxyLGksMCxuKTtyZXR1cm4gYS51 cGRhdGUoZSksYX19LHtuZGFycmF5OjI1OSwibmRhcnJheS1vcHMiOjI1NCwidHlwZWRhcnJh eS1wb29sIjozMDh9XSw3OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10 KCJnbC12ZWMzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5wb3NpdGlvbnMs aT10LnZlY3RvcnMsYT17cG9zaXRpb25zOltdLHZlcnRleEludGVuc2l0eTpbXSx2ZXJ0ZXhJ bnRlbnNpdHlCb3VuZHM6dC52ZXJ0ZXhJbnRlbnNpdHlCb3VuZHMsdmVjdG9yczpbXSxjZWxs czpbXSxjb25lT2Zmc2V0OnQuY29uZU9mZnNldCxjb2xvcm1hcDp0LmNvbG9ybWFwfTtpZigw PT09dC5wb3NpdGlvbnMubGVuZ3RoKXJldHVybiBlJiYoZVswXT1bMCwwLDBdLGVbMV09WzAs MCwwXSksYTtmb3IodmFyIG89MCxzPTEvMCxsPS0xLzAsYz0xLzAsdT0tMS8wLGY9MS8wLGg9 LTEvMCxwPW51bGwsZD1udWxsLG09W10sZz0xLzAsdj0hMSx5PTA7eTxyLmxlbmd0aDt5Kysp e3ZhciB4PXJbeV07cz1NYXRoLm1pbih4WzBdLHMpLGw9TWF0aC5tYXgoeFswXSxsKSxjPU1h dGgubWluKHhbMV0sYyksdT1NYXRoLm1heCh4WzFdLHUpLGY9TWF0aC5taW4oeFsyXSxmKSxo PU1hdGgubWF4KHhbMl0saCk7dmFyIGI9aVt5XTtpZihuLmxlbmd0aChiKT5vJiYobz1uLmxl bmd0aChiKSkseSl7dmFyIF89MipuLmRpc3RhbmNlKHAseCkvKG4ubGVuZ3RoKGQpK24ubGVu Z3RoKGIpKTtfPyhnPU1hdGgubWluKGcsXyksdj0hMSk6dj0hMH12fHwocD14LGQ9YiksbS5w dXNoKGIpfXZhciB3PVtzLGMsZl0sVD1bbCx1LGhdO2UmJihlWzBdPXcsZVsxXT1UKSwwPT09 byYmKG89MSk7dmFyIGs9MS9vO2lzRmluaXRlKGcpfHwoZz0xKSxhLnZlY3RvclNjYWxlPWc7 dmFyIEE9dC5jb25lU2l6ZXx8LjU7dC5hYnNvbHV0ZUNvbmVTaXplJiYoQT10LmFic29sdXRl Q29uZVNpemUqayksYS5jb25lU2NhbGU9QTt5PTA7Zm9yKHZhciBNPTA7eTxyLmxlbmd0aDt5 KyspZm9yKHZhciBTPSh4PXJbeV0pWzBdLEU9eFsxXSxMPXhbMl0sQz1tW3ldLFA9bi5sZW5n dGgoQykqayxJPTA7STw4O0krKyl7YS5wb3NpdGlvbnMucHVzaChbUyxFLEwsTSsrXSksYS5w b3NpdGlvbnMucHVzaChbUyxFLEwsTSsrXSksYS5wb3NpdGlvbnMucHVzaChbUyxFLEwsTSsr XSksYS5wb3NpdGlvbnMucHVzaChbUyxFLEwsTSsrXSksYS5wb3NpdGlvbnMucHVzaChbUyxF LEwsTSsrXSksYS5wb3NpdGlvbnMucHVzaChbUyxFLEwsTSsrXSksYS52ZWN0b3JzLnB1c2go QyksYS52ZWN0b3JzLnB1c2goQyksYS52ZWN0b3JzLnB1c2goQyksYS52ZWN0b3JzLnB1c2go QyksYS52ZWN0b3JzLnB1c2goQyksYS52ZWN0b3JzLnB1c2goQyksYS52ZXJ0ZXhJbnRlbnNp dHkucHVzaChQLFAsUCksYS52ZXJ0ZXhJbnRlbnNpdHkucHVzaChQLFAsUCk7dmFyIE89YS5w b3NpdGlvbnMubGVuZ3RoO2EuY2VsbHMucHVzaChbTy02LE8tNSxPLTRdLFtPLTMsTy0yLE8t MV0pfXJldHVybiBhfTt2YXIgaT10KCIuL2xpYi9zaGFkZXJzIik7ZS5leHBvcnRzLmNyZWF0 ZU1lc2g9dCgiLi9jcmVhdGVfbWVzaCIpLGUuZXhwb3J0cy5jcmVhdGVDb25lTWVzaD1mdW5j dGlvbih0LHIpe3JldHVybiBlLmV4cG9ydHMuY3JlYXRlTWVzaCh0LHIse3NoYWRlcnM6aSx0 cmFjZVR5cGU6ImNvbmUifSl9fSx7Ii4vY3JlYXRlX21lc2giOjgwLCIuL2xpYi9zaGFkZXJz Ijo4MSwiZ2wtdmVjMyI6MTY5fV0sODA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgiZ2wtc2hhZGVyIiksaT10KCJnbC1idWZmZXIiKSxhPXQoImdsLXZhbyIpLG89 dCgiZ2wtdGV4dHVyZTJkIikscz10KCJnbC1tYXQ0L211bHRpcGx5IiksbD10KCJnbC1tYXQ0 L2ludmVydCIpLGM9dCgibmRhcnJheSIpLHU9dCgiY29sb3JtYXAiKSxmPVsxLDAsMCwwLDAs MSwwLDAsMCwwLDEsMCwwLDAsMCwxXTtmdW5jdGlvbiBoKHQsZSxyLG4saSxhLG8scyxsLGMs dSl7dGhpcy5nbD10LHRoaXMucGl4ZWxSYXRpbz0xLHRoaXMuY2VsbHM9W10sdGhpcy5wb3Np dGlvbnM9W10sdGhpcy5pbnRlbnNpdHk9W10sdGhpcy50ZXh0dXJlPWUsdGhpcy5kaXJ0eT0h MCx0aGlzLnRyaVNoYWRlcj1yLHRoaXMucGlja1NoYWRlcj1uLHRoaXMudHJpYW5nbGVQb3Np dGlvbnM9aSx0aGlzLnRyaWFuZ2xlVmVjdG9ycz1hLHRoaXMudHJpYW5nbGVDb2xvcnM9cyx0 aGlzLnRyaWFuZ2xlVVZzPWwsdGhpcy50cmlhbmdsZUlkcz1vLHRoaXMudHJpYW5nbGVWQU89 Yyx0aGlzLnRyaWFuZ2xlQ291bnQ9MCx0aGlzLnBpY2tJZD0xLHRoaXMuYm91bmRzPVtbMS8w LDEvMCwxLzBdLFstMS8wLC0xLzAsLTEvMF1dLHRoaXMuY2xpcEJvdW5kcz1bWy0xLzAsLTEv MCwtMS8wXSxbMS8wLDEvMCwxLzBdXSx0aGlzLmxpZ2h0UG9zaXRpb249WzFlNSwxZTUsMF0s dGhpcy5hbWJpZW50TGlnaHQ9LjgsdGhpcy5kaWZmdXNlTGlnaHQ9LjgsdGhpcy5zcGVjdWxh ckxpZ2h0PTIsdGhpcy5yb3VnaG5lc3M9LjUsdGhpcy5mcmVzbmVsPTEuNSx0aGlzLm9wYWNp dHk9MSx0aGlzLnRyYWNlVHlwZT11LHRoaXMudHViZVNjYWxlPTEsdGhpcy5jb25lU2NhbGU9 Mix0aGlzLnZlY3RvclNjYWxlPTEsdGhpcy5jb25lT2Zmc2V0PS4yNSx0aGlzLl9tb2RlbD1m LHRoaXMuX3ZpZXc9Zix0aGlzLl9wcm9qZWN0aW9uPWYsdGhpcy5fcmVzb2x1dGlvbj1bMSwx XX12YXIgcD1oLnByb3RvdHlwZTtmdW5jdGlvbiBkKHQsZSl7dmFyIHI9bih0LGUubWVzaFNo YWRlci52ZXJ0ZXgsZS5tZXNoU2hhZGVyLmZyYWdtZW50LG51bGwsZS5tZXNoU2hhZGVyLmF0 dHJpYnV0ZXMpO3JldHVybiByLmF0dHJpYnV0ZXMucG9zaXRpb24ubG9jYXRpb249MCxyLmF0 dHJpYnV0ZXMuY29sb3IubG9jYXRpb249MixyLmF0dHJpYnV0ZXMudXYubG9jYXRpb249Myxy LmF0dHJpYnV0ZXMudmVjdG9yLmxvY2F0aW9uPTQscn1mdW5jdGlvbiBtKHQsZSl7dmFyIHI9 bih0LGUucGlja1NoYWRlci52ZXJ0ZXgsZS5waWNrU2hhZGVyLmZyYWdtZW50LG51bGwsZS5w aWNrU2hhZGVyLmF0dHJpYnV0ZXMpO3JldHVybiByLmF0dHJpYnV0ZXMucG9zaXRpb24ubG9j YXRpb249MCxyLmF0dHJpYnV0ZXMuaWQubG9jYXRpb249MSxyLmF0dHJpYnV0ZXMudmVjdG9y LmxvY2F0aW9uPTQscn1wLmlzT3BhcXVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3BhY2l0 eT49MX0scC5pc1RyYW5zcGFyZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3BhY2l0eTwx fSxwLnBpY2tTbG90cz0xLHAuc2V0UGlja0Jhc2U9ZnVuY3Rpb24odCl7dGhpcy5waWNrSWQ9 dH0scC51cGRhdGU9ZnVuY3Rpb24odCl7dD10fHx7fTt2YXIgZT10aGlzLmdsO3RoaXMuZGly dHk9ITAsImxpZ2h0UG9zaXRpb24iaW4gdCYmKHRoaXMubGlnaHRQb3NpdGlvbj10LmxpZ2h0 UG9zaXRpb24pLCJvcGFjaXR5ImluIHQmJih0aGlzLm9wYWNpdHk9dC5vcGFjaXR5KSwiYW1i aWVudCJpbiB0JiYodGhpcy5hbWJpZW50TGlnaHQ9dC5hbWJpZW50KSwiZGlmZnVzZSJpbiB0 JiYodGhpcy5kaWZmdXNlTGlnaHQ9dC5kaWZmdXNlKSwic3BlY3VsYXIiaW4gdCYmKHRoaXMu c3BlY3VsYXJMaWdodD10LnNwZWN1bGFyKSwicm91Z2huZXNzImluIHQmJih0aGlzLnJvdWdo bmVzcz10LnJvdWdobmVzcyksImZyZXNuZWwiaW4gdCYmKHRoaXMuZnJlc25lbD10LmZyZXNu ZWwpLHZvaWQgMCE9PXQudHViZVNjYWxlJiYodGhpcy50dWJlU2NhbGU9dC50dWJlU2NhbGUp LHZvaWQgMCE9PXQudmVjdG9yU2NhbGUmJih0aGlzLnZlY3RvclNjYWxlPXQudmVjdG9yU2Nh bGUpLHZvaWQgMCE9PXQuY29uZVNjYWxlJiYodGhpcy5jb25lU2NhbGU9dC5jb25lU2NhbGUp LHZvaWQgMCE9PXQuY29uZU9mZnNldCYmKHRoaXMuY29uZU9mZnNldD10LmNvbmVPZmZzZXQp LHQuY29sb3JtYXAmJih0aGlzLnRleHR1cmUuc2hhcGU9WzI1NiwyNTZdLHRoaXMudGV4dHVy ZS5taW5GaWx0ZXI9ZS5MSU5FQVJfTUlQTUFQX0xJTkVBUix0aGlzLnRleHR1cmUubWFnRmls dGVyPWUuTElORUFSLHRoaXMudGV4dHVyZS5zZXRQaXhlbHMoZnVuY3Rpb24odCl7Zm9yKHZh ciBlPXUoe2NvbG9ybWFwOnQsbnNoYWRlczoyNTYsZm9ybWF0OiJyZ2JhIn0pLHI9bmV3IFVp bnQ4QXJyYXkoMTAyNCksbj0wO248MjU2Oysrbil7Zm9yKHZhciBpPWVbbl0sYT0wO2E8Mzsr K2Epcls0Km4rYV09aVthXTtyWzQqbiszXT0yNTUqaVszXX1yZXR1cm4gYyhyLFsyNTYsMjU2 LDRdLFs0LDAsMV0pfSh0LmNvbG9ybWFwKSksdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFw KCkpO3ZhciByPXQuY2VsbHMsbj10LnBvc2l0aW9ucyxpPXQudmVjdG9ycztpZihuJiZyJiZp KXt2YXIgYT1bXSxvPVtdLHM9W10sbD1bXSxmPVtdO3RoaXMuY2VsbHM9cix0aGlzLnBvc2l0 aW9ucz1uLHRoaXMudmVjdG9ycz1pO3ZhciBoPXQubWVzaENvbG9yfHxbMSwxLDEsMV0scD10 LnZlcnRleEludGVuc2l0eSxkPTEvMCxtPS0xLzA7aWYocClpZih0LnZlcnRleEludGVuc2l0 eUJvdW5kcylkPSt0LnZlcnRleEludGVuc2l0eUJvdW5kc1swXSxtPSt0LnZlcnRleEludGVu c2l0eUJvdW5kc1sxXTtlbHNlIGZvcih2YXIgZz0wO2c8cC5sZW5ndGg7KytnKXt2YXIgdj1w W2ddO2Q9TWF0aC5taW4oZCx2KSxtPU1hdGgubWF4KG0sdil9ZWxzZSBmb3IoZz0wO2c8bi5s ZW5ndGg7KytnKXt2PW5bZ11bMl07ZD1NYXRoLm1pbihkLHYpLG09TWF0aC5tYXgobSx2KX10 aGlzLmludGVuc2l0eT1wfHxmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGgscj1uZXcg QXJyYXkoZSksbj0wO248ZTsrK24pcltuXT10W25dWzJdO3JldHVybiByfShuKSx0aGlzLmJv dW5kcz1bWzEvMCwxLzAsMS8wXSxbLTEvMCwtMS8wLC0xLzBdXTtmb3IoZz0wO2c8bi5sZW5n dGg7KytnKWZvcih2YXIgeT1uW2ddLHg9MDt4PDM7Kyt4KSFpc05hTih5W3hdKSYmaXNGaW5p dGUoeVt4XSkmJih0aGlzLmJvdW5kc1swXVt4XT1NYXRoLm1pbih0aGlzLmJvdW5kc1swXVt4 XSx5W3hdKSx0aGlzLmJvdW5kc1sxXVt4XT1NYXRoLm1heCh0aGlzLmJvdW5kc1sxXVt4XSx5 W3hdKSk7dmFyIGI9MDt0OmZvcihnPTA7ZzxyLmxlbmd0aDsrK2cpe3ZhciBfPXJbZ107c3dp dGNoKF8ubGVuZ3RoKXtjYXNlIDM6Zm9yKHg9MDt4PDM7Kyt4KXt5PW5bVD1fW3hdXTtmb3Io dmFyIHc9MDt3PDM7Kyt3KWlmKGlzTmFOKHlbd10pfHwhaXNGaW5pdGUoeVt3XSkpY29udGlu dWUgdH1mb3IoeD0wO3g8MzsrK3gpe3ZhciBUO3k9bltUPV9bMi14XV07YS5wdXNoKHlbMF0s eVsxXSx5WzJdLHlbM10pO3ZhciBrPWlbVF07by5wdXNoKGtbMF0sa1sxXSxrWzJdLGtbM118 fDApO3ZhciBBLE09aDszPT09TS5sZW5ndGg/cy5wdXNoKE1bMF0sTVsxXSxNWzJdLDEpOnMu cHVzaChNWzBdLE1bMV0sTVsyXSxNWzNdKSxBPXA/WyhwW1RdLWQpLyhtLWQpLDBdOlsoeVsy XS1kKS8obS1kKSwwXSxsLnB1c2goQVswXSxBWzFdKSxmLnB1c2goZyl9Yis9MX19dGhpcy50 cmlhbmdsZUNvdW50PWIsdGhpcy50cmlhbmdsZVBvc2l0aW9ucy51cGRhdGUoYSksdGhpcy50 cmlhbmdsZVZlY3RvcnMudXBkYXRlKG8pLHRoaXMudHJpYW5nbGVDb2xvcnMudXBkYXRlKHMp LHRoaXMudHJpYW5nbGVVVnMudXBkYXRlKGwpLHRoaXMudHJpYW5nbGVJZHMudXBkYXRlKG5l dyBVaW50MzJBcnJheShmKSl9fSxwLmRyYXdUcmFuc3BhcmVudD1wLmRyYXc9ZnVuY3Rpb24o dCl7dD10fHx7fTtmb3IodmFyIGU9dGhpcy5nbCxyPXQubW9kZWx8fGYsbj10LnZpZXd8fGYs aT10LnByb2plY3Rpb258fGYsYT1bWy0xZTYsLTFlNiwtMWU2XSxbMWU2LDFlNiwxZTZdXSxv PTA7bzwzOysrbylhWzBdW29dPU1hdGgubWF4KGFbMF1bb10sdGhpcy5jbGlwQm91bmRzWzBd W29dKSxhWzFdW29dPU1hdGgubWluKGFbMV1bb10sdGhpcy5jbGlwQm91bmRzWzFdW29dKTt2 YXIgYz17bW9kZWw6cix2aWV3Om4scHJvamVjdGlvbjppLGludmVyc2VNb2RlbDpmLnNsaWNl KCksY2xpcEJvdW5kczphLGthbWJpZW50OnRoaXMuYW1iaWVudExpZ2h0LGtkaWZmdXNlOnRo aXMuZGlmZnVzZUxpZ2h0LGtzcGVjdWxhcjp0aGlzLnNwZWN1bGFyTGlnaHQscm91Z2huZXNz OnRoaXMucm91Z2huZXNzLGZyZXNuZWw6dGhpcy5mcmVzbmVsLGV5ZVBvc2l0aW9uOlswLDAs MF0sbGlnaHRQb3NpdGlvbjpbMCwwLDBdLG9wYWNpdHk6dGhpcy5vcGFjaXR5LHR1YmVTY2Fs ZTp0aGlzLnR1YmVTY2FsZSx2ZWN0b3JTY2FsZTp0aGlzLnZlY3RvclNjYWxlLGNvbmVTY2Fs ZTp0aGlzLmNvbmVTY2FsZSxjb25lT2Zmc2V0OnRoaXMuY29uZU9mZnNldCx0ZXh0dXJlOjB9 O2MuaW52ZXJzZU1vZGVsPWwoYy5pbnZlcnNlTW9kZWwsYy5tb2RlbCksZS5kaXNhYmxlKGUu Q1VMTF9GQUNFKSx0aGlzLnRleHR1cmUuYmluZCgwKTt2YXIgdT1uZXcgQXJyYXkoMTYpO3Mo dSxjLnZpZXcsYy5tb2RlbCkscyh1LGMucHJvamVjdGlvbix1KSxsKHUsdSk7Zm9yKG89MDtv PDM7KytvKWMuZXllUG9zaXRpb25bb109dVsxMitvXS91WzE1XTt2YXIgaD11WzE1XTtmb3Io bz0wO288MzsrK28paCs9dGhpcy5saWdodFBvc2l0aW9uW29dKnVbNCpvKzNdO2ZvcihvPTA7 bzwzOysrbyl7Zm9yKHZhciBwPXVbMTIrb10sZD0wO2Q8MzsrK2QpcCs9dVs0KmQrb10qdGhp cy5saWdodFBvc2l0aW9uW2RdO2MubGlnaHRQb3NpdGlvbltvXT1wL2h9aWYodGhpcy50cmlh bmdsZUNvdW50PjApe3ZhciBtPXRoaXMudHJpU2hhZGVyO20uYmluZCgpLG0udW5pZm9ybXM9 Yyx0aGlzLnRyaWFuZ2xlVkFPLmJpbmQoKSxlLmRyYXdBcnJheXMoZS5UUklBTkdMRVMsMCwz KnRoaXMudHJpYW5nbGVDb3VudCksdGhpcy50cmlhbmdsZVZBTy51bmJpbmQoKX19LHAuZHJh d1BpY2s9ZnVuY3Rpb24odCl7dD10fHx7fTtmb3IodmFyIGU9dGhpcy5nbCxyPXQubW9kZWx8 fGYsbj10LnZpZXd8fGYsaT10LnByb2plY3Rpb258fGYsYT1bWy0xZTYsLTFlNiwtMWU2XSxb MWU2LDFlNiwxZTZdXSxvPTA7bzwzOysrbylhWzBdW29dPU1hdGgubWF4KGFbMF1bb10sdGhp cy5jbGlwQm91bmRzWzBdW29dKSxhWzFdW29dPU1hdGgubWluKGFbMV1bb10sdGhpcy5jbGlw Qm91bmRzWzFdW29dKTt0aGlzLl9tb2RlbD1bXS5zbGljZS5jYWxsKHIpLHRoaXMuX3ZpZXc9 W10uc2xpY2UuY2FsbChuKSx0aGlzLl9wcm9qZWN0aW9uPVtdLnNsaWNlLmNhbGwoaSksdGhp cy5fcmVzb2x1dGlvbj1bZS5kcmF3aW5nQnVmZmVyV2lkdGgsZS5kcmF3aW5nQnVmZmVySGVp Z2h0XTt2YXIgcz17bW9kZWw6cix2aWV3Om4scHJvamVjdGlvbjppLGNsaXBCb3VuZHM6YSx0 dWJlU2NhbGU6dGhpcy50dWJlU2NhbGUsdmVjdG9yU2NhbGU6dGhpcy52ZWN0b3JTY2FsZSxj b25lU2NhbGU6dGhpcy5jb25lU2NhbGUsY29uZU9mZnNldDp0aGlzLmNvbmVPZmZzZXQscGlj a0lkOnRoaXMucGlja0lkLzI1NX0sbD10aGlzLnBpY2tTaGFkZXI7bC5iaW5kKCksbC51bmlm b3Jtcz1zLHRoaXMudHJpYW5nbGVDb3VudD4wJiYodGhpcy50cmlhbmdsZVZBTy5iaW5kKCks ZS5kcmF3QXJyYXlzKGUuVFJJQU5HTEVTLDAsMyp0aGlzLnRyaWFuZ2xlQ291bnQpLHRoaXMu dHJpYW5nbGVWQU8udW5iaW5kKCkpfSxwLnBpY2s9ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJu IG51bGw7aWYodC5pZCE9PXRoaXMucGlja0lkKXJldHVybiBudWxsO3ZhciBlPXQudmFsdWVb MF0rMjU2KnQudmFsdWVbMV0rNjU1MzYqdC52YWx1ZVsyXSxyPXRoaXMuY2VsbHNbZV0sbj10 aGlzLnBvc2l0aW9uc1tyWzFdXS5zbGljZSgwLDMpLGk9e3Bvc2l0aW9uOm4sZGF0YUNvb3Jk aW5hdGU6bixpbmRleDpNYXRoLmZsb29yKHJbMV0vNDgpfTtyZXR1cm4iY29uZSI9PT10aGlz LnRyYWNlVHlwZT9pLmluZGV4PU1hdGguZmxvb3IoclsxXS80OCk6InN0cmVhbXR1YmUiPT09 dGhpcy50cmFjZVR5cGUmJihpLmludGVuc2l0eT10aGlzLmludGVuc2l0eVtyWzFdXSxpLnZl bG9jaXR5PXRoaXMudmVjdG9yc1tyWzFdXS5zbGljZSgwLDMpLGkuZGl2ZXJnZW5jZT10aGlz LnZlY3RvcnNbclsxXV1bM10saS5pbmRleD1lKSxpfSxwLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0 aGlzLnRleHR1cmUuZGlzcG9zZSgpLHRoaXMudHJpU2hhZGVyLmRpc3Bvc2UoKSx0aGlzLnBp Y2tTaGFkZXIuZGlzcG9zZSgpLHRoaXMudHJpYW5nbGVWQU8uZGlzcG9zZSgpLHRoaXMudHJp YW5nbGVQb3NpdGlvbnMuZGlzcG9zZSgpLHRoaXMudHJpYW5nbGVWZWN0b3JzLmRpc3Bvc2Uo KSx0aGlzLnRyaWFuZ2xlQ29sb3JzLmRpc3Bvc2UoKSx0aGlzLnRyaWFuZ2xlVVZzLmRpc3Bv c2UoKSx0aGlzLnRyaWFuZ2xlSWRzLmRpc3Bvc2UoKX0sZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSxyKXt2YXIgbj1yLnNoYWRlcnM7MT09PWFyZ3VtZW50cy5sZW5ndGgmJih0PShlPXQpLmds KTt2YXIgcz1kKHQsbiksbD1tKHQsbiksdT1vKHQsYyhuZXcgVWludDhBcnJheShbMjU1LDI1 NSwyNTUsMjU1XSksWzEsMSw0XSkpO3UuZ2VuZXJhdGVNaXBtYXAoKSx1Lm1pbkZpbHRlcj10 LkxJTkVBUl9NSVBNQVBfTElORUFSLHUubWFnRmlsdGVyPXQuTElORUFSO3ZhciBmPWkodCks cD1pKHQpLGc9aSh0KSx2PWkodCkseT1pKHQpLHg9YSh0LFt7YnVmZmVyOmYsdHlwZTp0LkZM T0FULHNpemU6NH0se2J1ZmZlcjp5LHR5cGU6dC5VTlNJR05FRF9CWVRFLHNpemU6NCxub3Jt YWxpemVkOiEwfSx7YnVmZmVyOmcsdHlwZTp0LkZMT0FULHNpemU6NH0se2J1ZmZlcjp2LHR5 cGU6dC5GTE9BVCxzaXplOjJ9LHtidWZmZXI6cCx0eXBlOnQuRkxPQVQsc2l6ZTo0fV0pLGI9 bmV3IGgodCx1LHMsbCxmLHAseSxnLHYseCxyLnRyYWNlVHlwZXx8ImNvbmUiKTtyZXR1cm4g Yi51cGRhdGUoZSksYn19LHtjb2xvcm1hcDo1MywiZ2wtYnVmZmVyIjo3OCwiZ2wtbWF0NC9p bnZlcnQiOjk4LCJnbC1tYXQ0L211bHRpcGx5IjoxMDAsImdsLXNoYWRlciI6MTMyLCJnbC10 ZXh0dXJlMmQiOjE0NiwiZ2wtdmFvIjoxNTAsbmRhcnJheToyNTl9XSw4MTpbZnVuY3Rpb24o dCxlLHIpe3ZhciBuPXQoImdsc2xpZnkiKSxpPW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7 XG5cbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnZlYzMg Z2V0T3J0aG9nb25hbFZlY3Rvcih2ZWMzIHYpIHtcbiAgLy8gUmV0dXJuIHVwLXZlY3RvciBm b3Igb25seS16IHZlY3Rvci5cbiAgLy8gUmV0dXJuIGF4ICsgYnkgKyBjeiA9IDAsIGEgcG9p bnQgdGhhdCBsaWVzIG9uIHRoZSBwbGFuZSB0aGF0IGhhcyB2IGFzIGEgbm9ybWFsIGFuZCB0 aGF0IGlzbid0ICgwLDAsMCkuXG4gIC8vIEZyb20gdGhlIGFib3ZlIGlmLXN0YXRlbWVudCB3 ZSBoYXZlIHx8YXx8ID4gMCAgVSAgfHxifHwgPiAwLlxuICAvLyBBc3NpZ24geiA9IDAsIHgg PSAtYiwgeSA9IGE6XG4gIC8vIGEqLWIgKyBiKmEgKyBjKjAgPSAtYmEgKyBiYSArIDAgPSAw XG4gIGlmICh2Lngqdi54ID4gdi56KnYueiB8fCB2Lnkqdi55ID4gdi56KnYueikge1xuICAg IHJldHVybiBub3JtYWxpemUodmVjMygtdi55LCB2LngsIDAuMCkpO1xuICB9IGVsc2Uge1xu ICAgIHJldHVybiBub3JtYWxpemUodmVjMygwLjAsIHYueiwgLXYueSkpO1xuICB9XG59XG5c bi8vIENhbGN1bGF0ZSB0aGUgY29uZSB2ZXJ0ZXggYW5kIG5vcm1hbCBhdCB0aGUgZ2l2ZW4g aW5kZXguXG4vL1xuLy8gVGhlIHJldHVybmVkIHZlcnRleCBpcyBmb3IgYSBjb25lIHdpdGgg aXRzIHRvcCBhdCBvcmlnaW4gYW5kIGhlaWdodCBvZiAxLjAsXG4vLyBwb2ludGluZyBpbiB0 aGUgZGlyZWN0aW9uIG9mIHRoZSB2ZWN0b3IgYXR0cmlidXRlLlxuLy9cbi8vIEVhY2ggY29u ZSBpcyBtYWRlIHVwIG9mIGEgdG9wIHZlcnRleCwgYSBjZW50ZXIgYmFzZSB2ZXJ0ZXggYW5k IGJhc2UgcGVyaW1ldGVyIHZlcnRpY2VzLlxuLy8gVGhlc2UgdmVydGljZXMgYXJlIHVzZWQg dG8gbWFrZSB1cCB0aGUgdHJpYW5nbGVzIG9mIHRoZSBjb25lIGJ5IHRoZSBmb2xsb3dpbmc6 XG4vLyAgIHNlZ21lbnQgKyAwIHRvcCB2ZXJ0ZXhcbi8vICAgc2VnbWVudCArIDEgcGVyaW1l dGVyIHZlcnRleCBhKzFcbi8vICAgc2VnbWVudCArIDIgcGVyaW1ldGVyIHZlcnRleCBhXG4v LyAgIHNlZ21lbnQgKyAzIGNlbnRlciBiYXNlIHZlcnRleFxuLy8gICBzZWdtZW50ICsgNCBw ZXJpbWV0ZXIgdmVydGV4IGFcbi8vICAgc2VnbWVudCArIDUgcGVyaW1ldGVyIHZlcnRleCBh KzFcbi8vIFdoZXJlIHNlZ21lbnQgaXMgdGhlIG51bWJlciBvZiB0aGUgcmFkaWFsIHNlZ21l bnQgKiA2IGFuZCBhIGlzIHRoZSBhbmdsZSBhdCB0aGF0IHJhZGlhbCBzZWdtZW50LlxuLy8g VG8gZ28gZnJvbSBpbmRleCB0byBzZWdtZW50LCBmbG9vcihpbmRleCAvIDYpXG4vLyBUbyBn byBmcm9tIHNlZ21lbnQgdG8gYW5nbGUsIDIqcGkgKiAoc2VnbWVudC9zZWdtZW50Q291bnQp XG4vLyBUbyBnbyBmcm9tIGluZGV4IHRvIHNlZ21lbnQgaW5kZXgsIGluZGV4IC0gKHNlZ21l bnQqNilcbi8vXG52ZWMzIGdldENvbmVQb3NpdGlvbih2ZWMzIGQsIGZsb2F0IHJhd0luZGV4 LCBmbG9hdCBjb25lT2Zmc2V0LCBvdXQgdmVjMyBub3JtYWwpIHtcblxuICBjb25zdCBmbG9h dCBzZWdtZW50Q291bnQgPSA4LjA7XG5cbiAgZmxvYXQgaW5kZXggPSByYXdJbmRleCAtIGZs b29yKHJhd0luZGV4IC9cbiAgICAoc2VnbWVudENvdW50ICogNi4wKSkgKlxuICAgIChzZWdt ZW50Q291bnQgKiA2LjApO1xuXG4gIGZsb2F0IHNlZ21lbnQgPSBmbG9vcigwLjAwMSArIGlu ZGV4LzYuMCk7XG4gIGZsb2F0IHNlZ21lbnRJbmRleCA9IGluZGV4IC0gKHNlZ21lbnQqNi4w KTtcblxuICBub3JtYWwgPSAtbm9ybWFsaXplKGQpO1xuXG4gIGlmIChzZWdtZW50SW5kZXgg PiAyLjk5ICYmIHNlZ21lbnRJbmRleCA8IDMuMDEpIHtcbiAgICByZXR1cm4gbWl4KHZlYzMo MC4wKSwgLWQsIGNvbmVPZmZzZXQpO1xuICB9XG5cbiAgZmxvYXQgbmV4dEFuZ2xlID0gKFxu ICAgIChzZWdtZW50SW5kZXggPiAwLjk5ICYmICBzZWdtZW50SW5kZXggPCAxLjAxKSB8fFxu ICAgIChzZWdtZW50SW5kZXggPiA0Ljk5ICYmICBzZWdtZW50SW5kZXggPCA1LjAxKVxuICAp ID8gMS4wIDogMC4wO1xuICBmbG9hdCBhbmdsZSA9IDIuMCAqIDMuMTQxNTkgKiAoKHNlZ21l bnQgKyBuZXh0QW5nbGUpIC8gc2VnbWVudENvdW50KTtcblxuICB2ZWMzIHYxID0gbWl4KGQs IHZlYzMoMC4wKSwgY29uZU9mZnNldCk7XG4gIHZlYzMgdjIgPSB2MSAtIGQ7XG5cbiAgdmVj MyB1ID0gZ2V0T3J0aG9nb25hbFZlY3RvcihkKTtcbiAgdmVjMyB2ID0gbm9ybWFsaXplKGNy b3NzKHUsIGQpKTtcblxuICB2ZWMzIHggPSB1ICogY29zKGFuZ2xlKSAqIGxlbmd0aChkKSow LjI1O1xuICB2ZWMzIHkgPSB2ICogc2luKGFuZ2xlKSAqIGxlbmd0aChkKSowLjI1O1xuICB2 ZWMzIHYzID0gdjIgKyB4ICsgeTtcbiAgaWYgKHNlZ21lbnRJbmRleCA8IDMuMCkge1xuICAg IHZlYzMgdHggPSB1ICogc2luKGFuZ2xlKTtcbiAgICB2ZWMzIHR5ID0gdiAqIC1jb3MoYW5n bGUpO1xuICAgIHZlYzMgdGFuZ2VudCA9IHR4ICsgdHk7XG4gICAgbm9ybWFsID0gbm9ybWFs aXplKGNyb3NzKHYzIC0gdjEsIHRhbmdlbnQpKTtcbiAgfVxuXG4gIGlmIChzZWdtZW50SW5k ZXggPT0gMC4wKSB7XG4gICAgcmV0dXJuIG1peChkLCB2ZWMzKDAuMCksIGNvbmVPZmZzZXQp O1xuICB9XG4gIHJldHVybiB2Mztcbn1cblxuYXR0cmlidXRlIHZlYzMgdmVjdG9yO1xuYXR0 cmlidXRlIHZlYzQgY29sb3IsIHBvc2l0aW9uO1xuYXR0cmlidXRlIHZlYzIgdXY7XG5cbnVu aWZvcm0gZmxvYXQgdmVjdG9yU2NhbGUsIGNvbmVTY2FsZSwgY29uZU9mZnNldDtcbnVuaWZv cm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlvbiwgaW52ZXJzZU1vZGVsO1xudW5pZm9y bSB2ZWMzIGV5ZVBvc2l0aW9uLCBsaWdodFBvc2l0aW9uO1xuXG52YXJ5aW5nIHZlYzMgZl9u b3JtYWwsIGZfbGlnaHREaXJlY3Rpb24sIGZfZXllRGlyZWN0aW9uLCBmX2RhdGEsIGZfcG9z aXRpb247XG52YXJ5aW5nIHZlYzQgZl9jb2xvcjtcbnZhcnlpbmcgdmVjMiBmX3V2O1xuXG52 b2lkIG1haW4oKSB7XG4gIC8vIFNjYWxlIHRoZSB2ZWN0b3IgbWFnbml0dWRlIHRvIHN0YXkg Y29uc3RhbnQgd2l0aFxuICAvLyBtb2RlbCAmIHZpZXcgY2hhbmdlcy5cbiAgdmVjMyBub3Jt YWw7XG4gIHZlYzMgWFlaID0gZ2V0Q29uZVBvc2l0aW9uKG1hdDMobW9kZWwpICogKCh2ZWN0 b3JTY2FsZSAqIGNvbmVTY2FsZSkgKiB2ZWN0b3IpLCBwb3NpdGlvbi53LCBjb25lT2Zmc2V0 LCBub3JtYWwpO1xuICB2ZWM0IGNvbmVQb3NpdGlvbiA9IG1vZGVsICogdmVjNChwb3NpdGlv bi54eXosIDEuMCkgKyB2ZWM0KFhZWiwgMC4wKTtcblxuICAvL0xpZ2h0aW5nIGdlb21ldHJ5 IHBhcmFtZXRlcnNcbiAgdmVjNCBjYW1lcmFDb29yZGluYXRlID0gdmlldyAqIGNvbmVQb3Np dGlvbjtcbiAgY2FtZXJhQ29vcmRpbmF0ZS54eXogLz0gY2FtZXJhQ29vcmRpbmF0ZS53O1xu ICBmX2xpZ2h0RGlyZWN0aW9uID0gbGlnaHRQb3NpdGlvbiAtIGNhbWVyYUNvb3JkaW5hdGUu eHl6O1xuICBmX2V5ZURpcmVjdGlvbiAgID0gZXllUG9zaXRpb24gLSBjYW1lcmFDb29yZGlu YXRlLnh5ejtcbiAgZl9ub3JtYWwgPSBub3JtYWxpemUoKHZlYzQobm9ybWFsLCAwLjApICog aW52ZXJzZU1vZGVsKS54eXopO1xuXG4gIC8vIHZlYzQgbV9wb3NpdGlvbiAgPSBtb2RlbCAq IHZlYzQoY29uZVBvc2l0aW9uLCAxLjApO1xuICB2ZWM0IHRfcG9zaXRpb24gID0gdmlldyAq IGNvbmVQb3NpdGlvbjtcbiAgZ2xfUG9zaXRpb24gICAgICA9IHByb2plY3Rpb24gKiB0X3Bv c2l0aW9uO1xuXG4gIGZfY29sb3IgICAgICAgICAgPSBjb2xvcjtcbiAgZl9kYXRhICAgICAg ICAgICA9IGNvbmVQb3NpdGlvbi54eXo7XG4gIGZfcG9zaXRpb24gICAgICAgPSBwb3NpdGlv bi54eXo7XG4gIGZfdXYgICAgICAgICAgICAgPSB1djtcbn1cbiJdKSxhPW4oWyIjZXh0ZW5z aW9uIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA6IGVuYWJsZVxuXG5wcmVjaXNpb24g aGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5mbG9hdCBiZWNrbWFubkRpc3Ry aWJ1dGlvbihmbG9hdCB4LCBmbG9hdCByb3VnaG5lc3MpIHtcbiAgZmxvYXQgTmRvdEggPSBt YXgoeCwgMC4wMDAxKTtcbiAgZmxvYXQgY29zMkFscGhhID0gTmRvdEggKiBOZG90SDtcbiAg ZmxvYXQgdGFuMkFscGhhID0gKGNvczJBbHBoYSAtIDEuMCkgLyBjb3MyQWxwaGE7XG4gIGZs b2F0IHJvdWdobmVzczIgPSByb3VnaG5lc3MgKiByb3VnaG5lc3M7XG4gIGZsb2F0IGRlbm9t ID0gMy4xNDE1OTI2NTM1ODk3OTMgKiByb3VnaG5lc3MyICogY29zMkFscGhhICogY29zMkFs cGhhO1xuICByZXR1cm4gZXhwKHRhbjJBbHBoYSAvIHJvdWdobmVzczIpIC8gZGVub207XG59 XG5cbmZsb2F0IGNvb2tUb3JyYW5jZVNwZWN1bGFyKFxuICB2ZWMzIGxpZ2h0RGlyZWN0aW9u LFxuICB2ZWMzIHZpZXdEaXJlY3Rpb24sXG4gIHZlYzMgc3VyZmFjZU5vcm1hbCxcbiAgZmxv YXQgcm91Z2huZXNzLFxuICBmbG9hdCBmcmVzbmVsKSB7XG5cbiAgZmxvYXQgVmRvdE4gPSBt YXgoZG90KHZpZXdEaXJlY3Rpb24sIHN1cmZhY2VOb3JtYWwpLCAwLjApO1xuICBmbG9hdCBM ZG90TiA9IG1heChkb3QobGlnaHREaXJlY3Rpb24sIHN1cmZhY2VOb3JtYWwpLCAwLjApO1xu XG4gIC8vSGFsZiBhbmdsZSB2ZWN0b3JcbiAgdmVjMyBIID0gbm9ybWFsaXplKGxpZ2h0RGly ZWN0aW9uICsgdmlld0RpcmVjdGlvbik7XG5cbiAgLy9HZW9tZXRyaWMgdGVybVxuICBmbG9h dCBOZG90SCA9IG1heChkb3Qoc3VyZmFjZU5vcm1hbCwgSCksIDAuMCk7XG4gIGZsb2F0IFZk b3RIID0gbWF4KGRvdCh2aWV3RGlyZWN0aW9uLCBIKSwgMC4wMDAwMDEpO1xuICBmbG9hdCBM ZG90SCA9IG1heChkb3QobGlnaHREaXJlY3Rpb24sIEgpLCAwLjAwMDAwMSk7XG4gIGZsb2F0 IEcxID0gKDIuMCAqIE5kb3RIICogVmRvdE4pIC8gVmRvdEg7XG4gIGZsb2F0IEcyID0gKDIu MCAqIE5kb3RIICogTGRvdE4pIC8gTGRvdEg7XG4gIGZsb2F0IEcgPSBtaW4oMS4wLCBtaW4o RzEsIEcyKSk7XG4gIFxuICAvL0Rpc3RyaWJ1dGlvbiB0ZXJtXG4gIGZsb2F0IEQgPSBiZWNr bWFubkRpc3RyaWJ1dGlvbihOZG90SCwgcm91Z2huZXNzKTtcblxuICAvL0ZyZXNuZWwgdGVy bVxuICBmbG9hdCBGID0gcG93KDEuMCAtIFZkb3ROLCBmcmVzbmVsKTtcblxuICAvL011bHRp cGx5IHRlcm1zIGFuZCBkb25lXG4gIHJldHVybiAgRyAqIEYgKiBEIC8gbWF4KDMuMTQxNTky NjUgKiBWZG90TiwgMC4wMDAwMDEpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UoZmxvYXQgYSwg ZmxvYXQgYiwgZmxvYXQgcCkge1xuICByZXR1cm4gKChwID4gbWF4KGEsIGIpKSB8fCBcbiAg ICAgICAgICAocCA8IG1pbihhLCBiKSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMiBh LCB2ZWMyIGIsIHZlYzIgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAu eCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpKTtcbn1cblxuYm9v bCBvdXRPZlJhbmdlKHZlYzMgYSwgdmVjMyBiLCB2ZWMzIHApIHtcbiAgcmV0dXJuIChvdXRP ZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIu eSwgcC55KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS56LCBiLnosIHAueikpO1xufVxu XG5ib29sIG91dE9mUmFuZ2UodmVjNCBhLCB2ZWM0IGIsIHZlYzQgcCkge1xuICByZXR1cm4g b3V0T2ZSYW5nZShhLnh5eiwgYi54eXosIHAueHl6KTtcbn1cblxudW5pZm9ybSB2ZWMzIGNs aXBCb3VuZHNbMl07XG51bmlmb3JtIGZsb2F0IHJvdWdobmVzcywgZnJlc25lbCwga2FtYmll bnQsIGtkaWZmdXNlLCBrc3BlY3VsYXIsIG9wYWNpdHk7XG51bmlmb3JtIHNhbXBsZXIyRCB0 ZXh0dXJlO1xuXG52YXJ5aW5nIHZlYzMgZl9ub3JtYWwsIGZfbGlnaHREaXJlY3Rpb24sIGZf ZXllRGlyZWN0aW9uLCBmX2RhdGEsIGZfcG9zaXRpb247XG52YXJ5aW5nIHZlYzQgZl9jb2xv cjtcbnZhcnlpbmcgdmVjMiBmX3V2O1xuXG52b2lkIG1haW4oKSB7XG4gIGlmIChvdXRPZlJh bmdlKGNsaXBCb3VuZHNbMF0sIGNsaXBCb3VuZHNbMV0sIGZfcG9zaXRpb24pKSBkaXNjYXJk O1xuICB2ZWMzIE4gPSBub3JtYWxpemUoZl9ub3JtYWwpO1xuICB2ZWMzIEwgPSBub3JtYWxp emUoZl9saWdodERpcmVjdGlvbik7XG4gIHZlYzMgViA9IG5vcm1hbGl6ZShmX2V5ZURpcmVj dGlvbik7XG5cbiAgaWYoZ2xfRnJvbnRGYWNpbmcpIHtcbiAgICBOID0gLU47XG4gIH1cblxu ICBmbG9hdCBzcGVjdWxhciA9IG1pbigxLjAsIG1heCgwLjAsIGNvb2tUb3JyYW5jZVNwZWN1 bGFyKEwsIFYsIE4sIHJvdWdobmVzcywgZnJlc25lbCkpKTtcbiAgZmxvYXQgZGlmZnVzZSAg PSBtaW4oa2FtYmllbnQgKyBrZGlmZnVzZSAqIG1heChkb3QoTiwgTCksIDAuMCksIDEuMCk7 XG5cbiAgdmVjNCBzdXJmYWNlQ29sb3IgPSBmX2NvbG9yICogdGV4dHVyZTJEKHRleHR1cmUs IGZfdXYpO1xuICB2ZWM0IGxpdENvbG9yID0gc3VyZmFjZUNvbG9yLmEgKiB2ZWM0KGRpZmZ1 c2UgKiBzdXJmYWNlQ29sb3IucmdiICsga3NwZWN1bGFyICogdmVjMygxLDEsMSkgKiBzcGVj dWxhciwgIDEuMCk7XG5cbiAgZ2xfRnJhZ0NvbG9yID0gbGl0Q29sb3IgKiBvcGFjaXR5O1xu fVxuIl0pLG89bihbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcblxucHJlY2lzaW9uIGhpZ2hw IGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxudmVjMyBnZXRPcnRob2dvbmFsVmVjdG9y KHZlYzMgdikge1xuICAvLyBSZXR1cm4gdXAtdmVjdG9yIGZvciBvbmx5LXogdmVjdG9yLlxu ICAvLyBSZXR1cm4gYXggKyBieSArIGN6ID0gMCwgYSBwb2ludCB0aGF0IGxpZXMgb24gdGhl IHBsYW5lIHRoYXQgaGFzIHYgYXMgYSBub3JtYWwgYW5kIHRoYXQgaXNuJ3QgKDAsMCwwKS5c biAgLy8gRnJvbSB0aGUgYWJvdmUgaWYtc3RhdGVtZW50IHdlIGhhdmUgfHxhfHwgPiAwICBV ICB8fGJ8fCA+IDAuXG4gIC8vIEFzc2lnbiB6ID0gMCwgeCA9IC1iLCB5ID0gYTpcbiAgLy8g YSotYiArIGIqYSArIGMqMCA9IC1iYSArIGJhICsgMCA9IDBcbiAgaWYgKHYueCp2LnggPiB2 Lnoqdi56IHx8IHYueSp2LnkgPiB2Lnoqdi56KSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZSh2 ZWMzKC12LnksIHYueCwgMC4wKSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6 ZSh2ZWMzKDAuMCwgdi56LCAtdi55KSk7XG4gIH1cbn1cblxuLy8gQ2FsY3VsYXRlIHRoZSBj b25lIHZlcnRleCBhbmQgbm9ybWFsIGF0IHRoZSBnaXZlbiBpbmRleC5cbi8vXG4vLyBUaGUg cmV0dXJuZWQgdmVydGV4IGlzIGZvciBhIGNvbmUgd2l0aCBpdHMgdG9wIGF0IG9yaWdpbiBh bmQgaGVpZ2h0IG9mIDEuMCxcbi8vIHBvaW50aW5nIGluIHRoZSBkaXJlY3Rpb24gb2YgdGhl IHZlY3RvciBhdHRyaWJ1dGUuXG4vL1xuLy8gRWFjaCBjb25lIGlzIG1hZGUgdXAgb2YgYSB0 b3AgdmVydGV4LCBhIGNlbnRlciBiYXNlIHZlcnRleCBhbmQgYmFzZSBwZXJpbWV0ZXIgdmVy dGljZXMuXG4vLyBUaGVzZSB2ZXJ0aWNlcyBhcmUgdXNlZCB0byBtYWtlIHVwIHRoZSB0cmlh bmdsZXMgb2YgdGhlIGNvbmUgYnkgdGhlIGZvbGxvd2luZzpcbi8vICAgc2VnbWVudCArIDAg dG9wIHZlcnRleFxuLy8gICBzZWdtZW50ICsgMSBwZXJpbWV0ZXIgdmVydGV4IGErMVxuLy8g ICBzZWdtZW50ICsgMiBwZXJpbWV0ZXIgdmVydGV4IGFcbi8vICAgc2VnbWVudCArIDMgY2Vu dGVyIGJhc2UgdmVydGV4XG4vLyAgIHNlZ21lbnQgKyA0IHBlcmltZXRlciB2ZXJ0ZXggYVxu Ly8gICBzZWdtZW50ICsgNSBwZXJpbWV0ZXIgdmVydGV4IGErMVxuLy8gV2hlcmUgc2VnbWVu dCBpcyB0aGUgbnVtYmVyIG9mIHRoZSByYWRpYWwgc2VnbWVudCAqIDYgYW5kIGEgaXMgdGhl IGFuZ2xlIGF0IHRoYXQgcmFkaWFsIHNlZ21lbnQuXG4vLyBUbyBnbyBmcm9tIGluZGV4IHRv IHNlZ21lbnQsIGZsb29yKGluZGV4IC8gNilcbi8vIFRvIGdvIGZyb20gc2VnbWVudCB0byBh bmdsZSwgMipwaSAqIChzZWdtZW50L3NlZ21lbnRDb3VudClcbi8vIFRvIGdvIGZyb20gaW5k ZXggdG8gc2VnbWVudCBpbmRleCwgaW5kZXggLSAoc2VnbWVudCo2KVxuLy9cbnZlYzMgZ2V0 Q29uZVBvc2l0aW9uKHZlYzMgZCwgZmxvYXQgcmF3SW5kZXgsIGZsb2F0IGNvbmVPZmZzZXQs IG91dCB2ZWMzIG5vcm1hbCkge1xuXG4gIGNvbnN0IGZsb2F0IHNlZ21lbnRDb3VudCA9IDgu MDtcblxuICBmbG9hdCBpbmRleCA9IHJhd0luZGV4IC0gZmxvb3IocmF3SW5kZXggL1xuICAg IChzZWdtZW50Q291bnQgKiA2LjApKSAqXG4gICAgKHNlZ21lbnRDb3VudCAqIDYuMCk7XG5c biAgZmxvYXQgc2VnbWVudCA9IGZsb29yKDAuMDAxICsgaW5kZXgvNi4wKTtcbiAgZmxvYXQg c2VnbWVudEluZGV4ID0gaW5kZXggLSAoc2VnbWVudCo2LjApO1xuXG4gIG5vcm1hbCA9IC1u b3JtYWxpemUoZCk7XG5cbiAgaWYgKHNlZ21lbnRJbmRleCA+IDIuOTkgJiYgc2VnbWVudElu ZGV4IDwgMy4wMSkge1xuICAgIHJldHVybiBtaXgodmVjMygwLjApLCAtZCwgY29uZU9mZnNl dCk7XG4gIH1cblxuICBmbG9hdCBuZXh0QW5nbGUgPSAoXG4gICAgKHNlZ21lbnRJbmRleCA+ IDAuOTkgJiYgIHNlZ21lbnRJbmRleCA8IDEuMDEpIHx8XG4gICAgKHNlZ21lbnRJbmRleCA+ IDQuOTkgJiYgIHNlZ21lbnRJbmRleCA8IDUuMDEpXG4gICkgPyAxLjAgOiAwLjA7XG4gIGZs b2F0IGFuZ2xlID0gMi4wICogMy4xNDE1OSAqICgoc2VnbWVudCArIG5leHRBbmdsZSkgLyBz ZWdtZW50Q291bnQpO1xuXG4gIHZlYzMgdjEgPSBtaXgoZCwgdmVjMygwLjApLCBjb25lT2Zm c2V0KTtcbiAgdmVjMyB2MiA9IHYxIC0gZDtcblxuICB2ZWMzIHUgPSBnZXRPcnRob2dvbmFs VmVjdG9yKGQpO1xuICB2ZWMzIHYgPSBub3JtYWxpemUoY3Jvc3ModSwgZCkpO1xuXG4gIHZl YzMgeCA9IHUgKiBjb3MoYW5nbGUpICogbGVuZ3RoKGQpKjAuMjU7XG4gIHZlYzMgeSA9IHYg KiBzaW4oYW5nbGUpICogbGVuZ3RoKGQpKjAuMjU7XG4gIHZlYzMgdjMgPSB2MiArIHggKyB5 O1xuICBpZiAoc2VnbWVudEluZGV4IDwgMy4wKSB7XG4gICAgdmVjMyB0eCA9IHUgKiBzaW4o YW5nbGUpO1xuICAgIHZlYzMgdHkgPSB2ICogLWNvcyhhbmdsZSk7XG4gICAgdmVjMyB0YW5n ZW50ID0gdHggKyB0eTtcbiAgICBub3JtYWwgPSBub3JtYWxpemUoY3Jvc3ModjMgLSB2MSwg dGFuZ2VudCkpO1xuICB9XG5cbiAgaWYgKHNlZ21lbnRJbmRleCA9PSAwLjApIHtcbiAgICBy ZXR1cm4gbWl4KGQsIHZlYzMoMC4wKSwgY29uZU9mZnNldCk7XG4gIH1cbiAgcmV0dXJuIHYz O1xufVxuXG5hdHRyaWJ1dGUgdmVjNCB2ZWN0b3I7XG5hdHRyaWJ1dGUgdmVjNCBwb3NpdGlv bjtcbmF0dHJpYnV0ZSB2ZWM0IGlkO1xuXG51bmlmb3JtIG1hdDQgbW9kZWwsIHZpZXcsIHBy b2plY3Rpb247XG51bmlmb3JtIGZsb2F0IHZlY3RvclNjYWxlLCBjb25lU2NhbGUsIGNvbmVP ZmZzZXQ7XG5cbnZhcnlpbmcgdmVjMyBmX3Bvc2l0aW9uO1xudmFyeWluZyB2ZWM0IGZfaWQ7 XG5cbnZvaWQgbWFpbigpIHtcbiAgdmVjMyBub3JtYWw7XG4gIHZlYzMgWFlaID0gZ2V0Q29u ZVBvc2l0aW9uKG1hdDMobW9kZWwpICogKCh2ZWN0b3JTY2FsZSAqIGNvbmVTY2FsZSkgKiB2 ZWN0b3IueHl6KSwgcG9zaXRpb24udywgY29uZU9mZnNldCwgbm9ybWFsKTtcbiAgdmVjNCBj b25lUG9zaXRpb24gPSBtb2RlbCAqIHZlYzQocG9zaXRpb24ueHl6LCAxLjApICsgdmVjNChY WVosIDAuMCk7XG4gIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbiAqIHZpZXcgKiBjb25lUG9z aXRpb247XG4gIGZfaWQgICAgICAgID0gaWQ7XG4gIGZfcG9zaXRpb24gID0gcG9zaXRpb24u eHl6O1xufVxuIl0pLHM9bihbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xT TElGWSAxXG5cbmJvb2wgb3V0T2ZSYW5nZShmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBwKSB7 XG4gIHJldHVybiAoKHAgPiBtYXgoYSwgYikpIHx8IFxuICAgICAgICAgIChwIDwgbWluKGEs IGIpKSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMyIGEsIHZlYzIgYiwgdmVjMiBwKSB7 XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91 dE9mUmFuZ2UoYS55LCBiLnksIHAueSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMyBh LCB2ZWMzIGIsIHZlYzMgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAu eCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpIHx8XG4gICAgICAg ICAgb3V0T2ZSYW5nZShhLnosIGIueiwgcC56KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2 ZWM0IGEsIHZlYzQgYiwgdmVjNCBwKSB7XG4gIHJldHVybiBvdXRPZlJhbmdlKGEueHl6LCBi Lnh5eiwgcC54eXopO1xufVxuXG51bmlmb3JtIHZlYzMgIGNsaXBCb3VuZHNbMl07XG51bmlm b3JtIGZsb2F0IHBpY2tJZDtcblxudmFyeWluZyB2ZWMzIGZfcG9zaXRpb247XG52YXJ5aW5n IHZlYzQgZl9pZDtcblxudm9pZCBtYWluKCkge1xuICBpZiAob3V0T2ZSYW5nZShjbGlwQm91 bmRzWzBdLCBjbGlwQm91bmRzWzFdLCBmX3Bvc2l0aW9uKSkgZGlzY2FyZDtcblxuICBnbF9G cmFnQ29sb3IgPSB2ZWM0KHBpY2tJZCwgZl9pZC54eXopO1xufSJdKTtyLm1lc2hTaGFkZXI9 e3ZlcnRleDppLGZyYWdtZW50OmEsYXR0cmlidXRlczpbe25hbWU6InBvc2l0aW9uIix0eXBl OiJ2ZWM0In0se25hbWU6ImNvbG9yIix0eXBlOiJ2ZWM0In0se25hbWU6InV2Iix0eXBlOiJ2 ZWMyIn0se25hbWU6InZlY3RvciIsdHlwZToidmVjMyJ9XX0sci5waWNrU2hhZGVyPXt2ZXJ0 ZXg6byxmcmFnbWVudDpzLGF0dHJpYnV0ZXM6W3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVj NCJ9LHtuYW1lOiJpZCIsdHlwZToidmVjNCJ9LHtuYW1lOiJ2ZWN0b3IiLHR5cGU6InZlYzMi fV19fSx7Z2xzbGlmeToyMzF9XSw4MjpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz17MDoi Tk9ORSIsMToiT05FIiwyOiJMSU5FX0xPT1AiLDM6IkxJTkVfU1RSSVAiLDQ6IlRSSUFOR0xF UyIsNToiVFJJQU5HTEVfU1RSSVAiLDY6IlRSSUFOR0xFX0ZBTiIsMjU2OiJERVBUSF9CVUZG RVJfQklUIiw1MTI6Ik5FVkVSIiw1MTM6IkxFU1MiLDUxNDoiRVFVQUwiLDUxNToiTEVRVUFM Iiw1MTY6IkdSRUFURVIiLDUxNzoiTk9URVFVQUwiLDUxODoiR0VRVUFMIiw1MTk6IkFMV0FZ UyIsNzY4OiJTUkNfQ09MT1IiLDc2OToiT05FX01JTlVTX1NSQ19DT0xPUiIsNzcwOiJTUkNf QUxQSEEiLDc3MToiT05FX01JTlVTX1NSQ19BTFBIQSIsNzcyOiJEU1RfQUxQSEEiLDc3Mzoi T05FX01JTlVTX0RTVF9BTFBIQSIsNzc0OiJEU1RfQ09MT1IiLDc3NToiT05FX01JTlVTX0RT VF9DT0xPUiIsNzc2OiJTUkNfQUxQSEFfU0FUVVJBVEUiLDEwMjQ6IlNURU5DSUxfQlVGRkVS X0JJVCIsMTAyODoiRlJPTlQiLDEwMjk6IkJBQ0siLDEwMzI6IkZST05UX0FORF9CQUNLIiwx MjgwOiJJTlZBTElEX0VOVU0iLDEyODE6IklOVkFMSURfVkFMVUUiLDEyODI6IklOVkFMSURf T1BFUkFUSU9OIiwxMjg1OiJPVVRfT0ZfTUVNT1JZIiwxMjg2OiJJTlZBTElEX0ZSQU1FQlVG RkVSX09QRVJBVElPTiIsMjMwNDoiQ1ciLDIzMDU6IkNDVyIsMjg0OToiTElORV9XSURUSCIs Mjg4NDoiQ1VMTF9GQUNFIiwyODg1OiJDVUxMX0ZBQ0VfTU9ERSIsMjg4NjoiRlJPTlRfRkFD RSIsMjkyODoiREVQVEhfUkFOR0UiLDI5Mjk6IkRFUFRIX1RFU1QiLDI5MzA6IkRFUFRIX1dS SVRFTUFTSyIsMjkzMToiREVQVEhfQ0xFQVJfVkFMVUUiLDI5MzI6IkRFUFRIX0ZVTkMiLDI5 NjA6IlNURU5DSUxfVEVTVCIsMjk2MToiU1RFTkNJTF9DTEVBUl9WQUxVRSIsMjk2MjoiU1RF TkNJTF9GVU5DIiwyOTYzOiJTVEVOQ0lMX1ZBTFVFX01BU0siLDI5NjQ6IlNURU5DSUxfRkFJ TCIsMjk2NToiU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwiLDI5NjY6IlNURU5DSUxfUEFTU19E RVBUSF9QQVNTIiwyOTY3OiJTVEVOQ0lMX1JFRiIsMjk2ODoiU1RFTkNJTF9XUklURU1BU0si LDI5Nzg6IlZJRVdQT1JUIiwzMDI0OiJESVRIRVIiLDMwNDI6IkJMRU5EIiwzMDg4OiJTQ0lT U09SX0JPWCIsMzA4OToiU0NJU1NPUl9URVNUIiwzMTA2OiJDT0xPUl9DTEVBUl9WQUxVRSIs MzEwNzoiQ09MT1JfV1JJVEVNQVNLIiwzMzE3OiJVTlBBQ0tfQUxJR05NRU5UIiwzMzMzOiJQ QUNLX0FMSUdOTUVOVCIsMzM3OToiTUFYX1RFWFRVUkVfU0laRSIsMzM4NjoiTUFYX1ZJRVdQ T1JUX0RJTVMiLDM0MDg6IlNVQlBJWEVMX0JJVFMiLDM0MTA6IlJFRF9CSVRTIiwzNDExOiJH UkVFTl9CSVRTIiwzNDEyOiJCTFVFX0JJVFMiLDM0MTM6IkFMUEhBX0JJVFMiLDM0MTQ6IkRF UFRIX0JJVFMiLDM0MTU6IlNURU5DSUxfQklUUyIsMzU1MzoiVEVYVFVSRV8yRCIsNDM1Mjoi RE9OVF9DQVJFIiw0MzUzOiJGQVNURVNUIiw0MzU0OiJOSUNFU1QiLDUxMjA6IkJZVEUiLDUx MjE6IlVOU0lHTkVEX0JZVEUiLDUxMjI6IlNIT1JUIiw1MTIzOiJVTlNJR05FRF9TSE9SVCIs NTEyNDoiSU5UIiw1MTI1OiJVTlNJR05FRF9JTlQiLDUxMjY6IkZMT0FUIiw1Mzg2OiJJTlZF UlQiLDU4OTA6IlRFWFRVUkUiLDY0MDE6IlNURU5DSUxfSU5ERVgiLDY0MDI6IkRFUFRIX0NP TVBPTkVOVCIsNjQwNjoiQUxQSEEiLDY0MDc6IlJHQiIsNjQwODoiUkdCQSIsNjQwOToiTFVN SU5BTkNFIiw2NDEwOiJMVU1JTkFOQ0VfQUxQSEEiLDc2ODA6IktFRVAiLDc2ODE6IlJFUExB Q0UiLDc2ODI6IklOQ1IiLDc2ODM6IkRFQ1IiLDc5MzY6IlZFTkRPUiIsNzkzNzoiUkVOREVS RVIiLDc5Mzg6IlZFUlNJT04iLDk3Mjg6Ik5FQVJFU1QiLDk3Mjk6IkxJTkVBUiIsOTk4NDoi TkVBUkVTVF9NSVBNQVBfTkVBUkVTVCIsOTk4NToiTElORUFSX01JUE1BUF9ORUFSRVNUIiw5 OTg2OiJORUFSRVNUX01JUE1BUF9MSU5FQVIiLDk5ODc6IkxJTkVBUl9NSVBNQVBfTElORUFS IiwxMDI0MDoiVEVYVFVSRV9NQUdfRklMVEVSIiwxMDI0MToiVEVYVFVSRV9NSU5fRklMVEVS IiwxMDI0MjoiVEVYVFVSRV9XUkFQX1MiLDEwMjQzOiJURVhUVVJFX1dSQVBfVCIsMTA0OTc6 IlJFUEVBVCIsMTA3NTI6IlBPTFlHT05fT0ZGU0VUX1VOSVRTIiwxNjM4NDoiQ09MT1JfQlVG RkVSX0JJVCIsMzI3Njk6IkNPTlNUQU5UX0NPTE9SIiwzMjc3MDoiT05FX01JTlVTX0NPTlNU QU5UX0NPTE9SIiwzMjc3MToiQ09OU1RBTlRfQUxQSEEiLDMyNzcyOiJPTkVfTUlOVVNfQ09O U1RBTlRfQUxQSEEiLDMyNzczOiJCTEVORF9DT0xPUiIsMzI3NzQ6IkZVTkNfQUREIiwzMjc3 NzoiQkxFTkRfRVFVQVRJT05fUkdCIiwzMjc3ODoiRlVOQ19TVUJUUkFDVCIsMzI3Nzk6IkZV TkNfUkVWRVJTRV9TVUJUUkFDVCIsMzI4MTk6IlVOU0lHTkVEX1NIT1JUXzRfNF80XzQiLDMy ODIwOiJVTlNJR05FRF9TSE9SVF81XzVfNV8xIiwzMjgyMzoiUE9MWUdPTl9PRkZTRVRfRklM TCIsMzI4MjQ6IlBPTFlHT05fT0ZGU0VUX0ZBQ1RPUiIsMzI4NTQ6IlJHQkE0IiwzMjg1NToi UkdCNV9BMSIsMzI4NzM6IlRFWFRVUkVfQklORElOR18yRCIsMzI5MjY6IlNBTVBMRV9BTFBI QV9UT19DT1ZFUkFHRSIsMzI5Mjg6IlNBTVBMRV9DT1ZFUkFHRSIsMzI5MzY6IlNBTVBMRV9C VUZGRVJTIiwzMjkzNzoiU0FNUExFUyIsMzI5Mzg6IlNBTVBMRV9DT1ZFUkFHRV9WQUxVRSIs MzI5Mzk6IlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlQiLDMyOTY4OiJCTEVORF9EU1RfUkdCIiwz Mjk2OToiQkxFTkRfU1JDX1JHQiIsMzI5NzA6IkJMRU5EX0RTVF9BTFBIQSIsMzI5NzE6IkJM RU5EX1NSQ19BTFBIQSIsMzMwNzE6IkNMQU1QX1RPX0VER0UiLDMzMTcwOiJHRU5FUkFURV9N SVBNQVBfSElOVCIsMzMxODk6IkRFUFRIX0NPTVBPTkVOVDE2IiwzMzMwNjoiREVQVEhfU1RF TkNJTF9BVFRBQ0hNRU5UIiwzMzYzNToiVU5TSUdORURfU0hPUlRfNV82XzUiLDMzNjQ4OiJN SVJST1JFRF9SRVBFQVQiLDMzOTAxOiJBTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UiLDMzOTAy OiJBTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UiLDMzOTg0OiJURVhUVVJFMCIsMzM5ODU6IlRF WFRVUkUxIiwzMzk4NjoiVEVYVFVSRTIiLDMzOTg3OiJURVhUVVJFMyIsMzM5ODg6IlRFWFRV UkU0IiwzMzk4OToiVEVYVFVSRTUiLDMzOTkwOiJURVhUVVJFNiIsMzM5OTE6IlRFWFRVUkU3 IiwzMzk5MjoiVEVYVFVSRTgiLDMzOTkzOiJURVhUVVJFOSIsMzM5OTQ6IlRFWFRVUkUxMCIs MzM5OTU6IlRFWFRVUkUxMSIsMzM5OTY6IlRFWFRVUkUxMiIsMzM5OTc6IlRFWFRVUkUxMyIs MzM5OTg6IlRFWFRVUkUxNCIsMzM5OTk6IlRFWFRVUkUxNSIsMzRlMzoiVEVYVFVSRTE2Iiwz NDAwMToiVEVYVFVSRTE3IiwzNDAwMjoiVEVYVFVSRTE4IiwzNDAwMzoiVEVYVFVSRTE5Iiwz NDAwNDoiVEVYVFVSRTIwIiwzNDAwNToiVEVYVFVSRTIxIiwzNDAwNjoiVEVYVFVSRTIyIiwz NDAwNzoiVEVYVFVSRTIzIiwzNDAwODoiVEVYVFVSRTI0IiwzNDAwOToiVEVYVFVSRTI1Iiwz NDAxMDoiVEVYVFVSRTI2IiwzNDAxMToiVEVYVFVSRTI3IiwzNDAxMjoiVEVYVFVSRTI4Iiwz NDAxMzoiVEVYVFVSRTI5IiwzNDAxNDoiVEVYVFVSRTMwIiwzNDAxNToiVEVYVFVSRTMxIiwz NDAxNjoiQUNUSVZFX1RFWFRVUkUiLDM0MDI0OiJNQVhfUkVOREVSQlVGRkVSX1NJWkUiLDM0 MDQxOiJERVBUSF9TVEVOQ0lMIiwzNDA1NToiSU5DUl9XUkFQIiwzNDA1NjoiREVDUl9XUkFQ IiwzNDA2NzoiVEVYVFVSRV9DVUJFX01BUCIsMzQwNjg6IlRFWFRVUkVfQklORElOR19DVUJF X01BUCIsMzQwNjk6IlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCIsMzQwNzA6IlRFWFRV UkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCIsMzQwNzE6IlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJ VkVfWSIsMzQwNzI6IlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSIsMzQwNzM6IlRFWFRV UkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiIsMzQwNzQ6IlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJ VkVfWiIsMzQwNzY6Ik1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUiLDM0MzM4OiJWRVJURVhf QVRUUklCX0FSUkFZX0VOQUJMRUQiLDM0MzM5OiJWRVJURVhfQVRUUklCX0FSUkFZX1NJWkUi LDM0MzQwOiJWRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSIsMzQzNDE6IlZFUlRFWF9BVFRS SUJfQVJSQVlfVFlQRSIsMzQzNDI6IkNVUlJFTlRfVkVSVEVYX0FUVFJJQiIsMzQzNzM6IlZF UlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUiIsMzQ0NjY6Ik5VTV9DT01QUkVTU0VEX1RFWFRV UkVfRk9STUFUUyIsMzQ0Njc6IkNPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTIiwzNDY2MDoi QlVGRkVSX1NJWkUiLDM0NjYxOiJCVUZGRVJfVVNBR0UiLDM0ODE2OiJTVEVOQ0lMX0JBQ0tf RlVOQyIsMzQ4MTc6IlNURU5DSUxfQkFDS19GQUlMIiwzNDgxODoiU1RFTkNJTF9CQUNLX1BB U1NfREVQVEhfRkFJTCIsMzQ4MTk6IlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MiLDM0 ODc3OiJCTEVORF9FUVVBVElPTl9BTFBIQSIsMzQ5MjE6Ik1BWF9WRVJURVhfQVRUUklCUyIs MzQ5MjI6IlZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRCIsMzQ5MzA6Ik1BWF9URVhU VVJFX0lNQUdFX1VOSVRTIiwzNDk2MjoiQVJSQVlfQlVGRkVSIiwzNDk2MzoiRUxFTUVOVF9B UlJBWV9CVUZGRVIiLDM0OTY0OiJBUlJBWV9CVUZGRVJfQklORElORyIsMzQ5NjU6IkVMRU1F TlRfQVJSQVlfQlVGRkVSX0JJTkRJTkciLDM0OTc1OiJWRVJURVhfQVRUUklCX0FSUkFZX0JV RkZFUl9CSU5ESU5HIiwzNTA0MDoiU1RSRUFNX0RSQVciLDM1MDQ0OiJTVEFUSUNfRFJBVyIs MzUwNDg6IkRZTkFNSUNfRFJBVyIsMzU2MzI6IkZSQUdNRU5UX1NIQURFUiIsMzU2MzM6IlZF UlRFWF9TSEFERVIiLDM1NjYwOiJNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMiLDM1 NjYxOiJNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUyIsMzU2NjM6IlNIQURFUl9U WVBFIiwzNTY2NDoiRkxPQVRfVkVDMiIsMzU2NjU6IkZMT0FUX1ZFQzMiLDM1NjY2OiJGTE9B VF9WRUM0IiwzNTY2NzoiSU5UX1ZFQzIiLDM1NjY4OiJJTlRfVkVDMyIsMzU2Njk6IklOVF9W RUM0IiwzNTY3MDoiQk9PTCIsMzU2NzE6IkJPT0xfVkVDMiIsMzU2NzI6IkJPT0xfVkVDMyIs MzU2NzM6IkJPT0xfVkVDNCIsMzU2NzQ6IkZMT0FUX01BVDIiLDM1Njc1OiJGTE9BVF9NQVQz IiwzNTY3NjoiRkxPQVRfTUFUNCIsMzU2Nzg6IlNBTVBMRVJfMkQiLDM1NjgwOiJTQU1QTEVS X0NVQkUiLDM1NzEyOiJERUxFVEVfU1RBVFVTIiwzNTcxMzoiQ09NUElMRV9TVEFUVVMiLDM1 NzE0OiJMSU5LX1NUQVRVUyIsMzU3MTU6IlZBTElEQVRFX1NUQVRVUyIsMzU3MTY6IklORk9f TE9HX0xFTkdUSCIsMzU3MTc6IkFUVEFDSEVEX1NIQURFUlMiLDM1NzE4OiJBQ1RJVkVfVU5J Rk9STVMiLDM1NzE5OiJBQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIIiwzNTcyMDoiU0hBREVS X1NPVVJDRV9MRU5HVEgiLDM1NzIxOiJBQ1RJVkVfQVRUUklCVVRFUyIsMzU3MjI6IkFDVElW RV9BVFRSSUJVVEVfTUFYX0xFTkdUSCIsMzU3MjQ6IlNIQURJTkdfTEFOR1VBR0VfVkVSU0lP TiIsMzU3MjU6IkNVUlJFTlRfUFJPR1JBTSIsMzYwMDM6IlNURU5DSUxfQkFDS19SRUYiLDM2 MDA0OiJTVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSyIsMzYwMDU6IlNURU5DSUxfQkFDS19XUklU RU1BU0siLDM2MDA2OiJGUkFNRUJVRkZFUl9CSU5ESU5HIiwzNjAwNzoiUkVOREVSQlVGRkVS X0JJTkRJTkciLDM2MDQ4OiJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFIiwz NjA0OToiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSIsMzYwNTA6IkZSQU1F QlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTCIsMzYwNTE6IkZSQU1FQlVGRkVSX0FU VEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFIiwzNjA1MzoiRlJBTUVCVUZGRVJfQ09N UExFVEUiLDM2MDU0OiJGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQiLDM2MDU1 OiJGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVCIsMzYwNTc6IkZS QU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUyIsMzYwNjE6IkZSQU1FQlVGRkVSX1VO U1VQUE9SVEVEIiwzNjA2NDoiQ09MT1JfQVRUQUNITUVOVDAiLDM2MDk2OiJERVBUSF9BVFRB Q0hNRU5UIiwzNjEyODoiU1RFTkNJTF9BVFRBQ0hNRU5UIiwzNjE2MDoiRlJBTUVCVUZGRVIi LDM2MTYxOiJSRU5ERVJCVUZGRVIiLDM2MTYyOiJSRU5ERVJCVUZGRVJfV0lEVEgiLDM2MTYz OiJSRU5ERVJCVUZGRVJfSEVJR0hUIiwzNjE2NDoiUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZP Uk1BVCIsMzYxNjg6IlNURU5DSUxfSU5ERVg4IiwzNjE3NjoiUkVOREVSQlVGRkVSX1JFRF9T SVpFIiwzNjE3NzoiUkVOREVSQlVGRkVSX0dSRUVOX1NJWkUiLDM2MTc4OiJSRU5ERVJCVUZG RVJfQkxVRV9TSVpFIiwzNjE3OToiUkVOREVSQlVGRkVSX0FMUEhBX1NJWkUiLDM2MTgwOiJS RU5ERVJCVUZGRVJfREVQVEhfU0laRSIsMzYxODE6IlJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJ WkUiLDM2MTk0OiJSR0I1NjUiLDM2MzM2OiJMT1dfRkxPQVQiLDM2MzM3OiJNRURJVU1fRkxP QVQiLDM2MzM4OiJISUdIX0ZMT0FUIiwzNjMzOToiTE9XX0lOVCIsMzYzNDA6Ik1FRElVTV9J TlQiLDM2MzQxOiJISUdIX0lOVCIsMzYzNDY6IlNIQURFUl9DT01QSUxFUiIsMzYzNDc6Ik1B WF9WRVJURVhfVU5JRk9STV9WRUNUT1JTIiwzNjM0ODoiTUFYX1ZBUllJTkdfVkVDVE9SUyIs MzYzNDk6Ik1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMiLDM3NDQwOiJVTlBBQ0tfRkxJ UF9ZX1dFQkdMIiwzNzQ0MToiVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMIiwzNzQ0 MjoiQ09OVEVYVF9MT1NUX1dFQkdMIiwzNzQ0MzoiVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVS U0lPTl9XRUJHTCIsMzc0NDQ6IkJST1dTRVJfREVGQVVMVF9XRUJHTCJ9fSx7fV0sODM6W2Z1 bmN0aW9uKHQsZSxyKXt2YXIgbj10KCIuLzEuMC9udW1iZXJzIik7ZS5leHBvcnRzPWZ1bmN0 aW9uKHQpe3JldHVybiBuW3RdfX0seyIuLzEuMC9udW1iZXJzIjo4Mn1dLDg0OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10Lmds LHI9bihlKSxvPWkoZSxbe2J1ZmZlcjpyLHR5cGU6ZS5GTE9BVCxzaXplOjMsb2Zmc2V0OjAs c3RyaWRlOjQwfSx7YnVmZmVyOnIsdHlwZTplLkZMT0FULHNpemU6NCxvZmZzZXQ6MTIsc3Ry aWRlOjQwfSx7YnVmZmVyOnIsdHlwZTplLkZMT0FULHNpemU6MyxvZmZzZXQ6Mjgsc3RyaWRl OjQwfV0pLGw9YShlKTtsLmF0dHJpYnV0ZXMucG9zaXRpb24ubG9jYXRpb249MCxsLmF0dHJp YnV0ZXMuY29sb3IubG9jYXRpb249MSxsLmF0dHJpYnV0ZXMub2Zmc2V0LmxvY2F0aW9uPTI7 dmFyIGM9bmV3IHMoZSxyLG8sbCk7cmV0dXJuIGMudXBkYXRlKHQpLGN9O3ZhciBuPXQoImds LWJ1ZmZlciIpLGk9dCgiZ2wtdmFvIiksYT10KCIuL3NoYWRlcnMvaW5kZXgiKSxvPVsxLDAs MCwwLDAsMSwwLDAsMCwwLDEsMCwwLDAsMCwxXTtmdW5jdGlvbiBzKHQsZSxyLG4pe3RoaXMu Z2w9dCx0aGlzLnNoYWRlcj1uLHRoaXMuYnVmZmVyPWUsdGhpcy52YW89cix0aGlzLnBpeGVs UmF0aW89MSx0aGlzLmJvdW5kcz1bWzEvMCwxLzAsMS8wXSxbLTEvMCwtMS8wLC0xLzBdXSx0 aGlzLmNsaXBCb3VuZHM9W1stMS8wLC0xLzAsLTEvMF0sWzEvMCwxLzAsMS8wXV0sdGhpcy5s aW5lV2lkdGg9WzEsMSwxXSx0aGlzLmNhcFNpemU9WzEwLDEwLDEwXSx0aGlzLmxpbmVDb3Vu dD1bMCwwLDBdLHRoaXMubGluZU9mZnNldD1bMCwwLDBdLHRoaXMub3BhY2l0eT0xLHRoaXMu aGFzQWxwaGE9ITF9dmFyIGw9cy5wcm90b3R5cGU7ZnVuY3Rpb24gYyh0LGUpe2Zvcih2YXIg cj0wO3I8MzsrK3IpdFswXVtyXT1NYXRoLm1pbih0WzBdW3JdLGVbcl0pLHRbMV1bcl09TWF0 aC5tYXgodFsxXVtyXSxlW3JdKX1sLmlzT3BhcXVlPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMu aGFzQWxwaGF9LGwuaXNUcmFuc3BhcmVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc0Fs cGhhfSxsLmRyYXdUcmFuc3BhcmVudD1sLmRyYXc9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5n bCxyPXRoaXMuc2hhZGVyLnVuaWZvcm1zO3RoaXMuc2hhZGVyLmJpbmQoKTt2YXIgbj1yLnZp ZXc9dC52aWV3fHxvLGk9ci5wcm9qZWN0aW9uPXQucHJvamVjdGlvbnx8bztyLm1vZGVsPXQu bW9kZWx8fG8sci5jbGlwQm91bmRzPXRoaXMuY2xpcEJvdW5kcyxyLm9wYWNpdHk9dGhpcy5v cGFjaXR5O3ZhciBhPW5bMTJdLHM9blsxM10sbD1uWzE0XSxjPW5bMTVdLHU9KHQuX29ydGhv fHwhMT8yOjEpKnRoaXMucGl4ZWxSYXRpbyooaVszXSphK2lbN10qcytpWzExXSpsK2lbMTVd KmMpL2UuZHJhd2luZ0J1ZmZlckhlaWdodDt0aGlzLnZhby5iaW5kKCk7Zm9yKHZhciBmPTA7 ZjwzOysrZillLmxpbmVXaWR0aCh0aGlzLmxpbmVXaWR0aFtmXSp0aGlzLnBpeGVsUmF0aW8p LHIuY2FwU2l6ZT10aGlzLmNhcFNpemVbZl0qdSx0aGlzLmxpbmVDb3VudFtmXSYmZS5kcmF3 QXJyYXlzKGUuTElORVMsdGhpcy5saW5lT2Zmc2V0W2ZdLHRoaXMubGluZUNvdW50W2ZdKTt0 aGlzLnZhby51bmJpbmQoKX07dmFyIHU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9bmV3IEFycmF5 KDMpLGU9MDtlPDM7KytlKXtmb3IodmFyIHI9W10sbj0xO248PTI7KytuKWZvcih2YXIgaT0t MTtpPD0xO2krPTIpe3ZhciBhPVswLDAsMF07YVsobitlKSUzXT1pLHIucHVzaChhKX10W2Vd PXJ9cmV0dXJuIHR9KCk7ZnVuY3Rpb24gZih0LGUscixuKXtmb3IodmFyIGk9dVtuXSxhPTA7 YTxpLmxlbmd0aDsrK2Epe3ZhciBvPWlbYV07dC5wdXNoKGVbMF0sZVsxXSxlWzJdLHJbMF0s clsxXSxyWzJdLHJbM10sb1swXSxvWzFdLG9bMl0pfXJldHVybiBpLmxlbmd0aH1sLnVwZGF0 ZT1mdW5jdGlvbih0KXsibGluZVdpZHRoImluKHQ9dHx8e30pJiYodGhpcy5saW5lV2lkdGg9 dC5saW5lV2lkdGgsQXJyYXkuaXNBcnJheSh0aGlzLmxpbmVXaWR0aCl8fCh0aGlzLmxpbmVX aWR0aD1bdGhpcy5saW5lV2lkdGgsdGhpcy5saW5lV2lkdGgsdGhpcy5saW5lV2lkdGhdKSks ImNhcFNpemUiaW4gdCYmKHRoaXMuY2FwU2l6ZT10LmNhcFNpemUsQXJyYXkuaXNBcnJheSh0 aGlzLmNhcFNpemUpfHwodGhpcy5jYXBTaXplPVt0aGlzLmNhcFNpemUsdGhpcy5jYXBTaXpl LHRoaXMuY2FwU2l6ZV0pKSx0aGlzLmhhc0FscGhhPSExLCJvcGFjaXR5ImluIHQmJih0aGlz Lm9wYWNpdHk9K3Qub3BhY2l0eSx0aGlzLm9wYWNpdHk8MSYmKHRoaXMuaGFzQWxwaGE9ITAp KTt2YXIgZT10LmNvbG9yfHxbWzAsMCwwXSxbMCwwLDBdLFswLDAsMF1dLHI9dC5wb3NpdGlv bixuPXQuZXJyb3I7aWYoQXJyYXkuaXNBcnJheShlWzBdKXx8KGU9W2UsZSxlXSksciYmbil7 dmFyIGk9W10sYT1yLmxlbmd0aCxvPTA7dGhpcy5ib3VuZHM9W1sxLzAsMS8wLDEvMF0sWy0x LzAsLTEvMCwtMS8wXV0sdGhpcy5saW5lQ291bnQ9WzAsMCwwXTtmb3IodmFyIHM9MDtzPDM7 KytzKXt0aGlzLmxpbmVPZmZzZXRbc109bzt0OmZvcih2YXIgbD0wO2w8YTsrK2wpe2Zvcih2 YXIgdT1yW2xdLGg9MDtoPDM7KytoKWlmKGlzTmFOKHVbaF0pfHwhaXNGaW5pdGUodVtoXSkp Y29udGludWUgdDt2YXIgcD1uW2xdLGQ9ZVtzXTtpZihBcnJheS5pc0FycmF5KGRbMF0pJiYo ZD1lW2xdKSwzPT09ZC5sZW5ndGg/ZD1bZFswXSxkWzFdLGRbMl0sMV06ND09PWQubGVuZ3Ro JiYoZD1bZFswXSxkWzFdLGRbMl0sZFszXV0sIXRoaXMuaGFzQWxwaGEmJmRbM108MSYmKHRo aXMuaGFzQWxwaGE9ITApKSwhaXNOYU4ocFswXVtzXSkmJiFpc05hTihwWzFdW3NdKSl7dmFy IG07aWYocFswXVtzXTwwKShtPXUuc2xpY2UoKSlbc10rPXBbMF1bc10saS5wdXNoKHVbMF0s dVsxXSx1WzJdLGRbMF0sZFsxXSxkWzJdLGRbM10sMCwwLDAsbVswXSxtWzFdLG1bMl0sZFsw XSxkWzFdLGRbMl0sZFszXSwwLDAsMCksYyh0aGlzLmJvdW5kcyxtKSxvKz0yK2YoaSxtLGQs cyk7aWYocFsxXVtzXT4wKShtPXUuc2xpY2UoKSlbc10rPXBbMV1bc10saS5wdXNoKHVbMF0s dVsxXSx1WzJdLGRbMF0sZFsxXSxkWzJdLGRbM10sMCwwLDAsbVswXSxtWzFdLG1bMl0sZFsw XSxkWzFdLGRbMl0sZFszXSwwLDAsMCksYyh0aGlzLmJvdW5kcyxtKSxvKz0yK2YoaSxtLGQs cyl9fXRoaXMubGluZUNvdW50W3NdPW8tdGhpcy5saW5lT2Zmc2V0W3NdfXRoaXMuYnVmZmVy LnVwZGF0ZShpKX19LGwuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuc2hhZGVyLmRpc3Bvc2Uo KSx0aGlzLmJ1ZmZlci5kaXNwb3NlKCksdGhpcy52YW8uZGlzcG9zZSgpfX0seyIuL3NoYWRl cnMvaW5kZXgiOjg1LCJnbC1idWZmZXIiOjc4LCJnbC12YW8iOjE1MH1dLDg1OltmdW5jdGlv bih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImdsc2xpZnkiKSxpPXQoImdsLXNoYWRl ciIpLGE9bihbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5c bmF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uLCBvZmZzZXQ7XG5hdHRyaWJ1dGUgdmVjNCBjb2xv cjtcbnVuaWZvcm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlvbjtcbnVuaWZvcm0gZmxv YXQgY2FwU2l6ZTtcbnZhcnlpbmcgdmVjNCBmcmFnQ29sb3I7XG52YXJ5aW5nIHZlYzMgZnJh Z1Bvc2l0aW9uO1xuXG52b2lkIG1haW4oKSB7XG4gIHZlYzQgd29ybGRQb3NpdGlvbiAgPSBt b2RlbCAqIHZlYzQocG9zaXRpb24sIDEuMCk7XG4gIHdvcmxkUG9zaXRpb24gICAgICAgPSAo d29ybGRQb3NpdGlvbiAvIHdvcmxkUG9zaXRpb24udykgKyB2ZWM0KGNhcFNpemUgKiBvZmZz ZXQsIDAuMCk7XG4gIGdsX1Bvc2l0aW9uICAgICAgICAgPSBwcm9qZWN0aW9uICogdmlldyAq IHdvcmxkUG9zaXRpb247XG4gIGZyYWdDb2xvciAgICAgICAgICAgPSBjb2xvcjtcbiAgZnJh Z1Bvc2l0aW9uICAgICAgICA9IHBvc2l0aW9uO1xufSJdKSxvPW4oWyJwcmVjaXNpb24gaGln aHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5ib29sIG91dE9mUmFuZ2UoZmxvYXQg YSwgZmxvYXQgYiwgZmxvYXQgcCkge1xuICByZXR1cm4gKChwID4gbWF4KGEsIGIpKSB8fCBc biAgICAgICAgICAocCA8IG1pbihhLCBiKSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVj MiBhLCB2ZWMyIGIsIHZlYzIgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngs IHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpKTtcbn1cblxu Ym9vbCBvdXRPZlJhbmdlKHZlYzMgYSwgdmVjMyBiLCB2ZWMzIHApIHtcbiAgcmV0dXJuIChv dXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnks IGIueSwgcC55KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS56LCBiLnosIHAueikpO1xu fVxuXG5ib29sIG91dE9mUmFuZ2UodmVjNCBhLCB2ZWM0IGIsIHZlYzQgcCkge1xuICByZXR1 cm4gb3V0T2ZSYW5nZShhLnh5eiwgYi54eXosIHAueHl6KTtcbn1cblxudW5pZm9ybSB2ZWMz IGNsaXBCb3VuZHNbMl07XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG52YXJ5aW5nIHZlYzMg ZnJhZ1Bvc2l0aW9uO1xudmFyeWluZyB2ZWM0IGZyYWdDb2xvcjtcblxudm9pZCBtYWluKCkg e1xuICBpZiAoXG4gICAgb3V0T2ZSYW5nZShjbGlwQm91bmRzWzBdLCBjbGlwQm91bmRzWzFd LCBmcmFnUG9zaXRpb24pIHx8XG4gICAgZnJhZ0NvbG9yLmEgKiBvcGFjaXR5ID09IDAuXG4g ICkgZGlzY2FyZDtcblxuICBnbF9GcmFnQ29sb3IgPSBvcGFjaXR5ICogZnJhZ0NvbG9yO1xu fSJdKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGkodCxhLG8sbnVsbCxbe25hbWU6 InBvc2l0aW9uIix0eXBlOiJ2ZWMzIn0se25hbWU6ImNvbG9yIix0eXBlOiJ2ZWM0In0se25h bWU6Im9mZnNldCIsdHlwZToidmVjMyJ9XSl9fSx7ImdsLXNoYWRlciI6MTMyLGdsc2xpZnk6 MjMxfV0sODY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZ2wtdGV4 dHVyZTJkIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe2l8fChpPXQuRlJBTUVCVUZG RVJfVU5TVVBQT1JURUQsYT10LkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVCxv PXQuRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TLHM9dC5GUkFNRUJVRkZFUl9J TkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVCk7dmFyIGM9dC5nZXRFeHRlbnNpb24oIldF QkdMX2RyYXdfYnVmZmVycyIpOyFsJiZjJiZmdW5jdGlvbih0LGUpe3ZhciByPXQuZ2V0UGFy YW1ldGVyKGUuTUFYX0NPTE9SX0FUVEFDSE1FTlRTX1dFQkdMKTtsPW5ldyBBcnJheShyKzEp O2Zvcih2YXIgbj0wO248PXI7KytuKXtmb3IodmFyIGk9bmV3IEFycmF5KHIpLGE9MDthPG47 KythKWlbYV09dC5DT0xPUl9BVFRBQ0hNRU5UMCthO2ZvcihhPW47YTxyOysrYSlpW2FdPXQu Tk9ORTtsW25dPWl9fSh0LGMpO0FycmF5LmlzQXJyYXkoZSkmJihuPXIscj0wfGVbMV0sZT0w fGVbMF0pO2lmKCJudW1iZXIiIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImdsLWZibzog TWlzc2luZyBzaGFwZSBwYXJhbWV0ZXIiKTt2YXIgdT10LmdldFBhcmFtZXRlcih0Lk1BWF9S RU5ERVJCVUZGRVJfU0laRSk7aWYoZTwwfHxlPnV8fHI8MHx8cj51KXRocm93IG5ldyBFcnJv cigiZ2wtZmJvOiBQYXJhbWV0ZXJzIGFyZSB0b28gbGFyZ2UgZm9yIEZCTyIpO3ZhciBmPTE7 aWYoImNvbG9yImluKG49bnx8e30pKXtpZigoZj1NYXRoLm1heCgwfG4uY29sb3IsMCkpPDAp dGhyb3cgbmV3IEVycm9yKCJnbC1mYm86IE11c3Qgc3BlY2lmeSBhIG5vbm5lZ2F0aXZlIG51 bWJlciBvZiBjb2xvcnMiKTtpZihmPjEpe2lmKCFjKXRocm93IG5ldyBFcnJvcigiZ2wtZmJv OiBNdWx0aXBsZSBkcmF3IGJ1ZmZlciBleHRlbnNpb24gbm90IHN1cHBvcnRlZCIpO2lmKGY+ dC5nZXRQYXJhbWV0ZXIoYy5NQVhfQ09MT1JfQVRUQUNITUVOVFNfV0VCR0wpKXRocm93IG5l dyBFcnJvcigiZ2wtZmJvOiBDb250ZXh0IGRvZXMgbm90IHN1cHBvcnQgIitmKyIgZHJhdyBi dWZmZXJzIil9fXZhciBoPXQuVU5TSUdORURfQllURSxwPXQuZ2V0RXh0ZW5zaW9uKCJPRVNf dGV4dHVyZV9mbG9hdCIpO2lmKG4uZmxvYXQmJmY+MCl7aWYoIXApdGhyb3cgbmV3IEVycm9y KCJnbC1mYm86IENvbnRleHQgZG9lcyBub3Qgc3VwcG9ydCBmbG9hdGluZyBwb2ludCB0ZXh0 dXJlcyIpO2g9dC5GTE9BVH1lbHNlIG4ucHJlZmVyRmxvYXQmJmY+MCYmcCYmKGg9dC5GTE9B VCk7dmFyIG09ITA7ImRlcHRoImluIG4mJihtPSEhbi5kZXB0aCk7dmFyIGc9ITE7InN0ZW5j aWwiaW4gbiYmKGc9ISFuLnN0ZW5jaWwpO3JldHVybiBuZXcgZCh0LGUscixoLGYsbSxnLGMp fTt2YXIgaSxhLG8scyxsPW51bGw7ZnVuY3Rpb24gYyh0KXtyZXR1cm5bdC5nZXRQYXJhbWV0 ZXIodC5GUkFNRUJVRkZFUl9CSU5ESU5HKSx0LmdldFBhcmFtZXRlcih0LlJFTkRFUkJVRkZF Ul9CSU5ESU5HKSx0LmdldFBhcmFtZXRlcih0LlRFWFRVUkVfQklORElOR18yRCldfWZ1bmN0 aW9uIHUodCxlKXt0LmJpbmRGcmFtZWJ1ZmZlcih0LkZSQU1FQlVGRkVSLGVbMF0pLHQuYmlu ZFJlbmRlcmJ1ZmZlcih0LlJFTkRFUkJVRkZFUixlWzFdKSx0LmJpbmRUZXh0dXJlKHQuVEVY VFVSRV8yRCxlWzJdKX1mdW5jdGlvbiBmKHQpe3N3aXRjaCh0KXtjYXNlIGk6dGhyb3cgbmV3 IEVycm9yKCJnbC1mYm86IEZyYW1lYnVmZmVyIHVuc3VwcG9ydGVkIik7Y2FzZSBhOnRocm93 IG5ldyBFcnJvcigiZ2wtZmJvOiBGcmFtZWJ1ZmZlciBpbmNvbXBsZXRlIGF0dGFjaG1lbnQi KTtjYXNlIG86dGhyb3cgbmV3IEVycm9yKCJnbC1mYm86IEZyYW1lYnVmZmVyIGluY29tcGxl dGUgZGltZW5zaW9ucyIpO2Nhc2Ugczp0aHJvdyBuZXcgRXJyb3IoImdsLWZibzogRnJhbWVi dWZmZXIgaW5jb21wbGV0ZSBtaXNzaW5nIGF0dGFjaG1lbnQiKTtkZWZhdWx0OnRocm93IG5l dyBFcnJvcigiZ2wtZmJvOiBGcmFtZWJ1ZmZlciBmYWlsZWQgZm9yIHVuc3BlY2lmaWVkIHJl YXNvbiIpfX1mdW5jdGlvbiBoKHQsZSxyLGksYSxvKXtpZighaSlyZXR1cm4gbnVsbDt2YXIg cz1uKHQsZSxyLGEsaSk7cmV0dXJuIHMubWFnRmlsdGVyPXQuTkVBUkVTVCxzLm1pbkZpbHRl cj10Lk5FQVJFU1Qscy5taXBTYW1wbGVzPTEscy5iaW5kKCksdC5mcmFtZWJ1ZmZlclRleHR1 cmUyRCh0LkZSQU1FQlVGRkVSLG8sdC5URVhUVVJFXzJELHMuaGFuZGxlLDApLHN9ZnVuY3Rp b24gcCh0LGUscixuLGkpe3ZhciBhPXQuY3JlYXRlUmVuZGVyYnVmZmVyKCk7cmV0dXJuIHQu YmluZFJlbmRlcmJ1ZmZlcih0LlJFTkRFUkJVRkZFUixhKSx0LnJlbmRlcmJ1ZmZlclN0b3Jh Z2UodC5SRU5ERVJCVUZGRVIsbixlLHIpLHQuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodC5G UkFNRUJVRkZFUixpLHQuUkVOREVSQlVGRkVSLGEpLGF9ZnVuY3Rpb24gZCh0LGUscixuLGks YSxvLHMpe3RoaXMuZ2w9dCx0aGlzLl9zaGFwZT1bMHxlLDB8cl0sdGhpcy5fZGVzdHJveWVk PSExLHRoaXMuX2V4dD1zLHRoaXMuY29sb3I9bmV3IEFycmF5KGkpO2Zvcih2YXIgZD0wO2Q8 aTsrK2QpdGhpcy5jb2xvcltkXT1udWxsO3RoaXMuX2NvbG9yX3JiPW51bGwsdGhpcy5kZXB0 aD1udWxsLHRoaXMuX2RlcHRoX3JiPW51bGwsdGhpcy5fY29sb3JUeXBlPW4sdGhpcy5fdXNl RGVwdGg9YSx0aGlzLl91c2VTdGVuY2lsPW87dmFyIG09dGhpcyxnPVswfGUsMHxyXTtPYmpl Y3QuZGVmaW5lUHJvcGVydGllcyhnLHswOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbS5fc2hh cGVbMF19LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gbS53aWR0aD10fX0sMTp7Z2V0OmZ1bmN0 aW9uKCl7cmV0dXJuIG0uX3NoYXBlWzFdfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG0uaGVp Z2h0PXR9fX0pLHRoaXMuX3NoYXBlVmVjdG9yPWcsZnVuY3Rpb24odCl7dmFyIGU9Yyh0Lmds KSxyPXQuZ2wsbj10LmhhbmRsZT1yLmNyZWF0ZUZyYW1lYnVmZmVyKCksaT10Ll9zaGFwZVsw XSxhPXQuX3NoYXBlWzFdLG89dC5jb2xvci5sZW5ndGgscz10Ll9leHQsZD10Ll91c2VTdGVu Y2lsLG09dC5fdXNlRGVwdGgsZz10Ll9jb2xvclR5cGU7ci5iaW5kRnJhbWVidWZmZXIoci5G UkFNRUJVRkZFUixuKTtmb3IodmFyIHY9MDt2PG87Kyt2KXQuY29sb3Jbdl09aChyLGksYSxn LHIuUkdCQSxyLkNPTE9SX0FUVEFDSE1FTlQwK3YpOzA9PT1vPyh0Ll9jb2xvcl9yYj1wKHIs aSxhLHIuUkdCQTQsci5DT0xPUl9BVFRBQ0hNRU5UMCkscyYmcy5kcmF3QnVmZmVyc1dFQkdM KGxbMF0pKTpvPjEmJnMuZHJhd0J1ZmZlcnNXRUJHTChsW29dKTt2YXIgeT1yLmdldEV4dGVu c2lvbigiV0VCR0xfZGVwdGhfdGV4dHVyZSIpO3k/ZD90LmRlcHRoPWgocixpLGEseS5VTlNJ R05FRF9JTlRfMjRfOF9XRUJHTCxyLkRFUFRIX1NURU5DSUwsci5ERVBUSF9TVEVOQ0lMX0FU VEFDSE1FTlQpOm0mJih0LmRlcHRoPWgocixpLGEsci5VTlNJR05FRF9TSE9SVCxyLkRFUFRI X0NPTVBPTkVOVCxyLkRFUFRIX0FUVEFDSE1FTlQpKTptJiZkP3QuX2RlcHRoX3JiPXAocixp LGEsci5ERVBUSF9TVEVOQ0lMLHIuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKTptP3QuX2Rl cHRoX3JiPXAocixpLGEsci5ERVBUSF9DT01QT05FTlQxNixyLkRFUFRIX0FUVEFDSE1FTlQp OmQmJih0Ll9kZXB0aF9yYj1wKHIsaSxhLHIuU1RFTkNJTF9JTkRFWCxyLlNURU5DSUxfQVRU QUNITUVOVCkpO3ZhciB4PXIuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhyLkZSQU1FQlVGRkVS KTtpZih4IT09ci5GUkFNRUJVRkZFUl9DT01QTEVURSl7dC5fZGVzdHJveWVkPSEwLHIuYmlu ZEZyYW1lYnVmZmVyKHIuRlJBTUVCVUZGRVIsbnVsbCksci5kZWxldGVGcmFtZWJ1ZmZlcih0 LmhhbmRsZSksdC5oYW5kbGU9bnVsbCx0LmRlcHRoJiYodC5kZXB0aC5kaXNwb3NlKCksdC5k ZXB0aD1udWxsKSx0Ll9kZXB0aF9yYiYmKHIuZGVsZXRlUmVuZGVyYnVmZmVyKHQuX2RlcHRo X3JiKSx0Ll9kZXB0aF9yYj1udWxsKTtmb3Iodj0wO3Y8dC5jb2xvci5sZW5ndGg7Kyt2KXQu Y29sb3Jbdl0uZGlzcG9zZSgpLHQuY29sb3Jbdl09bnVsbDt0Ll9jb2xvcl9yYiYmKHIuZGVs ZXRlUmVuZGVyYnVmZmVyKHQuX2NvbG9yX3JiKSx0Ll9jb2xvcl9yYj1udWxsKSx1KHIsZSks Zih4KX11KHIsZSl9KHRoaXMpfXZhciBtPWQucHJvdG90eXBlO2Z1bmN0aW9uIGcodCxlLHIp e2lmKHQuX2Rlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoImdsLWZibzogQ2FuJ3QgcmVzaXpl IGRlc3Ryb3llZCBGQk8iKTtpZih0Ll9zaGFwZVswXSE9PWV8fHQuX3NoYXBlWzFdIT09cil7 dmFyIG49dC5nbCxpPW4uZ2V0UGFyYW1ldGVyKG4uTUFYX1JFTkRFUkJVRkZFUl9TSVpFKTtp ZihlPDB8fGU+aXx8cjwwfHxyPmkpdGhyb3cgbmV3IEVycm9yKCJnbC1mYm86IENhbid0IHJl c2l6ZSBGQk8sIGludmFsaWQgZGltZW5zaW9ucyIpO3QuX3NoYXBlWzBdPWUsdC5fc2hhcGVb MV09cjtmb3IodmFyIGE9YyhuKSxvPTA7bzx0LmNvbG9yLmxlbmd0aDsrK28pdC5jb2xvcltv XS5zaGFwZT10Ll9zaGFwZTt0Ll9jb2xvcl9yYiYmKG4uYmluZFJlbmRlcmJ1ZmZlcihuLlJF TkRFUkJVRkZFUix0Ll9jb2xvcl9yYiksbi5yZW5kZXJidWZmZXJTdG9yYWdlKG4uUkVOREVS QlVGRkVSLG4uUkdCQTQsdC5fc2hhcGVbMF0sdC5fc2hhcGVbMV0pKSx0LmRlcHRoJiYodC5k ZXB0aC5zaGFwZT10Ll9zaGFwZSksdC5fZGVwdGhfcmImJihuLmJpbmRSZW5kZXJidWZmZXIo bi5SRU5ERVJCVUZGRVIsdC5fZGVwdGhfcmIpLHQuX3VzZURlcHRoJiZ0Ll91c2VTdGVuY2ls P24ucmVuZGVyYnVmZmVyU3RvcmFnZShuLlJFTkRFUkJVRkZFUixuLkRFUFRIX1NURU5DSUws dC5fc2hhcGVbMF0sdC5fc2hhcGVbMV0pOnQuX3VzZURlcHRoP24ucmVuZGVyYnVmZmVyU3Rv cmFnZShuLlJFTkRFUkJVRkZFUixuLkRFUFRIX0NPTVBPTkVOVDE2LHQuX3NoYXBlWzBdLHQu X3NoYXBlWzFdKTp0Ll91c2VTdGVuY2lsJiZuLnJlbmRlcmJ1ZmZlclN0b3JhZ2Uobi5SRU5E RVJCVUZGRVIsbi5TVEVOQ0lMX0lOREVYLHQuX3NoYXBlWzBdLHQuX3NoYXBlWzFdKSksbi5i aW5kRnJhbWVidWZmZXIobi5GUkFNRUJVRkZFUix0LmhhbmRsZSk7dmFyIHM9bi5jaGVja0Zy YW1lYnVmZmVyU3RhdHVzKG4uRlJBTUVCVUZGRVIpO3MhPT1uLkZSQU1FQlVGRkVSX0NPTVBM RVRFJiYodC5kaXNwb3NlKCksdShuLGEpLGYocykpLHUobixhKX19T2JqZWN0LmRlZmluZVBy b3BlcnRpZXMobSx7c2hhcGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZXN0cm95 ZWQ/WzAsMF06dGhpcy5fc2hhcGVWZWN0b3J9LHNldDpmdW5jdGlvbih0KXtpZihBcnJheS5p c0FycmF5KHQpfHwodD1bMHx0LDB8dF0pLDIhPT10Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3Io ImdsLWZibzogU2hhcGUgdmVjdG9yIG11c3QgYmUgbGVuZ3RoIDIiKTt2YXIgZT0wfHRbMF0s cj0wfHRbMV07cmV0dXJuIGcodGhpcyxlLHIpLFtlLHJdfSxlbnVtZXJhYmxlOiExfSx3aWR0 aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rlc3Ryb3llZD8wOnRoaXMuX3NoYXBl WzBdfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGcodGhpcyx0fD0wLHRoaXMuX3NoYXBlWzFd KSx0fSxlbnVtZXJhYmxlOiExfSxoZWlnaHQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlz Ll9kZXN0cm95ZWQ/MDp0aGlzLl9zaGFwZVsxXX0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0 fD0wLGcodGhpcyx0aGlzLl9zaGFwZVswXSx0KSx0fSxlbnVtZXJhYmxlOiExfX0pLG0uYmlu ZD1mdW5jdGlvbigpe2lmKCF0aGlzLl9kZXN0cm95ZWQpe3ZhciB0PXRoaXMuZ2w7dC5iaW5k RnJhbWVidWZmZXIodC5GUkFNRUJVRkZFUix0aGlzLmhhbmRsZSksdC52aWV3cG9ydCgwLDAs dGhpcy5fc2hhcGVbMF0sdGhpcy5fc2hhcGVbMV0pfX0sbS5kaXNwb3NlPWZ1bmN0aW9uKCl7 aWYoIXRoaXMuX2Rlc3Ryb3llZCl7dGhpcy5fZGVzdHJveWVkPSEwO3ZhciB0PXRoaXMuZ2w7 dC5kZWxldGVGcmFtZWJ1ZmZlcih0aGlzLmhhbmRsZSksdGhpcy5oYW5kbGU9bnVsbCx0aGlz LmRlcHRoJiYodGhpcy5kZXB0aC5kaXNwb3NlKCksdGhpcy5kZXB0aD1udWxsKSx0aGlzLl9k ZXB0aF9yYiYmKHQuZGVsZXRlUmVuZGVyYnVmZmVyKHRoaXMuX2RlcHRoX3JiKSx0aGlzLl9k ZXB0aF9yYj1udWxsKTtmb3IodmFyIGU9MDtlPHRoaXMuY29sb3IubGVuZ3RoOysrZSl0aGlz LmNvbG9yW2VdLmRpc3Bvc2UoKSx0aGlzLmNvbG9yW2VdPW51bGw7dGhpcy5fY29sb3JfcmIm Jih0LmRlbGV0ZVJlbmRlcmJ1ZmZlcih0aGlzLl9jb2xvcl9yYiksdGhpcy5fY29sb3JfcmI9 bnVsbCl9fX0seyJnbC10ZXh0dXJlMmQiOjE0Nn1dLDg3OltmdW5jdGlvbih0LGUscil7dmFy IG49dCgic3ByaW50Zi1qcyIpLnNwcmludGYsaT10KCJnbC1jb25zdGFudHMvbG9va3VwIiks YT10KCJnbHNsLXNoYWRlci1uYW1lIiksbz10KCJhZGQtbGluZS1udW1iZXJzIik7ZS5leHBv cnRzPWZ1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIHM9YShlKXx8Im9mIHVua25v d24gbmFtZSAoc2VlIG5wbSBnbHNsLXNoYWRlci1uYW1lKSIsbD0idW5rbm93biB0eXBlIjt2 b2lkIDAhPT1yJiYobD1yPT09aS5GUkFHTUVOVF9TSEFERVI/ImZyYWdtZW50IjoidmVydGV4 Iik7Zm9yKHZhciBjPW4oIkVycm9yIGNvbXBpbGluZyAlcyBzaGFkZXIgJXM6XG4iLGwscyks dT1uKCIlcyVzIixjLHQpLGY9dC5zcGxpdCgiXG4iKSxoPXt9LHA9MDtwPGYubGVuZ3RoO3Ar Kyl7dmFyIGQ9ZltwXTtpZigiIiE9PWQmJiJcMCIhPT1kKXt2YXIgbT1wYXJzZUludChkLnNw bGl0KCI6IilbMl0pO2lmKGlzTmFOKG0pKXRocm93IG5ldyBFcnJvcihuKCJDb3VsZCBub3Qg cGFyc2UgZXJyb3I6ICVzIixkKSk7aFttXT1kfX12YXIgZz1vKGUpLnNwbGl0KCJcbiIpO2Zv cihwPTA7cDxnLmxlbmd0aDtwKyspaWYoaFtwKzNdfHxoW3ArMl18fGhbcCsxXSl7dmFyIHY9 Z1twXTtpZihjKz12KyJcbiIsaFtwKzFdKXt2YXIgeT1oW3ArMV07eT15LnN1YnN0cih5LnNw bGl0KCI6IiwzKS5qb2luKCI6IikubGVuZ3RoKzEpLnRyaW0oKSxjKz1uKCJeXl4gJXNcblxu Iix5KX19cmV0dXJue2xvbmc6Yy50cmltKCksc2hvcnQ6dS50cmltKCl9fX0seyJhZGQtbGlu ZS1udW1iZXJzIjo5LCJnbC1jb25zdGFudHMvbG9va3VwIjo4MywiZ2xzbC1zaGFkZXItbmFt ZSI6MjIzLCJzcHJpbnRmLWpzIjozMDF9XSw4ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj10LmdsLG49byhyLGwudmVydGV4 LGwuZnJhZ21lbnQpLGk9byhyLGwucGlja1ZlcnRleCxsLnBpY2tGcmFnbWVudCksYT1zKHIp LHU9cyhyKSxmPXMociksaD1zKHIpLHA9bmV3IGModCxuLGksYSx1LGYsaCk7cmV0dXJuIHAu dXBkYXRlKGUpLHQuYWRkT2JqZWN0KHApLHB9O3ZhciBuPXQoImJpbmFyeS1zZWFyY2gtYm91 bmRzIiksaT10KCJpb3RhLWFycmF5IiksYT10KCJ0eXBlZGFycmF5LXBvb2wiKSxvPXQoImds LXNoYWRlciIpLHM9dCgiZ2wtYnVmZmVyIiksbD10KCIuL2xpYi9zaGFkZXJzIik7ZnVuY3Rp b24gYyh0LGUscixuLGksYSxvKXt0aGlzLnBsb3Q9dCx0aGlzLnNoYWRlcj1lLHRoaXMucGlj a1NoYWRlcj1yLHRoaXMucG9zaXRpb25CdWZmZXI9bix0aGlzLndlaWdodEJ1ZmZlcj1pLHRo aXMuY29sb3JCdWZmZXI9YSx0aGlzLmlkQnVmZmVyPW8sdGhpcy54RGF0YT1bXSx0aGlzLnlE YXRhPVtdLHRoaXMuc2hhcGU9WzAsMF0sdGhpcy5ib3VuZHM9WzEvMCwxLzAsLTEvMCwtMS8w XSx0aGlzLnBpY2tPZmZzZXQ9MH12YXIgdSxmPWMucHJvdG90eXBlLGg9WzAsMCwxLDAsMCwx LDEsMCwxLDEsMCwxXTtmLmRyYXc9KHU9WzEsMCwwLDAsMSwwLDAsMCwxXSxmdW5jdGlvbigp e3ZhciB0PXRoaXMucGxvdCxlPXRoaXMuc2hhZGVyLHI9dGhpcy5ib3VuZHMsbj10aGlzLm51 bVZlcnRpY2VzO2lmKCEobjw9MCkpe3ZhciBpPXQuZ2wsYT10LmRhdGFCb3gsbz1yWzJdLXJb MF0scz1yWzNdLXJbMV0sbD1hWzJdLWFbMF0sYz1hWzNdLWFbMV07dVswXT0yKm8vbCx1WzRd PTIqcy9jLHVbNl09MiooclswXS1hWzBdKS9sLTEsdVs3XT0yKihyWzFdLWFbMV0pL2MtMSxl LmJpbmQoKTt2YXIgZj1lLnVuaWZvcm1zO2Yudmlld1RyYW5zZm9ybT11LGYuc2hhcGU9dGhp cy5zaGFwZTt2YXIgaD1lLmF0dHJpYnV0ZXM7dGhpcy5wb3NpdGlvbkJ1ZmZlci5iaW5kKCks aC5wb3NpdGlvbi5wb2ludGVyKCksdGhpcy53ZWlnaHRCdWZmZXIuYmluZCgpLGgud2VpZ2h0 LnBvaW50ZXIoaS5VTlNJR05FRF9CWVRFLCExKSx0aGlzLmNvbG9yQnVmZmVyLmJpbmQoKSxo LmNvbG9yLnBvaW50ZXIoaS5VTlNJR05FRF9CWVRFLCEwKSxpLmRyYXdBcnJheXMoaS5UUklB TkdMRVMsMCxuKX19KSxmLmRyYXdQaWNrPWZ1bmN0aW9uKCl7dmFyIHQ9WzEsMCwwLDAsMSww LDAsMCwxXSxlPVswLDAsMCwwXTtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIG49dGhpcy5wbG90 LGk9dGhpcy5waWNrU2hhZGVyLGE9dGhpcy5ib3VuZHMsbz10aGlzLm51bVZlcnRpY2VzO2lm KCEobzw9MCkpe3ZhciBzPW4uZ2wsbD1uLmRhdGFCb3gsYz1hWzJdLWFbMF0sdT1hWzNdLWFb MV0sZj1sWzJdLWxbMF0saD1sWzNdLWxbMV07dFswXT0yKmMvZix0WzRdPTIqdS9oLHRbNl09 MiooYVswXS1sWzBdKS9mLTEsdFs3XT0yKihhWzFdLWxbMV0pL2gtMTtmb3IodmFyIHA9MDtw PDQ7KytwKWVbcF09cj4+OCpwJjI1NTt0aGlzLnBpY2tPZmZzZXQ9cixpLmJpbmQoKTt2YXIg ZD1pLnVuaWZvcm1zO2Qudmlld1RyYW5zZm9ybT10LGQucGlja09mZnNldD1lLGQuc2hhcGU9 dGhpcy5zaGFwZTt2YXIgbT1pLmF0dHJpYnV0ZXM7cmV0dXJuIHRoaXMucG9zaXRpb25CdWZm ZXIuYmluZCgpLG0ucG9zaXRpb24ucG9pbnRlcigpLHRoaXMud2VpZ2h0QnVmZmVyLmJpbmQo KSxtLndlaWdodC5wb2ludGVyKHMuVU5TSUdORURfQllURSwhMSksdGhpcy5pZEJ1ZmZlci5i aW5kKCksbS5waWNrSWQucG9pbnRlcihzLlVOU0lHTkVEX0JZVEUsITEpLHMuZHJhd0FycmF5 cyhzLlRSSUFOR0xFUywwLG8pLHIrdGhpcy5zaGFwZVswXSp0aGlzLnNoYXBlWzFdfX19KCks Zi5waWNrPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLnBpY2tPZmZzZXQsaT10aGlzLnNo YXBlWzBdKnRoaXMuc2hhcGVbMV07aWYocjxufHxyPj1uK2kpcmV0dXJuIG51bGw7dmFyIGE9 ci1uLG89dGhpcy54RGF0YSxzPXRoaXMueURhdGE7cmV0dXJue29iamVjdDp0aGlzLHBvaW50 SWQ6YSxkYXRhQ29vcmQ6W29bYSV0aGlzLnNoYXBlWzBdXSxzW2EvdGhpcy5zaGFwZVswXXww XV19fSxmLnVwZGF0ZT1mdW5jdGlvbih0KXt2YXIgZT0odD10fHx7fSkuc2hhcGV8fFswLDBd LHI9dC54fHxpKGVbMF0pLG89dC55fHxpKGVbMV0pLHM9dC56fHxuZXcgRmxvYXQzMkFycmF5 KGVbMF0qZVsxXSksbD0hMSE9PXQuenNtb290aDt0aGlzLnhEYXRhPXIsdGhpcy55RGF0YT1v O3ZhciBjLHUsZixwLGQ9dC5jb2xvckxldmVsc3x8WzBdLG09dC5jb2xvclZhbHVlc3x8WzAs MCwwLDFdLGc9ZC5sZW5ndGgsdj10aGlzLmJvdW5kcztsPyhjPXZbMF09clswXSx1PXZbMV09 b1swXSxmPXZbMl09cltyLmxlbmd0aC0xXSxwPXZbM109b1tvLmxlbmd0aC0xXSk6KGM9dlsw XT1yWzBdKyhyWzFdLXJbMF0pLzIsdT12WzFdPW9bMF0rKG9bMV0tb1swXSkvMixmPXZbMl09 cltyLmxlbmd0aC0xXSsocltyLmxlbmd0aC0xXS1yW3IubGVuZ3RoLTJdKS8yLHA9dlszXT1v W28ubGVuZ3RoLTFdKyhvW28ubGVuZ3RoLTFdLW9bby5sZW5ndGgtMl0pLzIpO3ZhciB5PTEv KGYtYykseD0xLyhwLXUpLGI9ZVswXSxfPWVbMV07dGhpcy5zaGFwZT1bYixfXTt2YXIgdz0o bD8oYi0xKSooXy0xKTpiKl8pKihoLmxlbmd0aD4+PjEpO3RoaXMubnVtVmVydGljZXM9dztm b3IodmFyIFQ9YS5tYWxsb2NVaW50OCg0KncpLGs9YS5tYWxsb2NGbG9hdDMyKDIqdyksQT1h Lm1hbGxvY1VpbnQ4KDIqdyksTT1hLm1hbGxvY1VpbnQzMih3KSxTPTAsRT1sP2ItMTpiLEw9 bD9fLTE6XyxDPTA7QzxMOysrQyl7dmFyIFAsSTtsPyhQPXgqKG9bQ10tdSksST14KihvW0Mr MV0tdSkpOihQPUM8Xy0xP3gqKG9bQ10tKG9bQysxXS1vW0NdKS8yLXUpOngqKG9bQ10tKG9b Q10tb1tDLTFdKS8yLXUpLEk9QzxfLTE/eCoob1tDXSsob1tDKzFdLW9bQ10pLzItdSk6eCoo b1tDXSsob1tDXS1vW0MtMV0pLzItdSkpO2Zvcih2YXIgTz0wO088RTsrK08pe3ZhciB6LEQ7 bD8oej15KihyW09dLWMpLEQ9eSoocltPKzFdLWMpKTooej1PPGItMT95KihyW09dLShyW08r MV0tcltPXSkvMi1jKTp5KihyW09dLShyW09dLXJbTy0xXSkvMi1jKSxEPU88Yi0xP3kqKHJb T10rKHJbTysxXS1yW09dKS8yLWMpOnkqKHJbT10rKHJbT10tcltPLTFdKS8yLWMpKTtmb3Io dmFyIFI9MDtSPGgubGVuZ3RoO1IrPTIpe3ZhciBGLEIsTixqLFU9aFtSXSxWPWhbUisxXSxI PXNbbD8oQytWKSpiKyhPK1UpOkMqYitPXSxxPW4ubGUoZCxIKTtpZihxPDApRj1tWzBdLEI9 bVsxXSxOPW1bMl0saj1tWzNdO2Vsc2UgaWYocT09PWctMSlGPW1bNCpnLTRdLEI9bVs0Kmct M10sTj1tWzQqZy0yXSxqPW1bNCpnLTFdO2Vsc2V7dmFyIEc9KEgtZFtxXSkvKGRbcSsxXS1k W3FdKSxZPTEtRyxXPTQqcSxYPTQqKHErMSk7Rj1ZKm1bV10rRyptW1hdLEI9WSptW1crMV0r RyptW1grMV0sTj1ZKm1bVysyXStHKm1bWCsyXSxqPVkqbVtXKzNdK0cqbVtYKzNdfVRbNCpT XT0yNTUqRixUWzQqUysxXT0yNTUqQixUWzQqUysyXT0yNTUqTixUWzQqUyszXT0yNTUqaixr WzIqU109LjUqeisuNSpELGtbMipTKzFdPS41KlArLjUqSSxBWzIqU109VSxBWzIqUysxXT1W LE1bU109QypiK08sUys9MX19fXRoaXMucG9zaXRpb25CdWZmZXIudXBkYXRlKGspLHRoaXMu d2VpZ2h0QnVmZmVyLnVwZGF0ZShBKSx0aGlzLmNvbG9yQnVmZmVyLnVwZGF0ZShUKSx0aGlz LmlkQnVmZmVyLnVwZGF0ZShNKSxhLmZyZWUoayksYS5mcmVlKFQpLGEuZnJlZShBKSxhLmZy ZWUoTSl9LGYuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuc2hhZGVyLmRpc3Bvc2UoKSx0aGlz LnBpY2tTaGFkZXIuZGlzcG9zZSgpLHRoaXMucG9zaXRpb25CdWZmZXIuZGlzcG9zZSgpLHRo aXMud2VpZ2h0QnVmZmVyLmRpc3Bvc2UoKSx0aGlzLmNvbG9yQnVmZmVyLmRpc3Bvc2UoKSx0 aGlzLmlkQnVmZmVyLmRpc3Bvc2UoKSx0aGlzLnBsb3QucmVtb3ZlT2JqZWN0KHRoaXMpfX0s eyIuL2xpYi9zaGFkZXJzIjo4OSwiYmluYXJ5LXNlYXJjaC1ib3VuZHMiOjMxLCJnbC1idWZm ZXIiOjc4LCJnbC1zaGFkZXIiOjEzMiwiaW90YS1hcnJheSI6MjM1LCJ0eXBlZGFycmF5LXBv b2wiOjMwOH1dLDg5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImds c2xpZnkiKTtlLmV4cG9ydHM9e2ZyYWdtZW50Om4oWyJwcmVjaXNpb24gbG93cCBmbG9hdDtc biNkZWZpbmUgR0xTTElGWSAxXG52YXJ5aW5nIHZlYzQgZnJhZ0NvbG9yO1xudm9pZCBtYWlu KCkge1xuICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGZyYWdDb2xvci5yZ2IgKiBmcmFnQ29sb3Iu YSwgZnJhZ0NvbG9yLmEpO1xufVxuIl0pLHZlcnRleDpuKFsicHJlY2lzaW9uIG1lZGl1bXAg ZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtc bmF0dHJpYnV0ZSB2ZWM0IGNvbG9yO1xuYXR0cmlidXRlIHZlYzIgd2VpZ2h0O1xuXG51bmlm b3JtIHZlYzIgc2hhcGU7XG51bmlmb3JtIG1hdDMgdmlld1RyYW5zZm9ybTtcblxudmFyeWlu ZyB2ZWM0IGZyYWdDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICB2ZWMzIHZQb3NpdGlvbiA9 IHZpZXdUcmFuc2Zvcm0gKiB2ZWMzKCBwb3NpdGlvbiArICh3ZWlnaHQtLjUpLyhzaGFwZS0x LikgLCAxLjApO1xuICBmcmFnQ29sb3IgPSBjb2xvcjtcbiAgZ2xfUG9zaXRpb24gPSB2ZWM0 KHZQb3NpdGlvbi54eSwgMCwgdlBvc2l0aW9uLnopO1xufVxuIl0pLHBpY2tGcmFnbWVudDpu KFsicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG52YXJ5 aW5nIHZlYzQgZnJhZ0lkO1xudmFyeWluZyB2ZWMyIHZXZWlnaHQ7XG5cbnVuaWZvcm0gdmVj MiBzaGFwZTtcbnVuaWZvcm0gdmVjNCBwaWNrT2Zmc2V0O1xuXG52b2lkIG1haW4oKSB7XG4g IHZlYzIgZCA9IHN0ZXAoLjUsIHZXZWlnaHQpO1xuICB2ZWM0IGlkID0gZnJhZ0lkICsgcGlj a09mZnNldDtcbiAgaWQueCArPSBkLnggKyBkLnkqc2hhcGUueDtcblxuICBpZC55ICs9IGZs b29yKGlkLnggLyAyNTYuMCk7XG4gIGlkLnggLT0gZmxvb3IoaWQueCAvIDI1Ni4wKSAqIDI1 Ni4wO1xuXG4gIGlkLnogKz0gZmxvb3IoaWQueSAvIDI1Ni4wKTtcbiAgaWQueSAtPSBmbG9v cihpZC55IC8gMjU2LjApICogMjU2LjA7XG5cbiAgaWQudyArPSBmbG9vcihpZC56IC8gMjU2 LjApO1xuICBpZC56IC09IGZsb29yKGlkLnogLyAyNTYuMCkgKiAyNTYuMDtcblxuICBnbF9G cmFnQ29sb3IgPSBpZC8yNTUuO1xufVxuIl0pLHBpY2tWZXJ0ZXg6bihbInByZWNpc2lvbiBt ZWRpdW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzIgcG9z aXRpb247XG5hdHRyaWJ1dGUgdmVjNCBwaWNrSWQ7XG5hdHRyaWJ1dGUgdmVjMiB3ZWlnaHQ7 XG5cbnVuaWZvcm0gdmVjMiBzaGFwZTtcbnVuaWZvcm0gbWF0MyB2aWV3VHJhbnNmb3JtO1xu XG52YXJ5aW5nIHZlYzQgZnJhZ0lkO1xudmFyeWluZyB2ZWMyIHZXZWlnaHQ7XG5cbnZvaWQg bWFpbigpIHtcbiAgdldlaWdodCA9IHdlaWdodDtcblxuICBmcmFnSWQgPSBwaWNrSWQ7XG5c biAgdmVjMyB2UG9zaXRpb24gPSB2aWV3VHJhbnNmb3JtICogdmVjMyggcG9zaXRpb24gKyAo d2VpZ2h0LS41KS8oc2hhcGUtMS4pICwgMS4wKTtcbiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHZQ b3NpdGlvbi54eSwgMCwgdlBvc2l0aW9uLnopO1xufVxuIl0pfX0se2dsc2xpZnk6MjMxfV0s OTA6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCJnbHNsaWZ5IiksaT10KCJnbC1zaGFkZXIi KSxhPW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5h dHRyaWJ1dGUgdmVjMyBwb3NpdGlvbiwgbmV4dFBvc2l0aW9uO1xuYXR0cmlidXRlIGZsb2F0 IGFyY0xlbmd0aCwgbGluZVdpZHRoO1xuYXR0cmlidXRlIHZlYzQgY29sb3I7XG5cbnVuaWZv cm0gdmVjMiBzY3JlZW5TaGFwZTtcbnVuaWZvcm0gZmxvYXQgcGl4ZWxSYXRpbztcbnVuaWZv cm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlvbjtcblxudmFyeWluZyB2ZWM0IGZyYWdD b2xvcjtcbnZhcnlpbmcgdmVjMyB3b3JsZFBvc2l0aW9uO1xudmFyeWluZyBmbG9hdCBwaXhl bEFyY0xlbmd0aDtcblxudmVjNCBwcm9qZWN0KHZlYzMgcCkge1xuICByZXR1cm4gcHJvamVj dGlvbiAqIHZpZXcgKiBtb2RlbCAqIHZlYzQocCwgMS4wKTtcbn1cblxudm9pZCBtYWluKCkg e1xuICB2ZWM0IHN0YXJ0UG9pbnQgPSBwcm9qZWN0KHBvc2l0aW9uKTtcbiAgdmVjNCBlbmRQ b2ludCAgID0gcHJvamVjdChuZXh0UG9zaXRpb24pO1xuXG4gIHZlYzIgQSA9IHN0YXJ0UG9p bnQueHkgLyBzdGFydFBvaW50Lnc7XG4gIHZlYzIgQiA9ICAgZW5kUG9pbnQueHkgLyAgIGVu ZFBvaW50Lnc7XG5cbiAgZmxvYXQgY2xpcEFuZ2xlID0gYXRhbihcbiAgICAoQi55IC0gQS55 KSAqIHNjcmVlblNoYXBlLnksXG4gICAgKEIueCAtIEEueCkgKiBzY3JlZW5TaGFwZS54XG4g ICk7XG5cbiAgdmVjMiBvZmZzZXQgPSAwLjUgKiBwaXhlbFJhdGlvICogbGluZVdpZHRoICog dmVjMihcbiAgICBzaW4oY2xpcEFuZ2xlKSxcbiAgICAtY29zKGNsaXBBbmdsZSlcbiAgKSAv IHNjcmVlblNoYXBlO1xuXG4gIGdsX1Bvc2l0aW9uID0gdmVjNChzdGFydFBvaW50Lnh5ICsg c3RhcnRQb2ludC53ICogb2Zmc2V0LCBzdGFydFBvaW50Lnp3KTtcblxuICB3b3JsZFBvc2l0 aW9uID0gcG9zaXRpb247XG4gIHBpeGVsQXJjTGVuZ3RoID0gYXJjTGVuZ3RoO1xuICBmcmFn Q29sb3IgPSBjb2xvcjtcbn1cbiJdKSxvPW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4j ZGVmaW5lIEdMU0xJRlkgMVxuXG5ib29sIG91dE9mUmFuZ2UoZmxvYXQgYSwgZmxvYXQgYiwg ZmxvYXQgcCkge1xuICByZXR1cm4gKChwID4gbWF4KGEsIGIpKSB8fCBcbiAgICAgICAgICAo cCA8IG1pbihhLCBiKSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMiBhLCB2ZWMyIGIs IHZlYzIgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAg ICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpKTtcbn1cblxuYm9vbCBvdXRPZlJh bmdlKHZlYzMgYSwgdmVjMyBiLCB2ZWMzIHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEu eCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIueSwgcC55KSB8 fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS56LCBiLnosIHAueikpO1xufVxuXG5ib29sIG91 dE9mUmFuZ2UodmVjNCBhLCB2ZWM0IGIsIHZlYzQgcCkge1xuICByZXR1cm4gb3V0T2ZSYW5n ZShhLnh5eiwgYi54eXosIHAueHl6KTtcbn1cblxudW5pZm9ybSB2ZWMzICAgICAgY2xpcEJv dW5kc1syXTtcbnVuaWZvcm0gc2FtcGxlcjJEIGRhc2hUZXh0dXJlO1xudW5pZm9ybSBmbG9h dCAgICAgZGFzaFNjYWxlO1xudW5pZm9ybSBmbG9hdCAgICAgb3BhY2l0eTtcblxudmFyeWlu ZyB2ZWMzICAgIHdvcmxkUG9zaXRpb247XG52YXJ5aW5nIGZsb2F0ICAgcGl4ZWxBcmNMZW5n dGg7XG52YXJ5aW5nIHZlYzQgICAgZnJhZ0NvbG9yO1xuXG52b2lkIG1haW4oKSB7XG4gIGlm IChcbiAgICBvdXRPZlJhbmdlKGNsaXBCb3VuZHNbMF0sIGNsaXBCb3VuZHNbMV0sIHdvcmxk UG9zaXRpb24pIHx8XG4gICAgZnJhZ0NvbG9yLmEgKiBvcGFjaXR5ID09IDAuXG4gICkgZGlz Y2FyZDtcblxuICBmbG9hdCBkYXNoV2VpZ2h0ID0gdGV4dHVyZTJEKGRhc2hUZXh0dXJlLCB2 ZWMyKGRhc2hTY2FsZSAqIHBpeGVsQXJjTGVuZ3RoLCAwKSkucjtcbiAgaWYoZGFzaFdlaWdo dCA8IDAuNSkge1xuICAgIGRpc2NhcmQ7XG4gIH1cbiAgZ2xfRnJhZ0NvbG9yID0gZnJhZ0Nv bG9yICogb3BhY2l0eTtcbn1cbiJdKSxzPW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4j ZGVmaW5lIEdMU0xJRlkgMVxuXG4jZGVmaW5lIEZMT0FUX01BWCAgMS43MDE0MTE4NGUzOFxu I2RlZmluZSBGTE9BVF9NSU4gIDEuMTc1NDk0MzVlLTM4XG5cbi8vIGh0dHBzOi8vZ2l0aHVi LmNvbS9taWtvbGFseXNlbmtvL2dsc2wtcmVhZC1mbG9hdC9ibG9iL21hc3Rlci9pbmRleC5n bHNsXG52ZWM0IHBhY2tGbG9hdChmbG9hdCB2KSB7XG4gIGZsb2F0IGF2ID0gYWJzKHYpO1xu XG4gIC8vSGFuZGxlIHNwZWNpYWwgY2FzZXNcbiAgaWYoYXYgPCBGTE9BVF9NSU4pIHtcbiAg ICByZXR1cm4gdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApO1xuICB9IGVsc2UgaWYodiA+IEZM T0FUX01BWCkge1xuICAgIHJldHVybiB2ZWM0KDEyNy4wLCAxMjguMCwgMC4wLCAwLjApIC8g MjU1LjA7XG4gIH0gZWxzZSBpZih2IDwgLUZMT0FUX01BWCkge1xuICAgIHJldHVybiB2ZWM0 KDI1NS4wLCAxMjguMCwgMC4wLCAwLjApIC8gMjU1LjA7XG4gIH1cblxuICB2ZWM0IGMgPSB2 ZWM0KDAsMCwwLDApO1xuXG4gIC8vQ29tcHV0ZSBleHBvbmVudCBhbmQgbWFudGlzc2FcbiAg ZmxvYXQgZSA9IGZsb29yKGxvZzIoYXYpKTtcbiAgZmxvYXQgbSA9IGF2ICogcG93KDIuMCwg LWUpIC0gMS4wO1xuXG4gIC8vVW5wYWNrIG1hbnRpc3NhXG4gIGNbMV0gPSBmbG9vcigxMjgu MCAqIG0pO1xuICBtIC09IGNbMV0gLyAxMjguMDtcbiAgY1syXSA9IGZsb29yKDMyNzY4LjAg KiBtKTtcbiAgbSAtPSBjWzJdIC8gMzI3NjguMDtcbiAgY1szXSA9IGZsb29yKDgzODg2MDgu MCAqIG0pO1xuXG4gIC8vVW5wYWNrIGV4cG9uZW50XG4gIGZsb2F0IGViaWFzID0gZSArIDEy Ny4wO1xuICBjWzBdID0gZmxvb3IoZWJpYXMgLyAyLjApO1xuICBlYmlhcyAtPSBjWzBdICog Mi4wO1xuICBjWzFdICs9IGZsb29yKGViaWFzKSAqIDEyOC4wO1xuXG4gIC8vVW5wYWNrIHNp Z24gYml0XG4gIGNbMF0gKz0gMTI4LjAgKiBzdGVwKDAuMCwgLXYpO1xuXG4gIC8vU2NhbGUg YmFjayB0byByYW5nZVxuICByZXR1cm4gYyAvIDI1NS4wO1xufVxuXG5ib29sIG91dE9mUmFu Z2UoZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgcCkge1xuICByZXR1cm4gKChwID4gbWF4KGEs IGIpKSB8fCBcbiAgICAgICAgICAocCA8IG1pbihhLCBiKSkpO1xufVxuXG5ib29sIG91dE9m UmFuZ2UodmVjMiBhLCB2ZWMyIGIsIHZlYzIgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2Uo YS54LCBiLngsIHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkp KTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzMgYSwgdmVjMyBiLCB2ZWMzIHApIHtcbiAg cmV0dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZS YW5nZShhLnksIGIueSwgcC55KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS56LCBiLnos IHAueikpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjNCBhLCB2ZWM0IGIsIHZlYzQgcCkg e1xuICByZXR1cm4gb3V0T2ZSYW5nZShhLnh5eiwgYi54eXosIHAueHl6KTtcbn1cblxudW5p Zm9ybSBmbG9hdCBwaWNrSWQ7XG51bmlmb3JtIHZlYzMgY2xpcEJvdW5kc1syXTtcblxudmFy eWluZyB2ZWMzIHdvcmxkUG9zaXRpb247XG52YXJ5aW5nIGZsb2F0IHBpeGVsQXJjTGVuZ3Ro O1xudmFyeWluZyB2ZWM0IGZyYWdDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICBpZiAob3V0 T2ZSYW5nZShjbGlwQm91bmRzWzBdLCBjbGlwQm91bmRzWzFdLCB3b3JsZFBvc2l0aW9uKSkg ZGlzY2FyZDtcblxuICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHBpY2tJZC8yNTUuMCwgcGFja0Zs b2F0KHBpeGVsQXJjTGVuZ3RoKS54eXopO1xufSJdKSxsPVt7bmFtZToicG9zaXRpb24iLHR5 cGU6InZlYzMifSx7bmFtZToibmV4dFBvc2l0aW9uIix0eXBlOiJ2ZWMzIn0se25hbWU6ImFy Y0xlbmd0aCIsdHlwZToiZmxvYXQifSx7bmFtZToibGluZVdpZHRoIix0eXBlOiJmbG9hdCJ9 LHtuYW1lOiJjb2xvciIsdHlwZToidmVjNCJ9XTtyLmNyZWF0ZVNoYWRlcj1mdW5jdGlvbih0 KXtyZXR1cm4gaSh0LGEsbyxudWxsLGwpfSxyLmNyZWF0ZVBpY2tTaGFkZXI9ZnVuY3Rpb24o dCl7cmV0dXJuIGkodCxhLHMsbnVsbCxsKX19LHsiZ2wtc2hhZGVyIjoxMzIsZ2xzbGlmeToy MzF9XSw5MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rp b24odCl7dmFyIGU9dC5nbHx8dC5zY2VuZSYmdC5zY2VuZS5nbCxyPWYoZSk7ci5hdHRyaWJ1 dGVzLnBvc2l0aW9uLmxvY2F0aW9uPTAsci5hdHRyaWJ1dGVzLm5leHRQb3NpdGlvbi5sb2Nh dGlvbj0xLHIuYXR0cmlidXRlcy5hcmNMZW5ndGgubG9jYXRpb249MixyLmF0dHJpYnV0ZXMu bGluZVdpZHRoLmxvY2F0aW9uPTMsci5hdHRyaWJ1dGVzLmNvbG9yLmxvY2F0aW9uPTQ7dmFy IG89aChlKTtvLmF0dHJpYnV0ZXMucG9zaXRpb24ubG9jYXRpb249MCxvLmF0dHJpYnV0ZXMu bmV4dFBvc2l0aW9uLmxvY2F0aW9uPTEsby5hdHRyaWJ1dGVzLmFyY0xlbmd0aC5sb2NhdGlv bj0yLG8uYXR0cmlidXRlcy5saW5lV2lkdGgubG9jYXRpb249MyxvLmF0dHJpYnV0ZXMuY29s b3IubG9jYXRpb249NDtmb3IodmFyIHM9bihlKSxsPWkoZSxbe2J1ZmZlcjpzLHNpemU6Myxv ZmZzZXQ6MCxzdHJpZGU6NDh9LHtidWZmZXI6cyxzaXplOjMsb2Zmc2V0OjEyLHN0cmlkZTo0 OH0se2J1ZmZlcjpzLHNpemU6MSxvZmZzZXQ6MjQsc3RyaWRlOjQ4fSx7YnVmZmVyOnMsc2l6 ZToxLG9mZnNldDoyOCxzdHJpZGU6NDh9LHtidWZmZXI6cyxzaXplOjQsb2Zmc2V0OjMyLHN0 cmlkZTo0OH1dKSx1PWMobmV3IEFycmF5KDEwMjQpLFsyNTYsMSw0XSkscD0wO3A8MTAyNDsr K3ApdS5kYXRhW3BdPTI1NTt2YXIgZD1hKGUsdSk7ZC53cmFwPWUuUkVQRUFUO3ZhciBtPW5l dyB2KGUscixvLHMsbCxkKTtyZXR1cm4gbS51cGRhdGUodCksbX07dmFyIG49dCgiZ2wtYnVm ZmVyIiksaT10KCJnbC12YW8iKSxhPXQoImdsLXRleHR1cmUyZCIpLG89bmV3IFVpbnQ4QXJy YXkoNCkscz1uZXcgRmxvYXQzMkFycmF5KG8uYnVmZmVyKTt2YXIgbD10KCJiaW5hcnktc2Vh cmNoLWJvdW5kcyIpLGM9dCgibmRhcnJheSIpLHU9dCgiLi9saWIvc2hhZGVycyIpLGY9dS5j cmVhdGVTaGFkZXIsaD11LmNyZWF0ZVBpY2tTaGFkZXIscD1bMSwwLDAsMCwwLDEsMCwwLDAs MCwxLDAsMCwwLDAsMV07ZnVuY3Rpb24gZCh0LGUpe2Zvcih2YXIgcj0wLG49MDtuPDM7Kytu KXt2YXIgaT10W25dLWVbbl07cis9aSppfXJldHVybiBNYXRoLnNxcnQocil9ZnVuY3Rpb24g bSh0KXtmb3IodmFyIGU9W1stMWU2LC0xZTYsLTFlNl0sWzFlNiwxZTYsMWU2XV0scj0wO3I8 MzsrK3IpZVswXVtyXT1NYXRoLm1heCh0WzBdW3JdLGVbMF1bcl0pLGVbMV1bcl09TWF0aC5t aW4odFsxXVtyXSxlWzFdW3JdKTtyZXR1cm4gZX1mdW5jdGlvbiBnKHQsZSxyLG4pe3RoaXMu YXJjTGVuZ3RoPXQsdGhpcy5wb3NpdGlvbj1lLHRoaXMuaW5kZXg9cix0aGlzLmRhdGFDb29y ZGluYXRlPW59ZnVuY3Rpb24gdih0LGUscixuLGksYSl7dGhpcy5nbD10LHRoaXMuc2hhZGVy PWUsdGhpcy5waWNrU2hhZGVyPXIsdGhpcy5idWZmZXI9bix0aGlzLnZhbz1pLHRoaXMuY2xp cEJvdW5kcz1bWy0xLzAsLTEvMCwtMS8wXSxbMS8wLDEvMCwxLzBdXSx0aGlzLnBvaW50cz1b XSx0aGlzLmFyY0xlbmd0aD1bXSx0aGlzLnZlcnRleENvdW50PTAsdGhpcy5ib3VuZHM9W1sw LDAsMF0sWzAsMCwwXV0sdGhpcy5waWNrSWQ9MCx0aGlzLmxpbmVXaWR0aD0xLHRoaXMudGV4 dHVyZT1hLHRoaXMuZGFzaFNjYWxlPTEsdGhpcy5vcGFjaXR5PTEsdGhpcy5oYXNBbHBoYT0h MSx0aGlzLmRpcnR5PSEwLHRoaXMucGl4ZWxSYXRpbz0xfXZhciB5PXYucHJvdG90eXBlO3ku aXNUcmFuc3BhcmVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc0FscGhhfSx5LmlzT3Bh cXVlPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaGFzQWxwaGF9LHkucGlja1Nsb3RzPTEseS5z ZXRQaWNrQmFzZT1mdW5jdGlvbih0KXt0aGlzLnBpY2tJZD10fSx5LmRyYXdUcmFuc3BhcmVu dD15LmRyYXc9ZnVuY3Rpb24odCl7aWYodGhpcy52ZXJ0ZXhDb3VudCl7dmFyIGU9dGhpcy5n bCxyPXRoaXMuc2hhZGVyLG49dGhpcy52YW87ci5iaW5kKCksci51bmlmb3Jtcz17bW9kZWw6 dC5tb2RlbHx8cCx2aWV3OnQudmlld3x8cCxwcm9qZWN0aW9uOnQucHJvamVjdGlvbnx8cCxj bGlwQm91bmRzOm0odGhpcy5jbGlwQm91bmRzKSxkYXNoVGV4dHVyZTp0aGlzLnRleHR1cmUu YmluZCgpLGRhc2hTY2FsZTp0aGlzLmRhc2hTY2FsZS90aGlzLmFyY0xlbmd0aFt0aGlzLmFy Y0xlbmd0aC5sZW5ndGgtMV0sb3BhY2l0eTp0aGlzLm9wYWNpdHksc2NyZWVuU2hhcGU6W2Uu ZHJhd2luZ0J1ZmZlcldpZHRoLGUuZHJhd2luZ0J1ZmZlckhlaWdodF0scGl4ZWxSYXRpbzp0 aGlzLnBpeGVsUmF0aW99LG4uYmluZCgpLG4uZHJhdyhlLlRSSUFOR0xFX1NUUklQLHRoaXMu dmVydGV4Q291bnQpLG4udW5iaW5kKCl9fSx5LmRyYXdQaWNrPWZ1bmN0aW9uKHQpe2lmKHRo aXMudmVydGV4Q291bnQpe3ZhciBlPXRoaXMuZ2wscj10aGlzLnBpY2tTaGFkZXIsbj10aGlz LnZhbztyLmJpbmQoKSxyLnVuaWZvcm1zPXttb2RlbDp0Lm1vZGVsfHxwLHZpZXc6dC52aWV3 fHxwLHByb2plY3Rpb246dC5wcm9qZWN0aW9ufHxwLHBpY2tJZDp0aGlzLnBpY2tJZCxjbGlw Qm91bmRzOm0odGhpcy5jbGlwQm91bmRzKSxzY3JlZW5TaGFwZTpbZS5kcmF3aW5nQnVmZmVy V2lkdGgsZS5kcmF3aW5nQnVmZmVySGVpZ2h0XSxwaXhlbFJhdGlvOnRoaXMucGl4ZWxSYXRp b30sbi5iaW5kKCksbi5kcmF3KGUuVFJJQU5HTEVfU1RSSVAsdGhpcy52ZXJ0ZXhDb3VudCks bi51bmJpbmQoKX19LHkudXBkYXRlPWZ1bmN0aW9uKHQpe3ZhciBlLHI7dGhpcy5kaXJ0eT0h MDt2YXIgbj0hIXQuY29ubmVjdEdhcHM7ImRhc2hTY2FsZSJpbiB0JiYodGhpcy5kYXNoU2Nh bGU9dC5kYXNoU2NhbGUpLHRoaXMuaGFzQWxwaGE9ITEsIm9wYWNpdHkiaW4gdCYmKHRoaXMu b3BhY2l0eT0rdC5vcGFjaXR5LHRoaXMub3BhY2l0eTwxJiYodGhpcy5oYXNBbHBoYT0hMCkp O3ZhciBpPVtdLGE9W10sbz1bXSxzPTAsdT0wLGY9W1sxLzAsMS8wLDEvMF0sWy0xLzAsLTEv MCwtMS8wXV0saD10LnBvc2l0aW9ufHx0LnBvc2l0aW9ucztpZihoKXt2YXIgcD10LmNvbG9y fHx0LmNvbG9yc3x8WzAsMCwwLDFdLG09dC5saW5lV2lkdGh8fDEsZz0hMTt0OmZvcihlPTE7 ZTxoLmxlbmd0aDsrK2Upe3ZhciB2LHkseCxiPWhbZS0xXSxfPWhbZV07Zm9yKGEucHVzaChz KSxvLnB1c2goYi5zbGljZSgpKSxyPTA7cjwzOysrcil7aWYoaXNOYU4oYltyXSl8fGlzTmFO KF9bcl0pfHwhaXNGaW5pdGUoYltyXSl8fCFpc0Zpbml0ZShfW3JdKSl7aWYoIW4mJmkubGVu Z3RoPjApe2Zvcih2YXIgdz0wO3c8MjQ7Kyt3KWkucHVzaChpW2kubGVuZ3RoLTEyXSk7dSs9 MixnPSEwfWNvbnRpbnVlIHR9ZlswXVtyXT1NYXRoLm1pbihmWzBdW3JdLGJbcl0sX1tyXSks ZlsxXVtyXT1NYXRoLm1heChmWzFdW3JdLGJbcl0sX1tyXSl9QXJyYXkuaXNBcnJheShwWzBd KT8odj1wLmxlbmd0aD5lLTE/cFtlLTFdOnAubGVuZ3RoPjA/cFtwLmxlbmd0aC0xXTpbMCww LDAsMV0seT1wLmxlbmd0aD5lP3BbZV06cC5sZW5ndGg+MD9wW3AubGVuZ3RoLTFdOlswLDAs MCwxXSk6dj15PXAsMz09PXYubGVuZ3RoJiYodj1bdlswXSx2WzFdLHZbMl0sMV0pLDM9PT15 Lmxlbmd0aCYmKHk9W3lbMF0seVsxXSx5WzJdLDFdKSwhdGhpcy5oYXNBbHBoYSYmdlszXTwx JiYodGhpcy5oYXNBbHBoYT0hMCkseD1BcnJheS5pc0FycmF5KG0pP20ubGVuZ3RoPmUtMT9t W2UtMV06bS5sZW5ndGg+MD9tW20ubGVuZ3RoLTFdOlswLDAsMCwxXTptO3ZhciBUPXM7aWYo cys9ZChiLF8pLGcpe2ZvcihyPTA7cjwyOysrcilpLnB1c2goYlswXSxiWzFdLGJbMl0sX1sw XSxfWzFdLF9bMl0sVCx4LHZbMF0sdlsxXSx2WzJdLHZbM10pO3UrPTIsZz0hMX1pLnB1c2go YlswXSxiWzFdLGJbMl0sX1swXSxfWzFdLF9bMl0sVCx4LHZbMF0sdlsxXSx2WzJdLHZbM10s YlswXSxiWzFdLGJbMl0sX1swXSxfWzFdLF9bMl0sVCwteCx2WzBdLHZbMV0sdlsyXSx2WzNd LF9bMF0sX1sxXSxfWzJdLGJbMF0sYlsxXSxiWzJdLHMsLXgseVswXSx5WzFdLHlbMl0seVsz XSxfWzBdLF9bMV0sX1syXSxiWzBdLGJbMV0sYlsyXSxzLHgseVswXSx5WzFdLHlbMl0seVsz XSksdSs9NH19aWYodGhpcy5idWZmZXIudXBkYXRlKGkpLGEucHVzaChzKSxvLnB1c2goaFto Lmxlbmd0aC0xXS5zbGljZSgpKSx0aGlzLmJvdW5kcz1mLHRoaXMudmVydGV4Q291bnQ9dSx0 aGlzLnBvaW50cz1vLHRoaXMuYXJjTGVuZ3RoPWEsImRhc2hlcyJpbiB0KXt2YXIgaz10LmRh c2hlcy5zbGljZSgpO2ZvcihrLnVuc2hpZnQoMCksZT0xO2U8ay5sZW5ndGg7KytlKWtbZV09 a1tlLTFdK2tbZV07dmFyIEE9YyhuZXcgQXJyYXkoMTAyNCksWzI1NiwxLDRdKTtmb3IoZT0w O2U8MjU2OysrZSl7Zm9yKHI9MDtyPDQ7KytyKUEuc2V0KGUsMCxyLDApOzEmbC5sZShrLGtb ay5sZW5ndGgtMV0qZS8yNTUpP0Euc2V0KGUsMCwwLDApOkEuc2V0KGUsMCwwLDI1NSl9dGhp cy50ZXh0dXJlLnNldFBpeGVscyhBKX19LHkuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuc2hh ZGVyLmRpc3Bvc2UoKSx0aGlzLnZhby5kaXNwb3NlKCksdGhpcy5idWZmZXIuZGlzcG9zZSgp fSx5LnBpY2s9ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIG51bGw7aWYodC5pZCE9PXRoaXMu cGlja0lkKXJldHVybiBudWxsO3ZhciBlPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiBvWzBd PW4sb1sxXT1yLG9bMl09ZSxvWzNdPXQsc1swXX0odC52YWx1ZVswXSx0LnZhbHVlWzFdLHQu dmFsdWVbMl0sMCkscj1sLmxlKHRoaXMuYXJjTGVuZ3RoLGUpO2lmKHI8MClyZXR1cm4gbnVs bDtpZihyPT09dGhpcy5hcmNMZW5ndGgubGVuZ3RoLTEpcmV0dXJuIG5ldyBnKHRoaXMuYXJj TGVuZ3RoW3RoaXMuYXJjTGVuZ3RoLmxlbmd0aC0xXSx0aGlzLnBvaW50c1t0aGlzLnBvaW50 cy5sZW5ndGgtMV0uc2xpY2UoKSxyKTtmb3IodmFyIG49dGhpcy5wb2ludHNbcl0saT10aGlz LnBvaW50c1tNYXRoLm1pbihyKzEsdGhpcy5wb2ludHMubGVuZ3RoLTEpXSxhPShlLXRoaXMu YXJjTGVuZ3RoW3JdKS8odGhpcy5hcmNMZW5ndGhbcisxXS10aGlzLmFyY0xlbmd0aFtyXSks Yz0xLWEsdT1bMCwwLDBdLGY9MDtmPDM7KytmKXVbZl09YypuW2ZdK2EqaVtmXTt2YXIgaD1N YXRoLm1pbihhPC41P3I6cisxLHRoaXMucG9pbnRzLmxlbmd0aC0xKTtyZXR1cm4gbmV3IGco ZSx1LGgsdGhpcy5wb2ludHNbaF0pfX0seyIuL2xpYi9zaGFkZXJzIjo5MCwiYmluYXJ5LXNl YXJjaC1ib3VuZHMiOjMxLCJnbC1idWZmZXIiOjc4LCJnbC10ZXh0dXJlMmQiOjE0NiwiZ2wt dmFvIjoxNTAsbmRhcnJheToyNTl9XSw5MjpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1m dW5jdGlvbih0KXt2YXIgZT1uZXcgRmxvYXQzMkFycmF5KDE2KTtyZXR1cm4gZVswXT10WzBd LGVbMV09dFsxXSxlWzJdPXRbMl0sZVszXT10WzNdLGVbNF09dFs0XSxlWzVdPXRbNV0sZVs2 XT10WzZdLGVbN109dFs3XSxlWzhdPXRbOF0sZVs5XT10WzldLGVbMTBdPXRbMTBdLGVbMTFd PXRbMTFdLGVbMTJdPXRbMTJdLGVbMTNdPXRbMTNdLGVbMTRdPXRbMTRdLGVbMTVdPXRbMTVd LGV9fSx7fV0sOTM6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIg dD1uZXcgRmxvYXQzMkFycmF5KDE2KTtyZXR1cm4gdFswXT0xLHRbMV09MCx0WzJdPTAsdFsz XT0wLHRbNF09MCx0WzVdPTEsdFs2XT0wLHRbN109MCx0WzhdPTAsdFs5XT0wLHRbMTBdPTEs dFsxMV09MCx0WzEyXT0wLHRbMTNdPTAsdFsxNF09MCx0WzE1XT0xLHR9fSx7fV0sOTQ6W2Z1 bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dFswXSxyPXRbMV0s bj10WzJdLGk9dFszXSxhPXRbNF0sbz10WzVdLHM9dFs2XSxsPXRbN10sYz10WzhdLHU9dFs5 XSxmPXRbMTBdLGg9dFsxMV0scD10WzEyXSxkPXRbMTNdLG09dFsxNF0sZz10WzE1XTtyZXR1 cm4oZSpvLXIqYSkqKGYqZy1oKm0pLShlKnMtbiphKSoodSpnLWgqZCkrKGUqbC1pKmEpKih1 Km0tZipkKSsocipzLW4qbykqKGMqZy1oKnApLShyKmwtaSpvKSooYyptLWYqcCkrKG4qbC1p KnMpKihjKmQtdSpwKX19LHt9XSw5NTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5j dGlvbih0LGUpe3ZhciByPWVbMF0sbj1lWzFdLGk9ZVsyXSxhPWVbM10sbz1yK3Iscz1uK24s bD1pK2ksYz1yKm8sdT1uKm8sZj1uKnMsaD1pKm8scD1pKnMsZD1pKmwsbT1hKm8sZz1hKnMs dj1hKmw7cmV0dXJuIHRbMF09MS1mLWQsdFsxXT11K3YsdFsyXT1oLWcsdFszXT0wLHRbNF09 dS12LHRbNV09MS1jLWQsdFs2XT1wK20sdFs3XT0wLHRbOF09aCtnLHRbOV09cC1tLHRbMTBd PTEtYy1mLHRbMTFdPTAsdFsxMl09MCx0WzEzXT0wLHRbMTRdPTAsdFsxNV09MSx0fX0se31d LDk2OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1l WzBdLGk9ZVsxXSxhPWVbMl0sbz1lWzNdLHM9bituLGw9aStpLGM9YSthLHU9bipzLGY9bips LGg9bipjLHA9aSpsLGQ9aSpjLG09YSpjLGc9bypzLHY9bypsLHk9bypjO3JldHVybiB0WzBd PTEtKHArbSksdFsxXT1mK3ksdFsyXT1oLXYsdFszXT0wLHRbNF09Zi15LHRbNV09MS0odStt KSx0WzZdPWQrZyx0WzddPTAsdFs4XT1oK3YsdFs5XT1kLWcsdFsxMF09MS0odStwKSx0WzEx XT0wLHRbMTJdPXJbMF0sdFsxM109clsxXSx0WzE0XT1yWzJdLHRbMTVdPTEsdH19LHt9XSw5 NzpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdFswXT0x LHRbMV09MCx0WzJdPTAsdFszXT0wLHRbNF09MCx0WzVdPTEsdFs2XT0wLHRbN109MCx0Wzhd PTAsdFs5XT0wLHRbMTBdPTEsdFsxMV09MCx0WzEyXT0wLHRbMTNdPTAsdFsxNF09MCx0WzE1 XT0xLHR9fSx7fV0sOTg6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxl KXt2YXIgcj1lWzBdLG49ZVsxXSxpPWVbMl0sYT1lWzNdLG89ZVs0XSxzPWVbNV0sbD1lWzZd LGM9ZVs3XSx1PWVbOF0sZj1lWzldLGg9ZVsxMF0scD1lWzExXSxkPWVbMTJdLG09ZVsxM10s Zz1lWzE0XSx2PWVbMTVdLHk9cipzLW4qbyx4PXIqbC1pKm8sYj1yKmMtYSpvLF89bipsLWkq cyx3PW4qYy1hKnMsVD1pKmMtYSpsLGs9dSptLWYqZCxBPXUqZy1oKmQsTT11KnYtcCpkLFM9 ZipnLWgqbSxFPWYqdi1wKm0sTD1oKnYtcCpnLEM9eSpMLXgqRStiKlMrXypNLXcqQStUKms7 aWYoIUMpcmV0dXJuIG51bGw7cmV0dXJuIEM9MS9DLHRbMF09KHMqTC1sKkUrYypTKSpDLHRb MV09KGkqRS1uKkwtYSpTKSpDLHRbMl09KG0qVC1nKncrdipfKSpDLHRbM109KGgqdy1mKlQt cCpfKSpDLHRbNF09KGwqTS1vKkwtYypBKSpDLHRbNV09KHIqTC1pKk0rYSpBKSpDLHRbNl09 KGcqYi1kKlQtdip4KSpDLHRbN109KHUqVC1oKmIrcCp4KSpDLHRbOF09KG8qRS1zKk0rYypr KSpDLHRbOV09KG4qTS1yKkUtYSprKSpDLHRbMTBdPShkKnctbSpiK3YqeSkqQyx0WzExXT0o ZipiLXUqdy1wKnkpKkMsdFsxMl09KHMqQS1vKlMtbCprKSpDLHRbMTNdPShyKlMtbipBK2kq aykqQyx0WzE0XT0obSp4LWQqXy1nKnkpKkMsdFsxNV09KHUqXy1mKngraCp5KSpDLHR9fSx7 fV0sOTk6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCIuL2lkZW50aXR5Iik7ZS5leHBvcnRz PWZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBhLG8scyxsLGMsdSxmLGgscCxkLG09ZVswXSxnPWVb MV0sdj1lWzJdLHk9aVswXSx4PWlbMV0sYj1pWzJdLF89clswXSx3PXJbMV0sVD1yWzJdO2lm KE1hdGguYWJzKG0tXyk8MWUtNiYmTWF0aC5hYnMoZy13KTwxZS02JiZNYXRoLmFicyh2LVQp PDFlLTYpcmV0dXJuIG4odCk7Zj1tLV8saD1nLXcscD12LVQsZD0xL01hdGguc3FydChmKmYr aCpoK3AqcCksYT14KihwKj1kKS1iKihoKj1kKSxvPWIqKGYqPWQpLXkqcCxzPXkqaC14KmYs KGQ9TWF0aC5zcXJ0KGEqYStvKm8rcypzKSk/KGEqPWQ9MS9kLG8qPWQscyo9ZCk6KGE9MCxv PTAscz0wKTtsPWgqcy1wKm8sYz1wKmEtZipzLHU9ZipvLWgqYSwoZD1NYXRoLnNxcnQobCps K2MqYyt1KnUpKT8obCo9ZD0xL2QsYyo9ZCx1Kj1kKToobD0wLGM9MCx1PTApO3JldHVybiB0 WzBdPWEsdFsxXT1sLHRbMl09Zix0WzNdPTAsdFs0XT1vLHRbNV09Yyx0WzZdPWgsdFs3XT0w LHRbOF09cyx0WzldPXUsdFsxMF09cCx0WzExXT0wLHRbMTJdPS0oYSptK28qZytzKnYpLHRb MTNdPS0obCptK2MqZyt1KnYpLHRbMTRdPS0oZiptK2gqZytwKnYpLHRbMTVdPTEsdH19LHsi Li9pZGVudGl0eSI6OTd9XSwxMDA6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rp b24odCxlLHIpe3ZhciBuPWVbMF0saT1lWzFdLGE9ZVsyXSxvPWVbM10scz1lWzRdLGw9ZVs1 XSxjPWVbNl0sdT1lWzddLGY9ZVs4XSxoPWVbOV0scD1lWzEwXSxkPWVbMTFdLG09ZVsxMl0s Zz1lWzEzXSx2PWVbMTRdLHk9ZVsxNV0seD1yWzBdLGI9clsxXSxfPXJbMl0sdz1yWzNdO3Jl dHVybiB0WzBdPXgqbitiKnMrXypmK3cqbSx0WzFdPXgqaStiKmwrXypoK3cqZyx0WzJdPXgq YStiKmMrXypwK3cqdix0WzNdPXgqbytiKnUrXypkK3cqeSx4PXJbNF0sYj1yWzVdLF89cls2 XSx3PXJbN10sdFs0XT14Km4rYipzK18qZit3Km0sdFs1XT14KmkrYipsK18qaCt3KmcsdFs2 XT14KmErYipjK18qcCt3KnYsdFs3XT14Km8rYip1K18qZCt3KnkseD1yWzhdLGI9cls5XSxf PXJbMTBdLHc9clsxMV0sdFs4XT14Km4rYipzK18qZit3Km0sdFs5XT14KmkrYipsK18qaCt3 KmcsdFsxMF09eCphK2IqYytfKnArdyp2LHRbMTFdPXgqbytiKnUrXypkK3cqeSx4PXJbMTJd LGI9clsxM10sXz1yWzE0XSx3PXJbMTVdLHRbMTJdPXgqbitiKnMrXypmK3cqbSx0WzEzXT14 KmkrYipsK18qaCt3KmcsdFsxNF09eCphK2IqYytfKnArdyp2LHRbMTVdPXgqbytiKnUrXypk K3cqeSx0fX0se31dLDEwMTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUscixuLGksYSxvKXt2YXIgcz0xLyhlLXIpLGw9MS8obi1pKSxjPTEvKGEtbyk7cmV0dXJu IHRbMF09LTIqcyx0WzFdPTAsdFsyXT0wLHRbM109MCx0WzRdPTAsdFs1XT0tMipsLHRbNl09 MCx0WzddPTAsdFs4XT0wLHRbOV09MCx0WzEwXT0yKmMsdFsxMV09MCx0WzEyXT0oZStyKSpz LHRbMTNdPShpK24pKmwsdFsxNF09KG8rYSkqYyx0WzE1XT0xLHR9fSx7fV0sMTAyOltmdW5j dGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4saSl7dmFyIGE9MS9NYXRo LnRhbihlLzIpLG89MS8obi1pKTtyZXR1cm4gdFswXT1hL3IsdFsxXT0wLHRbMl09MCx0WzNd PTAsdFs0XT0wLHRbNV09YSx0WzZdPTAsdFs3XT0wLHRbOF09MCx0WzldPTAsdFsxMF09KGkr bikqbyx0WzExXT0tMSx0WzEyXT0wLHRbMTNdPTAsdFsxNF09MippKm4qbyx0WzE1XT0wLHR9 fSx7fV0sMTAzOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4p e3ZhciBpLGEsbyxzLGwsYyx1LGYsaCxwLGQsbSxnLHYseSx4LGIsXyx3LFQsayxBLE0sUyxF PW5bMF0sTD1uWzFdLEM9blsyXSxQPU1hdGguc3FydChFKkUrTCpMK0MqQyk7aWYoTWF0aC5h YnMoUCk8MWUtNilyZXR1cm4gbnVsbDtFKj1QPTEvUCxMKj1QLEMqPVAsaT1NYXRoLnNpbihy KSxhPU1hdGguY29zKHIpLG89MS1hLHM9ZVswXSxsPWVbMV0sYz1lWzJdLHU9ZVszXSxmPWVb NF0saD1lWzVdLHA9ZVs2XSxkPWVbN10sbT1lWzhdLGc9ZVs5XSx2PWVbMTBdLHk9ZVsxMV0s eD1FKkUqbythLGI9TCpFKm8rQyppLF89QypFKm8tTCppLHc9RSpMKm8tQyppLFQ9TCpMKm8r YSxrPUMqTCpvK0UqaSxBPUUqQypvK0wqaSxNPUwqQypvLUUqaSxTPUMqQypvK2EsdFswXT1z KngrZipiK20qXyx0WzFdPWwqeCtoKmIrZypfLHRbMl09Yyp4K3AqYit2Kl8sdFszXT11Kngr ZCpiK3kqXyx0WzRdPXMqdytmKlQrbSprLHRbNV09bCp3K2gqVCtnKmssdFs2XT1jKncrcCpU K3Yqayx0WzddPXUqdytkKlQreSprLHRbOF09cypBK2YqTSttKlMsdFs5XT1sKkEraCpNK2cq Uyx0WzEwXT1jKkErcCpNK3YqUyx0WzExXT11KkErZCpNK3kqUyxlIT09dCYmKHRbMTJdPWVb MTJdLHRbMTNdPWVbMTNdLHRbMTRdPWVbMTRdLHRbMTVdPWVbMTVdKTtyZXR1cm4gdH19LHt9 XSwxMDQ6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBu PU1hdGguc2luKHIpLGk9TWF0aC5jb3MociksYT1lWzRdLG89ZVs1XSxzPWVbNl0sbD1lWzdd LGM9ZVs4XSx1PWVbOV0sZj1lWzEwXSxoPWVbMTFdO2UhPT10JiYodFswXT1lWzBdLHRbMV09 ZVsxXSx0WzJdPWVbMl0sdFszXT1lWzNdLHRbMTJdPWVbMTJdLHRbMTNdPWVbMTNdLHRbMTRd PWVbMTRdLHRbMTVdPWVbMTVdKTtyZXR1cm4gdFs0XT1hKmkrYypuLHRbNV09byppK3Uqbix0 WzZdPXMqaStmKm4sdFs3XT1sKmkraCpuLHRbOF09YyppLWEqbix0WzldPXUqaS1vKm4sdFsx MF09ZippLXMqbix0WzExXT1oKmktbCpuLHR9fSx7fV0sMTA1OltmdW5jdGlvbih0LGUscil7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1NYXRoLnNpbihyKSxpPU1hdGguY29z KHIpLGE9ZVswXSxvPWVbMV0scz1lWzJdLGw9ZVszXSxjPWVbOF0sdT1lWzldLGY9ZVsxMF0s aD1lWzExXTtlIT09dCYmKHRbNF09ZVs0XSx0WzVdPWVbNV0sdFs2XT1lWzZdLHRbN109ZVs3 XSx0WzEyXT1lWzEyXSx0WzEzXT1lWzEzXSx0WzE0XT1lWzE0XSx0WzE1XT1lWzE1XSk7cmV0 dXJuIHRbMF09YSppLWMqbix0WzFdPW8qaS11Km4sdFsyXT1zKmktZipuLHRbM109bCppLWgq bix0WzhdPWEqbitjKmksdFs5XT1vKm4rdSppLHRbMTBdPXMqbitmKmksdFsxMV09bCpuK2gq aSx0fX0se31dLDEwNjpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUs cil7dmFyIG49TWF0aC5zaW4ociksaT1NYXRoLmNvcyhyKSxhPWVbMF0sbz1lWzFdLHM9ZVsy XSxsPWVbM10sYz1lWzRdLHU9ZVs1XSxmPWVbNl0saD1lWzddO2UhPT10JiYodFs4XT1lWzhd LHRbOV09ZVs5XSx0WzEwXT1lWzEwXSx0WzExXT1lWzExXSx0WzEyXT1lWzEyXSx0WzEzXT1l WzEzXSx0WzE0XT1lWzE0XSx0WzE1XT1lWzE1XSk7cmV0dXJuIHRbMF09YSppK2Mqbix0WzFd PW8qaSt1Km4sdFsyXT1zKmkrZipuLHRbM109bCppK2gqbix0WzRdPWMqaS1hKm4sdFs1XT11 KmktbypuLHRbNl09ZippLXMqbix0WzddPWgqaS1sKm4sdH19LHt9XSwxMDc6W2Z1bmN0aW9u KHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXJbMF0saT1yWzFdLGE9 clsyXTtyZXR1cm4gdFswXT1lWzBdKm4sdFsxXT1lWzFdKm4sdFsyXT1lWzJdKm4sdFszXT1l WzNdKm4sdFs0XT1lWzRdKmksdFs1XT1lWzVdKmksdFs2XT1lWzZdKmksdFs3XT1lWzddKmks dFs4XT1lWzhdKmEsdFs5XT1lWzldKmEsdFsxMF09ZVsxMF0qYSx0WzExXT1lWzExXSphLHRb MTJdPWVbMTJdLHRbMTNdPWVbMTNdLHRbMTRdPWVbMTRdLHRbMTVdPWVbMTVdLHR9fSx7fV0s MTA4OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixp LGEsbyxzLGwsYyx1LGYsaCxwLGQsbT1yWzBdLGc9clsxXSx2PXJbMl07ZT09PXQ/KHRbMTJd PWVbMF0qbStlWzRdKmcrZVs4XSp2K2VbMTJdLHRbMTNdPWVbMV0qbStlWzVdKmcrZVs5XSp2 K2VbMTNdLHRbMTRdPWVbMl0qbStlWzZdKmcrZVsxMF0qditlWzE0XSx0WzE1XT1lWzNdKm0r ZVs3XSpnK2VbMTFdKnYrZVsxNV0pOihuPWVbMF0saT1lWzFdLGE9ZVsyXSxvPWVbM10scz1l WzRdLGw9ZVs1XSxjPWVbNl0sdT1lWzddLGY9ZVs4XSxoPWVbOV0scD1lWzEwXSxkPWVbMTFd LHRbMF09bix0WzFdPWksdFsyXT1hLHRbM109byx0WzRdPXMsdFs1XT1sLHRbNl09Yyx0Wzdd PXUsdFs4XT1mLHRbOV09aCx0WzEwXT1wLHRbMTFdPWQsdFsxMl09biptK3MqZytmKnYrZVsx Ml0sdFsxM109aSptK2wqZytoKnYrZVsxM10sdFsxNF09YSptK2MqZytwKnYrZVsxNF0sdFsx NV09byptK3UqZytkKnYrZVsxNV0pO3JldHVybiB0fX0se31dLDEwOTpbZnVuY3Rpb24odCxl LHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKHQ9PT1lKXt2YXIgcj1lWzFdLG49ZVsy XSxpPWVbM10sYT1lWzZdLG89ZVs3XSxzPWVbMTFdO3RbMV09ZVs0XSx0WzJdPWVbOF0sdFsz XT1lWzEyXSx0WzRdPXIsdFs2XT1lWzldLHRbN109ZVsxM10sdFs4XT1uLHRbOV09YSx0WzEx XT1lWzE0XSx0WzEyXT1pLHRbMTNdPW8sdFsxNF09c31lbHNlIHRbMF09ZVswXSx0WzFdPWVb NF0sdFsyXT1lWzhdLHRbM109ZVsxMl0sdFs0XT1lWzFdLHRbNV09ZVs1XSx0WzZdPWVbOV0s dFs3XT1lWzEzXSx0WzhdPWVbMl0sdFs5XT1lWzZdLHRbMTBdPWVbMTBdLHRbMTFdPWVbMTRd LHRbMTJdPWVbM10sdFsxM109ZVs3XSx0WzE0XT1lWzExXSx0WzE1XT1lWzE1XTtyZXR1cm4g dH19LHt9XSwxMTA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiYmFy eWNlbnRyaWMiKSxpPXQoInBvbHl0b3BlLWNsb3Nlc3QtcG9pbnQvbGliL2Nsb3Nlc3RfcG9p bnRfMmQuanMiKTtmdW5jdGlvbiBhKHQsZSl7Zm9yKHZhciByPVswLDAsMCwwXSxuPTA7bjw0 Oysrbilmb3IodmFyIGk9MDtpPDQ7KytpKXJbaV0rPXRbNCpuK2ldKmVbbl07cmV0dXJuIHJ9 ZnVuY3Rpb24gbyh0LGUscixuLGkpe2Zvcih2YXIgbz1hKG4sYShyLGEoZSxbdFswXSx0WzFd LHRbMl0sMV0pKSkscz0wO3M8MzsrK3Mpb1tzXS89b1szXTtyZXR1cm5bLjUqaVswXSooMStv WzBdKSwuNSppWzFdKigxLW9bMV0pXX1mdW5jdGlvbiBzKHQsZSl7Zm9yKHZhciByPVswLDAs MF0sbj0wO248dC5sZW5ndGg7KytuKWZvcih2YXIgaT10W25dLGE9ZVtuXSxvPTA7bzwzOysr bylyW29dKz1hKmlbb107cmV0dXJuIHJ9ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGEsbCxj KXtpZigxPT09dC5sZW5ndGgpcmV0dXJuWzAsdFswXS5zbGljZSgpXTtmb3IodmFyIHU9bmV3 IEFycmF5KHQubGVuZ3RoKSxmPTA7Zjx0Lmxlbmd0aDsrK2YpdVtmXT1vKHRbZl0scixhLGws Yyk7dmFyIGg9MCxwPTEvMDtmb3IoZj0wO2Y8dS5sZW5ndGg7KytmKXtmb3IodmFyIGQ9MCxt PTA7bTwyOysrbSlkKz1NYXRoLnBvdyh1W2ZdW21dLWVbbV0sMik7ZDxwJiYocD1kLGg9Zil9 dmFyIGc9ZnVuY3Rpb24odCxlKXtpZigyPT09dC5sZW5ndGgpe2Zvcih2YXIgcj0wLGE9MCxv PTA7bzwyOysrbylyKz1NYXRoLnBvdyhlW29dLXRbMF1bb10sMiksYSs9TWF0aC5wb3coZVtv XS10WzFdW29dLDIpO3JldHVybiByPU1hdGguc3FydChyKSxhPU1hdGguc3FydChhKSxyK2E8 MWUtNj9bMSwwXTpbYS8ocithKSxyLyhhK3IpXX1pZigzPT09dC5sZW5ndGgpe3ZhciBzPVsw LDBdO3JldHVybiBpKHRbMF0sdFsxXSx0WzJdLGUscyksbih0LHMpfXJldHVybltdfSh1LGUp LHY9MDtmb3IoZj0wO2Y8MzsrK2Ype2lmKGdbZl08LS4wMDF8fGdbZl0+MS4wMDAxKXJldHVy biBudWxsO3YrPWdbZl19aWYoTWF0aC5hYnModi0xKT4uMDAxKXJldHVybiBudWxsO3JldHVy bltoLHModCxnKSxnXX19LHtiYXJ5Y2VudHJpYzoxNCwicG9seXRvcGUtY2xvc2VzdC1wb2lu dC9saWIvY2xvc2VzdF9wb2ludF8yZC5qcyI6MjcwfV0sMTExOltmdW5jdGlvbih0LGUscil7 dmFyIG49dCgiZ2xzbGlmeSIpLGk9bihbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZp bmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uLCBub3JtYWw7XG5hdHRy aWJ1dGUgdmVjNCBjb2xvcjtcbmF0dHJpYnV0ZSB2ZWMyIHV2O1xuXG51bmlmb3JtIG1hdDQg bW9kZWxcbiAgICAgICAgICAgLCB2aWV3XG4gICAgICAgICAgICwgcHJvamVjdGlvblxuICAg ICAgICAgICAsIGludmVyc2VNb2RlbDtcbnVuaWZvcm0gdmVjMyBleWVQb3NpdGlvblxuICAg ICAgICAgICAsIGxpZ2h0UG9zaXRpb247XG5cbnZhcnlpbmcgdmVjMyBmX25vcm1hbFxuICAg ICAgICAgICAsIGZfbGlnaHREaXJlY3Rpb25cbiAgICAgICAgICAgLCBmX2V5ZURpcmVjdGlv blxuICAgICAgICAgICAsIGZfZGF0YTtcbnZhcnlpbmcgdmVjNCBmX2NvbG9yO1xudmFyeWlu ZyB2ZWMyIGZfdXY7XG5cbnZlYzQgcHJvamVjdCh2ZWMzIHApIHtcbiAgcmV0dXJuIHByb2pl Y3Rpb24gKiB2aWV3ICogbW9kZWwgKiB2ZWM0KHAsIDEuMCk7XG59XG5cbnZvaWQgbWFpbigp IHtcbiAgZ2xfUG9zaXRpb24gICAgICA9IHByb2plY3QocG9zaXRpb24pO1xuXG4gIC8vTGln aHRpbmcgZ2VvbWV0cnkgcGFyYW1ldGVyc1xuICB2ZWM0IGNhbWVyYUNvb3JkaW5hdGUgPSB2 aWV3ICogdmVjNChwb3NpdGlvbiAsIDEuMCk7XG4gIGNhbWVyYUNvb3JkaW5hdGUueHl6IC89 IGNhbWVyYUNvb3JkaW5hdGUudztcbiAgZl9saWdodERpcmVjdGlvbiA9IGxpZ2h0UG9zaXRp b24gLSBjYW1lcmFDb29yZGluYXRlLnh5ejtcbiAgZl9leWVEaXJlY3Rpb24gICA9IGV5ZVBv c2l0aW9uIC0gY2FtZXJhQ29vcmRpbmF0ZS54eXo7XG4gIGZfbm9ybWFsICA9IG5vcm1hbGl6 ZSgodmVjNChub3JtYWwsIDAuMCkgKiBpbnZlcnNlTW9kZWwpLnh5eik7XG5cbiAgZl9jb2xv ciAgICAgICAgICA9IGNvbG9yO1xuICBmX2RhdGEgICAgICAgICAgID0gcG9zaXRpb247XG4g IGZfdXYgICAgICAgICAgICAgPSB1djtcbn1cbiJdKSxhPW4oWyIjZXh0ZW5zaW9uIEdMX09F U19zdGFuZGFyZF9kZXJpdmF0aXZlcyA6IGVuYWJsZVxuXG5wcmVjaXNpb24gaGlnaHAgZmxv YXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5mbG9hdCBiZWNrbWFubkRpc3RyaWJ1dGlvbihm bG9hdCB4LCBmbG9hdCByb3VnaG5lc3MpIHtcbiAgZmxvYXQgTmRvdEggPSBtYXgoeCwgMC4w MDAxKTtcbiAgZmxvYXQgY29zMkFscGhhID0gTmRvdEggKiBOZG90SDtcbiAgZmxvYXQgdGFu MkFscGhhID0gKGNvczJBbHBoYSAtIDEuMCkgLyBjb3MyQWxwaGE7XG4gIGZsb2F0IHJvdWdo bmVzczIgPSByb3VnaG5lc3MgKiByb3VnaG5lc3M7XG4gIGZsb2F0IGRlbm9tID0gMy4xNDE1 OTI2NTM1ODk3OTMgKiByb3VnaG5lc3MyICogY29zMkFscGhhICogY29zMkFscGhhO1xuICBy ZXR1cm4gZXhwKHRhbjJBbHBoYSAvIHJvdWdobmVzczIpIC8gZGVub207XG59XG5cbmZsb2F0 IGNvb2tUb3JyYW5jZVNwZWN1bGFyKFxuICB2ZWMzIGxpZ2h0RGlyZWN0aW9uLFxuICB2ZWMz IHZpZXdEaXJlY3Rpb24sXG4gIHZlYzMgc3VyZmFjZU5vcm1hbCxcbiAgZmxvYXQgcm91Z2hu ZXNzLFxuICBmbG9hdCBmcmVzbmVsKSB7XG5cbiAgZmxvYXQgVmRvdE4gPSBtYXgoZG90KHZp ZXdEaXJlY3Rpb24sIHN1cmZhY2VOb3JtYWwpLCAwLjApO1xuICBmbG9hdCBMZG90TiA9IG1h eChkb3QobGlnaHREaXJlY3Rpb24sIHN1cmZhY2VOb3JtYWwpLCAwLjApO1xuXG4gIC8vSGFs ZiBhbmdsZSB2ZWN0b3JcbiAgdmVjMyBIID0gbm9ybWFsaXplKGxpZ2h0RGlyZWN0aW9uICsg dmlld0RpcmVjdGlvbik7XG5cbiAgLy9HZW9tZXRyaWMgdGVybVxuICBmbG9hdCBOZG90SCA9 IG1heChkb3Qoc3VyZmFjZU5vcm1hbCwgSCksIDAuMCk7XG4gIGZsb2F0IFZkb3RIID0gbWF4 KGRvdCh2aWV3RGlyZWN0aW9uLCBIKSwgMC4wMDAwMDEpO1xuICBmbG9hdCBMZG90SCA9IG1h eChkb3QobGlnaHREaXJlY3Rpb24sIEgpLCAwLjAwMDAwMSk7XG4gIGZsb2F0IEcxID0gKDIu MCAqIE5kb3RIICogVmRvdE4pIC8gVmRvdEg7XG4gIGZsb2F0IEcyID0gKDIuMCAqIE5kb3RI ICogTGRvdE4pIC8gTGRvdEg7XG4gIGZsb2F0IEcgPSBtaW4oMS4wLCBtaW4oRzEsIEcyKSk7 XG4gIFxuICAvL0Rpc3RyaWJ1dGlvbiB0ZXJtXG4gIGZsb2F0IEQgPSBiZWNrbWFubkRpc3Ry aWJ1dGlvbihOZG90SCwgcm91Z2huZXNzKTtcblxuICAvL0ZyZXNuZWwgdGVybVxuICBmbG9h dCBGID0gcG93KDEuMCAtIFZkb3ROLCBmcmVzbmVsKTtcblxuICAvL011bHRpcGx5IHRlcm1z IGFuZCBkb25lXG4gIHJldHVybiAgRyAqIEYgKiBEIC8gbWF4KDMuMTQxNTkyNjUgKiBWZG90 TiwgMC4wMDAwMDEpO1xufVxuXG4vLyNwcmFnbWEgZ2xzbGlmeTogYmVja21hbm4gPSByZXF1 aXJlKGdsc2wtc3BlY3VsYXItYmVja21hbm4pIC8vIHVzZWQgaW4gZ2wtc3VyZmFjZTNkXG5c bmJvb2wgb3V0T2ZSYW5nZShmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBwKSB7XG4gIHJldHVy biAoKHAgPiBtYXgoYSwgYikpIHx8IFxuICAgICAgICAgIChwIDwgbWluKGEsIGIpKSk7XG59 XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMyIGEsIHZlYzIgYiwgdmVjMiBwKSB7XG4gIHJldHVy biAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2Uo YS55LCBiLnksIHAueSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMyBhLCB2ZWMzIGIs IHZlYzMgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAg ICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpIHx8XG4gICAgICAgICAgb3V0T2ZS YW5nZShhLnosIGIueiwgcC56KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWM0IGEsIHZl YzQgYiwgdmVjNCBwKSB7XG4gIHJldHVybiBvdXRPZlJhbmdlKGEueHl6LCBiLnh5eiwgcC54 eXopO1xufVxuXG51bmlmb3JtIHZlYzMgY2xpcEJvdW5kc1syXTtcbnVuaWZvcm0gZmxvYXQg cm91Z2huZXNzXG4gICAgICAgICAgICAsIGZyZXNuZWxcbiAgICAgICAgICAgICwga2FtYmll bnRcbiAgICAgICAgICAgICwga2RpZmZ1c2VcbiAgICAgICAgICAgICwga3NwZWN1bGFyO1xu dW5pZm9ybSBzYW1wbGVyMkQgdGV4dHVyZTtcblxudmFyeWluZyB2ZWMzIGZfbm9ybWFsXG4g ICAgICAgICAgICwgZl9saWdodERpcmVjdGlvblxuICAgICAgICAgICAsIGZfZXllRGlyZWN0 aW9uXG4gICAgICAgICAgICwgZl9kYXRhO1xudmFyeWluZyB2ZWM0IGZfY29sb3I7XG52YXJ5 aW5nIHZlYzIgZl91djtcblxudm9pZCBtYWluKCkge1xuICBpZiAoZl9jb2xvci5hID09IDAu MCB8fFxuICAgIG91dE9mUmFuZ2UoY2xpcEJvdW5kc1swXSwgY2xpcEJvdW5kc1sxXSwgZl9k YXRhKVxuICApIGRpc2NhcmQ7XG5cbiAgdmVjMyBOID0gbm9ybWFsaXplKGZfbm9ybWFsKTtc biAgdmVjMyBMID0gbm9ybWFsaXplKGZfbGlnaHREaXJlY3Rpb24pO1xuICB2ZWMzIFYgPSBu b3JtYWxpemUoZl9leWVEaXJlY3Rpb24pO1xuXG4gIGlmKGdsX0Zyb250RmFjaW5nKSB7XG4g ICAgTiA9IC1OO1xuICB9XG5cbiAgZmxvYXQgc3BlY3VsYXIgPSBtaW4oMS4wLCBtYXgoMC4w LCBjb29rVG9ycmFuY2VTcGVjdWxhcihMLCBWLCBOLCByb3VnaG5lc3MsIGZyZXNuZWwpKSk7 XG4gIC8vZmxvYXQgc3BlY3VsYXIgPSBtYXgoMC4wLCBiZWNrbWFubihMLCBWLCBOLCByb3Vn aG5lc3MpKTsgLy8gdXNlZCBpbiBnbC1zdXJmYWNlM2RcblxuICBmbG9hdCBkaWZmdXNlICA9 IG1pbihrYW1iaWVudCArIGtkaWZmdXNlICogbWF4KGRvdChOLCBMKSwgMC4wKSwgMS4wKTtc blxuICB2ZWM0IHN1cmZhY2VDb2xvciA9IHZlYzQoZl9jb2xvci5yZ2IsIDEuMCkgKiB0ZXh0 dXJlMkQodGV4dHVyZSwgZl91dik7XG4gIHZlYzQgbGl0Q29sb3IgPSBzdXJmYWNlQ29sb3Iu YSAqIHZlYzQoZGlmZnVzZSAqIHN1cmZhY2VDb2xvci5yZ2IgKyBrc3BlY3VsYXIgKiB2ZWMz KDEsMSwxKSAqIHNwZWN1bGFyLCAgMS4wKTtcblxuICBnbF9GcmFnQ29sb3IgPSBsaXRDb2xv ciAqIGZfY29sb3IuYTtcbn1cbiJdKSxvPW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4j ZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjtcbmF0dHJpYnV0 ZSB2ZWM0IGNvbG9yO1xuYXR0cmlidXRlIHZlYzIgdXY7XG5cbnVuaWZvcm0gbWF0NCBtb2Rl bCwgdmlldywgcHJvamVjdGlvbjtcblxudmFyeWluZyB2ZWM0IGZfY29sb3I7XG52YXJ5aW5n IHZlYzMgZl9kYXRhO1xudmFyeWluZyB2ZWMyIGZfdXY7XG5cbnZvaWQgbWFpbigpIHtcbiAg Z2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uICogdmlldyAqIG1vZGVsICogdmVjNChwb3NpdGlv biwgMS4wKTtcbiAgZl9jb2xvciA9IGNvbG9yO1xuICBmX2RhdGEgID0gcG9zaXRpb247XG4g IGZfdXYgICAgPSB1djtcbn0iXSkscz1uKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2Rl ZmluZSBHTFNMSUZZIDFcblxuYm9vbCBvdXRPZlJhbmdlKGZsb2F0IGEsIGZsb2F0IGIsIGZs b2F0IHApIHtcbiAgcmV0dXJuICgocCA+IG1heChhLCBiKSkgfHwgXG4gICAgICAgICAgKHAg PCBtaW4oYSwgYikpKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzIgYSwgdmVjMiBiLCB2 ZWMyIHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAg ICAgICAgb3V0T2ZSYW5nZShhLnksIGIueSwgcC55KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5n ZSh2ZWMzIGEsIHZlYzMgYiwgdmVjMyBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngs IGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkgfHxc biAgICAgICAgICBvdXRPZlJhbmdlKGEueiwgYi56LCBwLnopKTtcbn1cblxuYm9vbCBvdXRP ZlJhbmdlKHZlYzQgYSwgdmVjNCBiLCB2ZWM0IHApIHtcbiAgcmV0dXJuIG91dE9mUmFuZ2Uo YS54eXosIGIueHl6LCBwLnh5eik7XG59XG5cbnVuaWZvcm0gdmVjMyBjbGlwQm91bmRzWzJd O1xudW5pZm9ybSBzYW1wbGVyMkQgdGV4dHVyZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtc blxudmFyeWluZyB2ZWM0IGZfY29sb3I7XG52YXJ5aW5nIHZlYzMgZl9kYXRhO1xudmFyeWlu ZyB2ZWMyIGZfdXY7XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYgKG91dE9mUmFuZ2UoY2xpcEJv dW5kc1swXSwgY2xpcEJvdW5kc1sxXSwgZl9kYXRhKSkgZGlzY2FyZDtcblxuICBnbF9GcmFn Q29sb3IgPSBmX2NvbG9yICogdGV4dHVyZTJEKHRleHR1cmUsIGZfdXYpICogb3BhY2l0eTtc bn0iXSksbD1uKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFc blxuYm9vbCBvdXRPZlJhbmdlKGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IHApIHtcbiAgcmV0 dXJuICgocCA+IG1heChhLCBiKSkgfHwgXG4gICAgICAgICAgKHAgPCBtaW4oYSwgYikpKTtc bn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzIgYSwgdmVjMiBiLCB2ZWMyIHApIHtcbiAgcmV0 dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5n ZShhLnksIGIueSwgcC55KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMzIGEsIHZlYzMg YiwgdmVjMyBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxu ICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkgfHxcbiAgICAgICAgICBvdXRP ZlJhbmdlKGEueiwgYi56LCBwLnopKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzQgYSwg dmVjNCBiLCB2ZWM0IHApIHtcbiAgcmV0dXJuIG91dE9mUmFuZ2UoYS54eXosIGIueHl6LCBw Lnh5eik7XG59XG5cbmF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uO1xuYXR0cmlidXRlIHZlYzQg Y29sb3I7XG5hdHRyaWJ1dGUgdmVjMiB1djtcbmF0dHJpYnV0ZSBmbG9hdCBwb2ludFNpemU7 XG5cbnVuaWZvcm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlvbjtcbnVuaWZvcm0gdmVj MyBjbGlwQm91bmRzWzJdO1xuXG52YXJ5aW5nIHZlYzQgZl9jb2xvcjtcbnZhcnlpbmcgdmVj MiBmX3V2O1xuXG52b2lkIG1haW4oKSB7XG4gIGlmIChvdXRPZlJhbmdlKGNsaXBCb3VuZHNb MF0sIGNsaXBCb3VuZHNbMV0sIHBvc2l0aW9uKSkge1xuXG4gICAgZ2xfUG9zaXRpb24gPSB2 ZWM0KDAuMCwgMC4wICwwLjAgLDAuMCk7XG4gIH0gZWxzZSB7XG4gICAgZ2xfUG9zaXRpb24g PSBwcm9qZWN0aW9uICogdmlldyAqIG1vZGVsICogdmVjNChwb3NpdGlvbiwgMS4wKTtcbiAg fVxuICBnbF9Qb2ludFNpemUgPSBwb2ludFNpemU7XG4gIGZfY29sb3IgPSBjb2xvcjtcbiAg Zl91diA9IHV2O1xufSJdKSxjPW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5l IEdMU0xJRlkgMVxuXG51bmlmb3JtIHNhbXBsZXIyRCB0ZXh0dXJlO1xudW5pZm9ybSBmbG9h dCBvcGFjaXR5O1xuXG52YXJ5aW5nIHZlYzQgZl9jb2xvcjtcbnZhcnlpbmcgdmVjMiBmX3V2 O1xuXG52b2lkIG1haW4oKSB7XG4gIHZlYzIgcG9pbnRSID0gZ2xfUG9pbnRDb29yZC54eSAt IHZlYzIoMC41LCAwLjUpO1xuICBpZihkb3QocG9pbnRSLCBwb2ludFIpID4gMC4yNSkge1xu ICAgIGRpc2NhcmQ7XG4gIH1cbiAgZ2xfRnJhZ0NvbG9yID0gZl9jb2xvciAqIHRleHR1cmUy RCh0ZXh0dXJlLCBmX3V2KSAqIG9wYWNpdHk7XG59Il0pLHU9bihbInByZWNpc2lvbiBoaWdo cCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9u O1xuYXR0cmlidXRlIHZlYzQgaWQ7XG5cbnVuaWZvcm0gbWF0NCBtb2RlbCwgdmlldywgcHJv amVjdGlvbjtcblxudmFyeWluZyB2ZWMzIGZfcG9zaXRpb247XG52YXJ5aW5nIHZlYzQgZl9p ZDtcblxudm9pZCBtYWluKCkge1xuICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb24gKiB2aWV3 ICogbW9kZWwgKiB2ZWM0KHBvc2l0aW9uLCAxLjApO1xuICBmX2lkICAgICAgICA9IGlkO1xu ICBmX3Bvc2l0aW9uICA9IHBvc2l0aW9uO1xufSJdKSxmPW4oWyJwcmVjaXNpb24gaGlnaHAg ZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5ib29sIG91dE9mUmFuZ2UoZmxvYXQgYSwg ZmxvYXQgYiwgZmxvYXQgcCkge1xuICByZXR1cm4gKChwID4gbWF4KGEsIGIpKSB8fCBcbiAg ICAgICAgICAocCA8IG1pbihhLCBiKSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMiBh LCB2ZWMyIGIsIHZlYzIgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAu eCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpKTtcbn1cblxuYm9v bCBvdXRPZlJhbmdlKHZlYzMgYSwgdmVjMyBiLCB2ZWMzIHApIHtcbiAgcmV0dXJuIChvdXRP ZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIu eSwgcC55KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS56LCBiLnosIHAueikpO1xufVxu XG5ib29sIG91dE9mUmFuZ2UodmVjNCBhLCB2ZWM0IGIsIHZlYzQgcCkge1xuICByZXR1cm4g b3V0T2ZSYW5nZShhLnh5eiwgYi54eXosIHAueHl6KTtcbn1cblxudW5pZm9ybSB2ZWMzICBj bGlwQm91bmRzWzJdO1xudW5pZm9ybSBmbG9hdCBwaWNrSWQ7XG5cbnZhcnlpbmcgdmVjMyBm X3Bvc2l0aW9uO1xudmFyeWluZyB2ZWM0IGZfaWQ7XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYg KG91dE9mUmFuZ2UoY2xpcEJvdW5kc1swXSwgY2xpcEJvdW5kc1sxXSwgZl9wb3NpdGlvbikp IGRpc2NhcmQ7XG5cbiAgZ2xfRnJhZ0NvbG9yID0gdmVjNChwaWNrSWQsIGZfaWQueHl6KTtc bn0iXSksaD1uKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFc blxuYm9vbCBvdXRPZlJhbmdlKGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IHApIHtcbiAgcmV0 dXJuICgocCA+IG1heChhLCBiKSkgfHwgXG4gICAgICAgICAgKHAgPCBtaW4oYSwgYikpKTtc bn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzIgYSwgdmVjMiBiLCB2ZWMyIHApIHtcbiAgcmV0 dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5n ZShhLnksIGIueSwgcC55KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMzIGEsIHZlYzMg YiwgdmVjMyBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxu ICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkgfHxcbiAgICAgICAgICBvdXRP ZlJhbmdlKGEueiwgYi56LCBwLnopKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzQgYSwg dmVjNCBiLCB2ZWM0IHApIHtcbiAgcmV0dXJuIG91dE9mUmFuZ2UoYS54eXosIGIueHl6LCBw Lnh5eik7XG59XG5cbmF0dHJpYnV0ZSB2ZWMzICBwb3NpdGlvbjtcbmF0dHJpYnV0ZSBmbG9h dCBwb2ludFNpemU7XG5hdHRyaWJ1dGUgdmVjNCAgaWQ7XG5cbnVuaWZvcm0gbWF0NCBtb2Rl bCwgdmlldywgcHJvamVjdGlvbjtcbnVuaWZvcm0gdmVjMyBjbGlwQm91bmRzWzJdO1xuXG52 YXJ5aW5nIHZlYzMgZl9wb3NpdGlvbjtcbnZhcnlpbmcgdmVjNCBmX2lkO1xuXG52b2lkIG1h aW4oKSB7XG4gIGlmIChvdXRPZlJhbmdlKGNsaXBCb3VuZHNbMF0sIGNsaXBCb3VuZHNbMV0s IHBvc2l0aW9uKSkge1xuXG4gICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDAuMCwgMC4wLCAwLjAs IDAuMCk7XG4gIH0gZWxzZSB7XG4gICAgZ2xfUG9zaXRpb24gID0gcHJvamVjdGlvbiAqIHZp ZXcgKiBtb2RlbCAqIHZlYzQocG9zaXRpb24sIDEuMCk7XG4gICAgZ2xfUG9pbnRTaXplID0g cG9pbnRTaXplO1xuICB9XG4gIGZfaWQgICAgICAgICA9IGlkO1xuICBmX3Bvc2l0aW9uICAg PSBwb3NpdGlvbjtcbn0iXSkscD1uKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmlu ZSBHTFNMSUZZIDFcblxuYXR0cmlidXRlIHZlYzMgcG9zaXRpb247XG5cbnVuaWZvcm0gbWF0 NCBtb2RlbCwgdmlldywgcHJvamVjdGlvbjtcblxudm9pZCBtYWluKCkge1xuICBnbF9Qb3Np dGlvbiA9IHByb2plY3Rpb24gKiB2aWV3ICogbW9kZWwgKiB2ZWM0KHBvc2l0aW9uLCAxLjAp O1xufSJdKSxkPW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkg MVxuXG51bmlmb3JtIHZlYzMgY29udG91ckNvbG9yO1xuXG52b2lkIG1haW4oKSB7XG4gIGds X0ZyYWdDb2xvciA9IHZlYzQoY29udG91ckNvbG9yLCAxLjApO1xufVxuIl0pO3IubWVzaFNo YWRlcj17dmVydGV4OmksZnJhZ21lbnQ6YSxhdHRyaWJ1dGVzOlt7bmFtZToicG9zaXRpb24i LHR5cGU6InZlYzMifSx7bmFtZToibm9ybWFsIix0eXBlOiJ2ZWMzIn0se25hbWU6ImNvbG9y Iix0eXBlOiJ2ZWM0In0se25hbWU6InV2Iix0eXBlOiJ2ZWMyIn1dfSxyLndpcmVTaGFkZXI9 e3ZlcnRleDpvLGZyYWdtZW50OnMsYXR0cmlidXRlczpbe25hbWU6InBvc2l0aW9uIix0eXBl OiJ2ZWMzIn0se25hbWU6ImNvbG9yIix0eXBlOiJ2ZWM0In0se25hbWU6InV2Iix0eXBlOiJ2 ZWMyIn1dfSxyLnBvaW50U2hhZGVyPXt2ZXJ0ZXg6bCxmcmFnbWVudDpjLGF0dHJpYnV0ZXM6 W3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVjMyJ9LHtuYW1lOiJjb2xvciIsdHlwZToidmVj NCJ9LHtuYW1lOiJ1diIsdHlwZToidmVjMiJ9LHtuYW1lOiJwb2ludFNpemUiLHR5cGU6ImZs b2F0In1dfSxyLnBpY2tTaGFkZXI9e3ZlcnRleDp1LGZyYWdtZW50OmYsYXR0cmlidXRlczpb e25hbWU6InBvc2l0aW9uIix0eXBlOiJ2ZWMzIn0se25hbWU6ImlkIix0eXBlOiJ2ZWM0In1d fSxyLnBvaW50UGlja1NoYWRlcj17dmVydGV4OmgsZnJhZ21lbnQ6ZixhdHRyaWJ1dGVzOlt7 bmFtZToicG9zaXRpb24iLHR5cGU6InZlYzMifSx7bmFtZToicG9pbnRTaXplIix0eXBlOiJm bG9hdCJ9LHtuYW1lOiJpZCIsdHlwZToidmVjNCJ9XX0sci5jb250b3VyU2hhZGVyPXt2ZXJ0 ZXg6cCxmcmFnbWVudDpkLGF0dHJpYnV0ZXM6W3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVj MyJ9XX19LHtnbHNsaWZ5OjIzMX1dLDExMjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbj10KCJnbC1zaGFkZXIiKSxpPXQoImdsLWJ1ZmZlciIpLGE9dCgiZ2wtdmFvIiks bz10KCJnbC10ZXh0dXJlMmQiKSxzPXQoIm5vcm1hbHMiKSxsPXQoImdsLW1hdDQvbXVsdGlw bHkiKSxjPXQoImdsLW1hdDQvaW52ZXJ0IiksdT10KCJuZGFycmF5IiksZj10KCJjb2xvcm1h cCIpLGg9dCgic2ltcGxpY2lhbC1jb21wbGV4LWNvbnRvdXIiKSxwPXQoInR5cGVkYXJyYXkt cG9vbCIpLGQ9dCgiLi9saWIvc2hhZGVycyIpLG09dCgiLi9saWIvY2xvc2VzdC1wb2ludCIp LGc9ZC5tZXNoU2hhZGVyLHY9ZC53aXJlU2hhZGVyLHk9ZC5wb2ludFNoYWRlcix4PWQucGlj a1NoYWRlcixiPWQucG9pbnRQaWNrU2hhZGVyLF89ZC5jb250b3VyU2hhZGVyLHc9WzEsMCww LDAsMCwxLDAsMCwwLDAsMSwwLDAsMCwwLDFdO2Z1bmN0aW9uIFQodCxlLHIsbixpLGEsbyxz LGwsYyx1LGYsaCxwLGQsbSxnLHYseSx4LGIsXyxULGssQSxNLFMpe3RoaXMuZ2w9dCx0aGlz LnBpeGVsUmF0aW89MSx0aGlzLmNlbGxzPVtdLHRoaXMucG9zaXRpb25zPVtdLHRoaXMuaW50 ZW5zaXR5PVtdLHRoaXMudGV4dHVyZT1lLHRoaXMuZGlydHk9ITAsdGhpcy50cmlTaGFkZXI9 cix0aGlzLmxpbmVTaGFkZXI9bix0aGlzLnBvaW50U2hhZGVyPWksdGhpcy5waWNrU2hhZGVy PWEsdGhpcy5wb2ludFBpY2tTaGFkZXI9byx0aGlzLmNvbnRvdXJTaGFkZXI9cyx0aGlzLnRy aWFuZ2xlUG9zaXRpb25zPWwsdGhpcy50cmlhbmdsZUNvbG9ycz11LHRoaXMudHJpYW5nbGVO b3JtYWxzPWgsdGhpcy50cmlhbmdsZVVWcz1mLHRoaXMudHJpYW5nbGVJZHM9Yyx0aGlzLnRy aWFuZ2xlVkFPPXAsdGhpcy50cmlhbmdsZUNvdW50PTAsdGhpcy5saW5lV2lkdGg9MSx0aGlz LmVkZ2VQb3NpdGlvbnM9ZCx0aGlzLmVkZ2VDb2xvcnM9Zyx0aGlzLmVkZ2VVVnM9dix0aGlz LmVkZ2VJZHM9bSx0aGlzLmVkZ2VWQU89eSx0aGlzLmVkZ2VDb3VudD0wLHRoaXMucG9pbnRQ b3NpdGlvbnM9eCx0aGlzLnBvaW50Q29sb3JzPV8sdGhpcy5wb2ludFVWcz1ULHRoaXMucG9p bnRTaXplcz1rLHRoaXMucG9pbnRJZHM9Yix0aGlzLnBvaW50VkFPPUEsdGhpcy5wb2ludENv dW50PTAsdGhpcy5jb250b3VyTGluZVdpZHRoPTEsdGhpcy5jb250b3VyUG9zaXRpb25zPU0s dGhpcy5jb250b3VyVkFPPVMsdGhpcy5jb250b3VyQ291bnQ9MCx0aGlzLmNvbnRvdXJDb2xv cj1bMCwwLDBdLHRoaXMuY29udG91ckVuYWJsZT0hMCx0aGlzLnBpY2tWZXJ0ZXg9ITAsdGhp cy5waWNrSWQ9MSx0aGlzLmJvdW5kcz1bWzEvMCwxLzAsMS8wXSxbLTEvMCwtMS8wLC0xLzBd XSx0aGlzLmNsaXBCb3VuZHM9W1stMS8wLC0xLzAsLTEvMF0sWzEvMCwxLzAsMS8wXV0sdGhp cy5saWdodFBvc2l0aW9uPVsxZTUsMWU1LDBdLHRoaXMuYW1iaWVudExpZ2h0PS44LHRoaXMu ZGlmZnVzZUxpZ2h0PS44LHRoaXMuc3BlY3VsYXJMaWdodD0yLHRoaXMucm91Z2huZXNzPS41 LHRoaXMuZnJlc25lbD0xLjUsdGhpcy5vcGFjaXR5PTEsdGhpcy5oYXNBbHBoYT0hMSx0aGlz Lm9wYWNpdHlzY2FsZT0hMSx0aGlzLl9tb2RlbD13LHRoaXMuX3ZpZXc9dyx0aGlzLl9wcm9q ZWN0aW9uPXcsdGhpcy5fcmVzb2x1dGlvbj1bMSwxXX12YXIgaz1ULnByb3RvdHlwZTtmdW5j dGlvbiBBKHQsZSl7aWYoIWUpcmV0dXJuIDE7aWYoIWUubGVuZ3RoKXJldHVybiAxO2Zvcih2 YXIgcj0wO3I8ZS5sZW5ndGg7KytyKXtpZihlLmxlbmd0aDwyKXJldHVybiAxO2lmKGVbcl1b MF09PT10KXJldHVybiBlW3JdWzFdO2lmKGVbcl1bMF0+dCYmcj4wKXt2YXIgbj0oZVtyXVsw XS10KS8oZVtyXVswXS1lW3ItMV1bMF0pO3JldHVybiBlW3JdWzFdKigxLW4pK24qZVtyLTFd WzFdfX1yZXR1cm4gMX1mdW5jdGlvbiBNKHQpe3ZhciBlPW4odCxnLnZlcnRleCxnLmZyYWdt ZW50KTtyZXR1cm4gZS5hdHRyaWJ1dGVzLnBvc2l0aW9uLmxvY2F0aW9uPTAsZS5hdHRyaWJ1 dGVzLmNvbG9yLmxvY2F0aW9uPTIsZS5hdHRyaWJ1dGVzLnV2LmxvY2F0aW9uPTMsZS5hdHRy aWJ1dGVzLm5vcm1hbC5sb2NhdGlvbj00LGV9ZnVuY3Rpb24gUyh0KXt2YXIgZT1uKHQsdi52 ZXJ0ZXgsdi5mcmFnbWVudCk7cmV0dXJuIGUuYXR0cmlidXRlcy5wb3NpdGlvbi5sb2NhdGlv bj0wLGUuYXR0cmlidXRlcy5jb2xvci5sb2NhdGlvbj0yLGUuYXR0cmlidXRlcy51di5sb2Nh dGlvbj0zLGV9ZnVuY3Rpb24gRSh0KXt2YXIgZT1uKHQseS52ZXJ0ZXgseS5mcmFnbWVudCk7 cmV0dXJuIGUuYXR0cmlidXRlcy5wb3NpdGlvbi5sb2NhdGlvbj0wLGUuYXR0cmlidXRlcy5j b2xvci5sb2NhdGlvbj0yLGUuYXR0cmlidXRlcy51di5sb2NhdGlvbj0zLGUuYXR0cmlidXRl cy5wb2ludFNpemUubG9jYXRpb249NCxlfWZ1bmN0aW9uIEwodCl7dmFyIGU9bih0LHgudmVy dGV4LHguZnJhZ21lbnQpO3JldHVybiBlLmF0dHJpYnV0ZXMucG9zaXRpb24ubG9jYXRpb249 MCxlLmF0dHJpYnV0ZXMuaWQubG9jYXRpb249MSxlfWZ1bmN0aW9uIEModCl7dmFyIGU9bih0 LGIudmVydGV4LGIuZnJhZ21lbnQpO3JldHVybiBlLmF0dHJpYnV0ZXMucG9zaXRpb24ubG9j YXRpb249MCxlLmF0dHJpYnV0ZXMuaWQubG9jYXRpb249MSxlLmF0dHJpYnV0ZXMucG9pbnRT aXplLmxvY2F0aW9uPTQsZX1mdW5jdGlvbiBQKHQpe3ZhciBlPW4odCxfLnZlcnRleCxfLmZy YWdtZW50KTtyZXR1cm4gZS5hdHRyaWJ1dGVzLnBvc2l0aW9uLmxvY2F0aW9uPTAsZX1rLmlz T3BhcXVlPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaGFzQWxwaGF9LGsuaXNUcmFuc3BhcmVu dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc0FscGhhfSxrLnBpY2tTbG90cz0xLGsuc2V0 UGlja0Jhc2U9ZnVuY3Rpb24odCl7dGhpcy5waWNrSWQ9dH0say5oaWdobGlnaHQ9ZnVuY3Rp b24odCl7aWYodCYmdGhpcy5jb250b3VyRW5hYmxlKXtmb3IodmFyIGU9aCh0aGlzLmNlbGxz LHRoaXMuaW50ZW5zaXR5LHQuaW50ZW5zaXR5KSxyPWUuY2VsbHMsbj1lLnZlcnRleElkcyxp PWUudmVydGV4V2VpZ2h0cyxhPXIubGVuZ3RoLG89cC5tYWxsb2NGbG9hdDMyKDYqYSkscz0w LGw9MDtsPGE7KytsKWZvcih2YXIgYz1yW2xdLHU9MDt1PDI7Kyt1KXt2YXIgZj1jWzBdOzI9 PT1jLmxlbmd0aCYmKGY9Y1t1XSk7Zm9yKHZhciBkPW5bZl1bMF0sbT1uW2ZdWzFdLGc9aVtm XSx2PTEtZyx5PXRoaXMucG9zaXRpb25zW2RdLHg9dGhpcy5wb3NpdGlvbnNbbV0sYj0wO2I8 MzsrK2Ipb1tzKytdPWcqeVtiXSt2KnhbYl19dGhpcy5jb250b3VyQ291bnQ9cy8zfDAsdGhp cy5jb250b3VyUG9zaXRpb25zLnVwZGF0ZShvLnN1YmFycmF5KDAscykpLHAuZnJlZShvKX1l bHNlIHRoaXMuY29udG91ckNvdW50PTB9LGsudXBkYXRlPWZ1bmN0aW9uKHQpe3Q9dHx8e307 dmFyIGU9dGhpcy5nbDt0aGlzLmRpcnR5PSEwLCJjb250b3VyRW5hYmxlImluIHQmJih0aGlz LmNvbnRvdXJFbmFibGU9dC5jb250b3VyRW5hYmxlKSwiY29udG91ckNvbG9yImluIHQmJih0 aGlzLmNvbnRvdXJDb2xvcj10LmNvbnRvdXJDb2xvciksImxpbmVXaWR0aCJpbiB0JiYodGhp cy5saW5lV2lkdGg9dC5saW5lV2lkdGgpLCJsaWdodFBvc2l0aW9uImluIHQmJih0aGlzLmxp Z2h0UG9zaXRpb249dC5saWdodFBvc2l0aW9uKSx0aGlzLmhhc0FscGhhPSExLCJvcGFjaXR5 ImluIHQmJih0aGlzLm9wYWNpdHk9dC5vcGFjaXR5LHRoaXMub3BhY2l0eTwxJiYodGhpcy5o YXNBbHBoYT0hMCkpLCJvcGFjaXR5c2NhbGUiaW4gdCYmKHRoaXMub3BhY2l0eXNjYWxlPXQu b3BhY2l0eXNjYWxlLHRoaXMuaGFzQWxwaGE9ITApLCJhbWJpZW50ImluIHQmJih0aGlzLmFt YmllbnRMaWdodD10LmFtYmllbnQpLCJkaWZmdXNlImluIHQmJih0aGlzLmRpZmZ1c2VMaWdo dD10LmRpZmZ1c2UpLCJzcGVjdWxhciJpbiB0JiYodGhpcy5zcGVjdWxhckxpZ2h0PXQuc3Bl Y3VsYXIpLCJyb3VnaG5lc3MiaW4gdCYmKHRoaXMucm91Z2huZXNzPXQucm91Z2huZXNzKSwi ZnJlc25lbCJpbiB0JiYodGhpcy5mcmVzbmVsPXQuZnJlc25lbCksdC50ZXh0dXJlPyh0aGlz LnRleHR1cmUuZGlzcG9zZSgpLHRoaXMudGV4dHVyZT1vKGUsdC50ZXh0dXJlKSk6dC5jb2xv cm1hcCYmKHRoaXMudGV4dHVyZS5zaGFwZT1bMjU2LDI1Nl0sdGhpcy50ZXh0dXJlLm1pbkZp bHRlcj1lLkxJTkVBUl9NSVBNQVBfTElORUFSLHRoaXMudGV4dHVyZS5tYWdGaWx0ZXI9ZS5M SU5FQVIsdGhpcy50ZXh0dXJlLnNldFBpeGVscyhmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1m KHtjb2xvcm1hcDp0LG5zaGFkZXM6MjU2LGZvcm1hdDoicmdiYSJ9KSxuPW5ldyBVaW50OEFy cmF5KDEwMjQpLGk9MDtpPDI1NjsrK2kpe2Zvcih2YXIgYT1yW2ldLG89MDtvPDM7KytvKW5b NCppK29dPWFbb107bls0KmkrM109ZT8yNTUqQShpLzI1NSxlKToyNTUqYVszXX1yZXR1cm4g dShuLFsyNTYsMjU2LDRdLFs0LDAsMV0pfSh0LmNvbG9ybWFwLHRoaXMub3BhY2l0eXNjYWxl KSksdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwKCkpO3ZhciByPXQuY2VsbHMsbj10LnBv c2l0aW9ucztpZihuJiZyKXt2YXIgaT1bXSxhPVtdLGw9W10sYz1bXSxoPVtdLHA9W10sZD1b XSxtPVtdLGc9W10sdj1bXSx5PVtdLHg9W10sYj1bXSxfPVtdO3RoaXMuY2VsbHM9cix0aGlz LnBvc2l0aW9ucz1uO3ZhciB3PXQudmVydGV4Tm9ybWFscyxUPXQuY2VsbE5vcm1hbHMsaz12 b2lkIDA9PT10LnZlcnRleE5vcm1hbHNFcHNpbG9uPzFlLTY6dC52ZXJ0ZXhOb3JtYWxzRXBz aWxvbixNPXZvaWQgMD09PXQuZmFjZU5vcm1hbHNFcHNpbG9uPzFlLTY6dC5mYWNlTm9ybWFs c0Vwc2lsb247dC51c2VGYWNldE5vcm1hbHMmJiFUJiYoVD1zLmZhY2VOb3JtYWxzKHIsbixN KSksVHx8d3x8KHc9cy52ZXJ0ZXhOb3JtYWxzKHIsbixrKSk7dmFyIFM9dC52ZXJ0ZXhDb2xv cnMsRT10LmNlbGxDb2xvcnMsTD10Lm1lc2hDb2xvcnx8WzEsMSwxLDFdLEM9dC52ZXJ0ZXhV VnMsUD10LnZlcnRleEludGVuc2l0eSxJPXQuY2VsbFVWcyxPPXQuY2VsbEludGVuc2l0eSx6 PTEvMCxEPS0xLzA7aWYoIUMmJiFJKWlmKFApaWYodC52ZXJ0ZXhJbnRlbnNpdHlCb3VuZHMp ej0rdC52ZXJ0ZXhJbnRlbnNpdHlCb3VuZHNbMF0sRD0rdC52ZXJ0ZXhJbnRlbnNpdHlCb3Vu ZHNbMV07ZWxzZSBmb3IodmFyIFI9MDtSPFAubGVuZ3RoOysrUil7dmFyIEY9UFtSXTt6PU1h dGgubWluKHosRiksRD1NYXRoLm1heChELEYpfWVsc2UgaWYoTylpZih0LmNlbGxJbnRlbnNp dHlCb3VuZHMpej0rdC5jZWxsSW50ZW5zaXR5Qm91bmRzWzBdLEQ9K3QuY2VsbEludGVuc2l0 eUJvdW5kc1sxXTtlbHNlIGZvcihSPTA7UjxPLmxlbmd0aDsrK1Ipe0Y9T1tSXTt6PU1hdGgu bWluKHosRiksRD1NYXRoLm1heChELEYpfWVsc2UgZm9yKFI9MDtSPG4ubGVuZ3RoOysrUil7 Rj1uW1JdWzJdO3o9TWF0aC5taW4oeixGKSxEPU1hdGgubWF4KEQsRil9dGhpcy5pbnRlbnNp dHk9UHx8KE98fGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxyPW5ldyBBcnJheShl KSxuPTA7bjxlOysrbilyW25dPXRbbl1bMl07cmV0dXJuIHJ9KG4pKSx0aGlzLnBpY2tWZXJ0 ZXg9IShPfHxFKTt2YXIgQj10LnBvaW50U2l6ZXMsTj10LnBvaW50U2l6ZXx8MTt0aGlzLmJv dW5kcz1bWzEvMCwxLzAsMS8wXSxbLTEvMCwtMS8wLC0xLzBdXTtmb3IoUj0wO1I8bi5sZW5n dGg7KytSKWZvcih2YXIgaj1uW1JdLFU9MDtVPDM7KytVKSFpc05hTihqW1VdKSYmaXNGaW5p dGUoaltVXSkmJih0aGlzLmJvdW5kc1swXVtVXT1NYXRoLm1pbih0aGlzLmJvdW5kc1swXVtV XSxqW1VdKSx0aGlzLmJvdW5kc1sxXVtVXT1NYXRoLm1heCh0aGlzLmJvdW5kc1sxXVtVXSxq W1VdKSk7dmFyIFY9MCxIPTAscT0wO3Q6Zm9yKFI9MDtSPHIubGVuZ3RoOysrUil7dmFyIEc9 cltSXTtzd2l0Y2goRy5sZW5ndGgpe2Nhc2UgMTpmb3Ioaj1uW1c9R1swXV0sVT0wO1U8Mzsr K1UpaWYoaXNOYU4oaltVXSl8fCFpc0Zpbml0ZShqW1VdKSljb250aW51ZSB0O3YucHVzaChq WzBdLGpbMV0salsyXSksWD1TP1NbV106RT9FW1JdOkwsdGhpcy5vcGFjaXR5c2NhbGUmJlA/ YS5wdXNoKFhbMF0sWFsxXSxYWzJdLHRoaXMub3BhY2l0eSpBKChQW1ddLXopLyhELXopLHRo aXMub3BhY2l0eXNjYWxlKSk6Mz09PVgubGVuZ3RoP3kucHVzaChYWzBdLFhbMV0sWFsyXSx0 aGlzLm9wYWNpdHkpOih5LnB1c2goWFswXSxYWzFdLFhbMl0sWFszXSp0aGlzLm9wYWNpdHkp LFhbM108MSYmKHRoaXMuaGFzQWxwaGE9ITApKSxaPUM/Q1tXXTpQP1soUFtXXS16KS8oRC16 KSwwXTpJP0lbUl06Tz9bKE9bUl0teikvKEQteiksMF06WyhqWzJdLXopLyhELXopLDBdLHgu cHVzaChaWzBdLFpbMV0pLEI/Yi5wdXNoKEJbV10pOmIucHVzaChOKSxfLnB1c2goUikscSs9 MTticmVhaztjYXNlIDI6Zm9yKFU9MDtVPDI7KytVKXtqPW5bVz1HW1VdXTtmb3IodmFyIFk9 MDtZPDM7KytZKWlmKGlzTmFOKGpbWV0pfHwhaXNGaW5pdGUoaltZXSkpY29udGludWUgdH1m b3IoVT0wO1U8MjsrK1Upe2o9bltXPUdbVV1dO3AucHVzaChqWzBdLGpbMV0salsyXSksWD1T P1NbV106RT9FW1JdOkwsdGhpcy5vcGFjaXR5c2NhbGUmJlA/YS5wdXNoKFhbMF0sWFsxXSxY WzJdLHRoaXMub3BhY2l0eSpBKChQW1ddLXopLyhELXopLHRoaXMub3BhY2l0eXNjYWxlKSk6 Mz09PVgubGVuZ3RoP2QucHVzaChYWzBdLFhbMV0sWFsyXSx0aGlzLm9wYWNpdHkpOihkLnB1 c2goWFswXSxYWzFdLFhbMl0sWFszXSp0aGlzLm9wYWNpdHkpLFhbM108MSYmKHRoaXMuaGFz QWxwaGE9ITApKSxaPUM/Q1tXXTpQP1soUFtXXS16KS8oRC16KSwwXTpJP0lbUl06Tz9bKE9b Ul0teikvKEQteiksMF06WyhqWzJdLXopLyhELXopLDBdLG0ucHVzaChaWzBdLFpbMV0pLGcu cHVzaChSKX1IKz0xO2JyZWFrO2Nhc2UgMzpmb3IoVT0wO1U8MzsrK1UpZm9yKGo9bltXPUdb VV1dLFk9MDtZPDM7KytZKWlmKGlzTmFOKGpbWV0pfHwhaXNGaW5pdGUoaltZXSkpY29udGlu dWUgdDtmb3IoVT0wO1U8MzsrK1Upe3ZhciBXLFgsWixKO2o9bltXPUdbMi1VXV07aS5wdXNo KGpbMF0salsxXSxqWzJdKSwoWD1TP1NbV106RT9FW1JdOkwpP3RoaXMub3BhY2l0eXNjYWxl JiZQP2EucHVzaChYWzBdLFhbMV0sWFsyXSx0aGlzLm9wYWNpdHkqQSgoUFtXXS16KS8oRC16 KSx0aGlzLm9wYWNpdHlzY2FsZSkpOjM9PT1YLmxlbmd0aD9hLnB1c2goWFswXSxYWzFdLFhb Ml0sdGhpcy5vcGFjaXR5KTooYS5wdXNoKFhbMF0sWFsxXSxYWzJdLFhbM10qdGhpcy5vcGFj aXR5KSxYWzNdPDEmJih0aGlzLmhhc0FscGhhPSEwKSk6YS5wdXNoKC41LC41LC41LDEpLFo9 Qz9DW1ddOlA/WyhQW1ddLXopLyhELXopLDBdOkk/SVtSXTpPP1soT1tSXS16KS8oRC16KSww XTpbKGpbMl0teikvKEQteiksMF0sYy5wdXNoKFpbMF0sWlsxXSksSj13P3dbV106VFtSXSxs LnB1c2goSlswXSxKWzFdLEpbMl0pLGgucHVzaChSKX1WKz0xfX10aGlzLnBvaW50Q291bnQ9 cSx0aGlzLmVkZ2VDb3VudD1ILHRoaXMudHJpYW5nbGVDb3VudD1WLHRoaXMucG9pbnRQb3Np dGlvbnMudXBkYXRlKHYpLHRoaXMucG9pbnRDb2xvcnMudXBkYXRlKHkpLHRoaXMucG9pbnRV VnMudXBkYXRlKHgpLHRoaXMucG9pbnRTaXplcy51cGRhdGUoYiksdGhpcy5wb2ludElkcy51 cGRhdGUobmV3IFVpbnQzMkFycmF5KF8pKSx0aGlzLmVkZ2VQb3NpdGlvbnMudXBkYXRlKHAp LHRoaXMuZWRnZUNvbG9ycy51cGRhdGUoZCksdGhpcy5lZGdlVVZzLnVwZGF0ZShtKSx0aGlz LmVkZ2VJZHMudXBkYXRlKG5ldyBVaW50MzJBcnJheShnKSksdGhpcy50cmlhbmdsZVBvc2l0 aW9ucy51cGRhdGUoaSksdGhpcy50cmlhbmdsZUNvbG9ycy51cGRhdGUoYSksdGhpcy50cmlh bmdsZVVWcy51cGRhdGUoYyksdGhpcy50cmlhbmdsZU5vcm1hbHMudXBkYXRlKGwpLHRoaXMu dHJpYW5nbGVJZHMudXBkYXRlKG5ldyBVaW50MzJBcnJheShoKSl9fSxrLmRyYXdUcmFuc3Bh cmVudD1rLmRyYXc9ZnVuY3Rpb24odCl7dD10fHx7fTtmb3IodmFyIGU9dGhpcy5nbCxyPXQu bW9kZWx8fHcsbj10LnZpZXd8fHcsaT10LnByb2plY3Rpb258fHcsYT1bWy0xZTYsLTFlNiwt MWU2XSxbMWU2LDFlNiwxZTZdXSxvPTA7bzwzOysrbylhWzBdW29dPU1hdGgubWF4KGFbMF1b b10sdGhpcy5jbGlwQm91bmRzWzBdW29dKSxhWzFdW29dPU1hdGgubWluKGFbMV1bb10sdGhp cy5jbGlwQm91bmRzWzFdW29dKTt2YXIgcz17bW9kZWw6cix2aWV3Om4scHJvamVjdGlvbjpp LGludmVyc2VNb2RlbDp3LnNsaWNlKCksY2xpcEJvdW5kczphLGthbWJpZW50OnRoaXMuYW1i aWVudExpZ2h0LGtkaWZmdXNlOnRoaXMuZGlmZnVzZUxpZ2h0LGtzcGVjdWxhcjp0aGlzLnNw ZWN1bGFyTGlnaHQscm91Z2huZXNzOnRoaXMucm91Z2huZXNzLGZyZXNuZWw6dGhpcy5mcmVz bmVsLGV5ZVBvc2l0aW9uOlswLDAsMF0sbGlnaHRQb3NpdGlvbjpbMCwwLDBdLGNvbnRvdXJD b2xvcjp0aGlzLmNvbnRvdXJDb2xvcix0ZXh0dXJlOjB9O3MuaW52ZXJzZU1vZGVsPWMocy5p bnZlcnNlTW9kZWwscy5tb2RlbCksZS5kaXNhYmxlKGUuQ1VMTF9GQUNFKSx0aGlzLnRleHR1 cmUuYmluZCgwKTt2YXIgdT1uZXcgQXJyYXkoMTYpO2wodSxzLnZpZXcscy5tb2RlbCksbCh1 LHMucHJvamVjdGlvbix1KSxjKHUsdSk7Zm9yKG89MDtvPDM7KytvKXMuZXllUG9zaXRpb25b b109dVsxMitvXS91WzE1XTt2YXIgZixoPXVbMTVdO2ZvcihvPTA7bzwzOysrbyloKz10aGlz LmxpZ2h0UG9zaXRpb25bb10qdVs0Km8rM107Zm9yKG89MDtvPDM7KytvKXtmb3IodmFyIHA9 dVsxMitvXSxkPTA7ZDwzOysrZClwKz11WzQqZCtvXSp0aGlzLmxpZ2h0UG9zaXRpb25bZF07 cy5saWdodFBvc2l0aW9uW29dPXAvaH10aGlzLnRyaWFuZ2xlQ291bnQ+MCYmKChmPXRoaXMu dHJpU2hhZGVyKS5iaW5kKCksZi51bmlmb3Jtcz1zLHRoaXMudHJpYW5nbGVWQU8uYmluZCgp LGUuZHJhd0FycmF5cyhlLlRSSUFOR0xFUywwLDMqdGhpcy50cmlhbmdsZUNvdW50KSx0aGlz LnRyaWFuZ2xlVkFPLnVuYmluZCgpKTt0aGlzLmVkZ2VDb3VudD4wJiZ0aGlzLmxpbmVXaWR0 aD4wJiYoKGY9dGhpcy5saW5lU2hhZGVyKS5iaW5kKCksZi51bmlmb3Jtcz1zLHRoaXMuZWRn ZVZBTy5iaW5kKCksZS5saW5lV2lkdGgodGhpcy5saW5lV2lkdGgqdGhpcy5waXhlbFJhdGlv KSxlLmRyYXdBcnJheXMoZS5MSU5FUywwLDIqdGhpcy5lZGdlQ291bnQpLHRoaXMuZWRnZVZB Ty51bmJpbmQoKSk7dGhpcy5wb2ludENvdW50PjAmJigoZj10aGlzLnBvaW50U2hhZGVyKS5i aW5kKCksZi51bmlmb3Jtcz1zLHRoaXMucG9pbnRWQU8uYmluZCgpLGUuZHJhd0FycmF5cyhl LlBPSU5UUywwLHRoaXMucG9pbnRDb3VudCksdGhpcy5wb2ludFZBTy51bmJpbmQoKSk7dGhp cy5jb250b3VyRW5hYmxlJiZ0aGlzLmNvbnRvdXJDb3VudD4wJiZ0aGlzLmNvbnRvdXJMaW5l V2lkdGg+MCYmKChmPXRoaXMuY29udG91clNoYWRlcikuYmluZCgpLGYudW5pZm9ybXM9cyx0 aGlzLmNvbnRvdXJWQU8uYmluZCgpLGUuZHJhd0FycmF5cyhlLkxJTkVTLDAsdGhpcy5jb250 b3VyQ291bnQpLHRoaXMuY29udG91clZBTy51bmJpbmQoKSl9LGsuZHJhd1BpY2s9ZnVuY3Rp b24odCl7dD10fHx7fTtmb3IodmFyIGU9dGhpcy5nbCxyPXQubW9kZWx8fHcsbj10LnZpZXd8 fHcsaT10LnByb2plY3Rpb258fHcsYT1bWy0xZTYsLTFlNiwtMWU2XSxbMWU2LDFlNiwxZTZd XSxvPTA7bzwzOysrbylhWzBdW29dPU1hdGgubWF4KGFbMF1bb10sdGhpcy5jbGlwQm91bmRz WzBdW29dKSxhWzFdW29dPU1hdGgubWluKGFbMV1bb10sdGhpcy5jbGlwQm91bmRzWzFdW29d KTt0aGlzLl9tb2RlbD1bXS5zbGljZS5jYWxsKHIpLHRoaXMuX3ZpZXc9W10uc2xpY2UuY2Fs bChuKSx0aGlzLl9wcm9qZWN0aW9uPVtdLnNsaWNlLmNhbGwoaSksdGhpcy5fcmVzb2x1dGlv bj1bZS5kcmF3aW5nQnVmZmVyV2lkdGgsZS5kcmF3aW5nQnVmZmVySGVpZ2h0XTt2YXIgcyxs PXttb2RlbDpyLHZpZXc6bixwcm9qZWN0aW9uOmksY2xpcEJvdW5kczphLHBpY2tJZDp0aGlz LnBpY2tJZC8yNTV9Oygocz10aGlzLnBpY2tTaGFkZXIpLmJpbmQoKSxzLnVuaWZvcm1zPWws dGhpcy50cmlhbmdsZUNvdW50PjAmJih0aGlzLnRyaWFuZ2xlVkFPLmJpbmQoKSxlLmRyYXdB cnJheXMoZS5UUklBTkdMRVMsMCwzKnRoaXMudHJpYW5nbGVDb3VudCksdGhpcy50cmlhbmds ZVZBTy51bmJpbmQoKSksdGhpcy5lZGdlQ291bnQ+MCYmKHRoaXMuZWRnZVZBTy5iaW5kKCks ZS5saW5lV2lkdGgodGhpcy5saW5lV2lkdGgqdGhpcy5waXhlbFJhdGlvKSxlLmRyYXdBcnJh eXMoZS5MSU5FUywwLDIqdGhpcy5lZGdlQ291bnQpLHRoaXMuZWRnZVZBTy51bmJpbmQoKSks dGhpcy5wb2ludENvdW50PjApJiYoKHM9dGhpcy5wb2ludFBpY2tTaGFkZXIpLmJpbmQoKSxz LnVuaWZvcm1zPWwsdGhpcy5wb2ludFZBTy5iaW5kKCksZS5kcmF3QXJyYXlzKGUuUE9JTlRT LDAsdGhpcy5wb2ludENvdW50KSx0aGlzLnBvaW50VkFPLnVuYmluZCgpKX0say5waWNrPWZ1 bmN0aW9uKHQpe2lmKCF0KXJldHVybiBudWxsO2lmKHQuaWQhPT10aGlzLnBpY2tJZClyZXR1 cm4gbnVsbDtmb3IodmFyIGU9dC52YWx1ZVswXSsyNTYqdC52YWx1ZVsxXSs2NTUzNip0LnZh bHVlWzJdLHI9dGhpcy5jZWxsc1tlXSxuPXRoaXMucG9zaXRpb25zLGk9bmV3IEFycmF5KHIu bGVuZ3RoKSxhPTA7YTxyLmxlbmd0aDsrK2EpaVthXT1uW3JbYV1dO3ZhciBvPXQuY29vcmRb MF0scz10LmNvb3JkWzFdO2lmKCF0aGlzLnBpY2tWZXJ0ZXgpe3ZhciBsPXRoaXMucG9zaXRp b25zW3JbMF1dLGM9dGhpcy5wb3NpdGlvbnNbclsxXV0sdT10aGlzLnBvc2l0aW9uc1tyWzJd XSxmPVsobFswXStjWzBdK3VbMF0pLzMsKGxbMV0rY1sxXSt1WzFdKS8zLChsWzJdK2NbMl0r dVsyXSkvM107cmV0dXJue19jZWxsQ2VudGVyOiEwLHBvc2l0aW9uOltvLHNdLGluZGV4OmUs Y2VsbDpyLGNlbGxJZDplLGludGVuc2l0eTp0aGlzLmludGVuc2l0eVtlXSxkYXRhQ29vcmRp bmF0ZTpmfX12YXIgaD1tKGksW28qdGhpcy5waXhlbFJhdGlvLHRoaXMuX3Jlc29sdXRpb25b MV0tcyp0aGlzLnBpeGVsUmF0aW9dLHRoaXMuX21vZGVsLHRoaXMuX3ZpZXcsdGhpcy5fcHJv amVjdGlvbix0aGlzLl9yZXNvbHV0aW9uKTtpZighaClyZXR1cm4gbnVsbDt2YXIgcD1oWzJd LGQ9MDtmb3IoYT0wO2E8ci5sZW5ndGg7KythKWQrPXBbYV0qdGhpcy5pbnRlbnNpdHlbclth XV07cmV0dXJue3Bvc2l0aW9uOmhbMV0saW5kZXg6cltoWzBdXSxjZWxsOnIsY2VsbElkOmUs aW50ZW5zaXR5OmQsZGF0YUNvb3JkaW5hdGU6dGhpcy5wb3NpdGlvbnNbcltoWzBdXV19fSxr LmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnRleHR1cmUuZGlzcG9zZSgpLHRoaXMudHJpU2hh ZGVyLmRpc3Bvc2UoKSx0aGlzLmxpbmVTaGFkZXIuZGlzcG9zZSgpLHRoaXMucG9pbnRTaGFk ZXIuZGlzcG9zZSgpLHRoaXMucGlja1NoYWRlci5kaXNwb3NlKCksdGhpcy5wb2ludFBpY2tT aGFkZXIuZGlzcG9zZSgpLHRoaXMudHJpYW5nbGVWQU8uZGlzcG9zZSgpLHRoaXMudHJpYW5n bGVQb3NpdGlvbnMuZGlzcG9zZSgpLHRoaXMudHJpYW5nbGVDb2xvcnMuZGlzcG9zZSgpLHRo aXMudHJpYW5nbGVVVnMuZGlzcG9zZSgpLHRoaXMudHJpYW5nbGVOb3JtYWxzLmRpc3Bvc2Uo KSx0aGlzLnRyaWFuZ2xlSWRzLmRpc3Bvc2UoKSx0aGlzLmVkZ2VWQU8uZGlzcG9zZSgpLHRo aXMuZWRnZVBvc2l0aW9ucy5kaXNwb3NlKCksdGhpcy5lZGdlQ29sb3JzLmRpc3Bvc2UoKSx0 aGlzLmVkZ2VVVnMuZGlzcG9zZSgpLHRoaXMuZWRnZUlkcy5kaXNwb3NlKCksdGhpcy5wb2lu dFZBTy5kaXNwb3NlKCksdGhpcy5wb2ludFBvc2l0aW9ucy5kaXNwb3NlKCksdGhpcy5wb2lu dENvbG9ycy5kaXNwb3NlKCksdGhpcy5wb2ludFVWcy5kaXNwb3NlKCksdGhpcy5wb2ludFNp emVzLmRpc3Bvc2UoKSx0aGlzLnBvaW50SWRzLmRpc3Bvc2UoKSx0aGlzLmNvbnRvdXJWQU8u ZGlzcG9zZSgpLHRoaXMuY29udG91clBvc2l0aW9ucy5kaXNwb3NlKCksdGhpcy5jb250b3Vy U2hhZGVyLmRpc3Bvc2UoKX0sZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7MT09PWFyZ3VtZW50 cy5sZW5ndGgmJih0PShlPXQpLmdsKTt2YXIgcj10LmdldEV4dGVuc2lvbigiT0VTX3N0YW5k YXJkX2Rlcml2YXRpdmVzIil8fHQuZ2V0RXh0ZW5zaW9uKCJNT1pfT0VTX3N0YW5kYXJkX2Rl cml2YXRpdmVzIil8fHQuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfT0VTX3N0YW5kYXJkX2Rlcml2 YXRpdmVzIik7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJkZXJpdmF0aXZlcyBub3Qgc3VwcG9y dGVkIik7dmFyIG49TSh0KSxzPVModCksbD1FKHQpLGM9TCh0KSxmPUModCksaD1QKHQpLHA9 byh0LHUobmV3IFVpbnQ4QXJyYXkoWzI1NSwyNTUsMjU1LDI1NV0pLFsxLDEsNF0pKTtwLmdl bmVyYXRlTWlwbWFwKCkscC5taW5GaWx0ZXI9dC5MSU5FQVJfTUlQTUFQX0xJTkVBUixwLm1h Z0ZpbHRlcj10LkxJTkVBUjt2YXIgZD1pKHQpLG09aSh0KSxnPWkodCksdj1pKHQpLHk9aSh0 KSx4PWEodCxbe2J1ZmZlcjpkLHR5cGU6dC5GTE9BVCxzaXplOjN9LHtidWZmZXI6eSx0eXBl OnQuVU5TSUdORURfQllURSxzaXplOjQsbm9ybWFsaXplZDohMH0se2J1ZmZlcjptLHR5cGU6 dC5GTE9BVCxzaXplOjR9LHtidWZmZXI6Zyx0eXBlOnQuRkxPQVQsc2l6ZToyfSx7YnVmZmVy OnYsdHlwZTp0LkZMT0FULHNpemU6M31dKSxiPWkodCksXz1pKHQpLHc9aSh0KSxrPWkodCks QT1hKHQsW3tidWZmZXI6Yix0eXBlOnQuRkxPQVQsc2l6ZTozfSx7YnVmZmVyOmssdHlwZTp0 LlVOU0lHTkVEX0JZVEUsc2l6ZTo0LG5vcm1hbGl6ZWQ6ITB9LHtidWZmZXI6Xyx0eXBlOnQu RkxPQVQsc2l6ZTo0fSx7YnVmZmVyOncsdHlwZTp0LkZMT0FULHNpemU6Mn1dKSxJPWkodCks Tz1pKHQpLHo9aSh0KSxEPWkodCksUj1pKHQpLEY9YSh0LFt7YnVmZmVyOkksdHlwZTp0LkZM T0FULHNpemU6M30se2J1ZmZlcjpSLHR5cGU6dC5VTlNJR05FRF9CWVRFLHNpemU6NCxub3Jt YWxpemVkOiEwfSx7YnVmZmVyOk8sdHlwZTp0LkZMT0FULHNpemU6NH0se2J1ZmZlcjp6LHR5 cGU6dC5GTE9BVCxzaXplOjJ9LHtidWZmZXI6RCx0eXBlOnQuRkxPQVQsc2l6ZToxfV0pLEI9 aSh0KSxOPWEodCxbe2J1ZmZlcjpCLHR5cGU6dC5GTE9BVCxzaXplOjN9XSksaj1uZXcgVCh0 LHAsbixzLGwsYyxmLGgsZCx5LG0sZyx2LHgsYixrLF8sdyxBLEksUixPLHosRCxGLEIsTik7 cmV0dXJuIGoudXBkYXRlKGUpLGp9fSx7Ii4vbGliL2Nsb3Nlc3QtcG9pbnQiOjExMCwiLi9s aWIvc2hhZGVycyI6MTExLGNvbG9ybWFwOjUzLCJnbC1idWZmZXIiOjc4LCJnbC1tYXQ0L2lu dmVydCI6OTgsImdsLW1hdDQvbXVsdGlwbHkiOjEwMCwiZ2wtc2hhZGVyIjoxMzIsImdsLXRl eHR1cmUyZCI6MTQ2LCJnbC12YW8iOjE1MCxuZGFycmF5OjI1OSxub3JtYWxzOjI2MSwic2lt cGxpY2lhbC1jb21wbGV4LWNvbnRvdXIiOjI5MSwidHlwZWRhcnJheS1wb29sIjozMDh9XSwx MTM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQp e3ZhciBlPXQuZ2wscj1uKGUsWzAsMCwwLDEsMSwwLDEsMV0pLHM9aShlLGEuYm94VmVydCxh LmxpbmVGcmFnKTtyZXR1cm4gbmV3IG8odCxyLHMpfTt2YXIgbj10KCJnbC1idWZmZXIiKSxp PXQoImdsLXNoYWRlciIpLGE9dCgiLi9zaGFkZXJzIik7ZnVuY3Rpb24gbyh0LGUscil7dGhp cy5wbG90PXQsdGhpcy52Ym89ZSx0aGlzLnNoYWRlcj1yfXZhciBzLGwsYz1vLnByb3RvdHlw ZTtjLmJpbmQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNoYWRlcjt0aGlzLnZiby5iaW5kKCks dGhpcy5zaGFkZXIuYmluZCgpLHQuYXR0cmlidXRlcy5jb29yZC5wb2ludGVyKCksdC51bmlm b3Jtcy5zY3JlZW5Cb3g9dGhpcy5wbG90LnNjcmVlbkJveH0sYy5kcmF3Qm94PShzPVswLDBd LGw9WzAsMF0sZnVuY3Rpb24odCxlLHIsbixpKXt2YXIgYT10aGlzLnBsb3Qsbz10aGlzLnNo YWRlcixjPWEuZ2w7c1swXT10LHNbMV09ZSxsWzBdPXIsbFsxXT1uLG8udW5pZm9ybXMubG89 cyxvLnVuaWZvcm1zLmhpPWwsby51bmlmb3Jtcy5jb2xvcj1pLGMuZHJhd0FycmF5cyhjLlRS SUFOR0xFX1NUUklQLDAsNCl9KSxjLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnZiby5kaXNw b3NlKCksdGhpcy5zaGFkZXIuZGlzcG9zZSgpfX0seyIuL3NoYWRlcnMiOjExNiwiZ2wtYnVm ZmVyIjo3OCwiZ2wtc2hhZGVyIjoxMzJ9XSwxMTQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2wscj1uKGUpLGE9aShlLG8u Z3JpZFZlcnQsby5ncmlkRnJhZyksbD1pKGUsby50aWNrVmVydCxvLmdyaWRGcmFnKTtyZXR1 cm4gbmV3IHModCxyLGEsbCl9O3ZhciBuPXQoImdsLWJ1ZmZlciIpLGk9dCgiZ2wtc2hhZGVy IiksYT10KCJiaW5hcnktc2VhcmNoLWJvdW5kcyIpLG89dCgiLi9zaGFkZXJzIik7ZnVuY3Rp b24gcyh0LGUscixuKXt0aGlzLnBsb3Q9dCx0aGlzLnZibz1lLHRoaXMuc2hhZGVyPXIsdGhp cy50aWNrU2hhZGVyPW4sdGhpcy50aWNrcz1bW10sW11dfWZ1bmN0aW9uIGwodCxlKXtyZXR1 cm4gdC1lfXZhciBjLHUsZixoLHAsZD1zLnByb3RvdHlwZTtkLmRyYXc9KGM9WzAsMF0sdT1b MCwwXSxmPVswLDBdLGZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMucGxvdCxlPXRoaXMudmJv LHI9dGhpcy5zaGFkZXIsbj10aGlzLnRpY2tzLGk9dC5nbCxhPXQuX3RpY2tCb3VuZHMsbz10 LmRhdGFCb3gscz10LnZpZXdCb3gsbD10LmdyaWRMaW5lV2lkdGgsaD10LmdyaWRMaW5lQ29s b3IscD10LmdyaWRMaW5lRW5hYmxlLGQ9dC5waXhlbFJhdGlvLG09MDttPDI7KyttKXt2YXIg Zz1hW21dLHY9YVttKzJdLWcseT0uNSoob1ttKzJdK29bbV0pLHg9b1ttKzJdLW9bbV07dVtt XT0yKnYveCxjW21dPTIqKGcteSkveH1yLmJpbmQoKSxlLmJpbmQoKSxyLmF0dHJpYnV0ZXMu ZGF0YUNvb3JkLnBvaW50ZXIoKSxyLnVuaWZvcm1zLmRhdGFTaGlmdD1jLHIudW5pZm9ybXMu ZGF0YVNjYWxlPXU7dmFyIGI9MDtmb3IobT0wO208MjsrK20pe2ZbMF09ZlsxXT0wLGZbbV09 MSxyLnVuaWZvcm1zLmRhdGFBeGlzPWYsci51bmlmb3Jtcy5saW5lV2lkdGg9bFttXS8oc1tt KzJdLXNbbV0pKmQsci51bmlmb3Jtcy5jb2xvcj1oW21dO3ZhciBfPTYqblttXS5sZW5ndGg7 cFttXSYmXyYmaS5kcmF3QXJyYXlzKGkuVFJJQU5HTEVTLGIsXyksYis9X319KSxkLmRyYXdU aWNrTWFya3M9ZnVuY3Rpb24oKXt2YXIgdD1bMCwwXSxlPVswLDBdLHI9WzEsMF0sbj1bMCwx XSxpPVswLDBdLG89WzAsMF07cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBzPXRoaXMucGxv dCxjPXRoaXMudmJvLHU9dGhpcy50aWNrU2hhZGVyLGY9dGhpcy50aWNrcyxoPXMuZ2wscD1z Ll90aWNrQm91bmRzLGQ9cy5kYXRhQm94LG09cy52aWV3Qm94LGc9cy5waXhlbFJhdGlvLHY9 cy5zY3JlZW5Cb3gseT12WzJdLXZbMF0seD12WzNdLXZbMV0sYj1tWzJdLW1bMF0sXz1tWzNd LW1bMV0sdz0wO3c8MjsrK3cpe3ZhciBUPXBbd10saz1wW3crMl0tVCxBPS41KihkW3crMl0r ZFt3XSksTT1kW3crMl0tZFt3XTtlW3ddPTIqay9NLHRbd109MiooVC1BKS9NfWVbMF0qPWIv eSx0WzBdKj1iL3ksZVsxXSo9Xy94LHRbMV0qPV8veCx1LmJpbmQoKSxjLmJpbmQoKSx1LmF0 dHJpYnV0ZXMuZGF0YUNvb3JkLnBvaW50ZXIoKTt2YXIgUz11LnVuaWZvcm1zO1MuZGF0YVNo aWZ0PXQsUy5kYXRhU2NhbGU9ZTt2YXIgRT1zLnRpY2tNYXJrTGVuZ3RoLEw9cy50aWNrTWFy a1dpZHRoLEM9cy50aWNrTWFya0NvbG9yLFA9NipmWzBdLmxlbmd0aCxJPU1hdGgubWluKGEu Z2UoZlswXSwoZFswXS1wWzBdKS8ocFsyXS1wWzBdKSxsKSxmWzBdLmxlbmd0aCksTz1NYXRo Lm1pbihhLmd0KGZbMF0sKGRbMl0tcFswXSkvKHBbMl0tcFswXSksbCksZlswXS5sZW5ndGgp LHo9MCs2KkksRD02Kk1hdGgubWF4KDAsTy1JKSxSPU1hdGgubWluKGEuZ2UoZlsxXSwoZFsx XS1wWzFdKS8ocFszXS1wWzFdKSxsKSxmWzFdLmxlbmd0aCksRj1NYXRoLm1pbihhLmd0KGZb MV0sKGRbM10tcFsxXSkvKHBbM10tcFsxXSksbCksZlsxXS5sZW5ndGgpLEI9UCs2KlIsTj02 Kk1hdGgubWF4KDAsRi1SKTtpWzBdPTIqKG1bMF0tRVsxXSkveS0xLGlbMV09KG1bM10rbVsx XSkveC0xLG9bMF09RVsxXSpnL3ksb1sxXT1MWzFdKmcveCxOJiYoUy5jb2xvcj1DWzFdLFMu dGlja1NjYWxlPW8sUy5kYXRhQXhpcz1uLFMuc2NyZWVuT2Zmc2V0PWksaC5kcmF3QXJyYXlz KGguVFJJQU5HTEVTLEIsTikpLGlbMF09KG1bMl0rbVswXSkveS0xLGlbMV09MioobVsxXS1F WzBdKS94LTEsb1swXT1MWzBdKmcveSxvWzFdPUVbMF0qZy94LEQmJihTLmNvbG9yPUNbMF0s Uy50aWNrU2NhbGU9byxTLmRhdGFBeGlzPXIsUy5zY3JlZW5PZmZzZXQ9aSxoLmRyYXdBcnJh eXMoaC5UUklBTkdMRVMseixEKSksaVswXT0yKihtWzJdK0VbM10pL3ktMSxpWzFdPShtWzNd K21bMV0pL3gtMSxvWzBdPUVbM10qZy95LG9bMV09TFszXSpnL3gsTiYmKFMuY29sb3I9Q1sz XSxTLnRpY2tTY2FsZT1vLFMuZGF0YUF4aXM9bixTLnNjcmVlbk9mZnNldD1pLGguZHJhd0Fy cmF5cyhoLlRSSUFOR0xFUyxCLE4pKSxpWzBdPShtWzJdK21bMF0pL3ktMSxpWzFdPTIqKG1b M10rRVsyXSkveC0xLG9bMF09TFsyXSpnL3ksb1sxXT1FWzJdKmcveCxEJiYoUy5jb2xvcj1D WzJdLFMudGlja1NjYWxlPW8sUy5kYXRhQXhpcz1yLFMuc2NyZWVuT2Zmc2V0PWksaC5kcmF3 QXJyYXlzKGguVFJJQU5HTEVTLHosRCkpfX0oKSxkLnVwZGF0ZT0oaD1bMSwxLC0xLC0xLDEs LTFdLHA9WzEsLTEsMSwxLC0xLC0xXSxmdW5jdGlvbih0KXtmb3IodmFyIGU9dC50aWNrcyxy PXQuYm91bmRzLG49bmV3IEZsb2F0MzJBcnJheSgxOCooZVswXS5sZW5ndGgrZVsxXS5sZW5n dGgpKSxpPSh0aGlzLnBsb3QuemVyb0xpbmVFbmFibGUsMCksYT1bW10sW11dLG89MDtvPDI7 KytvKWZvcih2YXIgcz1hW29dLGw9ZVtvXSxjPXJbb10sdT1yW28rMl0sZj0wO2Y8bC5sZW5n dGg7KytmKXt2YXIgZD0obFtmXS54LWMpLyh1LWMpO3MucHVzaChkKTtmb3IodmFyIG09MDtt PDY7KyttKW5baSsrXT1kLG5baSsrXT1oW21dLG5baSsrXT1wW21dfXRoaXMudGlja3M9YSx0 aGlzLnZiby51cGRhdGUobil9KSxkLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnZiby5kaXNw b3NlKCksdGhpcy5zaGFkZXIuZGlzcG9zZSgpLHRoaXMudGlja1NoYWRlci5kaXNwb3NlKCl9 fSx7Ii4vc2hhZGVycyI6MTE2LCJiaW5hcnktc2VhcmNoLWJvdW5kcyI6MzEsImdsLWJ1ZmZl ciI6NzgsImdsLXNoYWRlciI6MTMyfV0sMTE1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10LmdsLHI9bihlLFstMSwtMSwtMSwx LDEsLTEsMSwxXSkscz1pKGUsYS5saW5lVmVydCxhLmxpbmVGcmFnKTtyZXR1cm4gbmV3IG8o dCxyLHMpfTt2YXIgbj10KCJnbC1idWZmZXIiKSxpPXQoImdsLXNoYWRlciIpLGE9dCgiLi9z aGFkZXJzIik7ZnVuY3Rpb24gbyh0LGUscil7dGhpcy5wbG90PXQsdGhpcy52Ym89ZSx0aGlz LnNoYWRlcj1yfXZhciBzLGwsYz1vLnByb3RvdHlwZTtjLmJpbmQ9ZnVuY3Rpb24oKXt2YXIg dD10aGlzLnNoYWRlcjt0aGlzLnZiby5iaW5kKCksdGhpcy5zaGFkZXIuYmluZCgpLHQuYXR0 cmlidXRlcy5jb29yZC5wb2ludGVyKCksdC51bmlmb3Jtcy5zY3JlZW5Cb3g9dGhpcy5wbG90 LnNjcmVlbkJveH0sYy5kcmF3TGluZT0ocz1bMCwwXSxsPVswLDBdLGZ1bmN0aW9uKHQsZSxy LG4saSxhKXt2YXIgbz10aGlzLnBsb3QsYz10aGlzLnNoYWRlcix1PW8uZ2w7c1swXT10LHNb MV09ZSxsWzBdPXIsbFsxXT1uLGMudW5pZm9ybXMuc3RhcnQ9cyxjLnVuaWZvcm1zLmVuZD1s LGMudW5pZm9ybXMud2lkdGg9aSpvLnBpeGVsUmF0aW8sYy51bmlmb3Jtcy5jb2xvcj1hLHUu ZHJhd0FycmF5cyh1LlRSSUFOR0xFX1NUUklQLDAsNCl9KSxjLmRpc3Bvc2U9ZnVuY3Rpb24o KXt0aGlzLnZiby5kaXNwb3NlKCksdGhpcy5zaGFkZXIuZGlzcG9zZSgpfX0seyIuL3NoYWRl cnMiOjExNiwiZ2wtYnVmZmVyIjo3OCwiZ2wtc2hhZGVyIjoxMzJ9XSwxMTY6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZ2xzbGlmeSIpLGk9bihbInByZWNpc2lv biBsb3dwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcbnVuaWZvcm0gdmVjNCBjb2xvcjtc bnZvaWQgbWFpbigpIHtcbiAgZ2xfRnJhZ0NvbG9yID0gdmVjNChjb2xvci54eXogKiBjb2xv ci53LCBjb2xvci53KTtcbn1cbiJdKTtlLmV4cG9ydHM9e2xpbmVWZXJ0Om4oWyJwcmVjaXNp b24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWMy IGNvb3JkO1xuXG51bmlmb3JtIHZlYzQgc2NyZWVuQm94O1xudW5pZm9ybSB2ZWMyIHN0YXJ0 LCBlbmQ7XG51bmlmb3JtIGZsb2F0IHdpZHRoO1xuXG52ZWMyIHBlcnAodmVjMiB2KSB7XG4g IHJldHVybiB2ZWMyKHYueSwgLXYueCk7XG59XG5cbnZlYzIgc2NyZWVuKHZlYzIgdikge1xu ICByZXR1cm4gMi4wICogKHYgLSBzY3JlZW5Cb3gueHkpIC8gKHNjcmVlbkJveC56dyAtIHNj cmVlbkJveC54eSkgLSAxLjA7XG59XG5cbnZvaWQgbWFpbigpIHtcbiAgdmVjMiBkZWx0YSA9 IG5vcm1hbGl6ZShwZXJwKHN0YXJ0IC0gZW5kKSk7XG4gIHZlYzIgb2Zmc2V0ID0gbWl4KHN0 YXJ0LCBlbmQsIDAuNSAqIChjb29yZC55KzEuMCkpO1xuICBnbF9Qb3NpdGlvbiA9IHZlYzQo c2NyZWVuKG9mZnNldCArIDAuNSAqIHdpZHRoICogZGVsdGEgKiBjb29yZC54KSwgMCwgMSk7 XG59XG4iXSksbGluZUZyYWc6aSx0ZXh0VmVydDpuKFsiI2RlZmluZSBHTFNMSUZZIDFcbmF0 dHJpYnV0ZSB2ZWMzIHRleHRDb29yZGluYXRlO1xuXG51bmlmb3JtIHZlYzIgZGF0YVNjYWxl LCBkYXRhU2hpZnQsIGRhdGFBeGlzLCBzY3JlZW5PZmZzZXQsIHRleHRTY2FsZTtcbnVuaWZv cm0gZmxvYXQgYW5nbGU7XG5cbnZvaWQgbWFpbigpIHtcbiAgZmxvYXQgZGF0YU9mZnNldCAg PSB0ZXh0Q29vcmRpbmF0ZS56O1xuICB2ZWMyIGdseXBoT2Zmc2V0ICA9IHRleHRDb29yZGlu YXRlLnh5O1xuICBtYXQyIGdseXBoTWF0cml4ID0gbWF0Mihjb3MoYW5nbGUpLCBzaW4oYW5n bGUpLCAtc2luKGFuZ2xlKSwgY29zKGFuZ2xlKSk7XG4gIHZlYzIgc2NyZWVuQ29vcmRpbmF0 ZSA9IGRhdGFBeGlzICogKGRhdGFTY2FsZSAqIGRhdGFPZmZzZXQgKyBkYXRhU2hpZnQpICtc biAgICBnbHlwaE1hdHJpeCAqIGdseXBoT2Zmc2V0ICogdGV4dFNjYWxlICsgc2NyZWVuT2Zm c2V0O1xuICBnbF9Qb3NpdGlvbiA9IHZlYzQoc2NyZWVuQ29vcmRpbmF0ZSwgMCwgMSk7XG59 XG4iXSksdGV4dEZyYWc6aSxncmlkVmVydDpuKFsicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7 XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMyBkYXRhQ29vcmQ7XG5cbnVu aWZvcm0gdmVjMiBkYXRhQXhpcywgZGF0YVNoaWZ0LCBkYXRhU2NhbGU7XG51bmlmb3JtIGZs b2F0IGxpbmVXaWR0aDtcblxudm9pZCBtYWluKCkge1xuICB2ZWMyIHBvcyA9IGRhdGFBeGlz ICogKGRhdGFTY2FsZSAqIGRhdGFDb29yZC54ICsgZGF0YVNoaWZ0KTtcbiAgcG9zICs9IDEw LjAgKiBkYXRhQ29vcmQueSAqIHZlYzIoZGF0YUF4aXMueSwgLWRhdGFBeGlzLngpICsgZGF0 YUNvb3JkLnogKiBsaW5lV2lkdGg7XG4gIGdsX1Bvc2l0aW9uID0gdmVjNChwb3MsIDAsIDEp O1xufVxuIl0pLGdyaWRGcmFnOmksYm94VmVydDpuKFsicHJlY2lzaW9uIG1lZGl1bXAgZmxv YXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMiBjb29yZDtcblxudW5p Zm9ybSB2ZWM0IHNjcmVlbkJveDtcbnVuaWZvcm0gdmVjMiBsbywgaGk7XG5cbnZlYzIgc2Ny ZWVuKHZlYzIgdikge1xuICByZXR1cm4gMi4wICogKHYgLSBzY3JlZW5Cb3gueHkpIC8gKHNj cmVlbkJveC56dyAtIHNjcmVlbkJveC54eSkgLSAxLjA7XG59XG5cbnZvaWQgbWFpbigpIHtc biAgZ2xfUG9zaXRpb24gPSB2ZWM0KHNjcmVlbihtaXgobG8sIGhpLCBjb29yZCkpLCAwLCAx KTtcbn1cbiJdKSx0aWNrVmVydDpuKFsicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVm aW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMyBkYXRhQ29vcmQ7XG5cbnVuaWZvcm0g dmVjMiBkYXRhQXhpcywgZGF0YVNoaWZ0LCBkYXRhU2NhbGUsIHNjcmVlbk9mZnNldCwgdGlj a1NjYWxlO1xuXG52b2lkIG1haW4oKSB7XG4gIHZlYzIgcG9zID0gZGF0YUF4aXMgKiAoZGF0 YVNjYWxlICogZGF0YUNvb3JkLnggKyBkYXRhU2hpZnQpO1xuICBnbF9Qb3NpdGlvbiA9IHZl YzQocG9zICsgdGlja1NjYWxlKmRhdGFDb29yZC55eiArIHNjcmVlbk9mZnNldCwgMCwgMSk7 XG59XG4iXSl9fSx7Z2xzbGlmeToyMzF9XSwxMTc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2wscj1uKGUpLGE9aShlLHMu dGV4dFZlcnQscy50ZXh0RnJhZyk7cmV0dXJuIG5ldyBsKHQscixhKX07dmFyIG49dCgiZ2wt YnVmZmVyIiksaT10KCJnbC1zaGFkZXIiKSxhPXQoInRleHQtY2FjaGUiKSxvPXQoImJpbmFy eS1zZWFyY2gtYm91bmRzIikscz10KCIuL3NoYWRlcnMiKTtmdW5jdGlvbiBsKHQsZSxyKXt0 aGlzLnBsb3Q9dCx0aGlzLnZibz1lLHRoaXMuc2hhZGVyPXIsdGhpcy50aWNrT2Zmc2V0PVtb XSxbXV0sdGhpcy50aWNrWD1bW10sW11dLHRoaXMubGFiZWxPZmZzZXQ9WzAsMF0sdGhpcy5s YWJlbENvdW50PVswLDBdfXZhciBjLHUsZixoLHAsZCxtPWwucHJvdG90eXBlO20uZHJhd1Rp Y2tzPShjPVswLDBdLHU9WzAsMF0sZj1bMCwwXSxmdW5jdGlvbih0KXt2YXIgZT10aGlzLnBs b3Qscj10aGlzLnNoYWRlcixuPXRoaXMudGlja1hbdF0saT10aGlzLnRpY2tPZmZzZXRbdF0s YT1lLmdsLHM9ZS52aWV3Qm94LGw9ZS5kYXRhQm94LGg9ZS5zY3JlZW5Cb3gscD1lLnBpeGVs UmF0aW8sZD1lLnRpY2tFbmFibGUsbT1lLnRpY2tQYWQsZz1lLnRpY2tDb2xvcix2PWUudGlj a0FuZ2xlLHk9ZS5sYWJlbEVuYWJsZSx4PWUubGFiZWxQYWQsYj1lLmxhYmVsQ29sb3IsXz1l LmxhYmVsQW5nbGUsdz10aGlzLmxhYmVsT2Zmc2V0W3RdLFQ9dGhpcy5sYWJlbENvdW50W3Rd LGs9by5sdChuLGxbdF0pLEE9by5sZShuLGxbdCsyXSk7Y1swXT1jWzFdPTAsY1t0XT0xLHVb dF09KHNbMit0XStzW3RdKS8oaFsyK3RdLWhbdF0pLTE7dmFyIE09Mi9oWzIrKDFedCldLWhb MV50XTt1WzFedF09TSpzWzFedF0tMSxkW3RdJiYodVsxXnRdLT1NKnAqbVt0XSxrPEEmJmlb QV0+aVtrXSYmKHIudW5pZm9ybXMuZGF0YUF4aXM9YyxyLnVuaWZvcm1zLnNjcmVlbk9mZnNl dD11LHIudW5pZm9ybXMuY29sb3I9Z1t0XSxyLnVuaWZvcm1zLmFuZ2xlPXZbdF0sYS5kcmF3 QXJyYXlzKGEuVFJJQU5HTEVTLGlba10saVtBXS1pW2tdKSkpLHlbdF0mJlQmJih1WzFedF0t PU0qcCp4W3RdLHIudW5pZm9ybXMuZGF0YUF4aXM9ZixyLnVuaWZvcm1zLnNjcmVlbk9mZnNl dD11LHIudW5pZm9ybXMuY29sb3I9Ylt0XSxyLnVuaWZvcm1zLmFuZ2xlPV9bdF0sYS5kcmF3 QXJyYXlzKGEuVFJJQU5HTEVTLHcsVCkpLHVbMV50XT1NKnNbMisoMV50KV0tMSxkW3QrMl0m Jih1WzFedF0rPU0qcCptW3QrMl0sazxBJiZpW0FdPmlba10mJihyLnVuaWZvcm1zLmRhdGFB eGlzPWMsci51bmlmb3Jtcy5zY3JlZW5PZmZzZXQ9dSxyLnVuaWZvcm1zLmNvbG9yPWdbdCsy XSxyLnVuaWZvcm1zLmFuZ2xlPXZbdCsyXSxhLmRyYXdBcnJheXMoYS5UUklBTkdMRVMsaVtr XSxpW0FdLWlba10pKSkseVt0KzJdJiZUJiYodVsxXnRdKz1NKnAqeFt0KzJdLHIudW5pZm9y bXMuZGF0YUF4aXM9ZixyLnVuaWZvcm1zLnNjcmVlbk9mZnNldD11LHIudW5pZm9ybXMuY29s b3I9Ylt0KzJdLHIudW5pZm9ybXMuYW5nbGU9X1t0KzJdLGEuZHJhd0FycmF5cyhhLlRSSUFO R0xFUyx3LFQpKX0pLG0uZHJhd1RpdGxlPWZ1bmN0aW9uKCl7dmFyIHQ9WzAsMF0sZT1bMCww XTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj10aGlzLnBsb3Qsbj10aGlzLnNoYWRlcixpPXIu Z2wsYT1yLnNjcmVlbkJveCxvPXIudGl0bGVDZW50ZXIscz1yLnRpdGxlQW5nbGUsbD1yLnRp dGxlQ29sb3IsYz1yLnBpeGVsUmF0aW87aWYodGhpcy50aXRsZUNvdW50KXtmb3IodmFyIHU9 MDt1PDI7Kyt1KWVbdV09Mioob1t1XSpjLWFbdV0pLyhhWzIrdV0tYVt1XSktMTtuLmJpbmQo KSxuLnVuaWZvcm1zLmRhdGFBeGlzPXQsbi51bmlmb3Jtcy5zY3JlZW5PZmZzZXQ9ZSxuLnVu aWZvcm1zLmFuZ2xlPXMsbi51bmlmb3Jtcy5jb2xvcj1sLGkuZHJhd0FycmF5cyhpLlRSSUFO R0xFUyx0aGlzLnRpdGxlT2Zmc2V0LHRoaXMudGl0bGVDb3VudCl9fX0oKSxtLmJpbmQ9KGg9 WzAsMF0scD1bMCwwXSxkPVswLDBdLGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wbG90LGU9dGhp cy5zaGFkZXIscj10Ll90aWNrQm91bmRzLG49dC5kYXRhQm94LGk9dC5zY3JlZW5Cb3gsYT10 LnZpZXdCb3g7ZS5iaW5kKCk7Zm9yKHZhciBvPTA7bzwyOysrbyl7dmFyIHM9cltvXSxsPXJb bysyXS1zLGM9LjUqKG5bbysyXStuW29dKSx1PW5bbysyXS1uW29dLGY9YVtvXSxtPWFbbysy XS1mLGc9aVtvXSx2PWlbbysyXS1nO3Bbb109MipsL3UqbS92LGhbb109Mioocy1jKS91Km0v dn1kWzFdPTIqdC5waXhlbFJhdGlvLyhpWzNdLWlbMV0pLGRbMF09ZFsxXSooaVszXS1pWzFd KS8oaVsyXS1pWzBdKSxlLnVuaWZvcm1zLmRhdGFTY2FsZT1wLGUudW5pZm9ybXMuZGF0YVNo aWZ0PWgsZS51bmlmb3Jtcy50ZXh0U2NhbGU9ZCx0aGlzLnZiby5iaW5kKCksZS5hdHRyaWJ1 dGVzLnRleHRDb29yZGluYXRlLnBvaW50ZXIoKX0pLG0udXBkYXRlPWZ1bmN0aW9uKHQpe3Zh ciBlLHIsbixpLG8scz1bXSxsPXQudGlja3MsYz10LmJvdW5kcztmb3Iobz0wO288MjsrK28p e3ZhciB1PVtNYXRoLmZsb29yKHMubGVuZ3RoLzMpXSxmPVstMS8wXSxoPWxbb107Zm9yKGU9 MDtlPGgubGVuZ3RoOysrZSl7dmFyIHA9aFtlXSxkPXAueCxtPXAudGV4dCxnPXAuZm9udHx8 InNhbnMtc2VyaWYiO2k9cC5mb250U2l6ZXx8MTI7Zm9yKHZhciB2PTEvKGNbbysyXS1jW29d KSx5PWNbb10seD1tLnNwbGl0KCJcbiIpLGI9MDtiPHgubGVuZ3RoO2IrKylmb3Iobj1hKGcs eFtiXSkuZGF0YSxyPTA7cjxuLmxlbmd0aDtyKz0yKXMucHVzaChuW3JdKmksLW5bcisxXSpp LWIqaSoxLjIsKGQteSkqdik7dS5wdXNoKE1hdGguZmxvb3Iocy5sZW5ndGgvMykpLGYucHVz aChkKX10aGlzLnRpY2tPZmZzZXRbb109dSx0aGlzLnRpY2tYW29dPWZ9Zm9yKG89MDtvPDI7 KytvKXtmb3IodGhpcy5sYWJlbE9mZnNldFtvXT1NYXRoLmZsb29yKHMubGVuZ3RoLzMpLG49 YSh0LmxhYmVsRm9udFtvXSx0LmxhYmVsc1tvXSx7dGV4dEFsaWduOiJjZW50ZXIifSkuZGF0 YSxpPXQubGFiZWxTaXplW29dLGU9MDtlPG4ubGVuZ3RoO2UrPTIpcy5wdXNoKG5bZV0qaSwt bltlKzFdKmksMCk7dGhpcy5sYWJlbENvdW50W29dPU1hdGguZmxvb3Iocy5sZW5ndGgvMykt dGhpcy5sYWJlbE9mZnNldFtvXX1mb3IodGhpcy50aXRsZU9mZnNldD1NYXRoLmZsb29yKHMu bGVuZ3RoLzMpLG49YSh0LnRpdGxlRm9udCx0LnRpdGxlKS5kYXRhLGk9dC50aXRsZVNpemUs ZT0wO2U8bi5sZW5ndGg7ZSs9MilzLnB1c2gobltlXSppLC1uW2UrMV0qaSwwKTt0aGlzLnRp dGxlQ291bnQ9TWF0aC5mbG9vcihzLmxlbmd0aC8zKS10aGlzLnRpdGxlT2Zmc2V0LHRoaXMu dmJvLnVwZGF0ZShzKX0sbS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy52Ym8uZGlzcG9zZSgp LHRoaXMuc2hhZGVyLmRpc3Bvc2UoKX19LHsiLi9zaGFkZXJzIjoxMTYsImJpbmFyeS1zZWFy Y2gtYm91bmRzIjozMSwiZ2wtYnVmZmVyIjo3OCwiZ2wtc2hhZGVyIjoxMzIsInRleHQtY2Fj aGUiOjMwM31dLDExODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9 ZnVuY3Rpb24odCl7dmFyIGU9dC5nbCxyPW4oZSxbZS5kcmF3aW5nQnVmZmVyV2lkdGgsZS5k cmF3aW5nQnVmZmVySGVpZ2h0XSksYz1uZXcgbChlLHIpO3JldHVybiBjLmdyaWQ9aShjKSxj LnRleHQ9YShjKSxjLmxpbmU9byhjKSxjLmJveD1zKGMpLGMudXBkYXRlKHQpLGN9O3ZhciBu PXQoImdsLXNlbGVjdC1zdGF0aWMiKSxpPXQoIi4vbGliL2dyaWQiKSxhPXQoIi4vbGliL3Rl eHQiKSxvPXQoIi4vbGliL2xpbmUiKSxzPXQoIi4vbGliL2JveCIpO2Z1bmN0aW9uIGwodCxl KXt0aGlzLmdsPXQsdGhpcy5waWNrQnVmZmVyPWUsdGhpcy5zY3JlZW5Cb3g9WzAsMCx0LmRy YXdpbmdCdWZmZXJXaWR0aCx0LmRyYXdpbmdCdWZmZXJIZWlnaHRdLHRoaXMudmlld0JveD1b MCwwLDAsMF0sdGhpcy5kYXRhQm94PVstMTAsLTEwLDEwLDEwXSx0aGlzLmdyaWRMaW5lRW5h YmxlPVshMCwhMF0sdGhpcy5ncmlkTGluZVdpZHRoPVsxLDFdLHRoaXMuZ3JpZExpbmVDb2xv cj1bWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy5waXhlbFJhdGlvPTEsdGhpcy50aWNrTWFy a0xlbmd0aD1bMCwwLDAsMF0sdGhpcy50aWNrTWFya1dpZHRoPVswLDAsMCwwXSx0aGlzLnRp Y2tNYXJrQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0s dGhpcy50aWNrUGFkPVsxNSwxNSwxNSwxNV0sdGhpcy50aWNrQW5nbGU9WzAsMCwwLDBdLHRo aXMudGlja0VuYWJsZT1bITAsITAsITAsITBdLHRoaXMudGlja0NvbG9yPVtbMCwwLDAsMV0s WzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMubGFiZWxQYWQ9WzE1LDE1LDE1 LDE1XSx0aGlzLmxhYmVsQW5nbGU9WzAsTWF0aC5QSS8yLDAsMypNYXRoLlBJLzJdLHRoaXMu bGFiZWxFbmFibGU9WyEwLCEwLCEwLCEwXSx0aGlzLmxhYmVsQ29sb3I9W1swLDAsMCwxXSxb MCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy50aXRsZUNlbnRlcj1bMCwwXSx0 aGlzLnRpdGxlRW5hYmxlPSEwLHRoaXMudGl0bGVBbmdsZT0wLHRoaXMudGl0bGVDb2xvcj1b MCwwLDAsMV0sdGhpcy5ib3JkZXJDb2xvcj1bMCwwLDAsMF0sdGhpcy5iYWNrZ3JvdW5kQ29s b3I9WzAsMCwwLDBdLHRoaXMuemVyb0xpbmVFbmFibGU9WyEwLCEwXSx0aGlzLnplcm9MaW5l V2lkdGg9WzQsNF0sdGhpcy56ZXJvTGluZUNvbG9yPVtbMCwwLDAsMV0sWzAsMCwwLDFdXSx0 aGlzLmJvcmRlckxpbmVFbmFibGU9WyEwLCEwLCEwLCEwXSx0aGlzLmJvcmRlckxpbmVXaWR0 aD1bMiwyLDIsMl0sdGhpcy5ib3JkZXJMaW5lQ29sb3I9W1swLDAsMCwxXSxbMCwwLDAsMV0s WzAsMCwwLDFdLFswLDAsMCwxXV0sdGhpcy5ncmlkPW51bGwsdGhpcy50ZXh0PW51bGwsdGhp cy5saW5lPW51bGwsdGhpcy5ib3g9bnVsbCx0aGlzLm9iamVjdHM9W10sdGhpcy5vdmVybGF5 cz1bXSx0aGlzLl90aWNrQm91bmRzPVsxLzAsMS8wLC0xLzAsLTEvMF0sdGhpcy5zdGF0aWM9 ITEsdGhpcy5kaXJ0eT0hMSx0aGlzLnBpY2tEaXJ0eT0hMSx0aGlzLnBpY2tEZWxheT0xMjAs dGhpcy5waWNrUmFkaXVzPTEwLHRoaXMuX3BpY2tUaW1lb3V0PW51bGwsdGhpcy5fZHJhd1Bp Y2s9dGhpcy5kcmF3UGljay5iaW5kKHRoaXMpLHRoaXMuX2RlcHRoQ291bnRlcj0wfXZhciBj PWwucHJvdG90eXBlO2Z1bmN0aW9uIHUodCl7Zm9yKHZhciBlPXQuc2xpY2UoKSxyPTA7cjxl Lmxlbmd0aDsrK3IpZVtyXT1lW3JdLnNsaWNlKCk7cmV0dXJuIGV9ZnVuY3Rpb24gZih0LGUp e3JldHVybiB0LngtZS54fWMuc2V0RGlydHk9ZnVuY3Rpb24oKXt0aGlzLmRpcnR5PXRoaXMu cGlja0RpcnR5PSEwfSxjLnNldE92ZXJsYXlEaXJ0eT1mdW5jdGlvbigpe3RoaXMuZGlydHk9 ITB9LGMubmV4dERlcHRoVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVwdGhDb3Vu dGVyKysvNjU1MzZ9LGMuZHJhdz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2wsZT10aGlzLnNj cmVlbkJveCxyPXRoaXMudmlld0JveCxuPXRoaXMuZGF0YUJveCxpPXRoaXMucGl4ZWxSYXRp byxhPXRoaXMuZ3JpZCxvPXRoaXMubGluZSxzPXRoaXMudGV4dCxsPXRoaXMub2JqZWN0cztp Zih0aGlzLl9kZXB0aENvdW50ZXI9MCx0aGlzLnBpY2tEaXJ0eSYmKHRoaXMuX3BpY2tUaW1l b3V0JiZjbGVhclRpbWVvdXQodGhpcy5fcGlja1RpbWVvdXQpLHRoaXMucGlja0RpcnR5PSEx LHRoaXMuX3BpY2tUaW1lb3V0PXNldFRpbWVvdXQodGhpcy5fZHJhd1BpY2ssdGhpcy5waWNr RGVsYXkpKSx0aGlzLmRpcnR5KXtpZih0aGlzLmRpcnR5PSExLHQuYmluZEZyYW1lYnVmZmVy KHQuRlJBTUVCVUZGRVIsbnVsbCksdC5lbmFibGUodC5TQ0lTU09SX1RFU1QpLHQuZGlzYWJs ZSh0LkRFUFRIX1RFU1QpLHQuZGVwdGhGdW5jKHQuTEVTUyksdC5kZXB0aE1hc2soITEpLHQu ZW5hYmxlKHQuQkxFTkQpLHQuYmxlbmRFcXVhdGlvbih0LkZVTkNfQURELHQuRlVOQ19BREQp LHQuYmxlbmRGdW5jKHQuT05FLHQuT05FX01JTlVTX1NSQ19BTFBIQSksdGhpcy5ib3JkZXJD b2xvcil7dC5zY2lzc29yKGVbMF0sZVsxXSxlWzJdLWVbMF0sZVszXS1lWzFdKTt2YXIgYz10 aGlzLmJvcmRlckNvbG9yO3QuY2xlYXJDb2xvcihjWzBdKmNbM10sY1sxXSpjWzNdLGNbMl0q Y1szXSxjWzNdKSx0LmNsZWFyKHQuQ09MT1JfQlVGRkVSX0JJVHx0LkRFUFRIX0JVRkZFUl9C SVQpfXQuc2Npc3NvcihyWzBdLHJbMV0sclsyXS1yWzBdLHJbM10tclsxXSksdC52aWV3cG9y dChyWzBdLHJbMV0sclsyXS1yWzBdLHJbM10tclsxXSk7dmFyIHU9dGhpcy5iYWNrZ3JvdW5k Q29sb3I7dC5jbGVhckNvbG9yKHVbMF0qdVszXSx1WzFdKnVbM10sdVsyXSp1WzNdLHVbM10p LHQuY2xlYXIodC5DT0xPUl9CVUZGRVJfQklUKSxhLmRyYXcoKTt2YXIgZj10aGlzLnplcm9M aW5lRW5hYmxlLGg9dGhpcy56ZXJvTGluZUNvbG9yLHA9dGhpcy56ZXJvTGluZVdpZHRoO2lm KGZbMF18fGZbMV0pe28uYmluZCgpO2Zvcih2YXIgZD0wO2Q8MjsrK2QpaWYoZltkXSYmbltk XTw9MCYmbltkKzJdPj0wKXt2YXIgbT1lW2RdLW5bZF0qKGVbZCsyXS1lW2RdKS8obltkKzJd LW5bZF0pOzA9PT1kP28uZHJhd0xpbmUobSxlWzFdLG0sZVszXSxwW2RdLGhbZF0pOm8uZHJh d0xpbmUoZVswXSxtLGVbMl0sbSxwW2RdLGhbZF0pfX1mb3IoZD0wO2Q8bC5sZW5ndGg7Kytk KWxbZF0uZHJhdygpO3Qudmlld3BvcnQoZVswXSxlWzFdLGVbMl0tZVswXSxlWzNdLWVbMV0p LHQuc2Npc3NvcihlWzBdLGVbMV0sZVsyXS1lWzBdLGVbM10tZVsxXSksdGhpcy5ncmlkLmRy YXdUaWNrTWFya3MoKSxvLmJpbmQoKTt2YXIgZz10aGlzLmJvcmRlckxpbmVFbmFibGUsdj10 aGlzLmJvcmRlckxpbmVXaWR0aCx5PXRoaXMuYm9yZGVyTGluZUNvbG9yO2ZvcihnWzFdJiZv LmRyYXdMaW5lKHJbMF0sclsxXS0uNSp2WzFdKmksclswXSxyWzNdKy41KnZbM10qaSx2WzFd LHlbMV0pLGdbMF0mJm8uZHJhd0xpbmUoclswXS0uNSp2WzBdKmksclsxXSxyWzJdKy41KnZb Ml0qaSxyWzFdLHZbMF0seVswXSksZ1szXSYmby5kcmF3TGluZShyWzJdLHJbMV0tLjUqdlsx XSppLHJbMl0sclszXSsuNSp2WzNdKmksdlszXSx5WzNdKSxnWzJdJiZvLmRyYXdMaW5lKHJb MF0tLjUqdlswXSppLHJbM10sclsyXSsuNSp2WzJdKmksclszXSx2WzJdLHlbMl0pLHMuYmlu ZCgpLGQ9MDtkPDI7KytkKXMuZHJhd1RpY2tzKGQpO3RoaXMudGl0bGVFbmFibGUmJnMuZHJh d1RpdGxlKCk7dmFyIHg9dGhpcy5vdmVybGF5cztmb3IoZD0wO2Q8eC5sZW5ndGg7KytkKXhb ZF0uZHJhdygpO3QuZGlzYWJsZSh0LlNDSVNTT1JfVEVTVCksdC5kaXNhYmxlKHQuQkxFTkQp LHQuZGVwdGhNYXNrKCEwKX19LGMuZHJhd1BpY2s9ZnVuY3Rpb24oKXtpZighdGhpcy5zdGF0 aWMpe3ZhciB0PXRoaXMucGlja0J1ZmZlcjt0aGlzLmdsLHRoaXMuX3BpY2tUaW1lb3V0PW51 bGwsdC5iZWdpbigpO2Zvcih2YXIgZT0xLHI9dGhpcy5vYmplY3RzLG49MDtuPHIubGVuZ3Ro OysrbillPXJbbl0uZHJhd1BpY2soZSk7dC5lbmQoKX19LGMucGljaz1mdW5jdGlvbih0LGUp e2lmKCF0aGlzLnN0YXRpYyl7dmFyIHI9dGhpcy5waXhlbFJhdGlvLG49dGhpcy5waWNrUGl4 ZWxSYXRpbyxpPXRoaXMudmlld0JveCxhPTB8TWF0aC5yb3VuZCgodC1pWzBdL3IpKm4pLG89 MHxNYXRoLnJvdW5kKChlLWlbMV0vcikqbikscz10aGlzLnBpY2tCdWZmZXIucXVlcnkoYSxv LHRoaXMucGlja1JhZGl1cyk7aWYoIXMpcmV0dXJuIG51bGw7Zm9yKHZhciBsPXMuaWQrKHMu dmFsdWVbMF08PDgpKyhzLnZhbHVlWzFdPDwxNikrKHMudmFsdWVbMl08PDI0KSxjPXRoaXMu b2JqZWN0cyx1PTA7dTxjLmxlbmd0aDsrK3Upe3ZhciBmPWNbdV0ucGljayhhLG8sbCk7aWYo ZilyZXR1cm4gZn1yZXR1cm4gbnVsbH19LGMuc2V0U2NyZWVuQm94PWZ1bmN0aW9uKHQpe3Zh ciBlPXRoaXMuc2NyZWVuQm94LHI9dGhpcy5waXhlbFJhdGlvO2VbMF09MHxNYXRoLnJvdW5k KHRbMF0qciksZVsxXT0wfE1hdGgucm91bmQodFsxXSpyKSxlWzJdPTB8TWF0aC5yb3VuZCh0 WzJdKnIpLGVbM109MHxNYXRoLnJvdW5kKHRbM10qciksdGhpcy5zZXREaXJ0eSgpfSxjLnNl dERhdGFCb3g9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kYXRhQm94OyhlWzBdIT09dFswXXx8 ZVsxXSE9PXRbMV18fGVbMl0hPT10WzJdfHxlWzNdIT09dFszXSkmJihlWzBdPXRbMF0sZVsx XT10WzFdLGVbMl09dFsyXSxlWzNdPXRbM10sdGhpcy5zZXREaXJ0eSgpKX0sYy5zZXRWaWV3 Qm94PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucGl4ZWxSYXRpbyxyPXRoaXMudmlld0JveDty WzBdPTB8TWF0aC5yb3VuZCh0WzBdKmUpLHJbMV09MHxNYXRoLnJvdW5kKHRbMV0qZSksclsy XT0wfE1hdGgucm91bmQodFsyXSplKSxyWzNdPTB8TWF0aC5yb3VuZCh0WzNdKmUpO3ZhciBu PXRoaXMucGlja1BpeGVsUmF0aW87dGhpcy5waWNrQnVmZmVyLnNoYXBlPVswfE1hdGgucm91 bmQoKHRbMl0tdFswXSkqbiksMHxNYXRoLnJvdW5kKCh0WzNdLXRbMV0pKm4pXSx0aGlzLnNl dERpcnR5KCl9LGMudXBkYXRlPWZ1bmN0aW9uKHQpe3Q9dHx8e307dmFyIGU9dGhpcy5nbDt0 aGlzLnBpeGVsUmF0aW89dC5waXhlbFJhdGlvfHwxO3ZhciByPXRoaXMucGl4ZWxSYXRpbzt0 aGlzLnBpY2tQaXhlbFJhdGlvPU1hdGgubWF4KHIsMSksdGhpcy5zZXRTY3JlZW5Cb3godC5z Y3JlZW5Cb3h8fFswLDAsZS5kcmF3aW5nQnVmZmVyV2lkdGgvcixlLmRyYXdpbmdCdWZmZXJI ZWlnaHQvcl0pO3RoaXMuc2NyZWVuQm94O3RoaXMuc2V0Vmlld0JveCh0LnZpZXdCb3h8fFsu MTI1Kih0aGlzLnNjcmVlbkJveFsyXS10aGlzLnNjcmVlbkJveFswXSkvciwuMTI1Kih0aGlz LnNjcmVlbkJveFszXS10aGlzLnNjcmVlbkJveFsxXSkvciwuODc1Kih0aGlzLnNjcmVlbkJv eFsyXS10aGlzLnNjcmVlbkJveFswXSkvciwuODc1Kih0aGlzLnNjcmVlbkJveFszXS10aGlz LnNjcmVlbkJveFsxXSkvcl0pO3ZhciBuPXRoaXMudmlld0JveCxpPShuWzJdLW5bMF0pLyhu WzNdLW5bMV0pO3RoaXMuc2V0RGF0YUJveCh0LmRhdGFCb3h8fFstMTAsLTEwL2ksMTAsMTAv aV0pLHRoaXMuYm9yZGVyQ29sb3I9ITEhPT10LmJvcmRlckNvbG9yJiYodC5ib3JkZXJDb2xv cnx8WzAsMCwwLDBdKS5zbGljZSgpLHRoaXMuYmFja2dyb3VuZENvbG9yPSh0LmJhY2tncm91 bmRDb2xvcnx8WzAsMCwwLDBdKS5zbGljZSgpLHRoaXMuZ3JpZExpbmVFbmFibGU9KHQuZ3Jp ZExpbmVFbmFibGV8fFshMCwhMF0pLnNsaWNlKCksdGhpcy5ncmlkTGluZVdpZHRoPSh0Lmdy aWRMaW5lV2lkdGh8fFsxLDFdKS5zbGljZSgpLHRoaXMuZ3JpZExpbmVDb2xvcj11KHQuZ3Jp ZExpbmVDb2xvcnx8W1suNSwuNSwuNSwxXSxbLjUsLjUsLjUsMV1dKSx0aGlzLnplcm9MaW5l RW5hYmxlPSh0Lnplcm9MaW5lRW5hYmxlfHxbITAsITBdKS5zbGljZSgpLHRoaXMuemVyb0xp bmVXaWR0aD0odC56ZXJvTGluZVdpZHRofHxbNCw0XSkuc2xpY2UoKSx0aGlzLnplcm9MaW5l Q29sb3I9dSh0Lnplcm9MaW5lQ29sb3J8fFtbMCwwLDAsMV0sWzAsMCwwLDFdXSksdGhpcy50 aWNrTWFya0xlbmd0aD0odC50aWNrTWFya0xlbmd0aHx8WzAsMCwwLDBdKS5zbGljZSgpLHRo aXMudGlja01hcmtXaWR0aD0odC50aWNrTWFya1dpZHRofHxbMCwwLDAsMF0pLnNsaWNlKCks dGhpcy50aWNrTWFya0NvbG9yPXUodC50aWNrTWFya0NvbG9yfHxbWzAsMCwwLDFdLFswLDAs MCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdXSksdGhpcy50aXRsZUNlbnRlcj0odC50aXRsZUNl bnRlcnx8Wy41KihuWzBdK25bMl0pL3IsKG5bM10rMTIwKS9yXSkuc2xpY2UoKSx0aGlzLnRp dGxlRW5hYmxlPSEoInRpdGxlRW5hYmxlImluIHQpfHwhIXQudGl0bGVFbmFibGUsdGhpcy50 aXRsZUFuZ2xlPXQudGl0bGVBbmdsZXx8MCx0aGlzLnRpdGxlQ29sb3I9KHQudGl0bGVDb2xv cnx8WzAsMCwwLDFdKS5zbGljZSgpLHRoaXMubGFiZWxQYWQ9KHQubGFiZWxQYWR8fFsxNSwx NSwxNSwxNV0pLnNsaWNlKCksdGhpcy5sYWJlbEFuZ2xlPSh0LmxhYmVsQW5nbGV8fFswLE1h dGguUEkvMiwwLDMqTWF0aC5QSS8yXSkuc2xpY2UoKSx0aGlzLmxhYmVsRW5hYmxlPSh0Lmxh YmVsRW5hYmxlfHxbITAsITAsITAsITBdKS5zbGljZSgpLHRoaXMubGFiZWxDb2xvcj11KHQu bGFiZWxDb2xvcnx8W1swLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0p LHRoaXMudGlja1BhZD0odC50aWNrUGFkfHxbMTUsMTUsMTUsMTVdKS5zbGljZSgpLHRoaXMu dGlja0FuZ2xlPSh0LnRpY2tBbmdsZXx8WzAsMCwwLDBdKS5zbGljZSgpLHRoaXMudGlja0Vu YWJsZT0odC50aWNrRW5hYmxlfHxbITAsITAsITAsITBdKS5zbGljZSgpLHRoaXMudGlja0Nv bG9yPXUodC50aWNrQ29sb3J8fFtbMCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXSxbMCww LDAsMV1dKSx0aGlzLmJvcmRlckxpbmVFbmFibGU9KHQuYm9yZGVyTGluZUVuYWJsZXx8WyEw LCEwLCEwLCEwXSkuc2xpY2UoKSx0aGlzLmJvcmRlckxpbmVXaWR0aD0odC5ib3JkZXJMaW5l V2lkdGh8fFsyLDIsMiwyXSkuc2xpY2UoKSx0aGlzLmJvcmRlckxpbmVDb2xvcj11KHQuYm9y ZGVyTGluZUNvbG9yfHxbWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCwwLDFd XSk7dmFyIGE9dC50aWNrc3x8W1tdLFtdXSxvPXRoaXMuX3RpY2tCb3VuZHM7b1swXT1vWzFd PTEvMCxvWzJdPW9bM109LTEvMDtmb3IodmFyIHM9MDtzPDI7KytzKXt2YXIgbD1hW3NdLnNs aWNlKDApOzAhPT1sLmxlbmd0aCYmKGwuc29ydChmKSxvW3NdPU1hdGgubWluKG9bc10sbFsw XS54KSxvW3MrMl09TWF0aC5tYXgob1tzKzJdLGxbbC5sZW5ndGgtMV0ueCkpfXRoaXMuZ3Jp ZC51cGRhdGUoe2JvdW5kczpvLHRpY2tzOmF9KSx0aGlzLnRleHQudXBkYXRlKHtib3VuZHM6 byx0aWNrczphLGxhYmVsczp0LmxhYmVsc3x8WyJ4IiwieSJdLGxhYmVsU2l6ZTp0LmxhYmVs U2l6ZXx8WzEyLDEyXSxsYWJlbEZvbnQ6dC5sYWJlbEZvbnR8fFsic2Fucy1zZXJpZiIsInNh bnMtc2VyaWYiXSx0aXRsZTp0LnRpdGxlfHwiIix0aXRsZVNpemU6dC50aXRsZVNpemV8fDE4 LHRpdGxlRm9udDp0LnRpdGxlRm9udHx8InNhbnMtc2VyaWYifSksdGhpcy5zdGF0aWM9ISF0 LnN0YXRpYyx0aGlzLnNldERpcnR5KCl9LGMuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuYm94 LmRpc3Bvc2UoKSx0aGlzLmdyaWQuZGlzcG9zZSgpLHRoaXMudGV4dC5kaXNwb3NlKCksdGhp cy5saW5lLmRpc3Bvc2UoKTtmb3IodmFyIHQ9dGhpcy5vYmplY3RzLmxlbmd0aC0xO3Q+PTA7 LS10KXRoaXMub2JqZWN0c1t0XS5kaXNwb3NlKCk7dGhpcy5vYmplY3RzLmxlbmd0aD0wO2Zv cih0PXRoaXMub3ZlcmxheXMubGVuZ3RoLTE7dD49MDstLXQpdGhpcy5vdmVybGF5c1t0XS5k aXNwb3NlKCk7dGhpcy5vdmVybGF5cy5sZW5ndGg9MCx0aGlzLmdsPW51bGx9LGMuYWRkT2Jq ZWN0PWZ1bmN0aW9uKHQpe3RoaXMub2JqZWN0cy5pbmRleE9mKHQpPDAmJih0aGlzLm9iamVj dHMucHVzaCh0KSx0aGlzLnNldERpcnR5KCkpfSxjLnJlbW92ZU9iamVjdD1mdW5jdGlvbih0 KXtmb3IodmFyIGU9dGhpcy5vYmplY3RzLHI9MDtyPGUubGVuZ3RoOysrcilpZihlW3JdPT09 dCl7ZS5zcGxpY2UociwxKSx0aGlzLnNldERpcnR5KCk7YnJlYWt9fSxjLmFkZE92ZXJsYXk9 ZnVuY3Rpb24odCl7dGhpcy5vdmVybGF5cy5pbmRleE9mKHQpPDAmJih0aGlzLm92ZXJsYXlz LnB1c2godCksdGhpcy5zZXRPdmVybGF5RGlydHkoKSl9LGMucmVtb3ZlT3ZlcmxheT1mdW5j dGlvbih0KXtmb3IodmFyIGU9dGhpcy5vdmVybGF5cyxyPTA7cjxlLmxlbmd0aDsrK3IpaWYo ZVtyXT09PXQpe2Uuc3BsaWNlKHIsMSksdGhpcy5zZXRPdmVybGF5RGlydHkoKTticmVha319 fSx7Ii4vbGliL2JveCI6MTEzLCIuL2xpYi9ncmlkIjoxMTQsIi4vbGliL2xpbmUiOjExNSwi Li9saWIvdGV4dCI6MTE3LCJnbC1zZWxlY3Qtc3RhdGljIjoxMzF9XSwxMTk6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dD10fHxkb2N1 bWVudC5ib2R5LGU9ZXx8e307dmFyIHI9Wy4wMSwxLzBdOyJkaXN0YW5jZUxpbWl0cyJpbiBl JiYoclswXT1lLmRpc3RhbmNlTGltaXRzWzBdLHJbMV09ZS5kaXN0YW5jZUxpbWl0c1sxXSk7 Inpvb21NaW4iaW4gZSYmKHJbMF09ZS56b29tTWluKTsiem9vbU1heCJpbiBlJiYoclsxXT1l Lnpvb21NYXgpO3ZhciBjPWkoe2NlbnRlcjplLmNlbnRlcnx8WzAsMCwwXSx1cDplLnVwfHxb MCwxLDBdLGV5ZTplLmV5ZXx8WzAsMCwxMF0sbW9kZTplLm1vZGV8fCJvcmJpdCIsZGlzdGFu Y2VMaW1pdHM6cn0pLHU9WzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdLGY9MCxo PXQuY2xpZW50V2lkdGgscD10LmNsaWVudEhlaWdodCxkPXtrZXlCaW5kaW5nTW9kZToicm90 YXRlIixlbmFibGVXaGVlbDohMCx2aWV3OmMsZWxlbWVudDp0LGRlbGF5OmUuZGVsYXl8fDE2 LHJvdGF0ZVNwZWVkOmUucm90YXRlU3BlZWR8fDEsem9vbVNwZWVkOmUuem9vbVNwZWVkfHwx LHRyYW5zbGF0ZVNwZWVkOmUudHJhbnNsYXRlU3BlZWR8fDEsZmxpcFg6ISFlLmZsaXBYLGZs aXBZOiEhZS5mbGlwWSxtb2RlczpjLm1vZGVzLF9vcnRobzplLl9vcnRob3x8ZS5wcm9qZWN0 aW9uJiYib3J0aG9ncmFwaGljIj09PWUucHJvamVjdGlvbi50eXBlfHwhMSx0aWNrOmZ1bmN0 aW9uKCl7dmFyIGU9bigpLHI9dGhpcy5kZWxheSxpPWUtMipyO2MuaWRsZShlLXIpLGMucmVj YWxjTWF0cml4KGkpLGMuZmx1c2goZS0oMTAwKzIqcikpO2Zvcih2YXIgYT0hMCxvPWMuY29t cHV0ZWRNYXRyaXgscz0wO3M8MTY7KytzKWE9YSYmdVtzXT09PW9bc10sdVtzXT1vW3NdO3Zh ciBsPXQuY2xpZW50V2lkdGg9PT1oJiZ0LmNsaWVudEhlaWdodD09PXA7cmV0dXJuIGg9dC5j bGllbnRXaWR0aCxwPXQuY2xpZW50SGVpZ2h0LGE/IWw6KGY9TWF0aC5leHAoYy5jb21wdXRl ZFJhZGl1c1swXSksITApfSxsb29rQXQ6ZnVuY3Rpb24odCxlLHIpe2MubG9va0F0KGMubGFz dFQoKSx0LGUscil9LHJvdGF0ZTpmdW5jdGlvbih0LGUscil7Yy5yb3RhdGUoYy5sYXN0VCgp LHQsZSxyKX0scGFuOmZ1bmN0aW9uKHQsZSxyKXtjLnBhbihjLmxhc3RUKCksdCxlLHIpfSx0 cmFuc2xhdGU6ZnVuY3Rpb24odCxlLHIpe2MudHJhbnNsYXRlKGMubGFzdFQoKSx0LGUscil9 fTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZCx7bWF0cml4OntnZXQ6ZnVuY3Rp b24oKXtyZXR1cm4gYy5jb21wdXRlZE1hdHJpeH0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBj LnNldE1hdHJpeChjLmxhc3RUKCksdCksYy5jb21wdXRlZE1hdHJpeH0sZW51bWVyYWJsZToh MH0sbW9kZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGMuZ2V0TW9kZSgpfSxzZXQ6ZnVuY3Rp b24odCl7dmFyIGU9Yy5jb21wdXRlZFVwLnNsaWNlKCkscj1jLmNvbXB1dGVkRXllLnNsaWNl KCksaT1jLmNvbXB1dGVkQ2VudGVyLnNsaWNlKCk7aWYoYy5zZXRNb2RlKHQpLCJ0dXJudGFi bGUiPT09dCl7dmFyIGE9bigpO2MuX2FjdGl2ZS5sb29rQXQoYSxyLGksZSksYy5fYWN0aXZl Lmxvb2tBdChhKzUwMCxyLGksWzAsMCwxXSksYy5fYWN0aXZlLmZsdXNoKGEpfXJldHVybiBj LmdldE1vZGUoKX0sZW51bWVyYWJsZTohMH0sY2VudGVyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1 cm4gYy5jb21wdXRlZENlbnRlcn0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBjLmxvb2tBdChj Lmxhc3RUKCksbnVsbCx0KSxjLmNvbXB1dGVkQ2VudGVyfSxlbnVtZXJhYmxlOiEwfSxleWU6 e2dldDpmdW5jdGlvbigpe3JldHVybiBjLmNvbXB1dGVkRXllfSxzZXQ6ZnVuY3Rpb24odCl7 cmV0dXJuIGMubG9va0F0KGMubGFzdFQoKSx0KSxjLmNvbXB1dGVkRXllfSxlbnVtZXJhYmxl OiEwfSx1cDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGMuY29tcHV0ZWRVcH0sc2V0OmZ1bmN0 aW9uKHQpe3JldHVybiBjLmxvb2tBdChjLmxhc3RUKCksbnVsbCxudWxsLHQpLGMuY29tcHV0 ZWRVcH0sZW51bWVyYWJsZTohMH0sZGlzdGFuY2U6e2dldDpmdW5jdGlvbigpe3JldHVybiBm fSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGMuc2V0RGlzdGFuY2UoYy5sYXN0VCgpLHQpLHR9 LGVudW1lcmFibGU6ITB9LGRpc3RhbmNlTGltaXRzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4g Yy5nZXREaXN0YW5jZUxpbWl0cyhyKX0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBjLnNldERp c3RhbmNlTGltaXRzKHQpLHR9LGVudW1lcmFibGU6ITB9fSksdC5hZGRFdmVudExpc3RlbmVy KCJjb250ZXh0bWVudSIsKGZ1bmN0aW9uKHQpe3JldHVybiB0LnByZXZlbnREZWZhdWx0KCks ITF9KSksZC5fbGFzdFg9LTEsZC5fbGFzdFk9LTEsZC5fbGFzdE1vZHM9e3NoaWZ0OiExLGNv bnRyb2w6ITEsYWx0OiExLG1ldGE6ITF9LGQuZW5hYmxlTW91c2VMaXN0ZW5lcnM9ZnVuY3Rp b24oKXtmdW5jdGlvbiBlKGUscixpLGEpe3ZhciBvPWQua2V5QmluZGluZ01vZGU7aWYoITEh PT1vKXt2YXIgcz0icm90YXRlIj09PW8sbD0icGFuIj09PW8sdT0iem9vbSI9PT1vLGg9ISFh LmNvbnRyb2wscD0hIWEuYWx0LG09ISFhLnNoaWZ0LGc9ISEoMSZlKSx2PSEhKDImZSkseT0h ISg0JmUpLHg9MS90LmNsaWVudEhlaWdodCxiPXgqKHItZC5fbGFzdFgpLF89eCooaS1kLl9s YXN0WSksdz1kLmZsaXBYPzE6LTEsVD1kLmZsaXBZPzE6LTEsaz1NYXRoLlBJKmQucm90YXRl U3BlZWQsQT1uKCk7aWYoLTEhPT1kLl9sYXN0WCYmLTEhPT1kLl9sYXN0WSYmKChzJiZnJiYh aCYmIXAmJiFtfHxnJiYhaCYmIXAmJm0pJiZjLnJvdGF0ZShBLHcqaypiLC1UKmsqXywwKSwo bCYmZyYmIWgmJiFwJiYhbXx8dnx8ZyYmaCYmIXAmJiFtKSYmYy5wYW4oQSwtZC50cmFuc2xh dGVTcGVlZCpiKmYsZC50cmFuc2xhdGVTcGVlZCpfKmYsMCksdSYmZyYmIWgmJiFwJiYhbXx8 eXx8ZyYmIWgmJnAmJiFtKSl7dmFyIE09LWQuem9vbVNwZWVkKl8vd2luZG93LmlubmVySGVp Z2h0KihBLWMubGFzdFQoKSkqMTAwO2MucGFuKEEsMCwwLGYqKE1hdGguZXhwKE0pLTEpKX1y ZXR1cm4gZC5fbGFzdFg9cixkLl9sYXN0WT1pLGQuX2xhc3RNb2RzPWEsITB9fWQubW91c2VM aXN0ZW5lcj1hKHQsZSksdC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IiwoZnVuY3Rp b24ocil7dmFyIG49cyhyLmNoYW5nZWRUb3VjaGVzWzBdLHQpO2UoMCxuWzBdLG5bMV0sZC5f bGFzdE1vZHMpLGUoMSxuWzBdLG5bMV0sZC5fbGFzdE1vZHMpfSksISFsJiZ7cGFzc2l2ZToh MH0pLHQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIiwoZnVuY3Rpb24ocil7dmFyIG49 cyhyLmNoYW5nZWRUb3VjaGVzWzBdLHQpO2UoMSxuWzBdLG5bMV0sZC5fbGFzdE1vZHMpLHIu cHJldmVudERlZmF1bHQoKX0pLCEhbCYme3Bhc3NpdmU6ITF9KSx0LmFkZEV2ZW50TGlzdGVu ZXIoInRvdWNoZW5kIiwoZnVuY3Rpb24odCl7ZSgwLGQuX2xhc3RYLGQuX2xhc3RZLGQuX2xh c3RNb2RzKX0pLCEhbCYme3Bhc3NpdmU6ITB9KSxkLndoZWVsTGlzdGVuZXI9byh0LChmdW5j dGlvbih0LGUpe2lmKCExIT09ZC5rZXlCaW5kaW5nTW9kZSYmZC5lbmFibGVXaGVlbCl7dmFy IHI9ZC5mbGlwWD8xOi0xLGk9ZC5mbGlwWT8xOi0xLGE9bigpO2lmKE1hdGguYWJzKHQpPk1h dGguYWJzKGUpKWMucm90YXRlKGEsMCwwLC10KnIqTWF0aC5QSSpkLnJvdGF0ZVNwZWVkL3dp bmRvdy5pbm5lcldpZHRoKTtlbHNlIGlmKCFkLl9vcnRobyl7dmFyIG89LWQuem9vbVNwZWVk KmkqZS93aW5kb3cuaW5uZXJIZWlnaHQqKGEtYy5sYXN0VCgpKS8yMDtjLnBhbihhLDAsMCxm KihNYXRoLmV4cChvKS0xKSl9fX0pLCEwKX0sZC5lbmFibGVNb3VzZUxpc3RlbmVycygpLGR9 O3ZhciBuPXQoInJpZ2h0LW5vdyIpLGk9dCgiM2QtdmlldyIpLGE9dCgibW91c2UtY2hhbmdl Iiksbz10KCJtb3VzZS13aGVlbCIpLHM9dCgibW91c2UtZXZlbnQtb2Zmc2V0IiksbD10KCJo YXMtcGFzc2l2ZS1ldmVudHMiKX0seyIzZC12aWV3Ijo3LCJoYXMtcGFzc2l2ZS1ldmVudHMi OjIzMiwibW91c2UtY2hhbmdlIjoyNDcsIm1vdXNlLWV2ZW50LW9mZnNldCI6MjQ4LCJtb3Vz ZS13aGVlbCI6MjUwLCJyaWdodC1ub3ciOjI3OH1dLDEyMDpbZnVuY3Rpb24odCxlLHIpe3Zh ciBuPXQoImdsc2xpZnkiKSxpPXQoImdsLXNoYWRlciIpLGE9bihbInByZWNpc2lvbiBtZWRp dW1wIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcbmF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9u O1xudmFyeWluZyB2ZWMyIHV2O1xudm9pZCBtYWluKCkge1xuICB1diA9IHBvc2l0aW9uO1xu ICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAsIDEpO1xufSJdKSxvPW4oWyJwcmVj aXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnVuaWZvcm0gc2Ft cGxlcjJEIGFjY3VtQnVmZmVyO1xudmFyeWluZyB2ZWMyIHV2O1xuXG52b2lkIG1haW4oKSB7 XG4gIHZlYzQgYWNjdW0gPSB0ZXh0dXJlMkQoYWNjdW1CdWZmZXIsIDAuNSAqICh1diArIDEu MCkpO1xuICBnbF9GcmFnQ29sb3IgPSBtaW4odmVjNCgxLDEsMSwxKSwgYWNjdW0pO1xufSJd KTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGkodCxhLG8sbnVsbCxbe25hbWU6InBv c2l0aW9uIix0eXBlOiJ2ZWMyIn1dKX19LHsiZ2wtc2hhZGVyIjoxMzIsZ2xzbGlmeToyMzF9 XSwxMjE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9jYW1lcmEu anMiKSxpPXQoImdsLWF4ZXMzZCIpLGE9dCgiZ2wtYXhlczNkL3Byb3BlcnRpZXMiKSxvPXQo ImdsLXNwaWtlczNkIikscz10KCJnbC1zZWxlY3Qtc3RhdGljIiksbD10KCJnbC1mYm8iKSxj PXQoImEtYmlnLXRyaWFuZ2xlIiksdT10KCJtb3VzZS1jaGFuZ2UiKSxmPXQoImdsLW1hdDQv cGVyc3BlY3RpdmUiKSxoPXQoImdsLW1hdDQvb3J0aG8iKSxwPXQoIi4vbGliL3NoYWRlciIp LGQ9dCgiaXMtbW9iaWxlIikoe3RhYmxldDohMCxmZWF0dXJlRGV0ZWN0OiEwfSk7ZnVuY3Rp b24gbSgpe3RoaXMubW91c2U9Wy0xLC0xXSx0aGlzLnNjcmVlbj1udWxsLHRoaXMuZGlzdGFu Y2U9MS8wLHRoaXMuaW5kZXg9bnVsbCx0aGlzLmRhdGFDb29yZGluYXRlPW51bGwsdGhpcy5k YXRhUG9zaXRpb249bnVsbCx0aGlzLm9iamVjdD1udWxsLHRoaXMuZGF0YT1udWxsfWZ1bmN0 aW9uIGcodCl7dmFyIGU9TWF0aC5yb3VuZChNYXRoLmxvZyhNYXRoLmFicyh0KSkvTWF0aC5s b2coMTApKTtpZihlPDApe3ZhciByPU1hdGgucm91bmQoTWF0aC5wb3coMTAsLWUpKTtyZXR1 cm4gTWF0aC5jZWlsKHQqcikvcn1pZihlPjApe3I9TWF0aC5yb3VuZChNYXRoLnBvdygxMCxl KSk7cmV0dXJuIE1hdGguY2VpbCh0L3IpKnJ9cmV0dXJuIE1hdGguY2VpbCh0KX1mdW5jdGlv biB2KHQpe3JldHVybiJib29sZWFuIiE9dHlwZW9mIHR8fHR9ZS5leHBvcnRzPXtjcmVhdGVT Y2VuZTpmdW5jdGlvbih0KXsodD10fHx7fSkuY2FtZXJhPXQuY2FtZXJhfHx7fTt2YXIgZT10 LmNhbnZhcztpZighZSl7aWYoZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSx0 LmNvbnRhaW5lcil0LmNvbnRhaW5lci5hcHBlbmRDaGlsZChlKTtlbHNlIGRvY3VtZW50LmJv ZHkuYXBwZW5kQ2hpbGQoZSl9dmFyIHI9dC5nbDtyfHwodC5nbE9wdGlvbnMmJihkPSEhdC5n bE9wdGlvbnMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSxyPWZ1bmN0aW9uKHQsZSl7dmFyIHI9 bnVsbDt0cnl7KHI9dC5nZXRDb250ZXh0KCJ3ZWJnbCIsZSkpfHwocj10LmdldENvbnRleHQo ImV4cGVyaW1lbnRhbC13ZWJnbCIsZSkpfWNhdGNoKHQpe3JldHVybiBudWxsfXJldHVybiBy fShlLHQuZ2xPcHRpb25zfHx7cHJlbXVsdGlwbGllZEFscGhhOiEwLGFudGlhbGlhczohMCxw cmVzZXJ2ZURyYXdpbmdCdWZmZXI6ZH0pKTtpZighcil0aHJvdyBuZXcgRXJyb3IoIndlYmds IG5vdCBzdXBwb3J0ZWQiKTt2YXIgeT10LmJvdW5kc3x8W1stMTAsLTEwLC0xMF0sWzEwLDEw LDEwXV0seD1uZXcgbSxiPWwocixyLmRyYXdpbmdCdWZmZXJXaWR0aCxyLmRyYXdpbmdCdWZm ZXJIZWlnaHQse3ByZWZlckZsb2F0OiFkfSksXz1wKHIpLHc9dC5jYW1lcmFPYmplY3QmJiEw PT09dC5jYW1lcmFPYmplY3QuX29ydGhvfHx0LmNhbWVyYS5wcm9qZWN0aW9uJiYib3J0aG9n cmFwaGljIj09PXQuY2FtZXJhLnByb2plY3Rpb24udHlwZXx8ITEsVD17ZXllOnQuY2FtZXJh LmV5ZXx8WzIsMCwwXSxjZW50ZXI6dC5jYW1lcmEuY2VudGVyfHxbMCwwLDBdLHVwOnQuY2Ft ZXJhLnVwfHxbMCwxLDBdLHpvb21NaW46dC5jYW1lcmEuem9vbU1heHx8LjEsem9vbU1heDp0 LmNhbWVyYS56b29tTWlufHwxMDAsbW9kZTp0LmNhbWVyYS5tb2RlfHwidHVybnRhYmxlIixf b3J0aG86d30saz10LmF4ZXN8fHt9LEE9aShyLGspO0EuZW5hYmxlPSFrLmRpc2FibGU7dmFy IE09dC5zcGlrZXN8fHt9LFM9byhyLE0pLEU9W10sTD1bXSxDPVtdLFA9W10sST0hMCxPPSEw LHo9bmV3IEFycmF5KDE2KSxEPW5ldyBBcnJheSgxNiksUj17dmlldzpudWxsLHByb2plY3Rp b246eixtb2RlbDpELF9vcnRobzohMX0sRj0oTz0hMCxbci5kcmF3aW5nQnVmZmVyV2lkdGgs ci5kcmF3aW5nQnVmZmVySGVpZ2h0XSksQj10LmNhbWVyYU9iamVjdHx8bihlLFQpLE49e2ds OnIsY29udGV4dExvc3Q6ITEscGl4ZWxSYXRpbzp0LnBpeGVsUmF0aW98fDEsY2FudmFzOmUs c2VsZWN0aW9uOngsY2FtZXJhOkIsYXhlczpBLGF4ZXNQaXhlbHM6bnVsbCxzcGlrZXM6Uyxi b3VuZHM6eSxvYmplY3RzOkUsc2hhcGU6Rixhc3BlY3Q6dC5hc3BlY3RSYXRpb3x8WzEsMSwx XSxwaWNrUmFkaXVzOnQucGlja1JhZGl1c3x8MTAsek5lYXI6dC56TmVhcnx8LjAxLHpGYXI6 dC56RmFyfHwxZTMsZm92eTp0LmZvdnl8fE1hdGguUEkvNCxjbGVhckNvbG9yOnQuY2xlYXJD b2xvcnx8WzAsMCwwLDBdLGF1dG9SZXNpemU6dih0LmF1dG9SZXNpemUpLGF1dG9Cb3VuZHM6 dih0LmF1dG9Cb3VuZHMpLGF1dG9TY2FsZTohIXQuYXV0b1NjYWxlLGF1dG9DZW50ZXI6dih0 LmF1dG9DZW50ZXIpLGNsaXBUb0JvdW5kczp2KHQuY2xpcFRvQm91bmRzKSxzbmFwVG9EYXRh OiEhdC5zbmFwVG9EYXRhLG9uc2VsZWN0OnQub25zZWxlY3R8fG51bGwsb25yZW5kZXI6dC5v bnJlbmRlcnx8bnVsbCxvbmNsaWNrOnQub25jbGlja3x8bnVsbCxjYW1lcmFQYXJhbXM6Uixv bmNvbnRleHRsb3NzOm51bGwsbW91c2VMaXN0ZW5lcjpudWxsLF9zdG9wcGVkOiExLGdldEFz cGVjdHJhdGlvOmZ1bmN0aW9uKCl7cmV0dXJue3g6dGhpcy5hc3BlY3RbMF0seTp0aGlzLmFz cGVjdFsxXSx6OnRoaXMuYXNwZWN0WzJdfX0sc2V0QXNwZWN0cmF0aW86ZnVuY3Rpb24odCl7 dGhpcy5hc3BlY3RbMF09dC54LHRoaXMuYXNwZWN0WzFdPXQueSx0aGlzLmFzcGVjdFsyXT10 LnosTz0hMH0sc2V0Qm91bmRzOmZ1bmN0aW9uKHQsZSl7dGhpcy5ib3VuZHNbMF1bdF09ZS5t aW4sdGhpcy5ib3VuZHNbMV1bdF09ZS5tYXh9LHNldENsZWFyQ29sb3I6ZnVuY3Rpb24odCl7 dGhpcy5jbGVhckNvbG9yPXR9LGNsZWFyUkdCQTpmdW5jdGlvbigpe3RoaXMuZ2wuY2xlYXJD b2xvcih0aGlzLmNsZWFyQ29sb3JbMF0sdGhpcy5jbGVhckNvbG9yWzFdLHRoaXMuY2xlYXJD b2xvclsyXSx0aGlzLmNsZWFyQ29sb3JbM10pLHRoaXMuZ2wuY2xlYXIodGhpcy5nbC5DT0xP Ul9CVUZGRVJfQklUfHRoaXMuZ2wuREVQVEhfQlVGRkVSX0JJVCl9fSxqPVtyLmRyYXdpbmdC dWZmZXJXaWR0aC9OLnBpeGVsUmF0aW98MCxyLmRyYXdpbmdCdWZmZXJIZWlnaHQvTi5waXhl bFJhdGlvfDBdO2Z1bmN0aW9uIFUoKXtpZighTi5fc3RvcHBlZCYmTi5hdXRvUmVzaXplKXt2 YXIgdD1lLnBhcmVudE5vZGUscj0xLG49MTt0JiZ0IT09ZG9jdW1lbnQuYm9keT8ocj10LmNs aWVudFdpZHRoLG49dC5jbGllbnRIZWlnaHQpOihyPXdpbmRvdy5pbm5lcldpZHRoLG49d2lu ZG93LmlubmVySGVpZ2h0KTt2YXIgaT0wfE1hdGguY2VpbChyKk4ucGl4ZWxSYXRpbyksYT0w fE1hdGguY2VpbChuKk4ucGl4ZWxSYXRpbyk7aWYoaSE9PWUud2lkdGh8fGEhPT1lLmhlaWdo dCl7ZS53aWR0aD1pLGUuaGVpZ2h0PWE7dmFyIG89ZS5zdHlsZTtvLnBvc2l0aW9uPW8ucG9z aXRpb258fCJhYnNvbHV0ZSIsby5sZWZ0PSIwcHgiLG8udG9wPSIwcHgiLG8ud2lkdGg9cisi cHgiLG8uaGVpZ2h0PW4rInB4IixJPSEwfX19Ti5hdXRvUmVzaXplJiZVKCk7ZnVuY3Rpb24g Vigpe2Zvcih2YXIgdD1FLmxlbmd0aCxlPVAubGVuZ3RoLG49MDtuPGU7KytuKUNbbl09MDt0 OmZvcihuPTA7bjx0Oysrbil7dmFyIGk9RVtuXSxhPWkucGlja1Nsb3RzO2lmKGEpe2Zvcih2 YXIgbz0wO288ZTsrK28paWYoQ1tvXSthPDI1NSl7TFtuXT1vLGkuc2V0UGlja0Jhc2UoQ1tv XSsxKSxDW29dKz1hO2NvbnRpbnVlIHR9dmFyIGw9cyhyLEYpO0xbbl09ZSxQLnB1c2gobCks Qy5wdXNoKGEpLGkuc2V0UGlja0Jhc2UoMSksZSs9MX1lbHNlIExbbl09LTF9Zm9yKDtlPjAm JjA9PT1DW2UtMV07KUMucG9wKCksUC5wb3AoKS5kaXNwb3NlKCl9ZnVuY3Rpb24gSCgpe2lm KE4uY29udGV4dExvc3QpcmV0dXJuITA7ci5pc0NvbnRleHRMb3N0KCkmJihOLmNvbnRleHRM b3N0PSEwLE4ubW91c2VMaXN0ZW5lci5lbmFibGVkPSExLE4uc2VsZWN0aW9uLm9iamVjdD1u dWxsLE4ub25jb250ZXh0bG9zcyYmTi5vbmNvbnRleHRsb3NzKCkpfXdpbmRvdy5hZGRFdmVu dExpc3RlbmVyKCJyZXNpemUiLFUpLE4udXBkYXRlPWZ1bmN0aW9uKHQpe04uX3N0b3BwZWR8 fCh0PXR8fHt9LEk9ITAsTz0hMCl9LE4uYWRkPWZ1bmN0aW9uKHQpe04uX3N0b3BwZWR8fCh0 LmF4ZXM9QSxFLnB1c2godCksTC5wdXNoKC0xKSxJPSEwLE89ITAsVigpKX0sTi5yZW1vdmU9 ZnVuY3Rpb24odCl7aWYoIU4uX3N0b3BwZWQpe3ZhciBlPUUuaW5kZXhPZih0KTtlPDB8fChF LnNwbGljZShlLDEpLEwucG9wKCksST0hMCxPPSEwLFYoKSl9fSxOLmRpc3Bvc2U9ZnVuY3Rp b24oKXtpZighTi5fc3RvcHBlZCYmKE4uX3N0b3BwZWQ9ITAsd2luZG93LnJlbW92ZUV2ZW50 TGlzdGVuZXIoInJlc2l6ZSIsVSksZS5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRl eHRsb3N0IixIKSxOLm1vdXNlTGlzdGVuZXIuZW5hYmxlZD0hMSwhTi5jb250ZXh0TG9zdCkp e0EuZGlzcG9zZSgpLFMuZGlzcG9zZSgpO2Zvcih2YXIgdD0wO3Q8RS5sZW5ndGg7Kyt0KUVb dF0uZGlzcG9zZSgpO2IuZGlzcG9zZSgpO2Zvcih0PTA7dDxQLmxlbmd0aDsrK3QpUFt0XS5k aXNwb3NlKCk7Xy5kaXNwb3NlKCkscj1udWxsLEE9bnVsbCxTPW51bGwsRT1bXX19LE4uX21v dXNlUm90YXRpbmc9ITEsTi5fcHJldkJ1dHRvbnM9MCxOLmVuYWJsZU1vdXNlTGlzdGVuZXJz PWZ1bmN0aW9uKCl7Ti5tb3VzZUxpc3RlbmVyPXUoZSwoZnVuY3Rpb24odCxlLHIpe2lmKCFO Ll9zdG9wcGVkKXt2YXIgbj1QLmxlbmd0aCxpPUUubGVuZ3RoLGE9eC5vYmplY3Q7eC5kaXN0 YW5jZT0xLzAseC5tb3VzZVswXT1lLHgubW91c2VbMV09cix4Lm9iamVjdD1udWxsLHguc2Ny ZWVuPW51bGwseC5kYXRhQ29vcmRpbmF0ZT14LmRhdGFQb3NpdGlvbj1udWxsO3ZhciBvPSEx O2lmKHQmJk4uX3ByZXZCdXR0b25zKU4uX21vdXNlUm90YXRpbmc9ITA7ZWxzZXtOLl9tb3Vz ZVJvdGF0aW5nJiYoTz0hMCksTi5fbW91c2VSb3RhdGluZz0hMTtmb3IodmFyIHM9MDtzPG47 KytzKXt2YXIgbD1QW3NdLnF1ZXJ5KGUsalsxXS1yLTEsTi5waWNrUmFkaXVzKTtpZihsKXtp ZihsLmRpc3RhbmNlPnguZGlzdGFuY2UpY29udGludWU7Zm9yKHZhciBjPTA7YzxpOysrYyl7 dmFyIHU9RVtjXTtpZihMW2NdPT09cyl7dmFyIGY9dS5waWNrKGwpO2YmJih4LmJ1dHRvbnM9 dCx4LnNjcmVlbj1sLmNvb3JkLHguZGlzdGFuY2U9bC5kaXN0YW5jZSx4Lm9iamVjdD11LHgu aW5kZXg9Zi5kaXN0YW5jZSx4LmRhdGFQb3NpdGlvbj1mLnBvc2l0aW9uLHguZGF0YUNvb3Jk aW5hdGU9Zi5kYXRhQ29vcmRpbmF0ZSx4LmRhdGE9ZixvPSEwKX19fX19YSYmYSE9PXgub2Jq ZWN0JiYoYS5oaWdobGlnaHQmJmEuaGlnaGxpZ2h0KG51bGwpLEk9ITApLHgub2JqZWN0JiYo eC5vYmplY3QuaGlnaGxpZ2h0JiZ4Lm9iamVjdC5oaWdobGlnaHQoeC5kYXRhKSxJPSEwKSwo bz1vfHx4Lm9iamVjdCE9PWEpJiZOLm9uc2VsZWN0JiZOLm9uc2VsZWN0KHgpLDEmdCYmISgx Jk4uX3ByZXZCdXR0b25zKSYmTi5vbmNsaWNrJiZOLm9uY2xpY2soeCksTi5fcHJldkJ1dHRv bnM9dH19KSl9LGUuYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIsSCk7dmFy IHE9W1sxLzAsMS8wLDEvMF0sWy0xLzAsLTEvMCwtMS8wXV0sRz1bcVswXS5zbGljZSgpLHFb MV0uc2xpY2UoKV07ZnVuY3Rpb24gWSgpe2lmKCFIKCkpe1UoKTt2YXIgdD1OLmNhbWVyYS50 aWNrKCk7Ui52aWV3PU4uY2FtZXJhLm1hdHJpeCxJPUl8fHQsTz1PfHx0LEEucGl4ZWxSYXRp bz1OLnBpeGVsUmF0aW8sUy5waXhlbFJhdGlvPU4ucGl4ZWxSYXRpbzt2YXIgZT1FLmxlbmd0 aCxuPXFbMF0saT1xWzFdO25bMF09blsxXT1uWzJdPTEvMCxpWzBdPWlbMV09aVsyXT0tMS8w O2Zvcih2YXIgbz0wO288ZTsrK28peyhDPUVbb10pLnBpeGVsUmF0aW89Ti5waXhlbFJhdGlv LEMuYXhlcz1OLmF4ZXMsST1JfHwhIUMuZGlydHksTz1PfHwhIUMuZGlydHk7dmFyIHM9Qy5i b3VuZHM7aWYocylmb3IodmFyIGw9c1swXSx1PXNbMV0scD0wO3A8MzsrK3ApbltwXT1NYXRo Lm1pbihuW3BdLGxbcF0pLGlbcF09TWF0aC5tYXgoaVtwXSx1W3BdKX12YXIgZD1OLmJvdW5k cztpZihOLmF1dG9Cb3VuZHMpZm9yKHA9MDtwPDM7KytwKXtpZihpW3BdPG5bcF0pbltwXT0t MSxpW3BdPTE7ZWxzZXtuW3BdPT09aVtwXSYmKG5bcF0tPTEsaVtwXSs9MSk7dmFyIG09LjA1 KihpW3BdLW5bcF0pO25bcF09bltwXS1tLGlbcF09aVtwXSttfWRbMF1bcF09bltwXSxkWzFd W3BdPWlbcF19dmFyIHY9ITE7Zm9yKHA9MDtwPDM7KytwKXY9dnx8R1swXVtwXSE9PWRbMF1b cF18fEdbMV1bcF0hPT1kWzFdW3BdLEdbMF1bcF09ZFswXVtwXSxHWzFdW3BdPWRbMV1bcF07 aWYoTz1PfHx2LEk9SXx8dil7aWYodil7dmFyIHk9WzAsMCwwXTtmb3Iobz0wO288MzsrK28p eVtvXT1nKChkWzFdW29dLWRbMF1bb10pLzEwKTtBLmF1dG9UaWNrcz9BLnVwZGF0ZSh7Ym91 bmRzOmQsdGlja1NwYWNpbmc6eX0pOkEudXBkYXRlKHtib3VuZHM6ZH0pfXZhciBUPXIuZHJh d2luZ0J1ZmZlcldpZHRoLGs9ci5kcmF3aW5nQnVmZmVySGVpZ2h0O0ZbMF09VCxGWzFdPWss alswXT0wfE1hdGgubWF4KFQvTi5waXhlbFJhdGlvLDEpLGpbMV09MHxNYXRoLm1heChrL04u cGl4ZWxSYXRpbywxKSxmdW5jdGlvbih0LGUpe3ZhciByPXQuYm91bmRzLG49dC5jYW1lcmFQ YXJhbXMsaT1uLnByb2plY3Rpb24sYT1uLm1vZGVsLG89dC5nbC5kcmF3aW5nQnVmZmVyV2lk dGgscz10LmdsLmRyYXdpbmdCdWZmZXJIZWlnaHQsbD10LnpOZWFyLGM9dC56RmFyLHU9dC5m b3Z5LHA9by9zO2U/KGgoaSwtcCxwLC0xLDEsbCxjKSxuLl9vcnRobz0hMCk6KGYoaSx1LHAs bCxjKSxuLl9vcnRobz0hMSk7Zm9yKHZhciBkPTA7ZDwxNjsrK2QpYVtkXT0wO2FbMTVdPTE7 dmFyIG09MDtmb3IoZD0wO2Q8MzsrK2QpbT1NYXRoLm1heChtLHJbMV1bZF0tclswXVtkXSk7 Zm9yKGQ9MDtkPDM7KytkKXQuYXV0b1NjYWxlP2FbNSpkXT10LmFzcGVjdFtkXS8oclsxXVtk XS1yWzBdW2RdKTphWzUqZF09MS9tLHQuYXV0b0NlbnRlciYmKGFbMTIrZF09LjUqLWFbNSpk XSooclswXVtkXStyWzFdW2RdKSl9KE4sdyk7Zm9yKG89MDtvPGU7KytvKXsoQz1FW29dKS5h eGVzQm91bmRzPWQsTi5jbGlwVG9Cb3VuZHMmJihDLmNsaXBCb3VuZHM9ZCl9eC5vYmplY3Qm JihOLnNuYXBUb0RhdGE/Uy5wb3NpdGlvbj14LmRhdGFDb29yZGluYXRlOlMucG9zaXRpb249 eC5kYXRhUG9zaXRpb24sUy5ib3VuZHM9ZCksTyYmKE89ITEsZnVuY3Rpb24oKXtpZighSCgp KXtyLmNvbG9yTWFzayghMCwhMCwhMCwhMCksci5kZXB0aE1hc2soITApLHIuZGlzYWJsZShy LkJMRU5EKSxyLmVuYWJsZShyLkRFUFRIX1RFU1QpLHIuZGVwdGhGdW5jKHIuTEVRVUFMKTtm b3IodmFyIHQ9RS5sZW5ndGgsZT1QLmxlbmd0aCxuPTA7bjxlOysrbil7dmFyIGk9UFtuXTtp LnNoYXBlPWosaS5iZWdpbigpO2Zvcih2YXIgYT0wO2E8dDsrK2EpaWYoTFthXT09PW4pe3Zh ciBvPUVbYV07by5kcmF3UGljayYmKG8ucGl4ZWxSYXRpbz0xLG8uZHJhd1BpY2soUikpfWku ZW5kKCl9fX0oKSksTi5heGVzUGl4ZWxzPWEoTi5heGVzLFIsVCxrKSxOLm9ucmVuZGVyJiZO Lm9ucmVuZGVyKCksci5iaW5kRnJhbWVidWZmZXIoci5GUkFNRUJVRkZFUixudWxsKSxyLnZp ZXdwb3J0KDAsMCxULGspLE4uY2xlYXJSR0JBKCksci5kZXB0aE1hc2soITApLHIuY29sb3JN YXNrKCEwLCEwLCEwLCEwKSxyLmVuYWJsZShyLkRFUFRIX1RFU1QpLHIuZGVwdGhGdW5jKHIu TEVRVUFMKSxyLmRpc2FibGUoci5CTEVORCksci5kaXNhYmxlKHIuQ1VMTF9GQUNFKTt2YXIg TT0hMTtBLmVuYWJsZSYmKE09TXx8QS5pc1RyYW5zcGFyZW50KCksQS5kcmF3KFIpKSxTLmF4 ZXM9QSx4Lm9iamVjdCYmUy5kcmF3KFIpLHIuZGlzYWJsZShyLkNVTExfRkFDRSk7Zm9yKG89 MDtvPGU7KytvKXsoQz1FW29dKS5heGVzPUEsQy5waXhlbFJhdGlvPU4ucGl4ZWxSYXRpbyxD LmlzT3BhcXVlJiZDLmlzT3BhcXVlKCkmJkMuZHJhdyhSKSxDLmlzVHJhbnNwYXJlbnQmJkMu aXNUcmFuc3BhcmVudCgpJiYoTT0hMCl9aWYoTSl7Yi5zaGFwZT1GLGIuYmluZCgpLHIuY2xl YXIoci5ERVBUSF9CVUZGRVJfQklUKSxyLmNvbG9yTWFzayghMSwhMSwhMSwhMSksci5kZXB0 aE1hc2soITApLHIuZGVwdGhGdW5jKHIuTEVTUyksQS5lbmFibGUmJkEuaXNUcmFuc3BhcmVu dCgpJiZBLmRyYXdUcmFuc3BhcmVudChSKTtmb3Iobz0wO288ZTsrK28peyhDPUVbb10pLmlz T3BhcXVlJiZDLmlzT3BhcXVlKCkmJkMuZHJhdyhSKX1yLmVuYWJsZShyLkJMRU5EKSxyLmJs ZW5kRXF1YXRpb24oci5GVU5DX0FERCksci5ibGVuZEZ1bmMoci5PTkUsci5PTkVfTUlOVVNf U1JDX0FMUEhBKSxyLmNvbG9yTWFzayghMCwhMCwhMCwhMCksci5kZXB0aE1hc2soITEpLHIu Y2xlYXJDb2xvcigwLDAsMCwwKSxyLmNsZWFyKHIuQ09MT1JfQlVGRkVSX0JJVCksQS5pc1Ry YW5zcGFyZW50KCkmJkEuZHJhd1RyYW5zcGFyZW50KFIpO2ZvcihvPTA7bzxlOysrbyl7dmFy IEM7KEM9RVtvXSkuaXNUcmFuc3BhcmVudCYmQy5pc1RyYW5zcGFyZW50KCkmJkMuZHJhd1Ry YW5zcGFyZW50KFIpfXIuYmluZEZyYW1lYnVmZmVyKHIuRlJBTUVCVUZGRVIsbnVsbCksci5i bGVuZEZ1bmMoci5PTkUsci5PTkVfTUlOVVNfU1JDX0FMUEhBKSxyLmRpc2FibGUoci5ERVBU SF9URVNUKSxfLmJpbmQoKSxiLmNvbG9yWzBdLmJpbmQoMCksXy51bmlmb3Jtcy5hY2N1bUJ1 ZmZlcj0wLGMociksci5kaXNhYmxlKHIuQkxFTkQpfUk9ITE7Zm9yKG89MDtvPGU7KytvKUVb b10uZGlydHk9ITF9fX1yZXR1cm4gTi5lbmFibGVNb3VzZUxpc3RlbmVycygpLGZ1bmN0aW9u IHQoKXtpZihOLl9zdG9wcGVkfHxOLmNvbnRleHRMb3N0KXJldHVybjtZKCkscmVxdWVzdEFu aW1hdGlvbkZyYW1lKHQpfSgpLE4ucmVkcmF3PWZ1bmN0aW9uKCl7Ti5fc3RvcHBlZHx8KEk9 ITAsWSgpKX0sTn0sY3JlYXRlQ2FtZXJhOm59fSx7Ii4vY2FtZXJhLmpzIjoxMTksIi4vbGli L3NoYWRlciI6MTIwLCJhLWJpZy10cmlhbmdsZSI6OCwiZ2wtYXhlczNkIjo3MCwiZ2wtYXhl czNkL3Byb3BlcnRpZXMiOjc3LCJnbC1mYm8iOjg2LCJnbC1tYXQ0L29ydGhvIjoxMDEsImds LW1hdDQvcGVyc3BlY3RpdmUiOjEwMiwiZ2wtc2VsZWN0LXN0YXRpYyI6MTMxLCJnbC1zcGlr ZXMzZCI6MTQxLCJpcy1tb2JpbGUiOjIzOCwibW91c2UtY2hhbmdlIjoyNDd9XSwxMjI6W2Z1 bmN0aW9uKHQsZSxyKXt2YXIgbj10KCJnbHNsaWZ5Iik7ci5wb2ludFZlcnRleD1uKFsicHJl Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUg dmVjMiBwb3NpdGlvbjtcblxudW5pZm9ybSBtYXQzIG1hdHJpeDtcbnVuaWZvcm0gZmxvYXQg cG9pbnRTaXplO1xudW5pZm9ybSBmbG9hdCBwb2ludENsb3VkO1xuXG5oaWdocCBmbG9hdCBy YW5kKHZlYzIgY28pIHtcbiAgaGlnaHAgZmxvYXQgYSA9IDEyLjk4OTg7XG4gIGhpZ2hwIGZs b2F0IGIgPSA3OC4yMzM7XG4gIGhpZ2hwIGZsb2F0IGMgPSA0Mzc1OC41NDUzO1xuICBoaWdo cCBmbG9hdCBkID0gZG90KGNvLnh5LCB2ZWMyKGEsIGIpKTtcbiAgaGlnaHAgZmxvYXQgZSA9 IG1vZChkLCAzLjE0KTtcbiAgcmV0dXJuIGZyYWN0KHNpbihlKSAqIGMpO1xufVxuXG52b2lk IG1haW4oKSB7XG4gIHZlYzMgaGdQb3NpdGlvbiA9IG1hdHJpeCAqIHZlYzMocG9zaXRpb24s IDEpO1xuICBnbF9Qb3NpdGlvbiAgPSB2ZWM0KGhnUG9zaXRpb24ueHksIDAsIGhnUG9zaXRp b24ueik7XG4gICAgLy8gaWYgd2UgZG9uJ3Qgaml0dGVyIHRoZSBwb2ludCBzaXplIGEgYml0 LCBvdmVyYWxsIHBvaW50IGNsb3VkXG4gICAgLy8gc2F0dXJhdGlvbiAnanVtcHMnIG9uIHpv b21pbmcsIHdoaWNoIGlzIGRpc3R1cmJpbmcgYW5kIGNvbmZ1c2luZ1xuICBnbF9Qb2ludFNp emUgPSBwb2ludFNpemUgKiAoKDE5LjUgKyByYW5kKHBvc2l0aW9uKSkgLyAyMC4wKTtcbiAg aWYocG9pbnRDbG91ZCAhPSAwLjApIHsgLy8gcG9pbnRDbG91ZCBpcyB0cnV0aHlcbiAgICAv LyBnZXQgdGhlIHNhbWUgc3F1YXJlIHN1cmZhY2UgYXMgY2lyY2xlIHdvdWxkIGJlXG4gICAg Z2xfUG9pbnRTaXplICo9IDAuODg2O1xuICB9XG59Il0pLHIucG9pbnRGcmFnbWVudD1uKFsi cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG51bmlmb3Jt IHZlYzQgY29sb3IsIGJvcmRlckNvbG9yO1xudW5pZm9ybSBmbG9hdCBjZW50ZXJGcmFjdGlv bjtcbnVuaWZvcm0gZmxvYXQgcG9pbnRDbG91ZDtcblxudm9pZCBtYWluKCkge1xuICBmbG9h dCByYWRpdXM7XG4gIHZlYzQgYmFzZUNvbG9yO1xuICBpZihwb2ludENsb3VkICE9IDAuMCkg eyAvLyBwb2ludENsb3VkIGlzIHRydXRoeVxuICAgIGlmKGNlbnRlckZyYWN0aW9uID09IDEu MCkge1xuICAgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7XG4gICAgfSBlbHNlIHtcbiAgICAg IGdsX0ZyYWdDb2xvciA9IG1peChib3JkZXJDb2xvciwgY29sb3IsIGNlbnRlckZyYWN0aW9u KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmFkaXVzID0gbGVuZ3RoKDIuMCAqIGdsX1Bv aW50Q29vcmQueHkgLSAxLjApO1xuICAgIGlmKHJhZGl1cyA+IDEuMCkge1xuICAgICAgZGlz Y2FyZDtcbiAgICB9XG4gICAgYmFzZUNvbG9yID0gbWl4KGJvcmRlckNvbG9yLCBjb2xvciwg c3RlcChyYWRpdXMsIGNlbnRlckZyYWN0aW9uKSk7XG4gICAgZ2xfRnJhZ0NvbG9yID0gdmVj NChiYXNlQ29sb3IucmdiICogYmFzZUNvbG9yLmEsIGJhc2VDb2xvci5hKTtcbiAgfVxufVxu Il0pLHIucGlja1ZlcnRleD1uKFsicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5l IEdMU0xJRlkgMVxuXG5hdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtcbmF0dHJpYnV0ZSB2ZWM0 IHBpY2tJZDtcblxudW5pZm9ybSBtYXQzIG1hdHJpeDtcbnVuaWZvcm0gZmxvYXQgcG9pbnRT aXplO1xudW5pZm9ybSB2ZWM0IHBpY2tPZmZzZXQ7XG5cbnZhcnlpbmcgdmVjNCBmcmFnSWQ7 XG5cbnZvaWQgbWFpbigpIHtcbiAgdmVjMyBoZ1Bvc2l0aW9uID0gbWF0cml4ICogdmVjMyhw b3NpdGlvbiwgMSk7XG4gIGdsX1Bvc2l0aW9uICA9IHZlYzQoaGdQb3NpdGlvbi54eSwgMCwg aGdQb3NpdGlvbi56KTtcbiAgZ2xfUG9pbnRTaXplID0gcG9pbnRTaXplO1xuXG4gIHZlYzQg aWQgPSBwaWNrSWQgKyBwaWNrT2Zmc2V0O1xuICBpZC55ICs9IGZsb29yKGlkLnggLyAyNTYu MCk7XG4gIGlkLnggLT0gZmxvb3IoaWQueCAvIDI1Ni4wKSAqIDI1Ni4wO1xuXG4gIGlkLnog Kz0gZmxvb3IoaWQueSAvIDI1Ni4wKTtcbiAgaWQueSAtPSBmbG9vcihpZC55IC8gMjU2LjAp ICogMjU2LjA7XG5cbiAgaWQudyArPSBmbG9vcihpZC56IC8gMjU2LjApO1xuICBpZC56IC09 IGZsb29yKGlkLnogLyAyNTYuMCkgKiAyNTYuMDtcblxuICBmcmFnSWQgPSBpZDtcbn1cbiJd KSxyLnBpY2tGcmFnbWVudD1uKFsicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4jZGVmaW5l IEdMU0xJRlkgMVxuXG52YXJ5aW5nIHZlYzQgZnJhZ0lkO1xuXG52b2lkIG1haW4oKSB7XG4g IGZsb2F0IHJhZGl1cyA9IGxlbmd0aCgyLjAgKiBnbF9Qb2ludENvb3JkLnh5IC0gMS4wKTtc biAgaWYocmFkaXVzID4gMS4wKSB7XG4gICAgZGlzY2FyZDtcbiAgfVxuICBnbF9GcmFnQ29s b3IgPSBmcmFnSWQgLyAyNTUuMDtcbn1cbiJdKX0se2dsc2xpZnk6MjMxfV0sMTIzOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImdsLXNoYWRlciIpLGk9dCgiZ2wt YnVmZmVyIiksYT10KCJ0eXBlZGFycmF5LXBvb2wiKSxvPXQoIi4vbGliL3NoYWRlciIpO2Z1 bmN0aW9uIHModCxlLHIsbixpKXt0aGlzLnBsb3Q9dCx0aGlzLm9mZnNldEJ1ZmZlcj1lLHRo aXMucGlja0J1ZmZlcj1yLHRoaXMuc2hhZGVyPW4sdGhpcy5waWNrU2hhZGVyPWksdGhpcy5z aXplTWluPS41LHRoaXMuc2l6ZU1pbkNhcD0yLHRoaXMuc2l6ZU1heD0yMCx0aGlzLmFyZWFS YXRpbz0xLHRoaXMucG9pbnRDb3VudD0wLHRoaXMuY29sb3I9WzEsMCwwLDFdLHRoaXMuYm9y ZGVyQ29sb3I9WzAsMCwwLDFdLHRoaXMuYmxlbmQ9ITEsdGhpcy5waWNrT2Zmc2V0PTAsdGhp cy5wb2ludHM9bnVsbH1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj10LmdsLGE9aShy KSxsPWkociksYz1uKHIsby5wb2ludFZlcnRleCxvLnBvaW50RnJhZ21lbnQpLHU9bihyLG8u cGlja1ZlcnRleCxvLnBpY2tGcmFnbWVudCksZj1uZXcgcyh0LGEsbCxjLHUpO3JldHVybiBm LnVwZGF0ZShlKSx0LmFkZE9iamVjdChmKSxmfTt2YXIgbCxjLHU9cy5wcm90b3R5cGU7dS5k aXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5zaGFkZXIuZGlzcG9zZSgpLHRoaXMucGlja1NoYWRl ci5kaXNwb3NlKCksdGhpcy5vZmZzZXRCdWZmZXIuZGlzcG9zZSgpLHRoaXMucGlja0J1ZmZl ci5kaXNwb3NlKCksdGhpcy5wbG90LnJlbW92ZU9iamVjdCh0aGlzKX0sdS51cGRhdGU9ZnVu Y3Rpb24odCl7dmFyIGU7ZnVuY3Rpb24gcihlLHIpe3JldHVybiBlIGluIHQ/dFtlXTpyfXQ9 dHx8e30sdGhpcy5zaXplTWluPXIoInNpemVNaW4iLC41KSx0aGlzLnNpemVNYXg9cigic2l6 ZU1heCIsMjApLHRoaXMuY29sb3I9cigiY29sb3IiLFsxLDAsMCwxXSkuc2xpY2UoKSx0aGlz LmFyZWFSYXRpbz1yKCJhcmVhUmF0aW8iLDEpLHRoaXMuYm9yZGVyQ29sb3I9cigiYm9yZGVy Q29sb3IiLFswLDAsMCwxXSkuc2xpY2UoKSx0aGlzLmJsZW5kPXIoImJsZW5kIiwhMSk7dmFy IG49dC5wb3NpdGlvbnMubGVuZ3RoPj4+MSxpPXQucG9zaXRpb25zIGluc3RhbmNlb2YgRmxv YXQzMkFycmF5LG89dC5pZFRvSW5kZXggaW5zdGFuY2VvZiBJbnQzMkFycmF5JiZ0LmlkVG9J bmRleC5sZW5ndGg+PW4scz10LnBvc2l0aW9ucyxsPWk/czphLm1hbGxvY0Zsb2F0MzIocy5s ZW5ndGgpLGM9bz90LmlkVG9JbmRleDphLm1hbGxvY0ludDMyKG4pO2lmKGl8fGwuc2V0KHMp LCFvKWZvcihsLnNldChzKSxlPTA7ZTxuO2UrKyljW2VdPWU7dGhpcy5wb2ludHM9cyx0aGlz Lm9mZnNldEJ1ZmZlci51cGRhdGUobCksdGhpcy5waWNrQnVmZmVyLnVwZGF0ZShjKSxpfHxh LmZyZWUobCksb3x8YS5mcmVlKGMpLHRoaXMucG9pbnRDb3VudD1uLHRoaXMucGlja09mZnNl dD0wfSx1LnVuaWZpZWREcmF3PShsPVsxLDAsMCwwLDEsMCwwLDAsMV0sYz1bMCwwLDAsMF0s ZnVuY3Rpb24odCl7dmFyIGU9dm9pZCAwIT09dCxyPWU/dGhpcy5waWNrU2hhZGVyOnRoaXMu c2hhZGVyLG49dGhpcy5wbG90LmdsLGk9dGhpcy5wbG90LmRhdGFCb3g7aWYoMD09PXRoaXMu cG9pbnRDb3VudClyZXR1cm4gdDt2YXIgYT1pWzJdLWlbMF0sbz1pWzNdLWlbMV0scz1mdW5j dGlvbih0LGUpe3ZhciByLG49MCxpPXQubGVuZ3RoPj4+MTtmb3Iocj0wO3I8aTtyKyspe3Zh ciBhPXRbMipyXSxvPXRbMipyKzFdO2E+PWVbMF0mJmE8PWVbMl0mJm8+PWVbMV0mJm88PWVb M10mJm4rK31yZXR1cm4gbn0odGhpcy5wb2ludHMsaSksdT10aGlzLnBsb3QucGlja1BpeGVs UmF0aW8qTWF0aC5tYXgoTWF0aC5taW4odGhpcy5zaXplTWluQ2FwLHRoaXMuc2l6ZU1pbiks TWF0aC5taW4odGhpcy5zaXplTWF4LHRoaXMuc2l6ZU1heC9NYXRoLnBvdyhzLC4zMzMzMykp KTtsWzBdPTIvYSxsWzRdPTIvbyxsWzZdPS0yKmlbMF0vYS0xLGxbN109LTIqaVsxXS9vLTEs dGhpcy5vZmZzZXRCdWZmZXIuYmluZCgpLHIuYmluZCgpLHIuYXR0cmlidXRlcy5wb3NpdGlv bi5wb2ludGVyKCksci51bmlmb3Jtcy5tYXRyaXg9bCxyLnVuaWZvcm1zLmNvbG9yPXRoaXMu Y29sb3Isci51bmlmb3Jtcy5ib3JkZXJDb2xvcj10aGlzLmJvcmRlckNvbG9yLHIudW5pZm9y bXMucG9pbnRDbG91ZD11PDUsci51bmlmb3Jtcy5wb2ludFNpemU9dSxyLnVuaWZvcm1zLmNl bnRlckZyYWN0aW9uPU1hdGgubWluKDEsTWF0aC5tYXgoMCxNYXRoLnNxcnQoMS10aGlzLmFy ZWFSYXRpbykpKSxlJiYoY1swXT0yNTUmdCxjWzFdPXQ+PjgmMjU1LGNbMl09dD4+MTYmMjU1 LGNbM109dD4+MjQmMjU1LHRoaXMucGlja0J1ZmZlci5iaW5kKCksci5hdHRyaWJ1dGVzLnBp Y2tJZC5wb2ludGVyKG4uVU5TSUdORURfQllURSksci51bmlmb3Jtcy5waWNrT2Zmc2V0PWMs dGhpcy5waWNrT2Zmc2V0PXQpO3ZhciBmPW4uZ2V0UGFyYW1ldGVyKG4uQkxFTkQpLGg9bi5n ZXRQYXJhbWV0ZXIobi5ESVRIRVIpO3JldHVybiBmJiYhdGhpcy5ibGVuZCYmbi5kaXNhYmxl KG4uQkxFTkQpLGgmJm4uZGlzYWJsZShuLkRJVEhFUiksbi5kcmF3QXJyYXlzKG4uUE9JTlRT LDAsdGhpcy5wb2ludENvdW50KSxmJiYhdGhpcy5ibGVuZCYmbi5lbmFibGUobi5CTEVORCks aCYmbi5lbmFibGUobi5ESVRIRVIpLHQrdGhpcy5wb2ludENvdW50fSksdS5kcmF3PXUudW5p ZmllZERyYXcsdS5kcmF3UGljaz11LnVuaWZpZWREcmF3LHUucGljaz1mdW5jdGlvbih0LGUs cil7dmFyIG49dGhpcy5waWNrT2Zmc2V0LGk9dGhpcy5wb2ludENvdW50O2lmKHI8bnx8cj49 bitpKXJldHVybiBudWxsO3ZhciBhPXItbixvPXRoaXMucG9pbnRzO3JldHVybntvYmplY3Q6 dGhpcyxwb2ludElkOmEsZGF0YUNvb3JkOltvWzIqYV0sb1syKmErMV1dfX19LHsiLi9saWIv c2hhZGVyIjoxMjIsImdsLWJ1ZmZlciI6NzgsImdsLXNoYWRlciI6MTMyLCJ0eXBlZGFycmF5 LXBvb2wiOjMwOH1dLDEyNDpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUscixuKXt2YXIgaSxhLG8scyxsLGM9ZVswXSx1PWVbMV0sZj1lWzJdLGg9ZVszXSxwPXJb MF0sZD1yWzFdLG09clsyXSxnPXJbM107KGE9YypwK3UqZCtmKm0raCpnKTwwJiYoYT0tYSxw PS1wLGQ9LWQsbT0tbSxnPS1nKTsxLWE+MWUtNj8oaT1NYXRoLmFjb3MoYSksbz1NYXRoLnNp bihpKSxzPU1hdGguc2luKCgxLW4pKmkpL28sbD1NYXRoLnNpbihuKmkpL28pOihzPTEtbixs PW4pO3JldHVybiB0WzBdPXMqYytsKnAsdFsxXT1zKnUrbCpkLHRbMl09cypmK2wqbSx0WzNd PXMqaCtsKmcsdH19LHt9XSwxMjU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5l eHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0fHwwPT09dD90LnRvU3RyaW5nKCk6IiJ9fSx7 fV0sMTI2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInZlY3Rvcml6 ZS10ZXh0Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgYT1pW2VdO2F8fChhPWlb ZV09e30pO2lmKHQgaW4gYSlyZXR1cm4gYVt0XTt2YXIgbz17dGV4dEFsaWduOiJjZW50ZXIi LHRleHRCYXNlbGluZToibWlkZGxlIixsaW5lSGVpZ2h0OjEsZm9udDplLGxpbmVTcGFjaW5n OjEuMjUsc3R5bGV0YWdzOnticmVha2xpbmVzOiEwLGJvbGRzOiEwLGl0YWxpY3M6ITAsc3Vi c2NyaXB0czohMCxzdXBlcnNjcmlwdHM6ITB9LHRyaWFuZ2xlczohMH0scz1uKHQsbyk7by50 cmlhbmdsZXM9ITE7dmFyIGwsYyx1PW4odCxvKTtpZihyJiYxIT09cil7Zm9yKGw9MDtsPHMu cG9zaXRpb25zLmxlbmd0aDsrK2wpZm9yKGM9MDtjPHMucG9zaXRpb25zW2xdLmxlbmd0aDsr K2Mpcy5wb3NpdGlvbnNbbF1bY10vPXI7Zm9yKGw9MDtsPHUucG9zaXRpb25zLmxlbmd0aDsr K2wpZm9yKGM9MDtjPHUucG9zaXRpb25zW2xdLmxlbmd0aDsrK2MpdS5wb3NpdGlvbnNbbF1b Y10vPXJ9dmFyIGY9W1sxLzAsMS8wXSxbLTEvMCwtMS8wXV0saD11LnBvc2l0aW9ucy5sZW5n dGg7Zm9yKGw9MDtsPGg7KytsKXt2YXIgcD11LnBvc2l0aW9uc1tsXTtmb3IoYz0wO2M8Mjsr K2MpZlswXVtjXT1NYXRoLm1pbihmWzBdW2NdLHBbY10pLGZbMV1bY109TWF0aC5tYXgoZlsx XVtjXSxwW2NdKX1yZXR1cm4gYVt0XT1bcyx1LGZdfTt2YXIgaT17fX0seyJ2ZWN0b3JpemUt dGV4dCI6MzExfV0sMTI3OltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiZ2wtc2hhZGVyIiks aT10KCJnbHNsaWZ5IiksYT1pKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBH TFNMSUZZIDFcblxuYm9vbCBvdXRPZlJhbmdlKGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IHAp IHtcbiAgcmV0dXJuICgocCA+IG1heChhLCBiKSkgfHwgXG4gICAgICAgICAgKHAgPCBtaW4o YSwgYikpKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzIgYSwgdmVjMiBiLCB2ZWMyIHAp IHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAg b3V0T2ZSYW5nZShhLnksIGIueSwgcC55KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMz IGEsIHZlYzMgYiwgdmVjMyBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwg cC54KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkgfHxcbiAgICAg ICAgICBvdXRPZlJhbmdlKGEueiwgYi56LCBwLnopKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdl KHZlYzQgYSwgdmVjNCBiLCB2ZWM0IHApIHtcbiAgcmV0dXJuIG91dE9mUmFuZ2UoYS54eXos IGIueHl6LCBwLnh5eik7XG59XG5cbmF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uO1xuYXR0cmli dXRlIHZlYzQgY29sb3I7XG5hdHRyaWJ1dGUgdmVjMiBnbHlwaDtcbmF0dHJpYnV0ZSB2ZWM0 IGlkO1xuXG51bmlmb3JtIHZlYzQgaGlnaGxpZ2h0SWQ7XG51bmlmb3JtIGZsb2F0IGhpZ2hs aWdodFNjYWxlO1xudW5pZm9ybSBtYXQ0IG1vZGVsLCB2aWV3LCBwcm9qZWN0aW9uO1xudW5p Zm9ybSB2ZWMzIGNsaXBCb3VuZHNbMl07XG5cbnZhcnlpbmcgdmVjNCBpbnRlcnBDb2xvcjtc bnZhcnlpbmcgdmVjNCBwaWNrSWQ7XG52YXJ5aW5nIHZlYzMgZGF0YUNvb3JkaW5hdGU7XG5c bnZvaWQgbWFpbigpIHtcbiAgaWYgKG91dE9mUmFuZ2UoY2xpcEJvdW5kc1swXSwgY2xpcEJv dW5kc1sxXSwgcG9zaXRpb24pKSB7XG5cbiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMCwwLDAs MCk7XG4gIH0gZWxzZSB7XG4gICAgZmxvYXQgc2NhbGUgPSAxLjA7XG4gICAgaWYoZGlzdGFu Y2UoaGlnaGxpZ2h0SWQsIGlkKSA8IDAuMDAwMSkge1xuICAgICAgc2NhbGUgPSBoaWdobGln aHRTY2FsZTtcbiAgICB9XG5cbiAgICB2ZWM0IHdvcmxkUG9zaXRpb24gPSBtb2RlbCAqIHZl YzQocG9zaXRpb24sIDEpO1xuICAgIHZlYzQgdmlld1Bvc2l0aW9uID0gdmlldyAqIHdvcmxk UG9zaXRpb247XG4gICAgdmlld1Bvc2l0aW9uID0gdmlld1Bvc2l0aW9uIC8gdmlld1Bvc2l0 aW9uLnc7XG4gICAgdmVjNCBjbGlwUG9zaXRpb24gPSBwcm9qZWN0aW9uICogKHZpZXdQb3Np dGlvbiArIHNjYWxlICogdmVjNChnbHlwaC54LCAtZ2x5cGgueSwgMCwgMCkpO1xuXG4gICAg Z2xfUG9zaXRpb24gPSBjbGlwUG9zaXRpb247XG4gICAgaW50ZXJwQ29sb3IgPSBjb2xvcjtc biAgICBwaWNrSWQgPSBpZDtcbiAgICBkYXRhQ29vcmRpbmF0ZSA9IHBvc2l0aW9uO1xuICB9 XG59Il0pLG89aShbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAx XG5cbmJvb2wgb3V0T2ZSYW5nZShmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBwKSB7XG4gIHJl dHVybiAoKHAgPiBtYXgoYSwgYikpIHx8IFxuICAgICAgICAgIChwIDwgbWluKGEsIGIpKSk7 XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMyIGEsIHZlYzIgYiwgdmVjMiBwKSB7XG4gIHJl dHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9mUmFu Z2UoYS55LCBiLnksIHAueSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMyBhLCB2ZWMz IGIsIHZlYzMgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxc biAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpIHx8XG4gICAgICAgICAgb3V0 T2ZSYW5nZShhLnosIGIueiwgcC56KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWM0IGEs IHZlYzQgYiwgdmVjNCBwKSB7XG4gIHJldHVybiBvdXRPZlJhbmdlKGEueHl6LCBiLnh5eiwg cC54eXopO1xufVxuXG5hdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjtcbmF0dHJpYnV0ZSB2ZWM0 IGNvbG9yO1xuYXR0cmlidXRlIHZlYzIgZ2x5cGg7XG5hdHRyaWJ1dGUgdmVjNCBpZDtcblxu dW5pZm9ybSBtYXQ0IG1vZGVsLCB2aWV3LCBwcm9qZWN0aW9uO1xudW5pZm9ybSB2ZWMyIHNj cmVlblNpemU7XG51bmlmb3JtIHZlYzMgY2xpcEJvdW5kc1syXTtcbnVuaWZvcm0gZmxvYXQg aGlnaGxpZ2h0U2NhbGUsIHBpeGVsUmF0aW87XG51bmlmb3JtIHZlYzQgaGlnaGxpZ2h0SWQ7 XG5cbnZhcnlpbmcgdmVjNCBpbnRlcnBDb2xvcjtcbnZhcnlpbmcgdmVjNCBwaWNrSWQ7XG52 YXJ5aW5nIHZlYzMgZGF0YUNvb3JkaW5hdGU7XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYgKG91 dE9mUmFuZ2UoY2xpcEJvdW5kc1swXSwgY2xpcEJvdW5kc1sxXSwgcG9zaXRpb24pKSB7XG5c biAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMCwwLDAsMCk7XG4gIH0gZWxzZSB7XG4gICAgZmxv YXQgc2NhbGUgPSBwaXhlbFJhdGlvO1xuICAgIGlmKGRpc3RhbmNlKGhpZ2hsaWdodElkLmJn ciwgaWQuYmdyKSA8IDAuMDAxKSB7XG4gICAgICBzY2FsZSAqPSBoaWdobGlnaHRTY2FsZTtc biAgICB9XG5cbiAgICB2ZWM0IHdvcmxkUG9zaXRpb24gPSBtb2RlbCAqIHZlYzQocG9zaXRp b24sIDEuMCk7XG4gICAgdmVjNCB2aWV3UG9zaXRpb24gPSB2aWV3ICogd29ybGRQb3NpdGlv bjtcbiAgICB2ZWM0IGNsaXBQb3NpdGlvbiA9IHByb2plY3Rpb24gKiB2aWV3UG9zaXRpb247 XG4gICAgY2xpcFBvc2l0aW9uIC89IGNsaXBQb3NpdGlvbi53O1xuXG4gICAgZ2xfUG9zaXRp b24gPSBjbGlwUG9zaXRpb24gKyB2ZWM0KHNjcmVlblNpemUgKiBzY2FsZSAqIHZlYzIoZ2x5 cGgueCwgLWdseXBoLnkpLCAwLjAsIDAuMCk7XG4gICAgaW50ZXJwQ29sb3IgPSBjb2xvcjtc biAgICBwaWNrSWQgPSBpZDtcbiAgICBkYXRhQ29vcmRpbmF0ZSA9IHBvc2l0aW9uO1xuICB9 XG59Il0pLHM9aShbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAx XG5cbmJvb2wgb3V0T2ZSYW5nZShmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBwKSB7XG4gIHJl dHVybiAoKHAgPiBtYXgoYSwgYikpIHx8IFxuICAgICAgICAgIChwIDwgbWluKGEsIGIpKSk7 XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMyIGEsIHZlYzIgYiwgdmVjMiBwKSB7XG4gIHJl dHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9mUmFu Z2UoYS55LCBiLnksIHAueSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMyBhLCB2ZWMz IGIsIHZlYzMgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxc biAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpIHx8XG4gICAgICAgICAgb3V0 T2ZSYW5nZShhLnosIGIueiwgcC56KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWM0IGEs IHZlYzQgYiwgdmVjNCBwKSB7XG4gIHJldHVybiBvdXRPZlJhbmdlKGEueHl6LCBiLnh5eiwg cC54eXopO1xufVxuXG5hdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjtcbmF0dHJpYnV0ZSB2ZWM0 IGNvbG9yO1xuYXR0cmlidXRlIHZlYzIgZ2x5cGg7XG5hdHRyaWJ1dGUgdmVjNCBpZDtcblxu dW5pZm9ybSBmbG9hdCBoaWdobGlnaHRTY2FsZTtcbnVuaWZvcm0gdmVjNCBoaWdobGlnaHRJ ZDtcbnVuaWZvcm0gdmVjMyBheGVzWzJdO1xudW5pZm9ybSBtYXQ0IG1vZGVsLCB2aWV3LCBw cm9qZWN0aW9uO1xudW5pZm9ybSB2ZWMyIHNjcmVlblNpemU7XG51bmlmb3JtIHZlYzMgY2xp cEJvdW5kc1syXTtcbnVuaWZvcm0gZmxvYXQgc2NhbGUsIHBpeGVsUmF0aW87XG5cbnZhcnlp bmcgdmVjNCBpbnRlcnBDb2xvcjtcbnZhcnlpbmcgdmVjNCBwaWNrSWQ7XG52YXJ5aW5nIHZl YzMgZGF0YUNvb3JkaW5hdGU7XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYgKG91dE9mUmFuZ2Uo Y2xpcEJvdW5kc1swXSwgY2xpcEJvdW5kc1sxXSwgcG9zaXRpb24pKSB7XG5cbiAgICBnbF9Q b3NpdGlvbiA9IHZlYzQoMCwwLDAsMCk7XG4gIH0gZWxzZSB7XG4gICAgZmxvYXQgbHNjYWxl ID0gcGl4ZWxSYXRpbyAqIHNjYWxlO1xuICAgIGlmKGRpc3RhbmNlKGhpZ2hsaWdodElkLCBp ZCkgPCAwLjAwMDEpIHtcbiAgICAgIGxzY2FsZSAqPSBoaWdobGlnaHRTY2FsZTtcbiAgICB9 XG5cbiAgICB2ZWM0IGNsaXBDZW50ZXIgICA9IHByb2plY3Rpb24gKiB2aWV3ICogbW9kZWwg KiB2ZWM0KHBvc2l0aW9uLCAxKTtcbiAgICB2ZWMzIGRhdGFQb3NpdGlvbiA9IHBvc2l0aW9u ICsgMC41KmxzY2FsZSooYXhlc1swXSAqIGdseXBoLnggKyBheGVzWzFdICogZ2x5cGgueSkg KiBjbGlwQ2VudGVyLncgKiBzY3JlZW5TaXplLnk7XG4gICAgdmVjNCBjbGlwUG9zaXRpb24g PSBwcm9qZWN0aW9uICogdmlldyAqIG1vZGVsICogdmVjNChkYXRhUG9zaXRpb24sIDEpO1xu XG4gICAgZ2xfUG9zaXRpb24gPSBjbGlwUG9zaXRpb247XG4gICAgaW50ZXJwQ29sb3IgPSBj b2xvcjtcbiAgICBwaWNrSWQgPSBpZDtcbiAgICBkYXRhQ29vcmRpbmF0ZSA9IGRhdGFQb3Np dGlvbjtcbiAgfVxufVxuIl0pLGw9aShbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZp bmUgR0xTTElGWSAxXG5cbmJvb2wgb3V0T2ZSYW5nZShmbG9hdCBhLCBmbG9hdCBiLCBmbG9h dCBwKSB7XG4gIHJldHVybiAoKHAgPiBtYXgoYSwgYikpIHx8IFxuICAgICAgICAgIChwIDwg bWluKGEsIGIpKSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMyIGEsIHZlYzIgYiwgdmVj MiBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAg ICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2Uo dmVjMyBhLCB2ZWMzIGIsIHZlYzMgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBi LngsIHAueCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpIHx8XG4g ICAgICAgICAgb3V0T2ZSYW5nZShhLnosIGIueiwgcC56KSk7XG59XG5cbmJvb2wgb3V0T2ZS YW5nZSh2ZWM0IGEsIHZlYzQgYiwgdmVjNCBwKSB7XG4gIHJldHVybiBvdXRPZlJhbmdlKGEu eHl6LCBiLnh5eiwgcC54eXopO1xufVxuXG51bmlmb3JtIHZlYzMgZnJhZ0NsaXBCb3VuZHNb Ml07XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG5cbnZhcnlpbmcgdmVjNCBpbnRlcnBDb2xv cjtcbnZhcnlpbmcgdmVjMyBkYXRhQ29vcmRpbmF0ZTtcblxudm9pZCBtYWluKCkge1xuICBp ZiAoXG4gICAgb3V0T2ZSYW5nZShmcmFnQ2xpcEJvdW5kc1swXSwgZnJhZ0NsaXBCb3VuZHNb MV0sIGRhdGFDb29yZGluYXRlKSB8fFxuICAgIGludGVycENvbG9yLmEgKiBvcGFjaXR5ID09 IDAuXG4gICkgZGlzY2FyZDtcbiAgZ2xfRnJhZ0NvbG9yID0gaW50ZXJwQ29sb3IgKiBvcGFj aXR5O1xufVxuIl0pLGM9aShbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xT TElGWSAxXG5cbmJvb2wgb3V0T2ZSYW5nZShmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBwKSB7 XG4gIHJldHVybiAoKHAgPiBtYXgoYSwgYikpIHx8IFxuICAgICAgICAgIChwIDwgbWluKGEs IGIpKSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMyIGEsIHZlYzIgYiwgdmVjMiBwKSB7 XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91 dE9mUmFuZ2UoYS55LCBiLnksIHAueSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMyBh LCB2ZWMzIGIsIHZlYzMgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAu eCkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpIHx8XG4gICAgICAg ICAgb3V0T2ZSYW5nZShhLnosIGIueiwgcC56KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2 ZWM0IGEsIHZlYzQgYiwgdmVjNCBwKSB7XG4gIHJldHVybiBvdXRPZlJhbmdlKGEueHl6LCBi Lnh5eiwgcC54eXopO1xufVxuXG51bmlmb3JtIHZlYzMgZnJhZ0NsaXBCb3VuZHNbMl07XG51 bmlmb3JtIGZsb2F0IHBpY2tHcm91cDtcblxudmFyeWluZyB2ZWM0IHBpY2tJZDtcbnZhcnlp bmcgdmVjMyBkYXRhQ29vcmRpbmF0ZTtcblxudm9pZCBtYWluKCkge1xuICBpZiAob3V0T2ZS YW5nZShmcmFnQ2xpcEJvdW5kc1swXSwgZnJhZ0NsaXBCb3VuZHNbMV0sIGRhdGFDb29yZGlu YXRlKSkgZGlzY2FyZDtcblxuICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHBpY2tHcm91cCwgcGlj a0lkLmJncik7XG59Il0pLHU9W3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVjMyJ9LHtuYW1l OiJjb2xvciIsdHlwZToidmVjNCJ9LHtuYW1lOiJnbHlwaCIsdHlwZToidmVjMiJ9LHtuYW1l OiJpZCIsdHlwZToidmVjNCJ9XSxmPXt2ZXJ0ZXg6YSxmcmFnbWVudDpsLGF0dHJpYnV0ZXM6 dX0saD17dmVydGV4Om8sZnJhZ21lbnQ6bCxhdHRyaWJ1dGVzOnV9LHA9e3ZlcnRleDpzLGZy YWdtZW50OmwsYXR0cmlidXRlczp1fSxkPXt2ZXJ0ZXg6YSxmcmFnbWVudDpjLGF0dHJpYnV0 ZXM6dX0sbT17dmVydGV4Om8sZnJhZ21lbnQ6YyxhdHRyaWJ1dGVzOnV9LGc9e3ZlcnRleDpz LGZyYWdtZW50OmMsYXR0cmlidXRlczp1fTtmdW5jdGlvbiB2KHQsZSl7dmFyIHI9bih0LGUp LGk9ci5hdHRyaWJ1dGVzO3JldHVybiBpLnBvc2l0aW9uLmxvY2F0aW9uPTAsaS5jb2xvci5s b2NhdGlvbj0xLGkuZ2x5cGgubG9jYXRpb249MixpLmlkLmxvY2F0aW9uPTMscn1yLmNyZWF0 ZVBlcnNwZWN0aXZlPWZ1bmN0aW9uKHQpe3JldHVybiB2KHQsZil9LHIuY3JlYXRlT3J0aG89 ZnVuY3Rpb24odCl7cmV0dXJuIHYodCxoKX0sci5jcmVhdGVQcm9qZWN0PWZ1bmN0aW9uKHQp e3JldHVybiB2KHQscCl9LHIuY3JlYXRlUGlja1BlcnNwZWN0aXZlPWZ1bmN0aW9uKHQpe3Jl dHVybiB2KHQsZCl9LHIuY3JlYXRlUGlja09ydGhvPWZ1bmN0aW9uKHQpe3JldHVybiB2KHQs bSl9LHIuY3JlYXRlUGlja1Byb2plY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHYodCxnKX19LHsi Z2wtc2hhZGVyIjoxMzIsZ2xzbGlmeToyMzF9XSwxMjg6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiaXMtc3RyaW5nLWJsYW5rIiksaT10KCJnbC1idWZmZXIiKSxh PXQoImdsLXZhbyIpLG89dCgidHlwZWRhcnJheS1wb29sIikscz10KCJnbC1tYXQ0L211bHRp cGx5IiksbD10KCIuL2xpYi9zaGFkZXJzIiksYz10KCIuL2xpYi9nbHlwaHMiKSx1PXQoIi4v bGliL2dldC1zaW1wbGUtc3RyaW5nIiksZj1bMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCww LDAsMV07ZnVuY3Rpb24gaCh0LGUpe3ZhciByPXRbMF0sbj10WzFdLGk9dFsyXSxhPXRbM107 cmV0dXJuIHRbMF09ZVswXSpyK2VbNF0qbitlWzhdKmkrZVsxMl0qYSx0WzFdPWVbMV0qcitl WzVdKm4rZVs5XSppK2VbMTNdKmEsdFsyXT1lWzJdKnIrZVs2XSpuK2VbMTBdKmkrZVsxNF0q YSx0WzNdPWVbM10qcitlWzddKm4rZVsxMV0qaStlWzE1XSphLHR9ZnVuY3Rpb24gcCh0LGUs cixuKXtyZXR1cm4gaChuLG4pLGgobixuKSxoKG4sbil9ZnVuY3Rpb24gZCh0LGUpe3RoaXMu aW5kZXg9dCx0aGlzLmRhdGFDb29yZGluYXRlPXRoaXMucG9zaXRpb249ZX1mdW5jdGlvbiBt KHQpe3JldHVybiEwPT09dHx8dD4xPzE6dH1mdW5jdGlvbiBnKHQsZSxyLG4saSxhLG8scyxs LGMsdSxmKXt0aGlzLmdsPXQsdGhpcy5waXhlbFJhdGlvPTEsdGhpcy5zaGFkZXI9ZSx0aGlz Lm9ydGhvU2hhZGVyPXIsdGhpcy5wcm9qZWN0U2hhZGVyPW4sdGhpcy5wb2ludEJ1ZmZlcj1p LHRoaXMuY29sb3JCdWZmZXI9YSx0aGlzLmdseXBoQnVmZmVyPW8sdGhpcy5pZEJ1ZmZlcj1z LHRoaXMudmFvPWwsdGhpcy52ZXJ0ZXhDb3VudD0wLHRoaXMubGluZVZlcnRleENvdW50PTAs dGhpcy5vcGFjaXR5PTEsdGhpcy5oYXNBbHBoYT0hMSx0aGlzLmxpbmVXaWR0aD0wLHRoaXMu cHJvamVjdFNjYWxlPVsyLzMsMi8zLDIvM10sdGhpcy5wcm9qZWN0T3BhY2l0eT1bMSwxLDFd LHRoaXMucHJvamVjdEhhc0FscGhhPSExLHRoaXMucGlja0lkPTAsdGhpcy5waWNrUGVyc3Bl Y3RpdmVTaGFkZXI9Yyx0aGlzLnBpY2tPcnRob1NoYWRlcj11LHRoaXMucGlja1Byb2plY3RT aGFkZXI9Zix0aGlzLnBvaW50cz1bXSx0aGlzLl9zZWxlY3RSZXN1bHQ9bmV3IGQoMCxbMCww LDBdKSx0aGlzLnVzZU9ydGhvPSEwLHRoaXMuYm91bmRzPVtbMS8wLDEvMCwxLzBdLFstMS8w LC0xLzAsLTEvMF1dLHRoaXMuYXhlc1Byb2plY3Q9WyEwLCEwLCEwXSx0aGlzLmF4ZXNCb3Vu ZHM9W1stMS8wLC0xLzAsLTEvMF0sWzEvMCwxLzAsMS8wXV0sdGhpcy5oaWdobGlnaHRJZD1b MSwxLDEsMV0sdGhpcy5oaWdobGlnaHRTY2FsZT0yLHRoaXMuY2xpcEJvdW5kcz1bWy0xLzAs LTEvMCwtMS8wXSxbMS8wLDEvMCwxLzBdXSx0aGlzLmRpcnR5PSEwfWUuZXhwb3J0cz1mdW5j dGlvbih0KXt2YXIgZT10LmdsLHI9bC5jcmVhdGVQZXJzcGVjdGl2ZShlKSxuPWwuY3JlYXRl T3J0aG8oZSksbz1sLmNyZWF0ZVByb2plY3QoZSkscz1sLmNyZWF0ZVBpY2tQZXJzcGVjdGl2 ZShlKSxjPWwuY3JlYXRlUGlja09ydGhvKGUpLHU9bC5jcmVhdGVQaWNrUHJvamVjdChlKSxm PWkoZSksaD1pKGUpLHA9aShlKSxkPWkoZSksbT1hKGUsW3tidWZmZXI6ZixzaXplOjMsdHlw ZTplLkZMT0FUfSx7YnVmZmVyOmgsc2l6ZTo0LHR5cGU6ZS5GTE9BVH0se2J1ZmZlcjpwLHNp emU6Mix0eXBlOmUuRkxPQVR9LHtidWZmZXI6ZCxzaXplOjQsdHlwZTplLlVOU0lHTkVEX0JZ VEUsbm9ybWFsaXplZDohMH1dKSx2PW5ldyBnKGUscixuLG8sZixoLHAsZCxtLHMsYyx1KTty ZXR1cm4gdi51cGRhdGUodCksdn07dmFyIHY9Zy5wcm90b3R5cGU7di5waWNrU2xvdHM9MSx2 LnNldFBpY2tCYXNlPWZ1bmN0aW9uKHQpe3RoaXMucGlja0lkPXR9LHYuaXNUcmFuc3BhcmVu dD1mdW5jdGlvbigpe2lmKHRoaXMuaGFzQWxwaGEpcmV0dXJuITA7Zm9yKHZhciB0PTA7dDwz OysrdClpZih0aGlzLmF4ZXNQcm9qZWN0W3RdJiZ0aGlzLnByb2plY3RIYXNBbHBoYSlyZXR1 cm4hMDtyZXR1cm4hMX0sdi5pc09wYXF1ZT1mdW5jdGlvbigpe2lmKCF0aGlzLmhhc0FscGhh KXJldHVybiEwO2Zvcih2YXIgdD0wO3Q8MzsrK3QpaWYodGhpcy5heGVzUHJvamVjdFt0XSYm IXRoaXMucHJvamVjdEhhc0FscGhhKXJldHVybiEwO3JldHVybiExfTt2YXIgeT1bMCwwXSx4 PVswLDAsMF0sYj1bMCwwLDBdLF89WzAsMCwwLDFdLHc9WzAsMCwwLDFdLFQ9Zi5zbGljZSgp LGs9WzAsMCwwXSxBPVtbMCwwLDBdLFswLDAsMF1dO2Z1bmN0aW9uIE0odCl7cmV0dXJuIHRb MF09dFsxXT10WzJdPTAsdH1mdW5jdGlvbiBTKHQsZSl7cmV0dXJuIHRbMF09ZVswXSx0WzFd PWVbMV0sdFsyXT1lWzJdLHRbM109MSx0fWZ1bmN0aW9uIEUodCxlLHIsbil7cmV0dXJuIHRb MF09ZVswXSx0WzFdPWVbMV0sdFsyXT1lWzJdLHRbcl09bix0fWZ1bmN0aW9uIEwodCxlLHIs bil7dmFyIGksYT1lLmF4ZXNQcm9qZWN0LG89ZS5nbCxsPXQudW5pZm9ybXMsYz1yLm1vZGVs fHxmLHU9ci52aWV3fHxmLGg9ci5wcm9qZWN0aW9ufHxmLGQ9ZS5heGVzQm91bmRzLG09ZnVu Y3Rpb24odCl7Zm9yKHZhciBlPUEscj0wO3I8MjsrK3IpZm9yKHZhciBuPTA7bjwzOysrbill W3JdW25dPU1hdGgubWF4KE1hdGgubWluKHRbcl1bbl0sMWU4KSwtMWU4KTtyZXR1cm4gZX0o ZS5jbGlwQm91bmRzKTtpPWUuYXhlcyYmZS5heGVzLmxhc3RDdWJlUHJvcHM/ZS5heGVzLmxh c3RDdWJlUHJvcHMuYXhpczpbMSwxLDFdLHlbMF09Mi9vLmRyYXdpbmdCdWZmZXJXaWR0aCx5 WzFdPTIvby5kcmF3aW5nQnVmZmVySGVpZ2h0LHQuYmluZCgpLGwudmlldz11LGwucHJvamVj dGlvbj1oLGwuc2NyZWVuU2l6ZT15LGwuaGlnaGxpZ2h0SWQ9ZS5oaWdobGlnaHRJZCxsLmhp Z2hsaWdodFNjYWxlPWUuaGlnaGxpZ2h0U2NhbGUsbC5jbGlwQm91bmRzPW0sbC5waWNrR3Jv dXA9ZS5waWNrSWQvMjU1LGwucGl4ZWxSYXRpbz1uO2Zvcih2YXIgZz0wO2c8MzsrK2cpaWYo YVtnXSl7bC5zY2FsZT1lLnByb2plY3RTY2FsZVtnXSxsLm9wYWNpdHk9ZS5wcm9qZWN0T3Bh Y2l0eVtnXTtmb3IodmFyIHY9VCxMPTA7TDwxNjsrK0wpdltMXT0wO2ZvcihMPTA7TDw0Oysr TCl2WzUqTF09MTt2WzUqZ109MCxpW2ddPDA/dlsxMitnXT1kWzBdW2ddOnZbMTIrZ109ZFsx XVtnXSxzKHYsYyx2KSxsLm1vZGVsPXY7dmFyIEM9KGcrMSklMyxQPShnKzIpJTMsST1NKHgp LE89TShiKTtJW0NdPTEsT1tQXT0xO3ZhciB6PXAoMCwwLDAsUyhfLEkpKSxEPXAoMCwwLDAs Uyh3LE8pKTtpZihNYXRoLmFicyh6WzFdKT5NYXRoLmFicyhEWzFdKSl7dmFyIFI9ejt6PUQs RD1SLFI9SSxJPU8sTz1SO3ZhciBGPUM7Qz1QLFA9Rn16WzBdPDAmJihJW0NdPS0xKSxEWzFd PjAmJihPW1BdPS0xKTt2YXIgQj0wLE49MDtmb3IoTD0wO0w8NDsrK0wpQis9TWF0aC5wb3co Y1s0KkMrTF0sMiksTis9TWF0aC5wb3coY1s0KlArTF0sMik7SVtDXS89TWF0aC5zcXJ0KEIp LE9bUF0vPU1hdGguc3FydChOKSxsLmF4ZXNbMF09SSxsLmF4ZXNbMV09TyxsLmZyYWdDbGlw Qm91bmRzWzBdPUUoayxtWzBdLGcsLTFlOCksbC5mcmFnQ2xpcEJvdW5kc1sxXT1FKGssbVsx XSxnLDFlOCksZS52YW8uYmluZCgpLGUudmFvLmRyYXcoby5UUklBTkdMRVMsZS52ZXJ0ZXhD b3VudCksZS5saW5lV2lkdGg+MCYmKG8ubGluZVdpZHRoKGUubGluZVdpZHRoKm4pLGUudmFv LmRyYXcoby5MSU5FUyxlLmxpbmVWZXJ0ZXhDb3VudCxlLnZlcnRleENvdW50KSksZS52YW8u dW5iaW5kKCl9fXZhciBDPVtbLTFlOCwtMWU4LC0xZThdLFsxZTgsMWU4LDFlOF1dO2Z1bmN0 aW9uIFAodCxlLHIsbixpLGEsbyl7dmFyIHM9ci5nbDtpZigoYT09PXIucHJvamVjdEhhc0Fs cGhhfHxvKSYmTChlLHIsbixpKSxhPT09ci5oYXNBbHBoYXx8byl7dC5iaW5kKCk7dmFyIGw9 dC51bmlmb3JtcztsLm1vZGVsPW4ubW9kZWx8fGYsbC52aWV3PW4udmlld3x8ZixsLnByb2pl Y3Rpb249bi5wcm9qZWN0aW9ufHxmLHlbMF09Mi9zLmRyYXdpbmdCdWZmZXJXaWR0aCx5WzFd PTIvcy5kcmF3aW5nQnVmZmVySGVpZ2h0LGwuc2NyZWVuU2l6ZT15LGwuaGlnaGxpZ2h0SWQ9 ci5oaWdobGlnaHRJZCxsLmhpZ2hsaWdodFNjYWxlPXIuaGlnaGxpZ2h0U2NhbGUsbC5mcmFn Q2xpcEJvdW5kcz1DLGwuY2xpcEJvdW5kcz1yLmF4ZXMuYm91bmRzLGwub3BhY2l0eT1yLm9w YWNpdHksbC5waWNrR3JvdXA9ci5waWNrSWQvMjU1LGwucGl4ZWxSYXRpbz1pLHIudmFvLmJp bmQoKSxyLnZhby5kcmF3KHMuVFJJQU5HTEVTLHIudmVydGV4Q291bnQpLHIubGluZVdpZHRo PjAmJihzLmxpbmVXaWR0aChyLmxpbmVXaWR0aCppKSxyLnZhby5kcmF3KHMuTElORVMsci5s aW5lVmVydGV4Q291bnQsci52ZXJ0ZXhDb3VudCkpLHIudmFvLnVuYmluZCgpfX1mdW5jdGlv biBJKHQsZSxyLGkpe3ZhciBhO2E9QXJyYXkuaXNBcnJheSh0KT9lPHQubGVuZ3RoP3RbZV06 dm9pZCAwOnQsYT11KGEpO3ZhciBvPSEwO24oYSkmJihhPSJcdTI1YmMiLG89ITEpO3ZhciBz PWMoYSxyLGkpO3JldHVybnttZXNoOnNbMF0sbGluZXM6c1sxXSxib3VuZHM6c1syXSx2aXNp YmxlOm99fXYuZHJhdz1mdW5jdGlvbih0KXtQKHRoaXMudXNlT3J0aG8/dGhpcy5vcnRob1No YWRlcjp0aGlzLnNoYWRlcix0aGlzLnByb2plY3RTaGFkZXIsdGhpcyx0LHRoaXMucGl4ZWxS YXRpbywhMSwhMSl9LHYuZHJhd1RyYW5zcGFyZW50PWZ1bmN0aW9uKHQpe1AodGhpcy51c2VP cnRobz90aGlzLm9ydGhvU2hhZGVyOnRoaXMuc2hhZGVyLHRoaXMucHJvamVjdFNoYWRlcix0 aGlzLHQsdGhpcy5waXhlbFJhdGlvLCEwLCExKX0sdi5kcmF3UGljaz1mdW5jdGlvbih0KXtQ KHRoaXMudXNlT3J0aG8/dGhpcy5waWNrT3J0aG9TaGFkZXI6dGhpcy5waWNrUGVyc3BlY3Rp dmVTaGFkZXIsdGhpcy5waWNrUHJvamVjdFNoYWRlcix0aGlzLHQsMSwhMCwhMCl9LHYucGlj az1mdW5jdGlvbih0KXtpZighdClyZXR1cm4gbnVsbDtpZih0LmlkIT09dGhpcy5waWNrSWQp cmV0dXJuIG51bGw7dmFyIGU9dC52YWx1ZVsyXSsodC52YWx1ZVsxXTw8OCkrKHQudmFsdWVb MF08PDE2KTtpZihlPj10aGlzLnBvaW50Q291bnR8fGU8MClyZXR1cm4gbnVsbDt2YXIgcj10 aGlzLnBvaW50c1tlXSxuPXRoaXMuX3NlbGVjdFJlc3VsdDtuLmluZGV4PWU7Zm9yKHZhciBp PTA7aTwzOysraSluLnBvc2l0aW9uW2ldPW4uZGF0YUNvb3JkaW5hdGVbaV09cltpXTtyZXR1 cm4gbn0sdi5oaWdobGlnaHQ9ZnVuY3Rpb24odCl7aWYodCl7dmFyIGU9dC5pbmRleCxyPTI1 NSZlLG49ZT4+OCYyNTUsaT1lPj4xNiYyNTU7dGhpcy5oaWdobGlnaHRJZD1bci8yNTUsbi8y NTUsaS8yNTUsMF19ZWxzZSB0aGlzLmhpZ2hsaWdodElkPVsxLDEsMSwxXX0sdi51cGRhdGU9 ZnVuY3Rpb24odCl7aWYoInBlcnNwZWN0aXZlImluKHQ9dHx8e30pJiYodGhpcy51c2VPcnRo bz0hdC5wZXJzcGVjdGl2ZSksIm9ydGhvZ3JhcGhpYyJpbiB0JiYodGhpcy51c2VPcnRobz0h IXQub3J0aG9ncmFwaGljKSwibGluZVdpZHRoImluIHQmJih0aGlzLmxpbmVXaWR0aD10Lmxp bmVXaWR0aCksInByb2plY3QiaW4gdClpZihBcnJheS5pc0FycmF5KHQucHJvamVjdCkpdGhp cy5heGVzUHJvamVjdD10LnByb2plY3Q7ZWxzZXt2YXIgZT0hIXQucHJvamVjdDt0aGlzLmF4 ZXNQcm9qZWN0PVtlLGUsZV19aWYoInByb2plY3RTY2FsZSJpbiB0KWlmKEFycmF5LmlzQXJy YXkodC5wcm9qZWN0U2NhbGUpKXRoaXMucHJvamVjdFNjYWxlPXQucHJvamVjdFNjYWxlLnNs aWNlKCk7ZWxzZXt2YXIgcj0rdC5wcm9qZWN0U2NhbGU7dGhpcy5wcm9qZWN0U2NhbGU9W3Is cixyXX1pZih0aGlzLnByb2plY3RIYXNBbHBoYT0hMSwicHJvamVjdE9wYWNpdHkiaW4gdCl7 aWYoQXJyYXkuaXNBcnJheSh0LnByb2plY3RPcGFjaXR5KSl0aGlzLnByb2plY3RPcGFjaXR5 PXQucHJvamVjdE9wYWNpdHkuc2xpY2UoKTtlbHNle3I9K3QucHJvamVjdE9wYWNpdHk7dGhp cy5wcm9qZWN0T3BhY2l0eT1bcixyLHJdfWZvcih2YXIgbj0wO248MzsrK24pdGhpcy5wcm9q ZWN0T3BhY2l0eVtuXT1tKHRoaXMucHJvamVjdE9wYWNpdHlbbl0pLHRoaXMucHJvamVjdE9w YWNpdHlbbl08MSYmKHRoaXMucHJvamVjdEhhc0FscGhhPSEwKX10aGlzLmhhc0FscGhhPSEx LCJvcGFjaXR5ImluIHQmJih0aGlzLm9wYWNpdHk9bSh0Lm9wYWNpdHkpLHRoaXMub3BhY2l0 eTwxJiYodGhpcy5oYXNBbHBoYT0hMCkpLHRoaXMuZGlydHk9ITA7dmFyIGksYSxzPXQucG9z aXRpb24sbD10LmZvbnR8fCJub3JtYWwiLGM9dC5hbGlnbm1lbnR8fFswLDBdO2lmKDI9PT1j Lmxlbmd0aClpPWNbMF0sYT1jWzFdO2Vsc2V7aT1bXSxhPVtdO2ZvcihuPTA7bjxjLmxlbmd0 aDsrK24paVtuXT1jW25dWzBdLGFbbl09Y1tuXVsxXX12YXIgdT1bMS8wLDEvMCwxLzBdLGY9 Wy0xLzAsLTEvMCwtMS8wXSxoPXQuZ2x5cGgscD10LmNvbG9yLGQ9dC5zaXplLGc9dC5hbmds ZSx2PXQubGluZUNvbG9yLHk9LTEseD0wLGI9MCxfPTA7aWYocy5sZW5ndGgpe189cy5sZW5n dGg7dDpmb3Iobj0wO248XzsrK24pe2Zvcih2YXIgdz1zW25dLFQ9MDtUPDM7KytUKWlmKGlz TmFOKHdbVF0pfHwhaXNGaW5pdGUod1tUXSkpY29udGludWUgdDt2YXIgaz0oTj1JKGgsbixs LHRoaXMucGl4ZWxSYXRpbykpLm1lc2gsQT1OLmxpbmVzLE09Ti5ib3VuZHM7eCs9MyprLmNl bGxzLmxlbmd0aCxiKz0yKkEuZWRnZXMubGVuZ3RofX12YXIgUz14K2IsRT1vLm1hbGxvY0Zs b2F0KDMqUyksTD1vLm1hbGxvY0Zsb2F0KDQqUyksQz1vLm1hbGxvY0Zsb2F0KDIqUyksUD1v Lm1hbGxvY1VpbnQzMihTKTtpZihTPjApe3ZhciBPPTAsej14LEQ9WzAsMCwwLDFdLFI9WzAs MCwwLDFdLEY9QXJyYXkuaXNBcnJheShwKSYmQXJyYXkuaXNBcnJheShwWzBdKSxCPUFycmF5 LmlzQXJyYXkodikmJkFycmF5LmlzQXJyYXkodlswXSk7dDpmb3Iobj0wO248XzsrK24pe3kr PTE7Zm9yKHc9c1tuXSxUPTA7VDwzOysrVCl7aWYoaXNOYU4od1tUXSl8fCFpc0Zpbml0ZSh3 W1RdKSljb250aW51ZSB0O2ZbVF09TWF0aC5tYXgoZltUXSx3W1RdKSx1W1RdPU1hdGgubWlu KHVbVF0sd1tUXSl9az0oTj1JKGgsbixsLHRoaXMucGl4ZWxSYXRpbykpLm1lc2gsQT1OLmxp bmVzLE09Ti5ib3VuZHM7dmFyIE4saj1OLnZpc2libGU7aWYoailpZihBcnJheS5pc0FycmF5 KHApKXtpZigzPT09KFU9Rj9uPHAubGVuZ3RoP3Bbbl06WzAsMCwwLDBdOnApLmxlbmd0aCl7 Zm9yKFQ9MDtUPDM7KytUKURbVF09VVtUXTtEWzNdPTF9ZWxzZSBpZig0PT09VS5sZW5ndGgp e2ZvcihUPTA7VDw0OysrVClEW1RdPVVbVF07IXRoaXMuaGFzQWxwaGEmJlVbM108MSYmKHRo aXMuaGFzQWxwaGE9ITApfX1lbHNlIERbMF09RFsxXT1EWzJdPTAsRFszXT0xO2Vsc2UgRD1b MSwxLDEsMF07aWYoailpZihBcnJheS5pc0FycmF5KHYpKXt2YXIgVTtpZigzPT09KFU9Qj9u PHYubGVuZ3RoP3Zbbl06WzAsMCwwLDBdOnYpLmxlbmd0aCl7Zm9yKFQ9MDtUPDM7KytUKVJb VF09VVtUXTtSW1RdPTF9ZWxzZSBpZig0PT09VS5sZW5ndGgpe2ZvcihUPTA7VDw0OysrVClS W1RdPVVbVF07IXRoaXMuaGFzQWxwaGEmJlVbM108MSYmKHRoaXMuaGFzQWxwaGE9ITApfX1l bHNlIFJbMF09UlsxXT1SWzJdPTAsUlszXT0xO2Vsc2UgUj1bMSwxLDEsMF07dmFyIFY9LjU7 aj9BcnJheS5pc0FycmF5KGQpP1Y9bjxkLmxlbmd0aD8rZFtuXToxMjpkP1Y9K2Q6dGhpcy51 c2VPcnRobyYmKFY9MTIpOlY9MDt2YXIgSD0wO0FycmF5LmlzQXJyYXkoZyk/SD1uPGcubGVu Z3RoPytnW25dOjA6ZyYmKEg9K2cpO3ZhciBxPU1hdGguY29zKEgpLEc9TWF0aC5zaW4oSCk7 Zm9yKHc9c1tuXSxUPTA7VDwzOysrVClmW1RdPU1hdGgubWF4KGZbVF0sd1tUXSksdVtUXT1N YXRoLm1pbih1W1RdLHdbVF0pO3ZhciBZPWksVz1hO1k9MDtBcnJheS5pc0FycmF5KGkpP1k9 bjxpLmxlbmd0aD9pW25dOjA6aSYmKFk9aSk7Vz0wO0FycmF5LmlzQXJyYXkoYSk/Vz1uPGEu bGVuZ3RoP2Fbbl06MDphJiYoVz1hKTt2YXIgWD1bWSo9WT4wPzEtTVswXVswXTpZPDA/MStN WzFdWzBdOjEsVyo9Vz4wPzEtTVswXVsxXTpXPDA/MStNWzFdWzFdOjFdLFo9ay5jZWxsc3x8 W10sSj1rLnBvc2l0aW9uc3x8W107Zm9yKFQ9MDtUPFoubGVuZ3RoOysrVClmb3IodmFyIEs9 WltUXSxRPTA7UTwzOysrUSl7Zm9yKHZhciAkPTA7JDwzOysrJClFWzMqTyskXT13WyRdO2Zv cigkPTA7JDw0OysrJClMWzQqTyskXT1EWyRdO1BbT109eTt2YXIgdHQ9SltLW1FdXTtDWzIq T109VioocSp0dFswXS1HKnR0WzFdK1hbMF0pLENbMipPKzFdPVYqKEcqdHRbMF0rcSp0dFsx XStYWzFdKSxPKz0xfWZvcihaPUEuZWRnZXMsSj1BLnBvc2l0aW9ucyxUPTA7VDxaLmxlbmd0 aDsrK1QpZm9yKEs9WltUXSxRPTA7UTwyOysrUSl7Zm9yKCQ9MDskPDM7KyskKUVbMyp6KyRd PXdbJF07Zm9yKCQ9MDskPDQ7KyskKUxbNCp6KyRdPVJbJF07UFt6XT15O3R0PUpbS1tRXV07 Q1syKnpdPVYqKHEqdHRbMF0tRyp0dFsxXStYWzBdKSxDWzIqeisxXT1WKihHKnR0WzBdK3Eq dHRbMV0rWFsxXSkseis9MX19fXRoaXMuYm91bmRzPVt1LGZdLHRoaXMucG9pbnRzPXMsdGhp cy5wb2ludENvdW50PXMubGVuZ3RoLHRoaXMudmVydGV4Q291bnQ9eCx0aGlzLmxpbmVWZXJ0 ZXhDb3VudD1iLHRoaXMucG9pbnRCdWZmZXIudXBkYXRlKEUpLHRoaXMuY29sb3JCdWZmZXIu dXBkYXRlKEwpLHRoaXMuZ2x5cGhCdWZmZXIudXBkYXRlKEMpLHRoaXMuaWRCdWZmZXIudXBk YXRlKFApLG8uZnJlZShFKSxvLmZyZWUoTCksby5mcmVlKEMpLG8uZnJlZShQKX0sdi5kaXNw b3NlPWZ1bmN0aW9uKCl7dGhpcy5zaGFkZXIuZGlzcG9zZSgpLHRoaXMub3J0aG9TaGFkZXIu ZGlzcG9zZSgpLHRoaXMucGlja1BlcnNwZWN0aXZlU2hhZGVyLmRpc3Bvc2UoKSx0aGlzLnBp Y2tPcnRob1NoYWRlci5kaXNwb3NlKCksdGhpcy52YW8uZGlzcG9zZSgpLHRoaXMucG9pbnRC dWZmZXIuZGlzcG9zZSgpLHRoaXMuY29sb3JCdWZmZXIuZGlzcG9zZSgpLHRoaXMuZ2x5cGhC dWZmZXIuZGlzcG9zZSgpLHRoaXMuaWRCdWZmZXIuZGlzcG9zZSgpfX0seyIuL2xpYi9nZXQt c2ltcGxlLXN0cmluZyI6MTI1LCIuL2xpYi9nbHlwaHMiOjEyNiwiLi9saWIvc2hhZGVycyI6 MTI3LCJnbC1idWZmZXIiOjc4LCJnbC1tYXQ0L211bHRpcGx5IjoxMDAsImdsLXZhbyI6MTUw LCJpcy1zdHJpbmctYmxhbmsiOjIzOSwidHlwZWRhcnJheS1wb29sIjozMDh9XSwxMjk6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZ2xzbGlmeSIpO3IuYm94VmVy dGV4PW4oWyJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5c bmF0dHJpYnV0ZSB2ZWMyIHZlcnRleDtcblxudW5pZm9ybSB2ZWMyIGNvcm5lckEsIGNvcm5l ckI7XG5cbnZvaWQgbWFpbigpIHtcbiAgZ2xfUG9zaXRpb24gPSB2ZWM0KG1peChjb3JuZXJB LCBjb3JuZXJCLCB2ZXJ0ZXgpLCAwLCAxKTtcbn1cbiJdKSxyLmJveEZyYWdtZW50PW4oWyJw cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnVuaWZvcm0g dmVjNCBjb2xvcjtcblxudm9pZCBtYWluKCkge1xuICBnbF9GcmFnQ29sb3IgPSBjb2xvcjtc bn1cbiJdKX0se2dsc2xpZnk6MjMxfV0sMTMwOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJp Y3QiO3ZhciBuPXQoImdsLXNoYWRlciIpLGk9dCgiZ2wtYnVmZmVyIiksYT10KCIuL2xpYi9z aGFkZXJzIik7ZnVuY3Rpb24gbyh0LGUscil7dGhpcy5wbG90PXQsdGhpcy5ib3hCdWZmZXI9 ZSx0aGlzLmJveFNoYWRlcj1yLHRoaXMuZW5hYmxlZD0hMCx0aGlzLnNlbGVjdEJveD1bMS8w LDEvMCwtMS8wLC0xLzBdLHRoaXMuYm9yZGVyQ29sb3I9WzAsMCwwLDFdLHRoaXMuaW5uZXJG aWxsPSExLHRoaXMuaW5uZXJDb2xvcj1bMCwwLDAsLjI1XSx0aGlzLm91dGVyRmlsbD0hMCx0 aGlzLm91dGVyQ29sb3I9WzAsMCwwLC41XSx0aGlzLmJvcmRlcldpZHRoPTEwfWUuZXhwb3J0 cz1mdW5jdGlvbih0LGUpe3ZhciByPXQuZ2wscz1pKHIsWzAsMCwwLDEsMSwwLDEsMV0pLGw9 bihyLGEuYm94VmVydGV4LGEuYm94RnJhZ21lbnQpLGM9bmV3IG8odCxzLGwpO3JldHVybiBj LnVwZGF0ZShlKSx0LmFkZE92ZXJsYXkoYyksY307dmFyIHM9by5wcm90b3R5cGU7cy5kcmF3 PWZ1bmN0aW9uKCl7aWYodGhpcy5lbmFibGVkKXt2YXIgdD10aGlzLnBsb3QsZT10aGlzLnNl bGVjdEJveCxyPXRoaXMuYm9yZGVyV2lkdGgsbj0odGhpcy5pbm5lckZpbGwsdGhpcy5pbm5l ckNvbG9yKSxpPSh0aGlzLm91dGVyRmlsbCx0aGlzLm91dGVyQ29sb3IpLGE9dGhpcy5ib3Jk ZXJDb2xvcixvPXQuYm94LHM9dC5zY3JlZW5Cb3gsbD10LmRhdGFCb3gsYz10LnZpZXdCb3gs dT10LnBpeGVsUmF0aW8sZj0oZVswXS1sWzBdKSooY1syXS1jWzBdKS8obFsyXS1sWzBdKStj WzBdLGg9KGVbMV0tbFsxXSkqKGNbM10tY1sxXSkvKGxbM10tbFsxXSkrY1sxXSxwPShlWzJd LWxbMF0pKihjWzJdLWNbMF0pLyhsWzJdLWxbMF0pK2NbMF0sZD0oZVszXS1sWzFdKSooY1sz XS1jWzFdKS8obFszXS1sWzFdKStjWzFdO2lmKGY9TWF0aC5tYXgoZixjWzBdKSxoPU1hdGgu bWF4KGgsY1sxXSkscD1NYXRoLm1pbihwLGNbMl0pLGQ9TWF0aC5taW4oZCxjWzNdKSwhKHA8 Znx8ZDxoKSl7by5iaW5kKCk7dmFyIG09c1syXS1zWzBdLGc9c1szXS1zWzFdO2lmKHRoaXMu b3V0ZXJGaWxsJiYoby5kcmF3Qm94KDAsMCxtLGgsaSksby5kcmF3Qm94KDAsaCxmLGQsaSks by5kcmF3Qm94KDAsZCxtLGcsaSksby5kcmF3Qm94KHAsaCxtLGQsaSkpLHRoaXMuaW5uZXJG aWxsJiZvLmRyYXdCb3goZixoLHAsZCxuKSxyPjApe3ZhciB2PXIqdTtvLmRyYXdCb3goZi12 LGgtdixwK3YsaCt2LGEpLG8uZHJhd0JveChmLXYsZC12LHArdixkK3YsYSksby5kcmF3Qm94 KGYtdixoLXYsZit2LGQrdixhKSxvLmRyYXdCb3gocC12LGgtdixwK3YsZCt2LGEpfX19fSxz LnVwZGF0ZT1mdW5jdGlvbih0KXt0PXR8fHt9LHRoaXMuaW5uZXJGaWxsPSEhdC5pbm5lckZp bGwsdGhpcy5vdXRlckZpbGw9ISF0Lm91dGVyRmlsbCx0aGlzLmlubmVyQ29sb3I9KHQuaW5u ZXJDb2xvcnx8WzAsMCwwLC41XSkuc2xpY2UoKSx0aGlzLm91dGVyQ29sb3I9KHQub3V0ZXJD b2xvcnx8WzAsMCwwLC41XSkuc2xpY2UoKSx0aGlzLmJvcmRlckNvbG9yPSh0LmJvcmRlckNv bG9yfHxbMCwwLDAsMV0pLnNsaWNlKCksdGhpcy5ib3JkZXJXaWR0aD10LmJvcmRlcldpZHRo fHwwLHRoaXMuc2VsZWN0Qm94PSh0LnNlbGVjdEJveHx8dGhpcy5zZWxlY3RCb3gpLnNsaWNl KCl9LHMuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuYm94QnVmZmVyLmRpc3Bvc2UoKSx0aGlz LmJveFNoYWRlci5kaXNwb3NlKCksdGhpcy5wbG90LnJlbW92ZU92ZXJsYXkodGhpcyl9fSx7 Ii4vbGliL3NoYWRlcnMiOjEyOSwiZ2wtYnVmZmVyIjo3OCwiZ2wtc2hhZGVyIjoxMzJ9XSwx MzE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSl7dmFyIHI9ZVswXSxhPWVbMV0sbz1uKHQscixhLHt9KSxzPWkubWFsbG9jVWludDgociph KjQpO3JldHVybiBuZXcgbCh0LG8scyl9O3ZhciBuPXQoImdsLWZibyIpLGk9dCgidHlwZWRh cnJheS1wb29sIiksYT10KCJuZGFycmF5Iiksbz10KCJiaXQtdHdpZGRsZSIpLm5leHRQb3cy O2Z1bmN0aW9uIHModCxlLHIsbixpKXt0aGlzLmNvb3JkPVt0LGVdLHRoaXMuaWQ9cix0aGlz LnZhbHVlPW4sdGhpcy5kaXN0YW5jZT1pfWZ1bmN0aW9uIGwodCxlLHIpe3RoaXMuZ2w9dCx0 aGlzLmZibz1lLHRoaXMuYnVmZmVyPXIsdGhpcy5fcmVhZFRpbWVvdXQ9bnVsbDt2YXIgbj10 aGlzO3RoaXMuX3JlYWRDYWxsYmFjaz1mdW5jdGlvbigpe24uZ2wmJihlLmJpbmQoKSx0LnJl YWRQaXhlbHMoMCwwLGUuc2hhcGVbMF0sZS5zaGFwZVsxXSx0LlJHQkEsdC5VTlNJR05FRF9C WVRFLG4uYnVmZmVyKSxuLl9yZWFkVGltZW91dD1udWxsKX19dmFyIGM9bC5wcm90b3R5cGU7 T2JqZWN0LmRlZmluZVByb3BlcnR5KGMsInNoYXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMuZ2w/dGhpcy5mYm8uc2hhcGUuc2xpY2UoKTpbMCwwXX0sc2V0OmZ1bmN0aW9uKHQp e2lmKHRoaXMuZ2wpe3RoaXMuZmJvLnNoYXBlPXQ7dmFyIGU9dGhpcy5mYm8uc2hhcGVbMF0s cj10aGlzLmZiby5zaGFwZVsxXTtpZihyKmUqND50aGlzLmJ1ZmZlci5sZW5ndGgpe2kuZnJl ZSh0aGlzLmJ1ZmZlcik7Zm9yKHZhciBuPXRoaXMuYnVmZmVyPWkubWFsbG9jVWludDgobyhy KmUqNCkpLGE9MDthPHIqZSo0OysrYSluW2FdPTI1NX1yZXR1cm4gdH19fSksYy5iZWdpbj1m dW5jdGlvbigpe3ZhciB0PXRoaXMuZ2w7dGhpcy5zaGFwZTt0JiYodGhpcy5mYm8uYmluZCgp LHQuY2xlYXJDb2xvcigxLDEsMSwxKSx0LmNsZWFyKHQuQ09MT1JfQlVGRkVSX0JJVHx0LkRF UFRIX0JVRkZFUl9CSVQpKX0sYy5lbmQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdsO3QmJih0 LmJpbmRGcmFtZWJ1ZmZlcih0LkZSQU1FQlVGRkVSLG51bGwpLHRoaXMuX3JlYWRUaW1lb3V0 fHxjbGVhclRpbWVvdXQodGhpcy5fcmVhZFRpbWVvdXQpLHRoaXMuX3JlYWRUaW1lb3V0PXNl dFRpbWVvdXQodGhpcy5fcmVhZENhbGxiYWNrLDEpKX0sYy5xdWVyeT1mdW5jdGlvbih0LGUs cil7aWYoIXRoaXMuZ2wpcmV0dXJuIG51bGw7dmFyIG49dGhpcy5mYm8uc2hhcGUuc2xpY2Uo KTt0fD0wLGV8PTAsIm51bWJlciIhPXR5cGVvZiByJiYocj0xKTt2YXIgaT0wfE1hdGgubWlu KE1hdGgubWF4KHQtciwwKSxuWzBdKSxvPTB8TWF0aC5taW4oTWF0aC5tYXgodCtyLDApLG5b MF0pLGw9MHxNYXRoLm1pbihNYXRoLm1heChlLXIsMCksblsxXSksYz0wfE1hdGgubWluKE1h dGgubWF4KGUrciwwKSxuWzFdKTtpZihvPD1pfHxjPD1sKXJldHVybiBudWxsO3ZhciB1PVtv LWksYy1sXSxmPWEodGhpcy5idWZmZXIsW3VbMF0sdVsxXSw0XSxbNCw0Km5bMF0sMV0sNCoo aStuWzBdKmwpKSxoPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49MWU4LGk9LTEsYT0tMSxv PXQuc2hhcGVbMF0scz10LnNoYXBlWzFdLGw9MDtsPG87bCsrKWZvcih2YXIgYz0wO2M8cztj Kyspe3ZhciB1PXQuZ2V0KGwsYywwKSxmPXQuZ2V0KGwsYywxKSxoPXQuZ2V0KGwsYywyKSxw PXQuZ2V0KGwsYywzKTtpZih1PDI1NXx8ZjwyNTV8fGg8MjU1fHxwPDI1NSl7dmFyIGQ9ZS1s LG09ci1jLGc9ZCpkK20qbTtnPG4mJihuPWcsaT1sLGE9Yyl9fXJldHVybltpLGEsbl19KGYu aGkodVswXSx1WzFdLDEpLHIscikscD1oWzBdLGQ9aFsxXTtyZXR1cm4gcDwwfHxNYXRoLnBv dyh0aGlzLnJhZGl1cywyKTxoWzJdP251bGw6bmV3IHMocCtpfDAsZCtsfDAsZi5nZXQocCxk LDApLFtmLmdldChwLGQsMSksZi5nZXQocCxkLDIpLGYuZ2V0KHAsZCwzKV0sTWF0aC5zcXJ0 KGhbMl0pKX0sYy5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5nbCYmKHRoaXMuZmJvLmRpc3Bv c2UoKSxpLmZyZWUodGhpcy5idWZmZXIpLHRoaXMuZ2w9bnVsbCx0aGlzLl9yZWFkVGltZW91 dCYmY2xlYXJUaW1lb3V0KHRoaXMuX3JlYWRUaW1lb3V0KSl9fSx7ImJpdC10d2lkZGxlIjoz MiwiZ2wtZmJvIjo4NixuZGFycmF5OjI1OSwidHlwZWRhcnJheS1wb29sIjozMDh9XSwxMzI6 W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiLi9saWIvY3JlYXRlLXVu aWZvcm1zIiksaT10KCIuL2xpYi9jcmVhdGUtYXR0cmlidXRlcyIpLGE9dCgiLi9saWIvcmVm bGVjdCIpLG89dCgiLi9saWIvc2hhZGVyLWNhY2hlIikscz10KCIuL2xpYi9ydW50aW1lLXJl ZmxlY3QiKSxsPXQoIi4vbGliL0dMRXJyb3IiKTtmdW5jdGlvbiBjKHQpe3RoaXMuZ2w9dCx0 aGlzLmdsLmxhc3RBdHRyaWJDb3VudD0wLHRoaXMuX3ZyZWY9dGhpcy5fZnJlZj10aGlzLl9y ZWxpbms9dGhpcy52ZXJ0U2hhZGVyPXRoaXMuZnJhZ1NoYWRlcj10aGlzLnByb2dyYW09dGhp cy5hdHRyaWJ1dGVzPXRoaXMudW5pZm9ybXM9dGhpcy50eXBlcz1udWxsfXZhciB1PWMucHJv dG90eXBlO2Z1bmN0aW9uIGYodCxlKXtyZXR1cm4gdC5uYW1lPGUubmFtZT8tMToxfXUuYmlu ZD1mdW5jdGlvbigpe3ZhciB0O3RoaXMucHJvZ3JhbXx8dGhpcy5fcmVsaW5rKCk7dmFyIGU9 dGhpcy5nbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHRoaXMucHJvZ3JhbSx0aGlzLmdsLkFDVElW RV9BVFRSSUJVVEVTKSxyPXRoaXMuZ2wubGFzdEF0dHJpYkNvdW50O2lmKGU+cilmb3IodD1y O3Q8ZTt0KyspdGhpcy5nbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh0KTtlbHNlIGlmKHI+ ZSlmb3IodD1lO3Q8cjt0KyspdGhpcy5nbC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkodCk7 dGhpcy5nbC5sYXN0QXR0cmliQ291bnQ9ZSx0aGlzLmdsLnVzZVByb2dyYW0odGhpcy5wcm9n cmFtKX0sdS5kaXNwb3NlPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuZ2wubGFzdEF0dHJp YkNvdW50LGU9MDtlPHQ7ZSsrKXRoaXMuZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGUp O3RoaXMuZ2wubGFzdEF0dHJpYkNvdW50PTAsdGhpcy5fZnJlZiYmdGhpcy5fZnJlZi5kaXNw b3NlKCksdGhpcy5fdnJlZiYmdGhpcy5fdnJlZi5kaXNwb3NlKCksdGhpcy5hdHRyaWJ1dGVz PXRoaXMudHlwZXM9dGhpcy52ZXJ0U2hhZGVyPXRoaXMuZnJhZ1NoYWRlcj10aGlzLnByb2dy YW09dGhpcy5fcmVsaW5rPXRoaXMuX2ZyZWY9dGhpcy5fdnJlZj1udWxsfSx1LnVwZGF0ZT1m dW5jdGlvbih0LGUscixjKXtpZighZXx8MT09PWFyZ3VtZW50cy5sZW5ndGgpe3ZhciB1PXQ7 dD11LnZlcnRleCxlPXUuZnJhZ21lbnQscj11LnVuaWZvcm1zLGM9dS5hdHRyaWJ1dGVzfXZh ciBoPXRoaXMscD1oLmdsLGQ9aC5fdnJlZjtoLl92cmVmPW8uc2hhZGVyKHAscC5WRVJURVhf U0hBREVSLHQpLGQmJmQuZGlzcG9zZSgpLGgudmVydFNoYWRlcj1oLl92cmVmLnNoYWRlcjt2 YXIgbT10aGlzLl9mcmVmO2lmKGguX2ZyZWY9by5zaGFkZXIocCxwLkZSQUdNRU5UX1NIQURF UixlKSxtJiZtLmRpc3Bvc2UoKSxoLmZyYWdTaGFkZXI9aC5fZnJlZi5zaGFkZXIsIXJ8fCFj KXt2YXIgZz1wLmNyZWF0ZVByb2dyYW0oKTtpZihwLmF0dGFjaFNoYWRlcihnLGguZnJhZ1No YWRlcikscC5hdHRhY2hTaGFkZXIoZyxoLnZlcnRTaGFkZXIpLHAubGlua1Byb2dyYW0oZyks IXAuZ2V0UHJvZ3JhbVBhcmFtZXRlcihnLHAuTElOS19TVEFUVVMpKXt2YXIgdj1wLmdldFBy b2dyYW1JbmZvTG9nKGcpO3Rocm93IG5ldyBsKHYsIkVycm9yIGxpbmtpbmcgcHJvZ3JhbToi K3YpfXI9cnx8cy51bmlmb3JtcyhwLGcpLGM9Y3x8cy5hdHRyaWJ1dGVzKHAsZykscC5kZWxl dGVQcm9ncmFtKGcpfShjPWMuc2xpY2UoKSkuc29ydChmKTt2YXIgeSx4PVtdLGI9W10sXz1b XTtmb3IoeT0wO3k8Yy5sZW5ndGg7Kyt5KXt2YXIgdz1jW3ldO2lmKHcudHlwZS5pbmRleE9m KCJtYXQiKT49MCl7Zm9yKHZhciBUPTB8dy50eXBlLmNoYXJBdCh3LnR5cGUubGVuZ3RoLTEp LGs9bmV3IEFycmF5KFQpLEE9MDtBPFQ7KytBKWtbQV09Xy5sZW5ndGgsYi5wdXNoKHcubmFt ZSsiWyIrQSsiXSIpLCJudW1iZXIiPT10eXBlb2Ygdy5sb2NhdGlvbj9fLnB1c2gody5sb2Nh dGlvbitBKTpBcnJheS5pc0FycmF5KHcubG9jYXRpb24pJiZ3LmxvY2F0aW9uLmxlbmd0aD09 PVQmJiJudW1iZXIiPT10eXBlb2Ygdy5sb2NhdGlvbltBXT9fLnB1c2goMHx3LmxvY2F0aW9u W0FdKTpfLnB1c2goLTEpO3gucHVzaCh7bmFtZTp3Lm5hbWUsdHlwZTp3LnR5cGUsbG9jYXRp b25zOmt9KX1lbHNlIHgucHVzaCh7bmFtZTp3Lm5hbWUsdHlwZTp3LnR5cGUsbG9jYXRpb25z OltfLmxlbmd0aF19KSxiLnB1c2gody5uYW1lKSwibnVtYmVyIj09dHlwZW9mIHcubG9jYXRp b24/Xy5wdXNoKDB8dy5sb2NhdGlvbik6Xy5wdXNoKC0xKX12YXIgTT0wO2Zvcih5PTA7eTxf Lmxlbmd0aDsrK3kpaWYoX1t5XTwwKXtmb3IoO18uaW5kZXhPZihNKT49MDspTSs9MTtfW3ld PU19dmFyIFM9bmV3IEFycmF5KHIubGVuZ3RoKTtmdW5jdGlvbiBFKCl7aC5wcm9ncmFtPW8u cHJvZ3JhbShwLGguX3ZyZWYsaC5fZnJlZixiLF8pO2Zvcih2YXIgdD0wO3Q8ci5sZW5ndGg7 Kyt0KVNbdF09cC5nZXRVbmlmb3JtTG9jYXRpb24oaC5wcm9ncmFtLHJbdF0ubmFtZSl9RSgp LGguX3JlbGluaz1FLGgudHlwZXM9e3VuaWZvcm1zOmEociksYXR0cmlidXRlczphKGMpfSxo LmF0dHJpYnV0ZXM9aShwLGgseCxfKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaCwidW5pZm9y bXMiLG4ocCxoLHIsUykpfSxlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbixpKXt2YXIgYT1u ZXcgYyh0KTtyZXR1cm4gYS51cGRhdGUoZSxyLG4saSksYX19LHsiLi9saWIvR0xFcnJvciI6 MTMzLCIuL2xpYi9jcmVhdGUtYXR0cmlidXRlcyI6MTM0LCIuL2xpYi9jcmVhdGUtdW5pZm9y bXMiOjEzNSwiLi9saWIvcmVmbGVjdCI6MTM2LCIuL2xpYi9ydW50aW1lLXJlZmxlY3QiOjEz NywiLi9saWIvc2hhZGVyLWNhY2hlIjoxMzh9XSwxMzM6W2Z1bmN0aW9uKHQsZSxyKXtmdW5j dGlvbiBuKHQsZSxyKXt0aGlzLnNob3J0TWVzc2FnZT1lfHwiIix0aGlzLmxvbmdNZXNzYWdl PXJ8fCIiLHRoaXMucmF3RXJyb3I9dHx8IiIsdGhpcy5tZXNzYWdlPSJnbC1zaGFkZXI6ICIr KGV8fHR8fCIiKSsocj8iXG4iK3I6IiIpLHRoaXMuc3RhY2s9KG5ldyBFcnJvcikuc3RhY2t9 bi5wcm90b3R5cGU9bmV3IEVycm9yLG4ucHJvdG90eXBlLm5hbWU9IkdMRXJyb3IiLG4ucHJv dG90eXBlLmNvbnN0cnVjdG9yPW4sZS5leHBvcnRzPW59LHt9XSwxMzQ6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGkpe2Zvcih2YXIg YT17fSxvPTAsYz1yLmxlbmd0aDtvPGM7KytvKXt2YXIgdT1yW29dLGY9dS5uYW1lLGg9dS50 eXBlLHA9dS5sb2NhdGlvbnM7c3dpdGNoKGgpe2Nhc2UiYm9vbCI6Y2FzZSJpbnQiOmNhc2Ui ZmxvYXQiOnModCxlLHBbMF0saSwxLGEsZik7YnJlYWs7ZGVmYXVsdDppZihoLmluZGV4T2Yo InZlYyIpPj0wKXtpZigoZD1oLmNoYXJDb2RlQXQoaC5sZW5ndGgtMSktNDgpPDJ8fGQ+NCl0 aHJvdyBuZXcgbigiIiwiSW52YWxpZCBkYXRhIHR5cGUgZm9yIGF0dHJpYnV0ZSAiK2YrIjog IitoKTtzKHQsZSxwWzBdLGksZCxhLGYpfWVsc2V7aWYoIShoLmluZGV4T2YoIm1hdCIpPj0w KSl0aHJvdyBuZXcgbigiIiwiVW5rbm93biBkYXRhIHR5cGUgZm9yIGF0dHJpYnV0ZSAiK2Yr IjogIitoKTt2YXIgZDtpZigoZD1oLmNoYXJDb2RlQXQoaC5sZW5ndGgtMSktNDgpPDJ8fGQ+ NCl0aHJvdyBuZXcgbigiIiwiSW52YWxpZCBkYXRhIHR5cGUgZm9yIGF0dHJpYnV0ZSAiK2Yr IjogIitoKTtsKHQsZSxwLGksZCxhLGYpfX19cmV0dXJuIGF9O3ZhciBuPXQoIi4vR0xFcnJv ciIpO2Z1bmN0aW9uIGkodCxlLHIsbixpLGEpe3RoaXMuX2dsPXQsdGhpcy5fd3JhcHBlcj1l LHRoaXMuX2luZGV4PXIsdGhpcy5fbG9jYXRpb25zPW4sdGhpcy5fZGltZW5zaW9uPWksdGhp cy5fY29uc3RGdW5jPWF9dmFyIGE9aS5wcm90b3R5cGU7YS5wb2ludGVyPWZ1bmN0aW9uKHQs ZSxyLG4pe3ZhciBpPXRoaXMuX2dsLGE9dGhpcy5fbG9jYXRpb25zW3RoaXMuX2luZGV4XTtp LnZlcnRleEF0dHJpYlBvaW50ZXIoYSx0aGlzLl9kaW1lbnNpb24sdHx8aS5GTE9BVCwhIWUs cnx8MCxufHwwKSxpLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGEpfSxhLnNldD1mdW5jdGlv bih0LGUscixuKXtyZXR1cm4gdGhpcy5fY29uc3RGdW5jKHRoaXMuX2xvY2F0aW9uc1t0aGlz Ll9pbmRleF0sdCxlLHIsbil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCJsb2NhdGlvbiIs e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sb2NhdGlvbnNbdGhpcy5faW5kZXhdfSxz ZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQhPT10aGlzLl9sb2NhdGlvbnNbdGhpcy5faW5kZXhd JiYodGhpcy5fbG9jYXRpb25zW3RoaXMuX2luZGV4XT0wfHQsdGhpcy5fd3JhcHBlci5wcm9n cmFtPW51bGwpLDB8dH19KTt2YXIgbz1bZnVuY3Rpb24odCxlLHIpe3JldHVybiB2b2lkIDA9 PT1yLmxlbmd0aD90LnZlcnRleEF0dHJpYjFmKGUscik6dC52ZXJ0ZXhBdHRyaWIxZnYoZSxy KX0sZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIHZvaWQgMD09PXIubGVuZ3RoP3QudmVydGV4 QXR0cmliMmYoZSxyLG4pOnQudmVydGV4QXR0cmliMmZ2KGUscil9LGZ1bmN0aW9uKHQsZSxy LG4saSl7cmV0dXJuIHZvaWQgMD09PXIubGVuZ3RoP3QudmVydGV4QXR0cmliM2YoZSxyLG4s aSk6dC52ZXJ0ZXhBdHRyaWIzZnYoZSxyKX0sZnVuY3Rpb24odCxlLHIsbixpLGEpe3JldHVy biB2b2lkIDA9PT1yLmxlbmd0aD90LnZlcnRleEF0dHJpYjRmKGUscixuLGksYSk6dC52ZXJ0 ZXhBdHRyaWI0ZnYoZSxyKX1dO2Z1bmN0aW9uIHModCxlLHIsbixhLHMsbCl7dmFyIGM9b1th XSx1PW5ldyBpKHQsZSxyLG4sYSxjKTtPYmplY3QuZGVmaW5lUHJvcGVydHkocyxsLHtzZXQ6 ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KG5bcl0pLGMo dCxuW3JdLGUpLGV9LGdldDpmdW5jdGlvbigpe3JldHVybiB1fSxlbnVtZXJhYmxlOiEwfSl9 ZnVuY3Rpb24gbCh0LGUscixuLGksYSxvKXtmb3IodmFyIGw9bmV3IEFycmF5KGkpLGM9bmV3 IEFycmF5KGkpLHU9MDt1PGk7Kyt1KXModCxlLHJbdV0sbixpLGwsdSksY1t1XT1sW3VdO09i amVjdC5kZWZpbmVQcm9wZXJ0eShsLCJsb2NhdGlvbiIse3NldDpmdW5jdGlvbih0KXtpZihB cnJheS5pc0FycmF5KHQpKWZvcih2YXIgZT0wO2U8aTsrK2UpY1tlXS5sb2NhdGlvbj10W2Vd O2Vsc2UgZm9yKGU9MDtlPGk7KytlKWNbZV0ubG9jYXRpb249dCtlO3JldHVybiB0fSxnZXQ6 ZnVuY3Rpb24oKXtmb3IodmFyIHQ9bmV3IEFycmF5KGkpLGU9MDtlPGk7KytlKXRbZV09blty W2VdXTtyZXR1cm4gdH0sZW51bWVyYWJsZTohMH0pLGwucG9pbnRlcj1mdW5jdGlvbihlLGEs byxzKXtlPWV8fHQuRkxPQVQsYT0hIWEsbz1vfHxpKmkscz1zfHwwO2Zvcih2YXIgbD0wO2w8 aTsrK2wpe3ZhciBjPW5bcltsXV07dC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGMsaSxlLGEsbyxz K2wqaSksdC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShjKX19O3ZhciBmPW5ldyBBcnJheShp KSxoPXRbInZlcnRleEF0dHJpYiIraSsiZnYiXTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxv LHtzZXQ6ZnVuY3Rpb24oZSl7Zm9yKHZhciBhPTA7YTxpOysrYSl7dmFyIG89bltyW2FdXTtp Zih0LmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShvKSxBcnJheS5pc0FycmF5KGVbMF0pKWgu Y2FsbCh0LG8sZVthXSk7ZWxzZXtmb3IodmFyIHM9MDtzPGk7KytzKWZbc109ZVtpKmErc107 aC5jYWxsKHQsbyxmKX19cmV0dXJuIGV9LGdldDpmdW5jdGlvbigpe3JldHVybiBsfSxlbnVt ZXJhYmxlOiEwfSl9fSx7Ii4vR0xFcnJvciI6MTMzfV0sMTM1OltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vcmVmbGVjdCIpLGk9dCgiLi9HTEVycm9yIik7ZnVu Y3Rpb24gYSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gbyh0LGUp e2Zvcih2YXIgcj1uZXcgQXJyYXkodCksbj0wO248dDsrK24pcltuXT1lO3JldHVybiByfWUu ZXhwb3J0cz1mdW5jdGlvbih0LGUscixzKXtmdW5jdGlvbiBsKGUpe3JldHVybiBmdW5jdGlv bihuKXtmb3IodmFyIGE9ZnVuY3Rpb24gdChlLHIpe2lmKCJvYmplY3QiIT10eXBlb2Ygcily ZXR1cm5bW2Uscl1dO3ZhciBuPVtdO2Zvcih2YXIgaSBpbiByKXt2YXIgYT1yW2ldLG89ZTtw YXJzZUludChpKSsiIj09PWk/bys9IlsiK2krIl0iOm8rPSIuIitpLCJvYmplY3QiPT10eXBl b2YgYT9uLnB1c2guYXBwbHkobix0KG8sYSkpOm4ucHVzaChbbyxhXSl9cmV0dXJuIG59KCIi LGUpLG89MDtvPGEubGVuZ3RoOysrbyl7dmFyIGw9YVtvXSxjPWxbMF0sdT1sWzFdO2lmKHNb dV0pe3ZhciBmPW47aWYoInN0cmluZyI9PXR5cGVvZiBjJiYoMD09PWMuaW5kZXhPZigiLiIp fHwwPT09Yy5pbmRleE9mKCJbIikpKXt2YXIgaD1jO2lmKDA9PT1jLmluZGV4T2YoIi4iKSYm KGg9Yy5zbGljZSgxKSksaC5pbmRleE9mKCJdIik9PT1oLmxlbmd0aC0xKXt2YXIgcD1oLmlu ZGV4T2YoIlsiKSxkPWguc2xpY2UoMCxwKSxtPWguc2xpY2UocCsxLGgubGVuZ3RoLTEpO2Y9 ZD9uW2RdW21dOm5bbV19ZWxzZSBmPW5baF19dmFyIGcsdj1yW3VdLnR5cGU7c3dpdGNoKHYp e2Nhc2UiYm9vbCI6Y2FzZSJpbnQiOmNhc2Uic2FtcGxlcjJEIjpjYXNlInNhbXBsZXJDdWJl Ijp0LnVuaWZvcm0xaShzW3VdLGYpO2JyZWFrO2Nhc2UiZmxvYXQiOnQudW5pZm9ybTFmKHNb dV0sZik7YnJlYWs7ZGVmYXVsdDp2YXIgeT12LmluZGV4T2YoInZlYyIpO2lmKCEoMDw9eSYm eTw9MSYmdi5sZW5ndGg9PT00K3kpKXtpZigwPT09di5pbmRleE9mKCJtYXQiKSYmND09PXYu bGVuZ3RoKXtpZigoZz12LmNoYXJDb2RlQXQodi5sZW5ndGgtMSktNDgpPDJ8fGc+NCl0aHJv dyBuZXcgaSgiIiwiSW52YWxpZCB1bmlmb3JtIGRpbWVuc2lvbiB0eXBlIGZvciBtYXRyaXgg IituYW1lKyI6ICIrdik7dFsidW5pZm9ybU1hdHJpeCIrZysiZnYiXShzW3VdLCExLGYpO2Jy ZWFrfXRocm93IG5ldyBpKCIiLCJVbmtub3duIHVuaWZvcm0gZGF0YSB0eXBlIGZvciAiK25h bWUrIjogIit2KX1pZigoZz12LmNoYXJDb2RlQXQodi5sZW5ndGgtMSktNDgpPDJ8fGc+NCl0 aHJvdyBuZXcgaSgiIiwiSW52YWxpZCBkYXRhIHR5cGUiKTtzd2l0Y2godi5jaGFyQXQoMCkp e2Nhc2UiYiI6Y2FzZSJpIjp0WyJ1bmlmb3JtIitnKyJpdiJdKHNbdV0sZik7YnJlYWs7Y2Fz ZSJ2Ijp0WyJ1bmlmb3JtIitnKyJmdiJdKHNbdV0sZik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBu ZXcgaSgiIiwiVW5yZWNvZ25pemVkIGRhdGEgdHlwZSBmb3IgdmVjdG9yICIrbmFtZSsiOiAi K3YpfX19fX19ZnVuY3Rpb24gYyh0LGUsbil7aWYoIm9iamVjdCI9PXR5cGVvZiBuKXt2YXIg Yz11KG4pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse2dldDphKGMpLHNldDpsKG4pLGVu dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiExfSl9ZWxzZSBzW25dP09iamVjdC5kZWZpbmVQ cm9wZXJ0eSh0LGUse2dldDooZj1uLGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdC5nZXRVbmlm b3JtKGUucHJvZ3JhbSxyW2ZdKX0pLHNldDpsKG4pLGVudW1lcmFibGU6ITAsY29uZmlndXJh YmxlOiExfSk6dFtlXT1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSJib29sIjpyZXR1cm4h MTtjYXNlImludCI6Y2FzZSJzYW1wbGVyMkQiOmNhc2Uic2FtcGxlckN1YmUiOmNhc2UiZmxv YXQiOnJldHVybiAwO2RlZmF1bHQ6dmFyIGU9dC5pbmRleE9mKCJ2ZWMiKTtpZigwPD1lJiZl PD0xJiZ0Lmxlbmd0aD09PTQrZSl7aWYoKHI9dC5jaGFyQ29kZUF0KHQubGVuZ3RoLTEpLTQ4 KTwyfHxyPjQpdGhyb3cgbmV3IGkoIiIsIkludmFsaWQgZGF0YSB0eXBlIik7cmV0dXJuImIi PT09dC5jaGFyQXQoMCk/byhyLCExKTpvKHIsMCl9aWYoMD09PXQuaW5kZXhPZigibWF0Iikm JjQ9PT10Lmxlbmd0aCl7dmFyIHI7aWYoKHI9dC5jaGFyQ29kZUF0KHQubGVuZ3RoLTEpLTQ4 KTwyfHxyPjQpdGhyb3cgbmV3IGkoIiIsIkludmFsaWQgdW5pZm9ybSBkaW1lbnNpb24gdHlw ZSBmb3IgbWF0cml4ICIrbmFtZSsiOiAiK3QpO3JldHVybiBvKHIqciwwKX10aHJvdyBuZXcg aSgiIiwiVW5rbm93biB1bmlmb3JtIGRhdGEgdHlwZSBmb3IgIituYW1lKyI6ICIrdCl9fShy W25dLnR5cGUpO3ZhciBmfWZ1bmN0aW9uIHUodCl7dmFyIGU7aWYoQXJyYXkuaXNBcnJheSh0 KSl7ZT1uZXcgQXJyYXkodC5sZW5ndGgpO2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7KytyKWMo ZSxyLHRbcl0pfWVsc2UgZm9yKHZhciBuIGluIGU9e30sdCljKGUsbix0W25dKTtyZXR1cm4g ZX12YXIgZj1uKHIsITApO3JldHVybntnZXQ6YSh1KGYpKSxzZXQ6bChmKSxlbnVtZXJhYmxl OiEwLGNvbmZpZ3VyYWJsZTohMH19fSx7Ii4vR0xFcnJvciI6MTMzLCIuL3JlZmxlY3QiOjEz Nn1dLDEzNjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rp b24odCxlKXtmb3IodmFyIHI9e30sbj0wO248dC5sZW5ndGg7KytuKWZvcih2YXIgaT10W25d Lm5hbWUuc3BsaXQoIi4iKSxhPXIsbz0wO288aS5sZW5ndGg7KytvKXt2YXIgcz1pW29dLnNw bGl0KCJbIik7aWYocy5sZW5ndGg+MSl7c1swXWluIGF8fChhW3NbMF1dPVtdKSxhPWFbc1sw XV07Zm9yKHZhciBsPTE7bDxzLmxlbmd0aDsrK2wpe3ZhciBjPXBhcnNlSW50KHNbbF0pO2w8 cy5sZW5ndGgtMXx8bzxpLmxlbmd0aC0xPyhjIGluIGF8fChsPHMubGVuZ3RoLTE/YVtjXT1b XTphW2NdPXt9KSxhPWFbY10pOmFbY109ZT9uOnRbbl0udHlwZX19ZWxzZSBvPGkubGVuZ3Ro LTE/KHNbMF1pbiBhfHwoYVtzWzBdXT17fSksYT1hW3NbMF1dKTphW3NbMF1dPWU/bjp0W25d LnR5cGV9cmV0dXJuIHJ9fSx7fV0sMTM3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O3IudW5pZm9ybXM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5nZXRQcm9ncmFtUGFyYW1l dGVyKGUsdC5BQ1RJVkVfVU5JRk9STVMpLG49W10saT0wO2k8cjsrK2kpe3ZhciBvPXQuZ2V0 QWN0aXZlVW5pZm9ybShlLGkpO2lmKG8pe3ZhciBzPWEodCxvLnR5cGUpO2lmKG8uc2l6ZT4x KWZvcih2YXIgbD0wO2w8by5zaXplOysrbCluLnB1c2goe25hbWU6by5uYW1lLnJlcGxhY2Uo IlswXSIsIlsiK2wrIl0iKSx0eXBlOnN9KTtlbHNlIG4ucHVzaCh7bmFtZTpvLm5hbWUsdHlw ZTpzfSl9fXJldHVybiBufSxyLmF0dHJpYnV0ZXM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9 dC5nZXRQcm9ncmFtUGFyYW1ldGVyKGUsdC5BQ1RJVkVfQVRUUklCVVRFUyksbj1bXSxpPTA7 aTxyOysraSl7dmFyIG89dC5nZXRBY3RpdmVBdHRyaWIoZSxpKTtvJiZuLnB1c2goe25hbWU6 by5uYW1lLHR5cGU6YSh0LG8udHlwZSl9KX1yZXR1cm4gbn07dmFyIG49e0ZMT0FUOiJmbG9h dCIsRkxPQVRfVkVDMjoidmVjMiIsRkxPQVRfVkVDMzoidmVjMyIsRkxPQVRfVkVDNDoidmVj NCIsSU5UOiJpbnQiLElOVF9WRUMyOiJpdmVjMiIsSU5UX1ZFQzM6Iml2ZWMzIixJTlRfVkVD NDoiaXZlYzQiLEJPT0w6ImJvb2wiLEJPT0xfVkVDMjoiYnZlYzIiLEJPT0xfVkVDMzoiYnZl YzMiLEJPT0xfVkVDNDoiYnZlYzQiLEZMT0FUX01BVDI6Im1hdDIiLEZMT0FUX01BVDM6Im1h dDMiLEZMT0FUX01BVDQ6Im1hdDQiLFNBTVBMRVJfMkQ6InNhbXBsZXIyRCIsU0FNUExFUl9D VUJFOiJzYW1wbGVyQ3ViZSJ9LGk9bnVsbDtmdW5jdGlvbiBhKHQsZSl7aWYoIWkpe3ZhciBy PU9iamVjdC5rZXlzKG4pO2k9e307Zm9yKHZhciBhPTA7YTxyLmxlbmd0aDsrK2Epe3ZhciBv PXJbYV07aVt0W29dXT1uW29dfX1yZXR1cm4gaVtlXX19LHt9XSwxMzg6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7ci5zaGFkZXI9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB1KHQp LmdldFNoYWRlclJlZmVyZW5jZShlLHIpfSxyLnByb2dyYW09ZnVuY3Rpb24odCxlLHIsbixp KXtyZXR1cm4gdSh0KS5nZXRQcm9ncmFtKGUscixuLGkpfTt2YXIgbj10KCIuL0dMRXJyb3Ii KSxpPXQoImdsLWZvcm1hdC1jb21waWxlci1lcnJvciIpLGE9bmV3KCJ1bmRlZmluZWQiPT10 eXBlb2YgV2Vha01hcD90KCJ3ZWFrbWFwLXNoaW0iKTpXZWFrTWFwKSxvPTA7ZnVuY3Rpb24g cyh0LGUscixuLGksYSxvKXt0aGlzLmlkPXQsdGhpcy5zcmM9ZSx0aGlzLnR5cGU9cix0aGlz LnNoYWRlcj1uLHRoaXMuY291bnQ9YSx0aGlzLnByb2dyYW1zPVtdLHRoaXMuY2FjaGU9b31m dW5jdGlvbiBsKHQpe3RoaXMuZ2w9dCx0aGlzLnNoYWRlcnM9W3t9LHt9XSx0aGlzLnByb2dy YW1zPXt9fXMucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXtpZigwPT0tLXRoaXMuY291 bnQpe2Zvcih2YXIgdD10aGlzLmNhY2hlLGU9dC5nbCxyPXRoaXMucHJvZ3JhbXMsbj0wLGk9 ci5sZW5ndGg7bjxpOysrbil7dmFyIGE9dC5wcm9ncmFtc1tyW25dXTthJiYoZGVsZXRlIHQu cHJvZ3JhbXNbbl0sZS5kZWxldGVQcm9ncmFtKGEpKX1lLmRlbGV0ZVNoYWRlcih0aGlzLnNo YWRlciksZGVsZXRlIHQuc2hhZGVyc1t0aGlzLnR5cGU9PT1lLkZSQUdNRU5UX1NIQURFUnww XVt0aGlzLnNyY119fTt2YXIgYz1sLnByb3RvdHlwZTtmdW5jdGlvbiB1KHQpe3ZhciBlPWEu Z2V0KHQpO3JldHVybiBlfHwoZT1uZXcgbCh0KSxhLnNldCh0LGUpKSxlfWMuZ2V0U2hhZGVy UmVmZXJlbmNlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5nbCxhPXRoaXMuc2hhZGVyc1t0 PT09ci5GUkFHTUVOVF9TSEFERVJ8MF0sbD1hW2VdO2lmKGwmJnIuaXNTaGFkZXIobC5zaGFk ZXIpKWwuY291bnQrPTE7ZWxzZXt2YXIgYz1mdW5jdGlvbih0LGUscil7dmFyIGE9dC5jcmVh dGVTaGFkZXIoZSk7aWYodC5zaGFkZXJTb3VyY2UoYSxyKSx0LmNvbXBpbGVTaGFkZXIoYSks IXQuZ2V0U2hhZGVyUGFyYW1ldGVyKGEsdC5DT01QSUxFX1NUQVRVUykpe3ZhciBvPXQuZ2V0 U2hhZGVySW5mb0xvZyhhKTt0cnl7dmFyIHM9aShvLHIsZSl9Y2F0Y2godCl7dGhyb3cgY29u c29sZS53YXJuKCJGYWlsZWQgdG8gZm9ybWF0IGNvbXBpbGVyIGVycm9yOiAiK3QpLG5ldyBu KG8sIkVycm9yIGNvbXBpbGluZyBzaGFkZXI6XG4iK28pfXRocm93IG5ldyBuKG8scy5zaG9y dCxzLmxvbmcpfXJldHVybiBhfShyLHQsZSk7bD1hW2VdPW5ldyBzKG8rKyxlLHQsYyxbXSwx LHRoaXMpfXJldHVybiBsfSxjLmdldFByb2dyYW09ZnVuY3Rpb24odCxlLHIsaSl7dmFyIGE9 W3QuaWQsZS5pZCxyLmpvaW4oIjoiKSxpLmpvaW4oIjoiKV0uam9pbigiQCIpLG89dGhpcy5w cm9ncmFtc1thXTtyZXR1cm4gbyYmdGhpcy5nbC5pc1Byb2dyYW0obyl8fCh0aGlzLnByb2dy YW1zW2FdPW89ZnVuY3Rpb24odCxlLHIsaSxhKXt2YXIgbz10LmNyZWF0ZVByb2dyYW0oKTt0 LmF0dGFjaFNoYWRlcihvLGUpLHQuYXR0YWNoU2hhZGVyKG8scik7Zm9yKHZhciBzPTA7czxp Lmxlbmd0aDsrK3MpdC5iaW5kQXR0cmliTG9jYXRpb24obyxhW3NdLGlbc10pO2lmKHQubGlu a1Byb2dyYW0obyksIXQuZ2V0UHJvZ3JhbVBhcmFtZXRlcihvLHQuTElOS19TVEFUVVMpKXt2 YXIgbD10LmdldFByb2dyYW1JbmZvTG9nKG8pO3Rocm93IG5ldyBuKGwsIkVycm9yIGxpbmtp bmcgcHJvZ3JhbTogIitsKX1yZXR1cm4gb30odGhpcy5nbCx0LnNoYWRlcixlLnNoYWRlcixy LGkpLHQucHJvZ3JhbXMucHVzaChhKSxlLnByb2dyYW1zLnB1c2goYSkpLG99fSx7Ii4vR0xF cnJvciI6MTMzLCJnbC1mb3JtYXQtY29tcGlsZXItZXJyb3IiOjg3LCJ3ZWFrbWFwLXNoaW0i OjMxNn1dLDEzOTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQp e3RoaXMucGxvdD10LHRoaXMuZW5hYmxlPVshMCwhMCwhMSwhMV0sdGhpcy53aWR0aD1bMSwx LDEsMV0sdGhpcy5jb2xvcj1bWzAsMCwwLDFdLFswLDAsMCwxXSxbMCwwLDAsMV0sWzAsMCww LDFdXSx0aGlzLmNlbnRlcj1bMS8wLDEvMF19ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFy IHI9bmV3IG4odCk7cmV0dXJuIHIudXBkYXRlKGUpLHQuYWRkT3ZlcmxheShyKSxyfTt2YXIg aT1uLnByb3RvdHlwZTtpLnVwZGF0ZT1mdW5jdGlvbih0KXt0PXR8fHt9LHRoaXMuZW5hYmxl PSh0LmVuYWJsZXx8WyEwLCEwLCExLCExXSkuc2xpY2UoKSx0aGlzLndpZHRoPSh0LndpZHRo fHxbMSwxLDEsMV0pLnNsaWNlKCksdGhpcy5jb2xvcj0odC5jb2xvcnx8W1swLDAsMCwxXSxb MCwwLDAsMV0sWzAsMCwwLDFdLFswLDAsMCwxXV0pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJu IHQuc2xpY2UoKX0pKSx0aGlzLmNlbnRlcj0odC5jZW50ZXJ8fFsxLzAsMS8wXSkuc2xpY2Uo KSx0aGlzLnBsb3Quc2V0T3ZlcmxheURpcnR5KCl9LGkuZHJhdz1mdW5jdGlvbigpe3ZhciB0 PXRoaXMuZW5hYmxlLGU9dGhpcy53aWR0aCxyPXRoaXMuY29sb3Isbj10aGlzLmNlbnRlcixp PXRoaXMucGxvdCxhPWkubGluZSxvPWkuZGF0YUJveCxzPWkudmlld0JveDtpZihhLmJpbmQo KSxvWzBdPD1uWzBdJiZuWzBdPD1vWzJdJiZvWzFdPD1uWzFdJiZuWzFdPD1vWzNdKXt2YXIg bD1zWzBdKyhuWzBdLW9bMF0pLyhvWzJdLW9bMF0pKihzWzJdLXNbMF0pLGM9c1sxXSsoblsx XS1vWzFdKS8ob1szXS1vWzFdKSooc1szXS1zWzFdKTt0WzBdJiZhLmRyYXdMaW5lKGwsYyxz WzBdLGMsZVswXSxyWzBdKSx0WzFdJiZhLmRyYXdMaW5lKGwsYyxsLHNbMV0sZVsxXSxyWzFd KSx0WzJdJiZhLmRyYXdMaW5lKGwsYyxzWzJdLGMsZVsyXSxyWzJdKSx0WzNdJiZhLmRyYXdM aW5lKGwsYyxsLHNbM10sZVszXSxyWzNdKX19LGkuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMu cGxvdC5yZW1vdmVPdmVybGF5KHRoaXMpfX0se31dLDE0MDpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCJnbHNsaWZ5IiksaT10KCJnbC1zaGFkZXIiKSxhPW4oWyJw cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0 ZSB2ZWMzIHBvc2l0aW9uLCBjb2xvcjtcbmF0dHJpYnV0ZSBmbG9hdCB3ZWlnaHQ7XG5cbnVu aWZvcm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlvbjtcbnVuaWZvcm0gdmVjMyBjb29y ZGluYXRlc1szXTtcbnVuaWZvcm0gdmVjNCBjb2xvcnNbM107XG51bmlmb3JtIHZlYzIgc2Ny ZWVuU2hhcGU7XG51bmlmb3JtIGZsb2F0IGxpbmVXaWR0aDtcblxudmFyeWluZyB2ZWM0IGZy YWdDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICB2ZWMzIHZlcnRleFBvc2l0aW9uID0gbWl4 KGNvb3JkaW5hdGVzWzBdLFxuICAgIG1peChjb29yZGluYXRlc1syXSwgY29vcmRpbmF0ZXNb MV0sIDAuNSAqIChwb3NpdGlvbiArIDEuMCkpLCBhYnMocG9zaXRpb24pKTtcblxuICB2ZWM0 IGNsaXBQb3MgPSBwcm9qZWN0aW9uICogdmlldyAqIG1vZGVsICogdmVjNCh2ZXJ0ZXhQb3Np dGlvbiwgMS4wKTtcbiAgdmVjMiBjbGlwT2Zmc2V0ID0gKHByb2plY3Rpb24gKiB2aWV3ICog bW9kZWwgKiB2ZWM0KGNvbG9yLCAwLjApKS54eTtcbiAgdmVjMiBkZWx0YSA9IHdlaWdodCAq IGNsaXBPZmZzZXQgKiBzY3JlZW5TaGFwZTtcbiAgdmVjMiBsaW5lT2Zmc2V0ID0gbm9ybWFs aXplKHZlYzIoZGVsdGEueSwgLWRlbHRhLngpKSAvIHNjcmVlblNoYXBlO1xuXG4gIGdsX1Bv c2l0aW9uICAgPSB2ZWM0KGNsaXBQb3MueHkgKyBjbGlwUG9zLncgKiAwLjUgKiBsaW5lV2lk dGggKiBsaW5lT2Zmc2V0LCBjbGlwUG9zLnosIGNsaXBQb3Mudyk7XG4gIGZyYWdDb2xvciAg ICAgPSBjb2xvci54ICogY29sb3JzWzBdICsgY29sb3IueSAqIGNvbG9yc1sxXSArIGNvbG9y LnogKiBjb2xvcnNbMl07XG59XG4iXSksbz1uKFsicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7 XG4jZGVmaW5lIEdMU0xJRlkgMVxuXG52YXJ5aW5nIHZlYzQgZnJhZ0NvbG9yO1xuXG52b2lk IG1haW4oKSB7XG4gIGdsX0ZyYWdDb2xvciA9IGZyYWdDb2xvcjtcbn0iXSk7ZS5leHBvcnRz PWZ1bmN0aW9uKHQpe3JldHVybiBpKHQsYSxvLG51bGwsW3tuYW1lOiJwb3NpdGlvbiIsdHlw ZToidmVjMyJ9LHtuYW1lOiJjb2xvciIsdHlwZToidmVjMyJ9LHtuYW1lOiJ3ZWlnaHQiLHR5 cGU6ImZsb2F0In1dKX19LHsiZ2wtc2hhZGVyIjoxMzIsZ2xzbGlmeToyMzF9XSwxNDE6W2Z1 bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiZ2wtYnVmZmVyIiksaT10KCJn bC12YW8iKSxhPXQoIi4vc2hhZGVycy9pbmRleCIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUp e3ZhciByPVtdO2Z1bmN0aW9uIG8odCxlLG4saSxhLG8pe3ZhciBzPVt0LGUsbiwwLDAsMCwx XTtzW2krM109MSxzW2ldPWEsci5wdXNoLmFwcGx5KHIscyksc1s2XT0tMSxyLnB1c2guYXBw bHkocixzKSxzW2ldPW8sci5wdXNoLmFwcGx5KHIscyksci5wdXNoLmFwcGx5KHIscyksc1s2 XT0xLHIucHVzaC5hcHBseShyLHMpLHNbaV09YSxyLnB1c2guYXBwbHkocixzKX1vKDAsMCww LDAsMCwxKSxvKDAsMCwwLDEsMCwxKSxvKDAsMCwwLDIsMCwxKSxvKDEsMCwwLDEsLTEsMSks bygxLDAsMCwyLC0xLDEpLG8oMCwxLDAsMCwtMSwxKSxvKDAsMSwwLDIsLTEsMSksbygwLDAs MSwwLC0xLDEpLG8oMCwwLDEsMSwtMSwxKTt2YXIgbD1uKHQsciksYz1pKHQsW3t0eXBlOnQu RkxPQVQsYnVmZmVyOmwsc2l6ZTozLG9mZnNldDowLHN0cmlkZToyOH0se3R5cGU6dC5GTE9B VCxidWZmZXI6bCxzaXplOjMsb2Zmc2V0OjEyLHN0cmlkZToyOH0se3R5cGU6dC5GTE9BVCxi dWZmZXI6bCxzaXplOjEsb2Zmc2V0OjI0LHN0cmlkZToyOH1dKSx1PWEodCk7dS5hdHRyaWJ1 dGVzLnBvc2l0aW9uLmxvY2F0aW9uPTAsdS5hdHRyaWJ1dGVzLmNvbG9yLmxvY2F0aW9uPTEs dS5hdHRyaWJ1dGVzLndlaWdodC5sb2NhdGlvbj0yO3ZhciBmPW5ldyBzKHQsbCxjLHUpO3Jl dHVybiBmLnVwZGF0ZShlKSxmfTt2YXIgbz1bMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCww LDAsMV07ZnVuY3Rpb24gcyh0LGUscixuKXt0aGlzLmdsPXQsdGhpcy5idWZmZXI9ZSx0aGlz LnZhbz1yLHRoaXMuc2hhZGVyPW4sdGhpcy5waXhlbFJhdGlvPTEsdGhpcy5ib3VuZHM9W1st MWUzLC0xZTMsLTFlM10sWzFlMywxZTMsMWUzXV0sdGhpcy5wb3NpdGlvbj1bMCwwLDBdLHRo aXMubGluZVdpZHRoPVsyLDIsMl0sdGhpcy5jb2xvcnM9W1swLDAsMCwxXSxbMCwwLDAsMV0s WzAsMCwwLDFdXSx0aGlzLmVuYWJsZWQ9WyEwLCEwLCEwXSx0aGlzLmRyYXdTaWRlcz1bITAs ITAsITBdLHRoaXMuYXhlcz1udWxsfXZhciBsPXMucHJvdG90eXBlLGM9WzAsMCwwXSx1PVsw LDAsMF0sZj1bMCwwXTtsLmlzVHJhbnNwYXJlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sbC5k cmF3VHJhbnNwYXJlbnQ9ZnVuY3Rpb24odCl7fSxsLmRyYXc9ZnVuY3Rpb24odCl7dmFyIGU9 dGhpcy5nbCxyPXRoaXMudmFvLG49dGhpcy5zaGFkZXI7ci5iaW5kKCksbi5iaW5kKCk7dmFy IGksYT10Lm1vZGVsfHxvLHM9dC52aWV3fHxvLGw9dC5wcm9qZWN0aW9ufHxvO3RoaXMuYXhl cyYmKGk9dGhpcy5heGVzLmxhc3RDdWJlUHJvcHMuYXhpcyk7Zm9yKHZhciBoPWMscD11LGQ9 MDtkPDM7KytkKWkmJmlbZF08MD8oaFtkXT10aGlzLmJvdW5kc1swXVtkXSxwW2RdPXRoaXMu Ym91bmRzWzFdW2RdKTooaFtkXT10aGlzLmJvdW5kc1sxXVtkXSxwW2RdPXRoaXMuYm91bmRz WzBdW2RdKTtmWzBdPWUuZHJhd2luZ0J1ZmZlcldpZHRoLGZbMV09ZS5kcmF3aW5nQnVmZmVy SGVpZ2h0LG4udW5pZm9ybXMubW9kZWw9YSxuLnVuaWZvcm1zLnZpZXc9cyxuLnVuaWZvcm1z LnByb2plY3Rpb249bCxuLnVuaWZvcm1zLmNvb3JkaW5hdGVzPVt0aGlzLnBvc2l0aW9uLGgs cF0sbi51bmlmb3Jtcy5jb2xvcnM9dGhpcy5jb2xvcnMsbi51bmlmb3Jtcy5zY3JlZW5TaGFw ZT1mO2ZvcihkPTA7ZDwzOysrZCluLnVuaWZvcm1zLmxpbmVXaWR0aD10aGlzLmxpbmVXaWR0 aFtkXSp0aGlzLnBpeGVsUmF0aW8sdGhpcy5lbmFibGVkW2RdJiYoci5kcmF3KGUuVFJJQU5H TEVTLDYsNipkKSx0aGlzLmRyYXdTaWRlc1tkXSYmci5kcmF3KGUuVFJJQU5HTEVTLDEyLDE4 KzEyKmQpKTtyLnVuYmluZCgpfSxsLnVwZGF0ZT1mdW5jdGlvbih0KXt0JiYoImJvdW5kcyJp biB0JiYodGhpcy5ib3VuZHM9dC5ib3VuZHMpLCJwb3NpdGlvbiJpbiB0JiYodGhpcy5wb3Np dGlvbj10LnBvc2l0aW9uKSwibGluZVdpZHRoImluIHQmJih0aGlzLmxpbmVXaWR0aD10Lmxp bmVXaWR0aCksImNvbG9ycyJpbiB0JiYodGhpcy5jb2xvcnM9dC5jb2xvcnMpLCJlbmFibGVk ImluIHQmJih0aGlzLmVuYWJsZWQ9dC5lbmFibGVkKSwiZHJhd1NpZGVzImluIHQmJih0aGlz LmRyYXdTaWRlcz10LmRyYXdTaWRlcykpfSxsLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLnZh by5kaXNwb3NlKCksdGhpcy5idWZmZXIuZGlzcG9zZSgpLHRoaXMuc2hhZGVyLmRpc3Bvc2Uo KX19LHsiLi9zaGFkZXJzL2luZGV4IjoxNDAsImdsLWJ1ZmZlciI6NzgsImdsLXZhbyI6MTUw fV0sMTQyOltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiZ2xzbGlmeSIpLGk9bihbInByZWNp c2lvbiBoaWdocCBmbG9hdDtcblxucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBH TFNMSUZZIDFcblxudmVjMyBnZXRPcnRob2dvbmFsVmVjdG9yKHZlYzMgdikge1xuICAvLyBS ZXR1cm4gdXAtdmVjdG9yIGZvciBvbmx5LXogdmVjdG9yLlxuICAvLyBSZXR1cm4gYXggKyBi eSArIGN6ID0gMCwgYSBwb2ludCB0aGF0IGxpZXMgb24gdGhlIHBsYW5lIHRoYXQgaGFzIHYg YXMgYSBub3JtYWwgYW5kIHRoYXQgaXNuJ3QgKDAsMCwwKS5cbiAgLy8gRnJvbSB0aGUgYWJv dmUgaWYtc3RhdGVtZW50IHdlIGhhdmUgfHxhfHwgPiAwICBVICB8fGJ8fCA+IDAuXG4gIC8v IEFzc2lnbiB6ID0gMCwgeCA9IC1iLCB5ID0gYTpcbiAgLy8gYSotYiArIGIqYSArIGMqMCA9 IC1iYSArIGJhICsgMCA9IDBcbiAgaWYgKHYueCp2LnggPiB2Lnoqdi56IHx8IHYueSp2Lnkg PiB2Lnoqdi56KSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZSh2ZWMzKC12LnksIHYueCwgMC4w KSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZSh2ZWMzKDAuMCwgdi56LCAt di55KSk7XG4gIH1cbn1cblxuLy8gQ2FsY3VsYXRlIHRoZSB0dWJlIHZlcnRleCBhbmQgbm9y bWFsIGF0IHRoZSBnaXZlbiBpbmRleC5cbi8vXG4vLyBUaGUgcmV0dXJuZWQgdmVydGV4IGlz IGZvciBhIHR1YmUgcmluZyB3aXRoIGl0cyBjZW50ZXIgYXQgb3JpZ2luLCByYWRpdXMgb2Yg bGVuZ3RoKGQpLCBwb2ludGluZyBpbiB0aGUgZGlyZWN0aW9uIG9mIGQuXG4vL1xuLy8gRWFj aCB0dWJlIHNlZ21lbnQgaXMgbWFkZSB1cCBvZiBhIHJpbmcgb2YgdmVydGljZXMuXG4vLyBU aGVzZSB2ZXJ0aWNlcyBhcmUgdXNlZCB0byBtYWtlIHVwIHRoZSB0cmlhbmdsZXMgb2YgdGhl IHR1YmUgYnkgY29ubmVjdGluZyB0aGVtIHRvZ2V0aGVyIGluIHRoZSB2ZXJ0ZXggYXJyYXku XG4vLyBUaGUgaW5kZXhlcyBvZiB0dWJlIHNlZ21lbnRzIHJ1biBmcm9tIDAgdG8gOC5cbi8v XG52ZWMzIGdldFR1YmVQb3NpdGlvbih2ZWMzIGQsIGZsb2F0IGluZGV4LCBvdXQgdmVjMyBu b3JtYWwpIHtcbiAgZmxvYXQgc2VnbWVudENvdW50ID0gOC4wO1xuXG4gIGZsb2F0IGFuZ2xl ID0gMi4wICogMy4xNDE1OSAqIChpbmRleCAvIHNlZ21lbnRDb3VudCk7XG5cbiAgdmVjMyB1 ID0gZ2V0T3J0aG9nb25hbFZlY3RvcihkKTtcbiAgdmVjMyB2ID0gbm9ybWFsaXplKGNyb3Nz KHUsIGQpKTtcblxuICB2ZWMzIHggPSB1ICogY29zKGFuZ2xlKSAqIGxlbmd0aChkKTtcbiAg dmVjMyB5ID0gdiAqIHNpbihhbmdsZSkgKiBsZW5ndGgoZCk7XG4gIHZlYzMgdjMgPSB4ICsg eTtcblxuICBub3JtYWwgPSBub3JtYWxpemUodjMpO1xuXG4gIHJldHVybiB2Mztcbn1cblxu YXR0cmlidXRlIHZlYzQgdmVjdG9yO1xuYXR0cmlidXRlIHZlYzQgY29sb3IsIHBvc2l0aW9u O1xuYXR0cmlidXRlIHZlYzIgdXY7XG5cbnVuaWZvcm0gZmxvYXQgdmVjdG9yU2NhbGUsIHR1 YmVTY2FsZTtcbnVuaWZvcm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlvbiwgaW52ZXJz ZU1vZGVsO1xudW5pZm9ybSB2ZWMzIGV5ZVBvc2l0aW9uLCBsaWdodFBvc2l0aW9uO1xuXG52 YXJ5aW5nIHZlYzMgZl9ub3JtYWwsIGZfbGlnaHREaXJlY3Rpb24sIGZfZXllRGlyZWN0aW9u LCBmX2RhdGEsIGZfcG9zaXRpb247XG52YXJ5aW5nIHZlYzQgZl9jb2xvcjtcbnZhcnlpbmcg dmVjMiBmX3V2O1xuXG52b2lkIG1haW4oKSB7XG4gIC8vIFNjYWxlIHRoZSB2ZWN0b3IgbWFn bml0dWRlIHRvIHN0YXkgY29uc3RhbnQgd2l0aFxuICAvLyBtb2RlbCAmIHZpZXcgY2hhbmdl cy5cbiAgdmVjMyBub3JtYWw7XG4gIHZlYzMgWFlaID0gZ2V0VHViZVBvc2l0aW9uKG1hdDMo bW9kZWwpICogKHR1YmVTY2FsZSAqIHZlY3Rvci53ICogbm9ybWFsaXplKHZlY3Rvci54eXop KSwgcG9zaXRpb24udywgbm9ybWFsKTtcbiAgdmVjNCB0dWJlUG9zaXRpb24gPSBtb2RlbCAq IHZlYzQocG9zaXRpb24ueHl6LCAxLjApICsgdmVjNChYWVosIDAuMCk7XG5cbiAgLy9MaWdo dGluZyBnZW9tZXRyeSBwYXJhbWV0ZXJzXG4gIHZlYzQgY2FtZXJhQ29vcmRpbmF0ZSA9IHZp ZXcgKiB0dWJlUG9zaXRpb247XG4gIGNhbWVyYUNvb3JkaW5hdGUueHl6IC89IGNhbWVyYUNv b3JkaW5hdGUudztcbiAgZl9saWdodERpcmVjdGlvbiA9IGxpZ2h0UG9zaXRpb24gLSBjYW1l cmFDb29yZGluYXRlLnh5ejtcbiAgZl9leWVEaXJlY3Rpb24gICA9IGV5ZVBvc2l0aW9uIC0g Y2FtZXJhQ29vcmRpbmF0ZS54eXo7XG4gIGZfbm9ybWFsID0gbm9ybWFsaXplKCh2ZWM0KG5v cm1hbCwgMC4wKSAqIGludmVyc2VNb2RlbCkueHl6KTtcblxuICAvLyB2ZWM0IG1fcG9zaXRp b24gID0gbW9kZWwgKiB2ZWM0KHR1YmVQb3NpdGlvbiwgMS4wKTtcbiAgdmVjNCB0X3Bvc2l0 aW9uICA9IHZpZXcgKiB0dWJlUG9zaXRpb247XG4gIGdsX1Bvc2l0aW9uICAgICAgPSBwcm9q ZWN0aW9uICogdF9wb3NpdGlvbjtcblxuICBmX2NvbG9yICAgICAgICAgID0gY29sb3I7XG4g IGZfZGF0YSAgICAgICAgICAgPSB0dWJlUG9zaXRpb24ueHl6O1xuICBmX3Bvc2l0aW9uICAg ICAgID0gcG9zaXRpb24ueHl6O1xuICBmX3V2ICAgICAgICAgICAgID0gdXY7XG59XG4iXSks YT1uKFsiI2V4dGVuc2lvbiBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgOiBlbmFibGVc blxucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuZmxvYXQg YmVja21hbm5EaXN0cmlidXRpb24oZmxvYXQgeCwgZmxvYXQgcm91Z2huZXNzKSB7XG4gIGZs b2F0IE5kb3RIID0gbWF4KHgsIDAuMDAwMSk7XG4gIGZsb2F0IGNvczJBbHBoYSA9IE5kb3RI ICogTmRvdEg7XG4gIGZsb2F0IHRhbjJBbHBoYSA9IChjb3MyQWxwaGEgLSAxLjApIC8gY29z MkFscGhhO1xuICBmbG9hdCByb3VnaG5lc3MyID0gcm91Z2huZXNzICogcm91Z2huZXNzO1xu ICBmbG9hdCBkZW5vbSA9IDMuMTQxNTkyNjUzNTg5NzkzICogcm91Z2huZXNzMiAqIGNvczJB bHBoYSAqIGNvczJBbHBoYTtcbiAgcmV0dXJuIGV4cCh0YW4yQWxwaGEgLyByb3VnaG5lc3My KSAvIGRlbm9tO1xufVxuXG5mbG9hdCBjb29rVG9ycmFuY2VTcGVjdWxhcihcbiAgdmVjMyBs aWdodERpcmVjdGlvbixcbiAgdmVjMyB2aWV3RGlyZWN0aW9uLFxuICB2ZWMzIHN1cmZhY2VO b3JtYWwsXG4gIGZsb2F0IHJvdWdobmVzcyxcbiAgZmxvYXQgZnJlc25lbCkge1xuXG4gIGZs b2F0IFZkb3ROID0gbWF4KGRvdCh2aWV3RGlyZWN0aW9uLCBzdXJmYWNlTm9ybWFsKSwgMC4w KTtcbiAgZmxvYXQgTGRvdE4gPSBtYXgoZG90KGxpZ2h0RGlyZWN0aW9uLCBzdXJmYWNlTm9y bWFsKSwgMC4wKTtcblxuICAvL0hhbGYgYW5nbGUgdmVjdG9yXG4gIHZlYzMgSCA9IG5vcm1h bGl6ZShsaWdodERpcmVjdGlvbiArIHZpZXdEaXJlY3Rpb24pO1xuXG4gIC8vR2VvbWV0cmlj IHRlcm1cbiAgZmxvYXQgTmRvdEggPSBtYXgoZG90KHN1cmZhY2VOb3JtYWwsIEgpLCAwLjAp O1xuICBmbG9hdCBWZG90SCA9IG1heChkb3Qodmlld0RpcmVjdGlvbiwgSCksIDAuMDAwMDAx KTtcbiAgZmxvYXQgTGRvdEggPSBtYXgoZG90KGxpZ2h0RGlyZWN0aW9uLCBIKSwgMC4wMDAw MDEpO1xuICBmbG9hdCBHMSA9ICgyLjAgKiBOZG90SCAqIFZkb3ROKSAvIFZkb3RIO1xuICBm bG9hdCBHMiA9ICgyLjAgKiBOZG90SCAqIExkb3ROKSAvIExkb3RIO1xuICBmbG9hdCBHID0g bWluKDEuMCwgbWluKEcxLCBHMikpO1xuICBcbiAgLy9EaXN0cmlidXRpb24gdGVybVxuICBm bG9hdCBEID0gYmVja21hbm5EaXN0cmlidXRpb24oTmRvdEgsIHJvdWdobmVzcyk7XG5cbiAg Ly9GcmVzbmVsIHRlcm1cbiAgZmxvYXQgRiA9IHBvdygxLjAgLSBWZG90TiwgZnJlc25lbCk7 XG5cbiAgLy9NdWx0aXBseSB0ZXJtcyBhbmQgZG9uZVxuICByZXR1cm4gIEcgKiBGICogRCAv IG1heCgzLjE0MTU5MjY1ICogVmRvdE4sIDAuMDAwMDAxKTtcbn1cblxuYm9vbCBvdXRPZlJh bmdlKGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IHApIHtcbiAgcmV0dXJuICgocCA+IG1heChh LCBiKSkgfHwgXG4gICAgICAgICAgKHAgPCBtaW4oYSwgYikpKTtcbn1cblxuYm9vbCBvdXRP ZlJhbmdlKHZlYzIgYSwgdmVjMiBiLCB2ZWMyIHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdl KGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIueSwgcC55 KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMzIGEsIHZlYzMgYiwgdmVjMyBwKSB7XG4g IHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9m UmFuZ2UoYS55LCBiLnksIHAueSkgfHxcbiAgICAgICAgICBvdXRPZlJhbmdlKGEueiwgYi56 LCBwLnopKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzQgYSwgdmVjNCBiLCB2ZWM0IHAp IHtcbiAgcmV0dXJuIG91dE9mUmFuZ2UoYS54eXosIGIueHl6LCBwLnh5eik7XG59XG5cbnVu aWZvcm0gdmVjMyBjbGlwQm91bmRzWzJdO1xudW5pZm9ybSBmbG9hdCByb3VnaG5lc3MsIGZy ZXNuZWwsIGthbWJpZW50LCBrZGlmZnVzZSwga3NwZWN1bGFyLCBvcGFjaXR5O1xudW5pZm9y bSBzYW1wbGVyMkQgdGV4dHVyZTtcblxudmFyeWluZyB2ZWMzIGZfbm9ybWFsLCBmX2xpZ2h0 RGlyZWN0aW9uLCBmX2V5ZURpcmVjdGlvbiwgZl9kYXRhLCBmX3Bvc2l0aW9uO1xudmFyeWlu ZyB2ZWM0IGZfY29sb3I7XG52YXJ5aW5nIHZlYzIgZl91djtcblxudm9pZCBtYWluKCkge1xu ICBpZiAob3V0T2ZSYW5nZShjbGlwQm91bmRzWzBdLCBjbGlwQm91bmRzWzFdLCBmX3Bvc2l0 aW9uKSkgZGlzY2FyZDtcbiAgdmVjMyBOID0gbm9ybWFsaXplKGZfbm9ybWFsKTtcbiAgdmVj MyBMID0gbm9ybWFsaXplKGZfbGlnaHREaXJlY3Rpb24pO1xuICB2ZWMzIFYgPSBub3JtYWxp emUoZl9leWVEaXJlY3Rpb24pO1xuXG4gIGlmKGdsX0Zyb250RmFjaW5nKSB7XG4gICAgTiA9 IC1OO1xuICB9XG5cbiAgZmxvYXQgc3BlY3VsYXIgPSBtaW4oMS4wLCBtYXgoMC4wLCBjb29r VG9ycmFuY2VTcGVjdWxhcihMLCBWLCBOLCByb3VnaG5lc3MsIGZyZXNuZWwpKSk7XG4gIGZs b2F0IGRpZmZ1c2UgID0gbWluKGthbWJpZW50ICsga2RpZmZ1c2UgKiBtYXgoZG90KE4sIEwp LCAwLjApLCAxLjApO1xuXG4gIHZlYzQgc3VyZmFjZUNvbG9yID0gZl9jb2xvciAqIHRleHR1 cmUyRCh0ZXh0dXJlLCBmX3V2KTtcbiAgdmVjNCBsaXRDb2xvciA9IHN1cmZhY2VDb2xvci5h ICogdmVjNChkaWZmdXNlICogc3VyZmFjZUNvbG9yLnJnYiArIGtzcGVjdWxhciAqIHZlYzMo MSwxLDEpICogc3BlY3VsYXIsICAxLjApO1xuXG4gIGdsX0ZyYWdDb2xvciA9IGxpdENvbG9y ICogb3BhY2l0eTtcbn1cbiJdKSxvPW4oWyJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG5cbnBy ZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbnZlYzMgZ2V0T3J0 aG9nb25hbFZlY3Rvcih2ZWMzIHYpIHtcbiAgLy8gUmV0dXJuIHVwLXZlY3RvciBmb3Igb25s eS16IHZlY3Rvci5cbiAgLy8gUmV0dXJuIGF4ICsgYnkgKyBjeiA9IDAsIGEgcG9pbnQgdGhh dCBsaWVzIG9uIHRoZSBwbGFuZSB0aGF0IGhhcyB2IGFzIGEgbm9ybWFsIGFuZCB0aGF0IGlz bid0ICgwLDAsMCkuXG4gIC8vIEZyb20gdGhlIGFib3ZlIGlmLXN0YXRlbWVudCB3ZSBoYXZl IHx8YXx8ID4gMCAgVSAgfHxifHwgPiAwLlxuICAvLyBBc3NpZ24geiA9IDAsIHggPSAtYiwg eSA9IGE6XG4gIC8vIGEqLWIgKyBiKmEgKyBjKjAgPSAtYmEgKyBiYSArIDAgPSAwXG4gIGlm ICh2Lngqdi54ID4gdi56KnYueiB8fCB2Lnkqdi55ID4gdi56KnYueikge1xuICAgIHJldHVy biBub3JtYWxpemUodmVjMygtdi55LCB2LngsIDAuMCkpO1xuICB9IGVsc2Uge1xuICAgIHJl dHVybiBub3JtYWxpemUodmVjMygwLjAsIHYueiwgLXYueSkpO1xuICB9XG59XG5cbi8vIENh bGN1bGF0ZSB0aGUgdHViZSB2ZXJ0ZXggYW5kIG5vcm1hbCBhdCB0aGUgZ2l2ZW4gaW5kZXgu XG4vL1xuLy8gVGhlIHJldHVybmVkIHZlcnRleCBpcyBmb3IgYSB0dWJlIHJpbmcgd2l0aCBp dHMgY2VudGVyIGF0IG9yaWdpbiwgcmFkaXVzIG9mIGxlbmd0aChkKSwgcG9pbnRpbmcgaW4g dGhlIGRpcmVjdGlvbiBvZiBkLlxuLy9cbi8vIEVhY2ggdHViZSBzZWdtZW50IGlzIG1hZGUg dXAgb2YgYSByaW5nIG9mIHZlcnRpY2VzLlxuLy8gVGhlc2UgdmVydGljZXMgYXJlIHVzZWQg dG8gbWFrZSB1cCB0aGUgdHJpYW5nbGVzIG9mIHRoZSB0dWJlIGJ5IGNvbm5lY3RpbmcgdGhl bSB0b2dldGhlciBpbiB0aGUgdmVydGV4IGFycmF5LlxuLy8gVGhlIGluZGV4ZXMgb2YgdHVi ZSBzZWdtZW50cyBydW4gZnJvbSAwIHRvIDguXG4vL1xudmVjMyBnZXRUdWJlUG9zaXRpb24o dmVjMyBkLCBmbG9hdCBpbmRleCwgb3V0IHZlYzMgbm9ybWFsKSB7XG4gIGZsb2F0IHNlZ21l bnRDb3VudCA9IDguMDtcblxuICBmbG9hdCBhbmdsZSA9IDIuMCAqIDMuMTQxNTkgKiAoaW5k ZXggLyBzZWdtZW50Q291bnQpO1xuXG4gIHZlYzMgdSA9IGdldE9ydGhvZ29uYWxWZWN0b3Io ZCk7XG4gIHZlYzMgdiA9IG5vcm1hbGl6ZShjcm9zcyh1LCBkKSk7XG5cbiAgdmVjMyB4ID0g dSAqIGNvcyhhbmdsZSkgKiBsZW5ndGgoZCk7XG4gIHZlYzMgeSA9IHYgKiBzaW4oYW5nbGUp ICogbGVuZ3RoKGQpO1xuICB2ZWMzIHYzID0geCArIHk7XG5cbiAgbm9ybWFsID0gbm9ybWFs aXplKHYzKTtcblxuICByZXR1cm4gdjM7XG59XG5cbmF0dHJpYnV0ZSB2ZWM0IHZlY3Rvcjtc bmF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uO1xuYXR0cmlidXRlIHZlYzQgaWQ7XG5cbnVuaWZv cm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlvbjtcbnVuaWZvcm0gZmxvYXQgdHViZVNj YWxlO1xuXG52YXJ5aW5nIHZlYzMgZl9wb3NpdGlvbjtcbnZhcnlpbmcgdmVjNCBmX2lkO1xu XG52b2lkIG1haW4oKSB7XG4gIHZlYzMgbm9ybWFsO1xuICB2ZWMzIFhZWiA9IGdldFR1YmVQ b3NpdGlvbihtYXQzKG1vZGVsKSAqICh0dWJlU2NhbGUgKiB2ZWN0b3IudyAqIG5vcm1hbGl6 ZSh2ZWN0b3IueHl6KSksIHBvc2l0aW9uLncsIG5vcm1hbCk7XG4gIHZlYzQgdHViZVBvc2l0 aW9uID0gbW9kZWwgKiB2ZWM0KHBvc2l0aW9uLnh5eiwgMS4wKSArIHZlYzQoWFlaLCAwLjAp O1xuXG4gIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbiAqIHZpZXcgKiB0dWJlUG9zaXRpb247 XG4gIGZfaWQgICAgICAgID0gaWQ7XG4gIGZfcG9zaXRpb24gID0gcG9zaXRpb24ueHl6O1xu fVxuIl0pLHM9bihbInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAx XG5cbmJvb2wgb3V0T2ZSYW5nZShmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBwKSB7XG4gIHJl dHVybiAoKHAgPiBtYXgoYSwgYikpIHx8IFxuICAgICAgICAgIChwIDwgbWluKGEsIGIpKSk7 XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMyIGEsIHZlYzIgYiwgdmVjMiBwKSB7XG4gIHJl dHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54KSB8fFxuICAgICAgICAgIG91dE9mUmFu Z2UoYS55LCBiLnksIHAueSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMyBhLCB2ZWMz IGIsIHZlYzMgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxc biAgICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpIHx8XG4gICAgICAgICAgb3V0 T2ZSYW5nZShhLnosIGIueiwgcC56KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWM0IGEs IHZlYzQgYiwgdmVjNCBwKSB7XG4gIHJldHVybiBvdXRPZlJhbmdlKGEueHl6LCBiLnh5eiwg cC54eXopO1xufVxuXG51bmlmb3JtIHZlYzMgIGNsaXBCb3VuZHNbMl07XG51bmlmb3JtIGZs b2F0IHBpY2tJZDtcblxudmFyeWluZyB2ZWMzIGZfcG9zaXRpb247XG52YXJ5aW5nIHZlYzQg Zl9pZDtcblxudm9pZCBtYWluKCkge1xuICBpZiAob3V0T2ZSYW5nZShjbGlwQm91bmRzWzBd LCBjbGlwQm91bmRzWzFdLCBmX3Bvc2l0aW9uKSkgZGlzY2FyZDtcblxuICBnbF9GcmFnQ29s b3IgPSB2ZWM0KHBpY2tJZCwgZl9pZC54eXopO1xufSJdKTtyLm1lc2hTaGFkZXI9e3ZlcnRl eDppLGZyYWdtZW50OmEsYXR0cmlidXRlczpbe25hbWU6InBvc2l0aW9uIix0eXBlOiJ2ZWM0 In0se25hbWU6ImNvbG9yIix0eXBlOiJ2ZWM0In0se25hbWU6InV2Iix0eXBlOiJ2ZWMyIn0s e25hbWU6InZlY3RvciIsdHlwZToidmVjNCJ9XX0sci5waWNrU2hhZGVyPXt2ZXJ0ZXg6byxm cmFnbWVudDpzLGF0dHJpYnV0ZXM6W3tuYW1lOiJwb3NpdGlvbiIsdHlwZToidmVjNCJ9LHtu YW1lOiJpZCIsdHlwZToidmVjNCJ9LHtuYW1lOiJ2ZWN0b3IiLHR5cGU6InZlYzQifV19fSx7 Z2xzbGlmeToyMzF9XSwxNDM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49 dCgiZ2wtdmVjMyIpLGk9dCgiZ2wtdmVjNCIpLGE9WyJ4eXoiLCJ4enkiLCJ5eHoiLCJ5engi LCJ6eHkiLCJ6eXgiXSxvPWZ1bmN0aW9uKHQsZSxyLGEpe2Zvcih2YXIgbz0wLHM9MDtzPHQu bGVuZ3RoO3MrKylmb3IodmFyIGw9dFtzXS52ZWxvY2l0aWVzLGM9MDtjPGwubGVuZ3RoO2Mr KylvPU1hdGgubWF4KG8sbi5sZW5ndGgobFtjXSkpO3ZhciB1PXQubWFwKChmdW5jdGlvbih0 KXtyZXR1cm4gZnVuY3Rpb24odCxlLHIsYSl7Zm9yKHZhciBvPXQucG9pbnRzLHM9dC52ZWxv Y2l0aWVzLGw9dC5kaXZlcmdlbmNlcyxjPVtdLHU9W10sZj1bXSxoPVtdLHA9W10sZD1bXSxt PTAsZz0wLHY9aS5jcmVhdGUoKSx5PWkuY3JlYXRlKCkseD0wO3g8by5sZW5ndGg7eCsrKXt2 YXIgYj1vW3hdLF89c1t4XSx3PWxbeF07MD09PWUmJih3PS4wNSpyKSxnPW4ubGVuZ3RoKF8p L2Esdj1pLmNyZWF0ZSgpLG4uY29weSh2LF8pLHZbM109dztmb3IodmFyIFQ9MDtUPDg7VCsr KXBbVF09W2JbMF0sYlsxXSxiWzJdLFRdO2lmKGgubGVuZ3RoPjApZm9yKFQ9MDtUPDg7VCsr KXt2YXIgaz0oVCsxKSU4O2MucHVzaChoW1RdLHBbVF0scFtrXSxwW2tdLGhba10saFtUXSks Zi5wdXNoKHksdix2LHYseSx5KSxkLnB1c2gobSxnLGcsZyxtLG0pO3ZhciBBPWMubGVuZ3Ro O3UucHVzaChbQS02LEEtNSxBLTRdLFtBLTMsQS0yLEEtMV0pfXZhciBNPWg7aD1wLHA9TTt2 YXIgUz15O3k9dix2PVM7dmFyIEU9bTttPWcsZz1FfXJldHVybntwb3NpdGlvbnM6YyxjZWxs czp1LHZlY3RvcnM6Zix2ZXJ0ZXhJbnRlbnNpdHk6ZH19KHQscixhLG8pfSkpLGY9W10saD1b XSxwPVtdLGQ9W107Zm9yKHM9MDtzPHUubGVuZ3RoO3MrKyl7dmFyIG09dVtzXSxnPWYubGVu Z3RoO2Y9Zi5jb25jYXQobS5wb3NpdGlvbnMpLHA9cC5jb25jYXQobS52ZWN0b3JzKSxkPWQu Y29uY2F0KG0udmVydGV4SW50ZW5zaXR5KTtmb3IoYz0wO2M8bS5jZWxscy5sZW5ndGg7Yysr KXt2YXIgdj1tLmNlbGxzW2NdLHk9W107aC5wdXNoKHkpO2Zvcih2YXIgeD0wO3g8di5sZW5n dGg7eCsrKXkucHVzaCh2W3hdK2cpfX1yZXR1cm57cG9zaXRpb25zOmYsY2VsbHM6aCx2ZWN0 b3JzOnAsdmVydGV4SW50ZW5zaXR5OmQsY29sb3JtYXA6ZX19LHM9ZnVuY3Rpb24odCxlKXt2 YXIgcixuPXQubGVuZ3RoO2ZvcihyPTA7cjxuO3IrKyl7dmFyIGk9dFtyXTtpZihpPT09ZSly ZXR1cm4gcjtpZihpPmUpcmV0dXJuIHItMX1yZXR1cm4gcn0sbD1mdW5jdGlvbih0LGUscil7 cmV0dXJuIHQ8ZT9lOnQ+cj9yOnR9LGM9ZnVuY3Rpb24odCl7dmFyIGU9MS8wO3Quc29ydCgo ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfSkpO2Zvcih2YXIgcj10Lmxlbmd0aCxuPTE7bjxy O24rKyl7dmFyIGk9TWF0aC5hYnModFtuXS10W24tMV0pO2k8ZSYmKGU9aSl9cmV0dXJuIGV9 O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByPXQuc3RhcnRpbmdQb3NpdGlvbnMsaT10 Lm1heExlbmd0aHx8MWUzLHU9dC50dWJlU2l6ZXx8MSxmPXQuYWJzb2x1dGVUdWJlU2l6ZSxo PXQuZ3JpZEZpbGx8fCIreCt5K3oiLHA9e307LTEhPT1oLmluZGV4T2YoIi14IikmJihwLnJl dmVyc2VkWD0hMCksLTEhPT1oLmluZGV4T2YoIi15IikmJihwLnJldmVyc2VkWT0hMCksLTEh PT1oLmluZGV4T2YoIi16IikmJihwLnJldmVyc2VkWj0hMCkscC5maWxsZWQ9YS5pbmRleE9m KGgucmVwbGFjZSgvLS9nLCIiKS5yZXBsYWNlKC9cKy9nLCIiKSk7dmFyIGQ9dC5nZXRWZWxv Y2l0eXx8ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxyKXt2YXIgaT1lLnZlY3Rv cnMsYT1lLm1lc2hncmlkLG89dFswXSxjPXRbMV0sdT10WzJdLGY9YVswXS5sZW5ndGgsaD1h WzFdLmxlbmd0aCxwPWFbMl0ubGVuZ3RoLGQ9cyhhWzBdLG8pLG09cyhhWzFdLGMpLGc9cyhh WzJdLHUpLHY9ZCsxLHk9bSsxLHg9ZysxO2lmKGQ9bChkLDAsZi0xKSx2PWwodiwwLGYtMSks bT1sKG0sMCxoLTEpLHk9bCh5LDAsaC0xKSxnPWwoZywwLHAtMSkseD1sKHgsMCxwLTEpLGQ8 MHx8bTwwfHxnPDB8fHY+Zi0xfHx5PmgtMXx8eD5wLTEpcmV0dXJuIG4uY3JlYXRlKCk7dmFy IGIsXyx3LFQsayxBLE09YVswXVtkXSxTPWFbMF1bdl0sRT1hWzFdW21dLEw9YVsxXVt5XSxD PWFbMl1bZ10sUD0oby1NKS8oUy1NKSxJPShjLUUpLyhMLUUpLE89KHUtQykvKGFbMl1beF0t Qyk7c3dpdGNoKGlzRmluaXRlKFApfHwoUD0uNSksaXNGaW5pdGUoSSl8fChJPS41KSxpc0Zp bml0ZShPKXx8KE89LjUpLHIucmV2ZXJzZWRYJiYoZD1mLTEtZCx2PWYtMS12KSxyLnJldmVy c2VkWSYmKG09aC0xLW0seT1oLTEteSksci5yZXZlcnNlZFomJihnPXAtMS1nLHg9cC0xLXgp LHIuZmlsbGVkKXtjYXNlIDU6az1nLEE9eCx3PW0qcCxUPXkqcCxiPWQqcCpoLF89dipwKmg7 YnJlYWs7Y2FzZSA0Oms9ZyxBPXgsYj1kKnAsXz12KnAsdz1tKnAqZixUPXkqcCpmO2JyZWFr O2Nhc2UgMzp3PW0sVD15LGs9ZypoLEE9eCpoLGI9ZCpoKnAsXz12KmgqcDticmVhaztjYXNl IDI6dz1tLFQ9eSxiPWQqaCxfPXYqaCxrPWcqaCpmLEE9eCpoKmY7YnJlYWs7Y2FzZSAxOmI9 ZCxfPXYsaz1nKmYsQT14KmYsdz1tKmYqcCxUPXkqZipwO2JyZWFrO2RlZmF1bHQ6Yj1kLF89 dix3PW0qZixUPXkqZixrPWcqZipoLEE9eCpmKmh9dmFyIHo9aVtiK3cra10sRD1pW2IrdytB XSxSPWlbYitUK2tdLEY9aVtiK1QrQV0sQj1pW18rdytrXSxOPWlbXyt3K0FdLGo9aVtfK1Qr a10sVT1pW18rVCtBXSxWPW4uY3JlYXRlKCksSD1uLmNyZWF0ZSgpLHE9bi5jcmVhdGUoKSxH PW4uY3JlYXRlKCk7bi5sZXJwKFYseixCLFApLG4ubGVycChILEQsTixQKSxuLmxlcnAocSxS LGosUCksbi5sZXJwKEcsRixVLFApO3ZhciBZPW4uY3JlYXRlKCksVz1uLmNyZWF0ZSgpO24u bGVycChZLFYscSxJKSxuLmxlcnAoVyxILEcsSSk7dmFyIFg9bi5jcmVhdGUoKTtyZXR1cm4g bi5sZXJwKFgsWSxXLE8pLFh9KGUsdCxwKX0sbT10LmdldERpdmVyZ2VuY2V8fGZ1bmN0aW9u KHQsZSl7dmFyIHI9bi5jcmVhdGUoKSxpPTFlLTQ7bi5hZGQocix0LFtpLDAsMF0pO3ZhciBh PWQocik7bi5zdWJ0cmFjdChhLGEsZSksbi5zY2FsZShhLGEsMS9pKSxuLmFkZChyLHQsWzAs aSwwXSk7dmFyIG89ZChyKTtuLnN1YnRyYWN0KG8sbyxlKSxuLnNjYWxlKG8sbywxL2kpLG4u YWRkKHIsdCxbMCwwLGldKTt2YXIgcz1kKHIpO3JldHVybiBuLnN1YnRyYWN0KHMscyxlKSxu LnNjYWxlKHMscywxL2kpLG4uYWRkKHIsYSxvKSxuLmFkZChyLHIscykscn0sZz1bXSx2PWVb MF1bMF0seT1lWzBdWzFdLHg9ZVswXVsyXSxiPWVbMV1bMF0sXz1lWzFdWzFdLHc9ZVsxXVsy XSxUPWZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0scj10WzFdLG49dFsyXTtyZXR1cm4hKGU8dnx8 ZT5ifHxyPHl8fHI+X3x8bjx4fHxuPncpfSxrPTEwKm4uZGlzdGFuY2UoZVswXSxlWzFdKS9p LEE9ayprLE09MSxTPTAsRT1yLmxlbmd0aDtFPjEmJihNPWZ1bmN0aW9uKHQpe2Zvcih2YXIg ZT1bXSxyPVtdLG49W10saT17fSxhPXt9LG89e30scz10Lmxlbmd0aCxsPTA7bDxzO2wrKyl7 dmFyIHU9dFtsXSxmPXVbMF0saD11WzFdLHA9dVsyXTtpW2ZdfHwoZS5wdXNoKGYpLGlbZl09 ITApLGFbaF18fChyLnB1c2goaCksYVtoXT0hMCksb1twXXx8KG4ucHVzaChwKSxvW3BdPSEw KX12YXIgZD1jKGUpLG09YyhyKSxnPWMobiksdj1NYXRoLm1pbihkLG0sZyk7cmV0dXJuIGlz RmluaXRlKHYpP3Y6MX0ocikpO2Zvcih2YXIgTD0wO0w8RTtMKyspe3ZhciBDPW4uY3JlYXRl KCk7bi5jb3B5KEMscltMXSk7dmFyIFA9W0NdLEk9W10sTz1kKEMpLHo9QztJLnB1c2goTyk7 dmFyIEQ9W10sUj1tKEMsTyksRj1uLmxlbmd0aChSKTtpc0Zpbml0ZShGKSYmRj5TJiYoUz1G KSxELnB1c2goRiksZy5wdXNoKHtwb2ludHM6UCx2ZWxvY2l0aWVzOkksZGl2ZXJnZW5jZXM6 RH0pO2Zvcih2YXIgQj0wO0I8MTAwKmkmJlAubGVuZ3RoPGkmJlQoQyk7KXtCKys7dmFyIE49 bi5jbG9uZShPKSxqPW4uc3F1YXJlZExlbmd0aChOKTtpZigwPT09ailicmVhaztpZihqPkEm Jm4uc2NhbGUoTixOLGsvTWF0aC5zcXJ0KGopKSxuLmFkZChOLE4sQyksTz1kKE4pLG4uc3F1 YXJlZERpc3RhbmNlKHosTiktQT4tMWUtNCpBKXtQLnB1c2goTiksej1OLEkucHVzaChPKTtS PW0oTixPKSxGPW4ubGVuZ3RoKFIpO2lzRmluaXRlKEYpJiZGPlMmJihTPUYpLEQucHVzaChG KX1DPU59fXZhciBVPW8oZyx0LmNvbG9ybWFwLFMsTSk7cmV0dXJuIGY/VS50dWJlU2NhbGU9 ZjooMD09PVMmJihTPTEpLFUudHViZVNjYWxlPS41KnUqTS9TKSxVfTt2YXIgdT10KCIuL2xp Yi9zaGFkZXJzIiksZj10KCJnbC1jb25lM2QiKS5jcmVhdGVNZXNoO2UuZXhwb3J0cy5jcmVh dGVUdWJlTWVzaD1mdW5jdGlvbih0LGUpe3JldHVybiBmKHQsZSx7c2hhZGVyczp1LHRyYWNl VHlwZToic3RyZWFtdHViZSJ9KX19LHsiLi9saWIvc2hhZGVycyI6MTQyLCJnbC1jb25lM2Qi Ojc5LCJnbC12ZWMzIjoxNjksImdsLXZlYzQiOjIwNX1dLDE0NDpbZnVuY3Rpb24odCxlLHIp e3ZhciBuPXQoImdsLXNoYWRlciIpLGk9dCgiZ2xzbGlmeSIpLGE9aShbInByZWNpc2lvbiBo aWdocCBmbG9hdDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWM0IHV2O1xu YXR0cmlidXRlIHZlYzMgZjtcbmF0dHJpYnV0ZSB2ZWMzIG5vcm1hbDtcblxudW5pZm9ybSB2 ZWMzIG9iamVjdE9mZnNldDtcbnVuaWZvcm0gbWF0NCBtb2RlbCwgdmlldywgcHJvamVjdGlv biwgaW52ZXJzZU1vZGVsO1xudW5pZm9ybSB2ZWMzIGxpZ2h0UG9zaXRpb24sIGV5ZVBvc2l0 aW9uO1xudW5pZm9ybSBzYW1wbGVyMkQgY29sb3JtYXA7XG5cbnZhcnlpbmcgZmxvYXQgdmFs dWUsIGtpbGw7XG52YXJ5aW5nIHZlYzMgd29ybGRDb29yZGluYXRlO1xudmFyeWluZyB2ZWMy IHBsYW5lQ29vcmRpbmF0ZTtcbnZhcnlpbmcgdmVjMyBsaWdodERpcmVjdGlvbiwgZXllRGly ZWN0aW9uLCBzdXJmYWNlTm9ybWFsO1xudmFyeWluZyB2ZWM0IHZDb2xvcjtcblxudm9pZCBt YWluKCkge1xuICB2ZWMzIGxvY2FsQ29vcmRpbmF0ZSA9IHZlYzModXYuencsIGYueCk7XG4g IHdvcmxkQ29vcmRpbmF0ZSA9IG9iamVjdE9mZnNldCArIGxvY2FsQ29vcmRpbmF0ZTtcbiAg dmVjNCB3b3JsZFBvc2l0aW9uID0gbW9kZWwgKiB2ZWM0KHdvcmxkQ29vcmRpbmF0ZSwgMS4w KTtcbiAgdmVjNCBjbGlwUG9zaXRpb24gPSBwcm9qZWN0aW9uICogdmlldyAqIHdvcmxkUG9z aXRpb247XG4gIGdsX1Bvc2l0aW9uID0gY2xpcFBvc2l0aW9uO1xuICBraWxsID0gZi55O1xu ICB2YWx1ZSA9IGYuejtcbiAgcGxhbmVDb29yZGluYXRlID0gdXYueHk7XG5cbiAgdkNvbG9y ID0gdGV4dHVyZTJEKGNvbG9ybWFwLCB2ZWMyKHZhbHVlLCB2YWx1ZSkpO1xuXG4gIC8vTGln aHRpbmcgZ2VvbWV0cnkgcGFyYW1ldGVyc1xuICB2ZWM0IGNhbWVyYUNvb3JkaW5hdGUgPSB2 aWV3ICogd29ybGRQb3NpdGlvbjtcbiAgY2FtZXJhQ29vcmRpbmF0ZS54eXogLz0gY2FtZXJh Q29vcmRpbmF0ZS53O1xuICBsaWdodERpcmVjdGlvbiA9IGxpZ2h0UG9zaXRpb24gLSBjYW1l cmFDb29yZGluYXRlLnh5ejtcbiAgZXllRGlyZWN0aW9uICAgPSBleWVQb3NpdGlvbiAtIGNh bWVyYUNvb3JkaW5hdGUueHl6O1xuICBzdXJmYWNlTm9ybWFsICA9IG5vcm1hbGl6ZSgodmVj NChub3JtYWwsMCkgKiBpbnZlcnNlTW9kZWwpLnh5eik7XG59XG4iXSksbz1pKFsicHJlY2lz aW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNMSUZZIDFcblxuZmxvYXQgYmVja21hbm5E aXN0cmlidXRpb24oZmxvYXQgeCwgZmxvYXQgcm91Z2huZXNzKSB7XG4gIGZsb2F0IE5kb3RI ID0gbWF4KHgsIDAuMDAwMSk7XG4gIGZsb2F0IGNvczJBbHBoYSA9IE5kb3RIICogTmRvdEg7 XG4gIGZsb2F0IHRhbjJBbHBoYSA9IChjb3MyQWxwaGEgLSAxLjApIC8gY29zMkFscGhhO1xu ICBmbG9hdCByb3VnaG5lc3MyID0gcm91Z2huZXNzICogcm91Z2huZXNzO1xuICBmbG9hdCBk ZW5vbSA9IDMuMTQxNTkyNjUzNTg5NzkzICogcm91Z2huZXNzMiAqIGNvczJBbHBoYSAqIGNv czJBbHBoYTtcbiAgcmV0dXJuIGV4cCh0YW4yQWxwaGEgLyByb3VnaG5lc3MyKSAvIGRlbm9t O1xufVxuXG5mbG9hdCBiZWNrbWFublNwZWN1bGFyKFxuICB2ZWMzIGxpZ2h0RGlyZWN0aW9u LFxuICB2ZWMzIHZpZXdEaXJlY3Rpb24sXG4gIHZlYzMgc3VyZmFjZU5vcm1hbCxcbiAgZmxv YXQgcm91Z2huZXNzKSB7XG4gIHJldHVybiBiZWNrbWFubkRpc3RyaWJ1dGlvbihkb3Qoc3Vy ZmFjZU5vcm1hbCwgbm9ybWFsaXplKGxpZ2h0RGlyZWN0aW9uICsgdmlld0RpcmVjdGlvbikp LCByb3VnaG5lc3MpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UoZmxvYXQgYSwgZmxvYXQgYiwg ZmxvYXQgcCkge1xuICByZXR1cm4gKChwID4gbWF4KGEsIGIpKSB8fCBcbiAgICAgICAgICAo cCA8IG1pbihhLCBiKSkpO1xufVxuXG5ib29sIG91dE9mUmFuZ2UodmVjMiBhLCB2ZWMyIGIs IHZlYzIgcCkge1xuICByZXR1cm4gKG91dE9mUmFuZ2UoYS54LCBiLngsIHAueCkgfHxcbiAg ICAgICAgICBvdXRPZlJhbmdlKGEueSwgYi55LCBwLnkpKTtcbn1cblxuYm9vbCBvdXRPZlJh bmdlKHZlYzMgYSwgdmVjMyBiLCB2ZWMzIHApIHtcbiAgcmV0dXJuIChvdXRPZlJhbmdlKGEu eCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0T2ZSYW5nZShhLnksIGIueSwgcC55KSB8 fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS56LCBiLnosIHAueikpO1xufVxuXG5ib29sIG91 dE9mUmFuZ2UodmVjNCBhLCB2ZWM0IGIsIHZlYzQgcCkge1xuICByZXR1cm4gb3V0T2ZSYW5n ZShhLnh5eiwgYi54eXosIHAueHl6KTtcbn1cblxudW5pZm9ybSB2ZWMzIGxvd2VyQm91bmQs IHVwcGVyQm91bmQ7XG51bmlmb3JtIGZsb2F0IGNvbnRvdXJUaW50O1xudW5pZm9ybSB2ZWM0 IGNvbnRvdXJDb2xvcjtcbnVuaWZvcm0gc2FtcGxlcjJEIGNvbG9ybWFwO1xudW5pZm9ybSB2 ZWMzIGNsaXBCb3VuZHNbMl07XG51bmlmb3JtIGZsb2F0IHJvdWdobmVzcywgZnJlc25lbCwg a2FtYmllbnQsIGtkaWZmdXNlLCBrc3BlY3VsYXIsIG9wYWNpdHk7XG51bmlmb3JtIGZsb2F0 IHZlcnRleENvbG9yO1xuXG52YXJ5aW5nIGZsb2F0IHZhbHVlLCBraWxsO1xudmFyeWluZyB2 ZWMzIHdvcmxkQ29vcmRpbmF0ZTtcbnZhcnlpbmcgdmVjMyBsaWdodERpcmVjdGlvbiwgZXll RGlyZWN0aW9uLCBzdXJmYWNlTm9ybWFsO1xudmFyeWluZyB2ZWM0IHZDb2xvcjtcblxudm9p ZCBtYWluKCkge1xuICBpZiAoXG4gICAga2lsbCA+IDAuMCB8fFxuICAgIHZDb2xvci5hID09 IDAuMCB8fFxuICAgIG91dE9mUmFuZ2UoY2xpcEJvdW5kc1swXSwgY2xpcEJvdW5kc1sxXSwg d29ybGRDb29yZGluYXRlKVxuICApIGRpc2NhcmQ7XG5cbiAgdmVjMyBOID0gbm9ybWFsaXpl KHN1cmZhY2VOb3JtYWwpO1xuICB2ZWMzIFYgPSBub3JtYWxpemUoZXllRGlyZWN0aW9uKTtc biAgdmVjMyBMID0gbm9ybWFsaXplKGxpZ2h0RGlyZWN0aW9uKTtcblxuICBpZihnbF9Gcm9u dEZhY2luZykge1xuICAgIE4gPSAtTjtcbiAgfVxuXG4gIGZsb2F0IHNwZWN1bGFyID0gbWF4 KGJlY2ttYW5uU3BlY3VsYXIoTCwgViwgTiwgcm91Z2huZXNzKSwgMC4pO1xuICBmbG9hdCBk aWZmdXNlICA9IG1pbihrYW1iaWVudCArIGtkaWZmdXNlICogbWF4KGRvdChOLCBMKSwgMC4w KSwgMS4wKTtcblxuICAvL2RlY2lkZSBob3cgdG8gaW50ZXJwb2xhdGUgY29sb3IgXHUyMDE0 IGluIHZlcnRleCBvciBpbiBmcmFnbWVudFxuICB2ZWM0IHN1cmZhY2VDb2xvciA9XG4gICAg c3RlcCh2ZXJ0ZXhDb2xvciwgLjUpICogdGV4dHVyZTJEKGNvbG9ybWFwLCB2ZWMyKHZhbHVl LCB2YWx1ZSkpICtcbiAgICBzdGVwKC41LCB2ZXJ0ZXhDb2xvcikgKiB2Q29sb3I7XG5cbiAg dmVjNCBsaXRDb2xvciA9IHN1cmZhY2VDb2xvci5hICogdmVjNChkaWZmdXNlICogc3VyZmFj ZUNvbG9yLnJnYiArIGtzcGVjdWxhciAqIHZlYzMoMSwxLDEpICogc3BlY3VsYXIsICAxLjAp O1xuXG4gIGdsX0ZyYWdDb2xvciA9IG1peChsaXRDb2xvciwgY29udG91ckNvbG9yLCBjb250 b3VyVGludCkgKiBvcGFjaXR5O1xufVxuIl0pLHM9aShbInByZWNpc2lvbiBoaWdocCBmbG9h dDtcbiNkZWZpbmUgR0xTTElGWSAxXG5cbmF0dHJpYnV0ZSB2ZWM0IHV2O1xuYXR0cmlidXRl IGZsb2F0IGY7XG5cbnVuaWZvcm0gdmVjMyBvYmplY3RPZmZzZXQ7XG51bmlmb3JtIG1hdDMg cGVybXV0YXRpb247XG51bmlmb3JtIG1hdDQgbW9kZWwsIHZpZXcsIHByb2plY3Rpb247XG51 bmlmb3JtIGZsb2F0IGhlaWdodCwgek9mZnNldDtcbnVuaWZvcm0gc2FtcGxlcjJEIGNvbG9y bWFwO1xuXG52YXJ5aW5nIGZsb2F0IHZhbHVlLCBraWxsO1xudmFyeWluZyB2ZWMzIHdvcmxk Q29vcmRpbmF0ZTtcbnZhcnlpbmcgdmVjMiBwbGFuZUNvb3JkaW5hdGU7XG52YXJ5aW5nIHZl YzMgbGlnaHREaXJlY3Rpb24sIGV5ZURpcmVjdGlvbiwgc3VyZmFjZU5vcm1hbDtcbnZhcnlp bmcgdmVjNCB2Q29sb3I7XG5cbnZvaWQgbWFpbigpIHtcbiAgdmVjMyBkYXRhQ29vcmRpbmF0 ZSA9IHBlcm11dGF0aW9uICogdmVjMyh1di54eSwgaGVpZ2h0KTtcbiAgd29ybGRDb29yZGlu YXRlID0gb2JqZWN0T2Zmc2V0ICsgZGF0YUNvb3JkaW5hdGU7XG4gIHZlYzQgd29ybGRQb3Np dGlvbiA9IG1vZGVsICogdmVjNCh3b3JsZENvb3JkaW5hdGUsIDEuMCk7XG5cbiAgdmVjNCBj bGlwUG9zaXRpb24gPSBwcm9qZWN0aW9uICogdmlldyAqIHdvcmxkUG9zaXRpb247XG4gIGNs aXBQb3NpdGlvbi56ICs9IHpPZmZzZXQ7XG5cbiAgZ2xfUG9zaXRpb24gPSBjbGlwUG9zaXRp b247XG4gIHZhbHVlID0gZiArIG9iamVjdE9mZnNldC56O1xuICBraWxsID0gLTEuMDtcbiAg cGxhbmVDb29yZGluYXRlID0gdXYuenc7XG5cbiAgdkNvbG9yID0gdGV4dHVyZTJEKGNvbG9y bWFwLCB2ZWMyKHZhbHVlLCB2YWx1ZSkpO1xuXG4gIC8vRG9uJ3QgZG8gbGlnaHRpbmcgZm9y IGNvbnRvdXJzXG4gIHN1cmZhY2VOb3JtYWwgICA9IHZlYzMoMSwwLDApO1xuICBleWVEaXJl Y3Rpb24gICAgPSB2ZWMzKDAsMSwwKTtcbiAgbGlnaHREaXJlY3Rpb24gID0gdmVjMygwLDAs MSk7XG59XG4iXSksbD1pKFsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuI2RlZmluZSBHTFNM SUZZIDFcblxuYm9vbCBvdXRPZlJhbmdlKGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IHApIHtc biAgcmV0dXJuICgocCA+IG1heChhLCBiKSkgfHwgXG4gICAgICAgICAgKHAgPCBtaW4oYSwg YikpKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZlYzIgYSwgdmVjMiBiLCB2ZWMyIHApIHtc biAgcmV0dXJuIChvdXRPZlJhbmdlKGEueCwgYi54LCBwLngpIHx8XG4gICAgICAgICAgb3V0 T2ZSYW5nZShhLnksIGIueSwgcC55KSk7XG59XG5cbmJvb2wgb3V0T2ZSYW5nZSh2ZWMzIGEs IHZlYzMgYiwgdmVjMyBwKSB7XG4gIHJldHVybiAob3V0T2ZSYW5nZShhLngsIGIueCwgcC54 KSB8fFxuICAgICAgICAgIG91dE9mUmFuZ2UoYS55LCBiLnksIHAueSkgfHxcbiAgICAgICAg ICBvdXRPZlJhbmdlKGEueiwgYi56LCBwLnopKTtcbn1cblxuYm9vbCBvdXRPZlJhbmdlKHZl YzQgYSwgdmVjNCBiLCB2ZWM0IHApIHtcbiAgcmV0dXJuIG91dE9mUmFuZ2UoYS54eXosIGIu eHl6LCBwLnh5eik7XG59XG5cbnVuaWZvcm0gdmVjMiBzaGFwZTtcbnVuaWZvcm0gdmVjMyBj bGlwQm91bmRzWzJdO1xudW5pZm9ybSBmbG9hdCBwaWNrSWQ7XG5cbnZhcnlpbmcgZmxvYXQg dmFsdWUsIGtpbGw7XG52YXJ5aW5nIHZlYzMgd29ybGRDb29yZGluYXRlO1xudmFyeWluZyB2 ZWMyIHBsYW5lQ29vcmRpbmF0ZTtcbnZhcnlpbmcgdmVjMyBzdXJmYWNlTm9ybWFsO1xuXG52 ZWMyIHNwbGl0RmxvYXQoZmxvYXQgdikge1xuICBmbG9hdCB2aCA9IDI1NS4wICogdjtcbiAg ZmxvYXQgdXBwZXIgPSBmbG9vcih2aCk7XG4gIGZsb2F0IGxvd2VyID0gZnJhY3QodmgpO1xu ICByZXR1cm4gdmVjMih1cHBlciAvIDI1NS4wLCBmbG9vcihsb3dlciAqIDE2LjApIC8gMTYu MCk7XG59XG5cbnZvaWQgbWFpbigpIHtcbiAgaWYgKChraWxsID4gMC4wKSB8fFxuICAgICAg KG91dE9mUmFuZ2UoY2xpcEJvdW5kc1swXSwgY2xpcEJvdW5kc1sxXSwgd29ybGRDb29yZGlu YXRlKSkpIGRpc2NhcmQ7XG5cbiAgdmVjMiB1eCA9IHNwbGl0RmxvYXQocGxhbmVDb29yZGlu YXRlLnggLyBzaGFwZS54KTtcbiAgdmVjMiB1eSA9IHNwbGl0RmxvYXQocGxhbmVDb29yZGlu YXRlLnkgLyBzaGFwZS55KTtcbiAgZ2xfRnJhZ0NvbG9yID0gdmVjNChwaWNrSWQsIHV4Lngs IHV5LngsIHV4LnkgKyAodXkueS8xNi4wKSk7XG59XG4iXSk7ci5jcmVhdGVTaGFkZXI9ZnVu Y3Rpb24odCl7dmFyIGU9bih0LGEsbyxudWxsLFt7bmFtZToidXYiLHR5cGU6InZlYzQifSx7 bmFtZToiZiIsdHlwZToidmVjMyJ9LHtuYW1lOiJub3JtYWwiLHR5cGU6InZlYzMifV0pO3Jl dHVybiBlLmF0dHJpYnV0ZXMudXYubG9jYXRpb249MCxlLmF0dHJpYnV0ZXMuZi5sb2NhdGlv bj0xLGUuYXR0cmlidXRlcy5ub3JtYWwubG9jYXRpb249MixlfSxyLmNyZWF0ZVBpY2tTaGFk ZXI9ZnVuY3Rpb24odCl7dmFyIGU9bih0LGEsbCxudWxsLFt7bmFtZToidXYiLHR5cGU6InZl YzQifSx7bmFtZToiZiIsdHlwZToidmVjMyJ9LHtuYW1lOiJub3JtYWwiLHR5cGU6InZlYzMi fV0pO3JldHVybiBlLmF0dHJpYnV0ZXMudXYubG9jYXRpb249MCxlLmF0dHJpYnV0ZXMuZi5s b2NhdGlvbj0xLGUuYXR0cmlidXRlcy5ub3JtYWwubG9jYXRpb249MixlfSxyLmNyZWF0ZUNv bnRvdXJTaGFkZXI9ZnVuY3Rpb24odCl7dmFyIGU9bih0LHMsbyxudWxsLFt7bmFtZToidXYi LHR5cGU6InZlYzQifSx7bmFtZToiZiIsdHlwZToiZmxvYXQifV0pO3JldHVybiBlLmF0dHJp YnV0ZXMudXYubG9jYXRpb249MCxlLmF0dHJpYnV0ZXMuZi5sb2NhdGlvbj0xLGV9LHIuY3Jl YXRlUGlja0NvbnRvdXJTaGFkZXI9ZnVuY3Rpb24odCl7dmFyIGU9bih0LHMsbCxudWxsLFt7 bmFtZToidXYiLHR5cGU6InZlYzQifSx7bmFtZToiZiIsdHlwZToiZmxvYXQifV0pO3JldHVy biBlLmF0dHJpYnV0ZXMudXYubG9jYXRpb249MCxlLmF0dHJpYnV0ZXMuZi5sb2NhdGlvbj0x LGV9fSx7ImdsLXNoYWRlciI6MTMyLGdsc2xpZnk6MjMxfV0sMTQ1OltmdW5jdGlvbih0LGUs cil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10LmdsLHI9eShl KSxuPWIoZSkscz14KGUpLGw9XyhlKSxjPWkoZSksdT1hKGUsW3tidWZmZXI6YyxzaXplOjQs c3RyaWRlOjQwLG9mZnNldDowfSx7YnVmZmVyOmMsc2l6ZTozLHN0cmlkZTo0MCxvZmZzZXQ6 MTZ9LHtidWZmZXI6YyxzaXplOjMsc3RyaWRlOjQwLG9mZnNldDoyOH1dKSxmPWkoZSksaD1h KGUsW3tidWZmZXI6ZixzaXplOjQsc3RyaWRlOjIwLG9mZnNldDowfSx7YnVmZmVyOmYsc2l6 ZToxLHN0cmlkZToyMCxvZmZzZXQ6MTZ9XSkscD1pKGUpLGQ9YShlLFt7YnVmZmVyOnAsc2l6 ZToyLHR5cGU6ZS5GTE9BVH1dKSxtPW8oZSwxLDI1NixlLlJHQkEsZS5VTlNJR05FRF9CWVRF KTttLm1pbkZpbHRlcj1lLkxJTkVBUixtLm1hZ0ZpbHRlcj1lLkxJTkVBUjt2YXIgZz1uZXcg TShlLFswLDBdLFtbMCwwLDBdLFswLDAsMF1dLHIsbixjLHUsbSxzLGwsZixoLHAsZCxbMCww LDBdKSx2PXtsZXZlbHM6W1tdLFtdLFtdXX07Zm9yKHZhciB3IGluIHQpdlt3XT10W3ddO3Jl dHVybiB2LmNvbG9ybWFwPXYuY29sb3JtYXB8fCJqZXQiLGcudXBkYXRlKHYpLGd9O3ZhciBu PXQoImJpdC10d2lkZGxlIiksaT10KCJnbC1idWZmZXIiKSxhPXQoImdsLXZhbyIpLG89dCgi Z2wtdGV4dHVyZTJkIikscz10KCJ0eXBlZGFycmF5LXBvb2wiKSxsPXQoImNvbG9ybWFwIiks Yz10KCJuZGFycmF5LW9wcyIpLHU9dCgibmRhcnJheS1wYWNrIiksZj10KCJuZGFycmF5Iiks aD10KCJzdXJmYWNlLW5ldHMiKSxwPXQoImdsLW1hdDQvbXVsdGlwbHkiKSxkPXQoImdsLW1h dDQvaW52ZXJ0IiksbT10KCJiaW5hcnktc2VhcmNoLWJvdW5kcyIpLGc9dCgibmRhcnJheS1n cmFkaWVudCIpLHY9dCgiLi9saWIvc2hhZGVycyIpLHk9di5jcmVhdGVTaGFkZXIseD12LmNy ZWF0ZUNvbnRvdXJTaGFkZXIsYj12LmNyZWF0ZVBpY2tTaGFkZXIsXz12LmNyZWF0ZVBpY2tD b250b3VyU2hhZGVyLHc9WzEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAsMCwwLDFdLFQ9W1sw LDBdLFswLDFdLFsxLDBdLFsxLDFdLFsxLDBdLFswLDFdXSxrPVtbMCwwLDAsMCwwLDAsMCww LDBdLFswLDAsMCwwLDAsMCwwLDAsMF0sWzAsMCwwLDAsMCwwLDAsMCwwXV07ZnVuY3Rpb24g QSh0LGUscixuLGkpe3RoaXMucG9zaXRpb249dCx0aGlzLmluZGV4PWUsdGhpcy51dj1yLHRo aXMubGV2ZWw9bix0aGlzLmRhdGFDb29yZGluYXRlPWl9IWZ1bmN0aW9uKCl7Zm9yKHZhciB0 PTA7dDwzOysrdCl7dmFyIGU9a1t0XSxyPSh0KzIpJTM7ZVsodCsxKSUzKzBdPTEsZVtyKzNd PTEsZVt0KzZdPTF9fSgpO2Z1bmN0aW9uIE0odCxlLHIsbixpLGEsbyxsLGMsdSxoLHAsZCxt LGcpe3RoaXMuZ2w9dCx0aGlzLnNoYXBlPWUsdGhpcy5ib3VuZHM9cix0aGlzLm9iamVjdE9m ZnNldD1nLHRoaXMuaW50ZW5zaXR5Qm91bmRzPVtdLHRoaXMuX3NoYWRlcj1uLHRoaXMuX3Bp Y2tTaGFkZXI9aSx0aGlzLl9jb29yZGluYXRlQnVmZmVyPWEsdGhpcy5fdmFvPW8sdGhpcy5f Y29sb3JNYXA9bCx0aGlzLl9jb250b3VyU2hhZGVyPWMsdGhpcy5fY29udG91clBpY2tTaGFk ZXI9dSx0aGlzLl9jb250b3VyQnVmZmVyPWgsdGhpcy5fY29udG91clZBTz1wLHRoaXMuX2Nv bnRvdXJPZmZzZXRzPVtbXSxbXSxbXV0sdGhpcy5fY29udG91ckNvdW50cz1bW10sW10sW11d LHRoaXMuX3ZlcnRleENvdW50PTAsdGhpcy5fcGlja1Jlc3VsdD1uZXcgQShbMCwwLDBdLFsw LDBdLFswLDBdLFswLDAsMF0sWzAsMCwwXSksdGhpcy5fZHluYW1pY0J1ZmZlcj1kLHRoaXMu X2R5bmFtaWNWQU89bSx0aGlzLl9keW5hbWljT2Zmc2V0cz1bMCwwLDBdLHRoaXMuX2R5bmFt aWNDb3VudHM9WzAsMCwwXSx0aGlzLmNvbnRvdXJXaWR0aD1bMSwxLDFdLHRoaXMuY29udG91 ckxldmVscz1bWzFdLFsxXSxbMV1dLHRoaXMuY29udG91clRpbnQ9WzAsMCwwXSx0aGlzLmNv bnRvdXJDb2xvcj1bWy41LC41LC41LDFdLFsuNSwuNSwuNSwxXSxbLjUsLjUsLjUsMV1dLHRo aXMuc2hvd0NvbnRvdXI9ITAsdGhpcy5zaG93U3VyZmFjZT0hMCx0aGlzLmVuYWJsZUhpZ2hs aWdodD1bITAsITAsITBdLHRoaXMuaGlnaGxpZ2h0Q29sb3I9W1swLDAsMCwxXSxbMCwwLDAs MV0sWzAsMCwwLDFdXSx0aGlzLmhpZ2hsaWdodFRpbnQ9WzEsMSwxXSx0aGlzLmhpZ2hsaWdo dExldmVsPVstMSwtMSwtMV0sdGhpcy5lbmFibGVEeW5hbWljPVshMCwhMCwhMF0sdGhpcy5k eW5hbWljTGV2ZWw9W05hTixOYU4sTmFOXSx0aGlzLmR5bmFtaWNDb2xvcj1bWzAsMCwwLDFd LFswLDAsMCwxXSxbMCwwLDAsMV1dLHRoaXMuZHluYW1pY1RpbnQ9WzEsMSwxXSx0aGlzLmR5 bmFtaWNXaWR0aD1bMSwxLDFdLHRoaXMuYXhlc0JvdW5kcz1bWzEvMCwxLzAsMS8wXSxbLTEv MCwtMS8wLC0xLzBdXSx0aGlzLnN1cmZhY2VQcm9qZWN0PVshMSwhMSwhMV0sdGhpcy5jb250 b3VyUHJvamVjdD1bWyExLCExLCExXSxbITEsITEsITFdLFshMSwhMSwhMV1dLHRoaXMuY29s b3JCb3VuZHM9WyExLCExXSx0aGlzLl9maWVsZD1bZihzLm1hbGxvY0Zsb2F0KDEwMjQpLFsw LDBdKSxmKHMubWFsbG9jRmxvYXQoMTAyNCksWzAsMF0pLGYocy5tYWxsb2NGbG9hdCgxMDI0 KSxbMCwwXSldLHRoaXMucGlja0lkPTEsdGhpcy5jbGlwQm91bmRzPVtbLTEvMCwtMS8wLC0x LzBdLFsxLzAsMS8wLDEvMF1dLHRoaXMuc25hcFRvRGF0YT0hMSx0aGlzLnBpeGVsUmF0aW89 MSx0aGlzLm9wYWNpdHk9MSx0aGlzLmxpZ2h0UG9zaXRpb249WzEwLDFlNCwwXSx0aGlzLmFt YmllbnRMaWdodD0uOCx0aGlzLmRpZmZ1c2VMaWdodD0uOCx0aGlzLnNwZWN1bGFyTGlnaHQ9 Mix0aGlzLnJvdWdobmVzcz0uNSx0aGlzLmZyZXNuZWw9MS41LHRoaXMudmVydGV4Q29sb3I9 MCx0aGlzLmRpcnR5PSEwfXZhciBTPU0ucHJvdG90eXBlO1MuZ2VuQ29sb3JtYXA9ZnVuY3Rp b24odCxlKXt2YXIgcj0hMSxuPXUoW2woe2NvbG9ybWFwOnQsbnNoYWRlczoyNTYsZm9ybWF0 OiJyZ2JhIn0pLm1hcCgoZnVuY3Rpb24odCxuKXt2YXIgaT1lP2Z1bmN0aW9uKHQsZSl7aWYo IWUpcmV0dXJuIDE7aWYoIWUubGVuZ3RoKXJldHVybiAxO2Zvcih2YXIgcj0wO3I8ZS5sZW5n dGg7KytyKXtpZihlLmxlbmd0aDwyKXJldHVybiAxO2lmKGVbcl1bMF09PT10KXJldHVybiBl W3JdWzFdO2lmKGVbcl1bMF0+dCYmcj4wKXt2YXIgbj0oZVtyXVswXS10KS8oZVtyXVswXS1l W3ItMV1bMF0pO3JldHVybiBlW3JdWzFdKigxLW4pK24qZVtyLTFdWzFdfX1yZXR1cm4gMX0o bi8yNTUsZSk6dFszXTtyZXR1cm4gaTwxJiYocj0hMCksW3RbMF0sdFsxXSx0WzJdLDI1NSpp XX0pKV0pO3JldHVybiBjLmRpdnNlcShuLDI1NSksdGhpcy5oYXNBbHBoYVNjYWxlPXIsbn0s Uy5pc1RyYW5zcGFyZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3BhY2l0eTwxfHx0aGlz Lmhhc0FscGhhU2NhbGV9LFMuaXNPcGFxdWU9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc1Ry YW5zcGFyZW50KCl9LFMucGlja1Nsb3RzPTEsUy5zZXRQaWNrQmFzZT1mdW5jdGlvbih0KXt0 aGlzLnBpY2tJZD10fTt2YXIgRT1bMCwwLDBdLEw9e3Nob3dTdXJmYWNlOiExLHNob3dDb250 b3VyOiExLHByb2plY3Rpb25zOlt3LnNsaWNlKCksdy5zbGljZSgpLHcuc2xpY2UoKV0sY2xp cEJvdW5kczpbW1swLDAsMF0sWzAsMCwwXV0sW1swLDAsMF0sWzAsMCwwXV0sW1swLDAsMF0s WzAsMCwwXV1dfTtmdW5jdGlvbiBDKHQsZSl7dmFyIHIsbixpLGE9ZS5heGVzJiZlLmF4ZXMu bGFzdEN1YmVQcm9wcy5heGlzfHxFLG89ZS5zaG93U3VyZmFjZSxzPWUuc2hvd0NvbnRvdXI7 Zm9yKHI9MDtyPDM7KytyKWZvcihvPW98fGUuc3VyZmFjZVByb2plY3Rbcl0sbj0wO248Mzsr K24pcz1zfHxlLmNvbnRvdXJQcm9qZWN0W3JdW25dO2ZvcihyPTA7cjwzOysrcil7dmFyIGw9 TC5wcm9qZWN0aW9uc1tyXTtmb3Iobj0wO248MTY7KytuKWxbbl09MDtmb3Iobj0wO248NDsr K24pbFs1Km5dPTE7bFs1KnJdPTAsbFsxMityXT1lLmF4ZXNCb3VuZHNbKyhhW3JdPjApXVty XSxwKGwsdC5tb2RlbCxsKTt2YXIgYz1MLmNsaXBCb3VuZHNbcl07Zm9yKGk9MDtpPDI7Kytp KWZvcihuPTA7bjwzOysrbiljW2ldW25dPXQuY2xpcEJvdW5kc1tpXVtuXTtjWzBdW3JdPS0x ZTgsY1sxXVtyXT0xZTh9cmV0dXJuIEwuc2hvd1N1cmZhY2U9byxMLnNob3dDb250b3VyPXMs TH12YXIgUD17bW9kZWw6dyx2aWV3OncscHJvamVjdGlvbjp3LGludmVyc2VNb2RlbDp3LnNs aWNlKCksbG93ZXJCb3VuZDpbMCwwLDBdLHVwcGVyQm91bmQ6WzAsMCwwXSxjb2xvck1hcDow LGNsaXBCb3VuZHM6W1swLDAsMF0sWzAsMCwwXV0saGVpZ2h0OjAsY29udG91clRpbnQ6MCxj b250b3VyQ29sb3I6WzAsMCwwLDFdLHBlcm11dGF0aW9uOlsxLDAsMCwwLDEsMCwwLDAsMV0s ek9mZnNldDotMWUtNCxvYmplY3RPZmZzZXQ6WzAsMCwwXSxrYW1iaWVudDoxLGtkaWZmdXNl OjEsa3NwZWN1bGFyOjEsbGlnaHRQb3NpdGlvbjpbMWUzLDFlMywxZTNdLGV5ZVBvc2l0aW9u OlswLDAsMF0scm91Z2huZXNzOjEsZnJlc25lbDoxLG9wYWNpdHk6MSx2ZXJ0ZXhDb2xvcjow fSxJPXcuc2xpY2UoKSxPPVsxLDAsMCwwLDEsMCwwLDAsMV07ZnVuY3Rpb24geih0LGUpe3Q9 dHx8e307dmFyIHI9dGhpcy5nbDtyLmRpc2FibGUoci5DVUxMX0ZBQ0UpLHRoaXMuX2NvbG9y TWFwLmJpbmQoMCk7dmFyIG49UDtuLm1vZGVsPXQubW9kZWx8fHcsbi52aWV3PXQudmlld3x8 dyxuLnByb2plY3Rpb249dC5wcm9qZWN0aW9ufHx3LG4ubG93ZXJCb3VuZD1bdGhpcy5ib3Vu ZHNbMF1bMF0sdGhpcy5ib3VuZHNbMF1bMV0sdGhpcy5jb2xvckJvdW5kc1swXXx8dGhpcy5i b3VuZHNbMF1bMl1dLG4udXBwZXJCb3VuZD1bdGhpcy5ib3VuZHNbMV1bMF0sdGhpcy5ib3Vu ZHNbMV1bMV0sdGhpcy5jb2xvckJvdW5kc1sxXXx8dGhpcy5ib3VuZHNbMV1bMl1dLG4ub2Jq ZWN0T2Zmc2V0PXRoaXMub2JqZWN0T2Zmc2V0LG4uY29udG91ckNvbG9yPXRoaXMuY29udG91 ckNvbG9yWzBdLG4uaW52ZXJzZU1vZGVsPWQobi5pbnZlcnNlTW9kZWwsbi5tb2RlbCk7Zm9y KHZhciBpPTA7aTwyOysraSlmb3IodmFyIGE9bi5jbGlwQm91bmRzW2ldLG89MDtvPDM7Kytv KWFbb109TWF0aC5taW4oTWF0aC5tYXgodGhpcy5jbGlwQm91bmRzW2ldW29dLC0xZTgpLDFl OCk7bi5rYW1iaWVudD10aGlzLmFtYmllbnRMaWdodCxuLmtkaWZmdXNlPXRoaXMuZGlmZnVz ZUxpZ2h0LG4ua3NwZWN1bGFyPXRoaXMuc3BlY3VsYXJMaWdodCxuLnJvdWdobmVzcz10aGlz LnJvdWdobmVzcyxuLmZyZXNuZWw9dGhpcy5mcmVzbmVsLG4ub3BhY2l0eT10aGlzLm9wYWNp dHksbi5oZWlnaHQ9MCxuLnBlcm11dGF0aW9uPU8sbi52ZXJ0ZXhDb2xvcj10aGlzLnZlcnRl eENvbG9yO3ZhciBzPUk7Zm9yKHAocyxuLnZpZXcsbi5tb2RlbCkscChzLG4ucHJvamVjdGlv bixzKSxkKHMscyksaT0wO2k8MzsrK2kpbi5leWVQb3NpdGlvbltpXT1zWzEyK2ldL3NbMTVd O3ZhciBsPXNbMTVdO2ZvcihpPTA7aTwzOysraSlsKz10aGlzLmxpZ2h0UG9zaXRpb25baV0q c1s0KmkrM107Zm9yKGk9MDtpPDM7KytpKXt2YXIgYz1zWzEyK2ldO2ZvcihvPTA7bzwzOysr byljKz1zWzQqbytpXSp0aGlzLmxpZ2h0UG9zaXRpb25bb107bi5saWdodFBvc2l0aW9uW2ld PWMvbH12YXIgdT1DKG4sdGhpcyk7aWYodS5zaG93U3VyZmFjZSl7Zm9yKHRoaXMuX3NoYWRl ci5iaW5kKCksdGhpcy5fc2hhZGVyLnVuaWZvcm1zPW4sdGhpcy5fdmFvLmJpbmQoKSx0aGlz LnNob3dTdXJmYWNlJiZ0aGlzLl92ZXJ0ZXhDb3VudCYmdGhpcy5fdmFvLmRyYXcoci5UUklB TkdMRVMsdGhpcy5fdmVydGV4Q291bnQpLGk9MDtpPDM7KytpKXRoaXMuc3VyZmFjZVByb2pl Y3RbaV0mJnRoaXMudmVydGV4Q291bnQmJih0aGlzLl9zaGFkZXIudW5pZm9ybXMubW9kZWw9 dS5wcm9qZWN0aW9uc1tpXSx0aGlzLl9zaGFkZXIudW5pZm9ybXMuY2xpcEJvdW5kcz11LmNs aXBCb3VuZHNbaV0sdGhpcy5fdmFvLmRyYXcoci5UUklBTkdMRVMsdGhpcy5fdmVydGV4Q291 bnQpKTt0aGlzLl92YW8udW5iaW5kKCl9aWYodS5zaG93Q29udG91cil7dmFyIGY9dGhpcy5f Y29udG91clNoYWRlcjtuLmthbWJpZW50PTEsbi5rZGlmZnVzZT0wLG4ua3NwZWN1bGFyPTAs bi5vcGFjaXR5PTEsZi5iaW5kKCksZi51bmlmb3Jtcz1uO3ZhciBoPXRoaXMuX2NvbnRvdXJW QU87Zm9yKGguYmluZCgpLGk9MDtpPDM7KytpKWZvcihmLnVuaWZvcm1zLnBlcm11dGF0aW9u PWtbaV0sci5saW5lV2lkdGgodGhpcy5jb250b3VyV2lkdGhbaV0qdGhpcy5waXhlbFJhdGlv KSxvPTA7bzx0aGlzLmNvbnRvdXJMZXZlbHNbaV0ubGVuZ3RoOysrbylvPT09dGhpcy5oaWdo bGlnaHRMZXZlbFtpXT8oZi51bmlmb3Jtcy5jb250b3VyQ29sb3I9dGhpcy5oaWdobGlnaHRD b2xvcltpXSxmLnVuaWZvcm1zLmNvbnRvdXJUaW50PXRoaXMuaGlnaGxpZ2h0VGludFtpXSk6 MCE9PW8mJm8tMSE9PXRoaXMuaGlnaGxpZ2h0TGV2ZWxbaV18fChmLnVuaWZvcm1zLmNvbnRv dXJDb2xvcj10aGlzLmNvbnRvdXJDb2xvcltpXSxmLnVuaWZvcm1zLmNvbnRvdXJUaW50PXRo aXMuY29udG91clRpbnRbaV0pLHRoaXMuX2NvbnRvdXJDb3VudHNbaV1bb10mJihmLnVuaWZv cm1zLmhlaWdodD10aGlzLmNvbnRvdXJMZXZlbHNbaV1bb10saC5kcmF3KHIuTElORVMsdGhp cy5fY29udG91ckNvdW50c1tpXVtvXSx0aGlzLl9jb250b3VyT2Zmc2V0c1tpXVtvXSkpO2Zv cihpPTA7aTwzOysraSlmb3IoZi51bmlmb3Jtcy5tb2RlbD11LnByb2plY3Rpb25zW2ldLGYu dW5pZm9ybXMuY2xpcEJvdW5kcz11LmNsaXBCb3VuZHNbaV0sbz0wO288MzsrK28paWYodGhp cy5jb250b3VyUHJvamVjdFtpXVtvXSl7Zi51bmlmb3Jtcy5wZXJtdXRhdGlvbj1rW29dLHIu bGluZVdpZHRoKHRoaXMuY29udG91cldpZHRoW29dKnRoaXMucGl4ZWxSYXRpbyk7Zm9yKHZh ciBtPTA7bTx0aGlzLmNvbnRvdXJMZXZlbHNbb10ubGVuZ3RoOysrbSltPT09dGhpcy5oaWdo bGlnaHRMZXZlbFtvXT8oZi51bmlmb3Jtcy5jb250b3VyQ29sb3I9dGhpcy5oaWdobGlnaHRD b2xvcltvXSxmLnVuaWZvcm1zLmNvbnRvdXJUaW50PXRoaXMuaGlnaGxpZ2h0VGludFtvXSk6 MCE9PW0mJm0tMSE9PXRoaXMuaGlnaGxpZ2h0TGV2ZWxbb118fChmLnVuaWZvcm1zLmNvbnRv dXJDb2xvcj10aGlzLmNvbnRvdXJDb2xvcltvXSxmLnVuaWZvcm1zLmNvbnRvdXJUaW50PXRo aXMuY29udG91clRpbnRbb10pLHRoaXMuX2NvbnRvdXJDb3VudHNbb11bbV0mJihmLnVuaWZv cm1zLmhlaWdodD10aGlzLmNvbnRvdXJMZXZlbHNbb11bbV0saC5kcmF3KHIuTElORVMsdGhp cy5fY29udG91ckNvdW50c1tvXVttXSx0aGlzLl9jb250b3VyT2Zmc2V0c1tvXVttXSkpfWZv cihoLnVuYmluZCgpLChoPXRoaXMuX2R5bmFtaWNWQU8pLmJpbmQoKSxpPTA7aTwzOysraSlp ZigwIT09dGhpcy5fZHluYW1pY0NvdW50c1tpXSlmb3IoZi51bmlmb3Jtcy5tb2RlbD1uLm1v ZGVsLGYudW5pZm9ybXMuY2xpcEJvdW5kcz1uLmNsaXBCb3VuZHMsZi51bmlmb3Jtcy5wZXJt dXRhdGlvbj1rW2ldLHIubGluZVdpZHRoKHRoaXMuZHluYW1pY1dpZHRoW2ldKnRoaXMucGl4 ZWxSYXRpbyksZi51bmlmb3Jtcy5jb250b3VyQ29sb3I9dGhpcy5keW5hbWljQ29sb3JbaV0s Zi51bmlmb3Jtcy5jb250b3VyVGludD10aGlzLmR5bmFtaWNUaW50W2ldLGYudW5pZm9ybXMu aGVpZ2h0PXRoaXMuZHluYW1pY0xldmVsW2ldLGguZHJhdyhyLkxJTkVTLHRoaXMuX2R5bmFt aWNDb3VudHNbaV0sdGhpcy5fZHluYW1pY09mZnNldHNbaV0pLG89MDtvPDM7KytvKXRoaXMu Y29udG91clByb2plY3Rbb11baV0mJihmLnVuaWZvcm1zLm1vZGVsPXUucHJvamVjdGlvbnNb b10sZi51bmlmb3Jtcy5jbGlwQm91bmRzPXUuY2xpcEJvdW5kc1tvXSxoLmRyYXcoci5MSU5F Uyx0aGlzLl9keW5hbWljQ291bnRzW2ldLHRoaXMuX2R5bmFtaWNPZmZzZXRzW2ldKSk7aC51 bmJpbmQoKX19Uy5kcmF3PWZ1bmN0aW9uKHQpe3JldHVybiB6LmNhbGwodGhpcyx0LCExKX0s Uy5kcmF3VHJhbnNwYXJlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHouY2FsbCh0aGlzLHQsITAp fTt2YXIgRD17bW9kZWw6dyx2aWV3OncscHJvamVjdGlvbjp3LGludmVyc2VNb2RlbDp3LGNs aXBCb3VuZHM6W1swLDAsMF0sWzAsMCwwXV0saGVpZ2h0OjAsc2hhcGU6WzAsMF0scGlja0lk OjAsbG93ZXJCb3VuZDpbMCwwLDBdLHVwcGVyQm91bmQ6WzAsMCwwXSx6T2Zmc2V0OjAsb2Jq ZWN0T2Zmc2V0OlswLDAsMF0scGVybXV0YXRpb246WzEsMCwwLDAsMSwwLDAsMCwxXSxsaWdo dFBvc2l0aW9uOlswLDAsMF0sZXllUG9zaXRpb246WzAsMCwwXX07ZnVuY3Rpb24gUih0LGUp e3JldHVybiBBcnJheS5pc0FycmF5KHQpP1tlKHRbMF0pLGUodFsxXSksZSh0WzJdKV06W2Uo dCksZSh0KSxlKHQpXX1mdW5jdGlvbiBGKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpPzM9 PT10Lmxlbmd0aD9bdFswXSx0WzFdLHRbMl0sMV06W3RbMF0sdFsxXSx0WzJdLHRbM11dOlsw LDAsMCwxXX1mdW5jdGlvbiBCKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpe2lmKEFycmF5Lmlz QXJyYXkodCkpcmV0dXJuW0YodFswXSksRih0WzFdKSxGKHRbMl0pXTt2YXIgZT1GKHQpO3Jl dHVybltlLnNsaWNlKCksZS5zbGljZSgpLGUuc2xpY2UoKV19fVMuZHJhd1BpY2s9ZnVuY3Rp b24odCl7dD10fHx7fTt2YXIgZT10aGlzLmdsO2UuZGlzYWJsZShlLkNVTExfRkFDRSk7dmFy IHI9RDtyLm1vZGVsPXQubW9kZWx8fHcsci52aWV3PXQudmlld3x8dyxyLnByb2plY3Rpb249 dC5wcm9qZWN0aW9ufHx3LHIuc2hhcGU9dGhpcy5fZmllbGRbMl0uc2hhcGUsci5waWNrSWQ9 dGhpcy5waWNrSWQvMjU1LHIubG93ZXJCb3VuZD10aGlzLmJvdW5kc1swXSxyLnVwcGVyQm91 bmQ9dGhpcy5ib3VuZHNbMV0sci5vYmplY3RPZmZzZXQ9dGhpcy5vYmplY3RPZmZzZXQsci5w ZXJtdXRhdGlvbj1PO2Zvcih2YXIgbj0wO248MjsrK24pZm9yKHZhciBpPXIuY2xpcEJvdW5k c1tuXSxhPTA7YTwzOysrYSlpW2FdPU1hdGgubWluKE1hdGgubWF4KHRoaXMuY2xpcEJvdW5k c1tuXVthXSwtMWU4KSwxZTgpO3ZhciBvPUMocix0aGlzKTtpZihvLnNob3dTdXJmYWNlKXtm b3IodGhpcy5fcGlja1NoYWRlci5iaW5kKCksdGhpcy5fcGlja1NoYWRlci51bmlmb3Jtcz1y LHRoaXMuX3Zhby5iaW5kKCksdGhpcy5fdmFvLmRyYXcoZS5UUklBTkdMRVMsdGhpcy5fdmVy dGV4Q291bnQpLG49MDtuPDM7KytuKXRoaXMuc3VyZmFjZVByb2plY3Rbbl0mJih0aGlzLl9w aWNrU2hhZGVyLnVuaWZvcm1zLm1vZGVsPW8ucHJvamVjdGlvbnNbbl0sdGhpcy5fcGlja1No YWRlci51bmlmb3Jtcy5jbGlwQm91bmRzPW8uY2xpcEJvdW5kc1tuXSx0aGlzLl92YW8uZHJh dyhlLlRSSUFOR0xFUyx0aGlzLl92ZXJ0ZXhDb3VudCkpO3RoaXMuX3Zhby51bmJpbmQoKX1p ZihvLnNob3dDb250b3VyKXt2YXIgcz10aGlzLl9jb250b3VyUGlja1NoYWRlcjtzLmJpbmQo KSxzLnVuaWZvcm1zPXI7dmFyIGw9dGhpcy5fY29udG91clZBTztmb3IobC5iaW5kKCksYT0w O2E8MzsrK2EpZm9yKGUubGluZVdpZHRoKHRoaXMuY29udG91cldpZHRoW2FdKnRoaXMucGl4 ZWxSYXRpbykscy51bmlmb3Jtcy5wZXJtdXRhdGlvbj1rW2FdLG49MDtuPHRoaXMuY29udG91 ckxldmVsc1thXS5sZW5ndGg7KytuKXRoaXMuX2NvbnRvdXJDb3VudHNbYV1bbl0mJihzLnVu aWZvcm1zLmhlaWdodD10aGlzLmNvbnRvdXJMZXZlbHNbYV1bbl0sbC5kcmF3KGUuTElORVMs dGhpcy5fY29udG91ckNvdW50c1thXVtuXSx0aGlzLl9jb250b3VyT2Zmc2V0c1thXVtuXSkp O2ZvcihuPTA7bjwzOysrbilmb3Iocy51bmlmb3Jtcy5tb2RlbD1vLnByb2plY3Rpb25zW25d LHMudW5pZm9ybXMuY2xpcEJvdW5kcz1vLmNsaXBCb3VuZHNbbl0sYT0wO2E8MzsrK2EpaWYo dGhpcy5jb250b3VyUHJvamVjdFtuXVthXSl7cy51bmlmb3Jtcy5wZXJtdXRhdGlvbj1rW2Fd LGUubGluZVdpZHRoKHRoaXMuY29udG91cldpZHRoW2FdKnRoaXMucGl4ZWxSYXRpbyk7Zm9y KHZhciBjPTA7Yzx0aGlzLmNvbnRvdXJMZXZlbHNbYV0ubGVuZ3RoOysrYyl0aGlzLl9jb250 b3VyQ291bnRzW2FdW2NdJiYocy51bmlmb3Jtcy5oZWlnaHQ9dGhpcy5jb250b3VyTGV2ZWxz W2FdW2NdLGwuZHJhdyhlLkxJTkVTLHRoaXMuX2NvbnRvdXJDb3VudHNbYV1bY10sdGhpcy5f Y29udG91ck9mZnNldHNbYV1bY10pKX1sLnVuYmluZCgpfX0sUy5waWNrPWZ1bmN0aW9uKHQp e2lmKCF0KXJldHVybiBudWxsO2lmKHQuaWQhPT10aGlzLnBpY2tJZClyZXR1cm4gbnVsbDt2 YXIgZT10aGlzLl9maWVsZFsyXS5zaGFwZSxyPXRoaXMuX3BpY2tSZXN1bHQsbj1lWzBdKih0 LnZhbHVlWzBdKyh0LnZhbHVlWzJdPj40KS8xNikvMjU1LGk9TWF0aC5mbG9vcihuKSxhPW4t aSxvPWVbMV0qKHQudmFsdWVbMV0rKDE1JnQudmFsdWVbMl0pLzE2KS8yNTUscz1NYXRoLmZs b29yKG8pLGw9by1zO2krPTEscys9MTt2YXIgYz1yLnBvc2l0aW9uO2NbMF09Y1sxXT1jWzJd PTA7Zm9yKHZhciB1PTA7dTwyOysrdSlmb3IodmFyIGY9dT9hOjEtYSxoPTA7aDwyOysraClm b3IodmFyIHA9aSt1LGQ9cytoLGc9ZiooaD9sOjEtbCksdj0wO3Y8MzsrK3YpY1t2XSs9dGhp cy5fZmllbGRbdl0uZ2V0KHAsZCkqZztmb3IodmFyIHk9dGhpcy5fcGlja1Jlc3VsdC5sZXZl bCx4PTA7eDwzOysreClpZih5W3hdPW0ubGUodGhpcy5jb250b3VyTGV2ZWxzW3hdLGNbeF0p LHlbeF08MCl0aGlzLmNvbnRvdXJMZXZlbHNbeF0ubGVuZ3RoPjAmJih5W3hdPTApO2Vsc2Ug aWYoeVt4XTx0aGlzLmNvbnRvdXJMZXZlbHNbeF0ubGVuZ3RoLTEpe3ZhciBiPXRoaXMuY29u dG91ckxldmVsc1t4XVt5W3hdXSxfPXRoaXMuY29udG91ckxldmVsc1t4XVt5W3hdKzFdO01h dGguYWJzKGItY1t4XSk+TWF0aC5hYnMoXy1jW3hdKSYmKHlbeF0rPTEpfWZvcihyLmluZGV4 WzBdPWE8LjU/aTppKzEsci5pbmRleFsxXT1sPC41P3M6cysxLHIudXZbMF09bi9lWzBdLHIu dXZbMV09by9lWzFdLHY9MDt2PDM7Kyt2KXIuZGF0YUNvb3JkaW5hdGVbdl09dGhpcy5fZmll bGRbdl0uZ2V0KHIuaW5kZXhbMF0sci5pbmRleFsxXSk7cmV0dXJuIHJ9LFMucGFkRmllbGQ9 ZnVuY3Rpb24odCxlKXt2YXIgcj1lLnNoYXBlLnNsaWNlKCksbj10LnNoYXBlLnNsaWNlKCk7 Yy5hc3NpZ24odC5sbygxLDEpLmhpKHJbMF0sclsxXSksZSksYy5hc3NpZ24odC5sbygxKS5o aShyWzBdLDEpLGUuaGkoclswXSwxKSksYy5hc3NpZ24odC5sbygxLG5bMV0tMSkuaGkoclsw XSwxKSxlLmxvKDAsclsxXS0xKS5oaShyWzBdLDEpKSxjLmFzc2lnbih0LmxvKDAsMSkuaGko MSxyWzFdKSxlLmhpKDEpKSxjLmFzc2lnbih0LmxvKG5bMF0tMSwxKS5oaSgxLHJbMV0pLGUu bG8oclswXS0xKSksdC5zZXQoMCwwLGUuZ2V0KDAsMCkpLHQuc2V0KDAsblsxXS0xLGUuZ2V0 KDAsclsxXS0xKSksdC5zZXQoblswXS0xLDAsZS5nZXQoclswXS0xLDApKSx0LnNldChuWzBd LTEsblsxXS0xLGUuZ2V0KHJbMF0tMSxyWzFdLTEpKX0sUy51cGRhdGU9ZnVuY3Rpb24odCl7 dD10fHx7fSx0aGlzLm9iamVjdE9mZnNldD10Lm9iamVjdE9mZnNldHx8dGhpcy5vYmplY3RP ZmZzZXQsdGhpcy5kaXJ0eT0hMCwiY29udG91cldpZHRoImluIHQmJih0aGlzLmNvbnRvdXJX aWR0aD1SKHQuY29udG91cldpZHRoLE51bWJlcikpLCJzaG93Q29udG91ciJpbiB0JiYodGhp cy5zaG93Q29udG91cj1SKHQuc2hvd0NvbnRvdXIsQm9vbGVhbikpLCJzaG93U3VyZmFjZSJp biB0JiYodGhpcy5zaG93U3VyZmFjZT0hIXQuc2hvd1N1cmZhY2UpLCJjb250b3VyVGludCJp biB0JiYodGhpcy5jb250b3VyVGludD1SKHQuY29udG91clRpbnQsQm9vbGVhbikpLCJjb250 b3VyQ29sb3IiaW4gdCYmKHRoaXMuY29udG91ckNvbG9yPUIodC5jb250b3VyQ29sb3IpKSwi Y29udG91clByb2plY3QiaW4gdCYmKHRoaXMuY29udG91clByb2plY3Q9Uih0LmNvbnRvdXJQ cm9qZWN0LChmdW5jdGlvbih0KXtyZXR1cm4gUih0LEJvb2xlYW4pfSkpKSwic3VyZmFjZVBy b2plY3QiaW4gdCYmKHRoaXMuc3VyZmFjZVByb2plY3Q9dC5zdXJmYWNlUHJvamVjdCksImR5 bmFtaWNDb2xvciJpbiB0JiYodGhpcy5keW5hbWljQ29sb3I9Qih0LmR5bmFtaWNDb2xvcikp LCJkeW5hbWljVGludCJpbiB0JiYodGhpcy5keW5hbWljVGludD1SKHQuZHluYW1pY1RpbnQs TnVtYmVyKSksImR5bmFtaWNXaWR0aCJpbiB0JiYodGhpcy5keW5hbWljV2lkdGg9Uih0LmR5 bmFtaWNXaWR0aCxOdW1iZXIpKSwib3BhY2l0eSJpbiB0JiYodGhpcy5vcGFjaXR5PXQub3Bh Y2l0eSksIm9wYWNpdHlzY2FsZSJpbiB0JiYodGhpcy5vcGFjaXR5c2NhbGU9dC5vcGFjaXR5 c2NhbGUpLCJjb2xvckJvdW5kcyJpbiB0JiYodGhpcy5jb2xvckJvdW5kcz10LmNvbG9yQm91 bmRzKSwidmVydGV4Q29sb3IiaW4gdCYmKHRoaXMudmVydGV4Q29sb3I9dC52ZXJ0ZXhDb2xv cj8xOjApLCJjb2xvcm1hcCJpbiB0JiZ0aGlzLl9jb2xvck1hcC5zZXRQaXhlbHModGhpcy5n ZW5Db2xvcm1hcCh0LmNvbG9ybWFwLHRoaXMub3BhY2l0eXNjYWxlKSk7dmFyIGU9dC5maWVs ZHx8dC5jb29yZHMmJnQuY29vcmRzWzJdfHxudWxsLHI9ITE7aWYoZXx8KGU9dGhpcy5fZmll bGRbMl0uc2hhcGVbMF18fHRoaXMuX2ZpZWxkWzJdLnNoYXBlWzJdP3RoaXMuX2ZpZWxkWzJd LmxvKDEsMSkuaGkodGhpcy5fZmllbGRbMl0uc2hhcGVbMF0tMix0aGlzLl9maWVsZFsyXS5z aGFwZVsxXS0yKTp0aGlzLl9maWVsZFsyXS5oaSgwLDApKSwiZmllbGQiaW4gdHx8ImNvb3Jk cyJpbiB0KXt2YXIgaT0oZS5zaGFwZVswXSsyKSooZS5zaGFwZVsxXSsyKTtpPnRoaXMuX2Zp ZWxkWzJdLmRhdGEubGVuZ3RoJiYocy5mcmVlRmxvYXQodGhpcy5fZmllbGRbMl0uZGF0YSks dGhpcy5fZmllbGRbMl0uZGF0YT1zLm1hbGxvY0Zsb2F0KG4ubmV4dFBvdzIoaSkpKSx0aGlz Ll9maWVsZFsyXT1mKHRoaXMuX2ZpZWxkWzJdLmRhdGEsW2Uuc2hhcGVbMF0rMixlLnNoYXBl WzFdKzJdKSx0aGlzLnBhZEZpZWxkKHRoaXMuX2ZpZWxkWzJdLGUpLHRoaXMuc2hhcGU9ZS5z aGFwZS5zbGljZSgpO2Zvcih2YXIgYT10aGlzLnNoYXBlLG89MDtvPDI7KytvKXRoaXMuX2Zp ZWxkWzJdLnNpemU+dGhpcy5fZmllbGRbb10uZGF0YS5sZW5ndGgmJihzLmZyZWVGbG9hdCh0 aGlzLl9maWVsZFtvXS5kYXRhKSx0aGlzLl9maWVsZFtvXS5kYXRhPXMubWFsbG9jRmxvYXQo dGhpcy5fZmllbGRbMl0uc2l6ZSkpLHRoaXMuX2ZpZWxkW29dPWYodGhpcy5fZmllbGRbb10u ZGF0YSxbYVswXSsyLGFbMV0rMl0pO2lmKHQuY29vcmRzKXt2YXIgbD10LmNvb3JkcztpZigh QXJyYXkuaXNBcnJheShsKXx8MyE9PWwubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiZ2wtc3Vy ZmFjZTogaW52YWxpZCBjb29yZGluYXRlcyBmb3IgeC95Iik7Zm9yKG89MDtvPDI7KytvKXt2 YXIgYz1sW29dO2Zvcih2PTA7djwyOysrdilpZihjLnNoYXBlW3ZdIT09YVt2XSl0aHJvdyBu ZXcgRXJyb3IoImdsLXN1cmZhY2U6IGNvb3JkcyBoYXZlIGluY29ycmVjdCBzaGFwZSIpO3Ro aXMucGFkRmllbGQodGhpcy5fZmllbGRbb10sYyl9fWVsc2UgaWYodC50aWNrcyl7dmFyIHU9 dC50aWNrcztpZighQXJyYXkuaXNBcnJheSh1KXx8MiE9PXUubGVuZ3RoKXRocm93IG5ldyBF cnJvcigiZ2wtc3VyZmFjZTogaW52YWxpZCB0aWNrcyIpO2ZvcihvPTA7bzwyOysrbyl7dmFy IHA9dVtvXTtpZigoQXJyYXkuaXNBcnJheShwKXx8cC5sZW5ndGgpJiYocD1mKHApKSxwLnNo YXBlWzBdIT09YVtvXSl0aHJvdyBuZXcgRXJyb3IoImdsLXN1cmZhY2U6IGludmFsaWQgdGlj ayBsZW5ndGgiKTt2YXIgZD1mKHAuZGF0YSxhKTtkLnN0cmlkZVtvXT1wLnN0cmlkZVswXSxk LnN0cmlkZVsxXm9dPTAsdGhpcy5wYWRGaWVsZCh0aGlzLl9maWVsZFtvXSxkKX19ZWxzZXtm b3Iobz0wO288MjsrK28pe3ZhciBtPVswLDBdO21bb109MSx0aGlzLl9maWVsZFtvXT1mKHRo aXMuX2ZpZWxkW29dLmRhdGEsW2FbMF0rMixhWzFdKzJdLG0sMCl9dGhpcy5fZmllbGRbMF0u c2V0KDAsMCwwKTtmb3IodmFyIHY9MDt2PGFbMF07Kyt2KXRoaXMuX2ZpZWxkWzBdLnNldCh2 KzEsMCx2KTtmb3IodGhpcy5fZmllbGRbMF0uc2V0KGFbMF0rMSwwLGFbMF0tMSksdGhpcy5f ZmllbGRbMV0uc2V0KDAsMCwwKSx2PTA7djxhWzFdOysrdil0aGlzLl9maWVsZFsxXS5zZXQo MCx2KzEsdik7dGhpcy5fZmllbGRbMV0uc2V0KDAsYVsxXSsxLGFbMV0tMSl9dmFyIHk9dGhp cy5fZmllbGQseD1mKHMubWFsbG9jRmxvYXQoMyp5WzJdLnNpemUqMiksWzMsYVswXSsyLGFb MV0rMiwyXSk7Zm9yKG89MDtvPDM7KytvKWcoeC5waWNrKG8pLHlbb10sIm1pcnJvciIpO3Zh ciBiPWYocy5tYWxsb2NGbG9hdCgzKnlbMl0uc2l6ZSksW2FbMF0rMixhWzFdKzIsM10pO2Zv cihvPTA7bzxhWzBdKzI7KytvKWZvcih2PTA7djxhWzFdKzI7Kyt2KXt2YXIgXz14LmdldCgw LG8sdiwwKSx3PXguZ2V0KDAsbyx2LDEpLGs9eC5nZXQoMSxvLHYsMCksQT14LmdldCgxLG8s diwxKSxNPXguZ2V0KDIsbyx2LDApLFM9eC5nZXQoMixvLHYsMSksRT1rKlMtQSpNLEw9TSp3 LVMqXyxDPV8qQS13KmssUD1NYXRoLnNxcnQoRSpFK0wqTCtDKkMpO1A8MWUtOD8oUD1NYXRo Lm1heChNYXRoLmFicyhFKSxNYXRoLmFicyhMKSxNYXRoLmFicyhDKSkpPDFlLTg/KEM9MSxM PUU9MCxQPTEpOlA9MS9QOlA9MS9NYXRoLnNxcnQoUCksYi5zZXQobyx2LDAsRSpQKSxiLnNl dChvLHYsMSxMKlApLGIuc2V0KG8sdiwyLEMqUCl9cy5mcmVlKHguZGF0YSk7dmFyIEk9WzEv MCwxLzAsMS8wXSxPPVstMS8wLC0xLzAsLTEvMF0sej0xLzAsRD0tMS8wLEY9KGFbMF0tMSkq KGFbMV0tMSkqNixOPXMubWFsbG9jRmxvYXQobi5uZXh0UG93MigxMCpGKSksaj0wLFU9MDtm b3Iobz0wO288YVswXS0xOysrbyl0OmZvcih2PTA7djxhWzFdLTE7Kyt2KXtmb3IodmFyIFY9 MDtWPDI7KytWKWZvcih2YXIgSD0wO0g8MjsrK0gpZm9yKHZhciBxPTA7cTwzOysrcSl7dmFy IEc9dGhpcy5fZmllbGRbcV0uZ2V0KDErbytWLDErditIKTtpZihpc05hTihHKXx8IWlzRmlu aXRlKEcpKWNvbnRpbnVlIHR9Zm9yKHE9MDtxPDY7KytxKXt2YXIgWT1vK1RbcV1bMF0sVz12 K1RbcV1bMV0sWD10aGlzLl9maWVsZFswXS5nZXQoWSsxLFcrMSksWj10aGlzLl9maWVsZFsx XS5nZXQoWSsxLFcrMSk7Rz10aGlzLl9maWVsZFsyXS5nZXQoWSsxLFcrMSksRT1iLmdldChZ KzEsVysxLDApLEw9Yi5nZXQoWSsxLFcrMSwxKSxDPWIuZ2V0KFkrMSxXKzEsMiksdC5pbnRl bnNpdHkmJihKPXQuaW50ZW5zaXR5LmdldChZLFcpKTt2YXIgSj10LmludGVuc2l0eT90Lmlu dGVuc2l0eS5nZXQoWSxXKTpHK3RoaXMub2JqZWN0T2Zmc2V0WzJdO05baisrXT1ZLE5baisr XT1XLE5baisrXT1YLE5baisrXT1aLE5baisrXT1HLE5baisrXT0wLE5baisrXT1KLE5baisr XT1FLE5baisrXT1MLE5baisrXT1DLElbMF09TWF0aC5taW4oSVswXSxYK3RoaXMub2JqZWN0 T2Zmc2V0WzBdKSxJWzFdPU1hdGgubWluKElbMV0sWit0aGlzLm9iamVjdE9mZnNldFsxXSks SVsyXT1NYXRoLm1pbihJWzJdLEcrdGhpcy5vYmplY3RPZmZzZXRbMl0pLHo9TWF0aC5taW4o eixKKSxPWzBdPU1hdGgubWF4KE9bMF0sWCt0aGlzLm9iamVjdE9mZnNldFswXSksT1sxXT1N YXRoLm1heChPWzFdLFordGhpcy5vYmplY3RPZmZzZXRbMV0pLE9bMl09TWF0aC5tYXgoT1sy XSxHK3RoaXMub2JqZWN0T2Zmc2V0WzJdKSxEPU1hdGgubWF4KEQsSiksVSs9MX19Zm9yKHQu aW50ZW5zaXR5Qm91bmRzJiYoej0rdC5pbnRlbnNpdHlCb3VuZHNbMF0sRD0rdC5pbnRlbnNp dHlCb3VuZHNbMV0pLG89NjtvPGo7bys9MTApTltvXT0oTltvXS16KS8oRC16KTt0aGlzLl92 ZXJ0ZXhDb3VudD1VLHRoaXMuX2Nvb3JkaW5hdGVCdWZmZXIudXBkYXRlKE4uc3ViYXJyYXko MCxqKSkscy5mcmVlRmxvYXQoTikscy5mcmVlKGIuZGF0YSksdGhpcy5ib3VuZHM9W0ksT10s dGhpcy5pbnRlbnNpdHk9dC5pbnRlbnNpdHl8fHRoaXMuX2ZpZWxkWzJdLHRoaXMuaW50ZW5z aXR5Qm91bmRzWzBdPT09eiYmdGhpcy5pbnRlbnNpdHlCb3VuZHNbMV09PT1EfHwocj0hMCks dGhpcy5pbnRlbnNpdHlCb3VuZHM9W3osRF19aWYoImxldmVscyJpbiB0KXt2YXIgSz10Lmxl dmVscztmb3IoSz1BcnJheS5pc0FycmF5KEtbMF0pP0suc2xpY2UoKTpbW10sW10sS10sbz0w O288MzsrK28pS1tvXT1LW29dLnNsaWNlKCksS1tvXS5zb3J0KChmdW5jdGlvbih0LGUpe3Jl dHVybiB0LWV9KSk7Zm9yKG89MDtvPDM7KytvKWZvcih2PTA7djxLW29dLmxlbmd0aDsrK3Yp S1tvXVt2XS09dGhpcy5vYmplY3RPZmZzZXRbb107dDpmb3Iobz0wO288MzsrK28pe2lmKEtb b10ubGVuZ3RoIT09dGhpcy5jb250b3VyTGV2ZWxzW29dLmxlbmd0aCl7cj0hMDticmVha31m b3Iodj0wO3Y8S1tvXS5sZW5ndGg7Kyt2KWlmKEtbb11bdl0hPT10aGlzLmNvbnRvdXJMZXZl bHNbb11bdl0pe3I9ITA7YnJlYWsgdH19dGhpcy5jb250b3VyTGV2ZWxzPUt9aWYocil7eT10 aGlzLl9maWVsZCxhPXRoaXMuc2hhcGU7Zm9yKHZhciBRPVtdLCQ9MDskPDM7KyskKXt2YXIg dHQ9dGhpcy5jb250b3VyTGV2ZWxzWyRdLGV0PVtdLHJ0PVtdLG50PVswLDAsMF07Zm9yKG89 MDtvPHR0Lmxlbmd0aDsrK28pe3ZhciBpdD1oKHRoaXMuX2ZpZWxkWyRdLHR0W29dKTtldC5w dXNoKFEubGVuZ3RoLzV8MCksVT0wO3Q6Zm9yKHY9MDt2PGl0LmNlbGxzLmxlbmd0aDsrK3Yp e3ZhciBhdD1pdC5jZWxsc1t2XTtmb3IocT0wO3E8MjsrK3Epe3ZhciBvdD1pdC5wb3NpdGlv bnNbYXRbcV1dLHN0PW90WzBdLGx0PTB8TWF0aC5mbG9vcihzdCksY3Q9c3QtbHQsdXQ9b3Rb MV0sZnQ9MHxNYXRoLmZsb29yKHV0KSxodD11dC1mdCxwdD0hMTtlOmZvcih2YXIgZHQ9MDtk dDwzOysrZHQpe250W2R0XT0wO3ZhciBtdD0oJCtkdCsxKSUzO2ZvcihWPTA7VjwyOysrVil7 dmFyIGd0PVY/Y3Q6MS1jdDtmb3IoWT0wfE1hdGgubWluKE1hdGgubWF4KGx0K1YsMCksYVsw XSksSD0wO0g8MjsrK0gpe3ZhciB2dD1IP2h0OjEtaHQ7aWYoVz0wfE1hdGgubWluKE1hdGgu bWF4KGZ0K0gsMCksYVsxXSksRz1kdDwyP3RoaXMuX2ZpZWxkW210XS5nZXQoWSxXKToodGhp cy5pbnRlbnNpdHkuZ2V0KFksVyktdGhpcy5pbnRlbnNpdHlCb3VuZHNbMF0pLyh0aGlzLmlu dGVuc2l0eUJvdW5kc1sxXS10aGlzLmludGVuc2l0eUJvdW5kc1swXSksIWlzRmluaXRlKEcp fHxpc05hTihHKSl7cHQ9ITA7YnJlYWsgZX12YXIgeXQ9Z3QqdnQ7bnRbZHRdKz15dCpHfX19 aWYocHQpe2lmKHE+MCl7Zm9yKHZhciB4dD0wO3h0PDU7Kyt4dClRLnBvcCgpO1UtPTF9Y29u dGludWUgdH1RLnB1c2gobnRbMF0sbnRbMV0sb3RbMF0sb3RbMV0sbnRbMl0pLFUrPTF9fXJ0 LnB1c2goVSl9dGhpcy5fY29udG91ck9mZnNldHNbJF09ZXQsdGhpcy5fY29udG91ckNvdW50 c1skXT1ydH12YXIgYnQ9cy5tYWxsb2NGbG9hdChRLmxlbmd0aCk7Zm9yKG89MDtvPFEubGVu Z3RoOysrbylidFtvXT1RW29dO3RoaXMuX2NvbnRvdXJCdWZmZXIudXBkYXRlKGJ0KSxzLmZy ZWVGbG9hdChidCl9fSxTLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLl9zaGFkZXIuZGlzcG9z ZSgpLHRoaXMuX3Zhby5kaXNwb3NlKCksdGhpcy5fY29vcmRpbmF0ZUJ1ZmZlci5kaXNwb3Nl KCksdGhpcy5fY29sb3JNYXAuZGlzcG9zZSgpLHRoaXMuX2NvbnRvdXJCdWZmZXIuZGlzcG9z ZSgpLHRoaXMuX2NvbnRvdXJWQU8uZGlzcG9zZSgpLHRoaXMuX2NvbnRvdXJTaGFkZXIuZGlz cG9zZSgpLHRoaXMuX2NvbnRvdXJQaWNrU2hhZGVyLmRpc3Bvc2UoKSx0aGlzLl9keW5hbWlj QnVmZmVyLmRpc3Bvc2UoKSx0aGlzLl9keW5hbWljVkFPLmRpc3Bvc2UoKTtmb3IodmFyIHQ9 MDt0PDM7Kyt0KXMuZnJlZUZsb2F0KHRoaXMuX2ZpZWxkW3RdLmRhdGEpfSxTLmhpZ2hsaWdo dD1mdW5jdGlvbih0KXt2YXIgZSxyO2lmKCF0KXJldHVybiB0aGlzLl9keW5hbWljQ291bnRz PVswLDAsMF0sdGhpcy5keWFuYW1pY0xldmVsPVtOYU4sTmFOLE5hTl0sdm9pZCh0aGlzLmhp Z2hsaWdodExldmVsPVstMSwtMSwtMV0pO2ZvcihlPTA7ZTwzOysrZSl0aGlzLmVuYWJsZUhp Z2hsaWdodFtlXT90aGlzLmhpZ2hsaWdodExldmVsW2VdPXQubGV2ZWxbZV06dGhpcy5oaWdo bGlnaHRMZXZlbFtlXT0tMTtmb3Iocj10aGlzLnNuYXBUb0RhdGE/dC5kYXRhQ29vcmRpbmF0 ZTp0LnBvc2l0aW9uLGU9MDtlPDM7KytlKXJbZV0tPXRoaXMub2JqZWN0T2Zmc2V0W2VdO2lm KHRoaXMuZW5hYmxlRHluYW1pY1swXSYmclswXSE9PXRoaXMuZHluYW1pY0xldmVsWzBdfHx0 aGlzLmVuYWJsZUR5bmFtaWNbMV0mJnJbMV0hPT10aGlzLmR5bmFtaWNMZXZlbFsxXXx8dGhp cy5lbmFibGVEeW5hbWljWzJdJiZyWzJdIT09dGhpcy5keW5hbWljTGV2ZWxbMl0pe2Zvcih2 YXIgbj0wLGk9dGhpcy5zaGFwZSxhPXMubWFsbG9jRmxvYXQoMTIqaVswXSppWzFdKSxvPTA7 bzwzOysrbylpZih0aGlzLmVuYWJsZUR5bmFtaWNbb10pe3RoaXMuZHluYW1pY0xldmVsW29d PXJbb107dmFyIGw9KG8rMSklMyxjPShvKzIpJTMsdT10aGlzLl9maWVsZFtvXSxmPXRoaXMu X2ZpZWxkW2xdLHA9dGhpcy5fZmllbGRbY10sZD1oKHUscltvXSksbT1kLmNlbGxzLGc9ZC5w b3NpdGlvbnM7Zm9yKHRoaXMuX2R5bmFtaWNPZmZzZXRzW29dPW4sZT0wO2U8bS5sZW5ndGg7 KytlKWZvcih2YXIgdj1tW2VdLHk9MDt5PDI7Kyt5KXt2YXIgeD1nW3ZbeV1dLGI9K3hbMF0s Xz0wfGIsdz0wfE1hdGgubWluKF8rMSxpWzBdKSxUPWItXyxrPTEtVCxBPSt4WzFdLE09MHxB LFM9MHxNYXRoLm1pbihNKzEsaVsxXSksRT1BLU0sTD0xLUUsQz1rKkwsUD1rKkUsST1UKkws Tz1UKkUsej1DKmYuZ2V0KF8sTSkrUCpmLmdldChfLFMpK0kqZi5nZXQodyxNKStPKmYuZ2V0 KHcsUyksRD1DKnAuZ2V0KF8sTSkrUCpwLmdldChfLFMpK0kqcC5nZXQodyxNKStPKnAuZ2V0 KHcsUyk7aWYoaXNOYU4oeil8fGlzTmFOKEQpKXt5JiYobi09MSk7YnJlYWt9YVsyKm4rMF09 eixhWzIqbisxXT1ELG4rPTF9dGhpcy5fZHluYW1pY0NvdW50c1tvXT1uLXRoaXMuX2R5bmFt aWNPZmZzZXRzW29dfWVsc2UgdGhpcy5keW5hbWljTGV2ZWxbb109TmFOLHRoaXMuX2R5bmFt aWNDb3VudHNbb109MDt0aGlzLl9keW5hbWljQnVmZmVyLnVwZGF0ZShhLnN1YmFycmF5KDAs MipuKSkscy5mcmVlRmxvYXQoYSl9fX0seyIuL2xpYi9zaGFkZXJzIjoxNDQsImJpbmFyeS1z ZWFyY2gtYm91bmRzIjozMSwiYml0LXR3aWRkbGUiOjMyLGNvbG9ybWFwOjUzLCJnbC1idWZm ZXIiOjc4LCJnbC1tYXQ0L2ludmVydCI6OTgsImdsLW1hdDQvbXVsdGlwbHkiOjEwMCwiZ2wt dGV4dHVyZTJkIjoxNDYsImdsLXZhbyI6MTUwLG5kYXJyYXk6MjU5LCJuZGFycmF5LWdyYWRp ZW50IjoyNTIsIm5kYXJyYXktb3BzIjoyNTQsIm5kYXJyYXktcGFjayI6MjU1LCJzdXJmYWNl LW5ldHMiOjMwMiwidHlwZWRhcnJheS1wb29sIjozMDh9XSwxNDY6W2Z1bmN0aW9uKHQsZSxy KXsidXNlIHN0cmljdCI7dmFyIG49dCgibmRhcnJheSIpLGk9dCgibmRhcnJheS1vcHMiKSxh PXQoInR5cGVkYXJyYXktcG9vbCIpO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtpZihhcmd1bWVu dHMubGVuZ3RoPD0xKXRocm93IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJkOiBNaXNzaW5nIGFy Z3VtZW50cyBmb3IgdGV4dHVyZTJkIGNvbnN0cnVjdG9yIik7b3x8Yyh0KTtpZigibnVtYmVy Ij09dHlwZW9mIGFyZ3VtZW50c1sxXSlyZXR1cm4gdih0LGFyZ3VtZW50c1sxXSxhcmd1bWVu dHNbMl0sYXJndW1lbnRzWzNdfHx0LlJHQkEsYXJndW1lbnRzWzRdfHx0LlVOU0lHTkVEX0JZ VEUpO2lmKEFycmF5LmlzQXJyYXkoYXJndW1lbnRzWzFdKSlyZXR1cm4gdih0LDB8YXJndW1l bnRzWzFdWzBdLDB8YXJndW1lbnRzWzFdWzFdLGFyZ3VtZW50c1syXXx8dC5SR0JBLGFyZ3Vt ZW50c1szXXx8dC5VTlNJR05FRF9CWVRFKTtpZigib2JqZWN0Ij09dHlwZW9mIGFyZ3VtZW50 c1sxXSl7dmFyIGU9YXJndW1lbnRzWzFdLHI9dShlKT9lOmUucmF3O2lmKHIpcmV0dXJuIHko dCxyLDB8ZS53aWR0aCwwfGUuaGVpZ2h0LGFyZ3VtZW50c1syXXx8dC5SR0JBLGFyZ3VtZW50 c1szXXx8dC5VTlNJR05FRF9CWVRFKTtpZihlLnNoYXBlJiZlLmRhdGEmJmUuc3RyaWRlKXJl dHVybiB4KHQsZSl9dGhyb3cgbmV3IEVycm9yKCJnbC10ZXh0dXJlMmQ6IEludmFsaWQgYXJn dW1lbnRzIGZvciB0ZXh0dXJlMmQgY29uc3RydWN0b3IiKX07dmFyIG89bnVsbCxzPW51bGws bD1udWxsO2Z1bmN0aW9uIGModCl7bz1bdC5MSU5FQVIsdC5ORUFSRVNUX01JUE1BUF9MSU5F QVIsdC5MSU5FQVJfTUlQTUFQX05FQVJFU1QsdC5MSU5FQVJfTUlQTUFQX05FQVJFU1RdLHM9 W3QuTkVBUkVTVCx0LkxJTkVBUix0Lk5FQVJFU1RfTUlQTUFQX05FQVJFU1QsdC5ORUFSRVNU X01JUE1BUF9MSU5FQVIsdC5MSU5FQVJfTUlQTUFQX05FQVJFU1QsdC5MSU5FQVJfTUlQTUFQ X0xJTkVBUl0sbD1bdC5SRVBFQVQsdC5DTEFNUF9UT19FREdFLHQuTUlSUk9SRURfUkVQRUFU XX1mdW5jdGlvbiB1KHQpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgSFRNTENhbnZhc0Vs ZW1lbnQmJnQgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5 cGVvZiBIVE1MSW1hZ2VFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudHx8 InVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MVmlkZW9FbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRN TFZpZGVvRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5cGVvZiBJbWFnZURhdGEmJnQgaW5zdGFu Y2VvZiBJbWFnZURhdGF9dmFyIGY9ZnVuY3Rpb24odCxlKXtpLm11bHModCxlLDI1NSl9O2Z1 bmN0aW9uIGgodCxlLHIpe3ZhciBuPXQuZ2wsaT1uLmdldFBhcmFtZXRlcihuLk1BWF9URVhU VVJFX1NJWkUpO2lmKGU8MHx8ZT5pfHxyPDB8fHI+aSl0aHJvdyBuZXcgRXJyb3IoImdsLXRl eHR1cmUyZDogSW52YWxpZCB0ZXh0dXJlIHNpemUiKTtyZXR1cm4gdC5fc2hhcGU9W2Uscl0s dC5iaW5kKCksbi50ZXhJbWFnZTJEKG4uVEVYVFVSRV8yRCwwLHQuZm9ybWF0LGUsciwwLHQu Zm9ybWF0LHQudHlwZSxudWxsKSx0Ll9taXBMZXZlbHM9WzBdLHR9ZnVuY3Rpb24gcCh0LGUs cixuLGksYSl7dGhpcy5nbD10LHRoaXMuaGFuZGxlPWUsdGhpcy5mb3JtYXQ9aSx0aGlzLnR5 cGU9YSx0aGlzLl9zaGFwZT1bcixuXSx0aGlzLl9taXBMZXZlbHM9WzBdLHRoaXMuX21hZ0Zp bHRlcj10Lk5FQVJFU1QsdGhpcy5fbWluRmlsdGVyPXQuTkVBUkVTVCx0aGlzLl93cmFwUz10 LkNMQU1QX1RPX0VER0UsdGhpcy5fd3JhcFQ9dC5DTEFNUF9UT19FREdFLHRoaXMuX2FuaXNv U2FtcGxlcz0xO3ZhciBvPXRoaXMscz1bdGhpcy5fd3JhcFMsdGhpcy5fd3JhcFRdO09iamVj dC5kZWZpbmVQcm9wZXJ0aWVzKHMsW3tnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5fd3JhcFN9 LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gby53cmFwUz10fX0se2dldDpmdW5jdGlvbigpe3Jl dHVybiBvLl93cmFwVH0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBvLndyYXBUPXR9fV0pLHRo aXMuX3dyYXBWZWN0b3I9czt2YXIgbD1bdGhpcy5fc2hhcGVbMF0sdGhpcy5fc2hhcGVbMV1d O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGwsW3tnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5f c2hhcGVbMF19LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gby53aWR0aD10fX0se2dldDpmdW5j dGlvbigpe3JldHVybiBvLl9zaGFwZVsxXX0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBvLmhl aWdodD10fX1dKSx0aGlzLl9zaGFwZVZlY3Rvcj1sfXZhciBkPXAucHJvdG90eXBlO2Z1bmN0 aW9uIG0odCxlKXtyZXR1cm4gMz09PXQubGVuZ3RoPzE9PT1lWzJdJiZlWzFdPT09dFswXSp0 WzJdJiZlWzBdPT09dFsyXToxPT09ZVswXSYmZVsxXT09PXRbMF19ZnVuY3Rpb24gZyh0KXt2 YXIgZT10LmNyZWF0ZVRleHR1cmUoKTtyZXR1cm4gdC5iaW5kVGV4dHVyZSh0LlRFWFRVUkVf MkQsZSksdC50ZXhQYXJhbWV0ZXJpKHQuVEVYVFVSRV8yRCx0LlRFWFRVUkVfTUlOX0ZJTFRF Uix0Lk5FQVJFU1QpLHQudGV4UGFyYW1ldGVyaSh0LlRFWFRVUkVfMkQsdC5URVhUVVJFX01B R19GSUxURVIsdC5ORUFSRVNUKSx0LnRleFBhcmFtZXRlcmkodC5URVhUVVJFXzJELHQuVEVY VFVSRV9XUkFQX1MsdC5DTEFNUF9UT19FREdFKSx0LnRleFBhcmFtZXRlcmkodC5URVhUVVJF XzJELHQuVEVYVFVSRV9XUkFQX1QsdC5DTEFNUF9UT19FREdFKSxlfWZ1bmN0aW9uIHYodCxl LHIsbixpKXt2YXIgYT10LmdldFBhcmFtZXRlcih0Lk1BWF9URVhUVVJFX1NJWkUpO2lmKGU8 MHx8ZT5hfHxyPDB8fHI+YSl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogSW52YWxp ZCB0ZXh0dXJlIHNoYXBlIik7aWYoaT09PXQuRkxPQVQmJiF0LmdldEV4dGVuc2lvbigiT0VT X3RleHR1cmVfZmxvYXQiKSl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogRmxvYXRp bmcgcG9pbnQgdGV4dHVyZXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIik7dmFy IG89Zyh0KTtyZXR1cm4gdC50ZXhJbWFnZTJEKHQuVEVYVFVSRV8yRCwwLG4sZSxyLDAsbixp LG51bGwpLG5ldyBwKHQsbyxlLHIsbixpKX1mdW5jdGlvbiB5KHQsZSxyLG4saSxhKXt2YXIg bz1nKHQpO3JldHVybiB0LnRleEltYWdlMkQodC5URVhUVVJFXzJELDAsaSxpLGEsZSksbmV3 IHAodCxvLHIsbixpLGEpfWZ1bmN0aW9uIHgodCxlKXt2YXIgcj1lLmR0eXBlLG89ZS5zaGFw ZS5zbGljZSgpLHM9dC5nZXRQYXJhbWV0ZXIodC5NQVhfVEVYVFVSRV9TSVpFKTtpZihvWzBd PDB8fG9bMF0+c3x8b1sxXTwwfHxvWzFdPnMpdGhyb3cgbmV3IEVycm9yKCJnbC10ZXh0dXJl MmQ6IEludmFsaWQgdGV4dHVyZSBzaXplIik7dmFyIGw9bShvLGUuc3RyaWRlLnNsaWNlKCkp LGM9MDsiZmxvYXQzMiI9PT1yP2M9dC5GTE9BVDoiZmxvYXQ2NCI9PT1yPyhjPXQuRkxPQVQs bD0hMSxyPSJmbG9hdDMyIik6InVpbnQ4Ij09PXI/Yz10LlVOU0lHTkVEX0JZVEU6KGM9dC5V TlNJR05FRF9CWVRFLGw9ITEscj0idWludDgiKTt2YXIgdSxoLGQ9MDtpZigyPT09by5sZW5n dGgpZD10LkxVTUlOQU5DRSxvPVtvWzBdLG9bMV0sMV0sZT1uKGUuZGF0YSxvLFtlLnN0cmlk ZVswXSxlLnN0cmlkZVsxXSwxXSxlLm9mZnNldCk7ZWxzZXtpZigzIT09by5sZW5ndGgpdGhy b3cgbmV3IEVycm9yKCJnbC10ZXh0dXJlMmQ6IEludmFsaWQgc2hhcGUgZm9yIHRleHR1cmUi KTtpZigxPT09b1syXSlkPXQuQUxQSEE7ZWxzZSBpZigyPT09b1syXSlkPXQuTFVNSU5BTkNF X0FMUEhBO2Vsc2UgaWYoMz09PW9bMl0pZD10LlJHQjtlbHNle2lmKDQhPT1vWzJdKXRocm93 IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJkOiBJbnZhbGlkIHNoYXBlIGZvciBwaXhlbCBjb29y ZHMiKTtkPXQuUkdCQX19YyE9PXQuRkxPQVR8fHQuZ2V0RXh0ZW5zaW9uKCJPRVNfdGV4dHVy ZV9mbG9hdCIpfHwoYz10LlVOU0lHTkVEX0JZVEUsbD0hMSk7dmFyIHY9ZS5zaXplO2lmKGwp dT0wPT09ZS5vZmZzZXQmJmUuZGF0YS5sZW5ndGg9PT12P2UuZGF0YTplLmRhdGEuc3ViYXJy YXkoZS5vZmZzZXQsZS5vZmZzZXQrdik7ZWxzZXt2YXIgeT1bb1syXSxvWzJdKm9bMF0sMV07 aD1hLm1hbGxvYyh2LHIpO3ZhciB4PW4oaCxvLHksMCk7ImZsb2F0MzIiIT09ciYmImZsb2F0 NjQiIT09cnx8YyE9PXQuVU5TSUdORURfQllURT9pLmFzc2lnbih4LGUpOmYoeCxlKSx1PWgu c3ViYXJyYXkoMCx2KX12YXIgYj1nKHQpO3JldHVybiB0LnRleEltYWdlMkQodC5URVhUVVJF XzJELDAsZCxvWzBdLG9bMV0sMCxkLGMsdSksbHx8YS5mcmVlKGgpLG5ldyBwKHQsYixvWzBd LG9bMV0sZCxjKX1PYmplY3QuZGVmaW5lUHJvcGVydGllcyhkLHttaW5GaWx0ZXI6e2dldDpm dW5jdGlvbigpe3JldHVybiB0aGlzLl9taW5GaWx0ZXJ9LHNldDpmdW5jdGlvbih0KXt0aGlz LmJpbmQoKTt2YXIgZT10aGlzLmdsO2lmKHRoaXMudHlwZT09PWUuRkxPQVQmJm8uaW5kZXhP Zih0KT49MCYmKGUuZ2V0RXh0ZW5zaW9uKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKXx8 KHQ9ZS5ORUFSRVNUKSkscy5pbmRleE9mKHQpPDApdGhyb3cgbmV3IEVycm9yKCJnbC10ZXh0 dXJlMmQ6IFVua25vd24gZmlsdGVyIG1vZGUgIit0KTtyZXR1cm4gZS50ZXhQYXJhbWV0ZXJp KGUuVEVYVFVSRV8yRCxlLlRFWFRVUkVfTUlOX0ZJTFRFUix0KSx0aGlzLl9taW5GaWx0ZXI9 dH19LG1hZ0ZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hZ0ZpbHRlcn0s c2V0OmZ1bmN0aW9uKHQpe3RoaXMuYmluZCgpO3ZhciBlPXRoaXMuZ2w7aWYodGhpcy50eXBl PT09ZS5GTE9BVCYmby5pbmRleE9mKHQpPj0wJiYoZS5nZXRFeHRlbnNpb24oIk9FU190ZXh0 dXJlX2Zsb2F0X2xpbmVhciIpfHwodD1lLk5FQVJFU1QpKSxzLmluZGV4T2YodCk8MCl0aHJv dyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogVW5rbm93biBmaWx0ZXIgbW9kZSAiK3QpO3Jl dHVybiBlLnRleFBhcmFtZXRlcmkoZS5URVhUVVJFXzJELGUuVEVYVFVSRV9NQUdfRklMVEVS LHQpLHRoaXMuX21hZ0ZpbHRlcj10fX0sbWlwU2FtcGxlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMuX2FuaXNvU2FtcGxlc30sc2V0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2Fu aXNvU2FtcGxlcztpZih0aGlzLl9hbmlzb1NhbXBsZXM9MHxNYXRoLm1heCh0LDEpLGUhPT10 aGlzLl9hbmlzb1NhbXBsZXMpe3ZhciByPXRoaXMuZ2wuZ2V0RXh0ZW5zaW9uKCJFWFRfdGV4 dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTtyJiZ0aGlzLmdsLnRleFBhcmFtZXRlcmYodGhp cy5nbC5URVhUVVJFXzJELHIuVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQsdGhpcy5fYW5p c29TYW1wbGVzKX1yZXR1cm4gdGhpcy5fYW5pc29TYW1wbGVzfX0sd3JhcFM6e2dldDpmdW5j dGlvbigpe3JldHVybiB0aGlzLl93cmFwU30sc2V0OmZ1bmN0aW9uKHQpe2lmKHRoaXMuYmlu ZCgpLGwuaW5kZXhPZih0KTwwKXRocm93IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJkOiBVbmtu b3duIHdyYXAgbW9kZSAiK3QpO3JldHVybiB0aGlzLmdsLnRleFBhcmFtZXRlcmkodGhpcy5n bC5URVhUVVJFXzJELHRoaXMuZ2wuVEVYVFVSRV9XUkFQX1MsdCksdGhpcy5fd3JhcFM9dH19 LHdyYXBUOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JhcFR9LHNldDpmdW5jdGlv bih0KXtpZih0aGlzLmJpbmQoKSxsLmluZGV4T2YodCk8MCl0aHJvdyBuZXcgRXJyb3IoImds LXRleHR1cmUyZDogVW5rbm93biB3cmFwIG1vZGUgIit0KTtyZXR1cm4gdGhpcy5nbC50ZXhQ YXJhbWV0ZXJpKHRoaXMuZ2wuVEVYVFVSRV8yRCx0aGlzLmdsLlRFWFRVUkVfV1JBUF9ULHQp LHRoaXMuX3dyYXBUPXR9fSx3cmFwOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3Jh cFZlY3Rvcn0sc2V0OmZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCl8fCh0PVt0LHRd KSwyIT09dC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJnbC10ZXh0dXJlMmQ6IE11c3Qgc3Bl Y2lmeSB3cmFwIG1vZGUgZm9yIHJvd3MgYW5kIGNvbHVtbnMiKTtmb3IodmFyIGU9MDtlPDI7 KytlKWlmKGwuaW5kZXhPZih0W2VdKTwwKXRocm93IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJk OiBVbmtub3duIHdyYXAgbW9kZSAiK3QpO3RoaXMuX3dyYXBTPXRbMF0sdGhpcy5fd3JhcFQ9 dFsxXTt2YXIgcj10aGlzLmdsO3JldHVybiB0aGlzLmJpbmQoKSxyLnRleFBhcmFtZXRlcmko ci5URVhUVVJFXzJELHIuVEVYVFVSRV9XUkFQX1MsdGhpcy5fd3JhcFMpLHIudGV4UGFyYW1l dGVyaShyLlRFWFRVUkVfMkQsci5URVhUVVJFX1dSQVBfVCx0aGlzLl93cmFwVCksdH19LHNo YXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2hhcGVWZWN0b3J9LHNldDpmdW5j dGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXtpZigyIT09dC5sZW5ndGgpdGhyb3cgbmV3 IEVycm9yKCJnbC10ZXh0dXJlMmQ6IEludmFsaWQgdGV4dHVyZSBzaGFwZSIpfWVsc2UgdD1b MHx0LDB8dF07cmV0dXJuIGgodGhpcywwfHRbMF0sMHx0WzFdKSxbMHx0WzBdLDB8dFsxXV19 fSx3aWR0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NoYXBlWzBdfSxzZXQ6ZnVu Y3Rpb24odCl7cmV0dXJuIGgodGhpcyx0fD0wLHRoaXMuX3NoYXBlWzFdKSx0fX0saGVpZ2h0 OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2hhcGVbMV19LHNldDpmdW5jdGlvbih0 KXtyZXR1cm4gdHw9MCxoKHRoaXMsdGhpcy5fc2hhcGVbMF0sdCksdH19fSksZC5iaW5kPWZ1 bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2w7cmV0dXJuIHZvaWQgMCE9PXQmJmUuYWN0aXZlVGV4 dHVyZShlLlRFWFRVUkUwKygwfHQpKSxlLmJpbmRUZXh0dXJlKGUuVEVYVFVSRV8yRCx0aGlz LmhhbmRsZSksdm9pZCAwIT09dD8wfHQ6ZS5nZXRQYXJhbWV0ZXIoZS5BQ1RJVkVfVEVYVFVS RSktZS5URVhUVVJFMH0sZC5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5nbC5kZWxldGVUZXh0 dXJlKHRoaXMuaGFuZGxlKX0sZC5nZW5lcmF0ZU1pcG1hcD1mdW5jdGlvbigpe3RoaXMuYmlu ZCgpLHRoaXMuZ2wuZ2VuZXJhdGVNaXBtYXAodGhpcy5nbC5URVhUVVJFXzJEKTtmb3IodmFy IHQ9TWF0aC5taW4odGhpcy5fc2hhcGVbMF0sdGhpcy5fc2hhcGVbMV0pLGU9MDt0PjA7Kytl LHQ+Pj49MSl0aGlzLl9taXBMZXZlbHMuaW5kZXhPZihlKTwwJiZ0aGlzLl9taXBMZXZlbHMu cHVzaChlKX0sZC5zZXRQaXhlbHM9ZnVuY3Rpb24odCxlLHIsbyl7dmFyIHM9dGhpcy5nbDt0 aGlzLmJpbmQoKSxBcnJheS5pc0FycmF5KGUpPyhvPXIscj0wfGVbMV0sZT0wfGVbMF0pOihl PWV8fDAscj1yfHwwKSxvPW98fDA7dmFyIGw9dSh0KT90OnQucmF3O2lmKGwpe3RoaXMuX21p cExldmVscy5pbmRleE9mKG8pPDA/KHMudGV4SW1hZ2UyRChzLlRFWFRVUkVfMkQsMCx0aGlz LmZvcm1hdCx0aGlzLmZvcm1hdCx0aGlzLnR5cGUsbCksdGhpcy5fbWlwTGV2ZWxzLnB1c2go bykpOnMudGV4U3ViSW1hZ2UyRChzLlRFWFRVUkVfMkQsbyxlLHIsdGhpcy5mb3JtYXQsdGhp cy50eXBlLGwpfWVsc2V7aWYoISh0LnNoYXBlJiZ0LnN0cmlkZSYmdC5kYXRhKSl0aHJvdyBu ZXcgRXJyb3IoImdsLXRleHR1cmUyZDogVW5zdXBwb3J0ZWQgZGF0YSB0eXBlIik7aWYodC5z aGFwZS5sZW5ndGg8Mnx8ZSt0LnNoYXBlWzFdPnRoaXMuX3NoYXBlWzFdPj4+b3x8cit0LnNo YXBlWzBdPnRoaXMuX3NoYXBlWzBdPj4+b3x8ZTwwfHxyPDApdGhyb3cgbmV3IEVycm9yKCJn bC10ZXh0dXJlMmQ6IFRleHR1cmUgZGltZW5zaW9ucyBhcmUgb3V0IG9mIGJvdW5kcyIpOyFm dW5jdGlvbih0LGUscixvLHMsbCxjLHUpe3ZhciBoPXUuZHR5cGUscD11LnNoYXBlLnNsaWNl KCk7aWYocC5sZW5ndGg8Mnx8cC5sZW5ndGg+Myl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1 cmUyZDogSW52YWxpZCBuZGFycmF5LCBtdXN0IGJlIDJkIG9yIDNkIik7dmFyIGQ9MCxnPTAs dj1tKHAsdS5zdHJpZGUuc2xpY2UoKSk7ImZsb2F0MzIiPT09aD9kPXQuRkxPQVQ6ImZsb2F0 NjQiPT09aD8oZD10LkZMT0FULHY9ITEsaD0iZmxvYXQzMiIpOiJ1aW50OCI9PT1oP2Q9dC5V TlNJR05FRF9CWVRFOihkPXQuVU5TSUdORURfQllURSx2PSExLGg9InVpbnQ4Iik7aWYoMj09 PXAubGVuZ3RoKWc9dC5MVU1JTkFOQ0UscD1bcFswXSxwWzFdLDFdLHU9bih1LmRhdGEscCxb dS5zdHJpZGVbMF0sdS5zdHJpZGVbMV0sMV0sdS5vZmZzZXQpO2Vsc2V7aWYoMyE9PXAubGVu Z3RoKXRocm93IG5ldyBFcnJvcigiZ2wtdGV4dHVyZTJkOiBJbnZhbGlkIHNoYXBlIGZvciB0 ZXh0dXJlIik7aWYoMT09PXBbMl0pZz10LkFMUEhBO2Vsc2UgaWYoMj09PXBbMl0pZz10LkxV TUlOQU5DRV9BTFBIQTtlbHNlIGlmKDM9PT1wWzJdKWc9dC5SR0I7ZWxzZXtpZig0IT09cFsy XSl0aHJvdyBuZXcgRXJyb3IoImdsLXRleHR1cmUyZDogSW52YWxpZCBzaGFwZSBmb3IgcGl4 ZWwgY29vcmRzIik7Zz10LlJHQkF9cFsyXX1nIT09dC5MVU1JTkFOQ0UmJmchPT10LkFMUEhB fHxzIT09dC5MVU1JTkFOQ0UmJnMhPT10LkFMUEhBfHwoZz1zKTtpZihnIT09cyl0aHJvdyBu ZXcgRXJyb3IoImdsLXRleHR1cmUyZDogSW5jb21wYXRpYmxlIHRleHR1cmUgZm9ybWF0IGZv ciBzZXRQaXhlbHMiKTt2YXIgeT11LnNpemUseD1jLmluZGV4T2Yobyk8MDt4JiZjLnB1c2go byk7aWYoZD09PWwmJnYpMD09PXUub2Zmc2V0JiZ1LmRhdGEubGVuZ3RoPT09eT94P3QudGV4 SW1hZ2UyRCh0LlRFWFRVUkVfMkQsbyxzLHBbMF0scFsxXSwwLHMsbCx1LmRhdGEpOnQudGV4 U3ViSW1hZ2UyRCh0LlRFWFRVUkVfMkQsbyxlLHIscFswXSxwWzFdLHMsbCx1LmRhdGEpOng/ dC50ZXhJbWFnZTJEKHQuVEVYVFVSRV8yRCxvLHMscFswXSxwWzFdLDAscyxsLHUuZGF0YS5z dWJhcnJheSh1Lm9mZnNldCx1Lm9mZnNldCt5KSk6dC50ZXhTdWJJbWFnZTJEKHQuVEVYVFVS RV8yRCxvLGUscixwWzBdLHBbMV0scyxsLHUuZGF0YS5zdWJhcnJheSh1Lm9mZnNldCx1Lm9m ZnNldCt5KSk7ZWxzZXt2YXIgYjtiPWw9PT10LkZMT0FUP2EubWFsbG9jRmxvYXQzMih5KTph Lm1hbGxvY1VpbnQ4KHkpO3ZhciBfPW4oYixwLFtwWzJdLHBbMl0qcFswXSwxXSk7ZD09PXQu RkxPQVQmJmw9PT10LlVOU0lHTkVEX0JZVEU/ZihfLHUpOmkuYXNzaWduKF8sdSkseD90LnRl eEltYWdlMkQodC5URVhUVVJFXzJELG8scyxwWzBdLHBbMV0sMCxzLGwsYi5zdWJhcnJheSgw LHkpKTp0LnRleFN1YkltYWdlMkQodC5URVhUVVJFXzJELG8sZSxyLHBbMF0scFsxXSxzLGws Yi5zdWJhcnJheSgwLHkpKSxsPT09dC5GTE9BVD9hLmZyZWVGbG9hdDMyKGIpOmEuZnJlZVVp bnQ4KGIpfX0ocyxlLHIsbyx0aGlzLmZvcm1hdCx0aGlzLnR5cGUsdGhpcy5fbWlwTGV2ZWxz LHQpfX19LHtuZGFycmF5OjI1OSwibmRhcnJheS1vcHMiOjI1NCwidHlwZWRhcnJheS1wb29s IjozMDh9XSwxNDc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1 bmN0aW9uKHQsZSxyKXtlP2UuYmluZCgpOnQuYmluZEJ1ZmZlcih0LkVMRU1FTlRfQVJSQVlf QlVGRkVSLG51bGwpO3ZhciBuPTB8dC5nZXRQYXJhbWV0ZXIodC5NQVhfVkVSVEVYX0FUVFJJ QlMpO2lmKHIpe2lmKHIubGVuZ3RoPm4pdGhyb3cgbmV3IEVycm9yKCJnbC12YW86IFRvbyBt YW55IHZlcnRleCBhdHRyaWJ1dGVzIik7Zm9yKHZhciBpPTA7aTxyLmxlbmd0aDsrK2kpe3Zh ciBhPXJbaV07aWYoYS5idWZmZXIpe3ZhciBvPWEuYnVmZmVyLHM9YS5zaXplfHw0LGw9YS50 eXBlfHx0LkZMT0FULGM9ISFhLm5vcm1hbGl6ZWQsdT1hLnN0cmlkZXx8MCxmPWEub2Zmc2V0 fHwwO28uYmluZCgpLHQuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaSksdC52ZXJ0ZXhBdHRy aWJQb2ludGVyKGkscyxsLGMsdSxmKX1lbHNle2lmKCJudW1iZXIiPT10eXBlb2YgYSl0LnZl cnRleEF0dHJpYjFmKGksYSk7ZWxzZSBpZigxPT09YS5sZW5ndGgpdC52ZXJ0ZXhBdHRyaWIx ZihpLGFbMF0pO2Vsc2UgaWYoMj09PWEubGVuZ3RoKXQudmVydGV4QXR0cmliMmYoaSxhWzBd LGFbMV0pO2Vsc2UgaWYoMz09PWEubGVuZ3RoKXQudmVydGV4QXR0cmliM2YoaSxhWzBdLGFb MV0sYVsyXSk7ZWxzZXtpZig0IT09YS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJnbC12YW86 IEludmFsaWQgdmVydGV4IGF0dHJpYnV0ZSIpO3QudmVydGV4QXR0cmliNGYoaSxhWzBdLGFb MV0sYVsyXSxhWzNdKX10LmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpKX19Zm9yKDtpPG47 KytpKXQuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGkpfWVsc2V7dC5iaW5kQnVmZmVyKHQu QVJSQVlfQlVGRkVSLG51bGwpO2ZvcihpPTA7aTxuOysraSl0LmRpc2FibGVWZXJ0ZXhBdHRy aWJBcnJheShpKX19fSx7fV0sMTQ4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3Zh ciBuPXQoIi4vZG8tYmluZC5qcyIpO2Z1bmN0aW9uIGkodCl7dGhpcy5nbD10LHRoaXMuX2Vs ZW1lbnRzPW51bGwsdGhpcy5fYXR0cmlidXRlcz1udWxsLHRoaXMuX2VsZW1lbnRzVHlwZT10 LlVOU0lHTkVEX1NIT1JUfWkucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oKXtuKHRoaXMuZ2ws dGhpcy5fZWxlbWVudHMsdGhpcy5fYXR0cmlidXRlcyl9LGkucHJvdG90eXBlLnVwZGF0ZT1m dW5jdGlvbih0LGUscil7dGhpcy5fZWxlbWVudHM9ZSx0aGlzLl9hdHRyaWJ1dGVzPXQsdGhp cy5fZWxlbWVudHNUeXBlPXJ8fHRoaXMuZ2wuVU5TSUdORURfU0hPUlR9LGkucHJvdG90eXBl LmRpc3Bvc2U9ZnVuY3Rpb24oKXt9LGkucHJvdG90eXBlLnVuYmluZD1mdW5jdGlvbigpe30s aS5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbih0LGUscil7cj1yfHwwO3ZhciBuPXRoaXMuZ2w7 dGhpcy5fZWxlbWVudHM/bi5kcmF3RWxlbWVudHModCxlLHRoaXMuX2VsZW1lbnRzVHlwZSxy KTpuLmRyYXdBcnJheXModCxyLGUpfSxlLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG5l dyBpKHQpfX0seyIuL2RvLWJpbmQuanMiOjE0N31dLDE0OTpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2RvLWJpbmQuanMiKTtmdW5jdGlvbiBpKHQsZSxyLG4s aSxhKXt0aGlzLmxvY2F0aW9uPXQsdGhpcy5kaW1lbnNpb249ZSx0aGlzLmE9cix0aGlzLmI9 bix0aGlzLmM9aSx0aGlzLmQ9YX1mdW5jdGlvbiBhKHQsZSxyKXt0aGlzLmdsPXQsdGhpcy5f ZXh0PWUsdGhpcy5oYW5kbGU9cix0aGlzLl9hdHRyaWJzPVtdLHRoaXMuX3VzZUVsZW1lbnRz PSExLHRoaXMuX2VsZW1lbnRzVHlwZT10LlVOU0lHTkVEX1NIT1JUfWkucHJvdG90eXBlLmJp bmQ9ZnVuY3Rpb24odCl7c3dpdGNoKHRoaXMuZGltZW5zaW9uKXtjYXNlIDE6dC52ZXJ0ZXhB dHRyaWIxZih0aGlzLmxvY2F0aW9uLHRoaXMuYSk7YnJlYWs7Y2FzZSAyOnQudmVydGV4QXR0 cmliMmYodGhpcy5sb2NhdGlvbix0aGlzLmEsdGhpcy5iKTticmVhaztjYXNlIDM6dC52ZXJ0 ZXhBdHRyaWIzZih0aGlzLmxvY2F0aW9uLHRoaXMuYSx0aGlzLmIsdGhpcy5jKTticmVhaztj YXNlIDQ6dC52ZXJ0ZXhBdHRyaWI0Zih0aGlzLmxvY2F0aW9uLHRoaXMuYSx0aGlzLmIsdGhp cy5jLHRoaXMuZCl9fSxhLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKCl7dGhpcy5fZXh0LmJp bmRWZXJ0ZXhBcnJheU9FUyh0aGlzLmhhbmRsZSk7Zm9yKHZhciB0PTA7dDx0aGlzLl9hdHRy aWJzLmxlbmd0aDsrK3QpdGhpcy5fYXR0cmlic1t0XS5iaW5kKHRoaXMuZ2wpfSxhLnByb3Rv dHlwZS51bmJpbmQ9ZnVuY3Rpb24oKXt0aGlzLl9leHQuYmluZFZlcnRleEFycmF5T0VTKG51 bGwpfSxhLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5fZXh0LmRlbGV0ZVZl cnRleEFycmF5T0VTKHRoaXMuaGFuZGxlKX0sYS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9u KHQsZSxyKXtpZih0aGlzLmJpbmQoKSxuKHRoaXMuZ2wsZSx0KSx0aGlzLnVuYmluZCgpLHRo aXMuX2F0dHJpYnMubGVuZ3RoPTAsdClmb3IodmFyIGE9MDthPHQubGVuZ3RoOysrYSl7dmFy IG89dFthXTsibnVtYmVyIj09dHlwZW9mIG8/dGhpcy5fYXR0cmlicy5wdXNoKG5ldyBpKGEs MSxvKSk6QXJyYXkuaXNBcnJheShvKSYmdGhpcy5fYXR0cmlicy5wdXNoKG5ldyBpKGEsby5s ZW5ndGgsb1swXSxvWzFdLG9bMl0sb1szXSkpfXRoaXMuX3VzZUVsZW1lbnRzPSEhZSx0aGlz Ll9lbGVtZW50c1R5cGU9cnx8dGhpcy5nbC5VTlNJR05FRF9TSE9SVH0sYS5wcm90b3R5cGUu ZHJhdz1mdW5jdGlvbih0LGUscil7cj1yfHwwO3ZhciBuPXRoaXMuZ2w7dGhpcy5fdXNlRWxl bWVudHM/bi5kcmF3RWxlbWVudHModCxlLHRoaXMuX2VsZW1lbnRzVHlwZSxyKTpuLmRyYXdB cnJheXModCxyLGUpfSxlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGEodCxl LGUuY3JlYXRlVmVydGV4QXJyYXlPRVMoKSl9fSx7Ii4vZG8tYmluZC5qcyI6MTQ3fV0sMTUw OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoIi4vbGliL3Zhby1uYXRp dmUuanMiKSxpPXQoIi4vbGliL3Zhby1lbXVsYXRlZC5qcyIpO2Z1bmN0aW9uIGEodCl7dGhp cy5iaW5kVmVydGV4QXJyYXlPRVM9dC5iaW5kVmVydGV4QXJyYXkuYmluZCh0KSx0aGlzLmNy ZWF0ZVZlcnRleEFycmF5T0VTPXQuY3JlYXRlVmVydGV4QXJyYXkuYmluZCh0KSx0aGlzLmRl bGV0ZVZlcnRleEFycmF5T0VTPXQuZGVsZXRlVmVydGV4QXJyYXkuYmluZCh0KX1lLmV4cG9y dHM9ZnVuY3Rpb24odCxlLHIsbyl7dmFyIHMsbD10LmNyZWF0ZVZlcnRleEFycmF5P25ldyBh KHQpOnQuZ2V0RXh0ZW5zaW9uKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIpO3JldHVybihz PWw/bih0LGwpOmkodCkpLnVwZGF0ZShlLHIsbyksc319LHsiLi9saWIvdmFvLWVtdWxhdGVk LmpzIjoxNDgsIi4vbGliL3Zhby1uYXRpdmUuanMiOjE0OX1dLDE1MTpbZnVuY3Rpb24odCxl LHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRbMF09ZVswXStyWzBdLHRb MV09ZVsxXStyWzFdLHRbMl09ZVsyXStyWzJdLHR9fSx7fV0sMTUyOltmdW5jdGlvbih0LGUs cil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9bih0WzBdLHRbMV0sdFsyXSksbz1u KGVbMF0sZVsxXSxlWzJdKTtpKHIsciksaShvLG8pO3ZhciBzPWEocixvKTtyZXR1cm4gcz4x PzA6TWF0aC5hY29zKHMpfTt2YXIgbj10KCIuL2Zyb21WYWx1ZXMiKSxpPXQoIi4vbm9ybWFs aXplIiksYT10KCIuL2RvdCIpfSx7Ii4vZG90IjoxNjIsIi4vZnJvbVZhbHVlcyI6MTY4LCIu L25vcm1hbGl6ZSI6MTc5fV0sMTUzOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0 aW9uKHQsZSl7cmV0dXJuIHRbMF09TWF0aC5jZWlsKGVbMF0pLHRbMV09TWF0aC5jZWlsKGVb MV0pLHRbMl09TWF0aC5jZWlsKGVbMl0pLHR9fSx7fV0sMTU0OltmdW5jdGlvbih0LGUscil7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBGbG9hdDMyQXJyYXkoMyk7cmV0dXJu IGVbMF09dFswXSxlWzFdPXRbMV0sZVsyXT10WzJdLGV9fSx7fV0sMTU1OltmdW5jdGlvbih0 LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbMF09ZVswXSx0WzFdPWVb MV0sdFsyXT1lWzJdLHR9fSx7fV0sMTU2OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1 bmN0aW9uKCl7dmFyIHQ9bmV3IEZsb2F0MzJBcnJheSgzKTtyZXR1cm4gdFswXT0wLHRbMV09 MCx0WzJdPTAsdH19LHt9XSwxNTc6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rp b24odCxlLHIpe3ZhciBuPWVbMF0saT1lWzFdLGE9ZVsyXSxvPXJbMF0scz1yWzFdLGw9clsy XTtyZXR1cm4gdFswXT1pKmwtYSpzLHRbMV09YSpvLW4qbCx0WzJdPW4qcy1pKm8sdH19LHt9 XSwxNTg6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9dCgiLi9kaXN0YW5jZSIpfSx7Ii4v ZGlzdGFuY2UiOjE1OX1dLDE1OTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlv bih0LGUpe3ZhciByPWVbMF0tdFswXSxuPWVbMV0tdFsxXSxpPWVbMl0tdFsyXTtyZXR1cm4g TWF0aC5zcXJ0KHIqcituKm4raSppKX19LHt9XSwxNjA6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4 cG9ydHM9dCgiLi9kaXZpZGUiKX0seyIuL2RpdmlkZSI6MTYxfV0sMTYxOltmdW5jdGlvbih0 LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdFswXT1lWzBdL3JbMF0s dFsxXT1lWzFdL3JbMV0sdFsyXT1lWzJdL3JbMl0sdH19LHt9XSwxNjI6W2Z1bmN0aW9uKHQs ZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFswXSplWzBdK3RbMV0qZVsx XSt0WzJdKmVbMl19fSx7fV0sMTYzOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPTFlLTZ9 LHt9XSwxNjQ6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIg cj10WzBdLGk9dFsxXSxhPXRbMl0sbz1lWzBdLHM9ZVsxXSxsPWVbMl07cmV0dXJuIE1hdGgu YWJzKHItbyk8PW4qTWF0aC5tYXgoMSxNYXRoLmFicyhyKSxNYXRoLmFicyhvKSkmJk1hdGgu YWJzKGktcyk8PW4qTWF0aC5tYXgoMSxNYXRoLmFicyhpKSxNYXRoLmFicyhzKSkmJk1hdGgu YWJzKGEtbCk8PW4qTWF0aC5tYXgoMSxNYXRoLmFicyhhKSxNYXRoLmFicyhsKSl9O3ZhciBu PXQoIi4vZXBzaWxvbiIpfSx7Ii4vZXBzaWxvbiI6MTYzfV0sMTY1OltmdW5jdGlvbih0LGUs cil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbMF09PT1lWzBdJiZ0WzFdPT09 ZVsxXSYmdFsyXT09PWVbMl19fSx7fV0sMTY2OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRz PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbMF09TWF0aC5mbG9vcihlWzBdKSx0WzFdPU1hdGgu Zmxvb3IoZVsxXSksdFsyXT1NYXRoLmZsb29yKGVbMl0pLHR9fSx7fV0sMTY3OltmdW5jdGlv bih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGksYSxvKXt2YXIgcyxsO2V8fChl PTMpO3J8fChyPTApO2w9aT9NYXRoLm1pbihpKmUrcix0Lmxlbmd0aCk6dC5sZW5ndGg7Zm9y KHM9cjtzPGw7cys9ZSluWzBdPXRbc10sblsxXT10W3MrMV0sblsyXT10W3MrMl0sYShuLG4s byksdFtzXT1uWzBdLHRbcysxXT1uWzFdLHRbcysyXT1uWzJdO3JldHVybiB0fTt2YXIgbj10 KCIuL2NyZWF0ZSIpKCl9LHsiLi9jcmVhdGUiOjE1Nn1dLDE2ODpbZnVuY3Rpb24odCxlLHIp e2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dmFyIG49bmV3IEZsb2F0MzJBcnJheSgzKTty ZXR1cm4gblswXT10LG5bMV09ZSxuWzJdPXIsbn19LHt9XSwxNjk6W2Z1bmN0aW9uKHQsZSxy KXtlLmV4cG9ydHM9e0VQU0lMT046dCgiLi9lcHNpbG9uIiksY3JlYXRlOnQoIi4vY3JlYXRl IiksY2xvbmU6dCgiLi9jbG9uZSIpLGFuZ2xlOnQoIi4vYW5nbGUiKSxmcm9tVmFsdWVzOnQo Ii4vZnJvbVZhbHVlcyIpLGNvcHk6dCgiLi9jb3B5Iiksc2V0OnQoIi4vc2V0IiksZXF1YWxz OnQoIi4vZXF1YWxzIiksZXhhY3RFcXVhbHM6dCgiLi9leGFjdEVxdWFscyIpLGFkZDp0KCIu L2FkZCIpLHN1YnRyYWN0OnQoIi4vc3VidHJhY3QiKSxzdWI6dCgiLi9zdWIiKSxtdWx0aXBs eTp0KCIuL211bHRpcGx5IiksbXVsOnQoIi4vbXVsIiksZGl2aWRlOnQoIi4vZGl2aWRlIiks ZGl2OnQoIi4vZGl2IiksbWluOnQoIi4vbWluIiksbWF4OnQoIi4vbWF4IiksZmxvb3I6dCgi Li9mbG9vciIpLGNlaWw6dCgiLi9jZWlsIikscm91bmQ6dCgiLi9yb3VuZCIpLHNjYWxlOnQo Ii4vc2NhbGUiKSxzY2FsZUFuZEFkZDp0KCIuL3NjYWxlQW5kQWRkIiksZGlzdGFuY2U6dCgi Li9kaXN0YW5jZSIpLGRpc3Q6dCgiLi9kaXN0Iiksc3F1YXJlZERpc3RhbmNlOnQoIi4vc3F1 YXJlZERpc3RhbmNlIiksc3FyRGlzdDp0KCIuL3NxckRpc3QiKSxsZW5ndGg6dCgiLi9sZW5n dGgiKSxsZW46dCgiLi9sZW4iKSxzcXVhcmVkTGVuZ3RoOnQoIi4vc3F1YXJlZExlbmd0aCIp LHNxckxlbjp0KCIuL3NxckxlbiIpLG5lZ2F0ZTp0KCIuL25lZ2F0ZSIpLGludmVyc2U6dCgi Li9pbnZlcnNlIiksbm9ybWFsaXplOnQoIi4vbm9ybWFsaXplIiksZG90OnQoIi4vZG90Iiks Y3Jvc3M6dCgiLi9jcm9zcyIpLGxlcnA6dCgiLi9sZXJwIikscmFuZG9tOnQoIi4vcmFuZG9t IiksdHJhbnNmb3JtTWF0NDp0KCIuL3RyYW5zZm9ybU1hdDQiKSx0cmFuc2Zvcm1NYXQzOnQo Ii4vdHJhbnNmb3JtTWF0MyIpLHRyYW5zZm9ybVF1YXQ6dCgiLi90cmFuc2Zvcm1RdWF0Iiks cm90YXRlWDp0KCIuL3JvdGF0ZVgiKSxyb3RhdGVZOnQoIi4vcm90YXRlWSIpLHJvdGF0ZVo6 dCgiLi9yb3RhdGVaIiksZm9yRWFjaDp0KCIuL2ZvckVhY2giKX19LHsiLi9hZGQiOjE1MSwi Li9hbmdsZSI6MTUyLCIuL2NlaWwiOjE1MywiLi9jbG9uZSI6MTU0LCIuL2NvcHkiOjE1NSwi Li9jcmVhdGUiOjE1NiwiLi9jcm9zcyI6MTU3LCIuL2Rpc3QiOjE1OCwiLi9kaXN0YW5jZSI6 MTU5LCIuL2RpdiI6MTYwLCIuL2RpdmlkZSI6MTYxLCIuL2RvdCI6MTYyLCIuL2Vwc2lsb24i OjE2MywiLi9lcXVhbHMiOjE2NCwiLi9leGFjdEVxdWFscyI6MTY1LCIuL2Zsb29yIjoxNjYs Ii4vZm9yRWFjaCI6MTY3LCIuL2Zyb21WYWx1ZXMiOjE2OCwiLi9pbnZlcnNlIjoxNzAsIi4v bGVuIjoxNzEsIi4vbGVuZ3RoIjoxNzIsIi4vbGVycCI6MTczLCIuL21heCI6MTc0LCIuL21p biI6MTc1LCIuL211bCI6MTc2LCIuL211bHRpcGx5IjoxNzcsIi4vbmVnYXRlIjoxNzgsIi4v bm9ybWFsaXplIjoxNzksIi4vcmFuZG9tIjoxODAsIi4vcm90YXRlWCI6MTgxLCIuL3JvdGF0 ZVkiOjE4MiwiLi9yb3RhdGVaIjoxODMsIi4vcm91bmQiOjE4NCwiLi9zY2FsZSI6MTg1LCIu L3NjYWxlQW5kQWRkIjoxODYsIi4vc2V0IjoxODcsIi4vc3FyRGlzdCI6MTg4LCIuL3Nxckxl biI6MTg5LCIuL3NxdWFyZWREaXN0YW5jZSI6MTkwLCIuL3NxdWFyZWRMZW5ndGgiOjE5MSwi Li9zdWIiOjE5MiwiLi9zdWJ0cmFjdCI6MTkzLCIuL3RyYW5zZm9ybU1hdDMiOjE5NCwiLi90 cmFuc2Zvcm1NYXQ0IjoxOTUsIi4vdHJhbnNmb3JtUXVhdCI6MTk2fV0sMTcwOltmdW5jdGlv bih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbMF09MS9lWzBdLHRb MV09MS9lWzFdLHRbMl09MS9lWzJdLHR9fSx7fV0sMTcxOltmdW5jdGlvbih0LGUscil7ZS5l eHBvcnRzPXQoIi4vbGVuZ3RoIil9LHsiLi9sZW5ndGgiOjE3Mn1dLDE3MjpbZnVuY3Rpb24o dCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10WzBdLHI9dFsxXSxuPXRbMl07 cmV0dXJuIE1hdGguc3FydChlKmUrcipyK24qbil9fSx7fV0sMTczOltmdW5jdGlvbih0LGUs cil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPWVbMF0sYT1lWzFdLG89ZVsy XTtyZXR1cm4gdFswXT1pK24qKHJbMF0taSksdFsxXT1hK24qKHJbMV0tYSksdFsyXT1vK24q KHJbMl0tbyksdH19LHt9XSwxNzQ6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rp b24odCxlLHIpe3JldHVybiB0WzBdPU1hdGgubWF4KGVbMF0sclswXSksdFsxXT1NYXRoLm1h eChlWzFdLHJbMV0pLHRbMl09TWF0aC5tYXgoZVsyXSxyWzJdKSx0fX0se31dLDE3NTpbZnVu Y3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRbMF09TWF0 aC5taW4oZVswXSxyWzBdKSx0WzFdPU1hdGgubWluKGVbMV0sclsxXSksdFsyXT1NYXRoLm1p bihlWzJdLHJbMl0pLHR9fSx7fV0sMTc2OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXQo Ii4vbXVsdGlwbHkiKX0seyIuL211bHRpcGx5IjoxNzd9XSwxNzc6W2Z1bmN0aW9uKHQsZSxy KXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0WzBdPWVbMF0qclswXSx0WzFd PWVbMV0qclsxXSx0WzJdPWVbMl0qclsyXSx0fX0se31dLDE3ODpbZnVuY3Rpb24odCxlLHIp e2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0WzBdPS1lWzBdLHRbMV09LWVbMV0s dFsyXT0tZVsyXSx0fX0se31dLDE3OTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5j dGlvbih0LGUpe3ZhciByPWVbMF0sbj1lWzFdLGk9ZVsyXSxhPXIqcituKm4raSppO2E+MCYm KGE9MS9NYXRoLnNxcnQoYSksdFswXT1lWzBdKmEsdFsxXT1lWzFdKmEsdFsyXT1lWzJdKmEp O3JldHVybiB0fX0se31dLDE4MDpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlv bih0LGUpe2U9ZXx8MTt2YXIgcj0yKk1hdGgucmFuZG9tKCkqTWF0aC5QSSxuPTIqTWF0aC5y YW5kb20oKS0xLGk9TWF0aC5zcXJ0KDEtbipuKSplO3JldHVybiB0WzBdPU1hdGguY29zKHIp KmksdFsxXT1NYXRoLnNpbihyKSppLHRbMl09biplLHR9fSx7fV0sMTgxOltmdW5jdGlvbih0 LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXJbMV0sYT1yWzJdLG89 ZVsxXS1pLHM9ZVsyXS1hLGw9TWF0aC5zaW4obiksYz1NYXRoLmNvcyhuKTtyZXR1cm4gdFsw XT1lWzBdLHRbMV09aStvKmMtcypsLHRbMl09YStvKmwrcypjLHR9fSx7fV0sMTgyOltmdW5j dGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXJbMF0sYT1y WzJdLG89ZVswXS1pLHM9ZVsyXS1hLGw9TWF0aC5zaW4obiksYz1NYXRoLmNvcyhuKTtyZXR1 cm4gdFswXT1pK3MqbCtvKmMsdFsxXT1lWzFdLHRbMl09YStzKmMtbypsLHR9fSx7fV0sMTgz OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXJb MF0sYT1yWzFdLG89ZVswXS1pLHM9ZVsxXS1hLGw9TWF0aC5zaW4obiksYz1NYXRoLmNvcyhu KTtyZXR1cm4gdFswXT1pK28qYy1zKmwsdFsxXT1hK28qbCtzKmMsdFsyXT1lWzJdLHR9fSx7 fV0sMTg0OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJu IHRbMF09TWF0aC5yb3VuZChlWzBdKSx0WzFdPU1hdGgucm91bmQoZVsxXSksdFsyXT1NYXRo LnJvdW5kKGVbMl0pLHR9fSx7fV0sMTg1OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1 bmN0aW9uKHQsZSxyKXtyZXR1cm4gdFswXT1lWzBdKnIsdFsxXT1lWzFdKnIsdFsyXT1lWzJd KnIsdH19LHt9XSwxODY6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxl LHIsbil7cmV0dXJuIHRbMF09ZVswXStyWzBdKm4sdFsxXT1lWzFdK3JbMV0qbix0WzJdPWVb Ml0rclsyXSpuLHR9fSx7fV0sMTg3OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0 aW9uKHQsZSxyLG4pe3JldHVybiB0WzBdPWUsdFsxXT1yLHRbMl09bix0fX0se31dLDE4ODpb ZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz10KCIuL3NxdWFyZWREaXN0YW5jZSIpfSx7Ii4v c3F1YXJlZERpc3RhbmNlIjoxOTB9XSwxODk6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9 dCgiLi9zcXVhcmVkTGVuZ3RoIil9LHsiLi9zcXVhcmVkTGVuZ3RoIjoxOTF9XSwxOTA6W2Z1 bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1lWzBdLXRbMF0s bj1lWzFdLXRbMV0saT1lWzJdLXRbMl07cmV0dXJuIHIqcituKm4raSppfX0se31dLDE5MTpb ZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10WzBdLHI9dFsx XSxuPXRbMl07cmV0dXJuIGUqZStyKnIrbipufX0se31dLDE5MjpbZnVuY3Rpb24odCxlLHIp e2UuZXhwb3J0cz10KCIuL3N1YnRyYWN0Iil9LHsiLi9zdWJ0cmFjdCI6MTkzfV0sMTkzOltm dW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdFswXT1l WzBdLXJbMF0sdFsxXT1lWzFdLXJbMV0sdFsyXT1lWzJdLXJbMl0sdH19LHt9XSwxOTQ6W2Z1 bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWVbMF0saT1l WzFdLGE9ZVsyXTtyZXR1cm4gdFswXT1uKnJbMF0raSpyWzNdK2Eqcls2XSx0WzFdPW4qclsx XStpKnJbNF0rYSpyWzddLHRbMl09bipyWzJdK2kqcls1XSthKnJbOF0sdH19LHt9XSwxOTU6 W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWVbMF0s aT1lWzFdLGE9ZVsyXSxvPXJbM10qbityWzddKmkrclsxMV0qYStyWzE1XTtyZXR1cm4gbz1v fHwxLHRbMF09KHJbMF0qbityWzRdKmkrcls4XSphK3JbMTJdKS9vLHRbMV09KHJbMV0qbity WzVdKmkrcls5XSphK3JbMTNdKS9vLHRbMl09KHJbMl0qbityWzZdKmkrclsxMF0qYStyWzE0 XSkvbyx0fX0se31dLDE5NjpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0 LGUscil7dmFyIG49ZVswXSxpPWVbMV0sYT1lWzJdLG89clswXSxzPXJbMV0sbD1yWzJdLGM9 clszXSx1PWMqbitzKmEtbCppLGY9YyppK2wqbi1vKmEsaD1jKmErbyppLXMqbixwPS1vKm4t cyppLWwqYTtyZXR1cm4gdFswXT11KmMrcCotbytmKi1sLWgqLXMsdFsxXT1mKmMrcCotcyto Ki1vLXUqLWwsdFsyXT1oKmMrcCotbCt1Ki1zLWYqLW8sdH19LHt9XSwxOTc6W2Z1bmN0aW9u KHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0WzBdPWVbMF0rclsw XSx0WzFdPWVbMV0rclsxXSx0WzJdPWVbMl0rclsyXSx0WzNdPWVbM10rclszXSx0fX0se31d LDE5ODpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1uZXcg RmxvYXQzMkFycmF5KDQpO3JldHVybiBlWzBdPXRbMF0sZVsxXT10WzFdLGVbMl09dFsyXSxl WzNdPXRbM10sZX19LHt9XSwxOTk6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rp b24odCxlKXtyZXR1cm4gdFswXT1lWzBdLHRbMV09ZVsxXSx0WzJdPWVbMl0sdFszXT1lWzNd LHR9fSx7fV0sMjAwOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFy IHQ9bmV3IEZsb2F0MzJBcnJheSg0KTtyZXR1cm4gdFswXT0wLHRbMV09MCx0WzJdPTAsdFsz XT0wLHR9fSx7fV0sMjAxOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSl7dmFyIHI9ZVswXS10WzBdLG49ZVsxXS10WzFdLGk9ZVsyXS10WzJdLGE9ZVszXS10WzNd O3JldHVybiBNYXRoLnNxcnQocipyK24qbitpKmkrYSphKX19LHt9XSwyMDI6W2Z1bmN0aW9u KHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0WzBdPWVbMF0vclsw XSx0WzFdPWVbMV0vclsxXSx0WzJdPWVbMl0vclsyXSx0WzNdPWVbM10vclszXSx0fX0se31d LDIwMzpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0 WzBdKmVbMF0rdFsxXSplWzFdK3RbMl0qZVsyXSt0WzNdKmVbM119fSx7fV0sMjA0OltmdW5j dGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPW5ldyBGbG9h dDMyQXJyYXkoNCk7cmV0dXJuIGlbMF09dCxpWzFdPWUsaVsyXT1yLGlbM109bixpfX0se31d LDIwNTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz17Y3JlYXRlOnQoIi4vY3JlYXRlIiks Y2xvbmU6dCgiLi9jbG9uZSIpLGZyb21WYWx1ZXM6dCgiLi9mcm9tVmFsdWVzIiksY29weTp0 KCIuL2NvcHkiKSxzZXQ6dCgiLi9zZXQiKSxhZGQ6dCgiLi9hZGQiKSxzdWJ0cmFjdDp0KCIu L3N1YnRyYWN0IiksbXVsdGlwbHk6dCgiLi9tdWx0aXBseSIpLGRpdmlkZTp0KCIuL2Rpdmlk ZSIpLG1pbjp0KCIuL21pbiIpLG1heDp0KCIuL21heCIpLHNjYWxlOnQoIi4vc2NhbGUiKSxz Y2FsZUFuZEFkZDp0KCIuL3NjYWxlQW5kQWRkIiksZGlzdGFuY2U6dCgiLi9kaXN0YW5jZSIp LHNxdWFyZWREaXN0YW5jZTp0KCIuL3NxdWFyZWREaXN0YW5jZSIpLGxlbmd0aDp0KCIuL2xl bmd0aCIpLHNxdWFyZWRMZW5ndGg6dCgiLi9zcXVhcmVkTGVuZ3RoIiksbmVnYXRlOnQoIi4v bmVnYXRlIiksaW52ZXJzZTp0KCIuL2ludmVyc2UiKSxub3JtYWxpemU6dCgiLi9ub3JtYWxp emUiKSxkb3Q6dCgiLi9kb3QiKSxsZXJwOnQoIi4vbGVycCIpLHJhbmRvbTp0KCIuL3JhbmRv bSIpLHRyYW5zZm9ybU1hdDQ6dCgiLi90cmFuc2Zvcm1NYXQ0IiksdHJhbnNmb3JtUXVhdDp0 KCIuL3RyYW5zZm9ybVF1YXQiKX19LHsiLi9hZGQiOjE5NywiLi9jbG9uZSI6MTk4LCIuL2Nv cHkiOjE5OSwiLi9jcmVhdGUiOjIwMCwiLi9kaXN0YW5jZSI6MjAxLCIuL2RpdmlkZSI6MjAy LCIuL2RvdCI6MjAzLCIuL2Zyb21WYWx1ZXMiOjIwNCwiLi9pbnZlcnNlIjoyMDYsIi4vbGVu Z3RoIjoyMDcsIi4vbGVycCI6MjA4LCIuL21heCI6MjA5LCIuL21pbiI6MjEwLCIuL211bHRp cGx5IjoyMTEsIi4vbmVnYXRlIjoyMTIsIi4vbm9ybWFsaXplIjoyMTMsIi4vcmFuZG9tIjoy MTQsIi4vc2NhbGUiOjIxNSwiLi9zY2FsZUFuZEFkZCI6MjE2LCIuL3NldCI6MjE3LCIuL3Nx dWFyZWREaXN0YW5jZSI6MjE4LCIuL3NxdWFyZWRMZW5ndGgiOjIxOSwiLi9zdWJ0cmFjdCI6 MjIwLCIuL3RyYW5zZm9ybU1hdDQiOjIyMSwiLi90cmFuc2Zvcm1RdWF0IjoyMjJ9XSwyMDY6 W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFswXT0x L2VbMF0sdFsxXT0xL2VbMV0sdFsyXT0xL2VbMl0sdFszXT0xL2VbM10sdH19LHt9XSwyMDc6 W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dFswXSxyPXRb MV0sbj10WzJdLGk9dFszXTtyZXR1cm4gTWF0aC5zcXJ0KGUqZStyKnIrbipuK2kqaSl9fSx7 fV0sMjA4OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3Zh ciBpPWVbMF0sYT1lWzFdLG89ZVsyXSxzPWVbM107cmV0dXJuIHRbMF09aStuKihyWzBdLWkp LHRbMV09YStuKihyWzFdLWEpLHRbMl09bytuKihyWzJdLW8pLHRbM109cytuKihyWzNdLXMp LHR9fSx7fV0sMjA5OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxy KXtyZXR1cm4gdFswXT1NYXRoLm1heChlWzBdLHJbMF0pLHRbMV09TWF0aC5tYXgoZVsxXSxy WzFdKSx0WzJdPU1hdGgubWF4KGVbMl0sclsyXSksdFszXT1NYXRoLm1heChlWzNdLHJbM10p LHR9fSx7fV0sMjEwOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxy KXtyZXR1cm4gdFswXT1NYXRoLm1pbihlWzBdLHJbMF0pLHRbMV09TWF0aC5taW4oZVsxXSxy WzFdKSx0WzJdPU1hdGgubWluKGVbMl0sclsyXSksdFszXT1NYXRoLm1pbihlWzNdLHJbM10p LHR9fSx7fV0sMjExOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxy KXtyZXR1cm4gdFswXT1lWzBdKnJbMF0sdFsxXT1lWzFdKnJbMV0sdFsyXT1lWzJdKnJbMl0s dFszXT1lWzNdKnJbM10sdH19LHt9XSwyMTI6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9 ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFswXT0tZVswXSx0WzFdPS1lWzFdLHRbMl09LWVbMl0s dFszXT0tZVszXSx0fX0se31dLDIxMzpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5j dGlvbih0LGUpe3ZhciByPWVbMF0sbj1lWzFdLGk9ZVsyXSxhPWVbM10sbz1yKnIrbipuK2kq aSthKmE7bz4wJiYobz0xL01hdGguc3FydChvKSx0WzBdPXIqbyx0WzFdPW4qbyx0WzJdPWkq byx0WzNdPWEqbyk7cmV0dXJuIHR9fSx7fV0sMjE0OltmdW5jdGlvbih0LGUscil7dmFyIG49 dCgiLi9ub3JtYWxpemUiKSxpPXQoIi4vc2NhbGUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxl KXtyZXR1cm4gZT1lfHwxLHRbMF09TWF0aC5yYW5kb20oKSx0WzFdPU1hdGgucmFuZG9tKCks dFsyXT1NYXRoLnJhbmRvbSgpLHRbM109TWF0aC5yYW5kb20oKSxuKHQsdCksaSh0LHQsZSks dH19LHsiLi9ub3JtYWxpemUiOjIxMywiLi9zY2FsZSI6MjE1fV0sMjE1OltmdW5jdGlvbih0 LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdFswXT1lWzBdKnIsdFsx XT1lWzFdKnIsdFsyXT1lWzJdKnIsdFszXT1lWzNdKnIsdH19LHt9XSwyMTY6W2Z1bmN0aW9u KHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIHRbMF09ZVswXSty WzBdKm4sdFsxXT1lWzFdK3JbMV0qbix0WzJdPWVbMl0rclsyXSpuLHRbM109ZVszXStyWzNd Km4sdH19LHt9XSwyMTc6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxl LHIsbixpKXtyZXR1cm4gdFswXT1lLHRbMV09cix0WzJdPW4sdFszXT1pLHR9fSx7fV0sMjE4 OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVswXS10 WzBdLG49ZVsxXS10WzFdLGk9ZVsyXS10WzJdLGE9ZVszXS10WzNdO3JldHVybiByKnIrbipu K2kqaSthKmF9fSx7fV0sMjE5OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9u KHQpe3ZhciBlPXRbMF0scj10WzFdLG49dFsyXSxpPXRbM107cmV0dXJuIGUqZStyKnIrbipu K2kqaX19LHt9XSwyMjA6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxl LHIpe3JldHVybiB0WzBdPWVbMF0tclswXSx0WzFdPWVbMV0tclsxXSx0WzJdPWVbMl0tclsy XSx0WzNdPWVbM10tclszXSx0fX0se31dLDIyMTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0 cz1mdW5jdGlvbih0LGUscil7dmFyIG49ZVswXSxpPWVbMV0sYT1lWzJdLG89ZVszXTtyZXR1 cm4gdFswXT1yWzBdKm4rcls0XSppK3JbOF0qYStyWzEyXSpvLHRbMV09clsxXSpuK3JbNV0q aStyWzldKmErclsxM10qbyx0WzJdPXJbMl0qbityWzZdKmkrclsxMF0qYStyWzE0XSpvLHRb M109clszXSpuK3JbN10qaStyWzExXSphK3JbMTVdKm8sdH19LHt9XSwyMjI6W2Z1bmN0aW9u KHQsZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWVbMF0saT1lWzFdLGE9 ZVsyXSxvPXJbMF0scz1yWzFdLGw9clsyXSxjPXJbM10sdT1jKm4rcyphLWwqaSxmPWMqaSts Km4tbyphLGg9YyphK28qaS1zKm4scD0tbypuLXMqaS1sKmE7cmV0dXJuIHRbMF09dSpjK3Aq LW8rZiotbC1oKi1zLHRbMV09ZipjK3AqLXMraCotby11Ki1sLHRbMl09aCpjK3AqLWwrdSot cy1mKi1vLHRbM109ZVszXSx0fX0se31dLDIyMzpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQo Imdsc2wtdG9rZW5pemVyIiksaT10KCJhdG9iLWxpdGUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24o dCl7Zm9yKHZhciBlPUFycmF5LmlzQXJyYXkodCk/dDpuKHQpLHI9MDtyPGUubGVuZ3RoO3Ir Kyl7dmFyIGE9ZVtyXTtpZigicHJlcHJvY2Vzc29yIj09PWEudHlwZSl7dmFyIG89YS5kYXRh Lm1hdGNoKC9cI2RlZmluZVxzK1NIQURFUl9OQU1FKF9CNjQpP1xzKyguKykkLyk7aWYobyYm b1syXSl7dmFyIHM9b1sxXSxsPW9bMl07cmV0dXJuKHM/aShsKTpsKS50cmltKCl9fX19fSx7 ImF0b2ItbGl0ZSI6MTMsImdsc2wtdG9rZW5pemVyIjoyMzB9XSwyMjQ6W2Z1bmN0aW9uKHQs ZSxyKXtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGUscixjLHU9MCxmPTAsaD05OTkscD1b XSxkPVtdLG09MSxnPTAsdj0wLHk9ITEseD0hMSxiPSIiLF89YSx3PW47IjMwMCBlcyI9PT0o dD10fHx7fSkudmVyc2lvbiYmKF89cyx3PW8pO3ZhciBUPXt9LGs9e307Zm9yKHU9MDt1PF8u bGVuZ3RoO3UrKylUW19bdV1dPSEwO2Zvcih1PTA7dTx3Lmxlbmd0aDt1Kyspa1t3W3VdXT0h MDtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGQ9W10sbnVsbCE9PXQ/ZnVuY3Rpb24odCl7 dT0wLHQudG9TdHJpbmcmJih0PXQudG9TdHJpbmcoKSk7dmFyIHI7Yis9dC5yZXBsYWNlKC9c clxuL2csIlxuIiksYz1iLmxlbmd0aDtmb3IoO2U9Ylt1XSx1PGM7KXtzd2l0Y2gocj11LGgp e2Nhc2UgMDp1PUwoKTticmVhaztjYXNlIDE6Y2FzZSAyOnU9RSgpO2JyZWFrO2Nhc2UgMzp1 PUMoKTticmVhaztjYXNlIDQ6dT1PKCk7YnJlYWs7Y2FzZSAxMTp1PUkoKTticmVhaztjYXNl IDU6dT16KCk7YnJlYWs7Y2FzZSA5OTk5OnU9RCgpO2JyZWFrO2Nhc2UgOTp1PVMoKTticmVh aztjYXNlIDk5OTp1PU0oKX1pZihyIT09dSlzd2l0Y2goYltyXSl7Y2FzZSJcbiI6Zz0wLCsr bTticmVhaztkZWZhdWx0OisrZ319cmV0dXJuIGYrPXUsYj1iLnNsaWNlKHUpLGR9KHQpOmZ1 bmN0aW9uKHQpe3AubGVuZ3RoJiZBKHAuam9pbigiIikpO3JldHVybiBoPTEwLEEoIihlb2Yp IiksZH0oKX07ZnVuY3Rpb24gQSh0KXt0Lmxlbmd0aCYmZC5wdXNoKHt0eXBlOmxbaF0sZGF0 YTp0LHBvc2l0aW9uOnYsbGluZTptLGNvbHVtbjpnfSl9ZnVuY3Rpb24gTSgpe3JldHVybiBw PXAubGVuZ3RoP1tdOnAsIi8iPT09ciYmIioiPT09ZT8odj1mK3UtMSxoPTAscj1lLHUrMSk6 Ii8iPT09ciYmIi8iPT09ZT8odj1mK3UtMSxoPTEscj1lLHUrMSk6IiMiPT09ZT8oaD0yLHY9 Zit1LHUpOi9ccy8udGVzdChlKT8oaD05LHY9Zit1LHUpOih5PS9cZC8udGVzdChlKSx4PS9b Xlx3X10vLnRlc3QoZSksdj1mK3UsaD15PzQ6eD8zOjk5OTksdSl9ZnVuY3Rpb24gUygpe3Jl dHVybi9bXlxzXS9nLnRlc3QoZSk/KEEocC5qb2luKCIiKSksaD05OTksdSk6KHAucHVzaChl KSxyPWUsdSsxKX1mdW5jdGlvbiBFKCl7cmV0dXJuIlxyIiE9PWUmJiJcbiIhPT1lfHwiXFwi PT09cj8ocC5wdXNoKGUpLHI9ZSx1KzEpOihBKHAuam9pbigiIikpLGg9OTk5LHUpfWZ1bmN0 aW9uIEwoKXtyZXR1cm4iLyI9PT1lJiYiKiI9PT1yPyhwLnB1c2goZSksQShwLmpvaW4oIiIp KSxoPTk5OSx1KzEpOihwLnB1c2goZSkscj1lLHUrMSl9ZnVuY3Rpb24gQygpe2lmKCIuIj09 PXImJi9cZC8udGVzdChlKSlyZXR1cm4gaD01LHU7aWYoIi8iPT09ciYmIioiPT09ZSlyZXR1 cm4gaD0wLHU7aWYoIi8iPT09ciYmIi8iPT09ZSlyZXR1cm4gaD0xLHU7aWYoIi4iPT09ZSYm cC5sZW5ndGgpe2Zvcig7UChwKTspO3JldHVybiBoPTUsdX1pZigiOyI9PT1lfHwiKSI9PT1l fHwiKCI9PT1lKXtpZihwLmxlbmd0aClmb3IoO1AocCk7KTtyZXR1cm4gQShlKSxoPTk5OSx1 KzF9dmFyIHQ9Mj09PXAubGVuZ3RoJiYiPSIhPT1lO2lmKC9bXHdfXGRcc10vLnRlc3QoZSl8 fHQpe2Zvcig7UChwKTspO3JldHVybiBoPTk5OSx1fXJldHVybiBwLnB1c2goZSkscj1lLHUr MX1mdW5jdGlvbiBQKHQpe2Zvcih2YXIgZSxyLG49MDs7KXtpZihlPWkuaW5kZXhPZih0LnNs aWNlKDAsdC5sZW5ndGgrbikuam9pbigiIikpLHI9aVtlXSwtMT09PWUpe2lmKG4tLSt0Lmxl bmd0aD4wKWNvbnRpbnVlO3I9dC5zbGljZSgwLDEpLmpvaW4oIiIpfXJldHVybiBBKHIpLHYr PXIubGVuZ3RoLChwPXAuc2xpY2Uoci5sZW5ndGgpKS5sZW5ndGh9fWZ1bmN0aW9uIEkoKXty ZXR1cm4vW15hLWZBLUYwLTldLy50ZXN0KGUpPyhBKHAuam9pbigiIikpLGg9OTk5LHUpOihw LnB1c2goZSkscj1lLHUrMSl9ZnVuY3Rpb24gTygpe3JldHVybiIuIj09PWV8fC9bZUVdLy50 ZXN0KGUpPyhwLnB1c2goZSksaD01LHI9ZSx1KzEpOiJ4Ij09PWUmJjE9PT1wLmxlbmd0aCYm IjAiPT09cFswXT8oaD0xMSxwLnB1c2goZSkscj1lLHUrMSk6L1teXGRdLy50ZXN0KGUpPyhB KHAuam9pbigiIikpLGg9OTk5LHUpOihwLnB1c2goZSkscj1lLHUrMSl9ZnVuY3Rpb24geigp e3JldHVybiJmIj09PWUmJihwLnB1c2goZSkscj1lLHUrPTEpLC9bZUVdLy50ZXN0KGUpPyhw LnB1c2goZSkscj1lLHUrMSk6KCItIiE9PWUmJiIrIiE9PWV8fCEvW2VFXS8udGVzdChyKSkm Ji9bXlxkXS8udGVzdChlKT8oQShwLmpvaW4oIiIpKSxoPTk5OSx1KToocC5wdXNoKGUpLHI9 ZSx1KzEpfWZ1bmN0aW9uIEQoKXtpZigvW15cZFx3X10vLnRlc3QoZSkpe3ZhciB0PXAuam9p bigiIik7cmV0dXJuIGg9a1t0XT84OlRbdF0/Nzo2LEEocC5qb2luKCIiKSksaD05OTksdX1y ZXR1cm4gcC5wdXNoKGUpLHI9ZSx1KzF9fTt2YXIgbj10KCIuL2xpYi9saXRlcmFscyIpLGk9 dCgiLi9saWIvb3BlcmF0b3JzIiksYT10KCIuL2xpYi9idWlsdGlucyIpLG89dCgiLi9saWIv bGl0ZXJhbHMtMzAwZXMiKSxzPXQoIi4vbGliL2J1aWx0aW5zLTMwMGVzIiksbD1bImJsb2Nr LWNvbW1lbnQiLCJsaW5lLWNvbW1lbnQiLCJwcmVwcm9jZXNzb3IiLCJvcGVyYXRvciIsImlu dGVnZXIiLCJmbG9hdCIsImlkZW50IiwiYnVpbHRpbiIsImtleXdvcmQiLCJ3aGl0ZXNwYWNl IiwiZW9mIiwiaW50ZWdlciJdfSx7Ii4vbGliL2J1aWx0aW5zIjoyMjYsIi4vbGliL2J1aWx0 aW5zLTMwMGVzIjoyMjUsIi4vbGliL2xpdGVyYWxzIjoyMjgsIi4vbGliL2xpdGVyYWxzLTMw MGVzIjoyMjcsIi4vbGliL29wZXJhdG9ycyI6MjI5fV0sMjI1OltmdW5jdGlvbih0LGUscil7 dmFyIG49dCgiLi9idWlsdGlucyIpO249bi5zbGljZSgpLmZpbHRlcigoZnVuY3Rpb24odCl7 cmV0dXJuIS9eKGdsXF98dGV4dHVyZSkvLnRlc3QodCl9KSksZS5leHBvcnRzPW4uY29uY2F0 KFsiZ2xfVmVydGV4SUQiLCJnbF9JbnN0YW5jZUlEIiwiZ2xfUG9zaXRpb24iLCJnbF9Qb2lu dFNpemUiLCJnbF9GcmFnQ29vcmQiLCJnbF9Gcm9udEZhY2luZyIsImdsX0ZyYWdEZXB0aCIs ImdsX1BvaW50Q29vcmQiLCJnbF9NYXhWZXJ0ZXhBdHRyaWJzIiwiZ2xfTWF4VmVydGV4VW5p Zm9ybVZlY3RvcnMiLCJnbF9NYXhWZXJ0ZXhPdXRwdXRWZWN0b3JzIiwiZ2xfTWF4RnJhZ21l bnRJbnB1dFZlY3RvcnMiLCJnbF9NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyIsImdsX01h eENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMiLCJnbF9NYXhUZXh0dXJlSW1hZ2VVbml0cyIs ImdsX01heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMiLCJnbF9NYXhEcmF3QnVmZmVycyIsImds X01pblByb2dyYW1UZXhlbE9mZnNldCIsImdsX01heFByb2dyYW1UZXhlbE9mZnNldCIsImds X0RlcHRoUmFuZ2VQYXJhbWV0ZXJzIiwiZ2xfRGVwdGhSYW5nZSIsInRydW5jIiwicm91bmQi LCJyb3VuZEV2ZW4iLCJpc25hbiIsImlzaW5mIiwiZmxvYXRCaXRzVG9JbnQiLCJmbG9hdEJp dHNUb1VpbnQiLCJpbnRCaXRzVG9GbG9hdCIsInVpbnRCaXRzVG9GbG9hdCIsInBhY2tTbm9y bTJ4MTYiLCJ1bnBhY2tTbm9ybTJ4MTYiLCJwYWNrVW5vcm0yeDE2IiwidW5wYWNrVW5vcm0y eDE2IiwicGFja0hhbGYyeDE2IiwidW5wYWNrSGFsZjJ4MTYiLCJvdXRlclByb2R1Y3QiLCJ0 cmFuc3Bvc2UiLCJkZXRlcm1pbmFudCIsImludmVyc2UiLCJ0ZXh0dXJlIiwidGV4dHVyZVNp emUiLCJ0ZXh0dXJlUHJvaiIsInRleHR1cmVMb2QiLCJ0ZXh0dXJlT2Zmc2V0IiwidGV4ZWxG ZXRjaCIsInRleGVsRmV0Y2hPZmZzZXQiLCJ0ZXh0dXJlUHJvak9mZnNldCIsInRleHR1cmVM b2RPZmZzZXQiLCJ0ZXh0dXJlUHJvakxvZCIsInRleHR1cmVQcm9qTG9kT2Zmc2V0IiwidGV4 dHVyZUdyYWQiLCJ0ZXh0dXJlR3JhZE9mZnNldCIsInRleHR1cmVQcm9qR3JhZCIsInRleHR1 cmVQcm9qR3JhZE9mZnNldCJdKX0seyIuL2J1aWx0aW5zIjoyMjZ9XSwyMjY6W2Z1bmN0aW9u KHQsZSxyKXtlLmV4cG9ydHM9WyJhYnMiLCJhY29zIiwiYWxsIiwiYW55IiwiYXNpbiIsImF0 YW4iLCJjZWlsIiwiY2xhbXAiLCJjb3MiLCJjcm9zcyIsImRGZHgiLCJkRmR5IiwiZGVncmVl cyIsImRpc3RhbmNlIiwiZG90IiwiZXF1YWwiLCJleHAiLCJleHAyIiwiZmFjZWZvcndhcmQi LCJmbG9vciIsImZyYWN0IiwiZ2xfQmFja0NvbG9yIiwiZ2xfQmFja0xpZ2h0TW9kZWxQcm9k dWN0IiwiZ2xfQmFja0xpZ2h0UHJvZHVjdCIsImdsX0JhY2tNYXRlcmlhbCIsImdsX0JhY2tT ZWNvbmRhcnlDb2xvciIsImdsX0NsaXBQbGFuZSIsImdsX0NsaXBWZXJ0ZXgiLCJnbF9Db2xv ciIsImdsX0RlcHRoUmFuZ2UiLCJnbF9EZXB0aFJhbmdlUGFyYW1ldGVycyIsImdsX0V5ZVBs YW5lUSIsImdsX0V5ZVBsYW5lUiIsImdsX0V5ZVBsYW5lUyIsImdsX0V5ZVBsYW5lVCIsImds X0ZvZyIsImdsX0ZvZ0Nvb3JkIiwiZ2xfRm9nRnJhZ0Nvb3JkIiwiZ2xfRm9nUGFyYW1ldGVy cyIsImdsX0ZyYWdDb2xvciIsImdsX0ZyYWdDb29yZCIsImdsX0ZyYWdEYXRhIiwiZ2xfRnJh Z0RlcHRoIiwiZ2xfRnJhZ0RlcHRoRVhUIiwiZ2xfRnJvbnRDb2xvciIsImdsX0Zyb250RmFj aW5nIiwiZ2xfRnJvbnRMaWdodE1vZGVsUHJvZHVjdCIsImdsX0Zyb250TGlnaHRQcm9kdWN0 IiwiZ2xfRnJvbnRNYXRlcmlhbCIsImdsX0Zyb250U2Vjb25kYXJ5Q29sb3IiLCJnbF9MaWdo dE1vZGVsIiwiZ2xfTGlnaHRNb2RlbFBhcmFtZXRlcnMiLCJnbF9MaWdodE1vZGVsUHJvZHVj dHMiLCJnbF9MaWdodFByb2R1Y3RzIiwiZ2xfTGlnaHRTb3VyY2UiLCJnbF9MaWdodFNvdXJj ZVBhcmFtZXRlcnMiLCJnbF9NYXRlcmlhbFBhcmFtZXRlcnMiLCJnbF9NYXhDbGlwUGxhbmVz IiwiZ2xfTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyIsImdsX01heERyYXdCdWZmZXJz IiwiZ2xfTWF4RnJhZ21lbnRVbmlmb3JtQ29tcG9uZW50cyIsImdsX01heExpZ2h0cyIsImds X01heFRleHR1cmVDb29yZHMiLCJnbF9NYXhUZXh0dXJlSW1hZ2VVbml0cyIsImdsX01heFRl eHR1cmVVbml0cyIsImdsX01heFZhcnlpbmdGbG9hdHMiLCJnbF9NYXhWZXJ0ZXhBdHRyaWJz IiwiZ2xfTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMiLCJnbF9NYXhWZXJ0ZXhVbmlmb3Jt Q29tcG9uZW50cyIsImdsX01vZGVsVmlld01hdHJpeCIsImdsX01vZGVsVmlld01hdHJpeElu dmVyc2UiLCJnbF9Nb2RlbFZpZXdNYXRyaXhJbnZlcnNlVHJhbnNwb3NlIiwiZ2xfTW9kZWxW aWV3TWF0cml4VHJhbnNwb3NlIiwiZ2xfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCIsImds X01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXhJbnZlcnNlIiwiZ2xfTW9kZWxWaWV3UHJvamVj dGlvbk1hdHJpeEludmVyc2VUcmFuc3Bvc2UiLCJnbF9Nb2RlbFZpZXdQcm9qZWN0aW9uTWF0 cml4VHJhbnNwb3NlIiwiZ2xfTXVsdGlUZXhDb29yZDAiLCJnbF9NdWx0aVRleENvb3JkMSIs ImdsX011bHRpVGV4Q29vcmQyIiwiZ2xfTXVsdGlUZXhDb29yZDMiLCJnbF9NdWx0aVRleENv b3JkNCIsImdsX011bHRpVGV4Q29vcmQ1IiwiZ2xfTXVsdGlUZXhDb29yZDYiLCJnbF9NdWx0 aVRleENvb3JkNyIsImdsX05vcm1hbCIsImdsX05vcm1hbE1hdHJpeCIsImdsX05vcm1hbFNj YWxlIiwiZ2xfT2JqZWN0UGxhbmVRIiwiZ2xfT2JqZWN0UGxhbmVSIiwiZ2xfT2JqZWN0UGxh bmVTIiwiZ2xfT2JqZWN0UGxhbmVUIiwiZ2xfUG9pbnQiLCJnbF9Qb2ludENvb3JkIiwiZ2xf UG9pbnRQYXJhbWV0ZXJzIiwiZ2xfUG9pbnRTaXplIiwiZ2xfUG9zaXRpb24iLCJnbF9Qcm9q ZWN0aW9uTWF0cml4IiwiZ2xfUHJvamVjdGlvbk1hdHJpeEludmVyc2UiLCJnbF9Qcm9qZWN0 aW9uTWF0cml4SW52ZXJzZVRyYW5zcG9zZSIsImdsX1Byb2plY3Rpb25NYXRyaXhUcmFuc3Bv c2UiLCJnbF9TZWNvbmRhcnlDb2xvciIsImdsX1RleENvb3JkIiwiZ2xfVGV4dHVyZUVudkNv bG9yIiwiZ2xfVGV4dHVyZU1hdHJpeCIsImdsX1RleHR1cmVNYXRyaXhJbnZlcnNlIiwiZ2xf VGV4dHVyZU1hdHJpeEludmVyc2VUcmFuc3Bvc2UiLCJnbF9UZXh0dXJlTWF0cml4VHJhbnNw b3NlIiwiZ2xfVmVydGV4IiwiZ3JlYXRlclRoYW4iLCJncmVhdGVyVGhhbkVxdWFsIiwiaW52 ZXJzZXNxcnQiLCJsZW5ndGgiLCJsZXNzVGhhbiIsImxlc3NUaGFuRXF1YWwiLCJsb2ciLCJs b2cyIiwibWF0cml4Q29tcE11bHQiLCJtYXgiLCJtaW4iLCJtaXgiLCJtb2QiLCJub3JtYWxp emUiLCJub3QiLCJub3RFcXVhbCIsInBvdyIsInJhZGlhbnMiLCJyZWZsZWN0IiwicmVmcmFj dCIsInNpZ24iLCJzaW4iLCJzbW9vdGhzdGVwIiwic3FydCIsInN0ZXAiLCJ0YW4iLCJ0ZXh0 dXJlMkQiLCJ0ZXh0dXJlMkRMb2QiLCJ0ZXh0dXJlMkRQcm9qIiwidGV4dHVyZTJEUHJvakxv ZCIsInRleHR1cmVDdWJlIiwidGV4dHVyZUN1YmVMb2QiLCJ0ZXh0dXJlMkRMb2RFWFQiLCJ0 ZXh0dXJlMkRQcm9qTG9kRVhUIiwidGV4dHVyZUN1YmVMb2RFWFQiLCJ0ZXh0dXJlMkRHcmFk RVhUIiwidGV4dHVyZTJEUHJvakdyYWRFWFQiLCJ0ZXh0dXJlQ3ViZUdyYWRFWFQiXX0se31d LDIyNzpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoIi4vbGl0ZXJhbHMiKTtlLmV4cG9ydHM9 bi5zbGljZSgpLmNvbmNhdChbImxheW91dCIsImNlbnRyb2lkIiwic21vb3RoIiwiY2FzZSIs Im1hdDJ4MiIsIm1hdDJ4MyIsIm1hdDJ4NCIsIm1hdDN4MiIsIm1hdDN4MyIsIm1hdDN4NCIs Im1hdDR4MiIsIm1hdDR4MyIsIm1hdDR4NCIsInV2ZWMyIiwidXZlYzMiLCJ1dmVjNCIsInNh bXBsZXJDdWJlU2hhZG93Iiwic2FtcGxlcjJEQXJyYXkiLCJzYW1wbGVyMkRBcnJheVNoYWRv dyIsImlzYW1wbGVyMkQiLCJpc2FtcGxlcjNEIiwiaXNhbXBsZXJDdWJlIiwiaXNhbXBsZXIy REFycmF5IiwidXNhbXBsZXIyRCIsInVzYW1wbGVyM0QiLCJ1c2FtcGxlckN1YmUiLCJ1c2Ft cGxlcjJEQXJyYXkiLCJjb2hlcmVudCIsInJlc3RyaWN0IiwicmVhZG9ubHkiLCJ3cml0ZW9u bHkiLCJyZXNvdXJjZSIsImF0b21pY191aW50Iiwibm9wZXJzcGVjdGl2ZSIsInBhdGNoIiwi c2FtcGxlIiwic3Vicm91dGluZSIsImNvbW1vbiIsInBhcnRpdGlvbiIsImFjdGl2ZSIsImZp bHRlciIsImltYWdlMUQiLCJpbWFnZTJEIiwiaW1hZ2UzRCIsImltYWdlQ3ViZSIsImlpbWFn ZTFEIiwiaWltYWdlMkQiLCJpaW1hZ2UzRCIsImlpbWFnZUN1YmUiLCJ1aW1hZ2UxRCIsInVp bWFnZTJEIiwidWltYWdlM0QiLCJ1aW1hZ2VDdWJlIiwiaW1hZ2UxREFycmF5IiwiaW1hZ2Uy REFycmF5IiwiaWltYWdlMURBcnJheSIsImlpbWFnZTJEQXJyYXkiLCJ1aW1hZ2UxREFycmF5 IiwidWltYWdlMkRBcnJheSIsImltYWdlMURTaGFkb3ciLCJpbWFnZTJEU2hhZG93IiwiaW1h Z2UxREFycmF5U2hhZG93IiwiaW1hZ2UyREFycmF5U2hhZG93IiwiaW1hZ2VCdWZmZXIiLCJp aW1hZ2VCdWZmZXIiLCJ1aW1hZ2VCdWZmZXIiLCJzYW1wbGVyMURBcnJheSIsInNhbXBsZXIx REFycmF5U2hhZG93IiwiaXNhbXBsZXIxRCIsImlzYW1wbGVyMURBcnJheSIsInVzYW1wbGVy MUQiLCJ1c2FtcGxlcjFEQXJyYXkiLCJpc2FtcGxlcjJEUmVjdCIsInVzYW1wbGVyMkRSZWN0 Iiwic2FtcGxlckJ1ZmZlciIsImlzYW1wbGVyQnVmZmVyIiwidXNhbXBsZXJCdWZmZXIiLCJz YW1wbGVyMkRNUyIsImlzYW1wbGVyMkRNUyIsInVzYW1wbGVyMkRNUyIsInNhbXBsZXIyRE1T QXJyYXkiLCJpc2FtcGxlcjJETVNBcnJheSIsInVzYW1wbGVyMkRNU0FycmF5Il0pfSx7Ii4v bGl0ZXJhbHMiOjIyOH1dLDIyODpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1bInByZWNp c2lvbiIsImhpZ2hwIiwibWVkaXVtcCIsImxvd3AiLCJhdHRyaWJ1dGUiLCJjb25zdCIsInVu aWZvcm0iLCJ2YXJ5aW5nIiwiYnJlYWsiLCJjb250aW51ZSIsImRvIiwiZm9yIiwid2hpbGUi LCJpZiIsImVsc2UiLCJpbiIsIm91dCIsImlub3V0IiwiZmxvYXQiLCJpbnQiLCJ1aW50Iiwi dm9pZCIsImJvb2wiLCJ0cnVlIiwiZmFsc2UiLCJkaXNjYXJkIiwicmV0dXJuIiwibWF0MiIs Im1hdDMiLCJtYXQ0IiwidmVjMiIsInZlYzMiLCJ2ZWM0IiwiaXZlYzIiLCJpdmVjMyIsIml2 ZWM0IiwiYnZlYzIiLCJidmVjMyIsImJ2ZWM0Iiwic2FtcGxlcjFEIiwic2FtcGxlcjJEIiwi c2FtcGxlcjNEIiwic2FtcGxlckN1YmUiLCJzYW1wbGVyMURTaGFkb3ciLCJzYW1wbGVyMkRT aGFkb3ciLCJzdHJ1Y3QiLCJhc20iLCJjbGFzcyIsInVuaW9uIiwiZW51bSIsInR5cGVkZWYi LCJ0ZW1wbGF0ZSIsInRoaXMiLCJwYWNrZWQiLCJnb3RvIiwic3dpdGNoIiwiZGVmYXVsdCIs ImlubGluZSIsIm5vaW5saW5lIiwidm9sYXRpbGUiLCJwdWJsaWMiLCJzdGF0aWMiLCJleHRl cm4iLCJleHRlcm5hbCIsImludGVyZmFjZSIsImxvbmciLCJzaG9ydCIsImRvdWJsZSIsImhh bGYiLCJmaXhlZCIsInVuc2lnbmVkIiwiaW5wdXQiLCJvdXRwdXQiLCJodmVjMiIsImh2ZWMz IiwiaHZlYzQiLCJkdmVjMiIsImR2ZWMzIiwiZHZlYzQiLCJmdmVjMiIsImZ2ZWMzIiwiZnZl YzQiLCJzYW1wbGVyMkRSZWN0Iiwic2FtcGxlcjNEUmVjdCIsInNhbXBsZXIyRFJlY3RTaGFk b3ciLCJzaXplb2YiLCJjYXN0IiwibmFtZXNwYWNlIiwidXNpbmciXX0se31dLDIyOTpbZnVu Y3Rpb24odCxlLHIpe2UuZXhwb3J0cz1bIjw8PSIsIj4+PSIsIisrIiwiLS0iLCI8PCIsIj4+ IiwiPD0iLCI+PSIsIj09IiwiIT0iLCImJiIsInx8IiwiKz0iLCItPSIsIio9IiwiLz0iLCIl PSIsIiY9IiwiXl4iLCJePSIsInw9IiwiKCIsIikiLCJbIiwiXSIsIi4iLCIhIiwifiIsIioi LCIvIiwiJSIsIisiLCItIiwiPCIsIj4iLCImIiwiXiIsInwiLCI/IiwiOiIsIj0iLCIsIiwi OyIsInsiLCJ9Il19LHt9XSwyMzA6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj10KCIuL2luZGV4 Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9bihlKSxpPVtdO3JldHVybiBpPShp PWkuY29uY2F0KHIodCkpKS5jb25jYXQocihudWxsKSl9fSx7Ii4vaW5kZXgiOjIyNH1dLDIz MTpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlvbih0KXsic3RyaW5nIj09dHlw ZW9mIHQmJih0PVt0XSk7Zm9yKHZhciBlPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLHI9 W10sbj0wO248dC5sZW5ndGgtMTtuKyspci5wdXNoKHRbbl0sZVtuXXx8IiIpO3JldHVybiBy LnB1c2godFtuXSksci5qb2luKCIiKX19LHt9XSwyMzI6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG49dCgiaXMtYnJvd3NlciIpO2UuZXhwb3J0cz1uJiZmdW5jdGlvbigp e3ZhciB0PSExO3RyeXt2YXIgZT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUi LHtnZXQ6ZnVuY3Rpb24oKXt0PSEwfX0pO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0ZXN0 IixudWxsLGUpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0ZXN0IixudWxsLGUpfWNh dGNoKGUpe3Q9ITF9cmV0dXJuIHR9KCl9LHsiaXMtYnJvd3NlciI6MjM2fV0sMjMzOltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBy PXQubGVuZ3RoO2lmKDA9PT1yKXRocm93IG5ldyBFcnJvcigiTXVzdCBoYXZlIGF0IGxlYXN0 IGQrMSBwb2ludHMiKTt2YXIgaT10WzBdLmxlbmd0aDtpZihyPD1pKXRocm93IG5ldyBFcnJv cigiTXVzdCBpbnB1dCBhdCBsZWFzdCBkKzEgcG9pbnRzIik7dmFyIG89dC5zbGljZSgwLGkr MSkscz1uLmFwcGx5KHZvaWQgMCxvKTtpZigwPT09cyl0aHJvdyBuZXcgRXJyb3IoIklucHV0 IG5vdCBpbiBnZW5lcmFsIHBvc2l0aW9uIik7Zm9yKHZhciBsPW5ldyBBcnJheShpKzEpLHU9 MDt1PD1pOysrdSlsW3VdPXU7czwwJiYobFswXT0xLGxbMV09MCk7dmFyIGY9bmV3IGEobCxu ZXcgQXJyYXkoaSsxKSwhMSksaD1mLmFkamFjZW50LHA9bmV3IEFycmF5KGkrMik7Zm9yKHU9 MDt1PD1pOysrdSl7Zm9yKHZhciBkPWwuc2xpY2UoKSxtPTA7bTw9aTsrK20pbT09PXUmJihk W21dPS0xKTt2YXIgZz1kWzBdO2RbMF09ZFsxXSxkWzFdPWc7dmFyIHY9bmV3IGEoZCxuZXcg QXJyYXkoaSsxKSwhMCk7aFt1XT12LHBbdV09dn1wW2krMV09Zjtmb3IodT0wO3U8PWk7Kyt1 KXtkPWhbdV0udmVydGljZXM7dmFyIHk9aFt1XS5hZGphY2VudDtmb3IobT0wO208PWk7Kytt KXt2YXIgeD1kW21dO2lmKHg8MCl5W21dPWY7ZWxzZSBmb3IodmFyIGI9MDtiPD1pOysrYilo W2JdLnZlcnRpY2VzLmluZGV4T2YoeCk8MCYmKHlbbV09aFtiXSl9fXZhciBfPW5ldyBjKGks byxwKSx3PSEhZTtmb3IodT1pKzE7dTxyOysrdSlfLmluc2VydCh0W3VdLHcpO3JldHVybiBf LmJvdW5kYXJ5KCl9O3ZhciBuPXQoInJvYnVzdC1vcmllbnRhdGlvbiIpLGk9dCgic2ltcGxp Y2lhbC1jb21wbGV4IikuY29tcGFyZUNlbGxzO2Z1bmN0aW9uIGEodCxlLHIpe3RoaXMudmVy dGljZXM9dCx0aGlzLmFkamFjZW50PWUsdGhpcy5ib3VuZGFyeT1yLHRoaXMubGFzdFZpc2l0 ZWQ9LTF9ZnVuY3Rpb24gbyh0LGUscil7dGhpcy52ZXJ0aWNlcz10LHRoaXMuY2VsbD1lLHRo aXMuaW5kZXg9cn1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuIGkodC52ZXJ0aWNlcyxlLnZlcnRp Y2VzKX1hLnByb3RvdHlwZS5mbGlwPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy52ZXJ0aWNlc1sw XTt0aGlzLnZlcnRpY2VzWzBdPXRoaXMudmVydGljZXNbMV0sdGhpcy52ZXJ0aWNlc1sxXT10 O3ZhciBlPXRoaXMuYWRqYWNlbnRbMF07dGhpcy5hZGphY2VudFswXT10aGlzLmFkamFjZW50 WzFdLHRoaXMuYWRqYWNlbnRbMV09ZX07dmFyIGw9W107ZnVuY3Rpb24gYyh0LGUscil7dGhp cy5kaW1lbnNpb249dCx0aGlzLnZlcnRpY2VzPWUsdGhpcy5zaW1wbGljZXM9cix0aGlzLmlu dGVyaW9yPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hdC5ib3VuZGFyeX0pKSx0aGlz LnR1cGxlPW5ldyBBcnJheSh0KzEpO2Zvcih2YXIgaT0wO2k8PXQ7KytpKXRoaXMudHVwbGVb aV09dGhpcy52ZXJ0aWNlc1tpXTt2YXIgYSxvPWxbdF07b3x8KG89bFt0XT0oKGE9blt0KzFd KXx8KGE9biksZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy50dXBs ZTtyZXR1cm4gdC5hcHBseSh0aGlzLGUpfX0oYSkpKSx0aGlzLm9yaWVudD1vfXZhciB1PWMu cHJvdG90eXBlO3UuaGFuZGxlQm91bmRhcnlEZWdlbmVyYWN5PWZ1bmN0aW9uKHQsZSl7dmFy IHI9dGhpcy5kaW1lbnNpb24sbj10aGlzLnZlcnRpY2VzLmxlbmd0aC0xLGk9dGhpcy50dXBs ZSxhPXRoaXMudmVydGljZXMsbz1bdF07Zm9yKHQubGFzdFZpc2l0ZWQ9LW47by5sZW5ndGg+ MDspZm9yKHZhciBzPSh0PW8ucG9wKCkpLmFkamFjZW50LGw9MDtsPD1yOysrbCl7dmFyIGM9 c1tsXTtpZihjLmJvdW5kYXJ5JiYhKGMubGFzdFZpc2l0ZWQ8PS1uKSl7Zm9yKHZhciB1PWMu dmVydGljZXMsZj0wO2Y8PXI7KytmKXt2YXIgaD11W2ZdO2lbZl09aDwwP2U6YVtoXX12YXIg cD10aGlzLm9yaWVudCgpO2lmKHA+MClyZXR1cm4gYztjLmxhc3RWaXNpdGVkPS1uLDA9PT1w JiZvLnB1c2goYyl9fXJldHVybiBudWxsfSx1LndhbGs9ZnVuY3Rpb24odCxlKXt2YXIgcj10 aGlzLnZlcnRpY2VzLmxlbmd0aC0xLG49dGhpcy5kaW1lbnNpb24saT10aGlzLnZlcnRpY2Vz LGE9dGhpcy50dXBsZSxvPWU/dGhpcy5pbnRlcmlvci5sZW5ndGgqTWF0aC5yYW5kb20oKXww OnRoaXMuaW50ZXJpb3IubGVuZ3RoLTEscz10aGlzLmludGVyaW9yW29dO3Q6Zm9yKDshcy5i b3VuZGFyeTspe2Zvcih2YXIgbD1zLnZlcnRpY2VzLGM9cy5hZGphY2VudCx1PTA7dTw9bjsr K3UpYVt1XT1pW2xbdV1dO3MubGFzdFZpc2l0ZWQ9cjtmb3IodT0wO3U8PW47Kyt1KXt2YXIg Zj1jW3VdO2lmKCEoZi5sYXN0VmlzaXRlZD49cikpe3ZhciBoPWFbdV07YVt1XT10O3ZhciBw PXRoaXMub3JpZW50KCk7aWYoYVt1XT1oLHA8MCl7cz1mO2NvbnRpbnVlIHR9Zi5ib3VuZGFy eT9mLmxhc3RWaXNpdGVkPS1yOmYubGFzdFZpc2l0ZWQ9cn19cmV0dXJufXJldHVybiBzfSx1 LmFkZFBlYWtzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy52ZXJ0aWNlcy5sZW5ndGgtMSxu PXRoaXMuZGltZW5zaW9uLGk9dGhpcy52ZXJ0aWNlcyxsPXRoaXMudHVwbGUsYz10aGlzLmlu dGVyaW9yLHU9dGhpcy5zaW1wbGljZXMsZj1bZV07ZS5sYXN0VmlzaXRlZD1yLGUudmVydGlj ZXNbZS52ZXJ0aWNlcy5pbmRleE9mKC0xKV09cixlLmJvdW5kYXJ5PSExLGMucHVzaChlKTtm b3IodmFyIGg9W107Zi5sZW5ndGg+MDspe3ZhciBwPShlPWYucG9wKCkpLnZlcnRpY2VzLGQ9 ZS5hZGphY2VudCxtPXAuaW5kZXhPZihyKTtpZighKG08MCkpZm9yKHZhciBnPTA7Zzw9bjsr K2cpaWYoZyE9PW0pe3ZhciB2PWRbZ107aWYodi5ib3VuZGFyeSYmISh2Lmxhc3RWaXNpdGVk Pj1yKSl7dmFyIHk9di52ZXJ0aWNlcztpZih2Lmxhc3RWaXNpdGVkIT09LXIpe2Zvcih2YXIg eD0wLGI9MDtiPD1uOysrYil5W2JdPDA/KHg9YixsW2JdPXQpOmxbYl09aVt5W2JdXTtpZih0 aGlzLm9yaWVudCgpPjApe3lbeF09cix2LmJvdW5kYXJ5PSExLGMucHVzaCh2KSxmLnB1c2go diksdi5sYXN0VmlzaXRlZD1yO2NvbnRpbnVlfXYubGFzdFZpc2l0ZWQ9LXJ9dmFyIF89di5h ZGphY2VudCx3PXAuc2xpY2UoKSxUPWQuc2xpY2UoKSxrPW5ldyBhKHcsVCwhMCk7dS5wdXNo KGspO3ZhciBBPV8uaW5kZXhPZihlKTtpZighKEE8MCkpe19bQV09ayxUW21dPXYsd1tnXT0t MSxUW2ddPWUsZFtnXT1rLGsuZmxpcCgpO2ZvcihiPTA7Yjw9bjsrK2Ipe3ZhciBNPXdbYl07 aWYoIShNPDB8fE09PT1yKSl7Zm9yKHZhciBTPW5ldyBBcnJheShuLTEpLEU9MCxMPTA7TDw9 bjsrK0wpe3ZhciBDPXdbTF07QzwwfHxMPT09Ynx8KFNbRSsrXT1DKX1oLnB1c2gobmV3IG8o UyxrLGIpKX19fX19fWguc29ydChzKTtmb3IoZz0wO2crMTxoLmxlbmd0aDtnKz0yKXt2YXIg UD1oW2ddLEk9aFtnKzFdLE89UC5pbmRleCx6PUkuaW5kZXg7TzwwfHx6PDB8fChQLmNlbGwu YWRqYWNlbnRbUC5pbmRleF09SS5jZWxsLEkuY2VsbC5hZGphY2VudFtJLmluZGV4XT1QLmNl bGwpfX0sdS5pbnNlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLnZlcnRpY2VzO3IucHVz aCh0KTt2YXIgbj10aGlzLndhbGsodCxlKTtpZihuKXtmb3IodmFyIGk9dGhpcy5kaW1lbnNp b24sYT10aGlzLnR1cGxlLG89MDtvPD1pOysrbyl7dmFyIHM9bi52ZXJ0aWNlc1tvXTthW29d PXM8MD90OnJbc119dmFyIGw9dGhpcy5vcmllbnQoYSk7bDwwfHwoMCE9PWx8fChuPXRoaXMu aGFuZGxlQm91bmRhcnlEZWdlbmVyYWN5KG4sdCkpKSYmdGhpcy5hZGRQZWFrcyh0LG4pfX0s dS5ib3VuZGFyeT1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLmRpbWVuc2lvbixlPVtdLHI9 dGhpcy5zaW1wbGljZXMsbj1yLmxlbmd0aCxpPTA7aTxuOysraSl7dmFyIGE9cltpXTtpZihh LmJvdW5kYXJ5KXtmb3IodmFyIG89bmV3IEFycmF5KHQpLHM9YS52ZXJ0aWNlcyxsPTAsYz0w LHU9MDt1PD10OysrdSlzW3VdPj0wP29bbCsrXT1zW3VdOmM9MSZ1O2lmKGM9PT0oMSZ0KSl7 dmFyIGY9b1swXTtvWzBdPW9bMV0sb1sxXT1mfWUucHVzaChvKX19cmV0dXJuIGV9fSx7InJv YnVzdC1vcmllbnRhdGlvbiI6Mjg0LCJzaW1wbGljaWFsLWNvbXBsZXgiOjI5M31dLDIzNDpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJiaW5hcnktc2VhcmNoLWJv dW5kcyIpO2Z1bmN0aW9uIGkodCxlLHIsbixpKXt0aGlzLm1pZD10LHRoaXMubGVmdD1lLHRo aXMucmlnaHQ9cix0aGlzLmxlZnRQb2ludHM9bix0aGlzLnJpZ2h0UG9pbnRzPWksdGhpcy5j b3VudD0oZT9lLmNvdW50OjApKyhyP3IuY291bnQ6MCkrbi5sZW5ndGh9ZS5leHBvcnRzPWZ1 bmN0aW9uKHQpe2lmKCF0fHwwPT09dC5sZW5ndGgpcmV0dXJuIG5ldyB2KG51bGwpO3JldHVy biBuZXcgdihnKHQpKX07dmFyIGE9aS5wcm90b3R5cGU7ZnVuY3Rpb24gbyh0LGUpe3QubWlk PWUubWlkLHQubGVmdD1lLmxlZnQsdC5yaWdodD1lLnJpZ2h0LHQubGVmdFBvaW50cz1lLmxl ZnRQb2ludHMsdC5yaWdodFBvaW50cz1lLnJpZ2h0UG9pbnRzLHQuY291bnQ9ZS5jb3VudH1m dW5jdGlvbiBzKHQsZSl7dmFyIHI9ZyhlKTt0Lm1pZD1yLm1pZCx0LmxlZnQ9ci5sZWZ0LHQu cmlnaHQ9ci5yaWdodCx0LmxlZnRQb2ludHM9ci5sZWZ0UG9pbnRzLHQucmlnaHRQb2ludHM9 ci5yaWdodFBvaW50cyx0LmNvdW50PXIuY291bnR9ZnVuY3Rpb24gbCh0LGUpe3ZhciByPXQu aW50ZXJ2YWxzKFtdKTtyLnB1c2goZSkscyh0LHIpfWZ1bmN0aW9uIGModCxlKXt2YXIgcj10 LmludGVydmFscyhbXSksbj1yLmluZGV4T2YoZSk7cmV0dXJuIG48MD8wOihyLnNwbGljZShu LDEpLHModCxyKSwxKX1mdW5jdGlvbiB1KHQsZSxyKXtmb3IodmFyIG49MDtuPHQubGVuZ3Ro JiZ0W25dWzBdPD1lOysrbil7dmFyIGk9cih0W25dKTtpZihpKXJldHVybiBpfX1mdW5jdGlv biBmKHQsZSxyKXtmb3IodmFyIG49dC5sZW5ndGgtMTtuPj0wJiZ0W25dWzFdPj1lOy0tbil7 dmFyIGk9cih0W25dKTtpZihpKXJldHVybiBpfX1mdW5jdGlvbiBoKHQsZSl7Zm9yKHZhciBy PTA7cjx0Lmxlbmd0aDsrK3Ipe3ZhciBuPWUodFtyXSk7aWYobilyZXR1cm4gbn19ZnVuY3Rp b24gcCh0LGUpe3JldHVybiB0LWV9ZnVuY3Rpb24gZCh0LGUpe3ZhciByPXRbMF0tZVswXTty ZXR1cm4gcnx8dFsxXS1lWzFdfWZ1bmN0aW9uIG0odCxlKXt2YXIgcj10WzFdLWVbMV07cmV0 dXJuIHJ8fHRbMF0tZVswXX1mdW5jdGlvbiBnKHQpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4g bnVsbDtmb3IodmFyIGU9W10scj0wO3I8dC5sZW5ndGg7KytyKWUucHVzaCh0W3JdWzBdLHRb cl1bMV0pO2Uuc29ydChwKTt2YXIgbj1lW2UubGVuZ3RoPj4xXSxhPVtdLG89W10scz1bXTtm b3Iocj0wO3I8dC5sZW5ndGg7KytyKXt2YXIgbD10W3JdO2xbMV08bj9hLnB1c2gobCk6bjxs WzBdP28ucHVzaChsKTpzLnB1c2gobCl9dmFyIGM9cyx1PXMuc2xpY2UoKTtyZXR1cm4gYy5z b3J0KGQpLHUuc29ydChtKSxuZXcgaShuLGcoYSksZyhvKSxjLHUpfWZ1bmN0aW9uIHYodCl7 dGhpcy5yb290PXR9YS5pbnRlcnZhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIHQucHVzaC5hcHBs eSh0LHRoaXMubGVmdFBvaW50cyksdGhpcy5sZWZ0JiZ0aGlzLmxlZnQuaW50ZXJ2YWxzKHQp LHRoaXMucmlnaHQmJnRoaXMucmlnaHQuaW50ZXJ2YWxzKHQpLHR9LGEuaW5zZXJ0PWZ1bmN0 aW9uKHQpe3ZhciBlPXRoaXMuY291bnQtdGhpcy5sZWZ0UG9pbnRzLmxlbmd0aDtpZih0aGlz LmNvdW50Kz0xLHRbMV08dGhpcy5taWQpdGhpcy5sZWZ0PzQqKHRoaXMubGVmdC5jb3VudCsx KT4zKihlKzEpP2wodGhpcyx0KTp0aGlzLmxlZnQuaW5zZXJ0KHQpOnRoaXMubGVmdD1nKFt0 XSk7ZWxzZSBpZih0WzBdPnRoaXMubWlkKXRoaXMucmlnaHQ/NCoodGhpcy5yaWdodC5jb3Vu dCsxKT4zKihlKzEpP2wodGhpcyx0KTp0aGlzLnJpZ2h0Lmluc2VydCh0KTp0aGlzLnJpZ2h0 PWcoW3RdKTtlbHNle3ZhciByPW4uZ2UodGhpcy5sZWZ0UG9pbnRzLHQsZCksaT1uLmdlKHRo aXMucmlnaHRQb2ludHMsdCxtKTt0aGlzLmxlZnRQb2ludHMuc3BsaWNlKHIsMCx0KSx0aGlz LnJpZ2h0UG9pbnRzLnNwbGljZShpLDAsdCl9fSxhLnJlbW92ZT1mdW5jdGlvbih0KXt2YXIg ZT10aGlzLmNvdW50LXRoaXMubGVmdFBvaW50cztpZih0WzFdPHRoaXMubWlkKXJldHVybiB0 aGlzLmxlZnQ/NCoodGhpcy5yaWdodD90aGlzLnJpZ2h0LmNvdW50OjApPjMqKGUtMSk/Yyh0 aGlzLHQpOjI9PT0ocz10aGlzLmxlZnQucmVtb3ZlKHQpKT8odGhpcy5sZWZ0PW51bGwsdGhp cy5jb3VudC09MSwxKTooMT09PXMmJih0aGlzLmNvdW50LT0xKSxzKTowO2lmKHRbMF0+dGhp cy5taWQpcmV0dXJuIHRoaXMucmlnaHQ/NCoodGhpcy5sZWZ0P3RoaXMubGVmdC5jb3VudDow KT4zKihlLTEpP2ModGhpcyx0KToyPT09KHM9dGhpcy5yaWdodC5yZW1vdmUodCkpPyh0aGlz LnJpZ2h0PW51bGwsdGhpcy5jb3VudC09MSwxKTooMT09PXMmJih0aGlzLmNvdW50LT0xKSxz KTowO2lmKDE9PT10aGlzLmNvdW50KXJldHVybiB0aGlzLmxlZnRQb2ludHNbMF09PT10PzI6 MDtpZigxPT09dGhpcy5sZWZ0UG9pbnRzLmxlbmd0aCYmdGhpcy5sZWZ0UG9pbnRzWzBdPT09 dCl7aWYodGhpcy5sZWZ0JiZ0aGlzLnJpZ2h0KXtmb3IodmFyIHI9dGhpcyxpPXRoaXMubGVm dDtpLnJpZ2h0OylyPWksaT1pLnJpZ2h0O2lmKHI9PT10aGlzKWkucmlnaHQ9dGhpcy5yaWdo dDtlbHNle3ZhciBhPXRoaXMubGVmdCxzPXRoaXMucmlnaHQ7ci5jb3VudC09aS5jb3VudCxy LnJpZ2h0PWkubGVmdCxpLmxlZnQ9YSxpLnJpZ2h0PXN9byh0aGlzLGkpLHRoaXMuY291bnQ9 KHRoaXMubGVmdD90aGlzLmxlZnQuY291bnQ6MCkrKHRoaXMucmlnaHQ/dGhpcy5yaWdodC5j b3VudDowKSt0aGlzLmxlZnRQb2ludHMubGVuZ3RofWVsc2UgdGhpcy5sZWZ0P28odGhpcyx0 aGlzLmxlZnQpOm8odGhpcyx0aGlzLnJpZ2h0KTtyZXR1cm4gMX1mb3IoYT1uLmdlKHRoaXMu bGVmdFBvaW50cyx0LGQpO2E8dGhpcy5sZWZ0UG9pbnRzLmxlbmd0aCYmdGhpcy5sZWZ0UG9p bnRzW2FdWzBdPT09dFswXTsrK2EpaWYodGhpcy5sZWZ0UG9pbnRzW2FdPT09dCl7dGhpcy5j b3VudC09MSx0aGlzLmxlZnRQb2ludHMuc3BsaWNlKGEsMSk7Zm9yKHM9bi5nZSh0aGlzLnJp Z2h0UG9pbnRzLHQsbSk7czx0aGlzLnJpZ2h0UG9pbnRzLmxlbmd0aCYmdGhpcy5yaWdodFBv aW50c1tzXVsxXT09PXRbMV07KytzKWlmKHRoaXMucmlnaHRQb2ludHNbc109PT10KXJldHVy biB0aGlzLnJpZ2h0UG9pbnRzLnNwbGljZShzLDEpLDF9cmV0dXJuIDB9LGEucXVlcnlQb2lu dD1mdW5jdGlvbih0LGUpe2lmKHQ8dGhpcy5taWQpe2lmKHRoaXMubGVmdClpZihyPXRoaXMu bGVmdC5xdWVyeVBvaW50KHQsZSkpcmV0dXJuIHI7cmV0dXJuIHUodGhpcy5sZWZ0UG9pbnRz LHQsZSl9aWYodD50aGlzLm1pZCl7dmFyIHI7aWYodGhpcy5yaWdodClpZihyPXRoaXMucmln aHQucXVlcnlQb2ludCh0LGUpKXJldHVybiByO3JldHVybiBmKHRoaXMucmlnaHRQb2ludHMs dCxlKX1yZXR1cm4gaCh0aGlzLmxlZnRQb2ludHMsZSl9LGEucXVlcnlJbnRlcnZhbD1mdW5j dGlvbih0LGUscil7dmFyIG47aWYodDx0aGlzLm1pZCYmdGhpcy5sZWZ0JiYobj10aGlzLmxl ZnQucXVlcnlJbnRlcnZhbCh0LGUscikpKXJldHVybiBuO2lmKGU+dGhpcy5taWQmJnRoaXMu cmlnaHQmJihuPXRoaXMucmlnaHQucXVlcnlJbnRlcnZhbCh0LGUscikpKXJldHVybiBuO3Jl dHVybiBlPHRoaXMubWlkP3UodGhpcy5sZWZ0UG9pbnRzLGUscik6dD50aGlzLm1pZD9mKHRo aXMucmlnaHRQb2ludHMsdCxyKTpoKHRoaXMubGVmdFBvaW50cyxyKX07dmFyIHk9di5wcm90 b3R5cGU7eS5pbnNlcnQ9ZnVuY3Rpb24odCl7dGhpcy5yb290P3RoaXMucm9vdC5pbnNlcnQo dCk6dGhpcy5yb290PW5ldyBpKHRbMF0sbnVsbCxudWxsLFt0XSxbdF0pfSx5LnJlbW92ZT1m dW5jdGlvbih0KXtpZih0aGlzLnJvb3Qpe3ZhciBlPXRoaXMucm9vdC5yZW1vdmUodCk7cmV0 dXJuIDI9PT1lJiYodGhpcy5yb290PW51bGwpLDAhPT1lfXJldHVybiExfSx5LnF1ZXJ5UG9p bnQ9ZnVuY3Rpb24odCxlKXtpZih0aGlzLnJvb3QpcmV0dXJuIHRoaXMucm9vdC5xdWVyeVBv aW50KHQsZSl9LHkucXVlcnlJbnRlcnZhbD1mdW5jdGlvbih0LGUscil7aWYodDw9ZSYmdGhp cy5yb290KXJldHVybiB0aGlzLnJvb3QucXVlcnlJbnRlcnZhbCh0LGUscil9LE9iamVjdC5k ZWZpbmVQcm9wZXJ0eSh5LCJjb3VudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJv b3Q/dGhpcy5yb290LmNvdW50OjB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHksImludGVy dmFscyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJvb3Q/dGhpcy5yb290LmludGVy dmFscyhbXSk6W119fSl9LHsiYmluYXJ5LXNlYXJjaC1ib3VuZHMiOjMxfV0sMjM1OltmdW5j dGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFy IGU9bmV3IEFycmF5KHQpLHI9MDtyPHQ7KytyKWVbcl09cjtyZXR1cm4gZX19LHt9XSwyMzY6 W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9ITB9LHt9XSwyMzc6W2Z1bmN0aW9uKHQsZSxy KXtmdW5jdGlvbiBuKHQpe3JldHVybiEhdC5jb25zdHJ1Y3RvciYmImZ1bmN0aW9uIj09dHlw ZW9mIHQuY29uc3RydWN0b3IuaXNCdWZmZXImJnQuY29uc3RydWN0b3IuaXNCdWZmZXIodCl9 Ci8qIQogKiBEZXRlcm1pbmUgaWYgYW4gb2JqZWN0IGlzIGEgQnVmZmVyCiAqCiAqIEBhdXRo b3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmc+CiAqIEBsaWNl bnNlICBNSVQKICovCmUuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmKG4o dCl8fGZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0LnJlYWRGbG9hdExF JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5zbGljZSYmbih0LnNsaWNlKDAsMCkpfSh0KXx8ISF0 Ll9pc0J1ZmZlcil9fSx7fV0sMjM4OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Uu ZXhwb3J0cz1hLGUuZXhwb3J0cy5pc01vYmlsZT1hLGUuZXhwb3J0cy5kZWZhdWx0PWE7dmFy IG49LyhhbmRyb2lkfGJiXGQrfG1lZWdvKS4rbW9iaWxlfGF2YW50Z298YmFkYVwvfGJsYWNr YmVycnl8YmxhemVyfGNvbXBhbHxlbGFpbmV8ZmVubmVjfGhpcHRvcHxpZW1vYmlsZXxpcCho b25lfG9kKXxpcmlzfGtpbmRsZXxsZ2UgfG1hZW1vfG1pZHB8bW1wfG1vYmlsZS4rZmlyZWZv eHxuZXRmcm9udHxvcGVyYSBtKG9ifGluKWl8cGFsbSggb3MpP3xwaG9uZXxwKGl4aXxyZSlc L3xwbHVja2VyfHBvY2tldHxwc3B8c2VyaWVzWzQ2XTB8c3ltYmlhbnx0cmVvfHVwXC4oYnJv d3NlcnxsaW5rKXx2b2RhZm9uZXx3YXB8d2luZG93cyAoY2V8cGhvbmUpfHhkYXx4aWluby9p LGk9LyhhbmRyb2lkfGJiXGQrfG1lZWdvKS4rbW9iaWxlfGF2YW50Z298YmFkYVwvfGJsYWNr YmVycnl8YmxhemVyfGNvbXBhbHxlbGFpbmV8ZmVubmVjfGhpcHRvcHxpZW1vYmlsZXxpcCho b25lfG9kKXxpcmlzfGtpbmRsZXxsZ2UgfG1hZW1vfG1pZHB8bW1wfG1vYmlsZS4rZmlyZWZv eHxuZXRmcm9udHxvcGVyYSBtKG9ifGluKWl8cGFsbSggb3MpP3xwaG9uZXxwKGl4aXxyZSlc L3xwbHVja2VyfHBvY2tldHxwc3B8c2VyaWVzWzQ2XTB8c3ltYmlhbnx0cmVvfHVwXC4oYnJv d3NlcnxsaW5rKXx2b2RhZm9uZXx3YXB8d2luZG93cyAoY2V8cGhvbmUpfHhkYXx4aWlub3xh bmRyb2lkfGlwYWR8cGxheWJvb2t8c2lsay9pO2Z1bmN0aW9uIGEodCl7dHx8KHQ9e30pO3Zh ciBlPXQudWE7aWYoZXx8InVuZGVmaW5lZCI9PXR5cGVvZiBuYXZpZ2F0b3J8fChlPW5hdmln YXRvci51c2VyQWdlbnQpLGUmJmUuaGVhZGVycyYmInN0cmluZyI9PXR5cGVvZiBlLmhlYWRl cnNbInVzZXItYWdlbnQiXSYmKGU9ZS5oZWFkZXJzWyJ1c2VyLWFnZW50Il0pLCJzdHJpbmci IT10eXBlb2YgZSlyZXR1cm4hMTt2YXIgcj10LnRhYmxldD9pLnRlc3QoZSk6bi50ZXN0KGUp O3JldHVybiFyJiZ0LnRhYmxldCYmdC5mZWF0dXJlRGV0ZWN0JiZuYXZpZ2F0b3ImJm5hdmln YXRvci5tYXhUb3VjaFBvaW50cz4xJiYtMSE9PWUuaW5kZXhPZigiTWFjaW50b3NoIikmJi0x IT09ZS5pbmRleE9mKCJTYWZhcmkiKSYmKHI9ITApLHJ9fSx7fV0sMjM5OltmdW5jdGlvbih0 LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGUscj10 Lmxlbmd0aCxuPTA7bjxyO24rKylpZigoKGU9dC5jaGFyQ29kZUF0KG4pKTw5fHxlPjEzKSYm MzIhPT1lJiYxMzMhPT1lJiYxNjAhPT1lJiY1NzYwIT09ZSYmNjE1OCE9PWUmJihlPDgxOTJ8 fGU+ODIwNSkmJjgyMzIhPT1lJiY4MjMzIT09ZSYmODIzOSE9PWUmJjgyODchPT1lJiY4Mjg4 IT09ZSYmMTIyODghPT1lJiY2NTI3OSE9PWUpcmV0dXJuITE7cmV0dXJuITB9fSx7fV0sMjQw OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdCoo MS1yKStlKnJ9fSx7fV0sMjQxOltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiLi9ub3JtYWxp emUiKSxpPXQoImdsLW1hdDQvY3JlYXRlIiksYT10KCJnbC1tYXQ0L2Nsb25lIiksbz10KCJn bC1tYXQ0L2RldGVybWluYW50Iikscz10KCJnbC1tYXQ0L2ludmVydCIpLGw9dCgiZ2wtbWF0 NC90cmFuc3Bvc2UiKSxjPXtsZW5ndGg6dCgiZ2wtdmVjMy9sZW5ndGgiKSxub3JtYWxpemU6 dCgiZ2wtdmVjMy9ub3JtYWxpemUiKSxkb3Q6dCgiZ2wtdmVjMy9kb3QiKSxjcm9zczp0KCJn bC12ZWMzL2Nyb3NzIil9LHU9aSgpLGY9aSgpLGg9WzAsMCwwLDBdLHA9W1swLDAsMF0sWzAs MCwwXSxbMCwwLDBdXSxkPVswLDAsMF07ZnVuY3Rpb24gbSh0LGUscixuLGkpe3RbMF09ZVsw XSpuK3JbMF0qaSx0WzFdPWVbMV0qbityWzFdKmksdFsyXT1lWzJdKm4rclsyXSppfWUuZXhw b3J0cz1mdW5jdGlvbih0LGUscixpLGcsdil7aWYoZXx8KGU9WzAsMCwwXSkscnx8KHI9WzAs MCwwXSksaXx8KGk9WzAsMCwwXSksZ3x8KGc9WzAsMCwwLDFdKSx2fHwodj1bMCwwLDAsMV0p LCFuKHUsdCkpcmV0dXJuITE7aWYoYShmLHUpLGZbM109MCxmWzddPTAsZlsxMV09MCxmWzE1 XT0xLE1hdGguYWJzKG8oZik8MWUtOCkpcmV0dXJuITE7dmFyIHkseCxiLF8sdyxULGssQT11 WzNdLE09dVs3XSxTPXVbMTFdLEU9dVsxMl0sTD11WzEzXSxDPXVbMTRdLFA9dVsxNV07aWYo MCE9PUF8fDAhPT1NfHwwIT09Uyl7aWYoaFswXT1BLGhbMV09TSxoWzJdPVMsaFszXT1QLCFz KGYsZikpcmV0dXJuITE7bChmLGYpLHk9ZyxiPWYsXz0oeD1oKVswXSx3PXhbMV0sVD14WzJd LGs9eFszXSx5WzBdPWJbMF0qXytiWzRdKncrYls4XSpUK2JbMTJdKmsseVsxXT1iWzFdKl8r Yls1XSp3K2JbOV0qVCtiWzEzXSprLHlbMl09YlsyXSpfK2JbNl0qdytiWzEwXSpUK2JbMTRd KmsseVszXT1iWzNdKl8rYls3XSp3K2JbMTFdKlQrYlsxNV0qa31lbHNlIGdbMF09Z1sxXT1n WzJdPTAsZ1szXT0xO2lmKGVbMF09RSxlWzFdPUwsZVsyXT1DLGZ1bmN0aW9uKHQsZSl7dFsw XVswXT1lWzBdLHRbMF1bMV09ZVsxXSx0WzBdWzJdPWVbMl0sdFsxXVswXT1lWzRdLHRbMV1b MV09ZVs1XSx0WzFdWzJdPWVbNl0sdFsyXVswXT1lWzhdLHRbMl1bMV09ZVs5XSx0WzJdWzJd PWVbMTBdfShwLHUpLHJbMF09Yy5sZW5ndGgocFswXSksYy5ub3JtYWxpemUocFswXSxwWzBd KSxpWzBdPWMuZG90KHBbMF0scFsxXSksbShwWzFdLHBbMV0scFswXSwxLC1pWzBdKSxyWzFd PWMubGVuZ3RoKHBbMV0pLGMubm9ybWFsaXplKHBbMV0scFsxXSksaVswXS89clsxXSxpWzFd PWMuZG90KHBbMF0scFsyXSksbShwWzJdLHBbMl0scFswXSwxLC1pWzFdKSxpWzJdPWMuZG90 KHBbMV0scFsyXSksbShwWzJdLHBbMl0scFsxXSwxLC1pWzJdKSxyWzJdPWMubGVuZ3RoKHBb Ml0pLGMubm9ybWFsaXplKHBbMl0scFsyXSksaVsxXS89clsyXSxpWzJdLz1yWzJdLGMuY3Jv c3MoZCxwWzFdLHBbMl0pLGMuZG90KHBbMF0sZCk8MClmb3IodmFyIEk9MDtJPDM7SSsrKXJb SV0qPS0xLHBbSV1bMF0qPS0xLHBbSV1bMV0qPS0xLHBbSV1bMl0qPS0xO3JldHVybiB2WzBd PS41Kk1hdGguc3FydChNYXRoLm1heCgxK3BbMF1bMF0tcFsxXVsxXS1wWzJdWzJdLDApKSx2 WzFdPS41Kk1hdGguc3FydChNYXRoLm1heCgxLXBbMF1bMF0rcFsxXVsxXS1wWzJdWzJdLDAp KSx2WzJdPS41Kk1hdGguc3FydChNYXRoLm1heCgxLXBbMF1bMF0tcFsxXVsxXStwWzJdWzJd LDApKSx2WzNdPS41Kk1hdGguc3FydChNYXRoLm1heCgxK3BbMF1bMF0rcFsxXVsxXStwWzJd WzJdLDApKSxwWzJdWzFdPnBbMV1bMl0mJih2WzBdPS12WzBdKSxwWzBdWzJdPnBbMl1bMF0m Jih2WzFdPS12WzFdKSxwWzFdWzBdPnBbMF1bMV0mJih2WzJdPS12WzJdKSwhMH19LHsiLi9u b3JtYWxpemUiOjI0MiwiZ2wtbWF0NC9jbG9uZSI6OTIsImdsLW1hdDQvY3JlYXRlIjo5Mywi Z2wtbWF0NC9kZXRlcm1pbmFudCI6OTQsImdsLW1hdDQvaW52ZXJ0Ijo5OCwiZ2wtbWF0NC90 cmFuc3Bvc2UiOjEwOSwiZ2wtdmVjMy9jcm9zcyI6MTU3LCJnbC12ZWMzL2RvdCI6MTYyLCJn bC12ZWMzL2xlbmd0aCI6MTcyLCJnbC12ZWMzL25vcm1hbGl6ZSI6MTc5fV0sMjQyOltmdW5j dGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZVsxNV07aWYoMD09 PXIpcmV0dXJuITE7Zm9yKHZhciBuPTEvcixpPTA7aTwxNjtpKyspdFtpXT1lW2ldKm47cmV0 dXJuITB9fSx7fV0sMjQzOltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiZ2wtdmVjMy9sZXJw IiksaT10KCJtYXQ0LXJlY29tcG9zZSIpLGE9dCgibWF0NC1kZWNvbXBvc2UiKSxvPXQoImds LW1hdDQvZGV0ZXJtaW5hbnQiKSxzPXQoInF1YXQtc2xlcnAiKSxsPWYoKSxjPWYoKSx1PWYo KTtmdW5jdGlvbiBmKCl7cmV0dXJue3RyYW5zbGF0ZTpoKCksc2NhbGU6aCgxKSxza2V3Omgo KSxwZXJzcGVjdGl2ZTpbMCwwLDAsMV0scXVhdGVybmlvbjpbMCwwLDAsMV19fWZ1bmN0aW9u IGgodCl7cmV0dXJuW3R8fDAsdHx8MCx0fHwwXX1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIs Zil7aWYoMD09PW8oZSl8fDA9PT1vKHIpKXJldHVybiExO3ZhciBoPWEoZSxsLnRyYW5zbGF0 ZSxsLnNjYWxlLGwuc2tldyxsLnBlcnNwZWN0aXZlLGwucXVhdGVybmlvbikscD1hKHIsYy50 cmFuc2xhdGUsYy5zY2FsZSxjLnNrZXcsYy5wZXJzcGVjdGl2ZSxjLnF1YXRlcm5pb24pO3Jl dHVybiEoIWh8fCFwKSYmKG4odS50cmFuc2xhdGUsbC50cmFuc2xhdGUsYy50cmFuc2xhdGUs Ziksbih1LnNrZXcsbC5za2V3LGMuc2tldyxmKSxuKHUuc2NhbGUsbC5zY2FsZSxjLnNjYWxl LGYpLG4odS5wZXJzcGVjdGl2ZSxsLnBlcnNwZWN0aXZlLGMucGVyc3BlY3RpdmUsZikscyh1 LnF1YXRlcm5pb24sbC5xdWF0ZXJuaW9uLGMucXVhdGVybmlvbixmKSxpKHQsdS50cmFuc2xh dGUsdS5zY2FsZSx1LnNrZXcsdS5wZXJzcGVjdGl2ZSx1LnF1YXRlcm5pb24pLCEwKX19LHsi Z2wtbWF0NC9kZXRlcm1pbmFudCI6OTQsImdsLXZlYzMvbGVycCI6MTczLCJtYXQ0LWRlY29t cG9zZSI6MjQxLCJtYXQ0LXJlY29tcG9zZSI6MjQ0LCJxdWF0LXNsZXJwIjoyNzF9XSwyNDQ6 W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj17aWRlbnRpdHk6dCgiZ2wtbWF0NC9pZGVudGl0eSIp LHRyYW5zbGF0ZTp0KCJnbC1tYXQ0L3RyYW5zbGF0ZSIpLG11bHRpcGx5OnQoImdsLW1hdDQv bXVsdGlwbHkiKSxjcmVhdGU6dCgiZ2wtbWF0NC9jcmVhdGUiKSxzY2FsZTp0KCJnbC1tYXQ0 L3NjYWxlIiksZnJvbVJvdGF0aW9uVHJhbnNsYXRpb246dCgiZ2wtbWF0NC9mcm9tUm90YXRp b25UcmFuc2xhdGlvbiIpfSxpPShuLmNyZWF0ZSgpLG4uY3JlYXRlKCkpO2UuZXhwb3J0cz1m dW5jdGlvbih0LGUscixhLG8scyl7cmV0dXJuIG4uaWRlbnRpdHkodCksbi5mcm9tUm90YXRp b25UcmFuc2xhdGlvbih0LHMsZSksdFszXT1vWzBdLHRbN109b1sxXSx0WzExXT1vWzJdLHRb MTVdPW9bM10sbi5pZGVudGl0eShpKSwwIT09YVsyXSYmKGlbOV09YVsyXSxuLm11bHRpcGx5 KHQsdCxpKSksMCE9PWFbMV0mJihpWzldPTAsaVs4XT1hWzFdLG4ubXVsdGlwbHkodCx0LGkp KSwwIT09YVswXSYmKGlbOF09MCxpWzRdPWFbMF0sbi5tdWx0aXBseSh0LHQsaSkpLG4uc2Nh bGUodCx0LHIpLHR9fSx7ImdsLW1hdDQvY3JlYXRlIjo5MywiZ2wtbWF0NC9mcm9tUm90YXRp b25UcmFuc2xhdGlvbiI6OTYsImdsLW1hdDQvaWRlbnRpdHkiOjk3LCJnbC1tYXQ0L211bHRp cGx5IjoxMDAsImdsLW1hdDQvc2NhbGUiOjEwNywiZ2wtbWF0NC90cmFuc2xhdGUiOjEwOH1d LDI0NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJiaW5hcnktc2Vh cmNoLWJvdW5kcyIpLGk9dCgibWF0NC1pbnRlcnBvbGF0ZSIpLGE9dCgiZ2wtbWF0NC9pbnZl cnQiKSxvPXQoImdsLW1hdDQvcm90YXRlWCIpLHM9dCgiZ2wtbWF0NC9yb3RhdGVZIiksbD10 KCJnbC1tYXQ0L3JvdGF0ZVoiKSxjPXQoImdsLW1hdDQvbG9va0F0IiksdT10KCJnbC1tYXQ0 L3RyYW5zbGF0ZSIpLGY9KHQoImdsLW1hdDQvc2NhbGUiKSx0KCJnbC12ZWMzL25vcm1hbGl6 ZSIpKSxoPVswLDAsMF07ZnVuY3Rpb24gcCh0KXt0aGlzLl9jb21wb25lbnRzPXQuc2xpY2Uo KSx0aGlzLl90aW1lPVswXSx0aGlzLnByZXZNYXRyaXg9dC5zbGljZSgpLHRoaXMubmV4dE1h dHJpeD10LnNsaWNlKCksdGhpcy5jb21wdXRlZE1hdHJpeD10LnNsaWNlKCksdGhpcy5jb21w dXRlZEludmVyc2U9dC5zbGljZSgpLHRoaXMuY29tcHV0ZWRFeWU9WzAsMCwwXSx0aGlzLmNv bXB1dGVkVXA9WzAsMCwwXSx0aGlzLmNvbXB1dGVkQ2VudGVyPVswLDAsMF0sdGhpcy5jb21w dXRlZFJhZGl1cz1bMF0sdGhpcy5fbGltaXRzPVstMS8wLDEvMF19ZS5leHBvcnRzPWZ1bmN0 aW9uKHQpe3JldHVybiBuZXcgcCgodD10fHx7fSkubWF0cml4fHxbMSwwLDAsMCwwLDEsMCww LDAsMCwxLDAsMCwwLDAsMV0pfTt2YXIgZD1wLnByb3RvdHlwZTtkLnJlY2FsY01hdHJpeD1m dW5jdGlvbih0KXt2YXIgZT10aGlzLl90aW1lLHI9bi5sZShlLHQpLG89dGhpcy5jb21wdXRl ZE1hdHJpeDtpZighKHI8MCkpe3ZhciBzPXRoaXMuX2NvbXBvbmVudHM7aWYocj09PWUubGVu Z3RoLTEpZm9yKHZhciBsPTE2KnIsYz0wO2M8MTY7KytjKW9bY109c1tsKytdO2Vsc2V7dmFy IHU9ZVtyKzFdLWVbcl0saD0obD0xNipyLHRoaXMucHJldk1hdHJpeCkscD0hMDtmb3IoYz0w O2M8MTY7KytjKWhbY109c1tsKytdO3ZhciBkPXRoaXMubmV4dE1hdHJpeDtmb3IoYz0wO2M8 MTY7KytjKWRbY109c1tsKytdLHA9cCYmaFtjXT09PWRbY107aWYodTwxZS02fHxwKWZvcihj PTA7YzwxNjsrK2Mpb1tjXT1oW2NdO2Vsc2UgaShvLGgsZCwodC1lW3JdKS91KX12YXIgbT10 aGlzLmNvbXB1dGVkVXA7bVswXT1vWzFdLG1bMV09b1s1XSxtWzJdPW9bOV0sZihtLG0pO3Zh ciBnPXRoaXMuY29tcHV0ZWRJbnZlcnNlO2EoZyxvKTt2YXIgdj10aGlzLmNvbXB1dGVkRXll LHk9Z1sxNV07dlswXT1nWzEyXS95LHZbMV09Z1sxM10veSx2WzJdPWdbMTRdL3k7dmFyIHg9 dGhpcy5jb21wdXRlZENlbnRlcixiPU1hdGguZXhwKHRoaXMuY29tcHV0ZWRSYWRpdXNbMF0p O2ZvcihjPTA7YzwzOysrYyl4W2NdPXZbY10tb1syKzQqY10qYn19LGQuaWRsZT1mdW5jdGlv bih0KXtpZighKHQ8dGhpcy5sYXN0VCgpKSl7Zm9yKHZhciBlPXRoaXMuX2NvbXBvbmVudHMs cj1lLmxlbmd0aC0xNixuPTA7bjwxNjsrK24pZS5wdXNoKGVbcisrXSk7dGhpcy5fdGltZS5w dXNoKHQpfX0sZC5mbHVzaD1mdW5jdGlvbih0KXt2YXIgZT1uLmd0KHRoaXMuX3RpbWUsdCkt MjtlPDB8fCh0aGlzLl90aW1lLnNwbGljZSgwLGUpLHRoaXMuX2NvbXBvbmVudHMuc3BsaWNl KDAsMTYqZSkpfSxkLmxhc3RUPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RpbWVbdGhpcy5f dGltZS5sZW5ndGgtMV19LGQubG9va0F0PWZ1bmN0aW9uKHQsZSxyLG4pe3RoaXMucmVjYWxj TWF0cml4KHQpLGU9ZXx8dGhpcy5jb21wdXRlZEV5ZSxyPXJ8fGgsbj1ufHx0aGlzLmNvbXB1 dGVkVXAsdGhpcy5zZXRNYXRyaXgodCxjKHRoaXMuY29tcHV0ZWRNYXRyaXgsZSxyLG4pKTtm b3IodmFyIGk9MCxhPTA7YTwzOysrYSlpKz1NYXRoLnBvdyhyW2FdLWVbYV0sMik7aT1NYXRo LmxvZyhNYXRoLnNxcnQoaSkpLHRoaXMuY29tcHV0ZWRSYWRpdXNbMF09aX0sZC5yb3RhdGU9 ZnVuY3Rpb24odCxlLHIsbil7dGhpcy5yZWNhbGNNYXRyaXgodCk7dmFyIGk9dGhpcy5jb21w dXRlZEludmVyc2U7ZSYmcyhpLGksZSksciYmbyhpLGksciksbiYmbChpLGksbiksdGhpcy5z ZXRNYXRyaXgodCxhKHRoaXMuY29tcHV0ZWRNYXRyaXgsaSkpfTt2YXIgbT1bMCwwLDBdO2Qu cGFuPWZ1bmN0aW9uKHQsZSxyLG4pe21bMF09LShlfHwwKSxtWzFdPS0ocnx8MCksbVsyXT0t KG58fDApLHRoaXMucmVjYWxjTWF0cml4KHQpO3ZhciBpPXRoaXMuY29tcHV0ZWRJbnZlcnNl O3UoaSxpLG0pLHRoaXMuc2V0TWF0cml4KHQsYShpLGkpKX0sZC50cmFuc2xhdGU9ZnVuY3Rp b24odCxlLHIsbil7bVswXT1lfHwwLG1bMV09cnx8MCxtWzJdPW58fDAsdGhpcy5yZWNhbGNN YXRyaXgodCk7dmFyIGk9dGhpcy5jb21wdXRlZE1hdHJpeDt1KGksaSxtKSx0aGlzLnNldE1h dHJpeCh0LGkpfSxkLnNldE1hdHJpeD1mdW5jdGlvbih0LGUpe2lmKCEodDx0aGlzLmxhc3RU KCkpKXt0aGlzLl90aW1lLnB1c2godCk7Zm9yKHZhciByPTA7cjwxNjsrK3IpdGhpcy5fY29t cG9uZW50cy5wdXNoKGVbcl0pfX0sZC5zZXREaXN0YW5jZT1mdW5jdGlvbih0LGUpe3RoaXMu Y29tcHV0ZWRSYWRpdXNbMF09ZX0sZC5zZXREaXN0YW5jZUxpbWl0cz1mdW5jdGlvbih0LGUp e3ZhciByPXRoaXMuX2xpbWl0cztyWzBdPXQsclsxXT1lfSxkLmdldERpc3RhbmNlTGltaXRz PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2xpbWl0cztyZXR1cm4gdD8odFswXT1lWzBdLHRb MV09ZVsxXSx0KTplfX0seyJiaW5hcnktc2VhcmNoLWJvdW5kcyI6MzEsImdsLW1hdDQvaW52 ZXJ0Ijo5OCwiZ2wtbWF0NC9sb29rQXQiOjk5LCJnbC1tYXQ0L3JvdGF0ZVgiOjEwNCwiZ2wt bWF0NC9yb3RhdGVZIjoxMDUsImdsLW1hdDQvcm90YXRlWiI6MTA2LCJnbC1tYXQ0L3NjYWxl IjoxMDcsImdsLW1hdDQvdHJhbnNsYXRlIjoxMDgsImdsLXZlYzMvbm9ybWFsaXplIjoxNzks Im1hdDQtaW50ZXJwb2xhdGUiOjI0M31dLDI0NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3Ry aWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGg7aWYoZTwzKXtmb3Io dmFyIHI9bmV3IEFycmF5KGUpLGk9MDtpPGU7KytpKXJbaV09aTtyZXR1cm4gMj09PWUmJnRb MF1bMF09PT10WzFdWzBdJiZ0WzBdWzFdPT09dFsxXVsxXT9bMF06cn12YXIgYT1uZXcgQXJy YXkoZSk7Zm9yKGk9MDtpPGU7KytpKWFbaV09aTthLnNvcnQoKGZ1bmN0aW9uKGUscil7dmFy IG49dFtlXVswXS10W3JdWzBdO3JldHVybiBufHx0W2VdWzFdLXRbcl1bMV19KSk7dmFyIG89 W2FbMF0sYVsxXV0scz1bYVswXSxhWzFdXTtmb3IoaT0yO2k8ZTsrK2kpe2Zvcih2YXIgbD1h W2ldLGM9dFtsXSx1PW8ubGVuZ3RoO3U+MSYmbih0W29bdS0yXV0sdFtvW3UtMV1dLGMpPD0w Oyl1LT0xLG8ucG9wKCk7Zm9yKG8ucHVzaChsKSx1PXMubGVuZ3RoO3U+MSYmbih0W3NbdS0y XV0sdFtzW3UtMV1dLGMpPj0wOyl1LT0xLHMucG9wKCk7cy5wdXNoKGwpfXI9bmV3IEFycmF5 KHMubGVuZ3RoK28ubGVuZ3RoLTIpO2Zvcih2YXIgZj0wLGg9KGk9MCxvLmxlbmd0aCk7aTxo OysraSlyW2YrK109b1tpXTtmb3IodmFyIHA9cy5sZW5ndGgtMjtwPjA7LS1wKXJbZisrXT1z W3BdO3JldHVybiByfTt2YXIgbj10KCJyb2J1c3Qtb3JpZW50YXRpb24iKVszXX0seyJyb2J1 c3Qtb3JpZW50YXRpb24iOjI4NH1dLDI0NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtlfHwoZT10LHQ9d2luZG93KTt2YXIgcj0wLGk9 MCxhPTAsbz17c2hpZnQ6ITEsYWx0OiExLGNvbnRyb2w6ITEsbWV0YTohMX0scz0hMTtmdW5j dGlvbiBsKHQpe3ZhciBlPSExO3JldHVybiJhbHRLZXkiaW4gdCYmKGU9ZXx8dC5hbHRLZXkh PT1vLmFsdCxvLmFsdD0hIXQuYWx0S2V5KSwic2hpZnRLZXkiaW4gdCYmKGU9ZXx8dC5zaGlm dEtleSE9PW8uc2hpZnQsby5zaGlmdD0hIXQuc2hpZnRLZXkpLCJjdHJsS2V5ImluIHQmJihl PWV8fHQuY3RybEtleSE9PW8uY29udHJvbCxvLmNvbnRyb2w9ISF0LmN0cmxLZXkpLCJtZXRh S2V5ImluIHQmJihlPWV8fHQubWV0YUtleSE9PW8ubWV0YSxvLm1ldGE9ISF0Lm1ldGFLZXkp LGV9ZnVuY3Rpb24gYyh0LHMpe3ZhciBjPW4ueChzKSx1PW4ueShzKTsiYnV0dG9ucyJpbiBz JiYodD0wfHMuYnV0dG9ucyksKHQhPT1yfHxjIT09aXx8dSE9PWF8fGwocykpJiYocj0wfHQs aT1jfHwwLGE9dXx8MCxlJiZlKHIsaSxhLG8pKX1mdW5jdGlvbiB1KHQpe2MoMCx0KX1mdW5j dGlvbiBmKCl7KHJ8fGl8fGF8fG8uc2hpZnR8fG8uYWx0fHxvLm1ldGF8fG8uY29udHJvbCkm JihpPWE9MCxyPTAsby5zaGlmdD1vLmFsdD1vLmNvbnRyb2w9by5tZXRhPSExLGUmJmUoMCww LDAsbykpfWZ1bmN0aW9uIGgodCl7bCh0KSYmZSYmZShyLGksYSxvKX1mdW5jdGlvbiBwKHQp ezA9PT1uLmJ1dHRvbnModCk/YygwLHQpOmMocix0KX1mdW5jdGlvbiBkKHQpe2MocnxuLmJ1 dHRvbnModCksdCl9ZnVuY3Rpb24gbSh0KXtjKHImfm4uYnV0dG9ucyh0KSx0KX1mdW5jdGlv biBnKCl7c3x8KHM9ITAsdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHApLHQuYWRk RXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixkKSx0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl dXAiLG0pLHQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsdSksdC5hZGRFdmVudExp c3RlbmVyKCJtb3VzZWVudGVyIix1KSx0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0Iix1 KSx0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsdSksdC5hZGRFdmVudExpc3RlbmVy KCJibHVyIixmKSx0LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIixoKSx0LmFkZEV2ZW50TGlz dGVuZXIoImtleWRvd24iLGgpLHQuYWRkRXZlbnRMaXN0ZW5lcigia2V5cHJlc3MiLGgpLHQh PT13aW5kb3cmJih3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsZiksd2luZG93LmFk ZEV2ZW50TGlzdGVuZXIoImtleXVwIixoKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigia2V5 ZG93biIsaCksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleXByZXNzIixoKSkpfWcoKTt2 YXIgdj17ZWxlbWVudDp0fTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnRpZXModix7ZW5h YmxlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHN9LHNldDpmdW5jdGlvbihlKXtlP2coKTpm dW5jdGlvbigpe2lmKCFzKXJldHVybjtzPSExLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91 c2Vtb3ZlIixwKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsZCksdC5yZW1v dmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIixtKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1v dXNlbGVhdmUiLHUpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciIsdSksdC5y ZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsdSksdC5yZW1vdmVFdmVudExpc3RlbmVy KCJtb3VzZW92ZXIiLHUpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsZiksdC5yZW1v dmVFdmVudExpc3RlbmVyKCJrZXl1cCIsaCksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlk b3duIixoKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleXByZXNzIixoKSx0IT09d2luZG93 JiYod2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLGYpLHdpbmRvdy5yZW1vdmVF dmVudExpc3RlbmVyKCJrZXl1cCIsaCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtl eWRvd24iLGgpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlwcmVzcyIsaCkpfSgp fSxlbnVtZXJhYmxlOiEwfSxidXR0b25zOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcn0sZW51 bWVyYWJsZTohMH0seDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGl9LGVudW1lcmFibGU6ITB9 LHk6e2dldDpmdW5jdGlvbigpe3JldHVybiBhfSxlbnVtZXJhYmxlOiEwfSxtb2RzOntnZXQ6 ZnVuY3Rpb24oKXtyZXR1cm4gb30sZW51bWVyYWJsZTohMH19KSx2fTt2YXIgbj10KCJtb3Vz ZS1ldmVudCIpfSx7Im1vdXNlLWV2ZW50IjoyNDl9XSwyNDg6W2Z1bmN0aW9uKHQsZSxyKXt2 YXIgbj17bGVmdDowLHRvcDowfTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2U9ZXx8dC5j dXJyZW50VGFyZ2V0fHx0LnNyY0VsZW1lbnQsQXJyYXkuaXNBcnJheShyKXx8KHI9WzAsMF0p O3ZhciBpPXQuY2xpZW50WHx8MCxhPXQuY2xpZW50WXx8MCxvPShzPWUscz09PXdpbmRvd3x8 cz09PWRvY3VtZW50fHxzPT09ZG9jdW1lbnQuYm9keT9uOnMuZ2V0Qm91bmRpbmdDbGllbnRS ZWN0KCkpO3ZhciBzO3JldHVybiByWzBdPWktby5sZWZ0LHJbMV09YS1vLnRvcCxyfX0se31d LDI0OTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe3JldHVy biB0LnRhcmdldHx8dC5zcmNFbGVtZW50fHx3aW5kb3d9ci5idXR0b25zPWZ1bmN0aW9uKHQp e2lmKCJvYmplY3QiPT10eXBlb2YgdCl7aWYoImJ1dHRvbnMiaW4gdClyZXR1cm4gdC5idXR0 b25zO2lmKCJ3aGljaCJpbiB0KXtpZigyPT09KGU9dC53aGljaCkpcmV0dXJuIDQ7aWYoMz09 PWUpcmV0dXJuIDI7aWYoZT4wKXJldHVybiAxPDxlLTF9ZWxzZSBpZigiYnV0dG9uImluIHQp e3ZhciBlO2lmKDE9PT0oZT10LmJ1dHRvbikpcmV0dXJuIDQ7aWYoMj09PWUpcmV0dXJuIDI7 aWYoZT49MClyZXR1cm4gMTw8ZX19cmV0dXJuIDB9LHIuZWxlbWVudD1uLHIueD1mdW5jdGlv bih0KXtpZigib2JqZWN0Ij09dHlwZW9mIHQpe2lmKCJvZmZzZXRYImluIHQpcmV0dXJuIHQu b2Zmc2V0WDt2YXIgZT1uKHQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiB0LmNs aWVudFgtZS5sZWZ0fXJldHVybiAwfSxyLnk9ZnVuY3Rpb24odCl7aWYoIm9iamVjdCI9PXR5 cGVvZiB0KXtpZigib2Zmc2V0WSJpbiB0KXJldHVybiB0Lm9mZnNldFk7dmFyIGU9bih0KS5n ZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gdC5jbGllbnRZLWUudG9wfXJldHVybiAw fX0se31dLDI1MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJ0by1w eCIpO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7ImZ1bmN0aW9uIj09dHlwZW9mIHQmJihy PSEhZSxlPXQsdD13aW5kb3cpO3ZhciBpPW4oImV4Iix0KSxhPWZ1bmN0aW9uKHQpe3ImJnQu cHJldmVudERlZmF1bHQoKTt2YXIgbj10LmRlbHRhWHx8MCxhPXQuZGVsdGFZfHwwLG89dC5k ZWx0YVp8fDAscz0xO3N3aXRjaCh0LmRlbHRhTW9kZSl7Y2FzZSAxOnM9aTticmVhaztjYXNl IDI6cz13aW5kb3cuaW5uZXJIZWlnaHR9aWYoYSo9cyxvKj1zLChuKj1zKXx8YXx8bylyZXR1 cm4gZShuLGEsbyx0KX07cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcigid2hlZWwiLGEpLGF9 fSx7InRvLXB4IjozMDR9XSwyNTE6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFy IG49dCgidHlwZWRhcnJheS1wb29sIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Z1bmN0aW9u IGUodCl7dGhyb3cgbmV3IEVycm9yKCJuZGFycmF5LWV4dHJhY3QtY29udG91cjogIit0KX0i b2JqZWN0IiE9dHlwZW9mIHQmJmUoIk11c3Qgc3BlY2lmeSBhcmd1bWVudHMiKTt2YXIgcj10 Lm9yZGVyO0FycmF5LmlzQXJyYXkocil8fGUoIk11c3Qgc3BlY2lmeSBvcmRlciIpO3ZhciBh PXQuYXJyYXlBcmd1bWVudHN8fDE7YTwxJiZlKCJNdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGFy cmF5IGFyZ3VtZW50Iik7dmFyIG89dC5zY2FsYXJBcmd1bWVudHN8fDA7bzwwJiZlKCJTY2Fs YXIgYXJnIGNvdW50IG11c3QgYmUgPiAwIik7ImZ1bmN0aW9uIiE9dHlwZW9mIHQudmVydGV4 JiZlKCJNdXN0IHNwZWNpZnkgdmVydGV4IGNyZWF0aW9uIGZ1bmN0aW9uIik7ImZ1bmN0aW9u IiE9dHlwZW9mIHQuY2VsbCYmZSgiTXVzdCBzcGVjaWZ5IGNlbGwgY3JlYXRpb24gZnVuY3Rp b24iKTsiZnVuY3Rpb24iIT10eXBlb2YgdC5waGFzZSYmZSgiTXVzdCBzcGVjaWZ5IHBoYXNl IGZ1bmN0aW9uIik7Zm9yKHZhciBzPXQuZ2V0dGVyc3x8W10sbD1uZXcgQXJyYXkoYSksYz0w O2M8YTsrK2Mpcy5pbmRleE9mKGMpPj0wP2xbY109ITA6bFtjXT0hMTtyZXR1cm4gZnVuY3Rp b24odCxlLHIsYSxvLHMpe3ZhciBsPVtzLG9dLmpvaW4oIiwiKTtyZXR1cm4oMCxpW2xdKSh0 LGUscixuLm1hbGxvY1VpbnQzMixuLmZyZWVVaW50MzIpfSh0LnZlcnRleCx0LmNlbGwsdC5w aGFzZSwwLHIsbCl9O3ZhciBpPXsiZmFsc2UsMCwxIjpmdW5jdGlvbih0LGUscixuLGkpe3Jl dHVybiBmdW5jdGlvbihhLG8scyxsKXt2YXIgYyx1PTB8YS5zaGFwZVswXSxmPTB8YS5zaGFw ZVsxXSxoPWEuZGF0YSxwPTB8YS5vZmZzZXQsZD0wfGEuc3RyaWRlWzBdLG09MHxhLnN0cmlk ZVsxXSxnPXAsdj0wfC1kLHk9MCx4PTB8LW0sYj0wLF89LWQtbXwwLHc9MCxUPTB8ZCxrPW0t ZCp1fDAsQT0wLE09MCxTPTAsRT0yKnV8MCxMPW4oRSksQz1uKEUpLFA9MCxJPTAsTz0tMSx6 PS0xLEQ9MCxSPTB8LXUsRj0wfHUsQj0wLE49LXUtMXwwLGo9dS0xfDAsVT0wLFY9MCxIPTA7 Zm9yKEE9MDtBPHU7KytBKUxbUCsrXT1yKGhbZ10sbyxzLGwpLGcrPVQ7aWYoZys9ayxmPjAp e2lmKE09MSxMW1ArK109cihoW2ddLG8scyxsKSxnKz1ULHU+MClmb3IoQT0xLGM9aFtnXSxJ PUxbUF09cihjLG8scyxsKSxEPUxbUCtPXSxCPUxbUCtSXSxVPUxbUCtOXSxJPT09RCYmST09 PUImJkk9PT1VfHwoeT1oW2crdl0sYj1oW2creF0sdz1oW2crX10sdChBLE0sYyx5LGIsdyxJ LEQsQixVLG8scyxsKSxWPUNbUF09UysrKSxQKz0xLGcrPVQsQT0yO0E8dTsrK0EpYz1oW2dd LEk9TFtQXT1yKGMsbyxzLGwpLEQ9TFtQK09dLEI9TFtQK1JdLFU9TFtQK05dLEk9PT1EJiZJ PT09QiYmST09PVV8fCh5PWhbZyt2XSxiPWhbZyt4XSx3PWhbZytfXSx0KEEsTSxjLHksYix3 LEksRCxCLFUsbyxzLGwpLFY9Q1tQXT1TKyssVSE9PUQmJmUoQ1tQK09dLFYsdyx5LFUsRCxv LHMsbCkpLFArPTEsZys9VDtmb3IoZys9ayxQPTAsSD1PLE89eix6PUgsSD1SLFI9RixGPUgs SD1OLE49aixqPUgsTT0yO008ZjsrK00pe2lmKExbUCsrXT1yKGhbZ10sbyxzLGwpLGcrPVQs dT4wKWZvcihBPTEsYz1oW2ddLEk9TFtQXT1yKGMsbyxzLGwpLEQ9TFtQK09dLEI9TFtQK1Jd LFU9TFtQK05dLEk9PT1EJiZJPT09QiYmST09PVV8fCh5PWhbZyt2XSxiPWhbZyt4XSx3PWhb ZytfXSx0KEEsTSxjLHksYix3LEksRCxCLFUsbyxzLGwpLFY9Q1tQXT1TKyssVSE9PUImJmUo Q1tQK1JdLFYsYix3LEIsVSxvLHMsbCkpLFArPTEsZys9VCxBPTI7QTx1OysrQSljPWhbZ10s ST1MW1BdPXIoYyxvLHMsbCksRD1MW1ArT10sQj1MW1ArUl0sVT1MW1ArTl0sST09PUQmJkk9 PT1CJiZJPT09VXx8KHk9aFtnK3ZdLGI9aFtnK3hdLHc9aFtnK19dLHQoQSxNLGMseSxiLHcs SSxELEIsVSxvLHMsbCksVj1DW1BdPVMrKyxVIT09QiYmZShDW1ArUl0sVixiLHcsQixVLG8s cyxsKSxVIT09RCYmZShDW1ArT10sVix3LHksVSxELG8scyxsKSksUCs9MSxnKz1UOzEmTSYm KFA9MCksSD1PLE89eix6PUgsSD1SLFI9RixGPUgsSD1OLE49aixqPUgsZys9a319aShDKSxp KEwpfX0sImZhbHNlLDEsMCI6ZnVuY3Rpb24odCxlLHIsbixpKXtyZXR1cm4gZnVuY3Rpb24o YSxvLHMsbCl7dmFyIGMsdT0wfGEuc2hhcGVbMF0sZj0wfGEuc2hhcGVbMV0saD1hLmRhdGEs cD0wfGEub2Zmc2V0LGQ9MHxhLnN0cmlkZVswXSxtPTB8YS5zdHJpZGVbMV0sZz1wLHY9MHwt ZCx5PTAseD0wfC1tLGI9MCxfPS1kLW18MCx3PTAsVD0wfG0saz1kLW0qZnwwLEE9MCxNPTAs Uz0wLEU9MipmfDAsTD1uKEUpLEM9bihFKSxQPTAsST0wLE89LTEsej0tMSxEPTAsUj0wfC1m LEY9MHxmLEI9MCxOPS1mLTF8MCxqPWYtMXwwLFU9MCxWPTAsSD0wO2ZvcihNPTA7TTxmOysr TSlMW1ArK109cihoW2ddLG8scyxsKSxnKz1UO2lmKGcrPWssdT4wKXtpZihBPTEsTFtQKytd PXIoaFtnXSxvLHMsbCksZys9VCxmPjApZm9yKE09MSxjPWhbZ10sST1MW1BdPXIoYyxvLHMs bCksQj1MW1ArUl0sRD1MW1ArT10sVT1MW1ArTl0sST09PUImJkk9PT1EJiZJPT09VXx8KHk9 aFtnK3ZdLGI9aFtnK3hdLHc9aFtnK19dLHQoQSxNLGMseSxiLHcsSSxCLEQsVSxvLHMsbCks Vj1DW1BdPVMrKyksUCs9MSxnKz1ULE09MjtNPGY7KytNKWM9aFtnXSxJPUxbUF09cihjLG8s cyxsKSxCPUxbUCtSXSxEPUxbUCtPXSxVPUxbUCtOXSxJPT09QiYmST09PUQmJkk9PT1VfHwo eT1oW2crdl0sYj1oW2creF0sdz1oW2crX10sdChBLE0sYyx5LGIsdyxJLEIsRCxVLG8scyxs KSxWPUNbUF09UysrLFUhPT1EJiZlKENbUCtPXSxWLGIsdyxELFUsbyxzLGwpKSxQKz0xLGcr PVQ7Zm9yKGcrPWssUD0wLEg9UixSPUYsRj1ILEg9TyxPPXosej1ILEg9TixOPWosaj1ILEE9 MjtBPHU7KytBKXtpZihMW1ArK109cihoW2ddLG8scyxsKSxnKz1ULGY+MClmb3IoTT0xLGM9 aFtnXSxJPUxbUF09cihjLG8scyxsKSxCPUxbUCtSXSxEPUxbUCtPXSxVPUxbUCtOXSxJPT09 QiYmST09PUQmJkk9PT1VfHwoeT1oW2crdl0sYj1oW2creF0sdz1oW2crX10sdChBLE0sYyx5 LGIsdyxJLEIsRCxVLG8scyxsKSxWPUNbUF09UysrLFUhPT1CJiZlKENbUCtSXSxWLHcseSxV LEIsbyxzLGwpKSxQKz0xLGcrPVQsTT0yO008ZjsrK00pYz1oW2ddLEk9TFtQXT1yKGMsbyxz LGwpLEI9TFtQK1JdLEQ9TFtQK09dLFU9TFtQK05dLEk9PT1CJiZJPT09RCYmST09PVV8fCh5 PWhbZyt2XSxiPWhbZyt4XSx3PWhbZytfXSx0KEEsTSxjLHksYix3LEksQixELFUsbyxzLGwp LFY9Q1tQXT1TKyssVSE9PUQmJmUoQ1tQK09dLFYsYix3LEQsVSxvLHMsbCksVSE9PUImJmUo Q1tQK1JdLFYsdyx5LFUsQixvLHMsbCkpLFArPTEsZys9VDsxJkEmJihQPTApLEg9UixSPUYs Rj1ILEg9TyxPPXosej1ILEg9TixOPWosaj1ILGcrPWt9fWkoQyksaShMKX19fX0seyJ0eXBl ZGFycmF5LXBvb2wiOjMwOH1dLDI1MjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2 YXIgbj10KCJkdXAiKSxpPXt6ZXJvOmZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXRbMF07bnw9 MDt2YXIgYT0wLG89clswXTtmb3IoYT0wO2E8aTsrK2EpZVtuXT0wLG4rPW99LGZkVGVtcGxh dGUxOmZ1bmN0aW9uKHQsZSxyLG4saSxhLG8pe3ZhciBzPXRbMF0sbD1yWzBdLGM9LTEqbCx1 PWw7bnw9MCxvfD0wO3ZhciBmPTAsaD1sLHA9YVswXTtmb3IoZj0wO2Y8czsrK2YpaVtvXT0u NSooZVtuK2NdLWVbbit1XSksbis9aCxvKz1wfSxmZFRlbXBsYXRlMjpmdW5jdGlvbih0LGUs cixuLGksYSxvLHMsbCxjKXt2YXIgdT10WzBdLGY9dFsxXSxoPXJbMF0scD1yWzFdLGQ9YVsw XSxtPWFbMV0sZz1sWzBdLHY9bFsxXSx5PS0xKmgseD1oLGI9LTEqcCxfPXA7bnw9MCxvfD0w LGN8PTA7dmFyIHc9MCxUPTAsaz1wLEE9aC1mKnAsTT1tLFM9ZC1mKm0sRT12LEw9Zy1mKnY7 Zm9yKFQ9MDtUPHU7KytUKXtmb3Iodz0wO3c8ZjsrK3cpaVtvXT0uNSooZVtuK3ldLWVbbit4 XSksc1tjXT0uNSooZVtuK2JdLWVbbitfXSksbis9ayxvKz1NLGMrPUU7bis9QSxvKz1TLGMr PUx9fX0sYT17Y2RpZmY6ZnVuY3Rpb24odCl7dmFyIGU9e307cmV0dXJuIGZ1bmN0aW9uKHIs bixpKXt2YXIgYT1yLmR0eXBlLG89ci5vcmRlcixzPW4uZHR5cGUsbD1uLm9yZGVyLGM9aS5k dHlwZSx1PWkub3JkZXIsZj1bYSxvLmpvaW4oKSxzLGwuam9pbigpLGMsdS5qb2luKCldLmpv aW4oKSxoPWVbZl07cmV0dXJuIGh8fChlW2ZdPWg9dChbYSxvLHMsbCxjLHVdKSksaChyLnNo YXBlLnNsaWNlKDApLHIuZGF0YSxyLnN0cmlkZSwwfHIub2Zmc2V0LG4uZGF0YSxuLnN0cmlk ZSwwfG4ub2Zmc2V0LGkuZGF0YSxpLnN0cmlkZSwwfGkub2Zmc2V0KX19LHplcm86ZnVuY3Rp b24odCl7dmFyIGU9e307cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBuPXIuZHR5cGUsaT1yLm9y ZGVyLGE9W24saS5qb2luKCldLmpvaW4oKSxvPWVbYV07cmV0dXJuIG98fChlW2FdPW89dChb bixpXSkpLG8oci5zaGFwZS5zbGljZSgwKSxyLmRhdGEsci5zdHJpZGUsMHxyLm9mZnNldCl9 fSxmZFRlbXBsYXRlMTpmdW5jdGlvbih0KXt2YXIgZT17fTtyZXR1cm4gZnVuY3Rpb24ocixu KXt2YXIgaT1yLmR0eXBlLGE9ci5vcmRlcixvPW4uZHR5cGUscz1uLm9yZGVyLGw9W2ksYS5q b2luKCksbyxzLmpvaW4oKV0uam9pbigpLGM9ZVtsXTtyZXR1cm4gY3x8KGVbbF09Yz10KFtp LGEsbyxzXSkpLGMoci5zaGFwZS5zbGljZSgwKSxyLmRhdGEsci5zdHJpZGUsMHxyLm9mZnNl dCxuLmRhdGEsbi5zdHJpZGUsMHxuLm9mZnNldCl9fSxmZFRlbXBsYXRlMjpmdW5jdGlvbih0 KXt2YXIgZT17fTtyZXR1cm4gZnVuY3Rpb24ocixuLGkpe3ZhciBhPXIuZHR5cGUsbz1yLm9y ZGVyLHM9bi5kdHlwZSxsPW4ub3JkZXIsYz1pLmR0eXBlLHU9aS5vcmRlcixmPVthLG8uam9p bigpLHMsbC5qb2luKCksYyx1LmpvaW4oKV0uam9pbigpLGg9ZVtmXTtyZXR1cm4gaHx8KGVb Zl09aD10KFthLG8scyxsLGMsdV0pKSxoKHIuc2hhcGUuc2xpY2UoMCksci5kYXRhLHIuc3Ry aWRlLDB8ci5vZmZzZXQsbi5kYXRhLG4uc3RyaWRlLDB8bi5vZmZzZXQsaS5kYXRhLGkuc3Ry aWRlLDB8aS5vZmZzZXQpfX19O2Z1bmN0aW9uIG8odCl7cmV0dXJuKDAsYVt0LmZ1bmNOYW1l XSkocy5iaW5kKHZvaWQgMCx0KSl9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gaVt0LmZ1bmNOYW1l XX1mdW5jdGlvbiBsKHQpe3JldHVybiBvKHtmdW5jTmFtZTp0LmZ1bmNOYW1lfSl9dmFyIGM9 e30sdT17fSxmPWwoe2Z1bmNOYW1lOiJjZGlmZiJ9KSxoPWwoe2Z1bmNOYW1lOiJ6ZXJvIn0p O2Z1bmN0aW9uIHAodCl7cmV0dXJuIHQgaW4gYz9jW3RdOmNbdF09bCh7ZnVuY05hbWU6ImZk VGVtcGxhdGUiK3R9KX1mdW5jdGlvbiBkKHQsZSxyLG4pe3JldHVybiBmdW5jdGlvbih0LGkp e3ZhciBhPWkuc2hhcGUuc2xpY2UoKTtyZXR1cm4gYVswXT4yJiZhWzFdPjImJm4oaS5waWNr KC0xLC0xKS5sbygxLDEpLmhpKGFbMF0tMixhWzFdLTIpLHQucGljaygtMSwtMSwwKS5sbygx LDEpLmhpKGFbMF0tMixhWzFdLTIpLHQucGljaygtMSwtMSwxKS5sbygxLDEpLmhpKGFbMF0t MixhWzFdLTIpKSxhWzFdPjImJihyKGkucGljaygwLC0xKS5sbygxKS5oaShhWzFdLTIpLHQu cGljaygwLC0xLDEpLmxvKDEpLmhpKGFbMV0tMikpLGUodC5waWNrKDAsLTEsMCkubG8oMSku aGkoYVsxXS0yKSkpLGFbMV0+MiYmKHIoaS5waWNrKGFbMF0tMSwtMSkubG8oMSkuaGkoYVsx XS0yKSx0LnBpY2soYVswXS0xLC0xLDEpLmxvKDEpLmhpKGFbMV0tMikpLGUodC5waWNrKGFb MF0tMSwtMSwwKS5sbygxKS5oaShhWzFdLTIpKSksYVswXT4yJiYocihpLnBpY2soLTEsMCku bG8oMSkuaGkoYVswXS0yKSx0LnBpY2soLTEsMCwwKS5sbygxKS5oaShhWzBdLTIpKSxlKHQu cGljaygtMSwwLDEpLmxvKDEpLmhpKGFbMF0tMikpKSxhWzBdPjImJihyKGkucGljaygtMSxh WzFdLTEpLmxvKDEpLmhpKGFbMF0tMiksdC5waWNrKC0xLGFbMV0tMSwwKS5sbygxKS5oaShh WzBdLTIpKSxlKHQucGljaygtMSxhWzFdLTEsMSkubG8oMSkuaGkoYVswXS0yKSkpLHQuc2V0 KDAsMCwwLDApLHQuc2V0KDAsMCwxLDApLHQuc2V0KGFbMF0tMSwwLDAsMCksdC5zZXQoYVsw XS0xLDAsMSwwKSx0LnNldCgwLGFbMV0tMSwwLDApLHQuc2V0KDAsYVsxXS0xLDEsMCksdC5z ZXQoYVswXS0xLGFbMV0tMSwwLDApLHQuc2V0KGFbMF0tMSxhWzFdLTEsMSwwKSx0fX1lLmV4 cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBBcnJheS5pc0FycmF5KHIpfHwocj1uKGUu ZGltZW5zaW9uLCJzdHJpbmciPT10eXBlb2Ygcj9yOiJjbGFtcCIpKSwwPT09ZS5zaXplP3Q6 MD09PWUuZGltZW5zaW9uPyh0LnNldCgwKSx0KTpmdW5jdGlvbih0KXt2YXIgZT10LmpvaW4o KTtpZihhPXVbZV0pcmV0dXJuIGE7Zm9yKHZhciByPXQubGVuZ3RoLG49W2YsaF0saT0xO2k8 PXI7KytpKW4ucHVzaChwKGkpKTt2YXIgYT1kLmFwcGx5KHZvaWQgMCxuKTtyZXR1cm4gdVtl XT1hLGF9KHIpKHQsZSl9fSx7ZHVwOjY1fV0sMjUzOltmdW5jdGlvbih0LGUscil7InVzZSBz dHJpY3QiO2Z1bmN0aW9uIG4odCxlKXt2YXIgcj1NYXRoLmZsb29yKGUpLG49ZS1yLGk9MDw9 ciYmcjx0LnNoYXBlWzBdLGE9MDw9cisxJiZyKzE8dC5zaGFwZVswXTtyZXR1cm4oMS1uKSoo aT8rdC5nZXQocik6MCkrbiooYT8rdC5nZXQocisxKTowKX1mdW5jdGlvbiBpKHQsZSxyKXt2 YXIgbj1NYXRoLmZsb29yKGUpLGk9ZS1uLGE9MDw9biYmbjx0LnNoYXBlWzBdLG89MDw9bisx JiZuKzE8dC5zaGFwZVswXSxzPU1hdGguZmxvb3IociksbD1yLXMsYz0wPD1zJiZzPHQuc2hh cGVbMV0sdT0wPD1zKzEmJnMrMTx0LnNoYXBlWzFdLGY9YSYmYz90LmdldChuLHMpOjAsaD1h JiZ1P3QuZ2V0KG4scysxKTowO3JldHVybigxLWwpKigoMS1pKSpmK2kqKG8mJmM/dC5nZXQo bisxLHMpOjApKStsKigoMS1pKSpoK2kqKG8mJnU/dC5nZXQobisxLHMrMSk6MCkpfWZ1bmN0 aW9uIGEodCxlLHIsbil7dmFyIGk9TWF0aC5mbG9vcihlKSxhPWUtaSxvPTA8PWkmJmk8dC5z aGFwZVswXSxzPTA8PWkrMSYmaSsxPHQuc2hhcGVbMF0sbD1NYXRoLmZsb29yKHIpLGM9ci1s LHU9MDw9bCYmbDx0LnNoYXBlWzFdLGY9MDw9bCsxJiZsKzE8dC5zaGFwZVsxXSxoPU1hdGgu Zmxvb3IobikscD1uLWgsZD0wPD1oJiZoPHQuc2hhcGVbMl0sbT0wPD1oKzEmJmgrMTx0LnNo YXBlWzJdLGc9byYmdSYmZD90LmdldChpLGwsaCk6MCx2PW8mJmYmJmQ/dC5nZXQoaSxsKzEs aCk6MCx5PXMmJnUmJmQ/dC5nZXQoaSsxLGwsaCk6MCx4PXMmJmYmJmQ/dC5nZXQoaSsxLGwr MSxoKTowLGI9byYmdSYmbT90LmdldChpLGwsaCsxKTowLF89byYmZiYmbT90LmdldChpLGwr MSxoKzEpOjA7cmV0dXJuKDEtcCkqKCgxLWMpKigoMS1hKSpnK2EqeSkrYyooKDEtYSkqdith KngpKStwKigoMS1jKSooKDEtYSkqYithKihzJiZ1JiZtP3QuZ2V0KGkrMSxsLGgrMSk6MCkp K2MqKCgxLWEpKl8rYSoocyYmZiYmbT90LmdldChpKzEsbCsxLGgrMSk6MCkpKX1mdW5jdGlv biBvKHQpe3ZhciBlLHIsbj0wfHQuc2hhcGUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLGE9bmV3 IEFycmF5KG4pLG89bmV3IEFycmF5KG4pLHM9bmV3IEFycmF5KG4pO2ZvcihlPTA7ZTxuOysr ZSlyPSthcmd1bWVudHNbZSsxXSxpW2VdPU1hdGguZmxvb3IociksYVtlXT1yLWlbZV0sb1tl XT0wPD1pW2VdJiZpW2VdPHQuc2hhcGVbZV0sc1tlXT0wPD1pW2VdKzEmJmlbZV0rMTx0LnNo YXBlW2VdO3ZhciBsLGMsdSxmPTA7dDpmb3IoZT0wO2U8MTw8bjsrK2Upe2ZvcihjPTEsdT10 Lm9mZnNldCxsPTA7bDxuOysrbClpZihlJjE8PGwpe2lmKCFzW2xdKWNvbnRpbnVlIHQ7Yyo9 YVtsXSx1Kz10LnN0cmlkZVtsXSooaVtsXSsxKX1lbHNle2lmKCFvW2xdKWNvbnRpbnVlIHQ7 Yyo9MS1hW2xdLHUrPXQuc3RyaWRlW2xdKmlbbF19Zis9Yyp0LmRhdGFbdV19cmV0dXJuIGZ9 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLHMpe3N3aXRjaCh0LnNoYXBlLmxlbmd0aCl7Y2Fz ZSAwOnJldHVybiAwO2Nhc2UgMTpyZXR1cm4gbih0LGUpO2Nhc2UgMjpyZXR1cm4gaSh0LGUs cik7Y2FzZSAzOnJldHVybiBhKHQsZSxyLHMpO2RlZmF1bHQ6cmV0dXJuIG8uYXBwbHkodm9p ZCAwLGFyZ3VtZW50cyl9fSxlLmV4cG9ydHMuZDE9bixlLmV4cG9ydHMuZDI9aSxlLmV4cG9y dHMuZDM9YX0se31dLDI1NDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17 ImZsb2F0NjQsMiwxLDAiOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxyLG4saSl7 dmFyIGE9dFswXSxvPXRbMV0scz10WzJdLGw9clswXSxjPXJbMV0sdT1yWzJdO258PTA7dmFy IGY9MCxoPTAscD0wLGQ9dSxtPWMtcyp1LGc9bC1vKmM7Zm9yKHA9MDtwPGE7KytwKXtmb3Io aD0wO2g8bzsrK2gpe2ZvcihmPTA7ZjxzOysrZillW25dLz1pLG4rPWQ7bis9bX1uKz1nfX19 LCJ1aW50OCwyLDAsMSxmbG9hdDY0LDIsMSwwIjpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlv bih0LGUscixuLGksYSxvLHMpe2Zvcih2YXIgbD10WzBdLGM9dFsxXSx1PXRbMl0sZj1yWzBd LGg9clsxXSxwPXJbMl0sZD1hWzBdLG09YVsxXSxnPWFbMl0sdj1ufD0wLHk9b3w9MCx4PTB8 dFswXTt4PjA7KXt4PDY0PyhsPXgseD0wKToobD02NCx4LT02NCk7Zm9yKHZhciBiPTB8dFsx XTtiPjA7KXtiPDY0PyhjPWIsYj0wKTooYz02NCxiLT02NCksbj12K3gqZitiKmgsbz15K3gq ZCtiKm07dmFyIF89MCx3PTAsVD0wLGs9cCxBPWYtdSpwLE09aC1sKmYsUz1nLEU9ZC11Kmcs TD1tLWwqZDtmb3IoVD0wO1Q8YzsrK1Qpe2Zvcih3PTA7dzxsOysrdyl7Zm9yKF89MDtfPHU7 KytfKWVbbl09aVtvXSpzLG4rPWssbys9UztuKz1BLG8rPUV9bis9TSxvKz1MfX19fX0sImZs b2F0MzIsMSwwLGZsb2F0MzIsMSwwIjpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LGUs cixuLGksYSxvKXt2YXIgcz10WzBdLGw9dFsxXSxjPXJbMF0sdT1yWzFdLGY9YVswXSxoPWFb MV07bnw9MCxvfD0wO3ZhciBwPTAsZD0wLG09dSxnPWMtbCp1LHY9aCx5PWYtbCpoO2Zvcihk PTA7ZDxzOysrZCl7Zm9yKHA9MDtwPGw7KytwKWVbbl09aVtvXSxuKz1tLG8rPXY7bis9Zyxv Kz15fX19LCJmbG9hdDMyLDEsMCxmbG9hdDMyLDAsMSI6ZnVuY3Rpb24oKXtyZXR1cm4gZnVu Y3Rpb24odCxlLHIsbixpLGEsbyl7Zm9yKHZhciBzPXRbMF0sbD10WzFdLGM9clswXSx1PXJb MV0sZj1hWzBdLGg9YVsxXSxwPW58PTAsZD1vfD0wLG09MHx0WzFdO20+MDspe208NjQ/KGw9 bSxtPTApOihsPTY0LG0tPTY0KTtmb3IodmFyIGc9MHx0WzBdO2c+MDspe2c8NjQ/KHM9Zyxn PTApOihzPTY0LGctPTY0KSxuPXArbSp1K2cqYyxvPWQrbSpoK2cqZjt2YXIgdj0wLHk9MCx4 PXUsYj1jLWwqdSxfPWgsdz1mLWwqaDtmb3IoeT0wO3k8czsrK3kpe2Zvcih2PTA7djxsOysr dillW25dPWlbb10sbis9eCxvKz1fO24rPWIsbys9d319fX19LCJ1aW50OCwyLDAsMSx1aW50 OCwxLDIsMCI6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIsbixpLGEsbyl7Zm9y KHZhciBzPXRbMF0sbD10WzFdLGM9dFsyXSx1PXJbMF0sZj1yWzFdLGg9clsyXSxwPWFbMF0s ZD1hWzFdLG09YVsyXSxnPW58PTAsdj1vfD0wLHk9MHx0WzJdO3k+MDspe3k8NjQ/KGM9eSx5 PTApOihjPTY0LHktPTY0KTtmb3IodmFyIHg9MHx0WzBdO3g+MDspe3g8NjQ/KHM9eCx4PTAp OihzPTY0LHgtPTY0KTtmb3IodmFyIGI9MHx0WzFdO2I+MDspe2I8NjQ/KGw9YixiPTApOihs PTY0LGItPTY0KSxuPWcreSpoK3gqdStiKmYsbz12K3kqbSt4KnArYipkO3ZhciBfPTAsdz0w LFQ9MCxrPWgsQT11LWMqaCxNPWYtcyp1LFM9bSxFPXAtYyptLEw9ZC1zKnA7Zm9yKFQ9MDtU PGw7KytUKXtmb3Iodz0wO3c8czsrK3cpe2ZvcihfPTA7XzxjOysrXyllW25dPWlbb10sbis9 ayxvKz1TO24rPUEsbys9RX1uKz1NLG8rPUx9fX19fX0sInVpbnQ4LDIsMCwxLGFycmF5LDIs MCwxIjpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LGUscixuLGksYSxvKXt2YXIgcz10 WzBdLGw9dFsxXSxjPXRbMl0sdT1yWzBdLGY9clsxXSxoPXJbMl0scD1hWzBdLGQ9YVsxXSxt PWFbMl07bnw9MCxvfD0wO3ZhciBnPTAsdj0wLHk9MCx4PWgsYj11LWMqaCxfPWYtcyp1LHc9 bSxUPXAtYyptLGs9ZC1zKnA7Zm9yKHk9MDt5PGw7Kyt5KXtmb3Iodj0wO3Y8czsrK3Ype2Zv cihnPTA7ZzxjOysrZyllW25dPWlbb10sbis9eCxvKz13O24rPWIsbys9VH1uKz1fLG8rPWt9 fX19O3ZhciBpPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS5qb2luKCIsIik7cmV0dXJuKDAsblty XSkoKX0sYT17bXVsOmZ1bmN0aW9uKHQpe3ZhciBlPXt9O3JldHVybiBmdW5jdGlvbihyLG4s aSl7dmFyIGE9ci5kdHlwZSxvPXIub3JkZXIscz1uLmR0eXBlLGw9bi5vcmRlcixjPWkuZHR5 cGUsdT1pLm9yZGVyLGY9W2Esby5qb2luKCkscyxsLmpvaW4oKSxjLHUuam9pbigpXS5qb2lu KCksaD1lW2ZdO3JldHVybiBofHwoZVtmXT1oPXQoW2EsbyxzLGwsYyx1XSkpLGgoci5zaGFw ZS5zbGljZSgwKSxyLmRhdGEsci5zdHJpZGUsMHxyLm9mZnNldCxuLmRhdGEsbi5zdHJpZGUs MHxuLm9mZnNldCxpLmRhdGEsaS5zdHJpZGUsMHxpLm9mZnNldCl9fSxtdWxzOmZ1bmN0aW9u KHQpe3ZhciBlPXt9O3JldHVybiBmdW5jdGlvbihyLG4saSl7dmFyIGE9ci5kdHlwZSxvPXIu b3JkZXIscz1uLmR0eXBlLGw9bi5vcmRlcixjPVthLG8uam9pbigpLHMsbC5qb2luKCldLmpv aW4oKSx1PWVbY107cmV0dXJuIHV8fChlW2NdPXU9dChbYSxvLHMsbF0pKSx1KHIuc2hhcGUu c2xpY2UoMCksci5kYXRhLHIuc3RyaWRlLDB8ci5vZmZzZXQsbi5kYXRhLG4uc3RyaWRlLDB8 bi5vZmZzZXQsaSl9fSxtdWxzZXE6ZnVuY3Rpb24odCl7dmFyIGU9e307cmV0dXJuIGZ1bmN0 aW9uKHIsbil7dmFyIGk9ci5kdHlwZSxhPXIub3JkZXIsbz1baSxhLmpvaW4oKV0uam9pbigp LHM9ZVtvXTtyZXR1cm4gc3x8KGVbb109cz10KFtpLGFdKSkscyhyLnNoYXBlLnNsaWNlKDAp LHIuZGF0YSxyLnN0cmlkZSwwfHIub2Zmc2V0LG4pfX0sZGl2OmZ1bmN0aW9uKHQpe3ZhciBl PXt9O3JldHVybiBmdW5jdGlvbihyLG4saSl7dmFyIGE9ci5kdHlwZSxvPXIub3JkZXIscz1u LmR0eXBlLGw9bi5vcmRlcixjPWkuZHR5cGUsdT1pLm9yZGVyLGY9W2Esby5qb2luKCkscyxs LmpvaW4oKSxjLHUuam9pbigpXS5qb2luKCksaD1lW2ZdO3JldHVybiBofHwoZVtmXT1oPXQo W2EsbyxzLGwsYyx1XSkpLGgoci5zaGFwZS5zbGljZSgwKSxyLmRhdGEsci5zdHJpZGUsMHxy Lm9mZnNldCxuLmRhdGEsbi5zdHJpZGUsMHxuLm9mZnNldCxpLmRhdGEsaS5zdHJpZGUsMHxp Lm9mZnNldCl9fSxkaXZzOmZ1bmN0aW9uKHQpe3ZhciBlPXt9O3JldHVybiBmdW5jdGlvbihy LG4saSl7dmFyIGE9ci5kdHlwZSxvPXIub3JkZXIscz1uLmR0eXBlLGw9bi5vcmRlcixjPVth LG8uam9pbigpLHMsbC5qb2luKCldLmpvaW4oKSx1PWVbY107cmV0dXJuIHV8fChlW2NdPXU9 dChbYSxvLHMsbF0pKSx1KHIuc2hhcGUuc2xpY2UoMCksci5kYXRhLHIuc3RyaWRlLDB8ci5v ZmZzZXQsbi5kYXRhLG4uc3RyaWRlLDB8bi5vZmZzZXQsaSl9fSxkaXZzZXE6ZnVuY3Rpb24o dCl7dmFyIGU9e307cmV0dXJuIGZ1bmN0aW9uKHIsbil7dmFyIGk9ci5kdHlwZSxhPXIub3Jk ZXIsbz1baSxhLmpvaW4oKV0uam9pbigpLHM9ZVtvXTtyZXR1cm4gc3x8KGVbb109cz10KFtp LGFdKSkscyhyLnNoYXBlLnNsaWNlKDApLHIuZGF0YSxyLnN0cmlkZSwwfHIub2Zmc2V0LG4p fX0sYXNzaWduOmZ1bmN0aW9uKHQpe3ZhciBlPXt9O3JldHVybiBmdW5jdGlvbihyLG4pe3Zh ciBpPXIuZHR5cGUsYT1yLm9yZGVyLG89bi5kdHlwZSxzPW4ub3JkZXIsbD1baSxhLmpvaW4o KSxvLHMuam9pbigpXS5qb2luKCksYz1lW2xdO3JldHVybiBjfHwoZVtsXT1jPXQoW2ksYSxv LHNdKSksYyhyLnNoYXBlLnNsaWNlKDApLHIuZGF0YSxyLnN0cmlkZSwwfHIub2Zmc2V0LG4u ZGF0YSxuLnN0cmlkZSwwfG4ub2Zmc2V0KX19fTtmdW5jdGlvbiBvKHQpe3JldHVybiBlPXtm dW5jTmFtZTp0LmZ1bmNOYW1lfSwoMCxhW2UuZnVuY05hbWVdKShpLmJpbmQodm9pZCAwLGUp KTt2YXIgZX12YXIgcz17bXVsOiIqIixkaXY6Ii8ifTshZnVuY3Rpb24oKXtmb3IodmFyIHQg aW4gcylyW3RdPW8oe2Z1bmNOYW1lOnR9KSxyW3QrInMiXT1vKHtmdW5jTmFtZTp0KyJzIn0p LHJbdCsic2VxIl09byh7ZnVuY05hbWU6dCsic2VxIn0pfSgpLHIuYXNzaWduPW8oe2Z1bmNO YW1lOiJhc3NpZ24ifSl9LHt9XSwyNTU6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 dmFyIG49dCgibmRhcnJheSIpLGk9dCgiLi9kb0NvbnZlcnQuanMiKTtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlKXtmb3IodmFyIHI9W10sYT10LG89MTtBcnJheS5pc0FycmF5KGEpOylyLnB1 c2goYS5sZW5ndGgpLG8qPWEubGVuZ3RoLGE9YVswXTtyZXR1cm4gMD09PXIubGVuZ3RoP24o KTooZXx8KGU9bihuZXcgRmxvYXQ2NEFycmF5KG8pLHIpKSxpKGUsdCksZSl9fSx7Ii4vZG9D b252ZXJ0LmpzIjoyNTYsbmRhcnJheToyNTl9XSwyNTY6W2Z1bmN0aW9uKHQsZSxyKXsidXNl IHN0cmljdCI7dmFyIG4saT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LGUscixuLGkp e3ZhciBhPXRbMF0sbz10WzFdLHM9dFsyXSxsPXJbMF0sYz1yWzFdLHU9clsyXSxmPVswLDAs MF07bnw9MDt2YXIgaD0wLHA9MCxkPTAsbT11LGc9Yy1zKnUsdj1sLW8qYztmb3IoZD0wO2Q8 YTsrK2Qpe2ZvcihwPTA7cDxvOysrcCl7Zm9yKGg9MDtoPHM7KytoKXt2YXIgeSx4PWk7Zm9y KHk9MDt5PGYubGVuZ3RoLTE7Kyt5KXg9eFtmW3ldXTtlW25dPXhbZltmLmxlbmd0aC0xXV0s bis9bSwrK2ZbMl19bis9ZyxmWzJdLT1zLCsrZlsxXX1uKz12LGZbMV0tPW8sKytmWzBdfX19 O2UuZXhwb3J0cz0obj17ZnVuY05hbWU6e2Z1bmNOYW1lOiJjb252ZXJ0In0uZnVuY05hbWV9 LGZ1bmN0aW9uKHQpe3ZhciBlPXt9O3JldHVybiBmdW5jdGlvbihyLG4pe3ZhciBpPXIuZHR5 cGUsYT1yLm9yZGVyLG89W2ksYS5qb2luKCldLmpvaW4oKSxzPWVbb107cmV0dXJuIHN8fChl W29dPXM9dChbaSxhXSkpLHMoci5zaGFwZS5zbGljZSgwKSxyLmRhdGEsci5zdHJpZGUsMHxy Lm9mZnNldCxuKX19KGkuYmluZCh2b2lkIDAsbikpKX0se31dLDI1NzpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJ0eXBlZGFycmF5LXBvb2wiKTtmdW5jdGlvbiBp KHQpe3N3aXRjaCh0KXtjYXNlInVpbnQzMiI6cmV0dXJuW24ubWFsbG9jVWludDMyLG4uZnJl ZVVpbnQzMl07ZGVmYXVsdDpyZXR1cm4gbnVsbH19dmFyIGE9eyJ1aW50MzIsMSwwIjpmdW5j dGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyLG4saSxhLG8scyxsLGMsdSxmLGgpe3ZhciBw LGQsbSxnLHYseSx4LGIsXz1yKm8rYSx3PXQoYyk7Zm9yKHA9cisxO3A8PW47KytwKXtmb3Io ZD1wLG09Xys9byx2PTAseT1fLGc9MDtnPGM7KytnKXdbdisrXT1pW3ldLHkrPXU7dDpmb3Io O2QtLSA+cjspe3Y9MCx5PW0tbztlOmZvcihnPTA7ZzxjOysrZyl7aWYoKHg9aVt5XSk8KGI9 d1t2XSkpYnJlYWsgdDtpZih4PmIpYnJlYWsgZTt5Kz1mLHYrPWh9Zm9yKHY9bSx5PW0tbyxn PTA7ZzxjOysrZylpW3ZdPWlbeV0sdis9dSx5Kz11O20tPW99Zm9yKHY9bSx5PTAsZz0wO2c8 YzsrK2cpaVt2XT13W3krK10sdis9dX1lKHcpfX19O3ZhciBvPXsidWludDMyLDEsMCI6ZnVu Y3Rpb24odCxlLHIpe3JldHVybiBmdW5jdGlvbiBuKGksYSxvLHMsbCxjLHUsZixoLHAsZCl7 dmFyIG0sZyx2LHkseCxiLF8sdyxULGssQSxNLFMsRSxMLEMsUCxJLE8seixELFIsRixCLE4s aj0oYS1pKzEpLzZ8MCxVPWkraixWPWEtaixIPWkrYT4+MSxxPUgtaixHPUgraixZPVUsVz1x LFg9SCxaPUcsSj1WLEs9aSsxLFE9YS0xLCQ9ITAsdHQ9MCxldD0wLHJ0PTAsbnQ9ZixpdD1l KG50KSxhdD1lKG50KTtBPWwqWSxNPWwqVyxOPXM7dDpmb3Ioaz0wO2s8ZjsrK2spe2lmKHc9 TStOLChydD1vW189QStOXS1vW3ddKT4wKXtnPVksWT1XLFc9ZzticmVhayB0fWlmKHJ0PDAp YnJlYWsgdDtOKz1wfUE9bCpaLE09bCpKLE49czt0OmZvcihrPTA7azxmOysrayl7aWYodz1N K04sKHJ0PW9bXz1BK05dLW9bd10pPjApe2c9WixaPUosSj1nO2JyZWFrIHR9aWYocnQ8MCli cmVhayB0O04rPXB9QT1sKlksTT1sKlgsTj1zO3Q6Zm9yKGs9MDtrPGY7KytrKXtpZih3PU0r TiwocnQ9b1tfPUErTl0tb1t3XSk+MCl7Zz1ZLFk9WCxYPWc7YnJlYWsgdH1pZihydDwwKWJy ZWFrIHQ7Tis9cH1BPWwqVyxNPWwqWCxOPXM7dDpmb3Ioaz0wO2s8ZjsrK2spe2lmKHc9TStO LChydD1vW189QStOXS1vW3ddKT4wKXtnPVcsVz1YLFg9ZzticmVhayB0fWlmKHJ0PDApYnJl YWsgdDtOKz1wfUE9bCpZLE09bCpaLE49czt0OmZvcihrPTA7azxmOysrayl7aWYodz1NK04s KHJ0PW9bXz1BK05dLW9bd10pPjApe2c9WSxZPVosWj1nO2JyZWFrIHR9aWYocnQ8MClicmVh ayB0O04rPXB9QT1sKlgsTT1sKlosTj1zO3Q6Zm9yKGs9MDtrPGY7KytrKXtpZih3PU0rTiwo cnQ9b1tfPUErTl0tb1t3XSk+MCl7Zz1YLFg9WixaPWc7YnJlYWsgdH1pZihydDwwKWJyZWFr IHQ7Tis9cH1BPWwqVyxNPWwqSixOPXM7dDpmb3Ioaz0wO2s8ZjsrK2spe2lmKHc9TStOLChy dD1vW189QStOXS1vW3ddKT4wKXtnPVcsVz1KLEo9ZzticmVhayB0fWlmKHJ0PDApYnJlYWsg dDtOKz1wfUE9bCpXLE09bCpYLE49czt0OmZvcihrPTA7azxmOysrayl7aWYodz1NK04sKHJ0 PW9bXz1BK05dLW9bd10pPjApe2c9VyxXPVgsWD1nO2JyZWFrIHR9aWYocnQ8MClicmVhayB0 O04rPXB9QT1sKlosTT1sKkosTj1zO3Q6Zm9yKGs9MDtrPGY7KytrKXtpZih3PU0rTiwocnQ9 b1tfPUErTl0tb1t3XSk+MCl7Zz1aLFo9SixKPWc7YnJlYWsgdH1pZihydDwwKWJyZWFrIHQ7 Tis9cH1mb3IoQT1sKlksTT1sKlcsUz1sKlgsRT1sKlosTD1sKkosQz1sKlUsUD1sKkgsST1s KlYsQj0wLE49cyxrPTA7azxmOysraylfPUErTix3PU0rTixUPVMrTixPPUUrTix6PUwrTixE PUMrTixSPVArTixGPUkrTixpdFtCXT1vW3ddLGF0W0JdPW9bT10sJD0kJiZpdFtCXT09PWF0 W0JdLHY9b1tfXSx5PW9bVF0seD1vW3pdLG9bRF09dixvW1JdPXksb1tGXT14LCsrQixOKz1o O2ZvcihBPWwqcSxNPWwqaSxOPXMsaz0wO2s8ZjsrK2spdz1NK04sb1tfPUErTl09b1t3XSxO Kz1oO2ZvcihBPWwqRyxNPWwqYSxOPXMsaz0wO2s8ZjsrK2spdz1NK04sb1tfPUErTl09b1t3 XSxOKz1oO2lmKCQpZm9yKGI9SztiPD1ROysrYil7Xz1zK2IqbCxCPTA7dDpmb3Ioaz0wO2s8 ZiYmMD09PShydD1vW19dLWl0W0JdKTsrK2spQis9ZCxfKz1wO2lmKDAhPT1ydClpZihydDww KXtpZihiIT09Sylmb3IoQT1sKmIsTT1sKkssTj1zLGs9MDtrPGY7KytrKXc9TStOLG09b1tf PUErTl0sb1tfXT1vW3ddLG9bd109bSxOKz1oOysrS31lbHNlIGZvcig7Oyl7Xz1zK1EqbCxC PTA7dDpmb3Ioaz0wO2s8ZiYmMD09PShydD1vW19dLWl0W0JdKTsrK2spQis9ZCxfKz1wO2lm KCEocnQ+MCkpe2lmKHJ0PDApe2ZvcihBPWwqYixNPWwqSyxTPWwqUSxOPXMsaz0wO2s8Zjsr K2spdz1NK04sVD1TK04sbT1vW189QStOXSxvW19dPW9bd10sb1t3XT1vW1RdLG9bVF09bSxO Kz1oOysrSywtLVE7YnJlYWt9Zm9yKEE9bCpiLE09bCpRLE49cyxrPTA7azxmOysrayl3PU0r TixtPW9bXz1BK05dLG9bX109b1t3XSxvW3ddPW0sTis9aDstLVE7YnJlYWt9US0tfX1lbHNl IGZvcihiPUs7Yjw9UTsrK2Ipe189cytiKmwsQj0wO3Q6Zm9yKGs9MDtrPGYmJjA9PT0odHQ9 b1tfXS1pdFtCXSk7KytrKUIrPWQsXys9cDtpZih0dDwwKXtpZihiIT09Sylmb3IoQT1sKmIs TT1sKkssTj1zLGs9MDtrPGY7KytrKXc9TStOLG09b1tfPUErTl0sb1tfXT1vW3ddLG9bd109 bSxOKz1oOysrS31lbHNle189cytiKmwsQj0wO3Q6Zm9yKGs9MDtrPGYmJjA9PT0oZXQ9b1tf XS1hdFtCXSk7KytrKUIrPWQsXys9cDtpZihldD4wKWZvcig7Oyl7Xz1zK1EqbCxCPTA7dDpm b3Ioaz0wO2s8ZiYmMD09PShydD1vW19dLWF0W0JdKTsrK2spQis9ZCxfKz1wO2lmKCEocnQ+ MCkpe189cytRKmwsQj0wO3Q6Zm9yKGs9MDtrPGYmJjA9PT0ocnQ9b1tfXS1pdFtCXSk7Kytr KUIrPWQsXys9cDtpZihydDwwKXtmb3IoQT1sKmIsTT1sKkssUz1sKlEsTj1zLGs9MDtrPGY7 KytrKXc9TStOLFQ9UytOLG09b1tfPUErTl0sb1tfXT1vW3ddLG9bd109b1tUXSxvW1RdPW0s Tis9aDsrK0ssLS1RfWVsc2V7Zm9yKEE9bCpiLE09bCpRLE49cyxrPTA7azxmOysrayl3PU0r TixtPW9bXz1BK05dLG9bX109b1t3XSxvW3ddPW0sTis9aDstLVF9YnJlYWt9aWYoLS1RPGIp YnJlYWt9fX1mb3IoQT1sKmksTT1sKihLLTEpLEI9MCxOPXMsaz0wO2s8ZjsrK2spdz1NK04s b1tfPUErTl09b1t3XSxvW3ddPWl0W0JdLCsrQixOKz1oO2ZvcihBPWwqYSxNPWwqKFErMSks Qj0wLE49cyxrPTA7azxmOysrayl3PU0rTixvW189QStOXT1vW3ddLG9bd109YXRbQl0sKytC LE4rPWg7aWYoSy0yLWk8PTMyP3QoaSxLLTIsbyxzLGwsYyx1LGYsaCxwLGQpOm4oaSxLLTIs byxzLGwsYyx1LGYsaCxwLGQpLGEtKFErMik8PTMyP3QoUSsyLGEsbyxzLGwsYyx1LGYsaCxw LGQpOm4oUSsyLGEsbyxzLGwsYyx1LGYsaCxwLGQpLCQpcmV0dXJuIHIoaXQpLHZvaWQgcihh dCk7aWYoSzxVJiZRPlYpe3Q6Zm9yKDs7KXtmb3IoXz1zK0sqbCxCPTAsTj1zLGs9MDtrPGY7 KytrKXtpZihvW19dIT09aXRbQl0pYnJlYWsgdDsrK0IsXys9aH0rK0t9dDpmb3IoOzspe2Zv cihfPXMrUSpsLEI9MCxOPXMsaz0wO2s8ZjsrK2spe2lmKG9bX10hPT1hdFtCXSlicmVhayB0 OysrQixfKz1ofS0tUX1mb3IoYj1LO2I8PVE7KytiKXtfPXMrYipsLEI9MDt0OmZvcihrPTA7 azxmJiYwPT09KHR0PW9bX10taXRbQl0pOysraylCKz1kLF8rPXA7aWYoMD09PXR0KXtpZihi IT09Sylmb3IoQT1sKmIsTT1sKkssTj1zLGs9MDtrPGY7KytrKXc9TStOLG09b1tfPUErTl0s b1tfXT1vW3ddLG9bd109bSxOKz1oOysrS31lbHNle189cytiKmwsQj0wO3Q6Zm9yKGs9MDtr PGYmJjA9PT0oZXQ9b1tfXS1hdFtCXSk7KytrKUIrPWQsXys9cDtpZigwPT09ZXQpZm9yKDs7 KXtfPXMrUSpsLEI9MDt0OmZvcihrPTA7azxmJiYwPT09KHJ0PW9bX10tYXRbQl0pOysraylC Kz1kLF8rPXA7aWYoMCE9PXJ0KXtfPXMrUSpsLEI9MDt0OmZvcihrPTA7azxmJiYwPT09KHJ0 PW9bX10taXRbQl0pOysraylCKz1kLF8rPXA7aWYocnQ8MCl7Zm9yKEE9bCpiLE09bCpLLFM9 bCpRLE49cyxrPTA7azxmOysrayl3PU0rTixUPVMrTixtPW9bXz1BK05dLG9bX109b1t3XSxv W3ddPW9bVF0sb1tUXT1tLE4rPWg7KytLLC0tUX1lbHNle2ZvcihBPWwqYixNPWwqUSxOPXMs az0wO2s8ZjsrK2spdz1NK04sbT1vW189QStOXSxvW19dPW9bd10sb1t3XT1tLE4rPWg7LS1R fWJyZWFrfWlmKC0tUTxiKWJyZWFrfX19fXIoaXQpLHIoYXQpLFEtSzw9MzI/dChLLFEsbyxz LGwsYyx1LGYsaCxwLGQpOm4oSyxRLG8scyxsLGMsdSxmLGgscCxkKX19fTt2YXIgcz17InVp bnQzMiwxLDAiOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBuPXIuZGF0 YSxpPTB8ci5vZmZzZXQsYT1yLnNoYXBlLG89ci5zdHJpZGUscz0wfG9bMF0sbD0wfGFbMF0s Yz0wfG9bMV0sdT0wfGFbMV0sZj1jLGg9YztsPD0zMj90KDAsbC0xLG4saSxzLGMsbCx1LGYs aCwxKTplKDAsbC0xLG4saSxzLGMsbCx1LGYsaCwxKX19fTtlLmV4cG9ydHM9ZnVuY3Rpb24o dCxlKXt2YXIgcj1bZSx0XS5qb2luKCIsIiksbj1zW3JdLGw9ZnVuY3Rpb24odCxlKXt2YXIg cj1pKGUpLG49W2UsdF0uam9pbigiLCIpLG89YVtuXTtyZXR1cm4gcj9vKHJbMF0sclsxXSk6 bygpfSh0LGUpLGM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWkoZSksYT1bZSx0XS5qb2luKCIs Iikscz1vW2FdO3JldHVybiB0Lmxlbmd0aD4xJiZuP3MocixuWzBdLG5bMV0pOnMocil9KHQs ZSxsKTtyZXR1cm4gbihsLGMpfX0seyJ0eXBlZGFycmF5LXBvb2wiOjMwOH1dLDI1ODpbZnVu Y3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCIuL2xpYi9jb21waWxlX3NvcnQu anMiKSxpPXt9O2UuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10Lm9yZGVyLHI9dC5kdHlw ZSxhPVtlLHJdLmpvaW4oIjoiKSxvPWlbYV07cmV0dXJuIG98fChpW2FdPW89bihlLHIpKSxv KHQpLHR9fSx7Ii4vbGliL2NvbXBpbGVfc29ydC5qcyI6MjU3fV0sMjU5OltmdW5jdGlvbih0 LGUscil7dmFyIG49dCgiaXMtYnVmZmVyIiksaT0idW5kZWZpbmVkIiE9dHlwZW9mIEZsb2F0 NjRBcnJheTtmdW5jdGlvbiBhKHQsZSl7cmV0dXJuIHRbMF0tZVswXX1mdW5jdGlvbiBvKCl7 dmFyIHQsZT10aGlzLnN0cmlkZSxyPW5ldyBBcnJheShlLmxlbmd0aCk7Zm9yKHQ9MDt0PHIu bGVuZ3RoOysrdClyW3RdPVtNYXRoLmFicyhlW3RdKSx0XTtyLnNvcnQoYSk7dmFyIG49bmV3 IEFycmF5KHIubGVuZ3RoKTtmb3IodD0wO3Q8bi5sZW5ndGg7Kyt0KW5bdF09clt0XVsxXTty ZXR1cm4gbn12YXIgcz17VDpmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQpe3RoaXMuZGF0YT10 fXZhciByPWUucHJvdG90eXBlO3JldHVybiByLmR0eXBlPXQsci5pbmRleD1mdW5jdGlvbigp e3JldHVybi0xfSxyLnNpemU9MCxyLmRpbWVuc2lvbj0tMSxyLnNoYXBlPXIuc3RyaWRlPXIu b3JkZXI9W10sci5sbz1yLmhpPXIudHJhbnNwb3NlPXIuc3RlcD1mdW5jdGlvbigpe3JldHVy biBuZXcgZSh0aGlzLmRhdGEpfSxyLmdldD1yLnNldD1mdW5jdGlvbigpe30sci5waWNrPWZ1 bmN0aW9uKCl7cmV0dXJuIG51bGx9LGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgZSh0KX19LDA6 ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKHQsZSl7dGhpcy5kYXRhPXQsdGhpcy5vZmZzZXQ9 ZX12YXIgbj1yLnByb3RvdHlwZTtyZXR1cm4gbi5kdHlwZT10LG4uaW5kZXg9ZnVuY3Rpb24o KXtyZXR1cm4gdGhpcy5vZmZzZXR9LG4uZGltZW5zaW9uPTAsbi5zaXplPTEsbi5zaGFwZT1u LnN0cmlkZT1uLm9yZGVyPVtdLG4ubG89bi5oaT1uLnRyYW5zcG9zZT1uLnN0ZXA9ZnVuY3Rp b24oKXtyZXR1cm4gbmV3IHIodGhpcy5kYXRhLHRoaXMub2Zmc2V0KX0sbi5waWNrPWZ1bmN0 aW9uKCl7cmV0dXJuIGUodGhpcy5kYXRhKX0sbi52YWx1ZU9mPW4uZ2V0PWZ1bmN0aW9uKCl7 cmV0dXJuImdlbmVyaWMiPT09dD90aGlzLmRhdGEuZ2V0KHRoaXMub2Zmc2V0KTp0aGlzLmRh dGFbdGhpcy5vZmZzZXRdfSxuLnNldD1mdW5jdGlvbihlKXtyZXR1cm4iZ2VuZXJpYyI9PT10 P3RoaXMuZGF0YS5zZXQodGhpcy5vZmZzZXQsZSk6dGhpcy5kYXRhW3RoaXMub2Zmc2V0XT1l fSxmdW5jdGlvbih0LGUsbixpKXtyZXR1cm4gbmV3IHIodCxpKX19LDE6ZnVuY3Rpb24odCxl LHIpe2Z1bmN0aW9uIG4odCxlLHIsbil7dGhpcy5kYXRhPXQsdGhpcy5zaGFwZT1bZV0sdGhp cy5zdHJpZGU9W3JdLHRoaXMub2Zmc2V0PTB8bn12YXIgaT1uLnByb3RvdHlwZTtyZXR1cm4g aS5kdHlwZT10LGkuZGltZW5zaW9uPTEsT2JqZWN0LmRlZmluZVByb3BlcnR5KGksInNpemUi LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaGFwZVswXX19KSxpLm9yZGVyPVswXSxp LnNldD1mdW5jdGlvbihlLHIpe3JldHVybiJnZW5lcmljIj09PXQ/dGhpcy5kYXRhLnNldCh0 aGlzLm9mZnNldCt0aGlzLnN0cmlkZVswXSplLHIpOnRoaXMuZGF0YVt0aGlzLm9mZnNldCt0 aGlzLnN0cmlkZVswXSplXT1yfSxpLmdldD1mdW5jdGlvbihlKXtyZXR1cm4iZ2VuZXJpYyI9 PT10P3RoaXMuZGF0YS5nZXQodGhpcy5vZmZzZXQrdGhpcy5zdHJpZGVbMF0qZSk6dGhpcy5k YXRhW3RoaXMub2Zmc2V0K3RoaXMuc3RyaWRlWzBdKmVdfSxpLmluZGV4PWZ1bmN0aW9uKHQp e3JldHVybiB0aGlzLm9mZnNldCt0aGlzLnN0cmlkZVswXSp0fSxpLmhpPWZ1bmN0aW9uKHQp e3JldHVybiBuZXcgbih0aGlzLmRhdGEsIm51bWJlciIhPXR5cGVvZiB0fHx0PDA/dGhpcy5z aGFwZVswXTowfHQsdGhpcy5zdHJpZGVbMF0sdGhpcy5vZmZzZXQpfSxpLmxvPWZ1bmN0aW9u KHQpe3ZhciBlPXRoaXMub2Zmc2V0LHI9MCxpPXRoaXMuc2hhcGVbMF0sYT10aGlzLnN0cmlk ZVswXTtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJnQ+PTAmJihlKz1hKihyPTB8dCksaS09 ciksbmV3IG4odGhpcy5kYXRhLGksYSxlKX0saS5zdGVwPWZ1bmN0aW9uKHQpe3ZhciBlPXRo aXMuc2hhcGVbMF0scj10aGlzLnN0cmlkZVswXSxpPXRoaXMub2Zmc2V0LGE9MCxvPU1hdGgu Y2VpbDtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJigoYT0wfHQpPDA/KGkrPXIqKGUtMSks ZT1vKC1lL2EpKTplPW8oZS9hKSxyKj1hKSxuZXcgbih0aGlzLmRhdGEsZSxyLGkpfSxpLnRy YW5zcG9zZT1mdW5jdGlvbih0KXt0PXZvaWQgMD09PXQ/MDowfHQ7dmFyIGU9dGhpcy5zaGFw ZSxyPXRoaXMuc3RyaWRlO3JldHVybiBuZXcgbih0aGlzLmRhdGEsZVt0XSxyW3RdLHRoaXMu b2Zmc2V0KX0saS5waWNrPWZ1bmN0aW9uKHQpe3ZhciByPVtdLG49W10saT10aGlzLm9mZnNl dDtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJnQ+PTA/aT1pK3RoaXMuc3RyaWRlWzBdKnR8 MDooci5wdXNoKHRoaXMuc2hhcGVbMF0pLG4ucHVzaCh0aGlzLnN0cmlkZVswXSkpLCgwLGVb ci5sZW5ndGgrMV0pKHRoaXMuZGF0YSxyLG4saSl9LGZ1bmN0aW9uKHQsZSxyLGkpe3JldHVy biBuZXcgbih0LGVbMF0sclswXSxpKX19LDI6ZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4o dCxlLHIsbixpLGEpe3RoaXMuZGF0YT10LHRoaXMuc2hhcGU9W2Uscl0sdGhpcy5zdHJpZGU9 W24saV0sdGhpcy5vZmZzZXQ9MHxhfXZhciBpPW4ucHJvdG90eXBlO3JldHVybiBpLmR0eXBl PXQsaS5kaW1lbnNpb249MixPYmplY3QuZGVmaW5lUHJvcGVydHkoaSwic2l6ZSIse2dldDpm dW5jdGlvbigpe3JldHVybiB0aGlzLnNoYXBlWzBdKnRoaXMuc2hhcGVbMV19fSksT2JqZWN0 LmRlZmluZVByb3BlcnR5KGksIm9yZGVyIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgu YWJzKHRoaXMuc3RyaWRlWzBdKT5NYXRoLmFicyh0aGlzLnN0cmlkZVsxXSk/WzEsMF06WzAs MV19fSksaS5zZXQ9ZnVuY3Rpb24oZSxyLG4pe3JldHVybiJnZW5lcmljIj09PXQ/dGhpcy5k YXRhLnNldCh0aGlzLm9mZnNldCt0aGlzLnN0cmlkZVswXSplK3RoaXMuc3RyaWRlWzFdKnIs bik6dGhpcy5kYXRhW3RoaXMub2Zmc2V0K3RoaXMuc3RyaWRlWzBdKmUrdGhpcy5zdHJpZGVb MV0qcl09bn0saS5nZXQ9ZnVuY3Rpb24oZSxyKXtyZXR1cm4iZ2VuZXJpYyI9PT10P3RoaXMu ZGF0YS5nZXQodGhpcy5vZmZzZXQrdGhpcy5zdHJpZGVbMF0qZSt0aGlzLnN0cmlkZVsxXSpy KTp0aGlzLmRhdGFbdGhpcy5vZmZzZXQrdGhpcy5zdHJpZGVbMF0qZSt0aGlzLnN0cmlkZVsx XSpyXX0saS5pbmRleD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm9mZnNldCt0aGlzLnN0 cmlkZVswXSp0K3RoaXMuc3RyaWRlWzFdKmV9LGkuaGk9ZnVuY3Rpb24odCxlKXtyZXR1cm4g bmV3IG4odGhpcy5kYXRhLCJudW1iZXIiIT10eXBlb2YgdHx8dDwwP3RoaXMuc2hhcGVbMF06 MHx0LCJudW1iZXIiIT10eXBlb2YgZXx8ZTwwP3RoaXMuc2hhcGVbMV06MHxlLHRoaXMuc3Ry aWRlWzBdLHRoaXMuc3RyaWRlWzFdLHRoaXMub2Zmc2V0KX0saS5sbz1mdW5jdGlvbih0LGUp e3ZhciByPXRoaXMub2Zmc2V0LGk9MCxhPXRoaXMuc2hhcGVbMF0sbz10aGlzLnNoYXBlWzFd LHM9dGhpcy5zdHJpZGVbMF0sbD10aGlzLnN0cmlkZVsxXTtyZXR1cm4ibnVtYmVyIj09dHlw ZW9mIHQmJnQ+PTAmJihyKz1zKihpPTB8dCksYS09aSksIm51bWJlciI9PXR5cGVvZiBlJiZl Pj0wJiYocis9bCooaT0wfGUpLG8tPWkpLG5ldyBuKHRoaXMuZGF0YSxhLG8scyxsLHIpfSxp LnN0ZXA9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLnNoYXBlWzBdLGk9dGhpcy5zaGFwZVsx XSxhPXRoaXMuc3RyaWRlWzBdLG89dGhpcy5zdHJpZGVbMV0scz10aGlzLm9mZnNldCxsPTAs Yz1NYXRoLmNlaWw7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiYoKGw9MHx0KTwwPyhzKz1h KihyLTEpLHI9Yygtci9sKSk6cj1jKHIvbCksYSo9bCksIm51bWJlciI9PXR5cGVvZiBlJiYo KGw9MHxlKTwwPyhzKz1vKihpLTEpLGk9YygtaS9sKSk6aT1jKGkvbCksbyo9bCksbmV3IG4o dGhpcy5kYXRhLHIsaSxhLG8scyl9LGkudHJhbnNwb3NlPWZ1bmN0aW9uKHQsZSl7dD12b2lk IDA9PT10PzA6MHx0LGU9dm9pZCAwPT09ZT8xOjB8ZTt2YXIgcj10aGlzLnNoYXBlLGk9dGhp cy5zdHJpZGU7cmV0dXJuIG5ldyBuKHRoaXMuZGF0YSxyW3RdLHJbZV0saVt0XSxpW2VdLHRo aXMub2Zmc2V0KX0saS5waWNrPWZ1bmN0aW9uKHQscil7dmFyIG49W10saT1bXSxhPXRoaXMu b2Zmc2V0O3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD49MD9hPWErdGhpcy5zdHJpZGVb MF0qdHwwOihuLnB1c2godGhpcy5zaGFwZVswXSksaS5wdXNoKHRoaXMuc3RyaWRlWzBdKSks Im51bWJlciI9PXR5cGVvZiByJiZyPj0wP2E9YSt0aGlzLnN0cmlkZVsxXSpyfDA6KG4ucHVz aCh0aGlzLnNoYXBlWzFdKSxpLnB1c2godGhpcy5zdHJpZGVbMV0pKSwoMCxlW24ubGVuZ3Ro KzFdKSh0aGlzLmRhdGEsbixpLGEpfSxmdW5jdGlvbih0LGUscixpKXtyZXR1cm4gbmV3IG4o dCxlWzBdLGVbMV0sclswXSxyWzFdLGkpfX0sMzpmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24g bih0LGUscixuLGksYSxvLHMpe3RoaXMuZGF0YT10LHRoaXMuc2hhcGU9W2UscixuXSx0aGlz LnN0cmlkZT1baSxhLG9dLHRoaXMub2Zmc2V0PTB8c312YXIgaT1uLnByb3RvdHlwZTtyZXR1 cm4gaS5kdHlwZT10LGkuZGltZW5zaW9uPTMsT2JqZWN0LmRlZmluZVByb3BlcnR5KGksInNp emUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaGFwZVswXSp0aGlzLnNoYXBlWzFd KnRoaXMuc2hhcGVbMl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGksIm9yZGVyIix7Z2V0 OmZ1bmN0aW9uKCl7dmFyIHQ9TWF0aC5hYnModGhpcy5zdHJpZGVbMF0pLGU9TWF0aC5hYnMo dGhpcy5zdHJpZGVbMV0pLHI9TWF0aC5hYnModGhpcy5zdHJpZGVbMl0pO3JldHVybiB0PmU/ ZT5yP1syLDEsMF06dD5yP1sxLDIsMF06WzEsMCwyXTp0PnI/WzIsMCwxXTpyPmU/WzAsMSwy XTpbMCwyLDFdfX0pLGkuc2V0PWZ1bmN0aW9uKGUscixuLGkpe3JldHVybiJnZW5lcmljIj09 PXQ/dGhpcy5kYXRhLnNldCh0aGlzLm9mZnNldCt0aGlzLnN0cmlkZVswXSplK3RoaXMuc3Ry aWRlWzFdKnIrdGhpcy5zdHJpZGVbMl0qbixpKTp0aGlzLmRhdGFbdGhpcy5vZmZzZXQrdGhp cy5zdHJpZGVbMF0qZSt0aGlzLnN0cmlkZVsxXSpyK3RoaXMuc3RyaWRlWzJdKm5dPWl9LGku Z2V0PWZ1bmN0aW9uKGUscixuKXtyZXR1cm4iZ2VuZXJpYyI9PT10P3RoaXMuZGF0YS5nZXQo dGhpcy5vZmZzZXQrdGhpcy5zdHJpZGVbMF0qZSt0aGlzLnN0cmlkZVsxXSpyK3RoaXMuc3Ry aWRlWzJdKm4pOnRoaXMuZGF0YVt0aGlzLm9mZnNldCt0aGlzLnN0cmlkZVswXSplK3RoaXMu c3RyaWRlWzFdKnIrdGhpcy5zdHJpZGVbMl0qbl19LGkuaW5kZXg9ZnVuY3Rpb24odCxlLHIp e3JldHVybiB0aGlzLm9mZnNldCt0aGlzLnN0cmlkZVswXSp0K3RoaXMuc3RyaWRlWzFdKmUr dGhpcy5zdHJpZGVbMl0qcn0saS5oaT1mdW5jdGlvbih0LGUscil7cmV0dXJuIG5ldyBuKHRo aXMuZGF0YSwibnVtYmVyIiE9dHlwZW9mIHR8fHQ8MD90aGlzLnNoYXBlWzBdOjB8dCwibnVt YmVyIiE9dHlwZW9mIGV8fGU8MD90aGlzLnNoYXBlWzFdOjB8ZSwibnVtYmVyIiE9dHlwZW9m IHJ8fHI8MD90aGlzLnNoYXBlWzJdOjB8cix0aGlzLnN0cmlkZVswXSx0aGlzLnN0cmlkZVsx XSx0aGlzLnN0cmlkZVsyXSx0aGlzLm9mZnNldCl9LGkubG89ZnVuY3Rpb24odCxlLHIpe3Zh ciBpPXRoaXMub2Zmc2V0LGE9MCxvPXRoaXMuc2hhcGVbMF0scz10aGlzLnNoYXBlWzFdLGw9 dGhpcy5zaGFwZVsyXSxjPXRoaXMuc3RyaWRlWzBdLHU9dGhpcy5zdHJpZGVbMV0sZj10aGlz LnN0cmlkZVsyXTtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJnQ+PTAmJihpKz1jKihhPTB8 dCksby09YSksIm51bWJlciI9PXR5cGVvZiBlJiZlPj0wJiYoaSs9dSooYT0wfGUpLHMtPWEp LCJudW1iZXIiPT10eXBlb2YgciYmcj49MCYmKGkrPWYqKGE9MHxyKSxsLT1hKSxuZXcgbih0 aGlzLmRhdGEsbyxzLGwsYyx1LGYsaSl9LGkuc3RlcD1mdW5jdGlvbih0LGUscil7dmFyIGk9 dGhpcy5zaGFwZVswXSxhPXRoaXMuc2hhcGVbMV0sbz10aGlzLnNoYXBlWzJdLHM9dGhpcy5z dHJpZGVbMF0sbD10aGlzLnN0cmlkZVsxXSxjPXRoaXMuc3RyaWRlWzJdLHU9dGhpcy5vZmZz ZXQsZj0wLGg9TWF0aC5jZWlsO3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmKChmPTB8dCk8 MD8odSs9cyooaS0xKSxpPWgoLWkvZikpOmk9aChpL2YpLHMqPWYpLCJudW1iZXIiPT10eXBl b2YgZSYmKChmPTB8ZSk8MD8odSs9bCooYS0xKSxhPWgoLWEvZikpOmE9aChhL2YpLGwqPWYp LCJudW1iZXIiPT10eXBlb2YgciYmKChmPTB8cik8MD8odSs9Yyooby0xKSxvPWgoLW8vZikp Om89aChvL2YpLGMqPWYpLG5ldyBuKHRoaXMuZGF0YSxpLGEsbyxzLGwsYyx1KX0saS50cmFu c3Bvc2U9ZnVuY3Rpb24odCxlLHIpe3Q9dm9pZCAwPT09dD8wOjB8dCxlPXZvaWQgMD09PWU/ MTowfGUscj12b2lkIDA9PT1yPzI6MHxyO3ZhciBpPXRoaXMuc2hhcGUsYT10aGlzLnN0cmlk ZTtyZXR1cm4gbmV3IG4odGhpcy5kYXRhLGlbdF0saVtlXSxpW3JdLGFbdF0sYVtlXSxhW3Jd LHRoaXMub2Zmc2V0KX0saS5waWNrPWZ1bmN0aW9uKHQscixuKXt2YXIgaT1bXSxhPVtdLG89 dGhpcy5vZmZzZXQ7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pj0wP289byt0aGlzLnN0 cmlkZVswXSp0fDA6KGkucHVzaCh0aGlzLnNoYXBlWzBdKSxhLnB1c2godGhpcy5zdHJpZGVb MF0pKSwibnVtYmVyIj09dHlwZW9mIHImJnI+PTA/bz1vK3RoaXMuc3RyaWRlWzFdKnJ8MDoo aS5wdXNoKHRoaXMuc2hhcGVbMV0pLGEucHVzaCh0aGlzLnN0cmlkZVsxXSkpLCJudW1iZXIi PT10eXBlb2YgbiYmbj49MD9vPW8rdGhpcy5zdHJpZGVbMl0qbnwwOihpLnB1c2godGhpcy5z aGFwZVsyXSksYS5wdXNoKHRoaXMuc3RyaWRlWzJdKSksKDAsZVtpLmxlbmd0aCsxXSkodGhp cy5kYXRhLGksYSxvKX0sZnVuY3Rpb24odCxlLHIsaSl7cmV0dXJuIG5ldyBuKHQsZVswXSxl WzFdLGVbMl0sclswXSxyWzFdLHJbMl0saSl9fSw0OmZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlv biBuKHQsZSxyLG4saSxhLG8scyxsLGMpe3RoaXMuZGF0YT10LHRoaXMuc2hhcGU9W2Uscixu LGldLHRoaXMuc3RyaWRlPVthLG8scyxsXSx0aGlzLm9mZnNldD0wfGN9dmFyIGk9bi5wcm90 b3R5cGU7cmV0dXJuIGkuZHR5cGU9dCxpLmRpbWVuc2lvbj00LE9iamVjdC5kZWZpbmVQcm9w ZXJ0eShpLCJzaXplIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2hhcGVbMF0qdGhp cy5zaGFwZVsxXSp0aGlzLnNoYXBlWzJdKnRoaXMuc2hhcGVbM119fSksT2JqZWN0LmRlZmlu ZVByb3BlcnR5KGksIm9yZGVyIix7Z2V0OnJ9KSxpLnNldD1mdW5jdGlvbihlLHIsbixpLGEp e3JldHVybiJnZW5lcmljIj09PXQ/dGhpcy5kYXRhLnNldCh0aGlzLm9mZnNldCt0aGlzLnN0 cmlkZVswXSplK3RoaXMuc3RyaWRlWzFdKnIrdGhpcy5zdHJpZGVbMl0qbit0aGlzLnN0cmlk ZVszXSppLGEpOnRoaXMuZGF0YVt0aGlzLm9mZnNldCt0aGlzLnN0cmlkZVswXSplK3RoaXMu c3RyaWRlWzFdKnIrdGhpcy5zdHJpZGVbMl0qbit0aGlzLnN0cmlkZVszXSppXT1hfSxpLmdl dD1mdW5jdGlvbihlLHIsbixpKXtyZXR1cm4iZ2VuZXJpYyI9PT10P3RoaXMuZGF0YS5nZXQo dGhpcy5vZmZzZXQrdGhpcy5zdHJpZGVbMF0qZSt0aGlzLnN0cmlkZVsxXSpyK3RoaXMuc3Ry aWRlWzJdKm4rdGhpcy5zdHJpZGVbM10qaSk6dGhpcy5kYXRhW3RoaXMub2Zmc2V0K3RoaXMu c3RyaWRlWzBdKmUrdGhpcy5zdHJpZGVbMV0qcit0aGlzLnN0cmlkZVsyXSpuK3RoaXMuc3Ry aWRlWzNdKmldfSxpLmluZGV4PWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiB0aGlzLm9mZnNl dCt0aGlzLnN0cmlkZVswXSp0K3RoaXMuc3RyaWRlWzFdKmUrdGhpcy5zdHJpZGVbMl0qcit0 aGlzLnN0cmlkZVszXSpufSxpLmhpPWZ1bmN0aW9uKHQsZSxyLGkpe3JldHVybiBuZXcgbih0 aGlzLmRhdGEsIm51bWJlciIhPXR5cGVvZiB0fHx0PDA/dGhpcy5zaGFwZVswXTowfHQsIm51 bWJlciIhPXR5cGVvZiBlfHxlPDA/dGhpcy5zaGFwZVsxXTowfGUsIm51bWJlciIhPXR5cGVv ZiByfHxyPDA/dGhpcy5zaGFwZVsyXTowfHIsIm51bWJlciIhPXR5cGVvZiBpfHxpPDA/dGhp cy5zaGFwZVszXTowfGksdGhpcy5zdHJpZGVbMF0sdGhpcy5zdHJpZGVbMV0sdGhpcy5zdHJp ZGVbMl0sdGhpcy5zdHJpZGVbM10sdGhpcy5vZmZzZXQpfSxpLmxvPWZ1bmN0aW9uKHQsZSxy LGkpe3ZhciBhPXRoaXMub2Zmc2V0LG89MCxzPXRoaXMuc2hhcGVbMF0sbD10aGlzLnNoYXBl WzFdLGM9dGhpcy5zaGFwZVsyXSx1PXRoaXMuc2hhcGVbM10sZj10aGlzLnN0cmlkZVswXSxo PXRoaXMuc3RyaWRlWzFdLHA9dGhpcy5zdHJpZGVbMl0sZD10aGlzLnN0cmlkZVszXTtyZXR1 cm4ibnVtYmVyIj09dHlwZW9mIHQmJnQ+PTAmJihhKz1mKihvPTB8dCkscy09byksIm51bWJl ciI9PXR5cGVvZiBlJiZlPj0wJiYoYSs9aCoobz0wfGUpLGwtPW8pLCJudW1iZXIiPT10eXBl b2YgciYmcj49MCYmKGErPXAqKG89MHxyKSxjLT1vKSwibnVtYmVyIj09dHlwZW9mIGkmJmk+ PTAmJihhKz1kKihvPTB8aSksdS09byksbmV3IG4odGhpcy5kYXRhLHMsbCxjLHUsZixoLHAs ZCxhKX0saS5zdGVwPWZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBhPXRoaXMuc2hhcGVbMF0sbz10 aGlzLnNoYXBlWzFdLHM9dGhpcy5zaGFwZVsyXSxsPXRoaXMuc2hhcGVbM10sYz10aGlzLnN0 cmlkZVswXSx1PXRoaXMuc3RyaWRlWzFdLGY9dGhpcy5zdHJpZGVbMl0saD10aGlzLnN0cmlk ZVszXSxwPXRoaXMub2Zmc2V0LGQ9MCxtPU1hdGguY2VpbDtyZXR1cm4ibnVtYmVyIj09dHlw ZW9mIHQmJigoZD0wfHQpPDA/KHArPWMqKGEtMSksYT1tKC1hL2QpKTphPW0oYS9kKSxjKj1k KSwibnVtYmVyIj09dHlwZW9mIGUmJigoZD0wfGUpPDA/KHArPXUqKG8tMSksbz1tKC1vL2Qp KTpvPW0oby9kKSx1Kj1kKSwibnVtYmVyIj09dHlwZW9mIHImJigoZD0wfHIpPDA/KHArPWYq KHMtMSkscz1tKC1zL2QpKTpzPW0ocy9kKSxmKj1kKSwibnVtYmVyIj09dHlwZW9mIGkmJigo ZD0wfGkpPDA/KHArPWgqKGwtMSksbD1tKC1sL2QpKTpsPW0obC9kKSxoKj1kKSxuZXcgbih0 aGlzLmRhdGEsYSxvLHMsbCxjLHUsZixoLHApfSxpLnRyYW5zcG9zZT1mdW5jdGlvbih0LGUs cixpKXt0PXZvaWQgMD09PXQ/MDowfHQsZT12b2lkIDA9PT1lPzE6MHxlLHI9dm9pZCAwPT09 cj8yOjB8cixpPXZvaWQgMD09PWk/MzowfGk7dmFyIGE9dGhpcy5zaGFwZSxvPXRoaXMuc3Ry aWRlO3JldHVybiBuZXcgbih0aGlzLmRhdGEsYVt0XSxhW2VdLGFbcl0sYVtpXSxvW3RdLG9b ZV0sb1tyXSxvW2ldLHRoaXMub2Zmc2V0KX0saS5waWNrPWZ1bmN0aW9uKHQscixuLGkpe3Zh ciBhPVtdLG89W10scz10aGlzLm9mZnNldDtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJnQ+ PTA/cz1zK3RoaXMuc3RyaWRlWzBdKnR8MDooYS5wdXNoKHRoaXMuc2hhcGVbMF0pLG8ucHVz aCh0aGlzLnN0cmlkZVswXSkpLCJudW1iZXIiPT10eXBlb2YgciYmcj49MD9zPXMrdGhpcy5z dHJpZGVbMV0qcnwwOihhLnB1c2godGhpcy5zaGFwZVsxXSksby5wdXNoKHRoaXMuc3RyaWRl WzFdKSksIm51bWJlciI9PXR5cGVvZiBuJiZuPj0wP3M9cyt0aGlzLnN0cmlkZVsyXSpufDA6 KGEucHVzaCh0aGlzLnNoYXBlWzJdKSxvLnB1c2godGhpcy5zdHJpZGVbMl0pKSwibnVtYmVy Ij09dHlwZW9mIGkmJmk+PTA/cz1zK3RoaXMuc3RyaWRlWzNdKml8MDooYS5wdXNoKHRoaXMu c2hhcGVbM10pLG8ucHVzaCh0aGlzLnN0cmlkZVszXSkpLCgwLGVbYS5sZW5ndGgrMV0pKHRo aXMuZGF0YSxhLG8scyl9LGZ1bmN0aW9uKHQsZSxyLGkpe3JldHVybiBuZXcgbih0LGVbMF0s ZVsxXSxlWzJdLGVbM10sclswXSxyWzFdLHJbMl0sclszXSxpKX19LDU6ZnVuY3Rpb24odCxl LHIpe2Z1bmN0aW9uIG4odCxlLHIsbixpLGEsbyxzLGwsYyx1LGYpe3RoaXMuZGF0YT10LHRo aXMuc2hhcGU9W2UscixuLGksYV0sdGhpcy5zdHJpZGU9W28scyxsLGMsdV0sdGhpcy5vZmZz ZXQ9MHxmfXZhciBpPW4ucHJvdG90eXBlO3JldHVybiBpLmR0eXBlPXQsaS5kaW1lbnNpb249 NSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaSwic2l6ZSIse2dldDpmdW5jdGlvbigpe3JldHVy biB0aGlzLnNoYXBlWzBdKnRoaXMuc2hhcGVbMV0qdGhpcy5zaGFwZVsyXSp0aGlzLnNoYXBl WzNdKnRoaXMuc2hhcGVbNF19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGksIm9yZGVyIix7 Z2V0OnJ9KSxpLnNldD1mdW5jdGlvbihlLHIsbixpLGEsbyl7cmV0dXJuImdlbmVyaWMiPT09 dD90aGlzLmRhdGEuc2V0KHRoaXMub2Zmc2V0K3RoaXMuc3RyaWRlWzBdKmUrdGhpcy5zdHJp ZGVbMV0qcit0aGlzLnN0cmlkZVsyXSpuK3RoaXMuc3RyaWRlWzNdKmkrdGhpcy5zdHJpZGVb NF0qYSxvKTp0aGlzLmRhdGFbdGhpcy5vZmZzZXQrdGhpcy5zdHJpZGVbMF0qZSt0aGlzLnN0 cmlkZVsxXSpyK3RoaXMuc3RyaWRlWzJdKm4rdGhpcy5zdHJpZGVbM10qaSt0aGlzLnN0cmlk ZVs0XSphXT1vfSxpLmdldD1mdW5jdGlvbihlLHIsbixpLGEpe3JldHVybiJnZW5lcmljIj09 PXQ/dGhpcy5kYXRhLmdldCh0aGlzLm9mZnNldCt0aGlzLnN0cmlkZVswXSplK3RoaXMuc3Ry aWRlWzFdKnIrdGhpcy5zdHJpZGVbMl0qbit0aGlzLnN0cmlkZVszXSppK3RoaXMuc3RyaWRl WzRdKmEpOnRoaXMuZGF0YVt0aGlzLm9mZnNldCt0aGlzLnN0cmlkZVswXSplK3RoaXMuc3Ry aWRlWzFdKnIrdGhpcy5zdHJpZGVbMl0qbit0aGlzLnN0cmlkZVszXSppK3RoaXMuc3RyaWRl WzRdKmFdfSxpLmluZGV4PWZ1bmN0aW9uKHQsZSxyLG4saSl7cmV0dXJuIHRoaXMub2Zmc2V0 K3RoaXMuc3RyaWRlWzBdKnQrdGhpcy5zdHJpZGVbMV0qZSt0aGlzLnN0cmlkZVsyXSpyK3Ro aXMuc3RyaWRlWzNdKm4rdGhpcy5zdHJpZGVbNF0qaX0saS5oaT1mdW5jdGlvbih0LGUscixp LGEpe3JldHVybiBuZXcgbih0aGlzLmRhdGEsIm51bWJlciIhPXR5cGVvZiB0fHx0PDA/dGhp cy5zaGFwZVswXTowfHQsIm51bWJlciIhPXR5cGVvZiBlfHxlPDA/dGhpcy5zaGFwZVsxXTow fGUsIm51bWJlciIhPXR5cGVvZiByfHxyPDA/dGhpcy5zaGFwZVsyXTowfHIsIm51bWJlciIh PXR5cGVvZiBpfHxpPDA/dGhpcy5zaGFwZVszXTowfGksIm51bWJlciIhPXR5cGVvZiBhfHxh PDA/dGhpcy5zaGFwZVs0XTowfGEsdGhpcy5zdHJpZGVbMF0sdGhpcy5zdHJpZGVbMV0sdGhp cy5zdHJpZGVbMl0sdGhpcy5zdHJpZGVbM10sdGhpcy5zdHJpZGVbNF0sdGhpcy5vZmZzZXQp fSxpLmxvPWZ1bmN0aW9uKHQsZSxyLGksYSl7dmFyIG89dGhpcy5vZmZzZXQscz0wLGw9dGhp cy5zaGFwZVswXSxjPXRoaXMuc2hhcGVbMV0sdT10aGlzLnNoYXBlWzJdLGY9dGhpcy5zaGFw ZVszXSxoPXRoaXMuc2hhcGVbNF0scD10aGlzLnN0cmlkZVswXSxkPXRoaXMuc3RyaWRlWzFd LG09dGhpcy5zdHJpZGVbMl0sZz10aGlzLnN0cmlkZVszXSx2PXRoaXMuc3RyaWRlWzRdO3Jl dHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD49MCYmKG8rPXAqKHM9MHx0KSxsLT1zKSwibnVt YmVyIj09dHlwZW9mIGUmJmU+PTAmJihvKz1kKihzPTB8ZSksYy09cyksIm51bWJlciI9PXR5 cGVvZiByJiZyPj0wJiYobys9bSoocz0wfHIpLHUtPXMpLCJudW1iZXIiPT10eXBlb2YgaSYm aT49MCYmKG8rPWcqKHM9MHxpKSxmLT1zKSwibnVtYmVyIj09dHlwZW9mIGEmJmE+PTAmJihv Kz12KihzPTB8YSksaC09cyksbmV3IG4odGhpcy5kYXRhLGwsYyx1LGYsaCxwLGQsbSxnLHYs byl9LGkuc3RlcD1mdW5jdGlvbih0LGUscixpLGEpe3ZhciBvPXRoaXMuc2hhcGVbMF0scz10 aGlzLnNoYXBlWzFdLGw9dGhpcy5zaGFwZVsyXSxjPXRoaXMuc2hhcGVbM10sdT10aGlzLnNo YXBlWzRdLGY9dGhpcy5zdHJpZGVbMF0saD10aGlzLnN0cmlkZVsxXSxwPXRoaXMuc3RyaWRl WzJdLGQ9dGhpcy5zdHJpZGVbM10sbT10aGlzLnN0cmlkZVs0XSxnPXRoaXMub2Zmc2V0LHY9 MCx5PU1hdGguY2VpbDtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJigodj0wfHQpPDA/KGcr PWYqKG8tMSksbz15KC1vL3YpKTpvPXkoby92KSxmKj12KSwibnVtYmVyIj09dHlwZW9mIGUm Jigodj0wfGUpPDA/KGcrPWgqKHMtMSkscz15KC1zL3YpKTpzPXkocy92KSxoKj12KSwibnVt YmVyIj09dHlwZW9mIHImJigodj0wfHIpPDA/KGcrPXAqKGwtMSksbD15KC1sL3YpKTpsPXko bC92KSxwKj12KSwibnVtYmVyIj09dHlwZW9mIGkmJigodj0wfGkpPDA/KGcrPWQqKGMtMSks Yz15KC1jL3YpKTpjPXkoYy92KSxkKj12KSwibnVtYmVyIj09dHlwZW9mIGEmJigodj0wfGEp PDA/KGcrPW0qKHUtMSksdT15KC11L3YpKTp1PXkodS92KSxtKj12KSxuZXcgbih0aGlzLmRh dGEsbyxzLGwsYyx1LGYsaCxwLGQsbSxnKX0saS50cmFuc3Bvc2U9ZnVuY3Rpb24odCxlLHIs aSxhKXt0PXZvaWQgMD09PXQ/MDowfHQsZT12b2lkIDA9PT1lPzE6MHxlLHI9dm9pZCAwPT09 cj8yOjB8cixpPXZvaWQgMD09PWk/MzowfGksYT12b2lkIDA9PT1hPzQ6MHxhO3ZhciBvPXRo aXMuc2hhcGUscz10aGlzLnN0cmlkZTtyZXR1cm4gbmV3IG4odGhpcy5kYXRhLG9bdF0sb1tl XSxvW3JdLG9baV0sb1thXSxzW3RdLHNbZV0sc1tyXSxzW2ldLHNbYV0sdGhpcy5vZmZzZXQp fSxpLnBpY2s9ZnVuY3Rpb24odCxyLG4saSxhKXt2YXIgbz1bXSxzPVtdLGw9dGhpcy5vZmZz ZXQ7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pj0wP2w9bCt0aGlzLnN0cmlkZVswXSp0 fDA6KG8ucHVzaCh0aGlzLnNoYXBlWzBdKSxzLnB1c2godGhpcy5zdHJpZGVbMF0pKSwibnVt YmVyIj09dHlwZW9mIHImJnI+PTA/bD1sK3RoaXMuc3RyaWRlWzFdKnJ8MDooby5wdXNoKHRo aXMuc2hhcGVbMV0pLHMucHVzaCh0aGlzLnN0cmlkZVsxXSkpLCJudW1iZXIiPT10eXBlb2Yg biYmbj49MD9sPWwrdGhpcy5zdHJpZGVbMl0qbnwwOihvLnB1c2godGhpcy5zaGFwZVsyXSks cy5wdXNoKHRoaXMuc3RyaWRlWzJdKSksIm51bWJlciI9PXR5cGVvZiBpJiZpPj0wP2w9bCt0 aGlzLnN0cmlkZVszXSppfDA6KG8ucHVzaCh0aGlzLnNoYXBlWzNdKSxzLnB1c2godGhpcy5z dHJpZGVbM10pKSwibnVtYmVyIj09dHlwZW9mIGEmJmE+PTA/bD1sK3RoaXMuc3RyaWRlWzRd KmF8MDooby5wdXNoKHRoaXMuc2hhcGVbNF0pLHMucHVzaCh0aGlzLnN0cmlkZVs0XSkpLCgw LGVbby5sZW5ndGgrMV0pKHRoaXMuZGF0YSxvLHMsbCl9LGZ1bmN0aW9uKHQsZSxyLGkpe3Jl dHVybiBuZXcgbih0LGVbMF0sZVsxXSxlWzJdLGVbM10sZVs0XSxyWzBdLHJbMV0sclsyXSxy WzNdLHJbNF0saSl9fX07ZnVuY3Rpb24gbCh0LGUpe3ZhciByPS0xPT09ZT8iVCI6U3RyaW5n KGUpLG49c1tyXTtyZXR1cm4tMT09PWU/bih0KTowPT09ZT9uKHQsY1t0XVswXSk6bih0LGNb dF0sbyl9dmFyIGM9e2dlbmVyaWM6W10sYnVmZmVyOltdLGFycmF5OltdLGZsb2F0MzI6W10s ZmxvYXQ2NDpbXSxpbnQ4OltdLGludDE2OltdLGludDMyOltdLHVpbnQ4X2NsYW1wZWQ6W10s dWludDg6W10sdWludDE2OltdLHVpbnQzMjpbXSxiaWdpbnQ2NDpbXSxiaWd1aW50NjQ6W119 O2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscixhKXtpZih2b2lkIDA9PT10KXJldHVybigwLGMu YXJyYXlbMF0pKFtdKTsibnVtYmVyIj09dHlwZW9mIHQmJih0PVt0XSksdm9pZCAwPT09ZSYm KGU9W3QubGVuZ3RoXSk7dmFyIG89ZS5sZW5ndGg7aWYodm9pZCAwPT09cil7cj1uZXcgQXJy YXkobyk7Zm9yKHZhciBzPW8tMSx1PTE7cz49MDstLXMpcltzXT11LHUqPWVbc119aWYodm9p ZCAwPT09YSl7YT0wO2ZvcihzPTA7czxvOysrcylyW3NdPDAmJihhLT0oZVtzXS0xKSpyW3Nd KX1mb3IodmFyIGY9ZnVuY3Rpb24odCl7aWYobih0KSlyZXR1cm4iYnVmZmVyIjtpZihpKXN3 aXRjaChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkpe2Nhc2UiW29iamVjdCBG bG9hdDY0QXJyYXldIjpyZXR1cm4iZmxvYXQ2NCI7Y2FzZSJbb2JqZWN0IEZsb2F0MzJBcnJh eV0iOnJldHVybiJmbG9hdDMyIjtjYXNlIltvYmplY3QgSW50OEFycmF5XSI6cmV0dXJuImlu dDgiO2Nhc2UiW29iamVjdCBJbnQxNkFycmF5XSI6cmV0dXJuImludDE2IjtjYXNlIltvYmpl Y3QgSW50MzJBcnJheV0iOnJldHVybiJpbnQzMiI7Y2FzZSJbb2JqZWN0IFVpbnQ4Q2xhbXBl ZEFycmF5XSI6cmV0dXJuInVpbnQ4X2NsYW1wZWQiO2Nhc2UiW29iamVjdCBVaW50OEFycmF5 XSI6cmV0dXJuInVpbnQ4IjtjYXNlIltvYmplY3QgVWludDE2QXJyYXldIjpyZXR1cm4idWlu dDE2IjtjYXNlIltvYmplY3QgVWludDMyQXJyYXldIjpyZXR1cm4idWludDMyIjtjYXNlIltv YmplY3QgQmlnSW50NjRBcnJheV0iOnJldHVybiJiaWdpbnQ2NCI7Y2FzZSJbb2JqZWN0IEJp Z1VpbnQ2NEFycmF5XSI6cmV0dXJuImJpZ3VpbnQ2NCJ9cmV0dXJuIEFycmF5LmlzQXJyYXko dCk/ImFycmF5IjoiZ2VuZXJpYyJ9KHQpLGg9Y1tmXTtoLmxlbmd0aDw9bysxOyloLnB1c2go bChmLGgubGVuZ3RoLTEpKTtyZXR1cm4oMCxoW28rMV0pKHQsZSxyLGEpfX0seyJpcy1idWZm ZXIiOjIzN31dLDI2MDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJk b3VibGUtYml0cyIpLGk9TWF0aC5wb3coMiwtMTA3NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSl7aWYoaXNOYU4odCl8fGlzTmFOKGUpKXJldHVybiBOYU47aWYodD09PWUpcmV0dXJuIHQ7 aWYoMD09PXQpcmV0dXJuIGU8MD8taTppO3ZhciByPW4uaGkodCksYT1uLmxvKHQpO2U+dD09 dD4wP2E9PT0tMT4+PjA/KHIrPTEsYT0wKTphKz0xOjA9PT1hPyhhPS0xPj4+MCxyLT0xKTph LT0xO3JldHVybiBuLnBhY2soYSxyKX19LHsiZG91YmxlLWJpdHMiOjY0fV0sMjYxOltmdW5j dGlvbih0LGUscil7ci52ZXJ0ZXhOb3JtYWxzPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49 ZS5sZW5ndGgsaT1uZXcgQXJyYXkobiksYT12b2lkIDA9PT1yPzFlLTY6cixvPTA7bzxuOysr bylpW29dPVswLDAsMF07Zm9yKG89MDtvPHQubGVuZ3RoOysrbylmb3IodmFyIHM9dFtvXSxs PTAsYz1zW3MubGVuZ3RoLTFdLHU9c1swXSxmPTA7ZjxzLmxlbmd0aDsrK2Ype2w9YyxjPXUs dT1zWyhmKzEpJXMubGVuZ3RoXTtmb3IodmFyIGg9ZVtsXSxwPWVbY10sZD1lW3VdLG09bmV3 IEFycmF5KDMpLGc9MCx2PW5ldyBBcnJheSgzKSx5PTAseD0wO3g8MzsrK3gpbVt4XT1oW3hd LXBbeF0sZys9bVt4XSptW3hdLHZbeF09ZFt4XS1wW3hdLHkrPXZbeF0qdlt4XTtpZihnKnk+ YSl7dmFyIGI9aVtjXSxfPTEvTWF0aC5zcXJ0KGcqeSk7Zm9yKHg9MDt4PDM7Kyt4KXt2YXIg dz0oeCsxKSUzLFQ9KHgrMiklMztiW3hdKz1fKih2W3ddKm1bVF0tdltUXSptW3ddKX19fWZv cihvPTA7bzxuOysrbyl7Yj1pW29dO3ZhciBrPTA7Zm9yKHg9MDt4PDM7Kyt4KWsrPWJbeF0q Ylt4XTtpZihrPmEpZm9yKF89MS9NYXRoLnNxcnQoaykseD0wO3g8MzsrK3gpYlt4XSo9Xztl bHNlIGZvcih4PTA7eDwzOysreCliW3hdPTB9cmV0dXJuIGl9LHIuZmFjZU5vcm1hbHM9ZnVu Y3Rpb24odCxlLHIpe2Zvcih2YXIgbj10Lmxlbmd0aCxpPW5ldyBBcnJheShuKSxhPXZvaWQg MD09PXI/MWUtNjpyLG89MDtvPG47KytvKXtmb3IodmFyIHM9dFtvXSxsPW5ldyBBcnJheSgz KSxjPTA7YzwzOysrYylsW2NdPWVbc1tjXV07dmFyIHU9bmV3IEFycmF5KDMpLGY9bmV3IEFy cmF5KDMpO2ZvcihjPTA7YzwzOysrYyl1W2NdPWxbMV1bY10tbFswXVtjXSxmW2NdPWxbMl1b Y10tbFswXVtjXTt2YXIgaD1uZXcgQXJyYXkoMykscD0wO2ZvcihjPTA7YzwzOysrYyl7dmFy IGQ9KGMrMSklMyxtPShjKzIpJTM7aFtjXT11W2RdKmZbbV0tdVttXSpmW2RdLHArPWhbY10q aFtjXX1wPXA+YT8xL01hdGguc3FydChwKTowO2ZvcihjPTA7YzwzOysrYyloW2NdKj1wO2lb b109aH1yZXR1cm4gaX19LHt9XSwyNjI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7 ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4saSxhLG8scyxsLGMpe3ZhciB1PWUrYStjO2lm KGY+MCl7dmFyIGY9TWF0aC5zcXJ0KHUrMSk7dFswXT0uNSooby1sKS9mLHRbMV09LjUqKHMt bikvZix0WzJdPS41KihyLWEpL2YsdFszXT0uNSpmfWVsc2V7dmFyIGg9TWF0aC5tYXgoZSxh LGMpO2Y9TWF0aC5zcXJ0KDIqaC11KzEpO2U+PWg/KHRbMF09LjUqZix0WzFdPS41KihpK3Ip L2YsdFsyXT0uNSoocytuKS9mLHRbM109LjUqKG8tbCkvZik6YT49aD8odFswXT0uNSoocitp KS9mLHRbMV09LjUqZix0WzJdPS41KihsK28pL2YsdFszXT0uNSoocy1uKS9mKToodFswXT0u NSoobitzKS9mLHRbMV09LjUqKG8rbCkvZix0WzJdPS41KmYsdFszXT0uNSooci1pKS9mKX1y ZXR1cm4gdH19LHt9XSwyNjM6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBv cnRzPWZ1bmN0aW9uKHQpe3ZhciBlPSh0PXR8fHt9KS5jZW50ZXJ8fFswLDAsMF0scj10LnJv dGF0aW9ufHxbMCwwLDAsMV0sbj10LnJhZGl1c3x8MTtlPVtdLnNsaWNlLmNhbGwoZSwwLDMp LHUocj1bXS5zbGljZS5jYWxsKHIsMCw0KSxyKTt2YXIgaT1uZXcgZihyLGUsTWF0aC5sb2co bikpO2kuc2V0RGlzdGFuY2VMaW1pdHModC56b29tTWluLHQuem9vbU1heCksKCJleWUiaW4g dHx8InVwImluIHQpJiZpLmxvb2tBdCgwLHQuZXllLHQuY2VudGVyLHQudXApO3JldHVybiBp fTt2YXIgbj10KCJmaWx0ZXJlZC12ZWN0b3IiKSxpPXQoImdsLW1hdDQvbG9va0F0IiksYT10 KCJnbC1tYXQ0L2Zyb21RdWF0Iiksbz10KCJnbC1tYXQ0L2ludmVydCIpLHM9dCgiLi9saWIv cXVhdEZyb21GcmFtZSIpO2Z1bmN0aW9uIGwodCxlLHIpe3JldHVybiBNYXRoLnNxcnQoTWF0 aC5wb3codCwyKStNYXRoLnBvdyhlLDIpK01hdGgucG93KHIsMikpfWZ1bmN0aW9uIGModCxl LHIsbil7cmV0dXJuIE1hdGguc3FydChNYXRoLnBvdyh0LDIpK01hdGgucG93KGUsMikrTWF0 aC5wb3cociwyKStNYXRoLnBvdyhuLDIpKX1mdW5jdGlvbiB1KHQsZSl7dmFyIHI9ZVswXSxu PWVbMV0saT1lWzJdLGE9ZVszXSxvPWMocixuLGksYSk7bz4xZS02Pyh0WzBdPXIvbyx0WzFd PW4vbyx0WzJdPWkvbyx0WzNdPWEvbyk6KHRbMF09dFsxXT10WzJdPTAsdFszXT0xKX1mdW5j dGlvbiBmKHQsZSxyKXt0aGlzLnJhZGl1cz1uKFtyXSksdGhpcy5jZW50ZXI9bihlKSx0aGlz LnJvdGF0aW9uPW4odCksdGhpcy5jb21wdXRlZFJhZGl1cz10aGlzLnJhZGl1cy5jdXJ2ZSgw KSx0aGlzLmNvbXB1dGVkQ2VudGVyPXRoaXMuY2VudGVyLmN1cnZlKDApLHRoaXMuY29tcHV0 ZWRSb3RhdGlvbj10aGlzLnJvdGF0aW9uLmN1cnZlKDApLHRoaXMuY29tcHV0ZWRVcD1bLjEs MCwwXSx0aGlzLmNvbXB1dGVkRXllPVsuMSwwLDBdLHRoaXMuY29tcHV0ZWRNYXRyaXg9Wy4x LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXSx0aGlzLnJlY2FsY01hdHJpeCgwKX12 YXIgaD1mLnByb3RvdHlwZTtoLmxhc3RUPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgubWF4KHRo aXMucmFkaXVzLmxhc3RUKCksdGhpcy5jZW50ZXIubGFzdFQoKSx0aGlzLnJvdGF0aW9uLmxh c3RUKCkpfSxoLnJlY2FsY01hdHJpeD1mdW5jdGlvbih0KXt0aGlzLnJhZGl1cy5jdXJ2ZSh0 KSx0aGlzLmNlbnRlci5jdXJ2ZSh0KSx0aGlzLnJvdGF0aW9uLmN1cnZlKHQpO3ZhciBlPXRo aXMuY29tcHV0ZWRSb3RhdGlvbjt1KGUsZSk7dmFyIHI9dGhpcy5jb21wdXRlZE1hdHJpeDth KHIsZSk7dmFyIG49dGhpcy5jb21wdXRlZENlbnRlcixpPXRoaXMuY29tcHV0ZWRFeWUsbz10 aGlzLmNvbXB1dGVkVXAscz1NYXRoLmV4cCh0aGlzLmNvbXB1dGVkUmFkaXVzWzBdKTtpWzBd PW5bMF0rcypyWzJdLGlbMV09blsxXStzKnJbNl0saVsyXT1uWzJdK3MqclsxMF0sb1swXT1y WzFdLG9bMV09cls1XSxvWzJdPXJbOV07Zm9yKHZhciBsPTA7bDwzOysrbCl7Zm9yKHZhciBj PTAsZj0wO2Y8MzsrK2YpYys9cltsKzQqZl0qaVtmXTtyWzEyK2xdPS1jfX0saC5nZXRNYXRy aXg9ZnVuY3Rpb24odCxlKXt0aGlzLnJlY2FsY01hdHJpeCh0KTt2YXIgcj10aGlzLmNvbXB1 dGVkTWF0cml4O2lmKGUpe2Zvcih2YXIgbj0wO248MTY7KytuKWVbbl09cltuXTtyZXR1cm4g ZX1yZXR1cm4gcn0saC5pZGxlPWZ1bmN0aW9uKHQpe3RoaXMuY2VudGVyLmlkbGUodCksdGhp cy5yYWRpdXMuaWRsZSh0KSx0aGlzLnJvdGF0aW9uLmlkbGUodCl9LGguZmx1c2g9ZnVuY3Rp b24odCl7dGhpcy5jZW50ZXIuZmx1c2godCksdGhpcy5yYWRpdXMuZmx1c2godCksdGhpcy5y b3RhdGlvbi5mbHVzaCh0KX0saC5wYW49ZnVuY3Rpb24odCxlLHIsbil7ZT1lfHwwLHI9cnx8 MCxuPW58fDAsdGhpcy5yZWNhbGNNYXRyaXgodCk7dmFyIGk9dGhpcy5jb21wdXRlZE1hdHJp eCxhPWlbMV0sbz1pWzVdLHM9aVs5XSxjPWwoYSxvLHMpO2EvPWMsby89YyxzLz1jO3ZhciB1 PWlbMF0sZj1pWzRdLGg9aVs4XSxwPXUqYStmKm8raCpzLGQ9bCh1LT1hKnAsZi09bypwLGgt PXMqcCk7dS89ZCxmLz1kLGgvPWQ7dmFyIG09aVsyXSxnPWlbNl0sdj1pWzEwXSx5PW0qYStn Km8rdipzLHg9bSp1K2cqZit2KmgsYj1sKG0tPXkqYSt4KnUsZy09eSpvK3gqZix2LT15KnMr eCpoKTttLz1iLGcvPWIsdi89Yjt2YXIgXz11KmUrYSpyLHc9ZiplK28qcixUPWgqZStzKnI7 dGhpcy5jZW50ZXIubW92ZSh0LF8sdyxUKTt2YXIgaz1NYXRoLmV4cCh0aGlzLmNvbXB1dGVk UmFkaXVzWzBdKTtrPU1hdGgubWF4KDFlLTQsaytuKSx0aGlzLnJhZGl1cy5zZXQodCxNYXRo LmxvZyhrKSl9LGgucm90YXRlPWZ1bmN0aW9uKHQsZSxyLG4pe3RoaXMucmVjYWxjTWF0cml4 KHQpLGU9ZXx8MCxyPXJ8fDA7dmFyIGk9dGhpcy5jb21wdXRlZE1hdHJpeCxhPWlbMF0sbz1p WzRdLHM9aVs4XSx1PWlbMV0sZj1pWzVdLGg9aVs5XSxwPWlbMl0sZD1pWzZdLG09aVsxMF0s Zz1lKmErcip1LHY9ZSpvK3IqZix5PWUqcytyKmgseD0tKGQqeS1tKnYpLGI9LShtKmctcCp5 KSxfPS0ocCp2LWQqZyksdz1NYXRoLnNxcnQoTWF0aC5tYXgoMCwxLU1hdGgucG93KHgsMikt TWF0aC5wb3coYiwyKS1NYXRoLnBvdyhfLDIpKSksVD1jKHgsYixfLHcpO1Q+MWUtNj8oeC89 VCxiLz1ULF8vPVQsdy89VCk6KHg9Yj1fPTAsdz0xKTt2YXIgaz10aGlzLmNvbXB1dGVkUm90 YXRpb24sQT1rWzBdLE09a1sxXSxTPWtbMl0sRT1rWzNdLEw9QSp3K0UqeCtNKl8tUypiLEM9 TSp3K0UqYitTKngtQSpfLFA9Uyp3K0UqXytBKmItTSp4LEk9RSp3LUEqeC1NKmItUypfO2lm KG4pe3g9cCxiPWQsXz1tO3ZhciBPPU1hdGguc2luKG4pL2woeCxiLF8pO3gqPU8sYio9Tyxf Kj1PLEk9SSoodz1NYXRoLmNvcyhlKSktKEw9TCp3K0kqeCtDKl8tUCpiKSp4LShDPUMqdytJ KmIrUCp4LUwqXykqYi0oUD1QKncrSSpfK0wqYi1DKngpKl99dmFyIHo9YyhMLEMsUCxJKTt6 PjFlLTY/KEwvPXosQy89eixQLz16LEkvPXopOihMPUM9UD0wLEk9MSksdGhpcy5yb3RhdGlv bi5zZXQodCxMLEMsUCxJKX0saC5sb29rQXQ9ZnVuY3Rpb24odCxlLHIsbil7dGhpcy5yZWNh bGNNYXRyaXgodCkscj1yfHx0aGlzLmNvbXB1dGVkQ2VudGVyLGU9ZXx8dGhpcy5jb21wdXRl ZEV5ZSxuPW58fHRoaXMuY29tcHV0ZWRVcDt2YXIgYT10aGlzLmNvbXB1dGVkTWF0cml4O2ko YSxlLHIsbik7dmFyIG89dGhpcy5jb21wdXRlZFJvdGF0aW9uO3MobyxhWzBdLGFbMV0sYVsy XSxhWzRdLGFbNV0sYVs2XSxhWzhdLGFbOV0sYVsxMF0pLHUobyxvKSx0aGlzLnJvdGF0aW9u LnNldCh0LG9bMF0sb1sxXSxvWzJdLG9bM10pO2Zvcih2YXIgbD0wLGM9MDtjPDM7KytjKWwr PU1hdGgucG93KHJbY10tZVtjXSwyKTt0aGlzLnJhZGl1cy5zZXQodCwuNSpNYXRoLmxvZyhN YXRoLm1heChsLDFlLTYpKSksdGhpcy5jZW50ZXIuc2V0KHQsclswXSxyWzFdLHJbMl0pfSxo LnRyYW5zbGF0ZT1mdW5jdGlvbih0LGUscixuKXt0aGlzLmNlbnRlci5tb3ZlKHQsZXx8MCxy fHwwLG58fDApfSxoLnNldE1hdHJpeD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuY29tcHV0 ZWRSb3RhdGlvbjtzKHIsZVswXSxlWzFdLGVbMl0sZVs0XSxlWzVdLGVbNl0sZVs4XSxlWzld LGVbMTBdKSx1KHIsciksdGhpcy5yb3RhdGlvbi5zZXQodCxyWzBdLHJbMV0sclsyXSxyWzNd KTt2YXIgbj10aGlzLmNvbXB1dGVkTWF0cml4O28obixlKTt2YXIgaT1uWzE1XTtpZihNYXRo LmFicyhpKT4xZS02KXt2YXIgYT1uWzEyXS9pLGw9blsxM10vaSxjPW5bMTRdL2k7dGhpcy5y ZWNhbGNNYXRyaXgodCk7dmFyIGY9TWF0aC5leHAodGhpcy5jb21wdXRlZFJhZGl1c1swXSk7 dGhpcy5jZW50ZXIuc2V0KHQsYS1uWzJdKmYsbC1uWzZdKmYsYy1uWzEwXSpmKSx0aGlzLnJh ZGl1cy5pZGxlKHQpfWVsc2UgdGhpcy5jZW50ZXIuaWRsZSh0KSx0aGlzLnJhZGl1cy5pZGxl KHQpfSxoLnNldERpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7ZT4wJiZ0aGlzLnJhZGl1cy5zZXQo dCxNYXRoLmxvZyhlKSl9LGguc2V0RGlzdGFuY2VMaW1pdHM9ZnVuY3Rpb24odCxlKXt0PXQ+ MD9NYXRoLmxvZyh0KTotMS8wLGU9ZT4wP01hdGgubG9nKGUpOjEvMCxlPU1hdGgubWF4KGUs dCksdGhpcy5yYWRpdXMuYm91bmRzWzBdWzBdPXQsdGhpcy5yYWRpdXMuYm91bmRzWzFdWzBd PWV9LGguZ2V0RGlzdGFuY2VMaW1pdHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5yYWRpdXMu Ym91bmRzO3JldHVybiB0Pyh0WzBdPU1hdGguZXhwKGVbMF1bMF0pLHRbMV09TWF0aC5leHAo ZVsxXVswXSksdCk6W01hdGguZXhwKGVbMF1bMF0pLE1hdGguZXhwKGVbMV1bMF0pXX0saC50 b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWNhbGNNYXRyaXgodGhpcy5sYXN0VCgp KSx7Y2VudGVyOnRoaXMuY29tcHV0ZWRDZW50ZXIuc2xpY2UoKSxyb3RhdGlvbjp0aGlzLmNv bXB1dGVkUm90YXRpb24uc2xpY2UoKSxkaXN0YW5jZTpNYXRoLmxvZyh0aGlzLmNvbXB1dGVk UmFkaXVzWzBdKSx6b29tTWluOnRoaXMucmFkaXVzLmJvdW5kc1swXVswXSx6b29tTWF4OnRo aXMucmFkaXVzLmJvdW5kc1sxXVswXX19LGguZnJvbUpTT049ZnVuY3Rpb24odCl7dmFyIGU9 dGhpcy5sYXN0VCgpLHI9dC5jZW50ZXI7ciYmdGhpcy5jZW50ZXIuc2V0KGUsclswXSxyWzFd LHJbMl0pO3ZhciBuPXQucm90YXRpb247biYmdGhpcy5yb3RhdGlvbi5zZXQoZSxuWzBdLG5b MV0sblsyXSxuWzNdKTt2YXIgaT10LmRpc3RhbmNlO2kmJmk+MCYmdGhpcy5yYWRpdXMuc2V0 KGUsTWF0aC5sb2coaSkpLHRoaXMuc2V0RGlzdGFuY2VMaW1pdHModC56b29tTWluLHQuem9v bU1heCl9fSx7Ii4vbGliL3F1YXRGcm9tRnJhbWUiOjI2MiwiZmlsdGVyZWQtdmVjdG9yIjo2 OCwiZ2wtbWF0NC9mcm9tUXVhdCI6OTUsImdsLW1hdDQvaW52ZXJ0Ijo5OCwiZ2wtbWF0NC9s b29rQXQiOjk5fV0sMjY0OltmdW5jdGlvbih0LGUscil7Ci8qIQogKiBwYWQtbGVmdCA8aHR0 cHM6Ly9naXRodWIuY29tL2pvbnNjaGxpbmtlcnQvcGFkLWxlZnQ+CiAqCiAqIENvcHlyaWdo dCAoYykgMjAxNC0yMDE1LCBKb24gU2NobGlua2VydC4KICogTGljZW5zZWQgdW5kZXIgdGhl IE1JVCBsaWNlbnNlLgogKi8KInVzZSBzdHJpY3QiO3ZhciBuPXQoInJlcGVhdC1zdHJpbmci KTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBuKHI9dm9pZCAwIT09cj9yKyIi OiIgIixlKSt0fX0seyJyZXBlYXQtc3RyaW5nIjoyNzd9XSwyNjU6W2Z1bmN0aW9uKHQsZSxy KXtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtlfHwoZT1bMCwiIl0pLHQ9U3RyaW5nKHQpO3Zh ciByPXBhcnNlRmxvYXQodCwxMCk7cmV0dXJuIGVbMF09cixlWzFdPXQubWF0Y2goL1tcZC5c LVwrXSpccyooLiopLylbMV18fCIiLGV9fSx7fV0sMjY2OltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wfGUubGVuZ3Ro LGk9dC5sZW5ndGgsYT1bbmV3IEFycmF5KHIpLG5ldyBBcnJheShyKV0sbz0wO288cjsrK28p YVswXVtvXT1bXSxhWzFdW29dPVtdO2ZvcihvPTA7bzxpOysrbyl7dmFyIHM9dFtvXTthWzBd W3NbMF1dLnB1c2gocyksYVsxXVtzWzFdXS5wdXNoKHMpfXZhciBsPVtdO2ZvcihvPTA7bzxy OysrbylhWzBdW29dLmxlbmd0aCthWzFdW29dLmxlbmd0aD09PTAmJmwucHVzaChbb10pO2Z1 bmN0aW9uIGModCxlKXt2YXIgcj1hW2VdW3RbZV1dO3Iuc3BsaWNlKHIuaW5kZXhPZih0KSwx KX1mdW5jdGlvbiB1KHQscixpKXtmb3IodmFyIG8scyxsLHU9MDt1PDI7Kyt1KWlmKGFbdV1b cl0ubGVuZ3RoPjApe289YVt1XVtyXVswXSxsPXU7YnJlYWt9cz1vWzFebF07Zm9yKHZhciBm PTA7ZjwyOysrZilmb3IodmFyIGg9YVtmXVtyXSxwPTA7cDxoLmxlbmd0aDsrK3Ape3ZhciBk PWhbcF0sbT1kWzFeZl07bihlW3RdLGVbcl0sZVtzXSxlW21dKT4wJiYobz1kLHM9bSxsPWYp fXJldHVybiBpfHxvJiZjKG8sbCksc31mdW5jdGlvbiBmKHQscil7dmFyIGk9YVtyXVt0XVsw XSxvPVt0XTtjKGkscik7Zm9yKHZhciBzPWlbMV5yXTs7KXtmb3IoO3MhPT10OylvLnB1c2go cykscz11KG9bby5sZW5ndGgtMl0scywhMSk7aWYoYVswXVt0XS5sZW5ndGgrYVsxXVt0XS5s ZW5ndGg9PT0wKWJyZWFrO3ZhciBsPW9bby5sZW5ndGgtMV0sZj10LGg9b1sxXSxwPXUobCxm LCEwKTtpZihuKGVbbF0sZVtmXSxlW2hdLGVbcF0pPDApYnJlYWs7by5wdXNoKHQpLHM9dShs LGYpfXJldHVybiBvfWZ1bmN0aW9uIGgodCxlKXtyZXR1cm4gZVsxXT09PWVbZS5sZW5ndGgt MV19Zm9yKG89MDtvPHI7KytvKWZvcih2YXIgcD0wO3A8MjsrK3Ape2Zvcih2YXIgZD1bXTth W3BdW29dLmxlbmd0aD4wOyl7YVswXVtvXS5sZW5ndGg7dmFyIG09ZihvLHApO2goMCxtKT9k LnB1c2guYXBwbHkoZCxtKTooZC5sZW5ndGg+MCYmbC5wdXNoKGQpLGQ9bSl9ZC5sZW5ndGg+ MCYmbC5wdXNoKGQpfXJldHVybiBsfTt2YXIgbj10KCJjb21wYXJlLWFuZ2xlIil9LHsiY29t cGFyZS1hbmdsZSI6NTR9XSwyNjc6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5l eHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPW4odCxlLmxlbmd0aCksaT1uZXcgQXJy YXkoZS5sZW5ndGgpLGE9bmV3IEFycmF5KGUubGVuZ3RoKSxvPVtdLHM9MDtzPGUubGVuZ3Ro Oysrcyl7dmFyIGw9cltzXS5sZW5ndGg7YVtzXT1sLGlbc109ITAsbDw9MSYmby5wdXNoKHMp fWZvcig7by5sZW5ndGg+MDspe3ZhciBjPW8ucG9wKCk7aVtjXT0hMTt2YXIgdT1yW2NdO2Zv cihzPTA7czx1Lmxlbmd0aDsrK3Mpe3ZhciBmPXVbc107MD09LS1hW2ZdJiZvLnB1c2goZil9 fXZhciBoPW5ldyBBcnJheShlLmxlbmd0aCkscD1bXTtmb3Iocz0wO3M8ZS5sZW5ndGg7Kytz KWlmKGlbc10pe2M9cC5sZW5ndGg7aFtzXT1jLHAucHVzaChlW3NdKX1lbHNlIGhbc109LTE7 dmFyIGQ9W107Zm9yKHM9MDtzPHQubGVuZ3RoOysrcyl7dmFyIG09dFtzXTtpW21bMF1dJiZp W21bMV1dJiZkLnB1c2goW2hbbVswXV0saFttWzFdXV0pfXJldHVybltkLHBdfTt2YXIgbj10 KCJlZGdlcy10by1hZGphY2VuY3ktbGlzdCIpfSx7ImVkZ2VzLXRvLWFkamFjZW5jeS1saXN0 Ijo2Nn1dLDI2ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlKXt2YXIgcj1jKHQsZSk7dD1yWzBdO2Zvcih2YXIgZj0oZT1yWzFdKS5sZW5n dGgsaD0odC5sZW5ndGgsbih0LGUubGVuZ3RoKSkscD0wO3A8ZjsrK3ApaWYoaFtwXS5sZW5n dGglMj09MSl0aHJvdyBuZXcgRXJyb3IoInBsYW5hci1ncmFwaC10by1wb2x5bGluZTogZ3Jh cGggbXVzdCBiZSBtYW5pZm9sZCIpO3ZhciBkPWkodCxlKTt2YXIgbT0oZD1kLmZpbHRlcigo ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQubGVuZ3RoLG49WzBdLGk9MDtpPHI7KytpKXt2YXIg YT1lW3RbaV1dLGw9ZVt0WyhpKzEpJXJdXSxjPW8oLWFbMF0sYVsxXSksdT1vKC1hWzBdLGxb MV0pLGY9byhsWzBdLGFbMV0pLGg9byhsWzBdLGxbMV0pO249cyhuLHMocyhjLHUpLHMoZixo KSkpfXJldHVybiBuW24ubGVuZ3RoLTFdPjB9KSkpLmxlbmd0aCxnPW5ldyBBcnJheShtKSx2 PW5ldyBBcnJheShtKTtmb3IocD0wO3A8bTsrK3Ape2dbcF09cDt2YXIgeT1uZXcgQXJyYXko bSkseD1kW3BdLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19KSksYj1hKFt4XSksXz0w O3Q6Zm9yKHZhciB3PTA7dzxtOysrdylpZih5W3ddPTAscCE9PXcpe2Zvcih2YXIgVD0oSD1k W3ddKS5sZW5ndGgsaz0wO2s8VDsrK2spe3ZhciBBPWIoZVtIW2tdXSk7aWYoMCE9PUEpe0E8 MCYmKHlbd109MSxfKz0xKTtjb250aW51ZSB0fX15W3ddPTEsXys9MX12W3BdPVtfLHAseV19 di5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBlWzBdLXRbMF19KSk7Zm9yKHA9MDtwPG07 KytwKXt2YXIgTT0oeT12W3BdKVsxXSxTPXlbMl07Zm9yKHc9MDt3PG07Kyt3KVNbd10mJihn W3ddPU0pfXZhciBFPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgQXJyYXkodCkscj0wO3I8 dDsrK3IpZVtyXT1bXTtyZXR1cm4gZX0obSk7Zm9yKHA9MDtwPG07KytwKUVbcF0ucHVzaChn W3BdKSxFW2dbcF1dLnB1c2gocCk7dmFyIEw9e30sQz11KGYsITEpO2ZvcihwPTA7cDxtOysr cClmb3IoVD0oSD1kW3BdKS5sZW5ndGgsdz0wO3c8VDsrK3cpe3ZhciBQPUhbd10sST1IWyh3 KzEpJVRdLE89TWF0aC5taW4oUCxJKSsiOiIrTWF0aC5tYXgoUCxJKTtpZihPIGluIEwpe3Zh ciB6PUxbT107RVt6XS5wdXNoKHApLEVbcF0ucHVzaCh6KSxDW1BdPUNbSV09ITB9ZWxzZSBM W09dPXB9ZnVuY3Rpb24gRCh0KXtmb3IodmFyIGU9dC5sZW5ndGgscj0wO3I8ZTsrK3IpaWYo IUNbdFtyXV0pcmV0dXJuITE7cmV0dXJuITB9dmFyIFI9W10sRj11KG0sLTEpO2ZvcihwPTA7 cDxtOysrcClnW3BdIT09cHx8RChkW3BdKT9GW3BdPS0xOihSLnB1c2gocCksRltwXT0wKTty PVtdO2Zvcig7Ui5sZW5ndGg+MDspe3ZhciBCPVIucG9wKCksTj1FW0JdO2woTiwoZnVuY3Rp b24odCxlKXtyZXR1cm4gdC1lfSkpO3ZhciBqLFU9Ti5sZW5ndGgsVj1GW0JdO2lmKDA9PT1W KXt2YXIgSD1kW0JdO2o9W0hdfWZvcihwPTA7cDxVOysrcCl7dmFyIHE9TltwXTtpZighKEZb cV0+PTApKWlmKEZbcV09MV5WLFIucHVzaChxKSwwPT09VilEKEg9ZFtxXSl8fChILnJldmVy c2UoKSxqLnB1c2goSCkpfTA9PT1WJiZyLnB1c2goail9cmV0dXJuIHJ9O3ZhciBuPXQoImVk Z2VzLXRvLWFkamFjZW5jeS1saXN0IiksaT10KCJwbGFuYXItZHVhbCIpLGE9dCgicG9pbnQt aW4tYmlnLXBvbHlnb24iKSxvPXQoInR3by1wcm9kdWN0Iikscz10KCJyb2J1c3Qtc3VtIiks bD10KCJ1bmlxIiksYz10KCIuL2xpYi90cmltLWxlYXZlcyIpO2Z1bmN0aW9uIHUodCxlKXtm b3IodmFyIHI9bmV3IEFycmF5KHQpLG49MDtuPHQ7KytuKXJbbl09ZTtyZXR1cm4gcn19LHsi Li9saWIvdHJpbS1sZWF2ZXMiOjI2NywiZWRnZXMtdG8tYWRqYWNlbmN5LWxpc3QiOjY2LCJw bGFuYXItZHVhbCI6MjY2LCJwb2ludC1pbi1iaWctcG9seWdvbiI6MjY5LCJyb2J1c3Qtc3Vt IjoyODksInR3by1wcm9kdWN0IjozMDYsdW5pcTozMTB9XSwyNjk6W2Z1bmN0aW9uKHQsZSxy KXtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoLHI9W10sYT1bXSxz PTA7czxlOysrcylmb3IodmFyIHU9dFtzXSxmPXUubGVuZ3RoLGg9Zi0xLHA9MDtwPGY7aD1w Kyspe3ZhciBkPXVbaF0sbT11W3BdO2RbMF09PT1tWzBdP2EucHVzaChbZCxtXSk6ci5wdXNo KFtkLG1dKX1pZigwPT09ci5sZW5ndGgpcmV0dXJuIDA9PT1hLmxlbmd0aD9jOihnPWwoYSks ZnVuY3Rpb24odCl7cmV0dXJuIGcodFswXSx0WzFdKT8wOjF9KTt2YXIgZzt2YXIgdj1pKHIp LHk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIGk9by5sZShlLHJbMF0p O2lmKGk8MClyZXR1cm4gMTt2YXIgYT10W2ldO2lmKCFhKXtpZighKGk+MCYmZVtpXT09PXJb MF0pKXJldHVybiAxO2E9dFtpLTFdfWZvcih2YXIgcz0xO2E7KXt2YXIgbD1hLmtleSxjPW4o cixsWzBdLGxbMV0pO2lmKGxbMF1bMF08bFsxXVswXSlpZihjPDApYT1hLmxlZnQ7ZWxzZXtp ZighKGM+MCkpcmV0dXJuIDA7cz0tMSxhPWEucmlnaHR9ZWxzZSBpZihjPjApYT1hLmxlZnQ7 ZWxzZXtpZighKGM8MCkpcmV0dXJuIDA7cz0xLGE9YS5yaWdodH19cmV0dXJuIHN9fSh2LnNs YWJzLHYuY29vcmRpbmF0ZXMpO3JldHVybiAwPT09YS5sZW5ndGg/eTpmdW5jdGlvbih0LGUp e3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gdChyWzBdLHJbMV0pPzA6ZShyKX19KGwoYSks eSl9O3ZhciBuPXQoInJvYnVzdC1vcmllbnRhdGlvbiIpWzNdLGk9dCgic2xhYi1kZWNvbXBv c2l0aW9uIiksYT10KCJpbnRlcnZhbC10cmVlLTFkIiksbz10KCJiaW5hcnktc2VhcmNoLWJv dW5kcyIpO2Z1bmN0aW9uIHMoKXtyZXR1cm4hMH1mdW5jdGlvbiBsKHQpe2Zvcih2YXIgZT17 fSxyPTA7cjx0Lmxlbmd0aDsrK3Ipe3ZhciBuPXRbcl0saT1uWzBdWzBdLG89blswXVsxXSxs PW5bMV1bMV0sYz1bTWF0aC5taW4obyxsKSxNYXRoLm1heChvLGwpXTtpIGluIGU/ZVtpXS5w dXNoKGMpOmVbaV09W2NdfXZhciB1PXt9LGY9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGYu bGVuZ3RoOysrcil7dmFyIGg9ZVtmW3JdXTt1W2Zbcl1dPWEoaCl9cmV0dXJuIGZ1bmN0aW9u KHQpe3JldHVybiBmdW5jdGlvbihlLHIpe3ZhciBuPXRbZV07cmV0dXJuISFuJiYhIW4ucXVl cnlQb2ludChyLHMpfX0odSl9ZnVuY3Rpb24gYyh0KXtyZXR1cm4gMX19LHsiYmluYXJ5LXNl YXJjaC1ib3VuZHMiOjMxLCJpbnRlcnZhbC10cmVlLTFkIjoyMzQsInJvYnVzdC1vcmllbnRh dGlvbiI6Mjg0LCJzbGFiLWRlY29tcG9zaXRpb24iOjI5OX1dLDI3MDpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1uZXcgRmxvYXQ2NEFycmF5KDQpLGk9bmV3IEZsb2F0 NjRBcnJheSg0KSxhPW5ldyBGbG9hdDY0QXJyYXkoNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKHQs ZSxyLG8scyl7bi5sZW5ndGg8by5sZW5ndGgmJihuPW5ldyBGbG9hdDY0QXJyYXkoby5sZW5n dGgpLGk9bmV3IEZsb2F0NjRBcnJheShvLmxlbmd0aCksYT1uZXcgRmxvYXQ2NEFycmF5KG8u bGVuZ3RoKSk7Zm9yKHZhciBsPTA7bDxvLmxlbmd0aDsrK2wpbltsXT10W2xdLW9bbF0saVts XT1lW2xdLXRbbF0sYVtsXT1yW2xdLXRbbF07dmFyIGM9MCx1PTAsZj0wLGg9MCxwPTAsZD0w O2ZvcihsPTA7bDxvLmxlbmd0aDsrK2wpe3ZhciBtPWlbbF0sZz1hW2xdLHY9bltsXTtjKz1t Km0sdSs9bSpnLGYrPWcqZyxoKz12Km0scCs9dipnLGQrPXYqdn12YXIgeSx4LGIsXyx3LFQ9 TWF0aC5hYnMoYypmLXUqdSksaz11KnAtZipoLEE9dSpoLWMqcDtpZihrK0E8PVQpaWYoazww KUE8MCYmaDwwPyhBPTAsLWg+PWM/KGs9MSx5PWMrMipoK2QpOnk9aCooaz0taC9jKStkKToo az0wLHA+PTA/KEE9MCx5PWQpOi1wPj1mPyhBPTEseT1mKzIqcCtkKTp5PXAqKEE9LXAvZikr ZCk7ZWxzZSBpZihBPDApQT0wLGg+PTA/KGs9MCx5PWQpOi1oPj1jPyhrPTEseT1jKzIqaCtk KTp5PWgqKGs9LWgvYykrZDtlbHNle3ZhciBNPTEvVDt5PShrKj1NKSooYyprK3UqKEEqPU0p KzIqaCkrQSoodSprK2YqQSsyKnApK2R9ZWxzZSBrPDA/KGI9ZitwKT4oeD11K2gpPyhfPWIt eCk+PSh3PWMtMip1K2YpPyhrPTEsQT0wLHk9YysyKmgrZCk6eT0oaz1fL3cpKihjKmsrdSoo QT0xLWspKzIqaCkrQSoodSprK2YqQSsyKnApK2Q6KGs9MCxiPD0wPyhBPTEseT1mKzIqcCtk KTpwPj0wPyhBPTAseT1kKTp5PXAqKEE9LXAvZikrZCk6QTwwPyhiPWMraCk+KHg9dStwKT8o Xz1iLXgpPj0odz1jLTIqdStmKT8oQT0xLGs9MCx5PWYrMipwK2QpOnk9KGs9MS0oQT1fL3cp KSooYyprK3UqQSsyKmgpK0EqKHUqaytmKkErMipwKStkOihBPTAsYjw9MD8oaz0xLHk9Yysy KmgrZCk6aD49MD8oaz0wLHk9ZCk6eT1oKihrPS1oL2MpK2QpOihfPWYrcC11LWgpPD0wPyhr PTAsQT0xLHk9ZisyKnArZCk6Xz49KHc9Yy0yKnUrZik/KGs9MSxBPTAseT1jKzIqaCtkKTp5 PShrPV8vdykqKGMqayt1KihBPTEtaykrMipoKStBKih1KmsrZipBKzIqcCkrZDt2YXIgUz0x LWstQTtmb3IobD0wO2w8by5sZW5ndGg7KytsKXNbbF09Uyp0W2xdK2sqZVtsXStBKnJbbF07 cmV0dXJuIHk8MD8wOnl9fSx7fV0sMjcxOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXQo ImdsLXF1YXQvc2xlcnAiKX0seyJnbC1xdWF0L3NsZXJwIjoxMjR9XSwyNzI6W2Z1bmN0aW9u KHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiYmlnLXJhdC9hZGQiKTtlLmV4cG9ydHM9 ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGgsaT1uZXcgQXJyYXkociksYT0wO2E8 cjsrK2EpaVthXT1uKHRbYV0sZVthXSk7cmV0dXJuIGl9fSx7ImJpZy1yYXQvYWRkIjoxNX1d LDI3MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24o dCl7Zm9yKHZhciBlPW5ldyBBcnJheSh0Lmxlbmd0aCkscj0wO3I8dC5sZW5ndGg7KytyKWVb cl09bih0W3JdKTtyZXR1cm4gZX07dmFyIG49dCgiYmlnLXJhdCIpfSx7ImJpZy1yYXQiOjE4 fV0sMjc0OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImJpZy1yYXQi KSxpPXQoImJpZy1yYXQvbXVsIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBy PW4oZSksYT10Lmxlbmd0aCxvPW5ldyBBcnJheShhKSxzPTA7czxhOysrcylvW3NdPWkodFtz XSxyKTtyZXR1cm4gb319LHsiYmlnLXJhdCI6MTgsImJpZy1yYXQvbXVsIjoyN31dLDI3NTpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJiaWctcmF0L3N1YiIpO2Uu ZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10Lmxlbmd0aCxpPW5ldyBBcnJheShy KSxhPTA7YTxyOysrYSlpW2FdPW4odFthXSxlW2FdKTtyZXR1cm4gaX19LHsiYmlnLXJhdC9z dWIiOjI5fV0sMjc2OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoImNv bXBhcmUtY2VsbCIpLGk9dCgiY29tcGFyZS1vcmllbnRlZC1jZWxsIiksYT10KCJjZWxsLW9y aWVudGF0aW9uIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3Quc29ydChpKTtmb3IodmFyIGU9 dC5sZW5ndGgscj0wLG89MDtvPGU7KytvKXt2YXIgcz10W29dLGw9YShzKTtpZigwIT09bCl7 aWYocj4wKXt2YXIgYz10W3ItMV07aWYoMD09PW4ocyxjKSYmYShjKSE9PWwpe3ItPTE7Y29u dGludWV9fXRbcisrXT1zfX1yZXR1cm4gdC5sZW5ndGg9cix0fX0seyJjZWxsLW9yaWVudGF0 aW9uIjo0NywiY29tcGFyZS1jZWxsIjo1NiwiY29tcGFyZS1vcmllbnRlZC1jZWxsIjo1N31d LDI3NzpbZnVuY3Rpb24odCxlLHIpewovKiEKICogcmVwZWF0LXN0cmluZyA8aHR0cHM6Ly9n aXRodWIuY29tL2pvbnNjaGxpbmtlcnQvcmVwZWF0LXN0cmluZz4KICoKICogQ29weXJpZ2h0 IChjKSAyMDE0LTIwMTUsIEpvbiBTY2hsaW5rZXJ0LgogKiBMaWNlbnNlZCB1bmRlciB0aGUg TUlUIExpY2Vuc2UuCiAqLwoidXNlIHN0cmljdCI7dmFyIG4saT0iIjtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlKXtpZigic3RyaW5nIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigi ZXhwZWN0ZWQgYSBzdHJpbmciKTtpZigxPT09ZSlyZXR1cm4gdDtpZigyPT09ZSlyZXR1cm4g dCt0O3ZhciByPXQubGVuZ3RoKmU7aWYobiE9PXR8fHZvaWQgMD09PW4pbj10LGk9IiI7ZWxz ZSBpZihpLmxlbmd0aD49cilyZXR1cm4gaS5zdWJzdHIoMCxyKTtmb3IoO3I+aS5sZW5ndGgm JmU+MTspMSZlJiYoaSs9dCksZT4+PTEsdCs9dDtyZXR1cm4gaT0oaSs9dCkuc3Vic3RyKDAs cil9fSx7fV0sMjc4OltmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKHQpeyhmdW5jdGlvbigp e2UuZXhwb3J0cz10LnBlcmZvcm1hbmNlJiZ0LnBlcmZvcm1hbmNlLm5vdz9mdW5jdGlvbigp e3JldHVybiBwZXJmb3JtYW5jZS5ub3coKX06RGF0ZS5ub3d8fGZ1bmN0aW9uKCl7cmV0dXJu K25ldyBEYXRlfX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMsdm9pZCAwIT09bj9uOiJ1bmRl ZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dp bmRvdzp7fSl9LHt9XSwyNzk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBv cnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxyPXRbdC5sZW5ndGgtMV0sbj1l LGk9ZS0yO2k+PTA7LS1pKXt2YXIgYT1yLG89dFtpXTsobD1vLSgocj1hK28pLWEpKSYmKHRb LS1uXT1yLHI9bCl9dmFyIHM9MDtmb3IoaT1uO2k8ZTsrK2kpe3ZhciBsO2E9dFtpXTsobD0o bz1yKS0oKHI9YStvKS1hKSkmJih0W3MrK109bCl9cmV0dXJuIHRbcysrXT1yLHQubGVuZ3Ro PXMsdH19LHt9XSwyODA6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgi dHdvLXByb2R1Y3QiKSxpPXQoInJvYnVzdC1zdW0iKSxhPXQoInJvYnVzdC1zY2FsZSIpLG89 dCgicm9idXN0LWNvbXByZXNzIik7ZnVuY3Rpb24gcyh0LGUscixuKXtyZXR1cm4gZnVuY3Rp b24oZSl7cmV0dXJuIG4odChyKGVbMF1bMF0sZVsxXVsxXSkscigtZVswXVsxXSxlWzFdWzBd KSkpfX1mdW5jdGlvbiBsKHQsZSxyLG4pe3JldHVybiBmdW5jdGlvbihpKXtyZXR1cm4gbih0 KGUodChyKGlbMV1bMV0saVsyXVsyXSkscigtaVsxXVsyXSxpWzJdWzFdKSksaVswXVswXSks dChlKHQocihpWzFdWzBdLGlbMl1bMl0pLHIoLWlbMV1bMl0saVsyXVswXSkpLC1pWzBdWzFd KSxlKHQocihpWzFdWzBdLGlbMl1bMV0pLHIoLWlbMV1bMV0saVsyXVswXSkpLGlbMF1bMl0p KSkpfX1mdW5jdGlvbiBjKHQsZSxyLG4pe3JldHVybiBmdW5jdGlvbihpKXtyZXR1cm4gbih0 KHQoZSh0KGUodChyKGlbMl1bMl0saVszXVszXSkscigtaVsyXVszXSxpWzNdWzJdKSksaVsx XVsxXSksdChlKHQocihpWzJdWzFdLGlbM11bM10pLHIoLWlbMl1bM10saVszXVsxXSkpLC1p WzFdWzJdKSxlKHQocihpWzJdWzFdLGlbM11bMl0pLHIoLWlbMl1bMl0saVszXVsxXSkpLGlb MV1bM10pKSksaVswXVswXSksZSh0KGUodChyKGlbMl1bMl0saVszXVszXSkscigtaVsyXVsz XSxpWzNdWzJdKSksaVsxXVswXSksdChlKHQocihpWzJdWzBdLGlbM11bM10pLHIoLWlbMl1b M10saVszXVswXSkpLC1pWzFdWzJdKSxlKHQocihpWzJdWzBdLGlbM11bMl0pLHIoLWlbMl1b Ml0saVszXVswXSkpLGlbMV1bM10pKSksLWlbMF1bMV0pKSx0KGUodChlKHQocihpWzJdWzFd LGlbM11bM10pLHIoLWlbMl1bM10saVszXVsxXSkpLGlbMV1bMF0pLHQoZSh0KHIoaVsyXVsw XSxpWzNdWzNdKSxyKC1pWzJdWzNdLGlbM11bMF0pKSwtaVsxXVsxXSksZSh0KHIoaVsyXVsw XSxpWzNdWzFdKSxyKC1pWzJdWzFdLGlbM11bMF0pKSxpWzFdWzNdKSkpLGlbMF1bMl0pLGUo dChlKHQocihpWzJdWzFdLGlbM11bMl0pLHIoLWlbMl1bMl0saVszXVsxXSkpLGlbMV1bMF0p LHQoZSh0KHIoaVsyXVswXSxpWzNdWzJdKSxyKC1pWzJdWzJdLGlbM11bMF0pKSwtaVsxXVsx XSksZSh0KHIoaVsyXVswXSxpWzNdWzFdKSxyKC1pWzJdWzFdLGlbM11bMF0pKSxpWzFdWzJd KSkpLC1pWzBdWzNdKSkpKX19ZnVuY3Rpb24gdSh0LGUscixuKXtyZXR1cm4gZnVuY3Rpb24o aSl7cmV0dXJuIG4odCh0KGUodCh0KGUodChlKHQocihpWzNdWzNdLGlbNF1bNF0pLHIoLWlb M11bNF0saVs0XVszXSkpLGlbMl1bMl0pLHQoZSh0KHIoaVszXVsyXSxpWzRdWzRdKSxyKC1p WzNdWzRdLGlbNF1bMl0pKSwtaVsyXVszXSksZSh0KHIoaVszXVsyXSxpWzRdWzNdKSxyKC1p WzNdWzNdLGlbNF1bMl0pKSxpWzJdWzRdKSkpLGlbMV1bMV0pLGUodChlKHQocihpWzNdWzNd LGlbNF1bNF0pLHIoLWlbM11bNF0saVs0XVszXSkpLGlbMl1bMV0pLHQoZSh0KHIoaVszXVsx XSxpWzRdWzRdKSxyKC1pWzNdWzRdLGlbNF1bMV0pKSwtaVsyXVszXSksZSh0KHIoaVszXVsx XSxpWzRdWzNdKSxyKC1pWzNdWzNdLGlbNF1bMV0pKSxpWzJdWzRdKSkpLC1pWzFdWzJdKSks dChlKHQoZSh0KHIoaVszXVsyXSxpWzRdWzRdKSxyKC1pWzNdWzRdLGlbNF1bMl0pKSxpWzJd WzFdKSx0KGUodChyKGlbM11bMV0saVs0XVs0XSkscigtaVszXVs0XSxpWzRdWzFdKSksLWlb Ml1bMl0pLGUodChyKGlbM11bMV0saVs0XVsyXSkscigtaVszXVsyXSxpWzRdWzFdKSksaVsy XVs0XSkpKSxpWzFdWzNdKSxlKHQoZSh0KHIoaVszXVsyXSxpWzRdWzNdKSxyKC1pWzNdWzNd LGlbNF1bMl0pKSxpWzJdWzFdKSx0KGUodChyKGlbM11bMV0saVs0XVszXSkscigtaVszXVsz XSxpWzRdWzFdKSksLWlbMl1bMl0pLGUodChyKGlbM11bMV0saVs0XVsyXSkscigtaVszXVsy XSxpWzRdWzFdKSksaVsyXVszXSkpKSwtaVsxXVs0XSkpKSxpWzBdWzBdKSxlKHQodChlKHQo ZSh0KHIoaVszXVszXSxpWzRdWzRdKSxyKC1pWzNdWzRdLGlbNF1bM10pKSxpWzJdWzJdKSx0 KGUodChyKGlbM11bMl0saVs0XVs0XSkscigtaVszXVs0XSxpWzRdWzJdKSksLWlbMl1bM10p LGUodChyKGlbM11bMl0saVs0XVszXSkscigtaVszXVszXSxpWzRdWzJdKSksaVsyXVs0XSkp KSxpWzFdWzBdKSxlKHQoZSh0KHIoaVszXVszXSxpWzRdWzRdKSxyKC1pWzNdWzRdLGlbNF1b M10pKSxpWzJdWzBdKSx0KGUodChyKGlbM11bMF0saVs0XVs0XSkscigtaVszXVs0XSxpWzRd WzBdKSksLWlbMl1bM10pLGUodChyKGlbM11bMF0saVs0XVszXSkscigtaVszXVszXSxpWzRd WzBdKSksaVsyXVs0XSkpKSwtaVsxXVsyXSkpLHQoZSh0KGUodChyKGlbM11bMl0saVs0XVs0 XSkscigtaVszXVs0XSxpWzRdWzJdKSksaVsyXVswXSksdChlKHQocihpWzNdWzBdLGlbNF1b NF0pLHIoLWlbM11bNF0saVs0XVswXSkpLC1pWzJdWzJdKSxlKHQocihpWzNdWzBdLGlbNF1b Ml0pLHIoLWlbM11bMl0saVs0XVswXSkpLGlbMl1bNF0pKSksaVsxXVszXSksZSh0KGUodChy KGlbM11bMl0saVs0XVszXSkscigtaVszXVszXSxpWzRdWzJdKSksaVsyXVswXSksdChlKHQo cihpWzNdWzBdLGlbNF1bM10pLHIoLWlbM11bM10saVs0XVswXSkpLC1pWzJdWzJdKSxlKHQo cihpWzNdWzBdLGlbNF1bMl0pLHIoLWlbM11bMl0saVs0XVswXSkpLGlbMl1bM10pKSksLWlb MV1bNF0pKSksLWlbMF1bMV0pKSx0KGUodCh0KGUodChlKHQocihpWzNdWzNdLGlbNF1bNF0p LHIoLWlbM11bNF0saVs0XVszXSkpLGlbMl1bMV0pLHQoZSh0KHIoaVszXVsxXSxpWzRdWzRd KSxyKC1pWzNdWzRdLGlbNF1bMV0pKSwtaVsyXVszXSksZSh0KHIoaVszXVsxXSxpWzRdWzNd KSxyKC1pWzNdWzNdLGlbNF1bMV0pKSxpWzJdWzRdKSkpLGlbMV1bMF0pLGUodChlKHQocihp WzNdWzNdLGlbNF1bNF0pLHIoLWlbM11bNF0saVs0XVszXSkpLGlbMl1bMF0pLHQoZSh0KHIo aVszXVswXSxpWzRdWzRdKSxyKC1pWzNdWzRdLGlbNF1bMF0pKSwtaVsyXVszXSksZSh0KHIo aVszXVswXSxpWzRdWzNdKSxyKC1pWzNdWzNdLGlbNF1bMF0pKSxpWzJdWzRdKSkpLC1pWzFd WzFdKSksdChlKHQoZSh0KHIoaVszXVsxXSxpWzRdWzRdKSxyKC1pWzNdWzRdLGlbNF1bMV0p KSxpWzJdWzBdKSx0KGUodChyKGlbM11bMF0saVs0XVs0XSkscigtaVszXVs0XSxpWzRdWzBd KSksLWlbMl1bMV0pLGUodChyKGlbM11bMF0saVs0XVsxXSkscigtaVszXVsxXSxpWzRdWzBd KSksaVsyXVs0XSkpKSxpWzFdWzNdKSxlKHQoZSh0KHIoaVszXVsxXSxpWzRdWzNdKSxyKC1p WzNdWzNdLGlbNF1bMV0pKSxpWzJdWzBdKSx0KGUodChyKGlbM11bMF0saVs0XVszXSkscigt aVszXVszXSxpWzRdWzBdKSksLWlbMl1bMV0pLGUodChyKGlbM11bMF0saVs0XVsxXSkscigt aVszXVsxXSxpWzRdWzBdKSksaVsyXVszXSkpKSwtaVsxXVs0XSkpKSxpWzBdWzJdKSx0KGUo dCh0KGUodChlKHQocihpWzNdWzJdLGlbNF1bNF0pLHIoLWlbM11bNF0saVs0XVsyXSkpLGlb Ml1bMV0pLHQoZSh0KHIoaVszXVsxXSxpWzRdWzRdKSxyKC1pWzNdWzRdLGlbNF1bMV0pKSwt aVsyXVsyXSksZSh0KHIoaVszXVsxXSxpWzRdWzJdKSxyKC1pWzNdWzJdLGlbNF1bMV0pKSxp WzJdWzRdKSkpLGlbMV1bMF0pLGUodChlKHQocihpWzNdWzJdLGlbNF1bNF0pLHIoLWlbM11b NF0saVs0XVsyXSkpLGlbMl1bMF0pLHQoZSh0KHIoaVszXVswXSxpWzRdWzRdKSxyKC1pWzNd WzRdLGlbNF1bMF0pKSwtaVsyXVsyXSksZSh0KHIoaVszXVswXSxpWzRdWzJdKSxyKC1pWzNd WzJdLGlbNF1bMF0pKSxpWzJdWzRdKSkpLC1pWzFdWzFdKSksdChlKHQoZSh0KHIoaVszXVsx XSxpWzRdWzRdKSxyKC1pWzNdWzRdLGlbNF1bMV0pKSxpWzJdWzBdKSx0KGUodChyKGlbM11b MF0saVs0XVs0XSkscigtaVszXVs0XSxpWzRdWzBdKSksLWlbMl1bMV0pLGUodChyKGlbM11b MF0saVs0XVsxXSkscigtaVszXVsxXSxpWzRdWzBdKSksaVsyXVs0XSkpKSxpWzFdWzJdKSxl KHQoZSh0KHIoaVszXVsxXSxpWzRdWzJdKSxyKC1pWzNdWzJdLGlbNF1bMV0pKSxpWzJdWzBd KSx0KGUodChyKGlbM11bMF0saVs0XVsyXSkscigtaVszXVsyXSxpWzRdWzBdKSksLWlbMl1b MV0pLGUodChyKGlbM11bMF0saVs0XVsxXSkscigtaVszXVsxXSxpWzRdWzBdKSksaVsyXVsy XSkpKSwtaVsxXVs0XSkpKSwtaVswXVszXSksZSh0KHQoZSh0KGUodChyKGlbM11bMl0saVs0 XVszXSkscigtaVszXVszXSxpWzRdWzJdKSksaVsyXVsxXSksdChlKHQocihpWzNdWzFdLGlb NF1bM10pLHIoLWlbM11bM10saVs0XVsxXSkpLC1pWzJdWzJdKSxlKHQocihpWzNdWzFdLGlb NF1bMl0pLHIoLWlbM11bMl0saVs0XVsxXSkpLGlbMl1bM10pKSksaVsxXVswXSksZSh0KGUo dChyKGlbM11bMl0saVs0XVszXSkscigtaVszXVszXSxpWzRdWzJdKSksaVsyXVswXSksdChl KHQocihpWzNdWzBdLGlbNF1bM10pLHIoLWlbM11bM10saVs0XVswXSkpLC1pWzJdWzJdKSxl KHQocihpWzNdWzBdLGlbNF1bMl0pLHIoLWlbM11bMl0saVs0XVswXSkpLGlbMl1bM10pKSks LWlbMV1bMV0pKSx0KGUodChlKHQocihpWzNdWzFdLGlbNF1bM10pLHIoLWlbM11bM10saVs0 XVsxXSkpLGlbMl1bMF0pLHQoZSh0KHIoaVszXVswXSxpWzRdWzNdKSxyKC1pWzNdWzNdLGlb NF1bMF0pKSwtaVsyXVsxXSksZSh0KHIoaVszXVswXSxpWzRdWzFdKSxyKC1pWzNdWzFdLGlb NF1bMF0pKSxpWzJdWzNdKSkpLGlbMV1bMl0pLGUodChlKHQocihpWzNdWzFdLGlbNF1bMl0p LHIoLWlbM11bMl0saVs0XVsxXSkpLGlbMl1bMF0pLHQoZSh0KHIoaVszXVswXSxpWzRdWzJd KSxyKC1pWzNdWzJdLGlbNF1bMF0pKSwtaVsyXVsxXSksZSh0KHIoaVszXVswXSxpWzRdWzFd KSxyKC1pWzNdWzFdLGlbNF1bMF0pKSxpWzJdWzJdKSkpLC1pWzFdWzNdKSkpLGlbMF1bNF0p KSkpKX19ZnVuY3Rpb24gZih0KXtyZXR1cm4oMj09PXQ/czozPT09dD9sOjQ9PT10P2M6NT09 PXQ/dTp2b2lkIDApKGksYSxuLG8pfXZhciBoPVtmdW5jdGlvbigpe3JldHVyblswXX0sZnVu Y3Rpb24odCl7cmV0dXJuW3RbMF1bMF1dfV07ZnVuY3Rpb24gcCh0LGUscixuLGksYSxvLHMp e3JldHVybiBmdW5jdGlvbihsKXtzd2l0Y2gobC5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gdChs KTtjYXNlIDE6cmV0dXJuIGUobCk7Y2FzZSAyOnJldHVybiByKGwpO2Nhc2UgMzpyZXR1cm4g bihsKTtjYXNlIDQ6cmV0dXJuIGkobCk7Y2FzZSA1OnJldHVybiBhKGwpfXZhciBjPW9bbC5s ZW5ndGhdO3JldHVybiBjfHwoYz1vW2wubGVuZ3RoXT1zKGwubGVuZ3RoKSksYyhsKX19IWZ1 bmN0aW9uKCl7Zm9yKDtoLmxlbmd0aDw2OyloLnB1c2goZihoLmxlbmd0aCkpO2UuZXhwb3J0 cz1wLmFwcGx5KHZvaWQgMCxoLmNvbmNhdChbaCxmXSkpO2Zvcih2YXIgdD0wO3Q8aC5sZW5n dGg7Kyt0KWUuZXhwb3J0c1t0XT1oW3RdfSgpfSx7InJvYnVzdC1jb21wcmVzcyI6Mjc5LCJy b2J1c3Qtc2NhbGUiOjI4Niwicm9idXN0LXN1bSI6Mjg5LCJ0d28tcHJvZHVjdCI6MzA2fV0s MjgxOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInR3by1wcm9kdWN0 IiksaT10KCJyb2J1c3Qtc3VtIik7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBy PW4odFswXSxlWzBdKSxhPTE7YTx0Lmxlbmd0aDsrK2Epcj1pKHIsbih0W2FdLGVbYV0pKTty ZXR1cm4gcn19LHsicm9idXN0LXN1bSI6Mjg5LCJ0d28tcHJvZHVjdCI6MzA2fV0sMjgyOltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuPXQoInR3by1wcm9kdWN0IiksaT10 KCJyb2J1c3Qtc3VtIiksYT10KCJyb2J1c3Qtc3VidHJhY3QiKSxvPXQoInJvYnVzdC1zY2Fs ZSIpO2Z1bmN0aW9uIHModCl7cmV0dXJuKDM9PT10P2w6ND09PXQ/Yzo1PT09dD91OmYpKGks YSxuLG8pfWZ1bmN0aW9uIGwodCxlLHIsbil7cmV0dXJuIGZ1bmN0aW9uKGksYSxvKXt2YXIg cz1yKGlbMF0saVswXSksbD1uKHMsYVswXSksYz1uKHMsb1swXSksdT1yKGFbMF0sYVswXSks Zj1uKHUsaVswXSksaD1uKHUsb1swXSkscD1yKG9bMF0sb1swXSksZD1uKHAsaVswXSksbT1u KHAsYVswXSksZz10KGUobSxoKSxlKGYsbCkpLHY9ZShkLGMpLHk9ZShnLHYpO3JldHVybiB5 W3kubGVuZ3RoLTFdfX1mdW5jdGlvbiBjKHQsZSxyLG4pe3JldHVybiBmdW5jdGlvbihpLGEs byxzKXt2YXIgbD10KHIoaVswXSxpWzBdKSxyKGlbMV0saVsxXSkpLGM9bihsLGFbMF0pLHU9 bihsLG9bMF0pLGY9bihsLHNbMF0pLGg9dChyKGFbMF0sYVswXSkscihhWzFdLGFbMV0pKSxw PW4oaCxpWzBdKSxkPW4oaCxvWzBdKSxtPW4oaCxzWzBdKSxnPXQocihvWzBdLG9bMF0pLHIo b1sxXSxvWzFdKSksdj1uKGcsaVswXSkseT1uKGcsYVswXSkseD1uKGcsc1swXSksYj10KHIo c1swXSxzWzBdKSxyKHNbMV0sc1sxXSkpLF89bihiLGlbMF0pLHc9bihiLGFbMF0pLFQ9bihi LG9bMF0pLGs9dCh0KG4oZShULHgpLGFbMV0pLHQobihlKHcsbSksLW9bMV0pLG4oZSh5LGQp LHNbMV0pKSksdChuKGUodyxtKSxpWzFdKSx0KG4oZShfLGYpLC1hWzFdKSxuKGUocCxjKSxz WzFdKSkpKSxBPXQodChuKGUoVCx4KSxpWzFdKSx0KG4oZShfLGYpLC1vWzFdKSxuKGUodix1 KSxzWzFdKSkpLHQobihlKHksZCksaVsxXSksdChuKGUodix1KSwtYVsxXSksbihlKHAsYyks b1sxXSkpKSksTT1lKGssQSk7cmV0dXJuIE1bTS5sZW5ndGgtMV19fWZ1bmN0aW9uIHUodCxl LHIsbil7cmV0dXJuIGZ1bmN0aW9uKGksYSxvLHMsbCl7dmFyIGM9dChyKGlbMF0saVswXSks dChyKGlbMV0saVsxXSkscihpWzJdLGlbMl0pKSksdT1uKGMsYVswXSksZj1uKGMsb1swXSks aD1uKGMsc1swXSkscD1uKGMsbFswXSksZD10KHIoYVswXSxhWzBdKSx0KHIoYVsxXSxhWzFd KSxyKGFbMl0sYVsyXSkpKSxtPW4oZCxpWzBdKSxnPW4oZCxvWzBdKSx2PW4oZCxzWzBdKSx5 PW4oZCxsWzBdKSx4PXQocihvWzBdLG9bMF0pLHQocihvWzFdLG9bMV0pLHIob1syXSxvWzJd KSkpLGI9bih4LGlbMF0pLF89bih4LGFbMF0pLHc9bih4LHNbMF0pLFQ9bih4LGxbMF0pLGs9 dChyKHNbMF0sc1swXSksdChyKHNbMV0sc1sxXSkscihzWzJdLHNbMl0pKSksQT1uKGssaVsw XSksTT1uKGssYVswXSksUz1uKGssb1swXSksRT1uKGssbFswXSksTD10KHIobFswXSxsWzBd KSx0KHIobFsxXSxsWzFdKSxyKGxbMl0sbFsyXSkpKSxDPW4oTCxpWzBdKSxQPW4oTCxhWzBd KSxJPW4oTCxvWzBdKSxPPW4oTCxzWzBdKSx6PXQodCh0KG4odChuKGUoTyxFKSxvWzFdKSx0 KG4oZShJLFQpLC1zWzFdKSxuKGUoUyx3KSxsWzFdKSkpLGFbMl0pLHQobih0KG4oZShPLEUp LGFbMV0pLHQobihlKFAseSksLXNbMV0pLG4oZShNLHYpLGxbMV0pKSksLW9bMl0pLG4odChu KGUoSSxUKSxhWzFdKSx0KG4oZShQLHkpLC1vWzFdKSxuKGUoXyxnKSxsWzFdKSkpLHNbMl0p KSksdChuKHQobihlKFMsdyksYVsxXSksdChuKGUoTSx2KSwtb1sxXSksbihlKF8sZyksc1sx XSkpKSwtbFsyXSksdChuKHQobihlKE8sRSksYVsxXSksdChuKGUoUCx5KSwtc1sxXSksbihl KE0sdiksbFsxXSkpKSxpWzJdKSxuKHQobihlKE8sRSksaVsxXSksdChuKGUoQyxwKSwtc1sx XSksbihlKEEsaCksbFsxXSkpKSwtYVsyXSkpKSksdCh0KG4odChuKGUoUCx5KSxpWzFdKSx0 KG4oZShDLHApLC1hWzFdKSxuKGUobSx1KSxsWzFdKSkpLHNbMl0pLHQobih0KG4oZShNLHYp LGlbMV0pLHQobihlKEEsaCksLWFbMV0pLG4oZShtLHUpLHNbMV0pKSksLWxbMl0pLG4odChu KGUoUyx3KSxhWzFdKSx0KG4oZShNLHYpLC1vWzFdKSxuKGUoXyxnKSxzWzFdKSkpLGlbMl0p KSksdChuKHQobihlKFMsdyksaVsxXSksdChuKGUoQSxoKSwtb1sxXSksbihlKGIsZiksc1sx XSkpKSwtYVsyXSksdChuKHQobihlKE0sdiksaVsxXSksdChuKGUoQSxoKSwtYVsxXSksbihl KG0sdSksc1sxXSkpKSxvWzJdKSxuKHQobihlKF8sZyksaVsxXSksdChuKGUoYixmKSwtYVsx XSksbihlKG0sdSksb1sxXSkpKSwtc1syXSkpKSkpLEQ9dCh0KHQobih0KG4oZShPLEUpLG9b MV0pLHQobihlKEksVCksLXNbMV0pLG4oZShTLHcpLGxbMV0pKSksaVsyXSksbih0KG4oZShP LEUpLGlbMV0pLHQobihlKEMscCksLXNbMV0pLG4oZShBLGgpLGxbMV0pKSksLW9bMl0pKSx0 KG4odChuKGUoSSxUKSxpWzFdKSx0KG4oZShDLHApLC1vWzFdKSxuKGUoYixmKSxsWzFdKSkp LHNbMl0pLG4odChuKGUoUyx3KSxpWzFdKSx0KG4oZShBLGgpLC1vWzFdKSxuKGUoYixmKSxz WzFdKSkpLC1sWzJdKSkpLHQodChuKHQobihlKEksVCksYVsxXSksdChuKGUoUCx5KSwtb1sx XSksbihlKF8sZyksbFsxXSkpKSxpWzJdKSxuKHQobihlKEksVCksaVsxXSksdChuKGUoQyxw KSwtb1sxXSksbihlKGIsZiksbFsxXSkpKSwtYVsyXSkpLHQobih0KG4oZShQLHkpLGlbMV0p LHQobihlKEMscCksLWFbMV0pLG4oZShtLHUpLGxbMV0pKSksb1syXSksbih0KG4oZShfLGcp LGlbMV0pLHQobihlKGIsZiksLWFbMV0pLG4oZShtLHUpLG9bMV0pKSksLWxbMl0pKSkpLFI9 ZSh6LEQpO3JldHVybiBSW1IubGVuZ3RoLTFdfX1mdW5jdGlvbiBmKHQsZSxyLG4pe3JldHVy biBmdW5jdGlvbihpLGEsbyxzLGwsYyl7dmFyIHU9dCh0KHIoaVswXSxpWzBdKSxyKGlbMV0s aVsxXSkpLHQocihpWzJdLGlbMl0pLHIoaVszXSxpWzNdKSkpLGY9bih1LGFbMF0pLGg9bih1 LG9bMF0pLHA9bih1LHNbMF0pLGQ9bih1LGxbMF0pLG09bih1LGNbMF0pLGc9dCh0KHIoYVsw XSxhWzBdKSxyKGFbMV0sYVsxXSkpLHQocihhWzJdLGFbMl0pLHIoYVszXSxhWzNdKSkpLHY9 bihnLGlbMF0pLHk9bihnLG9bMF0pLHg9bihnLHNbMF0pLGI9bihnLGxbMF0pLF89bihnLGNb MF0pLHc9dCh0KHIob1swXSxvWzBdKSxyKG9bMV0sb1sxXSkpLHQocihvWzJdLG9bMl0pLHIo b1szXSxvWzNdKSkpLFQ9bih3LGlbMF0pLGs9bih3LGFbMF0pLEE9bih3LHNbMF0pLE09bih3 LGxbMF0pLFM9bih3LGNbMF0pLEU9dCh0KHIoc1swXSxzWzBdKSxyKHNbMV0sc1sxXSkpLHQo cihzWzJdLHNbMl0pLHIoc1szXSxzWzNdKSkpLEw9bihFLGlbMF0pLEM9bihFLGFbMF0pLFA9 bihFLG9bMF0pLEk9bihFLGxbMF0pLE89bihFLGNbMF0pLHo9dCh0KHIobFswXSxsWzBdKSxy KGxbMV0sbFsxXSkpLHQocihsWzJdLGxbMl0pLHIobFszXSxsWzNdKSkpLEQ9bih6LGlbMF0p LFI9bih6LGFbMF0pLEY9bih6LG9bMF0pLEI9bih6LHNbMF0pLE49bih6LGNbMF0pLGo9dCh0 KHIoY1swXSxjWzBdKSxyKGNbMV0sY1sxXSkpLHQocihjWzJdLGNbMl0pLHIoY1szXSxjWzNd KSkpLFU9bihqLGlbMF0pLFY9bihqLGFbMF0pLEg9bihqLG9bMF0pLHE9bihqLHNbMF0pLEc9 bihqLGxbMF0pLFk9dCh0KHQobih0KHQobih0KG4oZShHLE4pLHNbMV0pLHQobihlKHEsTyks LWxbMV0pLG4oZShCLEkpLGNbMV0pKSksb1syXSksbih0KG4oZShHLE4pLG9bMV0pLHQobihl KEgsUyksLWxbMV0pLG4oZShGLE0pLGNbMV0pKSksLXNbMl0pKSx0KG4odChuKGUocSxPKSxv WzFdKSx0KG4oZShILFMpLC1zWzFdKSxuKGUoUCxBKSxjWzFdKSkpLGxbMl0pLG4odChuKGUo QixJKSxvWzFdKSx0KG4oZShGLE0pLC1zWzFdKSxuKGUoUCxBKSxsWzFdKSkpLC1jWzJdKSkp LGFbM10pLHQobih0KHQobih0KG4oZShHLE4pLHNbMV0pLHQobihlKHEsTyksLWxbMV0pLG4o ZShCLEkpLGNbMV0pKSksYVsyXSksbih0KG4oZShHLE4pLGFbMV0pLHQobihlKFYsXyksLWxb MV0pLG4oZShSLGIpLGNbMV0pKSksLXNbMl0pKSx0KG4odChuKGUocSxPKSxhWzFdKSx0KG4o ZShWLF8pLC1zWzFdKSxuKGUoQyx4KSxjWzFdKSkpLGxbMl0pLG4odChuKGUoQixJKSxhWzFd KSx0KG4oZShSLGIpLC1zWzFdKSxuKGUoQyx4KSxsWzFdKSkpLC1jWzJdKSkpLC1vWzNdKSxu KHQodChuKHQobihlKEcsTiksb1sxXSksdChuKGUoSCxTKSwtbFsxXSksbihlKEYsTSksY1sx XSkpKSxhWzJdKSxuKHQobihlKEcsTiksYVsxXSksdChuKGUoVixfKSwtbFsxXSksbihlKFIs YiksY1sxXSkpKSwtb1syXSkpLHQobih0KG4oZShILFMpLGFbMV0pLHQobihlKFYsXyksLW9b MV0pLG4oZShrLHkpLGNbMV0pKSksbFsyXSksbih0KG4oZShGLE0pLGFbMV0pLHQobihlKFIs YiksLW9bMV0pLG4oZShrLHkpLGxbMV0pKSksLWNbMl0pKSksc1szXSkpKSx0KHQobih0KHQo bih0KG4oZShxLE8pLG9bMV0pLHQobihlKEgsUyksLXNbMV0pLG4oZShQLEEpLGNbMV0pKSks YVsyXSksbih0KG4oZShxLE8pLGFbMV0pLHQobihlKFYsXyksLXNbMV0pLG4oZShDLHgpLGNb MV0pKSksLW9bMl0pKSx0KG4odChuKGUoSCxTKSxhWzFdKSx0KG4oZShWLF8pLC1vWzFdKSxu KGUoayx5KSxjWzFdKSkpLHNbMl0pLG4odChuKGUoUCxBKSxhWzFdKSx0KG4oZShDLHgpLC1v WzFdKSxuKGUoayx5KSxzWzFdKSkpLC1jWzJdKSkpLC1sWzNdKSxuKHQodChuKHQobihlKEIs SSksb1sxXSksdChuKGUoRixNKSwtc1sxXSksbihlKFAsQSksbFsxXSkpKSxhWzJdKSxuKHQo bihlKEIsSSksYVsxXSksdChuKGUoUixiKSwtc1sxXSksbihlKEMseCksbFsxXSkpKSwtb1sy XSkpLHQobih0KG4oZShGLE0pLGFbMV0pLHQobihlKFIsYiksLW9bMV0pLG4oZShrLHkpLGxb MV0pKSksc1syXSksbih0KG4oZShQLEEpLGFbMV0pLHQobihlKEMseCksLW9bMV0pLG4oZShr LHkpLHNbMV0pKSksLWxbMl0pKSksY1szXSkpLHQobih0KHQobih0KG4oZShHLE4pLHNbMV0p LHQobihlKHEsTyksLWxbMV0pLG4oZShCLEkpLGNbMV0pKSksYVsyXSksbih0KG4oZShHLE4p LGFbMV0pLHQobihlKFYsXyksLWxbMV0pLG4oZShSLGIpLGNbMV0pKSksLXNbMl0pKSx0KG4o dChuKGUocSxPKSxhWzFdKSx0KG4oZShWLF8pLC1zWzFdKSxuKGUoQyx4KSxjWzFdKSkpLGxb Ml0pLG4odChuKGUoQixJKSxhWzFdKSx0KG4oZShSLGIpLC1zWzFdKSxuKGUoQyx4KSxsWzFd KSkpLC1jWzJdKSkpLGlbM10pLG4odCh0KG4odChuKGUoRyxOKSxzWzFdKSx0KG4oZShxLE8p LC1sWzFdKSxuKGUoQixJKSxjWzFdKSkpLGlbMl0pLG4odChuKGUoRyxOKSxpWzFdKSx0KG4o ZShVLG0pLC1sWzFdKSxuKGUoRCxkKSxjWzFdKSkpLC1zWzJdKSksdChuKHQobihlKHEsTyks aVsxXSksdChuKGUoVSxtKSwtc1sxXSksbihlKEwscCksY1sxXSkpKSxsWzJdKSxuKHQobihl KEIsSSksaVsxXSksdChuKGUoRCxkKSwtc1sxXSksbihlKEwscCksbFsxXSkpKSwtY1syXSkp KSwtYVszXSkpKSksdCh0KHQobih0KHQobih0KG4oZShHLE4pLGFbMV0pLHQobihlKFYsXyks LWxbMV0pLG4oZShSLGIpLGNbMV0pKSksaVsyXSksbih0KG4oZShHLE4pLGlbMV0pLHQobihl KFUsbSksLWxbMV0pLG4oZShELGQpLGNbMV0pKSksLWFbMl0pKSx0KG4odChuKGUoVixfKSxp WzFdKSx0KG4oZShVLG0pLC1hWzFdKSxuKGUodixmKSxjWzFdKSkpLGxbMl0pLG4odChuKGUo UixiKSxpWzFdKSx0KG4oZShELGQpLC1hWzFdKSxuKGUodixmKSxsWzFdKSkpLC1jWzJdKSkp LHNbM10pLG4odCh0KG4odChuKGUocSxPKSxhWzFdKSx0KG4oZShWLF8pLC1zWzFdKSxuKGUo Qyx4KSxjWzFdKSkpLGlbMl0pLG4odChuKGUocSxPKSxpWzFdKSx0KG4oZShVLG0pLC1zWzFd KSxuKGUoTCxwKSxjWzFdKSkpLC1hWzJdKSksdChuKHQobihlKFYsXyksaVsxXSksdChuKGUo VSxtKSwtYVsxXSksbihlKHYsZiksY1sxXSkpKSxzWzJdKSxuKHQobihlKEMseCksaVsxXSks dChuKGUoTCxwKSwtYVsxXSksbihlKHYsZiksc1sxXSkpKSwtY1syXSkpKSwtbFszXSkpLHQo bih0KHQobih0KG4oZShCLEkpLGFbMV0pLHQobihlKFIsYiksLXNbMV0pLG4oZShDLHgpLGxb MV0pKSksaVsyXSksbih0KG4oZShCLEkpLGlbMV0pLHQobihlKEQsZCksLXNbMV0pLG4oZShM LHApLGxbMV0pKSksLWFbMl0pKSx0KG4odChuKGUoUixiKSxpWzFdKSx0KG4oZShELGQpLC1h WzFdKSxuKGUodixmKSxsWzFdKSkpLHNbMl0pLG4odChuKGUoQyx4KSxpWzFdKSx0KG4oZShM LHApLC1hWzFdKSxuKGUodixmKSxzWzFdKSkpLC1sWzJdKSkpLGNbM10pLG4odCh0KG4odChu KGUocSxPKSxvWzFdKSx0KG4oZShILFMpLC1zWzFdKSxuKGUoUCxBKSxjWzFdKSkpLGFbMl0p LG4odChuKGUocSxPKSxhWzFdKSx0KG4oZShWLF8pLC1zWzFdKSxuKGUoQyx4KSxjWzFdKSkp LC1vWzJdKSksdChuKHQobihlKEgsUyksYVsxXSksdChuKGUoVixfKSwtb1sxXSksbihlKGss eSksY1sxXSkpKSxzWzJdKSxuKHQobihlKFAsQSksYVsxXSksdChuKGUoQyx4KSwtb1sxXSks bihlKGsseSksc1sxXSkpKSwtY1syXSkpKSxpWzNdKSkpLHQodChuKHQodChuKHQobihlKHEs Tyksb1sxXSksdChuKGUoSCxTKSwtc1sxXSksbihlKFAsQSksY1sxXSkpKSxpWzJdKSxuKHQo bihlKHEsTyksaVsxXSksdChuKGUoVSxtKSwtc1sxXSksbihlKEwscCksY1sxXSkpKSwtb1sy XSkpLHQobih0KG4oZShILFMpLGlbMV0pLHQobihlKFUsbSksLW9bMV0pLG4oZShULGgpLGNb MV0pKSksc1syXSksbih0KG4oZShQLEEpLGlbMV0pLHQobihlKEwscCksLW9bMV0pLG4oZShU LGgpLHNbMV0pKSksLWNbMl0pKSksLWFbM10pLG4odCh0KG4odChuKGUocSxPKSxhWzFdKSx0 KG4oZShWLF8pLC1zWzFdKSxuKGUoQyx4KSxjWzFdKSkpLGlbMl0pLG4odChuKGUocSxPKSxp WzFdKSx0KG4oZShVLG0pLC1zWzFdKSxuKGUoTCxwKSxjWzFdKSkpLC1hWzJdKSksdChuKHQo bihlKFYsXyksaVsxXSksdChuKGUoVSxtKSwtYVsxXSksbihlKHYsZiksY1sxXSkpKSxzWzJd KSxuKHQobihlKEMseCksaVsxXSksdChuKGUoTCxwKSwtYVsxXSksbihlKHYsZiksc1sxXSkp KSwtY1syXSkpKSxvWzNdKSksdChuKHQodChuKHQobihlKEgsUyksYVsxXSksdChuKGUoVixf KSwtb1sxXSksbihlKGsseSksY1sxXSkpKSxpWzJdKSxuKHQobihlKEgsUyksaVsxXSksdChu KGUoVSxtKSwtb1sxXSksbihlKFQsaCksY1sxXSkpKSwtYVsyXSkpLHQobih0KG4oZShWLF8p LGlbMV0pLHQobihlKFUsbSksLWFbMV0pLG4oZSh2LGYpLGNbMV0pKSksb1syXSksbih0KG4o ZShrLHkpLGlbMV0pLHQobihlKFQsaCksLWFbMV0pLG4oZSh2LGYpLG9bMV0pKSksLWNbMl0p KSksLXNbM10pLG4odCh0KG4odChuKGUoUCxBKSxhWzFdKSx0KG4oZShDLHgpLC1vWzFdKSxu KGUoayx5KSxzWzFdKSkpLGlbMl0pLG4odChuKGUoUCxBKSxpWzFdKSx0KG4oZShMLHApLC1v WzFdKSxuKGUoVCxoKSxzWzFdKSkpLC1hWzJdKSksdChuKHQobihlKEMseCksaVsxXSksdChu KGUoTCxwKSwtYVsxXSksbihlKHYsZiksc1sxXSkpKSxvWzJdKSxuKHQobihlKGsseSksaVsx XSksdChuKGUoVCxoKSwtYVsxXSksbihlKHYsZiksb1sxXSkpKSwtc1syXSkpKSxjWzNdKSkp KSksVz10KHQodChuKHQodChuKHQobihlKEcsTiksc1sxXSksdChuKGUocSxPKSwtbFsxXSks bihlKEIsSSksY1sxXSkpKSxvWzJdKSxuKHQobihlKEcsTiksb1sxXSksdChuKGUoSCxTKSwt bFsxXSksbihlKEYsTSksY1sxXSkpKSwtc1syXSkpLHQobih0KG4oZShxLE8pLG9bMV0pLHQo bihlKEgsUyksLXNbMV0pLG4oZShQLEEpLGNbMV0pKSksbFsyXSksbih0KG4oZShCLEkpLG9b MV0pLHQobihlKEYsTSksLXNbMV0pLG4oZShQLEEpLGxbMV0pKSksLWNbMl0pKSksaVszXSks dChuKHQodChuKHQobihlKEcsTiksc1sxXSksdChuKGUocSxPKSwtbFsxXSksbihlKEIsSSks Y1sxXSkpKSxpWzJdKSxuKHQobihlKEcsTiksaVsxXSksdChuKGUoVSxtKSwtbFsxXSksbihl KEQsZCksY1sxXSkpKSwtc1syXSkpLHQobih0KG4oZShxLE8pLGlbMV0pLHQobihlKFUsbSks LXNbMV0pLG4oZShMLHApLGNbMV0pKSksbFsyXSksbih0KG4oZShCLEkpLGlbMV0pLHQobihl KEQsZCksLXNbMV0pLG4oZShMLHApLGxbMV0pKSksLWNbMl0pKSksLW9bM10pLG4odCh0KG4o dChuKGUoRyxOKSxvWzFdKSx0KG4oZShILFMpLC1sWzFdKSxuKGUoRixNKSxjWzFdKSkpLGlb Ml0pLG4odChuKGUoRyxOKSxpWzFdKSx0KG4oZShVLG0pLC1sWzFdKSxuKGUoRCxkKSxjWzFd KSkpLC1vWzJdKSksdChuKHQobihlKEgsUyksaVsxXSksdChuKGUoVSxtKSwtb1sxXSksbihl KFQsaCksY1sxXSkpKSxsWzJdKSxuKHQobihlKEYsTSksaVsxXSksdChuKGUoRCxkKSwtb1sx XSksbihlKFQsaCksbFsxXSkpKSwtY1syXSkpKSxzWzNdKSkpLHQodChuKHQodChuKHQobihl KHEsTyksb1sxXSksdChuKGUoSCxTKSwtc1sxXSksbihlKFAsQSksY1sxXSkpKSxpWzJdKSxu KHQobihlKHEsTyksaVsxXSksdChuKGUoVSxtKSwtc1sxXSksbihlKEwscCksY1sxXSkpKSwt b1syXSkpLHQobih0KG4oZShILFMpLGlbMV0pLHQobihlKFUsbSksLW9bMV0pLG4oZShULGgp LGNbMV0pKSksc1syXSksbih0KG4oZShQLEEpLGlbMV0pLHQobihlKEwscCksLW9bMV0pLG4o ZShULGgpLHNbMV0pKSksLWNbMl0pKSksLWxbM10pLG4odCh0KG4odChuKGUoQixJKSxvWzFd KSx0KG4oZShGLE0pLC1zWzFdKSxuKGUoUCxBKSxsWzFdKSkpLGlbMl0pLG4odChuKGUoQixJ KSxpWzFdKSx0KG4oZShELGQpLC1zWzFdKSxuKGUoTCxwKSxsWzFdKSkpLC1vWzJdKSksdChu KHQobihlKEYsTSksaVsxXSksdChuKGUoRCxkKSwtb1sxXSksbihlKFQsaCksbFsxXSkpKSxz WzJdKSxuKHQobihlKFAsQSksaVsxXSksdChuKGUoTCxwKSwtb1sxXSksbihlKFQsaCksc1sx XSkpKSwtbFsyXSkpKSxjWzNdKSksdChuKHQodChuKHQobihlKEcsTiksb1sxXSksdChuKGUo SCxTKSwtbFsxXSksbihlKEYsTSksY1sxXSkpKSxhWzJdKSxuKHQobihlKEcsTiksYVsxXSks dChuKGUoVixfKSwtbFsxXSksbihlKFIsYiksY1sxXSkpKSwtb1syXSkpLHQobih0KG4oZShI LFMpLGFbMV0pLHQobihlKFYsXyksLW9bMV0pLG4oZShrLHkpLGNbMV0pKSksbFsyXSksbih0 KG4oZShGLE0pLGFbMV0pLHQobihlKFIsYiksLW9bMV0pLG4oZShrLHkpLGxbMV0pKSksLWNb Ml0pKSksaVszXSksbih0KHQobih0KG4oZShHLE4pLG9bMV0pLHQobihlKEgsUyksLWxbMV0p LG4oZShGLE0pLGNbMV0pKSksaVsyXSksbih0KG4oZShHLE4pLGlbMV0pLHQobihlKFUsbSks LWxbMV0pLG4oZShELGQpLGNbMV0pKSksLW9bMl0pKSx0KG4odChuKGUoSCxTKSxpWzFdKSx0 KG4oZShVLG0pLC1vWzFdKSxuKGUoVCxoKSxjWzFdKSkpLGxbMl0pLG4odChuKGUoRixNKSxp WzFdKSx0KG4oZShELGQpLC1vWzFdKSxuKGUoVCxoKSxsWzFdKSkpLC1jWzJdKSkpLC1hWzNd KSkpKSx0KHQodChuKHQodChuKHQobihlKEcsTiksYVsxXSksdChuKGUoVixfKSwtbFsxXSks bihlKFIsYiksY1sxXSkpKSxpWzJdKSxuKHQobihlKEcsTiksaVsxXSksdChuKGUoVSxtKSwt bFsxXSksbihlKEQsZCksY1sxXSkpKSwtYVsyXSkpLHQobih0KG4oZShWLF8pLGlbMV0pLHQo bihlKFUsbSksLWFbMV0pLG4oZSh2LGYpLGNbMV0pKSksbFsyXSksbih0KG4oZShSLGIpLGlb MV0pLHQobihlKEQsZCksLWFbMV0pLG4oZSh2LGYpLGxbMV0pKSksLWNbMl0pKSksb1szXSks bih0KHQobih0KG4oZShILFMpLGFbMV0pLHQobihlKFYsXyksLW9bMV0pLG4oZShrLHkpLGNb MV0pKSksaVsyXSksbih0KG4oZShILFMpLGlbMV0pLHQobihlKFUsbSksLW9bMV0pLG4oZShU LGgpLGNbMV0pKSksLWFbMl0pKSx0KG4odChuKGUoVixfKSxpWzFdKSx0KG4oZShVLG0pLC1h WzFdKSxuKGUodixmKSxjWzFdKSkpLG9bMl0pLG4odChuKGUoayx5KSxpWzFdKSx0KG4oZShU LGgpLC1hWzFdKSxuKGUodixmKSxvWzFdKSkpLC1jWzJdKSkpLC1sWzNdKSksdChuKHQodChu KHQobihlKEYsTSksYVsxXSksdChuKGUoUixiKSwtb1sxXSksbihlKGsseSksbFsxXSkpKSxp WzJdKSxuKHQobihlKEYsTSksaVsxXSksdChuKGUoRCxkKSwtb1sxXSksbihlKFQsaCksbFsx XSkpKSwtYVsyXSkpLHQobih0KG4oZShSLGIpLGlbMV0pLHQobihlKEQsZCksLWFbMV0pLG4o ZSh2LGYpLGxbMV0pKSksb1syXSksbih0KG4oZShrLHkpLGlbMV0pLHQobihlKFQsaCksLWFb MV0pLG4oZSh2LGYpLG9bMV0pKSksLWxbMl0pKSksY1szXSksbih0KHQobih0KG4oZShCLEkp LG9bMV0pLHQobihlKEYsTSksLXNbMV0pLG4oZShQLEEpLGxbMV0pKSksYVsyXSksbih0KG4o ZShCLEkpLGFbMV0pLHQobihlKFIsYiksLXNbMV0pLG4oZShDLHgpLGxbMV0pKSksLW9bMl0p KSx0KG4odChuKGUoRixNKSxhWzFdKSx0KG4oZShSLGIpLC1vWzFdKSxuKGUoayx5KSxsWzFd KSkpLHNbMl0pLG4odChuKGUoUCxBKSxhWzFdKSx0KG4oZShDLHgpLC1vWzFdKSxuKGUoayx5 KSxzWzFdKSkpLC1sWzJdKSkpLGlbM10pKSksdCh0KG4odCh0KG4odChuKGUoQixJKSxvWzFd KSx0KG4oZShGLE0pLC1zWzFdKSxuKGUoUCxBKSxsWzFdKSkpLGlbMl0pLG4odChuKGUoQixJ KSxpWzFdKSx0KG4oZShELGQpLC1zWzFdKSxuKGUoTCxwKSxsWzFdKSkpLC1vWzJdKSksdChu KHQobihlKEYsTSksaVsxXSksdChuKGUoRCxkKSwtb1sxXSksbihlKFQsaCksbFsxXSkpKSxz WzJdKSxuKHQobihlKFAsQSksaVsxXSksdChuKGUoTCxwKSwtb1sxXSksbihlKFQsaCksc1sx XSkpKSwtbFsyXSkpKSwtYVszXSksbih0KHQobih0KG4oZShCLEkpLGFbMV0pLHQobihlKFIs YiksLXNbMV0pLG4oZShDLHgpLGxbMV0pKSksaVsyXSksbih0KG4oZShCLEkpLGlbMV0pLHQo bihlKEQsZCksLXNbMV0pLG4oZShMLHApLGxbMV0pKSksLWFbMl0pKSx0KG4odChuKGUoUixi KSxpWzFdKSx0KG4oZShELGQpLC1hWzFdKSxuKGUodixmKSxsWzFdKSkpLHNbMl0pLG4odChu KGUoQyx4KSxpWzFdKSx0KG4oZShMLHApLC1hWzFdKSxuKGUodixmKSxzWzFdKSkpLC1sWzJd KSkpLG9bM10pKSx0KG4odCh0KG4odChuKGUoRixNKSxhWzFdKSx0KG4oZShSLGIpLC1vWzFd KSxuKGUoayx5KSxsWzFdKSkpLGlbMl0pLG4odChuKGUoRixNKSxpWzFdKSx0KG4oZShELGQp LC1vWzFdKSxuKGUoVCxoKSxsWzFdKSkpLC1hWzJdKSksdChuKHQobihlKFIsYiksaVsxXSks dChuKGUoRCxkKSwtYVsxXSksbihlKHYsZiksbFsxXSkpKSxvWzJdKSxuKHQobihlKGsseSks aVsxXSksdChuKGUoVCxoKSwtYVsxXSksbihlKHYsZiksb1sxXSkpKSwtbFsyXSkpKSwtc1sz XSksbih0KHQobih0KG4oZShQLEEpLGFbMV0pLHQobihlKEMseCksLW9bMV0pLG4oZShrLHkp LHNbMV0pKSksaVsyXSksbih0KG4oZShQLEEpLGlbMV0pLHQobihlKEwscCksLW9bMV0pLG4o ZShULGgpLHNbMV0pKSksLWFbMl0pKSx0KG4odChuKGUoQyx4KSxpWzFdKSx0KG4oZShMLHAp LC1hWzFdKSxuKGUodixmKSxzWzFdKSkpLG9bMl0pLG4odChuKGUoayx5KSxpWzFdKSx0KG4o ZShULGgpLC1hWzFdKSxuKGUodixmKSxvWzFdKSkpLC1zWzJdKSkpLGxbM10pKSkpKSxYPWUo WSxXKTtyZXR1cm4gWFtYLmxlbmd0aC0xXX19dmFyIGg9W2Z1bmN0aW9uKCl7cmV0dXJuIDB9 LGZ1bmN0aW9uKCl7cmV0dXJuIDB9LGZ1bmN0aW9uKCl7cmV0dXJuIDB9XTtmdW5jdGlvbiBw KHQpe3ZhciBlPWhbdC5sZW5ndGhdO3JldHVybiBlfHwoZT1oW3QubGVuZ3RoXT1zKHQubGVu Z3RoKSksZS5hcHBseSh2b2lkIDAsdCl9ZnVuY3Rpb24gZCh0LGUscixuLGksYSxvLHMpe3Jl dHVybiBmdW5jdGlvbihlLHIsbCxjLHUsZil7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nh c2UgMDpjYXNlIDE6cmV0dXJuIDA7Y2FzZSAyOnJldHVybiBuKGUscik7Y2FzZSAzOnJldHVy biBpKGUscixsKTtjYXNlIDQ6cmV0dXJuIGEoZSxyLGwsYyk7Y2FzZSA1OnJldHVybiBvKGUs cixsLGMsdSk7Y2FzZSA2OnJldHVybiBzKGUscixsLGMsdSxmKX1mb3IodmFyIGg9bmV3IEFy cmF5KGFyZ3VtZW50cy5sZW5ndGgpLHA9MDtwPGFyZ3VtZW50cy5sZW5ndGg7KytwKWhbcF09 YXJndW1lbnRzW3BdO3JldHVybiB0KGgpfX0hZnVuY3Rpb24oKXtmb3IoO2gubGVuZ3RoPD02 OyloLnB1c2gocyhoLmxlbmd0aCkpO2UuZXhwb3J0cz1kLmFwcGx5KHZvaWQgMCxbcF0uY29u Y2F0KGgpKTtmb3IodmFyIHQ9MDt0PD02OysrdCllLmV4cG9ydHNbdF09aFt0XX0oKX0seyJy b2J1c3Qtc2NhbGUiOjI4Niwicm9idXN0LXN1YnRyYWN0IjoyODgsInJvYnVzdC1zdW0iOjI4 OSwidHdvLXByb2R1Y3QiOjMwNn1dLDI4MzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0 Ijt2YXIgbj10KCJyb2J1c3QtZGV0ZXJtaW5hbnQiKTtmdW5jdGlvbiBpKHQpe3ZhciBlPTI9 PT10P2E6Mz09PXQ/bzo0PT09dD9zOjU9PT10P2w6YztyZXR1cm4gZSh0PDY/blt0XTpuKX1m dW5jdGlvbiBhKHQpe3JldHVybiBmdW5jdGlvbihlLHIpe3JldHVyblt0KFtbK3JbMF0sK2Vb MF1bMV1dLFsrclsxXSwrZVsxXVsxXV1dKSx0KFtbK2VbMF1bMF0sK3JbMF1dLFsrZVsxXVsw XSwrclsxXV1dKSx0KGUpXX19ZnVuY3Rpb24gbyh0KXtyZXR1cm4gZnVuY3Rpb24oZSxyKXty ZXR1cm5bdChbWytyWzBdLCtlWzBdWzFdLCtlWzBdWzJdXSxbK3JbMV0sK2VbMV1bMV0sK2Vb MV1bMl1dLFsrclsyXSwrZVsyXVsxXSwrZVsyXVsyXV1dKSx0KFtbK2VbMF1bMF0sK3JbMF0s K2VbMF1bMl1dLFsrZVsxXVswXSwrclsxXSwrZVsxXVsyXV0sWytlWzJdWzBdLCtyWzJdLCtl WzJdWzJdXV0pLHQoW1srZVswXVswXSwrZVswXVsxXSwrclswXV0sWytlWzFdWzBdLCtlWzFd WzFdLCtyWzFdXSxbK2VbMl1bMF0sK2VbMl1bMV0sK3JbMl1dXSksdChlKV19fWZ1bmN0aW9u IHModCl7cmV0dXJuIGZ1bmN0aW9uKGUscil7cmV0dXJuW3QoW1srclswXSwrZVswXVsxXSwr ZVswXVsyXSwrZVswXVszXV0sWytyWzFdLCtlWzFdWzFdLCtlWzFdWzJdLCtlWzFdWzNdXSxb K3JbMl0sK2VbMl1bMV0sK2VbMl1bMl0sK2VbMl1bM11dLFsrclszXSwrZVszXVsxXSwrZVsz XVsyXSwrZVszXVszXV1dKSx0KFtbK2VbMF1bMF0sK3JbMF0sK2VbMF1bMl0sK2VbMF1bM11d LFsrZVsxXVswXSwrclsxXSwrZVsxXVsyXSwrZVsxXVszXV0sWytlWzJdWzBdLCtyWzJdLCtl WzJdWzJdLCtlWzJdWzNdXSxbK2VbM11bMF0sK3JbM10sK2VbM11bMl0sK2VbM11bM11dXSks dChbWytlWzBdWzBdLCtlWzBdWzFdLCtyWzBdLCtlWzBdWzNdXSxbK2VbMV1bMF0sK2VbMV1b MV0sK3JbMV0sK2VbMV1bM11dLFsrZVsyXVswXSwrZVsyXVsxXSwrclsyXSwrZVsyXVszXV0s WytlWzNdWzBdLCtlWzNdWzFdLCtyWzNdLCtlWzNdWzNdXV0pLHQoW1srZVswXVswXSwrZVsw XVsxXSwrZVswXVsyXSwrclswXV0sWytlWzFdWzBdLCtlWzFdWzFdLCtlWzFdWzJdLCtyWzFd XSxbK2VbMl1bMF0sK2VbMl1bMV0sK2VbMl1bMl0sK3JbMl1dLFsrZVszXVswXSwrZVszXVsx XSwrZVszXVsyXSwrclszXV1dKSx0KGUpXX19ZnVuY3Rpb24gbCh0KXtyZXR1cm4gZnVuY3Rp b24oZSxyKXtyZXR1cm5bdChbWytyWzBdLCtlWzBdWzFdLCtlWzBdWzJdLCtlWzBdWzNdLCtl WzBdWzRdXSxbK3JbMV0sK2VbMV1bMV0sK2VbMV1bMl0sK2VbMV1bM10sK2VbMV1bNF1dLFsr clsyXSwrZVsyXVsxXSwrZVsyXVsyXSwrZVsyXVszXSwrZVsyXVs0XV0sWytyWzNdLCtlWzNd WzFdLCtlWzNdWzJdLCtlWzNdWzNdLCtlWzNdWzRdXSxbK3JbNF0sK2VbNF1bMV0sK2VbNF1b Ml0sK2VbNF1bM10sK2VbNF1bNF1dXSksdChbWytlWzBdWzBdLCtyWzBdLCtlWzBdWzJdLCtl WzBdWzNdLCtlWzBdWzRdXSxbK2VbMV1bMF0sK3JbMV0sK2VbMV1bMl0sK2VbMV1bM10sK2Vb MV1bNF1dLFsrZVsyXVswXSwrclsyXSwrZVsyXVsyXSwrZVsyXVszXSwrZVsyXVs0XV0sWytl WzNdWzBdLCtyWzNdLCtlWzNdWzJdLCtlWzNdWzNdLCtlWzNdWzRdXSxbK2VbNF1bMF0sK3Jb NF0sK2VbNF1bMl0sK2VbNF1bM10sK2VbNF1bNF1dXSksdChbWytlWzBdWzBdLCtlWzBdWzFd LCtyWzBdLCtlWzBdWzNdLCtlWzBdWzRdXSxbK2VbMV1bMF0sK2VbMV1bMV0sK3JbMV0sK2Vb MV1bM10sK2VbMV1bNF1dLFsrZVsyXVswXSwrZVsyXVsxXSwrclsyXSwrZVsyXVszXSwrZVsy XVs0XV0sWytlWzNdWzBdLCtlWzNdWzFdLCtyWzNdLCtlWzNdWzNdLCtlWzNdWzRdXSxbK2Vb NF1bMF0sK2VbNF1bMV0sK3JbNF0sK2VbNF1bM10sK2VbNF1bNF1dXSksdChbWytlWzBdWzBd LCtlWzBdWzFdLCtlWzBdWzJdLCtyWzBdLCtlWzBdWzRdXSxbK2VbMV1bMF0sK2VbMV1bMV0s K2VbMV1bMl0sK3JbMV0sK2VbMV1bNF1dLFsrZVsyXVswXSwrZVsyXVsxXSwrZVsyXVsyXSwr clsyXSwrZVsyXVs0XV0sWytlWzNdWzBdLCtlWzNdWzFdLCtlWzNdWzJdLCtyWzNdLCtlWzNd WzRdXSxbK2VbNF1bMF0sK2VbNF1bMV0sK2VbNF1bMl0sK3JbNF0sK2VbNF1bNF1dXSksdChb WytlWzBdWzBdLCtlWzBdWzFdLCtlWzBdWzJdLCtlWzBdWzNdLCtyWzBdXSxbK2VbMV1bMF0s K2VbMV1bMV0sK2VbMV1bMl0sK2VbMV1bM10sK3JbMV1dLFsrZVsyXVswXSwrZVsyXVsxXSwr ZVsyXVsyXSwrZVsyXVszXSwrclsyXV0sWytlWzNdWzBdLCtlWzNdWzFdLCtlWzNdWzJdLCtl WzNdWzNdLCtyWzNdXSxbK2VbNF1bMF0sK2VbNF1bMV0sK2VbNF1bMl0sK2VbNF1bM10sK3Jb NF1dXSksdChlKV19fWZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUscil7cmV0dXJu W3QoW1srclswXSwrZVswXVsxXSwrZVswXVsyXSwrZVswXVszXSwrZVswXVs0XSwrZVswXVs1 XV0sWytyWzFdLCtlWzFdWzFdLCtlWzFdWzJdLCtlWzFdWzNdLCtlWzFdWzRdLCtlWzFdWzVd XSxbK3JbMl0sK2VbMl1bMV0sK2VbMl1bMl0sK2VbMl1bM10sK2VbMl1bNF0sK2VbMl1bNV1d LFsrclszXSwrZVszXVsxXSwrZVszXVsyXSwrZVszXVszXSwrZVszXVs0XSwrZVszXVs1XV0s WytyWzRdLCtlWzRdWzFdLCtlWzRdWzJdLCtlWzRdWzNdLCtlWzRdWzRdLCtlWzRdWzVdXSxb K3JbNV0sK2VbNV1bMV0sK2VbNV1bMl0sK2VbNV1bM10sK2VbNV1bNF0sK2VbNV1bNV1dXSks dChbWytlWzBdWzBdLCtyWzBdLCtlWzBdWzJdLCtlWzBdWzNdLCtlWzBdWzRdLCtlWzBdWzVd XSxbK2VbMV1bMF0sK3JbMV0sK2VbMV1bMl0sK2VbMV1bM10sK2VbMV1bNF0sK2VbMV1bNV1d LFsrZVsyXVswXSwrclsyXSwrZVsyXVsyXSwrZVsyXVszXSwrZVsyXVs0XSwrZVsyXVs1XV0s WytlWzNdWzBdLCtyWzNdLCtlWzNdWzJdLCtlWzNdWzNdLCtlWzNdWzRdLCtlWzNdWzVdXSxb K2VbNF1bMF0sK3JbNF0sK2VbNF1bMl0sK2VbNF1bM10sK2VbNF1bNF0sK2VbNF1bNV1dLFsr ZVs1XVswXSwrcls1XSwrZVs1XVsyXSwrZVs1XVszXSwrZVs1XVs0XSwrZVs1XVs1XV1dKSx0 KFtbK2VbMF1bMF0sK2VbMF1bMV0sK3JbMF0sK2VbMF1bM10sK2VbMF1bNF0sK2VbMF1bNV1d LFsrZVsxXVswXSwrZVsxXVsxXSwrclsxXSwrZVsxXVszXSwrZVsxXVs0XSwrZVsxXVs1XV0s WytlWzJdWzBdLCtlWzJdWzFdLCtyWzJdLCtlWzJdWzNdLCtlWzJdWzRdLCtlWzJdWzVdXSxb K2VbM11bMF0sK2VbM11bMV0sK3JbM10sK2VbM11bM10sK2VbM11bNF0sK2VbM11bNV1dLFsr ZVs0XVswXSwrZVs0XVsxXSwrcls0XSwrZVs0XVszXSwrZVs0XVs0XSwrZVs0XVs1XV0sWytl WzVdWzBdLCtlWzVdWzFdLCtyWzVdLCtlWzVdWzNdLCtlWzVdWzRdLCtlWzVdWzVdXV0pLHQo W1srZVswXVswXSwrZVswXVsxXSwrZVswXVsyXSwrclswXSwrZVswXVs0XSwrZVswXVs1XV0s WytlWzFdWzBdLCtlWzFdWzFdLCtlWzFdWzJdLCtyWzFdLCtlWzFdWzRdLCtlWzFdWzVdXSxb K2VbMl1bMF0sK2VbMl1bMV0sK2VbMl1bMl0sK3JbMl0sK2VbMl1bNF0sK2VbMl1bNV1dLFsr ZVszXVswXSwrZVszXVsxXSwrZVszXVsyXSwrclszXSwrZVszXVs0XSwrZVszXVs1XV0sWytl WzRdWzBdLCtlWzRdWzFdLCtlWzRdWzJdLCtyWzRdLCtlWzRdWzRdLCtlWzRdWzVdXSxbK2Vb NV1bMF0sK2VbNV1bMV0sK2VbNV1bMl0sK3JbNV0sK2VbNV1bNF0sK2VbNV1bNV1dXSksdChb WytlWzBdWzBdLCtlWzBdWzFdLCtlWzBdWzJdLCtlWzBdWzNdLCtyWzBdLCtlWzBdWzVdXSxb K2VbMV1bMF0sK2VbMV1bMV0sK2VbMV1bMl0sK2VbMV1bM10sK3JbMV0sK2VbMV1bNV1dLFsr ZVsyXVswXSwrZVsyXVsxXSwrZVsyXVsyXSwrZVsyXVszXSwrclsyXSwrZVsyXVs1XV0sWytl WzNdWzBdLCtlWzNdWzFdLCtlWzNdWzJdLCtlWzNdWzNdLCtyWzNdLCtlWzNdWzVdXSxbK2Vb NF1bMF0sK2VbNF1bMV0sK2VbNF1bMl0sK2VbNF1bM10sK3JbNF0sK2VbNF1bNV1dLFsrZVs1 XVswXSwrZVs1XVsxXSwrZVs1XVsyXSwrZVs1XVszXSwrcls1XSwrZVs1XVs1XV1dKSx0KFtb K2VbMF1bMF0sK2VbMF1bMV0sK2VbMF1bMl0sK2VbMF1bM10sK2VbMF1bNF0sK3JbMF1dLFsr ZVsxXVswXSwrZVsxXVsxXSwrZVsxXVsyXSwrZVsxXVszXSwrZVsxXVs0XSwrclsxXV0sWytl WzJdWzBdLCtlWzJdWzFdLCtlWzJdWzJdLCtlWzJdWzNdLCtlWzJdWzRdLCtyWzJdXSxbK2Vb M11bMF0sK2VbM11bMV0sK2VbM11bMl0sK2VbM11bM10sK2VbM11bNF0sK3JbM11dLFsrZVs0 XVswXSwrZVs0XVsxXSwrZVs0XVsyXSwrZVs0XVszXSwrZVs0XVs0XSwrcls0XV0sWytlWzVd WzBdLCtlWzVdWzFdLCtlWzVdWzJdLCtlWzVdWzNdLCtlWzVdWzRdLCtyWzVdXV0pLHQoZSld fX12YXIgdT1bZnVuY3Rpb24oKXtyZXR1cm5bWzBdXX0sZnVuY3Rpb24odCxlKXtyZXR1cm5b W2VbMF1dLFt0WzBdWzBdXV19XTtmdW5jdGlvbiBmKHQsZSxyLG4saSxhLG8scyl7cmV0dXJu IGZ1bmN0aW9uKGwsYyl7c3dpdGNoKGwubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIHQobCxjKTtj YXNlIDE6cmV0dXJuIGUobCxjKTtjYXNlIDI6cmV0dXJuIHIobCxjKTtjYXNlIDM6cmV0dXJu IG4obCxjKTtjYXNlIDQ6cmV0dXJuIGkobCxjKTtjYXNlIDU6cmV0dXJuIGEobCxjKX12YXIg dT1vW2wubGVuZ3RoXTtyZXR1cm4gdXx8KHU9b1tsLmxlbmd0aF09cyhsLmxlbmd0aCkpLHUo bCxjKX19IWZ1bmN0aW9uKCl7Zm9yKDt1Lmxlbmd0aDw2Oyl1LnB1c2goaSh1Lmxlbmd0aCkp O2UuZXhwb3J0cz1mLmFwcGx5KHZvaWQgMCx1LmNvbmNhdChbdSxpXSkpO2Zvcih2YXIgdD0w O3Q8NjsrK3QpZS5leHBvcnRzW3RdPXVbdF19KCl9LHsicm9idXN0LWRldGVybWluYW50Ijoy ODB9XSwyODQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgidHdvLXBy b2R1Y3QiKSxpPXQoInJvYnVzdC1zdW0iKSxhPXQoInJvYnVzdC1zY2FsZSIpLG89dCgicm9i dXN0LXN1YnRyYWN0Iik7ZnVuY3Rpb24gcyh0LGUscixuKXtyZXR1cm4gZnVuY3Rpb24ocixp LGEpe3ZhciBvPXQodChlKGlbMV0sYVswXSksZSgtYVsxXSxpWzBdKSksdChlKHJbMV0saVsw XSksZSgtaVsxXSxyWzBdKSkpLHM9dChlKHJbMV0sYVswXSksZSgtYVsxXSxyWzBdKSksbD1u KG8scyk7cmV0dXJuIGxbbC5sZW5ndGgtMV19fWZ1bmN0aW9uIGwodCxlLHIsbil7cmV0dXJu IGZ1bmN0aW9uKGksYSxvLHMpe3ZhciBsPXQodChyKHQoZShvWzFdLHNbMF0pLGUoLXNbMV0s b1swXSkpLGFbMl0pLHQocih0KGUoYVsxXSxzWzBdKSxlKC1zWzFdLGFbMF0pKSwtb1syXSks cih0KGUoYVsxXSxvWzBdKSxlKC1vWzFdLGFbMF0pKSxzWzJdKSkpLHQocih0KGUoYVsxXSxz WzBdKSxlKC1zWzFdLGFbMF0pKSxpWzJdKSx0KHIodChlKGlbMV0sc1swXSksZSgtc1sxXSxp WzBdKSksLWFbMl0pLHIodChlKGlbMV0sYVswXSksZSgtYVsxXSxpWzBdKSksc1syXSkpKSks Yz10KHQocih0KGUob1sxXSxzWzBdKSxlKC1zWzFdLG9bMF0pKSxpWzJdKSx0KHIodChlKGlb MV0sc1swXSksZSgtc1sxXSxpWzBdKSksLW9bMl0pLHIodChlKGlbMV0sb1swXSksZSgtb1sx XSxpWzBdKSksc1syXSkpKSx0KHIodChlKGFbMV0sb1swXSksZSgtb1sxXSxhWzBdKSksaVsy XSksdChyKHQoZShpWzFdLG9bMF0pLGUoLW9bMV0saVswXSkpLC1hWzJdKSxyKHQoZShpWzFd LGFbMF0pLGUoLWFbMV0saVswXSkpLG9bMl0pKSkpLHU9bihsLGMpO3JldHVybiB1W3UubGVu Z3RoLTFdfX1mdW5jdGlvbiBjKHQsZSxyLG4pe3JldHVybiBmdW5jdGlvbihpLGEsbyxzLGwp e3ZhciBjPXQodCh0KHIodChyKHQoZShzWzFdLGxbMF0pLGUoLWxbMV0sc1swXSkpLG9bMl0p LHQocih0KGUob1sxXSxsWzBdKSxlKC1sWzFdLG9bMF0pKSwtc1syXSkscih0KGUob1sxXSxz WzBdKSxlKC1zWzFdLG9bMF0pKSxsWzJdKSkpLGFbM10pLHQocih0KHIodChlKHNbMV0sbFsw XSksZSgtbFsxXSxzWzBdKSksYVsyXSksdChyKHQoZShhWzFdLGxbMF0pLGUoLWxbMV0sYVsw XSkpLC1zWzJdKSxyKHQoZShhWzFdLHNbMF0pLGUoLXNbMV0sYVswXSkpLGxbMl0pKSksLW9b M10pLHIodChyKHQoZShvWzFdLGxbMF0pLGUoLWxbMV0sb1swXSkpLGFbMl0pLHQocih0KGUo YVsxXSxsWzBdKSxlKC1sWzFdLGFbMF0pKSwtb1syXSkscih0KGUoYVsxXSxvWzBdKSxlKC1v WzFdLGFbMF0pKSxsWzJdKSkpLHNbM10pKSksdChyKHQocih0KGUob1sxXSxzWzBdKSxlKC1z WzFdLG9bMF0pKSxhWzJdKSx0KHIodChlKGFbMV0sc1swXSksZSgtc1sxXSxhWzBdKSksLW9b Ml0pLHIodChlKGFbMV0sb1swXSksZSgtb1sxXSxhWzBdKSksc1syXSkpKSwtbFszXSksdChy KHQocih0KGUoc1sxXSxsWzBdKSxlKC1sWzFdLHNbMF0pKSxhWzJdKSx0KHIodChlKGFbMV0s bFswXSksZSgtbFsxXSxhWzBdKSksLXNbMl0pLHIodChlKGFbMV0sc1swXSksZSgtc1sxXSxh WzBdKSksbFsyXSkpKSxpWzNdKSxyKHQocih0KGUoc1sxXSxsWzBdKSxlKC1sWzFdLHNbMF0p KSxpWzJdKSx0KHIodChlKGlbMV0sbFswXSksZSgtbFsxXSxpWzBdKSksLXNbMl0pLHIodChl KGlbMV0sc1swXSksZSgtc1sxXSxpWzBdKSksbFsyXSkpKSwtYVszXSkpKSksdCh0KHIodChy KHQoZShhWzFdLGxbMF0pLGUoLWxbMV0sYVswXSkpLGlbMl0pLHQocih0KGUoaVsxXSxsWzBd KSxlKC1sWzFdLGlbMF0pKSwtYVsyXSkscih0KGUoaVsxXSxhWzBdKSxlKC1hWzFdLGlbMF0p KSxsWzJdKSkpLHNbM10pLHQocih0KHIodChlKGFbMV0sc1swXSksZSgtc1sxXSxhWzBdKSks aVsyXSksdChyKHQoZShpWzFdLHNbMF0pLGUoLXNbMV0saVswXSkpLC1hWzJdKSxyKHQoZShp WzFdLGFbMF0pLGUoLWFbMV0saVswXSkpLHNbMl0pKSksLWxbM10pLHIodChyKHQoZShvWzFd LHNbMF0pLGUoLXNbMV0sb1swXSkpLGFbMl0pLHQocih0KGUoYVsxXSxzWzBdKSxlKC1zWzFd LGFbMF0pKSwtb1syXSkscih0KGUoYVsxXSxvWzBdKSxlKC1vWzFdLGFbMF0pKSxzWzJdKSkp LGlbM10pKSksdChyKHQocih0KGUob1sxXSxzWzBdKSxlKC1zWzFdLG9bMF0pKSxpWzJdKSx0 KHIodChlKGlbMV0sc1swXSksZSgtc1sxXSxpWzBdKSksLW9bMl0pLHIodChlKGlbMV0sb1sw XSksZSgtb1sxXSxpWzBdKSksc1syXSkpKSwtYVszXSksdChyKHQocih0KGUoYVsxXSxzWzBd KSxlKC1zWzFdLGFbMF0pKSxpWzJdKSx0KHIodChlKGlbMV0sc1swXSksZSgtc1sxXSxpWzBd KSksLWFbMl0pLHIodChlKGlbMV0sYVswXSksZSgtYVsxXSxpWzBdKSksc1syXSkpKSxvWzNd KSxyKHQocih0KGUoYVsxXSxvWzBdKSxlKC1vWzFdLGFbMF0pKSxpWzJdKSx0KHIodChlKGlb MV0sb1swXSksZSgtb1sxXSxpWzBdKSksLWFbMl0pLHIodChlKGlbMV0sYVswXSksZSgtYVsx XSxpWzBdKSksb1syXSkpKSwtc1szXSkpKSkpLHU9dCh0KHQocih0KHIodChlKHNbMV0sbFsw XSksZSgtbFsxXSxzWzBdKSksb1syXSksdChyKHQoZShvWzFdLGxbMF0pLGUoLWxbMV0sb1sw XSkpLC1zWzJdKSxyKHQoZShvWzFdLHNbMF0pLGUoLXNbMV0sb1swXSkpLGxbMl0pKSksaVsz XSkscih0KHIodChlKHNbMV0sbFswXSksZSgtbFsxXSxzWzBdKSksaVsyXSksdChyKHQoZShp WzFdLGxbMF0pLGUoLWxbMV0saVswXSkpLC1zWzJdKSxyKHQoZShpWzFdLHNbMF0pLGUoLXNb MV0saVswXSkpLGxbMl0pKSksLW9bM10pKSx0KHIodChyKHQoZShvWzFdLGxbMF0pLGUoLWxb MV0sb1swXSkpLGlbMl0pLHQocih0KGUoaVsxXSxsWzBdKSxlKC1sWzFdLGlbMF0pKSwtb1sy XSkscih0KGUoaVsxXSxvWzBdKSxlKC1vWzFdLGlbMF0pKSxsWzJdKSkpLHNbM10pLHIodChy KHQoZShvWzFdLHNbMF0pLGUoLXNbMV0sb1swXSkpLGlbMl0pLHQocih0KGUoaVsxXSxzWzBd KSxlKC1zWzFdLGlbMF0pKSwtb1syXSkscih0KGUoaVsxXSxvWzBdKSxlKC1vWzFdLGlbMF0p KSxzWzJdKSkpLC1sWzNdKSkpLHQodChyKHQocih0KGUob1sxXSxsWzBdKSxlKC1sWzFdLG9b MF0pKSxhWzJdKSx0KHIodChlKGFbMV0sbFswXSksZSgtbFsxXSxhWzBdKSksLW9bMl0pLHIo dChlKGFbMV0sb1swXSksZSgtb1sxXSxhWzBdKSksbFsyXSkpKSxpWzNdKSxyKHQocih0KGUo b1sxXSxsWzBdKSxlKC1sWzFdLG9bMF0pKSxpWzJdKSx0KHIodChlKGlbMV0sbFswXSksZSgt bFsxXSxpWzBdKSksLW9bMl0pLHIodChlKGlbMV0sb1swXSksZSgtb1sxXSxpWzBdKSksbFsy XSkpKSwtYVszXSkpLHQocih0KHIodChlKGFbMV0sbFswXSksZSgtbFsxXSxhWzBdKSksaVsy XSksdChyKHQoZShpWzFdLGxbMF0pLGUoLWxbMV0saVswXSkpLC1hWzJdKSxyKHQoZShpWzFd LGFbMF0pLGUoLWFbMV0saVswXSkpLGxbMl0pKSksb1szXSkscih0KHIodChlKGFbMV0sb1sw XSksZSgtb1sxXSxhWzBdKSksaVsyXSksdChyKHQoZShpWzFdLG9bMF0pLGUoLW9bMV0saVsw XSkpLC1hWzJdKSxyKHQoZShpWzFdLGFbMF0pLGUoLWFbMV0saVswXSkpLG9bMl0pKSksLWxb M10pKSkpLGY9bihjLHUpO3JldHVybiBmW2YubGVuZ3RoLTFdfX1mdW5jdGlvbiB1KHQpe3Jl dHVybigzPT09dD9zOjQ9PT10P2w6YykoaSxuLGEsbyl9dmFyIGY9dSgzKSxoPXUoNCkscD1b ZnVuY3Rpb24oKXtyZXR1cm4gMH0sZnVuY3Rpb24oKXtyZXR1cm4gMH0sZnVuY3Rpb24odCxl KXtyZXR1cm4gZVswXS10WzBdfSxmdW5jdGlvbih0LGUscil7dmFyIG4saT0odFsxXS1yWzFd KSooZVswXS1yWzBdKSxhPSh0WzBdLXJbMF0pKihlWzFdLXJbMV0pLG89aS1hO2lmKGk+MCl7 aWYoYTw9MClyZXR1cm4gbztuPWkrYX1lbHNle2lmKCEoaTwwKSlyZXR1cm4gbztpZihhPj0w KXJldHVybiBvO249LShpK2EpfXZhciBzPTMzMzA2NjkwNzM4NzU0NzE2ZS0zMipuO3JldHVy biBvPj1zfHxvPD0tcz9vOmYodCxlLHIpfSxmdW5jdGlvbih0LGUscixuKXt2YXIgaT10WzBd LW5bMF0sYT1lWzBdLW5bMF0sbz1yWzBdLW5bMF0scz10WzFdLW5bMV0sbD1lWzFdLW5bMV0s Yz1yWzFdLW5bMV0sdT10WzJdLW5bMl0sZj1lWzJdLW5bMl0scD1yWzJdLW5bMl0sZD1hKmMs bT1vKmwsZz1vKnMsdj1pKmMseT1pKmwseD1hKnMsYj11KihkLW0pK2YqKGctdikrcCooeS14 KSxfPTc3NzE1NjExNzIzNzYxMDNlLTMxKigoTWF0aC5hYnMoZCkrTWF0aC5hYnMobSkpKk1h dGguYWJzKHUpKyhNYXRoLmFicyhnKStNYXRoLmFicyh2KSkqTWF0aC5hYnMoZikrKE1hdGgu YWJzKHkpK01hdGguYWJzKHgpKSpNYXRoLmFicyhwKSk7cmV0dXJuIGI+X3x8LWI+Xz9iOmgo dCxlLHIsbil9XTtmdW5jdGlvbiBkKHQpe3ZhciBlPXBbdC5sZW5ndGhdO3JldHVybiBlfHwo ZT1wW3QubGVuZ3RoXT11KHQubGVuZ3RoKSksZS5hcHBseSh2b2lkIDAsdCl9ZnVuY3Rpb24g bSh0LGUscixuLGksYSxvKXtyZXR1cm4gZnVuY3Rpb24oZSxyLHMsbCxjKXtzd2l0Y2goYXJn dW1lbnRzLmxlbmd0aCl7Y2FzZSAwOmNhc2UgMTpyZXR1cm4gMDtjYXNlIDI6cmV0dXJuIG4o ZSxyKTtjYXNlIDM6cmV0dXJuIGkoZSxyLHMpO2Nhc2UgNDpyZXR1cm4gYShlLHIscyxsKTtj YXNlIDU6cmV0dXJuIG8oZSxyLHMsbCxjKX1mb3IodmFyIHU9bmV3IEFycmF5KGFyZ3VtZW50 cy5sZW5ndGgpLGY9MDtmPGFyZ3VtZW50cy5sZW5ndGg7KytmKXVbZl09YXJndW1lbnRzW2Zd O3JldHVybiB0KHUpfX0hZnVuY3Rpb24oKXtmb3IoO3AubGVuZ3RoPD01OylwLnB1c2godShw Lmxlbmd0aCkpO2UuZXhwb3J0cz1tLmFwcGx5KHZvaWQgMCxbZF0uY29uY2F0KHApKTtmb3Io dmFyIHQ9MDt0PD01OysrdCllLmV4cG9ydHNbdF09cFt0XX0oKX0seyJyb2J1c3Qtc2NhbGUi OjI4Niwicm9idXN0LXN1YnRyYWN0IjoyODgsInJvYnVzdC1zdW0iOjI4OSwidHdvLXByb2R1 Y3QiOjMwNn1dLDI4NTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJy b2J1c3Qtc3VtIiksaT10KCJyb2J1c3Qtc2NhbGUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxl KXtpZigxPT09dC5sZW5ndGgpcmV0dXJuIGkoZSx0WzBdKTtpZigxPT09ZS5sZW5ndGgpcmV0 dXJuIGkodCxlWzBdKTtpZigwPT09dC5sZW5ndGh8fDA9PT1lLmxlbmd0aClyZXR1cm5bMF07 dmFyIHI9WzBdO2lmKHQubGVuZ3RoPGUubGVuZ3RoKWZvcih2YXIgYT0wO2E8dC5sZW5ndGg7 KythKXI9bihyLGkoZSx0W2FdKSk7ZWxzZSBmb3IoYT0wO2E8ZS5sZW5ndGg7KythKXI9bihy LGkodCxlW2FdKSk7cmV0dXJuIHJ9fSx7InJvYnVzdC1zY2FsZSI6Mjg2LCJyb2J1c3Qtc3Vt IjoyODl9XSwyODY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgidHdv LXByb2R1Y3QiKSxpPXQoInR3by1zdW0iKTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIg cj10Lmxlbmd0aDtpZigxPT09cil7dmFyIGE9bih0WzBdLGUpO3JldHVybiBhWzBdP2E6W2Fb MV1dfXZhciBvPW5ldyBBcnJheSgyKnIpLHM9Wy4xLC4xXSxsPVsuMSwuMV0sYz0wO24odFsw XSxlLHMpLHNbMF0mJihvW2MrK109c1swXSk7Zm9yKHZhciB1PTE7dTxyOysrdSl7bih0W3Vd LGUsbCk7dmFyIGY9c1sxXTtpKGYsbFswXSxzKSxzWzBdJiYob1tjKytdPXNbMF0pO3ZhciBo PWxbMV0scD1zWzFdLGQ9aCtwLG09cC0oZC1oKTtzWzFdPWQsbSYmKG9bYysrXT1tKX1zWzFd JiYob1tjKytdPXNbMV0pOzA9PT1jJiYob1tjKytdPTApO3JldHVybiBvLmxlbmd0aD1jLG99 fSx7InR3by1wcm9kdWN0IjozMDYsInR3by1zdW0iOjMwN31dLDI4NzpbZnVuY3Rpb24odCxl LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaSl7dmFyIGE9bih0 LHIsaSksbz1uKGUscixpKTtpZihhPjAmJm8+MHx8YTwwJiZvPDApcmV0dXJuITE7dmFyIHM9 bihyLHQsZSksbD1uKGksdCxlKTtpZihzPjAmJmw+MHx8czwwJiZsPDApcmV0dXJuITE7aWYo MD09PWEmJjA9PT1vJiYwPT09cyYmMD09PWwpcmV0dXJuIGZ1bmN0aW9uKHQsZSxyLG4pe2Zv cih2YXIgaT0wO2k8MjsrK2kpe3ZhciBhPXRbaV0sbz1lW2ldLHM9TWF0aC5taW4oYSxvKSxs PU1hdGgubWF4KGEsbyksYz1yW2ldLHU9bltpXSxmPU1hdGgubWluKGMsdSk7aWYoTWF0aC5t YXgoYyx1KTxzfHxsPGYpcmV0dXJuITF9cmV0dXJuITB9KHQsZSxyLGkpO3JldHVybiEwfTt2 YXIgbj10KCJyb2J1c3Qtb3JpZW50YXRpb24iKVszXX0seyJyb2J1c3Qtb3JpZW50YXRpb24i OjI4NH1dLDI4ODpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlKXt2YXIgcj0wfHQubGVuZ3RoLG49MHxlLmxlbmd0aDtpZigxPT09ciYmMT09 PW4pcmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIHI9dCtlLG49ci10LGk9dC0oci1uKSsoZS1u KTtpZihpKXJldHVybltpLHJdO3JldHVybltyXX0odFswXSwtZVswXSk7dmFyIGksYSxvPW5l dyBBcnJheShyK24pLHM9MCxsPTAsYz0wLHU9TWF0aC5hYnMsZj10W2xdLGg9dShmKSxwPS1l W2NdLGQ9dShwKTtoPGQ/KGE9ZiwobCs9MSk8ciYmKGY9dFtsXSxoPXUoZikpKTooYT1wLChj Kz0xKTxuJiYocD0tZVtjXSxkPXUocCkpKTtsPHImJmg8ZHx8Yz49bj8oaT1mLChsKz0xKTxy JiYoZj10W2xdLGg9dShmKSkpOihpPXAsKGMrPTEpPG4mJihwPS1lW2NdLGQ9dShwKSkpO3Zh ciBtLGcsdj1pK2EseT12LWkseD1hLXksYj14LF89djtmb3IoO2w8ciYmYzxuOyloPGQ/KGk9 ZiwobCs9MSk8ciYmKGY9dFtsXSxoPXUoZikpKTooaT1wLChjKz0xKTxuJiYocD0tZVtjXSxk PXUocCkpKSwoeD0oYT1iKS0oeT0odj1pK2EpLWkpKSYmKG9bcysrXT14KSxiPV8tKChtPV8r diktKGc9bS1fKSkrKHYtZyksXz1tO2Zvcig7bDxyOykoeD0oYT1iKS0oeT0odj0oaT1mKSth KS1pKSkmJihvW3MrK109eCksYj1fLSgobT1fK3YpLShnPW0tXykpKyh2LWcpLF89bSwobCs9 MSk8ciYmKGY9dFtsXSk7Zm9yKDtjPG47KSh4PShhPWIpLSh5PSh2PShpPXApK2EpLWkpKSYm KG9bcysrXT14KSxiPV8tKChtPV8rdiktKGc9bS1fKSkrKHYtZyksXz1tLChjKz0xKTxuJiYo cD0tZVtjXSk7YiYmKG9bcysrXT1iKTtfJiYob1tzKytdPV8pO3N8fChvW3MrK109MCk7cmV0 dXJuIG8ubGVuZ3RoPXMsb319LHt9XSwyODk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmlj dCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9MHx0Lmxlbmd0aCxuPTB8ZS5sZW5n dGg7aWYoMT09PXImJjE9PT1uKXJldHVybiBmdW5jdGlvbih0LGUpe3ZhciByPXQrZSxuPXIt dCxpPXQtKHItbikrKGUtbik7aWYoaSlyZXR1cm5baSxyXTtyZXR1cm5bcl19KHRbMF0sZVsw XSk7dmFyIGksYSxvPW5ldyBBcnJheShyK24pLHM9MCxsPTAsYz0wLHU9TWF0aC5hYnMsZj10 W2xdLGg9dShmKSxwPWVbY10sZD11KHApO2g8ZD8oYT1mLChsKz0xKTxyJiYoZj10W2xdLGg9 dShmKSkpOihhPXAsKGMrPTEpPG4mJihwPWVbY10sZD11KHApKSk7bDxyJiZoPGR8fGM+PW4/ KGk9ZiwobCs9MSk8ciYmKGY9dFtsXSxoPXUoZikpKTooaT1wLChjKz0xKTxuJiYocD1lW2Nd LGQ9dShwKSkpO3ZhciBtLGcsdj1pK2EseT12LWkseD1hLXksYj14LF89djtmb3IoO2w8ciYm YzxuOyloPGQ/KGk9ZiwobCs9MSk8ciYmKGY9dFtsXSxoPXUoZikpKTooaT1wLChjKz0xKTxu JiYocD1lW2NdLGQ9dShwKSkpLCh4PShhPWIpLSh5PSh2PWkrYSktaSkpJiYob1tzKytdPXgp LGI9Xy0oKG09Xyt2KS0oZz1tLV8pKSsodi1nKSxfPW07Zm9yKDtsPHI7KSh4PShhPWIpLSh5 PSh2PShpPWYpK2EpLWkpKSYmKG9bcysrXT14KSxiPV8tKChtPV8rdiktKGc9bS1fKSkrKHYt ZyksXz1tLChsKz0xKTxyJiYoZj10W2xdKTtmb3IoO2M8bjspKHg9KGE9YiktKHk9KHY9KGk9 cCkrYSktaSkpJiYob1tzKytdPXgpLGI9Xy0oKG09Xyt2KS0oZz1tLV8pKSsodi1nKSxfPW0s KGMrPTEpPG4mJihwPWVbY10pO2ImJihvW3MrK109Yik7XyYmKG9bcysrXT1fKTtzfHwob1tz KytdPTApO3JldHVybiBvLmxlbmd0aD1zLG99fSx7fV0sMjkwOltmdW5jdGlvbih0LGUscil7 InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaShuKHQpKX07dmFy IG49dCgiYm91bmRhcnktY2VsbHMiKSxpPXQoInJlZHVjZS1zaW1wbGljaWFsLWNvbXBsZXgi KX0seyJib3VuZGFyeS1jZWxscyI6MzQsInJlZHVjZS1zaW1wbGljaWFsLWNvbXBsZXgiOjI3 Nn1dLDI5MTpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rp b24odCxlLHIscyl7cj1yfHwwLHZvaWQgMD09PXMmJihzPWZ1bmN0aW9uKHQpe2Zvcih2YXIg ZT10Lmxlbmd0aCxyPTAsbj0wO248ZTsrK24pcj0wfE1hdGgubWF4KHIsdFtuXS5sZW5ndGgp O3JldHVybiByLTF9KHQpKTtpZigwPT09dC5sZW5ndGh8fHM8MSlyZXR1cm57Y2VsbHM6W10s dmVydGV4SWRzOltdLHZlcnRleFdlaWdodHM6W119O3ZhciBsPWZ1bmN0aW9uKHQsZSl7Zm9y KHZhciByPXQubGVuZ3RoLG49aS5tYWxsb2NVaW50OChyKSxhPTA7YTxyOysrYSluW2FdPXRb YV08ZXwwO3JldHVybiBufShlLCtyKSxjPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQubGVu Z3RoLG89ZSooZSsxKS8yKnJ8MCxzPWkubWFsbG9jVWludDMyKDIqbyksbD0wLGM9MDtjPHI7 KytjKWZvcih2YXIgdT10W2NdLGY9KGU9dS5sZW5ndGgsMCk7ZjxlOysrZilmb3IodmFyIGg9 MDtoPGY7KytoKXt2YXIgcD11W2hdLGQ9dVtmXTtzW2wrK109MHxNYXRoLm1pbihwLGQpLHNb bCsrXT0wfE1hdGgubWF4KHAsZCl9YShuKHMsW2wvMnwwLDJdKSk7dmFyIG09Mjtmb3IoYz0y O2M8bDtjKz0yKXNbYy0yXT09PXNbY10mJnNbYy0xXT09PXNbYysxXXx8KHNbbSsrXT1zW2Nd LHNbbSsrXT1zW2MrMV0pO3JldHVybiBuKHMsW20vMnwwLDJdKX0odCxzKSx1PWZ1bmN0aW9u KHQsZSxyLGEpe2Zvcih2YXIgbz10LmRhdGEscz10LnNoYXBlWzBdLGw9aS5tYWxsb2NEb3Vi bGUocyksYz0wLHU9MDt1PHM7Kyt1KXt2YXIgZj1vWzIqdV0saD1vWzIqdSsxXTtpZihyW2Zd IT09cltoXSl7dmFyIHA9ZVtmXSxkPWVbaF07b1syKmNdPWYsb1syKmMrMV09aCxsW2MrK109 KGQtYSkvKGQtcCl9fXJldHVybiB0LnNoYXBlWzBdPWMsbihsLFtjXSl9KGMsZSxsLCtyKSxm PWZ1bmN0aW9uKHQsZSl7dmFyIHI9aS5tYWxsb2NJbnQzMigyKmUpLG49dC5zaGFwZVswXSxh PXQuZGF0YTtyWzBdPTA7Zm9yKHZhciBvPTAscz0wO3M8bjsrK3Mpe3ZhciBsPWFbMipzXTtp ZihsIT09byl7Zm9yKHJbMipvKzFdPXM7KytvPGw7KXJbMipvXT1zLHJbMipvKzFdPXM7clsy Km9dPXN9fXJbMipvKzFdPW47Zm9yKDsrK288ZTspclsyKm9dPXJbMipvKzFdPW47cmV0dXJu IHJ9KGMsMHxlLmxlbmd0aCksaD1vKHMpKHQsYy5kYXRhLGYsbCkscD1mdW5jdGlvbih0KXtm b3IodmFyIGU9MHx0LnNoYXBlWzBdLHI9dC5kYXRhLG49bmV3IEFycmF5KGUpLGk9MDtpPGU7 KytpKW5baV09W3JbMippXSxyWzIqaSsxXV07cmV0dXJuIG59KGMpLGQ9W10uc2xpY2UuY2Fs bCh1LmRhdGEsMCx1LnNoYXBlWzBdKTtyZXR1cm4gaS5mcmVlKGwpLGkuZnJlZShjLmRhdGEp LGkuZnJlZSh1LmRhdGEpLGkuZnJlZShmKSx7Y2VsbHM6aCx2ZXJ0ZXhJZHM6cCx2ZXJ0ZXhX ZWlnaHRzOmR9fTt2YXIgbj10KCJuZGFycmF5IiksaT10KCJ0eXBlZGFycmF5LXBvb2wiKSxh PXQoIm5kYXJyYXktc29ydCIpLG89dCgiLi9saWIvY29kZWdlbiIpfSx7Ii4vbGliL2NvZGVn ZW4iOjI5MixuZGFycmF5OjI1OSwibmRhcnJheS1zb3J0IjoyNTgsInR5cGVkYXJyYXktcG9v bCI6MzA4fV0sMjkyOltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1m dW5jdGlvbih0KXtyZXR1cm4gblt0XSgpfTt2YXIgbj1bZnVuY3Rpb24oKXtyZXR1cm4gZnVu Y3Rpb24odCxlLHIsbil7Zm9yKHZhciBpPXQubGVuZ3RoLGE9MDthPGk7KythKXRbYV0ubGVu Z3RoO3JldHVybltdfX0sZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxyLG4pe2Zvcih2YXIg aT0wfE1hdGgubWluKHIsbiksYT0wfE1hdGgubWF4KHIsbiksbz10WzIqaV0scz10WzIqaSsx XTtvPHM7KXt2YXIgbD1vK3M+PjEsYz1lWzIqbCsxXTtpZihjPT09YSlyZXR1cm4gbDthPGM/ cz1sOm89bCsxfXJldHVybiBvfXJldHVybiBmdW5jdGlvbihlLHIsbixpKXtmb3IodmFyIGE9 ZS5sZW5ndGgsbz1bXSxzPTA7czxhOysrcyl7dmFyIGw9ZVtzXTtpZigyPT09bC5sZW5ndGgp e3ZhciBjPShpW2xbMF1dPDwwKSsoaVtsWzFdXTw8MSk7aWYoMD09PWN8fDM9PT1jKWNvbnRp bnVlO3N3aXRjaChjKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOm8ucHVzaChbdChuLHIsbFswXSxs WzFdKV0pO2JyZWFrO2Nhc2UgMjpvLnB1c2goW3QobixyLGxbMV0sbFswXSldKX19fXJldHVy biBvfX0sZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxyLG4pe2Zvcih2YXIgaT0wfE1hdGgu bWluKHIsbiksYT0wfE1hdGgubWF4KHIsbiksbz10WzIqaV0scz10WzIqaSsxXTtvPHM7KXt2 YXIgbD1vK3M+PjEsYz1lWzIqbCsxXTtpZihjPT09YSlyZXR1cm4gbDthPGM/cz1sOm89bCsx fXJldHVybiBvfXJldHVybiBmdW5jdGlvbihlLHIsbixpKXtmb3IodmFyIGE9ZS5sZW5ndGgs bz1bXSxzPTA7czxhOysrcyl7dmFyIGw9ZVtzXSxjPWwubGVuZ3RoO2lmKDM9PT1jKXtpZigw PT09KHU9KGlbbFswXV08PDApKyhpW2xbMV1dPDwxKSsoaVtsWzJdXTw8MikpfHw3PT09dSlj b250aW51ZTtzd2l0Y2godSl7Y2FzZSAwOmJyZWFrO2Nhc2UgMTpvLnB1c2goW3QobixyLGxb MF0sbFsyXSksdChuLHIsbFswXSxsWzFdKV0pO2JyZWFrO2Nhc2UgMjpvLnB1c2goW3Qobixy LGxbMV0sbFswXSksdChuLHIsbFsxXSxsWzJdKV0pO2JyZWFrO2Nhc2UgMzpvLnB1c2goW3Qo bixyLGxbMF0sbFsyXSksdChuLHIsbFsxXSxsWzJdKV0pO2JyZWFrO2Nhc2UgNDpvLnB1c2go W3QobixyLGxbMl0sbFsxXSksdChuLHIsbFsyXSxsWzBdKV0pO2JyZWFrO2Nhc2UgNTpvLnB1 c2goW3QobixyLGxbMl0sbFsxXSksdChuLHIsbFswXSxsWzFdKV0pO2JyZWFrO2Nhc2UgNjpv LnB1c2goW3QobixyLGxbMV0sbFswXSksdChuLHIsbFsyXSxsWzBdKV0pfX1lbHNlIGlmKDI9 PT1jKXt2YXIgdTtpZigwPT09KHU9KGlbbFswXV08PDApKyhpW2xbMV1dPDwxKSl8fDM9PT11 KWNvbnRpbnVlO3N3aXRjaCh1KXtjYXNlIDA6YnJlYWs7Y2FzZSAxOm8ucHVzaChbdChuLHIs bFswXSxsWzFdKV0pO2JyZWFrO2Nhc2UgMjpvLnB1c2goW3QobixyLGxbMV0sbFswXSldKX19 fXJldHVybiBvfX0sZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxyLG4pe2Zvcih2YXIgaT0w fE1hdGgubWluKHIsbiksYT0wfE1hdGgubWF4KHIsbiksbz10WzIqaV0scz10WzIqaSsxXTtv PHM7KXt2YXIgbD1vK3M+PjEsYz1lWzIqbCsxXTtpZihjPT09YSlyZXR1cm4gbDthPGM/cz1s Om89bCsxfXJldHVybiBvfXJldHVybiBmdW5jdGlvbihlLHIsbixpKXtmb3IodmFyIGE9ZS5s ZW5ndGgsbz1bXSxzPTA7czxhOysrcyl7dmFyIGw9ZVtzXSxjPWwubGVuZ3RoO2lmKDQ9PT1j KXtpZigwPT09KHU9KGlbbFswXV08PDApKyhpW2xbMV1dPDwxKSsoaVtsWzJdXTw8MikrKGlb bFszXV08PDMpKXx8MTU9PT11KWNvbnRpbnVlO3N3aXRjaCh1KXtjYXNlIDA6YnJlYWs7Y2Fz ZSAxOm8ucHVzaChbdChuLHIsbFswXSxsWzFdKSx0KG4scixsWzBdLGxbMl0pLHQobixyLGxb MF0sbFszXSldKTticmVhaztjYXNlIDI6by5wdXNoKFt0KG4scixsWzFdLGxbMl0pLHQobixy LGxbMV0sbFswXSksdChuLHIsbFsxXSxsWzNdKV0pO2JyZWFrO2Nhc2UgMzpvLnB1c2goW3Qo bixyLGxbMV0sbFsyXSksdChuLHIsbFswXSxsWzJdKSx0KG4scixsWzBdLGxbM10pXSxbdChu LHIsbFsxXSxsWzNdKSx0KG4scixsWzFdLGxbMl0pLHQobixyLGxbMF0sbFszXSldKTticmVh aztjYXNlIDQ6by5wdXNoKFt0KG4scixsWzJdLGxbMF0pLHQobixyLGxbMl0sbFsxXSksdChu LHIsbFsyXSxsWzNdKV0pO2JyZWFrO2Nhc2UgNTpvLnB1c2goW3QobixyLGxbMF0sbFsxXSks dChuLHIsbFsyXSxsWzFdKSx0KG4scixsWzBdLGxbM10pXSxbdChuLHIsbFsyXSxsWzFdKSx0 KG4scixsWzJdLGxbM10pLHQobixyLGxbMF0sbFszXSldKTticmVhaztjYXNlIDY6by5wdXNo KFt0KG4scixsWzJdLGxbMF0pLHQobixyLGxbMV0sbFswXSksdChuLHIsbFsxXSxsWzNdKV0s W3QobixyLGxbMl0sbFszXSksdChuLHIsbFsyXSxsWzBdKSx0KG4scixsWzFdLGxbM10pXSk7 YnJlYWs7Y2FzZSA3Om8ucHVzaChbdChuLHIsbFswXSxsWzNdKSx0KG4scixsWzFdLGxbM10p LHQobixyLGxbMl0sbFszXSldKTticmVhaztjYXNlIDg6by5wdXNoKFt0KG4scixsWzNdLGxb MV0pLHQobixyLGxbM10sbFswXSksdChuLHIsbFszXSxsWzJdKV0pO2JyZWFrO2Nhc2UgOTpv LnB1c2goW3QobixyLGxbM10sbFsxXSksdChuLHIsbFswXSxsWzFdKSx0KG4scixsWzBdLGxb Ml0pXSxbdChuLHIsbFszXSxsWzJdKSx0KG4scixsWzNdLGxbMV0pLHQobixyLGxbMF0sbFsy XSldKTticmVhaztjYXNlIDEwOm8ucHVzaChbdChuLHIsbFsxXSxsWzBdKSx0KG4scixsWzNd LGxbMF0pLHQobixyLGxbMV0sbFsyXSldLFt0KG4scixsWzNdLGxbMF0pLHQobixyLGxbM10s bFsyXSksdChuLHIsbFsxXSxsWzJdKV0pO2JyZWFrO2Nhc2UgMTE6by5wdXNoKFt0KG4scixs WzFdLGxbMl0pLHQobixyLGxbMF0sbFsyXSksdChuLHIsbFszXSxsWzJdKV0pO2JyZWFrO2Nh c2UgMTI6by5wdXNoKFt0KG4scixsWzNdLGxbMF0pLHQobixyLGxbMl0sbFswXSksdChuLHIs bFsyXSxsWzFdKV0sW3QobixyLGxbM10sbFsxXSksdChuLHIsbFszXSxsWzBdKSx0KG4scixs WzJdLGxbMV0pXSk7YnJlYWs7Y2FzZSAxMzpvLnB1c2goW3QobixyLGxbMF0sbFsxXSksdChu LHIsbFsyXSxsWzFdKSx0KG4scixsWzNdLGxbMV0pXSk7YnJlYWs7Y2FzZSAxNDpvLnB1c2go W3QobixyLGxbMl0sbFswXSksdChuLHIsbFsxXSxsWzBdKSx0KG4scixsWzNdLGxbMF0pXSl9 fWVsc2UgaWYoMz09PWMpe2lmKDA9PT0odT0oaVtsWzBdXTw8MCkrKGlbbFsxXV08PDEpKyhp W2xbMl1dPDwyKSl8fDc9PT11KWNvbnRpbnVlO3N3aXRjaCh1KXtjYXNlIDA6YnJlYWs7Y2Fz ZSAxOm8ucHVzaChbdChuLHIsbFswXSxsWzJdKSx0KG4scixsWzBdLGxbMV0pXSk7YnJlYWs7 Y2FzZSAyOm8ucHVzaChbdChuLHIsbFsxXSxsWzBdKSx0KG4scixsWzFdLGxbMl0pXSk7YnJl YWs7Y2FzZSAzOm8ucHVzaChbdChuLHIsbFswXSxsWzJdKSx0KG4scixsWzFdLGxbMl0pXSk7 YnJlYWs7Y2FzZSA0Om8ucHVzaChbdChuLHIsbFsyXSxsWzFdKSx0KG4scixsWzJdLGxbMF0p XSk7YnJlYWs7Y2FzZSA1Om8ucHVzaChbdChuLHIsbFsyXSxsWzFdKSx0KG4scixsWzBdLGxb MV0pXSk7YnJlYWs7Y2FzZSA2Om8ucHVzaChbdChuLHIsbFsxXSxsWzBdKSx0KG4scixsWzJd LGxbMF0pXSl9fWVsc2UgaWYoMj09PWMpe3ZhciB1O2lmKDA9PT0odT0oaVtsWzBdXTw8MCkr KGlbbFsxXV08PDEpKXx8Mz09PXUpY29udGludWU7c3dpdGNoKHUpe2Nhc2UgMDpicmVhaztj YXNlIDE6by5wdXNoKFt0KG4scixsWzBdLGxbMV0pXSk7YnJlYWs7Y2FzZSAyOm8ucHVzaChb dChuLHIsbFsxXSxsWzBdKV0pfX19cmV0dXJuIG99fV19LHt9XSwyOTM6W2Z1bmN0aW9uKHQs ZSxyKXsidXNlIHN0cmljdCI7dmFyIG49dCgiYml0LXR3aWRkbGUiKSxpPXQoInVuaW9uLWZp bmQiKTtmdW5jdGlvbiBhKHQsZSl7dmFyIHI9dC5sZW5ndGgsbj10Lmxlbmd0aC1lLmxlbmd0 aCxpPU1hdGgubWluO2lmKG4pcmV0dXJuIG47c3dpdGNoKHIpe2Nhc2UgMDpyZXR1cm4gMDtj YXNlIDE6cmV0dXJuIHRbMF0tZVswXTtjYXNlIDI6cmV0dXJuKHM9dFswXSt0WzFdLWVbMF0t ZVsxXSl8fGkodFswXSx0WzFdKS1pKGVbMF0sZVsxXSk7Y2FzZSAzOnZhciBhPXRbMF0rdFsx XSxvPWVbMF0rZVsxXTtpZihzPWErdFsyXS0obytlWzJdKSlyZXR1cm4gczt2YXIgcyxsPWko dFswXSx0WzFdKSxjPWkoZVswXSxlWzFdKTtyZXR1cm4ocz1pKGwsdFsyXSktaShjLGVbMl0p KXx8aShsK3RbMl0sYSktaShjK2VbMl0sbyk7ZGVmYXVsdDp2YXIgdT10LnNsaWNlKDApO3Uu c29ydCgpO3ZhciBmPWUuc2xpY2UoMCk7Zi5zb3J0KCk7Zm9yKHZhciBoPTA7aDxyOysraClp ZihuPXVbaF0tZltoXSlyZXR1cm4gbjtyZXR1cm4gMH19ZnVuY3Rpb24gbyh0LGUpe3JldHVy biBhKHRbMF0sZVswXSl9ZnVuY3Rpb24gcyh0LGUpe2lmKGUpe2Zvcih2YXIgcj10Lmxlbmd0 aCxuPW5ldyBBcnJheShyKSxpPTA7aTxyOysraSluW2ldPVt0W2ldLGVbaV1dO24uc29ydChv KTtmb3IoaT0wO2k8cjsrK2kpdFtpXT1uW2ldWzBdLGVbaV09bltpXVsxXTtyZXR1cm4gdH1y ZXR1cm4gdC5zb3J0KGEpLHR9ZnVuY3Rpb24gbCh0KXtpZigwPT09dC5sZW5ndGgpcmV0dXJu W107Zm9yKHZhciBlPTEscj10Lmxlbmd0aCxuPTE7bjxyOysrbil7dmFyIGk9dFtuXTtpZihh KGksdFtuLTFdKSl7aWYobj09PWUpe2UrKztjb250aW51ZX10W2UrK109aX19cmV0dXJuIHQu bGVuZ3RoPWUsdH1mdW5jdGlvbiBjKHQsZSl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aC0xLGk9 LTE7cjw9bjspe3ZhciBvPXIrbj4+MSxzPWEodFtvXSxlKTtzPD0wPygwPT09cyYmKGk9byks cj1vKzEpOnM+MCYmKG49by0xKX1yZXR1cm4gaX1mdW5jdGlvbiB1KHQsZSl7Zm9yKHZhciBy PW5ldyBBcnJheSh0Lmxlbmd0aCksaT0wLG89ci5sZW5ndGg7aTxvOysraSlyW2ldPVtdO2Zv cih2YXIgcz1bXSxsPShpPTAsZS5sZW5ndGgpO2k8bDsrK2kpZm9yKHZhciB1PWVbaV0sZj11 Lmxlbmd0aCxoPTEscD0xPDxmO2g8cDsrK2gpe3MubGVuZ3RoPW4ucG9wQ291bnQoaCk7Zm9y KHZhciBkPTAsbT0wO208ZjsrK20paCYxPDxtJiYoc1tkKytdPXVbbV0pO3ZhciBnPWModCxz KTtpZighKGc8MCkpZm9yKDtyW2crK10ucHVzaChpKSwhKGc+PXQubGVuZ3RofHwwIT09YSh0 W2ddLHMpKTspO31yZXR1cm4gcn1mdW5jdGlvbiBmKHQsZSl7aWYoZTwwKXJldHVybltdO2Zv cih2YXIgcj1bXSxpPSgxPDxlKzEpLTEsYT0wO2E8dC5sZW5ndGg7KythKWZvcih2YXIgbz10 W2FdLGw9aTtsPDE8PG8ubGVuZ3RoO2w9bi5uZXh0Q29tYmluYXRpb24obCkpe2Zvcih2YXIg Yz1uZXcgQXJyYXkoZSsxKSx1PTAsZj0wO2Y8by5sZW5ndGg7KytmKWwmMTw8ZiYmKGNbdSsr XT1vW2ZdKTtyLnB1c2goYyl9cmV0dXJuIHMocil9ci5kaW1lbnNpb249ZnVuY3Rpb24odCl7 Zm9yKHZhciBlPTAscj1NYXRoLm1heCxuPTAsaT10Lmxlbmd0aDtuPGk7KytuKWU9cihlLHRb bl0ubGVuZ3RoKTtyZXR1cm4gZS0xfSxyLmNvdW50VmVydGljZXM9ZnVuY3Rpb24odCl7Zm9y KHZhciBlPS0xLHI9TWF0aC5tYXgsbj0wLGk9dC5sZW5ndGg7bjxpOysrbilmb3IodmFyIGE9 dFtuXSxvPTAscz1hLmxlbmd0aDtvPHM7KytvKWU9cihlLGFbb10pO3JldHVybiBlKzF9LHIu Y2xvbmVDZWxscz1mdW5jdGlvbih0KXtmb3IodmFyIGU9bmV3IEFycmF5KHQubGVuZ3RoKSxy PTAsbj10Lmxlbmd0aDtyPG47KytyKWVbcl09dFtyXS5zbGljZSgwKTtyZXR1cm4gZX0sci5j b21wYXJlQ2VsbHM9YSxyLm5vcm1hbGl6ZT1zLHIudW5pcXVlPWwsci5maW5kQ2VsbD1jLHIu aW5jaWRlbmNlPXUsci5kdWFsPWZ1bmN0aW9uKHQsZSl7aWYoIWUpcmV0dXJuIHUobChmKHQs MCkpLHQpO2Zvcih2YXIgcj1uZXcgQXJyYXkoZSksbj0wO248ZTsrK24pcltuXT1bXTtuPTA7 Zm9yKHZhciBpPXQubGVuZ3RoO248aTsrK24pZm9yKHZhciBhPXRbbl0sbz0wLHM9YS5sZW5n dGg7bzxzOysrbylyW2Fbb11dLnB1c2gobik7cmV0dXJuIHJ9LHIuZXhwbG9kZT1mdW5jdGlv bih0KXtmb3IodmFyIGU9W10scj0wLG49dC5sZW5ndGg7cjxuOysrcilmb3IodmFyIGk9dFty XSxhPTB8aS5sZW5ndGgsbz0xLGw9MTw8YTtvPGw7KytvKXtmb3IodmFyIGM9W10sdT0wO3U8 YTsrK3Upbz4+PnUmMSYmYy5wdXNoKGlbdV0pO2UucHVzaChjKX1yZXR1cm4gcyhlKX0sci5z a2VsZXRvbj1mLHIuYm91bmRhcnk9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLHI9MCxuPXQu bGVuZ3RoO3I8bjsrK3IpZm9yKHZhciBpPXRbcl0sYT0wLG89aS5sZW5ndGg7YTxvOysrYSl7 Zm9yKHZhciBsPW5ldyBBcnJheShpLmxlbmd0aC0xKSxjPTAsdT0wO2M8bzsrK2MpYyE9PWEm JihsW3UrK109aVtjXSk7ZS5wdXNoKGwpfXJldHVybiBzKGUpfSxyLmNvbm5lY3RlZENvbXBv bmVudHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT9mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1u ZXcgaShlKSxuPTA7bjx0Lmxlbmd0aDsrK24pZm9yKHZhciBhPXRbbl0sbz0wO288YS5sZW5n dGg7KytvKWZvcih2YXIgcz1vKzE7czxhLmxlbmd0aDsrK3Mpci5saW5rKGFbb10sYVtzXSk7 dmFyIGw9W10sYz1yLnJhbmtzO2ZvcihuPTA7bjxjLmxlbmd0aDsrK24pY1tuXT0tMTtmb3Io bj0wO248dC5sZW5ndGg7KytuKXt2YXIgdT1yLmZpbmQodFtuXVswXSk7Y1t1XTwwPyhjW3Vd PWwubGVuZ3RoLGwucHVzaChbdFtuXS5zbGljZSgwKV0pKTpsW2NbdV1dLnB1c2godFtuXS5z bGljZSgwKSl9cmV0dXJuIGx9KHQsZSk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPWwocyhmKHQs MCkpKSxyPW5ldyBpKGUubGVuZ3RoKSxuPTA7bjx0Lmxlbmd0aDsrK24pZm9yKHZhciBhPXRb bl0sbz0wO288YS5sZW5ndGg7KytvKWZvcih2YXIgdT1jKGUsW2Fbb11dKSxoPW8rMTtoPGEu bGVuZ3RoOysraClyLmxpbmsodSxjKGUsW2FbaF1dKSk7dmFyIHA9W10sZD1yLnJhbmtzO2Zv cihuPTA7bjxkLmxlbmd0aDsrK24pZFtuXT0tMTtmb3Iobj0wO248dC5sZW5ndGg7KytuKXt2 YXIgbT1yLmZpbmQoYyhlLFt0W25dWzBdXSkpO2RbbV08MD8oZFttXT1wLmxlbmd0aCxwLnB1 c2goW3Rbbl0uc2xpY2UoMCldKSk6cFtkW21dXS5wdXNoKHRbbl0uc2xpY2UoMCkpfXJldHVy biBwfSh0KX19LHsiYml0LXR3aWRkbGUiOjMyLCJ1bmlvbi1maW5kIjozMDl9XSwyOTQ6W2Z1 bmN0aW9uKHQsZSxyKXthcmd1bWVudHNbNF1bMzJdWzBdLmFwcGx5KHIsYXJndW1lbnRzKX0s e2R1cDozMn1dLDI5NTpbZnVuY3Rpb24odCxlLHIpe2FyZ3VtZW50c1s0XVsyOTNdWzBdLmFw cGx5KHIsYXJndW1lbnRzKX0seyJiaXQtdHdpZGRsZSI6Mjk0LGR1cDoyOTMsInVuaW9uLWZp bmQiOjI5Nn1dLDI5NjpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBu KHQpe3RoaXMucm9vdHM9bmV3IEFycmF5KHQpLHRoaXMucmFua3M9bmV3IEFycmF5KHQpO2Zv cih2YXIgZT0wO2U8dDsrK2UpdGhpcy5yb290c1tlXT1lLHRoaXMucmFua3NbZV09MH1lLmV4 cG9ydHM9bixuLnByb3RvdHlwZS5sZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yb290 cy5sZW5ndGh9LG4ucHJvdG90eXBlLm1ha2VTZXQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnJv b3RzLmxlbmd0aDtyZXR1cm4gdGhpcy5yb290cy5wdXNoKHQpLHRoaXMucmFua3MucHVzaCgw KSx0fSxuLnByb3RvdHlwZS5maW5kPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnJvb3Rz O2VbdF0hPT10Oyl7dmFyIHI9ZVt0XTtlW3RdPWVbcl0sdD1yfXJldHVybiB0fSxuLnByb3Rv dHlwZS5saW5rPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5maW5kKHQpLG49dGhpcy5maW5k KGUpO2lmKHIhPT1uKXt2YXIgaT10aGlzLnJhbmtzLGE9dGhpcy5yb290cyxvPWlbcl0scz1p W25dO288cz9hW3JdPW46czxvP2Fbbl09cjooYVtuXT1yLCsraVtyXSl9fX0se31dLDI5Nzpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIp e2Zvcih2YXIgYT1lLmxlbmd0aCxvPXQubGVuZ3RoLHM9bmV3IEFycmF5KGEpLGw9bmV3IEFy cmF5KGEpLGM9bmV3IEFycmF5KGEpLHU9bmV3IEFycmF5KGEpLGY9MDtmPGE7KytmKXNbZl09 bFtmXT0tMSxjW2ZdPTEvMCx1W2ZdPSExO2ZvcihmPTA7ZjxvOysrZil7dmFyIGg9dFtmXTtp ZigyIT09aC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJJbnB1dCBtdXN0IGJlIGEgZ3JhcGgi KTt2YXIgcD1oWzFdLGQ9aFswXTstMSE9PWxbZF0/bFtkXT0tMjpsW2RdPXAsLTEhPT1zW3Bd P3NbcF09LTI6c1twXT1kfWZ1bmN0aW9uIG0odCl7aWYodVt0XSlyZXR1cm4gMS8wO3ZhciBy LGksYSxvLGMsZj1zW3RdLGg9bFt0XTtyZXR1cm4gZjwwfHxoPDA/MS8wOihyPWVbdF0saT1l W2ZdLGE9ZVtoXSxvPU1hdGguYWJzKG4ocixpLGEpKSxjPU1hdGguc3FydChNYXRoLnBvdyhp WzBdLWFbMF0sMikrTWF0aC5wb3coaVsxXS1hWzFdLDIpKSxvL2MpfWZ1bmN0aW9uIGcodCxl KXt2YXIgcj1rW3RdLG49a1tlXTtrW3RdPW4sa1tlXT1yLEFbcl09ZSxBW25dPXR9ZnVuY3Rp b24gdih0KXtyZXR1cm4gY1trW3RdXX1mdW5jdGlvbiB5KHQpe3JldHVybiAxJnQ/dC0xPj4x Oih0Pj4xKS0xfWZ1bmN0aW9uIHgodCl7Zm9yKHZhciBlPXYodCk7Oyl7dmFyIHI9ZSxuPTIq dCsxLGk9MioodCsxKSxhPXQ7aWYobjxNKXt2YXIgbz12KG4pO288ciYmKGE9bixyPW8pfWlm KGk8TSl2KGkpPHImJihhPWkpO2lmKGE9PT10KXJldHVybiB0O2codCxhKSx0PWF9fWZ1bmN0 aW9uIGIodCl7Zm9yKHZhciBlPXYodCk7dD4wOyl7dmFyIHI9eSh0KTtpZihyPj0wKWlmKGU8 dihyKSl7Zyh0LHIpLHQ9cjtjb250aW51ZX1yZXR1cm4gdH19ZnVuY3Rpb24gXygpe2lmKE0+ MCl7dmFyIHQ9a1swXTtyZXR1cm4gZygwLE0tMSksTS09MSx4KDApLHR9cmV0dXJuLTF9ZnVu Y3Rpb24gdyh0LGUpe3ZhciByPWtbdF07cmV0dXJuIGNbcl09PT1lP3Q6KGNbcl09LTEvMCxi KHQpLF8oKSxjW3JdPWUsYigoTSs9MSktMSkpfWZ1bmN0aW9uIFQodCl7aWYoIXVbdF0pe3Vb dF09ITA7dmFyIGU9c1t0XSxyPWxbdF07c1tyXT49MCYmKHNbcl09ZSksbFtlXT49MCYmKGxb ZV09ciksQVtlXT49MCYmdyhBW2VdLG0oZSkpLEFbcl0+PTAmJncoQVtyXSxtKHIpKX19dmFy IGs9W10sQT1uZXcgQXJyYXkoYSk7Zm9yKGY9MDtmPGE7KytmKXsoY1tmXT1tKGYpKTwxLzA/ KEFbZl09ay5sZW5ndGgsay5wdXNoKGYpKTpBW2ZdPS0xfXZhciBNPWsubGVuZ3RoO2Zvcihm PU0+PjE7Zj49MDstLWYpeChmKTtmb3IoOzspe3ZhciBTPV8oKTtpZihTPDB8fGNbU10+cili cmVhaztUKFMpfXZhciBFPVtdO2ZvcihmPTA7ZjxhOysrZil1W2ZdfHwoQVtmXT1FLmxlbmd0 aCxFLnB1c2goZVtmXS5zbGljZSgpKSk7RS5sZW5ndGg7ZnVuY3Rpb24gTCh0LGUpe2lmKHRb ZV08MClyZXR1cm4gZTt2YXIgcj1lLG49ZTtkb3t2YXIgaT10W25dO2lmKCF1W25dfHxpPDB8 fGk9PT1uKWJyZWFrO2lmKGk9dFtuPWldLCF1W25dfHxpPDB8fGk9PT1uKWJyZWFrO249aSxy PXRbcl19d2hpbGUociE9PW4pO2Zvcih2YXIgYT1lO2EhPT1uO2E9dFthXSl0W2FdPW47cmV0 dXJuIG59dmFyIEM9W107cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9TChz LHRbMF0pLHI9TChsLHRbMV0pO2lmKGU+PTAmJnI+PTAmJmUhPT1yKXt2YXIgbj1BW2VdLGk9 QVtyXTtuIT09aSYmQy5wdXNoKFtuLGldKX19KSksaS51bmlxdWUoaS5ub3JtYWxpemUoQykp LHtwb3NpdGlvbnM6RSxlZGdlczpDfX07dmFyIG49dCgicm9idXN0LW9yaWVudGF0aW9uIiks aT10KCJzaW1wbGljaWFsLWNvbXBsZXgiKX0seyJyb2J1c3Qtb3JpZW50YXRpb24iOjI4NCwi c2ltcGxpY2lhbC1jb21wbGV4IjoyOTV9XSwyOTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0 cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsYSxvLHM7aWYoZVswXVswXTxl WzFdWzBdKXI9ZVswXSxhPWVbMV07ZWxzZXtpZighKGVbMF1bMF0+ZVsxXVswXSkpcmV0dXJu IGkoZSx0KTtyPWVbMV0sYT1lWzBdfWlmKHRbMF1bMF08dFsxXVswXSlvPXRbMF0scz10WzFd O2Vsc2V7aWYoISh0WzBdWzBdPnRbMV1bMF0pKXJldHVybi1pKHQsZSk7bz10WzFdLHM9dFsw XX12YXIgbD1uKHIsYSxzKSxjPW4ocixhLG8pO2lmKGw8MCl7aWYoYzw9MClyZXR1cm4gbH1l bHNlIGlmKGw+MCl7aWYoYz49MClyZXR1cm4gbH1lbHNlIGlmKGMpcmV0dXJuIGM7aWYobD1u KHMsbyxhKSxjPW4ocyxvLHIpLGw8MCl7aWYoYzw9MClyZXR1cm4gbH1lbHNlIGlmKGw+MCl7 aWYoYz49MClyZXR1cm4gbH1lbHNlIGlmKGMpcmV0dXJuIGM7cmV0dXJuIGFbMF0tc1swXX07 dmFyIG49dCgicm9idXN0LW9yaWVudGF0aW9uIik7ZnVuY3Rpb24gaSh0LGUpe3ZhciByLGks YSxvO2lmKGVbMF1bMF08ZVsxXVswXSlyPWVbMF0saT1lWzFdO2Vsc2V7aWYoIShlWzBdWzBd PmVbMV1bMF0pKXt2YXIgcz1NYXRoLm1pbih0WzBdWzFdLHRbMV1bMV0pLGw9TWF0aC5tYXgo dFswXVsxXSx0WzFdWzFdKSxjPU1hdGgubWluKGVbMF1bMV0sZVsxXVsxXSksdT1NYXRoLm1h eChlWzBdWzFdLGVbMV1bMV0pO3JldHVybiBsPGM/bC1jOnM+dT9zLXU6bC11fXI9ZVsxXSxp PWVbMF19dFswXVsxXTx0WzFdWzFdPyhhPXRbMF0sbz10WzFdKTooYT10WzFdLG89dFswXSk7 dmFyIGY9bihpLHIsYSk7cmV0dXJuIGZ8fCgoZj1uKGkscixvKSl8fG8taSl9fSx7InJvYnVz dC1vcmllbnRhdGlvbiI6Mjg0fV0sMjk5OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3Qi O2UuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGgscj0yKmUsbj1uZXcg QXJyYXkociksYT0wO2E8ZTsrK2Epe3ZhciBsPXRbYV0sYz1sWzBdWzBdPGxbMV1bMF07blsy KmFdPW5ldyBmKGxbMF1bMF0sbCxjLGEpLG5bMiphKzFdPW5ldyBmKGxbMV1bMF0sbCwhYyxh KX1uLnNvcnQoKGZ1bmN0aW9uKHQsZSl7dmFyIHI9dC54LWUueDtyZXR1cm4gcnx8KChyPXQu Y3JlYXRlLWUuY3JlYXRlKXx8TWF0aC5taW4odC5zZWdtZW50WzBdWzFdLHQuc2VnbWVudFsx XVsxXSktTWF0aC5taW4oZS5zZWdtZW50WzBdWzFdLGUuc2VnbWVudFsxXVsxXSkpfSkpO3Zh ciBoPWkobykscD1bXSxkPVtdLG09W107Zm9yKGE9MDthPHI7KXtmb3IodmFyIGc9blthXS54 LHY9W107YTxyOyl7dmFyIHk9blthXTtpZih5LnghPT1nKWJyZWFrO2ErPTEseS5zZWdtZW50 WzBdWzBdPT09eS54JiZ5LnNlZ21lbnRbMV1bMF09PT15Lng/eS5jcmVhdGUmJih5LnNlZ21l bnRbMF1bMV08eS5zZWdtZW50WzFdWzFdPyh2LnB1c2gobmV3IHUoeS5zZWdtZW50WzBdWzFd LHkuaW5kZXgsITAsITApKSx2LnB1c2gobmV3IHUoeS5zZWdtZW50WzFdWzFdLHkuaW5kZXgs ITEsITEpKSk6KHYucHVzaChuZXcgdSh5LnNlZ21lbnRbMV1bMV0seS5pbmRleCwhMCwhMSkp LHYucHVzaChuZXcgdSh5LnNlZ21lbnRbMF1bMV0seS5pbmRleCwhMSwhMCkpKSk6aD15LmNy ZWF0ZT9oLmluc2VydCh5LnNlZ21lbnQseS5pbmRleCk6aC5yZW1vdmUoeS5zZWdtZW50KX1w LnB1c2goaC5yb290KSxkLnB1c2goZyksbS5wdXNoKHYpfXJldHVybiBuZXcgcyhwLGQsbSl9 O3ZhciBuPXQoImJpbmFyeS1zZWFyY2gtYm91bmRzIiksaT10KCJmdW5jdGlvbmFsLXJlZC1i bGFjay10cmVlIiksYT10KCJyb2J1c3Qtb3JpZW50YXRpb24iKSxvPXQoIi4vbGliL29yZGVy LXNlZ21lbnRzIik7ZnVuY3Rpb24gcyh0LGUscil7dGhpcy5zbGFicz10LHRoaXMuY29vcmRp bmF0ZXM9ZSx0aGlzLmhvcml6b250YWw9cn1mdW5jdGlvbiBsKHQsZSl7cmV0dXJuIHQueS1l fWZ1bmN0aW9uIGModCxlKXtmb3IodmFyIHI9bnVsbDt0Oyl7dmFyIG4saSxvPXQua2V5O29b MF1bMF08b1sxXVswXT8obj1vWzBdLGk9b1sxXSk6KG49b1sxXSxpPW9bMF0pO3ZhciBzPWEo bixpLGUpO2lmKHM8MCl0PXQubGVmdDtlbHNlIGlmKHM+MClpZihlWzBdIT09b1sxXVswXSly PXQsdD10LnJpZ2h0O2Vsc2V7aWYobD1jKHQucmlnaHQsZSkpcmV0dXJuIGw7dD10LmxlZnR9 ZWxzZXtpZihlWzBdIT09b1sxXVswXSlyZXR1cm4gdDt2YXIgbDtpZihsPWModC5yaWdodCxl KSlyZXR1cm4gbDt0PXQubGVmdH19cmV0dXJuIHJ9ZnVuY3Rpb24gdSh0LGUscixuKXt0aGlz Lnk9dCx0aGlzLmluZGV4PWUsdGhpcy5zdGFydD1yLHRoaXMuY2xvc2VkPW59ZnVuY3Rpb24g Zih0LGUscixuKXt0aGlzLng9dCx0aGlzLnNlZ21lbnQ9ZSx0aGlzLmNyZWF0ZT1yLHRoaXMu aW5kZXg9bn1zLnByb3RvdHlwZS5jYXN0VXA9ZnVuY3Rpb24odCl7dmFyIGU9bi5sZSh0aGlz LmNvb3JkaW5hdGVzLHRbMF0pO2lmKGU8MClyZXR1cm4tMTt0aGlzLnNsYWJzW2VdO3ZhciBy PWModGhpcy5zbGFic1tlXSx0KSxpPS0xO2lmKHImJihpPXIudmFsdWUpLHRoaXMuY29vcmRp bmF0ZXNbZV09PT10WzBdKXt2YXIgcz1udWxsO2lmKHImJihzPXIua2V5KSxlPjApe3ZhciB1 PWModGhpcy5zbGFic1tlLTFdLHQpO3UmJihzP28odS5rZXkscyk+MCYmKHM9dS5rZXksaT11 LnZhbHVlKTooaT11LnZhbHVlLHM9dS5rZXkpKX12YXIgZj10aGlzLmhvcml6b250YWxbZV07 aWYoZi5sZW5ndGg+MCl7dmFyIGg9bi5nZShmLHRbMV0sbCk7aWYoaDxmLmxlbmd0aCl7dmFy IHA9ZltoXTtpZih0WzFdPT09cC55KXtpZihwLmNsb3NlZClyZXR1cm4gcC5pbmRleDtmb3Io O2g8Zi5sZW5ndGgtMSYmZltoKzFdLnk9PT10WzFdOylpZigocD1mW2grPTFdKS5jbG9zZWQp cmV0dXJuIHAuaW5kZXg7aWYocC55PT09dFsxXSYmIXAuc3RhcnQpe2lmKChoKz0xKT49Zi5s ZW5ndGgpcmV0dXJuIGk7cD1mW2hdfX1pZihwLnN0YXJ0KWlmKHMpe3ZhciBkPWEoc1swXSxz WzFdLFt0WzBdLHAueV0pO3NbMF1bMF0+c1sxXVswXSYmKGQ9LWQpLGQ+MCYmKGk9cC5pbmRl eCl9ZWxzZSBpPXAuaW5kZXg7ZWxzZSBwLnkhPT10WzFdJiYoaT1wLmluZGV4KX19fXJldHVy biBpfX0seyIuL2xpYi9vcmRlci1zZWdtZW50cyI6Mjk4LCJiaW5hcnktc2VhcmNoLWJvdW5k cyI6MzEsImZ1bmN0aW9uYWwtcmVkLWJsYWNrLXRyZWUiOjY5LCJyb2J1c3Qtb3JpZW50YXRp b24iOjI4NH1dLDMwMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJy b2J1c3QtZG90LXByb2R1Y3QiKSxpPXQoInJvYnVzdC1zdW0iKTtmdW5jdGlvbiBhKHQsZSl7 dmFyIHI9aShuKHQsZSksW2VbZS5sZW5ndGgtMV1dKTtyZXR1cm4gcltyLmxlbmd0aC0xXX1m dW5jdGlvbiBvKHQsZSxyLG4pe3ZhciBpPS1lLyhuLWUpO2k8MD9pPTA6aT4xJiYoaT0xKTtm b3IodmFyIGE9MS1pLG89dC5sZW5ndGgscz1uZXcgQXJyYXkobyksbD0wO2w8bzsrK2wpc1ts XT1pKnRbbF0rYSpyW2xdO3JldHVybiBzfWUuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2 YXIgcj1bXSxuPVtdLGk9YSh0W3QubGVuZ3RoLTFdLGUpLHM9dFt0Lmxlbmd0aC0xXSxsPXRb MF0sYz0wO2M8dC5sZW5ndGg7KytjLHM9bCl7dmFyIHU9YShsPXRbY10sZSk7aWYoaTwwJiZ1 PjB8fGk+MCYmdTwwKXt2YXIgZj1vKHMsdSxsLGkpO3IucHVzaChmKSxuLnB1c2goZi5zbGlj ZSgpKX11PDA/bi5wdXNoKGwuc2xpY2UoKSk6dT4wP3IucHVzaChsLnNsaWNlKCkpOihyLnB1 c2gobC5zbGljZSgpKSxuLnB1c2gobC5zbGljZSgpKSksaT11fXJldHVybntwb3NpdGl2ZTpy LG5lZ2F0aXZlOm59fSxlLmV4cG9ydHMucG9zaXRpdmU9ZnVuY3Rpb24odCxlKXtmb3IodmFy IHI9W10sbj1hKHRbdC5sZW5ndGgtMV0sZSksaT10W3QubGVuZ3RoLTFdLHM9dFswXSxsPTA7 bDx0Lmxlbmd0aDsrK2wsaT1zKXt2YXIgYz1hKHM9dFtsXSxlKTsobjwwJiZjPjB8fG4+MCYm YzwwKSYmci5wdXNoKG8oaSxjLHMsbikpLGM+PTAmJnIucHVzaChzLnNsaWNlKCkpLG49Y31y ZXR1cm4gcn0sZS5leHBvcnRzLm5lZ2F0aXZlPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPVtd LG49YSh0W3QubGVuZ3RoLTFdLGUpLGk9dFt0Lmxlbmd0aC0xXSxzPXRbMF0sbD0wO2w8dC5s ZW5ndGg7KytsLGk9cyl7dmFyIGM9YShzPXRbbF0sZSk7KG48MCYmYz4wfHxuPjAmJmM8MCkm JnIucHVzaChvKGksYyxzLG4pKSxjPD0wJiZyLnB1c2gocy5zbGljZSgpKSxuPWN9cmV0dXJu IHJ9fSx7InJvYnVzdC1kb3QtcHJvZHVjdCI6MjgxLCJyb2J1c3Qtc3VtIjoyODl9XSwzMDE6 W2Z1bmN0aW9uKHQsZSxyKXshZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIHQ9e25vdF9z dHJpbmc6L1tec10vLG5vdF9ib29sOi9bXnRdLyxub3RfdHlwZTovW15UXS8sbm90X3ByaW1p dGl2ZTovW152XS8sbnVtYmVyOi9bZGllZmddLyxudW1lcmljX2FyZzovW2JjZGllZmd1eFhd Lyxqc29uOi9bal0vLG5vdF9qc29uOi9bXmpdLyx0ZXh0Oi9eW15ceDI1XSsvLG1vZHVsbzov Xlx4MjV7Mn0vLHBsYWNlaG9sZGVyOi9eXHgyNSg/OihbMS05XVxkKilcJHxcKChbXildKylc KSk/KFwrKT8oMHwnW14kXSk/KC0pPyhcZCspPyg/OlwuKFxkKykpPyhbYi1naWpvc3RUdXZ4 WF0pLyxrZXk6L14oW2Etel9dW2Etel9cZF0qKS9pLGtleV9hY2Nlc3M6L15cLihbYS16X11b YS16X1xkXSopL2ksaW5kZXhfYWNjZXNzOi9eXFsoXGQrKVxdLyxzaWduOi9eWystXS99O2Z1 bmN0aW9uIGUodCl7cmV0dXJuIGkobyh0KSxhcmd1bWVudHMpfWZ1bmN0aW9uIG4odCxyKXty ZXR1cm4gZS5hcHBseShudWxsLFt0XS5jb25jYXQocnx8W10pKX1mdW5jdGlvbiBpKHIsbil7 dmFyIGksYSxvLHMsbCxjLHUsZixoLHA9MSxkPXIubGVuZ3RoLG09IiI7Zm9yKGE9MDthPGQ7 YSsrKWlmKCJzdHJpbmciPT10eXBlb2YgclthXSltKz1yW2FdO2Vsc2UgaWYoIm9iamVjdCI9 PXR5cGVvZiByW2FdKXtpZigocz1yW2FdKS5rZXlzKWZvcihpPW5bcF0sbz0wO288cy5rZXlz Lmxlbmd0aDtvKyspe2lmKG51bGw9PWkpdGhyb3cgbmV3IEVycm9yKGUoJ1tzcHJpbnRmXSBD YW5ub3QgYWNjZXNzIHByb3BlcnR5ICIlcyIgb2YgdW5kZWZpbmVkIHZhbHVlICIlcyInLHMu a2V5c1tvXSxzLmtleXNbby0xXSkpO2k9aVtzLmtleXNbb11dfWVsc2UgaT1zLnBhcmFtX25v P25bcy5wYXJhbV9ub106bltwKytdO2lmKHQubm90X3R5cGUudGVzdChzLnR5cGUpJiZ0Lm5v dF9wcmltaXRpdmUudGVzdChzLnR5cGUpJiZpIGluc3RhbmNlb2YgRnVuY3Rpb24mJihpPWko KSksdC5udW1lcmljX2FyZy50ZXN0KHMudHlwZSkmJiJudW1iZXIiIT10eXBlb2YgaSYmaXNO YU4oaSkpdGhyb3cgbmV3IFR5cGVFcnJvcihlKCJbc3ByaW50Zl0gZXhwZWN0aW5nIG51bWJl ciBidXQgZm91bmQgJVQiLGkpKTtzd2l0Y2godC5udW1iZXIudGVzdChzLnR5cGUpJiYoZj1p Pj0wKSxzLnR5cGUpe2Nhc2UiYiI6aT1wYXJzZUludChpLDEwKS50b1N0cmluZygyKTticmVh aztjYXNlImMiOmk9U3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChpLDEwKSk7YnJlYWs7 Y2FzZSJkIjpjYXNlImkiOmk9cGFyc2VJbnQoaSwxMCk7YnJlYWs7Y2FzZSJqIjppPUpTT04u c3RyaW5naWZ5KGksbnVsbCxzLndpZHRoP3BhcnNlSW50KHMud2lkdGgpOjApO2JyZWFrO2Nh c2UiZSI6aT1zLnByZWNpc2lvbj9wYXJzZUZsb2F0KGkpLnRvRXhwb25lbnRpYWwocy5wcmVj aXNpb24pOnBhcnNlRmxvYXQoaSkudG9FeHBvbmVudGlhbCgpO2JyZWFrO2Nhc2UiZiI6aT1z LnByZWNpc2lvbj9wYXJzZUZsb2F0KGkpLnRvRml4ZWQocy5wcmVjaXNpb24pOnBhcnNlRmxv YXQoaSk7YnJlYWs7Y2FzZSJnIjppPXMucHJlY2lzaW9uP1N0cmluZyhOdW1iZXIoaS50b1By ZWNpc2lvbihzLnByZWNpc2lvbikpKTpwYXJzZUZsb2F0KGkpO2JyZWFrO2Nhc2UibyI6aT0o cGFyc2VJbnQoaSwxMCk+Pj4wKS50b1N0cmluZyg4KTticmVhaztjYXNlInMiOmk9U3RyaW5n KGkpLGk9cy5wcmVjaXNpb24/aS5zdWJzdHJpbmcoMCxzLnByZWNpc2lvbik6aTticmVhaztj YXNlInQiOmk9U3RyaW5nKCEhaSksaT1zLnByZWNpc2lvbj9pLnN1YnN0cmluZygwLHMucHJl Y2lzaW9uKTppO2JyZWFrO2Nhc2UiVCI6aT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNh bGwoaSkuc2xpY2UoOCwtMSkudG9Mb3dlckNhc2UoKSxpPXMucHJlY2lzaW9uP2kuc3Vic3Ry aW5nKDAscy5wcmVjaXNpb24pOmk7YnJlYWs7Y2FzZSJ1IjppPXBhcnNlSW50KGksMTApPj4+ MDticmVhaztjYXNlInYiOmk9aS52YWx1ZU9mKCksaT1zLnByZWNpc2lvbj9pLnN1YnN0cmlu ZygwLHMucHJlY2lzaW9uKTppO2JyZWFrO2Nhc2UieCI6aT0ocGFyc2VJbnQoaSwxMCk+Pj4w KS50b1N0cmluZygxNik7YnJlYWs7Y2FzZSJYIjppPShwYXJzZUludChpLDEwKT4+PjApLnRv U3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfXQuanNvbi50ZXN0KHMudHlwZSk/bSs9aTooIXQu bnVtYmVyLnRlc3Qocy50eXBlKXx8ZiYmIXMuc2lnbj9oPSIiOihoPWY/IisiOiItIixpPWku dG9TdHJpbmcoKS5yZXBsYWNlKHQuc2lnbiwiIikpLGM9cy5wYWRfY2hhcj8iMCI9PT1zLnBh ZF9jaGFyPyIwIjpzLnBhZF9jaGFyLmNoYXJBdCgxKToiICIsdT1zLndpZHRoLShoK2kpLmxl bmd0aCxsPXMud2lkdGgmJnU+MD9jLnJlcGVhdCh1KToiIixtKz1zLmFsaWduP2graStsOiIw Ij09PWM/aCtsK2k6bCtoK2kpfXJldHVybiBtfXZhciBhPU9iamVjdC5jcmVhdGUobnVsbCk7 ZnVuY3Rpb24gbyhlKXtpZihhW2VdKXJldHVybiBhW2VdO2Zvcih2YXIgcixuPWUsaT1bXSxv PTA7bjspe2lmKG51bGwhPT0ocj10LnRleHQuZXhlYyhuKSkpaS5wdXNoKHJbMF0pO2Vsc2Ug aWYobnVsbCE9PShyPXQubW9kdWxvLmV4ZWMobikpKWkucHVzaCgiJSIpO2Vsc2V7aWYobnVs bD09PShyPXQucGxhY2Vob2xkZXIuZXhlYyhuKSkpdGhyb3cgbmV3IFN5bnRheEVycm9yKCJb c3ByaW50Zl0gdW5leHBlY3RlZCBwbGFjZWhvbGRlciIpO2lmKHJbMl0pe298PTE7dmFyIHM9 W10sbD1yWzJdLGM9W107aWYobnVsbD09PShjPXQua2V5LmV4ZWMobCkpKXRocm93IG5ldyBT eW50YXhFcnJvcigiW3NwcmludGZdIGZhaWxlZCB0byBwYXJzZSBuYW1lZCBhcmd1bWVudCBr ZXkiKTtmb3Iocy5wdXNoKGNbMV0pOyIiIT09KGw9bC5zdWJzdHJpbmcoY1swXS5sZW5ndGgp KTspaWYobnVsbCE9PShjPXQua2V5X2FjY2Vzcy5leGVjKGwpKSlzLnB1c2goY1sxXSk7ZWxz ZXtpZihudWxsPT09KGM9dC5pbmRleF9hY2Nlc3MuZXhlYyhsKSkpdGhyb3cgbmV3IFN5bnRh eEVycm9yKCJbc3ByaW50Zl0gZmFpbGVkIHRvIHBhcnNlIG5hbWVkIGFyZ3VtZW50IGtleSIp O3MucHVzaChjWzFdKX1yWzJdPXN9ZWxzZSBvfD0yO2lmKDM9PT1vKXRocm93IG5ldyBFcnJv cigiW3NwcmludGZdIG1peGluZyBwb3NpdGlvbmFsIGFuZCBuYW1lZCBwbGFjZWhvbGRlcnMg aXMgbm90ICh5ZXQpIHN1cHBvcnRlZCIpO2kucHVzaCh7cGxhY2Vob2xkZXI6clswXSxwYXJh bV9ubzpyWzFdLGtleXM6clsyXSxzaWduOnJbM10scGFkX2NoYXI6cls0XSxhbGlnbjpyWzVd LHdpZHRoOnJbNl0scHJlY2lzaW9uOnJbN10sdHlwZTpyWzhdfSl9bj1uLnN1YnN0cmluZyhy WzBdLmxlbmd0aCl9cmV0dXJuIGFbZV09aX12b2lkIDAhPT1yJiYoci5zcHJpbnRmPWUsci52 c3ByaW50Zj1uKSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmKHdpbmRvdy5zcHJpbnRm PWUsd2luZG93LnZzcHJpbnRmPW4pfSgpfSx7fV0sMzAyOltmdW5jdGlvbih0LGUscil7InVz ZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKHQuZGltZW5zaW9uPD0wKXJl dHVybntwb3NpdGlvbnM6W10sY2VsbHM6W119O2lmKDE9PT10LmRpbWVuc2lvbilyZXR1cm4g ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9aSh0LGUpLG49ci5sZW5ndGgsYT1uZXcgQXJyYXko biksbz1uZXcgQXJyYXkobikscz0wO3M8bjsrK3MpYVtzXT1bcltzXV0sb1tzXT1bc107cmV0 dXJue3Bvc2l0aW9uczphLGNlbGxzOm99fSh0LGUpO3ZhciByPXQub3JkZXIuam9pbigpKyIt Iit0LmR0eXBlLHM9b1tyXTtlPStlfHwwO3N8fChzPW9bcl09ZnVuY3Rpb24odCxlKXt2YXIg cj10Lmxlbmd0aCsiZCIsaT1hW3JdO2lmKGkpcmV0dXJuIGkobix0LGUpfSh0Lm9yZGVyLHQu ZHR5cGUpKTtyZXR1cm4gcyh0LGUpfTt2YXIgbj10KCJuZGFycmF5LWV4dHJhY3QtY29udG91 ciIpLGk9dCgiemVyby1jcm9zc2luZ3MiKSxhPXsiMmQiOmZ1bmN0aW9uKHQsZSxyKXt2YXIg bj10KHtvcmRlcjplLHNjYWxhckFyZ3VtZW50czozLGdldHRlcnM6ImdlbmVyaWMiPT09cj9b MF06dm9pZCAwLHBoYXNlOmZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiB0Pm58MH0sdmVydGV4 OmZ1bmN0aW9uKHQsZSxyLG4saSxhLG8scyxsLGMsdSxmLGgpe3ZhciBwPShvPDwwKSsoczw8 MSkrKGw8PDIpKyhjPDwzKXwwO2lmKDAhPT1wJiYxNSE9PXApc3dpdGNoKHApe2Nhc2UgMDp1 LnB1c2goW3QtLjUsZS0uNV0pO2JyZWFrO2Nhc2UgMTp1LnB1c2goW3QtLjI1LS4yNSoobity LTIqaCkvKHItbiksZS0uMjUtLjI1KihpK3ItMipoKS8oci1pKV0pO2JyZWFrO2Nhc2UgMjp1 LnB1c2goW3QtLjc1LS4yNSooLW4tcisyKmgpLyhuLXIpLGUtLjI1LS4yNSooYStuLTIqaCkv KG4tYSldKTticmVhaztjYXNlIDM6dS5wdXNoKFt0LS41LGUtLjUtLjUqKGkrcithK24tNCpo KS8oci1pK24tYSldKTticmVhaztjYXNlIDQ6dS5wdXNoKFt0LS4yNS0uMjUqKGEraS0yKmgp LyhpLWEpLGUtLjc1LS4yNSooLWktcisyKmgpLyhpLXIpXSk7YnJlYWs7Y2FzZSA1OnUucHVz aChbdC0uNS0uNSoobityK2EraS00KmgpLyhyLW4raS1hKSxlLS41XSk7YnJlYWs7Y2FzZSA2 OnUucHVzaChbdC0uNS0uMjUqKC1uLXIrYStpKS8obi1yK2ktYSksZS0uNS0uMjUqKC1pLXIr YStuKS8oaS1yK24tYSldKTticmVhaztjYXNlIDc6dS5wdXNoKFt0LS43NS0uMjUqKGEraS0y KmgpLyhpLWEpLGUtLjc1LS4yNSooYStuLTIqaCkvKG4tYSldKTticmVhaztjYXNlIDg6dS5w dXNoKFt0LS43NS0uMjUqKC1hLWkrMipoKS8oYS1pKSxlLS43NS0uMjUqKC1hLW4rMipoKS8o YS1uKV0pO2JyZWFrO2Nhc2UgOTp1LnB1c2goW3QtLjUtLjI1KihuK3IrLWEtaSkvKHItbith LWkpLGUtLjUtLjI1KihpK3IrLWEtbikvKHItaSthLW4pXSk7YnJlYWs7Y2FzZSAxMDp1LnB1 c2goW3QtLjUtLjUqKC1uLXItYS1pKzQqaCkvKG4tcithLWkpLGUtLjVdKTticmVhaztjYXNl IDExOnUucHVzaChbdC0uMjUtLjI1KigtYS1pKzIqaCkvKGEtaSksZS0uNzUtLjI1KihpK3It MipoKS8oci1pKV0pO2JyZWFrO2Nhc2UgMTI6dS5wdXNoKFt0LS41LGUtLjUtLjUqKC1pLXIt YS1uKzQqaCkvKGktcithLW4pXSk7YnJlYWs7Y2FzZSAxMzp1LnB1c2goW3QtLjc1LS4yNSoo bityLTIqaCkvKHItbiksZS0uMjUtLjI1KigtYS1uKzIqaCkvKGEtbildKTticmVhaztjYXNl IDE0OnUucHVzaChbdC0uMjUtLjI1Kigtbi1yKzIqaCkvKG4tciksZS0uMjUtLjI1KigtaS1y KzIqaCkvKGktcildKTticmVhaztjYXNlIDE1OnUucHVzaChbdC0uNSxlLS41XSl9fSxjZWxs OmZ1bmN0aW9uKHQsZSxyLG4saSxhLG8scyxsKXtpP3MucHVzaChbdCxlXSk6cy5wdXNoKFtl LHRdKX19KTtyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgcj1bXSxpPVtdO3JldHVybiBuKHQs cixpLGUpLHtwb3NpdGlvbnM6cixjZWxsczppfX19fTt2YXIgbz17fX0seyJuZGFycmF5LWV4 dHJhY3QtY29udG91ciI6MjUxLCJ6ZXJvLWNyb3NzaW5ncyI6MzE4fV0sMzAzOltmdW5jdGlv bih0LGUscil7KGZ1bmN0aW9uKHIpeyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9y dHM9ZnVuY3Rpb24gdChlLHIsaSl7aT1pfHx7fTt2YXIgbz1hW2VdO298fChvPWFbZV09eyIg Ijp7ZGF0YTpuZXcgRmxvYXQzMkFycmF5KDApLHNoYXBlOi4yfX0pO3ZhciBzPW9bcl07aWYo IXMpaWYoci5sZW5ndGg8PTF8fCEvXGQvLnRlc3Qocikpcz1vW3JdPWZ1bmN0aW9uKHQpe2Zv cih2YXIgZT10LmNlbGxzLHI9dC5wb3NpdGlvbnMsbj1uZXcgRmxvYXQzMkFycmF5KDYqZS5s ZW5ndGgpLGk9MCxhPTAsbz0wO288ZS5sZW5ndGg7KytvKWZvcih2YXIgcz1lW29dLGw9MDts PDM7KytsKXt2YXIgYz1yW3NbbF1dO25baSsrXT1jWzBdLG5baSsrXT1jWzFdKzEuNCxhPU1h dGgubWF4KGNbMF0sYSl9cmV0dXJue2RhdGE6bixzaGFwZTphfX0obihyLHt0cmlhbmdsZXM6 ITAsZm9udDplLHRleHRBbGlnbjppLnRleHRBbGlnbnx8ImxlZnQiLHRleHRCYXNlbGluZToi YWxwaGFiZXRpYyIsc3R5bGV0YWdzOnticmVha2xpbmVzOiEwLGJvbGRzOiEwLGl0YWxpY3M6 ITAsc3Vic2NyaXB0czohMCxzdXBlcnNjcmlwdHM6ITB9fSkpO2Vsc2V7Zm9yKHZhciBsPXIu c3BsaXQoLyhcZHxccykvKSxjPW5ldyBBcnJheShsLmxlbmd0aCksdT0wLGY9MCxoPTA7aDxs Lmxlbmd0aDsrK2gpY1toXT10KGUsbFtoXSksdSs9Y1toXS5kYXRhLmxlbmd0aCxmKz1jW2hd LnNoYXBlLGg+MCYmKGYrPS4wMik7dmFyIHA9bmV3IEZsb2F0MzJBcnJheSh1KSxkPTAsbT0t LjUqZjtmb3IoaD0wO2g8Yy5sZW5ndGg7KytoKXtmb3IodmFyIGc9Y1toXS5kYXRhLHY9MDt2 PGcubGVuZ3RoO3YrPTIpcFtkKytdPWdbdl0rbSxwW2QrK109Z1t2KzFdO20rPWNbaF0uc2hh cGUrLjAyfXM9b1tyXT17ZGF0YTpwLHNoYXBlOmZ9fXJldHVybiBzfTt2YXIgbj10KCJ2ZWN0 b3JpemUtdGV4dCIpLGk9d2luZG93fHxyLmdsb2JhbHx8e30sYT1pLl9fVEVYVF9DQUNIRXx8 e307aS5fX1RFWFRfQ0FDSEU9e319KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHQoIl9wcm9j ZXNzIikpfSx7X3Byb2Nlc3M6NSwidmVjdG9yaXplLXRleHQiOjMxMX1dLDMwNDpbZnVuY3Rp b24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10KCJwYXJzZS11bml0Iik7ZS5leHBvcnRz PWE7ZnVuY3Rpb24gaSh0LGUpe3ZhciByPW4oZ2V0Q29tcHV0ZWRTdHlsZSh0KS5nZXRQcm9w ZXJ0eVZhbHVlKGUpKTtyZXR1cm4gclswXSphKHJbMV0sdCl9ZnVuY3Rpb24gYSh0LGUpe3N3 aXRjaChlPWV8fGRvY3VtZW50LmJvZHksdD0odHx8InB4IikudHJpbSgpLnRvTG93ZXJDYXNl KCksZSE9PXdpbmRvdyYmZSE9PWRvY3VtZW50fHwoZT1kb2N1bWVudC5ib2R5KSx0KXtjYXNl IiUiOnJldHVybiBlLmNsaWVudEhlaWdodC8xMDA7Y2FzZSJjaCI6Y2FzZSJleCI6cmV0dXJu IGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ci5z dHlsZVsiZm9udC1zaXplIl09IjEyOCIrdCxlLmFwcGVuZENoaWxkKHIpO3ZhciBuPWkociwi Zm9udC1zaXplIikvMTI4O3JldHVybiBlLnJlbW92ZUNoaWxkKHIpLG59KHQsZSk7Y2FzZSJl bSI6cmV0dXJuIGkoZSwiZm9udC1zaXplIik7Y2FzZSJyZW0iOnJldHVybiBpKGRvY3VtZW50 LmJvZHksImZvbnQtc2l6ZSIpO2Nhc2UidnciOnJldHVybiB3aW5kb3cuaW5uZXJXaWR0aC8x MDA7Y2FzZSJ2aCI6cmV0dXJuIHdpbmRvdy5pbm5lckhlaWdodC8xMDA7Y2FzZSJ2bWluIjpy ZXR1cm4gTWF0aC5taW4od2luZG93LmlubmVyV2lkdGgsd2luZG93LmlubmVySGVpZ2h0KS8x MDA7Y2FzZSJ2bWF4IjpyZXR1cm4gTWF0aC5tYXgod2luZG93LmlubmVyV2lkdGgsd2luZG93 LmlubmVySGVpZ2h0KS8xMDA7Y2FzZSJpbiI6cmV0dXJuIDk2O2Nhc2UiY20iOnJldHVybiA5 Ni8yLjU0O2Nhc2UibW0iOnJldHVybiA5Ni8yNS40O2Nhc2UicHQiOnJldHVybiA5Ni83Mjtj YXNlInBjIjpyZXR1cm4gMTZ9cmV0dXJuIDF9fSx7InBhcnNlLXVuaXQiOjI2NX1dLDMwNTpb ZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFy IGU9KHQ9dHx8e30pLmNlbnRlcnx8WzAsMCwwXSxyPXQudXB8fFswLDEsMF0sbj10LnJpZ2h0 fHxmKHIpLGk9dC5yYWRpdXN8fDEsYT10LnRoZXRhfHwwLHU9dC5waGl8fDA7aWYoZT1bXS5z bGljZS5jYWxsKGUsMCwzKSxyPVtdLnNsaWNlLmNhbGwociwwLDMpLHMocixyKSxuPVtdLnNs aWNlLmNhbGwobiwwLDMpLHMobixuKSwiZXllImluIHQpe3ZhciBwPXQuZXllLGQ9W3BbMF0t ZVswXSxwWzFdLWVbMV0scFsyXS1lWzJdXTtvKG4sZCxyKSxjKG5bMF0sblsxXSxuWzJdKTwx ZS02P249ZihyKTpzKG4sbiksaT1jKGRbMF0sZFsxXSxkWzJdKTt2YXIgbT1sKHIsZCkvaSxn PWwobixkKS9pO3U9TWF0aC5hY29zKG0pLGE9TWF0aC5hY29zKGcpfXJldHVybiBpPU1hdGgu bG9nKGkpLG5ldyBoKHQuem9vbU1pbix0Lnpvb21NYXgsZSxyLG4saSxhLHUpfTt2YXIgbj10 KCJmaWx0ZXJlZC12ZWN0b3IiKSxpPXQoImdsLW1hdDQvaW52ZXJ0IiksYT10KCJnbC1tYXQ0 L3JvdGF0ZSIpLG89dCgiZ2wtdmVjMy9jcm9zcyIpLHM9dCgiZ2wtdmVjMy9ub3JtYWxpemUi KSxsPXQoImdsLXZlYzMvZG90Iik7ZnVuY3Rpb24gYyh0LGUscil7cmV0dXJuIE1hdGguc3Fy dChNYXRoLnBvdyh0LDIpK01hdGgucG93KGUsMikrTWF0aC5wb3cociwyKSl9ZnVuY3Rpb24g dSh0KXtyZXR1cm4gTWF0aC5taW4oMSxNYXRoLm1heCgtMSx0KSl9ZnVuY3Rpb24gZih0KXt2 YXIgZT1NYXRoLmFicyh0WzBdKSxyPU1hdGguYWJzKHRbMV0pLG49TWF0aC5hYnModFsyXSks aT1bMCwwLDBdO2U+TWF0aC5tYXgocixuKT9pWzJdPTE6cj5NYXRoLm1heChlLG4pP2lbMF09 MTppWzFdPTE7Zm9yKHZhciBhPTAsbz0wLGw9MDtsPDM7KytsKWErPXRbbF0qdFtsXSxvKz1p W2xdKnRbbF07Zm9yKGw9MDtsPDM7KytsKWlbbF0tPW8vYSp0W2xdO3JldHVybiBzKGksaSks aX1mdW5jdGlvbiBoKHQsZSxyLGksYSxvLHMsbCl7dGhpcy5jZW50ZXI9bihyKSx0aGlzLnVw PW4oaSksdGhpcy5yaWdodD1uKGEpLHRoaXMucmFkaXVzPW4oW29dKSx0aGlzLmFuZ2xlPW4o W3MsbF0pLHRoaXMuYW5nbGUuYm91bmRzPVtbLTEvMCwtTWF0aC5QSS8yXSxbMS8wLE1hdGgu UEkvMl1dLHRoaXMuc2V0RGlzdGFuY2VMaW1pdHModCxlKSx0aGlzLmNvbXB1dGVkQ2VudGVy PXRoaXMuY2VudGVyLmN1cnZlKDApLHRoaXMuY29tcHV0ZWRVcD10aGlzLnVwLmN1cnZlKDAp LHRoaXMuY29tcHV0ZWRSaWdodD10aGlzLnJpZ2h0LmN1cnZlKDApLHRoaXMuY29tcHV0ZWRS YWRpdXM9dGhpcy5yYWRpdXMuY3VydmUoMCksdGhpcy5jb21wdXRlZEFuZ2xlPXRoaXMuYW5n bGUuY3VydmUoMCksdGhpcy5jb21wdXRlZFRvd2FyZD1bMCwwLDBdLHRoaXMuY29tcHV0ZWRF eWU9WzAsMCwwXSx0aGlzLmNvbXB1dGVkTWF0cml4PW5ldyBBcnJheSgxNik7Zm9yKHZhciBj PTA7YzwxNjsrK2MpdGhpcy5jb21wdXRlZE1hdHJpeFtjXT0uNTt0aGlzLnJlY2FsY01hdHJp eCgwKX12YXIgcD1oLnByb3RvdHlwZTtwLnNldERpc3RhbmNlTGltaXRzPWZ1bmN0aW9uKHQs ZSl7dD10PjA/TWF0aC5sb2codCk6LTEvMCxlPWU+MD9NYXRoLmxvZyhlKToxLzAsZT1NYXRo Lm1heChlLHQpLHRoaXMucmFkaXVzLmJvdW5kc1swXVswXT10LHRoaXMucmFkaXVzLmJvdW5k c1sxXVswXT1lfSxwLmdldERpc3RhbmNlTGltaXRzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMu cmFkaXVzLmJvdW5kc1swXTtyZXR1cm4gdD8odFswXT1NYXRoLmV4cChlWzBdWzBdKSx0WzFd PU1hdGguZXhwKGVbMV1bMF0pLHQpOltNYXRoLmV4cChlWzBdWzBdKSxNYXRoLmV4cChlWzFd WzBdKV19LHAucmVjYWxjTWF0cml4PWZ1bmN0aW9uKHQpe3RoaXMuY2VudGVyLmN1cnZlKHQp LHRoaXMudXAuY3VydmUodCksdGhpcy5yaWdodC5jdXJ2ZSh0KSx0aGlzLnJhZGl1cy5jdXJ2 ZSh0KSx0aGlzLmFuZ2xlLmN1cnZlKHQpO2Zvcih2YXIgZT10aGlzLmNvbXB1dGVkVXAscj10 aGlzLmNvbXB1dGVkUmlnaHQsbj0wLGk9MCxhPTA7YTwzOysrYSlpKz1lW2FdKnJbYV0sbis9 ZVthXSplW2FdO3ZhciBsPU1hdGguc3FydChuKSx1PTA7Zm9yKGE9MDthPDM7KythKXJbYV0t PWVbYV0qaS9uLHUrPXJbYV0qclthXSxlW2FdLz1sO3ZhciBmPU1hdGguc3FydCh1KTtmb3Io YT0wO2E8MzsrK2EpclthXS89Zjt2YXIgaD10aGlzLmNvbXB1dGVkVG93YXJkO28oaCxlLHIp LHMoaCxoKTt2YXIgcD1NYXRoLmV4cCh0aGlzLmNvbXB1dGVkUmFkaXVzWzBdKSxkPXRoaXMu Y29tcHV0ZWRBbmdsZVswXSxtPXRoaXMuY29tcHV0ZWRBbmdsZVsxXSxnPU1hdGguY29zKGQp LHY9TWF0aC5zaW4oZCkseT1NYXRoLmNvcyhtKSx4PU1hdGguc2luKG0pLGI9dGhpcy5jb21w dXRlZENlbnRlcixfPWcqeSx3PXYqeSxUPXgsaz0tZyp4LEE9LXYqeCxNPXksUz10aGlzLmNv bXB1dGVkRXllLEU9dGhpcy5jb21wdXRlZE1hdHJpeDtmb3IoYT0wO2E8MzsrK2Epe3ZhciBM PV8qclthXSt3KmhbYV0rVCplW2FdO0VbNCphKzFdPWsqclthXStBKmhbYV0rTSplW2FdLEVb NCphKzJdPUwsRVs0KmErM109MH12YXIgQz1FWzFdLFA9RVs1XSxJPUVbOV0sTz1FWzJdLHo9 RVs2XSxEPUVbMTBdLFI9UCpELUkqeixGPUkqTy1DKkQsQj1DKnotUCpPLE49YyhSLEYsQik7 Ui89TixGLz1OLEIvPU4sRVswXT1SLEVbNF09RixFWzhdPUI7Zm9yKGE9MDthPDM7KythKVNb YV09YlthXStFWzIrNCphXSpwO2ZvcihhPTA7YTwzOysrYSl7dT0wO2Zvcih2YXIgaj0wO2o8 MzsrK2opdSs9RVthKzQqal0qU1tqXTtFWzEyK2FdPS11fUVbMTVdPTF9LHAuZ2V0TWF0cml4 PWZ1bmN0aW9uKHQsZSl7dGhpcy5yZWNhbGNNYXRyaXgodCk7dmFyIHI9dGhpcy5jb21wdXRl ZE1hdHJpeDtpZihlKXtmb3IodmFyIG49MDtuPDE2OysrbillW25dPXJbbl07cmV0dXJuIGV9 cmV0dXJuIHJ9O3ZhciBkPVswLDAsMF07cC5yb3RhdGU9ZnVuY3Rpb24odCxlLHIsbil7aWYo dGhpcy5hbmdsZS5tb3ZlKHQsZSxyKSxuKXt0aGlzLnJlY2FsY01hdHJpeCh0KTt2YXIgaT10 aGlzLmNvbXB1dGVkTWF0cml4O2RbMF09aVsyXSxkWzFdPWlbNl0sZFsyXT1pWzEwXTtmb3Io dmFyIG89dGhpcy5jb21wdXRlZFVwLHM9dGhpcy5jb21wdXRlZFJpZ2h0LGw9dGhpcy5jb21w dXRlZFRvd2FyZCxjPTA7YzwzOysrYylpWzQqY109b1tjXSxpWzQqYysxXT1zW2NdLGlbNCpj KzJdPWxbY107YShpLGksbixkKTtmb3IoYz0wO2M8MzsrK2Mpb1tjXT1pWzQqY10sc1tjXT1p WzQqYysxXTt0aGlzLnVwLnNldCh0LG9bMF0sb1sxXSxvWzJdKSx0aGlzLnJpZ2h0LnNldCh0 LHNbMF0sc1sxXSxzWzJdKX19LHAucGFuPWZ1bmN0aW9uKHQsZSxyLG4pe2U9ZXx8MCxyPXJ8 fDAsbj1ufHwwLHRoaXMucmVjYWxjTWF0cml4KHQpO3ZhciBpPXRoaXMuY29tcHV0ZWRNYXRy aXgsYT0oTWF0aC5leHAodGhpcy5jb21wdXRlZFJhZGl1c1swXSksaVsxXSksbz1pWzVdLHM9 aVs5XSxsPWMoYSxvLHMpO2EvPWwsby89bCxzLz1sO3ZhciB1PWlbMF0sZj1pWzRdLGg9aVs4 XSxwPXUqYStmKm8raCpzLGQ9Yyh1LT1hKnAsZi09bypwLGgtPXMqcCksbT0odS89ZCkqZSth KnIsZz0oZi89ZCkqZStvKnIsdj0oaC89ZCkqZStzKnI7dGhpcy5jZW50ZXIubW92ZSh0LG0s Zyx2KTt2YXIgeT1NYXRoLmV4cCh0aGlzLmNvbXB1dGVkUmFkaXVzWzBdKTt5PU1hdGgubWF4 KDFlLTQseStuKSx0aGlzLnJhZGl1cy5zZXQodCxNYXRoLmxvZyh5KSl9LHAudHJhbnNsYXRl PWZ1bmN0aW9uKHQsZSxyLG4pe3RoaXMuY2VudGVyLm1vdmUodCxlfHwwLHJ8fDAsbnx8MCl9 LHAuc2V0TWF0cml4PWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBhPTE7Im51bWJlciI9PXR5cGVv ZiByJiYoYT0wfHIpLChhPDB8fGE+MykmJihhPTEpO3ZhciBvPShhKzIpJTM7ZXx8KHRoaXMu cmVjYWxjTWF0cml4KHQpLGU9dGhpcy5jb21wdXRlZE1hdHJpeCk7dmFyIHM9ZVthXSxsPWVb YSs0XSxmPWVbYSs4XTtpZihuKXt2YXIgaD1NYXRoLmFicyhzKSxwPU1hdGguYWJzKGwpLGQ9 TWF0aC5hYnMoZiksbT1NYXRoLm1heChoLHAsZCk7aD09PW0/KHM9czwwPy0xOjEsbD1mPTAp OmQ9PT1tPyhmPWY8MD8tMToxLHM9bD0wKToobD1sPDA/LTE6MSxzPWY9MCl9ZWxzZXt2YXIg Zz1jKHMsbCxmKTtzLz1nLGwvPWcsZi89Z312YXIgdix5LHg9ZVtvXSxiPWVbbys0XSxfPWVb bys4XSx3PXgqcytiKmwrXypmLFQ9Yyh4LT1zKncsYi09bCp3LF8tPWYqdyksaz1sKihfLz1U KS1mKihiLz1UKSxBPWYqKHgvPVQpLXMqXyxNPXMqYi1sKngsUz1jKGssQSxNKTtpZihrLz1T LEEvPVMsTS89Uyx0aGlzLmNlbnRlci5qdW1wKHQscSxHLFkpLHRoaXMucmFkaXVzLmlkbGUo dCksdGhpcy51cC5qdW1wKHQscyxsLGYpLHRoaXMucmlnaHQuanVtcCh0LHgsYixfKSwyPT09 YSl7dmFyIEU9ZVsxXSxMPWVbNV0sQz1lWzldLFA9RSp4K0wqYitDKl8sST1FKmsrTCpBK0Mq TTt2PVI8MD8tTWF0aC5QSS8yOk1hdGguUEkvMix5PU1hdGguYXRhbjIoSSxQKX1lbHNle3Zh ciBPPWVbMl0sej1lWzZdLEQ9ZVsxMF0sUj1PKnMreipsK0QqZixGPU8qeCt6KmIrRCpfLEI9 TyprK3oqQStEKk07dj1NYXRoLmFzaW4odShSKSkseT1NYXRoLmF0YW4yKEIsRil9dGhpcy5h bmdsZS5qdW1wKHQseSx2KSx0aGlzLnJlY2FsY01hdHJpeCh0KTt2YXIgTj1lWzJdLGo9ZVs2 XSxVPWVbMTBdLFY9dGhpcy5jb21wdXRlZE1hdHJpeDtpKFYsZSk7dmFyIEg9VlsxNV0scT1W WzEyXS9ILEc9VlsxM10vSCxZPVZbMTRdL0gsVz1NYXRoLmV4cCh0aGlzLmNvbXB1dGVkUmFk aXVzWzBdKTt0aGlzLmNlbnRlci5qdW1wKHQscS1OKlcsRy1qKlcsWS1VKlcpfSxwLmxhc3RU PWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgubWF4KHRoaXMuY2VudGVyLmxhc3RUKCksdGhpcy51 cC5sYXN0VCgpLHRoaXMucmlnaHQubGFzdFQoKSx0aGlzLnJhZGl1cy5sYXN0VCgpLHRoaXMu YW5nbGUubGFzdFQoKSl9LHAuaWRsZT1mdW5jdGlvbih0KXt0aGlzLmNlbnRlci5pZGxlKHQp LHRoaXMudXAuaWRsZSh0KSx0aGlzLnJpZ2h0LmlkbGUodCksdGhpcy5yYWRpdXMuaWRsZSh0 KSx0aGlzLmFuZ2xlLmlkbGUodCl9LHAuZmx1c2g9ZnVuY3Rpb24odCl7dGhpcy5jZW50ZXIu Zmx1c2godCksdGhpcy51cC5mbHVzaCh0KSx0aGlzLnJpZ2h0LmZsdXNoKHQpLHRoaXMucmFk aXVzLmZsdXNoKHQpLHRoaXMuYW5nbGUuZmx1c2godCl9LHAuc2V0RGlzdGFuY2U9ZnVuY3Rp b24odCxlKXtlPjAmJnRoaXMucmFkaXVzLnNldCh0LE1hdGgubG9nKGUpKX0scC5sb29rQXQ9 ZnVuY3Rpb24odCxlLHIsbil7dGhpcy5yZWNhbGNNYXRyaXgodCksZT1lfHx0aGlzLmNvbXB1 dGVkRXllLHI9cnx8dGhpcy5jb21wdXRlZENlbnRlcjt2YXIgaT0obj1ufHx0aGlzLmNvbXB1 dGVkVXApWzBdLGE9blsxXSxvPW5bMl0scz1jKGksYSxvKTtpZighKHM8MWUtNikpe2kvPXMs YS89cyxvLz1zO3ZhciBsPWVbMF0tclswXSxmPWVbMV0tclsxXSxoPWVbMl0tclsyXSxwPWMo bCxmLGgpO2lmKCEocDwxZS02KSl7bC89cCxmLz1wLGgvPXA7dmFyIGQ9dGhpcy5jb21wdXRl ZFJpZ2h0LG09ZFswXSxnPWRbMV0sdj1kWzJdLHk9aSptK2EqZytvKnYseD1jKG0tPXkqaSxn LT15KmEsdi09eSpvKTtpZighKHg8LjAxJiYoeD1jKG09YSpoLW8qZixnPW8qbC1pKmgsdj1p KmYtYSpsKSk8MWUtNikpe20vPXgsZy89eCx2Lz14LHRoaXMudXAuc2V0KHQsaSxhLG8pLHRo aXMucmlnaHQuc2V0KHQsbSxnLHYpLHRoaXMuY2VudGVyLnNldCh0LHJbMF0sclsxXSxyWzJd KSx0aGlzLnJhZGl1cy5zZXQodCxNYXRoLmxvZyhwKSk7dmFyIGI9YSp2LW8qZyxfPW8qbS1p KnYsdz1pKmctYSptLFQ9YyhiLF8sdyksaz1pKmwrYSpmK28qaCxBPW0qbCtnKmYrdipoLE09 KGIvPVQpKmwrKF8vPVQpKmYrKHcvPVQpKmgsUz1NYXRoLmFzaW4odShrKSksRT1NYXRoLmF0 YW4yKE0sQSksTD10aGlzLmFuZ2xlLl9zdGF0ZSxDPUxbTC5sZW5ndGgtMV0sUD1MW0wubGVu Z3RoLTJdO0MlPTIqTWF0aC5QSTt2YXIgST1NYXRoLmFicyhDKzIqTWF0aC5QSS1FKSxPPU1h dGguYWJzKEMtRSksej1NYXRoLmFicyhDLTIqTWF0aC5QSS1FKTtJPE8mJihDKz0yKk1hdGgu UEkpLHo8TyYmKEMtPTIqTWF0aC5QSSksdGhpcy5hbmdsZS5qdW1wKHRoaXMuYW5nbGUubGFz dFQoKSxDLFApLHRoaXMuYW5nbGUuc2V0KHQsRSxTKX19fX19LHsiZmlsdGVyZWQtdmVjdG9y Ijo2OCwiZ2wtbWF0NC9pbnZlcnQiOjk4LCJnbC1tYXQ0L3JvdGF0ZSI6MTAzLCJnbC12ZWMz L2Nyb3NzIjoxNTcsImdsLXZlYzMvZG90IjoxNjIsImdsLXZlYzMvbm9ybWFsaXplIjoxNzl9 XSwzMDY6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9u KHQsZSxyKXt2YXIgaT10KmUsYT1uKnQsbz1hLShhLXQpLHM9dC1vLGw9biplLGM9bC0obC1l KSx1PWUtYyxmPXMqdS0oaS1vKmMtcypjLW8qdSk7aWYocilyZXR1cm4gclswXT1mLHJbMV09 aSxyO3JldHVybltmLGldfTt2YXIgbj0rKE1hdGgucG93KDIsMjcpKzEpfSx7fV0sMzA3Oltm dW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7 dmFyIG49dCtlLGk9bi10LGE9ZS1pLG89dC0obi1pKTtpZihyKXJldHVybiByWzBdPW8rYSxy WzFdPW4scjtyZXR1cm5bbythLG5dfX0se31dLDMwODpbZnVuY3Rpb24odCxlLHIpeyhmdW5j dGlvbihlKXsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIG49dCgiYml0LXR3aWRkbGUi KSxpPXQoImR1cCIpLGE9dCgiYnVmZmVyIikuQnVmZmVyO2UuX19UWVBFREFSUkFZX1BPT0x8 fChlLl9fVFlQRURBUlJBWV9QT09MPXtVSU5UODppKFszMiwwXSksVUlOVDE2OmkoWzMyLDBd KSxVSU5UMzI6aShbMzIsMF0pLEJJR1VJTlQ2NDppKFszMiwwXSksSU5UODppKFszMiwwXSks SU5UMTY6aShbMzIsMF0pLElOVDMyOmkoWzMyLDBdKSxCSUdJTlQ2NDppKFszMiwwXSksRkxP QVQ6aShbMzIsMF0pLERPVUJMRTppKFszMiwwXSksREFUQTppKFszMiwwXSksVUlOVDhDOmko WzMyLDBdKSxCVUZGRVI6aShbMzIsMF0pfSk7dmFyIG89InVuZGVmaW5lZCIhPXR5cGVvZiBV aW50OENsYW1wZWRBcnJheSxzPSJ1bmRlZmluZWQiIT10eXBlb2YgQmlnVWludDY0QXJyYXks bD0idW5kZWZpbmVkIiE9dHlwZW9mIEJpZ0ludDY0QXJyYXksYz1lLl9fVFlQRURBUlJBWV9Q T09MO2MuVUlOVDhDfHwoYy5VSU5UOEM9aShbMzIsMF0pKSxjLkJJR1VJTlQ2NHx8KGMuQklH VUlOVDY0PWkoWzMyLDBdKSksYy5CSUdJTlQ2NHx8KGMuQklHSU5UNjQ9aShbMzIsMF0pKSxj LkJVRkZFUnx8KGMuQlVGRkVSPWkoWzMyLDBdKSk7dmFyIHU9Yy5EQVRBLGY9Yy5CVUZGRVI7 ZnVuY3Rpb24gaCh0KXtpZih0KXt2YXIgZT10Lmxlbmd0aHx8dC5ieXRlTGVuZ3RoLHI9bi5s b2cyKGUpO3Vbcl0ucHVzaCh0KX19ZnVuY3Rpb24gcCh0KXt0PW4ubmV4dFBvdzIodCk7dmFy IGU9bi5sb2cyKHQpLHI9dVtlXTtyZXR1cm4gci5sZW5ndGg+MD9yLnBvcCgpOm5ldyBBcnJh eUJ1ZmZlcih0KX1mdW5jdGlvbiBkKHQpe3JldHVybiBuZXcgVWludDhBcnJheShwKHQpLDAs dCl9ZnVuY3Rpb24gbSh0KXtyZXR1cm4gbmV3IFVpbnQxNkFycmF5KHAoMip0KSwwLHQpfWZ1 bmN0aW9uIGcodCl7cmV0dXJuIG5ldyBVaW50MzJBcnJheShwKDQqdCksMCx0KX1mdW5jdGlv biB2KHQpe3JldHVybiBuZXcgSW50OEFycmF5KHAodCksMCx0KX1mdW5jdGlvbiB5KHQpe3Jl dHVybiBuZXcgSW50MTZBcnJheShwKDIqdCksMCx0KX1mdW5jdGlvbiB4KHQpe3JldHVybiBu ZXcgSW50MzJBcnJheShwKDQqdCksMCx0KX1mdW5jdGlvbiBiKHQpe3JldHVybiBuZXcgRmxv YXQzMkFycmF5KHAoNCp0KSwwLHQpfWZ1bmN0aW9uIF8odCl7cmV0dXJuIG5ldyBGbG9hdDY0 QXJyYXkocCg4KnQpLDAsdCl9ZnVuY3Rpb24gdyh0KXtyZXR1cm4gbz9uZXcgVWludDhDbGFt cGVkQXJyYXkocCh0KSwwLHQpOmQodCl9ZnVuY3Rpb24gVCh0KXtyZXR1cm4gcz9uZXcgQmln VWludDY0QXJyYXkocCg4KnQpLDAsdCk6bnVsbH1mdW5jdGlvbiBrKHQpe3JldHVybiBsP25l dyBCaWdJbnQ2NEFycmF5KHAoOCp0KSwwLHQpOm51bGx9ZnVuY3Rpb24gQSh0KXtyZXR1cm4g bmV3IERhdGFWaWV3KHAodCksMCx0KX1mdW5jdGlvbiBNKHQpe3Q9bi5uZXh0UG93Mih0KTt2 YXIgZT1uLmxvZzIodCkscj1mW2VdO3JldHVybiByLmxlbmd0aD4wP3IucG9wKCk6bmV3IGEo dCl9ci5mcmVlPWZ1bmN0aW9uKHQpe2lmKGEuaXNCdWZmZXIodCkpZltuLmxvZzIodC5sZW5n dGgpXS5wdXNoKHQpO2Vsc2V7aWYoIltvYmplY3QgQXJyYXlCdWZmZXJdIiE9PU9iamVjdC5w cm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KSYmKHQ9dC5idWZmZXIpLCF0KXJldHVybjt2YXIg ZT10Lmxlbmd0aHx8dC5ieXRlTGVuZ3RoLHI9MHxuLmxvZzIoZSk7dVtyXS5wdXNoKHQpfX0s ci5mcmVlVWludDg9ci5mcmVlVWludDE2PXIuZnJlZVVpbnQzMj1yLmZyZWVCaWdVaW50NjQ9 ci5mcmVlSW50OD1yLmZyZWVJbnQxNj1yLmZyZWVJbnQzMj1yLmZyZWVCaWdJbnQ2ND1yLmZy ZWVGbG9hdDMyPXIuZnJlZUZsb2F0PXIuZnJlZUZsb2F0NjQ9ci5mcmVlRG91YmxlPXIuZnJl ZVVpbnQ4Q2xhbXBlZD1yLmZyZWVEYXRhVmlldz1mdW5jdGlvbih0KXtoKHQuYnVmZmVyKX0s ci5mcmVlQXJyYXlCdWZmZXI9aCxyLmZyZWVCdWZmZXI9ZnVuY3Rpb24odCl7ZltuLmxvZzIo dC5sZW5ndGgpXS5wdXNoKHQpfSxyLm1hbGxvYz1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMD09 PWV8fCJhcnJheWJ1ZmZlciI9PT1lKXJldHVybiBwKHQpO3N3aXRjaChlKXtjYXNlInVpbnQ4 IjpyZXR1cm4gZCh0KTtjYXNlInVpbnQxNiI6cmV0dXJuIG0odCk7Y2FzZSJ1aW50MzIiOnJl dHVybiBnKHQpO2Nhc2UiaW50OCI6cmV0dXJuIHYodCk7Y2FzZSJpbnQxNiI6cmV0dXJuIHko dCk7Y2FzZSJpbnQzMiI6cmV0dXJuIHgodCk7Y2FzZSJmbG9hdCI6Y2FzZSJmbG9hdDMyIjpy ZXR1cm4gYih0KTtjYXNlImRvdWJsZSI6Y2FzZSJmbG9hdDY0IjpyZXR1cm4gXyh0KTtjYXNl InVpbnQ4X2NsYW1wZWQiOnJldHVybiB3KHQpO2Nhc2UiYmlnaW50NjQiOnJldHVybiBrKHQp O2Nhc2UiYmlndWludDY0IjpyZXR1cm4gVCh0KTtjYXNlImJ1ZmZlciI6cmV0dXJuIE0odCk7 Y2FzZSJkYXRhIjpjYXNlImRhdGF2aWV3IjpyZXR1cm4gQSh0KTtkZWZhdWx0OnJldHVybiBu dWxsfXJldHVybiBudWxsfSxyLm1hbGxvY0FycmF5QnVmZmVyPXAsci5tYWxsb2NVaW50OD1k LHIubWFsbG9jVWludDE2PW0sci5tYWxsb2NVaW50MzI9ZyxyLm1hbGxvY0ludDg9dixyLm1h bGxvY0ludDE2PXksci5tYWxsb2NJbnQzMj14LHIubWFsbG9jRmxvYXQzMj1yLm1hbGxvY0Zs b2F0PWIsci5tYWxsb2NGbG9hdDY0PXIubWFsbG9jRG91YmxlPV8sci5tYWxsb2NVaW50OENs YW1wZWQ9dyxyLm1hbGxvY0JpZ1VpbnQ2ND1ULHIubWFsbG9jQmlnSW50NjQ9ayxyLm1hbGxv Y0RhdGFWaWV3PUEsci5tYWxsb2NCdWZmZXI9TSxyLmNsZWFyQ2FjaGU9ZnVuY3Rpb24oKXtm b3IodmFyIHQ9MDt0PDMyOysrdCljLlVJTlQ4W3RdLmxlbmd0aD0wLGMuVUlOVDE2W3RdLmxl bmd0aD0wLGMuVUlOVDMyW3RdLmxlbmd0aD0wLGMuSU5UOFt0XS5sZW5ndGg9MCxjLklOVDE2 W3RdLmxlbmd0aD0wLGMuSU5UMzJbdF0ubGVuZ3RoPTAsYy5GTE9BVFt0XS5sZW5ndGg9MCxj LkRPVUJMRVt0XS5sZW5ndGg9MCxjLkJJR1VJTlQ2NFt0XS5sZW5ndGg9MCxjLkJJR0lOVDY0 W3RdLmxlbmd0aD0wLGMuVUlOVDhDW3RdLmxlbmd0aD0wLHVbdF0ubGVuZ3RoPTAsZlt0XS5s ZW5ndGg9MH19KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHZvaWQgMCE9PW4/bjoidW5kZWZp bmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5k b3c6e30pfSx7ImJpdC10d2lkZGxlIjozMixidWZmZXI6MyxkdXA6NjV9XSwzMDk6W2Z1bmN0 aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXt0aGlzLnJvb3RzPW5ldyBB cnJheSh0KSx0aGlzLnJhbmtzPW5ldyBBcnJheSh0KTtmb3IodmFyIGU9MDtlPHQ7KytlKXRo aXMucm9vdHNbZV09ZSx0aGlzLnJhbmtzW2VdPTB9ZS5leHBvcnRzPW47dmFyIGk9bi5wcm90 b3R5cGU7T2JqZWN0LmRlZmluZVByb3BlcnR5KGksImxlbmd0aCIse2dldDpmdW5jdGlvbigp e3JldHVybiB0aGlzLnJvb3RzLmxlbmd0aH19KSxpLm1ha2VTZXQ9ZnVuY3Rpb24oKXt2YXIg dD10aGlzLnJvb3RzLmxlbmd0aDtyZXR1cm4gdGhpcy5yb290cy5wdXNoKHQpLHRoaXMucmFu a3MucHVzaCgwKSx0fSxpLmZpbmQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQscj10aGlzLnJv b3RzO3JbdF0hPT10Oyl0PXJbdF07Zm9yKDtyW2VdIT09dDspe3ZhciBuPXJbZV07cltlXT10 LGU9bn1yZXR1cm4gdH0saS5saW5rPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5maW5kKHQp LG49dGhpcy5maW5kKGUpO2lmKHIhPT1uKXt2YXIgaT10aGlzLnJhbmtzLGE9dGhpcy5yb290 cyxvPWlbcl0scz1pW25dO288cz9hW3JdPW46czxvP2Fbbl09cjooYVtuXT1yLCsraVtyXSl9 fX0se31dLDMxMDpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVu Y3Rpb24odCxlLHIpe3JldHVybiAwPT09dC5sZW5ndGg/dDplPyhyfHx0LnNvcnQoZSksZnVu Y3Rpb24odCxlKXtmb3IodmFyIHI9MSxuPXQubGVuZ3RoLGk9dFswXSxhPXRbMF0sbz0xO288 bjsrK28paWYoYT1pLGUoaT10W29dLGEpKXtpZihvPT09cil7cisrO2NvbnRpbnVlfXRbcisr XT1pfXJldHVybiB0Lmxlbmd0aD1yLHR9KHQsZSkpOihyfHx0LnNvcnQoKSxmdW5jdGlvbih0 KXtmb3IodmFyIGU9MSxyPXQubGVuZ3RoLG49dFswXSxpPXRbMF0sYT0xO2E8cjsrK2EsaT1u KWlmKGk9biwobj10W2FdKSE9PWkpe2lmKGE9PT1lKXtlKys7Y29udGludWV9dFtlKytdPW59 cmV0dXJuIHQubGVuZ3RoPWUsdH0odCkpfX0se31dLDMxMTpbZnVuY3Rpb24odCxlLHIpeyJ1 c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXsib2JqZWN0Ij09dHlwZW9mIGUm Jm51bGwhPT1lfHwoZT17fSk7cmV0dXJuIG4odCxlLmNhbnZhc3x8aSxlLmNvbnRleHR8fGEs ZSl9O3ZhciBuPXQoIi4vbGliL3Z0ZXh0IiksaT1udWxsLGE9bnVsbDsidW5kZWZpbmVkIiE9 dHlwZW9mIGRvY3VtZW50JiYoKGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikp LndpZHRoPTgxOTIsaS5oZWlnaHQ9MTAyNCxhPWkuZ2V0Q29udGV4dCgiMmQiKSl9LHsiLi9s aWIvdnRleHQiOjMxMn1dLDMxMjpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz1mdW5jdGlv bih0LGUscixuKXt2YXIgYT02NCxvPTEuMjUscz17YnJlYWtsaW5lczohMSxib2xkczohMSxp dGFsaWNzOiExLHN1YnNjcmlwdHM6ITEsc3VwZXJzY3JpcHRzOiExfTtuJiYobi5zaXplJiZu LnNpemU+MCYmKGE9bi5zaXplKSxuLmxpbmVTcGFjaW5nJiZuLmxpbmVTcGFjaW5nPjAmJihv PW4ubGluZVNwYWNpbmcpLG4uc3R5bGV0YWdzJiZuLnN0eWxldGFncy5icmVha2xpbmVzJiYo cy5icmVha2xpbmVzPSEhbi5zdHlsZXRhZ3MuYnJlYWtsaW5lcyksbi5zdHlsZXRhZ3MmJm4u c3R5bGV0YWdzLmJvbGRzJiYocy5ib2xkcz0hIW4uc3R5bGV0YWdzLmJvbGRzKSxuLnN0eWxl dGFncyYmbi5zdHlsZXRhZ3MuaXRhbGljcyYmKHMuaXRhbGljcz0hIW4uc3R5bGV0YWdzLml0 YWxpY3MpLG4uc3R5bGV0YWdzJiZuLnN0eWxldGFncy5zdWJzY3JpcHRzJiYocy5zdWJzY3Jp cHRzPSEhbi5zdHlsZXRhZ3Muc3Vic2NyaXB0cyksbi5zdHlsZXRhZ3MmJm4uc3R5bGV0YWdz LnN1cGVyc2NyaXB0cyYmKHMuc3VwZXJzY3JpcHRzPSEhbi5zdHlsZXRhZ3Muc3VwZXJzY3Jp cHRzKSk7cmV0dXJuIHIuZm9udD1bbi5mb250U3R5bGUsbi5mb250VmFyaWFudCxuLmZvbnRX ZWlnaHQsYSsicHgiLG4uZm9udF0uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKS5q b2luKCIgIiksci50ZXh0QWxpZ249InN0YXJ0IixyLnRleHRCYXNlbGluZT0iYWxwaGFiZXRp YyIsci5kaXJlY3Rpb249Imx0ciIsaChmdW5jdGlvbih0LGUscixuLGEsbyl7cj1yLnJlcGxh Y2UoL1xuL2csIiIpLHI9ITA9PT1vLmJyZWFrbGluZXM/ci5yZXBsYWNlKC9cPGJyXD4vZywi XG4iKTpyLnJlcGxhY2UoL1w8YnJcPi9nLCIgIik7dmFyIHM9IiIsbD1bXTtmb3IocD0wO3A8 ci5sZW5ndGg7KytwKWxbcF09czshMD09PW8uYm9sZHMmJihsPWMoImIiLCJifCIscixsKSk7 ITA9PT1vLml0YWxpY3MmJihsPWMoImkiLCJpfCIscixsKSk7ITA9PT1vLnN1cGVyc2NyaXB0 cyYmKGw9Yygic3VwIiwiKzEiLHIsbCkpOyEwPT09by5zdWJzY3JpcHRzJiYobD1jKCJzdWIi LCItMSIscixsKSk7dmFyIHU9W10sZj0iIjtmb3IocD0wO3A8ci5sZW5ndGg7KytwKW51bGwh PT1sW3BdJiYoZis9cltwXSx1LnB1c2gobFtwXSkpO3ZhciBoLHAsZCxtLGcsdj1mLnNwbGl0 KCJcbiIpLHk9di5sZW5ndGgseD1NYXRoLnJvdW5kKGEqbiksYj1uLF89MipuLHc9MCxUPXkq eCtfO3QuaGVpZ2h0PFQmJih0LmhlaWdodD1UKTtlLmZpbGxTdHlsZT0iIzAwMCIsZS5maWxs UmVjdCgwLDAsdC53aWR0aCx0LmhlaWdodCksZS5maWxsU3R5bGU9IiNmZmYiO3ZhciBrPTAs QT0iIjtmdW5jdGlvbiBNKCl7aWYoIiIhPT1BKXt2YXIgdD1lLm1lYXN1cmVUZXh0KEEpLndp ZHRoO2UuZmlsbFRleHQoQSxiK2QsXyttKSxkKz10fX1mdW5jdGlvbiBTKCl7cmV0dXJuIE1h dGgucm91bmQoZykrInB4ICJ9ZnVuY3Rpb24gRSh0LHIpe3ZhciBuPSIiK2UuZm9udDtpZigh MD09PW8uc3Vic2NyaXB0cyl7dmFyIGk9dC5pbmRleE9mKCItIiksYT1yLmluZGV4T2YoIi0i KSxzPWk+LTE/cGFyc2VJbnQodFsxK2ldKTowLGw9YT4tMT9wYXJzZUludChyWzErYV0pOjA7 cyE9PWwmJihuPW4ucmVwbGFjZShTKCksIj9weCAiKSxnKj1NYXRoLnBvdyguNzUsbC1zKSxu PW4ucmVwbGFjZSgiP3B4ICIsUygpKSksbSs9LjI1KngqKGwtcyl9aWYoITA9PT1vLnN1cGVy c2NyaXB0cyl7dmFyIGM9dC5pbmRleE9mKCIrIiksdT1yLmluZGV4T2YoIisiKSxmPWM+LTE/ cGFyc2VJbnQodFsxK2NdKTowLGg9dT4tMT9wYXJzZUludChyWzErdV0pOjA7ZiE9PWgmJihu PW4ucmVwbGFjZShTKCksIj9weCAiKSxnKj1NYXRoLnBvdyguNzUsaC1mKSxuPW4ucmVwbGFj ZSgiP3B4ICIsUygpKSksbS09LjI1KngqKGgtZil9aWYoITA9PT1vLmJvbGRzKXt2YXIgcD10 LmluZGV4T2YoImJ8Iik+LTEsZD1yLmluZGV4T2YoImJ8Iik+LTE7IXAmJmQmJihuPXY/bi5y ZXBsYWNlKCJpdGFsaWMgIiwiaXRhbGljIGJvbGQgIik6ImJvbGQgIituKSxwJiYhZCYmKG49 bi5yZXBsYWNlKCJib2xkICIsIiIpKX1pZighMD09PW8uaXRhbGljcyl7dmFyIHY9dC5pbmRl eE9mKCJpfCIpPi0xLHk9ci5pbmRleE9mKCJpfCIpPi0xOyF2JiZ5JiYobj0iaXRhbGljICIr biksdiYmIXkmJihuPW4ucmVwbGFjZSgiaXRhbGljICIsIiIpKX1lLmZvbnQ9bn1mb3IoaD0w O2g8eTsrK2gpe3ZhciBMPXZbaF0rIlxuIjtmb3IoZD0wLG09aCp4LGc9bixBPSIiLHA9MDtw PEwubGVuZ3RoOysrcCl7dmFyIEM9cCtrPHUubGVuZ3RoP3VbcCtrXTp1W3UubGVuZ3RoLTFd O3M9PT1DP0ErPUxbcF06KE0oKSxBPUxbcF0sdm9pZCAwIT09QyYmKEUocyxDKSxzPUMpKX1N KCksays9TC5sZW5ndGg7dmFyIFA9MHxNYXRoLnJvdW5kKGQrMipiKTt3PFAmJih3PVApfXZh ciBJPXcsTz1fK3gqeTtyZXR1cm4gaShlLmdldEltYWdlRGF0YSgwLDAsSSxPKS5kYXRhLFtP LEksNF0pLnBpY2soLTEsLTEsMCkudHJhbnNwb3NlKDEsMCl9KGUscix0LGEsbyxzKSxuLGEp fSxlLmV4cG9ydHMucHJvY2Vzc1BpeGVscz1oO3ZhciBuPXQoInN1cmZhY2UtbmV0cyIpLGk9 dCgibmRhcnJheSIpLGE9dCgic2ltcGxpZnktcGxhbmFyLWdyYXBoIiksbz10KCJjbGVhbi1w c2xnIikscz10KCJjZHQyZCIpLGw9dCgicGxhbmFyLWdyYXBoLXRvLXBvbHlsaW5lIik7ZnVu Y3Rpb24gYyh0LGUscixuKXtmb3IodmFyIGk9IjwiK3QrIj4iLGE9IjwvIit0KyI+IixvPWku bGVuZ3RoLHM9YS5sZW5ndGgsbD0iKyI9PT1lWzBdfHwiLSI9PT1lWzBdLGM9MCx1PS1zO2M+ LTEmJi0xIT09KGM9ci5pbmRleE9mKGksYykpJiYtMSE9PSh1PXIuaW5kZXhPZihhLGMrbykp JiYhKHU8PWMpOyl7Zm9yKHZhciBmPWM7Zjx1K3M7KytmKWlmKGY8YytvfHxmPj11KW5bZl09 bnVsbCxyPXIuc3Vic3RyKDAsZikrIiAiK3Iuc3Vic3RyKGYrMSk7ZWxzZSBpZihudWxsIT09 bltmXSl7dmFyIGg9bltmXS5pbmRleE9mKGVbMF0pOy0xPT09aD9uW2ZdKz1lOmwmJihuW2Zd PW5bZl0uc3Vic3RyKDAsaCsxKSsoMStwYXJzZUludChuW2ZdW2grMV0pKStuW2ZdLnN1YnN0 cihoKzIpKX12YXIgcD1jK28sZD1yLnN1YnN0cihwLHUtcCkuaW5kZXhPZihpKTtjPS0xIT09 ZD9kOnUrc31yZXR1cm4gbn1mdW5jdGlvbiB1KHQsZSl7dmFyIHI9bih0LDEyOCk7cmV0dXJu IGU/YShyLmNlbGxzLHIucG9zaXRpb25zLC4yNSk6e2VkZ2VzOnIuY2VsbHMscG9zaXRpb25z OnIucG9zaXRpb25zfX1mdW5jdGlvbiBmKHQsZSxyLG4pe3ZhciBpPXUodCxuKSxhPWZ1bmN0 aW9uKHQsZSxyKXtmb3IodmFyIG49ZS50ZXh0QWxpZ258fCJzdGFydCIsaT1lLnRleHRCYXNl bGluZXx8ImFscGhhYmV0aWMiLGE9WzE8PDMwLDE8PDMwXSxvPVswLDBdLHM9dC5sZW5ndGgs bD0wO2w8czsrK2wpZm9yKHZhciBjPXRbbF0sdT0wO3U8MjsrK3UpYVt1XT0wfE1hdGgubWlu KGFbdV0sY1t1XSksb1t1XT0wfE1hdGgubWF4KG9bdV0sY1t1XSk7dmFyIGY9MDtzd2l0Y2go bil7Y2FzZSJjZW50ZXIiOmY9LS41KihhWzBdK29bMF0pO2JyZWFrO2Nhc2UicmlnaHQiOmNh c2UiZW5kIjpmPS1vWzBdO2JyZWFrO2Nhc2UibGVmdCI6Y2FzZSJzdGFydCI6Zj0tYVswXTti cmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidmVjdG9yaXplLXRleHQ6IFVucmVjb2du aXplZCB0ZXh0QWxpZ246ICciK24rIiciKX12YXIgaD0wO3N3aXRjaChpKXtjYXNlImhhbmdp bmciOmNhc2UidG9wIjpoPS1hWzFdO2JyZWFrO2Nhc2UibWlkZGxlIjpoPS0uNSooYVsxXStv WzFdKTticmVhaztjYXNlImFscGhhYmV0aWMiOmNhc2UiaWRlb2dyYXBoaWMiOmg9LTMqcjti cmVhaztjYXNlImJvdHRvbSI6aD0tb1sxXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJv cigidmVjdG9yaXplLXRleHQ6IFVucmVjb2dpbml6ZWQgdGV4dEJhc2VsaW5lOiAnIitpKyIn Iil9dmFyIHA9MS9yO3JldHVybiJsaW5lSGVpZ2h0ImluIGU/cCo9K2UubGluZUhlaWdodDoi d2lkdGgiaW4gZT9wPWUud2lkdGgvKG9bMF0tYVswXSk6ImhlaWdodCJpbiBlJiYocD1lLmhl aWdodC8ob1sxXS1hWzFdKSksdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybltwKih0WzBdK2Yp LHAqKHRbMV0raCldfSkpfShpLnBvc2l0aW9ucyxlLHIpLGM9aS5lZGdlcyxmPSJjY3ciPT09 ZS5vcmllbnRhdGlvbjtpZihvKGEsYyksZS5wb2x5Z29uc3x8ZS5wb2x5Z29ufHxlLnBvbHls aW5lKXtmb3IodmFyIGg9bChjLGEpLHA9bmV3IEFycmF5KGgubGVuZ3RoKSxkPTA7ZDxoLmxl bmd0aDsrK2Qpe2Zvcih2YXIgbT1oW2RdLGc9bmV3IEFycmF5KG0ubGVuZ3RoKSx2PTA7djxt Lmxlbmd0aDsrK3Ype2Zvcih2YXIgeT1tW3ZdLHg9bmV3IEFycmF5KHkubGVuZ3RoKSxiPTA7 Yjx5Lmxlbmd0aDsrK2IpeFtiXT1hW3lbYl1dLnNsaWNlKCk7ZiYmeC5yZXZlcnNlKCksZ1t2 XT14fXBbZF09Z31yZXR1cm4gcH1yZXR1cm4gZS50cmlhbmdsZXN8fGUudHJpYW5ndWxhdGV8 fGUudHJpYW5nbGU/e2NlbGxzOnMoYSxjLHtkZWxhdW5heTohMSxleHRlcmlvcjohMSxpbnRl cmlvcjohMH0pLHBvc2l0aW9uczphfTp7ZWRnZXM6Yyxwb3NpdGlvbnM6YX19ZnVuY3Rpb24g aCh0LGUscil7dHJ5e3JldHVybiBmKHQsZSxyLCEwKX1jYXRjaCh0KXt9dHJ5e3JldHVybiBm KHQsZSxyLCExKX1jYXRjaCh0KXt9cmV0dXJuIGUucG9seWdvbnN8fGUucG9seWxpbmV8fGUu cG9seWdvbj9bXTplLnRyaWFuZ2xlc3x8ZS50cmlhbmd1bGF0ZXx8ZS50cmlhbmdsZT97Y2Vs bHM6W10scG9zaXRpb25zOltdfTp7ZWRnZXM6W10scG9zaXRpb25zOltdfX19LHtjZHQyZDo0 MiwiY2xlYW4tcHNsZyI6NTAsbmRhcnJheToyNTksInBsYW5hci1ncmFwaC10by1wb2x5bGlu ZSI6MjY4LCJzaW1wbGlmeS1wbGFuYXItZ3JhcGgiOjI5Nywic3VyZmFjZS1uZXRzIjozMDJ9 XSwzMTM6W2Z1bmN0aW9uKHQsZSxyKXshZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7aWYoInVu ZGVmaW5lZCI9PXR5cGVvZiBzZXN8fCFzZXMub2t8fHNlcy5vaygpKXsidW5kZWZpbmVkIiE9 dHlwZW9mIHNlcyYmKHNlcy53ZWFrTWFwUGVybWl0SG9zdE9iamVjdHM9bSk7dmFyIHQ9ITE7 aWYoImZ1bmN0aW9uIj09dHlwZW9mIFdlYWtNYXApe3ZhciByPVdlYWtNYXA7aWYoInVuZGVm aW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJi9GaXJlZm94Ly50ZXN0KG5hdmlnYXRvci51c2Vy QWdlbnQpKTtlbHNle3ZhciBuPW5ldyByLGk9T2JqZWN0LmZyZWV6ZSh7fSk7aWYobi5zZXQo aSwxKSwxPT09bi5nZXQoaSkpcmV0dXJuIHZvaWQoZS5leHBvcnRzPVdlYWtNYXApO3Q9ITB9 fU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIGE9T2JqZWN0LmdldE93blBy b3BlcnR5TmFtZXMsbz1PYmplY3QuZGVmaW5lUHJvcGVydHkscz1PYmplY3QuaXNFeHRlbnNp YmxlLGw9IndlYWttYXA6aWRlbnQ6IitNYXRoLnJhbmRvbSgpKyJfX18iO2lmKCJ1bmRlZmlu ZWQiIT10eXBlb2YgY3J5cHRvJiYiZnVuY3Rpb24iPT10eXBlb2YgY3J5cHRvLmdldFJhbmRv bVZhbHVlcyYmImZ1bmN0aW9uIj09dHlwZW9mIEFycmF5QnVmZmVyJiYiZnVuY3Rpb24iPT10 eXBlb2YgVWludDhBcnJheSl7dmFyIGM9bmV3IEFycmF5QnVmZmVyKDI1KSx1PW5ldyBVaW50 OEFycmF5KGMpO2NyeXB0by5nZXRSYW5kb21WYWx1ZXModSksbD0id2Vha21hcDpyYW5kOiIr QXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKHUsKGZ1bmN0aW9uKHQpe3JldHVybih0JTM2KS50 b1N0cmluZygzNil9KSkuam9pbigiIikrIl9fXyJ9aWYobyhPYmplY3QsImdldE93blByb3Bl cnR5TmFtZXMiLHt2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gYSh0KS5maWx0ZXIoZyl9fSks ImdldFByb3BlcnR5TmFtZXMiaW4gT2JqZWN0KXt2YXIgZj1PYmplY3QuZ2V0UHJvcGVydHlO YW1lcztvKE9iamVjdCwiZ2V0UHJvcGVydHlOYW1lcyIse3ZhbHVlOmZ1bmN0aW9uKHQpe3Jl dHVybiBmKHQpLmZpbHRlcihnKX19KX0hZnVuY3Rpb24oKXt2YXIgdD1PYmplY3QuZnJlZXpl O28oT2JqZWN0LCJmcmVlemUiLHt2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdihlKSx0KGUp fX0pO3ZhciBlPU9iamVjdC5zZWFsO28oT2JqZWN0LCJzZWFsIix7dmFsdWU6ZnVuY3Rpb24o dCl7cmV0dXJuIHYodCksZSh0KX19KTt2YXIgcj1PYmplY3QucHJldmVudEV4dGVuc2lvbnM7 byhPYmplY3QsInByZXZlbnRFeHRlbnNpb25zIix7dmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJu IHYodCkscih0KX19KX0oKTt2YXIgaD0hMSxwPTAsZD1mdW5jdGlvbigpe3RoaXMgaW5zdGFu Y2VvZiBkfHx4KCk7dmFyIHQ9W10sZT1bXSxyPXArKztyZXR1cm4gT2JqZWN0LmNyZWF0ZShk LnByb3RvdHlwZSx7Z2V0X19fOnt2YWx1ZTp5KChmdW5jdGlvbihuLGkpe3ZhciBhLG89dihu KTtyZXR1cm4gbz9yIGluIG8/b1tyXTppOihhPXQuaW5kZXhPZihuKSk+PTA/ZVthXTppfSkp fSxoYXNfX186e3ZhbHVlOnkoKGZ1bmN0aW9uKGUpe3ZhciBuPXYoZSk7cmV0dXJuIG4/ciBp biBuOnQuaW5kZXhPZihlKT49MH0pKX0sc2V0X19fOnt2YWx1ZTp5KChmdW5jdGlvbihuLGkp e3ZhciBhLG89dihuKTtyZXR1cm4gbz9vW3JdPWk6KGE9dC5pbmRleE9mKG4pKT49MD9lW2Fd PWk6KGE9dC5sZW5ndGgsZVthXT1pLHRbYV09biksdGhpc30pKX0sZGVsZXRlX19fOnt2YWx1 ZTp5KChmdW5jdGlvbihuKXt2YXIgaSxhLG89dihuKTtyZXR1cm4gbz9yIGluIG8mJmRlbGV0 ZSBvW3JdOiEoKGk9dC5pbmRleE9mKG4pKTwwKSYmKGE9dC5sZW5ndGgtMSx0W2ldPXZvaWQg MCxlW2ldPWVbYV0sdFtpXT10W2FdLHQubGVuZ3RoPWEsZS5sZW5ndGg9YSwhMCl9KSl9fSl9 O2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoT2JqZWN0LnByb3RvdHlwZSx7Z2V0Ont2YWx1 ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmdldF9fXyh0LGUpfSx3cml0YWJsZTohMCxj b25maWd1cmFibGU6ITB9LGhhczp7dmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGFz X19fKHQpfSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9LHNldDp7dmFsdWU6ZnVuY3Rp b24odCxlKXtyZXR1cm4gdGhpcy5zZXRfX18odCxlKX0sd3JpdGFibGU6ITAsY29uZmlndXJh YmxlOiEwfSxkZWxldGU6e3ZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlbGV0ZV9f Xyh0KX0sd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLCJmdW5jdGlvbiI9PXR5cGVv ZiByP2Z1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe3RoaXMgaW5zdGFuY2VvZiBkfHx4KCk7dmFy IGUsbj1uZXcgcixpPXZvaWQgMCxhPSExO3JldHVybiBlPXQ/ZnVuY3Rpb24odCxlKXtyZXR1 cm4gbi5zZXQodCxlKSxuLmhhcyh0KXx8KGl8fChpPW5ldyBkKSxpLnNldCh0LGUpKSx0aGlz fTpmdW5jdGlvbih0LGUpe2lmKGEpdHJ5e24uc2V0KHQsZSl9Y2F0Y2gocil7aXx8KGk9bmV3 IGQpLGkuc2V0X19fKHQsZSl9ZWxzZSBuLnNldCh0LGUpO3JldHVybiB0aGlzfSxPYmplY3Qu Y3JlYXRlKGQucHJvdG90eXBlLHtnZXRfX186e3ZhbHVlOnkoKGZ1bmN0aW9uKHQsZSl7cmV0 dXJuIGk/bi5oYXModCk/bi5nZXQodCk6aS5nZXRfX18odCxlKTpuLmdldCh0LGUpfSkpfSxo YXNfX186e3ZhbHVlOnkoKGZ1bmN0aW9uKHQpe3JldHVybiBuLmhhcyh0KXx8ISFpJiZpLmhh c19fXyh0KX0pKX0sc2V0X19fOnt2YWx1ZTp5KGUpfSxkZWxldGVfX186e3ZhbHVlOnkoKGZ1 bmN0aW9uKHQpe3ZhciBlPSEhbi5kZWxldGUodCk7cmV0dXJuIGkmJmkuZGVsZXRlX19fKHQp fHxlfSkpfSxwZXJtaXRIb3N0T2JqZWN0c19fXzp7dmFsdWU6eSgoZnVuY3Rpb24odCl7aWYo dCE9PW0pdGhyb3cgbmV3IEVycm9yKCJib2d1cyBjYWxsIHRvIHBlcm1pdEhvc3RPYmplY3Rz X19fIik7YT0hMH0pKX19KX10JiYidW5kZWZpbmVkIiE9dHlwZW9mIFByb3h5JiYoUHJveHk9 dm9pZCAwKSxuLnByb3RvdHlwZT1kLnByb3RvdHlwZSxlLmV4cG9ydHM9bixPYmplY3QuZGVm aW5lUHJvcGVydHkoV2Vha01hcC5wcm90b3R5cGUsImNvbnN0cnVjdG9yIix7dmFsdWU6V2Vh a01hcCxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pfSgpOigi dW5kZWZpbmVkIiE9dHlwZW9mIFByb3h5JiYoUHJveHk9dm9pZCAwKSxlLmV4cG9ydHM9ZCl9 ZnVuY3Rpb24gbSh0KXt0LnBlcm1pdEhvc3RPYmplY3RzX19fJiZ0LnBlcm1pdEhvc3RPYmpl Y3RzX19fKG0pfWZ1bmN0aW9uIGcodCl7cmV0dXJuISgid2Vha21hcDoiPT10LnN1YnN0cigw LCJ3ZWFrbWFwOiIubGVuZ3RoKSYmIl9fXyI9PT10LnN1YnN0cih0Lmxlbmd0aC0zKSl9ZnVu Y3Rpb24gdih0KXtpZih0IT09T2JqZWN0KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIk5vdCBh biBvYmplY3Q6ICIrdCk7dmFyIGU9dFtsXTtpZihlJiZlLmtleT09PXQpcmV0dXJuIGU7aWYo cyh0KSl7ZT17a2V5OnR9O3RyeXtyZXR1cm4gbyh0LGwse3ZhbHVlOmUsd3JpdGFibGU6ITEs ZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITF9KSxlfWNhdGNoKHQpe3JldHVybn19fWZ1 bmN0aW9uIHkodCl7cmV0dXJuIHQucHJvdG90eXBlPW51bGwsT2JqZWN0LmZyZWV6ZSh0KX1m dW5jdGlvbiB4KCl7aHx8InVuZGVmaW5lZCI9PXR5cGVvZiBjb25zb2xlfHwoaD0hMCxjb25z b2xlLndhcm4oIldlYWtNYXAgc2hvdWxkIGJlIGludm9rZWQgYXMgbmV3IFdlYWtNYXAoKSwg bm90IFdlYWtNYXAoKS4gVGhpcyB3aWxsIGJlIGFuIGVycm9yIGluIHRoZSBmdXR1cmUuIikp fX0oKX0se31dLDMxNDpbZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQoIi4vaGlkZGVuLXN0b3Jl LmpzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIHQ9e307cmV0dXJuIGZ1bmN0aW9uKGUp e2lmKCgib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lKSYmImZ1bmN0aW9uIiE9dHlwZW9m IGUpdGhyb3cgbmV3IEVycm9yKCJXZWFrbWFwLXNoaW06IEtleSBtdXN0IGJlIG9iamVjdCIp O3ZhciByPWUudmFsdWVPZih0KTtyZXR1cm4gciYmci5pZGVudGl0eT09PXQ/cjpuKGUsdCl9 fX0seyIuL2hpZGRlbi1zdG9yZS5qcyI6MzE1fV0sMzE1OltmdW5jdGlvbih0LGUscil7ZS5l eHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9e2lkZW50aXR5OmV9LG49dC52YWx1ZU9mO3Jl dHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwidmFsdWVPZiIse3ZhbHVlOmZ1bmN0aW9u KHQpe3JldHVybiB0IT09ZT9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpyfSx3cml0YWJsZToh MH0pLHJ9fSx7fV0sMzE2OltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiLi9jcmVhdGUtc3Rv cmUuanMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdD1uKCk7cmV0dXJue2dldDpmdW5j dGlvbihlLHIpe3ZhciBuPXQoZSk7cmV0dXJuIG4uaGFzT3duUHJvcGVydHkoInZhbHVlIik/ bi52YWx1ZTpyfSxzZXQ6ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdChlKS52YWx1ZT1yLHRoaXN9 LGhhczpmdW5jdGlvbihlKXtyZXR1cm4idmFsdWUiaW4gdChlKX0sZGVsZXRlOmZ1bmN0aW9u KGUpe3JldHVybiBkZWxldGUgdChlKS52YWx1ZX19fX0seyIuL2NyZWF0ZS1zdG9yZS5qcyI6 MzE0fV0sMzE3OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBuLGk9ZnVuY3Rp b24oKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIsbixpLGEpe3ZhciBvPXRbMF0scz1yWzBdLGw9 WzBdLGM9cztufD0wO3ZhciB1PTAsZj1zO2Zvcih1PTA7dTxvOysrdSl7dmFyIGg9ZVtuXS1h LHA9ZVtuK2NdLWE7aD49MCE9cD49MCYmaS5wdXNoKGxbMF0rLjUrLjUqKGgrcCkvKGgtcCkp LG4rPWYsKytsWzBdfX19O2UuZXhwb3J0cz0obj17ZnVuY05hbWU6e2Z1bmNOYW1lOiJ6ZXJv Q3Jvc3NpbmdzIn0uZnVuY05hbWV9LGZ1bmN0aW9uKHQpe3ZhciBlPXt9O3JldHVybiBmdW5j dGlvbihyLG4saSl7dmFyIGE9ci5kdHlwZSxvPXIub3JkZXIscz1bYSxvLmpvaW4oKV0uam9p bigpLGw9ZVtzXTtyZXR1cm4gbHx8KGVbc109bD10KFthLG9dKSksbChyLnNoYXBlLnNsaWNl KDApLHIuZGF0YSxyLnN0cmlkZSwwfHIub2Zmc2V0LG4saSl9fShpLmJpbmQodm9pZCAwLG4p KSl9LHt9XSwzMTg6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1 bmN0aW9uKHQsZSl7dmFyIHI9W107cmV0dXJuIGU9K2V8fDAsbih0LmhpKHQuc2hhcGVbMF0t MSkscixlKSxyfTt2YXIgbj10KCIuL2xpYi96Yy1jb3JlIil9LHsiLi9saWIvemMtY29yZSI6 MzE3fV19LHt9LFs2XSkoNil9KSl9KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLCJ1bmRlZmlu ZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2Vs ZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30pfSx7fV19LHt9LFsyN10p KDI3KX0pKTs8L3NjcmlwdD4gICAgICAgICAgICAgICAgPGRpdiBpZD0iMTYyZDg4OGEtODFl MC00NzQxLWE0MDYtOThjYzUzOWFkYWI2IiBjbGFzcz0icGxvdGx5LWdyYXBoLWRpdiBqcy1w bG90bHktcGxvdCIgc3R5bGU9ImhlaWdodDo2MDBweDsgd2lkdGg6MTIwMHB4OyI+PGRpdiBj bGFzcz0icGxvdC1jb250YWluZXIgcGxvdGx5Ij48ZGl2IGNsYXNzPSJ1c2VyLXNlbGVjdC1u b25lIHN2Zy1jb250YWluZXIiIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAx MjAwcHg7IGhlaWdodDogNjAwcHg7Ij48c3ZnIGNsYXNzPSJtYWluLXN2ZyIgeG1sbnM9Imh0 dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v cmcvMTk5OS94bGluayIgd2lkdGg9IjEyMDAiIGhlaWdodD0iNjAwIiBzdHlsZT0iYmFja2dy b3VuZDogd2hpdGU7Ij48ZGVmcyBpZD0iZGVmcy0xYmQ4YTgiPjxnIGNsYXNzPSJjbGlwcyI+ PGNsaXBwYXRoIGlkPSJjbGlwMWJkOGE4eHlwbG90IiBjbGFzcz0icGxvdGNsaXAiPjxyZWN0 IHdpZHRoPSI0MjYuMTUwMDAwMDAwMDAwMDMiIGhlaWdodD0iMTcwLjI1Ij48L3JlY3Q+PC9j bGlwcGF0aD48Y2xpcHBhdGggaWQ9ImNsaXAxYmQ4YTh4MnkycGxvdCIgY2xhc3M9InBsb3Rj bGlwIj48cmVjdCB3aWR0aD0iNDI2LjE1IiBoZWlnaHQ9IjE3MC4yNSI+PC9yZWN0PjwvY2xp cHBhdGg+PGNsaXBwYXRoIGlkPSJjbGlwMWJkOGE4eDN5M3Bsb3QiIGNsYXNzPSJwbG90Y2xp cCI+PHJlY3Qgd2lkdGg9IjQyNi4xNTAwMDAwMDAwMDAwMyIgaGVpZ2h0PSIxNzAuMjUiPjwv cmVjdD48L2NsaXBwYXRoPjxjbGlwcGF0aCBpZD0iY2xpcDFiZDhhOHg0eTRwbG90IiBjbGFz cz0icGxvdGNsaXAiPjxyZWN0IHdpZHRoPSI0MjYuMTUiIGhlaWdodD0iMTcwLjI1Ij48L3Jl Y3Q+PC9jbGlwcGF0aD48Y2xpcHBhdGggY2xhc3M9ImF4ZXNjbGlwIiBpZD0iY2xpcDFiZDhh OHgiPjxyZWN0IHg9IjYyIiB5PSIwIiB3aWR0aD0iNDI2LjE1MDAwMDAwMDAwMDAzIiBoZWln aHQ9IjYwMCI+PC9yZWN0PjwvY2xpcHBhdGg+PGNsaXBwYXRoIGNsYXNzPSJheGVzY2xpcCIg aWQ9ImNsaXAxYmQ4YTh5Ij48cmVjdCB4PSIwIiB5PSIxMDAiIHdpZHRoPSIxMjAwIiBoZWln aHQ9IjE3MC4yNSI+PC9yZWN0PjwvY2xpcHBhdGg+PGNsaXBwYXRoIGNsYXNzPSJheGVzY2xp cCIgaWQ9ImNsaXAxYmQ4YTh4eSI+PHJlY3QgeD0iNjIiIHk9IjEwMCIgd2lkdGg9IjQyNi4x NTAwMDAwMDAwMDAwMyIgaGVpZ2h0PSIxNzAuMjUiPjwvcmVjdD48L2NsaXBwYXRoPjxjbGlw cGF0aCBjbGFzcz0iYXhlc2NsaXAiIGlkPSJjbGlwMWJkOGE4eTIiPjxyZWN0IHg9IjAiIHk9 IjEwMCIgd2lkdGg9IjEyMDAiIGhlaWdodD0iMTcwLjI1Ij48L3JlY3Q+PC9jbGlwcGF0aD48 Y2xpcHBhdGggY2xhc3M9ImF4ZXNjbGlwIiBpZD0iY2xpcDFiZDhhOHh5MiI+PHJlY3QgeD0i NjIiIHk9IjEwMCIgd2lkdGg9IjQyNi4xNTAwMDAwMDAwMDAwMyIgaGVpZ2h0PSIxNzAuMjUi PjwvcmVjdD48L2NsaXBwYXRoPjxjbGlwcGF0aCBjbGFzcz0iYXhlc2NsaXAiIGlkPSJjbGlw MWJkOGE4eTMiPjxyZWN0IHg9IjAiIHk9IjM4My43NSIgd2lkdGg9IjEyMDAiIGhlaWdodD0i MTcwLjI1Ij48L3JlY3Q+PC9jbGlwcGF0aD48Y2xpcHBhdGggY2xhc3M9ImF4ZXNjbGlwIiBp ZD0iY2xpcDFiZDhhOHh5MyI+PHJlY3QgeD0iNjIiIHk9IjM4My43NSIgd2lkdGg9IjQyNi4x NTAwMDAwMDAwMDAwMyIgaGVpZ2h0PSIxNzAuMjUiPjwvcmVjdD48L2NsaXBwYXRoPjxjbGlw cGF0aCBjbGFzcz0iYXhlc2NsaXAiIGlkPSJjbGlwMWJkOGE4eTQiPjxyZWN0IHg9IjAiIHk9 IjM4My43NSIgd2lkdGg9IjEyMDAiIGhlaWdodD0iMTcwLjI1Ij48L3JlY3Q+PC9jbGlwcGF0 aD48Y2xpcHBhdGggY2xhc3M9ImF4ZXNjbGlwIiBpZD0iY2xpcDFiZDhhOHh5NCI+PHJlY3Qg eD0iNjIiIHk9IjM4My43NSIgd2lkdGg9IjQyNi4xNTAwMDAwMDAwMDAwMyIgaGVpZ2h0PSIx NzAuMjUiPjwvcmVjdD48L2NsaXBwYXRoPjxjbGlwcGF0aCBjbGFzcz0iYXhlc2NsaXAiIGlk PSJjbGlwMWJkOGE4eDIiPjxyZWN0IHg9IjU4Mi44NSIgeT0iMCIgd2lkdGg9IjQyNi4xNSIg aGVpZ2h0PSI2MDAiPjwvcmVjdD48L2NsaXBwYXRoPjxjbGlwcGF0aCBjbGFzcz0iYXhlc2Ns aXAiIGlkPSJjbGlwMWJkOGE4eDJ5Ij48cmVjdCB4PSI1ODIuODUiIHk9IjEwMCIgd2lkdGg9 IjQyNi4xNSIgaGVpZ2h0PSIxNzAuMjUiPjwvcmVjdD48L2NsaXBwYXRoPjxjbGlwcGF0aCBj bGFzcz0iYXhlc2NsaXAiIGlkPSJjbGlwMWJkOGE4eDJ5MiI+PHJlY3QgeD0iNTgyLjg1IiB5 PSIxMDAiIHdpZHRoPSI0MjYuMTUiIGhlaWdodD0iMTcwLjI1Ij48L3JlY3Q+PC9jbGlwcGF0 aD48Y2xpcHBhdGggY2xhc3M9ImF4ZXNjbGlwIiBpZD0iY2xpcDFiZDhhOHgyeTMiPjxyZWN0 IHg9IjU4Mi44NSIgeT0iMzgzLjc1IiB3aWR0aD0iNDI2LjE1IiBoZWlnaHQ9IjE3MC4yNSI+ PC9yZWN0PjwvY2xpcHBhdGg+PGNsaXBwYXRoIGNsYXNzPSJheGVzY2xpcCIgaWQ9ImNsaXAx YmQ4YTh4Mnk0Ij48cmVjdCB4PSI1ODIuODUiIHk9IjM4My43NSIgd2lkdGg9IjQyNi4xNSIg aGVpZ2h0PSIxNzAuMjUiPjwvcmVjdD48L2NsaXBwYXRoPjxjbGlwcGF0aCBjbGFzcz0iYXhl c2NsaXAiIGlkPSJjbGlwMWJkOGE4eDMiPjxyZWN0IHg9IjYyIiB5PSIwIiB3aWR0aD0iNDI2 LjE1MDAwMDAwMDAwMDAzIiBoZWlnaHQ9IjYwMCI+PC9yZWN0PjwvY2xpcHBhdGg+PGNsaXBw YXRoIGNsYXNzPSJheGVzY2xpcCIgaWQ9ImNsaXAxYmQ4YTh4M3kiPjxyZWN0IHg9IjYyIiB5 PSIxMDAiIHdpZHRoPSI0MjYuMTUwMDAwMDAwMDAwMDMiIGhlaWdodD0iMTcwLjI1Ij48L3Jl Y3Q+PC9jbGlwcGF0aD48Y2xpcHBhdGggY2xhc3M9ImF4ZXNjbGlwIiBpZD0iY2xpcDFiZDhh OHgzeTIiPjxyZWN0IHg9IjYyIiB5PSIxMDAiIHdpZHRoPSI0MjYuMTUwMDAwMDAwMDAwMDMi IGhlaWdodD0iMTcwLjI1Ij48L3JlY3Q+PC9jbGlwcGF0aD48Y2xpcHBhdGggY2xhc3M9ImF4 ZXNjbGlwIiBpZD0iY2xpcDFiZDhhOHgzeTMiPjxyZWN0IHg9IjYyIiB5PSIzODMuNzUiIHdp ZHRoPSI0MjYuMTUwMDAwMDAwMDAwMDMiIGhlaWdodD0iMTcwLjI1Ij48L3JlY3Q+PC9jbGlw cGF0aD48Y2xpcHBhdGggY2xhc3M9ImF4ZXNjbGlwIiBpZD0iY2xpcDFiZDhhOHgzeTQiPjxy ZWN0IHg9IjYyIiB5PSIzODMuNzUiIHdpZHRoPSI0MjYuMTUwMDAwMDAwMDAwMDMiIGhlaWdo dD0iMTcwLjI1Ij48L3JlY3Q+PC9jbGlwcGF0aD48Y2xpcHBhdGggY2xhc3M9ImF4ZXNjbGlw IiBpZD0iY2xpcDFiZDhhOHg0Ij48cmVjdCB4PSI1ODIuODUiIHk9IjAiIHdpZHRoPSI0MjYu MTUiIGhlaWdodD0iNjAwIj48L3JlY3Q+PC9jbGlwcGF0aD48Y2xpcHBhdGggY2xhc3M9ImF4 ZXNjbGlwIiBpZD0iY2xpcDFiZDhhOHg0eSI+PHJlY3QgeD0iNTgyLjg1IiB5PSIxMDAiIHdp ZHRoPSI0MjYuMTUiIGhlaWdodD0iMTcwLjI1Ij48L3JlY3Q+PC9jbGlwcGF0aD48Y2xpcHBh dGggY2xhc3M9ImF4ZXNjbGlwIiBpZD0iY2xpcDFiZDhhOHg0eTIiPjxyZWN0IHg9IjU4Mi44 NSIgeT0iMTAwIiB3aWR0aD0iNDI2LjE1IiBoZWlnaHQ9IjE3MC4yNSI+PC9yZWN0PjwvY2xp cHBhdGg+PGNsaXBwYXRoIGNsYXNzPSJheGVzY2xpcCIgaWQ9ImNsaXAxYmQ4YTh4NHkzIj48 cmVjdCB4PSI1ODIuODUiIHk9IjM4My43NSIgd2lkdGg9IjQyNi4xNSIgaGVpZ2h0PSIxNzAu MjUiPjwvcmVjdD48L2NsaXBwYXRoPjxjbGlwcGF0aCBjbGFzcz0iYXhlc2NsaXAiIGlkPSJj bGlwMWJkOGE4eDR5NCI+PHJlY3QgeD0iNTgyLjg1IiB5PSIzODMuNzUiIHdpZHRoPSI0MjYu MTUiIGhlaWdodD0iMTcwLjI1Ij48L3JlY3Q+PC9jbGlwcGF0aD48L2c+PGcgY2xhc3M9Imdy YWRpZW50cyI+PC9nPjxnIGNsYXNzPSJwYXR0ZXJucyI+PC9nPjwvZGVmcz48ZyBjbGFzcz0i YmdsYXllciI+PHJlY3QgY2xhc3M9ImJnIiB4PSI2MiIgeT0iMTAwIiB3aWR0aD0iNDI2LjE1 MDAwMDAwMDAwMDAzIiBoZWlnaHQ9IjE3MC4yNSIgc3R5bGU9ImZpbGw6IHJnYigyMjksIDIz NiwgMjQ2KTsgZmlsbC1vcGFjaXR5OiAxOyBzdHJva2Utd2lkdGg6IDA7Ij48L3JlY3Q+PHJl Y3QgY2xhc3M9ImJnIiB4PSI1ODIuODUiIHk9IjEwMCIgd2lkdGg9IjQyNi4xNSIgaGVpZ2h0 PSIxNzAuMjUiIHN0eWxlPSJmaWxsOiByZ2IoMjI5LCAyMzYsIDI0Nik7IGZpbGwtb3BhY2l0 eTogMTsgc3Ryb2tlLXdpZHRoOiAwOyI+PC9yZWN0PjxyZWN0IGNsYXNzPSJiZyIgeD0iNjIi IHk9IjM4My43NSIgd2lkdGg9IjQyNi4xNTAwMDAwMDAwMDAwMyIgaGVpZ2h0PSIxNzAuMjUi IHN0eWxlPSJmaWxsOiByZ2IoMjI5LCAyMzYsIDI0Nik7IGZpbGwtb3BhY2l0eTogMTsgc3Ry b2tlLXdpZHRoOiAwOyI+PC9yZWN0PjxyZWN0IGNsYXNzPSJiZyIgeD0iNTgyLjg1IiB5PSIz ODMuNzUiIHdpZHRoPSI0MjYuMTUiIGhlaWdodD0iMTcwLjI1IiBzdHlsZT0iZmlsbDogcmdi KDIyOSwgMjM2LCAyNDYpOyBmaWxsLW9wYWNpdHk6IDE7IHN0cm9rZS13aWR0aDogMDsiPjwv cmVjdD48L2c+PGcgY2xhc3M9ImRyYWdsYXllciBjdXJzb3ItY3Jvc3NoYWlyIj48ZyBjbGFz cz0ieHkiPjxyZWN0IGNsYXNzPSJuc2V3ZHJhZyBkcmFnIiBkYXRhLXN1YnBsb3Q9Inh5IiB4 PSI2MiIgeT0iMTAwIiB3aWR0aD0iNDI2LjE1MDAwMDAwMDAwMDAzIiBoZWlnaHQ9IjE3MC4y NSIgc3R5bGU9ImZpbGw6IHRyYW5zcGFyZW50OyBzdHJva2Utd2lkdGg6IDA7IHBvaW50ZXIt ZXZlbnRzOiBhbGw7Ij48L3JlY3Q+PHJlY3QgY2xhc3M9Im53ZHJhZyBkcmFnIGN1cnNvci1u dy1yZXNpemUiIGRhdGEtc3VicGxvdD0ieHkiIHg9IjQyIiB5PSI4MCIgd2lkdGg9IjIwIiBo ZWlnaHQ9IjIwIiBzdHlsZT0iZmlsbDogdHJhbnNwYXJlbnQ7IHN0cm9rZS13aWR0aDogMDsg cG9pbnRlci1ldmVudHM6IGFsbDsiPjwvcmVjdD48cmVjdCBjbGFzcz0ibmVkcmFnIGRyYWcg Y3Vyc29yLW5lLXJlc2l6ZSIgZGF0YS1zdWJwbG90PSJ4eSIgeD0iNDg4LjE1MDAwMDAwMDAw MDAzIiB5PSI4MCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBzdHlsZT0iZmlsbDogdHJhbnNw YXJlbnQ7IHN0cm9rZS13aWR0aDogMDsgcG9pbnRlci1ldmVudHM6IGFsbDsiPjwvcmVjdD48 cmVjdCBjbGFzcz0ic3dkcmFnIGRyYWcgY3Vyc29yLXN3LXJlc2l6ZSIgZGF0YS1zdWJwbG90 PSJ4eSIgeD0iNDIiIHk9IjI3MC4yNSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBzdHlsZT0i ZmlsbDogdHJhbnNwYXJlbnQ7IHN0cm9rZS13aWR0aDogMDsgcG9pbnRlci1ldmVudHM6IGFs bDsiPjwvcmVjdD48cmVjdCBjbGFzcz0ic2VkcmFnIGRyYWcgY3Vyc29yLXNlLXJlc2l6ZSIg ZGF0YS1zdWJwbG90PSJ4eSIgeD0iNDg4LjE1MDAwMDAwMDAwMDAzIiB5PSIyNzAuMjUiIHdp ZHRoPSIyMCIgaGVpZ2h0PSIyMCIgc3R5bGU9ImZpbGw6IHRyYW5zcGFyZW50OyBzdHJva2Ut d2lkdGg6IDA7IHBvaW50ZXItZXZlbnRzOiBhbGw7Ij48L3JlY3Q+PHJlY3QgY2xhc3M9ImV3 ZHJhZyBkcmFnIGN1cnNvci1ldy1yZXNpemUiIGRhdGEtc3VicGxvdD0ieHkiIHg9IjEwNC42 MTUwMDAwMDAwMDAwMSIgeT0iMjcwLjc1IiB3aWR0aD0iMzQwLjkyMDAwMDAwMDAwMDEiIGhl aWdodD0iMjAiIHN0eWxlPSJmaWxsOiB0cmFuc3BhcmVudDsgc3Ryb2tlLXdpZHRoOiAwOyBw b2ludGVyLWV2ZW50czogYWxsOyI+PC9yZWN0PjxyZWN0IGNsYXNzPSJ3ZHJhZyBkcmFnIGN1 cnNvci13LXJlc2l6ZSIgZGF0YS1zdWJwbG90PSJ4eSIgeD0iNjIiIHk9IjI3MC43NSIgd2lk dGg9IjQyLjYxNTAwMDAwMDAwMDAxIiBoZWlnaHQ9IjIwIiBzdHlsZT0iZmlsbDogdHJhbnNw YXJlbnQ7IHN0cm9rZS13aWR0aDogMDsgcG9pbnRlci1ldmVudHM6IGFsbDsiPjwvcmVjdD48 cmVjdCBjbGFzcz0iZWRyYWcgZHJhZyBjdXJzb3ItZS1yZXNpemUiIGRhdGEtc3VicGxvdD0i eHkiIHg9IjQ0NS41MzUiIHk9IjI3MC43NSIgd2lkdGg9IjQyLjYxNTAwMDAwMDAwMDAxIiBo ZWlnaHQ9IjIwIiBzdHlsZT0iZmlsbDogdHJhbnNwYXJlbnQ7IHN0cm9rZS13aWR0aDogMDsg cG9pbnRlci1ldmVudHM6IGFsbDsiPjwvcmVjdD48cmVjdCBjbGFzcz0ibnNkcmFnIGRyYWcg Y3Vyc29yLW5zLXJlc2l6ZSIgZGF0YS1zdWJwbG90PSJ4eSIgeD0iNDEuNSIgeT0iMTE3LjAy NSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjEzNi4yMDAwMDAwMDAwMDAwMiIgc3R5bGU9ImZpbGw6 IHRyYW5zcGFyZW50OyBzdHJva2Utd2lkdGg6IDA7IHBvaW50ZXItZXZlbnRzOiBhbGw7Ij48 L3JlY3Q+PHJlY3QgY2xhc3M9InNkcmFnIGRyYWcgY3Vyc29yLXMtcmVzaXplIiBkYXRhLXN1 YnBsb3Q9Inh5IiB4PSI0MS41IiB5PSIyNTMuMjI1IiB3aWR0aD0iMjAiIGhlaWdodD0iMTcu MDI1MDAwMDAwMDAwMDAyIiBzdHlsZT0iZmlsbDogdHJhbnNwYXJlbnQ7IHN0cm9rZS13aWR0 aDogMDsgcG9pbnRlci1ldmVudHM6IGFsbDsiPjwvcmVjdD48cmVjdCBjbGFzcz0ibmRyYWcg ZHJhZyBjdXJzb3Itbi1yZXNpemUiIGRhdGEtc3VicGxvdD0ieHkiIHg9IjQxLjUiIHk9IjEw MCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjE3LjAyNTAwMDAwMDAwMDAwMiIgc3R5bGU9ImZpbGw6 IHRyYW5zcGFyZW50OyBzdHJva2Utd2lkdGg6IDA7IHBvaW50ZXItZXZlbnRzOiBhbGw7Ij48 L3JlY3Q+PC9nPjxnIGNsYXNzPSJ4MnkyIj48cmVjdCBjbGFzcz0ibnNld2RyYWcgZHJhZyIg ZGF0YS1zdWJwbG90PSJ4MnkyIiB4PSI1ODIuODUiIHk9IjEwMCIgd2lkdGg9IjQyNi4xNSIg aGVpZ2h0PSIxNzAuMjUiIHN0eWxlPSJmaWxsOiB0cmFuc3BhcmVudDsgc3Ryb2tlLXdpZHRo OiAwOyBwb2ludGVyLWV2ZW50czogYWxsOyI+PC9yZWN0PjxyZWN0IGNsYXNzPSJud2RyYWcg ZHJhZyBjdXJzb3ItbnctcmVzaXplIiBkYXRhLXN1YnBsb3Q9IngyeTIiIHg9IjU2Mi44NSIg eT0iODAiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgc3R5bGU9ImZpbGw6IHRyYW5zcGFyZW50 OyBzdHJva2Utd2lkdGg6IDA7IHBvaW50ZXItZXZlbnRzOiBhbGw7Ij48L3JlY3Q+PHJlY3Qg Y2xhc3M9Im5lZHJhZyBkcmFnIGN1cnNvci1uZS1yZXNpemUiIGRhdGEtc3VicGxvdD0ieDJ5 MiIgeD0iMTAwOSIgeT0iODAiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgc3R5bGU9ImZpbGw6 IHRyYW5zcGFyZW50OyBzdHJva2Utd2lkdGg6IDA7IHBvaW50ZXItZXZlbnRzOiBhbGw7Ij48 L3JlY3Q+PHJlY3QgY2xhc3M9InN3ZHJhZyBkcmFnIGN1cnNvci1zdy1yZXNpemUiIGRhdGEt c3VicGxvdD0ieDJ5MiIgeD0iNTYyLjg1IiB5PSIyNzAuMjUiIHdpZHRoPSIyMCIgaGVpZ2h0 PSIyMCIgc3R5bGU9ImZpbGw6IHRyYW5zcGFyZW50OyBzdHJva2Utd2lkdGg6IDA7IHBvaW50 ZXItZXZlbnRzOiBhbGw7Ij48L3JlY3Q+PHJlY3QgY2xhc3M9InNlZHJhZyBkcmFnIGN1cnNv ci1zZS1yZXNpemUiIGRhdGEtc3VicGxvdD0ieDJ5MiIgeD0iMTAwOSIgeT0iMjcwLjI1IiB3 aWR0aD0iMjAiIGhlaWdodD0iMjAiIHN0eWxlPSJmaWxsOiB0cmFuc3BhcmVudDsgc3Ryb2tl LXdpZHRoOiAwOyBwb2ludGVyLWV2ZW50czogYWxsOyI+PC9yZWN0PjxyZWN0IGNsYXNzPSJl d2RyYWcgZHJhZyBjdXJzb3ItZXctcmVzaXplIiBkYXRhLXN1YnBsb3Q9IngyeTIiIHg9IjYy NS40NjUiIHk9IjI3MC43NSIgd2lkdGg9IjM0MC45MiIgaGVpZ2h0PSIyMCIgc3R5bGU9ImZp bGw6IHRyYW5zcGFyZW50OyBzdHJva2Utd2lkdGg6IDA7IHBvaW50ZXItZXZlbnRzOiBhbGw7 Ij48L3JlY3Q+PHJlY3QgY2xhc3M9IndkcmFnIGRyYWcgY3Vyc29yLXctcmVzaXplIiBkYXRh LXN1YnBsb3Q9IngyeTIiIHg9IjU4Mi44NSIgeT0iMjcwLjc1IiB3aWR0aD0iNDIuNjE1IiBo ZWlnaHQ9IjIwIiBzdHlsZT0iZmlsbDogdHJhbnNwYXJlbnQ7IHN0cm9rZS13aWR0aDogMDsg cG9pbnRlci1ldmVudHM6IGFsbDsiPjwvcmVjdD48cmVjdCBjbGFzcz0iZWRyYWcgZHJhZyBj dXJzb3ItZS1yZXNpemUiIGRhdGEtc3VicGxvdD0ieDJ5MiIgeD0iOTY2LjM4NSIgeT0iMjcw Ljc1IiB3aWR0aD0iNDIuNjE1IiBoZWlnaHQ9IjIwIiBzdHlsZT0iZmlsbDogdHJhbnNwYXJl bnQ7IHN0cm9rZS13aWR0aDogMDsgcG9pbnRlci1ldmVudHM6IGFsbDsiPjwvcmVjdD48cmVj dCBjbGFzcz0ibnNkcmFnIGRyYWcgY3Vyc29yLW5zLXJlc2l6ZSIgZGF0YS1zdWJwbG90PSJ4 MnkyIiB4PSI1NjIuMzUiIHk9IjExNy4wMjUiIHdpZHRoPSIyMCIgaGVpZ2h0PSIxMzYuMjAw MDAwMDAwMDAwMDIiIHN0eWxlPSJmaWxsOiB0cmFuc3BhcmVudDsgc3Ryb2tlLXdpZHRoOiAw OyBwb2ludGVyLWV2ZW50czogYWxsOyI+PC9yZWN0PjxyZWN0IGNsYXNzPSJzZHJhZyBkcmFn IGN1cnNvci1zLXJlc2l6ZSIgZGF0YS1zdWJwbG90PSJ4MnkyIiB4PSI1NjIuMzUiIHk9IjI1 My4yMjUiIHdpZHRoPSIyMCIgaGVpZ2h0PSIxNy4wMjUwMDAwMDAwMDAwMDIiIHN0eWxlPSJm aWxsOiB0cmFuc3BhcmVudDsgc3Ryb2tlLXdpZHRoOiAwOyBwb2ludGVyLWV2ZW50czogYWxs OyI+PC9yZWN0PjxyZWN0IGNsYXNzPSJuZHJhZyBkcmFnIGN1cnNvci1uLXJlc2l6ZSIgZGF0 YS1zdWJwbG90PSJ4MnkyIiB4PSI1NjIuMzUiIHk9IjEwMCIgd2lkdGg9IjIwIiBoZWlnaHQ9 IjE3LjAyNTAwMDAwMDAwMDAwMiIgc3R5bGU9ImZpbGw6IHRyYW5zcGFyZW50OyBzdHJva2Ut d2lkdGg6IDA7IHBvaW50ZXItZXZlbnRzOiBhbGw7Ij48L3JlY3Q+PC9nPjxnIGNsYXNzPSJ4 M3kzIj48cmVjdCBjbGFzcz0ibnNld2RyYWcgZHJhZyIgZGF0YS1zdWJwbG90PSJ4M3kzIiB4 PSI2MiIgeT0iMzgzLjc1IiB3aWR0aD0iNDI2LjE1MDAwMDAwMDAwMDAzIiBoZWlnaHQ9IjE3 MC4yNSIgc3R5bGU9ImZpbGw6IHRyYW5zcGFyZW50OyBzdHJva2Utd2lkdGg6IDA7IHBvaW50 ZXItZXZlbnRzOiBhbGw7Ij48L3JlY3Q+PHJlY3QgY2xhc3M9Im53ZHJhZyBkcmFnIGN1cnNv ci1udy1yZXNpemUiIGRhdGEtc3VicGxvdD0ieDN5MyIgeD0iNDIiIHk9IjM2My43NSIgd2lk dGg9IjIwIiBoZWlnaHQ9IjIwIiBzdHlsZT0iZmlsbDogdHJhbnNwYXJlbnQ7IHN0cm9rZS13 aWR0aDogMDsgcG9pbnRlci1ldmVudHM6IGFsbDsiPjwvcmVjdD48cmVjdCBjbGFzcz0ibmVk cmFnIGRyYWcgY3Vyc29yLW5lLXJlc2l6ZSIgZGF0YS1zdWJwbG90PSJ4M3kzIiB4PSI0ODgu MTUwMDAwMDAwMDAwMDMiIHk9IjM2My43NSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBzdHls ZT0iZmlsbDogdHJhbnNwYXJlbnQ7IHN0cm9rZS13aWR0aDogMDsgcG9pbnRlci1ldmVudHM6 IGFsbDsiPjwvcmVjdD48cmVjdCBjbGFzcz0ic3dkcmFnIGRyYWcgY3Vyc29yLXN3LXJlc2l6 ZSIgZGF0YS1zdWJwbG90PSJ4M3kzIiB4PSI0MiIgeT0iNTU0IiB3aWR0aD0iMjAiIGhlaWdo dD0iMjAiIHN0eWxlPSJmaWxsOiB0cmFuc3BhcmVudDsgc3Ryb2tlLXdpZHRoOiAwOyBwb2lu dGVyLWV2ZW50czogYWxsOyI+PC9yZWN0PjxyZWN0IGNsYXNzPSJzZWRyYWcgZHJhZyBjdXJz b3Itc2UtcmVzaXplIiBkYXRhLXN1YnBsb3Q9IngzeTMiIHg9IjQ4OC4xNTAwMDAwMDAwMDAw MyIgeT0iNTU0IiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHN0eWxlPSJmaWxsOiB0cmFuc3Bh cmVudDsgc3Ryb2tlLXdpZHRoOiAwOyBwb2ludGVyLWV2ZW50czogYWxsOyI+PC9yZWN0Pjxy ZWN0IGNsYXNzPSJld2RyYWcgZHJhZyBjdXJzb3ItZXctcmVzaXplIiBkYXRhLXN1YnBsb3Q9 IngzeTMiIHg9IjEwNC42MTUwMDAwMDAwMDAwMSIgeT0iNTU0LjUiIHdpZHRoPSIzNDAuOTIw MDAwMDAwMDAwMSIgaGVpZ2h0PSIyMCIgc3R5bGU9ImZpbGw6IHRyYW5zcGFyZW50OyBzdHJv a2Utd2lkdGg6IDA7IHBvaW50ZXItZXZlbnRzOiBhbGw7Ij48L3JlY3Q+PHJlY3QgY2xhc3M9 IndkcmFnIGRyYWcgY3Vyc29yLXctcmVzaXplIiBkYXRhLXN1YnBsb3Q9IngzeTMiIHg9IjYy IiB5PSI1NTQuNSIgd2lkdGg9IjQyLjYxNTAwMDAwMDAwMDAxIiBoZWlnaHQ9IjIwIiBzdHls ZT0iZmlsbDogdHJhbnNwYXJlbnQ7IHN0cm9rZS13aWR0aDogMDsgcG9pbnRlci1ldmVudHM6 IGFsbDsiPjwvcmVjdD48cmVjdCBjbGFzcz0iZWRyYWcgZHJhZyBjdXJzb3ItZS1yZXNpemUi IGRhdGEtc3VicGxvdD0ieDN5MyIgeD0iNDQ1LjUzNSIgeT0iNTU0LjUiIHdpZHRoPSI0Mi42 MTUwMDAwMDAwMDAwMSIgaGVpZ2h0PSIyMCIgc3R5bGU9ImZpbGw6IHRyYW5zcGFyZW50OyBz dHJva2Utd2lkdGg6IDA7IHBvaW50ZXItZXZlbnRzOiBhbGw7Ij48L3JlY3Q+PHJlY3QgY2xh c3M9Im5zZHJhZyBkcmFnIGN1cnNvci1ucy1yZXNpemUiIGRhdGEtc3VicGxvdD0ieDN5MyIg eD0iNDEuNSIgeT0iNDAwLjc3NSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjEzNi4yMDAwMDAwMDAw MDAwMiIgc3R5bGU9ImZpbGw6IHRyYW5zcGFyZW50OyBzdHJva2Utd2lkdGg6IDA7IHBvaW50 ZXItZXZlbnRzOiBhbGw7Ij48L3JlY3Q+PHJlY3QgY2xhc3M9InNkcmFnIGRyYWcgY3Vyc29y LXMtcmVzaXplIiBkYXRhLXN1YnBsb3Q9IngzeTMiIHg9IjQxLjUiIHk9IjUzNi45NzUiIHdp ZHRoPSIyMCIgaGVpZ2h0PSIxNy4wMjUwMDAwMDAwMDAwMDIiIHN0eWxlPSJmaWxsOiB0cmFu c3BhcmVudDsgc3Ryb2tlLXdpZHRoOiAwOyBwb2ludGVyLWV2ZW50czogYWxsOyI+PC9yZWN0 PjxyZWN0IGNsYXNzPSJuZHJhZyBkcmFnIGN1cnNvci1uLXJlc2l6ZSIgZGF0YS1zdWJwbG90 PSJ4M3kzIiB4PSI0MS41IiB5PSIzODMuNzUiIHdpZHRoPSIyMCIgaGVpZ2h0PSIxNy4wMjUw MDAwMDAwMDAwMDIiIHN0eWxlPSJmaWxsOiB0cmFuc3BhcmVudDsgc3Ryb2tlLXdpZHRoOiAw OyBwb2ludGVyLWV2ZW50czogYWxsOyI+PC9yZWN0PjwvZz48ZyBjbGFzcz0ieDR5NCI+PHJl Y3QgY2xhc3M9Im5zZXdkcmFnIGRyYWciIGRhdGEtc3VicGxvdD0ieDR5NCIgeD0iNTgyLjg1 IiB5PSIzODMuNzUiIHdpZHRoPSI0MjYuMTUiIGhlaWdodD0iMTcwLjI1IiBzdHlsZT0iZmls bDogdHJhbnNwYXJlbnQ7IHN0cm9rZS13aWR0aDogMDsgcG9pbnRlci1ldmVudHM6IGFsbDsi PjwvcmVjdD48cmVjdCBjbGFzcz0ibndkcmFnIGRyYWcgY3Vyc29yLW53LXJlc2l6ZSIgZGF0 YS1zdWJwbG90PSJ4NHk0IiB4PSI1NjIuODUiIHk9IjM2My43NSIgd2lkdGg9IjIwIiBoZWln aHQ9IjIwIiBzdHlsZT0iZmlsbDogdHJhbnNwYXJlbnQ7IHN0cm9rZS13aWR0aDogMDsgcG9p bnRlci1ldmVudHM6IGFsbDsiPjwvcmVjdD48cmVjdCBjbGFzcz0ibmVkcmFnIGRyYWcgY3Vy c29yLW5lLXJlc2l6ZSIgZGF0YS1zdWJwbG90PSJ4NHk0IiB4PSIxMDA5IiB5PSIzNjMuNzUi IHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgc3R5bGU9ImZpbGw6IHRyYW5zcGFyZW50OyBzdHJv a2Utd2lkdGg6IDA7IHBvaW50ZXItZXZlbnRzOiBhbGw7Ij48L3JlY3Q+PHJlY3QgY2xhc3M9 InN3ZHJhZyBkcmFnIGN1cnNvci1zdy1yZXNpemUiIGRhdGEtc3VicGxvdD0ieDR5NCIgeD0i NTYyLjg1IiB5PSI1NTQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgc3R5bGU9ImZpbGw6IHRy YW5zcGFyZW50OyBzdHJva2Utd2lkdGg6IDA7IHBvaW50ZXItZXZlbnRzOiBhbGw7Ij48L3Jl Y3Q+PHJlY3QgY2xhc3M9InNlZHJhZyBkcmFnIGN1cnNvci1zZS1yZXNpemUiIGRhdGEtc3Vi cGxvdD0ieDR5NCIgeD0iMTAwOSIgeT0iNTU0IiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHN0 eWxlPSJmaWxsOiB0cmFuc3BhcmVudDsgc3Ryb2tlLXdpZHRoOiAwOyBwb2ludGVyLWV2ZW50 czogYWxsOyI+PC9yZWN0PjxyZWN0IGNsYXNzPSJld2RyYWcgZHJhZyBjdXJzb3ItZXctcmVz aXplIiBkYXRhLXN1YnBsb3Q9Ing0eTQiIHg9IjYyNS40NjUiIHk9IjU1NC41IiB3aWR0aD0i MzQwLjkyIiBoZWlnaHQ9IjIwIiBzdHlsZT0iZmlsbDogdHJhbnNwYXJlbnQ7IHN0cm9rZS13 aWR0aDogMDsgcG9pbnRlci1ldmVudHM6IGFsbDsiPjwvcmVjdD48cmVjdCBjbGFzcz0id2Ry YWcgZHJhZyBjdXJzb3Itdy1yZXNpemUiIGRhdGEtc3VicGxvdD0ieDR5NCIgeD0iNTgyLjg1 IiB5PSI1NTQuNSIgd2lkdGg9IjQyLjYxNSIgaGVpZ2h0PSIyMCIgc3R5bGU9ImZpbGw6IHRy YW5zcGFyZW50OyBzdHJva2Utd2lkdGg6IDA7IHBvaW50ZXItZXZlbnRzOiBhbGw7Ij48L3Jl Y3Q+PHJlY3QgY2xhc3M9ImVkcmFnIGRyYWcgY3Vyc29yLWUtcmVzaXplIiBkYXRhLXN1YnBs b3Q9Ing0eTQiIHg9Ijk2Ni4zODUiIHk9IjU1NC41IiB3aWR0aD0iNDIuNjE1IiBoZWlnaHQ9 IjIwIiBzdHlsZT0iZmlsbDogdHJhbnNwYXJlbnQ7IHN0cm9rZS13aWR0aDogMDsgcG9pbnRl ci1ldmVudHM6IGFsbDsiPjwvcmVjdD48cmVjdCBjbGFzcz0ibnNkcmFnIGRyYWcgY3Vyc29y LW5zLXJlc2l6ZSIgZGF0YS1zdWJwbG90PSJ4NHk0IiB4PSI1NjIuMzUiIHk9IjQwMC43NzUi IHdpZHRoPSIyMCIgaGVpZ2h0PSIxMzYuMjAwMDAwMDAwMDAwMDIiIHN0eWxlPSJmaWxsOiB0 cmFuc3BhcmVudDsgc3Ryb2tlLXdpZHRoOiAwOyBwb2ludGVyLWV2ZW50czogYWxsOyI+PC9y ZWN0PjxyZWN0IGNsYXNzPSJzZHJhZyBkcmFnIGN1cnNvci1zLXJlc2l6ZSIgZGF0YS1zdWJw bG90PSJ4NHk0IiB4PSI1NjIuMzUiIHk9IjUzNi45NzUiIHdpZHRoPSIyMCIgaGVpZ2h0PSIx Ny4wMjUwMDAwMDAwMDAwMDIiIHN0eWxlPSJmaWxsOiB0cmFuc3BhcmVudDsgc3Ryb2tlLXdp ZHRoOiAwOyBwb2ludGVyLWV2ZW50czogYWxsOyI+PC9yZWN0PjxyZWN0IGNsYXNzPSJuZHJh ZyBkcmFnIGN1cnNvci1uLXJlc2l6ZSIgZGF0YS1zdWJwbG90PSJ4NHk0IiB4PSI1NjIuMzUi IHk9IjM4My43NSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjE3LjAyNTAwMDAwMDAwMDAwMiIgc3R5 bGU9ImZpbGw6IHRyYW5zcGFyZW50OyBzdHJva2Utd2lkdGg6IDA7IHBvaW50ZXItZXZlbnRz OiBhbGw7Ij48L3JlY3Q+PC9nPjwvZz48ZyBjbGFzcz0ibGF5ZXItYmVsb3ciPjxnIGNsYXNz PSJpbWFnZWxheWVyIj48L2c+PGcgY2xhc3M9InNoYXBlbGF5ZXIiPjwvZz48L2c+PGcgY2xh c3M9ImNhcnRlc2lhbmxheWVyIj48ZyBjbGFzcz0ic3VicGxvdCB4eSI+PGcgY2xhc3M9Imxh eWVyLXN1YnBsb3QiPjxnIGNsYXNzPSJzaGFwZWxheWVyIj48L2c+PGcgY2xhc3M9ImltYWdl bGF5ZXIiPjwvZz48L2c+PGcgY2xhc3M9Im1pbm9yLWdyaWRsYXllciI+PGcgY2xhc3M9Ingi PjwvZz48ZyBjbGFzcz0ieSI+PC9nPjwvZz48ZyBjbGFzcz0iZ3JpZGxheWVyIj48ZyBjbGFz cz0ieCI+PHBhdGggY2xhc3M9InhncmlkIGNyaXNwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgx NzAuNTksMCkiIGQ9Ik0wLDEwMHYxNzAuMjUiIHN0eWxlPSJzdHJva2U6IHJnYigyNTUsIDI1 NSwgMjU1KTsgc3Ryb2tlLW9wYWNpdHk6IDE7IHN0cm9rZS13aWR0aDogMXB4OyI+PC9wYXRo PjxwYXRoIGNsYXNzPSJ4Z3JpZCBjcmlzcCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjU0LjE2 LDApIiBkPSJNMCwxMDB2MTcwLjI1IiBzdHlsZT0ic3Ryb2tlOiByZ2IoMjU1LCAyNTUsIDI1 NSk7IHN0cm9rZS1vcGFjaXR5OiAxOyBzdHJva2Utd2lkdGg6IDFweDsiPjwvcGF0aD48cGF0 aCBjbGFzcz0ieGdyaWQgY3Jpc3AiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMzNy43MywwKSIg ZD0iTTAsMTAwdjE3MC4yNSIgc3R5bGU9InN0cm9rZTogcmdiKDI1NSwgMjU1LCAyNTUpOyBz dHJva2Utb3BhY2l0eTogMTsgc3Ryb2tlLXdpZHRoOiAxcHg7Ij48L3BhdGg+PHBhdGggY2xh c3M9InhncmlkIGNyaXNwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MjEuMywwKSIgZD0iTTAs MTAwdjE3MC4yNSIgc3R5bGU9InN0cm9rZTogcmdiKDI1NSwgMjU1LCAyNTUpOyBzdHJva2Ut b3BhY2l0eTogMTsgc3Ryb2tlLXdpZHRoOiAxcHg7Ij48L3BhdGg+PC9nPjxnIGNsYXNzPSJ5 Ij48cGF0aCBjbGFzcz0ieWdyaWQgY3Jpc3AiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsMjEx Ljc2OTk5OTk5OTk5OTk4KSIgZD0iTTYyLDBoNDI2LjE1MDAwMDAwMDAwMDAzIiBzdHlsZT0i c3Ryb2tlOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHN0cm9rZS1vcGFjaXR5OiAxOyBzdHJva2Ut d2lkdGg6IDFweDsiPjwvcGF0aD48cGF0aCBjbGFzcz0ieWdyaWQgY3Jpc3AiIHRyYW5zZm9y bT0idHJhbnNsYXRlKDAsMTY1LjU1KSIgZD0iTTYyLDBoNDI2LjE1MDAwMDAwMDAwMDAzIiBz dHlsZT0ic3Ryb2tlOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHN0cm9rZS1vcGFjaXR5OiAxOyBz dHJva2Utd2lkdGg6IDFweDsiPjwvcGF0aD48cGF0aCBjbGFzcz0ieWdyaWQgY3Jpc3AiIHRy YW5zZm9ybT0idHJhbnNsYXRlKDAsMTE5LjMyKSIgZD0iTTYyLDBoNDI2LjE1MDAwMDAwMDAw MDAzIiBzdHlsZT0ic3Ryb2tlOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHN0cm9rZS1vcGFjaXR5 OiAxOyBzdHJva2Utd2lkdGg6IDFweDsiPjwvcGF0aD48L2c+PC9nPjxnIGNsYXNzPSJ6ZXJv bGluZWxheWVyIj48cGF0aCBjbGFzcz0ieHpsIHpsIGNyaXNwIiB0cmFuc2Zvcm09InRyYW5z bGF0ZSg4Ny4wMiwwKSIgZD0iTTAsMTAwdjE3MC4yNSIgc3R5bGU9InN0cm9rZTogcmdiKDI1 NSwgMjU1LCAyNTUpOyBzdHJva2Utb3BhY2l0eTogMTsgc3Ryb2tlLXdpZHRoOiAycHg7Ij48 L3BhdGg+PHBhdGggY2xhc3M9Inl6bCB6bCBjcmlzcCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUo MCwyNTgpIiBkPSJNNjIsMGg0MjYuMTUwMDAwMDAwMDAwMDMiIHN0eWxlPSJzdHJva2U6IHJn YigyNTUsIDI1NSwgMjU1KTsgc3Ryb2tlLW9wYWNpdHk6IDE7IHN0cm9rZS13aWR0aDogMnB4 OyI+PC9wYXRoPjwvZz48cGF0aCBjbGFzcz0ieGxpbmVzLWJlbG93Ij48L3BhdGg+PHBhdGgg Y2xhc3M9InlsaW5lcy1iZWxvdyI+PC9wYXRoPjxnIGNsYXNzPSJvdmVybGluZXMtYmVsb3ci PjwvZz48ZyBjbGFzcz0ieGF4aXNsYXllci1iZWxvdyI+PC9nPjxnIGNsYXNzPSJ5YXhpc2xh eWVyLWJlbG93Ij48L2c+PGcgY2xhc3M9Im92ZXJheGVzLWJlbG93Ij48L2c+PGcgY2xhc3M9 InBsb3QiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYyLDEwMCkiIGNsaXAtcGF0aD0idXJsKCNj bGlwMWJkOGE4eHlwbG90KSI+PGcgY2xhc3M9InNjYXR0ZXJsYXllciBtbGF5ZXIiPjxnIGNs YXNzPSJ0cmFjZSBzY2F0dGVyIHRyYWNlMDcyODliIiBzdHlsZT0ic3Ryb2tlLW1pdGVybGlt aXQ6IDI7IG9wYWNpdHk6IDE7Ij48ZyBjbGFzcz0iZmlsbHMiPjwvZz48ZyBjbGFzcz0iZXJy b3JiYXJzIj48L2c+PGcgY2xhc3M9ImxpbmVzIj48cGF0aCBjbGFzcz0ianMtbGluZSIgZD0i TTI1LjA2LDE1Ny45OEw0MDEuMDksMTU1LjgzIiBzdHlsZT0idmVjdG9yLWVmZmVjdDogbm9u LXNjYWxpbmctc3Ryb2tlOyBmaWxsOiBub25lOyBzdHJva2U6IHJnYigwLCAxMjgsIDApOyBz dHJva2Utb3BhY2l0eTogMTsgc3Ryb2tlLXdpZHRoOiAycHg7IG9wYWNpdHk6IDE7IHN0cm9r ZS1kYXNoYXJyYXk6IDlweCwgOXB4OyI+PC9wYXRoPjwvZz48ZyBjbGFzcz0icG9pbnRzIj48 cGF0aCBjbGFzcz0icG9pbnQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI1LjA2LDE1Ny45OCki IGQ9Ik0zLDBBMywzIDAgMSwxIDAsLTNBMywzIDAgMCwxIDMsMFoiIHN0eWxlPSJvcGFjaXR5 OiAxOyBzdHJva2Utd2lkdGg6IDBweDsgZmlsbDogcmdiKDAsIDEyOCwgMCk7IGZpbGwtb3Bh Y2l0eTogMTsiPjwvcGF0aD48cGF0aCBjbGFzcz0icG9pbnQiIHRyYW5zZm9ybT0idHJhbnNs YXRlKDY2LjgyLDE1Ny43MikiIGQ9Ik0zLDBBMywzIDAgMSwxIDAsLTNBMywzIDAgMCwxIDMs MFoiIHN0eWxlPSJvcGFjaXR5OiAxOyBzdHJva2Utd2lkdGg6IDBweDsgZmlsbDogcmdiKDAs IDEyOCwgMCk7IGZpbGwtb3BhY2l0eTogMTsiPjwvcGF0aD48cGF0aCBjbGFzcz0icG9pbnQi IHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwOC42LDE1Ny40NCkiIGQ9Ik0zLDBBMywzIDAgMSwx IDAsLTNBMywzIDAgMCwxIDMsMFoiIHN0eWxlPSJvcGFjaXR5OiAxOyBzdHJva2Utd2lkdGg6 IDBweDsgZmlsbDogcmdiKDAsIDEyOCwgMCk7IGZpbGwtb3BhY2l0eTogMTsiPjwvcGF0aD48 cGF0aCBjbGFzcz0icG9pbnQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1MC4zOSwxNTcuMTIp IiBkPSJNMywwQTMsMyAwIDEsMSAwLC0zQTMsMyAwIDAsMSAzLDBaIiBzdHlsZT0ib3BhY2l0 eTogMTsgc3Ryb2tlLXdpZHRoOiAwcHg7IGZpbGw6IHJnYigwLCAxMjgsIDApOyBmaWxsLW9w YWNpdHk6IDE7Ij48L3BhdGg+PHBhdGggY2xhc3M9InBvaW50IiB0cmFuc2Zvcm09InRyYW5z bGF0ZSgxOTIuMTcsMTU2LjgyKSIgZD0iTTMsMEEzLDMgMCAxLDEgMCwtM0EzLDMgMCAwLDEg MywwWiIgc3R5bGU9Im9wYWNpdHk6IDE7IHN0cm9rZS13aWR0aDogMHB4OyBmaWxsOiByZ2Io MCwgMTI4LCAwKTsgZmlsbC1vcGFjaXR5OiAxOyI+PC9wYXRoPjxwYXRoIGNsYXNzPSJwb2lu dCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjMzLjk1LDE1Ni43MSkiIGQ9Ik0zLDBBMywzIDAg MSwxIDAsLTNBMywzIDAgMCwxIDMsMFoiIHN0eWxlPSJvcGFjaXR5OiAxOyBzdHJva2Utd2lk dGg6IDBweDsgZmlsbDogcmdiKDAsIDEyOCwgMCk7IGZpbGwtb3BhY2l0eTogMTsiPjwvcGF0 aD48cGF0aCBjbGFzcz0icG9pbnQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI3NS43NCwxNTYu NSkiIGQ9Ik0zLDBBMywzIDAgMSwxIDAsLTNBMywzIDAgMCwxIDMsMFoiIHN0eWxlPSJvcGFj aXR5OiAxOyBzdHJva2Utd2lkdGg6IDBweDsgZmlsbDogcmdiKDAsIDEyOCwgMCk7IGZpbGwt b3BhY2l0eTogMTsiPjwvcGF0aD48cGF0aCBjbGFzcz0icG9pbnQiIHRyYW5zZm9ybT0idHJh bnNsYXRlKDMxNy41MiwxNTYuMDkpIiBkPSJNMywwQTMsMyAwIDEsMSAwLC0zQTMsMyAwIDAs MSAzLDBaIiBzdHlsZT0ib3BhY2l0eTogMTsgc3Ryb2tlLXdpZHRoOiAwcHg7IGZpbGw6IHJn YigwLCAxMjgsIDApOyBmaWxsLW9wYWNpdHk6IDE7Ij48L3BhdGg+PHBhdGggY2xhc3M9InBv aW50IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNTkuMzEsMTU2LjA2KSIgZD0iTTMsMEEzLDMg MCAxLDEgMCwtM0EzLDMgMCAwLDEgMywwWiIgc3R5bGU9Im9wYWNpdHk6IDE7IHN0cm9rZS13 aWR0aDogMHB4OyBmaWxsOiByZ2IoMCwgMTI4LCAwKTsgZmlsbC1vcGFjaXR5OiAxOyI+PC9w YXRoPjxwYXRoIGNsYXNzPSJwb2ludCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDAxLjA5LDE1 NS44MykiIGQ9Ik0zLDBBMywzIDAgMSwxIDAsLTNBMywzIDAgMCwxIDMsMFoiIHN0eWxlPSJv cGFjaXR5OiAxOyBzdHJva2Utd2lkdGg6IDBweDsgZmlsbDogcmdiKDAsIDEyOCwgMCk7IGZp bGwtb3BhY2l0eTogMTsiPjwvcGF0aD48L2c+PGcgY2xhc3M9InRleHQiPjwvZz48L2c+PGcg Y2xhc3M9InRyYWNlIHNjYXR0ZXIgdHJhY2U3ZDViMDAiIHN0eWxlPSJzdHJva2UtbWl0ZXJs aW1pdDogMjsgb3BhY2l0eTogMTsiPjxnIGNsYXNzPSJmaWxscyI+PC9nPjxnIGNsYXNzPSJl cnJvcmJhcnMiPjwvZz48ZyBjbGFzcz0ibGluZXMiPjxwYXRoIGNsYXNzPSJqcy1saW5lIiBk PSJNMjUuMDYsMTU3Ljk5TDY2LjgyLDE1NS4yTDEwOC42LDE0OS4yMUwxOTIuMTcsMTI4LjQ1 TDIzMy45NSwxMDEuOTdMMjc1Ljc0LDg0LjI2TDMxNy41Miw2OS4yMUwzNTkuMzEsNDUuNzhM NDAxLjA5LDEyLjI2IiBzdHlsZT0idmVjdG9yLWVmZmVjdDogbm9uLXNjYWxpbmctc3Ryb2tl OyBmaWxsOiBub25lOyBzdHJva2U6IHJnYigyNTUsIDE2NSwgMCk7IHN0cm9rZS1vcGFjaXR5 OiAxOyBzdHJva2Utd2lkdGg6IDJweDsgb3BhY2l0eTogMTsgc3Ryb2tlLWRhc2hhcnJheTog M3B4LCAzcHg7Ij48L3BhdGg+PC9nPjxnIGNsYXNzPSJwb2ludHMiPjxwYXRoIGNsYXNzPSJw b2ludCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUuMDYsMTU3Ljk5KSIgZD0iTTMsMEEzLDMg MCAxLDEgMCwtM0EzLDMgMCAwLDEgMywwWiIgc3R5bGU9Im9wYWNpdHk6IDE7IHN0cm9rZS13 aWR0aDogMHB4OyBmaWxsOiByZ2IoMjU1LCAxNjUsIDApOyBmaWxsLW9wYWNpdHk6IDE7Ij48 L3BhdGg+PHBhdGggY2xhc3M9InBvaW50IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2Ni44Miwx NTUuMikiIGQ9Ik0zLDBBMywzIDAgMSwxIDAsLTNBMywzIDAgMCwxIDMsMFoiIHN0eWxlPSJv cGFjaXR5OiAxOyBzdHJva2Utd2lkdGg6IDBweDsgZmlsbDogcmdiKDI1NSwgMTY1LCAwKTsg ZmlsbC1vcGFjaXR5OiAxOyI+PC9wYXRoPjxwYXRoIGNsYXNzPSJwb2ludCIgdHJhbnNmb3Jt PSJ0cmFuc2xhdGUoMTA4LjYsMTQ5LjIxKSIgZD0iTTMsMEEzLDMgMCAxLDEgMCwtM0EzLDMg MCAwLDEgMywwWiIgc3R5bGU9Im9wYWNpdHk6IDE7IHN0cm9rZS13aWR0aDogMHB4OyBmaWxs OiByZ2IoMjU1LCAxNjUsIDApOyBmaWxsLW9wYWNpdHk6IDE7Ij48L3BhdGg+PHBhdGggY2xh c3M9InBvaW50IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNTAuMzksMTM4Ljk1KSIgZD0iTTMs MEEzLDMgMCAxLDEgMCwtM0EzLDMgMCAwLDEgMywwWiIgc3R5bGU9Im9wYWNpdHk6IDE7IHN0 cm9rZS13aWR0aDogMHB4OyBmaWxsOiByZ2IoMjU1LCAxNjUsIDApOyBmaWxsLW9wYWNpdHk6 IDE7Ij48L3BhdGg+PHBhdGggY2xhc3M9InBvaW50IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgx OTIuMTcsMTI4LjQ1KSIgZD0iTTMsMEEzLDMgMCAxLDEgMCwtM0EzLDMgMCAwLDEgMywwWiIg c3R5bGU9Im9wYWNpdHk6IDE7IHN0cm9rZS13aWR0aDogMHB4OyBmaWxsOiByZ2IoMjU1LCAx NjUsIDApOyBmaWxsLW9wYWNpdHk6IDE7Ij48L3BhdGg+PHBhdGggY2xhc3M9InBvaW50IiB0 cmFuc2Zvcm09InRyYW5zbGF0ZSgyMzMuOTUsMTAxLjk3KSIgZD0iTTMsMEEzLDMgMCAxLDEg MCwtM0EzLDMgMCAwLDEgMywwWiIgc3R5bGU9Im9wYWNpdHk6IDE7IHN0cm9rZS13aWR0aDog MHB4OyBmaWxsOiByZ2IoMjU1LCAxNjUsIDApOyBmaWxsLW9wYWNpdHk6IDE7Ij48L3BhdGg+ PHBhdGggY2xhc3M9InBvaW50IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNzUuNzQsODQuMjYp IiBkPSJNMywwQTMsMyAwIDEsMSAwLC0zQTMsMyAwIDAsMSAzLDBaIiBzdHlsZT0ib3BhY2l0 eTogMTsgc3Ryb2tlLXdpZHRoOiAwcHg7IGZpbGw6IHJnYigyNTUsIDE2NSwgMCk7IGZpbGwt b3BhY2l0eTogMTsiPjwvcGF0aD48cGF0aCBjbGFzcz0icG9pbnQiIHRyYW5zZm9ybT0idHJh bnNsYXRlKDMxNy41Miw2OS4yMSkiIGQ9Ik0zLDBBMywzIDAgMSwxIDAsLTNBMywzIDAgMCwx IDMsMFoiIHN0eWxlPSJvcGFjaXR5OiAxOyBzdHJva2Utd2lkdGg6IDBweDsgZmlsbDogcmdi KDI1NSwgMTY1LCAwKTsgZmlsbC1vcGFjaXR5OiAxOyI+PC9wYXRoPjxwYXRoIGNsYXNzPSJw b2ludCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzU5LjMxLDQ1Ljc4KSIgZD0iTTMsMEEzLDMg MCAxLDEgMCwtM0EzLDMgMCAwLDEgMywwWiIgc3R5bGU9Im9wYWNpdHk6IDE7IHN0cm9rZS13 aWR0aDogMHB4OyBmaWxsOiByZ2IoMjU1LCAxNjUsIDApOyBmaWxsLW9wYWNpdHk6IDE7Ij48 L3BhdGg+PHBhdGggY2xhc3M9InBvaW50IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MDEuMDks MTIuMjYpIiBkPSJNMywwQTMsMyAwIDEsMSAwLC0zQTMsMyAwIDAsMSAzLDBaIiBzdHlsZT0i b3BhY2l0eTogMTsgc3Ryb2tlLXdpZHRoOiAwcHg7IGZpbGw6IHJnYigyNTUsIDE2NSwgMCk7 IGZpbGwtb3BhY2l0eTogMTsiPjwvcGF0aD48L2c+PGcgY2xhc3M9InRleHQiPjwvZz48L2c+ PC9nPjwvZz48ZyBjbGFzcz0ib3ZlcnBsb3QiPjwvZz48cGF0aCBjbGFzcz0ieGxpbmVzLWFi b3ZlIGNyaXNwIiBkPSJNMCwwIiBzdHlsZT0iZmlsbDogbm9uZTsiPjwvcGF0aD48cGF0aCBj bGFzcz0ieWxpbmVzLWFib3ZlIGNyaXNwIiBkPSJNMCwwIiBzdHlsZT0iZmlsbDogbm9uZTsi PjwvcGF0aD48ZyBjbGFzcz0ib3ZlcmxpbmVzLWFib3ZlIj48L2c+PGcgY2xhc3M9InhheGlz bGF5ZXItYWJvdmUiPjxnIGNsYXNzPSJ4dGljayI+PHRleHQgdGV4dC1hbmNob3I9Im1pZGRs ZSIgeD0iMCIgeT0iMjg1LjI1IiBkYXRhLXVuZm9ybWF0dGVkPSIwIiBkYXRhLW1hdGg9Ik4i IHRyYW5zZm9ybT0idHJhbnNsYXRlKDg3LjAyLDApIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZx dW90O0NvdXJpZXIgTmV3JnF1b3Q7LCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTRweDsgZmls bDogcmdiKDEwMiwgNTEsIDE1Myk7IGZpbGwtb3BhY2l0eTogMTsgd2hpdGUtc3BhY2U6IHBy ZTsgb3BhY2l0eTogMTsiPjA8L3RleHQ+PC9nPjxnIGNsYXNzPSJ4dGljayI+PHRleHQgdGV4 dC1hbmNob3I9Im1pZGRsZSIgeD0iMCIgeT0iMjg1LjI1IiBkYXRhLXVuZm9ybWF0dGVkPSIx MGsiIGRhdGEtbWF0aD0iTiIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtDb3VyaWVyIE5l dyZxdW90OywgbW9ub3NwYWNlOyBmb250LXNpemU6IDE0cHg7IGZpbGw6IHJnYigxMDIsIDUx LCAxNTMpOyBmaWxsLW9wYWNpdHk6IDE7IHdoaXRlLXNwYWNlOiBwcmU7IG9wYWNpdHk6IDE7 IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNzAuNTksMCkiPjEwazwvdGV4dD48L2c+PGcgY2xh c3M9Inh0aWNrIj48dGV4dCB0ZXh0LWFuY2hvcj0ibWlkZGxlIiB4PSIwIiB5PSIyODUuMjUi IGRhdGEtdW5mb3JtYXR0ZWQ9IjIwayIgZGF0YS1tYXRoPSJOIiBzdHlsZT0iZm9udC1mYW1p bHk6ICZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7LCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTRw eDsgZmlsbDogcmdiKDEwMiwgNTEsIDE1Myk7IGZpbGwtb3BhY2l0eTogMTsgd2hpdGUtc3Bh Y2U6IHByZTsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI1NC4xNiwwKSI+ MjBrPC90ZXh0PjwvZz48ZyBjbGFzcz0ieHRpY2siPjx0ZXh0IHRleHQtYW5jaG9yPSJtaWRk bGUiIHg9IjAiIHk9IjI4NS4yNSIgZGF0YS11bmZvcm1hdHRlZD0iMzBrIiBkYXRhLW1hdGg9 Ik4iIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7Q291cmllciBOZXcmcXVvdDssIG1vbm9z cGFjZTsgZm9udC1zaXplOiAxNHB4OyBmaWxsOiByZ2IoMTAyLCA1MSwgMTUzKTsgZmlsbC1v cGFjaXR5OiAxOyB3aGl0ZS1zcGFjZTogcHJlOyBvcGFjaXR5OiAxOyIgdHJhbnNmb3JtPSJ0 cmFuc2xhdGUoMzM3LjczLDApIj4zMGs8L3RleHQ+PC9nPjxnIGNsYXNzPSJ4dGljayI+PHRl eHQgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0iMCIgeT0iMjg1LjI1IiBkYXRhLXVuZm9ybWF0 dGVkPSI0MGsiIGRhdGEtbWF0aD0iTiIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtDb3Vy aWVyIE5ldyZxdW90OywgbW9ub3NwYWNlOyBmb250LXNpemU6IDE0cHg7IGZpbGw6IHJnYigx MDIsIDUxLCAxNTMpOyBmaWxsLW9wYWNpdHk6IDE7IHdoaXRlLXNwYWNlOiBwcmU7IG9wYWNp dHk6IDE7IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MjEuMywwKSI+NDBrPC90ZXh0PjwvZz48 L2c+PGcgY2xhc3M9InlheGlzbGF5ZXItYWJvdmUiPjxnIGNsYXNzPSJ5dGljayI+PHRleHQg dGV4dC1hbmNob3I9ImVuZCIgeD0iNjEiIHk9IjQuODk5OTk5OTk5OTk5OTk5NSIgZGF0YS11 bmZvcm1hdHRlZD0iMCIgZGF0YS1tYXRoPSJOIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDI1 OCkiIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7Q291cmllciBOZXcmcXVvdDssIG1vbm9z cGFjZTsgZm9udC1zaXplOiAxNHB4OyBmaWxsOiByZ2IoMTAyLCA1MSwgMTUzKTsgZmlsbC1v cGFjaXR5OiAxOyB3aGl0ZS1zcGFjZTogcHJlOyBvcGFjaXR5OiAxOyI+MDwvdGV4dD48L2c+ PGcgY2xhc3M9Inl0aWNrIj48dGV4dCB0ZXh0LWFuY2hvcj0iZW5kIiB4PSI2MSIgeT0iNC44 OTk5OTk5OTk5OTk5OTk1IiBkYXRhLXVuZm9ybWF0dGVkPSIyMGsiIGRhdGEtbWF0aD0iTiIg c3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtDb3VyaWVyIE5ldyZxdW90OywgbW9ub3NwYWNl OyBmb250LXNpemU6IDE0cHg7IGZpbGw6IHJnYigxMDIsIDUxLCAxNTMpOyBmaWxsLW9wYWNp dHk6IDE7IHdoaXRlLXNwYWNlOiBwcmU7IG9wYWNpdHk6IDE7IiB0cmFuc2Zvcm09InRyYW5z bGF0ZSgwLDIxMS43Njk5OTk5OTk5OTk5OCkiPjIwazwvdGV4dD48L2c+PGcgY2xhc3M9Inl0 aWNrIj48dGV4dCB0ZXh0LWFuY2hvcj0iZW5kIiB4PSI2MSIgeT0iNC44OTk5OTk5OTk5OTk5 OTk1IiBkYXRhLXVuZm9ybWF0dGVkPSI0MGsiIGRhdGEtbWF0aD0iTiIgc3R5bGU9ImZvbnQt ZmFtaWx5OiAmcXVvdDtDb3VyaWVyIE5ldyZxdW90OywgbW9ub3NwYWNlOyBmb250LXNpemU6 IDE0cHg7IGZpbGw6IHJnYigxMDIsIDUxLCAxNTMpOyBmaWxsLW9wYWNpdHk6IDE7IHdoaXRl LXNwYWNlOiBwcmU7IG9wYWNpdHk6IDE7IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDE2NS41 NSkiPjQwazwvdGV4dD48L2c+PGcgY2xhc3M9Inl0aWNrIj48dGV4dCB0ZXh0LWFuY2hvcj0i ZW5kIiB4PSI2MSIgeT0iNC44OTk5OTk5OTk5OTk5OTk1IiBkYXRhLXVuZm9ybWF0dGVkPSI2 MGsiIGRhdGEtbWF0aD0iTiIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtDb3VyaWVyIE5l dyZxdW90OywgbW9ub3NwYWNlOyBmb250LXNpemU6IDE0cHg7IGZpbGw6IHJnYigxMDIsIDUx LCAxNTMpOyBmaWxsLW9wYWNpdHk6IDE7IHdoaXRlLXNwYWNlOiBwcmU7IG9wYWNpdHk6IDE7 IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDExOS4zMikiPjYwazwvdGV4dD48L2c+PC9nPjxn IGNsYXNzPSJvdmVyYXhlcy1hYm92ZSI+PC9nPjwvZz48ZyBjbGFzcz0ic3VicGxvdCB4Mnky Ij48ZyBjbGFzcz0ibGF5ZXItc3VicGxvdCI+PGcgY2xhc3M9InNoYXBlbGF5ZXIiPjwvZz48 ZyBjbGFzcz0iaW1hZ2VsYXllciI+PC9nPjwvZz48ZyBjbGFzcz0ibWlub3ItZ3JpZGxheWVy Ij48ZyBjbGFzcz0ieDIiPjwvZz48ZyBjbGFzcz0ieTIiPjwvZz48L2c+PGcgY2xhc3M9Imdy aWRsYXllciI+PGcgY2xhc3M9IngyIj48cGF0aCBjbGFzcz0ieDJncmlkIGNyaXNwIiB0cmFu c2Zvcm09InRyYW5zbGF0ZSg2OTEuNDQsMCkiIGQ9Ik0wLDEwMHYxNzAuMjUiIHN0eWxlPSJz dHJva2U6IHJnYigyNTUsIDI1NSwgMjU1KTsgc3Ryb2tlLW9wYWNpdHk6IDE7IHN0cm9rZS13 aWR0aDogMXB4OyI+PC9wYXRoPjxwYXRoIGNsYXNzPSJ4MmdyaWQgY3Jpc3AiIHRyYW5zZm9y bT0idHJhbnNsYXRlKDc3NS4wMSwwKSIgZD0iTTAsMTAwdjE3MC4yNSIgc3R5bGU9InN0cm9r ZTogcmdiKDI1NSwgMjU1LCAyNTUpOyBzdHJva2Utb3BhY2l0eTogMTsgc3Ryb2tlLXdpZHRo OiAxcHg7Ij48L3BhdGg+PHBhdGggY2xhc3M9IngyZ3JpZCBjcmlzcCIgdHJhbnNmb3JtPSJ0 cmFuc2xhdGUoODU4LjU4LDApIiBkPSJNMCwxMDB2MTcwLjI1IiBzdHlsZT0ic3Ryb2tlOiBy Z2IoMjU1LCAyNTUsIDI1NSk7IHN0cm9rZS1vcGFjaXR5OiAxOyBzdHJva2Utd2lkdGg6IDFw eDsiPjwvcGF0aD48cGF0aCBjbGFzcz0ieDJncmlkIGNyaXNwIiB0cmFuc2Zvcm09InRyYW5z bGF0ZSg5NDIuMTUwMDAwMDAwMDAwMSwwKSIgZD0iTTAsMTAwdjE3MC4yNSIgc3R5bGU9InN0 cm9rZTogcmdiKDI1NSwgMjU1LCAyNTUpOyBzdHJva2Utb3BhY2l0eTogMTsgc3Ryb2tlLXdp ZHRoOiAxcHg7Ij48L3BhdGg+PC9nPjxnIGNsYXNzPSJ5MiI+PHBhdGggY2xhc3M9InkyZ3Jp ZCBjcmlzcCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwyNjMuOSkiIGQ9Ik01ODIuODUsMGg0 MjYuMTUiIHN0eWxlPSJzdHJva2U6IHJnYigyNTUsIDI1NSwgMjU1KTsgc3Ryb2tlLW9wYWNp dHk6IDE7IHN0cm9rZS13aWR0aDogMXB4OyI+PC9wYXRoPjxwYXRoIGNsYXNzPSJ5MmdyaWQg Y3Jpc3AiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsMjI0LjUxKSIgZD0iTTU4Mi44NSwwaDQy Ni4xNSIgc3R5bGU9InN0cm9rZTogcmdiKDI1NSwgMjU1LCAyNTUpOyBzdHJva2Utb3BhY2l0 eTogMTsgc3Ryb2tlLXdpZHRoOiAxcHg7Ij48L3BhdGg+PHBhdGggY2xhc3M9InkyZ3JpZCBj cmlzcCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwxODUuMTMpIiBkPSJNNTgyLjg1LDBoNDI2 LjE1IiBzdHlsZT0ic3Ryb2tlOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHN0cm9rZS1vcGFjaXR5 OiAxOyBzdHJva2Utd2lkdGg6IDFweDsiPjwvcGF0aD48cGF0aCBjbGFzcz0ieTJncmlkIGNy aXNwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDE0NS43NCkiIGQ9Ik01ODIuODUsMGg0MjYu MTUiIHN0eWxlPSJzdHJva2U6IHJnYigyNTUsIDI1NSwgMjU1KTsgc3Ryb2tlLW9wYWNpdHk6 IDE7IHN0cm9rZS13aWR0aDogMXB4OyI+PC9wYXRoPjxwYXRoIGNsYXNzPSJ5MmdyaWQgY3Jp c3AiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsMTA2LjM1KSIgZD0iTTU4Mi44NSwwaDQyNi4x NSIgc3R5bGU9InN0cm9rZTogcmdiKDI1NSwgMjU1LCAyNTUpOyBzdHJva2Utb3BhY2l0eTog MTsgc3Ryb2tlLXdpZHRoOiAxcHg7Ij48L3BhdGg+PC9nPjwvZz48ZyBjbGFzcz0iemVyb2xp bmVsYXllciI+PHBhdGggY2xhc3M9IngyemwgemwgY3Jpc3AiIHRyYW5zZm9ybT0idHJhbnNs YXRlKDYwNy44NywwKSIgZD0iTTAsMTAwdjE3MC4yNSIgc3R5bGU9InN0cm9rZTogcmdiKDI1 NSwgMjU1LCAyNTUpOyBzdHJva2Utb3BhY2l0eTogMTsgc3Ryb2tlLXdpZHRoOiAycHg7Ij48 L3BhdGg+PC9nPjxwYXRoIGNsYXNzPSJ4bGluZXMtYmVsb3ciPjwvcGF0aD48cGF0aCBjbGFz cz0ieWxpbmVzLWJlbG93Ij48L3BhdGg+PGcgY2xhc3M9Im92ZXJsaW5lcy1iZWxvdyI+PC9n PjxnIGNsYXNzPSJ4YXhpc2xheWVyLWJlbG93Ij48L2c+PGcgY2xhc3M9InlheGlzbGF5ZXIt YmVsb3ciPjwvZz48ZyBjbGFzcz0ib3ZlcmF4ZXMtYmVsb3ciPjwvZz48ZyBjbGFzcz0icGxv dCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTgyLjg1LDEwMCkiIGNsaXAtcGF0aD0idXJsKCNj bGlwMWJkOGE4eDJ5MnBsb3QpIj48ZyBjbGFzcz0ic2NhdHRlcmxheWVyIG1sYXllciI+PGcg Y2xhc3M9InRyYWNlIHNjYXR0ZXIgdHJhY2U4NjhmZmMiIHN0eWxlPSJzdHJva2UtbWl0ZXJs aW1pdDogMjsgb3BhY2l0eTogMTsiPjxnIGNsYXNzPSJmaWxscyI+PC9nPjxnIGNsYXNzPSJl cnJvcmJhcnMiPjwvZz48ZyBjbGFzcz0ibGluZXMiPjxwYXRoIGNsYXNzPSJqcy1saW5lIiBk PSJNMjUuMDYsNDcuNzFMNjYuODIsMTQ4LjE0TDEwOC42LDEyMC41N0wxNTAuMzksMTE2LjYz TDE5Mi4xNywxMzAuNDJMMjMzLjk1LDEzNi4zM0wyNzUuNzQsMTU2LjAyTDMxNy41MiwxMi4y NkwzNTkuMzEsMTU3Ljk5TDQwMS4wOSwxNTcuOTkiIHN0eWxlPSJ2ZWN0b3ItZWZmZWN0OiBu b24tc2NhbGluZy1zdHJva2U7IGZpbGw6IG5vbmU7IHN0cm9rZTogcmdiKDAsIDAsIDI1NSk7 IHN0cm9rZS1vcGFjaXR5OiAxOyBzdHJva2Utd2lkdGg6IDJweDsgb3BhY2l0eTogMTsgc3Ry b2tlLWRhc2hhcnJheTogOXB4LCA5cHg7Ij48L3BhdGg+PC9nPjxnIGNsYXNzPSJwb2ludHMi PjxwYXRoIGNsYXNzPSJwb2ludCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUuMDYsNDcuNzEp IiBkPSJNMywwQTMsMyAwIDEsMSAwLC0zQTMsMyAwIDAsMSAzLDBaIiBzdHlsZT0ib3BhY2l0 eTogMTsgc3Ryb2tlLXdpZHRoOiAwcHg7IGZpbGw6IHJnYigwLCAwLCAyNTUpOyBmaWxsLW9w YWNpdHk6IDE7Ij48L3BhdGg+PHBhdGggY2xhc3M9InBvaW50IiB0cmFuc2Zvcm09InRyYW5z bGF0ZSg2Ni44MiwxNDguMTQpIiBkPSJNMywwQTMsMyAwIDEsMSAwLC0zQTMsMyAwIDAsMSAz LDBaIiBzdHlsZT0ib3BhY2l0eTogMTsgc3Ryb2tlLXdpZHRoOiAwcHg7IGZpbGw6IHJnYigw LCAwLCAyNTUpOyBmaWxsLW9wYWNpdHk6IDE7Ij48L3BhdGg+PHBhdGggY2xhc3M9InBvaW50 IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMDguNiwxMjAuNTcpIiBkPSJNMywwQTMsMyAwIDEs MSAwLC0zQTMsMyAwIDAsMSAzLDBaIiBzdHlsZT0ib3BhY2l0eTogMTsgc3Ryb2tlLXdpZHRo OiAwcHg7IGZpbGw6IHJnYigwLCAwLCAyNTUpOyBmaWxsLW9wYWNpdHk6IDE7Ij48L3BhdGg+ PHBhdGggY2xhc3M9InBvaW50IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNTAuMzksMTE2LjYz KSIgZD0iTTMsMEEzLDMgMCAxLDEgMCwtM0EzLDMgMCAwLDEgMywwWiIgc3R5bGU9Im9wYWNp dHk6IDE7IHN0cm9rZS13aWR0aDogMHB4OyBmaWxsOiByZ2IoMCwgMCwgMjU1KTsgZmlsbC1v cGFjaXR5OiAxOyI+PC9wYXRoPjxwYXRoIGNsYXNzPSJwb2ludCIgdHJhbnNmb3JtPSJ0cmFu c2xhdGUoMTkyLjE3LDEzMC40MikiIGQ9Ik0zLDBBMywzIDAgMSwxIDAsLTNBMywzIDAgMCwx IDMsMFoiIHN0eWxlPSJvcGFjaXR5OiAxOyBzdHJva2Utd2lkdGg6IDBweDsgZmlsbDogcmdi KDAsIDAsIDI1NSk7IGZpbGwtb3BhY2l0eTogMTsiPjwvcGF0aD48cGF0aCBjbGFzcz0icG9p bnQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIzMy45NSwxMzYuMzMpIiBkPSJNMywwQTMsMyAw IDEsMSAwLC0zQTMsMyAwIDAsMSAzLDBaIiBzdHlsZT0ib3BhY2l0eTogMTsgc3Ryb2tlLXdp ZHRoOiAwcHg7IGZpbGw6IHJnYigwLCAwLCAyNTUpOyBmaWxsLW9wYWNpdHk6IDE7Ij48L3Bh dGg+PHBhdGggY2xhc3M9InBvaW50IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNzUuNzQsMTU2 LjAyKSIgZD0iTTMsMEEzLDMgMCAxLDEgMCwtM0EzLDMgMCAwLDEgMywwWiIgc3R5bGU9Im9w YWNpdHk6IDE7IHN0cm9rZS13aWR0aDogMHB4OyBmaWxsOiByZ2IoMCwgMCwgMjU1KTsgZmls bC1vcGFjaXR5OiAxOyI+PC9wYXRoPjxwYXRoIGNsYXNzPSJwb2ludCIgdHJhbnNmb3JtPSJ0 cmFuc2xhdGUoMzE3LjUyLDEyLjI2KSIgZD0iTTMsMEEzLDMgMCAxLDEgMCwtM0EzLDMgMCAw LDEgMywwWiIgc3R5bGU9Im9wYWNpdHk6IDE7IHN0cm9rZS13aWR0aDogMHB4OyBmaWxsOiBy Z2IoMCwgMCwgMjU1KTsgZmlsbC1vcGFjaXR5OiAxOyI+PC9wYXRoPjxwYXRoIGNsYXNzPSJw b2ludCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzU5LjMxLDE1Ny45OSkiIGQ9Ik0zLDBBMywz IDAgMSwxIDAsLTNBMywzIDAgMCwxIDMsMFoiIHN0eWxlPSJvcGFjaXR5OiAxOyBzdHJva2Ut d2lkdGg6IDBweDsgZmlsbDogcmdiKDAsIDAsIDI1NSk7IGZpbGwtb3BhY2l0eTogMTsiPjwv cGF0aD48cGF0aCBjbGFzcz0icG9pbnQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQwMS4wOSwx NTcuOTkpIiBkPSJNMywwQTMsMyAwIDEsMSAwLC0zQTMsMyAwIDAsMSAzLDBaIiBzdHlsZT0i b3BhY2l0eTogMTsgc3Ryb2tlLXdpZHRoOiAwcHg7IGZpbGw6IHJnYigwLCAwLCAyNTUpOyBm aWxsLW9wYWNpdHk6IDE7Ij48L3BhdGg+PC9nPjxnIGNsYXNzPSJ0ZXh0Ij48L2c+PC9nPjxn IGNsYXNzPSJ0cmFjZSBzY2F0dGVyIHRyYWNlYjU1MjAyIiBzdHlsZT0ic3Ryb2tlLW1pdGVy bGltaXQ6IDI7IG9wYWNpdHk6IDE7Ij48ZyBjbGFzcz0iZmlsbHMiPjwvZz48ZyBjbGFzcz0i ZXJyb3JiYXJzIj48L2c+PGcgY2xhc3M9ImxpbmVzIj48cGF0aCBjbGFzcz0ianMtbGluZSIg ZD0iTTI1LjA2LDgzLjE2TDY2LjgyLDc1LjI4TDEwOC42LDg1LjEzTDE1MC4zOSw5NC45N0wx OTIuMTcsMjAuMTRMMjMzLjk1LDc5LjIyTDI3NS43NCw4OS4wNkwzMTcuNTIsOTEuMDNMMzU5 LjMxLDczLjMxTDQwMS4wOSw5NC45NyIgc3R5bGU9InZlY3Rvci1lZmZlY3Q6IG5vbi1zY2Fs aW5nLXN0cm9rZTsgZmlsbDogbm9uZTsgc3Ryb2tlOiByZ2IoMjU1LCAwLCAwKTsgc3Ryb2tl LW9wYWNpdHk6IDE7IHN0cm9rZS13aWR0aDogMnB4OyBvcGFjaXR5OiAxOyBzdHJva2UtZGFz aGFycmF5OiAzcHgsIDNweDsiPjwvcGF0aD48L2c+PGcgY2xhc3M9InBvaW50cyI+PHBhdGgg Y2xhc3M9InBvaW50IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNS4wNiw4My4xNikiIGQ9Ik0z LDBBMywzIDAgMSwxIDAsLTNBMywzIDAgMCwxIDMsMFoiIHN0eWxlPSJvcGFjaXR5OiAxOyBz dHJva2Utd2lkdGg6IDBweDsgZmlsbDogcmdiKDI1NSwgMCwgMCk7IGZpbGwtb3BhY2l0eTog MTsiPjwvcGF0aD48cGF0aCBjbGFzcz0icG9pbnQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY2 LjgyLDc1LjI4KSIgZD0iTTMsMEEzLDMgMCAxLDEgMCwtM0EzLDMgMCAwLDEgMywwWiIgc3R5 bGU9Im9wYWNpdHk6IDE7IHN0cm9rZS13aWR0aDogMHB4OyBmaWxsOiByZ2IoMjU1LCAwLCAw KTsgZmlsbC1vcGFjaXR5OiAxOyI+PC9wYXRoPjxwYXRoIGNsYXNzPSJwb2ludCIgdHJhbnNm b3JtPSJ0cmFuc2xhdGUoMTA4LjYsODUuMTMpIiBkPSJNMywwQTMsMyAwIDEsMSAwLC0zQTMs MyAwIDAsMSAzLDBaIiBzdHlsZT0ib3BhY2l0eTogMTsgc3Ryb2tlLXdpZHRoOiAwcHg7IGZp bGw6IHJnYigyNTUsIDAsIDApOyBmaWxsLW9wYWNpdHk6IDE7Ij48L3BhdGg+PHBhdGggY2xh c3M9InBvaW50IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNTAuMzksOTQuOTcpIiBkPSJNMyww QTMsMyAwIDEsMSAwLC0zQTMsMyAwIDAsMSAzLDBaIiBzdHlsZT0ib3BhY2l0eTogMTsgc3Ry b2tlLXdpZHRoOiAwcHg7IGZpbGw6IHJnYigyNTUsIDAsIDApOyBmaWxsLW9wYWNpdHk6IDE7 Ij48L3BhdGg+PHBhdGggY2xhc3M9InBvaW50IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxOTIu MTcsMjAuMTQpIiBkPSJNMywwQTMsMyAwIDEsMSAwLC0zQTMsMyAwIDAsMSAzLDBaIiBzdHls ZT0ib3BhY2l0eTogMTsgc3Ryb2tlLXdpZHRoOiAwcHg7IGZpbGw6IHJnYigyNTUsIDAsIDAp OyBmaWxsLW9wYWNpdHk6IDE7Ij48L3BhdGg+PHBhdGggY2xhc3M9InBvaW50IiB0cmFuc2Zv cm09InRyYW5zbGF0ZSgyMzMuOTUsNzkuMjIpIiBkPSJNMywwQTMsMyAwIDEsMSAwLC0zQTMs MyAwIDAsMSAzLDBaIiBzdHlsZT0ib3BhY2l0eTogMTsgc3Ryb2tlLXdpZHRoOiAwcHg7IGZp bGw6IHJnYigyNTUsIDAsIDApOyBmaWxsLW9wYWNpdHk6IDE7Ij48L3BhdGg+PHBhdGggY2xh c3M9InBvaW50IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNzUuNzQsODkuMDYpIiBkPSJNMyww QTMsMyAwIDEsMSAwLC0zQTMsMyAwIDAsMSAzLDBaIiBzdHlsZT0ib3BhY2l0eTogMTsgc3Ry b2tlLXdpZHRoOiAwcHg7IGZpbGw6IHJnYigyNTUsIDAsIDApOyBmaWxsLW9wYWNpdHk6IDE7 Ij48L3BhdGg+PHBhdGggY2xhc3M9InBvaW50IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMTcu NTIsOTEuMDMpIiBkPSJNMywwQTMsMyAwIDEsMSAwLC0zQTMsMyAwIDAsMSAzLDBaIiBzdHls ZT0ib3BhY2l0eTogMTsgc3Ryb2tlLXdpZHRoOiAwcHg7IGZpbGw6IHJnYigyNTUsIDAsIDAp OyBmaWxsLW9wYWNpdHk6IDE7Ij48L3BhdGg+PHBhdGggY2xhc3M9InBvaW50IiB0cmFuc2Zv cm09InRyYW5zbGF0ZSgzNTkuMzEsNzMuMzEpIiBkPSJNMywwQTMsMyAwIDEsMSAwLC0zQTMs MyAwIDAsMSAzLDBaIiBzdHlsZT0ib3BhY2l0eTogMTsgc3Ryb2tlLXdpZHRoOiAwcHg7IGZp bGw6IHJnYigyNTUsIDAsIDApOyBmaWxsLW9wYWNpdHk6IDE7Ij48L3BhdGg+PHBhdGggY2xh c3M9InBvaW50IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MDEuMDksOTQuOTcpIiBkPSJNMyww QTMsMyAwIDEsMSAwLC0zQTMsMyAwIDAsMSAzLDBaIiBzdHlsZT0ib3BhY2l0eTogMTsgc3Ry b2tlLXdpZHRoOiAwcHg7IGZpbGw6IHJnYigyNTUsIDAsIDApOyBmaWxsLW9wYWNpdHk6IDE7 Ij48L3BhdGg+PC9nPjxnIGNsYXNzPSJ0ZXh0Ij48L2c+PC9nPjwvZz48L2c+PGcgY2xhc3M9 Im92ZXJwbG90Ij48L2c+PHBhdGggY2xhc3M9InhsaW5lcy1hYm92ZSBjcmlzcCIgZD0iTTAs MCIgc3R5bGU9ImZpbGw6IG5vbmU7Ij48L3BhdGg+PHBhdGggY2xhc3M9InlsaW5lcy1hYm92 ZSBjcmlzcCIgZD0iTTAsMCIgc3R5bGU9ImZpbGw6IG5vbmU7Ij48L3BhdGg+PGcgY2xhc3M9 Im92ZXJsaW5lcy1hYm92ZSI+PC9nPjxnIGNsYXNzPSJ4YXhpc2xheWVyLWFib3ZlIj48ZyBj bGFzcz0ieDJ0aWNrIj48dGV4dCB0ZXh0LWFuY2hvcj0ibWlkZGxlIiB4PSIwIiB5PSIyODUu MjUiIGRhdGEtdW5mb3JtYXR0ZWQ9IjAiIGRhdGEtbWF0aD0iTiIgdHJhbnNmb3JtPSJ0cmFu c2xhdGUoNjA3Ljg3LDApIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O0NvdXJpZXIgTmV3 JnF1b3Q7LCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTRweDsgZmlsbDogcmdiKDEwMiwgNTEs IDE1Myk7IGZpbGwtb3BhY2l0eTogMTsgd2hpdGUtc3BhY2U6IHByZTsgb3BhY2l0eTogMTsi PjA8L3RleHQ+PC9nPjxnIGNsYXNzPSJ4MnRpY2siPjx0ZXh0IHRleHQtYW5jaG9yPSJtaWRk bGUiIHg9IjAiIHk9IjI4NS4yNSIgZGF0YS11bmZvcm1hdHRlZD0iMTBrIiBkYXRhLW1hdGg9 Ik4iIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7Q291cmllciBOZXcmcXVvdDssIG1vbm9z cGFjZTsgZm9udC1zaXplOiAxNHB4OyBmaWxsOiByZ2IoMTAyLCA1MSwgMTUzKTsgZmlsbC1v cGFjaXR5OiAxOyB3aGl0ZS1zcGFjZTogcHJlOyBvcGFjaXR5OiAxOyIgdHJhbnNmb3JtPSJ0 cmFuc2xhdGUoNjkxLjQ0LDApIj4xMGs8L3RleHQ+PC9nPjxnIGNsYXNzPSJ4MnRpY2siPjx0 ZXh0IHRleHQtYW5jaG9yPSJtaWRkbGUiIHg9IjAiIHk9IjI4NS4yNSIgZGF0YS11bmZvcm1h dHRlZD0iMjBrIiBkYXRhLW1hdGg9Ik4iIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7Q291 cmllciBOZXcmcXVvdDssIG1vbm9zcGFjZTsgZm9udC1zaXplOiAxNHB4OyBmaWxsOiByZ2Io MTAyLCA1MSwgMTUzKTsgZmlsbC1vcGFjaXR5OiAxOyB3aGl0ZS1zcGFjZTogcHJlOyBvcGFj aXR5OiAxOyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzc1LjAxLDApIj4yMGs8L3RleHQ+PC9n PjxnIGNsYXNzPSJ4MnRpY2siPjx0ZXh0IHRleHQtYW5jaG9yPSJtaWRkbGUiIHg9IjAiIHk9 IjI4NS4yNSIgZGF0YS11bmZvcm1hdHRlZD0iMzBrIiBkYXRhLW1hdGg9Ik4iIHN0eWxlPSJm b250LWZhbWlseTogJnF1b3Q7Q291cmllciBOZXcmcXVvdDssIG1vbm9zcGFjZTsgZm9udC1z aXplOiAxNHB4OyBmaWxsOiByZ2IoMTAyLCA1MSwgMTUzKTsgZmlsbC1vcGFjaXR5OiAxOyB3 aGl0ZS1zcGFjZTogcHJlOyBvcGFjaXR5OiAxOyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODU4 LjU4LDApIj4zMGs8L3RleHQ+PC9nPjxnIGNsYXNzPSJ4MnRpY2siPjx0ZXh0IHRleHQtYW5j aG9yPSJtaWRkbGUiIHg9IjAiIHk9IjI4NS4yNSIgZGF0YS11bmZvcm1hdHRlZD0iNDBrIiBk YXRhLW1hdGg9Ik4iIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7Q291cmllciBOZXcmcXVv dDssIG1vbm9zcGFjZTsgZm9udC1zaXplOiAxNHB4OyBmaWxsOiByZ2IoMTAyLCA1MSwgMTUz KTsgZmlsbC1vcGFjaXR5OiAxOyB3aGl0ZS1zcGFjZTogcHJlOyBvcGFjaXR5OiAxOyIgdHJh bnNmb3JtPSJ0cmFuc2xhdGUoOTQyLjE1MDAwMDAwMDAwMDEsMCkiPjQwazwvdGV4dD48L2c+ PC9nPjxnIGNsYXNzPSJ5YXhpc2xheWVyLWFib3ZlIj48ZyBjbGFzcz0ieTJ0aWNrIj48dGV4 dCB0ZXh0LWFuY2hvcj0iZW5kIiB4PSI1ODEuODUiIHk9IjQuODk5OTk5OTk5OTk5OTk5NSIg ZGF0YS11bmZvcm1hdHRlZD0iMC4wNiIgZGF0YS1tYXRoPSJOIiB0cmFuc2Zvcm09InRyYW5z bGF0ZSgwLDI2My45KSIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtDb3VyaWVyIE5ldyZx dW90OywgbW9ub3NwYWNlOyBmb250LXNpemU6IDE0cHg7IGZpbGw6IHJnYigxMDIsIDUxLCAx NTMpOyBmaWxsLW9wYWNpdHk6IDE7IHdoaXRlLXNwYWNlOiBwcmU7IG9wYWNpdHk6IDE7Ij4w LjA2PC90ZXh0PjwvZz48ZyBjbGFzcz0ieTJ0aWNrIj48dGV4dCB0ZXh0LWFuY2hvcj0iZW5k IiB4PSI1ODEuODUiIHk9IjQuODk5OTk5OTk5OTk5OTk5NSIgZGF0YS11bmZvcm1hdHRlZD0i MC4wOCIgZGF0YS1tYXRoPSJOIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O0NvdXJpZXIg TmV3JnF1b3Q7LCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTRweDsgZmlsbDogcmdiKDEwMiwg NTEsIDE1Myk7IGZpbGwtb3BhY2l0eTogMTsgd2hpdGUtc3BhY2U6IHByZTsgb3BhY2l0eTog MTsiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsMjI0LjUxKSI+MC4wODwvdGV4dD48L2c+PGcg Y2xhc3M9InkydGljayI+PHRleHQgdGV4dC1hbmNob3I9ImVuZCIgeD0iNTgxLjg1IiB5PSI0 Ljg5OTk5OTk5OTk5OTk5OTUiIGRhdGEtdW5mb3JtYXR0ZWQ9IjAuMSIgZGF0YS1tYXRoPSJO IiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7LCBtb25vc3Bh Y2U7IGZvbnQtc2l6ZTogMTRweDsgZmlsbDogcmdiKDEwMiwgNTEsIDE1Myk7IGZpbGwtb3Bh Y2l0eTogMTsgd2hpdGUtc3BhY2U6IHByZTsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0idHJh bnNsYXRlKDAsMTg1LjEzKSI+MC4xPC90ZXh0PjwvZz48ZyBjbGFzcz0ieTJ0aWNrIj48dGV4 dCB0ZXh0LWFuY2hvcj0iZW5kIiB4PSI1ODEuODUiIHk9IjQuODk5OTk5OTk5OTk5OTk5NSIg ZGF0YS11bmZvcm1hdHRlZD0iMC4xMiIgZGF0YS1tYXRoPSJOIiBzdHlsZT0iZm9udC1mYW1p bHk6ICZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7LCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTRw eDsgZmlsbDogcmdiKDEwMiwgNTEsIDE1Myk7IGZpbGwtb3BhY2l0eTogMTsgd2hpdGUtc3Bh Y2U6IHByZTsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsMTQ1Ljc0KSI+ MC4xMjwvdGV4dD48L2c+PGcgY2xhc3M9InkydGljayI+PHRleHQgdGV4dC1hbmNob3I9ImVu ZCIgeD0iNTgxLjg1IiB5PSI0Ljg5OTk5OTk5OTk5OTk5OTUiIGRhdGEtdW5mb3JtYXR0ZWQ9 IjAuMTQiIGRhdGEtbWF0aD0iTiIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtDb3VyaWVy IE5ldyZxdW90OywgbW9ub3NwYWNlOyBmb250LXNpemU6IDE0cHg7IGZpbGw6IHJnYigxMDIs IDUxLCAxNTMpOyBmaWxsLW9wYWNpdHk6IDE7IHdoaXRlLXNwYWNlOiBwcmU7IG9wYWNpdHk6 IDE7IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDEwNi4zNSkiPjAuMTQ8L3RleHQ+PC9nPjwv Zz48ZyBjbGFzcz0ib3ZlcmF4ZXMtYWJvdmUiPjwvZz48L2c+PGcgY2xhc3M9InN1YnBsb3Qg eDN5MyI+PGcgY2xhc3M9ImxheWVyLXN1YnBsb3QiPjxnIGNsYXNzPSJzaGFwZWxheWVyIj48 L2c+PGcgY2xhc3M9ImltYWdlbGF5ZXIiPjwvZz48L2c+PGcgY2xhc3M9Im1pbm9yLWdyaWRs YXllciI+PGcgY2xhc3M9IngzIj48L2c+PGcgY2xhc3M9InkzIj48L2c+PC9nPjxnIGNsYXNz PSJncmlkbGF5ZXIiPjxnIGNsYXNzPSJ4MyI+PHBhdGggY2xhc3M9IngzZ3JpZCBjcmlzcCIg dHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTUxLjcsMCkiIGQ9Ik0wLDM4My43NXYxNzAuMjUiIHN0 eWxlPSJzdHJva2U6IHJnYigyNTUsIDI1NSwgMjU1KTsgc3Ryb2tlLW9wYWNpdHk6IDE7IHN0 cm9rZS13aWR0aDogMXB4OyI+PC9wYXRoPjxwYXRoIGNsYXNzPSJ4M2dyaWQgY3Jpc3AiIHRy YW5zZm9ybT0idHJhbnNsYXRlKDI0MS40MiwwKSIgZD0iTTAsMzgzLjc1djE3MC4yNSIgc3R5 bGU9InN0cm9rZTogcmdiKDI1NSwgMjU1LCAyNTUpOyBzdHJva2Utb3BhY2l0eTogMTsgc3Ry b2tlLXdpZHRoOiAxcHg7Ij48L3BhdGg+PHBhdGggY2xhc3M9IngzZ3JpZCBjcmlzcCIgdHJh bnNmb3JtPSJ0cmFuc2xhdGUoMzMxLjE0LDApIiBkPSJNMCwzODMuNzV2MTcwLjI1IiBzdHls ZT0ic3Ryb2tlOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHN0cm9rZS1vcGFjaXR5OiAxOyBzdHJv a2Utd2lkdGg6IDFweDsiPjwvcGF0aD48cGF0aCBjbGFzcz0ieDNncmlkIGNyaXNwIiB0cmFu c2Zvcm09InRyYW5zbGF0ZSg0MjAuODYsMCkiIGQ9Ik0wLDM4My43NXYxNzAuMjUiIHN0eWxl PSJzdHJva2U6IHJnYigyNTUsIDI1NSwgMjU1KTsgc3Ryb2tlLW9wYWNpdHk6IDE7IHN0cm9r ZS13aWR0aDogMXB4OyI+PC9wYXRoPjwvZz48ZyBjbGFzcz0ieTMiPjxwYXRoIGNsYXNzPSJ5 M2dyaWQgY3Jpc3AiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsNDgxLjgyKSIgZD0iTTYyLDBo NDI2LjE1MDAwMDAwMDAwMDAzIiBzdHlsZT0ic3Ryb2tlOiByZ2IoMjU1LCAyNTUsIDI1NSk7 IHN0cm9rZS1vcGFjaXR5OiAxOyBzdHJva2Utd2lkdGg6IDFweDsiPjwvcGF0aD48cGF0aCBj bGFzcz0ieTNncmlkIGNyaXNwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDQxOC4xNSkiIGQ9 Ik02MiwwaDQyNi4xNTAwMDAwMDAwMDAwMyIgc3R5bGU9InN0cm9rZTogcmdiKDI1NSwgMjU1 LCAyNTUpOyBzdHJva2Utb3BhY2l0eTogMTsgc3Ryb2tlLXdpZHRoOiAxcHg7Ij48L3BhdGg+ PC9nPjwvZz48ZyBjbGFzcz0iemVyb2xpbmVsYXllciI+PHBhdGggY2xhc3M9Inkzemwgemwg Y3Jpc3AiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsNTQ1LjQ5KSIgZD0iTTYyLDBoNDI2LjE1 MDAwMDAwMDAwMDAzIiBzdHlsZT0ic3Ryb2tlOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHN0cm9r ZS1vcGFjaXR5OiAxOyBzdHJva2Utd2lkdGg6IDJweDsiPjwvcGF0aD48L2c+PHBhdGggY2xh c3M9InhsaW5lcy1iZWxvdyI+PC9wYXRoPjxwYXRoIGNsYXNzPSJ5bGluZXMtYmVsb3ciPjwv cGF0aD48ZyBjbGFzcz0ib3ZlcmxpbmVzLWJlbG93Ij48L2c+PGcgY2xhc3M9InhheGlzbGF5 ZXItYmVsb3ciPjwvZz48ZyBjbGFzcz0ieWF4aXNsYXllci1iZWxvdyI+PC9nPjxnIGNsYXNz PSJvdmVyYXhlcy1iZWxvdyI+PC9nPjxnIGNsYXNzPSJwbG90IiB0cmFuc2Zvcm09InRyYW5z bGF0ZSg2MiwzODMuNzUpIiBjbGlwLXBhdGg9InVybCgjY2xpcDFiZDhhOHgzeTNwbG90KSI+ PGcgY2xhc3M9InNjYXR0ZXJsYXllciBtbGF5ZXIiPjxnIGNsYXNzPSJ0cmFjZSBzY2F0dGVy IHRyYWNlMTYxZGZlIiBzdHlsZT0ic3Ryb2tlLW1pdGVybGltaXQ6IDI7IG9wYWNpdHk6IDE7 Ij48ZyBjbGFzcz0iZmlsbHMiPjwvZz48ZyBjbGFzcz0iZXJyb3JiYXJzIj48L2c+PGcgY2xh c3M9ImxpbmVzIj48cGF0aCBjbGFzcz0ianMtbGluZSIgZD0iTTAsMTYxLjc0TDQyNi4xNSwx NjAuMjIiIHN0eWxlPSJ2ZWN0b3ItZWZmZWN0OiBub24tc2NhbGluZy1zdHJva2U7IGZpbGw6 IG5vbmU7IHN0cm9rZTogcmdiKDAsIDEyOCwgMCk7IHN0cm9rZS1vcGFjaXR5OiAxOyBzdHJv a2Utd2lkdGg6IDJweDsgb3BhY2l0eTogMTsgc3Ryb2tlLWRhc2hhcnJheTogOXB4LCA5cHg7 Ij48L3BhdGg+PC9nPjxnIGNsYXNzPSJwb2ludHMiPjwvZz48ZyBjbGFzcz0idGV4dCI+PC9n PjwvZz48ZyBjbGFzcz0idHJhY2Ugc2NhdHRlciB0cmFjZTlmMzg4MiIgc3R5bGU9InN0cm9r ZS1taXRlcmxpbWl0OiAyOyBvcGFjaXR5OiAxOyI+PGcgY2xhc3M9ImZpbGxzIj48L2c+PGcg Y2xhc3M9ImVycm9yYmFycyI+PC9nPjxnIGNsYXNzPSJsaW5lcyI+PHBhdGggY2xhc3M9Impz LWxpbmUiIGQ9Ik0wLDE2MS43NEwyMi40MiwxNjAuOTZMNDQuODUsMTU4Ljk2TDg5LjcxLDE1 Mi45OEwxMTIuMTMsMTQ2LjMyTDE3OS40MiwxMzAuMUwyMDEuODUsMTI1LjQ3TDIyNC4yOCwx MDIuNTlMMjQ2LjcxLDkzLjA0TDI2OS4xNCw4NS42NkwyOTEuNTcsNzcuMzNMMzE0LDY4LjM1 TDMzNi40Myw1Ny41TDM1OC44Niw0NC40M0wzODEuMjksMjkuODZMNDAzLjcyLDE2LjE0TDQy Ni4xNSw4LjUxIiBzdHlsZT0idmVjdG9yLWVmZmVjdDogbm9uLXNjYWxpbmctc3Ryb2tlOyBm aWxsOiBub25lOyBzdHJva2U6IHJnYigyNTUsIDE2NSwgMCk7IHN0cm9rZS1vcGFjaXR5OiAx OyBzdHJva2Utd2lkdGg6IDJweDsgb3BhY2l0eTogMTsgc3Ryb2tlLWRhc2hhcnJheTogM3B4 LCAzcHg7Ij48L3BhdGg+PC9nPjxnIGNsYXNzPSJwb2ludHMiPjwvZz48ZyBjbGFzcz0idGV4 dCI+PC9nPjwvZz48L2c+PC9nPjxnIGNsYXNzPSJvdmVycGxvdCI+PC9nPjxwYXRoIGNsYXNz PSJ4bGluZXMtYWJvdmUgY3Jpc3AiIGQ9Ik0wLDAiIHN0eWxlPSJmaWxsOiBub25lOyI+PC9w YXRoPjxwYXRoIGNsYXNzPSJ5bGluZXMtYWJvdmUgY3Jpc3AiIGQ9Ik0wLDAiIHN0eWxlPSJm aWxsOiBub25lOyI+PC9wYXRoPjxnIGNsYXNzPSJvdmVybGluZXMtYWJvdmUiPjwvZz48ZyBj bGFzcz0ieGF4aXNsYXllci1hYm92ZSI+PGcgY2xhc3M9IngzdGljayI+PHRleHQgdGV4dC1h bmNob3I9Im1pZGRsZSIgeD0iMCIgeT0iNTY5IiBkYXRhLXVuZm9ybWF0dGVkPSIwIiBkYXRh LW1hdGg9Ik4iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYxLjk4LDApIiBzdHlsZT0iZm9udC1m YW1pbHk6ICZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7LCBtb25vc3BhY2U7IGZvbnQtc2l6ZTog MTRweDsgZmlsbDogcmdiKDEwMiwgNTEsIDE1Myk7IGZpbGwtb3BhY2l0eTogMTsgd2hpdGUt c3BhY2U6IHByZTsgb3BhY2l0eTogMTsiPjA8L3RleHQ+PC9nPjxnIGNsYXNzPSJ4M3RpY2si Pjx0ZXh0IHRleHQtYW5jaG9yPSJtaWRkbGUiIHg9IjAiIHk9IjU2OSIgZGF0YS11bmZvcm1h dHRlZD0iMjBrIiBkYXRhLW1hdGg9Ik4iIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7Q291 cmllciBOZXcmcXVvdDssIG1vbm9zcGFjZTsgZm9udC1zaXplOiAxNHB4OyBmaWxsOiByZ2Io MTAyLCA1MSwgMTUzKTsgZmlsbC1vcGFjaXR5OiAxOyB3aGl0ZS1zcGFjZTogcHJlOyBvcGFj aXR5OiAxOyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTUxLjcsMCkiPjIwazwvdGV4dD48L2c+ PGcgY2xhc3M9IngzdGljayI+PHRleHQgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0iMCIgeT0i NTY5IiBkYXRhLXVuZm9ybWF0dGVkPSI0MGsiIGRhdGEtbWF0aD0iTiIgc3R5bGU9ImZvbnQt ZmFtaWx5OiAmcXVvdDtDb3VyaWVyIE5ldyZxdW90OywgbW9ub3NwYWNlOyBmb250LXNpemU6 IDE0cHg7IGZpbGw6IHJnYigxMDIsIDUxLCAxNTMpOyBmaWxsLW9wYWNpdHk6IDE7IHdoaXRl LXNwYWNlOiBwcmU7IG9wYWNpdHk6IDE7IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNDEuNDIs MCkiPjQwazwvdGV4dD48L2c+PGcgY2xhc3M9IngzdGljayI+PHRleHQgdGV4dC1hbmNob3I9 Im1pZGRsZSIgeD0iMCIgeT0iNTY5IiBkYXRhLXVuZm9ybWF0dGVkPSI2MGsiIGRhdGEtbWF0 aD0iTiIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtDb3VyaWVyIE5ldyZxdW90OywgbW9u b3NwYWNlOyBmb250LXNpemU6IDE0cHg7IGZpbGw6IHJnYigxMDIsIDUxLCAxNTMpOyBmaWxs LW9wYWNpdHk6IDE7IHdoaXRlLXNwYWNlOiBwcmU7IG9wYWNpdHk6IDE7IiB0cmFuc2Zvcm09 InRyYW5zbGF0ZSgzMzEuMTQsMCkiPjYwazwvdGV4dD48L2c+PGcgY2xhc3M9IngzdGljayI+ PHRleHQgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0iMCIgeT0iNTY5IiBkYXRhLXVuZm9ybWF0 dGVkPSI4MGsiIGRhdGEtbWF0aD0iTiIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtDb3Vy aWVyIE5ldyZxdW90OywgbW9ub3NwYWNlOyBmb250LXNpemU6IDE0cHg7IGZpbGw6IHJnYigx MDIsIDUxLCAxNTMpOyBmaWxsLW9wYWNpdHk6IDE7IHdoaXRlLXNwYWNlOiBwcmU7IG9wYWNp dHk6IDE7IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MjAuODYsMCkiPjgwazwvdGV4dD48L2c+ PC9nPjxnIGNsYXNzPSJ5YXhpc2xheWVyLWFib3ZlIj48ZyBjbGFzcz0ieTN0aWNrIj48dGV4 dCB0ZXh0LWFuY2hvcj0iZW5kIiB4PSI2MSIgeT0iNC44OTk5OTk5OTk5OTk5OTk1IiBkYXRh LXVuZm9ybWF0dGVkPSIwIiBkYXRhLW1hdGg9Ik4iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAs NTQ1LjQ5KSIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtDb3VyaWVyIE5ldyZxdW90Oywg bW9ub3NwYWNlOyBmb250LXNpemU6IDE0cHg7IGZpbGw6IHJnYigxMDIsIDUxLCAxNTMpOyBm aWxsLW9wYWNpdHk6IDE7IHdoaXRlLXNwYWNlOiBwcmU7IG9wYWNpdHk6IDE7Ij4wPC90ZXh0 PjwvZz48ZyBjbGFzcz0ieTN0aWNrIj48dGV4dCB0ZXh0LWFuY2hvcj0iZW5kIiB4PSI2MSIg eT0iNC44OTk5OTk5OTk5OTk5OTk1IiBkYXRhLXVuZm9ybWF0dGVkPSIxMDBrIiBkYXRhLW1h dGg9Ik4iIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7Q291cmllciBOZXcmcXVvdDssIG1v bm9zcGFjZTsgZm9udC1zaXplOiAxNHB4OyBmaWxsOiByZ2IoMTAyLCA1MSwgMTUzKTsgZmls bC1vcGFjaXR5OiAxOyB3aGl0ZS1zcGFjZTogcHJlOyBvcGFjaXR5OiAxOyIgdHJhbnNmb3Jt PSJ0cmFuc2xhdGUoMCw0ODEuODIpIj4xMDBrPC90ZXh0PjwvZz48ZyBjbGFzcz0ieTN0aWNr Ij48dGV4dCB0ZXh0LWFuY2hvcj0iZW5kIiB4PSI2MSIgeT0iNC44OTk5OTk5OTk5OTk5OTk1 IiBkYXRhLXVuZm9ybWF0dGVkPSIyMDBrIiBkYXRhLW1hdGg9Ik4iIHN0eWxlPSJmb250LWZh bWlseTogJnF1b3Q7Q291cmllciBOZXcmcXVvdDssIG1vbm9zcGFjZTsgZm9udC1zaXplOiAx NHB4OyBmaWxsOiByZ2IoMTAyLCA1MSwgMTUzKTsgZmlsbC1vcGFjaXR5OiAxOyB3aGl0ZS1z cGFjZTogcHJlOyBvcGFjaXR5OiAxOyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCw0MTguMTUp Ij4yMDBrPC90ZXh0PjwvZz48L2c+PGcgY2xhc3M9Im92ZXJheGVzLWFib3ZlIj48L2c+PC9n PjxnIGNsYXNzPSJzdWJwbG90IHg0eTQiPjxnIGNsYXNzPSJsYXllci1zdWJwbG90Ij48ZyBj bGFzcz0ic2hhcGVsYXllciI+PC9nPjxnIGNsYXNzPSJpbWFnZWxheWVyIj48L2c+PC9nPjxn IGNsYXNzPSJtaW5vci1ncmlkbGF5ZXIiPjxnIGNsYXNzPSJ4NCI+PC9nPjxnIGNsYXNzPSJ5 NCI+PC9nPjwvZz48ZyBjbGFzcz0iZ3JpZGxheWVyIj48ZyBjbGFzcz0ieDQiPjxwYXRoIGNs YXNzPSJ4NGdyaWQgY3Jpc3AiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY3Mi41NTAwMDAwMDAw MDAxLDApIiBkPSJNMCwzODMuNzV2MTcwLjI1IiBzdHlsZT0ic3Ryb2tlOiByZ2IoMjU1LCAy NTUsIDI1NSk7IHN0cm9rZS1vcGFjaXR5OiAxOyBzdHJva2Utd2lkdGg6IDFweDsiPjwvcGF0 aD48cGF0aCBjbGFzcz0ieDRncmlkIGNyaXNwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg3NjIu MjcsMCkiIGQ9Ik0wLDM4My43NXYxNzAuMjUiIHN0eWxlPSJzdHJva2U6IHJnYigyNTUsIDI1 NSwgMjU1KTsgc3Ryb2tlLW9wYWNpdHk6IDE7IHN0cm9rZS13aWR0aDogMXB4OyI+PC9wYXRo PjxwYXRoIGNsYXNzPSJ4NGdyaWQgY3Jpc3AiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDg1MS45 OSwwKSIgZD0iTTAsMzgzLjc1djE3MC4yNSIgc3R5bGU9InN0cm9rZTogcmdiKDI1NSwgMjU1 LCAyNTUpOyBzdHJva2Utb3BhY2l0eTogMTsgc3Ryb2tlLXdpZHRoOiAxcHg7Ij48L3BhdGg+ PHBhdGggY2xhc3M9Ing0Z3JpZCBjcmlzcCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTQxLjcx LDApIiBkPSJNMCwzODMuNzV2MTcwLjI1IiBzdHlsZT0ic3Ryb2tlOiByZ2IoMjU1LCAyNTUs IDI1NSk7IHN0cm9rZS1vcGFjaXR5OiAxOyBzdHJva2Utd2lkdGg6IDFweDsiPjwvcGF0aD48 L2c+PGcgY2xhc3M9Ink0Ij48cGF0aCBjbGFzcz0ieTRncmlkIGNyaXNwIiB0cmFuc2Zvcm09 InRyYW5zbGF0ZSgwLDUzMS41NikiIGQ9Ik01ODIuODUsMGg0MjYuMTUiIHN0eWxlPSJzdHJv a2U6IHJnYigyNTUsIDI1NSwgMjU1KTsgc3Ryb2tlLW9wYWNpdHk6IDE7IHN0cm9rZS13aWR0 aDogMXB4OyI+PC9wYXRoPjxwYXRoIGNsYXNzPSJ5NGdyaWQgY3Jpc3AiIHRyYW5zZm9ybT0i dHJhbnNsYXRlKDAsNDk2LjczKSIgZD0iTTU4Mi44NSwwaDQyNi4xNSIgc3R5bGU9InN0cm9r ZTogcmdiKDI1NSwgMjU1LCAyNTUpOyBzdHJva2Utb3BhY2l0eTogMTsgc3Ryb2tlLXdpZHRo OiAxcHg7Ij48L3BhdGg+PHBhdGggY2xhc3M9Ink0Z3JpZCBjcmlzcCIgdHJhbnNmb3JtPSJ0 cmFuc2xhdGUoMCw0NjEuOTA5OTk5OTk5OTk5OTcpIiBkPSJNNTgyLjg1LDBoNDI2LjE1IiBz dHlsZT0ic3Ryb2tlOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHN0cm9rZS1vcGFjaXR5OiAxOyBz dHJva2Utd2lkdGg6IDFweDsiPjwvcGF0aD48cGF0aCBjbGFzcz0ieTRncmlkIGNyaXNwIiB0 cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDQyNy4wOTAwMDAwMDAwMDAwMykiIGQ9Ik01ODIuODUs MGg0MjYuMTUiIHN0eWxlPSJzdHJva2U6IHJnYigyNTUsIDI1NSwgMjU1KTsgc3Ryb2tlLW9w YWNpdHk6IDE7IHN0cm9rZS13aWR0aDogMXB4OyI+PC9wYXRoPjxwYXRoIGNsYXNzPSJ5NGdy aWQgY3Jpc3AiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsMzkyLjI2KSIgZD0iTTU4Mi44NSww aDQyNi4xNSIgc3R5bGU9InN0cm9rZTogcmdiKDI1NSwgMjU1LCAyNTUpOyBzdHJva2Utb3Bh Y2l0eTogMTsgc3Ryb2tlLXdpZHRoOiAxcHg7Ij48L3BhdGg+PC9nPjwvZz48ZyBjbGFzcz0i emVyb2xpbmVsYXllciI+PC9nPjxwYXRoIGNsYXNzPSJ4bGluZXMtYmVsb3ciPjwvcGF0aD48 cGF0aCBjbGFzcz0ieWxpbmVzLWJlbG93Ij48L3BhdGg+PGcgY2xhc3M9Im92ZXJsaW5lcy1i ZWxvdyI+PC9nPjxnIGNsYXNzPSJ4YXhpc2xheWVyLWJlbG93Ij48L2c+PGcgY2xhc3M9Inlh eGlzbGF5ZXItYmVsb3ciPjwvZz48ZyBjbGFzcz0ib3ZlcmF4ZXMtYmVsb3ciPjwvZz48ZyBj bGFzcz0icGxvdCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTgyLjg1LDM4My43NSkiIGNsaXAt cGF0aD0idXJsKCNjbGlwMWJkOGE4eDR5NHBsb3QpIj48ZyBjbGFzcz0ic2NhdHRlcmxheWVy IG1sYXllciI+PGcgY2xhc3M9InRyYWNlIHNjYXR0ZXIgdHJhY2U1ODFjNGEiIHN0eWxlPSJz dHJva2UtbWl0ZXJsaW1pdDogMjsgb3BhY2l0eTogMTsiPjxnIGNsYXNzPSJmaWxscyI+PC9n PjxnIGNsYXNzPSJlcnJvcmJhcnMiPjwvZz48ZyBjbGFzcz0ibGluZXMiPjxwYXRoIGNsYXNz PSJqcy1saW5lIiBkPSJNMCwxMTEuMjRMMjIuNDIsMTMyLjE0TDQ0Ljg1LDExMS4yNEw2Ny4y OCw5OS4wNUw4OS43MSwxMjUuMTdMMTEyLjEzLDEyNi45MUwxMzQuNTYsMTA2LjAyTDE1Ni45 OSwxMDkuNUwxNzkuNDIsMTA2LjAyTDIwMS44NSwxMjUuMTdMMjI0LjI4LDEzMy44OEwyNDYu NzEsMTQ5LjU1TDI2OS4xNCwxNDQuMzNMMjkxLjU3LDExMS4yNEwzMTQsMTMwLjRMMzM2LjQz LDEzNy4zNkwzNTguODYsMTM3LjM2TDM4MS4yOSw2MC43NUw0MDMuNzIsOC41MUw0MjYuMTUs MTI4LjY1IiBzdHlsZT0idmVjdG9yLWVmZmVjdDogbm9uLXNjYWxpbmctc3Ryb2tlOyBmaWxs OiBub25lOyBzdHJva2U6IHJnYigwLCAwLCAyNTUpOyBzdHJva2Utb3BhY2l0eTogMTsgc3Ry b2tlLXdpZHRoOiAycHg7IG9wYWNpdHk6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IDlweCwgOXB4 OyI+PC9wYXRoPjwvZz48ZyBjbGFzcz0icG9pbnRzIj48L2c+PGcgY2xhc3M9InRleHQiPjwv Zz48L2c+PGcgY2xhc3M9InRyYWNlIHNjYXR0ZXIgdHJhY2VkODk0YTciIHN0eWxlPSJzdHJv a2UtbWl0ZXJsaW1pdDogMjsgb3BhY2l0eTogMTsiPjxnIGNsYXNzPSJmaWxscyI+PC9nPjxn IGNsYXNzPSJlcnJvcmJhcnMiPjwvZz48ZyBjbGFzcz0ibGluZXMiPjxwYXRoIGNsYXNzPSJq cy1saW5lIiBkPSJNMCwxNTQuNzdMMjIuNDIsMTQyLjU4TDQ0Ljg1LDE1My4wM0w2Ny4yOCwx NDQuMzNMODkuNzEsMTIzLjQzTDExMi4xMywzMi44OUwxMzQuNTYsMTAwLjhMMTU2Ljk5LDQ4 LjU2TDE3OS40MiwxNTMuMDNMMjAxLjg1LDE0NC4zM0wyMjQuMjgsMTI4LjY1TDI0Ni43MSwx NDcuODFMMjY5LjE0LDE2MS43NEwyOTEuNTcsMTQ5LjU1TDMxNCwxNDcuODFMMzM2LjQzLDE1 Ni41MUwzNTguODYsMTQ3LjgxTDM4MS4yOSwxNDcuODFMNDAzLjcyLDE2MEw0MjYuMTUsMTM1 LjYyIiBzdHlsZT0idmVjdG9yLWVmZmVjdDogbm9uLXNjYWxpbmctc3Ryb2tlOyBmaWxsOiBu b25lOyBzdHJva2U6IHJnYigyNTUsIDAsIDApOyBzdHJva2Utb3BhY2l0eTogMTsgc3Ryb2tl LXdpZHRoOiAycHg7IG9wYWNpdHk6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IDNweCwgM3B4OyI+ PC9wYXRoPjwvZz48ZyBjbGFzcz0icG9pbnRzIj48L2c+PGcgY2xhc3M9InRleHQiPjwvZz48 L2c+PC9nPjwvZz48ZyBjbGFzcz0ib3ZlcnBsb3QiPjwvZz48cGF0aCBjbGFzcz0ieGxpbmVz LWFib3ZlIGNyaXNwIiBkPSJNMCwwIiBzdHlsZT0iZmlsbDogbm9uZTsiPjwvcGF0aD48cGF0 aCBjbGFzcz0ieWxpbmVzLWFib3ZlIGNyaXNwIiBkPSJNMCwwIiBzdHlsZT0iZmlsbDogbm9u ZTsiPjwvcGF0aD48ZyBjbGFzcz0ib3ZlcmxpbmVzLWFib3ZlIj48L2c+PGcgY2xhc3M9Inhh eGlzbGF5ZXItYWJvdmUiPjxnIGNsYXNzPSJ4NHRpY2siPjx0ZXh0IHRleHQtYW5jaG9yPSJt aWRkbGUiIHg9IjAiIHk9IjU2OSIgZGF0YS11bmZvcm1hdHRlZD0iMCIgZGF0YS1tYXRoPSJO IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1ODIuODMsMCkiIHN0eWxlPSJmb250LWZhbWlseTog JnF1b3Q7Q291cmllciBOZXcmcXVvdDssIG1vbm9zcGFjZTsgZm9udC1zaXplOiAxNHB4OyBm aWxsOiByZ2IoMTAyLCA1MSwgMTUzKTsgZmlsbC1vcGFjaXR5OiAxOyB3aGl0ZS1zcGFjZTog cHJlOyBvcGFjaXR5OiAxOyI+MDwvdGV4dD48L2c+PGcgY2xhc3M9Ing0dGljayI+PHRleHQg dGV4dC1hbmNob3I9Im1pZGRsZSIgeD0iMCIgeT0iNTY5IiBkYXRhLXVuZm9ybWF0dGVkPSIy MGsiIGRhdGEtbWF0aD0iTiIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtDb3VyaWVyIE5l dyZxdW90OywgbW9ub3NwYWNlOyBmb250LXNpemU6IDE0cHg7IGZpbGw6IHJnYigxMDIsIDUx LCAxNTMpOyBmaWxsLW9wYWNpdHk6IDE7IHdoaXRlLXNwYWNlOiBwcmU7IG9wYWNpdHk6IDE7 IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2NzIuNTUwMDAwMDAwMDAwMSwwKSI+MjBrPC90ZXh0 PjwvZz48ZyBjbGFzcz0ieDR0aWNrIj48dGV4dCB0ZXh0LWFuY2hvcj0ibWlkZGxlIiB4PSIw IiB5PSI1NjkiIGRhdGEtdW5mb3JtYXR0ZWQ9IjQwayIgZGF0YS1tYXRoPSJOIiBzdHlsZT0i Zm9udC1mYW1pbHk6ICZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7LCBtb25vc3BhY2U7IGZvbnQt c2l6ZTogMTRweDsgZmlsbDogcmdiKDEwMiwgNTEsIDE1Myk7IGZpbGwtb3BhY2l0eTogMTsg d2hpdGUtc3BhY2U6IHByZTsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc2 Mi4yNywwKSI+NDBrPC90ZXh0PjwvZz48ZyBjbGFzcz0ieDR0aWNrIj48dGV4dCB0ZXh0LWFu Y2hvcj0ibWlkZGxlIiB4PSIwIiB5PSI1NjkiIGRhdGEtdW5mb3JtYXR0ZWQ9IjYwayIgZGF0 YS1tYXRoPSJOIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7 LCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTRweDsgZmlsbDogcmdiKDEwMiwgNTEsIDE1Myk7 IGZpbGwtb3BhY2l0eTogMTsgd2hpdGUtc3BhY2U6IHByZTsgb3BhY2l0eTogMTsiIHRyYW5z Zm9ybT0idHJhbnNsYXRlKDg1MS45OSwwKSI+NjBrPC90ZXh0PjwvZz48ZyBjbGFzcz0ieDR0 aWNrIj48dGV4dCB0ZXh0LWFuY2hvcj0ibWlkZGxlIiB4PSIwIiB5PSI1NjkiIGRhdGEtdW5m b3JtYXR0ZWQ9IjgwayIgZGF0YS1tYXRoPSJOIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90 O0NvdXJpZXIgTmV3JnF1b3Q7LCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTRweDsgZmlsbDog cmdiKDEwMiwgNTEsIDE1Myk7IGZpbGwtb3BhY2l0eTogMTsgd2hpdGUtc3BhY2U6IHByZTsg b3BhY2l0eTogMTsiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDk0MS43MSwwKSI+ODBrPC90ZXh0 PjwvZz48L2c+PGcgY2xhc3M9InlheGlzbGF5ZXItYWJvdmUiPjxnIGNsYXNzPSJ5NHRpY2si Pjx0ZXh0IHRleHQtYW5jaG9yPSJlbmQiIHg9IjU4MS44NSIgeT0iNC44OTk5OTk5OTk5OTk5 OTk1IiBkYXRhLXVuZm9ybWF0dGVkPSIwLjA4IiBkYXRhLW1hdGg9Ik4iIHRyYW5zZm9ybT0i dHJhbnNsYXRlKDAsNTMxLjU2KSIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtDb3VyaWVy IE5ldyZxdW90OywgbW9ub3NwYWNlOyBmb250LXNpemU6IDE0cHg7IGZpbGw6IHJnYigxMDIs IDUxLCAxNTMpOyBmaWxsLW9wYWNpdHk6IDE7IHdoaXRlLXNwYWNlOiBwcmU7IG9wYWNpdHk6 IDE7Ij4wLjA4PC90ZXh0PjwvZz48ZyBjbGFzcz0ieTR0aWNrIj48dGV4dCB0ZXh0LWFuY2hv cj0iZW5kIiB4PSI1ODEuODUiIHk9IjQuODk5OTk5OTk5OTk5OTk5NSIgZGF0YS11bmZvcm1h dHRlZD0iMC4xIiBkYXRhLW1hdGg9Ik4iIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7Q291 cmllciBOZXcmcXVvdDssIG1vbm9zcGFjZTsgZm9udC1zaXplOiAxNHB4OyBmaWxsOiByZ2Io MTAyLCA1MSwgMTUzKTsgZmlsbC1vcGFjaXR5OiAxOyB3aGl0ZS1zcGFjZTogcHJlOyBvcGFj aXR5OiAxOyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCw0OTYuNzMpIj4wLjE8L3RleHQ+PC9n PjxnIGNsYXNzPSJ5NHRpY2siPjx0ZXh0IHRleHQtYW5jaG9yPSJlbmQiIHg9IjU4MS44NSIg eT0iNC44OTk5OTk5OTk5OTk5OTk1IiBkYXRhLXVuZm9ybWF0dGVkPSIwLjEyIiBkYXRhLW1h dGg9Ik4iIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7Q291cmllciBOZXcmcXVvdDssIG1v bm9zcGFjZTsgZm9udC1zaXplOiAxNHB4OyBmaWxsOiByZ2IoMTAyLCA1MSwgMTUzKTsgZmls bC1vcGFjaXR5OiAxOyB3aGl0ZS1zcGFjZTogcHJlOyBvcGFjaXR5OiAxOyIgdHJhbnNmb3Jt PSJ0cmFuc2xhdGUoMCw0NjEuOTA5OTk5OTk5OTk5OTcpIj4wLjEyPC90ZXh0PjwvZz48ZyBj bGFzcz0ieTR0aWNrIj48dGV4dCB0ZXh0LWFuY2hvcj0iZW5kIiB4PSI1ODEuODUiIHk9IjQu ODk5OTk5OTk5OTk5OTk5NSIgZGF0YS11bmZvcm1hdHRlZD0iMC4xNCIgZGF0YS1tYXRoPSJO IiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7LCBtb25vc3Bh Y2U7IGZvbnQtc2l6ZTogMTRweDsgZmlsbDogcmdiKDEwMiwgNTEsIDE1Myk7IGZpbGwtb3Bh Y2l0eTogMTsgd2hpdGUtc3BhY2U6IHByZTsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0idHJh bnNsYXRlKDAsNDI3LjA5MDAwMDAwMDAwMDAzKSI+MC4xNDwvdGV4dD48L2c+PGcgY2xhc3M9 Ink0dGljayI+PHRleHQgdGV4dC1hbmNob3I9ImVuZCIgeD0iNTgxLjg1IiB5PSI0Ljg5OTk5 OTk5OTk5OTk5OTUiIGRhdGEtdW5mb3JtYXR0ZWQ9IjAuMTYiIGRhdGEtbWF0aD0iTiIgc3R5 bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtDb3VyaWVyIE5ldyZxdW90OywgbW9ub3NwYWNlOyBm b250LXNpemU6IDE0cHg7IGZpbGw6IHJnYigxMDIsIDUxLCAxNTMpOyBmaWxsLW9wYWNpdHk6 IDE7IHdoaXRlLXNwYWNlOiBwcmU7IG9wYWNpdHk6IDE7IiB0cmFuc2Zvcm09InRyYW5zbGF0 ZSgwLDM5Mi4yNikiPjAuMTY8L3RleHQ+PC9nPjwvZz48ZyBjbGFzcz0ib3ZlcmF4ZXMtYWJv dmUiPjwvZz48L2c+PC9nPjxnIGNsYXNzPSJwb2xhcmxheWVyIj48L2c+PGcgY2xhc3M9InNt aXRobGF5ZXIiPjwvZz48ZyBjbGFzcz0idGVybmFyeWxheWVyIj48L2c+PGcgY2xhc3M9Imdl b2xheWVyIj48L2c+PGcgY2xhc3M9ImZ1bm5lbGFyZWFsYXllciI+PC9nPjxnIGNsYXNzPSJw aWVsYXllciI+PC9nPjxnIGNsYXNzPSJpY2ljbGVsYXllciI+PC9nPjxnIGNsYXNzPSJ0cmVl bWFwbGF5ZXIiPjwvZz48ZyBjbGFzcz0ic3VuYnVyc3RsYXllciI+PC9nPjxnIGNsYXNzPSJn bGltYWdlcyI+PC9nPjwvc3ZnPjxkaXYgY2xhc3M9ImdsLWNvbnRhaW5lciI+PC9kaXY+PHN2 ZyBjbGFzcz0ibWFpbi1zdmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxMjAw IiBoZWlnaHQ9IjYwMCI+PGRlZnMgaWQ9InRvcGRlZnMtMWJkOGE4Ij48ZyBjbGFzcz0iY2xp cHMiPjwvZz48Y2xpcHBhdGggaWQ9ImxlZ2VuZDFiZDhhOCI+PHJlY3Qgd2lkdGg9IjE3MiIg aGVpZ2h0PSI5NSIgeD0iMCIgeT0iMCI+PC9yZWN0PjwvY2xpcHBhdGg+PC9kZWZzPjxnIGNs YXNzPSJpbmRpY2F0b3JsYXllciI+PC9nPjxnIGNsYXNzPSJsYXllci1hYm92ZSI+PGcgY2xh c3M9ImltYWdlbGF5ZXIiPjwvZz48ZyBjbGFzcz0ic2hhcGVsYXllciI+PC9nPjwvZz48ZyBj bGFzcz0iaW5mb2xheWVyIj48ZyBjbGFzcz0ibGVnZW5kIiBwb2ludGVyLWV2ZW50cz0iYWxs IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMDI3Ljk0LDEwMCkiPjxyZWN0IGNsYXNzPSJiZyIg c2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIiBzdHlsZT0ic3Ryb2tlOiByZ2IoNjgsIDY4 LCA2OCk7IHN0cm9rZS1vcGFjaXR5OiAxOyBmaWxsOiByZ2IoMjU1LCAyNTUsIDI1NSk7IGZp bGwtb3BhY2l0eTogMTsgc3Ryb2tlLXdpZHRoOiAwcHg7IiB3aWR0aD0iMTcyIiBoZWlnaHQ9 Ijk1IiB4PSIwIiB5PSIwIj48L3JlY3Q+PGcgY2xhc3M9InNjcm9sbGJveCIgdHJhbnNmb3Jt PSIiIGNsaXAtcGF0aD0idXJsKCNsZWdlbmQxYmQ4YTgpIj48ZyBjbGFzcz0iZ3JvdXBzIj48 ZyBjbGFzcz0idHJhY2VzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDE1LjYpIiBzdHlsZT0i b3BhY2l0eTogMTsiPjx0ZXh0IGNsYXNzPSJsZWdlbmR0ZXh0IiB0ZXh0LWFuY2hvcj0ic3Rh cnQiIHg9IjQwIiB5PSI1LjQ2IiBkYXRhLXVuZm9ybWF0dGVkPSJUcmFuc2Zvcm1lZCBvcnMi IGRhdGEtbWF0aD0iTiIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtDb3VyaWVyIE5ldyZx dW90OywgbW9ub3NwYWNlOyBmb250LXNpemU6IDE0cHg7IGZpbGw6IHJnYigxMDIsIDUxLCAx NTMpOyBmaWxsLW9wYWNpdHk6IDE7IHdoaXRlLXNwYWNlOiBwcmU7Ij5UcmFuc2Zvcm1lZCBv cnM8L3RleHQ+PGcgY2xhc3M9ImxheWVycyIgc3R5bGU9Im9wYWNpdHk6IDE7Ij48ZyBjbGFz cz0ibGVnZW5kZmlsbCI+PC9nPjxnIGNsYXNzPSJsZWdlbmRsaW5lcyI+PHBhdGggY2xhc3M9 ImpzLWxpbmUiIGQ9Ik01LDBoMzAiIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2U6IHJnYigw LCAxMjgsIDApOyBzdHJva2Utb3BhY2l0eTogMTsgc3Ryb2tlLWRhc2hhcnJheTogOXB4LCA5 cHg7IHN0cm9rZS13aWR0aDogMnB4OyI+PC9wYXRoPjwvZz48ZyBjbGFzcz0ibGVnZW5kc3lt Ym9scyI+PGcgY2xhc3M9ImxlZ2VuZHBvaW50cyI+PHBhdGggY2xhc3M9InNjYXR0ZXJwdHMi IHRyYW5zZm9ybT0idHJhbnNsYXRlKDIwLDApIiBkPSJNMywwQTMsMyAwIDEsMSAwLC0zQTMs MyAwIDAsMSAzLDBaIiBzdHlsZT0ib3BhY2l0eTogMTsgc3Ryb2tlLXdpZHRoOiAwcHg7IGZp bGw6IHJnYigwLCAxMjgsIDApOyBmaWxsLW9wYWNpdHk6IDE7Ij48L3BhdGg+PC9nPjwvZz48 L2c+PHJlY3QgY2xhc3M9ImxlZ2VuZHRvZ2dsZSIgcG9pbnRlci1ldmVudHM9ImFsbCIgeD0i MCIgeT0iLTEwLjYiIHdpZHRoPSIxNjYuMDMxMjUiIGhlaWdodD0iMjEuMiIgc3R5bGU9ImN1 cnNvcjogcG9pbnRlcjsgZmlsbDogcmdiKDAsIDAsIDApOyBmaWxsLW9wYWNpdHk6IDA7Ij48 L3JlY3Q+PC9nPjxnIGNsYXNzPSJ0cmFjZXMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsMzYu OCkiIHN0eWxlPSJvcGFjaXR5OiAxOyI+PHRleHQgY2xhc3M9ImxlZ2VuZHRleHQiIHRleHQt YW5jaG9yPSJzdGFydCIgeD0iNDAiIHk9IjUuNDYiIGRhdGEtdW5mb3JtYXR0ZWQ9Ik9yaWdp bmFsIG9ycyIgZGF0YS1tYXRoPSJOIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O0NvdXJp ZXIgTmV3JnF1b3Q7LCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTRweDsgZmlsbDogcmdiKDEw MiwgNTEsIDE1Myk7IGZpbGwtb3BhY2l0eTogMTsgd2hpdGUtc3BhY2U6IHByZTsiPk9yaWdp bmFsIG9yczwvdGV4dD48ZyBjbGFzcz0ibGF5ZXJzIiBzdHlsZT0ib3BhY2l0eTogMTsiPjxn IGNsYXNzPSJsZWdlbmRmaWxsIj48L2c+PGcgY2xhc3M9ImxlZ2VuZGxpbmVzIj48cGF0aCBj bGFzcz0ianMtbGluZSIgZD0iTTUsMGgzMCIgc3R5bGU9ImZpbGw6IG5vbmU7IHN0cm9rZTog cmdiKDI1NSwgMTY1LCAwKTsgc3Ryb2tlLW9wYWNpdHk6IDE7IHN0cm9rZS1kYXNoYXJyYXk6 IDNweCwgM3B4OyBzdHJva2Utd2lkdGg6IDJweDsiPjwvcGF0aD48L2c+PGcgY2xhc3M9Imxl Z2VuZHN5bWJvbHMiPjxnIGNsYXNzPSJsZWdlbmRwb2ludHMiPjxwYXRoIGNsYXNzPSJzY2F0 dGVycHRzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMCwwKSIgZD0iTTMsMEEzLDMgMCAxLDEg MCwtM0EzLDMgMCAwLDEgMywwWiIgc3R5bGU9Im9wYWNpdHk6IDE7IHN0cm9rZS13aWR0aDog MHB4OyBmaWxsOiByZ2IoMjU1LCAxNjUsIDApOyBmaWxsLW9wYWNpdHk6IDE7Ij48L3BhdGg+ PC9nPjwvZz48L2c+PHJlY3QgY2xhc3M9ImxlZ2VuZHRvZ2dsZSIgcG9pbnRlci1ldmVudHM9 ImFsbCIgeD0iMCIgeT0iLTEwLjYiIHdpZHRoPSIxNjYuMDMxMjUiIGhlaWdodD0iMjEuMiIg c3R5bGU9ImN1cnNvcjogcG9pbnRlcjsgZmlsbDogcmdiKDAsIDAsIDApOyBmaWxsLW9wYWNp dHk6IDA7Ij48L3JlY3Q+PC9nPjxnIGNsYXNzPSJ0cmFjZXMiIHRyYW5zZm9ybT0idHJhbnNs YXRlKDAsNTgpIiBzdHlsZT0ib3BhY2l0eTogMTsiPjx0ZXh0IGNsYXNzPSJsZWdlbmR0ZXh0 IiB0ZXh0LWFuY2hvcj0ic3RhcnQiIHg9IjQwIiB5PSI1LjQ2IiBkYXRhLXVuZm9ybWF0dGVk PSJUcmFuc2Zvcm1lZCBvcnMiIGRhdGEtbWF0aD0iTiIgc3R5bGU9ImZvbnQtZmFtaWx5OiAm cXVvdDtDb3VyaWVyIE5ldyZxdW90OywgbW9ub3NwYWNlOyBmb250LXNpemU6IDE0cHg7IGZp bGw6IHJnYigxMDIsIDUxLCAxNTMpOyBmaWxsLW9wYWNpdHk6IDE7IHdoaXRlLXNwYWNlOiBw cmU7Ij5UcmFuc2Zvcm1lZCBvcnM8L3RleHQ+PGcgY2xhc3M9ImxheWVycyIgc3R5bGU9Im9w YWNpdHk6IDE7Ij48ZyBjbGFzcz0ibGVnZW5kZmlsbCI+PC9nPjxnIGNsYXNzPSJsZWdlbmRs aW5lcyI+PHBhdGggY2xhc3M9ImpzLWxpbmUiIGQ9Ik01LDBoMzAiIHN0eWxlPSJmaWxsOiBu b25lOyBzdHJva2U6IHJnYigwLCAwLCAyNTUpOyBzdHJva2Utb3BhY2l0eTogMTsgc3Ryb2tl LWRhc2hhcnJheTogOXB4LCA5cHg7IHN0cm9rZS13aWR0aDogMnB4OyI+PC9wYXRoPjwvZz48 ZyBjbGFzcz0ibGVnZW5kc3ltYm9scyI+PGcgY2xhc3M9ImxlZ2VuZHBvaW50cyI+PHBhdGgg Y2xhc3M9InNjYXR0ZXJwdHMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIwLDApIiBkPSJNMyww QTMsMyAwIDEsMSAwLC0zQTMsMyAwIDAsMSAzLDBaIiBzdHlsZT0ib3BhY2l0eTogMTsgc3Ry b2tlLXdpZHRoOiAwcHg7IGZpbGw6IHJnYigwLCAwLCAyNTUpOyBmaWxsLW9wYWNpdHk6IDE7 Ij48L3BhdGg+PC9nPjwvZz48L2c+PHJlY3QgY2xhc3M9ImxlZ2VuZHRvZ2dsZSIgcG9pbnRl ci1ldmVudHM9ImFsbCIgeD0iMCIgeT0iLTEwLjYiIHdpZHRoPSIxNjYuMDMxMjUiIGhlaWdo dD0iMjEuMiIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsgZmlsbDogcmdiKDAsIDAsIDApOyBm aWxsLW9wYWNpdHk6IDA7Ij48L3JlY3Q+PC9nPjxnIGNsYXNzPSJ0cmFjZXMiIHRyYW5zZm9y bT0idHJhbnNsYXRlKDAsNzkuMTk5OTk5OTk5OTk5OTkpIiBzdHlsZT0ib3BhY2l0eTogMTsi Pjx0ZXh0IGNsYXNzPSJsZWdlbmR0ZXh0IiB0ZXh0LWFuY2hvcj0ic3RhcnQiIHg9IjQwIiB5 PSI1LjQ2IiBkYXRhLXVuZm9ybWF0dGVkPSJPcmlnaW5hbCBvcnMiIGRhdGEtbWF0aD0iTiIg c3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtDb3VyaWVyIE5ldyZxdW90OywgbW9ub3NwYWNl OyBmb250LXNpemU6IDE0cHg7IGZpbGw6IHJnYigxMDIsIDUxLCAxNTMpOyBmaWxsLW9wYWNp dHk6IDE7IHdoaXRlLXNwYWNlOiBwcmU7Ij5PcmlnaW5hbCBvcnM8L3RleHQ+PGcgY2xhc3M9 ImxheWVycyIgc3R5bGU9Im9wYWNpdHk6IDE7Ij48ZyBjbGFzcz0ibGVnZW5kZmlsbCI+PC9n PjxnIGNsYXNzPSJsZWdlbmRsaW5lcyI+PHBhdGggY2xhc3M9ImpzLWxpbmUiIGQ9Ik01LDBo MzAiIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2U6IHJnYigyNTUsIDAsIDApOyBzdHJva2Ut b3BhY2l0eTogMTsgc3Ryb2tlLWRhc2hhcnJheTogM3B4LCAzcHg7IHN0cm9rZS13aWR0aDog MnB4OyI+PC9wYXRoPjwvZz48ZyBjbGFzcz0ibGVnZW5kc3ltYm9scyI+PGcgY2xhc3M9Imxl Z2VuZHBvaW50cyI+PHBhdGggY2xhc3M9InNjYXR0ZXJwdHMiIHRyYW5zZm9ybT0idHJhbnNs YXRlKDIwLDApIiBkPSJNMywwQTMsMyAwIDEsMSAwLC0zQTMsMyAwIDAsMSAzLDBaIiBzdHls ZT0ib3BhY2l0eTogMTsgc3Ryb2tlLXdpZHRoOiAwcHg7IGZpbGw6IHJnYigyNTUsIDAsIDAp OyBmaWxsLW9wYWNpdHk6IDE7Ij48L3BhdGg+PC9nPjwvZz48L2c+PHJlY3QgY2xhc3M9Imxl Z2VuZHRvZ2dsZSIgcG9pbnRlci1ldmVudHM9ImFsbCIgeD0iMCIgeT0iLTEwLjYiIHdpZHRo PSIxNjYuMDMxMjUiIGhlaWdodD0iMjEuMiIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsgZmls bDogcmdiKDAsIDAsIDApOyBmaWxsLW9wYWNpdHk6IDA7Ij48L3JlY3Q+PC9nPjwvZz48L2c+ PHJlY3QgY2xhc3M9InNjcm9sbGJhciIgcng9IjIwIiByeT0iMyIgd2lkdGg9IjAiIGhlaWdo dD0iMCIgc3R5bGU9ImZpbGw6IHJnYigxMjgsIDEzOSwgMTY0KTsgZmlsbC1vcGFjaXR5OiAx OyIgeD0iMCIgeT0iMCI+PC9yZWN0PjwvZz48ZyBjbGFzcz0iZy1ndGl0bGUiPjx0ZXh0IGNs YXNzPSJndGl0bGUiIHg9IjYwIiB5PSI1MCIgdGV4dC1hbmNob3I9InN0YXJ0IiBkeT0iMGVt IiBkYXRhLXVuZm9ybWF0dGVkPSJFeGVjdXRpb24gYW5kIHBsYW5uaW5nIHRpbWVzIGZvciBl eGVjdXRpb24gb2Ygb3IgZXhwcmVzc2lvbnMiIGRhdGEtbWF0aD0iTiIgc3R5bGU9ImZvbnQt ZmFtaWx5OiAmcXVvdDtDb3VyaWVyIE5ldyZxdW90OywgbW9ub3NwYWNlOyBmb250LXNpemU6 IDIwcHg7IGZpbGw6IHJnYigxMDIsIDUxLCAxNTMpOyBvcGFjaXR5OiAxOyBmb250LXdlaWdo dDogbm9ybWFsOyB3aGl0ZS1zcGFjZTogcHJlOyI+RXhlY3V0aW9uIGFuZCBwbGFubmluZyB0 aW1lcyBmb3IgZXhlY3V0aW9uIG9mIG9yIGV4cHJlc3Npb25zPC90ZXh0PjwvZz48ZyBjbGFz cz0iZy14dGl0bGUiPjx0ZXh0IGNsYXNzPSJ4dGl0bGUiIHg9IjI3NS4wNzUwMDAwMDAwMDAw NSIgeT0iMzE2LjE1IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBkYXRhLXVuZm9ybWF0dGVkPSJu dW1iZXIgb2Ygb3IgZXhwcmVzc2lvbnMiIGRhdGEtbWF0aD0iTiIgc3R5bGU9ImZvbnQtZmFt aWx5OiAmcXVvdDtDb3VyaWVyIE5ldyZxdW90OywgbW9ub3NwYWNlOyBmb250LXNpemU6IDE3 cHg7IGZpbGw6IHJnYigxMDIsIDUxLCAxNTMpOyBvcGFjaXR5OiAxOyBmb250LXdlaWdodDog bm9ybWFsOyB3aGl0ZS1zcGFjZTogcHJlOyI+bnVtYmVyIG9mIG9yIGV4cHJlc3Npb25zPC90 ZXh0PjwvZz48ZyBjbGFzcz0iZy14MnRpdGxlIj48dGV4dCBjbGFzcz0ieDJ0aXRsZSIgeD0i Nzk1LjkyNSIgeT0iMzE2LjE1IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBkYXRhLXVuZm9ybWF0 dGVkPSJudW1iZXIgb2Ygb3IgZXhwcmVzc2lvbnMiIGRhdGEtbWF0aD0iTiIgc3R5bGU9ImZv bnQtZmFtaWx5OiAmcXVvdDtDb3VyaWVyIE5ldyZxdW90OywgbW9ub3NwYWNlOyBmb250LXNp emU6IDE3cHg7IGZpbGw6IHJnYigxMDIsIDUxLCAxNTMpOyBvcGFjaXR5OiAxOyBmb250LXdl aWdodDogbm9ybWFsOyB3aGl0ZS1zcGFjZTogcHJlOyI+bnVtYmVyIG9mIG9yIGV4cHJlc3Np b25zPC90ZXh0PjwvZz48ZyBjbGFzcz0iZy14M3RpdGxlIiB0cmFuc2Zvcm09InRyYW5zbGF0 ZSgwLC00Ljg5OTk5OTk5OTk5OTk3NykiPjx0ZXh0IGNsYXNzPSJ4M3RpdGxlIiB4PSIyNzUu MDc1MDAwMDAwMDAwMDUiIHk9IjU5OS45IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBkYXRhLXVu Zm9ybWF0dGVkPSJudW1iZXIgb2Ygb3IgZXhwcmVzc2lvbnMiIGRhdGEtbWF0aD0iTiIgc3R5 bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtDb3VyaWVyIE5ldyZxdW90OywgbW9ub3NwYWNlOyBm b250LXNpemU6IDE3cHg7IGZpbGw6IHJnYigxMDIsIDUxLCAxNTMpOyBvcGFjaXR5OiAxOyBm b250LXdlaWdodDogbm9ybWFsOyB3aGl0ZS1zcGFjZTogcHJlOyI+bnVtYmVyIG9mIG9yIGV4 cHJlc3Npb25zPC90ZXh0PjwvZz48ZyBjbGFzcz0iZy14NHRpdGxlIiB0cmFuc2Zvcm09InRy YW5zbGF0ZSgwLC00Ljg5OTk5OTk5OTk5OTk3NykiPjx0ZXh0IGNsYXNzPSJ4NHRpdGxlIiB4 PSI3OTUuOTI1IiB5PSI1OTkuOSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZGF0YS11bmZvcm1h dHRlZD0ibnVtYmVyIG9mIG9yIGV4cHJlc3Npb25zIiBkYXRhLW1hdGg9Ik4iIHN0eWxlPSJm b250LWZhbWlseTogJnF1b3Q7Q291cmllciBOZXcmcXVvdDssIG1vbm9zcGFjZTsgZm9udC1z aXplOiAxN3B4OyBmaWxsOiByZ2IoMTAyLCA1MSwgMTUzKTsgb3BhY2l0eTogMTsgZm9udC13 ZWlnaHQ6IG5vcm1hbDsgd2hpdGUtc3BhY2U6IHByZTsiPm51bWJlciBvZiBvciBleHByZXNz aW9uczwvdGV4dD48L2c+PGcgY2xhc3M9ImcteXRpdGxlIiB0cmFuc2Zvcm09InRyYW5zbGF0 ZSg1LjExOTE0MDYyNSwwKSI+PHRleHQgY2xhc3M9Inl0aXRsZSIgdHJhbnNmb3JtPSJyb3Rh dGUoLTkwLDguODgxMjUwMDAwMDAwMDAxLDE4NS4xMjUpIiB4PSI4Ljg4MTI1MDAwMDAwMDAw MSIgeT0iMTg1LjEyNSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZGF0YS11bmZvcm1hdHRlZD0i TVMiIGRhdGEtbWF0aD0iTiIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtDb3VyaWVyIE5l dyZxdW90OywgbW9ub3NwYWNlOyBmb250LXNpemU6IDE3cHg7IGZpbGw6IHJnYigxMDIsIDUx LCAxNTMpOyBvcGFjaXR5OiAxOyBmb250LXdlaWdodDogbm9ybWFsOyB3aGl0ZS1zcGFjZTog cHJlOyI+TVM8L3RleHQ+PC9nPjxnIGNsYXNzPSJnLXkydGl0bGUiPjx0ZXh0IGNsYXNzPSJ5 MnRpdGxlIiB0cmFuc2Zvcm09InJvdGF0ZSgtOTAsNTIxLjM0MDIzNDM3NSwxODUuMTI1KSIg eD0iNTIxLjM0MDIzNDM3NSIgeT0iMTg1LjEyNSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZGF0 YS11bmZvcm1hdHRlZD0iTVMiIGRhdGEtbWF0aD0iTiIgc3R5bGU9ImZvbnQtZmFtaWx5OiAm cXVvdDtDb3VyaWVyIE5ldyZxdW90OywgbW9ub3NwYWNlOyBmb250LXNpemU6IDE3cHg7IGZp bGw6IHJnYigxMDIsIDUxLCAxNTMpOyBvcGFjaXR5OiAxOyBmb250LXdlaWdodDogbm9ybWFs OyB3aGl0ZS1zcGFjZTogcHJlOyI+TVM8L3RleHQ+PC9nPjxnIGNsYXNzPSJnLXkzdGl0bGUi IHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzLjUwOTc2NTYyNSwwKSI+PHRleHQgY2xhc3M9Inkz dGl0bGUiIHRyYW5zZm9ybT0icm90YXRlKC05MCwwLjQ5MDYyNTAwMDAwMDAwMTQsNDY4Ljg3 NSkiIHg9IjAuNDkwNjI1MDAwMDAwMDAxNCIgeT0iNDY4Ljg3NSIgdGV4dC1hbmNob3I9Im1p ZGRsZSIgZGF0YS11bmZvcm1hdHRlZD0iTVMiIGRhdGEtbWF0aD0iTiIgc3R5bGU9ImZvbnQt ZmFtaWx5OiAmcXVvdDtDb3VyaWVyIE5ldyZxdW90OywgbW9ub3NwYWNlOyBmb250LXNpemU6 IDE3cHg7IGZpbGw6IHJnYigxMDIsIDUxLCAxNTMpOyBvcGFjaXR5OiAxOyBmb250LXdlaWdo dDogbm9ybWFsOyB3aGl0ZS1zcGFjZTogcHJlOyI+TVM8L3RleHQ+PC9nPjxnIGNsYXNzPSJn LXk0dGl0bGUiPjx0ZXh0IGNsYXNzPSJ5NHRpdGxlIiB0cmFuc2Zvcm09InJvdGF0ZSgtOTAs NTIxLjM0MDIzNDM3NSw0NjguODc1KSIgeD0iNTIxLjM0MDIzNDM3NSIgeT0iNDY4Ljg3NSIg dGV4dC1hbmNob3I9Im1pZGRsZSIgZGF0YS11bmZvcm1hdHRlZD0iTVMiIGRhdGEtbWF0aD0i TiIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtDb3VyaWVyIE5ldyZxdW90OywgbW9ub3Nw YWNlOyBmb250LXNpemU6IDE3cHg7IGZpbGw6IHJnYigxMDIsIDUxLCAxNTMpOyBvcGFjaXR5 OiAxOyBmb250LXdlaWdodDogbm9ybWFsOyB3aGl0ZS1zcGFjZTogcHJlOyI+TVM8L3RleHQ+ PC9nPjxnIGNsYXNzPSJhbm5vdGF0aW9uIiBkYXRhLWluZGV4PSIwIiBzdHlsZT0ib3BhY2l0 eTogMTsiPjxnIGNsYXNzPSJhbm5vdGF0aW9uLXRleHQtZyIgdHJhbnNmb3JtPSJyb3RhdGUo MCwyNzUuMDc1MDAwMDAwMDAwMDUsODguOTk5OTk5OTk5OTk5OTkpIj48ZyBjbGFzcz0iY3Vy c29yLXBvaW50ZXIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc2LDc4KSI+PHJlY3QgY2xhc3M9 ImJnIiB4PSIwLjUiIHk9IjAuNSIgd2lkdGg9IjM5NyIgaGVpZ2h0PSIyMSIgc3R5bGU9InN0 cm9rZS13aWR0aDogMXB4OyBzdHJva2U6IHJnYigwLCAwLCAwKTsgc3Ryb2tlLW9wYWNpdHk6 IDA7IGZpbGw6IHJnYigwLCAwLCAwKTsgZmlsbC1vcGFjaXR5OiAwOyI+PC9yZWN0Pjx0ZXh0 IGNsYXNzPSJhbm5vdGF0aW9uLXRleHQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGRhdGEtdW5m b3JtYXR0ZWQ9IkV4ZWMgdGltZSBmb3Igb3JzIHdpdGggaW5kZXhfc2NhbiBlbmFibGVkIiBk YXRhLW1hdGg9Ik4iIHg9IjE5OC44MzU5Mzc1IiB5PSIxNSIgc3R5bGU9ImZvbnQtZmFtaWx5 OiAmcXVvdDtDb3VyaWVyIE5ldyZxdW90OywgbW9ub3NwYWNlOyBmb250LXNpemU6IDE2cHg7 IGZpbGw6IHJnYigxMDIsIDUxLCAxNTMpOyBmaWxsLW9wYWNpdHk6IDE7IHdoaXRlLXNwYWNl OiBwcmU7Ij5FeGVjIHRpbWUgZm9yIG9ycyB3aXRoIGluZGV4X3NjYW4gZW5hYmxlZDwvdGV4 dD48L2c+PC9nPjwvZz48ZyBjbGFzcz0iYW5ub3RhdGlvbiIgZGF0YS1pbmRleD0iMSIgc3R5 bGU9Im9wYWNpdHk6IDE7Ij48ZyBjbGFzcz0iYW5ub3RhdGlvbi10ZXh0LWciIHRyYW5zZm9y bT0icm90YXRlKDAsNzk1LjkyNTAwMDAwMDAwMDEsODguOTk5OTk5OTk5OTk5OTkpIj48ZyBj bGFzcz0iY3Vyc29yLXBvaW50ZXIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU5Nyw3OCkiPjxy ZWN0IGNsYXNzPSJiZyIgeD0iMC41IiB5PSIwLjUiIHdpZHRoPSIzOTciIGhlaWdodD0iMjEi IHN0eWxlPSJzdHJva2Utd2lkdGg6IDFweDsgc3Ryb2tlOiByZ2IoMCwgMCwgMCk7IHN0cm9r ZS1vcGFjaXR5OiAwOyBmaWxsOiByZ2IoMCwgMCwgMCk7IGZpbGwtb3BhY2l0eTogMDsiPjwv cmVjdD48dGV4dCBjbGFzcz0iYW5ub3RhdGlvbi10ZXh0IiB0ZXh0LWFuY2hvcj0ibWlkZGxl IiBkYXRhLXVuZm9ybWF0dGVkPSJQbGFuIHRpbWUgZm9yIG9ycyB3aXRoIGluZGV4X3NjYW4g ZW5hYmxlZCIgZGF0YS1tYXRoPSJOIiB4PSIxOTguODM1OTM3NSIgeT0iMTUiIHN0eWxlPSJm b250LWZhbWlseTogJnF1b3Q7Q291cmllciBOZXcmcXVvdDssIG1vbm9zcGFjZTsgZm9udC1z aXplOiAxNnB4OyBmaWxsOiByZ2IoMTAyLCA1MSwgMTUzKTsgZmlsbC1vcGFjaXR5OiAxOyB3 aGl0ZS1zcGFjZTogcHJlOyI+UGxhbiB0aW1lIGZvciBvcnMgd2l0aCBpbmRleF9zY2FuIGVu YWJsZWQ8L3RleHQ+PC9nPjwvZz48L2c+PGcgY2xhc3M9ImFubm90YXRpb24iIGRhdGEtaW5k ZXg9IjIiIHN0eWxlPSJvcGFjaXR5OiAxOyI+PGcgY2xhc3M9ImFubm90YXRpb24tdGV4dC1n IiB0cmFuc2Zvcm09InJvdGF0ZSgwLDI3NS4wNzUwMDAwMDAwMDAwNSwzNzIuNzUpIj48ZyBj bGFzcz0iY3Vyc29yLXBvaW50ZXIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDcyLDM2MikiPjxy ZWN0IGNsYXNzPSJiZyIgeD0iMC41IiB5PSIwLjUiIHdpZHRoPSI0MDYiIGhlaWdodD0iMjEi IHN0eWxlPSJzdHJva2Utd2lkdGg6IDFweDsgc3Ryb2tlOiByZ2IoMCwgMCwgMCk7IHN0cm9r ZS1vcGFjaXR5OiAwOyBmaWxsOiByZ2IoMCwgMCwgMCk7IGZpbGwtb3BhY2l0eTogMDsiPjwv cmVjdD48dGV4dCBjbGFzcz0iYW5ub3RhdGlvbi10ZXh0IiB0ZXh0LWFuY2hvcj0ibWlkZGxl IiBkYXRhLXVuZm9ybWF0dGVkPSJFeGVjIHRpbWUgZm9yIG9ycyB3aXRoIGluZGV4X3NjYW4g ZGlzYWJsZWQiIGRhdGEtbWF0aD0iTiIgeD0iMjAzLjYzMjgxMjUiIHk9IjE1IiBzdHlsZT0i Zm9udC1mYW1pbHk6ICZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7LCBtb25vc3BhY2U7IGZvbnQt c2l6ZTogMTZweDsgZmlsbDogcmdiKDEwMiwgNTEsIDE1Myk7IGZpbGwtb3BhY2l0eTogMTsg d2hpdGUtc3BhY2U6IHByZTsiPkV4ZWMgdGltZSBmb3Igb3JzIHdpdGggaW5kZXhfc2NhbiBk aXNhYmxlZDwvdGV4dD48L2c+PC9nPjwvZz48ZyBjbGFzcz0iYW5ub3RhdGlvbiIgZGF0YS1p bmRleD0iMyIgc3R5bGU9Im9wYWNpdHk6IDE7Ij48ZyBjbGFzcz0iYW5ub3RhdGlvbi10ZXh0 LWciIHRyYW5zZm9ybT0icm90YXRlKDAsNzk1LjkyNTAwMDAwMDAwMDEsMzcyLjc1KSI+PGcg Y2xhc3M9ImN1cnNvci1wb2ludGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1OTIsMzYyKSI+ PHJlY3QgY2xhc3M9ImJnIiB4PSIwLjUiIHk9IjAuNSIgd2lkdGg9IjQwNiIgaGVpZ2h0PSIy MSIgc3R5bGU9InN0cm9rZS13aWR0aDogMXB4OyBzdHJva2U6IHJnYigwLCAwLCAwKTsgc3Ry b2tlLW9wYWNpdHk6IDA7IGZpbGw6IHJnYigwLCAwLCAwKTsgZmlsbC1vcGFjaXR5OiAwOyI+ PC9yZWN0Pjx0ZXh0IGNsYXNzPSJhbm5vdGF0aW9uLXRleHQiIHRleHQtYW5jaG9yPSJtaWRk bGUiIGRhdGEtdW5mb3JtYXR0ZWQ9IlBsYW4gdGltZSBmb3Igb3JzIHdpdGggaW5kZXhfc2Nh biBkaXNhYmxlZCIgZGF0YS1tYXRoPSJOIiB4PSIyMDMuNjMyODEyNSIgeT0iMTUiIHN0eWxl PSJmb250LWZhbWlseTogJnF1b3Q7Q291cmllciBOZXcmcXVvdDssIG1vbm9zcGFjZTsgZm9u dC1zaXplOiAxNnB4OyBmaWxsOiByZ2IoMTAyLCA1MSwgMTUzKTsgZmlsbC1vcGFjaXR5OiAx OyB3aGl0ZS1zcGFjZTogcHJlOyI+UGxhbiB0aW1lIGZvciBvcnMgd2l0aCBpbmRleF9zY2Fu IGRpc2FibGVkPC90ZXh0PjwvZz48L2c+PC9nPjwvZz48ZyBjbGFzcz0ibWVudWxheWVyIj48 L2c+PGcgY2xhc3M9Inpvb21sYXllciI+PC9nPjwvc3ZnPjxkaXYgY2xhc3M9Im1vZGViYXIt Y29udGFpbmVyIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDBweDsgcmlnaHQ6 IDBweDsgd2lkdGg6IDEwMCU7Ij48ZGl2IGlkPSJtb2RlYmFyLTFiZDhhOCIgY2xhc3M9Im1v ZGViYXIgbW9kZWJhci0taG92ZXIgZWFzZS1iZyI+PGRpdiBjbGFzcz0ibW9kZWJhci1ncm91 cCI+PGEgcmVsPSJ0b29sdGlwIiBjbGFzcz0ibW9kZWJhci1idG4iIGRhdGEtdGl0bGU9IkRv d25sb2FkIHBsb3QgYXMgYSBwbmciIGRhdGEtdG9nZ2xlPSJmYWxzZSIgZGF0YS1ncmF2aXR5 PSJuIj48c3ZnIHZpZXdCb3g9IjAgMCAxMDAwIDEwMDAiIGNsYXNzPSJpY29uIiBoZWlnaHQ9 IjFlbSIgd2lkdGg9IjFlbSI+PHBhdGggZD0ibTUwMCA0NTBjLTgzIDAtMTUwLTY3LTE1MC0x NTAgMC04MyA2Ny0xNTAgMTUwLTE1MCA4MyAwIDE1MCA2NyAxNTAgMTUwIDAgODMtNjcgMTUw LTE1MCAxNTB6IG00MDAgMTUwaC0xMjBjLTE2IDAtMzQgMTMtMzkgMjlsLTMxIDkzYy02IDE1 LTIzIDI4LTQwIDI4aC0zNDBjLTE2IDAtMzQtMTMtMzktMjhsLTMxLTk0Yy02LTE1LTIzLTI4 LTQwLTI4aC0xMjBjLTU1IDAtMTAwLTQ1LTEwMC0xMDB2LTQ1MGMwLTU1IDQ1LTEwMCAxMDAt MTAwaDgwMGM1NSAwIDEwMCA0NSAxMDAgMTAwdjQ1MGMwIDU1LTQ1IDEwMC0xMDAgMTAweiBt LTQwMC01NTBjLTEzOCAwLTI1MCAxMTItMjUwIDI1MCAwIDEzOCAxMTIgMjUwIDI1MCAyNTAg MTM4IDAgMjUwLTExMiAyNTAtMjUwIDAtMTM4LTExMi0yNTAtMjUwLTI1MHogbTM2NSAzODBj LTE5IDAtMzUgMTYtMzUgMzUgMCAxOSAxNiAzNSAzNSAzNSAxOSAwIDM1LTE2IDM1LTM1IDAt MTktMTYtMzUtMzUtMzV6IiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDg1MCkiPjwv cGF0aD48L3N2Zz48L2E+PC9kaXY+PGRpdiBjbGFzcz0ibW9kZWJhci1ncm91cCI+PGEgcmVs PSJ0b29sdGlwIiBjbGFzcz0ibW9kZWJhci1idG4gYWN0aXZlIiBkYXRhLXRpdGxlPSJab29t IiBkYXRhLWF0dHI9ImRyYWdtb2RlIiBkYXRhLXZhbD0iem9vbSIgZGF0YS10b2dnbGU9ImZh bHNlIiBkYXRhLWdyYXZpdHk9Im4iPjxzdmcgdmlld0JveD0iMCAwIDEwMDAgMTAwMCIgY2xh c3M9Imljb24iIGhlaWdodD0iMWVtIiB3aWR0aD0iMWVtIj48cGF0aCBkPSJtMTAwMC0yNWwt MjUwIDI1MWM0MCA2MyA2MyAxMzggNjMgMjE4IDAgMjI0LTE4MiA0MDYtNDA3IDQwNi0yMjQg MC00MDYtMTgyLTQwNi00MDZzMTgzLTQwNiA0MDctNDA2YzgwIDAgMTU1IDIyIDIxOCA2Mmwy NTAtMjUwIDEyNSAxMjV6IG0tODEyIDI1MGwwIDQzOCA0MzcgMCAwLTQzOC00MzcgMHogbTYy IDM3NWwzMTMgMCAwLTMxMi0zMTMgMCAwIDMxMnoiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAw IC0xIDAgODUwKSI+PC9wYXRoPjwvc3ZnPjwvYT48YSByZWw9InRvb2x0aXAiIGNsYXNzPSJt b2RlYmFyLWJ0biIgZGF0YS10aXRsZT0iUGFuIiBkYXRhLWF0dHI9ImRyYWdtb2RlIiBkYXRh LXZhbD0icGFuIiBkYXRhLXRvZ2dsZT0iZmFsc2UiIGRhdGEtZ3Jhdml0eT0ibiI+PHN2ZyB2 aWV3Qm94PSIwIDAgMTAwMCAxMDAwIiBjbGFzcz0iaWNvbiIgaGVpZ2h0PSIxZW0iIHdpZHRo PSIxZW0iPjxwYXRoIGQ9Im0xMDAwIDM1MGwtMTg3IDE4OCAwLTEyNS0yNTAgMCAwIDI1MCAx MjUgMC0xODggMTg3LTE4Ny0xODcgMTI1IDAgMC0yNTAtMjUwIDAgMCAxMjUtMTg4LTE4OCAx ODYtMTg3IDAgMTI1IDI1MiAwIDAtMjUwLTEyNSAwIDE4Ny0xODggMTg4IDE4OC0xMjUgMCAw IDI1MCAyNTAgMCAwLTEyNiAxODcgMTg4eiIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEg MCA4NTApIj48L3BhdGg+PC9zdmc+PC9hPjxhIHJlbD0idG9vbHRpcCIgY2xhc3M9Im1vZGVi YXItYnRuIiBkYXRhLXRpdGxlPSJCb3ggU2VsZWN0IiBkYXRhLWF0dHI9ImRyYWdtb2RlIiBk YXRhLXZhbD0ic2VsZWN0IiBkYXRhLXRvZ2dsZT0iZmFsc2UiIGRhdGEtZ3Jhdml0eT0ibiI+ PHN2ZyB2aWV3Qm94PSIwIDAgMTAwMCAxMDAwIiBjbGFzcz0iaWNvbiIgaGVpZ2h0PSIxZW0i IHdpZHRoPSIxZW0iPjxwYXRoIGQ9Im0wIDg1MGwwLTE0MyAxNDMgMCAwIDE0My0xNDMgMHog bTI4NiAwbDAtMTQzIDE0MyAwIDAgMTQzLTE0MyAweiBtMjg1IDBsMC0xNDMgMTQzIDAgMCAx NDMtMTQzIDB6IG0yODYgMGwwLTE0MyAxNDMgMCAwIDE0My0xNDMgMHogbS04NTctMjg2bDAt MTQzIDE0MyAwIDAgMTQzLTE0MyAweiBtODU3IDBsMC0xNDMgMTQzIDAgMCAxNDMtMTQzIDB6 IG0tODU3LTI4NWwwLTE0MyAxNDMgMCAwIDE0My0xNDMgMHogbTg1NyAwbDAtMTQzIDE0MyAw IDAgMTQzLTE0MyAweiBtLTg1Ny0yODZsMC0xNDMgMTQzIDAgMCAxNDMtMTQzIDB6IG0yODYg MGwwLTE0MyAxNDMgMCAwIDE0My0xNDMgMHogbTI4NSAwbDAtMTQzIDE0MyAwIDAgMTQzLTE0 MyAweiBtMjg2IDBsMC0xNDMgMTQzIDAgMCAxNDMtMTQzIDB6IiB0cmFuc2Zvcm09Im1hdHJp eCgxIDAgMCAtMSAwIDg1MCkiPjwvcGF0aD48L3N2Zz48L2E+PGEgcmVsPSJ0b29sdGlwIiBj bGFzcz0ibW9kZWJhci1idG4iIGRhdGEtdGl0bGU9Ikxhc3NvIFNlbGVjdCIgZGF0YS1hdHRy PSJkcmFnbW9kZSIgZGF0YS12YWw9Imxhc3NvIiBkYXRhLXRvZ2dsZT0iZmFsc2UiIGRhdGEt Z3Jhdml0eT0ibiI+PHN2ZyB2aWV3Qm94PSIwIDAgMTAzMSAxMDAwIiBjbGFzcz0iaWNvbiIg aGVpZ2h0PSIxZW0iIHdpZHRoPSIxZW0iPjxwYXRoIGQ9Im0xMDE4IDUzOGMtMzYgMjA3LTI5 MCAzMzYtNTY4IDI4Ni0yNzctNDgtNDczLTI1Ni00MzYtNDYzIDEwLTU3IDM2LTEwOCA3Ni0x NTEtMTMtNjYgMTEtMTM3IDY4LTE4MyAzNC0yOCA3NS00MSAxMTQtNDJsLTU1LTcwIDAgMGMt Mi0xLTMtMi00LTMtMTAtMTQtOC0zNCA1LTQ1IDE0LTExIDM0LTggNDUgNCAxIDEgMiAzIDIg NWwwIDAgMTEzIDE0MGMxNiAxMSAzMSAyNCA0NSA0MCA0IDMgNiA3IDggMTEgNDgtMyAxMDAg MCAxNTEgOSAyNzggNDggNDczIDI1NSA0MzYgNDYyeiBtLTYyNC0zNzljLTgwIDE0LTE0OSA0 OC0xOTcgOTYgNDIgNDIgMTA5IDQ3IDE1NiA5IDMzLTI2IDQ3LTY2IDQxLTEwNXogbS0xODct NzRjLTE5IDE2LTMzIDM3LTM5IDYwIDUwLTMyIDEwOS01NSAxNzQtNjgtNDItMjUtOTUtMjQt MTM1IDh6IG0zNjAgNzVjLTM0LTctNjktOS0xMDItOCA4IDYyLTE2IDEyOC02OCAxNzAtNzMg NTktMTc1IDU0LTI0NC01LTkgMjAtMTYgNDAtMjAgNjEtMjggMTU5IDEyMSAzMTcgMzMzIDM1 NHM0MDctNjAgNDM0LTIxN2MyOC0xNTktMTIxLTMxOC0zMzMtMzU1eiIgdHJhbnNmb3JtPSJt YXRyaXgoMSAwIDAgLTEgMCA4NTApIj48L3BhdGg+PC9zdmc+PC9hPjwvZGl2PjxkaXYgY2xh c3M9Im1vZGViYXItZ3JvdXAiPjxhIHJlbD0idG9vbHRpcCIgY2xhc3M9Im1vZGViYXItYnRu IiBkYXRhLXRpdGxlPSJab29tIGluIiBkYXRhLWF0dHI9Inpvb20iIGRhdGEtdmFsPSJpbiIg ZGF0YS10b2dnbGU9ImZhbHNlIiBkYXRhLWdyYXZpdHk9Im4iPjxzdmcgdmlld0JveD0iMCAw IDg3NSAxMDAwIiBjbGFzcz0iaWNvbiIgaGVpZ2h0PSIxZW0iIHdpZHRoPSIxZW0iPjxwYXRo IGQ9Im0xIDc4N2wwLTg3NSA4NzUgMCAwIDg3NS04NzUgMHogbTY4Ny01MDBsLTE4NyAwIDAt MTg3LTEyNSAwIDAgMTg3LTE4OCAwIDAgMTI1IDE4OCAwIDAgMTg3IDEyNSAwIDAtMTg3IDE4 NyAwIDAtMTI1eiIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCA4NTApIj48L3BhdGg+ PC9zdmc+PC9hPjxhIHJlbD0idG9vbHRpcCIgY2xhc3M9Im1vZGViYXItYnRuIiBkYXRhLXRp dGxlPSJab29tIG91dCIgZGF0YS1hdHRyPSJ6b29tIiBkYXRhLXZhbD0ib3V0IiBkYXRhLXRv Z2dsZT0iZmFsc2UiIGRhdGEtZ3Jhdml0eT0ibiI+PHN2ZyB2aWV3Qm94PSIwIDAgODc1IDEw MDAiIGNsYXNzPSJpY29uIiBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSI+PHBhdGggZD0ibTAg Nzg4bDAtODc2IDg3NSAwIDAgODc2LTg3NSAweiBtNjg4LTUwMGwtNTAwIDAgMCAxMjUgNTAw IDAgMC0xMjV6IiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDg1MCkiPjwvcGF0aD48 L3N2Zz48L2E+PGEgcmVsPSJ0b29sdGlwIiBjbGFzcz0ibW9kZWJhci1idG4iIGRhdGEtdGl0 bGU9IkF1dG9zY2FsZSIgZGF0YS1hdHRyPSJ6b29tIiBkYXRhLXZhbD0iYXV0byIgZGF0YS10 b2dnbGU9ImZhbHNlIiBkYXRhLWdyYXZpdHk9Im4iPjxzdmcgdmlld0JveD0iMCAwIDEwMDAg MTAwMCIgY2xhc3M9Imljb24iIGhlaWdodD0iMWVtIiB3aWR0aD0iMWVtIj48cGF0aCBkPSJt MjUwIDg1MGwtMTg3IDAtNjMgMCAwLTYyIDAtMTg4IDYzIDAgMCAxODggMTg3IDAgMCA2Mnog bTY4OCAwbC0xODggMCAwLTYyIDE4OCAwIDAtMTg4IDYyIDAgMCAxODggMCA2Mi02MiAweiBt LTg3NS05MzhsMCAxODgtNjMgMCAwLTE4OCAwLTYyIDYzIDAgMTg3IDAgMCA2Mi0xODcgMHog bTg3NSAxODhsMC0xODgtMTg4IDAgMC02MiAxODggMCA2MiAwIDAgNjIgMCAxODgtNjIgMHog bS0xMjUgMTg4bC0xIDAtOTMtOTQtMTU2IDE1NiAxNTYgMTU2IDkyLTkzIDIgMCAwIDI1MC0y NTAgMCAwLTIgOTMtOTItMTU2LTE1Ni0xNTYgMTU2IDk0IDkyIDAgMi0yNTAgMCAwLTI1MCAw IDAgOTMgOTMgMTU3LTE1Ni0xNTctMTU2LTkzIDk0IDAgMCAwLTI1MCAyNTAgMCAwIDAtOTQg OTMgMTU2IDE1NyAxNTYtMTU3LTkzLTkzIDAgMCAyNTAgMCAwIDI1MHoiIHRyYW5zZm9ybT0i bWF0cml4KDEgMCAwIC0xIDAgODUwKSI+PC9wYXRoPjwvc3ZnPjwvYT48YSByZWw9InRvb2x0 aXAiIGNsYXNzPSJtb2RlYmFyLWJ0biIgZGF0YS10aXRsZT0iUmVzZXQgYXhlcyIgZGF0YS1h dHRyPSJ6b29tIiBkYXRhLXZhbD0icmVzZXQiIGRhdGEtdG9nZ2xlPSJmYWxzZSIgZGF0YS1n cmF2aXR5PSJuIj48c3ZnIHZpZXdCb3g9IjAgMCA5MjguNiAxMDAwIiBjbGFzcz0iaWNvbiIg aGVpZ2h0PSIxZW0iIHdpZHRoPSIxZW0iPjxwYXRoIGQ9Im03ODYgMjk2di0yNjdxMC0xNS0x MS0yNnQtMjUtMTBoLTIxNHYyMTRoLTE0M3YtMjE0aC0yMTRxLTE1IDAtMjUgMTB0LTExIDI2 djI2N3EwIDEgMCAydDAgMmwzMjEgMjY0IDMyMS0yNjRxMS0xIDEtNHogbTEyNCAzOWwtMzQt NDFxLTUtNS0xMi02aC0ycS03IDAtMTIgM2wtMzg2IDMyMi0zODYtMzIycS03LTQtMTMtNC03 IDItMTIgN2wtMzUgNDFxLTQgNS0zIDEzdDYgMTJsNDAxIDMzNHExOCAxNSA0MiAxNXQ0My0x NWwxMzYtMTE0djEwOXEwIDggNSAxM3QxMyA1aDEwN3E4IDAgMTMtNXQ1LTEzdi0yMjdsMTIy LTEwMnE1LTUgNi0xMnQtNC0xM3oiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgODUw KSI+PC9wYXRoPjwvc3ZnPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJtb2RlYmFyLWdyb3VwIj48 YSBocmVmPSJodHRwczovL3Bsb3RseS5jb20vIiB0YXJnZXQ9Il9ibGFuayIgZGF0YS10aXRs ZT0iUHJvZHVjZWQgd2l0aCBQbG90bHkuanMgKHYyLjEyLjEpIiBjbGFzcz0ibW9kZWJhci1i dG4gcGxvdGx5anNpY29uIG1vZGViYXItYnRuLS1sb2dvIj48c3ZnIHhtbG5zPSJodHRwOi8v d3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEzMiAxMzIiIGhlaWdodD0iMWVt IiB3aWR0aD0iMWVtIj48ZGVmcz48c3R5bGU+LmNscy0xIHtmaWxsOiAjM2Y0Zjc1O30gLmNs cy0yIHtmaWxsOiAjODBjZmJlO30gLmNscy0zIHtmaWxsOiAjZmZmO308L3N0eWxlPjwvZGVm cz48dGl0bGU+cGxvdGx5LWxvZ29tYXJrPC90aXRsZT48ZyBpZD0ic3ltYm9sIj48cmVjdCBj bGFzcz0iY2xzLTEiIHdpZHRoPSIxMzIiIGhlaWdodD0iMTMyIiByeD0iNiIgcnk9IjYiPjwv cmVjdD48Y2lyY2xlIGNsYXNzPSJjbHMtMiIgY3g9Ijc4IiBjeT0iNTQiIHI9IjYiPjwvY2ly Y2xlPjxjaXJjbGUgY2xhc3M9ImNscy0yIiBjeD0iMTAyIiBjeT0iMzAiIHI9IjYiPjwvY2ly Y2xlPjxjaXJjbGUgY2xhc3M9ImNscy0yIiBjeD0iNzgiIGN5PSIzMCIgcj0iNiI+PC9jaXJj bGU+PGNpcmNsZSBjbGFzcz0iY2xzLTIiIGN4PSI1NCIgY3k9IjMwIiByPSI2Ij48L2NpcmNs ZT48Y2lyY2xlIGNsYXNzPSJjbHMtMiIgY3g9IjMwIiBjeT0iMzAiIHI9IjYiPjwvY2lyY2xl PjxjaXJjbGUgY2xhc3M9ImNscy0yIiBjeD0iMzAiIGN5PSI1NCIgcj0iNiI+PC9jaXJjbGU+ PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMzAsNzJhNiw2LDAsMCwwLTYsNnYyNGE2LDYsMCww LDAsMTIsMFY3OEE2LDYsMCwwLDAsMzAsNzJaIj48L3BhdGg+PHBhdGggY2xhc3M9ImNscy0z IiBkPSJNNzgsNzJhNiw2LDAsMCwwLTYsNnYyNGE2LDYsMCwwLDAsMTIsMFY3OEE2LDYsMCww LDAsNzgsNzJaIj48L3BhdGg+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNNTQsNDhhNiw2LDAs MCwwLTYsNnY0OGE2LDYsMCwwLDAsMTIsMFY1NEE2LDYsMCwwLDAsNTQsNDhaIj48L3BhdGg+ PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTAyLDQ4YTYsNiwwLDAsMC02LDZ2NDhhNiw2LDAs MCwwLDEyLDBWNTRBNiw2LDAsMCwwLDEwMiw0OFoiPjwvcGF0aD48L2c+PC9zdmc+PC9hPjwv ZGl2PjwvZGl2PjwvZGl2PjxzdmcgY2xhc3M9Im1haW4tc3ZnIiB4bWxucz0iaHR0cDovL3d3 dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5 L3hsaW5rIiB3aWR0aD0iMTIwMCIgaGVpZ2h0PSI2MDAiPjxnIGNsYXNzPSJob3ZlcmxheWVy Ij48L2c+PC9zdmc+PC9kaXY+PC9kaXY+PC9kaXY+ICAgICAgICAgICAgPHNjcmlwdCB0eXBl PSJ0ZXh0L2phdmFzY3JpcHQiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHdpbmRvdy5QTE9UTFlFTlY9d2luZG93LlBMT1RMWUVOViB8fCB7fTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIjE2 MmQ4ODhhLTgxZTAtNDc0MS1hNDA2LTk4Y2M1MzlhZGFiNiIpKSB7ICAgICAgICAgICAgICAg ICAgICBQbG90bHkubmV3UGxvdCggICAgICAgICAgICAgICAgICAgICAgICAiMTYyZDg4OGEt ODFlMC00NzQxLWE0MDYtOThjYzUzOWFkYWI2IiwgICAgICAgICAgICAgICAgICAgICAgICBb eyJsaW5lIjp7ImNvbG9yIjoiZ3JlZW4iLCJkYXNoIjoiZGFzaCJ9LCJuYW1lIjoiVHJhbnNm b3JtZWQgb3JzIiwieCI6WzQsNTAwMSwxMDAwMSwxNTAwMSwyMDAwMSwyNTAwMSwzMDAwMSwz NTAwMSw0MDAwMSw0NTAwMV0sInhheGlzIjoieCIsInkiOls5Ljc0MywxMjAuODE3LDI0My40 NjgsMzgwLjI5NSw1MDkuODQ4LDU1Ny45Myw2NTAuMTc1LDgyNC44MzUsODM4LjUxNiw5Mzku NTcyXSwieWF4aXMiOiJ5IiwidHlwZSI6InNjYXR0ZXIifSx7ImxpbmUiOnsiY29sb3IiOiJv cmFuZ2UiLCJkYXNoIjoiZG90In0sIm5hbWUiOiJPcmlnaW5hbCBvcnMiLCJ4IjpbNCw1MDAx LDEwMDAxLDE1MDAxLDIwMDAxLDI1MDAxLDMwMDAxLDM1MDAxLDQwMDAxLDQ1MDAxXSwieGF4 aXMiOiJ4IiwieSI6WzUuODAyLDEyMTMuNDEyLDM4MDMuOTUyLDgyNDIuNTA3LDEyNzg3LjMx OSwyNDI0MS42OCwzMTkwNC41MDMsMzg0MTMuNzc3LDQ4NTUxLjUzOCw2MzA1My43NDldLCJ5 YXhpcyI6InkiLCJ0eXBlIjoic2NhdHRlciJ9LHsibGluZSI6eyJjb2xvciI6ImJsdWUiLCJk YXNoIjoiZGFzaCJ9LCJuYW1lIjoiVHJhbnNmb3JtZWQgb3JzIiwieCI6WzQsNTAwMSwxMDAw MSwxNTAwMSwyMDAwMSwyNTAwMSwzMDAwMSwzNTAwMSw0MDAwMSw0NTAwMV0sInhheGlzIjoi eDIiLCJ5IjpbMC4xMTksMC4wNjgsMC4wODIsMC4wODQsMC4wNzcsMC4wNzQsMC4wNjQsMC4x MzcsMC4wNjMsMC4wNjNdLCJ5YXhpcyI6InkyIiwidHlwZSI6InNjYXR0ZXIifSx7ImxpbmUi OnsiY29sb3IiOiJyZWQiLCJkYXNoIjoiZG90In0sIm5hbWUiOiJPcmlnaW5hbCBvcnMiLCJ4 IjpbNCw1MDAxLDEwMDAxLDE1MDAxLDIwMDAxLDI1MDAxLDMwMDAxLDM1MDAxLDQwMDAxLDQ1 MDAxXSwieGF4aXMiOiJ4MiIsInkiOlswLjEwMSwwLjEwNSwwLjEsMC4wOTUsMC4xMzMsMC4x MDMsMC4wOTgsMC4wOTcsMC4xMDYsMC4wOTVdLCJ5YXhpcyI6InkyIiwidHlwZSI6InNjYXR0 ZXIifSx7ImxpbmUiOnsiY29sb3IiOiJncmVlbiIsImRhc2giOiJkYXNoIn0sIm5hbWUiOiJU cmFuc2Zvcm1lZCBvcnMiLCJzaG93bGVnZW5kIjpmYWxzZSwieCI6WzQsNTAwMSwxMDAwMSwx NTAwMSwyMDAwMSwyNTAwMSwzMDAwMSwzNTAwMSw0MDAwMSw0NTAwMSw1MDAwMSw1NTAwMSw2 MDAwMSw2NTAwMSw3MDAwMSw3NTAwMSw4MDAwMSw4NTAwMSw5MDAwMSw5NTAwMV0sInhheGlz IjoieDMiLCJ5IjpbNi44NSwxMzguODQxLDMxMi44NDQsMzc5LjczNSw0NTAuMzM0LDU1MC4x NzksNzI4Ljk3OCw3NjUuODU4LDEwMjYuOTk3LDExNDIuMzY5LDExMDYuNjczLDExODUuNTU4 LDEyNTIuMDk0LDEzMzkuMjkxLDE1MzEuMzQ5LDE2NjguMjM1LDE5MzEuNTY3LDE5NzIuNjY1 LDIyMjkuOTEyLDIzODIuNTE2XSwieWF4aXMiOiJ5MyIsInR5cGUiOiJzY2F0dGVyIn0seyJs aW5lIjp7ImNvbG9yIjoib3JhbmdlIiwiZGFzaCI6ImRvdCJ9LCJuYW1lIjoiT3JpZ2luYWwg b3JzIiwic2hvd2xlZ2VuZCI6ZmFsc2UsIngiOls0LDUwMDEsMTAwMDEsMTUwMDEsMjAwMDEs MjUwMDEsMzAwMDEsMzUwMDEsNDAwMDEsNDUwMDEsNTAwMDEsNTUwMDEsNjAwMDEsNjUwMDEs NzAwMDEsNzUwMDEsODAwMDEsODUwMDEsOTAwMDEsOTUwMDFdLCJ4YXhpcyI6IngzIiwieSI6 WzQuNDc3LDEyMjcuMjQ2LDQzNjQuMTA5LDg2NTAuMTU0LDEzNzUyLjcwMywyNDIxOC43Mzks MzI5MTAuMTM3LDQwNTE4Ljg3Niw0OTY5My43MDQsNTY5NjMuODQ3LDkyOTA2LjUyOSwxMDc5 MDMuNTMyLDExOTQ4OC4wMDksMTMyNTczLjk4NiwxNDY2ODEuNTI1LDE2MzcxNy45MSwxODQy NDAuOTY5LDIwNzEyOS4zMTQsMjI4Njc4LjAzNiwyNDA2NTQuNDQ3XSwieWF4aXMiOiJ5MyIs InR5cGUiOiJzY2F0dGVyIn0seyJsaW5lIjp7ImNvbG9yIjoiYmx1ZSIsImRhc2giOiJkYXNo In0sIm5hbWUiOiJUcmFuc2Zvcm1lZCBvcnMiLCJzaG93bGVnZW5kIjpmYWxzZSwieCI6WzQs NTAwMSwxMDAwMSwxNTAwMSwyMDAwMSwyNTAwMSwzMDAwMSwzNTAwMSw0MDAwMSw0NTAwMSw1 MDAwMSw1NTAwMSw2MDAwMSw2NTAwMSw3MDAwMSw3NTAwMSw4MDAwMSw4NTAwMSw5MDAwMSw5 NTAwMV0sInhheGlzIjoieDQiLCJ5IjpbMC4xMDEsMC4wODksMC4xMDEsMC4xMDgsMC4wOTMs MC4wOTIsMC4xMDQsMC4xMDIsMC4xMDQsMC4wOTMsMC4wODgsMC4wNzksMC4wODIsMC4xMDEs MC4wOSwwLjA4NiwwLjA4NiwwLjEzLDAuMTYsMC4wOTFdLCJ5YXhpcyI6Ink0IiwidHlwZSI6 InNjYXR0ZXIifSx7ImxpbmUiOnsiY29sb3IiOiJyZWQiLCJkYXNoIjoiZG90In0sIm5hbWUi OiJPcmlnaW5hbCBvcnMiLCJzaG93bGVnZW5kIjpmYWxzZSwieCI6WzQsNTAwMSwxMDAwMSwx NTAwMSwyMDAwMSwyNTAwMSwzMDAwMSwzNTAwMSw0MDAwMSw0NTAwMSw1MDAwMSw1NTAwMSw2 MDAwMSw2NTAwMSw3MDAwMSw3NTAwMSw4MDAwMSw4NTAwMSw5MDAwMSw5NTAwMV0sInhheGlz IjoieDQiLCJ5IjpbMC4wNzYsMC4wODMsMC4wNzcsMC4wODIsMC4wOTQsMC4xNDYsMC4xMDcs MC4xMzcsMC4wNzcsMC4wODIsMC4wOTEsMC4wOCwwLjA3MiwwLjA3OSwwLjA4LDAuMDc1LDAu MDgsMC4wOCwwLjA3MywwLjA4N10sInlheGlzIjoieTQiLCJ0eXBlIjoic2NhdHRlciJ9XSwg ICAgICAgICAgICAgICAgICAgICAgICB7ImFubm90YXRpb25zIjpbeyJmb250Ijp7InNpemUi OjE2fSwic2hvd2Fycm93IjpmYWxzZSwidGV4dCI6IkV4ZWMgdGltZSBmb3Igb3JzIHdpdGgg aW5kZXhfc2NhbiBlbmFibGVkIiwieCI6MC4yMjUsInhhbmNob3IiOiJjZW50ZXIiLCJ4cmVm IjoicGFwZXIiLCJ5IjoxLjAsInlhbmNob3IiOiJib3R0b20iLCJ5cmVmIjoicGFwZXIifSx7 ImZvbnQiOnsic2l6ZSI6MTZ9LCJzaG93YXJyb3ciOmZhbHNlLCJ0ZXh0IjoiUGxhbiB0aW1l IGZvciBvcnMgd2l0aCBpbmRleF9zY2FuIGVuYWJsZWQiLCJ4IjowLjc3NSwieGFuY2hvciI6 ImNlbnRlciIsInhyZWYiOiJwYXBlciIsInkiOjEuMCwieWFuY2hvciI6ImJvdHRvbSIsInly ZWYiOiJwYXBlciJ9LHsiZm9udCI6eyJzaXplIjoxNn0sInNob3dhcnJvdyI6ZmFsc2UsInRl eHQiOiJFeGVjIHRpbWUgZm9yIG9ycyB3aXRoIGluZGV4X3NjYW4gZGlzYWJsZWQiLCJ4Ijow LjIyNSwieGFuY2hvciI6ImNlbnRlciIsInhyZWYiOiJwYXBlciIsInkiOjAuMzc1LCJ5YW5j aG9yIjoiYm90dG9tIiwieXJlZiI6InBhcGVyIn0seyJmb250Ijp7InNpemUiOjE2fSwic2hv d2Fycm93IjpmYWxzZSwidGV4dCI6IlBsYW4gdGltZSBmb3Igb3JzIHdpdGggaW5kZXhfc2Nh biBkaXNhYmxlZCIsIngiOjAuNzc1LCJ4YW5jaG9yIjoiY2VudGVyIiwieHJlZiI6InBhcGVy IiwieSI6MC4zNzUsInlhbmNob3IiOiJib3R0b20iLCJ5cmVmIjoicGFwZXIifV0sImZvbnQi OnsiY29sb3IiOiJSZWJlY2NhUHVycGxlIiwiZmFtaWx5IjoiQ291cmllciBOZXcsIG1vbm9z cGFjZSIsInNpemUiOjE0fSwiaGVpZ2h0Ijo2MDAsImxlZ2VuZCI6eyJvcmllbnRhdGlvbiI6 InYifSwibWFyZ2luIjp7ImIiOjAsImwiOjEwLCJyIjowLCJ0IjoxMDB9LCJ0ZW1wbGF0ZSI6 eyJkYXRhIjp7ImJhcnBvbGFyIjpbeyJtYXJrZXIiOnsibGluZSI6eyJjb2xvciI6IiNFNUVD RjYiLCJ3aWR0aCI6MC41fSwicGF0dGVybiI6eyJmaWxsbW9kZSI6Im92ZXJsYXkiLCJzaXpl IjoxMCwic29saWRpdHkiOjAuMn19LCJ0eXBlIjoiYmFycG9sYXIifV0sImJhciI6W3siZXJy b3JfeCI6eyJjb2xvciI6IiMyYTNmNWYifSwiZXJyb3JfeSI6eyJjb2xvciI6IiMyYTNmNWYi fSwibWFya2VyIjp7ImxpbmUiOnsiY29sb3IiOiIjRTVFQ0Y2Iiwid2lkdGgiOjAuNX0sInBh dHRlcm4iOnsiZmlsbG1vZGUiOiJvdmVybGF5Iiwic2l6ZSI6MTAsInNvbGlkaXR5IjowLjJ9 fSwidHlwZSI6ImJhciJ9XSwiY2FycGV0IjpbeyJhYXhpcyI6eyJlbmRsaW5lY29sb3IiOiIj MmEzZjVmIiwiZ3JpZGNvbG9yIjoid2hpdGUiLCJsaW5lY29sb3IiOiJ3aGl0ZSIsIm1pbm9y Z3JpZGNvbG9yIjoid2hpdGUiLCJzdGFydGxpbmVjb2xvciI6IiMyYTNmNWYifSwiYmF4aXMi OnsiZW5kbGluZWNvbG9yIjoiIzJhM2Y1ZiIsImdyaWRjb2xvciI6IndoaXRlIiwibGluZWNv bG9yIjoid2hpdGUiLCJtaW5vcmdyaWRjb2xvciI6IndoaXRlIiwic3RhcnRsaW5lY29sb3Ii OiIjMmEzZjVmIn0sInR5cGUiOiJjYXJwZXQifV0sImNob3JvcGxldGgiOlt7ImNvbG9yYmFy Ijp7Im91dGxpbmV3aWR0aCI6MCwidGlja3MiOiIifSwidHlwZSI6ImNob3JvcGxldGgifV0s ImNvbnRvdXJjYXJwZXQiOlt7ImNvbG9yYmFyIjp7Im91dGxpbmV3aWR0aCI6MCwidGlja3Mi OiIifSwidHlwZSI6ImNvbnRvdXJjYXJwZXQifV0sImNvbnRvdXIiOlt7ImNvbG9yYmFyIjp7 Im91dGxpbmV3aWR0aCI6MCwidGlja3MiOiIifSwiY29sb3JzY2FsZSI6W1swLjAsIiMwZDA4 ODciXSxbMC4xMTExMTExMTExMTExMTExLCIjNDYwMzlmIl0sWzAuMjIyMjIyMjIyMjIyMjIy MiwiIzcyMDFhOCJdLFswLjMzMzMzMzMzMzMzMzMzMzMsIiM5YzE3OWUiXSxbMC40NDQ0NDQ0 NDQ0NDQ0NDQ0LCIjYmQzNzg2Il0sWzAuNTU1NTU1NTU1NTU1NTU1NiwiI2Q4NTc2YiJdLFsw LjY2NjY2NjY2NjY2NjY2NjYsIiNlZDc5NTMiXSxbMC43Nzc3Nzc3Nzc3Nzc3Nzc4LCIjZmI5 ZjNhIl0sWzAuODg4ODg4ODg4ODg4ODg4OCwiI2ZkY2EyNiJdLFsxLjAsIiNmMGY5MjEiXV0s InR5cGUiOiJjb250b3VyIn1dLCJoZWF0bWFwZ2wiOlt7ImNvbG9yYmFyIjp7Im91dGxpbmV3 aWR0aCI6MCwidGlja3MiOiIifSwiY29sb3JzY2FsZSI6W1swLjAsIiMwZDA4ODciXSxbMC4x MTExMTExMTExMTExMTExLCIjNDYwMzlmIl0sWzAuMjIyMjIyMjIyMjIyMjIyMiwiIzcyMDFh OCJdLFswLjMzMzMzMzMzMzMzMzMzMzMsIiM5YzE3OWUiXSxbMC40NDQ0NDQ0NDQ0NDQ0NDQ0 LCIjYmQzNzg2Il0sWzAuNTU1NTU1NTU1NTU1NTU1NiwiI2Q4NTc2YiJdLFswLjY2NjY2NjY2 NjY2NjY2NjYsIiNlZDc5NTMiXSxbMC43Nzc3Nzc3Nzc3Nzc3Nzc4LCIjZmI5ZjNhIl0sWzAu ODg4ODg4ODg4ODg4ODg4OCwiI2ZkY2EyNiJdLFsxLjAsIiNmMGY5MjEiXV0sInR5cGUiOiJo ZWF0bWFwZ2wifV0sImhlYXRtYXAiOlt7ImNvbG9yYmFyIjp7Im91dGxpbmV3aWR0aCI6MCwi dGlja3MiOiIifSwiY29sb3JzY2FsZSI6W1swLjAsIiMwZDA4ODciXSxbMC4xMTExMTExMTEx MTExMTExLCIjNDYwMzlmIl0sWzAuMjIyMjIyMjIyMjIyMjIyMiwiIzcyMDFhOCJdLFswLjMz MzMzMzMzMzMzMzMzMzMsIiM5YzE3OWUiXSxbMC40NDQ0NDQ0NDQ0NDQ0NDQ0LCIjYmQzNzg2 Il0sWzAuNTU1NTU1NTU1NTU1NTU1NiwiI2Q4NTc2YiJdLFswLjY2NjY2NjY2NjY2NjY2NjYs IiNlZDc5NTMiXSxbMC43Nzc3Nzc3Nzc3Nzc3Nzc4LCIjZmI5ZjNhIl0sWzAuODg4ODg4ODg4 ODg4ODg4OCwiI2ZkY2EyNiJdLFsxLjAsIiNmMGY5MjEiXV0sInR5cGUiOiJoZWF0bWFwIn1d LCJoaXN0b2dyYW0yZGNvbnRvdXIiOlt7ImNvbG9yYmFyIjp7Im91dGxpbmV3aWR0aCI6MCwi dGlja3MiOiIifSwiY29sb3JzY2FsZSI6W1swLjAsIiMwZDA4ODciXSxbMC4xMTExMTExMTEx MTExMTExLCIjNDYwMzlmIl0sWzAuMjIyMjIyMjIyMjIyMjIyMiwiIzcyMDFhOCJdLFswLjMz MzMzMzMzMzMzMzMzMzMsIiM5YzE3OWUiXSxbMC40NDQ0NDQ0NDQ0NDQ0NDQ0LCIjYmQzNzg2 Il0sWzAuNTU1NTU1NTU1NTU1NTU1NiwiI2Q4NTc2YiJdLFswLjY2NjY2NjY2NjY2NjY2NjYs IiNlZDc5NTMiXSxbMC43Nzc3Nzc3Nzc3Nzc3Nzc4LCIjZmI5ZjNhIl0sWzAuODg4ODg4ODg4 ODg4ODg4OCwiI2ZkY2EyNiJdLFsxLjAsIiNmMGY5MjEiXV0sInR5cGUiOiJoaXN0b2dyYW0y ZGNvbnRvdXIifV0sImhpc3RvZ3JhbTJkIjpbeyJjb2xvcmJhciI6eyJvdXRsaW5ld2lkdGgi OjAsInRpY2tzIjoiIn0sImNvbG9yc2NhbGUiOltbMC4wLCIjMGQwODg3Il0sWzAuMTExMTEx MTExMTExMTExMSwiIzQ2MDM5ZiJdLFswLjIyMjIyMjIyMjIyMjIyMjIsIiM3MjAxYTgiXSxb MC4zMzMzMzMzMzMzMzMzMzMzLCIjOWMxNzllIl0sWzAuNDQ0NDQ0NDQ0NDQ0NDQ0NCwiI2Jk Mzc4NiJdLFswLjU1NTU1NTU1NTU1NTU1NTYsIiNkODU3NmIiXSxbMC42NjY2NjY2NjY2NjY2 NjY2LCIjZWQ3OTUzIl0sWzAuNzc3Nzc3Nzc3Nzc3Nzc3OCwiI2ZiOWYzYSJdLFswLjg4ODg4 ODg4ODg4ODg4ODgsIiNmZGNhMjYiXSxbMS4wLCIjZjBmOTIxIl1dLCJ0eXBlIjoiaGlzdG9n cmFtMmQifV0sImhpc3RvZ3JhbSI6W3sibWFya2VyIjp7InBhdHRlcm4iOnsiZmlsbG1vZGUi OiJvdmVybGF5Iiwic2l6ZSI6MTAsInNvbGlkaXR5IjowLjJ9fSwidHlwZSI6Imhpc3RvZ3Jh bSJ9XSwibWVzaDNkIjpbeyJjb2xvcmJhciI6eyJvdXRsaW5ld2lkdGgiOjAsInRpY2tzIjoi In0sInR5cGUiOiJtZXNoM2QifV0sInBhcmNvb3JkcyI6W3sibGluZSI6eyJjb2xvcmJhciI6 eyJvdXRsaW5ld2lkdGgiOjAsInRpY2tzIjoiIn19LCJ0eXBlIjoicGFyY29vcmRzIn1dLCJw aWUiOlt7ImF1dG9tYXJnaW4iOnRydWUsInR5cGUiOiJwaWUifV0sInNjYXR0ZXIzZCI6W3si bGluZSI6eyJjb2xvcmJhciI6eyJvdXRsaW5ld2lkdGgiOjAsInRpY2tzIjoiIn19LCJtYXJr ZXIiOnsiY29sb3JiYXIiOnsib3V0bGluZXdpZHRoIjowLCJ0aWNrcyI6IiJ9fSwidHlwZSI6 InNjYXR0ZXIzZCJ9XSwic2NhdHRlcmNhcnBldCI6W3sibWFya2VyIjp7ImNvbG9yYmFyIjp7 Im91dGxpbmV3aWR0aCI6MCwidGlja3MiOiIifX0sInR5cGUiOiJzY2F0dGVyY2FycGV0In1d LCJzY2F0dGVyZ2VvIjpbeyJtYXJrZXIiOnsiY29sb3JiYXIiOnsib3V0bGluZXdpZHRoIjow LCJ0aWNrcyI6IiJ9fSwidHlwZSI6InNjYXR0ZXJnZW8ifV0sInNjYXR0ZXJnbCI6W3sibWFy a2VyIjp7ImNvbG9yYmFyIjp7Im91dGxpbmV3aWR0aCI6MCwidGlja3MiOiIifX0sInR5cGUi OiJzY2F0dGVyZ2wifV0sInNjYXR0ZXJtYXBib3giOlt7Im1hcmtlciI6eyJjb2xvcmJhciI6 eyJvdXRsaW5ld2lkdGgiOjAsInRpY2tzIjoiIn19LCJ0eXBlIjoic2NhdHRlcm1hcGJveCJ9 XSwic2NhdHRlcnBvbGFyZ2wiOlt7Im1hcmtlciI6eyJjb2xvcmJhciI6eyJvdXRsaW5ld2lk dGgiOjAsInRpY2tzIjoiIn19LCJ0eXBlIjoic2NhdHRlcnBvbGFyZ2wifV0sInNjYXR0ZXJw b2xhciI6W3sibWFya2VyIjp7ImNvbG9yYmFyIjp7Im91dGxpbmV3aWR0aCI6MCwidGlja3Mi OiIifX0sInR5cGUiOiJzY2F0dGVycG9sYXIifV0sInNjYXR0ZXIiOlt7ImZpbGxwYXR0ZXJu Ijp7ImZpbGxtb2RlIjoib3ZlcmxheSIsInNpemUiOjEwLCJzb2xpZGl0eSI6MC4yfSwidHlw ZSI6InNjYXR0ZXIifV0sInNjYXR0ZXJ0ZXJuYXJ5IjpbeyJtYXJrZXIiOnsiY29sb3JiYXIi Onsib3V0bGluZXdpZHRoIjowLCJ0aWNrcyI6IiJ9fSwidHlwZSI6InNjYXR0ZXJ0ZXJuYXJ5 In1dLCJzdXJmYWNlIjpbeyJjb2xvcmJhciI6eyJvdXRsaW5ld2lkdGgiOjAsInRpY2tzIjoi In0sImNvbG9yc2NhbGUiOltbMC4wLCIjMGQwODg3Il0sWzAuMTExMTExMTExMTExMTExMSwi IzQ2MDM5ZiJdLFswLjIyMjIyMjIyMjIyMjIyMjIsIiM3MjAxYTgiXSxbMC4zMzMzMzMzMzMz MzMzMzMzLCIjOWMxNzllIl0sWzAuNDQ0NDQ0NDQ0NDQ0NDQ0NCwiI2JkMzc4NiJdLFswLjU1 NTU1NTU1NTU1NTU1NTYsIiNkODU3NmIiXSxbMC42NjY2NjY2NjY2NjY2NjY2LCIjZWQ3OTUz Il0sWzAuNzc3Nzc3Nzc3Nzc3Nzc3OCwiI2ZiOWYzYSJdLFswLjg4ODg4ODg4ODg4ODg4ODgs IiNmZGNhMjYiXSxbMS4wLCIjZjBmOTIxIl1dLCJ0eXBlIjoic3VyZmFjZSJ9XSwidGFibGUi Olt7ImNlbGxzIjp7ImZpbGwiOnsiY29sb3IiOiIjRUJGMEY4In0sImxpbmUiOnsiY29sb3Ii OiJ3aGl0ZSJ9fSwiaGVhZGVyIjp7ImZpbGwiOnsiY29sb3IiOiIjQzhENEUzIn0sImxpbmUi OnsiY29sb3IiOiJ3aGl0ZSJ9fSwidHlwZSI6InRhYmxlIn1dfSwibGF5b3V0Ijp7ImFubm90 YXRpb25kZWZhdWx0cyI6eyJhcnJvd2NvbG9yIjoiIzJhM2Y1ZiIsImFycm93aGVhZCI6MCwi YXJyb3d3aWR0aCI6MX0sImF1dG90eXBlbnVtYmVycyI6InN0cmljdCIsImNvbG9yYXhpcyI6 eyJjb2xvcmJhciI6eyJvdXRsaW5ld2lkdGgiOjAsInRpY2tzIjoiIn19LCJjb2xvcnNjYWxl Ijp7ImRpdmVyZ2luZyI6W1swLCIjOGUwMTUyIl0sWzAuMSwiI2M1MWI3ZCJdLFswLjIsIiNk ZTc3YWUiXSxbMC4zLCIjZjFiNmRhIl0sWzAuNCwiI2ZkZTBlZiJdLFswLjUsIiNmN2Y3Zjci XSxbMC42LCIjZTZmNWQwIl0sWzAuNywiI2I4ZTE4NiJdLFswLjgsIiM3ZmJjNDEiXSxbMC45 LCIjNGQ5MjIxIl0sWzEsIiMyNzY0MTkiXV0sInNlcXVlbnRpYWwiOltbMC4wLCIjMGQwODg3 Il0sWzAuMTExMTExMTExMTExMTExMSwiIzQ2MDM5ZiJdLFswLjIyMjIyMjIyMjIyMjIyMjIs IiM3MjAxYTgiXSxbMC4zMzMzMzMzMzMzMzMzMzMzLCIjOWMxNzllIl0sWzAuNDQ0NDQ0NDQ0 NDQ0NDQ0NCwiI2JkMzc4NiJdLFswLjU1NTU1NTU1NTU1NTU1NTYsIiNkODU3NmIiXSxbMC42 NjY2NjY2NjY2NjY2NjY2LCIjZWQ3OTUzIl0sWzAuNzc3Nzc3Nzc3Nzc3Nzc3OCwiI2ZiOWYz YSJdLFswLjg4ODg4ODg4ODg4ODg4ODgsIiNmZGNhMjYiXSxbMS4wLCIjZjBmOTIxIl1dLCJz ZXF1ZW50aWFsbWludXMiOltbMC4wLCIjMGQwODg3Il0sWzAuMTExMTExMTExMTExMTExMSwi IzQ2MDM5ZiJdLFswLjIyMjIyMjIyMjIyMjIyMjIsIiM3MjAxYTgiXSxbMC4zMzMzMzMzMzMz MzMzMzMzLCIjOWMxNzllIl0sWzAuNDQ0NDQ0NDQ0NDQ0NDQ0NCwiI2JkMzc4NiJdLFswLjU1 NTU1NTU1NTU1NTU1NTYsIiNkODU3NmIiXSxbMC42NjY2NjY2NjY2NjY2NjY2LCIjZWQ3OTUz Il0sWzAuNzc3Nzc3Nzc3Nzc3Nzc3OCwiI2ZiOWYzYSJdLFswLjg4ODg4ODg4ODg4ODg4ODgs IiNmZGNhMjYiXSxbMS4wLCIjZjBmOTIxIl1dfSwiY29sb3J3YXkiOlsiIzYzNmVmYSIsIiNF RjU1M0IiLCIjMDBjYzk2IiwiI2FiNjNmYSIsIiNGRkExNUEiLCIjMTlkM2YzIiwiI0ZGNjY5 MiIsIiNCNkU4ODAiLCIjRkY5N0ZGIiwiI0ZFQ0I1MiJdLCJmb250Ijp7ImNvbG9yIjoiIzJh M2Y1ZiJ9LCJnZW8iOnsiYmdjb2xvciI6IndoaXRlIiwibGFrZWNvbG9yIjoid2hpdGUiLCJs YW5kY29sb3IiOiIjRTVFQ0Y2Iiwic2hvd2xha2VzIjp0cnVlLCJzaG93bGFuZCI6dHJ1ZSwi c3VidW5pdGNvbG9yIjoid2hpdGUifSwiaG92ZXJsYWJlbCI6eyJhbGlnbiI6ImxlZnQifSwi aG92ZXJtb2RlIjoiY2xvc2VzdCIsIm1hcGJveCI6eyJzdHlsZSI6ImxpZ2h0In0sInBhcGVy X2JnY29sb3IiOiJ3aGl0ZSIsInBsb3RfYmdjb2xvciI6IiNFNUVDRjYiLCJwb2xhciI6eyJh bmd1bGFyYXhpcyI6eyJncmlkY29sb3IiOiJ3aGl0ZSIsImxpbmVjb2xvciI6IndoaXRlIiwi dGlja3MiOiIifSwiYmdjb2xvciI6IiNFNUVDRjYiLCJyYWRpYWxheGlzIjp7ImdyaWRjb2xv ciI6IndoaXRlIiwibGluZWNvbG9yIjoid2hpdGUiLCJ0aWNrcyI6IiJ9fSwic2NlbmUiOnsi eGF4aXMiOnsiYmFja2dyb3VuZGNvbG9yIjoiI0U1RUNGNiIsImdyaWRjb2xvciI6IndoaXRl IiwiZ3JpZHdpZHRoIjoyLCJsaW5lY29sb3IiOiJ3aGl0ZSIsInNob3diYWNrZ3JvdW5kIjp0 cnVlLCJ0aWNrcyI6IiIsInplcm9saW5lY29sb3IiOiJ3aGl0ZSJ9LCJ5YXhpcyI6eyJiYWNr Z3JvdW5kY29sb3IiOiIjRTVFQ0Y2IiwiZ3JpZGNvbG9yIjoid2hpdGUiLCJncmlkd2lkdGgi OjIsImxpbmVjb2xvciI6IndoaXRlIiwic2hvd2JhY2tncm91bmQiOnRydWUsInRpY2tzIjoi IiwiemVyb2xpbmVjb2xvciI6IndoaXRlIn0sInpheGlzIjp7ImJhY2tncm91bmRjb2xvciI6 IiNFNUVDRjYiLCJncmlkY29sb3IiOiJ3aGl0ZSIsImdyaWR3aWR0aCI6MiwibGluZWNvbG9y Ijoid2hpdGUiLCJzaG93YmFja2dyb3VuZCI6dHJ1ZSwidGlja3MiOiIiLCJ6ZXJvbGluZWNv bG9yIjoid2hpdGUifX0sInNoYXBlZGVmYXVsdHMiOnsibGluZSI6eyJjb2xvciI6IiMyYTNm NWYifX0sInRlcm5hcnkiOnsiYWF4aXMiOnsiZ3JpZGNvbG9yIjoid2hpdGUiLCJsaW5lY29s b3IiOiJ3aGl0ZSIsInRpY2tzIjoiIn0sImJheGlzIjp7ImdyaWRjb2xvciI6IndoaXRlIiwi bGluZWNvbG9yIjoid2hpdGUiLCJ0aWNrcyI6IiJ9LCJiZ2NvbG9yIjoiI0U1RUNGNiIsImNh eGlzIjp7ImdyaWRjb2xvciI6IndoaXRlIiwibGluZWNvbG9yIjoid2hpdGUiLCJ0aWNrcyI6 IiJ9fSwidGl0bGUiOnsieCI6MC4wNX0sInhheGlzIjp7ImF1dG9tYXJnaW4iOnRydWUsImdy aWRjb2xvciI6IndoaXRlIiwibGluZWNvbG9yIjoid2hpdGUiLCJ0aWNrcyI6IiIsInRpdGxl Ijp7InN0YW5kb2ZmIjoxNX0sInplcm9saW5lY29sb3IiOiJ3aGl0ZSIsInplcm9saW5ld2lk dGgiOjJ9LCJ5YXhpcyI6eyJhdXRvbWFyZ2luIjp0cnVlLCJncmlkY29sb3IiOiJ3aGl0ZSIs ImxpbmVjb2xvciI6IndoaXRlIiwidGlja3MiOiIiLCJ0aXRsZSI6eyJzdGFuZG9mZiI6MTV9 LCJ6ZXJvbGluZWNvbG9yIjoid2hpdGUiLCJ6ZXJvbGluZXdpZHRoIjoyfX19LCJ0aXRsZSI6 eyJ0ZXh0IjoiRXhlY3V0aW9uIGFuZCBwbGFubmluZyB0aW1lcyBmb3IgZXhlY3V0aW9uIG9m IG9yIGV4cHJlc3Npb25zXG4ifSwid2lkdGgiOjEyMDAsInhheGlzIjp7ImFuY2hvciI6Inki LCJkb21haW4iOlswLjAsMC40NV0sInRpdGxlIjp7InRleHQiOiJudW1iZXIgb2Ygb3IgZXhw cmVzc2lvbnMifX0sInlheGlzIjp7ImFuY2hvciI6IngiLCJkb21haW4iOlswLjYyNSwxLjBd LCJ0aXRsZSI6eyJ0ZXh0IjoiTVMifX0sInhheGlzMiI6eyJhbmNob3IiOiJ5MiIsImRvbWFp biI6WzAuNTUsMS4wXSwidGl0bGUiOnsidGV4dCI6Im51bWJlciBvZiBvciBleHByZXNzaW9u cyJ9fSwieWF4aXMyIjp7ImFuY2hvciI6IngyIiwiZG9tYWluIjpbMC42MjUsMS4wXSwidGl0 bGUiOnsidGV4dCI6Ik1TIn19LCJ4YXhpczMiOnsiYW5jaG9yIjoieTMiLCJkb21haW4iOlsw LjAsMC40NV0sInRpdGxlIjp7InRleHQiOiJudW1iZXIgb2Ygb3IgZXhwcmVzc2lvbnMifX0s InlheGlzMyI6eyJhbmNob3IiOiJ4MyIsImRvbWFpbiI6WzAuMCwwLjM3NV0sInRpdGxlIjp7 InRleHQiOiJNUyJ9fSwieGF4aXM0Ijp7ImFuY2hvciI6Ink0IiwiZG9tYWluIjpbMC41NSwx LjBdLCJ0aXRsZSI6eyJ0ZXh0IjoibnVtYmVyIG9mIG9yIGV4cHJlc3Npb25zIn19LCJ5YXhp czQiOnsiYW5jaG9yIjoieDQiLCJkb21haW4iOlswLjAsMC4zNzVdLCJ0aXRsZSI6eyJ0ZXh0 IjoiTVMifX19LCAgICAgICAgICAgICAgICAgICAgICAgIHsicmVzcG9uc2l2ZSI6IHRydWV9 ICAgICAgICAgICAgICAgICAgICApLnRoZW4oZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZ1bmN0aW9uIGRvd25sb2FkaW1hZ2UoZm9ybWF0LCBoZWlnaHQsIHdp ZHRoLCBmaWxlbmFtZSkge3ZhciBwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJzE2MmQ4 ODhhLTgxZTAtNDc0MS1hNDA2LTk4Y2M1MzlhZGFiNicpO1Bsb3RseS5kb3dubG9hZEltYWdl KHAsIHtmb3JtYXQ6IGZvcm1hdCwgaGVpZ2h0OiBoZWlnaHQsIHdpZHRoOiB3aWR0aCwgZmls ZW5hbWU6IGZpbGVuYW1lfSk7fTtkb3dubG9hZGltYWdlKCdzdmcnLCA2MDAsIDgwMCwgJ0V4 ZWN1dGlvbiBhbmQgcGxhbm5pbmcgdGltZXMgZm9yIGV4ZWN1dGlvbiBvZiBvciBleHByZXNz aW9ucycpOwogICAgICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgICAgICAgICB9OyAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NjcmlwdD4gICAgICAgIDwvZGl2Pjxzdmcg aWQ9ImpzLXBsb3RseS10ZXN0ZXIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2 ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHN0eWxlPSJw b3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IC0xMDAwMHB4OyB0b3A6IC0xMDAwMHB4OyB3aWR0 aDogOTAwMHB4OyBoZWlnaHQ6IDkwMDBweDsgei1pbmRleDogMTsiPjxwYXRoIGNsYXNzPSJq cy1yZWZlcmVuY2UtcG9pbnQiIGQ9Ik0wLDBIMVYxSDBaIiBzdHlsZT0ic3Ryb2tlLXdpZHRo OiAwOyBmaWxsOiBibGFjazsiPjwvcGF0aD48L3N2Zz4KCjwvYm9keT48L2h0bWw+ --------------mTW9MCqgDuu08yQtZP7WvmpP Content-Type: image/png; name="graphs.png" Content-Disposition: attachment; filename="graphs.png" Content-Transfer-Encoding: base64 iVBORw0KGgoAAAANSUhEUgAABLoAAAJgCAYAAACN7QoTAAAABHNCSVQICAgIfAhkiAAAABl0 RVh0U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dvz4AAAAuaVRYdENyZWF0aW9uIFRpbWUA AAAAANCS0YIgMjcg0LjRjtC9IDIwMjMgMTg6Mzc6MjBa4YimAAAgAElEQVR4nOzdfVwU573/ /5cOC2GT5SbuEcEsVSFCBYlYRCMpkVQ0IUZiSmo0DScek6OtSfrQX23yPeab2Dxifyb2q9/a eA5NYtOaG40hNaQJTYI/b6hY744Y7woJgoUTFLtUYJs17LL6+wNQUFQWuff9fDx8JMzOznzm mmuvueYzM9cMOHfu3DlERERERERERET6uIE9HYCIiIiIiIiIiEhnUKJLRERERERERET6BSW6 RERERERERESkX1CiS0RERERERERE+gUlukREREREREREpF9QoktERERERERERPoFJbpERERE RERERKRfUKJLRERERERERET6BSW6RERERERERESkX1CiS0RERERERERE+gUlukRERERERERE pF9QoktERERERERERPoFJbpERERERERERKRfUKJLRERERERERET6BSW6RERERERERESkX1Ci S0RERERERERE+gUlukREREREREREpF/w6ekApC/ysOeZtazd7Evi6keZO7Gn4+ndipa/xapN BqlvzCJjVPet17npIxYuq7wwwbB0ewyd43qrb9fZ9rpq2PPaLj7bfJKTlS7cgMnsS2DKHSx5 LhJzT8cn10j1WfVZ2u86+72IiIh0ESW6pENMZjPmIAOz0dORyOWY4mOYtTgcN2Dfup9thT0d Ucddb/Xt+tleD4dXfMTaTU5MYSHETrcS6N/00VAzph6NTTqL6jOqz9Ju18/vRUREpOsMOHfu 3LmeDqI3qHs3h8Urqq44T8DMaaxYHNZNEXWT6iOsuq+QQat/SGZCTwfTP/XUHV0tla54i5ey ezaG65J+X1fmKmPt1Dz2+A5n/rupxAf1dEByRarPV6b6LCIiItIr6I6uiwQkRDJ2pF+bnwXG W7o5mq7n3FfBMRcM6ulARPoh/b6uwuGkzgmMthHVnUkBD6C7Jbym+nwVPVWfvXW91f/rbXtF REREia6LBU4cx6zMqyW0PJSufp+X1jmJfe77PDm99fwn1v2BZatPM2RBOk/PsbZ4XMFFRe5+ Pn6vjOJjDpwNBgG2EEanx3H/zHACLumIeTixeT85G0oo/sKBs97AbLMSe28c6Q8Px+rbYtaj u1gy5yCujEvvOqtYs5EX33CRlNXiKvzxQl6cuZcKT+OfBfNfpaDFd2wLfsCzc1r31A8v+x2/ 3uRqMeVqY0i4qPhwLx9kl1N63IGzwZeAYVZGp4/l/oyw1tt7qIAlc44QsGgWPxpZwntZRRz+ woETM7aJUdy/aByxgy+3nnaqqWLba3vZ8Wc7J6tcuP18sY4MJ+nxCaSNv2jklI7E46gib9Uu tuXbsTsgIGIod8xPIqIzOthN8ZjmP8ATESWszyqh+LgTLBZsyTE8+FQcI671xKory6cD5elV fevQ/rKzbc0u8rZWYXcYWKOGkrQgicQv8liy8jRJax4lc3wHy7Irf1+uErImbaH28bu5o2wX 2ZsdEBXDvFVxnPltHu98YOdMUAhpy+4hbXTLyudt++Ok9N195OSUU37cidPT2P5E3R1HRuZF 7Y9XPBQ+8zuyNnsuTNqZz8KE/FZz2Z6axbOt2mIv2hOgdPV6XnrbIP3dH5BmLidn5T527LZT 56CTxqtrb3nqeNGojx0v2h1PR+tzV8XTqE/X/w4c77zf3q5uD72bv/f9Xrqq/RcREekextKl S5f2dBC9Qf2RYvJ2fk3g+NEk39b2HV0XDCQ4PoSzf/krBZ/asUwZybCmvpv7i0J+/WwJ9Qnj efKZ4QSef6+lh9KsP/LL/1NOfXQEqTO/ze3JQ7D88wQFbx9mZ0UgE753MxfW7KH09RxeXl7K 6ZuHkjQjmrFJVm6qreK///BXCv56AwlTBmNuXv7f/4ctOVV4Ro1kSlLrjmTd3iPkH/AQPi2O 25rPaQwTN4QEYj37D0orzjJi5ni+l3YLo5JuYVTSt4hJHMLQQa17ejeYbyDw26GMSrqFoT7/ oPRvZxl6zxjG2toqIxdFqz9g1eoKnN8awfd+OIo7kgZxw4kK/rzxCIXVN3N7cvCFk7rqSrZ8 WEU9/2DPn84Q8ch3uO+haKKDTrM/+0t2FZtInBbS8YF8PXZy5/+R7D9/g/V7MaTMiOC22Btx 7i/hz+//jfrEaEaFtHgJqdfxONi26EM2bvmawDvjuO+RSEaGufj89QN8+XU9p//uQ8T9oxn1 Lx2Mvymef37zDw7+5RyjHx/PA4+MJCKwjn0bjvDnI1cun9M7D1JwdODlY+jq8unA/vWqvnVg fxX8rxze/pMD84QY0h6O5NbAOgrWHKT8nIuTxwcQMT2O0R19UrlLf1+1fP5mKeUVduyRY5l5 3zkOZRfzRXEVxwZG8tCcQP7nkxIKK83ccc/gpjbF+/an4vUcfrn6FH4JI0l5MIrb7xxKqOkf 7H/7IAWXzO+NgZjMftwcO5RRcQM5VViL89ZIMv5tZFP5NJbRmHGhhA5qrnNetifATTVfkbfZ zsBbrVSsyGPLiZsYfe9IEu4IJTzqZiLGDiW0w3kHb8pTx4s+d7zwKp6O1OeujKdRn67/HTje ebe9Xd0eet9+9q7fS1e2/yIiIt1Dd3R1lK+V9BfGUTRnFznLDhK7Og6rx07ui/upsIST+Xwc oS37/ccP8s4bdgJn3M2SJeHnOxSJ06OJXf4+q7J38fGM4cxKMC7M/5odEibwszUtljU7huhn NrJ2815y8m9lbkoHL6tZrCRmWAm1F5G3E0JT4ki9ypgrAQnR5+c54SgiL7/h8jN/8Tkb3q6B MeNYtCb+fPyJ0yOxLthI9oe7yJ0x/JIryvYDHjLenkZqU+duxOggnIfWs35fCYWVcaR2NPFQ acduCWbEzAQWLQo/3wGcNMFg6SMHKXivnPTRwy8ZLLjd8Rw6SN5uF+bkZBYtiyYAgGgmJRXy 4iN7oZO6hM6jHlLfTSVtWOPftlEhmCvX8+sPD5J3II5ZYzq44K4unw7M71V983b5Xxwhr8CF aXwSC1fEYAUgmsS4fJY9VQSYr6117OrfF1DnsDJ7QSSxfmZGZ5VRUGgw648xxA5ycOLtg2SX VFPpofHKvrftj8fOjo9rcCdM4KllcU31GZgeTXT4Fj4ucmJ3QUAHmx/rxBhSAU7B/tfKsYeH M2lm5OUH6+5Ae2IKsxCIh9LX8ikNH8vTb8Rj66xX3nlbnjpe9K3jhZfxeF2fuzge6OP1v4k3 xzuvtrer28MOtJ+96vfSxe2/iIhId+jo5cV+q3ZnIdmrd136L6uEExfPPCyOuQvDYfde1r5r p/S3+eQV+5H4TDJJF90GfmJrGRUeMyMmBtNQ7aTu/L8GwiYOJQAnh3faL8y/+UsqPAaxM6Iv 6gCaSVx0D09mTWFKXO8ddKJiSxknPAZRD8a0jt+wkDR9KCaPg8P59ku+Z0qIIqnVFUwz4VFm 8Dixn7qGgGzRZK55gKdbJHEACA1ikAHOUw7OtPG19sZzYl8VdgxGTB5xoVMIEBHJ+M4c/H3U cBKHtZxgEDUxBBNOjhXWdHy5XVw+HZ3fW+1dvr2wihMeiJg8vCnJ1TT3xDiS+spg/ZFWIswA vgQGAdZgwoMAzAQGA/+sP7/PvG1/wAP1QFUN5a2qlcGI2ak8+UIcI7rxJKdD7YnFjL8Bzhoz qUs68SSfjpQnOl5cQW87XnQ0nq5yvdX/87w53nmxvV3fHnZt+9n1v5fe1f6LiIh0hO7oukjd viLy9rXxgXk4EY9HXnLV0To9mcx9fyDrlRxWejwEZkxjVsrFPSwPJ0tOAx72LF7Pnsus21Tl xA2Y8FBR4gDDQmhkG72JwSGdMP5IV/Jw4nhj/OHDL43fHBmE1SjHfrwGN9ZWiRX/0IBLHjcx GQbgwX31G3quyHn0CDlvFHO48DT2Gk/rDxvA1cZ32htPdWUdYMZqu3h7LYSG+8Kha4u9mdkW RODF8YRYCDSaY+j4QF1dWT4dnd9b7V1+3VcOwJdBYRfPHcSIKDMcvfZYupzFjD+A4YPJAPx9 z/+WGre5mbftD2CEcMcDVgqyivj1jK+I/m44UfFhjE4Kxza4uxMmHWxPmsMcFUlim4//dDwe r8uziY4Xbeltx4uOx9M1rrf6f4FXx7t2b283tIdd2n52w++lV7X/IiIiHaNE10W8HzDWTOwD w7HmHsFuBJGYHtbmuCBulwewkPhMEuMv9ziFtblT4sHt9AA+mPrkVbMW8fu38bGvHz6A29Vw SUe4y3xRyMr5e6kwgkiccyez4iyYfcHkKuedeYWUXtPCm7bXMDC18YSij2/n/cx8zH6Xlpdf UxnWezpenl1aPr2P80wD4NPm/roxqLHj3+tdfL5htDGtiXftT+PCbI+lsyRiP7nZZRzefISi 3CPkYGAdH0364gkkDuuuE55ra09MIZZLTpavlffl2UzHi0v1tuNF/4qnL9b/Zh053rVne7u+ PezK9rM76mdvav9FREQ6Romua+WqIuflI9gHBRHqqSHv/93L2N+M4+Ibe0z+jSfP5shwYq86 jpKByWwADbjbel7Ma9190n6V+F2Nj1SZ/NvoxHYJD4ff+5wKp0Hsc9OYO71F19px+hoGLG5m YPIzwOPCXX/pus846qET1gLQ4Ky/tPPq9PC15zInBe3S1eXT+zQmHxva2F/wtaMPJLm85F37 08wgNGUcc1PGgctJxb5yDuUXs/XDI6yd54R3Ukkc1IVBt4jjWtoTUxecj3WsPNHxok297XjR v+Lpi/W/WUeOd+3Z3u5pD7uq/eyu+tlb2n8REZGO0Rhd18RF0a+2kHfMQtLz97PomeH4Hypk bVYl7lbzGdgig+Fy4yi5XDhdrecPjbSAx0F5SRsPjFWUs+3dg+w52uIzH6OxU3PJOYoHe1Ub Z/Nd6srxO0tqqPXAkMjgbjpRqMde6QIjmIj41mkb99FTlHfCeV3jI3D12Csu3t7TlJd13omj s8JB7cXTyhvHzwq85DG89ur68ultrCFmwEV11cX7y0FFsbMnQupC3rY/bfA1Y5sYTdoz6Tz9 kxCoLmd/YXdVjN7WnnS0PHW8aFvv27+K58rxdG39v6Brjnc90B52avvZA/WhR9t/ERGRjlGi 6xo483ewNtuBdeadzJroS8DkO5mdZubE29tZv7N1B8SaEskIX6h4bz+t+1YeSl/7gJ9N3khO i3GBbCnDCTU8FP/hCCda9Sec7MnawvoV+zlkb3HpcpCZQKCu4jR1LWevKWP3zsv32nz8fIB6 nNVX69l557Lxe2oo+MNXuA0rY1M6Pp6Ud/wwWwygHqejdSzb1pVyxgA819Zps44ZQgAeij/5 slX5O/cdZc+xa1p0a0dLKDjWMlYnhdu+wm1YiE64Qnle8Sp315dPb2MdZSUAKN9W2np/7S5k WyeOz9VVvy9vedv+8MVBfj1zI2tzL036+RoAfpiDuu/Rld7VnnSgPNHx4kp62/5VPFfW1fX/ vI4e7zo7fm/bwy5uP7u8PvSy9l9ERKQj9OjiRarz97K+qo2BewDMIUxaEEkoQHUJ65aVUDcs jqefCGu6cuZL/OJkkg58QsGL2xn9Zirxzbd222KY/XgJK9eUsPYxF5MeHEao7xnKdxZRsNWB KTmJpKgW64oYS2ZmBSvf2MvLc+wkTQ7B6ldPeUEJe3a6CJicTHpyyxOXcGLjd1G0r5Dfv+FH 6ngLvlVV7FhXhHtUEFymI2kdbSUAO4UrP2JtsQ2rrwdntQN7jZV7l8czomkV9n1HKGzR4aw9 6gI8nMg/SF5F00TfIOJnhDe+xS5iLA89XMYr6/aycoGTlLRBWD1nKPr0CAUHwPZYEqnDvNkz 18IgNmUo5s3lFKwsIHz+cAIcdgrfPUJ5wgQm2fPJO1ZOQX4YiXEhhHagf2iKjyNlzJfk7NzF S4trSBpvgcpK9nzsxJZswZ7fOVtijoI9Cz+iNiOSaCucKDhCXr4H88Q4Jl3hbYH+Ab7gqaHw 9V0Ejm+6Eu5vZfz0MAK6oXy85XV981b8KFJGf0lOfgGrXzjDHQn+UFnJjg9rGJFswb61cxJ7 Xfb78pa37c+wEEKNveQt/wh3ya1ER/pjxoO9qIKCD6owjR5HSnzHyqRDelV7gvflqeMFfed4 oXiuqqvrf5OOHu86PX5v20Mv5+91v5fe1v6LiIh0gBJdF3EeKGHbgct8aKln9PxIQg0H236+ g0KHlbRV41q/ZtkSTsZzMRQvOMK65UXYVkQ3nZga2Oak8zPbXnLeLqNgTTnOeoOAYSEkLkri /pnhBLS6QGYwYsE0nh6+n4/fK6Pg9TKcDc3z38n9M8MIaB0cqc/dRe0v97L7jS2syjIIiBjK +Pn3cH/1dhbvdLb52jxTwgR+tKiedzaUs+dtOyY/X/wHBxAWb8O/RTwnc/eS/eGlC6jI3kVz PwzzcKzTw7EajfFHP3U/T9v28sGmMvKWH8GJL9aoIaS+kEBaWne8reoC89Rk5lXms2FDEWsX FGEOsxL78F08mRGCM6ySwytKyH02j9rlPyRzYgdWYASR9tI98KtdFPz5CDn5BgFR4aQsu5v4 Q59QuLUedyfkTnxGJfDE+EqyXytk3TEnmC3Ypk/gwYUxV0yAhM6YQGphPtvyD5LdnHQbHI3t 3jACjG4oHy95X9+8ZFhJeykV98p97Ni6l/WbfbGOHkHqsruJyP+IPZ00TlGX/L46FImX7Y9v CBn/eQ+BWfvZvflzst924cbAHBZMVEYy8+dEY+vWC/q9qz3xrjx1vGjWV44Xiufq8XRt/W/U 0eNd58aP9+2hl/P3ut9Lr2v/RUREvDfg3Llz53o6CBG5iqO7WDLnIK4Z01jxzOVeEyWdoWj5 W6za5EvaOz8gPaKnoxERuc7oeCciIiLXSGN0ich1yMnhN/LJWrKXwy3HJXNVUrjbCUFDiLD1 WHAiIiIiIiLSQXp0UUSuQ2YGGXYOf2qnuKyGpPQwQg0Xxz75nIIKgxGL4oi9zCvvRURERERE pPdSoktErkuhmdNYZN5FznvlbFtZhttoHKNl0pIJpM/ovjeYiYiIiIiISOfRGF0iIiIiIiIi ItIvaIwuERERERERERHpF5ToEhERERERERGRfkGJLhERERERERER6ReU6BIRERERERERkX5B iS4REREREREREekXlOgSEREREREREZF+QYkuERERERERERHpF5ToEhERERERERGRfkGJLhER ERERERER6ReU6BIRERERERERkX5BiS4REREREREREekXlOgSEREREREREZF+QYkuERERERER ERHpF5ToEhERERERERGRfkGJLhERERERERER6ReU6BIRERERERERkX5BiS4REREREREREekX lOgSEREREREREZF+QYkuERERERERERHpF5ToEhERERERERGRfkGJLhERERERERER6ReU6BIR ERERERERkX5BiS4REREREREREekXlOgSEREREREREZF+QYkuERERERERERHpF5ToEhERERER ERGRfkGJLrk2BwpYnLCWrM2eno6ktVPl5Cz+A4tT1jIv4VWeSP4dL66p6umo+odr3uc15Ga+ ysIXyjs1LDxlZCW/yuLllZ273H35LB6/kZxjnbtY6Vru/C0sHP8H8q5WHY7tZen4V5mX0Phv aZa9cwNR/ZEOqMvOOV8n5yW8xbp9PR1RB6mPcP1RH0H6APURRPo/n54OoH9xsm3BW6zf3fan tqdm8WympXtD6giPnezZefD8LDJGXWXeQSHcMROs4Ua3hNY+Lgp/tYXcfQEkzb+TscN8AfCx BvdwXP3E1fa5N/WnU1kYfX801jhzd65U+rpht/HEO8Nxe+zkPJnPyZ6OR/qxNvoIZl+so8KZ 9NgEUhMutF0BU+9iaXw9DeVHyXqmk0/4r5X6CHIl6iNIf6I+gkifpURXV4iIZu6iYbQ+lPoQ OLyPHFxrqqioAFt75rVFkr44sqsj8o6njmPFLgImJ5A5M7yno+l/rrbPvak/ncmwkrQoubvX Kn2d4Ys1wgoeF4EG6sRK14uIZu7iSAJooKG6hkPv7Sf7KTu1v/k+GaObkgMWC6EWC+CPqUeD bYP6CHIl6iNIf6I+gkifpURXV7AEMWJ8ONbLfOzcmc+yn5YT9csfkDnRt2mqg21PvU92TQxP vz4OW9Nkd0UJOav2s3tfDXUNvljjR5C2KImkiJZXylyUZu8iZ0MpxypcYLEQMTmOjAUx2Ly8 gaxizUZefKMGgKLMV8lrmh6QMY0Vz4Sdn69o+VusynY2/WUQv/xR5k9uEZOnnLVpBZj+NZLq tw5yzCecWcujOLEyn21fQNSCaTw5M+hC/O/s4L33yqmodMEgK7EPJDD7sXACvAneU8m6tI8o qG76+/gnzNt04ePY5x7lyelNBeuws21NAXmb7dgdYLZZiX9oAhkZIS0SlE7y5r9Fru1uXp7j IvuFvewpdOD0wIjFP+TpmV4mLtuzTmcJWXdvx73kEf7V8jm/X3mE4uMu3EYQaW/+gPSRF2I7 /EYBH2z6ipNVjfvclhLH7Ke82OfOErLu3sKZnz7KwuZyaWl3PgsXniYtO53UsHbsc9pffxoX 4aL03Tze+X05FTUG1vhbyXg+ifjB7Yy/iXtzHgufKcN9pXVVH2HVfYUMeiGV8J0F5G09jd3j h21yAnOfiSb0/Oa7KHp9Cxs2fMUJp0HohGjSJ7e11qvVWQ+la95n5YcBzHrzbpKat6mmjLWz 8yhNmcaSxWF4VYMcVeSt2sW2/Kb6ExJMbMYEHswMa/U7qdtXyHtZRRw+6sDpYyY0YThpT00g cViLfeWqYc8rO8j9tIoTNU3LykxiVou66N6ax8IlHmb9bhjlKwvZc9CB2xJE7L/eSebsEO9i B3DaKVi9i9ytVdhrIGDYUMbPTyI9xXL+RL5oxVu8ciyORTOdfJxVRHGFB1NYCJMW30X6+BZr bEf8jQzcFSWsf2FvY/xBVuLnJ5M53ep98qAd8be//sh1zRLEiISwpj5COLHfteCckUfBpq9I Hx3uVd10Hihk/a+OcLjY2fR7jyT9pxOIP98E1pAz+30Kk1J5yFxM9nvlVNSANS6ajOeSWszX PuojqI9wnvoI6iOoj+BV/OojiHQvY+nSpUt7Ooj+w83x3IMc9tzC96ZfvpE32W5haO1f2fRW HeHTvsVgP7BvyuO1P/px36/uIn5Q04w1Zfzu8f+P//aJYOayyWQ8ZOOGQwdYv/bvhKRFMLRp BSfe+YiXf1XLsH/7LrOfjOP22wZSvH4Pnxy4gYR7Bnt1sDGPDGds1Dcc2P4Nt714H4/P+zaT HhzN7Uk3YzFfGNIt8NvhJN4XxR2TTZT96e+YvzeGhBEthnw7V8vht4spPBnMQ/85AXPeLj79 yEnE82ncf8MxNuV8Q8wPwgkeCCfW5fDyr2sJf/x7PP6z7zAx8mv+smYPuxvCuX2smXY/8DDQ zPDv3krS/YNw/vlvOL53F4tfiOeuBxu34bbYGzH7ATjYtiiH9UcGkbZ0Mg//+0hG+p/is5UH KA2JYHyUX/Oewn34r/y5yI196185MWoMMxeOJeW+W4kZFUiwxZsh7tq5zoFn+eqzoxQ7vqH4 DycJfmgCM+eP5o4pNoYNs2Bpmq1u06e8tNbF7f9rMplPfYdJdwZQ/X4BH5RYSbkzsH1lNvAs X332V74M/hbfS7zpko/rdh0g93ML35s/nMED27HPaW/9+YYvNx2h9PhpygcMY/rPbmfKBIPj fzhI/t8CSZ58s1cdDGPIYOLvHsmkB27B/d+lnAobyZQ7LurJu/7BrrdLOHbUgeX7d/Lj58eT 8u2vKfjPQo4G3sodsY0FW/dpHr/8P3aG/mgKP/7ZGMYE/Z3crC855TAR8f0Yom9uXNzV6+xA gr8TAlv38tEBMxOnWPHDReEvPiHX+W0WLP82g716ksdF4bJNrC+1MXPZXcx+LIaxEd+w+5Xd HA0ayfioxhJzH9rFywsO4rz9O8xePI4pU4Jw//kg2RtquOXe4YTe0Li00qxN/Pr9Adz+v6eS OT+aCM//kPdff+V0XAy33dK4n85W/I1PP/2KipKBJPz0bh7/f8YQ7Soj5z+P4b4zhlGDLhdr WxwUPJ3Duj1mJi2ZzKM/jibybDk5Lx/GHjfq/Drrdh8hf/dJys/cwvd/MZmHH/0WNxQeYNP7 Zxj+4LfOl1m74v9bGXl51Zws/SdDZ93BrH+7lVvqjpP3ehn1STGM+peLQjzn4PD6L6iO+jaT Ei5uNdsZfzvrj1yvLtNHMPlQvf0wn38TQsq9g/Fr+ZXTlWx7v5rge+O47eKkVHURWXP/QkVU Iv/24u3c/b0b+eqDfXz63yYSpzUv/xtKcw7z+ed2qiPHMPelFB64J4Dyd/eQ+2Ugk6Z4196q j6A+QjP1EdRHUB/By/jVRxDpVhqMvkt4wOXB3fJfqzE5DaKfuItJN33J71eX46w8wptr7IQ/ dRepwy7MZf/0IIX2ENJeSCJxlAXrsDBSl0wg3lPGZx83XhHDVU7e76sIzLiTzJnhjIiwMiJl HHMXxxFlcXLS4V3kpiALNpsZXwwCbVZCI6yERgQROqj1Edc0KIjQCCu24ZbLdDh8AA/mhEii B1uJiDJwBoWQOMqMbXQwJrsDuwfwVJK3wY7/9CTmzgwjNMyCbXIScx+2ULHhIMUub6I3CBgW RGhEMIF+4BtkwRZxYRuszf2ao0fI2wfxC+8kdXwQ1jArsbPv4v4kD4c3FHGixRIDrb5wtITS 0XexaFEMsaNDGDEmjBFhXo430t51GmYCrWD/tJyAhdPInDmcEaNCGJEQRmiLflllcQ3uYcNJ SrZiHWzGOiqSjP/7fZ56bEj7O4BGMKHhBrUVjsYrnRUl5KzeRcHRxspaWeaAYVaGNG3q1fd5 ++sPgJOhPPhsHLEjg7AljyN9qhnnwUrKvR2/1mxpXM9IC4FtXHRu3FbAA0wcS8bkIEyGQcDE OBKjPFQUVjVd6XVx6NOvcI6OY9bs5ro4gYyp5lp/15gAACAASURBVPNXgoH211nDStrz4xiy bxe/z3VQt3UH72wzk7p0HCMuF+fleOooL3YROD6KxFEWAgZbsKVM4EevTyMjufmky0XhuiOc iBzL3GdiiB1lxTYmmoznJ5AUB/bK5oJ14vQLIfGxCaSnWAm1WYl/PI5Yi5PifadbrdbkAdtD d5A00hcMX0bMjCLKqKHioBOvfFFEXoGH2J9MIT3Z2lj/H7uL9AQne979krqW8zot3LEojhGD DLBYScoIx1x9kmMV52dod/x4nATceycZk0MIjQgjafEE4oNqKPzEy0Gn2xV/O+uPyMVcpzlR CeYQC/7efK/aQ+DEGNKfiiE6IojQMTFkzLDiPlhJ6UU/UXfQcB56PByrL5hskaRMtuA+4n17 qz6C+gjqI6iP0Ex9BG/iVx9BpLvp0cWucGAvSybubT3NPJz5W1OJbz6W+4aQvnQsRY/ls6yw AWf8BH4+o+UVJg8VR+y4bXFEh7SYbAknOgqyD9lxE4SpoorSGgNbfOvbbANSJjA/pWs2zxsB YRbAwORnQLCZGwGTn4EJD+4GoKqK8mqDiIShreIPTRhKwGtfUXQcYke2uegOqztahR0rqXEt exK+jBgdDLuqqXBCaNPFGpOvT+O4Dg+GXdM4Ke1fpw8mP8A2nJTky/d0wuKtmLP38sozTpJS wokdH0Lo4CAvx7wwCB1mxr3bgR1o+Hg/2z504uMII3GUlZPHnZjDgy77CO61Mo0KO/+ILoC/ 1QxnGmjoovUBhEW1/J34EWgBt6sBN2DynOZEuYeABGurbR4yKhgTLTpHlV7U2WFxzH2qnGUr P+Ilw4l1/vdJH9mBQZmNYCLizeS+m8cqZzSJSTZGJ1gJGGa98EiCx86xIx4CUkIIbfldWzSZ y6NbTDAT+9hdxLZavpnAIHA5LzprNAIIj2qxk8x+mH3ghNO7Mw1nURUnsJKU0LJOm4lKCMa9 4RTlnmhim4slxEp4iyvBJosfZjy46zsSv4WI0S3aVV8rEcNhz/HTOGn/oxXtip921h8RaDyp xoO72k7BKwXsqbYwafpQ744zI2PIXNZ6UqDVDJ4GnC5oWcHNkVasLZoef4tfl7e37aE+grfr VB9BfYQ2qI+gPoKIXEKJrq4wMob5/yuSwJbTDPP5q17NTCOjSEnYz7p8P5IW3XrJWBPuMx44 VsiLEwtbf+ABxjipBaxOF24MzObe9EajZga+xoUqZjIuqnAewFHPGTwUPreWec9d9HWPL047 0Mmd2K8dHjD8MF905/qNFqPNEwT8LIR6OY7JNa/TFnRJfWkpYGoqPzP2k7upjNyfHyTbZWCd GE3G4gnE29pfFwYND8a06TTVrhrKd7qIzYymYlMFFS4/TlQYDEnqurdQNZ7MdC8fnyuVjQen E3wv+i2Z/Pxax+llnbVOjSM26xP2uMJJTwuiYwxiF6fzZHghWz86wvp397LO18yI6QnMfioa mxmgHuc/4UbL1S8FOw8cZH1WEYeP1uBsceE1YPyl85o6oWlx/tMDniqy73uV7Is/NMw467lQ /42r14v2x3/xb84Pkxlwurw6WWpX/H7trD8iB3axZPyu83+aBoeQ9MKdpI/x8sfmqmFP1i4+ 23ySk1WuC3eOG20csHy6v729OvUROrxO9RG6hPoIjdRHUB9BpD9QoqsrmC3YRodc9SpX3dZd fLDPQuxEF3t+tYvEMUlEn+/IGJj9fSHiVp58KYZLHnX3NTcu3+yLCQ9OpwfaP1JF72Hxw7/p AJ2RcGl1vPEaO49tOd9xdEDLgv3a4QE/P8wXX8Jpx0G109d5xc4WgEHo5HHMnTwOXE4qdpXw 2Zq9ZD3ty7NvjqO9/VizzUKg086Jo+UcqgphyoxwzJt2sP/gIOx2A+swL99m0KcZmP3AddGV SLejvvVt5V7VWQ9FWbsoNIcRG/QV760sI/qF4d4NoHw+PAuxs5OJnQ3uGjvFm4/ywZp8VhsB /GJxGCb8MN8EXzuu8ixPTQnrFu6iePQ45m2IITrMt7GDlpHD7o7E1Q7mmwwwQkh//U7iL65S hi9WbwYS9Cr+BtytiqO+8aqv2derg1+74ve0s/6IjIxh/rORWDHwsZix2swdOsZU/PYz1m6A pOen8VSKlQBfcOZ+wsKf9/R9Wp1IfQT1EXoN9RHUR7iG+NVHEOl2GqOrp5wq4Z3lZQTOuYv5 y5JJdBXx5upyWj7VHh5vxXTKgTMoiNBhF/4F+hoEhjRdkbGFMCKo5RgCjZyb83lxzhb2VNNB F48r1kXCQogI8VBdRattDB3si8liIcDbcQraIWBUCFbsFBW2PLo5KT10GiJCvB8bodvX6cF+ oIyiiqYd5GvGlhxH5vxwTMerOeHNfrMFYcVJ+cdlnIwbTpQlhNEJLopyK6kmgPBh3sTVOsZu qT+dyQgm1GZQV1yF/fxED8cu+m15U2edOwt4MxuSnr+H+c/HEbitgHc+9XLsCgCXk9L8ciqa xtwzBVmJzUgmI83MmWN2zgAYVsJjDOoOVbUaQ4bKI2Rl5pC9s2mHHK/imNOX+IfjGzuAANV2 KrwcksIb5rgQQnFgd1halZnVYnDjIC9P8r2J3+OgvOUgPi475SVgHRbs3Us62hN/e+uPiNmC bVQItlFWQjuY5AInxw7VwKho0qZam9odD+VHmmpfl7e/6iP03nWqj9Al1EfoMuojiEhXUKKr KzhqKN5ZzuGL/x1tGtATBwXLd3DYNpa5mVZMlnBmLYmGD/NZv/VCgxswOY7EoHLeW7KXwi8c 1FXaOfxuHssy3mfd1qYDoW84KQ9Zqc3ewbrscioqaijdWsja1UVUW8OI9uqtJ02sZgIMJ4c3 HOHwgUqKdpax58PyCw2z08mJ4zWN/yqcuPFwpvr0+Wl13gwOa4Qx6eEQat/dwtpNlZw45eDE gSKyF21k6ZP7qeiKjtCoGFLHQ+Ga7Ww74KDuVA2H38nngwI/Eh+O6prxJjp1nfWUvr2dV5bs Ys+hGuqqndi/KCM3+yuIC/OuQ2wJZojVyeGtpwn/bhhmDKLGh1CdX06tOYjQ5vHhvNnnV6s/ ncnjwt4c1zEHThc0OOrOx2Wv8aYC+TJ68lBMR4/w5hvlVBy3U7RpOzn7jNYdnvbW2Zoy1i// EtPDd5IxxsA0aiz/mmnm8Ip8Ciq93M4GOzuW55G14ghFxx3UVTs4sfsg2/5cjzWh+dXhviQ+ HI215HPWriii9FgNJw6UkP3CXgprgoke3XQJf7AFq+GidHclTg84j5eRvbIMVwicOXGauq74 zQ2LIS2lgYLleeTtrsF+qobSrXvJmrORl9ZUetfJ8yJ+Nwbl7zX/5uwUvrKPPY4gEu8OaWPB BiYz1B6rpLS5/jS/zKNd8bez/oh4w98Pf+o5caCyqV1zNLW3fljDfKGikuIKD7gclGZvJ++Y LyYcnKjswiyC+gi9fJ3qI5ynPoL6COojiFy39OhiVzhWxLqnii6dPmYCy16Pg+ztZBcGk/5G PKHNb6tJmMAjGeWsWr6d0XGpJA4CLOFkrkkle9Ve3nmskLp6g4CIoYx9dhoZky80i7Y501hk 3sF7b2/hpRUuCAoiamoyP5sf3bHbnwfH8OATlaz77S5+vRlMQWaGxMXwr/eGgwHOzVtY+sJF R+EVf2ApAAaJKx9lblL7Vxc68x6eNHbx3rrPWLbcBRYLtom38cSy+HbfXu8dC5OW3QOrd5H3 042sd0DAsBDGvtC6XHvvOs0kLplC7cq95Cx8n7U1nsY3GU28jSd+Euddh9gIItTmwbnPSvyE xjhMCTZGuMo4HBF8fgyQdu3z5OZO0pXrT6eqPELWzL2tT3aO57P008b/tc5OZ9mitjosbQuY nsz8ii2sfzuPF18zCE26jYd+YmbDT8tb3SFx9TrrZM/yAgpvimHR4yFNVyMNbHOSSSvIIXvZ QUasjjv/+78qcziz/u8E1v/qCGszC6hzgjnMSlTaXTwx58IeN41J4ulf+vLOa4X8epMDp58Z 2/gY5j83ltjm2+nDYpj9kyrWvvYnFm4wsEaFk7p4CknFW1i5ooDnF3hYkhXXeozBa2Ym8YX7 4ZUd5D73Ptk1HswhjfEvfNzLQZzbG7/HA75WpswP49ivcsgudoI1hMRn7yKtrTF9DCvjHwyn cM0uXtraOH6SbcEPeHZOULvjb2/9EWm3sOHcMbWI7Nc+YmkWgIVJb8xi1miD2MfvZFJFAesz 1rI+KIio6eOYtTySvB/nsW3eety//CGZE7sgJvURevk61Uc4T30E9RHURxC5bg04d+7cuZ4O QkRERERERERE5Frpji4RkZ5wYC+rflXB11e8imcQ8dg9zLrCa+RFRESkn1EfQUTkmuiOLhER ERERERER6Rc0GL2IiIiIiIiIiPQLSnSJiIiIiIiIiEi/oESXiIiIiIiIiIj0C0p0iYiIiIiI iIhIv6C3LrZQWX2mS5cfNsi/W9ZzvQgb5K+y7EQqz86jsuxcKs8LBgfdgI8xoKfDuO40eM5x quabLl2H+gidS+1G51J5dh6VZedSeV7QfBwREd3RJSIiIr2ahxO5+bw043c8MX4tC2d+Qs5O Z8cWdbyQl5LXkrXVc4WZHOTNX8u8tHyKrjSbiIiIiPRKSnSJiIhIr+U+tItXlp8kdP40fpH7 A558AHYsySOvwotlOByUfljAqqf2U9Fw5XnrPizgs+Jri1lEREREeo4SXSIiItJLeSje9CXO 745j1lQrAYMsjJiZxJQoOwWf2tu5iDLW3ruR/9pUT9QzSSRarjBvTQnvrWsgJXMopk6JX0RE RES6m8boEhERkV7KQXmJhyH3WlsknixEjDSTc9SOEyvmqy3CGM78rXPBADyVrLvsjC4OZ+3H Pn0KmWF7ye2U+EVERESku+mOLhEREemdPPXU1oDZYsad+wnzEt5i3T4P/sF+UOei3SN1GVef xX1oP9lHw5n9UNC1RCwiIiIiPUx3dImIiEjvd5MF28gGrFe9hasDPHZyV5YTtej72HzB3cYs 3fU2K701q/OoLDuXyrPzqCw7l8pTRC6mRJeIiIj0ToYfgUFQXuPElJbEs8mNk0s/cUKwmcBO Wo393QIKIyfwszGXv/Wrq19f33yi1tXruV6EDfJXWXYilWfnUVl2LpXnBUr4iVygRJeIiIj0 UhbCo/zIO1iFc7alaTwuB0WH6hmSbL1owHgPdRUOvjbMhIb5erGOGvbkVXHi2BaWbG5elAu3 E16ZaiftPx9gSkTnbI2IiIiIdD0lukRERK7BTcdX4/uPbQw414ArMAFHxBIY0I5BoaQdDKJm RBI4fz/ZuUHcP96Pyo+3s7UihPvvvWgsLY+dzxbmkGedwIqsOAJafOR2eaAB8NQ3Ppbo8uB2 Aj4GJt8gUlf9kDtcF+Z3FeSzNMuXzDcmEB/S5RspItJr5H5k8OEHBqf/MYBvfessjz7mYVTM 2Z4OS0TEK0p0iYiIdFDAl0u5qfTl83/72Tdj+udf+ceY9T0YVf9iGjWOJ5Z4eDPrIxb/3ENA RDgpv7yTpMHtXICnkvX3fURBdYtpS37HEwATk1i1OgZzkLnV3WFuiwGGDwEhZkwGNHg6bXNE RHqt7VsH8vijF+6I3cFAPv2Twc7//oYbb+zBwET6PA8Vm7bz+zfKqKjygJ8vIx67n6cze/EL cE4d5KX7Sxj97gOk2Xo6GO8p0SUiItJBN5x4/9JpVTkMaKjjnE9AG98Q7xlYpyaxcGrSVWYL ISP738m4ZHoYmZ/+O5lerNE0OZVXJnsZpohIH7f5s0vvRrbbB7B9q0HaNGX8pfc48fpGlmbV tP2hLYans5MY0Zturj9VRPaKckyZqTx7bzD+BmDuirfrSDMlukRERDpooKfuMtOdeJToEhGR PuSf/xzQ5nTn190ciPQbB04eoPBkIQMHDOT2W25n5KCRnbLc0JnTWDbVA3iwb/qMVVuHMH9V PDYD8PMjsDcluQDKq6n0GcKDmeHYlN/qFtdPostTyfoZf8K+4FGenNrbar6IiPRF53xuBNff W0076zsYj9+QHopIRESkYyJvPQtcep40fMS57g9G+rxf7vwli/MWt5q2bsY6Hol75NoXbjFj tTT9f5APJl9frDYL1pbV11lC1r17sa6eRsQnW3jnj1XUOSF6yaMsnNH4iK7z0EHWrTjI4WIn brOFEVPHkbk4ktCm5VRkbeSl49HMHVbJx5vtVNfAkLQkfrRo+PmxQOv27eX3K4spPuYEswXb 1HgyF0UT6gvUHGHV1AKKmm6IXJv8KmsBMIhf/ijzJxs0P9b4zhvlVNg9mEKsxM9JYtb0Cy/d qcjayEvH4lg6x0X2z/dz+JgLd1gMT29KYoSjiFUZxxkyo4HDm2oIyEzijuOFfLDVSdjjd7Nw tvX8tq5feZDDxfW4LRYi7h3HIwuGXyiz6nKynyugoNAJISEkZVq93y+nyslZvosd+xycwQ/r xCgeWjyO6EHt3ydXLE8v9KFEl4vSd7fzzu/LqaiGgNG3cv+zSSQNa94zHk7kFrDutVIqKj2Y hg1l0k+SSZ+olKmIiHSN2qhfEvz5Dxlw9pvz0+puXdpzAYmIiHTQY/Ma2JJnsOsvA89Pe+TR Br4zToPRX+9cHhe/O/C7K87ja/jy6JhHz/+9fMfyS+ZZ+ZeVnHGf8Wo5HeYXROhgJ4fWbKdo cCQ/ejsVq58Ll39TxsRTRc5zezn53VR+8Xo4/lVFrJ23nQ1RYSyc0ZhD8PEB984j7E64h6ez g+BYIS89UsDHycOZlQB4yvnguWJMT0xjVVoQpppKcn66hQ0fD2XhDAsExbBwZzTugu387HkP mR/eRawfYIDJaMxjOLduZ/XqGsav+AGLEvyozS/glWfyyA7/AbPGNM4zZHgA5BazdoVB9Pxp zI4z43LSeOeaAT7OrygP/j5LXtjP888UULTkAf73mC38x9tlVMy0YqsuYu3Cg5gW3M2yGVZM lWWsX7iFLHM6zz5mBTwUrslnmzOKRZ+OYwR28l74hAqPmdHtLW9PDbk/zWOHLYlFn0QT6rGT t+QjfvNzM0tWx2Bt1z65Snl6oc8kuupyt/BfGwzu/cUPGBtWT9FrW1i/4ghRa+KwAu5Du3hl +UmilkzjRwl+2DcX8F9L8jCvSye1Dw6eJiIivVNg8c9whv0QtyWObwancWLyKXxr9jCABtw3 xnLW9+aeDlFERMRrfn7w/h/rOfj5QNa/ZfCXHQOZdJeSXAJn3GeY99G8K84T6Bd4PkFV7aym +kz1JfOUni71ajnXxDATGOyh4rSVZ9fEND7WSIubYIwQMt6YhdtsxuwL2G5lbFwB7xXXtJ5v 8HCmzAhqvLtqmI3Rtv2UVjghwQz1Lmr/aRDY/FKboDDSX//hRXEYmPx8AA+YDUytbpp0cTi3 jIaUu0hPaFyGNTmB1IQv+eCTKmaNCQPANMiMf9VXmOfPIj2lKbZBLZdjJmJMEGZzMIENDsLj zQRUBuNfc4ZaIHBrMcVhMSyZYW3csrDh3P9QCP+xoYSKOVZsfMWhgnqifnIbIywAVlJnhvNZ gb395V1cREFJMCnLogk1Ny3j8VvZNq+EwlMxpA5uxz5pT3m2Ux9JdNnZ+tZJIhbMZtIYX8BC 4pIfkHj+cw/Fm77E+d07mTW18Ra/gJlJTNm6kYJP7aQ+1sZtd84qchb8iT1Rd/H0M+FoJBUR EbmSge5agg/MxO8f+fhW5/P3ibsaPxjggyt4Ys8GJyIi0knibjvL7r8MZN0bA/kk1+DuNA1E f73z9fHl37/z71ecx9/H//z/32y+GdNAE+6z7lbzWP2tPBT7ULuXc80MA+v44U0JlYt5qN13 kPVvl1Fe1VjHG2o8cG9Dq7lMVvOFx/sMH0wGuFxNf5vDSZ15kN8sfJNDUUMZPdHG2LtvJXZY e5+zq+PEVzDo7uAWb382M8jmx5mK0zgJa0wD+RhghDD2ck+r+fhhtrT4f3/AAF8at6Wy3IH7 6F6WJuxt/T2LGTtgczqpdfhhDWsRd1gQVtqf6HJXOqj1CyI0rMXEsCCslGGvBJrfln2lfXLN 5XlB30h0VVdR+j/BjHDuZ1VGEccqPQTGRZO+JIlEG4CD8hIPQ+61tqggFiJGmsk5aseJldZV wsGeZXnsCB7HosVKcomIyNUZ3/wNU90BzvoEUDP61Z4OR0SkSw2o/4aAZ5/Gr+DPMBCCEidS t/QXnA1Qz7m/qqsdQG0t2MLPMfGOxju5du0ceJVvyfXA38ef30z7TbvnH8AA5iXM45U9r7Sa PnfsXP7ju//R2eFdkSnAr+0Pjh8k67kSAhdP4xczgjDhYc8zv2O9V0v3JXrBA7z8YBWH88s5 lH+EtesKiX3hAeZO7uQhlFoms7zkC5jGJ/GLNTFXzn20zPF5PLgvO6M3jEuG/rvsPunE8uwb LVe1g9p6Ozs+hdTVj7AqdxqTzGWsW7KXEx7AU09tDZgtZty5nzAv4S3W7fPgH+wHdS6crRZW T2lWHusrIvnRizHnB5oTERG5ErcljtPxGzmVXIzbEtfT4YiIdKmgn/yYG994DZ8viqCoCPO6 3xL01JUfOZK+7bXf+DBh7A08v8RETOxZbrGdo6J8AEcO941TRuldfn3Pr3kj/Q1+PO7HPJn4 JBsf3NjtSa4rcR+t4qRfGCnTmx5L9JzmRJn3dy+6nR5Mg0OIzxhH5urvs+hhXwo/LL8oB3E5 AYQOheqS0y2SSk5OHq/H3xZMZ6XKrMODoKyaSleLiQ4ndefvTDMTaK7H3mIGd9lpqr0oDlO4 BWt9DScqW0ysqMGOpfVdXldxbeV5Qd+4o6sB3Pgx9vEJxIYBhJD6VBS7Z5ex5/g40oe1mPcm C7aRDVjbrBUeajfn81/59ST+ZgIjLponbFAn3iZ5Bd21nuuByrJzqTw7j8qyc/VYee5fCK4a mPBG49+DpvZMHE0aPHrzlYh0jxs++fjSabl/hHPnYMCAHohIutqnuY0JrduTzp7/73sbDHbu GEhMrMbqEu89OubRzhlvqwuYBpvxr7dz7LiH2GEeStcVUuTxxe1ovFGmXUmmL3ax7Md2EldP IW2ULzgcHDvuItAW0OJJsyvxJfa+4fg8X0jugRDSx/hh37qPbYcs3LHAi+zQVQSkRBObtZ3s 14bx1Pxw/KvLyf2PLeyJmsLSxWGYjCGMHm+wNns/RRPGEdHwFTnZlbSzFBqNjCYx6ghbs4qI XxJNqKuK3N9+iTP5DsYOuvrXgU4ozwv6RqLL4oe/4dv6Vr3BFgJx4XQAhh+BQVBe48SUlsSz yY2zlH7ihGAzgS2+drLMIDHJw56sg0xaE9fqjq7K6iu/AeJaNZ+odfV6rhdhg/xVlp1I5dl5 VJadq6fKc9Deu/H7Rz4Afx8yv1fcxTU46IaeDkFErhf131w67exZBrhdnPO93GMn0lfV1V64 c6t5TK670zy8t8Hg01yDx+c3XOnrIn1PQjwP3pvH+jlvsmNwANEPJTP3KT9WPbudZct9WfpM +NWXMXIcc+dv551n3iHX7gE/P2wpccydH9buxIw5+U6eWrCdd55bT54dTGEhJP38HtJHXdPW tTYokszVTtavyOf579bjtliImDyB+T9pjtOX+J/cSdJzBbxy30FMtnBSF8QQfuBLaPddXUGk vXQXzuV7efnufNyGmSHfHcuTiyPbP1RUJ5RnswHnzp3r/ZeHPZWsu+9P1M6fxZPTm7KKX+xl 6aMVJL37AKk2D4eXrWetYwLLlkc25R0d5M7ZyP7k7/PsnCDwVLJ+xp+wL3iUJ8d/xdrMPOwZ 6TydeWGgeiW6+hYlEzqXyrPzqCw7V0+VZ9Dhf+eGqg85Hb+R+puTu339bRkcdAM+hu6k6G4N nnOcqmnjpL8TqY/QudQOXzvrtFR8dxW0mtYwMppTO/f3UET9Q2+tmxvXGyx80pep93j47ZuN jy/V1Q7g2xGNF1j+euwbAgJ732ljby3PnqCnCUQu6BsPXBthpDxgoTgrn7wDDuoqK8n91RFq 46OItwEYRM2IJHDnfrJz7dRVOyhat52tFSGk3Bt06fKCwpn1zK3UvZ5Pzhd6i4iIiDQyzvzt /P/XxL7K3yfu7jVJLhGR7tQQEXnJtIE1pxlYW9sD0UhX21nQ+JhL82OLAAGB57h9YuPfn+T2 jdNGERHoK4kuwDbnHube3cC2n25kccZn7DHHMO+FGJrvxzKNGscTS4ZS/dpHLE7byNpP/Ej5 5RSSBre9PPPECcxKqydv6X4qXG3PIyIi1w9LyTL+5S8TMDkOnp/m8f9WD0YkItJzvpmahscW zulXfwfHjuGOGc3AU1X4r3+zp0OTLvDpn1o/tthsapoHS8A5amt1N7GI9B1949HFbqJHF/sW 3arcuVSenUdl2bm6ozwtx5ZhKVkGQE3sb3AOfaRL19dRenSxZ+jRxb5H7XDnGFhby9nAQMIG +fP37bvx3ZHP1/Of6Omw+rTeWDf/UjCQjHQ/brGdY3dh67aurnZAr3xksVlvLM+eokcXRS7o G4PRi4iIdKFvBt+H+as3qYl9VY8qiog0ORt44ZVO7tg43LE9/1IO6Xyf5DY+tnjx3VxAr05y iYhcTp95dFFERKQz3XDqjwx0N44147bEUZVcpCSXiFz3bs6cyaD0uzEdPnjZeW7I/SM3Z87s xqikK92edJYHH/K0megSEemLdEeXiIhcdywly7AcW4Zz6CPUxP6mp8MREekV/AryuSH3j5wN CMBju/wYhUFPPM7AujpuzHpFjzL2A3enKcklIv2L7ugSEZHrit8/8rEcaxyPy33T6B6ORkSk 9/A51HgX19fzn2z12OLFal55DYCbfvNKt8QlIiLiDd3RJSIi15X6m5P5+lsL+GbwfXpUUUSk ha/nP8E3afdxLjDoivN9k3YfNb/+Dd+kTe+myERERNpPiS4REen3Gsfjqjn/NsXa6BU9HJGI SO/kCb/8I4stOWf1zrfTioiI6NFFERHprrO72wAAIABJREFU1ywly7i5cCZBh+dhnPlbT4cj ItLrWF5ehuXlZQysrfX6u0b53/iXSRPwK8jvgshERLpe6er1zJu5i4oOD1XnIG/OqyxcVt6Z YZ1X924O8xJebfw3pxB7l6ylf9EdXSIi0m8NdNdyw6kPAaiNehmPf/vuVPj/2bv3+Cbr8/H/ r+ZukjaQpNCMQzHhqHRQUPiAIJUKzAoWBNkQrAOmQwcO3Ib7gH5WPor7WX8KG2wKGyhMpchJ NixggeE4VMph8AEtxRXHqe04FFtIGklp07v5/pE2baXQFtKmh+v5ePAgvZu87yt30iT3let9 vYUQoqXQOBy0Wr4EjcNBcfRQiqLrNqXbsG412ox02kydxOWjmbfs7SWathMZGj5ep/DEkyq9 o0oDHY5o6VQnx5buJXlzLhddCpZ+dzNuzmDu76LUeagOwwcS39NIeN1vWsZA5NRoDG0stzvA LZkmjWPJeJW8j5JJlO8UakUSXUIIIZqtUq2ZK/02EFyYJf24hBCiGr4k15C6J7kAnHMT0O9L Rbf/c3RpqVyPe6weohSNwYa1CiuWB2M0IYkuUTueUrj6JWgUCOvrx4FVzizdxsrNeoa9PIZp ES6Or0hj5S9UDOtiiDLUbTRDnx4Mu6P1iRSsw3tjvZMhaqDVKWhvOxHX8kiiSwghRLMScnkL rbKWcvW+9ZRqzaihnaWSSwghbsI5NwHVarutJFe5q0veRVPgwB3lzxNZ0dg8EF3KiuWwI0XD r+cGOhrR6OX8FQ49B8VXvT+36gwPJEG7oXc+tiub3ZvtWH8az4SHjQBYE4o4PT6N3Z8NJmqs DlynWDb6MJa3x9B9+y7WbMmlwAWRCU8ze7wOgDMLV/PWepd3zO59mbdmMNbKySTVybE/7mLN ljwKdUb6PTeQjp/t4vjwibw0yQjYSXlqA8lfe69uGD+KxQm2yoGyZ8ZaDg0aQf9Tx0j7yoXD ZSBq5gimjQ2rtI+9bEzJJc8Jhi6diP2fEcTdp7vz41Q5ki+OsWrRCTJOFYHRSPfRA5kysyuW 8vt7JJU5CSX8JKkHp19PY88hJy4sjFv/Q+K6ABRzZv0+1nx0lpxcFW17C/2mRjN1Qnu0fo3U P6RHlxBCiGaj1bkltD02Cf2VVELPJwU6HCGEaBJc8VNq3YS+OqqtsyS5mpj3lgUzuH8I21Nq XyIyKs7bwOhEhoYCR1B9hSYaI48KV/7P++/qF7XbfmR2RZIL4FoWHH+lbuPczH9yOeM00v0+ Y8W28E5EdlfJPn7J+7M+jI7tXGQu3cunzh48/9FkFqZMZMrDFQmkbi9OZsn+aSx8OaLaZI3r szRWbYHhS6ewZMuj9D+Vzu6TKlD+dxNGXNI0lux/mmkjleqriBSVnI9P4P7xGOZvmkzCDB0Z iw9zrCy/VrB5LytTgoldMYXln8fzQoyLlFcOc+a2+4VV4/IJls/+ksJRsSz4fBqLl/cl9LNd LFtVqduXLQyLM49PXzlC9oBo5qZMZuHGWIaVl6l9/SWr3nMx6HdTWH7oZyz4XQ8K/pLGztN+ jNOPJNElhBCi2fBovb1hHD0XcK3LrABHI4QQjZc+LRXDutV+H9c8by7fGzbY7+MK/zqQpiEn O4iCOq4/MPJR79n39hQ5jWxRSr6F7QO8/z4bVvN213+gMOfGca4crds4N5PnwqUYMFdpieX9 ucBejBtAMWBuo5Jz1cJPXu1NN6sBU7swLJVyYyjeKYHB1eZ7VU6mXYIhfYntpQOdkX4zemL7 bgJKUbzTCm8RrnZw2RiAJdpGh6KrZF/0/s409hHe2BjLsC460BnoFmvFkpdHtr3mw1BbeZ+d 4nRYJOMmtceggLZLJOPGt+HS9rMVDfjDDJixk2cdwIypNjqGGzBZjRjKj83VQhxKMOYw7/0w 3NOX2Sk/JK67/+L0J5m6KIQQoklTCrN8UxNdnaZQ1DZGpioKIUQNTAlz0Wakg8eDK36KX8bU OByEfLoZJScb44JEnHMT/DKu8L8d27xnr6Pi6tZr64HoUnZsU9ifpjAx3p8lJ6JRC1Kg7X95 Lwe3rnl78E2aZAUbwHh37cepq8rFVgCKgmVQ16rTEWutCEe+iqGXsSKJZbRg66iQWadxFMzt DBVj6BR05bECOK9y6O2DpB1xcq0EUIsoUC24/fjnlZftBGtPOlQ6DharES7ayQNvbzFFgWCF yCGdqk/a9etFXI/trHx8NSkDIoiK7sqgkV2xhvkvTn+SRJcQQogmS38llTZfTKKg5wJcnbwn apLkEkKIWzOsTUKbkY5qtfktyQVQajZjX/Iu4eNGoT3+pd/GFf5VPl2xV+9STGZPnW47Kk5l /jwtO7ZJRVeLEtwaRh2p/Xb998A6HnI2Vd1u/REMWFL7cW7GYsCs5uLIA9qVb3SRdxVMPQ1V EjVak772435Xvedyizm2aBvJ5yKZ9f44IsOB04eZP+VCfe/Y64YEoB5Dm5tkBXUWYpfGM+jr 8xxNPcfx5L289ZcTTFgxpmJ6YyMir1BCCCGaJP2VVMIPj0LjdhByeUugwxFCiCbjetxYnHMT 6qXiqig6hm/2HORK0ga/jy38ozzRNWp03VdOtNo83GX1UOAI4kSGnEqKWxiyGiJ/BeH3g+UB 6J1QfZLrdnRpj9XoJPNIpfl9+ec5fVrB1s9y89vViR5zOLhynd6pkACuPLIv+jH7pRZw+iuV Dg/39ia5ANdZOw4/J9gsXY2Qk8+lSuPm5TihY1iVKq8agsVdrGC6x8awZ2N4Yc2PGGfNZd9u P86x9CN5dRJCCNEkuY334jb2wdkjgSv95IRKCCFqq9Rsxjk3wa/VXJVVbkyvZGfVyz7E7Tu4 33sKWN5cvq7Kb1eXRvaiBVIM0H8xjDwEj+yHe1/339g6G8PHh3Fp1V427s7j4ulsdr55hJPh kcQOr/1qhW5VxV2sUqICKriLvD+X3QG6D2iPe/9J0s6p3tURl50ku8qqjOAu9t7GDZRQ9nNt /7QUAxYL5J/MpQBw55wiecdVDEoRrmryRzq9Ak4Xec7KcdbMMrwHPe3/Jnl9Hi7AfS6T5E1X sY6LpGMtx8hbs5W5zx4kM9+7X/eFXLLzFSwRN5mmGmAydVEIIUSToRRmoSlx4Db2pVRr5psh hwIdkqh3KhdT0lj13hlyLqhou3Ri2C9jGDfkNj5YnTvGW1OPYn7taWYMr3qC5lt2+6TLu+z2 yIE8+csedPTv6t5CBJTG4SDIYb+jFRbrIiRlC2Ev/Az7O+9yPe6xBtmnuLUTGd4m9HdZPfSO qntFF8DEeJVRcSoPRN/e7YW4cwrdZjzKNHUvyYnJ7HQpWPrdzdS3BxNZ2/ftQ6nMnZmJy7fh Am/FpAPQ7cV4XnrKiGnsg8Qf38XGpz5gY1gb+j3Xl0Ed8zhd9hEiZ9kGXn+/ckZqO7M2AYqR 2PfjmdCrpiAMRM/sz7FX9vKbkQex9OzBuJdHYHFtJfmFrRiWjyG2S8W1TYN60POjgywefgKA qFee5oWxtbjD7XozbWExqxZtZ+6SIjAaiXoilucnGWu+bRnLhIeIP7+XpEkf4HABYW2IeuIR nnq4cX5QCvJ4PHWbmN2MXcgvrNfxI8JDG2Q/LUVEeKgcSz+S4+k/ciz9J/jbf9GuVRGXijui vXaSNl9MwhMcxjcPHKS0bIXFlqRdWAjBSsta0t19PI35M8/TM2EEjw/Qk/dZGn9eVsQjq8YR W8ueEG6nk5zd6SSvyOR0HkQlfifRlZ/JO5MO4hr7EE9NaE/ohVOsfeUg+WN/yPwZFkpUD5ft 1+vnDpaRzwj+Ja/D1Qub9TMM61Zjf2d5naq5bvd4tlq2BPO8uZSazXyz+2CDJdgas0A/N99b Fsz8eVqeeFLlD0uKAxaHvwT6eDYm5e8joh6puaydsJW8GU/zwkipaGzMZOqiEEKIRkfjLsBy KJZ2af8Ffx9Chz1daXt0HBq3A7exT6DDEw1G5eSmf+MaOpD4kRZM4Ua6TYrmkZ55pO3Iq+UQ Z1k5egN/3lREz5ejub+aLy/dOU5K+t7LEzO7Yo0wYBnQl9GjjOQd904lEKI50GakY1i3GvD2 0WoI12bM4vqjY/CYzGgKHA2yT3FrBQVBGE2e2562KESLkpPO4uFrWfmZEzcqeTvSOZpvoU8f SXI1djJ1UQghRKPTKusP6OxpVbYFqUVcs83A8f1FAYpKNDwn2adUOoy2VFpByUj3ewwkf5WH Cws1TmBUujJj9zTvykLqBVZVcxXtfQOZfV/lLcXk5RShbW+kIb4fv5wbxPEjEBwMXXpCqHwp L+pJ8ZChuPv0bdDKKvuS9wBvXzAReL+e6+bXc901X1EIAdbeTJiZx4eLNjArAQwRFu5/ZQTD IgIdmKiJJLqEEEI0OlrniWq3F4X/oIEjEQGlFuGwg8FowJ2ynVmv5BG9LJ7YNnr4qhgX1Jzo gmqWz761gh17+fiQidj3bWjxNpetrykhf/4z/PznFT+bzaF8/DHExtbL7loUmcbzHQ8NgrRU dECr27j5bR/P797u3Dno0uX2xmom5LnpX3I8Rf1RsE4YwbwJgY5D1JUkuoQQQjQ6Onv1TeY9 inyYbbFaG7HeU4KlXhf3UcnbsZfFb+YR+coY4rpX/Ka+esDM+98QoKLvmsMB839bSu/+RfWy v5ZC+vZUpXE47qiiyh/HU+NwED5uJAD5yTtabIWXPDf9S45nBUn4CVFBenQJIYRodNzm+27Y pobcRVHbhwIQjQgYRY85DFx2F9qYaOatGUNcL4XCqy5oY8C/p8kqOWu28dZCO/3eHMe0h2u/ EtHtyr0UxJX8GxcX+PfJlrXggKhfhrVJtOsfSUjKloDGUWo2g8eDNiMd44LXAxqLEEKI5k0S XUIIIQJK43ZgPJWIOXOOb9vVPh/iiPw9RZZYsAzGFTGZK/3/BkHS/LNlMWLrqedSem6l5b+d ZB4vokOvyn27AFQKcuxcvHA7q4ipXFy/jUUfwiN/GseEQfVaNubTqnX1C18bTQ2ye9ECaBwO TPPmonE0jkbw9qXefl0lVll9UQghRP2RqYtCCCECRinM4nsHBqNxe0/CnN3nUao1U6o1c63z 81zr/DwR4aHYZVpCC6XQc3wPzDOOsjEljMcH6bnw6V5257Tn8dFhVa+q5vH32cnstAxm4bK+ VM4VuYtVb6MttQg3QLGK2wUEK2h1wNdHWf5HO1GJ44juqOJylq1GpigYDPWXXG3dGh57XGXL J1X3MXa8rIYm/EPJycJjMlPcuy/X4x4LdDi4o/py6fTFFjttsbk6sF/DXXd5sNqqT94LIURD k0SXEEKIgFFDO1PSui8Aju8vpFQrJz+iKm2vgcxKUElatpU5r6mYutsY/ruHiG5XywHUC6x9 bCtp+ZW2JXzALIAh0Sx+uzf5u85ysdjFxTlr+Wfl27aLZPaWGHr4685UY9mKYiIjgzn+hZZ/ /APcbnjyqZJ63KNoSdxRfflmzyGCHPZAh+JTOcmlT0ulKDomgNGIO/XTKTp2bFNY/E4xVpsk 6YUQjUOQx+OR1HuZ+m5kWN4gUBom+oc0n/QvOZ7+I8fy5rTOdEyZcymM+DGuTlMA79TFWyW4 5HhWaBcWQrAi/ZsaWonq4bL9er3uIyI8lKefhg8/hGenl/Baorte99fcyeuGf9XH8TQuSMS4 IBHH6wu4NmOWX8duzJrbc/O9ZcHMn6dl5KMqf0m6nanjd6a5Hc87Ic3ohaggPbqEEEI0iJDL W/je/sHor6TSKmuJb7tUcQnh9atfef/fsE6hwCEJTXH79GmphI8bhT4tNdCh3JQ7ylvNa1yY iDYjPcDRNG/bUxTmz9NyIsP/p36j4rxVXAf2y2mlEDenkrNpF6+PXcn0Qe8yPeYD3lrVeCpt q3U5nbeG/I2UnEAHcntk6qIQQogGUdwmhtJgE9e6vMA1W8v59l6I2rrvPnhgSCkH9mvYnqJh YrxMAxK3p/WCN9CnpVKcNrTRTg28HvcYricno3HYUaU5fb3asFZhxzaFTnd56B1V6texrTYP d1k9/CcniANpGh6I9u/4QlTn4ooNzF92k0SRtTcvbYymW2Nav+hyJhsXZqOdGsu80W0IVQBD wyx801JJoksIIUS9MJxfjenkHPIH7sBt7Eup1sylH1wKdFhCNGoT40s4sF/HiuXBkugSt0Wb kY4+LZVSk4lr0xv3lwr2Je8GOoQWobzaqrz6yt9GxamsWB7M9hRFEl3iBh4PBPm5SLnjpDEk jlQBlbxNf2fx7g7MWNwPqwLo9ZgbU5ILIDufC8EdeGKqDavktxqEJLqEEEL4XVjGzzCcXw2A 4XwSjsiFAY5IiKZhYrzKKwkesrODyMkOklXMRJ25o/qSe/RfaDPSm9Tqhkp2FpoCh29Ko/CP A2kaChxB3GWtv1URH4guZcVy776EKPfFFzB7NuzZA8HB8Oij8Oc/Q6dOfhjcaMBiLLscFoxW p8NiNWKpnOBynWLZ6MNY3h5D9+27WLMllwIXRCY8zezxOu9VjqezamE6GSdduA1Guo0cyNQ5 PehYNk7Osg28dS6SaV0u8OlneeTboUNcNM+/2NW3unPBkcN8uOgkJ0+7wGDEOrIfU1+MpKMO sJ9g8cg0MstyzCtj3mUlAAr93nyaGQ8reKc17mXN+9nk5Klo21vo90w08WMtaKkUx+m+zH+m mI2vHSXjdDHuiN68tCmabs5MFk84R4fxJWRssmOaGs2D547xyW4XEc+NYvZTFt99XbsonYyT RbiNRrqPHsiUmV0rjll+NhtfSSPtmAvatyd6qqXuj8vlbJLfPMi+I04K0WMZ0pMn5wwkMrz2 j8ktj2cdSKJLCCGE3zm7J6C/koqze4Kv6bwQonb+urnY79OLRMui2jqj2prOdEBtRjrh40bi MYfxze6DTSpB19htT/GexdZXNVflsU9kaCRBL3x+/nM4cMB7uaQEtmwBvR4+/riBAtCH0bGd i+NL95LZrgfPfxSLRV9McWhZxkTNJfmVw1waGssbK2yE5maycvpe1vWMYPZ4b9lVcDC495/g 0IBHeWljGJw+xltT0vg0pivxAwA1m09eOYl21hgWx4WhtV8g+b93se7TTsweb4Sw3szeH4k7 bS9zX1WZunkEUXpAAa3i/dt07d7L22/bGbRwIi8O0ONITWPJyzvZaJtI/H3e63ToaoKUk6xc qBA5YwxP9TVQ7MJbuaZAsOs82W1+RMJvj/Lqy2lkJvyQ/71vF7/56Cw5kyxY8zNZOTsd7cxR JI63oL1wlrWzd7HMMI55z1oAlWNLU9nj6smLOwbSjTx2/nY7OaqBPrU93qqdlP/eyT5rNC9u j6SjmsfOhK0sf81Awtu9sdTqManheNaBpN2FEELcEY3bgfnkXDrs6ojG7QBADe1MbkymJLmE uA2S5BK3Q+NwYJ43F43DEehQ6swd1Rf1LhtKdhZhL/ws0OE0K+VVVvWZ6AIY+ahaZX+ieXE4 vNMPb/UvLKzi+gUFFUmuyv7xj7qNc0cUA+Y2KjlXLfzk1d50sxowtQurqART2jPh/XjmzrJh 0oHWejf9+8KFk9/p/dWuK4+MD0MLaLtY6WMt4lKOy/u7omIc3yoYwgze6quwCMatmFw1KaMo aPVl9UUGBa1O8SW5oJiMlLOUDO/HuAEGtChYYgYQO8DF0e25viG04QZCc/MwPDGCccMtmMIN WKwGX8UXGOh+XxiGiDaYS4zY+hkw2doQai/EARTsPsnJiN6MG2/BAGgjuvL4k+25tPMUOSqg nud4WhE9n7iXbkbAaCF2ks3bS6y2TmaSdqoNw2dE0tFQNsZzd2M4copjl2v5mNTmeNaSVHQJ IYS4I+GHH0HrPA6A7moq19s9FuCIhBCi5Wm1fAmtli1ByTrHlaQNgQ6nzq4kbaDtlIk45yYE OpRmIyc7iBMZGowmT733zhoVp2K11f9+hKgTRcEyqKu3d9cNVBxH0ln70Vmyc72J2hK7CqNL qlxLazFUTO9TgtEqUFxc9rPBRuykdJbPTuJ4z070GWKl/6i7iepS23l2BVw8D+Gj2lRJWoVb 9RTmXMVFBAaAYAWU9vQfcpMGX8F6DMZKl0MBBXR478uFbCfurw4zf8DhqrczGsgDrC4XDqce S0SluCPCsJBXy/sB7gtOHPowOkZU2hgRhoWz5F0A2pVtu9VjcsfHs0LLSXSpF1g7fht5M5/m hZGNrTudEEI0LUphFmqod1rMtc6zMJxfzdU+7/q2CSGEaDhKdhbGBYkAOF+aF+Bobo9q68w3 ew8FOoxmpby6akgDJJ+8i2fIAhrNldnsbSpfWyYTPPDAjVVdP/hBA05dLKM16av/xbl0lr1y CvOcMbwxPgwtKv98+QPW1ml0HZEzf8iCJ3LJSM3meOoJVq46RtRvf8i0h/3cdb5yMquOdIB2 UDRvLO3t6y1Wrco5PlXFfXu7+w4FvpN+uelj4sfj2QRrS1Vylm1g+qANJJ+uuv1iSipvjf+A WYNWMnvSdpL3uwIVpBBCNEv6K6mEHx5FWMZ03zZXpynk3b9DklxCCBEgqq0zV1atxzk3odk0 cy9P3Inb1xD9uYS4mT/9CYYN814ODobHHoM//CGgIVXh/iqXS/oIho/1TktEvcrFs3X/W3G7 VLTt2tNvwkCmvv0jXvyxjmObs6ldJsJEx06Qf+pqpaSSi0vnigi1tsFfqTJL1zA4m8+F4kob nS4KfJVpBsyGIvIqXcF99ir5dTgcWpsRS5Gdixcqbcyxk4exapVXDe7seFZoeomuc+ms2eSs VNrn5T5+kCVvXqLjjDG8kTKRF34I+xJ2sjMnIFEKIUSzo3E7CD88Cv2VVLQFX6AUZgU6JCGE EGWuxz3WbKb9tZ0yEeOCREl23aG/JBXz9z1FMp1QBMR998Hu3VBaCm43bN7spxUX/UTbzkBo kZ3T51RQizmz6hiZqg63s7j2SZWvD5I4dhspX5UliJxOTp8rxmw13ZCvqJ6OqMe6Evz5MVK+ cAEqebuPsOe4kQdH1yE7VAPT8Eiiiv/NxveyKVDBfTmb5NkbeOuPF7wJNqUDfQYpnNx4lMzL Ku4L2SRvvFDTsFXdE8n9Pa+ye1kmF12APZeUv/wbV0wk/cNrvLXXHR/PCk1s6qKTPYsyMf+k Lyw5W2m7yslN/8Y19CHiR3qX4TRNiuaR3RtI25FH7LPVLI3pyiV55jb+2XMEL71su3UJnxBC tFDlzeVLtWZKtWYcPRegUR1cs82iVCurYgkhRKCFbNvK9UfHBDoMv7o2YxYh27ZiXJCI68nJ TWoFycZGFrcQgRYUFOgIbmJAP54YvZO1zySxr52JyCdjmPYLPYvn7SXxTR3zX7bVPMY9A5k2 Yy9rXl5DSp4Kej3W4X2ZNiOi1okZQ8xD/GLmXta8spadeaCNaE/0a48yrtcd3buqwnsw9W0X axem8urQItxGI90fHsyMX5bHqaPfLx8i+pU0ljyWjtZqI3Zmb2xf/LsOM5LDiHtrBK43D7Ng VCpuxUCHof15YU6P2uda/HA8ywV5PHWZbRtYBTt28taOCGa/DCsfP0Fk0kTGdQewkzL1rxwf PZGXJlVMXD2zaC2L/tOPBYsiMVTp0eXinwnJfFzYjxcX9qZj2ZzRC/mF9Rp/RHhog+ynpYgI D5Vj6UdyPP2nuRxLw/nVmE7OoTBiMo7IhQGLo7kcT39oFxZCsNJYPzE2XyWqh8v26/W6D/mM 4F8t5XXDsDaJsBemc/3RMfXagD4Qx9O4IJFSk5lrM2Y16H7rW0t5bjYUOZ4Vyt9HhBBNaeqi 8ywfv+di2OzeFaselFOLcNjBYDTgTtnO9AGrWXVEJbSNHgq+W3pYxJllO1mb04PnX69Icgkh hKigv5JKWMbP0LgdaAvSAx2OEC3a/HlaBvcPocAhSU5RlXHhG4B32mJz45yb0OySXEIIIRpG E5m6qJK57DAXR49gmhXIv8VVWxux3lOCpdrObSqOz1L5c2oR9y8fTLfvXKehsuCSbfcfOZb+ JcfTf5rksbz6BbS5z3s5fCTk/wTuehzdXY/jvy4Bt6dJHs96UKI2mSJs4UcZ6RpysoPYnqIp W9lMCNA4HLienIx+Xyqu+CmBDqdehaRsAZpnQk8IIYT/NYlEl/urw2w8buOpFdX02gJQ9JjD INvuQhsXzbwY7+Yz213QxkDlLjKXzircH63yz2XpDFvat0pFl0xdbFqkVNm/5Hj6T2M/lvpv /k6r8++juX6eUn0HCjtMQJ//Dwznk7BHLcfVqeyE6e4/e/8P8H1p7MezIbULCwl0CCIAJsaX cGC/jhXLgyXRJXxKzWaccxOaTQP6mwlJ2ULbqZMoNZu5HJ1JqVn6QwohhLi1JjF1Meezs+Sc OsE7Iz9g9vAPmD3hIGeK7ex89gPe2eQEjNh66rmUnltpmqKTzONFdOhlqdS4TKHncyOY+koM URcOs+qjvADcGyGECJzgb/9F+NHHCclNRuc4QsjlrbRJfxrD+SQAlOvZAY5QCPFdE+NVjCYP JzI0HEhrEh/dRD3TOByBDqHBXI97jOIhQ9E4HJgS5gQ6HFELryZo+X73EHm9EkIETJN49en2 zDgWfhLPa+snev8t7U83XRjDFv6IaaONgELP8T0w7z/KxpQ8CvKdZK7ay+6c9gwfHXbjgGE2 4l++m4IVqSR/Ld+MCiFaDn3+rmq3F7d5gNyYf+Hs3rwrA4RoqiaVVXKtX9skivFFPVKys+jQ vSNhL0wPdCgN5krSBlxPTqYgMXALo4i6KXAEsT1FmiELIQKjSSS6MBowtav0r70OAG0bIwbv RbS9BjIroRP5721lTtwGVm7XM/x3jxDdrvohDUMGEx9XxM75R8kpbqD7IYQQAdb67O+r3V7U 9iHUUFm+XYjG6tnpJQB8vE6RpvQtnHneXO+FprNw+h0rNZuxL3lXpi3WwokMDTu2BTbBNCrO m5iXii4hRKA0za8Fw3vz0v7e39nufjXNAAAgAElEQVSoYBkZzeyR0dXfRokgfvO0Sht0RL0c z5L6ilEIIRqBkMtbcRv7+JJYJa17ohRduuF6Ja0iGzo0IUQdWG0eRj6qsmObwvq1Cs/NKAl0 SCJANHY7pSZTi61uUrKzMC58A/s7ywMdSqP03rJgPl6nMP91d8BeJx6ILvVNt87JDsJq839S 1rA2Cf3uf4DHjfGe3nz7qzl4tNqabyiEaBEkzS6EEM1Qq3NL6LCrI22PTcRwYbVvu733Mgo7 TKxy3cIOEynsOPG7QwghGpnyRvQr322a31MK/8jbvINv9hxqsdVNbWb9DMPaJMzSr6taB/d7 T++GPFga0DiGRHv3Xx9VXa2WLSHshemE/m0DbNqE8a3XaTvlCb/vRwjRdEmiSwghmgGlMAv9 lVTfz6qhMxq3w1vNFWKr2B7amav3fkDu0H+RN2gPuTFfcfXeDwIQsRCirkbFqfTqXcrIR9UG n74YfOYU5v/5NeGTxtHmZ08TsuWTBt2/qEq1tdyp5o43vJVsrZYvRcnOCnA0jUt5BdVdVg+9 owKb6CqfvlgffbpCk/96wzb9Z39HOf8fv+9LCNE0yVeCQgjRhCmFWbQ9NgmtMx01tDO5Mf8C 4Hq7x8iN+ddN+26phs6ohpZ7oiREU7Vzb1HD79TjIfyJcShZZ32bQv+2gSurP+b6qNENH08L pHE4CB83kmszZuF6cnKgwwkod1Rf7O8sx93n3had8KvO/n3eGoYHogOb5Kocw4H9/q+rUHKq XyE66Fun3/clhGiapKJLCCGaEI3bgeF8xVRENbQzSuE5SoNNFLUdisbtqPI7IYS4U/o9/6iS 5CoXunlTAKJpmVotX4I2I51Wf34n0KE0Cq74Kbij+gY6jEZnR1n1VHk1VSBZbR569S6lwBHk l+mL+rSKqvWS73+3VzMQFETrPyzEPG8uGofjxt8LcQtn3l7L9EkHybntPx0nO595l9mJ1Sdh 71TB+mSmD3jX+++ZY+TVy16al9uv6HLayTySR6E+jO4DLJh0foxKCCHEDcyZcwi9sNo7JdHU F7fR+yE///6/+y4L4W9uZzFuvc63yrFoGYwLEtGlfY4+LZWC3/7/1V5Hk1uxsIU+LZUSa2ep sKknIZ9uBqDgjZbZgP5mNA4HxoWJlNxl49qMWYEOJ6AKHEG+6qkhjaCiCyr6hDnuYKq1cUEi rZYvQeNwcOn0RUrNZpxzfoP2y2NoruT7ruf89csYf+d9rQpdm8Q3uw/K61Fzpzo5tnQvyZtz uehSsPS7m3FzBnN/l7pPl+0wfCDxPY2E3/ZMWwORU6MxtLHc7gC3ZJo0jiXjVfI+SiYxtebr i9okuortpL25i09cvXjtzUgMADkneGd6GhmXvVfRdo9k2p9i6Bder7EKIUSLonWmUxps9lVm BZU4fH23NG6773qS5BJ3TiUn5SCfXrAy7VkbWgBXLikv7yRlvwu3oqPj6MFMT4ikY2BXrRd+ ZlibhG7/PrTHv6QgcQFF0TEA6Pelotv/OQAeTfXVGMUD7vddDh83CvD2jvpm98EW2yi9vnyz 9xCGtUm+x0d46dJSabVsCR6dDsP6jyht05brjzzaIpNe21PKpi0OKcVk9v8qh7fjtUT3HY8R 8ulmNA4H7t59UHKyKDX3pfj+weQe/ze6/fsI18PliG6UdOmG66mpmBPmoHE4qiS5NA6HvCYF gssFCQmwfz8oCowYAa+/7qfBVc4s3cbKzXqGvTyGaREujq9IY+UvVAzrYogy1G00Q58eDOtz J/EoWIf3xnonQ9RAq1PQymewWqsh0aVyZtk2Vn2q0m2qAe8CtcX88+3DZATbmLCoL9bC82xb dIw1f+lB1JwIZFFXIYS4M/orqYRlTEcpzOJa55k4Ir3f4Du7J+DsniBTEoXf5W3axqLECxAT RiGgRSVz6S6SjyhEPdUPW/EF9m1KY2WXDsybGhbocMVt0Kelokv7HG1GOtemz/QlTHRpn2NY 550OHXw83bfd+VICAO6oeyk1mwk+d5ZWK5b5xnPf249rP5sJeE8irz86Bl1aKng8vhNKjcNB u/6RuKPupTh6KM65CQ12f5sjV/yUQIfQ6FyPe4xSsxmNw4H2+JcA6FN3E1Rayrc//0WAo2tY +9O8Z8AjG8G0xduhcTgI2bYF44JEnHN+43u+l1cxfjfJ69GHUDT8YQgPpSS/EPAm2q8kbagy ddGwNgnTvLlcmz6La9NnScKrIU2eDJsqTXE/cADsdliy5M7HdmWze7Md60/jmfCwEQBrQhGn x6ex+7PBRI3VgesUy0YfxvL2GLpv38WaLbkUuCAy4Wlmj/eWqZ9ZuJq31ru8Y3bvy7w1g7FW TiapTo79cRdrtuRRqDPS77mBdPxsF8eHT+SlSUbATspTG0j+2nt1w/hRLE6wVRrAxZ4Zazk0 aAT9Tx0j7SsXDpeBqJkjmDY2rNI+9rIxJZc8Jxi6dCL2f0YQd59/S+ldXxxj1aITZJwqAqOR 7qMHMmVmVyzl9/dIKnMSSvhJUg9Ov57GnkNOXFgYt/6HxHUBKObM+n2s+egsObkq2vYW+k2N ZuqE9o0yB3TrRJeax9HdLqzPjeOlZ8vK8OxnOHQI+r0ygtgYHRBBhP0Cv/k4mxw1gm6SZRRC iDrRuB0o17N8lVlBJQ6UwixKg02UhFQktSTBJeqHnX9uukBw3Aj+97c9MAEUZ5O2w0W3WRN5 4SkjoNLf+Ffe+uwsF6f2o2OAIxY3p2Rnod/vTWi5e/fxnSzq0j7HuCAR8DbzLj9pLIyfjDuq LyV9+lY5kfzuSaXjzUVcmzYdJTsbj8lE8cBBvt+Vms1cSdoAUOUEU5vxJRqHA31aKhr7VV+i S8nOovW7SymKjqF4yFA58bwF87y5XH90jFRy3UTw15nV9mMK/ev6Fpfoem5GCWazp1H057od oWuTMM+bC0BIyhbfa9ftPPcrv6bo0j73TnFdkEipydwiq/384ttvYdgw7+XWrWHPnltv/+ab qkmucn/9Kxw8WPtxbuY/uZxxGul3n7FiW3gnIrur/P34JRhrA30YHdu5OL50L5ntevD8R7FY 9MUUh1YkkLq9OJklv1Qp3LyN33x8425cn6WxagvELp1CXI8iji3axZqTKpbh5UmPMOKSphGr qhx7LYlqhgBFJefjE/T53Rjm99KRt2kriYsPc+zhWPoZoGDzXlamBDNhxRSGRZRw5r3tLHrl MJGbov2XW7l8guWzv4TnHmXBpPZoczJZ+YtdLDOOY94zZXkeWxgWZyafvmLHMCSaua9aaOVS CY4oG+PrL1n1novoP01h3j06XF+ns/xXaezs90PiuvspTj+qoaLLRV6+ge6DKuaautMvcIYO xA+qeIKYeloIzXcibf+EEKL2lMIszJlzCbm85YYVE6/0W8/1do8FOELRIqhXuZhjoM8vypJc AF9d4IzLQuzD5R8gFayDOhC68Sr5KjJ9sZHQ7f8c7fF0SqL6+E4GDetW+xJa16bP9F3XHdUX 59wE3FF9qzTxLoqOqfWJZMndPSm5u+ctr1P5BLMoOoZLpy96K70q0ZdNN2u1bAnFQ4aSt3kH 4E2SBTns0lenTPlxCl2ziktnLtV8gxYoqLCw2u3aL4/RoXtH7O+8y/W4lvFe2juqlNcSG0dv rtoI2bYV7fEvfQnwwvgphKZswRU/2a/Vi/Yl71IYP5lWy5ZQWGlcfVqqJJDrQlXh//7Pe7ny lxM32+5yVT+Oy1W3cW4mz4VLMWCu0hLL+3OBvRg3oFUMmNuo5Fy1MG9p77JKre/MaVRAqyi4 q/1co3Iy7RIMeYjYXjpAR78ZPdmXkkuVe6d4pxTeqqpJO7hv2RhgibbRYWEm2RehX3cwjX2E N4YrmMIUQEe3WCuWjy6QbYdufmoNlffZKU6HRfLipPYYFKBLJOPGf0Xi9rPkTLV4j02YATN2 TltH8cbUsjYWlfd/tRCHEow5zHs/DPf0ZXZK422fUmOPLq2iQqUvBnKO5OLu1ZvISslTSprm NwdCCNHQ9FdSKWrr/WClhnZGd2UvQFnfLQelWu+buyS5RENyo2DWV/x88ch5HF260rNdpSsF K6AWcecdV+qB/QIpb+5j9347hYoB68P9eGp2b6x17NEBxWT8dgPvZPZk/pqBDVK5pvnmMqbE +XDsMGi1mB4cTsH8xCrXUbKzUP6TjcZu9520G9YmEfbCdAAuDHoMPvW+rlyPewzt8S9x97m3 ygn+9bjHAnLCX2o237DfougYnHMT0O9LpejBihPN8ooO1dYZ15OTW/xUR1OCt7rl2owXAhxJ 41XSrfoyAk+rVjf0abKMHYknKIji6KG4npwsCdUAat//+yjZWQC+x6LUbPYlvf3tuwl9fVoq 4eNGodo645ybgOvJyfWy32aldWs4csR7WVFq3n7XXWC1Qk5O1XH694ff/a7249SVClS+uaJg GdS16nTEWivCka9i6GWsSGIZLdg6KmTWaRwFcztDxRg6BV15rADOqxx6+yBpR5xcKwHUIgpU C24/pljysp1g7UmHSsfBYjXCRTt54O0tpigQrBA5pFP1Sbt+vYjrsZ2Vj68mZUAEUdFdGTSy K9ZG2tHi1okupQ0drUX8c1cu7vvao3Vms/szJx2esFV86wvkHLpEQbuu1M8aA0II0TQohdm0 PvdHKP6atp5WXP/eGFydvB+ejKcTMZxfjVKYxTdDDvqmKdr7vIfb2FemJYoAMmAJc3H6pBP6 GEHN45+77JgH2KokegpO5VEYZqHxTTJzkfbbv7Oz5F6mf9STiOJcPn1tF8veNjL/ZVvt+kao KgXnstn3l8Ps/LwI7qrvmCu0eX4a+j3/8P3c+osvUC78h6vvfghUnJABFA8Z6ksaufvci2vQ UD451o2dh4bxkiMIk9mDO6qvbxphY1V+clldIqvUZELJzqLUVPFMa7VsCSHbtra4BMWVVetp vXxJi0/43YrHaKLg/3sL0/++5Nvm7h3F1Q/W4lGCqzxXgk+k+6bSVk5stFq+FI/ZTNGQoS3m udXQlOwsPOYwX8Wnu3cf8Hj4dvosPObAnCWrVhtKdha6famS6KoNRYH/+q+6bV+8GJ57Dq5e 9W7r3Bl++9u6jXMzFgNmNRdHHuD7Us5F3lUw9TRUee/XmvQ33r626r2ep5hji7aRfC6SWe+P IzIcOH2Y+VMu1PeOvW5IAOoxtLlJVlBnIXZpPIO+Ps/R1HMcT97LW385wYQVYxhWn134b1MN FV1h3D/aQsrCrfzmUBta2a9yUbVVNE4rdpKx7iBrP7LTcertZkqFEKJ5aHvsR2idJwAIAUJy vcvBuzpNRinMQinMQg21oRRW9OOSyi0RcIqF/kMN7Hx7G++ctWG5eJa0c2HEzm/vu4rrq3Q+ /EsuoYP7Nb73+gun2HfQROyafkRaAboyYebdHH35JMd+YeP+WlR1XXz/rySug+5xfZn2zEmW 7azvoL00dnuVJFe5kK3Jvssl1s6UmkyURN1bpfrJHdUX+6c7WDVFx45tCl3WunluRkmDxF1f rs2YxbUZs9BmpKNaKxIOoSlb0O3/HH1aKqrVhsvmnX4UkrIFgoKq9PkyJH2A4aMPIP8bLB3v 4tpPf0bh4z8KwL25c6qtM47EhYEOo9H79vkXcMVPIfjU13hCQ71JlGpcPpqJLi3V+/yqlNAy J8zxXb50+qLvuaTNSK8yzVfUXUjKFlotX4o+LRXH6wt8/bEciQsDmlQsio4h91jmDSuZGtYm odo6y5RGf/nRj2D8ePjyS28iq68f/566tMdqTCfziB16leUm8s9z+rSC7Ul/ld/oMYeDK9eJ G0vZitR5ZF/0Y/ZLLeD0Vyodxvb2JrkA11k7Dj8n2CxdjXAon0sqvr5feTlO6GitUuVVQ7C4 ixVM99gYdo+NYc/2Y+ezG9i3286wRrhQUY1TFy2TYnmRI3y6Mw9Xp7uZ8Mxg7i+fq1mSy74V ZykeMJAZP5V6LiFEy6VzHPYluSoL+WYrrk6TudZ5FoURk33TFoVoPBS6zRjBhIu7SN6YTobe SNQvRxB3T9mv7Zksf/YgmWE2pj5bywqpBuQ+mcslo4XRlb5N1PZqR0TRMbLPwf29ah6j4zMT WfKs93LB+pP1Eme1iouq3x4U5Luo2jrfsj/TxHiVHdsUVr4b3OQTXeW+m1y4uuRdtBnpN/TU MS5IRJuRDkB+8nZQVcJm/9z3e93Zs+j2f447shclkd9vmOD9QJ+W6lvtUtROaVgYxQPuv/V1 yqbRVp5Kq3E4cM5NQHvcu3BC+TFXsrP43rDBlJrNFEfHcGXV+nqNv7nSOOzo01IpNZnQFFR0 c24slXOVe4FpHA5M8+aicTgoio7B/s7yRhNnk6bRQL9+/h9XZ2P4+DAWrdrLRms00TYXGcuO cDI8klnDa79aoVv1tmkqUQEV3EUq7mDQ6hRAofuA9riXniTtnI1hVhfHlp0kW6FiJptaNgYq bqAEcBervr5dNVIMWCyQfzKXAoyE5pwiecdVDAq47FSqViu723oFnC7ynCpmfXmcNbMM70HP ZYdJXt+T6U9Z0J7LJHnTVaw/jq11m4a8NVtJ3N6e6YsHEhmu4L6QS3a+giWizn0iGkSNiS4w 0G1SDC9Mqu5XNia8H4+5u7HRffAVQoiGFFTy7U22OwF8FVxCNEqG9sQujCf2u70tAMI6Efti DOMejqRb4/vCDrezCLfRiFnNZeOkZHZaBrPwbSMmfREOey0HCVCVWmm79qidu6Bknauyveih EbUeY1Scyl1WDznZQWxPUZrsimu3oto6o9o639Dr63rcY3hMZm8yK+peWv3pj9XeXn9gX5NJ dCnZWbSZ6v3Q/c3ug3KiXc9KzeZqp4ZqChzeqW053t545bQZ6ZgS5lIc7Z1GLBVfFbQZ6bRa vhTt8S/5Zo93Vb3yRNL1uLGkpLXl46kK8193Y7V5AhnqTV2bPotWy94hOPuc/O01egrdZjzK NHUvyYnJ7HQpWPrdzdS3BxNZ2zzXoVTmzsys1Fj+Am/FeL886fZiPC89ZcQ09kHij+9i41Mf sDGsDf2e68ugjnmcLvvckLNsA6+/X/nDxnZmbQIUI7HvxzOhxi/bDETP7M+xV/bym5EHsfTs wbiXR2BxbSX5ha0Ylo8htkvFtU2DetDzo4MsHu79cj3qlad5YWwt7nC73kxbWMyqRduZu6QI jEainojl+UnGmm9bxjLhIeLP7yVp0gc4XEBYG6KeeISnHq59YrEhBXk8nsb5ShMAF/KrX7nF XyLCQxtkPy1FRHioHEs/kuNZd1pnOq2ylqIt+JIr/TbQPjXyhutcsz2P4/u/D0B0zYc8Nyu0 CwshWAmq+YotiGvzVuausvDSmkgyE/7OobD+/GKOwscj96JNfJqpQ+o2XsH6ZH6THEFCpWb0 Jaqn/o773/4GP/855OZ6f46KgqQkuO++Wg/xhz/A7Nkwbhx88kn9hNkkvPQSLFhw4/bFi+FX v/JOobnvPu8S9g891ODh1crTT8OHH8qD2VicO+f9v0sX7/8ffADPPOO9XPkxOnfOOz3r3nsr rtuS2O3Qpk3Fz2fP3nAcHn8ckpPh/fe9T/NGy273Pp7lr8F79nj/Jl99tWU+tqIqNZe1E7aS N+NpXhjZ2Ho5iMpuXdGlZrNqQirHb1JZX4Xexk82xhAlj7cQooUI/+cjaEoKAAguPIez20sY z7zl+73b2Jtvu/wyUOEJUTtN/L1eG2ZAa3fhUMKIXTiRWAD7CQqK9Fj92FWh3pKtDz0KJ84S 8U0WBAdzoU0n7/Y67G/U2CBmzw4hORkOHbveaKsl6lto9+/Tpprt+V16Urr3EN/75BP45BNK TaYq00FDtm2t0ucrkPQ/jCds127yXn0TtREl+FvsFw7Gsl6FZfddEzMK3ar1ZX3kbLjKthv/ vALjAu9qqdemz/T1Vqs8HdKwbjWtli1Bm5NFSVsLrh9P5dtfzeFOFJQtQtHQlOwsDOtWV1oc Qo95+kwAvp0+C9XY/obXsGEPKyQn61i3QeWRx4r9Fov/n5t6sPb0xd92we8J2bYVPvgA+zvL q0x3bGzKiyqEH+Wks3jqCUwJY5j6sAHHjnSO5lsY3acRfRAS1aph6mIxrlwXBRiwDo4gslcb DDd7TJUwwuXxFkI0Uxq3g1ZZSyhuO9TXZ8vZfR7B17P4tvMs1NDOFLWNwXXXM7QP/g95Li3F 5oEBjlqI2mja7/XaSAsdXJmcPgdR3b3b3Om5ZBssDPvO6onufDt5TgVLl0bYciGyrCL0Nk7Y TGYPTzyp8vE6hRXLg3kt0e3n4JqGwh9NQr8vFUPS+75t386aTdHQYWgcDuzvLPf19CqnT0ul 7ZSJALienIx9ybsNGvN3lTfJFo1TdX2+wNtX7vqjY9ClpVaZzmhc8Dqh61bjvrc/+tTdvu3B Dgem11+lpPvdXH/s8duO5/cLgtmwTuG1191MjG+Yacutli3BPG8u4O3BVZ7Uq2nhhAeiSwE4 sF9TvwH6mX3Je5gS5mBYt7pKj8DKSUzRjFl7M2FmHh8u2sCsBDBEWLj/lREMiwh0YKImt050 KT146gOF7n87QdqOU+w5YSFqdE8eHHs3UV0a51xMIYTwN8P5JMIypgPgul7RUP5al1k3XFcN tUF4T4pb4jffomlq6u/17XowPPooaxcdo+fLPYkovsAnS89iGPsoUd/pj3py6Se8s70D0z4f xf2VE3aqirusou1a2bliiVPFXYdGr4H23IwSPl6neE96W2iiC8C+eCkF89+gQ+m3XNSH4TG0 ArwJiptVYhQPGYpu/+dVtoWkbME8by5F0TEUD3mw3qs4lOws6QnUhFWX/ALv46pxOKokuSoz J8xB7drNlxwzrE1CyckGqFQt5e1/FVTWzL2kd19fguVAmoYCR5BfqziNb7yGYW0SmitXULt1 8yaLH3jQF0v5/64nJ1d7n2/GavPQq3cpX53QNKl+gqVmM/Yl71KQuLDqYgXDB1MYPwXnnARJ eDVrCtYJI5g3IdBxiLqqsRm96Z6uxL7cldgXXZzZfZJ9n53kw6kHobuNR+aMILZX0/gAKIQQ daF1pvsayLtN9wJwvd0YCiMmBzIsIepF036vN3B/wiPkvbmPlT8+TIFipFvcQ8yaEVHrqq2C jVuZszC30pZcXh9+DDAy7P14nqjFyo2B1juqlPmvu5vMyWN9KjWbIbwDnlp84VAUHUPRZu+X F0p2lm+7Pi3VOz0rOwnVaquyXZf2OUUPxlA8ZKjfYrY8PopSk5krq9ZLwqsZuZK0ASU7C+PC NzCsTbrh98qF82gqrZphWLval3Qtjh7qey6YfzPHtz0/eTtF0THkZAexNGMED7EXxlVsB28C LTjjOAAFiQtuSKSVmsMofHKyL0FTnkjTfn0S46KKFgzB//qKsJnPoUZ0Ijf934A3qZd79F+3 9Twd8qA30XUgTdPkXqsqJ7P0aaloHA5aLVuCknWOK0kbAhiZEKI6tVh1sYzOgLVXON1znDiy C8j4KpfsCyo06g+/QghRN8ZTibTKXgLA5aGZlGrNuI19yY35F2qonHyIZq6pvteHRRD35kTi arha1CtPs/yVG7ebJo1jeXWrS5cpaSLnY8/NKAl0CE1a5RN3R+JCXPFT0O1LpfjBiulKoWtX Y1i3GuOCRByvL+DaDG9lr5KdhcccdluVHYa1Sd4km9UmSa5mSLV15tqzM6pNdH37qzm4o+71 /eyKn0xR2fOtxFrxXHD3qZgOWWr2Ln+7PUVh2E32qT2e7kuM3SyRVhLVpyIxVimRVi2NpkrV 4e0+T0fFqaxYHsyObU278tQVP4Wi6BjMCXN8rwFAWe+2zlLhJUQjUHOiq9jJmc8y2b35JMeO uNB2iaDf2AeZN7YH1ka4zLgQQtwJw4UkNG4HbmMfgkrsoPV+WJEkl2jW5L1eiBu4o/pW6bcE 3moWj9mMbl8qJZWSD+aEOYRs24o7qi/2Je/ecLtqeTwEFboIcjgoNZlq7HEkmi73vf0oePV1 Wr/9ezRXr+LR6XA9/SwF816rcr2bTZGt7rlxIE3DfPaw+J3iG/pzOd5Y6EtwVZdI0zjsvoQZ VCTSbpbsKvjf3/olCftAdClGk4ec7CBysv075bKhqbbON1RytZ06iSCHnWvTZ3Ft+ixfwivo eiFoFDy6JtAOQIhmosZVF1fGbeefxQasg2zE/bYHfXoZvDey27lor3RdRYfFamh8zV2FEKIa GreDkMtbMJ5OxBG5gOvtvH0m7FHeRsTlfbiEaPbkvV6IWrtZL6Zy2ox0Sk0V1Rxhs34GQUG4 o/pWmSrW5vlphG76GEpKKOlxD86E1+rU70g0Pd++8CLfvvAiEbi46AmFoKA7Gm/HNm+lbXmT 98pulmitKZFmSPqAsNk/v3G8vvfdbpg3GBJdyo5tCgfSNFhtTaRcthaU7CzUu2zosrNotewd rk2fhe7oEUwJc9AdPgRA0fCHsf/+HancFKIBBHk8npun0tVTLBu6i2O1WQFWZ7uxuWsTU9/L Jpcv+doil2euBy12qet60tKOp/F0IsZT3qXAXZ0m+xJc/tDSjmV9k+NZoV1YCMHKnZ0c3aCF vdffjhLVw2X79Xrdh3xG8K9AvW7o01KrrMwWYalYEeHS6YuUms0Y33itSh8kAE+r1lw6mYUn JLTBYq0LeR32H38cy+0pCtOm6ujVu5Sde4v8FJmX+Tf/jWH1hwS5rqFGdOLbX/4316ZN99v4 Odne9zB/VXM1tudmeX8/V/wUvhc7FO2x/6vy++ujx3Llw3X1su/y9xEhRI2rLnblqTU/ZFxt ku2KHksL++ArhGg6Qi5vRXGd862U6IqYjD4/FVenybg61e9qWkI0avJeL4TfVE5yAXyz5yC6 faloChy+ai79/n033C7o2rdoj6dTPHBQg8QpmrYDaRoARo2+sZrrTjne+B2ON35H0LVv8bRq 7ffxm/J0xdooio6BaAhyFukV9k8AACAASURBVNyQ5ALQpaUGICohWp4aenQpmLpYMDVMLEII 4Xcat4PvHRiMUuhdTauw0xRKtWbU0M7k3b8jwNEJ0RjIe70Q9aW6Pl+U3iSrfIdT2UTLcZfV Q6/epfW6cmF9JLlalJv9PWs0DRuHEC2U/KUJIZodpTALjdsB4E1qhdhQQ204ei4IcGRCCCFa uqIRsTdsK23bluL7+gcgGtEUPTejhJ17i+gd5f+KLuEfntZGigcPuWF70UM/CEA0QrQ8kugS QjQb+iuphB8eRfvU7xNyebNv+9U+75Ibk8m1LrMo1cqSz0KIluHjdQqvJsjSAY2N87//h2s/ /Rml4eF49CEU/9dArv7pLxBc82LoQoimw/77dyj6QSwefQie1kYKx47H8ebvAx2WEC2CvKMK IZqMoNLrgAaPpvrlmYML0tFfSaU02IRyPdu3XQ2V1W2EEC1LgSOIX83yvlY+O72k2ffFaWoc C/6AY8EfAh2GEKIelfT8PvnrkwMdhhAtkiS6hBCNnrbgKObM/0Z39SAAReE/4FrnnxOS+wlK YRb5A7cD3v5b5f9L5ZYQoiUzmT088aTKx+sUNqwL5tdz3YEOSQghhBCiQcjURSFEo2f+arYv yQWgz/8HbY/+CMP5JPRXUqv045LpiUII4TUpvgSAFctlqUwhhBBCtByS6BJCNGpBJU50jsM3 bPcEabnWeSa5Mf+SxJYQQlTjgehSevUupcARxIa1kuwSQjQuOdlBfLxOXpuEEP4niS4hRKOm Kfm22u2e4FY4IhdK/y0hhLiF52Z4q7o2rJNuFUKIxuWnU3T8apaO7SmS7BJC+JckuoQQjZo+ /7NqtxdZZHlmIYSoyai4UowmDwfSNJzIkI99QojGY9ToUgAOpMlrkxDCv+RVRQjR6CiFWb7L rk5TuGabTnGboXg0IXiCjVxv/ziOSFmeWQghamIye5gUrwLw3jKp6hKiqdqwVmHaVF2zSgqN ivO+Nu3YJhVdQgj/kk88QohGxXgqEePpRK70W8/1do8B4Pj+4gBHJYQQTdez00tYsVw+8gnR lP0/9u49Luoqf/z4ixlmBqaGi0wiGKRgwopa9PWWJF42L5HFWuatom2tn+7q1uqu6Ubf0r65 X8vStuwbZW4tblnGbmlGGm2piaK2UiiGeY0pEBsVmBycy4f5/TFcBQR0cLi8n48HD53PfObM +RwOM+/P+3PO+bzxmi/5B1TcM03xdlU8Jq6/e8SpqdAHU6EPEZEub1dJCNFJdJ5LAs1Rilh3 5xpe3tJ5vhyE6GwMR91JLgCNJc/LtRFCiM4hItJFzr7zvLjK7u2qCCEuQXmZT83U4+EJlV6u jWdNSHIfj6zTJYTwpI5zee9UIRuW5bA1pxSrr56wQX1IXjSM+O7VOygUZ2aTvvoYpiIFTa+e jHo0keThem/WWgjRCuci5+JXspHy2OXYuiV6uzpCCNFpyEgJITquzZnuJNf42xQCAjvX3/Lw BIX331WzK1vFw7O9XRshRGfRQUZ0lZK5MIsdzuuZ+c50lr+ZSLy1gDVP5mGu2sOxP4dVy04S Nnsif8mcwu/vgh2pWWSZvFpxIcRF+J36iB6fh9WsyVWpCeSn4bslySWEEEIIUWVntnu0082d bDQX1I7oknW6hBCe1DESXaVnKdNHcvv8ePr3MhAQHUnSjEg0B0sw2QEUDn1wGOuIwUwfbyQg xEDU1ATGxZjJ3mJuvExrCRsefIvUZYWUX8ljEUIA7mmK3XKnonKUcfX3q7xdHSGEEEKIdmnL J+5TturF2zuTgEAX/eJk+qIQwrM6xtTFoN5Mf6V3vU1lxRYcIaEEqgEsFB5R6HG7EU3NHgai ++rZcNCMFSP1JzBa2LM0ix3Bg5m/IJKAK3AIQoj6zne/g6tOvIwl+gnO9Zrr7eoIIYQQQrQ7 +QdUlJf5cG2Eq9NOQf7jQiemQh/i+ne+EWtCCO/oGImuCzhO5LN29Vmi54whSg0oNspKQW/Q 48jczNwnzSSkTWdssA4O2rFCnUSXjWNpWawz9eH3aXGE1blwEB7if0Xqf6XepyuQtvSsNm3P s1/Dob/CTStBGwQhQ6FXGYFAYNu9q9dI3/QsaU83p9I5T3KEEEI0bv0698lKZxzNVa0zH5sQ wjs6XKLL8V0eaX/Yx7mkMcyfZGi4w9UGIvo6MTa6Br1C2WfbeXW7jSGvDSPqgn2KTle0RZVr VJ+otfX7dBXhIf7Slh7Ulu151YlVBB56DACLqieW6NQ2eZ/2QvqmZ0l71uoe5OftKgghhLiC ysp8gM65PpcQQrSVjrFGVxXrVzk8+7s8nNNuY/78yNpRWmodgUFgLbWiSUzgiXcmktRPTcVZ KwTr640WOXlczYAEhT1peRTLxQMhrghFfx0A566bw7lImaYohBDtQXnVCbS48izlPmRuUpPx nprc/3SocFxcYS+uspOz77yMehJCiFboMN+sjv17WbHgOMb5ycxLCb1gzS0DkTE6TuaVYK3Z ZqFgv40e/equ26Um5uExpDyZSP+ivaS/3cRC9UKIy6JylGE4srTm8fnud/DT8BzKYpdTqemM ExWFEKLjMBX6MG6Ujt+kaL1dlS7pm69V3DxIx8O/1vLoHC0Tx+t4YpGm+ReKLquzrs0lhBBt pWMkuqyFrHsyD+ekkcwYocNqsVf9KDgAUBMzqQ+BO/eRkWmm/LSFgvRtfGEKZfTtQQ3LC4pk +qLrKX9jOxu+k6sjQniS36mP6P5lLIajS/E79VHNdodhoBdrJYQQolpgIBQW+rArW0X+gY4R CnYmr7zky9kz9UfTvfmGL6ZCGWEnhBBCeELHiG72nyDXpFCcvokFo99iXvXPrf8k86h7F02/ wcxN7cnp1ZtYkLSeNZt1jH5+HAndGy9SP3wY05NsZC3eh8l+5Q5FiM5Od2Y7KkcZ9uARktwS Qoh2KCDQxdTp7gt9q9M63HKt7daunaoWJau+3td4+P12ulqmkwohhBAe4ONyuWQsbBVZjL5j kQWqPety2lNjyatJaqkcZfid2oi15/2erF6HIn3Ts6Q9a3UP8sNXLSfCV5pTcXGq9HybvseV jhFMhT4Mu8mPgEAXu/fZCAjsHOGg0wkff6TGYdXiH2Dn9js8N3J/V7aKXdkqyst9OLDfnazK P+BTLzk1/zEnf3zMcdFyfjlCR8G3TV9rnpCkMP8xJ3H928/i4/I57DnSlp4l7VlL7lAtRC25 jCeEuGQaSx5B+/8fGksePw3PwWEYSKUmsEsnuYQQoiOIiHRx8/BKdu1UsTlTxZTpHX8pB0u5 D3dM0HH4u+rEk5bBQyv58GNbvf3Ky3zIz3fv80OhD6ZCH25OqGz2rnY7s9WseK7p0Pnm4ZVE RDSfnHp0vpPfPlx/fbTeUS78/V0czFexOVPN4mcuniwTojMrL/PpNMl3IYR3SKJLCHHJAr9d gMaSh+If6e2qCCE6LYXizGzSVx/DVKSg6dWTUY8mkjxc3/xLa4qwkJu2jQ0bSyi2qDHGX0/y omEMiVDX7GL+Iod1q49w6IQVDEFEj7+JaXP7ENaJ12ufMt3Jrp1aVizXdIpE13vr1HWSXG57 d6t4fIGG775zj8ZqyvzHnM0muoYnKPAYBAS46D/Ave+1Ea5WLxR+5ySFqw12Pv9MxblzPvSN qeThWU58Ne6RdruyVbL4uOiyJt+pY9dOFTn7zsvfgRDikkmiSwjRKipHWc2dE88OeJ2rv1+F JfoJuZuiEKJNOPbnsGrZSWJSJ/LbQTrMn2XzamoW+vRkxka0rIzit7NYs8XA5OencFOojf1p WaQv1BK2djARauDoXtKeOk7YkxNZeWsQFB1n3SOfs0pnYOmc0DY9Pm+aMl3hhedcNcmV5hI9 7V3Rj41P6y0t9amX5DIEuOjf330CfW2kO1HVkpFYLRn11VJjblUYc2vD5GJEpIuIyOaTjuVl Pmz5RMX42ypl5IvoVK6NdMFO2Jyp5uHZTm9XRwjRQXWMxeiFEF6ncpTRLXcq1+wahspRBoDi fx1lscslySWEaCMKhz44jHXEYKaPNxIQYiBqagLjYsxkbzG3sIgSsjeeJfrBBEYNMBDQ3UjC vMH0Lz7EF7nuXRzHT3Py6p4kjA5CA2jCe3PLcB1lh85ibbNjax+qR3K9t67jX/sMMTae8Lk5 oZKMDTa+PXqeH80VFBw7T8ZGGxkbbby4ys4fH3N0uBFtmzNV/GGull9E+zEzRcv778pC9p3J 5kw177+r7pJ34hye4P5b3JKpbmZPIYRomiS6hBAtcs2uofid+ggfx1k0lm+8XR0hRJdgofCI Qo+BRjQ12wxE99VjPmhuWRLKYsZUZCAirs5UR4ORyAgbxd9ZANAM7EWM8iPZW0pxAI6i4+zY 7SR6dE9aMUGyQ5oyzcn42xQmJHWsRE9j7khWGoxuuu46F3dPcU9L7EwjnyIiXYy/zf0725yp lqRXJ7N+nft3erHptp3VhCT3qMldO1XSj4UQl6zrfXoKIS5JWexy7MEj+Gn4bmzdEr1dHSFE V6DYKCsFvUGPI3Mzswb9g/SvFPyDdVBub2Giy845fAm8WuHA028xa/hm9tj1BAZB+dmqErrH MvOpSEzL1jN30OvMvfNzDsXdwv2TDG15dO1CRKSLv621d8hEl6nQh5kpWlanuUejRV7nYvO/ bSx83MEjj8ATix1s3GJD3wmzlTcnVPK3tXa+PXqelS/bG016bZYRMR3Wlk/cv7vqpE9XEhDo ol+c+7h3dsFEnxDCMzr+OHUhRJswHFmK9uyXnB68GYDz3e/gfPc7vFwrIUSXdbWBiL5OjJeR tNCHBxPWx4BeDe4J2FWJgBN5vLzkR6JSp/DY+CA0RcfJWLSNVa8YSJ0Tig9X7rbtcnv4lvnr X2HxYigthW/z1TyV6h7zFx4CN/9X9V6aqp/OKzwEYufCH+a62+LDD90/GzbAmBFawkM8+V7S Nz3lYm354Yfuf2+4AWKj/K5QjdqXeybDknzY/m8tv2nBjbylbwohLiSJLiG6OO3ZHehOfwGF Tvx9Y6gIn8E1O4ehseQBoDuzXUZwCSG8Q60jMAgKS61okhJ4ouqj6NhmKwTradHqgAZ/rsJG WamaqIeSWfwQQCmZpRBg1LnL25iPqfdAfjs+yD1VMbw3k+89xLwVhzg6O5Q+QNHpirY4whrV J2pt/T4dnanQh3m/r53SNf42hRdXOSg6XX9aYniIf5dsy3F3uH+WrfBBa3BRdNoz5XbV9mwL zbXlO+9pATW/HO+k6LTjylWsHUkYrYIlOj7/wkXR6fMX3Vf6Zi1J+AlRSxJdQnRh/sXvEpz3 m5rHwYDf6X9zPvQOVM5SSvu/LkkuIYQXGYiM0ZGVV4J1hqFqvSwLBftt9Eg0XjBWR6HcZOGc Wk9YuLZOEUaiIqwcO2iFflXDwUpPcvSEnsiYqqmJTvfr63IodZ4S7cIbr/nywnO+lJf5YAhw 8eIqR4eccnkltGQ9svIyHyYna5kyXWH8bQoRkZ1nDbOOLGenO4nblft2XP9KDAHuO8LmH1AR 17/rTeEUQlwemfgsRBem/2Ftg23+ReuoCJ1MSWKBJLmEEF6mJmZSHwJ37iMj00z5aQsF6dv4 whTK6NuD6u+qmPl03noWP11Aeb0ijCTcZeRo+na27rdQfqqErctzORQdy6gB7l0iEiMJzCvg w88s7sXoTxWS+e6P+CdEECXLHHmdqdCHyck6nkrVUF7mw/jbFPbk2rp0IsATNmeqyD+g4qlU DcNu8mPcKB1vvOZb705/H29Us+RJDfPnw8YP5I+hreUfUGEqdCdyu3pyZ0JSZc3ac0II0Voy okuILkZjycNhGAiA2l7c6D4+rq45VF4I0f5o+g1mbqrC2rRNLFiiEBAdyejnR5LQveVlGKeO ZfbZ7WTMW886q5qwYbHMfjaesKrzds2gYcx9Iod30/7JvCftoDcQMXoYj8zrjR4Z1dUeHNgv o7g8bcp0hYBAO5sz1XWSXu7EV1z/SrqHuvji33WTW1oO7Hfy+JMSI7SVnTuqR3N17SQXwIur 7N6ughCiA/NxuVwyTrmKrL/Rscic/NbpljsV7dntqBxllCR+i+J/Hd3+Mwk/85YG+54cXUil 1uiFWnYO0jc9S9qzVvcgP3zVcrv1K82puDhVevF1Yi6XxAgXtzlTzfCEyhZNyQP53LgU7oSX O+llKW/8cyYwyMXBI237t9DZXaxvTr5Tx66dKtakd8w7oXqD/K3XkjW6hKglI7qE6GQ0ljy0 Z75Ed2Y7lj6pNaO3VI5SVI4yFP9IfCu+R/G/Dmvkww0SXeciZ0uSSwghurD8AyrKy+DmhPYz qkRO+tvehCSlpp0/+VjN/3tQS+UFXaCs1IeKCvCvcz69fp0aHx+4NtLFtde6ZK2vy7BylZ1d 2SqGt6O/PSGE6Igk0SVEB6ex5KH4XUelxn3/McORZ/A7tQkAW/CImkTX2QGvA6D4X1fz2vPX JHHqlq/RndlOoL/CaZ8+2EJ+eYWPQAghRHuxOVPNzBQtEZEucvbJyJ2u6rbbFa7r5eL4sfoj u3qEueoluQBWLNfUW9cL3IuJBwTC8ASFgECYMk1p8Wi8riwi0kVEpCR1hRDickmiS4gO6qoT qzAcW4rKUYalTyqW6FQAzne/g0pNEPbgEfUWk6+b4KrLeVVfnFf1JTDEH5sM/RZCiC5tQpLC tRHuu53tyla1q1Fd4sqa9Tsni/5U/96ms+c0XLHunmkKpkIffij04cABHyzl7jvlAezKdv87 ZZokb4QQQlw5kugSop1TV3yP36lN6M5sxxEwsCah5dIE1kxFrMva836sPe/3RlWFEEJ0AlOm K6x4zpf31vlyc0LbLgidf0DFvLka7pmm8PBsWfa/Pbn/107+a3Al+/6jIlCvoVdfGwMGNkx8 /vGxhovT78pWUVbmU3MXwZaM5upp9G8wEixuQGWz0yFtNnj1ZV++/VaFXg+jxyjcOUkSa0II 0ZXJYvR1yGL0HUtnXXxSY8lDXfE957vfAYDfqY/oljsVAIdhID8NzwFA5SjDx1na5Eit1uqs 7ekN0paeJe1ZSxaj946uthi9qdCHYTf5AZCz73ybrbm04jlfXnjOPWKoX1wlWdtsHitbPjc8 q63bs7zMh19E+110n7j+lXy6tWEfmXa3ji+3qepte26lg3vvb5+JU+mbniXtWUsWoxeilozo EqKNqRylVGqCmt1PY8kjZO/4qlFa19UkuuzBiVh73tdgKmKlJhCq1uUSQgghPCUi0sU90xTe f1fN+nd9Gx2xczmqR3FVT297aJaTPz7WPpMS4soICHTxo7mi5kYIO7PVlJdB/n4VJpMPP5h8 aOzS/PFjPg2SXAAffahut4kuIYQQbU8SXUK0kcBv56P/4U18Km1Uaq/h515/5OfejwBgOLIU 7dkv0Vi+4eSYYsA9Wqt6KqKt24iacio1gZT2f90rxyCEEKJrmjrdyfvvqnn/XbVHE111R3Fd G+HixVV2WQdM1Ijr7+4LjfWJCxe8Bygvb3yE63eHfCgva9mUSdH+rXjOl82ZajI22OV3KoRo kYaXQIQQl03/YzpXFabhU+keYq+y/0TAd4vQWA4AcNX3L6M7sx2VowyNJa/mdSfHFFOSWCCJ LSGEEF51c0JlzaL069epL7u8/AMqxo3S1SS5HprlJGurTZJcosUam0IbEdF40qPkpA9Db9Kx +ImGd4QUHc/OHWryD6jYmS2nrkKIlpFPCyE8TOUoQ1P2VaPPaSxfA1Aeu5wz8e9xckwxDsPA mucrZSqiEEKIdqJ6JNfO7MtPdAUEuCgs9OHaCBcZG2wsWeqQkRnisnULcfHI/PpTFAMDXQwY WEl5mQ+r03wZdpMf836vbbcJL1OhT7utW3sxPsl9c4HNmZf/WSSE6Bpk6qIQHqD/cS3+RW+j O7OdM/HvgU/jX8Suqtyy3BVRCCFEezchqZKAQDsTki7/DnYRkS7eXGsnrr9LElzCoxY+7mDS 3U6OHFbh5wfDb1Hw83MnkF54TuNea26d+2fKdIX5CxxtdoOFS1Fdx5Uv25kyXe4W2Zjht7hH fubslDEaQoiWkU8LIVpJe/ZLDEeW4nfqo5ptGkseujPbAVBbv8cePLzR1zqChlyROgohhBCX KyDQ5ZEkV7WbEyolySXaRN8YF0kTFcbc6k5ygTu5+uIqOzn7znPPNHc/3rlD1a6SXABbPnGf jsk03qbF9a+dSl19EwshhLgYGdElRDPUFd+j+F8HgOHoUgxHlgJg7XlfzZ0RrT3vx9YtEXtw Ys30Q99zR9AXrUVlP43Trxc/934Up76Pdw5CCCGEEKILqk54Pb3UB5OpfU0R3JWtorzMPaW3 vSXg2pubEyp5/101O3eoam5aIIQQTZFElxCNUFd8T9CBWejObOd894mciV8PgD14BA7DAOzd EmuSXOC+Y2LdtbYALNF/xhL95ytabyGEEMIb5A53or0LCHQR1876aPWaU54cOdlZTUhSeP9d NVsy1Tw829n8C4QQXZqM/RRdXvVUxMCCBfW2V09FVDnKarbZuiXy0/DdlMUux9Yt8YrWUwgh hGiPdmWrGDe69o6KQnRk1aOsrtR7gUxbbInhVW20a+eV+/0IITouSXSJLkd79sua/6scZRj3 jMdwdClXff9KzXbF/7qauyKah2zxRjWFEEKIdq28zIfFT2iYnKzDVOjD5o8lrBQdW3mZD79J 0TL0Jh0rnvNt04RK9XpThgDProXXWQUEurh5uDvZ1d6moAoh2h+Zuii6jJC9E2pGaZ0cU0yl JpBKTSDWnvfh8g3E1i0RlaOsZo2tulMThRBCiK5s5w4Vr67y5dhRFUFBLm6Ir+Tzz9SYCt0n nPMfc/LHxxxerqUQl6esDOLiXOzaqeKF5zSsfs2Xh2c5uWea4vE1tKpHcw2X0VwttnKVXdYy E0K0iCS6RIejLc3mqsLXwF5IN1U3KsKnUdFjSs3zujPb8ftpE9rT2zkT/17NQvI+LvcXo8Mw APX576nUuNfUKu3/+pU/CCGEEKKDsJT78Jv7dVgs1Vt8+DrXfZLeL66SF19xyOLQolOIiHSR sdHGrmwVLzyrqUl4vfCchinTFeYvcHgs0SLrc7WeJLmEEC0liS7RoahsJYTsvROfygoA/AC/ nzZDpZOK8BkAXPX9KvxObQLcSS9rz/sBODvgdVy+QTUjtoQQQgjRvD27VXWSXLX6xbnI2ma7 8hUSoo3dnFBJxkYb+QdUrE7z5f131axf5/5Zk273SHJqynSl5r2EEEJ4liymIDoElaMM7dkv 8T+ZUZPkqkv/Q3rN/893vwNLn1ROD95ck+QC97pbkuQSQgghWsfWRC4r+no5QRedW1z/Sl5c ZSdn33numaZgCHB5bKrhhCSFv62VqXhCCNEWZESXaFe0Z79E5SjD5RtQc1dDw9GlGI4sBeB8 99sbf6FKW/PfusktIYQQQlye2F80fmLff4AkukTXEBHp4sVVdsrLfAgIlMSUEEK0dzKiS1xx 6orv8Tu1CcORpTWLwwNcdWIVxj3j6ZY7Bf+if9Rsdxjca2nZg0eAStdomeevua1tKy2EEEJ0 UVHRLhY94cC3zuXRCUkKcx91eq9SQniBJLmEEKJjkBFdos2oK75H/+M/UJ8vxOUbQFnscgB8 K76nW6578Xj7mRHYhrhHbjkDBmIPHkGlJtCd1KpyvvsdFI231jwO1P2Rq75/tfb5a27j3HW/ vRKHJIQQQnRJv/+Dk1m/c/KDyQdDAFxzjZzwC9GY9evU+PjA+NsqJTEmhBBeIokuUUN93oTh 6DI0lm9w+fhzvvsEfu79x+ZfV/E9hqN/QV3xPS7fAM7ErwfcCS3DUfeUw7qJq0pNEOe7T8QR cEPNaC0AW7fEmqTXxZTFvsDPvf9IqM7MKasep75Paw9VCCE86ujZ73BWKsSE/MLbVRGizWi1 7tFdQoimrViuwVTonuL48CwnD81S6iW8XPInJIQQba5LJbqsB/NZtzyX3ENWCDLSf1oCKSmh 6L1dsXYi+Ot70ZZ9VfNYW5qN+nwRZb94AQCNJY+AgsfQWL7BefVAzEO2AKBylqH/cS3gXvC9 msNwA5Y+qSh+kRdsH1iTDLtUii4cQqJx0nBhetF6x0oPY3ZCoM91aNTa5l/gBeaKn8j/6RtU PipuDB2EQRvg7So1asPh9/npwAkqHTpG9xrH9cGx3q5SA+vy3yL9wGqKf/6R7lf14P7+D3F/ /4e8Xa0Glu16ig8Ov4fFVkZ0cAxz/+tPjO890dvVqmf/T1/zSNZMvjvzLQDd/ENYNvIlbu8z ycs1E0II4Q2Ln3HwRpovu3aqeOE5Datf8+XhWU40Wli/zhdTIXQL8WPG/Qp/WujwdnU7rPwD KrZkqnj+WW/XRAjRHvm4XF3kuoLlOGumbqN4wkhm3huK5kg+a1Pz8V8whdnj3amuotNtmzQJ 7aZBUeyYy3za9H2aonKU4ftzXr3RVdWLvKscZ7iq8NWGL/JRUzTOUvP6Hp+H1TxVdzqh/se1 KP7X4TDc0OZ3NvzZbuHdb9MpdRShJZDbo39FdHDfNn3PS7Hmm/8jo+Btzpw/TWRAbx66cU67 O0k/UXaU2ZvvZ/9PXwPg76tnSeJy7u33oJdrVt9736Yz/9+zax77++p5dUI6Y3slebFWDT38 yXQyj26ot+39SZ8wvOdIL9Wooa9LvuL29xuOnMy4aws3h49o5BXe8ff9r/P4tj/U26ZV68h9 8BhBfsFt9r5W5znsTjv2Shs2pw17pQ27046t0oZNOc/QsIR6+6d8dBf//n5zvW3XGiLZ/UBB m9Sve5AfvmrvfId0ZU7FxanS8236HuEh/kDbxyJdRXiIv7SlB0l7tt6ubBUvPKth186ml0RO e8POHb9SrmCtOo+h8X78YPJhzx7oGdW++6bTCWo1+LTx13f194gQogsluqyZm3kszcDcDxKI Vbu3mdLW8+zXcfwlcxIglgAAIABJREFULY4A2i64/On0Hs7vmcwQlRkfIFcJoCLuRXpdN+2S y9Se/RIAX+v3WHveV7O9W+5UfJxlAJweXHvyFb6ldtxa3QRV3e2NqVRpOTm2tOax7sx2nP7X 1RuhdaXd+u4QvjUfqHns5+tP5pQdxHRrP1OGPjm2kYcyG/5+d6cUcG1ApBdq1LhHP3uYjIK3 623Ta67i24eK8FVrrlg99hTtRHE1vajx7C0pmK2n6m2LDx3Mpnu21du2uzibysqLB4w392x+ euzu4mzO2X/GptiwV/3YFHvt/53neXTwonqvKTDn88t3Bzcoq1/IAG6LvrPJ95o/JLXZ+rz8 n+U4FPtF92lJOfd/9CuOlR7hRNmxBs9FBPTiWkMkb9/5ITq1X7PlVDgvftLf0nLOVJzGVpVM qptcstgtKJUN+8TaiR8ypte4etuuT7sGq/PcRd/ru1mnuEpz9UX3uZRyblzTi58qTjXYL/c3 x+muD71oWZdCEl3eIYmujkcSM54l7XnpdmWrWLZUw1d7Gia8HprlZMlSGdXVWhUVMDrBD1Oh +/tw4A2VPP6kgxEj29edYPfnqXjqcQ27c1T4+MDoXyo8+4KD8J5tc/otiS4hanWZqYsnC8wQ 04dode22Hv2MaDJKKFTi6K9u+rWX6+e9M0hQmWsex6vLOXZwDtRJdFWPrAKw9Kk9YQ3ZO6Hm zoR1E1TGPeNr/n8i+Naak8PwUx81WY9K3wCchhvqbSsITcHlqsSpnKevOQPdBedPnzqCGVjn sa1b40mCPUU7+dlhaVVioDGr/vM8dsXW5POHzxyql+QCOO+sYMPh93ls6JMtLgdamhiYRIXz 4oHdP+78AD91/S+WnT9sa3Tf+zb9CqN/9xaX01h9zlSYG00M2J12rM5zHJpVwtUaw0XL6fta d845fm70OavjHNe9GnjZ5VRrSTn3ffSrZsu50OEzDUfM3LfhVx5JeLSknIdunFuvnJ8qShrd 7+Dp/Rw8vb/JcmbFP9psfV7a+1yz9WlJOTk/ZjdZjqn8BKbyEzgrneia+Ty8WDnVPFXOhVw+ bRfEqlVq/H31aNVadGod2pof92Odrx++qvpfm/5aPY3NoNY1cYdYIYQQXcvNCZVMna40mujq GsMNPO+ZxZqaJBdA3jcqFszTkrOvbS9ItNafF2jI/Y/79+5yweefqVn8BLz+5sUvXgohLl8X SXQplJXa0Bi0UJTHs5NyqHjwLlITdOitFqw2QN92WXB/VzFckECKUlUQ+H96yqvO2VzX1z7n E7+Iq7VVJ6xVSS6oX78d59UoLoUTTvj136Jqtv/qaiitGtCy0eDEoK1KMMxwoQK0QHidesTs +Rc/290Jht8Fwl+vAd+qun5jh0eKSvhP3XKacP/rv6oppylPjPlTs+W8/J/nmi2nMRWVZ+q1 T0vKeeqXC5utz57i7GbLuSZIg0Fbv+9oNI2fjB8+U8BhGp/S1Fg5l1KfsG7+zZbTkqHTV7Kc kb0SsTqsjT7ncrnYVrgNLggGg/wDG/zNjuyV2GxiMsJowM/34iONRvcehQtXVXJD1+BfP18/ ru9xTb3X9HM2PlJvYOhAJsU2vV7TheU0JjXxcezNjOhqSTmb7/+E3T/sZkHWggbPPTPmGRIi ElpcjtLMyLmWlJOV8im+Kt9G2zjtqzSe+PyJBq8Zc/0Qwg31f+/nUlv/mdGY8j+Xtfo1k2KT +evuv9bbNi56HL/oGdbEKy6PU5GzIiGE6GhuiG88Loz/r/Y1AqmjyNnVMGloKvShp9Gfm4dX krHx4he7d2WrmJx88QtSnirnQtk7mp7KKoTwnC6S6KpDp8UYE4TD6AtXaEp8S05Llpyp/X+9 +xz+8gsIHdVg/zt+MmBX7OjUOnpcXXtyeLTOifiFIw8ak3idO8FQ4azg/37Yzd/LIVYL512Q b4dAv8AWlTO612gUl3LRxEBzSSWAx0c8js15sRFdh3ln/zsNtkcERLSqHKBF9fnk3k9wNjJ9 qrly4sPiG933tYmv0Tek8fXEWlKfLfdtaTIxoFPrahOkzbD82b3u2v9s/x+e/OLJes8NDh/M nof3tKqcy/XxjI8v+vwDHz5A+jfp9bZN699wamjmvZkeqc+mGZta/ZoBoQO46xd38a9v/1Vv +4sTXmR0r9GXVZ/HRzx+Wa+vNiJyBCMiR2C2mlmxawWOSgcqHxWPDn2U1BHNj3CsW44nDI8Y 3uRzqSNSOXz6MH//5u8A9AzoyZOJT9LT0NMj7+0pL054EX+NP1lHs3BUOhh27TCeGfOMt6sl hBCiHYnrX8nTf3Hw6ipfiovcd2S8L0Vh0t2yPtelaOu1rtpSR667EB1Jl1mj69iKdawojmfl 8liqVx5yfJHFY8t0zMxMpL+67dbFOL6lLwn8UG9bnmLAmNT4VCdvueeD29j5Y/0pd0tGLOeh G+Z4qUaNm/JhEtk/bK15fG1AJB/e9W/Crm5fJ8B117/yVfny6KCFLZoueaX9de8yPvt+Mwo2 YoNv4A+DFhEZ2Mvb1Wrg5f8sZ9/JPahVaoaG3cLDN871dpUateHw+/xka993XQRQXApm6ylC /IxXdD221nIqDq42ODlvlXUnoKuu0aVQnJlN+upjmIoUNL16MurRRJKHt+KeyYqF3LRtbNhY QrFFjTH+epIXDWNIRJ35tXYz2SuyydxSglnREzFiIDMWDSTKIGt0dUSyppRnSXt6TpC/P6UV 0paX47//rOFvq+tfiL+ul4udX7WvqYvJSboGU1YnJiu8tqZtpi7KGl1C1OoyiS7rls2kvqJn 1geJNYvRH3tpHSuODOQvL7XtYvSlZQco23Un8ZxE4wNfV3ZDGfAK116b3Cbvd6ks9nJe+c8L 5Ju/wd9Xz6jIccyI+7W3q9WozKMb+LnyJKpKAxN638HVLRgN5Q3ltjLO2s4QflVPNGqtt6tz URLEeo60pWdJe9bqiokux/5sFs/5kZjUMfxqkA7zZ9m8mmZjXHoyYyOafz1Acfq/WJphYPLS YdwUamN/WhbrCvqwcO1g3LkuOweWrufvJXE8sCCGSKWET5ds48DQiSyebZREVwcknxueJe3p OdKWl89hhz8+quWTj9XYbHDjTZX8+b8d3Dy8fU0F/TZfxeL/1rArW4Wvr3sx+v9d7qB7qCxG L0Rb6zKJLqyFpE/LovDWMcy8NxQO5ZGeegTjkinMTHQnINr6S0eCWM+SQMGzpD09R9rSs6Q9 a3W9RJfCgafXssY2kueW9q4akW0ha/Z6sgcls/ghYwuKKCFj6iZM905n3qSqUWCWI6TdmYN+ +X2kDAJO5bNy6nHi35vIqEbuFyKJro5HPjc8S9rTc6QtPUvas5YkuoSo1XXW6NJHMv35YaT/ bzZL37ZCiJH4ORNISWzfo2yEEEKIrstC4RGFHrcbqZ1gayC6r54NB81YMdLsBEaLGVORgYi4 OnsajERG2Nj/nQUGGXDkFVEYFkz8x1ksfreQ4godEbfG88CiOCIkTBBCCCGE6FC6TqIL0PSN Y+abcd6uhhBCCCFaQrFRVgp6gx5H5mbmPmkmIW06Y4N1cNCOFVqQ6LJzDl8Cr3aPDnt5cw9m bh1DYBCUn7UCBspOW7Ge+JEdJbcwK2MMgacPs25eNml/DWbxgnB8uHJXyuWKvOdIW3qWtKfn SFt6lrSnEOJCXSrRJYQQQogO6moDEX2dGFuxBv2F9OHBhPUxoFdDGQBVi3baFND15PZH+hCm Bwyx3JNyhMdXH+Ho/HD6IMsbdDQyncmzpD09R9rSs6Q9a0nCT4hakugSQgghRPuk1hEYBIWl VjRJCTyR6N58bLMVgvUEtqQMgz9XYaOsVE3UQ8ksfgiglMxSCDDqANAHadH46/DX1b4sIFSP 5mcbcvokhBBCCNGxqJrfRQghhBDCGwxExug4mVeCtWabhYL9Nnr0q7tuF4BCuamU4qILbttu MBIVYcV0sLYESk9y9ISeyBj3HXv1caEYS80cK6rdpdxkwRFiaFkyTQghhBBCtBuS6BJCCCFE O6UmZlIfAnfuIyPTTPlpCwXp2/jCFMro24Pq76qY+XTeehY/XUB5vSKMJNxl5Gj6drbut1B+ qoSty3M5FB3LqAFV+0THMir+LFlL93LAZKX8YD7vvG2mx+19iFJfoUMVQgghhBAeIVMXhRBC CNFuafoNZm6qwtq0TSxYohAQHcno50eS0L3lZRinjmX22e1kzFvPOquasGGxzH42nrCaJJaB UU/fRtmyHayZmotVZyB20hhmP2hsi0MSQgghhBBtyMflcrm8XYn2Qhaa7Vhk8UnPkvb0HGlL z5L2rNU9yA9ftY+3q9HlOBUXp0rPt+l7SIzgWfK54VnSnp4jbelZ0p61ZDF6IWpJoqsOm0Px dhWEEEKIJqlVKkl0eYFTcaFUVnq7GkIIIUSTdBqZay9ENUl0CSGEEEIIIYQQQohOQRajF0II IYQQQgghhBCdgiS6hBBCCCGEEEIIIUSnIIku0cko5KauYcHSQm9XpHM4kcszwzeQdcrbFekc rB9sYu7UHEyyHODlU4pYd+caXt4ijSmEaCmJETxKYgQPkr7pUdI3hejyfL1dgS6htIjMZTv4 YmcpFWo9EbfGM2NeHBF6b1esHTuRy7Mp+whc8mtmj66/sKL1YD7rlueSe8gKQUb6T0sgJSUU ac6GrF/nkr4inwOHrGAwED1+MNMe7UOYtmoHxUJu2jY2bCyh2KLGGH89yYuGMSRCFrNswFLC 1pU5ZH1RgtmqJiC6J0NnJzA50VCzi/TNS6FgSvsnz7wJSe9MITm6erP0TdFFSIzQauaNm1m6 zEly5kRGBdV9RqE4M5v01ccwFSloevVk1KOJJA+XxmxMszGC9M2WazZGkL55aSxkzV5PRuH1 zPsokdjqEEBiBCFEM2REV5uzkv30p2RZr2fm2/fxlzcSiDyUQ9pLhTi8XbV2yGGxcGxjNisf 2YfJ2cgOluOs+9NeiuMTSP3oPhY/FUFF+iekb7Fe8bq2e6cLWPOnbygblMDCD+5j8bI4fL/4 nNf+Zq7ZpfjtLNZs0THq+Sks/3AiSaGFpC/cJyOOGrCTu/wTMo4Ek/zKdJZ/lMyMBBvZT2xj a/XVQumbl+ZEHu98YEFzwWbpm6JrkBihNRynStjzxmZWvvRjo+3j2J/DqmUnCZs9kb9kTuH3 d8GO1CyyTFe8qu1fszGC9M2Waz5GkL55aco3ZvPpoYbbJUYQQjRHEl1tregIO3ICGDs/ntgI PQHRvZk853rsWw6RK+e/9SnHWXP7el79wEbMogSGGBruYv3yELm+1zN5Tm/CQvQYhw5m8mQ9 Bz44Tnmjhdo5sHw981JyONbF2tthsuAceAP3zOlNRLge46CB3D7BgHl/ibutlBKyN54l+sEE Rg0wENDdSMK8wfQvPsQXuU0UeiKfleP/QVqm5QoeSXtgg96xTH8igSH93G0Vf28Mkc5Sikvc e7S+b0L5liwWjN9E1tGuGplZ2LqigMAHBlLvIuyl9E1rCRsefIvUZYVNtrcQ7Y7ECC33dTaP /yqLT4+EMHlRHMYGOygc+uAw1hGDmT7eSECIgaipCYyLMZO9xdxIgSAxwkVihEvpmxIjNBEj SN+8JKVHeD/dyeiUnvUvhkn8KoRoAUl0tTHHoRJOGoxERtRu0/TrTrjNTOEJr1WrfVL3ZvYX M1n+5hiShgY0usvJAjPEhBJd56S4Rz8jmiMlFDaSKyjO+JS/7zSS8vwworrY6HDNjYOZtyKe qJq2smM22dCEGvAHsJgxFRmIiKvTMAYjkRE2ir9rJBAoLWTdn/ZinzaBmUmNZCE7NQPxDw4j oW9VY1otHEg/SGFEb4bGuDe1tm86Du7lpeVnuWnpOMZGd82h9uVbcsjyHcjkWy/442xt38TC nqVZ7AgezNwFkTT+6SFE+yMxQivcmMDynffxxLLBxEc29plpofCIQo+BxjonxQai++oxHzTT WK5AYoSmY4RW902JES4SI0jfbD07B9L2Yb7zFsZeOB1R4lchRAtIoquNOSw2HAYtgUoJGZNf Z9bsPMp1OgJ0NspKvV27duii5/sKZaU2NAYtFOXx7NDXWZxmhmAdeqsdq63+3uU7t/Paahj3 /Ejiu7dlpTuG8i3beH93AGPvjXQHWhY75/Al8GqFA0+/xazhm9lj1xMYBOVnLwi7bGayUrdz IH4kv33Q2GCaWddRSuaDa5iVuI41OUamr0wgSgut7ZuUHGHNokMY59/G9EHaRt6nC7Ac5/3V VkbNi8N44d99a/omNo6lZbHO1IffPhNHWNfMGYoOSmIED1LcbaY36HFkbmbWoH+Q/pWCf7AO yu0NkgkSI9R3YYzQqr4pMUKVJmIE6Zut5ti/j4yDkcyYFtTwSYlfhRAtIIvRXzE6AnsHERFU e/VBPmwvg06LMSYIh9EXGhkt4zx+kFe/KMT33ilddrRMLQXzlm2sXGYm9smJJEU33EMfHkxY HwN6NZQB9TOONgpWZnHoUCgzl/fu4qNlghi19G4GnDrL/vf3su6R7WjeSCS+bhzWTN+kwsyH f8rnUK9h/KXLXllUKEjbS/HtY5gZAZxues+L902Fss+28+p2G0Ne66pXvUXnIDGCR11tIKKv E2MTnwkSI9TVXIzQXN+UGKFWEzFC3a966ZvNU8xkrigkZv7dRGi56JpwEr8KIZoiI7ramCZI j6bUSpk6iLHLp/BEah8CrFbKbTr0DReYEBelJjBIj8NihZBYZqZPYfbkIDhrxWrQo9fV7mk9 Wo4xMZTT7+awp0vfWljB9M4nPLu8lPhlycy8tU60ZfDnKmyUlaqJeiiZxekJ9FdbKSuFAGOd xlRKKXT2pH9QIRveLOnyi9Dqw4OIuLE3SU+PJEE5zKeZFlrTNx1FZqxxvemxP48Pd9q9dhze 5Di4l4z9kcy4t4kPwZb2TeDkcTUDEhT2pOVR3FWXOhMdlsQIHqTWERgE1lIrmsQEnnhnIkn9 1FSctUKwnsA6u0qMUK3pGKHFfVNihHoajRGkb7aK+b1scvsMI/nGJhJ9Er8KIVpAEl1tTBNr pIfVzNETtdsceSUU6o1EX+u1anVYPeKC0Rw6Rd21u037zThiQqi7ZEfArcOY+eQYJg88ybpl BTS11GfnplD83ies+DuM+79kJg+94PKhwUhUhBXTwTrDvEtPcvSEnsiYOgkxdSjjnkhk5lNx 8N42NnzdBbMJliOkjf4H6TvrHrsajRYcTve2lvZNTXQsMxaNYebDevYs20FuF5yeZPrsOKYj +bw8/i3mjX6LeZNzOGYvJeuht3j5A0vL+yZqYh4eQ8qTifQv2kv6213zL110XBIjeJKByBgd J/NK6kwFs1Cw3+ZeL7HOnhIjQHMxQov7psQILYgRpG+2XCl7skoo3vI5qaPdMcJjTx/HcaqA VeP/ReZ3SPwqhGgRSXS1te59GJ1gZeuKXApMVsqPHmHdK8fR3xlHf5lm04DDruCwKjisNveV l+rHVQNf9CP6Ec9hMl45TvFpK8U7c3j/A4X4ydc3MiTZQMKCYUTl57D2gy54l5Xv9vHaX0vp v2gkCWEKVovd/WOt+qJXG0m4y8jR9O1s3W+h/FQJW5fncig6llEDGhanGTCYlKmw9ZkcCrra HYAM4dw01MmeVdnsOWih/FQpB9Jz2GoyMGCYe95i6/omhE0dSXL4cd5ZfqTL3SUw6sFkln84 nSXvTXH/vHITUdogRi2/m5m3G1rdNwmKZPqi6yl/YzsbvpNAVnQgEiO0SnWMYLUpQHW8oOBQ ANTETOpD4M59ZGSaKT9toSB9G1+YQhl9eyPr/EiMcPEYoZV9U2KEi8UI0jdbLoixK+9jecaU mhghdV4kmpA+pKRPYGw0Er8KIVpE1uhqc3qGpI7DvGwHa+7dS7naQFTSSObODpf1Ny6kFLHu jk1k112vJ/Ut5gIMT2DlS3Ho9ZFMf34Y6f+bzdK3rRBiJH7OBFISm1jQu3ssD8w38T/LPidr UDJjIxrfrTMyfX6cYruV4gXr2FP3ie6xzPsokVg1GKeOZfbZ7WTMW886q5qwYbHMfja+iQW9 1UQ9PJKx2ZtY+1IEqYsi6TrnYXqGpN5G2cocNsxZxxqrmoBePUlYehvJfat3aWXfVAcxNnUw +1JyeGdLOLPHd53WxKAnoN7ALHcbaYIN6Kuaq3V9E/TDhzE96Z+kLd7HTW8NJqKLrvEvOhqJ EVrsu70svT+33hTljDvXkAFEzJnCEw8Goek3mLmpCmvTNrFgiUJAdCSjnx9JQlMLekuMcJEY obV9U2KEi8UI0jdbThOkr9fHHAY1qH0JCNWjqYoBJH4VQjTHx+VyubxdCSGEEEIIIYQQQggh LpdMXRRCCCGEEEIIIYQQnYIkuoQQQgghhBBCCCFEpyCJLiGEEEIIIYQQQgjRKUiiSwghhBBC CCGEEEJ0CpLoEkIIIYQQQgghhBCdgiS6hBBCCCGEEEIIIUSnIIkuIYQQQgghhBBCCNEpSKJL CCGEEEIIIYQQQnQKkugSQgghhBBCCCGEEJ2CJLqEEEIIIYQQQgghRKcgiS4hhBBCCCGEEEII 0SlIoksIIYQQQgghhBBCdAqS6BJCCCGEEEIIIYQQnYIkuoQQQgghhBBCCCFEpyCJLiGEEEII IYQQQgjRKUiiSwghhBBCCCGEEEJ0CpLoEkIIIYQQQgghhBCdgiS6hBBCCCGEEEIIIUSn4Ovt Cghxxe3PJvWhw0St/DUzh3u7Mp6iYPogm4x3CzlqsuJQQGPQE586nZmj1d6unPAoO9mPvEX6 wT78fssY+suvVwghPKb4zX+xeLWelC0TSDB4uzYeYi9lz6odZH5mxnzajgM1+pCeJL8xgVHh 3q6c8CjlOGtGZ7FnaCKrlsei8XZ9hBDCSyTRJURncHAvacsKsA8dyOTZ4Rj17s363pIF6XzU hI2OY1RMKCHy6xVCCNEMc8Y20t85S8TUm0gZGoReB6Cjh9HbNROeF8yAyXHoI+SXK4To2iTR JUQnUH7IjBkjyQuGMSrC27URbUtN1KQEorxdDSGEEJdHAdr8goWCKd+MIyKWe+YPJEoukHRu 6iCGPJLAEG/XQwghvEwSXcJLrGyd8w8y9IksHF/Kh6uPcMhkhSAj8b9JJGWysWq4ddU0Lctg lr4ZT831KUsBK2/dzrk503kixQAncnlmRiGx84MpWH2Yk+qeTH4+Husbn5OZYyVwdALzlsZS 7/qWpYisJ3P49MuzlCs6IobHMXlRPLFBdfZRLBx4M4ePP/4RU5EdgoKIHh3H5DlxRNSd0mDK 5ZnJ3xC2/H7u0e3j7389xKGj7imEUQvuY+FUfetb6GA+Ga/ks39/KeVONQG9enLTfYOYnGSs GYp+4Om3eHmjveY1Gya9zobqB2ojye/dRVKv1r6zQnFmDhn/OM6hE1YcvnrCBkQyas4wRvXT tukxU1pE1it72brdjLkU9OFG+t8zmHtmhBNQtYtjfw5LZ+XjP/duFs6o/WWVf/E5/7OoiOin 72L2eD3VfWwdw5g3vpQNbxzDZFbQhBqJf3gk05OCaof0t+JYrN8VsGFVHvu+LqXcqcUY05Mh Dw8jefgFc1xOFZL516/I3n0Ws0VBExJE9K0DmTY7lrC6TaNYyE3L5uOPT3LytB2HXk/E0D7c /shg4sPrnJEczCH1wTzMStXjoKanLrak7xS/sZ7F7/dg9sru7H8pl9yDVqxqPVHjB5OyoA9h dctt6bEIIYQnKEdIG/E5ZXOTud2ay4cbT3KyREET3ZOxj40h6cbq76K2ixEcJwpIfyWX3DwL Dn0QMZOG8cDsSALqfja24DsLwLpxE48tg+mZ4wjbso13/l6I6ZQC6iCS1k4huW/rm6jZz3ml hIypG8g6Uf2KfJ4dml9bQHgcCz9IaH3iS7GQuzqHjzN/5GSJHQwGIobHkvxoPLEhdfZri7io Bd+/xe9s4LlVNhJeu5vJA6oPTqFgxT9Z+ZGOyW8mM7YXYD9C2qjPMf9mArdb88j4uIQyC/jH 9GbcglsYe4nxjsdjhBbuZ07/F6kvmWs3jG5q6mLLYjyJEYQQHZ0kuoSX+KJRgyPvK/6uHsiM 1+7j9wYrB1Zs4uXln2Mc2MrATw0oZrK/CGf+exPZPWsDG+ZZiU9N5i9J2TyVmkf2A7F1ylQo WJ2D465BPPKbAByH8nln2V5eW+rPkuWxVQGqnQPLN/HyRjVDFowjJSEIjh8hY2k2K4og9aW4 2qA4PIQwgx3TZ9ms+eok/tOGMTfegFZRoLuu9c1zNJcVs/dSMXwYD7zZm0h/G0c/yCZ9ySbM 3M3vk9wBU8ycu1mcolC2+XNWvglJb4xhSE0spSbwEkZ3mT/4hOeWmYl8cCQLnw8lsMLMjle2 s272WRzpVQFiWxyzvYQNv/uEzJ97kvzU3dzSR405ey/pyz/hJWsyCx9yB++aAcOYNbeE59I+ Z8OgZJL7quHUEd5ZdgTtpAmkjK+Oqtx9jIN5ZATF88DbiUTorRSkbWbVkk/QR0ypDYJbeiwn 8nh5Vg4nY+JJeSOW6KutFLybTfqfNmF9aQrTB1VHfhaynswiyxlHyktjiTbCucJCNizdzooK PX9JjawJPk2rPyFtYwDJT01kSB89WMzseWU7a+bBwneGEVFdZJ+bmPdeLA6cmP62mTU7m2jH FvYd1L5QWkjGS06SFtxNSrQa85ZtrHxyG+m9Q1k4tbojtfxYhBDCM9RofOHkP7bxxV238EjG BAKsRWz40ydseDyHqA8TidU2X0qd4loXIyhmslbAkJQxPLZIzcnPckhPy+LV4DoXWFr4nQWg 72MkUDnC/tXbyNypMGTuWGb00oFVwT/sEpqnJZ/zaiNJL00hwe7kwPJ/kWGO4/fPxlGTi9Jq MbZ6dJeV3CUbSPtSz6hFtzF7kAGH6TiZz+Sw8nc2Fq4dRlT178XTMUILv3/DZoxhcu4/SV+S Q/83E4g1gHXlvCDsAAAgAElEQVRnNmvfsxP/9MTaGEZd1cfez2HHvbewMDOcAGsJmYs+IWPe DowZY4iv/hr0WozQ8u9f46SxLE5UgHK2LtzM1iaascUxnsQIQogOTu66KLzLbmTcooFEBQFq Pf3vvZ4oSjmWZ72EwhR6JMYSEWQkOkaNVW1kSIKegH6h9MCC+aRSZ1cF58BBzJwRSUSvIKLG J/DA5CCs2UfYd7pqn6ICPt5oIezekaRMCiesu56woQOZOa837M4j6+u6760nMASKtxTiP38i s1P6EDsglKgbw4kKb/XlUg78/RtM2j5MTh1I/2gDAeFG4ueMIWmAnQP/KMBUtacmxEBYryDC g9WAlsCIIMJ6Vf8Y0Lf6rUvYml6EY+hgZs7uTUS4noDoSJKeHER/Svj03aI2OmawfpFL1lEd CYvGkjQ8iIDuBqImjWTaJD2md3M5UKdLhM0Yw+Sh5WT9916OWSxsXbaDA6HxzJ4fSYOLh9Yg bplfNQJPrSf24XjiDRZ2f1zSymNRKHg3j2NEMnnZYOL7GggID2XIo2NI6mMhO72A8pp2NFN4 UCFkTBzx/QwEdDcQNiiOma/cxSMP9qgT9NkpPFiKJq4Xo4YbMXbXY4yOJGlJMgv/EkePus2o 1WLsFURYLyPGJhdIbnnfqdqdmAdHkhCtBdQYb40jPlzBlFuCo9XHIoQQnmUNj2X6Q+EEaIGg cMbe1RPN6ZMcMjX70ka0Jkaw0WNSIsmjQwnrZST+oZEk3ahwbNNhiqvr1orvLIx6ArCSm2lj 7CsTSE6KJKpfKFGDwglr9YL3Lf2cV6MPDyKsVzCBBkCtJaRXnRghXN/6z2/TIT7eYiUiZQzT x4diDNETdmMcKfN7E3A0n0+32+vs7Nm4qMXfvxhISB1DgpLP2pcKsZ4+zrpnDsPkxDoXwmo5 QnozOSXcPVLPEErS7Osxlh5n9+46/cFbMUJrvn8NhqrfbQCBTTVvq2I8JEYQQnRokugS3hUR SkTdqYIGf7TAOavS1CsuQk1gdz2gRqNTQ5C/+8ter0YLOOz1944aVP8LuEe/YDT2UoqPux87 DpVgsuuJGhpabz/9oAii1BaO5pXWeWtfd1IpvA/jRl/mOG3lLEcP2aFfODH1AmAD0QMNcOI0 hZbLe4smnS7haBH0GNSz3rQLgnoSHQ3lh0qoGRjvyWMGCvPMOHShxA6qG6GpiR4ait5i5ujR unu7A9kh9nxefWgTGXlGJi8dTERjV/jDjUTX7WPaYMLCodx0tjbobNGxWDiUZ4WYCAbULU8d ROwgA479JRRW9zG1kdhBWkxpm3h5eS7ZO82UW0ETbiQivG4ltUQNMkJ2Ds8tyiFrSyGm04p7 Kki0ofUBYmv7jjqI6Jg67a3WoTeAw+6sDWJbfCxCCOFZxn6h9aYTaq7WokHBYbuU0loRI6iD iR1U97vAQHSMHn4o5WTVfq36ztK630M/eiAJl3uXQy/GCI6DJZzEQPSgoHrbNQPCidQqmA6e rd3o0RihFd+/AEGRTH96IJotn/Pc77aRGzqQ2Y82ciEM0MeFUm9QXa8QjCicPNHaY2mDGMHT 37+tifGq6i4xghCio5Kpi8K71Hjwak9V8FrN9yLdW61Ff3X9S14avQ4NTqxVgYjDYsOBlew5 r5N94esVMJobibR7B9UfhXNJ7FgtoOmja9A2/gY1KDasFUBb3PbcYqMCCDRcGJyo0esBs42K CxfP9cgxKzgtTrAeZ82I11nT4Gk1ZeYL3jgokrF3BpP9ipmAO4eR0NQ0TYMO/3r1U6PRA1Y7 9gv3vdixKDYcFcB32SwY2qBHAAbKrIDW/f+EZ36F/r19bM3KZ917e0lXawkbHcfkRwbTv86J TljKRBYa9/HpxkIyl+SRYVcTMKA3o+cMI2lQa08OWtl31L4tWAi55ccihBAe5dEotRUxAlr0 F3zHagxacCpYbYD2Er6zgJBewR6IebwXI1RYbDhQN2gb9Do0vmC1tFFc1KrvXzfNgIGMGpDP ut3Q/8m4xi+EAXrDBdModf+fvXsPj6q89/7/JpNJYOgkoYzEhD0RCJWUHDRegJFUBH+iGA/0 EA94oHWjJXuL+sBT1GfjY9FHeqH0h7sKeweVWoMKYvpY1KIYfwgpUQQuYkPCDpVwyGwTQicy yZQVMpNFfn8khASCZGCSCcPndV20ZmVlre9ac8+a73zXfd8rkkgL+Lu74drnOUKQP38DzfGU I4jIBUyFLrkw+c6lx1dn5mk9vPxGM35LZNuHPWC1R2O12Mh8dho5Y05/q1jt3WSRQSnctSXY bYW2rttr8ppgiSZ20HnvpHv2aAYBRz0+6HLv04dhAHbbKUUjgnTMFmxxkWC/lBmvZTGmm8Rq 8LCuC/1VpRQUHME5JZGGj7eyevJwZk7qJpM1Ti3OmRiNwJAoTlv7u46l/U4m48bzxJMjOf0l sBDb+S6uLY7MB64n8wHA46Hyy68pWl7Ky3PhqbfHn5x7iyicOVnMyskCn0FtaTUlr+9g3bwi bGumMzmgJLGX2k6Pj0VEpB8IRo5wSrHIb/gg0oItGs7lMwvAGpSsO3Q5wiB7NFYMjFN7jBnN NDWDLa6bubeCkSME+vkLuN8vZl2pnbRJsGd5MSVZ08gedvqmTyvOeZtpMWGQLcBj6a0cIZif v+eS4/WEcgQR6Yc0dFH6ufY7sEZLW7GinX9vPTXnk8eaJq6yLh20ObTnCH5LHAntPYOsqYkk Wwzc9dGd5r2KI8Fpw2qx4RjaS5/cliEkp0bBbhd7uiSTHipLvTA6vusTH4NpaDzJiXBoxzed 5rsAPIeoqjp9GEkwXZoRj81oxN1s73q+h1rAbiemc05m1LHuf+/kUGYWeYtvZNZPoGTRRkoO d7Nhl5uqTqNM8Ryi+r8hZsSQrl33zyqOUek2qD6CMSyuS4wOGwweZj+ZNno9VH5W0+kJiXGk 3DSenz+QCK56ak/k1aaB6/P97DsRd5SNhKtTyH1yDM7mI1QfCCjA3mk7PT0WEZE+11s5whGq KjtvwEvVbgNGOLi0/Q5JQJ9ZwRTCHME6Nh4nXqp2eLos95fWUE0Uo9J7K0MI4PMXoKqMlS9+ w6V515O3+HqmJn7D6qdLqe2mTRgVdR3zrkHbtBU1ZhSO5EBPYi/kCMH+/O2NHE85goj0Uyp0 ST9nwZk+BA7sZ8uXBn7A79pL4Vvf9KA79RmYgMWC8ZetrN5Qh7veoLZ4O28XerBNSmHCiUcS DUvh5lw7+14touD9GmoPe3Hv3k/R039k4cxP2HROk+H2hIW0e6/A6dvP24vKqDxg0FjjZttL mynabWPCA6mcy0OaerbreCY/kIR1x3ZWvrYf12EDd1U165/eQXlUIjl3x/fWnrFNyWTqWC+b nt5I0Zdu3Ie9uL6soODhtSyauxNXR4Lqo/zFjRR5kpi5IBWHJYqUx64nZ+gZElmbh02LSymv 8tJYU8empaWUN8dx9S2B96dPuTeTFN9e3niqlNK/eWmscVO5fitL71nL88trTs5Z4a1m3a8/ In9pJfsOeGms91K7ay9/fr8Oa0YiozqyXYOdv9vIy89sp3S3h8Z6A3dVDZsK9nPIPpyUsSeP udHlofaAh9oDbtxewPThPnBimZe2URa90HZ6fCwiIn2tF3KEdpUFm9n0lYfGwx4q3y7hk10W Um4f3XEN7flnVrCFMEdwpnLjLTZcBRtZvcHdlj/tKGPli3vxj72CG7N7r+tOjz9/jToK//d2 DqVnMeteB9YoB9N/PR7nnp2syO80iXo7a/1e1ry0F1eNgftve1m9bD+NiaP40dWBH0vQc4Se rmcYnfKBRhpMwGji0IllNb62ffdGjqccQUT6KQ1dlH4vIXcSM/YW8+cn32QTUTjGjiLn0Sz8 e4qoNs8hk2wx8RHNhIczif10M88v8tCIDee1WTzy5OhOdwUtpDw2nbmOrax7/RMWLfLht9lI yBzJjBXjzzwnVDAkZzJvuYXC/ApWzNyK0RJFzJjhTF5yPTndDc8LIsftU5kXuZU/vVHC868a +KNtJIwbyawVWUzozbkWLA5yXrwV2/LtFD29jkKPiTUujuRJ45n3cEZH1/fGDRt5433IfvE6 Mk8UJaPiyfk/V1H5wE5W5Cey4OFODxBwjiF3ikHRE3+kyuXDmhjP5GevY/rYbmI4m8RU5qyw ULi8jLcf3E5jswWb00HavdOYNTPx5D4TM/iXpSbv5pfy8sxiDAOsQ08eS8cdU4uDnBevx/9S KYWPluH2mGC3kZA+khn/MZ4JJ4Y5eL5mZW4JXToYUM3qu6rbtxNP7gfTmTqM4Lednh6LiEgI BD1HMFvANpwfz3FQ+bsPWbfHwG+PY8xDU/l5bqdePj38zOoVIcsRoshcMJ28oSX8efk6NtW1 H/OUbOY9nNq7x9yjz9/2G2H1Scz691QcJ+IZkcGsuTUsWrSRgvSfMavTOYq9aTyTLXtZ+cBm aj0QM3YkMxZmk3YuBZpg5wg9XM//ZQkL5+/vWsSr2s5zudvb/js5g6fezsJp6YUcTzmCiPRT A1pbW1tDHYSISPD5KHn0DxR4x7Po9UwlWyIiItLG3M/KKUXsy53Ookd7r7e6iIiEhoYuioiI iIiIiIhIWFChS0REREREREREwoKGLoqIiIiIiIiISFhQjy4REREREREREQkLKnSJiIiIiIiI iEhYUKFLRERERERERETCggpdIiIiIiIiIiISFlToEhERERERERGRsKBCl4iIiIiIiIiIhAUV ukREREREREREJCyo0CUiIiIiIiIiImFBhS4REREREREREQkLKnSJiIiIiIiIiEhYUKFLRERE RERERETCggpdIiIiIiIiIiISFlToEhERERERERGRsKBCl4iIiIiIiIiIhAUVukRERERERERE JCyo0CUiIiIiIiIiImFBhS4REREREREREQkLKnSJiIiIiIiIiEhYUKFLRERERERERETCggpd IiIiIiIiIiISFlToEhERERERERGRsKBCl4iIiIiIiIiIhAUVukREREREREREJCyo0CUiIiIi IiIiImFBhS4REREREREREQkLKnSJiIiIiIiIiEhYUKFLRERERERERETCggpdIiIiIiIiIiIS FlToEhERERERERGRsKBCl4iIiIiIiIiIhAUVukREREREREREJCyo0CUiIiIiIiIiImFBhS4R EREREREREQkLKnSJiIiIiIiIiEhYUKFLRERERERERETCggpdIiIiIiIiIiISFlToEhERERER ERGRsKBCl4iIiIiIiIiIhAUVukREREREREREJCyo0CUiIiIiIiIiImFBhS4REREREREREQkL KnSJiIiIiIiIiEhYUKFLRERERERERETCggpdIiIiIiIiIiISFlToEhERERERERGRsKBClwTm qxLmj1tJ/qdmqCPp6nA16+b/X+ZPWcnsca8wZ9IfeG55XaijCg/n/Zp7WD/zFeY+Wx3UsDD3 kz/pFeYvrgnudncUM//qtayrCu5mxWBT3ivMeXIv/u5+9/ArzL5nO65ejaHnbbGxcB2zx73S /u9NCnYENxJX/lpm5xRT2c8updL3erut9RnlBxcf5QcSFMoPOlN+IBIckaEO4MJmsOnhN1n9 Zfe/dT46g6dm2vs2pHNhuim8pwh+PYPcsWdZd2g8P7oLHEmWPgmtZ3yU/m4j63fEkJ13HVeN iAIg0jEkxHGFibO95oG0n6Cyk/7jFBwZtr7cqfSKaJImpTLZiCc21KG0i7npehZmNtNSvZv8 J4P8JUwuAt3kB7YoHGOTmPxgFlPHnbxu9eu2pvxAvovyA+l1yg9E5Nyo0BUMySnMmjeCrh+n kcSOvEA+YD11uFzg7Mm6ztFMnz+6tyMKjNlI1R4fMTeMY+ZdSaGOJvyc7TUPpP0Ek8VB9rxJ fb1X6RUWRt2VzahQh9GZ3U6C3Q4MwhrqWOTClZzCrPmjiaGFlnoPu97dSeGjbhpW/Izc9Pbi QH9ua8oP5LsoP5Bep/xARM6NCl3BYI9j1NVJOM7wa+PzYhb9qpoxv72TmROj2pd62fToHyn0 pPLEa+Nxti/2u/ay7sWdfLnDQ2NLFI7MUeTMyyY7ufPdMh/7Creybs0+qlw+sNtJviGD3IdT cQbYgcy1fC3Pve4BoHLmKxS1L4/JvZUlTyZ2rFe5+E1eLDTaf7KQufgX5N3QKSazmpU5JVh/ Ppr6N8uoikxixuIx1C4tZtPfYMzDt/LIXXEn4397C+++W42rxgdDHaT9dBz3PJhETCDBmzUU 5HxISX37zwc+ZvZ7J3+d9vQveOT29hPrdbNpeQlFn7pxe8HmdJB5dxa5ufGdCpQGRXlvst45 jRce8FH47Ha2lXoxTBg1/z6euCvAwmVP9mnsJX/aZvwL7ufn9r/yxtIK9hzw4bfEkbPqTqZf fjK28tdL+NN733Coru01d07J4J5HA3jNjb3kT9tI069+wdwT56WzL4uZO/cIOYXTmZrYg9ec nreftk342PdOEW+/UY3LY8GR+QNyf51N5rAext/O/2kRc5/c39G9vdt91Vfw4m2lDH12Kkmf l1D02RHcZjTOG8Yx68kUEjoO30flaxtZs+Ybag0LCVkpTL+hu72erc2a7Fv+R5a+H8OMVdPI PnFMnv2svKeIfVNuZcH8RAJqQd46il7cyqbi9vYTP4S03CzumJnY5X3SuKOUd/MrKd/txYi0 kTBuJDmPZjFhRKfXyudh27ItrN9QR62nfVszs5nRqS36Pyti7gKTGX8YQfXSUraVefHb40j7 +XXMvCc+sNgB/4FKVj+3g227m8ExhMyZ40g4daX6Cp7PKWHfie75l2fy1Nvju/lS1LP2b3xV yurfVVC+x2g/F6OZ/qssMhNP3Z6PyoIi1rxVTa3XQkJWKrkLxpM2NMCDBBo/387b+XvYs9fA H23HOSWVOx7NYFRcp5WMOooWlfDJX9w0Wew4czK58QK5DyLnyR7HqHGJ7flBEmnX2jF+UkTJ e98wPT0poC9JZ2/fHtbd80dKs6dyt20Phe9W4/KAIyOF3Kezu3kffDflB8oPOig/UH6g/CBg yg9EQkuFrj5gm5jN/bnfsGzxVq56axJpdnC/t5l1u4Yw/fWTRS48+yl4eCPlw1KZkX8zo2xe SvM3UvCvzVjfnsqE9ots7dsfsXRZM5mPXc+8cTao3s+6JSUsrYEFL6WeseDWnUvvvZmnRm/n padrSHl2GjmjASIhrmt2lPzQrSy8o4WWI3t54+GKbrdlxaD0Yx+z/3Ar5Y+so/BXzUz+7U+Z 9+mHPP9WBftysxllgdqCD1m6vJm0eTcy81o7LbvLeGNRES8xnScedPQ88bfE8+MVdzLVd4j1 /6OYyqzrefTeuPZGHYl1WKei4pMfsto1nNxFPyPT2cKhTTt4Y8lHNET9jEduP3GsNpwjbBi7 91KwoAZ3eiazHnZgM00YFh3AWQ1gn9FxJCSYbCveyspdbobeex3z0m1gmAzq9Knf+N5G8t8y mfr0reSl2MBdQ9Fzm3npRTu/ebqHX5ai40hIgG2uI0D8ab9udB3BsNlJaP9VT17znrYfAHbs 5N3mFH787+OJPfQ1hc+WUrA0njGLRweUJFknZrHgnUwwvRT9WxG7ulvJYgEMdi3fjvXh61m4 wE7Tl1tZ+qsSCsYM54m72uJr3LCRFa+6GfXYzcyebKdldwWFy/fRdEpEZ2+zFkblXU/OjnUU LqkkfUkKMfgoXVpCaVwG8x4LMInFR+mSj1h34AfMfOl6UhzQUFHB24s+4Y24O3nk9rat+Xdt ZemjFUTensWsefHE+tx8uWwrK/+1Gevb15PZnkzte/UjVv4pmqnPTGf2aDj0fgkFS4oodM5g 5tWWk+fM/Ib1L0SR8/jPmJEM+17/iKW/28z6cXeSe/kZQu2O6Wb9E8Vsi05l5h8yGBXlpfTV rXyyFxjXab24HzDrnXj8Juz7/YcU7O9+cz1q//WVrJy7nUNXZzP7qeHEer9h3TMlrHzWxsL8 jC7XRf+O7axrySD35fHEHtpP4aLtrFxs55klKQF9mfbv2srSX1XALdk8smg4MZ5vWP9cCS8v gAXLT+zTpPylIgq/tJPz3E/JHg2HNuygcI0XLJcGsDcJCzYHSU7YVuelCXr+edfD9m2NNHH/ eSsf3Z5F3p+mElu3l4KHN7LyxXheWBLYtVb5gfKDjn0oP1B+oPxA+YHIBUaT0QeFCT4Tf+d/ XSYQtJAy53omf+9r3nipGqOmglXL3SQ9ej1TR5xcy72hjFJ3PDnPZjNhrB3HiESmLsgi09zP J39uuyuGr5qiN+qIzb2OmXclMSrZwagp45k1P4MxdoND3sAit8bZcTptRGEh1ukgIdlBQnIc CUO73pmzDo0jIdmBc6T9DElTJGBiGzealGEOksdYMOLimTDWhjN9CFa3F7cJmDUUrXEz6PZs Zt2VSEKiHecN2cy6145rTRl7fIFEbyFmRBwJyUOIjYaoODvO5JPH4DiRS+2uoGgHZM69jqlX x+FIdJB2z/X8ONukfE0ltZ22GOuIgt172Zd+PfPmpZKWHs+oKxMZlRjgnCM93afFRqwD3Buq iZl7KzPvGsmosfGMGpdIQqdcsGaPB/+IkWRPcuAYZsMxdjS5//4zHn3w0gAS/yEkJFlocHnb 7na69rLupa2U7G5rrDX7vTDCwaXth3r217zn7QfAYDh3PJVB2uVxOCeNZ/pNNoyyGqoDnWzT Zm/bz+V2Yru58dx2rIAJTLyK3BvisFosxEzMYMIYE1dpXfvdXh+7NnyDkZ7BjHtOtMUscm+y dZ0Mtadt1uIg59fjuXTHVt5Y76Xxsy28vcnG1IXjGXWmOM/EbKR6j4/Yq8cwYaydmGF2nFOy +JfXbiV30okvVT5KCyqoHX0Vs55MJW2sA+eVKeT+OovsDHDXnDixBkZ0PBMezGL6FAcJTgeZ D2WQZjfYs+NIl91aTXDe/SOyL48CSxSj7hrDGIsHV5lBQPbsZduBKDLzsphwefu17MkMkk99 rS1ROEa0tZuh9jPfd+lR+683iZ2YyvRHU0lJjiPhylRyf+LAX1bDvlPC97cM55anUtvbYib3 /9yBUbKXXZ5ADtJH6VsV1DpTmfVkCqOcdhzpKcz4XynYdlSw6cQ3LN83fPmpgeMnWUyf5Gi7 FjyQTfZIzTJ7UfIdobYGbPF2BgXyd4G077iR3P1QEo4osDpHM+UGO/6KwK+1yg+UHyg/UH5w gvKDQA5S+YFIf6AeXcHw1XYWTNzedZltJHmfTSXzxOd5VDzTF15F5YPFLCptwcjM4pmfdL6r ZeKqcON3ZpDS+WaaPYmUMVC4y42fOKyuOvZ5LDgzu97ZjJmSRd6U3jm8QMQk2gEL1mgLDLEx GLBGW7Bi4m8B6uqorreQPG54l/gTxg0n5tVvqDwAaYHcGeqBxt11uHEwNaNzNhHFqPQhsLUe lwEJ7bfTrFGRbXM73JF4XuPue77PSKzRgHMkUyadOdtJzHRgK9zOsicNsqckkXZ1PAnD4gKc 98JCwggb/i+9uIGWP+9k0/sGkd5EJox1cOiAgS0pLqAegYGwjk082XsRGOSwQVMLLb20P4DE MZ3fJ9HE2sHva8EPWM0j1FabxIxzdDnmS8cOwUqnBK8mgDY7IoNZj1azaOmHPG8xcOT9jOmX n8PEzJYhJGfaWP9OES8aKUzIdpI+zkHMCMfJO4qmm6oKk5gp8V27/DtTmLk4pdMCG2kPXk9a l+3biI0Dn3HKN0dLDEljOr1ItmhskVBrBJZ0GQc8uBnC1NGdjt3e1pOlPKAttelR+788lZmL uv5drMMGZguGDzrfMremDqPzYToudxBjfkOtC4ijZ8wjVO02iZmYhLPTYVrHJuK0VVC12wvp dnB7cHstOMd0bmV2ki+3g+awvTiYbf/jr3dTsqyEbfV2Jt8+PLDPmADat220A0enNjnIHt3r 19qeUH4Q6D6VHyg/6Ibygy6UH4jImajQFQyXp5L3v0Z3fRqIxdZx5+sE6+VjmDJuJwXF0WTP +8FpXWD9TSZUlfLcxNKuvzCBKw0aAIfhw48Fm60/PdXoBAtRlpNNymo5pYGZgLeZJkxKn17J 7KdP+XMzCsMNBDmRPeo1wRKN7ZTe8oPtlm4/5Ii2kxDgXCbnvU9n3GntpbOYm6byuGUn69/b z/pnyij0WXBMTCF3fhaZzp63haEjh2B97wj1Pg/Vn/tIm5mC6z0XLl80tS4Ll2b33pOo2r7Q 9K3IyO86NyaGAVGnvJes0dFd4wywzTpuyiAt/2O2+ZKYntPTrOhUFtLmT+eRpFI++7CC1e9s pyDKxqjbx3HPoyk4bQDNGP+Awfaz3w42vipjdX4l5bs9GJ3uXsZcffq61iBcWlqMZrBYsHbp smLBeo7zTvSo/fs8bMvfyiefHuJQne9kr1rL6W9mq93W9TW2RRGFidEcSFTN+A1ofO/DLnP/ AGCCw90M2KGpmSYsOKJOaWf98houQffVVhZcvbXjR+uweLKfvY7pVwb4+gfQvons+2vt2Sk/ OOd9Kj/oFcoP2ig/6Er5gUj4UKErGGx2nOnxZ73T1fjZVv60w07aRB/bfreVCVdmk9JxYbdg GxQFyT/gkedTOW3Owyhb2/ZtUVgxMQyTtv7XFxh7NIPaP6Rzx53e/AafZwLZnY7k0QudT+xR rwnR0dhO/XC1nH/CFfA+vzPhArCQcMN4Zt0wHnwGrq17+WT5dvKfiOKpVePpaS5rc9qJNdzU 7q5mV108N/4kCdt7W9hZNhS324JjRIBPM7igWbBFg++Uu5F+b3PXoQkBtVmTyvytlNoSSYv7 hneX7ifl2ZGBTaLcEZ6dtHsmkXYP+D1u9ny6mz8tL+YlSwy/mZ+IlWhs34Oj3rOM5/HspWDu Vvakj2f2mlRSEqPArKMwdx1fnktcPRAZFQ1mM0YT0NGkmjEa6fkd0S7O3v5dv/+ElWsg+9e3 8ugUB3a3/ogAACAASURBVDFRYKz/mLnPnN4nwG/42u7an1hg+PC1t4eea/uiGjPpeubNPP3q bz0xD01UJJGYbTcyOl2zj3oCGoclF6rLU8l7ajQOLETabTictnP6fAmkfV+wlB8oP+g3lB8o P2in/EDkgqU5uvrK4b28vXg/sQ9cT96iSUzwVbLqpWo6Dw1PynRgPezFiIsjYcTJf7FRFmLj 2+/KOOMZFdd5HoE2xqfFPPfARrbVc45OnVeslyTGkxxvUl9Hl2NMGBaF1W4nJtC5CnogZmw8 DtxUlnb+4DDYt+sIJMcHPj9Cn+/TxP3Vfipd7S9QlA3npAxm5iVhPVBPbSCvmzMOBwbVf97P oYyRjLHHkz7OR+X6GuqJIWlEIHF1jbFP2k8wWYaQ4LTQuKcOd8dCk6pT3luBtFnj8xJWFUL2 r28m79cZxG4q4e0NAc5fAeAz2Fdcjat9zj1rnIO03Enk5thoqnLTBGBxkJRqoXFXXZd5ZKip IH/mOgo/b39BDtRRZUSReW9mWxILUO/GVRd4WD1lG2nHwRGqKzs1ivo69h04l631pP0bVO3y wNgUcm5ytL8mJtUV7hOb6MK/142r0zJ31REaLXYSAhnrY3GQPDaKpmoDa+d2McKG1WIjNq49 aY2PI8Fm4trj7vTHHvYFOq+JXJhsdpxj43GOdZBwjkWuQNt38Ck/6L/7VH7QK5Qf9BrlB8oP RPqKCl3B4PWw5/Nqyk/9t7t9Uk+8lCzeQrnzKmbNdGC1JzFjQQq8X8zqz04mOjE3ZDAhrpp3 F2yn9G9eGmvclL9TxKLcP1LwWftFLyqJKXc7aCjcQkFhNS6Xh32flbLypUrqHYmknMPjb3HY iLEYlK+poPyrGio/38+296tPfrgbBrUHPG3/XAZ+TJrqj3QsawzkxoMlkcn3xtPwzkZWvldD 7WEvtV9VUjhvLQsf2dnlwyVoxqYy9WooXb6ZTV95aTzsofztYv5UEs2Ee8f0zpwTQd1nM/ve 2syyBVvZtstDY72B+2/7WV/4DWQkBpYU24dwqcOg/LMjJF2biA0LY66Op764mgZbXMcTlQJ6 zc/WfoLJ9OE+EVeVF8MHLd7GjrjcnkAaUBTpNwzHuruCVa9X4zrgpvK9zazbYen6BKSetlnP flYv/hrrvdeRe6UF69ir+PlMG+VLiimpCfA4W9xsWVxE/pIKKg94aaz3UvtlGZv+0oxj3InH h0cx4d4UHHv/ysolleyr8lD71V4Kn91OqWcIKentidQwOw6Lj31f1mCYYBzYT+HS/fjioan2 CI298p4bTabTR2l+CSVfuandvZ91i/bi7tLwTYya9tfygJt6bwv4mnBXtS+rOdHIetL+o3Ek RoGrhj0uE3xe9hVupqgqCiteamu6HqTVs591+ftxHTZwf1VG4Rt12CalkN7d3eRB0Qyimdqv atpj9ba3fwtp96bi2L2T/KV72efy4q6qYdPiD1k085OTr3nUcK6eYsP93lYKP62jtqqGbUu3 sLNJzw+XU5yxrQXWvoNK+UE/36fygw7KD5QfKD8QkU40dDEYqiopeLTy9OVXZrHotQwo3Exh 6RCmv55Jwokn1ozL4v7cal5cvJn0jKlMGArYk5i5fCqFL27n7QdLaWy2EJM8nKueupXcG05e 9JwP3Mo82xbefWsjzy/xQVwcY26axON5gT36tsOwVO6YU0PB77fy8qdgjbNxaUYqP78lCSxg fLqRhc+e8km85P+yEAALE5b+glnZPd9dwl0384hlK+8WfMKixT6w23FOvII5izJ73MU+MHYm L7oZXtpK0a/WstoLMSPiuerZrue1/+7TxoQFN9KwdDvr5v6RlR6z7WlGE69gzmMZgSXFljgS nCbGDgeZWW1xWMc5GeXbT3nykI55QHr0mk86kSh9d/sJqpoK8u/a3vULz4FiFm5o+0/HPdNZ NO/0R6OfScztk8hzbWT1W0U896qFhOwruPsxG2t+Vd3lLt/Z26zBtsUllH4vlXkPxbf32rDg fGASOSXrKFxUxqiXMjre/2dlS2LGv2ex+ncVrJxZQqMBtkQHY3KuZ84DJ19x65XZPPHbKN5+ tZSX3/NiRNtwXp1K3tNXkXZiSEBiKvc8VsfKVz9i7hoLjjFJTJ1/I9l7NrJ0SQm/fthkQX5G 1zkGz5clnum/yabhuVJWz66E+Hgm5GWTY1lHwYnzarpZ//A6ilyd/7CS/Lvar6Vjx7OwIJOE HrV/C2kPXcdkVwmrc1eyOi6OMbePZ8bi0RT9axGbZq/G/9v7mDkR/C0Qe9N4JrOHlfdspNaw kJA9ntlPju7++pk4kh/dVEnhqx+yMB/AzuTXZzAjHaxjxzPvpUjeXb6VlwsNjMgoEtJHMX15 FpM7hqxEkTb3eqYbWyh6eh2bbHaSb8/injvKeP4NQj5BuPQjZ2xrPW/fQaf8oJ/vU/lBB+UH yg+UH4hIJwNaW1tbQx2EiIiIiIiIiIjI+VKPLhGRvvDVdl78nYuj3zkUwELygzcz4zseJS8i IiJhRPmBiEjQqUeXiIiIiIiIiIiEBU1GLyIiIiIiIiIiYUGFLhERERERERERCQsqdImIiIiI iIiISFjQZPSdNPu/cxZIERGRkLJERBBpGRDqMC46LWYr5vHjoQ5DRETkjKKtllCHINJvqNDV SX2jL9QhhL3EoYOoqW8KdRhhT+e5b+g89z6d466GxQ0MdQgXLeUIvU/v976h89z7dI77hs5z V4lDB4U6BJF+Q0MXRUREREREREQkLKjQJSIiIiIiIiIiYUFDF0VERKQfM6ldX0LBq/tw1ZhY Rwxn8mOTmD7RFvimDpTy/MydxD7zC/KmnDKXic9NydIS1m+ow23acF6bwT1PZjDKHpyjEBER EZG+oR5dIiIi0m/5d21l2eJDJOTdym/W38kjP4UtC4oocgWwDa+Xfe+X8OKjO3G1dLeGj/Il H/OnmiRmFNzHkoJsUmp2UvCWO1iHISIiIiJ9RD26REREpJ8y2fPe1xjXXseMmxxYgZi7srnx s7WUbHAz9UFHDzaxn5W3bKQqeSRTnsxm6DMlGKeuc/hrij6N45Z3MkkbBjCS3NdHkhv04xER ERGR3qZCl4iIiPRTXqr3mlx6S1uRq42d5MttrNvtxsDBWQcwWkaS99kssABmDQXdrOIvq6E6 YQiZfy5i4Zpqapuicd6Qyc+fTMUZFcTDEREREZFep6GLIiIi0j+ZzTR4wGa34V//MbPHvUnB DpNBQ6Kh0Xd6z6wzsXz3rxvqDYwDX7OlbiSzC3/BiwXjSCjdSv7vavCf7zGIiIiISJ9Sjy4R EZF+yOotw1bzJscjY/EmLwh1OKH3PTvOy1twnMMc9GfVbEL0cG55dDQJNsCewh0z9/Jvr+6l al4io4HEoYN6YcdyKp3nvqHz3Pt0jvvGhXSev/oK1q2D1lZYuDDU0YiENxW6RERE+hmrt4xL Ps8C4Lj1Ii50WaKJjYNqj4E1J5unJrUt3vexAUNsxAZpN7a4KKyDohkUfXJZTLwN6z+aaWr/ uaa+qdu/leBJHDpI57kP6Dz3Pp3jvnGhneeq6ggWLowmNe04v3ykOejbv5CKfiK9TUMXRURE QsjqLSN2z+MdhS0Avz0D35BrOXrZw9SP3xDC6ELNTtKYaA6V1XUapuilclczl47tPG8XgEmj y0NtjS/gvdhS43F43OyrObms0eXFP9QetGKaiIhc3K7JPg5ARbm+gov0Nr3LREREQuj7pXcy +MAyrN4yBh7+oGO5e8IGGlKW4LdnhDC6ULMw5iejif18J4Xr3TTWe6ks2Mxnrnim3BLXdVXT zSdz17Lw2UoaT9mK32fiN0z8RnPbnFsnfj5RE0tOYXLmEYoWbafcZdC4u4K333Jz6S2jGXWW +b1ERER6amyqil0ifUFDF0VERPqApekgAw9/iO2bVXhHL+DYsNsA+EfSHKz/KOPYsNs6lslJ 1rHjmbPAZFX+h8x/xiQmOYkpv72O7GE93IBZw+rbPqSkvtOyBX9gDsDEbF58KRUbdiY/ezMN i7ew8q5SjGg7KT+5nrwHHME/IBERuWg5k1rZXQEVuwaQmhbqaETClwpdIiIifWBg3QfE7nkc ANs3qzqKWkdHzAllWBcAC46bspl7U/ZZVosnt/CX5J62PJGZG37JzLPtZmgi05fcyfRzD1RE ROQ7paa3suGjEz26zFCHIxK2VOgSEREJogh/A4Nq3sT2zSrMQUl8m7kWgGPxt6nnloiIyEVs YrbJUiKp2KWhiyK9SYUuERGRIBrQ4iG2cj4AlqYDHcvNQZfhSXslRFGJiIhIqP2TsxWAiooB IY5EJLyplCwiInKeOk8ibw66jKOXPYwnbQWH/p9DIYxKREREQqWxYQBZVw3ktRUn+5Y4k1qx x7TS2DAAV7WKXSK9RYUuERGRc2RpOsjQ7dP4fuld2KsWdSxvSFmCMfz+EEYmIiIiofTqikhc 1QP4fEvXr9z/vsxP4bpmYmNDFJjIRUBDF0VERM7RwLoPiP62mOORMZgDk0IdjoiIiPQT766x APBQXkuX5dNyNAm9SG9ToUtERCQAVm8ZfnsG0PbExMhjB/EmP8Vxq27NioiICKxdbcFVPYB/ crZyTfbxUIcjctHR0EUREZEeiPA38P3Su7jk8yyivy3uWN6QskRFLhEREemwdk1bf5L/+bg/ xJGIXJxU6BIREemBmD3zGXj4A45HxhDZWBbqcERERKQfqiiP4IuSCOwxrUzLUW8ukVDQ0EUR EZEziPA3dPTWahyzBABv8gLMQZeFMiwRERHpp17Nb/uKfdcMk5jY1hBHI3JxUo8uERGRU0T4 G4jd8zjD/pKCpekgAMetsXjSXlGRS0RERLrV2DCgYxL6B2e3nGVtEekt6tElIiJyiu+X3knU kb8AbZPPq7glIiIiPXHH3SaNDeBMUm8ukVBRoUtEROQU3tELsO9dxJF09eASERGRnomJbeXf l/lCHYbIRU9DF0VE5KIW4W/AvncR8cU/7FjW/P1JuCdsUJFLREREekXu9GiGOwaFOgyRsKRC l4iIXNSGbr8Re9UiLE0HGXj4g1CHIyIiIhcBV/UAoO0pjSISXBfPu8qsYfXtK3l5gxnqSERE pB8xEu/Hb0+nfvzHHBt2W6jDERERkYtAatpxACp2DQhxJCLhp9/M0WV8VUrB0grK9xhgt5N8 03jufmw0CVHtK3hqWL94C5997qHJYsN5Qyb3zE3FaTuxBZPa9SUUvLoPV42JdcRwJj82iekT bWfYo4iIXIwGH1yO1VuGJ20FAEdHzOHoiDkhjkpEREQuJqnprWz4CFyuCECdMUSCqX/06Kqv ZOWv/krDuGyeeO8+Fi5OJfKzjaz4vbt9BYOSZz+hyPgBs966j9+8lk3Snq3kv1SNv30N/66t LFt8iIS8W/nN+jt55KewZUERRa5QHZSIiPQ3Q7dPI7ZyPrZvVhH9bXGowxEREZGL1MTstuLW F1v6x1dykXDSL95VfpeXlowruOPhkTgTbTjGZXDLNDvuXXU0AtTsZcvWGKbOyyTFaSMmeSS5 D/8A34Y9lBoAJnve+xrj2vHMuMlBzFA7o+7K5sYxbko2uLvfqVHHugf+wILF1W37EBGRsNdi T+d4ZAzfZr5D8/cnhTocERERuUj9k7MVgIoKDV0UCbZ+UeiyXjmeuUszGWU5scSH29WMNd7O IMC/p45DdgdJzk5/M3YYic1uqg8AeKnea3JphgNrxxp2ki+34d7txjhtj162LSpiy5DxzJmf REzvHZqIiISQ1VuG7ZtVHT97k5/i8KQ9motL5CISu2A+Q6dPC3UYIhKmNnxkOftK3XAmtWKP aaWxYUDHxPQiEhz9otB1qsYNm3n3yxim3puEFfB7m/Hbo4g16yjMfYXZeWU0RkcTE91Mgwcw 2/7fZrfhX/8xs8e9ScEOk0FDoqHRd0qhq5l9+UWsdo3mX55LJeHcrksiItLP2fcu4pLPs4jZ 8ziWpoMAHLfGctwaG+LIRKQvRW0pJrqkmIHr9VRVEQmutast/PP9Ufzz/VFnX7kbaWltvbr+ 26VCl0gw9ZvJ6NuYuDds5sXFblKevpWc5FN/H03syDiccScnmLeeusr37Dgvb8HR7Rz0Jg2f FvOfxc1MWJHFqFPWSRw66LyPQM5O57lv6Dz3DZ3n3nfO53jbhwBEjPoF8cMuhagL/7VqMVtD HYLIBceYcT+xTz3OwPUfcCxHvTlFJHheW9H2dXpazrlNJn/Nj47zxecRuKoHcE12MCMTubj1 o0KXievtj3jp9z6uXjyd3Ks7FbPibFg9Bg2WOKYuuZOpAJ4KGpujcToASzSxcVDtMbDmZPNU +7Qr+z42YIiNzvfuD+23MCHbZFt+GZOXZ3Tp0VVT39QHx3lxSxw6SOe5D+g89w2d594XyDmO 8DcwoMWDOegyAKw/XEGE39M2F5cX4MJ/rYbFDQx1CCIXlOiSYlrSM/C8vIJjObeHOhwRCSNf lERQUR6BPaaVO2ecW6Hrodkt/M/H/WdfUUQC0k+GLprUvvMRS9+AG/+ja5ELwJri4FLDTdWB k8v8ZXVU2xwk/xOAnaQx0Rwqq+s0TNFL5a5mLh3bed4uC2Meup6ZT08irWY7BW+dYaJ6ERG5 oER/W8wlX2Th2D6NCH8DAH57hiacF7nIDZ0+jaHTp3Es53aOx2rYsogEzzur2/qMPJR3bkUu gJhY9dQW6Q39o9D1t52s+J2HtCevIzvBxPD62v4Z7ReNYaOZkm2waWkplS6Dxqq9rF6+H9vt qaTZACyM+cloYj/fSeF6N431XioLNvOZK54pt8Sdvr+4JGY8+QMaXytm3d/O/cIkIiL9w5DS O7E0HeR4ZAwDWjyhDkdE+oHokmIA/KnpHUWuiIaGUIYkImHCVT2Ad9e0DQ268+6WEEcjIqfq F0MXXRv3U+szqJ2/mm2dfzEshbkfTCLFYmPCghtxL97Cynu302ixMyrnOubkJXb01rKOHc+c BSar8j9k/jMmMclJTPntdWQP636ftolZzMj5I/kLd3LVH8bjPLf5A0VEpB/wpL+KxTjI0RFz Qh2KBJ1J7foSCl7dh6vGxDpiOJMfm8T0id1OxvndDpTy/MydxD7zC/KmnOlpNF6K8tZSWP2D 9hzkvIKXEDt28634068A4JLJWVhcBzlUVRviqETkQrd2TdvX6DvuNnEmqVeWSH/TLwpdzrw7 WZF3lpXiEslZfCc5Z1zBguOmbObedIZZ/CyJzHh/VqcFUaQ9OYNlAUcrIiKhFOFvIK78lwB8 m/kOAMeGaYLpcOXftZVliw8xZsGt/Mu4aNyflvCfC4qwFUxnqrOH2/B6cX1WxrrXKnG1wHcN YGt8v4RP9gAX/rMLLnrN2ZNozu40fLm1lYiGBk1KLyLn7bUVbXdB7pqh3lwi/VH/GLooIiLS AxH+Bob9JYWBhz8g6tvNWJoOhjok6VUme977GuPa8cy4yUHMUDuj7srmxjFuSjb0cJ5Ncz8r b1nLf77XzJgns5lg/451PXt5t6CFKTOHn/5UZ7ngGTPuB8BSreuGiJy7j9dbaGwYwNjU41yT fTzU4YhIN/pFjy4REZGeOG6NpSnxPixNB2lIWdLxhEUJV16q95pcekvnB8vYSb7cxrrdbgwc nHUAo2UkeZ/NAgtg1lBwxhV9lOfvxH37jcxM3M76oMQvoWKpPsjAjz7El30t/rQMAJpm3E/T jPs1Kb2InJdpOSafbGqmUVP+ifRb6tElIiL92uCDyxl84ORA84aUJXybuVZFrouB2UyDB2x2 G/71HzN73JsU7DAZNCQaGn2dnrR8Fj2YZ8u/ayeFu5O45+5uHmIjFxzbmjeJXTAf2+pVHcuO x8aqyCUiQZGapt5cIv2ZenSJiEi/ZGk6CP/fvxBbtwmAY/G3qbh1MfueHeflLTjOYQ76szLd rF9azZh5P8MZBf5uVkkcqkm7+kLQzvOXWwAYPO0GBp+6zQMH4Kuv4Mc/Ds6+LkBqz71P57hv hNN53rwZrrgC4nS/ReS8qdAlIiL9kjnoMmhtxRyUpGGKFytLNLFxUO0xsOZk81T7vOL7PjZg iO07J5UPhPudEkpHZ/H4lWfu+lVT3xSkvcmZJA4dFLTzbMu9h6gEJ40ZWRzvtE1L9UHir/oh x2NjL9qnLwbzPEv3dI77Rjid53++P4oNH1lYWeBjWo55TtsIp6KfyPlSoUtERPqNwQeXYw5K OvkUxWv+wN+9Azlu1XCji5OdpDHRFJXVYdxjb5+Py0vlrmYuneQ4ZcJ4k0aXl6MWGwmJUQHs w8O2ojpqqzay4NMTm/LhN2DZTW5y/uOn3JgcnKORvmPMuL9j8vnOzKTL8KemY63Ypacviki/ kZreyoaPoKI84pwLXSJykgpdIiIScpamgzi2T8PSdBBz0GX4hkxqK24NHsHxY+Fxt1bOhYUx PxlNbN5OCtfH8eOro6n582Y+c8Xz41tOGdthuvlk7jqKHFksyc8gptOv/D4TWgCzuW1Yos/E bwCRFqxRcUx98T5+5Du5vq+kmIX5Ucx8PYvM+F4/SOljx265HTPpMlo1X5eI9BOpaW3zfX2x JQIeD3EwImFAhS4REQm51sg4BviPYA5KwpO2Qj24pIN17HjmLDBZlf8h858xiUlOYspvryN7 WA83YNaw+rYPKanvtGzBH5gDMDGbF19KxRZn69I7zG+3gCWSmHgbVgu06Ob6BSV2wXyOx8Zx dPacbief9z6+IARRiYic2YlCV0XFgBBHIhIeBrS2traGOoj+IlzGePdn4TSWvj/Tee4bOs/n LsLfwOCDyzCG39cx95bVW4bfntFlPZ3jrobFDSTSoiS4r7WYrRz2HAt1GGEvWO/3xPYnFhyq qr0gn7JoW72KuEdmc+zmW/l21dqgb1/X1d6nc9w3wu08p4waiLdxAP9VdYyY2MC/omuOLpGT IkIdgIiIXFyivy3mki+ysFctIq58dsfyU4tcIiKBii4pBsCfmv6dRS5L9UEGr1iO/YVFfRVa jw1a8xaA5g8T6Se+KIkgd3o0X5T07lfntLS24lZFuW5oiZwvFbpERKRPHbfGYWk6iG/Itfwj +d9CHY6IhBF/2hV8W/AO3iee+s71IhobiF0wn8ErlvVRZD1nOpMwnUkcy7k91KGICPDO6ki+ KIng85IzP5k3GFLT24Yv9vZ+RC4GKnSJiEivivA3ELvncSL8DUBbz6368R/jnrCB5u9PCnF0 IhJOjsfGcizntrP2hvKnZWA6k4hoaGDg+g/6KLqe8Sx7Bfe6DQz86IOOHmoiEhqu6gG8u6at 8HTn3S29uq+Oebp2qUeXyPnSZPQiItJrBh9Yhn3fIiL8DRyPjMWb3DYJtApcIhJqDYuWAODL 7n/Xo0jXQeLm/BLfxGtpfr//xSdysVi7pu3r8h13mziTendq69T0Vq6ZeJxrso/36n5ELgYq dImISK9ptcYS4W/AN+RajMT7Qh2OiIQxa3kZcXN+iXH3fRzNm3PW9fvbHFiD85dhrdiFd/6/ 4U+7AoCoz/8S4qhELm6vrWjrzXXXjN7tzQVtPboK32/u9f2IXAxU6BIRkaCxNB3ke9XLaRjz AgDG8Pvxx1yhieZFpNdFbSnGWl5GpOtgwH8b0dAQ8ic0fu+V5ViqD9J09700J12Gcfd9mEmX hTQmkYvZ2tUWGhsGMDZVvaxELjSao0tERILCvncR8cU/ZPCBZQw8fHLOGxW5RKQvnJjPqjmA oYgD139A/FU/xP7Cc70VVo/YVq/CUn0Q05nUEb9n2St4H18Q0rhELmavrWjrE/JQXu/35hKR 4FKPLhERCYqIFg8AxvD78A3RnDIi0re+XbWW6JJiWpw97wVlJl2GpfogAz/6sGPOrlAwZtyv 3lsi/cgXJRFUlEdgj2nlzhlmqMMRkQCp0CUiIgGL8Dcw+OAyGEDHBPPe5KfahiqqB5eIhEgg vbng5NMXB3iOtPWoCmGx6dTYIxoaGLxiGRGNDTQ890KIohK5eF0z8TjX/EhDFkUuRCp0iYhI QCxNB7nkiywi/A0AGIn3YQ66jOPWWI5bVeQSkQvLt6vW4k8L3bUruqS42wLd8dhY7C8sAsA7 f0HI5xATuZhck62J4UUuZJqjS0REzupEUQvAHHQZLd/LwDfkWurHf4w5SMNtRCS0vn//ncRf 9cOOeboCEcoiV0RDA0OnTyP+qh8S0dBw2u99E68FwFr+174OTURE5IKlHl0iInJGJ4YoDq5e RuOYFzCG3w/At5lrOW5V7wIR6R+iPv8LEQ0NAc3PdSpreRnHY2L7dPji4BXLAPCnpnfbY+sf eXOImHHfeR2XiIjIxUY9ukRE5IwGVy/DXrWICH8DUUf+0rFcRS4R6S8s1QehtRXTmXTORSr7 C4u4ZHIW32svPPWV4zGxHI+J4WjenG5/fyznNk1UL3KRcVUPYOkLkXy83hLqUEQuWCp0iYhI B0vTQQYfOPlF72jSHIzh9/H3iVvxpL0SwshERLpnJl3GoX2HcK/bcM7bOJZzGwADP/owWGH1 yNG8ORzadyjgSfRFJHxVlEfw/75g5bV8Db4SOVcqdImICABx5bOJL/4hsXsex9J0EGjrueVJ e0VPUhSRfu98ej350zLwp6bTPPHabufKCqXB+csYOn1aW881EQl7qWltT3r87/8eEOJIRC5c KnSJiEi7VgCM4feFOA4RkZ6zlpcFZTt/3/wlnmWv9MnTDa3lZcQ9MrtHk+cPWv8B0SXFQTtO EenfnElt+ZiregCNDSp2iZwLFbpERC5C0d8WM3T7NOxVizqWHb1sDnWT/gtP2it6kqKIXBCs 5WVcMjmLS667OtShBGRw/jJsq1cxcP0HZ123+UdtwxrP5YmSInJhumZiW6+uinIVukTOhQpd IiIXmYGHP2Do9mlEf1uM7ZtVHcv99gwVuETkghK1pa3440+/Iijbs5aXEfvU473aeyqioQHb 6aab5QAAIABJREFUmjcB+Mfs7ieh78y4+z6+LXinR+uKyLn7H3OiuHFyNBXlof+KnJreVuj6 vEQT0oucC81wJyIS5iL8DQw8/EHHkMRjw27Db0/nWPztHE3SFycRubCZziR82dcGZVu21asY vGI5tLbSsGhJULZ5quOxsdTt/C8Grv+gR/OKmUmX6amLIn1gw0cRNDYMICamNdShdMzT5apW jy6RcxH6crWIiPSa2Mr5DPtLCnHlvyT625PDXv4+8Uu8yQs4bu39uWhERHrL0bw51JVWYsy4 PyjbO7Gd3n76opl0GUfzdKNBpL/4oqStyDU29XjHHFmhdCKG3Rq6KHJOVOgSEQkjEf4GIvwn nxg2oKXtZ9+Q4PR2EBEJZ/60DI7OfpiG517ole1bqg+e01MdbatXccnkLAbnL+uFqETk4/Vt QwQn/uh4iCNpc032iTm69HVd5Fxo6KKISBiwNB3EXvUbBh5+n2PDbsOT9goA3uQFHL1sDn57 RogjFBEJruiSYloHDMA3MbiF/N4asggQ98hsrOV/pX7dBvxpPb8uD2howFpepicvivSSL0ra CkrTcswQR3LSwuf8OJNa24ZTxoa+l5nIhUSFLhGRMBDZdLBjYvlI42DHcnPQZfSflE1EJHgG 5y9j4Ecf4nl5RdCGLvYma3kZ0SXFHI+JwXQGNudWS3pGxzZEJLhc1QOoKI/AHtPa0ZOqP3go ryXUIYhcsNQXUkTkAmP1lhFXPpv44h92LGv+/iSOXvYwf5+4FfeEDSGMTkSkb0R9/hcAmrMn BX3bg/OXEX/VD4NaWIpo8GA6k2iacT/HYwObH7E5exL16z7m75u2Bi0eEWnTMWyxHxW5ROT8 qEeXiMgF5vuld2JpqgZg4OEPODbsNgAaUnpvuI1I6JjUri+h4NV9uGpMrCOGM/mxSUyfaAt8 UwdKeX7mTmKf+QV5U7o+st34qpSCpRWU7zHAbif5pvHc/dhoEqKCdBgSVBENDTTdfR+W6oO9 8kTCSNdBLNUHsa1eFbShjM3Zk6grrTyvvxeR4OuPwxZF5PyoR5eISD9m9ZYRu+fxLk9M/EfS HIzh9/H3iVs7ilwi4cq/ayvLFh8iIe9WfrP+Th75KWxZUESRK4BteL3se7+EFx/diau7kSD1 laz81V9pGJfNE+/dx8LFqUR+tpEVv3cH7TgkuI7HxtKwaAnfrlrbK9s/UVSK2lJ8ljVFJFxM y1GPLpFw0bNCl2lQ6/J1WdS4q4J1S4tZvbyM0gOqfouIBNvgA8u45PMsBh9YxqCaNzuWHx0x B0/aK5pgXnqf10PlZ3sp/dxNo+/sqwefyZ73vsa4djwzbnIQM9TOqLuyuXGMm5INPSxCmftZ ecta/vO9ZsY8mc0E++mr+F1eWjKu4I6HR+JMtOEYl8Et0+y4d9XRGNwDkgvEsZzb+LbgHf6+ +cugbC/ukdkM/OjD89qGtbyMS5MT+P79dwYlJhFp8/tVPv6r6pgmfBcJI2cfulizl5WPbmZb fBZLlqcSAxhfFvP8o5W42+tbm97Zy/TXppNzueU7NyUiImdm9ZZhbfwrxvC2SZWPxd+Gveo5 jsXfztHL5oQ4OglrPg8lizfyJ2MszyxOwQbgquDl2SWUH25bxZqcwqz/mETm0L4MzEv1XpNL b3Fg7VhmJ/lyG+t2uzFwcNYBjJaR5H02CyyAWUNBN6tYrxzP3Cs7L/HhdjVjjbcz6LyPQXpD 7FOP05w9iWM339pr+ziWE5wes7bVq7CtXkX0ls3nFe/xmFgiGho65iYTkeBRkUskvJyl0OWj dPkWtnkdTM0b3p7sediU/zVG5nieWvL/s3f38U3V9+P3X0mapg0mKbTcFZui6EB64+AaglQq 7KuCnYD7jQHdgOncLLso+4r7wrxWL0Uvuq8r82aj/r6gczrKLDL2c4CrVPZTLBRQdwmWVuE7 FZqOQrFAbkbaJD3J74+0actdC81d0/fz8eBBenL6OZ+cnpyc88778/5MIM3dyNYVb7Pr98eY /sxNPV9wCiGE6EbtsTF0/xQ0LfV4tSZah83BqzWhJKZzOvcoXu3VFS0W4uoofLn+bTb+VeHG JXr8I/vcfPjbj6iNMzPvuWzSWk7w9nMHef33N5G5MrVL0CnUXXNhs4LeoMdTsZPCJ5rJWZ/P 3YN18KkbJ/TuuuMqv4ezV77Pnz4wcverZrRAG5CaLCGvcOjVfj50CNaXMujtHbDou6Hv1KFD 8PWv97ze5bzyXwBonn6qb8dR8jgwmVADqRoXJCVdc1NyPIee7OPwkP0shLiUKwe6lGYOH1TI XHY38+5qv5RstHD4qI7bfptNmgEglbzvj2L3bxqxKDcxTpK6hBDiitQeGwmnd+ActQgAr9aE N84IieaLam5JkEuEnNLMx+85SfvxXH7+oxT/MuuXfPABTHjim9ydGw+kkmpt5Bd/stCgpHJj JD7rrzOQ9rU2UkL6jZpCc+X7PP9MM+OeuI+8MZ3PNJ5pCeWGBf4b1t7s50F/3YUJcN4+DWuI /y5D75yMtu4wX+0+gCfz2oaLa35fjn7zJhyzF0Af+6t574C/+L7CNbfV2/0srp3s4/CQ/dyd BP2E6NRDRpcL57/0jLyp86rSeaiRBn0q38ruvMrVpxow/cuJnGaEEOLKDF8UM6i+FLXHBvgC wxTPTtiCkhj8mcOE6JmT5jN6xkxOCSzx1DTyJSPIn9w55aBxbAqJZxzYwtk1jQ5TElisTrR5 OTzePunclzudMFhPcMPACg2vv81vf+9m8jNzmTdZctSjVWvebNR22zUHnq6GJ+tWtHWH+zT7 omJOx7GqKCj9CcUMk0KI6GW3qfjhknjsNnhntyvS3RGi3+ihGL0GbbwLp7Wj2LzC0QOnYEIq N3aZbttzzoUzXhO+oQxCCNFPaFrq0bTUB372akyoPTY8hqxugS0JcolI0moUf4ZIu4a/N+EZ n8q4roXb2yIx8YwB81gdp2qacAaWOThy2MWI8SkXXHco2BusnGy8lqr5CiffeJvn/gD3/E8J ckW7jsBRsGpoXUlr3my8RiNe09UPE1TbbGgs9T2veA1C1a4QIroYTT72V6upq1Vjt6ki3R0h +o0rB7o0KYwZq3Bwax0NDgXnpzW8s1thzFRzl5oYbmorG3GOTmGEDFsUQggAdGerGLpvCsOr bsF0ZGVgecuoxTTlfsZXUz/ANSQ3gj0Uop1mMCPTXBx9twkPgMPCe39zMGKyGWOX1Ro+OIV9 WBIpl2kmRJ1j7LdvwrTvY7ZWNGM/4+DIxvd5r2E4M751QeBBaeadFVtY/fSRi2ZK9LgVPE4F j9Plf40dP3fExP77Yzb8xkrmY3eSM1LB6XD7/zllVumBrjVvNqe+PHVNGVmDNpQyfOIt6MvL gtqn1BQ9wyfeEtQ2hRDR6/apXgDqaiXQJURv9TB0Uc9t37+ZXSsOsGbGAf+iMdn8/FvtYS5n ExWPv0tFVRuZT9wU5otfIYSILlpHDR6DfyhNW2I6WkcN3jgjXm3nDblXawKpuyWiShK3fSuF irVv8YsPBjPIeo6TipmH5rQft24HtZsPUP5HKyOX3EBamL/U0o6fRGGRQtn6t1j5lIJxjJkZ v76TnGG9bEBppHz2W1Sf6bKs6DUKAabm8PxvMzjz7jFOup2cXFnOh11/d9g4VuzI5aZgvRjR ZwkVO0h4+y1aFn4fV050f1kwaEMpEPzhhp6MLLR1h9HW1oRl+KYQIrIysrzs36dmX7WG23O8 ke6OEP1CD4Eu0E/NpejVVKqrmnHqU5g45ybSOoYtxjk5+TmMXXYPD82RNH8hxMBkOrqKhKYd aFrqOfXNk4EZE89OeAP34FwpKC+iXsqCu3mUv/PXXc04R93MvAencFty+5NtTez93THc35jE 0h9G4istDSkzc1gxM6eH1YYzb+vDzLtoeSpLKh9myRV+Vb90PhuWXv75iIzaFJeUULED/eZN eDKywhro0tbWEF+9h/MFy3q1vsZST1tGNiqbNej99GTditruHxYpgS4hrs2zJVpMJh/zFyoY Tb5Id+eKrk/z96/BIhldQvSWyufzRfc7O4xk1o7Qk9lRwkP2c2hpWurxxSUxYsQIGs+0MHTf ZLSOwyiJZponVUq9rSCSY7m7YUkJxGnCfaHrpvkLF6YxhgFbi7NN8XHa2hrpbsS83rzfh0+8 BY2lvk+zIF6LETeOQG230/TxZ1eVoaW22fCaouvLDjmvhp7s4/Doy36+ZUwCdpuKAx+3kmaO 7tvh/dVq5s3VkZHpvWJBepl1UYhOPWR0KTgbnV0KwF6JDlNq/IC9CBZCxD79iTIG1b+I1lGD NXMDjHgYAPu4tXi1SYFhi0L0L734rE8EW6MD+awXkXZ24xvE760KeyZTa94c9Js3kVCxg/NL C3v9e9EW5BJCECjsfn2aL+qDXEBguGJdbQ/zyAkhAq4c6FKOsXHeuxzszQRG8WYe2jOL26Qg vRAiRmha6lG32QIBLJXHhtZR43+u1RJYT4rKi35NPutFP+LJzI7IcL2W/EUAtGX1vG1DSTGK OZ3We2eHLNClttmIq6uhLSNbgmlCXKUt5f4PsVl5/Wdc+vgML5/W+WdfzMiUOl1C9KSHjK54 9AbAoSdtipms6aPJukF36VU1Opl1UQgRE7SOGpIOP4zWUUPrsPs4O2ELAK3DZ6Po02kd5p/S 3hDJTgoRNPJZL0RPXDm5vaq1pbHUYygpBqDp488gREGoIYvnE79vD2e27Yz6ovxCRJv91f7M qP5U2D3N7OPTOqg7rCIjM9K9ESL6XTnQpTGzpGIRM947ynvb/8Hu4iPsHXsDk+eMJWemmZFy lyeEiAGalvr2oJY/gOWNM11yxkQlMV3qb4nYI5/1op8YOn0Kijkd67qXojaLSb95EwDOhYuC PttiV56sbOL37SG+eo8EuoS4Cg0WFXW1agxGX7/K6Hqq2MMLpZ6oL5wvRLTocdZFNHrS7prA krsmkH+6iYN/+5yPt7/L6ufiuK14Pg/NiO+xCSGEiFZD900JDEfsOmPimUk7ZUiiGDjks15E OY2lHm1tDRrL8YgFudQ2G4a1xWgs9Zzd+MYl1zlfUIiSZg5pkAv8GWbawzUoaeaQbkeIWNOR zTW1H2VzAf2ilpgQ0aTnQFcHp4Mvqo9xuMrC0aNu9GNGMDJFxi8IIfoPraMGfeMmHDcW4dV2 3Cj58MYZaR0+B1WbFdqXS5BLDEjyWS+ilK66CgB3BLOXvCYTia9vRG23o7HUXzKY5TWZcOYv DnlfWvNm05o3O+TbESLW7Kzof/W5hBBXr8dZF+2H/8F7bx7lw7810awxMG7mOPJ/OpYJ4/Uy 65IQot8YcnA+CaffAsBzXRbOUf4bkbMTtshwRDHAyWe9iH7O/MVRMUTvSrMvXi74JYSIHvv3 9b/6XEKIq9fjrIuvF1RxME5P2uRx5H0jGZMGnJ8eo/rTC9bVGMj8tpmU0PW1b5RGyr/9Ns3L HmD5TPl2WohYpz+xCa/WFKi75RqcS/zZKlqHz8FjvDWwngS5xIAXS5/1IqZFQxDp/NLCS2ZT 6aqrSJ47i9Z77+Ns2Zaw9EVjqUe3bw9KmjkqgoBC9AcffOyirlYlQwGFiHE9ZHRp0Bri0bvb OPP3L9n99y8vv2q8GdMcM30b4eCm9uktrDsyltWvT2Jk16esjVQ8s5f39llpaa8l8r0VGaTp O1ZQOFlRzcaXv6ShUUE7ehTT/z2XuVP1F29GCBGzdGerGHxoAWqPDdeQ3ECgq2XUYs6PLuzh t4UYiML9WS/E1VHbbFFTfN6TmY0nM/ui5Ynl/iL0nqxbL3ouVPSbN2EoKeZ8wTIJdAnRS0aT j9tzJMglRKzrYdbFG3io8obQ90JRsB+3sPf3H7Frjwuuv3AFJ9VPv8Outlsp+ONYUt1N/PWp d1n/WwOrHzOjBTyHD1D6zCnGFt3HT76ho/lv1fxX0S70G+dyd1roX4IQInI0LfWBzCyP4VbU HhseQxYtqd8PrNNZk0sI0U24PuuFuEYJFdtJWl7A+YJl2IrXRro7AZcKwDkXLgrb9t050wDQ Hq4J2zaFEEKI/kAd6Q4AnHz1z/yi4COOJmfz0IMpF9cDafycvQeM3P3oBMal6TGOuYF5y27G XXmUg04AhaNv/gPntEnkz0zBmGzgxgU53DO2merK5ktv1NnEtgdfo+gZC/bQvjwhRIjoT2xi 6L4pDK+6BU1LPeAPaDXlfsZXUz8I1OESQgjRf8VX7wGgLS3yQxcBtLU1DJ94C8lzZwaWWUtf 4tQXJ8M6vNKTeSvuqdNw3SHZXEIIIURXvZ91MYRGPjif0h/5H9vfOHrR856jTZwypPCtLplZ 2vHDSHUdxHIcbhvvwPK5wohvdQ2SGRjzNT3bPm3GSQrdBzA6+LB4F3sHT+LRlWaMoXhRQoiQ 058oQ+uowRtnJK5LVpfU3RJCiNihtlkBcEdJQMeTmY3Keg6tpb5bAfpwD6/0mkw0b68M6zaF EJFXV6smLc2H0SRDMIW4nKgIdNFDrQ+Pw4XHYMCkNLF1wTZ2pUxh7W8NGHUubFZA8f+vN+jx VOyk8Ilmctbnc/dgHXzqxgldAl0uvly/i/KGm1i+PoORXbadmpwYkpcnupP9HB4xt5+bdsOx P0DSrTDuEf+yiU/D+eOob3yA5Ah1K+b2cxSSfdypTZGLWjHwnC3bElV1usA/+2JCxXYMJcUo 5nTOFxRGVf+EELFp3hwd+/ep2brNJbXGhLiC6Ah09ZoO0w1JpCV1hq0uGuZ4nYG0r7WRcska 9Aq2v1XxX1UubtswhRsvWKfxTEuQ+ysulJqcKPs5DGJtP+tPlJFUWwD4s7WahvofEzcZTJMh Qq811vZzNJJ93N2wpIRId0GIiIi2IJJjVRHW0pcYOn0K+s2bUNLMOPPDP1xebbORuHkTPqMx ItsXQoTX9WYf7IPaw2puz/FGujtCRK2oqNHVE22SHq3ViU2TxN1r5/N40U0YnU7sLh36FECj w5QETqsTbW4Oj79+H3njNbScc8JgPV0vjU4d05CVo/Dh+hpOKpF6RUKIK9G01DOo/sXAz63D 5uAxZOG4qYjmSTsj2DMhhBDhpKuuQmOpj3Q3LqKY09FVV6GtrcEbwSCTpqEeU9FKDGt/GZHt CyHCKyPTH9yqq+0Xt/FCREy/eIdox6UwwtnMF8c7l3lqmrDoUxhzPYAB81gdp2qacAbWcHDk sIsR47vW7dIw9sffZMkTuWQ2fsTGP16mUL0QImKGHFzA8KpbMB1Zidbhn0nKqzXx1dQPcIwp kvpbQggRJnab6orP19Wqe1ynr5KWFzB84i1oa6NvZkFXTi7WdRuwR3AmSE9mNgAaSz1qmy1i /RAimu2s0MRMYCgzyx/o+rQ2tOdeIfq76HjHKwoep//f+fYsqzaHgsfd/sOwm5iR42T3cwc5 0uDE/sXnlL94DP2cDDL1ABrGfvsmTPs+ZmtFM/YzDo5sfJ/3GoYz41tJF28vyUz+Yzdj/10V 2/5b0rqEiCZerT8H0zlqEd646BqqIoQQA8H+ajXz5uqYPFF32UBWXa2aeXPj+eGS+JD1Q9Ne 7N1rNAYCOtHGmb844kMGbWtKsK0piWgfhIhmK5ZruWe6LiaCXR3DFWPhtQgRSlFRo8u+9S1W rm3qsqSJNTMOAgamv5pPfpae24ruofmZvbzy/Y+wawzcmHcnhUtTA9la2vGTKCxSKFv/Fiuf UjCOMTPj13eSM+zS29RPnUJ+3p9Zv/pjJr42ibTQXacJIa5Af6IMAOco/42CY0wR9rFrAwEv IYQQ4dFgUfHcWi1byv0z9RiMPupqVZcseJyW5sPn8wfFViyP5/l17pD0yT11WtTV54o255cW RroLQkStjszT69N8gWF//d31aT7+2aCirlYdM69JiGCLikCXccFcNizoYaWkVPKemU/eZVfQ kDIzhxUzcy7zdCr52x/qsiCezMfyKb3q3gohguXCIvOuIbkyNFEIIcLMblPx3No4Xl7feVn4 6Ko2flzQdtnp640mH3/e7uY7c+LZUq5hfEYcP17aFtR+KeZ0mrdXBrVNIcTAsrPCH7iPpcLt GZle/tmgoe6wiozMSPdGiOgkOY9CiIgZVO8PNTtHLcI1JDfCvRFCiIHFblPxXEkckyfqAkGu 7y5UOPBxKz9b5blskKtDRqaXF0o9AKx+vDMTTISfoaSY5LmzelyvwaLi0KEwdEiIKFFZ4b/d nZUXO+VqMrL85+aGBrmVF+Jy5N0hhIiYM5PewXFTEdbMlyLdFSGEGHBsNni2RIvdpuL2qV4O fNzKC6Vu0sxXDnB1NStPCQxbXLE8Pmh1YzSWegZteDEqi9D3xv596rDW0Bm0ft1lZ6h8eX0c 8+bqGJWSyJSJCUyYAM+VRMWgDiFCym5TBd6HsRTompqjMD4jdjLUhAgF+ZQTQoSV1lGDkpCO V2vCqzXhGFMU6S4JIcSAlGb2sXqNh8wsb5+G9czPV9hXrfCnzRrmzY1n6zZ3n+vG6KqrMBWt pPXe+zhbtqVPbUXCvDm6wOOMTC9pZl/g/+vNPm6f2veb1AaLf6KANLMPd04uCW+/ha66Cqe5 e3F8u13F/mr/zb7B6MNhV/FsiZaGBnXIaqsJEQ12tmdzzbw3doJc4B+Guet9V6S7IURUk0CX ECJstI4akj+aiZKQzplJlVJwXgghIixYdbVeKHVjt8VT+baGnRWaPge6OjK5PFm3BqN7QWO3 qdhXrb5idkhdrZrbp3ppaFAFCkbX1XbWCgJ/wOnIl6292mZdrdrfzmEVDQ1qGiydgasfFbTx VLGH80sLceYvvuTslD8uaGNqjhIIZn64J5ElP/CxpVxD3WEdW7e5exymKkR/FIv1uYQQvSOB LiFEWKg9NpI/monaY6N1WLYEuYQQwWNtpOKZvby3z0qLRk/aXRP43ooM0vRX25Cb2qe3sO7I WFa/PomRoehrDHuh1MMb5d6gBM88mdm03nsfrXmzg9Cz4KirVbOiUEtdrZpXNrovG+zKyPSy dXtntsX+ajW29iFUdYdV2G2qXm1vS7mGFcsvPy24wdgZnHLlXL7OpdHk6zZz5v33E5hIoK5W zRNFWl4olcwuEXv274u9YYtCiN6RQJcQIiy8WhP2sSXEn9sjNbmEEEHkpPrpd9jVdisFfxxL qruJvz71Lut/a2D1Y2a0vWlCUbAft7D39x+xa48Lrg91n0OvYybF1Ws8Ydum0eQLWoaYM38x zvzFPa8YJnW1aubNjcduUzE+w8vUq8gQ6cgmudqb7Y5aaeMzvJhMcPsdXtLSOoZB+vqUhZWR 6eXDgy6eKNLydHH4jhHRd3W16j5nTA4EdpuK59d5qKtVX1XdQSFEbJBi9EKIkFJ7bIHHzlGL JcglhAiuxs/Ze8DI3Y9OYFyaHuOYG5i37GbclUc56OxdEydf/TO/KPiIo8nZPPRgyiWDY8+V xPU6EyfSdlZoAjMpykyIfXdhkOvP28Mz1O/2HC8nmlvY9b6Lrdtd/GyVh/n5/iGIl9r+oPWl DJ0+BV11Va/aN5p8vFAqwxb7k2dLtNwzXSfv614wmnzMylP42SoJ5AoxEEmgSwgRMlpHDcP2 jEN/oizSXRFCxCjP0SZOGVIwp3Uu044fRqqrGcvx3rUx8sH5lP5tPiseHYf5EsMdT5/232B2 BDui2ZZyDQ8t8fdz5r1Kv6xNM2h9KYaS4kvOIBhuXYNc312osOt9V9QGhrS1NWhra4g73D9n qhRXVlerDsyWuWJ5PKsf71W+qhBCDEgydFEIERIdhefVHhvx5/bgHBU9Q1CEELHD43DhMRgw KU1sXbCNXSlTWPtbA0adC5u1l430kBxhMsGtt8Inn6jJ/04C770HSUl97nrQvfYarFjuf/yD H8Brr2no8cVFmdTkRNj6Ohw6hOHeuyB5XMT68tpr8OCD/sed+zMxYv3p0eT/CzZvwvSPOkzJ V+5nag/Pi74L9j7+1iP+/++8E95/H15eH4enNY7nn4/O81G4yLEshLgUCXQJIUJCSUhHSTDT OuxWGa4ohAgDHaYbkkhL6kzJCla+g04Hm/9XK9+ZE8+hQ2rumObl+VJPVNXJ6Vq4/Pl1bubn KzSeiXCnrlJqciKnvjzFiEOHAGjMmgxnWiLSlwaLigcfTADguwsVfvmsO+r3p+bOWcRtuwVP 5q14r7DfUpMTaYzQfh0ogr2P91erOXRIx/VpPtb/3kVDg4rvzInntddUfPR3L+/sdvXcSAyS Y7k7CfoJ0UkCXUKIkPBqTZyZ9I7MriiECCltkh6t1YlNk8Tda+dzN4C1DrtLR1pK8LZjNPm6 zVQ3b248W7e5oyLYtWJ5fKBmT0eQKxo9VxLHjwqUHof+WddtQGWzXXGdUEsz+3h+nZuGBnW/ qfGjmNNRzOlBbfPZEi2z8pSoOM4HsttzOoNZRpOPjPbz0SPLtPyoIDgTQIj+p8GiovJtDRmZ 3n45TF2IUJIaXUKIoPEPV5wVKEAvQS4hRKhpx6UwwtnMF8c7l3lqmrDoUxhzweyJnjNWTh53 cK1hi45g1/gML3abinlz/UGvSGqwqHj7r/4+RHOQ65HC+ECdsyvxmkw48xdzfmlhmHp2efPz B3Yh650VGp4riWPe3Hj2V8stQ6RlZHq7BRwzMr3set8Vte95EXo7KzQ8WaTljXLJXRHiQvKp JYQICk1LPckfzUR3tgrj0ZWR7o4QYqAYdhMzcpzsfu4gRxqc2L/4nPIXj6Gfk0HmBYXlj774 F1Z/r5qDF94XKgoep//f+fbn2hwKHvfFN5BGk49d77v47kIFu03FDxdfOXATamlmf/DtlY3R G+QCeLrYg8Hoo65WHRhiKYJPX17G8Im3YCgp7nNbU3O8geN83lyZ6U+IaJOZ5Q98/tMS3ZOk CBEJEv4VQgSF1lGD2mPDY8jCPnZtpLsjhBgw9NxWdA/Nz+zlle9/hF1j4Ma8Oylcmtryrl5g AAAgAElEQVTrGl32rW+xcm1TlyVNrJlxEDAw/dV8vjv+4t95odSNyaSNiuCSP9Mj0r24sq5D P7eUa7g+TXtxtpTVytDpd+K+IxfbmpLIdLSf85qS0Fjq0e2twrGqqE9tGU2+wHH+uw1xrFge z6d1baxeM3Cz3ET0a7CoSDNH58yowdYxXHH/PsldEeJCKp/PNzDOBL0gxQxDT4pGhkek9nPC 6R24B+cOmCGLcjyHnuzj7oYlJRCnkW9uw61N8XHa2hrpbsSEnRUaHlrSvWh+h9Q9lfDtb+Oe Oo3m7ZWR6mK/prHUM3ziLXhNJk59cfKS61zLebXrZAfz8xWeWuPpsdbaQCafXeFxqf08ZaJ/ Eok//cU1IAJekyck8M8GFe/sdnH3nbpId0eIqCHhXyHENVN7bCSc3hH4uXXY7AET5BJCCHH1 ZuUpPL/ODfiL6HercbZ7NwCuO3LD0he7TYXdFluBY8Wczle7D1w2yHWt5ucrbN3mwmD0saVc w7y58TG372JRXa16QP2d6mrVNFhU+HwMiCAXEKjbVnd44PydhegNCXQJIa6J2mMj+aOZDDm4 oFuwSwghhLiS+fkK313oz+TqVtB/9WrObnwD58JFIe9Dx2QCsRiw8WRmh6Td23O8gckYLBYV DQ2xtd9ijd2mYkWhlskTdRGfNCNc9u31v86BNANhRpY/oNfQMDD+xkL0lrwjhBDXxHh0JVpH DR5DFu7B4fn2XQghBqK6WnXM3ai+UOpm5r0K11/fJesiKYnWvNko5vSQbrvrjJk+H9hsId1c xGgs9UFvMyPTH+x6odTTbQZAERx2m4p7puvYWRGcwv8+X+fxHqw2o9mfNvtf46y8yNdODJeO 9+H+vbH1GSFEX8k7QghxTexj1+IctYgzk96R4YpCCHEJ+6v7fplVV6sOZB7FXrDLw5+3u8nI 9KKtrQGrNeTbrKtVc88Mf4bL+Ax/0CbWhjhpa2tITdEzuPDhkLRvNPkGVCAhnJ4tiaOuVs2z v+r7fGEXzhD70JL4mJ45025TBc6RUwdSRlfH0MU6ybAUoqvYumISQoSU2mND7fF/9e3VmrBm viRBLiGEuIS6WjU/XBLPiuXXPjSuI8hlt6mYea+XtLTYCsgYTT6MJh/68jKS586ECRNIqAjd UPiO/dlgUQWCXLFYUL1j6GL8vj0R7om4Gvur1fxugz/A9cKLwZvZ8oVSd2CmzBXL4wOTCsSa nRX+29qZ9yox+b6+nDSzjx8VtPGUzIYqRDd9/7pACDEgGD4vRt+4CW+ciTOTKiXAJYQQPfD5 /LPV1R1WsXXb1QVVtpRrePJxLXabiu8uVHih1B3CnkaOxlJP0vIC/w/3309r3uxuzz9ZpMVu V5GW5s9aMJogI6szW+P2qb3L3OgaNLx9qpffl8VmkKuDJyMLtd2GtrYmZDW7RPDYbapAAOrR VW1BHxb646VtmEw+nijSsqVcQ4NFx+83xtZ7YF+1P1ttINXn6vBUsQS5hLiQBLqEEN3En9uD 7kwVWkdNt4ythNPb0bTU4zVkRbiHQggR/TpqGX1nTnwgyNLbYNeWck3gpjeWg1zgnyXQum4D 8dV70L/2Gpxp6fZ83WE1+/epgcsPudq6zXXFm9v91f7sulgPGnZ1Zvs7eE2R+0LqkcJ4HHb/ xAMz75Vhjj1ZsVxLg8UfhP3ZqtAELebnK2Rk+fjOnHj2V6t5eUNcyLYVCZVv+zO6ZFitEAIk 0CXEgKX22Ij7Vw26M1U4Ry1CSfQX/zX+Yw3x5/zDHbSOT3AN8ReaP59eiFebhHtwrmRzCSFE L2Rketm128UPF/c+2NU1yPWjgraY/aa+a6aRM38xzvzF6C+x3lO/9FB3WBWYUcxu8we/wF9E /tO6nqtwZGT6uP56Hxn3egdEkAuIaJAL/EEHu03FzgoNaWYf8xe28d2FSszVQwuGnRUadlZo MBh9PB/i47PjnPRsiTamglwdw7v/aVHJMSaEAEDl8/nkbNCu8YJvEUXwpSYnyn4Og0vt5/hz e2i7LjsQpBpycD4Jp98CwJq5AeeoxQAMOl5KXGs9riG5eAzZgQCYuJgcz6En+7i7YUkJxGmk 4Gy4tSk+Tltbr/n37TYV35kTz6d1atLMPl7Z6L7k0KT91WrmzdUB8Pw6N/PzYzMzIWl5Afry MqzrNuDMXxxYHsr3u92miqlhWr0Vv28P7qnTui0Lx3m1weIPcv1uQxz/bOg8Z92e42VBvj/o Fct6u4/tNhWTJ+qw21SsXuPhx0vbwtC72CHXCN2lJidGugtCRA0pRi9ELHJ3zlxl+KKY1Eo9 KR/OZJClNLDcY7wV9+BpnE9f1i2YdX50IbZxa2kdNluCXEIIEQRGk48/b3czPsNLg0UVqBV1 odtzvHx3oRLTQS5DSTH68rKwb3cgBrlSU/SkzJmJ2mYL+7bTzD5+vLSNDw62snWbf+Y/g9HH /mo1jxTGc/eduh7bUNts3fquLy+LyGsJpX3V6kDdOAlyCSFE8EigS4gYoTtbRfJHsxjx7kg4 +kJguVfjz+DyGLICjwEcY4povq0S27i1geGJQgghQqMj2HX7VC8/Krj8rGAvlMZukAvgfEEh 7qnTOLNtZ7dsLhF8HZlc2tpPItqP23P8Q0Y/POji+XX+gG9Px7iuuophE8dhKFkD+INcScsL SJ47E42lPhzdDotZeQrv7HaFfMiiEEIMNFKjS4h+qKNgvDfOxPnRhQCo2mzozlb5Vzh3CFL9 D1tGLQ6sI4QQInKMJh9bt7si3Y2w68jC8ZpMeE0mmrdXRrhHA4PrjlxUNqs/MJQT6d74j//5 +UqPQS5tbQ3Jc2f5Hx+uAcCVk4snIwttbQ2GkmKspS+FvL/hEuwZFoNhS7l/2GnHZAJS90oI 0d9Ija4uZIx36MlY+qun9tjQtNbjMfiL9nZkbgF4DNl8NfVAYL34c1V4DNkMv36c7OcwkOM5 9GQfdyc1uiKjrzW6BjK1zUby3JkAnNlWecUi6fJ+D4/+sJ+HLJ7PJ0Omw8+WBYIsapsNY9FK 7MVrI15svyf9YR9fyQ8Xx1P5dudMpxmZXqbe4R9aHU2Buf6+n4NNanQJ0UmGLgoRpTQt9Qzd N4UR745kyMEFgeX+IvFZnE9fhuOmosByr9YkdbWEEEJEleS5M9HW1qC2WdE0xM6QMxFchpJi Eip2BH4+XvonpvzxZ0yZmMBDS+LZX63GazJhLX0pEOTSWOoZtOHFSHU5pr1Q6uGVje5AbbW6 WjUvr4/jnuk6pkxMYMXyeBos8qWLECJ6ydBFIaKA/sQm/3DEs1U05X4GgJKYjqbluP9xgrnb +l9N/SDcXRRCCCGu2vmCZQxaX8qZ7e9EfRZOLNJY6tHWHcaTkYVijr4vwjoy/rS1NXhNJk7n HMFrMmGzwcx7FSrf1rCzwv9vfr7CU2s8gfp2Q5YsQFtbg7a2Buu6DRF+JbHFaPIxK09hVp5/ mOnOCg37q9XsrNDQYFHRYNHw6EpPhHsphBCXJxldQoSZ1lHDoPoXUXs6Zw4yfLEG/YkyNC31 aB01geVnbnuHxplOmm+TeiZCCCH6h67Fwp35i/nq/Q8kyBUhpqKVDFk8H111VaS7cllqmxUl zcy5jW8EjpM0s4/fl7n57ItWHl3VhsHoY0u5hntm6Nhf7b99OV+wDK/RSMJft8VUgfpoNCtP 4aliDx8cbOWd3S5Wr/FI3S4hRFSTQJcQYZTy4UyG7puC6chKtI7OWZD+ZS7ENraEr6YeCNTi Aro9FkIIIaKdtraGoTOmoC8vi3RXBODJuhXw/12ihdpmC/THazJxtmwLX+3+AFfOxTNAG00+ frbKw67dLsZneGmwqJg3V8fqx7U48xdzZvs72IvXRmW2WqzKyPTy46VtPa5nt6n43YY46mpD d7s5YwasWB6P3Tawh1FGcyBbiEiRQJcQIaA/UUbyR7NIrdSjP9F5se8xZqMkmnGOWtRt/fOj Czk/ulACW0IIIfotjaWe5LkzUdtsxFfviXR3BNCaNxv31Gl4MqPj+iKhYgfDJo4jqfDhwDJP ZnaPGX9pZh+73nfx6Cp/gGXz6xrsNhWezGyc+YsD65keXxVVQb0ODRYVUyYmsLNC0/PKMWJn hZoni7TcM13HqJTES/57tkTbYzvPlmgv+/u7d8Pbf1UHhrMORPryMpLnziJpeUGkuyJEVJFA lxB94J/pcA+Gz4u7BbQ0rRZ0Z6sCjzvYxq2lKfcI1syXcA25+JtLIYQQor/ymZJQrjfjXLgI a+lLke6OwB9Eat5e2S0YFClqm42kwh+jttnwGU2obbaef+kCP1vl4Z3dLl4o9VwU3NBVVzFo fSlDp0dfRmFH8fYt5QMn0JWR5QsUsw+lWXnRMwtkuOmqqwIBLvfUOyLcGyGii8rn8w3cEPgF ZHra0Ovv0wCrPTZUbdbAzIaDjpdiOroKgNZh93F2whaAQK0t9+BcvNrw1yXp7/u5v5D9HHqy j7sblpRAnGZgD9GIhDbFx2lra6S7EbXUNlsgI6fr46sl7/fwiOR+HrS+FIDzSwtD0n5S4cPo N2+KeLC16z5+eX0cqx/XYjD6+PCga0BnHwWbnDP8x7wnM5vzSwtJTU6MdHeEiBoy66IQvaB1 1JB0+OH24NW0QHF4d3Iu7sHTcLX/30FJTA8Ew4QQQohYpS8vw7D2l3z13gG8JpMUnY9CGks9 CW+/RVtm1iXrYIWSoaQYtc2KrXgtELoAVwdr6Uv+4Zphfp2X02BR8dxa/+3WpbLQhOgryZ4V 4tJk6KIQXag9NvQnNpFUW8CQgwsCy71xpm6zIXbwGLJpvq0Sx5giGYoohBBiQBm0vpSk5QVo LPXESzHkqKWrrsJUtDKQTRUuQ6dPwVBSzKANL4a1blZr3uxAwFVbW0Py3FnXNEwyGB5a4i+U /qOCNmblKRHpg4gt2toahk+8JSpr0QkRTSTQJQY0raOGQfUvdluWVPsw+hNlJJzegdrjvzBS EtM5M2knjTOdgWwuIYQQoi/0mzeRtLyg396wtGX5C5xb122gNW92hHsjLicw82Ld4bBuV0kz o6SZObNtZ9iL4b+8Po791WqSlv0YXXUVyXNnhv199myJlrpaNden+fjZqp5nKRSiJ2qbjeS5 M9FY6qOuDp0Q0UaGLooBa8S7IwOBrNZh96EkpuPVmjifvoy2hHTcyd3ra0nGlhBCRILCyYpq Nr78JQ2NCtrRo5j+77nMnaq/iiYcHFz/Ptu2N3HSoSFlws3MfWwKt6V1FoZufu8A5S9/ztHj TjAkMWbmRBYW3sTI+BC8JPxD/jqKCOv2vk/TwSOh2VAIuXJyafr4MxSzDNWPZp7MbFrvvS/k wxb9s21WBYKe1tKXAcI+nLWuVs3qx/2z+f37g++ylm+isRwPax8OHYLnSjqGLLplyKIICk1D Pfh8eDKycKx6PNLdESKqSaBLxLxBx0tJ+OotdGer+GrqATwG/7eKbddlo2mtvyiAZRu3NhLd FEIIcQmewwcofeYUY4vu4yff0NH8t2r+q2gX+o1zuTutd22c/OMuXqk0MO/X85k43MXh9bvY +PN4RpZNIk0DfPER6588xsgn7uP5u5Kg8RjlP32XUp2B4mXDg/ZatLU1gcwWZ/5iEip2oJjT uwUgEip2oLbbcC5cFLTtBot+8yYSyzfRlpkVqLkkQa7+4WzZlpC2b3p8FYntGSZfZR5AMadH rF5bRqaXR1e18VxJHL95NYUPbtnNuqf/f1LDmFV2/DgYjD4W5CvcnjNwZwUUweXJzOar3R/g MyVJPUQheiBDF0XMUHtsJJx+C8Pnxd3qaenOVaE7668dorV/EljefFslTblHsGa+JIXjhRAi KikcffMfOKdNIn9mCsZkAzcuyOGesc1UVzb3sokmqrefY8yDOUzPMmAclkLOiklknjzKewf9 q3iOneHUdaPImZGEFtCm3sAdU3XYjp7DGYRXobHUM2TJAoZOn4KuSy2rs2VbsBWv7Tbsz1BS TFLhw1FXg0VbW0NS4cPoqqtILC+LWM0jET26HgPxe95HbbPRlhHeIYqX87NVHt7Z7eL6NB8H PhvCpEfu5ncb/N/vJy0vwFBSHNLt338/7NrtkiGLIii6Hq+RDCIL0Z9IoEvEDOPRlQw5OB/D F8UknN4RWH4+vZCzE97g1DdP4hy1OII9FEIIcXUcWD5XGJGdgjawzMCYr+lp/rS5d0EoRzMN jQbSMroMdTSkYE5zcfK/HQBos0czVjlBdaUVD+BpPMbeD9oYM2MUVzFA8rKu21BKQsUOvEYj cYevHLw6X7AMJc2MynoOJS0yX8KobTYGbXiR5LmzAss8mdk4Fy7Cum4Dpw8elRutfkZts2Eo Ke5zgEdbW0PS8gJGjBlJQsX2wHL7L9fy1e4DNG+vjJosv4xML7t2u/hRgT/Y9GSRlv/nrs/8 M4WWFJO0vKDXAVu7TcX+fWqeK4lj3lwdOys0Pf5OmtknQxZFn3UEZocsnh/prgjRr8jQRdHv dBSQ152tonXYfYGhhu7B04hz1uNKzqV1WOe341JbSwgh+inFhc0KeoMeT8VOCp9oJmd9PncP 1sGnbpzQcyDK4eY8cZiuU6h9uox1O0fw0O5vYkoC+zknYIBh43joyTOUPLaFwicANKTMuZMV 3zZcU7cvrFXkWPU4KpsNx6qiHoMAzvzFOPMXo6uuCgSTNJZ6hs6YwvmCQpwLF4U8kDB0+mQ0 DRbAX0vMme//kkimse+/VDYrhpJi/zH1qzXX3E783qpAEez46j2BYyPU9b+uldHk46liD7Py FB5cHM/GQxNpGfYum1vvB5/vsgHbBouKT+vU7K9Ws2+vmrra7rkBGZnqfj+Lotpm6/b6DSXF uHOmRe3f8kJqmw02vYSh8SuUNHPgWNRY6tFv3gTQp+XRQF9ehr68DK/RiOPnUpNLiKshgS4R 9TQt9ajbbIHaWpqWevQn/BdZWnvnN+POUYslY0sIIWLVdQbSvtZGSh9SrPSpgxl5kwG9Bvx5 HO1ZGcdrWPfUCW4sms+qmUloG4+x9bH3KX3RQNGy4aiA1OTE3m3kD3+ARx4BqxWOHYPRoyE5 EcrLri47bM7MzsfrNkNHRs4He2H37qtp6cqOH/f3+c47Yfp0/7JHV/i3cf/9JD3wAEnB21qP er2fxdVJHgfp6ajr6+HQIVK//vWef2f3bv+xce4c/OUv/mXLfgxfnYBHHkE/enRQMh7D4Ttz 4N/q4YEH4P9+ZAbq0Z907/+hQ9C+T154AVasuLiNO+/0rzJ9OkyfHkdS0pVvo8J6LFut8Mkn /k52eOop//+HDsGbb3YuV6k6H/u6ZJx1ZPuNHg3vvef/P5rteAMeeQQDwJ13klT4sH/54VOd r6Uvy48fhxkz4NVXO8+N4Vb4MDQ3or7/fob25j0rhAiQQJeIWlpHDUmHH0brqEFJTKcp9zMA WofNxja2BHdybiD4JYQQIgZpdJiSwGJ1os3L4fH2RIMvdzphsJ5eDZ4zJDIIFzarhht/NJfV PwKwUmEFY4rO3972OhpuyOYnM5P8N76pNzDv+0dZ8dxRvlg6nJuAxjMtvepyykuvEG+14p46 DVt9Ex5DEIrZL/852hn3Mmh9KS35i3C196Wj3te1ZmAkVOxgyJIFALTeex9nsyb7n1hc4P8H 0MvXHQypyYm93s/i6un/4xcAJI0e3eN+1ljqGT5jRuDnU1+eas/+0cH/+5/+hf3wb/U/X/H/ 38jwQP+1tTUMnT4FV04u9uISMiZ8HYMxnqk5XjKyfEzNubigvFMB55nLbydUx3LHhBBntu3s 3FaX6H9jc+eA7tTVqzuXd+lLavv/XqORU12WmwqW+YdYDzLwlaFz/yS8/Rat994X5FdydTqy ruKr93S+9tkLSJ37FxxjM/2ZWO391ZhGoF9VBNCn5aZnfs2g9mDX+YJlgQk4wqFbtt3yn/v/ 78XxJF8UCNFJAl0iKqg9NuLP7SHh9A6smRsA8Biy0bQcxxtnxGPIQu2x4dX6T/rnRxdGsrtC CCHCwoB5rI5dNU04v2doz75wcOSwixG5Xet2ASjYGxyc1+gZmRrfpYkUbkxz8uWnThjffkNo PcUXx/WYx7YPTWzz/35XHqXLU1dwYbDJ8fMiVDZbtwLzweDJzL5o6GDS8gI0lnpcOblY123o cUijxlKPrroqMDQnMAPkwkVB76+IPh1/96SkxItumhPefgt9eRnWdS/hNZlQzOmcL1iG15SE c+GimK7JprZZUdLM6KqrMP1iJRnbKznyZWuku3WR5LmzAuebroEQr9GI2m7HPXVat+WO9uCN 54LZJrsGw7qyFa/FVrwWjaU+sExfXkbS8gK8JhOOlUWcXxqZ6++h0yejttuB7rPX8pe/4Ljg WFbM6YHX3pfltuK1tKWlYyhZE9bzo768DOPjq7Cue0nOy0L0gQS6RFQYVjUWdZv/A+x8+rJA ptaZ296RrC0hhBiwNIz99k2Yln7M1ook7p+so/Gv7/New3Du/9YFA+qUZt5ZsY1dKVNYuz4b Y6CJFHL+Rwq7Nlaxe2wOE4c7+fg3Bzk6ZhzzsvyrpOWaMW09wl/+dgP5dxngtIWKzSdIzPkm N2q4MAYG+G80By9ZgK66CsWcTtPH/qzjcNW3UdtsOBcuYtD6dWgPH8JnuvwAw659BWjNmxMI Zpz64mRMBzFEz4Ysnk/C228BkDi1LBDMCGcGSyS5cnL5avcHGErWdKvPdGENq0hT0swoaeaL gjKnvjx1yfUvFbzp1Xa6BMy9piQ8GVlo6w53W0djqcdnSgrJ/tFY6rnupRdxLlwUCGi15s0B oCV/0UWBu1A6v7SwW3BPbbMxdMYUWvNm41hZFPTX3xFY9G/LGtS2hRhoJNAlwuv8cUxHnyWh yZ+51VEovnX4HOKc9bQMm403rvNDQ4JcQggxsGnHT6KwSKFs/VusfErBOMbMjF/fSc6w3reR suBulp6rYuuKLZQ7NYycMo6lv5rAyPYSXdpvTKHw8QNsXv9nVjzhBr2BtBlT+OmKG9Bz+awu 7eFDeI1GnAsXhf2m2Gsy4VhVxPmCQrS1nwS2rauuIml5AY5VRbTeOxuvyYTXZEJtPYfXaAzc MHZtRwwcpsdXwZFaEn74k0C2SGvebDSWepz5i2mJokLc4eQ1mboF9joCGp7MbGxrSsI+k6TG Uo9h7S+7Bbbs7f0L53u2NW82rXmz0dbW4DV2btdUtJL4fXtozZuDfU1J0PrUbWZQny/wN4mW iTDiq6vQWOoZtL6UhL9up+ngkaC278m6FSXNTGve7Kgqii9Ef6Ty+Xwy7207qQsRPLqzVSR8 9RZx9hpaUr8fKBKf2vgrOOwvjnk+fVlgxkQRXFLnJDxkP4ee7OPuhiUlEKdR9byiCKo2xUdz fRODNpR2m/VQV12FJ/PWqAoWmYpWMmjDiwBY123oNrNYqDIwgkXe76E39M7JaOsO48nM5qvd ByLdnailq65i8OL5qO12lDTzVQc0+nIsd9QM6xCNWZcpc2YSv28PAE0ff3bNgUBtbQ0aS30g 6Nqx31vz5nB+aWGP2VuROGdoLPUMLnwYZ/6ibufXYAVD+/KlidToEqKTZHSJq6Jp8Y/bVxL9 J3P9iTISG/+I1vEJ59MLcYzxf+sUf24Pg46XAuAeMq2zgUGjOZ++jNZhswPZXEIIIURU+9e/ GDZxHGqbrVsx5HANU7watuK1eDKzSajY0W15uDNSRHTyZN2KNmUI5+d9L9JdiWodwxlNRSvD nlnjyczGPXUabe21o6ItyAXQvL0SjaWehIodgXOL2mZjxJiROPMX+zPBrlDAXmOpJ+X+WYEA UUegy5WTe9mhmNFCMafTvL2y27Kk5QXENdRjW1Ny1XW1tLU16DdvCgyFjMa/txD9kQS6xEXi z/m/oVH5fIFg1KDjpZiOrgIuzsTSnfXX/NDaPwksc6YuAsA9eBpebZe6ITc+gM20IKT9F0II IYJKp0Nts+GeOo1/rfpFpHvTI2f+Yhn2Ii7JWvoS+uTEwMxy4vIUczpny7Z0W5Y8dxZtWdlB rc+k37wJQ0kxjpW/CLxvz5ZtifqAh2JO71a/Kr69BqC+vAxtzaGLAl1dZ29UzOng8/mH6d17 X9TVQ7saapuNOMtxNA0WhixZcFUZbmqbjaTCh9HW1qCyWqNmiKYQsUACXQOU2mMj4fQONC31 eONMgVkME07vYMhBfyDKPXgartv8ga42oz912Btn7NZO67A5nJmUjsdwa2BGRPBnfHVkdwkh hBD9mlbbp+E5Qoj+T1tbg666Cl11FYnlZZz64mSf2xy0vtRfNw1IqNgRCHT1x6BPa95smj7+ DP3mTd2GHHbMIqi22TizbWcgE/Zs2ZawFpYPFa/JRNPBI/4AX21Ntww3lc16xc+NxPbf8WRk BWqwCSGCY0AFupyf1lG+9iAHjzohKYXMhTksWTK8fbry2KRpqec6y4vE2WtoM2QFMrG0jk9I qn0Y8Ae0OgJdvjgTHkMWvrgknKMWBdpxDcmlcebF0xF7tSYZgiiEECLmSZBLiIGto66Z6Rcr cd1x7de+XbOXWvIXoy/3z3QZC1mYSvtwy64GbXgRtc2GkmbutjwWglxdXfj3G7ShFENJMc78 xZct2H9+aSGKOR13Tm6/DG4KEc0GTqDLcYzy//iIk7PupOjXw9F+XkdZ0dtsHD6fpTP7X6gr /tye9qCU/0NC66jBeGQVWscntF2XTfNt/rHjcS31gVpZak/nNLVtiek4Ry1CSUzvNrOha0gu X039IIyvRAghhBBCiOjnycymeXslapstsKxjlsALAzwX6phJUV9eFsgQ9ZpMfPV+bF93n9lW iaahPuYCWz1R2/z3XfryMtxT7+gWCOtavP5qa3oJIXpnwAS6nHuOcjDuZgqX3eCfTjx5EvPm HeNXbx7DPjMDY48thJbaY0PTWh8IOmla6tGf2ITWUYNXm4Q1cwPgD2gN3eefiZM4cscAACAA SURBVEVJTKcp9zP/44T0QK2suH/VBNp1DcnFcVPRRbWylMR0rJkyDlwIIYQQQoir0ZF9o7bZ AoGuhIodnN34xmWzPwcXPhyYqVBXXYXT3P8zuHrDX2B9YAW5wD8xyL8KCtFv3tQtyJW0vAB9 eVm3WXGFEME3YAJdp440w9ibGKPpXDZifArarU1YlAwyNZf/3avVUcwd/MMCOxg+Lw48f2aS f8YmtcfGiHdHBtbpGB6oJKZj+KI4sLwj0NURCOvaLviHEJ6ZtPOiWlmA1MoaoPafqLryCioV t6dOu/I6UdjO3n++h1tx41JcuBUXrrZW3F43rjYXbq8Lj+Lmp9/4eY/tPPdh8RWfV6FixW09 F52OtnZKPngad/u+cLW5AvvJrfgfe7weNs99q8d25r0564rPq1Vqttxf0e/a+fb/ugt3mwuX 14W7zY1LaQ3sG7fipqXNyYnCi4dpd+X1eUl78borrqNCxT8Lz4elHSGEEJHhNZk4s20nSYUP 4zOaugW51DZbt0wm2y/XMmh9KY5VRTIUeoC4cCinvrwMfXkZXqMRT9atEeyZELFvgAS6FGxW F1pDPDTW8KtvH6Dlwf9BUY4OvdOB0wXo4b/35QV+433j9MDjHzS/Fng8+jvHOpt9XdX5+Hu+ zseVMwMPnxq1OvD4yROdN7KpyYntj9r/15pg8Ne7LIc/eEdzypfAKV8Ch97q7BtMh9P+G6B3 u6xP8kwuZcYfZlxyeQe1Ss3/XvK/r7hOMNv5frfXcm3teH1eNE9fOTqpQoX3Se+AbaenwECv 2ymNrnYWlH6rx3aembm6x3ae7UVgae29/1+/a+c3Hz3TYztdzzOXa6enwGQ42xkxRBe0/nzY uC8o7fRGKNppU3xXWFMIIUS4uXJyaTp4pNtwRv7yF4b++yOobFZOf3wEr8mEJzNbZtUb4BRz OkqaOWYK8QsRzQZIoKsLXTwpY5PwpMSB0v2p6Y7dgcczPu58/OTNvW/eh4+qLjM2r969uvOH ZP9/h1zwZtdf+t7FNy4+fDzwxfHeb/gyvD4vu4/vvuI6KlRXfD4a2xFXplapmT56eo/r9Md2 /u2Gf0MXp0On0aGL05EQlxB4rNPoGBQ/qFftPHnnk1dcR6Xq+TiMxnaenvF0t/2REJfQbX9d F3/lDKKOdt77wXtB6U+0tVP1YNUV988gbe+OH9+TfQ84BasdIYQQkdd1OCMPPojGasU9dRoq mxWk0LigMygqhAg9lc/nGxBX2V8+V85zJyfw/NpxaNuXed7bxapndDxUkUumBt55s3MGlcqE zsdjPPUAqIC5OT1/E9NzZgY8elvPwwmjbchYMNpJTU7kzzWVQemPuLzU5EQaz7T0vKLoE9nP oSf7uLthSQnEaeTLgHBrU3yctrZGuhsxT97v4SH7OfRSd7yB9V9uqcEUYnIsd9dTJrkQA8mA yegakTEY7e7TfKGMY1z7yLCGw814xmZjbv85M7czAJPZh239rBdBrN64fdS1T108ENoRQggh hBAi6jzwAE4JwAghRMT0PFYoRuinjWcC/2Dri8c4ecbJyX0H+NObChPm3RzxGReFEEIIIYQQ QgghRN8NmIwu9Gbyfz2Fjf9ZTfEfnZCcwoRls1iSGx/pngkhhBBCCCGEEEKIIBg4gS5A+7UM Hno1I9LdEEIIIYQQQgghhBAhMGCGLgohhBBCCCGEEEKI2CaBLiGEEEIIIYQQQggREyTQJYQQ QgghhBBCCCFigsrn8/ki3QkhhBBCCCGEEEIIIfpKMrqEEEIIIYQQQgghREyQQJcQQgghhBBC CCGEiAkS6BJCCCGEEEIIIYQQMUECXSIqON98i8IFB2hQIt2TGKY0Uj7nFdZVyk4OqeMHWTN1 G7tOR7ojsU3OGUIMFAoHi15hZbEl0h2JbXKNEB5yjRAWco0ghIiLdAciztpIxTN7eW+flRaN nrS7JvC9FRmk6SPdsX7EbeXD3+xlW2UTzQ4wjjUz46c55H2jcyc6P62jfO1BDh51QlIKmQtz WLJkOLKbr4VCw/o/s+ZVyHt9PnPHdC4/WVHNxpe/pKFRQTt6FNP/PZe5U2UvXxV3M9XPVVNR 2USzoidtWjbfeyybGw3tzysODq5/n23bmzjp0JAy4WbmPjaF29I0Ee12/+LkyKvVbH3Twqlm 0KamMOH7OeR/OwVtxypybhbRQI7DvuvxGkE+u4LrMtcI8tkVHD1dI8g5o+8cTex+/gC7qppp dmpIGWsm59/vIO/r8YFV5L5CCNGTAZ7R5aT66XfY5byZh/64iF/+Lgfz0QOs/60FT6S71m8o fLn+bTbu03H3r+ez9s25fDfLQcVjVXxobV/FcYzy//iIkxNyKNqxiNVPptGy8W02Vjoj2vN+ 63gNr7/p6AwItPMcPkDpM6cYufQ+flkxn+X/A/YW7WJXQ0R62U+5qV27k780msnfuIi1G3MY 1/gxG//YHFjj5B938Uqljum/ns/av9xH3nALG3/+sXxreBXsb77Lhj8p3PHrxZTue4CnHhuO 5fmdlO/r2IlybhbRQI7Dvuv5GkE+u4LsMtcI8tkVDD1dI8g5o+/cHHzmbbY1mnlo60Ns2PM9 HprhZNeKd6k+076K3FcIIXphYAe6Gj9n7wEjdz86gXFpeoxjbmDesptxVx7loJwre8nJSaue 25bmMP3rBoypKdy2dDxjnc188Xn7GnuOcjDuZuYtu4GRyXpSJk9i3jw9tW8ew36ZVu2Vu1g5 8y12fSFXYN052P3cEUw/yKb7l7AKR9/8B85pk8ifmYIx2cCNC3K4Z2wz1ZXNl27K2cS2B1+j 6BnLZf8OA87pf7Drb0l86/EJZKbpMY6+gXmvPsDqpSn+55UmqrefY8yDOUzPMmAclkLOiklk njzKewcv0+bxOp6fuYn1FY6wvYxo13jUiif7JnK+Fg9oMH5jHBNHu7B83n7ivYZzs5wzRNDJ NUIQ9HSNcA2fXbipXbuFFUsO8KX8HS5wmWuEa/nskmuEi/V0jXAt5wy5RuhOsWP5XGHEXWO5 MQnQxHPjnBswu85xstG/itxXCCF6Y0AHujxHmzhlSMGc1rlMO34Yqa5mLMcj1q1+xkDOE3NZ MrNLsvBJK2fQYxru//HUkWYYO5wxXS66RoxPQft5E5ZLfN54Pv2I3649x8Tie7h7jKTUd2Wv PMCuuGzm3XVhcrbDf2GQ3WXoFwbGfE1P86fNXHx95eDD4l3sHTyJwpVmjCHud3/hqWnEMnIw /HUXq2e+QkHuJtY8XUeDu30FRzMNjQbSMrrsf0MK5jQXJ//7EhepVgvl//ER7oWzeCjPcPHz A5Q514yp5nN2f+oGFOx/P8LHjYOZOMW/j6723CznDBEKco0QDD1dI1ztZxec3PoOf9iXwpJf T+FGGafUzWWvEa72s0uuES6pp2uEqz5nyDXCxTSDyco1cGpnHUfOKKC4aag4RmOqmcyx/lXk vkII0RsDO9DlcOExxGNSmtg67yUKltZg1+kw6lzYrD3/vrgEZxPb/rOO83dNYHoagILN6kJr iIfGGn41+SVWr2+GwTr0TjdO1wW/3/Q5rzx2lJRH7yX/G/GX2MAA5jjGn152Mn1FBikXfk4r /mNWb9DjqdhJwTc2sfHvComDdWB3X3Cz4OLL9bsob7iJn6zJYKR85gfYzjhxHv8He5tuoGDr Azy/8RuMPHiA9b9p9A87cLg5Txym6xRqn36Ngqk7+dCtx5QE9nMX3JK5mtlVVEXthDv5yYMp Fw0jGcj0U3N46LsuKpa8RsE3XmHlTz/HtOyb5H3N//xVnZvlnCFCRK4RQuDCa4Sr+uwC+74q Nrz8f9q7/6Co7nv/4887x13G0y6uw47I+oVBsIURsd0MKBNSfzBFU5IJ14Qm1fRLakmm3Jra 0Wmq8zU1Pxrv19SOfmviN9rErwlpNWlpE7z+qCFj1IYMSkZ68cdAA+KwNwiZdVzZ2+Owy06+ fwCyqOiugZJsXo8ZZ2Q9nD2fs8fzeZ3353POwqJfz8czZTwa8Dl2s4wQS9+ljDCiW2WEmM4Z yggjMMioXERpYgtbFu/kR3Nf5bnXwix8qoBsO+i6QkSi9aUudA1JYNJ0J6kRT4pUh3MbAp3U rD7IkYQ7+Le1069/IGSCHVeWk6muCXCjmcNXfLz9s6OcTvewTCNb1wjTvL2BC/cUUpx6i0W/ 6iD1605cNxzpDnP53WO8tKuXOas1Gn6d3jAkTOOelTNIcRiY6dl8tzyZy++1cu1sd9M9mZQZ DsyrFwGRVwO9NG+ppaYlmbJV0zUafg3fgVpeeiuB0t0/YMeHFWzamkXf9oNUHQtes+Qtzs06 Z8g/hTLCqLhVRrhp3wV97Wd5aX0zE753l2ZlXCf6jHDzvksZ4aaizgi3OmcoI4wsyOmNB9nf m8OqQxXsOP4Dnnwsgfd+Vkvdtd9UqesKEbmJL3Why+Y0sfktLhtOijc9yJPrZpBoWfT0JmC6 xnvrvmA+aafq0Xc44czn51s9EeHIYJLTJBSwICmbiqoHqSxzwiULy2FiJgytItTpw8qZztRT Tbz9wbUXvF9uobMNVJ9KY9nDIxyYRgKTnGD5LWzzCnly972UzDS4csmCySaTIhbtajfILQxz YnsTF/SogmFMpx3bxAQmRhyXickmtv/u5QqAYyJfoZfLfoOMR0t5uqqQWYbFZT8kuiJ+Keyn o28as5wd1Ozq1kNohwnQ+MeP+cp9eSy4+oyufIrn9XLiQP8De6M9N+ucIWNJGWEUjZQRYui7 rLYeXPOSufhGPSeuveD9krtlRoi270IZ4WZulRGiPmcoI4wscI73DoXJXe4hO8kAw07qkjzm Oj/m/fcC6LpCRKL15S50ZbuYavloOz/0Wqipmw7TReb/GLfN+uLxd1D146Oc88xnzcYcUq6Z GTw1ZzK2lk+GjXZ5T/kIZSWRFjGQaMvMZtnaIioeMzmx8X0adWvIVd532/G2nuGFxa+yauGr rCqr51zQT+2jr/LCWwHAQVpWAl1N3RG3egRoPtXb/9yCq68ZZD1WRPn6eczqbBj2bYICZk4y Lr+Pc51Dr/V4A4SSHP0XXA4XGakW3rMRt3r4u2g7b5KWFTFaaCSz6Ml5VDyVA28epeZvuloY Eu4P9X3DXyPM1RHZaM/NOmfIWFJGGCU3zQjR9l2Q+O0CKtYXUTa7iz0bm1HvNeSWGSHavksZ 4aZulRGiPmcoI4wsDH19XDNDKwwRdSpdV4hINL7UhS6mzGBhocWRzY00ey162lrZs60d874c Zmm6dpQsTmw8zAnnN6ionMaEQBBr4E9ooAMyvzUTDx9Rva2dCxctLnxQzx/fCuMp+9oNp2un PDSfUnc7uze16pt+BmQsL2XT20t55s0H+/9su4MMu5MFmx6g4h4HYJC1ZAaTPjhJ9QEfPRcD NFcd5T1vMgvvcV6/QmcaS9d+jZ5XjlHzdwWsqzKzWeC5RO2GBk57LXrOnmH3731MvWcGGQZg uCi830Vb1TGOnArQ80k3RzY10pKZzYLc61dny82n/CE48lw9zfp2sAFOcgsd+A40UtfWn1yt U03UHoOsb7n7L2xjPDfrnCFjQhlhFNwqI8TYd+Gg8IkCMs7U8/pb+pa6QbfMCDH2XcoII7hV RojxnKGMcAPOaXg8vTRWNXLODxDkwt4mjl+cTO7c/qKsritEJBoTxnsDxpfJnHWL8G18n50P N9BjOMgomc/jlW49fyNawU6OHwsSCjbw3Lcbhv1T9trvs6rMBDONpb8uoOp/17Hh9xYkufCs uJvyeSM8FNJwUrwun5Pl9ew+5KZysa4ocJgkDht07d93tskOzIHdaJuZz+Prwry+fR9PPBMm MTONhb+eT+EID+w17yxgacmf2P70Se54NZ9UPaMTcLDg2e9weeP77HyoESvBQfaSIiqXD91z 4HqomMpLx6he9Qf2WAYpBdlUPu8Z4YG9BhmPzae4bh+vb01l3dq0659L8yWUuvw7VPTWUfPj 19kTAJtrMlnliyi/b3DvxHhu1jlDxoQywmcWRUaIte9iSjaPrPbyy42Hqc0rvfVzK78MosgI sfVdygg3dquMEOs5Qxnhev372Npcz0tLTtLTC4np07jruWJK0gcW0XWFiEThXz799NNPx3sj REREREREREREPqsv962LIiIiIiIiIiISN1ToEhERERERERGRuKBCl4iIiIiIiIiIxAUVukRE REREREREJC6o0CUiIiIiIiIiInFBhS4REREREREREYkLKnSJiIiIiIiIiEhcUKFLRERERERE RETiggpdIiIiIiIiIiISF1ToEhERERERERGRuKBCl4iIiIiIiIiIxAUVukREREREREREJC6o 0CUiIiIiIiIiInFhwnhvgMg/3ak61j36ERlbfkDFneO9MaMljPetOqrf6KDNaxEKg81h4lm3 lIqFxnhvnIyqIHUrX6Xq7Ax+cqiIWfp4RURGzYVdf+bpl03KD91NoWO8t2aUBP2cePF9Drzr w3cxSAgDM2kapa/czQL3eG+cjKpwOzsX1nJi7jxe3JSNbby3R0RknKjQJRIPzjawfWMzwbmz Kat04zL7XzanqwoSfwxSFuawICuZJH28IiJyC77qo1TtvkTqQ3dQPteJmQCQwFTXeG+ZjL7J 5JblYKbqwxWRLzcVukTiQE+LDx8uSp8oYEHqeG+NjC2DjCWFZIz3ZoiIyGcTBsZ8wCKM94yP UGo23109mwwNkMQ3w8mclYXMGe/tEBEZZyp0yTixOLLid1Sb81iz2M/bL7fS4rXA6cLzw3mU l7kGplsP3KYVyGfDLg9Xx6cCzWz59jH+sWIpT5Y74Hwjzy3rIHv1ZJpf/oguYxplv/ZgvXKY A/UWkxYWsmpDNsPGtwKd1K6v552/XqInnEDqnTmUrfWQ7YxYJhzg9K569u//GG9nEJxOMhfm ULYih9TIWxq8jTxX9p+kbPqffDfhJK/9poWWtv5bCDOe+D5rHjJj30Nnz1C97QynTvnp6TNI TJ/GHd/Po6zEdXUq+ulnX+WFvcGrv1Oz5LfUDP5guCh9835K0mN95zAXDtRT/bt2Ws5bhCaY pOSmsWBFAQtm2se0zfg7qd3WwJFjPnx+MN0uZn03n+8uc5M4sEjoVD0bfnSGiY8/wJplQx9W z3uH+eXaTjKfvZ/KxSaDx9geCli12E/NK+fw+sLYkl14HpvP0hLn0JT+GNpi/b2ZmhebOPk3 Pz19dlxZ05jzWAGld15zj8snHRz4zYfUHb+ELxDGluQk89uz+V5lNimRuyYcoHF7Hfv3d9F1 MUjINEmdO4N7VubjcUdckZytZ93yJnzhgZ+dI9+6GM2xc+GVP/D0H6dSuWUKp7Y20njWwjJM MhbnU/7EDFIi1xttW0RERkO4le3fOszlx0u5x2rk7b1ddHWHsWVOo/jnRZR8c7AvGruMEDrf TNW2RhqbAoRMJ1lLCnikMo3EyHNjFH0WgLV3Hz/fCEsPLCLl0FF2v9aB95MwGE5KXn+Q0q/H votueZ4Pd1P9UA215wd/4wzPzz0ztAJ3DmveKoy98BUO0PhyPfsPfExXdxAcDlLvzKb0px6y kyKWG4tcFEX/e2F3Db96sZfCHQ9QljvYuDDNm//Elv9IoGxXKcXpQLCV7QsO4/vh3dxjNVG9 v5vLAZiYNZ1FT9xF8W3mnVHPCFEu56v6M+u2+oZeWDjSrYvRZTxlBBH5olOhS8bJBGwGhJo+ 5DVjNst2fJ+fOCxOb97HC5sO45odY/AzgLCPuvfcrH7zXo7/qIaaVRaedaX8e0kdT61rou6R 7Ih1hml+uZ7Q/Xms/GEioZYz7N7YwI4NE3lmU/ZAQA1yetM+XthrMOeJRZQXOqG9leoNdWzu hHVbc4ZCsTuJFEcQ77t17Pywi4nfK+BxjwN7OAxTEmLfPW2NbK5s4MqdBTyyazppE3tpe6uO qmf24eMBflLSH5iyVjzA0+VhLv/lMFt2QckrRcy5mqUMJt3G7C7fWwf51UYfacvns+bXyUy6 4uP9bcfYU3mJUNVAQByLNge7qfnxQQ789zRKn3qAu2YY+OoaqNp0kK1WKWse7Q/vttwCfvR4 N7/afpiavFJKv27AJ63s3tiKfcndlC8eTFX9xxhnm6h2enjk9/NINS2at/+FF585iJn64FAI jrYt55t44Uf1dGV5KH8lm8yvWjS/UUfVz/ZhbX2QpXmDyS9A7fpaavtyKN9aTKYL/tHRQc2G Y2y+YvLv69Kuhk/vywfZvjeR0qfuZc4MEwI+Tmw7xs5VsGZ3AamDq5xxB6vezCZEH97/9xd2 fjDCfozy2MGYAP4Oqrf2UfLEA5RnGvgOHWXL+qNUTU9mzUODB1L0bRERGR0GtgnQ9bujvHf/ XaysvptEq5Oanx2k5n/Vk/H2PLLtt15LxOpiywhhH7WbYU55ET9fa9D1bj1V22t5aXLEAEuU fRaAOcPFpHArp14+yoEPwsx5vJhl6QlghZmYchu7J5rzvOGiZOuDFAb7OL3pz1T7cvjJ8zlc rUXZ7bhint1l0fhMDdv/arJg7XeozHMQ8rZz4Ll6tvy4lzWvF5Ax+LmMdkaIsv9NWVZEWeOf qHqmnlm7Csl2gPVBHa+/GcTz7L1DGcYYOMb+WM/7D9/FmgNuEq1uDqw9SPWq93FVF+EZ7AbH LSNE3/+6lhTz9Lww0MORNX/hyAi7MeqMp4wgIl9w+tZFGV9BF4vWzibDCRgmsx7+Ghn4Oddk 3cbKwkydl02q00VmloFluJhTaJI4M5mpBPB1hSMWDdM3O4+KZWmkpjvJWFzII2VOrLpWTl4c WKazmf17A6Q8PJ/yJW5SppikzJ1NxarpcLyJ2r9FvrfJpCS4cKiDiavvpbJ8Btm5yWR8002G O+bhUk6/9p947TMoWzebWZkOEt0uPCuKKMkNcvp3zXgHlrQlOUhJd+KebAB2JqU6SUkf/OPA jPmtuzlS1Ulobj4VldNJdZskZqZRsj6PWXTzzhudY9RmsN5rpLYtgcK1xZTc6SRxioOMJfP5 3hIT7xuNnI44JFKWFVE2t4faXzRwLhDgyMb3OZ3soXJ1GtcNHlpO7lo9MAPPMMl+zIPHEeD4 /u4Y2xKm+Y0mzpFG2cZ8PF93kOhOZs5PiyiZEaCuqpmeq/vRR8fZMElFOXhmOkic4iAlL4eK bfezcvnUiNAXpOOsH1tOOgvudOGaYuLKTKPkmVLW/HsOUyN3o92OK91JSroL14gPSI7+2BlY nKzl8ynMtAMGrm/n4HGH8TZ2E4q5LSIio8tyZ7P0UTeJdsDppvj+adgudtHiveWv3kAsGaGX qUvmUbowmZR0F55H51PyzTDn9n3EhcFti6HPwmWSiEXjgV6Kt91NaUkaGTOTychzkxLzA++j Pc8bmG4nKemTmeQADDtJ6REZwW3Gfv72trD/kEVqeRFLFyfjSjJJ+WYO5aunk9h2hneOBSMW Ht1cFHX/i4PCdUUUhs/w+tYOrIvt7HnuIyibFzEQNiSUNJ2ycnf/TD1HMiWVX8Plb+f48Yjj YbwyQiz9r8Mx8NkmMmmk3RtTxkMZQUS+0FTokvGVmkxq5K2CjonYgX9Y4ZF+4yYMJk0xAQNb ggHOif2dvWlgB0LB4Utn5A3vgKfOnIwt6OdCe//PoZZuvEGTjLnJw5Yz81LJMAK0Nfkj3npC f1HJPYNFCz/jPO3wJdpagjDTTdawAOwgc7YDzl+kI/DZ3mJEF7tp64SpedOG3XaBcxqZmdDT 0s3VifGj2Wago8lHKCGZ7LzIhGaQOTcZM+CjrS1y6f4gOyd4hpce3Ud1k4uyDfmk3miE3+0i M/IYs08mxQ093ktDoTOqtgRoabIgK5XcyPUZTrLzHIROddMxeIwZLrLz7Hi37+OFTY3UfeCj xwKb20WqO3Ij7WTkuaCunl+traf2UAfei+H+W0EyHbEHxFiPHcNJZlbE/jYSMB0QCvYNhdio 2yIiMrpcM5OH3U5o+6odG2FCvbezthgygjGZ7LzIvsBBZpYJ/+Wna2C5mPose/97mAtnU/hZ v+VwHDNC6Gw3XTjIzHMOe92W6ybNHsZ79tLQi6OaEWLofwGcaSx9dja2Q4f51Y+P0pg8m8qf 3mAgDDBzkhk2qS49CRdhus7H2pYxyAij3f/GkvEGtl0ZQUS+qHTroowvg1Ec7RkIr4Mm3OTw NuyYXx0+5GUzE7DRhzUQREKBXkJY1K34LXXX/n4YXL4bJO3pzuGzcG5LECsAthkJ1+2biQ4D wr1YV4Cx+NrzQC9XgEmOa8OJgWkCvl6uXPvw3FFpc5i+QB9Y7ez81m/Zed0/G1z2XfPGzjSK 75tM3TYfifcVUDjSbZqOBCYO2z4DmwlYQYLXLnuztoR7CV0B/l7HE3OvOyIAB5ctwN7/98Ln /hXzzZMcqT3DnjcbqDLspCzMoWxlPrMiLnRSyu9ljesk7+zt4MAzTVQHDRJzp7NwRQElebFe HMR47BgTongQcvRtEREZVaOaUmPICNgxr+ljbQ479IWxegH7bfRZQFL65FHIPOOXEa4Eeglh XLdvMBOwTQArMEa5KKb+t58tdzYLcs+w5zjMWp9z44EwwHRccxtlwgQmGBC60YDrPz0jjHL/ G2vGU0YQkS8wFbrkiyl4OzO+IoWvm+EVsnoJGRP6O3vA5kjAZph4nr2bkqzr/6vYHDdIkaNS uOsP2P2FtuHruxIIg5HApImf+U1uzJHAROAf/iAMG/sMYlmAw7ymaMQotdnAdE4Ax1SWvlJA 1g2C1VemDH8x1NZIVdUlUhe6ufyXevYsmEb5vBskWeva4lwYqweYbOe6pW/WloGRTPLyWbN2 Otd/BAaTIkdxTSee5UV4lgN+P83HP6J2WyMvrIInd+cPPXsLO6klBVSUFEDQ4kJjB3W7PqRm dS3mG6UsiCkkjtGxE3VbREQ+B0YjI1xTLApZQZhgYCbA7fRZALZRSd3jAyvmxAAAB0pJREFU lxEmOhKwYWFdO2PM6uVKL5jOGzx7azQyQqz9L+Dbe4yaRgez5kHLtmPUFdxN4ZTrV31dcS7Q S18YJpoxtmWsMsJo9r+3k/GioYwgIp9DunVRPucGRmCtvv5ixYBQ60U6P0uODYfxNg2boE1X yyVChpOUgZlBthw3mYaF72JCxHOvnKSkmtgME1fSGPXcxmQyc+xw1kvLsDDpp7kxADOSh3/j 42hKSibTDV0ffhzxvAvA30Vb2/W3kYymqbOTMa0efL2O4fs7yQCHg8TITGZ1U/OLk3R5Cqjc uIiKJVC34TB1n9xgxV4fbRF3meLvouO/IDF98vCp+7fkJCPXhI5LWFOcw7bRZcJXpjiGYmPA T/N7nRHfkOgke3E+jyx3g/ciFwZzddjC+0E75wa3226SMjebsrVZpPZeouN8TBs4NsdOtG0R EfmnG6uMcIm25sgVBGg7a0G6i6kDIyQx9VmjaRwzgm1mMqkEaPvQP+z1UGMnHdjJyB2rhBBD /wvQ1sTOLR8ztbKIyo1FFLs/Zs/6Ri7c4JiwznRffe4a9D+2ojNsx5UZ604cg4ww2v3vWGQ8 ZQQR+ZxSoUs+5wxScyfD+XbeP24RAkLeVqp//3EU06lHEAYMA+uv9ew51I3vosWFYw3srvZj zstmzuBXEk3J5jtlDs69XEvV3k4ufBLAd7ad2vV/4unydzhyWw/DjYbBrIe/QWqwnd0bmmg+ b9HT6ePE1qPUnjWZszyH2/mSpujeOpkFy9OwfdjAzlfa8X5i4Wvr4MD6Dzltd1PyveSxemfM hR6KZwY4sv4wtcd9+D4J4D1+hqoVf2DDqpN4rwbUIKe3HKbWn0b5uhxchp3snxZRkjRCkDX9 HNnYyOm2AD2d3RzZ3MjpXidz74l9Pn32wx6yg6289mQjjX8P0NPpo/lAPZuX/YHnt3UOPbMi 0EHNUwfZvrmZc+cD9FwMcOFUK/v3dmOb7Sbjatq1OPmbw7zwTAONZ/30XLTwtXVypKqdLsc0 smcOtbnH6+fCeT8XzvvwBYBwEN/5wdcC9N9lMQbHTtRtERH5ZxuDjDCgueooR/7mp+cTP827 63jnlEH2fTOunkOj77NG2zhmhNQcFt1j4q06zJ5Dvv789GETO7e0Epr5DRYVjt3Unaj7X6ub 6l800JVbQMXDLmx2F6VP5ZPacpId2yMeoj7AdrGVN7a24u208P29lT0vttPjzuCuubG3ZdQz QrTLWVZEHujhchiwrtA1+FpnsP+9xyLjKSOIyOeUbl2Uz72UsnksbT3G/rW/4wh2XDMzKFlZ QKillo7wbSTJvjBBEpizwsOkd4/y/AY/PZikfquAn6ydETEqaJD901JWueqp2fUOGzYECZkm KZ7pLN2RP/IzoUZDpofV2wyqt59hR3k9Vp+dxKxpLNhURMmNbs8bRa77ilk9oZ63X6vj+Zct QgkmKXnTqdhRwJyxfNaC4aJky72Y2xqoXV9DtT+Mzekkc14+q1fMvjr1vefQYV7bC4Vb5uMZ LErakyn55R00Lz/Jju1u1q2I+AKB1CzKFlrUrvkTbd4gNncyC56dT+nMG2zDrbhzeHyHQfW2 JnY/2kBPr4GZ6mLWw3dTUe4eek/3bP5tc5g/bm/khfJjWBbYkobacnXE1HBRsqWI0NZGqlc2 4fOHwWGSkjudpf83nzmDtzn4P2JnWR3DJhjQwZ6HOgbWk0zZf5RSPIXRP3aibYuIyDgY9YwQ 7gNzGv/6uIvm3+yjpsUi5HCS9Vgxj5RFzPKJss8aE+OWEex41pVSmVTH/m01HOkeaPPCQlav yBnbNkfV/w4MhF1Mo+L/5OAa3J702VSs6mTDhsNU5T5ARcQ+mrQ4nwVGKzuXH+WCHxJnTmfp 04XMup0CzWhnhCiXCx2v4+kn2ocX8doaeK6sof/vmbN5cncBqcYYZDxlBBH5nPqXTz/99NPx 3ggRkdEXpG7lq1QF8tmwy6OwJSIiIv3C7excWMu5slI2rBy72eoiIjI+dOuiiIiIiIiIiIjE BRW6REREREREREQkLujWRRERERERERERiQua0SUiIiIiIiIiInFBhS4REREREREREYkLKnSJ iIiIiIiIiEhcUKFLRERERERERETiggpdIiIiIiIiIiISF1ToEhERERERERGRuKBCl4iIiIiI iIiIxAUVukREREREREREJC6o0CUiIiIiIiIiInFBhS4REREREREREYkLKnSJiIiIiIiIiEhc UKFLRERERERERETiggpdIiIiIiIiIiISF1ToEhERERERERGRuKBCl4iIiIiIiIiIxAUVukRE REREREREJC6o0CUiIiIiIiIiInFBhS4REREREREREYkLKnSJiIiIiIiIiEhcUKFLRERERERE RETiggpdIiIiIiIiIiISF1ToEhERERERERGRuKBCl4iIiIiIiIiIxAUVukREREREREREJC6o 0CUiIiIiIiIiInFBhS4REREREREREYkL/x94bz2nh/PinQAAAABJRU5ErkJggg== --------------mTW9MCqgDuu08yQtZP7WvmpP--