Content-Type: multipart/related; start=; boundary=----------6BskB7ERS2JodRB3Bcko3B Content-Location: http://www.discogs.com/Zdob-şi-Zdub-Zdubii-Bateţi-Tare/release/1378838 Subject: =?utf-8?Q?Zdob=20=C5=9Fi=20Zdub=20-=20Zdubii=20Bate=C5=A3i=20Tare!=20(CD,=20Album,=20RE)=20at=20Discogs?= MIME-Version: 1.0 ------------6BskB7ERS2JodRB3Bcko3B Content-Disposition: inline; filename=1378838.htm Content-Type: text/html; charset=utf-8; name=1378838.htm Content-Id: Content-Location: http://www.discogs.com/Zdob-şi-Zdub-Zdubii-Bateţi-Tare/release/1378838 Content-Transfer-Encoding: 8bit Zdob şi Zdub - Zdubii Bateţi Tare! (CD, Album, RE) at Discogs

Zdob şi Zdub - Zdubii Bateţi Tare!

Label: A & A Records (2)
Catalog#: 160522-2
Format: CD, Album, Reissue
Country:Romania
Released:2001
Genre: Electronic, Rock
Style: Folk Rock, Breakbeat, Hardcore, Hard Rock, Euro House
Credits: Bass - Mihai Gâncu*
Cimbalom [Ţambal] - Valeriu Caşcaval
Directed By [Sound] - Andrei Lifenko*
Guitar - Sveatoslav Satrus*
Percussion - Vitalii Kocianiuc
Producer - Igor Dînga
Technician [Consultant] - Oleg Vasenyoff*
Technician [Sound Assistant] - Vladimir Kostin*
Trumpet - Eugen Didic
Violin - Anatol Ştefăneţ
Voice, Flute, Flute [Ţuruiac], Woodwind [Iorgafon], Percussion [Buhai], Jew's Harp [Drâmbă] - Roman Iagupov
Notes:Recorded and mixed at ADM Studio, Chişinău, Moldova, September 1998 and May to August 1999.
Rating: 5.00/5 (1 vote) Rate It
1 has this / 0 want this

Tracklisting:
1   Intro - Joc (2:31)
2   Nunta Extremală (4:02)
3   Vai Ş-amar De Capul Meu (2:12)
4   Dansuri (2:21)
    Music By - Vopli Vidopliasova*
5   Hăitura (5:37)
    Music By - Traditional
6   Ciobăneasca (1:31)
    Music By - Traditional
7   Tabăra Noastră (2:14)
8   Maria Blues (6:18)
9   Dragă Otee (2:48)
    Lyrics By - Grigore Vieru
  Music By - Iurie Sadovnic*
10   Muzica (3:31)
11   Zdubii Bateţi Tare (4:26)
12   Hardcore Moldovenesc II (4:46)
 Bonus Tracks
13   Muzica (3:15)
    Remix - Mihai Gîncu
14   Dragă Otee (Forgery Remix) (3:37)
    Lyrics By - Grigore Vieru
  Music By - Iurie Sadovnic*
  Remix - Forgery
15   Zdubii Bateţi Tare (Forgery Remix) (4:14)
    Remix - Forgery
16   Zdubii Bateţi Tare (DJ Groove Big Beat Mix) (Radio Edit) (3:51)
    Remix - DJ Groove*

   Write a Review

Contributors to this data: muntz, deMonne

------------6BskB7ERS2JodRB3Bcko3B Content-Disposition: inline; filename=favicon.ico Content-Type: image/x-icon; name=favicon.ico Content-Location: http://www.discogs.com/images/favicon.ico Content-Transfer-Encoding: Base64 AAABAAIAEBAAAAAAAABoAwAAJgAAACAgAAAAAAAAqAwAAI4DAAAoAAAAEAAAACAA AAABABgAAAAAAEADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA a3N7a3N7a3N7a3N7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa3N7QkJC QkJCKTk5EBAQEBAQAAAAEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAQkJCvcbGa3N7 QkJCISkpEBAQEBAQAAAAAAAAEBAQAAAAAAAAAAAAAAAAAAAAISkpQkJCa3N7vcbG a3N7ISkpEBAQEBAQAAAAAAAAAAAAEBAQAAAAAAAAAAAAISkpKTk5QkJCQkJCa3N7 a3N7KTk5ISkpEBAQAAAAAAAAAAAAAAAAISkpAAAAAAAAEBAQISkpISkpKTk5KTk5 EBAQGGNrGGNrCAgICAgIAAAAAAAAAAAAAAAAAAAAa3N7AAAAEBAQEBAQEBAQEBAQ AMbWAMbWAMbWAMbWCAgIAAAAAAAAAAAAAAAAa3N7a3N7AAAAAAAAAAAAAAgIGGNr AMbWAMbWAMbWAMbWGGNrAAAAAAAAAAAAAAAAa3N7a3N7AAAAAAAAAAAAAAAAGGNr AMbWAMbWAMbWAMbWGGNrEBAQEBAQEBAQEBAQa3N7a3N7AAAAAAAAAAAAAAAAEBAQ AMbWAMbWAMbWAMbWEBAQISkpISkpEBAQEBAQa3N7AAAAEBAQAAAAAAAAAAAAAAAA EBAQGGNrGGNrEBAQQkJCQkJCISkpISkpISkpAAAAAAAAQkJCAAAAAAAAAAAAEBAQ EBAQISkpQkJCa3N7a62tQkJCQkJCISkpQkJCAAAAAAAAAAAAISkpAAAAAAAAEBAQ EBAQISkpKTk5a3N7vcbGa3N7KTk5QkJCAAAAAAAAAAAAAAAAAAAAQkJCAAAAEBAQ EBAQISkpKTk5QkJCa3N7a3N7a3N7AAAAAAAAAAAAAAAAAAAAAAAAAAAAKTk5KTk5 EBAQEBAQEBAQISkpQkJCQkJCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA a3N7a3N7a3N7a3N7AAAAAAAAAAAAAAAAAAAAAAAA/D////AP///gB///wAP//4AB //+AAf//AAD//wAA//8AAP//AAD//4AB//+AAf//wAP//+AH///wD////D///ygA AAAgAAAAQAAAAAEAGAAAAAAAgAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGBgYGBgYGBgAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAYGBgxMTExMTExMTExMTExMTExMTEYGBgYGBgYGBgY GBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAxMTGcjIycjIxaY2NaY2NaY2NaY2NKSkoxMTExMTEYGBgYGBgY GBgYGBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAYGBiEc3OctbXOxsa9ra2Ec3NKSkpKSkoxMTExMTEYGBgYGBgYGBgY GBgYGBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAxMTEAAABKSkpaY2POxsb///+9ra1aY2MxMTExMTExMTEYGBgYGBgYGBgYGBgY GBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAxMTFKSkqEc3OcjIy9ra2cjIyEc3NaY2NKSkpKSkoxMTExMTEYGBgYGBgY GBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAxMTExMTFaY2NaY2NKSkpaY2Pn5+fn5+eEc3MxMTExMTEYGBgYGBgYGBgYGBgY GBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGBgY GBgxMTFKSkpKSkoxMTExMTGcjIze1tbOxsZaY2NKSkoxMTEYGBgYGBgYGBgYGBgA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY GBgxMTFKSkoxMTExMTFaY2NaY2NaY2OctbXOxsZjOTkYGBgYGBgYGBgpAAApAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGBgYGBgY GBgxMTExMTEYGBhKSkpKSkoxMTFKSkqcjIx7WloYGBgIY2sIY2sIY2sIY2sxMTEA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGBgY GBgYGBgYGBgxMTFKSkoxMTExMTFKSkoYGBgxMTEApbUAvcYAvcYAvcYAvcYAvcYI Y2sYGBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGBgY GBgYGBgYGBgxMTExMTEYGBgxMTEYGBgIY2sA5/cAvcYAvcYAvcYAvcYApbUAvcYA 5/cApbUYGBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTEAAAAAAAAY GBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgA5/cApbUAvcYA5/cA5/cA5/cA5/cA5/cA pbUA5/cIY2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGBgAAAAAAAAA AAAAAAAYGBgYGBgYGBgYGBgYGBgIY2sAvcYAvcYA5/cA5/cA5/cA5/cA5/cA5/cA 5/cAvcYApbUYGBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGBgAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAYGBgApbUAvcYA5/cA5/cA5/cAvcYAvcYA5/cA5/cA 5/cAvcYAvcYxMTEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGBgAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAYGBgAvcYAvcYA5/cA5/cA5/eEc3OEc3MAvcYA5/cA 5/cAvcYAvcYxMTEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGBgAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAYGBgApbUAvcYA5/cA5/cA5/cAvcYAvcYA5/cA5/cA 5/cAvcYAvcYxMTEpAAAYGBgYGBgAAAAAAAAAAAAAAAAAAAAAAAAYGBgAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAIY2sAvcYAvcYA5/cA5/cA5/cA5/cA5/cA5/cA vcYAvcYApbUYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgAAAAAAAAxMTEAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAxMTEA5/cApbUAvcYA5/cA5/cA5/cA5/cA5/cA pbUA5/cIY2spAAAYGBgYGBgYGBgYGBgYGBgYGBgYGBgAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIY2sA5/cAvcYAvcYAvcYAvcYAvcYAvcYA 5/cIY2spAAAxMTEYGBgYGBgxMTEYGBgYGBgYGBgYGBgAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIY2sApbUAvcYAvcYAvcYAvcYApbUx MTEAAABKSkoxMTExMTFKSkoxMTEYGBgYGBgYGBgYGBgAAAAAAAAAAAAYGBgAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGBgIY2sIY2sIY2sxMTExMTF7 WlqcjIxKSkoxMTFKSkpKSkoYGBgxMTExMTEYGBgYGBgAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApAAApAAAYGBgYGBhCGBiEc3Pe 1tacjIxKSkpKSkpKSkoxMTExMTExMTExMTEYGBgYGBgAAAAAAAAAAAAAAAAYGBgA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGBgYGBgYGBgxMTExMTFaY2Oc jIzOxsbOxsaEc3MxMTExMTFKSkpKSkoxMTExMTEAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGBgYGBgYGBgYGBgYGBgxMTExMTFKSkqc jIz////n5+daY2MxMTFKSkpKSkoxMTExMTEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGBgYGBgYGBgxMTExMTFKSkpKSkqE c3OcjIyctbWcjIyEc3NaY2MxMTExMTEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AABKSkoAAAAAAAAAAAAAAAAAAAAAAAAYGBgYGBgYGBgYGBgYGBgYGBgxMTExMTEx MTFaY2Pe1tb///+9ra1KSkoxMTEpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAABKSkoAAAAAAAAAAAAAAAAYGBgYGBgYGBgYGBgYGBgYGBgxMTExMTExMTFK SkqEc3POxsbn5+ecjIxaY2MYGBgYGBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAYGBgYGBgYGBgYGBgYGBgxMTExMTExMTExMTEx MTFKSkpaY2O9ra29ra0xMTEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAxMTEAAAAAAAAAAAAYGBgYGBgYGBgYGBgYGBgYGBgYGBgY GBgxMTExMTExMTExMTEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAxMTEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAxMTEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABaY2NKSkpKSkpKSkpKSkpaY2MA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8A///4AB//4A AH/8AAA/8AAAD/AAAA/gAAAHwAAAA8AAAAOAAAABgAAAAYAAAAEAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAgAAAAYAAAAGAAAABwAAAA8AAAAPgAAAH8AAAD/AA AA/4AAAf/gAAf/8AAP//wAP///gf/w== ------------6BskB7ERS2JodRB3Bcko3B Content-Disposition: inline; filename=topbar2_bg.gif Content-Type: image/gif; name=topbar2_bg.gif Content-Location: http://www.discogs.com/images/topbar2_bg.gif Content-Transfer-Encoding: Base64 R0lGODlhAQAoAPcAAObnt+fouOfouejouujpu+jpvOnpvenqvurqwOrrwevrwuvr w+vsxOzsxezsxu3tx+3tyO7uyu7uy+7uzO7uze/vzu/vz/Dw0PDw0fDw0vHx0/Hx 1PLy1vLy1/Ly2PPz2fPz2vT02/T03PT03fX13vX13/b24fb24gAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACwAAAAAAQAoAEAIMABPfLjw4MCIDRMWDCgRokOGChEaJCgQ wAQJESA8cNCAwQIFCRAcMFCAwAABAQACAgA7 ------------6BskB7ERS2JodRB3Bcko3B Content-Disposition: inline; filename=topbar2_dropshadow.gif Content-Type: image/gif; name=topbar2_dropshadow.gif Content-Location: http://www.discogs.com/images/topbar2_dropshadow.gif Content-Transfer-Encoding: Base64 R0lGODlhAQAGALMAAHV1dZqamrq6utXV1erq6vr6+gAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACwAAAAAAQAGAEAEBRAQEUaJADs= ------------6BskB7ERS2JodRB3Bcko3B Content-Disposition: inline; filename=ybt_rec.gif Content-Type: image/gif; name=ybt_rec.gif Content-Location: http://www.discogs.com/images/ybt_rec.gif Content-Transfer-Encoding: Base64 R0lGODlhGQAbANU/AAscS4iQJ8zPDUdTYtDKaCk4UGxzZYmRpu3ld6qxii02lFNf fpiOlBQlTkBNY2l0j/DtsmBpZtnRrbzAFersBIiTxnyFnTlHZfn1rRMiU1ZgSB0o iObearStVOHdYCw7Y/PsYFxohLG75qSbU4CJgaSjkN3fCT5MeMbAZH19af7+AOPf rZSbkoyUR15qtFlkcJScr0xUpZ6js1BDVfbvcnBnUtrRaHaCw5qeVx8vUldeqnF8 mD5In/r3uyMujv///yH5BAHoAz8ALAAAAAAZABsAAAb/wJ9wKBRVXDzFZslsLonF m0/Bq8Z4sawutu1CK1MeI7GC9M7o9JkIVpRWGLU8PZQqJGfIKhEanE4vb3JCFQp3 ZxgsBQ0PBzsWMAsXJGY9cT8iGworlhARDQ0ADgcyB5AwfXCWPzduGK8voKEfpgcw B7YWAxCvmT6WibIAoTulFri2DwavYDKvK4vDoAAnDw+3yAcXeC4+eBgJsqEAGhMC Ey07yDA7KTRJcBif0+Qq9vYttgcPLw40SrwwFJAWaoI9Ewf/5MgAoACNDT5eIchB DwBCEw0MqhgYqkGOfxt4IRg4LMcHAfYmUFBhIgfBAiB4+FiBgIOGCwuOVWhxz16A uGHSCiBwsUFCTRwhSuHa0UIABRM/O4KqQaPCBhIIQHi4kA1XCBILABAMhYJDpg0o bIBIkbQrrgzTQGngwIHVhhoEPHgYsOMWJHUWPrwsW/dsWg4EBly7dUtG2FAFOtiY TGjJZA82bjY6ZuFBgwwa0k62McTqhhE2CNjoYGCAgwsOBmjooFo15TpLaoxAQaC3 b9+8CaAY/oXJDN0jOihfzlw5FEw3mmTYML069esZnhepoEOmk+8bggAAOw== ------------6BskB7ERS2JodRB3Bcko3B Content-Disposition: inline; filename=ybt_main.gif Content-Type: image/gif; name=ybt_main.gif Content-Location: http://www.discogs.com/images/ybt_main.gif Content-Transfer-Encoding: Base64 R0lGODlh2wEbANUyAB4piiItjj5JoIiTzlFXpldeqkVQoz5HnSYxkLC75vv6xfv4 zufhtJiOlDA5lfr2uvr3tfPvt/r1svr2r9XOvF5qtPr3rPTxpio0k+zosfn0pPfv d/fxcSEsi/btbvDmbtjPZ/TubujiaxolguXfas/JZuPYa+DXasnCY93UatrRZ8S+ ZaOYUHNkT1BDVbStUhYeahkgdv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAHoAzIALAAAAADbARsAAAb/QIBwSCwaj8ikcslsOp/Q qHRKrVqv2Kx2y+16iQHBQEYmFM7otHrNbrvf8Lh8Tq/b7/i8fs/v+/+AgYJ1BIWG hQaJiooHBwgACTIKk5SVlpeYmZqbmAuen6ChoqOcnaOnqJ+lmamtpJyurqWxp7O0 qLa3rbm0vLq+uq+suKuXDA0OADIPzM3OENDRz9HQzNTVztnN1xDa3t/c3+DY4uXh 5d7S6OLn493r7urT7/Da7fL18/jW5Pnb1+b6+XvATaC/c/sOAhzYzh7AgtEiRGgQ YABEaBIgSNiYMVpGjh0/crxITeRGkihNglz58dpIlBdVshzZ0eVJmBBlzjSJM6fG /50gexbUGVSoy59Abxr1iDQp0qUlmyqFSnTq0qorNQ5tGpOrzAlgJ0Sg4KBCTpAT JEzAiFbtyrRrSb5V6zNp27Q7tVKDW9fuRrhA9Xp0G5cb1rl4Z0Lgu9XvX7eI+/oF /LjwUceEWTI2LBUoZcWbLzsGbDkqZsqhTY+GrLgmW46fT2pmTTjsBAsXGDjA4Nk2 WNi+4QafPHym8ODHkQ9P/Pe3cbXKoStfrjnszuS+pU+3Lf269uzbi8+e/j36c/Lh s5+Pnp679fXIy78fzz68d/TtfzNvvr12ewsA4pZBMv8BiFyAviGY320GLqhcgBBG eGCDDgYX4YUWTKdghQliCP8hgxly2KGHFIoIFokm2kbihimuaCCLJkqY4okYzkjj iunBOGGIN0Z4wYAAPFgjiC6WmCCRHx6IZJEo8njjg0syWaOTSEIpZZEgWnkljkpu OaSFUXppZFgZiulhll2KqaWZVJIZpppUMvlmkT8mA9WdeOap55589unnn4AGKuig hBZqqJ8SWKDBj49s4OijkEYq6aSUVmrppZhmqummnHbq6aeghirqqKSWauqpqKaq 6qMcaCABowCsKuustNZq66245qrrrrySysEGHAQrLAc/dgDAsMgmq+yyzDbr7LPQ RivttNRWa+212Gar7bbcduvtt+CGy6wH5H6QgbHkpqv/7rrstuvuu/DGK++89NZr 77345qvvvvz26++/AAcs8MAEt/sBCMaGoPDCDDfs8MMQRyzxxBRXbPHFGGes8cYc d+zxxyCHLPLIJJdsssMigCDEByy37PLLMMcs88w012zzzTjnrPPOPPfs889ABy30 0EQXbfTRSH8QAstLpzwCAElHLfXUVFdt9dVYZ6311lKTUIIQIoQt9thkl2322Win rfbabLft9ttwxy333HTXbffdeOet99587y2z10+TIPjghBdu+OGIJ6744ow37vjj kEcu+eSUV2755ZhnrvnmnHfOudkfmFDC0yaUbvrpqKeu+uqst+7667DHLvvstNdu //vtuOeu++689+7778D7XrgIJIR9AgpPp6D88sw37/zz0Ecv/fTUR39C9dhnv/z1 2ndfPffehy/++OSXHz745qevPvnoj3/C+/CfcDoJJhSuwgpPq6D//vz37///AAyg AAdIwAIa8IAITKACF8jABjrwgRCMoAQnSMEKNjAFKmAe/OZ3AhCwYAQYAIEIR0jC EprwhChMoQpXyMIWuvCFMIyhDGdIwxra8IY4zKEOd8jDHtbwf9t7XwpAsIIWjKAC KEiiEpfIxCY68YlQjKIUp0jFKlrxiljMoha3yMUuevGLYAyjGMdIxi2WAAUlSKMa 0wiCErSxBCtggQtGMIAX2HvxjnjMox73yMc++vGPgAykIAdJyEIa8pCITKQiF8nI RjrykZCMpCTtuAI7tmCOyoCBJjfJyU568pOgDKUoR0nKUprylKhMpSpXycpWuvKV sIylLGdJy1rGMgYwiIEud7nLp0XiC8AMpjCHScxiGvOYyEymMr8QhjGQIQgAOw== ------------6BskB7ERS2JodRB3Bcko3B Content-Disposition: inline; filename=main-v46.css Content-Type: text/css; charset=utf-8; name=main-v46.css Content-Location: http://www.discogs.com/css/main-v46.css Content-Transfer-Encoding: 8bit body { background: #ffffff; font-family: arial,helvetica; font: x-small sans-serif; font-size: 10pt; color: #000000; } h1.title { font-size:16pt; font-weight:bold; color:#000; margin:0; display:inline; } h1.releaseTitle { font-size:13.5pt; font-weight:bold; color:#000; margin:0; display:inline; } textarea { font-size: 10pt } .title { font-size: 16pt; font-weight: bold; } .hl { font-size: 12pt; } .hlb, .navi { font-size: 12pt; font-weight: bold; } a.navi:link, a.navi:visited { color: #000039; text-decoration: none } a.navi:hover, a.navi:active { color: #0000FF; text-decoration: none } .small, .sm { font-size: 8pt; } .submit-nav, .navbar { font-family: arial,helvetica,verdana; font-size: 10pt; font-weight: bold; } .lin { color: #FFFFFF; font-size: 8pt; } a.lin:visited { color: #FFFFFF; } a.lin:active { color: #FFFFFF; } h2 { margin-top:0px;margin-bottom:0px; } h4 { margin-top:0px;margin-bottom:0px; } a.footer:link, a.footer:visited { color: #666666; font-family:arial,helvetica; font-size:8pt; } small { font-family:sans-serif; font-size: 8pt; } #header { text-align:left;margin: 0 auto; margin-top:5px; padding: 0; overflow: hidden;} #header input { display:inline; } #footer { border-top:1px solid #ccc; padding-top:10px; margin-right:auto; margin-top:2em; clear:both; width:600px; } #footer fieldset, #header fieldset { display: inline; line-height: 1em; vertical-align: middle; } #discogsLogo { margin-left:1em;margin-bottom:2px;float: left; overflow: auto; text-decoration: none; } #discogsLogo img { margin: 0 10px 0 0px; border: 0; display: block; float: left; display: inline; } #headerSearch { height:25px;float:left;} #headerSearch a { font-size:8pt; color:#00f; } #headerNav { height:20px;text-align:right;margin-right:1em; } #headerNav a { margin-left:0.5em; color:#00f; } #headerNav a:visited { margin-left:0.5em; color:#00f; } #mainNavigation { width:100%;margin:0 auto; text-align:right; border-top:1px solid #dda;min-height: 31px; background:transparent url('/images/topbar2_bg.gif') repeat-x scroll center top; } * html #mainNavigation { height: 31px; } #mainNavigation ul { margin:0 auto;padding-right:1em;overflow: hidden; font-family: Helvetica, Arial, sans-serif; } #mainNavigation li { float: right; margin: 0 0 0 10px; font-size: 1.143em; font-weight: bold; min-height: 24px; padding-left: 2px; display: inline; } #mainNavigation li a { text-decoration: none; color:#333; display: block; padding: 10px 4px 4px 4px; min-height: 20px; float:left; } #mainNavigation li a.witharrow { padding-right:4px; } #mainNavigation li a.arrow { font-size:11px;vertical-align:middle;margin:0px;float:left;padding-left:0.25em;color:#bbb; } #mainNavigation li a:hover { background:#dd9; } #mainNavigation li a.arrow:hover { color:#333; } #mainNavigation li a.menu_on { background: #dd9; color:#333;-moz-outline:none;outline:none;} .submenu { background-color: white; border:1px solid #ccc; display: none; position: absolute; text-align: left; width: 160px; z-index: 5000; font-size:13px; color: black; } .submenu a { display: block; text-decoration: none; padding:5px; color:black; } .submenu a.line_above { border-top: 1px solid #ccc; padding-top: 8px; } .submenu a:visited { display: block; text-decoration: none; } .submenu a:hover { background-color: #ddd; text-decoration: underline; } .submenu .label { padding:5px; font-weight:bold; text-decoration:underline; border-top:1px solid #ccc; padding-top:8px; } /*****************/ div.c2_content { clear:both; min-height:400px; overflow:visible; position:relative; } div.c2_main { display:inline; float:left; margin-right:-180px; overflow:hidden; width:100%; } div.c2_mainwrapper { margin-right:179px; border-right:1px solid #ccc; overflow:hidden; padding:0px 15px; min-height:400px; } div.c2_mainwrapper h1 { font-size:13.5pt; font-weight:bold; color:#000; margin:0; display:inline; } div.c2_mainwrapper h2 { font-size:12pt; font-weight:bold; color:#000; margin:0; display:inline; } div.c2_right { margin-top:0.5em; display:inline; float:right; padding:0px; position:relative; width:180px; min-height:300px; } div.c2_right ul.nav { overflow:hidden; padding:1px 0 0; margin:0px; list-style-image: none; list-style-position: outside; list-style-type: none; } div.c2_right ul.nav li a { height:1.25em; border:1px solid #ccc; border-right:0px none; display:block; margin:-1px 0 0; padding:7px 5px 4px 10px; text-decoration:none; font-weight:bold; font-size:13px; color:#444; } div.c2_right ul.nav li a:hover { color:#00b; } div.c2_right ul.nav li.first a { border-top:0px none; } div.c2_right ul.nav li.last a { border-bottom:0px none; } div.c2_right ul.nav li.aftercurrent a { border-top:0px none; background-image:url(/images/topbar2_dropshadow.gif); background-repeat:repeat-x; padding-top:12px; } div.c2_right ul.nav li.lastshadow { background-image:url(/images/topbar2_dropshadow.gif); background-repeat:repeat-x; border-left:1px solid #ccc; } div.c2_right ul.nav li.current a { color:#00b; border:1px solid #ccc; border-left-color:#fff; } div.c2_right ul.nav li.plain a { border:0px none;font-weight:normal;text-decoration:normal; } div.c2_right ul.tb { margin:1em 0; padding:0px 0px 0px 8px; line-height:1.3em; overflow:hidden; list-style-image: none; list-style-position: outside; list-style-type: none; } div.c2_right ul.tb li.heading { padding-top:5px;border-top:1px solid #ddd;font-weight:bold;} div.c2_right ul.tb li.break { margin-top:0.5em;} div.c2_right .gam_slot { margin-left:1em;} /*****************/ ul.navh { margin:0 0 1em 0; overflow:hidden; list-style-image: none; list-style-position: outside; list-style-type: none; border-bottom:4px solid #ccc; height:24px; } ul.navh li { float:left; margin-right:0.5em; overflow:hidden; } ul.navh li a { border:1px solid #ccc; border-bottom:0px; display:block; padding:5px 8px; text-decoration:none; font-weight:bold; font-size:13px; color:#444; -moz-border-radius:5px 5px 0 0; -webkit-border-top-left-radius:5px; -webkit-border-top-right-radius:5px; } ul.navh li.heading { border:0px;font-size:125%;font-weight:bold;margin:0px 1em 0px 1em;padding:0px; } ul.navh li.current a { background:#ccc;color:#00b;} ul.navh li a:hover { color:#00b; } /*****************/ #content { clear:both; margin:-1px 0 0 120px; min-height:300px; overflow:visible; position:relative; } #nav2 { margin-top:1.5em; padding-left:0; left:-121px; position:absolute; width:121px; z-index:10; } #nav2 ul { overflow:hidden; padding:1px 0 0; margin:0px; list-style-image: none; list-style-position: outside; list-style-type: none; } #nav2 li a { border:1px solid #ccc; border-left:0px none; display:block; margin:-1px 0 0; padding:10px 5px 7px 10px; text-decoration:none; font-weight:bold; font-size:90%; color:#444; } #nav2 li a:hover { color:#00b; } #nav2 li.first a { border-top:0px none; } #nav2 li.last a { border-bottom:0px none; } #nav2 li.aftershadow a { border-top:0px none; } #nav2 li.current a { color:#00b; border:1px solid #ccc; border-right-color:#fff; } #nav2 li.plain a { border:0px none;font-weight:normal;text-decoration:normal; } #nav2 li.shadow { height:6px; background-image:url(/images/topbar2_dropshadow.gif); background-repeat:repeat-x; border-right:1px solid #ccc; } #maincontent { display:inline; float:left; overflow:hidden; min-height:300px; margin-left:-1px; padding-bottom:1em; border-left:1px solid #ccc; width:100%; } #maincontent h1 { font-size:13.5pt; font-weight:bold; color:#000; margin:0; display:inline; } #maincontent h2 { font-size:12.5pt; font-weight:bold; color:#000; margin:0; display:inline; } .r_table tr td, .r_table tr th {border-bottom:1px dotted #ddd;padding:5px;} .r_table tr th {font-weight:bold;text-align:left;} .r_table tr td img {vertical-align:text-top;} .r_table tr td a.mr_toggler {font-size:smaller;text-decoration:none;outline-style:none;white-space:nowrap;} .r_tr_version > .r_td_hl {padding-left:2em;} .r_tr_new, .r_tr_edit > .r_td_hl {background:#ffc;} .r_tr_change > .r_td_hl {background:#fcc;} /*.r_tr:hover > td, .r_tr:hover > .r_td_hl {background:#f0f0f0;}*/ .r_util {font-size:75%;padding:4px 3px 3px 4px;color:#fff;cursor:pointer;} .r_tr_new > td > .r_util {color:#ffc;} /*.r_util:hover { background:#ccc; }*/ .r_tr:hover > td > span.r_util {color:#666;} #release_utils {display:none;position:absolute;background:#fff;border:1px solid #ccc;} #release_utils > ul {list-style-type:none;padding:0;margin:0px;} #release_utils > ul > li {display:none;padding:5px;margin:0;cursor:pointer;white-space:nowrap;} #release_utils > ul > li:hover {background:#e0e0e0;text-decoration:underline;} .r_tr #release_utils #ru_list_add, .r_tr.master > td > #release_utils > ul > #ru_master_edit, .r_tr.release > td > #release_utils > ul > #ru_coll_add, .r_tr.release.collection > td > #release_utils > ul > #ru_coll_rem, .r_tr.release > td > #release_utils > ul > #ru_want_add, .r_tr.release.wantlist > td > #release_utils > ul > #ru_want_rem, .r_tr > td > #release_utils > ul > #ru_history {display:block;} .r_table.label > td > #release_utils > ul > #ru_master_edit, .r_tr.release.wantlist > td > #release_utils > ul > #ru_want_add {display:none;} .r_cws {white-space:nowrap;} span.po_menub {margin-left:1em;background-color:#fff;border:1px solid #bbb;padding:2px 5px;font-size:90%;cursor:pointer;margin:5px;-moz-border-radius:4px;} span.po_menub:hover {border:1px solid #ccc;} span.po_menub.expanded {border:1px solid #ccc;} div.po_menu {line-height:0.90em;display:none;position:absolute;background:#fff;border:1px solid #ccc;} div.po_menu ul {list-style-type:none;padding:0;margin:0;} div.po_menu li {padding:5px;margin:0;cursor:pointer;white-space:nowrap;} div.po_menu li a {color:#000;} div.po_menu li a:hover {background-color:#ddd;} div.po_menu li span {color:#000;} div.po_menu li span:hover {background-color:#ddd;} div.po_menu.shown {display:block;} a.reviewb { color:#000;text-decoration:none;margin:0.5em;background-color:#ddd;border:1px solid #bbb;padding:5px;-moz-border-radius:4px;} a.reviewb:visited { color:#000;} a.reviewb:hover { background-color:#eee;color:#00f;} .mr_a_edit_on {color:#00f;cursor:pointer;text-decoration:underline;} .mr_a_edit_off {color:#000;cursor:text;} #mr_panel {position:fixed;left:0px;bottom:0;height:200px;width:100%;padding-top:10px;padding-left:10px;border-top:2px solid #888;background:#eee;} #mr_panel_list {float:left;} #mr_panel_control {float:right;padding-left:1em;padding-right:1.5em;border-left:1px dotted #888;width:270px;} #mr_panel_inner {overflow-y:auto;} div.mr_panel_control_sec {padding:2px 0 2px 0;} .community, .pageopts {float:right;color:#000;background-color:#eee;border:1px solid #ccc;padding:3px;padding-bottom:1em;} .community p, .community h1, .pageopts p, .pageopts h1 {margin:0;padding-left:3px;padding-top:3px;} .community h1, .pageopts h1 {font-size:10pt;padding-bottom:6px;white-space:nowrap;text-align:center;} div.shopping {background-color:#9cf;border:1px solid #06c;padding:5px;} div.shopping p {clear:both;text-align:center;text-size:smaller;padding:3px;margin:0;} .sbbut { background-color:#ffcc00; border:2px solid #0066cc; padding:4px 10px 4px 10px; margin:2px;text-decoration:none;color:#000099;font-size:110%;} div#vote_popout { display:none;height:250px;width:800px;border-top:2px solid gray;border-left:2px solid gray;background:white; position:fixed;right:0px;bottom:0px; } .rollover_link:hover { background-color: #eeb; } #vote_options { margin-bottom:0.5em; } .ar { font-family: arial,helvetica; font-size: 10pt; } .ar_sm { font-family: arial,helvetica; font-size: 8pt; } .ar_h1 { font-family: arial,helvetica; font-size: 16pt; font-weight: bold; } .ar_lg { font-family: arial,helvetica; font-size: 12pt; font-weight:bold; } .cb { color: #000; background-color: #EEEEEE; border: 1px solid #cccccc; padding: 3px; } .sb { color: #000; background-color: #c5dff9; border: 1px solid #8fc3f7; padding: 5px; } table.history { border-collapse: collapse; border-spacing: 0; border-top: 0; width: 100%; } table.history td, th { padding: .25em .25em; vertical-align: top; } table.history tr { border-top: 1px solid #ddd; } table.history tr.plain { border:none; } table.history tr.highlight { background:#ffc; } table.history tr.datarow:hover { background: #eee } table.history tr.nodata { background: #fff } a.rss_logo { float:right; padding:2px 0px; width:35px; line-height:10px; border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e; color:#ffffff; background-color:#ff6600; font-weight:bold; font-family:sans-serif; font-size:10px; text-align:center; text-decoration:none; } a.rss_logo:hover { background-color:#ee5500; } .Yvote{padding:2px; color:#0a0; background-color:#afa; font-weight:bold;} .Nvote{padding:2px; color:#a00; background-color:#faa; font-weight:bold;} .Cvote{padding:2px; color:#666; background-color:#eed; font-weight:bold;} .greyvote{padding:2px; color:#666; background-color:#ccc; font-weight:bold;} .pos_rating{background:#cfc;color:#090;font-weight:bold;font-size:11pt;padding-left:2px;padding-right:2px;} .neg_rating{background:#fcc;color:#900;font-weight:bold;font-size:11pt;padding-left:4px;padding-right:4px;} .neu_rating{background:#ccc;color:#999;font-weight:bold;font-size:11pt;padding-left:2px;padding-right:2px;} table.sub, td.sub { border-style:solid; border-width:1px; border-color:#bbb; } .hl_added { background-color:#afa; } .hl_removed { background-color:#faa; } .hl_changed1 { background-color:#ff7; } .hl_changed2 { background-color:#dd7; } .hl_warning { background-color:#9ff; } .condesc {background-color:#ff8;border:1px solid #000;padding:5px;margin-left:10px;width:450px;float:left;} .condesc_off {display:none;} a.pagelink { font-size:9pt;border:1px solid #aaa;padding:3px;background:#eee;padding-left:5px;padding-right:5px; } a.pagelink:hover { background:#eee; } .currentpage { color:white;font-size:9pt;font-weight:bold;border:1px solid #000;padding:3px;background:#66f;padding-left:5px;padding-right:5px; } .pagelinkgrey { font-size:9pt;color:#aaa;margin-left:20px;margin-right:20px; } .pagelinknorm { font-size:9pt;margin-left:20px;margin-right:20px; } div.js_pages {margin-top:5px;text-align:center;} div.js_pages span {padding:3px 5px 3px 5px;} div.js_pages span.current {color:white;border:1px solid #000;background:#66f;font-weight:bold;} div.js_pages span.pagelink {color:blue;border:1px solid #aaa;background:#eee;cursor:pointer;} .messages_menu { vertical-align:top; } .messages_menu ul { margin:0px;padding:0px; } .messages_menu li { list-style:none;margin:0px;padding:5px;font-weight:bold; } .messages_menu .selected { background:#ddd; } .messages_menu .normal { font-weight:normal; } .messages_content { vertical-align:top;border:5px solid #ddd;padding:10px; } .messagelist tr.header { font-weight:bold;background:#ddd; } .messagelist tr.msg:hover { background:#eee; } .messagelist tr.unread { font-weight:bold; } .messagelist tr.unread:hover { background:#eee; } .messageSubject { font-size:12pt;font-weight:bold;margin-bottom:5px; } .messageHeader { background:#ddd;padding:5px; } .messageContents { padding:5px;margin:5px 0px 10px 0px; } em {font-weight:bold;font-style:normal;} .discussionsList th { color:#666;text-align:left; } .discussionsList td { border-top:1px solid #ddd;padding:5px; } .discussionsList td.admin { border-left:10px solid #bbb;} table.topicEven { background: #e0e0e0; margin-bottom: 5px; width: 100%; border-bottom: 1px solid #aaa; padding: 5px; } table.topicOdd { background: #eee; margin-bottom: 5px; width: 100%; border-bottom: 1px solid #bbb; padding: 5px; } table.topicPreview { margin-left: 25px; background: #eee; border: 1px solid #ddd; padding: 5px; width: 100%; margin-right: 25px; } .postTs { font: 11px Arial, Helvetica; color:#666; margin-top: 0px; } .postLink:link { color: #666; text-decoration: none; } .postLink:visited { color: #666; text-decoration: none; } .postLink:hover { color: #ffffff; text-decoration: none; background: #000099; } .postLink:active { color: #ffffff; text-decoration: none; background: #000088; } #cd table { font: 12px Arial, Helvetica, sans-serif; margin-right: 0px; margin-left: 0px; } #cd td { border-bottom: 1px solid #E5E5E5; } #cd th { text-align: left; } #cd p { margin-bottom: 10px; } #cd .Head { font: bold 12px Arial, Helvetica, sans-serif; margin-top: 0px; margin-bottom: 0px; color: #fff; background: #666; } #cd h4 { font: 12px Arial, Helvetica, sans-serif; margin-top: 0px; margin-bottom: 0px; color: #666666; } #cd h6 { margin-bottom: 0px; padding-bottom: 0px; } .tg { font: 11px Arial, Helvetica; color: #aaa; margin-top: 0px; } .tg:link { color: #aaa; text-decoration: none; } .tg:visited { color: #aaa; text-decoration: none; } .tg:hover { color: #aaa; text-decoration: none; } .tg:active { color: #aaa; text-decoration: none; } table.fnav td { font-size:12px; } table.fnav a { margin-left:10px;color:#33f; } table.fnav td.gr { color:#666; } table.fnav td.gr a { color:#666; } .helpnav { background:#efefef; border-right:1px solid #ddd; margin-right:20px; padding:5px; } .helpnav a { color:#00c; } .helpnav a:hover { background:#aaa; } a.btn { padding:2px 8px 2px 8px;background:#eee;border:2px;border-style:solid;border-color: #eee #999 #999 #eee;text-decoration:none;color:black; } a.btn_sm { padding:0px 3px 0px 3px;background:#eee;border:2px;border-style:solid;border-color: #eee #999 #999 #eee;text-decoration:none;color:black; } .as_label {background:#ccc;padding:5px;font-weight:bold;font-size:125%;width:200px;} .as_box {width:600px;border:2px solid #ccc;padding:5px;} .ac_div .yui-ac{position:relative;font-family:arial;font-size:100%;} .ac_div .yui-ac-input{position:absolute;width:100%;} .ac_div .yui-ac-container{position:absolute;top:1.6em;width:100%;} .ac_div .yui-ac-content{position:absolute;width:100%;border:1px solid #808080;background:#fff;overflow:hidden;z-index:9050;} .ac_div .yui-ac-shadow{position:absolute;margin:.3em;width:100%;background:#000;-moz-opacity:0.10;opacity:.10;filter:alpha(opacity=10);z-index:9049;} .ac_div .yui-ac iframe{opacity:0;filter:alpha(opacity=0);padding-right:.3em;padding-bottom:.3em;} .ac_div .yui-ac-content ul{margin:0;padding:0;width:100%;} .ac_div .yui-ac-content li{margin:0;padding:2px 5px;cursor:default;white-space:nowrap;list-style:none;zoom:1;} .ac_div .yui-ac-content li.yui-ac-prehighlight{background:#B3D4FF;} .ac_div .yui-ac-content li.yui-ac-highlight{background:#426FD9;color:#FFF;} .pf { color:#222;width:640px;} .pf_sh { padding:0.5em;font-size:110%;font-weight:bold;background:#ed9;} .pf_sc { padding:1.5em;} .pf_sb { background:#fff;text-align:center;padding-bottom:1em;} .if { color:#222;width:640px;border:1px solid #aaa; } .if_sh { padding:0.5em;font-size:110%;font-weight:bold;background:#ddd;} .if_sy { background:transparent url(/images/topbar2_bg.gif) repeat-x scroll center top;border-top:1px solid #ddd;padding:0.5em;font-size:110%;font-weight:bold;} .if_sc { padding:0.5em;padding-top:1em;} .if_sb { background:#fff;text-align:center;padding-bottom:1em;} #act {display:none;position:absolute;top:0px;left:0px;z-index:5000; color:white; font-weight:bold; background:red; padding:2px 5px 2px 5px;opacity:0.75;} #videos {border-top:1px dotted #aaa;padding:10px;} #videos img {border:0px none;margin:3px;} #videos p {clear:left;padding-top:1em;} #vid_player {padding:10px;text-align:center;min-height:344px;min-width:425px;} .vid_anchor {float:left;max-width:120px;min-width:120px;text-align:center;font-size:8pt;margin:0 3px 0 3px;position:relative;} .vid_anchors p, .vid_anchor p {clear:left;margin:0px;} .vid_anchors img {border:3px solid white;} .vid_anchors img:hover {border:3px solid #99f;} .vid_anchors img.playing {border:3px solid #44f;} #no_video {clear:left;padding-top:1em;} .vid_list {float:left;min-width:48%;max-width:48%;margin-left:1%;margin-right:1%;} .vid_list ul {width:100%;border:1px solid #999;min-height:103px; overflow:auto;margin:3px;padding-left:0;list-style:none;} .vid_list #vid_results {max-height:600px;position:relative;} .video_li {position:relative;border:1px solid #777;display:block;margin:1px;padding:1px;overflow:hidden;} .video_li img {float:left;margin-right:5px;} .video_li div {font-size:8pt} .video_li strong {font-size:9pt;} .video_duration {position:absolute;left:3px;top:3px;background-color:black;color:white;padding-left:3px;padding-right:3px;} .vid_btn_add {top:28px;left:3px;background-position:-17px 0;} .vid_btn_del {top:28px;left:3px;background-position:-34px 0;} .vid_btn_play, .vid_btn_play2 {top:47px;left:3px;background-position:-51px 0;} .video_li button {position:absolute;width:15px;height:15px;background-color:transparent;background-image:url(/images/discogs-sprite.png);background-repeat:no-repeat;background-attachment:scroll;border:0 none;margin:0;} #vid_results .vid_btn_del, #vid_remove .vid_btn_del, #vid_current .vid_btn_add {display:none;} .report_link {color:#bbb;text-decoration:none;margin-left:2em;} .smbut { color:black;font-size:10pt;border-top:1px solid #ddd;border-left:1px solid #ddd;border-right:1px solid #bbb;border-bottom:1px solid #bbb;padding:0px 4px 0px 4px;background:#ccc;text-decoration:none;} .smbut:visited { color:black; } .sb2 { background-color:#99ccff; border:1px solid #0066cc; color:black;} .sbbut { background-color:#ffcc00; border:2px solid #0066cc; padding:4px 10px 4px 10px; margin:2px;text-decoration:none;color:#000099;font-size:110%;} a.ybt { cursor:pointer;text-decoration:none;color:#009 } a.ybt:visited { color:#009; } a.ybt span { float:left;height:27px;display:inline; } span.ybt_rec { background:transparent url(/images/ybt_rec.gif) no-repeat scroll top left; padding-right:25px; } span.ybt_main { background:transparent url(/images/ybt_main.gif) no-repeat scroll top right; padding:6px 15px; } div.dl_albums {float:left;padding-right:10px;margin-right:10px;max-width:45%;} div.dl_albums_full {padding-right:10px;margin-right:10px;} div.dl_album {clear:left;padding-top:5px;border-top:1px solid #ccc;margin:0.5em;min-width:100%;} div.dl_data {min-height:60px;} div.dl_error {margin:5px;padding:5px;} img.dl_thumb {float:left;clear:left;margin-right:5px;} div.dl_atracks {clear:left;display:none;padding:4px;} span.dl_trackb {color:#00f;text-decoration:underline;cursor:pointer;} td.dl_previewb {background-image:url(/images/play-stop.gif);background-position:0px 3px;background-repeat:no-repeat;max-width:16px;min-width:16px;padding:0px;cursor:pointer;} td.dl_previewb.playing {background-position:-16px 3px;} div.dl_pages {margin-top:10px;text-align:center;} #dl_preview {position:fixed;max-width:1px;max-height:1px;overflow:hidden;} div.qt_error {background-color:#faa;border:1px solid black;margin:5px;padding:5px;} table.dl_tracks { padding:3px;} table.dl_tracks td { border-top:1px solid #ccc;margin:0px;} div.rightbar { margin:0 0 1em 1em; padding:5px 10px 10px 10px; float:right; border-left:1px solid #ccc; border-bottom:1px solid #ccc; width:200px; line-height:1.2em; background:#f9f9f9; } div.rightbar h2.heading { font-size:102%; border-top:1px dotted #ccc; padding:4px 0; margin-top:1em; } div.rightbar h2.first{ border-top:0px none; padding-top:0px; margin-top:0 none; } div.rp_section { margin-top:2em;border-top:1px dotted #ccc;padding:10px;width:70%; } div.rp_editlinks { margin-left:1em;margin-top:0.25em;} div.rp_editlinks a {text-decoration:none;color:#444;} div.rp_editlinks a:visited {color:#444;} #listadd div.listpicker {min-height:148px;max-height:148px;} #listadd p {clear:all;margin-bottom:0;} #listadd_new input {width:197px;} #listadd_old select {width:203px;} #listtitle, #listdesc {clear:left;} #listtitle {min-height:2.5em;margin-bottom:1em;} #listtitle div.textedit_content {font-size:16pt;font-weight:bold;} #list_details {margin:0 20px;} #list_details p {clear:left;padding-top:1em;} #listitems {padding-left:0;list-style:none none inside;} #listeditbox {float:right;border:1px solid #000;background:#ffc;width:350px;padding:0.5em;font-size:95%;margin-left:1em;} #listeditbox ul {padding-left:1em;} .listitem {border-top:1px solid #ccc;padding:10px;margin:2px;min-height:92px;clear:left;} .listitem_number {min-width:1.5em;float:left;margin-right:10px;margin-top:30px;font-size:200%;} .listitem img {float:left;margin-top:1px;} div.listitem_title {font-weight:bold;margin-bottom:0.5em;font-size:105%;} div.listitem_title, div.listitem_comment {float:left;clear:left;margin-left:1em;} div.listitem_data {float:left;} div.listitem_remove {display:none;margin:0;padding:0 1em 0 1em;float:right;font-size:smaller;cursor:pointer;} div.listitem_remove:hover {background:#ff9;text-decoration:underline;} #list_details.editable li:hover div.listitem_remove {display:block;} div.textedit_content {min-height:2em;min-width:180px;} div.textedit_marker {color:#fff;font-size:smaller;padding:3px;float:left;} div.editable div.textedit:hover div.textedit_marker {color:#000;} div.editable div.textedit:hover div {background:#ff9;cursor:pointer;} div.textedit button {float:left;} #listpub {clear:left;padding-top:0.25em;} #list_public, #list_private {padding:3px;background:#eee;color:#aaa;cursor:pointer;} #list_public:hover, #list_private:hover {padding:2px;border:1px solid #000;} #list_public.true {background:#afa;color:#000;} #list_private.true {background:#faa;color:#000;} #list_delete {margin-left:5em;} .fake_link {color:#00e;text-decoration:underline;cursor:pointer;} .search_head, .search_dym, .search_forsale {font-size:11pt;} .search_forsale a, .search_dym a {font-weight:bold;font-style:italic;} .search_forsale {color:#500;} .search_dym {color:#a00;} .search_uri {color:#060;} .search_results {padding-left:3em;} .search_result {padding:1em 0;border-top:1px dotted #ddd;} .search_result_exact {padding:0.5em 0;border-top:1px dotted #ddd;} .search_result.needsvote {background-color:#ffc;} .search_result.needschanges {background-color:#fdd;} .search_thumb {float:left;clear:left;margin-left:5px;border:0;} .search_data {padding-left:60px;padding-right:150px;} .search_result_A .search_data, .search_result_L .search_data {min-height:3em;} .search_result_R .search_data {min-height:4em;} .search_result_M .search_data {min-height:2em;} .search_tools {font-size:95%;float:right;clear:right;width:140px;border-left:1px dotted #ddd;padding-left:10px;margin-left:2em;list-style-type:none;} .search_tools a, li.fake_link { color:#666;} div.search_release_stats { margin:0.25em 0px;} div.search_release_stats span.joiner { color:#666;margin:0px 0.75em;} .icons.replyicon { background-position: 0pt -680px; } .icons { background-image: url(/images/icons_strip.png); background-repeat: no-repeat; width: 16px; float: left; } ------------6BskB7ERS2JodRB3Bcko3B Content-Disposition: inline; filename=combo.css Content-Type: text/css; name=combo.css Content-Location: http://yui.yahooapis.com/combo?2.7.0/build/container/assets/skins/sam/container.css Content-Transfer-Encoding: Quoted-Printable /* Copyright (c) 2009, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://developer.yahoo.net/yui/license.txt version: 2.7.0 */ .yui-overlay,.yui-panel-container{visibility:hidden;position:absolute;z-= index:2;}.yui-panel{position:relative;}.yui-panel-container form{margin:= 0;}.mask{z-index:1;display:none;position:absolute;top:0;left:0;right:0;b= ottom:0;}.mask.block-scrollbars{overflow:auto;}.masked select,.drag sele= ct,.hide-select select{_visibility:hidden;}.yui-panel-container select{_= visibility:inherit;}.hide-scrollbars,.hide-scrollbars *{overflow:hidden;= }.hide-scrollbars select{display:none;}.show-scrollbars{overflow:auto;}.= yui-panel-container.show-scrollbars,.yui-tt.show-scrollbars{overflow:vis= ible;}.yui-panel-container.show-scrollbars .underlay,.yui-tt.show-scroll= bars .yui-tt-shadow{overflow:auto;}.yui-panel-container.shadow .underlay= .yui-force-redraw{padding-bottom:1px;}.yui-effect-fade .underlay,.yui-ef= fect-fade .yui-tt-shadow{display:none;}.yui-tt-shadow{position:absolute;= }.yui-override-padding{padding:0!important;}.yui-panel-container .contai= ner-close{overflow:hidden;text-indent:-10000em;text-decoration:none;}.yu= i-overlay.yui-force-redraw,.yui-panel-container.yui-force-redraw{margin-= bottom:1px;}.yui-skin-sam .mask{background-color:#000;opacity:.25;filter= :alpha(opacity=3D25);}.yui-skin-sam .yui-panel-container{padding:0 1px;*= padding:2px;}.yui-skin-sam .yui-panel{position:relative;left:0;top:0;bor= der-style:solid;border-width:1px 0;border-color:#808080;z-index:1;*borde= r-width:1px;*zoom:1;_zoom:normal;}.yui-skin-sam .yui-panel .hd,.yui-skin= -sam .yui-panel .bd,.yui-skin-sam .yui-panel .ft{border-style:solid;bord= er-width:0 1px;border-color:#808080;margin:0 -1px;*margin:0;*border:0;}.= yui-skin-sam .yui-panel .hd{border-bottom:solid 1px #ccc;}.yui-skin-sam = .yui-panel .bd,.yui-skin-sam .yui-panel .ft{background-color:#F2F2F2;}.y= ui-skin-sam .yui-panel .hd{padding:0 10px;font-size:93%;line-height:2;*l= ine-height:1.9;font-weight:bold;color:#000;background:url(http://yui.yah= ooapis.com/2.7.0/build/assets/skins/sam/sprite.png) repeat-x 0 -200px;}.= yui-skin-sam .yui-panel .bd{padding:10px;}.yui-skin-sam .yui-panel .ft{b= order-top:solid 1px #808080;padding:5px 10px;font-size:77%;}.yui-skin-sa= m .container-close{position:absolute;top:5px;right:6px;width:25px;height= :15px;background:url(http://yui.yahooapis.com/2.7.0/build/assets/skins/s= am/sprite.png) no-repeat 0 -300px;cursor:pointer;}.yui-skin-sam .yui-pan= el-container .underlay{right:-1px;left:-1px;}.yui-skin-sam .yui-panel-co= ntainer.matte{padding:9px 10px;background-color:#fff;}.yui-skin-sam .yui= -panel-container.shadow{_padding:2px 4px 0 2px;}.yui-skin-sam .yui-panel= -container.shadow .underlay{position:absolute;top:2px;left:-3px;right:-3= px;bottom:-3px;*top:4px;*left:-1px;*right:-1px;*bottom:-1px;_top:0;_left= :0;_right:0;_bottom:0;_margin-top:3px;_margin-left:-1px;background-color= :#000;opacity:.12;filter:alpha(opacity=3D12);}.yui-skin-sam .yui-dialog = .ft{border-top:none;padding:0 10px 10px 10px;font-size:100%;}.yui-skin-s= am .yui-dialog .ft .button-group{display:block;text-align:right;}.yui-sk= in-sam .yui-dialog .ft button.default{font-weight:bold;}.yui-skin-sam .y= ui-dialog .ft span.default{border-color:#304369;background-position:0 -1= 400px;}.yui-skin-sam .yui-dialog .ft span.default .first-child{border-co= lor:#304369;}.yui-skin-sam .yui-dialog .ft span.default button{color:#ff= f;}.yui-skin-sam .yui-dialog .ft span.yui-button-disabled{background-pos= ition:0 -1500px;border-color:#ccc;}.yui-skin-sam .yui-dialog .ft span.yu= i-button-disabled .first-child{border-color:#ccc;}.yui-skin-sam .yui-dia= log .ft span.yui-button-disabled button{color:#a6a6a6;}.yui-skin-sam .yu= i-simple-dialog .bd .yui-icon{background:url(http://yui.yahooapis.com/2.= 7.0/build/assets/skins/sam/sprite.png) no-repeat 0 0;width:16px;height:1= 6px;margin-right:10px;float:left;}.yui-skin-sam .yui-simple-dialog .bd s= pan.blckicon{background-position:0 -1100px;}.yui-skin-sam .yui-simple-di= alog .bd span.alrticon{background-position:0 -1050px;}.yui-skin-sam .yui= -simple-dialog .bd span.hlpicon{background-position:0 -1150px;}.yui-skin= -sam .yui-simple-dialog .bd span.infoicon{background-position:0 -1200px;= }.yui-skin-sam .yui-simple-dialog .bd span.warnicon{background-position:= 0 -1900px;}.yui-skin-sam .yui-simple-dialog .bd span.tipicon{background-= position:0 -1250px;}.yui-skin-sam .yui-tt .bd{position:relative;top:0;le= ft:0;z-index:1;color:#000;padding:2px 5px;border-color:#D4C237 #A6982B #= A6982B #A6982B;border-width:1px;border-style:solid;background-color:#FFE= E69;}.yui-skin-sam .yui-tt.show-scrollbars .bd{overflow:auto;}.yui-skin-= sam .yui-tt-shadow{top:2px;right:-3px;left:-3px;bottom:-3px;background-c= olor:#000;}.yui-skin-sam .yui-tt-shadow-visible{opacity:.12;filter:alpha= (opacity=3D12);} ------------6BskB7ERS2JodRB3Bcko3B Content-Disposition: inline; filename=combo.js Content-Type: application/x-javascript; name=combo.js Content-Location: http://yui.yahooapis.com/combo?2.7.0/build/utilities/utilities.js&2.7.0/build/datasource/datasource-min.js&2.7.0/build/autocomplete/autocomplete-min.js&2.7.0/build/container/container-min.js Content-Transfer-Encoding: Base64 LyoKQ29weXJpZ2h0IChjKSAyMDA5LCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJl c2VydmVkLgpDb2RlIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0QgTGljZW5zZToKaHR0 cDovL2RldmVsb3Blci55YWhvby5uZXQveXVpL2xpY2Vuc2UudHh0CnZlcnNpb246 IDIuNy4wCiovCmlmKHR5cGVvZiBZQUhPTz09InVuZGVmaW5lZCJ8fCFZQUhPTyl7 dmFyIFlBSE9PPXt9O31ZQUhPTy5uYW1lc3BhY2U9ZnVuY3Rpb24oKXt2YXIgQT1h cmd1bWVudHMsRT1udWxsLEMsQixEO2ZvcihDPTA7QzxBLmxlbmd0aDtDPUMrMSl7 RD0oIiIrQVtDXSkuc3BsaXQoIi4iKTtFPVlBSE9PO2ZvcihCPShEWzBdPT0iWUFI T08iKT8xOjA7QjxELmxlbmd0aDtCPUIrMSl7RVtEW0JdXT1FW0RbQl1dfHx7fTtF PUVbRFtCXV07fX1yZXR1cm4gRTt9O1lBSE9PLmxvZz1mdW5jdGlvbihELEEsQyl7 dmFyIEI9WUFIT08ud2lkZ2V0LkxvZ2dlcjtpZihCJiZCLmxvZyl7cmV0dXJuIEIu bG9nKEQsQSxDKTt9ZWxzZXtyZXR1cm4gZmFsc2U7fX07WUFIT08ucmVnaXN0ZXI9 ZnVuY3Rpb24oQSxFLEQpe3ZhciBJPVlBSE9PLmVudi5tb2R1bGVzLEIsSCxHLEYs QztpZighSVtBXSl7SVtBXT17dmVyc2lvbnM6W10sYnVpbGRzOltdfTt9Qj1JW0Fd O0g9RC52ZXJzaW9uO0c9RC5idWlsZDtGPVlBSE9PLmVudi5saXN0ZW5lcnM7Qi5u YW1lPUE7Qi52ZXJzaW9uPUg7Qi5idWlsZD1HO0IudmVyc2lvbnMucHVzaChIKTtC LmJ1aWxkcy5wdXNoKEcpO0IubWFpbkNsYXNzPUU7Zm9yKEM9MDtDPEYubGVuZ3Ro O0M9QysxKXtGW0NdKEIpO31pZihFKXtFLlZFUlNJT049SDtFLkJVSUxEPUc7fWVs c2V7WUFIT08ubG9nKCJtYWluQ2xhc3MgaXMgdW5kZWZpbmVkIGZvciBtb2R1bGUg IitBLCJ3YXJuIik7fX07WUFIT08uZW52PVlBSE9PLmVudnx8e21vZHVsZXM6W10s bGlzdGVuZXJzOltdfTtZQUhPTy5lbnYuZ2V0VmVyc2lvbj1mdW5jdGlvbihBKXty ZXR1cm4gWUFIT08uZW52Lm1vZHVsZXNbQV18fG51bGw7fTtZQUhPTy5lbnYudWE9 ZnVuY3Rpb24oKXt2YXIgQz17aWU6MCxvcGVyYTowLGdlY2tvOjAsd2Via2l0OjAs bW9iaWxlOm51bGwsYWlyOjAsY2FqYTowfSxCPW5hdmlnYXRvci51c2VyQWdlbnQs QTtpZigoL0tIVE1MLykudGVzdChCKSl7Qy53ZWJraXQ9MTt9QT1CLm1hdGNoKC9B cHBsZVdlYktpdFwvKFteXHNdKikvKTtpZihBJiZBWzFdKXtDLndlYmtpdD1wYXJz ZUZsb2F0KEFbMV0pO2lmKC8gTW9iaWxlXC8vLnRlc3QoQikpe0MubW9iaWxlPSJB cHBsZSI7fWVsc2V7QT1CLm1hdGNoKC9Ob2tpYU5bXlwvXSovKTtpZihBKXtDLm1v YmlsZT1BWzBdO319QT1CLm1hdGNoKC9BZG9iZUFJUlwvKFteXHNdKikvKTtpZihB KXtDLmFpcj1BWzBdO319aWYoIUMud2Via2l0KXtBPUIubWF0Y2goL09wZXJhW1xz XC9dKFteXHNdKikvKTtpZihBJiZBWzFdKXtDLm9wZXJhPXBhcnNlRmxvYXQoQVsx XSk7QT1CLm1hdGNoKC9PcGVyYSBNaW5pW147XSovKTtpZihBKXtDLm1vYmlsZT1B WzBdO319ZWxzZXtBPUIubWF0Y2goL01TSUVccyhbXjtdKikvKTtpZihBJiZBWzFd KXtDLmllPXBhcnNlRmxvYXQoQVsxXSk7fWVsc2V7QT1CLm1hdGNoKC9HZWNrb1wv KFteXHNdKikvKTtpZihBKXtDLmdlY2tvPTE7QT1CLm1hdGNoKC9ydjooW15cc1wp XSopLyk7aWYoQSYmQVsxXSl7Qy5nZWNrbz1wYXJzZUZsb2F0KEFbMV0pO319fX19 QT1CLm1hdGNoKC9DYWphXC8oW15cc10qKS8pO2lmKEEmJkFbMV0pe0MuY2FqYT1w YXJzZUZsb2F0KEFbMV0pO31yZXR1cm4gQzt9KCk7KGZ1bmN0aW9uKCl7WUFIT08u bmFtZXNwYWNlKCJ1dGlsIiwid2lkZ2V0IiwiZXhhbXBsZSIpO2lmKCJ1bmRlZmlu ZWQiIT09dHlwZW9mIFlBSE9PX2NvbmZpZyl7dmFyIEI9WUFIT09fY29uZmlnLmxp c3RlbmVyLEE9WUFIT08uZW52Lmxpc3RlbmVycyxEPXRydWUsQztpZihCKXtmb3Io Qz0wO0M8QS5sZW5ndGg7Qz1DKzEpe2lmKEFbQ109PUIpe0Q9ZmFsc2U7YnJlYWs7 fX1pZihEKXtBLnB1c2goQik7fX19fSkoKTtZQUhPTy5sYW5nPVlBSE9PLmxhbmd8 fHt9OyhmdW5jdGlvbigpe3ZhciBCPVlBSE9PLmxhbmcsRj0iW29iamVjdCBBcnJh eV0iLEM9IltvYmplY3QgRnVuY3Rpb25dIixBPU9iamVjdC5wcm90b3R5cGUsRT1b InRvU3RyaW5nIiwidmFsdWVPZiJdLEQ9e2lzQXJyYXk6ZnVuY3Rpb24oRyl7cmV0 dXJuIEEudG9TdHJpbmcuYXBwbHkoRyk9PT1GO30saXNCb29sZWFuOmZ1bmN0aW9u KEcpe3JldHVybiB0eXBlb2YgRz09PSJib29sZWFuIjt9LGlzRnVuY3Rpb246ZnVu Y3Rpb24oRyl7cmV0dXJuIEEudG9TdHJpbmcuYXBwbHkoRyk9PT1DO30saXNOdWxs OmZ1bmN0aW9uKEcpe3JldHVybiBHPT09bnVsbDt9LGlzTnVtYmVyOmZ1bmN0aW9u KEcpe3JldHVybiB0eXBlb2YgRz09PSJudW1iZXIiJiZpc0Zpbml0ZShHKTt9LGlz T2JqZWN0OmZ1bmN0aW9uKEcpe3JldHVybihHJiYodHlwZW9mIEc9PT0ib2JqZWN0 Inx8Qi5pc0Z1bmN0aW9uKEcpKSl8fGZhbHNlO30saXNTdHJpbmc6ZnVuY3Rpb24o Ryl7cmV0dXJuIHR5cGVvZiBHPT09InN0cmluZyI7fSxpc1VuZGVmaW5lZDpmdW5j dGlvbihHKXtyZXR1cm4gdHlwZW9mIEc9PT0idW5kZWZpbmVkIjt9LF9JRUVudW1G aXg6KFlBSE9PLmVudi51YS5pZSk/ZnVuY3Rpb24oSSxIKXt2YXIgRyxLLEo7Zm9y KEc9MDtHPEUubGVuZ3RoO0c9RysxKXtLPUVbR107Sj1IW0tdO2lmKEIuaXNGdW5j dGlvbihKKSYmSiE9QVtLXSl7SVtLXT1KO319fTpmdW5jdGlvbigpe30sZXh0ZW5k OmZ1bmN0aW9uKEosSyxJKXtpZighS3x8IUope3Rocm93IG5ldyBFcnJvcigiZXh0 ZW5kIGZhaWxlZCwgcGxlYXNlIGNoZWNrIHRoYXQgIisiYWxsIGRlcGVuZGVuY2ll cyBhcmUgaW5jbHVkZWQuIik7fXZhciBIPWZ1bmN0aW9uKCl7fSxHO0gucHJvdG90 eXBlPUsucHJvdG90eXBlO0oucHJvdG90eXBlPW5ldyBIKCk7Si5wcm90b3R5cGUu Y29uc3RydWN0b3I9SjtKLnN1cGVyY2xhc3M9Sy5wcm90b3R5cGU7aWYoSy5wcm90 b3R5cGUuY29uc3RydWN0b3I9PUEuY29uc3RydWN0b3Ipe0sucHJvdG90eXBlLmNv bnN0cnVjdG9yPUs7fWlmKEkpe2ZvcihHIGluIEkpe2lmKEIuaGFzT3duUHJvcGVy dHkoSSxHKSl7Si5wcm90b3R5cGVbR109SVtHXTt9fUIuX0lFRW51bUZpeChKLnBy b3RvdHlwZSxJKTt9fSxhdWdtZW50T2JqZWN0OmZ1bmN0aW9uKEssSil7aWYoIUp8 fCFLKXt0aHJvdyBuZXcgRXJyb3IoIkFic29yYiBmYWlsZWQsIHZlcmlmeSBkZXBl bmRlbmNpZXMuIik7fXZhciBHPWFyZ3VtZW50cyxJLEwsSD1HWzJdO2lmKEgmJkgh PT10cnVlKXtmb3IoST0yO0k8Ry5sZW5ndGg7ST1JKzEpe0tbR1tJXV09SltHW0ld XTt9fWVsc2V7Zm9yKEwgaW4gSil7aWYoSHx8IShMIGluIEspKXtLW0xdPUpbTF07 fX1CLl9JRUVudW1GaXgoSyxKKTt9fSxhdWdtZW50UHJvdG86ZnVuY3Rpb24oSixJ KXtpZighSXx8IUope3Rocm93IG5ldyBFcnJvcigiQXVnbWVudCBmYWlsZWQsIHZl cmlmeSBkZXBlbmRlbmNpZXMuIik7fXZhciBHPVtKLnByb3RvdHlwZSxJLnByb3Rv dHlwZV0sSDtmb3IoSD0yO0g8YXJndW1lbnRzLmxlbmd0aDtIPUgrMSl7Ry5wdXNo KGFyZ3VtZW50c1tIXSk7fUIuYXVnbWVudE9iamVjdC5hcHBseSh0aGlzLEcpO30s ZHVtcDpmdW5jdGlvbihHLEwpe3ZhciBJLEssTj1bXSxPPSJ7Li4ufSIsSD0iZigp ey4uLn0iLE09IiwgIixKPSIgPT4gIjtpZighQi5pc09iamVjdChHKSl7cmV0dXJu IEcrIiI7fWVsc2V7aWYoRyBpbnN0YW5jZW9mIERhdGV8fCgibm9kZVR5cGUiIGlu IEcmJiJ0YWdOYW1lIiBpbiBHKSl7cmV0dXJuIEc7fWVsc2V7aWYoQi5pc0Z1bmN0 aW9uKEcpKXtyZXR1cm4gSDt9fX1MPShCLmlzTnVtYmVyKEwpKT9MOjM7aWYoQi5p c0FycmF5KEcpKXtOLnB1c2goIlsiKTtmb3IoST0wLEs9Ry5sZW5ndGg7STxLO0k9 SSsxKXtpZihCLmlzT2JqZWN0KEdbSV0pKXtOLnB1c2goKEw+MCk/Qi5kdW1wKEdb SV0sTC0xKTpPKTt9ZWxzZXtOLnB1c2goR1tJXSk7fU4ucHVzaChNKTt9aWYoTi5s ZW5ndGg+MSl7Ti5wb3AoKTt9Ti5wdXNoKCJdIik7fWVsc2V7Ti5wdXNoKCJ7Iik7 Zm9yKEkgaW4gRyl7aWYoQi5oYXNPd25Qcm9wZXJ0eShHLEkpKXtOLnB1c2goSStK KTtpZihCLmlzT2JqZWN0KEdbSV0pKXtOLnB1c2goKEw+MCk/Qi5kdW1wKEdbSV0s TC0xKTpPKTt9ZWxzZXtOLnB1c2goR1tJXSk7fU4ucHVzaChNKTt9fWlmKE4ubGVu Z3RoPjEpe04ucG9wKCk7fU4ucHVzaCgifSIpO31yZXR1cm4gTi5qb2luKCIiKTt9 LHN1YnN0aXR1dGU6ZnVuY3Rpb24oVixILE8pe3ZhciBMLEssSixSLFMsVSxRPVtd LEksTT0iZHVtcCIsUD0iICIsRz0ieyIsVD0ifSIsTjtmb3IoOzspe0w9Vi5sYXN0 SW5kZXhPZihHKTtpZihMPDApe2JyZWFrO31LPVYuaW5kZXhPZihULEwpO2lmKEwr MT49Syl7YnJlYWs7fUk9Vi5zdWJzdHJpbmcoTCsxLEspO1I9STtVPW51bGw7Sj1S LmluZGV4T2YoUCk7aWYoSj4tMSl7VT1SLnN1YnN0cmluZyhKKzEpO1I9Ui5zdWJz dHJpbmcoMCxKKTt9Uz1IW1JdO2lmKE8pe1M9TyhSLFMsVSk7fWlmKEIuaXNPYmpl Y3QoUykpe2lmKEIuaXNBcnJheShTKSl7Uz1CLmR1bXAoUyxwYXJzZUludChVLDEw KSk7fWVsc2V7VT1VfHwiIjtOPVUuaW5kZXhPZihNKTtpZihOPi0xKXtVPVUuc3Vi c3RyaW5nKDQpO31pZihTLnRvU3RyaW5nPT09QS50b1N0cmluZ3x8Tj4tMSl7Uz1C LmR1bXAoUyxwYXJzZUludChVLDEwKSk7fWVsc2V7Uz1TLnRvU3RyaW5nKCk7fX19 ZWxzZXtpZighQi5pc1N0cmluZyhTKSYmIUIuaXNOdW1iZXIoUykpe1M9In4tIitR Lmxlbmd0aCsiLX4iO1FbUS5sZW5ndGhdPUk7fX1WPVYuc3Vic3RyaW5nKDAsTCkr UytWLnN1YnN0cmluZyhLKzEpO31mb3IoTD1RLmxlbmd0aC0xO0w+PTA7TD1MLTEp e1Y9Vi5yZXBsYWNlKG5ldyBSZWdFeHAoIn4tIitMKyItfiIpLCJ7IitRW0xdKyJ9 IiwiZyIpO31yZXR1cm4gVjt9LHRyaW06ZnVuY3Rpb24oRyl7dHJ5e3JldHVybiBH LnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKTt9Y2F0Y2goSCl7cmV0dXJuIEc7fX0s bWVyZ2U6ZnVuY3Rpb24oKXt2YXIgSj17fSxIPWFyZ3VtZW50cyxHPUgubGVuZ3Ro LEk7Zm9yKEk9MDtJPEc7ST1JKzEpe0IuYXVnbWVudE9iamVjdChKLEhbSV0sdHJ1 ZSk7fXJldHVybiBKO30sbGF0ZXI6ZnVuY3Rpb24oTixILE8sSixLKXtOPU58fDA7 SD1IfHx7fTt2YXIgST1PLE09SixMLEc7aWYoQi5pc1N0cmluZyhPKSl7ST1IW09d O31pZighSSl7dGhyb3cgbmV3IFR5cGVFcnJvcigibWV0aG9kIHVuZGVmaW5lZCIp O31pZighQi5pc0FycmF5KE0pKXtNPVtKXTt9TD1mdW5jdGlvbigpe0kuYXBwbHko SCxNKTt9O0c9KEspP3NldEludGVydmFsKEwsTik6c2V0VGltZW91dChMLE4pO3Jl dHVybntpbnRlcnZhbDpLLGNhbmNlbDpmdW5jdGlvbigpe2lmKHRoaXMuaW50ZXJ2 YWwpe2NsZWFySW50ZXJ2YWwoRyk7fWVsc2V7Y2xlYXJUaW1lb3V0KEcpO319fTt9 LGlzVmFsdWU6ZnVuY3Rpb24oRyl7cmV0dXJuKEIuaXNPYmplY3QoRyl8fEIuaXNT dHJpbmcoRyl8fEIuaXNOdW1iZXIoRyl8fEIuaXNCb29sZWFuKEcpKTt9fTtCLmhh c093blByb3BlcnR5PShBLmhhc093blByb3BlcnR5KT9mdW5jdGlvbihHLEgpe3Jl dHVybiBHJiZHLmhhc093blByb3BlcnR5KEgpO306ZnVuY3Rpb24oRyxIKXtyZXR1 cm4gIUIuaXNVbmRlZmluZWQoR1tIXSkmJkcuY29uc3RydWN0b3IucHJvdG90eXBl W0hdIT09R1tIXTt9O0QuYXVnbWVudE9iamVjdChCLEQsdHJ1ZSk7WUFIT08udXRp bC5MYW5nPUI7Qi5hdWdtZW50PUIuYXVnbWVudFByb3RvO1lBSE9PLmF1Z21lbnQ9 Qi5hdWdtZW50UHJvdG87WUFIT08uZXh0ZW5kPUIuZXh0ZW5kO30pKCk7WUFIT08u cmVnaXN0ZXIoInlhaG9vIixZQUhPTyx7dmVyc2lvbjoiMi43LjAiLGJ1aWxkOiIx Nzk2In0pO1lBSE9PLnV0aWwuR2V0PWZ1bmN0aW9uKCl7dmFyIE09e30sTD0wLFI9 MCxFPWZhbHNlLE49WUFIT08uZW52LnVhLFM9WUFIT08ubGFuZzt2YXIgSj1mdW5j dGlvbihXLFQsWCl7dmFyIFU9WHx8d2luZG93LFk9VS5kb2N1bWVudCxaPVkuY3Jl YXRlRWxlbWVudChXKTtmb3IodmFyIFYgaW4gVCl7aWYoVFtWXSYmWUFIT08ubGFu Zy5oYXNPd25Qcm9wZXJ0eShULFYpKXtaLnNldEF0dHJpYnV0ZShWLFRbVl0pO319 cmV0dXJuIFo7fTt2YXIgST1mdW5jdGlvbihULFUsVyl7dmFyIFY9V3x8InV0Zi04 IjtyZXR1cm4gSigibGluayIseyJpZCI6Inl1aV9fZHluXyIrKFIrKyksInR5cGUi OiJ0ZXh0L2NzcyIsImNoYXJzZXQiOlYsInJlbCI6InN0eWxlc2hlZXQiLCJocmVm IjpUfSxVKTsKfTt2YXIgUD1mdW5jdGlvbihULFUsVyl7dmFyIFY9V3x8InV0Zi04 IjtyZXR1cm4gSigic2NyaXB0Iix7ImlkIjoieXVpX19keW5fIisoUisrKSwidHlw ZSI6InRleHQvamF2YXNjcmlwdCIsImNoYXJzZXQiOlYsInNyYyI6VH0sVSk7fTt2 YXIgQT1mdW5jdGlvbihULFUpe3JldHVybnt0SWQ6VC50SWQsd2luOlQud2luLGRh dGE6VC5kYXRhLG5vZGVzOlQubm9kZXMsbXNnOlUscHVyZ2U6ZnVuY3Rpb24oKXtE KHRoaXMudElkKTt9fTt9O3ZhciBCPWZ1bmN0aW9uKFQsVyl7dmFyIFU9TVtXXSxW PShTLmlzU3RyaW5nKFQpKT9VLndpbi5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChU KTpUO2lmKCFWKXtRKFcsInRhcmdldCBub2RlIG5vdCBmb3VuZDogIitUKTt9cmV0 dXJuIFY7fTt2YXIgUT1mdW5jdGlvbihXLFYpe3ZhciBUPU1bV107aWYoVC5vbkZh aWx1cmUpe3ZhciBVPVQuc2NvcGV8fFQud2luO1Qub25GYWlsdXJlLmNhbGwoVSxB KFQsVikpO319O3ZhciBDPWZ1bmN0aW9uKFcpe3ZhciBUPU1bV107VC5maW5pc2hl ZD10cnVlO2lmKFQuYWJvcnRlZCl7dmFyIFY9InRyYW5zYWN0aW9uICIrVysiIHdh cyBhYm9ydGVkIjtRKFcsVik7cmV0dXJuO31pZihULm9uU3VjY2Vzcyl7dmFyIFU9 VC5zY29wZXx8VC53aW47VC5vblN1Y2Nlc3MuY2FsbChVLEEoVCkpO319O3ZhciBP PWZ1bmN0aW9uKFYpe3ZhciBUPU1bVl07aWYoVC5vblRpbWVvdXQpe3ZhciBVPVQu c2NvcGV8fFQ7VC5vblRpbWVvdXQuY2FsbChVLEEoVCkpO319O3ZhciBHPWZ1bmN0 aW9uKFYsWil7dmFyIFU9TVtWXTtpZihVLnRpbWVyKXtVLnRpbWVyLmNhbmNlbCgp O31pZihVLmFib3J0ZWQpe3ZhciBYPSJ0cmFuc2FjdGlvbiAiK1YrIiB3YXMgYWJv cnRlZCI7UShWLFgpO3JldHVybjt9aWYoWil7VS51cmwuc2hpZnQoKTtpZihVLnZh ck5hbWUpe1UudmFyTmFtZS5zaGlmdCgpO319ZWxzZXtVLnVybD0oUy5pc1N0cmlu ZyhVLnVybCkpP1tVLnVybF06VS51cmw7aWYoVS52YXJOYW1lKXtVLnZhck5hbWU9 KFMuaXNTdHJpbmcoVS52YXJOYW1lKSk/W1UudmFyTmFtZV06VS52YXJOYW1lO319 dmFyIGM9VS53aW4sYj1jLmRvY3VtZW50LGE9Yi5nZXRFbGVtZW50c0J5VGFnTmFt ZSgiaGVhZCIpWzBdLFc7aWYoVS51cmwubGVuZ3RoPT09MCl7aWYoVS50eXBlPT09 InNjcmlwdCImJk4ud2Via2l0JiZOLndlYmtpdDw0MjAmJiFVLmZpbmFscGFzcyYm IVUudmFyTmFtZSl7dmFyIFk9UChudWxsLFUud2luLFUuY2hhcnNldCk7WS5pbm5l ckhUTUw9J1lBSE9PLnV0aWwuR2V0Ll9maW5hbGl6ZSgiJytWKyciKTsnO1Uubm9k ZXMucHVzaChZKTthLmFwcGVuZENoaWxkKFkpO31lbHNle0MoVik7fXJldHVybjt9 dmFyIFQ9VS51cmxbMF07aWYoIVQpe1UudXJsLnNoaWZ0KCk7cmV0dXJuIEcoVik7 fWlmKFUudGltZW91dCl7VS50aW1lcj1TLmxhdGVyKFUudGltZW91dCxVLE8sVik7 fWlmKFUudHlwZT09PSJzY3JpcHQiKXtXPVAoVCxjLFUuY2hhcnNldCk7fWVsc2V7 Vz1JKFQsYyxVLmNoYXJzZXQpO31GKFUudHlwZSxXLFYsVCxjLFUudXJsLmxlbmd0 aCk7VS5ub2Rlcy5wdXNoKFcpO2lmKFUuaW5zZXJ0QmVmb3JlKXt2YXIgZT1CKFUu aW5zZXJ0QmVmb3JlLFYpO2lmKGUpe2UucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUo VyxlKTt9fWVsc2V7YS5hcHBlbmRDaGlsZChXKTt9aWYoKE4ud2Via2l0fHxOLmdl Y2tvKSYmVS50eXBlPT09ImNzcyIpe0coVixUKTt9fTt2YXIgSz1mdW5jdGlvbigp e2lmKEUpe3JldHVybjt9RT10cnVlO2Zvcih2YXIgVCBpbiBNKXt2YXIgVT1NW1Rd O2lmKFUuYXV0b3B1cmdlJiZVLmZpbmlzaGVkKXtEKFUudElkKTtkZWxldGUgTVtU XTt9fUU9ZmFsc2U7fTt2YXIgRD1mdW5jdGlvbihhKXt2YXIgWD1NW2FdO2lmKFgp e3ZhciBaPVgubm9kZXMsVD1aLmxlbmd0aCxZPVgud2luLmRvY3VtZW50LFc9WS5n ZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdO2lmKFguaW5zZXJ0QmVmb3Jl KXt2YXIgVj1CKFguaW5zZXJ0QmVmb3JlLGEpO2lmKFYpe1c9Vi5wYXJlbnROb2Rl O319Zm9yKHZhciBVPTA7VTxUO1U9VSsxKXtXLnJlbW92ZUNoaWxkKFpbVV0pO31Y Lm5vZGVzPVtdO319O3ZhciBIPWZ1bmN0aW9uKFUsVCxWKXt2YXIgWD0icSIrKEwr Kyk7Vj1WfHx7fTtpZihMJVlBSE9PLnV0aWwuR2V0LlBVUkdFX1RIUkVTSD09PTAp e0soKTt9TVtYXT1TLm1lcmdlKFYse3RJZDpYLHR5cGU6VSx1cmw6VCxmaW5pc2hl ZDpmYWxzZSxhYm9ydGVkOmZhbHNlLG5vZGVzOltdfSk7dmFyIFc9TVtYXTtXLndp bj1XLndpbnx8d2luZG93O1cuc2NvcGU9Vy5zY29wZXx8Vy53aW47Vy5hdXRvcHVy Z2U9KCJhdXRvcHVyZ2UiIGluIFcpP1cuYXV0b3B1cmdlOihVPT09InNjcmlwdCIp P3RydWU6ZmFsc2U7Uy5sYXRlcigwLFcsRyxYKTtyZXR1cm57dElkOlh9O307dmFy IEY9ZnVuY3Rpb24oYyxYLFcsVSxZLFosYil7dmFyIGE9Ynx8RztpZihOLmllKXtY Lm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe3ZhciBkPXRoaXMucmVhZHlT dGF0ZTtpZigibG9hZGVkIj09PWR8fCJjb21wbGV0ZSI9PT1kKXtYLm9ucmVhZHlz dGF0ZWNoYW5nZT1udWxsO2EoVyxVKTt9fTt9ZWxzZXtpZihOLndlYmtpdCl7aWYo Yz09PSJzY3JpcHQiKXtpZihOLndlYmtpdD49NDIwKXtYLmFkZEV2ZW50TGlzdGVu ZXIoImxvYWQiLGZ1bmN0aW9uKCl7YShXLFUpO30pO31lbHNle3ZhciBUPU1bV107 aWYoVC52YXJOYW1lKXt2YXIgVj1ZQUhPTy51dGlsLkdldC5QT0xMX0ZSRVE7VC5t YXhhdHRlbXB0cz1ZQUhPTy51dGlsLkdldC5USU1FT1VUL1Y7VC5hdHRlbXB0cz0w O1QuX2NhY2hlPVQudmFyTmFtZVswXS5zcGxpdCgiLiIpO1QudGltZXI9Uy5sYXRl cihWLFQsZnVuY3Rpb24oail7dmFyIGY9dGhpcy5fY2FjaGUsZT1mLmxlbmd0aCxk PXRoaXMud2luLGc7Zm9yKGc9MDtnPGU7Zz1nKzEpe2Q9ZFtmW2ddXTtpZighZCl7 dGhpcy5hdHRlbXB0cysrO2lmKHRoaXMuYXR0ZW1wdHMrKz50aGlzLm1heGF0dGVt cHRzKXt2YXIgaD0iT3ZlciByZXRyeSBsaW1pdCwgZ2l2aW5nIHVwIjtULnRpbWVy LmNhbmNlbCgpO1EoVyxoKTt9ZWxzZXt9cmV0dXJuO319VC50aW1lci5jYW5jZWwo KTthKFcsVSk7fSxudWxsLHRydWUpO31lbHNle1MubGF0ZXIoWUFIT08udXRpbC5H ZXQuUE9MTF9GUkVRLG51bGwsYSxbVyxVXSk7fX19fWVsc2V7WC5vbmxvYWQ9ZnVu Y3Rpb24oKXthKFcsVSk7fTt9fX07cmV0dXJue1BPTExfRlJFUToxMCxQVVJHRV9U SFJFU0g6MjAsVElNRU9VVDoyMDAwLF9maW5hbGl6ZTpmdW5jdGlvbihUKXtTLmxh dGVyKDAsbnVsbCxDLFQpO30sYWJvcnQ6ZnVuY3Rpb24oVSl7dmFyIFY9KFMuaXNT dHJpbmcoVSkpP1U6VS50SWQ7dmFyIFQ9TVtWXTtpZihUKXtULmFib3J0ZWQ9dHJ1 ZTt9fSxzY3JpcHQ6ZnVuY3Rpb24oVCxVKXtyZXR1cm4gSCgic2NyaXB0IixULFUp O30sY3NzOmZ1bmN0aW9uKFQsVSl7cmV0dXJuIEgoImNzcyIsVCxVKTt9fTt9KCk7 WUFIT08ucmVnaXN0ZXIoImdldCIsWUFIT08udXRpbC5HZXQse3ZlcnNpb246IjIu Ny4wIixidWlsZDoiMTc5NiJ9KTsoZnVuY3Rpb24oKXt2YXIgWT1ZQUhPTyx1dGls PVkudXRpbCxsYW5nPVkubGFuZyxlbnY9WS5lbnYsUFJPVj0iX3Byb3ZpZGVzIixT VVBFUj0iX3N1cGVyc2VkZXMiLFJFUT0iZXhwYW5kZWQiLEFGVEVSPSJfYWZ0ZXIi O3ZhciBZVUk9e2R1cHNBbGxvd2VkOnsieWFob28iOnRydWUsImdldCI6dHJ1ZX0s aW5mbzp7InJvb3QiOiIyLjcuMC9idWlsZC8iLCJiYXNlIjoiaHR0cDovL3l1aS55 YWhvb2FwaXMuY29tLzIuNy4wL2J1aWxkLyIsImNvbWJvQmFzZSI6Imh0dHA6Ly95 dWkueWFob29hcGlzLmNvbS9jb21ibz8iLCJza2luIjp7ImRlZmF1bHRTa2luIjoi c2FtIiwiYmFzZSI6ImFzc2V0cy9za2lucy8iLCJwYXRoIjoic2tpbi5jc3MiLCJh ZnRlciI6WyJyZXNldCIsImZvbnRzIiwiZ3JpZHMiLCJiYXNlIl0sInJvbGx1cCI6 M30sZHVwc0FsbG93ZWQ6WyJ5YWhvbyIsImdldCJdLCJtb2R1bGVJbmZvIjp7ImFu aW1hdGlvbiI6eyJ0eXBlIjoianMiLCJwYXRoIjoiYW5pbWF0aW9uL2FuaW1hdGlv bi1taW4uanMiLCJyZXF1aXJlcyI6WyJkb20iLCJldmVudCJdfSwiYXV0b2NvbXBs ZXRlIjp7InR5cGUiOiJqcyIsInBhdGgiOiJhdXRvY29tcGxldGUvYXV0b2NvbXBs ZXRlLW1pbi5qcyIsInJlcXVpcmVzIjpbImRvbSIsImV2ZW50IiwiZGF0YXNvdXJj ZSJdLCJvcHRpb25hbCI6WyJjb25uZWN0aW9uIiwiYW5pbWF0aW9uIl0sInNraW5u YWJsZSI6dHJ1ZX0sImJhc2UiOnsidHlwZSI6ImNzcyIsInBhdGgiOiJiYXNlL2Jh c2UtbWluLmNzcyIsImFmdGVyIjpbInJlc2V0IiwiZm9udHMiLCJncmlkcyJdfSwi YnV0dG9uIjp7InR5cGUiOiJqcyIsInBhdGgiOiJidXR0b24vYnV0dG9uLW1pbi5q cyIsInJlcXVpcmVzIjpbImVsZW1lbnQiXSwib3B0aW9uYWwiOlsibWVudSJdLCJz a2lubmFibGUiOnRydWV9LCJjYWxlbmRhciI6eyJ0eXBlIjoianMiLCJwYXRoIjoi Y2FsZW5kYXIvY2FsZW5kYXItbWluLmpzIiwicmVxdWlyZXMiOlsiZXZlbnQiLCJk b20iXSwic2tpbm5hYmxlIjp0cnVlfSwiY2Fyb3VzZWwiOnsidHlwZSI6ImpzIiwi cGF0aCI6ImNhcm91c2VsL2Nhcm91c2VsLW1pbi5qcyIsInJlcXVpcmVzIjpbImVs ZW1lbnQiXSwib3B0aW9uYWwiOlsiYW5pbWF0aW9uIl0sInNraW5uYWJsZSI6dHJ1 ZX0sImNoYXJ0cyI6eyJ0eXBlIjoianMiLCJwYXRoIjoiY2hhcnRzL2NoYXJ0cy1t aW4uanMiLCJyZXF1aXJlcyI6WyJlbGVtZW50IiwianNvbiIsImRhdGFzb3VyY2Ui XX0sImNvbG9ycGlja2VyIjp7InR5cGUiOiJqcyIsInBhdGgiOiJjb2xvcnBpY2tl ci9jb2xvcnBpY2tlci1taW4uanMiLCJyZXF1aXJlcyI6WyJzbGlkZXIiLCJlbGVt ZW50Il0sIm9wdGlvbmFsIjpbImFuaW1hdGlvbiJdLCJza2lubmFibGUiOnRydWV9 LCJjb25uZWN0aW9uIjp7InR5cGUiOiJqcyIsInBhdGgiOiJjb25uZWN0aW9uL2Nv bm5lY3Rpb24tbWluLmpzIiwicmVxdWlyZXMiOlsiZXZlbnQiXX0sImNvbnRhaW5l ciI6eyJ0eXBlIjoianMiLCJwYXRoIjoiY29udGFpbmVyL2NvbnRhaW5lci1taW4u anMiLCJyZXF1aXJlcyI6WyJkb20iLCJldmVudCJdLCJvcHRpb25hbCI6WyJkcmFn ZHJvcCIsImFuaW1hdGlvbiIsImNvbm5lY3Rpb24iXSwic3VwZXJzZWRlcyI6WyJj b250YWluZXJjb3JlIl0sInNraW5uYWJsZSI6dHJ1ZX0sImNvbnRhaW5lcmNvcmUi OnsidHlwZSI6ImpzIiwicGF0aCI6ImNvbnRhaW5lci9jb250YWluZXJfY29yZS1t aW4uanMiLCJyZXF1aXJlcyI6WyJkb20iLCJldmVudCJdLCJwa2ciOiJjb250YWlu ZXIifSwiY29va2llIjp7InR5cGUiOiJqcyIsInBhdGgiOiJjb29raWUvY29va2ll LW1pbi5qcyIsInJlcXVpcmVzIjpbInlhaG9vIl19LCJkYXRhc291cmNlIjp7InR5 cGUiOiJqcyIsInBhdGgiOiJkYXRhc291cmNlL2RhdGFzb3VyY2UtbWluLmpzIiwi cmVxdWlyZXMiOlsiZXZlbnQiXSwib3B0aW9uYWwiOlsiY29ubmVjdGlvbiJdfSwi ZGF0YXRhYmxlIjp7InR5cGUiOiJqcyIsInBhdGgiOiJkYXRhdGFibGUvZGF0YXRh YmxlLW1pbi5qcyIsInJlcXVpcmVzIjpbImVsZW1lbnQiLCJkYXRhc291cmNlIl0s Im9wdGlvbmFsIjpbImNhbGVuZGFyIiwiZHJhZ2Ryb3AiLCJwYWdpbmF0b3IiXSwi c2tpbm5hYmxlIjp0cnVlfSwiZG9tIjp7InR5cGUiOiJqcyIsInBhdGgiOiJkb20v ZG9tLW1pbi5qcyIsInJlcXVpcmVzIjpbInlhaG9vIl19LCJkcmFnZHJvcCI6eyJ0 eXBlIjoianMiLCJwYXRoIjoiZHJhZ2Ryb3AvZHJhZ2Ryb3AtbWluLmpzIiwicmVx dWlyZXMiOlsiZG9tIiwiZXZlbnQiXX0sImVkaXRvciI6eyJ0eXBlIjoianMiLCJw YXRoIjoiZWRpdG9yL2VkaXRvci1taW4uanMiLCJyZXF1aXJlcyI6WyJtZW51Iiwi ZWxlbWVudCIsImJ1dHRvbiJdLCJvcHRpb25hbCI6WyJhbmltYXRpb24iLCJkcmFn ZHJvcCJdLCJzdXBlcnNlZGVzIjpbInNpbXBsZWVkaXRvciJdLCJza2lubmFibGUi OnRydWV9LCJlbGVtZW50Ijp7InR5cGUiOiJqcyIsInBhdGgiOiJlbGVtZW50L2Vs ZW1lbnQtbWluLmpzIiwicmVxdWlyZXMiOlsiZG9tIiwiZXZlbnQiXX0sImV2ZW50 Ijp7InR5cGUiOiJqcyIsInBhdGgiOiJldmVudC9ldmVudC1taW4uanMiLCJyZXF1 aXJlcyI6WyJ5YWhvbyJdfSwiZm9udHMiOnsidHlwZSI6ImNzcyIsInBhdGgiOiJm b250cy9mb250cy1taW4uY3NzIn0sImdldCI6eyJ0eXBlIjoianMiLCJwYXRoIjoi Z2V0L2dldC1taW4uanMiLCJyZXF1aXJlcyI6WyJ5YWhvbyJdfSwiZ3JpZHMiOnsi dHlwZSI6ImNzcyIsInBhdGgiOiJncmlkcy9ncmlkcy1taW4uY3NzIiwicmVxdWly ZXMiOlsiZm9udHMiXSwib3B0aW9uYWwiOlsicmVzZXQiXX0sImhpc3RvcnkiOnsi dHlwZSI6ImpzIiwicGF0aCI6Imhpc3RvcnkvaGlzdG9yeS1taW4uanMiLCJyZXF1 aXJlcyI6WyJldmVudCJdfSwiaW1hZ2Vjcm9wcGVyIjp7InR5cGUiOiJqcyIsInBh dGgiOiJpbWFnZWNyb3BwZXIvaW1hZ2Vjcm9wcGVyLW1pbi5qcyIsInJlcXVpcmVz IjpbImRvbSIsImV2ZW50IiwiZHJhZ2Ryb3AiLCJlbGVtZW50IiwicmVzaXplIl0s InNraW5uYWJsZSI6dHJ1ZX0sImltYWdlbG9hZGVyIjp7InR5cGUiOiJqcyIsInBh dGgiOiJpbWFnZWxvYWRlci9pbWFnZWxvYWRlci1taW4uanMiLCJyZXF1aXJlcyI6 WyJldmVudCIsImRvbSJdfSwianNvbiI6eyJ0eXBlIjoianMiLCJwYXRoIjoianNv bi9qc29uLW1pbi5qcyIsInJlcXVpcmVzIjpbInlhaG9vIl19LCJsYXlvdXQiOnsi dHlwZSI6ImpzIiwicGF0aCI6ImxheW91dC9sYXlvdXQtbWluLmpzIiwicmVxdWly ZXMiOlsiZG9tIiwiZXZlbnQiLCJlbGVtZW50Il0sIm9wdGlvbmFsIjpbImFuaW1h dGlvbiIsImRyYWdkcm9wIiwicmVzaXplIiwic2VsZWN0b3IiXSwic2tpbm5hYmxl Ijp0cnVlfSwibG9nZ2VyIjp7InR5cGUiOiJqcyIsInBhdGgiOiJsb2dnZXIvbG9n Z2VyLW1pbi5qcyIsInJlcXVpcmVzIjpbImV2ZW50IiwiZG9tIl0sIm9wdGlvbmFs IjpbImRyYWdkcm9wIl0sInNraW5uYWJsZSI6dHJ1ZX0sIm1lbnUiOnsidHlwZSI6 ImpzIiwicGF0aCI6Im1lbnUvbWVudS1taW4uanMiLCJyZXF1aXJlcyI6WyJjb250 YWluZXJjb3JlIl0sInNraW5uYWJsZSI6dHJ1ZX0sInBhZ2luYXRvciI6eyJ0eXBl IjoianMiLCJwYXRoIjoicGFnaW5hdG9yL3BhZ2luYXRvci1taW4uanMiLCJyZXF1 aXJlcyI6WyJlbGVtZW50Il0sInNraW5uYWJsZSI6dHJ1ZX0sInByb2ZpbGVyIjp7 InR5cGUiOiJqcyIsInBhdGgiOiJwcm9maWxlci9wcm9maWxlci1taW4uanMiLCJy ZXF1aXJlcyI6WyJ5YWhvbyJdfSwicHJvZmlsZXJ2aWV3ZXIiOnsidHlwZSI6Impz IiwicGF0aCI6InByb2ZpbGVydmlld2VyL3Byb2ZpbGVydmlld2VyLW1pbi5qcyIs InJlcXVpcmVzIjpbInByb2ZpbGVyIiwieXVpbG9hZGVyIiwiZWxlbWVudCJdLCJz a2lubmFibGUiOnRydWV9LCJyZXNldCI6eyJ0eXBlIjoiY3NzIiwicGF0aCI6InJl c2V0L3Jlc2V0LW1pbi5jc3MifSwicmVzZXQtZm9udHMtZ3JpZHMiOnsidHlwZSI6 ImNzcyIsInBhdGgiOiJyZXNldC1mb250cy1ncmlkcy9yZXNldC1mb250cy1ncmlk cy5jc3MiLCJzdXBlcnNlZGVzIjpbInJlc2V0IiwiZm9udHMiLCJncmlkcyIsInJl c2V0LWZvbnRzIl0sInJvbGx1cCI6NH0sInJlc2V0LWZvbnRzIjp7InR5cGUiOiJj c3MiLCJwYXRoIjoicmVzZXQtZm9udHMvcmVzZXQtZm9udHMuY3NzIiwic3VwZXJz ZWRlcyI6WyJyZXNldCIsImZvbnRzIl0sInJvbGx1cCI6Mn0sInJlc2l6ZSI6eyJ0 eXBlIjoianMiLCJwYXRoIjoicmVzaXplL3Jlc2l6ZS1taW4uanMiLCJyZXF1aXJl cyI6WyJkb20iLCJldmVudCIsImRyYWdkcm9wIiwiZWxlbWVudCJdLCJvcHRpb25h bCI6WyJhbmltYXRpb24iXSwic2tpbm5hYmxlIjp0cnVlfSwic2VsZWN0b3IiOnsi dHlwZSI6ImpzIiwicGF0aCI6InNlbGVjdG9yL3NlbGVjdG9yLW1pbi5qcyIsInJl cXVpcmVzIjpbInlhaG9vIiwiZG9tIl19LCJzaW1wbGVlZGl0b3IiOnsidHlwZSI6 ImpzIiwicGF0aCI6ImVkaXRvci9zaW1wbGVlZGl0b3ItbWluLmpzIiwicmVxdWly ZXMiOlsiZWxlbWVudCJdLCJvcHRpb25hbCI6WyJjb250YWluZXJjb3JlIiwibWVu dSIsImJ1dHRvbiIsImFuaW1hdGlvbiIsImRyYWdkcm9wIl0sInNraW5uYWJsZSI6 dHJ1ZSwicGtnIjoiZWRpdG9yIn0sInNsaWRlciI6eyJ0eXBlIjoianMiLCJwYXRo Ijoic2xpZGVyL3NsaWRlci1taW4uanMiLCJyZXF1aXJlcyI6WyJkcmFnZHJvcCJd LCJvcHRpb25hbCI6WyJhbmltYXRpb24iXSwic2tpbm5hYmxlIjp0cnVlfSwic3R5 bGVzaGVldCI6eyJ0eXBlIjoianMiLCJwYXRoIjoic3R5bGVzaGVldC9zdHlsZXNo ZWV0LW1pbi5qcyIsInJlcXVpcmVzIjpbInlhaG9vIl19LCJ0YWJ2aWV3Ijp7InR5 cGUiOiJqcyIsInBhdGgiOiJ0YWJ2aWV3L3RhYnZpZXctbWluLmpzIiwicmVxdWly ZXMiOlsiZWxlbWVudCJdLCJvcHRpb25hbCI6WyJjb25uZWN0aW9uIl0sInNraW5u YWJsZSI6dHJ1ZX0sInRyZWV2aWV3Ijp7InR5cGUiOiJqcyIsInBhdGgiOiJ0cmVl dmlldy90cmVldmlldy1taW4uanMiLCJyZXF1aXJlcyI6WyJldmVudCIsImRvbSJd LCJvcHRpb25hbCI6WyJqc29uIl0sInNraW5uYWJsZSI6dHJ1ZX0sInVwbG9hZGVy Ijp7InR5cGUiOiJqcyIsInBhdGgiOiJ1cGxvYWRlci91cGxvYWRlci5qcyIsInJl cXVpcmVzIjpbImVsZW1lbnQiXX0sInV0aWxpdGllcyI6eyJ0eXBlIjoianMiLCJw YXRoIjoidXRpbGl0aWVzL3V0aWxpdGllcy5qcyIsInN1cGVyc2VkZXMiOlsieWFo b28iLCJldmVudCIsImRyYWdkcm9wIiwiYW5pbWF0aW9uIiwiZG9tIiwiY29ubmVj dGlvbiIsImVsZW1lbnQiLCJ5YWhvby1kb20tZXZlbnQiLCJnZXQiLCJ5dWlsb2Fk ZXIiLCJ5dWlsb2FkZXItZG9tLWV2ZW50Il0sInJvbGx1cCI6OH0sInlhaG9vIjp7 InR5cGUiOiJqcyIsInBhdGgiOiJ5YWhvby95YWhvby1taW4uanMifSwieWFob28t ZG9tLWV2ZW50Ijp7InR5cGUiOiJqcyIsInBhdGgiOiJ5YWhvby1kb20tZXZlbnQv eWFob28tZG9tLWV2ZW50LmpzIiwic3VwZXJzZWRlcyI6WyJ5YWhvbyIsImV2ZW50 IiwiZG9tIl0sInJvbGx1cCI6M30sInl1aWxvYWRlciI6eyJ0eXBlIjoianMiLCJw YXRoIjoieXVpbG9hZGVyL3l1aWxvYWRlci1taW4uanMiLCJzdXBlcnNlZGVzIjpb InlhaG9vIiwiZ2V0Il19LCJ5dWlsb2FkZXItZG9tLWV2ZW50Ijp7InR5cGUiOiJq cyIsInBhdGgiOiJ5dWlsb2FkZXItZG9tLWV2ZW50L3l1aWxvYWRlci1kb20tZXZl bnQuanMiLCJzdXBlcnNlZGVzIjpbInlhaG9vIiwiZG9tIiwiZXZlbnQiLCJnZXQi LCJ5dWlsb2FkZXIiLCJ5YWhvby1kb20tZXZlbnQiXSwicm9sbHVwIjo1fSwieXVp dGVzdCI6eyJ0eXBlIjoianMiLCJwYXRoIjoieXVpdGVzdC95dWl0ZXN0LW1pbi5q cyIsInJlcXVpcmVzIjpbImxvZ2dlciJdLCJza2lubmFibGUiOnRydWV9fX0sT2Jq ZWN0VXRpbDp7YXBwZW5kQXJyYXk6ZnVuY3Rpb24obyxhKXtpZihhKXtmb3IodmFy IGk9MDsKaTxhLmxlbmd0aDtpPWkrMSl7b1thW2ldXT10cnVlO319fSxrZXlzOmZ1 bmN0aW9uKG8sb3JkZXJlZCl7dmFyIGE9W10saTtmb3IoaSBpbiBvKXtpZihsYW5n Lmhhc093blByb3BlcnR5KG8saSkpe2EucHVzaChpKTt9fXJldHVybiBhO319LEFy cmF5VXRpbDp7YXBwZW5kQXJyYXk6ZnVuY3Rpb24oYTEsYTIpe0FycmF5LnByb3Rv dHlwZS5wdXNoLmFwcGx5KGExLGEyKTt9LGluZGV4T2Y6ZnVuY3Rpb24oYSx2YWwp e2Zvcih2YXIgaT0wO2k8YS5sZW5ndGg7aT1pKzEpe2lmKGFbaV09PT12YWwpe3Jl dHVybiBpO319cmV0dXJuIC0xO30sdG9PYmplY3Q6ZnVuY3Rpb24oYSl7dmFyIG89 e307Zm9yKHZhciBpPTA7aTxhLmxlbmd0aDtpPWkrMSl7b1thW2ldXT10cnVlO31y ZXR1cm4gbzt9LHVuaXE6ZnVuY3Rpb24oYSl7cmV0dXJuIFlVSS5PYmplY3RVdGls LmtleXMoWVVJLkFycmF5VXRpbC50b09iamVjdChhKSk7fX19O1lBSE9PLnV0aWwu WVVJTG9hZGVyPWZ1bmN0aW9uKG8pe3RoaXMuX2ludGVybmFsQ2FsbGJhY2s9bnVs bDt0aGlzLl91c2VZYWhvb0xpc3RlbmVyPWZhbHNlO3RoaXMub25TdWNjZXNzPW51 bGw7dGhpcy5vbkZhaWx1cmU9WS5sb2c7dGhpcy5vblByb2dyZXNzPW51bGw7dGhp cy5vblRpbWVvdXQ9bnVsbDt0aGlzLnNjb3BlPXRoaXM7dGhpcy5kYXRhPW51bGw7 dGhpcy5pbnNlcnRCZWZvcmU9bnVsbDt0aGlzLmNoYXJzZXQ9bnVsbDt0aGlzLnZh ck5hbWU9bnVsbDt0aGlzLmJhc2U9WVVJLmluZm8uYmFzZTt0aGlzLmNvbWJvQmFz ZT1ZVUkuaW5mby5jb21ib0Jhc2U7dGhpcy5jb21iaW5lPWZhbHNlO3RoaXMucm9v dD1ZVUkuaW5mby5yb290O3RoaXMudGltZW91dD0wO3RoaXMuaWdub3JlPW51bGw7 dGhpcy5mb3JjZT1udWxsO3RoaXMuYWxsb3dSb2xsdXA9dHJ1ZTt0aGlzLmZpbHRl cj1udWxsO3RoaXMucmVxdWlyZWQ9e307dGhpcy5tb2R1bGVJbmZvPWxhbmcubWVy Z2UoWVVJLmluZm8ubW9kdWxlSW5mbyk7dGhpcy5yb2xsdXBzPW51bGw7dGhpcy5s b2FkT3B0aW9uYWw9ZmFsc2U7dGhpcy5zb3J0ZWQ9W107dGhpcy5sb2FkZWQ9e307 dGhpcy5kaXJ0eT10cnVlO3RoaXMuaW5zZXJ0ZWQ9e307dmFyIHNlbGY9dGhpcztl bnYubGlzdGVuZXJzLnB1c2goZnVuY3Rpb24obSl7aWYoc2VsZi5fdXNlWWFob29M aXN0ZW5lcil7c2VsZi5sb2FkTmV4dChtLm5hbWUpO319KTt0aGlzLnNraW49bGFu Zy5tZXJnZShZVUkuaW5mby5za2luKTt0aGlzLl9jb25maWcobyk7fTtZLnV0aWwu WVVJTG9hZGVyLnByb3RvdHlwZT17RklMVEVSUzp7UkFXOnsic2VhcmNoRXhwIjoi LW1pblxcLmpzIiwicmVwbGFjZVN0ciI6Ii5qcyJ9LERFQlVHOnsic2VhcmNoRXhw IjoiLW1pblxcLmpzIiwicmVwbGFjZVN0ciI6Ii1kZWJ1Zy5qcyJ9fSxTS0lOX1BS RUZJWDoic2tpbi0iLF9jb25maWc6ZnVuY3Rpb24obyl7aWYobyl7Zm9yKHZhciBp IGluIG8pe2lmKGxhbmcuaGFzT3duUHJvcGVydHkobyxpKSl7aWYoaT09InJlcXVp cmUiKXt0aGlzLnJlcXVpcmUob1tpXSk7fWVsc2V7dGhpc1tpXT1vW2ldO319fX12 YXIgZj10aGlzLmZpbHRlcjtpZihsYW5nLmlzU3RyaW5nKGYpKXtmPWYudG9VcHBl ckNhc2UoKTtpZihmPT09IkRFQlVHIil7dGhpcy5yZXF1aXJlKCJsb2dnZXIiKTt9 aWYoIVkud2lkZ2V0LkxvZ1dyaXRlcil7WS53aWRnZXQuTG9nV3JpdGVyPWZ1bmN0 aW9uKCl7cmV0dXJuIFk7fTt9dGhpcy5maWx0ZXI9dGhpcy5GSUxURVJTW2ZdO319 LGFkZE1vZHVsZTpmdW5jdGlvbihvKXtpZighb3x8IW8ubmFtZXx8IW8udHlwZXx8 KCFvLnBhdGgmJiFvLmZ1bGxwYXRoKSl7cmV0dXJuIGZhbHNlO31vLmV4dD0oImV4 dCIgaW4gbyk/by5leHQ6dHJ1ZTtvLnJlcXVpcmVzPW8ucmVxdWlyZXN8fFtdO3Ro aXMubW9kdWxlSW5mb1tvLm5hbWVdPW87dGhpcy5kaXJ0eT10cnVlO3JldHVybiB0 cnVlO30scmVxdWlyZTpmdW5jdGlvbih3aGF0KXt2YXIgYT0odHlwZW9mIHdoYXQ9 PT0ic3RyaW5nIik/YXJndW1lbnRzOndoYXQ7dGhpcy5kaXJ0eT10cnVlO1lVSS5P YmplY3RVdGlsLmFwcGVuZEFycmF5KHRoaXMucmVxdWlyZWQsYSk7fSxfYWRkU2tp bjpmdW5jdGlvbihza2luLG1vZCl7dmFyIG5hbWU9dGhpcy5mb3JtYXRTa2luKHNr aW4pLGluZm89dGhpcy5tb2R1bGVJbmZvLHNpbmY9dGhpcy5za2luLGV4dD1pbmZv W21vZF0mJmluZm9bbW9kXS5leHQ7aWYoIWluZm9bbmFtZV0pe3RoaXMuYWRkTW9k dWxlKHsibmFtZSI6bmFtZSwidHlwZSI6ImNzcyIsInBhdGgiOnNpbmYuYmFzZStz a2luKyIvIitzaW5mLnBhdGgsImFmdGVyIjpzaW5mLmFmdGVyLCJyb2xsdXAiOnNp bmYucm9sbHVwLCJleHQiOmV4dH0pO31pZihtb2Qpe25hbWU9dGhpcy5mb3JtYXRT a2luKHNraW4sbW9kKTtpZighaW5mb1tuYW1lXSl7dmFyIG1kZWY9aW5mb1ttb2Rd LHBrZz1tZGVmLnBrZ3x8bW9kO3RoaXMuYWRkTW9kdWxlKHsibmFtZSI6bmFtZSwi dHlwZSI6ImNzcyIsImFmdGVyIjpzaW5mLmFmdGVyLCJwYXRoIjpwa2crIi8iK3Np bmYuYmFzZStza2luKyIvIittb2QrIi5jc3MiLCJleHQiOmV4dH0pO319cmV0dXJu IG5hbWU7fSxnZXRSZXF1aXJlczpmdW5jdGlvbihtb2Qpe2lmKCFtb2Qpe3JldHVy bltdO31pZighdGhpcy5kaXJ0eSYmbW9kLmV4cGFuZGVkKXtyZXR1cm4gbW9kLmV4 cGFuZGVkO31tb2QucmVxdWlyZXM9bW9kLnJlcXVpcmVzfHxbXTt2YXIgaSxkPVtd LHI9bW9kLnJlcXVpcmVzLG89bW9kLm9wdGlvbmFsLGluZm89dGhpcy5tb2R1bGVJ bmZvLG07Zm9yKGk9MDtpPHIubGVuZ3RoO2k9aSsxKXtkLnB1c2gocltpXSk7bT1p bmZvW3JbaV1dO1lVSS5BcnJheVV0aWwuYXBwZW5kQXJyYXkoZCx0aGlzLmdldFJl cXVpcmVzKG0pKTt9aWYobyYmdGhpcy5sb2FkT3B0aW9uYWwpe2ZvcihpPTA7aTxv Lmxlbmd0aDtpPWkrMSl7ZC5wdXNoKG9baV0pO1lVSS5BcnJheVV0aWwuYXBwZW5k QXJyYXkoZCx0aGlzLmdldFJlcXVpcmVzKGluZm9bb1tpXV0pKTt9fW1vZC5leHBh bmRlZD1ZVUkuQXJyYXlVdGlsLnVuaXEoZCk7cmV0dXJuIG1vZC5leHBhbmRlZDt9 LGdldFByb3ZpZGVzOmZ1bmN0aW9uKG5hbWUsbm90TWUpe3ZhciBhZGRNZT0hKG5v dE1lKSxja2V5PShhZGRNZSk/UFJPVjpTVVBFUixtPXRoaXMubW9kdWxlSW5mb1tu YW1lXSxvPXt9O2lmKCFtKXtyZXR1cm4gbzt9aWYobVtja2V5XSl7cmV0dXJuIG1b Y2tleV07fXZhciBzPW0uc3VwZXJzZWRlcyxkb25lPXt9LG1lPXRoaXM7dmFyIGFk ZD1mdW5jdGlvbihtbSl7aWYoIWRvbmVbbW1dKXtkb25lW21tXT10cnVlO2xhbmcu YXVnbWVudE9iamVjdChvLG1lLmdldFByb3ZpZGVzKG1tKSk7fX07aWYocyl7Zm9y KHZhciBpPTA7aTxzLmxlbmd0aDtpPWkrMSl7YWRkKHNbaV0pO319bVtTVVBFUl09 bzttW1BST1ZdPWxhbmcubWVyZ2Uobyk7bVtQUk9WXVtuYW1lXT10cnVlO3JldHVy biBtW2NrZXldO30sY2FsY3VsYXRlOmZ1bmN0aW9uKG8pe2lmKG98fHRoaXMuZGly dHkpe3RoaXMuX2NvbmZpZyhvKTt0aGlzLl9zZXR1cCgpO3RoaXMuX2V4cGxvZGUo KTtpZih0aGlzLmFsbG93Um9sbHVwKXt0aGlzLl9yb2xsdXAoKTt9dGhpcy5fcmVk dWNlKCk7dGhpcy5fc29ydCgpO3RoaXMuZGlydHk9ZmFsc2U7fX0sX3NldHVwOmZ1 bmN0aW9uKCl7dmFyIGluZm89dGhpcy5tb2R1bGVJbmZvLG5hbWUsaSxqO2Zvcihu YW1lIGluIGluZm8pe2lmKGxhbmcuaGFzT3duUHJvcGVydHkoaW5mbyxuYW1lKSl7 dmFyIG09aW5mb1tuYW1lXTtpZihtJiZtLnNraW5uYWJsZSl7dmFyIG89dGhpcy5z a2luLm92ZXJyaWRlcyxzbW9kO2lmKG8mJm9bbmFtZV0pe2ZvcihpPTA7aTxvW25h bWVdLmxlbmd0aDtpPWkrMSl7c21vZD10aGlzLl9hZGRTa2luKG9bbmFtZV1baV0s bmFtZSk7fX1lbHNle3Ntb2Q9dGhpcy5fYWRkU2tpbih0aGlzLnNraW4uZGVmYXVs dFNraW4sbmFtZSk7fW0ucmVxdWlyZXMucHVzaChzbW9kKTt9fX12YXIgbD1sYW5n Lm1lcmdlKHRoaXMuaW5zZXJ0ZWQpO2lmKCF0aGlzLl9zYW5kYm94KXtsPWxhbmcu bWVyZ2UobCxlbnYubW9kdWxlcyk7fWlmKHRoaXMuaWdub3JlKXtZVUkuT2JqZWN0 VXRpbC5hcHBlbmRBcnJheShsLHRoaXMuaWdub3JlKTt9aWYodGhpcy5mb3JjZSl7 Zm9yKGk9MDtpPHRoaXMuZm9yY2UubGVuZ3RoO2k9aSsxKXtpZih0aGlzLmZvcmNl W2ldIGluIGwpe2RlbGV0ZSBsW3RoaXMuZm9yY2VbaV1dO319fWZvcihqIGluIGwp e2lmKGxhbmcuaGFzT3duUHJvcGVydHkobCxqKSl7bGFuZy5hdWdtZW50T2JqZWN0 KGwsdGhpcy5nZXRQcm92aWRlcyhqKSk7fX10aGlzLmxvYWRlZD1sO30sX2V4cGxv ZGU6ZnVuY3Rpb24oKXt2YXIgcj10aGlzLnJlcXVpcmVkLGksbW9kO2ZvcihpIGlu IHIpe2lmKGxhbmcuaGFzT3duUHJvcGVydHkocixpKSl7bW9kPXRoaXMubW9kdWxl SW5mb1tpXTtpZihtb2Qpe3ZhciByZXE9dGhpcy5nZXRSZXF1aXJlcyhtb2QpO2lm KHJlcSl7WVVJLk9iamVjdFV0aWwuYXBwZW5kQXJyYXkocixyZXEpO319fX19LF9z a2luOmZ1bmN0aW9uKCl7fSxmb3JtYXRTa2luOmZ1bmN0aW9uKHNraW4sbW9kKXt2 YXIgcz10aGlzLlNLSU5fUFJFRklYK3NraW47aWYobW9kKXtzPXMrIi0iK21vZDt9 cmV0dXJuIHM7fSxwYXJzZVNraW46ZnVuY3Rpb24obW9kKXtpZihtb2QuaW5kZXhP Zih0aGlzLlNLSU5fUFJFRklYKT09PTApe3ZhciBhPW1vZC5zcGxpdCgiLSIpO3Jl dHVybntza2luOmFbMV0sbW9kdWxlOmFbMl19O31yZXR1cm4gbnVsbDt9LF9yb2xs dXA6ZnVuY3Rpb24oKXt2YXIgaSxqLG0scyxyb2xsdXBzPXt9LHI9dGhpcy5yZXF1 aXJlZCxyb2xsLGluZm89dGhpcy5tb2R1bGVJbmZvO2lmKHRoaXMuZGlydHl8fCF0 aGlzLnJvbGx1cHMpe2ZvcihpIGluIGluZm8pe2lmKGxhbmcuaGFzT3duUHJvcGVy dHkoaW5mbyxpKSl7bT1pbmZvW2ldO2lmKG0mJm0ucm9sbHVwKXtyb2xsdXBzW2ld PW07fX19dGhpcy5yb2xsdXBzPXJvbGx1cHM7fWZvcig7Oyl7dmFyIHJvbGxlZD1m YWxzZTtmb3IoaSBpbiByb2xsdXBzKXtpZighcltpXSYmIXRoaXMubG9hZGVkW2ld KXttPWluZm9baV07cz1tLnN1cGVyc2VkZXM7cm9sbD1mYWxzZTtpZighbS5yb2xs dXApe2NvbnRpbnVlO312YXIgc2tpbj0obS5leHQpP2ZhbHNlOnRoaXMucGFyc2VT a2luKGkpLGM9MDtpZihza2luKXtmb3IoaiBpbiByKXtpZihsYW5nLmhhc093blBy b3BlcnR5KHIsaikpe2lmKGkhPT1qJiZ0aGlzLnBhcnNlU2tpbihqKSl7YysrO3Jv bGw9KGM+PW0ucm9sbHVwKTtpZihyb2xsKXticmVhazt9fX19fWVsc2V7Zm9yKGo9 MDtqPHMubGVuZ3RoO2o9aisxKXtpZih0aGlzLmxvYWRlZFtzW2pdXSYmKCFZVUku ZHVwc0FsbG93ZWRbc1tqXV0pKXtyb2xsPWZhbHNlO2JyZWFrO31lbHNle2lmKHJb c1tqXV0pe2MrKztyb2xsPShjPj1tLnJvbGx1cCk7aWYocm9sbCl7YnJlYWs7fX19 fX1pZihyb2xsKXtyW2ldPXRydWU7cm9sbGVkPXRydWU7dGhpcy5nZXRSZXF1aXJl cyhtKTt9fX1pZighcm9sbGVkKXticmVhazt9fX0sX3JlZHVjZTpmdW5jdGlvbigp e3ZhciBpLGoscyxtLHI9dGhpcy5yZXF1aXJlZDtmb3IoaSBpbiByKXtpZihpIGlu IHRoaXMubG9hZGVkKXtkZWxldGUgcltpXTt9ZWxzZXt2YXIgc2tpbkRlZj10aGlz LnBhcnNlU2tpbihpKTtpZihza2luRGVmKXtpZighc2tpbkRlZi5tb2R1bGUpe3Zh ciBza2luX3ByZT10aGlzLlNLSU5fUFJFRklYK3NraW5EZWYuc2tpbjtmb3IoaiBp biByKXtpZihsYW5nLmhhc093blByb3BlcnR5KHIsaikpe209dGhpcy5tb2R1bGVJ bmZvW2pdO3ZhciBleHQ9bSYmbS5leHQ7aWYoIWV4dCYmaiE9PWkmJmouaW5kZXhP Zihza2luX3ByZSk+LTEpe2RlbGV0ZSByW2pdO319fX19ZWxzZXttPXRoaXMubW9k dWxlSW5mb1tpXTtzPW0mJm0uc3VwZXJzZWRlcztpZihzKXtmb3Ioaj0wO2o8cy5s ZW5ndGg7aj1qKzEpe2lmKHNbal0gaW4gcil7ZGVsZXRlIHJbc1tqXV07fX19fX19 fSxfb25GYWlsdXJlOmZ1bmN0aW9uKG1zZyl7WUFIT08ubG9nKCJGYWlsdXJlIiwi aW5mbyIsImxvYWRlciIpO3ZhciBmPXRoaXMub25GYWlsdXJlO2lmKGYpe2YuY2Fs bCh0aGlzLnNjb3BlLHttc2c6ImZhaWx1cmU6ICIrbXNnLGRhdGE6dGhpcy5kYXRh LHN1Y2Nlc3M6ZmFsc2V9KTsKfX0sX29uVGltZW91dDpmdW5jdGlvbigpe1lBSE9P LmxvZygiVGltZW91dCIsImluZm8iLCJsb2FkZXIiKTt2YXIgZj10aGlzLm9uVGlt ZW91dDtpZihmKXtmLmNhbGwodGhpcy5zY29wZSx7bXNnOiJ0aW1lb3V0IixkYXRh OnRoaXMuZGF0YSxzdWNjZXNzOmZhbHNlfSk7fX0sX3NvcnQ6ZnVuY3Rpb24oKXt2 YXIgcz1bXSxpbmZvPXRoaXMubW9kdWxlSW5mbyxsb2FkZWQ9dGhpcy5sb2FkZWQs Y2hlY2tPcHRpb25hbD0hdGhpcy5sb2FkT3B0aW9uYWwsbWU9dGhpczt2YXIgcmVx dWlyZXM9ZnVuY3Rpb24oYWEsYmIpe3ZhciBtbT1pbmZvW2FhXTtpZihsb2FkZWRb YmJdfHwhbW0pe3JldHVybiBmYWxzZTt9dmFyIGlpLHJyPW1tLmV4cGFuZGVkLGFm dGVyPW1tLmFmdGVyLG90aGVyPWluZm9bYmJdLG9wdGlvbmFsPW1tLm9wdGlvbmFs O2lmKHJyJiZZVUkuQXJyYXlVdGlsLmluZGV4T2YocnIsYmIpPi0xKXtyZXR1cm4g dHJ1ZTt9aWYoYWZ0ZXImJllVSS5BcnJheVV0aWwuaW5kZXhPZihhZnRlcixiYik+ LTEpe3JldHVybiB0cnVlO31pZihjaGVja09wdGlvbmFsJiZvcHRpb25hbCYmWVVJ LkFycmF5VXRpbC5pbmRleE9mKG9wdGlvbmFsLGJiKT4tMSl7cmV0dXJuIHRydWU7 fXZhciBzcz1pbmZvW2JiXSYmaW5mb1tiYl0uc3VwZXJzZWRlcztpZihzcyl7Zm9y KGlpPTA7aWk8c3MubGVuZ3RoO2lpPWlpKzEpe2lmKHJlcXVpcmVzKGFhLHNzW2lp XSkpe3JldHVybiB0cnVlO319fWlmKG1tLmV4dCYmbW0udHlwZT09ImNzcyImJiFv dGhlci5leHQmJm90aGVyLnR5cGU9PSJjc3MiKXtyZXR1cm4gdHJ1ZTt9cmV0dXJu IGZhbHNlO307Zm9yKHZhciBpIGluIHRoaXMucmVxdWlyZWQpe2lmKGxhbmcuaGFz T3duUHJvcGVydHkodGhpcy5yZXF1aXJlZCxpKSl7cy5wdXNoKGkpO319dmFyIHA9 MDtmb3IoOzspe3ZhciBsPXMubGVuZ3RoLGEsYixqLGssbW92ZWQ9ZmFsc2U7Zm9y KGo9cDtqPGw7aj1qKzEpe2E9c1tqXTtmb3Ioaz1qKzE7azxsO2s9aysxKXtpZihy ZXF1aXJlcyhhLHNba10pKXtiPXMuc3BsaWNlKGssMSk7cy5zcGxpY2UoaiwwLGJb MF0pO21vdmVkPXRydWU7YnJlYWs7fX1pZihtb3ZlZCl7YnJlYWs7fWVsc2V7cD1w KzE7fX1pZighbW92ZWQpe2JyZWFrO319dGhpcy5zb3J0ZWQ9czt9LHRvU3RyaW5n OmZ1bmN0aW9uKCl7dmFyIG89e3R5cGU6IllVSUxvYWRlciIsYmFzZTp0aGlzLmJh c2UsZmlsdGVyOnRoaXMuZmlsdGVyLHJlcXVpcmVkOnRoaXMucmVxdWlyZWQsbG9h ZGVkOnRoaXMubG9hZGVkLGluc2VydGVkOnRoaXMuaW5zZXJ0ZWR9O2xhbmcuZHVt cChvLDEpO30sX2NvbWJpbmU6ZnVuY3Rpb24oKXt0aGlzLl9jb21iaW5pbmc9W107 dmFyIHNlbGY9dGhpcyxzPXRoaXMuc29ydGVkLGxlbj1zLmxlbmd0aCxqcz10aGlz LmNvbWJvQmFzZSxjc3M9dGhpcy5jb21ib0Jhc2UsdGFyZ2V0LHN0YXJ0TGVuPWpz Lmxlbmd0aCxpLG0sdHlwZT10aGlzLmxvYWRUeXBlO1lBSE9PLmxvZygidHlwZSAi K3R5cGUpO2ZvcihpPTA7aTxsZW47aT1pKzEpe209dGhpcy5tb2R1bGVJbmZvW3Nb aV1dO2lmKG0mJiFtLmV4dCYmKCF0eXBlfHx0eXBlPT09bS50eXBlKSl7dGFyZ2V0 PXRoaXMucm9vdCttLnBhdGg7dGFyZ2V0Kz0iJiI7aWYobS50eXBlPT0ianMiKXtq cys9dGFyZ2V0O31lbHNle2Nzcys9dGFyZ2V0O310aGlzLl9jb21iaW5pbmcucHVz aChzW2ldKTt9fWlmKHRoaXMuX2NvbWJpbmluZy5sZW5ndGgpe1lBSE9PLmxvZygi QXR0ZW1wdGluZyB0byBjb21iaW5lOiAiK3RoaXMuX2NvbWJpbmluZywiaW5mbyIs ImxvYWRlciIpO3ZhciBjYWxsYmFjaz1mdW5jdGlvbihvKXt2YXIgYz10aGlzLl9j b21iaW5pbmcsbGVuPWMubGVuZ3RoLGksbTtmb3IoaT0wO2k8bGVuO2k9aSsxKXt0 aGlzLmluc2VydGVkW2NbaV1dPXRydWU7fXRoaXMubG9hZE5leHQoby5kYXRhKTt9 LGxvYWRTY3JpcHQ9ZnVuY3Rpb24oKXtpZihqcy5sZW5ndGg+c3RhcnRMZW4pe1lB SE9PLnV0aWwuR2V0LnNjcmlwdChzZWxmLl9maWx0ZXIoanMpLHtkYXRhOnNlbGYu X2xvYWRpbmcsb25TdWNjZXNzOmNhbGxiYWNrLG9uRmFpbHVyZTpzZWxmLl9vbkZh aWx1cmUsb25UaW1lb3V0OnNlbGYuX29uVGltZW91dCxpbnNlcnRCZWZvcmU6c2Vs Zi5pbnNlcnRCZWZvcmUsY2hhcnNldDpzZWxmLmNoYXJzZXQsdGltZW91dDpzZWxm LnRpbWVvdXQsc2NvcGU6c2VsZn0pO319O2lmKGNzcy5sZW5ndGg+c3RhcnRMZW4p e1lBSE9PLnV0aWwuR2V0LmNzcyh0aGlzLl9maWx0ZXIoY3NzKSx7ZGF0YTp0aGlz Ll9sb2FkaW5nLG9uU3VjY2Vzczpsb2FkU2NyaXB0LG9uRmFpbHVyZTp0aGlzLl9v bkZhaWx1cmUsb25UaW1lb3V0OnRoaXMuX29uVGltZW91dCxpbnNlcnRCZWZvcmU6 dGhpcy5pbnNlcnRCZWZvcmUsY2hhcnNldDp0aGlzLmNoYXJzZXQsdGltZW91dDp0 aGlzLnRpbWVvdXQsc2NvcGU6c2VsZn0pO31lbHNle2xvYWRTY3JpcHQoKTt9cmV0 dXJuO31lbHNle3RoaXMubG9hZE5leHQodGhpcy5fbG9hZGluZyk7fX0saW5zZXJ0 OmZ1bmN0aW9uKG8sdHlwZSl7dGhpcy5jYWxjdWxhdGUobyk7dGhpcy5fbG9hZGlu Zz10cnVlO3RoaXMubG9hZFR5cGU9dHlwZTtpZih0aGlzLmNvbWJpbmUpe3JldHVy biB0aGlzLl9jb21iaW5lKCk7fWlmKCF0eXBlKXt2YXIgc2VsZj10aGlzO3RoaXMu X2ludGVybmFsQ2FsbGJhY2s9ZnVuY3Rpb24oKXtzZWxmLl9pbnRlcm5hbENhbGxi YWNrPW51bGw7c2VsZi5pbnNlcnQobnVsbCwianMiKTt9O3RoaXMuaW5zZXJ0KG51 bGwsImNzcyIpO3JldHVybjt9dGhpcy5sb2FkTmV4dCgpO30sc2FuZGJveDpmdW5j dGlvbihvLHR5cGUpe3RoaXMuX2NvbmZpZyhvKTtpZighdGhpcy5vblN1Y2Nlc3Mp e3Rocm93IG5ldyBFcnJvcigiWW91IG11c3Qgc3VwcGx5IGFuIG9uU3VjY2VzcyBo YW5kbGVyIGZvciB5b3VyIHNhbmRib3giKTt9dGhpcy5fc2FuZGJveD10cnVlO3Zh ciBzZWxmPXRoaXM7aWYoIXR5cGV8fHR5cGUhPT0ianMiKXt0aGlzLl9pbnRlcm5h bENhbGxiYWNrPWZ1bmN0aW9uKCl7c2VsZi5faW50ZXJuYWxDYWxsYmFjaz1udWxs O3NlbGYuc2FuZGJveChudWxsLCJqcyIpO307dGhpcy5pbnNlcnQobnVsbCwiY3Nz Iik7cmV0dXJuO31pZighdXRpbC5Db25uZWN0KXt2YXIgbGQ9bmV3IFlBSE9PLnV0 aWwuWVVJTG9hZGVyKCk7bGQuaW5zZXJ0KHtiYXNlOnRoaXMuYmFzZSxmaWx0ZXI6 dGhpcy5maWx0ZXIscmVxdWlyZToiY29ubmVjdGlvbiIsaW5zZXJ0QmVmb3JlOnRo aXMuaW5zZXJ0QmVmb3JlLGNoYXJzZXQ6dGhpcy5jaGFyc2V0LG9uU3VjY2Vzczpm dW5jdGlvbigpe3RoaXMuc2FuZGJveChudWxsLCJqcyIpO30sc2NvcGU6dGhpc30s ImpzIik7cmV0dXJuO310aGlzLl9zY3JpcHRUZXh0PVtdO3RoaXMuX2xvYWRDb3Vu dD0wO3RoaXMuX3N0b3BDb3VudD10aGlzLnNvcnRlZC5sZW5ndGg7dGhpcy5feGhy PVtdO3RoaXMuY2FsY3VsYXRlKCk7dmFyIHM9dGhpcy5zb3J0ZWQsbD1zLmxlbmd0 aCxpLG0sdXJsO2ZvcihpPTA7aTxsO2k9aSsxKXttPXRoaXMubW9kdWxlSW5mb1tz W2ldXTtpZighbSl7dGhpcy5fb25GYWlsdXJlKCJ1bmRlZmluZWQgbW9kdWxlICIr bSk7Zm9yKHZhciBqPTA7ajx0aGlzLl94aHIubGVuZ3RoO2o9aisxKXt0aGlzLl94 aHJbal0uYWJvcnQoKTt9cmV0dXJuO31pZihtLnR5cGUhPT0ianMiKXt0aGlzLl9s b2FkQ291bnQrKztjb250aW51ZTt9dXJsPW0uZnVsbHBhdGg7dXJsPSh1cmwpP3Ro aXMuX2ZpbHRlcih1cmwpOnRoaXMuX3VybChtLnBhdGgpO3ZhciB4aHJEYXRhPXtz dWNjZXNzOmZ1bmN0aW9uKG8pe3ZhciBpZHg9by5hcmd1bWVudFswXSxuYW1lPW8u YXJndW1lbnRbMl07dGhpcy5fc2NyaXB0VGV4dFtpZHhdPW8ucmVzcG9uc2VUZXh0 O2lmKHRoaXMub25Qcm9ncmVzcyl7dGhpcy5vblByb2dyZXNzLmNhbGwodGhpcy5z Y29wZSx7bmFtZTpuYW1lLHNjcmlwdFRleHQ6by5yZXNwb25zZVRleHQseGhyUmVz cG9uc2U6byxkYXRhOnRoaXMuZGF0YX0pO310aGlzLl9sb2FkQ291bnQrKztpZih0 aGlzLl9sb2FkQ291bnQ+PXRoaXMuX3N0b3BDb3VudCl7dmFyIHY9dGhpcy52YXJO YW1lfHwiWUFIT08iO3ZhciB0PSIoZnVuY3Rpb24oKSB7XG4iO3ZhciBiPSJcbnJl dHVybiAiK3YrIjtcbn0pKCk7Ijt2YXIgcmVmPWV2YWwodCt0aGlzLl9zY3JpcHRU ZXh0LmpvaW4oIlxuIikrYik7dGhpcy5fcHVzaEV2ZW50cyhyZWYpO2lmKHJlZil7 dGhpcy5vblN1Y2Nlc3MuY2FsbCh0aGlzLnNjb3BlLHtyZWZlcmVuY2U6cmVmLGRh dGE6dGhpcy5kYXRhfSk7fWVsc2V7dGhpcy5fb25GYWlsdXJlLmNhbGwodGhpcy52 YXJOYW1lKyIgcmVmZXJlbmNlIGZhaWx1cmUiKTt9fX0sZmFpbHVyZTpmdW5jdGlv bihvKXt0aGlzLm9uRmFpbHVyZS5jYWxsKHRoaXMuc2NvcGUse21zZzoiWEhSIGZh aWx1cmUiLHhoclJlc3BvbnNlOm8sZGF0YTp0aGlzLmRhdGF9KTt9LHNjb3BlOnRo aXMsYXJndW1lbnQ6W2ksdXJsLHNbaV1dfTt0aGlzLl94aHIucHVzaCh1dGlsLkNv bm5lY3QuYXN5bmNSZXF1ZXN0KCJHRVQiLHVybCx4aHJEYXRhKSk7fX0sbG9hZE5l eHQ6ZnVuY3Rpb24obW5hbWUpe2lmKCF0aGlzLl9sb2FkaW5nKXtyZXR1cm47fWlm KG1uYW1lKXtpZihtbmFtZSE9PXRoaXMuX2xvYWRpbmcpe3JldHVybjt9dGhpcy5p bnNlcnRlZFttbmFtZV09dHJ1ZTtpZih0aGlzLm9uUHJvZ3Jlc3Mpe3RoaXMub25Q cm9ncmVzcy5jYWxsKHRoaXMuc2NvcGUse25hbWU6bW5hbWUsZGF0YTp0aGlzLmRh dGF9KTt9fXZhciBzPXRoaXMuc29ydGVkLGxlbj1zLmxlbmd0aCxpLG07Zm9yKGk9 MDtpPGxlbjtpPWkrMSl7aWYoc1tpXSBpbiB0aGlzLmluc2VydGVkKXtjb250aW51 ZTt9aWYoc1tpXT09PXRoaXMuX2xvYWRpbmcpe3JldHVybjt9bT10aGlzLm1vZHVs ZUluZm9bc1tpXV07aWYoIW0pe3RoaXMub25GYWlsdXJlLmNhbGwodGhpcy5zY29w ZSx7bXNnOiJ1bmRlZmluZWQgbW9kdWxlICIrbSxkYXRhOnRoaXMuZGF0YX0pO3Jl dHVybjt9aWYoIXRoaXMubG9hZFR5cGV8fHRoaXMubG9hZFR5cGU9PT1tLnR5cGUp e3RoaXMuX2xvYWRpbmc9c1tpXTt2YXIgZm49KG0udHlwZT09PSJjc3MiKT91dGls LkdldC5jc3M6dXRpbC5HZXQuc2NyaXB0LHVybD1tLmZ1bGxwYXRoLHNlbGY9dGhp cyxjPWZ1bmN0aW9uKG8pe3NlbGYubG9hZE5leHQoby5kYXRhKTt9O3VybD0odXJs KT90aGlzLl9maWx0ZXIodXJsKTp0aGlzLl91cmwobS5wYXRoKTtpZihlbnYudWEu d2Via2l0JiZlbnYudWEud2Via2l0PDQyMCYmbS50eXBlPT09ImpzIiYmIW0udmFy TmFtZSl7Yz1udWxsO3RoaXMuX3VzZVlhaG9vTGlzdGVuZXI9dHJ1ZTt9Zm4odXJs LHtkYXRhOnNbaV0sb25TdWNjZXNzOmMsb25GYWlsdXJlOnRoaXMuX29uRmFpbHVy ZSxvblRpbWVvdXQ6dGhpcy5fb25UaW1lb3V0LGluc2VydEJlZm9yZTp0aGlzLmlu c2VydEJlZm9yZSxjaGFyc2V0OnRoaXMuY2hhcnNldCx0aW1lb3V0OnRoaXMudGlt ZW91dCx2YXJOYW1lOm0udmFyTmFtZSxzY29wZTpzZWxmfSk7cmV0dXJuO319dGhp cy5fbG9hZGluZz1udWxsO2lmKHRoaXMuX2ludGVybmFsQ2FsbGJhY2spe3ZhciBm PXRoaXMuX2ludGVybmFsQ2FsbGJhY2s7dGhpcy5faW50ZXJuYWxDYWxsYmFjaz1u dWxsO2YuY2FsbCh0aGlzKTt9ZWxzZXtpZih0aGlzLm9uU3VjY2Vzcyl7dGhpcy5f cHVzaEV2ZW50cygpO3RoaXMub25TdWNjZXNzLmNhbGwodGhpcy5zY29wZSx7ZGF0 YTp0aGlzLmRhdGF9KTt9fX0sX3B1c2hFdmVudHM6ZnVuY3Rpb24ocmVmKXt2YXIg cj1yZWZ8fFlBSE9PO2lmKHIudXRpbCYmci51dGlsLkV2ZW50KXtyLnV0aWwuRXZl bnQuX2xvYWQoKTt9fSxfZmlsdGVyOmZ1bmN0aW9uKHN0cil7dmFyIGY9dGhpcy5m aWx0ZXI7cmV0dXJuKGYpP3N0ci5yZXBsYWNlKG5ldyBSZWdFeHAoZi5zZWFyY2hF eHAsImciKSxmLnJlcGxhY2VTdHIpOnN0cjt9LF91cmw6ZnVuY3Rpb24ocGF0aCl7 cmV0dXJuIHRoaXMuX2ZpbHRlcigodGhpcy5iYXNlfHwiIikrcGF0aCk7fX07fSko KTtZQUhPTy5yZWdpc3RlcigieXVpbG9hZGVyIixZQUhPTy51dGlsLllVSUxvYWRl cix7dmVyc2lvbjoiMi43LjAiLGJ1aWxkOiIxNzk2In0pOwooZnVuY3Rpb24oKXtZ QUhPTy5lbnYuX2lkX2NvdW50ZXI9WUFIT08uZW52Ll9pZF9jb3VudGVyfHwwO3Zh ciBFPVlBSE9PLnV0aWwsTD1ZQUhPTy5sYW5nLG09WUFIT08uZW52LnVhLEE9WUFI T08ubGFuZy50cmltLGQ9e30saD17fSxOPS9edCg/OmFibGV8ZHxoKSQvaSxYPS9j b2xvciQvaSxLPXdpbmRvdy5kb2N1bWVudCxXPUsuZG9jdW1lbnRFbGVtZW50LGU9 Im93bmVyRG9jdW1lbnQiLG49ImRlZmF1bHRWaWV3Iix2PSJkb2N1bWVudEVsZW1l bnQiLHQ9ImNvbXBhdE1vZGUiLGI9Im9mZnNldExlZnQiLFA9Im9mZnNldFRvcCIs dT0ib2Zmc2V0UGFyZW50IixaPSJwYXJlbnROb2RlIixsPSJub2RlVHlwZSIsQz0i dGFnTmFtZSIsTz0ic2Nyb2xsTGVmdCIsaT0ic2Nyb2xsVG9wIixRPSJnZXRCb3Vu ZGluZ0NsaWVudFJlY3QiLHc9ImdldENvbXB1dGVkU3R5bGUiLGE9ImN1cnJlbnRT dHlsZSIsTT0iQ1NTMUNvbXBhdCIsYz0iQmFja0NvbXBhdCIsZz0iY2xhc3MiLEY9 ImNsYXNzTmFtZSIsSj0iIixCPSIgIixzPSIoPzpefFxccykiLGs9Iig/PSB8JCki LFU9ImciLHA9InBvc2l0aW9uIixmPSJmaXhlZCIsVj0icmVsYXRpdmUiLGo9Imxl ZnQiLG89InRvcCIscj0ibWVkaXVtIixxPSJib3JkZXJMZWZ0V2lkdGgiLFI9ImJv cmRlclRvcFdpZHRoIixEPW0ub3BlcmEsST1tLndlYmtpdCxIPW0uZ2Vja28sVD1t LmllO0UuRG9tPXtDVVNUT01fQVRUUklCVVRFUzooIVcuaGFzQXR0cmlidXRlKT97 ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6Rn06eyJodG1sRm9yIjoiZm9yIiwiY2xh c3NOYW1lIjpnfSxnZXQ6ZnVuY3Rpb24oeSl7dmFyIEFBLFkseix4LEc7aWYoeSl7 aWYoeVtsXXx8eS5pdGVtKXtyZXR1cm4geTt9aWYodHlwZW9mIHk9PT0ic3RyaW5n Iil7QUE9eTt5PUsuZ2V0RWxlbWVudEJ5SWQoeSk7aWYoeSYmeS5pZD09PUFBKXty ZXR1cm4geTt9ZWxzZXtpZih5JiZLLmFsbCl7eT1udWxsO1k9Sy5hbGxbQUFdO2Zv cih4PTAsRz1ZLmxlbmd0aDt4PEc7Kyt4KXtpZihZW3hdLmlkPT09QUEpe3JldHVy biBZW3hdO319fX1yZXR1cm4geTt9aWYoeS5ET01fRVZFTlRTKXt5PXkuZ2V0KCJl bGVtZW50Iik7fWlmKCJsZW5ndGgiIGluIHkpe3o9W107Zm9yKHg9MCxHPXkubGVu Z3RoO3g8RzsrK3gpe3pbei5sZW5ndGhdPUUuRG9tLmdldCh5W3hdKTt9cmV0dXJu IHo7fXJldHVybiB5O31yZXR1cm4gbnVsbDt9LGdldENvbXB1dGVkU3R5bGU6ZnVu Y3Rpb24oRyxZKXtpZih3aW5kb3dbd10pe3JldHVybiBHW2VdW25dW3ddKEcsbnVs bClbWV07fWVsc2V7aWYoR1thXSl7cmV0dXJuIEUuRG9tLklFX0NvbXB1dGVkU3R5 bGUuZ2V0KEcsWSk7fX19LGdldFN0eWxlOmZ1bmN0aW9uKEcsWSl7cmV0dXJuIEUu RG9tLmJhdGNoKEcsRS5Eb20uX2dldFN0eWxlLFkpO30sX2dldFN0eWxlOmZ1bmN0 aW9uKCl7aWYod2luZG93W3ddKXtyZXR1cm4gZnVuY3Rpb24oRyx5KXt5PSh5PT09 ImZsb2F0Iik/eT0iY3NzRmxvYXQiOkUuRG9tLl90b0NhbWVsKHkpO3ZhciB4PUcu c3R5bGVbeV0sWTtpZigheCl7WT1HW2VdW25dW3ddKEcsbnVsbCk7aWYoWSl7eD1Z W3ldO319cmV0dXJuIHg7fTt9ZWxzZXtpZihXW2FdKXtyZXR1cm4gZnVuY3Rpb24o Ryx5KXt2YXIgeDtzd2l0Y2goeSl7Y2FzZSJvcGFjaXR5Ijp4PTEwMDt0cnl7eD1H LmZpbHRlcnNbIkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhIl0ub3Bh Y2l0eTt9Y2F0Y2goeil7dHJ5e3g9Ry5maWx0ZXJzKCJhbHBoYSIpLm9wYWNpdHk7 fWNhdGNoKFkpe319cmV0dXJuIHgvMTAwO2Nhc2UiZmxvYXQiOnk9InN0eWxlRmxv YXQiO2RlZmF1bHQ6eT1FLkRvbS5fdG9DYW1lbCh5KTt4PUdbYV0/R1thXVt5XTpu dWxsO3JldHVybihHLnN0eWxlW3ldfHx4KTt9fTt9fX0oKSxzZXRTdHlsZTpmdW5j dGlvbihHLFkseCl7RS5Eb20uYmF0Y2goRyxFLkRvbS5fc2V0U3R5bGUse3Byb3A6 WSx2YWw6eH0pO30sX3NldFN0eWxlOmZ1bmN0aW9uKCl7aWYoVCl7cmV0dXJuIGZ1 bmN0aW9uKFksRyl7dmFyIHg9RS5Eb20uX3RvQ2FtZWwoRy5wcm9wKSx5PUcudmFs O2lmKFkpe3N3aXRjaCh4KXtjYXNlIm9wYWNpdHkiOmlmKEwuaXNTdHJpbmcoWS5z dHlsZS5maWx0ZXIpKXtZLnN0eWxlLmZpbHRlcj0iYWxwaGEob3BhY2l0eT0iK3kq MTAwKyIpIjtpZighWVthXXx8IVlbYV0uaGFzTGF5b3V0KXtZLnN0eWxlLnpvb209 MTt9fWJyZWFrO2Nhc2UiZmxvYXQiOng9InN0eWxlRmxvYXQiO2RlZmF1bHQ6WS5z dHlsZVt4XT15O319ZWxzZXt9fTt9ZWxzZXtyZXR1cm4gZnVuY3Rpb24oWSxHKXt2 YXIgeD1FLkRvbS5fdG9DYW1lbChHLnByb3ApLHk9Ry52YWw7aWYoWSl7aWYoeD09 ImZsb2F0Iil7eD0iY3NzRmxvYXQiO31ZLnN0eWxlW3hdPXk7fWVsc2V7fX07fX0o KSxnZXRYWTpmdW5jdGlvbihHKXtyZXR1cm4gRS5Eb20uYmF0Y2goRyxFLkRvbS5f Z2V0WFkpO30sX2NhblBvc2l0aW9uOmZ1bmN0aW9uKEcpe3JldHVybihFLkRvbS5f Z2V0U3R5bGUoRywiZGlzcGxheSIpIT09Im5vbmUiJiZFLkRvbS5faW5Eb2MoRykp O30sX2dldFhZOmZ1bmN0aW9uKCl7aWYoS1t2XVtRXSl7cmV0dXJuIGZ1bmN0aW9u KHkpe3ZhciB6LFksQUEsQUYsQUUsQUQsQUMsRyx4LEFCPU1hdGguZmxvb3IsQUc9 ZmFsc2U7aWYoRS5Eb20uX2NhblBvc2l0aW9uKHkpKXtBQT15W1FdKCk7QUY9eVtl XTt6PUUuRG9tLmdldERvY3VtZW50U2Nyb2xsTGVmdChBRik7WT1FLkRvbS5nZXRE b2N1bWVudFNjcm9sbFRvcChBRik7QUc9W0FCKEFBW2pdKSxBQihBQVtvXSldO2lm KFQmJm0uaWU8OCl7QUU9MjtBRD0yO0FDPUFGW3RdO0c9UyhBRlt2XSxxKTt4PVMo QUZbdl0sUik7aWYobS5pZT09PTYpe2lmKEFDIT09Yyl7QUU9MDtBRD0wO319aWYo KEFDPT1jKSl7aWYoRyE9PXIpe0FFPXBhcnNlSW50KEcsMTApO31pZih4IT09cil7 QUQ9cGFyc2VJbnQoeCwxMCk7fX1BR1swXS09QUU7QUdbMV0tPUFEO31pZigoWXx8 eikpe0FHWzBdKz16O0FHWzFdKz1ZO31BR1swXT1BQihBR1swXSk7QUdbMV09QUIo QUdbMV0pO31lbHNle31yZXR1cm4gQUc7fTt9ZWxzZXtyZXR1cm4gZnVuY3Rpb24o eSl7dmFyIHgsWSxBQSxBQixBQyx6PWZhbHNlLEc9eTtpZihFLkRvbS5fY2FuUG9z aXRpb24oeSkpe3o9W3lbYl0seVtQXV07eD1FLkRvbS5nZXREb2N1bWVudFNjcm9s bExlZnQoeVtlXSk7WT1FLkRvbS5nZXREb2N1bWVudFNjcm9sbFRvcCh5W2VdKTtB Qz0oKEh8fG0ud2Via2l0PjUxOSk/dHJ1ZTpmYWxzZSk7d2hpbGUoKEc9R1t1XSkp e3pbMF0rPUdbYl07elsxXSs9R1tQXTtpZihBQyl7ej1FLkRvbS5fY2FsY0JvcmRl cnMoRyx6KTt9fWlmKEUuRG9tLl9nZXRTdHlsZSh5LHApIT09Zil7Rz15O3doaWxl KChHPUdbWl0pJiZHW0NdKXtBQT1HW2ldO0FCPUdbT107aWYoSCYmKEUuRG9tLl9n ZXRTdHlsZShHLCJvdmVyZmxvdyIpIT09InZpc2libGUiKSl7ej1FLkRvbS5fY2Fs Y0JvcmRlcnMoRyx6KTt9aWYoQUF8fEFCKXt6WzBdLT1BQjt6WzFdLT1BQTt9fXpb MF0rPXg7elsxXSs9WTt9ZWxzZXtpZihEKXt6WzBdLT14O3pbMV0tPVk7fWVsc2V7 aWYoSXx8SCl7elswXSs9eDt6WzFdKz1ZO319fXpbMF09TWF0aC5mbG9vcih6WzBd KTt6WzFdPU1hdGguZmxvb3IoelsxXSk7fWVsc2V7fXJldHVybiB6O307fX0oKSxn ZXRYOmZ1bmN0aW9uKEcpe3ZhciBZPWZ1bmN0aW9uKHgpe3JldHVybiBFLkRvbS5n ZXRYWSh4KVswXTt9O3JldHVybiBFLkRvbS5iYXRjaChHLFksRS5Eb20sdHJ1ZSk7 fSxnZXRZOmZ1bmN0aW9uKEcpe3ZhciBZPWZ1bmN0aW9uKHgpe3JldHVybiBFLkRv bS5nZXRYWSh4KVsxXTt9O3JldHVybiBFLkRvbS5iYXRjaChHLFksRS5Eb20sdHJ1 ZSk7fSxzZXRYWTpmdW5jdGlvbihHLHgsWSl7RS5Eb20uYmF0Y2goRyxFLkRvbS5f c2V0WFkse3Bvczp4LG5vUmV0cnk6WX0pO30sX3NldFhZOmZ1bmN0aW9uKEcseil7 dmFyIEFBPUUuRG9tLl9nZXRTdHlsZShHLHApLHk9RS5Eb20uc2V0U3R5bGUsQUQ9 ei5wb3MsWT16Lm5vUmV0cnksQUI9W3BhcnNlSW50KEUuRG9tLmdldENvbXB1dGVk U3R5bGUoRyxqKSwxMCkscGFyc2VJbnQoRS5Eb20uZ2V0Q29tcHV0ZWRTdHlsZShH LG8pLDEwKV0sQUMseDtpZihBQT09InN0YXRpYyIpe0FBPVY7eShHLHAsQUEpO31B Qz1FLkRvbS5fZ2V0WFkoRyk7aWYoIUFEfHxBQz09PWZhbHNlKXtyZXR1cm4gZmFs c2U7fWlmKGlzTmFOKEFCWzBdKSl7QUJbMF09KEFBPT1WKT8wOkdbYl07fWlmKGlz TmFOKEFCWzFdKSl7QUJbMV09KEFBPT1WKT8wOkdbUF07fWlmKEFEWzBdIT09bnVs bCl7eShHLGosQURbMF0tQUNbMF0rQUJbMF0rInB4Iik7fWlmKEFEWzFdIT09bnVs bCl7eShHLG8sQURbMV0tQUNbMV0rQUJbMV0rInB4Iik7fWlmKCFZKXt4PUUuRG9t Ll9nZXRYWShHKTtpZigoQURbMF0hPT1udWxsJiZ4WzBdIT1BRFswXSl8fChBRFsx XSE9PW51bGwmJnhbMV0hPUFEWzFdKSl7RS5Eb20uX3NldFhZKEcse3BvczpBRCxu b1JldHJ5OnRydWV9KTt9fX0sc2V0WDpmdW5jdGlvbihZLEcpe0UuRG9tLnNldFhZ KFksW0csbnVsbF0pO30sc2V0WTpmdW5jdGlvbihHLFkpe0UuRG9tLnNldFhZKEcs W251bGwsWV0pO30sZ2V0UmVnaW9uOmZ1bmN0aW9uKEcpe3ZhciBZPWZ1bmN0aW9u KHgpe3ZhciB5PWZhbHNlO2lmKEUuRG9tLl9jYW5Qb3NpdGlvbih4KSl7eT1FLlJl Z2lvbi5nZXRSZWdpb24oeCk7fWVsc2V7fXJldHVybiB5O307cmV0dXJuIEUuRG9t LmJhdGNoKEcsWSxFLkRvbSx0cnVlKTt9LGdldENsaWVudFdpZHRoOmZ1bmN0aW9u KCl7cmV0dXJuIEUuRG9tLmdldFZpZXdwb3J0V2lkdGgoKTt9LGdldENsaWVudEhl aWdodDpmdW5jdGlvbigpe3JldHVybiBFLkRvbS5nZXRWaWV3cG9ydEhlaWdodCgp O30sZ2V0RWxlbWVudHNCeUNsYXNzTmFtZTpmdW5jdGlvbihBQixBRixBQyxBRSx4 LEFEKXtBQj1MLnRyaW0oQUIpO0FGPUFGfHwiKiI7QUM9KEFDKT9FLkRvbS5nZXQo QUMpOm51bGx8fEs7aWYoIUFDKXtyZXR1cm5bXTt9dmFyIFk9W10sRz1BQy5nZXRF bGVtZW50c0J5VGFnTmFtZShBRiksej1FLkRvbS5oYXNDbGFzcztmb3IodmFyIHk9 MCxBQT1HLmxlbmd0aDt5PEFBOysreSl7aWYoeihHW3ldLEFCKSl7WVtZLmxlbmd0 aF09R1t5XTt9fWlmKEFFKXtFLkRvbS5iYXRjaChZLEFFLHgsQUQpO31yZXR1cm4g WTt9LGhhc0NsYXNzOmZ1bmN0aW9uKFksRyl7cmV0dXJuIEUuRG9tLmJhdGNoKFks RS5Eb20uX2hhc0NsYXNzLEcpO30sX2hhc0NsYXNzOmZ1bmN0aW9uKHgsWSl7dmFy IEc9ZmFsc2UseTtpZih4JiZZKXt5PUUuRG9tLmdldEF0dHJpYnV0ZSh4LEYpfHxK O2lmKFkuZXhlYyl7Rz1ZLnRlc3QoeSk7fWVsc2V7Rz1ZJiYoQit5K0IpLmluZGV4 T2YoQitZK0IpPi0xO319ZWxzZXt9cmV0dXJuIEc7fSxhZGRDbGFzczpmdW5jdGlv bihZLEcpe3JldHVybiBFLkRvbS5iYXRjaChZLEUuRG9tLl9hZGRDbGFzcyxHKTt9 LF9hZGRDbGFzczpmdW5jdGlvbih4LFkpe3ZhciBHPWZhbHNlLHk7aWYoeCYmWSl7 eT1FLkRvbS5nZXRBdHRyaWJ1dGUoeCxGKXx8SjtpZighRS5Eb20uX2hhc0NsYXNz KHgsWSkpe0UuRG9tLnNldEF0dHJpYnV0ZSh4LEYsQSh5K0IrWSkpO0c9dHJ1ZTt9 fWVsc2V7fXJldHVybiBHO30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oWSxHKXtyZXR1 cm4gRS5Eb20uYmF0Y2goWSxFLkRvbS5fcmVtb3ZlQ2xhc3MsRyk7fSxfcmVtb3Zl Q2xhc3M6ZnVuY3Rpb24oeSx4KXt2YXIgWT1mYWxzZSxBQSx6LEc7aWYoeSYmeCl7 QUE9RS5Eb20uZ2V0QXR0cmlidXRlKHksRil8fEo7RS5Eb20uc2V0QXR0cmlidXRl KHksRixBQS5yZXBsYWNlKEUuRG9tLl9nZXRDbGFzc1JlZ2V4KHgpLEopKTt6PUUu RG9tLmdldEF0dHJpYnV0ZSh5LEYpO2lmKEFBIT09eil7RS5Eb20uc2V0QXR0cmli dXRlKHksRixBKHopKTtZPXRydWU7aWYoRS5Eb20uZ2V0QXR0cmlidXRlKHksRik9 PT0iIil7Rz0oeS5oYXNBdHRyaWJ1dGUmJnkuaGFzQXR0cmlidXRlKGcpKT9nOkY7 eS5yZW1vdmVBdHRyaWJ1dGUoRyk7fX19ZWxzZXt9cmV0dXJuIFk7fSxyZXBsYWNl Q2xhc3M6ZnVuY3Rpb24oeCxZLEcpe3JldHVybiBFLkRvbS5iYXRjaCh4LEUuRG9t Ll9yZXBsYWNlQ2xhc3Mse2Zyb206WSx0bzpHfSk7Cn0sX3JlcGxhY2VDbGFzczpm dW5jdGlvbih5LHgpe3ZhciBZLEFCLEFBLEc9ZmFsc2UsejtpZih5JiZ4KXtBQj14 LmZyb207QUE9eC50bztpZighQUEpe0c9ZmFsc2U7fWVsc2V7aWYoIUFCKXtHPUUu RG9tLl9hZGRDbGFzcyh5LHgudG8pO31lbHNle2lmKEFCIT09QUEpe3o9RS5Eb20u Z2V0QXR0cmlidXRlKHksRil8fEo7WT0oQit6LnJlcGxhY2UoRS5Eb20uX2dldENs YXNzUmVnZXgoQUIpLEIrQUEpKS5zcGxpdChFLkRvbS5fZ2V0Q2xhc3NSZWdleChB QSkpO1kuc3BsaWNlKDEsMCxCK0FBKTtFLkRvbS5zZXRBdHRyaWJ1dGUoeSxGLEEo WS5qb2luKEopKSk7Rz10cnVlO319fX1lbHNle31yZXR1cm4gRzt9LGdlbmVyYXRl SWQ6ZnVuY3Rpb24oRyx4KXt4PXh8fCJ5dWktZ2VuIjt2YXIgWT1mdW5jdGlvbih5 KXtpZih5JiZ5LmlkKXtyZXR1cm4geS5pZDt9dmFyIHo9eCtZQUhPTy5lbnYuX2lk X2NvdW50ZXIrKztpZih5KXtpZih5W2VdLmdldEVsZW1lbnRCeUlkKHopKXtyZXR1 cm4gRS5Eb20uZ2VuZXJhdGVJZCh5LHoreCk7fXkuaWQ9ejt9cmV0dXJuIHo7fTty ZXR1cm4gRS5Eb20uYmF0Y2goRyxZLEUuRG9tLHRydWUpfHxZLmFwcGx5KEUuRG9t LGFyZ3VtZW50cyk7fSxpc0FuY2VzdG9yOmZ1bmN0aW9uKFkseCl7WT1FLkRvbS5n ZXQoWSk7eD1FLkRvbS5nZXQoeCk7dmFyIEc9ZmFsc2U7aWYoKFkmJngpJiYoWVts XSYmeFtsXSkpe2lmKFkuY29udGFpbnMmJlkhPT14KXtHPVkuY29udGFpbnMoeCk7 fWVsc2V7aWYoWS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbil7Rz0hIShZLmNvbXBh cmVEb2N1bWVudFBvc2l0aW9uKHgpJjE2KTt9fX1lbHNle31yZXR1cm4gRzt9LGlu RG9jdW1lbnQ6ZnVuY3Rpb24oRyxZKXtyZXR1cm4gRS5Eb20uX2luRG9jKEUuRG9t LmdldChHKSxZKTt9LF9pbkRvYzpmdW5jdGlvbihZLHgpe3ZhciBHPWZhbHNlO2lm KFkmJllbQ10pe3g9eHx8WVtlXTtHPUUuRG9tLmlzQW5jZXN0b3IoeFt2XSxZKTt9 ZWxzZXt9cmV0dXJuIEc7fSxnZXRFbGVtZW50c0J5OmZ1bmN0aW9uKFksQUYsQUIs QUQseSxBQyxBRSl7QUY9QUZ8fCIqIjtBQj0oQUIpP0UuRG9tLmdldChBQik6bnVs bHx8SztpZighQUIpe3JldHVybltdO312YXIgeD1bXSxHPUFCLmdldEVsZW1lbnRz QnlUYWdOYW1lKEFGKTtmb3IodmFyIHo9MCxBQT1HLmxlbmd0aDt6PEFBOysreil7 aWYoWShHW3pdKSl7aWYoQUUpe3g9R1t6XTticmVhazt9ZWxzZXt4W3gubGVuZ3Ro XT1HW3pdO319fWlmKEFEKXtFLkRvbS5iYXRjaCh4LEFELHksQUMpO31yZXR1cm4g eDt9LGdldEVsZW1lbnRCeTpmdW5jdGlvbih4LEcsWSl7cmV0dXJuIEUuRG9tLmdl dEVsZW1lbnRzQnkoeCxHLFksbnVsbCxudWxsLG51bGwsdHJ1ZSk7fSxiYXRjaDpm dW5jdGlvbih4LEFCLEFBLHope3ZhciB5PVtdLFk9KHopP0FBOndpbmRvdzt4PSh4 JiYoeFtDXXx8eC5pdGVtKSk/eDpFLkRvbS5nZXQoeCk7aWYoeCYmQUIpe2lmKHhb Q118fHgubGVuZ3RoPT09dW5kZWZpbmVkKXtyZXR1cm4gQUIuY2FsbChZLHgsQUEp O31mb3IodmFyIEc9MDtHPHgubGVuZ3RoOysrRyl7eVt5Lmxlbmd0aF09QUIuY2Fs bChZLHhbR10sQUEpO319ZWxzZXtyZXR1cm4gZmFsc2U7fXJldHVybiB5O30sZ2V0 RG9jdW1lbnRIZWlnaHQ6ZnVuY3Rpb24oKXt2YXIgWT0oS1t0XSE9TXx8SSk/Sy5i b2R5LnNjcm9sbEhlaWdodDpXLnNjcm9sbEhlaWdodCxHPU1hdGgubWF4KFksRS5E b20uZ2V0Vmlld3BvcnRIZWlnaHQoKSk7cmV0dXJuIEc7fSxnZXREb2N1bWVudFdp ZHRoOmZ1bmN0aW9uKCl7dmFyIFk9KEtbdF0hPU18fEkpP0suYm9keS5zY3JvbGxX aWR0aDpXLnNjcm9sbFdpZHRoLEc9TWF0aC5tYXgoWSxFLkRvbS5nZXRWaWV3cG9y dFdpZHRoKCkpO3JldHVybiBHO30sZ2V0Vmlld3BvcnRIZWlnaHQ6ZnVuY3Rpb24o KXt2YXIgRz1zZWxmLmlubmVySGVpZ2h0LFk9S1t0XTtpZigoWXx8VCkmJiFEKXtH PShZPT1NKT9XLmNsaWVudEhlaWdodDpLLmJvZHkuY2xpZW50SGVpZ2h0O31yZXR1 cm4gRzt9LGdldFZpZXdwb3J0V2lkdGg6ZnVuY3Rpb24oKXt2YXIgRz1zZWxmLmlu bmVyV2lkdGgsWT1LW3RdO2lmKFl8fFQpe0c9KFk9PU0pP1cuY2xpZW50V2lkdGg6 Sy5ib2R5LmNsaWVudFdpZHRoO31yZXR1cm4gRzt9LGdldEFuY2VzdG9yQnk6ZnVu Y3Rpb24oRyxZKXt3aGlsZSgoRz1HW1pdKSl7aWYoRS5Eb20uX3Rlc3RFbGVtZW50 KEcsWSkpe3JldHVybiBHO319cmV0dXJuIG51bGw7fSxnZXRBbmNlc3RvckJ5Q2xh c3NOYW1lOmZ1bmN0aW9uKFksRyl7WT1FLkRvbS5nZXQoWSk7aWYoIVkpe3JldHVy biBudWxsO312YXIgeD1mdW5jdGlvbih5KXtyZXR1cm4gRS5Eb20uaGFzQ2xhc3Mo eSxHKTt9O3JldHVybiBFLkRvbS5nZXRBbmNlc3RvckJ5KFkseCk7fSxnZXRBbmNl c3RvckJ5VGFnTmFtZTpmdW5jdGlvbihZLEcpe1k9RS5Eb20uZ2V0KFkpO2lmKCFZ KXtyZXR1cm4gbnVsbDt9dmFyIHg9ZnVuY3Rpb24oeSl7cmV0dXJuIHlbQ10mJnlb Q10udG9VcHBlckNhc2UoKT09Ry50b1VwcGVyQ2FzZSgpO307cmV0dXJuIEUuRG9t LmdldEFuY2VzdG9yQnkoWSx4KTt9LGdldFByZXZpb3VzU2libGluZ0J5OmZ1bmN0 aW9uKEcsWSl7d2hpbGUoRyl7Rz1HLnByZXZpb3VzU2libGluZztpZihFLkRvbS5f dGVzdEVsZW1lbnQoRyxZKSl7cmV0dXJuIEc7fX1yZXR1cm4gbnVsbDt9LGdldFBy ZXZpb3VzU2libGluZzpmdW5jdGlvbihHKXtHPUUuRG9tLmdldChHKTtpZighRyl7 cmV0dXJuIG51bGw7fXJldHVybiBFLkRvbS5nZXRQcmV2aW91c1NpYmxpbmdCeShH KTt9LGdldE5leHRTaWJsaW5nQnk6ZnVuY3Rpb24oRyxZKXt3aGlsZShHKXtHPUcu bmV4dFNpYmxpbmc7aWYoRS5Eb20uX3Rlc3RFbGVtZW50KEcsWSkpe3JldHVybiBH O319cmV0dXJuIG51bGw7fSxnZXROZXh0U2libGluZzpmdW5jdGlvbihHKXtHPUUu RG9tLmdldChHKTtpZighRyl7cmV0dXJuIG51bGw7fXJldHVybiBFLkRvbS5nZXRO ZXh0U2libGluZ0J5KEcpO30sZ2V0Rmlyc3RDaGlsZEJ5OmZ1bmN0aW9uKEcseCl7 dmFyIFk9KEUuRG9tLl90ZXN0RWxlbWVudChHLmZpcnN0Q2hpbGQseCkpP0cuZmly c3RDaGlsZDpudWxsO3JldHVybiBZfHxFLkRvbS5nZXROZXh0U2libGluZ0J5KEcu Zmlyc3RDaGlsZCx4KTt9LGdldEZpcnN0Q2hpbGQ6ZnVuY3Rpb24oRyxZKXtHPUUu RG9tLmdldChHKTtpZighRyl7cmV0dXJuIG51bGw7fXJldHVybiBFLkRvbS5nZXRG aXJzdENoaWxkQnkoRyk7fSxnZXRMYXN0Q2hpbGRCeTpmdW5jdGlvbihHLHgpe2lm KCFHKXtyZXR1cm4gbnVsbDt9dmFyIFk9KEUuRG9tLl90ZXN0RWxlbWVudChHLmxh c3RDaGlsZCx4KSk/Ry5sYXN0Q2hpbGQ6bnVsbDtyZXR1cm4gWXx8RS5Eb20uZ2V0 UHJldmlvdXNTaWJsaW5nQnkoRy5sYXN0Q2hpbGQseCk7fSxnZXRMYXN0Q2hpbGQ6 ZnVuY3Rpb24oRyl7Rz1FLkRvbS5nZXQoRyk7cmV0dXJuIEUuRG9tLmdldExhc3RD aGlsZEJ5KEcpO30sZ2V0Q2hpbGRyZW5CeTpmdW5jdGlvbihZLHkpe3ZhciB4PUUu RG9tLmdldEZpcnN0Q2hpbGRCeShZLHkpLEc9eD9beF06W107RS5Eb20uZ2V0TmV4 dFNpYmxpbmdCeSh4LGZ1bmN0aW9uKHope2lmKCF5fHx5KHopKXtHW0cubGVuZ3Ro XT16O31yZXR1cm4gZmFsc2U7fSk7cmV0dXJuIEc7fSxnZXRDaGlsZHJlbjpmdW5j dGlvbihHKXtHPUUuRG9tLmdldChHKTtpZighRyl7fXJldHVybiBFLkRvbS5nZXRD aGlsZHJlbkJ5KEcpO30sZ2V0RG9jdW1lbnRTY3JvbGxMZWZ0OmZ1bmN0aW9uKEcp e0c9R3x8SztyZXR1cm4gTWF0aC5tYXgoR1t2XS5zY3JvbGxMZWZ0LEcuYm9keS5z Y3JvbGxMZWZ0KTt9LGdldERvY3VtZW50U2Nyb2xsVG9wOmZ1bmN0aW9uKEcpe0c9 R3x8SztyZXR1cm4gTWF0aC5tYXgoR1t2XS5zY3JvbGxUb3AsRy5ib2R5LnNjcm9s bFRvcCk7fSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24oWSxHKXtZPUUuRG9tLmdldChZ KTtHPUUuRG9tLmdldChHKTtpZighWXx8IUd8fCFHW1pdKXtyZXR1cm4gbnVsbDt9 cmV0dXJuIEdbWl0uaW5zZXJ0QmVmb3JlKFksRyk7fSxpbnNlcnRBZnRlcjpmdW5j dGlvbihZLEcpe1k9RS5Eb20uZ2V0KFkpO0c9RS5Eb20uZ2V0KEcpO2lmKCFZfHwh R3x8IUdbWl0pe3JldHVybiBudWxsO31pZihHLm5leHRTaWJsaW5nKXtyZXR1cm4g R1taXS5pbnNlcnRCZWZvcmUoWSxHLm5leHRTaWJsaW5nKTt9ZWxzZXtyZXR1cm4g R1taXS5hcHBlbmRDaGlsZChZKTt9fSxnZXRDbGllbnRSZWdpb246ZnVuY3Rpb24o KXt2YXIgeD1FLkRvbS5nZXREb2N1bWVudFNjcm9sbFRvcCgpLFk9RS5Eb20uZ2V0 RG9jdW1lbnRTY3JvbGxMZWZ0KCkseT1FLkRvbS5nZXRWaWV3cG9ydFdpZHRoKCkr WSxHPUUuRG9tLmdldFZpZXdwb3J0SGVpZ2h0KCkreDtyZXR1cm4gbmV3IEUuUmVn aW9uKHgseSxHLFkpO30sc2V0QXR0cmlidXRlOmZ1bmN0aW9uKFksRyx4KXtHPUUu RG9tLkNVU1RPTV9BVFRSSUJVVEVTW0ddfHxHO1kuc2V0QXR0cmlidXRlKEcseCk7 fSxnZXRBdHRyaWJ1dGU6ZnVuY3Rpb24oWSxHKXtHPUUuRG9tLkNVU1RPTV9BVFRS SUJVVEVTW0ddfHxHO3JldHVybiBZLmdldEF0dHJpYnV0ZShHKTt9LF90b0NhbWVs OmZ1bmN0aW9uKFkpe3ZhciB4PWQ7ZnVuY3Rpb24gRyh5LHope3JldHVybiB6LnRv VXBwZXJDYXNlKCk7fXJldHVybiB4W1ldfHwoeFtZXT1ZLmluZGV4T2YoIi0iKT09 PS0xP1k6WS5yZXBsYWNlKC8tKFthLXpdKS9naSxHKSk7fSxfZ2V0Q2xhc3NSZWdl eDpmdW5jdGlvbihZKXt2YXIgRztpZihZIT09dW5kZWZpbmVkKXtpZihZLmV4ZWMp e0c9WTt9ZWxzZXtHPWhbWV07aWYoIUcpe1k9WS5yZXBsYWNlKEUuRG9tLl9wYXR0 ZXJucy5DTEFTU19SRV9UT0tFTlMsIlxcJDEiKTtHPWhbWV09bmV3IFJlZ0V4cChz K1krayxVKTt9fX1yZXR1cm4gRzt9LF9wYXR0ZXJuczp7Uk9PVF9UQUc6L15ib2R5 fGh0bWwkL2ksQ0xBU1NfUkVfVE9LRU5TOi8oW1wuXChcKVxeXCRcKlwrXD9cfFxb XF1ce1x9XSkvZ30sX3Rlc3RFbGVtZW50OmZ1bmN0aW9uKEcsWSl7cmV0dXJuIEcm JkdbbF09PTEmJighWXx8WShHKSk7fSxfY2FsY0JvcmRlcnM6ZnVuY3Rpb24oeCx5 KXt2YXIgWT1wYXJzZUludChFLkRvbVt3XSh4LFIpLDEwKXx8MCxHPXBhcnNlSW50 KEUuRG9tW3ddKHgscSksMTApfHwwO2lmKEgpe2lmKE4udGVzdCh4W0NdKSl7WT0w O0c9MDt9fXlbMF0rPUc7eVsxXSs9WTtyZXR1cm4geTt9fTt2YXIgUz1FLkRvbVt3 XTtpZihtLm9wZXJhKXtFLkRvbVt3XT1mdW5jdGlvbihZLEcpe3ZhciB4PVMoWSxH KTtpZihYLnRlc3QoRykpe3g9RS5Eb20uQ29sb3IudG9SR0IoeCk7fXJldHVybiB4 O307fWlmKG0ud2Via2l0KXtFLkRvbVt3XT1mdW5jdGlvbihZLEcpe3ZhciB4PVMo WSxHKTtpZih4PT09InJnYmEoMCwgMCwgMCwgMCkiKXt4PSJ0cmFuc3BhcmVudCI7 fXJldHVybiB4O307fX0pKCk7WUFIT08udXRpbC5SZWdpb249ZnVuY3Rpb24oQyxE LEEsQil7dGhpcy50b3A9Qzt0aGlzLnk9Qzt0aGlzWzFdPUM7dGhpcy5yaWdodD1E O3RoaXMuYm90dG9tPUE7dGhpcy5sZWZ0PUI7dGhpcy54PUI7dGhpc1swXT1CO3Ro aXMud2lkdGg9dGhpcy5yaWdodC10aGlzLmxlZnQ7dGhpcy5oZWlnaHQ9dGhpcy5i b3R0b20tdGhpcy50b3A7fTtZQUhPTy51dGlsLlJlZ2lvbi5wcm90b3R5cGUuY29u dGFpbnM9ZnVuY3Rpb24oQSl7cmV0dXJuKEEubGVmdD49dGhpcy5sZWZ0JiZBLnJp Z2h0PD10aGlzLnJpZ2h0JiZBLnRvcD49dGhpcy50b3AmJkEuYm90dG9tPD10aGlz LmJvdHRvbSk7fTtZQUhPTy51dGlsLlJlZ2lvbi5wcm90b3R5cGUuZ2V0QXJlYT1m dW5jdGlvbigpe3JldHVybigodGhpcy5ib3R0b20tdGhpcy50b3ApKih0aGlzLnJp Z2h0LXRoaXMubGVmdCkpO307WUFIT08udXRpbC5SZWdpb24ucHJvdG90eXBlLmlu dGVyc2VjdD1mdW5jdGlvbihFKXt2YXIgQz1NYXRoLm1heCh0aGlzLnRvcCxFLnRv cCksRD1NYXRoLm1pbih0aGlzLnJpZ2h0LEUucmlnaHQpLEE9TWF0aC5taW4odGhp cy5ib3R0b20sRS5ib3R0b20pLEI9TWF0aC5tYXgodGhpcy5sZWZ0LEUubGVmdCk7 aWYoQT49QyYmRD49Qil7cmV0dXJuIG5ldyBZQUhPTy51dGlsLlJlZ2lvbihDLEQs QSxCKTsKfWVsc2V7cmV0dXJuIG51bGw7fX07WUFIT08udXRpbC5SZWdpb24ucHJv dG90eXBlLnVuaW9uPWZ1bmN0aW9uKEUpe3ZhciBDPU1hdGgubWluKHRoaXMudG9w LEUudG9wKSxEPU1hdGgubWF4KHRoaXMucmlnaHQsRS5yaWdodCksQT1NYXRoLm1h eCh0aGlzLmJvdHRvbSxFLmJvdHRvbSksQj1NYXRoLm1pbih0aGlzLmxlZnQsRS5s ZWZ0KTtyZXR1cm4gbmV3IFlBSE9PLnV0aWwuUmVnaW9uKEMsRCxBLEIpO307WUFI T08udXRpbC5SZWdpb24ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0 dXJuKCJSZWdpb24geyIrInRvcDogIit0aGlzLnRvcCsiLCByaWdodDogIit0aGlz LnJpZ2h0KyIsIGJvdHRvbTogIit0aGlzLmJvdHRvbSsiLCBsZWZ0OiAiK3RoaXMu bGVmdCsiLCBoZWlnaHQ6ICIrdGhpcy5oZWlnaHQrIiwgd2lkdGg6ICIrdGhpcy53 aWR0aCsifSIpO307WUFIT08udXRpbC5SZWdpb24uZ2V0UmVnaW9uPWZ1bmN0aW9u KEQpe3ZhciBGPVlBSE9PLnV0aWwuRG9tLmdldFhZKEQpLEM9RlsxXSxFPUZbMF0r RC5vZmZzZXRXaWR0aCxBPUZbMV0rRC5vZmZzZXRIZWlnaHQsQj1GWzBdO3JldHVy biBuZXcgWUFIT08udXRpbC5SZWdpb24oQyxFLEEsQik7fTtZQUhPTy51dGlsLlBv aW50PWZ1bmN0aW9uKEEsQil7aWYoWUFIT08ubGFuZy5pc0FycmF5KEEpKXtCPUFb MV07QT1BWzBdO31ZQUhPTy51dGlsLlBvaW50LnN1cGVyY2xhc3MuY29uc3RydWN0 b3IuY2FsbCh0aGlzLEIsQSxCLEEpO307WUFIT08uZXh0ZW5kKFlBSE9PLnV0aWwu UG9pbnQsWUFIT08udXRpbC5SZWdpb24pOyhmdW5jdGlvbigpe3ZhciBCPVlBSE9P LnV0aWwsQT0iY2xpZW50VG9wIixGPSJjbGllbnRMZWZ0IixKPSJwYXJlbnROb2Rl IixLPSJyaWdodCIsVz0iaGFzTGF5b3V0IixJPSJweCIsVT0ib3BhY2l0eSIsTD0i YXV0byIsRD0iYm9yZGVyTGVmdFdpZHRoIixHPSJib3JkZXJUb3BXaWR0aCIsUD0i Ym9yZGVyUmlnaHRXaWR0aCIsVj0iYm9yZGVyQm90dG9tV2lkdGgiLFM9InZpc2li bGUiLFE9InRyYW5zcGFyZW50IixOPSJoZWlnaHQiLEU9IndpZHRoIixIPSJzdHls ZSIsVD0iY3VycmVudFN0eWxlIixSPS9ed2lkdGh8aGVpZ2h0JC8sTz0vXihcZFsu XGRdKikrKGVtfGV4fHB4fGdkfHJlbXx2d3x2aHx2bXxjaHxtbXxjbXxpbnxwdHxw Y3xkZWd8cmFkfG1zfHN8aHp8a2h6fCUpezF9Py9pLE09e2dldDpmdW5jdGlvbihY LFope3ZhciBZPSIiLGE9WFtUXVtaXTtpZihaPT09VSl7WT1CLkRvbS5nZXRTdHls ZShYLFUpO31lbHNle2lmKCFhfHwoYS5pbmRleE9mJiZhLmluZGV4T2YoSSk+LTEp KXtZPWE7fWVsc2V7aWYoQi5Eb20uSUVfQ09NUFVURURbWl0pe1k9Qi5Eb20uSUVf Q09NUFVURURbWl0oWCxaKTt9ZWxzZXtpZihPLnRlc3QoYSkpe1k9Qi5Eb20uSUUu Q29tcHV0ZWRTdHlsZS5nZXRQaXhlbChYLFopO31lbHNle1k9YTt9fX19cmV0dXJu IFk7fSxnZXRPZmZzZXQ6ZnVuY3Rpb24oWixlKXt2YXIgYj1aW1RdW2VdLFg9ZS5j aGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnN1YnN0cigxKSxjPSJvZmZzZXQiK1gs WT0icGl4ZWwiK1gsYT0iIixkO2lmKGI9PUwpe2Q9WltjXTtpZihkPT09dW5kZWZp bmVkKXthPTA7fWE9ZDtpZihSLnRlc3QoZSkpe1pbSF1bZV09ZDtpZihaW2NdPmQp e2E9ZC0oWltjXS1kKTt9WltIXVtlXT1MO319ZWxzZXtpZighWltIXVtZXSYmIVpb SF1bZV0pe1pbSF1bZV09Yjt9YT1aW0hdW1ldO31yZXR1cm4gYStJO30sZ2V0Qm9y ZGVyV2lkdGg6ZnVuY3Rpb24oWCxaKXt2YXIgWT1udWxsO2lmKCFYW1RdW1ddKXtY W0hdLnpvb209MTt9c3dpdGNoKFope2Nhc2UgRzpZPVhbQV07YnJlYWs7Y2FzZSBW Olk9WC5vZmZzZXRIZWlnaHQtWC5jbGllbnRIZWlnaHQtWFtBXTticmVhaztjYXNl IEQ6WT1YW0ZdO2JyZWFrO2Nhc2UgUDpZPVgub2Zmc2V0V2lkdGgtWC5jbGllbnRX aWR0aC1YW0ZdO2JyZWFrO31yZXR1cm4gWStJO30sZ2V0UGl4ZWw6ZnVuY3Rpb24o WSxYKXt2YXIgYT1udWxsLGI9WVtUXVtLXSxaPVlbVF1bWF07WVtIXVtLXT1aO2E9 WVtIXS5waXhlbFJpZ2h0O1lbSF1bS109YjtyZXR1cm4gYStJO30sZ2V0TWFyZ2lu OmZ1bmN0aW9uKFksWCl7dmFyIFo7aWYoWVtUXVtYXT09TCl7Wj0wK0k7fWVsc2V7 Wj1CLkRvbS5JRS5Db21wdXRlZFN0eWxlLmdldFBpeGVsKFksWCk7fXJldHVybiBa O30sZ2V0VmlzaWJpbGl0eTpmdW5jdGlvbihZLFgpe3ZhciBaO3doaWxlKChaPVlb VF0pJiZaW1hdPT0iaW5oZXJpdCIpe1k9WVtKXTt9cmV0dXJuKFopP1pbWF06Uzt9 LGdldENvbG9yOmZ1bmN0aW9uKFksWCl7cmV0dXJuIEIuRG9tLkNvbG9yLnRvUkdC KFlbVF1bWF0pfHxRO30sZ2V0Qm9yZGVyQ29sb3I6ZnVuY3Rpb24oWSxYKXt2YXIg Wj1ZW1RdLGE9WltYXXx8Wi5jb2xvcjtyZXR1cm4gQi5Eb20uQ29sb3IudG9SR0Io Qi5Eb20uQ29sb3IudG9IZXgoYSkpO319LEM9e307Qy50b3A9Qy5yaWdodD1DLmJv dHRvbT1DLmxlZnQ9Q1tFXT1DW05dPU0uZ2V0T2Zmc2V0O0MuY29sb3I9TS5nZXRD b2xvcjtDW0ddPUNbUF09Q1tWXT1DW0RdPU0uZ2V0Qm9yZGVyV2lkdGg7Qy5tYXJn aW5Ub3A9Qy5tYXJnaW5SaWdodD1DLm1hcmdpbkJvdHRvbT1DLm1hcmdpbkxlZnQ9 TS5nZXRNYXJnaW47Qy52aXNpYmlsaXR5PU0uZ2V0VmlzaWJpbGl0eTtDLmJvcmRl ckNvbG9yPUMuYm9yZGVyVG9wQ29sb3I9Qy5ib3JkZXJSaWdodENvbG9yPUMuYm9y ZGVyQm90dG9tQ29sb3I9Qy5ib3JkZXJMZWZ0Q29sb3I9TS5nZXRCb3JkZXJDb2xv cjtCLkRvbS5JRV9DT01QVVRFRD1DO0IuRG9tLklFX0NvbXB1dGVkU3R5bGU9TTt9 KSgpOyhmdW5jdGlvbigpe3ZhciBDPSJ0b1N0cmluZyIsQT1wYXJzZUludCxCPVJl Z0V4cCxEPVlBSE9PLnV0aWw7RC5Eb20uQ29sb3I9e0tFWVdPUkRTOntibGFjazoi MDAwIixzaWx2ZXI6ImMwYzBjMCIsZ3JheToiODA4MDgwIix3aGl0ZToiZmZmIixt YXJvb246IjgwMDAwMCIscmVkOiJmMDAiLHB1cnBsZToiODAwMDgwIixmdWNoc2lh OiJmMGYiLGdyZWVuOiIwMDgwMDAiLGxpbWU6IjBmMCIsb2xpdmU6IjgwODAwMCIs eWVsbG93OiJmZjAiLG5hdnk6IjAwMDA4MCIsYmx1ZToiMDBmIix0ZWFsOiIwMDgw ODAiLGFxdWE6IjBmZiJ9LHJlX1JHQjovXnJnYlwoKFswLTldKylccyosXHMqKFsw LTldKylccyosXHMqKFswLTldKylcKSQvaSxyZV9oZXg6L14jPyhbMC05QS1GXXsy fSkoWzAtOUEtRl17Mn0pKFswLTlBLUZdezJ9KSQvaSxyZV9oZXgzOi8oWzAtOUEt Rl0pL2dpLHRvUkdCOmZ1bmN0aW9uKEUpe2lmKCFELkRvbS5Db2xvci5yZV9SR0Iu dGVzdChFKSl7RT1ELkRvbS5Db2xvci50b0hleChFKTt9aWYoRC5Eb20uQ29sb3Iu cmVfaGV4LmV4ZWMoRSkpe0U9InJnYigiK1tBKEIuJDEsMTYpLEEoQi4kMiwxNiks QShCLiQzLDE2KV0uam9pbigiLCAiKSsiKSI7fXJldHVybiBFO30sdG9IZXg6ZnVu Y3Rpb24oSCl7SD1ELkRvbS5Db2xvci5LRVlXT1JEU1tIXXx8SDtpZihELkRvbS5D b2xvci5yZV9SR0IuZXhlYyhIKSl7dmFyIEc9KEIuJDEubGVuZ3RoPT09MSk/IjAi K0IuJDE6TnVtYmVyKEIuJDEpLEY9KEIuJDIubGVuZ3RoPT09MSk/IjAiK0IuJDI6 TnVtYmVyKEIuJDIpLEU9KEIuJDMubGVuZ3RoPT09MSk/IjAiK0IuJDM6TnVtYmVy KEIuJDMpO0g9W0dbQ10oMTYpLEZbQ10oMTYpLEVbQ10oMTYpXS5qb2luKCIiKTt9 aWYoSC5sZW5ndGg8Nil7SD1ILnJlcGxhY2UoRC5Eb20uQ29sb3IucmVfaGV4Mywi JDEkMSIpO31pZihIIT09InRyYW5zcGFyZW50IiYmSC5pbmRleE9mKCIjIik8MCl7 SD0iIyIrSDt9cmV0dXJuIEgudG9Mb3dlckNhc2UoKTt9fTt9KCkpO1lBSE9PLnJl Z2lzdGVyKCJkb20iLFlBSE9PLnV0aWwuRG9tLHt2ZXJzaW9uOiIyLjcuMCIsYnVp bGQ6IjE3OTYifSk7WUFIT08udXRpbC5DdXN0b21FdmVudD1mdW5jdGlvbihELEMs QixBKXt0aGlzLnR5cGU9RDt0aGlzLnNjb3BlPUN8fHdpbmRvdzt0aGlzLnNpbGVu dD1CO3RoaXMuc2lnbmF0dXJlPUF8fFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQuTElT VDt0aGlzLnN1YnNjcmliZXJzPVtdO2lmKCF0aGlzLnNpbGVudCl7fXZhciBFPSJf WVVJQ0VPblN1YnNjcmliZSI7aWYoRCE9PUUpe3RoaXMuc3Vic2NyaWJlRXZlbnQ9 bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQoRSx0aGlzLHRydWUpO310aGlzLmxh c3RFcnJvcj1udWxsO307WUFIT08udXRpbC5DdXN0b21FdmVudC5MSVNUPTA7WUFI T08udXRpbC5DdXN0b21FdmVudC5GTEFUPTE7WUFIT08udXRpbC5DdXN0b21FdmVu dC5wcm90b3R5cGU9e3N1YnNjcmliZTpmdW5jdGlvbihBLEIsQyl7aWYoIUEpe3Ro cm93IG5ldyBFcnJvcigiSW52YWxpZCBjYWxsYmFjayBmb3Igc3Vic2NyaWJlciB0 byAnIit0aGlzLnR5cGUrIiciKTt9aWYodGhpcy5zdWJzY3JpYmVFdmVudCl7dGhp cy5zdWJzY3JpYmVFdmVudC5maXJlKEEsQixDKTt9dGhpcy5zdWJzY3JpYmVycy5w dXNoKG5ldyBZQUhPTy51dGlsLlN1YnNjcmliZXIoQSxCLEMpKTt9LHVuc3Vic2Ny aWJlOmZ1bmN0aW9uKEQsRil7aWYoIUQpe3JldHVybiB0aGlzLnVuc3Vic2NyaWJl QWxsKCk7fXZhciBFPWZhbHNlO2Zvcih2YXIgQj0wLEE9dGhpcy5zdWJzY3JpYmVy cy5sZW5ndGg7QjxBOysrQil7dmFyIEM9dGhpcy5zdWJzY3JpYmVyc1tCXTtpZihD JiZDLmNvbnRhaW5zKEQsRikpe3RoaXMuX2RlbGV0ZShCKTtFPXRydWU7fX1yZXR1 cm4gRTt9LGZpcmU6ZnVuY3Rpb24oKXt0aGlzLmxhc3RFcnJvcj1udWxsO3ZhciBL PVtdLEU9dGhpcy5zdWJzY3JpYmVycy5sZW5ndGg7aWYoIUUmJnRoaXMuc2lsZW50 KXtyZXR1cm4gdHJ1ZTt9dmFyIEk9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMCks Rz10cnVlLEQsSj1mYWxzZTtpZighdGhpcy5zaWxlbnQpe312YXIgQz10aGlzLnN1 YnNjcmliZXJzLnNsaWNlKCksQT1ZQUhPTy51dGlsLkV2ZW50LnRocm93RXJyb3Jz O2ZvcihEPTA7RDxFOysrRCl7dmFyIE09Q1tEXTtpZighTSl7Sj10cnVlO31lbHNl e2lmKCF0aGlzLnNpbGVudCl7fXZhciBMPU0uZ2V0U2NvcGUodGhpcy5zY29wZSk7 aWYodGhpcy5zaWduYXR1cmU9PVlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQuRkxBVCl7 dmFyIEI9bnVsbDtpZihJLmxlbmd0aD4wKXtCPUlbMF07fXRyeXtHPU0uZm4uY2Fs bChMLEIsTS5vYmopO31jYXRjaChGKXt0aGlzLmxhc3RFcnJvcj1GO2lmKEEpe3Ro cm93IEY7fX19ZWxzZXt0cnl7Rz1NLmZuLmNhbGwoTCx0aGlzLnR5cGUsSSxNLm9i aik7fWNhdGNoKEgpe3RoaXMubGFzdEVycm9yPUg7aWYoQSl7dGhyb3cgSDt9fX1p ZihmYWxzZT09PUcpe2lmKCF0aGlzLnNpbGVudCl7fWJyZWFrO319fXJldHVybihH IT09ZmFsc2UpO30sdW5zdWJzY3JpYmVBbGw6ZnVuY3Rpb24oKXt2YXIgQT10aGlz LnN1YnNjcmliZXJzLmxlbmd0aCxCO2ZvcihCPUEtMTtCPi0xO0ItLSl7dGhpcy5f ZGVsZXRlKEIpO310aGlzLnN1YnNjcmliZXJzPVtdO3JldHVybiBBO30sX2RlbGV0 ZTpmdW5jdGlvbihBKXt2YXIgQj10aGlzLnN1YnNjcmliZXJzW0FdO2lmKEIpe2Rl bGV0ZSBCLmZuO2RlbGV0ZSBCLm9iajt9dGhpcy5zdWJzY3JpYmVycy5zcGxpY2Uo QSwxKTt9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIkN1c3RvbUV2ZW50OiAi KyInIit0aGlzLnR5cGUrIicsICIrImNvbnRleHQ6ICIrdGhpcy5zY29wZTt9fTtZ QUhPTy51dGlsLlN1YnNjcmliZXI9ZnVuY3Rpb24oQSxCLEMpe3RoaXMuZm49QTt0 aGlzLm9iaj1ZQUhPTy5sYW5nLmlzVW5kZWZpbmVkKEIpP251bGw6Qjt0aGlzLm92 ZXJyaWRlQ29udGV4dD1DO307WUFIT08udXRpbC5TdWJzY3JpYmVyLnByb3RvdHlw ZS5nZXRTY29wZT1mdW5jdGlvbihBKXtpZih0aGlzLm92ZXJyaWRlQ29udGV4dCl7 aWYodGhpcy5vdmVycmlkZUNvbnRleHQ9PT10cnVlKXtyZXR1cm4gdGhpcy5vYmo7 fWVsc2V7cmV0dXJuIHRoaXMub3ZlcnJpZGVDb250ZXh0O319cmV0dXJuIEE7fTtZ QUhPTy51dGlsLlN1YnNjcmliZXIucHJvdG90eXBlLmNvbnRhaW5zPWZ1bmN0aW9u KEEsQil7aWYoQil7cmV0dXJuKHRoaXMuZm49PUEmJnRoaXMub2JqPT1CKTt9ZWxz ZXtyZXR1cm4odGhpcy5mbj09QSk7fX07WUFIT08udXRpbC5TdWJzY3JpYmVyLnBy b3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJTdWJzY3JpYmVyIHsg b2JqOiAiK3RoaXMub2JqKyIsIG92ZXJyaWRlQ29udGV4dDogIisodGhpcy5vdmVy cmlkZUNvbnRleHR8fCJubyIpKyIgfSI7fTtpZighWUFIT08udXRpbC5FdmVudCl7 WUFIT08udXRpbC5FdmVudD1mdW5jdGlvbigpe3ZhciBIPWZhbHNlO3ZhciBJPVtd O3ZhciBKPVtdO3ZhciBHPVtdO3ZhciBFPVtdO3ZhciBDPTA7dmFyIEY9W107dmFy IEI9W107dmFyIEE9MDt2YXIgRD17NjMyMzI6MzgsNjMyMzM6NDAsNjMyMzQ6Mzcs NjMyMzU6MzksNjMyNzY6MzMsNjMyNzc6MzQsMjU6OX07dmFyIEs9WUFIT08uZW52 LnVhLmllPyJmb2N1c2luIjoiZm9jdXMiO3ZhciBMPVlBSE9PLmVudi51YS5pZT8i Zm9jdXNvdXQiOiJibHVyIjtyZXR1cm57UE9MTF9SRVRSWVM6MjAwMCxQT0xMX0lO VEVSVkFMOjIwLEVMOjAsVFlQRToxLEZOOjIsV0ZOOjMsVU5MT0FEX09CSjozLEFE Sl9TQ09QRTo0LE9CSjo1LE9WRVJSSURFOjYsbGFzdEVycm9yOm51bGwsaXNTYWZh cmk6WUFIT08uZW52LnVhLndlYmtpdCx3ZWJraXQ6WUFIT08uZW52LnVhLndlYmtp dCxpc0lFOllBSE9PLmVudi51YS5pZSxfaW50ZXJ2YWw6bnVsbCxfZHJpOm51bGws RE9NUmVhZHk6ZmFsc2UsdGhyb3dFcnJvcnM6ZmFsc2Usc3RhcnRJbnRlcnZhbDpm dW5jdGlvbigpe2lmKCF0aGlzLl9pbnRlcnZhbCl7dmFyIE09dGhpczt2YXIgTj1m dW5jdGlvbigpe00uX3RyeVByZWxvYWRBdHRhY2goKTt9O3RoaXMuX2ludGVydmFs PXNldEludGVydmFsKE4sdGhpcy5QT0xMX0lOVEVSVkFMKTt9fSxvbkF2YWlsYWJs ZTpmdW5jdGlvbihTLE8sUSxSLFApe3ZhciBNPShZQUhPTy5sYW5nLmlzU3RyaW5n KFMpKT9bU106Uztmb3IodmFyIE49MDtOPE0ubGVuZ3RoO049TisxKXtGLnB1c2go e2lkOk1bTl0sZm46TyxvYmo6USxvdmVycmlkZUNvbnRleHQ6UixjaGVja1JlYWR5 OlB9KTt9Qz10aGlzLlBPTExfUkVUUllTO3RoaXMuc3RhcnRJbnRlcnZhbCgpO30s b25Db250ZW50UmVhZHk6ZnVuY3Rpb24oUCxNLE4sTyl7dGhpcy5vbkF2YWlsYWJs ZShQLE0sTixPLHRydWUpO30sb25ET01SZWFkeTpmdW5jdGlvbihNLE4sTyl7aWYo dGhpcy5ET01SZWFkeSl7c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBQPXdpbmRv dztpZihPKXtpZihPPT09dHJ1ZSl7UD1OO31lbHNle1A9Tzt9fU0uY2FsbChQLCJE T01SZWFkeSIsW10sTik7fSwwKTt9ZWxzZXt0aGlzLkRPTVJlYWR5RXZlbnQuc3Vi c2NyaWJlKE0sTixPKTt9fSxfYWRkTGlzdGVuZXI6ZnVuY3Rpb24oTyxNLFksUyxX LGIpe2lmKCFZfHwhWS5jYWxsKXtyZXR1cm4gZmFsc2U7fWlmKHRoaXMuX2lzVmFs aWRDb2xsZWN0aW9uKE8pKXt2YXIgWj10cnVlO2Zvcih2YXIgVD0wLFY9Ty5sZW5n dGg7VDxWOysrVCl7Wj10aGlzLm9uKE9bVF0sTSxZLFMsVykmJlo7fXJldHVybiBa O31lbHNle2lmKFlBSE9PLmxhbmcuaXNTdHJpbmcoTykpe3ZhciBSPXRoaXMuZ2V0 RWwoTyk7aWYoUil7Tz1SO31lbHNle3RoaXMub25BdmFpbGFibGUoTyxmdW5jdGlv bigpe1lBSE9PLnV0aWwuRXZlbnQub24oTyxNLFksUyxXKTt9KTtyZXR1cm4gdHJ1 ZTt9fX1pZighTyl7cmV0dXJuIGZhbHNlO31pZigidW5sb2FkIj09TSYmUyE9PXRo aXMpe0pbSi5sZW5ndGhdPVtPLE0sWSxTLFddO3JldHVybiB0cnVlO312YXIgTj1P O2lmKFcpe2lmKFc9PT10cnVlKXtOPVM7fWVsc2V7Tj1XO319dmFyIFA9ZnVuY3Rp b24oYyl7cmV0dXJuIFkuY2FsbChOLFlBSE9PLnV0aWwuRXZlbnQuZ2V0RXZlbnQo YyxPKSxTKTt9O3ZhciBhPVtPLE0sWSxQLE4sUyxXXTt2YXIgVT1JLmxlbmd0aDtJ W1VdPWE7aWYodGhpcy51c2VMZWdhY3lFdmVudChPLE0pKXt2YXIgUT10aGlzLmdl dExlZ2FjeUluZGV4KE8sTSk7aWYoUT09LTF8fE8hPUdbUV1bMF0pe1E9Ry5sZW5n dGg7QltPLmlkK01dPVE7R1tRXT1bTyxNLE9bIm9uIitNXV07RVtRXT1bXTtPWyJv biIrTV09ZnVuY3Rpb24oYyl7WUFIT08udXRpbC5FdmVudC5maXJlTGVnYWN5RXZl bnQoWUFIT08udXRpbC5FdmVudC5nZXRFdmVudChjKSxRKTt9O31FW1FdLnB1c2go YSk7fWVsc2V7dHJ5e3RoaXMuX3NpbXBsZUFkZChPLE0sUCxiKTt9Y2F0Y2goWCl7 dGhpcy5sYXN0RXJyb3I9WDt0aGlzLnJlbW92ZUxpc3RlbmVyKE8sTSxZKTtyZXR1 cm4gZmFsc2U7fX1yZXR1cm4gdHJ1ZTt9LGFkZExpc3RlbmVyOmZ1bmN0aW9uKE4s USxNLE8sUCl7cmV0dXJuIHRoaXMuX2FkZExpc3RlbmVyKE4sUSxNLE8sUCxmYWxz ZSk7fSxhZGRGb2N1c0xpc3RlbmVyOmZ1bmN0aW9uKE4sTSxPLFApe3JldHVybiB0 aGlzLl9hZGRMaXN0ZW5lcihOLEssTSxPLFAsdHJ1ZSk7fSxyZW1vdmVGb2N1c0xp c3RlbmVyOmZ1bmN0aW9uKE4sTSl7cmV0dXJuIHRoaXMucmVtb3ZlTGlzdGVuZXIo TixLLE0pO30sYWRkQmx1ckxpc3RlbmVyOmZ1bmN0aW9uKE4sTSxPLFApe3JldHVy biB0aGlzLl9hZGRMaXN0ZW5lcihOLEwsTSxPLFAsdHJ1ZSk7fSxyZW1vdmVCbHVy TGlzdGVuZXI6ZnVuY3Rpb24oTixNKXtyZXR1cm4gdGhpcy5yZW1vdmVMaXN0ZW5l cihOLEwsTSk7fSxmaXJlTGVnYWN5RXZlbnQ6ZnVuY3Rpb24oUixQKXt2YXIgVD10 cnVlLE0sVixVLE4sUztWPUVbUF0uc2xpY2UoKTtmb3IodmFyIE89MCxRPVYubGVu Z3RoO088UTsrK08pe1U9VltPXTtpZihVJiZVW3RoaXMuV0ZOXSl7Tj1VW3RoaXMu QURKX1NDT1BFXTtTPVVbdGhpcy5XRk5dLmNhbGwoTixSKTtUPShUJiZTKTt9fU09 R1tQXTtpZihNJiZNWzJdKXtNWzJdKFIpO31yZXR1cm4gVDt9LGdldExlZ2FjeUlu ZGV4OmZ1bmN0aW9uKE4sTyl7dmFyIE09dGhpcy5nZW5lcmF0ZUlkKE4pK087aWYo dHlwZW9mIEJbTV09PSJ1bmRlZmluZWQiKXtyZXR1cm4gLTE7fWVsc2V7cmV0dXJu IEJbTV07fX0sdXNlTGVnYWN5RXZlbnQ6ZnVuY3Rpb24oTSxOKXtyZXR1cm4odGhp cy53ZWJraXQmJnRoaXMud2Via2l0PDQxOSYmKCJjbGljayI9PU58fCJkYmxjbGlj ayI9PU4pKTt9LHJlbW92ZUxpc3RlbmVyOmZ1bmN0aW9uKE4sTSxWKXt2YXIgUSxU LFg7aWYodHlwZW9mIE49PSJzdHJpbmciKXtOPXRoaXMuZ2V0RWwoTik7fWVsc2V7 aWYodGhpcy5faXNWYWxpZENvbGxlY3Rpb24oTikpe3ZhciBXPXRydWU7Zm9yKFE9 Ti5sZW5ndGgtMTtRPi0xO1EtLSl7Vz0odGhpcy5yZW1vdmVMaXN0ZW5lcihOW1Fd LE0sVikmJlcpO31yZXR1cm4gVzt9fWlmKCFWfHwhVi5jYWxsKXtyZXR1cm4gdGhp cy5wdXJnZUVsZW1lbnQoTixmYWxzZSxNKTt9aWYoInVubG9hZCI9PU0pe2ZvcihR PUoubGVuZ3RoLTE7UT4tMTtRLS0pe1g9SltRXTtpZihYJiZYWzBdPT1OJiZYWzFd PT1NJiZYWzJdPT1WKXtKLnNwbGljZShRLDEpO3JldHVybiB0cnVlO319cmV0dXJu IGZhbHNlO312YXIgUj1udWxsO3ZhciBTPWFyZ3VtZW50c1szXTtpZigidW5kZWZp bmVkIj09PXR5cGVvZiBTKXtTPXRoaXMuX2dldENhY2hlSW5kZXgoTixNLFYpO31p ZihTPj0wKXtSPUlbU107fWlmKCFOfHwhUil7cmV0dXJuIGZhbHNlO31pZih0aGlz LnVzZUxlZ2FjeUV2ZW50KE4sTSkpe3ZhciBQPXRoaXMuZ2V0TGVnYWN5SW5kZXgo TixNKTt2YXIgTz1FW1BdO2lmKE8pe2ZvcihRPTAsVD1PLmxlbmd0aDtRPFQ7KytR KXtYPU9bUV07aWYoWCYmWFt0aGlzLkVMXT09TiYmWFt0aGlzLlRZUEVdPT1NJiZY W3RoaXMuRk5dPT1WKXtPLnNwbGljZShRLDEpO2JyZWFrO319fX1lbHNle3RyeXt0 aGlzLl9zaW1wbGVSZW1vdmUoTixNLFJbdGhpcy5XRk5dLGZhbHNlKTt9Y2F0Y2go VSl7dGhpcy5sYXN0RXJyb3I9VTtyZXR1cm4gZmFsc2U7fX1kZWxldGUgSVtTXVt0 aGlzLldGTl07ZGVsZXRlIElbU11bdGhpcy5GTl07Ckkuc3BsaWNlKFMsMSk7cmV0 dXJuIHRydWU7fSxnZXRUYXJnZXQ6ZnVuY3Rpb24oTyxOKXt2YXIgTT1PLnRhcmdl dHx8Ty5zcmNFbGVtZW50O3JldHVybiB0aGlzLnJlc29sdmVUZXh0Tm9kZShNKTt9 LHJlc29sdmVUZXh0Tm9kZTpmdW5jdGlvbihOKXt0cnl7aWYoTiYmMz09Ti5ub2Rl VHlwZSl7cmV0dXJuIE4ucGFyZW50Tm9kZTt9fWNhdGNoKE0pe31yZXR1cm4gTjt9 LGdldFBhZ2VYOmZ1bmN0aW9uKE4pe3ZhciBNPU4ucGFnZVg7aWYoIU0mJjAhPT1N KXtNPU4uY2xpZW50WHx8MDtpZih0aGlzLmlzSUUpe00rPXRoaXMuX2dldFNjcm9s bExlZnQoKTt9fXJldHVybiBNO30sZ2V0UGFnZVk6ZnVuY3Rpb24oTSl7dmFyIE49 TS5wYWdlWTtpZighTiYmMCE9PU4pe049TS5jbGllbnRZfHwwO2lmKHRoaXMuaXNJ RSl7Tis9dGhpcy5fZ2V0U2Nyb2xsVG9wKCk7fX1yZXR1cm4gTjt9LGdldFhZOmZ1 bmN0aW9uKE0pe3JldHVyblt0aGlzLmdldFBhZ2VYKE0pLHRoaXMuZ2V0UGFnZVko TSldO30sZ2V0UmVsYXRlZFRhcmdldDpmdW5jdGlvbihOKXt2YXIgTT1OLnJlbGF0 ZWRUYXJnZXQ7aWYoIU0pe2lmKE4udHlwZT09Im1vdXNlb3V0Iil7TT1OLnRvRWxl bWVudDt9ZWxzZXtpZihOLnR5cGU9PSJtb3VzZW92ZXIiKXtNPU4uZnJvbUVsZW1l bnQ7fX19cmV0dXJuIHRoaXMucmVzb2x2ZVRleHROb2RlKE0pO30sZ2V0VGltZTpm dW5jdGlvbihPKXtpZighTy50aW1lKXt2YXIgTj1uZXcgRGF0ZSgpLmdldFRpbWUo KTt0cnl7Ty50aW1lPU47fWNhdGNoKE0pe3RoaXMubGFzdEVycm9yPU07cmV0dXJu IE47fX1yZXR1cm4gTy50aW1lO30sc3RvcEV2ZW50OmZ1bmN0aW9uKE0pe3RoaXMu c3RvcFByb3BhZ2F0aW9uKE0pO3RoaXMucHJldmVudERlZmF1bHQoTSk7fSxzdG9w UHJvcGFnYXRpb246ZnVuY3Rpb24oTSl7aWYoTS5zdG9wUHJvcGFnYXRpb24pe00u c3RvcFByb3BhZ2F0aW9uKCk7fWVsc2V7TS5jYW5jZWxCdWJibGU9dHJ1ZTt9fSxw cmV2ZW50RGVmYXVsdDpmdW5jdGlvbihNKXtpZihNLnByZXZlbnREZWZhdWx0KXtN LnByZXZlbnREZWZhdWx0KCk7fWVsc2V7TS5yZXR1cm5WYWx1ZT1mYWxzZTt9fSxn ZXRFdmVudDpmdW5jdGlvbihPLE0pe3ZhciBOPU98fHdpbmRvdy5ldmVudDtpZigh Til7dmFyIFA9dGhpcy5nZXRFdmVudC5jYWxsZXI7d2hpbGUoUCl7Tj1QLmFyZ3Vt ZW50c1swXTtpZihOJiZFdmVudD09Ti5jb25zdHJ1Y3Rvcil7YnJlYWs7fVA9UC5j YWxsZXI7fX1yZXR1cm4gTjt9LGdldENoYXJDb2RlOmZ1bmN0aW9uKE4pe3ZhciBN PU4ua2V5Q29kZXx8Ti5jaGFyQ29kZXx8MDtpZihZQUhPTy5lbnYudWEud2Via2l0 JiYoTSBpbiBEKSl7TT1EW01dO31yZXR1cm4gTTt9LF9nZXRDYWNoZUluZGV4OmZ1 bmN0aW9uKFEsUixQKXtmb3IodmFyIE89MCxOPUkubGVuZ3RoO088TjtPPU8rMSl7 dmFyIE09SVtPXTtpZihNJiZNW3RoaXMuRk5dPT1QJiZNW3RoaXMuRUxdPT1RJiZN W3RoaXMuVFlQRV09PVIpe3JldHVybiBPO319cmV0dXJuIC0xO30sZ2VuZXJhdGVJ ZDpmdW5jdGlvbihNKXt2YXIgTj1NLmlkO2lmKCFOKXtOPSJ5dWlldnRhdXRvaWQt IitBOysrQTtNLmlkPU47fXJldHVybiBOO30sX2lzVmFsaWRDb2xsZWN0aW9uOmZ1 bmN0aW9uKE4pe3RyeXtyZXR1cm4oTiYmdHlwZW9mIE4hPT0ic3RyaW5nIiYmTi5s ZW5ndGgmJiFOLnRhZ05hbWUmJiFOLmFsZXJ0JiZ0eXBlb2YgTlswXSE9PSJ1bmRl ZmluZWQiKTt9Y2F0Y2goTSl7cmV0dXJuIGZhbHNlO319LGVsQ2FjaGU6e30sZ2V0 RWw6ZnVuY3Rpb24oTSl7cmV0dXJuKHR5cGVvZiBNPT09InN0cmluZyIpP2RvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKE0pOk07fSxjbGVhckNhY2hlOmZ1bmN0aW9uKCl7 fSxET01SZWFkeUV2ZW50Om5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCJET01S ZWFkeSIsdGhpcyksX2xvYWQ6ZnVuY3Rpb24oTil7aWYoIUgpe0g9dHJ1ZTt2YXIg TT1ZQUhPTy51dGlsLkV2ZW50O00uX3JlYWR5KCk7TS5fdHJ5UHJlbG9hZEF0dGFj aCgpO319LF9yZWFkeTpmdW5jdGlvbihOKXt2YXIgTT1ZQUhPTy51dGlsLkV2ZW50 O2lmKCFNLkRPTVJlYWR5KXtNLkRPTVJlYWR5PXRydWU7TS5ET01SZWFkeUV2ZW50 LmZpcmUoKTtNLl9zaW1wbGVSZW1vdmUoZG9jdW1lbnQsIkRPTUNvbnRlbnRMb2Fk ZWQiLE0uX3JlYWR5KTt9fSxfdHJ5UHJlbG9hZEF0dGFjaDpmdW5jdGlvbigpe2lm KEYubGVuZ3RoPT09MCl7Qz0wO2lmKHRoaXMuX2ludGVydmFsKXtjbGVhckludGVy dmFsKHRoaXMuX2ludGVydmFsKTt0aGlzLl9pbnRlcnZhbD1udWxsO31yZXR1cm47 fWlmKHRoaXMubG9ja2VkKXtyZXR1cm47fWlmKHRoaXMuaXNJRSl7aWYoIXRoaXMu RE9NUmVhZHkpe3RoaXMuc3RhcnRJbnRlcnZhbCgpO3JldHVybjt9fXRoaXMubG9j a2VkPXRydWU7dmFyIFM9IUg7aWYoIVMpe1M9KEM+MCYmRi5sZW5ndGg+MCk7fXZh ciBSPVtdO3ZhciBUPWZ1bmN0aW9uKFYsVyl7dmFyIFU9VjtpZihXLm92ZXJyaWRl Q29udGV4dCl7aWYoVy5vdmVycmlkZUNvbnRleHQ9PT10cnVlKXtVPVcub2JqO31l bHNle1U9Vy5vdmVycmlkZUNvbnRleHQ7fX1XLmZuLmNhbGwoVSxXLm9iaik7fTt2 YXIgTixNLFEsUCxPPVtdO2ZvcihOPTAsTT1GLmxlbmd0aDtOPE07Tj1OKzEpe1E9 RltOXTtpZihRKXtQPXRoaXMuZ2V0RWwoUS5pZCk7aWYoUCl7aWYoUS5jaGVja1Jl YWR5KXtpZihIfHxQLm5leHRTaWJsaW5nfHwhUyl7Ty5wdXNoKFEpO0ZbTl09bnVs bDt9fWVsc2V7VChQLFEpO0ZbTl09bnVsbDt9fWVsc2V7Ui5wdXNoKFEpO319fWZv cihOPTAsTT1PLmxlbmd0aDtOPE07Tj1OKzEpe1E9T1tOXTtUKHRoaXMuZ2V0RWwo US5pZCksUSk7fUMtLTtpZihTKXtmb3IoTj1GLmxlbmd0aC0xO04+LTE7Ti0tKXtR PUZbTl07aWYoIVF8fCFRLmlkKXtGLnNwbGljZShOLDEpO319dGhpcy5zdGFydElu dGVydmFsKCk7fWVsc2V7aWYodGhpcy5faW50ZXJ2YWwpe2NsZWFySW50ZXJ2YWwo dGhpcy5faW50ZXJ2YWwpO3RoaXMuX2ludGVydmFsPW51bGw7fX10aGlzLmxvY2tl ZD1mYWxzZTt9LHB1cmdlRWxlbWVudDpmdW5jdGlvbihRLFIsVCl7dmFyIE89KFlB SE9PLmxhbmcuaXNTdHJpbmcoUSkpP3RoaXMuZ2V0RWwoUSk6UTt2YXIgUz10aGlz LmdldExpc3RlbmVycyhPLFQpLFAsTTtpZihTKXtmb3IoUD1TLmxlbmd0aC0xO1A+ LTE7UC0tKXt2YXIgTj1TW1BdO3RoaXMucmVtb3ZlTGlzdGVuZXIoTyxOLnR5cGUs Ti5mbik7fX1pZihSJiZPJiZPLmNoaWxkTm9kZXMpe2ZvcihQPTAsTT1PLmNoaWxk Tm9kZXMubGVuZ3RoO1A8TTsrK1Ape3RoaXMucHVyZ2VFbGVtZW50KE8uY2hpbGRO b2Rlc1tQXSxSLFQpO319fSxnZXRMaXN0ZW5lcnM6ZnVuY3Rpb24oTyxNKXt2YXIg Uj1bXSxOO2lmKCFNKXtOPVtJLEpdO31lbHNle2lmKE09PT0idW5sb2FkIil7Tj1b Sl07fWVsc2V7Tj1bSV07fX12YXIgVD0oWUFIT08ubGFuZy5pc1N0cmluZyhPKSk/ dGhpcy5nZXRFbChPKTpPO2Zvcih2YXIgUT0wO1E8Ti5sZW5ndGg7UT1RKzEpe3Zh ciBWPU5bUV07aWYoVil7Zm9yKHZhciBTPTAsVT1WLmxlbmd0aDtTPFU7KytTKXt2 YXIgUD1WW1NdO2lmKFAmJlBbdGhpcy5FTF09PT1UJiYoIU18fE09PT1QW3RoaXMu VFlQRV0pKXtSLnB1c2goe3R5cGU6UFt0aGlzLlRZUEVdLGZuOlBbdGhpcy5GTl0s b2JqOlBbdGhpcy5PQkpdLGFkanVzdDpQW3RoaXMuT1ZFUlJJREVdLHNjb3BlOlBb dGhpcy5BREpfU0NPUEVdLGluZGV4OlN9KTt9fX19cmV0dXJuKFIubGVuZ3RoKT9S Om51bGw7fSxfdW5sb2FkOmZ1bmN0aW9uKFQpe3ZhciBOPVlBSE9PLnV0aWwuRXZl bnQsUSxQLE8sUyxSLFU9Si5zbGljZSgpLE07Zm9yKFE9MCxTPUoubGVuZ3RoO1E8 UzsrK1Epe089VVtRXTtpZihPKXtNPXdpbmRvdztpZihPW04uQURKX1NDT1BFXSl7 aWYoT1tOLkFESl9TQ09QRV09PT10cnVlKXtNPU9bTi5VTkxPQURfT0JKXTt9ZWxz ZXtNPU9bTi5BREpfU0NPUEVdO319T1tOLkZOXS5jYWxsKE0sTi5nZXRFdmVudChU LE9bTi5FTF0pLE9bTi5VTkxPQURfT0JKXSk7VVtRXT1udWxsO319Tz1udWxsO009 bnVsbDtKPW51bGw7aWYoSSl7Zm9yKFA9SS5sZW5ndGgtMTtQPi0xO1AtLSl7Tz1J W1BdO2lmKE8pe04ucmVtb3ZlTGlzdGVuZXIoT1tOLkVMXSxPW04uVFlQRV0sT1tO LkZOXSxQKTt9fU89bnVsbDt9Rz1udWxsO04uX3NpbXBsZVJlbW92ZSh3aW5kb3cs InVubG9hZCIsTi5fdW5sb2FkKTt9LF9nZXRTY3JvbGxMZWZ0OmZ1bmN0aW9uKCl7 cmV0dXJuIHRoaXMuX2dldFNjcm9sbCgpWzFdO30sX2dldFNjcm9sbFRvcDpmdW5j dGlvbigpe3JldHVybiB0aGlzLl9nZXRTY3JvbGwoKVswXTt9LF9nZXRTY3JvbGw6 ZnVuY3Rpb24oKXt2YXIgTT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsTj1kb2N1 bWVudC5ib2R5O2lmKE0mJihNLnNjcm9sbFRvcHx8TS5zY3JvbGxMZWZ0KSl7cmV0 dXJuW00uc2Nyb2xsVG9wLE0uc2Nyb2xsTGVmdF07fWVsc2V7aWYoTil7cmV0dXJu W04uc2Nyb2xsVG9wLE4uc2Nyb2xsTGVmdF07fWVsc2V7cmV0dXJuWzAsMF07fX19 LHJlZ0NFOmZ1bmN0aW9uKCl7fSxfc2ltcGxlQWRkOmZ1bmN0aW9uKCl7aWYod2lu ZG93LmFkZEV2ZW50TGlzdGVuZXIpe3JldHVybiBmdW5jdGlvbihPLFAsTixNKXtP LmFkZEV2ZW50TGlzdGVuZXIoUCxOLChNKSk7fTt9ZWxzZXtpZih3aW5kb3cuYXR0 YWNoRXZlbnQpe3JldHVybiBmdW5jdGlvbihPLFAsTixNKXtPLmF0dGFjaEV2ZW50 KCJvbiIrUCxOKTt9O31lbHNle3JldHVybiBmdW5jdGlvbigpe307fX19KCksX3Np bXBsZVJlbW92ZTpmdW5jdGlvbigpe2lmKHdpbmRvdy5yZW1vdmVFdmVudExpc3Rl bmVyKXtyZXR1cm4gZnVuY3Rpb24oTyxQLE4sTSl7Ty5yZW1vdmVFdmVudExpc3Rl bmVyKFAsTiwoTSkpO307fWVsc2V7aWYod2luZG93LmRldGFjaEV2ZW50KXtyZXR1 cm4gZnVuY3Rpb24oTixPLE0pe04uZGV0YWNoRXZlbnQoIm9uIitPLE0pO307fWVs c2V7cmV0dXJuIGZ1bmN0aW9uKCl7fTt9fX0oKX07fSgpOyhmdW5jdGlvbigpe3Zh ciBFVT1ZQUhPTy51dGlsLkV2ZW50O0VVLm9uPUVVLmFkZExpc3RlbmVyO0VVLm9u Rm9jdXM9RVUuYWRkRm9jdXNMaXN0ZW5lcjtFVS5vbkJsdXI9RVUuYWRkQmx1ckxp c3RlbmVyOwovKiBET01SZWFkeTogYmFzZWQgb24gd29yayBieTogRGVhbiBFZHdh cmRzL0pvaG4gUmVzaWcvTWF0dGhpYXMgTWlsbGVyICovCmlmKEVVLmlzSUUpe1lB SE9PLnV0aWwuRXZlbnQub25ET01SZWFkeShZQUhPTy51dGlsLkV2ZW50Ll90cnlQ cmVsb2FkQXR0YWNoLFlBSE9PLnV0aWwuRXZlbnQsdHJ1ZSk7dmFyIG49ZG9jdW1l bnQuY3JlYXRlRWxlbWVudCgicCIpO0VVLl9kcmk9c2V0SW50ZXJ2YWwoZnVuY3Rp b24oKXt0cnl7bi5kb1Njcm9sbCgibGVmdCIpO2NsZWFySW50ZXJ2YWwoRVUuX2Ry aSk7RVUuX2RyaT1udWxsO0VVLl9yZWFkeSgpO249bnVsbDt9Y2F0Y2goZXgpe319 LEVVLlBPTExfSU5URVJWQUwpO31lbHNle2lmKEVVLndlYmtpdCYmRVUud2Via2l0 PDUyNSl7RVUuX2RyaT1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3ZhciBycz1kb2N1 bWVudC5yZWFkeVN0YXRlO2lmKCJsb2FkZWQiPT1yc3x8ImNvbXBsZXRlIj09cnMp e2NsZWFySW50ZXJ2YWwoRVUuX2RyaSk7RVUuX2RyaT1udWxsO0VVLl9yZWFkeSgp O319LEVVLlBPTExfSU5URVJWQUwpO31lbHNle0VVLl9zaW1wbGVBZGQoZG9jdW1l bnQsIkRPTUNvbnRlbnRMb2FkZWQiLEVVLl9yZWFkeSk7fX1FVS5fc2ltcGxlQWRk KHdpbmRvdywibG9hZCIsRVUuX2xvYWQpO0VVLl9zaW1wbGVBZGQod2luZG93LCJ1 bmxvYWQiLEVVLl91bmxvYWQpO0VVLl90cnlQcmVsb2FkQXR0YWNoKCk7fSkoKTt9 WUFIT08udXRpbC5FdmVudFByb3ZpZGVyPWZ1bmN0aW9uKCl7fTtZQUhPTy51dGls LkV2ZW50UHJvdmlkZXIucHJvdG90eXBlPXtfX3l1aV9ldmVudHM6bnVsbCxfX3l1 aV9zdWJzY3JpYmVyczpudWxsLHN1YnNjcmliZTpmdW5jdGlvbihBLEMsRixFKXt0 aGlzLl9feXVpX2V2ZW50cz10aGlzLl9feXVpX2V2ZW50c3x8e307dmFyIEQ9dGhp cy5fX3l1aV9ldmVudHNbQV07aWYoRCl7RC5zdWJzY3JpYmUoQyxGLEUpOwp9ZWxz ZXt0aGlzLl9feXVpX3N1YnNjcmliZXJzPXRoaXMuX195dWlfc3Vic2NyaWJlcnN8 fHt9O3ZhciBCPXRoaXMuX195dWlfc3Vic2NyaWJlcnM7aWYoIUJbQV0pe0JbQV09 W107fUJbQV0ucHVzaCh7Zm46QyxvYmo6RixvdmVycmlkZUNvbnRleHQ6RX0pO319 LHVuc3Vic2NyaWJlOmZ1bmN0aW9uKEMsRSxHKXt0aGlzLl9feXVpX2V2ZW50cz10 aGlzLl9feXVpX2V2ZW50c3x8e307dmFyIEE9dGhpcy5fX3l1aV9ldmVudHM7aWYo Qyl7dmFyIEY9QVtDXTtpZihGKXtyZXR1cm4gRi51bnN1YnNjcmliZShFLEcpO319 ZWxzZXt2YXIgQj10cnVlO2Zvcih2YXIgRCBpbiBBKXtpZihZQUhPTy5sYW5nLmhh c093blByb3BlcnR5KEEsRCkpe0I9QiYmQVtEXS51bnN1YnNjcmliZShFLEcpO319 cmV0dXJuIEI7fXJldHVybiBmYWxzZTt9LHVuc3Vic2NyaWJlQWxsOmZ1bmN0aW9u KEEpe3JldHVybiB0aGlzLnVuc3Vic2NyaWJlKEEpO30sY3JlYXRlRXZlbnQ6ZnVu Y3Rpb24oRyxEKXt0aGlzLl9feXVpX2V2ZW50cz10aGlzLl9feXVpX2V2ZW50c3x8 e307dmFyIEE9RHx8e307dmFyIEk9dGhpcy5fX3l1aV9ldmVudHM7aWYoSVtHXSl7 fWVsc2V7dmFyIEg9QS5zY29wZXx8dGhpczt2YXIgRT0oQS5zaWxlbnQpO3ZhciBC PW5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KEcsSCxFLFlBSE9PLnV0aWwuQ3Vz dG9tRXZlbnQuRkxBVCk7SVtHXT1CO2lmKEEub25TdWJzY3JpYmVDYWxsYmFjayl7 Qi5zdWJzY3JpYmVFdmVudC5zdWJzY3JpYmUoQS5vblN1YnNjcmliZUNhbGxiYWNr KTt9dGhpcy5fX3l1aV9zdWJzY3JpYmVycz10aGlzLl9feXVpX3N1YnNjcmliZXJz fHx7fTt2YXIgRj10aGlzLl9feXVpX3N1YnNjcmliZXJzW0ddO2lmKEYpe2Zvcih2 YXIgQz0wO0M8Ri5sZW5ndGg7KytDKXtCLnN1YnNjcmliZShGW0NdLmZuLEZbQ10u b2JqLEZbQ10ub3ZlcnJpZGVDb250ZXh0KTt9fX1yZXR1cm4gSVtHXTt9LGZpcmVF dmVudDpmdW5jdGlvbihFLEQsQSxDKXt0aGlzLl9feXVpX2V2ZW50cz10aGlzLl9f eXVpX2V2ZW50c3x8e307dmFyIEc9dGhpcy5fX3l1aV9ldmVudHNbRV07aWYoIUcp e3JldHVybiBudWxsO312YXIgQj1bXTtmb3IodmFyIEY9MTtGPGFyZ3VtZW50cy5s ZW5ndGg7KytGKXtCLnB1c2goYXJndW1lbnRzW0ZdKTt9cmV0dXJuIEcuZmlyZS5h cHBseShHLEIpO30saGFzRXZlbnQ6ZnVuY3Rpb24oQSl7aWYodGhpcy5fX3l1aV9l dmVudHMpe2lmKHRoaXMuX195dWlfZXZlbnRzW0FdKXtyZXR1cm4gdHJ1ZTt9fXJl dHVybiBmYWxzZTt9fTsoZnVuY3Rpb24oKXt2YXIgQT1ZQUhPTy51dGlsLkV2ZW50 LEM9WUFIT08ubGFuZztZQUhPTy51dGlsLktleUxpc3RlbmVyPWZ1bmN0aW9uKEQs SSxFLEYpe2lmKCFEKXt9ZWxzZXtpZighSSl7fWVsc2V7aWYoIUUpe319fWlmKCFG KXtGPVlBSE9PLnV0aWwuS2V5TGlzdGVuZXIuS0VZRE9XTjt9dmFyIEc9bmV3IFlB SE9PLnV0aWwuQ3VzdG9tRXZlbnQoImtleVByZXNzZWQiKTt0aGlzLmVuYWJsZWRF dmVudD1uZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgiZW5hYmxlZCIpO3RoaXMu ZGlzYWJsZWRFdmVudD1uZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgiZGlzYWJs ZWQiKTtpZihDLmlzU3RyaW5nKEQpKXtEPWRvY3VtZW50LmdldEVsZW1lbnRCeUlk KEQpO31pZihDLmlzRnVuY3Rpb24oRSkpe0cuc3Vic2NyaWJlKEUpO31lbHNle0cu c3Vic2NyaWJlKEUuZm4sRS5zY29wZSxFLmNvcnJlY3RTY29wZSk7fWZ1bmN0aW9u IEgoTyxOKXtpZighSS5zaGlmdCl7SS5zaGlmdD1mYWxzZTt9aWYoIUkuYWx0KXtJ LmFsdD1mYWxzZTt9aWYoIUkuY3RybCl7SS5jdHJsPWZhbHNlO31pZihPLnNoaWZ0 S2V5PT1JLnNoaWZ0JiZPLmFsdEtleT09SS5hbHQmJk8uY3RybEtleT09SS5jdHJs KXt2YXIgSixNPUkua2V5cyxMO2lmKFlBSE9PLmxhbmcuaXNBcnJheShNKSl7Zm9y KHZhciBLPTA7SzxNLmxlbmd0aDtLKyspe0o9TVtLXTtMPUEuZ2V0Q2hhckNvZGUo Tyk7aWYoSj09TCl7Ry5maXJlKEwsTyk7YnJlYWs7fX19ZWxzZXtMPUEuZ2V0Q2hh ckNvZGUoTyk7aWYoTT09TCl7Ry5maXJlKEwsTyk7fX19fXRoaXMuZW5hYmxlPWZ1 bmN0aW9uKCl7aWYoIXRoaXMuZW5hYmxlZCl7QS5vbihELEYsSCk7dGhpcy5lbmFi bGVkRXZlbnQuZmlyZShJKTt9dGhpcy5lbmFibGVkPXRydWU7fTt0aGlzLmRpc2Fi bGU9ZnVuY3Rpb24oKXtpZih0aGlzLmVuYWJsZWQpe0EucmVtb3ZlTGlzdGVuZXIo RCxGLEgpO3RoaXMuZGlzYWJsZWRFdmVudC5maXJlKEkpO310aGlzLmVuYWJsZWQ9 ZmFsc2U7fTt0aGlzLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIktleUxpc3Rl bmVyIFsiK0kua2V5cysiXSAiK0QudGFnTmFtZSsoRC5pZD8iWyIrRC5pZCsiXSI6 IiIpO307fTt2YXIgQj1ZQUhPTy51dGlsLktleUxpc3RlbmVyO0IuS0VZRE9XTj0i a2V5ZG93biI7Qi5LRVlVUD0ia2V5dXAiO0IuS0VZPXtBTFQ6MTgsQkFDS19TUEFD RTo4LENBUFNfTE9DSzoyMCxDT05UUk9MOjE3LERFTEVURTo0NixET1dOOjQwLEVO RDozNSxFTlRFUjoxMyxFU0NBUEU6MjcsSE9NRTozNixMRUZUOjM3LE1FVEE6MjI0 LE5VTV9MT0NLOjE0NCxQQUdFX0RPV046MzQsUEFHRV9VUDozMyxQQVVTRToxOSxQ UklOVFNDUkVFTjo0NCxSSUdIVDozOSxTQ1JPTExfTE9DSzoxNDUsU0hJRlQ6MTYs U1BBQ0U6MzIsVEFCOjksVVA6Mzh9O30pKCk7WUFIT08ucmVnaXN0ZXIoImV2ZW50 IixZQUhPTy51dGlsLkV2ZW50LHt2ZXJzaW9uOiIyLjcuMCIsYnVpbGQ6IjE3OTYi fSk7WUFIT08udXRpbC5Db25uZWN0PXtfbXN4bWxfcHJvZ2lkOlsiTWljcm9zb2Z0 LlhNTEhUVFAiLCJNU1hNTDIuWE1MSFRUUC4zLjAiLCJNU1hNTDIuWE1MSFRUUCJd LF9odHRwX2hlYWRlcnM6e30sX2hhc19odHRwX2hlYWRlcnM6ZmFsc2UsX3VzZV9k ZWZhdWx0X3Bvc3RfaGVhZGVyOnRydWUsX2RlZmF1bHRfcG9zdF9oZWFkZXI6ImFw cGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCIs X2RlZmF1bHRfZm9ybV9oZWFkZXI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJs ZW5jb2RlZCIsX3VzZV9kZWZhdWx0X3hocl9oZWFkZXI6dHJ1ZSxfZGVmYXVsdF94 aHJfaGVhZGVyOiJYTUxIdHRwUmVxdWVzdCIsX2hhc19kZWZhdWx0X2hlYWRlcnM6 dHJ1ZSxfZGVmYXVsdF9oZWFkZXJzOnt9LF9pc0Zvcm1TdWJtaXQ6ZmFsc2UsX2lz RmlsZVVwbG9hZDpmYWxzZSxfZm9ybU5vZGU6bnVsbCxfc0Zvcm1EYXRhOm51bGws X3BvbGw6e30sX3RpbWVPdXQ6e30sX3BvbGxpbmdfaW50ZXJ2YWw6NTAsX3RyYW5z YWN0aW9uX2lkOjAsX3N1Ym1pdEVsZW1lbnRWYWx1ZTpudWxsLF9oYXNTdWJtaXRM aXN0ZW5lcjooZnVuY3Rpb24oKXtpZihZQUhPTy51dGlsLkV2ZW50KXtZQUhPTy51 dGlsLkV2ZW50LmFkZExpc3RlbmVyKGRvY3VtZW50LCJjbGljayIsZnVuY3Rpb24o Qyl7dmFyIEI9WUFIT08udXRpbC5FdmVudC5nZXRUYXJnZXQoQyksQT1CLm5vZGVO YW1lLnRvTG93ZXJDYXNlKCk7aWYoKEE9PT0iaW5wdXQifHxBPT09ImJ1dHRvbiIp JiYoQi50eXBlJiZCLnR5cGUudG9Mb3dlckNhc2UoKT09InN1Ym1pdCIpKXtZQUhP Ty51dGlsLkNvbm5lY3QuX3N1Ym1pdEVsZW1lbnRWYWx1ZT1lbmNvZGVVUklDb21w b25lbnQoQi5uYW1lKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KEIudmFsdWUpO319 KTtyZXR1cm4gdHJ1ZTt9cmV0dXJuIGZhbHNlO30pKCksc3RhcnRFdmVudDpuZXcg WUFIT08udXRpbC5DdXN0b21FdmVudCgic3RhcnQiKSxjb21wbGV0ZUV2ZW50Om5l dyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCJjb21wbGV0ZSIpLHN1Y2Nlc3NFdmVu dDpuZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgic3VjY2VzcyIpLGZhaWx1cmVF dmVudDpuZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgiZmFpbHVyZSIpLHVwbG9h ZEV2ZW50Om5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCJ1cGxvYWQiKSxhYm9y dEV2ZW50Om5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCJhYm9ydCIpLF9jdXN0 b21FdmVudHM6e29uU3RhcnQ6WyJzdGFydEV2ZW50Iiwic3RhcnQiXSxvbkNvbXBs ZXRlOlsiY29tcGxldGVFdmVudCIsImNvbXBsZXRlIl0sb25TdWNjZXNzOlsic3Vj Y2Vzc0V2ZW50Iiwic3VjY2VzcyJdLG9uRmFpbHVyZTpbImZhaWx1cmVFdmVudCIs ImZhaWx1cmUiXSxvblVwbG9hZDpbInVwbG9hZEV2ZW50IiwidXBsb2FkIl0sb25B Ym9ydDpbImFib3J0RXZlbnQiLCJhYm9ydCJdfSxzZXRQcm9nSWQ6ZnVuY3Rpb24o QSl7dGhpcy5fbXN4bWxfcHJvZ2lkLnVuc2hpZnQoQSk7fSxzZXREZWZhdWx0UG9z dEhlYWRlcjpmdW5jdGlvbihBKXtpZih0eXBlb2YgQT09InN0cmluZyIpe3RoaXMu X2RlZmF1bHRfcG9zdF9oZWFkZXI9QTt9ZWxzZXtpZih0eXBlb2YgQT09ImJvb2xl YW4iKXt0aGlzLl91c2VfZGVmYXVsdF9wb3N0X2hlYWRlcj1BO319fSxzZXREZWZh dWx0WGhySGVhZGVyOmZ1bmN0aW9uKEEpe2lmKHR5cGVvZiBBPT0ic3RyaW5nIil7 dGhpcy5fZGVmYXVsdF94aHJfaGVhZGVyPUE7fWVsc2V7dGhpcy5fdXNlX2RlZmF1 bHRfeGhyX2hlYWRlcj1BO319LHNldFBvbGxpbmdJbnRlcnZhbDpmdW5jdGlvbihB KXtpZih0eXBlb2YgQT09Im51bWJlciImJmlzRmluaXRlKEEpKXt0aGlzLl9wb2xs aW5nX2ludGVydmFsPUE7fX0sY3JlYXRlWGhyT2JqZWN0OmZ1bmN0aW9uKEYpe3Zh ciBFLEE7dHJ5e0E9bmV3IFhNTEh0dHBSZXF1ZXN0KCk7RT17Y29ubjpBLHRJZDpG fTt9Y2F0Y2goRCl7Zm9yKHZhciBCPTA7Qjx0aGlzLl9tc3htbF9wcm9naWQubGVu Z3RoOysrQil7dHJ5e0E9bmV3IEFjdGl2ZVhPYmplY3QodGhpcy5fbXN4bWxfcHJv Z2lkW0JdKTtFPXtjb25uOkEsdElkOkZ9O2JyZWFrO31jYXRjaChDKXt9fX1maW5h bGx5e3JldHVybiBFO319LGdldENvbm5lY3Rpb25PYmplY3Q6ZnVuY3Rpb24oQSl7 dmFyIEM7dmFyIEQ9dGhpcy5fdHJhbnNhY3Rpb25faWQ7dHJ5e2lmKCFBKXtDPXRo aXMuY3JlYXRlWGhyT2JqZWN0KEQpO31lbHNle0M9e307Qy50SWQ9RDtDLmlzVXBs b2FkPXRydWU7fWlmKEMpe3RoaXMuX3RyYW5zYWN0aW9uX2lkKys7fX1jYXRjaChC KXt9ZmluYWxseXtyZXR1cm4gQzt9fSxhc3luY1JlcXVlc3Q6ZnVuY3Rpb24oRixD LEUsQSl7dmFyIEQ9KHRoaXMuX2lzRmlsZVVwbG9hZCk/dGhpcy5nZXRDb25uZWN0 aW9uT2JqZWN0KHRydWUpOnRoaXMuZ2V0Q29ubmVjdGlvbk9iamVjdCgpO3ZhciBC PShFJiZFLmFyZ3VtZW50KT9FLmFyZ3VtZW50Om51bGw7aWYoIUQpe3JldHVybiBu dWxsO31lbHNle2lmKEUmJkUuY3VzdG9tZXZlbnRzKXt0aGlzLmluaXRDdXN0b21F dmVudHMoRCxFKTt9aWYodGhpcy5faXNGb3JtU3VibWl0KXtpZih0aGlzLl9pc0Zp bGVVcGxvYWQpe3RoaXMudXBsb2FkRmlsZShELEUsQyxBKTtyZXR1cm4gRDt9aWYo Ri50b1VwcGVyQ2FzZSgpPT0iR0VUIil7aWYodGhpcy5fc0Zvcm1EYXRhLmxlbmd0 aCE9PTApe0MrPSgoQy5pbmRleE9mKCI/Iik9PS0xKT8iPyI6IiYiKSt0aGlzLl9z Rm9ybURhdGE7fX1lbHNle2lmKEYudG9VcHBlckNhc2UoKT09IlBPU1QiKXtBPUE/ dGhpcy5fc0Zvcm1EYXRhKyImIitBOnRoaXMuX3NGb3JtRGF0YTt9fX1pZihGLnRv VXBwZXJDYXNlKCk9PSJHRVQiJiYoRSYmRS5jYWNoZT09PWZhbHNlKSl7Qys9KChD LmluZGV4T2YoIj8iKT09LTEpPyI/IjoiJiIpKyJybmQ9IituZXcgRGF0ZSgpLnZh bHVlT2YoKS50b1N0cmluZygpO31ELmNvbm4ub3BlbihGLEMsdHJ1ZSk7aWYodGhp cy5fdXNlX2RlZmF1bHRfeGhyX2hlYWRlcil7aWYoIXRoaXMuX2RlZmF1bHRfaGVh ZGVyc1siWC1SZXF1ZXN0ZWQtV2l0aCJdKXt0aGlzLmluaXRIZWFkZXIoIlgtUmVx dWVzdGVkLVdpdGgiLHRoaXMuX2RlZmF1bHRfeGhyX2hlYWRlcix0cnVlKTt9fWlm KChGLnRvVXBwZXJDYXNlKCk9PT0iUE9TVCImJnRoaXMuX3VzZV9kZWZhdWx0X3Bv c3RfaGVhZGVyKSYmdGhpcy5faXNGb3JtU3VibWl0PT09ZmFsc2Upe3RoaXMuaW5p dEhlYWRlcigiQ29udGVudC1UeXBlIix0aGlzLl9kZWZhdWx0X3Bvc3RfaGVhZGVy KTt9aWYodGhpcy5faGFzX2RlZmF1bHRfaGVhZGVyc3x8dGhpcy5faGFzX2h0dHBf aGVhZGVycyl7dGhpcy5zZXRIZWFkZXIoRCk7fXRoaXMuaGFuZGxlUmVhZHlTdGF0 ZShELEUpO0QuY29ubi5zZW5kKEF8fCIiKTtpZih0aGlzLl9pc0Zvcm1TdWJtaXQ9 PT10cnVlKXt0aGlzLnJlc2V0Rm9ybVN0YXRlKCk7fXRoaXMuc3RhcnRFdmVudC5m aXJlKEQsQik7aWYoRC5zdGFydEV2ZW50KXtELnN0YXJ0RXZlbnQuZmlyZShELEIp O31yZXR1cm4gRDt9fSxpbml0Q3VzdG9tRXZlbnRzOmZ1bmN0aW9uKEEsQyl7dmFy IEI7Zm9yKEIgaW4gQy5jdXN0b21ldmVudHMpe2lmKHRoaXMuX2N1c3RvbUV2ZW50 c1tCXVswXSl7QVt0aGlzLl9jdXN0b21FdmVudHNbQl1bMF1dPW5ldyBZQUhPTy51 dGlsLkN1c3RvbUV2ZW50KHRoaXMuX2N1c3RvbUV2ZW50c1tCXVsxXSwoQy5zY29w ZSk/Qy5zY29wZTpudWxsKTtBW3RoaXMuX2N1c3RvbUV2ZW50c1tCXVswXV0uc3Vi c2NyaWJlKEMuY3VzdG9tZXZlbnRzW0JdKTt9fX0saGFuZGxlUmVhZHlTdGF0ZTpm dW5jdGlvbihDLEQpe3ZhciBCPXRoaXM7dmFyIEE9KEQmJkQuYXJndW1lbnQpP0Qu YXJndW1lbnQ6bnVsbDtpZihEJiZELnRpbWVvdXQpe3RoaXMuX3RpbWVPdXRbQy50 SWRdPXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Qi5hYm9ydChDLEQsdHJ1 ZSk7fSxELnRpbWVvdXQpO310aGlzLl9wb2xsW0MudElkXT13aW5kb3cuc2V0SW50 ZXJ2YWwoZnVuY3Rpb24oKXtpZihDLmNvbm4mJkMuY29ubi5yZWFkeVN0YXRlPT09 NCl7d2luZG93LmNsZWFySW50ZXJ2YWwoQi5fcG9sbFtDLnRJZF0pO2RlbGV0ZSBC Ll9wb2xsW0MudElkXTtpZihEJiZELnRpbWVvdXQpe3dpbmRvdy5jbGVhclRpbWVv dXQoQi5fdGltZU91dFtDLnRJZF0pO2RlbGV0ZSBCLl90aW1lT3V0W0MudElkXTt9 Qi5jb21wbGV0ZUV2ZW50LmZpcmUoQyxBKTtpZihDLmNvbXBsZXRlRXZlbnQpe0Mu Y29tcGxldGVFdmVudC5maXJlKEMsQSk7fUIuaGFuZGxlVHJhbnNhY3Rpb25SZXNw b25zZShDLEQpO319LHRoaXMuX3BvbGxpbmdfaW50ZXJ2YWwpO30saGFuZGxlVHJh bnNhY3Rpb25SZXNwb25zZTpmdW5jdGlvbihGLEcsQSl7dmFyIEQsQzt2YXIgQj0o RyYmRy5hcmd1bWVudCk/Ry5hcmd1bWVudDpudWxsO3RyeXtpZihGLmNvbm4uc3Rh dHVzIT09dW5kZWZpbmVkJiZGLmNvbm4uc3RhdHVzIT09MCl7RD1GLmNvbm4uc3Rh dHVzO31lbHNle0Q9MTMwMzA7fX1jYXRjaChFKXtEPTEzMDMwO31pZihEPj0yMDAm JkQ8MzAwfHxEPT09MTIyMyl7Qz10aGlzLmNyZWF0ZVJlc3BvbnNlT2JqZWN0KEYs Qik7aWYoRyYmRy5zdWNjZXNzKXtpZighRy5zY29wZSl7Ry5zdWNjZXNzKEMpO31l bHNle0cuc3VjY2Vzcy5hcHBseShHLnNjb3BlLFtDXSk7fX10aGlzLnN1Y2Nlc3NF dmVudC5maXJlKEMpO2lmKEYuc3VjY2Vzc0V2ZW50KXtGLnN1Y2Nlc3NFdmVudC5m aXJlKEMpO319ZWxzZXtzd2l0Y2goRCl7Y2FzZSAxMjAwMjpjYXNlIDEyMDI5OmNh c2UgMTIwMzA6Y2FzZSAxMjAzMTpjYXNlIDEyMTUyOmNhc2UgMTMwMzA6Qz10aGlz LmNyZWF0ZUV4Y2VwdGlvbk9iamVjdChGLnRJZCxCLChBP0E6ZmFsc2UpKTtpZihH JiZHLmZhaWx1cmUpe2lmKCFHLnNjb3BlKXtHLmZhaWx1cmUoQyk7fWVsc2V7Ry5m YWlsdXJlLmFwcGx5KEcuc2NvcGUsW0NdKTt9fWJyZWFrO2RlZmF1bHQ6Qz10aGlz LmNyZWF0ZVJlc3BvbnNlT2JqZWN0KEYsQik7aWYoRyYmRy5mYWlsdXJlKXtpZigh Ry5zY29wZSl7Ry5mYWlsdXJlKEMpO31lbHNle0cuZmFpbHVyZS5hcHBseShHLnNj b3BlLFtDXSk7fX19dGhpcy5mYWlsdXJlRXZlbnQuZmlyZShDKTtpZihGLmZhaWx1 cmVFdmVudCl7Ri5mYWlsdXJlRXZlbnQuZmlyZShDKTt9fXRoaXMucmVsZWFzZU9i amVjdChGKTtDPW51bGw7fSxjcmVhdGVSZXNwb25zZU9iamVjdDpmdW5jdGlvbihB LEcpe3ZhciBEPXt9O3ZhciBJPXt9O3RyeXt2YXIgQz1BLmNvbm4uZ2V0QWxsUmVz cG9uc2VIZWFkZXJzKCk7dmFyIEY9Qy5zcGxpdCgiXG4iKTtmb3IodmFyIEU9MDtF PEYubGVuZ3RoO0UrKyl7dmFyIEI9RltFXS5pbmRleE9mKCI6Iik7aWYoQiE9LTEp e0lbRltFXS5zdWJzdHJpbmcoMCxCKV09RltFXS5zdWJzdHJpbmcoQisyKTt9fX1j YXRjaChIKXt9RC50SWQ9QS50SWQ7RC5zdGF0dXM9KEEuY29ubi5zdGF0dXM9PTEy MjMpPzIwNDpBLmNvbm4uc3RhdHVzO0Quc3RhdHVzVGV4dD0oQS5jb25uLnN0YXR1 cz09MTIyMyk/Ik5vIENvbnRlbnQiOkEuY29ubi5zdGF0dXNUZXh0O0QuZ2V0UmVz cG9uc2VIZWFkZXI9STtELmdldEFsbFJlc3BvbnNlSGVhZGVycz1DO0QucmVzcG9u c2VUZXh0PUEuY29ubi5yZXNwb25zZVRleHQ7RC5yZXNwb25zZVhNTD1BLmNvbm4u cmVzcG9uc2VYTUw7aWYoRyl7RC5hcmd1bWVudD1HO31yZXR1cm4gRDt9LGNyZWF0 ZUV4Y2VwdGlvbk9iamVjdDpmdW5jdGlvbihILEQsQSl7dmFyIEY9MDt2YXIgRz0i Y29tbXVuaWNhdGlvbiBmYWlsdXJlIjt2YXIgQz0tMTt2YXIgQj0idHJhbnNhY3Rp b24gYWJvcnRlZCI7dmFyIEU9e307RS50SWQ9SDtpZihBKXtFLnN0YXR1cz1DO0Uu c3RhdHVzVGV4dD1CO31lbHNle0Uuc3RhdHVzPUY7RS5zdGF0dXNUZXh0PUc7fWlm KEQpe0UuYXJndW1lbnQ9RDt9cmV0dXJuIEU7fSxpbml0SGVhZGVyOmZ1bmN0aW9u KEEsRCxDKXt2YXIgQj0oQyk/dGhpcy5fZGVmYXVsdF9oZWFkZXJzOnRoaXMuX2h0 dHBfaGVhZGVycztCW0FdPUQ7aWYoQyl7dGhpcy5faGFzX2RlZmF1bHRfaGVhZGVy cz10cnVlOwp9ZWxzZXt0aGlzLl9oYXNfaHR0cF9oZWFkZXJzPXRydWU7fX0sc2V0 SGVhZGVyOmZ1bmN0aW9uKEEpe3ZhciBCO2lmKHRoaXMuX2hhc19kZWZhdWx0X2hl YWRlcnMpe2ZvcihCIGluIHRoaXMuX2RlZmF1bHRfaGVhZGVycyl7aWYoWUFIT08u bGFuZy5oYXNPd25Qcm9wZXJ0eSh0aGlzLl9kZWZhdWx0X2hlYWRlcnMsQikpe0Eu Y29ubi5zZXRSZXF1ZXN0SGVhZGVyKEIsdGhpcy5fZGVmYXVsdF9oZWFkZXJzW0Jd KTt9fX1pZih0aGlzLl9oYXNfaHR0cF9oZWFkZXJzKXtmb3IoQiBpbiB0aGlzLl9o dHRwX2hlYWRlcnMpe2lmKFlBSE9PLmxhbmcuaGFzT3duUHJvcGVydHkodGhpcy5f aHR0cF9oZWFkZXJzLEIpKXtBLmNvbm4uc2V0UmVxdWVzdEhlYWRlcihCLHRoaXMu X2h0dHBfaGVhZGVyc1tCXSk7fX1kZWxldGUgdGhpcy5faHR0cF9oZWFkZXJzO3Ro aXMuX2h0dHBfaGVhZGVycz17fTt0aGlzLl9oYXNfaHR0cF9oZWFkZXJzPWZhbHNl O319LHJlc2V0RGVmYXVsdEhlYWRlcnM6ZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5f ZGVmYXVsdF9oZWFkZXJzO3RoaXMuX2RlZmF1bHRfaGVhZGVycz17fTt0aGlzLl9o YXNfZGVmYXVsdF9oZWFkZXJzPWZhbHNlO30sc2V0Rm9ybTpmdW5jdGlvbihNLEgs Qyl7dmFyIEwsQixLLEksUCxKPWZhbHNlLEY9W10sTz0wLEUsRyxELE4sQTt0aGlz LnJlc2V0Rm9ybVN0YXRlKCk7aWYodHlwZW9mIE09PSJzdHJpbmciKXtMPShkb2N1 bWVudC5nZXRFbGVtZW50QnlJZChNKXx8ZG9jdW1lbnQuZm9ybXNbTV0pO31lbHNl e2lmKHR5cGVvZiBNPT0ib2JqZWN0Iil7TD1NO31lbHNle3JldHVybjt9fWlmKEgp e3RoaXMuY3JlYXRlRnJhbWUoQz9DOm51bGwpO3RoaXMuX2lzRm9ybVN1Ym1pdD10 cnVlO3RoaXMuX2lzRmlsZVVwbG9hZD10cnVlO3RoaXMuX2Zvcm1Ob2RlPUw7cmV0 dXJuO31mb3IoRT0wLEc9TC5lbGVtZW50cy5sZW5ndGg7RTxHOysrRSl7Qj1MLmVs ZW1lbnRzW0VdO1A9Qi5kaXNhYmxlZDtLPUIubmFtZTtpZighUCYmSyl7Sz1lbmNv ZGVVUklDb21wb25lbnQoSykrIj0iO0k9ZW5jb2RlVVJJQ29tcG9uZW50KEIudmFs dWUpO3N3aXRjaChCLnR5cGUpe2Nhc2Uic2VsZWN0LW9uZSI6aWYoQi5zZWxlY3Rl ZEluZGV4Pi0xKXtBPUIub3B0aW9uc1tCLnNlbGVjdGVkSW5kZXhdO0ZbTysrXT1L K2VuY29kZVVSSUNvbXBvbmVudCgoQS5hdHRyaWJ1dGVzLnZhbHVlJiZBLmF0dHJp YnV0ZXMudmFsdWUuc3BlY2lmaWVkKT9BLnZhbHVlOkEudGV4dCk7fWJyZWFrO2Nh c2Uic2VsZWN0LW11bHRpcGxlIjppZihCLnNlbGVjdGVkSW5kZXg+LTEpe2ZvcihE PUIuc2VsZWN0ZWRJbmRleCxOPUIub3B0aW9ucy5sZW5ndGg7RDxOOysrRCl7QT1C Lm9wdGlvbnNbRF07aWYoQS5zZWxlY3RlZCl7RltPKytdPUsrZW5jb2RlVVJJQ29t cG9uZW50KChBLmF0dHJpYnV0ZXMudmFsdWUmJkEuYXR0cmlidXRlcy52YWx1ZS5z cGVjaWZpZWQpP0EudmFsdWU6QS50ZXh0KTt9fX1icmVhaztjYXNlInJhZGlvIjpj YXNlImNoZWNrYm94IjppZihCLmNoZWNrZWQpe0ZbTysrXT1LK0k7fWJyZWFrO2Nh c2UiZmlsZSI6Y2FzZSB1bmRlZmluZWQ6Y2FzZSJyZXNldCI6Y2FzZSJidXR0b24i OmJyZWFrO2Nhc2Uic3VibWl0IjppZihKPT09ZmFsc2Upe2lmKHRoaXMuX2hhc1N1 Ym1pdExpc3RlbmVyJiZ0aGlzLl9zdWJtaXRFbGVtZW50VmFsdWUpe0ZbTysrXT10 aGlzLl9zdWJtaXRFbGVtZW50VmFsdWU7fUo9dHJ1ZTt9YnJlYWs7ZGVmYXVsdDpG W08rK109SytJO319fXRoaXMuX2lzRm9ybVN1Ym1pdD10cnVlO3RoaXMuX3NGb3Jt RGF0YT1GLmpvaW4oIiYiKTt0aGlzLmluaXRIZWFkZXIoIkNvbnRlbnQtVHlwZSIs dGhpcy5fZGVmYXVsdF9mb3JtX2hlYWRlcik7cmV0dXJuIHRoaXMuX3NGb3JtRGF0 YTt9LHJlc2V0Rm9ybVN0YXRlOmZ1bmN0aW9uKCl7dGhpcy5faXNGb3JtU3VibWl0 PWZhbHNlO3RoaXMuX2lzRmlsZVVwbG9hZD1mYWxzZTt0aGlzLl9mb3JtTm9kZT1u dWxsO3RoaXMuX3NGb3JtRGF0YT0iIjt9LGNyZWF0ZUZyYW1lOmZ1bmN0aW9uKEEp e3ZhciBCPSJ5dWlJTyIrdGhpcy5fdHJhbnNhY3Rpb25faWQ7dmFyIEM7aWYoWUFI T08uZW52LnVhLmllKXtDPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJzxpZnJhbWUg aWQ9IicrQisnIiBuYW1lPSInK0IrJyIgLz4nKTtpZih0eXBlb2YgQT09ImJvb2xl YW4iKXtDLnNyYz0iamF2YXNjcmlwdDpmYWxzZSI7fX1lbHNle0M9ZG9jdW1lbnQu Y3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Qy5pZD1CO0MubmFtZT1CO31DLnN0eWxl LnBvc2l0aW9uPSJhYnNvbHV0ZSI7Qy5zdHlsZS50b3A9Ii0xMDAwcHgiO0Muc3R5 bGUubGVmdD0iLTEwMDBweCI7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChDKTt9 LGFwcGVuZFBvc3REYXRhOmZ1bmN0aW9uKEEpe3ZhciBEPVtdLEI9QS5zcGxpdCgi JiIpLEMsRTtmb3IoQz0wO0M8Qi5sZW5ndGg7QysrKXtFPUJbQ10uaW5kZXhPZigi PSIpO2lmKEUhPS0xKXtEW0NdPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0 Iik7RFtDXS50eXBlPSJoaWRkZW4iO0RbQ10ubmFtZT1kZWNvZGVVUklDb21wb25l bnQoQltDXS5zdWJzdHJpbmcoMCxFKSk7RFtDXS52YWx1ZT1kZWNvZGVVUklDb21w b25lbnQoQltDXS5zdWJzdHJpbmcoRSsxKSk7dGhpcy5fZm9ybU5vZGUuYXBwZW5k Q2hpbGQoRFtDXSk7fX1yZXR1cm4gRDt9LHVwbG9hZEZpbGU6ZnVuY3Rpb24oRCxO LEUsQyl7dmFyIEk9Inl1aUlPIitELnRJZCxKPSJtdWx0aXBhcnQvZm9ybS1kYXRh IixMPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKEkpLE89dGhpcyxLPShOJiZOLmFy Z3VtZW50KT9OLmFyZ3VtZW50Om51bGwsTSxILEIsRzt2YXIgQT17YWN0aW9uOnRo aXMuX2Zvcm1Ob2RlLmdldEF0dHJpYnV0ZSgiYWN0aW9uIiksbWV0aG9kOnRoaXMu X2Zvcm1Ob2RlLmdldEF0dHJpYnV0ZSgibWV0aG9kIiksdGFyZ2V0OnRoaXMuX2Zv cm1Ob2RlLmdldEF0dHJpYnV0ZSgidGFyZ2V0Iil9O3RoaXMuX2Zvcm1Ob2RlLnNl dEF0dHJpYnV0ZSgiYWN0aW9uIixFKTt0aGlzLl9mb3JtTm9kZS5zZXRBdHRyaWJ1 dGUoIm1ldGhvZCIsIlBPU1QiKTt0aGlzLl9mb3JtTm9kZS5zZXRBdHRyaWJ1dGUo InRhcmdldCIsSSk7aWYoWUFIT08uZW52LnVhLmllKXt0aGlzLl9mb3JtTm9kZS5z ZXRBdHRyaWJ1dGUoImVuY29kaW5nIixKKTt9ZWxzZXt0aGlzLl9mb3JtTm9kZS5z ZXRBdHRyaWJ1dGUoImVuY3R5cGUiLEopO31pZihDKXtNPXRoaXMuYXBwZW5kUG9z dERhdGEoQyk7fXRoaXMuX2Zvcm1Ob2RlLnN1Ym1pdCgpO3RoaXMuc3RhcnRFdmVu dC5maXJlKEQsSyk7aWYoRC5zdGFydEV2ZW50KXtELnN0YXJ0RXZlbnQuZmlyZShE LEspO31pZihOJiZOLnRpbWVvdXQpe3RoaXMuX3RpbWVPdXRbRC50SWRdPXdpbmRv dy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Ty5hYm9ydChELE4sdHJ1ZSk7fSxOLnRp bWVvdXQpO31pZihNJiZNLmxlbmd0aD4wKXtmb3IoSD0wO0g8TS5sZW5ndGg7SCsr KXt0aGlzLl9mb3JtTm9kZS5yZW1vdmVDaGlsZChNW0hdKTt9fWZvcihCIGluIEEp e2lmKFlBSE9PLmxhbmcuaGFzT3duUHJvcGVydHkoQSxCKSl7aWYoQVtCXSl7dGhp cy5fZm9ybU5vZGUuc2V0QXR0cmlidXRlKEIsQVtCXSk7fWVsc2V7dGhpcy5fZm9y bU5vZGUucmVtb3ZlQXR0cmlidXRlKEIpO319fXRoaXMucmVzZXRGb3JtU3RhdGUo KTt2YXIgRj1mdW5jdGlvbigpe2lmKE4mJk4udGltZW91dCl7d2luZG93LmNsZWFy VGltZW91dChPLl90aW1lT3V0W0QudElkXSk7ZGVsZXRlIE8uX3RpbWVPdXRbRC50 SWRdO31PLmNvbXBsZXRlRXZlbnQuZmlyZShELEspO2lmKEQuY29tcGxldGVFdmVu dCl7RC5jb21wbGV0ZUV2ZW50LmZpcmUoRCxLKTt9Rz17dElkOkQudElkLGFyZ3Vt ZW50Ok4uYXJndW1lbnR9O3RyeXtHLnJlc3BvbnNlVGV4dD1MLmNvbnRlbnRXaW5k b3cuZG9jdW1lbnQuYm9keT9MLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuYm9keS5p bm5lckhUTUw6TC5jb250ZW50V2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVu dC50ZXh0Q29udGVudDtHLnJlc3BvbnNlWE1MPUwuY29udGVudFdpbmRvdy5kb2N1 bWVudC5YTUxEb2N1bWVudD9MLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuWE1MRG9j dW1lbnQ6TC5jb250ZW50V2luZG93LmRvY3VtZW50O31jYXRjaChQKXt9aWYoTiYm Ti51cGxvYWQpe2lmKCFOLnNjb3BlKXtOLnVwbG9hZChHKTt9ZWxzZXtOLnVwbG9h ZC5hcHBseShOLnNjb3BlLFtHXSk7fX1PLnVwbG9hZEV2ZW50LmZpcmUoRyk7aWYo RC51cGxvYWRFdmVudCl7RC51cGxvYWRFdmVudC5maXJlKEcpO31ZQUhPTy51dGls LkV2ZW50LnJlbW92ZUxpc3RlbmVyKEwsImxvYWQiLEYpO3NldFRpbWVvdXQoZnVu Y3Rpb24oKXtkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKEwpO08ucmVsZWFzZU9i amVjdChEKTt9LDEwMCk7fTtZQUhPTy51dGlsLkV2ZW50LmFkZExpc3RlbmVyKEws ImxvYWQiLEYpO30sYWJvcnQ6ZnVuY3Rpb24oRSxHLEEpe3ZhciBEO3ZhciBCPShH JiZHLmFyZ3VtZW50KT9HLmFyZ3VtZW50Om51bGw7aWYoRSYmRS5jb25uKXtpZih0 aGlzLmlzQ2FsbEluUHJvZ3Jlc3MoRSkpe0UuY29ubi5hYm9ydCgpO3dpbmRvdy5j bGVhckludGVydmFsKHRoaXMuX3BvbGxbRS50SWRdKTtkZWxldGUgdGhpcy5fcG9s bFtFLnRJZF07aWYoQSl7d2luZG93LmNsZWFyVGltZW91dCh0aGlzLl90aW1lT3V0 W0UudElkXSk7ZGVsZXRlIHRoaXMuX3RpbWVPdXRbRS50SWRdO31EPXRydWU7fX1l bHNle2lmKEUmJkUuaXNVcGxvYWQ9PT10cnVlKXt2YXIgQz0ieXVpSU8iK0UudElk O3ZhciBGPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKEMpO2lmKEYpe1lBSE9PLnV0 aWwuRXZlbnQucmVtb3ZlTGlzdGVuZXIoRiwibG9hZCIpO2RvY3VtZW50LmJvZHku cmVtb3ZlQ2hpbGQoRik7aWYoQSl7d2luZG93LmNsZWFyVGltZW91dCh0aGlzLl90 aW1lT3V0W0UudElkXSk7ZGVsZXRlIHRoaXMuX3RpbWVPdXRbRS50SWRdO31EPXRy dWU7fX1lbHNle0Q9ZmFsc2U7fX1pZihEPT09dHJ1ZSl7dGhpcy5hYm9ydEV2ZW50 LmZpcmUoRSxCKTtpZihFLmFib3J0RXZlbnQpe0UuYWJvcnRFdmVudC5maXJlKEUs Qik7fXRoaXMuaGFuZGxlVHJhbnNhY3Rpb25SZXNwb25zZShFLEcsdHJ1ZSk7fXJl dHVybiBEO30saXNDYWxsSW5Qcm9ncmVzczpmdW5jdGlvbihCKXtpZihCJiZCLmNv bm4pe3JldHVybiBCLmNvbm4ucmVhZHlTdGF0ZSE9PTQmJkIuY29ubi5yZWFkeVN0 YXRlIT09MDt9ZWxzZXtpZihCJiZCLmlzVXBsb2FkPT09dHJ1ZSl7dmFyIEE9Inl1 aUlPIitCLnRJZDtyZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoQSk/dHJ1 ZTpmYWxzZTt9ZWxzZXtyZXR1cm4gZmFsc2U7fX19LHJlbGVhc2VPYmplY3Q6ZnVu Y3Rpb24oQSl7aWYoQSYmQS5jb25uKXtBLmNvbm49bnVsbDtBPW51bGw7fX19O1lB SE9PLnJlZ2lzdGVyKCJjb25uZWN0aW9uIixZQUhPTy51dGlsLkNvbm5lY3Qse3Zl cnNpb246IjIuNy4wIixidWlsZDoiMTc5NiJ9KTsoZnVuY3Rpb24oKXt2YXIgQj1Z QUhPTy51dGlsO3ZhciBBPWZ1bmN0aW9uKEQsQyxFLEYpe2lmKCFEKXt9dGhpcy5p bml0KEQsQyxFLEYpO307QS5OQU1FPSJBbmltIjtBLnByb3RvdHlwZT17dG9TdHJp bmc6ZnVuY3Rpb24oKXt2YXIgQz10aGlzLmdldEVsKCl8fHt9O3ZhciBEPUMuaWR8 fEMudGFnTmFtZTtyZXR1cm4odGhpcy5jb25zdHJ1Y3Rvci5OQU1FKyI6ICIrRCk7 fSxwYXR0ZXJuczp7bm9OZWdhdGl2ZXM6L3dpZHRofGhlaWdodHxvcGFjaXR5fHBh ZGRpbmcvaSxvZmZzZXRBdHRyaWJ1dGU6L14oKHdpZHRofGhlaWdodCl8KHRvcHxs ZWZ0KSkkLyxkZWZhdWx0VW5pdDovd2lkdGh8aGVpZ2h0fHRvcCR8Ym90dG9tJHxs ZWZ0JHxyaWdodCQvaSxvZmZzZXRVbml0Oi9cZCsoZW18JXxlbnxleHxwdHxpbnxj bXxtbXxwYykkL2l9LGRvTWV0aG9kOmZ1bmN0aW9uKEMsRSxEKXtyZXR1cm4gdGhp cy5tZXRob2QodGhpcy5jdXJyZW50RnJhbWUsRSxELUUsdGhpcy50b3RhbEZyYW1l cyk7fSxzZXRBdHRyaWJ1dGU6ZnVuY3Rpb24oQyxGLEUpe3ZhciBEPXRoaXMuZ2V0 RWwoKTtpZih0aGlzLnBhdHRlcm5zLm5vTmVnYXRpdmVzLnRlc3QoQykpe0Y9KEY+ MCk/RjowO31pZigic3R5bGUiIGluIEQpe0IuRG9tLnNldFN0eWxlKEQsQyxGK0Up O31lbHNle2lmKEMgaW4gRCl7RFtDXT1GO319fSxnZXRBdHRyaWJ1dGU6ZnVuY3Rp b24oQyl7dmFyIEU9dGhpcy5nZXRFbCgpO3ZhciBHPUIuRG9tLmdldFN0eWxlKEUs Qyk7aWYoRyE9PSJhdXRvIiYmIXRoaXMucGF0dGVybnMub2Zmc2V0VW5pdC50ZXN0 KEcpKXtyZXR1cm4gcGFyc2VGbG9hdChHKTt9dmFyIEQ9dGhpcy5wYXR0ZXJucy5v ZmZzZXRBdHRyaWJ1dGUuZXhlYyhDKXx8W107dmFyIEg9ISEoRFszXSk7dmFyIEY9 ISEoRFsyXSk7aWYoInN0eWxlIiBpbiBFKXtpZihGfHwoQi5Eb20uZ2V0U3R5bGUo RSwicG9zaXRpb24iKT09ImFic29sdXRlIiYmSCkpe0c9RVsib2Zmc2V0IitEWzBd LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK0RbMF0uc3Vic3RyKDEpXTt9ZWxzZXtH PTA7fX1lbHNle2lmKEMgaW4gRSl7Rz1FW0NdO319cmV0dXJuIEc7fSxnZXREZWZh dWx0VW5pdDpmdW5jdGlvbihDKXtpZih0aGlzLnBhdHRlcm5zLmRlZmF1bHRVbml0 LnRlc3QoQykpe3JldHVybiJweCI7fXJldHVybiIiO30sc2V0UnVudGltZUF0dHJp YnV0ZTpmdW5jdGlvbihEKXt2YXIgSTt2YXIgRTt2YXIgRj10aGlzLmF0dHJpYnV0 ZXM7dGhpcy5ydW50aW1lQXR0cmlidXRlc1tEXT17fTt2YXIgSD1mdW5jdGlvbihK KXtyZXR1cm4odHlwZW9mIEohPT0idW5kZWZpbmVkIik7fTtpZighSChGW0RdWyJ0 byJdKSYmIUgoRltEXVsiYnkiXSkpe3JldHVybiBmYWxzZTt9ST0oSChGW0RdWyJm cm9tIl0pKT9GW0RdWyJmcm9tIl06dGhpcy5nZXRBdHRyaWJ1dGUoRCk7aWYoSChG W0RdWyJ0byJdKSl7RT1GW0RdWyJ0byJdO31lbHNle2lmKEgoRltEXVsiYnkiXSkp e2lmKEkuY29uc3RydWN0b3I9PUFycmF5KXtFPVtdO2Zvcih2YXIgRz0wLEM9SS5s ZW5ndGg7RzxDOysrRyl7RVtHXT1JW0ddK0ZbRF1bImJ5Il1bR10qMTt9fWVsc2V7 RT1JK0ZbRF1bImJ5Il0qMTt9fX10aGlzLnJ1bnRpbWVBdHRyaWJ1dGVzW0RdLnN0 YXJ0PUk7dGhpcy5ydW50aW1lQXR0cmlidXRlc1tEXS5lbmQ9RTt0aGlzLnJ1bnRp bWVBdHRyaWJ1dGVzW0RdLnVuaXQ9KEgoRltEXS51bml0KSk/RltEXVsidW5pdCJd OnRoaXMuZ2V0RGVmYXVsdFVuaXQoRCk7cmV0dXJuIHRydWU7fSxpbml0OmZ1bmN0 aW9uKEUsSixJLEMpe3ZhciBEPWZhbHNlO3ZhciBGPW51bGw7dmFyIEg9MDtFPUIu RG9tLmdldChFKTt0aGlzLmF0dHJpYnV0ZXM9Snx8e307dGhpcy5kdXJhdGlvbj0h WUFIT08ubGFuZy5pc1VuZGVmaW5lZChJKT9JOjE7dGhpcy5tZXRob2Q9Q3x8Qi5F YXNpbmcuZWFzZU5vbmU7dGhpcy51c2VTZWNvbmRzPXRydWU7dGhpcy5jdXJyZW50 RnJhbWU9MDt0aGlzLnRvdGFsRnJhbWVzPUIuQW5pbU1nci5mcHM7dGhpcy5zZXRF bD1mdW5jdGlvbihNKXtFPUIuRG9tLmdldChNKTt9O3RoaXMuZ2V0RWw9ZnVuY3Rp b24oKXtyZXR1cm4gRTt9O3RoaXMuaXNBbmltYXRlZD1mdW5jdGlvbigpe3JldHVy biBEO307dGhpcy5nZXRTdGFydFRpbWU9ZnVuY3Rpb24oKXtyZXR1cm4gRjt9O3Ro aXMucnVudGltZUF0dHJpYnV0ZXM9e307dGhpcy5hbmltYXRlPWZ1bmN0aW9uKCl7 aWYodGhpcy5pc0FuaW1hdGVkKCkpe3JldHVybiBmYWxzZTt9dGhpcy5jdXJyZW50 RnJhbWU9MDt0aGlzLnRvdGFsRnJhbWVzPSh0aGlzLnVzZVNlY29uZHMpP01hdGgu Y2VpbChCLkFuaW1NZ3IuZnBzKnRoaXMuZHVyYXRpb24pOnRoaXMuZHVyYXRpb247 aWYodGhpcy5kdXJhdGlvbj09PTAmJnRoaXMudXNlU2Vjb25kcyl7dGhpcy50b3Rh bEZyYW1lcz0xO31CLkFuaW1NZ3IucmVnaXN0ZXJFbGVtZW50KHRoaXMpO3JldHVy biB0cnVlO307dGhpcy5zdG9wPWZ1bmN0aW9uKE0pe2lmKCF0aGlzLmlzQW5pbWF0 ZWQoKSl7cmV0dXJuIGZhbHNlO31pZihNKXt0aGlzLmN1cnJlbnRGcmFtZT10aGlz LnRvdGFsRnJhbWVzO3RoaXMuX29uVHdlZW4uZmlyZSgpO31CLkFuaW1NZ3Iuc3Rv cCh0aGlzKTt9O3ZhciBMPWZ1bmN0aW9uKCl7dGhpcy5vblN0YXJ0LmZpcmUoKTt0 aGlzLnJ1bnRpbWVBdHRyaWJ1dGVzPXt9O2Zvcih2YXIgTSBpbiB0aGlzLmF0dHJp YnV0ZXMpe3RoaXMuc2V0UnVudGltZUF0dHJpYnV0ZShNKTt9RD10cnVlO0g9MDtG PW5ldyBEYXRlKCk7fTt2YXIgSz1mdW5jdGlvbigpe3ZhciBPPXtkdXJhdGlvbjpu ZXcgRGF0ZSgpLXRoaXMuZ2V0U3RhcnRUaW1lKCksY3VycmVudEZyYW1lOnRoaXMu Y3VycmVudEZyYW1lfTtPLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuKCJkdXJh dGlvbjogIitPLmR1cmF0aW9uKyIsIGN1cnJlbnRGcmFtZTogIitPLmN1cnJlbnRG cmFtZSk7fTt0aGlzLm9uVHdlZW4uZmlyZShPKTt2YXIgTj10aGlzLnJ1bnRpbWVB dHRyaWJ1dGVzO2Zvcih2YXIgTSBpbiBOKXt0aGlzLnNldEF0dHJpYnV0ZShNLHRo aXMuZG9NZXRob2QoTSxOW01dLnN0YXJ0LE5bTV0uZW5kKSxOW01dLnVuaXQpO31I Kz0xO307dmFyIEc9ZnVuY3Rpb24oKXt2YXIgTT0obmV3IERhdGUoKS1GKS8xMDAw O3ZhciBOPXtkdXJhdGlvbjpNLGZyYW1lczpILGZwczpIL019O04udG9TdHJpbmc9 ZnVuY3Rpb24oKXtyZXR1cm4oImR1cmF0aW9uOiAiK04uZHVyYXRpb24rIiwgZnJh bWVzOiAiK04uZnJhbWVzKyIsIGZwczogIitOLmZwcyk7fTtEPWZhbHNlO0g9MDt0 aGlzLm9uQ29tcGxldGUuZmlyZShOKTt9O3RoaXMuX29uU3RhcnQ9bmV3IEIuQ3Vz dG9tRXZlbnQoIl9zdGFydCIsdGhpcyx0cnVlKTt0aGlzLm9uU3RhcnQ9bmV3IEIu Q3VzdG9tRXZlbnQoInN0YXJ0Iix0aGlzKTt0aGlzLm9uVHdlZW49bmV3IEIuQ3Vz dG9tRXZlbnQoInR3ZWVuIix0aGlzKTt0aGlzLl9vblR3ZWVuPW5ldyBCLkN1c3Rv bUV2ZW50KCJfdHdlZW4iLHRoaXMsdHJ1ZSk7dGhpcy5vbkNvbXBsZXRlPW5ldyBC LkN1c3RvbUV2ZW50KCJjb21wbGV0ZSIsdGhpcyk7dGhpcy5fb25Db21wbGV0ZT1u ZXcgQi5DdXN0b21FdmVudCgiX2NvbXBsZXRlIix0aGlzLHRydWUpO3RoaXMuX29u U3RhcnQuc3Vic2NyaWJlKEwpO3RoaXMuX29uVHdlZW4uc3Vic2NyaWJlKEspO3Ro aXMuX29uQ29tcGxldGUuc3Vic2NyaWJlKEcpO319O0IuQW5pbT1BO30pKCk7WUFI T08udXRpbC5BbmltTWdyPW5ldyBmdW5jdGlvbigpe3ZhciBDPW51bGw7dmFyIEI9 W107dmFyIEE9MDt0aGlzLmZwcz0xMDAwO3RoaXMuZGVsYXk9MTt0aGlzLnJlZ2lz dGVyRWxlbWVudD1mdW5jdGlvbihGKXtCW0IubGVuZ3RoXT1GO0ErPTE7Ri5fb25T dGFydC5maXJlKCk7dGhpcy5zdGFydCgpO307dGhpcy51blJlZ2lzdGVyPWZ1bmN0 aW9uKEcsRil7Rj1GfHxFKEcpO2lmKCFHLmlzQW5pbWF0ZWQoKXx8Rj09LTEpe3Jl dHVybiBmYWxzZTt9Ry5fb25Db21wbGV0ZS5maXJlKCk7Qi5zcGxpY2UoRiwxKTtB LT0xO2lmKEE8PTApe3RoaXMuc3RvcCgpO31yZXR1cm4gdHJ1ZTt9O3RoaXMuc3Rh cnQ9ZnVuY3Rpb24oKXtpZihDPT09bnVsbCl7Qz1zZXRJbnRlcnZhbCh0aGlzLnJ1 bix0aGlzLmRlbGF5KTt9fTt0aGlzLnN0b3A9ZnVuY3Rpb24oSCl7aWYoIUgpe2Ns ZWFySW50ZXJ2YWwoQyk7Zm9yKHZhciBHPTAsRj1CLmxlbmd0aDtHPEY7KytHKXt0 aGlzLnVuUmVnaXN0ZXIoQlswXSwwKTt9Qj1bXTtDPW51bGw7QT0wO31lbHNle3Ro aXMudW5SZWdpc3RlcihIKTt9fTt0aGlzLnJ1bj1mdW5jdGlvbigpe2Zvcih2YXIg SD0wLEY9Qi5sZW5ndGg7SDxGOysrSCl7dmFyIEc9QltIXTtpZighR3x8IUcuaXNB bmltYXRlZCgpKXtjb250aW51ZTt9aWYoRy5jdXJyZW50RnJhbWU8Ry50b3RhbEZy YW1lc3x8Ry50b3RhbEZyYW1lcz09PW51bGwpe0cuY3VycmVudEZyYW1lKz0xO2lm KEcudXNlU2Vjb25kcyl7RChHKTt9Ry5fb25Ud2Vlbi5maXJlKCk7fWVsc2V7WUFI T08udXRpbC5BbmltTWdyLnN0b3AoRyxIKTt9fX07dmFyIEU9ZnVuY3Rpb24oSCl7 Zm9yKHZhciBHPTAsRj1CLmxlbmd0aDtHPEY7KytHKXtpZihCW0ddPT1IKXtyZXR1 cm4gRzt9fXJldHVybiAtMTt9O3ZhciBEPWZ1bmN0aW9uKEcpe3ZhciBKPUcudG90 YWxGcmFtZXM7dmFyIEk9Ry5jdXJyZW50RnJhbWU7dmFyIEg9KEcuY3VycmVudEZy YW1lKkcuZHVyYXRpb24qMTAwMC9HLnRvdGFsRnJhbWVzKTt2YXIgRj0obmV3IERh dGUoKS1HLmdldFN0YXJ0VGltZSgpKTt2YXIgSz0wO2lmKEY8Ry5kdXJhdGlvbiox MDAwKXtLPU1hdGgucm91bmQoKEYvSC0xKSpHLmN1cnJlbnRGcmFtZSk7fWVsc2V7 Sz1KLShJKzEpO31pZihLPjAmJmlzRmluaXRlKEspKXtpZihHLmN1cnJlbnRGcmFt ZStLPj1KKXtLPUotKEkrMSk7fUcuY3VycmVudEZyYW1lKz1LO319O307WUFIT08u dXRpbC5CZXppZXI9bmV3IGZ1bmN0aW9uKCl7dGhpcy5nZXRQb3NpdGlvbj1mdW5j dGlvbihFLEQpe3ZhciBGPUUubGVuZ3RoO3ZhciBDPVtdO2Zvcih2YXIgQj0wO0I8 RjsrK0Ipe0NbQl09W0VbQl1bMF0sRVtCXVsxXV07fWZvcih2YXIgQT0xO0E8Rjsr K0Epe2ZvcihCPTA7QjxGLUE7KytCKXtDW0JdWzBdPSgxLUQpKkNbQl1bMF0rRCpD W3BhcnNlSW50KEIrMSwxMCldWzBdO0NbQl1bMV09KDEtRCkqQ1tCXVsxXStEKkNb cGFyc2VJbnQoQisxLDEwKV1bMV07fX1yZXR1cm5bQ1swXVswXSxDWzBdWzFdXTt9 O307KGZ1bmN0aW9uKCl7dmFyIEE9ZnVuY3Rpb24oRixFLEcsSCl7QS5zdXBlcmNs YXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxGLEUsRyxIKTt9O0EuTkFNRT0iQ29s b3JBbmltIjtBLkRFRkFVTFRfQkdDT0xPUj0iI2ZmZiI7dmFyIEM9WUFIT08udXRp bDtZQUhPTy5leHRlbmQoQSxDLkFuaW0pO3ZhciBEPUEuc3VwZXJjbGFzczt2YXIg Qj1BLnByb3RvdHlwZTtCLnBhdHRlcm5zLmNvbG9yPS9jb2xvciQvaTtCLnBhdHRl cm5zLnJnYj0vXnJnYlwoKFswLTldKylccyosXHMqKFswLTldKylccyosXHMqKFsw LTldKylcKSQvaTtCLnBhdHRlcm5zLmhleD0vXiM/KFswLTlBLUZdezJ9KShbMC05 QS1GXXsyfSkoWzAtOUEtRl17Mn0pJC9pO0IucGF0dGVybnMuaGV4Mz0vXiM/KFsw LTlBLUZdezF9KShbMC05QS1GXXsxfSkoWzAtOUEtRl17MX0pJC9pO0IucGF0dGVy bnMudHJhbnNwYXJlbnQ9L150cmFuc3BhcmVudHxyZ2JhXCgwLCAwLCAwLCAwXCkk LztCLnBhcnNlQ29sb3I9ZnVuY3Rpb24oRSl7aWYoRS5sZW5ndGg9PTMpe3JldHVy biBFO312YXIgRj10aGlzLnBhdHRlcm5zLmhleC5leGVjKEUpO2lmKEYmJkYubGVu Z3RoPT00KXtyZXR1cm5bcGFyc2VJbnQoRlsxXSwxNikscGFyc2VJbnQoRlsyXSwx NikscGFyc2VJbnQoRlszXSwxNildO31GPXRoaXMucGF0dGVybnMucmdiLmV4ZWMo RSk7aWYoRiYmRi5sZW5ndGg9PTQpe3JldHVybltwYXJzZUludChGWzFdLDEwKSxw YXJzZUludChGWzJdLDEwKSxwYXJzZUludChGWzNdLDEwKV07fUY9dGhpcy5wYXR0 ZXJucy5oZXgzLmV4ZWMoRSk7aWYoRiYmRi5sZW5ndGg9PTQpe3JldHVybltwYXJz ZUludChGWzFdK0ZbMV0sMTYpLHBhcnNlSW50KEZbMl0rRlsyXSwxNikscGFyc2VJ bnQoRlszXStGWzNdLDE2KV07Cn1yZXR1cm4gbnVsbDt9O0IuZ2V0QXR0cmlidXRl PWZ1bmN0aW9uKEUpe3ZhciBHPXRoaXMuZ2V0RWwoKTtpZih0aGlzLnBhdHRlcm5z LmNvbG9yLnRlc3QoRSkpe3ZhciBJPVlBSE9PLnV0aWwuRG9tLmdldFN0eWxlKEcs RSk7dmFyIEg9dGhpcztpZih0aGlzLnBhdHRlcm5zLnRyYW5zcGFyZW50LnRlc3Qo SSkpe3ZhciBGPVlBSE9PLnV0aWwuRG9tLmdldEFuY2VzdG9yQnkoRyxmdW5jdGlv bihKKXtyZXR1cm4gIUgucGF0dGVybnMudHJhbnNwYXJlbnQudGVzdChJKTt9KTtp ZihGKXtJPUMuRG9tLmdldFN0eWxlKEYsRSk7fWVsc2V7ST1BLkRFRkFVTFRfQkdD T0xPUjt9fX1lbHNle0k9RC5nZXRBdHRyaWJ1dGUuY2FsbCh0aGlzLEUpO31yZXR1 cm4gSTt9O0IuZG9NZXRob2Q9ZnVuY3Rpb24oRixKLEcpe3ZhciBJO2lmKHRoaXMu cGF0dGVybnMuY29sb3IudGVzdChGKSl7ST1bXTtmb3IodmFyIEg9MCxFPUoubGVu Z3RoO0g8RTsrK0gpe0lbSF09RC5kb01ldGhvZC5jYWxsKHRoaXMsRixKW0hdLEdb SF0pO31JPSJyZ2IoIitNYXRoLmZsb29yKElbMF0pKyIsIitNYXRoLmZsb29yKElb MV0pKyIsIitNYXRoLmZsb29yKElbMl0pKyIpIjt9ZWxzZXtJPUQuZG9NZXRob2Qu Y2FsbCh0aGlzLEYsSixHKTt9cmV0dXJuIEk7fTtCLnNldFJ1bnRpbWVBdHRyaWJ1 dGU9ZnVuY3Rpb24oRil7RC5zZXRSdW50aW1lQXR0cmlidXRlLmNhbGwodGhpcyxG KTtpZih0aGlzLnBhdHRlcm5zLmNvbG9yLnRlc3QoRikpe3ZhciBIPXRoaXMuYXR0 cmlidXRlczt2YXIgSj10aGlzLnBhcnNlQ29sb3IodGhpcy5ydW50aW1lQXR0cmli dXRlc1tGXS5zdGFydCk7dmFyIEc9dGhpcy5wYXJzZUNvbG9yKHRoaXMucnVudGlt ZUF0dHJpYnV0ZXNbRl0uZW5kKTtpZih0eXBlb2YgSFtGXVsidG8iXT09PSJ1bmRl ZmluZWQiJiZ0eXBlb2YgSFtGXVsiYnkiXSE9PSJ1bmRlZmluZWQiKXtHPXRoaXMu cGFyc2VDb2xvcihIW0ZdLmJ5KTtmb3IodmFyIEk9MCxFPUoubGVuZ3RoO0k8RTsr K0kpe0dbSV09SltJXStHW0ldO319dGhpcy5ydW50aW1lQXR0cmlidXRlc1tGXS5z dGFydD1KO3RoaXMucnVudGltZUF0dHJpYnV0ZXNbRl0uZW5kPUc7fX07Qy5Db2xv ckFuaW09QTt9KSgpOwovKgpURVJNUyBPRiBVU0UgLSBFQVNJTkcgRVFVQVRJT05T Ck9wZW4gc291cmNlIHVuZGVyIHRoZSBCU0QgTGljZW5zZS4KQ29weXJpZ2h0IDIw MDEgUm9iZXJ0IFBlbm5lciBBbGwgcmlnaHRzIHJlc2VydmVkLgoKUmVkaXN0cmli dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv ciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0 aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgoKICogUmVkaXN0 cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl IGZvbGxvd2luZyBkaXNjbGFpbWVyLgogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp c2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAqIE5laXRoZXIg dGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGNvbnRyaWJ1 dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg ZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv ciB3cml0dGVuIHBlcm1pc3Npb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJ UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP UFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD SCBEQU1BR0UuCiovCllBSE9PLnV0aWwuRWFzaW5nPXtlYXNlTm9uZTpmdW5jdGlv bihCLEEsRCxDKXtyZXR1cm4gRCpCL0MrQTt9LGVhc2VJbjpmdW5jdGlvbihCLEEs RCxDKXtyZXR1cm4gRCooQi89QykqQitBO30sZWFzZU91dDpmdW5jdGlvbihCLEEs RCxDKXtyZXR1cm4gLUQqKEIvPUMpKihCLTIpK0E7fSxlYXNlQm90aDpmdW5jdGlv bihCLEEsRCxDKXtpZigoQi89Qy8yKTwxKXtyZXR1cm4gRC8yKkIqQitBO31yZXR1 cm4gLUQvMiooKC0tQikqKEItMiktMSkrQTt9LGVhc2VJblN0cm9uZzpmdW5jdGlv bihCLEEsRCxDKXtyZXR1cm4gRCooQi89QykqQipCKkIrQTt9LGVhc2VPdXRTdHJv bmc6ZnVuY3Rpb24oQixBLEQsQyl7cmV0dXJuIC1EKigoQj1CL0MtMSkqQipCKkIt MSkrQTt9LGVhc2VCb3RoU3Ryb25nOmZ1bmN0aW9uKEIsQSxELEMpe2lmKChCLz1D LzIpPDEpe3JldHVybiBELzIqQipCKkIqQitBO31yZXR1cm4gLUQvMiooKEItPTIp KkIqQipCLTIpK0E7fSxlbGFzdGljSW46ZnVuY3Rpb24oQyxBLEcsRixCLEUpe2lm KEM9PTApe3JldHVybiBBO31pZigoQy89Rik9PTEpe3JldHVybiBBK0c7fWlmKCFF KXtFPUYqMC4zO31pZighQnx8QjxNYXRoLmFicyhHKSl7Qj1HO3ZhciBEPUUvNDt9 ZWxzZXt2YXIgRD1FLygyKk1hdGguUEkpKk1hdGguYXNpbihHL0IpO31yZXR1cm4g LShCKk1hdGgucG93KDIsMTAqKEMtPTEpKSpNYXRoLnNpbigoQypGLUQpKigyKk1h dGguUEkpL0UpKStBO30sZWxhc3RpY091dDpmdW5jdGlvbihDLEEsRyxGLEIsRSl7 aWYoQz09MCl7cmV0dXJuIEE7fWlmKChDLz1GKT09MSl7cmV0dXJuIEErRzt9aWYo IUUpe0U9RiowLjM7fWlmKCFCfHxCPE1hdGguYWJzKEcpKXtCPUc7dmFyIEQ9RS80 O31lbHNle3ZhciBEPUUvKDIqTWF0aC5QSSkqTWF0aC5hc2luKEcvQik7fXJldHVy biBCKk1hdGgucG93KDIsLTEwKkMpKk1hdGguc2luKChDKkYtRCkqKDIqTWF0aC5Q SSkvRSkrRytBO30sZWxhc3RpY0JvdGg6ZnVuY3Rpb24oQyxBLEcsRixCLEUpe2lm KEM9PTApe3JldHVybiBBO31pZigoQy89Ri8yKT09Mil7cmV0dXJuIEErRzt9aWYo IUUpe0U9RiooMC4zKjEuNSk7fWlmKCFCfHxCPE1hdGguYWJzKEcpKXtCPUc7dmFy IEQ9RS80O31lbHNle3ZhciBEPUUvKDIqTWF0aC5QSSkqTWF0aC5hc2luKEcvQik7 fWlmKEM8MSl7cmV0dXJuIC0wLjUqKEIqTWF0aC5wb3coMiwxMCooQy09MSkpKk1h dGguc2luKChDKkYtRCkqKDIqTWF0aC5QSSkvRSkpK0E7fXJldHVybiBCKk1hdGgu cG93KDIsLTEwKihDLT0xKSkqTWF0aC5zaW4oKEMqRi1EKSooMipNYXRoLlBJKS9F KSowLjUrRytBO30sYmFja0luOmZ1bmN0aW9uKEIsQSxFLEQsQyl7aWYodHlwZW9m IEM9PSJ1bmRlZmluZWQiKXtDPTEuNzAxNTg7fXJldHVybiBFKihCLz1EKSpCKigo QysxKSpCLUMpK0E7fSxiYWNrT3V0OmZ1bmN0aW9uKEIsQSxFLEQsQyl7aWYodHlw ZW9mIEM9PSJ1bmRlZmluZWQiKXtDPTEuNzAxNTg7fXJldHVybiBFKigoQj1CL0Qt MSkqQiooKEMrMSkqQitDKSsxKStBO30sYmFja0JvdGg6ZnVuY3Rpb24oQixBLEUs RCxDKXtpZih0eXBlb2YgQz09InVuZGVmaW5lZCIpe0M9MS43MDE1ODt9aWYoKEIv PUQvMik8MSl7cmV0dXJuIEUvMiooQipCKigoKEMqPSgxLjUyNSkpKzEpKkItQykp K0E7fXJldHVybiBFLzIqKChCLT0yKSpCKigoKEMqPSgxLjUyNSkpKzEpKkIrQykr MikrQTt9LGJvdW5jZUluOmZ1bmN0aW9uKEIsQSxELEMpe3JldHVybiBELVlBSE9P LnV0aWwuRWFzaW5nLmJvdW5jZU91dChDLUIsMCxELEMpK0E7fSxib3VuY2VPdXQ6 ZnVuY3Rpb24oQixBLEQsQyl7aWYoKEIvPUMpPCgxLzIuNzUpKXtyZXR1cm4gRCoo Ny41NjI1KkIqQikrQTt9ZWxzZXtpZihCPCgyLzIuNzUpKXtyZXR1cm4gRCooNy41 NjI1KihCLT0oMS41LzIuNzUpKSpCKzAuNzUpK0E7fWVsc2V7aWYoQjwoMi41LzIu NzUpKXtyZXR1cm4gRCooNy41NjI1KihCLT0oMi4yNS8yLjc1KSkqQiswLjkzNzUp K0E7fX19cmV0dXJuIEQqKDcuNTYyNSooQi09KDIuNjI1LzIuNzUpKSpCKzAuOTg0 Mzc1KStBO30sYm91bmNlQm90aDpmdW5jdGlvbihCLEEsRCxDKXtpZihCPEMvMil7 cmV0dXJuIFlBSE9PLnV0aWwuRWFzaW5nLmJvdW5jZUluKEIqMiwwLEQsQykqMC41 K0E7fXJldHVybiBZQUhPTy51dGlsLkVhc2luZy5ib3VuY2VPdXQoQioyLUMsMCxE LEMpKjAuNStEKjAuNStBO319OyhmdW5jdGlvbigpe3ZhciBBPWZ1bmN0aW9uKEgs RyxJLEope2lmKEgpe0Euc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMs SCxHLEksSik7fX07QS5OQU1FPSJNb3Rpb24iO3ZhciBFPVlBSE9PLnV0aWw7WUFI T08uZXh0ZW5kKEEsRS5Db2xvckFuaW0pO3ZhciBGPUEuc3VwZXJjbGFzczt2YXIg Qz1BLnByb3RvdHlwZTtDLnBhdHRlcm5zLnBvaW50cz0vXnBvaW50cyQvaTtDLnNl dEF0dHJpYnV0ZT1mdW5jdGlvbihHLEksSCl7aWYodGhpcy5wYXR0ZXJucy5wb2lu dHMudGVzdChHKSl7SD1IfHwicHgiO0Yuc2V0QXR0cmlidXRlLmNhbGwodGhpcywi bGVmdCIsSVswXSxIKTtGLnNldEF0dHJpYnV0ZS5jYWxsKHRoaXMsInRvcCIsSVsx XSxIKTt9ZWxzZXtGLnNldEF0dHJpYnV0ZS5jYWxsKHRoaXMsRyxJLEgpO319O0Mu Z2V0QXR0cmlidXRlPWZ1bmN0aW9uKEcpe2lmKHRoaXMucGF0dGVybnMucG9pbnRz LnRlc3QoRykpe3ZhciBIPVtGLmdldEF0dHJpYnV0ZS5jYWxsKHRoaXMsImxlZnQi KSxGLmdldEF0dHJpYnV0ZS5jYWxsKHRoaXMsInRvcCIpXTt9ZWxzZXtIPUYuZ2V0 QXR0cmlidXRlLmNhbGwodGhpcyxHKTt9cmV0dXJuIEg7fTtDLmRvTWV0aG9kPWZ1 bmN0aW9uKEcsSyxIKXt2YXIgSj1udWxsO2lmKHRoaXMucGF0dGVybnMucG9pbnRz LnRlc3QoRykpe3ZhciBJPXRoaXMubWV0aG9kKHRoaXMuY3VycmVudEZyYW1lLDAs MTAwLHRoaXMudG90YWxGcmFtZXMpLzEwMDtKPUUuQmV6aWVyLmdldFBvc2l0aW9u KHRoaXMucnVudGltZUF0dHJpYnV0ZXNbR10sSSk7fWVsc2V7Sj1GLmRvTWV0aG9k LmNhbGwodGhpcyxHLEssSCk7fXJldHVybiBKO307Qy5zZXRSdW50aW1lQXR0cmli dXRlPWZ1bmN0aW9uKFApe2lmKHRoaXMucGF0dGVybnMucG9pbnRzLnRlc3QoUCkp e3ZhciBIPXRoaXMuZ2V0RWwoKTt2YXIgSj10aGlzLmF0dHJpYnV0ZXM7dmFyIEc7 dmFyIEw9SlsicG9pbnRzIl1bImNvbnRyb2wiXXx8W107dmFyIEk7dmFyIE0sTztp ZihMLmxlbmd0aD4wJiYhKExbMF0gaW5zdGFuY2VvZiBBcnJheSkpe0w9W0xdO31l bHNle3ZhciBLPVtdO2ZvcihNPTAsTz1MLmxlbmd0aDtNPE87KytNKXtLW01dPUxb TV07fUw9Szt9aWYoRS5Eb20uZ2V0U3R5bGUoSCwicG9zaXRpb24iKT09InN0YXRp YyIpe0UuRG9tLnNldFN0eWxlKEgsInBvc2l0aW9uIiwicmVsYXRpdmUiKTt9aWYo RChKWyJwb2ludHMiXVsiZnJvbSJdKSl7RS5Eb20uc2V0WFkoSCxKWyJwb2ludHMi XVsiZnJvbSJdKTsKfWVsc2V7RS5Eb20uc2V0WFkoSCxFLkRvbS5nZXRYWShIKSk7 fUc9dGhpcy5nZXRBdHRyaWJ1dGUoInBvaW50cyIpO2lmKEQoSlsicG9pbnRzIl1b InRvIl0pKXtJPUIuY2FsbCh0aGlzLEpbInBvaW50cyJdWyJ0byJdLEcpO3ZhciBO PUUuRG9tLmdldFhZKHRoaXMuZ2V0RWwoKSk7Zm9yKE09MCxPPUwubGVuZ3RoO008 TzsrK00pe0xbTV09Qi5jYWxsKHRoaXMsTFtNXSxHKTt9fWVsc2V7aWYoRChKWyJw b2ludHMiXVsiYnkiXSkpe0k9W0dbMF0rSlsicG9pbnRzIl1bImJ5Il1bMF0sR1sx XStKWyJwb2ludHMiXVsiYnkiXVsxXV07Zm9yKE09MCxPPUwubGVuZ3RoO008Tzsr K00pe0xbTV09W0dbMF0rTFtNXVswXSxHWzFdK0xbTV1bMV1dO319fXRoaXMucnVu dGltZUF0dHJpYnV0ZXNbUF09W0ddO2lmKEwubGVuZ3RoPjApe3RoaXMucnVudGlt ZUF0dHJpYnV0ZXNbUF09dGhpcy5ydW50aW1lQXR0cmlidXRlc1tQXS5jb25jYXQo TCk7fXRoaXMucnVudGltZUF0dHJpYnV0ZXNbUF1bdGhpcy5ydW50aW1lQXR0cmli dXRlc1tQXS5sZW5ndGhdPUk7fWVsc2V7Ri5zZXRSdW50aW1lQXR0cmlidXRlLmNh bGwodGhpcyxQKTt9fTt2YXIgQj1mdW5jdGlvbihHLEkpe3ZhciBIPUUuRG9tLmdl dFhZKHRoaXMuZ2V0RWwoKSk7Rz1bR1swXS1IWzBdK0lbMF0sR1sxXS1IWzFdK0lb MV1dO3JldHVybiBHO307dmFyIEQ9ZnVuY3Rpb24oRyl7cmV0dXJuKHR5cGVvZiBH IT09InVuZGVmaW5lZCIpO307RS5Nb3Rpb249QTt9KSgpOyhmdW5jdGlvbigpe3Zh ciBEPWZ1bmN0aW9uKEYsRSxHLEgpe2lmKEYpe0Quc3VwZXJjbGFzcy5jb25zdHJ1 Y3Rvci5jYWxsKHRoaXMsRixFLEcsSCk7fX07RC5OQU1FPSJTY3JvbGwiO3ZhciBC PVlBSE9PLnV0aWw7WUFIT08uZXh0ZW5kKEQsQi5Db2xvckFuaW0pO3ZhciBDPUQu c3VwZXJjbGFzczt2YXIgQT1ELnByb3RvdHlwZTtBLmRvTWV0aG9kPWZ1bmN0aW9u KEUsSCxGKXt2YXIgRz1udWxsO2lmKEU9PSJzY3JvbGwiKXtHPVt0aGlzLm1ldGhv ZCh0aGlzLmN1cnJlbnRGcmFtZSxIWzBdLEZbMF0tSFswXSx0aGlzLnRvdGFsRnJh bWVzKSx0aGlzLm1ldGhvZCh0aGlzLmN1cnJlbnRGcmFtZSxIWzFdLEZbMV0tSFsx XSx0aGlzLnRvdGFsRnJhbWVzKV07fWVsc2V7Rz1DLmRvTWV0aG9kLmNhbGwodGhp cyxFLEgsRik7fXJldHVybiBHO307QS5nZXRBdHRyaWJ1dGU9ZnVuY3Rpb24oRSl7 dmFyIEc9bnVsbDt2YXIgRj10aGlzLmdldEVsKCk7aWYoRT09InNjcm9sbCIpe0c9 W0Yuc2Nyb2xsTGVmdCxGLnNjcm9sbFRvcF07fWVsc2V7Rz1DLmdldEF0dHJpYnV0 ZS5jYWxsKHRoaXMsRSk7fXJldHVybiBHO307QS5zZXRBdHRyaWJ1dGU9ZnVuY3Rp b24oRSxILEcpe3ZhciBGPXRoaXMuZ2V0RWwoKTtpZihFPT0ic2Nyb2xsIil7Ri5z Y3JvbGxMZWZ0PUhbMF07Ri5zY3JvbGxUb3A9SFsxXTt9ZWxzZXtDLnNldEF0dHJp YnV0ZS5jYWxsKHRoaXMsRSxILEcpO319O0IuU2Nyb2xsPUQ7fSkoKTtZQUhPTy5y ZWdpc3RlcigiYW5pbWF0aW9uIixZQUhPTy51dGlsLkFuaW0se3ZlcnNpb246IjIu Ny4wIixidWlsZDoiMTc5NiJ9KTtpZighWUFIT08udXRpbC5EcmFnRHJvcE1ncil7 WUFIT08udXRpbC5EcmFnRHJvcE1ncj1mdW5jdGlvbigpe3ZhciBBPVlBSE9PLnV0 aWwuRXZlbnQsQj1ZQUhPTy51dGlsLkRvbTtyZXR1cm57dXNlU2hpbTpmYWxzZSxf c2hpbUFjdGl2ZTpmYWxzZSxfc2hpbVN0YXRlOmZhbHNlLF9kZWJ1Z1NoaW06ZmFs c2UsX2NyZWF0ZVNoaW06ZnVuY3Rpb24oKXt2YXIgQz1kb2N1bWVudC5jcmVhdGVF bGVtZW50KCJkaXYiKTtDLmlkPSJ5dWktZGRtLXNoaW0iO2lmKGRvY3VtZW50LmJv ZHkuZmlyc3RDaGlsZCl7ZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoQyxkb2N1 bWVudC5ib2R5LmZpcnN0Q2hpbGQpO31lbHNle2RvY3VtZW50LmJvZHkuYXBwZW5k Q2hpbGQoQyk7fUMuc3R5bGUuZGlzcGxheT0ibm9uZSI7Qy5zdHlsZS5iYWNrZ3Jv dW5kQ29sb3I9InJlZCI7Qy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO0Muc3R5 bGUuekluZGV4PSI5OTk5OSI7Qi5zZXRTdHlsZShDLCJvcGFjaXR5IiwiMCIpO3Ro aXMuX3NoaW09QztBLm9uKEMsIm1vdXNldXAiLHRoaXMuaGFuZGxlTW91c2VVcCx0 aGlzLHRydWUpO0Eub24oQywibW91c2Vtb3ZlIix0aGlzLmhhbmRsZU1vdXNlTW92 ZSx0aGlzLHRydWUpO0Eub24od2luZG93LCJzY3JvbGwiLHRoaXMuX3NpemVTaGlt LHRoaXMsdHJ1ZSk7fSxfc2l6ZVNoaW06ZnVuY3Rpb24oKXtpZih0aGlzLl9zaGlt QWN0aXZlKXt2YXIgQz10aGlzLl9zaGltO0Muc3R5bGUuaGVpZ2h0PUIuZ2V0RG9j dW1lbnRIZWlnaHQoKSsicHgiO0Muc3R5bGUud2lkdGg9Qi5nZXREb2N1bWVudFdp ZHRoKCkrInB4IjtDLnN0eWxlLnRvcD0iMCI7Qy5zdHlsZS5sZWZ0PSIwIjt9fSxf YWN0aXZhdGVTaGltOmZ1bmN0aW9uKCl7aWYodGhpcy51c2VTaGltKXtpZighdGhp cy5fc2hpbSl7dGhpcy5fY3JlYXRlU2hpbSgpO310aGlzLl9zaGltQWN0aXZlPXRy dWU7dmFyIEM9dGhpcy5fc2hpbSxEPSIwIjtpZih0aGlzLl9kZWJ1Z1NoaW0pe0Q9 Ii41Ijt9Qi5zZXRTdHlsZShDLCJvcGFjaXR5IixEKTt0aGlzLl9zaXplU2hpbSgp O0Muc3R5bGUuZGlzcGxheT0iYmxvY2siO319LF9kZWFjdGl2YXRlU2hpbTpmdW5j dGlvbigpe3RoaXMuX3NoaW0uc3R5bGUuZGlzcGxheT0ibm9uZSI7dGhpcy5fc2hp bUFjdGl2ZT1mYWxzZTt9LF9zaGltOm51bGwsaWRzOnt9LGhhbmRsZUlkczp7fSxk cmFnQ3VycmVudDpudWxsLGRyYWdPdmVyczp7fSxkZWx0YVg6MCxkZWx0YVk6MCxw cmV2ZW50RGVmYXVsdDp0cnVlLHN0b3BQcm9wYWdhdGlvbjp0cnVlLGluaXRpYWxp emVkOmZhbHNlLGxvY2tlZDpmYWxzZSxpbnRlcmFjdGlvbkluZm86bnVsbCxpbml0 OmZ1bmN0aW9uKCl7dGhpcy5pbml0aWFsaXplZD10cnVlO30sUE9JTlQ6MCxJTlRF UlNFQ1Q6MSxTVFJJQ1RfSU5URVJTRUNUOjIsbW9kZTowLF9leGVjT25BbGw6ZnVu Y3Rpb24oRSxEKXtmb3IodmFyIEYgaW4gdGhpcy5pZHMpe2Zvcih2YXIgQyBpbiB0 aGlzLmlkc1tGXSl7dmFyIEc9dGhpcy5pZHNbRl1bQ107aWYoIXRoaXMuaXNUeXBl T2ZERChHKSl7Y29udGludWU7fUdbRV0uYXBwbHkoRyxEKTt9fX0sX29uTG9hZDpm dW5jdGlvbigpe3RoaXMuaW5pdCgpO0Eub24oZG9jdW1lbnQsIm1vdXNldXAiLHRo aXMuaGFuZGxlTW91c2VVcCx0aGlzLHRydWUpO0Eub24oZG9jdW1lbnQsIm1vdXNl bW92ZSIsdGhpcy5oYW5kbGVNb3VzZU1vdmUsdGhpcyx0cnVlKTtBLm9uKHdpbmRv dywidW5sb2FkIix0aGlzLl9vblVubG9hZCx0aGlzLHRydWUpO0Eub24od2luZG93 LCJyZXNpemUiLHRoaXMuX29uUmVzaXplLHRoaXMsdHJ1ZSk7fSxfb25SZXNpemU6 ZnVuY3Rpb24oQyl7dGhpcy5fZXhlY09uQWxsKCJyZXNldENvbnN0cmFpbnRzIixb XSk7fSxsb2NrOmZ1bmN0aW9uKCl7dGhpcy5sb2NrZWQ9dHJ1ZTt9LHVubG9jazpm dW5jdGlvbigpe3RoaXMubG9ja2VkPWZhbHNlO30saXNMb2NrZWQ6ZnVuY3Rpb24o KXtyZXR1cm4gdGhpcy5sb2NrZWQ7fSxsb2NhdGlvbkNhY2hlOnt9LHVzZUNhY2hl OnRydWUsY2xpY2tQaXhlbFRocmVzaDozLGNsaWNrVGltZVRocmVzaDoxMDAwLGRy YWdUaHJlc2hNZXQ6ZmFsc2UsY2xpY2tUaW1lb3V0Om51bGwsc3RhcnRYOjAsc3Rh cnRZOjAsZnJvbVRpbWVvdXQ6ZmFsc2UscmVnRHJhZ0Ryb3A6ZnVuY3Rpb24oRCxD KXtpZighdGhpcy5pbml0aWFsaXplZCl7dGhpcy5pbml0KCk7fWlmKCF0aGlzLmlk c1tDXSl7dGhpcy5pZHNbQ109e307fXRoaXMuaWRzW0NdW0QuaWRdPUQ7fSxyZW1v dmVEREZyb21Hcm91cDpmdW5jdGlvbihFLEMpe2lmKCF0aGlzLmlkc1tDXSl7dGhp cy5pZHNbQ109e307fXZhciBEPXRoaXMuaWRzW0NdO2lmKEQmJkRbRS5pZF0pe2Rl bGV0ZSBEW0UuaWRdO319LF9yZW1vdmU6ZnVuY3Rpb24oRSl7Zm9yKHZhciBEIGlu IEUuZ3JvdXBzKXtpZihEKXt2YXIgQz10aGlzLmlkc1tEXTtpZihDJiZDW0UuaWRd KXtkZWxldGUgQ1tFLmlkXTt9fX1kZWxldGUgdGhpcy5oYW5kbGVJZHNbRS5pZF07 fSxyZWdIYW5kbGU6ZnVuY3Rpb24oRCxDKXtpZighdGhpcy5oYW5kbGVJZHNbRF0p e3RoaXMuaGFuZGxlSWRzW0RdPXt9O310aGlzLmhhbmRsZUlkc1tEXVtDXT1DO30s aXNEcmFnRHJvcDpmdW5jdGlvbihDKXtyZXR1cm4odGhpcy5nZXREREJ5SWQoQykp P3RydWU6ZmFsc2U7fSxnZXRSZWxhdGVkOmZ1bmN0aW9uKEgsRCl7dmFyIEc9W107 Zm9yKHZhciBGIGluIEguZ3JvdXBzKXtmb3IodmFyIEUgaW4gdGhpcy5pZHNbRl0p e3ZhciBDPXRoaXMuaWRzW0ZdW0VdO2lmKCF0aGlzLmlzVHlwZU9mREQoQykpe2Nv bnRpbnVlO31pZighRHx8Qy5pc1RhcmdldCl7R1tHLmxlbmd0aF09Qzt9fX1yZXR1 cm4gRzt9LGlzTGVnYWxUYXJnZXQ6ZnVuY3Rpb24oRyxGKXt2YXIgRD10aGlzLmdl dFJlbGF0ZWQoRyx0cnVlKTtmb3IodmFyIEU9MCxDPUQubGVuZ3RoO0U8QzsrK0Up e2lmKERbRV0uaWQ9PUYuaWQpe3JldHVybiB0cnVlO319cmV0dXJuIGZhbHNlO30s aXNUeXBlT2ZERDpmdW5jdGlvbihDKXtyZXR1cm4oQyYmQy5fX3lnRHJhZ0Ryb3Ap O30saXNIYW5kbGU6ZnVuY3Rpb24oRCxDKXtyZXR1cm4odGhpcy5oYW5kbGVJZHNb RF0mJnRoaXMuaGFuZGxlSWRzW0RdW0NdKTt9LGdldEREQnlJZDpmdW5jdGlvbihE KXtmb3IodmFyIEMgaW4gdGhpcy5pZHMpe2lmKHRoaXMuaWRzW0NdW0RdKXtyZXR1 cm4gdGhpcy5pZHNbQ11bRF07fX1yZXR1cm4gbnVsbDt9LGhhbmRsZU1vdXNlRG93 bjpmdW5jdGlvbihFLEQpe3RoaXMuY3VycmVudFRhcmdldD1ZQUhPTy51dGlsLkV2 ZW50LmdldFRhcmdldChFKTt0aGlzLmRyYWdDdXJyZW50PUQ7dmFyIEM9RC5nZXRF bCgpO3RoaXMuc3RhcnRYPVlBSE9PLnV0aWwuRXZlbnQuZ2V0UGFnZVgoRSk7dGhp cy5zdGFydFk9WUFIT08udXRpbC5FdmVudC5nZXRQYWdlWShFKTt0aGlzLmRlbHRh WD10aGlzLnN0YXJ0WC1DLm9mZnNldExlZnQ7dGhpcy5kZWx0YVk9dGhpcy5zdGFy dFktQy5vZmZzZXRUb3A7dGhpcy5kcmFnVGhyZXNoTWV0PWZhbHNlO3RoaXMuY2xp Y2tUaW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgRj1ZQUhPTy51dGls LkRETTtGLnN0YXJ0RHJhZyhGLnN0YXJ0WCxGLnN0YXJ0WSk7Ri5mcm9tVGltZW91 dD10cnVlO30sdGhpcy5jbGlja1RpbWVUaHJlc2gpO30sc3RhcnREcmFnOmZ1bmN0 aW9uKEMsRSl7aWYodGhpcy5kcmFnQ3VycmVudCYmdGhpcy5kcmFnQ3VycmVudC51 c2VTaGltKXt0aGlzLl9zaGltU3RhdGU9dGhpcy51c2VTaGltO3RoaXMudXNlU2hp bT10cnVlO310aGlzLl9hY3RpdmF0ZVNoaW0oKTtjbGVhclRpbWVvdXQodGhpcy5j bGlja1RpbWVvdXQpO3ZhciBEPXRoaXMuZHJhZ0N1cnJlbnQ7aWYoRCYmRC5ldmVu dHMuYjRTdGFydERyYWcpe0QuYjRTdGFydERyYWcoQyxFKTtELmZpcmVFdmVudCgi YjRTdGFydERyYWdFdmVudCIse3g6Qyx5OkV9KTt9aWYoRCYmRC5ldmVudHMuc3Rh cnREcmFnKXtELnN0YXJ0RHJhZyhDLEUpO0QuZmlyZUV2ZW50KCJzdGFydERyYWdF dmVudCIse3g6Qyx5OkV9KTt9dGhpcy5kcmFnVGhyZXNoTWV0PXRydWU7fSxoYW5k bGVNb3VzZVVwOmZ1bmN0aW9uKEMpe2lmKHRoaXMuZHJhZ0N1cnJlbnQpe2NsZWFy VGltZW91dCh0aGlzLmNsaWNrVGltZW91dCk7aWYodGhpcy5kcmFnVGhyZXNoTWV0 KXtpZih0aGlzLmZyb21UaW1lb3V0KXt0aGlzLmZyb21UaW1lb3V0PWZhbHNlO3Ro aXMuaGFuZGxlTW91c2VNb3ZlKEMpO310aGlzLmZyb21UaW1lb3V0PWZhbHNlO3Ro aXMuZmlyZUV2ZW50cyhDLHRydWUpO31lbHNle310aGlzLnN0b3BEcmFnKEMpO3Ro aXMuc3RvcEV2ZW50KEMpO319LHN0b3BFdmVudDpmdW5jdGlvbihDKXtpZih0aGlz LnN0b3BQcm9wYWdhdGlvbil7WUFIT08udXRpbC5FdmVudC5zdG9wUHJvcGFnYXRp b24oQyk7fWlmKHRoaXMucHJldmVudERlZmF1bHQpe1lBSE9PLnV0aWwuRXZlbnQu cHJldmVudERlZmF1bHQoQyk7fX0sc3RvcERyYWc6ZnVuY3Rpb24oRSxEKXt2YXIg Qz10aGlzLmRyYWdDdXJyZW50O2lmKEMmJiFEKXtpZih0aGlzLmRyYWdUaHJlc2hN ZXQpe2lmKEMuZXZlbnRzLmI0RW5kRHJhZyl7Qy5iNEVuZERyYWcoRSk7Qy5maXJl RXZlbnQoImI0RW5kRHJhZ0V2ZW50Iix7ZTpFfSk7fWlmKEMuZXZlbnRzLmVuZERy YWcpe0MuZW5kRHJhZyhFKTtDLmZpcmVFdmVudCgiZW5kRHJhZ0V2ZW50Iix7ZTpF fSk7fX1pZihDLmV2ZW50cy5tb3VzZVVwKXtDLm9uTW91c2VVcChFKTtDLmZpcmVF dmVudCgibW91c2VVcEV2ZW50Iix7ZTpFfSk7fX1pZih0aGlzLl9zaGltQWN0aXZl KXt0aGlzLl9kZWFjdGl2YXRlU2hpbSgpO2lmKHRoaXMuZHJhZ0N1cnJlbnQmJnRo aXMuZHJhZ0N1cnJlbnQudXNlU2hpbSl7dGhpcy51c2VTaGltPXRoaXMuX3NoaW1T dGF0ZTt0aGlzLl9zaGltU3RhdGU9ZmFsc2U7fX10aGlzLmRyYWdDdXJyZW50PW51 bGw7dGhpcy5kcmFnT3ZlcnM9e307fSxoYW5kbGVNb3VzZU1vdmU6ZnVuY3Rpb24o Ril7dmFyIEM9dGhpcy5kcmFnQ3VycmVudDtpZihDKXtpZihZQUhPTy51dGlsLkV2 ZW50LmlzSUUmJiFGLmJ1dHRvbil7dGhpcy5zdG9wRXZlbnQoRik7cmV0dXJuIHRo aXMuaGFuZGxlTW91c2VVcChGKTt9ZWxzZXtpZihGLmNsaWVudFg8MHx8Ri5jbGll bnRZPDApe319aWYoIXRoaXMuZHJhZ1RocmVzaE1ldCl7dmFyIEU9TWF0aC5hYnMo dGhpcy5zdGFydFgtWUFIT08udXRpbC5FdmVudC5nZXRQYWdlWChGKSk7dmFyIEQ9 TWF0aC5hYnModGhpcy5zdGFydFktWUFIT08udXRpbC5FdmVudC5nZXRQYWdlWShG KSk7aWYoRT50aGlzLmNsaWNrUGl4ZWxUaHJlc2h8fEQ+dGhpcy5jbGlja1BpeGVs VGhyZXNoKXt0aGlzLnN0YXJ0RHJhZyh0aGlzLnN0YXJ0WCx0aGlzLnN0YXJ0WSk7 fX1pZih0aGlzLmRyYWdUaHJlc2hNZXQpe2lmKEMmJkMuZXZlbnRzLmI0RHJhZyl7 Qy5iNERyYWcoRik7Qy5maXJlRXZlbnQoImI0RHJhZ0V2ZW50Iix7ZTpGfSk7fWlm KEMmJkMuZXZlbnRzLmRyYWcpe0Mub25EcmFnKEYpO0MuZmlyZUV2ZW50KCJkcmFn RXZlbnQiLHtlOkZ9KTt9aWYoQyl7dGhpcy5maXJlRXZlbnRzKEYsZmFsc2UpO319 dGhpcy5zdG9wRXZlbnQoRik7fX0sZmlyZUV2ZW50czpmdW5jdGlvbihWLEwpe3Zh ciBhPXRoaXMuZHJhZ0N1cnJlbnQ7aWYoIWF8fGEuaXNMb2NrZWQoKXx8YS5kcmFn T25seSl7cmV0dXJuO312YXIgTj1ZQUhPTy51dGlsLkV2ZW50LmdldFBhZ2VYKFYp LE09WUFIT08udXRpbC5FdmVudC5nZXRQYWdlWShWKSxQPW5ldyBZQUhPTy51dGls LlBvaW50KE4sTSksSz1hLmdldFRhcmdldENvb3JkKFAueCxQLnkpLEY9YS5nZXRE cmFnRWwoKSxFPVsib3V0Iiwib3ZlciIsImRyb3AiLCJlbnRlciJdLFU9bmV3IFlB SE9PLnV0aWwuUmVnaW9uKEsueSxLLngrRi5vZmZzZXRXaWR0aCxLLnkrRi5vZmZz ZXRIZWlnaHQsSy54KSxJPVtdLEQ9e30sUT1bXSxjPXtvdXRFdnRzOltdLG92ZXJF dnRzOltdLGRyb3BFdnRzOltdLGVudGVyRXZ0czpbXX07Zm9yKHZhciBTIGluIHRo aXMuZHJhZ092ZXJzKXt2YXIgZD10aGlzLmRyYWdPdmVyc1tTXTtpZighdGhpcy5p c1R5cGVPZkREKGQpKXtjb250aW51ZTsKfWlmKCF0aGlzLmlzT3ZlclRhcmdldChQ LGQsdGhpcy5tb2RlLFUpKXtjLm91dEV2dHMucHVzaChkKTt9SVtTXT10cnVlO2Rl bGV0ZSB0aGlzLmRyYWdPdmVyc1tTXTt9Zm9yKHZhciBSIGluIGEuZ3JvdXBzKXtp Zigic3RyaW5nIiE9dHlwZW9mIFIpe2NvbnRpbnVlO31mb3IoUyBpbiB0aGlzLmlk c1tSXSl7dmFyIEc9dGhpcy5pZHNbUl1bU107aWYoIXRoaXMuaXNUeXBlT2ZERChH KSl7Y29udGludWU7fWlmKEcuaXNUYXJnZXQmJiFHLmlzTG9ja2VkKCkmJkchPWEp e2lmKHRoaXMuaXNPdmVyVGFyZ2V0KFAsRyx0aGlzLm1vZGUsVSkpe0RbUl09dHJ1 ZTtpZihMKXtjLmRyb3BFdnRzLnB1c2goRyk7fWVsc2V7aWYoIUlbRy5pZF0pe2Mu ZW50ZXJFdnRzLnB1c2goRyk7fWVsc2V7Yy5vdmVyRXZ0cy5wdXNoKEcpO310aGlz LmRyYWdPdmVyc1tHLmlkXT1HO319fX19dGhpcy5pbnRlcmFjdGlvbkluZm89e291 dDpjLm91dEV2dHMsZW50ZXI6Yy5lbnRlckV2dHMsb3ZlcjpjLm92ZXJFdnRzLGRy b3A6Yy5kcm9wRXZ0cyxwb2ludDpQLGRyYWdnZWRSZWdpb246VSxzb3VyY2VSZWdp b246dGhpcy5sb2NhdGlvbkNhY2hlW2EuaWRdLHZhbGlkRHJvcDpMfTtmb3IodmFy IEMgaW4gRCl7US5wdXNoKEMpO31pZihMJiYhYy5kcm9wRXZ0cy5sZW5ndGgpe3Ro aXMuaW50ZXJhY3Rpb25JbmZvLnZhbGlkRHJvcD1mYWxzZTtpZihhLmV2ZW50cy5p bnZhbGlkRHJvcCl7YS5vbkludmFsaWREcm9wKFYpO2EuZmlyZUV2ZW50KCJpbnZh bGlkRHJvcEV2ZW50Iix7ZTpWfSk7fX1mb3IoUz0wO1M8RS5sZW5ndGg7UysrKXt2 YXIgWT1udWxsO2lmKGNbRVtTXSsiRXZ0cyJdKXtZPWNbRVtTXSsiRXZ0cyJdO31p ZihZJiZZLmxlbmd0aCl7dmFyIEg9RVtTXS5jaGFyQXQoMCkudG9VcHBlckNhc2Uo KStFW1NdLnN1YnN0cigxKSxYPSJvbkRyYWciK0gsSj0iYjREcmFnIitILE89ImRy YWciK0grIkV2ZW50IixXPSJkcmFnIitIO2lmKHRoaXMubW9kZSl7aWYoYS5ldmVu dHNbSl0pe2FbSl0oVixZLFEpO2EuZmlyZUV2ZW50KEorIkV2ZW50Iix7ZXZlbnQ6 VixpbmZvOlksZ3JvdXA6UX0pO31pZihhLmV2ZW50c1tXXSl7YVtYXShWLFksUSk7 YS5maXJlRXZlbnQoTyx7ZXZlbnQ6VixpbmZvOlksZ3JvdXA6UX0pO319ZWxzZXtm b3IodmFyIFo9MCxUPVkubGVuZ3RoO1o8VDsrK1ope2lmKGEuZXZlbnRzW0pdKXth W0pdKFYsWVtaXS5pZCxRWzBdKTthLmZpcmVFdmVudChKKyJFdmVudCIse2V2ZW50 OlYsaW5mbzpZW1pdLmlkLGdyb3VwOlFbMF19KTt9aWYoYS5ldmVudHNbV10pe2Fb WF0oVixZW1pdLmlkLFFbMF0pO2EuZmlyZUV2ZW50KE8se2V2ZW50OlYsaW5mbzpZ W1pdLmlkLGdyb3VwOlFbMF19KTt9fX19fX0sZ2V0QmVzdE1hdGNoOmZ1bmN0aW9u KEUpe3ZhciBHPW51bGw7dmFyIEQ9RS5sZW5ndGg7aWYoRD09MSl7Rz1FWzBdO31l bHNle2Zvcih2YXIgRj0wO0Y8RDsrK0Ype3ZhciBDPUVbRl07aWYodGhpcy5tb2Rl PT10aGlzLklOVEVSU0VDVCYmQy5jdXJzb3JJc092ZXIpe0c9QzticmVhazt9ZWxz ZXtpZighR3x8IUcub3ZlcmxhcHx8KEMub3ZlcmxhcCYmRy5vdmVybGFwLmdldEFy ZWEoKTxDLm92ZXJsYXAuZ2V0QXJlYSgpKSl7Rz1DO319fX1yZXR1cm4gRzt9LHJl ZnJlc2hDYWNoZTpmdW5jdGlvbihEKXt2YXIgRj1EfHx0aGlzLmlkcztmb3IodmFy IEMgaW4gRil7aWYoInN0cmluZyIhPXR5cGVvZiBDKXtjb250aW51ZTt9Zm9yKHZh ciBFIGluIHRoaXMuaWRzW0NdKXt2YXIgRz10aGlzLmlkc1tDXVtFXTtpZih0aGlz LmlzVHlwZU9mREQoRykpe3ZhciBIPXRoaXMuZ2V0TG9jYXRpb24oRyk7aWYoSCl7 dGhpcy5sb2NhdGlvbkNhY2hlW0cuaWRdPUg7fWVsc2V7ZGVsZXRlIHRoaXMubG9j YXRpb25DYWNoZVtHLmlkXTt9fX19fSx2ZXJpZnlFbDpmdW5jdGlvbihEKXt0cnl7 aWYoRCl7dmFyIEM9RC5vZmZzZXRQYXJlbnQ7aWYoQyl7cmV0dXJuIHRydWU7fX19 Y2F0Y2goRSl7fXJldHVybiBmYWxzZTt9LGdldExvY2F0aW9uOmZ1bmN0aW9uKEgp e2lmKCF0aGlzLmlzVHlwZU9mREQoSCkpe3JldHVybiBudWxsO312YXIgRj1ILmdl dEVsKCksSyxFLEQsTSxMLE4sQyxKLEc7dHJ5e0s9WUFIT08udXRpbC5Eb20uZ2V0 WFkoRik7fWNhdGNoKEkpe31pZighSyl7cmV0dXJuIG51bGw7fUU9S1swXTtEPUUr Ri5vZmZzZXRXaWR0aDtNPUtbMV07TD1NK0Yub2Zmc2V0SGVpZ2h0O049TS1ILnBh ZGRpbmdbMF07Qz1EK0gucGFkZGluZ1sxXTtKPUwrSC5wYWRkaW5nWzJdO0c9RS1I LnBhZGRpbmdbM107cmV0dXJuIG5ldyBZQUhPTy51dGlsLlJlZ2lvbihOLEMsSixH KTt9LGlzT3ZlclRhcmdldDpmdW5jdGlvbihLLEMsRSxGKXt2YXIgRz10aGlzLmxv Y2F0aW9uQ2FjaGVbQy5pZF07aWYoIUd8fCF0aGlzLnVzZUNhY2hlKXtHPXRoaXMu Z2V0TG9jYXRpb24oQyk7dGhpcy5sb2NhdGlvbkNhY2hlW0MuaWRdPUc7fWlmKCFH KXtyZXR1cm4gZmFsc2U7fUMuY3Vyc29ySXNPdmVyPUcuY29udGFpbnMoSyk7dmFy IEo9dGhpcy5kcmFnQ3VycmVudDtpZighSnx8KCFFJiYhSi5jb25zdHJhaW5YJiYh Si5jb25zdHJhaW5ZKSl7cmV0dXJuIEMuY3Vyc29ySXNPdmVyO31DLm92ZXJsYXA9 bnVsbDtpZighRil7dmFyIEg9Si5nZXRUYXJnZXRDb29yZChLLngsSy55KTt2YXIg RD1KLmdldERyYWdFbCgpO0Y9bmV3IFlBSE9PLnV0aWwuUmVnaW9uKEgueSxILngr RC5vZmZzZXRXaWR0aCxILnkrRC5vZmZzZXRIZWlnaHQsSC54KTt9dmFyIEk9Ri5p bnRlcnNlY3QoRyk7aWYoSSl7Qy5vdmVybGFwPUk7cmV0dXJuKEUpP3RydWU6Qy5j dXJzb3JJc092ZXI7fWVsc2V7cmV0dXJuIGZhbHNlO319LF9vblVubG9hZDpmdW5j dGlvbihELEMpe3RoaXMudW5yZWdBbGwoKTt9LHVucmVnQWxsOmZ1bmN0aW9uKCl7 aWYodGhpcy5kcmFnQ3VycmVudCl7dGhpcy5zdG9wRHJhZygpO3RoaXMuZHJhZ0N1 cnJlbnQ9bnVsbDt9dGhpcy5fZXhlY09uQWxsKCJ1bnJlZyIsW10pO3RoaXMuaWRz PXt9O30sZWxlbWVudENhY2hlOnt9LGdldEVsV3JhcHBlcjpmdW5jdGlvbihEKXt2 YXIgQz10aGlzLmVsZW1lbnRDYWNoZVtEXTtpZighQ3x8IUMuZWwpe0M9dGhpcy5l bGVtZW50Q2FjaGVbRF09bmV3IHRoaXMuRWxlbWVudFdyYXBwZXIoWUFIT08udXRp bC5Eb20uZ2V0KEQpKTt9cmV0dXJuIEM7fSxnZXRFbGVtZW50OmZ1bmN0aW9uKEMp e3JldHVybiBZQUhPTy51dGlsLkRvbS5nZXQoQyk7fSxnZXRDc3M6ZnVuY3Rpb24o RCl7dmFyIEM9WUFIT08udXRpbC5Eb20uZ2V0KEQpO3JldHVybihDKT9DLnN0eWxl Om51bGw7fSxFbGVtZW50V3JhcHBlcjpmdW5jdGlvbihDKXt0aGlzLmVsPUN8fG51 bGw7dGhpcy5pZD10aGlzLmVsJiZDLmlkO3RoaXMuY3NzPXRoaXMuZWwmJkMuc3R5 bGU7fSxnZXRQb3NYOmZ1bmN0aW9uKEMpe3JldHVybiBZQUhPTy51dGlsLkRvbS5n ZXRYKEMpO30sZ2V0UG9zWTpmdW5jdGlvbihDKXtyZXR1cm4gWUFIT08udXRpbC5E b20uZ2V0WShDKTt9LHN3YXBOb2RlOmZ1bmN0aW9uKEUsQyl7aWYoRS5zd2FwTm9k ZSl7RS5zd2FwTm9kZShDKTt9ZWxzZXt2YXIgRj1DLnBhcmVudE5vZGU7dmFyIEQ9 Qy5uZXh0U2libGluZztpZihEPT1FKXtGLmluc2VydEJlZm9yZShFLEMpO31lbHNl e2lmKEM9PUUubmV4dFNpYmxpbmcpe0YuaW5zZXJ0QmVmb3JlKEMsRSk7fWVsc2V7 RS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChDLEUpO0YuaW5zZXJ0QmVmb3JlKEUs RCk7fX19fSxnZXRTY3JvbGw6ZnVuY3Rpb24oKXt2YXIgRSxDLEY9ZG9jdW1lbnQu ZG9jdW1lbnRFbGVtZW50LEQ9ZG9jdW1lbnQuYm9keTtpZihGJiYoRi5zY3JvbGxU b3B8fEYuc2Nyb2xsTGVmdCkpe0U9Ri5zY3JvbGxUb3A7Qz1GLnNjcm9sbExlZnQ7 fWVsc2V7aWYoRCl7RT1ELnNjcm9sbFRvcDtDPUQuc2Nyb2xsTGVmdDt9ZWxzZXt9 fXJldHVybnt0b3A6RSxsZWZ0OkN9O30sZ2V0U3R5bGU6ZnVuY3Rpb24oRCxDKXty ZXR1cm4gWUFIT08udXRpbC5Eb20uZ2V0U3R5bGUoRCxDKTt9LGdldFNjcm9sbFRv cDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFNjcm9sbCgpLnRvcDt9LGdldFNj cm9sbExlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRTY3JvbGwoKS5sZWZ0 O30sbW92ZVRvRWw6ZnVuY3Rpb24oQyxFKXt2YXIgRD1ZQUhPTy51dGlsLkRvbS5n ZXRYWShFKTtZQUhPTy51dGlsLkRvbS5zZXRYWShDLEQpO30sZ2V0Q2xpZW50SGVp Z2h0OmZ1bmN0aW9uKCl7cmV0dXJuIFlBSE9PLnV0aWwuRG9tLmdldFZpZXdwb3J0 SGVpZ2h0KCk7fSxnZXRDbGllbnRXaWR0aDpmdW5jdGlvbigpe3JldHVybiBZQUhP Ty51dGlsLkRvbS5nZXRWaWV3cG9ydFdpZHRoKCk7fSxudW1lcmljU29ydDpmdW5j dGlvbihELEMpe3JldHVybihELUMpO30sX3RpbWVvdXRDb3VudDowLF9hZGRMaXN0 ZW5lcnM6ZnVuY3Rpb24oKXt2YXIgQz1ZQUhPTy51dGlsLkRETTtpZihZQUhPTy51 dGlsLkV2ZW50JiZkb2N1bWVudCl7Qy5fb25Mb2FkKCk7fWVsc2V7aWYoQy5fdGlt ZW91dENvdW50PjIwMDApe31lbHNle3NldFRpbWVvdXQoQy5fYWRkTGlzdGVuZXJz LDEwKTtpZihkb2N1bWVudCYmZG9jdW1lbnQuYm9keSl7Qy5fdGltZW91dENvdW50 Kz0xO319fX0saGFuZGxlV2FzQ2xpY2tlZDpmdW5jdGlvbihDLEUpe2lmKHRoaXMu aXNIYW5kbGUoRSxDLmlkKSl7cmV0dXJuIHRydWU7fWVsc2V7dmFyIEQ9Qy5wYXJl bnROb2RlO3doaWxlKEQpe2lmKHRoaXMuaXNIYW5kbGUoRSxELmlkKSl7cmV0dXJu IHRydWU7fWVsc2V7RD1ELnBhcmVudE5vZGU7fX19cmV0dXJuIGZhbHNlO319O30o KTtZQUhPTy51dGlsLkRETT1ZQUhPTy51dGlsLkRyYWdEcm9wTWdyO1lBSE9PLnV0 aWwuRERNLl9hZGRMaXN0ZW5lcnMoKTt9KGZ1bmN0aW9uKCl7dmFyIEE9WUFIT08u dXRpbC5FdmVudDt2YXIgQj1ZQUhPTy51dGlsLkRvbTtZQUhPTy51dGlsLkRyYWdE cm9wPWZ1bmN0aW9uKEUsQyxEKXtpZihFKXt0aGlzLmluaXQoRSxDLEQpO319O1lB SE9PLnV0aWwuRHJhZ0Ryb3AucHJvdG90eXBlPXtldmVudHM6bnVsbCxvbjpmdW5j dGlvbigpe3RoaXMuc3Vic2NyaWJlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt9LGlk Om51bGwsY29uZmlnOm51bGwsZHJhZ0VsSWQ6bnVsbCxoYW5kbGVFbElkOm51bGws aW52YWxpZEhhbmRsZVR5cGVzOm51bGwsaW52YWxpZEhhbmRsZUlkczpudWxsLGlu dmFsaWRIYW5kbGVDbGFzc2VzOm51bGwsc3RhcnRQYWdlWDowLHN0YXJ0UGFnZVk6 MCxncm91cHM6bnVsbCxsb2NrZWQ6ZmFsc2UsbG9jazpmdW5jdGlvbigpe3RoaXMu bG9ja2VkPXRydWU7fSx1bmxvY2s6ZnVuY3Rpb24oKXt0aGlzLmxvY2tlZD1mYWxz ZTt9LGlzVGFyZ2V0OnRydWUscGFkZGluZzpudWxsLGRyYWdPbmx5OmZhbHNlLHVz ZVNoaW06ZmFsc2UsX2RvbVJlZjpudWxsLF9feWdEcmFnRHJvcDp0cnVlLGNvbnN0 cmFpblg6ZmFsc2UsY29uc3RyYWluWTpmYWxzZSxtaW5YOjAsbWF4WDowLG1pblk6 MCxtYXhZOjAsZGVsdGFYOjAsZGVsdGFZOjAsbWFpbnRhaW5PZmZzZXQ6ZmFsc2Us eFRpY2tzOm51bGwseVRpY2tzOm51bGwscHJpbWFyeUJ1dHRvbk9ubHk6dHJ1ZSxh dmFpbGFibGU6ZmFsc2UsaGFzT3V0ZXJIYW5kbGVzOmZhbHNlLGN1cnNvcklzT3Zl cjpmYWxzZSxvdmVybGFwOm51bGwsYjRTdGFydERyYWc6ZnVuY3Rpb24oQyxEKXt9 LHN0YXJ0RHJhZzpmdW5jdGlvbihDLEQpe30sYjREcmFnOmZ1bmN0aW9uKEMpe30s b25EcmFnOmZ1bmN0aW9uKEMpe30sb25EcmFnRW50ZXI6ZnVuY3Rpb24oQyxEKXt9 LGI0RHJhZ092ZXI6ZnVuY3Rpb24oQyl7fSxvbkRyYWdPdmVyOmZ1bmN0aW9uKEMs RCl7fSxiNERyYWdPdXQ6ZnVuY3Rpb24oQyl7fSxvbkRyYWdPdXQ6ZnVuY3Rpb24o QyxEKXt9LGI0RHJhZ0Ryb3A6ZnVuY3Rpb24oQyl7fSxvbkRyYWdEcm9wOmZ1bmN0 aW9uKEMsRCl7fSxvbkludmFsaWREcm9wOmZ1bmN0aW9uKEMpe30sYjRFbmREcmFn OmZ1bmN0aW9uKEMpe30sZW5kRHJhZzpmdW5jdGlvbihDKXt9LGI0TW91c2VEb3du OmZ1bmN0aW9uKEMpe30sb25Nb3VzZURvd246ZnVuY3Rpb24oQyl7fSxvbk1vdXNl VXA6ZnVuY3Rpb24oQyl7fSxvbkF2YWlsYWJsZTpmdW5jdGlvbigpe30sZ2V0RWw6 ZnVuY3Rpb24oKXtpZighdGhpcy5fZG9tUmVmKXt0aGlzLl9kb21SZWY9Qi5nZXQo dGhpcy5pZCk7Cn1yZXR1cm4gdGhpcy5fZG9tUmVmO30sZ2V0RHJhZ0VsOmZ1bmN0 aW9uKCl7cmV0dXJuIEIuZ2V0KHRoaXMuZHJhZ0VsSWQpO30saW5pdDpmdW5jdGlv bihGLEMsRCl7dGhpcy5pbml0VGFyZ2V0KEYsQyxEKTtBLm9uKHRoaXMuX2RvbVJl Znx8dGhpcy5pZCwibW91c2Vkb3duIix0aGlzLmhhbmRsZU1vdXNlRG93bix0aGlz LHRydWUpO2Zvcih2YXIgRSBpbiB0aGlzLmV2ZW50cyl7dGhpcy5jcmVhdGVFdmVu dChFKyJFdmVudCIpO319LGluaXRUYXJnZXQ6ZnVuY3Rpb24oRSxDLEQpe3RoaXMu Y29uZmlnPUR8fHt9O3RoaXMuZXZlbnRzPXt9O3RoaXMuRERNPVlBSE9PLnV0aWwu RERNO3RoaXMuZ3JvdXBzPXt9O2lmKHR5cGVvZiBFIT09InN0cmluZyIpe3RoaXMu X2RvbVJlZj1FO0U9Qi5nZW5lcmF0ZUlkKEUpO310aGlzLmlkPUU7dGhpcy5hZGRU b0dyb3VwKChDKT9DOiJkZWZhdWx0Iik7dGhpcy5oYW5kbGVFbElkPUU7QS5vbkF2 YWlsYWJsZShFLHRoaXMuaGFuZGxlT25BdmFpbGFibGUsdGhpcyx0cnVlKTt0aGlz LnNldERyYWdFbElkKEUpO3RoaXMuaW52YWxpZEhhbmRsZVR5cGVzPXtBOiJBIn07 dGhpcy5pbnZhbGlkSGFuZGxlSWRzPXt9O3RoaXMuaW52YWxpZEhhbmRsZUNsYXNz ZXM9W107dGhpcy5hcHBseUNvbmZpZygpO30sYXBwbHlDb25maWc6ZnVuY3Rpb24o KXt0aGlzLmV2ZW50cz17bW91c2VEb3duOnRydWUsYjRNb3VzZURvd246dHJ1ZSxt b3VzZVVwOnRydWUsYjRTdGFydERyYWc6dHJ1ZSxzdGFydERyYWc6dHJ1ZSxiNEVu ZERyYWc6dHJ1ZSxlbmREcmFnOnRydWUsZHJhZzp0cnVlLGI0RHJhZzp0cnVlLGlu dmFsaWREcm9wOnRydWUsYjREcmFnT3V0OnRydWUsZHJhZ091dDp0cnVlLGRyYWdF bnRlcjp0cnVlLGI0RHJhZ092ZXI6dHJ1ZSxkcmFnT3Zlcjp0cnVlLGI0RHJhZ0Ry b3A6dHJ1ZSxkcmFnRHJvcDp0cnVlfTtpZih0aGlzLmNvbmZpZy5ldmVudHMpe2Zv cih2YXIgQyBpbiB0aGlzLmNvbmZpZy5ldmVudHMpe2lmKHRoaXMuY29uZmlnLmV2 ZW50c1tDXT09PWZhbHNlKXt0aGlzLmV2ZW50c1tDXT1mYWxzZTt9fX10aGlzLnBh ZGRpbmc9dGhpcy5jb25maWcucGFkZGluZ3x8WzAsMCwwLDBdO3RoaXMuaXNUYXJn ZXQ9KHRoaXMuY29uZmlnLmlzVGFyZ2V0IT09ZmFsc2UpO3RoaXMubWFpbnRhaW5P ZmZzZXQ9KHRoaXMuY29uZmlnLm1haW50YWluT2Zmc2V0KTt0aGlzLnByaW1hcnlC dXR0b25Pbmx5PSh0aGlzLmNvbmZpZy5wcmltYXJ5QnV0dG9uT25seSE9PWZhbHNl KTt0aGlzLmRyYWdPbmx5PSgodGhpcy5jb25maWcuZHJhZ09ubHk9PT10cnVlKT90 cnVlOmZhbHNlKTt0aGlzLnVzZVNoaW09KCh0aGlzLmNvbmZpZy51c2VTaGltPT09 dHJ1ZSk/dHJ1ZTpmYWxzZSk7fSxoYW5kbGVPbkF2YWlsYWJsZTpmdW5jdGlvbigp e3RoaXMuYXZhaWxhYmxlPXRydWU7dGhpcy5yZXNldENvbnN0cmFpbnRzKCk7dGhp cy5vbkF2YWlsYWJsZSgpO30sc2V0UGFkZGluZzpmdW5jdGlvbihFLEMsRixEKXtp ZighQyYmMCE9PUMpe3RoaXMucGFkZGluZz1bRSxFLEUsRV07fWVsc2V7aWYoIUYm JjAhPT1GKXt0aGlzLnBhZGRpbmc9W0UsQyxFLENdO31lbHNle3RoaXMucGFkZGlu Zz1bRSxDLEYsRF07fX19LHNldEluaXRQb3NpdGlvbjpmdW5jdGlvbihGLEUpe3Zh ciBHPXRoaXMuZ2V0RWwoKTtpZighdGhpcy5ERE0udmVyaWZ5RWwoRykpe2lmKEcm Jkcuc3R5bGUmJihHLnN0eWxlLmRpc3BsYXk9PSJub25lIikpe31lbHNle31yZXR1 cm47fXZhciBEPUZ8fDA7dmFyIEM9RXx8MDt2YXIgSD1CLmdldFhZKEcpO3RoaXMu aW5pdFBhZ2VYPUhbMF0tRDt0aGlzLmluaXRQYWdlWT1IWzFdLUM7dGhpcy5sYXN0 UGFnZVg9SFswXTt0aGlzLmxhc3RQYWdlWT1IWzFdO3RoaXMuc2V0U3RhcnRQb3Np dGlvbihIKTt9LHNldFN0YXJ0UG9zaXRpb246ZnVuY3Rpb24oRCl7dmFyIEM9RHx8 Qi5nZXRYWSh0aGlzLmdldEVsKCkpO3RoaXMuZGVsdGFTZXRYWT1udWxsO3RoaXMu c3RhcnRQYWdlWD1DWzBdO3RoaXMuc3RhcnRQYWdlWT1DWzFdO30sYWRkVG9Hcm91 cDpmdW5jdGlvbihDKXt0aGlzLmdyb3Vwc1tDXT10cnVlO3RoaXMuRERNLnJlZ0Ry YWdEcm9wKHRoaXMsQyk7fSxyZW1vdmVGcm9tR3JvdXA6ZnVuY3Rpb24oQyl7aWYo dGhpcy5ncm91cHNbQ10pe2RlbGV0ZSB0aGlzLmdyb3Vwc1tDXTt9dGhpcy5ERE0u cmVtb3ZlRERGcm9tR3JvdXAodGhpcyxDKTt9LHNldERyYWdFbElkOmZ1bmN0aW9u KEMpe3RoaXMuZHJhZ0VsSWQ9Qzt9LHNldEhhbmRsZUVsSWQ6ZnVuY3Rpb24oQyl7 aWYodHlwZW9mIEMhPT0ic3RyaW5nIil7Qz1CLmdlbmVyYXRlSWQoQyk7fXRoaXMu aGFuZGxlRWxJZD1DO3RoaXMuRERNLnJlZ0hhbmRsZSh0aGlzLmlkLEMpO30sc2V0 T3V0ZXJIYW5kbGVFbElkOmZ1bmN0aW9uKEMpe2lmKHR5cGVvZiBDIT09InN0cmlu ZyIpe0M9Qi5nZW5lcmF0ZUlkKEMpO31BLm9uKEMsIm1vdXNlZG93biIsdGhpcy5o YW5kbGVNb3VzZURvd24sdGhpcyx0cnVlKTt0aGlzLnNldEhhbmRsZUVsSWQoQyk7 dGhpcy5oYXNPdXRlckhhbmRsZXM9dHJ1ZTt9LHVucmVnOmZ1bmN0aW9uKCl7QS5y ZW1vdmVMaXN0ZW5lcih0aGlzLmlkLCJtb3VzZWRvd24iLHRoaXMuaGFuZGxlTW91 c2VEb3duKTt0aGlzLl9kb21SZWY9bnVsbDt0aGlzLkRETS5fcmVtb3ZlKHRoaXMp O30saXNMb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5ERE0uaXNMb2NrZWQo KXx8dGhpcy5sb2NrZWQpO30saGFuZGxlTW91c2VEb3duOmZ1bmN0aW9uKEosSSl7 dmFyIEQ9Si53aGljaHx8Si5idXR0b247aWYodGhpcy5wcmltYXJ5QnV0dG9uT25s eSYmRD4xKXtyZXR1cm47fWlmKHRoaXMuaXNMb2NrZWQoKSl7cmV0dXJuO312YXIg Qz10aGlzLmI0TW91c2VEb3duKEopLEY9dHJ1ZTtpZih0aGlzLmV2ZW50cy5iNE1v dXNlRG93bil7Rj10aGlzLmZpcmVFdmVudCgiYjRNb3VzZURvd25FdmVudCIsSik7 fXZhciBFPXRoaXMub25Nb3VzZURvd24oSiksSD10cnVlO2lmKHRoaXMuZXZlbnRz Lm1vdXNlRG93bil7SD10aGlzLmZpcmVFdmVudCgibW91c2VEb3duRXZlbnQiLEop O31pZigoQz09PWZhbHNlKXx8KEU9PT1mYWxzZSl8fChGPT09ZmFsc2UpfHwoSD09 PWZhbHNlKSl7cmV0dXJuO310aGlzLkRETS5yZWZyZXNoQ2FjaGUodGhpcy5ncm91 cHMpO3ZhciBHPW5ldyBZQUhPTy51dGlsLlBvaW50KEEuZ2V0UGFnZVgoSiksQS5n ZXRQYWdlWShKKSk7aWYoIXRoaXMuaGFzT3V0ZXJIYW5kbGVzJiYhdGhpcy5ERE0u aXNPdmVyVGFyZ2V0KEcsdGhpcykpe31lbHNle2lmKHRoaXMuY2xpY2tWYWxpZGF0 b3IoSikpe3RoaXMuc2V0U3RhcnRQb3NpdGlvbigpO3RoaXMuRERNLmhhbmRsZU1v dXNlRG93bihKLHRoaXMpO3RoaXMuRERNLnN0b3BFdmVudChKKTt9ZWxzZXt9fX0s Y2xpY2tWYWxpZGF0b3I6ZnVuY3Rpb24oRCl7dmFyIEM9WUFIT08udXRpbC5FdmVu dC5nZXRUYXJnZXQoRCk7cmV0dXJuKHRoaXMuaXNWYWxpZEhhbmRsZUNoaWxkKEMp JiYodGhpcy5pZD09dGhpcy5oYW5kbGVFbElkfHx0aGlzLkRETS5oYW5kbGVXYXND bGlja2VkKEMsdGhpcy5pZCkpKTt9LGdldFRhcmdldENvb3JkOmZ1bmN0aW9uKEUs RCl7dmFyIEM9RS10aGlzLmRlbHRhWDt2YXIgRj1ELXRoaXMuZGVsdGFZO2lmKHRo aXMuY29uc3RyYWluWCl7aWYoQzx0aGlzLm1pblgpe0M9dGhpcy5taW5YO31pZihD PnRoaXMubWF4WCl7Qz10aGlzLm1heFg7fX1pZih0aGlzLmNvbnN0cmFpblkpe2lm KEY8dGhpcy5taW5ZKXtGPXRoaXMubWluWTt9aWYoRj50aGlzLm1heFkpe0Y9dGhp cy5tYXhZO319Qz10aGlzLmdldFRpY2soQyx0aGlzLnhUaWNrcyk7Rj10aGlzLmdl dFRpY2soRix0aGlzLnlUaWNrcyk7cmV0dXJue3g6Qyx5OkZ9O30sYWRkSW52YWxp ZEhhbmRsZVR5cGU6ZnVuY3Rpb24oQyl7dmFyIEQ9Qy50b1VwcGVyQ2FzZSgpO3Ro aXMuaW52YWxpZEhhbmRsZVR5cGVzW0RdPUQ7fSxhZGRJbnZhbGlkSGFuZGxlSWQ6 ZnVuY3Rpb24oQyl7aWYodHlwZW9mIEMhPT0ic3RyaW5nIil7Qz1CLmdlbmVyYXRl SWQoQyk7fXRoaXMuaW52YWxpZEhhbmRsZUlkc1tDXT1DO30sYWRkSW52YWxpZEhh bmRsZUNsYXNzOmZ1bmN0aW9uKEMpe3RoaXMuaW52YWxpZEhhbmRsZUNsYXNzZXMu cHVzaChDKTt9LHJlbW92ZUludmFsaWRIYW5kbGVUeXBlOmZ1bmN0aW9uKEMpe3Zh ciBEPUMudG9VcHBlckNhc2UoKTtkZWxldGUgdGhpcy5pbnZhbGlkSGFuZGxlVHlw ZXNbRF07fSxyZW1vdmVJbnZhbGlkSGFuZGxlSWQ6ZnVuY3Rpb24oQyl7aWYodHlw ZW9mIEMhPT0ic3RyaW5nIil7Qz1CLmdlbmVyYXRlSWQoQyk7fWRlbGV0ZSB0aGlz LmludmFsaWRIYW5kbGVJZHNbQ107fSxyZW1vdmVJbnZhbGlkSGFuZGxlQ2xhc3M6 ZnVuY3Rpb24oRCl7Zm9yKHZhciBFPTAsQz10aGlzLmludmFsaWRIYW5kbGVDbGFz c2VzLmxlbmd0aDtFPEM7KytFKXtpZih0aGlzLmludmFsaWRIYW5kbGVDbGFzc2Vz W0VdPT1EKXtkZWxldGUgdGhpcy5pbnZhbGlkSGFuZGxlQ2xhc3Nlc1tFXTt9fX0s aXNWYWxpZEhhbmRsZUNoaWxkOmZ1bmN0aW9uKEYpe3ZhciBFPXRydWU7dmFyIEg7 dHJ5e0g9Ri5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpO31jYXRjaChHKXtIPUYubm9k ZU5hbWU7fUU9RSYmIXRoaXMuaW52YWxpZEhhbmRsZVR5cGVzW0hdO0U9RSYmIXRo aXMuaW52YWxpZEhhbmRsZUlkc1tGLmlkXTtmb3IodmFyIEQ9MCxDPXRoaXMuaW52 YWxpZEhhbmRsZUNsYXNzZXMubGVuZ3RoO0UmJkQ8QzsrK0Qpe0U9IUIuaGFzQ2xh c3MoRix0aGlzLmludmFsaWRIYW5kbGVDbGFzc2VzW0RdKTt9cmV0dXJuIEU7fSxz ZXRYVGlja3M6ZnVuY3Rpb24oRixDKXt0aGlzLnhUaWNrcz1bXTt0aGlzLnhUaWNr U2l6ZT1DO3ZhciBFPXt9O2Zvcih2YXIgRD10aGlzLmluaXRQYWdlWDtEPj10aGlz Lm1pblg7RD1ELUMpe2lmKCFFW0RdKXt0aGlzLnhUaWNrc1t0aGlzLnhUaWNrcy5s ZW5ndGhdPUQ7RVtEXT10cnVlO319Zm9yKEQ9dGhpcy5pbml0UGFnZVg7RDw9dGhp cy5tYXhYO0Q9RCtDKXtpZighRVtEXSl7dGhpcy54VGlja3NbdGhpcy54VGlja3Mu bGVuZ3RoXT1EO0VbRF09dHJ1ZTt9fXRoaXMueFRpY2tzLnNvcnQodGhpcy5ERE0u bnVtZXJpY1NvcnQpO30sc2V0WVRpY2tzOmZ1bmN0aW9uKEYsQyl7dGhpcy55VGlj a3M9W107dGhpcy55VGlja1NpemU9Qzt2YXIgRT17fTtmb3IodmFyIEQ9dGhpcy5p bml0UGFnZVk7RD49dGhpcy5taW5ZO0Q9RC1DKXtpZighRVtEXSl7dGhpcy55VGlj a3NbdGhpcy55VGlja3MubGVuZ3RoXT1EO0VbRF09dHJ1ZTt9fWZvcihEPXRoaXMu aW5pdFBhZ2VZO0Q8PXRoaXMubWF4WTtEPUQrQyl7aWYoIUVbRF0pe3RoaXMueVRp Y2tzW3RoaXMueVRpY2tzLmxlbmd0aF09RDtFW0RdPXRydWU7fX10aGlzLnlUaWNr cy5zb3J0KHRoaXMuRERNLm51bWVyaWNTb3J0KTt9LHNldFhDb25zdHJhaW50OmZ1 bmN0aW9uKEUsRCxDKXt0aGlzLmxlZnRDb25zdHJhaW50PXBhcnNlSW50KEUsMTAp O3RoaXMucmlnaHRDb25zdHJhaW50PXBhcnNlSW50KEQsMTApO3RoaXMubWluWD10 aGlzLmluaXRQYWdlWC10aGlzLmxlZnRDb25zdHJhaW50O3RoaXMubWF4WD10aGlz LmluaXRQYWdlWCt0aGlzLnJpZ2h0Q29uc3RyYWludDtpZihDKXt0aGlzLnNldFhU aWNrcyh0aGlzLmluaXRQYWdlWCxDKTt9dGhpcy5jb25zdHJhaW5YPXRydWU7fSxj bGVhckNvbnN0cmFpbnRzOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJhaW5YPWZhbHNl O3RoaXMuY29uc3RyYWluWT1mYWxzZTt0aGlzLmNsZWFyVGlja3MoKTt9LGNsZWFy VGlja3M6ZnVuY3Rpb24oKXt0aGlzLnhUaWNrcz1udWxsO3RoaXMueVRpY2tzPW51 bGw7dGhpcy54VGlja1NpemU9MDt0aGlzLnlUaWNrU2l6ZT0wO30sc2V0WUNvbnN0 cmFpbnQ6ZnVuY3Rpb24oQyxFLEQpe3RoaXMudG9wQ29uc3RyYWludD1wYXJzZUlu dChDLDEwKTt0aGlzLmJvdHRvbUNvbnN0cmFpbnQ9cGFyc2VJbnQoRSwxMCk7dGhp cy5taW5ZPXRoaXMuaW5pdFBhZ2VZLXRoaXMudG9wQ29uc3RyYWludDt0aGlzLm1h eFk9dGhpcy5pbml0UGFnZVkrdGhpcy5ib3R0b21Db25zdHJhaW50O2lmKEQpe3Ro aXMuc2V0WVRpY2tzKHRoaXMuaW5pdFBhZ2VZLEQpOwp9dGhpcy5jb25zdHJhaW5Z PXRydWU7fSxyZXNldENvbnN0cmFpbnRzOmZ1bmN0aW9uKCl7aWYodGhpcy5pbml0 UGFnZVh8fHRoaXMuaW5pdFBhZ2VYPT09MCl7dmFyIEQ9KHRoaXMubWFpbnRhaW5P ZmZzZXQpP3RoaXMubGFzdFBhZ2VYLXRoaXMuaW5pdFBhZ2VYOjA7dmFyIEM9KHRo aXMubWFpbnRhaW5PZmZzZXQpP3RoaXMubGFzdFBhZ2VZLXRoaXMuaW5pdFBhZ2VZ OjA7dGhpcy5zZXRJbml0UG9zaXRpb24oRCxDKTt9ZWxzZXt0aGlzLnNldEluaXRQ b3NpdGlvbigpO31pZih0aGlzLmNvbnN0cmFpblgpe3RoaXMuc2V0WENvbnN0cmFp bnQodGhpcy5sZWZ0Q29uc3RyYWludCx0aGlzLnJpZ2h0Q29uc3RyYWludCx0aGlz LnhUaWNrU2l6ZSk7fWlmKHRoaXMuY29uc3RyYWluWSl7dGhpcy5zZXRZQ29uc3Ry YWludCh0aGlzLnRvcENvbnN0cmFpbnQsdGhpcy5ib3R0b21Db25zdHJhaW50LHRo aXMueVRpY2tTaXplKTt9fSxnZXRUaWNrOmZ1bmN0aW9uKEksRil7aWYoIUYpe3Jl dHVybiBJO31lbHNle2lmKEZbMF0+PUkpe3JldHVybiBGWzBdO31lbHNle2Zvcih2 YXIgRD0wLEM9Ri5sZW5ndGg7RDxDOysrRCl7dmFyIEU9RCsxO2lmKEZbRV0mJkZb RV0+PUkpe3ZhciBIPUktRltEXTt2YXIgRz1GW0VdLUk7cmV0dXJuKEc+SCk/RltE XTpGW0VdO319cmV0dXJuIEZbRi5sZW5ndGgtMV07fX19LHRvU3RyaW5nOmZ1bmN0 aW9uKCl7cmV0dXJuKCJEcmFnRHJvcCAiK3RoaXMuaWQpO319O1lBSE9PLmF1Z21l bnQoWUFIT08udXRpbC5EcmFnRHJvcCxZQUhPTy51dGlsLkV2ZW50UHJvdmlkZXIp O30pKCk7WUFIT08udXRpbC5ERD1mdW5jdGlvbihDLEEsQil7aWYoQyl7dGhpcy5p bml0KEMsQSxCKTt9fTtZQUhPTy5leHRlbmQoWUFIT08udXRpbC5ERCxZQUhPTy51 dGlsLkRyYWdEcm9wLHtzY3JvbGw6dHJ1ZSxhdXRvT2Zmc2V0OmZ1bmN0aW9uKEMs Qil7dmFyIEE9Qy10aGlzLnN0YXJ0UGFnZVg7dmFyIEQ9Qi10aGlzLnN0YXJ0UGFn ZVk7dGhpcy5zZXREZWx0YShBLEQpO30sc2V0RGVsdGE6ZnVuY3Rpb24oQixBKXt0 aGlzLmRlbHRhWD1CO3RoaXMuZGVsdGFZPUE7fSxzZXREcmFnRWxQb3M6ZnVuY3Rp b24oQyxCKXt2YXIgQT10aGlzLmdldERyYWdFbCgpO3RoaXMuYWxpZ25FbFdpdGhN b3VzZShBLEMsQik7fSxhbGlnbkVsV2l0aE1vdXNlOmZ1bmN0aW9uKEMsRyxGKXt2 YXIgRT10aGlzLmdldFRhcmdldENvb3JkKEcsRik7aWYoIXRoaXMuZGVsdGFTZXRY WSl7dmFyIEg9W0UueCxFLnldO1lBSE9PLnV0aWwuRG9tLnNldFhZKEMsSCk7dmFy IEQ9cGFyc2VJbnQoWUFIT08udXRpbC5Eb20uZ2V0U3R5bGUoQywibGVmdCIpLDEw KTt2YXIgQj1wYXJzZUludChZQUhPTy51dGlsLkRvbS5nZXRTdHlsZShDLCJ0b3Ai KSwxMCk7dGhpcy5kZWx0YVNldFhZPVtELUUueCxCLUUueV07fWVsc2V7WUFIT08u dXRpbC5Eb20uc2V0U3R5bGUoQywibGVmdCIsKEUueCt0aGlzLmRlbHRhU2V0WFlb MF0pKyJweCIpO1lBSE9PLnV0aWwuRG9tLnNldFN0eWxlKEMsInRvcCIsKEUueSt0 aGlzLmRlbHRhU2V0WFlbMV0pKyJweCIpO310aGlzLmNhY2hlUG9zaXRpb24oRS54 LEUueSk7dmFyIEE9dGhpcztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7QS5hdXRvU2Ny b2xsLmNhbGwoQSxFLngsRS55LEMub2Zmc2V0SGVpZ2h0LEMub2Zmc2V0V2lkdGgp O30sMCk7fSxjYWNoZVBvc2l0aW9uOmZ1bmN0aW9uKEIsQSl7aWYoQil7dGhpcy5s YXN0UGFnZVg9Qjt0aGlzLmxhc3RQYWdlWT1BO31lbHNle3ZhciBDPVlBSE9PLnV0 aWwuRG9tLmdldFhZKHRoaXMuZ2V0RWwoKSk7dGhpcy5sYXN0UGFnZVg9Q1swXTt0 aGlzLmxhc3RQYWdlWT1DWzFdO319LGF1dG9TY3JvbGw6ZnVuY3Rpb24oSixJLEUs Syl7aWYodGhpcy5zY3JvbGwpe3ZhciBMPXRoaXMuRERNLmdldENsaWVudEhlaWdo dCgpO3ZhciBCPXRoaXMuRERNLmdldENsaWVudFdpZHRoKCk7dmFyIE49dGhpcy5E RE0uZ2V0U2Nyb2xsVG9wKCk7dmFyIEQ9dGhpcy5ERE0uZ2V0U2Nyb2xsTGVmdCgp O3ZhciBIPUUrSTt2YXIgTT1LK0o7dmFyIEc9KEwrTi1JLXRoaXMuZGVsdGFZKTt2 YXIgRj0oQitELUotdGhpcy5kZWx0YVgpO3ZhciBDPTQwO3ZhciBBPShkb2N1bWVu dC5hbGwpPzgwOjMwO2lmKEg+TCYmRzxDKXt3aW5kb3cuc2Nyb2xsVG8oRCxOK0Ep O31pZihJPE4mJk4+MCYmSS1OPEMpe3dpbmRvdy5zY3JvbGxUbyhELE4tQSk7fWlm KE0+QiYmRjxDKXt3aW5kb3cuc2Nyb2xsVG8oRCtBLE4pO31pZihKPEQmJkQ+MCYm Si1EPEMpe3dpbmRvdy5zY3JvbGxUbyhELUEsTik7fX19LGFwcGx5Q29uZmlnOmZ1 bmN0aW9uKCl7WUFIT08udXRpbC5ERC5zdXBlcmNsYXNzLmFwcGx5Q29uZmlnLmNh bGwodGhpcyk7dGhpcy5zY3JvbGw9KHRoaXMuY29uZmlnLnNjcm9sbCE9PWZhbHNl KTt9LGI0TW91c2VEb3duOmZ1bmN0aW9uKEEpe3RoaXMuc2V0U3RhcnRQb3NpdGlv bigpO3RoaXMuYXV0b09mZnNldChZQUhPTy51dGlsLkV2ZW50LmdldFBhZ2VYKEEp LFlBSE9PLnV0aWwuRXZlbnQuZ2V0UGFnZVkoQSkpO30sYjREcmFnOmZ1bmN0aW9u KEEpe3RoaXMuc2V0RHJhZ0VsUG9zKFlBSE9PLnV0aWwuRXZlbnQuZ2V0UGFnZVgo QSksWUFIT08udXRpbC5FdmVudC5nZXRQYWdlWShBKSk7fSx0b1N0cmluZzpmdW5j dGlvbigpe3JldHVybigiREQgIit0aGlzLmlkKTt9fSk7WUFIT08udXRpbC5ERFBy b3h5PWZ1bmN0aW9uKEMsQSxCKXtpZihDKXt0aGlzLmluaXQoQyxBLEIpO3RoaXMu aW5pdEZyYW1lKCk7fX07WUFIT08udXRpbC5ERFByb3h5LmRyYWdFbElkPSJ5Z2Rk ZmRpdiI7WUFIT08uZXh0ZW5kKFlBSE9PLnV0aWwuRERQcm94eSxZQUhPTy51dGls LkRELHtyZXNpemVGcmFtZTp0cnVlLGNlbnRlckZyYW1lOmZhbHNlLGNyZWF0ZUZy YW1lOmZ1bmN0aW9uKCl7dmFyIEI9dGhpcyxBPWRvY3VtZW50LmJvZHk7aWYoIUF8 fCFBLmZpcnN0Q2hpbGQpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtCLmNyZWF0ZUZy YW1lKCk7fSw1MCk7cmV0dXJuO312YXIgRj10aGlzLmdldERyYWdFbCgpLEU9WUFI T08udXRpbC5Eb207aWYoIUYpe0Y9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2 Iik7Ri5pZD10aGlzLmRyYWdFbElkO3ZhciBEPUYuc3R5bGU7RC5wb3NpdGlvbj0i YWJzb2x1dGUiO0QudmlzaWJpbGl0eT0iaGlkZGVuIjtELmN1cnNvcj0ibW92ZSI7 RC5ib3JkZXI9IjJweCBzb2xpZCAjYWFhIjtELnpJbmRleD05OTk7RC5oZWlnaHQ9 IjI1cHgiO0Qud2lkdGg9IjI1cHgiO3ZhciBDPWRvY3VtZW50LmNyZWF0ZUVsZW1l bnQoImRpdiIpO0Uuc2V0U3R5bGUoQywiaGVpZ2h0IiwiMTAwJSIpO0Uuc2V0U3R5 bGUoQywid2lkdGgiLCIxMDAlIik7RS5zZXRTdHlsZShDLCJiYWNrZ3JvdW5kLWNv bG9yIiwiI2NjYyIpO0Uuc2V0U3R5bGUoQywib3BhY2l0eSIsIjAiKTtGLmFwcGVu ZENoaWxkKEMpO0EuaW5zZXJ0QmVmb3JlKEYsQS5maXJzdENoaWxkKTt9fSxpbml0 RnJhbWU6ZnVuY3Rpb24oKXt0aGlzLmNyZWF0ZUZyYW1lKCk7fSxhcHBseUNvbmZp ZzpmdW5jdGlvbigpe1lBSE9PLnV0aWwuRERQcm94eS5zdXBlcmNsYXNzLmFwcGx5 Q29uZmlnLmNhbGwodGhpcyk7dGhpcy5yZXNpemVGcmFtZT0odGhpcy5jb25maWcu cmVzaXplRnJhbWUhPT1mYWxzZSk7dGhpcy5jZW50ZXJGcmFtZT0odGhpcy5jb25m aWcuY2VudGVyRnJhbWUpO3RoaXMuc2V0RHJhZ0VsSWQodGhpcy5jb25maWcuZHJh Z0VsSWR8fFlBSE9PLnV0aWwuRERQcm94eS5kcmFnRWxJZCk7fSxzaG93RnJhbWU6 ZnVuY3Rpb24oRSxEKXt2YXIgQz10aGlzLmdldEVsKCk7dmFyIEE9dGhpcy5nZXRE cmFnRWwoKTt2YXIgQj1BLnN0eWxlO3RoaXMuX3Jlc2l6ZVByb3h5KCk7aWYodGhp cy5jZW50ZXJGcmFtZSl7dGhpcy5zZXREZWx0YShNYXRoLnJvdW5kKHBhcnNlSW50 KEIud2lkdGgsMTApLzIpLE1hdGgucm91bmQocGFyc2VJbnQoQi5oZWlnaHQsMTAp LzIpKTt9dGhpcy5zZXREcmFnRWxQb3MoRSxEKTtZQUhPTy51dGlsLkRvbS5zZXRT dHlsZShBLCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpO30sX3Jlc2l6ZVByb3h5OmZ1 bmN0aW9uKCl7aWYodGhpcy5yZXNpemVGcmFtZSl7dmFyIEg9WUFIT08udXRpbC5E b207dmFyIEI9dGhpcy5nZXRFbCgpO3ZhciBDPXRoaXMuZ2V0RHJhZ0VsKCk7dmFy IEc9cGFyc2VJbnQoSC5nZXRTdHlsZShDLCJib3JkZXJUb3BXaWR0aCIpLDEwKTt2 YXIgST1wYXJzZUludChILmdldFN0eWxlKEMsImJvcmRlclJpZ2h0V2lkdGgiKSwx MCk7dmFyIEY9cGFyc2VJbnQoSC5nZXRTdHlsZShDLCJib3JkZXJCb3R0b21XaWR0 aCIpLDEwKTt2YXIgRD1wYXJzZUludChILmdldFN0eWxlKEMsImJvcmRlckxlZnRX aWR0aCIpLDEwKTtpZihpc05hTihHKSl7Rz0wO31pZihpc05hTihJKSl7ST0wO31p Zihpc05hTihGKSl7Rj0wO31pZihpc05hTihEKSl7RD0wO312YXIgRT1NYXRoLm1h eCgwLEIub2Zmc2V0V2lkdGgtSS1EKTt2YXIgQT1NYXRoLm1heCgwLEIub2Zmc2V0 SGVpZ2h0LUctRik7SC5zZXRTdHlsZShDLCJ3aWR0aCIsRSsicHgiKTtILnNldFN0 eWxlKEMsImhlaWdodCIsQSsicHgiKTt9fSxiNE1vdXNlRG93bjpmdW5jdGlvbihC KXt0aGlzLnNldFN0YXJ0UG9zaXRpb24oKTt2YXIgQT1ZQUhPTy51dGlsLkV2ZW50 LmdldFBhZ2VYKEIpO3ZhciBDPVlBSE9PLnV0aWwuRXZlbnQuZ2V0UGFnZVkoQik7 dGhpcy5hdXRvT2Zmc2V0KEEsQyk7fSxiNFN0YXJ0RHJhZzpmdW5jdGlvbihBLEIp e3RoaXMuc2hvd0ZyYW1lKEEsQik7fSxiNEVuZERyYWc6ZnVuY3Rpb24oQSl7WUFI T08udXRpbC5Eb20uc2V0U3R5bGUodGhpcy5nZXREcmFnRWwoKSwidmlzaWJpbGl0 eSIsImhpZGRlbiIpO30sZW5kRHJhZzpmdW5jdGlvbihEKXt2YXIgQz1ZQUhPTy51 dGlsLkRvbTt2YXIgQj10aGlzLmdldEVsKCk7dmFyIEE9dGhpcy5nZXREcmFnRWwo KTtDLnNldFN0eWxlKEEsInZpc2liaWxpdHkiLCIiKTtDLnNldFN0eWxlKEIsInZp c2liaWxpdHkiLCJoaWRkZW4iKTtZQUhPTy51dGlsLkRETS5tb3ZlVG9FbChCLEEp O0Muc2V0U3R5bGUoQSwidmlzaWJpbGl0eSIsImhpZGRlbiIpO0Muc2V0U3R5bGUo QiwidmlzaWJpbGl0eSIsIiIpO30sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4o IkREUHJveHkgIit0aGlzLmlkKTt9fSk7WUFIT08udXRpbC5ERFRhcmdldD1mdW5j dGlvbihDLEEsQil7aWYoQyl7dGhpcy5pbml0VGFyZ2V0KEMsQSxCKTt9fTtZQUhP Ty5leHRlbmQoWUFIT08udXRpbC5ERFRhcmdldCxZQUhPTy51dGlsLkRyYWdEcm9w LHt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybigiRERUYXJnZXQgIit0aGlzLmlk KTt9fSk7WUFIT08ucmVnaXN0ZXIoImRyYWdkcm9wIixZQUhPTy51dGlsLkRyYWdE cm9wTWdyLHt2ZXJzaW9uOiIyLjcuMCIsYnVpbGQ6IjE3OTYifSk7WUFIT08udXRp bC5BdHRyaWJ1dGU9ZnVuY3Rpb24oQixBKXtpZihBKXt0aGlzLm93bmVyPUE7dGhp cy5jb25maWd1cmUoQix0cnVlKTt9fTtZQUhPTy51dGlsLkF0dHJpYnV0ZS5wcm90 b3R5cGU9e25hbWU6dW5kZWZpbmVkLHZhbHVlOm51bGwsb3duZXI6bnVsbCxyZWFk T25seTpmYWxzZSx3cml0ZU9uY2U6ZmFsc2UsX2luaXRpYWxDb25maWc6bnVsbCxf d3JpdHRlbjpmYWxzZSxtZXRob2Q6bnVsbCxzZXR0ZXI6bnVsbCxnZXR0ZXI6bnVs bCx2YWxpZGF0b3I6bnVsbCxnZXRWYWx1ZTpmdW5jdGlvbigpe3ZhciBBPXRoaXMu dmFsdWU7aWYodGhpcy5nZXR0ZXIpe0E9dGhpcy5nZXR0ZXIuY2FsbCh0aGlzLm93 bmVyLHRoaXMubmFtZSk7fXJldHVybiBBO30sc2V0VmFsdWU6ZnVuY3Rpb24oRixC KXt2YXIgRSxBPXRoaXMub3duZXIsQz10aGlzLm5hbWU7dmFyIEQ9e3R5cGU6Qyxw cmV2VmFsdWU6dGhpcy5nZXRWYWx1ZSgpLG5ld1ZhbHVlOkZ9O2lmKHRoaXMucmVh ZE9ubHl8fCh0aGlzLndyaXRlT25jZSYmdGhpcy5fd3JpdHRlbikpe3JldHVybiBm YWxzZTt9aWYodGhpcy52YWxpZGF0b3ImJiF0aGlzLnZhbGlkYXRvci5jYWxsKEEs Rikpe3JldHVybiBmYWxzZTt9aWYoIUIpe0U9QS5maXJlQmVmb3JlQ2hhbmdlRXZl bnQoRCk7aWYoRT09PWZhbHNlKXtyZXR1cm4gZmFsc2U7fX1pZih0aGlzLnNldHRl cil7Rj10aGlzLnNldHRlci5jYWxsKEEsRix0aGlzLm5hbWUpO2lmKEY9PT11bmRl ZmluZWQpe319aWYodGhpcy5tZXRob2Qpe3RoaXMubWV0aG9kLmNhbGwoQSxGLHRo aXMubmFtZSk7fXRoaXMudmFsdWU9Rjt0aGlzLl93cml0dGVuPXRydWU7RC50eXBl PUM7aWYoIUIpe3RoaXMub3duZXIuZmlyZUNoYW5nZUV2ZW50KEQpO31yZXR1cm4g dHJ1ZTt9LGNvbmZpZ3VyZTpmdW5jdGlvbihCLEMpe0I9Qnx8e307aWYoQyl7dGhp cy5fd3JpdHRlbj1mYWxzZTt9dGhpcy5faW5pdGlhbENvbmZpZz10aGlzLl9pbml0 aWFsQ29uZmlnfHx7fTtmb3IodmFyIEEgaW4gQil7aWYoQi5oYXNPd25Qcm9wZXJ0 eShBKSl7dGhpc1tBXT1CW0FdO2lmKEMpe3RoaXMuX2luaXRpYWxDb25maWdbQV09 QltBXTt9fX19LHJlc2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZXRW YWx1ZSh0aGlzLl9pbml0aWFsQ29uZmlnLnZhbHVlKTt9LHJlc2V0Q29uZmlnOmZ1 bmN0aW9uKCl7dGhpcy5jb25maWd1cmUodGhpcy5faW5pdGlhbENvbmZpZyx0cnVl KTt9LHJlZnJlc2g6ZnVuY3Rpb24oQSl7dGhpcy5zZXRWYWx1ZSh0aGlzLnZhbHVl LEEpO319OyhmdW5jdGlvbigpe3ZhciBBPVlBSE9PLnV0aWwuTGFuZztZQUhPTy51 dGlsLkF0dHJpYnV0ZVByb3ZpZGVyPWZ1bmN0aW9uKCl7fTtZQUhPTy51dGlsLkF0 dHJpYnV0ZVByb3ZpZGVyLnByb3RvdHlwZT17X2NvbmZpZ3M6bnVsbCxnZXQ6ZnVu Y3Rpb24oQyl7dGhpcy5fY29uZmlncz10aGlzLl9jb25maWdzfHx7fTt2YXIgQj10 aGlzLl9jb25maWdzW0NdO2lmKCFCfHwhdGhpcy5fY29uZmlncy5oYXNPd25Qcm9w ZXJ0eShDKSl7cmV0dXJuIG51bGw7fXJldHVybiBCLmdldFZhbHVlKCk7fSxzZXQ6 ZnVuY3Rpb24oRCxFLEIpe3RoaXMuX2NvbmZpZ3M9dGhpcy5fY29uZmlnc3x8e307 dmFyIEM9dGhpcy5fY29uZmlnc1tEXTtpZighQyl7cmV0dXJuIGZhbHNlO31yZXR1 cm4gQy5zZXRWYWx1ZShFLEIpO30sZ2V0QXR0cmlidXRlS2V5czpmdW5jdGlvbigp e3RoaXMuX2NvbmZpZ3M9dGhpcy5fY29uZmlnczt2YXIgQz1bXSxCO2ZvcihCIGlu IHRoaXMuX2NvbmZpZ3Mpe2lmKEEuaGFzT3duUHJvcGVydHkodGhpcy5fY29uZmln cyxCKSYmIUEuaXNVbmRlZmluZWQodGhpcy5fY29uZmlnc1tCXSkpe0NbQy5sZW5n dGhdPUI7fX1yZXR1cm4gQzt9LHNldEF0dHJpYnV0ZXM6ZnVuY3Rpb24oRCxCKXtm b3IodmFyIEMgaW4gRCl7aWYoQS5oYXNPd25Qcm9wZXJ0eShELEMpKXt0aGlzLnNl dChDLERbQ10sQik7fX19LHJlc2V0VmFsdWU6ZnVuY3Rpb24oQyxCKXt0aGlzLl9j b25maWdzPXRoaXMuX2NvbmZpZ3N8fHt9O2lmKHRoaXMuX2NvbmZpZ3NbQ10pe3Ro aXMuc2V0KEMsdGhpcy5fY29uZmlnc1tDXS5faW5pdGlhbENvbmZpZy52YWx1ZSxC KTtyZXR1cm4gdHJ1ZTt9cmV0dXJuIGZhbHNlO30scmVmcmVzaDpmdW5jdGlvbihF LEMpe3RoaXMuX2NvbmZpZ3M9dGhpcy5fY29uZmlnc3x8e307dmFyIEY9dGhpcy5f Y29uZmlncztFPSgoQS5pc1N0cmluZyhFKSk/W0VdOkUpfHx0aGlzLmdldEF0dHJp YnV0ZUtleXMoKTtmb3IodmFyIEQ9MCxCPUUubGVuZ3RoO0Q8QjsrK0Qpe2lmKEYu aGFzT3duUHJvcGVydHkoRVtEXSkpe3RoaXMuX2NvbmZpZ3NbRVtEXV0ucmVmcmVz aChDKTt9fX0scmVnaXN0ZXI6ZnVuY3Rpb24oQixDKXt0aGlzLnNldEF0dHJpYnV0 ZUNvbmZpZyhCLEMpO30sZ2V0QXR0cmlidXRlQ29uZmlnOmZ1bmN0aW9uKEMpe3Ro aXMuX2NvbmZpZ3M9dGhpcy5fY29uZmlnc3x8e307dmFyIEI9dGhpcy5fY29uZmln c1tDXXx8e307dmFyIEQ9e307Zm9yKEMgaW4gQil7aWYoQS5oYXNPd25Qcm9wZXJ0 eShCLEMpKXtEW0NdPUJbQ107fX1yZXR1cm4gRDt9LHNldEF0dHJpYnV0ZUNvbmZp ZzpmdW5jdGlvbihCLEMsRCl7dGhpcy5fY29uZmlncz10aGlzLl9jb25maWdzfHx7 fTtDPUN8fHt9O2lmKCF0aGlzLl9jb25maWdzW0JdKXtDLm5hbWU9Qjt0aGlzLl9j b25maWdzW0JdPXRoaXMuY3JlYXRlQXR0cmlidXRlKEMpO31lbHNle3RoaXMuX2Nv bmZpZ3NbQl0uY29uZmlndXJlKEMsRCk7fX0sY29uZmlndXJlQXR0cmlidXRlOmZ1 bmN0aW9uKEIsQyxEKXt0aGlzLnNldEF0dHJpYnV0ZUNvbmZpZyhCLEMsRCk7fSxy ZXNldEF0dHJpYnV0ZUNvbmZpZzpmdW5jdGlvbihCKXt0aGlzLl9jb25maWdzPXRo aXMuX2NvbmZpZ3N8fHt9O3RoaXMuX2NvbmZpZ3NbQl0ucmVzZXRDb25maWcoKTt9 LHN1YnNjcmliZTpmdW5jdGlvbihCLEMpe3RoaXMuX2V2ZW50cz10aGlzLl9ldmVu dHN8fHt9O2lmKCEoQiBpbiB0aGlzLl9ldmVudHMpKXt0aGlzLl9ldmVudHNbQl09 dGhpcy5jcmVhdGVFdmVudChCKTt9WUFIT08udXRpbC5FdmVudFByb3ZpZGVyLnBy b3RvdHlwZS5zdWJzY3JpYmUuYXBwbHkodGhpcyxhcmd1bWVudHMpO30sb246ZnVu Y3Rpb24oKXt0aGlzLnN1YnNjcmliZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7fSxh ZGRMaXN0ZW5lcjpmdW5jdGlvbigpe3RoaXMuc3Vic2NyaWJlLmFwcGx5KHRoaXMs YXJndW1lbnRzKTt9LGZpcmVCZWZvcmVDaGFuZ2VFdmVudDpmdW5jdGlvbihDKXt2 YXIgQj0iYmVmb3JlIjtCKz1DLnR5cGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkr Qy50eXBlLnN1YnN0cigxKSsiQ2hhbmdlIjtDLnR5cGU9QjtyZXR1cm4gdGhpcy5m aXJlRXZlbnQoQy50eXBlLEMpO30sZmlyZUNoYW5nZUV2ZW50OmZ1bmN0aW9uKEIp e0IudHlwZSs9IkNoYW5nZSI7cmV0dXJuIHRoaXMuZmlyZUV2ZW50KEIudHlwZSxC KTt9LGNyZWF0ZUF0dHJpYnV0ZTpmdW5jdGlvbihCKXtyZXR1cm4gbmV3IFlBSE9P LnV0aWwuQXR0cmlidXRlKEIsdGhpcyk7fX07WUFIT08uYXVnbWVudChZQUhPTy51 dGlsLkF0dHJpYnV0ZVByb3ZpZGVyLFlBSE9PLnV0aWwuRXZlbnRQcm92aWRlcik7 fSkoKTsoZnVuY3Rpb24oKXt2YXIgQj1ZQUhPTy51dGlsLkRvbSxDPVlBSE9PLnV0 aWwuQXR0cmlidXRlUHJvdmlkZXI7dmFyIEE9ZnVuY3Rpb24oRCxFKXt0aGlzLmlu aXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO307QS5ET01fRVZFTlRTPXsiY2xpY2si OnRydWUsImRibGNsaWNrIjp0cnVlLCJrZXlkb3duIjp0cnVlLCJrZXlwcmVzcyI6 dHJ1ZSwia2V5dXAiOnRydWUsIm1vdXNlZG93biI6dHJ1ZSwibW91c2Vtb3ZlIjp0 cnVlLCJtb3VzZW91dCI6dHJ1ZSwibW91c2VvdmVyIjp0cnVlLCJtb3VzZXVwIjp0 cnVlLCJmb2N1cyI6dHJ1ZSwiYmx1ciI6dHJ1ZSwic3VibWl0Ijp0cnVlLCJjaGFu Z2UiOnRydWV9O0EucHJvdG90eXBlPXtET01fRVZFTlRTOm51bGwsREVGQVVMVF9I VE1MX1NFVFRFUjpmdW5jdGlvbihGLEQpe3ZhciBFPXRoaXMuZ2V0KCJlbGVtZW50 Iik7aWYoRSl7RVtEXT1GO319LERFRkFVTFRfSFRNTF9HRVRURVI6ZnVuY3Rpb24o RCl7dmFyIEU9dGhpcy5nZXQoImVsZW1lbnQiKSxGO2lmKEUpe0Y9RVtEXTt9cmV0 dXJuIEY7fSxhcHBlbmRDaGlsZDpmdW5jdGlvbihEKXtEPUQuZ2V0P0QuZ2V0KCJl bGVtZW50Iik6RDtyZXR1cm4gdGhpcy5nZXQoImVsZW1lbnQiKS5hcHBlbmRDaGls ZChEKTt9LGdldEVsZW1lbnRzQnlUYWdOYW1lOmZ1bmN0aW9uKEQpe3JldHVybiB0 aGlzLmdldCgiZWxlbWVudCIpLmdldEVsZW1lbnRzQnlUYWdOYW1lKEQpO30saGFz Q2hpbGROb2RlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCgiZWxlbWVudCIp Lmhhc0NoaWxkTm9kZXMoKTt9LGluc2VydEJlZm9yZTpmdW5jdGlvbihELEUpe0Q9 RC5nZXQ/RC5nZXQoImVsZW1lbnQiKTpEO0U9KEUmJkUuZ2V0KT9FLmdldCgiZWxl bWVudCIpOkU7cmV0dXJuIHRoaXMuZ2V0KCJlbGVtZW50IikuaW5zZXJ0QmVmb3Jl KEQsRSk7fSxyZW1vdmVDaGlsZDpmdW5jdGlvbihEKXtEPUQuZ2V0P0QuZ2V0KCJl bGVtZW50Iik6RDtyZXR1cm4gdGhpcy5nZXQoImVsZW1lbnQiKS5yZW1vdmVDaGls ZChEKTt9LHJlcGxhY2VDaGlsZDpmdW5jdGlvbihELEUpe0Q9RC5nZXQ/RC5nZXQo ImVsZW1lbnQiKTpEO0U9RS5nZXQ/RS5nZXQoImVsZW1lbnQiKTpFO3JldHVybiB0 aGlzLmdldCgiZWxlbWVudCIpLnJlcGxhY2VDaGlsZChELEUpO30saW5pdEF0dHJp YnV0ZXM6ZnVuY3Rpb24oRCl7fSxhZGRMaXN0ZW5lcjpmdW5jdGlvbihILEcsSSxG KXt2YXIgRT10aGlzLmdldCgiZWxlbWVudCIpfHx0aGlzLmdldCgiaWQiKTtGPUZ8 fHRoaXM7dmFyIEQ9dGhpcztpZighdGhpcy5fZXZlbnRzW0hdKXtpZihFJiZ0aGlz LkRPTV9FVkVOVFNbSF0pe1lBSE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVuZXIoRSxI LGZ1bmN0aW9uKEope2lmKEouc3JjRWxlbWVudCYmIUoudGFyZ2V0KXtKLnRhcmdl dD1KLnNyY0VsZW1lbnQ7fUQuZmlyZUV2ZW50KEgsSik7fSxJLEYpO310aGlzLmNy ZWF0ZUV2ZW50KEgsdGhpcyk7fXJldHVybiBZQUhPTy51dGlsLkV2ZW50UHJvdmlk ZXIucHJvdG90eXBlLnN1YnNjcmliZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7fSxv bjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFkZExpc3RlbmVyLmFwcGx5KHRoaXMs YXJndW1lbnRzKTt9LHN1YnNjcmliZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFk ZExpc3RlbmVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt9LHJlbW92ZUxpc3RlbmVy OmZ1bmN0aW9uKEUsRCl7cmV0dXJuIHRoaXMudW5zdWJzY3JpYmUuYXBwbHkodGhp cyxhcmd1bWVudHMpO30sYWRkQ2xhc3M6ZnVuY3Rpb24oRCl7Qi5hZGRDbGFzcyh0 aGlzLmdldCgiZWxlbWVudCIpLEQpO30sZ2V0RWxlbWVudHNCeUNsYXNzTmFtZTpm dW5jdGlvbihFLEQpe3JldHVybiBCLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoRSxE LHRoaXMuZ2V0KCJlbGVtZW50IikpO30saGFzQ2xhc3M6ZnVuY3Rpb24oRCl7cmV0 dXJuIEIuaGFzQ2xhc3ModGhpcy5nZXQoImVsZW1lbnQiKSxEKTt9LHJlbW92ZUNs YXNzOmZ1bmN0aW9uKEQpe3JldHVybiBCLnJlbW92ZUNsYXNzKHRoaXMuZ2V0KCJl bGVtZW50IiksRCk7fSxyZXBsYWNlQ2xhc3M6ZnVuY3Rpb24oRSxEKXtyZXR1cm4g Qi5yZXBsYWNlQ2xhc3ModGhpcy5nZXQoImVsZW1lbnQiKSxFLEQpO30sc2V0U3R5 bGU6ZnVuY3Rpb24oRSxEKXtyZXR1cm4gQi5zZXRTdHlsZSh0aGlzLmdldCgiZWxl bWVudCIpLEUsRCk7fSxnZXRTdHlsZTpmdW5jdGlvbihEKXtyZXR1cm4gQi5nZXRT dHlsZSh0aGlzLmdldCgiZWxlbWVudCIpLEQpO30sZmlyZVF1ZXVlOmZ1bmN0aW9u KCl7dmFyIEU9dGhpcy5fcXVldWU7Zm9yKHZhciBGPTAsRD1FLmxlbmd0aDtGPEQ7 KytGKXt0aGlzW0VbRl1bMF1dLmFwcGx5KHRoaXMsRVtGXVsxXSk7fX0sYXBwZW5k VG86ZnVuY3Rpb24oRSxGKXtFPShFLmdldCk/RS5nZXQoImVsZW1lbnQiKTpCLmdl dChFKTt0aGlzLmZpcmVFdmVudCgiYmVmb3JlQXBwZW5kVG8iLHt0eXBlOiJiZWZv cmVBcHBlbmRUbyIsdGFyZ2V0OkV9KTsKRj0oRiYmRi5nZXQpP0YuZ2V0KCJlbGVt ZW50Iik6Qi5nZXQoRik7dmFyIEQ9dGhpcy5nZXQoImVsZW1lbnQiKTtpZighRCl7 cmV0dXJuIGZhbHNlO31pZighRSl7cmV0dXJuIGZhbHNlO31pZihELnBhcmVudCE9 RSl7aWYoRil7RS5pbnNlcnRCZWZvcmUoRCxGKTt9ZWxzZXtFLmFwcGVuZENoaWxk KEQpO319dGhpcy5maXJlRXZlbnQoImFwcGVuZFRvIix7dHlwZToiYXBwZW5kVG8i LHRhcmdldDpFfSk7cmV0dXJuIEQ7fSxnZXQ6ZnVuY3Rpb24oRCl7dmFyIEY9dGhp cy5fY29uZmlnc3x8e30sRT1GLmVsZW1lbnQ7aWYoRSYmIUZbRF0mJiFZQUhPTy5s YW5nLmlzVW5kZWZpbmVkKEUudmFsdWVbRF0pKXt0aGlzLl9zZXRIVE1MQXR0ckNv bmZpZyhEKTt9cmV0dXJuIEMucHJvdG90eXBlLmdldC5jYWxsKHRoaXMsRCk7fSxz ZXRBdHRyaWJ1dGVzOmZ1bmN0aW9uKEosRyl7dmFyIEU9e30sSD10aGlzLl9jb25m aWdPcmRlcjtmb3IodmFyIEk9MCxEPUgubGVuZ3RoO0k8RDsrK0kpe2lmKEpbSFtJ XV0hPT11bmRlZmluZWQpe0VbSFtJXV09dHJ1ZTt0aGlzLnNldChIW0ldLEpbSFtJ XV0sRyk7fX1mb3IodmFyIEYgaW4gSil7aWYoSi5oYXNPd25Qcm9wZXJ0eShGKSYm IUVbRl0pe3RoaXMuc2V0KEYsSltGXSxHKTt9fX0sc2V0OmZ1bmN0aW9uKEUsRyxE KXt2YXIgRj10aGlzLmdldCgiZWxlbWVudCIpO2lmKCFGKXt0aGlzLl9xdWV1ZVt0 aGlzLl9xdWV1ZS5sZW5ndGhdPVsic2V0Iixhcmd1bWVudHNdO2lmKHRoaXMuX2Nv bmZpZ3NbRV0pe3RoaXMuX2NvbmZpZ3NbRV0udmFsdWU9Rzt9cmV0dXJuO31pZigh dGhpcy5fY29uZmlnc1tFXSYmIVlBSE9PLmxhbmcuaXNVbmRlZmluZWQoRltFXSkp e3RoaXMuX3NldEhUTUxBdHRyQ29uZmlnKEUpO31yZXR1cm4gQy5wcm90b3R5cGUu c2V0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt9LHNldEF0dHJpYnV0ZUNvbmZpZzpm dW5jdGlvbihELEUsRil7dGhpcy5fY29uZmlnT3JkZXIucHVzaChEKTtDLnByb3Rv dHlwZS5zZXRBdHRyaWJ1dGVDb25maWcuYXBwbHkodGhpcyxhcmd1bWVudHMpO30s Y3JlYXRlRXZlbnQ6ZnVuY3Rpb24oRSxEKXt0aGlzLl9ldmVudHNbRV09dHJ1ZTty ZXR1cm4gQy5wcm90b3R5cGUuY3JlYXRlRXZlbnQuYXBwbHkodGhpcyxhcmd1bWVu dHMpO30saW5pdDpmdW5jdGlvbihFLEQpe3RoaXMuX2luaXRFbGVtZW50KEUsRCk7 fSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIEQ9dGhpcy5nZXQoImVsZW1lbnQiKTtZ QUhPTy51dGlsLkV2ZW50LnB1cmdlRWxlbWVudChELHRydWUpO3RoaXMudW5zdWJz Y3JpYmVBbGwoKTtpZihEJiZELnBhcmVudE5vZGUpe0QucGFyZW50Tm9kZS5yZW1v dmVDaGlsZChEKTt9dGhpcy5fcXVldWU9W107dGhpcy5fZXZlbnRzPXt9O3RoaXMu X2NvbmZpZ3M9e307dGhpcy5fY29uZmlnT3JkZXI9W107fSxfaW5pdEVsZW1lbnQ6 ZnVuY3Rpb24oRixFKXt0aGlzLl9xdWV1ZT10aGlzLl9xdWV1ZXx8W107dGhpcy5f ZXZlbnRzPXRoaXMuX2V2ZW50c3x8e307dGhpcy5fY29uZmlncz10aGlzLl9jb25m aWdzfHx7fTt0aGlzLl9jb25maWdPcmRlcj1bXTtFPUV8fHt9O0UuZWxlbWVudD1F LmVsZW1lbnR8fEZ8fG51bGw7dmFyIEg9ZmFsc2U7dmFyIEQ9QS5ET01fRVZFTlRT O3RoaXMuRE9NX0VWRU5UUz10aGlzLkRPTV9FVkVOVFN8fHt9O2Zvcih2YXIgRyBp biBEKXtpZihELmhhc093blByb3BlcnR5KEcpKXt0aGlzLkRPTV9FVkVOVFNbR109 RFtHXTt9fWlmKHR5cGVvZiBFLmVsZW1lbnQ9PT0ic3RyaW5nIil7dGhpcy5fc2V0 SFRNTEF0dHJDb25maWcoImlkIix7dmFsdWU6RS5lbGVtZW50fSk7fWlmKEIuZ2V0 KEUuZWxlbWVudCkpe0g9dHJ1ZTt0aGlzLl9pbml0SFRNTEVsZW1lbnQoRSk7dGhp cy5faW5pdENvbnRlbnQoRSk7fVlBSE9PLnV0aWwuRXZlbnQub25BdmFpbGFibGUo RS5lbGVtZW50LGZ1bmN0aW9uKCl7aWYoIUgpe3RoaXMuX2luaXRIVE1MRWxlbWVu dChFKTt9dGhpcy5maXJlRXZlbnQoImF2YWlsYWJsZSIse3R5cGU6ImF2YWlsYWJs ZSIsdGFyZ2V0OkIuZ2V0KEUuZWxlbWVudCl9KTt9LHRoaXMsdHJ1ZSk7WUFIT08u dXRpbC5FdmVudC5vbkNvbnRlbnRSZWFkeShFLmVsZW1lbnQsZnVuY3Rpb24oKXtp ZighSCl7dGhpcy5faW5pdENvbnRlbnQoRSk7fXRoaXMuZmlyZUV2ZW50KCJjb250 ZW50UmVhZHkiLHt0eXBlOiJjb250ZW50UmVhZHkiLHRhcmdldDpCLmdldChFLmVs ZW1lbnQpfSk7fSx0aGlzLHRydWUpO30sX2luaXRIVE1MRWxlbWVudDpmdW5jdGlv bihEKXt0aGlzLnNldEF0dHJpYnV0ZUNvbmZpZygiZWxlbWVudCIse3ZhbHVlOkIu Z2V0KEQuZWxlbWVudCkscmVhZE9ubHk6dHJ1ZX0pO30sX2luaXRDb250ZW50OmZ1 bmN0aW9uKEQpe3RoaXMuaW5pdEF0dHJpYnV0ZXMoRCk7dGhpcy5zZXRBdHRyaWJ1 dGVzKEQsdHJ1ZSk7dGhpcy5maXJlUXVldWUoKTt9LF9zZXRIVE1MQXR0ckNvbmZp ZzpmdW5jdGlvbihELEYpe3ZhciBFPXRoaXMuZ2V0KCJlbGVtZW50Iik7Rj1GfHx7 fTtGLm5hbWU9RDtGLnNldHRlcj1GLnNldHRlcnx8dGhpcy5ERUZBVUxUX0hUTUxf U0VUVEVSO0YuZ2V0dGVyPUYuZ2V0dGVyfHx0aGlzLkRFRkFVTFRfSFRNTF9HRVRU RVI7Ri52YWx1ZT1GLnZhbHVlfHxFW0RdO3RoaXMuX2NvbmZpZ3NbRF09bmV3IFlB SE9PLnV0aWwuQXR0cmlidXRlKEYsdGhpcyk7fX07WUFIT08uYXVnbWVudChBLEMp O1lBSE9PLnV0aWwuRWxlbWVudD1BO30pKCk7WUFIT08ucmVnaXN0ZXIoImVsZW1l bnQiLFlBSE9PLnV0aWwuRWxlbWVudCx7dmVyc2lvbjoiMi43LjAiLGJ1aWxkOiIx Nzk2In0pO1lBSE9PLnJlZ2lzdGVyKCJ1dGlsaXRpZXMiLCBZQUhPTywge3ZlcnNp b246ICIyLjcuMCIsIGJ1aWxkOiAiMTc5NiJ9KTsKLyoKQ29weXJpZ2h0IChjKSAy MDA5LCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpDb2RlIGxpY2Vu c2VkIHVuZGVyIHRoZSBCU0QgTGljZW5zZToKaHR0cDovL2RldmVsb3Blci55YWhv by5uZXQveXVpL2xpY2Vuc2UudHh0CnZlcnNpb246IDIuNy4wCiovCihmdW5jdGlv bigpe3ZhciBsYW5nPVlBSE9PLmxhbmcsdXRpbD1ZQUhPTy51dGlsLEV2PXV0aWwu RXZlbnQ7dXRpbC5EYXRhU291cmNlQmFzZT1mdW5jdGlvbihvTGl2ZURhdGEsb0Nv bmZpZ3Mpe2lmKG9MaXZlRGF0YT09PW51bGx8fG9MaXZlRGF0YT09PXVuZGVmaW5l ZCl7cmV0dXJuO310aGlzLmxpdmVEYXRhPW9MaXZlRGF0YTt0aGlzLl9vUXVldWU9 e2ludGVydmFsOm51bGwsY29ubjpudWxsLHJlcXVlc3RzOltdfTt0aGlzLnJlc3Bv bnNlU2NoZW1hPXt9O2lmKG9Db25maWdzJiYob0NvbmZpZ3MuY29uc3RydWN0b3I9 PU9iamVjdCkpe2Zvcih2YXIgc0NvbmZpZyBpbiBvQ29uZmlncyl7aWYoc0NvbmZp Zyl7dGhpc1tzQ29uZmlnXT1vQ29uZmlnc1tzQ29uZmlnXTt9fX12YXIgbWF4Q2Fj aGVFbnRyaWVzPXRoaXMubWF4Q2FjaGVFbnRyaWVzO2lmKCFsYW5nLmlzTnVtYmVy KG1heENhY2hlRW50cmllcyl8fChtYXhDYWNoZUVudHJpZXM8MCkpe21heENhY2hl RW50cmllcz0wO310aGlzLl9hSW50ZXJ2YWxzPVtdO3RoaXMuY3JlYXRlRXZlbnQo ImNhY2hlUmVxdWVzdEV2ZW50Iik7dGhpcy5jcmVhdGVFdmVudCgiY2FjaGVSZXNw b25zZUV2ZW50Iik7dGhpcy5jcmVhdGVFdmVudCgicmVxdWVzdEV2ZW50Iik7dGhp cy5jcmVhdGVFdmVudCgicmVzcG9uc2VFdmVudCIpO3RoaXMuY3JlYXRlRXZlbnQo InJlc3BvbnNlUGFyc2VFdmVudCIpO3RoaXMuY3JlYXRlRXZlbnQoInJlc3BvbnNl Q2FjaGVFdmVudCIpO3RoaXMuY3JlYXRlRXZlbnQoImRhdGFFcnJvckV2ZW50Iik7 dGhpcy5jcmVhdGVFdmVudCgiY2FjaGVGbHVzaEV2ZW50Iik7dmFyIERTPXV0aWwu RGF0YVNvdXJjZUJhc2U7dGhpcy5fc05hbWU9IkRhdGFTb3VyY2UgaW5zdGFuY2Ui K0RTLl9uSW5kZXg7RFMuX25JbmRleCsrO307dmFyIERTPXV0aWwuRGF0YVNvdXJj ZUJhc2U7bGFuZy5hdWdtZW50T2JqZWN0KERTLHtUWVBFX1VOS05PV046LTEsVFlQ RV9KU0FSUkFZOjAsVFlQRV9KU0ZVTkNUSU9OOjEsVFlQRV9YSFI6MixUWVBFX0pT T046MyxUWVBFX1hNTDo0LFRZUEVfVEVYVDo1LFRZUEVfSFRNTFRBQkxFOjYsVFlQ RV9TQ1JJUFROT0RFOjcsVFlQRV9MT0NBTDo4LEVSUk9SX0RBVEFJTlZBTElEOiJJ bnZhbGlkIGRhdGEiLEVSUk9SX0RBVEFOVUxMOiJOdWxsIGRhdGEiLF9uSW5kZXg6 MCxfblRyYW5zYWN0aW9uSWQ6MCxpc3N1ZUNhbGxiYWNrOmZ1bmN0aW9uKGNhbGxi YWNrLHBhcmFtcyxlcnJvcixzY29wZSl7aWYobGFuZy5pc0Z1bmN0aW9uKGNhbGxi YWNrKSl7Y2FsbGJhY2suYXBwbHkoc2NvcGUscGFyYW1zKTt9ZWxzZXtpZihsYW5n LmlzT2JqZWN0KGNhbGxiYWNrKSl7c2NvcGU9Y2FsbGJhY2suc2NvcGV8fHNjb3Bl fHx3aW5kb3c7dmFyIGNhbGxiYWNrRnVuYz1jYWxsYmFjay5zdWNjZXNzO2lmKGVy cm9yKXtjYWxsYmFja0Z1bmM9Y2FsbGJhY2suZmFpbHVyZTt9aWYoY2FsbGJhY2tG dW5jKXtjYWxsYmFja0Z1bmMuYXBwbHkoc2NvcGUscGFyYW1zLmNvbmNhdChbY2Fs bGJhY2suYXJndW1lbnRdKSk7fX19fSxwYXJzZVN0cmluZzpmdW5jdGlvbihvRGF0 YSl7aWYoIWxhbmcuaXNWYWx1ZShvRGF0YSkpe3JldHVybiBudWxsO312YXIgc3Ry aW5nPW9EYXRhKyIiO2lmKGxhbmcuaXNTdHJpbmcoc3RyaW5nKSl7cmV0dXJuIHN0 cmluZzt9ZWxzZXtyZXR1cm4gbnVsbDt9fSxwYXJzZU51bWJlcjpmdW5jdGlvbihv RGF0YSl7aWYoIWxhbmcuaXNWYWx1ZShvRGF0YSl8fChvRGF0YT09PSIiKSl7cmV0 dXJuIG51bGw7fXZhciBudW1iZXI9b0RhdGEqMTtpZihsYW5nLmlzTnVtYmVyKG51 bWJlcikpe3JldHVybiBudW1iZXI7fWVsc2V7cmV0dXJuIG51bGw7fX0sY29udmVy dE51bWJlcjpmdW5jdGlvbihvRGF0YSl7cmV0dXJuIERTLnBhcnNlTnVtYmVyKG9E YXRhKTt9LHBhcnNlRGF0ZTpmdW5jdGlvbihvRGF0YSl7dmFyIGRhdGU9bnVsbDtp ZighKG9EYXRhIGluc3RhbmNlb2YgRGF0ZSkpe2RhdGU9bmV3IERhdGUob0RhdGEp O31lbHNle3JldHVybiBvRGF0YTt9aWYoZGF0ZSBpbnN0YW5jZW9mIERhdGUpe3Jl dHVybiBkYXRlO31lbHNle3JldHVybiBudWxsO319LGNvbnZlcnREYXRlOmZ1bmN0 aW9uKG9EYXRhKXtyZXR1cm4gRFMucGFyc2VEYXRlKG9EYXRhKTt9fSk7RFMuUGFy c2VyPXtzdHJpbmc6RFMucGFyc2VTdHJpbmcsbnVtYmVyOkRTLnBhcnNlTnVtYmVy LGRhdGU6RFMucGFyc2VEYXRlfTtEUy5wcm90b3R5cGU9e19zTmFtZTpudWxsLF9h Q2FjaGU6bnVsbCxfb1F1ZXVlOm51bGwsX2FJbnRlcnZhbHM6bnVsbCxtYXhDYWNo ZUVudHJpZXM6MCxsaXZlRGF0YTpudWxsLGRhdGFUeXBlOkRTLlRZUEVfVU5LTk9X TixyZXNwb25zZVR5cGU6RFMuVFlQRV9VTktOT1dOLHJlc3BvbnNlU2NoZW1hOm51 bGwsdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc05hbWU7fSxnZXRD YWNoZWRSZXNwb25zZTpmdW5jdGlvbihvUmVxdWVzdCxvQ2FsbGJhY2ssb0NhbGxl cil7dmFyIGFDYWNoZT10aGlzLl9hQ2FjaGU7aWYodGhpcy5tYXhDYWNoZUVudHJp ZXM+MCl7aWYoIWFDYWNoZSl7dGhpcy5fYUNhY2hlPVtdO31lbHNle3ZhciBuQ2Fj aGVMZW5ndGg9YUNhY2hlLmxlbmd0aDtpZihuQ2FjaGVMZW5ndGg+MCl7dmFyIG9S ZXNwb25zZT1udWxsO3RoaXMuZmlyZUV2ZW50KCJjYWNoZVJlcXVlc3RFdmVudCIs e3JlcXVlc3Q6b1JlcXVlc3QsY2FsbGJhY2s6b0NhbGxiYWNrLGNhbGxlcjpvQ2Fs bGVyfSk7Zm9yKHZhciBpPW5DYWNoZUxlbmd0aC0xO2k+PTA7aS0tKXt2YXIgb0Nh Y2hlRWxlbT1hQ2FjaGVbaV07aWYodGhpcy5pc0NhY2hlSGl0KG9SZXF1ZXN0LG9D YWNoZUVsZW0ucmVxdWVzdCkpe29SZXNwb25zZT1vQ2FjaGVFbGVtLnJlc3BvbnNl O3RoaXMuZmlyZUV2ZW50KCJjYWNoZVJlc3BvbnNlRXZlbnQiLHtyZXF1ZXN0Om9S ZXF1ZXN0LHJlc3BvbnNlOm9SZXNwb25zZSxjYWxsYmFjazpvQ2FsbGJhY2ssY2Fs bGVyOm9DYWxsZXJ9KTtpZihpPG5DYWNoZUxlbmd0aC0xKXthQ2FjaGUuc3BsaWNl KGksMSk7dGhpcy5hZGRUb0NhY2hlKG9SZXF1ZXN0LG9SZXNwb25zZSk7fW9SZXNw b25zZS5jYWNoZWQ9dHJ1ZTticmVhazt9fXJldHVybiBvUmVzcG9uc2U7fX19ZWxz ZXtpZihhQ2FjaGUpe3RoaXMuX2FDYWNoZT1udWxsO319cmV0dXJuIG51bGw7fSxp c0NhY2hlSGl0OmZ1bmN0aW9uKG9SZXF1ZXN0LG9DYWNoZWRSZXF1ZXN0KXtyZXR1 cm4ob1JlcXVlc3Q9PT1vQ2FjaGVkUmVxdWVzdCk7fSxhZGRUb0NhY2hlOmZ1bmN0 aW9uKG9SZXF1ZXN0LG9SZXNwb25zZSl7dmFyIGFDYWNoZT10aGlzLl9hQ2FjaGU7 aWYoIWFDYWNoZSl7cmV0dXJuO313aGlsZShhQ2FjaGUubGVuZ3RoPj10aGlzLm1h eENhY2hlRW50cmllcyl7YUNhY2hlLnNoaWZ0KCk7fXZhciBvQ2FjaGVFbGVtPXty ZXF1ZXN0Om9SZXF1ZXN0LHJlc3BvbnNlOm9SZXNwb25zZX07YUNhY2hlW2FDYWNo ZS5sZW5ndGhdPW9DYWNoZUVsZW07dGhpcy5maXJlRXZlbnQoInJlc3BvbnNlQ2Fj aGVFdmVudCIse3JlcXVlc3Q6b1JlcXVlc3QscmVzcG9uc2U6b1Jlc3BvbnNlfSk7 fSxmbHVzaENhY2hlOmZ1bmN0aW9uKCl7aWYodGhpcy5fYUNhY2hlKXt0aGlzLl9h Q2FjaGU9W107dGhpcy5maXJlRXZlbnQoImNhY2hlRmx1c2hFdmVudCIpO319LHNl dEludGVydmFsOmZ1bmN0aW9uKG5Nc2VjLG9SZXF1ZXN0LG9DYWxsYmFjayxvQ2Fs bGVyKXtpZihsYW5nLmlzTnVtYmVyKG5Nc2VjKSYmKG5Nc2VjPj0wKSl7dmFyIG9T ZWxmPXRoaXM7dmFyIG5JZD1zZXRJbnRlcnZhbChmdW5jdGlvbigpe29TZWxmLm1h a2VDb25uZWN0aW9uKG9SZXF1ZXN0LG9DYWxsYmFjayxvQ2FsbGVyKTt9LG5Nc2Vj KTt0aGlzLl9hSW50ZXJ2YWxzLnB1c2gobklkKTtyZXR1cm4gbklkO31lbHNle319 LGNsZWFySW50ZXJ2YWw6ZnVuY3Rpb24obklkKXt2YXIgdHJhY2tlcj10aGlzLl9h SW50ZXJ2YWxzfHxbXTtmb3IodmFyIGk9dHJhY2tlci5sZW5ndGgtMTtpPi0xO2kt LSl7aWYodHJhY2tlcltpXT09PW5JZCl7dHJhY2tlci5zcGxpY2UoaSwxKTtjbGVh ckludGVydmFsKG5JZCk7fX19LGNsZWFyQWxsSW50ZXJ2YWxzOmZ1bmN0aW9uKCl7 dmFyIHRyYWNrZXI9dGhpcy5fYUludGVydmFsc3x8W107Zm9yKHZhciBpPXRyYWNr ZXIubGVuZ3RoLTE7aT4tMTtpLS0pe2NsZWFySW50ZXJ2YWwodHJhY2tlcltpXSk7 fXRyYWNrZXI9W107fSxzZW5kUmVxdWVzdDpmdW5jdGlvbihvUmVxdWVzdCxvQ2Fs bGJhY2ssb0NhbGxlcil7dmFyIG9DYWNoZWRSZXNwb25zZT10aGlzLmdldENhY2hl ZFJlc3BvbnNlKG9SZXF1ZXN0LG9DYWxsYmFjayxvQ2FsbGVyKTtpZihvQ2FjaGVk UmVzcG9uc2Upe0RTLmlzc3VlQ2FsbGJhY2sob0NhbGxiYWNrLFtvUmVxdWVzdCxv Q2FjaGVkUmVzcG9uc2VdLGZhbHNlLG9DYWxsZXIpO3JldHVybiBudWxsO31yZXR1 cm4gdGhpcy5tYWtlQ29ubmVjdGlvbihvUmVxdWVzdCxvQ2FsbGJhY2ssb0NhbGxl cik7fSxtYWtlQ29ubmVjdGlvbjpmdW5jdGlvbihvUmVxdWVzdCxvQ2FsbGJhY2ss b0NhbGxlcil7dmFyIHRJZD1EUy5fblRyYW5zYWN0aW9uSWQrKzt0aGlzLmZpcmVF dmVudCgicmVxdWVzdEV2ZW50Iix7dElkOnRJZCxyZXF1ZXN0Om9SZXF1ZXN0LGNh bGxiYWNrOm9DYWxsYmFjayxjYWxsZXI6b0NhbGxlcn0pO3ZhciBvUmF3UmVzcG9u c2U9dGhpcy5saXZlRGF0YTt0aGlzLmhhbmRsZVJlc3BvbnNlKG9SZXF1ZXN0LG9S YXdSZXNwb25zZSxvQ2FsbGJhY2ssb0NhbGxlcix0SWQpO3JldHVybiB0SWQ7fSxo YW5kbGVSZXNwb25zZTpmdW5jdGlvbihvUmVxdWVzdCxvUmF3UmVzcG9uc2Usb0Nh bGxiYWNrLG9DYWxsZXIsdElkKXt0aGlzLmZpcmVFdmVudCgicmVzcG9uc2VFdmVu dCIse3RJZDp0SWQscmVxdWVzdDpvUmVxdWVzdCxyZXNwb25zZTpvUmF3UmVzcG9u c2UsY2FsbGJhY2s6b0NhbGxiYWNrLGNhbGxlcjpvQ2FsbGVyfSk7dmFyIHhocj0o dGhpcy5kYXRhVHlwZT09RFMuVFlQRV9YSFIpP3RydWU6ZmFsc2U7dmFyIG9QYXJz ZWRSZXNwb25zZT1udWxsO3ZhciBvRnVsbFJlc3BvbnNlPW9SYXdSZXNwb25zZTtp Zih0aGlzLnJlc3BvbnNlVHlwZT09PURTLlRZUEVfVU5LTk9XTil7dmFyIGN0eXBl PShvUmF3UmVzcG9uc2UmJm9SYXdSZXNwb25zZS5nZXRSZXNwb25zZUhlYWRlcik/ b1Jhd1Jlc3BvbnNlLmdldFJlc3BvbnNlSGVhZGVyWyJDb250ZW50LVR5cGUiXTpu dWxsO2lmKGN0eXBlKXtpZihjdHlwZS5pbmRleE9mKCJ0ZXh0L3htbCIpPi0xKXt0 aGlzLnJlc3BvbnNlVHlwZT1EUy5UWVBFX1hNTDt9ZWxzZXtpZihjdHlwZS5pbmRl eE9mKCJhcHBsaWNhdGlvbi9qc29uIik+LTEpe3RoaXMucmVzcG9uc2VUeXBlPURT LlRZUEVfSlNPTjt9ZWxzZXtpZihjdHlwZS5pbmRleE9mKCJ0ZXh0L3BsYWluIik+ LTEpe3RoaXMucmVzcG9uc2VUeXBlPURTLlRZUEVfVEVYVDt9fX19ZWxzZXtpZihZ QUhPTy5sYW5nLmlzQXJyYXkob1Jhd1Jlc3BvbnNlKSl7dGhpcy5yZXNwb25zZVR5 cGU9RFMuVFlQRV9KU0FSUkFZO31lbHNle2lmKG9SYXdSZXNwb25zZSYmb1Jhd1Jl c3BvbnNlLm5vZGVUeXBlJiZvUmF3UmVzcG9uc2Uubm9kZVR5cGU9PTkpe3RoaXMu cmVzcG9uc2VUeXBlPURTLlRZUEVfWE1MO31lbHNle2lmKG9SYXdSZXNwb25zZSYm b1Jhd1Jlc3BvbnNlLm5vZGVOYW1lJiYob1Jhd1Jlc3BvbnNlLm5vZGVOYW1lLnRv TG93ZXJDYXNlKCk9PSJ0YWJsZSIpKXt0aGlzLnJlc3BvbnNlVHlwZT1EUy5UWVBF X0hUTUxUQUJMRTt9ZWxzZXtpZihZQUhPTy5sYW5nLmlzT2JqZWN0KG9SYXdSZXNw b25zZSkpe3RoaXMucmVzcG9uc2VUeXBlPURTLlRZUEVfSlNPTjt9ZWxzZXtpZihZ QUhPTy5sYW5nLmlzU3RyaW5nKG9SYXdSZXNwb25zZSkpe3RoaXMucmVzcG9uc2VU eXBlPURTLlRZUEVfVEVYVDt9fX19fX19c3dpdGNoKHRoaXMucmVzcG9uc2VUeXBl KXtjYXNlIERTLlRZUEVfSlNBUlJBWTppZih4aHImJm9SYXdSZXNwb25zZSYmb1Jh d1Jlc3BvbnNlLnJlc3BvbnNlVGV4dCl7b0Z1bGxSZXNwb25zZT1vUmF3UmVzcG9u c2UucmVzcG9uc2VUZXh0O310cnl7aWYobGFuZy5pc1N0cmluZyhvRnVsbFJlc3Bv bnNlKSl7dmFyIHBhcnNlQXJncz1bb0Z1bGxSZXNwb25zZV0uY29uY2F0KHRoaXMu cGFyc2VKU09OQXJncyk7CmlmKGxhbmcuSlNPTil7b0Z1bGxSZXNwb25zZT1sYW5n LkpTT04ucGFyc2UuYXBwbHkobGFuZy5KU09OLHBhcnNlQXJncyk7fWVsc2V7aWYo d2luZG93LkpTT04mJkpTT04ucGFyc2Upe29GdWxsUmVzcG9uc2U9SlNPTi5wYXJz ZS5hcHBseShKU09OLHBhcnNlQXJncyk7fWVsc2V7aWYob0Z1bGxSZXNwb25zZS5w YXJzZUpTT04pe29GdWxsUmVzcG9uc2U9b0Z1bGxSZXNwb25zZS5wYXJzZUpTT04u YXBwbHkob0Z1bGxSZXNwb25zZSxwYXJzZUFyZ3Muc2xpY2UoMSkpO31lbHNle3do aWxlKG9GdWxsUmVzcG9uc2UubGVuZ3RoPjAmJihvRnVsbFJlc3BvbnNlLmNoYXJB dCgwKSE9InsiKSYmKG9GdWxsUmVzcG9uc2UuY2hhckF0KDApIT0iWyIpKXtvRnVs bFJlc3BvbnNlPW9GdWxsUmVzcG9uc2Uuc3Vic3RyaW5nKDEsb0Z1bGxSZXNwb25z ZS5sZW5ndGgpO31pZihvRnVsbFJlc3BvbnNlLmxlbmd0aD4wKXt2YXIgYXJyYXlF bmQ9TWF0aC5tYXgob0Z1bGxSZXNwb25zZS5sYXN0SW5kZXhPZigiXSIpLG9GdWxs UmVzcG9uc2UubGFzdEluZGV4T2YoIn0iKSk7b0Z1bGxSZXNwb25zZT1vRnVsbFJl c3BvbnNlLnN1YnN0cmluZygwLGFycmF5RW5kKzEpO29GdWxsUmVzcG9uc2U9ZXZh bCgiKCIrb0Z1bGxSZXNwb25zZSsiKSIpO319fX19fWNhdGNoKGUxKXt9b0Z1bGxS ZXNwb25zZT10aGlzLmRvQmVmb3JlUGFyc2VEYXRhKG9SZXF1ZXN0LG9GdWxsUmVz cG9uc2Usb0NhbGxiYWNrKTtvUGFyc2VkUmVzcG9uc2U9dGhpcy5wYXJzZUFycmF5 RGF0YShvUmVxdWVzdCxvRnVsbFJlc3BvbnNlKTticmVhaztjYXNlIERTLlRZUEVf SlNPTjppZih4aHImJm9SYXdSZXNwb25zZSYmb1Jhd1Jlc3BvbnNlLnJlc3BvbnNl VGV4dCl7b0Z1bGxSZXNwb25zZT1vUmF3UmVzcG9uc2UucmVzcG9uc2VUZXh0O310 cnl7aWYobGFuZy5pc1N0cmluZyhvRnVsbFJlc3BvbnNlKSl7dmFyIHBhcnNlQXJn cz1bb0Z1bGxSZXNwb25zZV0uY29uY2F0KHRoaXMucGFyc2VKU09OQXJncyk7aWYo bGFuZy5KU09OKXtvRnVsbFJlc3BvbnNlPWxhbmcuSlNPTi5wYXJzZS5hcHBseShs YW5nLkpTT04scGFyc2VBcmdzKTt9ZWxzZXtpZih3aW5kb3cuSlNPTiYmSlNPTi5w YXJzZSl7b0Z1bGxSZXNwb25zZT1KU09OLnBhcnNlLmFwcGx5KEpTT04scGFyc2VB cmdzKTt9ZWxzZXtpZihvRnVsbFJlc3BvbnNlLnBhcnNlSlNPTil7b0Z1bGxSZXNw b25zZT1vRnVsbFJlc3BvbnNlLnBhcnNlSlNPTi5hcHBseShvRnVsbFJlc3BvbnNl LHBhcnNlQXJncy5zbGljZSgxKSk7fWVsc2V7d2hpbGUob0Z1bGxSZXNwb25zZS5s ZW5ndGg+MCYmKG9GdWxsUmVzcG9uc2UuY2hhckF0KDApIT0ieyIpJiYob0Z1bGxS ZXNwb25zZS5jaGFyQXQoMCkhPSJbIikpe29GdWxsUmVzcG9uc2U9b0Z1bGxSZXNw b25zZS5zdWJzdHJpbmcoMSxvRnVsbFJlc3BvbnNlLmxlbmd0aCk7fWlmKG9GdWxs UmVzcG9uc2UubGVuZ3RoPjApe3ZhciBvYmpFbmQ9TWF0aC5tYXgob0Z1bGxSZXNw b25zZS5sYXN0SW5kZXhPZigiXSIpLG9GdWxsUmVzcG9uc2UubGFzdEluZGV4T2Yo In0iKSk7b0Z1bGxSZXNwb25zZT1vRnVsbFJlc3BvbnNlLnN1YnN0cmluZygwLG9i akVuZCsxKTtvRnVsbFJlc3BvbnNlPWV2YWwoIigiK29GdWxsUmVzcG9uc2UrIiki KTt9fX19fX1jYXRjaChlKXt9b0Z1bGxSZXNwb25zZT10aGlzLmRvQmVmb3JlUGFy c2VEYXRhKG9SZXF1ZXN0LG9GdWxsUmVzcG9uc2Usb0NhbGxiYWNrKTtvUGFyc2Vk UmVzcG9uc2U9dGhpcy5wYXJzZUpTT05EYXRhKG9SZXF1ZXN0LG9GdWxsUmVzcG9u c2UpO2JyZWFrO2Nhc2UgRFMuVFlQRV9IVE1MVEFCTEU6aWYoeGhyJiZvUmF3UmVz cG9uc2UucmVzcG9uc2VUZXh0KXt2YXIgZWw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVu dCgiZGl2Iik7ZWwuaW5uZXJIVE1MPW9SYXdSZXNwb25zZS5yZXNwb25zZVRleHQ7 b0Z1bGxSZXNwb25zZT1lbC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGFibGUiKVsw XTt9b0Z1bGxSZXNwb25zZT10aGlzLmRvQmVmb3JlUGFyc2VEYXRhKG9SZXF1ZXN0 LG9GdWxsUmVzcG9uc2Usb0NhbGxiYWNrKTtvUGFyc2VkUmVzcG9uc2U9dGhpcy5w YXJzZUhUTUxUYWJsZURhdGEob1JlcXVlc3Qsb0Z1bGxSZXNwb25zZSk7YnJlYWs7 Y2FzZSBEUy5UWVBFX1hNTDppZih4aHImJm9SYXdSZXNwb25zZS5yZXNwb25zZVhN TCl7b0Z1bGxSZXNwb25zZT1vUmF3UmVzcG9uc2UucmVzcG9uc2VYTUw7fW9GdWxs UmVzcG9uc2U9dGhpcy5kb0JlZm9yZVBhcnNlRGF0YShvUmVxdWVzdCxvRnVsbFJl c3BvbnNlLG9DYWxsYmFjayk7b1BhcnNlZFJlc3BvbnNlPXRoaXMucGFyc2VYTUxE YXRhKG9SZXF1ZXN0LG9GdWxsUmVzcG9uc2UpO2JyZWFrO2Nhc2UgRFMuVFlQRV9U RVhUOmlmKHhociYmbGFuZy5pc1N0cmluZyhvUmF3UmVzcG9uc2UucmVzcG9uc2VU ZXh0KSl7b0Z1bGxSZXNwb25zZT1vUmF3UmVzcG9uc2UucmVzcG9uc2VUZXh0O31v RnVsbFJlc3BvbnNlPXRoaXMuZG9CZWZvcmVQYXJzZURhdGEob1JlcXVlc3Qsb0Z1 bGxSZXNwb25zZSxvQ2FsbGJhY2spO29QYXJzZWRSZXNwb25zZT10aGlzLnBhcnNl VGV4dERhdGEob1JlcXVlc3Qsb0Z1bGxSZXNwb25zZSk7YnJlYWs7ZGVmYXVsdDpv RnVsbFJlc3BvbnNlPXRoaXMuZG9CZWZvcmVQYXJzZURhdGEob1JlcXVlc3Qsb0Z1 bGxSZXNwb25zZSxvQ2FsbGJhY2spO29QYXJzZWRSZXNwb25zZT10aGlzLnBhcnNl RGF0YShvUmVxdWVzdCxvRnVsbFJlc3BvbnNlKTticmVhazt9b1BhcnNlZFJlc3Bv bnNlPW9QYXJzZWRSZXNwb25zZXx8e307aWYoIW9QYXJzZWRSZXNwb25zZS5yZXN1 bHRzKXtvUGFyc2VkUmVzcG9uc2UucmVzdWx0cz1bXTt9aWYoIW9QYXJzZWRSZXNw b25zZS5tZXRhKXtvUGFyc2VkUmVzcG9uc2UubWV0YT17fTt9aWYob1BhcnNlZFJl c3BvbnNlJiYhb1BhcnNlZFJlc3BvbnNlLmVycm9yKXtvUGFyc2VkUmVzcG9uc2U9 dGhpcy5kb0JlZm9yZUNhbGxiYWNrKG9SZXF1ZXN0LG9GdWxsUmVzcG9uc2Usb1Bh cnNlZFJlc3BvbnNlLG9DYWxsYmFjayk7dGhpcy5maXJlRXZlbnQoInJlc3BvbnNl UGFyc2VFdmVudCIse3JlcXVlc3Q6b1JlcXVlc3QscmVzcG9uc2U6b1BhcnNlZFJl c3BvbnNlLGNhbGxiYWNrOm9DYWxsYmFjayxjYWxsZXI6b0NhbGxlcn0pO3RoaXMu YWRkVG9DYWNoZShvUmVxdWVzdCxvUGFyc2VkUmVzcG9uc2UpO31lbHNle29QYXJz ZWRSZXNwb25zZS5lcnJvcj10cnVlO3RoaXMuZmlyZUV2ZW50KCJkYXRhRXJyb3JF dmVudCIse3JlcXVlc3Q6b1JlcXVlc3QscmVzcG9uc2U6b1Jhd1Jlc3BvbnNlLGNh bGxiYWNrOm9DYWxsYmFjayxjYWxsZXI6b0NhbGxlcixtZXNzYWdlOkRTLkVSUk9S X0RBVEFOVUxMfSk7fW9QYXJzZWRSZXNwb25zZS50SWQ9dElkO0RTLmlzc3VlQ2Fs bGJhY2sob0NhbGxiYWNrLFtvUmVxdWVzdCxvUGFyc2VkUmVzcG9uc2VdLG9QYXJz ZWRSZXNwb25zZS5lcnJvcixvQ2FsbGVyKTt9LGRvQmVmb3JlUGFyc2VEYXRhOmZ1 bmN0aW9uKG9SZXF1ZXN0LG9GdWxsUmVzcG9uc2Usb0NhbGxiYWNrKXtyZXR1cm4g b0Z1bGxSZXNwb25zZTt9LGRvQmVmb3JlQ2FsbGJhY2s6ZnVuY3Rpb24ob1JlcXVl c3Qsb0Z1bGxSZXNwb25zZSxvUGFyc2VkUmVzcG9uc2Usb0NhbGxiYWNrKXtyZXR1 cm4gb1BhcnNlZFJlc3BvbnNlO30scGFyc2VEYXRhOmZ1bmN0aW9uKG9SZXF1ZXN0 LG9GdWxsUmVzcG9uc2Upe2lmKGxhbmcuaXNWYWx1ZShvRnVsbFJlc3BvbnNlKSl7 dmFyIG9QYXJzZWRSZXNwb25zZT17cmVzdWx0czpvRnVsbFJlc3BvbnNlLG1ldGE6 e319O3JldHVybiBvUGFyc2VkUmVzcG9uc2U7fXJldHVybiBudWxsO30scGFyc2VB cnJheURhdGE6ZnVuY3Rpb24ob1JlcXVlc3Qsb0Z1bGxSZXNwb25zZSl7aWYobGFu Zy5pc0FycmF5KG9GdWxsUmVzcG9uc2UpKXt2YXIgcmVzdWx0cz1bXSxpLGoscmVj LGZpZWxkLGRhdGE7aWYobGFuZy5pc0FycmF5KHRoaXMucmVzcG9uc2VTY2hlbWEu ZmllbGRzKSl7dmFyIGZpZWxkcz10aGlzLnJlc3BvbnNlU2NoZW1hLmZpZWxkcztm b3IoaT1maWVsZHMubGVuZ3RoLTE7aT49MDstLWkpe2lmKHR5cGVvZiBmaWVsZHNb aV0hPT0ib2JqZWN0Iil7ZmllbGRzW2ldPXtrZXk6ZmllbGRzW2ldfTt9fXZhciBw YXJzZXJzPXt9LHA7Zm9yKGk9ZmllbGRzLmxlbmd0aC0xO2k+PTA7LS1pKXtwPSh0 eXBlb2YgZmllbGRzW2ldLnBhcnNlcj09PSJmdW5jdGlvbiI/ZmllbGRzW2ldLnBh cnNlcjpEUy5QYXJzZXJbZmllbGRzW2ldLnBhcnNlcisiIl0pfHxmaWVsZHNbaV0u Y29udmVydGVyO2lmKHApe3BhcnNlcnNbZmllbGRzW2ldLmtleV09cDt9fXZhciBh cnJUeXBlPWxhbmcuaXNBcnJheShvRnVsbFJlc3BvbnNlWzBdKTtmb3IoaT1vRnVs bFJlc3BvbnNlLmxlbmd0aC0xO2k+LTE7aS0tKXt2YXIgb1Jlc3VsdD17fTtyZWM9 b0Z1bGxSZXNwb25zZVtpXTtpZih0eXBlb2YgcmVjPT09Im9iamVjdCIpe2Zvcihq PWZpZWxkcy5sZW5ndGgtMTtqPi0xO2otLSl7ZmllbGQ9ZmllbGRzW2pdO2RhdGE9 YXJyVHlwZT9yZWNbal06cmVjW2ZpZWxkLmtleV07aWYocGFyc2Vyc1tmaWVsZC5r ZXldKXtkYXRhPXBhcnNlcnNbZmllbGQua2V5XS5jYWxsKHRoaXMsZGF0YSk7fWlm KGRhdGE9PT11bmRlZmluZWQpe2RhdGE9bnVsbDt9b1Jlc3VsdFtmaWVsZC5rZXld PWRhdGE7fX1lbHNle2lmKGxhbmcuaXNTdHJpbmcocmVjKSl7Zm9yKGo9ZmllbGRz Lmxlbmd0aC0xO2o+LTE7ai0tKXtmaWVsZD1maWVsZHNbal07ZGF0YT1yZWM7aWYo cGFyc2Vyc1tmaWVsZC5rZXldKXtkYXRhPXBhcnNlcnNbZmllbGQua2V5XS5jYWxs KHRoaXMsZGF0YSk7fWlmKGRhdGE9PT11bmRlZmluZWQpe2RhdGE9bnVsbDt9b1Jl c3VsdFtmaWVsZC5rZXldPWRhdGE7fX19cmVzdWx0c1tpXT1vUmVzdWx0O319ZWxz ZXtyZXN1bHRzPW9GdWxsUmVzcG9uc2U7fXZhciBvUGFyc2VkUmVzcG9uc2U9e3Jl c3VsdHM6cmVzdWx0c307cmV0dXJuIG9QYXJzZWRSZXNwb25zZTt9cmV0dXJuIG51 bGw7fSxwYXJzZVRleHREYXRhOmZ1bmN0aW9uKG9SZXF1ZXN0LG9GdWxsUmVzcG9u c2Upe2lmKGxhbmcuaXNTdHJpbmcob0Z1bGxSZXNwb25zZSkpe2lmKGxhbmcuaXNT dHJpbmcodGhpcy5yZXNwb25zZVNjaGVtYS5yZWNvcmREZWxpbSkmJmxhbmcuaXNT dHJpbmcodGhpcy5yZXNwb25zZVNjaGVtYS5maWVsZERlbGltKSl7dmFyIG9QYXJz ZWRSZXNwb25zZT17cmVzdWx0czpbXX07dmFyIHJlY0RlbGltPXRoaXMucmVzcG9u c2VTY2hlbWEucmVjb3JkRGVsaW07dmFyIGZpZWxkRGVsaW09dGhpcy5yZXNwb25z ZVNjaGVtYS5maWVsZERlbGltO2lmKG9GdWxsUmVzcG9uc2UubGVuZ3RoPjApe3Zh ciBuZXdMZW5ndGg9b0Z1bGxSZXNwb25zZS5sZW5ndGgtcmVjRGVsaW0ubGVuZ3Ro O2lmKG9GdWxsUmVzcG9uc2Uuc3Vic3RyKG5ld0xlbmd0aCk9PXJlY0RlbGltKXtv RnVsbFJlc3BvbnNlPW9GdWxsUmVzcG9uc2Uuc3Vic3RyKDAsbmV3TGVuZ3RoKTt9 aWYob0Z1bGxSZXNwb25zZS5sZW5ndGg+MCl7dmFyIHJlY29yZHNhcnJheT1vRnVs bFJlc3BvbnNlLnNwbGl0KHJlY0RlbGltKTtmb3IodmFyIGk9MCxsZW49cmVjb3Jk c2FycmF5Lmxlbmd0aCxyZWNJZHg9MDtpPGxlbjsrK2kpe3ZhciBiRXJyb3I9ZmFs c2Usc1JlY29yZD1yZWNvcmRzYXJyYXlbaV07aWYobGFuZy5pc1N0cmluZyhzUmVj b3JkKSYmKHNSZWNvcmQubGVuZ3RoPjApKXt2YXIgZmllbGRkYXRhYXJyYXk9cmVj b3Jkc2FycmF5W2ldLnNwbGl0KGZpZWxkRGVsaW0pO3ZhciBvUmVzdWx0PXt9O2lm KGxhbmcuaXNBcnJheSh0aGlzLnJlc3BvbnNlU2NoZW1hLmZpZWxkcykpe3ZhciBm aWVsZHM9dGhpcy5yZXNwb25zZVNjaGVtYS5maWVsZHM7Zm9yKHZhciBqPWZpZWxk cy5sZW5ndGgtMTtqPi0xO2otLSl7dHJ5e3ZhciBkYXRhPWZpZWxkZGF0YWFycmF5 W2pdO2lmKGxhbmcuaXNTdHJpbmcoZGF0YSkpe2lmKGRhdGEuY2hhckF0KDApPT0n Iicpe2RhdGE9ZGF0YS5zdWJzdHIoMSk7fWlmKGRhdGEuY2hhckF0KGRhdGEubGVu Z3RoLTEpPT0nIicpe2RhdGE9ZGF0YS5zdWJzdHIoMCxkYXRhLmxlbmd0aC0xKTt9 dmFyIGZpZWxkPWZpZWxkc1tqXTsKdmFyIGtleT0obGFuZy5pc1ZhbHVlKGZpZWxk LmtleSkpP2ZpZWxkLmtleTpmaWVsZDtpZighZmllbGQucGFyc2VyJiZmaWVsZC5j b252ZXJ0ZXIpe2ZpZWxkLnBhcnNlcj1maWVsZC5jb252ZXJ0ZXI7fXZhciBwYXJz ZXI9KHR5cGVvZiBmaWVsZC5wYXJzZXI9PT0iZnVuY3Rpb24iKT9maWVsZC5wYXJz ZXI6RFMuUGFyc2VyW2ZpZWxkLnBhcnNlcisiIl07aWYocGFyc2VyKXtkYXRhPXBh cnNlci5jYWxsKHRoaXMsZGF0YSk7fWlmKGRhdGE9PT11bmRlZmluZWQpe2RhdGE9 bnVsbDt9b1Jlc3VsdFtrZXldPWRhdGE7fWVsc2V7YkVycm9yPXRydWU7fX1jYXRj aChlKXtiRXJyb3I9dHJ1ZTt9fX1lbHNle29SZXN1bHQ9ZmllbGRkYXRhYXJyYXk7 fWlmKCFiRXJyb3Ipe29QYXJzZWRSZXNwb25zZS5yZXN1bHRzW3JlY0lkeCsrXT1v UmVzdWx0O319fX19cmV0dXJuIG9QYXJzZWRSZXNwb25zZTt9fXJldHVybiBudWxs O30scGFyc2VYTUxSZXN1bHQ6ZnVuY3Rpb24ocmVzdWx0KXt2YXIgb1Jlc3VsdD17 fSxzY2hlbWE9dGhpcy5yZXNwb25zZVNjaGVtYTt0cnl7Zm9yKHZhciBtPXNjaGVt YS5maWVsZHMubGVuZ3RoLTE7bT49MDttLS0pe3ZhciBmaWVsZD1zY2hlbWEuZmll bGRzW21dO3ZhciBrZXk9KGxhbmcuaXNWYWx1ZShmaWVsZC5rZXkpKT9maWVsZC5r ZXk6ZmllbGQ7dmFyIGRhdGE9bnVsbDt2YXIgeG1sQXR0cj1yZXN1bHQuYXR0cmli dXRlcy5nZXROYW1lZEl0ZW0oa2V5KTtpZih4bWxBdHRyKXtkYXRhPXhtbEF0dHIu dmFsdWU7fWVsc2V7dmFyIHhtbE5vZGU9cmVzdWx0LmdldEVsZW1lbnRzQnlUYWdO YW1lKGtleSk7aWYoeG1sTm9kZSYmeG1sTm9kZS5pdGVtKDApKXt2YXIgaXRlbT14 bWxOb2RlLml0ZW0oMCk7ZGF0YT0oaXRlbSk/KChpdGVtLnRleHQpP2l0ZW0udGV4 dDooaXRlbS50ZXh0Q29udGVudCk/aXRlbS50ZXh0Q29udGVudDpudWxsKTpudWxs O2lmKCFkYXRhKXt2YXIgZGF0YXBpZWNlcz1bXTtmb3IodmFyIGo9MCxsZW49aXRl bS5jaGlsZE5vZGVzLmxlbmd0aDtqPGxlbjtqKyspe2lmKGl0ZW0uY2hpbGROb2Rl c1tqXS5ub2RlVmFsdWUpe2RhdGFwaWVjZXNbZGF0YXBpZWNlcy5sZW5ndGhdPWl0 ZW0uY2hpbGROb2Rlc1tqXS5ub2RlVmFsdWU7fX1pZihkYXRhcGllY2VzLmxlbmd0 aD4wKXtkYXRhPWRhdGFwaWVjZXMuam9pbigiIik7fX19fWlmKGRhdGE9PT1udWxs KXtkYXRhPSIiO31pZighZmllbGQucGFyc2VyJiZmaWVsZC5jb252ZXJ0ZXIpe2Zp ZWxkLnBhcnNlcj1maWVsZC5jb252ZXJ0ZXI7fXZhciBwYXJzZXI9KHR5cGVvZiBm aWVsZC5wYXJzZXI9PT0iZnVuY3Rpb24iKT9maWVsZC5wYXJzZXI6RFMuUGFyc2Vy W2ZpZWxkLnBhcnNlcisiIl07aWYocGFyc2VyKXtkYXRhPXBhcnNlci5jYWxsKHRo aXMsZGF0YSk7fWlmKGRhdGE9PT11bmRlZmluZWQpe2RhdGE9bnVsbDt9b1Jlc3Vs dFtrZXldPWRhdGE7fX1jYXRjaChlKXt9cmV0dXJuIG9SZXN1bHQ7fSxwYXJzZVhN TERhdGE6ZnVuY3Rpb24ob1JlcXVlc3Qsb0Z1bGxSZXNwb25zZSl7dmFyIGJFcnJv cj1mYWxzZSxzY2hlbWE9dGhpcy5yZXNwb25zZVNjaGVtYSxvUGFyc2VkUmVzcG9u c2U9e21ldGE6e319LHhtbExpc3Q9bnVsbCxtZXRhTm9kZT1zY2hlbWEubWV0YU5v ZGUsbWV0YUxvY2F0b3JzPXNjaGVtYS5tZXRhRmllbGRzfHx7fSxpLGssbG9jLHY7 dHJ5e3htbExpc3Q9KHNjaGVtYS5yZXN1bHROb2RlKT9vRnVsbFJlc3BvbnNlLmdl dEVsZW1lbnRzQnlUYWdOYW1lKHNjaGVtYS5yZXN1bHROb2RlKTpudWxsO21ldGFO b2RlPW1ldGFOb2RlP29GdWxsUmVzcG9uc2UuZ2V0RWxlbWVudHNCeVRhZ05hbWUo bWV0YU5vZGUpWzBdOm9GdWxsUmVzcG9uc2U7aWYobWV0YU5vZGUpe2ZvcihrIGlu IG1ldGFMb2NhdG9ycyl7aWYobGFuZy5oYXNPd25Qcm9wZXJ0eShtZXRhTG9jYXRv cnMsaykpe2xvYz1tZXRhTG9jYXRvcnNba107dj1tZXRhTm9kZS5nZXRFbGVtZW50 c0J5VGFnTmFtZShsb2MpWzBdO2lmKHYpe3Y9di5maXJzdENoaWxkLm5vZGVWYWx1 ZTt9ZWxzZXt2PW1ldGFOb2RlLmF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKGxvYyk7 aWYodil7dj12LnZhbHVlO319aWYobGFuZy5pc1ZhbHVlKHYpKXtvUGFyc2VkUmVz cG9uc2UubWV0YVtrXT12O319fX19Y2F0Y2goZSl7fWlmKCF4bWxMaXN0fHwhbGFu Zy5pc0FycmF5KHNjaGVtYS5maWVsZHMpKXtiRXJyb3I9dHJ1ZTt9ZWxzZXtvUGFy c2VkUmVzcG9uc2UucmVzdWx0cz1bXTtmb3IoaT14bWxMaXN0Lmxlbmd0aC0xO2k+ PTA7LS1pKXt2YXIgb1Jlc3VsdD10aGlzLnBhcnNlWE1MUmVzdWx0KHhtbExpc3Qu aXRlbShpKSk7b1BhcnNlZFJlc3BvbnNlLnJlc3VsdHNbaV09b1Jlc3VsdDt9fWlm KGJFcnJvcil7b1BhcnNlZFJlc3BvbnNlLmVycm9yPXRydWU7fWVsc2V7fXJldHVy biBvUGFyc2VkUmVzcG9uc2U7fSxwYXJzZUpTT05EYXRhOmZ1bmN0aW9uKG9SZXF1 ZXN0LG9GdWxsUmVzcG9uc2Upe3ZhciBvUGFyc2VkUmVzcG9uc2U9e3Jlc3VsdHM6 W10sbWV0YTp7fX07aWYobGFuZy5pc09iamVjdChvRnVsbFJlc3BvbnNlKSYmdGhp cy5yZXNwb25zZVNjaGVtYS5yZXN1bHRzTGlzdCl7dmFyIHNjaGVtYT10aGlzLnJl c3BvbnNlU2NoZW1hLGZpZWxkcz1zY2hlbWEuZmllbGRzLHJlc3VsdHNMaXN0PW9G dWxsUmVzcG9uc2UscmVzdWx0cz1bXSxtZXRhRmllbGRzPXNjaGVtYS5tZXRhRmll bGRzfHx7fSxmaWVsZFBhcnNlcnM9W10sZmllbGRQYXRocz1bXSxzaW1wbGVGaWVs ZHM9W10sYkVycm9yPWZhbHNlLGksbGVuLGosdixrZXkscGFyc2VyLHBhdGg7dmFy IGJ1aWxkUGF0aD1mdW5jdGlvbihuZWVkbGUpe3ZhciBwYXRoPW51bGwsa2V5cz1b XSxpPTA7aWYobmVlZGxlKXtuZWVkbGU9bmVlZGxlLnJlcGxhY2UoL1xbKFsnIl0p KC4qPylcMVxdL2csZnVuY3Rpb24oeCwkMSwkMil7a2V5c1tpXT0kMjtyZXR1cm4i LkAiKyhpKyspO30pLnJlcGxhY2UoL1xbKFxkKylcXS9nLGZ1bmN0aW9uKHgsJDEp e2tleXNbaV09cGFyc2VJbnQoJDEsMTApfDA7cmV0dXJuIi5AIisoaSsrKTt9KS5y ZXBsYWNlKC9eXC4vLCIiKTtpZighL1teXHdcLlwkQF0vLnRlc3QobmVlZGxlKSl7 cGF0aD1uZWVkbGUuc3BsaXQoIi4iKTtmb3IoaT1wYXRoLmxlbmd0aC0xO2k+PTA7 LS1pKXtpZihwYXRoW2ldLmNoYXJBdCgwKT09PSJAIil7cGF0aFtpXT1rZXlzW3Bh cnNlSW50KHBhdGhbaV0uc3Vic3RyKDEpLDEwKV07fX19ZWxzZXt9fXJldHVybiBw YXRoO307dmFyIHdhbGtQYXRoPWZ1bmN0aW9uKHBhdGgsb3JpZ2luKXt2YXIgdj1v cmlnaW4saT0wLGxlbj1wYXRoLmxlbmd0aDtmb3IoO2k8bGVuJiZ2OysraSl7dj12 W3BhdGhbaV1dO31yZXR1cm4gdjt9O3BhdGg9YnVpbGRQYXRoKHNjaGVtYS5yZXN1 bHRzTGlzdCk7aWYocGF0aCl7cmVzdWx0c0xpc3Q9d2Fsa1BhdGgocGF0aCxvRnVs bFJlc3BvbnNlKTtpZihyZXN1bHRzTGlzdD09PXVuZGVmaW5lZCl7YkVycm9yPXRy dWU7fX1lbHNle2JFcnJvcj10cnVlO31pZighcmVzdWx0c0xpc3Qpe3Jlc3VsdHNM aXN0PVtdO31pZighbGFuZy5pc0FycmF5KHJlc3VsdHNMaXN0KSl7cmVzdWx0c0xp c3Q9W3Jlc3VsdHNMaXN0XTt9aWYoIWJFcnJvcil7aWYoc2NoZW1hLmZpZWxkcyl7 dmFyIGZpZWxkO2ZvcihpPTAsbGVuPWZpZWxkcy5sZW5ndGg7aTxsZW47aSsrKXtm aWVsZD1maWVsZHNbaV07a2V5PWZpZWxkLmtleXx8ZmllbGQ7cGFyc2VyPSgodHlw ZW9mIGZpZWxkLnBhcnNlcj09PSJmdW5jdGlvbiIpP2ZpZWxkLnBhcnNlcjpEUy5Q YXJzZXJbZmllbGQucGFyc2VyKyIiXSl8fGZpZWxkLmNvbnZlcnRlcjtwYXRoPWJ1 aWxkUGF0aChrZXkpO2lmKHBhcnNlcil7ZmllbGRQYXJzZXJzW2ZpZWxkUGFyc2Vy cy5sZW5ndGhdPXtrZXk6a2V5LHBhcnNlcjpwYXJzZXJ9O31pZihwYXRoKXtpZihw YXRoLmxlbmd0aD4xKXtmaWVsZFBhdGhzW2ZpZWxkUGF0aHMubGVuZ3RoXT17a2V5 OmtleSxwYXRoOnBhdGh9O31lbHNle3NpbXBsZUZpZWxkc1tzaW1wbGVGaWVsZHMu bGVuZ3RoXT17a2V5OmtleSxwYXRoOnBhdGhbMF19O319ZWxzZXt9fWZvcihpPXJl c3VsdHNMaXN0Lmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgcj1yZXN1bHRzTGlzdFtp XSxyZWM9e307aWYocil7Zm9yKGo9c2ltcGxlRmllbGRzLmxlbmd0aC0xO2o+PTA7 LS1qKXtyZWNbc2ltcGxlRmllbGRzW2pdLmtleV09KHJbc2ltcGxlRmllbGRzW2pd LnBhdGhdIT09dW5kZWZpbmVkKT9yW3NpbXBsZUZpZWxkc1tqXS5wYXRoXTpyW2pd O31mb3Ioaj1maWVsZFBhdGhzLmxlbmd0aC0xO2o+PTA7LS1qKXtyZWNbZmllbGRQ YXRoc1tqXS5rZXldPXdhbGtQYXRoKGZpZWxkUGF0aHNbal0ucGF0aCxyKTt9Zm9y KGo9ZmllbGRQYXJzZXJzLmxlbmd0aC0xO2o+PTA7LS1qKXt2YXIgcD1maWVsZFBh cnNlcnNbal0ua2V5O3JlY1twXT1maWVsZFBhcnNlcnNbal0ucGFyc2VyKHJlY1tw XSk7aWYocmVjW3BdPT09dW5kZWZpbmVkKXtyZWNbcF09bnVsbDt9fX1yZXN1bHRz W2ldPXJlYzt9fWVsc2V7cmVzdWx0cz1yZXN1bHRzTGlzdDt9Zm9yKGtleSBpbiBt ZXRhRmllbGRzKXtpZihsYW5nLmhhc093blByb3BlcnR5KG1ldGFGaWVsZHMsa2V5 KSl7cGF0aD1idWlsZFBhdGgobWV0YUZpZWxkc1trZXldKTtpZihwYXRoKXt2PXdh bGtQYXRoKHBhdGgsb0Z1bGxSZXNwb25zZSk7b1BhcnNlZFJlc3BvbnNlLm1ldGFb a2V5XT12O319fX1lbHNle29QYXJzZWRSZXNwb25zZS5lcnJvcj10cnVlO31vUGFy c2VkUmVzcG9uc2UucmVzdWx0cz1yZXN1bHRzO31lbHNle29QYXJzZWRSZXNwb25z ZS5lcnJvcj10cnVlO31yZXR1cm4gb1BhcnNlZFJlc3BvbnNlO30scGFyc2VIVE1M VGFibGVEYXRhOmZ1bmN0aW9uKG9SZXF1ZXN0LG9GdWxsUmVzcG9uc2Upe3ZhciBi RXJyb3I9ZmFsc2U7dmFyIGVsVGFibGU9b0Z1bGxSZXNwb25zZTt2YXIgZmllbGRz PXRoaXMucmVzcG9uc2VTY2hlbWEuZmllbGRzO3ZhciBvUGFyc2VkUmVzcG9uc2U9 e3Jlc3VsdHM6W119O2lmKGxhbmcuaXNBcnJheShmaWVsZHMpKXtmb3IodmFyIGk9 MDtpPGVsVGFibGUudEJvZGllcy5sZW5ndGg7aSsrKXt2YXIgZWxUYm9keT1lbFRh YmxlLnRCb2RpZXNbaV07Zm9yKHZhciBqPWVsVGJvZHkucm93cy5sZW5ndGgtMTtq Pi0xO2otLSl7dmFyIGVsUm93PWVsVGJvZHkucm93c1tqXTt2YXIgb1Jlc3VsdD17 fTtmb3IodmFyIGs9ZmllbGRzLmxlbmd0aC0xO2s+LTE7ay0tKXt2YXIgZmllbGQ9 ZmllbGRzW2tdO3ZhciBrZXk9KGxhbmcuaXNWYWx1ZShmaWVsZC5rZXkpKT9maWVs ZC5rZXk6ZmllbGQ7dmFyIGRhdGE9ZWxSb3cuY2VsbHNba10uaW5uZXJIVE1MO2lm KCFmaWVsZC5wYXJzZXImJmZpZWxkLmNvbnZlcnRlcil7ZmllbGQucGFyc2VyPWZp ZWxkLmNvbnZlcnRlcjt9dmFyIHBhcnNlcj0odHlwZW9mIGZpZWxkLnBhcnNlcj09 PSJmdW5jdGlvbiIpP2ZpZWxkLnBhcnNlcjpEUy5QYXJzZXJbZmllbGQucGFyc2Vy KyIiXTtpZihwYXJzZXIpe2RhdGE9cGFyc2VyLmNhbGwodGhpcyxkYXRhKTt9aWYo ZGF0YT09PXVuZGVmaW5lZCl7ZGF0YT1udWxsO31vUmVzdWx0W2tleV09ZGF0YTt9 b1BhcnNlZFJlc3BvbnNlLnJlc3VsdHNbal09b1Jlc3VsdDt9fX1lbHNle2JFcnJv cj10cnVlO31pZihiRXJyb3Ipe29QYXJzZWRSZXNwb25zZS5lcnJvcj10cnVlO31l bHNle31yZXR1cm4gb1BhcnNlZFJlc3BvbnNlO319O2xhbmcuYXVnbWVudFByb3Rv KERTLHV0aWwuRXZlbnRQcm92aWRlcik7dXRpbC5Mb2NhbERhdGFTb3VyY2U9ZnVu Y3Rpb24ob0xpdmVEYXRhLG9Db25maWdzKXt0aGlzLmRhdGFUeXBlPURTLlRZUEVf TE9DQUw7aWYob0xpdmVEYXRhKXtpZihZQUhPTy5sYW5nLmlzQXJyYXkob0xpdmVE YXRhKSl7dGhpcy5yZXNwb25zZVR5cGU9RFMuVFlQRV9KU0FSUkFZO31lbHNle2lm KG9MaXZlRGF0YS5ub2RlVHlwZSYmb0xpdmVEYXRhLm5vZGVUeXBlPT05KXt0aGlz LnJlc3BvbnNlVHlwZT1EUy5UWVBFX1hNTDt9ZWxzZXtpZihvTGl2ZURhdGEubm9k ZU5hbWUmJihvTGl2ZURhdGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09InRhYmxl Iikpe3RoaXMucmVzcG9uc2VUeXBlPURTLlRZUEVfSFRNTFRBQkxFOwpvTGl2ZURh dGE9b0xpdmVEYXRhLmNsb25lTm9kZSh0cnVlKTt9ZWxzZXtpZihZQUhPTy5sYW5n LmlzU3RyaW5nKG9MaXZlRGF0YSkpe3RoaXMucmVzcG9uc2VUeXBlPURTLlRZUEVf VEVYVDt9ZWxzZXtpZihZQUhPTy5sYW5nLmlzT2JqZWN0KG9MaXZlRGF0YSkpe3Ro aXMucmVzcG9uc2VUeXBlPURTLlRZUEVfSlNPTjt9fX19fX1lbHNle29MaXZlRGF0 YT1bXTt0aGlzLnJlc3BvbnNlVHlwZT1EUy5UWVBFX0pTQVJSQVk7fXV0aWwuTG9j YWxEYXRhU291cmNlLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLG9M aXZlRGF0YSxvQ29uZmlncyk7fTtsYW5nLmV4dGVuZCh1dGlsLkxvY2FsRGF0YVNv dXJjZSxEUyk7bGFuZy5hdWdtZW50T2JqZWN0KHV0aWwuTG9jYWxEYXRhU291cmNl LERTKTt1dGlsLkZ1bmN0aW9uRGF0YVNvdXJjZT1mdW5jdGlvbihvTGl2ZURhdGEs b0NvbmZpZ3Mpe3RoaXMuZGF0YVR5cGU9RFMuVFlQRV9KU0ZVTkNUSU9OO29MaXZl RGF0YT1vTGl2ZURhdGF8fGZ1bmN0aW9uKCl7fTt1dGlsLkZ1bmN0aW9uRGF0YVNv dXJjZS5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxvTGl2ZURhdGEs b0NvbmZpZ3MpO307bGFuZy5leHRlbmQodXRpbC5GdW5jdGlvbkRhdGFTb3VyY2Us RFMse3Njb3BlOm51bGwsbWFrZUNvbm5lY3Rpb246ZnVuY3Rpb24ob1JlcXVlc3Qs b0NhbGxiYWNrLG9DYWxsZXIpe3ZhciB0SWQ9RFMuX25UcmFuc2FjdGlvbklkKys7 dGhpcy5maXJlRXZlbnQoInJlcXVlc3RFdmVudCIse3RJZDp0SWQscmVxdWVzdDpv UmVxdWVzdCxjYWxsYmFjazpvQ2FsbGJhY2ssY2FsbGVyOm9DYWxsZXJ9KTt2YXIg b1Jhd1Jlc3BvbnNlPSh0aGlzLnNjb3BlKT90aGlzLmxpdmVEYXRhLmNhbGwodGhp cy5zY29wZSxvUmVxdWVzdCx0aGlzKTp0aGlzLmxpdmVEYXRhKG9SZXF1ZXN0KTtp Zih0aGlzLnJlc3BvbnNlVHlwZT09PURTLlRZUEVfVU5LTk9XTil7aWYoWUFIT08u bGFuZy5pc0FycmF5KG9SYXdSZXNwb25zZSkpe3RoaXMucmVzcG9uc2VUeXBlPURT LlRZUEVfSlNBUlJBWTt9ZWxzZXtpZihvUmF3UmVzcG9uc2UmJm9SYXdSZXNwb25z ZS5ub2RlVHlwZSYmb1Jhd1Jlc3BvbnNlLm5vZGVUeXBlPT05KXt0aGlzLnJlc3Bv bnNlVHlwZT1EUy5UWVBFX1hNTDt9ZWxzZXtpZihvUmF3UmVzcG9uc2UmJm9SYXdS ZXNwb25zZS5ub2RlTmFtZSYmKG9SYXdSZXNwb25zZS5ub2RlTmFtZS50b0xvd2Vy Q2FzZSgpPT0idGFibGUiKSl7dGhpcy5yZXNwb25zZVR5cGU9RFMuVFlQRV9IVE1M VEFCTEU7fWVsc2V7aWYoWUFIT08ubGFuZy5pc09iamVjdChvUmF3UmVzcG9uc2Up KXt0aGlzLnJlc3BvbnNlVHlwZT1EUy5UWVBFX0pTT047fWVsc2V7aWYoWUFIT08u bGFuZy5pc1N0cmluZyhvUmF3UmVzcG9uc2UpKXt0aGlzLnJlc3BvbnNlVHlwZT1E Uy5UWVBFX1RFWFQ7fX19fX19dGhpcy5oYW5kbGVSZXNwb25zZShvUmVxdWVzdCxv UmF3UmVzcG9uc2Usb0NhbGxiYWNrLG9DYWxsZXIsdElkKTtyZXR1cm4gdElkO319 KTtsYW5nLmF1Z21lbnRPYmplY3QodXRpbC5GdW5jdGlvbkRhdGFTb3VyY2UsRFMp O3V0aWwuU2NyaXB0Tm9kZURhdGFTb3VyY2U9ZnVuY3Rpb24ob0xpdmVEYXRhLG9D b25maWdzKXt0aGlzLmRhdGFUeXBlPURTLlRZUEVfU0NSSVBUTk9ERTtvTGl2ZURh dGE9b0xpdmVEYXRhfHwiIjt1dGlsLlNjcmlwdE5vZGVEYXRhU291cmNlLnN1cGVy Y2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLG9MaXZlRGF0YSxvQ29uZmlncyk7 fTtsYW5nLmV4dGVuZCh1dGlsLlNjcmlwdE5vZGVEYXRhU291cmNlLERTLHtnZXRV dGlsaXR5OnV0aWwuR2V0LGFzeW5jTW9kZToiYWxsb3dBbGwiLHNjcmlwdENhbGxi YWNrUGFyYW06ImNhbGxiYWNrIixnZW5lcmF0ZVJlcXVlc3RDYWxsYmFjazpmdW5j dGlvbihpZCl7cmV0dXJuIiYiK3RoaXMuc2NyaXB0Q2FsbGJhY2tQYXJhbSsiPVlB SE9PLnV0aWwuU2NyaXB0Tm9kZURhdGFTb3VyY2UuY2FsbGJhY2tzWyIraWQrIl0i O30sZG9CZWZvcmVHZXRTY3JpcHROb2RlOmZ1bmN0aW9uKHNVcmkpe3JldHVybiBz VXJpO30sbWFrZUNvbm5lY3Rpb246ZnVuY3Rpb24ob1JlcXVlc3Qsb0NhbGxiYWNr LG9DYWxsZXIpe3ZhciB0SWQ9RFMuX25UcmFuc2FjdGlvbklkKys7dGhpcy5maXJl RXZlbnQoInJlcXVlc3RFdmVudCIse3RJZDp0SWQscmVxdWVzdDpvUmVxdWVzdCxj YWxsYmFjazpvQ2FsbGJhY2ssY2FsbGVyOm9DYWxsZXJ9KTtpZih1dGlsLlNjcmlw dE5vZGVEYXRhU291cmNlLl9uUGVuZGluZz09PTApe3V0aWwuU2NyaXB0Tm9kZURh dGFTb3VyY2UuY2FsbGJhY2tzPVtdO3V0aWwuU2NyaXB0Tm9kZURhdGFTb3VyY2Uu X25JZD0wO312YXIgaWQ9dXRpbC5TY3JpcHROb2RlRGF0YVNvdXJjZS5fbklkO3V0 aWwuU2NyaXB0Tm9kZURhdGFTb3VyY2UuX25JZCsrO3ZhciBvU2VsZj10aGlzO3V0 aWwuU2NyaXB0Tm9kZURhdGFTb3VyY2UuY2FsbGJhY2tzW2lkXT1mdW5jdGlvbihv UmF3UmVzcG9uc2Upe2lmKChvU2VsZi5hc3luY01vZGUhPT0iaWdub3JlU3RhbGVS ZXNwb25zZXMiKXx8KGlkPT09dXRpbC5TY3JpcHROb2RlRGF0YVNvdXJjZS5jYWxs YmFja3MubGVuZ3RoLTEpKXtpZihvU2VsZi5yZXNwb25zZVR5cGU9PT1EUy5UWVBF X1VOS05PV04pe2lmKFlBSE9PLmxhbmcuaXNBcnJheShvUmF3UmVzcG9uc2UpKXtv U2VsZi5yZXNwb25zZVR5cGU9RFMuVFlQRV9KU0FSUkFZO31lbHNle2lmKG9SYXdS ZXNwb25zZS5ub2RlVHlwZSYmb1Jhd1Jlc3BvbnNlLm5vZGVUeXBlPT05KXtvU2Vs Zi5yZXNwb25zZVR5cGU9RFMuVFlQRV9YTUw7fWVsc2V7aWYob1Jhd1Jlc3BvbnNl Lm5vZGVOYW1lJiYob1Jhd1Jlc3BvbnNlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9 PSJ0YWJsZSIpKXtvU2VsZi5yZXNwb25zZVR5cGU9RFMuVFlQRV9IVE1MVEFCTEU7 fWVsc2V7aWYoWUFIT08ubGFuZy5pc09iamVjdChvUmF3UmVzcG9uc2UpKXtvU2Vs Zi5yZXNwb25zZVR5cGU9RFMuVFlQRV9KU09OO31lbHNle2lmKFlBSE9PLmxhbmcu aXNTdHJpbmcob1Jhd1Jlc3BvbnNlKSl7b1NlbGYucmVzcG9uc2VUeXBlPURTLlRZ UEVfVEVYVDt9fX19fX1vU2VsZi5oYW5kbGVSZXNwb25zZShvUmVxdWVzdCxvUmF3 UmVzcG9uc2Usb0NhbGxiYWNrLG9DYWxsZXIsdElkKTt9ZWxzZXt9ZGVsZXRlIHV0 aWwuU2NyaXB0Tm9kZURhdGFTb3VyY2UuY2FsbGJhY2tzW2lkXTt9O3V0aWwuU2Ny aXB0Tm9kZURhdGFTb3VyY2UuX25QZW5kaW5nKys7dmFyIHNVcmk9dGhpcy5saXZl RGF0YStvUmVxdWVzdCt0aGlzLmdlbmVyYXRlUmVxdWVzdENhbGxiYWNrKGlkKTtz VXJpPXRoaXMuZG9CZWZvcmVHZXRTY3JpcHROb2RlKHNVcmkpO3RoaXMuZ2V0VXRp bGl0eS5zY3JpcHQoc1VyaSx7YXV0b3B1cmdlOnRydWUsb25zdWNjZXNzOnV0aWwu U2NyaXB0Tm9kZURhdGFTb3VyY2UuX2J1bXBQZW5kaW5nRG93bixvbmZhaWw6dXRp bC5TY3JpcHROb2RlRGF0YVNvdXJjZS5fYnVtcFBlbmRpbmdEb3dufSk7cmV0dXJu IHRJZDt9fSk7bGFuZy5hdWdtZW50T2JqZWN0KHV0aWwuU2NyaXB0Tm9kZURhdGFT b3VyY2UsRFMpO2xhbmcuYXVnbWVudE9iamVjdCh1dGlsLlNjcmlwdE5vZGVEYXRh U291cmNlLHtfbklkOjAsX25QZW5kaW5nOjAsY2FsbGJhY2tzOltdfSk7dXRpbC5Y SFJEYXRhU291cmNlPWZ1bmN0aW9uKG9MaXZlRGF0YSxvQ29uZmlncyl7dGhpcy5k YXRhVHlwZT1EUy5UWVBFX1hIUjt0aGlzLmNvbm5NZ3I9dGhpcy5jb25uTWdyfHx1 dGlsLkNvbm5lY3Q7b0xpdmVEYXRhPW9MaXZlRGF0YXx8IiI7dXRpbC5YSFJEYXRh U291cmNlLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLG9MaXZlRGF0 YSxvQ29uZmlncyk7fTtsYW5nLmV4dGVuZCh1dGlsLlhIUkRhdGFTb3VyY2UsRFMs e2Nvbm5NZ3I6bnVsbCxjb25uWGhyTW9kZToiYWxsb3dBbGwiLGNvbm5NZXRob2RQ b3N0OmZhbHNlLGNvbm5UaW1lb3V0OjAsbWFrZUNvbm5lY3Rpb246ZnVuY3Rpb24o b1JlcXVlc3Qsb0NhbGxiYWNrLG9DYWxsZXIpe3ZhciBvUmF3UmVzcG9uc2U9bnVs bDt2YXIgdElkPURTLl9uVHJhbnNhY3Rpb25JZCsrO3RoaXMuZmlyZUV2ZW50KCJy ZXF1ZXN0RXZlbnQiLHt0SWQ6dElkLHJlcXVlc3Q6b1JlcXVlc3QsY2FsbGJhY2s6 b0NhbGxiYWNrLGNhbGxlcjpvQ2FsbGVyfSk7dmFyIG9TZWxmPXRoaXM7dmFyIG9D b25uTWdyPXRoaXMuY29ubk1ncjt2YXIgb1F1ZXVlPXRoaXMuX29RdWV1ZTt2YXIg X3hoclN1Y2Nlc3M9ZnVuY3Rpb24ob1Jlc3BvbnNlKXtpZihvUmVzcG9uc2UmJih0 aGlzLmNvbm5YaHJNb2RlPT0iaWdub3JlU3RhbGVSZXNwb25zZXMiKSYmKG9SZXNw b25zZS50SWQhPW9RdWV1ZS5jb25uLnRJZCkpe3JldHVybiBudWxsO31lbHNle2lm KCFvUmVzcG9uc2Upe3RoaXMuZmlyZUV2ZW50KCJkYXRhRXJyb3JFdmVudCIse3Jl cXVlc3Q6b1JlcXVlc3QsY2FsbGJhY2s6b0NhbGxiYWNrLGNhbGxlcjpvQ2FsbGVy LG1lc3NhZ2U6RFMuRVJST1JfREFUQU5VTEx9KTtEUy5pc3N1ZUNhbGxiYWNrKG9D YWxsYmFjayxbb1JlcXVlc3Qse2Vycm9yOnRydWV9XSx0cnVlLG9DYWxsZXIpO3Jl dHVybiBudWxsO31lbHNle2lmKHRoaXMucmVzcG9uc2VUeXBlPT09RFMuVFlQRV9V TktOT1dOKXt2YXIgY3R5cGU9KG9SZXNwb25zZS5nZXRSZXNwb25zZUhlYWRlcik/ b1Jlc3BvbnNlLmdldFJlc3BvbnNlSGVhZGVyWyJDb250ZW50LVR5cGUiXTpudWxs O2lmKGN0eXBlKXtpZihjdHlwZS5pbmRleE9mKCJ0ZXh0L3htbCIpPi0xKXt0aGlz LnJlc3BvbnNlVHlwZT1EUy5UWVBFX1hNTDt9ZWxzZXtpZihjdHlwZS5pbmRleE9m KCJhcHBsaWNhdGlvbi9qc29uIik+LTEpe3RoaXMucmVzcG9uc2VUeXBlPURTLlRZ UEVfSlNPTjt9ZWxzZXtpZihjdHlwZS5pbmRleE9mKCJ0ZXh0L3BsYWluIik+LTEp e3RoaXMucmVzcG9uc2VUeXBlPURTLlRZUEVfVEVYVDt9fX19fXRoaXMuaGFuZGxl UmVzcG9uc2Uob1JlcXVlc3Qsb1Jlc3BvbnNlLG9DYWxsYmFjayxvQ2FsbGVyLHRJ ZCk7fX19O3ZhciBfeGhyRmFpbHVyZT1mdW5jdGlvbihvUmVzcG9uc2Upe3RoaXMu ZmlyZUV2ZW50KCJkYXRhRXJyb3JFdmVudCIse3JlcXVlc3Q6b1JlcXVlc3QsY2Fs bGJhY2s6b0NhbGxiYWNrLGNhbGxlcjpvQ2FsbGVyLG1lc3NhZ2U6RFMuRVJST1Jf REFUQUlOVkFMSUR9KTtpZihsYW5nLmlzU3RyaW5nKHRoaXMubGl2ZURhdGEpJiZs YW5nLmlzU3RyaW5nKG9SZXF1ZXN0KSYmKHRoaXMubGl2ZURhdGEubGFzdEluZGV4 T2YoIj8iKSE9PXRoaXMubGl2ZURhdGEubGVuZ3RoLTEpJiYob1JlcXVlc3QuaW5k ZXhPZigiPyIpIT09MCkpe31vUmVzcG9uc2U9b1Jlc3BvbnNlfHx7fTtvUmVzcG9u c2UuZXJyb3I9dHJ1ZTtEUy5pc3N1ZUNhbGxiYWNrKG9DYWxsYmFjayxbb1JlcXVl c3Qsb1Jlc3BvbnNlXSx0cnVlLG9DYWxsZXIpO3JldHVybiBudWxsO307dmFyIF94 aHJDYWxsYmFjaz17c3VjY2VzczpfeGhyU3VjY2VzcyxmYWlsdXJlOl94aHJGYWls dXJlLHNjb3BlOnRoaXN9O2lmKGxhbmcuaXNOdW1iZXIodGhpcy5jb25uVGltZW91 dCkpe194aHJDYWxsYmFjay50aW1lb3V0PXRoaXMuY29ublRpbWVvdXQ7fWlmKHRo aXMuY29ublhock1vZGU9PSJjYW5jZWxTdGFsZVJlcXVlc3RzIil7aWYob1F1ZXVl LmNvbm4pe2lmKG9Db25uTWdyLmFib3J0KXtvQ29ubk1nci5hYm9ydChvUXVldWUu Y29ubik7b1F1ZXVlLmNvbm49bnVsbDt9ZWxzZXt9fX1pZihvQ29ubk1nciYmb0Nv bm5NZ3IuYXN5bmNSZXF1ZXN0KXt2YXIgc0xpdmVEYXRhPXRoaXMubGl2ZURhdGE7 dmFyIGlzUG9zdD10aGlzLmNvbm5NZXRob2RQb3N0O3ZhciBzTWV0aG9kPShpc1Bv c3QpPyJQT1NUIjoiR0VUIjt2YXIgc1VyaT0oaXNQb3N0fHwhbGFuZy5pc1ZhbHVl KG9SZXF1ZXN0KSk/c0xpdmVEYXRhOnNMaXZlRGF0YStvUmVxdWVzdDt2YXIgc1Jl cXVlc3Q9KGlzUG9zdCk/b1JlcXVlc3Q6bnVsbDtpZih0aGlzLmNvbm5YaHJNb2Rl IT0icXVldWVSZXF1ZXN0cyIpe29RdWV1ZS5jb25uPW9Db25uTWdyLmFzeW5jUmVx dWVzdChzTWV0aG9kLHNVcmksX3hockNhbGxiYWNrLHNSZXF1ZXN0KTt9ZWxzZXtp ZihvUXVldWUuY29ubil7dmFyIGFsbFJlcXVlc3RzPW9RdWV1ZS5yZXF1ZXN0czsK YWxsUmVxdWVzdHMucHVzaCh7cmVxdWVzdDpvUmVxdWVzdCxjYWxsYmFjazpfeGhy Q2FsbGJhY2t9KTtpZighb1F1ZXVlLmludGVydmFsKXtvUXVldWUuaW50ZXJ2YWw9 c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtpZihvQ29ubk1nci5pc0NhbGxJblByb2dy ZXNzKG9RdWV1ZS5jb25uKSl7cmV0dXJuO31lbHNle2lmKGFsbFJlcXVlc3RzLmxl bmd0aD4wKXtzVXJpPShpc1Bvc3R8fCFsYW5nLmlzVmFsdWUoYWxsUmVxdWVzdHNb MF0ucmVxdWVzdCkpP3NMaXZlRGF0YTpzTGl2ZURhdGErYWxsUmVxdWVzdHNbMF0u cmVxdWVzdDtzUmVxdWVzdD0oaXNQb3N0KT9hbGxSZXF1ZXN0c1swXS5yZXF1ZXN0 Om51bGw7b1F1ZXVlLmNvbm49b0Nvbm5NZ3IuYXN5bmNSZXF1ZXN0KHNNZXRob2Qs c1VyaSxhbGxSZXF1ZXN0c1swXS5jYWxsYmFjayxzUmVxdWVzdCk7YWxsUmVxdWVz dHMuc2hpZnQoKTt9ZWxzZXtjbGVhckludGVydmFsKG9RdWV1ZS5pbnRlcnZhbCk7 b1F1ZXVlLmludGVydmFsPW51bGw7fX19LDUwKTt9fWVsc2V7b1F1ZXVlLmNvbm49 b0Nvbm5NZ3IuYXN5bmNSZXF1ZXN0KHNNZXRob2Qsc1VyaSxfeGhyQ2FsbGJhY2ss c1JlcXVlc3QpO319fWVsc2V7RFMuaXNzdWVDYWxsYmFjayhvQ2FsbGJhY2ssW29S ZXF1ZXN0LHtlcnJvcjp0cnVlfV0sdHJ1ZSxvQ2FsbGVyKTt9cmV0dXJuIHRJZDt9 fSk7bGFuZy5hdWdtZW50T2JqZWN0KHV0aWwuWEhSRGF0YVNvdXJjZSxEUyk7dXRp bC5EYXRhU291cmNlPWZ1bmN0aW9uKG9MaXZlRGF0YSxvQ29uZmlncyl7b0NvbmZp Z3M9b0NvbmZpZ3N8fHt9O3ZhciBkYXRhVHlwZT1vQ29uZmlncy5kYXRhVHlwZTtp ZihkYXRhVHlwZSl7aWYoZGF0YVR5cGU9PURTLlRZUEVfTE9DQUwpe2xhbmcuYXVn bWVudE9iamVjdCh1dGlsLkRhdGFTb3VyY2UsdXRpbC5Mb2NhbERhdGFTb3VyY2Up O3JldHVybiBuZXcgdXRpbC5Mb2NhbERhdGFTb3VyY2Uob0xpdmVEYXRhLG9Db25m aWdzKTt9ZWxzZXtpZihkYXRhVHlwZT09RFMuVFlQRV9YSFIpe2xhbmcuYXVnbWVu dE9iamVjdCh1dGlsLkRhdGFTb3VyY2UsdXRpbC5YSFJEYXRhU291cmNlKTtyZXR1 cm4gbmV3IHV0aWwuWEhSRGF0YVNvdXJjZShvTGl2ZURhdGEsb0NvbmZpZ3MpO31l bHNle2lmKGRhdGFUeXBlPT1EUy5UWVBFX1NDUklQVE5PREUpe2xhbmcuYXVnbWVu dE9iamVjdCh1dGlsLkRhdGFTb3VyY2UsdXRpbC5TY3JpcHROb2RlRGF0YVNvdXJj ZSk7cmV0dXJuIG5ldyB1dGlsLlNjcmlwdE5vZGVEYXRhU291cmNlKG9MaXZlRGF0 YSxvQ29uZmlncyk7fWVsc2V7aWYoZGF0YVR5cGU9PURTLlRZUEVfSlNGVU5DVElP Til7bGFuZy5hdWdtZW50T2JqZWN0KHV0aWwuRGF0YVNvdXJjZSx1dGlsLkZ1bmN0 aW9uRGF0YVNvdXJjZSk7cmV0dXJuIG5ldyB1dGlsLkZ1bmN0aW9uRGF0YVNvdXJj ZShvTGl2ZURhdGEsb0NvbmZpZ3MpO319fX19aWYoWUFIT08ubGFuZy5pc1N0cmlu ZyhvTGl2ZURhdGEpKXtsYW5nLmF1Z21lbnRPYmplY3QodXRpbC5EYXRhU291cmNl LHV0aWwuWEhSRGF0YVNvdXJjZSk7cmV0dXJuIG5ldyB1dGlsLlhIUkRhdGFTb3Vy Y2Uob0xpdmVEYXRhLG9Db25maWdzKTt9ZWxzZXtpZihZQUhPTy5sYW5nLmlzRnVu Y3Rpb24ob0xpdmVEYXRhKSl7bGFuZy5hdWdtZW50T2JqZWN0KHV0aWwuRGF0YVNv dXJjZSx1dGlsLkZ1bmN0aW9uRGF0YVNvdXJjZSk7cmV0dXJuIG5ldyB1dGlsLkZ1 bmN0aW9uRGF0YVNvdXJjZShvTGl2ZURhdGEsb0NvbmZpZ3MpO31lbHNle2xhbmcu YXVnbWVudE9iamVjdCh1dGlsLkRhdGFTb3VyY2UsdXRpbC5Mb2NhbERhdGFTb3Vy Y2UpO3JldHVybiBuZXcgdXRpbC5Mb2NhbERhdGFTb3VyY2Uob0xpdmVEYXRhLG9D b25maWdzKTt9fX07bGFuZy5hdWdtZW50T2JqZWN0KHV0aWwuRGF0YVNvdXJjZSxE Uyk7fSkoKTtZQUhPTy51dGlsLk51bWJlcj17Zm9ybWF0OmZ1bmN0aW9uKEMsRyl7 dmFyIEI9WUFIT08ubGFuZztpZighQi5pc1ZhbHVlKEMpfHwoQz09PSIiKSl7cmV0 dXJuIiI7fUc9R3x8e307aWYoIUIuaXNOdW1iZXIoQykpe0MqPTE7fWlmKEIuaXNO dW1iZXIoQykpe3ZhciBFPShDPDApO3ZhciBLPUMrIiI7dmFyIEg9KEcuZGVjaW1h bFNlcGFyYXRvcik/Ry5kZWNpbWFsU2VwYXJhdG9yOiIuIjt2YXIgSTtpZihCLmlz TnVtYmVyKEcuZGVjaW1hbFBsYWNlcykpe3ZhciBKPUcuZGVjaW1hbFBsYWNlczt2 YXIgRD1NYXRoLnBvdygxMCxKKTtLPU1hdGgucm91bmQoQypEKS9EKyIiO0k9Sy5s YXN0SW5kZXhPZigiLiIpO2lmKEo+MCl7aWYoSTwwKXtLKz1IO0k9Sy5sZW5ndGgt MTt9ZWxzZXtpZihIIT09Ii4iKXtLPUsucmVwbGFjZSgiLiIsSCk7fX13aGlsZSgo Sy5sZW5ndGgtMS1JKTxKKXtLKz0iMCI7fX19aWYoRy50aG91c2FuZHNTZXBhcmF0 b3Ipe3ZhciBNPUcudGhvdXNhbmRzU2VwYXJhdG9yO0k9Sy5sYXN0SW5kZXhPZihI KTtJPShJPi0xKT9JOksubGVuZ3RoO3ZhciBMPUsuc3Vic3RyaW5nKEkpO3ZhciBB PS0xO2Zvcih2YXIgRj1JO0Y+MDtGLS0pe0ErKztpZigoQSUzPT09MCkmJihGIT09 SSkmJighRXx8KEY+MSkpKXtMPU0rTDt9TD1LLmNoYXJBdChGLTEpK0w7fUs9TDt9 Sz0oRy5wcmVmaXgpP0cucHJlZml4K0s6SztLPShHLnN1ZmZpeCk/SytHLnN1ZmZp eDpLO3JldHVybiBLO31lbHNle3JldHVybiBDO319fTsoZnVuY3Rpb24oKXt2YXIg QT1mdW5jdGlvbihDLEUsRCl7aWYodHlwZW9mIEQ9PT0idW5kZWZpbmVkIil7RD0x MDt9Zm9yKDtwYXJzZUludChDLDEwKTxEJiZEPjE7RC89MTApe0M9RS50b1N0cmlu ZygpK0M7fXJldHVybiBDLnRvU3RyaW5nKCk7fTt2YXIgQj17Zm9ybWF0czp7YTpm dW5jdGlvbihELEMpe3JldHVybiBDLmFbRC5nZXREYXkoKV07fSxBOmZ1bmN0aW9u KEQsQyl7cmV0dXJuIEMuQVtELmdldERheSgpXTt9LGI6ZnVuY3Rpb24oRCxDKXty ZXR1cm4gQy5iW0QuZ2V0TW9udGgoKV07fSxCOmZ1bmN0aW9uKEQsQyl7cmV0dXJu IEMuQltELmdldE1vbnRoKCldO30sQzpmdW5jdGlvbihDKXtyZXR1cm4gQShwYXJz ZUludChDLmdldEZ1bGxZZWFyKCkvMTAwLDEwKSwwKTt9LGQ6WyJnZXREYXRlIiwi MCJdLGU6WyJnZXREYXRlIiwiICJdLGc6ZnVuY3Rpb24oQyl7cmV0dXJuIEEocGFy c2VJbnQoQi5mb3JtYXRzLkcoQyklMTAwLDEwKSwwKTt9LEc6ZnVuY3Rpb24oRSl7 dmFyIEY9RS5nZXRGdWxsWWVhcigpO3ZhciBEPXBhcnNlSW50KEIuZm9ybWF0cy5W KEUpLDEwKTt2YXIgQz1wYXJzZUludChCLmZvcm1hdHMuVyhFKSwxMCk7aWYoQz5E KXtGKys7fWVsc2V7aWYoQz09PTAmJkQ+PTUyKXtGLS07fX1yZXR1cm4gRjt9LEg6 WyJnZXRIb3VycyIsIjAiXSxJOmZ1bmN0aW9uKEQpe3ZhciBDPUQuZ2V0SG91cnMo KSUxMjtyZXR1cm4gQShDPT09MD8xMjpDLDApO30sajpmdW5jdGlvbihHKXt2YXIg Rj1uZXcgRGF0ZSgiIitHLmdldEZ1bGxZZWFyKCkrIi8xLzEgR01UIik7dmFyIEQ9 bmV3IERhdGUoIiIrRy5nZXRGdWxsWWVhcigpKyIvIisoRy5nZXRNb250aCgpKzEp KyIvIitHLmdldERhdGUoKSsiIEdNVCIpO3ZhciBDPUQtRjt2YXIgRT1wYXJzZUlu dChDLzYwMDAwLzYwLzI0LDEwKSsxO3JldHVybiBBKEUsMCwxMDApO30sazpbImdl dEhvdXJzIiwiICJdLGw6ZnVuY3Rpb24oRCl7dmFyIEM9RC5nZXRIb3VycygpJTEy O3JldHVybiBBKEM9PT0wPzEyOkMsIiAiKTt9LG06ZnVuY3Rpb24oQyl7cmV0dXJu IEEoQy5nZXRNb250aCgpKzEsMCk7fSxNOlsiZ2V0TWludXRlcyIsIjAiXSxwOmZ1 bmN0aW9uKEQsQyl7cmV0dXJuIEMucFtELmdldEhvdXJzKCk+PTEyPzE6MF07fSxQ OmZ1bmN0aW9uKEQsQyl7cmV0dXJuIEMuUFtELmdldEhvdXJzKCk+PTEyPzE6MF07 fSxzOmZ1bmN0aW9uKEQsQyl7cmV0dXJuIHBhcnNlSW50KEQuZ2V0VGltZSgpLzEw MDAsMTApO30sUzpbImdldFNlY29uZHMiLCIwIl0sdTpmdW5jdGlvbihDKXt2YXIg RD1DLmdldERheSgpO3JldHVybiBEPT09MD83OkQ7fSxVOmZ1bmN0aW9uKEYpe3Zh ciBDPXBhcnNlSW50KEIuZm9ybWF0cy5qKEYpLDEwKTt2YXIgRT02LUYuZ2V0RGF5 KCk7dmFyIEQ9cGFyc2VJbnQoKEMrRSkvNywxMCk7cmV0dXJuIEEoRCwwKTt9LFY6 ZnVuY3Rpb24oRil7dmFyIEU9cGFyc2VJbnQoQi5mb3JtYXRzLlcoRiksMTApO3Zh ciBDPShuZXcgRGF0ZSgiIitGLmdldEZ1bGxZZWFyKCkrIi8xLzEiKSkuZ2V0RGF5 KCk7dmFyIEQ9RSsoQz40fHxDPD0xPzA6MSk7aWYoRD09PTUzJiYobmV3IERhdGUo IiIrRi5nZXRGdWxsWWVhcigpKyIvMTIvMzEiKSkuZ2V0RGF5KCk8NCl7RD0xO31l bHNle2lmKEQ9PT0wKXtEPUIuZm9ybWF0cy5WKG5ldyBEYXRlKCIiKyhGLmdldEZ1 bGxZZWFyKCktMSkrIi8xMi8zMSIpKTt9fXJldHVybiBBKEQsMCk7fSx3OiJnZXRE YXkiLFc6ZnVuY3Rpb24oRil7dmFyIEM9cGFyc2VJbnQoQi5mb3JtYXRzLmooRiks MTApO3ZhciBFPTctQi5mb3JtYXRzLnUoRik7dmFyIEQ9cGFyc2VJbnQoKEMrRSkv NywxMCk7cmV0dXJuIEEoRCwwLDEwKTt9LHk6ZnVuY3Rpb24oQyl7cmV0dXJuIEEo Qy5nZXRGdWxsWWVhcigpJTEwMCwwKTt9LFk6ImdldEZ1bGxZZWFyIix6OmZ1bmN0 aW9uKEUpe3ZhciBEPUUuZ2V0VGltZXpvbmVPZmZzZXQoKTt2YXIgQz1BKHBhcnNl SW50KE1hdGguYWJzKEQvNjApLDEwKSwwKTt2YXIgRj1BKE1hdGguYWJzKEQlNjAp LDApO3JldHVybihEPjA/Ii0iOiIrIikrQytGO30sWjpmdW5jdGlvbihDKXt2YXIg RD1DLnRvU3RyaW5nKCkucmVwbGFjZSgvXi4qOlxkXGQoIEdNVFsrLV1cZCspPyBc KD8oW0EtWmEteiBdKylcKT9cZCokLywiJDIiKS5yZXBsYWNlKC9bYS16IF0vZywi Iik7aWYoRC5sZW5ndGg+NCl7RD1CLmZvcm1hdHMueihDKTt9cmV0dXJuIEQ7fSwi JSI6ZnVuY3Rpb24oQyl7cmV0dXJuIiUiO319LGFnZ3JlZ2F0ZXM6e2M6ImxvY2Fs ZSIsRDoiJW0vJWQvJXkiLEY6IiVZLSVtLSVkIixoOiIlYiIsbjoiXG4iLHI6Imxv Y2FsZSIsUjoiJUg6JU0iLHQ6Ilx0IixUOiIlSDolTTolUyIseDoibG9jYWxlIixY OiJsb2NhbGUifSxmb3JtYXQ6ZnVuY3Rpb24oRyxGLEQpe0Y9Rnx8e307aWYoIShH IGluc3RhbmNlb2YgRGF0ZSkpe3JldHVybiBZQUhPTy5sYW5nLmlzVmFsdWUoRyk/ RzoiIjt9dmFyIEg9Ri5mb3JtYXR8fCIlbS8lZC8lWSI7aWYoSD09PSJZWVlZL01N L0REIil7SD0iJVkvJW0vJWQiO31lbHNle2lmKEg9PT0iREQvTU0vWVlZWSIpe0g9 IiVkLyVtLyVZIjt9ZWxzZXtpZihIPT09Ik1NL0REL1lZWVkiKXtIPSIlbS8lZC8l WSI7fX19RD1EfHwiZW4iO2lmKCEoRCBpbiBZQUhPTy51dGlsLkRhdGVMb2NhbGUp KXtpZihELnJlcGxhY2UoLy1bYS16QS1aXSskLywiIikgaW4gWUFIT08udXRpbC5E YXRlTG9jYWxlKXtEPUQucmVwbGFjZSgvLVthLXpBLVpdKyQvLCIiKTt9ZWxzZXtE PSJlbiI7fX12YXIgSj1ZQUhPTy51dGlsLkRhdGVMb2NhbGVbRF07dmFyIEM9ZnVu Y3Rpb24oTCxLKXt2YXIgTT1CLmFnZ3JlZ2F0ZXNbS107cmV0dXJuKE09PT0ibG9j YWxlIj9KW0tdOk0pO307dmFyIEU9ZnVuY3Rpb24oTCxLKXt2YXIgTT1CLmZvcm1h dHNbS107aWYodHlwZW9mIE09PT0ic3RyaW5nIil7cmV0dXJuIEdbTV0oKTt9ZWxz ZXtpZih0eXBlb2YgTT09PSJmdW5jdGlvbiIpe3JldHVybiBNLmNhbGwoRyxHLEop O31lbHNle2lmKHR5cGVvZiBNPT09Im9iamVjdCImJnR5cGVvZiBNWzBdPT09InN0 cmluZyIpe3JldHVybiBBKEdbTVswXV0oKSxNWzFdKTt9ZWxzZXtyZXR1cm4gSzt9 fX19O3doaWxlKEgubWF0Y2goLyVbY0RGaG5yUnRUeFhdLykpe0g9SC5yZXBsYWNl KC8lKFtjREZobnJSdFR4WF0pL2csQyk7fXZhciBJPUgucmVwbGFjZSgvJShbYUFi QkNkZWdHSElqa2xtTXBQc1N1VVZ3V3lZelolXSkvZyxFKTtDPUU9dW5kZWZpbmVk O3JldHVybiBJO319O1lBSE9PLm5hbWVzcGFjZSgiWUFIT08udXRpbCIpO1lBSE9P LnV0aWwuRGF0ZT1CO1lBSE9PLnV0aWwuRGF0ZUxvY2FsZT17YTpbIlN1biIsIk1v biIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLEE6WyJTdW5kYXkiLCJN b25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXki LCJTYXR1cmRheSJdLGI6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJK dW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSxCOlsiSmFu dWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJK dWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwi RGVjZW1iZXIiXSxjOiIlYSAlZCAlYiAlWSAlVCAlWiIscDpbIkFNIiwiUE0iXSxQ OlsiYW0iLCJwbSJdLHI6IiVJOiVNOiVTICVwIix4OiIlZC8lbS8leSIsWDoiJVQi fTsKWUFIT08udXRpbC5EYXRlTG9jYWxlWyJlbiJdPVlBSE9PLmxhbmcubWVyZ2Uo WUFIT08udXRpbC5EYXRlTG9jYWxlLHt9KTtZQUhPTy51dGlsLkRhdGVMb2NhbGVb ImVuLVVTIl09WUFIT08ubGFuZy5tZXJnZShZQUhPTy51dGlsLkRhdGVMb2NhbGVb ImVuIl0se2M6IiVhICVkICViICVZICVJOiVNOiVTICVwICVaIix4OiIlbS8lZC8l WSIsWDoiJUk6JU06JVMgJXAifSk7WUFIT08udXRpbC5EYXRlTG9jYWxlWyJlbi1H QiJdPVlBSE9PLmxhbmcubWVyZ2UoWUFIT08udXRpbC5EYXRlTG9jYWxlWyJlbiJd LHtyOiIlbDolTTolUyAlUCAlWiJ9KTtZQUhPTy51dGlsLkRhdGVMb2NhbGVbImVu LUFVIl09WUFIT08ubGFuZy5tZXJnZShZQUhPTy51dGlsLkRhdGVMb2NhbGVbImVu Il0pO30pKCk7WUFIT08ucmVnaXN0ZXIoImRhdGFzb3VyY2UiLFlBSE9PLnV0aWwu RGF0YVNvdXJjZSx7dmVyc2lvbjoiMi43LjAiLGJ1aWxkOiIxNzk2In0pOy8qCkNv cHlyaWdodCAoYykgMjAwOSwgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4KQ29kZSBsaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2U6Cmh0dHA6Ly9k ZXZlbG9wZXIueWFob28ubmV0L3l1aS9saWNlbnNlLnR4dAp2ZXJzaW9uOiAyLjcu MAoqLwpZQUhPTy53aWRnZXQuRFNfSlNBcnJheT1ZQUhPTy51dGlsLkxvY2FsRGF0 YVNvdXJjZTtZQUhPTy53aWRnZXQuRFNfSlNGdW5jdGlvbj1ZQUhPTy51dGlsLkZ1 bmN0aW9uRGF0YVNvdXJjZTtZQUhPTy53aWRnZXQuRFNfWEhSPWZ1bmN0aW9uKEIs QSxEKXt2YXIgQz1uZXcgWUFIT08udXRpbC5YSFJEYXRhU291cmNlKEIsRCk7Qy5f YURlcHJlY2F0ZWRTY2hlbWE9QTtyZXR1cm4gQzt9O1lBSE9PLndpZGdldC5EU19T Y3JpcHROb2RlPWZ1bmN0aW9uKEIsQSxEKXt2YXIgQz1uZXcgWUFIT08udXRpbC5T Y3JpcHROb2RlRGF0YVNvdXJjZShCLEQpO0MuX2FEZXByZWNhdGVkU2NoZW1hPUE7 cmV0dXJuIEM7fTtZQUhPTy53aWRnZXQuRFNfWEhSLlRZUEVfSlNPTj1ZQUhPTy51 dGlsLkRhdGFTb3VyY2VCYXNlLlRZUEVfSlNPTjtZQUhPTy53aWRnZXQuRFNfWEhS LlRZUEVfWE1MPVlBSE9PLnV0aWwuRGF0YVNvdXJjZUJhc2UuVFlQRV9YTUw7WUFI T08ud2lkZ2V0LkRTX1hIUi5UWVBFX0ZMQVQ9WUFIT08udXRpbC5EYXRhU291cmNl QmFzZS5UWVBFX1RFWFQ7WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZT1mdW5jdGlv bihHLEIsSixDKXtpZihHJiZCJiZKKXtpZihKIGluc3RhbmNlb2YgWUFIT08udXRp bC5EYXRhU291cmNlQmFzZSl7dGhpcy5kYXRhU291cmNlPUo7fWVsc2V7cmV0dXJu O310aGlzLmtleT0wO3ZhciBEPUoucmVzcG9uc2VTY2hlbWE7aWYoSi5fYURlcHJl Y2F0ZWRTY2hlbWEpe3ZhciBLPUouX2FEZXByZWNhdGVkU2NoZW1hO2lmKFlBSE9P LmxhbmcuaXNBcnJheShLKSl7aWYoKEoucmVzcG9uc2VUeXBlPT09WUFIT08udXRp bC5EYXRhU291cmNlQmFzZS5UWVBFX0pTT04pfHwoSi5yZXNwb25zZVR5cGU9PT1Z QUhPTy51dGlsLkRhdGFTb3VyY2VCYXNlLlRZUEVfVU5LTk9XTikpe0QucmVzdWx0 c0xpc3Q9S1swXTt0aGlzLmtleT1LWzFdO0QuZmllbGRzPShLLmxlbmd0aDwzKT9u dWxsOksuc2xpY2UoMSk7fWVsc2V7aWYoSi5yZXNwb25zZVR5cGU9PT1ZQUhPTy51 dGlsLkRhdGFTb3VyY2VCYXNlLlRZUEVfWE1MKXtELnJlc3VsdE5vZGU9S1swXTt0 aGlzLmtleT1LWzFdO0QuZmllbGRzPUsuc2xpY2UoMSk7fWVsc2V7aWYoSi5yZXNw b25zZVR5cGU9PT1ZQUhPTy51dGlsLkRhdGFTb3VyY2VCYXNlLlRZUEVfVEVYVCl7 RC5yZWNvcmREZWxpbT1LWzBdO0QuZmllbGREZWxpbT1LWzFdO319fUoucmVzcG9u c2VTY2hlbWE9RDt9fWlmKFlBSE9PLnV0aWwuRG9tLmluRG9jdW1lbnQoRykpe2lm KFlBSE9PLmxhbmcuaXNTdHJpbmcoRykpe3RoaXMuX3NOYW1lPSJpbnN0YW5jZSIr WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZS5fbkluZGV4KyIgIitHO3RoaXMuX2Vs VGV4dGJveD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChHKTt9ZWxzZXt0aGlzLl9z TmFtZT0oRy5pZCk/Imluc3RhbmNlIitZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRl Ll9uSW5kZXgrIiAiK0cuaWQ6Imluc3RhbmNlIitZQUhPTy53aWRnZXQuQXV0b0Nv bXBsZXRlLl9uSW5kZXg7dGhpcy5fZWxUZXh0Ym94PUc7fVlBSE9PLnV0aWwuRG9t LmFkZENsYXNzKHRoaXMuX2VsVGV4dGJveCwieXVpLWFjLWlucHV0Iik7fWVsc2V7 cmV0dXJuO31pZihZQUhPTy51dGlsLkRvbS5pbkRvY3VtZW50KEIpKXtpZihZQUhP Ty5sYW5nLmlzU3RyaW5nKEIpKXt0aGlzLl9lbENvbnRhaW5lcj1kb2N1bWVudC5n ZXRFbGVtZW50QnlJZChCKTt9ZWxzZXt0aGlzLl9lbENvbnRhaW5lcj1CO31pZih0 aGlzLl9lbENvbnRhaW5lci5zdHlsZS5kaXNwbGF5PT0ibm9uZSIpe312YXIgRT10 aGlzLl9lbENvbnRhaW5lci5wYXJlbnROb2RlO3ZhciBBPUUudGFnTmFtZS50b0xv d2VyQ2FzZSgpO2lmKEE9PSJkaXYiKXtZQUhPTy51dGlsLkRvbS5hZGRDbGFzcyhF LCJ5dWktYWMiKTt9ZWxzZXt9fWVsc2V7cmV0dXJuO31pZih0aGlzLmRhdGFTb3Vy Y2UuZGF0YVR5cGU9PT1ZQUhPTy51dGlsLkRhdGFTb3VyY2VCYXNlLlRZUEVfTE9D QUwpe3RoaXMuYXBwbHlMb2NhbEZpbHRlcj10cnVlO31pZihDJiYoQy5jb25zdHJ1 Y3Rvcj09T2JqZWN0KSl7Zm9yKHZhciBJIGluIEMpe2lmKEkpe3RoaXNbSV09Q1tJ XTt9fX10aGlzLl9pbml0Q29udGFpbmVyRWwoKTt0aGlzLl9pbml0UHJvcHMoKTt0 aGlzLl9pbml0TGlzdEVsKCk7dGhpcy5faW5pdENvbnRhaW5lckhlbHBlckVscygp O3ZhciBIPXRoaXM7dmFyIEY9dGhpcy5fZWxUZXh0Ym94O1lBSE9PLnV0aWwuRXZl bnQuYWRkTGlzdGVuZXIoRiwia2V5dXAiLEguX29uVGV4dGJveEtleVVwLEgpO1lB SE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVuZXIoRiwia2V5ZG93biIsSC5fb25UZXh0 Ym94S2V5RG93bixIKTtZQUhPTy51dGlsLkV2ZW50LmFkZExpc3RlbmVyKEYsImZv Y3VzIixILl9vblRleHRib3hGb2N1cyxIKTtZQUhPTy51dGlsLkV2ZW50LmFkZExp c3RlbmVyKEYsImJsdXIiLEguX29uVGV4dGJveEJsdXIsSCk7WUFIT08udXRpbC5F dmVudC5hZGRMaXN0ZW5lcihCLCJtb3VzZW92ZXIiLEguX29uQ29udGFpbmVyTW91 c2VvdmVyLEgpO1lBSE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVuZXIoQiwibW91c2Vv dXQiLEguX29uQ29udGFpbmVyTW91c2VvdXQsSCk7WUFIT08udXRpbC5FdmVudC5h ZGRMaXN0ZW5lcihCLCJjbGljayIsSC5fb25Db250YWluZXJDbGljayxIKTtZQUhP Ty51dGlsLkV2ZW50LmFkZExpc3RlbmVyKEIsInNjcm9sbCIsSC5fb25Db250YWlu ZXJTY3JvbGwsSCk7WUFIT08udXRpbC5FdmVudC5hZGRMaXN0ZW5lcihCLCJyZXNp emUiLEguX29uQ29udGFpbmVyUmVzaXplLEgpO1lBSE9PLnV0aWwuRXZlbnQuYWRk TGlzdGVuZXIoRiwia2V5cHJlc3MiLEguX29uVGV4dGJveEtleVByZXNzLEgpO1lB SE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVuZXIod2luZG93LCJ1bmxvYWQiLEguX29u V2luZG93VW5sb2FkLEgpO3RoaXMudGV4dGJveEZvY3VzRXZlbnQ9bmV3IFlBSE9P LnV0aWwuQ3VzdG9tRXZlbnQoInRleHRib3hGb2N1cyIsdGhpcyk7dGhpcy50ZXh0 Ym94S2V5RXZlbnQ9bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQoInRleHRib3hL ZXkiLHRoaXMpO3RoaXMuZGF0YVJlcXVlc3RFdmVudD1uZXcgWUFIT08udXRpbC5D dXN0b21FdmVudCgiZGF0YVJlcXVlc3QiLHRoaXMpO3RoaXMuZGF0YVJldHVybkV2 ZW50PW5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCJkYXRhUmV0dXJuIix0aGlz KTt0aGlzLmRhdGFFcnJvckV2ZW50PW5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50 KCJkYXRhRXJyb3IiLHRoaXMpO3RoaXMuY29udGFpbmVyUG9wdWxhdGVFdmVudD1u ZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgiY29udGFpbmVyUG9wdWxhdGUiLHRo aXMpO3RoaXMuY29udGFpbmVyRXhwYW5kRXZlbnQ9bmV3IFlBSE9PLnV0aWwuQ3Vz dG9tRXZlbnQoImNvbnRhaW5lckV4cGFuZCIsdGhpcyk7dGhpcy50eXBlQWhlYWRF dmVudD1uZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgidHlwZUFoZWFkIix0aGlz KTt0aGlzLml0ZW1Nb3VzZU92ZXJFdmVudD1uZXcgWUFIT08udXRpbC5DdXN0b21F dmVudCgiaXRlbU1vdXNlT3ZlciIsdGhpcyk7dGhpcy5pdGVtTW91c2VPdXRFdmVu dD1uZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgiaXRlbU1vdXNlT3V0Iix0aGlz KTt0aGlzLml0ZW1BcnJvd1RvRXZlbnQ9bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZl bnQoIml0ZW1BcnJvd1RvIix0aGlzKTt0aGlzLml0ZW1BcnJvd0Zyb21FdmVudD1u ZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgiaXRlbUFycm93RnJvbSIsdGhpcyk7 dGhpcy5pdGVtU2VsZWN0RXZlbnQ9bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQo Iml0ZW1TZWxlY3QiLHRoaXMpO3RoaXMudW5tYXRjaGVkSXRlbVNlbGVjdEV2ZW50 PW5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCJ1bm1hdGNoZWRJdGVtU2VsZWN0 Iix0aGlzKTt0aGlzLnNlbGVjdGlvbkVuZm9yY2VFdmVudD1uZXcgWUFIT08udXRp bC5DdXN0b21FdmVudCgic2VsZWN0aW9uRW5mb3JjZSIsdGhpcyk7dGhpcy5jb250 YWluZXJDb2xsYXBzZUV2ZW50PW5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCJj b250YWluZXJDb2xsYXBzZSIsdGhpcyk7dGhpcy50ZXh0Ym94Qmx1ckV2ZW50PW5l dyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCJ0ZXh0Ym94Qmx1ciIsdGhpcyk7dGhp cy50ZXh0Ym94Q2hhbmdlRXZlbnQ9bmV3IFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQo InRleHRib3hDaGFuZ2UiLHRoaXMpO0Yuc2V0QXR0cmlidXRlKCJhdXRvY29tcGxl dGUiLCJvZmYiKTtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLl9uSW5kZXgrKzt9 ZWxzZXt9fTtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlwZS5kYXRh U291cmNlPW51bGw7WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZS5wcm90b3R5cGUu YXBwbHlMb2NhbEZpbHRlcj1udWxsO1lBSE9PLndpZGdldC5BdXRvQ29tcGxldGUu cHJvdG90eXBlLnF1ZXJ5TWF0Y2hDYXNlPWZhbHNlO1lBSE9PLndpZGdldC5BdXRv Q29tcGxldGUucHJvdG90eXBlLnF1ZXJ5TWF0Y2hDb250YWlucz1mYWxzZTtZQUhP Ty53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlwZS5xdWVyeU1hdGNoU3Vic2V0 PWZhbHNlO1lBSE9PLndpZGdldC5BdXRvQ29tcGxldGUucHJvdG90eXBlLm1pblF1 ZXJ5TGVuZ3RoPTE7WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZS5wcm90b3R5cGUu bWF4UmVzdWx0c0Rpc3BsYXllZD0xMDtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRl LnByb3RvdHlwZS5xdWVyeURlbGF5PTAuMjtZQUhPTy53aWRnZXQuQXV0b0NvbXBs ZXRlLnByb3RvdHlwZS50eXBlQWhlYWREZWxheT0wLjU7WUFIT08ud2lkZ2V0LkF1 dG9Db21wbGV0ZS5wcm90b3R5cGUucXVlcnlJbnRlcnZhbD01MDA7WUFIT08ud2lk Z2V0LkF1dG9Db21wbGV0ZS5wcm90b3R5cGUuaGlnaGxpZ2h0Q2xhc3NOYW1lPSJ5 dWktYWMtaGlnaGxpZ2h0IjtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3Rv dHlwZS5wcmVoaWdobGlnaHRDbGFzc05hbWU9bnVsbDtZQUhPTy53aWRnZXQuQXV0 b0NvbXBsZXRlLnByb3RvdHlwZS5kZWxpbUNoYXI9bnVsbDtZQUhPTy53aWRnZXQu QXV0b0NvbXBsZXRlLnByb3RvdHlwZS5hdXRvSGlnaGxpZ2h0PXRydWU7WUFIT08u d2lkZ2V0LkF1dG9Db21wbGV0ZS5wcm90b3R5cGUudHlwZUFoZWFkPWZhbHNlO1lB SE9PLndpZGdldC5BdXRvQ29tcGxldGUucHJvdG90eXBlLmFuaW1Ib3Jpej1mYWxz ZTtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlwZS5hbmltVmVydD10 cnVlO1lBSE9PLndpZGdldC5BdXRvQ29tcGxldGUucHJvdG90eXBlLmFuaW1TcGVl ZD0wLjM7WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZS5wcm90b3R5cGUuZm9yY2VT ZWxlY3Rpb249ZmFsc2U7WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZS5wcm90b3R5 cGUuYWxsb3dCcm93c2VyQXV0b2NvbXBsZXRlPXRydWU7WUFIT08ud2lkZ2V0LkF1 dG9Db21wbGV0ZS5wcm90b3R5cGUuYWx3YXlzU2hvd0NvbnRhaW5lcj1mYWxzZTtZ QUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlwZS51c2VJRnJhbWU9ZmFs c2U7WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZS5wcm90b3R5cGUudXNlU2hhZG93 PWZhbHNlO1lBSE9PLndpZGdldC5BdXRvQ29tcGxldGUucHJvdG90eXBlLnN1cHBy ZXNzSW5wdXRVcGRhdGU9ZmFsc2U7WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZS5w cm90b3R5cGUucmVzdWx0VHlwZUxpc3Q9dHJ1ZTtZQUhPTy53aWRnZXQuQXV0b0Nv bXBsZXRlLnByb3RvdHlwZS5xdWVyeVF1ZXN0aW9uTWFyaz10cnVlO1lBSE9PLndp ZGdldC5BdXRvQ29tcGxldGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7 cmV0dXJuIkF1dG9Db21wbGV0ZSAiK3RoaXMuX3NOYW1lO307WUFIT08ud2lkZ2V0 LkF1dG9Db21wbGV0ZS5wcm90b3R5cGUuZ2V0SW5wdXRFbD1mdW5jdGlvbigpe3Jl dHVybiB0aGlzLl9lbFRleHRib3g7fTtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRl LnByb3RvdHlwZS5nZXRDb250YWluZXJFbD1mdW5jdGlvbigpe3JldHVybiB0aGlz Ll9lbENvbnRhaW5lcjsKfTtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3Rv dHlwZS5pc0ZvY3VzZWQ9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5fYkZvY3VzZWQ9 PT1udWxsKT9mYWxzZTp0aGlzLl9iRm9jdXNlZDt9O1lBSE9PLndpZGdldC5BdXRv Q29tcGxldGUucHJvdG90eXBlLmlzQ29udGFpbmVyT3Blbj1mdW5jdGlvbigpe3Jl dHVybiB0aGlzLl9iQ29udGFpbmVyT3Blbjt9O1lBSE9PLndpZGdldC5BdXRvQ29t cGxldGUucHJvdG90eXBlLmdldExpc3RFbD1mdW5jdGlvbigpe3JldHVybiB0aGlz Ll9lbExpc3Q7fTtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlwZS5n ZXRMaXN0SXRlbU1hdGNoPWZ1bmN0aW9uKEEpe2lmKEEuX3NSZXN1bHRNYXRjaCl7 cmV0dXJuIEEuX3NSZXN1bHRNYXRjaDt9ZWxzZXtyZXR1cm4gbnVsbDt9fTtZQUhP Ty53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlwZS5nZXRMaXN0SXRlbURhdGE9 ZnVuY3Rpb24oQSl7aWYoQS5fb1Jlc3VsdERhdGEpe3JldHVybiBBLl9vUmVzdWx0 RGF0YTt9ZWxzZXtyZXR1cm4gbnVsbDt9fTtZQUhPTy53aWRnZXQuQXV0b0NvbXBs ZXRlLnByb3RvdHlwZS5nZXRMaXN0SXRlbUluZGV4PWZ1bmN0aW9uKEEpe2lmKFlB SE9PLmxhbmcuaXNOdW1iZXIoQS5fbkl0ZW1JbmRleCkpe3JldHVybiBBLl9uSXRl bUluZGV4O31lbHNle3JldHVybiBudWxsO319O1lBSE9PLndpZGdldC5BdXRvQ29t cGxldGUucHJvdG90eXBlLnNldEhlYWRlcj1mdW5jdGlvbihCKXtpZih0aGlzLl9l bEhlYWRlcil7dmFyIEE9dGhpcy5fZWxIZWFkZXI7aWYoQil7QS5pbm5lckhUTUw9 QjtBLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjt9ZWxzZXtBLmlubmVySFRNTD0iIjtB LnN0eWxlLmRpc3BsYXk9Im5vbmUiO319fTtZQUhPTy53aWRnZXQuQXV0b0NvbXBs ZXRlLnByb3RvdHlwZS5zZXRGb290ZXI9ZnVuY3Rpb24oQil7aWYodGhpcy5fZWxG b290ZXIpe3ZhciBBPXRoaXMuX2VsRm9vdGVyO2lmKEIpe0EuaW5uZXJIVE1MPUI7 QS5zdHlsZS5kaXNwbGF5PSJibG9jayI7fWVsc2V7QS5pbm5lckhUTUw9IiI7QS5z dHlsZS5kaXNwbGF5PSJub25lIjt9fX07WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0 ZS5wcm90b3R5cGUuc2V0Qm9keT1mdW5jdGlvbihBKXtpZih0aGlzLl9lbEJvZHkp e3ZhciBCPXRoaXMuX2VsQm9keTtZQUhPTy51dGlsLkV2ZW50LnB1cmdlRWxlbWVu dChCLHRydWUpO2lmKEEpe0IuaW5uZXJIVE1MPUE7Qi5zdHlsZS5kaXNwbGF5PSJi bG9jayI7fWVsc2V7Qi5pbm5lckhUTUw9IiI7Qi5zdHlsZS5kaXNwbGF5PSJub25l Ijt9dGhpcy5fZWxMaXN0PW51bGw7fX07WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0 ZS5wcm90b3R5cGUuZ2VuZXJhdGVSZXF1ZXN0PWZ1bmN0aW9uKEIpe3ZhciBBPXRo aXMuZGF0YVNvdXJjZS5kYXRhVHlwZTtpZihBPT09WUFIT08udXRpbC5EYXRhU291 cmNlQmFzZS5UWVBFX1hIUil7aWYoIXRoaXMuZGF0YVNvdXJjZS5jb25uTWV0aG9k UG9zdCl7Qj0odGhpcy5xdWVyeVF1ZXN0aW9uTWFyaz8iPyI6IiIpKyh0aGlzLmRh dGFTb3VyY2Uuc2NyaXB0UXVlcnlQYXJhbXx8InF1ZXJ5IikrIj0iK0IrKHRoaXMu ZGF0YVNvdXJjZS5zY3JpcHRRdWVyeUFwcGVuZD8oIiYiK3RoaXMuZGF0YVNvdXJj ZS5zY3JpcHRRdWVyeUFwcGVuZCk6IiIpO31lbHNle0I9KHRoaXMuZGF0YVNvdXJj ZS5zY3JpcHRRdWVyeVBhcmFtfHwicXVlcnkiKSsiPSIrQisodGhpcy5kYXRhU291 cmNlLnNjcmlwdFF1ZXJ5QXBwZW5kPygiJiIrdGhpcy5kYXRhU291cmNlLnNjcmlw dFF1ZXJ5QXBwZW5kKToiIik7fX1lbHNle2lmKEE9PT1ZQUhPTy51dGlsLkRhdGFT b3VyY2VCYXNlLlRZUEVfU0NSSVBUTk9ERSl7Qj0iJiIrKHRoaXMuZGF0YVNvdXJj ZS5zY3JpcHRRdWVyeVBhcmFtfHwicXVlcnkiKSsiPSIrQisodGhpcy5kYXRhU291 cmNlLnNjcmlwdFF1ZXJ5QXBwZW5kPygiJiIrdGhpcy5kYXRhU291cmNlLnNjcmlw dFF1ZXJ5QXBwZW5kKToiIik7fX1yZXR1cm4gQjt9O1lBSE9PLndpZGdldC5BdXRv Q29tcGxldGUucHJvdG90eXBlLnNlbmRRdWVyeT1mdW5jdGlvbihCKXt0aGlzLl9i Rm9jdXNlZD1udWxsO3ZhciBBPSh0aGlzLmRlbGltQ2hhcik/dGhpcy5fZWxUZXh0 Ym94LnZhbHVlK0I6Qjt0aGlzLl9zZW5kUXVlcnkoQSk7fTtZQUhPTy53aWRnZXQu QXV0b0NvbXBsZXRlLnByb3RvdHlwZS5jb2xsYXBzZUNvbnRhaW5lcj1mdW5jdGlv bigpe3RoaXMuX3RvZ2dsZUNvbnRhaW5lcihmYWxzZSk7fTtZQUhPTy53aWRnZXQu QXV0b0NvbXBsZXRlLnByb3RvdHlwZS5nZXRTdWJzZXRNYXRjaGVzPWZ1bmN0aW9u KEUpe3ZhciBELEMsQTtmb3IodmFyIEI9RS5sZW5ndGg7Qj49dGhpcy5taW5RdWVy eUxlbmd0aDtCLS0pe0E9dGhpcy5nZW5lcmF0ZVJlcXVlc3QoRS5zdWJzdHIoMCxC KSk7dGhpcy5kYXRhUmVxdWVzdEV2ZW50LmZpcmUodGhpcyxELEEpO0M9dGhpcy5k YXRhU291cmNlLmdldENhY2hlZFJlc3BvbnNlKEEpO2lmKEMpe3JldHVybiB0aGlz LmZpbHRlclJlc3VsdHMuYXBwbHkodGhpcy5kYXRhU291cmNlLFtFLEMsQyx7c2Nv cGU6dGhpc31dKTt9fXJldHVybiBudWxsO307WUFIT08ud2lkZ2V0LkF1dG9Db21w bGV0ZS5wcm90b3R5cGUucHJlcGFyc2VSYXdSZXNwb25zZT1mdW5jdGlvbihDLEIs QSl7dmFyIEQ9KCh0aGlzLnJlc3BvbnNlU3RyaXBBZnRlciE9PSIiKSYmKEIuaW5k ZXhPZikpP0IuaW5kZXhPZih0aGlzLnJlc3BvbnNlU3RyaXBBZnRlcik6LTE7aWYo RCE9LTEpe0I9Qi5zdWJzdHJpbmcoMCxEKTt9cmV0dXJuIEI7fTtZQUhPTy53aWRn ZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlwZS5maWx0ZXJSZXN1bHRzPWZ1bmN0aW9u KEosTCxQLEspe2lmKEsmJksuYXJndW1lbnQmJksuYXJndW1lbnQucXVlcnkpe0o9 Sy5hcmd1bWVudC5xdWVyeTt9aWYoSiYmSiE9PSIiKXtQPVlBSE9PLndpZGdldC5B dXRvQ29tcGxldGUuX2Nsb25lT2JqZWN0KFApO3ZhciBIPUsuc2NvcGUsTz10aGlz LEI9UC5yZXN1bHRzLE09W10sRD1mYWxzZSxJPShPLnF1ZXJ5TWF0Y2hDYXNlfHxI LnF1ZXJ5TWF0Y2hDYXNlKSxBPShPLnF1ZXJ5TWF0Y2hDb250YWluc3x8SC5xdWVy eU1hdGNoQ29udGFpbnMpO2Zvcih2YXIgQz1CLmxlbmd0aC0xO0M+PTA7Qy0tKXt2 YXIgRj1CW0NdO3ZhciBFPW51bGw7aWYoWUFIT08ubGFuZy5pc1N0cmluZyhGKSl7 RT1GO31lbHNle2lmKFlBSE9PLmxhbmcuaXNBcnJheShGKSl7RT1GWzBdO31lbHNl e2lmKHRoaXMucmVzcG9uc2VTY2hlbWEuZmllbGRzKXt2YXIgTj10aGlzLnJlc3Bv bnNlU2NoZW1hLmZpZWxkc1swXS5rZXl8fHRoaXMucmVzcG9uc2VTY2hlbWEuZmll bGRzWzBdO0U9RltOXTt9ZWxzZXtpZih0aGlzLmtleSl7RT1GW3RoaXMua2V5XTt9 fX19aWYoWUFIT08ubGFuZy5pc1N0cmluZyhFKSl7dmFyIEc9KEkpP0UuaW5kZXhP ZihkZWNvZGVVUklDb21wb25lbnQoSikpOkUudG9Mb3dlckNhc2UoKS5pbmRleE9m KGRlY29kZVVSSUNvbXBvbmVudChKKS50b0xvd2VyQ2FzZSgpKTtpZigoIUEmJihH PT09MCkpfHwoQSYmKEc+LTEpKSl7TS51bnNoaWZ0KEYpO319fVAucmVzdWx0cz1N O31lbHNle31yZXR1cm4gUDt9O1lBSE9PLndpZGdldC5BdXRvQ29tcGxldGUucHJv dG90eXBlLmhhbmRsZVJlc3BvbnNlPWZ1bmN0aW9uKEMsQSxCKXtpZigodGhpcyBp bnN0YW5jZW9mIFlBSE9PLndpZGdldC5BdXRvQ29tcGxldGUpJiZ0aGlzLl9zTmFt ZSl7dGhpcy5fcG9wdWxhdGVMaXN0KEMsQSxCKTt9fTtZQUhPTy53aWRnZXQuQXV0 b0NvbXBsZXRlLnByb3RvdHlwZS5kb0JlZm9yZUxvYWREYXRhPWZ1bmN0aW9uKEMs QSxCKXtyZXR1cm4gdHJ1ZTt9O1lBSE9PLndpZGdldC5BdXRvQ29tcGxldGUucHJv dG90eXBlLmZvcm1hdFJlc3VsdD1mdW5jdGlvbihCLEQsQSl7dmFyIEM9KEEpP0E6 IiI7cmV0dXJuIEM7fTtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlw ZS5kb0JlZm9yZUV4cGFuZENvbnRhaW5lcj1mdW5jdGlvbihELEEsQyxCKXtyZXR1 cm4gdHJ1ZTt9O1lBSE9PLndpZGdldC5BdXRvQ29tcGxldGUucHJvdG90eXBlLmRl c3Ryb3k9ZnVuY3Rpb24oKXt2YXIgQj10aGlzLnRvU3RyaW5nKCk7dmFyIEE9dGhp cy5fZWxUZXh0Ym94O3ZhciBEPXRoaXMuX2VsQ29udGFpbmVyO3RoaXMudGV4dGJv eEZvY3VzRXZlbnQudW5zdWJzY3JpYmVBbGwoKTt0aGlzLnRleHRib3hLZXlFdmVu dC51bnN1YnNjcmliZUFsbCgpO3RoaXMuZGF0YVJlcXVlc3RFdmVudC51bnN1YnNj cmliZUFsbCgpO3RoaXMuZGF0YVJldHVybkV2ZW50LnVuc3Vic2NyaWJlQWxsKCk7 dGhpcy5kYXRhRXJyb3JFdmVudC51bnN1YnNjcmliZUFsbCgpO3RoaXMuY29udGFp bmVyUG9wdWxhdGVFdmVudC51bnN1YnNjcmliZUFsbCgpO3RoaXMuY29udGFpbmVy RXhwYW5kRXZlbnQudW5zdWJzY3JpYmVBbGwoKTt0aGlzLnR5cGVBaGVhZEV2ZW50 LnVuc3Vic2NyaWJlQWxsKCk7dGhpcy5pdGVtTW91c2VPdmVyRXZlbnQudW5zdWJz Y3JpYmVBbGwoKTt0aGlzLml0ZW1Nb3VzZU91dEV2ZW50LnVuc3Vic2NyaWJlQWxs KCk7dGhpcy5pdGVtQXJyb3dUb0V2ZW50LnVuc3Vic2NyaWJlQWxsKCk7dGhpcy5p dGVtQXJyb3dGcm9tRXZlbnQudW5zdWJzY3JpYmVBbGwoKTt0aGlzLml0ZW1TZWxl Y3RFdmVudC51bnN1YnNjcmliZUFsbCgpO3RoaXMudW5tYXRjaGVkSXRlbVNlbGVj dEV2ZW50LnVuc3Vic2NyaWJlQWxsKCk7dGhpcy5zZWxlY3Rpb25FbmZvcmNlRXZl bnQudW5zdWJzY3JpYmVBbGwoKTt0aGlzLmNvbnRhaW5lckNvbGxhcHNlRXZlbnQu dW5zdWJzY3JpYmVBbGwoKTt0aGlzLnRleHRib3hCbHVyRXZlbnQudW5zdWJzY3Jp YmVBbGwoKTt0aGlzLnRleHRib3hDaGFuZ2VFdmVudC51bnN1YnNjcmliZUFsbCgp O1lBSE9PLnV0aWwuRXZlbnQucHVyZ2VFbGVtZW50KEEsdHJ1ZSk7WUFIT08udXRp bC5FdmVudC5wdXJnZUVsZW1lbnQoRCx0cnVlKTtELmlubmVySFRNTD0iIjtmb3Io dmFyIEMgaW4gdGhpcyl7aWYoWUFIT08ubGFuZy5oYXNPd25Qcm9wZXJ0eSh0aGlz LEMpKXt0aGlzW0NdPW51bGw7fX19O1lBSE9PLndpZGdldC5BdXRvQ29tcGxldGUu cHJvdG90eXBlLnRleHRib3hGb2N1c0V2ZW50PW51bGw7WUFIT08ud2lkZ2V0LkF1 dG9Db21wbGV0ZS5wcm90b3R5cGUudGV4dGJveEtleUV2ZW50PW51bGw7WUFIT08u d2lkZ2V0LkF1dG9Db21wbGV0ZS5wcm90b3R5cGUuZGF0YVJlcXVlc3RFdmVudD1u dWxsO1lBSE9PLndpZGdldC5BdXRvQ29tcGxldGUucHJvdG90eXBlLmRhdGFSZXR1 cm5FdmVudD1udWxsO1lBSE9PLndpZGdldC5BdXRvQ29tcGxldGUucHJvdG90eXBl LmRhdGFFcnJvckV2ZW50PW51bGw7WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZS5w cm90b3R5cGUuY29udGFpbmVyUG9wdWxhdGVFdmVudD1udWxsO1lBSE9PLndpZGdl dC5BdXRvQ29tcGxldGUucHJvdG90eXBlLmNvbnRhaW5lckV4cGFuZEV2ZW50PW51 bGw7WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZS5wcm90b3R5cGUudHlwZUFoZWFk RXZlbnQ9bnVsbDtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlwZS5p dGVtTW91c2VPdmVyRXZlbnQ9bnVsbDtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRl LnByb3RvdHlwZS5pdGVtTW91c2VPdXRFdmVudD1udWxsO1lBSE9PLndpZGdldC5B dXRvQ29tcGxldGUucHJvdG90eXBlLml0ZW1BcnJvd1RvRXZlbnQ9bnVsbDtZQUhP Ty53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlwZS5pdGVtQXJyb3dGcm9tRXZl bnQ9bnVsbDtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlwZS5pdGVt U2VsZWN0RXZlbnQ9bnVsbDtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3Rv dHlwZS51bm1hdGNoZWRJdGVtU2VsZWN0RXZlbnQ9bnVsbDtZQUhPTy53aWRnZXQu QXV0b0NvbXBsZXRlLnByb3RvdHlwZS5zZWxlY3Rpb25FbmZvcmNlRXZlbnQ9bnVs bDtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlwZS5jb250YWluZXJD b2xsYXBzZUV2ZW50PW51bGw7WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZS5wcm90 b3R5cGUudGV4dGJveEJsdXJFdmVudD1udWxsOwpZQUhPTy53aWRnZXQuQXV0b0Nv bXBsZXRlLnByb3RvdHlwZS50ZXh0Ym94Q2hhbmdlRXZlbnQ9bnVsbDtZQUhPTy53 aWRnZXQuQXV0b0NvbXBsZXRlLl9uSW5kZXg9MDtZQUhPTy53aWRnZXQuQXV0b0Nv bXBsZXRlLnByb3RvdHlwZS5fc05hbWU9bnVsbDtZQUhPTy53aWRnZXQuQXV0b0Nv bXBsZXRlLnByb3RvdHlwZS5fZWxUZXh0Ym94PW51bGw7WUFIT08ud2lkZ2V0LkF1 dG9Db21wbGV0ZS5wcm90b3R5cGUuX2VsQ29udGFpbmVyPW51bGw7WUFIT08ud2lk Z2V0LkF1dG9Db21wbGV0ZS5wcm90b3R5cGUuX2VsQ29udGVudD1udWxsO1lBSE9P LndpZGdldC5BdXRvQ29tcGxldGUucHJvdG90eXBlLl9lbEhlYWRlcj1udWxsO1lB SE9PLndpZGdldC5BdXRvQ29tcGxldGUucHJvdG90eXBlLl9lbEJvZHk9bnVsbDtZ QUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlwZS5fZWxGb290ZXI9bnVs bDtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlwZS5fZWxTaGFkb3c9 bnVsbDtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlwZS5fZWxJRnJh bWU9bnVsbDtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlwZS5fYkZv Y3VzZWQ9bnVsbDtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlwZS5f b0FuaW09bnVsbDtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlwZS5f YkNvbnRhaW5lck9wZW49ZmFsc2U7WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZS5w cm90b3R5cGUuX2JPdmVyQ29udGFpbmVyPWZhbHNlO1lBSE9PLndpZGdldC5BdXRv Q29tcGxldGUucHJvdG90eXBlLl9lbExpc3Q9bnVsbDtZQUhPTy53aWRnZXQuQXV0 b0NvbXBsZXRlLnByb3RvdHlwZS5fbkRpc3BsYXllZEl0ZW1zPTA7WUFIT08ud2lk Z2V0LkF1dG9Db21wbGV0ZS5wcm90b3R5cGUuX3NDdXJRdWVyeT1udWxsO1lBSE9P LndpZGdldC5BdXRvQ29tcGxldGUucHJvdG90eXBlLl9zUGFzdFNlbGVjdGlvbnM9 IiI7WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZS5wcm90b3R5cGUuX3NJbml0SW5w dXRWYWx1ZT1udWxsO1lBSE9PLndpZGdldC5BdXRvQ29tcGxldGUucHJvdG90eXBl Ll9lbEN1ckxpc3RJdGVtPW51bGw7WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZS5w cm90b3R5cGUuX2JJdGVtU2VsZWN0ZWQ9ZmFsc2U7WUFIT08ud2lkZ2V0LkF1dG9D b21wbGV0ZS5wcm90b3R5cGUuX25LZXlDb2RlPW51bGw7WUFIT08ud2lkZ2V0LkF1 dG9Db21wbGV0ZS5wcm90b3R5cGUuX25EZWxheUlEPS0xO1lBSE9PLndpZGdldC5B dXRvQ29tcGxldGUucHJvdG90eXBlLl9uVHlwZUFoZWFkRGVsYXlJRD0tMTtZQUhP Ty53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlwZS5faUZyYW1lU3JjPSJqYXZh c2NyaXB0OmZhbHNlOyI7WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZS5wcm90b3R5 cGUuX3F1ZXJ5SW50ZXJ2YWw9bnVsbDtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRl LnByb3RvdHlwZS5fc0xhc3RUZXh0Ym94VmFsdWU9bnVsbDtZQUhPTy53aWRnZXQu QXV0b0NvbXBsZXRlLnByb3RvdHlwZS5faW5pdFByb3BzPWZ1bmN0aW9uKCl7dmFy IEI9dGhpcy5taW5RdWVyeUxlbmd0aDtpZighWUFIT08ubGFuZy5pc051bWJlcihC KSl7dGhpcy5taW5RdWVyeUxlbmd0aD0xO312YXIgRT10aGlzLm1heFJlc3VsdHNE aXNwbGF5ZWQ7aWYoIVlBSE9PLmxhbmcuaXNOdW1iZXIoRSl8fChFPDEpKXt0aGlz Lm1heFJlc3VsdHNEaXNwbGF5ZWQ9MTA7fXZhciBGPXRoaXMucXVlcnlEZWxheTtp ZighWUFIT08ubGFuZy5pc051bWJlcihGKXx8KEY8MCkpe3RoaXMucXVlcnlEZWxh eT0wLjI7fXZhciBDPXRoaXMudHlwZUFoZWFkRGVsYXk7aWYoIVlBSE9PLmxhbmcu aXNOdW1iZXIoQyl8fChDPDApKXt0aGlzLnR5cGVBaGVhZERlbGF5PTAuMjt9dmFy IEE9dGhpcy5kZWxpbUNoYXI7aWYoWUFIT08ubGFuZy5pc1N0cmluZyhBKSYmKEEu bGVuZ3RoPjApKXt0aGlzLmRlbGltQ2hhcj1bQV07fWVsc2V7aWYoIVlBSE9PLmxh bmcuaXNBcnJheShBKSl7dGhpcy5kZWxpbUNoYXI9bnVsbDt9fXZhciBEPXRoaXMu YW5pbVNwZWVkO2lmKCh0aGlzLmFuaW1Ib3Jpenx8dGhpcy5hbmltVmVydCkmJllB SE9PLnV0aWwuQW5pbSl7aWYoIVlBSE9PLmxhbmcuaXNOdW1iZXIoRCl8fChEPDAp KXt0aGlzLmFuaW1TcGVlZD0wLjM7fWlmKCF0aGlzLl9vQW5pbSl7dGhpcy5fb0Fu aW09bmV3IFlBSE9PLnV0aWwuQW5pbSh0aGlzLl9lbENvbnRlbnQse30sdGhpcy5h bmltU3BlZWQpO31lbHNle3RoaXMuX29BbmltLmR1cmF0aW9uPXRoaXMuYW5pbVNw ZWVkO319aWYodGhpcy5mb3JjZVNlbGVjdGlvbiYmQSl7fX07WUFIT08ud2lkZ2V0 LkF1dG9Db21wbGV0ZS5wcm90b3R5cGUuX2luaXRDb250YWluZXJIZWxwZXJFbHM9 ZnVuY3Rpb24oKXtpZih0aGlzLnVzZVNoYWRvdyYmIXRoaXMuX2VsU2hhZG93KXt2 YXIgQT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtBLmNsYXNzTmFtZT0i eXVpLWFjLXNoYWRvdyI7QS5zdHlsZS53aWR0aD0wO0Euc3R5bGUuaGVpZ2h0PTA7 dGhpcy5fZWxTaGFkb3c9dGhpcy5fZWxDb250YWluZXIuYXBwZW5kQ2hpbGQoQSk7 fWlmKHRoaXMudXNlSUZyYW1lJiYhdGhpcy5fZWxJRnJhbWUpe3ZhciBCPWRvY3Vt ZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpO0Iuc3JjPXRoaXMuX2lGcmFtZVNy YztCLmZyYW1lQm9yZGVyPTA7Qi5zY3JvbGxpbmc9Im5vIjtCLnN0eWxlLnBvc2l0 aW9uPSJhYnNvbHV0ZSI7Qi5zdHlsZS53aWR0aD0wO0Iuc3R5bGUuaGVpZ2h0PTA7 Qi50YWJJbmRleD0tMTtCLnN0eWxlLnBhZGRpbmc9MDt0aGlzLl9lbElGcmFtZT10 aGlzLl9lbENvbnRhaW5lci5hcHBlbmRDaGlsZChCKTt9fTtZQUhPTy53aWRnZXQu QXV0b0NvbXBsZXRlLnByb3RvdHlwZS5faW5pdENvbnRhaW5lckVsPWZ1bmN0aW9u KCl7WUFIT08udXRpbC5Eb20uYWRkQ2xhc3ModGhpcy5fZWxDb250YWluZXIsInl1 aS1hYy1jb250YWluZXIiKTtpZighdGhpcy5fZWxDb250ZW50KXt2YXIgQz1kb2N1 bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtDLmNsYXNzTmFtZT0ieXVpLWFjLWNv bnRlbnQiO0Muc3R5bGUuZGlzcGxheT0ibm9uZSI7dGhpcy5fZWxDb250ZW50PXRo aXMuX2VsQ29udGFpbmVyLmFwcGVuZENoaWxkKEMpO3ZhciBCPWRvY3VtZW50LmNy ZWF0ZUVsZW1lbnQoImRpdiIpO0IuY2xhc3NOYW1lPSJ5dWktYWMtaGQiO0Iuc3R5 bGUuZGlzcGxheT0ibm9uZSI7dGhpcy5fZWxIZWFkZXI9dGhpcy5fZWxDb250ZW50 LmFwcGVuZENoaWxkKEIpO3ZhciBEPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp diIpO0QuY2xhc3NOYW1lPSJ5dWktYWMtYmQiO3RoaXMuX2VsQm9keT10aGlzLl9l bENvbnRlbnQuYXBwZW5kQ2hpbGQoRCk7dmFyIEE9ZG9jdW1lbnQuY3JlYXRlRWxl bWVudCgiZGl2Iik7QS5jbGFzc05hbWU9Inl1aS1hYy1mdCI7QS5zdHlsZS5kaXNw bGF5PSJub25lIjt0aGlzLl9lbEZvb3Rlcj10aGlzLl9lbENvbnRlbnQuYXBwZW5k Q2hpbGQoQSk7fWVsc2V7fX07WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZS5wcm90 b3R5cGUuX2luaXRMaXN0RWw9ZnVuY3Rpb24oKXt2YXIgQz10aGlzLm1heFJlc3Vs dHNEaXNwbGF5ZWQ7dmFyIEE9dGhpcy5fZWxMaXN0fHxkb2N1bWVudC5jcmVhdGVF bGVtZW50KCJ1bCIpO3ZhciBCO3doaWxlKEEuY2hpbGROb2Rlcy5sZW5ndGg8Qyl7 Qj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpO0Iuc3R5bGUuZGlzcGxheT0i bm9uZSI7Qi5fbkl0ZW1JbmRleD1BLmNoaWxkTm9kZXMubGVuZ3RoO0EuYXBwZW5k Q2hpbGQoQik7fWlmKCF0aGlzLl9lbExpc3Qpe3ZhciBEPXRoaXMuX2VsQm9keTtZ QUhPTy51dGlsLkV2ZW50LnB1cmdlRWxlbWVudChELHRydWUpO0QuaW5uZXJIVE1M PSIiO3RoaXMuX2VsTGlzdD1ELmFwcGVuZENoaWxkKEEpO319O1lBSE9PLndpZGdl dC5BdXRvQ29tcGxldGUucHJvdG90eXBlLl9mb2N1cz1mdW5jdGlvbigpe3ZhciBB PXRoaXM7c2V0VGltZW91dChmdW5jdGlvbigpe3RyeXtBLl9lbFRleHRib3guZm9j dXMoKTt9Y2F0Y2goQil7fX0sMCk7fTtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRl LnByb3RvdHlwZS5fZW5hYmxlSW50ZXJ2YWxEZXRlY3Rpb249ZnVuY3Rpb24oKXt2 YXIgQT10aGlzO2lmKCFBLl9xdWVyeUludGVydmFsJiZBLnF1ZXJ5SW50ZXJ2YWwp e0EuX3F1ZXJ5SW50ZXJ2YWw9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtBLl9vbklu dGVydmFsKCk7fSxBLnF1ZXJ5SW50ZXJ2YWwpO319O1lBSE9PLndpZGdldC5BdXRv Q29tcGxldGUucHJvdG90eXBlLl9vbkludGVydmFsPWZ1bmN0aW9uKCl7dmFyIEE9 dGhpcy5fZWxUZXh0Ym94LnZhbHVlO3ZhciBCPXRoaXMuX3NMYXN0VGV4dGJveFZh bHVlO2lmKEEhPUIpe3RoaXMuX3NMYXN0VGV4dGJveFZhbHVlPUE7dGhpcy5fc2Vu ZFF1ZXJ5KEEpO319O1lBSE9PLndpZGdldC5BdXRvQ29tcGxldGUucHJvdG90eXBl Ll9jbGVhckludGVydmFsPWZ1bmN0aW9uKCl7aWYodGhpcy5fcXVlcnlJbnRlcnZh bCl7Y2xlYXJJbnRlcnZhbCh0aGlzLl9xdWVyeUludGVydmFsKTt0aGlzLl9xdWVy eUludGVydmFsPW51bGw7fX07WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZS5wcm90 b3R5cGUuX2lzSWdub3JlS2V5PWZ1bmN0aW9uKEEpe2lmKChBPT05KXx8KEE9PTEz KXx8KEE9PTE2KXx8KEE9PTE3KXx8KEE+PTE4JiZBPD0yMCl8fChBPT0yNyl8fChB Pj0zMyYmQTw9MzUpfHwoQT49MzYmJkE8PTQwKXx8KEE+PTQ0JiZBPD00NSl8fChB PT0yMjkpKXtyZXR1cm4gdHJ1ZTt9cmV0dXJuIGZhbHNlO307WUFIT08ud2lkZ2V0 LkF1dG9Db21wbGV0ZS5wcm90b3R5cGUuX3NlbmRRdWVyeT1mdW5jdGlvbihEKXtp Zih0aGlzLm1pblF1ZXJ5TGVuZ3RoPDApe3RoaXMuX3RvZ2dsZUNvbnRhaW5lcihm YWxzZSk7cmV0dXJuO31pZih0aGlzLmRlbGltQ2hhcil7dmFyIEE9dGhpcy5fZXh0 cmFjdFF1ZXJ5KEQpO0Q9QS5xdWVyeTt0aGlzLl9zUGFzdFNlbGVjdGlvbnM9QS5w cmV2aW91czt9aWYoKEQmJihELmxlbmd0aDx0aGlzLm1pblF1ZXJ5TGVuZ3RoKSl8 fCghRCYmdGhpcy5taW5RdWVyeUxlbmd0aD4wKSl7aWYodGhpcy5fbkRlbGF5SUQh PS0xKXtjbGVhclRpbWVvdXQodGhpcy5fbkRlbGF5SUQpO310aGlzLl90b2dnbGVD b250YWluZXIoZmFsc2UpO3JldHVybjt9RD1lbmNvZGVVUklDb21wb25lbnQoRCk7 dGhpcy5fbkRlbGF5SUQ9LTE7aWYodGhpcy5kYXRhU291cmNlLnF1ZXJ5TWF0Y2hT dWJzZXR8fHRoaXMucXVlcnlNYXRjaFN1YnNldCl7dmFyIEM9dGhpcy5nZXRTdWJz ZXRNYXRjaGVzKEQpO2lmKEMpe3RoaXMuaGFuZGxlUmVzcG9uc2UoRCxDLHtxdWVy eTpEfSk7cmV0dXJuO319aWYodGhpcy5yZXNwb25zZVN0cmlwQWZ0ZXIpe3RoaXMu ZGF0YVNvdXJjZS5kb0JlZm9yZVBhcnNlRGF0YT10aGlzLnByZXBhcnNlUmF3UmVz cG9uc2U7fWlmKHRoaXMuYXBwbHlMb2NhbEZpbHRlcil7dGhpcy5kYXRhU291cmNl LmRvQmVmb3JlQ2FsbGJhY2s9dGhpcy5maWx0ZXJSZXN1bHRzO312YXIgQj10aGlz LmdlbmVyYXRlUmVxdWVzdChEKTt0aGlzLmRhdGFSZXF1ZXN0RXZlbnQuZmlyZSh0 aGlzLEQsQik7dGhpcy5kYXRhU291cmNlLnNlbmRSZXF1ZXN0KEIse3N1Y2Nlc3M6 dGhpcy5oYW5kbGVSZXNwb25zZSxmYWlsdXJlOnRoaXMuaGFuZGxlUmVzcG9uc2Us c2NvcGU6dGhpcyxhcmd1bWVudDp7cXVlcnk6RH19KTt9O1lBSE9PLndpZGdldC5B dXRvQ29tcGxldGUucHJvdG90eXBlLl9wb3B1bGF0ZUxpc3Q9ZnVuY3Rpb24oSyxG LEMpe2lmKHRoaXMuX25UeXBlQWhlYWREZWxheUlEIT0tMSl7Y2xlYXJUaW1lb3V0 KHRoaXMuX25UeXBlQWhlYWREZWxheUlEKTt9Sz0oQyYmQy5xdWVyeSk/Qy5xdWVy eTpLO3ZhciBIPXRoaXMuZG9CZWZvcmVMb2FkRGF0YShLLEYsQyk7aWYoSCYmIUYu ZXJyb3Ipe3RoaXMuZGF0YVJldHVybkV2ZW50LmZpcmUodGhpcyxLLEYucmVzdWx0 cyk7aWYodGhpcy5fYkZvY3VzZWR8fCh0aGlzLl9iRm9jdXNlZD09PW51bGwpKXt2 YXIgTT1kZWNvZGVVUklDb21wb25lbnQoSyk7dGhpcy5fc0N1clF1ZXJ5PU07CnRo aXMuX2JJdGVtU2VsZWN0ZWQ9ZmFsc2U7dmFyIFI9Ri5yZXN1bHRzLEE9TWF0aC5t aW4oUi5sZW5ndGgsdGhpcy5tYXhSZXN1bHRzRGlzcGxheWVkKSxKPSh0aGlzLmRh dGFTb3VyY2UucmVzcG9uc2VTY2hlbWEuZmllbGRzKT8odGhpcy5kYXRhU291cmNl LnJlc3BvbnNlU2NoZW1hLmZpZWxkc1swXS5rZXl8fHRoaXMuZGF0YVNvdXJjZS5y ZXNwb25zZVNjaGVtYS5maWVsZHNbMF0pOjA7aWYoQT4wKXtpZighdGhpcy5fZWxM aXN0fHwodGhpcy5fZWxMaXN0LmNoaWxkTm9kZXMubGVuZ3RoPEEpKXt0aGlzLl9p bml0TGlzdEVsKCk7fXRoaXMuX2luaXRDb250YWluZXJIZWxwZXJFbHMoKTt2YXIg ST10aGlzLl9lbExpc3QuY2hpbGROb2Rlcztmb3IodmFyIFE9QS0xO1E+PTA7US0t KXt2YXIgUD1JW1FdLEU9UltRXTtpZih0aGlzLnJlc3VsdFR5cGVMaXN0KXt2YXIg Qj1bXTtCWzBdPShZQUhPTy5sYW5nLmlzU3RyaW5nKEUpKT9FOkVbSl18fEVbdGhp cy5rZXldO3ZhciBMPXRoaXMuZGF0YVNvdXJjZS5yZXNwb25zZVNjaGVtYS5maWVs ZHM7aWYoWUFIT08ubGFuZy5pc0FycmF5KEwpJiYoTC5sZW5ndGg+MSkpe2Zvcih2 YXIgTj0xLFM9TC5sZW5ndGg7TjxTO04rKyl7QltCLmxlbmd0aF09RVtMW05dLmtl eXx8TFtOXV07fX1lbHNle2lmKFlBSE9PLmxhbmcuaXNBcnJheShFKSl7Qj1FO31l bHNle2lmKFlBSE9PLmxhbmcuaXNTdHJpbmcoRSkpe0I9W0VdO31lbHNle0JbMV09 RTt9fX1FPUI7fVAuX3NSZXN1bHRNYXRjaD0oWUFIT08ubGFuZy5pc1N0cmluZyhF KSk/RTooWUFIT08ubGFuZy5pc0FycmF5KEUpKT9FWzBdOihFW0pdfHwiIik7UC5f b1Jlc3VsdERhdGE9RTtQLmlubmVySFRNTD10aGlzLmZvcm1hdFJlc3VsdChFLE0s UC5fc1Jlc3VsdE1hdGNoKTtQLnN0eWxlLmRpc3BsYXk9IiI7fWlmKEE8SS5sZW5n dGgpe3ZhciBHO2Zvcih2YXIgTz1JLmxlbmd0aC0xO08+PUE7Ty0tKXtHPUlbT107 Ry5zdHlsZS5kaXNwbGF5PSJub25lIjt9fXRoaXMuX25EaXNwbGF5ZWRJdGVtcz1B O3RoaXMuY29udGFpbmVyUG9wdWxhdGVFdmVudC5maXJlKHRoaXMsSyxSKTtpZih0 aGlzLmF1dG9IaWdobGlnaHQpe3ZhciBEPXRoaXMuX2VsTGlzdC5maXJzdENoaWxk O3RoaXMuX3RvZ2dsZUhpZ2hsaWdodChELCJ0byIpO3RoaXMuaXRlbUFycm93VG9F dmVudC5maXJlKHRoaXMsRCk7dGhpcy5fdHlwZUFoZWFkKEQsSyk7fWVsc2V7dGhp cy5fdG9nZ2xlSGlnaGxpZ2h0KHRoaXMuX2VsQ3VyTGlzdEl0ZW0sImZyb20iKTt9 SD10aGlzLmRvQmVmb3JlRXhwYW5kQ29udGFpbmVyKHRoaXMuX2VsVGV4dGJveCx0 aGlzLl9lbENvbnRhaW5lcixLLFIpO3RoaXMuX3RvZ2dsZUNvbnRhaW5lcihIKTt9 ZWxzZXt0aGlzLl90b2dnbGVDb250YWluZXIoZmFsc2UpO31yZXR1cm47fX1lbHNl e3RoaXMuZGF0YUVycm9yRXZlbnQuZmlyZSh0aGlzLEspO319O1lBSE9PLndpZGdl dC5BdXRvQ29tcGxldGUucHJvdG90eXBlLl9jbGVhclNlbGVjdGlvbj1mdW5jdGlv bigpe3ZhciBBPSh0aGlzLmRlbGltQ2hhcik/dGhpcy5fZXh0cmFjdFF1ZXJ5KHRo aXMuX2VsVGV4dGJveC52YWx1ZSk6e3ByZXZpb3VzOiIiLHF1ZXJ5OnRoaXMuX2Vs VGV4dGJveC52YWx1ZX07dGhpcy5fZWxUZXh0Ym94LnZhbHVlPUEucHJldmlvdXM7 dGhpcy5zZWxlY3Rpb25FbmZvcmNlRXZlbnQuZmlyZSh0aGlzLEEucXVlcnkpO307 WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZS5wcm90b3R5cGUuX3RleHRNYXRjaGVz T3B0aW9uPWZ1bmN0aW9uKCl7dmFyIEE9bnVsbDtmb3IodmFyIEI9MDtCPHRoaXMu X25EaXNwbGF5ZWRJdGVtcztCKyspe3ZhciBDPXRoaXMuX2VsTGlzdC5jaGlsZE5v ZGVzW0JdO3ZhciBEPSgiIitDLl9zUmVzdWx0TWF0Y2gpLnRvTG93ZXJDYXNlKCk7 aWYoRD09dGhpcy5fc0N1clF1ZXJ5LnRvTG93ZXJDYXNlKCkpe0E9QzticmVhazt9 fXJldHVybihBKTt9O1lBSE9PLndpZGdldC5BdXRvQ29tcGxldGUucHJvdG90eXBl Ll90eXBlQWhlYWQ9ZnVuY3Rpb24oQixEKXtpZighdGhpcy50eXBlQWhlYWR8fCh0 aGlzLl9uS2V5Q29kZT09OCkpe3JldHVybjt9dmFyIEE9dGhpcyxDPXRoaXMuX2Vs VGV4dGJveDtpZihDLnNldFNlbGVjdGlvblJhbmdlfHxDLmNyZWF0ZVRleHRSYW5n ZSl7dGhpcy5fblR5cGVBaGVhZERlbGF5SUQ9c2V0VGltZW91dChmdW5jdGlvbigp e3ZhciBGPUMudmFsdWUubGVuZ3RoO0EuX3VwZGF0ZVZhbHVlKEIpO3ZhciBHPUMu dmFsdWUubGVuZ3RoO0EuX3NlbGVjdFRleHQoQyxGLEcpO3ZhciBFPUMudmFsdWUu c3Vic3RyKEYsRyk7QS50eXBlQWhlYWRFdmVudC5maXJlKEEsRCxFKTt9LCh0aGlz LnR5cGVBaGVhZERlbGF5KjEwMDApKTt9fTtZQUhPTy53aWRnZXQuQXV0b0NvbXBs ZXRlLnByb3RvdHlwZS5fc2VsZWN0VGV4dD1mdW5jdGlvbihELEEsQil7aWYoRC5z ZXRTZWxlY3Rpb25SYW5nZSl7RC5zZXRTZWxlY3Rpb25SYW5nZShBLEIpO31lbHNl e2lmKEQuY3JlYXRlVGV4dFJhbmdlKXt2YXIgQz1ELmNyZWF0ZVRleHRSYW5nZSgp O0MubW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLEEpO0MubW92ZUVuZCgiY2hhcmFjdGVy IixCLUQudmFsdWUubGVuZ3RoKTtDLnNlbGVjdCgpO31lbHNle0Quc2VsZWN0KCk7 fX19O1lBSE9PLndpZGdldC5BdXRvQ29tcGxldGUucHJvdG90eXBlLl9leHRyYWN0 UXVlcnk9ZnVuY3Rpb24oSCl7dmFyIEM9dGhpcy5kZWxpbUNoYXIsRj0tMSxHLEUs Qj1DLmxlbmd0aC0xLEQ7Zm9yKDtCPj0wO0ItLSl7Rz1ILmxhc3RJbmRleE9mKENb Ql0pO2lmKEc+Ril7Rj1HO319aWYoQ1tCXT09IiAiKXtmb3IodmFyIEE9Qy5sZW5n dGgtMTtBPj0wO0EtLSl7aWYoSFtGLTFdPT1DW0FdKXtGLS07YnJlYWs7fX19aWYo Rj4tMSl7RT1GKzE7d2hpbGUoSC5jaGFyQXQoRSk9PSIgIil7RSs9MTt9RD1ILnN1 YnN0cmluZygwLEUpO0g9SC5zdWJzdHIoRSk7fWVsc2V7RD0iIjt9cmV0dXJue3By ZXZpb3VzOkQscXVlcnk6SH07fTtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLnBy b3RvdHlwZS5fdG9nZ2xlQ29udGFpbmVySGVscGVycz1mdW5jdGlvbihEKXt2YXIg RT10aGlzLl9lbENvbnRlbnQub2Zmc2V0V2lkdGgrInB4Ijt2YXIgQj10aGlzLl9l bENvbnRlbnQub2Zmc2V0SGVpZ2h0KyJweCI7aWYodGhpcy51c2VJRnJhbWUmJnRo aXMuX2VsSUZyYW1lKXt2YXIgQz10aGlzLl9lbElGcmFtZTtpZihEKXtDLnN0eWxl LndpZHRoPUU7Qy5zdHlsZS5oZWlnaHQ9QjtDLnN0eWxlLnBhZGRpbmc9IiI7fWVs c2V7Qy5zdHlsZS53aWR0aD0wO0Muc3R5bGUuaGVpZ2h0PTA7Qy5zdHlsZS5wYWRk aW5nPTA7fX1pZih0aGlzLnVzZVNoYWRvdyYmdGhpcy5fZWxTaGFkb3cpe3ZhciBB PXRoaXMuX2VsU2hhZG93O2lmKEQpe0Euc3R5bGUud2lkdGg9RTtBLnN0eWxlLmhl aWdodD1CO31lbHNle0Euc3R5bGUud2lkdGg9MDtBLnN0eWxlLmhlaWdodD0wO319 fTtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlwZS5fdG9nZ2xlQ29u dGFpbmVyPWZ1bmN0aW9uKEkpe3ZhciBEPXRoaXMuX2VsQ29udGFpbmVyO2lmKHRo aXMuYWx3YXlzU2hvd0NvbnRhaW5lciYmdGhpcy5fYkNvbnRhaW5lck9wZW4pe3Jl dHVybjt9aWYoIUkpe3RoaXMuX3RvZ2dsZUhpZ2hsaWdodCh0aGlzLl9lbEN1ckxp c3RJdGVtLCJmcm9tIik7dGhpcy5fbkRpc3BsYXllZEl0ZW1zPTA7dGhpcy5fc0N1 clF1ZXJ5PW51bGw7aWYodGhpcy5fZWxDb250ZW50LnN0eWxlLmRpc3BsYXk9PSJu b25lIil7cmV0dXJuO319dmFyIEE9dGhpcy5fb0FuaW07aWYoQSYmQS5nZXRFbCgp JiYodGhpcy5hbmltSG9yaXp8fHRoaXMuYW5pbVZlcnQpKXtpZihBLmlzQW5pbWF0 ZWQoKSl7QS5zdG9wKHRydWUpO312YXIgRz10aGlzLl9lbENvbnRlbnQuY2xvbmVO b2RlKHRydWUpO0QuYXBwZW5kQ2hpbGQoRyk7Ry5zdHlsZS50b3A9Ii05MDAwcHgi O0cuc3R5bGUud2lkdGg9IiI7Ry5zdHlsZS5oZWlnaHQ9IiI7Ry5zdHlsZS5kaXNw bGF5PSIiO3ZhciBGPUcub2Zmc2V0V2lkdGg7dmFyIEM9Ry5vZmZzZXRIZWlnaHQ7 dmFyIEI9KHRoaXMuYW5pbUhvcml6KT8wOkY7dmFyIEU9KHRoaXMuYW5pbVZlcnQp PzA6QztBLmF0dHJpYnV0ZXM9KEkpP3t3aWR0aDp7dG86Rn0saGVpZ2h0Ont0bzpD fX06e3dpZHRoOnt0bzpCfSxoZWlnaHQ6e3RvOkV9fTtpZihJJiYhdGhpcy5fYkNv bnRhaW5lck9wZW4pe3RoaXMuX2VsQ29udGVudC5zdHlsZS53aWR0aD1CKyJweCI7 dGhpcy5fZWxDb250ZW50LnN0eWxlLmhlaWdodD1FKyJweCI7fWVsc2V7dGhpcy5f ZWxDb250ZW50LnN0eWxlLndpZHRoPUYrInB4Ijt0aGlzLl9lbENvbnRlbnQuc3R5 bGUuaGVpZ2h0PUMrInB4Ijt9RC5yZW1vdmVDaGlsZChHKTtHPW51bGw7dmFyIEg9 dGhpczt2YXIgSj1mdW5jdGlvbigpe0Eub25Db21wbGV0ZS51bnN1YnNjcmliZUFs bCgpO2lmKEkpe0guX3RvZ2dsZUNvbnRhaW5lckhlbHBlcnModHJ1ZSk7SC5fYkNv bnRhaW5lck9wZW49STtILmNvbnRhaW5lckV4cGFuZEV2ZW50LmZpcmUoSCk7fWVs c2V7SC5fZWxDb250ZW50LnN0eWxlLmRpc3BsYXk9Im5vbmUiO0guX2JDb250YWlu ZXJPcGVuPUk7SC5jb250YWluZXJDb2xsYXBzZUV2ZW50LmZpcmUoSCk7fX07dGhp cy5fdG9nZ2xlQ29udGFpbmVySGVscGVycyhmYWxzZSk7dGhpcy5fZWxDb250ZW50 LnN0eWxlLmRpc3BsYXk9IiI7QS5vbkNvbXBsZXRlLnN1YnNjcmliZShKKTtBLmFu aW1hdGUoKTt9ZWxzZXtpZihJKXt0aGlzLl9lbENvbnRlbnQuc3R5bGUuZGlzcGxh eT0iIjt0aGlzLl90b2dnbGVDb250YWluZXJIZWxwZXJzKHRydWUpO3RoaXMuX2JD b250YWluZXJPcGVuPUk7dGhpcy5jb250YWluZXJFeHBhbmRFdmVudC5maXJlKHRo aXMpO31lbHNle3RoaXMuX3RvZ2dsZUNvbnRhaW5lckhlbHBlcnMoZmFsc2UpO3Ro aXMuX2VsQ29udGVudC5zdHlsZS5kaXNwbGF5PSJub25lIjt0aGlzLl9iQ29udGFp bmVyT3Blbj1JO3RoaXMuY29udGFpbmVyQ29sbGFwc2VFdmVudC5maXJlKHRoaXMp O319fTtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlwZS5fdG9nZ2xl SGlnaGxpZ2h0PWZ1bmN0aW9uKEEsQyl7aWYoQSl7dmFyIEI9dGhpcy5oaWdobGln aHRDbGFzc05hbWU7aWYodGhpcy5fZWxDdXJMaXN0SXRlbSl7WUFIT08udXRpbC5E b20ucmVtb3ZlQ2xhc3ModGhpcy5fZWxDdXJMaXN0SXRlbSxCKTt0aGlzLl9lbEN1 ckxpc3RJdGVtPW51bGw7fWlmKChDPT0idG8iKSYmQil7WUFIT08udXRpbC5Eb20u YWRkQ2xhc3MoQSxCKTt0aGlzLl9lbEN1ckxpc3RJdGVtPUE7fX19O1lBSE9PLndp ZGdldC5BdXRvQ29tcGxldGUucHJvdG90eXBlLl90b2dnbGVQcmVoaWdobGlnaHQ9 ZnVuY3Rpb24oQixDKXtpZihCPT10aGlzLl9lbEN1ckxpc3RJdGVtKXtyZXR1cm47 fXZhciBBPXRoaXMucHJlaGlnaGxpZ2h0Q2xhc3NOYW1lO2lmKChDPT0ibW91c2Vv dmVyIikmJkEpe1lBSE9PLnV0aWwuRG9tLmFkZENsYXNzKEIsQSk7fWVsc2V7WUFI T08udXRpbC5Eb20ucmVtb3ZlQ2xhc3MoQixBKTt9fTtZQUhPTy53aWRnZXQuQXV0 b0NvbXBsZXRlLnByb3RvdHlwZS5fdXBkYXRlVmFsdWU9ZnVuY3Rpb24oQyl7aWYo IXRoaXMuc3VwcHJlc3NJbnB1dFVwZGF0ZSl7dmFyIEY9dGhpcy5fZWxUZXh0Ym94 O3ZhciBFPSh0aGlzLmRlbGltQ2hhcik/KHRoaXMuZGVsaW1DaGFyWzBdfHx0aGlz LmRlbGltQ2hhcik6bnVsbDt2YXIgQj1DLl9zUmVzdWx0TWF0Y2g7dmFyIEQ9IiI7 aWYoRSl7RD10aGlzLl9zUGFzdFNlbGVjdGlvbnM7RCs9QitFO2lmKEUhPSIgIil7 RCs9IiAiO319ZWxzZXtEPUI7fUYudmFsdWU9RDtpZihGLnR5cGU9PSJ0ZXh0YXJl YSIpe0Yuc2Nyb2xsVG9wPUYuc2Nyb2xsSGVpZ2h0O312YXIgQT1GLnZhbHVlLmxl bmd0aDt0aGlzLl9zZWxlY3RUZXh0KEYsQSxBKTt0aGlzLl9lbEN1ckxpc3RJdGVt PUM7fX07WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZS5wcm90b3R5cGUuX3NlbGVj dEl0ZW09ZnVuY3Rpb24oQSl7dGhpcy5fYkl0ZW1TZWxlY3RlZD10cnVlO3RoaXMu X3VwZGF0ZVZhbHVlKEEpO3RoaXMuX3NQYXN0U2VsZWN0aW9ucz10aGlzLl9lbFRl eHRib3gudmFsdWU7CnRoaXMuX2NsZWFySW50ZXJ2YWwoKTt0aGlzLml0ZW1TZWxl Y3RFdmVudC5maXJlKHRoaXMsQSxBLl9vUmVzdWx0RGF0YSk7dGhpcy5fdG9nZ2xl Q29udGFpbmVyKGZhbHNlKTt9O1lBSE9PLndpZGdldC5BdXRvQ29tcGxldGUucHJv dG90eXBlLl9qdW1wU2VsZWN0aW9uPWZ1bmN0aW9uKCl7aWYodGhpcy5fZWxDdXJM aXN0SXRlbSl7dGhpcy5fc2VsZWN0SXRlbSh0aGlzLl9lbEN1ckxpc3RJdGVtKTt9 ZWxzZXt0aGlzLl90b2dnbGVDb250YWluZXIoZmFsc2UpO319O1lBSE9PLndpZGdl dC5BdXRvQ29tcGxldGUucHJvdG90eXBlLl9tb3ZlU2VsZWN0aW9uPWZ1bmN0aW9u KEcpe2lmKHRoaXMuX2JDb250YWluZXJPcGVuKXt2YXIgSD10aGlzLl9lbEN1ckxp c3RJdGVtLEQ9LTE7aWYoSCl7RD1ILl9uSXRlbUluZGV4O312YXIgRT0oRz09NDAp PyhEKzEpOihELTEpO2lmKEU8LTJ8fEU+PXRoaXMuX25EaXNwbGF5ZWRJdGVtcyl7 cmV0dXJuO31pZihIKXt0aGlzLl90b2dnbGVIaWdobGlnaHQoSCwiZnJvbSIpO3Ro aXMuaXRlbUFycm93RnJvbUV2ZW50LmZpcmUodGhpcyxIKTt9aWYoRT09LTEpe2lm KHRoaXMuZGVsaW1DaGFyKXt0aGlzLl9lbFRleHRib3gudmFsdWU9dGhpcy5fc1Bh c3RTZWxlY3Rpb25zK3RoaXMuX3NDdXJRdWVyeTt9ZWxzZXt0aGlzLl9lbFRleHRi b3gudmFsdWU9dGhpcy5fc0N1clF1ZXJ5O31yZXR1cm47fWlmKEU9PS0yKXt0aGlz Ll90b2dnbGVDb250YWluZXIoZmFsc2UpO3JldHVybjt9dmFyIEY9dGhpcy5fZWxM aXN0LmNoaWxkTm9kZXNbRV0sQj10aGlzLl9lbENvbnRlbnQsQz1ZQUhPTy51dGls LkRvbS5nZXRTdHlsZShCLCJvdmVyZmxvdyIpLEk9WUFIT08udXRpbC5Eb20uZ2V0 U3R5bGUoQiwib3ZlcmZsb3dZIiksQT0oKEM9PSJhdXRvIil8fChDPT0ic2Nyb2xs Iil8fChJPT0iYXV0byIpfHwoST09InNjcm9sbCIpKTtpZihBJiYoRT4tMSkmJihF PHRoaXMuX25EaXNwbGF5ZWRJdGVtcykpe2lmKEc9PTQwKXtpZigoRi5vZmZzZXRU b3ArRi5vZmZzZXRIZWlnaHQpPihCLnNjcm9sbFRvcCtCLm9mZnNldEhlaWdodCkp e0Iuc2Nyb2xsVG9wPShGLm9mZnNldFRvcCtGLm9mZnNldEhlaWdodCktQi5vZmZz ZXRIZWlnaHQ7fWVsc2V7aWYoKEYub2Zmc2V0VG9wK0Yub2Zmc2V0SGVpZ2h0KTxC LnNjcm9sbFRvcCl7Qi5zY3JvbGxUb3A9Ri5vZmZzZXRUb3A7fX19ZWxzZXtpZihG Lm9mZnNldFRvcDxCLnNjcm9sbFRvcCl7dGhpcy5fZWxDb250ZW50LnNjcm9sbFRv cD1GLm9mZnNldFRvcDt9ZWxzZXtpZihGLm9mZnNldFRvcD4oQi5zY3JvbGxUb3Ar Qi5vZmZzZXRIZWlnaHQpKXt0aGlzLl9lbENvbnRlbnQuc2Nyb2xsVG9wPShGLm9m ZnNldFRvcCtGLm9mZnNldEhlaWdodCktQi5vZmZzZXRIZWlnaHQ7fX19fXRoaXMu X3RvZ2dsZUhpZ2hsaWdodChGLCJ0byIpO3RoaXMuaXRlbUFycm93VG9FdmVudC5m aXJlKHRoaXMsRik7aWYodGhpcy50eXBlQWhlYWQpe3RoaXMuX3VwZGF0ZVZhbHVl KEYpO319fTtZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlwZS5fb25D b250YWluZXJNb3VzZW92ZXI9ZnVuY3Rpb24oQSxDKXt2YXIgRD1ZQUhPTy51dGls LkV2ZW50LmdldFRhcmdldChBKTt2YXIgQj1ELm5vZGVOYW1lLnRvTG93ZXJDYXNl KCk7d2hpbGUoRCYmKEIhPSJ0YWJsZSIpKXtzd2l0Y2goQil7Y2FzZSJib2R5Ijpy ZXR1cm47Y2FzZSJsaSI6aWYoQy5wcmVoaWdobGlnaHRDbGFzc05hbWUpe0MuX3Rv Z2dsZVByZWhpZ2hsaWdodChELCJtb3VzZW92ZXIiKTt9ZWxzZXtDLl90b2dnbGVI aWdobGlnaHQoRCwidG8iKTt9Qy5pdGVtTW91c2VPdmVyRXZlbnQuZmlyZShDLEQp O2JyZWFrO2Nhc2UiZGl2IjppZihZQUhPTy51dGlsLkRvbS5oYXNDbGFzcyhELCJ5 dWktYWMtY29udGFpbmVyIikpe0MuX2JPdmVyQ29udGFpbmVyPXRydWU7cmV0dXJu O31icmVhaztkZWZhdWx0OmJyZWFrO31EPUQucGFyZW50Tm9kZTtpZihEKXtCPUQu bm9kZU5hbWUudG9Mb3dlckNhc2UoKTt9fX07WUFIT08ud2lkZ2V0LkF1dG9Db21w bGV0ZS5wcm90b3R5cGUuX29uQ29udGFpbmVyTW91c2VvdXQ9ZnVuY3Rpb24oQSxD KXt2YXIgRD1ZQUhPTy51dGlsLkV2ZW50LmdldFRhcmdldChBKTt2YXIgQj1ELm5v ZGVOYW1lLnRvTG93ZXJDYXNlKCk7d2hpbGUoRCYmKEIhPSJ0YWJsZSIpKXtzd2l0 Y2goQil7Y2FzZSJib2R5IjpyZXR1cm47Y2FzZSJsaSI6aWYoQy5wcmVoaWdobGln aHRDbGFzc05hbWUpe0MuX3RvZ2dsZVByZWhpZ2hsaWdodChELCJtb3VzZW91dCIp O31lbHNle0MuX3RvZ2dsZUhpZ2hsaWdodChELCJmcm9tIik7fUMuaXRlbU1vdXNl T3V0RXZlbnQuZmlyZShDLEQpO2JyZWFrO2Nhc2UidWwiOkMuX3RvZ2dsZUhpZ2hs aWdodChDLl9lbEN1ckxpc3RJdGVtLCJ0byIpO2JyZWFrO2Nhc2UiZGl2IjppZihZ QUhPTy51dGlsLkRvbS5oYXNDbGFzcyhELCJ5dWktYWMtY29udGFpbmVyIikpe0Mu X2JPdmVyQ29udGFpbmVyPWZhbHNlO3JldHVybjt9YnJlYWs7ZGVmYXVsdDpicmVh azt9RD1ELnBhcmVudE5vZGU7aWYoRCl7Qj1ELm5vZGVOYW1lLnRvTG93ZXJDYXNl KCk7fX19O1lBSE9PLndpZGdldC5BdXRvQ29tcGxldGUucHJvdG90eXBlLl9vbkNv bnRhaW5lckNsaWNrPWZ1bmN0aW9uKEEsQyl7dmFyIEQ9WUFIT08udXRpbC5FdmVu dC5nZXRUYXJnZXQoQSk7dmFyIEI9RC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3do aWxlKEQmJihCIT0idGFibGUiKSl7c3dpdGNoKEIpe2Nhc2UiYm9keSI6cmV0dXJu O2Nhc2UibGkiOkMuX3RvZ2dsZUhpZ2hsaWdodChELCJ0byIpO0MuX3NlbGVjdEl0 ZW0oRCk7cmV0dXJuO2RlZmF1bHQ6YnJlYWs7fUQ9RC5wYXJlbnROb2RlO2lmKEQp e0I9RC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO319fTtZQUhPTy53aWRnZXQuQXV0 b0NvbXBsZXRlLnByb3RvdHlwZS5fb25Db250YWluZXJTY3JvbGw9ZnVuY3Rpb24o QSxCKXtCLl9mb2N1cygpO307WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZS5wcm90 b3R5cGUuX29uQ29udGFpbmVyUmVzaXplPWZ1bmN0aW9uKEEsQil7Qi5fdG9nZ2xl Q29udGFpbmVySGVscGVycyhCLl9iQ29udGFpbmVyT3Blbik7fTtZQUhPTy53aWRn ZXQuQXV0b0NvbXBsZXRlLnByb3RvdHlwZS5fb25UZXh0Ym94S2V5RG93bj1mdW5j dGlvbihBLEIpe3ZhciBDPUEua2V5Q29kZTtpZihCLl9uVHlwZUFoZWFkRGVsYXlJ RCE9LTEpe2NsZWFyVGltZW91dChCLl9uVHlwZUFoZWFkRGVsYXlJRCk7fXN3aXRj aChDKXtjYXNlIDk6aWYoIVlBSE9PLmVudi51YS5vcGVyYSYmKG5hdmlnYXRvci51 c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJtYWMiKT09LTEpfHwoWUFI T08uZW52LnVhLndlYmtpdD40MjApKXtpZihCLl9lbEN1ckxpc3RJdGVtKXtpZihC LmRlbGltQ2hhciYmKEIuX25LZXlDb2RlIT1DKSl7aWYoQi5fYkNvbnRhaW5lck9w ZW4pe1lBSE9PLnV0aWwuRXZlbnQuc3RvcEV2ZW50KEEpO319Qi5fc2VsZWN0SXRl bShCLl9lbEN1ckxpc3RJdGVtKTt9ZWxzZXtCLl90b2dnbGVDb250YWluZXIoZmFs c2UpO319YnJlYWs7Y2FzZSAxMzppZighWUFIT08uZW52LnVhLm9wZXJhJiYobmF2 aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIm1hYyIpPT0t MSl8fChZQUhPTy5lbnYudWEud2Via2l0PjQyMCkpe2lmKEIuX2VsQ3VyTGlzdEl0 ZW0pe2lmKEIuX25LZXlDb2RlIT1DKXtpZihCLl9iQ29udGFpbmVyT3Blbil7WUFI T08udXRpbC5FdmVudC5zdG9wRXZlbnQoQSk7fX1CLl9zZWxlY3RJdGVtKEIuX2Vs Q3VyTGlzdEl0ZW0pO31lbHNle0IuX3RvZ2dsZUNvbnRhaW5lcihmYWxzZSk7fX1i cmVhaztjYXNlIDI3OkIuX3RvZ2dsZUNvbnRhaW5lcihmYWxzZSk7cmV0dXJuO2Nh c2UgMzk6Qi5fanVtcFNlbGVjdGlvbigpO2JyZWFrO2Nhc2UgMzg6aWYoQi5fYkNv bnRhaW5lck9wZW4pe1lBSE9PLnV0aWwuRXZlbnQuc3RvcEV2ZW50KEEpO0IuX21v dmVTZWxlY3Rpb24oQyk7fWJyZWFrO2Nhc2UgNDA6aWYoQi5fYkNvbnRhaW5lck9w ZW4pe1lBSE9PLnV0aWwuRXZlbnQuc3RvcEV2ZW50KEEpO0IuX21vdmVTZWxlY3Rp b24oQyk7fWJyZWFrO2RlZmF1bHQ6Qi5fYkl0ZW1TZWxlY3RlZD1mYWxzZTtCLl90 b2dnbGVIaWdobGlnaHQoQi5fZWxDdXJMaXN0SXRlbSwiZnJvbSIpO0IudGV4dGJv eEtleUV2ZW50LmZpcmUoQixDKTticmVhazt9aWYoQz09PTE4KXtCLl9lbmFibGVJ bnRlcnZhbERldGVjdGlvbigpO31CLl9uS2V5Q29kZT1DO307WUFIT08ud2lkZ2V0 LkF1dG9Db21wbGV0ZS5wcm90b3R5cGUuX29uVGV4dGJveEtleVByZXNzPWZ1bmN0 aW9uKEEsQil7dmFyIEM9QS5rZXlDb2RlO2lmKFlBSE9PLmVudi51YS5vcGVyYXx8 KG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJtYWMi KSE9LTEpJiYoWUFIT08uZW52LnVhLndlYmtpdDw0MjApKXtzd2l0Y2goQyl7Y2Fz ZSA5OmlmKEIuX2JDb250YWluZXJPcGVuKXtpZihCLmRlbGltQ2hhcil7WUFIT08u dXRpbC5FdmVudC5zdG9wRXZlbnQoQSk7fWlmKEIuX2VsQ3VyTGlzdEl0ZW0pe0Iu X3NlbGVjdEl0ZW0oQi5fZWxDdXJMaXN0SXRlbSk7fWVsc2V7Qi5fdG9nZ2xlQ29u dGFpbmVyKGZhbHNlKTt9fWJyZWFrO2Nhc2UgMTM6aWYoQi5fYkNvbnRhaW5lck9w ZW4pe1lBSE9PLnV0aWwuRXZlbnQuc3RvcEV2ZW50KEEpO2lmKEIuX2VsQ3VyTGlz dEl0ZW0pe0IuX3NlbGVjdEl0ZW0oQi5fZWxDdXJMaXN0SXRlbSk7fWVsc2V7Qi5f dG9nZ2xlQ29udGFpbmVyKGZhbHNlKTt9fWJyZWFrO2RlZmF1bHQ6YnJlYWs7fX1l bHNle2lmKEM9PTIyOSl7Qi5fZW5hYmxlSW50ZXJ2YWxEZXRlY3Rpb24oKTt9fX07 WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZS5wcm90b3R5cGUuX29uVGV4dGJveEtl eVVwPWZ1bmN0aW9uKEEsQyl7dmFyIEI9dGhpcy52YWx1ZTtDLl9pbml0UHJvcHMo KTt2YXIgRD1BLmtleUNvZGU7aWYoQy5faXNJZ25vcmVLZXkoRCkpe3JldHVybjt9 aWYoQy5fbkRlbGF5SUQhPS0xKXtjbGVhclRpbWVvdXQoQy5fbkRlbGF5SUQpO31D Ll9uRGVsYXlJRD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Qy5fc2VuZFF1ZXJ5KEIp O30sKEMucXVlcnlEZWxheSoxMDAwKSk7fTtZQUhPTy53aWRnZXQuQXV0b0NvbXBs ZXRlLnByb3RvdHlwZS5fb25UZXh0Ym94Rm9jdXM9ZnVuY3Rpb24oQSxCKXtpZigh Qi5fYkZvY3VzZWQpe0IuX2VsVGV4dGJveC5zZXRBdHRyaWJ1dGUoImF1dG9jb21w bGV0ZSIsIm9mZiIpO0IuX2JGb2N1c2VkPXRydWU7Qi5fc0luaXRJbnB1dFZhbHVl PUIuX2VsVGV4dGJveC52YWx1ZTtCLnRleHRib3hGb2N1c0V2ZW50LmZpcmUoQik7 fX07WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZS5wcm90b3R5cGUuX29uVGV4dGJv eEJsdXI9ZnVuY3Rpb24oQSxDKXtpZighQy5fYk92ZXJDb250YWluZXJ8fChDLl9u S2V5Q29kZT09OSkpe2lmKCFDLl9iSXRlbVNlbGVjdGVkKXt2YXIgQj1DLl90ZXh0 TWF0Y2hlc09wdGlvbigpO2lmKCFDLl9iQ29udGFpbmVyT3Blbnx8KEMuX2JDb250 YWluZXJPcGVuJiYoQj09PW51bGwpKSl7aWYoQy5mb3JjZVNlbGVjdGlvbil7Qy5f Y2xlYXJTZWxlY3Rpb24oKTt9ZWxzZXtDLnVubWF0Y2hlZEl0ZW1TZWxlY3RFdmVu dC5maXJlKEMsQy5fc0N1clF1ZXJ5KTt9fWVsc2V7aWYoQy5mb3JjZVNlbGVjdGlv bil7Qy5fc2VsZWN0SXRlbShCKTt9fX1DLl9jbGVhckludGVydmFsKCk7Qy5fYkZv Y3VzZWQ9ZmFsc2U7aWYoQy5fc0luaXRJbnB1dFZhbHVlIT09Qy5fZWxUZXh0Ym94 LnZhbHVlKXtDLnRleHRib3hDaGFuZ2VFdmVudC5maXJlKEMpO31DLnRleHRib3hC bHVyRXZlbnQuZmlyZShDKTtDLl90b2dnbGVDb250YWluZXIoZmFsc2UpO31lbHNl e0MuX2ZvY3VzKCk7fX07WUFIT08ud2lkZ2V0LkF1dG9Db21wbGV0ZS5wcm90b3R5 cGUuX29uV2luZG93VW5sb2FkPWZ1bmN0aW9uKEEsQil7aWYoQiYmQi5fZWxUZXh0 Ym94JiZCLmFsbG93QnJvd3NlckF1dG9jb21wbGV0ZSl7Qi5fZWxUZXh0Ym94LnNl dEF0dHJpYnV0ZSgiYXV0b2NvbXBsZXRlIiwib24iKTt9fTtZQUhPTy53aWRnZXQu QXV0b0NvbXBsZXRlLnByb3RvdHlwZS5kb0JlZm9yZVNlbmRRdWVyeT1mdW5jdGlv bihBKXtyZXR1cm4gdGhpcy5nZW5lcmF0ZVJlcXVlc3QoQSk7Cn07WUFIT08ud2lk Z2V0LkF1dG9Db21wbGV0ZS5wcm90b3R5cGUuZ2V0TGlzdEl0ZW1zPWZ1bmN0aW9u KCl7dmFyIEM9W10sQj10aGlzLl9lbExpc3QuY2hpbGROb2Rlcztmb3IodmFyIEE9 Qi5sZW5ndGgtMTtBPj0wO0EtLSl7Q1tBXT1CW0FdO31yZXR1cm4gQzt9O1lBSE9P LndpZGdldC5BdXRvQ29tcGxldGUuX2Nsb25lT2JqZWN0PWZ1bmN0aW9uKEQpe2lm KCFZQUhPTy5sYW5nLmlzVmFsdWUoRCkpe3JldHVybiBEO312YXIgRj17fTtpZihZ QUhPTy5sYW5nLmlzRnVuY3Rpb24oRCkpe0Y9RDt9ZWxzZXtpZihZQUhPTy5sYW5n LmlzQXJyYXkoRCkpe3ZhciBFPVtdO2Zvcih2YXIgQz0wLEI9RC5sZW5ndGg7QzxC O0MrKyl7RVtDXT1ZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLl9jbG9uZU9iamVj dChEW0NdKTt9Rj1FO31lbHNle2lmKFlBSE9PLmxhbmcuaXNPYmplY3QoRCkpe2Zv cih2YXIgQSBpbiBEKXtpZihZQUhPTy5sYW5nLmhhc093blByb3BlcnR5KEQsQSkp e2lmKFlBSE9PLmxhbmcuaXNWYWx1ZShEW0FdKSYmWUFIT08ubGFuZy5pc09iamVj dChEW0FdKXx8WUFIT08ubGFuZy5pc0FycmF5KERbQV0pKXtGW0FdPVlBSE9PLndp ZGdldC5BdXRvQ29tcGxldGUuX2Nsb25lT2JqZWN0KERbQV0pO31lbHNle0ZbQV09 RFtBXTt9fX19ZWxzZXtGPUQ7fX19cmV0dXJuIEY7fTtZQUhPTy5yZWdpc3Rlcigi YXV0b2NvbXBsZXRlIixZQUhPTy53aWRnZXQuQXV0b0NvbXBsZXRlLHt2ZXJzaW9u OiIyLjcuMCIsYnVpbGQ6IjE3OTYifSk7LyoKQ29weXJpZ2h0IChjKSAyMDA5LCBZ YWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpDb2RlIGxpY2Vuc2VkIHVu ZGVyIHRoZSBCU0QgTGljZW5zZToKaHR0cDovL2RldmVsb3Blci55YWhvby5uZXQv eXVpL2xpY2Vuc2UudHh0CnZlcnNpb246IDIuNy4wCiovCihmdW5jdGlvbigpe1lB SE9PLnV0aWwuQ29uZmlnPWZ1bmN0aW9uKEQpe2lmKEQpe3RoaXMuaW5pdChEKTt9 fTt2YXIgQj1ZQUhPTy5sYW5nLEM9WUFIT08udXRpbC5DdXN0b21FdmVudCxBPVlB SE9PLnV0aWwuQ29uZmlnO0EuQ09ORklHX0NIQU5HRURfRVZFTlQ9ImNvbmZpZ0No YW5nZWQiO0EuQk9PTEVBTl9UWVBFPSJib29sZWFuIjtBLnByb3RvdHlwZT17b3du ZXI6bnVsbCxxdWV1ZUluUHJvZ3Jlc3M6ZmFsc2UsY29uZmlnOm51bGwsaW5pdGlh bENvbmZpZzpudWxsLGV2ZW50UXVldWU6bnVsbCxjb25maWdDaGFuZ2VkRXZlbnQ6 bnVsbCxpbml0OmZ1bmN0aW9uKEQpe3RoaXMub3duZXI9RDt0aGlzLmNvbmZpZ0No YW5nZWRFdmVudD10aGlzLmNyZWF0ZUV2ZW50KEEuQ09ORklHX0NIQU5HRURfRVZF TlQpO3RoaXMuY29uZmlnQ2hhbmdlZEV2ZW50LnNpZ25hdHVyZT1DLkxJU1Q7dGhp cy5xdWV1ZUluUHJvZ3Jlc3M9ZmFsc2U7dGhpcy5jb25maWc9e307dGhpcy5pbml0 aWFsQ29uZmlnPXt9O3RoaXMuZXZlbnRRdWV1ZT1bXTt9LGNoZWNrQm9vbGVhbjpm dW5jdGlvbihEKXtyZXR1cm4odHlwZW9mIEQ9PUEuQk9PTEVBTl9UWVBFKTt9LGNo ZWNrTnVtYmVyOmZ1bmN0aW9uKEQpe3JldHVybighaXNOYU4oRCkpO30sZmlyZUV2 ZW50OmZ1bmN0aW9uKEQsRil7dmFyIEU9dGhpcy5jb25maWdbRF07aWYoRSYmRS5l dmVudCl7RS5ldmVudC5maXJlKEYpO319LGFkZFByb3BlcnR5OmZ1bmN0aW9uKEUs RCl7RT1FLnRvTG93ZXJDYXNlKCk7dGhpcy5jb25maWdbRV09RDtELmV2ZW50PXRo aXMuY3JlYXRlRXZlbnQoRSx7c2NvcGU6dGhpcy5vd25lcn0pO0QuZXZlbnQuc2ln bmF0dXJlPUMuTElTVDtELmtleT1FO2lmKEQuaGFuZGxlcil7RC5ldmVudC5zdWJz Y3JpYmUoRC5oYW5kbGVyLHRoaXMub3duZXIpO310aGlzLnNldFByb3BlcnR5KEUs RC52YWx1ZSx0cnVlKTtpZighRC5zdXBwcmVzc0V2ZW50KXt0aGlzLnF1ZXVlUHJv cGVydHkoRSxELnZhbHVlKTt9fSxnZXRDb25maWc6ZnVuY3Rpb24oKXt2YXIgRD17 fSxGPXRoaXMuY29uZmlnLEcsRTtmb3IoRyBpbiBGKXtpZihCLmhhc093blByb3Bl cnR5KEYsRykpe0U9RltHXTtpZihFJiZFLmV2ZW50KXtEW0ddPUUudmFsdWU7fX19 cmV0dXJuIEQ7fSxnZXRQcm9wZXJ0eTpmdW5jdGlvbihEKXt2YXIgRT10aGlzLmNv bmZpZ1tELnRvTG93ZXJDYXNlKCldO2lmKEUmJkUuZXZlbnQpe3JldHVybiBFLnZh bHVlO31lbHNle3JldHVybiB1bmRlZmluZWQ7fX0scmVzZXRQcm9wZXJ0eTpmdW5j dGlvbihEKXtEPUQudG9Mb3dlckNhc2UoKTt2YXIgRT10aGlzLmNvbmZpZ1tEXTtp ZihFJiZFLmV2ZW50KXtpZih0aGlzLmluaXRpYWxDb25maWdbRF0mJiFCLmlzVW5k ZWZpbmVkKHRoaXMuaW5pdGlhbENvbmZpZ1tEXSkpe3RoaXMuc2V0UHJvcGVydHko RCx0aGlzLmluaXRpYWxDb25maWdbRF0pO3JldHVybiB0cnVlO319ZWxzZXtyZXR1 cm4gZmFsc2U7fX0sc2V0UHJvcGVydHk6ZnVuY3Rpb24oRSxHLEQpe3ZhciBGO0U9 RS50b0xvd2VyQ2FzZSgpO2lmKHRoaXMucXVldWVJblByb2dyZXNzJiYhRCl7dGhp cy5xdWV1ZVByb3BlcnR5KEUsRyk7cmV0dXJuIHRydWU7fWVsc2V7Rj10aGlzLmNv bmZpZ1tFXTtpZihGJiZGLmV2ZW50KXtpZihGLnZhbGlkYXRvciYmIUYudmFsaWRh dG9yKEcpKXtyZXR1cm4gZmFsc2U7fWVsc2V7Ri52YWx1ZT1HO2lmKCFEKXt0aGlz LmZpcmVFdmVudChFLEcpO3RoaXMuY29uZmlnQ2hhbmdlZEV2ZW50LmZpcmUoW0Us R10pO31yZXR1cm4gdHJ1ZTt9fWVsc2V7cmV0dXJuIGZhbHNlO319fSxxdWV1ZVBy b3BlcnR5OmZ1bmN0aW9uKFMsUCl7Uz1TLnRvTG93ZXJDYXNlKCk7dmFyIFI9dGhp cy5jb25maWdbU10sSz1mYWxzZSxKLEcsSCxJLE8sUSxGLE0sTixELEwsVCxFO2lm KFImJlIuZXZlbnQpe2lmKCFCLmlzVW5kZWZpbmVkKFApJiZSLnZhbGlkYXRvciYm IVIudmFsaWRhdG9yKFApKXtyZXR1cm4gZmFsc2U7fWVsc2V7aWYoIUIuaXNVbmRl ZmluZWQoUCkpe1IudmFsdWU9UDt9ZWxzZXtQPVIudmFsdWU7fUs9ZmFsc2U7Sj10 aGlzLmV2ZW50UXVldWUubGVuZ3RoO2ZvcihMPTA7TDxKO0wrKyl7Rz10aGlzLmV2 ZW50UXVldWVbTF07aWYoRyl7SD1HWzBdO0k9R1sxXTtpZihIPT1TKXt0aGlzLmV2 ZW50UXVldWVbTF09bnVsbDt0aGlzLmV2ZW50UXVldWUucHVzaChbUywoIUIuaXNV bmRlZmluZWQoUCk/UDpJKV0pO0s9dHJ1ZTticmVhazt9fX1pZighSyYmIUIuaXNV bmRlZmluZWQoUCkpe3RoaXMuZXZlbnRRdWV1ZS5wdXNoKFtTLFBdKTt9fWlmKFIu c3VwZXJjZWRlcyl7Tz1SLnN1cGVyY2VkZXMubGVuZ3RoO2ZvcihUPTA7VDxPO1Qr Kyl7UT1SLnN1cGVyY2VkZXNbVF07Rj10aGlzLmV2ZW50UXVldWUubGVuZ3RoO2Zv cihFPTA7RTxGO0UrKyl7TT10aGlzLmV2ZW50UXVldWVbRV07aWYoTSl7Tj1NWzBd O0Q9TVsxXTtpZihOPT1RLnRvTG93ZXJDYXNlKCkpe3RoaXMuZXZlbnRRdWV1ZS5w dXNoKFtOLERdKTt0aGlzLmV2ZW50UXVldWVbRV09bnVsbDticmVhazt9fX19fXJl dHVybiB0cnVlO31lbHNle3JldHVybiBmYWxzZTt9fSxyZWZpcmVFdmVudDpmdW5j dGlvbihEKXtEPUQudG9Mb3dlckNhc2UoKTt2YXIgRT10aGlzLmNvbmZpZ1tEXTtp ZihFJiZFLmV2ZW50JiYhQi5pc1VuZGVmaW5lZChFLnZhbHVlKSl7aWYodGhpcy5x dWV1ZUluUHJvZ3Jlc3Mpe3RoaXMucXVldWVQcm9wZXJ0eShEKTt9ZWxzZXt0aGlz LmZpcmVFdmVudChELEUudmFsdWUpO319fSxhcHBseUNvbmZpZzpmdW5jdGlvbihE LEcpe3ZhciBGLEU7aWYoRyl7RT17fTtmb3IoRiBpbiBEKXtpZihCLmhhc093blBy b3BlcnR5KEQsRikpe0VbRi50b0xvd2VyQ2FzZSgpXT1EW0ZdO319dGhpcy5pbml0 aWFsQ29uZmlnPUU7fWZvcihGIGluIEQpe2lmKEIuaGFzT3duUHJvcGVydHkoRCxG KSl7dGhpcy5xdWV1ZVByb3BlcnR5KEYsRFtGXSk7fX19LHJlZnJlc2g6ZnVuY3Rp b24oKXt2YXIgRDtmb3IoRCBpbiB0aGlzLmNvbmZpZyl7aWYoQi5oYXNPd25Qcm9w ZXJ0eSh0aGlzLmNvbmZpZyxEKSl7dGhpcy5yZWZpcmVFdmVudChEKTt9fX0sZmly ZVF1ZXVlOmZ1bmN0aW9uKCl7dmFyIEUsSCxELEcsRjt0aGlzLnF1ZXVlSW5Qcm9n cmVzcz10cnVlO2ZvcihFPTA7RTx0aGlzLmV2ZW50UXVldWUubGVuZ3RoO0UrKyl7 SD10aGlzLmV2ZW50UXVldWVbRV07aWYoSCl7RD1IWzBdO0c9SFsxXTtGPXRoaXMu Y29uZmlnW0RdO0YudmFsdWU9Rzt0aGlzLmV2ZW50UXVldWVbRV09bnVsbDt0aGlz LmZpcmVFdmVudChELEcpO319dGhpcy5xdWV1ZUluUHJvZ3Jlc3M9ZmFsc2U7dGhp cy5ldmVudFF1ZXVlPVtdO30sc3Vic2NyaWJlVG9Db25maWdFdmVudDpmdW5jdGlv bihFLEYsSCxEKXt2YXIgRz10aGlzLmNvbmZpZ1tFLnRvTG93ZXJDYXNlKCldO2lm KEcmJkcuZXZlbnQpe2lmKCFBLmFscmVhZHlTdWJzY3JpYmVkKEcuZXZlbnQsRixI KSl7Ry5ldmVudC5zdWJzY3JpYmUoRixILEQpO31yZXR1cm4gdHJ1ZTt9ZWxzZXty ZXR1cm4gZmFsc2U7fX0sdW5zdWJzY3JpYmVGcm9tQ29uZmlnRXZlbnQ6ZnVuY3Rp b24oRCxFLEcpe3ZhciBGPXRoaXMuY29uZmlnW0QudG9Mb3dlckNhc2UoKV07aWYo RiYmRi5ldmVudCl7cmV0dXJuIEYuZXZlbnQudW5zdWJzY3JpYmUoRSxHKTt9ZWxz ZXtyZXR1cm4gZmFsc2U7fX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXt2YXIgRD0iQ29u ZmlnIjtpZih0aGlzLm93bmVyKXtEKz0iIFsiK3RoaXMub3duZXIudG9TdHJpbmco KSsiXSI7fXJldHVybiBEO30sb3V0cHV0RXZlbnRRdWV1ZTpmdW5jdGlvbigpe3Zh ciBEPSIiLEcsRSxGPXRoaXMuZXZlbnRRdWV1ZS5sZW5ndGg7Zm9yKEU9MDtFPEY7 RSsrKXtHPXRoaXMuZXZlbnRRdWV1ZVtFXTtpZihHKXtEKz1HWzBdKyI9IitHWzFd KyIsICI7fX1yZXR1cm4gRDt9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgRT10aGlz LmNvbmZpZyxELEY7Zm9yKEQgaW4gRSl7aWYoQi5oYXNPd25Qcm9wZXJ0eShFLEQp KXtGPUVbRF07Ri5ldmVudC51bnN1YnNjcmliZUFsbCgpO0YuZXZlbnQ9bnVsbDt9 fXRoaXMuY29uZmlnQ2hhbmdlZEV2ZW50LnVuc3Vic2NyaWJlQWxsKCk7dGhpcy5j b25maWdDaGFuZ2VkRXZlbnQ9bnVsbDt0aGlzLm93bmVyPW51bGw7dGhpcy5jb25m aWc9bnVsbDt0aGlzLmluaXRpYWxDb25maWc9bnVsbDt0aGlzLmV2ZW50UXVldWU9 bnVsbDt9fTtBLmFscmVhZHlTdWJzY3JpYmVkPWZ1bmN0aW9uKEUsSCxJKXt2YXIg Rj1FLnN1YnNjcmliZXJzLmxlbmd0aCxELEc7aWYoRj4wKXtHPUYtMTtkb3tEPUUu c3Vic2NyaWJlcnNbR107aWYoRCYmRC5vYmo9PUkmJkQuZm49PUgpe3JldHVybiB0 cnVlO319d2hpbGUoRy0tKTt9cmV0dXJuIGZhbHNlO307WUFIT08ubGFuZy5hdWdt ZW50UHJvdG8oQSxZQUhPTy51dGlsLkV2ZW50UHJvdmlkZXIpO30oKSk7KGZ1bmN0 aW9uKCl7WUFIT08ud2lkZ2V0Lk1vZHVsZT1mdW5jdGlvbihSLFEpe2lmKFIpe3Ro aXMuaW5pdChSLFEpO31lbHNle319O3ZhciBGPVlBSE9PLnV0aWwuRG9tLEQ9WUFI T08udXRpbC5Db25maWcsTj1ZQUhPTy51dGlsLkV2ZW50LE09WUFIT08udXRpbC5D dXN0b21FdmVudCxHPVlBSE9PLndpZGdldC5Nb2R1bGUsST1ZQUhPTy5lbnYudWEs SCxQLE8sRSxBPXsiQkVGT1JFX0lOSVQiOiJiZWZvcmVJbml0IiwiSU5JVCI6Imlu aXQiLCJBUFBFTkQiOiJhcHBlbmQiLCJCRUZPUkVfUkVOREVSIjoiYmVmb3JlUmVu ZGVyIiwiUkVOREVSIjoicmVuZGVyIiwiQ0hBTkdFX0hFQURFUiI6ImNoYW5nZUhl YWRlciIsIkNIQU5HRV9CT0RZIjoiY2hhbmdlQm9keSIsIkNIQU5HRV9GT09URVIi OiJjaGFuZ2VGb290ZXIiLCJDSEFOR0VfQ09OVEVOVCI6ImNoYW5nZUNvbnRlbnQi LCJERVNUT1JZIjoiZGVzdHJveSIsIkJFRk9SRV9TSE9XIjoiYmVmb3JlU2hvdyIs IlNIT1ciOiJzaG93IiwiQkVGT1JFX0hJREUiOiJiZWZvcmVIaWRlIiwiSElERSI6 ImhpZGUifSxKPXsiVklTSUJMRSI6e2tleToidmlzaWJsZSIsdmFsdWU6dHJ1ZSx2 YWxpZGF0b3I6WUFIT08ubGFuZy5pc0Jvb2xlYW59LCJFRkZFQ1QiOntrZXk6ImVm ZmVjdCIsc3VwcHJlc3NFdmVudDp0cnVlLHN1cGVyY2VkZXM6WyJ2aXNpYmxlIl19 LCJNT05JVE9SX1JFU0laRSI6e2tleToibW9uaXRvcnJlc2l6ZSIsdmFsdWU6dHJ1 ZX0sIkFQUEVORF9UT19ET0NVTUVOVF9CT0RZIjp7a2V5OiJhcHBlbmR0b2RvY3Vt ZW50Ym9keSIsdmFsdWU6ZmFsc2V9fTtHLklNR19ST09UPW51bGw7Ry5JTUdfUk9P VF9TU0w9bnVsbDtHLkNTU19NT0RVTEU9Inl1aS1tb2R1bGUiO0cuQ1NTX0hFQURF Uj0iaGQiO0cuQ1NTX0JPRFk9ImJkIjtHLkNTU19GT09URVI9ImZ0IjtHLlJFU0la RV9NT05JVE9SX1NFQ1VSRV9VUkw9ImphdmFzY3JpcHQ6ZmFsc2U7IjtHLlJFU0la RV9NT05JVE9SX0JVRkZFUj0xO0cudGV4dFJlc2l6ZUV2ZW50PW5ldyBNKCJ0ZXh0 UmVzaXplIik7Ry5mb3JjZURvY3VtZW50UmVkcmF3PWZ1bmN0aW9uKCl7dmFyIFE9 ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O2lmKFEpe1EuY2xhc3NOYW1lKz0iICI7 US5jbGFzc05hbWU9WUFIT08ubGFuZy50cmltKFEuY2xhc3NOYW1lKTt9fTtmdW5j dGlvbiBMKCl7aWYoIUgpe0g9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7 SC5pbm5lckhUTUw9KCc8ZGl2IGNsYXNzPSInK0cuQ1NTX0hFQURFUisnIj48L2Rp dj4nKyc8ZGl2IGNsYXNzPSInK0cuQ1NTX0JPRFkrJyI+PC9kaXY+PGRpdiBjbGFz cz0iJytHLkNTU19GT09URVIrJyI+PC9kaXY+Jyk7UD1ILmZpcnN0Q2hpbGQ7Tz1Q Lm5leHRTaWJsaW5nO0U9Ty5uZXh0U2libGluZzt9cmV0dXJuIEg7fWZ1bmN0aW9u IEsoKXtpZighUCl7TCgpO31yZXR1cm4oUC5jbG9uZU5vZGUoZmFsc2UpKTt9ZnVu Y3Rpb24gQigpe2lmKCFPKXtMKCk7fXJldHVybihPLmNsb25lTm9kZShmYWxzZSkp O31mdW5jdGlvbiBDKCl7aWYoIUUpe0woKTt9cmV0dXJuKEUuY2xvbmVOb2RlKGZh bHNlKSk7fUcucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpHLGVsZW1lbnQ6bnVsbCxo ZWFkZXI6bnVsbCxib2R5Om51bGwsZm9vdGVyOm51bGwsaWQ6bnVsbCxpbWFnZVJv b3Q6Ry5JTUdfUk9PVCxpbml0RXZlbnRzOmZ1bmN0aW9uKCl7dmFyIFE9TS5MSVNU Owp0aGlzLmJlZm9yZUluaXRFdmVudD10aGlzLmNyZWF0ZUV2ZW50KEEuQkVGT1JF X0lOSVQpO3RoaXMuYmVmb3JlSW5pdEV2ZW50LnNpZ25hdHVyZT1RO3RoaXMuaW5p dEV2ZW50PXRoaXMuY3JlYXRlRXZlbnQoQS5JTklUKTt0aGlzLmluaXRFdmVudC5z aWduYXR1cmU9UTt0aGlzLmFwcGVuZEV2ZW50PXRoaXMuY3JlYXRlRXZlbnQoQS5B UFBFTkQpO3RoaXMuYXBwZW5kRXZlbnQuc2lnbmF0dXJlPVE7dGhpcy5iZWZvcmVS ZW5kZXJFdmVudD10aGlzLmNyZWF0ZUV2ZW50KEEuQkVGT1JFX1JFTkRFUik7dGhp cy5iZWZvcmVSZW5kZXJFdmVudC5zaWduYXR1cmU9UTt0aGlzLnJlbmRlckV2ZW50 PXRoaXMuY3JlYXRlRXZlbnQoQS5SRU5ERVIpO3RoaXMucmVuZGVyRXZlbnQuc2ln bmF0dXJlPVE7dGhpcy5jaGFuZ2VIZWFkZXJFdmVudD10aGlzLmNyZWF0ZUV2ZW50 KEEuQ0hBTkdFX0hFQURFUik7dGhpcy5jaGFuZ2VIZWFkZXJFdmVudC5zaWduYXR1 cmU9UTt0aGlzLmNoYW5nZUJvZHlFdmVudD10aGlzLmNyZWF0ZUV2ZW50KEEuQ0hB TkdFX0JPRFkpO3RoaXMuY2hhbmdlQm9keUV2ZW50LnNpZ25hdHVyZT1RO3RoaXMu Y2hhbmdlRm9vdGVyRXZlbnQ9dGhpcy5jcmVhdGVFdmVudChBLkNIQU5HRV9GT09U RVIpO3RoaXMuY2hhbmdlRm9vdGVyRXZlbnQuc2lnbmF0dXJlPVE7dGhpcy5jaGFu Z2VDb250ZW50RXZlbnQ9dGhpcy5jcmVhdGVFdmVudChBLkNIQU5HRV9DT05URU5U KTt0aGlzLmNoYW5nZUNvbnRlbnRFdmVudC5zaWduYXR1cmU9UTt0aGlzLmRlc3Ry b3lFdmVudD10aGlzLmNyZWF0ZUV2ZW50KEEuREVTVE9SWSk7dGhpcy5kZXN0cm95 RXZlbnQuc2lnbmF0dXJlPVE7dGhpcy5iZWZvcmVTaG93RXZlbnQ9dGhpcy5jcmVh dGVFdmVudChBLkJFRk9SRV9TSE9XKTt0aGlzLmJlZm9yZVNob3dFdmVudC5zaWdu YXR1cmU9UTt0aGlzLnNob3dFdmVudD10aGlzLmNyZWF0ZUV2ZW50KEEuU0hPVyk7 dGhpcy5zaG93RXZlbnQuc2lnbmF0dXJlPVE7dGhpcy5iZWZvcmVIaWRlRXZlbnQ9 dGhpcy5jcmVhdGVFdmVudChBLkJFRk9SRV9ISURFKTt0aGlzLmJlZm9yZUhpZGVF dmVudC5zaWduYXR1cmU9UTt0aGlzLmhpZGVFdmVudD10aGlzLmNyZWF0ZUV2ZW50 KEEuSElERSk7dGhpcy5oaWRlRXZlbnQuc2lnbmF0dXJlPVE7fSxwbGF0Zm9ybTpm dW5jdGlvbigpe3ZhciBRPW5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2Uo KTtpZihRLmluZGV4T2YoIndpbmRvd3MiKSE9LTF8fFEuaW5kZXhPZigid2luMzIi KSE9LTEpe3JldHVybiJ3aW5kb3dzIjt9ZWxzZXtpZihRLmluZGV4T2YoIm1hY2lu dG9zaCIpIT0tMSl7cmV0dXJuIm1hYyI7fWVsc2V7cmV0dXJuIGZhbHNlO319fSgp LGJyb3dzZXI6ZnVuY3Rpb24oKXt2YXIgUT1uYXZpZ2F0b3IudXNlckFnZW50LnRv TG93ZXJDYXNlKCk7aWYoUS5pbmRleE9mKCJvcGVyYSIpIT0tMSl7cmV0dXJuIm9w ZXJhIjt9ZWxzZXtpZihRLmluZGV4T2YoIm1zaWUgNyIpIT0tMSl7cmV0dXJuImll NyI7fWVsc2V7aWYoUS5pbmRleE9mKCJtc2llIikhPS0xKXtyZXR1cm4iaWUiO31l bHNle2lmKFEuaW5kZXhPZigic2FmYXJpIikhPS0xKXtyZXR1cm4ic2FmYXJpIjt9 ZWxzZXtpZihRLmluZGV4T2YoImdlY2tvIikhPS0xKXtyZXR1cm4iZ2Vja28iO31l bHNle3JldHVybiBmYWxzZTt9fX19fX0oKSxpc1NlY3VyZTpmdW5jdGlvbigpe2lm KHdpbmRvdy5sb2NhdGlvbi5ocmVmLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiaHR0 cHMiKT09PTApe3JldHVybiB0cnVlO31lbHNle3JldHVybiBmYWxzZTt9fSgpLGlu aXREZWZhdWx0Q29uZmlnOmZ1bmN0aW9uKCl7dGhpcy5jZmcuYWRkUHJvcGVydHko Si5WSVNJQkxFLmtleSx7aGFuZGxlcjp0aGlzLmNvbmZpZ1Zpc2libGUsdmFsdWU6 Si5WSVNJQkxFLnZhbHVlLHZhbGlkYXRvcjpKLlZJU0lCTEUudmFsaWRhdG9yfSk7 dGhpcy5jZmcuYWRkUHJvcGVydHkoSi5FRkZFQ1Qua2V5LHtzdXBwcmVzc0V2ZW50 OkouRUZGRUNULnN1cHByZXNzRXZlbnQsc3VwZXJjZWRlczpKLkVGRkVDVC5zdXBl cmNlZGVzfSk7dGhpcy5jZmcuYWRkUHJvcGVydHkoSi5NT05JVE9SX1JFU0laRS5r ZXkse2hhbmRsZXI6dGhpcy5jb25maWdNb25pdG9yUmVzaXplLHZhbHVlOkouTU9O SVRPUl9SRVNJWkUudmFsdWV9KTt0aGlzLmNmZy5hZGRQcm9wZXJ0eShKLkFQUEVO RF9UT19ET0NVTUVOVF9CT0RZLmtleSx7dmFsdWU6Si5BUFBFTkRfVE9fRE9DVU1F TlRfQk9EWS52YWx1ZX0pO30saW5pdDpmdW5jdGlvbihWLFUpe3ZhciBTLFc7dGhp cy5pbml0RXZlbnRzKCk7dGhpcy5iZWZvcmVJbml0RXZlbnQuZmlyZShHKTt0aGlz LmNmZz1uZXcgRCh0aGlzKTtpZih0aGlzLmlzU2VjdXJlKXt0aGlzLmltYWdlUm9v dD1HLklNR19ST09UX1NTTDt9aWYodHlwZW9mIFY9PSJzdHJpbmciKXtTPVY7Vj1k b2N1bWVudC5nZXRFbGVtZW50QnlJZChWKTtpZighVil7Vj0oTCgpKS5jbG9uZU5v ZGUoZmFsc2UpO1YuaWQ9Uzt9fXRoaXMuaWQ9Ri5nZW5lcmF0ZUlkKFYpO3RoaXMu ZWxlbWVudD1WO1c9dGhpcy5lbGVtZW50LmZpcnN0Q2hpbGQ7aWYoVyl7dmFyIFI9 ZmFsc2UsUT1mYWxzZSxUPWZhbHNlO2Rve2lmKDE9PVcubm9kZVR5cGUpe2lmKCFS JiZGLmhhc0NsYXNzKFcsRy5DU1NfSEVBREVSKSl7dGhpcy5oZWFkZXI9VztSPXRy dWU7fWVsc2V7aWYoIVEmJkYuaGFzQ2xhc3MoVyxHLkNTU19CT0RZKSl7dGhpcy5i b2R5PVc7UT10cnVlO31lbHNle2lmKCFUJiZGLmhhc0NsYXNzKFcsRy5DU1NfRk9P VEVSKSl7dGhpcy5mb290ZXI9VztUPXRydWU7fX19fX13aGlsZSgoVz1XLm5leHRT aWJsaW5nKSk7fXRoaXMuaW5pdERlZmF1bHRDb25maWcoKTtGLmFkZENsYXNzKHRo aXMuZWxlbWVudCxHLkNTU19NT0RVTEUpO2lmKFUpe3RoaXMuY2ZnLmFwcGx5Q29u ZmlnKFUsdHJ1ZSk7fWlmKCFELmFscmVhZHlTdWJzY3JpYmVkKHRoaXMucmVuZGVy RXZlbnQsdGhpcy5jZmcuZmlyZVF1ZXVlLHRoaXMuY2ZnKSl7dGhpcy5yZW5kZXJF dmVudC5zdWJzY3JpYmUodGhpcy5jZmcuZmlyZVF1ZXVlLHRoaXMuY2ZnLHRydWUp O310aGlzLmluaXRFdmVudC5maXJlKEcpO30saW5pdFJlc2l6ZU1vbml0b3I6ZnVu Y3Rpb24oKXt2YXIgUj0oSS5nZWNrbyYmdGhpcy5wbGF0Zm9ybT09IndpbmRvd3Mi KTtpZihSKXt2YXIgUT10aGlzO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtRLl9pbml0 UmVzaXplTW9uaXRvcigpO30sMCk7fWVsc2V7dGhpcy5faW5pdFJlc2l6ZU1vbml0 b3IoKTt9fSxfaW5pdFJlc2l6ZU1vbml0b3I6ZnVuY3Rpb24oKXt2YXIgUSxTLFU7 ZnVuY3Rpb24gVygpe0cudGV4dFJlc2l6ZUV2ZW50LmZpcmUoKTt9aWYoIUkub3Bl cmEpe1M9Ri5nZXQoIl95dWlSZXNpemVNb25pdG9yIik7dmFyIFY9dGhpcy5fc3Vw cG9ydHNDV1Jlc2l6ZSgpO2lmKCFTKXtTPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo ImlmcmFtZSIpO2lmKHRoaXMuaXNTZWN1cmUmJkcuUkVTSVpFX01PTklUT1JfU0VD VVJFX1VSTCYmSS5pZSl7Uy5zcmM9Ry5SRVNJWkVfTU9OSVRPUl9TRUNVUkVfVVJM O31pZighVil7VT1bIjxodG1sPjxoZWFkPjxzY3JpcHQgIiwndHlwZT0idGV4dC9q YXZhc2NyaXB0Ij4nLCJ3aW5kb3cub25yZXNpemU9ZnVuY3Rpb24oKXt3aW5kb3cu cGFyZW50LiIsIllBSE9PLndpZGdldC5Nb2R1bGUudGV4dFJlc2l6ZUV2ZW50LiIs ImZpcmUoKTt9OzwiLCIvc2NyaXB0PjwvaGVhZD4iLCI8Ym9keT48L2JvZHk+PC9o dG1sPiJdLmpvaW4oIiIpO1Muc3JjPSJkYXRhOnRleHQvaHRtbDtjaGFyc2V0PXV0 Zi04LCIrZW5jb2RlVVJJQ29tcG9uZW50KFUpO31TLmlkPSJfeXVpUmVzaXplTW9u aXRvciI7Uy50aXRsZT0iVGV4dCBSZXNpemUgTW9uaXRvciI7Uy5zdHlsZS5wb3Np dGlvbj0iYWJzb2x1dGUiO1Muc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIjt2YXIg Uj1kb2N1bWVudC5ib2R5LFQ9Ui5maXJzdENoaWxkO2lmKFQpe1IuaW5zZXJ0QmVm b3JlKFMsVCk7fWVsc2V7Ui5hcHBlbmRDaGlsZChTKTt9Uy5zdHlsZS53aWR0aD0i MmVtIjtTLnN0eWxlLmhlaWdodD0iMmVtIjtTLnN0eWxlLnRvcD0oLTEqKFMub2Zm c2V0SGVpZ2h0K0cuUkVTSVpFX01PTklUT1JfQlVGRkVSKSkrInB4IjtTLnN0eWxl LmxlZnQ9IjAiO1Muc3R5bGUuYm9yZGVyV2lkdGg9IjAiO1Muc3R5bGUudmlzaWJp bGl0eT0idmlzaWJsZSI7aWYoSS53ZWJraXQpe1E9Uy5jb250ZW50V2luZG93LmRv Y3VtZW50O1Eub3BlbigpO1EuY2xvc2UoKTt9fWlmKFMmJlMuY29udGVudFdpbmRv dyl7Ry50ZXh0UmVzaXplRXZlbnQuc3Vic2NyaWJlKHRoaXMub25Eb21SZXNpemUs dGhpcyx0cnVlKTtpZighRy50ZXh0UmVzaXplSW5pdGlhbGl6ZWQpe2lmKFYpe2lm KCFOLm9uKFMuY29udGVudFdpbmRvdywicmVzaXplIixXKSl7Ti5vbihTLCJyZXNp emUiLFcpO319Ry50ZXh0UmVzaXplSW5pdGlhbGl6ZWQ9dHJ1ZTt9dGhpcy5yZXNp emVNb25pdG9yPVM7fX19LF9zdXBwb3J0c0NXUmVzaXplOmZ1bmN0aW9uKCl7dmFy IFE9dHJ1ZTtpZihJLmdlY2tvJiZJLmdlY2tvPD0xLjgpe1E9ZmFsc2U7fXJldHVy biBRO30sb25Eb21SZXNpemU6ZnVuY3Rpb24oUyxSKXt2YXIgUT0tMSoodGhpcy5y ZXNpemVNb25pdG9yLm9mZnNldEhlaWdodCtHLlJFU0laRV9NT05JVE9SX0JVRkZF Uik7dGhpcy5yZXNpemVNb25pdG9yLnN0eWxlLnRvcD1RKyJweCI7dGhpcy5yZXNp emVNb25pdG9yLnN0eWxlLmxlZnQ9IjAiO30sc2V0SGVhZGVyOmZ1bmN0aW9uKFIp e3ZhciBRPXRoaXMuaGVhZGVyfHwodGhpcy5oZWFkZXI9SygpKTtpZihSLm5vZGVO YW1lKXtRLmlubmVySFRNTD0iIjtRLmFwcGVuZENoaWxkKFIpO31lbHNle1EuaW5u ZXJIVE1MPVI7fXRoaXMuY2hhbmdlSGVhZGVyRXZlbnQuZmlyZShSKTt0aGlzLmNo YW5nZUNvbnRlbnRFdmVudC5maXJlKCk7fSxhcHBlbmRUb0hlYWRlcjpmdW5jdGlv bihSKXt2YXIgUT10aGlzLmhlYWRlcnx8KHRoaXMuaGVhZGVyPUsoKSk7US5hcHBl bmRDaGlsZChSKTt0aGlzLmNoYW5nZUhlYWRlckV2ZW50LmZpcmUoUik7dGhpcy5j aGFuZ2VDb250ZW50RXZlbnQuZmlyZSgpO30sc2V0Qm9keTpmdW5jdGlvbihSKXt2 YXIgUT10aGlzLmJvZHl8fCh0aGlzLmJvZHk9QigpKTtpZihSLm5vZGVOYW1lKXtR LmlubmVySFRNTD0iIjtRLmFwcGVuZENoaWxkKFIpO31lbHNle1EuaW5uZXJIVE1M PVI7fXRoaXMuY2hhbmdlQm9keUV2ZW50LmZpcmUoUik7dGhpcy5jaGFuZ2VDb250 ZW50RXZlbnQuZmlyZSgpO30sYXBwZW5kVG9Cb2R5OmZ1bmN0aW9uKFIpe3ZhciBR PXRoaXMuYm9keXx8KHRoaXMuYm9keT1CKCkpO1EuYXBwZW5kQ2hpbGQoUik7dGhp cy5jaGFuZ2VCb2R5RXZlbnQuZmlyZShSKTt0aGlzLmNoYW5nZUNvbnRlbnRFdmVu dC5maXJlKCk7fSxzZXRGb290ZXI6ZnVuY3Rpb24oUil7dmFyIFE9dGhpcy5mb290 ZXJ8fCh0aGlzLmZvb3Rlcj1DKCkpO2lmKFIubm9kZU5hbWUpe1EuaW5uZXJIVE1M PSIiO1EuYXBwZW5kQ2hpbGQoUik7fWVsc2V7US5pbm5lckhUTUw9Ujt9dGhpcy5j aGFuZ2VGb290ZXJFdmVudC5maXJlKFIpO3RoaXMuY2hhbmdlQ29udGVudEV2ZW50 LmZpcmUoKTt9LGFwcGVuZFRvRm9vdGVyOmZ1bmN0aW9uKFIpe3ZhciBRPXRoaXMu Zm9vdGVyfHwodGhpcy5mb290ZXI9QygpKTtRLmFwcGVuZENoaWxkKFIpO3RoaXMu Y2hhbmdlRm9vdGVyRXZlbnQuZmlyZShSKTt0aGlzLmNoYW5nZUNvbnRlbnRFdmVu dC5maXJlKCk7fSxyZW5kZXI6ZnVuY3Rpb24oUyxRKXt2YXIgVD10aGlzLFU7ZnVu Y3Rpb24gUihWKXtpZih0eXBlb2YgVj09InN0cmluZyIpe1Y9ZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoVik7fWlmKFYpe1QuX2FkZFRvUGFyZW50KFYsVC5lbGVtZW50 KTtULmFwcGVuZEV2ZW50LmZpcmUoKTt9fXRoaXMuYmVmb3JlUmVuZGVyRXZlbnQu ZmlyZSgpO2lmKCFRKXtRPXRoaXMuZWxlbWVudDt9aWYoUyl7UihTKTt9ZWxzZXtp ZighRi5pbkRvY3VtZW50KHRoaXMuZWxlbWVudCkpe3JldHVybiBmYWxzZTt9fWlm KHRoaXMuaGVhZGVyJiYhRi5pbkRvY3VtZW50KHRoaXMuaGVhZGVyKSl7VT1RLmZp cnN0Q2hpbGQ7CmlmKFUpe1EuaW5zZXJ0QmVmb3JlKHRoaXMuaGVhZGVyLFUpO31l bHNle1EuYXBwZW5kQ2hpbGQodGhpcy5oZWFkZXIpO319aWYodGhpcy5ib2R5JiYh Ri5pbkRvY3VtZW50KHRoaXMuYm9keSkpe2lmKHRoaXMuZm9vdGVyJiZGLmlzQW5j ZXN0b3IodGhpcy5tb2R1bGVFbGVtZW50LHRoaXMuZm9vdGVyKSl7US5pbnNlcnRC ZWZvcmUodGhpcy5ib2R5LHRoaXMuZm9vdGVyKTt9ZWxzZXtRLmFwcGVuZENoaWxk KHRoaXMuYm9keSk7fX1pZih0aGlzLmZvb3RlciYmIUYuaW5Eb2N1bWVudCh0aGlz LmZvb3Rlcikpe1EuYXBwZW5kQ2hpbGQodGhpcy5mb290ZXIpO310aGlzLnJlbmRl ckV2ZW50LmZpcmUoKTtyZXR1cm4gdHJ1ZTt9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt2 YXIgUTtpZih0aGlzLmVsZW1lbnQpe04ucHVyZ2VFbGVtZW50KHRoaXMuZWxlbWVu dCx0cnVlKTtRPXRoaXMuZWxlbWVudC5wYXJlbnROb2RlO31pZihRKXtRLnJlbW92 ZUNoaWxkKHRoaXMuZWxlbWVudCk7fXRoaXMuZWxlbWVudD1udWxsO3RoaXMuaGVh ZGVyPW51bGw7dGhpcy5ib2R5PW51bGw7dGhpcy5mb290ZXI9bnVsbDtHLnRleHRS ZXNpemVFdmVudC51bnN1YnNjcmliZSh0aGlzLm9uRG9tUmVzaXplLHRoaXMpO3Ro aXMuY2ZnLmRlc3Ryb3koKTt0aGlzLmNmZz1udWxsO3RoaXMuZGVzdHJveUV2ZW50 LmZpcmUoKTt9LHNob3c6ZnVuY3Rpb24oKXt0aGlzLmNmZy5zZXRQcm9wZXJ0eSgi dmlzaWJsZSIsdHJ1ZSk7fSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy5jZmcuc2V0UHJv cGVydHkoInZpc2libGUiLGZhbHNlKTt9LGNvbmZpZ1Zpc2libGU6ZnVuY3Rpb24o UixRLFMpe3ZhciBUPVFbMF07aWYoVCl7dGhpcy5iZWZvcmVTaG93RXZlbnQuZmly ZSgpO0Yuc2V0U3R5bGUodGhpcy5lbGVtZW50LCJkaXNwbGF5IiwiYmxvY2siKTt0 aGlzLnNob3dFdmVudC5maXJlKCk7fWVsc2V7dGhpcy5iZWZvcmVIaWRlRXZlbnQu ZmlyZSgpO0Yuc2V0U3R5bGUodGhpcy5lbGVtZW50LCJkaXNwbGF5Iiwibm9uZSIp O3RoaXMuaGlkZUV2ZW50LmZpcmUoKTt9fSxjb25maWdNb25pdG9yUmVzaXplOmZ1 bmN0aW9uKFMsUixUKXt2YXIgUT1SWzBdO2lmKFEpe3RoaXMuaW5pdFJlc2l6ZU1v bml0b3IoKTt9ZWxzZXtHLnRleHRSZXNpemVFdmVudC51bnN1YnNjcmliZSh0aGlz Lm9uRG9tUmVzaXplLHRoaXMsdHJ1ZSk7dGhpcy5yZXNpemVNb25pdG9yPW51bGw7 fX0sX2FkZFRvUGFyZW50OmZ1bmN0aW9uKFEsUil7aWYoIXRoaXMuY2ZnLmdldFBy b3BlcnR5KCJhcHBlbmR0b2RvY3VtZW50Ym9keSIpJiZRPT09ZG9jdW1lbnQuYm9k eSYmUS5maXJzdENoaWxkKXtRLmluc2VydEJlZm9yZShSLFEuZmlyc3RDaGlsZCk7 fWVsc2V7US5hcHBlbmRDaGlsZChSKTt9fSx0b1N0cmluZzpmdW5jdGlvbigpe3Jl dHVybiJNb2R1bGUgIit0aGlzLmlkO319O1lBSE9PLmxhbmcuYXVnbWVudFByb3Rv KEcsWUFIT08udXRpbC5FdmVudFByb3ZpZGVyKTt9KCkpOyhmdW5jdGlvbigpe1lB SE9PLndpZGdldC5PdmVybGF5PWZ1bmN0aW9uKFAsTyl7WUFIT08ud2lkZ2V0Lk92 ZXJsYXkuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsUCxPKTt9O3Zh ciBJPVlBSE9PLmxhbmcsTT1ZQUhPTy51dGlsLkN1c3RvbUV2ZW50LEc9WUFIT08u d2lkZ2V0Lk1vZHVsZSxOPVlBSE9PLnV0aWwuRXZlbnQsRj1ZQUhPTy51dGlsLkRv bSxEPVlBSE9PLnV0aWwuQ29uZmlnLEs9WUFIT08uZW52LnVhLEI9WUFIT08ud2lk Z2V0Lk92ZXJsYXksSD0ic3Vic2NyaWJlIixFPSJ1bnN1YnNjcmliZSIsQz0iY29u dGFpbmVkIixKLEE9eyJCRUZPUkVfTU9WRSI6ImJlZm9yZU1vdmUiLCJNT1ZFIjoi bW92ZSJ9LEw9eyJYIjp7a2V5OiJ4Iix2YWxpZGF0b3I6SS5pc051bWJlcixzdXBw cmVzc0V2ZW50OnRydWUsc3VwZXJjZWRlczpbImlmcmFtZSJdfSwiWSI6e2tleToi eSIsdmFsaWRhdG9yOkkuaXNOdW1iZXIsc3VwcHJlc3NFdmVudDp0cnVlLHN1cGVy Y2VkZXM6WyJpZnJhbWUiXX0sIlhZIjp7a2V5OiJ4eSIsc3VwcHJlc3NFdmVudDp0 cnVlLHN1cGVyY2VkZXM6WyJpZnJhbWUiXX0sIkNPTlRFWFQiOntrZXk6ImNvbnRl eHQiLHN1cHByZXNzRXZlbnQ6dHJ1ZSxzdXBlcmNlZGVzOlsiaWZyYW1lIl19LCJG SVhFRF9DRU5URVIiOntrZXk6ImZpeGVkY2VudGVyIix2YWx1ZTpmYWxzZSxzdXBl cmNlZGVzOlsiaWZyYW1lIiwidmlzaWJsZSJdfSwiV0lEVEgiOntrZXk6IndpZHRo IixzdXBwcmVzc0V2ZW50OnRydWUsc3VwZXJjZWRlczpbImNvbnRleHQiLCJmaXhl ZGNlbnRlciIsImlmcmFtZSJdfSwiSEVJR0hUIjp7a2V5OiJoZWlnaHQiLHN1cHBy ZXNzRXZlbnQ6dHJ1ZSxzdXBlcmNlZGVzOlsiY29udGV4dCIsImZpeGVkY2VudGVy IiwiaWZyYW1lIl19LCJBVVRPX0ZJTExfSEVJR0hUIjp7a2V5OiJhdXRvZmlsbGhl aWdodCIsc3VwZXJjZWRlczpbImhlaWdodCJdLHZhbHVlOiJib2R5In0sIlpJTkRF WCI6e2tleToiemluZGV4Iix2YWx1ZTpudWxsfSwiQ09OU1RSQUlOX1RPX1ZJRVdQ T1JUIjp7a2V5OiJjb25zdHJhaW50b3ZpZXdwb3J0Iix2YWx1ZTpmYWxzZSx2YWxp ZGF0b3I6SS5pc0Jvb2xlYW4sc3VwZXJjZWRlczpbImlmcmFtZSIsIngiLCJ5Iiwi eHkiXX0sIklGUkFNRSI6e2tleToiaWZyYW1lIix2YWx1ZTooSy5pZT09Nj90cnVl OmZhbHNlKSx2YWxpZGF0b3I6SS5pc0Jvb2xlYW4sc3VwZXJjZWRlczpbInppbmRl eCJdfSwiUFJFVkVOVF9DT05URVhUX09WRVJMQVAiOntrZXk6InByZXZlbnRjb250 ZXh0b3ZlcmxhcCIsdmFsdWU6ZmFsc2UsdmFsaWRhdG9yOkkuaXNCb29sZWFuLHN1 cGVyY2VkZXM6WyJjb25zdHJhaW50b3ZpZXdwb3J0Il19fTtCLklGUkFNRV9TUkM9 ImphdmFzY3JpcHQ6ZmFsc2U7IjtCLklGUkFNRV9PRkZTRVQ9MztCLlZJRVdQT1JU X09GRlNFVD0xMDtCLlRPUF9MRUZUPSJ0bCI7Qi5UT1BfUklHSFQ9InRyIjtCLkJP VFRPTV9MRUZUPSJibCI7Qi5CT1RUT01fUklHSFQ9ImJyIjtCLkNTU19PVkVSTEFZ PSJ5dWktb3ZlcmxheSI7Qi5TVERfTU9EX1JFPS9eXHMqPyhib2R5fGZvb3Rlcnxo ZWFkZXIpXHMqPyQvaTtCLndpbmRvd1Njcm9sbEV2ZW50PW5ldyBNKCJ3aW5kb3dT Y3JvbGwiKTtCLndpbmRvd1Jlc2l6ZUV2ZW50PW5ldyBNKCJ3aW5kb3dSZXNpemUi KTtCLndpbmRvd1Njcm9sbEhhbmRsZXI9ZnVuY3Rpb24oUCl7dmFyIE89Ti5nZXRU YXJnZXQoUCk7aWYoIU98fE89PT13aW5kb3d8fE89PT13aW5kb3cuZG9jdW1lbnQp e2lmKEsuaWUpe2lmKCF3aW5kb3cuc2Nyb2xsRW5kKXt3aW5kb3cuc2Nyb2xsRW5k PS0xO31jbGVhclRpbWVvdXQod2luZG93LnNjcm9sbEVuZCk7d2luZG93LnNjcm9s bEVuZD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Qi53aW5kb3dTY3JvbGxFdmVudC5m aXJlKCk7fSwxKTt9ZWxzZXtCLndpbmRvd1Njcm9sbEV2ZW50LmZpcmUoKTt9fX07 Qi53aW5kb3dSZXNpemVIYW5kbGVyPWZ1bmN0aW9uKE8pe2lmKEsuaWUpe2lmKCF3 aW5kb3cucmVzaXplRW5kKXt3aW5kb3cucmVzaXplRW5kPS0xO31jbGVhclRpbWVv dXQod2luZG93LnJlc2l6ZUVuZCk7d2luZG93LnJlc2l6ZUVuZD1zZXRUaW1lb3V0 KGZ1bmN0aW9uKCl7Qi53aW5kb3dSZXNpemVFdmVudC5maXJlKCk7fSwxMDApO31l bHNle0Iud2luZG93UmVzaXplRXZlbnQuZmlyZSgpO319O0IuX2luaXRpYWxpemVk PW51bGw7aWYoQi5faW5pdGlhbGl6ZWQ9PT1udWxsKXtOLm9uKHdpbmRvdywic2Ny b2xsIixCLndpbmRvd1Njcm9sbEhhbmRsZXIpO04ub24od2luZG93LCJyZXNpemUi LEIud2luZG93UmVzaXplSGFuZGxlcik7Qi5faW5pdGlhbGl6ZWQ9dHJ1ZTt9Qi5f VFJJR0dFUl9NQVA9eyJ3aW5kb3dTY3JvbGwiOkIud2luZG93U2Nyb2xsRXZlbnQs IndpbmRvd1Jlc2l6ZSI6Qi53aW5kb3dSZXNpemVFdmVudCwidGV4dFJlc2l6ZSI6 Ry50ZXh0UmVzaXplRXZlbnR9O1lBSE9PLmV4dGVuZChCLEcse0NPTlRFWFRfVFJJ R0dFUlM6W10saW5pdDpmdW5jdGlvbihQLE8pe0Iuc3VwZXJjbGFzcy5pbml0LmNh bGwodGhpcyxQKTt0aGlzLmJlZm9yZUluaXRFdmVudC5maXJlKEIpO0YuYWRkQ2xh c3ModGhpcy5lbGVtZW50LEIuQ1NTX09WRVJMQVkpO2lmKE8pe3RoaXMuY2ZnLmFw cGx5Q29uZmlnKE8sdHJ1ZSk7fWlmKHRoaXMucGxhdGZvcm09PSJtYWMiJiZLLmdl Y2tvKXtpZighRC5hbHJlYWR5U3Vic2NyaWJlZCh0aGlzLnNob3dFdmVudCx0aGlz LnNob3dNYWNHZWNrb1Njcm9sbGJhcnMsdGhpcykpe3RoaXMuc2hvd0V2ZW50LnN1 YnNjcmliZSh0aGlzLnNob3dNYWNHZWNrb1Njcm9sbGJhcnMsdGhpcyx0cnVlKTt9 aWYoIUQuYWxyZWFkeVN1YnNjcmliZWQodGhpcy5oaWRlRXZlbnQsdGhpcy5oaWRl TWFjR2Vja29TY3JvbGxiYXJzLHRoaXMpKXt0aGlzLmhpZGVFdmVudC5zdWJzY3Jp YmUodGhpcy5oaWRlTWFjR2Vja29TY3JvbGxiYXJzLHRoaXMsdHJ1ZSk7fX10aGlz LmluaXRFdmVudC5maXJlKEIpO30saW5pdEV2ZW50czpmdW5jdGlvbigpe0Iuc3Vw ZXJjbGFzcy5pbml0RXZlbnRzLmNhbGwodGhpcyk7dmFyIE89TS5MSVNUO3RoaXMu YmVmb3JlTW92ZUV2ZW50PXRoaXMuY3JlYXRlRXZlbnQoQS5CRUZPUkVfTU9WRSk7 dGhpcy5iZWZvcmVNb3ZlRXZlbnQuc2lnbmF0dXJlPU87dGhpcy5tb3ZlRXZlbnQ9 dGhpcy5jcmVhdGVFdmVudChBLk1PVkUpO3RoaXMubW92ZUV2ZW50LnNpZ25hdHVy ZT1PO30saW5pdERlZmF1bHRDb25maWc6ZnVuY3Rpb24oKXtCLnN1cGVyY2xhc3Mu aW5pdERlZmF1bHRDb25maWcuY2FsbCh0aGlzKTt2YXIgTz10aGlzLmNmZztPLmFk ZFByb3BlcnR5KEwuWC5rZXkse2hhbmRsZXI6dGhpcy5jb25maWdYLHZhbGlkYXRv cjpMLlgudmFsaWRhdG9yLHN1cHByZXNzRXZlbnQ6TC5YLnN1cHByZXNzRXZlbnQs c3VwZXJjZWRlczpMLlguc3VwZXJjZWRlc30pO08uYWRkUHJvcGVydHkoTC5ZLmtl eSx7aGFuZGxlcjp0aGlzLmNvbmZpZ1ksdmFsaWRhdG9yOkwuWS52YWxpZGF0b3Is c3VwcHJlc3NFdmVudDpMLlkuc3VwcHJlc3NFdmVudCxzdXBlcmNlZGVzOkwuWS5z dXBlcmNlZGVzfSk7Ty5hZGRQcm9wZXJ0eShMLlhZLmtleSx7aGFuZGxlcjp0aGlz LmNvbmZpZ1hZLHN1cHByZXNzRXZlbnQ6TC5YWS5zdXBwcmVzc0V2ZW50LHN1cGVy Y2VkZXM6TC5YWS5zdXBlcmNlZGVzfSk7Ty5hZGRQcm9wZXJ0eShMLkNPTlRFWFQu a2V5LHtoYW5kbGVyOnRoaXMuY29uZmlnQ29udGV4dCxzdXBwcmVzc0V2ZW50Okwu Q09OVEVYVC5zdXBwcmVzc0V2ZW50LHN1cGVyY2VkZXM6TC5DT05URVhULnN1cGVy Y2VkZXN9KTtPLmFkZFByb3BlcnR5KEwuRklYRURfQ0VOVEVSLmtleSx7aGFuZGxl cjp0aGlzLmNvbmZpZ0ZpeGVkQ2VudGVyLHZhbHVlOkwuRklYRURfQ0VOVEVSLnZh bHVlLHZhbGlkYXRvcjpMLkZJWEVEX0NFTlRFUi52YWxpZGF0b3Isc3VwZXJjZWRl czpMLkZJWEVEX0NFTlRFUi5zdXBlcmNlZGVzfSk7Ty5hZGRQcm9wZXJ0eShMLldJ RFRILmtleSx7aGFuZGxlcjp0aGlzLmNvbmZpZ1dpZHRoLHN1cHByZXNzRXZlbnQ6 TC5XSURUSC5zdXBwcmVzc0V2ZW50LHN1cGVyY2VkZXM6TC5XSURUSC5zdXBlcmNl ZGVzfSk7Ty5hZGRQcm9wZXJ0eShMLkhFSUdIVC5rZXkse2hhbmRsZXI6dGhpcy5j b25maWdIZWlnaHQsc3VwcHJlc3NFdmVudDpMLkhFSUdIVC5zdXBwcmVzc0V2ZW50 LHN1cGVyY2VkZXM6TC5IRUlHSFQuc3VwZXJjZWRlc30pO08uYWRkUHJvcGVydHko TC5BVVRPX0ZJTExfSEVJR0hULmtleSx7aGFuZGxlcjp0aGlzLmNvbmZpZ0F1dG9G aWxsSGVpZ2h0LHZhbHVlOkwuQVVUT19GSUxMX0hFSUdIVC52YWx1ZSx2YWxpZGF0 b3I6dGhpcy5fdmFsaWRhdGVBdXRvRmlsbCxzdXBlcmNlZGVzOkwuQVVUT19GSUxM X0hFSUdIVC5zdXBlcmNlZGVzfSk7Ty5hZGRQcm9wZXJ0eShMLlpJTkRFWC5rZXks e2hhbmRsZXI6dGhpcy5jb25maWd6SW5kZXgsdmFsdWU6TC5aSU5ERVgudmFsdWV9 KTtPLmFkZFByb3BlcnR5KEwuQ09OU1RSQUlOX1RPX1ZJRVdQT1JULmtleSx7aGFu ZGxlcjp0aGlzLmNvbmZpZ0NvbnN0cmFpblRvVmlld3BvcnQsdmFsdWU6TC5DT05T VFJBSU5fVE9fVklFV1BPUlQudmFsdWUsdmFsaWRhdG9yOkwuQ09OU1RSQUlOX1RP X1ZJRVdQT1JULnZhbGlkYXRvcixzdXBlcmNlZGVzOkwuQ09OU1RSQUlOX1RPX1ZJ RVdQT1JULnN1cGVyY2VkZXN9KTsKTy5hZGRQcm9wZXJ0eShMLklGUkFNRS5rZXks e2hhbmRsZXI6dGhpcy5jb25maWdJZnJhbWUsdmFsdWU6TC5JRlJBTUUudmFsdWUs dmFsaWRhdG9yOkwuSUZSQU1FLnZhbGlkYXRvcixzdXBlcmNlZGVzOkwuSUZSQU1F LnN1cGVyY2VkZXN9KTtPLmFkZFByb3BlcnR5KEwuUFJFVkVOVF9DT05URVhUX09W RVJMQVAua2V5LHt2YWx1ZTpMLlBSRVZFTlRfQ09OVEVYVF9PVkVSTEFQLnZhbHVl LHZhbGlkYXRvcjpMLlBSRVZFTlRfQ09OVEVYVF9PVkVSTEFQLnZhbGlkYXRvcixz dXBlcmNlZGVzOkwuUFJFVkVOVF9DT05URVhUX09WRVJMQVAuc3VwZXJjZWRlc30p O30sbW92ZVRvOmZ1bmN0aW9uKE8sUCl7dGhpcy5jZmcuc2V0UHJvcGVydHkoInh5 IixbTyxQXSk7fSxoaWRlTWFjR2Vja29TY3JvbGxiYXJzOmZ1bmN0aW9uKCl7Ri5y ZXBsYWNlQ2xhc3ModGhpcy5lbGVtZW50LCJzaG93LXNjcm9sbGJhcnMiLCJoaWRl LXNjcm9sbGJhcnMiKTt9LHNob3dNYWNHZWNrb1Njcm9sbGJhcnM6ZnVuY3Rpb24o KXtGLnJlcGxhY2VDbGFzcyh0aGlzLmVsZW1lbnQsImhpZGUtc2Nyb2xsYmFycyIs InNob3ctc2Nyb2xsYmFycyIpO30sX3NldERvbVZpc2liaWxpdHk6ZnVuY3Rpb24o Tyl7Ri5zZXRTdHlsZSh0aGlzLmVsZW1lbnQsInZpc2liaWxpdHkiLChPKT8idmlz aWJsZSI6ImhpZGRlbiIpO2lmKE8pe0YucmVtb3ZlQ2xhc3ModGhpcy5lbGVtZW50 LCJ5dWktb3ZlcmxheS1oaWRkZW4iKTt9ZWxzZXtGLmFkZENsYXNzKHRoaXMuZWxl bWVudCwieXVpLW92ZXJsYXktaGlkZGVuIik7fX0sY29uZmlnVmlzaWJsZTpmdW5j dGlvbihSLE8sWCl7dmFyIFE9T1swXSxTPUYuZ2V0U3R5bGUodGhpcy5lbGVtZW50 LCJ2aXNpYmlsaXR5IiksWT10aGlzLmNmZy5nZXRQcm9wZXJ0eSgiZWZmZWN0Iiks Vj1bXSxVPSh0aGlzLnBsYXRmb3JtPT0ibWFjIiYmSy5nZWNrbyksZz1ELmFscmVh ZHlTdWJzY3JpYmVkLFcsUCxmLGMsYixhLGQsWixUO2lmKFM9PSJpbmhlcml0Iil7 Zj10aGlzLmVsZW1lbnQucGFyZW50Tm9kZTt3aGlsZShmLm5vZGVUeXBlIT05JiZm Lm5vZGVUeXBlIT0xMSl7Uz1GLmdldFN0eWxlKGYsInZpc2liaWxpdHkiKTtpZihT IT0iaW5oZXJpdCIpe2JyZWFrO31mPWYucGFyZW50Tm9kZTt9aWYoUz09ImluaGVy aXQiKXtTPSJ2aXNpYmxlIjt9fWlmKFkpe2lmKFkgaW5zdGFuY2VvZiBBcnJheSl7 Wj1ZLmxlbmd0aDtmb3IoYz0wO2M8WjtjKyspe1c9WVtjXTtWW1YubGVuZ3RoXT1X LmVmZmVjdCh0aGlzLFcuZHVyYXRpb24pO319ZWxzZXtWW1YubGVuZ3RoXT1ZLmVm ZmVjdCh0aGlzLFkuZHVyYXRpb24pO319aWYoUSl7aWYoVSl7dGhpcy5zaG93TWFj R2Vja29TY3JvbGxiYXJzKCk7fWlmKFkpe2lmKFEpe2lmKFMhPSJ2aXNpYmxlInx8 Uz09PSIiKXt0aGlzLmJlZm9yZVNob3dFdmVudC5maXJlKCk7VD1WLmxlbmd0aDtm b3IoYj0wO2I8VDtiKyspe1A9VltiXTtpZihiPT09MCYmIWcoUC5hbmltYXRlSW5D b21wbGV0ZUV2ZW50LHRoaXMuc2hvd0V2ZW50LmZpcmUsdGhpcy5zaG93RXZlbnQp KXtQLmFuaW1hdGVJbkNvbXBsZXRlRXZlbnQuc3Vic2NyaWJlKHRoaXMuc2hvd0V2 ZW50LmZpcmUsdGhpcy5zaG93RXZlbnQsdHJ1ZSk7fVAuYW5pbWF0ZUluKCk7fX19 fWVsc2V7aWYoUyE9InZpc2libGUifHxTPT09IiIpe3RoaXMuYmVmb3JlU2hvd0V2 ZW50LmZpcmUoKTt0aGlzLl9zZXREb21WaXNpYmlsaXR5KHRydWUpO3RoaXMuY2Zn LnJlZmlyZUV2ZW50KCJpZnJhbWUiKTt0aGlzLnNob3dFdmVudC5maXJlKCk7fWVs c2V7dGhpcy5fc2V0RG9tVmlzaWJpbGl0eSh0cnVlKTt9fX1lbHNle2lmKFUpe3Ro aXMuaGlkZU1hY0dlY2tvU2Nyb2xsYmFycygpO31pZihZKXtpZihTPT0idmlzaWJs ZSIpe3RoaXMuYmVmb3JlSGlkZUV2ZW50LmZpcmUoKTtUPVYubGVuZ3RoO2Zvcihh PTA7YTxUO2ErKyl7ZD1WW2FdO2lmKGE9PT0wJiYhZyhkLmFuaW1hdGVPdXRDb21w bGV0ZUV2ZW50LHRoaXMuaGlkZUV2ZW50LmZpcmUsdGhpcy5oaWRlRXZlbnQpKXtk LmFuaW1hdGVPdXRDb21wbGV0ZUV2ZW50LnN1YnNjcmliZSh0aGlzLmhpZGVFdmVu dC5maXJlLHRoaXMuaGlkZUV2ZW50LHRydWUpO31kLmFuaW1hdGVPdXQoKTt9fWVs c2V7aWYoUz09PSIiKXt0aGlzLl9zZXREb21WaXNpYmlsaXR5KGZhbHNlKTt9fX1l bHNle2lmKFM9PSJ2aXNpYmxlInx8Uz09PSIiKXt0aGlzLmJlZm9yZUhpZGVFdmVu dC5maXJlKCk7dGhpcy5fc2V0RG9tVmlzaWJpbGl0eShmYWxzZSk7dGhpcy5oaWRl RXZlbnQuZmlyZSgpO31lbHNle3RoaXMuX3NldERvbVZpc2liaWxpdHkoZmFsc2Up O319fX0sZG9DZW50ZXJPbkRPTUV2ZW50OmZ1bmN0aW9uKCl7dmFyIE89dGhpcy5j ZmcsUD1PLmdldFByb3BlcnR5KCJmaXhlZGNlbnRlciIpO2lmKE8uZ2V0UHJvcGVy dHkoInZpc2libGUiKSl7aWYoUCYmKFAhPT1DfHx0aGlzLmZpdHNJblZpZXdwb3J0 KCkpKXt0aGlzLmNlbnRlcigpO319fSxmaXRzSW5WaWV3cG9ydDpmdW5jdGlvbigp e3ZhciBTPUIuVklFV1BPUlRfT0ZGU0VULFE9dGhpcy5lbGVtZW50LFQ9US5vZmZz ZXRXaWR0aCxSPVEub2Zmc2V0SGVpZ2h0LE89Ri5nZXRWaWV3cG9ydFdpZHRoKCks UD1GLmdldFZpZXdwb3J0SGVpZ2h0KCk7cmV0dXJuKChUK1M8TykmJihSK1M8UCkp O30sY29uZmlnRml4ZWRDZW50ZXI6ZnVuY3Rpb24oUyxRLFQpe3ZhciBVPVFbMF0s UD1ELmFscmVhZHlTdWJzY3JpYmVkLFI9Qi53aW5kb3dSZXNpemVFdmVudCxPPUIu d2luZG93U2Nyb2xsRXZlbnQ7aWYoVSl7dGhpcy5jZW50ZXIoKTtpZighUCh0aGlz LmJlZm9yZVNob3dFdmVudCx0aGlzLmNlbnRlcikpe3RoaXMuYmVmb3JlU2hvd0V2 ZW50LnN1YnNjcmliZSh0aGlzLmNlbnRlcik7fWlmKCFQKFIsdGhpcy5kb0NlbnRl ck9uRE9NRXZlbnQsdGhpcykpe1Iuc3Vic2NyaWJlKHRoaXMuZG9DZW50ZXJPbkRP TUV2ZW50LHRoaXMsdHJ1ZSk7fWlmKCFQKE8sdGhpcy5kb0NlbnRlck9uRE9NRXZl bnQsdGhpcykpe08uc3Vic2NyaWJlKHRoaXMuZG9DZW50ZXJPbkRPTUV2ZW50LHRo aXMsdHJ1ZSk7fX1lbHNle3RoaXMuYmVmb3JlU2hvd0V2ZW50LnVuc3Vic2NyaWJl KHRoaXMuY2VudGVyKTtSLnVuc3Vic2NyaWJlKHRoaXMuZG9DZW50ZXJPbkRPTUV2 ZW50LHRoaXMpO08udW5zdWJzY3JpYmUodGhpcy5kb0NlbnRlck9uRE9NRXZlbnQs dGhpcyk7fX0sY29uZmlnSGVpZ2h0OmZ1bmN0aW9uKFIsUCxTKXt2YXIgTz1QWzBd LFE9dGhpcy5lbGVtZW50O0Yuc2V0U3R5bGUoUSwiaGVpZ2h0IixPKTt0aGlzLmNm Zy5yZWZpcmVFdmVudCgiaWZyYW1lIik7fSxjb25maWdBdXRvRmlsbEhlaWdodDpm dW5jdGlvbihULFMsUCl7dmFyIFY9U1swXSxRPXRoaXMuY2ZnLFU9ImF1dG9maWxs aGVpZ2h0IixXPSJoZWlnaHQiLFI9US5nZXRQcm9wZXJ0eShVKSxPPXRoaXMuX2F1 dG9GaWxsT25IZWlnaHRDaGFuZ2U7US51bnN1YnNjcmliZUZyb21Db25maWdFdmVu dChXLE8pO0cudGV4dFJlc2l6ZUV2ZW50LnVuc3Vic2NyaWJlKE8pO3RoaXMuY2hh bmdlQ29udGVudEV2ZW50LnVuc3Vic2NyaWJlKE8pO2lmKFImJlYhPT1SJiZ0aGlz W1JdKXtGLnNldFN0eWxlKHRoaXNbUl0sVywiIik7fWlmKFYpe1Y9SS50cmltKFYu dG9Mb3dlckNhc2UoKSk7US5zdWJzY3JpYmVUb0NvbmZpZ0V2ZW50KFcsTyx0aGlz W1ZdLHRoaXMpO0cudGV4dFJlc2l6ZUV2ZW50LnN1YnNjcmliZShPLHRoaXNbVl0s dGhpcyk7dGhpcy5jaGFuZ2VDb250ZW50RXZlbnQuc3Vic2NyaWJlKE8sdGhpc1tW XSx0aGlzKTtRLnNldFByb3BlcnR5KFUsVix0cnVlKTt9fSxjb25maWdXaWR0aDpm dW5jdGlvbihSLE8sUyl7dmFyIFE9T1swXSxQPXRoaXMuZWxlbWVudDtGLnNldFN0 eWxlKFAsIndpZHRoIixRKTt0aGlzLmNmZy5yZWZpcmVFdmVudCgiaWZyYW1lIik7 fSxjb25maWd6SW5kZXg6ZnVuY3Rpb24oUSxPLFIpe3ZhciBTPU9bMF0sUD10aGlz LmVsZW1lbnQ7aWYoIVMpe1M9Ri5nZXRTdHlsZShQLCJ6SW5kZXgiKTtpZighU3x8 aXNOYU4oUykpe1M9MDt9fWlmKHRoaXMuaWZyYW1lfHx0aGlzLmNmZy5nZXRQcm9w ZXJ0eSgiaWZyYW1lIik9PT10cnVlKXtpZihTPD0wKXtTPTE7fX1GLnNldFN0eWxl KFAsInpJbmRleCIsUyk7dGhpcy5jZmcuc2V0UHJvcGVydHkoInpJbmRleCIsUyx0 cnVlKTtpZih0aGlzLmlmcmFtZSl7dGhpcy5zdGFja0lmcmFtZSgpO319LGNvbmZp Z1hZOmZ1bmN0aW9uKFEsUCxSKXt2YXIgVD1QWzBdLE89VFswXSxTPVRbMV07dGhp cy5jZmcuc2V0UHJvcGVydHkoIngiLE8pO3RoaXMuY2ZnLnNldFByb3BlcnR5KCJ5 IixTKTt0aGlzLmJlZm9yZU1vdmVFdmVudC5maXJlKFtPLFNdKTtPPXRoaXMuY2Zn LmdldFByb3BlcnR5KCJ4Iik7Uz10aGlzLmNmZy5nZXRQcm9wZXJ0eSgieSIpO3Ro aXMuY2ZnLnJlZmlyZUV2ZW50KCJpZnJhbWUiKTt0aGlzLm1vdmVFdmVudC5maXJl KFtPLFNdKTt9LGNvbmZpZ1g6ZnVuY3Rpb24oUSxQLFIpe3ZhciBPPVBbMF0sUz10 aGlzLmNmZy5nZXRQcm9wZXJ0eSgieSIpO3RoaXMuY2ZnLnNldFByb3BlcnR5KCJ4 IixPLHRydWUpO3RoaXMuY2ZnLnNldFByb3BlcnR5KCJ5IixTLHRydWUpO3RoaXMu YmVmb3JlTW92ZUV2ZW50LmZpcmUoW08sU10pO089dGhpcy5jZmcuZ2V0UHJvcGVy dHkoIngiKTtTPXRoaXMuY2ZnLmdldFByb3BlcnR5KCJ5Iik7Ri5zZXRYKHRoaXMu ZWxlbWVudCxPLHRydWUpO3RoaXMuY2ZnLnNldFByb3BlcnR5KCJ4eSIsW08sU10s dHJ1ZSk7dGhpcy5jZmcucmVmaXJlRXZlbnQoImlmcmFtZSIpO3RoaXMubW92ZUV2 ZW50LmZpcmUoW08sU10pO30sY29uZmlnWTpmdW5jdGlvbihRLFAsUil7dmFyIE89 dGhpcy5jZmcuZ2V0UHJvcGVydHkoIngiKSxTPVBbMF07dGhpcy5jZmcuc2V0UHJv cGVydHkoIngiLE8sdHJ1ZSk7dGhpcy5jZmcuc2V0UHJvcGVydHkoInkiLFMsdHJ1 ZSk7dGhpcy5iZWZvcmVNb3ZlRXZlbnQuZmlyZShbTyxTXSk7Tz10aGlzLmNmZy5n ZXRQcm9wZXJ0eSgieCIpO1M9dGhpcy5jZmcuZ2V0UHJvcGVydHkoInkiKTtGLnNl dFkodGhpcy5lbGVtZW50LFMsdHJ1ZSk7dGhpcy5jZmcuc2V0UHJvcGVydHkoInh5 IixbTyxTXSx0cnVlKTt0aGlzLmNmZy5yZWZpcmVFdmVudCgiaWZyYW1lIik7dGhp cy5tb3ZlRXZlbnQuZmlyZShbTyxTXSk7fSxzaG93SWZyYW1lOmZ1bmN0aW9uKCl7 dmFyIFA9dGhpcy5pZnJhbWUsTztpZihQKXtPPXRoaXMuZWxlbWVudC5wYXJlbnRO b2RlO2lmKE8hPVAucGFyZW50Tm9kZSl7dGhpcy5fYWRkVG9QYXJlbnQoTyxQKTt9 UC5zdHlsZS5kaXNwbGF5PSJibG9jayI7fX0saGlkZUlmcmFtZTpmdW5jdGlvbigp e2lmKHRoaXMuaWZyYW1lKXt0aGlzLmlmcmFtZS5zdHlsZS5kaXNwbGF5PSJub25l Ijt9fSxzeW5jSWZyYW1lOmZ1bmN0aW9uKCl7dmFyIE89dGhpcy5pZnJhbWUsUT10 aGlzLmVsZW1lbnQsUz1CLklGUkFNRV9PRkZTRVQsUD0oUyoyKSxSO2lmKE8pe08u c3R5bGUud2lkdGg9KFEub2Zmc2V0V2lkdGgrUCsicHgiKTtPLnN0eWxlLmhlaWdo dD0oUS5vZmZzZXRIZWlnaHQrUCsicHgiKTtSPXRoaXMuY2ZnLmdldFByb3BlcnR5 KCJ4eSIpO2lmKCFJLmlzQXJyYXkoUil8fChpc05hTihSWzBdKXx8aXNOYU4oUlsx XSkpKXt0aGlzLnN5bmNQb3NpdGlvbigpO1I9dGhpcy5jZmcuZ2V0UHJvcGVydHko Inh5Iik7fUYuc2V0WFkoTyxbKFJbMF0tUyksKFJbMV0tUyldKTt9fSxzdGFja0lm cmFtZTpmdW5jdGlvbigpe2lmKHRoaXMuaWZyYW1lKXt2YXIgTz1GLmdldFN0eWxl KHRoaXMuZWxlbWVudCwiekluZGV4Iik7aWYoIVlBSE9PLmxhbmcuaXNVbmRlZmlu ZWQoTykmJiFpc05hTihPKSl7Ri5zZXRTdHlsZSh0aGlzLmlmcmFtZSwiekluZGV4 IiwoTy0xKSk7fX19LGNvbmZpZ0lmcmFtZTpmdW5jdGlvbihSLFEsUyl7dmFyIE89 UVswXTtmdW5jdGlvbiBUKCl7dmFyIFY9dGhpcy5pZnJhbWUsVz10aGlzLmVsZW1l bnQsWDtpZighVil7aWYoIUope0o9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZy YW1lIik7aWYodGhpcy5pc1NlY3VyZSl7Si5zcmM9Qi5JRlJBTUVfU1JDO31pZihL LmllKXtKLnN0eWxlLmZpbHRlcj0iYWxwaGEob3BhY2l0eT0wKSI7CkouZnJhbWVC b3JkZXI9MDt9ZWxzZXtKLnN0eWxlLm9wYWNpdHk9IjAiO31KLnN0eWxlLnBvc2l0 aW9uPSJhYnNvbHV0ZSI7Si5zdHlsZS5ib3JkZXI9Im5vbmUiO0ouc3R5bGUubWFy Z2luPSIwIjtKLnN0eWxlLnBhZGRpbmc9IjAiO0ouc3R5bGUuZGlzcGxheT0ibm9u ZSI7Si50YWJJbmRleD0tMTt9Vj1KLmNsb25lTm9kZShmYWxzZSk7WD1XLnBhcmVu dE5vZGU7dmFyIFU9WHx8ZG9jdW1lbnQuYm9keTt0aGlzLl9hZGRUb1BhcmVudChV LFYpO3RoaXMuaWZyYW1lPVY7fXRoaXMuc2hvd0lmcmFtZSgpO3RoaXMuc3luY0lm cmFtZSgpO3RoaXMuc3RhY2tJZnJhbWUoKTtpZighdGhpcy5faGFzSWZyYW1lRXZl bnRMaXN0ZW5lcnMpe3RoaXMuc2hvd0V2ZW50LnN1YnNjcmliZSh0aGlzLnNob3dJ ZnJhbWUpO3RoaXMuaGlkZUV2ZW50LnN1YnNjcmliZSh0aGlzLmhpZGVJZnJhbWUp O3RoaXMuY2hhbmdlQ29udGVudEV2ZW50LnN1YnNjcmliZSh0aGlzLnN5bmNJZnJh bWUpO3RoaXMuX2hhc0lmcmFtZUV2ZW50TGlzdGVuZXJzPXRydWU7fX1mdW5jdGlv biBQKCl7VC5jYWxsKHRoaXMpO3RoaXMuYmVmb3JlU2hvd0V2ZW50LnVuc3Vic2Ny aWJlKFApO3RoaXMuX2lmcmFtZURlZmVycmVkPWZhbHNlO31pZihPKXtpZih0aGlz LmNmZy5nZXRQcm9wZXJ0eSgidmlzaWJsZSIpKXtULmNhbGwodGhpcyk7fWVsc2V7 aWYoIXRoaXMuX2lmcmFtZURlZmVycmVkKXt0aGlzLmJlZm9yZVNob3dFdmVudC5z dWJzY3JpYmUoUCk7dGhpcy5faWZyYW1lRGVmZXJyZWQ9dHJ1ZTt9fX1lbHNle3Ro aXMuaGlkZUlmcmFtZSgpO2lmKHRoaXMuX2hhc0lmcmFtZUV2ZW50TGlzdGVuZXJz KXt0aGlzLnNob3dFdmVudC51bnN1YnNjcmliZSh0aGlzLnNob3dJZnJhbWUpO3Ro aXMuaGlkZUV2ZW50LnVuc3Vic2NyaWJlKHRoaXMuaGlkZUlmcmFtZSk7dGhpcy5j aGFuZ2VDb250ZW50RXZlbnQudW5zdWJzY3JpYmUodGhpcy5zeW5jSWZyYW1lKTt0 aGlzLl9oYXNJZnJhbWVFdmVudExpc3RlbmVycz1mYWxzZTt9fX0sX3ByaW1lWFlG cm9tRE9NOmZ1bmN0aW9uKCl7aWYoWUFIT08ubGFuZy5pc1VuZGVmaW5lZCh0aGlz LmNmZy5nZXRQcm9wZXJ0eSgieHkiKSkpe3RoaXMuc3luY1Bvc2l0aW9uKCk7dGhp cy5jZmcucmVmaXJlRXZlbnQoInh5Iik7dGhpcy5iZWZvcmVTaG93RXZlbnQudW5z dWJzY3JpYmUodGhpcy5fcHJpbWVYWUZyb21ET00pO319LGNvbmZpZ0NvbnN0cmFp blRvVmlld3BvcnQ6ZnVuY3Rpb24oUCxPLFEpe3ZhciBSPU9bMF07aWYoUil7aWYo IUQuYWxyZWFkeVN1YnNjcmliZWQodGhpcy5iZWZvcmVNb3ZlRXZlbnQsdGhpcy5l bmZvcmNlQ29uc3RyYWludHMsdGhpcykpe3RoaXMuYmVmb3JlTW92ZUV2ZW50LnN1 YnNjcmliZSh0aGlzLmVuZm9yY2VDb25zdHJhaW50cyx0aGlzLHRydWUpO31pZigh RC5hbHJlYWR5U3Vic2NyaWJlZCh0aGlzLmJlZm9yZVNob3dFdmVudCx0aGlzLl9w cmltZVhZRnJvbURPTSkpe3RoaXMuYmVmb3JlU2hvd0V2ZW50LnN1YnNjcmliZSh0 aGlzLl9wcmltZVhZRnJvbURPTSk7fX1lbHNle3RoaXMuYmVmb3JlU2hvd0V2ZW50 LnVuc3Vic2NyaWJlKHRoaXMuX3ByaW1lWFlGcm9tRE9NKTt0aGlzLmJlZm9yZU1v dmVFdmVudC51bnN1YnNjcmliZSh0aGlzLmVuZm9yY2VDb25zdHJhaW50cyx0aGlz KTt9fSxjb25maWdDb250ZXh0OmZ1bmN0aW9uKFQsUyxQKXt2YXIgVz1TWzBdLFEs TyxVLFIsVj10aGlzLkNPTlRFWFRfVFJJR0dFUlM7aWYoVyl7UT1XWzBdO089V1sx XTtVPVdbMl07Uj1XWzNdO2lmKFYmJlYubGVuZ3RoPjApe1I9KFJ8fFtdKS5jb25j YXQoVik7fWlmKFEpe2lmKHR5cGVvZiBRPT0ic3RyaW5nIil7dGhpcy5jZmcuc2V0 UHJvcGVydHkoImNvbnRleHQiLFtkb2N1bWVudC5nZXRFbGVtZW50QnlJZChRKSxP LFUsUl0sdHJ1ZSk7fWlmKE8mJlUpe3RoaXMuYWxpZ24oTyxVKTt9aWYodGhpcy5f Y29udGV4dFRyaWdnZXJzKXt0aGlzLl9wcm9jZXNzVHJpZ2dlcnModGhpcy5fY29u dGV4dFRyaWdnZXJzLEUsdGhpcy5fYWxpZ25PblRyaWdnZXIpO31pZihSKXt0aGlz Ll9wcm9jZXNzVHJpZ2dlcnMoUixILHRoaXMuX2FsaWduT25UcmlnZ2VyKTt0aGlz Ll9jb250ZXh0VHJpZ2dlcnM9Ujt9fX19LF9hbGlnbk9uVHJpZ2dlcjpmdW5jdGlv bihQLE8pe3RoaXMuYWxpZ24oKTt9LF9maW5kVHJpZ2dlckNFOmZ1bmN0aW9uKE8p e3ZhciBQPW51bGw7aWYoTyBpbnN0YW5jZW9mIE0pe1A9Tzt9ZWxzZXtpZihCLl9U UklHR0VSX01BUFtPXSl7UD1CLl9UUklHR0VSX01BUFtPXTt9fXJldHVybiBQO30s X3Byb2Nlc3NUcmlnZ2VyczpmdW5jdGlvbihTLFUsUil7dmFyIFEsVDtmb3IodmFy IFA9MCxPPVMubGVuZ3RoO1A8TzsrK1Ape1E9U1tQXTtUPXRoaXMuX2ZpbmRUcmln Z2VyQ0UoUSk7aWYoVCl7VFtVXShSLHRoaXMsdHJ1ZSk7fWVsc2V7dGhpc1tVXShR LFIpO319fSxhbGlnbjpmdW5jdGlvbihQLE8pe3ZhciBVPXRoaXMuY2ZnLmdldFBy b3BlcnR5KCJjb250ZXh0IiksVD10aGlzLFMsUixWO2Z1bmN0aW9uIFEoVyxYKXtz d2l0Y2goUCl7Y2FzZSBCLlRPUF9MRUZUOlQubW92ZVRvKFgsVyk7YnJlYWs7Y2Fz ZSBCLlRPUF9SSUdIVDpULm1vdmVUbygoWC1SLm9mZnNldFdpZHRoKSxXKTticmVh aztjYXNlIEIuQk9UVE9NX0xFRlQ6VC5tb3ZlVG8oWCwoVy1SLm9mZnNldEhlaWdo dCkpO2JyZWFrO2Nhc2UgQi5CT1RUT01fUklHSFQ6VC5tb3ZlVG8oKFgtUi5vZmZz ZXRXaWR0aCksKFctUi5vZmZzZXRIZWlnaHQpKTticmVhazt9fWlmKFUpe1M9VVsw XTtSPXRoaXMuZWxlbWVudDtUPXRoaXM7aWYoIVApe1A9VVsxXTt9aWYoIU8pe089 VVsyXTt9aWYoUiYmUyl7Vj1GLmdldFJlZ2lvbihTKTtzd2l0Y2goTyl7Y2FzZSBC LlRPUF9MRUZUOlEoVi50b3AsVi5sZWZ0KTticmVhaztjYXNlIEIuVE9QX1JJR0hU OlEoVi50b3AsVi5yaWdodCk7YnJlYWs7Y2FzZSBCLkJPVFRPTV9MRUZUOlEoVi5i b3R0b20sVi5sZWZ0KTticmVhaztjYXNlIEIuQk9UVE9NX1JJR0hUOlEoVi5ib3R0 b20sVi5yaWdodCk7YnJlYWs7fX19fSxlbmZvcmNlQ29uc3RyYWludHM6ZnVuY3Rp b24oUCxPLFEpe3ZhciBTPU9bMF07dmFyIFI9dGhpcy5nZXRDb25zdHJhaW5lZFhZ KFNbMF0sU1sxXSk7dGhpcy5jZmcuc2V0UHJvcGVydHkoIngiLFJbMF0sdHJ1ZSk7 dGhpcy5jZmcuc2V0UHJvcGVydHkoInkiLFJbMV0sdHJ1ZSk7dGhpcy5jZmcuc2V0 UHJvcGVydHkoInh5IixSLHRydWUpO30sZ2V0Q29uc3RyYWluZWRYOmZ1bmN0aW9u KFYpe3ZhciBTPXRoaXMsTz1TLmVsZW1lbnQsZT1PLm9mZnNldFdpZHRoLGM9Qi5W SUVXUE9SVF9PRkZTRVQsaD1GLmdldFZpZXdwb3J0V2lkdGgoKSxkPUYuZ2V0RG9j dW1lbnRTY3JvbGxMZWZ0KCksWT0oZStjPGgpLGI9dGhpcy5jZmcuZ2V0UHJvcGVy dHkoImNvbnRleHQiKSxRLFgsaixUPWZhbHNlLGYsVyxnPWQrYyxQPWQraC1lLWMs aT1WLFU9eyJ0bHRyIjp0cnVlLCJibGJyIjp0cnVlLCJicmJsIjp0cnVlLCJ0cnRs Ijp0cnVlfTt2YXIgWj1mdW5jdGlvbigpe3ZhciBrO2lmKChTLmNmZy5nZXRQcm9w ZXJ0eSgieCIpLWQpPlgpe2s9KFgtZSk7fWVsc2V7az0oWCtqKTt9Uy5jZmcuc2V0 UHJvcGVydHkoIngiLChrK2QpLHRydWUpO3JldHVybiBrO307dmFyIFI9ZnVuY3Rp b24oKXtpZigoUy5jZmcuZ2V0UHJvcGVydHkoIngiKS1kKT5YKXtyZXR1cm4oVy1j KTt9ZWxzZXtyZXR1cm4oZi1jKTt9fTt2YXIgYT1mdW5jdGlvbigpe3ZhciBrPVIo KSxsO2lmKGU+ayl7aWYoVCl7WigpO31lbHNle1ooKTtUPXRydWU7bD1hKCk7fX1y ZXR1cm4gbDt9O2lmKFY8Z3x8Vj5QKXtpZihZKXtpZih0aGlzLmNmZy5nZXRQcm9w ZXJ0eSgicHJldmVudGNvbnRleHRvdmVybGFwIikmJmImJlVbKGJbMV0rYlsyXSld KXtRPWJbMF07WD1GLmdldFgoUSktZDtqPVEub2Zmc2V0V2lkdGg7Zj1YO1c9KGgt KFgraikpO2EoKTtpPXRoaXMuY2ZnLmdldFByb3BlcnR5KCJ4Iik7fWVsc2V7aWYo VjxnKXtpPWc7fWVsc2V7aWYoVj5QKXtpPVA7fX19fWVsc2V7aT1jK2Q7fX1yZXR1 cm4gaTt9LGdldENvbnN0cmFpbmVkWTpmdW5jdGlvbihaKXt2YXIgVz10aGlzLFA9 Vy5lbGVtZW50LGk9UC5vZmZzZXRIZWlnaHQsaD1CLlZJRVdQT1JUX09GRlNFVCxk PUYuZ2V0Vmlld3BvcnRIZWlnaHQoKSxnPUYuZ2V0RG9jdW1lbnRTY3JvbGxUb3Ao KSxlPShpK2g8ZCksZj10aGlzLmNmZy5nZXRQcm9wZXJ0eSgiY29udGV4dCIpLFUs YSxiLFg9ZmFsc2UsVixRLGM9ZytoLFM9ZytkLWktaCxPPVosWT17InRyYnIiOnRy dWUsInRsYmwiOnRydWUsImJsdGwiOnRydWUsImJydHIiOnRydWV9O3ZhciBUPWZ1 bmN0aW9uKCl7dmFyIGs7aWYoKFcuY2ZnLmdldFByb3BlcnR5KCJ5IiktZyk+YSl7 az0oYS1pKTt9ZWxzZXtrPShhK2IpO31XLmNmZy5zZXRQcm9wZXJ0eSgieSIsKGsr ZyksdHJ1ZSk7cmV0dXJuIGs7fTt2YXIgUj1mdW5jdGlvbigpe2lmKChXLmNmZy5n ZXRQcm9wZXJ0eSgieSIpLWcpPmEpe3JldHVybihRLWgpO31lbHNle3JldHVybihW LWgpO319O3ZhciBqPWZ1bmN0aW9uKCl7dmFyIGw9UigpLGs7aWYoaT5sKXtpZihY KXtUKCk7fWVsc2V7VCgpO1g9dHJ1ZTtrPWooKTt9fXJldHVybiBrO307aWYoWjxj fHxaPlMpe2lmKGUpe2lmKHRoaXMuY2ZnLmdldFByb3BlcnR5KCJwcmV2ZW50Y29u dGV4dG92ZXJsYXAiKSYmZiYmWVsoZlsxXStmWzJdKV0pe1U9ZlswXTtiPVUub2Zm c2V0SGVpZ2h0O2E9KEYuZ2V0WShVKS1nKTtWPWE7UT0oZC0oYStiKSk7aigpO089 Vy5jZmcuZ2V0UHJvcGVydHkoInkiKTt9ZWxzZXtpZihaPGMpe089Yzt9ZWxzZXtp ZihaPlMpe089Uzt9fX19ZWxzZXtPPWgrZzt9fXJldHVybiBPO30sZ2V0Q29uc3Ry YWluZWRYWTpmdW5jdGlvbihPLFApe3JldHVyblt0aGlzLmdldENvbnN0cmFpbmVk WChPKSx0aGlzLmdldENvbnN0cmFpbmVkWShQKV07fSxjZW50ZXI6ZnVuY3Rpb24o KXt2YXIgUj1CLlZJRVdQT1JUX09GRlNFVCxTPXRoaXMuZWxlbWVudC5vZmZzZXRX aWR0aCxRPXRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQsUD1GLmdldFZpZXdwb3J0 V2lkdGgoKSxUPUYuZ2V0Vmlld3BvcnRIZWlnaHQoKSxPLFU7aWYoUzxQKXtPPShQ LzIpLShTLzIpK0YuZ2V0RG9jdW1lbnRTY3JvbGxMZWZ0KCk7fWVsc2V7Tz1SK0Yu Z2V0RG9jdW1lbnRTY3JvbGxMZWZ0KCk7fWlmKFE8VCl7VT0oVC8yKS0oUS8yKStG LmdldERvY3VtZW50U2Nyb2xsVG9wKCk7fWVsc2V7VT1SK0YuZ2V0RG9jdW1lbnRT Y3JvbGxUb3AoKTt9dGhpcy5jZmcuc2V0UHJvcGVydHkoInh5IixbcGFyc2VJbnQo TywxMCkscGFyc2VJbnQoVSwxMCldKTt0aGlzLmNmZy5yZWZpcmVFdmVudCgiaWZy YW1lIik7aWYoSy53ZWJraXQpe3RoaXMuZm9yY2VDb250YWluZXJSZWRyYXcoKTt9 fSxzeW5jUG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgTz1GLmdldFhZKHRoaXMuZWxl bWVudCk7dGhpcy5jZmcuc2V0UHJvcGVydHkoIngiLE9bMF0sdHJ1ZSk7dGhpcy5j Zmcuc2V0UHJvcGVydHkoInkiLE9bMV0sdHJ1ZSk7dGhpcy5jZmcuc2V0UHJvcGVy dHkoInh5IixPLHRydWUpO30sb25Eb21SZXNpemU6ZnVuY3Rpb24oUSxQKXt2YXIg Tz10aGlzO0Iuc3VwZXJjbGFzcy5vbkRvbVJlc2l6ZS5jYWxsKHRoaXMsUSxQKTtz ZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Ty5zeW5jUG9zaXRpb24oKTtPLmNmZy5yZWZp cmVFdmVudCgiaWZyYW1lIik7Ty5jZmcucmVmaXJlRXZlbnQoImNvbnRleHQiKTt9 LDApO30sX2dldENvbXB1dGVkSGVpZ2h0OihmdW5jdGlvbigpe2lmKGRvY3VtZW50 LmRlZmF1bHRWaWV3JiZkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0 eWxlKXtyZXR1cm4gZnVuY3Rpb24oUCl7dmFyIE89bnVsbDtpZihQLm93bmVyRG9j dW1lbnQmJlAub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldyl7dmFyIFE9UC5vd25l ckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoUCwiIik7aWYo USl7Tz1wYXJzZUludChRLmhlaWdodCwxMCk7fX1yZXR1cm4oSS5pc051bWJlcihP KSk/TzpudWxsO307fWVsc2V7cmV0dXJuIGZ1bmN0aW9uKFApe3ZhciBPPW51bGw7 CmlmKFAuc3R5bGUucGl4ZWxIZWlnaHQpe089UC5zdHlsZS5waXhlbEhlaWdodDt9 cmV0dXJuKEkuaXNOdW1iZXIoTykpP086bnVsbDt9O319KSgpLF92YWxpZGF0ZUF1 dG9GaWxsSGVpZ2h0OmZ1bmN0aW9uKE8pe3JldHVybighTyl8fChJLmlzU3RyaW5n KE8pJiZCLlNURF9NT0RfUkUudGVzdChPKSk7fSxfYXV0b0ZpbGxPbkhlaWdodENo YW5nZTpmdW5jdGlvbihSLFAsUSl7dmFyIE89dGhpcy5jZmcuZ2V0UHJvcGVydHko ImhlaWdodCIpO2lmKChPJiZPIT09ImF1dG8iKXx8KE89PT0wKSl7dGhpcy5maWxs SGVpZ2h0KFEpO319LF9nZXRQcmVjaXNlSGVpZ2h0OmZ1bmN0aW9uKFApe3ZhciBP PVAub2Zmc2V0SGVpZ2h0O2lmKFAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KXt2YXIg UT1QLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO089US5ib3R0b20tUS50b3A7fXJl dHVybiBPO30sZmlsbEhlaWdodDpmdW5jdGlvbihSKXtpZihSKXt2YXIgUD10aGlz LmlubmVyRWxlbWVudHx8dGhpcy5lbGVtZW50LE89W3RoaXMuaGVhZGVyLHRoaXMu Ym9keSx0aGlzLmZvb3Rlcl0sVixXPTAsWD0wLFQ9MCxRPWZhbHNlO2Zvcih2YXIg VT0wLFM9Ty5sZW5ndGg7VTxTO1UrKyl7Vj1PW1VdO2lmKFYpe2lmKFIhPT1WKXtY Kz10aGlzLl9nZXRQcmVjaXNlSGVpZ2h0KFYpO31lbHNle1E9dHJ1ZTt9fX1pZihR KXtpZihLLmllfHxLLm9wZXJhKXtGLnNldFN0eWxlKFIsImhlaWdodCIsMCsicHgi KTt9Vz10aGlzLl9nZXRDb21wdXRlZEhlaWdodChQKTtpZihXPT09bnVsbCl7Ri5h ZGRDbGFzcyhQLCJ5dWktb3ZlcnJpZGUtcGFkZGluZyIpO1c9UC5jbGllbnRIZWln aHQ7Ri5yZW1vdmVDbGFzcyhQLCJ5dWktb3ZlcnJpZGUtcGFkZGluZyIpO31UPU1h dGgubWF4KFctWCwwKTtGLnNldFN0eWxlKFIsImhlaWdodCIsVCsicHgiKTtpZihS Lm9mZnNldEhlaWdodCE9VCl7VD1NYXRoLm1heChULShSLm9mZnNldEhlaWdodC1U KSwwKTt9Ri5zZXRTdHlsZShSLCJoZWlnaHQiLFQrInB4Iik7fX19LGJyaW5nVG9U b3A6ZnVuY3Rpb24oKXt2YXIgUz1bXSxSPXRoaXMuZWxlbWVudDtmdW5jdGlvbiBW KFosWSl7dmFyIGI9Ri5nZXRTdHlsZShaLCJ6SW5kZXgiKSxhPUYuZ2V0U3R5bGUo WSwiekluZGV4IiksWD0oIWJ8fGlzTmFOKGIpKT8wOnBhcnNlSW50KGIsMTApLFc9 KCFhfHxpc05hTihhKSk/MDpwYXJzZUludChhLDEwKTtpZihYPlcpe3JldHVybiAt MTt9ZWxzZXtpZihYPFcpe3JldHVybiAxO31lbHNle3JldHVybiAwO319fWZ1bmN0 aW9uIFEoWSl7dmFyIFg9Ri5oYXNDbGFzcyhZLEIuQ1NTX09WRVJMQVkpLFc9WUFI T08ud2lkZ2V0LlBhbmVsO2lmKFgmJiFGLmlzQW5jZXN0b3IoUixZKSl7aWYoVyYm Ri5oYXNDbGFzcyhZLFcuQ1NTX1BBTkVMKSl7U1tTLmxlbmd0aF09WS5wYXJlbnRO b2RlO31lbHNle1NbUy5sZW5ndGhdPVk7fX19Ri5nZXRFbGVtZW50c0J5KFEsIkRJ ViIsZG9jdW1lbnQuYm9keSk7Uy5zb3J0KFYpO3ZhciBPPVNbMF0sVTtpZihPKXtV PUYuZ2V0U3R5bGUoTywiekluZGV4Iik7aWYoIWlzTmFOKFUpKXt2YXIgVD1mYWxz ZTtpZihPIT1SKXtUPXRydWU7fWVsc2V7aWYoUy5sZW5ndGg+MSl7dmFyIFA9Ri5n ZXRTdHlsZShTWzFdLCJ6SW5kZXgiKTtpZighaXNOYU4oUCkmJihVPT1QKSl7VD10 cnVlO319fWlmKFQpe3RoaXMuY2ZnLnNldFByb3BlcnR5KCJ6aW5kZXgiLChwYXJz ZUludChVLDEwKSsyKSk7fX19fSxkZXN0cm95OmZ1bmN0aW9uKCl7aWYodGhpcy5p ZnJhbWUpe3RoaXMuaWZyYW1lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5p ZnJhbWUpO310aGlzLmlmcmFtZT1udWxsO0Iud2luZG93UmVzaXplRXZlbnQudW5z dWJzY3JpYmUodGhpcy5kb0NlbnRlck9uRE9NRXZlbnQsdGhpcyk7Qi53aW5kb3dT Y3JvbGxFdmVudC51bnN1YnNjcmliZSh0aGlzLmRvQ2VudGVyT25ET01FdmVudCx0 aGlzKTtHLnRleHRSZXNpemVFdmVudC51bnN1YnNjcmliZSh0aGlzLl9hdXRvRmls bE9uSGVpZ2h0Q2hhbmdlKTtCLnN1cGVyY2xhc3MuZGVzdHJveS5jYWxsKHRoaXMp O30sZm9yY2VDb250YWluZXJSZWRyYXc6ZnVuY3Rpb24oKXt2YXIgTz10aGlzO0Yu YWRkQ2xhc3MoTy5lbGVtZW50LCJ5dWktZm9yY2UtcmVkcmF3Iik7c2V0VGltZW91 dChmdW5jdGlvbigpe0YucmVtb3ZlQ2xhc3MoTy5lbGVtZW50LCJ5dWktZm9yY2Ut cmVkcmF3Iik7fSwwKTt9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIk92ZXJs YXkgIit0aGlzLmlkO319KTt9KCkpOyhmdW5jdGlvbigpe1lBSE9PLndpZGdldC5P dmVybGF5TWFuYWdlcj1mdW5jdGlvbihHKXt0aGlzLmluaXQoRyk7fTt2YXIgRD1Z QUhPTy53aWRnZXQuT3ZlcmxheSxDPVlBSE9PLnV0aWwuRXZlbnQsRT1ZQUhPTy51 dGlsLkRvbSxCPVlBSE9PLnV0aWwuQ29uZmlnLEY9WUFIT08udXRpbC5DdXN0b21F dmVudCxBPVlBSE9PLndpZGdldC5PdmVybGF5TWFuYWdlcjtBLkNTU19GT0NVU0VE PSJmb2N1c2VkIjtBLnByb3RvdHlwZT17Y29uc3RydWN0b3I6QSxvdmVybGF5czpu dWxsLGluaXREZWZhdWx0Q29uZmlnOmZ1bmN0aW9uKCl7dGhpcy5jZmcuYWRkUHJv cGVydHkoIm92ZXJsYXlzIix7c3VwcHJlc3NFdmVudDp0cnVlfSk7dGhpcy5jZmcu YWRkUHJvcGVydHkoImZvY3VzZXZlbnQiLHt2YWx1ZToibW91c2Vkb3duIn0pO30s aW5pdDpmdW5jdGlvbihJKXt0aGlzLmNmZz1uZXcgQih0aGlzKTt0aGlzLmluaXRE ZWZhdWx0Q29uZmlnKCk7aWYoSSl7dGhpcy5jZmcuYXBwbHlDb25maWcoSSx0cnVl KTt9dGhpcy5jZmcuZmlyZVF1ZXVlKCk7dmFyIEg9bnVsbDt0aGlzLmdldEFjdGl2 ZT1mdW5jdGlvbigpe3JldHVybiBIO307dGhpcy5mb2N1cz1mdW5jdGlvbihKKXt2 YXIgSz10aGlzLmZpbmQoSik7aWYoSyl7Sy5mb2N1cygpO319O3RoaXMucmVtb3Zl PWZ1bmN0aW9uKEspe3ZhciBNPXRoaXMuZmluZChLKSxKO2lmKE0pe2lmKEg9PU0p e0g9bnVsbDt9dmFyIEw9KE0uZWxlbWVudD09PW51bGwmJk0uY2ZnPT09bnVsbCk/ dHJ1ZTpmYWxzZTtpZighTCl7Sj1FLmdldFN0eWxlKE0uZWxlbWVudCwiekluZGV4 Iik7TS5jZmcuc2V0UHJvcGVydHkoInpJbmRleCIsLTEwMDAsdHJ1ZSk7fXRoaXMu b3ZlcmxheXMuc29ydCh0aGlzLmNvbXBhcmVaSW5kZXhEZXNjKTt0aGlzLm92ZXJs YXlzPXRoaXMub3ZlcmxheXMuc2xpY2UoMCwodGhpcy5vdmVybGF5cy5sZW5ndGgt MSkpO00uaGlkZUV2ZW50LnVuc3Vic2NyaWJlKE0uYmx1cik7TS5kZXN0cm95RXZl bnQudW5zdWJzY3JpYmUodGhpcy5fb25PdmVybGF5RGVzdHJveSxNKTtNLmZvY3Vz RXZlbnQudW5zdWJzY3JpYmUodGhpcy5fb25PdmVybGF5Rm9jdXNIYW5kbGVyLE0p O00uYmx1ckV2ZW50LnVuc3Vic2NyaWJlKHRoaXMuX29uT3ZlcmxheUJsdXJIYW5k bGVyLE0pO2lmKCFMKXtDLnJlbW92ZUxpc3RlbmVyKE0uZWxlbWVudCx0aGlzLmNm Zy5nZXRQcm9wZXJ0eSgiZm9jdXNldmVudCIpLHRoaXMuX29uT3ZlcmxheUVsZW1l bnRGb2N1cyk7TS5jZmcuc2V0UHJvcGVydHkoInpJbmRleCIsSix0cnVlKTtNLmNm Zy5zZXRQcm9wZXJ0eSgibWFuYWdlciIsbnVsbCk7fWlmKE0uZm9jdXNFdmVudC5f bWFuYWdlZCl7TS5mb2N1c0V2ZW50PW51bGw7fWlmKE0uYmx1ckV2ZW50Ll9tYW5h Z2VkKXtNLmJsdXJFdmVudD1udWxsO31pZihNLmZvY3VzLl9tYW5hZ2VkKXtNLmZv Y3VzPW51bGw7fWlmKE0uYmx1ci5fbWFuYWdlZCl7TS5ibHVyPW51bGw7fX19O3Ro aXMuYmx1ckFsbD1mdW5jdGlvbigpe3ZhciBLPXRoaXMub3ZlcmxheXMubGVuZ3Ro LEo7aWYoSz4wKXtKPUstMTtkb3t0aGlzLm92ZXJsYXlzW0pdLmJsdXIoKTt9d2hp bGUoSi0tKTt9fTt0aGlzLl9tYW5hZ2VCbHVyPWZ1bmN0aW9uKEope3ZhciBLPWZh bHNlO2lmKEg9PUope0UucmVtb3ZlQ2xhc3MoSC5lbGVtZW50LEEuQ1NTX0ZPQ1VT RUQpO0g9bnVsbDtLPXRydWU7fXJldHVybiBLO307dGhpcy5fbWFuYWdlRm9jdXM9 ZnVuY3Rpb24oSil7dmFyIEs9ZmFsc2U7aWYoSCE9Sil7aWYoSCl7SC5ibHVyKCk7 fUg9Sjt0aGlzLmJyaW5nVG9Ub3AoSCk7RS5hZGRDbGFzcyhILmVsZW1lbnQsQS5D U1NfRk9DVVNFRCk7Sz10cnVlO31yZXR1cm4gSzt9O3ZhciBHPXRoaXMuY2ZnLmdl dFByb3BlcnR5KCJvdmVybGF5cyIpO2lmKCF0aGlzLm92ZXJsYXlzKXt0aGlzLm92 ZXJsYXlzPVtdO31pZihHKXt0aGlzLnJlZ2lzdGVyKEcpO3RoaXMub3ZlcmxheXMu c29ydCh0aGlzLmNvbXBhcmVaSW5kZXhEZXNjKTt9fSxfb25PdmVybGF5RWxlbWVu dEZvY3VzOmZ1bmN0aW9uKEkpe3ZhciBHPUMuZ2V0VGFyZ2V0KEkpLEg9dGhpcy5j bG9zZTtpZihIJiYoRz09SHx8RS5pc0FuY2VzdG9yKEgsRykpKXt0aGlzLmJsdXIo KTt9ZWxzZXt0aGlzLmZvY3VzKCk7fX0sX29uT3ZlcmxheURlc3Ryb3k6ZnVuY3Rp b24oSCxHLEkpe3RoaXMucmVtb3ZlKEkpO30sX29uT3ZlcmxheUZvY3VzSGFuZGxl cjpmdW5jdGlvbihILEcsSSl7dGhpcy5fbWFuYWdlRm9jdXMoSSk7fSxfb25PdmVy bGF5Qmx1ckhhbmRsZXI6ZnVuY3Rpb24oSCxHLEkpe3RoaXMuX21hbmFnZUJsdXIo SSk7fSxfYmluZEZvY3VzOmZ1bmN0aW9uKEcpe3ZhciBIPXRoaXM7aWYoIUcuZm9j dXNFdmVudCl7Ry5mb2N1c0V2ZW50PUcuY3JlYXRlRXZlbnQoImZvY3VzIik7Ry5m b2N1c0V2ZW50LnNpZ25hdHVyZT1GLkxJU1Q7Ry5mb2N1c0V2ZW50Ll9tYW5hZ2Vk PXRydWU7fWVsc2V7Ry5mb2N1c0V2ZW50LnN1YnNjcmliZShILl9vbk92ZXJsYXlG b2N1c0hhbmRsZXIsRyxIKTt9aWYoIUcuZm9jdXMpe0Mub24oRy5lbGVtZW50LEgu Y2ZnLmdldFByb3BlcnR5KCJmb2N1c2V2ZW50IiksSC5fb25PdmVybGF5RWxlbWVu dEZvY3VzLG51bGwsRyk7Ry5mb2N1cz1mdW5jdGlvbigpe2lmKEguX21hbmFnZUZv Y3VzKHRoaXMpKXtpZih0aGlzLmNmZy5nZXRQcm9wZXJ0eSgidmlzaWJsZSIpJiZ0 aGlzLmZvY3VzRmlyc3Qpe3RoaXMuZm9jdXNGaXJzdCgpO310aGlzLmZvY3VzRXZl bnQuZmlyZSgpO319O0cuZm9jdXMuX21hbmFnZWQ9dHJ1ZTt9fSxfYmluZEJsdXI6 ZnVuY3Rpb24oRyl7dmFyIEg9dGhpcztpZighRy5ibHVyRXZlbnQpe0cuYmx1ckV2 ZW50PUcuY3JlYXRlRXZlbnQoImJsdXIiKTtHLmJsdXJFdmVudC5zaWduYXR1cmU9 Ri5MSVNUO0cuZm9jdXNFdmVudC5fbWFuYWdlZD10cnVlO31lbHNle0cuYmx1ckV2 ZW50LnN1YnNjcmliZShILl9vbk92ZXJsYXlCbHVySGFuZGxlcixHLEgpO31pZigh Ry5ibHVyKXtHLmJsdXI9ZnVuY3Rpb24oKXtpZihILl9tYW5hZ2VCbHVyKHRoaXMp KXt0aGlzLmJsdXJFdmVudC5maXJlKCk7fX07Ry5ibHVyLl9tYW5hZ2VkPXRydWU7 fUcuaGlkZUV2ZW50LnN1YnNjcmliZShHLmJsdXIpO30sX2JpbmREZXN0cm95OmZ1 bmN0aW9uKEcpe3ZhciBIPXRoaXM7Ry5kZXN0cm95RXZlbnQuc3Vic2NyaWJlKEgu X29uT3ZlcmxheURlc3Ryb3ksRyxIKTt9LF9zeW5jWkluZGV4OmZ1bmN0aW9uKEcp e3ZhciBIPUUuZ2V0U3R5bGUoRy5lbGVtZW50LCJ6SW5kZXgiKTtpZighaXNOYU4o SCkpe0cuY2ZnLnNldFByb3BlcnR5KCJ6SW5kZXgiLHBhcnNlSW50KEgsMTApKTt9 ZWxzZXtHLmNmZy5zZXRQcm9wZXJ0eSgiekluZGV4IiwwKTt9fSxyZWdpc3Rlcjpm dW5jdGlvbihHKXt2YXIgSj1mYWxzZSxILEk7aWYoRyBpbnN0YW5jZW9mIEQpe0cu Y2ZnLmFkZFByb3BlcnR5KCJtYW5hZ2VyIix7dmFsdWU6dGhpc30pO3RoaXMuX2Jp bmRGb2N1cyhHKTt0aGlzLl9iaW5kQmx1cihHKTt0aGlzLl9iaW5kRGVzdHJveShH KTt0aGlzLl9zeW5jWkluZGV4KEcpO3RoaXMub3ZlcmxheXMucHVzaChHKTt0aGlz LmJyaW5nVG9Ub3AoRyk7Sj10cnVlO31lbHNle2lmKEcgaW5zdGFuY2VvZiBBcnJh eSl7Zm9yKEg9MCxJPUcubGVuZ3RoO0g8STtIKyspe0o9dGhpcy5yZWdpc3RlcihH W0hdKXx8Sjt9fX1yZXR1cm4gSjt9LGJyaW5nVG9Ub3A6ZnVuY3Rpb24oTSl7dmFy IEk9dGhpcy5maW5kKE0pLEwsRyxKO2lmKEkpe0o9dGhpcy5vdmVybGF5cztKLnNv cnQodGhpcy5jb21wYXJlWkluZGV4RGVzYyk7Rz1KWzBdO2lmKEcpe0w9RS5nZXRT dHlsZShHLmVsZW1lbnQsInpJbmRleCIpOwppZighaXNOYU4oTCkpe3ZhciBLPWZh bHNlO2lmKEchPT1JKXtLPXRydWU7fWVsc2V7aWYoSi5sZW5ndGg+MSl7dmFyIEg9 RS5nZXRTdHlsZShKWzFdLmVsZW1lbnQsInpJbmRleCIpO2lmKCFpc05hTihIKSYm KEw9PUgpKXtLPXRydWU7fX19aWYoSyl7SS5jZmcuc2V0UHJvcGVydHkoInppbmRl eCIsKHBhcnNlSW50KEwsMTApKzIpKTt9fUouc29ydCh0aGlzLmNvbXBhcmVaSW5k ZXhEZXNjKTt9fX0sZmluZDpmdW5jdGlvbihHKXt2YXIgSz1HIGluc3RhbmNlb2Yg RCxJPXRoaXMub3ZlcmxheXMsTT1JLmxlbmd0aCxKPW51bGwsTCxIO2lmKEt8fHR5 cGVvZiBHPT0ic3RyaW5nIil7Zm9yKEg9TS0xO0g+PTA7SC0tKXtMPUlbSF07aWYo KEsmJihMPT09RykpfHwoTC5pZD09Rykpe0o9TDticmVhazt9fX1yZXR1cm4gSjt9 LGNvbXBhcmVaSW5kZXhEZXNjOmZ1bmN0aW9uKEosSSl7dmFyIEg9KEouY2ZnKT9K LmNmZy5nZXRQcm9wZXJ0eSgiekluZGV4Iik6bnVsbCxHPShJLmNmZyk/SS5jZmcu Z2V0UHJvcGVydHkoInpJbmRleCIpOm51bGw7aWYoSD09PW51bGwmJkc9PT1udWxs KXtyZXR1cm4gMDt9ZWxzZXtpZihIPT09bnVsbCl7cmV0dXJuIDE7fWVsc2V7aWYo Rz09PW51bGwpe3JldHVybiAtMTt9ZWxzZXtpZihIPkcpe3JldHVybiAtMTt9ZWxz ZXtpZihIPEcpe3JldHVybiAxO31lbHNle3JldHVybiAwO319fX19fSxzaG93QWxs OmZ1bmN0aW9uKCl7dmFyIEg9dGhpcy5vdmVybGF5cyxJPUgubGVuZ3RoLEc7Zm9y KEc9SS0xO0c+PTA7Ry0tKXtIW0ddLnNob3coKTt9fSxoaWRlQWxsOmZ1bmN0aW9u KCl7dmFyIEg9dGhpcy5vdmVybGF5cyxJPUgubGVuZ3RoLEc7Zm9yKEc9SS0xO0c+ PTA7Ry0tKXtIW0ddLmhpZGUoKTt9fSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVy biJPdmVybGF5TWFuYWdlciI7fX07fSgpKTsoZnVuY3Rpb24oKXtZQUhPTy53aWRn ZXQuVG9vbHRpcD1mdW5jdGlvbihQLE8pe1lBSE9PLndpZGdldC5Ub29sdGlwLnN1 cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLFAsTyk7fTt2YXIgRT1ZQUhP Ty5sYW5nLE49WUFIT08udXRpbC5FdmVudCxNPVlBSE9PLnV0aWwuQ3VzdG9tRXZl bnQsQz1ZQUhPTy51dGlsLkRvbSxKPVlBSE9PLndpZGdldC5Ub29sdGlwLEg9WUFI T08uZW52LnVhLEc9KEguaWUmJihILmllPD02fHxkb2N1bWVudC5jb21wYXRNb2Rl PT0iQmFja0NvbXBhdCIpKSxGLEk9eyJQUkVWRU5UX09WRVJMQVAiOntrZXk6InBy ZXZlbnRvdmVybGFwIix2YWx1ZTp0cnVlLHZhbGlkYXRvcjpFLmlzQm9vbGVhbixz dXBlcmNlZGVzOlsieCIsInkiLCJ4eSJdfSwiU0hPV19ERUxBWSI6e2tleToic2hv d2RlbGF5Iix2YWx1ZToyMDAsdmFsaWRhdG9yOkUuaXNOdW1iZXJ9LCJBVVRPX0RJ U01JU1NfREVMQVkiOntrZXk6ImF1dG9kaXNtaXNzZGVsYXkiLHZhbHVlOjUwMDAs dmFsaWRhdG9yOkUuaXNOdW1iZXJ9LCJISURFX0RFTEFZIjp7a2V5OiJoaWRlZGVs YXkiLHZhbHVlOjI1MCx2YWxpZGF0b3I6RS5pc051bWJlcn0sIlRFWFQiOntrZXk6 InRleHQiLHN1cHByZXNzRXZlbnQ6dHJ1ZX0sIkNPTlRBSU5FUiI6e2tleToiY29u dGFpbmVyIn0sIkRJU0FCTEVEIjp7a2V5OiJkaXNhYmxlZCIsdmFsdWU6ZmFsc2Us c3VwcHJlc3NFdmVudDp0cnVlfX0sQT17IkNPTlRFWFRfTU9VU0VfT1ZFUiI6ImNv bnRleHRNb3VzZU92ZXIiLCJDT05URVhUX01PVVNFX09VVCI6ImNvbnRleHRNb3Vz ZU91dCIsIkNPTlRFWFRfVFJJR0dFUiI6ImNvbnRleHRUcmlnZ2VyIn07Si5DU1Nf VE9PTFRJUD0ieXVpLXR0IjtmdW5jdGlvbiBLKFEsTyl7dmFyIFA9dGhpcy5jZmcs Uj1QLmdldFByb3BlcnR5KCJ3aWR0aCIpO2lmKFI9PU8pe1Auc2V0UHJvcGVydHko IndpZHRoIixRKTt9fWZ1bmN0aW9uIEQoUCxPKXtpZigiX29yaWdpbmFsV2lkdGgi IGluIHRoaXMpe0suY2FsbCh0aGlzLHRoaXMuX29yaWdpbmFsV2lkdGgsdGhpcy5f Zm9yY2VkV2lkdGgpO312YXIgUT1kb2N1bWVudC5ib2R5LFU9dGhpcy5jZmcsVD1V LmdldFByb3BlcnR5KCJ3aWR0aCIpLFIsUztpZigoIVR8fFQ9PSJhdXRvIikmJihV LmdldFByb3BlcnR5KCJjb250YWluZXIiKSE9UXx8VS5nZXRQcm9wZXJ0eSgieCIp Pj1DLmdldFZpZXdwb3J0V2lkdGgoKXx8VS5nZXRQcm9wZXJ0eSgieSIpPj1DLmdl dFZpZXdwb3J0SGVpZ2h0KCkpKXtTPXRoaXMuZWxlbWVudC5jbG9uZU5vZGUodHJ1 ZSk7Uy5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iO1Muc3R5bGUudG9wPSIwcHgi O1Muc3R5bGUubGVmdD0iMHB4IjtRLmFwcGVuZENoaWxkKFMpO1I9KFMub2Zmc2V0 V2lkdGgrInB4Iik7US5yZW1vdmVDaGlsZChTKTtTPW51bGw7VS5zZXRQcm9wZXJ0 eSgid2lkdGgiLFIpO1UucmVmaXJlRXZlbnQoInh5Iik7dGhpcy5fb3JpZ2luYWxX aWR0aD1UfHwiIjt0aGlzLl9mb3JjZWRXaWR0aD1SO319ZnVuY3Rpb24gQihQLE8s USl7dGhpcy5yZW5kZXIoUSk7fWZ1bmN0aW9uIEwoKXtOLm9uRE9NUmVhZHkoQix0 aGlzLmNmZy5nZXRQcm9wZXJ0eSgiY29udGFpbmVyIiksdGhpcyk7fVlBSE9PLmV4 dGVuZChKLFlBSE9PLndpZGdldC5PdmVybGF5LHtpbml0OmZ1bmN0aW9uKFAsTyl7 Si5zdXBlcmNsYXNzLmluaXQuY2FsbCh0aGlzLFApO3RoaXMuYmVmb3JlSW5pdEV2 ZW50LmZpcmUoSik7Qy5hZGRDbGFzcyh0aGlzLmVsZW1lbnQsSi5DU1NfVE9PTFRJ UCk7aWYoTyl7dGhpcy5jZmcuYXBwbHlDb25maWcoTyx0cnVlKTt9dGhpcy5jZmcu cXVldWVQcm9wZXJ0eSgidmlzaWJsZSIsZmFsc2UpO3RoaXMuY2ZnLnF1ZXVlUHJv cGVydHkoImNvbnN0cmFpbnRvdmlld3BvcnQiLHRydWUpO3RoaXMuc2V0Qm9keSgi Iik7dGhpcy5zdWJzY3JpYmUoImNoYW5nZUNvbnRlbnQiLEQpO3RoaXMuc3Vic2Ny aWJlKCJpbml0IixMKTt0aGlzLnN1YnNjcmliZSgicmVuZGVyIix0aGlzLm9uUmVu ZGVyKTt0aGlzLmluaXRFdmVudC5maXJlKEopO30saW5pdEV2ZW50czpmdW5jdGlv bigpe0ouc3VwZXJjbGFzcy5pbml0RXZlbnRzLmNhbGwodGhpcyk7dmFyIE89TS5M SVNUO3RoaXMuY29udGV4dE1vdXNlT3ZlckV2ZW50PXRoaXMuY3JlYXRlRXZlbnQo QS5DT05URVhUX01PVVNFX09WRVIpO3RoaXMuY29udGV4dE1vdXNlT3ZlckV2ZW50 LnNpZ25hdHVyZT1PO3RoaXMuY29udGV4dE1vdXNlT3V0RXZlbnQ9dGhpcy5jcmVh dGVFdmVudChBLkNPTlRFWFRfTU9VU0VfT1VUKTt0aGlzLmNvbnRleHRNb3VzZU91 dEV2ZW50LnNpZ25hdHVyZT1PO3RoaXMuY29udGV4dFRyaWdnZXJFdmVudD10aGlz LmNyZWF0ZUV2ZW50KEEuQ09OVEVYVF9UUklHR0VSKTt0aGlzLmNvbnRleHRUcmln Z2VyRXZlbnQuc2lnbmF0dXJlPU87fSxpbml0RGVmYXVsdENvbmZpZzpmdW5jdGlv bigpe0ouc3VwZXJjbGFzcy5pbml0RGVmYXVsdENvbmZpZy5jYWxsKHRoaXMpO3Ro aXMuY2ZnLmFkZFByb3BlcnR5KEkuUFJFVkVOVF9PVkVSTEFQLmtleSx7dmFsdWU6 SS5QUkVWRU5UX09WRVJMQVAudmFsdWUsdmFsaWRhdG9yOkkuUFJFVkVOVF9PVkVS TEFQLnZhbGlkYXRvcixzdXBlcmNlZGVzOkkuUFJFVkVOVF9PVkVSTEFQLnN1cGVy Y2VkZXN9KTt0aGlzLmNmZy5hZGRQcm9wZXJ0eShJLlNIT1dfREVMQVkua2V5LHto YW5kbGVyOnRoaXMuY29uZmlnU2hvd0RlbGF5LHZhbHVlOjIwMCx2YWxpZGF0b3I6 SS5TSE9XX0RFTEFZLnZhbGlkYXRvcn0pO3RoaXMuY2ZnLmFkZFByb3BlcnR5KEku QVVUT19ESVNNSVNTX0RFTEFZLmtleSx7aGFuZGxlcjp0aGlzLmNvbmZpZ0F1dG9E aXNtaXNzRGVsYXksdmFsdWU6SS5BVVRPX0RJU01JU1NfREVMQVkudmFsdWUsdmFs aWRhdG9yOkkuQVVUT19ESVNNSVNTX0RFTEFZLnZhbGlkYXRvcn0pO3RoaXMuY2Zn LmFkZFByb3BlcnR5KEkuSElERV9ERUxBWS5rZXkse2hhbmRsZXI6dGhpcy5jb25m aWdIaWRlRGVsYXksdmFsdWU6SS5ISURFX0RFTEFZLnZhbHVlLHZhbGlkYXRvcjpJ LkhJREVfREVMQVkudmFsaWRhdG9yfSk7dGhpcy5jZmcuYWRkUHJvcGVydHkoSS5U RVhULmtleSx7aGFuZGxlcjp0aGlzLmNvbmZpZ1RleHQsc3VwcHJlc3NFdmVudDpJ LlRFWFQuc3VwcHJlc3NFdmVudH0pO3RoaXMuY2ZnLmFkZFByb3BlcnR5KEkuQ09O VEFJTkVSLmtleSx7aGFuZGxlcjp0aGlzLmNvbmZpZ0NvbnRhaW5lcix2YWx1ZTpk b2N1bWVudC5ib2R5fSk7dGhpcy5jZmcuYWRkUHJvcGVydHkoSS5ESVNBQkxFRC5r ZXkse2hhbmRsZXI6dGhpcy5jb25maWdDb250YWluZXIsdmFsdWU6SS5ESVNBQkxF RC52YWx1ZSxzdXByZXNzRXZlbnQ6SS5ESVNBQkxFRC5zdXBwcmVzc0V2ZW50fSk7 fSxjb25maWdUZXh0OmZ1bmN0aW9uKFAsTyxRKXt2YXIgUj1PWzBdO2lmKFIpe3Ro aXMuc2V0Qm9keShSKTt9fSxjb25maWdDb250YWluZXI6ZnVuY3Rpb24oUSxQLFIp e3ZhciBPPVBbMF07aWYodHlwZW9mIE89PSJzdHJpbmciKXt0aGlzLmNmZy5zZXRQ cm9wZXJ0eSgiY29udGFpbmVyIixkb2N1bWVudC5nZXRFbGVtZW50QnlJZChPKSx0 cnVlKTt9fSxfcmVtb3ZlRXZlbnRMaXN0ZW5lcnM6ZnVuY3Rpb24oKXt2YXIgUj10 aGlzLl9jb250ZXh0LE8sUSxQO2lmKFIpe089Ui5sZW5ndGg7aWYoTz4wKXtQPU8t MTtkb3tRPVJbUF07Ti5yZW1vdmVMaXN0ZW5lcihRLCJtb3VzZW92ZXIiLHRoaXMu b25Db250ZXh0TW91c2VPdmVyKTtOLnJlbW92ZUxpc3RlbmVyKFEsIm1vdXNlbW92 ZSIsdGhpcy5vbkNvbnRleHRNb3VzZU1vdmUpO04ucmVtb3ZlTGlzdGVuZXIoUSwi bW91c2VvdXQiLHRoaXMub25Db250ZXh0TW91c2VPdXQpO313aGlsZShQLS0pO319 fSxjb25maWdDb250ZXh0OmZ1bmN0aW9uKFQsUCxVKXt2YXIgUz1QWzBdLFYsTyxS LFE7aWYoUyl7aWYoIShTIGluc3RhbmNlb2YgQXJyYXkpKXtpZih0eXBlb2YgUz09 InN0cmluZyIpe3RoaXMuY2ZnLnNldFByb3BlcnR5KCJjb250ZXh0IixbZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoUyldLHRydWUpO31lbHNle3RoaXMuY2ZnLnNldFBy b3BlcnR5KCJjb250ZXh0IixbU10sdHJ1ZSk7fVM9dGhpcy5jZmcuZ2V0UHJvcGVy dHkoImNvbnRleHQiKTt9dGhpcy5fcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTt0aGlz Ll9jb250ZXh0PVM7Vj10aGlzLl9jb250ZXh0O2lmKFYpe089Vi5sZW5ndGg7aWYo Tz4wKXtRPU8tMTtkb3tSPVZbUV07Ti5vbihSLCJtb3VzZW92ZXIiLHRoaXMub25D b250ZXh0TW91c2VPdmVyLHRoaXMpO04ub24oUiwibW91c2Vtb3ZlIix0aGlzLm9u Q29udGV4dE1vdXNlTW92ZSx0aGlzKTtOLm9uKFIsIm1vdXNlb3V0Iix0aGlzLm9u Q29udGV4dE1vdXNlT3V0LHRoaXMpO313aGlsZShRLS0pO319fX0sb25Db250ZXh0 TW91c2VNb3ZlOmZ1bmN0aW9uKFAsTyl7Ty5wYWdlWD1OLmdldFBhZ2VYKFApO08u cGFnZVk9Ti5nZXRQYWdlWShQKTt9LG9uQ29udGV4dE1vdXNlT3ZlcjpmdW5jdGlv bihRLFApe3ZhciBPPXRoaXM7aWYoTy50aXRsZSl7UC5fdGVtcFRpdGxlPU8udGl0 bGU7Ty50aXRsZT0iIjt9aWYoUC5maXJlRXZlbnQoImNvbnRleHRNb3VzZU92ZXIi LE8sUSkhPT1mYWxzZSYmIVAuY2ZnLmdldFByb3BlcnR5KCJkaXNhYmxlZCIpKXtp ZihQLmhpZGVQcm9jSWQpe2NsZWFyVGltZW91dChQLmhpZGVQcm9jSWQpO1AuaGlk ZVByb2NJZD1udWxsO31OLm9uKE8sIm1vdXNlbW92ZSIsUC5vbkNvbnRleHRNb3Vz ZU1vdmUsUCk7UC5zaG93UHJvY0lkPVAuZG9TaG93KFEsTyk7fX0sb25Db250ZXh0 TW91c2VPdXQ6ZnVuY3Rpb24oUSxQKXt2YXIgTz10aGlzO2lmKFAuX3RlbXBUaXRs ZSl7Ty50aXRsZT1QLl90ZW1wVGl0bGU7UC5fdGVtcFRpdGxlPW51bGw7fWlmKFAu c2hvd1Byb2NJZCl7Y2xlYXJUaW1lb3V0KFAuc2hvd1Byb2NJZCk7UC5zaG93UHJv Y0lkPW51bGw7fWlmKFAuaGlkZVByb2NJZCl7Y2xlYXJUaW1lb3V0KFAuaGlkZVBy b2NJZCk7UC5oaWRlUHJvY0lkPW51bGw7fVAuZmlyZUV2ZW50KCJjb250ZXh0TW91 c2VPdXQiLE8sUSk7UC5oaWRlUHJvY0lkPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtQ LmhpZGUoKTt9LFAuY2ZnLmdldFByb3BlcnR5KCJoaWRlZGVsYXkiKSk7fSxkb1No b3c6ZnVuY3Rpb24oUSxPKXt2YXIgUj0yNSxQPXRoaXM7CmlmKEgub3BlcmEmJk8u dGFnTmFtZSYmTy50YWdOYW1lLnRvVXBwZXJDYXNlKCk9PSJBIil7Uis9MTI7fXJl dHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIFM9UC5jZmcuZ2V0UHJvcGVy dHkoInRleHQiKTtpZihQLl90ZW1wVGl0bGUmJihTPT09IiJ8fFlBSE9PLmxhbmcu aXNVbmRlZmluZWQoUyl8fFlBSE9PLmxhbmcuaXNOdWxsKFMpKSl7UC5zZXRCb2R5 KFAuX3RlbXBUaXRsZSk7fWVsc2V7UC5jZmcucmVmaXJlRXZlbnQoInRleHQiKTt9 UC5tb3ZlVG8oUC5wYWdlWCxQLnBhZ2VZK1IpO2lmKFAuY2ZnLmdldFByb3BlcnR5 KCJwcmV2ZW50b3ZlcmxhcCIpKXtQLnByZXZlbnRPdmVybGFwKFAucGFnZVgsUC5w YWdlWSk7fU4ucmVtb3ZlTGlzdGVuZXIoTywibW91c2Vtb3ZlIixQLm9uQ29udGV4 dE1vdXNlTW92ZSk7UC5jb250ZXh0VHJpZ2dlckV2ZW50LmZpcmUoTyk7UC5zaG93 KCk7UC5oaWRlUHJvY0lkPVAuZG9IaWRlKCk7fSx0aGlzLmNmZy5nZXRQcm9wZXJ0 eSgic2hvd2RlbGF5IikpO30sZG9IaWRlOmZ1bmN0aW9uKCl7dmFyIE89dGhpczty ZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe08uaGlkZSgpO30sdGhpcy5jZmcu Z2V0UHJvcGVydHkoImF1dG9kaXNtaXNzZGVsYXkiKSk7fSxwcmV2ZW50T3Zlcmxh cDpmdW5jdGlvbihTLFIpe3ZhciBPPXRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQs UT1uZXcgWUFIT08udXRpbC5Qb2ludChTLFIpLFA9Qy5nZXRSZWdpb24odGhpcy5l bGVtZW50KTtQLnRvcC09NTtQLmxlZnQtPTU7UC5yaWdodCs9NTtQLmJvdHRvbSs9 NTtpZihQLmNvbnRhaW5zKFEpKXt0aGlzLmNmZy5zZXRQcm9wZXJ0eSgieSIsKFIt Ty01KSk7fX0sb25SZW5kZXI6ZnVuY3Rpb24oUyxSKXtmdW5jdGlvbiBUKCl7dmFy IFc9dGhpcy5lbGVtZW50LFY9dGhpcy51bmRlcmxheTtpZihWKXtWLnN0eWxlLndp ZHRoPShXLm9mZnNldFdpZHRoKzYpKyJweCI7Vi5zdHlsZS5oZWlnaHQ9KFcub2Zm c2V0SGVpZ2h0KzEpKyJweCI7fX1mdW5jdGlvbiBQKCl7Qy5hZGRDbGFzcyh0aGlz LnVuZGVybGF5LCJ5dWktdHQtc2hhZG93LXZpc2libGUiKTtpZihILmllKXt0aGlz LmZvcmNlVW5kZXJsYXlSZWRyYXcoKTt9fWZ1bmN0aW9uIE8oKXtDLnJlbW92ZUNs YXNzKHRoaXMudW5kZXJsYXksInl1aS10dC1zaGFkb3ctdmlzaWJsZSIpO31mdW5j dGlvbiBVKCl7dmFyIFg9dGhpcy51bmRlcmxheSxXLFYsWixZO2lmKCFYKXtXPXRo aXMuZWxlbWVudDtWPVlBSE9PLndpZGdldC5Nb2R1bGU7Wj1ILmllO1k9dGhpcztp ZighRil7Rj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtGLmNsYXNzTmFt ZT0ieXVpLXR0LXNoYWRvdyI7fVg9Ri5jbG9uZU5vZGUoZmFsc2UpO1cuYXBwZW5k Q2hpbGQoWCk7dGhpcy51bmRlcmxheT1YO3RoaXMuX3NoYWRvdz10aGlzLnVuZGVy bGF5O1AuY2FsbCh0aGlzKTt0aGlzLnN1YnNjcmliZSgiYmVmb3JlU2hvdyIsUCk7 dGhpcy5zdWJzY3JpYmUoImhpZGUiLE8pO2lmKEcpe3dpbmRvdy5zZXRUaW1lb3V0 KGZ1bmN0aW9uKCl7VC5jYWxsKFkpO30sMCk7dGhpcy5jZmcuc3Vic2NyaWJlVG9D b25maWdFdmVudCgid2lkdGgiLFQpO3RoaXMuY2ZnLnN1YnNjcmliZVRvQ29uZmln RXZlbnQoImhlaWdodCIsVCk7dGhpcy5zdWJzY3JpYmUoImNoYW5nZUNvbnRlbnQi LFQpO1YudGV4dFJlc2l6ZUV2ZW50LnN1YnNjcmliZShULHRoaXMsdHJ1ZSk7dGhp cy5zdWJzY3JpYmUoImRlc3Ryb3kiLGZ1bmN0aW9uKCl7Vi50ZXh0UmVzaXplRXZl bnQudW5zdWJzY3JpYmUoVCx0aGlzKTt9KTt9fX1mdW5jdGlvbiBRKCl7VS5jYWxs KHRoaXMpO3RoaXMudW5zdWJzY3JpYmUoImJlZm9yZVNob3ciLFEpO31pZih0aGlz LmNmZy5nZXRQcm9wZXJ0eSgidmlzaWJsZSIpKXtVLmNhbGwodGhpcyk7fWVsc2V7 dGhpcy5zdWJzY3JpYmUoImJlZm9yZVNob3ciLFEpO319LGZvcmNlVW5kZXJsYXlS ZWRyYXc6ZnVuY3Rpb24oKXt2YXIgTz10aGlzO0MuYWRkQ2xhc3MoTy51bmRlcmxh eSwieXVpLWZvcmNlLXJlZHJhdyIpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtDLnJl bW92ZUNsYXNzKE8udW5kZXJsYXksInl1aS1mb3JjZS1yZWRyYXciKTt9LDApO30s ZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX3JlbW92ZUV2ZW50TGlzdGVuZXJzKCk7 Si5zdXBlcmNsYXNzLmRlc3Ryb3kuY2FsbCh0aGlzKTt9LHRvU3RyaW5nOmZ1bmN0 aW9uKCl7cmV0dXJuIlRvb2x0aXAgIit0aGlzLmlkO319KTt9KCkpOyhmdW5jdGlv bigpe1lBSE9PLndpZGdldC5QYW5lbD1mdW5jdGlvbihWLFUpe1lBSE9PLndpZGdl dC5QYW5lbC5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxWLFUpO307 dmFyIFM9bnVsbDt2YXIgRT1ZQUhPTy5sYW5nLEY9WUFIT08udXRpbCxBPUYuRG9t LFQ9Ri5FdmVudCxNPUYuQ3VzdG9tRXZlbnQsSz1ZQUhPTy51dGlsLktleUxpc3Rl bmVyLEk9Ri5Db25maWcsSD1ZQUhPTy53aWRnZXQuT3ZlcmxheSxPPVlBSE9PLndp ZGdldC5QYW5lbCxMPVlBSE9PLmVudi51YSxQPShMLmllJiYoTC5pZTw9Nnx8ZG9j dW1lbnQuY29tcGF0TW9kZT09IkJhY2tDb21wYXQiKSksRyxRLEMsRD17IlNIT1df TUFTSyI6InNob3dNYXNrIiwiSElERV9NQVNLIjoiaGlkZU1hc2siLCJEUkFHIjoi ZHJhZyJ9LE49eyJDTE9TRSI6e2tleToiY2xvc2UiLHZhbHVlOnRydWUsdmFsaWRh dG9yOkUuaXNCb29sZWFuLHN1cGVyY2VkZXM6WyJ2aXNpYmxlIl19LCJEUkFHR0FC TEUiOntrZXk6ImRyYWdnYWJsZSIsdmFsdWU6KEYuREQ/dHJ1ZTpmYWxzZSksdmFs aWRhdG9yOkUuaXNCb29sZWFuLHN1cGVyY2VkZXM6WyJ2aXNpYmxlIl19LCJEUkFH X09OTFkiOntrZXk6ImRyYWdvbmx5Iix2YWx1ZTpmYWxzZSx2YWxpZGF0b3I6RS5p c0Jvb2xlYW4sc3VwZXJjZWRlczpbImRyYWdnYWJsZSJdfSwiVU5ERVJMQVkiOntr ZXk6InVuZGVybGF5Iix2YWx1ZToic2hhZG93IixzdXBlcmNlZGVzOlsidmlzaWJs ZSJdfSwiTU9EQUwiOntrZXk6Im1vZGFsIix2YWx1ZTpmYWxzZSx2YWxpZGF0b3I6 RS5pc0Jvb2xlYW4sc3VwZXJjZWRlczpbInZpc2libGUiLCJ6aW5kZXgiXX0sIktF WV9MSVNURU5FUlMiOntrZXk6ImtleWxpc3RlbmVycyIsc3VwcHJlc3NFdmVudDp0 cnVlLHN1cGVyY2VkZXM6WyJ2aXNpYmxlIl19LCJTVFJJTkdTIjp7a2V5OiJzdHJp bmdzIixzdXBlcmNlZGVzOlsiY2xvc2UiXSx2YWxpZGF0b3I6RS5pc09iamVjdCx2 YWx1ZTp7Y2xvc2U6IkNsb3NlIn19fTtPLkNTU19QQU5FTD0ieXVpLXBhbmVsIjtP LkNTU19QQU5FTF9DT05UQUlORVI9Inl1aS1wYW5lbC1jb250YWluZXIiO08uRk9D VVNBQkxFPVsiYSIsImJ1dHRvbiIsInNlbGVjdCIsInRleHRhcmVhIiwiaW5wdXQi LCJpZnJhbWUiXTtmdW5jdGlvbiBKKFYsVSl7aWYoIXRoaXMuaGVhZGVyJiZ0aGlz LmNmZy5nZXRQcm9wZXJ0eSgiZHJhZ2dhYmxlIikpe3RoaXMuc2V0SGVhZGVyKCIm IzE2MDsiKTt9fWZ1bmN0aW9uIFIoVixVLFcpe3ZhciBaPVdbMF0sWD1XWzFdLFk9 dGhpcy5jZmcsYT1ZLmdldFByb3BlcnR5KCJ3aWR0aCIpO2lmKGE9PVgpe1kuc2V0 UHJvcGVydHkoIndpZHRoIixaKTt9dGhpcy51bnN1YnNjcmliZSgiaGlkZSIsUixX KTt9ZnVuY3Rpb24gQihWLFUpe3ZhciBZLFgsVztpZihQKXtZPXRoaXMuY2ZnO1g9 WS5nZXRQcm9wZXJ0eSgid2lkdGgiKTtpZighWHx8WD09ImF1dG8iKXtXPSh0aGlz LmVsZW1lbnQub2Zmc2V0V2lkdGgrInB4Iik7WS5zZXRQcm9wZXJ0eSgid2lkdGgi LFcpO3RoaXMuc3Vic2NyaWJlKCJoaWRlIixSLFsoWHx8IiIpLFddKTt9fX1ZQUhP Ty5leHRlbmQoTyxILHtpbml0OmZ1bmN0aW9uKFYsVSl7Ty5zdXBlcmNsYXNzLmlu aXQuY2FsbCh0aGlzLFYpO3RoaXMuYmVmb3JlSW5pdEV2ZW50LmZpcmUoTyk7QS5h ZGRDbGFzcyh0aGlzLmVsZW1lbnQsTy5DU1NfUEFORUwpO3RoaXMuYnVpbGRXcmFw cGVyKCk7aWYoVSl7dGhpcy5jZmcuYXBwbHlDb25maWcoVSx0cnVlKTt9dGhpcy5z dWJzY3JpYmUoInNob3dNYXNrIix0aGlzLl9hZGRGb2N1c0hhbmRsZXJzKTt0aGlz LnN1YnNjcmliZSgiaGlkZU1hc2siLHRoaXMuX3JlbW92ZUZvY3VzSGFuZGxlcnMp O3RoaXMuc3Vic2NyaWJlKCJiZWZvcmVSZW5kZXIiLEopO3RoaXMuc3Vic2NyaWJl KCJyZW5kZXIiLGZ1bmN0aW9uKCl7dGhpcy5zZXRGaXJzdExhc3RGb2N1c2FibGUo KTt0aGlzLnN1YnNjcmliZSgiY2hhbmdlQ29udGVudCIsdGhpcy5zZXRGaXJzdExh c3RGb2N1c2FibGUpO30pO3RoaXMuc3Vic2NyaWJlKCJzaG93Iix0aGlzLmZvY3Vz Rmlyc3QpO3RoaXMuaW5pdEV2ZW50LmZpcmUoTyk7fSxfb25FbGVtZW50Rm9jdXM6 ZnVuY3Rpb24oWil7aWYoUz09PXRoaXMpe3ZhciBZPVQuZ2V0VGFyZ2V0KFopLFg9 ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFY9KFkhPT1YJiZZIT09d2luZG93KTtp ZihWJiZZIT09dGhpcy5lbGVtZW50JiZZIT09dGhpcy5tYXNrJiYhQS5pc0FuY2Vz dG9yKHRoaXMuZWxlbWVudCxZKSl7dHJ5e2lmKHRoaXMuZmlyc3RFbGVtZW50KXt0 aGlzLmZpcnN0RWxlbWVudC5mb2N1cygpO31lbHNle2lmKHRoaXMuX21vZGFsRm9j dXMpe3RoaXMuX21vZGFsRm9jdXMuZm9jdXMoKTt9ZWxzZXt0aGlzLmlubmVyRWxl bWVudC5mb2N1cygpO319fWNhdGNoKFcpe3RyeXtpZihWJiZZIT09ZG9jdW1lbnQu Ym9keSl7WS5ibHVyKCk7fX1jYXRjaChVKXt9fX19fSxfYWRkRm9jdXNIYW5kbGVy czpmdW5jdGlvbihWLFUpe2lmKCF0aGlzLmZpcnN0RWxlbWVudCl7aWYoTC53ZWJr aXR8fEwub3BlcmEpe2lmKCF0aGlzLl9tb2RhbEZvY3VzKXt0aGlzLl9jcmVhdGVI aWRkZW5Gb2N1c0VsZW1lbnQoKTt9fWVsc2V7dGhpcy5pbm5lckVsZW1lbnQudGFi SW5kZXg9MDt9fXRoaXMuc2V0VGFiTG9vcCh0aGlzLmZpcnN0RWxlbWVudCx0aGlz Lmxhc3RFbGVtZW50KTtULm9uRm9jdXMoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50 LHRoaXMuX29uRWxlbWVudEZvY3VzLHRoaXMsdHJ1ZSk7Uz10aGlzO30sX2NyZWF0 ZUhpZGRlbkZvY3VzRWxlbWVudDpmdW5jdGlvbigpe3ZhciBVPWRvY3VtZW50LmNy ZWF0ZUVsZW1lbnQoImJ1dHRvbiIpO1Uuc3R5bGUuaGVpZ2h0PSIxcHgiO1Uuc3R5 bGUud2lkdGg9IjFweCI7VS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO1Uuc3R5 bGUubGVmdD0iLTEwMDAwZW0iO1Uuc3R5bGUub3BhY2l0eT0wO1UudGFiSW5kZXg9 LTE7dGhpcy5pbm5lckVsZW1lbnQuYXBwZW5kQ2hpbGQoVSk7dGhpcy5fbW9kYWxG b2N1cz1VO30sX3JlbW92ZUZvY3VzSGFuZGxlcnM6ZnVuY3Rpb24oVixVKXtULnJl bW92ZUZvY3VzTGlzdGVuZXIoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHRoaXMu X29uRWxlbWVudEZvY3VzLHRoaXMpO2lmKFM9PXRoaXMpe1M9bnVsbDt9fSxmb2N1 c0ZpcnN0OmZ1bmN0aW9uKFcsVSxZKXt2YXIgVj10aGlzLmZpcnN0RWxlbWVudDtp ZihVJiZVWzFdKXtULnN0b3BFdmVudChVWzFdKTt9aWYoVil7dHJ5e1YuZm9jdXMo KTt9Y2F0Y2goWCl7fX19LGZvY3VzTGFzdDpmdW5jdGlvbihXLFUsWSl7dmFyIFY9 dGhpcy5sYXN0RWxlbWVudDtpZihVJiZVWzFdKXtULnN0b3BFdmVudChVWzFdKTt9 aWYoVil7dHJ5e1YuZm9jdXMoKTt9Y2F0Y2goWCl7fX19LHNldFRhYkxvb3A6ZnVu Y3Rpb24oWCxaKXt2YXIgVj10aGlzLnByZXZlbnRCYWNrVGFiLFc9dGhpcy5wcmV2 ZW50VGFiT3V0LFU9dGhpcy5zaG93RXZlbnQsWT10aGlzLmhpZGVFdmVudDtpZihW KXtWLmRpc2FibGUoKTtVLnVuc3Vic2NyaWJlKFYuZW5hYmxlLFYpO1kudW5zdWJz Y3JpYmUoVi5kaXNhYmxlLFYpO1Y9dGhpcy5wcmV2ZW50QmFja1RhYj1udWxsO31p ZihXKXtXLmRpc2FibGUoKTtVLnVuc3Vic2NyaWJlKFcuZW5hYmxlLFcpO1kudW5z dWJzY3JpYmUoVy5kaXNhYmxlLFcpO1c9dGhpcy5wcmV2ZW50VGFiT3V0PW51bGw7 fWlmKFgpe3RoaXMucHJldmVudEJhY2tUYWI9bmV3IEsoWCx7c2hpZnQ6dHJ1ZSxr ZXlzOjl9LHtmbjp0aGlzLmZvY3VzTGFzdCxzY29wZTp0aGlzLGNvcnJlY3RTY29w ZTp0cnVlfSk7Vj10aGlzLnByZXZlbnRCYWNrVGFiO1Uuc3Vic2NyaWJlKFYuZW5h YmxlLFYsdHJ1ZSk7Clkuc3Vic2NyaWJlKFYuZGlzYWJsZSxWLHRydWUpO31pZiha KXt0aGlzLnByZXZlbnRUYWJPdXQ9bmV3IEsoWix7c2hpZnQ6ZmFsc2Usa2V5czo5 fSx7Zm46dGhpcy5mb2N1c0ZpcnN0LHNjb3BlOnRoaXMsY29ycmVjdFNjb3BlOnRy dWV9KTtXPXRoaXMucHJldmVudFRhYk91dDtVLnN1YnNjcmliZShXLmVuYWJsZSxX LHRydWUpO1kuc3Vic2NyaWJlKFcuZGlzYWJsZSxXLHRydWUpO319LGdldEZvY3Vz YWJsZUVsZW1lbnRzOmZ1bmN0aW9uKFUpe1U9VXx8dGhpcy5pbm5lckVsZW1lbnQ7 dmFyIFg9e307Zm9yKHZhciBXPTA7VzxPLkZPQ1VTQUJMRS5sZW5ndGg7VysrKXtY W08uRk9DVVNBQkxFW1ddXT10cnVlO31mdW5jdGlvbiBWKFkpe2lmKFkuZm9jdXMm JlkudHlwZSE9PSJoaWRkZW4iJiYhWS5kaXNhYmxlZCYmWFtZLnRhZ05hbWUudG9M b3dlckNhc2UoKV0pe3JldHVybiB0cnVlO31yZXR1cm4gZmFsc2U7fXJldHVybiBB LmdldEVsZW1lbnRzQnkoVixudWxsLFUpO30sc2V0Rmlyc3RMYXN0Rm9jdXNhYmxl OmZ1bmN0aW9uKCl7dGhpcy5maXJzdEVsZW1lbnQ9bnVsbDt0aGlzLmxhc3RFbGVt ZW50PW51bGw7dmFyIFU9dGhpcy5nZXRGb2N1c2FibGVFbGVtZW50cygpO3RoaXMu Zm9jdXNhYmxlRWxlbWVudHM9VTtpZihVLmxlbmd0aD4wKXt0aGlzLmZpcnN0RWxl bWVudD1VWzBdO3RoaXMubGFzdEVsZW1lbnQ9VVtVLmxlbmd0aC0xXTt9aWYodGhp cy5jZmcuZ2V0UHJvcGVydHkoIm1vZGFsIikpe3RoaXMuc2V0VGFiTG9vcCh0aGlz LmZpcnN0RWxlbWVudCx0aGlzLmxhc3RFbGVtZW50KTt9fSxpbml0RXZlbnRzOmZ1 bmN0aW9uKCl7Ty5zdXBlcmNsYXNzLmluaXRFdmVudHMuY2FsbCh0aGlzKTt2YXIg VT1NLkxJU1Q7dGhpcy5zaG93TWFza0V2ZW50PXRoaXMuY3JlYXRlRXZlbnQoRC5T SE9XX01BU0spO3RoaXMuc2hvd01hc2tFdmVudC5zaWduYXR1cmU9VTt0aGlzLmhp ZGVNYXNrRXZlbnQ9dGhpcy5jcmVhdGVFdmVudChELkhJREVfTUFTSyk7dGhpcy5o aWRlTWFza0V2ZW50LnNpZ25hdHVyZT1VO3RoaXMuZHJhZ0V2ZW50PXRoaXMuY3Jl YXRlRXZlbnQoRC5EUkFHKTt0aGlzLmRyYWdFdmVudC5zaWduYXR1cmU9VTt9LGlu aXREZWZhdWx0Q29uZmlnOmZ1bmN0aW9uKCl7Ty5zdXBlcmNsYXNzLmluaXREZWZh dWx0Q29uZmlnLmNhbGwodGhpcyk7dGhpcy5jZmcuYWRkUHJvcGVydHkoTi5DTE9T RS5rZXkse2hhbmRsZXI6dGhpcy5jb25maWdDbG9zZSx2YWx1ZTpOLkNMT1NFLnZh bHVlLHZhbGlkYXRvcjpOLkNMT1NFLnZhbGlkYXRvcixzdXBlcmNlZGVzOk4uQ0xP U0Uuc3VwZXJjZWRlc30pO3RoaXMuY2ZnLmFkZFByb3BlcnR5KE4uRFJBR0dBQkxF LmtleSx7aGFuZGxlcjp0aGlzLmNvbmZpZ0RyYWdnYWJsZSx2YWx1ZTooRi5ERCk/ dHJ1ZTpmYWxzZSx2YWxpZGF0b3I6Ti5EUkFHR0FCTEUudmFsaWRhdG9yLHN1cGVy Y2VkZXM6Ti5EUkFHR0FCTEUuc3VwZXJjZWRlc30pO3RoaXMuY2ZnLmFkZFByb3Bl cnR5KE4uRFJBR19PTkxZLmtleSx7dmFsdWU6Ti5EUkFHX09OTFkudmFsdWUsdmFs aWRhdG9yOk4uRFJBR19PTkxZLnZhbGlkYXRvcixzdXBlcmNlZGVzOk4uRFJBR19P TkxZLnN1cGVyY2VkZXN9KTt0aGlzLmNmZy5hZGRQcm9wZXJ0eShOLlVOREVSTEFZ LmtleSx7aGFuZGxlcjp0aGlzLmNvbmZpZ1VuZGVybGF5LHZhbHVlOk4uVU5ERVJM QVkudmFsdWUsc3VwZXJjZWRlczpOLlVOREVSTEFZLnN1cGVyY2VkZXN9KTt0aGlz LmNmZy5hZGRQcm9wZXJ0eShOLk1PREFMLmtleSx7aGFuZGxlcjp0aGlzLmNvbmZp Z01vZGFsLHZhbHVlOk4uTU9EQUwudmFsdWUsdmFsaWRhdG9yOk4uTU9EQUwudmFs aWRhdG9yLHN1cGVyY2VkZXM6Ti5NT0RBTC5zdXBlcmNlZGVzfSk7dGhpcy5jZmcu YWRkUHJvcGVydHkoTi5LRVlfTElTVEVORVJTLmtleSx7aGFuZGxlcjp0aGlzLmNv bmZpZ0tleUxpc3RlbmVycyxzdXBwcmVzc0V2ZW50Ok4uS0VZX0xJU1RFTkVSUy5z dXBwcmVzc0V2ZW50LHN1cGVyY2VkZXM6Ti5LRVlfTElTVEVORVJTLnN1cGVyY2Vk ZXN9KTt0aGlzLmNmZy5hZGRQcm9wZXJ0eShOLlNUUklOR1Mua2V5LHt2YWx1ZTpO LlNUUklOR1MudmFsdWUsaGFuZGxlcjp0aGlzLmNvbmZpZ1N0cmluZ3MsdmFsaWRh dG9yOk4uU1RSSU5HUy52YWxpZGF0b3Isc3VwZXJjZWRlczpOLlNUUklOR1Muc3Vw ZXJjZWRlc30pO30sY29uZmlnQ2xvc2U6ZnVuY3Rpb24oWCxWLFkpe3ZhciBaPVZb MF0sVz10aGlzLmNsb3NlLFU9dGhpcy5jZmcuZ2V0UHJvcGVydHkoInN0cmluZ3Mi KTtpZihaKXtpZighVyl7aWYoIUMpe0M9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi YSIpO0MuY2xhc3NOYW1lPSJjb250YWluZXItY2xvc2UiO0MuaHJlZj0iIyI7fVc9 Qy5jbG9uZU5vZGUodHJ1ZSk7dGhpcy5pbm5lckVsZW1lbnQuYXBwZW5kQ2hpbGQo Vyk7Vy5pbm5lckhUTUw9KFUmJlUuY2xvc2UpP1UuY2xvc2U6IiYjMTYwOyI7VC5v bihXLCJjbGljayIsdGhpcy5fZG9DbG9zZSx0aGlzLHRydWUpO3RoaXMuY2xvc2U9 Vzt9ZWxzZXtXLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjt9fWVsc2V7aWYoVyl7Vy5z dHlsZS5kaXNwbGF5PSJub25lIjt9fX0sX2RvQ2xvc2U6ZnVuY3Rpb24oVSl7VC5w cmV2ZW50RGVmYXVsdChVKTt0aGlzLmhpZGUoKTt9LGNvbmZpZ0RyYWdnYWJsZTpm dW5jdGlvbihWLFUsVyl7dmFyIFg9VVswXTtpZihYKXtpZighRi5ERCl7dGhpcy5j Zmcuc2V0UHJvcGVydHkoImRyYWdnYWJsZSIsZmFsc2UpO3JldHVybjt9aWYodGhp cy5oZWFkZXIpe0Euc2V0U3R5bGUodGhpcy5oZWFkZXIsImN1cnNvciIsIm1vdmUi KTt0aGlzLnJlZ2lzdGVyRHJhZ0Ryb3AoKTt9dGhpcy5zdWJzY3JpYmUoImJlZm9y ZVNob3ciLEIpO31lbHNle2lmKHRoaXMuZGQpe3RoaXMuZGQudW5yZWcoKTt9aWYo dGhpcy5oZWFkZXIpe0Euc2V0U3R5bGUodGhpcy5oZWFkZXIsImN1cnNvciIsImF1 dG8iKTt9dGhpcy51bnN1YnNjcmliZSgiYmVmb3JlU2hvdyIsQik7fX0sY29uZmln VW5kZXJsYXk6ZnVuY3Rpb24oZCxjLFope3ZhciBiPSh0aGlzLnBsYXRmb3JtPT0i bWFjIiYmTC5nZWNrbyksZT1jWzBdLnRvTG93ZXJDYXNlKCksVj10aGlzLnVuZGVy bGF5LFc9dGhpcy5lbGVtZW50O2Z1bmN0aW9uIFgoKXt2YXIgZj1mYWxzZTtpZigh Vil7aWYoIVEpe1E9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7US5jbGFz c05hbWU9InVuZGVybGF5Ijt9Vj1RLmNsb25lTm9kZShmYWxzZSk7dGhpcy5lbGVt ZW50LmFwcGVuZENoaWxkKFYpO3RoaXMudW5kZXJsYXk9VjtpZihQKXt0aGlzLnNp emVVbmRlcmxheSgpO3RoaXMuY2ZnLnN1YnNjcmliZVRvQ29uZmlnRXZlbnQoIndp ZHRoIix0aGlzLnNpemVVbmRlcmxheSk7dGhpcy5jZmcuc3Vic2NyaWJlVG9Db25m aWdFdmVudCgiaGVpZ2h0Iix0aGlzLnNpemVVbmRlcmxheSk7dGhpcy5jaGFuZ2VD b250ZW50RXZlbnQuc3Vic2NyaWJlKHRoaXMuc2l6ZVVuZGVybGF5KTtZQUhPTy53 aWRnZXQuTW9kdWxlLnRleHRSZXNpemVFdmVudC5zdWJzY3JpYmUodGhpcy5zaXpl VW5kZXJsYXksdGhpcyx0cnVlKTt9aWYoTC53ZWJraXQmJkwud2Via2l0PDQyMCl7 dGhpcy5jaGFuZ2VDb250ZW50RXZlbnQuc3Vic2NyaWJlKHRoaXMuZm9yY2VVbmRl cmxheVJlZHJhdyk7fWY9dHJ1ZTt9fWZ1bmN0aW9uIGEoKXt2YXIgZj1YLmNhbGwo dGhpcyk7aWYoIWYmJlApe3RoaXMuc2l6ZVVuZGVybGF5KCk7fXRoaXMuX3VuZGVy bGF5RGVmZXJyZWQ9ZmFsc2U7dGhpcy5iZWZvcmVTaG93RXZlbnQudW5zdWJzY3Jp YmUoYSk7fWZ1bmN0aW9uIFkoKXtpZih0aGlzLl91bmRlcmxheURlZmVycmVkKXt0 aGlzLmJlZm9yZVNob3dFdmVudC51bnN1YnNjcmliZShhKTt0aGlzLl91bmRlcmxh eURlZmVycmVkPWZhbHNlO31pZihWKXt0aGlzLmNmZy51bnN1YnNjcmliZUZyb21D b25maWdFdmVudCgid2lkdGgiLHRoaXMuc2l6ZVVuZGVybGF5KTt0aGlzLmNmZy51 bnN1YnNjcmliZUZyb21Db25maWdFdmVudCgiaGVpZ2h0Iix0aGlzLnNpemVVbmRl cmxheSk7dGhpcy5jaGFuZ2VDb250ZW50RXZlbnQudW5zdWJzY3JpYmUodGhpcy5z aXplVW5kZXJsYXkpO3RoaXMuY2hhbmdlQ29udGVudEV2ZW50LnVuc3Vic2NyaWJl KHRoaXMuZm9yY2VVbmRlcmxheVJlZHJhdyk7WUFIT08ud2lkZ2V0Lk1vZHVsZS50 ZXh0UmVzaXplRXZlbnQudW5zdWJzY3JpYmUodGhpcy5zaXplVW5kZXJsYXksdGhp cyx0cnVlKTt0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGQoVik7dGhpcy51bmRlcmxh eT1udWxsO319c3dpdGNoKGUpe2Nhc2Uic2hhZG93IjpBLnJlbW92ZUNsYXNzKFcs Im1hdHRlIik7QS5hZGRDbGFzcyhXLCJzaGFkb3ciKTticmVhaztjYXNlIm1hdHRl IjppZighYil7WS5jYWxsKHRoaXMpO31BLnJlbW92ZUNsYXNzKFcsInNoYWRvdyIp O0EuYWRkQ2xhc3MoVywibWF0dGUiKTticmVhaztkZWZhdWx0OmlmKCFiKXtZLmNh bGwodGhpcyk7fUEucmVtb3ZlQ2xhc3MoVywic2hhZG93Iik7QS5yZW1vdmVDbGFz cyhXLCJtYXR0ZSIpO2JyZWFrO31pZigoZT09InNoYWRvdyIpfHwoYiYmIVYpKXtp Zih0aGlzLmNmZy5nZXRQcm9wZXJ0eSgidmlzaWJsZSIpKXt2YXIgVT1YLmNhbGwo dGhpcyk7aWYoIVUmJlApe3RoaXMuc2l6ZVVuZGVybGF5KCk7fX1lbHNle2lmKCF0 aGlzLl91bmRlcmxheURlZmVycmVkKXt0aGlzLmJlZm9yZVNob3dFdmVudC5zdWJz Y3JpYmUoYSk7dGhpcy5fdW5kZXJsYXlEZWZlcnJlZD10cnVlO319fX0sY29uZmln TW9kYWw6ZnVuY3Rpb24oVixVLFgpe3ZhciBXPVVbMF07aWYoVyl7aWYoIXRoaXMu X2hhc01vZGFsaXR5RXZlbnRMaXN0ZW5lcnMpe3RoaXMuc3Vic2NyaWJlKCJiZWZv cmVTaG93Iix0aGlzLmJ1aWxkTWFzayk7dGhpcy5zdWJzY3JpYmUoImJlZm9yZVNo b3ciLHRoaXMuYnJpbmdUb1RvcCk7dGhpcy5zdWJzY3JpYmUoImJlZm9yZVNob3ci LHRoaXMuc2hvd01hc2spO3RoaXMuc3Vic2NyaWJlKCJoaWRlIix0aGlzLmhpZGVN YXNrKTtILndpbmRvd1Jlc2l6ZUV2ZW50LnN1YnNjcmliZSh0aGlzLnNpemVNYXNr LHRoaXMsdHJ1ZSk7dGhpcy5faGFzTW9kYWxpdHlFdmVudExpc3RlbmVycz10cnVl O319ZWxzZXtpZih0aGlzLl9oYXNNb2RhbGl0eUV2ZW50TGlzdGVuZXJzKXtpZih0 aGlzLmNmZy5nZXRQcm9wZXJ0eSgidmlzaWJsZSIpKXt0aGlzLmhpZGVNYXNrKCk7 dGhpcy5yZW1vdmVNYXNrKCk7fXRoaXMudW5zdWJzY3JpYmUoImJlZm9yZVNob3ci LHRoaXMuYnVpbGRNYXNrKTt0aGlzLnVuc3Vic2NyaWJlKCJiZWZvcmVTaG93Iix0 aGlzLmJyaW5nVG9Ub3ApO3RoaXMudW5zdWJzY3JpYmUoImJlZm9yZVNob3ciLHRo aXMuc2hvd01hc2spO3RoaXMudW5zdWJzY3JpYmUoImhpZGUiLHRoaXMuaGlkZU1h c2spO0gud2luZG93UmVzaXplRXZlbnQudW5zdWJzY3JpYmUodGhpcy5zaXplTWFz ayx0aGlzKTt0aGlzLl9oYXNNb2RhbGl0eUV2ZW50TGlzdGVuZXJzPWZhbHNlO319 fSxyZW1vdmVNYXNrOmZ1bmN0aW9uKCl7dmFyIFY9dGhpcy5tYXNrLFU7aWYoVil7 dGhpcy5oaWRlTWFzaygpO1U9Vi5wYXJlbnROb2RlO2lmKFUpe1UucmVtb3ZlQ2hp bGQoVik7fXRoaXMubWFzaz1udWxsO319LGNvbmZpZ0tleUxpc3RlbmVyczpmdW5j dGlvbihYLFUsYSl7dmFyIFc9VVswXSxaLFksVjtpZihXKXtpZihXIGluc3RhbmNl b2YgQXJyYXkpe1k9Vy5sZW5ndGg7Zm9yKFY9MDtWPFk7VisrKXtaPVdbVl07aWYo IUkuYWxyZWFkeVN1YnNjcmliZWQodGhpcy5zaG93RXZlbnQsWi5lbmFibGUsWikp e3RoaXMuc2hvd0V2ZW50LnN1YnNjcmliZShaLmVuYWJsZSxaLHRydWUpO31pZigh SS5hbHJlYWR5U3Vic2NyaWJlZCh0aGlzLmhpZGVFdmVudCxaLmRpc2FibGUsWikp e3RoaXMuaGlkZUV2ZW50LnN1YnNjcmliZShaLmRpc2FibGUsWix0cnVlKTt0aGlz LmRlc3Ryb3lFdmVudC5zdWJzY3JpYmUoWi5kaXNhYmxlLFosdHJ1ZSk7fX19ZWxz ZXtpZighSS5hbHJlYWR5U3Vic2NyaWJlZCh0aGlzLnNob3dFdmVudCxXLmVuYWJs ZSxXKSl7dGhpcy5zaG93RXZlbnQuc3Vic2NyaWJlKFcuZW5hYmxlLFcsdHJ1ZSk7 fWlmKCFJLmFscmVhZHlTdWJzY3JpYmVkKHRoaXMuaGlkZUV2ZW50LFcuZGlzYWJs ZSxXKSl7dGhpcy5oaWRlRXZlbnQuc3Vic2NyaWJlKFcuZGlzYWJsZSxXLHRydWUp Owp0aGlzLmRlc3Ryb3lFdmVudC5zdWJzY3JpYmUoVy5kaXNhYmxlLFcsdHJ1ZSk7 fX19fSxjb25maWdTdHJpbmdzOmZ1bmN0aW9uKFYsVSxXKXt2YXIgWD1FLm1lcmdl KE4uU1RSSU5HUy52YWx1ZSxVWzBdKTt0aGlzLmNmZy5zZXRQcm9wZXJ0eShOLlNU UklOR1Mua2V5LFgsdHJ1ZSk7fSxjb25maWdIZWlnaHQ6ZnVuY3Rpb24oWCxWLFkp e3ZhciBVPVZbMF0sVz10aGlzLmlubmVyRWxlbWVudDtBLnNldFN0eWxlKFcsImhl aWdodCIsVSk7dGhpcy5jZmcucmVmaXJlRXZlbnQoImlmcmFtZSIpO30sX2F1dG9G aWxsT25IZWlnaHRDaGFuZ2U6ZnVuY3Rpb24oWCxWLFcpe08uc3VwZXJjbGFzcy5f YXV0b0ZpbGxPbkhlaWdodENoYW5nZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYo UCl7dmFyIFU9dGhpcztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7VS5zaXplVW5kZXJs YXkoKTt9LDApO319LGNvbmZpZ1dpZHRoOmZ1bmN0aW9uKFgsVSxZKXt2YXIgVz1V WzBdLFY9dGhpcy5pbm5lckVsZW1lbnQ7QS5zZXRTdHlsZShWLCJ3aWR0aCIsVyk7 dGhpcy5jZmcucmVmaXJlRXZlbnQoImlmcmFtZSIpO30sY29uZmlnekluZGV4OmZ1 bmN0aW9uKFYsVSxYKXtPLnN1cGVyY2xhc3MuY29uZmlnekluZGV4LmNhbGwodGhp cyxWLFUsWCk7aWYodGhpcy5tYXNrfHx0aGlzLmNmZy5nZXRQcm9wZXJ0eSgibW9k YWwiKT09PXRydWUpe3ZhciBXPUEuZ2V0U3R5bGUodGhpcy5lbGVtZW50LCJ6SW5k ZXgiKTtpZighV3x8aXNOYU4oVykpe1c9MDt9aWYoVz09PTApe3RoaXMuY2ZnLnNl dFByb3BlcnR5KCJ6SW5kZXgiLDEpO31lbHNle3RoaXMuc3RhY2tNYXNrKCk7fX19 LGJ1aWxkV3JhcHBlcjpmdW5jdGlvbigpe3ZhciBXPXRoaXMuZWxlbWVudC5wYXJl bnROb2RlLFU9dGhpcy5lbGVtZW50LFY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi ZGl2Iik7Vi5jbGFzc05hbWU9Ty5DU1NfUEFORUxfQ09OVEFJTkVSO1YuaWQ9VS5p ZCsiX2MiO2lmKFcpe1cuaW5zZXJ0QmVmb3JlKFYsVSk7fVYuYXBwZW5kQ2hpbGQo VSk7dGhpcy5lbGVtZW50PVY7dGhpcy5pbm5lckVsZW1lbnQ9VTtBLnNldFN0eWxl KHRoaXMuaW5uZXJFbGVtZW50LCJ2aXNpYmlsaXR5IiwiaW5oZXJpdCIpO30sc2l6 ZVVuZGVybGF5OmZ1bmN0aW9uKCl7dmFyIFY9dGhpcy51bmRlcmxheSxVO2lmKFYp e1U9dGhpcy5lbGVtZW50O1Yuc3R5bGUud2lkdGg9VS5vZmZzZXRXaWR0aCsicHgi O1Yuc3R5bGUuaGVpZ2h0PVUub2Zmc2V0SGVpZ2h0KyJweCI7fX0scmVnaXN0ZXJE cmFnRHJvcDpmdW5jdGlvbigpe3ZhciBWPXRoaXM7aWYodGhpcy5oZWFkZXIpe2lm KCFGLkREKXtyZXR1cm47fXZhciBVPSh0aGlzLmNmZy5nZXRQcm9wZXJ0eSgiZHJh Z29ubHkiKT09PXRydWUpO3RoaXMuZGQ9bmV3IEYuREQodGhpcy5lbGVtZW50Lmlk LHRoaXMuaWQse2RyYWdPbmx5OlV9KTtpZighdGhpcy5oZWFkZXIuaWQpe3RoaXMu aGVhZGVyLmlkPXRoaXMuaWQrIl9oIjt9dGhpcy5kZC5zdGFydERyYWc9ZnVuY3Rp b24oKXt2YXIgWCxaLFcsYyxiLGE7aWYoWUFIT08uZW52LnVhLmllPT02KXtBLmFk ZENsYXNzKFYuZWxlbWVudCwiZHJhZyIpO31pZihWLmNmZy5nZXRQcm9wZXJ0eSgi Y29uc3RyYWludG92aWV3cG9ydCIpKXt2YXIgWT1ILlZJRVdQT1JUX09GRlNFVDtY PVYuZWxlbWVudC5vZmZzZXRIZWlnaHQ7Wj1WLmVsZW1lbnQub2Zmc2V0V2lkdGg7 Vz1BLmdldFZpZXdwb3J0V2lkdGgoKTtjPUEuZ2V0Vmlld3BvcnRIZWlnaHQoKTti PUEuZ2V0RG9jdW1lbnRTY3JvbGxMZWZ0KCk7YT1BLmdldERvY3VtZW50U2Nyb2xs VG9wKCk7aWYoWCtZPGMpe3RoaXMubWluWT1hK1k7dGhpcy5tYXhZPWErYy1YLVk7 fWVsc2V7dGhpcy5taW5ZPWErWTt0aGlzLm1heFk9YStZO31pZihaK1k8Vyl7dGhp cy5taW5YPWIrWTt0aGlzLm1heFg9YitXLVotWTt9ZWxzZXt0aGlzLm1pblg9YitZ O3RoaXMubWF4WD1iK1k7fXRoaXMuY29uc3RyYWluWD10cnVlO3RoaXMuY29uc3Ry YWluWT10cnVlO31lbHNle3RoaXMuY29uc3RyYWluWD1mYWxzZTt0aGlzLmNvbnN0 cmFpblk9ZmFsc2U7fVYuZHJhZ0V2ZW50LmZpcmUoInN0YXJ0RHJhZyIsYXJndW1l bnRzKTt9O3RoaXMuZGQub25EcmFnPWZ1bmN0aW9uKCl7Vi5zeW5jUG9zaXRpb24o KTtWLmNmZy5yZWZpcmVFdmVudCgiaWZyYW1lIik7aWYodGhpcy5wbGF0Zm9ybT09 Im1hYyImJllBSE9PLmVudi51YS5nZWNrbyl7dGhpcy5zaG93TWFjR2Vja29TY3Jv bGxiYXJzKCk7fVYuZHJhZ0V2ZW50LmZpcmUoIm9uRHJhZyIsYXJndW1lbnRzKTt9 O3RoaXMuZGQuZW5kRHJhZz1mdW5jdGlvbigpe2lmKFlBSE9PLmVudi51YS5pZT09 Nil7QS5yZW1vdmVDbGFzcyhWLmVsZW1lbnQsImRyYWciKTt9Vi5kcmFnRXZlbnQu ZmlyZSgiZW5kRHJhZyIsYXJndW1lbnRzKTtWLm1vdmVFdmVudC5maXJlKFYuY2Zn LmdldFByb3BlcnR5KCJ4eSIpKTt9O3RoaXMuZGQuc2V0SGFuZGxlRWxJZCh0aGlz LmhlYWRlci5pZCk7dGhpcy5kZC5hZGRJbnZhbGlkSGFuZGxlVHlwZSgiSU5QVVQi KTt0aGlzLmRkLmFkZEludmFsaWRIYW5kbGVUeXBlKCJTRUxFQ1QiKTt0aGlzLmRk LmFkZEludmFsaWRIYW5kbGVUeXBlKCJURVhUQVJFQSIpO319LGJ1aWxkTWFzazpm dW5jdGlvbigpe3ZhciBVPXRoaXMubWFzaztpZighVSl7aWYoIUcpe0c9ZG9jdW1l bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ry5jbGFzc05hbWU9Im1hc2siO0cuaW5u ZXJIVE1MPSImIzE2MDsiO31VPUcuY2xvbmVOb2RlKHRydWUpO1UuaWQ9dGhpcy5p ZCsiX21hc2siO2RvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKFUsZG9jdW1lbnQu Ym9keS5maXJzdENoaWxkKTt0aGlzLm1hc2s9VTtpZihZQUhPTy5lbnYudWEuZ2Vj a28mJnRoaXMucGxhdGZvcm09PSJtYWMiKXtBLmFkZENsYXNzKHRoaXMubWFzaywi YmxvY2stc2Nyb2xsYmFycyIpO310aGlzLnN0YWNrTWFzaygpO319LGhpZGVNYXNr OmZ1bmN0aW9uKCl7aWYodGhpcy5jZmcuZ2V0UHJvcGVydHkoIm1vZGFsIikmJnRo aXMubWFzayl7dGhpcy5tYXNrLnN0eWxlLmRpc3BsYXk9Im5vbmUiO0EucmVtb3Zl Q2xhc3MoZG9jdW1lbnQuYm9keSwibWFza2VkIik7dGhpcy5oaWRlTWFza0V2ZW50 LmZpcmUoKTt9fSxzaG93TWFzazpmdW5jdGlvbigpe2lmKHRoaXMuY2ZnLmdldFBy b3BlcnR5KCJtb2RhbCIpJiZ0aGlzLm1hc2spe0EuYWRkQ2xhc3MoZG9jdW1lbnQu Ym9keSwibWFza2VkIik7dGhpcy5zaXplTWFzaygpO3RoaXMubWFzay5zdHlsZS5k aXNwbGF5PSJibG9jayI7dGhpcy5zaG93TWFza0V2ZW50LmZpcmUoKTt9fSxzaXpl TWFzazpmdW5jdGlvbigpe2lmKHRoaXMubWFzayl7dmFyIFY9dGhpcy5tYXNrLFc9 QS5nZXRWaWV3cG9ydFdpZHRoKCksVT1BLmdldFZpZXdwb3J0SGVpZ2h0KCk7aWYo Vi5vZmZzZXRIZWlnaHQ+VSl7Vi5zdHlsZS5oZWlnaHQ9VSsicHgiO31pZihWLm9m ZnNldFdpZHRoPlcpe1Yuc3R5bGUud2lkdGg9VysicHgiO31WLnN0eWxlLmhlaWdo dD1BLmdldERvY3VtZW50SGVpZ2h0KCkrInB4IjtWLnN0eWxlLndpZHRoPUEuZ2V0 RG9jdW1lbnRXaWR0aCgpKyJweCI7fX0sc3RhY2tNYXNrOmZ1bmN0aW9uKCl7aWYo dGhpcy5tYXNrKXt2YXIgVT1BLmdldFN0eWxlKHRoaXMuZWxlbWVudCwiekluZGV4 Iik7aWYoIVlBSE9PLmxhbmcuaXNVbmRlZmluZWQoVSkmJiFpc05hTihVKSl7QS5z ZXRTdHlsZSh0aGlzLm1hc2ssInpJbmRleCIsVS0xKTt9fX0scmVuZGVyOmZ1bmN0 aW9uKFUpe3JldHVybiBPLnN1cGVyY2xhc3MucmVuZGVyLmNhbGwodGhpcyxVLHRo aXMuaW5uZXJFbGVtZW50KTt9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtILndpbmRvd1Jl c2l6ZUV2ZW50LnVuc3Vic2NyaWJlKHRoaXMuc2l6ZU1hc2ssdGhpcyk7dGhpcy5y ZW1vdmVNYXNrKCk7aWYodGhpcy5jbG9zZSl7VC5wdXJnZUVsZW1lbnQodGhpcy5j bG9zZSk7fU8uc3VwZXJjbGFzcy5kZXN0cm95LmNhbGwodGhpcyk7fSxmb3JjZVVu ZGVybGF5UmVkcmF3OmZ1bmN0aW9uKCl7dmFyIFU9dGhpcy51bmRlcmxheTtBLmFk ZENsYXNzKFUsInl1aS1mb3JjZS1yZWRyYXciKTtzZXRUaW1lb3V0KGZ1bmN0aW9u KCl7QS5yZW1vdmVDbGFzcyhVLCJ5dWktZm9yY2UtcmVkcmF3Iik7fSwwKTt9LHRv U3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIlBhbmVsICIrdGhpcy5pZDt9fSk7fSgp KTsoZnVuY3Rpb24oKXtZQUhPTy53aWRnZXQuRGlhbG9nPWZ1bmN0aW9uKEosSSl7 WUFIT08ud2lkZ2V0LkRpYWxvZy5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwo dGhpcyxKLEkpO307dmFyIEI9WUFIT08udXRpbC5FdmVudCxHPVlBSE9PLnV0aWwu Q3VzdG9tRXZlbnQsRT1ZQUhPTy51dGlsLkRvbSxBPVlBSE9PLndpZGdldC5EaWFs b2csRj1ZQUhPTy5sYW5nLEg9eyJCRUZPUkVfU1VCTUlUIjoiYmVmb3JlU3VibWl0 IiwiU1VCTUlUIjoic3VibWl0IiwiTUFOVUFMX1NVQk1JVCI6Im1hbnVhbFN1Ym1p dCIsIkFTWU5DX1NVQk1JVCI6ImFzeW5jU3VibWl0IiwiRk9STV9TVUJNSVQiOiJm b3JtU3VibWl0IiwiQ0FOQ0VMIjoiY2FuY2VsIn0sQz17IlBPU1RfTUVUSE9EIjp7 a2V5OiJwb3N0bWV0aG9kIix2YWx1ZToiYXN5bmMifSwiUE9TVF9EQVRBIjp7a2V5 OiJwb3N0ZGF0YSIsdmFsdWU6bnVsbH0sIkJVVFRPTlMiOntrZXk6ImJ1dHRvbnMi LHZhbHVlOiJub25lIixzdXBlcmNlZGVzOlsidmlzaWJsZSJdfSwiSElERUFGVEVS U1VCTUlUIjp7a2V5OiJoaWRlYWZ0ZXJzdWJtaXQiLHZhbHVlOnRydWV9fTtBLkNT U19ESUFMT0c9Inl1aS1kaWFsb2ciO2Z1bmN0aW9uIEQoKXt2YXIgTD10aGlzLl9h QnV0dG9ucyxKLEssSTtpZihGLmlzQXJyYXkoTCkpe0o9TC5sZW5ndGg7aWYoSj4w KXtJPUotMTtkb3tLPUxbSV07aWYoWUFIT08ud2lkZ2V0LkJ1dHRvbiYmSyBpbnN0 YW5jZW9mIFlBSE9PLndpZGdldC5CdXR0b24pe0suZGVzdHJveSgpO31lbHNle2lm KEsudGFnTmFtZS50b1VwcGVyQ2FzZSgpPT0iQlVUVE9OIil7Qi5wdXJnZUVsZW1l bnQoSyk7Qi5wdXJnZUVsZW1lbnQoSyxmYWxzZSk7fX19d2hpbGUoSS0tKTt9fX1Z QUhPTy5leHRlbmQoQSxZQUhPTy53aWRnZXQuUGFuZWwse2Zvcm06bnVsbCxpbml0 RGVmYXVsdENvbmZpZzpmdW5jdGlvbigpe0Euc3VwZXJjbGFzcy5pbml0RGVmYXVs dENvbmZpZy5jYWxsKHRoaXMpO3RoaXMuY2FsbGJhY2s9e3N1Y2Nlc3M6bnVsbCxm YWlsdXJlOm51bGwsYXJndW1lbnQ6bnVsbH07dGhpcy5jZmcuYWRkUHJvcGVydHko Qy5QT1NUX01FVEhPRC5rZXkse2hhbmRsZXI6dGhpcy5jb25maWdQb3N0TWV0aG9k LHZhbHVlOkMuUE9TVF9NRVRIT0QudmFsdWUsdmFsaWRhdG9yOmZ1bmN0aW9uKEkp e2lmKEkhPSJmb3JtIiYmSSE9ImFzeW5jIiYmSSE9Im5vbmUiJiZJIT0ibWFudWFs Iil7cmV0dXJuIGZhbHNlO31lbHNle3JldHVybiB0cnVlO319fSk7dGhpcy5jZmcu YWRkUHJvcGVydHkoQy5QT1NUX0RBVEEua2V5LHt2YWx1ZTpDLlBPU1RfREFUQS52 YWx1ZX0pO3RoaXMuY2ZnLmFkZFByb3BlcnR5KEMuSElERUFGVEVSU1VCTUlULmtl eSx7dmFsdWU6Qy5ISURFQUZURVJTVUJNSVQudmFsdWV9KTt0aGlzLmNmZy5hZGRQ cm9wZXJ0eShDLkJVVFRPTlMua2V5LHtoYW5kbGVyOnRoaXMuY29uZmlnQnV0dG9u cyx2YWx1ZTpDLkJVVFRPTlMudmFsdWUsc3VwZXJjZWRlczpDLkJVVFRPTlMuc3Vw ZXJjZWRlc30pO30saW5pdEV2ZW50czpmdW5jdGlvbigpe0Euc3VwZXJjbGFzcy5p bml0RXZlbnRzLmNhbGwodGhpcyk7dmFyIEk9Ry5MSVNUO3RoaXMuYmVmb3JlU3Vi bWl0RXZlbnQ9dGhpcy5jcmVhdGVFdmVudChILkJFRk9SRV9TVUJNSVQpO3RoaXMu YmVmb3JlU3VibWl0RXZlbnQuc2lnbmF0dXJlPUk7dGhpcy5zdWJtaXRFdmVudD10 aGlzLmNyZWF0ZUV2ZW50KEguU1VCTUlUKTt0aGlzLnN1Ym1pdEV2ZW50LnNpZ25h dHVyZT1JO3RoaXMubWFudWFsU3VibWl0RXZlbnQ9dGhpcy5jcmVhdGVFdmVudChI Lk1BTlVBTF9TVUJNSVQpO3RoaXMubWFudWFsU3VibWl0RXZlbnQuc2lnbmF0dXJl PUk7dGhpcy5hc3luY1N1Ym1pdEV2ZW50PXRoaXMuY3JlYXRlRXZlbnQoSC5BU1lO Q19TVUJNSVQpOwp0aGlzLmFzeW5jU3VibWl0RXZlbnQuc2lnbmF0dXJlPUk7dGhp cy5mb3JtU3VibWl0RXZlbnQ9dGhpcy5jcmVhdGVFdmVudChILkZPUk1fU1VCTUlU KTt0aGlzLmZvcm1TdWJtaXRFdmVudC5zaWduYXR1cmU9STt0aGlzLmNhbmNlbEV2 ZW50PXRoaXMuY3JlYXRlRXZlbnQoSC5DQU5DRUwpO3RoaXMuY2FuY2VsRXZlbnQu c2lnbmF0dXJlPUk7fSxpbml0OmZ1bmN0aW9uKEosSSl7QS5zdXBlcmNsYXNzLmlu aXQuY2FsbCh0aGlzLEopO3RoaXMuYmVmb3JlSW5pdEV2ZW50LmZpcmUoQSk7RS5h ZGRDbGFzcyh0aGlzLmVsZW1lbnQsQS5DU1NfRElBTE9HKTt0aGlzLmNmZy5zZXRQ cm9wZXJ0eSgidmlzaWJsZSIsZmFsc2UpO2lmKEkpe3RoaXMuY2ZnLmFwcGx5Q29u ZmlnKEksdHJ1ZSk7fXRoaXMuc2hvd0V2ZW50LnN1YnNjcmliZSh0aGlzLmZvY3Vz Rmlyc3QsdGhpcyx0cnVlKTt0aGlzLmJlZm9yZUhpZGVFdmVudC5zdWJzY3JpYmUo dGhpcy5ibHVyQnV0dG9ucyx0aGlzLHRydWUpO3RoaXMuc3Vic2NyaWJlKCJjaGFu Z2VCb2R5Iix0aGlzLnJlZ2lzdGVyRm9ybSk7dGhpcy5pbml0RXZlbnQuZmlyZShB KTt9LGRvU3VibWl0OmZ1bmN0aW9uKCl7dmFyIFA9WUFIT08udXRpbC5Db25uZWN0 LFE9dGhpcy5mb3JtLEs9ZmFsc2UsTj1mYWxzZSxSLE0sTCxJO3N3aXRjaCh0aGlz LmNmZy5nZXRQcm9wZXJ0eSgicG9zdG1ldGhvZCIpKXtjYXNlImFzeW5jIjpSPVEu ZWxlbWVudHM7TT1SLmxlbmd0aDtpZihNPjApe0w9TS0xO2Rve2lmKFJbTF0udHlw ZT09ImZpbGUiKXtLPXRydWU7YnJlYWs7fX13aGlsZShMLS0pO31pZihLJiZZQUhP Ty5lbnYudWEuaWUmJnRoaXMuaXNTZWN1cmUpe049dHJ1ZTt9ST10aGlzLl9nZXRG b3JtQXR0cmlidXRlcyhRKTtQLnNldEZvcm0oUSxLLE4pO3ZhciBKPXRoaXMuY2Zn LmdldFByb3BlcnR5KCJwb3N0ZGF0YSIpO3ZhciBPPVAuYXN5bmNSZXF1ZXN0KEku bWV0aG9kLEkuYWN0aW9uLHRoaXMuY2FsbGJhY2ssSik7dGhpcy5hc3luY1N1Ym1p dEV2ZW50LmZpcmUoTyk7YnJlYWs7Y2FzZSJmb3JtIjpRLnN1Ym1pdCgpO3RoaXMu Zm9ybVN1Ym1pdEV2ZW50LmZpcmUoKTticmVhaztjYXNlIm5vbmUiOmNhc2UibWFu dWFsIjp0aGlzLm1hbnVhbFN1Ym1pdEV2ZW50LmZpcmUoKTticmVhazt9fSxfZ2V0 Rm9ybUF0dHJpYnV0ZXM6ZnVuY3Rpb24oSyl7dmFyIEk9e21ldGhvZDpudWxsLGFj dGlvbjpudWxsfTtpZihLKXtpZihLLmdldEF0dHJpYnV0ZU5vZGUpe3ZhciBKPUsu Z2V0QXR0cmlidXRlTm9kZSgiYWN0aW9uIik7dmFyIEw9Sy5nZXRBdHRyaWJ1dGVO b2RlKCJtZXRob2QiKTtpZihKKXtJLmFjdGlvbj1KLnZhbHVlO31pZihMKXtJLm1l dGhvZD1MLnZhbHVlO319ZWxzZXtJLmFjdGlvbj1LLmdldEF0dHJpYnV0ZSgiYWN0 aW9uIik7SS5tZXRob2Q9Sy5nZXRBdHRyaWJ1dGUoIm1ldGhvZCIpO319SS5tZXRo b2Q9KEYuaXNTdHJpbmcoSS5tZXRob2QpP0kubWV0aG9kOiJQT1NUIikudG9VcHBl ckNhc2UoKTtJLmFjdGlvbj1GLmlzU3RyaW5nKEkuYWN0aW9uKT9JLmFjdGlvbjoi IjtyZXR1cm4gSTt9LHJlZ2lzdGVyRm9ybTpmdW5jdGlvbigpe3ZhciBJPXRoaXMu ZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZm9ybSIpWzBdO2lmKHRoaXMu Zm9ybSl7aWYodGhpcy5mb3JtPT1JJiZFLmlzQW5jZXN0b3IodGhpcy5lbGVtZW50 LHRoaXMuZm9ybSkpe3JldHVybjt9ZWxzZXtCLnB1cmdlRWxlbWVudCh0aGlzLmZv cm0pO3RoaXMuZm9ybT1udWxsO319aWYoIUkpe0k9ZG9jdW1lbnQuY3JlYXRlRWxl bWVudCgiZm9ybSIpO0kubmFtZT0iZnJtXyIrdGhpcy5pZDt0aGlzLmJvZHkuYXBw ZW5kQ2hpbGQoSSk7fWlmKEkpe3RoaXMuZm9ybT1JO0Iub24oSSwic3VibWl0Iix0 aGlzLl9zdWJtaXRIYW5kbGVyLHRoaXMsdHJ1ZSk7fX0sX3N1Ym1pdEhhbmRsZXI6 ZnVuY3Rpb24oSSl7Qi5zdG9wRXZlbnQoSSk7dGhpcy5zdWJtaXQoKTt0aGlzLmZv cm0uYmx1cigpO30sc2V0VGFiTG9vcDpmdW5jdGlvbihJLEope0k9SXx8dGhpcy5m aXJzdEJ1dHRvbjtKPXRoaXMubGFzdEJ1dHRvbnx8SjtBLnN1cGVyY2xhc3Muc2V0 VGFiTG9vcC5jYWxsKHRoaXMsSSxKKTt9LHNldEZpcnN0TGFzdEZvY3VzYWJsZTpm dW5jdGlvbigpe0Euc3VwZXJjbGFzcy5zZXRGaXJzdExhc3RGb2N1c2FibGUuY2Fs bCh0aGlzKTt2YXIgSixJLEssTD10aGlzLmZvY3VzYWJsZUVsZW1lbnRzO3RoaXMu Zmlyc3RGb3JtRWxlbWVudD1udWxsO3RoaXMubGFzdEZvcm1FbGVtZW50PW51bGw7 aWYodGhpcy5mb3JtJiZMJiZMLmxlbmd0aD4wKXtJPUwubGVuZ3RoO2ZvcihKPTA7 SjxJOysrSil7Sz1MW0pdO2lmKHRoaXMuZm9ybT09PUsuZm9ybSl7dGhpcy5maXJz dEZvcm1FbGVtZW50PUs7YnJlYWs7fX1mb3IoSj1JLTE7Sj49MDstLUope0s9TFtK XTtpZih0aGlzLmZvcm09PT1LLmZvcm0pe3RoaXMubGFzdEZvcm1FbGVtZW50PUs7 YnJlYWs7fX19fSxjb25maWdDbG9zZTpmdW5jdGlvbihKLEksSyl7QS5zdXBlcmNs YXNzLmNvbmZpZ0Nsb3NlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt9LF9kb0Nsb3Nl OmZ1bmN0aW9uKEkpe0IucHJldmVudERlZmF1bHQoSSk7dGhpcy5jYW5jZWwoKTt9 LGNvbmZpZ0J1dHRvbnM6ZnVuY3Rpb24oUyxSLE0pe3ZhciBOPVlBSE9PLndpZGdl dC5CdXR0b24sVT1SWzBdLEs9dGhpcy5pbm5lckVsZW1lbnQsVCxQLEosUSxPLEks TDtELmNhbGwodGhpcyk7dGhpcy5fYUJ1dHRvbnM9bnVsbDtpZihGLmlzQXJyYXko VSkpe089ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO08uY2xhc3NOYW1l PSJidXR0b24tZ3JvdXAiO1E9VS5sZW5ndGg7dGhpcy5fYUJ1dHRvbnM9W107dGhp cy5kZWZhdWx0SHRtbEJ1dHRvbj1udWxsO2ZvcihMPTA7TDxRO0wrKyl7VD1VW0xd O2lmKE4pe0o9bmV3IE4oe2xhYmVsOlQudGV4dH0pO0ouYXBwZW5kVG8oTyk7UD1K LmdldCgiZWxlbWVudCIpO2lmKFQuaXNEZWZhdWx0KXtKLmFkZENsYXNzKCJkZWZh dWx0Iik7dGhpcy5kZWZhdWx0SHRtbEJ1dHRvbj1QO31pZihGLmlzRnVuY3Rpb24o VC5oYW5kbGVyKSl7Si5zZXQoIm9uY2xpY2siLHtmbjpULmhhbmRsZXIsb2JqOnRo aXMsc2NvcGU6dGhpc30pO31lbHNle2lmKEYuaXNPYmplY3QoVC5oYW5kbGVyKSYm Ri5pc0Z1bmN0aW9uKFQuaGFuZGxlci5mbikpe0ouc2V0KCJvbmNsaWNrIix7Zm46 VC5oYW5kbGVyLmZuLG9iajooKCFGLmlzVW5kZWZpbmVkKFQuaGFuZGxlci5vYmop KT9ULmhhbmRsZXIub2JqOnRoaXMpLHNjb3BlOihULmhhbmRsZXIuc2NvcGV8fHRo aXMpfSk7fX10aGlzLl9hQnV0dG9uc1t0aGlzLl9hQnV0dG9ucy5sZW5ndGhdPUo7 fWVsc2V7UD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTtQLnNldEF0 dHJpYnV0ZSgidHlwZSIsImJ1dHRvbiIpO2lmKFQuaXNEZWZhdWx0KXtQLmNsYXNz TmFtZT0iZGVmYXVsdCI7dGhpcy5kZWZhdWx0SHRtbEJ1dHRvbj1QO31QLmlubmVy SFRNTD1ULnRleHQ7aWYoRi5pc0Z1bmN0aW9uKFQuaGFuZGxlcikpe0Iub24oUCwi Y2xpY2siLFQuaGFuZGxlcix0aGlzLHRydWUpO31lbHNle2lmKEYuaXNPYmplY3Qo VC5oYW5kbGVyKSYmRi5pc0Z1bmN0aW9uKFQuaGFuZGxlci5mbikpe0Iub24oUCwi Y2xpY2siLFQuaGFuZGxlci5mbiwoKCFGLmlzVW5kZWZpbmVkKFQuaGFuZGxlci5v YmopKT9ULmhhbmRsZXIub2JqOnRoaXMpLChULmhhbmRsZXIuc2NvcGV8fHRoaXMp KTt9fU8uYXBwZW5kQ2hpbGQoUCk7dGhpcy5fYUJ1dHRvbnNbdGhpcy5fYUJ1dHRv bnMubGVuZ3RoXT1QO31ULmh0bWxCdXR0b249UDtpZihMPT09MCl7dGhpcy5maXJz dEJ1dHRvbj1QO31pZihMPT0oUS0xKSl7dGhpcy5sYXN0QnV0dG9uPVA7fX10aGlz LnNldEZvb3RlcihPKTtJPXRoaXMuZm9vdGVyO2lmKEUuaW5Eb2N1bWVudCh0aGlz LmVsZW1lbnQpJiYhRS5pc0FuY2VzdG9yKEssSSkpe0suYXBwZW5kQ2hpbGQoSSk7 fXRoaXMuYnV0dG9uU3Bhbj1PO31lbHNle089dGhpcy5idXR0b25TcGFuO0k9dGhp cy5mb290ZXI7aWYoTyYmSSl7SS5yZW1vdmVDaGlsZChPKTt0aGlzLmJ1dHRvblNw YW49bnVsbDt0aGlzLmZpcnN0QnV0dG9uPW51bGw7dGhpcy5sYXN0QnV0dG9uPW51 bGw7dGhpcy5kZWZhdWx0SHRtbEJ1dHRvbj1udWxsO319dGhpcy5jaGFuZ2VDb250 ZW50RXZlbnQuZmlyZSgpO30sZ2V0QnV0dG9uczpmdW5jdGlvbigpe3JldHVybiB0 aGlzLl9hQnV0dG9uc3x8bnVsbDt9LGZvY3VzRmlyc3Q6ZnVuY3Rpb24oSyxJLE0p e3ZhciBKPXRoaXMuZmlyc3RGb3JtRWxlbWVudDtpZihJJiZJWzFdKXtCLnN0b3BF dmVudChJWzFdKTt9aWYoSil7dHJ5e0ouZm9jdXMoKTt9Y2F0Y2goTCl7fX1lbHNl e2lmKHRoaXMuZGVmYXVsdEh0bWxCdXR0b24pe3RoaXMuZm9jdXNEZWZhdWx0QnV0 dG9uKCk7fWVsc2V7dGhpcy5mb2N1c0ZpcnN0QnV0dG9uKCk7fX19LGZvY3VzTGFz dDpmdW5jdGlvbihLLEksTSl7dmFyIE49dGhpcy5jZmcuZ2V0UHJvcGVydHkoImJ1 dHRvbnMiKSxKPXRoaXMubGFzdEZvcm1FbGVtZW50O2lmKEkmJklbMV0pe0Iuc3Rv cEV2ZW50KElbMV0pO31pZihOJiZGLmlzQXJyYXkoTikpe3RoaXMuZm9jdXNMYXN0 QnV0dG9uKCk7fWVsc2V7aWYoSil7dHJ5e0ouZm9jdXMoKTt9Y2F0Y2goTCl7fX19 fSxfZ2V0QnV0dG9uOmZ1bmN0aW9uKEope3ZhciBJPVlBSE9PLndpZGdldC5CdXR0 b247aWYoSSYmSiYmSi5ub2RlTmFtZSYmSi5pZCl7Sj1JLmdldEJ1dHRvbihKLmlk KXx8Sjt9cmV0dXJuIEo7fSxmb2N1c0RlZmF1bHRCdXR0b246ZnVuY3Rpb24oKXt2 YXIgST10aGlzLl9nZXRCdXR0b24odGhpcy5kZWZhdWx0SHRtbEJ1dHRvbik7aWYo SSl7dHJ5e0kuZm9jdXMoKTt9Y2F0Y2goSil7fX19LGJsdXJCdXR0b25zOmZ1bmN0 aW9uKCl7dmFyIE49dGhpcy5jZmcuZ2V0UHJvcGVydHkoImJ1dHRvbnMiKSxLLE0s SixJO2lmKE4mJkYuaXNBcnJheShOKSl7Sz1OLmxlbmd0aDtpZihLPjApe0k9KEst MSk7ZG97TT1OW0ldO2lmKE0pe0o9dGhpcy5fZ2V0QnV0dG9uKE0uaHRtbEJ1dHRv bik7aWYoSil7dHJ5e0ouYmx1cigpO31jYXRjaChMKXt9fX19d2hpbGUoSS0tKTt9 fX0sZm9jdXNGaXJzdEJ1dHRvbjpmdW5jdGlvbigpe3ZhciBMPXRoaXMuY2ZnLmdl dFByb3BlcnR5KCJidXR0b25zIiksSyxJO2lmKEwmJkYuaXNBcnJheShMKSl7Sz1M WzBdO2lmKEspe0k9dGhpcy5fZ2V0QnV0dG9uKEsuaHRtbEJ1dHRvbik7aWYoSSl7 dHJ5e0kuZm9jdXMoKTt9Y2F0Y2goSil7fX19fX0sZm9jdXNMYXN0QnV0dG9uOmZ1 bmN0aW9uKCl7dmFyIE09dGhpcy5jZmcuZ2V0UHJvcGVydHkoImJ1dHRvbnMiKSxK LEwsSTtpZihNJiZGLmlzQXJyYXkoTSkpe0o9TS5sZW5ndGg7aWYoSj4wKXtMPU1b KEotMSldO2lmKEwpe0k9dGhpcy5fZ2V0QnV0dG9uKEwuaHRtbEJ1dHRvbik7aWYo SSl7dHJ5e0kuZm9jdXMoKTt9Y2F0Y2goSyl7fX19fX19LGNvbmZpZ1Bvc3RNZXRo b2Q6ZnVuY3Rpb24oSixJLEspe3RoaXMucmVnaXN0ZXJGb3JtKCk7fSx2YWxpZGF0 ZTpmdW5jdGlvbigpe3JldHVybiB0cnVlO30sc3VibWl0OmZ1bmN0aW9uKCl7aWYo dGhpcy52YWxpZGF0ZSgpKXt0aGlzLmJlZm9yZVN1Ym1pdEV2ZW50LmZpcmUoKTt0 aGlzLmRvU3VibWl0KCk7dGhpcy5zdWJtaXRFdmVudC5maXJlKCk7aWYodGhpcy5j ZmcuZ2V0UHJvcGVydHkoImhpZGVhZnRlcnN1Ym1pdCIpKXt0aGlzLmhpZGUoKTt9 cmV0dXJuIHRydWU7fWVsc2V7cmV0dXJuIGZhbHNlO319LGNhbmNlbDpmdW5jdGlv bigpe3RoaXMuY2FuY2VsRXZlbnQuZmlyZSgpO3RoaXMuaGlkZSgpO30sZ2V0RGF0 YTpmdW5jdGlvbigpe3ZhciBZPXRoaXMuZm9ybSxLLFIsVSxNLFMsUCxPLEosVixM LFcsWixJLE4sYSxYLFQ7ZnVuY3Rpb24gUShjKXt2YXIgYj1jLnRhZ05hbWUudG9V cHBlckNhc2UoKTtyZXR1cm4oKGI9PSJJTlBVVCJ8fGI9PSJURVhUQVJFQSJ8fGI9 PSJTRUxFQ1QiKSYmYy5uYW1lPT1NKTt9aWYoWSl7Sz1ZLmVsZW1lbnRzO1I9Sy5s ZW5ndGg7VT17fTtmb3IoWD0wO1g8UjtYKyspe009S1tYXS5uYW1lO1M9RS5nZXRF bGVtZW50c0J5KFEsIioiLFkpOwpQPVMubGVuZ3RoO2lmKFA+MCl7aWYoUD09MSl7 Uz1TWzBdO089Uy50eXBlO0o9Uy50YWdOYW1lLnRvVXBwZXJDYXNlKCk7c3dpdGNo KEope2Nhc2UiSU5QVVQiOmlmKE89PSJjaGVja2JveCIpe1VbTV09Uy5jaGVja2Vk O31lbHNle2lmKE8hPSJyYWRpbyIpe1VbTV09Uy52YWx1ZTt9fWJyZWFrO2Nhc2Ui VEVYVEFSRUEiOlVbTV09Uy52YWx1ZTticmVhaztjYXNlIlNFTEVDVCI6Vj1TLm9w dGlvbnM7TD1WLmxlbmd0aDtXPVtdO2ZvcihUPTA7VDxMO1QrKyl7Wj1WW1RdO2lm KFouc2VsZWN0ZWQpe0k9Wi52YWx1ZTtpZighSXx8ST09PSIiKXtJPVoudGV4dDt9 V1tXLmxlbmd0aF09STt9fVVbTV09VzticmVhazt9fWVsc2V7Tz1TWzBdLnR5cGU7 c3dpdGNoKE8pe2Nhc2UicmFkaW8iOmZvcihUPTA7VDxQO1QrKyl7Tj1TW1RdO2lm KE4uY2hlY2tlZCl7VVtNXT1OLnZhbHVlO2JyZWFrO319YnJlYWs7Y2FzZSJjaGVj a2JveCI6Vz1bXTtmb3IoVD0wO1Q8UDtUKyspe2E9U1tUXTtpZihhLmNoZWNrZWQp e1dbVy5sZW5ndGhdPWEudmFsdWU7fX1VW01dPVc7YnJlYWs7fX19fX1yZXR1cm4g VTt9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtELmNhbGwodGhpcyk7dGhpcy5fYUJ1dHRv bnM9bnVsbDt2YXIgST10aGlzLmVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo ImZvcm0iKSxKO2lmKEkubGVuZ3RoPjApe0o9SVswXTtpZihKKXtCLnB1cmdlRWxl bWVudChKKTtpZihKLnBhcmVudE5vZGUpe0oucGFyZW50Tm9kZS5yZW1vdmVDaGls ZChKKTt9dGhpcy5mb3JtPW51bGw7fX1BLnN1cGVyY2xhc3MuZGVzdHJveS5jYWxs KHRoaXMpO30sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iRGlhbG9nICIrdGhp cy5pZDt9fSk7fSgpKTsoZnVuY3Rpb24oKXtZQUhPTy53aWRnZXQuU2ltcGxlRGlh bG9nPWZ1bmN0aW9uKEUsRCl7WUFIT08ud2lkZ2V0LlNpbXBsZURpYWxvZy5zdXBl cmNsYXNzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxFLEQpO307dmFyIEM9WUFIT08u dXRpbC5Eb20sQj1ZQUhPTy53aWRnZXQuU2ltcGxlRGlhbG9nLEE9eyJJQ09OIjp7 a2V5OiJpY29uIix2YWx1ZToibm9uZSIsc3VwcHJlc3NFdmVudDp0cnVlfSwiVEVY VCI6e2tleToidGV4dCIsdmFsdWU6IiIsc3VwcHJlc3NFdmVudDp0cnVlLHN1cGVy Y2VkZXM6WyJpY29uIl19fTtCLklDT05fQkxPQ0s9ImJsY2tpY29uIjtCLklDT05f QUxBUk09ImFscnRpY29uIjtCLklDT05fSEVMUD0iaGxwaWNvbiI7Qi5JQ09OX0lO Rk89ImluZm9pY29uIjtCLklDT05fV0FSTj0id2Fybmljb24iO0IuSUNPTl9USVA9 InRpcGljb24iO0IuSUNPTl9DU1NfQ0xBU1NOQU1FPSJ5dWktaWNvbiI7Qi5DU1Nf U0lNUExFRElBTE9HPSJ5dWktc2ltcGxlLWRpYWxvZyI7WUFIT08uZXh0ZW5kKEIs WUFIT08ud2lkZ2V0LkRpYWxvZyx7aW5pdERlZmF1bHRDb25maWc6ZnVuY3Rpb24o KXtCLnN1cGVyY2xhc3MuaW5pdERlZmF1bHRDb25maWcuY2FsbCh0aGlzKTt0aGlz LmNmZy5hZGRQcm9wZXJ0eShBLklDT04ua2V5LHtoYW5kbGVyOnRoaXMuY29uZmln SWNvbix2YWx1ZTpBLklDT04udmFsdWUsc3VwcHJlc3NFdmVudDpBLklDT04uc3Vw cHJlc3NFdmVudH0pO3RoaXMuY2ZnLmFkZFByb3BlcnR5KEEuVEVYVC5rZXkse2hh bmRsZXI6dGhpcy5jb25maWdUZXh0LHZhbHVlOkEuVEVYVC52YWx1ZSxzdXBwcmVz c0V2ZW50OkEuVEVYVC5zdXBwcmVzc0V2ZW50LHN1cGVyY2VkZXM6QS5URVhULnN1 cGVyY2VkZXN9KTt9LGluaXQ6ZnVuY3Rpb24oRSxEKXtCLnN1cGVyY2xhc3MuaW5p dC5jYWxsKHRoaXMsRSk7dGhpcy5iZWZvcmVJbml0RXZlbnQuZmlyZShCKTtDLmFk ZENsYXNzKHRoaXMuZWxlbWVudCxCLkNTU19TSU1QTEVESUFMT0cpO3RoaXMuY2Zn LnF1ZXVlUHJvcGVydHkoInBvc3RtZXRob2QiLCJtYW51YWwiKTtpZihEKXt0aGlz LmNmZy5hcHBseUNvbmZpZyhELHRydWUpO310aGlzLmJlZm9yZVJlbmRlckV2ZW50 LnN1YnNjcmliZShmdW5jdGlvbigpe2lmKCF0aGlzLmJvZHkpe3RoaXMuc2V0Qm9k eSgiIik7fX0sdGhpcyx0cnVlKTt0aGlzLmluaXRFdmVudC5maXJlKEIpO30scmVn aXN0ZXJGb3JtOmZ1bmN0aW9uKCl7Qi5zdXBlcmNsYXNzLnJlZ2lzdGVyRm9ybS5j YWxsKHRoaXMpO3RoaXMuZm9ybS5pbm5lckhUTUwrPSc8aW5wdXQgdHlwZT0iaGlk ZGVuIiBuYW1lPSInK3RoaXMuaWQrJyIgdmFsdWU9IiIvPic7fSxjb25maWdJY29u OmZ1bmN0aW9uKEYsRSxKKXt2YXIgSz1FWzBdLEQ9dGhpcy5ib2R5LEk9Qi5JQ09O X0NTU19DTEFTU05BTUUsSCxHO2lmKEsmJkshPSJub25lIil7SD1DLmdldEVsZW1l bnRzQnlDbGFzc05hbWUoSSwiKiIsRCk7aWYoSCl7Rz1ILnBhcmVudE5vZGU7aWYo Ryl7Ry5yZW1vdmVDaGlsZChIKTtIPW51bGw7fX1pZihLLmluZGV4T2YoIi4iKT09 LTEpe0g9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO0guY2xhc3NOYW1l PShJKyIgIitLKTtILmlubmVySFRNTD0iJiMxNjA7Ijt9ZWxzZXtIPWRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoImltZyIpO0guc3JjPSh0aGlzLmltYWdlUm9vdCtLKTtI LmNsYXNzTmFtZT1JO31pZihIKXtELmluc2VydEJlZm9yZShILEQuZmlyc3RDaGls ZCk7fX19LGNvbmZpZ1RleHQ6ZnVuY3Rpb24oRSxELEYpe3ZhciBHPURbMF07aWYo Ryl7dGhpcy5zZXRCb2R5KEcpO3RoaXMuY2ZnLnJlZmlyZUV2ZW50KCJpY29uIik7 fX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iU2ltcGxlRGlhbG9nICIrdGhp cy5pZDt9fSk7fSgpKTsoZnVuY3Rpb24oKXtZQUhPTy53aWRnZXQuQ29udGFpbmVy RWZmZWN0PWZ1bmN0aW9uKEUsSCxHLEQsRil7aWYoIUYpe0Y9WUFIT08udXRpbC5B bmltO310aGlzLm92ZXJsYXk9RTt0aGlzLmF0dHJJbj1IO3RoaXMuYXR0ck91dD1H O3RoaXMudGFyZ2V0RWxlbWVudD1EfHxFLmVsZW1lbnQ7dGhpcy5hbmltQ2xhc3M9 Rjt9O3ZhciBCPVlBSE9PLnV0aWwuRG9tLEM9WUFIT08udXRpbC5DdXN0b21FdmVu dCxBPVlBSE9PLndpZGdldC5Db250YWluZXJFZmZlY3Q7QS5GQURFPWZ1bmN0aW9u KEQsRil7dmFyIEc9WUFIT08udXRpbC5FYXNpbmcsST17YXR0cmlidXRlczp7b3Bh Y2l0eTp7ZnJvbTowLHRvOjF9fSxkdXJhdGlvbjpGLG1ldGhvZDpHLmVhc2VJbn0s RT17YXR0cmlidXRlczp7b3BhY2l0eTp7dG86MH19LGR1cmF0aW9uOkYsbWV0aG9k OkcuZWFzZU91dH0sSD1uZXcgQShELEksRSxELmVsZW1lbnQpO0guaGFuZGxlVW5k ZXJsYXlTdGFydD1mdW5jdGlvbigpe3ZhciBLPXRoaXMub3ZlcmxheS51bmRlcmxh eTtpZihLJiZZQUhPTy5lbnYudWEuaWUpe3ZhciBKPShLLmZpbHRlcnMmJksuZmls dGVycy5sZW5ndGg+MCk7aWYoSil7Qi5hZGRDbGFzcyhELmVsZW1lbnQsInl1aS1l ZmZlY3QtZmFkZSIpO319fTtILmhhbmRsZVVuZGVybGF5Q29tcGxldGU9ZnVuY3Rp b24oKXt2YXIgSj10aGlzLm92ZXJsYXkudW5kZXJsYXk7aWYoSiYmWUFIT08uZW52 LnVhLmllKXtCLnJlbW92ZUNsYXNzKEQuZWxlbWVudCwieXVpLWVmZmVjdC1mYWRl Iik7fX07SC5oYW5kbGVTdGFydEFuaW1hdGVJbj1mdW5jdGlvbihLLEosTCl7Qi5h ZGRDbGFzcyhMLm92ZXJsYXkuZWxlbWVudCwiaGlkZS1zZWxlY3QiKTtpZighTC5v dmVybGF5LnVuZGVybGF5KXtMLm92ZXJsYXkuY2ZnLnJlZmlyZUV2ZW50KCJ1bmRl cmxheSIpO31MLmhhbmRsZVVuZGVybGF5U3RhcnQoKTtMLm92ZXJsYXkuX3NldERv bVZpc2liaWxpdHkodHJ1ZSk7Qi5zZXRTdHlsZShMLm92ZXJsYXkuZWxlbWVudCwi b3BhY2l0eSIsMCk7fTtILmhhbmRsZUNvbXBsZXRlQW5pbWF0ZUluPWZ1bmN0aW9u KEssSixMKXtCLnJlbW92ZUNsYXNzKEwub3ZlcmxheS5lbGVtZW50LCJoaWRlLXNl bGVjdCIpO2lmKEwub3ZlcmxheS5lbGVtZW50LnN0eWxlLmZpbHRlcil7TC5vdmVy bGF5LmVsZW1lbnQuc3R5bGUuZmlsdGVyPW51bGw7fUwuaGFuZGxlVW5kZXJsYXlD b21wbGV0ZSgpO0wub3ZlcmxheS5jZmcucmVmaXJlRXZlbnQoImlmcmFtZSIpO0wu YW5pbWF0ZUluQ29tcGxldGVFdmVudC5maXJlKCk7fTtILmhhbmRsZVN0YXJ0QW5p bWF0ZU91dD1mdW5jdGlvbihLLEosTCl7Qi5hZGRDbGFzcyhMLm92ZXJsYXkuZWxl bWVudCwiaGlkZS1zZWxlY3QiKTtMLmhhbmRsZVVuZGVybGF5U3RhcnQoKTt9O0gu aGFuZGxlQ29tcGxldGVBbmltYXRlT3V0PWZ1bmN0aW9uKEssSixMKXtCLnJlbW92 ZUNsYXNzKEwub3ZlcmxheS5lbGVtZW50LCJoaWRlLXNlbGVjdCIpO2lmKEwub3Zl cmxheS5lbGVtZW50LnN0eWxlLmZpbHRlcil7TC5vdmVybGF5LmVsZW1lbnQuc3R5 bGUuZmlsdGVyPW51bGw7fUwub3ZlcmxheS5fc2V0RG9tVmlzaWJpbGl0eShmYWxz ZSk7Qi5zZXRTdHlsZShMLm92ZXJsYXkuZWxlbWVudCwib3BhY2l0eSIsMSk7TC5o YW5kbGVVbmRlcmxheUNvbXBsZXRlKCk7TC5vdmVybGF5LmNmZy5yZWZpcmVFdmVu dCgiaWZyYW1lIik7TC5hbmltYXRlT3V0Q29tcGxldGVFdmVudC5maXJlKCk7fTtI LmluaXQoKTtyZXR1cm4gSDt9O0EuU0xJREU9ZnVuY3Rpb24oRixEKXt2YXIgST1Z QUhPTy51dGlsLkVhc2luZyxMPUYuY2ZnLmdldFByb3BlcnR5KCJ4Iil8fEIuZ2V0 WChGLmVsZW1lbnQpLEs9Ri5jZmcuZ2V0UHJvcGVydHkoInkiKXx8Qi5nZXRZKEYu ZWxlbWVudCksTT1CLmdldENsaWVudFdpZHRoKCksSD1GLmVsZW1lbnQub2Zmc2V0 V2lkdGgsSj17YXR0cmlidXRlczp7cG9pbnRzOnt0bzpbTCxLXX19LGR1cmF0aW9u OkQsbWV0aG9kOkkuZWFzZUlufSxFPXthdHRyaWJ1dGVzOntwb2ludHM6e3RvOlso TSsyNSksS119fSxkdXJhdGlvbjpELG1ldGhvZDpJLmVhc2VPdXR9LEc9bmV3IEEo RixKLEUsRi5lbGVtZW50LFlBSE9PLnV0aWwuTW90aW9uKTtHLmhhbmRsZVN0YXJ0 QW5pbWF0ZUluPWZ1bmN0aW9uKE8sTixQKXtQLm92ZXJsYXkuZWxlbWVudC5zdHls ZS5sZWZ0PSgoLTI1KS1IKSsicHgiO1Aub3ZlcmxheS5lbGVtZW50LnN0eWxlLnRv cD1LKyJweCI7fTtHLmhhbmRsZVR3ZWVuQW5pbWF0ZUluPWZ1bmN0aW9uKFEsUCxS KXt2YXIgUz1CLmdldFhZKFIub3ZlcmxheS5lbGVtZW50KSxPPVNbMF0sTj1TWzFd O2lmKEIuZ2V0U3R5bGUoUi5vdmVybGF5LmVsZW1lbnQsInZpc2liaWxpdHkiKT09 ImhpZGRlbiImJk88TCl7Ui5vdmVybGF5Ll9zZXREb21WaXNpYmlsaXR5KHRydWUp O31SLm92ZXJsYXkuY2ZnLnNldFByb3BlcnR5KCJ4eSIsW08sTl0sdHJ1ZSk7Ui5v dmVybGF5LmNmZy5yZWZpcmVFdmVudCgiaWZyYW1lIik7fTtHLmhhbmRsZUNvbXBs ZXRlQW5pbWF0ZUluPWZ1bmN0aW9uKE8sTixQKXtQLm92ZXJsYXkuY2ZnLnNldFBy b3BlcnR5KCJ4eSIsW0wsS10sdHJ1ZSk7UC5zdGFydFg9TDtQLnN0YXJ0WT1LO1Au b3ZlcmxheS5jZmcucmVmaXJlRXZlbnQoImlmcmFtZSIpO1AuYW5pbWF0ZUluQ29t cGxldGVFdmVudC5maXJlKCk7fTtHLmhhbmRsZVN0YXJ0QW5pbWF0ZU91dD1mdW5j dGlvbihPLE4sUil7dmFyIFA9Qi5nZXRWaWV3cG9ydFdpZHRoKCksUz1CLmdldFhZ KFIub3ZlcmxheS5lbGVtZW50KSxRPVNbMV07Ui5hbmltT3V0LmF0dHJpYnV0ZXMu cG9pbnRzLnRvPVsoUCsyNSksUV07fTtHLmhhbmRsZVR3ZWVuQW5pbWF0ZU91dD1m dW5jdGlvbihQLE8sUSl7dmFyIFM9Qi5nZXRYWShRLm92ZXJsYXkuZWxlbWVudCks Tj1TWzBdLFI9U1sxXTtRLm92ZXJsYXkuY2ZnLnNldFByb3BlcnR5KCJ4eSIsW04s Ul0sdHJ1ZSk7US5vdmVybGF5LmNmZy5yZWZpcmVFdmVudCgiaWZyYW1lIik7fTtH LmhhbmRsZUNvbXBsZXRlQW5pbWF0ZU91dD1mdW5jdGlvbihPLE4sUCl7UC5vdmVy bGF5Ll9zZXREb21WaXNpYmlsaXR5KGZhbHNlKTtQLm92ZXJsYXkuY2ZnLnNldFBy b3BlcnR5KCJ4eSIsW0wsS10pO1AuYW5pbWF0ZU91dENvbXBsZXRlRXZlbnQuZmly ZSgpO307Ry5pbml0KCk7cmV0dXJuIEc7fTtBLnByb3RvdHlwZT17aW5pdDpmdW5j dGlvbigpe3RoaXMuYmVmb3JlQW5pbWF0ZUluRXZlbnQ9dGhpcy5jcmVhdGVFdmVu dCgiYmVmb3JlQW5pbWF0ZUluIik7dGhpcy5iZWZvcmVBbmltYXRlSW5FdmVudC5z aWduYXR1cmU9Qy5MSVNUO3RoaXMuYmVmb3JlQW5pbWF0ZU91dEV2ZW50PXRoaXMu Y3JlYXRlRXZlbnQoImJlZm9yZUFuaW1hdGVPdXQiKTsKdGhpcy5iZWZvcmVBbmlt YXRlT3V0RXZlbnQuc2lnbmF0dXJlPUMuTElTVDt0aGlzLmFuaW1hdGVJbkNvbXBs ZXRlRXZlbnQ9dGhpcy5jcmVhdGVFdmVudCgiYW5pbWF0ZUluQ29tcGxldGUiKTt0 aGlzLmFuaW1hdGVJbkNvbXBsZXRlRXZlbnQuc2lnbmF0dXJlPUMuTElTVDt0aGlz LmFuaW1hdGVPdXRDb21wbGV0ZUV2ZW50PXRoaXMuY3JlYXRlRXZlbnQoImFuaW1h dGVPdXRDb21wbGV0ZSIpO3RoaXMuYW5pbWF0ZU91dENvbXBsZXRlRXZlbnQuc2ln bmF0dXJlPUMuTElTVDt0aGlzLmFuaW1Jbj1uZXcgdGhpcy5hbmltQ2xhc3ModGhp cy50YXJnZXRFbGVtZW50LHRoaXMuYXR0ckluLmF0dHJpYnV0ZXMsdGhpcy5hdHRy SW4uZHVyYXRpb24sdGhpcy5hdHRySW4ubWV0aG9kKTt0aGlzLmFuaW1Jbi5vblN0 YXJ0LnN1YnNjcmliZSh0aGlzLmhhbmRsZVN0YXJ0QW5pbWF0ZUluLHRoaXMpO3Ro aXMuYW5pbUluLm9uVHdlZW4uc3Vic2NyaWJlKHRoaXMuaGFuZGxlVHdlZW5Bbmlt YXRlSW4sdGhpcyk7dGhpcy5hbmltSW4ub25Db21wbGV0ZS5zdWJzY3JpYmUodGhp cy5oYW5kbGVDb21wbGV0ZUFuaW1hdGVJbix0aGlzKTt0aGlzLmFuaW1PdXQ9bmV3 IHRoaXMuYW5pbUNsYXNzKHRoaXMudGFyZ2V0RWxlbWVudCx0aGlzLmF0dHJPdXQu YXR0cmlidXRlcyx0aGlzLmF0dHJPdXQuZHVyYXRpb24sdGhpcy5hdHRyT3V0Lm1l dGhvZCk7dGhpcy5hbmltT3V0Lm9uU3RhcnQuc3Vic2NyaWJlKHRoaXMuaGFuZGxl U3RhcnRBbmltYXRlT3V0LHRoaXMpO3RoaXMuYW5pbU91dC5vblR3ZWVuLnN1YnNj cmliZSh0aGlzLmhhbmRsZVR3ZWVuQW5pbWF0ZU91dCx0aGlzKTt0aGlzLmFuaW1P dXQub25Db21wbGV0ZS5zdWJzY3JpYmUodGhpcy5oYW5kbGVDb21wbGV0ZUFuaW1h dGVPdXQsdGhpcyk7fSxhbmltYXRlSW46ZnVuY3Rpb24oKXt0aGlzLmJlZm9yZUFu aW1hdGVJbkV2ZW50LmZpcmUoKTt0aGlzLmFuaW1Jbi5hbmltYXRlKCk7fSxhbmlt YXRlT3V0OmZ1bmN0aW9uKCl7dGhpcy5iZWZvcmVBbmltYXRlT3V0RXZlbnQuZmly ZSgpO3RoaXMuYW5pbU91dC5hbmltYXRlKCk7fSxoYW5kbGVTdGFydEFuaW1hdGVJ bjpmdW5jdGlvbihFLEQsRil7fSxoYW5kbGVUd2VlbkFuaW1hdGVJbjpmdW5jdGlv bihFLEQsRil7fSxoYW5kbGVDb21wbGV0ZUFuaW1hdGVJbjpmdW5jdGlvbihFLEQs Ril7fSxoYW5kbGVTdGFydEFuaW1hdGVPdXQ6ZnVuY3Rpb24oRSxELEYpe30saGFu ZGxlVHdlZW5BbmltYXRlT3V0OmZ1bmN0aW9uKEUsRCxGKXt9LGhhbmRsZUNvbXBs ZXRlQW5pbWF0ZU91dDpmdW5jdGlvbihFLEQsRil7fSx0b1N0cmluZzpmdW5jdGlv bigpe3ZhciBEPSJDb250YWluZXJFZmZlY3QiO2lmKHRoaXMub3ZlcmxheSl7RCs9 IiBbIit0aGlzLm92ZXJsYXkudG9TdHJpbmcoKSsiXSI7fXJldHVybiBEO319O1lB SE9PLmxhbmcuYXVnbWVudFByb3RvKEEsWUFIT08udXRpbC5FdmVudFByb3ZpZGVy KTt9KSgpO1lBSE9PLnJlZ2lzdGVyKCJjb250YWluZXIiLFlBSE9PLndpZGdldC5N b2R1bGUse3ZlcnNpb246IjIuNy4wIixidWlsZDoiMTc5NiJ9KTs= ------------6BskB7ERS2JodRB3Bcko3B Content-Disposition: inline; filename=global-v58.js Content-Type: application/x-javascript; charset=utf-8; name=global-v58.js Content-Location: http://www.discogs.com/js/global-v58.js Content-Transfer-Encoding: Base64 CnZhciBEb209WUFIT08udXRpbC5Eb207dmFyIEV2ZW50PVlBSE9PLnV0aWwuRXZl bnQ7dmFyIFlEPVlBSE9PLnV0aWwuRG9tO3ZhciBZRT1ZQUhPTy51dGlsLkV2ZW50 O3ZhciBZQz1ZQUhPTy51dGlsLkNvbm5lY3Q7dmFyIERJU0NPR1M9e3NldDpmdW5j dGlvbihuYW1lc3BhY2UscHJvcGVydHkpe2lmKCFESVNDT0dTW25hbWVzcGFjZV0p e0RJU0NPR1NbbmFtZXNwYWNlXT1wcm9wZXJ0eTt9ZWxzZXtmb3Ioa2V5IGluIHBy b3BlcnR5KXtESVNDT0dTW25hbWVzcGFjZV1ba2V5XT1wcm9wZXJ0eVtrZXldO319 fSxnZXQ6ZnVuY3Rpb24obmFtZXNwYWNlLGtleSl7aWYoIURJU0NPR1NbbmFtZXNw YWNlXSl7cmV0dXJuIGZhbHNlO30KaWYoIWtleSl7cmV0dXJuIERJU0NPR1NbbmFt ZXNwYWNlXTt9CnJldHVybiBESVNDT0dTW25hbWVzcGFjZV1ba2V5XTt9LHJlZGly ZWN0OmZ1bmN0aW9uKHVybCl7d2luZG93LmxvY2F0aW9uLmhyZWY9dXJsO3dpbmRv dy5ldmVudC5yZXR1cm5WYWx1ZT1mYWxzZTt9fTtmdW5jdGlvbiBpbml0TWVudSgp e2Zvcih2YXIgaT0wO2k8bWVudV9pZHMubGVuZ3RoO2krKyl7dmFyIGlkPW1lbnVf aWRzW2ldO1lELnNldFN0eWxlKGlkKydfbWVudScsJ2Rpc3BsYXknLCdub25lJyk7 WUUub24oaWQrJ19hcnInLCdjbGljaycsc2hvd01lbnUsaWQpO319CmZ1bmN0aW9u IHNob3dNZW51KGUsaWQpe3ZhciBtZW51PVlELmdldChpZCsnX21lbnUnKTt2YXIg bmF2PVlELmdldChpZCsnX25hdicpO3ZhciBhcnI9WUQuZ2V0KGlkKydfYXJyJyk7 dmFyIG1uYXY9WUQuZ2V0KCdtYWluTmF2aWdhdGlvbicpO1lELmFkZENsYXNzKG5h diwnbWVudV9vbicpO1lELmFkZENsYXNzKGFyciwnbWVudV9vbicpO21lbnUuc3R5 bGUuZGlzcGxheT0nYmxvY2snO3ZhciBwb3M9WUQuZ2V0WFkobmF2KTt2YXIgbW5h dl9wb3M9WUQuZ2V0WFkobW5hdik7cG9zWzFdKz1tbmF2LmNsaWVudEhlaWdodDt2 YXIgcmlnaHQ9bW5hdi5jbGllbnRXaWR0aCttbmF2X3Bvc1swXTtpZigocmlnaHQt cG9zWzBdKTxtZW51LmNsaWVudFdpZHRoKXtwb3NbMF0tPW1lbnUuY2xpZW50V2lk dGgtKG5hdi5jbGllbnRXaWR0aCthcnIuY2xpZW50V2lkdGgpKzI7fQpZRC5zZXRY WShtZW51LHBvcyk7WUUub24oZG9jdW1lbnQsJ21vdXNldXAnLGhpZGVNZW51LGlk KTt9CmZ1bmN0aW9uIGhpZGVNZW51KGUsaWQpe3ZhciBtZW51PVlELmdldChpZCsn X21lbnUnKTt2YXIgeDE9WUUuZ2V0UGFnZVgoZSkseTE9WUUuZ2V0UGFnZVkoZSk7 dmFyIHBvaW50PW5ldyBZQUhPTy51dGlsLlJlZ2lvbih5MSx4MSx5MSx4MSk7aWYo IVlELmdldFJlZ2lvbihtZW51KS5jb250YWlucyhwb2ludCkpe21lbnUuc3R5bGUu ZGlzcGxheT0nbm9uZSc7WUQucmVtb3ZlQ2xhc3MoWUQuZ2V0KGlkKydfbmF2Jyks J21lbnVfb24nKTtZRC5yZW1vdmVDbGFzcyhZRC5nZXQoaWQrJ19hcnInKSwnbWVu dV9vbicpO1lFLnJlbW92ZUxpc3RlbmVyKGRvY3VtZW50LCdtb3VzZXVwJyk7fX0K ZnVuY3Rpb24gaGlnaGxpZ2h0KGVsKXt2YXIgYXR0cnM9e2JhY2tncm91bmRDb2xv cjp7ZnJvbTonI2ZmMCcsdG86JyNmZmYnfX07dmFyIGFuaW09bmV3IFlBSE9PLnV0 aWwuQ29sb3JBbmltKGVsLGF0dHJzKTthbmltLmFuaW1hdGUoKTt9CmZ1bmN0aW9u IGFjdGl2aXR5X29uKG1zZyl7dmFyIGVsPVlELmdldCgnYWN0Jyk7WUQuc2V0U3R5 bGUoZWwsJ2Rpc3BsYXknLCdibG9jaycpO2VsLmlubmVySFRNTD1tc2c7WUQuc2V0 WFkoZWwsWyhZRC5nZXRWaWV3cG9ydFdpZHRoKCktZWwuY2xpZW50V2lkdGgpLTIs WUQuZ2V0Q2xpZW50UmVnaW9uKClbJ3RvcCddKzJdKX0KZnVuY3Rpb24gYWN0aXZp dHlfb2ZmKCl7WUQuc2V0U3R5bGUoJ2FjdCcsJ2Rpc3BsYXknLCdub25lJyk7fQp2 YXIgYWNkczthY2RzPW5ldyBZQUhPTy51dGlsLlhIUkRhdGFTb3VyY2UoJ2h0dHA6 Ly93d3cuZGlzY29ncy5jb20vc2VhcmNoL2FjJyk7YWNkcy5jb25uWGhyTW9kZT1Z QUhPTy51dGlsLlhIUkRhdGFTb3VyY2UuY2FuY2VsU3RhbGVSZXF1ZXN0czthY2Rz LnJlc3BvbnNlVHlwZT1ZQUhPTy51dGlsLlhIUkRhdGFTb3VyY2UuVFlQRV9URVhU O2FjZHMucmVzcG9uc2VTY2hlbWE9e3JlY29yZERlbGltOidcbicsZmllbGREZWxp bTonXHQnfTthY2RzLm1heENhY2hlRW50cmllcz0wO2Z1bmN0aW9uIGFjX2dyX2Fs bChzUXVlcnkpe3JldHVybic/cT0nK3NRdWVyeTt9CmZ1bmN0aW9uIGFjX2dyX2Fy dGlzdChzUXVlcnkpe3JldHVybic/cT0nK3NRdWVyeSsnJnR5cGU9YXJ0aXN0Jzt9 CmZ1bmN0aW9uIGFjX2dyX2xhYmVsKHNRdWVyeSl7cmV0dXJuJz9xPScrc1F1ZXJ5 KycmdHlwZT1sYWJlbCc7fQpmdW5jdGlvbiBhY19kb0JlZm9yZUV4cGFuZENvbnRh aW5lcihlbFRleHRib3gsZWxDb250YWluZXIsc1F1ZXJ5LGFSZXN1bHRzKXt2YXIg cG9zPVlELmdldFhZKGVsVGV4dGJveCk7cG9zWzFdKz1lbFRleHRib3gub2Zmc2V0 SGVpZ2h0O1lELnNldFhZKGVsQ29udGFpbmVyLHBvcyk7ZWxDb250YWluZXIuc3R5 bGUud2lkdGg9ZWxUZXh0Ym94LmNsaWVudFdpZHRoKzMrJ3B4JztyZXR1cm4gdHJ1 ZTt9CmZ1bmN0aW9uIGluaXRBQyh0Ym4sZmdyKXt2YXIgb0FDPW5ldyBZQUhPTy53 aWRnZXQuQXV0b0NvbXBsZXRlKHRibiwnYWNfJyt0Ym4sYWNkcyk7b0FDLnByZWhp Z2hsaWdodENsYXNzTmFtZT0neXVpLWFjLXByZWhpZ2hsaWdodCc7b0FDLmFuaW1W ZXJ0PWZhbHNlO29BQy5xdWVyeURlbGF5PS41O29BQy5taW5RdWVyeUxlbmd0aD0z O29BQy5hdXRvSGlnaGxpZ2h0PWZhbHNlO29BQy5nZW5lcmF0ZVJlcXVlc3Q9Zmdy O29BQy5kb0JlZm9yZUV4cGFuZENvbnRhaW5lcj1hY19kb0JlZm9yZUV4cGFuZENv bnRhaW5lcjtyZXR1cm4gb0FDO30KdmFyIG1haW5BQz1udWxsO2Z1bmN0aW9uIGlu aXRNYWluQUMoKXtpZihtYWluQUMpe21haW5BQy5kZXN0cm95KCk7fQpzd2l0Y2go WUQuZ2V0KCd0eXBlJykuc2VsZWN0ZWRJbmRleCl7Y2FzZSAwOm1haW5BQz1pbml0 QUMoJ3EnLGFjX2dyX2FsbCk7YnJlYWs7Y2FzZSAxOm1haW5BQz1pbml0QUMoJ3En LGFjX2dyX2FydGlzdCk7YnJlYWs7Y2FzZSAyOm1haW5BQz1pbml0QUMoJ3EnLGFj X2dyX2xhYmVsKTticmVhaztkZWZhdWx0Om1haW5BQz1udWxsO319CmZ1bmN0aW9u IHNlbGVjdE1lKGUpe2lmKGRvY3VtZW50LnNlbGVjdGlvbil7ZG9jdW1lbnQuc2Vs ZWN0aW9uLmVtcHR5KCk7dmFyIHI9ZG9jdW1lbnQuYm9keS5jcmVhdGVUZXh0UmFu Z2UoKTtyLm1vdmVUb0VsZW1lbnRUZXh0KGUpO3Iuc2VsZWN0KCk7fQplbHNlIGlm KHdpbmRvdy5nZXRTZWxlY3Rpb24pe3ZhciBzPXdpbmRvdy5nZXRTZWxlY3Rpb24o KTt2YXIgcj1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3Iuc2VsZWN0Tm9kZShlKTtz LnJlbW92ZUFsbFJhbmdlcygpO3MuYWRkUmFuZ2Uocik7fX0KZnVuY3Rpb24gdXBk YXRlRWxlbWVudChuLGh0bWwpe3ZhciBlbD1ZRC5nZXQobik7aWYoZWwpe2VsLmlu bmVySFRNTD1odG1sO319CmZ1bmN0aW9uIGFzeW5jX3N1Y2Nlc3Mobyl7YWN0aXZp dHlfb2ZmKCk7dmFyIHI9ZXZhbCgnKCcrby5yZXNwb25zZVRleHQrJyknKTtmb3Io dmFyIGk9MDtpPHIubGVuZ3RoO2krKyl7aWYoIXJbaV0uY29uZHx8ZXZhbChyW2ld LmNvbmQpKXtpZihyW2ldLmNtZD09J3VwZGF0ZScpe2VsPVlELmdldChyW2ldLmVs KTtpZihlbCkKZWwuaW5uZXJIVE1MPXJbaV0uaHRtbDt9CmVsc2UgaWYocltpXS5j bWQ9PSdhcHBlbmQnKXtlbD1ZRC5nZXQocltpXS5lbCk7aWYoZWwpCmVsLmlubmVy SFRNTCs9cltpXS5odG1sO30KZWxzZSBpZihyW2ldLmNtZD09J2V4ZWN1dGUnKXt2 YXIgZGF0YT1yW2ldLmRhdGE7ZXZhbChyW2ldLmNvZGUpO319fX0KZnVuY3Rpb24g YXN5bmNfZmFpbChvKXthY3Rpdml0eV9vZmYoKTt9CmZ1bmN0aW9uIGFzeW5jX3Mo bXNnKXtpZighRElTQ09HUy5nZXQoJ1Nlc3Npb24nKVsnbG9nZ2VkaW4nXSl7RElT Q09HUy5yZWRpcmVjdCgnL3VzZXJzL2xvZ2luP25vbG9naW49MSZyZXR1cm49Jytl bmNvZGVVUklDb21wb25lbnQod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKSk7cmV0 dXJuIGZhbHNlO31lbHNle2lmKG1zZyE9JycpCmFjdGl2aXR5X29uKG1zZz9tc2c6 J1VwZGF0aW5nLi4uJyk7cmV0dXJuIHRydWU7fX0KZnVuY3Rpb24gYXN5bmNfZyh1 cmwsbXNnKXtpZihhc3luY19zKG1zZykpCllDLmFzeW5jUmVxdWVzdCgnR0VUJyx1 cmwse3N1Y2Nlc3M6YXN5bmNfc3VjY2VzcyxmYWlsdXJlOmFzeW5jX2ZhaWx9KTt9 CmZ1bmN0aW9uIGFzeW5jX3AodXJsLG1zZyxkYXRhKXtpZihhc3luY19zKG1zZykp CllDLmFzeW5jUmVxdWVzdCgnUE9TVCcsdXJsLHtzdWNjZXNzOmFzeW5jX3N1Y2Nl c3MsZmFpbHVyZTphc3luY19mYWlsfSxkYXRhKTt9CmZ1bmN0aW9uIGFzeW5jX2h0 bWxfc3VjY2VzcyhvKXthY3Rpdml0eV9vZmYoKTt2YXIgZWw9WUQuZ2V0KG8uYXJn dW1lbnQpO2lmKGVsKQplbC5pbm5lckhUTUw9by5yZXNwb25zZVRleHQ7fQpmdW5j dGlvbiBhc3luY19odG1sKHVybCxkYXRhLGVsLG1zZyl7aWYoYXN5bmNfcyhtc2cp KQpZQy5hc3luY1JlcXVlc3QoJ1BPU1QnLHVybCx7c3VjY2Vzczphc3luY19odG1s X3N1Y2Nlc3MsZmFpbHVyZTphc3luY19mYWlsLGFyZ3VtZW50OmVsfSxkYXRhKTt9 CmZ1bmN0aW9uIGFzeW5jX3BhbmVsX3N1Y2Nlc3Mobyl7YWN0aXZpdHlfb2ZmKCk7 dmFyIHA9by5hcmd1bWVudDtwLnNldEJvZHkoby5yZXNwb25zZVRleHQpO3AucmVu ZGVyKGRvY3VtZW50LmJvZHkpO3Auc2hvdygpO30KZnVuY3Rpb24gYXN5bmNfcGFu ZWwodXJsLHBhbmVsLG1zZyl7aWYoYXN5bmNfcyhtc2cpKQpZQy5hc3luY1JlcXVl c3QoJ0dFVCcsdXJsLHtzdWNjZXNzOmFzeW5jX3BhbmVsX3N1Y2Nlc3MsZmFpbHVy ZTphc3luY19mYWlsLGFyZ3VtZW50OnBhbmVsfSk7fQpmdW5jdGlvbiBhc3luYyh1 cmwsbWVzc2FnZSl7cmV0dXJuIGFzeW5jX3AodXJsLG1lc3NhZ2UpO30KZnVuY3Rp b24gdWFJRSgpe3JldHVybiBCb29sZWFuKFlBSE9PLmVudi51YS5pZSk7fQpmdW5j dGlvbiBpZWNzKCl7cmV0dXJuKFlBSE9PLmVudi51YS5pZT8oJyZpZWNzPScrU3Ry aW5nKE1hdGgucmFuZG9tKCkpLnN1YnN0cigyLDgpKTonJyk7fQpmdW5jdGlvbiBi cm93c2VyU3VwcG9ydGVkKCl7dmFyIGllPVlBSE9PLmVudi51YS5pZTtpZihpZSl7 aWYoaWU8Nyl7YWxlcnQoJ1NvcnJ5LCB0aGlzIG9wZXJhdGlvbiBkb2VzIG5vdCBz dXBwb3J0IEludGVybmV0IEV4cGxvcmVyIDYuIFBsZWFzZSBjb25zaWRlciB1cGdy YWRpbmcgeW91ciBicm93c2VyLicpO3JldHVybiBmYWxzZTt9fQpyZXR1cm4gdHJ1 ZTt9CmZ1bmN0aW9uIHNob3dNZW51QihlLGEpe1lELmFkZENsYXNzKGEub3duZXIs J2V4cGFuZGVkJyk7WUQuYWRkQ2xhc3MoYS5tZW51LCdzaG93bicpO2lmKGEubW92 ZV9kb20pCmEub3duZXIucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChhLm1lbnUpO3Zh ciByMT1ZRC5nZXRSZWdpb24oYS5vd25lcik7dmFyIHIyPVlELmdldFJlZ2lvbihh Lm1lbnUpO1lELnNldFgoYS5tZW51LHIxLnJpZ2h0LXIyLnJpZ2h0K3IyLmxlZnQt MSk7WUQuc2V0WShhLm1lbnUscjEuYm90dG9tKTtZRS5vbihkb2N1bWVudCwnbW91 c2V1cCcsaGlkZU1lbnVCLGEpO30KZnVuY3Rpb24gaGlkZU1lbnVCKGUsYSl7dmFy IHgxPVlFLmdldFBhZ2VYKGUpLHkxPVlFLmdldFBhZ2VZKGUpO3ZhciBwb2ludD1u ZXcgWUFIT08udXRpbC5SZWdpb24oeTEseDEseTEseDEpO2lmKCghWUQuZ2V0UmVn aW9uKGEubWVudSkuY29udGFpbnMocG9pbnQpKXx8KFlFLmdldFRhcmdldChlKS5j bGFzc05hbWU9PSJtcl9hX2VkaXRfb24iKSl7WUQucmVtb3ZlQ2xhc3MoYS5vd25l ciwnZXhwYW5kZWQnKTtZRC5yZW1vdmVDbGFzcyhhLm1lbnUsJ3Nob3duJyk7WUUu cmVtb3ZlTGlzdGVuZXIoZG9jdW1lbnQsJ21vdXNldXAnKTt9fQpmdW5jdGlvbiBp bml0TWVudUIobWVudSxvd25lcixtb3ZlX2RvbSl7WUUub24ob3duZXIsJ2NsaWNr JyxzaG93TWVudUIseydtZW51JzptZW51LCdvd25lcic6b3duZXIsJ21vdmVfZG9t Jzptb3ZlX2RvbX0pO30KZnVuY3Rpb24gc3dhcF9saXN0cGlja2VyKGIpe1lELnNl dFN0eWxlKGI/J2xpc3RhZGRfbmV3JzonbGlzdGFkZF9vbGQnLCdkaXNwbGF5Jywn YmxvY2snKTtZRC5zZXRTdHlsZShiPydsaXN0YWRkX29sZCc6J2xpc3RhZGRfbmV3 JywnZGlzcGxheScsJ25vbmUnKTt9CmZ1bmN0aW9uIGxpc3RBZGQod2hhdCxvYmlk KXtpZighRElTQ09HUy5saXN0X3BhbmVsKXtZRC5hZGRDbGFzcyhkb2N1bWVudC5i b2R5LCd5dWktc2tpbi1zYW0nKTtESVNDT0dTLmxpc3RfcGFuZWw9bmV3IFlBSE9P LndpZGdldC5QYW5lbCgibGlzdF9hZGRfcGFuZWwiLHt3aWR0aDoiMjI2cHgiLGZp eGVkY2VudGVyOnRydWUsY2xvc2U6ZmFsc2UsZHJhZ2dhYmxlOmZhbHNlLHppbmRl eDo3NzcsbW9kYWw6dHJ1ZSx2aXNpYmxlOmZhbHNlfSk7RElTQ09HUy5saXN0X3Bh bmVsLnNldEhlYWRlcignQWRkIHRvIExpc3QnKTt9CmFzeW5jX3BhbmVsKCcvbGlz dHMvYWRkP3doYXQ9Jyt3aGF0Kycmb2JpZD0nK29iaWQsRElTQ09HUy5saXN0X3Bh bmVsKTt9CmZ1bmN0aW9uIGxpc3RBZGRTYXZlKCl7dmFyIGNvbW1lbnQ9c3RyaXBD b2RlKFlELmdldCgnbGlzdF9jb21tZW50cycpLnZhbHVlKXx8JyAnO3ZhciBkYXRh PSd3aGF0PScrWUQuZ2V0KCdsaXN0X3doYXQnKS52YWx1ZSsnJm9iaWQ9JytZRC5n ZXQoJ2xpc3Rfb2JpZCcpLnZhbHVlKycmY29tbWVudHM9JytlbmNvZGVVUklDb21w b25lbnQoY29tbWVudCk7aWYoWUQuZ2V0KCdsaXN0cGlja19uZXcnKS5jaGVja2Vk KXtpZighWUQuZ2V0KCdsaXN0X3RpdGxlJykudmFsdWUpe2FsZXJ0KCdQbGVhc2Ug ZW50ZXIgYSB0aXRsZS4nKTtyZXR1cm47fQp2YXIgdGl0bGU9c3RyaXBDb2RlKFlE LmdldCgnbGlzdF90aXRsZScpLnZhbHVlKTt2YXIgZGVzY3JpcHRpb249c3RyaXBD b2RlKFlELmdldCgnbGlzdF9kZXNjcmlwdGlvbicpLnZhbHVlKXx8JyAnO2RhdGEr PScmbGlzdD1uZXcnKycmdGl0bGU9JytlbmNvZGVVUklDb21wb25lbnQodGl0bGUp KycmZGVzY3JpcHRpb249JytlbmNvZGVVUklDb21wb25lbnQoZGVzY3JpcHRpb24p O30KZWxzZXtpZihZRC5nZXQoJ2xpc3Rfb2xkcGljaycpLnNlbGVjdGVkSW5kZXg9 PS0xKXthbGVydCgnUGxlYXNlIHNlbGVjdCBhbiBleGlzdGluZyBsaXN0LicpO3Jl dHVybjt9CmRhdGErPScmbGlzdD0nK1lELmdldCgnbGlzdF9vbGRwaWNrJykudmFs dWU7fQphc3luY19wKCcvbGlzdHMvYWRkc2F2ZScsJ1NhdmluZy4uLicsZGF0YSk7 fQpmdW5jdGlvbiBsaXN0QWRkQ2FuY2VsKCl7RElTQ09HUy5saXN0X3BhbmVsLmhp ZGUoKTt9CmZ1bmN0aW9uIGxpc3RSZXBvcnQoaWQpe3ZhciBwcm9jZWVkPWNvbmZp cm0oJ1JlcG9ydCB0aGlzIGxpc3QgYXMgaW5hcHByb3ByaWF0ZSBvciBEaXNjb2dz IGd1aWRlbGluZXM/Jyk7aWYocHJvY2VlZCl7YXN5bmNfcCgnL2xpc3RzL3JlcG9y dCcsJ1NhdmluZy4uLicsJ2lkPScraWQpO319CmZ1bmN0aW9uIGRpc21pc3NfYWxl cnQoaWQpe1lBSE9PLnV0aWwuQ29va2llLnNldCgncGFfZGlzbWlzc18nK2lkLDEs e3BhdGg6Jy8nLGRvbWFpbjonZGlzY29ncy5jb20nLGV4cGlyZXM6bmV3IERhdGUo IkRlY2VtYmVyIDMxLCAyMDMwIil9KTtZRC5nZXQoJ3BhZ2VfYWxlcnQnKS5zdHls ZS5kaXNwbGF5PSdub25lJzt9CmZ1bmN0aW9uIHN0cmlwQ29kZShzKXtyZXR1cm4g cy5zcGxpdCgiJiIpLmpvaW4oIiZhbXA7Iikuc3BsaXQoIjwiKS5qb2luKCImbHQ7 Iikuc3BsaXQoIj4iKS5qb2luKCImZ3Q7Iik7fQpZRS5vbkRPTVJlYWR5KGZ1bmN0 aW9uKCl7aW5pdE1lbnUoKTtpbml0TWFpbkFDKCk7WUQuZ2V0KCdxJykuYXV0b2Nv bXBsZXRlPSdvbic7fSk7 ------------6BskB7ERS2JodRB3Bcko3B Content-Disposition: inline; filename=dislogo.gif Content-Type: image/gif; name=dislogo.gif Content-Location: http://www.discogs.com/images/dislogo.gif Content-Transfer-Encoding: Base64 R0lGODlhhwAxALMAAAAAAGtjCBgYGDExMQAAOSQkRklJZIODjce6APXiALW1nN7e vcbGztbW3ufn5////yH5BAEAAA8ALAAAAACHADEAQAT+8MlJq7046827/2BBjKRB HWTKSMrhuiuYObTDOYti7Pyx2LLgR5QimE7F0eFhKJqaqSVrUKgWFMxkQ8IYFQ4C gHhMFpgHA8OBwTigd2jAjkiQPrrFgkPhnDQMVgVHFXQlFXxJS1CGEg6FKQUxWU5A EgthZGMCCAgJni6dCZwDmWRzBFsSDUmRE4uJGo9GFI5JMa+zgYIUuIparoJgAmkG aAcNDHBmZqWZp0p+rA0HupIokELZ2kI4B3BvBwqVH7WQ49vo6err7BiySZCpEriD 7fb3FAQS+vwTsvUPrhXZQk+CQHgk7DR4l+eBAwNllp0Bx8CBNzNYHqxCCK8VIo7+ IwD6SwLwY5RJhvA4kceL5DmIzcQEEMWpZoIABAackQhAALURkjbGeyDriod/FQ6S INjHwsOOAV1WgCgRzTABM2vaRICpmU8iQVlJQgJv7EiQeVgWJIp2RMZ5bZcs0BmO QYtvEruKEfAWF8gCTOPiG0yYbFs96xhCOnbhkcjCkO8h1ei3jqumkTML0fegH2e2 mB36PQIokB2L74xa+INQ9QQFpPbmnWjs3AMFRctOSIbwgO2zKQAqdYsyZFRI4oZj YeAYrhc3MZe9URPORTFSAhYAKnJsGisHKhOCf2SHwuTX8HwFL06gFYbhgCfU0Os1 gH1wxXYM0xnm2VuhJOj+YRI0Q5B0SHrsHTGcF2aNdg59ZATAiScU0sTVbJicIg+A DN7BUHnuGGiYCglWwFpHNjhYgV55SRhKhTRBOIaG0eRh1oJAhRgae7OUmIFfa0hj gXQ6waGGAVjZF0BsMYnhX42QmDWicRachxsszhlCjwI6JIHFQnmEs8gXpKThQgve 4MWMV9o55kJRFoXZBnkXtBWSOFVidiJJUjr0kxNvNeLGfmhYtQwZjFnQRg8VKeUe ah2BqNmk2uyggDyQckfpppFNo5gBgarzwqijVqSBXVxyyRKnrIZgZ0gv7dgqqwI5 oESPoEHyTGhrzeprZ/sA+9l55QQHRK+s1vDbr7n+MsIFgh3skaYapmIAnjdVWPrb Hkw2M4APM9xF7R6pcmnWtWmGs2qeO/qFWHNZ9lYBc2hl9JAmVRVKDJdojDXgXzHg WMKy5xmkW0EctlcFZqO9UoUOpcxWqAFb6DAAAQBgUdnCQrory7rNUjnBguppqWm8 lg0XAyKCwBRxvmqIRkwc3xYyiK157IGZUo8VfBuCBSGrrA30DnXHDt40KcYIZnwx DQ/6LvOnZap8NyBijQzdmIjowVIQfCAfZ84hSgPgolakXFcMT2oQ8d934ZEQaixc swB0U6mtqyIF3WYyAE0wdoIThmJ4k2PVafFI4AY+/2tZr5W1N9belsjY04T+nmBO 08VrmrLdhmIZLC/dOzqucWhgdnSLVBNcEp3msCPQt+cigG5jS6NvveOCKyDbSOQl D1xBbBgKAHiFgittOAFh3Z5UazquN2V7Kcp6mS3/Yv1aT9KpPYxWnARguZN/vu28 BQv2XDePUhRUrgJB0flIfFxcSlUa04GazDIjlP1VQruRxjTKhbsA6U56dqMEykxQ CO3RaTh2EEHLAJA/A9DADfw5VExqhg3EmUMpdvCdBIqSpoJ9jRXnWZBj5iIHA6zA YobSYCmwIDAUpQ4S8ACZYkiyqrXcMHe/A4kdtPOtaampcxQcy1NIgotWLJEjjzEI qaZ4qWWhKlWragBBml5QLWtp0VwNWNYCBsU9+vhkATJwFEvQxcVlMQsfWsvGv6L4 xjqeKkCBgAcd7chHC0ROgX0MpAfAs8U1uFEbEQAAOw== ------------6BskB7ERS2JodRB3Bcko3B Content-Disposition: inline; filename=spacer.gif Content-Type: image/gif; name=spacer.gif Content-Location: http://www.discogs.com/images/spacer.gif Content-Transfer-Encoding: Base64 R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAQAICRAEAOw== ------------6BskB7ERS2JodRB3Bcko3B Content-Disposition: inline; filename=R-150-1378838-1214476121.jpeg Content-Type: image/jpeg; name=R-150-1378838-1214476121.jpeg Content-Location: http://www.discogs.com/image/R-150-1378838-1214476121.jpeg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkS Ew8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJ CQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjL/wAARCACTAJYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6 Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx 8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDn P7UjD/I/NbVrey3yrb2saDALPM7cKB1NcpHYSqMgHn3qcW1w4KZcKeoB6157hA0e JdtiOzUS6iwBypYgHFVr2IxXZXOMDFdX4e0JRdiW4+WJAWwTyxx0rmNUYzXpaIbl 6A16WB1U2vIxp35rmPp3y6vEB/ErD+dbeoxk2Kc9jxWdpKAeIbVTzkSZ+uGrb1iE pZo475XAPSue9sRFf11N4GBDH85z/crTSFTMuec84qpAmRzWpbyCJ1Y25bb2yef0 r2aVPQUotrQ5m4QfaJ8cgE1c0tR9mUMO5I+taE+jJGWa7uUtpJV81I2U8qSec9hw eT6VZ0zRZLfTVlvXjgiMjeRIzZE/T7mPv/hmvLxKsD3Dwx51xqM0apmKMSvK31U/ 1xXO6wgTUZAPWvT/AAxYJZaFqKWrpcvKS0kirh0bgbCOq9OhFcFqPh/Vp9TkKWE5 DN18s4FcVGbdWd1ZKxVVWjFFXSLdDeRO7fIN3OOtbOqRF7KVlGUB61SsbYxXkNuw KyJuDKeoP+TWxqWYdLYbvvEkj0r2af8Au0mcE5e8cI4wSBXX2zEeEYyUwCMZz/tD /wCJrkXOWNdvJCF8IW7IpJIiJx24P+NeZVaU4X7o76K0focU4+Use/FWIIg9lIfa mzR5REHUAk/nVm1fbbNCw+cDgetbVE0YzCwjt/JLSpufOME9BRTFtJl6ZBPviism ru9ylUstjSSYbc7WB9anWdxgAvk1midANvmyoR2ZMVKsjNyJZmHooNehCUOqX4Du a6eIb21ilSNz+9QoxY9QayzdjBMijcBwFBq3FYQxxCa6ZwG5VRyTSJqOnK5VbCXd 6sBWTxdvgFdboi0eGX+3tOZcqW3gk9vlP+Nbuq2UlxEiWiyTSb8Bm4Q9uO5rNfVr qMiS3tYwq9BirNpquo/bInJUQ+YpIAOcZrgnzSqKotLApNHRWdtb6VbNCYoRNbwm W6kMYdsqMsBn0rQglW7hjnhGqMsyh49mmzEFSOCMJgj3BqjLmXxM7CISq5bMeMh8 kfKR78irxubp72eztp5/tMYxfahGf3doMcpGe8uOAP4e/Q4j2jqayZrGm5K9zRtd YgbUIpbHVLxhHaSw3EaQy53pJHtBi25yN0oyB2IzxiqgvBp2oanqTvJBBeIDFLHC zNbkKok3qqkoJWw/Tnb82DxWde3tzI0FtEk0NjEUhjhjONqZAAXPAOO5/Gs+xmmS Vmg+1Qy4U/vZsnBL5yNq44Ceo68nPyvnum+hu8E4zjCT1ZtN4l0571I5Dqt7c3Nm I4zaW7mS6+cnhW2lgmG5/wBp8Zwaq3SwuYYTZa1YtMyor30AVGc/dTKk4Y+hx3o1 jUtRC+HoYjLI95dtbXIh2rLPHujIi8w8qDluMgc88Ve1i8uJRMqSWA+zzC+msYWd vNWIF9jzEAY4zjZ2HI607RkkzCdGUJSj2OE8QLHpPiO2mYbFZdsmPb/9f6Ve1O3f ULEGxjaROdo4JAzx+NZ/jq7h1QaZqtsjxwXcbuI3xuUhtpHHup/Cqmj3F5BFEyTu Fz/eOK6KdWcKPszknTUnzGTc6RqNupeW0lA9dua7+xRB4NYSYLrbIApHSq2oahcN ZDD/ADdeDWYbqS4Qs6nBG0hTXLVjKqlfSzN6NXkeqMFoz9qcjhRx0pzxopSUnkDs MGrN9ZSWsX2tD5lu3Vv7pPY1l/bHlIQRZx0C16ftINNi3LJlLHIUn6sf8aKYhuAM /Y5/wU/4UVneAanW3mkxXEHnsgEgb52x1GP/AK1ZsUaKQgO3ewTIHQV3+swaXpvh +a1gvEmnkdZAV6NjI4PoNx/lXD2kYe4iyM5kIx+BrLCc31eUmXibObSJLtUMuI2+ RRgce9VZ7XYys2MEdQKZdPsldFGGBps8U1xaeZLKYyo7GsYqxkSxEY2FsHtQLgQS FZG2jqDWZaaXc6nD5wllBzj7pP61pxeELu4O0QzSvmh8q3YHWWt1P5SzWU9pFeTq oE9yWxGCOSu0H5vQkYHoasy6/JYJFpdsnh2JQxxGr3D5OOXc7AWPTJPJrk5HuPDp SG80+YwL90jt7GqZ8UWquWFk249c4yfrWcVK1kro1hNLXW530H2mK3hstS1TS5/t EDTiWSxkkDtuO6MbSgCqNh55+fjgAVA0SrfLZQWkUPkws121vgLGAsRjZdw5BVxl SM5zycEnnrLx7DDHE32VUMMMkIjeIybw5jJIO4YI8sY4PeiLx9bm6L/ZPLklBS4l mbcJxwBuC7QpUABSOAAchs5rT2d1sP20k9GzqoTOsEkbm0C6fdpdpPJE7s8TqwjI G4DdneGwVxs7g1lSyRyiS2eRRHdErK1tD5TuMcqWZ3OCDggY44ziua1XxpfXEk6W ixeXIiRkhThUQsVVQT6uxJOclj0GBWO2t6u5yGCnOchBScJ9LE+03v1NbxzdW81z bQWsKQW8AKRRIMBF/wAmodPkg/s+HBxng/Ws2z0PUtXuMRQyyFjkuy4Fadx4P8TQ xmH+znCDnIIH9ar3YpRb1MrosapMsekiZCeW2/nTbY+VZFjyVPIrJ1K31Gx0uK3v I9gaTOCQTkD2rUtLpXsZEYAEqOaGrIEOjVZ7LULPedssRkRT2Zcn+YFXNEtLCHT1 keFvMCgs4ArHhfZcctghGGfqCK3INTDeHIoINstw4UEdSAPWsa6dkkdmD5VJuRaa 609gFLSceiiisg2t+7H5yPZI80Viqce5s5yvt/X3mG2p5kBZ3kGMYB6VqaVfwy3l vGAwfzM4I7YNdjJrVmYfJmvYEiHJWMjk/QdayrrS4yjX/kNC5AaMFcMVzjJ+vNdS x8pJxkrXOaVDTR3L1xY2EzecxXY33jnpWLNDpUN5HalzIJWygDZFLpyJJcMk8n7m QlSPeo9S023t9S0ryG+YykfXvULTS5zHXSW0doscEEapGqgYA9s/1r0Xw5aLHpyz NCEaQAgkc4xXmeralFHrcNpGSzvIyew7D9KPH/xGltYD4c0Z5oHtz5V1cj5WJAGV Qg5AzkE9ePTrlShKRSjpdnpHiaTQbay8zW5reGFiVBlxljjoB3PsK8i0zw9ofiu/ nvIxLZxmYIkBkAIAUcY9T149a8/3CacS3DyBHb5pFXc3v1IyfxFa+g63B4e1tp0L 3Fpu25CAMyg5DbScA8DjPqM962lSmovleo4xjfU9MHhDwlo0uLu5hjgugvkvPIMF hncM9OhWuU0y08O6z4guha26fZfNCJ5zYwCAA+PQkH/JxWX4s8YL4kmjihhmjs4V PlrIw3Ek5yQOAOOBzj1rn/tMdnP51hNOkmeCcAAeh9e1TClU5febuy3yKWmx6Brc 9j4Y8SQadZ2Vu7vEjzqVBRpGGAOTlRwpwDzk10eu3ugJ4SuZdPjgj1J1EaRYG9SS ASP+A5IP0zzxXjMst7rGo73aS5u7iQDJOWdjwB/ICust7ufRPEVvoXnSzNuSG4kj fJeRucJxkAFgO+cdulKdG1tdUi4OLvdaHpvgAt/wjsBnDG4Vm3tIwPGTjJ+ldNPP b3mn/aLWSOaJlJSSNgyt9CK4e+v/APhHPB82tGed7phHDClxKfLZy7ZwoPUKC2fY e9b/AIX1y41yygmkt5pbeVP3d2sJCMRwVfsrAjr0Pb0rgxEXZzirq5p7qVmcB8Qb XdpltdquDHc4fH1I/pXOpBuSQKBgY4rvfG1qqeH9TV+qz7wPQCTj9K4i1mRUJI4M nUfSu+hK9M4krXRlqg+04XqucZqDSNbfS4z5UmwkYOB1rQkTyNYkDjCZGPxo0bVL S2j5sY2dR94qPX6V1Ra6q5vRhzStewyTxffMeLsqvbGR/Kith/ErZ2xWwUDtuoqu Zfyr7kdLoR/n/Ak0e7klvL8G3sgI4FZT9mjJXnscVozTy3IZ7iVnkkjA+Y/7QrN0 axubdtUeeSFm+zxoPKbI5cHj6AH860ng2hW5wI89f9oD+tedWcJV24bXJjfkdznY SsWtGBmwC7EVa1M7dT0gH/ns3P4VmawD/bWV4YEkU5riR208uclLrGT7g10taXOJ mzBGb3xvKzqT5V8+Du9Dgfov61b1jwTpV54va2S/ngknQXBhKbywOdzBmbk5GTnn k9e0F0kth8QYnRh5dzdRqeOmVAP8zXI67rOp3N2lveTlpLF2jjcE7gQcZz68dR7e gxnGM5NOLtodEZQVPVHofi7StG8PeFRBDDB9olUoGdd+4IjbWHAAbB5IAOTzk5Ne bXv2ZoEeJYDCFCjycqTJjnJYEnsccDHvkmre6pf6ksKXl3LOsIIjEjZ25xn8TgZP fFKySHSozuYr5pAQBsEkdemO3rmtadKUFq9RTqKT0RVRWc4UEmm8k+9ez+CPB2hy 2FpJeWge5mRGkjuUBZXGCQAw6H6dKl8VfDbS7rVVvYJFsLUpsaG2gUZfcTu49Qcd ONo5qPrkLtPYf1eT2MT4f+Eo47WDXL2MmZmLWykghVxgMR69cenBrC16CPT/AB3a ag1xtEt6kzgqf3YDrznHI78dq9ibSn2LBEois4YTGsP9/jC4zkLjAxwa8m+Id3HP d2mmRvue3TzXG3JjyMntn7uDwfqOmOOhUnUrOT2d/uNp01GFuwfELxAL+6ttDtGU WdriRxjAMrDqfop/8eavdfDUVvaaDBp9uAsNqixqAMZGBk/UnJ/Gvl7QDajxBYte qTb+cu8AZ78cd+cV9Eyyvb+HFSKQxtLPbxBgeSHmjUj8iautBUuWnFbJmUU6l5HN eOMSaPrJXqQz/kQQPyrgdNSOfTIS2Bvdua7jxc//ABL9aiB6QEj6ba4bw982ioE+ YrKcj0rTD/wzm6sqyM/29fOO5SwjJPpnAqpYQWdrB5t1cud3AjjABP48068kYTAH JHmjHt8wrEDOZGAYjniu6mtClKUXeJ0H2nSM5WO7yfWRT/QUVmLYqTtVnLYyTmit vZ+Rret3/I9At7VkY+ZfWCIRyqs5Y/8AjuKu3NvDZaVJLLfxSXMjIixIegyDj5gC enbP1rjYb4SjKNuBGBmrJt8z20wxnzFyPSoll9KMedNuxdSo3HQo+IkJ1mJkJBJ6 1TvZStoJP4oplY/rWl4gH/E5Q9h2qjdxBrOcqc7kB/KueL0VznsdvqUIutdsrmHB Bu4plbtgbSf0rgfGCKvjDWNpyDeSt+bEn9TXdaRcLNoulSggsU2njuPl/oa5P4hK g8Z3hSNEBWIkIOCTGpyfc55rLDtqfKCl7vKcsqszhVUlj0AGSa7fwNpsUviGzS8U JPFG7RwSqQxcHIOCPQk9e2cV2vw/utH/AOEbjtdOcrcf6y6jc8+ZgBj7jgdM4yK4 LUdaWPxWNUgjJjt77zGkUncUJHykduAfzP4kqkqjlTSsbQ5IWle57DcPLpWjX1wB ElzGoKSYzjJAGehIzVK71xV0hb57hVKIHd+nUZ4/LpTfGV59p8E6xsOw+QoBz1Ac H9f615HLrLajpUFpLltq4wucDAC7j6kZHA9fz5KdDnV/M3eLSbsj1608Vxaj4Mn1 GKTEyQSiLKEjeqnC+hOccf0NcVINLl0vR4ooEtbx7C7VdkYUTg28qszlTgHcDjrk H8oNC1W20/4d6zo0lxC13JPlYckMVYouDnHPDHAJwOtcbpOqNY6utzO7ERW9xHEp yQpeJ1UY7DcwrohSfvcvT/IxliL9Cx4Mthd+LdPjbOBJ5mB32gt/SvYb/UIb/WdI 0mKUSNa3DXd2kR5jVE3IW9MuUwPxryrwwZ9K0nUvEMYYG2eGBOwkDN8657EYU/jX p+g6vp+r/wBo6tZtumkjihkG3BAUMRn3+b16ADtSxN+fm6LT5/0yI1uWm4mb4glM 9rrUh+61q2Pc7MiuN8MBjoxaMZPmHNdzf2Y/se/jJPzQFST67cVwfhzULqwsWtls mkZJCTj0NFD4GkYJ3uyhq6yDdIQQvm8np3FYkBG4+pI/nXW63ZXtzG1xHF+6dlYr 6ciuRi+WYA/3h/Ou6k7otbm7ajMpP+zRUdoCZCFDMdv1or0IPQ7Y7F5dOextxIQr oH2ZA6t1/lV20YuIS3aYVDd3bm2s7f8A5Z+bI5Ge+AP8anhkigsEfrIbhcnsBmsM PJug7+Zy0/gINTjNzr3lf7Jx9ap3bpbRurgj5Np49at6kQNReQNtfdwR2qPVvKu9 NaUgCbHJHfFcEehJr+EGeXRLeJiNscjY+mc4/Mmsf4gRr/wk8siHKSQxMDn0jVf5 qazlt72DR7SW0nlXzSzMqnA64FSsI7uONtQRw5AUuCaFHlnzohRZ2+jeHo7fw7FJ oV6LfW57WOSaS4yVKyDIAA4GCpwcE8HOcjHCkz2zz6ZeptxIfNMv3lwQT0JznA5/ LOa6E6tJFcwT210IiloltkYwyqSRkHv8xqhd2TaleyXLzAFznhgAOc+v/wCv1ySa zi2m+YLHpX9h/wBt+D1sm1EuLhIy7sCrBcq3Oc7jx7Z9a8513Rrbwv4gtNOS4F0r BHaTZggMxBBGTk4Qc+/410Njf22nWscA1FFKpggze2KztVstO1PVY799RiAEYRcS DqDnNY0m4yaewJHN3tq8FwBKyeaSXPygbhk8n6n+vatTR7CPXNStdLuLeFxNKVWR WKuqKcvjsMKG7Dt1qY6dpk0bCW/ikkIGC83/ANfke1O0Yjw3dG4hu4ndiTubBAB6 49PwrZzvHTcdja+ItlY+HfBdppOnRiBLi78wqCSWCqdxJPJOdn+RWR4QmudP8Dan eW7yI8t2kO9Ig5jCgFmwTjo2Oe9W/FeqW3iWwto7l0EsDllkU9ARyPxwPyqt4UvL Wz1qx0UJLPFLJJIXjy2xmXGdgU5I2A/5zXZllCdWSShzuPvNPqlrrcyqL3bXtc6a ztfEl0r2TXGnXXyKZvMUxtEjruUkqMcjHTd1xwa5u9ku/D2uvYy2Pky43NvHyOp6 MrDqPw/I16DLNqlney+dZmO6ubeOJrloQpZ12ZKDoRwcjJ5weAONHU4wkCxParHb hQDh1clSclix4Iz+AyOOlerUwkLtyhF817WfL27b66berXXz6mNjSairtvyv9/b+ rXPLodfjkka2dABJwOOOelefb1SRsgk57HFddP5eoajcXccaQIH3qqKAAoIwPyx9 azdHt5phvW5jgXkn92CevrXjx5Yt8p7FKm52iZ9rrEtm5aIYYjBOcmiujey5+e6V h2YjrRWntJHV9Un3/r7ytqPyiwG4ZZpen0FNY/8AEmbB4EvJ/Gm6gUWSzGDuKvSY P9iznGFV+KvC/wAN/M56S9xk97JGgaUsGIO0nrmors2slomXI3HBU8H8qdZogh3H nitErDLbJlRkZJyOg4pxwl9mLlFjcLpsarGSqDHTpWe19C0flmNmz/s9DU/nkkpF kL05qaG382WOMskZbJLspIAAJOcA+n09SBkg+ppa8w+WxmO8SqEkhZo26ZHIqGJr Zh88ThDx901tCDcyMqNKjReevyYYpkrnBODyOMEg5HOcgDxMqhG2CQhn8oIwcKE3 gkEBQCvI5J5GQM1PsIW+IkZDIIjZP5tzmNoisUY4ihDg+YwAxliyhS2cgnIwUJXU 54o73U90X22GWOSKOe6QNJ5QlX97wASwVRg4xgt2BAdmGM7ZLiEYGF5chnADYAxx g7RzjrxnFTCCNY4nTywTJEPkRsIzhjycA5G052hu2Ce1ewX835iaKwv7SK0hEjSe fKYTJBaxKkkq4dQCdvO5Iom+bcD5hOPmJqvdSW1pZT2zJBKlvdRxLMkS7mUNdDqM kjGwdTwijJwKtXkcM104YwNhdzZVsFgMlfu8sSTgnAOeSOcMgaN/mSPO5gAnl/O3 BOQBleMYwWByw9yE6K6yHy9Sk1xbRxo0LfLnBBU1OustprR3tl9nS5jZWQ+Xhj0B BYDI6eo4Jq9ELWKGWW8MkSRuiER26uSXVmGQ8iY4U+vIwe2U/wBFW5kgcxl1MihV XJJUnqDgqDg9ckdxjBO+FtQqc8Xfyadmuzt0IqQU1ZnVaf4vSXS2l/tlWv5leGWK 5UyFM7Nh8xRgjKE53dG6fKM4Wp+MribRlhF/GUMI89kIBlYyN1GNxwNoPQZAPTBM LWEcUFtOVgIn8woqnLKEYLlhjjJzjGenvUJtYJNzeVGXJGW2DJ+prvjyuNS/Xbay 3XVX06a9Pmcn1GndNLb+vx6nMyal5kTCJzlsL93qM/4UaTa6lcnFrFEV7s7gAfrW 1qTRW2mXKIqgsmBgdM1g6c8oX5ZpEHorYry5UIwlyvU7k5J3RrTaXrOQT9k/4A54 oqqoJJLvK3+8+TRVeyh2/H/gF89R7sbezhru1YAlAGAJ71Lc3THR5440UJvGWJ57 VVklkms4p5RsHmFYkA4PHJ9+1NP/ACDLrLZIYd+nSsqLag4+oqfwtDLXUzGPLl6Y xmtA6vbiIIHJJ9BWK0IcSMv8KA/Xmq205pxrSS0J52tDoYdRt9w+bAqympqqlopQ shB2kjcBkEdD9a5eOGSV9qKSevFWotLup5jFHCzSbC+0HnApuu7WY+ZvodGNbCWd vA0riSNiTMszbsEplenT92uBng5OecBja7aR3QlPmSsYZI3MkpbLtG0YbJHYMpA/ 2cZ71ipoGoPGZDAVQckk9BTBpRwC0mPXgf40k3bRDUZPZGsmu2iS7m+0FCxLiGfy iwIAYE7W7DjjjnrniQ+ILdbKcRIABdQPGC+XUKs3+zhhhgCeOcYBzxjz2EUcDNGS SvUkiq8tvAoTy5Gd2QMV2ng+lJ1JJ+opXW5qf26hMrkNukJOCM9v/rU8eIrdDdLH aN5cqKsQZwTEQ6NuBwMkhGGOMb+pxznLo9xKlmYQsj3KM4UMPlAYr83p0yM1uaf4 A1W+/ihXvhcu35Cs54mMfikVGNSS0RWfxMosbeCG3khmi2N9oSbksrTtuxj/AKbK Ov8Ayz754dF4lgt5X8iC7ht2Z8QQ3hRAjbsqQVOfvEfTjr81X5Ph/JASJNQXcOoE QH82FZN14aNp9+5X6ZH8wTWccTTl8LB0ai3ROviOBoYVKTiRN+9mcFWycjaAoK98 5Jz7dKcPEUIU4Vsn2qna+HjeXKwwyqDhnYlgdqqMk1Xl0WaPlCHHsP8APrXRHFNe 6mLknbYXUdV+1w+WgPzHLE/pVWJrhG8uI84zjAqd9N8icpIcEEDH4Zpl3E3nsyng gdDjtTm5PV7i82SW00/mnzX/AIf60VXtYyCzFlHbrRQm7CQPNJJJGHckKTgHtV1+ NFlx/FIufeiilDZlrZlBSVhZgSCcA80xSWlXPNFFZmRq6R/x8ze0ea1rCeW21Fpo XKSLGcMO3zCiis1/EXyN4dClcXE1wWaaV3JJPzNVIMSQCTiiiu2T1NZbkMxJjcZ7 GtFYkW1s2C/M1oCT6nJFFFclZ6oxludHooC6dZhQBlDnH416leQxweF7dYlCBrfc 23jccZyfWiivLmk6yT7nRVbVJW/rQ8Qvb+6fVW3TscKOv0rGvNQu52KyzsyjoOlF FesklscKZSSWRJMo7KcgcHHFdnbsX+yFvRz09hRRWdT4om1H4ZGVqTtJr10XOduA OOgC4qq6hmfIz1oorrluyY/CRqin+EUUUVAH/9k= ------------6BskB7ERS2JodRB3Bcko3B Content-Disposition: inline; filename=pm5.gif Content-Type: image/gif; name=pm5.gif Content-Location: http://www.discogs.com/images/pm5.gif Content-Transfer-Encoding: Base64 R0lGODlhLwAMALMAAAAAAGBgYAD/AP8AAP//AP///wAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACwAAAAALwAMAEAEYTDISau9OIcShP9eB37iKAREqqbB4L5u AJQjDdrkurbwK+MhU1CI0rF6vpnwtASejEfk4KepWq1KYrMJJfCQv62W2P32qNe0 WpI1Od9l6bRdE7vjUlkBwO/7/4CBgoMAEQAAOw== ------------6BskB7ERS2JodRB3Bcko3B--